From 70fac16da1bf4b3ef93c1a74388b660c9c7f84cc Mon Sep 17 00:00:00 2001 From: Marcin Wilk Date: Fri, 10 Jun 2022 14:50:28 +0200 Subject: [PATCH 001/105] Add missing Polish translations. --- translate/translate.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translate/translate.json b/translate/translate.json index b5eaea62..76791cf4 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -9982,6 +9982,7 @@ }, { "en": "Ask Admin PowerShell", + "pl": "PowerShell z Zapytaniem Administratora", "ru": "PowerShell от Админа, cпросить согласия", "xloc": [ "default.handlebars->termShellContextMenu->11" @@ -9989,6 +9990,7 @@ }, { "en": "Ask Admin Shell", + "pl": "Terminal z Zapytaniem Administratora", "ru": "Консоль от Админа, cпросить согласия", "xloc": [ "default.handlebars->termShellContextMenu->9" @@ -10047,6 +10049,7 @@ }, { "en": "Ask User PowerShell", + "pl": "PowerShell z Zapytaniem Użytkownika", "ru": "PowerShell от Пользователя, cпросить согласия", "xloc": [ "default.handlebars->termShellContextMenu->15" @@ -10054,6 +10057,7 @@ }, { "en": "Ask User Shell", + "pl": "Terminal z Zapytaniem Użytkownika", "ru": "Консоль от Пользователя, cпросить согласия", "xloc": [ "default.handlebars->termShellContextMenu->13" @@ -17141,7 +17145,7 @@ "ja": "一つ作る", "ko": "한 가지 만들기", "nl": "Creëer er een", - "pl": "Utwórz nowy", + "pl": "Utwórz nowe", "pt": "Crie um", "pt-br": "Crie um", "ru": "Создать", @@ -30051,6 +30055,7 @@ { "en": "Hybrid required by server", "nl": "Hybride vereist door de server", + "pl": "Tryb Hybrydowy wymagany przez serwer", "ru": "Cервер требует гибридный режим", "xloc": [ "default.handlebars->41->1209" @@ -31035,6 +31040,7 @@ { "en": "Inconsistent flags", "nl": "Inconsistente vlaggen", + "pl": "Niespójne argumenty", "ru": "Несоответствие флагов", "xloc": [ "default.handlebars->41->1208" @@ -41319,6 +41325,7 @@ { "en": "NLA not supported", "nl": "NLA niet ondersteund", + "pl": "NLA nie obsługiwane", "ru": "NLA не поддерживается", "xloc": [ "default.handlebars->41->1204" @@ -48700,6 +48707,7 @@ { "en": "Protocol negotiation failed ({0})", "nl": "Protocolonderhandeling mislukt ({0})", + "pl": "Niepowodzenie negocjacji protokołu ({0})", "ru": "Ошибка согласования протокола ({0})", "xloc": [ "default.handlebars->41->1203" @@ -54268,6 +54276,7 @@ { "en": "SSL certificate not on server", "nl": "SSL certificaat niet op de server", + "pl": "Certyfikat SSL nie znajduje się na serwerze", "ru": "SSL-сертификат не на сервере", "xloc": [ "default.handlebars->41->1207" @@ -54276,6 +54285,7 @@ { "en": "SSL not allowed by server", "nl": "SSL certificaat niet toegestaan door de server", + "pl": "Certyfikat SSL niedozwolony na serwerze", "ru": "SSL не разрешен сервером", "xloc": [ "default.handlebars->41->1206" @@ -54284,6 +54294,7 @@ { "en": "SSL required by server", "nl": "SSL vereist door server", + "pl": "Certyfikat SSL wymagany przez serwer", "ru": "SSL требуется сервером", "xloc": [ "default.handlebars->41->1205" @@ -54292,6 +54303,7 @@ { "en": "SSL with user auth required by server", "nl": "SSL met gebruikersverificatie vereist door de server", + "pl": "Certyfikat SSL z autoryzacją użytkownika wymagane przez serwer", "ru": "SSL с аутентификацией пользователя, требуется сервером", "xloc": [ "default.handlebars->41->1210" From de9ee3c3a4cfa8fdce55e006507db9e70992899e Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Sat, 11 Jun 2022 13:29:46 +0100 Subject: [PATCH 002/105] Create bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..f4919630 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,37 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Server Software (please complete the following information):** + - OS: [e.g. iOS] + - Version: [e.g. 22] + - Browser: [e.g. Google Chrome] + +**Remote Device (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Current Core Version (if known): [**HINT**: Go into `console` Tab then type `info`] + +**Additional context** +Add any other context about the problem here. From 67d5b0568478359e04bf7b146bd2a22711a94000 Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Sat, 11 Jun 2022 13:33:47 +0100 Subject: [PATCH 003/105] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index f4919630..eeb8b0b9 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -25,13 +25,15 @@ If applicable, add screenshots to help explain your problem. **Server Software (please complete the following information):** - OS: [e.g. iOS] - - Version: [e.g. 22] + - Version: [e.g. 1.0.36] + - Node: [e.g. 18.3.0] - Browser: [e.g. Google Chrome] **Remote Device (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Current Core Version (if known): [**HINT**: Go into `console` Tab then type `info`] + - Device: [e.g. Laptop] + - OS: [e.g. Windows 10] + - Version: [e.g. 21H2] + - Current Core Version (if known): [**HINT**: Go to a device then `console` Tab then type `info`] **Additional context** Add any other context about the problem here. From b773cb3749b34aa84a3df9f0bfb3c12c723cc974 Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Sat, 11 Jun 2022 13:34:39 +0100 Subject: [PATCH 004/105] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index eeb8b0b9..06c1b38c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -24,7 +24,8 @@ A clear and concise description of what you expected to happen. If applicable, add screenshots to help explain your problem. **Server Software (please complete the following information):** - - OS: [e.g. iOS] + - OS: [e.g. Ubuntu] + - Virtualization: [e.g. Docker] - Version: [e.g. 1.0.36] - Node: [e.g. 18.3.0] - Browser: [e.g. Google Chrome] From 91bfc5094d094e4bfdc469f1a28fc9565ba3ebd8 Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Sun, 12 Jun 2022 10:23:09 +0100 Subject: [PATCH 005/105] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 06c1b38c..93f329fe 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -26,6 +26,7 @@ If applicable, add screenshots to help explain your problem. **Server Software (please complete the following information):** - OS: [e.g. Ubuntu] - Virtualization: [e.g. Docker] + - Network: [e.g. LAN/WAN, reverse proxy, cloudflare, ssl offload, etc...] - Version: [e.g. 1.0.36] - Node: [e.g. 18.3.0] - Browser: [e.g. Google Chrome] From 86a6113f2df5203f0887821bf4bd94aea3f5a991 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Sun, 12 Jun 2022 14:22:17 -0400 Subject: [PATCH 006/105] docs - adding videos --- docs/docs/install/index.md | 6 ++++++ docs/docs/meshcmd/index.md | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/docs/docs/install/index.md b/docs/docs/install/index.md index 34a428bf..f278b4b9 100644 --- a/docs/docs/install/index.md +++ b/docs/docs/install/index.md @@ -24,3 +24,9 @@ You can run the MeshCentral Server with --help to get options for background ins Once you get MeshCentral installed, the first user account that is created will be the server administrator. So, don't delay and navigate to the login page and create a new account. You can then start using your server right away. A lot of the fun with MeshCentral is the 100's of configuration options that are available in the config.json file. You can put your own branding on the web pages, setup a SMTP email server, SMS services and much more. You can look [here for simple config.json](https://raw.githubusercontent.com/Ylianst/MeshCentral/master/sample-config.json), [here for a more advanced configuration](https://raw.githubusercontent.com/Ylianst/MeshCentral/master/sample-config-advanced.json) and [here for all possible configuration options](https://raw.githubusercontent.com/Ylianst/MeshCentral/master/meshcentral-config-schema.json). You can also take a look at the [MeshCentral User's Guide](https://meshcentral.com/info/docs/MeshCentral2InstallGuide.pdf) and [tutorial videos](https://meshcentral.com/info/tutorials.html) for additional help. + +## Video Walkthru + +
+ +
\ No newline at end of file diff --git a/docs/docs/meshcmd/index.md b/docs/docs/meshcmd/index.md index 1032d51b..38528f91 100644 --- a/docs/docs/meshcmd/index.md +++ b/docs/docs/meshcmd/index.md @@ -416,6 +416,12 @@ In this example, the CIRA setup script was run on a remote computer. After the s ## IDE Redirection +## Video Walkthru + +
+ +
+ MeshCmd has all the code needed to perform Intel AMT IDE Redirection from the command line. This allows disk images on the administrator’s computer to be remotely mounted to an Intel AMT computer. You need to start with a floppy disk .img file and/or an .iso CDROM file. ![](images/2022-05-15-15-42-01.png) From c9fa98629c8ff39d718007678c40eefdb7513cd5 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Sun, 12 Jun 2022 14:33:03 -0400 Subject: [PATCH 007/105] docs - RDP connection notes and credentials --- docs/docs/meshcentral/index.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/docs/meshcentral/index.md b/docs/docs/meshcentral/index.md index e975f8dc..9c982566 100644 --- a/docs/docs/meshcentral/index.md +++ b/docs/docs/meshcentral/index.md @@ -111,6 +111,16 @@ Click on any computer and go into the “Desktop” and “Files” tabs to remo For advance users with console/command line interface experience, go into “Terminal” to perform scripting or quick tasks with CLI tools. +### Desktop Control + +
+ +
+ +Depending on how the agent is connected to the server, there are multiple methods to remote control. Mesh Agent, RDP, and AMT + +For RDP connections, if you have previously saved the credentials that is usable by all users on the system. If you want to remove those saved credentials that's under the `General Tab` > `Credentials`. Click pen to clear them. + ## Server Certificate As seen in the previous chapter, MeshCentral is setup with a self-signed certificate by default and the web browser will issue a warning concerning the validity of the certificate. @@ -517,8 +527,6 @@ If you successfully setup a Let’s Encrypt certificate using the Let’s Encryp If Let’s Encrypt works for you, please consider donating to them as they provide a critical service to the Internet community. - - ## Server IP filtering For improved security, it’s good to limit access to MeshCentral with IP address. For example, we want to allow mesh agents and Intel AMT computers to connect from anywhere, but whitelist IP address for users that we allow to access MeshCentral. From 03285e8985e83df6443542450873a4acd8b12414 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 14 Jun 2022 00:09:30 -0700 Subject: [PATCH 008/105] Initial work on timestamping in authenticode.js --- authenticode.js | 99 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 91 insertions(+), 8 deletions(-) diff --git a/authenticode.js b/authenticode.js index faa5a016..e204ef76 100644 --- a/authenticode.js +++ b/authenticode.js @@ -343,6 +343,9 @@ function createAuthenticodeHandler(path) { // Set the certificate chain obj.certificates = pkcs7.certificates; + // Set the signature + obj.signature = Buffer.from(pkcs7.rawCapture.signature, 'binary'); + // Get the file hashing algorithm var hashAlgoOid = forge.asn1.derToOid(pkcs7content.value[1].value[0].value[0].value); switch (hashAlgoOid) { @@ -362,6 +365,60 @@ function createAuthenticodeHandler(path) { return true; } + // Make a timestamp signature request + obj.timeStampRequest = function (url, func) { + // Create the timestamp request in DER format + const asn1 = forge.asn1; + const pkcs7dataOid = asn1.oidToDer('1.2.840.113549.1.7.1').data; + const microsoftCodeSigningOid = asn1.oidToDer('1.3.6.1.4.1.311.3.2.1').data; + const asn1obj = + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, microsoftCodeSigningOid), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, pkcs7dataOid), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, obj.signature.toString('binary')) // Signature here + ]) + ]) + ]); + + // Serialize an ASN.1 object to DER format in Base64 + const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); + + // Make an HTTP request + const http = require('http'); + var options = { + method: 'POST', + headers: { + 'accept': 'application/octet-stream', + 'cache-control': 'no-cache', + 'user-agent': 'Transport', + 'content-type': 'application/octet-stream', + 'content-length': Buffer.byteLength(requestBody) + } + }; + + console.log('options', options); + console.log('requestBody', requestBody); + + // Debug + const sampleResponse = "MIISaQYJKoZIhvcNAQcCoIISWjCCElYCAQExDzANBglghkgBZQMEAgIFADCCARMGCSqGSIb3DQEHAaCCAQQEggEAW+hnfyI5vrpssMAETu5SqQf7ffsaAOrqvAYZd4DSrOYglgL8LCuqYqHsaULSyqQ6XkZ0yHBFiNFeb8i+4g6iccaQdXUKRLxVCmXTqEuU5Bp6qrNplG7AHIkGZbh3k38tQgR/gPppSAqwG7igTDI93gsQ6Et9RGQGkY3Lfl5lmKwEf0pJm0YPEGy2VQMqCxzguKT3bUoltC/UACmDTiat6oRUI+flpWjrETSveru/pi98ApyBqeB6iY7PQsEnWldkezj3hggjE1t1IEiN2/zqcXZ5av05qd/CDCg10GJjCYItGUXZTLY5FTSd5K83vz0tbT/1LDG1r5GbiLuVF083e6CCDeowggb2MIIE3qADAgECAhEAkDl/mtJKOhPyvZFfCDipQzANBgkqhkiG9w0BAQwFADB9MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJTAjBgNVBAMTHFNlY3RpZ28gUlNBIFRpbWUgU3RhbXBpbmcgQ0EwHhcNMjIwNTExMDAwMDAwWhcNMzMwODEwMjM1OTU5WjBqMQswCQYDVQQGEwJHQjETMBEGA1UECBMKTWFuY2hlc3RlcjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSwwKgYDVQQDDCNTZWN0aWdvIFJTQSBUaW1lIFN0YW1waW5nIFNpZ25lciAjMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJCycT954dS5ihfMw5fCkJRy7Vo6bwFDf3NaKJ8kfKA1QAb6lK8KoYO2E+RLFQZeaoogNHF7uyWtP1sKpB8vbH0uYVHQjFk3PqZd8R5dgLbYH2DjzRJqiB/G/hjLk0NWesfOA9YAZChWIrFLGdLwlslEHzldnLCW7VpJjX5y5ENrf8mgP2xKrdUAT70KuIPFvZgsB3YBcEXew/BCaer/JswDRB8WKOFqdLacRfq2Os6U0R+9jGWq/fzDPOgNnDhm1fx9HptZjJFaQldVUBYNS3Ry7qAqMfwmAjT5ZBtZ/eM61Oi4QSl0AT8N4BN3KxE8+z3N0Ofhl1tV9yoDbdXNYtrOnB786nB95n1LaM5aKWHToFwls6UnaKNY/fUta8pfZMdrKAzarHhB3pLvD8Xsq98tbxpUUWwzs41ZYOff6Bcio3lBYs/8e/OS2q7gPE8PWsxu3x+8Iq+3OBCaNKcL//4dXqTz7hY4Kz+sdpRBnWQd+oD9AOH++DrUw167aU1ymeXxMi1R+mGtTeomjm38qUiYPvJGDWmxt270BdtBBcYYwFDk+K3+rGNhR5G8RrVGU2zF9OGGJ5OEOWx14B0MelmLLsv0ZCxCR/RUWIU35cdpp9Ili5a/xq3gvbE39x/fQnuq6xzp6z1a3fjSkNVJmjodgxpXfxwBws4cfcz7lhXFAgMBAAGjggGCMIIBfjAfBgNVHSMEGDAWgBQaofhhGSAPw0F3RSiO0TVfBhIEVTAdBgNVHQ4EFgQUJS5oPGuaKyQUqR+i3yY6zxSm8eAwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwSgYDVR0gBEMwQTA1BgwrBgEEAbIxAQIBAwgwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQQCMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQVRpbWVTdGFtcGluZ0NBLmNybDB0BggrBgEFBQcBAQRoMGYwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JTQVRpbWVTdGFtcGluZ0NBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQADggIBAHPa7Whyy8K5QKExu7QDoy0UeyTntFsVfajp/a3Rkg18PTagadnzmjDarGnWdFckP34PPNn1w3klbCbojWiTzvF3iTl/qAQF2jTDFOqfCFSr/8R+lmwr05TrtGzgRU0ssvc7O1q1wfvXiXVtmHJy9vcHKPPTstDrGb4VLHjvzUWgAOT4BHa7V8WQvndUkHSeC09NxKoTj5evATUry5sReOny+YkEPE7jghJi67REDHVBwg80uIidyCLxE2rbGC9ueK3EBbTohAiTB/l9g/5omDTkd+WxzoyUbNsDbSgFR36bLvBk+9ukAzEQfBr7PBmA0QtwuVVfR745ZM632iNUMuNGsjLY0imGyRVdgJWvAvu00S6dOHw14A8c7RtHSJwialWC2fK6CGUD5fEp80iKCQFMpnnyorYamZTrlyjhvn0boXztVoCm9CIzkOSEU/wq+sCnl6jqtY16zuTgS6Ezqwt2oNVpFreOZr9f+h/EqH+noUgUkQ2C/L1Nme3J5mw2/ndDmbhpLXxhL+2jsEn+W75pJJH/k/xXaZJL2QU/bYZy06LQwGTSOkLBGgP70O2aIbg/r6ayUVTVTMXKHxKNV8Y57Vz/7J8mdq1kZmfoqjDg0q23fbFqQSduA4qjdOCKCYJuv+P2t7yeCykYaIGhnD9uFllLFAkJmuauv2AV3Yb1MIIG7DCCBNSgAwIBAgIQMA9vrN1mmHR8qUY2p3gtuTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTkwNTAyMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjB9MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJTAjBgNVBAMTHFNlY3RpZ28gUlNBIFRpbWUgU3RhbXBpbmcgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDIGwGv2Sx+iJl9AZg/IJC9nIAhVJO5z6A+U++zWsB21hoEpc5Hg7XrxMxJNMvzRWW5+adkFiYJ+9UyUnkuyWPCE5u2hj8BBZJmbyGr1XEQeYf0RirNxFrJ29ddSU1yVg/cyeNTmDoqHvzOWEnTv/M5u7mkI0Ks0BXDf56iXNc48RaycNOjxN+zxXKsLgp3/A2UUrf8H5VzJD0BKLwPDU+zkQGObp0ndVXRFzs0IXuXAZSvf4DP0REKV4TJf1bgvUacgr6Unb+0ILBgfrhN9Q0/29DqhYyKVnHRLZRMyIw80xSinL0m/9NTIMdgaZtYClT0Bef9Maz5yIUXx7gpGaQpL0bj3duRX58/Nj4OMGcrRrc1r5a+2kxgzKi7nw0U1BjEMJh0giHPYla1IXMSHv2qyghYh3ekFesZVf/QOVQtJu5FGjpvzdeE8NfwKMVPZIMC1Pvi3vG8Aij0bdonigbSlofe6GsO8Ft96XZpkyAcSpcsdxkrk5WYnJee647BeFbGRCXfBhKaBi2fA179g6JTZ8qx+o2hZMmIklnLqEbAyfKm/31X2xJ2+opBJNQb/HKlFKLUrUMcpEmLQTkUAx4p+hulIq6lw02C0I3aa7fb9xhAV3PwcaP7Sn1FNsH3jYL6uckNU4B9+rY5WDLvbxhQiddPnTO9GrWdod6VQXqngwIDAQABo4IBWjCCAVYwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFBqh+GEZIA/DQXdFKI7RNV8GEgRVMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYIKwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggIBAG1UgaUzXRbhtVOBkXXfA3oyCy0lhBGysNsqfSoF9bw7J/RaoLlJWZApbGHLtVDb4n35nwDvQMOt0+LkVvlYQc/xQuUQff+wdB+PxlwJ+TNe6qAcJlhc87QRD9XVw+K81Vh4v0h24URnbY+wQxAPjeT5OGK/EwHFhaNMxcyyUzCVpNb0llYIuM1cfwGWvnJSajtCN3wWeDmTk5SbsdyybUFtZ83Jb5A9f0VywRsj1sJVhGbks8VmBvbz1kteraMrQoohkv6ob1olcGKBc2NeoLvY3NdK0z2vgwY4Eh0khy3k/ALWPncEvAQ2ted3y5wujSMYuaPCRx3wXdahc1cFaJqnyTdlHb7qvNhCg0MFpYumCf/RoZSmTqo9CfUFbLfSZFrYKiLCS53xOV5M3kg9mzSWmglfjv33sVKRzj+J9hyhtal1H3G/W0NdZT1QgW6r8NDT/LKzH7aZlib0PHmLXGTMze4nmuWgwAxyh8FuTVrTHurwROYybxzrF06Uw3hlIDsPQaof6aFBnf6xuKBlKjTg3qj5PObBMLvAoGMs/FwWAKjQxH/qEZ0eBsambTJdtDgJK0kHqv3sMNrxpy/Pt/360KOE2See+wFmd7lWEOEgbsausfm2usg1XTN2jvF8IAwqd661ogKGuinutFoAsYyr4/kKyVRd1LlqdJ69SK6YMYIDOTCCAzUCAQEwgZIwfTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSUwIwYDVQQDExxTZWN0aWdvIFJTQSBUaW1lIFN0YW1waW5nIENBAhEAkDl/mtJKOhPyvZFfCDipQzANBglghkgBZQMEAgIFAKB5MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIyMDYxNDA2NDU1OFowPwYJKoZIhvcNAQkEMTIEMDlBb0qfU2uirLzZZOhbip49Q64GiXpSMJdRBr0OTBV4v5BSGjJdGtfnttbl6Z5z0DANBgkqhkiG9w0BAQEFAASCAgBx4YvoNjhJNFZXCe44T8ohEeJvgjh1I9IORqn7T4jgWggfPMdQmDc96d6r6rNNnzl+sD2qawEpJCE7Fdvx5+XT+CV5TW2P259R1q7rHULelFciZ+w7WniqjrY4vbtUqahvInh++Papa8yYKzes9gpwqDDBKJZGhRbGTtGvI+h63gpFz16pHQGTiVm/Vq0OTh3NGVpbFLlhiIzyUxkjhlGwu2Ksg7TDTTqTx4cyEWvCWbeJ28EhAKSW9G0oCMlHqSNH5O3pADEw8emBVpIqRjF0DSkTMKOD7xe6EOzcmzWqC8E2hnFlXTaejS3kQxiYxSuFR0VbUmPIXKzTh4RAP8cVxWuBBkSGpqe8k8iRPlq29PllSenbA2yMrbGpINalLyjoVCkcF1FXBCv0p7ggzQsaJE8mHO0fKNF35LjjNI/xvy0JirUruJAkiXvBIOK3llZqf59D12xztnUXNfrfLwFQTWPR3rFC5bRnemxsKKmbLRGiI9oirn3UGbmoVyOnWMD5zj3cmLKPBteKyEpsEK2tVHGagtUR4jR1MEb7LeB/o4hyhhK7epseKlr4KboJ3HQ5ixM5/6vxQy/Vr6q33jmnj3fyRa9QNwYEYvY+9iTbDWKp2bfGzZ7Uy1RpyRoAYg7FwX2H9U2btKzZ3JrrkMda6O/+xqBn1Jn+d1ohkoVh0g=="; + func(null, sampleResponse); + return; + + // Set up the request + var responseAccumulator = ''; + var req = http.request(url, options, function (res) { + res.setEncoding('utf8'); + res.on('data', function (chunk) { responseAccumulator += chunk; }); + res.on('end', function () { func(null, Buffer.from(responseAccumulator, 'base64').toString('base64')); }); + }); + + // Post the data + req.write(requestBody); + req.end(); + } + // Read a resource table. // ptr: The pointer to the start of the resource section // offset: The offset start of the resource table to read @@ -568,6 +625,15 @@ function createAuthenticodeHandler(path) { 'configurationFiles': 24 } + // Return the raw signature block buffer with padding removed + obj.getRawSignatureBlock = function () { + if ((obj.header.sigpos == 0) || (obj.header.siglen == 0)) return null; + var pkcs7raw = readFileSlice(obj.header.sigpos + 8, obj.header.siglen - 8); + var derlen = forge.asn1.getBerValueLength(forge.util.createBuffer(pkcs7raw.slice(1, 5))) + 4; + if (derlen != pkcs7raw.length) { pkcs7raw = pkcs7raw.slice(0, derlen); } + return pkcs7raw; + } + // Get icon information from resource obj.getIconInfo = function () { const r = {}, ptr = obj.header.sections['.rsrc'].rawAddr; @@ -1393,9 +1459,9 @@ function start() { } // Check that a valid command is passed in - if (['info', 'sign', 'unsign', 'createcert', 'icons', 'saveicon', 'header', 'test'].indexOf(process.argv[2].toLowerCase()) == -1) { + if (['info', 'sign', 'unsign', 'createcert', 'icons', 'saveicon', 'header', 'timestamp', 'signblock'].indexOf(process.argv[2].toLowerCase()) == -1) { console.log("Invalid command: " + process.argv[2]); - console.log("Valid commands are: info, sign, unsign, createcert"); + console.log("Valid commands are: info, sign, unsign, createcert, timestamp"); return; } @@ -1410,13 +1476,16 @@ function start() { } // Parse the resources and make any required changes - var resChanges = false, versionStrings = exe.getVersionInfo(); - var versionProperties = ['FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'OriginalFilename', 'ProductName', 'ProductVersion']; - for (var i in versionProperties) { - const prop = versionProperties[i], propl = prop.toLowerCase(); - if (args[propl] && (args[propl] != versionStrings[prop])) { versionStrings[prop] = args[propl]; resChanges = true; } + var resChanges = false, versionStrings = null; + if (exe != null) { + versionStrings = exe.getVersionInfo(); + var versionProperties = ['FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'OriginalFilename', 'ProductName', 'ProductVersion']; + for (var i in versionProperties) { + const prop = versionProperties[i], propl = prop.toLowerCase(); + if (args[propl] && (args[propl] != versionStrings[prop])) { versionStrings[prop] = args[propl]; resChanges = true; } + } + if (resChanges == true) { exe.setVersionInfo(versionStrings); } } - if (resChanges == true) { exe.setVersionInfo(versionStrings); } // Execute the command var command = process.argv[2].toLowerCase(); @@ -1511,6 +1580,7 @@ function start() { } } if (command == 'saveicon') { // Save an icon to file + if (exe == null) { console.log("Missing --exe [filename]"); return; } if (typeof args.out != 'string') { console.log("Missing --out [filename]"); return; } if (typeof args.icon != 'number') { console.log("Missing or incorrect --icon [number]"); return; } const iconInfo = exe.getIconInfo(); @@ -1534,6 +1604,18 @@ function start() { fs.writeFileSync(args.out, Buffer.concat([buf, icon.icon])); console.log("Done."); } + if (command == 'signblock') { // Display the raw signature block of the executable in hex + if (exe == null) { console.log("Missing --exe [filename]"); return; } + var buf = exe.getRawSignatureBlock(); + if (buf == null) { console.log("Executable is not signed."); return } else { console.log(buf.toString('hex')); return } + } + if (command == 'timestamp') { + if (exe == null) { console.log("Missing --exe [filename]"); return; } + if (exe.signature == null) { console.log("Executable is not signed."); return; } + if (typeof args.url != 'string') { console.log("Missing --url [url]"); return; } + console.log("Requesting time signature..."); + exe.timeStampRequest(args.url, function (err, response) { console.log("Done: RSP: " + response); }) + } // Close the file if (exe != null) { exe.close(); } @@ -1545,3 +1627,4 @@ if (require.main === module) { start(); } // Exports module.exports.createAuthenticodeHandler = createAuthenticodeHandler; module.exports.loadCertificates = loadCertificates; + From 431c2e200bc10d467e968011ebc8d83886d4e27a Mon Sep 17 00:00:00 2001 From: JSuenram Date: Wed, 15 Jun 2022 12:34:12 +0200 Subject: [PATCH 009/105] Translation Bug Language German. --- translate/translate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translate/translate.json b/translate/translate.json index 76791cf4..9cb45952 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -17333,7 +17333,7 @@ { "cs": "Tvůrce", "da": "Oprettet af", - "de": "Schöpfer", + "de": "Ersteller", "en": "Creator", "es": "Creado por", "fi": "Luoja", From f4eec4ecaf6e1744cbbf9b96e2906cb59ef78883 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 17 Jun 2022 09:09:52 -0700 Subject: [PATCH 010/105] Improved French translation. --- package.json | 17 ++++++- translate/translate.json | 102 ++++++++++++++++++++++++++++++++++----- 2 files changed, 104 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 5753a7d6..a83e8219 100644 --- a/package.json +++ b/package.json @@ -37,21 +37,34 @@ "sample-config-advanced.json" ], "dependencies": { + "@yetzt/nedb": "^1.8.0", "archiver": "^5.3.1", "body-parser": "^1.19.0", "cbor": "~5.2.0", "compression": "^1.7.4", "cookie-session": "^1.4.0", + "esprima": "^4.0.1", "express": "^4.17.0", "express-handlebars": "^5.3.5", "express-ws": "^4.0.0", + "html-minifier": "^4.0.0", + "image-size": "^1.0.1", "ipcheck": "^0.1.0", + "jsdom": "^19.0.0", + "loadavg-windows": "^1.1.1", + "minify-js": "^0.0.4", "minimist": "^1.2.5", "multiparty": "^4.2.1", - "@yetzt/nedb": "^1.8.0", "node-forge": "^1.0.0", + "node-windows": "^0.1.4", + "nodemailer": "^6.7.5", + "otplib": "^10.2.3", + "pg": "^8.7.1", + "pgtools": "^0.3.2", + "web-push": "^3.5.0", "ws": "^5.2.3", - "yauzl": "^2.10.0" + "yauzl": "^2.10.0", + "yubikeyotp": "^0.2.0" }, "engines": { "node": ">=10.0.0" diff --git a/translate/translate.json b/translate/translate.json index 76791cf4..21c15b82 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -1107,6 +1107,7 @@ "nl": ", RDP", "pl": ", RDP", "ru": ", RDP", + "fr": ", RDP", "xloc": [ "default.handlebars->41->1229" ] @@ -1179,6 +1180,7 @@ "nl": ", Doorgestuurde apparaten", "pl": ", Urządzenia Przekierowane", "ru": ", Ретранслируемые устройства", + "fr": ", Appareils relayés", "xloc": [ "default.handlebars->41->331" ] @@ -1188,6 +1190,7 @@ "nl": ", SFTP", "pl": ", SFTP", "ru": ", SFTP", + "fr": ", SFTP", "xloc": [ "default-mobile.handlebars->11->468", "default.handlebars->41->1337" @@ -1198,6 +1201,7 @@ "nl": ", SSH", "pl": ", SSH", "ru": ", SSH", + "fr": ", SSH", "xloc": [ "default.handlebars->41->1305" ] @@ -3240,6 +3244,7 @@ "nl": "2FA is vergrendeld", "pl": "2FA jest zablokowane", "ru": "2FA заблокирована", + "fr": "2FA est bloqué", "xloc": [ "default-mobile.handlebars->11->60", "default.handlebars->41->194" @@ -3251,6 +3256,7 @@ "pl": "dwuetapowe", "pt-br": "2ª Etapa", "ru": "2-oй фактор", + "fr": "Second facteur", "xloc": [ "default.handlebars->41->2808" ] @@ -4166,6 +4172,7 @@ "pl": "7 dni", "pt-br": "7 dias", "ru": "7 дней", + "fr": "7 jours", "xloc": [ "default.handlebars->41->1758" ] @@ -8574,6 +8581,7 @@ "nl": "Alt Shell", "pl": "Alternatywna Powłoka", "ru": "Альтернативная оболочка", + "fr": "Shell alternatif", "xloc": [ "default.handlebars->41->1220" ] @@ -9062,6 +9070,7 @@ "nl": "Apple", "pl": "Apple", "ru": "Apple", + "fr": "Apple", "xloc": [ "default.handlebars->41->57" ] @@ -9982,16 +9991,18 @@ }, { "en": "Ask Admin PowerShell", - "pl": "PowerShell z Zapytaniem Administratora", + "pl": "PowerShell z Zapytaniem Administratora", "ru": "PowerShell от Админа, cпросить согласия", + "fr": "Demander PowerShell en mode administrateur", "xloc": [ "default.handlebars->termShellContextMenu->11" ] }, { "en": "Ask Admin Shell", - "pl": "Terminal z Zapytaniem Administratora", + "pl": "Terminal z Zapytaniem Administratora", "ru": "Консоль от Админа, cпросить согласия", + "fr": "Demander le shell en mode administrateur", "xloc": [ "default.handlebars->termShellContextMenu->9" ] @@ -10049,16 +10060,18 @@ }, { "en": "Ask User PowerShell", - "pl": "PowerShell z Zapytaniem Użytkownika", + "pl": "PowerShell z Zapytaniem Użytkownika", "ru": "PowerShell от Пользователя, cпросить согласия", + "fr": "Demander PowerShell en mode utilisateur ", "xloc": [ "default.handlebars->termShellContextMenu->15" ] }, { "en": "Ask User Shell", - "pl": "Terminal z Zapytaniem Użytkownika", + "pl": "Terminal z Zapytaniem Użytkownika", "ru": "Консоль от Пользователя, cпросить согласия", + "fr": "Demander le shell en mode utilisateur", "xloc": [ "default.handlebars->termShellContextMenu->13" ] @@ -11047,6 +11060,7 @@ "nl": "Backup codes zijn vergrendeld", "pl": "Kody zapasowe są zablokowane", "ru": "Резервные коды заблокированы", + "fr": "Les codes de récupérations sont verrouillés", "xloc": [ "default-mobile.handlebars->11->61", "default.handlebars->41->195" @@ -11488,6 +11502,7 @@ "nl": "Browser grootte", "pl": "Jak Okna Przeglądarki", "ru": "Размер браузера", + "fr": "Taille du navigateur", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->3->d7rdpsize->3" ] @@ -15639,6 +15654,7 @@ "nl": "Verbinding maken via MeshAgent extern bureaublad", "pl": "Połącz używając zdalnego pulpitu MeshAgent", "ru": "Подключиться к удаленному рабочему столу с помощью MeshAgent", + "fr": "Se connecter en utilisant le bureau à distance MeshAgent", "xloc": [ "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span" ] @@ -15648,6 +15664,7 @@ "nl": "Verbinding maken via RDP", "pl": "Połącz używając RDP", "ru": "Подключиться используя RDP", + "fr": "Se connecter par RDP", "xloc": [ "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1rspan" ] @@ -20946,6 +20963,7 @@ "nl": "Cursorinstellingen uitschakelen", "pl": "Wyłącz Ustawienia Kursora", "ru": "Отключить настройки курсора", + "fr": "Désactiver les paramètres du curseur", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->11" ] @@ -20955,6 +20973,7 @@ "nl": "Cursorschaduw uitschakelen", "pl": "Wyłącz Cień Kursora", "ru": "Отключить тень курсора", + "fr": "Désactiver l'ombre du curseur", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->9" ] @@ -20964,6 +20983,7 @@ "nl": "Volledig venster slepen uitschakelen", "pl": "Wyłącz Przeciąganie Okna z Podglądem", "ru": "Отключить содежимое окна при перетаскивании", + "fr": "Désactiver le déplacement de la fenêtre entière", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->3" ] @@ -20973,6 +20993,7 @@ "nl": "Menu animaties uitschakelen", "pl": "Wyłącz Animację Menu", "ru": "Отключить анимации меню", + "fr": "Désactiver les animations du menu", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->5" ] @@ -20982,6 +21003,7 @@ "nl": "Thema's uitschakelen", "pl": "Wyłącz Temat Wizualny", "ru": "Отключить тему", + "fr": "Désactiver le thême", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->7" ] @@ -20991,6 +21013,7 @@ "nl": "Achtergrond uitschakelen", "pl": "Wyłącz Tapetę Pulpitu", "ru": "Отключить обои", + "fr": "Désactiver le fond d'écran", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->1" ] @@ -21276,6 +21299,7 @@ "nl": "Scherm grootte", "pl": "Rozdzielczość Wyświetlacza", "ru": "Размер дисплея", + "fr": "Taille de l'affichage", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->3->1" ] @@ -23904,6 +23928,7 @@ "pl": "Domena email \\\"{0}\\\" jest niedozwolona. Tylko ({1}) jest dopuszczona", "pt-br": "O domínio de e-mail \\\"{0}\\\" não é permitido. Somente ({1}) são permitidos", "ru": "Домен почты \\\"{0}\\\" не разрешен. Разрешены только ({1})", + "fr": "Les courriels de \\\"{0}\\\" ne sont pas autorisés. Seulement ceux de ({1}) sont permis", "xloc": [ "default-mobile.handlebars->11->743", "default.handlebars->41->2891" @@ -24240,6 +24265,7 @@ "nl": "Bureaubladsamenstelling inschakelen", "pl": "Włącz Kompozycje Pulpitu", "ru": "Включить композицию рабочего стола", + "fr": "Activer la composition du bureau", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->15" ] @@ -24249,6 +24275,7 @@ "nl": "Lettertype vloeiend maken inschakelen", "pl": "Włącz Rozmycie Czcionek", "ru": "Включить сглаживание шрифтов", + "fr": "Activer le lissage des polices de caractères", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->13" ] @@ -25300,6 +25327,7 @@ "nl": "Foutmelding #{0}", "pl": "Błąd #{0}", "ru": "Ошибка #{0}", + "fr": "Erreur #{0}", "xloc": [ "default-mobile.handlebars->11->66", "default.handlebars->41->200" @@ -26024,6 +26052,7 @@ "pl": "Klucz FIDO", "pt-br": "Chave FIDO", "ru": "ключ FIDO", + "fr": "Clé FIDO", "xloc": [ "default.handlebars->41->2833" ] @@ -29403,6 +29432,7 @@ "nl": "Hardware OTP", "pl": "Sprzętowe OTP", "ru": "Аппаратный OTP", + "fr": "Clé OTP matérielle", "xloc": [ "default.handlebars->41->2835" ] @@ -30055,8 +30085,9 @@ { "en": "Hybrid required by server", "nl": "Hybride vereist door de server", - "pl": "Tryb Hybrydowy wymagany przez serwer", + "pl": "Tryb Hybrydowy wymagany przez serwer", "ru": "Cервер требует гибридный режим", + "fr": "Hybrid requis par le serveur", "xloc": [ "default.handlebars->41->1209" ] @@ -30208,6 +30239,7 @@ "nl": "IP-KVM / Power-apparaat doorgestuurd via agent", "pl": "IP-KVM / Urządzenie zasilające przekierowane przez agenta", "ru": "IP-KVM / Устройство питания, ретранслируемое через агента", + "fr": "Appareil IP-KVM / Power relayé par l'agent", "xloc": [ "default.handlebars->41->1796" ] @@ -30238,6 +30270,7 @@ "nl": "IP-KVM-apparaat doorgestuurd via agent", "pl": "Urządzenie IP-KVM przekierowane przzez agenta", "ru": "Устройство IP-KVM ретранслируемое через агента", + "fr": "Appareil IP-KAM relayé par l'agent", "xloc": [ "default-mobile.handlebars->11->626", "default.handlebars->41->1856" @@ -31040,8 +31073,9 @@ { "en": "Inconsistent flags", "nl": "Inconsistente vlaggen", - "pl": "Niespójne argumenty", + "pl": "Niespójne argumenty", "ru": "Несоответствие флагов", + "fr": "Indicateurs incohérents", "xloc": [ "default.handlebars->41->1208" ] @@ -33969,6 +34003,7 @@ "nl": "Is een relay voor \\\"{0}\\\".", "pl": "Jest bramką dla \\\"{0}\\\".", "ru": "Установлен ретранслятором для \\\"{0}\\\".", + "fr": "Est un relais de \\\"{0}\\\".", "xloc": [ "default.handlebars->41->2349" ] @@ -36970,6 +37005,7 @@ "nl": "Lokale netwerkverbinding via een relay-agent.", "pl": "Lokalne połączenie sieciowe za pośrednictwem przekierowania agenta.", "ru": "Подключение к локальной сети через агент ретрансляции.", + "fr": "Connexion au réseau local au travers d'un agent relais", "xloc": [ "default.handlebars->41->385" ] @@ -36979,6 +37015,7 @@ "nl": "Lokale netwerkverbinding.", "pl": "Lokalne połączenie sieciowe.", "ru": "Локальное сетевое подключение.", + "fr": "Connexion au réseau local.", "xloc": [ "default.handlebars->41->387" ] @@ -37593,6 +37630,7 @@ "pl": "Token Logowania", "pt-br": "Token de Login", "ru": "Токен входа", + "fr": "Jeton de connexion", "xloc": [ "default.handlebars->41->2839" ] @@ -37655,6 +37693,7 @@ "nl": "Inlogtoken in gebruik", "pl": "Używany token logowania", "ru": "Токен входа используется", + "fr": "Jeton de connexion utilisé", "xloc": [ "default-mobile.handlebars->11->62", "default.handlebars->41->196" @@ -41325,8 +41364,9 @@ { "en": "NLA not supported", "nl": "NLA niet ondersteund", - "pl": "NLA nie obsługiwane", + "pl": "NLA nie obsługiwane", "ru": "NLA не поддерживается", + "fr": "NLA non supporté", "xloc": [ "default.handlebars->41->1204" ] @@ -41386,6 +41426,7 @@ "nl": "NUM", "pl": "NUM", "ru": "NUM", + "fr": "NUM", "xloc": [ "default.handlebars->container->column_l->p11->7->p11numlock" ] @@ -42486,7 +42527,7 @@ "en": "No Keys Configured", "es": "No hay Claves Configuradas", "fi": "Ei avaimia määritetty", - "fr": "Aucun clé configurée", + "fr": "Aucune clé configurée", "hi": "कोई कुंजी कॉन्फ़िगर नहीं है", "it": "Nessuna chiave configurata", "ja": "キーが設定されていません", @@ -42938,6 +42979,7 @@ "nl": "Geen apparaten doorgestuurd via agent", "pl": "Brak przekierowanych urządzeń przez agenta", "ru": "Устройства без агента, ретранслируемые через агент", + "fr": "Aucun agent d'appareil relayé au travers de l'agent", "xloc": [ "default-mobile.handlebars->11->624", "default.handlebars->41->1794", @@ -43498,6 +43540,7 @@ "nl": "Niet langer een relay voor \\\"{0}\\\".", "pl": "Nie jest już bramką dla \\\"{0}\\\".", "ru": "Больше не является ретранслятором для \\\"{0}\\\".", + "fr": "Plus de relais pour \\\"{0}\\\".", "xloc": [ "default.handlebars->41->2348" ] @@ -43632,6 +43675,7 @@ "nl": "Geen relay apparaten beschikbaar.", "pl": "Brak urządzeń do przekierowań.", "ru": "Нет доступных устройств-релеев.", + "fr": "Pas d'appareil relais disponible.", "xloc": [ "default-mobile.handlebars->11->647", "default.handlebars->41->1988" @@ -44729,6 +44773,7 @@ "nl": "OTP 2FA niet toegestaan", "pl": "OTP 2FA niedozwolone", "ru": "Двухфакторная аутентификация одноразовым паролем не разрешена", + "fr": "OTP 2FA non autorisé", "xloc": [ "default-mobile.handlebars->11->63", "default.handlebars->41->197" @@ -44964,6 +45009,7 @@ "pl": "Hasło Jednorazowe", "pt-br": "One-Time Password (Senha de único acesso)", "ru": "Одноразовый пароль", + "fr": "Mot de passe à usage unique (OTP)", "xloc": [ "default.handlebars->41->2837" ] @@ -45468,6 +45514,7 @@ "nl": "Opties", "pl": "Opcje", "ru": "Опции", + "fr": "Options", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->1" ] @@ -48707,8 +48754,9 @@ { "en": "Protocol negotiation failed ({0})", "nl": "Protocolonderhandeling mislukt ({0})", - "pl": "Niepowodzenie negocjacji protokołu ({0})", + "pl": "Niepowodzenie negocjacji protokołu ({0})", "ru": "Ошибка согласования протокола ({0})", + "fr": "Échec de la négociation du protocol ({0})", "xloc": [ "default.handlebars->41->1203" ] @@ -48935,6 +48983,7 @@ "pl": "Powiadomianie Push", "pt-br": "Notificação de Push", "ru": "Push уведомление", + "fr": "Notifications", "xloc": [ "default.handlebars->41->2836" ] @@ -49170,6 +49219,7 @@ "nl": "RDP verbinden", "pl": "Połącz (protokół RDP)", "ru": "Подключиться по RDP", + "fr": "Connexion RDP", "xloc": [ "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1rspan" ] @@ -49204,6 +49254,7 @@ "nl": "RDP inloggegevens", "pl": "Poświadczenia RDP", "ru": "Учетные данные RDP", + "fr": "Informations d'identification RDP", "xloc": [ "default.handlebars->41->1222" ] @@ -50104,6 +50155,7 @@ "nl": "Doorstuur apparaat", "pl": "Bramka przekierowująca", "ru": "Устройство-ретранслятор", + "fr": "Appareil relais", "xloc": [ "default.handlebars->41->2356" ] @@ -50113,6 +50165,7 @@ "nl": "Relay voor", "pl": "Przekierowuje dla", "ru": "Ретранслятор для", + "fr": "Relais pour", "xloc": [ "default.handlebars->41->891" ] @@ -50145,6 +50198,7 @@ "pl": "Pamiętaj Urządzenie", "pt-br": "Lembrar dispositivo", "ru": "Запомнить устройство", + "fr": "Se souvenir de l'appareil", "xloc": [ "default.handlebars->41->2838" ] @@ -50182,6 +50236,7 @@ "nl": "Onthoud wachtwoord", "pl": "Zapamiętaj hasło", "ru": "Запомнить пароль", + "fr": "Se souvenir du mot de passe", "xloc": [ "default-mobile.handlebars->11->461", "default.handlebars->41->1321", @@ -50264,6 +50319,7 @@ "nl": "Onthoud gebruikeruser & sleutel", "pl": "Zapamiętaj użytkownika i klucz", "ru": "Запомнить пользователя и ключ", + "fr": "Se souvenir de l'utilisateur et de la clé", "xloc": [ "default-mobile.handlebars->11->460", "default.handlebars->41->1320", @@ -53824,6 +53880,7 @@ "nl": "SFTP verbinding", "pl": "Połącz z SFTP", "ru": "Подключиться по SFTP", + "fr": "Connexion SFTP", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3" @@ -53986,6 +54043,7 @@ "pl": "Wiadomość SMS", "pt-br": "Mensagem SMS", "ru": "SMS-сообщение", + "fr": "Message SMS", "xloc": [ "default.handlebars->41->2834" ] @@ -54113,6 +54171,7 @@ "nl": "SSH verbinding", "pl": "Połącz z SSH", "ru": "Подключиться по SSH", + "fr": "Connexion SSH", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2sspan", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2sspan" @@ -54242,6 +54301,7 @@ "nl": "SSH-gebruiker+sleutel", "pl": "SSH-Uużytkownik+Klucz", "ru": "SSH-Пользователь+Ключ", + "fr": "SSH-Utilisateur+Clé", "xloc": [ "default-mobile.handlebars->11->324", "default-mobile.handlebars->11->328", @@ -54254,6 +54314,7 @@ "nl": "SSH-gebruiker+sleutel+wachtwoord", "pl": "SSH-Uużytkownik+Klucz+Hasło", "ru": "SSH-Пользователь+Ключ+Пароль", + "fr": "SSH-Utlisateur+Clé+Mot de passe", "xloc": [ "default-mobile.handlebars->11->323", "default-mobile.handlebars->11->327", @@ -54266,6 +54327,7 @@ "nl": "SSH-gebruiker+wachtwoord", "pl": "SSH-Uużytkownik+Hasło", "ru": "SSH-Пользователь+Пароль", + "fr": "SSH - Utilisateur + Mot de passe", "xloc": [ "default-mobile.handlebars->11->322", "default-mobile.handlebars->11->326", @@ -54276,8 +54338,9 @@ { "en": "SSL certificate not on server", "nl": "SSL certificaat niet op de server", - "pl": "Certyfikat SSL nie znajduje się na serwerze", + "pl": "Certyfikat SSL nie znajduje się na serwerze", "ru": "SSL-сертификат не на сервере", + "fr": "Le certificat SSL n'est pas sur le serveur", "xloc": [ "default.handlebars->41->1207" ] @@ -54285,8 +54348,9 @@ { "en": "SSL not allowed by server", "nl": "SSL certificaat niet toegestaan door de server", - "pl": "Certyfikat SSL niedozwolony na serwerze", + "pl": "Certyfikat SSL niedozwolony na serwerze", "ru": "SSL не разрешен сервером", + "fr": "SSL n'est pas autorisé par le serveur", "xloc": [ "default.handlebars->41->1206" ] @@ -54294,8 +54358,9 @@ { "en": "SSL required by server", "nl": "SSL vereist door server", - "pl": "Certyfikat SSL wymagany przez serwer", + "pl": "Certyfikat SSL wymagany przez serwer", "ru": "SSL требуется сервером", + "fr": "SSL est requis par le serveur", "xloc": [ "default.handlebars->41->1205" ] @@ -54303,8 +54368,9 @@ { "en": "SSL with user auth required by server", "nl": "SSL met gebruikersverificatie vereist door de server", - "pl": "Certyfikat SSL z autoryzacją użytkownika wymagane przez serwer", + "pl": "Certyfikat SSL z autoryzacją użytkownika wymagane przez serwer", "ru": "SSL с аутентификацией пользователя, требуется сервером", + "fr": "SSL avec une authentification de l'utilisateur est requise par le serveur", "xloc": [ "default.handlebars->41->1210" ] @@ -54790,6 +54856,7 @@ "nl": "Scherm grootte", "pl": "Jak Całego Ekranu", "ru": "Размер экрана", + "fr": "Taille de l'écran", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->3->d7rdpsize->5" ] @@ -58430,6 +58497,7 @@ "nl": "Aanmelden met OpenID Connect", "pl": "Zaloguj używając OpenID Connect", "ru": "Войти с помощью OpenID Connect", + "fr": "Authentification avec OpenID", "xloc": [ "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-oidc", "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-oidc", @@ -58625,6 +58693,7 @@ "pl": "Pojedyncze Logowanie", "pt-br": "Single Sign-on (Login único)", "ru": "Единая точка входа", + "fr": "Authentification unique", "xloc": [ "default.handlebars->41->2841" ] @@ -60752,6 +60821,7 @@ "nl": "Opgeslagen sleutel", "pl": "Przechowywany Klucz", "ru": "Сохраненный ключ", + "fr": "Clé enregistrée", "xloc": [ "default-mobile.handlebars->11->448", "default.handlebars->41->1308", @@ -63615,6 +63685,7 @@ "nl": "geavanceerde opties inschakelen", "pl": "Przełącz ustawienia zaawansowane", "ru": "Переключить дополнительные параметры", + "fr": "Afficher les options avancées", "xloc": [ "default.handlebars->container->dialog->idx_dlgButtonBar->idx_dlgMoreButtons", "default.handlebars->container->dialog->idx_dlgButtonBar->idx_dlgMoreButtons" @@ -65105,6 +65176,7 @@ "nl": "Kan OTPLIB niet laden", "pl": "Nie mogę załadować OTPLIB", "ru": "Не удалось загрузить OTPLIB", + "fr": "Impossible de charger la librairie OTPLIB", "xloc": [ "default-mobile.handlebars->11->65", "default.handlebars->41->199" @@ -70469,6 +70541,7 @@ "nl": "Werkmap", "pl": "Folder Roboczy", "ru": "Рабочий каталог", + "fr": "Répertoire de travail\n", "xloc": [ "default.handlebars->41->1221" ] @@ -71684,6 +71757,7 @@ "nl": "browser", "pl": "przeglądarka", "ru": "browser", + "fr": "Navigateur", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->3->d7rdpsize" ] @@ -72519,6 +72593,7 @@ "nl": "id, naam, email, aangemaakt, laaste login, groeps, authfactors, siteadmin, useradmin, geblokkeerd", "pl": "id, nazwa, e-mail, tworzenie, ostatnie logowanie, grupy, opcje autentykacji, administrator, uużytkownik, blokada", "ru": "id, name, email, creation, lastlogin, groups, authfactors, siteadmin, useradmin, locked", + "fr": "id, nom, email, creation, derniereconnexion, groupes, authentification, siteadmin, useradmin, verrouillé", "xloc": [ "default.handlebars->41->2448" ] @@ -73321,6 +73396,7 @@ "nl": "scherm", "pl": "ekran", "ru": "screen", + "fr": "écran", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->3->d7rdpsize" ] From 1fbbc6caaaf95e09044a67335e0810a63dd6aec0 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 17 Jun 2022 09:22:10 -0700 Subject: [PATCH 011/105] Fixed agent locking url when AgentAliasDNS is used. --- meshcentral.js | 4 +++- package.json | 17 ++--------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/meshcentral.js b/meshcentral.js index 8043ff2e..7dff6013 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -2865,7 +2865,9 @@ function CreateMeshCentralServer(config, args) { serverSignedAgentsPath = obj.path.join(obj.datapath, 'signedagents' + suffix); signDesc = (domain.title ? domain.title : agentSignCertInfo.cert.subject.hash); var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified - signUrl = 'https://' + ((domain.dns != null) ? domain.dns : obj.certificates.CommonName); + var httpsHost = ((domain.dns != null) ? domain.dns : obj.certificates.CommonName); + if (obj.args.agentaliasdns != null) { httpsHost = obj.args.agentaliasdns; } + signUrl = 'https://' + httpsHost; if (httpsPort != 443) { signUrl += ':' + httpsPort; } var xdomain = (domain.dns == null) ? domain.id : ''; if (xdomain != '') xdomain += '/'; diff --git a/package.json b/package.json index a83e8219..5753a7d6 100644 --- a/package.json +++ b/package.json @@ -37,34 +37,21 @@ "sample-config-advanced.json" ], "dependencies": { - "@yetzt/nedb": "^1.8.0", "archiver": "^5.3.1", "body-parser": "^1.19.0", "cbor": "~5.2.0", "compression": "^1.7.4", "cookie-session": "^1.4.0", - "esprima": "^4.0.1", "express": "^4.17.0", "express-handlebars": "^5.3.5", "express-ws": "^4.0.0", - "html-minifier": "^4.0.0", - "image-size": "^1.0.1", "ipcheck": "^0.1.0", - "jsdom": "^19.0.0", - "loadavg-windows": "^1.1.1", - "minify-js": "^0.0.4", "minimist": "^1.2.5", "multiparty": "^4.2.1", + "@yetzt/nedb": "^1.8.0", "node-forge": "^1.0.0", - "node-windows": "^0.1.4", - "nodemailer": "^6.7.5", - "otplib": "^10.2.3", - "pg": "^8.7.1", - "pgtools": "^0.3.2", - "web-push": "^3.5.0", "ws": "^5.2.3", - "yauzl": "^2.10.0", - "yubikeyotp": "^0.2.0" + "yauzl": "^2.10.0" }, "engines": { "node": ">=10.0.0" From a9ba445919112e08b1f072c51f0a25ec8062becb Mon Sep 17 00:00:00 2001 From: silversword411 Date: Fri, 17 Jun 2022 16:00:20 -0400 Subject: [PATCH 012/105] docs - adding google drive instructions --- .../images/2022-06-17-15-56-14.png | Bin 0 -> 26891 bytes .../images/2022-06-17-15-56-55.png | Bin 0 -> 101853 bytes .../images/2022-06-17-15-57-03.png | Bin 0 -> 93333 bytes .../images/2022-06-17-15-57-15.png | Bin 0 -> 143569 bytes .../images/2022-06-17-15-57-30.png | Bin 0 -> 34709 bytes .../images/2022-06-17-15-57-52.png | Bin 0 -> 42518 bytes docs/docs/meshcentral/index.md | 32 ++++++++++++++++++ 7 files changed, 32 insertions(+) create mode 100644 docs/docs/meshcentral/images/2022-06-17-15-56-14.png create mode 100644 docs/docs/meshcentral/images/2022-06-17-15-56-55.png create mode 100644 docs/docs/meshcentral/images/2022-06-17-15-57-03.png create mode 100644 docs/docs/meshcentral/images/2022-06-17-15-57-15.png create mode 100644 docs/docs/meshcentral/images/2022-06-17-15-57-30.png create mode 100644 docs/docs/meshcentral/images/2022-06-17-15-57-52.png diff --git a/docs/docs/meshcentral/images/2022-06-17-15-56-14.png b/docs/docs/meshcentral/images/2022-06-17-15-56-14.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad780dc2a2f6690d233902cea9860b118090284 GIT binary patch literal 26891 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%0AIXw9`O*N6PG)=&~ zAUG^J1Gro$@NNBiI|hqhM^UA%y3Xps4?@m;$0MDLkDZK+)p9dCeO1wD0MT|^hj#t? zCt$y$zNyGnM7oI@F|*rF&S)eKGCsgKR#rQjid$|1gT zQd2O90HsIyCLGZn>Kht|94Z!yiH$7AiUaNBojL%kPIPyr@L|NkKwrVw%B<(o)Nf4lhs7wif27N%w`gdWJjO zupw{#kzgN=mmyOSe4UvVg@wla0Wu6VVp#Uu+@PsRF$~POuTyOB037$UPao@qKK@9kuHV6?X?c_^_@=BljDAT3BnT2umRSyIS`!xhr15cb zoOjA8BpKKnUu&|L!ovLT2;~?24LoQ4i;Ooi25PG5lrTcNor-iKpKj+6wM8FW-TbYk z0mpw6Q)c{`7SeG>#foT<5enqVxq*!uMVchB%`gO-%$VTQh7l7zuI=jtD-BPt$kbig zigEPbd4_CKhlx0R{{FDxVv=85*6ejMw(lX|yaQGUe$CP7$}=JV3lkT$IkaHSWkXKQ zHYi)fhj5b>NGr+#;30d)A)$tY!HNC)<)b`NA(mdQ&48p5-m_JuSCHRJ#_7>2+h z_e&i?6d#id`xd21wVyccy7k{+_u$m9cj@1E46nW@xN;qjsCya(m-*XYALh*}gD zeb%im;dWvYsi5wB03b$Xp?tOKC5`^2;exO2MUcWe?sGSN;9HEzA5N2l@VC4B}>pqk?kmjem(p_IDhO0{_UG5e-U=4-t`kk zCHUE9$TLWdK$a%gHH`5io6)r^Me_D3fv54b0`T0HOOEH|4Mqc!$vglC|LhSrj{~r}{CtwhL>Qxjuh!XdI`MRJE`?+1}oci;K&a0Wv~?s&*P)@rdIQ zyI^x*s6p0jIPvlEOHEbXfxs1MHh6+8=vceb=i9)PkgG(@j-T6ga6elY=)9}5fi8#V zu}vf~m0GN_9w?us=~qIg@@{<&VZKwrvFODw!G!5H$-XpeUccVMWr=+1Q`q}H%|(D3 zD`U-N`>D{_$s7=Z4=z?|fNg*?vwg$#r4SzoA#nM0)JjfKxd4z2U`1&2Ob<~ICSQnv zih}MFWQQA9xZV4ci^>K=9xy;QI~Qitc=!in+Nw?+%ONN5tp0{tYvq%q^!u)va>6^ z=5>a?5(_hr{>IvR)p`aZ4-Oi?Pyyz?F6}}JSz|xPN+dor-T6a2{yuJLCMxr(JcL<> z|2#;&FKQ=x9M68>CB$J{a-`+_#2v;KbcC0~%zdAgbmqGuNXU+!;al~I-LdhgJo)hu$+N_DlfhyvN0)`oo?vO;MB9a)?FD;tr zSkKJxIvpo0vDaEY*ubv19LA<5;$jimvS}GF9X{aj>57!osvpF85_aNWhDyn%*SA

N=)t0LSL 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 Dep^42IVtmYcD>!^E7bNTfX|tn;+Vm(u;Dl~^vk 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 literal 0 HcmV?d00001 diff --git a/docs/docs/meshcentral/images/2022-06-17-15-57-03.png b/docs/docs/meshcentral/images/2022-06-17-15-57-03.png new file mode 100644 index 0000000000000000000000000000000000000000..65111b191442318011bff5aac6c276af1702646a GIT binary patch literal 93333 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⋙̸#`(ul!q`%keLJWW-b+#bsq-QiN( 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 literal 0 HcmV?d00001 diff --git a/docs/docs/meshcentral/images/2022-06-17-15-57-15.png b/docs/docs/meshcentral/images/2022-06-17-15-57-15.png new file mode 100644 index 0000000000000000000000000000000000000000..60810b5530cccdedd45a98f10c6420b2ce3f9d03 GIT binary patch literal 143569 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

s6+Gol!q&Z(_scUO%AA?&V4UKo(jx87* z$4anWMxNfvyvn9dO_dNI&vQ@u-6l-MjnpmQ!$g!PZcfpCd&v@1PF5h(h^TPv>S#-w4)W-ZzI;#=PEv)HS5Spymmi^a#2|D)~2J=)M zgGk9X$@NpecBVoxW^ZGw0jtB7yyblJ*=;sAmH_+~z2P#8l#Gm3Xs&~UgH=^jhUuEy z9wm_GKtBYX`AeWZt`U)gV{|JdmWYaGBD;Ef^LbovWbQKpw_Zp>Vgsf@DmDY@uU@{) zwIc28>;#{1jY;)Dh)(ltAjUFuDg&xx0T~W3k6_!P12fP$3Ilp~Jl+DXn2*m3(`1!M z?I^rHVB&vzy$MF-K)I~#?)IaiiT;dAu>}2v_!+x614HT6qr1hqy!)z-pAN3zrhHvw zV`o=BBjSctI3?}cJr4pJW)~M1umCRh_*`&qM=6&nNc4!?IkHV;vY;0(D&gmk$fIIO zc;%=q(dQD94DLx*X69f{iJY%WEIT5pRj*hZS28qrjI%OcD-e3TDc|gWNZ|DP(^Ob*ZXmJC~LJ1ECi_HTU zOH ze;DDs12Cf5keVxcdKe+oD26@0^-ylhYAvFQmyVlbhhty5_Xqt@u@yUcC#v~gprwe& zqnFl(2eT=xH_o0_^C9Y}9z0U{wf*AvQN|`won`@3Wzst&6NJ)5U%YD-oaE0%O0Y!u9~7Vb4o@am=XOr`DWA<)+1sJ&E76HM zfX=#y{9ds&y9AMWgcAuCmhWO$46yar54UEa5{BX&Y*5t((tEFlx}?IQf`$OTcPI_@ z$N*k~weSe+KY?8g!yf3xWx@M2tJlWL@ewm~5u5`i(Ds32CrCBGIb9O4A9R<902K)< z14Dcl+#*0F55&&5=f@j0GTcCUVS^hDkb7WIx3D|`dXu= z_#t%g2z+WN6skqQMpzSQ4N&Spz`_Z**UM)q4Zyisyr1+D=B{MqH@y@ur_ zVE^?7OCVrF!rOiYqt?VSLJr#(n4v_Y;0F%^35jJWa=?glB{Erx6q};7ujV)3*#H_- z`scA3r65bcmYXccKT~n(>G`XQL-B?MB+X)JE+urZ0}isK)u%nx)AF-*fyx~=R@)SZ z(nlAAf`U_7S63S2cAg&GE<4#hqS`)OgH zxhY$A4x&{m2GJq|^*iB|5F%yatU_;dez;A@IHZgK8Jy_`j#{&OAr@oYIs3P(9L@J@ zke&Qu$(1f)C**mBg&g*~sp;tkbZJnMLXU@w!Y~8xez@&c=I6=I&9`Ala2qUhfiMo& zG$MG=p4MT;C77MlNr@$;4E=%ZH5#Vc1$YKP_-o$SdId0Egr}B@R2Db2bE_lzjz^D(`4%f)eu3xH!NDp?amA8F@5q->Z zQz%n(wg6;%j0ae1_3FnPe#y_T@TDastb@Lk-EwJjbDFo@7)>;s-zE4nrRI|d-zU!H z-@`R7++gwmm+79@$*OdKddTGqld`}h1Onoa)BP}xqmlZg>R~tzZhY+!arg1bf*(LX z4qasCv@|?r|2kg6aB@7tE?l9{om}p<|~VN1V&KgF+LjQMw3(xJ}VZqj%H034czB?^_;leovN9nC8f&ZjS)zW=; zWfG2u(vqx!*)RD1$Vc2iV*5>^sUQD+%jj3d{Tx0KFkslD3`385LCuVQ9R41r4E!f( zS+%8gKIA9bVfChL9*-i;agh4Mry_Tdx*6Kd;Fp^^r;MJQUN{_?hG*t3HzoS7b%10v zQ=-)WKCiD&2o&QSKXd6kAwUh^LVuHhC&{#w{83n)tZh#H*OeSz!AD}8{|QOZFKP1O z|IeS#y+3}u0FCq9oHp%w20rA2czN9nLA9Lj4XMM(WQL&u{LJr03DaJ>AbIP5qW=rk z;Pn^{TziN|@@jKI=JdAc#d7vK>u;z$g3Gt0l)!&Yj9?k15^^WG~7)x8fH<=;QcKY#Wn!( zbubrz{GBpK6a$E(A?|OYqXRO~5&^>kNHz|c8A*7KT8xpE22B`D+hF>p1EEQj1caB? z{jm#eK%XV2pz>`Su0|ab6Etrdkc3wFYXLI&#&4ph#|i>ulDa1VN`p2lqo}9|ICw;+ zDk=}W^e22N5jwF+{caI+Rl<`1%@9lvpsob-hq#}A!})N#=>nkuI!0SCQTJlQ z8S(%@>nV%Ln4lBvcF5*Qgb@&wr^)6kE&zc68VH8xwQ%8{o}TJ;gg3A}fviVwZ*SFn z?H15(g0igww5r)8laTuJ-Zv<=sz9lMhym&ts0(wX60Q(^h5;=c#1TyTz__V`&l_@q z(Aj2i=&STOLKZ^f!~6FIBHClPV>-SFlE$acus}%5I54Cjn}K}&qs?5iKY;MiIQtYE zK$ZxcD~lZw=tx0;B&>dqh4Hxw%F6ab%LL~(Uqr~9!i`wWWffaHJ1CzzfBet@#-R$| z7GocbUm*<}7+If~Z(hF+Cbg#hss5jNuY6Shj!q3OMf>DHHv@r#yCF~hYwdhz!6N1Y84XRhM!IM7JMt9HPf?5De-aLvtBMmT~5zCvXQ9f*)?|8r-MvQz4TXCh-BZiRd~=YXWkL zOG;RE=v2#@;Pt}(?7rspi-VpXeiw`ua$)8J)B*VCDQJ!PzvJh@f5K;uo*)93t^W*o za+dEcRe);%+d08JTm!lY#0{VM91wE?y%eBm1>C22USJw-FqAD;@s13g-~uKrFa(7R zMDODGG&I@`BFI$OJ1bCYLcJmXp}F@q+!giCnSU-J^pS>s9MXZ`d@vbW?)?9_d(WsQ z*CnfJkowO0NN=mjpop>AhF!9U(xZtMuMMN`kaNXaNF* z&b%DY@!Xkp@0~Ske$9M8Tr0vCzVg1iJp0+tP6PF-EG4Ua;IV=AP%#AFUJY0hb_>nA zGbk$;Ob+P+avK+kh{C|+p23PZkPm}c_mPMQXbyo)R)ui2y@egF2~mbIfEd;KY9QPC zD<-nD^>!OPt><8F8d!*6QG@Q3R7Q0`Ap~Q0ry9M|MtA`(!2cfX>mffd$`|B@#KgoI z)ahVZ=S~1vAKoGb+C#{Rea~XvH5+Sd&<3F8u^brs5MY$$G<1C+w`(!_G;74hDIt-X zlLvMqD7b>KW=^FAFXI6~nPU(MgLMevi_FYSFcFgY8Z`mz;hA4te9}HBEsxMsING>T zQpT#my(xM6edyJx>gB~_P21YNx!}dIXbLBD%pml}Q@O400VG!VkBz1jX$+Xbs%$Hz zX38T%iQiB1KBaD%BY+w~dI~zcd9=&tfn@>JK9kBofMf#onfBB5s_L7}zzPonjsq1{ z9N2AuROdAWlO@qdPPLHi~-$@k}d%&Ir zSt^*fSq01+2>Tn|ci3Y%P*Y=LLQG6xh%2q|yDZQO4#Y^*;-jN)($I8O3i5NR7es4u za`TRE$wf(lX^a?EiK~oCPi#R}l3|1SbdXf-zb$iQYdgY1xWKn>{!_EaQ_>= z3`BoGs01X?U>Xo07m!I@(o<66;p0=iAAJ<7_ZI*NKBSA>P%x_`ggcm@o8PLmXoY&mfr9k#!O->D*5a4BlI$o*-R0oLbgAbdVn}I^M zppXheJOH$P`0xSj6W&9sDHQVW z6xiTSuV46mzk75)H8+^GKLCTx%cjQG76r}9(o-xQxyUIzgYw-{u40YqyE-fMA! zj!#PYxYypt?CU_bV{l}|2~@SfHPT3UKH@lYb)YNYaMHF>z02(F+t0;zD&kP%KgM=lG?{ z>c0!5;@l6mEx1o-Xd-XoM?v@thD?Fcm>po+Z_NEi#sqsUc{gE~ZxMJhf*!2xM&sRc zHT3-}{+ifDHODfT2i7?<6e_J+#eHvQpmOOdUt596Pprcw@_Ro(Nz83`Y9R?vHmFY0 zqgcs|y~X)B`QX=9KzKO08Ml7p@kWcNBHtCpkfX*=OvqZh<)3B!e43}w`1pJyi?``H z&kh?J9FX2b!fvE}^y1Fz)ymQX`%a=6{K@QbDn>No;_&g)DVmk(&ZXuQeHuINuAG9( zZCk4!xnq5)BKGXtQ!Tpq)W(4a@CT#DUfMkr67}}%^FIUnuZ*p?WEb3y6Bt2Xyo)_X zk1^6Uv=6e`aOsk$Soh72k#eUH3)?Suw^$+Q8_6*7y36nzY z?)>=jB4A4Ic4q0gHQnpI{kQqLPH3A45Y{@Ltrka;?)fQ@@L zs{35ZmsIKk5>nDL%?c3dfp$XBgaHhhpv(Geb}vwW0!|q4DV{$40U{^hIiJyjRTW#M zQ)cL!lA;Hkxfbj9@83ZL0EE6wwW)8T0A^;9>nSk}#_B%t2f+jsU?rd!YjF#BQ@t;5 z{vt^S6upYL|9JS$GhnhCBTyJf^W2a#Fz^B+(}t6PKoT%F`QL##%4b%LnC-#T7zPEJ zHx?CwCT=i`$OD9afEWl$Kp+6a03QW-N8p}85e;x_4)EAM9rj1DXCM%0%FZ?c05t&d zskn5W5y^h|9Q6pqlb~cf5o<}YEn~iH{?uFtY~0=#H}7nL&=oYsGl>ciY|OpVJWXEg z{58o<5YC$SOLt^u~?7#+@PXFgc}ys*Ge%*mex>0V(kpz)~iPRu)}8ocGAX-S5mdaf?d^u#E? z9y6`F&T!fJ&kw~46BX-eY7!f(-Hzpy!z5H6UEGAX*Sb;ARA5Jtxm9khJ-^a%<*FPw z5i#?=@kdVn6R3s;o0a}%I#S|H4fcgQ))#Dz=$jpAm|B|a1~ROE9UHX$Zk2*jgTM#y zZ)$+-1>nw9XBhHBruIPVRs)Di0b>zRfPTXwdq>stI|YHFV8h4*+9k;DkRX=_tQo+S z$pgWingnQU1n1ZQ5E7K&!BR~Dvu_i4O+X;8+JjmwMNJaK{;S8o_*lsQ09?w`}LAp zqk5o+@JgfVnICWrA|J}*HVMA*JpMmx@&}Vi9PS)?Trc0Y%dpC&t0Y8_T3=Bt-&|fW z$>nydKmB|mH?)2^8l5e@x+%%wjGgG{(W>!&G;_2o9?`0QTxTu$=~81&jm@FcQ0#}q z=s3@8ZWv5_uhS~2M)3{_obKZuJq)rkS??XQ%_A?TS+(}*!Or?nGt1mTZ!r}x!nooe zTnwEx9v!KIXELQY@t8MlUL9LcLH<+;Eb{nH z6M9A5{ZON$y2fFJB1WX%vk)W4juO9wB1>K$tdA=E%#@^*oO(U3$Wo_O?Jn}Qr=+X& zr!UU72AarO517k>2;&pc7F@0^;^WR$T?o zMl^#n&w)cuy$sHt@5v)>*oTJSR`joYmu{*}EW_Nh7`3ihYF{cClZ{I|JXkI%)*N2m zvC@>j3$t@o|MJDT^kuI*aqD#t&js)10?=41XcD!5bTo>L$muy8c*d+ZQN=hoTe@#W|wz->9pY_z~@Mk`o82q;5w-c?Ts`_Q!{C<>+HPE}P(v;#D{hLz# z%Pd0EXMydH9AjS(*B<4o0>jEJ_423t7og>W(Xq_8v>6W1YHcx|SGK}j&+U1U-?%Y@ z!MGhCIDuK0U}hlfDLoXU7LjF;`WHd_K;hK4CiX>?uS1#k>j1S;9P4GVA>t}dFlD%# zwiC0^EUC!8LHd`tgF{L(k>=CVX(iX=&|H;?N_85G`MW|GjOu57YF)W)Z^4cQYVCL{ zGZyA7yU7m8LB;x_;!4Y@4{eb*n8X9+_`XzfUGL~r4D?9N)NGa6HRo`u^+UP~+F#%J zs5D3BhIX!Ux8@OZa=2ooKO2;F&Pq_tv8RWy)RuMZ8G`H(4T}4lc^`Sm2BW)ey3l=%<&W=ba~pj6@emB%DnR$e2PTA6n!Z#~xgFQX z`T#ykj=F+G^mrjBVhS}c9w)K%-dKF)8yF)+ST9socGpT&=`0JD$AW5%2mFvgUK+r#G7rDiI-02}59b}uXI=8V+EMloOvG3!U zZ&L30q}i$?>Jdp6I%-RFr%uo8?uM+*g9#mSu@jtn<>nFFeS_kN!L9OgiAzWG zLltFQnTZ?s1v!K;-{<%k4Yz&+C|{N0{11%QD{n#{883uV9u87QmK}MBz4;pa7MY(6DFim+R`z2>zL(3V!*&35=xT?l5s71zKI%c~{2 zE`|%3Adhf`HK1lbJ$qLJc!*rAgLd1`Y+jB*&{nGbii*F)EeZ+i3mACyM*_%6mTPJ# zYmkq*w4`7#@5E6$@gsC(TN=vM@K;;O(GgW6|GvCtXn&G&1Z?r@iaxyholDb9XQ#My zlONvf`QM;x|9IW*gw^!PF5+-!1)ns1)T;Q`qnHvRgP z+xUe&;sF*7B4qx^xHN3FTdIT1xUc4v>txDMgMC*FBW_yvq}i+f0LDZX(uRBI4s#rg zWAVa#kVNR?%No{|6&K=C^eD&6s^2{~S@^7PVurUL(y2(ltHjl2CVy9wN0Jq>N^Zd4 z%eya+cr7tCmH5gT;%cPycAvHMtDTlb-@2J27RCI$0V-*2xOBWl84)yQ%eMP z?!R)V2n>Xw+=-8B_P%jg2?{|J=i_#dj`y7&{Z!lLWY#r&LHF-Y5uVx$0 z0AU^c;xhfjWsJ!f4Lh!3b!n(o$By2C?KDyz+3$OhEQgvEC`^P&8AL}O*WBpfadUzz;s_f1pa*;0Xm-eFFumF^s3<@vpUZKAJkA4{Lq zr(Qk|v?=w(y4ESBBEiUpDe6T-D7D5)tR}-C|B!%| zp1p%K?3)T*2shc;*#TfIS}4cyJ`tjBdv^fFC@GRB3rTDXytpk^<QiX5yr}$7h@dRAQo$$P`uhqYC(krAPhN!CPYe^F; zbNAfbDQ&EVi`=%#L+vhaWm~zV zeVWIM3OS-7^~AdkyIU)hw~1?>DXo^e?^jcy0%E)jr+#Hj&C->vt>~-7jb`6<_B_=+ z-8+=5q6lu7-Eyc|d}intfYb>Sonxie9>Tl^t{TMuXGiwvs0SYOcVty5&WQlsdxj0>9G^hrhb zUDa17N7l6A>o&Jqk(;S4dQtw*hDVn0?-t%dXwUBzfzUp5^vszD%e(9D%@?a4*iWVOT%pb*YERAlU5<@(K`qJz=(o5VI&#cpX`h9ko0fSUx$tG89mL-U2 zIT8eOPa2JY3huAr`TdXa!N5{gq^VlVvycTiVaMvxYl?@4<;>(A7>T{2lg$q?wnc7k zYr3MLE}~Xb6q=!!6}NWg#=idVNK4dYg>w(bis0I#38#&pN_zIN(rw)RGRS#95>8LA zl@+V8BIsI*cqP(L&w2kVgPu{u988xt;wSaM2U}~o6sy(tTi~PCKsx-O1rKp^>PgfT zT7NXK!bmQ`x0$?-S^HdvlImMlM_6?gS{Z1cqDPmt(v(9u9yEJgTaI(tt49dcos5p+ zaeWQjb0#|@&u5{XUGA+<&FCiPetOW1HrDO-bV_ahWh4PzU_KtSZ73@_?$yxL+nJcq z9BpV=JNEgDN`EtIKE2d>9rk3$i52ANCrW#F<@;nW7Zzl&J zO?@Ip_}=-uR`M+Kth&d&%RK`QJe;$=Y^pHNBA$yx+%dH_EYOyjhsr z(}r>dv0R{z=2HQYXVC%khy4i3IU{5Ny%GR$U!m#nyrY$)(+RJcI99Ksj#M4_wf#2w z)7QeQu{_Z3L*X+P?YI29QT5kniYs`Z5Q?NJ2*T{_7zLOz(cv!>y)Cn4T12jku&n_t z4|Nur;Zv7Y83Kaj#K6G7sXXRH&#CJK1oS?c9zwRB3ki+Il45&5B38kaxU(ZY%256y z!N%LkS{P>9U}D^9*o=q1*X(Ru;@MB(vmd(N?=}&|oqc}H%0hn>bJ;dK<}!P~8*ZrM zBM>-ukY(+8TzP=&biC`Rq9gJ3D#81^o_647e;<#DT4MhQVm}@&WB!flfggrDS^sJJ zB`~Jd{ii}`t_c7#$OVFLYq?NO~^3gdarT*`i0Y3#~We_5Q_o{&h ztifkb`RqvM-NNCn5EJiR-~-?E>=>SXvZ-?VvHCbRNJCBSE5mzEc_uO-#sc&yAdSVK zIMf&N_jzmFF)yl>9qM8JsB!kx(yZAj6407XU;?Us zsQyeFp=E4Jeb0XuSWQfo3(o>^mOWHbS zGl?|ktEKXSPK~&5{nQe(@7$(VWw}|T_h@ZP4z4kpHD!N;hnrSQLooeo{~AJJ=f`$$ z7fG1sm!_L}Z9m!Yy{Y2Rt)D-faE-!{sp2q=a*p!^DTMzn%_Ucvo@6JZ>E;7Bc$$K( z5tDvAAKrFEoTWS7UfMet5z|~Q%txQUYLBdok@u2ZM2$O~e0hgK8fBDr*JI0&5a0W^ z#Em*8Vj8O(N+5L%9C*t@iQL}-;N(z@)O^Jt2IhAB!bqD>s=p7%6mz?%ilx-q| zyvp7f9j{9lghVUte?I)AVAwUQEfhkdqoSoH=Gd(Wk5v;MKTwBvW)8gN)9f%})bJS>@a>n-$VA@^-RosH`&qf((GnBUpgAq9jjfEH<~8aJiF!ek2>Ce7 zlluA&S6%o1$A>0|k%tYl+;66e@mx-ph4j@7$M?JYC>3hoJv-p*?<`H-skkjG=C1m7 zQ!|d~UOkWl zUel(|XR5y}b`S2=QBer_YO8Iyss}gova+7H#p^*wDwum%rNY2=-hCJQ4f(` zfspk$ML=9k95v~5GIZsGSIORSN+z;oEFzn)wC3$-`472MUXR_B%)+!(r=1W7p&Fxr z7Sir%0n4o-TSazc!+e8nuYThF_`Q@s>FL|L*V%4~LX}%cS$FI>`1)PCm;Q=qURfF4 z8aE;6X9Mo~ZzJ+PG`}qit3a#!YJW*-F_%7~dJ-C*y;W8nRJ9$y{Vh^jGXCKlN?M*S ze%NTpr#g%uUw^n+o*%}ox1A)6e{BY%R(yKQO2)=%-qH4X4Q9Q5q)0e6-Duv6$az`s z@x5-ci=2mB=g99WWpI6M#;mu8=~ScnZl(CW+Od*JI*i9mmRx4gh!$o^E{a<~$SYAj zT>odp90m*-cnKWf5;HQ-qW5V+0CYF_*Mnnfbi3NVQ8L^utdg!FTN3||jJ3jg_$ z7XTv##(e^m7z-6NiaqUjXlR7ikO;3)7oXl3t%IH$ai>+~ZB9Xg+zskg#<8B2dq8A* zv994=>-bBrt||M)o+;NZRew76R43He!)3FgsYhnkQ$3}%WwU$qB?j)An1x2JlzPaT zIAe;G#H;#W@NAbOn{6VvfO7pC6%1_`3-`p%a50iniM#skX1g#=YMS!CqJZvDA6XDS zWy_!zz1sMBn?s&OLT!I|Y>-2*pp!DTS3gCb6#d;HlfDR}C$}B7ptRTd3MCVe$ioCI*)-`z~6E3s#>9o;h9^UD1vm< z=~k{`yEL}fM{qs^^lQ_l{HalM*Id;kBT^%n0=lBQ_Fx5I)mp^Dc=w27?Z;lS z2d$Q9eSIdmTfSLV?ci1W2D$kS>&Yf+`|QbaN#*2~R(%n{3ML7bm1 zx~S`oe9o^xZMZGx33r158nZ0kzO3Dkfi96?;20$ryRd8h1H~JEQwp7hA8l_DYXxR68OC8 z`FUqj19KM@my0hFvmk5Vw5n&vg!QEy_jmdvu_$#fIhY)v4!lyK%O@QsF%&p#TJ0Nc z!|pX)D%7-hL0Z`bOp42L^YXCV4KV@drS3Elas-v6;@VdOkW)_#2sOLop+;_oBR+0Q zMdI^k7oX^b@75;e)KQmoU$#xv+h2<2ozn$@41G-y_pO}?8k(t>S2p!{A0N)t{vF<= zlSg3=(JVFK6>KwQM4w~Zy zz`ud*|H3v%;=H~d$NpmbCoZcf1oNhMjR**G^L&nuCTc_wLr?#wVIWwZ|C`|Ee{IFs z7i4-i|8I?$;L*I918n;^0n(OPRW+*plAOJC!knL7Adso&n~PdR9i4!GMY@r6zni+g zpQCqhqSR9pW7#NWi=8|Oa32gvOZQ=UKYpRf=)|6RQ(9D}nzvB?KHB7^1vG4gb%&P3 zkb5MUVq`>36Wwk6E}zP@EVSob&{b{1USa4<%b5L_G>%2#3{Vw^i&$mL;RH@ar|g)z z3xO|*smmiNp{}k8!tDN9L>Flx+)8CNIoU@4EhFAO3`6*9a59HF_ zuH}`LkyGt6-897C6XPEjewS6;ZfhXrgz9Uy-sjD+Sg%Ft}j!c1($chB9@b zOuRti3-)&$sxFF=YBv4JyzGu4OvTDA%fxcaqqEUpr=q{p+I?m7cVsS=Rk1&$bHAS@ z(=H$qC6F*3k~r8x7GFHu9l@ffNOftXk~h%9cmw=R35|1DWmA1wefz^}LL>K?@?C2o z^UnjJm~+#-)D$%wQY_P1aq4J=SoE&Ak6&WX%42=EVH83vC*u3oG5cEbHW4+CIFt9iG6+|hR@*^y>DiOph`!nnbN$T} z6?r(VE8Fl-TpyK!XG;LowtUqUfhCQ+b9{E8dw2WmsF|Z`lZ(S=DjMWfx;*J$MQ<^Gofx@n~E2D2b0rZI7Fu3j#4ku zRdgw?`y$gL_`2Wv#~KZFi=x0g_(hj*GdW^YZ;k#EvAtMB!wvOh6dHND{=HcIwS$>G zc-bR8ulB@7Up+EoiA%EVq_q-hME87*a&HODE{qbnt|3H@p_Zz4q8rT{QD@53(le-O zE!bAHM7Mq@QTA>&P1ohvDBl_s(1j;mhD#i2#f(Wk5y;uTrl1-*Tx`mGx)s-Ww5-`! za81y-J-pBB1gA1ZEXI63`P{#+uS@~L^^d3CH(rFkI1|uV9!}H`lU7eGrmpzp^t^QB zDf%H5WqJEmp60s6JY8GOvd)hRbi;lRSOACsE4P~ffgw^ksL3$p?XBJSP3mNLl z_)tfN{L>C@Q5xPY!ly)69_U87eZ|f{0W3rs>K)U&YMPSFxQ!-K(6h3}ehbLFgNY|h z76@4%xV-=lzs_`B{hd5k|o+m!$6km(<6w zL@T%k4QgkBmZTJKX#u_NklJm)VKB-D5{@N%^hm z#O~6kWg7R8;TBFSH1|za3@;m-A}wnQpZDBNR#>;`DY@ooHMlt94e9wN_Nt9NT=*yj-Qq_^Cv5w@V+(>q3OF$f)M*-@yvOFUK5P6dU_)wvdG*NAh>l z8cOPsDeEC>UM9XvLKK`)iB}U;F+ZEDwFByX;i4FkoY7JHg40x#w+}6#JF7?EZeK=kB6eFmY%9DU;xxTqmqj1LYaArAVKZcf$NFI<0C~Sc9u#n&@N>k z+OPglBs8!3mci3sqs1{grADCrd3IN~J=x$T>r`~whH{jC47KsSI+YwUjWH&w*~0O2 z5ps%!9k=770^Z3eY7}x`rDxwdstYB z4Jnu0X)j?eZgPd6_f6Vj${z8Ka>mqkC?sZ@-eH3FHH1Jc{U0dZs3_PL*c-?syRV_& z_G7tudflA+WioGCp_6Ebj3V!{v_%jwzUtckiPQ^c$x06yb3{H23n(Oa#4< z6Yn(hkmbKINc#B!p|L^4>>Uv{7 zmM`wCeULKj-Ao2voeH|Z(V9i+-O1gC#X&XR`&bgD*t?TYU(R#pChS~T@D0u}vzJwQ zXr%h8fnr;YEN}Gc5A7WdtBd;Xr+4cMe<9-Ty0t9p7^`U^?JRBdpSZOgTIHSNurR$D zAcel!`z|s3%0nJjXnx3)n!|SYsCKv3!{^KzSsYVv!FTZQQ*2kaL>`s)ble90Sz%&R zWzNlivgkWFx@0HKmxQLPJ(n=-s1lleTDsNk2!+ zF(^Q|;47SEba~K!-=r?9b^h9;DK*t6ZZo0`x|YrqqlEfkoi-e6D`| z84qLqEC2Pxj=QEIq4nMwhHn8jocx0{UMevGA9`_s$EWUY;L8{I;U9l)L#=d8Si^pzWsO0Co5hbLJQvPH16-_z zW+mArj1E(&F1(O0@TE?12mYi%D4& zy_SW8TFnRzwYtg1C#NDKkYfL05a7M4ED3itOoFa$b3vRhve|_?YrBEzZXRi4_>)pw zlij`4m&KAz@?Vy2Q+!gW37mA{9W?#nk}^}&(ZlCHX;&cg6-w%$cCJvMHsL|(n9!Fc zW#o%~PKURs1#LHqc*j9Y<_AWX6;N3YA4#brZ!4PBNj>2$6;uBMv|MYe<6$dvC@sJ2 za9_`CSXMKh+CkRPY~ws{*4N`vk$viye#yw%iz&+9)GMRLCWAy5hA&j2AaJ#8Td<+y z348BAG|v@MXvh#gtyyDRs*BVtD!E53-KHTS@2T`TicCw7?}4@)v?yUr4^AN>v9G)P zgl|bTevtwlE*BZt99aQ&wp)>~1fSZsr%iY;AC$2|L&&LYU}Rg3vu(Ti38AjJLN zj}XjBQ6eMC`;;qL#GI!3Z6X^i0=6vVz0r!-wo{%* zy0_Du1=vp@wQE%`{3o#w{$QuiKVvI9ph5w^@K&PT5v8ubXV4U!9lCYqS) zZ#wskc6H~HURqk#B4UwCWWtCtCC?=)SeZ(2&RhvshO^w)P}Af^)!ABI)XwgmrQl}* zW{#K-Lo2SX#UWIS>9TV7MvY#*Ns)vkjVo%l_QewOX;;+=5eqGRsrjKG^8D+R+BapE z!f(P8J+eg?7AOh}WkU>G6PcW7=#mHjTqqIQPCuUCmkC-;p=dP~ZAK=B!o|qTi{85Sr#tZ2uUP(h zalyT;QF530{}*K-*cMz^^58@PF*FQ%u}1Q_dY7ks^KXN@16#qgPH2lC*N}=0H%)o! zQq237Qoe|9R4g#&VJ&(deNUa^hY^z4frKo{n{RM_HBg{HixB0IuW^o#5lOk3s%BOs z@X@hHis_nd&*M#&9;?fNy3HaFj8oG;Q>KU<@hUQ00bz~Cn5C3fkaF=gN6m+PreMH% ziD7F3POnbrRk3aQUMtyNm8p=}tL`qf;tqEYweH02@2O+W$=ZfUVp<}Se2u7%6u7`= ze@=HYzWyS;dld2176Rf){q~>(sg8fFQW*-_daQ$0I4qP%i59@)US>4?{D@^i_f^Lv2CSYK7AX!~Zf?I`p~7bIu$-0J9t+o~ zif?GW95S)HC2w@OK!dOLNm+(cghbhNelY}H$2vl7MZ%zmyB_diBE95+(aPX6d7gfR zgmL63iJO3jQ=&lec+5}B;u45dyPK5G4HfcX8@A~dkMkfIBcn?KQJXhJ`jxeQN^`*o zHgI$@GyFDEXL}xfTP?|LY(BYPJWiUJ-@$L&@vkD1TiB9d2{CbtA?AFok*~B(K;s46 zvom7uAy6>$y+T!!5)7<&^10u8;Qh;Pk3+Ukzd;($avY@Nj;OOjicaa1b09+`&MK5$ zy|eu!{PN043U#~`1Fu+$_UNig(<1*ETN%VR;US1@c$oxs-?j#>>$oYV4Ol`ybnkP^ z`J~6V;!L5hXoh!4y02UgY}(iGyMr1$xQ^<&p`odj`=C}t!@K#34ZMgMGfJan^J?rW z?_w>iuuymU@n)+=0-})b#VgM4Aob#Y+c5o621;zT+6qZs@dZlgy{O)#Z86go6Pwnh z$1W6Bbc#+;gmL-j5nWzSASwIzAriiQT-EAfgXR(rU^b7vlU=RtKTblu6_d&_Cr}Y^ z$3IkkMen_Fx5hc1lraG^bJJF~ZQ*7nYFjI3Cz*&69z;e&!T=$eYl6v-qye9;+zU9Y zR8Yl?dXlP~bybFRE{?7wfr`Vve__Q_-hkc~3g=tOzNlC3BwbT@9!a4gB(K3Sm#PSHJq5M>y1!?egPDsr>RRCCGrx~;eIO=RV{p8SLN z2@yZ7xf3=Maf7I;YnLQk$vw2Nbo) zYMyJM(KRVJ%c>r0A!AkiyRMS$ZPCVL*;)~Ia`a6YmSXP*&OGN-*zN?n_g*M- zk45zEfBvc6rgB^H5#y_(TBn+o`k=Umvax8<{`PL!RW$*&sNfb_J{crTbu>J*CyUv< z-Gxrt5N<<+BCnjx*KK|svrmQ*%(J>Up84`^iZpNFq-`gy1IP(PuXl37uWhD$PulKH z=QADSw7RkKcqAqmJR050iTxtA)b}xgIc@H9j(S6x(HkX(4VcTet@1sLK88UK;U2r) zx3NODv;H*-j?RyMw~#kHZBdetf)CBIRBpTbIn@d-yf&b&cR6;3!aZztUr zshMT9h3+Y7ei=ZsRKl~*kT~_1BwDSZ%&8(rnbam) z1}w+v;VX$xR0&O0#*&B*=oVx`)Iw|ri7UbxqPi103X0&mMC@qlVk2K$l?b`I%o#8U zH_$dAX4qe=jhF+orb8{=Q>yefrAwZk+uNHHdI}2ycEibz2IAsvRZ=O;WcFCR!%s>jBbBTW|6>3;RbM6O%4gg zAa~4A%1v-{N)OK>y9rVzUE1b3dyMn{8uXT6u6J3TT5x`8KYIM^Ei=?Ak@-0x?Mlyz z0zB8M>aJ`dsoHQEdPYO@N+)8XqkFWbWsh#KCV%2tQnC)qz*JF$%VFz6lDDmj&!~OQ zcG{E0;&bpMiJ!krNklNBiJwiw6w@YW073yW@(=73)PscVUzX}FFz6^7_3~r^SfN4( zK54IJgB)!%$e*-e`158IuA@)d0WO1D6Q#EOl@y&$Znb-Rs5Gbvq*Ep69wPOsVujv84UP!6qS31& zp(9qKX_D_gg1-hhA?A|*P(mCH4>ENU7k<-NY+)h^ucUY_uVJ#N^EABl6Rv%H`68*F zlv|ZfXRnxjtUHd$NcO2*UGo%qa}OmcRYO#AGgu=hiXfbIQ{(Ro&@H z{ptQ+rhgGEg_8k&Kz9!uW0*LqIB(Kv?Dc}F?%xEBrr&&v{(ugUxorHd6A01!-T)+z z-?h$Vf1qi5R<4h9d7t(oT56ez67u~6ilX$eY zJRlVmL>xpET78g&(_D}8UM7qp&h*ukEYPqw#&qKXhLBhJ!cYpPTmEzw`hD?CTp1z`l~$UlA{)NHt0 zTWD9YC{5_FV|(}6tgo=csRq*MM=-VK&30E^@GSUn5uJ2nJ-XG~c!%{A@kLUOIFvZc zLFd#V-Q=3aC!Ybn*do3Cq?N;(PUpG4U6&Dpn8$99;wG`^CI~%#6&K;|A^(hd; zx!GFVTdEqbwbaBMXK8T;)}F38?juKF9b{B|`I6_@95X~&q?Gr1cC%x7b*@2VZTW4> zx=4M{Ye_4GnXlEl_aYSWAsn13yFzAypb-8CuAv=l&xb?Uc70f8$~@gaBhQMiGxhh zV;*|0HeWXCs>%P33~Ge!kTky5bVnAAOD3zFpfW7RUTS~QTi{rn=C_z&j4?rgzl|r! zF70can_vsViw;SX71HTO-V$|N-pLGtQVAPxB}?{I!yYs7&L0SS>GKQhk^Mz5{vR=rZw1uip%YdN|@pmw8Y>Pe!ZB0qR7rVAr8W$RQJ_mT;uT;9mu5nd&i?GOkRW8D*7mdrdm)9RY&(gO z`_#rHY=zS1wP&Gq2j{-!=15pfpBr=`7@l$xTRqpCRJ|FSdre$TY^BZ~KhmdFZQuLz zYm$MBQOl;}>&ESp!7eXd5f9{qhm457XS(}$GkNUZKd&a$_Fq*Lno_SmOrP-P_YB5}#DfJ@I!DU~~ zIG7VAOLDbfuY5l|__O=mAS)%0t2ru@XMNqirLMA1feX6oH>*q4^)g7~S&cbLN$c|x5J)Op1!HX`(D@n2~P-ZStBA-oy~ zanD0sX=cqwbCwVloz{bmkGmVev^2QXH0Y$QBUj5C@xfF{_EYPf;Dj&1JV4~gF7(} ztikd7olD~@8ogR^s7SUn{fDOqDrTI;Z@w*+n+QEpr7hTd7qw`!%9Ze5I@amR6ksJ@ zkV}4~T(~2rhnL#d7vmrbH-oA5=mKuuq!t1*dZ&~<;zb)YMoWIja^!PFdqa&hJ^K` z98MChgc6DMk_AMk2xX+h#wOMXjd*C2P8{A&`#=^RjxW5mI;ED4oY`ucQXYLJN$&E9vIB|1X!PXD}9Hl83>(EP{-XO2a>H0?w!HoWPh zt!m#6d4|;?An+#M!ufj{|BSP(-jwZ$Xgl4?O0p6DH-PCc0Wnn#cs~Ypn<9wmr@$7) zdphsTVijuUa&e2N+o3Cs@T`N?4n7E5P%{v!U8fn>d$_U!N1s@uNf6!Iao=MVzEi+W zr?r6P=$KfW-)%BkCK{vm6ex<+@S*Se2Mz(Yiz$8Lgf9F;WEzLYKseY}=GE)=USA>lDfN>#*J zOMGXtW!$5TJeqEnc=8p5%}$ZZc4ii=I-cTItw_!yb8jFK_=^+M|2W z9K5ytffH(b+%zbC>Yx%fM%7*8G3pbNtqOy`LHn{B2=4UBqoLJB?`Db;@S1l-Y+Ex} zsa|7`Gfuuq$0{~>EdNBs1ku0#;usfwjzH&E#ub_R-PVhM1Ozaje%K!O-{J65^L(uq z?>}63TiDy+{~<~64gQ@ZU?UTbzwtB*&6UK$^ubxQPr$$-1Bty_Y~K+*q>=fbdOzS~ zfuV)o$F~4aw&1R0V^vA-TE+E$d0Ak;{clJ{|6)7fxBjE2pPfSW|2q3sf(b4@pH9O# z^KJko@!A1@_S+!<&p%}0+L}nLONbiC826;2u6Xyh*EWS?ez>@yRio$uxptz4D^Jx( z+_WXNeh~IYIYP%ueQ-q1b}Z>3fP$u#0R0>x<`YbCt1?bkQ&+E!NCVSn zzbbcub^ae%$%)fV_y?FpHw69nda=z*XAY9qOx_ge1VM&n<_)E^ggl{GLismUrs)Zb z<-L=uyu33h%}Eb6O^P36t<=7=1qFK3DcX)d(p<3nn6b>#wBIc$7wA2RU3o%hWHDdX+^pTC>j@qH}M5D`5I{MaisHm zWNhp!Hms1Q87M8(zMM7=(lSG6Wb00UGo;W0m#mR9C&oOd$3F4BiB!__a1BvQd-j4; z=>NM?q9I)i6CYwn{VElOKMC!>w5*~b1h{)da84?A`yFA?X0RuO|&_>GJ5snh>1L!KNn#PJDQ^h!!ooYbHF+Xrk6ym zRRDVDH@5fxa#na7!!ZBg0qeDw{uDEIUjDt)4`%>%_Hez{T|Os0{aa5Jn*f|fzyu|^ zgF1?NjCk6HAtr_1v%Tx1LB=$1H=V!zgXzJT1&Le7M^l<%ikS{OE}eLu!k?l6+Ses4 zH}!pDB1&GGx^_I_m3%#F4OW!)6&80$`Ua`{ZTLHy)p8+Mf%$yxiBe}|-^7i*F zuyb(uU!~5diNsqXQCI&j7jKU#w%(=7Gj>Exx%>|>LdvbPn$B($GSY1Y)U9I`fa2+t zwXSMZtuiAHosX|7y--6TGAhLaCB6*c6Fs>{aEber?sB8VQs)%=a?bJX+6WZ>AFZ8t zSku|J?omb=QDj8H2^|qps)9(9;-FMPYG?uuT@X-u#|8|&2}nnJ4bml43%!?sKu82a z3y{zQfsni7SZ40|-Fwb`p39$T$hYjW_FC_HKSQU^iPrSlx+_2#FZc#oQ%_a@Qi^7w ziKuzyRx&PjeyQG{|4Pr?()fq^57;2l{za2myOdmU3k`q$Ai<>J)Hfog zub*5hv2fEjk28GWE^5PWt}!DW&t7qqpD9+W2Nvn}+ilvr)=hVwX_|;~o3yTqmlE2f zvX8RW{>57GRTiKQ5o0iLP%{L=L1l4;c`k<64wab1JJn1C^&_^W(ZYM@fqRxm_CNF` zk#!u|ctp*c%oAzSEjUfh2=h^(T5v>9=N-)x!Ry#~_8Y}Ngtjp=!a-Rdnl(1d@@v{D zC%>gP(adpmf1s`QwU1pApM0GtZ&Q+Kh*A|jd(NkDu&1v5cNbMucZpVmT;eISy&L)c z_JWE>%|w#9w&%gRLiLhG&fk}akA728F~nxC^nKya{CLet{3L`3j&o@5%N!CLV2X%28nT{$*Af^Ql>nnwS9Gg^F%VTV0-MAST$LPjumrh;m@ zfk|sgjJ(ao->glCy_SqbnrZ7WoQ_)Dq85ycpYK|~@ak+T3+W_mubb4wPIu`U2E`}q zaX7z|#IO{%^wdV;FY?Njs+f9BB~Lx-@bx#bI0io^1^GJ`Q~MC(M@4nDTIKdFT`H=9 zGhR;JMG~oomq3MJW`|^V&Z*6uX_rzkzIa1)$T}n)DQRq^Dd2j^@9yk$>=|p395L!v zX-rBvNSMCsH53g_?O@%A@Qb2L8b~Y}3*N=`{#wf+-_QAM907T=X+4x>Z=@6{Hp#g( zY^izNmHFor4q-;>4(ABh_7%Ev2Z!@HHeZ`{XSG&5S_~>Mst<-B_-F=Ku#BcO@|V)y zg$}J?4W3)8MQD`y9>$6oFEpt{caomihWgP>DiL zv5}~gdvC)U+Xm@mq4`p>idu)}jn`q~V@_?MVzjBD-!pCU!Ev*HNgBC&NcdHb<8hVI zFmpFS5scu~&7yeu*DBNMM#qx-Xc%pqj&Ugk_B^r@$uNwy=707!R%+m)#gq2r$YhAU za=D20n9nQ5U)%((Q8zz@^Su3K?nRY(%6p$sYki(%nSmATJ40x$s~i8VXzP35{N5H5-i{SH~X}i-jd!7cFvNb9)9#%cde1k-FSy%S#yf+;LbHxaYuA z50jc5mxfu8kGRE`uhuh2^Qa#UakD?p)x(T7IL4qhpgn&v)KyIMO8JHIan(#whF?XQ zP~pE4>r#8rE`p0W7aC{UT2mmc;f(g@ex;NZts*IVbz$VQpO*!83UB>OSmgP>Xu}m` zv%1TEM1xA_WrpQ&gx>QRrfc~Q+ZR6&9*Y)QpojO^*@Y~RvlYvmvniKQhhZk8iToHv zb}j`DA#`A18MN8;R@obICpPo1HLuDN)sRxC&iVL|9{wX`l+D589qIIopI^Q1d9zlF z$mFEf;b2xf8y!Axof6CIjMUJX=V~hdrKox_M`upQshYvFGrE;+lSM2J)MWhRhX;EM zx8ch@=a|$6>_m)zGsz6=ZGr4@a+m)C5m`=qc(5?iki==7^a)B4yId$wIwOT=WAIjf z{^%-i;%B=%-k+y;QX-4Y0@$b=fa@@JIxj)k3>R6={o@QXje%fr4q?AIz$_I;-Yq?H z#_{E=l*BPqC5u`mPdZ_&Q|8_Dk5<~p=B!!Y)|8zTkt>94v71{rSaH$R=oR&$}2JuP~a6jG}<`=vu z9uW9dIcsU{x{$ZY;# z6w;_r`XGJ6D4ez@+*RG%r)?tt%>1(=F=}-Y?BgZ>#RmS{`^7~?&fHOJQ^}l32MY6` zf9|Jdz+j#r)cAMTrWJo{&W~{KTlI?cxYiPwRxS$gm4d#3-kRHLPA`nM;ViH8FYZ{M ztA2FiTpjHRS5PiT3~@D{atVYEb*G5)(uW4dKfLp7UizFazVR};`_V(ztZ}uoT;~gt z#28XaAqMtwFi^7wckXH@3Y6Z4^AMmf(OqU)bokwj_?T@GmM8kCld~A?-rrhrL2K^E z5XofHZZ>DB1YhzvuXK_Xs4epXO0H zc`Tf1PC-rKAJipP#O+E)8=0GgvoA8%W?0Qv8}o|Q_l4ef?3(VaqL$1?sAgKIqv%{q zL|Y1fwlqo*4@-U#oI`$aST7&tLP1guQ;^c56k$`|sn`((>o4lwDoK<=e~R0N<46Z{ zZ?wv~>2mOj=?%(V3qW zst5;aqF*7}&lNvLX^Y4W^b{CW!jslCvXmwze8v=vPkCGGuk?KU5;+S8r`bwQ4I;SoCuYClWtba;JH)_RB+Y;4UkM~N;~-1 zA2$6eKQH|0eU$KNc*r9Wd$8D4tw|yZgz*LA@q=*-8Vi)~1zQix+b^J(!E!|0iKo}m z`$9h#R2zQDgY&iV`4&ODNaHC3yn8CFO6p2E*rF3SP3(TTl+PD!jPWQrSHB?bkf_>&Yn#^PpBOGTshBk>x!v7J=X5&V z5-bFGwWf}+f7L;WueMO-E{T&TGz|_Fs_h0BKy_wBw?@V*^k07a|=vK9gT;vOB z_Qo5AHWG!pJ@5P$MWs%vv@`6Abe9+?D?ZtOQ+b5<;db)&LKN$?yU~xWqN?~w;{7Ue z%X{+v?peoXNgNxLDxaSu%ZWb`3OQL!)e%dnrQQ^m#U8{sHV6J+^4MJw$+Q1$8e71t z)@~A=Sh_e>yl^aAZlc-j;Z5FlHn2X;{wvS9467>w2RJrcP<;M>>YMy4UKr+YF`L)8 zzaxH~;6Mgk=D#+aUG@q5G69&spmH4CV9-o_i=shYH$m}x*ZqGwu1``5Jx_;e(f_Rv z0VUD%L$D8eCI1K31(c5@x@`7}*8_in;K%To{GZM6p9 z+N`Lkdb=>I=YO=vQBfr)(#}Jv-h7`3!1y7fes1Qmj=cT%L?QSU4U+Bm;1oN1+{#xs zqrc}Xm3%T%+(TNBH`wNb3{^g)3B>`*?u~Mkf6Y{XiR|vi+{pObYh(|w$@AmyqU5TX z7*mY=IHhRPzqQK)=Y%Hh)3s;i?XHV2cZzq*oXY11|29E??{BY$iQ66OjdyW`Z>AQ& z?ZDN$x5>u)WU|a{OM{?cx_?x}2QK}A+p=;#t2wsIq^4aBV*W+s2lUm_!OWS2`6tP< zKMUdciP3^*#d7{uw7>e8awe8W;Q!d-*W=XU^{vI_|EPXEP9??R)xIgRiArA6I`e8Q zSx|nV4VYN027l{)tqO^j_D({s42w0j#_9@k+&`YVdBQ91l$X;fW|4Zn8bv=V?H3wA zZ1W>BuszG=v1R0{FhF^ER%*xPdCzX0emL)E;iO$H^|0*^ktQTVgpwUd02edR*};-_hqqS?Xgf}YHU1Iw*a!^Kf9CF1Z+tV{ z_z#W6Mj$A4y|f`@GpORCYwom6=c<1qGzF1mo{Ig~tg!OG_x(ctLzaT#O_CPU(4FMk zM(bM-kC(UcrEU!uJlk1FFZ38<(H;?TaYs2~1^DX`186-?mz+%(Lr`!OCqt%i)ZRq$O`9 z(6<#DIAU8Q!5mQp5>fH%m!3?_Tmgd-JPpbtbTxO@7drbbgQ}7q8*&>QQku+LX=~4h z_-@2yu*&&2Odg>MZm4_+FGjEDFfw$rWH+2u^;kDcFDWk8EAOJ_4f*a~@)&Cf{NbbM z=66m}UA~oa+1eCHa2rKSCxBD=#Kc*?$6e3jeww&s##Pqn0Zli&x*%tzE2sF`jUVCy z4Q_6w$X8|V9i5#JVAHSPOhnY8{U_P%tAJIvG`>M6!hLCI4(ZZQ+UpN6)z{}$0Jfjn z?T0Hia&a&b!0C*q@Tgr0tCRU~tO4V_lpE@;8N`u%OXUNcN3%|6z~MpwbR96P^pF6h z1F0Ap9YqC@Npo{^b`aoP3$0uouWV-%z3(yQW*6&&ZyZ~dwzQ7P$O!0@TsZhbBUb=} zxd$s0Ru^WENaYs87AJu-oRaKD48R#3p*~)qWe*7;4rjDQvKa#he*pbhE^GD&3ph^x z;sytKouk~~?i}#5#^eF*K+286J>Wcw+j-`0=}<0_B7A5p(y6FDURq@~c1WtXA*$45X+;cyVk)SrQG%^ zCB^3>ow)D3Xol8us*F#KlrKmU;|#1v4$hmn4wm_E7aIuVjSd5p1ew%Ku7$&?X-+G@ zFEOla+HDmE%%z=d4iX@(EuFo0bA3H3;2_B+Jw~e>_`=uYo1|NZkMF)+YJS<5-c1w0 z#gmY8$Eh<_)b8%IB)3aY28*1BC2ntFK9W7j=e^fdAIr6d>7bTGqgn1rWt*Hb@$ul4z(INu>uzTGwx5_6E_~UDF1dlJxVJ_d%Oz& zIID(hC|Xr4Cp2r_ba1z&kvFL9^LQ?HZMt+HnUzQJbKlm>*xQQF=<4tH(2-dE9y>hM zX#qW?fW+zTlO4?A|C#NvfLRlg?Hy?+fJ_L`Z^g;G$dbY2oIYvx8L+r4qGa;m04IOH z!cyhQlXXAB)cLSnr?lr%R8UW-dp6=eWk?ibx~ZLAl|$e z5lUVQmQx;5V}rqL0d2JZ=4SX|c=g>CbhBAC7|o8?nf0C}+W=mNPQC`))dx?pLI!U+ z<5fxB%?DwJ=PCec!pwUq7tjXD%VuOg$eqTcotD~cR;Vw>rOs`O8ybZjs-@WdC9!`k zMuns%EQs@(j`b$1XAj-x_M?qmlhZc=6vz+ts%8~_f_nvJW5%KJqmcro2DOJm8*XQ%D=h2;e2V#)zsC+ubzAdxCh>U zz4g5K_3Oa9*hmE5u-OL)B(Qfgq06v(4MBzU*D+ke)qHw|&zTx!ftk1V>I-^V2`AJ| zuK}B_#X-KN*+^;Kl0MkPJ+QnLAz%#~s)(-W-Q9LMn5iY;726z@J%`nwjCd~o;9O@u zNAyDsE6^NVK``ZAsFU8=VfD5q?JH%)Sn@HD9-tI~k^1fi#uz}Z@@DcA4hSf}!>GY8 z*MFRKG$3GNoE(qWQUHuXM_vnn0o7jZOOw_EP9DNhPi@N$O2F#C_ZdKG>_CUIpC1X_ z%q5Lf0A}}$_rldJ05oVbpix}2XnUQZ16a`4ZTeXCZn|N0#SyG%tIGh}p;IcL5QC4} zn>pY7dxWABeCZOYQRG$+fA0X8(!?(>=!;qdmW|O;n?0gVb#qLlGY+A6DZ~YY_tu5h zvH;RDSnu%xx!HCF{Zo%5SKnubsU{uwi9@u3G>Ea;owgdZf zO5-{oG+)!9!zS^{=rja?`6d9CwRwLEzk@|AlMm5kX^^fBAm#_eG7@3K1OY26EA&2! z08�M&ieOfA2A2y5qs4saxVRSuA3$0PL608#O%1B;W~lMC7?OE){&O z=MC#~q6wtm8}XjDV>`AAB2Tsq9Dq~+xHhm$Zs0*f zpTupy`~63jOXC{FE}_J!Ti*ojmwfl;9wx4c1e)**C!+jTEQ%=Wb|i;fI=f4Oqlrn{ zp+tp&fIFD4fS@b8{^=|L*0BL*l`8lz{^0TfUG@%l6CyLZl;;5=;nNJ$Qj-EON4GJPF+k%U z_r7xZvIO9u6Z^^)cAR|W>Pz0dxusqW-a0U*N%uf`IgSp3n8u7u9FyC9Pmh5xyTL)P zd+`JC{EPH#e6fZ3hpXsAK@;rfs)uoQ{Sw?H6?G5f6Q%3Sq*h`7b?_9WUM!JH!PZ}- z|0R?k79GA+R1716*OD>KPi2`xEPaxlH!1oDzV{ttWU6NaSJFhKM;Y;Kh@y-042~-L zTNw^0!c}91uJ9+Z zV|F-a))vLl?7Qb&O;vrW`ZWM`onpSO%w7>ge|di-Up9CCmCCCyA-Hm>FQ6j=CPPek zk1xQi6|4A@md)r{ZmfWoy96#lrZ5oymcDs2JrgDjjR&(H3HTDgMIUo55kMR$;S7kr z*Z>epuomeIree`ufB!=eh!rX#T2UZ~01>Gq0qKHJ%YkR?BNqUX$e+BAE*?!n?G&4l ziU2Ujk)}h|{@xvT!*j*ODnq_dMZVUMPa#-^;H?aRr0}5X09AO(IS33hJwWd&aWh*Y zgR$-guoGYcgCW!fc#l0wQbDI68$)WsezPoS5FQpJHv?z@;4PBD+7b^0AW#XjFT!T# zWf`$r*@-6ZNwf{h% zKlAhm^#~W3nj5W$dHsGkm!f#BJJ$ZhrF;;+ZoJ?)pg<{`?yVs`(0-H|pr)!i(w!xQ zsRyAwc|U-BF9_h+cCf`|{+lW2o4&hmy;~{48HmUWtnT}+w`ylXcRyQ1MKFu0@&E>< z^J?{&Ecsv)Wj_K)bQkZj9Wk7lQd*xg=5D8*is#Byzs=9bhx|=GfrlX^IhlDo0R0XW zc`3%7v3m~E-@9^V$JFiri#+73w_C8bp5B}yAx3x#D(;%OX!bhrCkm1+LW!)nV6d$q)dXRddTw9n18(vCa&w^Z=i38;U?jOs*Ok{-M_S=Y7p@wAHQdb?sbFwM#syB zloO=BOQm-j2Ro%rU)abgf(%{2AxCj)=hGW4e;b@qE<~#CRk@yp$mUW+avSVZsOz&E z@4s6RP<`1lU#)&!FU(*c`^&^H--jU8)4rYw!$Ff1Jz9(>LwHV9F@BE6~3AJ=^&RQXb%&D8j5CZ{;G$kWd}LO!d&d{Ins&`)u@!@5g4}jONY8 z!-srOXk(Sp{6jhK7)OpYnt!C&q{@4o(!Ss4IKW?0Z8%yVOU7b7Bp=2f2lu#+YcI$o z)mjeO$nA%n@z`6`1sN*JZGs>9g^QC{K^-|sfy-)@Gybk(*1B@IT-w?XMFL2aYIMD^ zIB_nd_pY>>Bz?#2?3gp8nFTuA4c_##@yy*FhwCRkZo+<#LD%|-5)S$=hnq@V99zBK z)eEu^sSV)Y+E4Ydjfm#=L;j3AwUjno%Gnt1LToFO5+>_#Z`98#2@Bba*qGil8K^gY zWbWm!(G$?y%Pe-)V`j~_b~qK8T0oq27s(u5QC$5|5~6B(*frr@zGGc7=nggJkklH( zMB%;rZgRWNLnOOVMSkwHA%0>@_i|RCzX{@!oAxr!s^P;rOz)IAUW@OEQaZVrwVtZ{ zkdSIS3;XnPde3R4z-)aqWHp!>j#1K6H@zwKPG5r{RDOUgNWQICB&m0`KwslYq5-V3 zd#Ld$+~0UAMH;L4s?Eo(TPvH|XFgTycb$Nyn>Cv1BDj@?BGR^9uU#O?JLhC5Z5Gd+ za@gJ=>Q1>RZI+#b%{ih|M1g3!9H+e8W7#$t?O~466xcFma;^ z?z{vxm%c2%Fj{jy==tL3>?T8T1qLRO@Za1z-pW2ndYd-)4=*ne4Ny)TJ6|1pZR4Yj zUnU`CM!x1XR{?qiB)Ze0yc0K7nb8MjldID1@b;=i%L*>Q1isF^r;PU0x>aR=NE6@= zEf%Y@GBU)ct_H^{-OCYTjg@|D<4cag%*}a$L%mK$_;z{M>?TXIN2kSocQcXx>PHQUANjO@{55?(WU8W_{lC=Hnh0>nh>XsYAO~A2;0D zHHx-Bna8;7&qYE~Q|{)9n~WUT&8M4KG=`b;V!27)pN?<$EFlD;(JZA7%6^!hcf@RL zJw^#ZuWf=ix63ip7M->3WAxahO=2Wb zzjlm(W0HP+z3xvNKR*S#-ck4qrMR*teSLlW3TziLF6Xah=!iHBN<+}qpRS+eHKxDL zs*-~m*GG#97nz311hdqzJ<{aW3)4MW?4&Fwl?_c#JS*dTp_-&wLG-M!3m}zGyuz}} zrmK$R-m~%hG~S2BNc$`!X3Rd{_u0Db9t)!T2BPDaIrGye<6=Rr=hrPr~PwSYnsxRq7urv+~k7FWN zIP`^Y|7luP;?cJ@L@&EhER=+jVvwo-AhM7HpM@v6LRy(a&Hc2W~`BL0cM1e9NiF9q_npL~KjvHM} z@@?ntbm9}61vaVVl`(E8I=VU(YC_qW88u##G1*rENkN|eJzmDnIR3oj`>V}b*JC-NitJ0>YJ_Ga2Mw;X zDP=D?O_UYiqr)Z*R~nc2{Q1aD&ml`l8y&5^T}_AGj-H*u+e$);Ur z-8yx({O`IgGY=^hLL$d)%`7J+uv7Zii(6F3QKQ=dMJj=%% zyOSYbxTW~lO8ez)I>!5<2aw$8IKB6r9uW<3S)RrPpX>BuzY!lQck$D-|& z^Tdtp7?uor@5d<@WsgJ~wY<;noUL9u5x>l08c7Dy>OKqA z<20E%zS@2n%OExGAO0i5O+}^d`f4@l#!&R#07Mt=8i{V~^4L`N%S< zAKKbdlDXidrt1rU-Qa+cqkRRTr*bDk6`~<2DUSB7WI5VVK_n7EDi-9R;a`JXDkC1m zuKEene-RZRREu|e2=Zzb>)lm3@ekVjOtjICv2>lOsh>d|q1It?wB7>`4%~HcxHm{v z0%nI()80IV(&~XX)ztg~4bydQ1&N0i!;cn)L1?)K+l9VWydzp}tLKBdbdj3(xjM1P zh-GN0Y4e|73~k!elyp${Ne9^NG7gDkR?Ue?f?@ou7$Swh%D-f~xKsI&d@D(JV{U=m zX&M+8kR2&!jBCuCmErjuKoS%`S&IjE+7HSv zY0@6)fTaO)ivs-o%ZTDcB<2+qyCOIom0aOG5U~a9hYn3oE@XP5z^e~I(!}`?f*buiy&(1wU^7bkH#BD z-!I>o!+s3THVKVl^DGle$S8=qV^>pVN-)ZKt7K}jU4*d5ng^~=xIS*+LS6Fty~$X_ zr>1G!-?TYoR>;#2QTZa64!zS>1Sb$qNfi6G8{4~tsq%@JNIrf`%+(*=5t6m|IElwi zlvld8w0H^_`83S$1(YDG@uX)YRdA1iMFe-cMKn1cA>2sX$ven0ZKucidaV+J3=)MT zxB2xOtD5s*m%SEy=~7GseC%sKuiIpp`HjB)^H|-w%w$c8DZ!2pC6*7fMsydW@7>1I z<2@Z_=SBCo4%+3QY!X8QwKlbYjEX}BK4-D=r2>!b;V^(-fa+@0tsQ^en{0Ss%g~%C^cpy67}wTU|PU|)t$8$4}C3!s+da~ zdZyrfVX08NP}i|!y1MJd9`ETK`mi?G-X|}z=k%UMxe&goMkHVDNpGKrJ8pa|ckF45 z4IyANB0|p?)fYCxA>q3hIj@iNYMyVw!HJmnjrGJ+%r|V;25=^u#4TY!?odLY zxUmIYbjw1-UEbq_aQxJP>fU0QkVJiZjSS6cb~S%<dt ze`*>BzwJ74Gb5wVjfDM4@s+7sxn?D_3-P?(>dnOxIOJzgF;Gr9F-uBH@^$q0bAapv zc=G&SWx5sqAA{7F%}gN?BbTr`byMCZU}os6!};XI{dV8F$W4f$)<&iE_++7t1cR|R z7C}3^lS7P4)H;P}N}F=)A@^2LZ;1o@?VBezg42Bb2|`|8b?XgTu^&Jj5ZBtr^ameA zos5^|ky(zrR-GQ@_h_r7vLCN=4!t`nJw6#HIUAk@EOiTtCq3Tg?R31+H9govI5kym zS4cui$LvWbb#dRVKuC26 zICzL)F;?rAYg$=qzF9Z3%9Y!A^5n*a7z2NQ)S!Y-x>9 zLONlcALZ@PON`Lt%aHZCDJ-0hqOylpWo3P!J7Q^gA*P_P5Rgxw>{B+ury4oy&4!cT z_J1#Y0Hgj7lkGySa!Sjav>(wm{>W3Eu%G)iGb>*~S(*MbM;_0;`0762)k}K%#)N+K zu92f7%t#&>Wf>{lWY?#zP-ZNEkqOfo$s_$)q9z&=Kh-{&)SbQRa`_jGg)2C+F_;{V zV_F&+bm4v99A&>=+yBUzVo_c@KMu3>L(mQqDZhDC&TRb_p=gm$PvHI5+zNgTfTg4* rF3|6m=*RqX)csE_F9gDFAIeocct94ce{ literal 0 HcmV?d00001 diff --git a/docs/docs/meshcentral/images/2022-06-17-15-57-30.png b/docs/docs/meshcentral/images/2022-06-17-15-57-30.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8337c8b70feca9382b1e7f1f847b870e1d8b19 GIT binary patch literal 34709 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 CQ_8FW literal 0 HcmV?d00001 diff --git a/docs/docs/meshcentral/images/2022-06-17-15-57-52.png b/docs/docs/meshcentral/images/2022-06-17-15-57-52.png new file mode 100644 index 0000000000000000000000000000000000000000..11f97e890654229421e502e2570efb398ad4c3bf GIT binary patch literal 42518 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

Oe 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 Date: Fri, 17 Jun 2022 16:05:02 -0400 Subject: [PATCH 013/105] docs - adding notes about private cert generation --- docs/docs/meshcentral/codesigning.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/docs/meshcentral/codesigning.md b/docs/docs/meshcentral/codesigning.md index f1482bb4..3934db9d 100644 --- a/docs/docs/meshcentral/codesigning.md +++ b/docs/docs/meshcentral/codesigning.md @@ -13,3 +13,6 @@ If you want to self-sign the mesh agent so you can whitelist the software in you

+ +!!!note + If you generate your private key on windows with use `BEGIN PRIVATE KEY` and openssl needs `BEGIN RSA PRIVATE KEY` you can convert your private key to rsa private key using `openssl rsa -in server.key -out server_new.key` \ No newline at end of file From 1608e67ebc8cd4d33750b727464a906b657fb4a0 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Fri, 17 Jun 2022 16:09:18 -0400 Subject: [PATCH 014/105] docs - Enable Web based SSH --- docs/docs/meshcentral/index.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/docs/meshcentral/index.md b/docs/docs/meshcentral/index.md index 53b098ed..6b40222c 100644 --- a/docs/docs/meshcentral/index.md +++ b/docs/docs/meshcentral/index.md @@ -714,12 +714,19 @@ MeshCentral supports the local device group allowing devices that do not have an ![](images/2022-05-31-10-30-42.png) +To enable SSH support, add this line to the domain section of your config.json: + +```json +"ssh": true +``` + Video Walkthru
+ ### Raritan and WebPowerSwitch with Relay In addition to local device groups, the IP-KVM/Power switch device group was also improved to support a MeshAgent as a relay. This is big news for Raritan IP-KVM switch owners as you can now monitor your IP-KVM ports and access them remotely from the Internet. The same can be done with WebPowerSwitch allowing full out-of-band remote access to devices from anywhere in the world. From 4f8dd4a6733d69ff545f94d88fb10e09c4fbe465 Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Fri, 17 Jun 2022 21:23:58 +0100 Subject: [PATCH 015/105] Update issue templates --- .github/ISSUE_TEMPLATE/feature_request.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..11fc491e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From e8a67c4c704eb8d515ec30f400f3a4ae3964daeb Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 17 Jun 2022 20:56:25 -0700 Subject: [PATCH 016/105] Added time stamping feature to authenticode.js --- authenticode.js | 406 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 339 insertions(+), 67 deletions(-) diff --git a/authenticode.js b/authenticode.js index e204ef76..b52423b9 100644 --- a/authenticode.js +++ b/authenticode.js @@ -288,12 +288,10 @@ function createAuthenticodeHandler(path) { var derlen = forge.asn1.getBerValueLength(forge.util.createBuffer(pkcs7raw.slice(1, 5))) + 4; if (derlen != pkcs7raw.length) { pkcs7raw = pkcs7raw.slice(0, derlen); } - //console.log('pkcs7raw', Buffer.from(pkcs7raw, 'binary').toString('base64')); - // Decode the signature block var pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(pkcs7raw)); - // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForjeJS adds support for it in the future + // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" pkcs7der.value[1].value[0].value[2].value[0].value = forge.asn1.oidToDer(forge.pki.oids.data).data; @@ -330,7 +328,7 @@ function createAuthenticodeHandler(path) { ) { var v = pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value[0].value; if (v.startsWith('http://') || v.startsWith('https://') || ((v.length % 2) == 1)) { obj.signingAttribs.push(v); } else { - var r = ""; // This string value is in UCS2 format, convert it to a normal string. + var r = ''; // This string value is in UCS2 format, convert it to a normal string. for (var k = 0; k < v.length; k += 2) { r += String.fromCharCode((v.charCodeAt(k + 8) << 8) + v.charCodeAt(k + 1)); } obj.signingAttribs.push(r); } @@ -366,7 +364,7 @@ function createAuthenticodeHandler(path) { } // Make a timestamp signature request - obj.timeStampRequest = function (url, func) { + obj.timeStampRequest = function (args, func) { // Create the timestamp request in DER format const asn1 = forge.asn1; const pkcs7dataOid = asn1.oidToDer('1.2.840.113549.1.7.1').data; @@ -398,20 +396,90 @@ function createAuthenticodeHandler(path) { } }; - console.log('options', options); - console.log('requestBody', requestBody); - - // Debug - const sampleResponse = "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"; - func(null, sampleResponse); - return; - // Set up the request var responseAccumulator = ''; - var req = http.request(url, options, function (res) { + var req = http.request(args.time, options, function (res) { res.setEncoding('utf8'); res.on('data', function (chunk) { responseAccumulator += chunk; }); - res.on('end', function () { func(null, Buffer.from(responseAccumulator, 'base64').toString('base64')); }); + res.on('end', function () { + // Decode the timestamp signature block + const timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); + + // Decode the executable signature block + const pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); + + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + + // Open the output file + var output = null; + try { output = fs.openSync(args.out, 'w+'); } catch (ex) { } + if (output == null) return false; + var tmp, written = 0; + var executableSize = obj.header.sigpos ? obj.header.sigpos : this.filesize; + + // Compute pre-header length and copy that to the new file + var preHeaderLen = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); + var tmp = readFileSlice(written, preHeaderLen); + fs.writeSync(output, tmp); + written += tmp.length; + + // Quad Align the results, adding padding if necessary + var len = executableSize + p7signature.length; + var padding = (8 - ((len) % 8)) % 8; + + // Write the signature header + var addresstable = Buffer.alloc(8); + addresstable.writeUInt32LE(executableSize); + addresstable.writeUInt32LE(8 + p7signature.length + padding, 4); + fs.writeSync(output, addresstable); + written += addresstable.length; + + // Copy the rest of the file until the start of the signature block + while ((executableSize - written) > 0) { + tmp = readFileSlice(written, Math.min(executableSize - written, 65536)); + fs.writeSync(output, tmp); + written += tmp.length; + } + + // Write the signature block header and signature + var win = Buffer.alloc(8); // WIN CERTIFICATE Structure + win.writeUInt32LE(p7signature.length + padding + 8); // DWORD length + win.writeUInt16LE(512, 4); // WORD revision + win.writeUInt16LE(2, 6); // WORD type + fs.writeSync(output, win); + fs.writeSync(output, p7signature); + if (padding > 0) { fs.writeSync(output, Buffer.alloc(padding, 0)); } + written += (p7signature.length + padding + 8); + + // Compute the checksum and write it in the PE header checksum location + var tmp = Buffer.alloc(4); + tmp.writeUInt32LE(runChecksumOnFile(output, written, ((obj.header.peOptionalHeaderLocation + 64) / 4))); + fs.writeSync(output, tmp, 0, 4, obj.header.peOptionalHeaderLocation + 64); + + // Close the file + fs.closeSync(output); + + // Indicate we are done + func(null); + }); }); // Post the data @@ -1110,7 +1178,7 @@ function createAuthenticodeHandler(path) { } // Sign the file using the certificate and key. If none is specified, generate a dummy one - obj.sign = function (cert, args) { + obj.sign = function (cert, args, func) { if (cert == null) { cert = createSelfSignedCert({ cn: 'Test' }); } // Set the hash algorithm hash OID @@ -1121,16 +1189,16 @@ function createAuthenticodeHandler(path) { if (args.hash == 'sha512') { hashOid = forge.pki.oids.sha512; fileHash = obj.getHash('sha512'); } if (args.hash == 'sha224') { hashOid = forge.pki.oids.sha224; fileHash = obj.getHash('sha224'); } if (args.hash == 'md5') { hashOid = forge.pki.oids.md5; fileHash = obj.getHash('md5'); } - if (hashOid == null) return false; + if (hashOid == null) { func(false); return; }; // Create the signature block - var p7 = forge.pkcs7.createSignedData(); + var xp7 = forge.pkcs7.createSignedData(); var content = { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 6, 'constructed': false, 'composed': false, 'value': forge.asn1.oidToDer('1.3.6.1.4.1.311.2.1.15').data }, { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 3, 'constructed': false, 'composed': false, 'value': '\u0000', 'bitStringContents': '\u0000', 'original': { 'tagClass': 0, 'type': 3, 'constructed': false, 'composed': false, 'value': '\u0000' } }, { 'tagClass': 128, 'type': 0, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 128, 'type': 2, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 128, 'type': 0, 'constructed': false, 'composed': false, 'value': '' }] }] }] }] }, { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 6, 'constructed': false, 'composed': false, 'value': forge.asn1.oidToDer(hashOid).data }, { 'tagClass': 0, 'type': 5, 'constructed': false, 'composed': false, 'value': '' }] }, { 'tagClass': 0, 'type': 4, 'constructed': false, 'composed': false, 'value': fileHash.toString('binary') }] }] }; - p7.contentInfo = forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.SEQUENCE, true, [forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.OID, false, forge.asn1.oidToDer('1.3.6.1.4.1.311.2.1.4').getBytes())]); - p7.contentInfo.value.push(forge.asn1.create(forge.asn1.Class.CONTEXT_SPECIFIC, 0, true, [content])); - p7.content = {}; // We set .contentInfo and have .content empty to bypass node-forge limitation on the type of content it can sign. - p7.addCertificate(cert.cert); - if (cert.extraCerts) { for (var i = 0; i < cert.extraCerts.length; i++) { p7.addCertificate(cert.extraCerts[0]); } } // Add any extra certificates that form the cert chain + xp7.contentInfo = forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.SEQUENCE, true, [forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.OID, false, forge.asn1.oidToDer('1.3.6.1.4.1.311.2.1.4').getBytes())]); + xp7.contentInfo.value.push(forge.asn1.create(forge.asn1.Class.CONTEXT_SPECIFIC, 0, true, [content])); + xp7.content = {}; // We set .contentInfo and have .content empty to bypass node-forge limitation on the type of content it can sign. + xp7.addCertificate(cert.cert); + if (cert.extraCerts) { for (var i = 0; i < cert.extraCerts.length; i++) { xp7.addCertificate(cert.extraCerts[0]); } } // Add any extra certificates that form the cert chain // Build authenticated attributes var authenticatedAttributes = [ @@ -1149,22 +1217,109 @@ function createAuthenticodeHandler(path) { } // Add the signer and sign - p7.addSigner({ + xp7.addSigner({ key: cert.key, certificate: cert.cert, digestAlgorithm: forge.pki.oids.sha384, authenticatedAttributes: authenticatedAttributes }); - p7.sign(); - var p7signature = Buffer.from(forge.pkcs7.messageToPem(p7).split('-----BEGIN PKCS7-----')[1].split('-----END PKCS7-----')[0], 'base64'); - //console.log('Signature', Buffer.from(p7signature, 'binary').toString('base64')); + xp7.sign(); + var p7signature = Buffer.from(forge.pkcs7.messageToPem(xp7).split('-----BEGIN PKCS7-----')[1].split('-----END PKCS7-----')[0], 'base64'); + if (args.time == null) { + // Sign the executable without timestamp + signEx(args, p7signature, obj.filesize, func); + } else { + // Decode the signature block + var pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); + + // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future + // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" + pkcs7der.value[1].value[0].value[2].value[0].value = forge.asn1.oidToDer(forge.pki.oids.data).data; + + // Decode the PKCS7 message + var pkcs7 = p7.messageFromAsn1(pkcs7der); + + // Create the timestamp request in DER format + const asn1 = forge.asn1; + const pkcs7dataOid = asn1.oidToDer('1.2.840.113549.1.7.1').data; + const microsoftCodeSigningOid = asn1.oidToDer('1.3.6.1.4.1.311.3.2.1').data; + const asn1obj = + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, microsoftCodeSigningOid), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, pkcs7dataOid), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, pkcs7.rawCapture.signature.toString('binary')) // Signature here + ]) + ]) + ]); + + // Re-decode the PKCS7 from the executable, this time, no workaround needed + pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); + + // Serialize an ASN.1 object to DER format in Base64 + const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); + + // Make an HTTP request + const http = require('http'); + var options = { + method: 'POST', + headers: { + 'accept': 'application/octet-stream', + 'cache-control': 'no-cache', + 'user-agent': 'Transport', + 'content-type': 'application/octet-stream', + 'content-length': Buffer.byteLength(requestBody) + } + }; + + // Set up the request + var responseAccumulator = ''; + var req = http.request(args.time, options, function (res) { + res.setEncoding('utf8'); + res.on('data', function (chunk) { responseAccumulator += chunk; }); + res.on('end', function () { + // Decode the timestamp signature block + const timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); + + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + + // Write the file with the signature block + signEx(args, p7signature, obj.filesize, func); + }); + }); + + // Post the data + req.write(requestBody); + req.end(); + } + } + + function signEx(args, p7signature, filesize, func) { // Open the output file var output = null; try { output = fs.openSync(args.out, 'w+'); } catch (ex) { } - if (output == null) return false; - var tmp, written = 0; - var executableSize = obj.header.sigpos ? obj.header.sigpos : this.filesize; + if (output == null) { func(false); return; } + var tmp, written = 0, executableSize = obj.header.sigpos ? obj.header.sigpos : filesize; // Compute pre-header length and copy that to the new file var preHeaderLen = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); @@ -1207,7 +1362,7 @@ function createAuthenticodeHandler(path) { // Close the file fs.closeSync(output); - return true; + func(null); } // Save an executable without the signature @@ -1242,7 +1397,7 @@ function createAuthenticodeHandler(path) { } // Save the executable - obj.writeExecutable = function (args, cert) { + obj.writeExecutable = function (args, cert, func) { // Open the file var output = fs.openSync(args.out, 'w+'); var tmp, written = 0; @@ -1340,13 +1495,13 @@ function createAuthenticodeHandler(path) { if (hashOid == null) return false; // Create the signature block - var p7 = forge.pkcs7.createSignedData(); + var xp7 = forge.pkcs7.createSignedData(); var content = { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 6, 'constructed': false, 'composed': false, 'value': forge.asn1.oidToDer('1.3.6.1.4.1.311.2.1.15').data }, { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 3, 'constructed': false, 'composed': false, 'value': '\u0000', 'bitStringContents': '\u0000', 'original': { 'tagClass': 0, 'type': 3, 'constructed': false, 'composed': false, 'value': '\u0000' } }, { 'tagClass': 128, 'type': 0, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 128, 'type': 2, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 128, 'type': 0, 'constructed': false, 'composed': false, 'value': '' }] }] }] }] }, { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 0, 'type': 6, 'constructed': false, 'composed': false, 'value': forge.asn1.oidToDer(hashOid).data }, { 'tagClass': 0, 'type': 5, 'constructed': false, 'composed': false, 'value': '' }] }, { 'tagClass': 0, 'type': 4, 'constructed': false, 'composed': false, 'value': fileHash.toString('binary') }] }] }; - p7.contentInfo = forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.SEQUENCE, true, [forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.OID, false, forge.asn1.oidToDer('1.3.6.1.4.1.311.2.1.4').getBytes())]); - p7.contentInfo.value.push(forge.asn1.create(forge.asn1.Class.CONTEXT_SPECIFIC, 0, true, [content])); - p7.content = {}; // We set .contentInfo and have .content empty to bypass node-forge limitation on the type of content it can sign. - p7.addCertificate(cert.cert); - if (cert.extraCerts) { for (var i = 0; i < cert.extraCerts.length; i++) { p7.addCertificate(cert.extraCerts[0]); } } // Add any extra certificates that form the cert chain + xp7.contentInfo = forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.SEQUENCE, true, [forge.asn1.create(forge.asn1.Class.UNIVERSAL, forge.asn1.Type.OID, false, forge.asn1.oidToDer('1.3.6.1.4.1.311.2.1.4').getBytes())]); + xp7.contentInfo.value.push(forge.asn1.create(forge.asn1.Class.CONTEXT_SPECIFIC, 0, true, [content])); + xp7.content = {}; // We set .contentInfo and have .content empty to bypass node-forge limitation on the type of content it can sign. + xp7.addCertificate(cert.cert); + if (cert.extraCerts) { for (var i = 0; i < cert.extraCerts.length; i++) { xp7.addCertificate(cert.extraCerts[0]); } } // Add any extra certificates that form the cert chain // Build authenticated attributes var authenticatedAttributes = [ @@ -1365,45 +1520,144 @@ function createAuthenticodeHandler(path) { } // Add the signer and sign - p7.addSigner({ + xp7.addSigner({ key: cert.key, certificate: cert.cert, digestAlgorithm: forge.pki.oids.sha384, authenticatedAttributes: authenticatedAttributes }); - p7.sign(); - var p7signature = Buffer.from(forge.pkcs7.messageToPem(p7).split('-----BEGIN PKCS7-----')[1].split('-----END PKCS7-----')[0], 'base64'); + xp7.sign(); + var p7signature = Buffer.from(forge.pkcs7.messageToPem(xp7).split('-----BEGIN PKCS7-----')[1].split('-----END PKCS7-----')[0], 'base64'); //console.log('Signature', Buffer.from(p7signature, 'binary').toString('base64')); - // Quad Align the results, adding padding if necessary - var len = written + p7signature.length; - var padding = (8 - ((len) % 8)) % 8; + if (args.time == null) { + // Write the signature block to the output executable without time stamp + writeExecutableEx(output, p7signature, written, func); + } else { + // Decode the signature block + var pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); - // Write the signature block header and signature - var win = Buffer.alloc(8); // WIN CERTIFICATE Structure - win.writeUInt32LE(p7signature.length + padding + 8); // DWORD length - win.writeUInt16LE(512, 4); // WORD revision - win.writeUInt16LE(2, 6); // WORD type - fs.writeSync(output, win); - fs.writeSync(output, p7signature); - if (padding > 0) { fs.writeSync(output, Buffer.alloc(padding, 0)); } + // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future + // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" + pkcs7der.value[1].value[0].value[2].value[0].value = forge.asn1.oidToDer(forge.pki.oids.data).data; - // Write the signature header - var addresstable = Buffer.alloc(8); - addresstable.writeUInt32LE(written); - addresstable.writeUInt32LE(8 + p7signature.length + padding, 4); - var signatureHeaderLocation = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); - fs.writeSync(output, addresstable, 0, 8, signatureHeaderLocation); - written += (p7signature.length + padding + 8); // Add the signature block to written counter + // Decode the PKCS7 message + var pkcs7 = p7.messageFromAsn1(pkcs7der); - // Compute the checksum and write it in the PE header checksum location - var tmp = Buffer.alloc(4); - tmp.writeUInt32LE(runChecksumOnFile(output, written, ((obj.header.peOptionalHeaderLocation + 64) / 4))); - fs.writeSync(output, tmp, 0, 4, obj.header.peOptionalHeaderLocation + 64); + // Create the timestamp request in DER format + const asn1 = forge.asn1; + const pkcs7dataOid = asn1.oidToDer('1.2.840.113549.1.7.1').data; + const microsoftCodeSigningOid = asn1.oidToDer('1.3.6.1.4.1.311.3.2.1').data; + const asn1obj = + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, microsoftCodeSigningOid), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, pkcs7dataOid), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, pkcs7.rawCapture.signature.toString('binary')) // Signature here + ]) + ]) + ]); + + // Re-decode the PKCS7 from the executable, this time, no workaround needed + pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); + + // Serialize an ASN.1 object to DER format in Base64 + const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); + + // Make an HTTP request + const http = require('http'); + var options = { + method: 'POST', + headers: { + 'accept': 'application/octet-stream', + 'cache-control': 'no-cache', + 'user-agent': 'Transport', + 'content-type': 'application/octet-stream', + 'content-length': Buffer.byteLength(requestBody) + } + }; + + // Set up the request + var responseAccumulator = ''; + var req = http.request(args.time, options, function (res) { + res.setEncoding('utf8'); + res.on('data', function (chunk) { responseAccumulator += chunk; }); + res.on('end', function () { + // Decode the timestamp signature block + const timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); + + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + + // Write the file with the signature block + writeExecutableEx(output, p7signature, written, func); + }); + }); + + // Post the data + req.write(requestBody); + req.end(); + } + return; } // Close the file fs.closeSync(output); + + // Indicate success + func(null); + } + + function writeExecutableEx(output, p7signature, written, func) { + // Quad Align the results, adding padding if necessary + var len = written + p7signature.length; + var padding = (8 - ((len) % 8)) % 8; + + // Write the signature block header and signature + var win = Buffer.alloc(8); // WIN CERTIFICATE Structure + win.writeUInt32LE(p7signature.length + padding + 8); // DWORD length + win.writeUInt16LE(512, 4); // WORD revision + win.writeUInt16LE(2, 6); // WORD type + fs.writeSync(output, win); + fs.writeSync(output, p7signature); + if (padding > 0) { fs.writeSync(output, Buffer.alloc(padding, 0)); } + + // Write the signature header + var addresstable = Buffer.alloc(8); + addresstable.writeUInt32LE(written); + addresstable.writeUInt32LE(8 + p7signature.length + padding, 4); + var signatureHeaderLocation = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); + fs.writeSync(output, addresstable, 0, 8, signatureHeaderLocation); + written += (p7signature.length + padding + 8); // Add the signature block to written counter + + // Compute the checksum and write it in the PE header checksum location + var tmp = Buffer.alloc(4); + tmp.writeUInt32LE(runChecksumOnFile(output, written, ((obj.header.peOptionalHeaderLocation + 64) / 4))); + fs.writeSync(output, tmp, 0, 4, obj.header.peOptionalHeaderLocation + 64); + + // Close the file + fs.closeSync(output); + + // Indicate success + func(null); } // Return null if we could not open the file @@ -1430,6 +1684,7 @@ function start() { console.log(" --desc [description] Description string to embbed into signature."); console.log(" --url [url] URL to embbed into signature."); console.log(" --hash [method] Default is SHA384, possible value: MD5, SHA224, SHA256, SHA384 or SHA512."); + console.log(" --time [url] The time signing server URL."); console.log(" unsign: Remove the signature from the executable."); console.log(" --exe [file] Required executable to un-sign."); console.log(" --out [file] Resulting executable with signature removed."); @@ -1442,6 +1697,10 @@ function start() { console.log(" --org [value] Certificate organization name."); console.log(" --ou [value] Certificate organization unit name."); console.log(" --serial [value] Certificate serial number."); + console.log(" timestamp: Add a signed timestamp to an already signed executable."); + console.log(" --exe [file] Required executable to sign."); + console.log(" --out [file] Resulting signed executable."); + console.log(" --time [url] The time signing server URL."); console.log(""); console.log("Note that certificate PEM files must first have the signing certificate,"); console.log("followed by all certificates that form the trust chain."); @@ -1532,10 +1791,18 @@ function start() { if (cert == null) { console.log("Unable to load certificate and/or private key, generating test certificate."); cert = createSelfSignedCert({ cn: 'Test' }); } if (resChanges == false) { console.log("Signing to " + args.out); - exe.sign(cert, args); // Simple signing, copy most of the original file. + exe.sign(cert, args, function (err) { // Simple signing, copy most of the original file. + if (err == null) { console.log("Done."); } else { console.log(err); } + if (exe != null) { exe.close(); } + }); + return; } else { console.log("Changing resources and signing to " + args.out); - exe.writeExecutable(args, cert); // Signing with resources decoded and re-encoded. + exe.writeExecutable(args, cert, function (err) { // Signing with resources decoded and re-encoded. + if (err == null) { console.log("Done."); } else { console.log(err); } + if (exe != null) { exe.close(); } + }); + return; } console.log("Done."); } @@ -1612,9 +1879,14 @@ function start() { if (command == 'timestamp') { if (exe == null) { console.log("Missing --exe [filename]"); return; } if (exe.signature == null) { console.log("Executable is not signed."); return; } - if (typeof args.url != 'string') { console.log("Missing --url [url]"); return; } + if (typeof args.time != 'string') { console.log("Missing --time [url]"); return; } + createOutFile(args, args.exe); console.log("Requesting time signature..."); - exe.timeStampRequest(args.url, function (err, response) { console.log("Done: RSP: " + response); }) + exe.timeStampRequest(args, function (err) { + if (err == null) { console.log("Done."); } else { console.log(err); } + if (exe != null) { exe.close(); } + }) + return; } // Close the file From 4887b7612b01bb7e18ce6097fea271b857dc6446 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 17 Jun 2022 21:40:22 -0700 Subject: [PATCH 017/105] Fixed authenticode.js timestamp if executable already has a time stamp. --- authenticode.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/authenticode.js b/authenticode.js index b52423b9..fcbc3072 100644 --- a/authenticode.js +++ b/authenticode.js @@ -413,6 +413,14 @@ function createAuthenticodeHandler(path) { const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + // Remove any existing time stamp signatures + var newValues = []; + for (var i in pkcs7der.value[1].value[0].value[4].value[0].value) { + const j = pkcs7der.value[1].value[0].value[4].value[0].value[i]; + if ((j.tagClass != 128) || (j.type != 1)) { newValues.push(j); } // If this is not a time stamp, add it to out new list. + } + pkcs7der.value[1].value[0].value[4].value[0].value = newValues; // Set the new list + // Get the time signature and add it to the executables PKCS7 const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; @@ -1606,6 +1614,7 @@ function createAuthenticodeHandler(path) { // Re-encode the executable signature block const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + console.log('r3'); // Write the file with the signature block writeExecutableEx(output, p7signature, written, func); From de3d47e948efbf488d4635a46eab41cbb16f9b1f Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 17 Jun 2022 21:49:45 -0700 Subject: [PATCH 018/105] Authenticode.js error handling fix. --- authenticode.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/authenticode.js b/authenticode.js index fcbc3072..cd74e167 100644 --- a/authenticode.js +++ b/authenticode.js @@ -491,6 +491,7 @@ function createAuthenticodeHandler(path) { }); // Post the data + req.on('error', function (err) { func('' + err); }); req.write(requestBody); req.end(); } @@ -1317,6 +1318,7 @@ function createAuthenticodeHandler(path) { }); // Post the data + req.on('error', function (err) { func('' + err); }); req.write(requestBody); req.end(); } @@ -1622,6 +1624,7 @@ function createAuthenticodeHandler(path) { }); // Post the data + req.on('error', function (err) { func('' + err); }); req.write(requestBody); req.end(); } From 18c11a344c69c3c3ec00450d9f755c6ce2dd0a19 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 00:07:45 -0700 Subject: [PATCH 019/105] Added agent time stamping when signing a Windows agent. --- authenticode.js | 8 +- meshcentral-config-schema.json | 1 + meshcentral.js | 599 ++++++++++++++++++--------------- sample-config-advanced.json | 1 + 4 files changed, 330 insertions(+), 279 deletions(-) diff --git a/authenticode.js b/authenticode.js index cd74e167..9757024d 100644 --- a/authenticode.js +++ b/authenticode.js @@ -486,7 +486,7 @@ function createAuthenticodeHandler(path) { fs.closeSync(output); // Indicate we are done - func(null); + func(null, written); }); }); @@ -1372,7 +1372,7 @@ function createAuthenticodeHandler(path) { // Close the file fs.closeSync(output); - func(null); + func(null, written); } // Save an executable without the signature @@ -1635,7 +1635,7 @@ function createAuthenticodeHandler(path) { fs.closeSync(output); // Indicate success - func(null); + func(null, written); } function writeExecutableEx(output, p7signature, written, func) { @@ -1669,7 +1669,7 @@ function createAuthenticodeHandler(path) { fs.closeSync(output); // Indicate success - func(null); + func(null, written); } // Return null if we could not open the file diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index 7e41c70b..22001d21 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -101,6 +101,7 @@ "agentCoreDump": { "type": "boolean", "default": false, "description": "Automatically activates and transfers any agent crash dump files to the server in meshcentral-data/coredumps." }, "agentCoreDumpUsers": { "type": "array", "description": "List of non-administrator users that have access to mesh agent crash dumps." }, "agentSignLock": { "type": "boolean", "default": false, "description": "When code signing an agent using authenticode, lock the agent to only allow connection to this server. (This is in testing, the default value will change to true in the future)." }, + "agentTimeStampServer": { "type": [ "boolean", "string" ], "default": "http://timestamp.comodoca.com/authenticode", "description": "The time stamping server to use when code signing Windows executables. When set to false, the executables are not time stamped." }, "ignoreAgentHashCheck": { "type": [ "boolean", "string" ], "default": false, "description": "When true, the agent no longer checked the TLS certificate of the server. This should be used for debugging only. You can also set this to a comma seperated list of IP addresses to ignore, for example: \"192.168.2.100,192.168.1.0/24\"." }, "exactPorts": { "type": "boolean", "default": false, "description": "When set to true, MeshCentral will only grab the required TCP listening ports or fail. It will not try to use the next available port of it's busy." }, "allowLoginToken": { "type": "boolean", "default": false }, diff --git a/meshcentral.js b/meshcentral.js index 7dff6013..66a7603a 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -1617,275 +1617,277 @@ function CreateMeshCentralServer(config, args) { // Load the list of mesh agents and install scripts if ((obj.args.noagentupdate == 1) || (obj.args.noagentupdate == true)) { for (i in obj.meshAgentsArchitectureNumbers) { obj.meshAgentsArchitectureNumbers[i].update = false; } } - obj.updateMeshAgentsTable(obj.config.domains[''], function () { - obj.updateMeshAgentInstallScripts(); + obj.signMeshAgents(obj.config.domains[''], function () { + obj.updateMeshAgentsTable(obj.config.domains[''], function () { + obj.updateMeshAgentInstallScripts(); - // Setup and start the web server - obj.crypto.randomBytes(48, function (err, buf) { - // Setup Mesh Multi-Server if needed - obj.multiServer = require('./multiserver.js').CreateMultiServer(obj, obj.args); - if (obj.multiServer != null) { - if ((obj.db.databaseType != 3) || (obj.db.changeStream != true)) { console.log("ERROR: Multi-server support requires use of MongoDB with ReplicaSet and ChangeStream enabled."); process.exit(0); return; } - if (typeof obj.args.sessionkey != 'string') { console.log("ERROR: Multi-server support requires \"SessionKey\" be set in the settings section of config.json, same key for all servers."); process.exit(0); return; } - obj.serverId = obj.multiServer.serverid; - for (var serverid in obj.config.peers.servers) { obj.peerConnectivityByNode[serverid] = {}; } - } + // Setup and start the web server + obj.crypto.randomBytes(48, function (err, buf) { + // Setup Mesh Multi-Server if needed + obj.multiServer = require('./multiserver.js').CreateMultiServer(obj, obj.args); + if (obj.multiServer != null) { + if ((obj.db.databaseType != 3) || (obj.db.changeStream != true)) { console.log("ERROR: Multi-server support requires use of MongoDB with ReplicaSet and ChangeStream enabled."); process.exit(0); return; } + if (typeof obj.args.sessionkey != 'string') { console.log("ERROR: Multi-server support requires \"SessionKey\" be set in the settings section of config.json, same key for all servers."); process.exit(0); return; } + obj.serverId = obj.multiServer.serverid; + for (var serverid in obj.config.peers.servers) { obj.peerConnectivityByNode[serverid] = {}; } + } - // If the server is set to "nousers", allow only loopback unless IP filter is set - if ((obj.args.nousers == true) && (obj.args.userallowedip == null)) { obj.args.userallowedip = "::1,127.0.0.1"; } + // If the server is set to "nousers", allow only loopback unless IP filter is set + if ((obj.args.nousers == true) && (obj.args.userallowedip == null)) { obj.args.userallowedip = "::1,127.0.0.1"; } - // Set the session length to 60 minutes if not set and set a random key if needed - if ((obj.args.sessiontime != null) && ((typeof obj.args.sessiontime != 'number') || (obj.args.sessiontime < 1))) { delete obj.args.sessiontime; } - if (typeof obj.args.sessionkey != 'string') { obj.args.sessionkey = buf.toString('hex').toUpperCase(); } + // Set the session length to 60 minutes if not set and set a random key if needed + if ((obj.args.sessiontime != null) && ((typeof obj.args.sessiontime != 'number') || (obj.args.sessiontime < 1))) { delete obj.args.sessiontime; } + if (typeof obj.args.sessionkey != 'string') { obj.args.sessionkey = buf.toString('hex').toUpperCase(); } - // Create MQTT Broker to hook into webserver and mpsserver - if ((typeof obj.config.settings.mqtt == 'object') && (typeof obj.config.settings.mqtt.auth == 'object') && (typeof obj.config.settings.mqtt.auth.keyid == 'string') && (typeof obj.config.settings.mqtt.auth.key == 'string')) { obj.mqttbroker = require("./mqttbroker.js").CreateMQTTBroker(obj, obj.db, obj.args); } + // Create MQTT Broker to hook into webserver and mpsserver + if ((typeof obj.config.settings.mqtt == 'object') && (typeof obj.config.settings.mqtt.auth == 'object') && (typeof obj.config.settings.mqtt.auth.keyid == 'string') && (typeof obj.config.settings.mqtt.auth.key == 'string')) { obj.mqttbroker = require("./mqttbroker.js").CreateMQTTBroker(obj, obj.db, obj.args); } - // Start the web server and if needed, the redirection web server. - obj.webserver = require('./webserver.js').CreateWebServer(obj, obj.db, obj.args, obj.certificates, obj.StartEx5); - if (obj.redirserver != null) { obj.redirserver.hookMainWebServer(obj.certificates); } + // Start the web server and if needed, the redirection web server. + obj.webserver = require('./webserver.js').CreateWebServer(obj, obj.db, obj.args, obj.certificates, obj.StartEx5); + if (obj.redirserver != null) { obj.redirserver.hookMainWebServer(obj.certificates); } - // Update proxy certificates - if (obj.supportsProxyCertificatesRequest == true) { obj.updateProxyCertificates(true); } + // Update proxy certificates + if (obj.supportsProxyCertificatesRequest == true) { obj.updateProxyCertificates(true); } - // Setup the Intel AMT event handler - obj.amtEventHandler = require('./amtevents.js').CreateAmtEventsHandler(obj); + // Setup the Intel AMT event handler + obj.amtEventHandler = require('./amtevents.js').CreateAmtEventsHandler(obj); - // Setup the Intel AMT local network scanner - if (obj.args.wanonly != true) { - if (obj.args.amtscanner != false) { obj.amtScanner = require('./amtscanner.js').CreateAmtScanner(obj).start(); } - if (obj.args.meshscanner != false) { obj.meshScanner = require('./meshscanner.js').CreateMeshScanner(obj).start(); } - } + // Setup the Intel AMT local network scanner + if (obj.args.wanonly != true) { + if (obj.args.amtscanner != false) { obj.amtScanner = require('./amtscanner.js').CreateAmtScanner(obj).start(); } + if (obj.args.meshscanner != false) { obj.meshScanner = require('./meshscanner.js').CreateMeshScanner(obj).start(); } + } - // Setup and start the MPS server - obj.mpsserver = require('./mpsserver.js').CreateMpsServer(obj, obj.db, obj.args, obj.certificates); + // Setup and start the MPS server + obj.mpsserver = require('./mpsserver.js').CreateMpsServer(obj, obj.db, obj.args, obj.certificates); - // Setup the Intel AMT manager - if (obj.args.amtmanager !== false) { - obj.amtManager = require('./amtmanager.js').CreateAmtManager(obj); - } + // Setup the Intel AMT manager + if (obj.args.amtmanager !== false) { + obj.amtManager = require('./amtmanager.js').CreateAmtManager(obj); + } - // Setup and start the legacy swarm server - if ((obj.certificates.swarmserver != null) && (obj.args.swarmport != null) && (obj.args.swarmport !== 0)) { - obj.swarmserver = require('./swarmserver.js').CreateSwarmServer(obj, obj.db, obj.args, obj.certificates); - } + // Setup and start the legacy swarm server + if ((obj.certificates.swarmserver != null) && (obj.args.swarmport != null) && (obj.args.swarmport !== 0)) { + obj.swarmserver = require('./swarmserver.js').CreateSwarmServer(obj, obj.db, obj.args, obj.certificates); + } - // Setup the main email server - if (obj.config.sendgrid != null) { - // Sendgrid server - obj.mailserver = require('./meshmail.js').CreateMeshMail(obj); - obj.mailserver.verify(); - if (obj.args.lanonly == true) { addServerWarning("SendGrid server has limited use in LAN mode.", 17); } - } else if (obj.config.smtp != null) { - // SMTP server - obj.mailserver = require('./meshmail.js').CreateMeshMail(obj); - obj.mailserver.verify(); - if (obj.args.lanonly == true) { addServerWarning("SMTP server has limited use in LAN mode.", 18); } - } else if (obj.config.sendmail != null) { - // Sendmail server - obj.mailserver = require('./meshmail.js').CreateMeshMail(obj); - obj.mailserver.verify(); - if (obj.args.lanonly == true) { addServerWarning("SMTP server has limited use in LAN mode.", 18); } - } - - // Setup the email server for each domain - for (i in obj.config.domains) { - if (obj.config.domains[i].sendgrid != null) { + // Setup the main email server + if (obj.config.sendgrid != null) { // Sendgrid server - obj.config.domains[i].mailserver = require('./meshmail.js').CreateMeshMail(obj, obj.config.domains[i]); - obj.config.domains[i].mailserver.verify(); + obj.mailserver = require('./meshmail.js').CreateMeshMail(obj); + obj.mailserver.verify(); if (obj.args.lanonly == true) { addServerWarning("SendGrid server has limited use in LAN mode.", 17); } - } else if ((obj.config.domains[i].smtp != null) && (obj.config.domains[i].smtp.host != null) && (obj.config.domains[i].smtp.from != null)) { + } else if (obj.config.smtp != null) { // SMTP server - obj.config.domains[i].mailserver = require('./meshmail.js').CreateMeshMail(obj, obj.config.domains[i]); - obj.config.domains[i].mailserver.verify(); + obj.mailserver = require('./meshmail.js').CreateMeshMail(obj); + obj.mailserver.verify(); if (obj.args.lanonly == true) { addServerWarning("SMTP server has limited use in LAN mode.", 18); } - } else if (obj.config.domains[i].sendmail != null) { + } else if (obj.config.sendmail != null) { // Sendmail server - obj.config.domains[i].mailserver = require('./meshmail.js').CreateMeshMail(obj, obj.config.domains[i]); - obj.config.domains[i].mailserver.verify(); + obj.mailserver = require('./meshmail.js').CreateMeshMail(obj); + obj.mailserver.verify(); if (obj.args.lanonly == true) { addServerWarning("SMTP server has limited use in LAN mode.", 18); } - } else { - // Setup the parent mail server for this domain - if (obj.mailserver != null) { obj.config.domains[i].mailserver = obj.mailserver; } } - } - // Setup SMS gateway - if (config.sms != null) { - obj.smsserver = require('./meshsms.js').CreateMeshSMS(obj); - if ((obj.smsserver != null) && (obj.args.lanonly == true)) { addServerWarning("SMS gateway has limited use in LAN mode.", 19); } - } - - // Setup web based push notifications - if ((typeof config.settings.webpush == 'object') && (typeof config.settings.webpush.email == 'string')) { - obj.webpush = require('web-push'); - var vapidKeys = null; - try { vapidKeys = JSON.parse(obj.fs.readFileSync(obj.path.join(obj.datapath, 'vapid.json')).toString()); } catch (ex) { } - if ((vapidKeys == null) || (typeof vapidKeys.publicKey != 'string') || (typeof vapidKeys.privateKey != 'string')) { - console.log("Generating web push VAPID keys..."); - vapidKeys = obj.webpush.generateVAPIDKeys(); - obj.fs.writeFileSync(obj.path.join(obj.datapath, 'vapid.json'), JSON.stringify(vapidKeys)); - } - obj.webpush.vapidPublicKey = vapidKeys.publicKey; - obj.webpush.setVapidDetails('mailto:' + config.settings.webpush.email, vapidKeys.publicKey, vapidKeys.privateKey); - if (typeof config.settings.webpush.gcmapi == 'string') { webpush.setGCMAPIKey(config.settings.webpush.gcmapi); } - } - - // Setup Firebase - if ((config.firebase != null) && (typeof config.firebase.senderid == 'string') && (typeof config.firebase.serverkey == 'string')) { - obj.firebase = require('./firebase').CreateFirebase(obj, config.firebase.senderid, config.firebase.serverkey); - } else if ((typeof config.firebaserelay == 'object') && (typeof config.firebaserelay.url == 'string')) { - // Setup the push messaging relay - obj.firebase = require('./firebase').CreateFirebaseRelay(obj, config.firebaserelay.url, config.firebaserelay.key); - } else if (obj.config.settings.publicpushnotifications === true) { - // Setup the Firebase push messaging relay using https://meshcentral.com, this is the public push notification server. - obj.firebase = require('./firebase').CreateFirebaseRelay(obj, 'https://meshcentral.com/firebaserelay.aspx'); - } - - // Start periodic maintenance - obj.maintenanceTimer = setInterval(obj.maintenanceActions, 1000 * 60 * 60); // Run this every hour - - // Dispatch an event that the server is now running - obj.DispatchEvent(['*'], obj, { etype: 'server', action: 'started', msg: 'Server started' }); - - // Plugin hook. Need to run something at server startup? This is the place. - if (obj.pluginHandler) { obj.pluginHandler.callHook('server_startup'); } - - // Setup the login cookie encryption key - if ((obj.config) && (obj.config.settings) && (typeof obj.config.settings.logincookieencryptionkey == 'string')) { - // We have a string, hash it and use that as a key - try { obj.loginCookieEncryptionKey = Buffer.from(obj.config.settings.logincookieencryptionkey, 'hex'); } catch (ex) { } - if ((obj.loginCookieEncryptionKey == null) || (obj.loginCookieEncryptionKey.length != 80)) { addServerWarning("Invalid \"LoginCookieEncryptionKey\" in config.json.", 20); obj.loginCookieEncryptionKey = null; } - } - - // Login cookie encryption key not set, use one from the database - if (obj.loginCookieEncryptionKey == null) { - obj.db.Get('LoginCookieEncryptionKey', function (err, docs) { - if ((docs != null) && (docs.length > 0) && (docs[0].key != null) && (obj.args.logintokengen == null) && (docs[0].key.length >= 160)) { - obj.loginCookieEncryptionKey = Buffer.from(docs[0].key, 'hex'); + // Setup the email server for each domain + for (i in obj.config.domains) { + if (obj.config.domains[i].sendgrid != null) { + // Sendgrid server + obj.config.domains[i].mailserver = require('./meshmail.js').CreateMeshMail(obj, obj.config.domains[i]); + obj.config.domains[i].mailserver.verify(); + if (obj.args.lanonly == true) { addServerWarning("SendGrid server has limited use in LAN mode.", 17); } + } else if ((obj.config.domains[i].smtp != null) && (obj.config.domains[i].smtp.host != null) && (obj.config.domains[i].smtp.from != null)) { + // SMTP server + obj.config.domains[i].mailserver = require('./meshmail.js').CreateMeshMail(obj, obj.config.domains[i]); + obj.config.domains[i].mailserver.verify(); + if (obj.args.lanonly == true) { addServerWarning("SMTP server has limited use in LAN mode.", 18); } + } else if (obj.config.domains[i].sendmail != null) { + // Sendmail server + obj.config.domains[i].mailserver = require('./meshmail.js').CreateMeshMail(obj, obj.config.domains[i]); + obj.config.domains[i].mailserver.verify(); + if (obj.args.lanonly == true) { addServerWarning("SMTP server has limited use in LAN mode.", 18); } } else { - obj.loginCookieEncryptionKey = obj.generateCookieKey(); obj.db.Set({ _id: 'LoginCookieEncryptionKey', key: obj.loginCookieEncryptionKey.toString('hex'), time: Date.now() }); + // Setup the parent mail server for this domain + if (obj.mailserver != null) { obj.config.domains[i].mailserver = obj.mailserver; } + } + } + + // Setup SMS gateway + if (config.sms != null) { + obj.smsserver = require('./meshsms.js').CreateMeshSMS(obj); + if ((obj.smsserver != null) && (obj.args.lanonly == true)) { addServerWarning("SMS gateway has limited use in LAN mode.", 19); } + } + + // Setup web based push notifications + if ((typeof config.settings.webpush == 'object') && (typeof config.settings.webpush.email == 'string')) { + obj.webpush = require('web-push'); + var vapidKeys = null; + try { vapidKeys = JSON.parse(obj.fs.readFileSync(obj.path.join(obj.datapath, 'vapid.json')).toString()); } catch (ex) { } + if ((vapidKeys == null) || (typeof vapidKeys.publicKey != 'string') || (typeof vapidKeys.privateKey != 'string')) { + console.log("Generating web push VAPID keys..."); + vapidKeys = obj.webpush.generateVAPIDKeys(); + obj.fs.writeFileSync(obj.path.join(obj.datapath, 'vapid.json'), JSON.stringify(vapidKeys)); + } + obj.webpush.vapidPublicKey = vapidKeys.publicKey; + obj.webpush.setVapidDetails('mailto:' + config.settings.webpush.email, vapidKeys.publicKey, vapidKeys.privateKey); + if (typeof config.settings.webpush.gcmapi == 'string') { webpush.setGCMAPIKey(config.settings.webpush.gcmapi); } + } + + // Setup Firebase + if ((config.firebase != null) && (typeof config.firebase.senderid == 'string') && (typeof config.firebase.serverkey == 'string')) { + obj.firebase = require('./firebase').CreateFirebase(obj, config.firebase.senderid, config.firebase.serverkey); + } else if ((typeof config.firebaserelay == 'object') && (typeof config.firebaserelay.url == 'string')) { + // Setup the push messaging relay + obj.firebase = require('./firebase').CreateFirebaseRelay(obj, config.firebaserelay.url, config.firebaserelay.key); + } else if (obj.config.settings.publicpushnotifications === true) { + // Setup the Firebase push messaging relay using https://meshcentral.com, this is the public push notification server. + obj.firebase = require('./firebase').CreateFirebaseRelay(obj, 'https://meshcentral.com/firebaserelay.aspx'); + } + + // Start periodic maintenance + obj.maintenanceTimer = setInterval(obj.maintenanceActions, 1000 * 60 * 60); // Run this every hour + + // Dispatch an event that the server is now running + obj.DispatchEvent(['*'], obj, { etype: 'server', action: 'started', msg: 'Server started' }); + + // Plugin hook. Need to run something at server startup? This is the place. + if (obj.pluginHandler) { obj.pluginHandler.callHook('server_startup'); } + + // Setup the login cookie encryption key + if ((obj.config) && (obj.config.settings) && (typeof obj.config.settings.logincookieencryptionkey == 'string')) { + // We have a string, hash it and use that as a key + try { obj.loginCookieEncryptionKey = Buffer.from(obj.config.settings.logincookieencryptionkey, 'hex'); } catch (ex) { } + if ((obj.loginCookieEncryptionKey == null) || (obj.loginCookieEncryptionKey.length != 80)) { addServerWarning("Invalid \"LoginCookieEncryptionKey\" in config.json.", 20); obj.loginCookieEncryptionKey = null; } + } + + // Login cookie encryption key not set, use one from the database + if (obj.loginCookieEncryptionKey == null) { + obj.db.Get('LoginCookieEncryptionKey', function (err, docs) { + if ((docs != null) && (docs.length > 0) && (docs[0].key != null) && (obj.args.logintokengen == null) && (docs[0].key.length >= 160)) { + obj.loginCookieEncryptionKey = Buffer.from(docs[0].key, 'hex'); + } else { + obj.loginCookieEncryptionKey = obj.generateCookieKey(); obj.db.Set({ _id: 'LoginCookieEncryptionKey', key: obj.loginCookieEncryptionKey.toString('hex'), time: Date.now() }); + } + }); + } + + // Load the invitation link encryption key from the database + obj.db.Get('InvitationLinkEncryptionKey', function (err, docs) { + if ((docs != null) && (docs.length > 0) && (docs[0].key != null) && (docs[0].key.length >= 160)) { + obj.invitationLinkEncryptionKey = Buffer.from(docs[0].key, 'hex'); + } else { + obj.invitationLinkEncryptionKey = obj.generateCookieKey(); obj.db.Set({ _id: 'InvitationLinkEncryptionKey', key: obj.invitationLinkEncryptionKey.toString('hex'), time: Date.now() }); } }); - } - // Load the invitation link encryption key from the database - obj.db.Get('InvitationLinkEncryptionKey', function (err, docs) { - if ((docs != null) && (docs.length > 0) && (docs[0].key != null) && (docs[0].key.length >= 160)) { - obj.invitationLinkEncryptionKey = Buffer.from(docs[0].key, 'hex'); - } else { - obj.invitationLinkEncryptionKey = obj.generateCookieKey(); obj.db.Set({ _id: 'InvitationLinkEncryptionKey', key: obj.invitationLinkEncryptionKey.toString('hex'), time: Date.now() }); + // Setup Intel AMT hello server + if ((typeof config.settings.amtprovisioningserver == 'object') && (typeof config.settings.amtprovisioningserver.devicegroup == 'string') && (typeof config.settings.amtprovisioningserver.newmebxpassword == 'string') && (typeof config.settings.amtprovisioningserver.trustedfqdn == 'string') && (typeof config.settings.amtprovisioningserver.ip == 'string')) { + obj.amtProvisioningServer = require('./amtprovisioningserver').CreateAmtProvisioningServer(obj, config.settings.amtprovisioningserver); } - }); - // Setup Intel AMT hello server - if ((typeof config.settings.amtprovisioningserver == 'object') && (typeof config.settings.amtprovisioningserver.devicegroup == 'string') && (typeof config.settings.amtprovisioningserver.newmebxpassword == 'string') && (typeof config.settings.amtprovisioningserver.trustedfqdn == 'string') && (typeof config.settings.amtprovisioningserver.ip == 'string')) { - obj.amtProvisioningServer = require('./amtprovisioningserver').CreateAmtProvisioningServer(obj, config.settings.amtprovisioningserver); - } + // Start collecting server stats every 5 minutes + obj.trafficStats = obj.webserver.getTrafficStats(); + setInterval(function () { + obj.serverStatsCounter++; + var hours = 720; // Start with all events lasting 30 days. + if (((obj.serverStatsCounter) % 2) == 1) { hours = 3; } // Half of the event get removed after 3 hours. + else if ((Math.floor(obj.serverStatsCounter / 2) % 2) == 1) { hours = 8; } // Another half of the event get removed after 8 hours. + else if ((Math.floor(obj.serverStatsCounter / 4) % 2) == 1) { hours = 24; } // Another half of the event get removed after 24 hours. + else if ((Math.floor(obj.serverStatsCounter / 8) % 2) == 1) { hours = 48; } // Another half of the event get removed after 48 hours. + else if ((Math.floor(obj.serverStatsCounter / 16) % 2) == 1) { hours = 72; } // Another half of the event get removed after 72 hours. + const expire = new Date(); + expire.setTime(expire.getTime() + (60 * 60 * 1000 * hours)); - // Start collecting server stats every 5 minutes - obj.trafficStats = obj.webserver.getTrafficStats(); - setInterval(function () { - obj.serverStatsCounter++; - var hours = 720; // Start with all events lasting 30 days. - if (((obj.serverStatsCounter) % 2) == 1) { hours = 3; } // Half of the event get removed after 3 hours. - else if ((Math.floor(obj.serverStatsCounter / 2) % 2) == 1) { hours = 8; } // Another half of the event get removed after 8 hours. - else if ((Math.floor(obj.serverStatsCounter / 4) % 2) == 1) { hours = 24; } // Another half of the event get removed after 24 hours. - else if ((Math.floor(obj.serverStatsCounter / 8) % 2) == 1) { hours = 48; } // Another half of the event get removed after 48 hours. - else if ((Math.floor(obj.serverStatsCounter / 16) % 2) == 1) { hours = 72; } // Another half of the event get removed after 72 hours. - const expire = new Date(); - expire.setTime(expire.getTime() + (60 * 60 * 1000 * hours)); + // Get traffic data + var trafficStats = obj.webserver.getTrafficDelta(obj.trafficStats); + obj.trafficStats = trafficStats.current; - // Get traffic data - var trafficStats = obj.webserver.getTrafficDelta(obj.trafficStats); - obj.trafficStats = trafficStats.current; + var data = { + time: new Date(), + expire: expire, + mem: process.memoryUsage(), + conn: { + ca: Object.keys(obj.webserver.wsagents).length, + cu: Object.keys(obj.webserver.wssessions).length, + us: Object.keys(obj.webserver.wssessions2).length, + rs: obj.webserver.relaySessionCount + }, + traffic: trafficStats.delta + }; + try { data.cpu = require('os').loadavg(); } catch (ex) { } + if (obj.mpsserver != null) { + data.conn.am = 0; + for (var i in obj.mpsserver.ciraConnections) { data.conn.am += obj.mpsserver.ciraConnections[i].length; } + } + if (obj.firstStats === true) { delete obj.firstStats; data.first = true; } + if (obj.multiServer != null) { data.s = obj.multiServer.serverid; } + obj.db.SetServerStats(data); // Save the stats to the database + obj.DispatchEvent(['*'], obj, { action: 'servertimelinestats', data: data }); // Event the server stats + }, 300000); - var data = { - time: new Date(), - expire: expire, - mem: process.memoryUsage(), - conn: { - ca: Object.keys(obj.webserver.wsagents).length, - cu: Object.keys(obj.webserver.wssessions).length, - us: Object.keys(obj.webserver.wssessions2).length, - rs: obj.webserver.relaySessionCount - }, - traffic: trafficStats.delta - }; - try { data.cpu = require('os').loadavg(); } catch (ex) { } - if (obj.mpsserver != null) { - data.conn.am = 0; - for (var i in obj.mpsserver.ciraConnections) { data.conn.am += obj.mpsserver.ciraConnections[i].length; } + obj.debug('main', "Server started"); + if (obj.args.nousers == true) { obj.updateServerState('nousers', '1'); } + obj.updateServerState('state', "running"); + + // Setup auto-backup defaults + if (obj.config.settings.autobackup == null) { obj.config.settings.autobackup = { backupintervalhours: 24, keeplastdaysbackup: 10 }; } + else if (obj.config.settings.autobackup === false) { delete obj.config.settings.autobackup; } + + // Check that autobackup path is not within the "meshcentral-data" folder. + if ((typeof obj.config.settings.autobackup == 'object') && (typeof obj.config.settings.autobackup.backuppath == 'string') && (obj.path.normalize(obj.config.settings.autobackup.backuppath).startsWith(obj.path.normalize(obj.datapath)))) { + addServerWarning("Backup path can't be set within meshcentral-data folder, backup settings ignored.", 21); + delete obj.config.settings.autobackup; } - if (obj.firstStats === true) { delete obj.firstStats; data.first = true; } - if (obj.multiServer != null) { data.s = obj.multiServer.serverid; } - obj.db.SetServerStats(data); // Save the stats to the database - obj.DispatchEvent(['*'], obj, { action: 'servertimelinestats', data: data }); // Event the server stats - }, 300000); - obj.debug('main', "Server started"); - if (obj.args.nousers == true) { obj.updateServerState('nousers', '1'); } - obj.updateServerState('state', "running"); + // Load Intel AMT passwords from the "amtactivation.log" file + obj.loadAmtActivationLogPasswords(function (amtPasswords) { + obj.amtPasswords = amtPasswords; + }); - // Setup auto-backup defaults - if (obj.config.settings.autobackup == null) { obj.config.settings.autobackup = { backupintervalhours: 24, keeplastdaysbackup: 10 }; } - else if (obj.config.settings.autobackup === false) { delete obj.config.settings.autobackup; } - - // Check that autobackup path is not within the "meshcentral-data" folder. - if ((typeof obj.config.settings.autobackup == 'object') && (typeof obj.config.settings.autobackup.backuppath == 'string') && (obj.path.normalize(obj.config.settings.autobackup.backuppath).startsWith(obj.path.normalize(obj.datapath)))) { - addServerWarning("Backup path can't be set within meshcentral-data folder, backup settings ignored.", 21); - delete obj.config.settings.autobackup; - } - - // Load Intel AMT passwords from the "amtactivation.log" file - obj.loadAmtActivationLogPasswords(function (amtPasswords) { - obj.amtPasswords = amtPasswords; - }); - - // Setup users that can see all device groups - if (typeof obj.config.settings.managealldevicegroups == 'string') { obj.config.settings.managealldevicegroups = obj.config.settings.managealldevicegroups.split(','); } - else if (Array.isArray(obj.config.settings.managealldevicegroups) == false) { obj.config.settings.managealldevicegroups = []; } - for (i in obj.config.domains) { - if (Array.isArray(obj.config.domains[i].managealldevicegroups)) { - for (var j in obj.config.domains[i].managealldevicegroups) { - if (typeof obj.config.domains[i].managealldevicegroups[j] == 'string') { - const u = 'user/' + i + '/' + obj.config.domains[i].managealldevicegroups[j]; - if (obj.config.settings.managealldevicegroups.indexOf(u) == -1) { obj.config.settings.managealldevicegroups.push(u); } + // Setup users that can see all device groups + if (typeof obj.config.settings.managealldevicegroups == 'string') { obj.config.settings.managealldevicegroups = obj.config.settings.managealldevicegroups.split(','); } + else if (Array.isArray(obj.config.settings.managealldevicegroups) == false) { obj.config.settings.managealldevicegroups = []; } + for (i in obj.config.domains) { + if (Array.isArray(obj.config.domains[i].managealldevicegroups)) { + for (var j in obj.config.domains[i].managealldevicegroups) { + if (typeof obj.config.domains[i].managealldevicegroups[j] == 'string') { + const u = 'user/' + i + '/' + obj.config.domains[i].managealldevicegroups[j]; + if (obj.config.settings.managealldevicegroups.indexOf(u) == -1) { obj.config.settings.managealldevicegroups.push(u); } + } } } } - } - obj.config.settings.managealldevicegroups.sort(); + obj.config.settings.managealldevicegroups.sort(); - // Start watchdog timer if needed - // This is used to monitor if NodeJS is servicing IO correctly or getting held up a lot. Add this line to the settings section of config.json - // "watchDog": { "interval": 100, "timeout": 150 } - // This will check every 100ms, if the timer is more than 150ms late, it will warn. - if ((typeof config.settings.watchdog == 'object') && (typeof config.settings.watchdog.interval == 'number') && (typeof config.settings.watchdog.timeout == 'number') && (config.settings.watchdog.interval >= 50) && (config.settings.watchdog.timeout >= 50)) { - obj.watchdogtime = Date.now(); - obj.watchdogmax = 0; - obj.watchdogmaxtime = null; - obj.watchdogtable = []; - obj.watchdog = setInterval(function () { - const now = Date.now(), delta = now - obj.watchdogtime - config.settings.watchdog.interval; - if (delta > obj.watchdogmax) { obj.watchdogmax = delta; obj.watchdogmaxtime = new Date().toLocaleString(); } - if (delta > config.settings.watchdog.timeout) { - const msg = obj.common.format("Watchdog timer timeout, {0}ms.", delta); - obj.watchdogtable.push(new Date().toLocaleString() + ', ' + delta + 'ms'); - while (obj.watchdogtable.length > 10) { obj.watchdogtable.shift(); } - obj.debug('main', msg); - try { - var errlogpath = null; - if (typeof obj.args.mesherrorlogpath == 'string') { errlogpath = obj.path.join(obj.args.mesherrorlogpath, 'mesherrors.txt'); } else { errlogpath = obj.getConfigFilePath('mesherrors.txt'); } - obj.fs.appendFileSync(errlogpath, new Date().toLocaleString() + ': ' + msg + '\r\n'); - } catch (ex) { console.log('ERROR: Unable to write to mesherrors.txt.'); } - } - obj.watchdogtime = now; - }, config.settings.watchdog.interval); - obj.debug('main', "Started watchdog timer."); - } + // Start watchdog timer if needed + // This is used to monitor if NodeJS is servicing IO correctly or getting held up a lot. Add this line to the settings section of config.json + // "watchDog": { "interval": 100, "timeout": 150 } + // This will check every 100ms, if the timer is more than 150ms late, it will warn. + if ((typeof config.settings.watchdog == 'object') && (typeof config.settings.watchdog.interval == 'number') && (typeof config.settings.watchdog.timeout == 'number') && (config.settings.watchdog.interval >= 50) && (config.settings.watchdog.timeout >= 50)) { + obj.watchdogtime = Date.now(); + obj.watchdogmax = 0; + obj.watchdogmaxtime = null; + obj.watchdogtable = []; + obj.watchdog = setInterval(function () { + const now = Date.now(), delta = now - obj.watchdogtime - config.settings.watchdog.interval; + if (delta > obj.watchdogmax) { obj.watchdogmax = delta; obj.watchdogmaxtime = new Date().toLocaleString(); } + if (delta > config.settings.watchdog.timeout) { + const msg = obj.common.format("Watchdog timer timeout, {0}ms.", delta); + obj.watchdogtable.push(new Date().toLocaleString() + ', ' + delta + 'ms'); + while (obj.watchdogtable.length > 10) { obj.watchdogtable.shift(); } + obj.debug('main', msg); + try { + var errlogpath = null; + if (typeof obj.args.mesherrorlogpath == 'string') { errlogpath = obj.path.join(obj.args.mesherrorlogpath, 'mesherrors.txt'); } else { errlogpath = obj.getConfigFilePath('mesherrors.txt'); } + obj.fs.appendFileSync(errlogpath, new Date().toLocaleString() + ': ' + msg + '\r\n'); + } catch (ex) { console.log('ERROR: Unable to write to mesherrors.txt.'); } + } + obj.watchdogtime = now; + }, config.settings.watchdog.interval); + obj.debug('main', "Started watchdog timer."); + } + }); }); }); }; @@ -2841,24 +2843,29 @@ function CreateMeshCentralServer(config, args) { 10006: { id: 10006, localname: 'MeshCentralAssistant.exe', rname: 'MeshCentralAssistant.exe', desc: 'MeshCentral Assistant for Windows', update: false, amt: false, platform: 'win32' } // MeshCentral Assistant }; - // Update the list of available mesh agents - obj.updateMeshAgentsTable = function (domain, func) { + // Sign windows agents + obj.signMeshAgents = function (domain, func) { // Setup the domain is specified var objx = domain, suffix = ''; if (domain.id == '') { objx = obj; } else { suffix = '-' + domain.id; objx.meshAgentBinaries = {}; } // Check if a custom agent signing certificate is available - var agentSignCertInfo = require('./authenticode.js').loadCertificates([ obj.path.join(obj.datapath, 'agentsigningcert.pem') ]); + var agentSignCertInfo = require('./authenticode.js').loadCertificates([obj.path.join(obj.datapath, 'agentsigningcert.pem')]); + if (agentSignCertInfo == null) { func(); return; } // No code signing certificate, nothing to do. // If not using a custom signing cert, get agent code signature certificate ready with the full cert chain if ((agentSignCertInfo == null) && (obj.certificates.codesign != null)) { agentSignCertInfo = { cert: obj.certificateOperations.forge.pki.certificateFromPem(obj.certificates.codesign.cert), key: obj.certificateOperations.forge.pki.privateKeyFromPem(obj.certificates.codesign.key), - extraCerts: [obj.certificateOperations.forge.pki.certificateFromPem(obj.certificates.root.cert) ] + extraCerts: [obj.certificateOperations.forge.pki.certificateFromPem(obj.certificates.root.cert)] } } + // Setup the domain is specified + var objx = domain, suffix = ''; + if (domain.id == '') { objx = obj; } else { suffix = '-' + domain.id; objx.meshAgentBinaries = {}; } + // Generate the agent signature description and URL var serverSignedAgentsPath, signDesc, signUrl; if (agentSignCertInfo != null) { @@ -2877,12 +2884,17 @@ function CreateMeshCentralServer(config, args) { if (obj.config.settings.agentsignlock) { signUrl += '?ServerID=' + obj.certificateOperations.getPublicKeyHash(obj.certificates.agent.cert).toUpperCase(); } } - // Load agent information file. This includes the data & time of the agent. - const agentInfo = []; - try { agentInfo = JSON.parse(obj.fs.readFileSync(obj.path.join(__dirname, 'agents', 'hashagents.json'), 'utf8')); } catch (ex) { } + // Setup the time server + var timeStampUrl = 'http://timestamp.comodoca.com/authenticode'; + if (args.agenttimestampserver === false) { timeStampUrl = null; } + else if (typeof args.agenttimestampserver == 'string') { timeStampUrl = args.agenttimestampserver; } + + // Setup the pending operations counter + var pendingOperations = 1; - var archcount = 0; for (var archid in obj.meshAgentsArchitectureNumbers) { + if (obj.meshAgentsArchitectureNumbers[archid].codesign !== true) continue; + var agentpath; if (domain.id == '') { // Load all agents when processing the default domain @@ -2895,46 +2907,83 @@ function CreateMeshCentralServer(config, args) { if (obj.fs.existsSync(agentpath)) { delete obj.meshAgentsArchitectureNumbers[archid].codesign; } else { continue; } // If the agent is not present in "meshcentral-data/agents" skip. } + // Open the original agent with authenticode + var signeedagentpath = obj.path.join(serverSignedAgentsPath, obj.meshAgentsArchitectureNumbers[archid].localname); + const originalAgent = require('./authenticode.js').createAuthenticodeHandler(agentpath); + if (originalAgent != null) { + // Check if the agent is already signed correctly + const destinationAgent = require('./authenticode.js').createAuthenticodeHandler(signeedagentpath); + var destinationAgentOk = ( + (destinationAgent != null) && + (destinationAgent.fileHashSigned != null) && + (Buffer.compare(destinationAgent.fileHashSigned, destinationAgent.fileHashActual) == 0) && + ((Buffer.compare(destinationAgent.fileHashSigned, originalAgent.getHash(destinationAgent.fileHashAlgo))) == 0) && + (destinationAgent.signingAttribs.indexOf(signUrl) >= 0) && + (destinationAgent.signingAttribs.indexOf(signDesc) >= 0) + ); + if (destinationAgent != null) { destinationAgent.close(); } + if (destinationAgentOk == false) { + // If not signed correctly, sign it. First, create the server signed agent folder if needed + try { obj.fs.mkdirSync(serverSignedAgentsPath); } catch (ex) { } + const xagentSignedFunc = function agentSignedFunc(err, size) { + if (err == null) { + // Agent was signed succesfuly + console.log(obj.common.format('Code signed agent {0}.', agentSignedFunc.objx.meshAgentsArchitectureNumbers[agentSignedFunc.archid].localname)); + } else { + console.log(obj.common.format('Failed to sign agent {0}: ' + err, agentSignedFunc.objx.meshAgentsArchitectureNumbers[agentSignedFunc.archid].localname)); + } + if (--pendingOperations === 0) { agentSignedFunc.func(); } + } + pendingOperations++; + xagentSignedFunc.func = func; + xagentSignedFunc.objx = objx; + xagentSignedFunc.archid = archid; + xagentSignedFunc.signeedagentpath = signeedagentpath; + originalAgent.sign(agentSignCertInfo, { out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl }, xagentSignedFunc); + } else { + // Signed agent is already ok, use it. + originalAgent.close(); + } + } + } + + if (--pendingOperations === 0) { func(); } + } + + // Update the list of available mesh agents + obj.updateMeshAgentsTable = function (domain, func) { + // Check if a custom agent signing certificate is available + var agentSignCertInfo = require('./authenticode.js').loadCertificates([obj.path.join(obj.datapath, 'agentsigningcert.pem')]); + + // Setup the domain is specified + var objx = domain, suffix = ''; + if (domain.id == '') { objx = obj; } else { suffix = '-' + domain.id; objx.meshAgentBinaries = {}; } + + // Load agent information file. This includes the data & time of the agent. + const agentInfo = []; + try { agentInfo = JSON.parse(obj.fs.readFileSync(obj.path.join(__dirname, 'agents', 'hashagents.json'), 'utf8')); } catch (ex) { } + + var archcount = 0; + for (var archid in obj.meshAgentsArchitectureNumbers) { + var agentpath; + if (domain.id == '') { + // Load all agents when processing the default domain + agentpath = obj.path.join(__dirname, 'agents' + suffix, obj.meshAgentsArchitectureNumbers[archid].localname); + const agentpath2 = obj.path.join(obj.datapath, 'signedagents' + suffix, obj.meshAgentsArchitectureNumbers[archid].localname); + if (obj.fs.existsSync(agentpath2)) { agentpath = agentpath2; } // If the agent is present in "meshcentral-data/signedagents", use that one instead. + const agentpath3 = obj.path.join(obj.datapath, 'agents' + suffix, obj.meshAgentsArchitectureNumbers[archid].localname); + if (obj.fs.existsSync(agentpath3)) { agentpath = agentpath3; } // If the agent is present in "meshcentral-data/agents", use that one instead. + } else { + // When processing an extra domain, only load agents that are specific to that domain + var agentpath = obj.path.join(obj.datapath, 'agents' + suffix, obj.meshAgentsArchitectureNumbers[archid].localname); + if (obj.fs.existsSync(agentpath)) { delete obj.meshAgentsArchitectureNumbers[archid].codesign; } else { continue; } // If the agent is not present in "meshcentral-data/agents" skip. + } + // Fetch agent binary information var stats = null; try { stats = obj.fs.statSync(agentpath); } catch (ex) { } if ((stats == null)) continue; // If this agent does not exist, skip it. - // Check if we need to sign this agent, if so, check if it's already been signed - if ((obj.meshAgentsArchitectureNumbers[archid].codesign === true) && (agentSignCertInfo != null)) { - // Open the original agent with authenticode - var signeedagentpath = obj.path.join(serverSignedAgentsPath, obj.meshAgentsArchitectureNumbers[archid].localname); - const originalAgent = require('./authenticode.js').createAuthenticodeHandler(agentpath); - if (originalAgent != null) { - // Check if the agent is already signed correctly - const destinationAgent = require('./authenticode.js').createAuthenticodeHandler(signeedagentpath); - var destinationAgentOk = ( - (destinationAgent != null) && - (destinationAgent.fileHashSigned != null) && - (Buffer.compare(destinationAgent.fileHashSigned, destinationAgent.fileHashActual) == 0) && - ((Buffer.compare(destinationAgent.fileHashSigned, originalAgent.getHash(destinationAgent.fileHashAlgo))) == 0) && - (destinationAgent.signingAttribs.indexOf(signUrl) >= 0) && - (destinationAgent.signingAttribs.indexOf(signDesc) >= 0) - ); - if (destinationAgent != null) { destinationAgent.close(); } - if (destinationAgentOk == false) { - // If not signed correctly, sign it. First, create the server signed agent folder if needed - try { obj.fs.mkdirSync(serverSignedAgentsPath); } catch (ex) { } - if (originalAgent.sign(agentSignCertInfo, { out: signeedagentpath, desc: signDesc, url: signUrl }) == true) { - // Agent was signed succesfuly - agentpath = signeedagentpath; - console.log(obj.common.format('Code signed agent {0}.', obj.meshAgentsArchitectureNumbers[archid].localname)); - } else { - console.log(obj.common.format('Failed to sign agent {0}.', obj.meshAgentsArchitectureNumbers[archid].localname)); - } - } else { - // Signed agent is already ok, use it. - agentpath = signeedagentpath; - } - originalAgent.close(); - } - } - // Setup agent information archcount++; objx.meshAgentBinaries[archid] = Object.assign({}, obj.meshAgentsArchitectureNumbers[archid]); diff --git a/sample-config-advanced.json b/sample-config-advanced.json index c2ff425d..5cab7390 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -38,6 +38,7 @@ "_agentCoreDump": true, "_agentCoreDumpUsers": "user1,user2", "_agentSignLock": true, + "_agentTimeStampServer": "http://timestamp.digicert.com", "_ignoreAgentHashCheck": true, "_exactPorts": true, "_allowLoginToken": true, From bf128a988c644f43fc2c808b6202f191f3dd1544 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 08:38:56 -0700 Subject: [PATCH 020/105] Improved authenticode.js error handling for #4134 --- authenticode.js | 148 +++++++++++++++++++++++++++--------------------- 1 file changed, 83 insertions(+), 65 deletions(-) diff --git a/authenticode.js b/authenticode.js index 9757024d..89b322c6 100644 --- a/authenticode.js +++ b/authenticode.js @@ -288,77 +288,95 @@ function createAuthenticodeHandler(path) { var derlen = forge.asn1.getBerValueLength(forge.util.createBuffer(pkcs7raw.slice(1, 5))) + 4; if (derlen != pkcs7raw.length) { pkcs7raw = pkcs7raw.slice(0, derlen); } - // Decode the signature block - var pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(pkcs7raw)); + // Decode the signature block and check that it's valid + var pkcs7der = null, valid = false; + try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(pkcs7raw)); } catch (ex) { } + try { valid = ((pkcs7der != null) && (forge.asn1.derToOid(pkcs7der.value[1].value[0].value[2].value[0].value) == "1.3.6.1.4.1.311.2.1.4")); } catch (ex) { } + if (pkcs7der == null) { + // Can't decode the signature + obj.header.sigpos = 0; + obj.header.siglen = 0; + obj.header.signed = false; + } else { + // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future + // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" + pkcs7der.value[1].value[0].value[2].value[0].value = forge.asn1.oidToDer(forge.pki.oids.data).data; - // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future - // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" - pkcs7der.value[1].value[0].value[2].value[0].value = forge.asn1.oidToDer(forge.pki.oids.data).data; + // Decode the PKCS7 message + var pkcs7 = null, pkcs7content = null; + try { + pkcs7 = p7.messageFromAsn1(pkcs7der); + pkcs7content = pkcs7.rawCapture.content.value[0]; + } catch (ex) { } - // Decode the PKCS7 message - var pkcs7 = p7.messageFromAsn1(pkcs7der); - var pkcs7content = pkcs7.rawCapture.content.value[0]; + if ((pkcs7 == null) || (pkcs7content == null)) { + // Can't decode the signature + obj.header.sigpos = 0; + obj.header.siglen = 0; + obj.header.signed = false; + } else { + // Verify a PKCS#7 signature + // Verify is not currently supported in node-forge, but if implemented in the future, this code could work. + //var caStore = forge.pki.createCaStore(); + //for (var i in obj.certificates) { caStore.addCertificate(obj.certificates[i]); } + // Return is true if all signatures are valid and chain up to a provided CA + //if (!pkcs7.verify(caStore)) { throw ('Executable file has an invalid signature.'); } - // Verify a PKCS#7 signature - // Verify is not currently supported in node-forge, but if implemented in the future, this code could work. - //var caStore = forge.pki.createCaStore(); - //for (var i in obj.certificates) { caStore.addCertificate(obj.certificates[i]); } - // Return is true if all signatures are valid and chain up to a provided CA - //if (!pkcs7.verify(caStore)) { throw ('Executable file has an invalid signature.'); } - - // Get the signing attributes - obj.signingAttribs = []; - try { - for (var i in pkcs7.rawCapture.authenticatedAttributes) { - if ( - (pkcs7.rawCapture.authenticatedAttributes[i].value != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[0] != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[0].value != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[1] != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0] != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value != null) && - (forge.asn1.derToOid(pkcs7.rawCapture.authenticatedAttributes[i].value[0].value) == obj.Oids.SPC_SP_OPUS_INFO_OBJID)) { - for (var j in pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value) { + // Get the signing attributes + obj.signingAttribs = []; + try { + for (var i in pkcs7.rawCapture.authenticatedAttributes) { if ( - (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j] != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value[0] != null) && - (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value[0].value != null) - ) { - var v = pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value[0].value; - if (v.startsWith('http://') || v.startsWith('https://') || ((v.length % 2) == 1)) { obj.signingAttribs.push(v); } else { - var r = ''; // This string value is in UCS2 format, convert it to a normal string. - for (var k = 0; k < v.length; k += 2) { r += String.fromCharCode((v.charCodeAt(k + 8) << 8) + v.charCodeAt(k + 1)); } - obj.signingAttribs.push(r); + (pkcs7.rawCapture.authenticatedAttributes[i].value != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[0] != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[0].value != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[1] != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0] != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value != null) && + (forge.asn1.derToOid(pkcs7.rawCapture.authenticatedAttributes[i].value[0].value) == obj.Oids.SPC_SP_OPUS_INFO_OBJID)) { + for (var j in pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value) { + if ( + (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j] != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value[0] != null) && + (pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value[0].value != null) + ) { + var v = pkcs7.rawCapture.authenticatedAttributes[i].value[1].value[0].value[j].value[0].value; + if (v.startsWith('http://') || v.startsWith('https://') || ((v.length % 2) == 1)) { obj.signingAttribs.push(v); } else { + var r = ''; // This string value is in UCS2 format, convert it to a normal string. + for (var k = 0; k < v.length; k += 2) { r += String.fromCharCode((v.charCodeAt(k + 8) << 8) + v.charCodeAt(k + 1)); } + obj.signingAttribs.push(r); + } + } } } } + } catch (ex) { } + + // Set the certificate chain + obj.certificates = pkcs7.certificates; + + // Set the signature + obj.signature = Buffer.from(pkcs7.rawCapture.signature, 'binary'); + + // Get the file hashing algorithm + var hashAlgoOid = forge.asn1.derToOid(pkcs7content.value[1].value[0].value[0].value); + switch (hashAlgoOid) { + case forge.pki.oids.sha256: { obj.fileHashAlgo = 'sha256'; break; } + case forge.pki.oids.sha384: { obj.fileHashAlgo = 'sha384'; break; } + case forge.pki.oids.sha512: { obj.fileHashAlgo = 'sha512'; break; } + case forge.pki.oids.sha224: { obj.fileHashAlgo = 'sha224'; break; } + case forge.pki.oids.md5: { obj.fileHashAlgo = 'md5'; break; } } + + // Get the signed file hash + obj.fileHashSigned = Buffer.from(pkcs7content.value[1].value[1].value, 'binary') + + // Compute the actual file hash + if (obj.fileHashAlgo != null) { obj.fileHashActual = obj.getHash(obj.fileHashAlgo); } } - } catch (ex) { } - - // Set the certificate chain - obj.certificates = pkcs7.certificates; - - // Set the signature - obj.signature = Buffer.from(pkcs7.rawCapture.signature, 'binary'); - - // Get the file hashing algorithm - var hashAlgoOid = forge.asn1.derToOid(pkcs7content.value[1].value[0].value[0].value); - switch (hashAlgoOid) { - case forge.pki.oids.sha256: { obj.fileHashAlgo = 'sha256'; break; } - case forge.pki.oids.sha384: { obj.fileHashAlgo = 'sha384'; break; } - case forge.pki.oids.sha512: { obj.fileHashAlgo = 'sha512'; break; } - case forge.pki.oids.sha224: { obj.fileHashAlgo = 'sha224'; break; } - case forge.pki.oids.md5: { obj.fileHashAlgo = 'md5'; break; } } - - // Get the signed file hash - obj.fileHashSigned = Buffer.from(pkcs7content.value[1].value[1].value, 'binary') - - // Compute the actual file hash - if (obj.fileHashAlgo != null) { obj.fileHashActual = obj.getHash(obj.fileHashAlgo); } } return true; } @@ -486,7 +504,7 @@ function createAuthenticodeHandler(path) { fs.closeSync(output); // Indicate we are done - func(null, written); + func(null); }); }); @@ -1372,7 +1390,7 @@ function createAuthenticodeHandler(path) { // Close the file fs.closeSync(output); - func(null, written); + func(null); } // Save an executable without the signature @@ -1635,7 +1653,7 @@ function createAuthenticodeHandler(path) { fs.closeSync(output); // Indicate success - func(null, written); + func(null); } function writeExecutableEx(output, p7signature, written, func) { @@ -1669,7 +1687,7 @@ function createAuthenticodeHandler(path) { fs.closeSync(output); // Indicate success - func(null, written); + func(null); } // Return null if we could not open the file From 4e77a290722b58bc74c2c1d0f21d0c20849d4e52 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 10:26:08 -0700 Subject: [PATCH 021/105] Fixes to French translation. --- agents/MeshCmd-signed.exe | Bin 4491680 -> 4491784 bytes agents/MeshCmd64-signed.exe | Bin 4104608 -> 4104712 bytes agents/hashagents.json | 134 ------------------------------------ authenticode.js | 5 ++ translate/translate.json | 6 +- 5 files changed, 8 insertions(+), 137 deletions(-) diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index ad7eb6a281f826886e5c7c5a59b0882c82db6ece..2a60ffb159a6755f0a683552596379f494088451 100644 GIT binary patch delta 3058 zcmZYA2T)U47XaWS^d`Mm5ipUKP=o|x1fmECtO_Dc3?z_12$+N>gv7ui#X^&a6e+HV ziU_CaE5Jt{%D#1_%IxfDj-IhybF17$6Qv0Fr0RX`0;2Q&apKnu_Ybby_JF0c#G1M~p{U^f5<5WpV55HJFa0TaL!KmsVh z3@`^Q083ymV8yS8TDuvXgTk!=G#?7bJjUrq6X-fYkx_>U45ky2O2Yd3+x#bVEGm3E z!g~^e(UYZO<3T0^STV1d8zeIn5~I`#lhg z{C+1I1sR3g1V_-}+dG8lP-r@#haxB86+nf6O=^wBUnNI4VZ&95Z|{a zVS|kSb5h^HzfKyACH@^|Gr@7U!{Jys3W+p^!%3#Wh&^D4K-m0U`Bw&(_|JU1XP^Wd zWJ3vt@1&YABbWp#BL43IHk?JGGDu*$-8d6~3=c=J3=IQW+bsyg(nv8nk@Sdg3WEd> zMn}143hvliGhu@`DYx8rLYh-Vc)}WD#C_NVn)$v@UU|k6bxVk z*aBE!AAke)19pHt;K0wI;C~ZEjy%YNp5S;mtMXSqHRH1mtH>xrAP^V~g5)X-3XAPY zIh3*@1r>pnaFv#kT%~y)kB&cTv0V7f%y-zXwQk|26(+j<2fY(E&htC0ZAAT?yzwzr zI*8Oh{)E1aW@$ysmuF69J|$e4A-*O9|GSu$@E0UkaJWPO28F?7A(?3Q)jns8{6bS! zfT(q)15cBM&%v1?Em5G=+n0~Bl({+58ih17w?tc_eUPCj38a{?fTy6aJj~G^C6AQd zo`}keyAo(YWDOs14S1Ye2GnYQ+gNcATuo*t^ zYkCPKmivWQbF0NmlN#j5T@-~+hNkOSoQ{8}Uxo7(zpiacWtk9;ygcu1weN=iyp}(w zVNm^Pc0i(f)<^^5%S;E+o>&9oS*) z=Os9*bJYOEy-B<=sjcaXkw`Q&^1yKGXM4)@mO+;QURw!17RqcWJh0k;>B;TYZaPo8 zwXxo6J0(?U9Xznk(kk#ipXFok<@tk>lnayoN68-4x&h4M8&TbR;{)c^RHGe&3B^f` z%EuVW+OA={Uw$0p`FgJG5eOgXW(N-S6l$$cN3teaF615`1fjpgPyhZ;yUFDzHkOUU zUIY+3!r+oacVg{^v;UNCo4q|^9HHiMglc~Og7>M9BU8${<#Bd_zplqGW)IyRwRM;F z>7tEjKhmw{TgzOvsF2v&)I528@ed_yL)@L{T)QHo<|=0cGPd~@^Q!gaLkioKoM2xe zmyH-;epR?JKgxT;!CQ$tgZD{ON6-Oj$Ag~5TZ@Sb3x}MQgbKoV)@SiA*^Hq%GQG3q z!TwUz!#aU-V}*FVk9EF^tec-Us(Q1f60mzqC~p_9B8To!UNgP)aEa2kZ1(1Mx3``p=1~p%b7$(PqX%4#YFBJ*eCnUBy-AA-ze1;f zSrLIR_Se3gQEgT0+RtvX zD@qS3WJz(?n_Tnfo=>u=dpBbo@*63}2?W!*@_SC3zReW9tgW1NFG{w{TOnL{3cbJV zC)5W;7#~;4%9~Da=RLEyb3vo0hZx;nIv8$7JADZCIR8z5l z%22iSgv->PbL`WSh~+rA@AvNM5*Ljbo~|kb5ZPB5>!Jzc|Ay?e(7$h9+Sb&; zk2&5dH#49DlQfyUlvm7kOVQEEyZFME$h(JpHy8sj_1QF!IAdwf`Mf9i#>ra0U z=qcWsfxn@rEocl%mericnzOwsIQHxp#VSy^a?|WgoUnZd=S(U+L|b%t52miO1Uq8Ehlxk|>_UYH7n^wN3T0ex*&U+yrt*$yVa|H2u=> z7KP29q=RjZNAunNY*q(cM;TTUO?!({-_7PR5)R8#W*wj^!R&bwa%j`j&ntx-7an%(kO7tlyg*- zh(f2nPN2w*IW-*({4|tZ*7`ov&tCOsk;Rf(YH>q9XIEIXT=8He#}9ERZL>N@y>FMs u<=*<^T071WlgfP)2E9ttzZI delta 2888 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 diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe index 84211fdb8e78d24a6c239b783fc131048836933f..ca955cca7591fb6dfedbed8e181dd321f7934717 100644 GIT binary patch delta 3030 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 RE0LrYVZGNv5%{-k#@{KL`uP9= diff --git a/agents/hashagents.json b/agents/hashagents.json index 069fd7bc..e69de29b 100644 --- a/agents/hashagents.json +++ b/agents/hashagents.json @@ -1,134 +0,0 @@ -{ - "3": { - "filename": "MeshService-signed.exe", - "hash": "C0E5DB22DE5DED510C48141D7CFE4807F98B8205D680F5FC8A5D15950F17A1465E0953B7BFA7FAEED72019E765E1C8E1", - "size": 3686192, - "mtime": "2022-05-03T20:43:54Z" - }, - "4": { - "filename": "MeshService64-signed.exe", - "hash": "47A927806EDB6DFAC2C79467719FADA0F3625010D551C6D0EA6EA7DB99F088C088E70F562416FC1809B014913CFEA7E0", - "size": 3299120, - "mtime": "2022-05-03T20:43:56Z" - }, - "5": { - "filename": "meshagent_x86", - "hash": "E984791A6FB96E06191AEA1D7B3066AB8B2170DC7B8A64D7C9A605CDC79B463541D994587E85E3FD4644359329344734", - "size": 3650016, - "mtime": "2022-04-04T17:22:17Z" - }, - "6": { - "filename": "meshagent_x86-64", - "hash": "F6A48178D7BCE798CDF36AC8F49D9650674E38E266DB396A84657EE8FD81BF85FA998456245F2AFE4A20FDD08CD73D2E", - "size": 3724624, - "mtime": "2022-04-04T17:22:25Z" - }, - "7": { - "filename": "meshagent_mips", - "hash": "2D913C118114219CF127D9415174645A3F11464A4B13D07A702AFC2A836381C52C4A2854403215DAFF4582C058E8B824", - "size": 4522304, - "mtime": "2022-04-04T17:22:32Z" - }, - "9": { - "filename": "meshagent_arm", - "hash": "AD1C9D2A1E468AEB26FD6443581C3CE3F5F8D0A3779BA0EA5BA06C20B5094B095B5F0D0F104B2F26053877E5D005FBAB", - "size": 3132180, - "mtime": "2022-04-04T17:22:41Z" - }, - "13": { - "filename": "meshagent_pogo", - "hash": "F9E19D72922732BC4C9F84F90CAB380E6A3851B8137A69AB648E1B145BA4F257B5C2C47BBE36CBE62E364328854DD844", - "size": 3140884, - "mtime": "2022-04-04T17:22:51Z" - }, - "15": { - "filename": "meshagent_poky", - "hash": "DFBF910AC01FE7D8BD2E6649908E0BBE0C553C12ACADB4C73C32BC65BCDCCDF336C39BA47A08C6659F9CB8E475C3677F", - "size": 3776024, - "mtime": "2022-04-04T17:23:00Z" - }, - "16": { - "filename": "meshagent_osx-x86-64", - "hash": "77A87BCAE3534061CE15060C4F8971074B7AEBC88957CC9FF50BF8F6B234E3AFAE48DCB9A44681A24393F20191BB3DA1", - "size": 4391904, - "mtime": "2022-03-25T23:51:40Z" - }, - "18": { - "filename": "meshagent_poky64", - "hash": "0DDF6A2CABC3B1D40CBE9CA4A6EB2103308F228D5332F64E3C9B01A54BC968B0120D2A50B71111D70682435A07577ABD", - "size": 3478872, - "mtime": "2022-04-04T17:23:11Z" - }, - "19": { - "filename": "meshagent_x86_nokvm", - "hash": "2AFC43684BD2A2601FAA32BF86F35EAEB29CDD00ABE3BEB3446448EC44E3151E459909569044681C507FE11A82139914", - "size": 3365188, - "mtime": "2022-04-04T17:23:19Z" - }, - "20": { - "filename": "meshagent_x86-64_nokvm", - "hash": "1B198D624FA99E4D6B52AD139A19259B491FA233A2783F5E4C46955A6AD37DDF5053D7F022C95C8F04684CCADFD2CC3D", - "size": 3425584, - "mtime": "2022-04-04T17:23:27Z" - }, - "24": { - "filename": "meshagent_arm-linaro", - "hash": "2F5D211E983A738ABE31A6EAF4B73629FD937D34D5BD8380A420BAB7108040CA2320EADA8F02CFEF763A3C1D0EA8F1A2", - "size": 2194704, - "mtime": "2022-04-04T17:23:39Z" - }, - "25": { - "filename": "meshagent_armhf", - "hash": "37F717A44CDA07F88D51A5FF9FD220FEA7F61307BD3A418CC8D9E45D9B9EDB1CB069A9398318E0DF2042C4D204657F7D", - "size": 3166784, - "mtime": "2022-03-25T23:37:14Z" - }, - "27": { - "filename": "meshagent_armhf2", - "hash": "0AE840520D3B677B9767EA097F3AA5A1E24212529E688200F43935DB1541AB9FB441EC2C7BA8002D45299B04695FD037", - "size": 2837724, - "mtime": "2021-08-30T21:10:03Z" - }, - "28": { - "filename": "meshagent_mips24kc", - "hash": "636B02BD3DD7DED0BB79FAF1B991F7DB89FF23DC1373D3F5E3EA76897B4BF44E8F00A57A3B6C87EBECA8142D9AD5B7B9", - "size": 4163768, - "mtime": "2022-03-25T23:38:44Z" - }, - "29": { - "filename": "meshagent_osx-arm-64", - "hash": "D1D8CDAF59105E4E8A753CCC9032F1653AE4DB973765E3E009CA9F352BA7B3C8E487B4F34BB9A0C4A629C29DE55FFF69", - "size": 3911880, - "mtime": "2022-03-25T23:51:40Z" - }, - "30": { - "filename": "meshagent_freebsd_x86-64", - "hash": "4EA888AAD34D104E7FD898E4F331A9A65EB2EB85C7181DADF1E2A5C04B8F22B91B46AEBDC512D714D11D04B4C2B1EA3E", - "size": 4657032, - "mtime": "2022-03-25T23:51:56Z" - }, - "32": { - "filename": "meshagent_aarch64", - "hash": "27B50D0696EA3156BA91CBE0EFC2775217A2DCB1BC7AB0B079DCDE52E7D2B3E2A2647FDC6F74087C4D8D748FD90F59AD", - "size": 3227888, - "mtime": "2022-03-25T23:34:50Z" - }, - "40": { - "filename": "meshagent_mipsel24kc", - "hash": "31F3377C4703CFFDD6905FC0EFC96C4BB328474CE62BECB2E79860C5841CA9019EFC6945974847D03797EE49529DDDE0", - "size": 4160072, - "mtime": "2022-03-25T23:40:12Z" - }, - "41": { - "filename": "meshagent_aarch64-cortex-a53", - "hash": "E6D65EB2F8013E4DB811E2E73150C063EB41DF8C9D8321D1F2CA2FAEEA7DBA203032AD4E95A467A0D8FD836E18EE3D0D", - "size": 3059896, - "mtime": "2022-03-25T23:41:28Z" - }, - "10005": { - "filename": "meshagent_osx-universal-64", - "hash": "5AB5C0580E9B7B0689C20FD01561997D7B17CA5E14C747E981888C74B8CCECEE827E141ECF6CBD76C5040051C09DE840", - "size": 8335560, - "mtime": "2022-03-25T23:51:40Z" - } -} diff --git a/authenticode.js b/authenticode.js index 89b322c6..0827f8cf 100644 --- a/authenticode.js +++ b/authenticode.js @@ -69,6 +69,11 @@ function loadCertificates(pemFileNames) { var k = PemKeys[j].indexOf('-----END RSA PRIVATE KEY-----'); if (k >= 0) { keys.push(pki.privateKeyFromPem('-----BEGIN RSA PRIVATE KEY-----' + PemKeys[j].substring(0, k) + '-----END RSA PRIVATE KEY-----')); } } + PemKeys = pem.split('-----BEGIN PRIVATE KEY-----'); + for (var j in PemKeys) { + var k = PemKeys[j].indexOf('-----END PRIVATE KEY-----'); + if (k >= 0) { keys.push(pki.privateKeyFromPem('-----BEGIN PRIVATE KEY-----' + PemKeys[j].substring(0, k) + '-----END PRIVATE KEY-----')); } + } } catch (ex) { } } if ((certs.length == 0) || (keys.length != 1)) return; // No certificates or private keys diff --git a/translate/translate.json b/translate/translate.json index f2a3e3a3..5aacbd70 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -42579,7 +42579,7 @@ "fi": "Ei uusia laiteryhmiä.", "fr": "Pas de nouveau groupe d'appareils", "hi": "कोई नया उपकरण समूह नहीं", - "it": "Nessun nuovo gruppo di dispositivi ", + "it": "Nessun nuovo gruppo di dispositivi", "ja": "新しいデバイスグループはありません", "ko": "새로운 장치 그룹이 없습니다.", "nl": "Geen nieuwe apparaatgroepen", @@ -42624,7 +42624,7 @@ "fi": "Ei politiikkaa", "fr": "Aucune restriction", "hi": "कोई नीति नहीं", - "it": "Nessuna politica ", + "it": "Nessuna politica", "ja": "ポリシーなし", "ko": "정책이 없습니다.", "nl": "Geen beleid", @@ -70541,7 +70541,7 @@ "nl": "Werkmap", "pl": "Folder Roboczy", "ru": "Рабочий каталог", - "fr": "Répertoire de travail\n", + "fr": "Répertoire de travail", "xloc": [ "default.handlebars->41->1221" ] From 02bc45445f71523bb7b64be42654b68377a09ec3 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 10:27:58 -0700 Subject: [PATCH 022/105] Version 1.0.37 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5753a7d6..f4276e96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "1.0.36", + "version": "1.0.37", "keywords": [ "Remote Device Management", "Remote Device Monitoring", From 24b096205c08eef2922b30baf33a5042da1611c5 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 10:43:03 -0700 Subject: [PATCH 023/105] Fixed server exception if no agent signing cert is present. --- meshcentral.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshcentral.js b/meshcentral.js index 66a7603a..48def834 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -3003,7 +3003,7 @@ function CreateMeshCentralServer(config, args) { // Load the agent with a random msh added to it. const outStream = new require('stream').Duplex(); outStream.meshAgentBinary = objx.meshAgentBinaries[archid]; - outStream.meshAgentBinary.randomMsh = agentSignCertInfo.cert.subject.hash; + if (agentSignCertInfo) { outStream.meshAgentBinary.randomMsh = agentSignCertInfo.cert.subject.hash; } else { outStream.meshAgentBinary.randomMsh = obj.crypto.randomBytes(16).toString('hex'); } outStream.bufferList = []; outStream._write = function (chunk, encoding, callback) { this.bufferList.push(chunk); if (callback) callback(); }; // Append the chuck. outStream._read = function (size) { }; // Do nothing, this is not going to be called. From 537409e964f3400b0f4af3dd398853fbd088bc1a Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 10:54:13 -0700 Subject: [PATCH 024/105] Fixed server exception when settings .msh random without custom agent signing cert. --- meshcentral.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/meshcentral.js b/meshcentral.js index 48def834..8b27643e 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -2851,7 +2851,6 @@ function CreateMeshCentralServer(config, args) { // Check if a custom agent signing certificate is available var agentSignCertInfo = require('./authenticode.js').loadCertificates([obj.path.join(obj.datapath, 'agentsigningcert.pem')]); - if (agentSignCertInfo == null) { func(); return; } // No code signing certificate, nothing to do. // If not using a custom signing cert, get agent code signature certificate ready with the full cert chain if ((agentSignCertInfo == null) && (obj.certificates.codesign != null)) { @@ -2861,6 +2860,7 @@ function CreateMeshCentralServer(config, args) { extraCerts: [obj.certificateOperations.forge.pki.certificateFromPem(obj.certificates.root.cert)] } } + if (agentSignCertInfo == null) { func(); return; } // No code signing certificate, nothing to do. // Setup the domain is specified var objx = domain, suffix = ''; @@ -2955,6 +2955,15 @@ function CreateMeshCentralServer(config, args) { // Check if a custom agent signing certificate is available var agentSignCertInfo = require('./authenticode.js').loadCertificates([obj.path.join(obj.datapath, 'agentsigningcert.pem')]); + // If not using a custom signing cert, get agent code signature certificate ready with the full cert chain + if ((agentSignCertInfo == null) && (obj.certificates.codesign != null)) { + agentSignCertInfo = { + cert: obj.certificateOperations.forge.pki.certificateFromPem(obj.certificates.codesign.cert), + key: obj.certificateOperations.forge.pki.privateKeyFromPem(obj.certificates.codesign.key), + extraCerts: [obj.certificateOperations.forge.pki.certificateFromPem(obj.certificates.root.cert)] + } + } + // Setup the domain is specified var objx = domain, suffix = ''; if (domain.id == '') { objx = obj; } else { suffix = '-' + domain.id; objx.meshAgentBinaries = {}; } From a429a42ecf080ab6983f00e1e0f236ecbd268c8e Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 10:54:58 -0700 Subject: [PATCH 025/105] Version 1.0.38 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f4276e96..5a6e398a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "1.0.37", + "version": "1.0.38", "keywords": [ "Remote Device Management", "Remote Device Monitoring", From fa13239d468ad081461cc978a0e3206e68e9b55c Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 18 Jun 2022 21:47:44 -0700 Subject: [PATCH 026/105] Minor code signing improvements and clean up. --- authenticode.js | 2 +- meshcentral.js | 31 +++++++++++++++---------------- views/default.handlebars | 5 +++-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/authenticode.js b/authenticode.js index 0827f8cf..daabd441 100644 --- a/authenticode.js +++ b/authenticode.js @@ -1240,7 +1240,7 @@ function createAuthenticodeHandler(path) { if ((typeof args.desc == 'string') || (typeof args.url == 'string')) { var codeSigningAttributes = { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [] }; if (args.desc != null) { // Encode description as big-endian unicode. - var desc = "", ucs = Buffer.from(args.desc, 'ucs2').toString() + var desc = '', ucs = Buffer.from(args.desc, 'ucs2').toString() for (var k = 0; k < ucs.length; k += 2) { desc += String.fromCharCode(ucs.charCodeAt(k + 1), ucs.charCodeAt(k)); } codeSigningAttributes.value.push({ 'tagClass': 128, 'type': 0, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 128, 'type': 0, 'constructed': false, 'composed': false, 'value': desc }] }); } diff --git a/meshcentral.js b/meshcentral.js index 8b27643e..cd3364f2 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -2867,22 +2867,19 @@ function CreateMeshCentralServer(config, args) { if (domain.id == '') { objx = obj; } else { suffix = '-' + domain.id; objx.meshAgentBinaries = {}; } // Generate the agent signature description and URL - var serverSignedAgentsPath, signDesc, signUrl; - if (agentSignCertInfo != null) { - serverSignedAgentsPath = obj.path.join(obj.datapath, 'signedagents' + suffix); - signDesc = (domain.title ? domain.title : agentSignCertInfo.cert.subject.hash); - var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified - var httpsHost = ((domain.dns != null) ? domain.dns : obj.certificates.CommonName); - if (obj.args.agentaliasdns != null) { httpsHost = obj.args.agentaliasdns; } - signUrl = 'https://' + httpsHost; - if (httpsPort != 443) { signUrl += ':' + httpsPort; } - var xdomain = (domain.dns == null) ? domain.id : ''; - if (xdomain != '') xdomain += '/'; - signUrl += '/' + xdomain; + const serverSignedAgentsPath = obj.path.join(obj.datapath, 'signedagents' + suffix); + const signDesc = (domain.title ? domain.title : agentSignCertInfo.cert.subject.hash); + const httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified + var httpsHost = ((domain.dns != null) ? domain.dns : obj.certificates.CommonName); + if (obj.args.agentaliasdns != null) { httpsHost = obj.args.agentaliasdns; } + var signUrl = 'https://' + httpsHost; + if (httpsPort != 443) { signUrl += ':' + httpsPort; } + var xdomain = (domain.dns == null) ? domain.id : ''; + if (xdomain != '') xdomain += '/'; + signUrl += '/' + xdomain; - // If requested, lock the agent to this server - if (obj.config.settings.agentsignlock) { signUrl += '?ServerID=' + obj.certificateOperations.getPublicKeyHash(obj.certificates.agent.cert).toUpperCase(); } - } + // If requested, lock the agent to this server + if (obj.config.settings.agentsignlock) { signUrl += '?ServerID=' + obj.certificateOperations.getPublicKeyHash(obj.certificates.agent.cert).toUpperCase(); } // Setup the time server var timeStampUrl = 'http://timestamp.comodoca.com/authenticode'; @@ -2930,7 +2927,8 @@ function CreateMeshCentralServer(config, args) { // Agent was signed succesfuly console.log(obj.common.format('Code signed agent {0}.', agentSignedFunc.objx.meshAgentsArchitectureNumbers[agentSignedFunc.archid].localname)); } else { - console.log(obj.common.format('Failed to sign agent {0}: ' + err, agentSignedFunc.objx.meshAgentsArchitectureNumbers[agentSignedFunc.archid].localname)); + // Failed to sign agent + addServerWarning('Failed to sign agent \"' + agentSignedFunc.objx.meshAgentsArchitectureNumbers[agentSignedFunc.archid].localname + '\": ' + err, 22, [ agentSignedFunc.objx.meshAgentsArchitectureNumbers[agentSignedFunc.archid].localname, err ]); } if (--pendingOperations === 0) { agentSignedFunc.func(); } } @@ -2939,6 +2937,7 @@ function CreateMeshCentralServer(config, args) { xagentSignedFunc.objx = objx; xagentSignedFunc.archid = archid; xagentSignedFunc.signeedagentpath = signeedagentpath; + obj.debug('main', "Code signing agent with arguments: " + JSON.stringify({ out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl })); originalAgent.sign(agentSignCertInfo, { out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl }, xagentSignedFunc); } else { // Signed agent is already ok, use it. diff --git a/views/default.handlebars b/views/default.handlebars index b5000e5a..2c762fde 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -2316,7 +2316,8 @@ 18: "SMTP server has limited use in LAN mode.", 19: "SMS gateway has limited use in LAN mode.", 20: "Invalid \"LoginCookieEncryptionKey\" in config.json.", - 21: "Backup path can't be set within meshcentral-data folder, backup settings ignored." + 21: "Backup path can't be set within meshcentral-data folder, backup settings ignored.", + 22: "Failed to sign agent {0}: {1}" }; var x = ''; for (var i in message.warnings) { @@ -2325,7 +2326,7 @@ x += '
' + "WARNING: " + y + '
'; } else { var z = ServerWarnings[y.id]; - if (z == null) { z = y.msg; } else { z = format(z, y.args); } + if (z == null) { z = y.msg; } else { z = format(z, ...y.args); } x += '
' + "WARNING: " + z + '
'; } } From 9f9af35e2fa6046093f78b3cef5012a76ef003cf Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sun, 19 Jun 2022 00:06:23 -0700 Subject: [PATCH 027/105] Improved support for Intel Standard Manageability (Intel SM) --- meshagent.js | 5 ++++- views/default-mobile.handlebars | 10 ++++++++-- views/default.handlebars | 27 +++++++++++++++++++++------ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/meshagent.js b/meshagent.js index 297c3b25..f4fa5419 100644 --- a/meshagent.js +++ b/meshagent.js @@ -1889,7 +1889,10 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) { if (!device.intelamt) { device.intelamt = {}; } if ((command.intelamt.Versions != null) && (typeof command.intelamt.Versions == 'object')) { if ((command.intelamt.Versions.AMT != null) && (typeof command.intelamt.Versions.AMT == 'string') && (command.intelamt.Versions.AMT.length < 12) && (device.intelamt.ver != command.intelamt.Versions.AMT)) { changes.push('AMT version'); device.intelamt.ver = command.intelamt.Versions.AMT; change = 1; log = 1; } - if ((command.intelamt.Versions.Sku != null) && (typeof command.intelamt.Versions.Sku == 'string')) { var sku = parseInt(command.intelamt.Versions.Sku); if (device.intelamt.sku !== command.intelamt.sku) { device.intelamt.sku = sku; change = 1; log = 1; } } + if ((command.intelamt.Versions.Sku != null) && (typeof command.intelamt.Versions.Sku == 'string')) { + const sku = parseInt(command.intelamt.Versions.Sku); + if (device.intelamt.sku !== sku) { device.intelamt.sku = sku; change = 1; log = 1; } + } } if ((command.intelamt.ProvisioningState != null) && (typeof command.intelamt.ProvisioningState == 'number') && (device.intelamt.state != command.intelamt.ProvisioningState)) { changes.push('AMT state'); device.intelamt.state = command.intelamt.ProvisioningState; change = 1; log = 1; } if ((command.intelamt.Flags != null) && (typeof command.intelamt.Flags == 'number') && (device.intelamt.flags != command.intelamt.Flags)) { diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars index 6f469ea4..0312f671 100644 --- a/views/default-mobile.handlebars +++ b/views/default-mobile.handlebars @@ -4070,7 +4070,7 @@ ); // Show the right settings - QV('d7amtkvm', (currentNode.intelamt != null && ((currentNode.intelamt.ver != null) || (currentNode.agent == null))) && ((deskState == 0) || (desktop.contype == 2))); + QV('d7amtkvm', (currentNode.intelamt != null && ((typeof currentNode.intelamt.sku != 'number') || ((currentNode.intelamt.sku & 16) == 0)) && ((currentNode.intelamt.ver != null) || (currentNode.agent == null))) && ((deskState == 0) || (desktop.contype == 2))); QV('d7meshkvm', ((currentNode.agent != null) && (currentNode.agent.caps & 1) && ((deskState == false) || (desktop.contype == 1)))); // Enable buttons @@ -5831,7 +5831,13 @@ x += addDetailItem("Security", (node.intelamt.tls == 1) ? "Secured using TLS" : "TLS is not setup", s); // Check that the Intel AMT user is setup and there is no warnings (1 = invalid credentials, 8 = trying) x += addDetailItem("Admin Credentials", ((node.intelamt.user) == null || (node.intelamt.user == '') || ((node.intelamt.warn != null) && ((node.intelamt.warn & 9) != 0))) ? "Not Known" : "Known", s); - if (x != '') { sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt' }); } + if (x != '') { + if ((typeof node.intelamt.sku == 'number') && ((node.intelamt.sku & 16) != 0)) { + sections.push({ name: "Intel® Standard Manageability (Intel® SM)", html: x, img: 'amt' }); + } else { + sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt' }); + } + } } if (hardware.identifiers) { diff --git a/views/default.handlebars b/views/default.handlebars index 2c762fde..fa1357e7 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -619,7 +619,7 @@
-
Intel® AMT Redirection port or KVM feature is disabled, click here to enable it.
+
Redirection port or KVM feature is disabled, click here to enable it.
@@ -655,7 +655,7 @@ - + Disconnected
@@ -731,7 +731,7 @@
-
Intel® AMT Redirection port or KVM feature is disabled, click here to enable it.
+
Redirection port or KVM feature is disabled, click here to enable it.
@@ -864,7 +864,7 @@
-

Intel® AMT -

+

Intel® AMT -

@@ -7255,6 +7255,15 @@ QV('p15uploadCore', (node.agent != null) && (node.agent.caps != null) && ((node.agent.caps & 16) != 0)); QH('p15coreName', ((node.agent != null) && (node.agent.core != null))?node.agent.core:''); + // Set the Intel AMT / Intel SM tab name + if ((node.intelamt != null) && (typeof node.intelamt.sku == 'number') && ((node.intelamt.sku & 16) != 0)) { + QH('MainDevAmt', "Intel®SM"); + QH('p14deviceNamePrefix', "Intel® SM"); + } else { + QH('MainDevAmt', "Intel®AMT"); + QH('p14deviceNamePrefix', "Intel® AMT"); + } + // Setup/Refresh Intel AMT tab var amtFrameNode = Q('p14iframe').contentWindow.getCurrentMeshNode(); if ((amtFrameNode != null) && (amtFrameNode._id != currentNode._id)) { Q('p14iframe').contentWindow.disconnect(); } @@ -8371,7 +8380,7 @@ ); } // Show the right settings - QV('td7amtkvm', (currentNode.intelamt != null && ((currentNode.intelamt.ver != null) || (currentNode.agent == null))) && ((deskState == 0) || (desktop.contype == 2))); + QV('td7amtkvm', ((currentNode.intelamt != null) && ((typeof currentNode.intelamt.sku != 'number') || ((currentNode.intelamt.sku & 16) == 0)) && ((currentNode.intelamt.ver != null) || (currentNode.agent == null))) && ((deskState == 0) || (desktop.contype == 2))); QV('td7meshkvm', (webRtcDesktop) || ((currentNode.agent != null) && (currentNode.agent.caps & 1) && ((deskState == 0) || (desktop.contype == 1)))); QV('td7rdpkvm', ((currentNode.agent != null) && ((currentNode.agent.id == 3) || (currentNode.agent.id == 4)) && ((deskState == 0) || (desktop.contype == 4)))); @@ -11164,7 +11173,13 @@ x += addDetailItem("Security", (node.intelamt.tls == 1)?"Secured using TLS":"TLS is not setup", s); // Check that the Intel AMT user is setup and there is no warnings (1 = invalid credentials, 8 = trying) x += addDetailItem("Admin Credentials", ((node.intelamt.user) == null || (node.intelamt.user == '') || ((node.intelamt.warn != null) && ((node.intelamt.warn & 9) != 0)))?"Not Known":"Known", s); - if (x != '') { sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt64.png' }); } + if (x != '') { + if ((typeof node.intelamt.sku == 'number') && ((node.intelamt.sku & 16) != 0)) { + sections.push({ name: "Intel® Standard Manageability (Intel® SM)", html: x, img: 'amt64.png' }); + } else { + sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt64.png' }); + } + } } if (hardware.identifiers) { From 26570ec664c5a35c14b438cb02501efcff7e3575 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sun, 19 Jun 2022 10:53:25 -0700 Subject: [PATCH 028/105] More Intel Standard Manageability fixes. --- mpsserver.js | 31 ++++++++++++++++++++++++------- views/default-mobile.handlebars | 4 ++-- views/default.handlebars | 4 ++-- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/mpsserver.js b/mpsserver.js index 11ec460c..cacc4241 100644 --- a/mpsserver.js +++ b/mpsserver.js @@ -484,7 +484,10 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) { // We are under the limit, create the new device. // Node is not in the database, add it. Credentials will be empty until added by the user. var device = { type: 'node', mtype: 1, _id: socket.tag.nodeid, meshid: socket.tag.meshid, name: socket.tag.name, icon: (socket.tag.meiState.isBatteryPowered) ? 2 : 1, host: hostname, domain: domainid, intelamt: { user: (typeof socket.tag.meiState.amtuser == 'string') ? socket.tag.meiState.amtuser : '', pass: (typeof socket.tag.meiState.amtpass == 'string') ? socket.tag.meiState.amtpass : '', tls: 0, state: 2 } }; - if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if (socket.tag.meiState != null) { + if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if ((typeof socket.tag.meiState.Versions == 'object') && (typeof socket.tag.meiState.Versions.Sku == 'string')) { device.intelamt.sku = parseInt(socket.tag.meiState.Versions.Sku); } + } obj.db.Set(device); // Event the new node @@ -506,7 +509,10 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) { // Node is not in the database, add it. Credentials will be empty until added by the user. var device = { type: 'node', mtype: 1, _id: socket.tag.nodeid, meshid: socket.tag.meshid, name: socket.tag.name, icon: (socket.tag.meiState.isBatteryPowered) ? 2 : 1, host: hostname, domain: domainid, intelamt: { user: (typeof socket.tag.meiState.amtuser == 'string') ? socket.tag.meiState.amtuser : '', pass: (typeof socket.tag.meiState.amtpass == 'string') ? socket.tag.meiState.amtpass : '', tls: 0, state: 2 } }; - if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if (socket.tag.meiState != null) { + if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if ((typeof socket.tag.meiState.Versions == 'object') && (typeof socket.tag.meiState.Versions.Sku == 'string')) { device.intelamt.sku = parseInt(socket.tag.meiState.Versions.Sku); } + } obj.db.Set(device); // Event the new node @@ -707,7 +713,10 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) { // We are under the limit, create the new device. // Node is not in the database, add it. Credentials will be empty until added by the user. var device = { type: 'node', mtype: 1, _id: socket.tag.nodeid, meshid: socket.tag.meshid, name: socket.tag.name, icon: (socket.tag.meiState.isBatteryPowered) ? 2 : 1, host: hostname, domain: initialMesh.domain, intelamt: { user: (typeof socket.tag.meiState.amtuser == 'string') ? socket.tag.meiState.amtuser : '', pass: (typeof socket.tag.meiState.amtpass == 'string') ? socket.tag.meiState.amtpass : '', tls: 0, state: 2 } }; - if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if (socket.tag.meiState != null) { + if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if ((typeof socket.tag.meiState.Versions == 'object') && (typeof socket.tag.meiState.Versions.Sku == 'string')) { device.intelamt.sku = parseInt(socket.tag.meiState.Versions.Sku); } + } obj.db.Set(device); // Event the new node @@ -733,7 +742,10 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) { // Node is not in the database, add it. Credentials will be empty until added by the user. var device = { type: 'node', mtype: 1, _id: socket.tag.nodeid, meshid: socket.tag.meshid, name: socket.tag.name, icon: (socket.tag.meiState && socket.tag.meiState.isBatteryPowered) ? 2 : 1, host: hostname, domain: initialMesh.domain, intelamt: { user: ((socket.tag.meiState) && (typeof socket.tag.meiState.amtuser == 'string')) ? socket.tag.meiState.amtuser : '', pass: ((socket.tag.meiState) && (typeof socket.tag.meiState.amtpass == 'string')) ? socket.tag.meiState.amtpass : '', tls: 0, state: 2 } }; - if ((socket.tag.meiState != null) && (typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if (socket.tag.meiState != null) { + if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if ((typeof socket.tag.meiState.Versions == 'object') && (typeof socket.tag.meiState.Versions.Sku == 'string')) { device.intelamt.sku = parseInt(socket.tag.meiState.Versions.Sku); } + } obj.db.Set(device); // Event the new node @@ -793,7 +805,10 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) { // Node is not in the database, add it. Credentials will be empty until added by the user. var device = { type: 'node', mtype: 2, _id: socket.tag.nodeid, meshid: socket.tag.meshid, name: hostname, icon: (socket.tag.meiState && socket.tag.meiState.isBatteryPowered) ? 2 : 1, host: hostname, domain: initialMesh.domain, intelamt: { user: ((socket.tag.meiState) && (typeof socket.tag.meiState.amtuser == 'string')) ? socket.tag.meiState.amtuser : '', pass: ((socket.tag.meiState) && (typeof socket.tag.meiState.amtpass == 'string')) ? socket.tag.meiState.amtpass : '', tls: 0, state: 2, agent: { id: 0, caps: 0 } } }; - if ((socket.tag.meiState != null) && (typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if (socket.tag.meiState != null) { + if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if ((typeof socket.tag.meiState.Versions == 'object') && (typeof socket.tag.meiState.Versions.Sku == 'string')) { device.intelamt.sku = parseInt(socket.tag.meiState.Versions.Sku); } + } obj.db.Set(device); // Event the new node @@ -827,9 +842,11 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) { // Node is not in the database, add it. Credentials will be empty until added by the user. var device = { type: 'node', mtype: 2, _id: socket.tag.nodeid, meshid: socket.tag.meshid, name: hostname, icon: (socket.tag.meiState && socket.tag.meiState.isBatteryPowered) ? 2 : 1, host: hostname, domain: initialMesh.domain, agent: { ver: 0, id: 0, caps: 0 }, intelamt: { uuid: socket.tag.SystemId, user: ((socket.tag.meiState) && (typeof socket.tag.meiState.amtuser == 'string')) ? socket.tag.meiState.amtuser : '', pass: ((socket.tag.meiState) && (typeof socket.tag.meiState.amtpass == 'string')) ? socket.tag.meiState.amtpass : '', tls: 0, state: 2 } }; - if ((socket.tag.meiState != null) && (typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if (socket.tag.meiState != null) { + if ((typeof socket.tag.meiState.desc == 'string') && (socket.tag.meiState.desc.length > 0) && (socket.tag.meiState.desc.length < 1024)) { device.desc = socket.tag.meiState.desc; } + if ((typeof socket.tag.meiState.Versions == 'object') && (typeof socket.tag.meiState.Versions.Sku == 'string')) { device.intelamt.sku = parseInt(socket.tag.meiState.Versions.Sku); } + } obj.db.Set(device); - console.log('ADDED', device); // Event the new node addedDeviceCount++; diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars index 0312f671..e49ffe2d 100644 --- a/views/default-mobile.handlebars +++ b/views/default-mobile.handlebars @@ -4695,7 +4695,7 @@ // Enable action button if mesh type is not "local devices" QV('termActionsBtn', terminalNode.mtype != 3); - if (((termState == true) && (terminal.contype != 3)) || (terminalNode.agent.id == 3) || (terminalNode.agent.id == 4)) { + if (((termState == true) && (terminal.contype != 3)) || (terminalNode.agent == null) || (terminalNode.agent.id == 3) || (terminalNode.agent.id == 4)) { QH('terminalCustomUpperRight', ''); } else { QH('terminalCustomUpperRight', '
' + format("SSH Port {0}", (terminalNode.sshport ? terminalNode.sshport : 22)) + ''); @@ -5321,7 +5321,7 @@ QE('p13PasteButton', advancedFeatures && (currentNode.mtype != 3) && ((p13filetreelocation.length > 0) || (winAgent == false)) && ((p13clipboard != null) && (p13clipboard.length > 0))); } var filesState = ((files != null) && (files.state != 0)); - if (((filesState == true) && (files.contype != 2)) || (filesNode.agent.id == 3) || (filesNode.agent.id == 4)) { + if (((filesState == true) && (files.contype != 2)) || (filesNode.agent == null) || (filesNode.agent.id == 3) || (filesNode.agent.id == 4)) { QH('filesCustomUpperRight', ''); } else { QH('filesCustomUpperRight', '' + format("SSH Port {0}", (filesNode.sshport ? filesNode.sshport : 22)) + ''); diff --git a/views/default.handlebars b/views/default.handlebars index fa1357e7..d9d0f835 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -9649,7 +9649,7 @@ // Enable action button if mesh type is not "local devices" QV('termActionsBtn', terminalNode.mtype != 3); - if (((termState == true) && (terminal.contype != 3)) || (terminalNode.agent.id == 3) || (terminalNode.agent.id == 4)) { + if (((termState == true) && (terminal.contype != 3)) || (terminalNode.agent == null) || (terminalNode.agent.id == 3) || (terminalNode.agent.id == 4)) { QH('terminalCustomUpperRight', ''); } else { QH('terminalCustomUpperRight', '' + format("SSH Port {0}", (terminalNode.sshport?terminalNode.sshport:22)) + ''); @@ -10441,7 +10441,7 @@ QE('p13PasteButton', advancedFeatures && ((p13filetreelocation.length > 0) || (winAgent == false)) && ((p13clipboard != null) && (p13clipboard.length > 0))); } var filesState = ((files != null) && (files.state != 0)); - if (((filesState == true) && (files.contype != 2)) || (filesNode.agent.id == 3) || (filesNode.agent.id == 4)) { + if (((filesState == true) && (files.contype != 2)) || (filesNode.agent == null) || (filesNode.agent.id == 3) || (filesNode.agent.id == 4)) { QH('filesCustomUpperRight', ''); } else { QH('filesCustomUpperRight', '' + format("SSH Port {0}", (filesNode.sshport?filesNode.sshport:22)) + ''); From 5e070a09cb00d5e0df93a29b6fedc7bae60b5315 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sun, 19 Jun 2022 11:43:27 -0700 Subject: [PATCH 029/105] Fixed exception when configuring Intel AMT devices that do not have WIFI. --- amtmanager.js | 131 ++++++++++++++++++++++++++------------------------ 1 file changed, 67 insertions(+), 64 deletions(-) diff --git a/amtmanager.js b/amtmanager.js index 34d95781..9703327e 100644 --- a/amtmanager.js +++ b/amtmanager.js @@ -1525,55 +1525,55 @@ module.exports.CreateAmtManager = function (parent) { dev.amtstack.Delete('CIM_WiFiEndpointSettings', { InstanceID: 'Intel(r) AMT:WiFi Endpoint Settings ' + profilesToRemove[i].ElementName }, function (stack, name, responses, status) { }, 0, 1); } } + } - // Check the 802.1x client certificate expiration time - // TODO: We are only getting the client cert from the wired 802.1x profile, need to get it for wireless too. - var netAuthClientCert = null; - if (netAuthClientCertInstanceId != null) { - netAuthClientCert = getInstance(responses['AMT_PublicKeyCertificate'].responses, netAuthClientCertInstanceId); - if (netAuthClientCert) { - var cert = null; - try { cert = obj.parent.certificateOperations.forge.pki.certificateFromAsn1(obj.parent.certificateOperations.forge.asn1.fromDer(obj.parent.certificateOperations.forge.util.decode64(netAuthClientCert.X509Certificate))); } catch (ex) { } - if (cert != null) { - const certStart = new Date(cert.validity.notBefore).getTime(); - const certEnd = new Date(cert.validity.notAfter).getTime(); - const certMidPoint = certStart + ((certEnd - certStart) / 2); - if (Date.now() > certMidPoint) { newNetAuthProfileRequested = true; } // Past mid-point or expired, request a new 802.1x certificate & profile - } + // Check the 802.1x client certificate expiration time + // TODO: We are only getting the client cert from the wired 802.1x profile, need to get it for wireless too. + var netAuthClientCert = null; + if (netAuthClientCertInstanceId != null) { + netAuthClientCert = getInstance(responses['AMT_PublicKeyCertificate'].responses, netAuthClientCertInstanceId); + if (netAuthClientCert) { + var cert = null; + try { cert = obj.parent.certificateOperations.forge.pki.certificateFromAsn1(obj.parent.certificateOperations.forge.asn1.fromDer(obj.parent.certificateOperations.forge.util.decode64(netAuthClientCert.X509Certificate))); } catch (ex) { } + if (cert != null) { + const certStart = new Date(cert.validity.notBefore).getTime(); + const certEnd = new Date(cert.validity.notAfter).getTime(); + const certMidPoint = certStart + ((certEnd - certStart) / 2); + if (Date.now() > certMidPoint) { newNetAuthProfileRequested = true; } // Past mid-point or expired, request a new 802.1x certificate & profile } } + } - // Figure out is there are no changes to 802.1x wired configuration - if ((wiredMatch == 0) && (newNetAuthProfileRequested == false)) { wiredConfig = false; } + // Figure out if there are no changes to 802.1x wired configuration + if ((wiredMatch == 0) && (newNetAuthProfileRequested == false)) { wiredConfig = false; } - // See if we need to ask MeshCentral Satellite for a new 802.1x profile - if (newNetAuthProfileRequested && (typeof srvNetAuthProfile.satellitecredentials == 'string')) { - // Credentials for this 802.1x profile are provided using MeshCentral Satellite - // Send a message to Satellite requesting a 802.1x profile for this device - dev.consoleMsg("Requesting 802.1x credentials for " + netAuthStrings[srvNetAuthProfile.authenticationprotocol] + " from MeshCentral Satellite..."); - dev.netAuthSatReqId = Buffer.from(parent.crypto.randomBytes(16), 'binary').toString('base64'); // Generate a crypto-secure request id. - dev.netAuthSatReqData = { domain: domain, wiredConfig: wiredConfig, wirelessConfig: wirelessConfig, devNetAuthProfile: devNetAuthProfile, srvNetAuthProfile: srvNetAuthProfile, profilesToAdd: profilesToAdd, prioritiesInUse: prioritiesInUse, responses: responses, xxCertificates: xxCertificates, xxCertPrivateKeys: xxCertPrivateKeys } - const request = { action: 'satellite', subaction: '802.1x-ProFile-Request', satelliteFlags: 2, nodeid: dev.nodeid, icon: dev.icon, domain: dev.nodeid.split('/')[1], nolog: 1, reqid: dev.netAuthSatReqId, authProtocol: srvNetAuthProfile.authenticationprotocol, devname: dev.name, osname: dev.rname, ver: dev.intelamt.ver }; - if (netAuthClientCert != null) { request.cert = netAuthClientCert.X509Certificate; request.certid = netAuthClientCertInstanceId; } - parent.DispatchEvent([srvNetAuthProfile.satellitecredentials], obj, request); + // See if we need to ask MeshCentral Satellite for a new 802.1x profile + if (newNetAuthProfileRequested && (typeof srvNetAuthProfile.satellitecredentials == 'string')) { + // Credentials for this 802.1x profile are provided using MeshCentral Satellite + // Send a message to Satellite requesting a 802.1x profile for this device + dev.consoleMsg("Requesting 802.1x credentials for " + netAuthStrings[srvNetAuthProfile.authenticationprotocol] + " from MeshCentral Satellite..."); + dev.netAuthSatReqId = Buffer.from(parent.crypto.randomBytes(16), 'binary').toString('base64'); // Generate a crypto-secure request id. + dev.netAuthSatReqData = { domain: domain, wiredConfig: wiredConfig, wirelessConfig: wirelessConfig, devNetAuthProfile: devNetAuthProfile, srvNetAuthProfile: srvNetAuthProfile, profilesToAdd: profilesToAdd, prioritiesInUse: prioritiesInUse, responses: responses, xxCertificates: xxCertificates, xxCertPrivateKeys: xxCertPrivateKeys } + const request = { action: 'satellite', subaction: '802.1x-ProFile-Request', satelliteFlags: 2, nodeid: dev.nodeid, icon: dev.icon, domain: dev.nodeid.split('/')[1], nolog: 1, reqid: dev.netAuthSatReqId, authProtocol: srvNetAuthProfile.authenticationprotocol, devname: dev.name, osname: dev.rname, ver: dev.intelamt.ver }; + if (netAuthClientCert != null) { request.cert = netAuthClientCert.X509Certificate; request.certid = netAuthClientCertInstanceId; } + parent.DispatchEvent([srvNetAuthProfile.satellitecredentials], obj, request); - // Set a response timeout - const netAuthTimeoutFunc = function netAuthTimeout() { - if (isAmtDeviceValid(netAuthTimeout.dev) == false) return; // Device no longer exists, ignore this request. - if (dev.netAuthSatReqId != null) { - delete netAuthTimeout.dev.netAuthSatReqId; - delete netAuthTimeout.dev.netAuthSatReqData; - netAuthTimeout.dev.consoleMsg("MeshCentral Satellite did not respond in time, 802.1x profile will not be set."); - devTaskCompleted(netAuthTimeout.dev); - } + // Set a response timeout + const netAuthTimeoutFunc = function netAuthTimeout() { + if (isAmtDeviceValid(netAuthTimeout.dev) == false) return; // Device no longer exists, ignore this request. + if (dev.netAuthSatReqId != null) { + delete netAuthTimeout.dev.netAuthSatReqId; + delete netAuthTimeout.dev.netAuthSatReqData; + netAuthTimeout.dev.consoleMsg("MeshCentral Satellite did not respond in time, 802.1x profile will not be set."); + devTaskCompleted(netAuthTimeout.dev); } - netAuthTimeoutFunc.dev = dev; - dev.netAuthSatReqTimer = setTimeout(netAuthTimeoutFunc, 20000); - return; - } else { - // No need to call MeshCentral Satellite for a 802.1x profile, so configure everything now. - attempt8021xSyncEx(dev, { domain: domain, wiredConfig: wiredConfig, wirelessConfig: wirelessConfig, devNetAuthProfile: devNetAuthProfile, srvNetAuthProfile: srvNetAuthProfile, profilesToAdd: profilesToAdd, prioritiesInUse: prioritiesInUse, responses: responses, xxCertificates: xxCertificates, xxCertPrivateKeys: xxCertPrivateKeys }); } + netAuthTimeoutFunc.dev = dev; + dev.netAuthSatReqTimer = setTimeout(netAuthTimeoutFunc, 20000); + return; + } else { + // No need to call MeshCentral Satellite for a 802.1x profile, so configure everything now. + attempt8021xSyncEx(dev, { domain: domain, wiredConfig: wiredConfig, wirelessConfig: wirelessConfig, devNetAuthProfile: devNetAuthProfile, srvNetAuthProfile: srvNetAuthProfile, profilesToAdd: profilesToAdd, prioritiesInUse: prioritiesInUse, responses: responses, xxCertificates: xxCertificates, xxCertPrivateKeys: xxCertPrivateKeys }); } }); } @@ -1813,31 +1813,34 @@ module.exports.CreateAmtManager = function (parent) { function attemptWifiSyncEx2(dev, devNetAuthData) { if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request. const responses = devNetAuthData.responses; + const wirelessConfig = devNetAuthData.wirelessConfig; - // Check if local WIFI profile sync is enabled, if not, enabled it. - if ((responses['AMT_WiFiPortConfigurationService'] != null) && (responses['AMT_WiFiPortConfigurationService'].response != null) && (responses['AMT_WiFiPortConfigurationService'].response['localProfileSynchronizationEnabled'] == 0)) { - responses['AMT_WiFiPortConfigurationService'].response['localProfileSynchronizationEnabled'] = 1; - dev.amtstack.Put('AMT_WiFiPortConfigurationService', responses['AMT_WiFiPortConfigurationService'].response, function (stack, name, response, status) { - if (status != 200) { dev.consoleMsg("Unable to enable local WIFI profile sync."); } else { dev.consoleMsg("Enabled local WIFI profile sync."); } - }); - } + if (wirelessConfig) { + // Check if local WIFI profile sync is enabled, if not, enabled it. + if ((responses['AMT_WiFiPortConfigurationService'] != null) && (responses['AMT_WiFiPortConfigurationService'].response != null) && (responses['AMT_WiFiPortConfigurationService'].response['localProfileSynchronizationEnabled'] == 0)) { + responses['AMT_WiFiPortConfigurationService'].response['localProfileSynchronizationEnabled'] = 1; + dev.amtstack.Put('AMT_WiFiPortConfigurationService', responses['AMT_WiFiPortConfigurationService'].response, function (stack, name, response, status) { + if (status != 200) { dev.consoleMsg("Unable to enable local WIFI profile sync."); } else { dev.consoleMsg("Enabled local WIFI profile sync."); } + }); + } - // Change the WIFI state if needed. Right now, we always enable it. - // WifiState = { 3: "Disabled", 32768: "Enabled in S0", 32769: "Enabled in S0, Sx/AC" }; - var wifiState = 32769; // For now, always enable WIFI - if (responses['CIM_WiFiPort'].responses.Body.EnabledState != 32769) { - if (wifiState == 3) { - dev.amtstack.CIM_WiFiPort_RequestStateChange(wifiState, null, function (stack, name, responses, status) { - const dev = stack.dev; - if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request. - if (status == 200) { dev.consoleMsg("Disabled WIFI."); } - }); - } else { - dev.amtstack.CIM_WiFiPort_RequestStateChange(wifiState, null, function (stack, name, responses, status) { - const dev = stack.dev; - if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request. - if (status == 200) { dev.consoleMsg("Enabled WIFI."); } - }); + // Change the WIFI state if needed. Right now, we always enable it. + // WifiState = { 3: "Disabled", 32768: "Enabled in S0", 32769: "Enabled in S0, Sx/AC" }; + var wifiState = 32769; // For now, always enable WIFI + if (responses['CIM_WiFiPort'].responses.Body.EnabledState != 32769) { + if (wifiState == 3) { + dev.amtstack.CIM_WiFiPort_RequestStateChange(wifiState, null, function (stack, name, responses, status) { + const dev = stack.dev; + if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request. + if (status == 200) { dev.consoleMsg("Disabled WIFI."); } + }); + } else { + dev.amtstack.CIM_WiFiPort_RequestStateChange(wifiState, null, function (stack, name, responses, status) { + const dev = stack.dev; + if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request. + if (status == 200) { dev.consoleMsg("Enabled WIFI."); } + }); + } } } From f150e3ac5fe2ad558f5f8119d13b2c252a90330a Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sun, 19 Jun 2022 12:07:58 -0700 Subject: [PATCH 030/105] Added Web-RDP mouse wheel reverse option. --- public/scripts/agent-rdp-0.0.1.js | 1 + views/default.handlebars | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/public/scripts/agent-rdp-0.0.1.js b/public/scripts/agent-rdp-0.0.1.js index 41412436..36740295 100644 --- a/public/scripts/agent-rdp-0.0.1.js +++ b/public/scripts/agent-rdp-0.0.1.js @@ -198,6 +198,7 @@ var CreateRDPDesktop = function (canvasid) { if (obj.mouseNagleTimer != null) { clearTimeout(obj.mouseNagleTimer); obj.mouseNagleTimer = null; } var delta = 0; if (e.detail) { delta = (e.detail * 120); } else if (e.wheelDelta) { delta = (e.wheelDelta * 3); } + if (obj.m.ReverseMouseWheel) { delta = -1 * delta; } // Reverse the mouse wheel if (delta != 0) { obj.socket.send(JSON.stringify(['wheel', m.x, m.y, delta, false, false])); } e.preventDefault(); return false; diff --git a/views/default.handlebars b/views/default.handlebars index d9d0f835..1066c302 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -1379,6 +1379,7 @@ + @@ -8594,6 +8595,7 @@ desktop.m.onScreenSizeChange = mdeskAdjust; desktop.m.onClipboardChanged = function(text) { if ((text != null) && (desktopsettings.rdpautoclipboard) && (navigator.clipboard != null)) { navigator.clipboard.writeText(text).then(function() { }).catch(function(err) { console.log(err); }) } } // Put remote clipboard data into our clipboard if (desktopsettings.rdpsmb) { desktop.m.SwapMouse = desktopsettings.rdpsmb; } + if (desktopsettings.rdprmw) { desktop.m.ReverseMouseWheel = desktopsettings.rdprmw; } desktop.Start(desktopNode._id, currentNode.rdpport ? currentNode.rdpport : 3389, tsid); desktop.contype = 4; desktop.onConsoleMessageChange = function () { @@ -8882,6 +8884,7 @@ desktopsettings.localkeymap = d7localKeyMap.checked; desktopsettings.rdpsize = d7rdpsize.value; desktopsettings.rdpsmb = d7rdpsmb.checked; + desktopsettings.rdprmw = d7rdprmw.checked; desktopsettings.rdpautoclipboard = d7rdpclip.checked; var rdpflags = 0; for (var i = 1; i < 10; i++) { if ((i != 5) && (Q('d7rdp' + i).checked)) { rdpflags |= (1 << (i - 1)); } } @@ -8902,6 +8905,10 @@ if (desktopsettings.showfocus == false) { desktop.m.focusmode = 0; deskFocusBtn.value = "All Focus"; } if (desktop.State != 0) { desktop.Stop(); setTimeout(function () { connectDesktop(null, 2); }, 50); } } + if (desktop.contype == 4) { + desktop.m.SwapMouse = desktopsettings.rdpsmb; + desktop.m.ReverseMouseWheel = desktopsettings.rdprmw; + } } } @@ -8925,6 +8932,7 @@ if (desktopsettings.rdpsize != null) { d7rdpsize.value = desktopsettings.rdpsize; } if (desktopsettings.rdpflags == null) { desktopsettings.rdpflags = 0x2F; } if (desktopsettings.rdpsmb != null) { d7rdpsmb.checked = desktopsettings.rdpsmb; } + if (desktopsettings.rdprmw != null) { d7rdprmw.checked = desktopsettings.rdprmw; } if (desktopsettings.rdpautoclipboard != null) { d7rdpclip.checked = desktopsettings.rdpautoclipboard; } for (var i = 1; i < 10; i++) { if (i != 5) { Q('d7rdp' + i).checked = ((desktopsettings.rdpflags & (1 << (i - 1))) != 0); } } } From bfacd5ed731693cb220b28b90a99588ba92ceab9 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Mon, 20 Jun 2022 07:25:03 -0400 Subject: [PATCH 031/105] Adding more items to advanced json --- sample-config-advanced.json | 84 +++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 32 deletions(-) diff --git a/sample-config-advanced.json b/sample-config-advanced.json index 5cab7390..622064f1 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -10,7 +10,7 @@ "_WANonly": true, "_LANonly": true, "_maintenanceMode": true, - "_certificatePrivateKeyPassword": [ "password1", "password2" ], + "_certificatePrivateKeyPassword": ["password1", "password2"], "_sessionTime": 60, "_sessionKey": "MyReallySecretPassword1", "_sessionSameSite": "strict", @@ -38,7 +38,6 @@ "_agentCoreDump": true, "_agentCoreDumpUsers": "user1,user2", "_agentSignLock": true, - "_agentTimeStampServer": "http://timestamp.digicert.com", "_ignoreAgentHashCheck": true, "_exactPorts": true, "_allowLoginToken": true, @@ -73,14 +72,15 @@ "_webPush": { "email": "xxxxx@xxxxx.com" }, "_publicPushNotifications": true, "_desktopMultiplex": true, + "_ipBlockedUserRedirect": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "_userAllowedIP": "127.0.0.1,192.168.1.0/24", "_userBlockedIP": "127.0.0.1,::1,192.168.0.100", "_agentAllowedIP": "192.168.0.100/24", "_agentBlockedIP": "127.0.0.1,::1", "_authLog": "c:\\temp\\auth.log", - "_InterUserMessaging": [ "user//admin" ], - "_manageAllDeviceGroups": [ "user//admin" ], - "_manageCrossDomain": [ "user//admin" ], + "_InterUserMessaging": ["user//admin"], + "_manageAllDeviceGroups": ["user//admin"], + "_manageCrossDomain": ["user//admin"], "_localDiscovery": { "name": "Local server name", "info": "Information about this server" @@ -92,6 +92,7 @@ "_mpsAliasPort": 4433, "_mpsAliasHost": "mps.mydomain.com", "_mpsTlsOffload": true, + "_mpsHighSecurity": true, "_no2FactorAuth": true, "_runOnServerStarted": "c:\\tmp\\mcstart.bat", "_runOnServerUpdated": "c:\\tmp\\mcupdate.bat", @@ -163,19 +164,21 @@ "title2": "Servername", "_titlePicture": "title-sample.png", "_loginPicture": "title-sample.png", + "_rootRedirect": "https://www.youtube.com/watch?v=Gs069dndIYk", + "_mobileSite": false, + "_unknownUserRootRedirect": "https://www.youtube.com/watch?v=2Q_ZzBGPdqE", + "_nightMode": 1, "_userQuota": 1048576, "_meshQuota": 248576, + "_loginKey": ["abc", "123"], + "_agentKey": ["abc", "123"], + "_ipkvm": false, "minify": true, - "_guestDeviceSharing" : false, - "_AutoRemoveInactiveDevices": 37, - "_DeviceSearchBarServerAndClientName": false, - "_loginKey": [ "abc", "123" ], - "_agentKey": [ "abc", "123" ], "_newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], "_userNameIsEmail": true, - "_newAccountEmailDomains": [ "sample.com" ], - "_newAccountsRights": [ "nonewgroups", "notools" ], + "_newAccountEmailDomains": ["sample.com"], + "_newAccountsRights": ["nonewgroups", "notools"], "_welcomeText": "Sample Text on Login Page.", "_welcomePicture": "mainwelcome.jpg", "_welcomePictureFullScreen": false, @@ -185,6 +188,13 @@ "_hide": 4, "_footer": "Twitter", "_loginfooter": "This is a private server.", + "_allowSavingDeviceCredentials": false, + "_guestDeviceSharing": false, + "_AutoRemoveInactiveDevices": 37, + "_DeviceSearchBarServerAndClientName": false, + "_agentSelfGuestSharing": { + "expire": 120 + }, "_certUrl": "https://192.168.2.106:443/", "_altMessenging": { "name": "Jitsi", @@ -200,7 +210,7 @@ "protocol": "http", "port": 80, "_ip": "192.168.1.100", - "_filter": [ "mesh/(domainid)/(meshid)", "node/(domainid)/(nodeid)" ] + "_filter": ["mesh/(domainid)/(meshid)", "node/(domainid)/(nodeid)"] }, { "name": "HTTPS", @@ -211,7 +221,7 @@ }, "PreconfiguredRemoteInput": [ { - "name": "CompagnyUrl", + "name": "CompanyUrl", "value": "https://help.mycompany.com/" }, { @@ -222,7 +232,7 @@ "name": "Welcome", "value": "Default welcome text" } - ], + ], "myServer": { "Backup": false, "Restore": false, @@ -325,14 +335,24 @@ "log": "amtactivation.log", "certs": { "mycertname": { - "certfiles": [ "amtacm-leafcert.crt", "amtacm-intermediate1.crt", "amtacm-intermediate2.crt", "amtacm-rootcert.crt" ], + "certfiles": [ + "amtacm-leafcert.crt", + "amtacm-intermediate1.crt", + "amtacm-intermediate2.crt", + "amtacm-rootcert.crt" + ], "keyfile": "amtacm-leafcert.key" } } }, "_amtManager": { "adminAccounts": [{ "user": "admin", "pass": "MyP@ssw0rd" }], - "environmentDetection": [ "domain1.com", "domain2.com", "domain3.com", "domain4.com" ], + "environmentDetection": [ + "domain1.com", + "domain2.com", + "domain3.com", + "domain4.com" + ], "wifiProfiles": [ { "name": "Profile1", @@ -355,8 +375,8 @@ "Strict-Transport-Security": "max-age=360000", "x-frame-options": "SAMEORIGIN" }, - "_agentConfig": [ "webSocketMaskOverride=1", "coreDumpEnabled=1" ], - "_assistantConfig": [ "disableUpdate=1" ], + "_agentConfig": ["webSocketMaskOverride=1", "coreDumpEnabled=1"], + "_assistantConfig": ["disableUpdate=1"], "_sessionRecording": { "_onlySelectedUsers": true, "_onlySelectedUserGroups": true, @@ -367,42 +387,42 @@ "_maxRecordingDays": 15, "_maxRecordingSizeMegabytes": 3, "__protocols__": "Is an array: 1 = Terminal, 2 = Desktop, 5 = Files, 100 = Intel AMT WSMAN, 101 = Intel AMT Redirection, 200 = Messenger", - "protocols": [ 1, 2, 101 ] + "protocols": [1, 2, 101] }, "_authStrategies": { "__comment__": "This section is used to allow users to login using other accounts. You will need to get an API key from the services and register callback URL's", "twitter": { "_callbackurl": "https://server/auth-twitter-callback", "newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], "clientid": "xxxxxxxxxxxxxxxxxxxxxxx", "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "google": { "_callbackurl": "https://server/auth-google-callback", "newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], "clientid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com", "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxx" }, "github": { "_callbackurl": "https://server/auth-github-callback", "newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], "clientid": "xxxxxxxxxxxxxxxxxxxxxxx", "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "reddit": { "_callbackurl": "https://server/auth-reddit-callback", "newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], "clientid": "xxxxxxxxxxxxxxxxxxxxxxx", "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "azure": { "_callbackurl": "https://server/auth-azure-callback", "newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], "clientid": "00000000-0000-0000-0000-000000000000", "clientsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "tenantid": "00000000-0000-0000-0000-000000000000" @@ -410,7 +430,7 @@ "jumpcloud": { "_callbackurl": "https://server/auth-jumpcloud-callback", "newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], "entityid": "meshcentral", "idpurl": "https://sso.jumpcloud.com/saml2/saml2", "cert": "jumpcloud-saml.pem" @@ -419,8 +439,8 @@ "_callbackurl": "https://server/auth-saml-callback", "_disableRequestedAuthnContext": true, "newAccounts": true, - "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ], - "_newAccountsRights": [ "nonewgroups", "notools" ], + "_newAccountsUserGroups": ["ugrp//xxxxxxxxxxxxxxxxx"], + "_newAccountsRights": ["nonewgroups", "notools"], "entityid": "meshcentral", "idpurl": "https://server/saml2", "cert": "saml.pem" @@ -456,7 +476,7 @@ "uid": "anneonyme", "mail": "anneonyme@example.com", "email": "anneonyme@example.com", - "otherMail": [ "other.anneonyme@example.com", "anneonyme@example.com" ] + "otherMail": ["other.anneonyme@example.com", "anneonyme@example.com"] }, "so": { "displayName": "Sticker Sophie", @@ -464,7 +484,7 @@ "uid": "ssticker", "mail": "ssticker@example.com", "email": "ssticker@example.com", - "otherMail": [ "other.ssticker@example.com", "ssticker@example.com" ] + "otherMail": ["other.ssticker@example.com", "ssticker@example.com"] } }, "__LDAPOptions": { @@ -513,7 +533,7 @@ "_sendmail": { "newline": "unix", "path": "/usr/sbin/sendmail", - "_args": [ "-f", "foo@example.com" ] + "_args": ["-f", "foo@example.com"] }, "_sms": { "provider": "twilio", From 10fc9ba2bc71ca634203b5fd06cb8337dcf3edb2 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Mon, 20 Jun 2022 07:32:17 -0400 Subject: [PATCH 032/105] docs - adding meshcentral commandline options --- docs/docs/meshcentral/index.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/docs/meshcentral/index.md b/docs/docs/meshcentral/index.md index 6b40222c..38d51490 100644 --- a/docs/docs/meshcentral/index.md +++ b/docs/docs/meshcentral/index.md @@ -458,6 +458,34 @@ This first line will load many of the “meshcentral-data” files into the data Note that MeshCentral does not currently support placing a Let’s Encrypt certificate in the database. Generally, one would use a reverse proxy with Let’s Encrypt support and TLS offload in the reverse proxy and then run MeshCentral in state-less mode in a Docket container. +## Commandline Options + +In general, doing `--option value` is the same as adding `"option": value` in the settings section of the config.json. + +Here are the most common options found by running `meshcentral --help` + +``` +Run as a background service + --install/uninstall Install MeshCentral as a background service. + --start/stop/restart Control MeshCentral background service. + +Run standalone, console application + --user [username] Always login as [username] if account exists. + --port [number] Web server port number. + --redirport [number] Creates an additional HTTP server to redirect users to the HTTPS server. + --exactports Server must run with correct ports or exit. + --noagentupdate Server will not update mesh agent native binaries. + --nedbtodb Transfer all NeDB records into current database. + --listuserids Show a list of a user identifiers in the database. + --cert [name], (country), (org) Create a web server certificate with [name] server name. + country and organization can optionally be set. + +Server recovery commands, use only when MeshCentral is offline. + --createaccount [userid] Create a new user account. + --resetaccount [userid] Unlock an account, disable 2FA and set a new account password. + --adminaccount [userid] Promote account to site administrator. +``` + ## TLS Offloading A good way for MeshCentral to handle a high traffic is to setup a TLS offload device at front of the server that takes care of doing all the TLS negotiation and encryption so that the server could offload this. There are many vendors who offer TLS or SSL offload as a software module (Nginx* or Apache*) so please contact your network administrator for the best solution that suits your setup. From 025daa3a1358be0b7be38c5bc4599841a4d167c7 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Mon, 20 Jun 2022 07:46:19 -0400 Subject: [PATCH 033/105] Adding back agentTimeStampServer --- sample-config-advanced.json | 1 + 1 file changed, 1 insertion(+) diff --git a/sample-config-advanced.json b/sample-config-advanced.json index 622064f1..69218339 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -38,6 +38,7 @@ "_agentCoreDump": true, "_agentCoreDumpUsers": "user1,user2", "_agentSignLock": true, + "_agentTimeStampServer": "http://timestamp.digicert.com", "_ignoreAgentHashCheck": true, "_exactPorts": true, "_allowLoginToken": true, From d4502f7b11e5b6c6efb227785c4bf9d39c44d2bf Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 20 Jun 2022 10:55:11 -0700 Subject: [PATCH 034/105] Added reverse mouse wheel option to remote desktop and Intel AMT KVM. --- public/scripts/agent-desktop-0.0.2.js | 3 +++ public/scripts/amt-desktop-0.0.2.js | 4 ++++ views/default.handlebars | 17 ++++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/public/scripts/agent-desktop-0.0.2.js b/public/scripts/agent-desktop-0.0.2.js index 4401b365..95428466 100644 --- a/public/scripts/agent-desktop-0.0.2.js +++ b/public/scripts/agent-desktop-0.0.2.js @@ -533,6 +533,9 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) { else if (Button == obj.MouseButton.RIGHT) { Button = obj.MouseButton.LEFT; } } + // Reverse mouse wheel if needed + if (obj.ReverseMouseWheel) { Delta = -1 * Delta; } + var MouseMsg = ""; if (Action == obj.KeyAction.DBLCLICK) { MouseMsg = String.fromCharCode(0x00, obj.InputType.MOUSE, 0x00, 0x0A, 0x00, 0x88, ((X / 256) & 0xFF), (X & 0xFF), ((Y / 256) & 0xFF), (Y & 0xFF)); diff --git a/public/scripts/amt-desktop-0.0.2.js b/public/scripts/amt-desktop-0.0.2.js index ceb550c2..9cde5b2e 100644 --- a/public/scripts/amt-desktop-0.0.2.js +++ b/public/scripts/amt-desktop-0.0.2.js @@ -931,6 +931,10 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) { else if (typeof e.detail == 'number') { v = -1 * e.detail; } else if (typeof e.wheelDelta == 'number') { v = e.wheelDelta; } if (v == 0) return; + + // Reverse mouse wheel if needed + if (obj.ReverseMouseWheel) { v = -1 * v; } + var tmpmask = obj.buttonmask; obj.buttonmask |= (1 << ((v > 0) ? 3 : 4)); obj.mousemove(e, 1); diff --git a/views/default.handlebars b/views/default.handlebars index 1066c302..6a23166e 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -1323,6 +1323,7 @@
Other Settings
+ @@ -1346,6 +1347,7 @@ +
@@ -4853,6 +4855,7 @@ desk.m.ScalingLevel = multidesktopsettings.scaling; if (multidesktopsettings.framerate) { desk.m.FrameRateTimer = multidesktopsettings.framerate; } if (multidesktopsettings.swapmouse) { desk.m.SwapMouse = multidesktopsettings.swapmouse; } + if (multidesktopsettings.rmw) { desk.m.ReverseMouseWheel = multidesktopsettings.rmw; } if (multidesktopsettings.remotekeymap == true) { desk.m.remoteKeyMap = multidesktopsettings.remotekeymap; } //desk.m.onDisplayinfo = deskDisplayInfo; desk.m.onScreenSizeChange = mdeskAdjust; // Multi-Desktop Adjust @@ -8467,6 +8470,7 @@ desktop.m.bpp = (desktopsettings.encoding == 1 || desktopsettings.encoding == 3) ? 1 : 2; desktop.m.useZRLE = (desktopsettings.encoding < 3); desktop.m.localKeyMap = desktopsettings.localkeymap; + desktop.m.ReverseMouseWheel = desktopsettings.kvmrmw; desktop.m.showmouse = desktopsettings.showmouse; desktop.m.onScreenSizeChange = deskAdjust; desktop.m.onKvmData = function (x) { @@ -8579,6 +8583,7 @@ desktop.m.ScalingLevel = desktopsettings.scaling; if (desktopsettings.framerate) { desktop.m.FrameRateTimer = desktopsettings.framerate; } if (desktopsettings.swapmouse) { desktop.m.SwapMouse = desktopsettings.swapmouse; } + if (desktopsettings.rmw) { desktop.m.ReverseMouseWheel = desktopsettings.rmw; } if (desktopsettings.remotekeymap == true) { desktop.m.remoteKeyMap = desktopsettings.remotekeymap; } desktop.m.onDisplayinfo = deskDisplayInfo; desktop.m.onScreenSizeChange = deskAdjust; @@ -8878,10 +8883,12 @@ desktopsettings.scaling = d7bitmapscaling.value; desktopsettings.framerate = d7framelimiter.value; desktopsettings.swapmouse = d7deskSwapMouse.checked; + desktopsettings.rmw = d7deskrmw.checked; desktopsettings.remotekeymap = d7deskRemoteKeyMap.checked; desktopsettings.autoclipboard = d7deskAutoClipboard.checked; desktopsettings.autolock = d7deskAutoLock.checked; desktopsettings.localkeymap = d7localKeyMap.checked; + desktopsettings.kvmrmw = d7kvmrmw.checked; desktopsettings.rdpsize = d7rdpsize.value; desktopsettings.rdpsmb = d7rdpsmb.checked; desktopsettings.rdprmw = d7rdprmw.checked; @@ -8893,19 +8900,21 @@ applyDesktopSettings(); updateDesktopButtons(); if (desktop) { - if (desktop.contype == 1) { + if (desktop.contype == 1) { // Intel AMT KVM desktop.m.SwapMouse = desktopsettings.swapmouse; + desktop.m.ReverseMouseWheel = desktopsettings.rmw; desktop.m.remoteKeyMap = desktopsettings.remotekeymap; if (desktop.State != 0) { desktop.m.SendCompressionLevel(webpSupport?4:1, desktopsettings.quality, desktopsettings.scaling, desktopsettings.framerate); desktop.sendCtrlMsg('{"ctrlChannel":"102938","type":"autolock","value":' + desktopsettings.autolock + '}'); } } - if (desktop.contype == 2) { + if (desktop.contype == 2) { // Mesh Agent Remote Desktop + desktop.m.ReverseMouseWheel = desktopsettings.kvmrmw; if (desktopsettings.showfocus == false) { desktop.m.focusmode = 0; deskFocusBtn.value = "All Focus"; } if (desktop.State != 0) { desktop.Stop(); setTimeout(function () { connectDesktop(null, 2); }, 50); } } - if (desktop.contype == 4) { + if (desktop.contype == 4) { // Web-RDP desktop.m.SwapMouse = desktopsettings.rdpsmb; desktop.m.ReverseMouseWheel = desktopsettings.rdprmw; } @@ -8924,10 +8933,12 @@ d7bitmapscaling.value = desktopsettings.scaling; if (desktopsettings.framerate) { d7framelimiter.value = desktopsettings.framerate; } else { d7framelimiter.value = 100; } if (desktopsettings.swapmouse != null) { d7deskSwapMouse.checked = desktopsettings.swapmouse; } + if (desktopsettings.rmw != null) { d7deskrmw.checked = desktopsettings.rmw; } if (desktopsettings.remotekeymap != null) { d7deskRemoteKeyMap.checked = desktopsettings.remotekeymap; } if (desktopsettings.autoclipboard != null) { d7deskAutoClipboard.checked = desktopsettings.autoclipboard; } if (desktopsettings.autolock != null) { d7deskAutoLock.checked = desktopsettings.autolock; } if (desktopsettings.localkeymap) { d7localKeyMap.checked = desktopsettings.localkeymap; } + if (desktopsettings.kvmrmw) { d7kvmrmw.checked = desktopsettings.kvmrmw; } QV('deskFocusBtn', (desktop != null) && (desktop.contype == 2) && (desktop.state != 0) && (desktopsettings.showfocus)); if (desktopsettings.rdpsize != null) { d7rdpsize.value = desktopsettings.rdpsize; } if (desktopsettings.rdpflags == null) { desktopsettings.rdpflags = 0x2F; } From 44994a5a9bc49726076b8ecbcc269d56d25325c1 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 20 Jun 2022 12:03:23 -0700 Subject: [PATCH 035/105] Added experimental options to change the Windows agent resource executable information. --- authenticode.js | 5 +---- meshcentral.js | 31 ++++++++++++++++++++++++++++--- sample-config-advanced.json | 10 ++++++++++ 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/authenticode.js b/authenticode.js index daabd441..3ce33b5c 100644 --- a/authenticode.js +++ b/authenticode.js @@ -1639,7 +1639,6 @@ function createAuthenticodeHandler(path) { // Re-encode the executable signature block const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); - console.log('r3'); // Write the file with the signature block writeExecutableEx(output, p7signature, written, func); @@ -1830,16 +1829,14 @@ function start() { if (err == null) { console.log("Done."); } else { console.log(err); } if (exe != null) { exe.close(); } }); - return; } else { console.log("Changing resources and signing to " + args.out); exe.writeExecutable(args, cert, function (err) { // Signing with resources decoded and re-encoded. if (err == null) { console.log("Done."); } else { console.log(err); } if (exe != null) { exe.close(); } }); - return; } - console.log("Done."); + return; } if (command == 'unsign') { // Unsign an executable if (typeof args.exe != 'string') { console.log("Missing --exe [filename]"); return; } diff --git a/meshcentral.js b/meshcentral.js index cd3364f2..d717609a 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -2886,6 +2886,21 @@ function CreateMeshCentralServer(config, args) { if (args.agenttimestampserver === false) { timeStampUrl = null; } else if (typeof args.agenttimestampserver == 'string') { timeStampUrl = args.agenttimestampserver; } + // Setup agent signing arguments + const signingArguments = { desc: signDesc, url: signUrl, time: timeStampUrl }; + + // See if we have any resources we need to change in the agent + var resChanges = false; + if ((domain.agentfileinfo != null) && (typeof domain.agentfileinfo == 'object')) { + if (typeof domain.agentfileinfo.filedescription == 'string') { signingArguments.FileDescription = domain.agentfileinfo.filedescription; resChanges = true; } + if (typeof domain.agentfileinfo.fileversion == 'string') { signingArguments.FileVersion = domain.agentfileinfo.fileversion; resChanges = true; } + if (typeof domain.agentfileinfo.internalname == 'string') { signingArguments.InternalName = domain.agentfileinfo.internalname; resChanges = true; } + if (typeof domain.agentfileinfo.legalcopyright == 'string') { signingArguments.LegalCopyright = domain.agentfileinfo.legalcopyright; resChanges = true; } + if (typeof domain.agentfileinfo.originalfilename == 'string') { signingArguments.OriginalFilename = domain.agentfileinfo.originalfilename; resChanges = true; } + if (typeof domain.agentfileinfo.productname == 'string') { signingArguments.ProductName = domain.agentfileinfo.productname; resChanges = true; } + if (typeof domain.agentfileinfo.productversion == 'string') { signingArguments.ProductVersion = domain.agentfileinfo.productversion; resChanges = true; } + } + // Setup the pending operations counter var pendingOperations = 1; @@ -2905,7 +2920,7 @@ function CreateMeshCentralServer(config, args) { } // Open the original agent with authenticode - var signeedagentpath = obj.path.join(serverSignedAgentsPath, obj.meshAgentsArchitectureNumbers[archid].localname); + const signeedagentpath = obj.path.join(serverSignedAgentsPath, obj.meshAgentsArchitectureNumbers[archid].localname); const originalAgent = require('./authenticode.js').createAuthenticodeHandler(agentpath); if (originalAgent != null) { // Check if the agent is already signed correctly @@ -2937,8 +2952,18 @@ function CreateMeshCentralServer(config, args) { xagentSignedFunc.objx = objx; xagentSignedFunc.archid = archid; xagentSignedFunc.signeedagentpath = signeedagentpath; - obj.debug('main', "Code signing agent with arguments: " + JSON.stringify({ out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl })); - originalAgent.sign(agentSignCertInfo, { out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl }, xagentSignedFunc); + const xsigningArguments = Object.assign({}, signingArguments); // Shallow clone + xsigningArguments.out = signeedagentpath; + + obj.debug('main', "Code signing agent with arguments: " + JSON.stringify(signingArguments)); + if (resChanges == false) { + // Sign the agent the simple way, without changing any resources. + originalAgent.sign(agentSignCertInfo, xsigningArguments, xagentSignedFunc); + } else { + // Change the agent resources and sign the agent, this is a much more involved process. + // NOTE: This is experimental and could corupt the agent. + originalAgent.writeExecutable(xsigningArguments, agentSignCertInfo, xagentSignedFunc); + } } else { // Signed agent is already ok, use it. originalAgent.close(); diff --git a/sample-config-advanced.json b/sample-config-advanced.json index 69218339..e316f4b5 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -286,6 +286,16 @@ "image": "agent-logo.png", "fileName": "compagnyagent" }, + "_agentFileInfo": { + "__COMMENT__": "This section is experimental", + "_filedescription": "sample_filedescription", + "_fileversion": "0.1.2.3", + "_internalname": "sample_internalname", + "_legalcopyright": "sample_legalcopyright", + "_originalfilename": "sample_originalfilename", + "_productname": "sample_productname", + "_productversion": "0.1.2.3" + }, "_assistantCustomization": { "title": "Company® Product™", "image": "assistant-logo.png", From 63de362bc00e825d7a6ca57076e8c5a052e02cfe Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 20 Jun 2022 13:04:28 -0700 Subject: [PATCH 036/105] Authenticode.js fix when changing resources and signing an un-signed executable. --- authenticode.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/authenticode.js b/authenticode.js index 3ce33b5c..5f437b24 100644 --- a/authenticode.js +++ b/authenticode.js @@ -1240,7 +1240,7 @@ function createAuthenticodeHandler(path) { if ((typeof args.desc == 'string') || (typeof args.url == 'string')) { var codeSigningAttributes = { 'tagClass': 0, 'type': 16, 'constructed': true, 'composed': true, 'value': [] }; if (args.desc != null) { // Encode description as big-endian unicode. - var desc = '', ucs = Buffer.from(args.desc, 'ucs2').toString() + var desc = "", ucs = Buffer.from(args.desc, 'ucs2').toString() for (var k = 0; k < ucs.length; k += 2) { desc += String.fromCharCode(ucs.charCodeAt(k + 1), ucs.charCodeAt(k)); } codeSigningAttributes.value.push({ 'tagClass': 128, 'type': 0, 'constructed': true, 'composed': true, 'value': [{ 'tagClass': 128, 'type': 0, 'constructed': false, 'composed': false, 'value': desc }] }); } @@ -1486,13 +1486,13 @@ function createAuthenticodeHandler(path) { } // Write the entire header to the destination file - //console.log('Write header', fullHeader.length); + //console.log('Write header', fullHeader.length, written); fs.writeSync(output, fullHeader); written += fullHeader.length; // Write the entire executable until the start to the resource segment var totalWrite = resPtr; - //console.log('Write until res', totalWrite); + //console.log('Write until res', totalWrite, written); while ((totalWrite - written) > 0) { tmp = readFileSlice(written, Math.min(totalWrite - written, 65536)); fs.writeSync(output, tmp); @@ -1503,15 +1503,24 @@ function createAuthenticodeHandler(path) { var rsrcSection = generateResourceSection(obj.resources); fs.writeSync(output, rsrcSection); written += rsrcSection.length; + //console.log('Write res', rsrcSection.length, written); // Write until the signature block - totalWrite = obj.header.sigpos + resDeltaSize; - //console.log('Write until signature', totalWrite); + if (obj.header.sigpos > 0) { + // Since the original file was signed, write from the end of the resources to the start of the signature block. + totalWrite = obj.header.sigpos + resDeltaSize; + } else { + // The original file was not signed, write from the end of the resources to the end of the file. + totalWrite = obj.filesize + resDeltaSize; + } + + //console.log('Write until signature', totalWrite, written); while ((totalWrite - written) > 0) { tmp = readFileSlice(written - resDeltaSize, Math.min(totalWrite - written, 65536)); fs.writeSync(output, tmp); written += tmp.length; } + //console.log('Write to signature', written); // Write the signature if needed if (cert != null) { @@ -1829,14 +1838,16 @@ function start() { if (err == null) { console.log("Done."); } else { console.log(err); } if (exe != null) { exe.close(); } }); + return; } else { console.log("Changing resources and signing to " + args.out); exe.writeExecutable(args, cert, function (err) { // Signing with resources decoded and re-encoded. if (err == null) { console.log("Done."); } else { console.log(err); } if (exe != null) { exe.close(); } }); + return; } - return; + console.log("Done."); } if (command == 'unsign') { // Unsign an executable if (typeof args.exe != 'string') { console.log("Missing --exe [filename]"); return; } From 34fdb39dcd830e44e0cd31a4b2dd87c5ac4d53ec Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 20 Jun 2022 14:31:28 -0700 Subject: [PATCH 037/105] Completed support for chaning windows executable file information resources. --- authenticode.js | 38 ++++++++++++++++++--- meshcentral-config-schema.json | 14 ++++++++ meshcentral.js | 60 ++++++++++++++++++++++------------ sample-config-advanced.json | 1 - 4 files changed, 86 insertions(+), 27 deletions(-) diff --git a/authenticode.js b/authenticode.js index 5f437b24..825652d4 100644 --- a/authenticode.js +++ b/authenticode.js @@ -1111,8 +1111,9 @@ function createAuthenticodeHandler(path) { //function padPointer(ptr) { return ptr + (ptr % 4); } // Hash the file using the selected hashing system + // This hash skips the executables CRC and code signing data and signing block obj.getHash = function(algo) { - var hash = crypto.createHash(algo); + const hash = crypto.createHash(algo); runHash(hash, 0, obj.header.peHeaderLocation + 88); runHash(hash, obj.header.peHeaderLocation + 88 + 4, obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); runHash(hash, obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16) + 8, obj.header.sigpos > 0 ? obj.header.sigpos : obj.filesize); @@ -1120,14 +1121,41 @@ function createAuthenticodeHandler(path) { } // Hash of an open file using the selected hashing system - obj.getHashOfFile = function (fd, algo, filesize) { - var hash = crypto.createHash(algo); + // This hash skips the executables CRC and code signing data and signing block + obj.getHashOfFile = function(fd, algo, filesize) { + const hash = crypto.createHash(algo); runHashOnFile(fd, hash, 0, obj.header.peHeaderLocation + 88); runHashOnFile(fd, hash, obj.header.peHeaderLocation + 88 + 4, obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); runHashOnFile(fd, hash, obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16) + 8, obj.header.sigpos > 0 ? obj.header.sigpos : filesize); return hash.digest(); } + // Hash the file using the selected hashing system skipping resource section + // This hash skips the executables CRC, sections table, resource section, code signing data and signing block + obj.getHashNoResources = function (algo) { + if (obj.header.sections['.rsrc'] == null) { return obj.getHash(algo); } // No resources in this executable, return a normal hash + + // Get the sections table start and size + const sectionHeaderPtr = obj.header.SectionHeadersPtr; + const sectionHeaderSize = obj.header.coff.numberOfSections * 40; + + // Get the resource section start and size + const resPtr = obj.header.sections['.rsrc'].rawAddr; + const resSize = obj.header.sections['.rsrc'].rawSize; + + // Get the end-of-file location + const eof = obj.header.sigpos > 0 ? obj.header.sigpos : obj.filesize; + + // Hash the remaining data + const hash = crypto.createHash(algo); + runHash(hash, 0, obj.header.peHeaderLocation + 88); + runHash(hash, obj.header.peHeaderLocation + 88 + 4, obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); + runHash(hash, obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16) + 8, sectionHeaderPtr); + runHash(hash, sectionHeaderPtr + sectionHeaderSize, resPtr); + runHash(hash, resPtr + resSize, eof); + return hash.digest(); + } + // Hash the file from start to end loading 64k chunks function runHash(hash, start, end) { var ptr = start; @@ -1137,8 +1165,8 @@ function createAuthenticodeHandler(path) { // Hash the open file loading 64k chunks // TODO: Do chunks on this!!! function runHashOnFile(fd, hash, start, end) { - var buf = Buffer.alloc(end - start); - var len = fs.readSync(fd, buf, 0, buf.length, start); + const buf = Buffer.alloc(end - start); + const len = fs.readSync(fd, buf, 0, buf.length, start); if (len != buf.length) { console.log('BAD runHashOnFile'); } hash.update(buf); } diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index 22001d21..d00bb162 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -543,6 +543,20 @@ "backgroundColor": { "type": "string", "default": null, "description": "Background color, valid values are RBG in format 0,0,0 to 255,255,255 or format #000000 to #FFFFFF." } } }, + "agentFileInfo": { + "type": "object", + "additionalProperties": false, + "description": "Use this section to set resource metadata of the Windows agents prior to signing. In Windows, you can right-click and select properties to view these values.", + "properties": { + "fileDescription": { "type": "string", "description": "Executable file description." }, + "fileVersion": { "type": "string", "description": "Executable file version, generally in the form of 1.2.3.4." }, + "internalName": { "type": "string", "description": "Executable internal name." }, + "legalCopyright": { "type": "string", "description": "Executable legal copyright." }, + "originalFilename": { "type": "string", "description": "Executable original file name." }, + "productName": { "type": "string", "description": "Executable product name." }, + "productCersion": { "type": "string", "description": "Executable product version, generally in the form of 1.2.3.4." } + } + }, "assistantCustomization": { "type": "object", "additionalProperties": false, diff --git a/meshcentral.js b/meshcentral.js index d717609a..a7ae60f4 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -2886,21 +2886,6 @@ function CreateMeshCentralServer(config, args) { if (args.agenttimestampserver === false) { timeStampUrl = null; } else if (typeof args.agenttimestampserver == 'string') { timeStampUrl = args.agenttimestampserver; } - // Setup agent signing arguments - const signingArguments = { desc: signDesc, url: signUrl, time: timeStampUrl }; - - // See if we have any resources we need to change in the agent - var resChanges = false; - if ((domain.agentfileinfo != null) && (typeof domain.agentfileinfo == 'object')) { - if (typeof domain.agentfileinfo.filedescription == 'string') { signingArguments.FileDescription = domain.agentfileinfo.filedescription; resChanges = true; } - if (typeof domain.agentfileinfo.fileversion == 'string') { signingArguments.FileVersion = domain.agentfileinfo.fileversion; resChanges = true; } - if (typeof domain.agentfileinfo.internalname == 'string') { signingArguments.InternalName = domain.agentfileinfo.internalname; resChanges = true; } - if (typeof domain.agentfileinfo.legalcopyright == 'string') { signingArguments.LegalCopyright = domain.agentfileinfo.legalcopyright; resChanges = true; } - if (typeof domain.agentfileinfo.originalfilename == 'string') { signingArguments.OriginalFilename = domain.agentfileinfo.originalfilename; resChanges = true; } - if (typeof domain.agentfileinfo.productname == 'string') { signingArguments.ProductName = domain.agentfileinfo.productname; resChanges = true; } - if (typeof domain.agentfileinfo.productversion == 'string') { signingArguments.ProductVersion = domain.agentfileinfo.productversion; resChanges = true; } - } - // Setup the pending operations counter var pendingOperations = 1; @@ -2929,11 +2914,33 @@ function CreateMeshCentralServer(config, args) { (destinationAgent != null) && (destinationAgent.fileHashSigned != null) && (Buffer.compare(destinationAgent.fileHashSigned, destinationAgent.fileHashActual) == 0) && - ((Buffer.compare(destinationAgent.fileHashSigned, originalAgent.getHash(destinationAgent.fileHashAlgo))) == 0) && (destinationAgent.signingAttribs.indexOf(signUrl) >= 0) && (destinationAgent.signingAttribs.indexOf(signDesc) >= 0) ); - if (destinationAgent != null) { destinationAgent.close(); } + + if (destinationAgent != null) { + // If the agent is signed correctly, look to see if the resources in the destination agent are correct + var orgVersionStrings = originalAgent.getVersionInfo(); + if (destinationAgentOk == true) { + var versionStrings = destinationAgent.getVersionInfo(); + var versionProperties = ['FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'OriginalFilename', 'ProductName', 'ProductVersion']; + for (var i in versionProperties) { + const prop = versionProperties[i], propl = prop.toLowerCase(); + if ((domain.agentfileinfo != null) && (typeof domain.agentfileinfo == 'object') && (typeof domain.agentfileinfo[propl] == 'string')) { + if (domain.agentfileinfo[propl] != versionStrings[prop]) { destinationAgentOk = false; } // If the resource we want is not the same as the destination executable, we need to re-sign the agent. + } else { + if (orgVersionStrings[prop] != versionStrings[prop]) { destinationAgentOk = false; } // if the resource of the orginal agent not the same as the destination executable, we need to re-sign the agent. + } + } + } + + // If everything looks ok, runs a hash of the original and destination agent skipping the CRC, resource and signature blocks. If different, sign the agent again. + if ((destinationAgentOk == true) && (originalAgent.getHashNoResources('sha384').compare(destinationAgent.getHashNoResources('sha384')) != 0)) { destinationAgentOk = false; } + + // We are done comparing the destination agent, close it. + destinationAgent.close(); + } + if (destinationAgentOk == false) { // If not signed correctly, sign it. First, create the server signed agent folder if needed try { obj.fs.mkdirSync(serverSignedAgentsPath); } catch (ex) { } @@ -2952,17 +2959,28 @@ function CreateMeshCentralServer(config, args) { xagentSignedFunc.objx = objx; xagentSignedFunc.archid = archid; xagentSignedFunc.signeedagentpath = signeedagentpath; - const xsigningArguments = Object.assign({}, signingArguments); // Shallow clone - xsigningArguments.out = signeedagentpath; + // Parse the resources in the executable and make any required changes + var resChanges = false, versionStrings = null; + if ((domain.agentfileinfo != null) && (typeof domain.agentfileinfo == 'object')) { + versionStrings = originalAgent.getVersionInfo(); + var versionProperties = ['FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'OriginalFilename', 'ProductName', 'ProductVersion']; + for (var i in versionProperties) { + const prop = versionProperties[i], propl = prop.toLowerCase(); + if (domain.agentfileinfo[propl] && (domain.agentfileinfo[propl] != versionStrings[prop])) { versionStrings[prop] = domain.agentfileinfo[propl]; resChanges = true; } + } + if (resChanges == true) { originalAgent.setVersionInfo(versionStrings); } + } + + const signingArguments = { out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl }; // Shallow clone obj.debug('main', "Code signing agent with arguments: " + JSON.stringify(signingArguments)); if (resChanges == false) { // Sign the agent the simple way, without changing any resources. - originalAgent.sign(agentSignCertInfo, xsigningArguments, xagentSignedFunc); + originalAgent.sign(agentSignCertInfo, signingArguments, xagentSignedFunc); } else { // Change the agent resources and sign the agent, this is a much more involved process. // NOTE: This is experimental and could corupt the agent. - originalAgent.writeExecutable(xsigningArguments, agentSignCertInfo, xagentSignedFunc); + originalAgent.writeExecutable(signingArguments, agentSignCertInfo, xagentSignedFunc); } } else { // Signed agent is already ok, use it. diff --git a/sample-config-advanced.json b/sample-config-advanced.json index e316f4b5..6954c431 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -287,7 +287,6 @@ "fileName": "compagnyagent" }, "_agentFileInfo": { - "__COMMENT__": "This section is experimental", "_filedescription": "sample_filedescription", "_fileversion": "0.1.2.3", "_internalname": "sample_internalname", From 3d0e19d88526b23e78d40a221563e0bc34f45d24 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 20 Jun 2022 22:56:26 -0700 Subject: [PATCH 038/105] Version 1.0.39 --- package.json | 2 +- public/scripts/agent-desktop-0.0.2-min.js | 2 +- public/scripts/agent-rdp-0.0.1-min.js | 2 +- public/scripts/amt-desktop-0.0.2-min.js | 2 +- translate/translate.json | 6154 +++++++++++---------- 5 files changed, 3103 insertions(+), 3059 deletions(-) diff --git a/package.json b/package.json index 5a6e398a..28c2985a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "1.0.38", + "version": "1.0.39", "keywords": [ "Remote Device Management", "Remote Device Monitoring", diff --git a/public/scripts/agent-desktop-0.0.2-min.js b/public/scripts/agent-desktop-0.0.2-min.js index 8496d77a..bffc1eba 100644 --- a/public/scripts/agent-desktop-0.0.2-min.js +++ b/public/scripts/agent-desktop-0.0.2-min.js @@ -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 p={};"string"==typeof(p.CanvasId=e)&&(p.CanvasId=Q(e)),p.Canvas=p.CanvasId.getContext("2d"),p.scrolldiv=t,p.State=0,p.PendingOperations=[],p.tilesReceived=0,p.TilesDrawn=0,p.KillDraw=0,p.ipad=!1,p.tabletKeyboardVisible=!1,p.LastX=0,p.LastY=0,p.touchenabled=0,p.submenuoffset=0,p.touchtimer=null,p.TouchArray={},p.connectmode=0,p.connectioncount=0,p.rotation=0,p.protocol=2,p.debugmode=0,p.firstUpKeys=[],p.stopInput=!1,p.localKeyMap=!0,p.remoteKeyMap=!1,p.pressedKeys=[],p.sessionid=0,p.username,p.oldie=!1,p.ImageType=1,p.CompressionLevel=50,p.ScalingLevel=1024,p.FrameRateTimer=100,p.SwapMouse=!1,p.UseExtendedKeyFlag=!0,p.FirstDraw=!1,p.onRemoteInputLockChanged=null,p.RemoteInputLock=null,p.onKeyboardStateChanged=null,p.KeyboardState=0,p.ScreenWidth=960,p.ScreenHeight=701,p.width=960,p.height=960,p.displays=null,p.selectedDisplay=null,p.onScreenSizeChange=null,p.onMessage=null,p.onConnectCountChanged=null,p.onDebugMessage=null,p.onTouchEnabledChanged=null,p.onDisplayinfo=null;var S=!(p.accumulator=null),v="default";p.mouseCursorActive=function(e){S!=e&&(S=e,p.CanvasId.style.cursor=1==e?v:"default")};var C=["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"];p.Start=function(){p.State=0,p.accumulator=null},p.Stop=function(){p.setRotation(0),p.UnGrabKeyInput(),p.UnGrabMouseInput(),p.touchenabled=0,null!=p.onScreenSizeChange&&p.onScreenSizeChange(p,p.ScreenWidth,p.ScreenHeight,p.CanvasId),p.Canvas.clearRect(0,0,p.CanvasId.width,p.CanvasId.height)},p.xxStateChange=function(e){p.State!=e&&(p.State=e,p.CanvasId.style.cursor="default",0===e&&p.Stop())},p.send=function(e){2>32)+p.intToStr(32&o)):(p.recordedSize+=n.length,p.shortToStr(e)+p.shortToStr(t)+p.intToStr(n.length)+p.intToStr(o>>32)+p.intToStr(32&o)+n)}return p.SendKeyMsg=function(e,t){var n,o;null!=e&&(t=t||window.event,n=!1,0==(n=(p.UseExtendedKeyFlag||1==urlargs.extkeys)&&"string"==typeof t.code&&(t.code.startsWith("Arrow")||0<=r.indexOf(t.code))?!0:n)&&t.code&&0==t.code.startsWith("NumPad")&&0==p.localKeyMap?null!=(o=(o=t).code.startsWith("Key")&&4==o.code.length?o.code.charCodeAt(3):o.code.startsWith("Digit")&&6==o.code.length?o.code.charCodeAt(5):o.code.startsWith("Numpad")&&7==o.code.length?o.code.charCodeAt(6)+48:a[o.code])&&p.SendKeyMsgKC(e,o,n):(59==(o=t.keyCode)?o=186:173==o?o=189:61==o&&(o=187),p.SendKeyMsgKC(e,o,n)))},p.SendRemoteInputLock=function(e){p.send(String.fromCharCode(0,87,0,5,e))},p.SendMessage=function(e){3==p.State&&p.send(String.fromCharCode(0,17)+p.shortToStr(4+e.length)+e)},p.SendKeyMsgKC=function(e,t,n){if(3==p.State)if("object"==typeof e)for(var o in e)p.SendKeyMsgKC(e[o][0],e[o][1],e[o][2]);else{1==e?-1==p.pressedKeys.indexOf(t)&&p.pressedKeys.unshift(t):2==e&&-1!=(o=p.pressedKeys.indexOf(t))&&p.pressedKeys.splice(o,1),0>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,p.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,p.InputType.MOUSE,0,10,0,e==p.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),p.Action==p.KeyAction.NONE?0==p.Alternate||p.ipad?(p.send(i),p.Alternate=1):p.Alternate=0:p.send(i)))},p.GetDisplayNumbers=function(){p.send(String.fromCharCode(0,11,0,4))},p.SetDisplay=function(e){p.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},p.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},p.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},p.onResize=function(){0!=p.ScreenWidth&&0!=p.ScreenHeight&&(p.Canvas.canvas.width==p.ScreenWidth&&p.Canvas.canvas.height==p.ScreenHeight||(p.FirstDraw&&(p.Canvas.canvas.width=p.ScreenWidth,p.Canvas.canvas.height=p.ScreenHeight,p.Canvas.fillRect(0,0,p.ScreenWidth,p.ScreenHeight),null!=p.onScreenSizeChange&&p.onScreenSizeChange(p,p.ScreenWidth,p.ScreenHeight,p.CanvasId)),p.FirstDraw=!1,1>32)+p.intToStr(32&o)):(p.recordedSize+=n.length,p.shortToStr(e)+p.shortToStr(t)+p.intToStr(n.length)+p.intToStr(o>>32)+p.intToStr(32&o)+n)}return p.SendKeyMsg=function(e,t){var n,o;null!=e&&(t=t||window.event,n=!1,0==(n=(p.UseExtendedKeyFlag||1==urlargs.extkeys)&&"string"==typeof t.code&&(t.code.startsWith("Arrow")||0<=r.indexOf(t.code))?!0:n)&&t.code&&0==t.code.startsWith("NumPad")&&0==p.localKeyMap?null!=(o=(o=t).code.startsWith("Key")&&4==o.code.length?o.code.charCodeAt(3):o.code.startsWith("Digit")&&6==o.code.length?o.code.charCodeAt(5):o.code.startsWith("Numpad")&&7==o.code.length?o.code.charCodeAt(6)+48:a[o.code])&&p.SendKeyMsgKC(e,o,n):(59==(o=t.keyCode)?o=186:173==o?o=189:61==o&&(o=187),p.SendKeyMsgKC(e,o,n)))},p.SendRemoteInputLock=function(e){p.send(String.fromCharCode(0,87,0,5,e))},p.SendMessage=function(e){3==p.State&&p.send(String.fromCharCode(0,17)+p.shortToStr(4+e.length)+e)},p.SendKeyMsgKC=function(e,t,n){if(3==p.State)if("object"==typeof e)for(var o in e)p.SendKeyMsgKC(e[o][0],e[o][1],e[o][2]);else{1==e?-1==p.pressedKeys.indexOf(t)&&p.pressedKeys.unshift(t):2==e&&-1!=(o=p.pressedKeys.indexOf(t))&&p.pressedKeys.splice(o,1),0>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,p.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,p.InputType.MOUSE,0,10,0,e==p.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),p.Action==p.KeyAction.NONE?0==p.Alternate||p.ipad?(p.send(i),p.Alternate=1):p.Alternate=0:p.send(i)))},p.GetDisplayNumbers=function(){p.send(String.fromCharCode(0,11,0,4))},p.SetDisplay=function(e){p.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},p.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},p.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},p.onResize=function(){0!=p.ScreenWidth&&0!=p.ScreenHeight&&(p.Canvas.canvas.width==p.ScreenWidth&&p.Canvas.canvas.height==p.ScreenHeight||(p.FirstDraw&&(p.Canvas.canvas.width=p.ScreenWidth,p.Canvas.canvas.height=p.ScreenHeight,p.Canvas.fillRect(0,0,p.ScreenWidth,p.ScreenHeight),null!=p.onScreenSizeChange&&p.onScreenSizeChange(p,p.ScreenWidth,p.ScreenHeight,p.CanvasId)),p.FirstDraw=!1,1a.ScreenWidth||t.y>a.ScreenHeight))return a.mouseNagleData=["mouse",t.x,t.y,0,!1],null==a.mouseNagleTimer&&(a.mouseNagleTimer=setTimeout(function(){a.socket.send(JSON.stringify(a.mouseNagleData)),a.mouseNagleTimer=null},50)),e.preventDefault(),!1}},a.m.mouseup=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!1])),e.preventDefault(),!1}},a.m.mousedown=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!0])),e.preventDefault(),!1}},a.m.handleKeyUp=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!1])),e.preventDefault(),!1},a.m.handleKeyDown=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!0])),e.preventDefault(),!1},a.m.mousewheel=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight)){null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null);var n=0;return e.detail?n=120*e.detail:e.wheelDelta&&(n=3*e.wheelDelta),0!=n&&a.socket.send(JSON.stringify(["wheel",t.x,t.y,n,!1,!1])),e.preventDefault(),!1}}},a.m.SendStringUnicode=function(e){a.socket&&3==a.State&&a.socket.send(JSON.stringify(["utype",e]))},a.m.SendKeyMsgKC=function(e,t,n){if(3==a.State)if("object"==typeof e)for(var s in e)a.m.SendKeyMsgKC(e[s][0],e[s][1],e[s][2]);else{t=i[t];null!=t&&a.socket.send(JSON.stringify(["scancode",t,0!=(1&e)]))}},a.m.mousedblclick=function(){},a.m.handleKeyPress=function(){},a.m.setRotation=function(){},a.m.sendcad=function(){a.socket.send(JSON.stringify(["scancode",29,!0])),a.socket.send(JSON.stringify(["scancode",56,!0])),a.socket.send(JSON.stringify(["scancode",57427,!0])),a.socket.send(JSON.stringify(["scancode",57427,!1])),a.socket.send(JSON.stringify(["scancode",56,!1])),a.socket.send(JSON.stringify(["scancode",29,!1]))};var i={9:15,16:42,17:29,18:56,27:1,33:57417,34:57425,35:57423,36:57415,37:57419,38:57416,39:57421,40:57424,44:57399,45:57426,46:57427,65:30,66:48,67:46,68:32,69:18,70:33,71:34,72:35,73:23,74:36,75:37,76:38,77:50,78:49,79:24,80:25,81:16,82:19,83:31,84:20,85:22,86:47,87:17,88:45,89:21,90:44,91:57435,112:59,113:60,114:61,115:62,116:63,117:64,118:65,119:66,120:67,121:68,122:87,123:88};return a} \ No newline at end of file +var CreateRDPDesktop=function(e){var a={};function n(e){return(!0===a.m.SwapMouse?[2,0,1,0,0]:[1,0,2,0,0])[e]}function o(e){a.State!=e&&(a.State=e,null!=a.onStateChanged&&a.onStateChanged(a,a.State))}function s(e){var t=a.Canvas.canvas.height/a.CanvasId.clientHeight,n=a.Canvas.canvas.width/a.CanvasId.clientWidth,s=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}(a.Canvas.canvas),n=(e.pageX-s[0])*n,t=(e.pageY-s[1])*t;return e.addx&&(n+=e.addx),e.addy&&(t+=e.addy),{x:n,y:t}}a.m={KeyAction:{NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6}},a.State=0,a.canvas=Q(e),"string"==typeof(a.CanvasId=e)&&(a.CanvasId=Q(e)),a.Canvas=a.CanvasId.getContext("2d"),a.ScreenWidth=a.width=1280,a.ScreenHeight=a.height=1024,a.m.onClipboardChanged=null,a.onConsoleMessageChange=null,a.Start=function(e,t,n){o(1),a.nodeid=e,a.port=t;var s={savepass:(a.credentials=n).savecred,useServerCreds:n.servercred,width:n.width,height:n.height,flags:n.flags,workingDir:n.workdir,alternateShell:n.altshell};n.width&&n.height&&(s.width=a.ScreenWidth=a.width=n.width,s.height=a.ScreenHeight=a.height=n.height,delete n.width,delete n.height),a.render=new Mstsc.Canvas.create(a.canvas),a.socket=new WebSocket("wss://"+window.location.host+"/mstscrelay.ashx"),a.socket.binaryType="arraybuffer",a.socket.onopen=function(){o(2),a.socket.send(JSON.stringify(["infos",{ip:a.nodeid,port:a.port,screen:{width:a.width,height:a.height},domain:n.domain,username:n.username,password:n.password,options:s,locale:Mstsc.locale()}]))},a.socket.onmessage=function(e){if("string"==typeof e.data){var t=JSON.parse(e.data);switch(t[0]){case"rdp-connect":o(3),a.rotation=0,a.Canvas.setTransform(1,0,0,1,0,0),a.Canvas.canvas.width=a.ScreenWidth,a.Canvas.canvas.height=a.ScreenHeight,a.Canvas.fillRect(0,0,a.ScreenWidth,a.ScreenHeight),null!=a.m.onScreenSizeChange&&a.m.onScreenSizeChange(a,a.ScreenWidth,a.ScreenHeight,a.CanvasId);break;case"rdp-bitmap":if(null==a.bitmapData)break;var n=t[1];n.data=a.bitmapData,delete a.bitmapData,a.render.update(n);break;case"rdp-close":a.Stop();break;case"rdp-error":switch(a.consoleMessageTimeout=5,a.consoleMessage=t[1],delete a.consoleMessageArgs,2a.ScreenWidth||t.y>a.ScreenHeight))return a.mouseNagleData=["mouse",t.x,t.y,0,!1],null==a.mouseNagleTimer&&(a.mouseNagleTimer=setTimeout(function(){a.socket.send(JSON.stringify(a.mouseNagleData)),a.mouseNagleTimer=null},50)),e.preventDefault(),!1}},a.m.mouseup=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!1])),e.preventDefault(),!1}},a.m.mousedown=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!0])),e.preventDefault(),!1}},a.m.handleKeyUp=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!1])),e.preventDefault(),!1},a.m.handleKeyDown=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!0])),e.preventDefault(),!1},a.m.mousewheel=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight)){null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null);var n=0;return e.detail?n=120*e.detail:e.wheelDelta&&(n=3*e.wheelDelta),a.m.ReverseMouseWheel&&(n*=-1),0!=n&&a.socket.send(JSON.stringify(["wheel",t.x,t.y,n,!1,!1])),e.preventDefault(),!1}}},a.m.SendStringUnicode=function(e){a.socket&&3==a.State&&a.socket.send(JSON.stringify(["utype",e]))},a.m.SendKeyMsgKC=function(e,t,n){if(3==a.State)if("object"==typeof e)for(var s in e)a.m.SendKeyMsgKC(e[s][0],e[s][1],e[s][2]);else{t=i[t];null!=t&&a.socket.send(JSON.stringify(["scancode",t,0!=(1&e)]))}},a.m.mousedblclick=function(){},a.m.handleKeyPress=function(){},a.m.setRotation=function(){},a.m.sendcad=function(){a.socket.send(JSON.stringify(["scancode",29,!0])),a.socket.send(JSON.stringify(["scancode",56,!0])),a.socket.send(JSON.stringify(["scancode",57427,!0])),a.socket.send(JSON.stringify(["scancode",57427,!1])),a.socket.send(JSON.stringify(["scancode",56,!1])),a.socket.send(JSON.stringify(["scancode",29,!1]))};var i={9:15,16:42,17:29,18:56,27:1,33:57417,34:57425,35:57423,36:57415,37:57419,38:57416,39:57421,40:57424,44:57399,45:57426,46:57427,65:30,66:48,67:46,68:32,69:18,70:33,71:34,72:35,73:23,74:36,75:37,76:38,77:50,78:49,79:24,80:25,81:16,82:19,83:31,84:20,85:22,86:47,87:17,88:45,89:21,90:44,91:57435,112:59,113:60,114:61,115:62,116:63,117:64,118:65,119:66,120:67,121:68,122:87,123:88};return a} \ No newline at end of file diff --git a/public/scripts/amt-desktop-0.0.2-min.js b/public/scripts/amt-desktop-0.0.2-min.js index d974f7c5..590f4787 100644 --- a/public/scripts/amt-desktop-0.0.2-min.js +++ b/public/scripts/amt-desktop-0.0.2-min.js @@ -1 +1 @@ -var CreateAmtRemoteDesktop=function(e,t){var S={};function g(e){return String.fromCharCode.apply(null,e)}function p(e,t,a,n,r,o,i){var s,c,h,d,l=e[t++],v={},u=0,m=0;if(0==l){if(2==S.bpp)for(d=0;d>8&248)+","+(c>>3&252)+","+((31&c)<<3))+")");var f=k(a);n=x(0,n),a=f,S.canvas.fillRect(a,n,r,o)}else if(1>d&p],u++)}else{for(d=0;d>d&p],u++)}w(S.spare,a,n)}else if(128==l){if(2==S.bpp)for(;u>8&248,S.spare.data[r+1]=e>>3&252,S.spare.data[r+2]=(31&e)<<3}function b(e,t,a){if(S.graymode){var n=t<<2;for(S.lowcolor&&(e<<=4);0<=--a;)S.spare.data[n]=S.spare.data[n+1]=S.spare.data[n+2]=e,n+=4}else for(var n=t<<2,r=224&e,o=(28&e)<<3,i=T((3&e)<<6);0<=--a;)S.spare.data[n]=r,S.spare.data[n+1]=o,S.spare.data[n+2]=i,n+=4}function D(e,t,a){for(var n=t<<2,r=e>>8&248,o=e>>3&252,i=(31&e)<<3;0<=--a;)S.spare.data[n]=r,S.spare.data[n+1]=o,S.spare.data[n+2]=i,n+=4}function k(e){return 0==S.rotation||1==S.rotation?e:2==S.rotation?e-S.canvas.canvas.width:3==S.rotation?e-S.canvas.canvas.height:0}function x(e,t){return 0==S.rotation?t:1==S.rotation?t-S.canvas.canvas.width:2==S.rotation?t-S.canvas.canvas.height:3==S.rotation?t:0}function T(e){return 127>32)+IntToStr(32&n)):(S.recordedSize+=a.length,ShortToStr(e)+ShortToStr(t)+IntToStr(a.length)+IntToStr(n>>32)+IntToStr(32&n)+a)}return S.GrabMouseInput=function(){var e;1!=n&&((e=S.canvas.canvas).onmouseup=S.mouseup,e.onmousedown=S.mousedown,e.onmousemove=S.mousemove,e.onwheel=S.mousewheel,n=!0)},S.UnGrabMouseInput=function(){var e;0!=n&&((e=S.canvas.canvas).onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.onwheel=null,n=!1)},S.GrabKeyInput=function(){1!=o&&(document.onkeyup=S.handleKeyUp,document.onkeydown=S.handleKeyDown,document.onkeypress=S.handleKeys,o=!0)},S.UnGrabKeyInput=function(){0!=o&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,o=!1)},S.handleKeys=function(e){return S.haltEvent(e)},S.handleKeyUp=function(e){return a(0,e)},S.handleKeyDown=function(e){return a(1,e)},S.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},S.mousedblclick=function(e){},S.mousewheel=function(e){var t=0;if("number"==typeof e.deltaY?t=-1*e.deltaY:"number"==typeof e.detail?t=-1*e.detail:"number"==typeof e.wheelDelta&&(t=e.wheelDelta),0!=t){var a=S.buttonmask;return S.buttonmask|=1<<(0>8,255&S.width,S.height>>8,255&S.height)+S.DeskRecordServerInit.substring(4),S.recordedData.push(I(2,1,S.DeskRecordServerInit)),S.recordedData.push(I(3,0,atob(S.CanvasId.toDataURL("image/png").split(",")[1]))),!0)},S.StopRecording=function(){if(null!=S.recordedData){var e=S.recordedData;return e.push(I(3,0,"MeshCentralMCREC")),delete S.recordedData,delete S.recordedStart,delete S.recordedSize,e}},S} \ No newline at end of file +var CreateAmtRemoteDesktop=function(e,t){var S={};function g(e){return String.fromCharCode.apply(null,e)}function p(e,t,a,n,r,o,i){var s,c,h,d,l=e[t++],v={},u=0,m=0;if(0==l){if(2==S.bpp)for(d=0;d>8&248)+","+(c>>3&252)+","+((31&c)<<3))+")");var f=k(a);n=x(0,n),a=f,S.canvas.fillRect(a,n,r,o)}else if(1>d&p],u++)}else{for(d=0;d>d&p],u++)}w(S.spare,a,n)}else if(128==l){if(2==S.bpp)for(;u>8&248,S.spare.data[r+1]=e>>3&252,S.spare.data[r+2]=(31&e)<<3}function b(e,t,a){if(S.graymode){var n=t<<2;for(S.lowcolor&&(e<<=4);0<=--a;)S.spare.data[n]=S.spare.data[n+1]=S.spare.data[n+2]=e,n+=4}else for(var n=t<<2,r=224&e,o=(28&e)<<3,i=T((3&e)<<6);0<=--a;)S.spare.data[n]=r,S.spare.data[n+1]=o,S.spare.data[n+2]=i,n+=4}function D(e,t,a){for(var n=t<<2,r=e>>8&248,o=e>>3&252,i=(31&e)<<3;0<=--a;)S.spare.data[n]=r,S.spare.data[n+1]=o,S.spare.data[n+2]=i,n+=4}function k(e){return 0==S.rotation||1==S.rotation?e:2==S.rotation?e-S.canvas.canvas.width:3==S.rotation?e-S.canvas.canvas.height:0}function x(e,t){return 0==S.rotation?t:1==S.rotation?t-S.canvas.canvas.width:2==S.rotation?t-S.canvas.canvas.height:3==S.rotation?t:0}function T(e){return 127>32)+IntToStr(32&n)):(S.recordedSize+=a.length,ShortToStr(e)+ShortToStr(t)+IntToStr(a.length)+IntToStr(n>>32)+IntToStr(32&n)+a)}return S.GrabMouseInput=function(){var e;1!=n&&((e=S.canvas.canvas).onmouseup=S.mouseup,e.onmousedown=S.mousedown,e.onmousemove=S.mousemove,e.onwheel=S.mousewheel,n=!0)},S.UnGrabMouseInput=function(){var e;0!=n&&((e=S.canvas.canvas).onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.onwheel=null,n=!1)},S.GrabKeyInput=function(){1!=o&&(document.onkeyup=S.handleKeyUp,document.onkeydown=S.handleKeyDown,document.onkeypress=S.handleKeys,o=!0)},S.UnGrabKeyInput=function(){0!=o&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,o=!1)},S.handleKeys=function(e){return S.haltEvent(e)},S.handleKeyUp=function(e){return a(0,e)},S.handleKeyDown=function(e){return a(1,e)},S.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},S.mousedblclick=function(e){},S.mousewheel=function(e){var t=0;if("number"==typeof e.deltaY?t=-1*e.deltaY:"number"==typeof e.detail?t=-1*e.detail:"number"==typeof e.wheelDelta&&(t=e.wheelDelta),0!=t){S.ReverseMouseWheel&&(t*=-1);var a=S.buttonmask;return S.buttonmask|=1<<(0>8,255&S.width,S.height>>8,255&S.height)+S.DeskRecordServerInit.substring(4),S.recordedData.push(I(2,1,S.DeskRecordServerInit)),S.recordedData.push(I(3,0,atob(S.CanvasId.toDataURL("image/png").split(",")[1]))),!0)},S.StopRecording=function(){if(null!=S.recordedData){var e=S.recordedData;return e.push(I(3,0,"MeshCentralMCREC")),delete S.recordedData,delete S.recordedStart,delete S.recordedSize,e}},S} \ No newline at end of file diff --git a/translate/translate.json b/translate/translate.json index 5aacbd70..8e63e720 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -46,8 +46,8 @@ "zh-chs": " + CIRA", "zh-cht": " + CIRA", "xloc": [ - "default.handlebars->41->1899", - "default.handlebars->41->1901" + "default.handlebars->41->1905", + "default.handlebars->41->1907" ] }, { @@ -299,7 +299,7 @@ "zh-chs": " 可以使用密码提示,但不建议使用。", "zh-cht": " 可以使用密碼提示,但不建議使用。", "xloc": [ - "default.handlebars->41->1778" + "default.handlebars->41->1784" ] }, { @@ -324,8 +324,8 @@ "zh-chs": " 用户需要先登录到该服务器一次,然后才能将其添加到设备组。", "zh-cht": " 用戶需要先登入到該伺服器一次,然後才能將其新增到裝置群。", "xloc": [ - "default.handlebars->41->2019", - "default.handlebars->41->2574" + "default.handlebars->41->2025", + "default.handlebars->41->2580" ] }, { @@ -444,7 +444,7 @@ "zh-chs": " TLS。", "zh-cht": " TLS。", "xloc": [ - "default.handlebars->41->253" + "default.handlebars->41->254" ] }, { @@ -469,7 +469,7 @@ "zh-chs": " 没有TLS。", "zh-cht": " 沒有TLS。", "xloc": [ - "default.handlebars->41->254" + "default.handlebars->41->255" ] }, { @@ -789,7 +789,7 @@ "zh-chs": "(可选的)", "zh-cht": "(可選的)", "xloc": [ - "default.handlebars->41->512" + "default.handlebars->41->513" ] }, { @@ -834,8 +834,8 @@ "zh-chs": "* 8个字符,1个大写,1个小写,1个数字,1个非字母数字。", "zh-cht": "* 8個字符,1個大寫,1個小寫,1個數字,1個非字母數字。", "xloc": [ - "default.handlebars->41->1979", - "default.handlebars->41->474" + "default.handlebars->41->1985", + "default.handlebars->41->475" ] }, { @@ -860,7 +860,7 @@ "zh-chs": "*对于BSD,首先运行“ pkg install wget sudo bash ”。", "zh-cht": "*對於BSD,首先運行“ pkg install wget sudo bash ”。", "xloc": [ - "default.handlebars->41->565" + "default.handlebars->41->566" ] }, { @@ -928,10 +928,10 @@ "zh-chs": ",", "zh-cht": ",", "xloc": [ - "default-mobile.handlebars->11->700", - "default.handlebars->41->2093", - "default.handlebars->41->2357", - "default.handlebars->41->892" + "default-mobile.handlebars->11->701", + "default.handlebars->41->2099", + "default.handlebars->41->2363", + "default.handlebars->41->893" ] }, { @@ -998,7 +998,7 @@ "zh-cht": ",只適用於Intel®AMT", "xloc": [ "default-mobile.handlebars->11->186", - "default.handlebars->41->330" + "default.handlebars->41->331" ] }, { @@ -1022,7 +1022,7 @@ "tr": ", Yerel Cihazlar", "zh-chs": ", 本地设备", "xloc": [ - "default.handlebars->41->332" + "default.handlebars->41->333" ] }, { @@ -1047,8 +1047,8 @@ "zh-chs": ",MQTT在线", "zh-cht": ",MQTT在線", "xloc": [ - "default-mobile.handlebars->11->604", - "default.handlebars->41->1487" + "default-mobile.handlebars->11->605", + "default.handlebars->41->1493" ] }, { @@ -1072,8 +1072,8 @@ "tr": ", İzin Yok", "zh-chs": ", 不同意", "xloc": [ - "default.handlebars->41->1937", - "default.handlebars->41->977" + "default.handlebars->41->1943", + "default.handlebars->41->982" ] }, { @@ -1098,8 +1098,8 @@ "zh-chs": ",提示同意", "zh-cht": ",提示同意", "xloc": [ - "default.handlebars->41->1938", - "default.handlebars->41->978" + "default.handlebars->41->1944", + "default.handlebars->41->983" ] }, { @@ -1109,7 +1109,7 @@ "ru": ", RDP", "fr": ", RDP", "xloc": [ - "default.handlebars->41->1229" + "default.handlebars->41->1234" ] }, { @@ -1129,8 +1129,8 @@ "ru": ", Ежедневно", "tr": ", Günlük yinelenen", "xloc": [ - "default.handlebars->41->1934", - "default.handlebars->41->974" + "default.handlebars->41->1940", + "default.handlebars->41->979" ] }, { @@ -1150,8 +1150,8 @@ "ru": ", Еженедельно", "tr": ", Haftalık yinelenen", "xloc": [ - "default.handlebars->41->1935", - "default.handlebars->41->975" + "default.handlebars->41->1941", + "default.handlebars->41->980" ] }, { @@ -1182,7 +1182,7 @@ "ru": ", Ретранслируемые устройства", "fr": ", Appareils relayés", "xloc": [ - "default.handlebars->41->331" + "default.handlebars->41->332" ] }, { @@ -1193,7 +1193,7 @@ "fr": ", SFTP", "xloc": [ "default-mobile.handlebars->11->468", - "default.handlebars->41->1337" + "default.handlebars->41->1342" ] }, { @@ -1203,7 +1203,7 @@ "ru": ", SSH", "fr": ", SSH", "xloc": [ - "default.handlebars->41->1305" + "default.handlebars->41->1310" ] }, { @@ -1228,7 +1228,7 @@ "zh-chs": ",软体KVM", "zh-cht": ",軟體KVM", "xloc": [ - "default.handlebars->41->1212", + "default.handlebars->41->1217", "sharing.handlebars->11->12" ] }, @@ -1253,8 +1253,8 @@ "tr": ", Araç Çubuğu", "zh-chs": ", 工具栏", "xloc": [ - "default.handlebars->41->1939", - "default.handlebars->41->979" + "default.handlebars->41->1945", + "default.handlebars->41->984" ] }, { @@ -1295,8 +1295,8 @@ "ru": ", Только просмотр рабочего стола", "tr": ", Yalnızca masaüstünü görüntüle", "xloc": [ - "default.handlebars->41->1936", - "default.handlebars->41->976" + "default.handlebars->41->1942", + "default.handlebars->41->981" ] }, { @@ -1324,9 +1324,9 @@ "default-mobile.handlebars->11->411", "default-mobile.handlebars->11->446", "default-mobile.handlebars->11->469", - "default.handlebars->41->1228", - "default.handlebars->41->1306", - "default.handlebars->41->1338", + "default.handlebars->41->1233", + "default.handlebars->41->1311", + "default.handlebars->41->1343", "sharing.handlebars->11->19", "sharing.handlebars->11->27", "sharing.handlebars->11->44", @@ -1522,7 +1522,7 @@ "zh-chs": ",{0}观看", "zh-cht": ",{0}觀看", "xloc": [ - "default.handlebars->41->1223", + "default.handlebars->41->1228", "sharing.handlebars->11->13" ] }, @@ -1543,6 +1543,7 @@ "pt-br": "-", "ru": "-", "xloc": [ + "default.handlebars->container->column_l->p14->p14title->5", "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1", "ssh.handlebars->p11->deskarea0->deskarea1->3", "xterm.handlebars->p11->deskarea0->deskarea1->3" @@ -1628,9 +1629,9 @@ "xloc": [ "default-mobile.handlebars->11->139", "default-mobile.handlebars->11->475", - "default.handlebars->41->1348", - "default.handlebars->41->2154", - "default.handlebars->41->2772", + "default.handlebars->41->1353", + "default.handlebars->41->2160", + "default.handlebars->41->2778", "sharing.handlebars->11->50" ] }, @@ -1792,7 +1793,7 @@ "zh-chs": "1个活跃时段", "zh-cht": "1個活躍時段", "xloc": [ - "default.handlebars->41->2662" + "default.handlebars->41->2668" ] }, { @@ -1818,8 +1819,8 @@ "zh-cht": "1個位元組", "xloc": [ "default-mobile.handlebars->11->149", - "default-mobile.handlebars->11->744", - "default.handlebars->41->2178", + "default-mobile.handlebars->11->745", + "default.handlebars->41->2184", "download.handlebars->3->1", "download2.handlebars->5->1", "sharing.handlebars->11->96" @@ -1858,7 +1859,7 @@ "zh-chs": "1条连接", "zh-cht": "1位聯絡文", "xloc": [ - "default.handlebars->41->1225", + "default.handlebars->41->1230", "sharing.handlebars->11->15" ] }, @@ -1884,9 +1885,9 @@ "zh-chs": "1天", "zh-cht": "1天", "xloc": [ - "default.handlebars->41->261", - "default.handlebars->41->503", - "default.handlebars->41->517" + "default.handlebars->41->262", + "default.handlebars->41->504", + "default.handlebars->41->518" ] }, { @@ -1911,7 +1912,7 @@ "zh-chs": "1组", "zh-cht": "1群", "xloc": [ - "default.handlebars->41->2621" + "default.handlebars->41->2627" ] }, { @@ -1936,9 +1937,9 @@ "zh-chs": "1小时", "zh-cht": "1小時", "xloc": [ - "default.handlebars->41->259", - "default.handlebars->41->501", - "default.handlebars->41->515" + "default.handlebars->41->260", + "default.handlebars->41->502", + "default.handlebars->41->516" ] }, { @@ -1963,8 +1964,8 @@ "zh-chs": "1分钟", "zh-cht": "1分鐘", "xloc": [ - "default.handlebars->41->1057", - "default.handlebars->41->1743" + "default.handlebars->41->1062", + "default.handlebars->41->1749" ] }, { @@ -2014,9 +2015,9 @@ "zh-chs": "1个月", "zh-cht": "1個月", "xloc": [ - "default.handlebars->41->263", - "default.handlebars->41->505", - "default.handlebars->41->519" + "default.handlebars->41->264", + "default.handlebars->41->506", + "default.handlebars->41->520" ] }, { @@ -2041,7 +2042,7 @@ "zh-chs": "有1个用户没有显示,请使用搜索框查找用户...", "zh-cht": "有1個用戶沒有顯示,請使用搜尋框搜尋用戶...", "xloc": [ - "default.handlebars->41->2389" + "default.handlebars->41->2395" ] }, { @@ -2066,7 +2067,7 @@ "zh-chs": "1个节点", "zh-cht": "1個節點", "xloc": [ - "default.handlebars->41->597" + "default.handlebars->41->598" ] }, { @@ -2133,7 +2134,7 @@ "zh-chs": "1秒", "xloc": [ "default-mobile.handlebars->11->361", - "default.handlebars->41->1092" + "default.handlebars->41->1097" ] }, { @@ -2182,7 +2183,7 @@ "tr": "1 seçili cihaz çevrimdışı.", "zh-chs": "1 个选定的设备处于离线状态。", "xloc": [ - "default.handlebars->41->663" + "default.handlebars->41->664" ] }, { @@ -2206,7 +2207,7 @@ "tr": "1 seçili cihaz çevrimiçi.", "zh-chs": "1 个选定的设备在线。", "xloc": [ - "default.handlebars->41->661" + "default.handlebars->41->662" ] }, { @@ -2238,14 +2239,14 @@ "default-mobile.handlebars->11->218", "default-mobile.handlebars->11->222", "default-mobile.handlebars->11->226", - "default.handlebars->41->2393", - "default.handlebars->41->399", - "default.handlebars->41->402", - "default.handlebars->41->406", - "default.handlebars->41->410", - "default.handlebars->41->414", - "default.handlebars->41->418", - "default.handlebars->41->422" + "default.handlebars->41->2399", + "default.handlebars->41->400", + "default.handlebars->41->403", + "default.handlebars->41->407", + "default.handlebars->41->411", + "default.handlebars->41->415", + "default.handlebars->41->419", + "default.handlebars->41->423" ] }, { @@ -2270,9 +2271,9 @@ "zh-chs": "1周", "zh-cht": "1週", "xloc": [ - "default.handlebars->41->262", - "default.handlebars->41->504", - "default.handlebars->41->518" + "default.handlebars->41->263", + "default.handlebars->41->505", + "default.handlebars->41->519" ] }, { @@ -2425,8 +2426,8 @@ "zh-chs": "10分钟", "zh-cht": "10分鐘", "xloc": [ - "default.handlebars->41->1059", - "default.handlebars->41->1745" + "default.handlebars->41->1064", + "default.handlebars->41->1751" ] }, { @@ -2451,7 +2452,7 @@ "zh-chs": "10 秒", "xloc": [ "default-mobile.handlebars->11->363", - "default.handlebars->41->1094" + "default.handlebars->41->1099" ] }, { @@ -2619,8 +2620,8 @@ "zh-chs": "12小时", "zh-cht": "12小時", "xloc": [ - "default.handlebars->41->1067", - "default.handlebars->41->1753" + "default.handlebars->41->1072", + "default.handlebars->41->1759" ] }, { @@ -2773,8 +2774,8 @@ "zh-chs": "15分钟", "zh-cht": "15分鐘", "xloc": [ - "default.handlebars->41->1060", - "default.handlebars->41->1746" + "default.handlebars->41->1065", + "default.handlebars->41->1752" ] }, { @@ -2799,8 +2800,8 @@ "zh-chs": "16小时", "zh-cht": "16小時", "xloc": [ - "default.handlebars->41->1068", - "default.handlebars->41->1754" + "default.handlebars->41->1073", + "default.handlebars->41->1760" ] }, { @@ -2956,8 +2957,8 @@ "zh-chs": "2天", "zh-cht": "2天", "xloc": [ - "default.handlebars->41->1070", - "default.handlebars->41->1756" + "default.handlebars->41->1075", + "default.handlebars->41->1762" ] }, { @@ -2982,8 +2983,8 @@ "zh-chs": "2小时", "zh-cht": "2小時", "xloc": [ - "default.handlebars->41->1064", - "default.handlebars->41->1750" + "default.handlebars->41->1069", + "default.handlebars->41->1756" ] }, { @@ -3008,7 +3009,7 @@ "zh-chs": "两步登录激活失败。", "zh-cht": "兩步登入啟用失敗。", "xloc": [ - "default.handlebars->41->207" + "default.handlebars->41->208" ] }, { @@ -3033,7 +3034,7 @@ "zh-chs": "两步登录激活删除失败。", "zh-cht": "兩步登入啟用刪除失敗。", "xloc": [ - "default.handlebars->41->212" + "default.handlebars->41->213" ] }, { @@ -3161,8 +3162,8 @@ "zh-chs": "24小时", "zh-cht": "24小時", "xloc": [ - "default.handlebars->41->1069", - "default.handlebars->41->1755" + "default.handlebars->41->1074", + "default.handlebars->41->1761" ] }, { @@ -3236,7 +3237,7 @@ "zh-chs": "2FA备份代码已清除", "zh-cht": "2FA備份代碼已清除", "xloc": [ - "default.handlebars->41->2289" + "default.handlebars->41->2295" ] }, { @@ -3247,7 +3248,7 @@ "fr": "2FA est bloqué", "xloc": [ "default-mobile.handlebars->11->60", - "default.handlebars->41->194" + "default.handlebars->41->195" ] }, { @@ -3258,7 +3259,7 @@ "ru": "2-oй фактор", "fr": "Second facteur", "xloc": [ - "default.handlebars->41->2808" + "default.handlebars->41->2814" ] }, { @@ -3283,8 +3284,8 @@ "zh-chs": "启用第二因素身份验证", "zh-cht": "啟用第二因素身份驗證", "xloc": [ - "default.handlebars->41->2407", - "default.handlebars->41->2645" + "default.handlebars->41->2413", + "default.handlebars->41->2651" ] }, { @@ -3433,8 +3434,8 @@ "zh-chs": "30分钟", "zh-cht": "30分鐘", "xloc": [ - "default.handlebars->41->1061", - "default.handlebars->41->1747" + "default.handlebars->41->1066", + "default.handlebars->41->1753" ] }, { @@ -3459,7 +3460,7 @@ "zh-chs": "32 位", "xloc": [ "default-mobile.handlebars->11->512", - "default.handlebars->41->1401" + "default.handlebars->41->1406" ] }, { @@ -3484,8 +3485,8 @@ "zh-chs": "MeshAgent的32位版本", "zh-cht": "MeshAgent的32位版本", "xloc": [ - "default.handlebars->41->555", - "default.handlebars->41->583" + "default.handlebars->41->556", + "default.handlebars->41->584" ] }, { @@ -3537,8 +3538,8 @@ "zh-chs": "4天", "zh-cht": "4天", "xloc": [ - "default.handlebars->41->1071", - "default.handlebars->41->1757" + "default.handlebars->41->1076", + "default.handlebars->41->1763" ] }, { @@ -3563,8 +3564,8 @@ "zh-chs": "4个小时", "zh-cht": "4個小時", "xloc": [ - "default.handlebars->41->1065", - "default.handlebars->41->1751" + "default.handlebars->41->1070", + "default.handlebars->41->1757" ] }, { @@ -3692,8 +3693,8 @@ "zh-chs": "45分钟", "zh-cht": "45分鐘", "xloc": [ - "default.handlebars->41->1062", - "default.handlebars->41->1748" + "default.handlebars->41->1067", + "default.handlebars->41->1754" ] }, { @@ -3743,8 +3744,8 @@ "zh-chs": "5分钟", "zh-cht": "5分鐘", "xloc": [ - "default.handlebars->41->1058", - "default.handlebars->41->1744" + "default.handlebars->41->1063", + "default.handlebars->41->1750" ] }, { @@ -3769,7 +3770,7 @@ "zh-chs": "5秒", "xloc": [ "default-mobile.handlebars->11->362", - "default.handlebars->41->1093" + "default.handlebars->41->1098" ] }, { @@ -3925,8 +3926,8 @@ "zh-chs": "60分钟", "zh-cht": "60分鐘", "xloc": [ - "default.handlebars->41->1063", - "default.handlebars->41->1749" + "default.handlebars->41->1068", + "default.handlebars->41->1755" ] }, { @@ -4003,7 +4004,7 @@ "zh-chs": "64 位", "xloc": [ "default-mobile.handlebars->11->514", - "default.handlebars->41->1403" + "default.handlebars->41->1408" ] }, { @@ -4068,7 +4069,7 @@ "zh-chs": "64位版本的macOS Mesh Agent", "zh-cht": "64位版本的macOS Mesh Agent", "xloc": [ - "default.handlebars->41->570" + "default.handlebars->41->571" ] }, { @@ -4093,8 +4094,8 @@ "zh-chs": "MeshAgent的64位版本", "zh-cht": "MeshAgent的64位版本", "xloc": [ - "default.handlebars->41->559", - "default.handlebars->41->586" + "default.handlebars->41->560", + "default.handlebars->41->587" ] }, { @@ -4163,7 +4164,7 @@ "zh-chs": "7天电源状态", "zh-cht": "7天電源狀態", "xloc": [ - "default.handlebars->41->1127" + "default.handlebars->41->1132" ] }, { @@ -4174,7 +4175,7 @@ "ru": "7 дней", "fr": "7 jours", "xloc": [ - "default.handlebars->41->1758" + "default.handlebars->41->1764" ] }, { @@ -4252,10 +4253,10 @@ "zh-chs": "8小時", "zh-cht": "8小時", "xloc": [ - "default.handlebars->41->1066", - "default.handlebars->41->1752", - "default.handlebars->41->502", - "default.handlebars->41->516" + "default.handlebars->41->1071", + "default.handlebars->41->1758", + "default.handlebars->41->503", + "default.handlebars->41->517" ] }, { @@ -4408,7 +4409,7 @@ "zh-chs": "硬件密钥用作辅助登录身份验证。", "zh-cht": "硬件密鑰用作輔助登入身份驗證。", "xloc": [ - "default.handlebars->41->221" + "default.handlebars->41->222" ] }, { @@ -4580,8 +4581,8 @@ "zh-cht": "ACM", "xloc": [ "default-mobile.handlebars->11->297", - "default.handlebars->41->1917", - "default.handlebars->41->810" + "default.handlebars->41->1923", + "default.handlebars->41->811" ] }, { @@ -4650,8 +4651,8 @@ "zh-chs": "AMT", "zh-cht": "AMT", "xloc": [ - "default.handlebars->41->380", - "default.handlebars->41->632" + "default.handlebars->41->381", + "default.handlebars->41->633" ] }, { @@ -4675,7 +4676,7 @@ "tr": "AMT-OS", "zh-chs": "操作系统", "xloc": [ - "default.handlebars->41->2930" + "default.handlebars->41->2936" ] }, { @@ -4694,7 +4695,7 @@ "ru": "AMT-Redir", "tr": "AMT-Yönlendirme", "xloc": [ - "default.handlebars->41->2815" + "default.handlebars->41->2821" ] }, { @@ -4713,7 +4714,7 @@ "ru": "AMT-WSMAN", "tr": "AMT-WSMAN", "xloc": [ - "default.handlebars->41->2814" + "default.handlebars->41->2820" ] }, { @@ -4869,8 +4870,8 @@ "xloc": [ "default-mobile.handlebars->11->516", "default-mobile.handlebars->11->518", - "default.handlebars->41->829", - "default.handlebars->41->831" + "default.handlebars->41->830", + "default.handlebars->41->832" ] }, { @@ -4895,8 +4896,8 @@ "zh-chs": "拒绝访问", "zh-cht": "拒絕存取", "xloc": [ - "default-mobile.handlebars->11->605", - "default.handlebars->41->1488" + "default-mobile.handlebars->11->606", + "default.handlebars->41->1494" ] }, { @@ -4972,7 +4973,7 @@ "zh-chs": "访问服务器档案", "zh-cht": "存取伺服器檔案", "xloc": [ - "default.handlebars->41->2580" + "default.handlebars->41->2586" ] }, { @@ -5081,11 +5082,11 @@ "default-mobile.handlebars->11->264", "default-mobile.handlebars->11->266", "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountSecurity->1->0", - "default.handlebars->41->1787", - "default.handlebars->41->1789", - "default.handlebars->41->2983", - "default.handlebars->41->770", - "default.handlebars->41->772" + "default.handlebars->41->1793", + "default.handlebars->41->1795", + "default.handlebars->41->2989", + "default.handlebars->41->771", + "default.handlebars->41->773" ] }, { @@ -5109,8 +5110,8 @@ "tr": "Hesap Ayarları", "zh-chs": "帐号设定", "xloc": [ - "default-mobile.handlebars->11->711", - "default.handlebars->41->2859" + "default-mobile.handlebars->11->712", + "default.handlebars->41->2865" ] }, { @@ -5186,7 +5187,7 @@ "zh-chs": "帐户已更改:{0}", "zh-cht": "帳戶已更改:{0}", "xloc": [ - "default.handlebars->41->2262" + "default.handlebars->41->2268" ] }, { @@ -5211,7 +5212,7 @@ "zh-chs": "创建帐户,电子邮件为{0}", "zh-cht": "創建帳戶,電子郵件為{0}", "xloc": [ - "default.handlebars->41->2261" + "default.handlebars->41->2267" ] }, { @@ -5231,7 +5232,7 @@ "ru": "Аккаунт создан, имя {0}.", "tr": "Hesap oluşturuldu, ad {0}.", "xloc": [ - "default.handlebars->41->2324" + "default.handlebars->41->2330" ] }, { @@ -5256,7 +5257,7 @@ "zh-chs": "创建帐户,用户名是{0}", "zh-cht": "帳戶已創建,用戶名是{0}", "xloc": [ - "default.handlebars->41->2260" + "default.handlebars->41->2266" ] }, { @@ -5282,9 +5283,9 @@ "zh-cht": "帳戶已被鎖定", "xloc": [ "default-mobile.handlebars->11->64", - "default.handlebars->41->198", - "default.handlebars->41->2409", - "default.handlebars->41->2577" + "default.handlebars->41->199", + "default.handlebars->41->2415", + "default.handlebars->41->2583" ] }, { @@ -5309,8 +5310,8 @@ "zh-chs": "达到帐户限制。", "zh-cht": "達到帳戶限制。", "xloc": [ - "default-mobile.handlebars->11->723", - "default.handlebars->41->2871", + "default-mobile.handlebars->11->724", + "default.handlebars->41->2877", "login-mobile.handlebars->5->6", "login.handlebars->5->6", "login2.handlebars->7->8" @@ -5365,7 +5366,7 @@ "zh-chs": "帐号登录", "zh-cht": "帳號登錄", "xloc": [ - "default.handlebars->41->2197" + "default.handlebars->41->2203" ] }, { @@ -5389,7 +5390,7 @@ "tr": "{0}, {1}, {2} adresinden hesap girişi", "zh-chs": "来自 {0}、{1}、{2} 的帐户登录", "xloc": [ - "default.handlebars->41->2303" + "default.handlebars->41->2309" ] }, { @@ -5414,7 +5415,7 @@ "zh-chs": "帐户登出", "zh-cht": "帳戶登出", "xloc": [ - "default.handlebars->41->2198" + "default.handlebars->41->2204" ] }, { @@ -5466,7 +5467,7 @@ "zh-chs": "帐户密码已更改:{0}", "zh-cht": "帳戶密碼已更改:{0}", "xloc": [ - "default.handlebars->41->2270" + "default.handlebars->41->2276" ] }, { @@ -5491,7 +5492,7 @@ "zh-chs": "帐户已删除", "zh-cht": "帳戶已刪除", "xloc": [ - "default.handlebars->41->2259" + "default.handlebars->41->2265" ] }, { @@ -5541,8 +5542,8 @@ "zh-chs": "指令", "zh-cht": "指令", "xloc": [ - "default-mobile.handlebars->11->611", - "default.handlebars->41->1494", + "default-mobile.handlebars->11->612", + "default.handlebars->41->1500", "default.handlebars->container->column_l->p42->p42tbl->1->0->8" ] }, @@ -5568,8 +5569,8 @@ "zh-chs": "动作档案", "zh-cht": "動作檔案", "xloc": [ - "default.handlebars->41->1173", - "default.handlebars->41->1175" + "default.handlebars->41->1178", + "default.handlebars->41->1180" ] }, { @@ -5598,7 +5599,7 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->1", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3", - "default.handlebars->41->893", + "default.handlebars->41->894", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->1", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->1", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1" @@ -5626,7 +5627,7 @@ "zh-chs": "使用FAT格式的USB密钥在管理控制模式(ACM)中激活英特尔®AMT。将setup.bin放在其上,然后使用此键引导一台或多台计算机。", "zh-cht": "使用FAT格式的USB密鑰在管理控制模式(ACM)中激活英特爾®AMT。將setup.bin放在其上,然後使用此鍵引導一台或多台計算機。", "xloc": [ - "default.handlebars->41->468" + "default.handlebars->41->469" ] }, { @@ -5701,7 +5702,7 @@ "zh-chs": "如果ACM失败,则激活到CCM", "zh-cht": "如果ACM失敗,則激活到CCM", "xloc": [ - "default.handlebars->41->1970" + "default.handlebars->41->1976" ] }, { @@ -5729,9 +5730,9 @@ "default-mobile.handlebars->11->292", "default-mobile.handlebars->11->294", "default-mobile.handlebars->11->567", - "default.handlebars->41->1449", - "default.handlebars->41->803", - "default.handlebars->41->805" + "default.handlebars->41->1454", + "default.handlebars->41->804", + "default.handlebars->41->806" ] }, { @@ -5756,7 +5757,7 @@ "zh-chs": "激活", "zh-cht": "啟動", "xloc": [ - "default.handlebars->41->301" + "default.handlebars->41->302" ] }, { @@ -5781,8 +5782,8 @@ "zh-chs": "主动设备共享", "zh-cht": "主動設備共享", "xloc": [ - "default.handlebars->41->1921", - "default.handlebars->41->961" + "default.handlebars->41->1927", + "default.handlebars->41->966" ] }, { @@ -5806,7 +5807,7 @@ "tr": "Aktif Giriş Anahtarları", "zh-chs": "活动登录令牌", "xloc": [ - "default.handlebars->41->1818" + "default.handlebars->41->1824" ] }, { @@ -5826,7 +5827,7 @@ "ru": "Активный пользователь", "tr": "Aktif Kullanıcı", "xloc": [ - "default.handlebars->41->847" + "default.handlebars->41->848" ] }, { @@ -5846,7 +5847,7 @@ "ru": "Активные пользователи", "tr": "Aktif Kullanıcılar", "xloc": [ - "default.handlebars->41->846" + "default.handlebars->41->847" ] }, { @@ -5893,8 +5894,8 @@ "zh-chs": "添加", "xloc": [ "default-mobile.handlebars->11->438", - "default.handlebars->41->1260", - "default.handlebars->41->1265" + "default.handlebars->41->1265", + "default.handlebars->41->1270" ] }, { @@ -5961,8 +5962,8 @@ "zh-chs": "添加代理", "zh-cht": "新增代理", "xloc": [ - "default.handlebars->41->1911", - "default.handlebars->41->440" + "default.handlebars->41->1917", + "default.handlebars->41->441" ] }, { @@ -6009,10 +6010,10 @@ "zh-chs": "添加设备", "zh-cht": "新增裝置", "xloc": [ - "default.handlebars->41->1915", - "default.handlebars->41->2552", - "default.handlebars->41->2711", - "default.handlebars->41->444" + "default.handlebars->41->1921", + "default.handlebars->41->2558", + "default.handlebars->41->2717", + "default.handlebars->41->445" ] }, { @@ -6037,7 +6038,7 @@ "zh-chs": "添加设备日志", "zh-cht": "新增裝置日誌", "xloc": [ - "default.handlebars->41->1034" + "default.handlebars->41->1039" ] }, { @@ -6062,10 +6063,10 @@ "zh-chs": "添加设备组", "zh-cht": "新增裝置群", "xloc": [ - "default.handlebars->41->2055", - "default.handlebars->41->2546", - "default.handlebars->41->2699", - "default.handlebars->41->356" + "default.handlebars->41->2061", + "default.handlebars->41->2552", + "default.handlebars->41->2705", + "default.handlebars->41->357" ] }, { @@ -6090,7 +6091,7 @@ "zh-chs": "添加设备组权限", "zh-cht": "新增裝置群權限", "xloc": [ - "default.handlebars->41->2052" + "default.handlebars->41->2058" ] }, { @@ -6115,8 +6116,8 @@ "zh-chs": "添加设备权限", "zh-cht": "新增裝置權限", "xloc": [ - "default.handlebars->41->2057", - "default.handlebars->41->2059" + "default.handlebars->41->2063", + "default.handlebars->41->2065" ] }, { @@ -6163,7 +6164,7 @@ "zh-chs": "添加英特尔®AMT设备", "zh-cht": "新增Intel® AMT裝置", "xloc": [ - "default.handlebars->41->464" + "default.handlebars->41->465" ] }, { @@ -6188,7 +6189,7 @@ "zh-chs": "新增密钥", "zh-cht": "新增密鑰", "xloc": [ - "default.handlebars->41->225" + "default.handlebars->41->226" ] }, { @@ -6213,7 +6214,7 @@ "zh-chs": "添加本地", "zh-cht": "新增本地", "xloc": [ - "default.handlebars->41->434" + "default.handlebars->41->435" ] }, { @@ -6259,7 +6260,7 @@ "zh-chs": "添加成员身份", "zh-cht": "新增成員身份", "xloc": [ - "default.handlebars->41->2731" + "default.handlebars->41->2737" ] }, { @@ -6284,7 +6285,7 @@ "zh-chs": "添加 Mesh Agent", "zh-cht": "新增 Mesh Agent", "xloc": [ - "default.handlebars->41->596" + "default.handlebars->41->597" ] }, { @@ -6330,12 +6331,12 @@ "zh-chs": "添加安全密钥", "zh-cht": "新增安全密鑰", "xloc": [ - "default.handlebars->41->1533", - "default.handlebars->41->1534", - "default.handlebars->41->229", - "default.handlebars->41->231", - "default.handlebars->41->234", - "default.handlebars->41->236" + "default.handlebars->41->1539", + "default.handlebars->41->1540", + "default.handlebars->41->230", + "default.handlebars->41->232", + "default.handlebars->41->235", + "default.handlebars->41->237" ] }, { @@ -6360,8 +6361,8 @@ "zh-chs": "添加用户", "zh-cht": "新增用戶", "xloc": [ - "default-mobile.handlebars->11->636", - "default.handlebars->41->953" + "default-mobile.handlebars->11->637", + "default.handlebars->41->958" ] }, { @@ -6386,7 +6387,7 @@ "zh-chs": "添加用户设备权限", "zh-cht": "新增用戶裝置權限", "xloc": [ - "default.handlebars->41->2062" + "default.handlebars->41->2068" ] }, { @@ -6411,10 +6412,10 @@ "zh-chs": "添加用户组", "zh-cht": "新增用戶群", "xloc": [ - "default.handlebars->41->1907", - "default.handlebars->41->2054", - "default.handlebars->41->2705", - "default.handlebars->41->954" + "default.handlebars->41->1913", + "default.handlebars->41->2060", + "default.handlebars->41->2711", + "default.handlebars->41->959" ] }, { @@ -6439,7 +6440,7 @@ "zh-chs": "添加用户组设备权限", "zh-cht": "新增用戶群裝置權限", "xloc": [ - "default.handlebars->41->2064" + "default.handlebars->41->2070" ] }, { @@ -6464,7 +6465,7 @@ "zh-chs": "将用户添加到设备组", "zh-cht": "將用戶新增到裝置群", "xloc": [ - "default-mobile.handlebars->11->676" + "default-mobile.handlebars->11->677" ] }, { @@ -6511,8 +6512,8 @@ "zh-chs": "添加用户", "zh-cht": "新增用戶", "xloc": [ - "default.handlebars->41->1906", - "default.handlebars->41->2541" + "default.handlebars->41->1912", + "default.handlebars->41->2547" ] }, { @@ -6537,7 +6538,7 @@ "zh-chs": "将用户添加到设备组", "zh-cht": "將用戶新增到裝置群", "xloc": [ - "default.handlebars->41->2051" + "default.handlebars->41->2057" ] }, { @@ -6562,7 +6563,7 @@ "zh-chs": "将用户添加到用户组", "zh-cht": "將用戶新增到用戶群", "xloc": [ - "default.handlebars->41->2576" + "default.handlebars->41->2582" ] }, { @@ -6587,7 +6588,7 @@ "zh-chs": "添加YubiKey®OTP", "zh-cht": "新增YubiKey®OTP", "xloc": [ - "default.handlebars->41->226" + "default.handlebars->41->227" ] }, { @@ -6611,7 +6612,7 @@ "tr": "\\\"{0}\\\" cihaz grubuna yerel bir cihaz ekleyin.", "zh-chs": "将本地设备添加到设备组 \\\"{0}\\\"。", "xloc": [ - "default.handlebars->41->445" + "default.handlebars->41->446" ] }, { @@ -6636,7 +6637,7 @@ "zh-chs": "通过扫描本地网络添加新的英特尔®AMT计算机。", "zh-cht": "通過掃描本地網絡新增新的Intel® AMT電腦。", "xloc": [ - "default.handlebars->41->435" + "default.handlebars->41->436" ] }, { @@ -6683,7 +6684,7 @@ "zh-chs": "添加位于本地网络上的新英特尔®AMT计算机。", "zh-cht": "新增位於本地網絡上的新Intel® AMT電腦。", "xloc": [ - "default.handlebars->41->433" + "default.handlebars->41->434" ] }, { @@ -6708,7 +6709,7 @@ "zh-chs": "将新的英特尔®AMT设备添加到设备组“{0}”。", "zh-cht": "將新的Intel® AMT裝置新增到裝置群“{0}”。", "xloc": [ - "default.handlebars->41->454" + "default.handlebars->41->455" ] }, { @@ -6733,8 +6734,8 @@ "zh-chs": "通过安装Mesh Agent将新计算机添加到该设备组。", "zh-cht": "通過安裝Mesh Agent將新電腦新增到該裝置群。", "xloc": [ - "default.handlebars->41->1910", - "default.handlebars->41->439" + "default.handlebars->41->1916", + "default.handlebars->41->440" ] }, { @@ -6758,8 +6759,8 @@ "tr": "Yerel ağda bulunan cihazı ekleyin.", "zh-chs": "添加位于本地网络上的设备。", "xloc": [ - "default.handlebars->41->1914", - "default.handlebars->41->443" + "default.handlebars->41->1920", + "default.handlebars->41->444" ] }, { @@ -6783,7 +6784,7 @@ "tr": "Yerel cihaz ekle", "zh-chs": "添加本地设备", "xloc": [ - "default.handlebars->41->453" + "default.handlebars->41->454" ] }, { @@ -6808,7 +6809,7 @@ "zh-chs": "添加标签", "zh-cht": "新增標籤", "xloc": [ - "default.handlebars->41->677" + "default.handlebars->41->678" ] }, { @@ -6833,7 +6834,7 @@ "zh-chs": "通过定期在远程设备上以管理员身份运行MeshCmd,添加,激活和配置Intel®AMT以将“{0}”分组。", "zh-cht": "通過定期在遠程設備上以管理員身份運行MeshCmd,添加,激活和配置Intel®AMT以將“{0}”分組。", "xloc": [ - "default.handlebars->41->465" + "default.handlebars->41->466" ] }, { @@ -6858,7 +6859,7 @@ "zh-chs": "添加了身份验证应用程序", "zh-cht": "添加了身份驗證應用程序", "xloc": [ - "default.handlebars->41->2286" + "default.handlebars->41->2292" ] }, { @@ -6883,7 +6884,7 @@ "zh-chs": "已将设备共享{0}从{1}添加到{2}", "zh-cht": "已將設備共享{0}從{1}添加到{2}", "xloc": [ - "default.handlebars->41->2297" + "default.handlebars->41->2303" ] }, { @@ -6903,7 +6904,7 @@ "ru": "Добавлен ежедневный общий доступ к устройству {0}.", "tr": "Her gün yinelenen {0} cihaz paylaşımı eklendi.", "xloc": [ - "default.handlebars->41->2334" + "default.handlebars->41->2340" ] }, { @@ -6923,7 +6924,7 @@ "ru": "Добавлен еженедельный общий доступ к устройству {0}.", "tr": "Haftalık olarak yinelenen {0} cihaz paylaşımı eklendi.", "xloc": [ - "default.handlebars->41->2335" + "default.handlebars->41->2341" ] }, { @@ -6943,7 +6944,7 @@ "ru": "Добавлен общий доступ к устройству {0} с неограниченным временем.", "tr": "Sınırsız süre ile cihaz paylaşımı {0} eklendi.", "xloc": [ - "default.handlebars->41->2327" + "default.handlebars->41->2333" ] }, { @@ -6968,8 +6969,8 @@ "zh-chs": "已将设备{0}添加到设备组{1}", "zh-cht": "已將設備{0}添加到設備組{1}", "xloc": [ - "default.handlebars->41->2253", - "default.handlebars->41->2280" + "default.handlebars->41->2259", + "default.handlebars->41->2286" ] }, { @@ -6993,7 +6994,7 @@ "tr": "Giriş anahtarı eklendi", "zh-chs": "添加登录令牌", "xloc": [ - "default.handlebars->41->2311" + "default.handlebars->41->2317" ] }, { @@ -7017,7 +7018,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulama cihazı eklendi", "zh-chs": "新增推送通知认证装置", "xloc": [ - "default.handlebars->41->2309" + "default.handlebars->41->2315" ] }, { @@ -7042,7 +7043,7 @@ "zh-chs": "添加了安全密钥", "zh-cht": "添加了安全密鑰", "xloc": [ - "default.handlebars->41->2291" + "default.handlebars->41->2297" ] }, { @@ -7067,7 +7068,7 @@ "zh-chs": "已将用户组{0}添加到设备组{1}", "zh-cht": "已將用戶組{0}添加到設備組{1}", "xloc": [ - "default.handlebars->41->2264" + "default.handlebars->41->2270" ] }, { @@ -7092,8 +7093,8 @@ "zh-chs": "已将用户{0}添加到用户组{1}", "zh-cht": "已將用戶{0}添加到用戶組{1}", "xloc": [ - "default.handlebars->41->2267", - "default.handlebars->41->2276" + "default.handlebars->41->2273", + "default.handlebars->41->2282" ] }, { @@ -7118,7 +7119,7 @@ "zh-chs": "地址", "zh-cht": "地址", "xloc": [ - "default.handlebars->41->351" + "default.handlebars->41->352" ] }, { @@ -7169,7 +7170,7 @@ "zh-cht": "管理員控制模式(ACM)", "xloc": [ "default-mobile.handlebars->11->569", - "default.handlebars->41->1451" + "default.handlebars->41->1456" ] }, { @@ -7195,7 +7196,7 @@ "zh-cht": "管理員憑證", "xloc": [ "default-mobile.handlebars->11->575", - "default.handlebars->41->1457" + "default.handlebars->41->1462" ] }, { @@ -7246,7 +7247,7 @@ "zh-chs": "管理领域", "zh-cht": "管理領域", "xloc": [ - "default.handlebars->41->2625" + "default.handlebars->41->2631" ] }, { @@ -7297,7 +7298,7 @@ "zh-chs": "管理领域", "zh-cht": "管理領域", "xloc": [ - "default.handlebars->41->2474" + "default.handlebars->41->2480" ] }, { @@ -7322,7 +7323,7 @@ "zh-chs": "管理员", "zh-cht": "管理員", "xloc": [ - "default.handlebars->41->2401" + "default.handlebars->41->2407" ] }, { @@ -7347,7 +7348,7 @@ "zh-chs": "南非文", "zh-cht": "南非文", "xloc": [ - "default.handlebars->41->1536" + "default.handlebars->41->1542" ] }, { @@ -7376,11 +7377,11 @@ "default-mobile.handlebars->11->256", "default-mobile.handlebars->11->313", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1", - "default.handlebars->41->2129", - "default.handlebars->41->2142", - "default.handlebars->41->2928", - "default.handlebars->41->376", - "default.handlebars->41->628", + "default.handlebars->41->2135", + "default.handlebars->41->2148", + "default.handlebars->41->2934", + "default.handlebars->41->377", + "default.handlebars->41->629", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1", "default.handlebars->container->dialog->dialogBody->dialog7->1->td7meshkvm" ] @@ -7407,8 +7408,8 @@ "zh-chs": "代理+英特尔AMT", "zh-cht": "代理+Intel® AMT", "xloc": [ - "default.handlebars->41->2131", - "default.handlebars->41->2144" + "default.handlebars->41->2137", + "default.handlebars->41->2150" ] }, { @@ -7459,8 +7460,8 @@ "zh-chs": "代理控制台", "zh-cht": "代理控制台", "xloc": [ - "default-mobile.handlebars->11->682", - "default.handlebars->41->2072" + "default-mobile.handlebars->11->683", + "default.handlebars->41->2078" ] }, { @@ -7485,7 +7486,7 @@ "zh-chs": "代理错误计数器", "zh-cht": "代理錯誤計數器", "xloc": [ - "default.handlebars->41->2897" + "default.handlebars->41->2903" ] }, { @@ -7509,7 +7510,7 @@ "tr": "Agent IP adresi", "zh-chs": "代理IP地址", "xloc": [ - "default.handlebars->41->326" + "default.handlebars->41->327" ] }, { @@ -7560,7 +7561,7 @@ "zh-cht": "代理訊息", "xloc": [ "default-mobile.handlebars->11->229", - "default.handlebars->41->425" + "default.handlebars->41->426" ] }, { @@ -7652,8 +7653,8 @@ "ru": "Общий доступ из Агента", "tr": "Agent Kendisinin-Paylaşımı", "xloc": [ - "default.handlebars->41->1940", - "default.handlebars->41->980" + "default.handlebars->41->1946", + "default.handlebars->41->985" ] }, { @@ -7678,7 +7679,7 @@ "zh-chs": "代理时段", "zh-cht": "代理時段", "xloc": [ - "default.handlebars->41->2913" + "default.handlebars->41->2919" ] }, { @@ -7725,7 +7726,7 @@ "zh-cht": "代理標籤", "xloc": [ "default-mobile.handlebars->11->310", - "default.handlebars->41->826" + "default.handlebars->41->827" ] }, { @@ -7749,8 +7750,8 @@ "tr": "Agent Türü", "zh-chs": "代理类型", "xloc": [ - "default.handlebars->41->320", - "default.handlebars->41->346" + "default.handlebars->41->321", + "default.handlebars->41->347" ] }, { @@ -7775,7 +7776,7 @@ "zh-chs": "代理类型", "zh-cht": "代理類型", "xloc": [ - "default.handlebars->41->2140", + "default.handlebars->41->2146", "default.handlebars->container->column_l->p21->p21main->1->1->meshOsChartDiv->1" ] }, @@ -7800,8 +7801,8 @@ "tr": "Agent Sürümü", "zh-chs": "代理版本", "xloc": [ - "default.handlebars->41->321", - "default.handlebars->41->347" + "default.handlebars->41->322", + "default.handlebars->41->348" ] }, { @@ -7826,7 +7827,7 @@ "zh-chs": "代理关闭了与服务器压缩的{0}%代理会话。已发送:{1},已压缩:{2}", "zh-cht": "代理關閉了與{0}%代理到服務器壓縮的會話。已發送:{1},已壓縮:{2}", "xloc": [ - "default.handlebars->41->2250" + "default.handlebars->41->2256" ] }, { @@ -7851,9 +7852,9 @@ "zh-chs": "代理已连接", "zh-cht": "代理已連接", "xloc": [ - "default.handlebars->41->242", - "default.handlebars->41->944", - "default.handlebars->41->945" + "default.handlebars->41->243", + "default.handlebars->41->945", + "default.handlebars->41->946" ] }, { @@ -7873,7 +7874,7 @@ "ru": "Агент подключен с ограниченными привилегиями", "tr": "Agent kısıtlı yetkiler ile bağlandı", "xloc": [ - "default.handlebars->41->243" + "default.handlebars->41->244" ] }, { @@ -7898,7 +7899,7 @@ "zh-chs": "代理已断开连接", "zh-cht": "代理已斷開連接", "xloc": [ - "default.handlebars->41->247" + "default.handlebars->41->248" ] }, { @@ -8006,8 +8007,8 @@ "zh-chs": "代理离线", "zh-cht": "代理離線", "xloc": [ - "default-mobile.handlebars->11->603", - "default.handlebars->41->1486" + "default-mobile.handlebars->11->604", + "default.handlebars->41->1492" ] }, { @@ -8032,8 +8033,8 @@ "zh-chs": "代理在线", "zh-cht": "代理在線", "xloc": [ - "default-mobile.handlebars->11->602", - "default.handlebars->41->1485" + "default-mobile.handlebars->11->603", + "default.handlebars->41->1491" ] }, { @@ -8121,7 +8122,7 @@ "zh-chs": "代理在特权降低的远程设备上运行。", "zh-cht": "代理在特權降低的遠程設備上運行。", "xloc": [ - "default.handlebars->41->938" + "default.handlebars->41->939" ] }, { @@ -8230,9 +8231,9 @@ "zh-chs": "代理", "zh-cht": "代理", "xloc": [ - "default.handlebars->41->2102", - "default.handlebars->41->2941", - "default.handlebars->41->521" + "default.handlebars->41->2108", + "default.handlebars->41->2947", + "default.handlebars->41->522" ] }, { @@ -8257,7 +8258,7 @@ "zh-chs": "阿尔巴尼亚文", "zh-cht": "阿爾巴尼亞文", "xloc": [ - "default.handlebars->41->1537" + "default.handlebars->41->1543" ] }, { @@ -8285,7 +8286,7 @@ "default-mobile.handlebars->11->148", "default-mobile.handlebars->11->476", "default-mobile.handlebars->11->478", - "default.handlebars->41->2784", + "default.handlebars->41->2790", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->1" ] }, @@ -8311,7 +8312,7 @@ "zh-chs": "全部可用", "zh-cht": "全部可用", "xloc": [ - "default.handlebars->41->2363" + "default.handlebars->41->2369" ] }, { @@ -8322,8 +8323,8 @@ "pt-br": "Todos agentes disponíveis", "ru": "Все доступные агенты", "xloc": [ - "default.handlebars->41->2103", - "default.handlebars->41->522" + "default.handlebars->41->2109", + "default.handlebars->41->523" ] }, { @@ -8348,7 +8349,7 @@ "zh-chs": "所有显示", "zh-cht": "所有顯示", "xloc": [ - "default.handlebars->41->1298" + "default.handlebars->41->1303" ] }, { @@ -8373,7 +8374,7 @@ "zh-chs": "所有事件", "zh-cht": "所有事件", "xloc": [ - "default.handlebars->41->2361" + "default.handlebars->41->2367" ] }, { @@ -8398,9 +8399,9 @@ "zh-chs": "全部聚焦", "zh-cht": "全部聚焦", "xloc": [ - "default.handlebars->41->1230", - "default.handlebars->41->1232", - "default.handlebars->41->1233" + "default.handlebars->41->1235", + "default.handlebars->41->1237", + "default.handlebars->41->1238" ] }, { @@ -8449,8 +8450,8 @@ "zh-chs": "允许用户管理此设备组和该组中的设备。", "zh-cht": "允許用戶管理此裝置群和該群中的裝置。", "xloc": [ - "default.handlebars->41->2017", - "default.handlebars->41->2573" + "default.handlebars->41->2023", + "default.handlebars->41->2579" ] }, { @@ -8475,7 +8476,7 @@ "zh-chs": "允许用户管理此设备。", "zh-cht": "允許用戶管理此裝置。", "xloc": [ - "default.handlebars->41->2018" + "default.handlebars->41->2024" ] }, { @@ -8499,7 +8500,7 @@ "tr": "İzin verilmiş", "zh-chs": "允许", "xloc": [ - "default.handlebars->41->270" + "default.handlebars->41->271" ] }, { @@ -8572,8 +8573,8 @@ "xloc": [ "default-mobile.handlebars->11->431", "default-mobile.handlebars->11->435", - "default.handlebars->41->1253", - "default.handlebars->41->1257" + "default.handlebars->41->1258", + "default.handlebars->41->1262" ] }, { @@ -8583,7 +8584,7 @@ "ru": "Альтернативная оболочка", "fr": "Shell alternatif", "xloc": [ - "default.handlebars->41->1220" + "default.handlebars->41->1225" ] }, { @@ -8660,7 +8661,7 @@ "zh-chs": "备用(F10 = ESC + 0)", "zh-cht": "備用(F10 = ESC + 0)", "xloc": [ - "default.handlebars->41->1332", + "default.handlebars->41->1337", "sharing.handlebars->11->37" ] }, @@ -8734,10 +8735,10 @@ "zh-chs": "一直通知", "zh-cht": "一直通知", "xloc": [ - "default.handlebars->41->1883", - "default.handlebars->41->2532", - "default.handlebars->41->2634", - "default.handlebars->41->856" + "default.handlebars->41->1889", + "default.handlebars->41->2538", + "default.handlebars->41->2640", + "default.handlebars->41->857" ] }, { @@ -8762,10 +8763,10 @@ "zh-chs": "一直提示", "zh-cht": "一直提示", "xloc": [ - "default.handlebars->41->1884", - "default.handlebars->41->2533", - "default.handlebars->41->2635", - "default.handlebars->41->857" + "default.handlebars->41->1890", + "default.handlebars->41->2539", + "default.handlebars->41->2641", + "default.handlebars->41->858" ] }, { @@ -8960,7 +8961,7 @@ "tr": "Android Kurulumu", "zh-chs": "安卓安装", "xloc": [ - "default-mobile.handlebars->11->656" + "default-mobile.handlebars->11->657" ] }, { @@ -9010,8 +9011,8 @@ "tr": "Anti-virüs etkin değil", "zh-chs": "杀毒软件未激活", "xloc": [ - "default.handlebars->41->2133", - "default.handlebars->41->2147" + "default.handlebars->41->2139", + "default.handlebars->41->2153" ] }, { @@ -9037,7 +9038,7 @@ "zh-cht": "防毒軟體", "xloc": [ "default-mobile.handlebars->11->532", - "default.handlebars->41->845" + "default.handlebars->41->846" ] }, { @@ -9062,7 +9063,7 @@ "zh-chs": "任何可支持的", "zh-cht": "任何可支持的", "xloc": [ - "default.handlebars->41->495" + "default.handlebars->41->496" ] }, { @@ -9123,7 +9124,7 @@ "zh-chs": "苹果macOS", "zh-cht": "蘋果macOS", "xloc": [ - "default.handlebars->41->536" + "default.handlebars->41->537" ] }, { @@ -9148,7 +9149,7 @@ "zh-chs": "仅限Apple macOS", "zh-cht": "僅限Apple macOS", "xloc": [ - "default.handlebars->41->497" + "default.handlebars->41->498" ] }, { @@ -9281,7 +9282,7 @@ "tr": "Uygulama, Her zaman bağlı", "zh-chs": "应用程序,始终连接", "xloc": [ - "default.handlebars->41->549" + "default.handlebars->41->550" ] }, { @@ -9305,7 +9306,7 @@ "tr": "Uygulama, Kullanıcı isteği üzerine bağlanın", "zh-chs": "应用程序,根据用户请求连接", "xloc": [ - "default.handlebars->41->548" + "default.handlebars->41->549" ] }, { @@ -9330,7 +9331,7 @@ "zh-chs": "阿拉伯文(阿尔及利亚)", "zh-cht": "阿拉伯文(阿爾及利亞)", "xloc": [ - "default.handlebars->41->1539" + "default.handlebars->41->1545" ] }, { @@ -9355,7 +9356,7 @@ "zh-chs": "阿拉伯文(巴林)", "zh-cht": "阿拉伯文(巴林)", "xloc": [ - "default.handlebars->41->1540" + "default.handlebars->41->1546" ] }, { @@ -9380,7 +9381,7 @@ "zh-chs": "阿拉伯文(埃及)", "zh-cht": "阿拉伯文(埃及)", "xloc": [ - "default.handlebars->41->1541" + "default.handlebars->41->1547" ] }, { @@ -9405,7 +9406,7 @@ "zh-chs": "阿拉伯文(伊拉克)", "zh-cht": "阿拉伯文(伊拉克)", "xloc": [ - "default.handlebars->41->1542" + "default.handlebars->41->1548" ] }, { @@ -9430,7 +9431,7 @@ "zh-chs": "阿拉伯文(约旦)", "zh-cht": "阿拉伯文(約旦)", "xloc": [ - "default.handlebars->41->1543" + "default.handlebars->41->1549" ] }, { @@ -9455,7 +9456,7 @@ "zh-chs": "阿拉伯文(科威特)", "zh-cht": "阿拉伯文(科威特)", "xloc": [ - "default.handlebars->41->1544" + "default.handlebars->41->1550" ] }, { @@ -9480,7 +9481,7 @@ "zh-chs": "阿拉伯文(黎巴嫩)", "zh-cht": "阿拉伯文(黎巴嫩)", "xloc": [ - "default.handlebars->41->1545" + "default.handlebars->41->1551" ] }, { @@ -9505,7 +9506,7 @@ "zh-chs": "阿拉伯文(利比亚)", "zh-cht": "阿拉伯文(利比亞)", "xloc": [ - "default.handlebars->41->1546" + "default.handlebars->41->1552" ] }, { @@ -9530,7 +9531,7 @@ "zh-chs": "阿拉伯文(摩洛哥)", "zh-cht": "阿拉伯文(摩洛哥)", "xloc": [ - "default.handlebars->41->1547" + "default.handlebars->41->1553" ] }, { @@ -9555,7 +9556,7 @@ "zh-chs": "阿拉伯文(阿曼)", "zh-cht": "阿拉伯文(阿曼)", "xloc": [ - "default.handlebars->41->1548" + "default.handlebars->41->1554" ] }, { @@ -9580,7 +9581,7 @@ "zh-chs": "阿拉伯文(卡塔尔)", "zh-cht": "阿拉伯文(卡塔爾)", "xloc": [ - "default.handlebars->41->1549" + "default.handlebars->41->1555" ] }, { @@ -9605,7 +9606,7 @@ "zh-chs": "阿拉伯文(沙特阿拉伯)", "zh-cht": "阿拉伯文(沙特阿拉伯)", "xloc": [ - "default.handlebars->41->1550" + "default.handlebars->41->1556" ] }, { @@ -9630,7 +9631,7 @@ "zh-chs": "阿拉伯文(标准)", "zh-cht": "阿拉伯文(標準)", "xloc": [ - "default.handlebars->41->1538" + "default.handlebars->41->1544" ] }, { @@ -9655,7 +9656,7 @@ "zh-chs": "阿拉伯文(叙利亚)", "zh-cht": "阿拉伯文(敘利亞)", "xloc": [ - "default.handlebars->41->1551" + "default.handlebars->41->1557" ] }, { @@ -9680,7 +9681,7 @@ "zh-chs": "阿拉伯文(突尼斯)", "zh-cht": "阿拉伯文(突尼斯)", "xloc": [ - "default.handlebars->41->1552" + "default.handlebars->41->1558" ] }, { @@ -9705,7 +9706,7 @@ "zh-chs": "阿拉伯文(阿联酋)", "zh-cht": "阿拉伯文(阿聯酋)", "xloc": [ - "default.handlebars->41->1553" + "default.handlebars->41->1559" ] }, { @@ -9730,7 +9731,7 @@ "zh-chs": "阿拉伯文(也门)", "zh-cht": "阿拉伯文(也門)", "xloc": [ - "default.handlebars->41->1554" + "default.handlebars->41->1560" ] }, { @@ -9755,7 +9756,7 @@ "zh-chs": "阿拉贡文", "zh-cht": "阿拉貢文", "xloc": [ - "default.handlebars->41->1555" + "default.handlebars->41->1561" ] }, { @@ -9783,9 +9784,9 @@ "default-mobile.handlebars->11->511", "default-mobile.handlebars->11->513", "default-mobile.handlebars->11->515", - "default.handlebars->41->1400", - "default.handlebars->41->1402", - "default.handlebars->41->1404" + "default.handlebars->41->1405", + "default.handlebars->41->1407", + "default.handlebars->41->1409" ] }, { @@ -9810,7 +9811,7 @@ "zh-chs": "您确定要连接到{0}设备吗?", "zh-cht": "你確定要連接到{0}裝置嗎?", "xloc": [ - "default.handlebars->41->428" + "default.handlebars->41->429" ] }, { @@ -9835,8 +9836,8 @@ "zh-chs": "你确定要删除组{0}吗?删除设备组还将删除该组中有关设备的所有信息。", "zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。", "xloc": [ - "default-mobile.handlebars->11->643", - "default.handlebars->41->1984" + "default-mobile.handlebars->11->644", + "default.handlebars->41->1990" ] }, { @@ -9861,7 +9862,7 @@ "zh-chs": "您确定要删除节点{0}吗?", "zh-cht": "你確定要刪除節點{0}嗎?", "xloc": [ - "default.handlebars->41->1149" + "default.handlebars->41->1154" ] }, { @@ -9886,7 +9887,7 @@ "zh-chs": "您确定要卸载所选代理吗?", "zh-cht": "你確定要卸載所選代理嗎?", "xloc": [ - "default.handlebars->41->1138" + "default.handlebars->41->1143" ] }, { @@ -9911,7 +9912,7 @@ "zh-chs": "您确定要卸载所选的{0}代理吗?", "zh-cht": "你確定要卸載所選的{0}代理嗎?", "xloc": [ - "default.handlebars->41->1137" + "default.handlebars->41->1142" ] }, { @@ -9936,7 +9937,7 @@ "zh-chs": "您确定要{0}插件吗:{1}", "zh-cht": "你確定要{0}外掛嗎:{1}", "xloc": [ - "default.handlebars->41->2992" + "default.handlebars->41->2998" ] }, { @@ -9986,7 +9987,7 @@ "zh-chs": "亚美尼亚文", "zh-cht": "亞美尼亞文", "xloc": [ - "default.handlebars->41->1556" + "default.handlebars->41->1562" ] }, { @@ -10098,7 +10099,7 @@ "zh-chs": "阿萨姆文", "zh-cht": "阿薩姆文", "xloc": [ - "default.handlebars->41->1557" + "default.handlebars->41->1563" ] }, { @@ -10193,8 +10194,8 @@ "tr": "Windows için Asistan (.exe)", "zh-chs": "Windows 助手 (.exe)", "xloc": [ - "default.handlebars->41->575", - "default.handlebars->41->579" + "default.handlebars->41->576", + "default.handlebars->41->580" ] }, { @@ -10243,7 +10244,7 @@ "zh-chs": "阿斯图里亚斯文", "zh-cht": "阿斯圖里亞斯文", "xloc": [ - "default.handlebars->41->1558" + "default.handlebars->41->1564" ] }, { @@ -10268,7 +10269,7 @@ "zh-chs": "尝试激活英特尔(R)AMT ACM模式", "zh-cht": "嘗試激活英特爾(R)AMT ACM模式", "xloc": [ - "default.handlebars->41->2219" + "default.handlebars->41->2225" ] }, { @@ -10316,9 +10317,9 @@ "default-mobile.handlebars->11->447", "default-mobile.handlebars->11->451", "default-mobile.handlebars->11->463", - "default.handlebars->41->1307", - "default.handlebars->41->1311", - "default.handlebars->41->1323", + "default.handlebars->41->1312", + "default.handlebars->41->1316", + "default.handlebars->41->1328", "ssh.handlebars->3->21", "ssh.handlebars->3->22", "ssh.handlebars->3->5", @@ -10347,7 +10348,7 @@ "zh-chs": "认证软件", "zh-cht": "認證軟體", "xloc": [ - "default.handlebars->41->2638" + "default.handlebars->41->2644" ] }, { @@ -10371,9 +10372,9 @@ "tr": "Kimlik Doğrulama Cihazı", "zh-chs": "认证设备", "xloc": [ - "default.handlebars->41->1519", - "default.handlebars->41->1521", - "default.handlebars->41->1525" + "default.handlebars->41->1525", + "default.handlebars->41->1527", + "default.handlebars->41->1531" ] }, { @@ -10399,8 +10400,8 @@ "xloc": [ "default-mobile.handlebars->11->464", "default-mobile.handlebars->11->470", - "default.handlebars->41->1325", - "default.handlebars->41->1340" + "default.handlebars->41->1330", + "default.handlebars->41->1345" ] }, { @@ -10429,10 +10430,10 @@ "default-mobile.handlebars->11->104", "default-mobile.handlebars->11->68", "default-mobile.handlebars->11->71", - "default.handlebars->41->1515", - "default.handlebars->41->1517", - "default.handlebars->41->204", - "default.handlebars->41->209" + "default.handlebars->41->1521", + "default.handlebars->41->1523", + "default.handlebars->41->205", + "default.handlebars->41->210" ] }, { @@ -10457,7 +10458,7 @@ "zh-chs": "认证软件激活成功。", "zh-cht": "認證軟體啟動成功。", "xloc": [ - "default.handlebars->41->205" + "default.handlebars->41->206" ] }, { @@ -10482,7 +10483,7 @@ "zh-chs": "认证软件已删除。", "zh-cht": "認證軟體已刪除。", "xloc": [ - "default.handlebars->41->210" + "default.handlebars->41->211" ] }, { @@ -10552,8 +10553,8 @@ "zh-chs": "自动删除", "zh-cht": "自動刪除", "xloc": [ - "default.handlebars->41->1868", - "default.handlebars->41->2354" + "default.handlebars->41->1874", + "default.handlebars->41->2360" ] }, { @@ -10607,7 +10608,7 @@ "zh-chs": "自动下载代理程序核心转储文件:“{0}”", "zh-cht": "自動下載代理程序核心轉儲文件:“{0}”", "xloc": [ - "default.handlebars->41->2300" + "default.handlebars->41->2306" ] }, { @@ -10702,7 +10703,7 @@ "tr": "Etkin olmayan cihazları otomatik olarak kaldırın", "zh-chs": "自动移除非活动设备", "xloc": [ - "default.handlebars->41->2012" + "default.handlebars->41->2018" ] }, { @@ -10727,7 +10728,7 @@ "zh-chs": "可用內存", "zh-cht": "可用內存", "xloc": [ - "default.handlebars->41->2922" + "default.handlebars->41->2928" ] }, { @@ -10752,7 +10753,7 @@ "zh-chs": "阿塞拜疆文", "zh-cht": "阿塞拜疆文", "xloc": [ - "default.handlebars->41->1559" + "default.handlebars->41->1565" ] }, { @@ -10779,9 +10780,9 @@ "default-mobile.handlebars->11->519", "default-mobile.handlebars->11->523", "default-mobile.handlebars->11->527", - "default.handlebars->41->832", - "default.handlebars->41->836", - "default.handlebars->41->840" + "default.handlebars->41->833", + "default.handlebars->41->837", + "default.handlebars->41->841" ] }, { @@ -10806,8 +10807,8 @@ "zh-chs": "的BIOS", "zh-cht": "的BIOS", "xloc": [ - "default-mobile.handlebars->11->581", - "default.handlebars->41->1463" + "default-mobile.handlebars->11->582", + "default.handlebars->41->1469" ] }, { @@ -10918,7 +10919,7 @@ "zh-chs": "退格", "xloc": [ "default-mobile.handlebars->11->414", - "default.handlebars->41->1236" + "default.handlebars->41->1241" ] }, { @@ -10943,7 +10944,7 @@ "zh-chs": "背景与互动", "zh-cht": "背景與互動", "xloc": [ - "default.handlebars->41->544" + "default.handlebars->41->545" ] }, { @@ -10968,10 +10969,10 @@ "zh-chs": "背景与互动", "zh-cht": "背景與互動", "xloc": [ - "default.handlebars->41->2109", - "default.handlebars->41->2116", - "default.handlebars->41->508", - "default.handlebars->41->528" + "default.handlebars->41->2115", + "default.handlebars->41->2122", + "default.handlebars->41->509", + "default.handlebars->41->529" ] }, { @@ -10996,11 +10997,11 @@ "zh-chs": "仅背景", "zh-cht": "僅背景", "xloc": [ - "default.handlebars->41->2110", - "default.handlebars->41->2117", - "default.handlebars->41->509", - "default.handlebars->41->529", - "default.handlebars->41->545" + "default.handlebars->41->2116", + "default.handlebars->41->2123", + "default.handlebars->41->510", + "default.handlebars->41->530", + "default.handlebars->41->546" ] }, { @@ -11051,8 +11052,8 @@ "zh-chs": "备用码", "zh-cht": "備用碼", "xloc": [ - "default.handlebars->41->2641", - "default.handlebars->41->2832" + "default.handlebars->41->2647", + "default.handlebars->41->2838" ] }, { @@ -11063,7 +11064,7 @@ "fr": "Les codes de récupérations sont verrouillés", "xloc": [ "default-mobile.handlebars->11->61", - "default.handlebars->41->195" + "default.handlebars->41->196" ] }, { @@ -11108,7 +11109,7 @@ "zh-chs": "错误的签名", "zh-cht": "錯誤的簽名", "xloc": [ - "default.handlebars->41->2904" + "default.handlebars->41->2910" ] }, { @@ -11133,7 +11134,7 @@ "zh-chs": "错误的网络证书", "zh-cht": "錯誤的網絡憑證", "xloc": [ - "default.handlebars->41->2903" + "default.handlebars->41->2909" ] }, { @@ -11158,7 +11159,7 @@ "zh-chs": "巴斯克", "zh-cht": "巴斯克", "xloc": [ - "default.handlebars->41->1560" + "default.handlebars->41->1566" ] }, { @@ -11183,7 +11184,7 @@ "zh-chs": "批处理文件上传", "zh-cht": "批處理文件上傳", "xloc": [ - "default.handlebars->41->693" + "default.handlebars->41->694" ] }, { @@ -11233,7 +11234,7 @@ "zh-chs": "将{0}个文件批量上传到文件夹{1}", "zh-cht": "將{0}個文件批量上傳到文件夾{1}", "xloc": [ - "default.handlebars->41->2299" + "default.handlebars->41->2305" ] }, { @@ -11258,7 +11259,7 @@ "zh-chs": "白俄罗斯文", "zh-cht": "白俄羅斯文", "xloc": [ - "default.handlebars->41->1562" + "default.handlebars->41->1568" ] }, { @@ -11283,7 +11284,7 @@ "zh-chs": "孟加拉", "zh-cht": "孟加拉", "xloc": [ - "default.handlebars->41->1563" + "default.handlebars->41->1569" ] }, { @@ -11357,7 +11358,7 @@ "zh-chs": "引导加载程序", "xloc": [ "default-mobile.handlebars->11->545", - "default.handlebars->41->1417" + "default.handlebars->41->1422" ] }, { @@ -11382,7 +11383,7 @@ "zh-chs": "波斯尼亚文", "zh-cht": "波斯尼亞文", "xloc": [ - "default.handlebars->41->1564" + "default.handlebars->41->1570" ] }, { @@ -11407,7 +11408,7 @@ "zh-chs": "布列塔尼", "zh-cht": "布列塔尼", "xloc": [ - "default.handlebars->41->1565" + "default.handlebars->41->1571" ] }, { @@ -11432,7 +11433,7 @@ "zh-chs": "广播", "zh-cht": "廣播", "xloc": [ - "default.handlebars->41->2539", + "default.handlebars->41->2545", "default.handlebars->container->column_l->p4->3->1->0->3->1" ] }, @@ -11458,7 +11459,7 @@ "zh-chs": "广播消息", "zh-cht": "廣播消息", "xloc": [ - "default.handlebars->41->2456" + "default.handlebars->41->2462" ] }, { @@ -11483,7 +11484,7 @@ "zh-chs": "向所有连接的用户广播消息。", "zh-cht": "向所有連接的用戶廣播消息。", "xloc": [ - "default.handlebars->41->2451" + "default.handlebars->41->2457" ] }, { @@ -11494,7 +11495,7 @@ "pt-br": "Navegador", "ru": "Браузер", "xloc": [ - "default.handlebars->41->2806" + "default.handlebars->41->2812" ] }, { @@ -11554,7 +11555,7 @@ "zh-chs": "保加利亚文", "zh-cht": "保加利亞文", "xloc": [ - "default.handlebars->41->1561" + "default.handlebars->41->1567" ] }, { @@ -11579,7 +11580,7 @@ "zh-chs": "缅甸文", "zh-cht": "緬甸文", "xloc": [ - "default.handlebars->41->1566" + "default.handlebars->41->1572" ] }, { @@ -11603,7 +11604,7 @@ "tr": "Varsayılan olarak, etkin olmayan cihazlar 1 gün sonra kaldırılacaktır.", "zh-chs": "默认情况下,不活动的设备将在 1 天后移除。", "xloc": [ - "default.handlebars->41->2014" + "default.handlebars->41->2020" ] }, { @@ -11627,7 +11628,7 @@ "tr": "Varsayılan olarak, etkin olmayan cihazlar {0} gün sonra kaldırılacaktır.", "zh-chs": "默认情况下,非活动设备将在 {0} 天后移除。", "xloc": [ - "default.handlebars->41->2015" + "default.handlebars->41->2021" ] }, { @@ -11647,7 +11648,7 @@ "ru": "Входящих байт", "tr": "Bayt Girişi", "xloc": [ - "default.handlebars->41->2802" + "default.handlebars->41->2808" ] }, { @@ -11667,7 +11668,7 @@ "ru": "Исходящих байт", "tr": "Bayt Bitti", "xloc": [ - "default.handlebars->41->2803" + "default.handlebars->41->2809" ] }, { @@ -11703,7 +11704,7 @@ "zh-cht": "CCM", "xloc": [ "default-mobile.handlebars->11->296", - "default.handlebars->41->808" + "default.handlebars->41->809" ] }, { @@ -11728,7 +11729,7 @@ "zh-chs": "CCM模式", "zh-cht": "CCM模式", "xloc": [ - "default.handlebars->41->1967" + "default.handlebars->41->1973" ] }, { @@ -11754,9 +11755,9 @@ "zh-cht": "CIRA", "xloc": [ "default-mobile.handlebars->11->257", - "default.handlebars->41->2929", - "default.handlebars->41->378", - "default.handlebars->41->630" + "default.handlebars->41->2935", + "default.handlebars->41->379", + "default.handlebars->41->631" ] }, { @@ -11781,7 +11782,7 @@ "zh-chs": "CIRA服务器", "zh-cht": "CIRA伺服器", "xloc": [ - "default.handlebars->41->2976" + "default.handlebars->41->2982" ] }, { @@ -11806,7 +11807,7 @@ "zh-chs": "CIRA服务器命令", "zh-cht": "CIRA伺服器指令", "xloc": [ - "default.handlebars->41->2977" + "default.handlebars->41->2983" ] }, { @@ -11851,7 +11852,7 @@ "zh-chs": "CIRA设置", "zh-cht": "CIRA設置", "xloc": [ - "default.handlebars->41->1975" + "default.handlebars->41->1981" ] }, { @@ -11876,9 +11877,9 @@ "zh-chs": "CPU", "zh-cht": "CPU", "xloc": [ - "default-mobile.handlebars->11->587", - "default.handlebars->41->1469", - "default.handlebars->41->2953", + "default-mobile.handlebars->11->588", + "default.handlebars->41->1475", + "default.handlebars->41->2959", "default.handlebars->container->column_l->p40->3->1->p40type->5" ] }, @@ -11904,7 +11905,7 @@ "zh-chs": "CPU负载", "zh-cht": "CPU負載", "xloc": [ - "default.handlebars->41->2918" + "default.handlebars->41->2924" ] }, { @@ -11929,7 +11930,7 @@ "zh-chs": "最近15分钟的CPU负载", "zh-cht": "最近15分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2921" + "default.handlebars->41->2927" ] }, { @@ -11954,7 +11955,7 @@ "zh-chs": "最近5分钟的CPU负载", "zh-cht": "最近5分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2920" + "default.handlebars->41->2926" ] }, { @@ -11979,7 +11980,7 @@ "zh-chs": "最近一分钟的CPU负载", "zh-cht": "最近一分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2919" + "default.handlebars->41->2925" ] }, { @@ -12004,8 +12005,8 @@ "zh-chs": "CR+LF", "zh-cht": "CR+LF", "xloc": [ - "default.handlebars->41->1303", - "default.handlebars->41->1334", + "default.handlebars->41->1308", + "default.handlebars->41->1339", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons", "sharing.handlebars->11->25", "sharing.handlebars->11->39", @@ -12034,7 +12035,7 @@ "zh-chs": "CSV", "zh-cht": "CSV", "xloc": [ - "default.handlebars->41->2371" + "default.handlebars->41->2377" ] }, { @@ -12059,9 +12060,9 @@ "zh-chs": "CSV格式", "zh-cht": "CSV格式", "xloc": [ - "default.handlebars->41->2375", - "default.handlebars->41->2443", - "default.handlebars->41->701" + "default.handlebars->41->2381", + "default.handlebars->41->2449", + "default.handlebars->41->702" ] }, { @@ -12108,7 +12109,7 @@ "zh-chs": "呼叫错误", "zh-cht": "呼叫錯誤", "xloc": [ - "default.handlebars->41->2993" + "default.handlebars->41->2999" ] }, { @@ -12156,9 +12157,9 @@ "agent-translations.json", "default-mobile.handlebars->11->113", "default-mobile.handlebars->dialog->idx_dlgButtonBar", - "default.handlebars->41->1838", - "default.handlebars->41->2982", - "default.handlebars->41->481", + "default.handlebars->41->1844", + "default.handlebars->41->2988", + "default.handlebars->41->482", "default.handlebars->container->dialog->idx_dlgButtonBar", "login-mobile.handlebars->dialog->idx_dlgButtonBar", "login.handlebars->dialog->idx_dlgButtonBar", @@ -12242,12 +12243,12 @@ "zh-chs": "容量", "zh-cht": "容量", "xloc": [ - "default-mobile.handlebars->11->592", - "default-mobile.handlebars->11->597", - "default-mobile.handlebars->11->599", - "default.handlebars->41->1474", - "default.handlebars->41->1479", - "default.handlebars->41->1481" + "default-mobile.handlebars->11->593", + "default-mobile.handlebars->11->598", + "default-mobile.handlebars->11->600", + "default.handlebars->41->1480", + "default.handlebars->41->1485", + "default.handlebars->41->1487" ] }, { @@ -12272,8 +12273,8 @@ "zh-chs": "容量/速度", "zh-cht": "容量/速度", "xloc": [ - "default-mobile.handlebars->11->590", - "default.handlebars->41->1472" + "default-mobile.handlebars->11->591", + "default.handlebars->41->1478" ] }, { @@ -12298,7 +12299,7 @@ "zh-chs": "加泰罗尼亚文", "zh-cht": "加泰羅尼亞文", "xloc": [ - "default.handlebars->41->1567" + "default.handlebars->41->1573" ] }, { @@ -12323,7 +12324,7 @@ "zh-chs": "在这里为中心显示地图", "zh-cht": "在這裡為中心顯示地圖", "xloc": [ - "default.handlebars->41->761" + "default.handlebars->41->762" ] }, { @@ -12369,8 +12370,8 @@ "zh-chs": "证书将在 {0} 天后到期", "xloc": [ "default-mobile.handlebars->11->59", - "default.handlebars->41->107", - "default.handlebars->41->108" + "default.handlebars->41->108", + "default.handlebars->41->109" ] }, { @@ -12395,7 +12396,7 @@ "zh-chs": "查莫罗", "zh-cht": "查莫羅", "xloc": [ - "default.handlebars->41->1568" + "default.handlebars->41->1574" ] }, { @@ -12447,7 +12448,7 @@ "zh-chs": "更改{0}的电邮", "zh-cht": "更改{0}的電郵", "xloc": [ - "default.handlebars->41->2686" + "default.handlebars->41->2692" ] }, { @@ -12472,9 +12473,9 @@ "zh-chs": "更改组", "zh-cht": "更改群", "xloc": [ - "default.handlebars->41->1146", - "default.handlebars->41->1147", - "default.handlebars->41->912" + "default.handlebars->41->1151", + "default.handlebars->41->1152", + "default.handlebars->41->913" ] }, { @@ -12500,8 +12501,8 @@ "zh-cht": "更改密碼", "xloc": [ "default-mobile.handlebars->11->121", - "default.handlebars->41->1784", - "default.handlebars->41->2659" + "default.handlebars->41->1790", + "default.handlebars->41->2665" ] }, { @@ -12526,7 +12527,7 @@ "zh-chs": "更改{0}的密码", "zh-cht": "更改{0}的密碼", "xloc": [ - "default.handlebars->41->2695" + "default.handlebars->41->2701" ] }, { @@ -12551,7 +12552,7 @@ "zh-chs": "更改{0}的真实名称", "zh-cht": "更改{0}的真實名稱", "xloc": [ - "default.handlebars->41->2681" + "default.handlebars->41->2687" ] }, { @@ -12698,7 +12699,7 @@ "zh-chs": "更改该用户的密码", "zh-cht": "更改該用戶的密碼", "xloc": [ - "default.handlebars->41->2658" + "default.handlebars->41->2664" ] }, { @@ -12748,7 +12749,7 @@ "zh-chs": "在此处更改您的帐户电邮地址。", "zh-cht": "在此處更改你的帳戶電郵地址。", "xloc": [ - "default.handlebars->41->1771" + "default.handlebars->41->1777" ] }, { @@ -12773,7 +12774,7 @@ "zh-chs": "在下面的框中两次输入旧密码和新密码,以更改帐户密码。", "zh-cht": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。", "xloc": [ - "default.handlebars->41->1777" + "default.handlebars->41->1783" ] }, { @@ -12798,7 +12799,7 @@ "zh-chs": "更改帐户凭据", "zh-cht": "帳戶憑證已更改", "xloc": [ - "default.handlebars->41->2271" + "default.handlebars->41->2277" ] }, { @@ -12818,7 +12819,7 @@ "ru": "Изменено отображаемое имя учетной записи на {0}.", "tr": "Hesap görünen adı {0} olarak değiştirildi.", "xloc": [ - "default.handlebars->41->2323" + "default.handlebars->41->2329" ] }, { @@ -12843,8 +12844,8 @@ "zh-chs": "{1}组中的设备{0}已更改:{2}", "zh-cht": "{1}組中的設備{0}已更改:{2}", "xloc": [ - "default.handlebars->41->2255", - "default.handlebars->41->2336" + "default.handlebars->41->2261", + "default.handlebars->41->2342" ] }, { @@ -12869,7 +12870,7 @@ "zh-chs": "语言从{1}更改为{2}", "zh-cht": "語言從{1}更改為{2}", "xloc": [ - "default.handlebars->41->2199" + "default.handlebars->41->2205" ] }, { @@ -12894,8 +12895,8 @@ "zh-chs": "已更改{0}的用户设备权限", "zh-cht": "已更改{0}的用戶設備權限", "xloc": [ - "default.handlebars->41->2257", - "default.handlebars->41->2278" + "default.handlebars->41->2263", + "default.handlebars->41->2284" ] }, { @@ -12941,7 +12942,7 @@ "zh-chs": "更改语言将需要刷新页面。", "zh-cht": "更改語言將需要刷新頁面。", "xloc": [ - "default.handlebars->41->1735" + "default.handlebars->41->1741" ] }, { @@ -12966,12 +12967,12 @@ "zh-chs": "聊天", "zh-cht": "聊天", "xloc": [ - "default.handlebars->41->1007", - "default.handlebars->41->1029", - "default.handlebars->41->2392", - "default.handlebars->41->2654", - "default.handlebars->41->2655", - "default.handlebars->41->901" + "default.handlebars->41->1012", + "default.handlebars->41->1034", + "default.handlebars->41->2398", + "default.handlebars->41->2660", + "default.handlebars->41->2661", + "default.handlebars->41->902" ] }, { @@ -12996,10 +12997,10 @@ "zh-chs": "聊天并通知", "zh-cht": "聊天並通知", "xloc": [ - "default-mobile.handlebars->11->672", - "default-mobile.handlebars->11->692", - "default.handlebars->41->2046", - "default.handlebars->41->2083" + "default-mobile.handlebars->11->673", + "default-mobile.handlebars->11->693", + "default.handlebars->41->2052", + "default.handlebars->41->2089" ] }, { @@ -13023,8 +13024,8 @@ "tr": "Sohbet İsteği, Kabul etmek için buraya tıklayın.", "zh-chs": "聊天请求,点击这里接受。", "xloc": [ - "default-mobile.handlebars->11->724", - "default.handlebars->41->2872" + "default-mobile.handlebars->11->725", + "default.handlebars->41->2878" ] }, { @@ -13074,7 +13075,7 @@ "zh-chs": "车臣", "zh-cht": "車臣", "xloc": [ - "default.handlebars->41->1569" + "default.handlebars->41->1575" ] }, { @@ -13099,7 +13100,7 @@ "zh-chs": "检查并单击确定以清除错误日志。", "zh-cht": "檢查並單擊確定以清除錯誤日誌。", "xloc": [ - "default.handlebars->41->192" + "default.handlebars->41->193" ] }, { @@ -13124,7 +13125,7 @@ "zh-chs": "检查并单击确定以开始服务器自我更新。", "zh-cht": "檢查並單擊確定以開始伺服器自我更新。", "xloc": [ - "default.handlebars->41->187" + "default.handlebars->41->188" ] }, { @@ -13174,7 +13175,7 @@ "zh-chs": "检查您的手机并输入验证码。", "zh-cht": "檢查你的電話並輸入驗證碼。", "xloc": [ - "default.handlebars->41->238" + "default.handlebars->41->239" ] }, { @@ -13199,8 +13200,8 @@ "zh-chs": "检查...", "zh-cht": "檢查...", "xloc": [ - "default.handlebars->41->1535", - "default.handlebars->41->2987" + "default.handlebars->41->1541", + "default.handlebars->41->2993" ] }, { @@ -13225,7 +13226,7 @@ "zh-chs": "中文", "zh-cht": "中文", "xloc": [ - "default.handlebars->41->1570" + "default.handlebars->41->1576" ] }, { @@ -13250,7 +13251,7 @@ "zh-chs": "中文(香港)", "zh-cht": "中文(香港)", "xloc": [ - "default.handlebars->41->1571" + "default.handlebars->41->1577" ] }, { @@ -13275,7 +13276,7 @@ "zh-chs": "中文(中国)", "zh-cht": "中文(中國)", "xloc": [ - "default.handlebars->41->1572" + "default.handlebars->41->1578" ] }, { @@ -13300,7 +13301,7 @@ "zh-chs": "简体中文", "zh-cht": "簡體中文", "xloc": [ - "default.handlebars->41->1732" + "default.handlebars->41->1738" ] }, { @@ -13325,7 +13326,7 @@ "zh-chs": "中文(新加坡)", "zh-cht": "中文(新加坡)", "xloc": [ - "default.handlebars->41->1573" + "default.handlebars->41->1579" ] }, { @@ -13350,7 +13351,7 @@ "zh-chs": "中文(台湾)", "zh-cht": "中文(台灣)", "xloc": [ - "default.handlebars->41->1574" + "default.handlebars->41->1580" ] }, { @@ -13375,7 +13376,7 @@ "zh-chs": "繁体中文", "zh-cht": "繁體中文", "xloc": [ - "default.handlebars->41->1733" + "default.handlebars->41->1739" ] }, { @@ -13426,7 +13427,7 @@ "zh-chs": "楚瓦什", "zh-cht": "楚瓦什", "xloc": [ - "default.handlebars->41->1575" + "default.handlebars->41->1581" ] }, { @@ -13480,11 +13481,11 @@ "default-mobile.handlebars->11->501", "default-mobile.handlebars->11->78", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->5", - "default.handlebars->41->1374", - "default.handlebars->41->1376", - "default.handlebars->41->1378", - "default.handlebars->41->1380", - "default.handlebars->41->2193", + "default.handlebars->41->1379", + "default.handlebars->41->1381", + "default.handlebars->41->1383", + "default.handlebars->41->1385", + "default.handlebars->41->2199", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7", "default.handlebars->container->column_l->p41->3->1", "messenger.handlebars->xbottom->1->1->0->5", @@ -13516,7 +13517,7 @@ "zh-chs": "清除 RDP 凭据?", "xloc": [ "default-mobile.handlebars->11->399", - "default.handlebars->41->1190" + "default.handlebars->41->1195" ] }, { @@ -13541,7 +13542,7 @@ "zh-chs": "清除 SSH 凭据?", "xloc": [ "default-mobile.handlebars->11->397", - "default.handlebars->41->1188" + "default.handlebars->41->1193" ] }, { @@ -13566,7 +13567,7 @@ "zh-chs": "清除保安编码", "zh-cht": "清除保安編碼", "xloc": [ - "default.handlebars->41->218" + "default.handlebars->41->219" ] }, { @@ -13590,8 +13591,8 @@ "tr": "Temsilci çekirdeğini temizle", "zh-chs": "清除代理核心", "xloc": [ - "default.handlebars->41->654", - "default.handlebars->41->697" + "default.handlebars->41->655", + "default.handlebars->41->698" ] }, { @@ -13615,7 +13616,7 @@ "tr": "Seçilen cihazlarda temsilci çekirdeği temizlensin mi?", "zh-chs": "清除选定设备上的代理核心?", "xloc": [ - "default.handlebars->41->696" + "default.handlebars->41->697" ] }, { @@ -13640,8 +13641,8 @@ "zh-chs": "全部清除", "zh-cht": "全部清除", "xloc": [ - "default-mobile.handlebars->11->707", - "default.handlebars->41->2855" + "default-mobile.handlebars->11->708", + "default.handlebars->41->2861" ] }, { @@ -13667,7 +13668,7 @@ "zh-cht": "清除搜索過濾器", "xloc": [ "default-mobile.handlebars->11->193", - "default.handlebars->41->338" + "default.handlebars->41->339" ] }, { @@ -13692,8 +13693,8 @@ "zh-chs": "清除核心", "zh-cht": "清除核心", "xloc": [ - "default-mobile.handlebars->11->613", - "default.handlebars->41->1496" + "default-mobile.handlebars->11->614", + "default.handlebars->41->1502" ] }, { @@ -13718,7 +13719,7 @@ "zh-chs": "从应用程序中清除机密,然后重试。您只有几分钟的时间来输入正确的代码。", "zh-cht": "從應用程序中清除秘密,然後重試。你只有幾分鐘的時間來輸入正確的代碼。", "xloc": [ - "default.handlebars->41->208" + "default.handlebars->41->209" ] }, { @@ -13743,8 +13744,8 @@ "zh-chs": "清除此通知", "zh-cht": "清除此通知", "xloc": [ - "default-mobile.handlebars->11->706", - "default.handlebars->41->2854" + "default-mobile.handlebars->11->707", + "default.handlebars->41->2860" ] }, { @@ -13830,8 +13831,8 @@ "zh-chs": "单击此处编辑设备组名称", "zh-cht": "單擊此處編輯裝置群名稱", "xloc": [ - "default.handlebars->41->1849", - "default.handlebars->41->2138" + "default.handlebars->41->1855", + "default.handlebars->41->2144" ] }, { @@ -13856,7 +13857,7 @@ "zh-chs": "单击此处编辑服务器端设备名称", "zh-cht": "單擊此處編輯伺服器端裝置名稱", "xloc": [ - "default.handlebars->41->777" + "default.handlebars->41->778" ] }, { @@ -13881,7 +13882,7 @@ "zh-chs": "单击此处编辑用户组名称", "zh-cht": "單擊此處編輯用戶群名稱", "xloc": [ - "default.handlebars->41->2513" + "default.handlebars->41->2519" ] }, { @@ -14004,7 +14005,7 @@ "zh-cht": "單擊確定將驗證電郵發送到:", "xloc": [ "default-mobile.handlebars->11->106", - "default.handlebars->41->1768" + "default.handlebars->41->1774" ] }, { @@ -14098,7 +14099,7 @@ "zh-cht": "客戶端控制模式(CCM)", "xloc": [ "default-mobile.handlebars->11->568", - "default.handlebars->41->1450" + "default.handlebars->41->1455" ] }, { @@ -14123,7 +14124,7 @@ "zh-chs": "客户编号", "zh-cht": "客戶編號", "xloc": [ - "default.handlebars->41->1831" + "default.handlebars->41->1837" ] }, { @@ -14148,7 +14149,7 @@ "zh-chs": "客户端启动的远程访问", "zh-cht": "客戶端啟動的遠程訪問", "xloc": [ - "default.handlebars->41->1974" + "default.handlebars->41->1980" ] }, { @@ -14173,7 +14174,7 @@ "zh-chs": "客户机密", "zh-cht": "客戶機密", "xloc": [ - "default.handlebars->41->1832" + "default.handlebars->41->1838" ] }, { @@ -14226,11 +14227,11 @@ "xloc": [ "agent-translations.json", "default-mobile.handlebars->11->76", - "default.handlebars->41->1291", - "default.handlebars->41->1350", - "default.handlebars->41->216", - "default.handlebars->41->224", - "default.handlebars->41->2981", + "default.handlebars->41->1296", + "default.handlebars->41->1355", + "default.handlebars->41->217", + "default.handlebars->41->225", + "default.handlebars->41->2987", "sharing.handlebars->11->52" ] }, @@ -14242,7 +14243,7 @@ "pt-br": "Sessão \\\"{0}\\\" multiplex de área de trabalho fechada, {1} segundo(s)", "ru": "Завершился сеанс мультиплексирования рабочего стола \\\"{0}\\\", {1} сек.", "xloc": [ - "default.handlebars->41->2343" + "default.handlebars->41->2349" ] }, { @@ -14267,7 +14268,7 @@ "zh-chs": "封闭式桌面多路复用会话,{0}秒", "zh-cht": "封閉式桌面多路復用會話,{0}秒", "xloc": [ - "default.handlebars->41->2204" + "default.handlebars->41->2210" ] }, { @@ -14292,7 +14293,7 @@ "zh-chs": "码", "zh-cht": "碼", "xloc": [ - "default.handlebars->41->302" + "default.handlebars->41->303" ] }, { @@ -14392,7 +14393,7 @@ "zh-chs": "命令", "zh-cht": "命令", "xloc": [ - "default.handlebars->41->594" + "default.handlebars->41->595" ] }, { @@ -14416,7 +14417,7 @@ "tr": "Komut satırı", "zh-chs": "命令行", "xloc": [ - "default.handlebars->41->114" + "default.handlebars->41->115" ] }, { @@ -14441,10 +14442,10 @@ "zh-chs": "指令", "zh-cht": "指令", "xloc": [ - "default-mobile.handlebars->11->694", - "default.handlebars->41->1009", - "default.handlebars->41->1031", - "default.handlebars->41->2085" + "default-mobile.handlebars->11->695", + "default.handlebars->41->1014", + "default.handlebars->41->1036", + "default.handlebars->41->2091" ] }, { @@ -14469,8 +14470,8 @@ "zh-chs": "通用设备组", "zh-cht": "通用裝置群", "xloc": [ - "default.handlebars->41->2547", - "default.handlebars->41->2700" + "default.handlebars->41->2553", + "default.handlebars->41->2706" ] }, { @@ -14495,8 +14496,8 @@ "zh-chs": "通用设备", "zh-cht": "通用裝置", "xloc": [ - "default.handlebars->41->2553", - "default.handlebars->41->2712" + "default.handlebars->41->2559", + "default.handlebars->41->2718" ] }, { @@ -14521,7 +14522,7 @@ "zh-chs": "编译时间", "xloc": [ "default-mobile.handlebars->11->541", - "default.handlebars->41->1413" + "default.handlebars->41->1418" ] }, { @@ -14567,7 +14568,7 @@ "zh-chs": "压缩档案...", "zh-cht": "壓縮檔案...", "xloc": [ - "default.handlebars->41->1345", + "default.handlebars->41->1350", "sharing.handlebars->11->47" ] }, @@ -14615,15 +14616,15 @@ "zh-cht": "確認", "xloc": [ "default-mobile.handlebars->11->394", - "default-mobile.handlebars->11->644", - "default.handlebars->41->1141", - "default.handlebars->41->1150", - "default.handlebars->41->1985", - "default.handlebars->41->2421", - "default.handlebars->41->2503", - "default.handlebars->41->2569", - "default.handlebars->41->2698", - "default.handlebars->41->665" + "default-mobile.handlebars->11->645", + "default.handlebars->41->1146", + "default.handlebars->41->1155", + "default.handlebars->41->1991", + "default.handlebars->41->2427", + "default.handlebars->41->2509", + "default.handlebars->41->2575", + "default.handlebars->41->2704", + "default.handlebars->41->666" ] }, { @@ -14670,7 +14671,7 @@ "zh-cht": "確認將1個副本複製到此位置?", "xloc": [ "default-mobile.handlebars->11->490", - "default.handlebars->41->1369", + "default.handlebars->41->1374", "sharing.handlebars->11->70" ] }, @@ -14696,7 +14697,7 @@ "zh-chs": "确认{0}个条目的复制到此位置?", "zh-cht": "確認{0}個條目的複製到此位置?", "xloc": [ - "default.handlebars->41->1368", + "default.handlebars->41->1373", "sharing.handlebars->11->69" ] }, @@ -14747,7 +14748,7 @@ "zh-chs": "确认删除选定的帐户?", "zh-cht": "確認刪除所選帳戶?", "xloc": [ - "default.handlebars->41->2420" + "default.handlebars->41->2426" ] }, { @@ -14794,7 +14795,7 @@ "zh-chs": "确认删除选定的用户组?", "zh-cht": "確認刪除所選用戶群?", "xloc": [ - "default.handlebars->41->2502" + "default.handlebars->41->2508" ] }, { @@ -14819,7 +14820,7 @@ "zh-chs": "确认删除用户{0}?", "zh-cht": "確認刪除用戶{0}?", "xloc": [ - "default.handlebars->41->2697" + "default.handlebars->41->2703" ] }, { @@ -14844,7 +14845,7 @@ "zh-chs": "确认删除用户“ {0} ”的成员身份?", "zh-cht": "確認刪除用戶“ {0} ”的成員身份?", "xloc": [ - "default.handlebars->41->2572" + "default.handlebars->41->2578" ] }, { @@ -14869,7 +14870,7 @@ "zh-chs": "确认删除用户组“ {0} ”的成员身份?", "zh-cht": "確認刪除用戶群“ {0} ”的成員身份?", "xloc": [ - "default.handlebars->41->2729" + "default.handlebars->41->2735" ] }, { @@ -14895,7 +14896,7 @@ "zh-cht": "確認將1個條目移動到此位置?", "xloc": [ "default-mobile.handlebars->11->492", - "default.handlebars->41->1371", + "default.handlebars->41->1376", "sharing.handlebars->11->72" ] }, @@ -14921,7 +14922,7 @@ "zh-chs": "确认将{0}个条目移到此位置?", "zh-cht": "確認將{0}個條目移到該位置?", "xloc": [ - "default.handlebars->41->1370", + "default.handlebars->41->1375", "sharing.handlebars->11->71" ] }, @@ -14972,7 +14973,7 @@ "zh-chs": "确认覆盖?", "zh-cht": "確認覆蓋?", "xloc": [ - "default.handlebars->41->2187" + "default.handlebars->41->2193" ] }, { @@ -14997,8 +14998,8 @@ "zh-chs": "确认删除设备“ {0} ”的访问权限?", "zh-cht": "確認刪除裝置“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2562", - "default.handlebars->41->2720" + "default.handlebars->41->2568", + "default.handlebars->41->2726" ] }, { @@ -15023,8 +15024,8 @@ "zh-chs": "确认删除设备组“ {0} ”的访问权限?", "zh-cht": "確認刪除裝置群“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2564", - "default.handlebars->41->2733" + "default.handlebars->41->2570", + "default.handlebars->41->2739" ] }, { @@ -15049,7 +15050,7 @@ "zh-chs": "确认删除用户“ {0} ”的访问权限?", "zh-cht": "確認刪除用戶“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2722" + "default.handlebars->41->2728" ] }, { @@ -15074,7 +15075,7 @@ "zh-chs": "确认删除用户组“ {0} ”的访问权限?", "zh-cht": "確認刪除用戶群“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2725" + "default.handlebars->41->2731" ] }, { @@ -15099,8 +15100,8 @@ "zh-chs": "确认删除访问权限?", "zh-cht": "確認刪除訪問權限?", "xloc": [ - "default.handlebars->41->2723", - "default.handlebars->41->2726" + "default.handlebars->41->2729", + "default.handlebars->41->2732" ] }, { @@ -15126,7 +15127,7 @@ "zh-cht": "確認刪除身份驗證軟體兩步登入?", "xloc": [ "default-mobile.handlebars->11->105", - "default.handlebars->41->1518" + "default.handlebars->41->1524" ] }, { @@ -15173,7 +15174,7 @@ "zh-chs": "确认删除设备共享“{0}”?", "zh-cht": "確認刪除設備共享“{0}”?", "xloc": [ - "default.handlebars->41->2718" + "default.handlebars->41->2724" ] }, { @@ -15241,7 +15242,7 @@ "tr": "Push kimlik doğrulama cihazının kaldırılması onaylansın mı?", "zh-chs": "确认移除推送认证设备?", "xloc": [ - "default.handlebars->41->1520" + "default.handlebars->41->1526" ] }, { @@ -15266,7 +15267,7 @@ "zh-chs": "确认删除用户“ {0} ”的权限?", "zh-cht": "確認刪除用戶“ {0} ”的權限?", "xloc": [ - "default.handlebars->41->2096" + "default.handlebars->41->2102" ] }, { @@ -15291,7 +15292,7 @@ "zh-chs": "确认删除用户组“ {0} ”的权限?", "zh-cht": "確認刪除用戶群“ {0} ”的權限?", "xloc": [ - "default.handlebars->41->2098" + "default.handlebars->41->2104" ] }, { @@ -15315,7 +15316,7 @@ "tr": "Seçili cihazların kaldırılması onaylansın mı?", "zh-chs": "确认移除所选设备?", "xloc": [ - "default.handlebars->41->659" + "default.handlebars->41->660" ] }, { @@ -15339,7 +15340,7 @@ "tr": "Bu giriş belirtecinin kaldırılması onaylansın mı?", "zh-chs": "确认删除此登录令牌?", "xloc": [ - "default.handlebars->41->1824" + "default.handlebars->41->1830" ] }, { @@ -15386,7 +15387,7 @@ "zh-chs": "确认删除用户{0}?", "zh-cht": "確認刪除用戶{0}?", "xloc": [ - "default-mobile.handlebars->11->703" + "default-mobile.handlebars->11->704" ] }, { @@ -15410,7 +15411,7 @@ "tr": "Seçilen {0} cihazın kaldırılması onaylansın mı?", "zh-chs": "确认移除 {0} 个选定的设备?", "xloc": [ - "default.handlebars->41->660" + "default.handlebars->41->661" ] }, { @@ -15436,7 +15437,7 @@ "zh-cht": "將{1}入口{2}中的{0}限製到此位置?", "xloc": [ "default-mobile.handlebars->11->158", - "default.handlebars->41->2188" + "default.handlebars->41->2194" ] }, { @@ -15465,8 +15466,8 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2span", - "default.handlebars->41->1887", - "default.handlebars->41->860", + "default.handlebars->41->1893", + "default.handlebars->41->861", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3", @@ -15501,7 +15502,7 @@ "zh-chs": "全部连接", "zh-cht": "全部連接", "xloc": [ - "default.handlebars->41->427", + "default.handlebars->41->428", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar" ] }, @@ -15548,7 +15549,7 @@ "zh-chs": "连接到服务器", "zh-cht": "連接到伺服器", "xloc": [ - "default.handlebars->41->1978" + "default.handlebars->41->1984" ] }, { @@ -15645,7 +15646,6 @@ "zh-chs": "使用英特尔®AMT硬件KVM连接", "zh-cht": "使用英特爾®AMT硬件KVM連接", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1hspan", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2hspan" ] }, @@ -15669,6 +15669,12 @@ "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1rspan" ] }, + { + "en": "Connect using hardware KVM", + "xloc": [ + "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1hspan" + ] + }, { "cs": "Připojeno", "da": "Forbundet", @@ -15693,7 +15699,7 @@ "xloc": [ "default-mobile.handlebars->11->4", "default.handlebars->41->11", - "default.handlebars->41->389", + "default.handlebars->41->390", "sharing.handlebars->11->4", "ssh.handlebars->3->4", "xterm.handlebars->9->4" @@ -15721,7 +15727,7 @@ "zh-chs": "已连接的英特尔®AMT", "zh-cht": "已連接的Intel® AMT", "xloc": [ - "default.handlebars->41->2909" + "default.handlebars->41->2915" ] }, { @@ -15746,7 +15752,7 @@ "zh-chs": "已连接的用户", "zh-cht": "已连接的用户", "xloc": [ - "default.handlebars->41->2914" + "default.handlebars->41->2920" ] }, { @@ -15793,7 +15799,7 @@ "zh-cht": "現在已連接", "xloc": [ "default-mobile.handlebars->11->536", - "default.handlebars->41->1408" + "default.handlebars->41->1413" ] }, { @@ -15908,10 +15914,10 @@ "default-mobile.handlebars->11->2", "default-mobile.handlebars->11->48", "default-mobile.handlebars->11->508", - "default.handlebars->41->1394", - "default.handlebars->41->362", - "default.handlebars->41->365", - "default.handlebars->41->430", + "default.handlebars->41->1399", + "default.handlebars->41->363", + "default.handlebars->41->366", + "default.handlebars->41->431", "default.handlebars->41->9", "sharing.handlebars->11->2", "sharing.handlebars->11->93", @@ -15962,7 +15968,7 @@ "zh-chs": "连接数量", "zh-cht": "連接數量", "xloc": [ - "default.handlebars->41->2940" + "default.handlebars->41->2946" ] }, { @@ -15987,8 +15993,8 @@ "zh-chs": "连接错误", "xloc": [ "default-mobile.handlebars->11->471", - "default.handlebars->41->1324", - "default.handlebars->41->1341", + "default.handlebars->41->1329", + "default.handlebars->41->1346", "login2.handlebars->7->32" ] }, @@ -16014,7 +16020,7 @@ "zh-chs": "连接转发器", "zh-cht": "連接轉發器", "xloc": [ - "default.handlebars->41->2975" + "default.handlebars->41->2981" ] }, { @@ -16090,9 +16096,9 @@ "zh-cht": "連接性", "xloc": [ "default-mobile.handlebars->11->318", - "default.handlebars->41->2145", - "default.handlebars->41->352", - "default.handlebars->41->877", + "default.handlebars->41->2151", + "default.handlebars->41->353", + "default.handlebars->41->878", "default.handlebars->container->column_l->p21->p21main->1->1->meshConnChartDiv->1" ] }, @@ -16113,7 +16119,7 @@ "ru": "Согласие", "tr": "Onay", "xloc": [ - "default.handlebars->41->2353" + "default.handlebars->41->2359" ] }, { @@ -16139,8 +16145,8 @@ "zh-cht": "控制台", "xloc": [ "default-mobile.handlebars->11->356", - "default.handlebars->41->1002", - "default.handlebars->41->1024", + "default.handlebars->41->1007", + "default.handlebars->41->1029", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole", "default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole", "default.handlebars->contextMenu->cxconsole" @@ -16168,7 +16174,7 @@ "zh-chs": "控制台 -", "zh-cht": "控制台 -", "xloc": [ - "default.handlebars->41->778" + "default.handlebars->41->779" ] }, { @@ -16193,8 +16199,8 @@ "zh-chs": "控制", "zh-cht": "控制", "xloc": [ - "default.handlebars->41->1001", - "default.handlebars->41->1023", + "default.handlebars->41->1006", + "default.handlebars->41->1028", "messenger.handlebars->remoteImage->3->2" ] }, @@ -16245,7 +16251,7 @@ "zh-chs": "Cookie编码器", "zh-cht": "Cookie編碼器", "xloc": [ - "default.handlebars->41->2959" + "default.handlebars->41->2965" ] }, { @@ -16272,7 +16278,7 @@ "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->567", + "default.handlebars->41->568", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "sharing.handlebars->p13->p13toolbar->fileArea2->3" @@ -16300,9 +16306,9 @@ "zh-chs": "将MAC地址复制到剪贴板", "zh-cht": "將MAC地址複製到剪貼板", "xloc": [ - "default.handlebars->41->152", - "default.handlebars->41->160", - "default.handlebars->41->163" + "default.handlebars->41->153", + "default.handlebars->41->161", + "default.handlebars->41->164" ] }, { @@ -16326,8 +16332,8 @@ "tr": "URL'yi panoya kopyala", "zh-chs": "将 URL 复制到剪贴板", "xloc": [ - "default.handlebars->41->576", - "default.handlebars->41->580" + "default.handlebars->41->577", + "default.handlebars->41->581" ] }, { @@ -16352,7 +16358,7 @@ "zh-chs": "将Windows 32位代理URL复制到剪贴板", "zh-cht": "將Windows 32位代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->557" + "default.handlebars->41->558" ] }, { @@ -16377,7 +16383,7 @@ "zh-chs": "将Windows 64位代理URL复制到剪贴板", "zh-cht": "將Windows 64位代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->561" + "default.handlebars->41->562" ] }, { @@ -16402,18 +16408,18 @@ "zh-chs": "将地址复制到剪贴板", "zh-cht": "將地址複製到剪貼板", "xloc": [ - "default.handlebars->41->141", - "default.handlebars->41->143", - "default.handlebars->41->145", - "default.handlebars->41->154", - "default.handlebars->41->156", - "default.handlebars->41->158", - "default.handlebars->41->166", - "default.handlebars->41->168", - "default.handlebars->41->170", - "default.handlebars->41->172", - "default.handlebars->41->174", - "default.handlebars->41->176" + "default.handlebars->41->142", + "default.handlebars->41->144", + "default.handlebars->41->146", + "default.handlebars->41->155", + "default.handlebars->41->157", + "default.handlebars->41->159", + "default.handlebars->41->167", + "default.handlebars->41->169", + "default.handlebars->41->171", + "default.handlebars->41->173", + "default.handlebars->41->175", + "default.handlebars->41->177" ] }, { @@ -16438,8 +16444,8 @@ "zh-chs": "将代理URL复制到剪贴板", "zh-cht": "將代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->593", - "default.handlebars->41->595" + "default.handlebars->41->594", + "default.handlebars->41->596" ] }, { @@ -16464,12 +16470,12 @@ "zh-chs": "复制连结到剪贴板", "zh-cht": "複製連結到剪貼板", "xloc": [ - "default.handlebars->41->2156", - "default.handlebars->41->2175", - "default.handlebars->41->294", - "default.handlebars->41->316", - "default.handlebars->41->318", - "default.handlebars->41->531" + "default.handlebars->41->2162", + "default.handlebars->41->2181", + "default.handlebars->41->295", + "default.handlebars->41->317", + "default.handlebars->41->319", + "default.handlebars->41->532" ] }, { @@ -16494,7 +16500,7 @@ "zh-chs": "将macOS代理URL复制到剪贴板", "zh-cht": "將macOS代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->571" + "default.handlebars->41->572" ] }, { @@ -16519,7 +16525,7 @@ "zh-chs": "将名称复制到剪贴板", "zh-cht": "將名稱複製到剪貼板", "xloc": [ - "default.handlebars->41->150" + "default.handlebars->41->151" ] }, { @@ -16546,8 +16552,8 @@ "xloc": [ "agentinvite.handlebars->container->column_l->5->linuxtab", "agentinvite.handlebars->container->column_l->5->linuxtab", - "default.handlebars->41->566", - "default.handlebars->41->589" + "default.handlebars->41->567", + "default.handlebars->41->590" ] }, { @@ -16572,7 +16578,7 @@ "zh-chs": "将有效代码复制到剪贴板", "zh-cht": "將有效代碼複製到剪貼板", "xloc": [ - "default.handlebars->41->219" + "default.handlebars->41->220" ] }, { @@ -16597,7 +16603,7 @@ "zh-chs": "复制:“{0}”到“{1}”", "zh-cht": "複製:“{0}”到“{1}”", "xloc": [ - "default.handlebars->41->2247" + "default.handlebars->41->2253" ] }, { @@ -16778,7 +16784,7 @@ "zh-chs": "核心服务器", "zh-cht": "核心伺服器", "xloc": [ - "default.handlebars->41->2958" + "default.handlebars->41->2964" ] }, { @@ -16803,7 +16809,7 @@ "zh-chs": "科西嘉文", "zh-cht": "科西嘉文", "xloc": [ - "default.handlebars->41->1576" + "default.handlebars->41->1582" ] }, { @@ -16849,7 +16855,7 @@ "zh-chs": "创建帐号", "zh-cht": "創建帳號", "xloc": [ - "default.handlebars->41->2470", + "default.handlebars->41->2476", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1", "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1", "login2.handlebars->centralTable->1->0->logincell->createpanel->createpanelform->9->1->12->1->1" @@ -16922,8 +16928,8 @@ "tr": "Giriş Simgesi Oluştur", "zh-chs": "创建登录令牌", "xloc": [ - "default.handlebars->41->1761", - "default.handlebars->41->319" + "default.handlebars->41->1767", + "default.handlebars->41->320" ] }, { @@ -16948,7 +16954,7 @@ "zh-chs": "创建用户组", "zh-cht": "創建用戶群", "xloc": [ - "default.handlebars->41->2510" + "default.handlebars->41->2516" ] }, { @@ -16973,7 +16979,7 @@ "zh-chs": "创建连结以与访客共享此设备", "zh-cht": "創建鏈結以與訪客共享此裝置", "xloc": [ - "default.handlebars->41->904" + "default.handlebars->41->905" ] }, { @@ -16998,7 +17004,7 @@ "zh-chs": "使用以下选项创建一个新的设备组。", "zh-cht": "使用以下選項創建一個新的裝置群。", "xloc": [ - "default.handlebars->41->1791" + "default.handlebars->41->1797" ] }, { @@ -17023,7 +17029,7 @@ "zh-chs": "创建一个新的设备组。", "zh-cht": "創建一個新的裝置群。", "xloc": [ - "default.handlebars->41->355" + "default.handlebars->41->356" ] }, { @@ -17047,7 +17053,7 @@ "tr": "Hesabınıza alternatif giriş olarak kullanılabilecek geçici bir kullanıcı adı ve şifre oluşturun. Bu, araçların veya diğer hizmetlerin hesabınıza erişmesine izin vermek için kullanışlıdır.", "zh-chs": "创建一个临时用户名和密码,可用作您帐户的替代登录名。这对于允许工具或其他服务访问您的帐户非常有用。", "xloc": [ - "default.handlebars->41->1741" + "default.handlebars->41->1747" ] }, { @@ -17072,7 +17078,7 @@ "zh-chs": "创建文件夹(如果不存在)?", "zh-cht": "創建文件夾(如果不存在)?", "xloc": [ - "default.handlebars->41->691" + "default.handlebars->41->692" ] }, { @@ -17097,7 +17103,7 @@ "zh-chs": "创建文件夹:“{0}”", "zh-cht": "創建文件夾:“{0}”", "xloc": [ - "default.handlebars->41->2240" + "default.handlebars->41->2246" ] }, { @@ -17146,7 +17152,7 @@ "zh-chs": "通过导入以下格式的JSON档案一次创建多个帐户:", "zh-cht": "通過導入以下格式的JSON檔案一次創建多個帳戶:", "xloc": [ - "default.handlebars->41->2434" + "default.handlebars->41->2440" ] }, { @@ -17198,7 +17204,7 @@ "zh-chs": "创建的设备组:{0}", "zh-cht": "創建的設備組:{0}", "xloc": [ - "default.handlebars->41->2251" + "default.handlebars->41->2257" ] }, { @@ -17223,7 +17229,7 @@ "zh-chs": "创建一个链接,该链接允许没有帐户的访客在有限的时间内远程控制此设备。", "zh-cht": "創建一個鏈接,該鏈接允許沒有帳戶的訪客在有限的時間內遠程控制此設備。", "xloc": [ - "default.handlebars->41->1047" + "default.handlebars->41->1052" ] }, { @@ -17292,7 +17298,7 @@ "zh-chs": "创建", "zh-cht": "創建", "xloc": [ - "default.handlebars->41->2614" + "default.handlebars->41->2620" ] }, { @@ -17317,7 +17323,7 @@ "zh-chs": "创建时间", "zh-cht": "創作時間", "xloc": [ - "default.handlebars->41->1867" + "default.handlebars->41->1873" ] }, { @@ -17369,8 +17375,8 @@ "zh-chs": "创建者", "zh-cht": "創作者", "xloc": [ - "default.handlebars->41->1865", - "default.handlebars->41->1866" + "default.handlebars->41->1871", + "default.handlebars->41->1872" ] }, { @@ -17396,9 +17402,9 @@ "zh-cht": "證書", "xloc": [ "default-mobile.handlebars->11->330", - "default.handlebars->41->1213", - "default.handlebars->41->1829", - "default.handlebars->41->889" + "default.handlebars->41->1218", + "default.handlebars->41->1835", + "default.handlebars->41->890" ] }, { @@ -17423,7 +17429,7 @@ "zh-chs": "克里语", "zh-cht": "克里語", "xloc": [ - "default.handlebars->41->1577" + "default.handlebars->41->1583" ] }, { @@ -17448,7 +17454,7 @@ "zh-chs": "克罗地亚文", "zh-cht": "克羅地亞文", "xloc": [ - "default.handlebars->41->1578" + "default.handlebars->41->1584" ] }, { @@ -17527,8 +17533,8 @@ "xloc": [ "default-mobile.handlebars->11->432", "default-mobile.handlebars->11->436", - "default.handlebars->41->1254", - "default.handlebars->41->1258", + "default.handlebars->41->1259", + "default.handlebars->41->1263", "default.handlebars->41->60", "sharing.handlebars->11->24" ] @@ -17678,7 +17684,7 @@ "zh-chs": "当前版本", "zh-cht": "當前版本", "xloc": [ - "default.handlebars->41->181" + "default.handlebars->41->182" ] }, { @@ -17702,8 +17708,8 @@ "tr": "Mevcut şifre doğru değil.", "zh-chs": "当前密码不正确。", "xloc": [ - "default-mobile.handlebars->11->734", - "default.handlebars->41->2882" + "default-mobile.handlebars->11->735", + "default.handlebars->41->2888" ] }, { @@ -17806,7 +17812,7 @@ "zh-chs": "捷克文", "zh-cht": "捷克文", "xloc": [ - "default.handlebars->41->1579" + "default.handlebars->41->1585" ] }, { @@ -17831,7 +17837,7 @@ "zh-chs": "DNS suffix", "zh-cht": "DNS suffix", "xloc": [ - "default.handlebars->41->149" + "default.handlebars->41->150" ] }, { @@ -17851,7 +17857,7 @@ "ru": "Ежедневно", "tr": "Günlük", "xloc": [ - "default.handlebars->41->279" + "default.handlebars->41->280" ] }, { @@ -17876,7 +17882,7 @@ "zh-chs": "丹麦文", "zh-cht": "丹麥文", "xloc": [ - "default.handlebars->41->1580" + "default.handlebars->41->1586" ] }, { @@ -17926,7 +17932,7 @@ "zh-chs": "数据通道", "zh-cht": "數據通道", "xloc": [ - "default.handlebars->41->1211", + "default.handlebars->41->1216", "sharing.handlebars->11->11" ] }, @@ -17952,7 +17958,7 @@ "zh-chs": "日期和时间", "zh-cht": "日期和時間", "xloc": [ - "default.handlebars->41->1738" + "default.handlebars->41->1744" ] }, { @@ -17978,9 +17984,9 @@ "zh-cht": "天", "xloc": [ "default-mobile.handlebars->11->384", - "default.handlebars->41->1125", - "default.handlebars->41->2779", - "default.handlebars->41->2782" + "default.handlebars->41->1130", + "default.handlebars->41->2785", + "default.handlebars->41->2788" ] }, { @@ -18005,8 +18011,8 @@ "zh-chs": "停用", "zh-cht": "停用", "xloc": [ - "default.handlebars->41->1897", - "default.handlebars->41->1957" + "default.handlebars->41->1903", + "default.handlebars->41->1963" ] }, { @@ -18031,7 +18037,7 @@ "zh-chs": "如果设置停用CCM", "zh-cht": "如果設置停用CCM", "xloc": [ - "default.handlebars->41->1969" + "default.handlebars->41->1975" ] }, { @@ -18079,7 +18085,7 @@ "zh-cht": "沉睡", "xloc": [ "default-mobile.handlebars->11->241", - "default.handlebars->41->606" + "default.handlebars->41->607" ] }, { @@ -18104,10 +18110,10 @@ "zh-chs": "默认", "zh-cht": "默認", "xloc": [ - "default.handlebars->41->2457", - "default.handlebars->41->2506", - "default.handlebars->41->2517", - "default.handlebars->41->2590" + "default.handlebars->41->2463", + "default.handlebars->41->2512", + "default.handlebars->41->2523", + "default.handlebars->41->2596" ] }, { @@ -18132,7 +18138,7 @@ "zh-chs": "德尔", "xloc": [ "default-mobile.handlebars->11->420", - "default.handlebars->41->1242" + "default.handlebars->41->1247" ] }, { @@ -18162,9 +18168,9 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", "default-mobile.handlebars->dialog->idx_dlgButtonBar->5", - "default.handlebars->41->1360", - "default.handlebars->41->2182", - "default.handlebars->41->748", + "default.handlebars->41->1365", + "default.handlebars->41->2188", + "default.handlebars->41->749", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->dialog->idx_dlgButtonBar->5", @@ -18200,7 +18206,7 @@ "zh-cht": "刪除帳戶", "xloc": [ "default-mobile.handlebars->11->115", - "default.handlebars->41->1776" + "default.handlebars->41->1782" ] }, { @@ -18225,7 +18231,7 @@ "zh-chs": "删除帐户", "zh-cht": "刪除帳戶", "xloc": [ - "default.handlebars->41->2422" + "default.handlebars->41->2428" ] }, { @@ -18251,7 +18257,7 @@ "zh-cht": "刪除裝置", "xloc": [ "default-mobile.handlebars->11->339", - "default.handlebars->41->914" + "default.handlebars->41->915" ] }, { @@ -18275,7 +18281,7 @@ "tr": "Cihazları Sil", "zh-chs": "删除设备", "xloc": [ - "default.handlebars->41->666" + "default.handlebars->41->667" ] }, { @@ -18300,10 +18306,10 @@ "zh-chs": "删除群组", "zh-cht": "刪除群組", "xloc": [ - "default-mobile.handlebars->11->642", - "default-mobile.handlebars->11->645", - "default.handlebars->41->1945", - "default.handlebars->41->1986" + "default-mobile.handlebars->11->643", + "default-mobile.handlebars->11->646", + "default.handlebars->41->1951", + "default.handlebars->41->1992" ] }, { @@ -18329,7 +18335,7 @@ "zh-cht": "刪除節點", "xloc": [ "default-mobile.handlebars->11->392", - "default.handlebars->41->1151" + "default.handlebars->41->1156" ] }, { @@ -18376,7 +18382,7 @@ "zh-chs": "删除用户", "zh-cht": "刪除用戶", "xloc": [ - "default.handlebars->41->2657" + "default.handlebars->41->2663" ] }, { @@ -18401,8 +18407,8 @@ "zh-chs": "删除用户群组", "zh-cht": "刪除用戶群組", "xloc": [ - "default.handlebars->41->2558", - "default.handlebars->41->2570" + "default.handlebars->41->2564", + "default.handlebars->41->2576" ] }, { @@ -18427,7 +18433,7 @@ "zh-chs": "删除用户群组", "zh-cht": "刪除用戶群組", "xloc": [ - "default.handlebars->41->2504" + "default.handlebars->41->2510" ] }, { @@ -18452,7 +18458,7 @@ "zh-chs": "删除用户{0}", "zh-cht": "刪除用戶{0}", "xloc": [ - "default.handlebars->41->2696" + "default.handlebars->41->2702" ] }, { @@ -18478,7 +18484,7 @@ "zh-cht": "刪除帳戶", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountActions->3->9->0", - "default.handlebars->41->2418", + "default.handlebars->41->2424", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7" ] }, @@ -18504,7 +18510,7 @@ "zh-chs": "删除设备", "zh-cht": "刪除裝置", "xloc": [ - "default.handlebars->41->652" + "default.handlebars->41->653" ] }, { @@ -18529,7 +18535,7 @@ "zh-chs": "删除群组", "zh-cht": "刪除群組", "xloc": [ - "default.handlebars->41->2500" + "default.handlebars->41->2506" ] }, { @@ -18554,7 +18560,7 @@ "zh-chs": "删除项目?", "zh-cht": "刪除項目?", "xloc": [ - "default.handlebars->41->749" + "default.handlebars->41->750" ] }, { @@ -18579,7 +18585,7 @@ "zh-chs": "递归删除:“{0}”,{1}个元素已删除", "zh-cht": "遞歸刪除:“{0}”,{1}個元素已刪除", "xloc": [ - "default.handlebars->41->2242" + "default.handlebars->41->2248" ] }, { @@ -18606,8 +18612,8 @@ "xloc": [ "default-mobile.handlebars->11->155", "default-mobile.handlebars->11->484", - "default.handlebars->41->1362", - "default.handlebars->41->2184", + "default.handlebars->41->1367", + "default.handlebars->41->2190", "sharing.handlebars->11->63" ] }, @@ -18633,7 +18639,7 @@ "zh-chs": "删除用户群组{0}?", "zh-cht": "刪除用戶群組{0}?", "xloc": [ - "default.handlebars->41->2568" + "default.handlebars->41->2574" ] }, { @@ -18660,8 +18666,8 @@ "xloc": [ "default-mobile.handlebars->11->154", "default-mobile.handlebars->11->483", - "default.handlebars->41->1361", - "default.handlebars->41->2183", + "default.handlebars->41->1366", + "default.handlebars->41->2189", "sharing.handlebars->11->62" ] }, @@ -18712,7 +18718,7 @@ "zh-chs": "删除:“{0}”", "zh-cht": "刪除:“{0}”", "xloc": [ - "default.handlebars->41->2241" + "default.handlebars->41->2247" ] }, { @@ -18737,7 +18743,7 @@ "zh-chs": "删除:“{0}”,{1}个元素已删除", "zh-cht": "刪除:“{0}”,已刪除{1}個元素", "xloc": [ - "default.handlebars->41->2243" + "default.handlebars->41->2249" ] }, { @@ -18763,7 +18769,7 @@ "zh-cht": "被拒絕", "xloc": [ "default-mobile.handlebars->11->407", - "default.handlebars->41->1198", + "default.handlebars->41->1203", "sharing.handlebars->11->29", "sharing.handlebars->11->7" ] @@ -18906,22 +18912,22 @@ "default-mobile.handlebars->11->279", "default-mobile.handlebars->11->402", "default-mobile.handlebars->11->549", - "default-mobile.handlebars->11->628", - "default-mobile.handlebars->11->651", - "default.handlebars->41->1193", - "default.handlebars->41->1421", - "default.handlebars->41->1431", - "default.handlebars->41->148", - "default.handlebars->41->1801", - "default.handlebars->41->1858", - "default.handlebars->41->1992", - "default.handlebars->41->2351", - "default.handlebars->41->2509", - "default.handlebars->41->2519", - "default.handlebars->41->2520", - "default.handlebars->41->2566", - "default.handlebars->41->789", + "default-mobile.handlebars->11->629", + "default-mobile.handlebars->11->652", + "default.handlebars->41->1198", + "default.handlebars->41->1426", + "default.handlebars->41->1436", + "default.handlebars->41->149", + "default.handlebars->41->1807", + "default.handlebars->41->1864", + "default.handlebars->41->1998", + "default.handlebars->41->2357", + "default.handlebars->41->2515", + "default.handlebars->41->2525", + "default.handlebars->41->2526", + "default.handlebars->41->2572", "default.handlebars->41->790", + "default.handlebars->41->791", "default.handlebars->container->column_l->p42->p42tbl->1->0->3" ] }, @@ -18970,16 +18976,16 @@ "zh-cht": "桌面", "xloc": [ "default-mobile.handlebars->11->352", - "default.handlebars->41->1049", - "default.handlebars->41->1297", - "default.handlebars->41->1925", - "default.handlebars->41->1998", - "default.handlebars->41->2753", - "default.handlebars->41->2812", - "default.handlebars->41->2843", - "default.handlebars->41->2934", - "default.handlebars->41->754", - "default.handlebars->41->965", + "default.handlebars->41->1054", + "default.handlebars->41->1302", + "default.handlebars->41->1931", + "default.handlebars->41->2004", + "default.handlebars->41->2759", + "default.handlebars->41->2818", + "default.handlebars->41->2849", + "default.handlebars->41->2940", + "default.handlebars->41->755", + "default.handlebars->41->970", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop", "default.handlebars->contextMenu->cxdesktop", "sharing.handlebars->11->23", @@ -19007,9 +19013,9 @@ "tr": "Masaüstü + Dosyalar", "zh-chs": "桌面 + 文件", "xloc": [ - "default.handlebars->41->1052", - "default.handlebars->41->1929", - "default.handlebars->41->969" + "default.handlebars->41->1057", + "default.handlebars->41->1935", + "default.handlebars->41->974" ] }, { @@ -19033,8 +19039,8 @@ "tr": "Masaüstü + Terminal", "zh-chs": "桌面 + 终端", "xloc": [ - "default.handlebars->41->1926", - "default.handlebars->41->966" + "default.handlebars->41->1932", + "default.handlebars->41->971" ] }, { @@ -19058,9 +19064,9 @@ "tr": "Masaüstü + Terminal + Dosyalar", "zh-chs": "桌面 + 终端 + 文件", "xloc": [ - "default.handlebars->41->1054", - "default.handlebars->41->1930", - "default.handlebars->41->970" + "default.handlebars->41->1059", + "default.handlebars->41->1936", + "default.handlebars->41->975" ] }, { @@ -19109,7 +19115,7 @@ "tr": "Masaüstü Multiplex", "zh-chs": "桌面复用", "xloc": [ - "default.handlebars->41->2939" + "default.handlebars->41->2945" ] }, { @@ -19134,10 +19140,10 @@ "zh-chs": "桌面通知", "zh-cht": "桌面通知", "xloc": [ - "default.handlebars->41->1878", - "default.handlebars->41->2527", - "default.handlebars->41->2629", - "default.handlebars->41->851" + "default.handlebars->41->1884", + "default.handlebars->41->2533", + "default.handlebars->41->2635", + "default.handlebars->41->852" ] }, { @@ -19162,10 +19168,10 @@ "zh-chs": "桌面提示", "zh-cht": "桌面提示", "xloc": [ - "default.handlebars->41->1877", - "default.handlebars->41->2526", - "default.handlebars->41->2628", - "default.handlebars->41->850" + "default.handlebars->41->1883", + "default.handlebars->41->2532", + "default.handlebars->41->2634", + "default.handlebars->41->851" ] }, { @@ -19190,10 +19196,10 @@ "zh-chs": "桌面提示+工具栏", "zh-cht": "桌面提示+工具欄", "xloc": [ - "default.handlebars->41->1875", - "default.handlebars->41->2524", - "default.handlebars->41->2626", - "default.handlebars->41->848" + "default.handlebars->41->1881", + "default.handlebars->41->2530", + "default.handlebars->41->2632", + "default.handlebars->41->849" ] }, { @@ -19217,7 +19223,7 @@ "tr": "Masaüstü Oturumu", "zh-chs": "桌面会话", "xloc": [ - "default.handlebars->41->2746" + "default.handlebars->41->2752" ] }, { @@ -19315,10 +19321,10 @@ "zh-chs": "桌面工具栏", "zh-cht": "桌面工具欄", "xloc": [ - "default.handlebars->41->1876", - "default.handlebars->41->2525", - "default.handlebars->41->2627", - "default.handlebars->41->849" + "default.handlebars->41->1882", + "default.handlebars->41->2531", + "default.handlebars->41->2633", + "default.handlebars->41->850" ] }, { @@ -19342,7 +19348,7 @@ "tr": "Yalnızca Masaüstü Görünümü", "zh-chs": "仅桌面视图", "xloc": [ - "default.handlebars->41->2602" + "default.handlebars->41->2608" ] }, { @@ -19366,7 +19372,7 @@ "tr": "Masaüstü, Yalnızca görüntüleme", "zh-chs": "桌面,仅查看", "xloc": [ - "default.handlebars->41->1055" + "default.handlebars->41->1060" ] }, { @@ -19391,7 +19397,7 @@ "zh-chs": "桌面时段", "zh-cht": "桌面時段", "xloc": [ - "default.handlebars->41->1296" + "default.handlebars->41->1301" ] }, { @@ -19468,7 +19474,7 @@ "zh-cht": "細節", "xloc": [ "default-mobile.handlebars->11->355", - "default.handlebars->41->2088", + "default.handlebars->41->2094", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevInfo", "default.handlebars->contextMenu->cxdetails" ] @@ -19521,13 +19527,13 @@ "zh-cht": "裝置", "xloc": [ "default-mobile.handlebars->11->544", - "default.handlebars->41->1416", - "default.handlebars->41->1524", - "default.handlebars->41->2026", - "default.handlebars->41->266", - "default.handlebars->41->2715", - "default.handlebars->41->2778", - "default.handlebars->41->2796", + "default.handlebars->41->1421", + "default.handlebars->41->1530", + "default.handlebars->41->2032", + "default.handlebars->41->267", + "default.handlebars->41->2721", + "default.handlebars->41->2784", + "default.handlebars->41->2802", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5" ] }, @@ -19555,7 +19561,7 @@ "xloc": [ "default-mobile.handlebars->11->373", "default-mobile.handlebars->11->382", - "default.handlebars->41->1108" + "default.handlebars->41->1113" ] }, { @@ -19604,7 +19610,7 @@ "tr": "Cihaz Açıklaması", "zh-chs": "设备描述", "xloc": [ - "default.handlebars->41->322" + "default.handlebars->41->323" ] }, { @@ -19628,7 +19634,7 @@ "tr": "Cihaz Ayrıntıları", "zh-chs": "设备详情", "xloc": [ - "default.handlebars->41->2050" + "default.handlebars->41->2056" ] }, { @@ -19679,18 +19685,18 @@ "zh-cht": "裝置群", "xloc": [ "agent-translations.json", - "default-mobile.handlebars->11->712", - "default.handlebars->41->2021", - "default.handlebars->41->2024", - "default.handlebars->41->2025", - "default.handlebars->41->2368", - "default.handlebars->41->2550", + "default-mobile.handlebars->11->713", + "default.handlebars->41->2027", + "default.handlebars->41->2030", + "default.handlebars->41->2031", + "default.handlebars->41->2374", "default.handlebars->41->2556", - "default.handlebars->41->2703", - "default.handlebars->41->2762", - "default.handlebars->41->2785", - "default.handlebars->41->2799", - "default.handlebars->41->2860" + "default.handlebars->41->2562", + "default.handlebars->41->2709", + "default.handlebars->41->2768", + "default.handlebars->41->2791", + "default.handlebars->41->2805", + "default.handlebars->41->2866" ] }, { @@ -19715,8 +19721,8 @@ "zh-chs": "设备组用户", "zh-cht": "裝置群用戶", "xloc": [ - "default-mobile.handlebars->11->701", - "default.handlebars->41->2094" + "default-mobile.handlebars->11->702", + "default.handlebars->41->2100" ] }, { @@ -19742,11 +19748,11 @@ "zh-cht": "裝置群", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->3", - "default.handlebars->41->2384", - "default.handlebars->41->2494", - "default.handlebars->41->2537", - "default.handlebars->41->2623", - "default.handlebars->41->2912", + "default.handlebars->41->2390", + "default.handlebars->41->2500", + "default.handlebars->41->2543", + "default.handlebars->41->2629", + "default.handlebars->41->2918", "default.handlebars->container->column_l->p2->p2info->9" ] }, @@ -19772,7 +19778,7 @@ "zh-chs": "设备信息导出", "zh-cht": "裝置訊息輸出", "xloc": [ - "default.handlebars->41->708" + "default.handlebars->41->709" ] }, { @@ -19797,7 +19803,7 @@ "zh-chs": "设备位置", "zh-cht": "裝置位置", "xloc": [ - "default.handlebars->41->1152" + "default.handlebars->41->1157" ] }, { @@ -19822,7 +19828,7 @@ "zh-chs": "设备消息", "zh-cht": "裝置訊息", "xloc": [ - "default.handlebars->41->1039" + "default.handlebars->41->1044" ] }, { @@ -19848,10 +19854,10 @@ "zh-cht": "裝置名稱", "xloc": [ "default-mobile.handlebars->11->400", - "default.handlebars->41->1191", - "default.handlebars->41->2761", - "default.handlebars->41->446", - "default.handlebars->41->455", + "default.handlebars->41->1196", + "default.handlebars->41->2767", + "default.handlebars->41->447", + "default.handlebars->41->456", "player.handlebars->3->25" ] }, @@ -19877,8 +19883,8 @@ "zh-chs": "设备通知", "zh-cht": "裝置通知", "xloc": [ - "default.handlebars->41->1044", - "default.handlebars->41->687" + "default.handlebars->41->1049", + "default.handlebars->41->688" ] }, { @@ -19902,7 +19908,7 @@ "tr": "Cihaz Eşleştirme Bağlantısı", "zh-chs": "设备配对链接", "xloc": [ - "default-mobile.handlebars->11->655" + "default-mobile.handlebars->11->656" ] }, { @@ -19926,7 +19932,7 @@ "tr": "Cihaz İtme", "zh-chs": "设备推送", "xloc": [ - "default.handlebars->41->2642" + "default.handlebars->41->2648" ] }, { @@ -19994,8 +20000,8 @@ "zh-chs": "设备共享链接", "zh-cht": "設備共享鏈接", "xloc": [ - "default.handlebars->41->1922", - "default.handlebars->41->962" + "default.handlebars->41->1928", + "default.handlebars->41->967" ] }, { @@ -20068,9 +20074,9 @@ "default-mobile.handlebars->11->282", "default-mobile.handlebars->11->284", "default-mobile.handlebars->11->286", - "default.handlebars->41->793", - "default.handlebars->41->795", - "default.handlebars->41->797" + "default.handlebars->41->794", + "default.handlebars->41->796", + "default.handlebars->41->798" ] }, { @@ -20094,7 +20100,7 @@ "tr": "Cihaz Görünümü Sütunları", "zh-chs": "设备视图列", "xloc": [ - "default.handlebars->41->329" + "default.handlebars->41->330" ] }, { @@ -20119,11 +20125,11 @@ "zh-chs": "设备连接。", "zh-cht": "裝置連接。", "xloc": [ - "default.handlebars->41->1764", - "default.handlebars->41->2121", - "default.handlebars->41->2125", - "default.handlebars->41->986", - "default.handlebars->41->990" + "default.handlebars->41->1770", + "default.handlebars->41->2127", + "default.handlebars->41->2131", + "default.handlebars->41->991", + "default.handlebars->41->995" ] }, { @@ -20148,11 +20154,11 @@ "zh-chs": "设备断开连接。", "zh-cht": "裝置斷開連接。", "xloc": [ - "default.handlebars->41->1765", - "default.handlebars->41->2122", - "default.handlebars->41->2126", - "default.handlebars->41->987", - "default.handlebars->41->991" + "default.handlebars->41->1771", + "default.handlebars->41->2128", + "default.handlebars->41->2132", + "default.handlebars->41->992", + "default.handlebars->41->996" ] }, { @@ -20177,7 +20183,7 @@ "zh-chs": "创建的设备组:{0}", "zh-cht": "設備組已創建:{0}", "xloc": [ - "default.handlebars->41->2272" + "default.handlebars->41->2278" ] }, { @@ -20202,7 +20208,7 @@ "zh-chs": "设备组已删除:{0}", "zh-cht": "設備組已刪除:{0}", "xloc": [ - "default.handlebars->41->2273" + "default.handlebars->41->2279" ] }, { @@ -20227,7 +20233,7 @@ "zh-chs": "设备组成员身份已更改:{0}", "zh-cht": "設備組成員身份已更改:{0}", "xloc": [ - "default.handlebars->41->2274" + "default.handlebars->41->2280" ] }, { @@ -20253,7 +20259,7 @@ "zh-cht": "其他裝置群管理員可以查看和更改裝置群註釋。", "xloc": [ "default-mobile.handlebars->11->380", - "default.handlebars->41->1036" + "default.handlebars->41->1041" ] }, { @@ -20278,7 +20284,7 @@ "zh-chs": "设备组通知已更改", "zh-cht": "設備組通知已更改", "xloc": [ - "default.handlebars->41->2269" + "default.handlebars->41->2275" ] }, { @@ -20303,7 +20309,7 @@ "zh-chs": "未删除的设备组:{0}", "zh-cht": "未刪除的設備組:{0}", "xloc": [ - "default.handlebars->41->2252" + "default.handlebars->41->2258" ] }, { @@ -20323,7 +20329,7 @@ "ru": "Группа устройств {0} изменена: {1}", "tr": "{0} cihaz grubu değiştirildi: {1}", "xloc": [ - "default.handlebars->41->2338" + "default.handlebars->41->2344" ] }, { @@ -20332,7 +20338,7 @@ "pl": "Grupy urządzeń to urządzenie jest bramką dla", "ru": "Группы устройств, для которых это устройство является релеем", "xloc": [ - "default.handlebars->41->890" + "default.handlebars->41->891" ] }, { @@ -20359,8 +20365,8 @@ "xloc": [ "default-mobile.handlebars->11->199", "default-mobile.handlebars->11->269", - "default.handlebars->41->370", - "default.handlebars->41->775" + "default.handlebars->41->371", + "default.handlebars->41->776" ] }, { @@ -20381,7 +20387,7 @@ "tr": "Aygıt meşgul", "xloc": [ "default-mobile.handlebars->11->205", - "default.handlebars->41->401" + "default.handlebars->41->402" ] }, { @@ -20406,7 +20412,7 @@ "zh-chs": "检测到设备,但无法获得电源状态。", "zh-cht": "檢測到裝置,但無法獲得電源狀態。", "xloc": [ - "default.handlebars->41->611" + "default.handlebars->41->612" ] }, { @@ -20432,7 +20438,7 @@ "zh-cht": "裝置正在休眠(S4)", "xloc": [ "default-mobile.handlebars->11->250", - "default.handlebars->41->619" + "default.handlebars->41->620" ] }, { @@ -20458,7 +20464,7 @@ "zh-cht": "裝置處於深度睡眠狀態(S3)", "xloc": [ "default-mobile.handlebars->11->249", - "default.handlebars->41->618" + "default.handlebars->41->619" ] }, { @@ -20483,7 +20489,7 @@ "zh-chs": "设备处于深度睡眠状态(S3)。", "zh-cht": "裝置處於深度睡眠狀態(S3)。", "xloc": [ - "default.handlebars->41->605" + "default.handlebars->41->606" ] }, { @@ -20508,7 +20514,7 @@ "zh-chs": "设备处于休眠状态(S4)。", "zh-cht": "裝置處於休眠狀態(S4)。", "xloc": [ - "default.handlebars->41->607" + "default.handlebars->41->608" ] }, { @@ -20533,7 +20539,7 @@ "zh-chs": "设备处于关机状态(S5)。", "zh-cht": "裝置處於關機狀態(S5)。", "xloc": [ - "default.handlebars->41->609" + "default.handlebars->41->610" ] }, { @@ -20559,7 +20565,7 @@ "zh-cht": "裝置處於睡眠狀態(S1)", "xloc": [ "default-mobile.handlebars->11->247", - "default.handlebars->41->616" + "default.handlebars->41->617" ] }, { @@ -20584,7 +20590,7 @@ "zh-chs": "设备处于睡眠状态(S1)。", "zh-cht": "裝置處於睡眠狀態(S1)。", "xloc": [ - "default.handlebars->41->601" + "default.handlebars->41->602" ] }, { @@ -20610,7 +20616,7 @@ "zh-cht": "裝置處於睡眠狀態(S2)", "xloc": [ "default-mobile.handlebars->11->248", - "default.handlebars->41->617" + "default.handlebars->41->618" ] }, { @@ -20635,7 +20641,7 @@ "zh-chs": "设备处于睡眠状态(S2)。", "zh-cht": "裝置處於睡眠狀態(S2)。", "xloc": [ - "default.handlebars->41->603" + "default.handlebars->41->604" ] }, { @@ -20661,7 +20667,7 @@ "zh-cht": "裝置處於軟關機狀態(S5)", "xloc": [ "default-mobile.handlebars->11->251", - "default.handlebars->41->620" + "default.handlebars->41->621" ] }, { @@ -20688,8 +20694,8 @@ "xloc": [ "default-mobile.handlebars->11->198", "default-mobile.handlebars->11->268", - "default.handlebars->41->369", - "default.handlebars->41->774" + "default.handlebars->41->370", + "default.handlebars->41->775" ] }, { @@ -20715,7 +20721,7 @@ "zh-cht": "裝置已連接電源", "xloc": [ "default-mobile.handlebars->11->246", - "default.handlebars->41->615" + "default.handlebars->41->616" ] }, { @@ -20735,7 +20741,7 @@ "ru": "Устройство выключено.", "tr": "Cihaz kapalı.", "xloc": [ - "default.handlebars->41->613" + "default.handlebars->41->614" ] }, { @@ -20760,7 +20766,7 @@ "zh-chs": "设备已连接电源。", "zh-cht": "裝置已連接電源。", "xloc": [ - "default.handlebars->41->599" + "default.handlebars->41->600" ] }, { @@ -20786,7 +20792,7 @@ "zh-cht": "裝置存在,但無法確定電源狀態", "xloc": [ "default-mobile.handlebars->11->252", - "default.handlebars->41->621" + "default.handlebars->41->622" ] }, { @@ -20811,7 +20817,7 @@ "zh-chs": "设备名称", "zh-cht": "裝置名稱", "xloc": [ - "default.handlebars->41->766" + "default.handlebars->41->767" ] }, { @@ -20836,7 +20842,7 @@ "zh-chs": "设备通知", "zh-cht": "設備通知", "xloc": [ - "default.handlebars->41->649" + "default.handlebars->41->650" ] }, { @@ -20860,7 +20866,7 @@ "tr": "Cihaz, Intel(R) AMT ACM TLS etkinleştirmesini istedi, FQDN: {0}", "zh-chs": "设备请求 Intel(R) AMT ACM TLS 激活,FQDN:{0}", "xloc": [ - "default.handlebars->41->2307" + "default.handlebars->41->2313" ] }, { @@ -20885,7 +20891,7 @@ "zh-chs": "设备请求激活Intel(R)AMT ACM,FQDN:{0}", "zh-cht": "設備請求激活Intel(R)AMT ACM,FQDN:{0}", "xloc": [ - "default.handlebars->41->2254" + "default.handlebars->41->2260" ] }, { @@ -20932,9 +20938,9 @@ "zh-chs": "设备", "zh-cht": "裝置", "xloc": [ - "default.handlebars->41->1943", - "default.handlebars->41->2495", - "default.handlebars->41->2538" + "default.handlebars->41->1949", + "default.handlebars->41->2501", + "default.handlebars->41->2544" ] }, { @@ -21041,8 +21047,8 @@ "zh-cht": "已禁用", "xloc": [ "default-mobile.handlebars->11->529", - "default.handlebars->41->121", - "default.handlebars->41->842" + "default.handlebars->41->122", + "default.handlebars->41->843" ] }, { @@ -21067,7 +21073,7 @@ "zh-chs": "禁用的电子邮件两因素身份验证", "zh-cht": "禁用的電子郵件兩因素身份驗證", "xloc": [ - "default.handlebars->41->2285" + "default.handlebars->41->2291" ] }, { @@ -21096,8 +21102,8 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->disconnectbutton2span", - "default.handlebars->41->1888", - "default.handlebars->41->861", + "default.handlebars->41->1894", + "default.handlebars->41->862", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3", @@ -21198,12 +21204,12 @@ "default-mobile.handlebars->11->217", "default-mobile.handlebars->11->221", "default-mobile.handlebars->11->225", - "default.handlebars->41->398", - "default.handlebars->41->405", - "default.handlebars->41->409", - "default.handlebars->41->413", - "default.handlebars->41->417", - "default.handlebars->41->421" + "default.handlebars->41->399", + "default.handlebars->41->406", + "default.handlebars->41->410", + "default.handlebars->41->414", + "default.handlebars->41->418", + "default.handlebars->41->422" ] }, { @@ -21232,10 +21238,10 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3->deskstatus", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3->p13Status", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->termstatus", - "default.handlebars->41->361", - "default.handlebars->41->364", - "default.handlebars->41->390", - "default.handlebars->41->429", + "default.handlebars->41->362", + "default.handlebars->41->365", + "default.handlebars->41->391", + "default.handlebars->41->430", "default.handlebars->41->8", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->deskstatus", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->termstatus", @@ -21291,7 +21297,7 @@ "zh-chs": "解雇", "zh-cht": "解僱", "xloc": [ - "default.handlebars->41->394" + "default.handlebars->41->395" ] }, { @@ -21326,7 +21332,7 @@ "zh-chs": "在远程设备上显示一个消息框。", "zh-cht": "在遠程裝置上顯示一個訊息框。", "xloc": [ - "default.handlebars->41->1040" + "default.handlebars->41->1045" ] }, { @@ -21376,7 +21382,7 @@ "zh-chs": "在远程设备上显示短信", "zh-cht": "在遠程裝置上顯示短信", "xloc": [ - "default.handlebars->41->900" + "default.handlebars->41->901" ] }, { @@ -21422,7 +21428,7 @@ "zh-chs": "显示设备组名称", "zh-cht": "顯示裝置群名稱", "xloc": [ - "default.handlebars->41->1763" + "default.handlebars->41->1769" ] }, { @@ -21447,7 +21453,7 @@ "zh-chs": "显示名称", "zh-cht": "顯示名稱", "xloc": [ - "default.handlebars->41->1280" + "default.handlebars->41->1285" ] }, { @@ -21472,7 +21478,7 @@ "zh-chs": "显示公共连结", "zh-cht": "顯示公共鏈結", "xloc": [ - "default.handlebars->41->2155" + "default.handlebars->41->2161" ] }, { @@ -21496,7 +21502,7 @@ "tr": "{0} göster", "zh-chs": "显示{0}", "xloc": [ - "default.handlebars->41->1299" + "default.handlebars->41->1304" ] }, { @@ -21521,7 +21527,7 @@ "zh-chs": "显示消息框,标题= “{0}”,消息= “{1}”", "zh-cht": "顯示消息框,標題= “{0}”,消息= “{1}”", "xloc": [ - "default.handlebars->41->2214" + "default.handlebars->41->2220" ] }, { @@ -21546,7 +21552,7 @@ "zh-chs": "显示吐司消息,标题= “{0}”,消息= “{1}”", "zh-cht": "顯示吐司消息,標題= “{0}”,消息= “{1}”", "xloc": [ - "default.handlebars->41->2222" + "default.handlebars->41->2228" ] }, { @@ -21571,8 +21577,8 @@ "zh-chs": "什么都不做", "zh-cht": "什麼都不做", "xloc": [ - "default.handlebars->41->1972", - "default.handlebars->41->1976" + "default.handlebars->41->1978", + "default.handlebars->41->1982" ] }, { @@ -21597,12 +21603,12 @@ "zh-chs": "域", "zh-cht": "域", "xloc": [ - "default.handlebars->41->117", - "default.handlebars->41->1216", - "default.handlebars->41->2458", - "default.handlebars->41->2507", - "default.handlebars->41->2516", - "default.handlebars->41->2589", + "default.handlebars->41->118", + "default.handlebars->41->1221", + "default.handlebars->41->2464", + "default.handlebars->41->2513", + "default.handlebars->41->2522", + "default.handlebars->41->2595", "mstsc.handlebars->main->1->3->1->rowdomain->1->0", "mstsc.handlebars->main->1->3->1->rowdomain->3" ] @@ -21650,7 +21656,7 @@ "zh-chs": "请勿更改,如果设置请保留CCM", "zh-cht": "請勿更改,如果設置請保留CCM", "xloc": [ - "default.handlebars->41->1968" + "default.handlebars->41->1974" ] }, { @@ -21697,7 +21703,7 @@ "zh-chs": "不要连接到服务器", "zh-cht": "不要連接到伺服器", "xloc": [ - "default.handlebars->41->1977" + "default.handlebars->41->1983" ] }, { @@ -21814,7 +21820,7 @@ "zh-chs": "下", "xloc": [ "default-mobile.handlebars->11->428", - "default.handlebars->41->1250" + "default.handlebars->41->1255" ] }, { @@ -21917,7 +21923,7 @@ "zh-cht": "下載檔案", "xloc": [ "default-mobile.handlebars->11->503", - "default.handlebars->41->1381", + "default.handlebars->41->1386", "sharing.handlebars->11->82" ] }, @@ -21943,7 +21949,7 @@ "zh-chs": "下载MeshCentral Router,一个TCP端口映射工具。", "zh-cht": "下載MeshCentral Router,一個TCP端口映射工具。", "xloc": [ - "default.handlebars->41->359" + "default.handlebars->41->360" ] }, { @@ -21968,7 +21974,7 @@ "zh-chs": "下载MeshCmd", "zh-cht": "下載MeshCmd", "xloc": [ - "default.handlebars->41->1177" + "default.handlebars->41->1182" ] }, { @@ -21993,7 +21999,7 @@ "zh-chs": "下载MeshCmd,这是一个多功能的指令执行工具。", "zh-cht": "下載MeshCmd,這是一個多功能的指令執行工具。", "xloc": [ - "default.handlebars->41->357" + "default.handlebars->41->358" ] }, { @@ -22043,7 +22049,7 @@ "zh-chs": "下载报告", "zh-cht": "下載報告", "xloc": [ - "default.handlebars->41->2373", + "default.handlebars->41->2379", "default.handlebars->container->column_l->p3->3->1->0->3", "default.handlebars->container->column_l->p60->3->1->0->3->1->p60downloadReportDiv" ] @@ -22070,7 +22076,7 @@ "zh-chs": "下载带有指令档案的“ meshcmd”,以通过此服务器将网络讯息发送到该设备。紧记编辑meshaction.txt并添加您的帐户密码或进行任何必要的更改。", "zh-cht": "下載帶有指令檔案的“ meshcmd”,以通過此服務器將網絡讯息發送到該裝置。緊記編輯meshaction.txt並新增你的帳戶密碼或進行任何必要的更改。", "xloc": [ - "default.handlebars->41->1170" + "default.handlebars->41->1175" ] }, { @@ -22144,7 +22150,7 @@ "tr": "Cihaz listesini indir", "zh-chs": "下载设备列表", "xloc": [ - "default.handlebars->41->1941" + "default.handlebars->41->1947" ] }, { @@ -22169,7 +22175,7 @@ "zh-chs": "下载错误日志", "zh-cht": "下載錯誤日誌", "xloc": [ - "default.handlebars->41->191" + "default.handlebars->41->192" ] }, { @@ -22194,7 +22200,7 @@ "zh-chs": "下载电源事件", "zh-cht": "下載電源事件", "xloc": [ - "default.handlebars->41->1126" + "default.handlebars->41->1131" ] }, { @@ -22318,7 +22324,7 @@ "zh-chs": "使用以下一种档案格式下载设备列表。", "zh-cht": "使用以下一種檔案格式下載裝置列表。", "xloc": [ - "default.handlebars->41->700" + "default.handlebars->41->701" ] }, { @@ -22343,7 +22349,7 @@ "zh-chs": "使用以下一种档案格式下载事件列表。", "zh-cht": "使用以下一種檔案格式下載事件列表。", "xloc": [ - "default.handlebars->41->2374" + "default.handlebars->41->2380" ] }, { @@ -22368,7 +22374,7 @@ "zh-chs": "使用以下一种档案格式下载用户列表。", "zh-cht": "使用以下一種檔案格式下載用戶列表。", "xloc": [ - "default.handlebars->41->2442" + "default.handlebars->41->2448" ] }, { @@ -22469,7 +22475,7 @@ "zh-chs": "下载:“{0}”", "zh-cht": "下載:“{0}”", "xloc": [ - "default.handlebars->41->2245" + "default.handlebars->41->2251" ] }, { @@ -22493,7 +22499,7 @@ "tr": "İndirme: \\\"{0}\\\", Boyut: {1}", "zh-chs": "下载:\\\"{0}\\\",大小:{1}", "xloc": [ - "default.handlebars->41->2302" + "default.handlebars->41->2308" ] }, { @@ -22543,7 +22549,7 @@ "zh-chs": "代理重复", "zh-cht": "代理重複", "xloc": [ - "default.handlebars->41->2908" + "default.handlebars->41->2914" ] }, { @@ -22593,7 +22599,7 @@ "zh-chs": "复制用户组", "zh-cht": "複製用戶群", "xloc": [ - "default.handlebars->41->2511" + "default.handlebars->41->2517" ] }, { @@ -22640,11 +22646,11 @@ "zh-chs": "持续时间", "zh-cht": "持續時間", "xloc": [ - "default.handlebars->41->1083", - "default.handlebars->41->272", - "default.handlebars->41->274", - "default.handlebars->41->2741", - "default.handlebars->41->2767", + "default.handlebars->41->1088", + "default.handlebars->41->273", + "default.handlebars->41->2747", + "default.handlebars->41->275", + "default.handlebars->41->2773", "player.handlebars->3->18" ] }, @@ -22692,7 +22698,7 @@ "zh-chs": "荷兰文(比利时)", "zh-cht": "荷蘭文(比利時)", "xloc": [ - "default.handlebars->41->1582" + "default.handlebars->41->1588" ] }, { @@ -22717,7 +22723,7 @@ "zh-chs": "荷兰文(标准)", "zh-cht": "荷蘭文(標準)", "xloc": [ - "default.handlebars->41->1581" + "default.handlebars->41->1587" ] }, { @@ -22863,8 +22869,8 @@ "zh-chs": "错误:", "zh-cht": "錯誤:", "xloc": [ - "default.handlebars->41->235", - "default.handlebars->41->237" + "default.handlebars->41->236", + "default.handlebars->41->238" ] }, { @@ -23019,7 +23025,7 @@ "zh-chs": "错误:无法添加密钥。", "zh-cht": "錯誤:無法新增密鑰。", "xloc": [ - "default.handlebars->41->232" + "default.handlebars->41->233" ] }, { @@ -23101,9 +23107,9 @@ "default-mobile.handlebars->11->396", "default-mobile.handlebars->11->398", "default-mobile.handlebars->11->405", - "default.handlebars->41->1187", - "default.handlebars->41->1189", - "default.handlebars->41->1196" + "default.handlebars->41->1192", + "default.handlebars->41->1194", + "default.handlebars->41->1201" ] }, { @@ -23128,17 +23134,17 @@ "zh-chs": "编辑设备组", "zh-cht": "編輯裝置群", "xloc": [ - "default-mobile.handlebars->11->646", - "default-mobile.handlebars->11->649", - "default-mobile.handlebars->11->652", - "default-mobile.handlebars->11->658", - "default-mobile.handlebars->11->678", - "default.handlebars->41->1987", - "default.handlebars->41->1990", + "default-mobile.handlebars->11->647", + "default-mobile.handlebars->11->650", + "default-mobile.handlebars->11->653", + "default-mobile.handlebars->11->659", + "default-mobile.handlebars->11->679", "default.handlebars->41->1993", - "default.handlebars->41->2030", - "default.handlebars->41->2056", - "default.handlebars->41->2068" + "default.handlebars->41->1996", + "default.handlebars->41->1999", + "default.handlebars->41->2036", + "default.handlebars->41->2062", + "default.handlebars->41->2074" ] }, { @@ -23163,7 +23169,7 @@ "zh-chs": "编辑设备组功能", "zh-cht": "編輯裝置群功能", "xloc": [ - "default.handlebars->41->2016" + "default.handlebars->41->2022" ] }, { @@ -23188,8 +23194,8 @@ "zh-chs": "编辑设备组权限", "zh-cht": "編輯裝置群權限", "xloc": [ - "default.handlebars->41->2053", - "default.handlebars->41->2065" + "default.handlebars->41->2059", + "default.handlebars->41->2071" ] }, { @@ -23214,7 +23220,7 @@ "zh-chs": "编辑设备组用户同意", "zh-cht": "編輯裝置群用戶同意", "xloc": [ - "default.handlebars->41->1994" + "default.handlebars->41->2000" ] }, { @@ -23239,8 +23245,8 @@ "zh-chs": "编辑设备笔记", "zh-cht": "編輯裝置筆記", "xloc": [ - "default-mobile.handlebars->11->670", - "default.handlebars->41->2044" + "default-mobile.handlebars->11->671", + "default.handlebars->41->2050" ] }, { @@ -23265,8 +23271,8 @@ "zh-chs": "编辑设备权限", "zh-cht": "編輯裝置權限", "xloc": [ - "default.handlebars->41->2058", - "default.handlebars->41->2060" + "default.handlebars->41->2064", + "default.handlebars->41->2066" ] }, { @@ -23291,7 +23297,7 @@ "zh-chs": "编辑设备标签", "zh-cht": "編輯裝置標籤", "xloc": [ - "default.handlebars->41->682" + "default.handlebars->41->683" ] }, { @@ -23316,7 +23322,7 @@ "zh-chs": "编辑设备用户同意", "zh-cht": "編輯裝置用戶同意", "xloc": [ - "default.handlebars->41->1996" + "default.handlebars->41->2002" ] }, { @@ -23341,7 +23347,7 @@ "zh-chs": "编辑群组", "zh-cht": "編輯群組", "xloc": [ - "default.handlebars->41->1013" + "default.handlebars->41->1018" ] }, { @@ -23370,10 +23376,10 @@ "default-mobile.handlebars->11->305", "default-mobile.handlebars->11->306", "default-mobile.handlebars->11->391", - "default.handlebars->41->1133", - "default.handlebars->41->813", - "default.handlebars->41->818", - "default.handlebars->41->819" + "default.handlebars->41->1138", + "default.handlebars->41->814", + "default.handlebars->41->819", + "default.handlebars->41->820" ] }, { @@ -23398,8 +23404,8 @@ "zh-chs": "编辑笔记", "zh-cht": "編輯筆記", "xloc": [ - "default-mobile.handlebars->11->685", - "default.handlebars->41->2075" + "default-mobile.handlebars->11->686", + "default.handlebars->41->2081" ] }, { @@ -23424,7 +23430,7 @@ "zh-chs": "编辑用户同意", "zh-cht": "編輯用戶同意", "xloc": [ - "default.handlebars->41->1995" + "default.handlebars->41->2001" ] }, { @@ -23449,7 +23455,7 @@ "zh-chs": "编辑用户设备组权限", "zh-cht": "編輯用戶裝置群權限", "xloc": [ - "default.handlebars->41->2066" + "default.handlebars->41->2072" ] }, { @@ -23474,7 +23480,7 @@ "zh-chs": "编辑用户设备权限", "zh-cht": "編輯用戶裝置權限", "xloc": [ - "default.handlebars->41->2061" + "default.handlebars->41->2067" ] }, { @@ -23498,7 +23504,7 @@ "tr": "Kullanıcı Özelliklerini Düzenle", "zh-chs": "编辑用户特征", "xloc": [ - "default.handlebars->41->2679" + "default.handlebars->41->2685" ] }, { @@ -23523,7 +23529,7 @@ "zh-chs": "编辑用户组", "zh-cht": "編輯用戶群", "xloc": [ - "default.handlebars->41->2567" + "default.handlebars->41->2573" ] }, { @@ -23548,7 +23554,7 @@ "zh-chs": "编辑用户组设备权限", "zh-cht": "編輯用戶群裝置權限", "xloc": [ - "default.handlebars->41->2063" + "default.handlebars->41->2069" ] }, { @@ -23568,7 +23574,7 @@ "ru": "Редактировать функции групп пользователей", "tr": "Kullanıcı Grubu Özelliklerini Düzenle", "xloc": [ - "default.handlebars->41->2560" + "default.handlebars->41->2566" ] }, { @@ -23593,7 +23599,7 @@ "zh-chs": "编辑用户组用户同意", "zh-cht": "編輯用戶組用戶同意", "xloc": [ - "default.handlebars->41->1997" + "default.handlebars->41->2003" ] }, { @@ -23644,7 +23650,7 @@ "zh-chs": "编辑标签", "zh-cht": "編輯標籤", "xloc": [ - "default.handlebars->41->650" + "default.handlebars->41->651" ] }, { @@ -23712,13 +23718,13 @@ "zh-cht": "電郵", "xloc": [ "default-mobile.handlebars->11->109", - "default.handlebars->41->2460", - "default.handlebars->41->2593", - "default.handlebars->41->2595", - "default.handlebars->41->2640", - "default.handlebars->41->2650", - "default.handlebars->41->2682", - "default.handlebars->41->491", + "default.handlebars->41->2466", + "default.handlebars->41->2599", + "default.handlebars->41->2601", + "default.handlebars->41->2646", + "default.handlebars->41->2656", + "default.handlebars->41->2688", + "default.handlebars->41->492", "login-mobile.handlebars->5->42", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3", "login.handlebars->5->44", @@ -23755,7 +23761,7 @@ "zh-cht": "電郵地址變更", "xloc": [ "default-mobile.handlebars->11->110", - "default.handlebars->41->1772" + "default.handlebars->41->1778" ] }, { @@ -23781,7 +23787,7 @@ "zh-cht": "電郵認證", "xloc": [ "default-mobile.handlebars->11->99", - "default.handlebars->41->1512" + "default.handlebars->41->1518" ] }, { @@ -23828,8 +23834,8 @@ "ru": "Подлючение электронной почты", "tr": "E-posta Bağlantısı", "xloc": [ - "default.handlebars->41->1890", - "default.handlebars->41->863" + "default.handlebars->41->1896", + "default.handlebars->41->864" ] }, { @@ -23849,8 +23855,8 @@ "ru": "Отключение электронной почты", "tr": "E-posta Bağlantısını Kes", "xloc": [ - "default.handlebars->41->1891", - "default.handlebars->41->864" + "default.handlebars->41->1897", + "default.handlebars->41->865" ] }, { @@ -23870,8 +23876,8 @@ "ru": "Уведомления по электронной почте", "tr": "E-posta Bildirimleri", "xloc": [ - "default.handlebars->41->2124", - "default.handlebars->41->989" + "default.handlebars->41->2130", + "default.handlebars->41->994" ] }, { @@ -23919,7 +23925,7 @@ "zh-cht": "電郵驗證", "xloc": [ "default-mobile.handlebars->11->108", - "default.handlebars->41->1770" + "default.handlebars->41->1776" ] }, { @@ -23930,8 +23936,8 @@ "ru": "Домен почты \\\"{0}\\\" не разрешен. Разрешены только ({1})", "fr": "Les courriels de \\\"{0}\\\" ne sont pas autorisés. Seulement ceux de ({1}) sont permis", "xloc": [ - "default-mobile.handlebars->11->743", - "default.handlebars->41->2891" + "default-mobile.handlebars->11->744", + "default.handlebars->41->2897" ] }, { @@ -23956,7 +23962,7 @@ "zh-chs": "电邮邀请", "zh-cht": "電郵邀請", "xloc": [ - "default.handlebars->41->488" + "default.handlebars->41->489" ] }, { @@ -23981,7 +23987,7 @@ "zh-chs": "电邮未验证", "zh-cht": "電郵未驗證", "xloc": [ - "default.handlebars->41->2404" + "default.handlebars->41->2410" ] }, { @@ -24006,8 +24012,8 @@ "zh-chs": "电子邮件已验证", "zh-cht": "電子郵件已驗證", "xloc": [ - "default.handlebars->41->2405", - "default.handlebars->41->2587" + "default.handlebars->41->2411", + "default.handlebars->41->2593" ] }, { @@ -24032,7 +24038,7 @@ "zh-chs": "电邮已验证。", "zh-cht": "電郵已驗證。", "xloc": [ - "default.handlebars->41->2466" + "default.handlebars->41->2472" ] }, { @@ -24057,7 +24063,7 @@ "zh-chs": "电邮未验证", "zh-cht": "電郵未驗證", "xloc": [ - "default.handlebars->41->2588" + "default.handlebars->41->2594" ] }, { @@ -24103,8 +24109,8 @@ "zh-chs": "电邮已发送。", "zh-cht": "電郵已發送。", "xloc": [ - "default-mobile.handlebars->11->727", - "default.handlebars->41->2875", + "default-mobile.handlebars->11->728", + "default.handlebars->41->2881", "login-mobile.handlebars->5->2", "login.handlebars->5->2", "login2.handlebars->7->3" @@ -24180,7 +24186,7 @@ "zh-chs": "已通过电邮验证,并且需要重置密码。", "zh-cht": "已通過電郵驗證,並且需要重置密碼。", "xloc": [ - "default.handlebars->41->2467" + "default.handlebars->41->2473" ] }, { @@ -24226,7 +24232,7 @@ "tr": "E-posta/SMS/Push Trafiği", "zh-chs": "电子邮件/短信/推送流量", "xloc": [ - "default.handlebars->41->2967" + "default.handlebars->41->2973" ] }, { @@ -24302,7 +24308,7 @@ "zh-chs": "启用邀请代码", "zh-cht": "啟用邀請代碼", "xloc": [ - "default.handlebars->41->2100" + "default.handlebars->41->2106" ] }, { @@ -24353,7 +24359,7 @@ "zh-cht": "啟用電郵二因子鑑別。", "xloc": [ "default-mobile.handlebars->11->101", - "default.handlebars->41->1514" + "default.handlebars->41->1520" ] }, { @@ -24403,8 +24409,8 @@ "zh-chs": "已启用", "zh-cht": "已啟用", "xloc": [ - "default.handlebars->41->120", - "default.handlebars->41->2769" + "default.handlebars->41->121", + "default.handlebars->41->2775" ] }, { @@ -24429,7 +24435,7 @@ "zh-chs": "启用电子邮件两因素身份验证", "zh-cht": "啟用電子郵件兩因素身份驗證", "xloc": [ - "default.handlebars->41->2284" + "default.handlebars->41->2290" ] }, { @@ -24485,7 +24491,7 @@ "ru": "Кодировка: RAW", "tr": "kodlama: RAW", "xloc": [ - "default.handlebars->41->1388" + "default.handlebars->41->1393" ] }, { @@ -24505,7 +24511,7 @@ "ru": "Кодировка: UTF8", "tr": "Kodlama: UTF8", "xloc": [ - "default.handlebars->41->1389" + "default.handlebars->41->1394" ] }, { @@ -24530,7 +24536,7 @@ "zh-chs": "结尾", "xloc": [ "default-mobile.handlebars->11->422", - "default.handlebars->41->1244" + "default.handlebars->41->1249" ] }, { @@ -24555,7 +24561,7 @@ "zh-chs": "时间结束", "zh-cht": "時間結束", "xloc": [ - "default.handlebars->41->2766" + "default.handlebars->41->2772" ] }, { @@ -24580,7 +24586,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了桌面会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了桌面會話“{0}”", "xloc": [ - "default.handlebars->41->2207" + "default.handlebars->41->2213" ] }, { @@ -24605,7 +24611,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了文件管理会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了文件管理會話“{0}”", "xloc": [ - "default.handlebars->41->2208" + "default.handlebars->41->2214" ] }, { @@ -24629,7 +24635,7 @@ "tr": "Yerel geçiş oturumu \\\"{0}\\\", {1} - {2} protokolü, {3} saniye sona erdi", "zh-chs": "结束本地中继会话\\\"{0}\\\",协议 {1} 到 {2},{3} 秒", "xloc": [ - "default.handlebars->41->2317" + "default.handlebars->41->2323" ] }, { @@ -24653,7 +24659,7 @@ "tr": "{1} ile {2} arasında \\\"{0}\\\" mesajlaşma oturumu sona erdi, {3} saniye", "zh-chs": "从 {1} 到 {2},{3} 秒结束了 Messenger 会话 \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2308" + "default.handlebars->41->2314" ] }, { @@ -24678,7 +24684,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了中继会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了中繼會話“{0}”", "xloc": [ - "default.handlebars->41->2205" + "default.handlebars->41->2211" ] }, { @@ -24703,7 +24709,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了终端会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了終端會話“{0}”", "xloc": [ - "default.handlebars->41->2206" + "default.handlebars->41->2212" ] }, { @@ -24728,7 +24734,7 @@ "zh-chs": "英文", "zh-cht": "英文", "xloc": [ - "default.handlebars->41->1583" + "default.handlebars->41->1589" ] }, { @@ -24753,7 +24759,7 @@ "zh-chs": "英文(澳洲)", "zh-cht": "英文(澳洲)", "xloc": [ - "default.handlebars->41->1584" + "default.handlebars->41->1590" ] }, { @@ -24778,7 +24784,7 @@ "zh-chs": "英文(伯利茲)", "zh-cht": "英文(伯利茲)", "xloc": [ - "default.handlebars->41->1585" + "default.handlebars->41->1591" ] }, { @@ -24803,7 +24809,7 @@ "zh-chs": "英文(加拿大)", "zh-cht": "英文(加拿大)", "xloc": [ - "default.handlebars->41->1586" + "default.handlebars->41->1592" ] }, { @@ -24828,7 +24834,7 @@ "zh-chs": "英文(爱尔兰)", "zh-cht": "英文(愛爾蘭)", "xloc": [ - "default.handlebars->41->1587" + "default.handlebars->41->1593" ] }, { @@ -24853,7 +24859,7 @@ "zh-chs": "英文(牙买加)", "zh-cht": "英文(牙買加)", "xloc": [ - "default.handlebars->41->1588" + "default.handlebars->41->1594" ] }, { @@ -24878,7 +24884,7 @@ "zh-chs": "英文(纽西兰)", "zh-cht": "英文(紐西蘭)", "xloc": [ - "default.handlebars->41->1589" + "default.handlebars->41->1595" ] }, { @@ -24903,7 +24909,7 @@ "zh-chs": "英文(菲律宾)", "zh-cht": "英文(菲律賓)", "xloc": [ - "default.handlebars->41->1590" + "default.handlebars->41->1596" ] }, { @@ -24928,7 +24934,7 @@ "zh-chs": "英语(南非)", "zh-cht": "英語(南非)", "xloc": [ - "default.handlebars->41->1591" + "default.handlebars->41->1597" ] }, { @@ -24953,7 +24959,7 @@ "zh-chs": "英文(特立尼达和多巴哥)", "zh-cht": "英文(特立尼達和多巴哥)", "xloc": [ - "default.handlebars->41->1592" + "default.handlebars->41->1598" ] }, { @@ -24978,7 +24984,7 @@ "zh-chs": "英文(英国)", "zh-cht": "英文(英國)", "xloc": [ - "default.handlebars->41->1593" + "default.handlebars->41->1599" ] }, { @@ -25003,7 +25009,7 @@ "zh-chs": "美国英文", "zh-cht": "美國英語", "xloc": [ - "default.handlebars->41->1594" + "default.handlebars->41->1600" ] }, { @@ -25028,7 +25034,7 @@ "zh-chs": "英文(津巴布韦)", "zh-cht": "英文(津巴布韋)", "xloc": [ - "default.handlebars->41->1595" + "default.handlebars->41->1601" ] }, { @@ -25075,10 +25081,10 @@ "zh-cht": "輸入", "xloc": [ "default-mobile.handlebars->11->416", - "default.handlebars->41->1238", - "default.handlebars->41->1353", - "default.handlebars->41->1809", - "default.handlebars->41->1810", + "default.handlebars->41->1243", + "default.handlebars->41->1358", + "default.handlebars->41->1815", + "default.handlebars->41->1816", "sharing.handlebars->11->55" ] }, @@ -25104,7 +25110,7 @@ "zh-chs": "输入管理领域名称的逗号分隔列表。", "zh-cht": "輸入管理領域名稱的逗號分隔列表。", "xloc": [ - "default.handlebars->41->2471" + "default.handlebars->41->2477" ] }, { @@ -25129,7 +25135,7 @@ "zh-chs": "输入IP地址范围以扫描英特尔AMT设备。", "zh-cht": "輸入IP地址範圍以掃描Intel® AMT裝置。", "xloc": [ - "default.handlebars->41->476" + "default.handlebars->41->477" ] }, { @@ -25200,7 +25206,7 @@ "zh-chs": "输入文本,然后单击确定以远程键入它。在继续操作之前,请确保将远程光标放置在正确的位置。", "zh-cht": "輸入文本,然後單擊確定以遠程鍵入它。在繼續操作之前,請確保將遠程光標放置在正確的位置。", "xloc": [ - "default.handlebars->41->1268" + "default.handlebars->41->1273" ] }, { @@ -25294,7 +25300,7 @@ "zh-chs": "在此处输入保安编码以进行两步登录:", "zh-cht": "在此處輸入保安編碼以進行兩步登入:", "xloc": [ - "default.handlebars->41->203" + "default.handlebars->41->204" ] }, { @@ -25319,7 +25325,7 @@ "zh-chs": "输入支持SMS的电话号码。验证后,该号码可用于登录验证和其他通知。", "zh-cht": "輸入支持SMS的電話號碼。驗證後,該號碼可用於登入驗證和其他通知。", "xloc": [ - "default.handlebars->41->1509" + "default.handlebars->41->1515" ] }, { @@ -25330,7 +25336,7 @@ "fr": "Erreur #{0}", "xloc": [ "default-mobile.handlebars->11->66", - "default.handlebars->41->200" + "default.handlebars->41->201" ] }, { @@ -25418,7 +25424,7 @@ "zh-chs": "错误,无法添加密钥。", "zh-cht": "錯誤,無法新增密鑰。", "xloc": [ - "default.handlebars->41->230" + "default.handlebars->41->231" ] }, { @@ -25442,8 +25448,8 @@ "tr": "Hata, davet kodu \\\"{0}\\\" zaten kullanılıyor.", "zh-chs": "错误,邀请码 \\\"{0}\\\" 已被使用。", "xloc": [ - "default-mobile.handlebars->11->735", - "default.handlebars->41->2883" + "default-mobile.handlebars->11->736", + "default.handlebars->41->2889" ] }, { @@ -25467,8 +25473,8 @@ "tr": "Hata, şifre değiştirilmedi.", "zh-chs": "错误,密码未更改。", "xloc": [ - "default-mobile.handlebars->11->732", - "default.handlebars->41->2880" + "default-mobile.handlebars->11->733", + "default.handlebars->41->2886" ] }, { @@ -25492,8 +25498,8 @@ "tr": "Hata, yaygın olarak kullanılan parolaya geçilemiyor.", "zh-chs": "错误,无法更改为常用密码。", "xloc": [ - "default-mobile.handlebars->11->731", - "default.handlebars->41->2879" + "default-mobile.handlebars->11->732", + "default.handlebars->41->2885" ] }, { @@ -25517,8 +25523,8 @@ "tr": "Hata, daha önce kullanılan parolaya geçilemiyor.", "zh-chs": "错误,无法更改为以前使用的密码。", "xloc": [ - "default-mobile.handlebars->11->730", - "default.handlebars->41->2878" + "default-mobile.handlebars->11->731", + "default.handlebars->41->2884" ] }, { @@ -25568,7 +25574,7 @@ "zh-chs": "逃脱", "xloc": [ "default-mobile.handlebars->11->417", - "default.handlebars->41->1239" + "default.handlebars->41->1244" ] }, { @@ -25593,7 +25599,7 @@ "zh-chs": "世界文", "zh-cht": "世界語", "xloc": [ - "default.handlebars->41->1596" + "default.handlebars->41->1602" ] }, { @@ -25639,7 +25645,7 @@ "zh-chs": "爱沙尼亚文", "zh-cht": "愛沙尼亞語", "xloc": [ - "default.handlebars->41->1597" + "default.handlebars->41->1603" ] }, { @@ -25685,7 +25691,7 @@ "zh-chs": "事件详情", "zh-cht": "事件詳情", "xloc": [ - "default.handlebars->41->1397" + "default.handlebars->41->1402" ] }, { @@ -25710,7 +25716,7 @@ "zh-chs": "事件列表输出", "zh-cht": "事件列表輸出", "xloc": [ - "default.handlebars->41->2379" + "default.handlebars->41->2385" ] }, { @@ -25863,7 +25869,7 @@ "tr": "sona erme", "zh-chs": "到期", "xloc": [ - "default.handlebars->41->314" + "default.handlebars->41->315" ] }, { @@ -25888,9 +25894,9 @@ "zh-chs": "到期时间", "zh-cht": "到期時間", "xloc": [ - "default.handlebars->41->1078", - "default.handlebars->41->1760", - "default.handlebars->41->277" + "default.handlebars->41->1083", + "default.handlebars->41->1766", + "default.handlebars->41->278" ] }, { @@ -25940,7 +25946,7 @@ "zh-chs": "过期{0}", "zh-cht": "過期{0}", "xloc": [ - "default.handlebars->41->1823", + "default.handlebars->41->1829", "sharing.handlebars->11->95" ] }, @@ -25966,7 +25972,7 @@ "zh-chs": "输出设备信息", "zh-cht": "輸出裝置訊息", "xloc": [ - "default.handlebars->41->641" + "default.handlebars->41->642" ] }, { @@ -25991,7 +25997,7 @@ "zh-chs": "扩充式ASCII", "zh-cht": "擴充式ASCII", "xloc": [ - "default.handlebars->41->1329", + "default.handlebars->41->1334", "sharing.handlebars->11->34" ] }, @@ -26043,7 +26049,7 @@ "zh-chs": "外部", "zh-cht": "外部", "xloc": [ - "default.handlebars->41->2947" + "default.handlebars->41->2953" ] }, { @@ -26054,7 +26060,7 @@ "ru": "ключ FIDO", "fr": "Clé FIDO", "xloc": [ - "default.handlebars->41->2833" + "default.handlebars->41->2839" ] }, { @@ -26079,7 +26085,7 @@ "zh-chs": "完整网域名称", "zh-cht": "完整網域名稱", "xloc": [ - "default.handlebars->41->164" + "default.handlebars->41->165" ] }, { @@ -26104,7 +26110,7 @@ "zh-chs": "FYRO马其顿语", "zh-cht": "FYRO馬其頓語", "xloc": [ - "default.handlebars->41->1647" + "default.handlebars->41->1653" ] }, { @@ -26129,7 +26135,7 @@ "zh-chs": "法罗语", "zh-cht": "法羅語", "xloc": [ - "default.handlebars->41->1598" + "default.handlebars->41->1604" ] }, { @@ -26154,7 +26160,7 @@ "zh-chs": "失败", "zh-cht": "失敗", "xloc": [ - "default.handlebars->41->111" + "default.handlebars->41->112" ] }, { @@ -26178,8 +26184,8 @@ "tr": "E-posta adresi değiştirilemedi, başka bir hesap zaten kullanıyor: {0}.", "zh-chs": "无法更改电子邮件地址,另一个帐户已在使用:{0}。", "xloc": [ - "default-mobile.handlebars->11->726", - "default.handlebars->41->2874" + "default-mobile.handlebars->11->727", + "default.handlebars->41->2880" ] }, { @@ -26206,6 +26212,12 @@ "login2.handlebars->7->29" ] }, + { + "en": "Failed to sign agent {0}: {1}", + "xloc": [ + "default.handlebars->41->104" + ] + }, { "cs": "Vzdálenou plochu se nepodařilo spustit po odmítnutí místním uživatelem", "da": "Kunne ikke starte fjernskrivebord, da den lokale bruger afviste", @@ -26228,7 +26240,7 @@ "zh-chs": "本地用户拒绝后无法启动远程桌面", "zh-cht": "本地用戶拒絕後無法啟動遠程桌面", "xloc": [ - "default.handlebars->41->2230" + "default.handlebars->41->2236" ] }, { @@ -26274,7 +26286,7 @@ "zh-chs": "本地用户拒绝后无法启动远程文件", "zh-cht": "本地用戶拒絕後無法啟動遠程文件", "xloc": [ - "default.handlebars->41->2237" + "default.handlebars->41->2243" ] }, { @@ -26321,7 +26333,7 @@ "zh-cht": "無法啟動遠程終端接合{0}({1})", "xloc": [ "default-mobile.handlebars->11->408", - "default.handlebars->41->1199", + "default.handlebars->41->1204", "sharing.handlebars->11->30", "sharing.handlebars->11->8" ] @@ -26348,7 +26360,7 @@ "zh-chs": "波斯文(波斯文)", "zh-cht": "波斯語(波斯語)", "xloc": [ - "default.handlebars->41->1599" + "default.handlebars->41->1605" ] }, { @@ -26400,9 +26412,9 @@ "zh-chs": "功能", "zh-cht": "功能", "xloc": [ - "default.handlebars->41->1874", - "default.handlebars->41->2523", - "default.handlebars->41->2611" + "default.handlebars->41->1880", + "default.handlebars->41->2529", + "default.handlebars->41->2617" ] }, { @@ -26427,7 +26439,7 @@ "zh-chs": "斐济", "zh-cht": "斐濟", "xloc": [ - "default.handlebars->41->1600" + "default.handlebars->41->1606" ] }, { @@ -26478,8 +26490,8 @@ "zh-cht": "檔案編輯器", "xloc": [ "default-mobile.handlebars->11->487", - "default.handlebars->41->1365", - "default.handlebars->41->746", + "default.handlebars->41->1370", + "default.handlebars->41->747", "sharing.handlebars->11->66" ] }, @@ -26527,8 +26539,8 @@ "zh-chs": "档案操作", "zh-cht": "檔案操作", "xloc": [ - "default.handlebars->41->1344", - "default.handlebars->41->1346", + "default.handlebars->41->1349", + "default.handlebars->41->1351", "sharing.handlebars->11->46", "sharing.handlebars->11->48" ] @@ -26579,7 +26591,7 @@ "tr": "Dosya transferi", "zh-chs": "文件传输", "xloc": [ - "default.handlebars->41->2747" + "default.handlebars->41->2753" ] }, { @@ -26604,7 +26616,7 @@ "zh-chs": "文件系统驱动", "zh-cht": "FileSystemDriver", "xloc": [ - "default.handlebars->41->1285" + "default.handlebars->41->1290" ] }, { @@ -26631,15 +26643,15 @@ "xloc": [ "default-mobile.handlebars->11->216", "default-mobile.handlebars->11->354", - "default.handlebars->41->1051", - "default.handlebars->41->1927", - "default.handlebars->41->2005", - "default.handlebars->41->2754", - "default.handlebars->41->2813", - "default.handlebars->41->2844", - "default.handlebars->41->2935", - "default.handlebars->41->412", - "default.handlebars->41->967", + "default.handlebars->41->1056", + "default.handlebars->41->1933", + "default.handlebars->41->2011", + "default.handlebars->41->2760", + "default.handlebars->41->2819", + "default.handlebars->41->2850", + "default.handlebars->41->2941", + "default.handlebars->41->413", + "default.handlebars->41->972", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevFiles", "default.handlebars->contextMenu->cxfiles", "sharing.handlebars->LeftSideToolBar" @@ -26692,10 +26704,10 @@ "zh-chs": "档案通知", "zh-cht": "檔案通知", "xloc": [ - "default.handlebars->41->1882", - "default.handlebars->41->2531", - "default.handlebars->41->2633", - "default.handlebars->41->855" + "default.handlebars->41->1888", + "default.handlebars->41->2537", + "default.handlebars->41->2639", + "default.handlebars->41->856" ] }, { @@ -26720,10 +26732,10 @@ "zh-chs": "档案提示", "zh-cht": "檔案提示", "xloc": [ - "default.handlebars->41->1881", - "default.handlebars->41->2530", - "default.handlebars->41->2632", - "default.handlebars->41->854" + "default.handlebars->41->1887", + "default.handlebars->41->2536", + "default.handlebars->41->2638", + "default.handlebars->41->855" ] }, { @@ -26749,7 +26761,7 @@ "zh-cht": "過濾", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p2->xdevicesBar->1", - "default.handlebars->41->1349", + "default.handlebars->41->1354", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar", "default.handlebars->container->column_l->p4->3->1->0->3->3", @@ -26824,7 +26836,7 @@ "zh-chs": "查找文件", "zh-cht": "查找文件", "xloc": [ - "default.handlebars->41->1352", + "default.handlebars->41->1357", "sharing.handlebars->11->54" ] }, @@ -26836,7 +26848,7 @@ "pt-br": "Gravação de sessão \\\"{0}\\\" finalizada, {1} segundo(s)", "ru": "Завершение сеанса записи \\\"{0}\\\", {1} сек.", "xloc": [ - "default.handlebars->41->2342" + "default.handlebars->41->2348" ] }, { @@ -26861,7 +26873,7 @@ "zh-chs": "录制会话已完成,{0}秒", "zh-cht": "錄製會話已完成,{0}秒", "xloc": [ - "default.handlebars->41->2203" + "default.handlebars->41->2209" ] }, { @@ -26886,7 +26898,7 @@ "zh-chs": "芬兰", "zh-cht": "芬蘭", "xloc": [ - "default.handlebars->41->1601" + "default.handlebars->41->1607" ] }, { @@ -26912,8 +26924,8 @@ "xloc": [ "default-mobile.handlebars->11->524", "default-mobile.handlebars->11->526", - "default.handlebars->41->837", - "default.handlebars->41->839" + "default.handlebars->41->838", + "default.handlebars->41->840" ] }, { @@ -26937,8 +26949,8 @@ "tr": "Güvenlik duvarı etkin değil", "zh-chs": "防火墙未激活", "xloc": [ - "default.handlebars->41->2135", - "default.handlebars->41->2149" + "default.handlebars->41->2141", + "default.handlebars->41->2155" ] }, { @@ -26988,7 +27000,7 @@ "ru": "Флаги", "tr": "Bayraklar", "xloc": [ - "default.handlebars->41->2352" + "default.handlebars->41->2358" ] }, { @@ -27013,7 +27025,7 @@ "zh-chs": "闪光", "xloc": [ "default-mobile.handlebars->11->358", - "default.handlebars->41->1089" + "default.handlebars->41->1094" ] }, { @@ -27089,7 +27101,7 @@ "zh-chs": "对于ACM激活,需要将英特尔®AMT设置为以下受信任的FQDN:", "zh-cht": "對於ACM激活,需要將英特爾®AMT設置為以下受信任的FQDN:", "xloc": [ - "default.handlebars->41->466" + "default.handlebars->41->467" ] }, { @@ -27200,7 +27212,7 @@ "tr": "Aracı güncellemesi için", "zh-chs": "代理更新", "xloc": [ - "default.handlebars->41->695" + "default.handlebars->41->696" ] }, { @@ -27224,7 +27236,7 @@ "tr": "Aracı güncellemesini zorla", "zh-chs": "强制代理更新", "xloc": [ - "default.handlebars->41->653" + "default.handlebars->41->654" ] }, { @@ -27248,7 +27260,7 @@ "tr": "Seçilen cihazlarda aracı güncellemesi zorunlu kılınsın mı?", "zh-chs": "在选定的设备上强制更新代理?", "xloc": [ - "default.handlebars->41->694" + "default.handlebars->41->695" ] }, { @@ -27273,8 +27285,8 @@ "zh-chs": "下次登录时强制重置密码。", "zh-cht": "下次登入時強制重置密碼。", "xloc": [ - "default.handlebars->41->2465", - "default.handlebars->41->2693" + "default.handlebars->41->2471", + "default.handlebars->41->2699" ] }, { @@ -27294,7 +27306,7 @@ "ru": "Принудительно отключен сеанс рабочего стола пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi masaüstü oturumu", "xloc": [ - "default.handlebars->41->2330" + "default.handlebars->41->2336" ] }, { @@ -27314,7 +27326,7 @@ "ru": "Принудительно отключен файловый сеанс пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesilen dosyalar oturumu", "xloc": [ - "default.handlebars->41->2332" + "default.handlebars->41->2338" ] }, { @@ -27334,7 +27346,7 @@ "ru": "Принудительно отключен сеанс маршрутизации пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi yönlendirme oturumu", "xloc": [ - "default.handlebars->41->2333" + "default.handlebars->41->2339" ] }, { @@ -27354,7 +27366,7 @@ "ru": "Принудительно отключен терминальный сеанс пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi terminal oturumu", "xloc": [ - "default.handlebars->41->2331" + "default.handlebars->41->2337" ] }, { @@ -27457,7 +27469,7 @@ "zh-chs": "格式化", "zh-cht": "格式化", "xloc": [ - "default.handlebars->41->2370" + "default.handlebars->41->2376" ] }, { @@ -27530,8 +27542,8 @@ "zh-chs": "自由", "zh-cht": "自由", "xloc": [ - "default.handlebars->41->2893", - "default.handlebars->41->2895" + "default.handlebars->41->2899", + "default.handlebars->41->2901" ] }, { @@ -27582,7 +27594,7 @@ "zh-chs": "法文(比利时)", "zh-cht": "法語(比利時)", "xloc": [ - "default.handlebars->41->1603" + "default.handlebars->41->1609" ] }, { @@ -27607,7 +27619,7 @@ "zh-chs": "法文(加拿大)", "zh-cht": "法語(加拿大)", "xloc": [ - "default.handlebars->41->1604" + "default.handlebars->41->1610" ] }, { @@ -27632,7 +27644,7 @@ "zh-chs": "法文(法国)", "zh-cht": "法語(法國)", "xloc": [ - "default.handlebars->41->1605" + "default.handlebars->41->1611" ] }, { @@ -27657,7 +27669,7 @@ "zh-chs": "法文(卢森堡)", "zh-cht": "法語(盧森堡)", "xloc": [ - "default.handlebars->41->1606" + "default.handlebars->41->1612" ] }, { @@ -27682,7 +27694,7 @@ "zh-chs": "法文(摩纳哥)", "zh-cht": "法語(摩納哥)", "xloc": [ - "default.handlebars->41->1607" + "default.handlebars->41->1613" ] }, { @@ -27707,7 +27719,7 @@ "zh-chs": "法文(标准)", "zh-cht": "法語(標準)", "xloc": [ - "default.handlebars->41->1602" + "default.handlebars->41->1608" ] }, { @@ -27732,7 +27744,7 @@ "zh-chs": "法文(瑞士)", "zh-cht": "法語(瑞士)", "xloc": [ - "default.handlebars->41->1608" + "default.handlebars->41->1614" ] }, { @@ -27757,7 +27769,7 @@ "zh-chs": "弗里斯兰文", "zh-cht": "弗里斯蘭語", "xloc": [ - "default.handlebars->41->1609" + "default.handlebars->41->1615" ] }, { @@ -27782,7 +27794,7 @@ "zh-chs": "弗留利", "zh-cht": "弗留利", "xloc": [ - "default.handlebars->41->1610" + "default.handlebars->41->1616" ] }, { @@ -27808,12 +27820,12 @@ "zh-cht": "完整管理員", "xloc": [ "default-mobile.handlebars->11->136", - "default-mobile.handlebars->11->640", - "default-mobile.handlebars->11->657", - "default-mobile.handlebars->11->677", - "default.handlebars->41->1816", - "default.handlebars->41->2029", - "default.handlebars->41->2477" + "default-mobile.handlebars->11->641", + "default-mobile.handlebars->11->658", + "default-mobile.handlebars->11->678", + "default.handlebars->41->1822", + "default.handlebars->41->2035", + "default.handlebars->41->2483" ] }, { @@ -27838,7 +27850,7 @@ "zh-chs": "完整管理员(保留所有权利)", "zh-cht": "完整管理員(保留所有權利)", "xloc": [ - "default.handlebars->41->2067" + "default.handlebars->41->2073" ] }, { @@ -27885,7 +27897,7 @@ "zh-chs": "完整设备权限", "zh-cht": "完整裝置權限", "xloc": [ - "default.handlebars->41->993" + "default.handlebars->41->998" ] }, { @@ -27910,7 +27922,7 @@ "zh-chs": "全部权限", "zh-cht": "全部權限", "xloc": [ - "default.handlebars->41->1012" + "default.handlebars->41->1017" ] }, { @@ -27988,7 +28000,7 @@ "zh-chs": "完整管理员", "zh-cht": "完整管理員", "xloc": [ - "default.handlebars->41->2581" + "default.handlebars->41->2587" ] }, { @@ -28013,8 +28025,8 @@ "zh-chs": "全自动的", "zh-cht": "全自動的", "xloc": [ - "default.handlebars->41->1902", - "default.handlebars->41->1959" + "default.handlebars->41->1908", + "default.handlebars->41->1965" ] }, { @@ -28039,8 +28051,8 @@ "zh-chs": "GPU", "zh-cht": "GPU", "xloc": [ - "default-mobile.handlebars->11->588", - "default.handlebars->41->1470" + "default-mobile.handlebars->11->589", + "default.handlebars->41->1476" ] }, { @@ -28065,7 +28077,7 @@ "zh-chs": "盖尔文(爱尔兰)", "zh-cht": "蓋爾語(愛爾蘭)", "xloc": [ - "default.handlebars->41->1612" + "default.handlebars->41->1618" ] }, { @@ -28090,7 +28102,7 @@ "zh-chs": "盖尔文(苏格兰文)", "zh-cht": "蓋爾語(蘇格蘭語)", "xloc": [ - "default.handlebars->41->1611" + "default.handlebars->41->1617" ] }, { @@ -28115,7 +28127,7 @@ "zh-chs": "加拉契文", "zh-cht": "加拉契語", "xloc": [ - "default.handlebars->41->1613" + "default.handlebars->41->1619" ] }, { @@ -28140,7 +28152,7 @@ "zh-chs": "网关MAC", "zh-cht": "閘道MAC", "xloc": [ - "default.handlebars->41->159" + "default.handlebars->41->160" ] }, { @@ -28221,7 +28233,7 @@ "zh-chs": "一般信息", "zh-cht": "一般訊息", "xloc": [ - "default.handlebars->41->753" + "default.handlebars->41->754" ] }, { @@ -28246,7 +28258,7 @@ "zh-chs": "生成新保安编码", "zh-cht": "產生新保安編碼", "xloc": [ - "default.handlebars->41->217" + "default.handlebars->41->218" ] }, { @@ -28266,7 +28278,7 @@ "ru": "Создать отчет", "tr": "Rapor oluştur", "xloc": [ - "default.handlebars->41->2794" + "default.handlebars->41->2800" ] }, { @@ -28311,7 +28323,7 @@ "zh-chs": "格鲁吉亚文", "zh-cht": "格魯吉亞文", "xloc": [ - "default.handlebars->41->1614" + "default.handlebars->41->1620" ] }, { @@ -28336,7 +28348,7 @@ "zh-chs": "德文(奥地利)", "zh-cht": "德語(奧地利)", "xloc": [ - "default.handlebars->41->1616" + "default.handlebars->41->1622" ] }, { @@ -28361,7 +28373,7 @@ "zh-chs": "德文(德国)", "zh-cht": "德文(德國)", "xloc": [ - "default.handlebars->41->1617" + "default.handlebars->41->1623" ] }, { @@ -28386,7 +28398,7 @@ "zh-chs": "德文(列支敦士登)", "zh-cht": "德文(列支敦士登)", "xloc": [ - "default.handlebars->41->1618" + "default.handlebars->41->1624" ] }, { @@ -28411,7 +28423,7 @@ "zh-chs": "德文(卢森堡)", "zh-cht": "德語(盧森堡)", "xloc": [ - "default.handlebars->41->1619" + "default.handlebars->41->1625" ] }, { @@ -28436,7 +28448,7 @@ "zh-chs": "德文(标准)", "zh-cht": "德語(標準)", "xloc": [ - "default.handlebars->41->1615" + "default.handlebars->41->1621" ] }, { @@ -28461,7 +28473,7 @@ "zh-chs": "德文(瑞士)", "zh-cht": "德文(瑞士)", "xloc": [ - "default.handlebars->41->1620" + "default.handlebars->41->1626" ] }, { @@ -28481,7 +28493,7 @@ "ru": "Получить буфер", "tr": "Pano Al", "xloc": [ - "default.handlebars->41->1270" + "default.handlebars->41->1275" ] }, { @@ -28506,7 +28518,7 @@ "zh-chs": "获取此设备的MQTT登录凭证。", "zh-cht": "獲取此裝置的MQTT登入憑證。", "xloc": [ - "default.handlebars->41->936" + "default.handlebars->41->937" ] }, { @@ -28557,7 +28569,7 @@ "zh-chs": "正在获取剪贴板内容,{0}个字节", "zh-cht": "正在獲取剪貼板內容,{0}個字節", "xloc": [ - "default.handlebars->41->2217" + "default.handlebars->41->2223" ] }, { @@ -28634,7 +28646,7 @@ "zh-chs": "好", "zh-cht": "好", "xloc": [ - "default.handlebars->41->1812" + "default.handlebars->41->1818" ] }, { @@ -28689,9 +28701,9 @@ "zh-chs": "Google云端硬盘备份", "zh-cht": "Google雲端硬盤備份", "xloc": [ - "default.handlebars->41->1833", - "default.handlebars->41->1836", - "default.handlebars->41->303" + "default.handlebars->41->1839", + "default.handlebars->41->1842", + "default.handlebars->41->304" ] }, { @@ -28716,7 +28728,7 @@ "zh-chs": "Google云端硬盘控制台", "zh-cht": "Google雲端硬盤控制台", "xloc": [ - "default.handlebars->41->1830" + "default.handlebars->41->1836" ] }, { @@ -28766,7 +28778,7 @@ "zh-chs": "Google云端硬盘备份当前处于活动状态。", "zh-cht": "Google雲端硬盤備份當前處於活動狀態。", "xloc": [ - "default.handlebars->41->1834" + "default.handlebars->41->1840" ] }, { @@ -28815,7 +28827,7 @@ "zh-chs": "希腊文", "zh-cht": "希臘文", "xloc": [ - "default.handlebars->41->1621" + "default.handlebars->41->1627" ] }, { @@ -28841,8 +28853,8 @@ "zh-cht": "群", "xloc": [ "default-mobile.handlebars->11->271", - "default.handlebars->41->2810", - "default.handlebars->41->781", + "default.handlebars->41->2816", + "default.handlebars->41->782", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->1" ] }, @@ -28868,9 +28880,9 @@ "zh-chs": "集体指令", "zh-cht": "集體指令", "xloc": [ - "default.handlebars->41->2419", - "default.handlebars->41->2501", - "default.handlebars->41->658", + "default.handlebars->41->2425", + "default.handlebars->41->2507", + "default.handlebars->41->659", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p4->3->1->0->3->3", "default.handlebars->container->column_l->p50->3->1->0->3->p50userGroupOps" @@ -28898,7 +28910,7 @@ "zh-chs": "通过...分组", "zh-cht": "通過...分群", "xloc": [ - "default.handlebars->41->2366" + "default.handlebars->41->2372" ] }, { @@ -28924,7 +28936,7 @@ "zh-cht": "群標識符", "xloc": [ "agent-translations.json", - "default.handlebars->41->2518" + "default.handlebars->41->2524" ] }, { @@ -28949,7 +28961,7 @@ "zh-chs": "群组成员", "zh-cht": "群組成員", "xloc": [ - "default.handlebars->41->2542" + "default.handlebars->41->2548" ] }, { @@ -28985,8 +28997,8 @@ "zh-chs": "通过...分组", "zh-cht": "通過...分群", "xloc": [ - "default.handlebars->41->2780", - "default.handlebars->41->2783" + "default.handlebars->41->2786", + "default.handlebars->41->2789" ] }, { @@ -29006,7 +29018,7 @@ "ru": "Имя группы", "tr": "Grup ismi", "xloc": [ - "default.handlebars->41->2350" + "default.handlebars->41->2356" ] }, { @@ -29031,7 +29043,7 @@ "zh-chs": "用户{0}的群组权限。", "zh-cht": "用戶{0}的群組權限。", "xloc": [ - "default.handlebars->41->2028" + "default.handlebars->41->2034" ] }, { @@ -29056,7 +29068,7 @@ "zh-chs": "{0}的群组权限。", "zh-cht": "{0}的群組權限。", "xloc": [ - "default.handlebars->41->2027" + "default.handlebars->41->2033" ] }, { @@ -29151,7 +29163,7 @@ "ru": "Гость", "tr": "Misafir", "xloc": [ - "default.handlebars->41->2800" + "default.handlebars->41->2806" ] }, { @@ -29176,8 +29188,8 @@ "zh-chs": "访客姓名", "zh-cht": "來賓姓名", "xloc": [ - "default.handlebars->41->1048", - "default.handlebars->41->267" + "default.handlebars->41->1053", + "default.handlebars->41->268" ] }, { @@ -29201,8 +29213,8 @@ "tr": "Misafir Paylaşımı", "zh-chs": "嘉宾分享", "xloc": [ - "default.handlebars->41->1000", - "default.handlebars->41->1022" + "default.handlebars->41->1005", + "default.handlebars->41->1027" ] }, { @@ -29226,7 +29238,7 @@ "tr": "Misafir Paylaşımı", "zh-chs": "嘉宾分享", "xloc": [ - "default.handlebars->41->2036" + "default.handlebars->41->2042" ] }, { @@ -29251,7 +29263,7 @@ "zh-chs": "古久拉提", "zh-cht": "古久拉提", "xloc": [ - "default.handlebars->41->1622" + "default.handlebars->41->1628" ] }, { @@ -29275,7 +29287,7 @@ "tr": "HTTP", "zh-chs": "HTTP", "xloc": [ - "default.handlebars->41->2931" + "default.handlebars->41->2937" ] }, { @@ -29349,7 +29361,7 @@ "zh-chs": "海地文", "zh-cht": "海地文", "xloc": [ - "default.handlebars->41->1623" + "default.handlebars->41->1629" ] }, { @@ -29373,7 +29385,7 @@ "tr": "Tutamaç Sayısı", "zh-chs": "处理计数", "xloc": [ - "default.handlebars->41->123" + "default.handlebars->41->124" ] }, { @@ -29423,8 +29435,8 @@ "zh-chs": "强行断开代理", "zh-cht": "強行斷開代理", "xloc": [ - "default-mobile.handlebars->11->618", - "default.handlebars->41->1501" + "default-mobile.handlebars->11->619", + "default.handlebars->41->1507" ] }, { @@ -29434,7 +29446,7 @@ "ru": "Аппаратный OTP", "fr": "Clé OTP matérielle", "xloc": [ - "default.handlebars->41->2835" + "default.handlebars->41->2841" ] }, { @@ -29459,7 +29471,7 @@ "zh-chs": "堆总数", "zh-cht": "堆總數", "xloc": [ - "default.handlebars->41->2949" + "default.handlebars->41->2955" ] }, { @@ -29484,7 +29496,7 @@ "zh-chs": "堆使用", "zh-cht": "堆使用", "xloc": [ - "default.handlebars->41->2948" + "default.handlebars->41->2954" ] }, { @@ -29509,7 +29521,7 @@ "zh-chs": "希伯来文", "zh-cht": "希伯來文", "xloc": [ - "default.handlebars->41->1624" + "default.handlebars->41->1630" ] }, { @@ -29606,7 +29618,7 @@ "zh-chs": "已请求帮助,用户:{0},详细信息:{1}", "zh-cht": "已請求幫助,用戶:{0},詳細信息:{1}", "xloc": [ - "default.handlebars->41->2294" + "default.handlebars->41->2300" ] }, { @@ -29632,7 +29644,7 @@ "zh-cht": "幫助請求", "xloc": [ "default-mobile.handlebars->11->200", - "default.handlebars->41->395" + "default.handlebars->41->396" ] }, { @@ -29657,7 +29669,7 @@ "zh-chs": "从{0}请求的帮助:{1}", "zh-cht": "從{0}請求的幫助:{1}", "xloc": [ - "default.handlebars->41->241" + "default.handlebars->41->242" ] }, { @@ -29682,7 +29694,7 @@ "zh-chs": "帮助翻译MeshCentral", "zh-cht": "幫助翻譯MeshCentral", "xloc": [ - "default.handlebars->41->1739" + "default.handlebars->41->1745" ] }, { @@ -29786,7 +29798,7 @@ "default-mobile.handlebars->11->234", "default-mobile.handlebars->11->242", "default.handlebars->41->5", - "default.handlebars->41->608" + "default.handlebars->41->609" ] }, { @@ -29811,7 +29823,7 @@ "zh-chs": "印地文", "zh-cht": "印地文", "xloc": [ - "default.handlebars->41->1625" + "default.handlebars->41->1631" ] }, { @@ -29859,7 +29871,7 @@ "zh-cht": "保存1個項目進行複製", "xloc": [ "default-mobile.handlebars->11->496", - "default.handlebars->41->1375", + "default.handlebars->41->1380", "sharing.handlebars->11->76" ] }, @@ -29886,7 +29898,7 @@ "zh-cht": "保存1個項目進行移動", "xloc": [ "default-mobile.handlebars->11->500", - "default.handlebars->41->1379", + "default.handlebars->41->1384", "sharing.handlebars->11->80" ] }, @@ -29913,7 +29925,7 @@ "zh-cht": "保留{0}個項目進行複製", "xloc": [ "default-mobile.handlebars->11->494", - "default.handlebars->41->1373", + "default.handlebars->41->1378", "sharing.handlebars->11->74" ] }, @@ -29940,7 +29952,7 @@ "zh-cht": "保存{0}個項目以進行移動", "xloc": [ "default-mobile.handlebars->11->498", - "default.handlebars->41->1377", + "default.handlebars->41->1382", "sharing.handlebars->11->78" ] }, @@ -29967,7 +29979,7 @@ "zh-cht": "保存{0}項目{1}給{2}", "xloc": [ "default-mobile.handlebars->11->160", - "default.handlebars->41->2190" + "default.handlebars->41->2196" ] }, { @@ -29992,7 +30004,7 @@ "zh-chs": "家", "xloc": [ "default-mobile.handlebars->11->421", - "default.handlebars->41->1243" + "default.handlebars->41->1248" ] }, { @@ -30022,14 +30034,14 @@ "default-mobile.handlebars->11->276", "default-mobile.handlebars->11->401", "default-mobile.handlebars->11->547", - "default-mobile.handlebars->11->633", - "default.handlebars->41->1192", - "default.handlebars->41->1419", - "default.handlebars->41->1805", - "default.handlebars->41->1863", - "default.handlebars->41->447", - "default.handlebars->41->456", - "default.handlebars->41->786" + "default-mobile.handlebars->11->634", + "default.handlebars->41->1197", + "default.handlebars->41->1424", + "default.handlebars->41->1811", + "default.handlebars->41->1869", + "default.handlebars->41->448", + "default.handlebars->41->457", + "default.handlebars->41->787" ] }, { @@ -30054,7 +30066,7 @@ "zh-chs": "主机名同步", "zh-cht": "主機名同步", "xloc": [ - "default.handlebars->41->1870" + "default.handlebars->41->1876" ] }, { @@ -30079,7 +30091,7 @@ "zh-chs": "匈牙利文", "zh-cht": "匈牙利文", "xloc": [ - "default.handlebars->41->1626" + "default.handlebars->41->1632" ] }, { @@ -30089,7 +30101,7 @@ "ru": "Cервер требует гибридный режим", "fr": "Hybrid requis par le serveur", "xloc": [ - "default.handlebars->41->1209" + "default.handlebars->41->1214" ] }, { @@ -30100,8 +30112,8 @@ "pt-br": "Endereço IP", "ru": "IP Адрес", "xloc": [ - "default.handlebars->41->2805", - "default.handlebars->41->2840" + "default.handlebars->41->2811", + "default.handlebars->41->2846" ] }, { @@ -30160,8 +30172,8 @@ "zh-chs": "IP范围", "zh-cht": "IP範圍", "xloc": [ - "default.handlebars->41->477", - "default.handlebars->41->479" + "default.handlebars->41->478", + "default.handlebars->41->480" ] }, { @@ -30210,8 +30222,8 @@ "default-mobile.handlebars->11->255", "default-mobile.handlebars->11->312", "default-mobile.handlebars->11->341", - "default.handlebars->41->374", - "default.handlebars->41->626" + "default.handlebars->41->375", + "default.handlebars->41->627" ] }, { @@ -30231,7 +30243,7 @@ "ru": "IP-KVM / Устройство питания", "tr": "IP-KVM / Güç cihazı", "xloc": [ - "default.handlebars->41->1795" + "default.handlebars->41->1801" ] }, { @@ -30241,7 +30253,7 @@ "ru": "IP-KVM / Устройство питания, ретранслируемое через агента", "fr": "Appareil IP-KVM / Power relayé par l'agent", "xloc": [ - "default.handlebars->41->1796" + "default.handlebars->41->1802" ] }, { @@ -30261,8 +30273,8 @@ "ru": "IP-KVM-устройство", "tr": "IP-KVM cihazı", "xloc": [ - "default-mobile.handlebars->11->625", - "default.handlebars->41->1855" + "default-mobile.handlebars->11->626", + "default.handlebars->41->1861" ] }, { @@ -30272,8 +30284,8 @@ "ru": "Устройство IP-KVM ретранслируемое через агента", "fr": "Appareil IP-KAM relayé par l'agent", "xloc": [ - "default-mobile.handlebars->11->626", - "default.handlebars->41->1856" + "default-mobile.handlebars->11->627", + "default.handlebars->41->1862" ] }, { @@ -30293,8 +30305,8 @@ "ru": "Порт IP-KVM подключен", "tr": "IP-KVM bağlantı noktası bağlandı", "xloc": [ - "default.handlebars->41->942", - "default.handlebars->41->943" + "default.handlebars->41->943", + "default.handlebars->41->944" ] }, { @@ -30314,7 +30326,7 @@ "ru": "Порт IP-KVM подключен и готов к использованию.", "tr": "IP-KVM portu bağlı ve kullanıma hazır.", "xloc": [ - "default.handlebars->41->373" + "default.handlebars->41->374" ] }, { @@ -30334,7 +30346,7 @@ "ru": "Порт IP-KVM запущен и готов к использованию.", "tr": "IP-KVM portu hazır ve kullanıma hazır.", "xloc": [ - "default.handlebars->41->625" + "default.handlebars->41->626" ] }, { @@ -30359,9 +30371,9 @@ "zh-chs": "IP:{0}", "zh-cht": "IP:{0}", "xloc": [ - "default.handlebars->41->1429", - "default.handlebars->41->1439", - "default.handlebars->41->1443" + "default.handlebars->41->1434", + "default.handlebars->41->1444", + "default.handlebars->41->1448" ] }, { @@ -30386,9 +30398,9 @@ "zh-chs": "IP:{0},掩码:{1},网关:{2}", "zh-cht": "IP:{0},遮罩:{1},閘道:{2}", "xloc": [ - "default.handlebars->41->1427", - "default.handlebars->41->1437", - "default.handlebars->41->1441" + "default.handlebars->41->1432", + "default.handlebars->41->1442", + "default.handlebars->41->1446" ] }, { @@ -30415,10 +30427,10 @@ "xloc": [ "default-mobile.handlebars->11->554", "default-mobile.handlebars->11->556", - "default.handlebars->41->1426", - "default.handlebars->41->1428", - "default.handlebars->41->1436", - "default.handlebars->41->1438" + "default.handlebars->41->1431", + "default.handlebars->41->1433", + "default.handlebars->41->1441", + "default.handlebars->41->1443" ] }, { @@ -30443,8 +30455,8 @@ "zh-chs": "IPv4地址", "zh-cht": "IPv4地址", "xloc": [ - "default.handlebars->41->153", - "default.handlebars->41->171" + "default.handlebars->41->154", + "default.handlebars->41->172" ] }, { @@ -30469,8 +30481,8 @@ "zh-chs": "IPv4网关", "zh-cht": "IPv4閘道", "xloc": [ - "default.handlebars->41->157", - "default.handlebars->41->175" + "default.handlebars->41->158", + "default.handlebars->41->176" ] }, { @@ -30495,8 +30507,8 @@ "zh-chs": "IPv4掩码", "zh-cht": "IPv4遮罩", "xloc": [ - "default.handlebars->41->155", - "default.handlebars->41->173" + "default.handlebars->41->156", + "default.handlebars->41->174" ] }, { @@ -30523,8 +30535,8 @@ "xloc": [ "default-mobile.handlebars->11->558", "default-mobile.handlebars->11->560", - "default.handlebars->41->1440", - "default.handlebars->41->1442" + "default.handlebars->41->1445", + "default.handlebars->41->1447" ] }, { @@ -30549,7 +30561,7 @@ "zh-chs": "IPv6地址", "zh-cht": "IPv6地址", "xloc": [ - "default.handlebars->41->165" + "default.handlebars->41->166" ] }, { @@ -30574,7 +30586,7 @@ "zh-chs": "IPv6网关", "zh-cht": "IPv6閘道", "xloc": [ - "default.handlebars->41->169" + "default.handlebars->41->170" ] }, { @@ -30599,7 +30611,7 @@ "zh-chs": "IPv6掩码", "zh-cht": "IPv6遮罩", "xloc": [ - "default.handlebars->41->167" + "default.handlebars->41->168" ] }, { @@ -30624,7 +30636,7 @@ "zh-chs": "冰岛文", "zh-cht": "冰島文", "xloc": [ - "default.handlebars->41->1627" + "default.handlebars->41->1633" ] }, { @@ -30650,7 +30662,7 @@ "zh-cht": "圖符選擇", "xloc": [ "default-mobile.handlebars->11->395", - "default.handlebars->41->1186" + "default.handlebars->41->1191" ] }, { @@ -30676,9 +30688,9 @@ "zh-cht": "識別符", "xloc": [ "default-mobile.handlebars->11->546", - "default-mobile.handlebars->11->586", - "default.handlebars->41->1418", - "default.handlebars->41->1468" + "default-mobile.handlebars->11->587", + "default.handlebars->41->1423", + "default.handlebars->41->1474" ] }, { @@ -30703,7 +30715,7 @@ "zh-chs": "如果在CCM中,请重新激活英特尔®AMT", "zh-cht": "如果在CCM中,請重新激活英特爾®AMT", "xloc": [ - "default.handlebars->41->1973" + "default.handlebars->41->1979" ] }, { @@ -30879,9 +30891,9 @@ "tr": "Intel® AMT Cihazlarını İçe Aktarın", "zh-chs": "导入英特尔® AMT 设备", "xloc": [ - "default.handlebars->41->1947", - "default.handlebars->41->1948", - "default.handlebars->41->1952" + "default.handlebars->41->1953", + "default.handlebars->41->1954", + "default.handlebars->41->1958" ] }, { @@ -30905,7 +30917,7 @@ "tr": "MeshCommander JSON formatında yerel Intel® AMT cihazlarının bir listesini içe aktarın.", "zh-chs": "以 MeshCommander JSON 格式导入本地英特尔® AMT 设备列表。", "xloc": [ - "default.handlebars->41->1946" + "default.handlebars->41->1952" ] }, { @@ -30929,7 +30941,7 @@ "tr": "Cihaz listesini içe aktar", "zh-chs": "导入设备列表", "xloc": [ - "default.handlebars->41->1942" + "default.handlebars->41->1948" ] }, { @@ -30953,7 +30965,7 @@ "tr": "Anında bildirim kimlik doğrulamasını kullanmak için, hesabınızda tam haklara sahip bir mobil cihaz kurulmalıdır.", "zh-chs": "为了使用推送通知身份验证,必须在您的帐户中设置具有完全权限的移动设备。", "xloc": [ - "default.handlebars->41->1522" + "default.handlebars->41->1528" ] }, { @@ -30977,7 +30989,7 @@ "tr": "Kaldırılana kadar günleri devre dışı bırak", "zh-chs": "停用天数直到移除", "xloc": [ - "default.handlebars->41->2013" + "default.handlebars->41->2019" ] }, { @@ -31025,7 +31037,7 @@ "tr": "Cihaz ayrıntılarını dahil et", "zh-chs": "包括设备详细信息", "xloc": [ - "default.handlebars->41->707" + "default.handlebars->41->708" ] }, { @@ -31077,7 +31089,7 @@ "ru": "Несоответствие флагов", "fr": "Indicateurs incohérents", "xloc": [ - "default.handlebars->41->1208" + "default.handlebars->41->1213" ] }, { @@ -31088,8 +31100,8 @@ "pt-br": "2ª etapa incorreta", "ru": "Неверный 2-й фактор", "xloc": [ - "default.handlebars->41->2828", - "default.handlebars->41->2848" + "default.handlebars->41->2834", + "default.handlebars->41->2854" ] }, { @@ -31140,9 +31152,9 @@ "zh-cht": "個別裝置", "xloc": [ "default-mobile.handlebars->11->187", - "default.handlebars->41->333", "default.handlebars->41->334", - "default.handlebars->41->335" + "default.handlebars->41->335", + "default.handlebars->41->336" ] }, { @@ -31167,7 +31179,7 @@ "zh-chs": "印度尼西亚文", "zh-cht": "印度尼西亞文", "xloc": [ - "default.handlebars->41->1628" + "default.handlebars->41->1634" ] }, { @@ -31269,7 +31281,7 @@ "zh-chs": "插", "xloc": [ "default-mobile.handlebars->11->419", - "default.handlebars->41->1241" + "default.handlebars->41->1246" ] }, { @@ -31319,7 +31331,7 @@ "zh-chs": "安装 Google Authenticator或兼容的应用软件并扫描条码,使用此连结或输入密码。然后,在下面输入当前的6位数保安编码以激活两步登录。", "zh-cht": "安裝 Google Authenticator或兼容的應用軟體並掃描條碼,使用此鏈結或輸入密碼。然後,在下面輸入當前的6位數保安編碼以啟動兩步登入。", "xloc": [ - "default.handlebars->41->201" + "default.handlebars->41->202" ] }, { @@ -31412,7 +31424,7 @@ "tr": "Bu cihaza yükle", "zh-chs": "在此设备上安装", "xloc": [ - "default-mobile.handlebars->11->637" + "default-mobile.handlebars->11->638" ] }, { @@ -31436,7 +31448,7 @@ "tr": "MeshCentral Agent'ı Android cihazınıza yükleyin. Kurulduktan sonra, cihazınızı bu sunucuya bağlamak için eşleştirme bağlantısını tıklayın.", "zh-chs": "在您的 Android 设备上安装 MeshCentral Agent。安装后,单击配对链接将您的设备连接到此服务器。", "xloc": [ - "default-mobile.handlebars->11->653" + "default-mobile.handlebars->11->654" ] }, { @@ -31503,12 +31515,12 @@ "zh-chs": "安装类型", "zh-cht": "安裝方式", "xloc": [ - "default.handlebars->41->2108", - "default.handlebars->41->2115", - "default.handlebars->41->507", - "default.handlebars->41->527", - "default.handlebars->41->543", - "default.handlebars->41->547" + "default.handlebars->41->2114", + "default.handlebars->41->2121", + "default.handlebars->41->508", + "default.handlebars->41->528", + "default.handlebars->41->544", + "default.handlebars->41->548" ] }, { @@ -31533,7 +31545,7 @@ "zh-chs": "英特尔(F10 = ESC + [OM)", "zh-cht": "Intel(F10 = ESC + [OM)", "xloc": [ - "default.handlebars->41->1331", + "default.handlebars->41->1336", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons", "sharing.handlebars->11->36", "sharing.handlebars->p12->9->1->terminalSettingsButtons" @@ -31561,7 +31573,7 @@ "zh-chs": "英特尔AMT", "zh-cht": "英特爾AMT", "xloc": [ - "default.handlebars->41->2945" + "default.handlebars->41->2951" ] }, { @@ -31581,7 +31593,7 @@ "ru": "Intel AMT CIRA подключен", "tr": "Intel AMT CIRA bağlandı", "xloc": [ - "default.handlebars->41->245" + "default.handlebars->41->246" ] }, { @@ -31601,7 +31613,7 @@ "ru": "Intel AMT CIRA отключен", "tr": "Intel AMT CIRA'nın bağlantısı kesildi", "xloc": [ - "default.handlebars->41->249" + "default.handlebars->41->250" ] }, { @@ -31621,7 +31633,7 @@ "ru": "Обнаружен Intel AMT", "tr": "Intel AMT algılandı", "xloc": [ - "default.handlebars->41->244" + "default.handlebars->41->245" ] }, { @@ -31645,7 +31657,7 @@ "tr": "Intel AMT yöneticisi", "zh-chs": "英特尔 AMT 经理", "xloc": [ - "default.handlebars->41->2974" + "default.handlebars->41->2980" ] }, { @@ -31665,7 +31677,7 @@ "ru": "Intel AMT не обнаружен", "tr": "Intel AMT algılanmadı", "xloc": [ - "default.handlebars->41->248" + "default.handlebars->41->249" ] }, { @@ -31690,7 +31702,7 @@ "zh-chs": "英特尔ASCII", "zh-cht": "Intel ASCII", "xloc": [ - "default.handlebars->41->1330", + "default.handlebars->41->1335", "sharing.handlebars->11->35" ] }, @@ -31719,15 +31731,16 @@ "default-mobile.handlebars->11->258", "default-mobile.handlebars->11->308", "default-mobile.handlebars->11->315", - "default.handlebars->41->1889", - "default.handlebars->41->1903", - "default.handlebars->41->2130", - "default.handlebars->41->2143", - "default.handlebars->41->2973", - "default.handlebars->41->756", - "default.handlebars->41->823", - "default.handlebars->41->862", - "default.handlebars->41->872" + "default.handlebars->41->1895", + "default.handlebars->41->1909", + "default.handlebars->41->2136", + "default.handlebars->41->2149", + "default.handlebars->41->2979", + "default.handlebars->41->757", + "default.handlebars->41->824", + "default.handlebars->41->863", + "default.handlebars->41->873", + "default.handlebars->41->957" ] }, { @@ -31752,7 +31765,7 @@ "zh-chs": "英特尔®AMT ACM", "zh-cht": "英特爾®AMT ACM", "xloc": [ - "default.handlebars->41->475" + "default.handlebars->41->476" ] }, { @@ -31778,7 +31791,7 @@ "zh-cht": "Intel® AMT CIRA", "xloc": [ "default-mobile.handlebars->11->314", - "default.handlebars->41->870" + "default.handlebars->41->871" ] }, { @@ -31847,9 +31860,9 @@ "zh-chs": "英特尔®AMT CIRA已连接并可以使用。", "zh-cht": "Intel® AMT CIRA已連接並可以使用。", "xloc": [ - "default.handlebars->41->377", - "default.handlebars->41->629", - "default.handlebars->41->869" + "default.handlebars->41->378", + "default.handlebars->41->630", + "default.handlebars->41->870" ] }, { @@ -31901,7 +31914,7 @@ "tr": "Intel® AMT JSON", "zh-chs": "英特尔® AMT JSON", "xloc": [ - "default.handlebars->41->705" + "default.handlebars->41->706" ] }, { @@ -31950,8 +31963,8 @@ "tr": "Intel® AMT Tek Tıkla Kurtarma", "zh-chs": "英特尔® AMT 一键恢复", "xloc": [ - "default.handlebars->41->1104", - "default.handlebars->41->1117" + "default.handlebars->41->1109", + "default.handlebars->41->1122" ] }, { @@ -31976,7 +31989,7 @@ "zh-chs": "英特尔®AMT政策", "zh-cht": "Intel® AMT政策", "xloc": [ - "default.handlebars->41->1960" + "default.handlebars->41->1966" ] }, { @@ -32003,9 +32016,9 @@ "default-mobile.handlebars->11->374", "default-mobile.handlebars->11->376", "default-mobile.handlebars->11->378", - "default.handlebars->41->1118", - "default.handlebars->41->1120", - "default.handlebars->41->1122" + "default.handlebars->41->1123", + "default.handlebars->41->1125", + "default.handlebars->41->1127" ] }, { @@ -32030,7 +32043,7 @@ "zh-chs": "英特尔® AMT 关机", "xloc": [ "default-mobile.handlebars->11->370", - "default.handlebars->41->1103" + "default.handlebars->41->1108" ] }, { @@ -32055,7 +32068,7 @@ "zh-chs": "英特尔® AMT 开机", "xloc": [ "default-mobile.handlebars->11->369", - "default.handlebars->41->1102" + "default.handlebars->41->1107" ] }, { @@ -32080,8 +32093,8 @@ "zh-chs": "英特尔®AMT重定向", "zh-cht": "Intel® AMT重定向", "xloc": [ - "default.handlebars->41->2749", - "default.handlebars->41->2756", + "default.handlebars->41->2755", + "default.handlebars->41->2762", "player.handlebars->3->30" ] }, @@ -32107,7 +32120,7 @@ "zh-chs": "英特尔® AMT 重置", "xloc": [ "default-mobile.handlebars->11->368", - "default.handlebars->41->1101" + "default.handlebars->41->1106" ] }, { @@ -32132,7 +32145,7 @@ "zh-chs": "英特尔®AMT标签", "zh-cht": "Intel® AMT標籤", "xloc": [ - "default.handlebars->41->827" + "default.handlebars->41->828" ] }, { @@ -32157,8 +32170,8 @@ "zh-chs": "英特尔®AMT WSMAN", "zh-cht": "Intle® AMT WSMAN", "xloc": [ - "default.handlebars->41->2748", - "default.handlebars->41->2755", + "default.handlebars->41->2754", + "default.handlebars->41->2761", "player.handlebars->3->29" ] }, @@ -32207,8 +32220,8 @@ "zh-cht": "Intel ®AMT已連接", "xloc": [ "default-mobile.handlebars->11->343", - "default.handlebars->41->946", - "default.handlebars->41->947" + "default.handlebars->41->947", + "default.handlebars->41->948" ] }, { @@ -32233,9 +32246,9 @@ "zh-chs": "英特尔®AMT桌面和串行事件", "zh-cht": "Intel® AMT桌面和串行事件", "xloc": [ - "default.handlebars->41->1766", - "default.handlebars->41->2123", - "default.handlebars->41->988" + "default.handlebars->41->1772", + "default.handlebars->41->2129", + "default.handlebars->41->993" ] }, { @@ -32261,8 +32274,8 @@ "zh-cht": "檢測到Intel® AMT", "xloc": [ "default-mobile.handlebars->11->344", - "default.handlebars->41->948", - "default.handlebars->41->949" + "default.handlebars->41->949", + "default.handlebars->41->950" ] }, { @@ -32287,7 +32300,7 @@ "zh-chs": "在Intel® AMT尔AMT", "zh-cht": "在管理控制模式下啟動了Intel® AMT", "xloc": [ - "default.handlebars->41->809" + "default.handlebars->41->810" ] }, { @@ -32312,7 +32325,7 @@ "zh-chs": "英特尔AMT在客户端控制模式下被激活", "zh-cht": "Intel® AMT在客户端控制模式下被启动", "xloc": [ - "default.handlebars->41->807" + "default.handlebars->41->808" ] }, { @@ -32337,7 +32350,7 @@ "zh-chs": "英特尔®AMT可路由并可以使用。", "zh-cht": "Intel® AMT可路由並可以使用。", "xloc": [ - "default.handlebars->41->871" + "default.handlebars->41->872" ] }, { @@ -32362,8 +32375,8 @@ "zh-chs": "英特尔®AMT是可路由的。", "zh-cht": "Intel® AMT是可路由的。", "xloc": [ - "default.handlebars->41->379", - "default.handlebars->41->631" + "default.handlebars->41->380", + "default.handlebars->41->632" ] }, { @@ -32389,7 +32402,7 @@ "zh-cht": "Intel® AMT已設置TLS網絡安全性", "xloc": [ "default-mobile.handlebars->11->298", - "default.handlebars->41->811" + "default.handlebars->41->812" ] }, { @@ -32461,9 +32474,9 @@ "zh-chs": "仅限英特尔®AMT,无代理", "zh-cht": "僅限Intel® AMT,無代理", "xloc": [ - "default-mobile.handlebars->11->621", - "default.handlebars->41->1799", - "default.handlebars->41->1851" + "default-mobile.handlebars->11->622", + "default.handlebars->41->1805", + "default.handlebars->41->1857" ] }, { @@ -32488,7 +32501,7 @@ "zh-chs": "英特尔®AMT设置", "zh-cht": "英特爾®AMT設置", "xloc": [ - "default.handlebars->41->467" + "default.handlebars->41->468" ] }, { @@ -32535,7 +32548,7 @@ "zh-chs": "英特尔®主动管理技术", "zh-cht": "Intel® Active Management Technology", "xloc": [ - "default.handlebars->41->822" + "default.handlebars->41->823" ] }, { @@ -32560,8 +32573,8 @@ "zh-chs": "英特尔®主动管理技术(英特尔®AMT)", "zh-cht": "Intel ® Active Management Technology(Intel® AMT)", "xloc": [ - "default-mobile.handlebars->11->578", - "default.handlebars->41->1460" + "default-mobile.handlebars->11->579", + "default.handlebars->41->1466" ] }, { @@ -32587,7 +32600,7 @@ "zh-cht": "Intel® ME", "xloc": [ "default-mobile.handlebars->11->307", - "default.handlebars->41->821" + "default.handlebars->41->822" ] }, { @@ -32612,7 +32625,7 @@ "zh-chs": "英特尔®可管理性引擎", "zh-cht": "Intel® Management Engine", "xloc": [ - "default.handlebars->41->820" + "default.handlebars->41->821" ] }, { @@ -32638,7 +32651,8 @@ "zh-cht": "Intel® M", "xloc": [ "default-mobile.handlebars->11->309", - "default.handlebars->41->825" + "default.handlebars->41->826", + "default.handlebars->41->955" ] }, { @@ -32663,7 +32677,26 @@ "zh-chs": "英特尔®标准可管理性", "zh-cht": "Intel® Standard Manageability", "xloc": [ - "default.handlebars->41->824" + "default.handlebars->41->825" + ] + }, + { + "en": "Intel® Standard Manageability (Intel® SM)", + "xloc": [ + "default-mobile.handlebars->11->578", + "default.handlebars->41->1465" + ] + }, + { + "en": "Intel®AMT", + "xloc": [ + "default.handlebars->41->956" + ] + }, + { + "en": "Intel®SM", + "xloc": [ + "default.handlebars->41->954" ] }, { @@ -32683,7 +32716,7 @@ "ru": "Изменение политик Intel(r) AMT", "tr": "Intel(r) AMT ilke değişikliği", "xloc": [ - "default.handlebars->41->2337" + "default.handlebars->41->2343" ] }, { @@ -32709,6 +32742,7 @@ "zh-cht": "Intel® AMT", "xloc": [ "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->11", + "default.handlebars->container->column_l->p14->p14title->5->p14deviceNamePrefix", "default.handlebars->container->dialog->dialogBody->dialog7->1->td7amtkvm" ] }, @@ -32732,10 +32766,7 @@ "sv": "Intel® AMT -", "tr": "Intel® AMT -", "zh-chs": "英特尔®AMT -", - "zh-cht": "Intel® AMT -", - "xloc": [ - "default.handlebars->container->column_l->p14->p14title->5" - ] + "zh-cht": "Intel® AMT -" }, { "cs": "Intel® AMT hardwarové KVM", @@ -32785,8 +32816,6 @@ "zh-chs": "英特尔®AMT重定向端口或KVM功能已禁用", "zh-cht": "Intel® AMT重定向端口或KVM功能已禁用", "xloc": [ - "default.handlebars->container->column_l->p11->p11warning->3", - "default.handlebars->container->column_l->p12->p12warning->3", "sharing.handlebars->p12->p12warning->3" ] }, @@ -32900,7 +32929,7 @@ "zh-chs": "互动", "zh-cht": "互動", "xloc": [ - "default.handlebars->41->1286" + "default.handlebars->41->1291" ] }, { @@ -32925,11 +32954,11 @@ "zh-chs": "仅限互动", "zh-cht": "僅限互動", "xloc": [ - "default.handlebars->41->2111", - "default.handlebars->41->2118", - "default.handlebars->41->510", - "default.handlebars->41->530", - "default.handlebars->41->546" + "default.handlebars->41->2117", + "default.handlebars->41->2124", + "default.handlebars->41->511", + "default.handlebars->41->531", + "default.handlebars->41->547" ] }, { @@ -32954,7 +32983,7 @@ "zh-chs": "介面", "zh-cht": "介面", "xloc": [ - "default.handlebars->41->916" + "default.handlebars->41->917" ] }, { @@ -33003,7 +33032,7 @@ "zh-chs": "因纽特文", "zh-cht": "因紐特文", "xloc": [ - "default.handlebars->41->1629" + "default.handlebars->41->1635" ] }, { @@ -33028,7 +33057,7 @@ "zh-chs": "无效的 2FA", "xloc": [ "default-mobile.handlebars->11->83", - "default.handlebars->41->307" + "default.handlebars->41->308" ] }, { @@ -33054,7 +33083,7 @@ "zh-cht": "無效證件", "xloc": [ "default-mobile.handlebars->11->303", - "default.handlebars->41->816" + "default.handlebars->41->817" ] }, { @@ -33079,7 +33108,7 @@ "zh-chs": "无效的设备组类型", "zh-cht": "無效的裝置群類型", "xloc": [ - "default.handlebars->41->2907" + "default.handlebars->41->2913" ] }, { @@ -33104,7 +33133,7 @@ "zh-chs": "无效的JSON", "zh-cht": "無效的JSON", "xloc": [ - "default.handlebars->41->2901" + "default.handlebars->41->2907" ] }, { @@ -33129,9 +33158,9 @@ "zh-chs": "无效的JSON档案格式。", "zh-cht": "無效的JSON檔案格式。", "xloc": [ - "default.handlebars->41->1953", - "default.handlebars->41->2439", - "default.handlebars->41->2441" + "default.handlebars->41->1959", + "default.handlebars->41->2445", + "default.handlebars->41->2447" ] }, { @@ -33156,8 +33185,8 @@ "zh-chs": "无效的JSON档案:{0}。", "zh-cht": "無效的JSON檔案:{0}。", "xloc": [ - "default.handlebars->41->1949", - "default.handlebars->41->2437" + "default.handlebars->41->1955", + "default.handlebars->41->2443" ] }, { @@ -33262,7 +33291,7 @@ "zh-chs": "无效的PKCS签名", "zh-cht": "無效的PKCS簽名", "xloc": [ - "default.handlebars->41->2899" + "default.handlebars->41->2905" ] }, { @@ -33287,7 +33316,7 @@ "zh-chs": "無效的RSA密碼", "zh-cht": "無效的RSA密碼", "xloc": [ - "default.handlebars->41->2900" + "default.handlebars->41->2906" ] }, { @@ -33311,8 +33340,8 @@ "tr": "Geçersiz SMS mesajı", "zh-chs": "无效的短信", "xloc": [ - "default-mobile.handlebars->11->738", - "default.handlebars->41->2886" + "default-mobile.handlebars->11->739", + "default.handlebars->41->2892" ] }, { @@ -33383,8 +33412,8 @@ "tr": "Geçersiz alan", "zh-chs": "无效域", "xloc": [ - "default-mobile.handlebars->11->718", - "default.handlebars->41->2866" + "default-mobile.handlebars->11->719", + "default.handlebars->41->2872" ] }, { @@ -33429,8 +33458,8 @@ "tr": "Geçersiz e-posta", "zh-chs": "不合规电邮", "xloc": [ - "default-mobile.handlebars->11->717", - "default.handlebars->41->2865" + "default-mobile.handlebars->11->718", + "default.handlebars->41->2871" ] }, { @@ -33519,8 +33548,8 @@ "pt-br": "Tentativa de login inválida", "ru": "Неудачная попытка входа", "xloc": [ - "default.handlebars->41->2830", - "default.handlebars->41->2850" + "default.handlebars->41->2836", + "default.handlebars->41->2856" ] }, { @@ -33544,10 +33573,10 @@ "tr": "Geçersiz şifre", "zh-chs": "无效的密码", "xloc": [ - "default-mobile.handlebars->11->716", + "default-mobile.handlebars->11->717", "default-mobile.handlebars->11->85", - "default.handlebars->41->2864", - "default.handlebars->41->309" + "default.handlebars->41->2870", + "default.handlebars->41->310" ] }, { @@ -33571,8 +33600,8 @@ "tr": "Geçersiz site izinleri", "zh-chs": "网站权限无效", "xloc": [ - "default-mobile.handlebars->11->719", - "default.handlebars->41->2867" + "default-mobile.handlebars->11->720", + "default.handlebars->41->2873" ] }, { @@ -33623,7 +33652,7 @@ "tr": "{0}, {1}, {2}'den geçersiz kullanıcı giriş denemesi", "zh-chs": "来自 {0}、{1}、{2} 的无效用户登录尝试", "xloc": [ - "default.handlebars->41->2306" + "default.handlebars->41->2312" ] }, { @@ -33647,8 +33676,8 @@ "tr": "Geçersiz kullanıcı adı", "zh-chs": "无效的用户名", "xloc": [ - "default-mobile.handlebars->11->715", - "default.handlebars->41->2863" + "default-mobile.handlebars->11->716", + "default.handlebars->41->2869" ] }, { @@ -33694,7 +33723,7 @@ "zh-chs": "使电邮无效", "zh-cht": "使電郵無效", "xloc": [ - "default.handlebars->41->2413" + "default.handlebars->41->2419" ] }, { @@ -33741,7 +33770,7 @@ "zh-chs": "邀请连接({0})", "zh-cht": "邀請鏈結({0})", "xloc": [ - "default.handlebars->41->265" + "default.handlebars->41->266" ] }, { @@ -33766,7 +33795,7 @@ "zh-chs": "邀请类型", "zh-cht": "邀請類型", "xloc": [ - "default.handlebars->41->486" + "default.handlebars->41->487" ] }, { @@ -33791,7 +33820,7 @@ "zh-chs": "任何人都可以使用邀请代码通过以下公共连接将设备加入该设备组:", "zh-cht": "任何人都可以使用邀請代碼通過以下公共鏈結將裝置加入該裝置群:", "xloc": [ - "default.handlebars->41->2113" + "default.handlebars->41->2119" ] }, { @@ -33841,9 +33870,9 @@ "zh-chs": "邀请", "zh-cht": "邀請", "xloc": [ - "default.handlebars->41->1913", - "default.handlebars->41->442", - "default.handlebars->41->532" + "default.handlebars->41->1919", + "default.handlebars->41->443", + "default.handlebars->41->533" ] }, { @@ -33868,13 +33897,13 @@ "zh-chs": "邀请码", "zh-cht": "邀請碼", "xloc": [ - "default-mobile.handlebars->11->713", - "default.handlebars->41->1895", - "default.handlebars->41->2101", - "default.handlebars->41->2112", - "default.handlebars->41->2114", - "default.handlebars->41->2119", - "default.handlebars->41->2861" + "default-mobile.handlebars->11->714", + "default.handlebars->41->1901", + "default.handlebars->41->2107", + "default.handlebars->41->2118", + "default.handlebars->41->2120", + "default.handlebars->41->2125", + "default.handlebars->41->2867" ] }, { @@ -33894,7 +33923,7 @@ "ru": "Код приглашения", "tr": "Davet kodu", "xloc": [ - "default.handlebars->41->2355" + "default.handlebars->41->2361" ] }, { @@ -33919,7 +33948,7 @@ "zh-chs": "通过共享邀请连结来邀请某人安装网格代理。该连结为用户提供“ {0} ”设备组的安装说明。该连结是公用的,不需要这服务器的帐户。", "zh-cht": "通過共享邀請鏈結來邀請某人安裝mesh agent。該鏈結將用戶指向“ {0} ”裝置群的安裝說明。該鏈結是公用的,不需要這伺服器的帳戶。", "xloc": [ - "default.handlebars->41->513" + "default.handlebars->41->514" ] }, { @@ -33944,8 +33973,8 @@ "zh-chs": "邀请某人在该设备组上安装网格代理。", "zh-cht": "邀請某人在該裝置群上安裝mesh agent。", "xloc": [ - "default.handlebars->41->1912", - "default.handlebars->41->441" + "default.handlebars->41->1918", + "default.handlebars->41->442" ] }, { @@ -33970,7 +33999,7 @@ "zh-chs": "邀请某人安装网状代理。将发送一封电邮,其中包含指向“ {0} ”设备组的网状代理安装的连结。", "zh-cht": "邀請某人安裝mesh agent。將發送一封電郵,其中包含指向“ {0} ”裝置群的mesh agent安裝的鏈結。", "xloc": [ - "default.handlebars->41->489" + "default.handlebars->41->490" ] }, { @@ -33995,7 +34024,7 @@ "zh-chs": "爱尔兰文", "zh-cht": "愛爾蘭文", "xloc": [ - "default.handlebars->41->1630" + "default.handlebars->41->1636" ] }, { @@ -34005,7 +34034,7 @@ "ru": "Установлен ретранслятором для \\\"{0}\\\".", "fr": "Est un relais de \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2349" + "default.handlebars->41->2355" ] }, { @@ -34030,7 +34059,7 @@ "zh-chs": "意大利文(标准)", "zh-cht": "意大利文(標準)", "xloc": [ - "default.handlebars->41->1631" + "default.handlebars->41->1637" ] }, { @@ -34055,7 +34084,7 @@ "zh-chs": "意大利文(瑞士)", "zh-cht": "義大利文(瑞士)", "xloc": [ - "default.handlebars->41->1632" + "default.handlebars->41->1638" ] }, { @@ -34101,7 +34130,7 @@ "zh-chs": "JSON", "zh-cht": "JSON", "xloc": [ - "default.handlebars->41->2372" + "default.handlebars->41->2378" ] }, { @@ -34126,9 +34155,9 @@ "zh-chs": "JSON格式", "zh-cht": "JSON格式", "xloc": [ - "default.handlebars->41->2377", - "default.handlebars->41->2445", - "default.handlebars->41->703" + "default.handlebars->41->2383", + "default.handlebars->41->2451", + "default.handlebars->41->704" ] }, { @@ -34153,7 +34182,7 @@ "zh-chs": "日文", "zh-cht": "日文", "xloc": [ - "default.handlebars->41->1633" + "default.handlebars->41->1639" ] }, { @@ -34178,7 +34207,7 @@ "zh-chs": "已加入桌面Multiplex会话", "zh-cht": "已加入桌面Multiplex會話", "xloc": [ - "default.handlebars->41->2200" + "default.handlebars->41->2206" ] }, { @@ -34189,7 +34218,7 @@ "pt-br": "Entrou na sessão \\\"{0}\\\" multiplex de área de trabalho", "ru": "Присоединился к сеансу мультиплексированного рабочего стола \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2339" + "default.handlebars->41->2345" ] }, { @@ -34214,7 +34243,7 @@ "zh-chs": "卡纳达文", "zh-cht": "卡納達文", "xloc": [ - "default.handlebars->41->1634" + "default.handlebars->41->1640" ] }, { @@ -34239,7 +34268,7 @@ "zh-chs": "克什米尔文", "zh-cht": "克什米爾文", "xloc": [ - "default.handlebars->41->1635" + "default.handlebars->41->1641" ] }, { @@ -34264,7 +34293,7 @@ "zh-chs": "哈萨克文", "zh-cht": "哈薩克文", "xloc": [ - "default.handlebars->41->1636" + "default.handlebars->41->1642" ] }, { @@ -34289,7 +34318,7 @@ "zh-chs": "保留现有密码", "zh-cht": "保留現有密碼", "xloc": [ - "default.handlebars->41->1961" + "default.handlebars->41->1967" ] }, { @@ -34314,7 +34343,7 @@ "zh-chs": "内核驱动器", "zh-cht": "內核驅動器", "xloc": [ - "default.handlebars->41->1287" + "default.handlebars->41->1292" ] }, { @@ -34339,7 +34368,7 @@ "zh-chs": "密钥文件", "xloc": [ "default-mobile.handlebars->11->457", - "default.handlebars->41->1317", + "default.handlebars->41->1322", "ssh.handlebars->3->15" ] }, @@ -34365,8 +34394,8 @@ "zh-chs": "键名", "zh-cht": "鍵名", "xloc": [ - "default.handlebars->41->1527", - "default.handlebars->41->1530" + "default.handlebars->41->1533", + "default.handlebars->41->1536" ] }, { @@ -34391,7 +34420,7 @@ "zh-chs": "密钥密码", "xloc": [ "default-mobile.handlebars->11->459", - "default.handlebars->41->1319", + "default.handlebars->41->1324", "ssh.handlebars->3->17" ] }, @@ -34417,7 +34446,7 @@ "zh-chs": "密钥文件必须是 OpenSSH 格式。", "xloc": [ "default-mobile.handlebars->11->458", - "default.handlebars->41->1318", + "default.handlebars->41->1323", "ssh.handlebars->3->16" ] }, @@ -34465,7 +34494,7 @@ "zh-chs": "键盘快捷键自定义", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10dialog->1->1", - "default.handlebars->41->1261" + "default.handlebars->41->1266" ] }, { @@ -34485,7 +34514,7 @@ "ru": "Настройка клавиатурных строк", "tr": "Klavye Dizileri Özelleştirme", "xloc": [ - "default.handlebars->41->1266" + "default.handlebars->41->1271" ] }, { @@ -34532,7 +34561,7 @@ "zh-chs": "高棉文", "zh-cht": "高棉文", "xloc": [ - "default.handlebars->41->1637" + "default.handlebars->41->1643" ] }, { @@ -34557,7 +34586,7 @@ "zh-chs": "杀死进程{0}", "zh-cht": "殺死進程{0}", "xloc": [ - "default.handlebars->41->2215" + "default.handlebars->41->2221" ] }, { @@ -34582,7 +34611,7 @@ "zh-chs": "吉尔吉斯", "zh-cht": "吉爾吉斯", "xloc": [ - "default.handlebars->41->1638" + "default.handlebars->41->1644" ] }, { @@ -34607,7 +34636,7 @@ "zh-chs": "克林贡", "zh-cht": "克林貢", "xloc": [ - "default.handlebars->41->1639" + "default.handlebars->41->1645" ] }, { @@ -34633,7 +34662,7 @@ "zh-cht": "已知的", "xloc": [ "default-mobile.handlebars->11->577", - "default.handlebars->41->1459" + "default.handlebars->41->1464" ] }, { @@ -34658,7 +34687,7 @@ "zh-chs": "韩文", "zh-cht": "韓文", "xloc": [ - "default.handlebars->41->1640" + "default.handlebars->41->1646" ] }, { @@ -34683,7 +34712,7 @@ "zh-chs": "韩文(朝鲜)", "zh-cht": "韓文(朝鮮)", "xloc": [ - "default.handlebars->41->1641" + "default.handlebars->41->1647" ] }, { @@ -34708,7 +34737,7 @@ "zh-chs": "韩文(韩国)", "zh-cht": "韓文(韓國)", "xloc": [ - "default.handlebars->41->1642" + "default.handlebars->41->1648" ] }, { @@ -34733,8 +34762,8 @@ "zh-chs": "如果", "zh-cht": "如果", "xloc": [ - "default.handlebars->41->1304", - "default.handlebars->41->1335", + "default.handlebars->41->1309", + "default.handlebars->41->1340", "sharing.handlebars->11->26", "sharing.handlebars->11->40" ] @@ -34761,7 +34790,7 @@ "zh-chs": "语言", "zh-cht": "語言", "xloc": [ - "default.handlebars->41->1737" + "default.handlebars->41->1743" ] }, { @@ -34832,7 +34861,7 @@ "zh-chs": "大焦点", "zh-cht": "大焦點", "xloc": [ - "default.handlebars->41->1235" + "default.handlebars->41->1240" ] }, { @@ -34990,7 +35019,7 @@ "zh-chs": "过去30天", "zh-cht": "過去30天", "xloc": [ - "default.handlebars->41->2788", + "default.handlebars->41->2794", "default.handlebars->container->column_l->p40->3->1->p40time->9" ] }, @@ -35066,7 +35095,7 @@ "ru": "Последние 7 дней", "tr": "Son 7 gün", "xloc": [ - "default.handlebars->41->2787" + "default.handlebars->41->2793" ] }, { @@ -35116,7 +35145,7 @@ "zh-chs": "最后访问", "zh-cht": "最後訪問", "xloc": [ - "default.handlebars->41->2385" + "default.handlebars->41->2391" ] }, { @@ -35136,7 +35165,7 @@ "ru": "Последний день", "tr": "Son gun", "xloc": [ - "default.handlebars->41->2786" + "default.handlebars->41->2792" ] }, { @@ -35161,7 +35190,7 @@ "zh-chs": "上次登录", "zh-cht": "上次登入", "xloc": [ - "default.handlebars->41->2615" + "default.handlebars->41->2621" ] }, { @@ -35185,8 +35214,8 @@ "tr": "Son görülen", "zh-chs": "最后一次露面", "xloc": [ - "default.handlebars->41->328", - "default.handlebars->41->353", + "default.handlebars->41->329", + "default.handlebars->41->354", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->11" ] }, @@ -35207,7 +35236,7 @@ "ru": "Последний доступ: {0}", "tr": "Son erişim: {0}", "xloc": [ - "default.handlebars->41->2395" + "default.handlebars->41->2401" ] }, { @@ -35235,12 +35264,12 @@ "default-mobile.handlebars->11->538", "default-mobile.handlebars->11->539", "default-mobile.handlebars->11->540", - "default.handlebars->41->140", - "default.handlebars->41->1410", - "default.handlebars->41->1411", - "default.handlebars->41->1412", - "default.handlebars->41->142", - "default.handlebars->41->144" + "default.handlebars->41->141", + "default.handlebars->41->1415", + "default.handlebars->41->1416", + "default.handlebars->41->1417", + "default.handlebars->41->143", + "default.handlebars->41->145" ] }, { @@ -35267,9 +35296,9 @@ "xloc": [ "default-mobile.handlebars->11->535", "default-mobile.handlebars->11->537", - "default.handlebars->41->139", - "default.handlebars->41->1407", - "default.handlebars->41->1409" + "default.handlebars->41->140", + "default.handlebars->41->1412", + "default.handlebars->41->1414" ] }, { @@ -35294,7 +35323,7 @@ "zh-chs": "上次更改:{0}", "zh-cht": "上次更改:{0}", "xloc": [ - "default.handlebars->41->2619" + "default.handlebars->41->2625" ] }, { @@ -35344,7 +35373,7 @@ "zh-chs": "最后接口更新", "zh-cht": "最後介面更新", "xloc": [ - "default.handlebars->41->146" + "default.handlebars->41->147" ] }, { @@ -35369,7 +35398,7 @@ "zh-chs": "上次登录:{0}", "zh-cht": "上次登入:{0}", "xloc": [ - "default.handlebars->41->2396" + "default.handlebars->41->2402" ] }, { @@ -35394,8 +35423,8 @@ "zh-chs": "最后一次发现:", "zh-cht": "最後一次發現:", "xloc": [ - "default.handlebars->41->109", - "default.handlebars->41->952" + "default.handlebars->41->110", + "default.handlebars->41->953" ] }, { @@ -35491,7 +35520,7 @@ "zh-chs": "最新版本", "zh-cht": "最新版本", "xloc": [ - "default.handlebars->41->185" + "default.handlebars->41->186" ] }, { @@ -35516,7 +35545,7 @@ "zh-chs": "拉丁文", "zh-cht": "拉丁文", "xloc": [ - "default.handlebars->41->1643" + "default.handlebars->41->1649" ] }, { @@ -35541,7 +35570,7 @@ "zh-chs": "拉脱维亚文", "zh-cht": "拉脫維亞文", "xloc": [ - "default.handlebars->41->1644" + "default.handlebars->41->1650" ] }, { @@ -35566,7 +35595,7 @@ "zh-chs": "启动MeshCentral路由器", "zh-cht": "啟動MeshCentral路由器", "xloc": [ - "default.handlebars->41->1159" + "default.handlebars->41->1164" ] }, { @@ -35613,7 +35642,7 @@ "zh-chs": "启动基于Web的RDP连接到此设备", "zh-cht": "啟動基於Web的RDP連接到此裝置", "xloc": [ - "default.handlebars->41->932" + "default.handlebars->41->933" ] }, { @@ -35637,7 +35666,7 @@ "tr": "Bu cihaza web tabanlı SSH oturumu başlat", "zh-chs": "启动与此设备的基于 Web 的 SSH 会话", "xloc": [ - "default.handlebars->41->934" + "default.handlebars->41->935" ] }, { @@ -35661,7 +35690,7 @@ "tr": "Bu cihaza web tabanlı VNC oturumu başlat", "zh-chs": "启动与此设备的基于 Web 的 VNC 会话", "xloc": [ - "default.handlebars->41->930" + "default.handlebars->41->931" ] }, { @@ -35686,7 +35715,7 @@ "zh-chs": "如没有请留空。", "zh-cht": "如沒有請留空。", "xloc": [ - "default.handlebars->41->2665" + "default.handlebars->41->2671" ] }, { @@ -35711,7 +35740,7 @@ "zh-chs": "剩下", "xloc": [ "default-mobile.handlebars->11->425", - "default.handlebars->41->1247" + "default.handlebars->41->1252" ] }, { @@ -35722,7 +35751,7 @@ "pt-br": "Deixar a sessão WEB-RDP \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-RDP \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2321" + "default.handlebars->41->2327" ] }, { @@ -35750,7 +35779,7 @@ "pt-br": "Deixar a sessão WEB-SFTP \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-SFTP \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2320" + "default.handlebars->41->2326" ] }, { @@ -35778,7 +35807,7 @@ "pt-br": "Deixar a sessão WEB-SSH \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-SSH \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2319" + "default.handlebars->41->2325" ] }, { @@ -35815,7 +35844,7 @@ "ru": "Завершен сеанс Web-VNC, {0} с.", "tr": "{0} saniye sonra Web-VNC oturumundan ayrıldı.", "xloc": [ - "default.handlebars->41->2322" + "default.handlebars->41->2328" ] }, { @@ -35870,7 +35899,7 @@ "zh-chs": "离开桌面多路复用会话", "zh-cht": "離開桌面多路復用會話", "xloc": [ - "default.handlebars->41->2201" + "default.handlebars->41->2207" ] }, { @@ -35881,7 +35910,7 @@ "pt-br": "Deixar a sessão \\\"{0}\\\" de área de trabalho multiplex depois de {1} segundo(s)", "ru": "Покинул сеанс мультиплексного режима рабочего стола \\\"{0}\\\" через {1} с.", "xloc": [ - "default.handlebars->41->2340" + "default.handlebars->41->2346" ] }, { @@ -35901,7 +35930,7 @@ "ru": "Покинул сеанс мультиплексного режима рабочего стола через {0} с.", "tr": "{0} saniye sonra masaüstü multipleks oturumundan ayrıldı.", "xloc": [ - "default.handlebars->41->2318" + "default.handlebars->41->2324" ] }, { @@ -35921,7 +35950,7 @@ "ru": "Продолжительность", "tr": "Uzunluk", "xloc": [ - "default.handlebars->41->2801" + "default.handlebars->41->2807" ] }, { @@ -35993,8 +36022,8 @@ "zh-chs": "限制事件", "zh-cht": "限制事件", "xloc": [ - "default.handlebars->41->1006", - "default.handlebars->41->1028" + "default.handlebars->41->1011", + "default.handlebars->41->1033" ] }, { @@ -36045,10 +36074,10 @@ "zh-chs": "有限输入", "zh-cht": "有限輸入", "xloc": [ - "default-mobile.handlebars->11->690", - "default.handlebars->41->1020", - "default.handlebars->41->2081", - "default.handlebars->41->998" + "default-mobile.handlebars->11->691", + "default.handlebars->41->1003", + "default.handlebars->41->1025", + "default.handlebars->41->2087" ] }, { @@ -36073,8 +36102,8 @@ "zh-chs": "仅有限输入", "zh-cht": "僅有限輸入", "xloc": [ - "default-mobile.handlebars->11->663", - "default.handlebars->41->2035" + "default-mobile.handlebars->11->664", + "default.handlebars->41->2041" ] }, { @@ -36125,8 +36154,8 @@ "zh-chs": "连结过期", "zh-cht": "鏈結過期", "xloc": [ - "default.handlebars->41->500", - "default.handlebars->41->514" + "default.handlebars->41->501", + "default.handlebars->41->515" ] }, { @@ -36151,7 +36180,7 @@ "zh-chs": "连结邀请", "zh-cht": "鏈結邀請", "xloc": [ - "default.handlebars->41->487" + "default.handlebars->41->488" ] }, { @@ -36175,7 +36204,7 @@ "tr": "Bağlantılar", "zh-chs": "链接", "xloc": [ - "default.handlebars->41->349" + "default.handlebars->41->350" ] }, { @@ -36204,7 +36233,7 @@ "agentinvite.handlebars->container->column_l->5->linuxtab->1", "default-mobile.handlebars->11->285", "default.handlebars->41->56", - "default.handlebars->41->796" + "default.handlebars->41->797" ] }, { @@ -36228,7 +36257,7 @@ "tr": "Linux (SSH/SCP/VNC)", "zh-chs": "Linux (SSH/SCP/VNC)", "xloc": [ - "default.handlebars->41->451" + "default.handlebars->41->452" ] }, { @@ -36253,7 +36282,7 @@ "zh-chs": "Linux / BSD", "zh-cht": "Linux / BSD", "xloc": [ - "default.handlebars->41->534" + "default.handlebars->41->535" ] }, { @@ -36278,7 +36307,7 @@ "zh-chs": "Linux / BSD(卸载)", "zh-cht": "Linux / BSD(解除安裝)", "xloc": [ - "default.handlebars->41->540" + "default.handlebars->41->541" ] }, { @@ -36303,7 +36332,7 @@ "zh-chs": "Linux / BSD / macOS二进制安装程序", "zh-cht": "Linux / BSD / macOS二進制安裝軟體", "xloc": [ - "default.handlebars->41->535" + "default.handlebars->41->536" ] }, { @@ -36432,7 +36461,7 @@ "zh-chs": "Linux ARM,Raspberry Pi(32位)", "zh-cht": "Linux ARM,Raspberry Pi(32位)", "xloc": [ - "default.handlebars->41->1167" + "default.handlebars->41->1172" ] }, { @@ -36457,7 +36486,7 @@ "zh-chs": "Linux ARM, Raspberry Pi (64位)", "zh-cht": "Linux ARM, Raspberry Pi (64位)", "xloc": [ - "default.handlebars->41->1168" + "default.handlebars->41->1173" ] }, { @@ -36468,8 +36497,8 @@ "pt-br": "MeshAgent Linux", "ru": "MeshAgent для Linux", "xloc": [ - "default.handlebars->41->2105", - "default.handlebars->41->524" + "default.handlebars->41->2111", + "default.handlebars->41->525" ] }, { @@ -36546,7 +36575,7 @@ "zh-chs": "Linux路径", "zh-cht": "Linux路徑", "xloc": [ - "default.handlebars->41->690" + "default.handlebars->41->691" ] }, { @@ -36623,7 +36652,7 @@ "zh-chs": "只限Linux", "zh-cht": "只限Linux", "xloc": [ - "default.handlebars->41->498" + "default.handlebars->41->499" ] }, { @@ -36648,7 +36677,7 @@ "zh-chs": "Linux x86(32位)", "zh-cht": "Linux x86(32位)", "xloc": [ - "default.handlebars->41->1164" + "default.handlebars->41->1169" ] }, { @@ -36673,7 +36702,7 @@ "zh-chs": "Linux x86(64位)", "zh-cht": "Linux x86(64位)", "xloc": [ - "default.handlebars->41->1163" + "default.handlebars->41->1168" ] }, { @@ -36698,8 +36727,8 @@ "zh-chs": "Linux / BSD / macOS命令外壳", "zh-cht": "Linux / BSD / macOS命令外殼", "xloc": [ - "default.handlebars->41->1112", - "default.handlebars->41->670" + "default.handlebars->41->1117", + "default.handlebars->41->671" ] }, { @@ -36793,7 +36822,7 @@ "zh-chs": "立陶宛文", "zh-cht": "立陶宛文", "xloc": [ - "default.handlebars->41->1645" + "default.handlebars->41->1651" ] }, { @@ -36845,13 +36874,13 @@ "xloc": [ "default-mobile.handlebars->11->103", "default-mobile.handlebars->11->88", - "default.handlebars->41->1154", - "default.handlebars->41->1504", - "default.handlebars->41->1516", - "default.handlebars->41->1842", - "default.handlebars->41->1846", - "default.handlebars->41->2688", - "default.handlebars->41->2737" + "default.handlebars->41->1159", + "default.handlebars->41->1510", + "default.handlebars->41->1522", + "default.handlebars->41->1848", + "default.handlebars->41->1852", + "default.handlebars->41->2694", + "default.handlebars->41->2743" ] }, { @@ -36876,7 +36905,7 @@ "zh-chs": "本地", "zh-cht": "本地", "xloc": [ - "default.handlebars->41->388", + "default.handlebars->41->389", "messenger.handlebars->localVideo->1", "messenger.handlebars->remoteImage->3->4" ] @@ -36970,9 +36999,9 @@ "tr": "Yerel cihazlar, aracı yok", "zh-chs": "本地设备,无代理", "xloc": [ - "default-mobile.handlebars->11->623", - "default.handlebars->41->1793", - "default.handlebars->41->1853" + "default-mobile.handlebars->11->624", + "default.handlebars->41->1799", + "default.handlebars->41->1859" ] }, { @@ -37007,7 +37036,7 @@ "ru": "Подключение к локальной сети через агент ретрансляции.", "fr": "Connexion au réseau local au travers d'un agent relais", "xloc": [ - "default.handlebars->41->385" + "default.handlebars->41->386" ] }, { @@ -37017,7 +37046,7 @@ "ru": "Локальное сетевое подключение.", "fr": "Connexion au réseau local.", "xloc": [ - "default.handlebars->41->387" + "default.handlebars->41->388" ] }, { @@ -37042,7 +37071,7 @@ "zh-chs": "本地用户接受的远程终端请求", "zh-cht": "本地用戶接受的遠程終端請求", "xloc": [ - "default.handlebars->41->2223" + "default.handlebars->41->2229" ] }, { @@ -37067,7 +37096,7 @@ "zh-chs": "本地用户拒绝了远程终端请求", "zh-cht": "本地用戶拒絕了遠程終端請求", "xloc": [ - "default.handlebars->41->2224" + "default.handlebars->41->2230" ] }, { @@ -37092,7 +37121,7 @@ "zh-chs": "本地化设置", "zh-cht": "本地化設置", "xloc": [ - "default.handlebars->41->1740", + "default.handlebars->41->1746", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->7" ] }, @@ -37118,7 +37147,7 @@ "zh-chs": "位置", "zh-cht": "位置", "xloc": [ - "default.handlebars->41->918" + "default.handlebars->41->919" ] }, { @@ -37168,7 +37197,7 @@ "zh-chs": "锁定账户", "zh-cht": "鎖定賬戶", "xloc": [ - "default.handlebars->41->2485" + "default.handlebars->41->2491" ] }, { @@ -37193,7 +37222,7 @@ "zh-chs": "锁定帐户设置", "zh-cht": "鎖定帳戶設置", "xloc": [ - "default.handlebars->41->2489" + "default.handlebars->41->2495" ] }, { @@ -37217,7 +37246,7 @@ "tr": "Masaüstünü Kilitle", "zh-chs": "锁定桌面", "xloc": [ - "default.handlebars->41->1045" + "default.handlebars->41->1050" ] }, { @@ -37242,7 +37271,7 @@ "zh-chs": "锁定账户", "zh-cht": "鎖定賬戶", "xloc": [ - "default.handlebars->41->2416" + "default.handlebars->41->2422" ] }, { @@ -37287,7 +37316,7 @@ "tr": "Uzak kullanıcının faresi ve klavyesi kilitlensin mi?", "zh-chs": "锁定远程用户的鼠标和键盘?", "xloc": [ - "default.handlebars->41->1042" + "default.handlebars->41->1047" ] }, { @@ -37335,7 +37364,7 @@ "tr": "Kullanıcı masaüstü kilitlensin mi?", "zh-chs": "锁定用户桌面?", "xloc": [ - "default.handlebars->41->1046" + "default.handlebars->41->1051" ] }, { @@ -37360,7 +37389,7 @@ "zh-chs": "已锁定", "zh-cht": "已鎖定", "xloc": [ - "default.handlebars->41->2397" + "default.handlebars->41->2403" ] }, { @@ -37386,10 +37415,10 @@ "zh-cht": "被鎖定賬戶", "xloc": [ "default-mobile.handlebars->11->84", - "default.handlebars->41->2578", - "default.handlebars->41->2829", - "default.handlebars->41->2849", - "default.handlebars->41->308" + "default.handlebars->41->2584", + "default.handlebars->41->2835", + "default.handlebars->41->2855", + "default.handlebars->41->309" ] }, { @@ -37414,7 +37443,7 @@ "zh-chs": "将远程用户锁定在桌面之外", "zh-cht": "將遠程用戶鎖定在桌面之外", "xloc": [ - "default.handlebars->41->2249" + "default.handlebars->41->2255" ] }, { @@ -37439,7 +37468,7 @@ "zh-chs": "记录事件", "zh-cht": "記錄事件", "xloc": [ - "default.handlebars->41->897" + "default.handlebars->41->898" ] }, { @@ -37567,7 +37596,7 @@ "tr": "Oturum açmış kullanıcılar", "zh-chs": "已登录用户", "xloc": [ - "default.handlebars->41->325" + "default.handlebars->41->326" ] }, { @@ -37632,7 +37661,7 @@ "ru": "Токен входа", "fr": "Jeton de connexion", "xloc": [ - "default.handlebars->41->2839" + "default.handlebars->41->2845" ] }, { @@ -37696,7 +37725,7 @@ "fr": "Jeton de connexion utilisé", "xloc": [ "default-mobile.handlebars->11->62", - "default.handlebars->41->196" + "default.handlebars->41->197" ] }, { @@ -37776,7 +37805,7 @@ "zh-chs": "卢森堡文", "zh-cht": "盧森堡文", "xloc": [ - "default.handlebars->41->1646" + "default.handlebars->41->1652" ] }, { @@ -37803,10 +37832,10 @@ "xloc": [ "default-mobile.handlebars->11->550", "default-mobile.handlebars->11->552", - "default.handlebars->41->1422", - "default.handlebars->41->1424", - "default.handlebars->41->1432", - "default.handlebars->41->1434" + "default.handlebars->41->1427", + "default.handlebars->41->1429", + "default.handlebars->41->1437", + "default.handlebars->41->1439" ] }, { @@ -37831,8 +37860,8 @@ "zh-chs": "MAC地址", "zh-cht": "MAC地址", "xloc": [ - "default.handlebars->41->151", - "default.handlebars->41->162" + "default.handlebars->41->152", + "default.handlebars->41->163" ] }, { @@ -37858,8 +37887,8 @@ "zh-cht": "MAC:{0}", "xloc": [ "default-mobile.handlebars->11->553", - "default.handlebars->41->1425", - "default.handlebars->41->1435" + "default.handlebars->41->1430", + "default.handlebars->41->1440" ] }, { @@ -37885,8 +37914,8 @@ "zh-cht": "MAC:{0},網關:{1}", "xloc": [ "default-mobile.handlebars->11->551", - "default.handlebars->41->1423", - "default.handlebars->41->1433" + "default.handlebars->41->1428", + "default.handlebars->41->1438" ] }, { @@ -38012,14 +38041,14 @@ "xloc": [ "default-mobile.handlebars->11->260", "default-mobile.handlebars->11->317", - "default-mobile.handlebars->11->606", - "default-mobile.handlebars->11->608", + "default-mobile.handlebars->11->607", + "default-mobile.handlebars->11->609", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect2", - "default.handlebars->41->1489", - "default.handlebars->41->1491", - "default.handlebars->41->384", - "default.handlebars->41->636", - "default.handlebars->41->876", + "default.handlebars->41->1495", + "default.handlebars->41->1497", + "default.handlebars->41->385", + "default.handlebars->41->637", + "default.handlebars->41->877", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect2" ] }, @@ -38045,7 +38074,7 @@ "zh-chs": "MQTT凭证", "zh-cht": "MQTT憑證", "xloc": [ - "default.handlebars->41->297" + "default.handlebars->41->298" ] }, { @@ -38070,7 +38099,7 @@ "zh-chs": "MQTT登录", "zh-cht": "MQTT登入", "xloc": [ - "default.handlebars->41->937" + "default.handlebars->41->938" ] }, { @@ -38096,7 +38125,7 @@ "zh-cht": "MQTT通道已連接", "xloc": [ "default-mobile.handlebars->11->345", - "default.handlebars->41->951" + "default.handlebars->41->952" ] }, { @@ -38121,8 +38150,8 @@ "zh-chs": "MQTT已连接", "zh-cht": "MQTT已連接", "xloc": [ - "default.handlebars->41->246", - "default.handlebars->41->950" + "default.handlebars->41->247", + "default.handlebars->41->951" ] }, { @@ -38147,9 +38176,9 @@ "zh-chs": "与设备的MQTT连接已激活。", "zh-cht": "與裝置的MQTT連接已啟動。", "xloc": [ - "default.handlebars->41->383", - "default.handlebars->41->635", - "default.handlebars->41->875" + "default.handlebars->41->384", + "default.handlebars->41->636", + "default.handlebars->41->876" ] }, { @@ -38174,7 +38203,7 @@ "zh-chs": "MQTT已断开连接", "zh-cht": "MQTT已斷開連接", "xloc": [ - "default.handlebars->41->250" + "default.handlebars->41->251" ] }, { @@ -38315,7 +38344,7 @@ "tr": "MacOS Yükleyici", "zh-chs": "MacOS 安装程序", "xloc": [ - "default.handlebars->41->1157" + "default.handlebars->41->1162" ] }, { @@ -38326,8 +38355,8 @@ "pt-br": "MeshAgent MacOS", "ru": "MeshAgent для MacOS", "xloc": [ - "default.handlebars->41->2106", - "default.handlebars->41->525" + "default.handlebars->41->2112", + "default.handlebars->41->526" ] }, { @@ -38351,7 +38380,7 @@ "tr": "Makine adı", "zh-chs": "机器名称", "xloc": [ - "default.handlebars->41->113" + "default.handlebars->41->114" ] }, { @@ -38376,7 +38405,7 @@ "zh-chs": "主服务器信息", "zh-cht": "主伺服器訊息", "xloc": [ - "default.handlebars->41->2961" + "default.handlebars->41->2967" ] }, { @@ -38401,7 +38430,7 @@ "zh-chs": "马来文", "zh-cht": "馬來文", "xloc": [ - "default.handlebars->41->1648" + "default.handlebars->41->1654" ] }, { @@ -38426,7 +38455,7 @@ "zh-chs": "玛拉雅拉姆文", "zh-cht": "馬拉雅拉姆文", "xloc": [ - "default.handlebars->41->1649" + "default.handlebars->41->1655" ] }, { @@ -38451,7 +38480,7 @@ "zh-chs": "马耳他文", "zh-cht": "馬耳他文", "xloc": [ - "default.handlebars->41->1650" + "default.handlebars->41->1656" ] }, { @@ -38476,7 +38505,7 @@ "zh-chs": "管理帐户图片", "xloc": [ "default-mobile.handlebars->11->89", - "default.handlebars->41->1505" + "default.handlebars->41->1511" ] }, { @@ -38502,7 +38531,7 @@ "zh-cht": "管理備用碼", "xloc": [ "default-mobile.handlebars->11->79", - "default.handlebars->41->220" + "default.handlebars->41->221" ] }, { @@ -38527,10 +38556,10 @@ "zh-chs": "管理设备组计算机", "zh-cht": "管理裝置群電腦", "xloc": [ - "default-mobile.handlebars->11->660", - "default-mobile.handlebars->11->680", - "default.handlebars->41->2032", - "default.handlebars->41->2070" + "default-mobile.handlebars->11->661", + "default-mobile.handlebars->11->681", + "default.handlebars->41->2038", + "default.handlebars->41->2076" ] }, { @@ -38555,10 +38584,10 @@ "zh-chs": "管理设备组用户", "zh-cht": "管理裝置群用戶", "xloc": [ - "default-mobile.handlebars->11->659", - "default-mobile.handlebars->11->679", - "default.handlebars->41->2031", - "default.handlebars->41->2069" + "default-mobile.handlebars->11->660", + "default-mobile.handlebars->11->680", + "default.handlebars->41->2037", + "default.handlebars->41->2075" ] }, { @@ -38583,7 +38612,7 @@ "zh-chs": "管理设备", "zh-cht": "管理裝置", "xloc": [ - "default.handlebars->41->1015" + "default.handlebars->41->1020" ] }, { @@ -38608,7 +38637,7 @@ "zh-chs": "管理录音", "zh-cht": "管理錄音", "xloc": [ - "default.handlebars->41->2483" + "default.handlebars->41->2489" ] }, { @@ -38633,7 +38662,7 @@ "zh-chs": "管理安全密钥", "zh-cht": "管理安全密鑰", "xloc": [ - "default.handlebars->41->228" + "default.handlebars->41->229" ] }, { @@ -38658,7 +38687,7 @@ "zh-chs": "管理用户组", "zh-cht": "管理用戶群", "xloc": [ - "default.handlebars->41->2482" + "default.handlebars->41->2488" ] }, { @@ -38683,8 +38712,8 @@ "zh-chs": "管理用户", "zh-cht": "管理用戶", "xloc": [ - "default.handlebars->41->1014", - "default.handlebars->41->2481" + "default.handlebars->41->1019", + "default.handlebars->41->2487" ] }, { @@ -38864,7 +38893,7 @@ "zh-chs": "使用软件代理进行管理", "zh-cht": "使用軟體代理進行管理", "xloc": [ - "default.handlebars->41->1798" + "default.handlebars->41->1804" ] }, { @@ -38889,8 +38918,8 @@ "zh-chs": "使用软件代理进行管理", "zh-cht": "使用軟體代理進行管理", "xloc": [ - "default-mobile.handlebars->11->622", - "default.handlebars->41->1852" + "default-mobile.handlebars->11->623", + "default.handlebars->41->1858" ] }, { @@ -38915,7 +38944,7 @@ "zh-chs": "经理", "zh-cht": "經理", "xloc": [ - "default.handlebars->41->2402" + "default.handlebars->41->2408" ] }, { @@ -38984,7 +39013,7 @@ "zh-chs": "毛利文", "zh-cht": "毛利文", "xloc": [ - "default.handlebars->41->1651" + "default.handlebars->41->1657" ] }, { @@ -39077,7 +39106,7 @@ "zh-chs": "马拉地文", "zh-cht": "馬拉地文", "xloc": [ - "default.handlebars->41->1652" + "default.handlebars->41->1658" ] }, { @@ -39102,7 +39131,7 @@ "zh-chs": "达到连接数量上限", "zh-cht": "達到連接數量上限", "xloc": [ - "default.handlebars->41->2905" + "default.handlebars->41->2911" ] }, { @@ -39113,7 +39142,7 @@ "pt-br": "Máximo de teclas atingido.", "ru": "Достигнуто максимальное количество ключей.", "xloc": [ - "default.handlebars->41->227" + "default.handlebars->41->228" ] }, { @@ -39193,8 +39222,8 @@ "zh-chs": "Megabyte", "zh-cht": "Megabyte", "xloc": [ - "default.handlebars->41->2946", - "default.handlebars->41->2951" + "default.handlebars->41->2952", + "default.handlebars->41->2957" ] }, { @@ -39219,9 +39248,9 @@ "zh-chs": "记忆体", "zh-cht": "記憶體", "xloc": [ - "default-mobile.handlebars->11->595", - "default.handlebars->41->1477", - "default.handlebars->41->2925", + "default-mobile.handlebars->11->596", + "default.handlebars->41->1483", + "default.handlebars->41->2931", "default.handlebars->container->column_l->p40->3->1->p40type->3" ] }, @@ -39251,16 +39280,16 @@ "default-mobile.handlebars->11->342", "default-mobile.handlebars->11->534", "default-mobile.handlebars->11->542", - "default.handlebars->41->1406", - "default.handlebars->41->1414", - "default.handlebars->41->554", - "default.handlebars->41->558", - "default.handlebars->41->569", - "default.handlebars->41->582", - "default.handlebars->41->585", - "default.handlebars->41->591", - "default.handlebars->41->800", - "default.handlebars->41->868" + "default.handlebars->41->1411", + "default.handlebars->41->1419", + "default.handlebars->41->555", + "default.handlebars->41->559", + "default.handlebars->41->570", + "default.handlebars->41->583", + "default.handlebars->41->586", + "default.handlebars->41->592", + "default.handlebars->41->801", + "default.handlebars->41->869" ] }, { @@ -39285,8 +39314,8 @@ "zh-chs": "网格代理控制台", "zh-cht": "網格代理控制台", "xloc": [ - "default-mobile.handlebars->11->667", - "default.handlebars->41->2041" + "default-mobile.handlebars->11->668", + "default.handlebars->41->2047" ] }, { @@ -39355,7 +39384,7 @@ "zh-chs": "网格中继", "zh-cht": "Mesh Relay", "xloc": [ - "default.handlebars->41->874" + "default.handlebars->41->875" ] }, { @@ -39380,9 +39409,9 @@ "zh-chs": "已连接网状代理并准备使用。", "zh-cht": "已連接Mesh Agent並準備使用。", "xloc": [ - "default.handlebars->41->375", - "default.handlebars->41->627", - "default.handlebars->41->867" + "default.handlebars->41->376", + "default.handlebars->41->628", + "default.handlebars->41->868" ] }, { @@ -39407,9 +39436,9 @@ "zh-chs": "网格代理可以经过其他代理作为中继访问得到。", "zh-cht": "Mesh Agent可以經過其他代理作為中繼訪問得到。", "xloc": [ - "default.handlebars->41->381", - "default.handlebars->41->633", - "default.handlebars->41->873" + "default.handlebars->41->382", + "default.handlebars->41->634", + "default.handlebars->41->874" ] }, { @@ -39434,8 +39463,8 @@ "zh-chs": "MeshAction(.txt)", "zh-cht": "MeshAction(.txt)", "xloc": [ - "default.handlebars->41->1174", - "default.handlebars->41->1176" + "default.handlebars->41->1179", + "default.handlebars->41->1181" ] }, { @@ -39460,7 +39489,7 @@ "zh-chs": "MeshAgent流量", "zh-cht": "MeshAgent流量", "xloc": [ - "default.handlebars->41->2963" + "default.handlebars->41->2969" ] }, { @@ -39485,7 +39514,7 @@ "zh-chs": "MeshAgent更新", "zh-cht": "MeshAgent更新", "xloc": [ - "default.handlebars->41->2964" + "default.handlebars->41->2970" ] }, { @@ -39530,7 +39559,7 @@ "tr": "Android için MeshCentral Aracısı", "zh-chs": "适用于 Android 的 MeshCentral 代理", "xloc": [ - "default-mobile.handlebars->11->654" + "default-mobile.handlebars->11->655" ] }, { @@ -39554,10 +39583,10 @@ "tr": "MeshCentral Yardımcısı", "zh-chs": "MeshCentral 助手", "xloc": [ - "default.handlebars->41->2107", - "default.handlebars->41->499", - "default.handlebars->41->526", - "default.handlebars->41->538" + "default.handlebars->41->2113", + "default.handlebars->41->500", + "default.handlebars->41->527", + "default.handlebars->41->539" ] }, { @@ -39581,8 +39610,8 @@ "tr": "Windows için MeshCentral Yardımcısı", "zh-chs": "适用于 Windows 的 MeshCentral 助手", "xloc": [ - "default.handlebars->41->574", - "default.handlebars->41->578" + "default.handlebars->41->575", + "default.handlebars->41->579" ] }, { @@ -39627,7 +39656,7 @@ "tr": "MeshCentral Assistant, kullanıcıların yardım istemek için kullanabilecekleri bir Windows aracıdır. \\\"{0}\\\" cihaz grubuna bağlanacak bir sürümü indirmek için aşağıdaki bağlantıyı kullanın.", "zh-chs": "MeshCentral Assistant 是一个 Windows 工具,用户可以使用它来寻求帮助。使用下面的链接下载将连接到设备组 \\\"{0}\\\" 的版本。", "xloc": [ - "default.handlebars->41->573" + "default.handlebars->41->574" ] }, { @@ -39651,7 +39680,7 @@ "tr": "MeshCentral Assistant, kullanıcıların yardım istemek için kullanabilecekleri bir Windows aracıdır. Arka plan aracısını izleyecek bir sürümü indirmek için aşağıdaki bağlantıyı kullanın.", "zh-chs": "MeshCentral Assistant 是一个 Windows 工具,用户可以使用它来寻求帮助。使用下面的链接下载将监控后台代理的版本。", "xloc": [ - "default.handlebars->41->577" + "default.handlebars->41->578" ] }, { @@ -39701,7 +39730,7 @@ "zh-chs": "MeshCentral错误", "zh-cht": "MeshCentral錯誤", "xloc": [ - "default.handlebars->41->1845" + "default.handlebars->41->1851" ] }, { @@ -39726,7 +39755,7 @@ "zh-chs": "MeshCentral路由器", "zh-cht": "MeshCentral Router", "xloc": [ - "default.handlebars->41->1160" + "default.handlebars->41->1165" ] }, { @@ -39771,7 +39800,7 @@ "tr": "MeshCentral Yönlendirici Bağlantıları", "zh-chs": "MeshCentral 路由器链接", "xloc": [ - "default.handlebars->41->324" + "default.handlebars->41->325" ] }, { @@ -39838,7 +39867,7 @@ "zh-chs": "MeshCentral 路由器是Windows工具,用于TCP端口映射。例如,您可以通过该服务器将RDP放入远程设备。", "zh-cht": "MeshCentral Router是Windows工具,用於TCP介面映射。例如,你可以通過該伺服器將RDP放入遠程裝置。", "xloc": [ - "default.handlebars->41->1155" + "default.handlebars->41->1160" ] }, { @@ -39883,8 +39912,8 @@ "zh-chs": "MeshCentral服务器错误", "zh-cht": "MeshCentral伺服器錯誤", "xloc": [ - "default.handlebars->41->189", - "default.handlebars->41->193" + "default.handlebars->41->190", + "default.handlebars->41->194" ] }, { @@ -39909,7 +39938,7 @@ "zh-chs": "MeshCentral服务器同级化", "zh-cht": "MeshCentral伺服器同級化", "xloc": [ - "default.handlebars->41->2962" + "default.handlebars->41->2968" ] }, { @@ -39959,9 +39988,9 @@ "zh-chs": "MeshCentral版本", "zh-cht": "MeshCentral版本", "xloc": [ - "default.handlebars->41->1841", - "default.handlebars->41->186", - "default.handlebars->41->188" + "default.handlebars->41->1847", + "default.handlebars->41->187", + "default.handlebars->41->189" ] }, { @@ -39986,9 +40015,9 @@ "zh-chs": "MeshCmd", "zh-cht": "MeshCmd", "xloc": [ - "default.handlebars->41->1172", - "default.handlebars->41->358", - "default.handlebars->41->920" + "default.handlebars->41->1177", + "default.handlebars->41->359", + "default.handlebars->41->921" ] }, { @@ -40013,7 +40042,7 @@ "zh-chs": "MeshCmd(Linux ARM,32位)", "zh-cht": "MeshCmd(Linux ARM,32位)", "xloc": [ - "default.handlebars->41->1184" + "default.handlebars->41->1189" ] }, { @@ -40038,7 +40067,7 @@ "zh-chs": "MeshCmd(Linux ARM,64位)", "zh-cht": "MeshCmd(Linux ARM,64位)", "xloc": [ - "default.handlebars->41->1185" + "default.handlebars->41->1190" ] }, { @@ -40063,7 +40092,7 @@ "zh-chs": "MeshCmd(Linux x86,32bit)", "zh-cht": "MeshCmd(Linux x86,32bit)", "xloc": [ - "default.handlebars->41->1180" + "default.handlebars->41->1185" ] }, { @@ -40088,7 +40117,7 @@ "zh-chs": "MeshCmd(Linux x86,64位)", "zh-cht": "MeshCmd(Linux x86,64位)", "xloc": [ - "default.handlebars->41->1181" + "default.handlebars->41->1186" ] }, { @@ -40113,7 +40142,7 @@ "zh-chs": "MeshCmd(Win32可执行档案)", "zh-cht": "MeshCmd(Win32可執行檔案)", "xloc": [ - "default.handlebars->41->1178" + "default.handlebars->41->1183" ] }, { @@ -40138,7 +40167,7 @@ "zh-chs": "MeshCmd(Win64可执行档案)", "zh-cht": "MeshCmd(Win64可執行檔案)", "xloc": [ - "default.handlebars->41->1179" + "default.handlebars->41->1184" ] }, { @@ -40185,7 +40214,7 @@ "zh-chs": "MeshCmd(macOS,ARM-64位)", "zh-cht": "MeshCmd(macOS,ARM-64位)", "xloc": [ - "default.handlebars->41->1183" + "default.handlebars->41->1188" ] }, { @@ -40210,7 +40239,7 @@ "zh-chs": "MeshCmd(macOS,x86-ARM-64位)", "zh-cht": "MeshCmd(macOS,x86-ARM-64位)", "xloc": [ - "default.handlebars->41->1182" + "default.handlebars->41->1187" ] }, { @@ -40235,7 +40264,7 @@ "zh-chs": "MeshCmd是一个可以执行许多不同操作的命令行工具。可以选择下载和编辑操作档案以提供服务器信息和凭据。", "zh-cht": "MeshCmd是一個可以執行許多不同操作的命令行工具。可以選擇下載和編輯操作檔案以提供伺服器訊息和憑據。", "xloc": [ - "default.handlebars->41->1169" + "default.handlebars->41->1174" ] }, { @@ -40329,10 +40358,10 @@ "zh-chs": "消息", "zh-cht": "訊息", "xloc": [ - "default.handlebars->41->1135", - "default.handlebars->41->2807", - "default.handlebars->41->511", - "default.handlebars->41->899" + "default.handlebars->41->1140", + "default.handlebars->41->2813", + "default.handlebars->41->512", + "default.handlebars->41->900" ] }, { @@ -40357,7 +40386,7 @@ "zh-chs": "留言框", "zh-cht": "留言框", "xloc": [ - "default.handlebars->41->685" + "default.handlebars->41->686" ] }, { @@ -40382,7 +40411,7 @@ "zh-chs": "消息调度器", "zh-cht": "電郵調度器", "xloc": [ - "default.handlebars->41->2960" + "default.handlebars->41->2966" ] }, { @@ -40456,8 +40485,8 @@ "tr": "haberci", "zh-chs": "信使", "xloc": [ - "default.handlebars->41->2750", - "default.handlebars->41->2816" + "default.handlebars->41->2756", + "default.handlebars->41->2822" ] }, { @@ -40599,7 +40628,7 @@ "zh-chs": "移动设备", "xloc": [ "default-mobile.handlebars->11->548", - "default.handlebars->41->1420" + "default.handlebars->41->1425" ] }, { @@ -40623,7 +40652,7 @@ "tr": "Mobil cihaz", "zh-chs": "移动设备", "xloc": [ - "default.handlebars->41->537" + "default.handlebars->41->538" ] }, { @@ -40649,10 +40678,10 @@ "zh-cht": "模型", "xloc": [ "default-mobile.handlebars->11->543", - "default-mobile.handlebars->11->596", - "default.handlebars->41->1415", - "default.handlebars->41->1478", - "default.handlebars->41->1802" + "default-mobile.handlebars->11->597", + "default.handlebars->41->1420", + "default.handlebars->41->1484", + "default.handlebars->41->1808" ] }, { @@ -40677,7 +40706,7 @@ "zh-chs": "修改节点位置", "zh-cht": "修改節點位置", "xloc": [ - "default.handlebars->41->750" + "default.handlebars->41->751" ] }, { @@ -40702,7 +40731,7 @@ "zh-chs": "摩尔达维亚文", "zh-cht": "摩爾達維亞文", "xloc": [ - "default.handlebars->41->1653" + "default.handlebars->41->1659" ] }, { @@ -40749,8 +40778,8 @@ "zh-chs": "母板", "zh-cht": "母板", "xloc": [ - "default-mobile.handlebars->11->589", - "default.handlebars->41->1471" + "default-mobile.handlebars->11->590", + "default.handlebars->41->1477" ] }, { @@ -40775,7 +40804,7 @@ "zh-chs": "将此设备移到其他设备组", "zh-cht": "將此裝置移至其他裝置群", "xloc": [ - "default.handlebars->41->911" + "default.handlebars->41->912" ] }, { @@ -40800,7 +40829,7 @@ "zh-chs": "移至设备组", "zh-cht": "移至裝置群", "xloc": [ - "default.handlebars->41->642" + "default.handlebars->41->643" ] }, { @@ -40825,7 +40854,7 @@ "zh-chs": "移动:“{0}”到“{1}”", "zh-cht": "移動:“{0}”到“{1}”", "xloc": [ - "default.handlebars->41->2248" + "default.handlebars->41->2254" ] }, { @@ -40850,7 +40879,7 @@ "zh-chs": "将设备{0}移动到组{1}", "zh-cht": "將設備{0}移動到組{1}", "xloc": [ - "default.handlebars->41->2281" + "default.handlebars->41->2287" ] }, { @@ -40899,8 +40928,8 @@ "tr": "Birden Çok Sorun", "zh-chs": "多个问题", "xloc": [ - "default.handlebars->41->2136", - "default.handlebars->41->2150" + "default.handlebars->41->2142", + "default.handlebars->41->2156" ] }, { @@ -40946,7 +40975,7 @@ "zh-chs": "多路复用器", "zh-cht": "多工器", "xloc": [ - "default.handlebars->41->2768" + "default.handlebars->41->2774" ] }, { @@ -40971,8 +41000,8 @@ "zh-chs": "必须以用户身份运行", "zh-cht": "必須以用戶身份運行", "xloc": [ - "default.handlebars->41->1115", - "default.handlebars->41->673" + "default.handlebars->41->1120", + "default.handlebars->41->674" ] }, { @@ -41155,7 +41184,7 @@ "zh-chs": "我的服务器控制台", "zh-cht": "我的伺服器控制台", "xloc": [ - "default.handlebars->41->1484" + "default.handlebars->41->1490" ] }, { @@ -41357,8 +41386,8 @@ "zh-chs": "我的密钥", "zh-cht": "我的密鍵", "xloc": [ - "default.handlebars->41->1528", - "default.handlebars->41->1531" + "default.handlebars->41->1534", + "default.handlebars->41->1537" ] }, { @@ -41368,7 +41397,7 @@ "ru": "NLA не поддерживается", "fr": "NLA non supporté", "xloc": [ - "default.handlebars->41->1204" + "default.handlebars->41->1209" ] }, { @@ -41453,7 +41482,7 @@ "zh-chs": "导航到下面的URL,授予访问权限并将令牌代码复制回去。", "zh-cht": "導航到下面的URL,授予訪問權限並將令牌代碼複製回去。", "xloc": [ - "default.handlebars->41->300" + "default.handlebars->41->301" ] }, { @@ -41481,28 +41510,28 @@ "default-mobile.handlebars->11->128", "default-mobile.handlebars->11->272", "default-mobile.handlebars->11->509", - "default-mobile.handlebars->11->583", - "default-mobile.handlebars->11->627", - "default-mobile.handlebars->11->650", - "default.handlebars->41->1263", - "default.handlebars->41->1279", - "default.handlebars->41->1398", - "default.handlebars->41->1465", - "default.handlebars->41->147", - "default.handlebars->41->161", - "default.handlebars->41->1792", - "default.handlebars->41->1820", - "default.handlebars->41->1825", - "default.handlebars->41->1857", - "default.handlebars->41->1991", - "default.handlebars->41->2383", - "default.handlebars->41->2492", - "default.handlebars->41->2508", - "default.handlebars->41->2515", - "default.handlebars->41->2565", - "default.handlebars->41->2584", - "default.handlebars->41->313", - "default.handlebars->41->779", + "default-mobile.handlebars->11->584", + "default-mobile.handlebars->11->628", + "default-mobile.handlebars->11->651", + "default.handlebars->41->1268", + "default.handlebars->41->1284", + "default.handlebars->41->1403", + "default.handlebars->41->1471", + "default.handlebars->41->148", + "default.handlebars->41->162", + "default.handlebars->41->1798", + "default.handlebars->41->1826", + "default.handlebars->41->1831", + "default.handlebars->41->1863", + "default.handlebars->41->1997", + "default.handlebars->41->2389", + "default.handlebars->41->2498", + "default.handlebars->41->2514", + "default.handlebars->41->2521", + "default.handlebars->41->2571", + "default.handlebars->41->2590", + "default.handlebars->41->314", + "default.handlebars->41->780", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->3", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->3", "default.handlebars->container->column_l->p42->p42tbl->1->0->2" @@ -41530,7 +41559,7 @@ "zh-chs": "名称(可选)", "zh-cht": "名稱(可選)", "xloc": [ - "default.handlebars->41->490" + "default.handlebars->41->491" ] }, { @@ -41555,7 +41584,7 @@ "zh-chs": "名称1,名称2,名称3", "zh-cht": "名稱1,名稱2,名稱3", "xloc": [ - "default.handlebars->41->2473" + "default.handlebars->41->2479" ] }, { @@ -41580,7 +41609,7 @@ "zh-chs": "纳瓦霍文", "zh-cht": "納瓦霍文", "xloc": [ - "default.handlebars->41->1654" + "default.handlebars->41->1660" ] }, { @@ -41605,7 +41634,7 @@ "zh-chs": "恩东加", "zh-cht": "恩東加", "xloc": [ - "default.handlebars->41->1655" + "default.handlebars->41->1661" ] }, { @@ -41630,7 +41659,7 @@ "zh-chs": "尼泊尔文", "zh-cht": "尼泊爾文", "xloc": [ - "default.handlebars->41->1656" + "default.handlebars->41->1662" ] }, { @@ -41655,7 +41684,7 @@ "zh-chs": "网络接口", "zh-cht": "網絡介面", "xloc": [ - "default.handlebars->41->1153" + "default.handlebars->41->1158" ] }, { @@ -41703,8 +41732,8 @@ "zh-cht": "網路", "xloc": [ "default-mobile.handlebars->11->562", - "default.handlebars->41->1430", - "default.handlebars->41->1444" + "default.handlebars->41->1435", + "default.handlebars->41->1449" ] }, { @@ -41730,7 +41759,7 @@ "zh-cht": "新", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1->1", - "default.handlebars->41->1819", + "default.handlebars->41->1825", "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1->1" ] }, @@ -41756,7 +41785,7 @@ "zh-chs": "生成新的2FA备份代码", "zh-cht": "生成新的2FA備份代碼", "xloc": [ - "default.handlebars->41->2288" + "default.handlebars->41->2294" ] }, { @@ -41780,8 +41809,8 @@ "tr": "Yeni hesap", "zh-chs": "新账户", "xloc": [ - "default-mobile.handlebars->11->708", - "default.handlebars->41->2856" + "default-mobile.handlebars->11->709", + "default.handlebars->41->2862" ] }, { @@ -41854,9 +41883,9 @@ "zh-cht": "新裝置群", "xloc": [ "default-mobile.handlebars->11->122", - "default.handlebars->41->1145", - "default.handlebars->41->1785", - "default.handlebars->41->1808" + "default.handlebars->41->1150", + "default.handlebars->41->1791", + "default.handlebars->41->1814" ] }, { @@ -41883,8 +41912,8 @@ "xloc": [ "default-mobile.handlebars->11->151", "default-mobile.handlebars->11->480", - "default.handlebars->41->1358", - "default.handlebars->41->2180", + "default.handlebars->41->1363", + "default.handlebars->41->2186", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "sharing.handlebars->11->59", @@ -41938,8 +41967,8 @@ "zh-chs": "新密码*", "zh-cht": "新密碼*", "xloc": [ - "default.handlebars->41->471", - "default.handlebars->41->472" + "default.handlebars->41->472", + "default.handlebars->41->473" ] }, { @@ -42009,8 +42038,8 @@ "zh-chs": "新密码*", "zh-cht": "新密碼*", "xloc": [ - "default.handlebars->41->1965", - "default.handlebars->41->1966" + "default.handlebars->41->1971", + "default.handlebars->41->1972" ] }, { @@ -42037,8 +42066,8 @@ "xloc": [ "default-mobile.handlebars->11->117", "default-mobile.handlebars->11->118", - "default.handlebars->41->1780", - "default.handlebars->41->1781" + "default.handlebars->41->1786", + "default.handlebars->41->1787" ] }, { @@ -42109,8 +42138,8 @@ "zh-chs": "没有AMT", "zh-cht": "沒有AMT", "xloc": [ - "default.handlebars->41->1019", - "default.handlebars->41->997" + "default.handlebars->41->1002", + "default.handlebars->41->1024" ] }, { @@ -42136,7 +42165,7 @@ "zh-cht": "沒有有效保安編碼", "xloc": [ "default-mobile.handlebars->11->75", - "default.handlebars->41->215" + "default.handlebars->41->216" ] }, { @@ -42182,7 +42211,7 @@ "tr": "Aracı Konsolu Yok", "zh-chs": "无座席控制台", "xloc": [ - "default.handlebars->41->2674" + "default.handlebars->41->2680" ] }, { @@ -42206,7 +42235,7 @@ "tr": "Konsol Yok", "zh-chs": "没有控制台", "xloc": [ - "default.handlebars->41->2605" + "default.handlebars->41->2611" ] }, { @@ -42233,8 +42262,8 @@ "xloc": [ "default-mobile.handlebars->11->301", "default-mobile.handlebars->11->302", - "default.handlebars->41->814", - "default.handlebars->41->815" + "default.handlebars->41->815", + "default.handlebars->41->816" ] }, { @@ -42259,10 +42288,10 @@ "zh-chs": "没有桌面", "zh-cht": "沒有桌面", "xloc": [ - "default.handlebars->41->1021", - "default.handlebars->41->2077", - "default.handlebars->41->2601", - "default.handlebars->41->999" + "default.handlebars->41->1004", + "default.handlebars->41->1026", + "default.handlebars->41->2083", + "default.handlebars->41->2607" ] }, { @@ -42287,8 +42316,8 @@ "zh-chs": "不能访问桌面", "zh-cht": "不能訪問桌面", "xloc": [ - "default.handlebars->41->2037", - "default.handlebars->41->2670" + "default.handlebars->41->2043", + "default.handlebars->41->2676" ] }, { @@ -42334,9 +42363,9 @@ "zh-chs": "找不到事件", "zh-cht": "找不到事件", "xloc": [ - "default.handlebars->41->1396", - "default.handlebars->41->2359", - "default.handlebars->41->2736" + "default.handlebars->41->1401", + "default.handlebars->41->2365", + "default.handlebars->41->2742" ] }, { @@ -42361,9 +42390,9 @@ "zh-chs": "不能存取档案", "zh-cht": "不能存取檔案", "xloc": [ - "default-mobile.handlebars->11->665", - "default.handlebars->41->2039", - "default.handlebars->41->2673" + "default-mobile.handlebars->11->666", + "default.handlebars->41->2045", + "default.handlebars->41->2679" ] }, { @@ -42388,11 +42417,11 @@ "zh-chs": "没有档案", "zh-cht": "沒有檔案", "xloc": [ - "default-mobile.handlebars->11->688", - "default.handlebars->41->1018", - "default.handlebars->41->2079", - "default.handlebars->41->2604", - "default.handlebars->41->996" + "default-mobile.handlebars->11->689", + "default.handlebars->41->1001", + "default.handlebars->41->1023", + "default.handlebars->41->2085", + "default.handlebars->41->2610" ] }, { @@ -42417,8 +42446,8 @@ "zh-chs": "无输入", "zh-cht": "無輸入", "xloc": [ - "default.handlebars->41->1016", - "default.handlebars->41->994" + "default.handlebars->41->1021", + "default.handlebars->41->999" ] }, { @@ -42443,10 +42472,10 @@ "zh-chs": "没有英特尔®AMT", "zh-cht": "沒有Intel® AMT", "xloc": [ - "default-mobile.handlebars->11->666", - "default-mobile.handlebars->11->689", - "default.handlebars->41->2040", - "default.handlebars->41->2080" + "default-mobile.handlebars->11->667", + "default-mobile.handlebars->11->690", + "default.handlebars->41->2046", + "default.handlebars->41->2086" ] }, { @@ -42470,7 +42499,7 @@ "tr": "Bu cihaz grubunda Intel® AMT cihazı yok", "zh-chs": "此设备组中没有英特尔® AMT 设备", "xloc": [ - "default.handlebars->41->339" + "default.handlebars->41->340" ] }, { @@ -42542,7 +42571,7 @@ "zh-chs": "未配置任何键", "zh-cht": "未配置任何鍵", "xloc": [ - "default.handlebars->41->223" + "default.handlebars->41->224" ] }, { @@ -42567,7 +42596,7 @@ "zh-chs": "没有成员", "zh-cht": "沒有成員", "xloc": [ - "default.handlebars->41->2545" + "default.handlebars->41->2551" ] }, { @@ -42592,7 +42621,7 @@ "zh-chs": "没有新的设备组", "zh-cht": "沒有新的裝置群", "xloc": [ - "default.handlebars->41->2486" + "default.handlebars->41->2492" ] }, { @@ -42612,7 +42641,7 @@ "ru": "Запретить добавление новых устройств", "tr": "Yeni Cihaz Yok", "xloc": [ - "default.handlebars->41->2487" + "default.handlebars->41->2493" ] }, { @@ -42637,8 +42666,8 @@ "zh-chs": "没有政策", "zh-cht": "沒有政策", "xloc": [ - "default.handlebars->41->1896", - "default.handlebars->41->1956" + "default.handlebars->41->1902", + "default.handlebars->41->1962" ] }, { @@ -42679,8 +42708,8 @@ "ru": "Нет доступа к выполнению команд", "tr": "Uzaktan Komut Yok", "xloc": [ - "default.handlebars->41->2607", - "default.handlebars->41->2676" + "default.handlebars->41->2613", + "default.handlebars->41->2682" ] }, { @@ -42700,8 +42729,8 @@ "ru": "Нет доступа к удаленному управлению", "tr": "Uzaktan Kumanda Yok", "xloc": [ - "default.handlebars->41->2600", - "default.handlebars->41->2669" + "default.handlebars->41->2606", + "default.handlebars->41->2675" ] }, { @@ -42721,8 +42750,8 @@ "ru": "Нет доступа к перезагрузке/выключению", "tr": "Sıfırlama/Kapatma Yok", "xloc": [ - "default.handlebars->41->2609", - "default.handlebars->41->2678" + "default.handlebars->41->2615", + "default.handlebars->41->2684" ] }, { @@ -42748,12 +42777,12 @@ "zh-cht": "沒有權利", "xloc": [ "default-mobile.handlebars->11->137", - "default-mobile.handlebars->11->641", - "default-mobile.handlebars->11->696", - "default.handlebars->41->1011", - "default.handlebars->41->1033", - "default.handlebars->41->1817", - "default.handlebars->41->2089" + "default-mobile.handlebars->11->642", + "default-mobile.handlebars->11->697", + "default.handlebars->41->1016", + "default.handlebars->41->1038", + "default.handlebars->41->1823", + "default.handlebars->41->2095" ] }, { @@ -42800,8 +42829,8 @@ "zh-cht": "沒有TLS加密", "xloc": [ "default-mobile.handlebars->11->389", - "default.handlebars->41->1131", - "default.handlebars->41->462" + "default.handlebars->41->1136", + "default.handlebars->41->463" ] }, { @@ -42826,11 +42855,11 @@ "zh-chs": "没有终端", "zh-cht": "沒有終端", "xloc": [ - "default-mobile.handlebars->11->687", - "default.handlebars->41->1017", - "default.handlebars->41->2078", - "default.handlebars->41->2603", - "default.handlebars->41->995" + "default-mobile.handlebars->11->688", + "default.handlebars->41->1000", + "default.handlebars->41->1022", + "default.handlebars->41->2084", + "default.handlebars->41->2609" ] }, { @@ -42855,9 +42884,9 @@ "zh-chs": "不能访问终端", "zh-cht": "不能訪問終端", "xloc": [ - "default-mobile.handlebars->11->664", - "default.handlebars->41->2038", - "default.handlebars->41->2672" + "default-mobile.handlebars->11->665", + "default.handlebars->41->2044", + "default.handlebars->41->2678" ] }, { @@ -42882,7 +42911,7 @@ "zh-chs": "没有工具(MeshCmd /路由器)", "zh-cht": "沒有工具(MeshCmd /路由器)", "xloc": [ - "default.handlebars->41->2488" + "default.handlebars->41->2494" ] }, { @@ -42902,8 +42931,8 @@ "ru": "Нет доступа к удалению", "tr": "Kaldırma Yok", "xloc": [ - "default.handlebars->41->2606", - "default.handlebars->41->2675" + "default.handlebars->41->2612", + "default.handlebars->41->2681" ] }, { @@ -42923,8 +42952,8 @@ "ru": "Нет доступа к пробуждению", "tr": "Uyanmak yok", "xloc": [ - "default.handlebars->41->2608", - "default.handlebars->41->2677" + "default.handlebars->41->2614", + "default.handlebars->41->2683" ] }, { @@ -42950,7 +42979,7 @@ "zh-cht": "該設備當前無可用操作。", "xloc": [ "default-mobile.handlebars->11->372", - "default.handlebars->41->1107" + "default.handlebars->41->1112" ] }, { @@ -42981,9 +43010,9 @@ "ru": "Устройства без агента, ретранслируемые через агент", "fr": "Aucun agent d'appareil relayé au travers de l'agent", "xloc": [ - "default-mobile.handlebars->11->624", - "default.handlebars->41->1794", - "default.handlebars->41->1854" + "default-mobile.handlebars->11->625", + "default.handlebars->41->1800", + "default.handlebars->41->1860" ] }, { @@ -43007,8 +43036,8 @@ "tr": "Otomatik güncelleme yok", "zh-chs": "没有自动更新", "xloc": [ - "default.handlebars->41->2134", - "default.handlebars->41->2148" + "default.handlebars->41->2140", + "default.handlebars->41->2154" ] }, { @@ -43033,8 +43062,8 @@ "zh-chs": "没有共同的设备组", "zh-cht": "沒有共同的裝置群", "xloc": [ - "default.handlebars->41->2551", - "default.handlebars->41->2704" + "default.handlebars->41->2557", + "default.handlebars->41->2710" ] }, { @@ -43112,7 +43141,7 @@ "zh-chs": "没有一个设备被加入任何一组,请单击一个设备的“组”以添加到一个组中。", "zh-cht": "沒有一個裝置被加入任何一群,請單擊一個裝置的“群”以新增到一個群中。", "xloc": [ - "default.handlebars->41->336" + "default.handlebars->41->337" ] }, { @@ -43159,7 +43188,7 @@ "zh-chs": "找不到设备。", "zh-cht": "找不到裝置。", "xloc": [ - "default.handlebars->41->767" + "default.handlebars->41->768" ] }, { @@ -43184,8 +43213,8 @@ "zh-chs": "没有共同的设备", "zh-cht": "沒有共同的裝置", "xloc": [ - "default.handlebars->41->2557", - "default.handlebars->41->2716" + "default.handlebars->41->2563", + "default.handlebars->41->2722" ] }, { @@ -43209,8 +43238,8 @@ "tr": "Bu cihaz grubunda cihaz yok", "zh-chs": "此设备组中没有设备", "xloc": [ - "default.handlebars->41->341", - "default.handlebars->41->345" + "default.handlebars->41->342", + "default.handlebars->41->346" ] }, { @@ -43235,7 +43264,7 @@ "zh-chs": "该设备组中没有设备。", "zh-cht": "該裝置群中沒有裝置。", "xloc": [ - "default.handlebars->41->2152" + "default.handlebars->41->2158" ] }, { @@ -43287,7 +43316,7 @@ "xloc": [ "default-mobile.handlebars->11->188", "default-mobile.handlebars->11->192", - "default.handlebars->41->337" + "default.handlebars->41->338" ] }, { @@ -43312,7 +43341,7 @@ "zh-chs": "找不到带有标签的设备。", "zh-cht": "找不到帶有標籤的裝置。", "xloc": [ - "default.handlebars->41->354" + "default.handlebars->41->355" ] }, { @@ -43337,7 +43366,7 @@ "zh-chs": "找不到文件", "zh-cht": "找不到文件", "xloc": [ - "default.handlebars->41->1339", + "default.handlebars->41->1344", "sharing.handlebars->11->45" ] }, @@ -43363,7 +43392,7 @@ "zh-chs": "找不到群组。", "zh-cht": "找不到群組。", "xloc": [ - "default.handlebars->41->2491" + "default.handlebars->41->2497" ] }, { @@ -43388,8 +43417,8 @@ "zh-chs": "没有此设备的讯息。", "zh-cht": "沒有此裝置的訊息。", "xloc": [ - "default-mobile.handlebars->11->601", - "default.handlebars->41->1483" + "default-mobile.handlebars->11->602", + "default.handlebars->41->1489" ] }, { @@ -43413,7 +43442,7 @@ "tr": "bilgi verilmedi", "zh-chs": "未提供信息", "xloc": [ - "default.handlebars->41->138" + "default.handlebars->41->139" ] }, { @@ -43438,7 +43467,7 @@ "zh-chs": "未定义键盘快捷键", "xloc": [ "default-mobile.handlebars->11->439", - "default.handlebars->41->1262" + "default.handlebars->41->1267" ] }, { @@ -43458,7 +43487,7 @@ "ru": "Клавиатурные строки не заданны", "tr": "Tanımlanmış klavye dizesi yok", "xloc": [ - "default.handlebars->41->1267" + "default.handlebars->41->1272" ] }, { @@ -43507,7 +43536,7 @@ "tr": "Bu cihaz grubunda yerel cihaz yok", "zh-chs": "此设备组中没有本地设备", "xloc": [ - "default.handlebars->41->343" + "default.handlebars->41->344" ] }, { @@ -43532,7 +43561,7 @@ "zh-chs": "找不到位置。", "zh-cht": "找不到位置。", "xloc": [ - "default.handlebars->41->769" + "default.handlebars->41->770" ] }, { @@ -43542,7 +43571,7 @@ "ru": "Больше не является ретранслятором для \\\"{0}\\\".", "fr": "Plus de relais pour \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2348" + "default.handlebars->41->2354" ] }, { @@ -43567,7 +43596,7 @@ "zh-chs": "没有适用于此设备的网络接口讯息。", "zh-cht": "沒有適用於此裝置的網絡介面訊息。", "xloc": [ - "default.handlebars->41->177" + "default.handlebars->41->178" ] }, { @@ -43592,7 +43621,7 @@ "zh-chs": "没有其他相同类型的设备组。", "zh-cht": "沒有其他相同類型的裝置群。", "xloc": [ - "default.handlebars->41->1148" + "default.handlebars->41->1153" ] }, { @@ -43616,8 +43645,8 @@ "tr": "Bu kullanıcı için telefon numarası yok", "zh-chs": "此用户没有电话号码", "xloc": [ - "default-mobile.handlebars->11->739", - "default.handlebars->41->2887" + "default-mobile.handlebars->11->740", + "default.handlebars->41->2893" ] }, { @@ -43667,7 +43696,7 @@ "zh-chs": "没有录音。", "zh-cht": "沒有錄音。", "xloc": [ - "default.handlebars->41->2738" + "default.handlebars->41->2744" ] }, { @@ -43677,8 +43706,8 @@ "ru": "Нет доступных устройств-релеев.", "fr": "Pas d'appareil relais disponible.", "xloc": [ - "default-mobile.handlebars->11->647", - "default.handlebars->41->1988" + "default-mobile.handlebars->11->648", + "default.handlebars->41->1994" ] }, { @@ -43724,7 +43753,7 @@ "zh-chs": "没有服务器权限", "zh-cht": "沒有伺服器權限", "xloc": [ - "default.handlebars->41->2579" + "default.handlebars->41->2585" ] }, { @@ -43770,7 +43799,7 @@ "zh-chs": "没有用户组成员身份", "zh-cht": "沒有用戶群成員身份", "xloc": [ - "default.handlebars->41->2710" + "default.handlebars->41->2716" ] }, { @@ -43794,8 +43823,8 @@ "tr": "Kullanıcı yönetimi hakları yok", "zh-chs": "无用户管理权限", "xloc": [ - "default-mobile.handlebars->11->737", - "default.handlebars->41->2885" + "default-mobile.handlebars->11->738", + "default.handlebars->41->2891" ] }, { @@ -43820,7 +43849,7 @@ "zh-chs": "未找到相应的用户。", "zh-cht": "未找到相應的用戶。", "xloc": [ - "default.handlebars->41->2391" + "default.handlebars->41->2397" ] }, { @@ -43845,7 +43874,7 @@ "zh-chs": "没有拥有特殊设备权限的用户", "zh-cht": "沒有擁有特殊裝置權限的用戶", "xloc": [ - "default.handlebars->41->960" + "default.handlebars->41->965" ] }, { @@ -43920,7 +43949,7 @@ "tr": "Disk belleği olmayan bellek", "zh-chs": "非分页内存", "xloc": [ - "default.handlebars->41->130" + "default.handlebars->41->131" ] }, { @@ -43954,40 +43983,40 @@ "default-mobile.handlebars->11->319", "default-mobile.handlebars->11->429", "default-mobile.handlebars->11->477", - "default-mobile.handlebars->11->629", - "default.handlebars->41->1251", - "default.handlebars->41->1848", - "default.handlebars->41->1859", - "default.handlebars->41->1873", - "default.handlebars->41->1885", - "default.handlebars->41->1892", - "default.handlebars->41->1894", - "default.handlebars->41->1944", - "default.handlebars->41->2137", - "default.handlebars->41->2162", - "default.handlebars->41->2167", - "default.handlebars->41->2367", - "default.handlebars->41->2512", - "default.handlebars->41->2514", - "default.handlebars->41->2522", - "default.handlebars->41->2534", - "default.handlebars->41->257", - "default.handlebars->41->2598", - "default.handlebars->41->2610", - "default.handlebars->41->2620", - "default.handlebars->41->2624", - "default.handlebars->41->2636", - "default.handlebars->41->2831", - "default.handlebars->41->285", - "default.handlebars->41->367", + "default-mobile.handlebars->11->630", + "default.handlebars->41->1256", + "default.handlebars->41->1854", + "default.handlebars->41->1865", + "default.handlebars->41->1879", + "default.handlebars->41->1891", + "default.handlebars->41->1898", + "default.handlebars->41->1900", + "default.handlebars->41->1950", + "default.handlebars->41->2143", + "default.handlebars->41->2168", + "default.handlebars->41->2173", + "default.handlebars->41->2373", + "default.handlebars->41->2518", + "default.handlebars->41->2520", + "default.handlebars->41->2528", + "default.handlebars->41->2540", + "default.handlebars->41->258", + "default.handlebars->41->2604", + "default.handlebars->41->2616", + "default.handlebars->41->2626", + "default.handlebars->41->2630", + "default.handlebars->41->2642", + "default.handlebars->41->2837", + "default.handlebars->41->286", "default.handlebars->41->368", - "default.handlebars->41->776", - "default.handlebars->41->787", + "default.handlebars->41->369", + "default.handlebars->41->777", "default.handlebars->41->788", + "default.handlebars->41->789", "default.handlebars->41->82", - "default.handlebars->41->858", - "default.handlebars->41->865", - "default.handlebars->41->878", + "default.handlebars->41->859", + "default.handlebars->41->866", + "default.handlebars->41->879", "default.handlebars->container->column_l->p41->3->3->p41traceStatus" ] }, @@ -44059,7 +44088,7 @@ "zh-chs": "挪威文", "zh-cht": "挪威文", "xloc": [ - "default.handlebars->41->1657" + "default.handlebars->41->1663" ] }, { @@ -44084,7 +44113,7 @@ "zh-chs": "挪威文(Bokmal)", "zh-cht": "挪威文(Bokmal)", "xloc": [ - "default.handlebars->41->1658" + "default.handlebars->41->1664" ] }, { @@ -44109,7 +44138,7 @@ "zh-chs": "挪威文(尼诺斯克)", "zh-cht": "挪威文(尼諾斯克)", "xloc": [ - "default.handlebars->41->1659" + "default.handlebars->41->1665" ] }, { @@ -44134,7 +44163,7 @@ "zh-chs": "未激活", "zh-cht": "未激活", "xloc": [ - "default.handlebars->41->1447" + "default.handlebars->41->1452" ] }, { @@ -44161,7 +44190,7 @@ "xloc": [ "default-mobile.handlebars->11->291", "default-mobile.handlebars->11->566", - "default.handlebars->41->802" + "default.handlebars->41->803" ] }, { @@ -44188,7 +44217,7 @@ "xloc": [ "default-mobile.handlebars->11->290", "default-mobile.handlebars->11->565", - "default.handlebars->41->801" + "default.handlebars->41->802" ] }, { @@ -44213,8 +44242,8 @@ "zh-chs": "未连接", "zh-cht": "未連接", "xloc": [ - "default.handlebars->41->2128", - "default.handlebars->41->2141" + "default.handlebars->41->2134", + "default.handlebars->41->2147" ] }, { @@ -44240,7 +44269,7 @@ "zh-cht": "未知", "xloc": [ "default-mobile.handlebars->11->576", - "default.handlebars->41->1458" + "default.handlebars->41->1463" ] }, { @@ -44264,7 +44293,7 @@ "tr": "İzin verilmez, yalnızca görüntüleme", "zh-chs": "不允许,只能查看", "xloc": [ - "default.handlebars->41->269" + "default.handlebars->41->270" ] }, { @@ -44289,7 +44318,7 @@ "zh-chs": "不在服务器上", "zh-cht": "不在伺服器上", "xloc": [ - "default.handlebars->41->2760" + "default.handlebars->41->2766" ] }, { @@ -44314,8 +44343,8 @@ "zh-chs": "没有设置", "zh-cht": "沒有設置", "xloc": [ - "default.handlebars->41->2585", - "default.handlebars->41->2586" + "default.handlebars->41->2591", + "default.handlebars->41->2592" ] }, { @@ -44340,7 +44369,7 @@ "zh-chs": "未经审核的", "zh-cht": "未經審核的", "xloc": [ - "default.handlebars->41->2684" + "default.handlebars->41->2690" ] }, { @@ -44367,13 +44396,13 @@ "xloc": [ "default-mobile.handlebars->11->332", "default-mobile.handlebars->11->381", - "default-mobile.handlebars->11->635", - "default.handlebars->41->1005", - "default.handlebars->41->1027", - "default.handlebars->41->1037", - "default.handlebars->41->1904", - "default.handlebars->41->2646", - "default.handlebars->41->895" + "default-mobile.handlebars->11->636", + "default.handlebars->41->1010", + "default.handlebars->41->1032", + "default.handlebars->41->1042", + "default.handlebars->41->1910", + "default.handlebars->41->2652", + "default.handlebars->41->896" ] }, { @@ -44423,9 +44452,9 @@ "zh-chs": "通知设置", "zh-cht": "通知設定", "xloc": [ - "default.handlebars->41->1767", - "default.handlebars->41->2127", - "default.handlebars->41->992", + "default.handlebars->41->1773", + "default.handlebars->41->2133", + "default.handlebars->41->997", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->10" ] }, @@ -44494,7 +44523,7 @@ "zh-chs": "通知音效", "zh-cht": "通知音效", "xloc": [ - "default.handlebars->41->1762" + "default.handlebars->41->1768" ] }, { @@ -44519,8 +44548,8 @@ "zh-chs": "通知", "zh-cht": "通知", "xloc": [ - "default.handlebars->41->1893", - "default.handlebars->41->866" + "default.handlebars->41->1899", + "default.handlebars->41->867" ] }, { @@ -44545,8 +44574,8 @@ "zh-chs": "通知", "zh-cht": "通知", "xloc": [ - "default.handlebars->41->2652", - "default.handlebars->41->282" + "default.handlebars->41->2658", + "default.handlebars->41->283" ] }, { @@ -44571,7 +44600,7 @@ "zh-chs": "仅通知", "zh-cht": "只通知", "xloc": [ - "default.handlebars->41->1086" + "default.handlebars->41->1091" ] }, { @@ -44596,9 +44625,9 @@ "zh-chs": "通知使用者", "zh-cht": "通知使用者", "xloc": [ - "default.handlebars->41->1999", - "default.handlebars->41->2003", - "default.handlebars->41->2006" + "default.handlebars->41->2005", + "default.handlebars->41->2009", + "default.handlebars->41->2012" ] }, { @@ -44623,7 +44652,7 @@ "zh-chs": "通知{0}", "zh-cht": "通知{0}", "xloc": [ - "default.handlebars->41->2431" + "default.handlebars->41->2437" ] }, { @@ -44647,7 +44676,7 @@ "tr": "Boş", "zh-chs": "空值", "xloc": [ - "default.handlebars->41->2954" + "default.handlebars->41->2960" ] }, { @@ -44700,13 +44729,13 @@ "default-mobile.handlebars->11->531", "default-mobile.handlebars->container->page_content->column_l->p10->p10dialog->5", "default-mobile.handlebars->dialog->idx_dlgButtonBar", - "default.handlebars->41->1839", - "default.handlebars->41->2132", - "default.handlebars->41->2146", - "default.handlebars->41->830", - "default.handlebars->41->834", - "default.handlebars->41->838", - "default.handlebars->41->844", + "default.handlebars->41->1845", + "default.handlebars->41->2138", + "default.handlebars->41->2152", + "default.handlebars->41->831", + "default.handlebars->41->835", + "default.handlebars->41->839", + "default.handlebars->41->845", "default.handlebars->container->dialog->idx_dlgButtonBar", "login-mobile.handlebars->dialog->idx_dlgButtonBar", "login.handlebars->dialog->idx_dlgButtonBar", @@ -44738,7 +44767,7 @@ "tr": "işletim sistemi", "zh-chs": "操作系统", "xloc": [ - "default.handlebars->41->348" + "default.handlebars->41->349" ] }, { @@ -44764,7 +44793,7 @@ "zh-cht": "操作系統名稱", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p2->xdevicesBar->1->5", - "default.handlebars->41->784", + "default.handlebars->41->785", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->15->1" ] }, @@ -44776,7 +44805,7 @@ "fr": "OTP 2FA non autorisé", "xloc": [ "default-mobile.handlebars->11->63", - "default.handlebars->41->197" + "default.handlebars->41->198" ] }, { @@ -44801,7 +44830,7 @@ "zh-chs": "欧舒丹", "zh-cht": "歐舒丹", "xloc": [ - "default.handlebars->41->1660" + "default.handlebars->41->1666" ] }, { @@ -44826,8 +44855,8 @@ "zh-chs": "发生在{0}", "zh-cht": "發生在{0}", "xloc": [ - "default-mobile.handlebars->11->705", - "default.handlebars->41->2853" + "default-mobile.handlebars->11->706", + "default.handlebars->41->2859" ] }, { @@ -44848,7 +44877,7 @@ "xloc": [ "default-mobile.handlebars->11->237", "default-mobile.handlebars->11->245", - "default.handlebars->41->614" + "default.handlebars->41->615" ] }, { @@ -44898,7 +44927,7 @@ "zh-chs": "离线用户", "zh-cht": "離線用戶", "xloc": [ - "default.handlebars->41->2388" + "default.handlebars->41->2394" ] }, { @@ -44923,7 +44952,7 @@ "zh-chs": "旧密码", "zh-cht": "舊密碼", "xloc": [ - "default.handlebars->41->470" + "default.handlebars->41->471" ] }, { @@ -44949,7 +44978,7 @@ "zh-cht": "舊密碼:", "xloc": [ "default-mobile.handlebars->11->116", - "default.handlebars->41->1779" + "default.handlebars->41->1785" ] }, { @@ -44974,7 +45003,7 @@ "zh-chs": "一天", "zh-cht": "一天", "xloc": [ - "default.handlebars->41->2364" + "default.handlebars->41->2370" ] }, { @@ -45000,7 +45029,7 @@ "zh-cht": "一次性保安編碼可以用作輔助身份驗證。生成一群,打印並保存在安全的地方。", "xloc": [ "default-mobile.handlebars->11->74", - "default.handlebars->41->214" + "default.handlebars->41->215" ] }, { @@ -45011,7 +45040,7 @@ "ru": "Одноразовый пароль", "fr": "Mot de passe à usage unique (OTP)", "xloc": [ - "default.handlebars->41->2837" + "default.handlebars->41->2843" ] }, { @@ -45063,7 +45092,7 @@ "zh-chs": "在线用户", "zh-cht": "在線用戶", "xloc": [ - "default.handlebars->41->2387" + "default.handlebars->41->2393" ] }, { @@ -45087,7 +45116,7 @@ "tr": "Yalnızca ilk 100 kullanıcıyı göster", "zh-chs": "只显示前 100 个用户", "xloc": [ - "default.handlebars->41->2432" + "default.handlebars->41->2438" ] }, { @@ -45113,8 +45142,8 @@ "zh-cht": "只能編輯小於200k的檔案。", "xloc": [ "default-mobile.handlebars->11->488", - "default.handlebars->41->1366", - "default.handlebars->41->747", + "default.handlebars->41->1371", + "default.handlebars->41->748", "sharing.handlebars->11->67" ] }, @@ -45191,7 +45220,7 @@ "zh-chs": "在设备上打开页面", "zh-cht": "在裝置上打開頁面", "xloc": [ - "default.handlebars->41->1038" + "default.handlebars->41->1043" ] }, { @@ -45284,7 +45313,7 @@ "zh-chs": "打开XTerm终端", "zh-cht": "打開XTerm終端", "xloc": [ - "default.handlebars->41->921" + "default.handlebars->41->922" ] }, { @@ -45334,7 +45363,7 @@ "zh-chs": "打开此计算机的聊天窗口", "zh-cht": "打開此電腦的聊天窗口", "xloc": [ - "default.handlebars->41->902", + "default.handlebars->41->903", "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, @@ -45444,7 +45473,7 @@ "zh-chs": "开头:{0}", "zh-cht": "開場:{0}", "xloc": [ - "default.handlebars->41->2216" + "default.handlebars->41->2222" ] }, { @@ -45470,13 +45499,13 @@ "zh-cht": "操作系統", "xloc": [ "default-mobile.handlebars->11->533", - "default.handlebars->41->1171", - "default.handlebars->41->1405", - "default.handlebars->41->2804", - "default.handlebars->41->323", - "default.handlebars->41->493", - "default.handlebars->41->541", - "default.handlebars->41->828" + "default.handlebars->41->1176", + "default.handlebars->41->1410", + "default.handlebars->41->2810", + "default.handlebars->41->324", + "default.handlebars->41->494", + "default.handlebars->41->542", + "default.handlebars->41->829" ] }, { @@ -45502,11 +45531,11 @@ "zh-cht": "操作", "xloc": [ "default-mobile.handlebars->11->371", - "default.handlebars->41->1106", - "default.handlebars->41->2415", - "default.handlebars->41->2499", - "default.handlebars->41->657", - "default.handlebars->41->676" + "default.handlebars->41->1111", + "default.handlebars->41->2421", + "default.handlebars->41->2505", + "default.handlebars->41->658", + "default.handlebars->41->677" ] }, { @@ -45563,7 +45592,7 @@ "zh-chs": "奥里亚", "zh-cht": "奧里亞", "xloc": [ - "default.handlebars->41->1661" + "default.handlebars->41->1667" ] }, { @@ -45588,7 +45617,7 @@ "zh-chs": "奥罗莫", "zh-cht": "奧羅莫", "xloc": [ - "default.handlebars->41->1662" + "default.handlebars->41->1668" ] }, { @@ -45664,7 +45693,7 @@ "zh-cht": "過時的", "xloc": [ "default-mobile.handlebars->11->530", - "default.handlebars->41->843" + "default.handlebars->41->844" ] }, { @@ -45776,7 +45805,7 @@ "zh-chs": "是否覆盖文件存在?", "zh-cht": "是否覆蓋文件存在?", "xloc": [ - "default.handlebars->41->692" + "default.handlebars->41->693" ] }, { @@ -45822,7 +45851,7 @@ "zh-chs": "自己的过程", "zh-cht": "自己的過程", "xloc": [ - "default.handlebars->41->1288" + "default.handlebars->41->1293" ] }, { @@ -45847,7 +45876,7 @@ "zh-chs": "PID", "zh-cht": "PID", "xloc": [ - "default.handlebars->41->1284", + "default.handlebars->41->1289", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->1" ] }, @@ -45872,8 +45901,8 @@ "tr": "İTMEK", "zh-chs": "推", "xloc": [ - "default-mobile.handlebars->11->607", - "default.handlebars->41->1490" + "default-mobile.handlebars->11->608", + "default.handlebars->41->1496" ] }, { @@ -45898,7 +45927,7 @@ "zh-chs": "向下翻页", "xloc": [ "default-mobile.handlebars->11->424", - "default.handlebars->41->1246" + "default.handlebars->41->1251" ] }, { @@ -45923,7 +45952,7 @@ "zh-chs": "向上翻页", "xloc": [ "default-mobile.handlebars->11->423", - "default.handlebars->41->1245" + "default.handlebars->41->1250" ] }, { @@ -45947,7 +45976,7 @@ "tr": "Sayfalı Bellek", "zh-chs": "分页内存", "xloc": [ - "default.handlebars->41->131" + "default.handlebars->41->132" ] }, { @@ -45972,8 +46001,8 @@ "zh-chs": "零件号", "zh-cht": "零件號", "xloc": [ - "default-mobile.handlebars->11->594", - "default.handlebars->41->1476" + "default-mobile.handlebars->11->595", + "default.handlebars->41->1482" ] }, { @@ -45998,7 +46027,7 @@ "zh-chs": "部分的", "zh-cht": "部分的", "xloc": [ - "default.handlebars->41->2403" + "default.handlebars->41->2409" ] }, { @@ -46068,8 +46097,8 @@ "zh-cht": "部分權限", "xloc": [ "default-mobile.handlebars->11->135", - "default-mobile.handlebars->11->639", - "default.handlebars->41->1815" + "default-mobile.handlebars->11->640", + "default.handlebars->41->1821" ] }, { @@ -46094,7 +46123,7 @@ "zh-chs": "部分权限", "zh-cht": "部分權限", "xloc": [ - "default.handlebars->41->2582" + "default.handlebars->41->2588" ] }, { @@ -46147,20 +46176,20 @@ "default-mobile.handlebars->11->387", "default-mobile.handlebars->11->455", "default-mobile.handlebars->11->462", - "default.handlebars->41->1129", - "default.handlebars->41->1218", - "default.handlebars->41->1315", - "default.handlebars->41->1322", - "default.handlebars->41->1807", - "default.handlebars->41->1962", - "default.handlebars->41->2461", - "default.handlebars->41->2462", - "default.handlebars->41->2616", - "default.handlebars->41->2618", - "default.handlebars->41->2689", - "default.handlebars->41->2690", - "default.handlebars->41->317", - "default.handlebars->41->460", + "default.handlebars->41->1134", + "default.handlebars->41->1223", + "default.handlebars->41->1320", + "default.handlebars->41->1327", + "default.handlebars->41->1813", + "default.handlebars->41->1968", + "default.handlebars->41->2467", + "default.handlebars->41->2468", + "default.handlebars->41->2622", + "default.handlebars->41->2624", + "default.handlebars->41->2695", + "default.handlebars->41->2696", + "default.handlebars->41->318", + "default.handlebars->41->461", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->2->1", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->2->1", "mstsc.handlebars->main->1->3->1->rowpassword->1->0", @@ -46306,8 +46335,8 @@ "tr": "Şifre değişti.", "zh-chs": "密码已更改。", "xloc": [ - "default-mobile.handlebars->11->733", - "default.handlebars->41->2881" + "default-mobile.handlebars->11->734", + "default.handlebars->41->2887" ] }, { @@ -46358,7 +46387,7 @@ "zh-chs": "密码提示", "zh-cht": "密碼提示", "xloc": [ - "default.handlebars->41->2691" + "default.handlebars->41->2697" ] }, { @@ -46384,7 +46413,7 @@ "zh-cht": "密碼提示:", "xloc": [ "default-mobile.handlebars->11->119", - "default.handlebars->41->1782" + "default.handlebars->41->1788" ] }, { @@ -46483,8 +46512,8 @@ "account-invite.html->2->5", "default-mobile.handlebars->11->111", "default-mobile.handlebars->11->112", - "default.handlebars->41->1774", - "default.handlebars->41->1775", + "default.handlebars->41->1780", + "default.handlebars->41->1781", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->4->1", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->6->1", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->7->1->2->1", @@ -46527,9 +46556,9 @@ "default-mobile.handlebars->11->493", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->1336", - "default.handlebars->41->1372", - "default.handlebars->41->2189", + "default.handlebars->41->1341", + "default.handlebars->41->1377", + "default.handlebars->41->2195", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->3", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", @@ -46632,7 +46661,7 @@ "tr": "En Yüksek Sayfalı Bellek", "zh-chs": "峰值分页内存", "xloc": [ - "default.handlebars->41->136" + "default.handlebars->41->137" ] }, { @@ -46656,7 +46685,7 @@ "tr": "En Yüksek Sanal Bellek", "zh-chs": "峰值虚拟内存", "xloc": [ - "default.handlebars->41->137" + "default.handlebars->41->138" ] }, { @@ -46680,7 +46709,7 @@ "tr": "Tepe Çalışma Seti", "zh-chs": "峰值工作集", "xloc": [ - "default.handlebars->41->135" + "default.handlebars->41->136" ] }, { @@ -46705,8 +46734,8 @@ "zh-chs": "执行代理指令", "zh-cht": "執行代理指令", "xloc": [ - "default-mobile.handlebars->11->610", - "default.handlebars->41->1493" + "default-mobile.handlebars->11->611", + "default.handlebars->41->1499" ] }, { @@ -46775,8 +46804,8 @@ "zh-chs": "执行英特尔®AMT激活和配置。", "zh-cht": "執行英特爾®AMT激活和配置。", "xloc": [ - "default.handlebars->41->1908", - "default.handlebars->41->437" + "default.handlebars->41->1914", + "default.handlebars->41->438" ] }, { @@ -46889,7 +46918,7 @@ "zh-chs": "执行英特尔® AMT 关机?", "xloc": [ "default-mobile.handlebars->11->377", - "default.handlebars->41->1121" + "default.handlebars->41->1126" ] }, { @@ -46914,7 +46943,7 @@ "zh-chs": "执行英特尔® AMT 电源?", "xloc": [ "default-mobile.handlebars->11->375", - "default.handlebars->41->1119" + "default.handlebars->41->1124" ] }, { @@ -46939,7 +46968,7 @@ "zh-chs": "执行英特尔® AMT 重置?", "xloc": [ "default-mobile.handlebars->11->379", - "default.handlebars->41->1123" + "default.handlebars->41->1128" ] }, { @@ -46964,7 +46993,7 @@ "zh-chs": "执行批量设备通知", "zh-cht": "執行批量設備通知", "xloc": [ - "default.handlebars->41->683" + "default.handlebars->41->684" ] }, { @@ -46989,7 +47018,7 @@ "zh-chs": "执行批量设备标签操作", "zh-cht": "執行批次裝置標籤操作", "xloc": [ - "default.handlebars->41->675" + "default.handlebars->41->676" ] }, { @@ -47015,7 +47044,7 @@ "zh-cht": "在裝置上執行電源操作", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3", - "default.handlebars->41->894", + "default.handlebars->41->895", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->1", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->1", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1" @@ -47039,7 +47068,7 @@ "tr": "Güç kapatılsın mı?", "xloc": [ "default-mobile.handlebars->11->347", - "default.handlebars->41->982" + "default.handlebars->41->987" ] }, { @@ -47060,7 +47089,7 @@ "tr": "Güç açık mı?", "xloc": [ "default-mobile.handlebars->11->349", - "default.handlebars->41->984" + "default.handlebars->41->989" ] }, { @@ -47085,7 +47114,7 @@ "zh-chs": "执行电源操作= {0},强制执行= {1}", "zh-cht": "執行電源操作= {0},強制執行= {1}", "xloc": [ - "default.handlebars->41->2221" + "default.handlebars->41->2227" ] }, { @@ -47109,8 +47138,8 @@ "tr": "İzin reddedildi", "zh-chs": "没有权限", "xloc": [ - "default-mobile.handlebars->11->714", - "default.handlebars->41->2862" + "default-mobile.handlebars->11->715", + "default.handlebars->41->2868" ] }, { @@ -47135,9 +47164,9 @@ "zh-chs": "权限", "zh-cht": "權限", "xloc": [ - "default-mobile.handlebars->11->699", - "default.handlebars->41->2092", - "default.handlebars->41->2386" + "default-mobile.handlebars->11->700", + "default.handlebars->41->2098", + "default.handlebars->41->2392" ] }, { @@ -47162,7 +47191,7 @@ "zh-chs": "波斯/伊朗", "zh-cht": "波斯/伊朗", "xloc": [ - "default.handlebars->41->1663" + "default.handlebars->41->1669" ] }, { @@ -47238,10 +47267,10 @@ "default-mobile.handlebars->11->81", "default-mobile.handlebars->11->96", "default-mobile.handlebars->11->98", - "default.handlebars->41->1508", - "default.handlebars->41->1511", - "default.handlebars->41->240", - "default.handlebars->41->2667" + "default.handlebars->41->1514", + "default.handlebars->41->1517", + "default.handlebars->41->241", + "default.handlebars->41->2673" ] }, { @@ -47266,7 +47295,7 @@ "zh-chs": "电话号码", "zh-cht": "電話號碼", "xloc": [ - "default.handlebars->41->2597" + "default.handlebars->41->2603" ] }, { @@ -47292,8 +47321,8 @@ "zh-cht": "電話號碼:", "xloc": [ "default-mobile.handlebars->11->97", - "default.handlebars->41->1510", - "default.handlebars->41->2666" + "default.handlebars->41->1516", + "default.handlebars->41->2672" ] }, { @@ -47340,7 +47369,7 @@ "zh-chs": "将节点放在这里", "zh-cht": "將節點放在這裡", "xloc": [ - "default.handlebars->41->762" + "default.handlebars->41->763" ] }, { @@ -47415,7 +47444,7 @@ "zh-chs": "请注意,不建议降级。请仅在最近的升级后发生问题时才这样做。", "zh-cht": "請注意,不建議降級。請僅在最近的升級後發生問題時才這樣做。", "xloc": [ - "default.handlebars->41->299" + "default.handlebars->41->300" ] }, { @@ -47492,7 +47521,7 @@ "zh-cht": "請等待幾分鐘以接收驗證。", "xloc": [ "default-mobile.handlebars->11->107", - "default.handlebars->41->1769" + "default.handlebars->41->1775" ] }, { @@ -47517,8 +47546,8 @@ "zh-chs": "插件指令", "zh-cht": "外掛指令", "xloc": [ - "default.handlebars->41->298", - "default.handlebars->41->2991" + "default.handlebars->41->299", + "default.handlebars->41->2997" ] }, { @@ -47543,7 +47572,7 @@ "zh-chs": "插件错误", "zh-cht": "外掛錯誤", "xloc": [ - "default.handlebars->41->304" + "default.handlebars->41->305" ] }, { @@ -47568,7 +47597,7 @@ "zh-chs": "PluginHandler无法事件消息:", "zh-cht": "PluginHandler無法事件消息:", "xloc": [ - "default.handlebars->41->258" + "default.handlebars->41->259" ] }, { @@ -47697,7 +47726,7 @@ "zh-cht": "政策", "xloc": [ "default-mobile.handlebars->11->134", - "default.handlebars->41->1814" + "default.handlebars->41->1820" ] }, { @@ -47722,7 +47751,7 @@ "zh-chs": "波兰文", "zh-cht": "波蘭文", "xloc": [ - "default.handlebars->41->1664" + "default.handlebars->41->1670" ] }, { @@ -47784,7 +47813,7 @@ "ru": "Синхронизация имени порта", "tr": "Bağlantı Noktası Adı Senkronizasyonu", "xloc": [ - "default.handlebars->41->1869" + "default.handlebars->41->1875" ] }, { @@ -47805,7 +47834,7 @@ "tr": "Port numarası", "xloc": [ "default-mobile.handlebars->11->280", - "default.handlebars->41->791" + "default.handlebars->41->792" ] }, { @@ -47826,7 +47855,7 @@ "tr": "Bağlantı Noktası Türü", "xloc": [ "default-mobile.handlebars->11->281", - "default.handlebars->41->792" + "default.handlebars->41->793" ] }, { @@ -47893,7 +47922,7 @@ "zh-chs": "葡萄牙文", "zh-cht": "葡萄牙文", "xloc": [ - "default.handlebars->41->1665" + "default.handlebars->41->1671" ] }, { @@ -47918,7 +47947,7 @@ "zh-chs": "葡萄牙文(巴西)", "zh-cht": "葡萄牙文(巴西)", "xloc": [ - "default.handlebars->41->1666" + "default.handlebars->41->1672" ] }, { @@ -47991,8 +48020,8 @@ "xloc": [ "default-mobile.handlebars->11->346", "default-mobile.handlebars->11->348", - "default.handlebars->41->981", - "default.handlebars->41->983" + "default.handlebars->41->986", + "default.handlebars->41->988" ] }, { @@ -48042,7 +48071,7 @@ "zh-chs": "电源状态", "zh-cht": "電源狀態", "xloc": [ - "default.handlebars->41->2139", + "default.handlebars->41->2145", "default.handlebars->container->column_l->p21->p21main->1->1->meshPowerChartDiv->1" ] }, @@ -48070,7 +48099,7 @@ "xloc": [ "default-mobile.handlebars->11->235", "default-mobile.handlebars->11->367", - "default.handlebars->41->1099", + "default.handlebars->41->1104", "default.handlebars->41->6" ] }, @@ -48096,7 +48125,7 @@ "zh-chs": "关闭设备", "zh-cht": "關閉裝置", "xloc": [ - "default.handlebars->41->647" + "default.handlebars->41->648" ] }, { @@ -48116,7 +48145,7 @@ "ru": "Выключатель питания готов к использованию.", "tr": "Güç anahtarı kullanıma hazırdır.", "xloc": [ - "default.handlebars->41->623" + "default.handlebars->41->624" ] }, { @@ -48144,7 +48173,7 @@ "default-mobile.handlebars->11->230", "default-mobile.handlebars->11->238", "default.handlebars->41->1", - "default.handlebars->41->600" + "default.handlebars->41->601" ] }, { @@ -48169,7 +48198,7 @@ "zh-chs": "预激活", "zh-cht": "預激活", "xloc": [ - "default.handlebars->41->1448" + "default.handlebars->41->1453" ] }, { @@ -48196,7 +48225,7 @@ "xloc": [ "default-mobile.handlebars->11->236", "default-mobile.handlebars->11->244", - "default.handlebars->41->612", + "default.handlebars->41->613", "default.handlebars->41->7" ] }, @@ -48222,7 +48251,7 @@ "zh-chs": "存在于服务器上", "zh-cht": "存在於伺服器上", "xloc": [ - "default.handlebars->41->2759" + "default.handlebars->41->2765" ] }, { @@ -48325,7 +48354,7 @@ "zh-chs": "现在按下按键。", "zh-cht": "現在按下按鍵。", "xloc": [ - "default.handlebars->41->233" + "default.handlebars->41->234" ] }, { @@ -48351,10 +48380,10 @@ "xloc": [ "default-mobile.handlebars->11->86", "default-mobile.handlebars->11->87", - "default.handlebars->41->1503", - "default.handlebars->41->2661", - "default.handlebars->41->2687", - "default.handlebars->41->310" + "default.handlebars->41->1509", + "default.handlebars->41->2667", + "default.handlebars->41->2693", + "default.handlebars->41->311" ] }, { @@ -48379,7 +48408,7 @@ "zh-chs": "打印屏幕", "xloc": [ "default-mobile.handlebars->11->418", - "default.handlebars->41->1240" + "default.handlebars->41->1245" ] }, { @@ -48403,7 +48432,7 @@ "tr": "Öncelik Artışı", "zh-chs": "优先提升", "xloc": [ - "default.handlebars->41->119" + "default.handlebars->41->120" ] }, { @@ -48453,7 +48482,7 @@ "zh-chs": "隐私栏", "zh-cht": "隱私欄", "xloc": [ - "default.handlebars->41->284" + "default.handlebars->41->285" ] }, { @@ -48498,7 +48527,7 @@ "tr": "Özel Bellek", "zh-chs": "私人内存", "xloc": [ - "default.handlebars->41->132" + "default.handlebars->41->133" ] }, { @@ -48522,7 +48551,7 @@ "tr": "Ayrıcalıklı İşlemci Süresi", "zh-chs": "特权处理器时间", "xloc": [ - "default.handlebars->41->124" + "default.handlebars->41->125" ] }, { @@ -48547,7 +48576,7 @@ "zh-chs": "进程控制", "zh-cht": "進程控制", "xloc": [ - "default.handlebars->41->1300" + "default.handlebars->41->1305" ] }, { @@ -48571,7 +48600,7 @@ "tr": "İşlem Ayrıntıları, #{0}", "zh-chs": "流程详情,#{0}", "xloc": [ - "default.handlebars->41->1275" + "default.handlebars->41->1280" ] }, { @@ -48595,7 +48624,7 @@ "tr": "İşlem adı", "zh-chs": "进程名称", "xloc": [ - "default.handlebars->41->112" + "default.handlebars->41->113" ] }, { @@ -48645,7 +48674,7 @@ "zh-chs": "处理控制台命令:“{0}”", "zh-cht": "處理控制台命令:“{0}”", "xloc": [ - "default.handlebars->41->2213" + "default.handlebars->41->2219" ] }, { @@ -48670,7 +48699,7 @@ "zh-chs": "提示", "zh-cht": "提示", "xloc": [ - "default.handlebars->41->283" + "default.handlebars->41->284" ] }, { @@ -48695,7 +48724,7 @@ "zh-chs": "用户同意提示", "zh-cht": "用戶同意提示", "xloc": [ - "default.handlebars->41->1085" + "default.handlebars->41->1090" ] }, { @@ -48720,9 +48749,9 @@ "zh-chs": "用户同意提示", "zh-cht": "用戶同意提示", "xloc": [ - "default.handlebars->41->2000", - "default.handlebars->41->2004", - "default.handlebars->41->2007" + "default.handlebars->41->2006", + "default.handlebars->41->2010", + "default.handlebars->41->2013" ] }, { @@ -48747,7 +48776,7 @@ "zh-chs": "协议", "zh-cht": "協議", "xloc": [ - "default.handlebars->41->2757", + "default.handlebars->41->2763", "player.handlebars->3->32" ] }, @@ -48758,7 +48787,7 @@ "ru": "Ошибка согласования протокола ({0})", "fr": "Échec de la négociation du protocol ({0})", "xloc": [ - "default.handlebars->41->1203" + "default.handlebars->41->1208" ] }, { @@ -48806,7 +48835,7 @@ "zh-cht": "配置狀態", "xloc": [ "default-mobile.handlebars->11->570", - "default.handlebars->41->1452" + "default.handlebars->41->1457" ] }, { @@ -48853,7 +48882,7 @@ "zh-cht": "公開鏈結", "xloc": [ "default-mobile.handlebars->11->146", - "default.handlebars->41->2174" + "default.handlebars->41->2180" ] }, { @@ -48899,7 +48928,7 @@ "zh-chs": "旁遮普文", "zh-cht": "旁遮普文", "xloc": [ - "default.handlebars->41->1667" + "default.handlebars->41->1673" ] }, { @@ -48924,7 +48953,7 @@ "zh-chs": "旁遮普(印度)", "zh-cht": "旁遮普(印度)", "xloc": [ - "default.handlebars->41->1668" + "default.handlebars->41->1674" ] }, { @@ -48949,7 +48978,7 @@ "zh-chs": "旁遮普(巴基斯坦)", "zh-cht": "旁遮普(巴基斯坦)", "xloc": [ - "default.handlebars->41->1669" + "default.handlebars->41->1675" ] }, { @@ -48985,7 +49014,7 @@ "ru": "Push уведомление", "fr": "Notifications", "xloc": [ - "default.handlebars->41->2836" + "default.handlebars->41->2842" ] }, { @@ -49105,7 +49134,7 @@ "zh-chs": "盖丘亚族", "zh-cht": "蓋丘亞族", "xloc": [ - "default.handlebars->41->1670" + "default.handlebars->41->1676" ] }, { @@ -49207,10 +49236,10 @@ "xloc": [ "default-mobile.handlebars->11->325", "default-mobile.handlebars->11->329", - "default.handlebars->41->391", - "default.handlebars->41->884", - "default.handlebars->41->888", - "default.handlebars->41->924", + "default.handlebars->41->392", + "default.handlebars->41->885", + "default.handlebars->41->889", + "default.handlebars->41->925", "default.handlebars->container->dialog->dialogBody->dialog7->1->td7rdpkvm" ] }, @@ -49246,7 +49275,7 @@ "zh-chs": "RDP连接", "zh-cht": "RDP連接", "xloc": [ - "default.handlebars->41->740" + "default.handlebars->41->741" ] }, { @@ -49256,7 +49285,7 @@ "ru": "Учетные данные RDP", "fr": "Informations d'identification RDP", "xloc": [ - "default.handlebars->41->1222" + "default.handlebars->41->1227" ] }, { @@ -49302,7 +49331,7 @@ "zh-chs": "RDP远程连接端口:", "zh-cht": "RDP遠程連接介面:", "xloc": [ - "default.handlebars->41->739" + "default.handlebars->41->740" ] }, { @@ -49403,7 +49432,7 @@ "zh-chs": "RSS", "zh-cht": "RSS", "xloc": [ - "default.handlebars->41->2950" + "default.handlebars->41->2956" ] }, { @@ -49453,7 +49482,7 @@ "zh-chs": "随机密码", "zh-cht": "隨機密碼", "xloc": [ - "default.handlebars->41->1963" + "default.handlebars->41->1969" ] }, { @@ -49478,7 +49507,7 @@ "zh-chs": "随机密码。", "zh-cht": "隨機密碼。", "xloc": [ - "default.handlebars->41->2463" + "default.handlebars->41->2469" ] }, { @@ -49497,7 +49526,7 @@ "ru": "Raritan Dominion KX III", "tr": "Raritan Dominion KX III", "xloc": [ - "default.handlebars->41->1803" + "default.handlebars->41->1809" ] }, { @@ -49588,9 +49617,9 @@ "zh-chs": "真正的名字", "zh-cht": "真正的名字", "xloc": [ - "default.handlebars->41->2594", - "default.handlebars->41->2596", - "default.handlebars->41->2680" + "default.handlebars->41->2600", + "default.handlebars->41->2602", + "default.handlebars->41->2686" ] }, { @@ -49615,7 +49644,7 @@ "zh-chs": "境界", "zh-cht": "境界", "xloc": [ - "default.handlebars->41->2472" + "default.handlebars->41->2478" ] }, { @@ -49641,7 +49670,7 @@ "zh-cht": "收到無效的網絡數據", "xloc": [ "default-mobile.handlebars->11->410", - "default.handlebars->41->1201", + "default.handlebars->41->1206", "sharing.handlebars->11->10", "sharing.handlebars->11->32" ] @@ -49668,9 +49697,9 @@ "zh-chs": "记录会议", "zh-cht": "記錄會議", "xloc": [ - "default.handlebars->41->1871", - "default.handlebars->41->2521", - "default.handlebars->41->2599" + "default.handlebars->41->1877", + "default.handlebars->41->2527", + "default.handlebars->41->2605" ] }, { @@ -49720,9 +49749,9 @@ "zh-chs": "记录会议", "zh-cht": "記錄會議", "xloc": [ - "default.handlebars->41->2008", - "default.handlebars->41->2559", - "default.handlebars->41->2668" + "default.handlebars->41->2014", + "default.handlebars->41->2565", + "default.handlebars->41->2674" ] }, { @@ -49747,7 +49776,7 @@ "zh-chs": "记录细节", "zh-cht": "記錄細節", "xloc": [ - "default.handlebars->41->2771" + "default.handlebars->41->2777" ] }, { @@ -49792,8 +49821,8 @@ "ru": "Повторяющийся", "tr": "yinelenen", "xloc": [ - "default.handlebars->41->278", - "default.handlebars->41->280" + "default.handlebars->41->279", + "default.handlebars->41->281" ] }, { @@ -49813,7 +49842,7 @@ "ru": "Ежедневно", "tr": "Günlük yinelenen", "xloc": [ - "default.handlebars->41->1076" + "default.handlebars->41->1081" ] }, { @@ -49833,7 +49862,7 @@ "ru": "Еженедельно", "tr": "Haftalık yinelenen", "xloc": [ - "default.handlebars->41->1077" + "default.handlebars->41->1082" ] }, { @@ -49881,11 +49910,18 @@ "xloc": [ "default-mobile.handlebars->11->152", "default-mobile.handlebars->11->481", - "default.handlebars->41->1359", - "default.handlebars->41->2181", + "default.handlebars->41->1364", + "default.handlebars->41->2187", "sharing.handlebars->11->60" ] }, + { + "en": "Redirection port or KVM feature is disabled", + "xloc": [ + "default.handlebars->container->column_l->p11->p11warning->3", + "default.handlebars->container->column_l->p12->p12warning->3" + ] + }, { "cs": "Šíření dál a použití ve formě zdrojových kódů nebo zkompilované binární podobě, ať už tak jak je, nebo s úpravami, je povoleno za předpokladu, že jsou splněny následující podmínky:", "da": "Omfordeling og brug i kilde- og binære former, med eller uden ændringer, er tilladt, forudsat at følgende betingelser er opfyldt:", @@ -49938,7 +49974,7 @@ "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->759", + "default.handlebars->41->760", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->DeskToolsRefreshButton", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p40->3->3", @@ -50019,10 +50055,10 @@ "zh-cht": "中繼", "xloc": [ "default-mobile.handlebars->11->259", - "default.handlebars->41->2932", - "default.handlebars->41->382", - "default.handlebars->41->386", - "default.handlebars->41->634" + "default.handlebars->41->2938", + "default.handlebars->41->383", + "default.handlebars->41->387", + "default.handlebars->41->635" ] }, { @@ -50047,7 +50083,7 @@ "zh-chs": "中继数量", "zh-cht": "中繼數量", "xloc": [ - "default.handlebars->41->2917" + "default.handlebars->41->2923" ] }, { @@ -50071,11 +50107,11 @@ "tr": "Röle Cihazı", "zh-chs": "中继装置", "xloc": [ - "default-mobile.handlebars->11->632", - "default-mobile.handlebars->11->648", - "default.handlebars->41->1800", - "default.handlebars->41->1862", - "default.handlebars->41->1989" + "default-mobile.handlebars->11->633", + "default-mobile.handlebars->11->649", + "default.handlebars->41->1806", + "default.handlebars->41->1868", + "default.handlebars->41->1995" ] }, { @@ -50100,7 +50136,7 @@ "zh-chs": "中继错误", "zh-cht": "中繼錯誤", "xloc": [ - "default.handlebars->41->2910" + "default.handlebars->41->2916" ] }, { @@ -50146,8 +50182,8 @@ "zh-chs": "中继连接", "zh-cht": "中繼連接", "xloc": [ - "default.handlebars->41->2916", - "default.handlebars->41->2944" + "default.handlebars->41->2922", + "default.handlebars->41->2950" ] }, { @@ -50157,7 +50193,7 @@ "ru": "Устройство-ретранслятор", "fr": "Appareil relais", "xloc": [ - "default.handlebars->41->2356" + "default.handlebars->41->2362" ] }, { @@ -50167,7 +50203,7 @@ "ru": "Ретранслятор для", "fr": "Relais pour", "xloc": [ - "default.handlebars->41->891" + "default.handlebars->41->892" ] }, { @@ -50200,7 +50236,7 @@ "ru": "Запомнить устройство", "fr": "Se souvenir de l'appareil", "xloc": [ - "default.handlebars->41->2838" + "default.handlebars->41->2844" ] }, { @@ -50225,8 +50261,8 @@ "zh-chs": "记住凭据", "xloc": [ "default-mobile.handlebars->11->456", - "default.handlebars->41->1219", - "default.handlebars->41->1316", + "default.handlebars->41->1224", + "default.handlebars->41->1321", "mstsc.handlebars->main->1->3->1->rowremember->3->0", "ssh.handlebars->3->14" ] @@ -50239,7 +50275,7 @@ "fr": "Se souvenir du mot de passe", "xloc": [ "default-mobile.handlebars->11->461", - "default.handlebars->41->1321", + "default.handlebars->41->1326", "ssh.handlebars->3->19" ] }, @@ -50322,7 +50358,7 @@ "fr": "Se souvenir de l'utilisateur et de la clé", "xloc": [ "default-mobile.handlebars->11->460", - "default.handlebars->41->1320", + "default.handlebars->41->1325", "ssh.handlebars->3->18" ] }, @@ -50445,7 +50481,7 @@ "zh-chs": "远程剪贴板", "zh-cht": "遠程剪貼板", "xloc": [ - "default.handlebars->41->1273" + "default.handlebars->41->1278" ] }, { @@ -50470,8 +50506,8 @@ "zh-chs": "远程命令", "zh-cht": "遠程命令", "xloc": [ - "default-mobile.handlebars->11->674", - "default.handlebars->41->2048" + "default-mobile.handlebars->11->675", + "default.handlebars->41->2054" ] }, { @@ -50498,12 +50534,12 @@ "xloc": [ "default-mobile.handlebars->11->337", "default-mobile.handlebars->11->338", - "default-mobile.handlebars->11->661", - "default-mobile.handlebars->11->681", - "default.handlebars->41->2033", - "default.handlebars->41->2071", - "default.handlebars->41->909", - "default.handlebars->41->910" + "default-mobile.handlebars->11->662", + "default-mobile.handlebars->11->682", + "default.handlebars->41->2039", + "default.handlebars->41->2077", + "default.handlebars->41->910", + "default.handlebars->41->911" ] }, { @@ -50530,8 +50566,8 @@ "xloc": [ "default-mobile.handlebars->11->201", "default-mobile.handlebars->11->208", - "default.handlebars->41->397", - "default.handlebars->41->404" + "default.handlebars->41->398", + "default.handlebars->41->405" ] }, { @@ -50555,7 +50591,7 @@ "tr": "Uzak Masaüstü + Dosya Bağlantısı", "zh-chs": "远程桌面 + 文件链接", "xloc": [ - "default.handlebars->41->292" + "default.handlebars->41->293" ] }, { @@ -50579,7 +50615,7 @@ "tr": "Uzak Masaüstü + Terminal + Dosya Bağlantısı", "zh-chs": "远程桌面 + 终端 + 文件链接", "xloc": [ - "default.handlebars->41->293" + "default.handlebars->41->294" ] }, { @@ -50603,7 +50639,7 @@ "tr": "Uzak Masaüstü + Terminal Bağlantısı", "zh-chs": "远程桌面+终端链接", "xloc": [ - "default.handlebars->41->289" + "default.handlebars->41->290" ] }, { @@ -50628,8 +50664,8 @@ "zh-chs": "远程桌面连接栏已激活/更新", "zh-cht": "遠程桌面連接欄已激活/更新", "xloc": [ - "default.handlebars->41->2227", - "default.handlebars->41->2233" + "default.handlebars->41->2233", + "default.handlebars->41->2239" ] }, { @@ -50654,7 +50690,7 @@ "zh-chs": "远程桌面连接栏失败或不受支持", "zh-cht": "遠程桌面連接欄失敗或不受支持", "xloc": [ - "default.handlebars->41->2228" + "default.handlebars->41->2234" ] }, { @@ -50679,7 +50715,7 @@ "zh-chs": "远程桌面连接栏失败或不受支持", "zh-cht": "遠程桌面連接欄失敗或不受支持", "xloc": [ - "default.handlebars->41->2234" + "default.handlebars->41->2240" ] }, { @@ -50704,9 +50740,9 @@ "zh-chs": "本地用户强行关闭了远程桌面连接", "zh-cht": "本地用戶強行關閉了遠程桌面連接", "xloc": [ - "default.handlebars->41->2225", - "default.handlebars->41->2229", - "default.handlebars->41->2235" + "default.handlebars->41->2231", + "default.handlebars->41->2235", + "default.handlebars->41->2241" ] }, { @@ -50752,7 +50788,7 @@ "zh-chs": "远程桌面连结", "zh-cht": "遠程桌面鏈結", "xloc": [ - "default.handlebars->41->288" + "default.handlebars->41->289" ] }, { @@ -50778,8 +50814,8 @@ "zh-cht": "遠程桌面設置", "xloc": [ "default-mobile.handlebars->11->412", - "default.handlebars->41->1231", - "default.handlebars->41->432", + "default.handlebars->41->1236", + "default.handlebars->41->433", "sharing.handlebars->11->20" ] }, @@ -50888,7 +50924,7 @@ "tr": "Uzak Dosya Bağlantısı", "zh-chs": "远程文件链接", "xloc": [ - "default.handlebars->41->290" + "default.handlebars->41->291" ] }, { @@ -50954,7 +50990,7 @@ "tr": "Uzaktan Giriş Kilidi", "zh-chs": "远程输入锁定", "xloc": [ - "default.handlebars->41->1041" + "default.handlebars->41->1046" ] }, { @@ -50979,7 +51015,7 @@ "zh-chs": "远程键盘输入", "zh-cht": "遠程鍵盤輸入", "xloc": [ - "default.handlebars->41->1269", + "default.handlebars->41->1274", "sharing.handlebars->11->22" ] }, @@ -51005,7 +51041,7 @@ "zh-chs": "远程网格用户", "zh-cht": "遠程網格用戶", "xloc": [ - "default-mobile.handlebars->11->702" + "default-mobile.handlebars->11->703" ] }, { @@ -51050,7 +51086,7 @@ "tr": "Uzak Oturumlar", "zh-chs": "远程会话", "xloc": [ - "default.handlebars->41->2773" + "default.handlebars->41->2779" ] }, { @@ -51116,7 +51152,7 @@ "tr": "Uzak Terminal + Dosya Bağlantısı", "zh-chs": "远程终端 + 文件链接", "xloc": [ - "default.handlebars->41->291" + "default.handlebars->41->292" ] }, { @@ -51141,7 +51177,7 @@ "zh-chs": "远程终端链接", "zh-cht": "遠程終端鏈接", "xloc": [ - "default.handlebars->41->287" + "default.handlebars->41->288" ] }, { @@ -51188,11 +51224,11 @@ "zh-chs": "仅远程查看", "zh-cht": "僅遠程查看", "xloc": [ - "default-mobile.handlebars->11->662", - "default-mobile.handlebars->11->686", - "default.handlebars->41->2034", - "default.handlebars->41->2076", - "default.handlebars->41->2671" + "default-mobile.handlebars->11->663", + "default-mobile.handlebars->11->687", + "default.handlebars->41->2040", + "default.handlebars->41->2082", + "default.handlebars->41->2677" ] }, { @@ -51217,7 +51253,7 @@ "zh-chs": "远程剪贴板的有效期为60秒。", "zh-cht": "遠程剪貼板的有效期為60秒。", "xloc": [ - "default.handlebars->41->1272" + "default.handlebars->41->1277" ] }, { @@ -51338,7 +51374,7 @@ "zh-chs": "删除", "zh-cht": "删除", "xloc": [ - "default.handlebars->41->222" + "default.handlebars->41->223" ] }, { @@ -51384,7 +51420,7 @@ "zh-chs": "删除配置", "zh-cht": "刪除配置", "xloc": [ - "default.handlebars->41->1835" + "default.handlebars->41->1841" ] }, { @@ -51453,8 +51489,8 @@ "zh-chs": "删除设备组权限", "zh-cht": "刪除裝置群權限", "xloc": [ - "default.handlebars->41->2563", - "default.handlebars->41->2732" + "default.handlebars->41->2569", + "default.handlebars->41->2738" ] }, { @@ -51479,8 +51515,8 @@ "zh-chs": "删除设备权限", "zh-cht": "刪除裝置權限", "xloc": [ - "default.handlebars->41->2561", - "default.handlebars->41->2719" + "default.handlebars->41->2567", + "default.handlebars->41->2725" ] }, { @@ -51505,7 +51541,7 @@ "zh-chs": "删除设备共享", "zh-cht": "刪除設備共享", "xloc": [ - "default.handlebars->41->2717" + "default.handlebars->41->2723" ] }, { @@ -51529,7 +51565,7 @@ "tr": "Giriş Simgesini Kaldır", "zh-chs": "删除登录令牌", "xloc": [ - "default.handlebars->41->1827" + "default.handlebars->41->1833" ] }, { @@ -51576,7 +51612,7 @@ "zh-chs": "删除用户组成员身份", "zh-cht": "刪除用戶群成員身份", "xloc": [ - "default.handlebars->41->2728" + "default.handlebars->41->2734" ] }, { @@ -51601,8 +51637,8 @@ "zh-chs": "删除用户组权限", "zh-cht": "刪除用戶群權限", "xloc": [ - "default.handlebars->41->2097", - "default.handlebars->41->2724" + "default.handlebars->41->2103", + "default.handlebars->41->2730" ] }, { @@ -51627,7 +51663,7 @@ "zh-chs": "删除用户成员资格", "zh-cht": "刪除用戶成員資格", "xloc": [ - "default.handlebars->41->2571" + "default.handlebars->41->2577" ] }, { @@ -51652,8 +51688,8 @@ "zh-chs": "删除用户权限", "zh-cht": "刪除用戶權限", "xloc": [ - "default.handlebars->41->2095", - "default.handlebars->41->2721" + "default.handlebars->41->2101", + "default.handlebars->41->2727" ] }, { @@ -51678,7 +51714,7 @@ "zh-chs": "删除所有两因素认证。", "zh-cht": "刪除所有二因子鑑別。", "xloc": [ - "default.handlebars->41->2694" + "default.handlebars->41->2700" ] }, { @@ -51703,7 +51739,7 @@ "zh-chs": "删除此用户标识的所有先前事件。", "zh-cht": "刪除此用戶標識的所有先前事件。", "xloc": [ - "default.handlebars->41->2464" + "default.handlebars->41->2470" ] }, { @@ -51728,7 +51764,7 @@ "zh-chs": "断开连接后移除设备", "zh-cht": "斷開連接後删除裝置", "xloc": [ - "default.handlebars->41->2011" + "default.handlebars->41->2017" ] }, { @@ -51753,8 +51789,8 @@ "zh-chs": "删除设备共享", "zh-cht": "刪除設備共享", "xloc": [ - "default.handlebars->41->1923", - "default.handlebars->41->963" + "default.handlebars->41->1929", + "default.handlebars->41->968" ] }, { @@ -51778,7 +51814,7 @@ "tr": "Etkin olmayanı kaldır", "zh-chs": "移除不活跃", "xloc": [ - "default.handlebars->41->1872" + "default.handlebars->41->1878" ] }, { @@ -51802,7 +51838,7 @@ "tr": "Giriş anahtarını kaldır", "zh-chs": "删除登录令牌", "xloc": [ - "default.handlebars->41->1822" + "default.handlebars->41->1828" ] }, { @@ -51827,7 +51863,7 @@ "zh-chs": "删除节点位置", "zh-cht": "刪除節點位置", "xloc": [ - "default.handlebars->41->751" + "default.handlebars->41->752" ] }, { @@ -51853,7 +51889,7 @@ "zh-cht": "刪除電話號碼", "xloc": [ "default-mobile.handlebars->11->95", - "default.handlebars->41->1507" + "default.handlebars->41->1513" ] }, { @@ -51878,7 +51914,7 @@ "zh-chs": "移除标签", "zh-cht": "删除標籤", "xloc": [ - "default.handlebars->41->679" + "default.handlebars->41->680" ] }, { @@ -51903,7 +51939,7 @@ "zh-chs": "删除此设备", "zh-cht": "刪除此裝置", "xloc": [ - "default.handlebars->41->913" + "default.handlebars->41->914" ] }, { @@ -51928,7 +51964,7 @@ "zh-chs": "删除此用户", "zh-cht": "刪除此用戶", "xloc": [ - "default.handlebars->41->2656" + "default.handlebars->41->2662" ] }, { @@ -51953,7 +51989,7 @@ "zh-chs": "删除用户组成员身份", "zh-cht": "刪除用戶群成員身份", "xloc": [ - "default.handlebars->41->2708" + "default.handlebars->41->2714" ] }, { @@ -51978,7 +52014,7 @@ "zh-chs": "删除此设备的用户组权限", "zh-cht": "刪除此裝置的用戶群權限", "xloc": [ - "default.handlebars->41->2555" + "default.handlebars->41->2561" ] }, { @@ -52003,8 +52039,8 @@ "zh-chs": "删除此设备组的用户组权限", "zh-cht": "刪除此裝置群的用戶群權限", "xloc": [ - "default.handlebars->41->2549", - "default.handlebars->41->956" + "default.handlebars->41->2555", + "default.handlebars->41->961" ] }, { @@ -52029,11 +52065,11 @@ "zh-chs": "删除此设备组的用户权限", "zh-cht": "刪除此裝置群的用戶權限", "xloc": [ - "default.handlebars->41->1919", - "default.handlebars->41->2543", - "default.handlebars->41->2702", - "default.handlebars->41->2714", - "default.handlebars->41->957" + "default.handlebars->41->1925", + "default.handlebars->41->2549", + "default.handlebars->41->2708", + "default.handlebars->41->2720", + "default.handlebars->41->962" ] }, { @@ -52074,7 +52110,7 @@ "ru": "Удалено отображаемое имя учетной записи.", "tr": "Hesabın görünen adı kaldırıldı.", "xloc": [ - "default.handlebars->41->2325" + "default.handlebars->41->2331" ] }, { @@ -52099,7 +52135,7 @@ "zh-chs": "删除身份验证应用程序", "zh-cht": "刪除身份驗證應用程序", "xloc": [ - "default.handlebars->41->2287" + "default.handlebars->41->2293" ] }, { @@ -52124,7 +52160,7 @@ "zh-chs": "删除的设备共享{0}", "zh-cht": "刪除的設備共享{0}", "xloc": [ - "default.handlebars->41->2298" + "default.handlebars->41->2304" ] }, { @@ -52149,7 +52185,7 @@ "zh-chs": "从设备组{1}中删除了设备{0}", "zh-cht": "從設備組{1}中刪除了設備{0}", "xloc": [ - "default.handlebars->41->2283" + "default.handlebars->41->2289" ] }, { @@ -52173,7 +52209,7 @@ "tr": "Kaldırılan giriş belirteci", "zh-chs": "删除了登录令牌", "xloc": [ - "default.handlebars->41->2312" + "default.handlebars->41->2318" ] }, { @@ -52198,7 +52234,7 @@ "zh-chs": "已删除用户{0}的电话号码", "zh-cht": "已刪除用戶{0}的電話號碼", "xloc": [ - "default.handlebars->41->2293" + "default.handlebars->41->2299" ] }, { @@ -52222,7 +52258,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulama cihazı kaldırıldı", "zh-chs": "删除了推送通知身份验证设备", "xloc": [ - "default.handlebars->41->2310" + "default.handlebars->41->2316" ] }, { @@ -52247,7 +52283,7 @@ "zh-chs": "移除安全密钥", "zh-cht": "移除安全密鑰", "xloc": [ - "default.handlebars->41->2290" + "default.handlebars->41->2296" ] }, { @@ -52272,9 +52308,9 @@ "zh-chs": "删除了{0}的用户设备权限", "zh-cht": "刪除了{0}的用戶設備權限", "xloc": [ - "default.handlebars->41->2256", - "default.handlebars->41->2277", - "default.handlebars->41->2282" + "default.handlebars->41->2262", + "default.handlebars->41->2283", + "default.handlebars->41->2288" ] }, { @@ -52299,7 +52335,7 @@ "zh-chs": "从设备组{1}中删除了用户组{0}", "zh-cht": "從設備組{1}中刪除了用戶組{0}", "xloc": [ - "default.handlebars->41->2266" + "default.handlebars->41->2272" ] }, { @@ -52324,7 +52360,7 @@ "zh-chs": "从设备组{1}中删除了用户{0}", "zh-cht": "已從設備組{1}中刪除用戶{0}", "xloc": [ - "default.handlebars->41->2279" + "default.handlebars->41->2285" ] }, { @@ -52349,8 +52385,8 @@ "zh-chs": "从用户组{1}中删除了用户{0}", "zh-cht": "從用戶組{1}中刪除了用戶{0}", "xloc": [ - "default.handlebars->41->2258", - "default.handlebars->41->2268" + "default.handlebars->41->2264", + "default.handlebars->41->2274" ] }, { @@ -52379,9 +52415,9 @@ "default-mobile.handlebars->11->485", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", - "default.handlebars->41->1363", - "default.handlebars->41->2185", - "default.handlebars->41->745", + "default.handlebars->41->1368", + "default.handlebars->41->2191", + "default.handlebars->41->746", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->filesContextMenu->1", @@ -52432,7 +52468,7 @@ "zh-chs": "重命名:“{0}”为“{1}”", "zh-cht": "重命名:“{0}”為“{1}”", "xloc": [ - "default.handlebars->41->2244" + "default.handlebars->41->2250" ] }, { @@ -52457,7 +52493,7 @@ "zh-chs": "报告日", "zh-cht": "報告日", "xloc": [ - "default.handlebars->41->2365" + "default.handlebars->41->2371" ] }, { @@ -52482,7 +52518,7 @@ "zh-chs": "报告类型", "zh-cht": "報告類型", "xloc": [ - "default.handlebars->41->2360" + "default.handlebars->41->2366" ] }, { @@ -52502,7 +52538,7 @@ "ru": "Отчет не вернул данных", "tr": "Rapor hiçbir bütün döndürmedi.", "xloc": [ - "default.handlebars->41->2809" + "default.handlebars->41->2815" ] }, { @@ -52524,7 +52560,7 @@ "sv": "Report.csv", "tr": "Report.csv", "xloc": [ - "default.handlebars->41->2851" + "default.handlebars->41->2857" ] }, { @@ -52658,7 +52694,7 @@ "tr": "Ayrıntılar isteniyor...", "zh-chs": "查询详情...", "xloc": [ - "default.handlebars->41->1276" + "default.handlebars->41->1281" ] }, { @@ -52683,7 +52719,7 @@ "zh-chs": "要求:", "zh-cht": "要求:", "xloc": [ - "default.handlebars->41->1783" + "default.handlebars->41->1789" ] }, { @@ -52709,8 +52745,8 @@ "zh-cht": "要求:{0}。", "xloc": [ "default-mobile.handlebars->11->120", - "default.handlebars->41->2469", - "default.handlebars->41->2692" + "default.handlebars->41->2475", + "default.handlebars->41->2698" ] }, { @@ -52735,7 +52771,7 @@ "zh-chs": "需要安装MeshCentral路由器", "zh-cht": "需要安裝MeshCentral路由器", "xloc": [ - "default.handlebars->41->923" + "default.handlebars->41->924" ] }, { @@ -52760,9 +52796,9 @@ "zh-chs": "需要安装MeshCentral Router。", "zh-cht": "需要安裝MeshCentral Router。", "xloc": [ - "default.handlebars->41->925", - "default.handlebars->41->927", - "default.handlebars->41->929" + "default.handlebars->41->926", + "default.handlebars->41->928", + "default.handlebars->41->930" ] }, { @@ -52815,7 +52851,7 @@ "zh-cht": "重設", "xloc": [ "default-mobile.handlebars->11->366", - "default.handlebars->41->1098", + "default.handlebars->41->1103", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devMapToolbar" ] }, @@ -52841,8 +52877,8 @@ "zh-chs": "重置/关闭电源", "zh-cht": "重置/關閉電源", "xloc": [ - "default-mobile.handlebars->11->675", - "default.handlebars->41->2049" + "default-mobile.handlebars->11->676", + "default.handlebars->41->2055" ] }, { @@ -52948,7 +52984,7 @@ "zh-chs": "重置设备", "zh-cht": "重置裝置", "xloc": [ - "default.handlebars->41->646" + "default.handlebars->41->647" ] }, { @@ -52998,10 +53034,10 @@ "zh-chs": "重置/关闭", "zh-cht": "重置/關閉", "xloc": [ - "default-mobile.handlebars->11->695", - "default.handlebars->41->1010", - "default.handlebars->41->1032", - "default.handlebars->41->2086" + "default-mobile.handlebars->11->696", + "default.handlebars->41->1015", + "default.handlebars->41->1037", + "default.handlebars->41->2092" ] }, { @@ -53026,7 +53062,7 @@ "zh-chs": "重新启动", "zh-cht": "重新啟動", "xloc": [ - "default.handlebars->41->1294", + "default.handlebars->41->1299", "player.handlebars->p11->deskarea0->deskarea4->3" ] }, @@ -53052,7 +53088,7 @@ "zh-chs": "还原服务器", "zh-cht": "還原伺服器", "xloc": [ - "default.handlebars->41->1840" + "default.handlebars->41->1846" ] }, { @@ -53102,7 +53138,7 @@ "zh-chs": "使用备份还原服务器,这将删除现有服务器数据。仅当您知道自己在做什么时才这样做。", "zh-cht": "使用備份還原伺服器,這將刪除現有伺服器數據。僅當你知道自己在做什麼時才這樣做。", "xloc": [ - "default.handlebars->41->1837" + "default.handlebars->41->1843" ] }, { @@ -53128,8 +53164,8 @@ "zh-cht": "受限制的", "xloc": [ "default-mobile.handlebars->11->288", - "default.handlebars->41->799", - "default.handlebars->41->939" + "default.handlebars->41->800", + "default.handlebars->41->940" ] }, { @@ -53154,7 +53190,15 @@ "zh-chs": "限制条件", "zh-cht": "限制條件", "xloc": [ - "default.handlebars->41->2583" + "default.handlebars->41->2589" + ] + }, + { + "en": "Reverse Mouse Wheel", + "xloc": [ + "default.handlebars->container->dialog->dialogBody->dialog7->d7amtkvm->5->d7otherset->7", + "default.handlebars->container->dialog->dialogBody->dialog7->d7meshkvm->d7desktopOtherSettings->d7otherset2->3", + "default.handlebars->container->dialog->dialogBody->dialog7->d7rdpkvm->5->d7rdpflags->21" ] }, { @@ -53179,7 +53223,7 @@ "zh-chs": "雷托-罗曼语", "zh-cht": "雷托-羅曼語", "xloc": [ - "default.handlebars->41->1671" + "default.handlebars->41->1677" ] }, { @@ -53204,7 +53248,7 @@ "zh-chs": "正确的", "xloc": [ "default-mobile.handlebars->11->427", - "default.handlebars->41->1249" + "default.handlebars->41->1254" ] }, { @@ -53229,7 +53273,7 @@ "zh-chs": "罗马尼亚文", "zh-cht": "羅馬尼亞文", "xloc": [ - "default.handlebars->41->1672" + "default.handlebars->41->1678" ] }, { @@ -53254,7 +53298,7 @@ "zh-chs": "罗马尼亚文(摩尔达维亚)", "zh-cht": "羅馬尼亞文(摩爾達維亞)", "xloc": [ - "default.handlebars->41->1673" + "default.handlebars->41->1679" ] }, { @@ -53281,8 +53325,8 @@ "xloc": [ "default-mobile.handlebars->11->138", "default-mobile.handlebars->11->474", - "default.handlebars->41->1347", - "default.handlebars->41->2153", + "default.handlebars->41->1352", + "default.handlebars->41->2159", "sharing.handlebars->11->49" ] }, @@ -53430,7 +53474,7 @@ "zh-chs": "路由器", "zh-cht": "路由器", "xloc": [ - "default.handlebars->41->360" + "default.handlebars->41->361" ] }, { @@ -53497,9 +53541,9 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->1096", - "default.handlebars->41->1116", - "default.handlebars->41->674" + "default.handlebars->41->1101", + "default.handlebars->41->1121", + "default.handlebars->41->675" ] }, { @@ -53524,7 +53568,7 @@ "zh-chs": "运行MeshCentral Router,然后单击“安装”以使其可从浏览器启动。", "zh-cht": "運行MeshCentral Router,然後單擊“安裝”以使其可從瀏覽器啟動。", "xloc": [ - "default.handlebars->41->1158" + "default.handlebars->41->1163" ] }, { @@ -53549,8 +53593,8 @@ "zh-chs": "以代理身份运行", "zh-cht": "以代理身份運行", "xloc": [ - "default.handlebars->41->1113", - "default.handlebars->41->671" + "default.handlebars->41->1118", + "default.handlebars->41->672" ] }, { @@ -53575,8 +53619,8 @@ "zh-chs": "以用户身份运行,如果没有用户,则运行代理", "zh-cht": "以用戶身份運行,如果沒有用戶,則運行代理", "xloc": [ - "default.handlebars->41->1114", - "default.handlebars->41->672" + "default.handlebars->41->1119", + "default.handlebars->41->673" ] }, { @@ -53601,7 +53645,7 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->648" + "default.handlebars->41->649" ] }, { @@ -53626,8 +53670,8 @@ "zh-chs": "在所选设备上运行命令。", "zh-cht": "在所選裝置上運行命令。", "xloc": [ - "default.handlebars->41->1109", - "default.handlebars->41->667" + "default.handlebars->41->1114", + "default.handlebars->41->668" ] }, { @@ -53669,8 +53713,8 @@ "ru": "Запущен", "tr": "Koşma", "xloc": [ - "default.handlebars->41->1278", - "default.handlebars->41->1282" + "default.handlebars->41->1283", + "default.handlebars->41->1287" ] }, { @@ -53695,7 +53739,7 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->2220" + "default.handlebars->41->2226" ] }, { @@ -53720,7 +53764,7 @@ "zh-chs": "以用户身份运行命令", "zh-cht": "以用戶身份運行命令", "xloc": [ - "default.handlebars->41->2295" + "default.handlebars->41->2301" ] }, { @@ -53745,7 +53789,7 @@ "zh-chs": "如果可能,以用户身份运行命令", "zh-cht": "如果可能,以用戶身份運行命令", "xloc": [ - "default.handlebars->41->2296" + "default.handlebars->41->2302" ] }, { @@ -53770,7 +53814,7 @@ "zh-chs": "俄文", "zh-cht": "俄文", "xloc": [ - "default.handlebars->41->1674" + "default.handlebars->41->1680" ] }, { @@ -53795,7 +53839,7 @@ "zh-chs": "俄文(摩尔达维亚)", "zh-cht": "俄文(摩爾達維亞)", "xloc": [ - "default.handlebars->41->1675" + "default.handlebars->41->1681" ] }, { @@ -53861,8 +53905,8 @@ "tr": "SCP", "zh-chs": "SCP", "xloc": [ - "default.handlebars->41->393", - "default.handlebars->41->928" + "default.handlebars->41->394", + "default.handlebars->41->929" ] }, { @@ -53908,8 +53952,8 @@ "zh-chs": "短信", "zh-cht": "短信", "xloc": [ - "default.handlebars->41->2643", - "default.handlebars->41->2648", + "default.handlebars->41->2649", + "default.handlebars->41->2654", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3", "login.handlebars->container->column_l->centralTable->1->0->logincell->resettokenpanel->1->5->1->2->1->3", "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3", @@ -53939,7 +53983,7 @@ "zh-chs": "此用户的短信功能电话号码。", "zh-cht": "此用戶的短信功能電話號碼。", "xloc": [ - "default.handlebars->41->2664" + "default.handlebars->41->2670" ] }, { @@ -53963,8 +54007,8 @@ "tr": "SMS hatası", "zh-chs": "短信错误", "xloc": [ - "default-mobile.handlebars->11->741", - "default.handlebars->41->2889" + "default-mobile.handlebars->11->742", + "default.handlebars->41->2895" ] }, { @@ -53988,8 +54032,8 @@ "tr": "SMS hatası: {0}", "zh-chs": "短信错误:{0}", "xloc": [ - "default-mobile.handlebars->11->742", - "default.handlebars->41->2890" + "default-mobile.handlebars->11->743", + "default.handlebars->41->2896" ] }, { @@ -54033,8 +54077,8 @@ "tr": "SMS ağ geçidi etkinleştirilmedi", "zh-chs": "短信网关未启用", "xloc": [ - "default-mobile.handlebars->11->736", - "default.handlebars->41->2884" + "default-mobile.handlebars->11->737", + "default.handlebars->41->2890" ] }, { @@ -54045,7 +54089,7 @@ "ru": "SMS-сообщение", "fr": "Message SMS", "xloc": [ - "default.handlebars->41->2834" + "default.handlebars->41->2840" ] }, { @@ -54117,8 +54161,8 @@ "tr": "SMS başarıyla gönderildi.", "zh-chs": "短信发送成功。", "xloc": [ - "default-mobile.handlebars->11->740", - "default.handlebars->41->2888" + "default-mobile.handlebars->11->741", + "default.handlebars->41->2894" ] }, { @@ -54162,8 +54206,8 @@ "tr": "SSH", "zh-chs": "SSH", "xloc": [ - "default.handlebars->41->392", - "default.handlebars->41->926" + "default.handlebars->41->393", + "default.handlebars->41->927" ] }, { @@ -54199,7 +54243,7 @@ "zh-chs": "SSH 连接", "xloc": [ "default-mobile.handlebars->11->445", - "default.handlebars->41->742" + "default.handlebars->41->743" ] }, { @@ -54225,8 +54269,8 @@ "xloc": [ "default-mobile.handlebars->11->443", "default-mobile.handlebars->11->479", - "default.handlebars->41->1302", - "default.handlebars->41->1357" + "default.handlebars->41->1307", + "default.handlebars->41->1362" ] }, { @@ -54272,7 +54316,7 @@ "zh-chs": "SSH远程连接端口:", "xloc": [ "default-mobile.handlebars->11->444", - "default.handlebars->41->741" + "default.handlebars->41->742" ] }, { @@ -54305,8 +54349,8 @@ "xloc": [ "default-mobile.handlebars->11->324", "default-mobile.handlebars->11->328", - "default.handlebars->41->883", - "default.handlebars->41->887" + "default.handlebars->41->884", + "default.handlebars->41->888" ] }, { @@ -54318,8 +54362,8 @@ "xloc": [ "default-mobile.handlebars->11->323", "default-mobile.handlebars->11->327", - "default.handlebars->41->882", - "default.handlebars->41->886" + "default.handlebars->41->883", + "default.handlebars->41->887" ] }, { @@ -54331,8 +54375,8 @@ "xloc": [ "default-mobile.handlebars->11->322", "default-mobile.handlebars->11->326", - "default.handlebars->41->881", - "default.handlebars->41->885" + "default.handlebars->41->882", + "default.handlebars->41->886" ] }, { @@ -54342,7 +54386,7 @@ "ru": "SSL-сертификат не на сервере", "fr": "Le certificat SSL n'est pas sur le serveur", "xloc": [ - "default.handlebars->41->1207" + "default.handlebars->41->1212" ] }, { @@ -54352,7 +54396,7 @@ "ru": "SSL не разрешен сервером", "fr": "SSL n'est pas autorisé par le serveur", "xloc": [ - "default.handlebars->41->1206" + "default.handlebars->41->1211" ] }, { @@ -54362,7 +54406,7 @@ "ru": "SSL требуется сервером", "fr": "SSL est requis par le serveur", "xloc": [ - "default.handlebars->41->1205" + "default.handlebars->41->1210" ] }, { @@ -54372,7 +54416,7 @@ "ru": "SSL с аутентификацией пользователя, требуется сервером", "fr": "SSL avec une authentification de l'utilisateur est requise par le serveur", "xloc": [ - "default.handlebars->41->1210" + "default.handlebars->41->1215" ] }, { @@ -54397,8 +54441,8 @@ "zh-chs": "与设备名称相同", "zh-cht": "與裝置名稱相同", "xloc": [ - "default.handlebars->41->448", - "default.handlebars->41->457" + "default.handlebars->41->449", + "default.handlebars->41->458" ] }, { @@ -54423,7 +54467,7 @@ "zh-chs": "萨米(拉普兰)", "zh-cht": "薩米(拉普蘭)", "xloc": [ - "default.handlebars->41->1676" + "default.handlebars->41->1682" ] }, { @@ -54448,9 +54492,9 @@ "zh-chs": "IP范围值样本", "zh-cht": "IP範圍值樣本", "xloc": [ - "default.handlebars->41->252", - "default.handlebars->41->256", - "default.handlebars->41->484" + "default.handlebars->41->253", + "default.handlebars->41->257", + "default.handlebars->41->485" ] }, { @@ -54497,7 +54541,7 @@ "zh-chs": "三乡", "zh-cht": "三鄉", "xloc": [ - "default.handlebars->41->1677" + "default.handlebars->41->1683" ] }, { @@ -54522,7 +54566,7 @@ "zh-chs": "梵文", "zh-cht": "梵文", "xloc": [ - "default.handlebars->41->1678" + "default.handlebars->41->1684" ] }, { @@ -54547,7 +54591,7 @@ "zh-chs": "撒丁岛", "zh-cht": "撒丁島", "xloc": [ - "default.handlebars->41->1679" + "default.handlebars->41->1685" ] }, { @@ -54623,7 +54667,7 @@ "zh-chs": "保存节点位置", "zh-cht": "保存節點位置", "xloc": [ - "default.handlebars->41->752" + "default.handlebars->41->753" ] }, { @@ -54697,8 +54741,8 @@ "zh-chs": "扫瞄", "zh-cht": "掃瞄", "xloc": [ - "default.handlebars->41->478", - "default.handlebars->41->480" + "default.handlebars->41->479", + "default.handlebars->41->481" ] }, { @@ -54723,7 +54767,7 @@ "zh-chs": "扫描网络", "zh-cht": "掃描網絡", "xloc": [ - "default.handlebars->41->436" + "default.handlebars->41->437" ] }, { @@ -54748,7 +54792,7 @@ "zh-chs": "扫描英特尔®AMT设备", "zh-cht": "掃描Intel® AMT裝置", "xloc": [ - "default.handlebars->41->483" + "default.handlebars->41->484" ] }, { @@ -54773,7 +54817,7 @@ "zh-chs": "扫描未有任何结果。", "zh-cht": "掃描未有任何結果。", "xloc": [ - "default.handlebars->41->255" + "default.handlebars->41->256" ] }, { @@ -54798,7 +54842,7 @@ "zh-chs": "扫描...", "zh-cht": "掃描...", "xloc": [ - "default.handlebars->41->485" + "default.handlebars->41->486" ] }, { @@ -54908,8 +54952,8 @@ "zh-chs": "搜寻", "zh-cht": "搜尋", "xloc": [ - "default.handlebars->41->1351", - "default.handlebars->41->765", + "default.handlebars->41->1356", + "default.handlebars->41->766", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devMapToolbar", "sharing.handlebars->11->53" ] @@ -54981,7 +55025,7 @@ "ru": "Ключ", "tr": "Gizli", "xloc": [ - "default.handlebars->41->202" + "default.handlebars->41->203" ] }, { @@ -55037,7 +55081,7 @@ "zh-cht": "已使用TLS保安", "xloc": [ "default-mobile.handlebars->11->573", - "default.handlebars->41->1455" + "default.handlebars->41->1460" ] }, { @@ -55064,11 +55108,11 @@ "xloc": [ "default-mobile.handlebars->11->388", "default-mobile.handlebars->11->572", - "default.handlebars->41->1130", - "default.handlebars->41->1454", - "default.handlebars->41->2151", - "default.handlebars->41->2644", - "default.handlebars->41->461", + "default.handlebars->41->1135", + "default.handlebars->41->1459", + "default.handlebars->41->2157", + "default.handlebars->41->2650", + "default.handlebars->41->462", "default.handlebars->container->column_l->p21->p21main->1->1->meshSecurityChartDiv->1" ] }, @@ -55094,7 +55138,7 @@ "zh-chs": "安全密钥", "zh-cht": "安全密鑰", "xloc": [ - "default.handlebars->41->2639" + "default.handlebars->41->2645" ] }, { @@ -55118,8 +55162,8 @@ "tr": "Güvenlik uyarısı", "zh-chs": "安全警告", "xloc": [ - "default-mobile.handlebars->11->710", - "default.handlebars->41->2858" + "default-mobile.handlebars->11->711", + "default.handlebars->41->2864" ] }, { @@ -55190,13 +55234,13 @@ "zh-chs": "全选", "zh-cht": "全選", "xloc": [ - "default.handlebars->41->1354", - "default.handlebars->41->1356", - "default.handlebars->41->2177", - "default.handlebars->41->2411", - "default.handlebars->41->2497", - "default.handlebars->41->482", - "default.handlebars->41->639", + "default.handlebars->41->1359", + "default.handlebars->41->1361", + "default.handlebars->41->2183", + "default.handlebars->41->2417", + "default.handlebars->41->2503", + "default.handlebars->41->483", + "default.handlebars->41->640", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p4->3->1->0->3->3", @@ -55225,9 +55269,9 @@ "ru": "Выберите дату и время...", "tr": "Tarih ve Saati Seçin...", "xloc": [ - "default.handlebars->41->1080", - "default.handlebars->41->1082", - "default.handlebars->41->2792" + "default.handlebars->41->1085", + "default.handlebars->41->1087", + "default.handlebars->41->2798" ] }, { @@ -55252,11 +55296,11 @@ "zh-chs": "选择无", "zh-cht": "選擇無", "xloc": [ - "default.handlebars->41->1355", - "default.handlebars->41->2176", - "default.handlebars->41->2410", - "default.handlebars->41->2496", - "default.handlebars->41->638", + "default.handlebars->41->1360", + "default.handlebars->41->2182", + "default.handlebars->41->2416", + "default.handlebars->41->2502", + "default.handlebars->41->639", "default.handlebars->meshContextMenu->cxselectnone", "sharing.handlebars->11->57" ] @@ -55282,7 +55326,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulaması için kaydedilecek bir cihaz seçin. Seçildikten sonra, cihaz onay isteyecektir.", "zh-chs": "选择要注册推送通知身份验证的设备。选择后,设备将提示确认。", "xloc": [ - "default.handlebars->41->1523" + "default.handlebars->41->1529" ] }, { @@ -55307,7 +55351,7 @@ "zh-chs": "为所选设备选择一个新组", "zh-cht": "為所選裝置選擇一個新群", "xloc": [ - "default.handlebars->41->1144" + "default.handlebars->41->1149" ] }, { @@ -55332,7 +55376,7 @@ "zh-chs": "选择此设备的新组", "zh-cht": "選擇此裝置的新群", "xloc": [ - "default.handlebars->41->1143" + "default.handlebars->41->1148" ] }, { @@ -55357,7 +55401,7 @@ "zh-chs": "选择要放置的节点", "zh-cht": "選擇要放置的節點", "xloc": [ - "default.handlebars->41->768" + "default.handlebars->41->769" ] }, { @@ -55382,7 +55426,7 @@ "zh-chs": "选择要在所有选定设备上执行的操作。仅在拥有适当权限的情况下才能执行操作。", "zh-cht": "選擇要在所有選定裝置上執行的操作。僅在擁有適當權限的情況下才能執行操作。", "xloc": [ - "default.handlebars->41->656" + "default.handlebars->41->657" ] }, { @@ -55407,8 +55451,8 @@ "zh-chs": "选择要对所有选定用户执行的操作。", "zh-cht": "選擇要對所有選定用戶執行的操作。", "xloc": [ - "default.handlebars->41->2414", - "default.handlebars->41->2498" + "default.handlebars->41->2420", + "default.handlebars->41->2504" ] }, { @@ -55434,7 +55478,7 @@ "zh-cht": "選擇要在此裝置上執行的操作。", "xloc": [ "default-mobile.handlebars->11->357", - "default.handlebars->41->1088" + "default.handlebars->41->1093" ] }, { @@ -55459,7 +55503,7 @@ "zh-chs": "选择新密码", "zh-cht": "選擇新密碼", "xloc": [ - "default.handlebars->41->1964" + "default.handlebars->41->1970" ] }, { @@ -55510,8 +55554,8 @@ "zh-chs": "仅自我事件", "zh-cht": "僅自我事件", "xloc": [ - "default-mobile.handlebars->11->691", - "default.handlebars->41->2082" + "default-mobile.handlebars->11->692", + "default.handlebars->41->2088" ] }, { @@ -55586,7 +55630,7 @@ "zh-chs": "发电邮", "zh-cht": "發電郵", "xloc": [ - "default.handlebars->41->2425" + "default.handlebars->41->2431" ] }, { @@ -55611,8 +55655,8 @@ "zh-chs": "发送MQTT消息", "zh-cht": "發送MQTT消息", "xloc": [ - "default.handlebars->41->1100", - "default.handlebars->41->640" + "default.handlebars->41->1105", + "default.handlebars->41->641" ] }, { @@ -55637,7 +55681,7 @@ "zh-chs": "发送MQTT消息", "zh-cht": "發送MQTT消息", "xloc": [ - "default.handlebars->41->1136" + "default.handlebars->41->1141" ] }, { @@ -55662,7 +55706,7 @@ "zh-chs": "发送短信", "zh-cht": "發送簡訊", "xloc": [ - "default.handlebars->41->2423" + "default.handlebars->41->2429" ] }, { @@ -55687,7 +55731,7 @@ "zh-chs": "发送短信给该用户", "zh-cht": "發送短信給該用戶", "xloc": [ - "default.handlebars->41->2649" + "default.handlebars->41->2655" ] }, { @@ -55712,7 +55756,7 @@ "zh-chs": "发送电邮给该用户", "zh-cht": "發送電郵給該用戶", "xloc": [ - "default.handlebars->41->2651" + "default.handlebars->41->2657" ] }, { @@ -55737,7 +55781,7 @@ "zh-chs": "向该组中的所有用户发送通知。", "zh-cht": "向該群中的所有用戶發送通知。", "xloc": [ - "default.handlebars->41->2540" + "default.handlebars->41->2546" ] }, { @@ -55762,7 +55806,7 @@ "zh-chs": "向该用户发送文本通知。", "zh-cht": "向該用戶發送文本通知。", "xloc": [ - "default.handlebars->41->2426" + "default.handlebars->41->2432" ] }, { @@ -55787,7 +55831,7 @@ "zh-chs": "发送电邮给用户", "zh-cht": "發送電郵給用戶", "xloc": [ - "default.handlebars->41->2406" + "default.handlebars->41->2412" ] }, { @@ -55812,7 +55856,7 @@ "zh-chs": "发送安装连结", "zh-cht": "發送安裝鏈結", "xloc": [ - "default.handlebars->41->494" + "default.handlebars->41->495" ] }, { @@ -55837,7 +55881,7 @@ "zh-chs": "发送邀请电邮。", "zh-cht": "發送邀請電郵。", "xloc": [ - "default.handlebars->41->2468" + "default.handlebars->41->2474" ] }, { @@ -55990,7 +56034,7 @@ "zh-chs": "发送用户通知", "zh-cht": "發送用戶通知", "xloc": [ - "default.handlebars->41->2653" + "default.handlebars->41->2659" ] }, { @@ -56083,7 +56127,7 @@ "zh-chs": "塞尔维亚", "zh-cht": "塞爾維亞", "xloc": [ - "default.handlebars->41->1682" + "default.handlebars->41->1688" ] }, { @@ -56108,8 +56152,8 @@ "zh-chs": "序列号", "zh-cht": "序列號", "xloc": [ - "default-mobile.handlebars->11->584", - "default.handlebars->41->1466" + "default-mobile.handlebars->11->585", + "default.handlebars->41->1472" ] }, { @@ -56155,7 +56199,7 @@ "zh-chs": "服务器备份", "zh-cht": "伺服器備份", "xloc": [ - "default.handlebars->41->2478" + "default.handlebars->41->2484" ] }, { @@ -56180,7 +56224,7 @@ "zh-chs": "服务器证书", "zh-cht": "伺服器憑證", "xloc": [ - "default.handlebars->41->2965" + "default.handlebars->41->2971" ] }, { @@ -56204,7 +56248,7 @@ "tr": "Sunucu Bağlantısı", "zh-chs": "服务器连接", "xloc": [ - "default.handlebars->41->327" + "default.handlebars->41->328" ] }, { @@ -56229,7 +56273,7 @@ "zh-chs": "服务器数据库", "zh-cht": "伺服器數據庫", "xloc": [ - "default.handlebars->41->2966" + "default.handlebars->41->2972" ] }, { @@ -56254,13 +56298,13 @@ "zh-chs": "服务器档案", "zh-cht": "伺服器檔案", "xloc": [ - "default-mobile.handlebars->11->668", - "default-mobile.handlebars->11->683", - "default.handlebars->41->1003", - "default.handlebars->41->1025", - "default.handlebars->41->2042", - "default.handlebars->41->2073", - "default.handlebars->41->2475" + "default-mobile.handlebars->11->669", + "default-mobile.handlebars->11->684", + "default.handlebars->41->1008", + "default.handlebars->41->1030", + "default.handlebars->41->2048", + "default.handlebars->41->2079", + "default.handlebars->41->2481" ] }, { @@ -56309,8 +56353,8 @@ "tr": "Sunucu Sınırı", "zh-chs": "服务器限制", "xloc": [ - "default-mobile.handlebars->11->709", - "default.handlebars->41->2857" + "default-mobile.handlebars->11->710", + "default.handlebars->41->2863" ] }, { @@ -56359,8 +56403,8 @@ "zh-chs": "服务器权限", "zh-cht": "伺服器權限", "xloc": [ - "default.handlebars->41->2398", - "default.handlebars->41->2490" + "default.handlebars->41->2404", + "default.handlebars->41->2496" ] }, { @@ -56385,7 +56429,7 @@ "zh-chs": "服务器配额", "zh-cht": "伺服器配額", "xloc": [ - "default.handlebars->41->2613" + "default.handlebars->41->2619" ] }, { @@ -56410,7 +56454,7 @@ "zh-chs": "服务器还原", "zh-cht": "伺服器還原", "xloc": [ - "default.handlebars->41->2479" + "default.handlebars->41->2485" ] }, { @@ -56435,7 +56479,7 @@ "zh-chs": "服务器权限", "zh-cht": "伺服器權限", "xloc": [ - "default.handlebars->41->2612" + "default.handlebars->41->2618" ] }, { @@ -56460,7 +56504,7 @@ "zh-chs": "服务器状态", "zh-cht": "伺服器狀態", "xloc": [ - "default.handlebars->41->2896" + "default.handlebars->41->2902" ] }, { @@ -56510,7 +56554,7 @@ "zh-chs": "服务器跟踪", "zh-cht": "伺服器追蹤", "xloc": [ - "default.handlebars->41->2978" + "default.handlebars->41->2984" ] }, { @@ -56534,7 +56578,7 @@ "tr": "Sunucu İzleme Etkinliği", "zh-chs": "服务器跟踪事件", "xloc": [ - "default.handlebars->41->2957" + "default.handlebars->41->2963" ] }, { @@ -56610,7 +56654,7 @@ "zh-chs": "服务器更新", "zh-cht": "伺服器更新", "xloc": [ - "default.handlebars->41->2480" + "default.handlebars->41->2486" ] }, { @@ -56736,7 +56780,7 @@ "zh-chs": "服务器没有错误日志。", "zh-cht": "伺服器沒有錯誤日誌。", "xloc": [ - "default.handlebars->41->190" + "default.handlebars->41->191" ] }, { @@ -56860,7 +56904,7 @@ "zh-chs": "ServerStats.csv", "zh-cht": "ServerStats.csv", "xloc": [ - "default.handlebars->41->2956" + "default.handlebars->41->2962" ] }, { @@ -56885,7 +56929,7 @@ "zh-chs": "服务详情", "zh-cht": "服務詳情", "xloc": [ - "default.handlebars->41->1295" + "default.handlebars->41->1300" ] }, { @@ -56935,8 +56979,8 @@ "zh-chs": "会话", "zh-cht": "節", "xloc": [ - "default.handlebars->41->2739", - "default.handlebars->41->2797", + "default.handlebars->41->2745", + "default.handlebars->41->2803", "ssh.handlebars->3->24", "ssh.handlebars->3->26" ] @@ -56962,7 +57006,7 @@ "tr": "Oturum kimliği", "zh-chs": "会话 ID", "xloc": [ - "default.handlebars->41->122" + "default.handlebars->41->123" ] }, { @@ -56987,7 +57031,7 @@ "zh-chs": "会话信息", "zh-cht": "會議訊息", "xloc": [ - "default.handlebars->41->1227", + "default.handlebars->41->1232", "sharing.handlebars->11->18" ] }, @@ -57014,8 +57058,8 @@ "xloc": [ "default-mobile.handlebars->11->465", "default-mobile.handlebars->11->472", - "default.handlebars->41->1326", - "default.handlebars->41->1342" + "default.handlebars->41->1331", + "default.handlebars->41->1347" ] }, { @@ -57093,8 +57137,8 @@ "xloc": [ "default-mobile.handlebars->11->466", "default-mobile.handlebars->11->473", - "default.handlebars->41->1327", - "default.handlebars->41->1343" + "default.handlebars->41->1332", + "default.handlebars->41->1348" ] }, { @@ -57165,7 +57209,7 @@ "zh-cht": "節", "xloc": [ "default-mobile.handlebars->11->228", - "default.handlebars->41->424", + "default.handlebars->41->425", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->7" ] }, @@ -57186,7 +57230,7 @@ "ru": "Установить буфер", "tr": "Panoyu Ayarla", "xloc": [ - "default.handlebars->41->1271" + "default.handlebars->41->1276" ] }, { @@ -57256,7 +57300,7 @@ "zh-chs": "设置标签", "zh-cht": "設置標籤", "xloc": [ - "default.handlebars->41->678" + "default.handlebars->41->679" ] }, { @@ -57281,7 +57325,7 @@ "zh-chs": "设置剪贴板内容,{0}个字节", "zh-cht": "設置剪貼板內容,{0}個字節", "xloc": [ - "default.handlebars->41->2218" + "default.handlebars->41->2224" ] }, { @@ -57332,7 +57376,7 @@ "zh-chs": "设定档案", "zh-cht": "設定檔案", "xloc": [ - "default.handlebars->41->562" + "default.handlebars->41->563" ] }, { @@ -57384,8 +57428,8 @@ "zh-cht": "設定", "xloc": [ "agent-translations.json", - "default.handlebars->41->1909", - "default.handlebars->41->438" + "default.handlebars->41->1915", + "default.handlebars->41->439" ] }, { @@ -57454,7 +57498,7 @@ "zh-chs": "将此服务器设置为自动将备份上传到Google云端硬盘。首先为您的帐户创建并输入Google Drive ClientID和ClientSecret。", "zh-cht": "將此服務器設置為自動將備份上傳到Google雲端硬盤。首先為您的帳戶創建並輸入Google Drive ClientID和ClientSecret。", "xloc": [ - "default.handlebars->41->1828" + "default.handlebars->41->1834" ] }, { @@ -57481,9 +57525,9 @@ "xloc": [ "default-mobile.handlebars->11->3", "default.handlebars->41->10", - "default.handlebars->41->363", - "default.handlebars->41->366", - "default.handlebars->41->431", + "default.handlebars->41->364", + "default.handlebars->41->367", + "default.handlebars->41->432", "sharing.handlebars->11->3", "ssh.handlebars->3->3", "xterm.handlebars->9->3" @@ -57511,7 +57555,7 @@ "zh-chs": "共享", "zh-cht": "共享", "xloc": [ - "default.handlebars->41->903" + "default.handlebars->41->904" ] }, { @@ -57536,8 +57580,8 @@ "zh-chs": "共享设备", "zh-cht": "共享裝置", "xloc": [ - "default.handlebars->41->1087", - "default.handlebars->41->295" + "default.handlebars->41->1092", + "default.handlebars->41->296" ] }, { @@ -57607,7 +57651,7 @@ "zh-chs": "共享过程", "zh-cht": "共享過程", "xloc": [ - "default.handlebars->41->1289" + "default.handlebars->41->1294" ] }, { @@ -57631,7 +57675,7 @@ "tr": "Paylaşım", "zh-chs": "分享", "xloc": [ - "default.handlebars->41->2087" + "default.handlebars->41->2093" ] }, { @@ -57729,8 +57773,8 @@ "xloc": [ "default-mobile.handlebars->11->430", "default-mobile.handlebars->11->434", - "default.handlebars->41->1252", - "default.handlebars->41->1256" + "default.handlebars->41->1257", + "default.handlebars->41->1261" ] }, { @@ -58037,8 +58081,8 @@ "zh-chs": "只显示自己的事件", "zh-cht": "只顯示自己的事件", "xloc": [ - "default-mobile.handlebars->11->671", - "default.handlebars->41->2045" + "default-mobile.handlebars->11->672", + "default.handlebars->41->2051" ] }, { @@ -58079,7 +58123,7 @@ "ru": "Показать трафик", "tr": "Trafiği Göster", "xloc": [ - "default.handlebars->41->2793" + "default.handlebars->41->2799" ] }, { @@ -58104,7 +58148,7 @@ "zh-chs": "显示连接工具栏", "zh-cht": "顯示連接工具欄", "xloc": [ - "default.handlebars->41->2001" + "default.handlebars->41->2007" ] }, { @@ -58154,7 +58198,7 @@ "zh-chs": "显示设备位置信息", "zh-cht": "顯示裝置位置訊息", "xloc": [ - "default.handlebars->41->917" + "default.handlebars->41->918" ] }, { @@ -58179,7 +58223,7 @@ "zh-chs": "显示设备网络接口信息", "zh-cht": "顯示裝置網絡介面訊息", "xloc": [ - "default.handlebars->41->915" + "default.handlebars->41->916" ] }, { @@ -58229,8 +58273,8 @@ "zh-chs": "显示1分钟", "zh-cht": "顯示1分鐘", "xloc": [ - "default.handlebars->41->2429", - "default.handlebars->41->2454" + "default.handlebars->41->2435", + "default.handlebars->41->2460" ] }, { @@ -58255,8 +58299,8 @@ "zh-chs": "显示10秒", "zh-cht": "顯示10秒", "xloc": [ - "default.handlebars->41->2428", - "default.handlebars->41->2453" + "default.handlebars->41->2434", + "default.handlebars->41->2459" ] }, { @@ -58281,8 +58325,8 @@ "zh-chs": "显示5分钟", "zh-cht": "顯示5分鐘", "xloc": [ - "default.handlebars->41->2430", - "default.handlebars->41->2455" + "default.handlebars->41->2436", + "default.handlebars->41->2461" ] }, { @@ -58307,8 +58351,8 @@ "zh-chs": "显示消息,直到被用户拒绝", "zh-cht": "顯示消息,直到被用戶拒絕", "xloc": [ - "default.handlebars->41->2427", - "default.handlebars->41->2452" + "default.handlebars->41->2433", + "default.handlebars->41->2458" ] }, { @@ -58580,8 +58624,8 @@ "zh-chs": "简单管理员控制模式(ACM)", "zh-cht": "簡單管理員控制模式(ACM)", "xloc": [ - "default.handlebars->41->1900", - "default.handlebars->41->1954" + "default.handlebars->41->1906", + "default.handlebars->41->1960" ] }, { @@ -58606,8 +58650,8 @@ "zh-chs": "简单客户端控制模式(CCM)", "zh-cht": "簡單客戶端控制模式(CCM)", "xloc": [ - "default.handlebars->41->1898", - "default.handlebars->41->1958" + "default.handlebars->41->1904", + "default.handlebars->41->1964" ] }, { @@ -58632,7 +58676,7 @@ "zh-chs": "信地", "zh-cht": "信地", "xloc": [ - "default.handlebars->41->1680" + "default.handlebars->41->1686" ] }, { @@ -58657,7 +58701,7 @@ "zh-chs": "僧伽罗文", "zh-cht": "僧伽羅文", "xloc": [ - "default.handlebars->41->1681" + "default.handlebars->41->1687" ] }, { @@ -58695,7 +58739,7 @@ "ru": "Единая точка входа", "fr": "Authentification unique", "xloc": [ - "default.handlebars->41->2841" + "default.handlebars->41->2847" ] }, { @@ -58741,8 +58785,8 @@ "zh-chs": "尺寸", "zh-cht": "尺寸", "xloc": [ - "default.handlebars->41->2742", - "default.handlebars->41->2763", + "default.handlebars->41->2748", + "default.handlebars->41->2769", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSize" ] }, @@ -58768,7 +58812,7 @@ "zh-chs": "缩放:100%", "zh-cht": "縮放:100%", "xloc": [ - "default.handlebars->41->1384", + "default.handlebars->41->1389", "sharing.handlebars->11->85" ] }, @@ -58794,7 +58838,7 @@ "zh-chs": "缩放:125%", "zh-cht": "縮放:125%", "xloc": [ - "default.handlebars->41->1385", + "default.handlebars->41->1390", "sharing.handlebars->11->86" ] }, @@ -58820,7 +58864,7 @@ "zh-chs": "缩放:150%", "zh-cht": "縮放:150%", "xloc": [ - "default.handlebars->41->1386", + "default.handlebars->41->1391", "sharing.handlebars->11->87" ] }, @@ -58846,7 +58890,7 @@ "zh-chs": "缩放:200%", "zh-cht": "縮放:200%", "xloc": [ - "default.handlebars->41->1387", + "default.handlebars->41->1392", "sharing.handlebars->11->88" ] }, @@ -58876,7 +58920,7 @@ "default-mobile.handlebars->11->232", "default-mobile.handlebars->11->233", "default-mobile.handlebars->11->365", - "default.handlebars->41->1097", + "default.handlebars->41->1102", "default.handlebars->41->2", "default.handlebars->41->3", "default.handlebars->41->4" @@ -58904,7 +58948,7 @@ "zh-chs": "把装置休眠", "zh-cht": "把裝置休眠", "xloc": [ - "default.handlebars->41->645" + "default.handlebars->41->646" ] }, { @@ -58931,8 +58975,8 @@ "xloc": [ "default-mobile.handlebars->11->239", "default-mobile.handlebars->11->240", - "default.handlebars->41->602", - "default.handlebars->41->604" + "default.handlebars->41->603", + "default.handlebars->41->605" ] }, { @@ -58957,7 +59001,7 @@ "zh-chs": "斯洛伐克文", "zh-cht": "斯洛伐克文", "xloc": [ - "default.handlebars->41->1683" + "default.handlebars->41->1689" ] }, { @@ -58982,7 +59026,7 @@ "zh-chs": "斯洛文尼亞文", "zh-cht": "斯洛文尼亞文", "xloc": [ - "default.handlebars->41->1684" + "default.handlebars->41->1690" ] }, { @@ -59060,7 +59104,7 @@ "zh-chs": "小焦点", "zh-cht": "小焦點", "xloc": [ - "default.handlebars->41->1234" + "default.handlebars->41->1239" ] }, { @@ -59085,8 +59129,8 @@ "zh-chs": "软断开代理", "zh-cht": "軟斷開代理", "xloc": [ - "default-mobile.handlebars->11->617", - "default.handlebars->41->1500" + "default-mobile.handlebars->11->618", + "default.handlebars->41->1506" ] }, { @@ -59112,7 +59156,7 @@ "zh-cht": "軟關機", "xloc": [ "default-mobile.handlebars->11->243", - "default.handlebars->41->610" + "default.handlebars->41->611" ] }, { @@ -59162,7 +59206,7 @@ "zh-chs": "索马尼", "zh-cht": "索馬尼", "xloc": [ - "default.handlebars->41->1685" + "default.handlebars->41->1691" ] }, { @@ -59187,7 +59231,7 @@ "zh-chs": "索比亚文", "zh-cht": "索比亞文", "xloc": [ - "default.handlebars->41->1686" + "default.handlebars->41->1692" ] }, { @@ -59418,7 +59462,7 @@ "zh-chs": "西班牙文", "zh-cht": "西班牙文", "xloc": [ - "default.handlebars->41->1687" + "default.handlebars->41->1693" ] }, { @@ -59443,7 +59487,7 @@ "zh-chs": "西班牙文(阿根廷)", "zh-cht": "西班牙文(阿根廷)", "xloc": [ - "default.handlebars->41->1688" + "default.handlebars->41->1694" ] }, { @@ -59468,7 +59512,7 @@ "zh-chs": "西班牙文(玻利维亚)", "zh-cht": "西班牙文(玻利維亞)", "xloc": [ - "default.handlebars->41->1689" + "default.handlebars->41->1695" ] }, { @@ -59493,7 +59537,7 @@ "zh-chs": "西班牙文(智利)", "zh-cht": "西班牙文(智利)", "xloc": [ - "default.handlebars->41->1690" + "default.handlebars->41->1696" ] }, { @@ -59518,7 +59562,7 @@ "zh-chs": "西班牙文(哥伦比亚)", "zh-cht": "西班牙文(哥倫比亞)", "xloc": [ - "default.handlebars->41->1691" + "default.handlebars->41->1697" ] }, { @@ -59543,7 +59587,7 @@ "zh-chs": "西班牙文(哥斯达黎加)", "zh-cht": "西班牙文(哥斯達黎加)", "xloc": [ - "default.handlebars->41->1692" + "default.handlebars->41->1698" ] }, { @@ -59568,7 +59612,7 @@ "zh-chs": "西班牙文(多米尼加共和国)", "zh-cht": "西班牙文(多米尼加共和國)", "xloc": [ - "default.handlebars->41->1693" + "default.handlebars->41->1699" ] }, { @@ -59593,7 +59637,7 @@ "zh-chs": "西班牙文(厄瓜多尔)", "zh-cht": "西班牙文(厄瓜多爾)", "xloc": [ - "default.handlebars->41->1694" + "default.handlebars->41->1700" ] }, { @@ -59618,7 +59662,7 @@ "zh-chs": "西班牙文(萨尔瓦多)", "zh-cht": "西班牙文(薩爾瓦多)", "xloc": [ - "default.handlebars->41->1695" + "default.handlebars->41->1701" ] }, { @@ -59643,7 +59687,7 @@ "zh-chs": "西班牙文(危地马拉)", "zh-cht": "西班牙文(危地馬拉)", "xloc": [ - "default.handlebars->41->1696" + "default.handlebars->41->1702" ] }, { @@ -59668,7 +59712,7 @@ "zh-chs": "西班牙文(洪都拉斯)", "zh-cht": "西班牙文(洪都拉斯)", "xloc": [ - "default.handlebars->41->1697" + "default.handlebars->41->1703" ] }, { @@ -59693,7 +59737,7 @@ "zh-chs": "西班牙文(墨西哥)", "zh-cht": "西班牙文(墨西哥)", "xloc": [ - "default.handlebars->41->1698" + "default.handlebars->41->1704" ] }, { @@ -59718,7 +59762,7 @@ "zh-chs": "西班牙文(尼加拉瓜)", "zh-cht": "西班牙文(尼加拉瓜)", "xloc": [ - "default.handlebars->41->1699" + "default.handlebars->41->1705" ] }, { @@ -59743,7 +59787,7 @@ "zh-chs": "西班牙文(巴拿马)", "zh-cht": "西班牙文(巴拿馬)", "xloc": [ - "default.handlebars->41->1700" + "default.handlebars->41->1706" ] }, { @@ -59768,7 +59812,7 @@ "zh-chs": "西班牙文(巴拉圭)", "zh-cht": "西班牙文(巴拉圭)", "xloc": [ - "default.handlebars->41->1701" + "default.handlebars->41->1707" ] }, { @@ -59793,7 +59837,7 @@ "zh-chs": "西班牙文(秘鲁)", "zh-cht": "西班牙文(秘魯)", "xloc": [ - "default.handlebars->41->1702" + "default.handlebars->41->1708" ] }, { @@ -59818,7 +59862,7 @@ "zh-chs": "西班牙文(波多黎各)", "zh-cht": "西班牙文(波多黎各)", "xloc": [ - "default.handlebars->41->1703" + "default.handlebars->41->1709" ] }, { @@ -59843,7 +59887,7 @@ "zh-chs": "西班牙文(西班牙)", "zh-cht": "西班牙文(西班牙)", "xloc": [ - "default.handlebars->41->1704" + "default.handlebars->41->1710" ] }, { @@ -59868,7 +59912,7 @@ "zh-chs": "西班牙文(乌拉圭)", "zh-cht": "西班牙文(烏拉圭)", "xloc": [ - "default.handlebars->41->1705" + "default.handlebars->41->1711" ] }, { @@ -59893,7 +59937,7 @@ "zh-chs": "西班牙文(委内瑞拉)", "zh-cht": "西班牙文(委內瑞拉)", "xloc": [ - "default.handlebars->41->1706" + "default.handlebars->41->1712" ] }, { @@ -59943,7 +59987,7 @@ "zh-chs": "稳定版", "zh-cht": "穩定版", "xloc": [ - "default.handlebars->41->183" + "default.handlebars->41->184" ] }, { @@ -59993,7 +60037,7 @@ "zh-chs": "开始", "zh-cht": "開始", "xloc": [ - "default.handlebars->41->1292" + "default.handlebars->41->1297" ] }, { @@ -60040,13 +60084,13 @@ "zh-chs": "开始时间", "zh-cht": "開始時間", "xloc": [ - "default.handlebars->41->1081", - "default.handlebars->41->118", - "default.handlebars->41->1224", - "default.handlebars->41->271", - "default.handlebars->41->2740", - "default.handlebars->41->276", - "default.handlebars->41->2765", + "default.handlebars->41->1086", + "default.handlebars->41->119", + "default.handlebars->41->1229", + "default.handlebars->41->272", + "default.handlebars->41->2746", + "default.handlebars->41->277", + "default.handlebars->41->2771", "sharing.handlebars->11->14" ] }, @@ -60072,7 +60116,7 @@ "zh-chs": "首先输入新旧MBEx密码。", "zh-cht": "首先輸入新舊MBEx密碼。", "xloc": [ - "default.handlebars->41->469" + "default.handlebars->41->470" ] }, { @@ -60107,7 +60151,7 @@ "pt-br": "Sessão Web-RDP \\\"{0}\\\" iniciada.", "ru": "Начат сеанс Web-RDP \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2346" + "default.handlebars->41->2352" ] }, { @@ -60118,7 +60162,7 @@ "pt-br": "Sessão Web-SFTP \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-SFTP \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2345" + "default.handlebars->41->2351" ] }, { @@ -60129,7 +60173,7 @@ "pt-br": "Sessão Web-SSH \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-SSH \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2344" + "default.handlebars->41->2350" ] }, { @@ -60140,7 +60184,7 @@ "pt-br": "Sessão Web-VNC \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-VNC \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2347" + "default.handlebars->41->2353" ] }, { @@ -60165,7 +60209,7 @@ "zh-chs": "开始桌面多重会话", "zh-cht": "啟動桌面多路復用會話", "xloc": [ - "default.handlebars->41->2202" + "default.handlebars->41->2208" ] }, { @@ -60176,7 +60220,7 @@ "pt-br": "Sessão de área de trabalho multiplex \\\"{0}\\\" iniciada", "ru": "Начался сеанс мультиплексирования рабочего стола \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2341" + "default.handlebars->41->2347" ] }, { @@ -60201,7 +60245,7 @@ "zh-chs": "从{1}到{2}开始了桌面会话“{0}”", "zh-cht": "從{1}到{2}開始了桌面會話“{0}”", "xloc": [ - "default.handlebars->41->2211" + "default.handlebars->41->2217" ] }, { @@ -60226,7 +60270,7 @@ "zh-chs": "从{1}到{2}开始文件管理会话“{0}”", "zh-cht": "從{1}到{2}開始文件管理會話“{0}”", "xloc": [ - "default.handlebars->41->2212" + "default.handlebars->41->2218" ] }, { @@ -60250,7 +60294,7 @@ "tr": "Yerel geçiş oturumu \\\"{0}\\\", {1} - {2} protokolü başlatıldı", "zh-chs": "已启动本地中继会话 \\\"{0}\\\",协议 {1} 到 {2}", "xloc": [ - "default.handlebars->41->2316" + "default.handlebars->41->2322" ] }, { @@ -60275,7 +60319,7 @@ "zh-chs": "从{1}到{2}开始中继会话“{0}”", "zh-cht": "從{1}到{2}開始中繼會話“{0}”", "xloc": [ - "default.handlebars->41->2209" + "default.handlebars->41->2215" ] }, { @@ -60300,7 +60344,7 @@ "zh-chs": "使用Toast通知启动远程桌面", "zh-cht": "使用Toast通知啟動遠程桌面", "xloc": [ - "default.handlebars->41->2231" + "default.handlebars->41->2237" ] }, { @@ -60325,7 +60369,7 @@ "zh-chs": "启动远程桌面,而无需通知", "zh-cht": "啟動遠程桌面,而無需通知", "xloc": [ - "default.handlebars->41->2232" + "default.handlebars->41->2238" ] }, { @@ -60350,7 +60394,7 @@ "zh-chs": "启动带有Toast通知的远程文件", "zh-cht": "啟動帶有Toast通知的遠程文件", "xloc": [ - "default.handlebars->41->2238" + "default.handlebars->41->2244" ] }, { @@ -60375,7 +60419,7 @@ "zh-chs": "已启动的远程文件,恕不另行通知", "zh-cht": "已啟動的遠程文件,恕不另行通知", "xloc": [ - "default.handlebars->41->2239" + "default.handlebars->41->2245" ] }, { @@ -60400,7 +60444,7 @@ "zh-chs": "从{1}到{2}开始了终端会话“{0}”", "zh-cht": "從{1}到{2}開始了終端會話“{0}”", "xloc": [ - "default.handlebars->41->2210" + "default.handlebars->41->2216" ] }, { @@ -60425,7 +60469,7 @@ "zh-chs": "现在开始", "zh-cht": "現在開始", "xloc": [ - "default.handlebars->41->1074" + "default.handlebars->41->1079" ] }, { @@ -60450,7 +60494,7 @@ "zh-chs": "接受本地用户后启动远程桌面", "zh-cht": "接受本地用戶後啟動遠程桌面", "xloc": [ - "default.handlebars->41->2226" + "default.handlebars->41->2232" ] }, { @@ -60475,7 +60519,7 @@ "zh-chs": "本地用户接受后启动远程文件", "zh-cht": "本地用戶接受後啟動遠程文件", "xloc": [ - "default.handlebars->41->2236" + "default.handlebars->41->2242" ] }, { @@ -60521,7 +60565,7 @@ "zh-chs": "状况", "zh-cht": "狀態", "xloc": [ - "default.handlebars->41->1283", + "default.handlebars->41->1288", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->1" ] }, @@ -60593,8 +60637,8 @@ "zh-chs": "状况", "zh-cht": "狀態", "xloc": [ - "default.handlebars->41->2683", - "default.handlebars->41->2758", + "default.handlebars->41->2689", + "default.handlebars->41->2764", "default.handlebars->container->column_l->p42->p42tbl->1->0->7" ] }, @@ -60620,7 +60664,7 @@ "zh-chs": "停止", "zh-cht": "停止", "xloc": [ - "default.handlebars->41->1293" + "default.handlebars->41->1298" ] }, { @@ -60645,7 +60689,7 @@ "zh-chs": "停止进程", "zh-cht": "停止進程", "xloc": [ - "default.handlebars->41->1274" + "default.handlebars->41->1279" ] }, { @@ -60669,7 +60713,7 @@ "tr": "#{0} \\\"{1}\\\" işlemi durdurulsun mu?", "zh-chs": "停止进程 #{0} \\\"{1}\\\"?", "xloc": [ - "default.handlebars->41->1301" + "default.handlebars->41->1306" ] }, { @@ -60715,8 +60759,8 @@ "tr": "durduruldu", "zh-chs": "停止", "xloc": [ - "default.handlebars->41->1277", - "default.handlebars->41->1281" + "default.handlebars->41->1282", + "default.handlebars->41->1286" ] }, { @@ -60762,8 +60806,8 @@ "zh-chs": "储存", "zh-cht": "儲存", "xloc": [ - "default-mobile.handlebars->11->600", - "default.handlebars->41->1482" + "default-mobile.handlebars->11->601", + "default.handlebars->41->1488" ] }, { @@ -60813,7 +60857,7 @@ "zh-chs": "超出储存空间", "zh-cht": "超出儲存空間", "xloc": [ - "default.handlebars->41->2157" + "default.handlebars->41->2163" ] }, { @@ -60824,7 +60868,7 @@ "fr": "Clé enregistrée", "xloc": [ "default-mobile.handlebars->11->448", - "default.handlebars->41->1308", + "default.handlebars->41->1313", "ssh.handlebars->3->6" ] }, @@ -60850,7 +60894,7 @@ "zh-chs": "强", "zh-cht": "強", "xloc": [ - "default.handlebars->41->1811" + "default.handlebars->41->1817" ] }, { @@ -60905,7 +60949,7 @@ "zh-chs": "主题", "zh-cht": "主題", "xloc": [ - "default.handlebars->41->2424" + "default.handlebars->41->2430" ] }, { @@ -60941,8 +60985,8 @@ "pt-br": "Login realizado com sucesso", "ru": "Успешный вход", "xloc": [ - "default.handlebars->41->2827", - "default.handlebars->41->2847" + "default.handlebars->41->2833", + "default.handlebars->41->2853" ] }, { @@ -60967,7 +61011,7 @@ "zh-chs": "成功", "zh-cht": "成功", "xloc": [ - "default.handlebars->41->110" + "default.handlebars->41->111" ] }, { @@ -61042,7 +61086,7 @@ "zh-chs": "苏图", "zh-cht": "蘇圖", "xloc": [ - "default.handlebars->41->1707" + "default.handlebars->41->1713" ] }, { @@ -61067,7 +61111,7 @@ "zh-chs": "斯瓦希里文", "zh-cht": "斯瓦希里文", "xloc": [ - "default.handlebars->41->1708" + "default.handlebars->41->1714" ] }, { @@ -61119,7 +61163,7 @@ "zh-chs": "瑞典文", "zh-cht": "瑞典文", "xloc": [ - "default.handlebars->41->1709" + "default.handlebars->41->1715" ] }, { @@ -61144,7 +61188,7 @@ "zh-chs": "瑞典文(芬兰)", "zh-cht": "瑞典文(芬蘭)", "xloc": [ - "default.handlebars->41->1710" + "default.handlebars->41->1716" ] }, { @@ -61169,7 +61213,7 @@ "zh-chs": "瑞典文(瑞典)", "zh-cht": "瑞典文(瑞典)", "xloc": [ - "default.handlebars->41->1711" + "default.handlebars->41->1717" ] }, { @@ -61191,8 +61235,8 @@ "default-mobile.handlebars->11->254", "default-mobile.handlebars->11->311", "default-mobile.handlebars->11->340", - "default.handlebars->41->372", - "default.handlebars->41->624" + "default.handlebars->41->373", + "default.handlebars->41->625" ] }, { @@ -61217,7 +61261,7 @@ "zh-chs": "将英特尔AMT切换到管理员控制模式(ACM)。", "zh-cht": "將英特爾AMT切換到管理員控制模式(ACM)。", "xloc": [ - "default.handlebars->41->1916" + "default.handlebars->41->1922" ] }, { @@ -61237,8 +61281,8 @@ "ru": "Порт свитча подключен", "tr": "Bağlantı noktasını değiştir", "xloc": [ - "default.handlebars->41->940", - "default.handlebars->41->941" + "default.handlebars->41->941", + "default.handlebars->41->942" ] }, { @@ -61258,7 +61302,7 @@ "ru": "Порт свитча готов к использованию.", "tr": "Anahtar portu kullanıma hazırdır.", "xloc": [ - "default.handlebars->41->371" + "default.handlebars->41->372" ] }, { @@ -61283,7 +61327,7 @@ "zh-chs": "将服务器设备名称同步到主机名称", "zh-cht": "將伺服器裝置名稱同步到主機名稱", "xloc": [ - "default.handlebars->41->2010" + "default.handlebars->41->2016" ] }, { @@ -61303,7 +61347,7 @@ "ru": "Синхронизировать имя устройства сервера с именем порта", "tr": "Sunucu cihaz adını bağlantı noktası adıyla senkronize et", "xloc": [ - "default.handlebars->41->2009" + "default.handlebars->41->2015" ] }, { @@ -61327,7 +61371,7 @@ "tr": "Sistem Tepsisi, Her zaman bağlı", "zh-chs": "系统托盘,始终连接", "xloc": [ - "default.handlebars->41->551" + "default.handlebars->41->552" ] }, { @@ -61351,7 +61395,7 @@ "tr": "Sistem Tepsisi, Kullanıcı isteği üzerine bağlanın", "zh-chs": "系统托盘,根据用户要求连接", "xloc": [ - "default.handlebars->41->550" + "default.handlebars->41->551" ] }, { @@ -61375,7 +61419,7 @@ "tr": "Sistem Tepsisi, Yalnızca Monitör", "zh-chs": "系统托盘,仅显示器", "xloc": [ - "default.handlebars->41->552" + "default.handlebars->41->553" ] }, { @@ -61400,7 +61444,7 @@ "zh-chs": "系统类型", "zh-cht": "系統類型", "xloc": [ - "default.handlebars->41->542" + "default.handlebars->41->543" ] }, { @@ -61469,7 +61513,7 @@ "zh-cht": "TCP路由", "xloc": [ "default-mobile.handlebars->11->220", - "default.handlebars->41->416" + "default.handlebars->41->417" ] }, { @@ -61598,7 +61642,7 @@ "zh-cht": "TLS", "xloc": [ "default-mobile.handlebars->11->299", - "default.handlebars->41->812" + "default.handlebars->41->813" ] }, { @@ -61624,7 +61668,7 @@ "zh-cht": "未設置TLS", "xloc": [ "default-mobile.handlebars->11->574", - "default.handlebars->41->1456" + "default.handlebars->41->1461" ] }, { @@ -61650,8 +61694,8 @@ "zh-cht": "需要TLS加密", "xloc": [ "default-mobile.handlebars->11->390", - "default.handlebars->41->1132", - "default.handlebars->41->463" + "default.handlebars->41->1137", + "default.handlebars->41->464" ] }, { @@ -61678,7 +61722,7 @@ "xloc": [ "default-mobile.handlebars->11->415", "default-mobile.handlebars->dialog->3->dialog3->deskkeys->3", - "default.handlebars->41->1237" + "default.handlebars->41->1242" ] }, { @@ -61703,8 +61747,8 @@ "zh-chs": "标签1,标签2,标签3", "zh-cht": "標籤1,標籤2,標籤3", "xloc": [ - "default.handlebars->41->1195", - "default.handlebars->41->681" + "default.handlebars->41->1200", + "default.handlebars->41->682" ] }, { @@ -61757,10 +61801,10 @@ "default-mobile.handlebars->11->320", "default-mobile.handlebars->11->321", "default-mobile.handlebars->11->403", - "default.handlebars->41->1194", - "default.handlebars->41->680", - "default.handlebars->41->879", + "default.handlebars->41->1199", + "default.handlebars->41->681", "default.handlebars->41->880", + "default.handlebars->41->881", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->7" ] }, @@ -61785,7 +61829,7 @@ "tr": "Bu kullanıcı adı ve şifreyi not alın, şifre tekrar gösterilemez.", "zh-chs": "记下这个用户名和密码,密码不能再次显示。", "xloc": [ - "default.handlebars->41->312" + "default.handlebars->41->313" ] }, { @@ -61810,7 +61854,7 @@ "zh-chs": "泰米尔文", "zh-cht": "泰米爾文", "xloc": [ - "default.handlebars->41->1712" + "default.handlebars->41->1718" ] }, { @@ -61835,7 +61879,7 @@ "zh-chs": "塔塔尔族", "zh-cht": "塔塔爾族", "xloc": [ - "default.handlebars->41->1713" + "default.handlebars->41->1719" ] }, { @@ -61860,7 +61904,7 @@ "zh-chs": "泰卢加", "zh-cht": "泰盧加", "xloc": [ - "default.handlebars->41->1714" + "default.handlebars->41->1720" ] }, { @@ -61887,16 +61931,16 @@ "xloc": [ "default-mobile.handlebars->11->212", "default-mobile.handlebars->11->353", - "default.handlebars->41->1050", - "default.handlebars->41->1924", - "default.handlebars->41->2002", - "default.handlebars->41->2752", - "default.handlebars->41->2811", - "default.handlebars->41->2842", - "default.handlebars->41->2933", - "default.handlebars->41->408", - "default.handlebars->41->755", - "default.handlebars->41->964", + "default.handlebars->41->1055", + "default.handlebars->41->1930", + "default.handlebars->41->2008", + "default.handlebars->41->2758", + "default.handlebars->41->2817", + "default.handlebars->41->2848", + "default.handlebars->41->2939", + "default.handlebars->41->409", + "default.handlebars->41->756", + "default.handlebars->41->969", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevTerminal", "default.handlebars->contextMenu->cxterminal", "sharing.handlebars->LeftSideToolBar" @@ -61923,9 +61967,9 @@ "tr": "Terminal + Dosyalar", "zh-chs": "终端 + 文件", "xloc": [ - "default.handlebars->41->1053", - "default.handlebars->41->1928", - "default.handlebars->41->968" + "default.handlebars->41->1058", + "default.handlebars->41->1934", + "default.handlebars->41->973" ] }, { @@ -61975,10 +62019,10 @@ "zh-chs": "终端通知", "zh-cht": "終端機通知", "xloc": [ - "default.handlebars->41->1880", - "default.handlebars->41->2529", - "default.handlebars->41->2631", - "default.handlebars->41->853" + "default.handlebars->41->1886", + "default.handlebars->41->2535", + "default.handlebars->41->2637", + "default.handlebars->41->854" ] }, { @@ -62003,10 +62047,10 @@ "zh-chs": "终端提示", "zh-cht": "終端機提示", "xloc": [ - "default.handlebars->41->1879", - "default.handlebars->41->2528", - "default.handlebars->41->2630", - "default.handlebars->41->852" + "default.handlebars->41->1885", + "default.handlebars->41->2534", + "default.handlebars->41->2636", + "default.handlebars->41->853" ] }, { @@ -62030,7 +62074,7 @@ "tr": "Terminal Oturumu", "zh-chs": "终端会话", "xloc": [ - "default.handlebars->41->2745" + "default.handlebars->41->2751" ] }, { @@ -62164,7 +62208,7 @@ "zh-chs": "泰国", "zh-cht": "泰國", "xloc": [ - "default.handlebars->41->1715" + "default.handlebars->41->1721" ] }, { @@ -62185,7 +62229,7 @@ "tr": "Cihaz kapalı", "xloc": [ "default-mobile.handlebars->11->253", - "default.handlebars->41->622" + "default.handlebars->41->623" ] }, { @@ -62321,7 +62365,7 @@ "zh-chs": "此计算机所属的设备组的名称", "zh-cht": "此電腦所屬的裝置群的名稱", "xloc": [ - "default.handlebars->41->782" + "default.handlebars->41->783" ] }, { @@ -62346,7 +62390,7 @@ "zh-chs": "此计算机所属的设备组的名称。", "zh-cht": "此電腦所屬的裝置群的名稱。", "xloc": [ - "default.handlebars->41->780" + "default.handlebars->41->781" ] }, { @@ -62371,8 +62415,8 @@ "zh-chs": "此计算机的在操作系统中已设置的名称", "zh-cht": "此電腦在操作系統中已設置的的名稱", "xloc": [ - "default.handlebars->41->783", - "default.handlebars->41->785" + "default.handlebars->41->784", + "default.handlebars->41->786" ] }, { @@ -62397,8 +62441,8 @@ "zh-chs": "目前没有任何通知", "zh-cht": "目前沒有任何通知", "xloc": [ - "default-mobile.handlebars->11->704", - "default.handlebars->41->2852" + "default-mobile.handlebars->11->705", + "default.handlebars->41->2858" ] }, { @@ -62422,8 +62466,8 @@ "tr": "Son girişten bu yana bu hesapta {0} başarısız giriş denemesi oldu.", "zh-chs": "自上次登录以来,此帐户已有 {0} 次登录尝试失败。", "xloc": [ - "default-mobile.handlebars->11->725", - "default.handlebars->41->2873" + "default-mobile.handlebars->11->726", + "default.handlebars->41->2879" ] }, { @@ -62473,7 +62517,7 @@ "zh-chs": "这些设置可用于连接该设备的MQTT。", "zh-cht": "這些設置可用於連接該裝置的MQTT。", "xloc": [ - "default.handlebars->41->296" + "default.handlebars->41->297" ] }, { @@ -62520,7 +62564,7 @@ "zh-cht": "此帳戶無權建立新的裝置群。", "xloc": [ "default-mobile.handlebars->11->123", - "default.handlebars->41->1786" + "default.handlebars->41->1792" ] }, { @@ -62544,7 +62588,7 @@ "tr": "Bu aracının eski bir sertifika doğrulama mekanizması var, güncellemeyi düşünün.", "zh-chs": "此代理具有过时的证书验证机制,请考虑更新。", "xloc": [ - "default.handlebars->41->2314" + "default.handlebars->41->2320" ] }, { @@ -62568,7 +62612,7 @@ "tr": "Bu aracı güvenli olmayan tüneller kullanıyor, güncellemeyi düşünün.", "zh-chs": "此代理正在使用不安全的隧道,请考虑更新。", "xloc": [ - "default.handlebars->41->2315" + "default.handlebars->41->2321" ] }, { @@ -62593,7 +62637,7 @@ "zh-chs": "这是OS图形用户界面上的可执行档案。您需要'chmod + x meshagent'并运行此档案。", "zh-cht": "這是OS圖形用戶界面上的可執行檔案。你需要'chmod + x meshagent'並運行此檔案。", "xloc": [ - "default.handlebars->41->590" + "default.handlebars->41->591" ] }, { @@ -62639,10 +62683,10 @@ "tr": "Bu bir misafir paylaşım oturumu", "zh-chs": "这是嘉宾分享环节", "xloc": [ - "default.handlebars->41->1395", - "default.handlebars->41->2358", - "default.handlebars->41->2734", - "default.handlebars->41->2735" + "default.handlebars->41->1400", + "default.handlebars->41->2364", + "default.handlebars->41->2740", + "default.handlebars->41->2741" ] }, { @@ -62691,7 +62735,7 @@ "tr": "Bu eski bir aracı sürümüdür, güncellemeyi düşünün.", "zh-chs": "这是一个旧的代理版本,考虑更新。", "xloc": [ - "default.handlebars->41->2313" + "default.handlebars->41->2319" ] }, { @@ -62738,7 +62782,7 @@ "zh-chs": "这是推荐的策略。英特尔®AMT激活和管理是完全自动化的,服务器将尝试最大程度地利用硬件管理。", "zh-cht": "這是推薦的策略。英特爾®AMT激活和管理是完全自動化的,服務器將嘗試最大程度地利用硬件管理。", "xloc": [ - "default.handlebars->41->1983" + "default.handlebars->41->1989" ] }, { @@ -62789,7 +62833,7 @@ "zh-chs": "此政策不会影响采用ACM模式的英特尔®AMT的设备。", "zh-cht": "此政策不會影響採用ACM模式的Intel® AMT的裝置。", "xloc": [ - "default.handlebars->41->1980" + "default.handlebars->41->1986" ] }, { @@ -62913,7 +62957,7 @@ "zh-chs": "这会在此设备的事件日志中添加一个条目。", "zh-cht": "這會在此裝置的事件日誌中增加一個記錄。", "xloc": [ - "default.handlebars->41->1035" + "default.handlebars->41->1040" ] }, { @@ -62960,7 +63004,7 @@ "zh-chs": "这不会从服务器上删除该设备,但是该设备将不再能够连接到服务器。该设备的所有远程访问都将丢失。该设备必须连线,此命令才能起作用。", "zh-cht": "這不會從伺服器上刪除該裝置,但是該裝置將不再能夠連接到伺服器。該裝置的所有遠程訪問都將丟失。該設備必須連線,此命令才能起作用。", "xloc": [ - "default.handlebars->41->1139" + "default.handlebars->41->1144" ] }, { @@ -62985,7 +63029,7 @@ "zh-chs": "这不会从服务器上删除该设备,但是该设备将不再能够连接到服务器。该设备的所有远程访问都将丢失。该设备必须连线,此命令才能起作用。", "zh-cht": "這不會從伺服器上刪除該裝置,但是該裝置將不再能夠連接到伺服器。該裝置的所有遠程訪問都將丟失。該設備必須連線,此命令才能起作用。", "xloc": [ - "default.handlebars->41->1140" + "default.handlebars->41->1145" ] }, { @@ -63010,7 +63054,7 @@ "zh-chs": "蒂格雷", "zh-cht": "蒂格雷", "xloc": [ - "default.handlebars->41->1716" + "default.handlebars->41->1722" ] }, { @@ -63036,9 +63080,9 @@ "zh-cht": "時間", "xloc": [ "default-mobile.handlebars->11->360", - "default.handlebars->41->1091", - "default.handlebars->41->2790", - "default.handlebars->41->2795", + "default.handlebars->41->1096", + "default.handlebars->41->2796", + "default.handlebars->41->2801", "player.handlebars->3->17" ] }, @@ -63064,8 +63108,8 @@ "zh-chs": "时间范围", "zh-cht": "時間範圍", "xloc": [ - "default.handlebars->41->1079", - "default.handlebars->41->2791" + "default.handlebars->41->1084", + "default.handlebars->41->2797" ] }, { @@ -63090,7 +63134,7 @@ "zh-chs": "时间跨度", "zh-cht": "時間跨度", "xloc": [ - "default.handlebars->41->2362" + "default.handlebars->41->2368" ] }, { @@ -63115,8 +63159,8 @@ "zh-chs": "时间范围", "zh-cht": "時間範圍", "xloc": [ - "default.handlebars->41->1075", - "default.handlebars->41->2789" + "default.handlebars->41->1080", + "default.handlebars->41->2795" ] }, { @@ -63142,7 +63186,7 @@ "zh-cht": "超時", "xloc": [ "default-mobile.handlebars->11->409", - "default.handlebars->41->1200", + "default.handlebars->41->1205", "sharing.handlebars->11->31", "sharing.handlebars->11->9" ] @@ -63169,7 +63213,7 @@ "zh-chs": "标题", "zh-cht": "標題", "xloc": [ - "default.handlebars->41->686" + "default.handlebars->41->687" ] }, { @@ -63194,7 +63238,7 @@ "zh-chs": "要将计算机添加到\\\"{0}\\\",请运行以下命令。命令需要root凭证。", "zh-cht": "要將電腦新增到\\\"{0}\\\",請運行以下命令。命令需要root憑據。", "xloc": [ - "default.handlebars->41->564" + "default.handlebars->41->565" ] }, { @@ -63218,7 +63262,7 @@ "tr": "\\\"{0}\\\" grubuna bir mobil cihaz eklemek için MeshAgent uygulamasını indirin ve bu QR kodunu tarayın.", "zh-chs": "要将移动设备添加到组“{0}”,请下载 MeshAgent 应用程序并扫描此二维码。", "xloc": [ - "default.handlebars->41->572" + "default.handlebars->41->573" ] }, { @@ -63309,7 +63353,7 @@ "zh-chs": "要将新计算机添加到设备组“ {0} ”,请下载网状代理并安装该计算机以进行管理。这代理中已嵌入了服务器和设备组信息。", "zh-cht": "要將新電腦新增到裝置群“ {0} ”,請下載mesh agent並安裝該電腦以進行管理。這agent中已嵌入了伺服器和裝置群訊息。", "xloc": [ - "default.handlebars->41->553" + "default.handlebars->41->554" ] }, { @@ -63334,7 +63378,7 @@ "zh-chs": "要将新计算机添加到设备组“ {0} ”,请下载网状代理并安装该计算机以进行管理。该代理安装程序中已嵌入了服务器和设备组讯息。", "zh-cht": "要將新電腦新增到裝置群“ {0} ”,請下載mesh agent並安裝該電腦以進行管理。該代理安裝程序中已嵌入了伺服器和裝置群訊息。", "xloc": [ - "default.handlebars->41->568" + "default.handlebars->41->569" ] }, { @@ -63359,7 +63403,7 @@ "zh-chs": "要删除此帐户,请在下面的两个框中键入帐户密码,然后单击确定。", "zh-cht": "要刪除此帳戶,請在下面的兩個框中鍵入帳戶密碼,然後單擊確定。", "xloc": [ - "default.handlebars->41->1773" + "default.handlebars->41->1779" ] }, { @@ -63484,7 +63528,7 @@ "zh-chs": "要删除网格代理,请下载以下档案,运行并单击“卸载”。", "zh-cht": "要刪除mash agent,請下載以下檔案,運行該檔案,然後單擊“卸載”。", "xloc": [ - "default.handlebars->41->581" + "default.handlebars->41->582" ] }, { @@ -63509,7 +63553,7 @@ "zh-chs": "要删除网格代理,请运行以下命令。需要根凭证。", "zh-cht": "要刪除網格代理,請運行以下命令。需要root憑據。", "xloc": [ - "default.handlebars->41->588" + "default.handlebars->41->589" ] }, { @@ -63599,7 +63643,7 @@ "zh-chs": "吐司通知", "zh-cht": "吐司通知", "xloc": [ - "default.handlebars->41->684" + "default.handlebars->41->685" ] }, { @@ -63990,7 +64034,7 @@ "tr": "Anahtar Adı", "zh-chs": "代币名称", "xloc": [ - "default.handlebars->41->1759" + "default.handlebars->41->1765" ] }, { @@ -64014,7 +64058,7 @@ "tr": "Simge: {0}", "zh-chs": "令牌:{0}", "xloc": [ - "default.handlebars->41->306" + "default.handlebars->41->307" ] }, { @@ -64094,7 +64138,7 @@ "zh-chs": "主题", "zh-cht": "主題", "xloc": [ - "default.handlebars->41->1134" + "default.handlebars->41->1139" ] }, { @@ -64118,7 +64162,7 @@ "tr": "Toplam İşlemci Süresi", "zh-chs": "总处理器时间", "xloc": [ - "default.handlebars->41->126" + "default.handlebars->41->127" ] }, { @@ -64193,7 +64237,7 @@ "zh-chs": "用于通过此服务器连接到设备的流量路由器", "zh-cht": "用於通過此伺服器連接到裝置的流量路由器", "xloc": [ - "default.handlebars->41->919" + "default.handlebars->41->920" ] }, { @@ -64260,7 +64304,7 @@ "zh-chs": "再试一次。", "zh-cht": "再試一次。", "xloc": [ - "default.handlebars->41->213" + "default.handlebars->41->214" ] }, { @@ -64310,7 +64354,7 @@ "zh-chs": "尝试凭据", "xloc": [ "default-mobile.handlebars->11->304", - "default.handlebars->41->817" + "default.handlebars->41->818" ] }, { @@ -64335,7 +64379,7 @@ "zh-chs": "特松加", "zh-cht": "特松加", "xloc": [ - "default.handlebars->41->1717" + "default.handlebars->41->1723" ] }, { @@ -64360,7 +64404,7 @@ "zh-chs": "茨瓦纳", "zh-cht": "茨瓦納", "xloc": [ - "default.handlebars->41->1718" + "default.handlebars->41->1724" ] }, { @@ -64406,7 +64450,7 @@ "zh-chs": "土耳其", "zh-cht": "土耳其", "xloc": [ - "default.handlebars->41->1719" + "default.handlebars->41->1725" ] }, { @@ -64431,7 +64475,7 @@ "zh-chs": "土库曼文", "zh-cht": "土庫曼文", "xloc": [ - "default.handlebars->41->1720" + "default.handlebars->41->1726" ] }, { @@ -64453,8 +64497,8 @@ "xloc": [ "default-mobile.handlebars->11->333", "default-mobile.handlebars->11->334", - "default.handlebars->41->905", - "default.handlebars->41->906" + "default.handlebars->41->906", + "default.handlebars->41->907" ] }, { @@ -64474,7 +64518,7 @@ "ru": "Выключить.", "tr": "Kapat.", "xloc": [ - "default.handlebars->41->2329" + "default.handlebars->41->2335" ] }, { @@ -64496,8 +64540,8 @@ "xloc": [ "default-mobile.handlebars->11->335", "default-mobile.handlebars->11->336", - "default.handlebars->41->907", - "default.handlebars->41->908" + "default.handlebars->41->908", + "default.handlebars->41->909" ] }, { @@ -64517,7 +64561,7 @@ "ru": "Включить.", "tr": "Aç.", "xloc": [ - "default.handlebars->41->2328" + "default.handlebars->41->2334" ] }, { @@ -64589,14 +64633,14 @@ "zh-cht": "類型", "xloc": [ "default-mobile.handlebars->11->129", - "default-mobile.handlebars->11->630", - "default.handlebars->41->1056", - "default.handlebars->41->1290", - "default.handlebars->41->1797", - "default.handlebars->41->1860", - "default.handlebars->41->1955", - "default.handlebars->41->2776", - "default.handlebars->41->449", + "default-mobile.handlebars->11->631", + "default.handlebars->41->1061", + "default.handlebars->41->1295", + "default.handlebars->41->1803", + "default.handlebars->41->1866", + "default.handlebars->41->1961", + "default.handlebars->41->2782", + "default.handlebars->41->450", "default.handlebars->container->column_l->p11->deskarea0->deskarea4->5", "sharing.handlebars->p11->deskarea0->deskarea4->3" ] @@ -64623,7 +64667,7 @@ "zh-chs": "输入密钥名称,选择OTP框,然后按YubiKey™上的按钮。", "zh-cht": "輸入密鑰名稱,選擇OTP框,然後按YubiKey™上的按鈕。", "xloc": [ - "default.handlebars->41->1529" + "default.handlebars->41->1535" ] }, { @@ -64648,7 +64692,7 @@ "zh-chs": "输入要添加的密钥的名称。", "zh-cht": "輸入要新增的密鑰的名稱。", "xloc": [ - "default.handlebars->41->1526" + "default.handlebars->41->1532" ] }, { @@ -64695,7 +64739,7 @@ "zh-cht": "UDP路由", "xloc": [ "default-mobile.handlebars->11->224", - "default.handlebars->41->420" + "default.handlebars->41->421" ] }, { @@ -64741,7 +64785,7 @@ "zh-chs": "UTF8终端", "zh-cht": "UTF8終端", "xloc": [ - "default.handlebars->41->1328", + "default.handlebars->41->1333", "sharing.handlebars->11->33" ] }, @@ -64767,7 +64811,7 @@ "zh-chs": "乌克兰", "zh-cht": "烏克蘭", "xloc": [ - "default.handlebars->41->1721" + "default.handlebars->41->1727" ] }, { @@ -64888,8 +64932,8 @@ "zh-chs": "在验证电子邮件地址之前,无法访问此功能。这是密码恢复所必需的。转到“我的帐户”标签以更改和验证电子邮件地址。", "zh-cht": "在驗證電子郵件地址之前,無法訪問此功能。這是密碼恢復所必需的。轉到“我的帳戶”標籤以更改和驗證電子郵件地址。", "xloc": [ - "default.handlebars->41->1788", - "default.handlebars->41->771" + "default.handlebars->41->1794", + "default.handlebars->41->772" ] }, { @@ -64914,9 +64958,9 @@ "zh-chs": "在启用两因素身份验证之前,无法访问此功能。这是额外的安全性所必需的。转到“我的帐户”标签,然后查看“帐户安全性”部分。", "zh-cht": "在啟用兩因素身份驗證之前,無法訪問此功能。這是額外的安全性所必需的。轉到“我的帳戶”標籤,然後查看“帳戶安全性”部分。", "xloc": [ - "default.handlebars->41->1790", - "default.handlebars->41->2984", - "default.handlebars->41->773" + "default.handlebars->41->1796", + "default.handlebars->41->2990", + "default.handlebars->41->774" ] }, { @@ -64940,8 +64984,8 @@ "tr": "Bu modda kullanıcı eklenemiyor", "zh-chs": "无法在此模式下添加用户", "xloc": [ - "default-mobile.handlebars->11->721", - "default.handlebars->41->2869" + "default-mobile.handlebars->11->722", + "default.handlebars->41->2875" ] }, { @@ -65010,7 +65054,7 @@ "tr": "Ekran yakalanamadı", "zh-chs": "无法捕捉显示", "xloc": [ - "default.handlebars->41->1202" + "default.handlebars->41->1207" ] }, { @@ -65108,7 +65152,7 @@ "tr": "Herhangi bir cihaz içe aktarılamıyor.", "zh-chs": "无法导入任何设备。", "xloc": [ - "default.handlebars->41->1951" + "default.handlebars->41->1957" ] }, { @@ -65179,7 +65223,7 @@ "fr": "Impossible de charger la librairie OTPLIB", "xloc": [ "default-mobile.handlebars->11->65", - "default.handlebars->41->199" + "default.handlebars->41->200" ] }, { @@ -65251,7 +65295,7 @@ "zh-chs": "无法扫描该地址范围。", "zh-cht": "無法掃描該地址範圍。", "xloc": [ - "default.handlebars->41->251" + "default.handlebars->41->252" ] }, { @@ -65369,10 +65413,10 @@ "zh-cht": "卸載", "xloc": [ "agent-translations.json", - "default-mobile.handlebars->11->693", - "default.handlebars->41->1008", - "default.handlebars->41->1030", - "default.handlebars->41->2084" + "default-mobile.handlebars->11->694", + "default.handlebars->41->1013", + "default.handlebars->41->1035", + "default.handlebars->41->2090" ] }, { @@ -65397,9 +65441,9 @@ "zh-chs": "卸载代理", "zh-cht": "卸載代理", "xloc": [ - "default-mobile.handlebars->11->673", - "default.handlebars->41->1105", - "default.handlebars->41->643" + "default-mobile.handlebars->11->674", + "default.handlebars->41->1110", + "default.handlebars->41->644" ] }, { @@ -65424,7 +65468,7 @@ "zh-chs": "卸载代理/删除设备", "zh-cht": "卸載代理/刪除設備", "xloc": [ - "default.handlebars->41->2047" + "default.handlebars->41->2053" ] }, { @@ -65449,7 +65493,7 @@ "zh-chs": "卸载代理", "zh-cht": "卸載代理", "xloc": [ - "default.handlebars->41->1142" + "default.handlebars->41->1147" ] }, { @@ -65481,31 +65525,31 @@ "default-mobile.handlebars->11->564", "default-mobile.handlebars->11->571", "default-mobile.handlebars->11->6", - "default-mobile.handlebars->11->631", + "default-mobile.handlebars->11->632", "default.handlebars->41->13", - "default.handlebars->41->1446", - "default.handlebars->41->1453", - "default.handlebars->41->178", + "default.handlebars->41->1451", + "default.handlebars->41->1458", "default.handlebars->41->179", "default.handlebars->41->180", - "default.handlebars->41->182", - "default.handlebars->41->184", - "default.handlebars->41->1843", - "default.handlebars->41->1844", - "default.handlebars->41->1861", - "default.handlebars->41->2727", - "default.handlebars->41->2744", - "default.handlebars->41->2751", - "default.handlebars->41->2821", - "default.handlebars->41->2822", - "default.handlebars->41->2823", - "default.handlebars->41->2824", - "default.handlebars->41->2825", - "default.handlebars->41->2845", + "default.handlebars->41->181", + "default.handlebars->41->183", + "default.handlebars->41->1849", + "default.handlebars->41->185", + "default.handlebars->41->1850", + "default.handlebars->41->1867", + "default.handlebars->41->2733", + "default.handlebars->41->2750", + "default.handlebars->41->2757", + "default.handlebars->41->2827", + "default.handlebars->41->2828", + "default.handlebars->41->2829", + "default.handlebars->41->2830", + "default.handlebars->41->2831", + "default.handlebars->41->2851", "default.handlebars->41->44", "default.handlebars->41->51", "default.handlebars->41->52", - "default.handlebars->41->637" + "default.handlebars->41->638" ] }, { @@ -65530,8 +65574,8 @@ "zh-chs": "未知#{0}", "zh-cht": "未知#{0}", "xloc": [ - "default-mobile.handlebars->11->620", - "default.handlebars->41->1850" + "default-mobile.handlebars->11->621", + "default.handlebars->41->1856" ] }, { @@ -65556,7 +65600,7 @@ "zh-chs": "未知动作", "zh-cht": "未知動作", "xloc": [ - "default.handlebars->41->2902" + "default.handlebars->41->2908" ] }, { @@ -65581,8 +65625,8 @@ "zh-chs": "未知设备", "zh-cht": "未知裝置", "xloc": [ - "default.handlebars->41->2554", - "default.handlebars->41->2713" + "default.handlebars->41->2560", + "default.handlebars->41->2719" ] }, { @@ -65607,9 +65651,9 @@ "zh-chs": "未知设备组", "zh-cht": "未知裝置群", "xloc": [ - "default.handlebars->41->2548", - "default.handlebars->41->2701", - "default.handlebars->41->2906" + "default.handlebars->41->2554", + "default.handlebars->41->2707", + "default.handlebars->41->2912" ] }, { @@ -65634,7 +65678,7 @@ "zh-chs": "未知群组", "zh-cht": "未知群組", "xloc": [ - "default.handlebars->41->2898" + "default.handlebars->41->2904" ] }, { @@ -65660,7 +65704,7 @@ "zh-cht": "未知狀態", "xloc": [ "default-mobile.handlebars->11->293", - "default.handlebars->41->804" + "default.handlebars->41->805" ] }, { @@ -65680,8 +65724,8 @@ "ru": "Неизвестный пользователь", "tr": "Bilinmeyen kullanıcı", "xloc": [ - "default.handlebars->41->2826", - "default.handlebars->41->2846" + "default.handlebars->41->2832", + "default.handlebars->41->2852" ] }, { @@ -65706,7 +65750,7 @@ "zh-chs": "未知用户组", "zh-cht": "未知用戶群", "xloc": [ - "default.handlebars->41->2707" + "default.handlebars->41->2713" ] }, { @@ -65732,7 +65776,7 @@ "zh-cht": "未知版本和狀態", "xloc": [ "default-mobile.handlebars->11->295", - "default.handlebars->41->806" + "default.handlebars->41->807" ] }, { @@ -65757,7 +65801,7 @@ "zh-chs": "密码未知", "zh-cht": "密碼未知", "xloc": [ - "default.handlebars->41->1971" + "default.handlebars->41->1977" ] }, { @@ -65782,11 +65826,11 @@ "zh-chs": "无限制", "zh-cht": "無限", "xloc": [ - "default.handlebars->41->1072", - "default.handlebars->41->1742", - "default.handlebars->41->264", - "default.handlebars->41->506", - "default.handlebars->41->520" + "default.handlebars->41->1077", + "default.handlebars->41->1748", + "default.handlebars->41->265", + "default.handlebars->41->507", + "default.handlebars->41->521" ] }, { @@ -65811,7 +65855,7 @@ "zh-chs": "解锁帐户", "zh-cht": "解鎖帳戶", "xloc": [ - "default.handlebars->41->2417" + "default.handlebars->41->2423" ] }, { @@ -65835,7 +65879,7 @@ "tr": "Uzak kullanıcının fare ve klavyesinin kilidi açılsın mı?", "zh-chs": "解锁远程用户的鼠标和键盘?", "xloc": [ - "default.handlebars->41->1043" + "default.handlebars->41->1048" ] }, { @@ -65908,7 +65952,7 @@ "default-mobile.handlebars->11->426", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", - "default.handlebars->41->1248", + "default.handlebars->41->1253", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->dialog->dialogBody->dialog3->d3servermode->d3serveraction", @@ -65937,7 +65981,7 @@ "zh-chs": "最新", "zh-cht": "最新", "xloc": [ - "default.handlebars->41->2989" + "default.handlebars->41->2995" ] }, { @@ -65965,8 +66009,8 @@ "agent-translations.json", "default-mobile.handlebars->11->520", "default-mobile.handlebars->11->522", - "default.handlebars->41->833", - "default.handlebars->41->835" + "default.handlebars->41->834", + "default.handlebars->41->836" ] }, { @@ -66046,11 +66090,11 @@ "default-mobile.handlebars->11->486", "default-mobile.handlebars->11->504", "default-mobile.handlebars->11->507", - "default.handlebars->41->1364", - "default.handlebars->41->1390", - "default.handlebars->41->1393", - "default.handlebars->41->2186", - "default.handlebars->41->2194", + "default.handlebars->41->1369", + "default.handlebars->41->1395", + "default.handlebars->41->1398", + "default.handlebars->41->2192", + "default.handlebars->41->2200", "default.handlebars->container->dialog->dialogBody->dialog3->d3localmode->1", "sharing.handlebars->11->65", "sharing.handlebars->11->89", @@ -66079,8 +66123,8 @@ "zh-chs": "上载网格代理核心", "zh-cht": "上載mesh agent核心", "xloc": [ - "default-mobile.handlebars->11->619", - "default.handlebars->41->1502" + "default-mobile.handlebars->11->620", + "default.handlebars->41->1508" ] }, { @@ -66105,8 +66149,8 @@ "zh-chs": "上载核心档案", "zh-cht": "上載核心檔案", "xloc": [ - "default-mobile.handlebars->11->616", - "default.handlebars->41->1499" + "default-mobile.handlebars->11->617", + "default.handlebars->41->1505" ] }, { @@ -66131,10 +66175,10 @@ "zh-chs": "上载默认服务器核心", "zh-cht": "上載默認伺服器核心", "xloc": [ - "default-mobile.handlebars->11->612", - "default.handlebars->41->1495", - "default.handlebars->41->655", - "default.handlebars->41->699" + "default-mobile.handlebars->11->613", + "default.handlebars->41->1501", + "default.handlebars->41->656", + "default.handlebars->41->700" ] }, { @@ -66158,7 +66202,7 @@ "tr": "Seçili cihazlara varsayılan sunucu çekirdeği yüklensin mi?", "zh-chs": "在所选设备上上传默认服务器核心?", "xloc": [ - "default.handlebars->41->698" + "default.handlebars->41->699" ] }, { @@ -66183,7 +66227,7 @@ "zh-chs": "上传文件", "zh-cht": "上傳文件", "xloc": [ - "default.handlebars->41->651" + "default.handlebars->41->652" ] }, { @@ -66233,8 +66277,8 @@ "zh-chs": "上传恢复核心", "zh-cht": "上傳恢復核心", "xloc": [ - "default-mobile.handlebars->11->614", - "default.handlebars->41->1497" + "default-mobile.handlebars->11->615", + "default.handlebars->41->1503" ] }, { @@ -66259,7 +66303,7 @@ "zh-chs": "将所选文件上传到所有所选设备", "zh-cht": "將所選文件上傳到所有所選設備", "xloc": [ - "default.handlebars->41->688" + "default.handlebars->41->689" ] }, { @@ -66283,8 +66327,8 @@ "tr": "Küçük çekirdek yükleyin", "zh-chs": "上传小核", "xloc": [ - "default-mobile.handlebars->11->615", - "default.handlebars->41->1498" + "default-mobile.handlebars->11->616", + "default.handlebars->41->1504" ] }, { @@ -66310,8 +66354,8 @@ "zh-cht": "上傳將覆蓋1個檔案。繼續?", "xloc": [ "default-mobile.handlebars->11->505", - "default.handlebars->41->1391", - "default.handlebars->41->2195", + "default.handlebars->41->1396", + "default.handlebars->41->2201", "sharing.handlebars->11->90" ] }, @@ -66338,8 +66382,8 @@ "zh-cht": "上傳將覆蓋{0}個檔案。繼續?", "xloc": [ "default-mobile.handlebars->11->506", - "default.handlebars->41->1392", - "default.handlebars->41->2196", + "default.handlebars->41->1397", + "default.handlebars->41->2202", "sharing.handlebars->11->91" ] }, @@ -66387,7 +66431,7 @@ "zh-chs": "上传:“{0}”", "zh-cht": "上傳:“{0}”", "xloc": [ - "default.handlebars->41->2246" + "default.handlebars->41->2252" ] }, { @@ -66411,7 +66455,7 @@ "tr": "Yükleme: \\\"{0}\\\", Boyut: {1}", "zh-chs": "上传:\\\"{0}\\\",大小:{1}", "xloc": [ - "default.handlebars->41->2301" + "default.handlebars->41->2307" ] }, { @@ -66436,7 +66480,7 @@ "zh-chs": "上索布族", "zh-cht": "上索布族", "xloc": [ - "default.handlebars->41->1722" + "default.handlebars->41->1728" ] }, { @@ -66461,7 +66505,7 @@ "zh-chs": "乌尔都文", "zh-cht": "烏爾都文", "xloc": [ - "default.handlebars->41->1723" + "default.handlebars->41->1729" ] }, { @@ -66485,7 +66529,7 @@ "tr": "kullanım", "zh-chs": "用法", "xloc": [ - "default.handlebars->41->2952" + "default.handlebars->41->2958" ] }, { @@ -66531,7 +66575,7 @@ "zh-chs": "使用远程键盘映射", "zh-cht": "使用遠程鍵盤映射", "xloc": [ - "default.handlebars->container->dialog->dialogBody->dialog7->d7meshkvm->d7desktopOtherSettings->d7otherset2->3", + "default.handlebars->container->dialog->dialogBody->dialog7->d7meshkvm->d7desktopOtherSettings->d7otherset2->5", "sharing.handlebars->dialog->dialogBody->dialog7->d7meshkvm->d7desktopOtherSettings->d7otherset2->3" ] }, @@ -66585,7 +66629,7 @@ "tr": "Çıplak metal LAN aktivasyonu için kullanın.", "zh-chs": "用于裸机 LAN 激活。", "xloc": [ - "default.handlebars->41->473" + "default.handlebars->41->474" ] }, { @@ -66609,7 +66653,7 @@ "tr": "Yeni kimlik bilgilerini kullan", "zh-chs": "使用新凭据", "xloc": [ - "default.handlebars->41->1215", + "default.handlebars->41->1220", "mstsc.handlebars->main->1->3->1->dropdowndomain->1->d3coreMode->1" ] }, @@ -66634,7 +66678,7 @@ "tr": "Sunucu kimlik bilgilerini kullan", "zh-chs": "使用服务器凭据", "xloc": [ - "default.handlebars->41->1214", + "default.handlebars->41->1219", "mstsc.handlebars->main->1->3->1->dropdowndomain->1->d3coreMode->0" ] }, @@ -66685,8 +66729,8 @@ "zh-chs": "用过的", "zh-cht": "用過的", "xloc": [ - "default.handlebars->41->2892", - "default.handlebars->41->2894" + "default.handlebars->41->2898", + "default.handlebars->41->2900" ] }, { @@ -66711,17 +66755,17 @@ "zh-chs": "用户", "zh-cht": "用戶", "xloc": [ - "default.handlebars->41->116", - "default.handlebars->41->1920", - "default.handlebars->41->2369", - "default.handlebars->41->2399", - "default.handlebars->41->2544", - "default.handlebars->41->2770", - "default.handlebars->41->2777", - "default.handlebars->41->2781", - "default.handlebars->41->2798", - "default.handlebars->41->350", - "default.handlebars->41->959" + "default.handlebars->41->117", + "default.handlebars->41->1926", + "default.handlebars->41->2375", + "default.handlebars->41->2405", + "default.handlebars->41->2550", + "default.handlebars->41->2776", + "default.handlebars->41->2783", + "default.handlebars->41->2787", + "default.handlebars->41->2804", + "default.handlebars->41->351", + "default.handlebars->41->964" ] }, { @@ -66746,7 +66790,7 @@ "zh-chs": "用户+档案", "zh-cht": "用戶+檔案", "xloc": [ - "default.handlebars->41->2400" + "default.handlebars->41->2406" ] }, { @@ -66771,11 +66815,11 @@ "zh-chs": "用户帐户导入", "zh-cht": "用戶帳戶導入", "xloc": [ - "default.handlebars->41->1950", - "default.handlebars->41->2435", - "default.handlebars->41->2436", - "default.handlebars->41->2438", - "default.handlebars->41->2440" + "default.handlebars->41->1956", + "default.handlebars->41->2441", + "default.handlebars->41->2442", + "default.handlebars->41->2444", + "default.handlebars->41->2446" ] }, { @@ -66800,7 +66844,7 @@ "zh-chs": "用户帐户", "zh-cht": "用戶帳戶", "xloc": [ - "default.handlebars->41->2911" + "default.handlebars->41->2917" ] }, { @@ -66825,9 +66869,9 @@ "zh-chs": "用户授权", "zh-cht": "用戶授權", "xloc": [ - "default-mobile.handlebars->11->638", - "default.handlebars->41->1918", - "default.handlebars->41->955" + "default-mobile.handlebars->11->639", + "default.handlebars->41->1924", + "default.handlebars->41->960" ] }, { @@ -66852,12 +66896,12 @@ "zh-chs": "用户同意", "zh-cht": "用戶同意", "xloc": [ - "default.handlebars->41->1084", - "default.handlebars->41->1886", - "default.handlebars->41->2535", - "default.handlebars->41->2637", - "default.handlebars->41->286", - "default.handlebars->41->859" + "default.handlebars->41->1089", + "default.handlebars->41->1892", + "default.handlebars->41->2541", + "default.handlebars->41->2643", + "default.handlebars->41->287", + "default.handlebars->41->860" ] }, { @@ -66882,12 +66926,12 @@ "zh-chs": "用户组", "zh-cht": "用戶群", "xloc": [ - "default.handlebars->41->2022", - "default.handlebars->41->2023", - "default.handlebars->41->2505", - "default.handlebars->41->2709", - "default.handlebars->41->2730", - "default.handlebars->41->958" + "default.handlebars->41->2028", + "default.handlebars->41->2029", + "default.handlebars->41->2511", + "default.handlebars->41->2715", + "default.handlebars->41->2736", + "default.handlebars->41->963" ] }, { @@ -66937,7 +66981,7 @@ "zh-chs": "用户组成员", "zh-cht": "用戶群成員", "xloc": [ - "default.handlebars->41->2706" + "default.handlebars->41->2712" ] }, { @@ -66962,7 +67006,7 @@ "zh-chs": "用户识别码", "zh-cht": "用戶識別碼", "xloc": [ - "default-mobile.handlebars->11->698" + "default-mobile.handlebars->11->699" ] }, { @@ -66987,9 +67031,9 @@ "zh-chs": "用户识别码", "zh-cht": "用戶識別碼", "xloc": [ - "default.handlebars->41->2091", - "default.handlebars->41->2591", - "default.handlebars->41->2592" + "default.handlebars->41->2097", + "default.handlebars->41->2597", + "default.handlebars->41->2598" ] }, { @@ -67014,8 +67058,8 @@ "zh-chs": "用户标识符", "zh-cht": "用戶標識符", "xloc": [ - "default.handlebars->41->2020", - "default.handlebars->41->2575" + "default.handlebars->41->2026", + "default.handlebars->41->2581" ] }, { @@ -67039,7 +67083,7 @@ "tr": "Kullanıcı Girişi", "zh-chs": "用户输入", "xloc": [ - "default.handlebars->41->268" + "default.handlebars->41->269" ] }, { @@ -67064,7 +67108,7 @@ "zh-chs": "用户列表输出", "zh-cht": "用戶列表輸出", "xloc": [ - "default.handlebars->41->2447" + "default.handlebars->41->2453" ] }, { @@ -67075,7 +67119,7 @@ "pt-br": "Logins de usuários", "ru": "Входы пользователей", "xloc": [ - "default.handlebars->41->2775" + "default.handlebars->41->2781" ] }, { @@ -67100,8 +67144,8 @@ "zh-chs": "用户名", "zh-cht": "用戶名", "xloc": [ - "default-mobile.handlebars->11->697", - "default.handlebars->41->2090" + "default-mobile.handlebars->11->698", + "default.handlebars->41->2096" ] }, { @@ -67196,7 +67240,7 @@ "tr": "Kullanıcı İşlemci Süresi", "zh-chs": "用户处理器时间", "xloc": [ - "default.handlebars->41->128" + "default.handlebars->41->129" ] }, { @@ -67221,7 +67265,7 @@ "zh-chs": "用户节", "zh-cht": "用戶節", "xloc": [ - "default.handlebars->41->2943" + "default.handlebars->41->2949" ] }, { @@ -67270,7 +67314,7 @@ "ru": "Расход трафика пользователями", "tr": "Kullanıcı Trafiği Kullanımı", "xloc": [ - "default.handlebars->41->2774" + "default.handlebars->41->2780" ] }, { @@ -67369,8 +67413,8 @@ "tr": "Kullanıcı zaten var", "zh-chs": "用户已存在", "xloc": [ - "default-mobile.handlebars->11->720", - "default.handlebars->41->2868" + "default-mobile.handlebars->11->721", + "default.handlebars->41->2874" ] }, { @@ -67395,8 +67439,8 @@ "zh-chs": "用户浏览器值", "zh-cht": "用戶瀏覽器值", "xloc": [ - "default.handlebars->41->1734", - "default.handlebars->41->1736" + "default.handlebars->41->1740", + "default.handlebars->41->1742" ] }, { @@ -67421,7 +67465,7 @@ "zh-chs": "用户组已更改:{0}", "zh-cht": "用戶組已更改:{0}", "xloc": [ - "default.handlebars->41->2275" + "default.handlebars->41->2281" ] }, { @@ -67446,7 +67490,7 @@ "zh-chs": "已创建用户组:{0}", "zh-cht": "已創建用戶組:{0}", "xloc": [ - "default.handlebars->41->2265" + "default.handlebars->41->2271" ] }, { @@ -67471,7 +67515,7 @@ "zh-chs": "用户组成员身份已更改:{0}", "zh-cht": "用戶組成員身份已更改:{0}", "xloc": [ - "default.handlebars->41->2263" + "default.handlebars->41->2269" ] }, { @@ -67525,7 +67569,7 @@ "tr": "{0}, {1}, {2}'den kilitli hesapta kullanıcı oturum açma girişimi", "zh-chs": "来自 {0}、{1}、{2} 的锁定帐户的用户登录尝试", "xloc": [ - "default.handlebars->41->2305" + "default.handlebars->41->2311" ] }, { @@ -67549,7 +67593,7 @@ "tr": "{0}, {1}, {2}'den yanlış 2. faktörle kullanıcı oturum açma girişimi", "zh-chs": "来自 {0}、{1}、{2} 的第二个因素不正确的用户登录尝试", "xloc": [ - "default.handlebars->41->2304" + "default.handlebars->41->2310" ] }, { @@ -67569,7 +67613,7 @@ "ru": "Уведомления пользователей изменены", "tr": "Kullanıcı bildirimleri değişti", "xloc": [ - "default.handlebars->41->2326" + "default.handlebars->41->2332" ] }, { @@ -67593,8 +67637,8 @@ "tr": "{0} kullanıcısı bulunamadı.", "zh-chs": "未找到用户 {0}。", "xloc": [ - "default-mobile.handlebars->11->728", - "default.handlebars->41->2876" + "default-mobile.handlebars->11->729", + "default.handlebars->41->2882" ] }, { @@ -67646,17 +67690,17 @@ "xloc": [ "default-mobile.handlebars->11->386", "default-mobile.handlebars->11->454", - "default-mobile.handlebars->11->634", - "default.handlebars->41->1128", - "default.handlebars->41->1217", - "default.handlebars->41->1314", - "default.handlebars->41->1806", - "default.handlebars->41->1821", - "default.handlebars->41->1826", - "default.handlebars->41->1864", - "default.handlebars->41->2459", - "default.handlebars->41->315", - "default.handlebars->41->458", + "default-mobile.handlebars->11->635", + "default.handlebars->41->1133", + "default.handlebars->41->1222", + "default.handlebars->41->1319", + "default.handlebars->41->1812", + "default.handlebars->41->1827", + "default.handlebars->41->1832", + "default.handlebars->41->1870", + "default.handlebars->41->2465", + "default.handlebars->41->316", + "default.handlebars->41->459", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->0->1", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->0->1", "mstsc.handlebars->main->1->3->1->rowusername->1->0", @@ -67688,8 +67732,8 @@ "xloc": [ "default-mobile.handlebars->11->449", "default-mobile.handlebars->11->452", - "default.handlebars->41->1309", - "default.handlebars->41->1312", + "default.handlebars->41->1314", + "default.handlebars->41->1317", "ssh.handlebars->3->10", "ssh.handlebars->3->7" ] @@ -67744,8 +67788,8 @@ "xloc": [ "default-mobile.handlebars->11->450", "default-mobile.handlebars->11->453", - "default.handlebars->41->1310", - "default.handlebars->41->1313", + "default.handlebars->41->1315", + "default.handlebars->41->1318", "ssh.handlebars->3->11", "ssh.handlebars->3->8" ] @@ -67802,9 +67846,9 @@ "zh-chs": "用户", "zh-cht": "用戶", "xloc": [ - "default.handlebars->41->2493", - "default.handlebars->41->2536", - "default.handlebars->41->2942", + "default.handlebars->41->2499", + "default.handlebars->41->2542", + "default.handlebars->41->2948", "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral" ] }, @@ -67830,7 +67874,7 @@ "zh-chs": "用户会话", "zh-cht": "用戶節", "xloc": [ - "default.handlebars->41->2915" + "default.handlebars->41->2921" ] }, { @@ -67854,7 +67898,7 @@ "tr": "Kullanıcılar Görünümü", "zh-chs": "用户视图", "xloc": [ - "default.handlebars->41->2433" + "default.handlebars->41->2439" ] }, { @@ -67878,8 +67922,8 @@ "tr": "{0} kullanıcıları bulunamadı.", "zh-chs": "未找到用户 {0}。", "xloc": [ - "default-mobile.handlebars->11->729", - "default.handlebars->41->2877" + "default-mobile.handlebars->11->730", + "default.handlebars->41->2883" ] }, { @@ -67903,7 +67947,7 @@ "tr": "VNC Bağlantısı", "zh-chs": "VNC 连接", "xloc": [ - "default.handlebars->41->744" + "default.handlebars->41->745" ] }, { @@ -67927,7 +67971,7 @@ "tr": "VNC uzak bağlantı noktası:", "zh-chs": "VNC远程连接端口:", "xloc": [ - "default.handlebars->41->743" + "default.handlebars->41->744" ] }, { @@ -67952,7 +67996,7 @@ "zh-chs": "VT100 +(F10 = ESC + [OY)", "zh-cht": "VT100 +(F10 = ESC + [OY)", "xloc": [ - "default.handlebars->41->1333", + "default.handlebars->41->1338", "sharing.handlebars->11->38" ] }, @@ -67978,7 +68022,7 @@ "zh-chs": "有效登录", "xloc": [ "default-mobile.handlebars->11->82", - "default.handlebars->41->305" + "default.handlebars->41->306" ] }, { @@ -68003,7 +68047,7 @@ "zh-chs": "验证电邮", "zh-cht": "驗證電郵", "xloc": [ - "default.handlebars->41->2412" + "default.handlebars->41->2418" ] }, { @@ -68027,8 +68071,8 @@ "tr": "Doğrulama istisnası", "zh-chs": "验证异常", "xloc": [ - "default-mobile.handlebars->11->722", - "default.handlebars->41->2870" + "default-mobile.handlebars->11->723", + "default.handlebars->41->2876" ] }, { @@ -68053,7 +68097,7 @@ "zh-chs": "有效期", "zh-cht": "有效期", "xloc": [ - "default.handlebars->41->1073" + "default.handlebars->41->1078" ] }, { @@ -68077,7 +68121,7 @@ "tr": "Değer", "zh-chs": "价值", "xloc": [ - "default.handlebars->41->1264" + "default.handlebars->41->1269" ] }, { @@ -68102,7 +68146,7 @@ "zh-chs": "文达", "zh-cht": "文達", "xloc": [ - "default.handlebars->41->1724" + "default.handlebars->41->1730" ] }, { @@ -68127,10 +68171,10 @@ "zh-chs": "供应商", "zh-cht": "供應商", "xloc": [ - "default-mobile.handlebars->11->579", - "default-mobile.handlebars->11->582", - "default.handlebars->41->1461", - "default.handlebars->41->1464" + "default-mobile.handlebars->11->580", + "default-mobile.handlebars->11->583", + "default.handlebars->41->1467", + "default.handlebars->41->1470" ] }, { @@ -68156,7 +68200,7 @@ "zh-cht": "驗證碼:", "xloc": [ "default-mobile.handlebars->11->80", - "default.handlebars->41->239" + "default.handlebars->41->240" ] }, { @@ -68181,7 +68225,7 @@ "zh-chs": "已验证", "zh-cht": "已驗證", "xloc": [ - "default.handlebars->41->2685" + "default.handlebars->41->2691" ] }, { @@ -68233,8 +68277,8 @@ "zh-cht": "驗證電話號碼", "xloc": [ "default-mobile.handlebars->11->94", - "default.handlebars->41->1506", - "default.handlebars->41->2408" + "default.handlebars->41->1512", + "default.handlebars->41->2414" ] }, { @@ -68259,7 +68303,7 @@ "zh-chs": "用户{0}的已验证电话号码", "zh-cht": "用戶{0}的已驗證電話號碼", "xloc": [ - "default.handlebars->41->2292" + "default.handlebars->41->2298" ] }, { @@ -68337,12 +68381,12 @@ "xloc": [ "default-mobile.handlebars->11->510", "default-mobile.handlebars->11->563", - "default-mobile.handlebars->11->580", - "default-mobile.handlebars->11->585", - "default.handlebars->41->1399", - "default.handlebars->41->1445", - "default.handlebars->41->1462", - "default.handlebars->41->1467", + "default-mobile.handlebars->11->581", + "default-mobile.handlebars->11->586", + "default.handlebars->41->1404", + "default.handlebars->41->1450", + "default.handlebars->41->1468", + "default.handlebars->41->1473", "default.handlebars->container->column_l->p42->p42tbl->1->0->5" ] }, @@ -68368,7 +68412,7 @@ "zh-chs": "版本不兼容,请先升级您的MeshCentral", "zh-cht": "版本不兼容,請先升級你的MeshCentral", "xloc": [ - "default.handlebars->41->2985" + "default.handlebars->41->2991" ] }, { @@ -68441,7 +68485,7 @@ "zh-chs": "颤动", "xloc": [ "default-mobile.handlebars->11->359", - "default.handlebars->41->1090" + "default.handlebars->41->1095" ] }, { @@ -68466,7 +68510,7 @@ "zh-chs": "越南文", "zh-cht": "越南文", "xloc": [ - "default.handlebars->41->1725" + "default.handlebars->41->1731" ] }, { @@ -68516,7 +68560,7 @@ "zh-chs": "查看所有事件", "zh-cht": "查看所有事件", "xloc": [ - "default.handlebars->41->2484" + "default.handlebars->41->2490" ] }, { @@ -68562,8 +68606,8 @@ "zh-chs": "查看变更日志", "zh-cht": "查看變更日誌", "xloc": [ - "default.handlebars->41->2988", - "default.handlebars->41->2990" + "default.handlebars->41->2994", + "default.handlebars->41->2996" ] }, { @@ -68588,7 +68632,7 @@ "zh-chs": "查看有关此设备的注释", "zh-cht": "查看有關此裝置的註釋", "xloc": [ - "default.handlebars->41->896" + "default.handlebars->41->897" ] }, { @@ -68613,7 +68657,7 @@ "zh-chs": "查看有关此设备组的注释", "zh-cht": "查看有關此裝置群的註釋", "xloc": [ - "default.handlebars->41->1905" + "default.handlebars->41->1911" ] }, { @@ -68638,7 +68682,7 @@ "zh-chs": "查看有关此用户的注释", "zh-cht": "查看有關此用戶的註釋", "xloc": [ - "default.handlebars->41->2647" + "default.handlebars->41->2653" ] }, { @@ -68687,7 +68731,7 @@ "tr": "Bu kullanıcı için önceki girişleri görüntüle", "zh-chs": "查看此用户以前的登录", "xloc": [ - "default.handlebars->41->2660" + "default.handlebars->41->2666" ] }, { @@ -68711,7 +68755,7 @@ "tr": "Sanal bellek", "zh-chs": "虚拟内存", "xloc": [ - "default.handlebars->41->133" + "default.handlebars->41->134" ] }, { @@ -68736,7 +68780,7 @@ "zh-chs": "沃拉普克", "zh-cht": "沃拉普克", "xloc": [ - "default.handlebars->41->1726" + "default.handlebars->41->1732" ] }, { @@ -68782,9 +68826,9 @@ "zh-chs": "警告: ", "zh-cht": "警告: ", "xloc": [ - "default.handlebars->41->104", "default.handlebars->41->105", - "default.handlebars->41->106" + "default.handlebars->41->106", + "default.handlebars->41->107" ] }, { @@ -68945,7 +68989,7 @@ "zh-cht": "正在等待用戶授予訪問權限...", "xloc": [ "default-mobile.handlebars->11->406", - "default.handlebars->41->1197", + "default.handlebars->41->1202", "sharing.handlebars->11->28", "sharing.handlebars->11->6" ] @@ -68972,8 +69016,8 @@ "zh-chs": "唤醒", "zh-cht": "喚醒", "xloc": [ - "default.handlebars->41->1004", - "default.handlebars->41->1026" + "default.handlebars->41->1009", + "default.handlebars->41->1031" ] }, { @@ -68998,10 +69042,10 @@ "zh-chs": "唤醒设备", "zh-cht": "喚醒裝置", "xloc": [ - "default-mobile.handlebars->11->669", - "default-mobile.handlebars->11->684", - "default.handlebars->41->2043", - "default.handlebars->41->2074" + "default-mobile.handlebars->11->670", + "default-mobile.handlebars->11->685", + "default.handlebars->41->2049", + "default.handlebars->41->2080" ] }, { @@ -69027,7 +69071,7 @@ "zh-cht": "喚醒", "xloc": [ "default-mobile.handlebars->11->364", - "default.handlebars->41->1095" + "default.handlebars->41->1100" ] }, { @@ -69052,7 +69096,7 @@ "zh-chs": "唤醒设备", "zh-cht": "喚醒裝置", "xloc": [ - "default.handlebars->41->644" + "default.handlebars->41->645" ] }, { @@ -69077,7 +69121,7 @@ "zh-chs": "瓦隆", "zh-cht": "瓦隆", "xloc": [ - "default.handlebars->41->1727" + "default.handlebars->41->1733" ] }, { @@ -69102,7 +69146,7 @@ "zh-chs": "弱", "zh-cht": "弱", "xloc": [ - "default.handlebars->41->1813" + "default.handlebars->41->1819" ] }, { @@ -69152,8 +69196,8 @@ "ru": "Веб Push-уведомления", "tr": "Web Sayfası Bildirimleri", "xloc": [ - "default.handlebars->41->2120", - "default.handlebars->41->985" + "default.handlebars->41->2126", + "default.handlebars->41->990" ] }, { @@ -69172,7 +69216,7 @@ "ru": "Web Power Switch 7", "tr": "Web Güç Anahtarı 7", "xloc": [ - "default.handlebars->41->1804" + "default.handlebars->41->1810" ] }, { @@ -69197,8 +69241,8 @@ "zh-chs": "网络服务器", "zh-cht": "網絡伺服器", "xloc": [ - "default.handlebars->41->2968", - "default.handlebars->41->2969" + "default.handlebars->41->2974", + "default.handlebars->41->2975" ] }, { @@ -69222,7 +69266,7 @@ "tr": "Web Sunucusu HTTP Başlıkları", "zh-chs": "Web 服务器 HTTP 标头", "xloc": [ - "default.handlebars->41->2972" + "default.handlebars->41->2978" ] }, { @@ -69247,7 +69291,7 @@ "zh-chs": "Web服务器请求", "zh-cht": "Web伺服器請求", "xloc": [ - "default.handlebars->41->2970" + "default.handlebars->41->2976" ] }, { @@ -69272,7 +69316,7 @@ "zh-chs": "Web套接字中继", "zh-cht": "Web插座中繼", "xloc": [ - "default.handlebars->41->2971" + "default.handlebars->41->2977" ] }, { @@ -69297,8 +69341,8 @@ "zh-chs": "网络RDP", "zh-cht": "網絡RDP", "xloc": [ - "default.handlebars->41->2817", - "default.handlebars->41->933", + "default.handlebars->41->2823", + "default.handlebars->41->934", "default.handlebars->contextMenu->cxwebrdp" ] }, @@ -69318,7 +69362,7 @@ "ru": "Web-SFTP", "tr": "Web-SFTP", "xloc": [ - "default.handlebars->41->2819" + "default.handlebars->41->2825" ] }, { @@ -69342,8 +69386,8 @@ "tr": "Web-SSH", "zh-chs": "网络SSH", "xloc": [ - "default.handlebars->41->2818", - "default.handlebars->41->935", + "default.handlebars->41->2824", + "default.handlebars->41->936", "default.handlebars->contextMenu->cxwebssh" ] }, @@ -69368,8 +69412,8 @@ "tr": "Web-VNC", "zh-chs": "网络VNC", "xloc": [ - "default.handlebars->41->2820", - "default.handlebars->41->931", + "default.handlebars->41->2826", + "default.handlebars->41->932", "default.handlebars->contextMenu->cxwebvnc" ] }, @@ -69394,7 +69438,7 @@ "tr": "WebRDP", "zh-chs": "网络RDP", "xloc": [ - "default.handlebars->41->2936" + "default.handlebars->41->2942" ] }, { @@ -69418,7 +69462,7 @@ "tr": "WebSSH", "zh-chs": "网络SSH", "xloc": [ - "default.handlebars->41->2937" + "default.handlebars->41->2943" ] }, { @@ -69462,7 +69506,7 @@ "tr": "WebVNC", "zh-chs": "网络VNC", "xloc": [ - "default.handlebars->41->2938" + "default.handlebars->41->2944" ] }, { @@ -69482,7 +69526,7 @@ "ru": "Еженедельно", "tr": "Haftalık", "xloc": [ - "default.handlebars->41->281" + "default.handlebars->41->282" ] }, { @@ -69559,7 +69603,7 @@ "zh-chs": "威尔士文", "zh-cht": "威爾士文", "xloc": [ - "default.handlebars->41->1728" + "default.handlebars->41->1734" ] }, { @@ -69584,7 +69628,7 @@ "zh-chs": "启用后,任何人都可以使用邀请代码通过以下公共连结将设备加入该设备组:", "zh-cht": "啟用後,任何人都可以使用邀請代碼通過以下公共鏈結將裝置加入該裝置群:", "xloc": [ - "default.handlebars->41->2099" + "default.handlebars->41->2105" ] }, { @@ -69610,7 +69654,7 @@ "zh-cht": "啟用後,每次登入時,你都可以選擇向電郵帳戶接收登入保安編碼,以提高安全性。", "xloc": [ "default-mobile.handlebars->11->100", - "default.handlebars->41->1513" + "default.handlebars->41->1519" ] }, { @@ -69635,7 +69679,7 @@ "zh-chs": "选择此策略时,此服务器不管理英特尔®AMT。 仍然可以通过手动激活和配置Intel AMT来使用它。", "zh-cht": "選擇此策略時,此服務器不管理英特爾®AMT。 仍然可以通過手動激活和配置Intel AMT來使用它。", "xloc": [ - "default.handlebars->41->1981" + "default.handlebars->41->1987" ] }, { @@ -69682,7 +69726,7 @@ "zh-chs": "选择此策略后,将禁用处于客户端控制模式(CCM)的所有英特尔®AMT。 其他设备将清除CIRA,并且仍然可以手动进行管理。", "zh-cht": "選擇此策略後,將禁用處於客戶端控制模式(CCM)的所有英特爾®AMT。 其他設備將清除CIRA,並且仍然可以手動進行管理。", "xloc": [ - "default.handlebars->41->1982" + "default.handlebars->41->1988" ] }, { @@ -69707,7 +69751,7 @@ "zh-chs": "下次登录时将更改。", "zh-cht": "下次登入時將更改。", "xloc": [ - "default.handlebars->41->2617" + "default.handlebars->41->2623" ] }, { @@ -69735,8 +69779,8 @@ "default-mobile.handlebars->11->433", "default-mobile.handlebars->11->437", "default-mobile.handlebars->dialog->3->dialog3->deskkeys->5", - "default.handlebars->41->1255", - "default.handlebars->41->1259", + "default.handlebars->41->1260", + "default.handlebars->41->1264", "sharing.handlebars->p11->deskarea0->deskarea4->3->deskkeys->3" ] }, @@ -69942,7 +69986,7 @@ "zh-chs": "Win32可执行档案", "zh-cht": "Win32可執行檔案", "xloc": [ - "default.handlebars->41->1156" + "default.handlebars->41->1161" ] }, { @@ -70009,7 +70053,7 @@ "tr": "Pencere Başlığı", "zh-chs": "窗口标题", "xloc": [ - "default.handlebars->41->115" + "default.handlebars->41->116" ] }, { @@ -70035,9 +70079,9 @@ "zh-cht": "視窗", "xloc": [ "default-mobile.handlebars->11->283", - "default.handlebars->41->533", + "default.handlebars->41->534", "default.handlebars->41->55", - "default.handlebars->41->794" + "default.handlebars->41->795" ] }, { @@ -70062,8 +70106,8 @@ "zh-chs": "Windows(.exe)", "zh-cht": "Windows(.exe)", "xloc": [ - "default.handlebars->41->556", - "default.handlebars->41->584" + "default.handlebars->41->557", + "default.handlebars->41->585" ] }, { @@ -70088,7 +70132,7 @@ "zh-chs": "Windows(32位)", "zh-cht": "Windows(32位)", "xloc": [ - "default.handlebars->41->1162" + "default.handlebars->41->1167" ] }, { @@ -70113,7 +70157,7 @@ "zh-chs": "Windows(64位)", "zh-cht": "Windows(64位)", "xloc": [ - "default.handlebars->41->1161" + "default.handlebars->41->1166" ] }, { @@ -70137,7 +70181,7 @@ "tr": "Windows (RDP)", "zh-chs": "视窗 (RDP)", "xloc": [ - "default.handlebars->41->450" + "default.handlebars->41->451" ] }, { @@ -70162,7 +70206,7 @@ "zh-chs": "Windows(卸载)", "zh-cht": "Windows(卸載)", "xloc": [ - "default.handlebars->41->539" + "default.handlebars->41->540" ] }, { @@ -70341,8 +70385,8 @@ "zh-chs": "Windows命令提示", "zh-cht": "Windows命令提示", "xloc": [ - "default.handlebars->41->1110", - "default.handlebars->41->668" + "default.handlebars->41->1115", + "default.handlebars->41->669" ] }, { @@ -70353,8 +70397,8 @@ "pt-br": "MeshAgent Windows", "ru": "MeshAgent для Windows ", "xloc": [ - "default.handlebars->41->2104", - "default.handlebars->41->523" + "default.handlebars->41->2110", + "default.handlebars->41->524" ] }, { @@ -70431,7 +70475,7 @@ "zh-chs": "Windows路径", "zh-cht": "Windows路徑", "xloc": [ - "default.handlebars->41->689" + "default.handlebars->41->690" ] }, { @@ -70456,8 +70500,8 @@ "zh-chs": "Windows PowerShell", "zh-cht": "Windows PowerShell", "xloc": [ - "default.handlebars->41->1111", - "default.handlebars->41->669" + "default.handlebars->41->1116", + "default.handlebars->41->670" ] }, { @@ -70482,7 +70526,7 @@ "zh-chs": "视窗安全", "xloc": [ "default-mobile.handlebars->11->528", - "default.handlebars->41->841" + "default.handlebars->41->842" ] }, { @@ -70507,7 +70551,7 @@ "zh-chs": "仅Windows", "zh-cht": "僅Windows", "xloc": [ - "default.handlebars->41->496" + "default.handlebars->41->497" ] }, { @@ -70532,8 +70576,8 @@ "zh-chs": "Windows x64(.exe)", "zh-cht": "Windows x64(.exe)", "xloc": [ - "default.handlebars->41->560", - "default.handlebars->41->587" + "default.handlebars->41->561", + "default.handlebars->41->588" ] }, { @@ -70543,7 +70587,7 @@ "ru": "Рабочий каталог", "fr": "Répertoire de travail", "xloc": [ - "default.handlebars->41->1221" + "default.handlebars->41->1226" ] }, { @@ -70567,7 +70611,7 @@ "tr": "Çalışma seti", "zh-chs": "工作集", "xloc": [ - "default.handlebars->41->134" + "default.handlebars->41->135" ] }, { @@ -70617,7 +70661,7 @@ "zh-chs": "换行:关", "zh-cht": "换行:關", "xloc": [ - "default.handlebars->41->1383", + "default.handlebars->41->1388", "sharing.handlebars->11->84" ] }, @@ -70643,7 +70687,7 @@ "zh-chs": "换行:开", "zh-cht": "换行:開", "xloc": [ - "default.handlebars->41->1382", + "default.handlebars->41->1387", "sharing.handlebars->11->83" ] }, @@ -70669,7 +70713,7 @@ "zh-chs": "为此设备写一个事件", "zh-cht": "為此裝置寫一個事件", "xloc": [ - "default.handlebars->41->898" + "default.handlebars->41->899" ] }, { @@ -70744,7 +70788,7 @@ "zh-chs": "XTerm", "zh-cht": "XTerm", "xloc": [ - "default.handlebars->41->922" + "default.handlebars->41->923" ] }, { @@ -70769,7 +70813,7 @@ "zh-chs": "科萨", "zh-cht": "科薩", "xloc": [ - "default.handlebars->41->1729" + "default.handlebars->41->1735" ] }, { @@ -70794,7 +70838,7 @@ "zh-chs": "意第绪文", "zh-cht": "意第緒文", "xloc": [ - "default.handlebars->41->1730" + "default.handlebars->41->1736" ] }, { @@ -70819,7 +70863,7 @@ "zh-chs": "您可以随时重新激活此功能。", "zh-cht": "你可以隨時重新啟動此功能。", "xloc": [ - "default.handlebars->41->211" + "default.handlebars->41->212" ] }, { @@ -70916,7 +70960,7 @@ "zh-chs": "您现在需要一个有效的保安编码才能再次登录。", "zh-cht": "你現在需要一個有效的保安編碼才能再次登入。", "xloc": [ - "default.handlebars->41->206" + "default.handlebars->41->207" ] }, { @@ -70967,7 +71011,7 @@ "zh-chs": "YubiKey™ OTP", "zh-cht": "YubiKey™OTP", "xloc": [ - "default.handlebars->41->1532" + "default.handlebars->41->1538" ] }, { @@ -71018,7 +71062,7 @@ "zh-chs": "邮编档案名", "zh-cht": "郵編檔案名", "xloc": [ - "default.handlebars->41->1367", + "default.handlebars->41->1372", "sharing.handlebars->11->68" ] }, @@ -71044,7 +71088,7 @@ "zh-chs": "缩放至适合范围", "zh-cht": "縮放至適合範圍", "xloc": [ - "default.handlebars->41->760" + "default.handlebars->41->761" ] }, { @@ -71069,8 +71113,8 @@ "zh-chs": "放大到一定程度", "zh-cht": "放大到一定程度", "xloc": [ - "default.handlebars->41->757", - "default.handlebars->41->763" + "default.handlebars->41->758", + "default.handlebars->41->764" ] }, { @@ -71095,8 +71139,8 @@ "zh-chs": "缩小到一定程度", "zh-cht": "縮小到一定程度", "xloc": [ - "default.handlebars->41->758", - "default.handlebars->41->764" + "default.handlebars->41->759", + "default.handlebars->41->765" ] }, { @@ -71121,7 +71165,7 @@ "zh-chs": "祖鲁族", "zh-cht": "祖魯族", "xloc": [ - "default.handlebars->41->1731" + "default.handlebars->41->1737" ] }, { @@ -71539,7 +71583,7 @@ "zh-chs": "\\\\'", "zh-cht": "\\\\'", "xloc": [ - "default.handlebars->41->2986" + "default.handlebars->41->2992" ] }, { @@ -71566,8 +71610,8 @@ "xloc": [ "default-mobile.handlebars->11->180", "default-mobile.handlebars->11->181", - "default.handlebars->41->731", - "default.handlebars->41->732" + "default.handlebars->41->732", + "default.handlebars->41->733" ] }, { @@ -71592,9 +71636,9 @@ "zh-chs": "加一", "zh-cht": "加一", "xloc": [ - "default.handlebars->41->340", - "default.handlebars->41->342", - "default.handlebars->41->344" + "default.handlebars->41->341", + "default.handlebars->41->343", + "default.handlebars->41->345" ] }, { @@ -71619,7 +71663,7 @@ "zh-chs": "管理员", "zh-cht": "管理員", "xloc": [ - "default.handlebars->41->459" + "default.handlebars->41->460" ] }, { @@ -71645,8 +71689,8 @@ "xloc": [ "default-mobile.handlebars->11->184", "default-mobile.handlebars->11->185", - "default.handlebars->41->735", - "default.handlebars->41->736" + "default.handlebars->41->736", + "default.handlebars->41->737" ] }, { @@ -71670,7 +71714,7 @@ "tr": "ve", "zh-chs": "和", "xloc": [ - "default.handlebars->41->713" + "default.handlebars->41->714" ] }, { @@ -71748,8 +71792,8 @@ "xloc": [ "default-mobile.handlebars->11->178", "default-mobile.handlebars->11->179", - "default.handlebars->41->729", - "default.handlebars->41->730" + "default.handlebars->41->730", + "default.handlebars->41->731" ] }, { @@ -71810,7 +71854,7 @@ "zh-chs": "取消帮助", "zh-cht": "取消幫助", "xloc": [ - "default.handlebars->41->396" + "default.handlebars->41->397" ] }, { @@ -71946,8 +71990,8 @@ "tr": "bilgisayar listesi.json", "zh-chs": "计算机列表.json", "xloc": [ - "default.handlebars->41->706", - "default.handlebars->41->711" + "default.handlebars->41->707", + "default.handlebars->41->712" ] }, { @@ -71972,8 +72016,8 @@ "zh-chs": "console.txt", "zh-cht": "console.txt", "xloc": [ - "default-mobile.handlebars->11->609", - "default.handlebars->41->1492" + "default-mobile.handlebars->11->610", + "default.handlebars->41->1498" ] }, { @@ -71999,7 +72043,7 @@ "zh-cht": "複製", "xloc": [ "default-mobile.handlebars->11->161", - "default.handlebars->41->2191" + "default.handlebars->41->2197" ] }, { @@ -72048,8 +72092,8 @@ "tr": "açıklama:", "zh-chs": "描述:", "xloc": [ - "default.handlebars->41->737", - "default.handlebars->41->738" + "default.handlebars->41->738", + "default.handlebars->41->739" ] }, { @@ -72073,7 +72117,7 @@ "tr": "cihaz listesi", "zh-chs": "设备列表", "xloc": [ - "default.handlebars->41->311" + "default.handlebars->41->312" ] }, { @@ -72098,8 +72142,8 @@ "zh-chs": "devicelist.csv", "zh-cht": "devicelist.csv", "xloc": [ - "default.handlebars->41->702", - "default.handlebars->41->710" + "default.handlebars->41->703", + "default.handlebars->41->711" ] }, { @@ -72124,8 +72168,8 @@ "zh-chs": "devicelist.json", "zh-cht": "devicelist.json", "xloc": [ - "default.handlebars->41->704", - "default.handlebars->41->712" + "default.handlebars->41->705", + "default.handlebars->41->713" ] }, { @@ -72220,8 +72264,8 @@ "zh-chs": "eventslist.csv", "zh-cht": "eventslist.csv", "xloc": [ - "default.handlebars->41->2376", - "default.handlebars->41->2381" + "default.handlebars->41->2382", + "default.handlebars->41->2387" ] }, { @@ -72246,8 +72290,8 @@ "zh-chs": "eventslist.json", "zh-cht": "eventslist.json", "xloc": [ - "default.handlebars->41->2378", - "default.handlebars->41->2382" + "default.handlebars->41->2384", + "default.handlebars->41->2388" ] }, { @@ -72272,7 +72316,7 @@ "zh-chs": "example@email.com", "zh-cht": "example@email.com", "xloc": [ - "default.handlebars->41->492" + "default.handlebars->41->493" ] }, { @@ -72322,8 +72366,8 @@ "zh-chs": "免费", "zh-cht": "免費", "xloc": [ - "default.handlebars->41->2923", - "default.handlebars->41->2926" + "default.handlebars->41->2929", + "default.handlebars->41->2932" ] }, { @@ -72350,8 +72394,8 @@ "xloc": [ "default-mobile.handlebars->11->172", "default-mobile.handlebars->11->173", - "default.handlebars->41->723", - "default.handlebars->41->724" + "default.handlebars->41->724", + "default.handlebars->41->725" ] }, { @@ -72378,8 +72422,8 @@ "xloc": [ "default-mobile.handlebars->11->170", "default-mobile.handlebars->11->171", - "default.handlebars->41->721", - "default.handlebars->41->722" + "default.handlebars->41->722", + "default.handlebars->41->723" ] }, { @@ -72595,7 +72639,7 @@ "ru": "id, name, email, creation, lastlogin, groups, authfactors, siteadmin, useradmin, locked", "fr": "id, nom, email, creation, derniereconnexion, groupes, authentification, siteadmin, useradmin, verrouillé", "xloc": [ - "default.handlebars->41->2448" + "default.handlebars->41->2454" ] }, { @@ -72662,7 +72706,7 @@ "tr": "id, ad, rname, ana bilgisayar, simge, ip, osdesc, durum, grup adı, bağlantı, pwr, av, güncelleme, güvenlik duvarı, avdetails", "zh-chs": "id、名称、rname、主机、图标、ip、osdesc、状态、组名、conn、pwr、av、更新、防火墙、avdetails", "xloc": [ - "default.handlebars->41->709" + "default.handlebars->41->710" ] }, { @@ -72710,8 +72754,8 @@ "xloc": [ "default-mobile.handlebars->11->168", "default-mobile.handlebars->11->169", - "default.handlebars->41->719", - "default.handlebars->41->720" + "default.handlebars->41->720", + "default.handlebars->41->721" ] }, { @@ -72811,7 +72855,7 @@ "zh-chs": "k max,默认为空白", "zh-cht": "k max,默認為空白", "xloc": [ - "default.handlebars->41->2476" + "default.handlebars->41->2482" ] }, { @@ -72909,7 +72953,7 @@ "zh-cht": "macOS", "xloc": [ "default-mobile.handlebars->11->287", - "default.handlebars->41->798" + "default.handlebars->41->799" ] }, { @@ -72955,7 +72999,7 @@ "tr": "macOS (SSH/SCP/VNC)", "zh-chs": "macOS (SSH/SCP/VNC)", "xloc": [ - "default.handlebars->41->452" + "default.handlebars->41->453" ] }, { @@ -73024,7 +73068,7 @@ "zh-chs": "macOS ARM (64位)", "zh-cht": "macOS ARM (64位)", "xloc": [ - "default.handlebars->41->1166" + "default.handlebars->41->1171" ] }, { @@ -73049,7 +73093,7 @@ "zh-chs": "macOS x86 (64位)", "zh-cht": "macOS x86 (64位)", "xloc": [ - "default.handlebars->41->1165" + "default.handlebars->41->1170" ] }, { @@ -73126,7 +73170,7 @@ "zh-chs": "MeshAgent", "zh-cht": "MeshAgent", "xloc": [ - "default.handlebars->41->592" + "default.handlebars->41->593" ] }, { @@ -73152,7 +73196,7 @@ "zh-cht": "移動", "xloc": [ "default-mobile.handlebars->11->162", - "default.handlebars->41->2192" + "default.handlebars->41->2198" ] }, { @@ -73312,7 +73356,7 @@ "tr": "veya", "zh-chs": "或者", "xloc": [ - "default.handlebars->41->714" + "default.handlebars->41->715" ] }, { @@ -73338,8 +73382,8 @@ "xloc": [ "default-mobile.handlebars->11->182", "default-mobile.handlebars->11->183", - "default.handlebars->41->733", - "default.handlebars->41->734" + "default.handlebars->41->734", + "default.handlebars->41->735" ] }, { @@ -73423,7 +73467,7 @@ "zh-chs": "servererrors.txt", "zh-cht": "servererrors.txt", "xloc": [ - "default.handlebars->41->1847" + "default.handlebars->41->1853" ] }, { @@ -73448,7 +73492,7 @@ "zh-chs": "servertrace.csv", "zh-cht": "servertrace.csv", "xloc": [ - "default.handlebars->41->2980" + "default.handlebars->41->2986" ] }, { @@ -73496,8 +73540,8 @@ "xloc": [ "default-mobile.handlebars->11->176", "default-mobile.handlebars->11->177", - "default.handlebars->41->727", - "default.handlebars->41->728" + "default.handlebars->41->728", + "default.handlebars->41->729" ] }, { @@ -73524,8 +73568,8 @@ "xloc": [ "default-mobile.handlebars->11->174", "default-mobile.handlebars->11->175", - "default.handlebars->41->725", - "default.handlebars->41->726" + "default.handlebars->41->726", + "default.handlebars->41->727" ] }, { @@ -73550,7 +73594,7 @@ "zh-chs": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss", "zh-cht": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss", "xloc": [ - "default.handlebars->41->2955" + "default.handlebars->41->2961" ] }, { @@ -73575,7 +73619,7 @@ "zh-chs": "时间,来源,信息", "zh-cht": "時間,來源,訊息", "xloc": [ - "default.handlebars->41->2979" + "default.handlebars->41->2985" ] }, { @@ -73622,8 +73666,8 @@ "zh-chs": "总计", "zh-cht": "總", "xloc": [ - "default.handlebars->41->2924", - "default.handlebars->41->2927" + "default.handlebars->41->2930", + "default.handlebars->41->2933" ] }, { @@ -73674,8 +73718,8 @@ "xloc": [ "default-mobile.handlebars->11->166", "default-mobile.handlebars->11->167", - "default.handlebars->41->717", - "default.handlebars->41->718" + "default.handlebars->41->718", + "default.handlebars->41->719" ] }, { @@ -73724,8 +73768,8 @@ "xloc": [ "default-mobile.handlebars->11->164", "default-mobile.handlebars->11->165", - "default.handlebars->41->715", - "default.handlebars->41->716" + "default.handlebars->41->716", + "default.handlebars->41->717" ] }, { @@ -73750,8 +73794,8 @@ "zh-chs": "userlist.csv", "zh-cht": "userlist.csv", "xloc": [ - "default.handlebars->41->2444", - "default.handlebars->41->2449" + "default.handlebars->41->2450", + "default.handlebars->41->2455" ] }, { @@ -73776,8 +73820,8 @@ "zh-chs": "userlist.json", "zh-cht": "userlist.json", "xloc": [ - "default.handlebars->41->2446", - "default.handlebars->41->2450" + "default.handlebars->41->2452", + "default.handlebars->41->2456" ] }, { @@ -73802,7 +73846,7 @@ "zh-chs": "utc,时间,类型,指令,用户,设备,消息", "zh-cht": "utc,時間,類型,指令,用戶,裝置,消息", "xloc": [ - "default.handlebars->41->2380" + "default.handlebars->41->2386" ] }, { @@ -74019,8 +74063,8 @@ "zh-chs": "{0} Gb", "zh-cht": "{0} Gb", "xloc": [ - "default.handlebars->41->2166", - "default.handlebars->41->2171" + "default.handlebars->41->2172", + "default.handlebars->41->2177" ] }, { @@ -74066,9 +74110,9 @@ "zh-chs": "{0} Kb", "zh-cht": "{0} Kb", "xloc": [ - "default.handlebars->41->2164", - "default.handlebars->41->2169", - "default.handlebars->41->2743" + "default.handlebars->41->2170", + "default.handlebars->41->2175", + "default.handlebars->41->2749" ] }, { @@ -74114,12 +74158,12 @@ "zh-chs": "{0} Mb", "zh-cht": "{0} Mb", "xloc": [ - "default-mobile.handlebars->11->593", - "default-mobile.handlebars->11->598", - "default.handlebars->41->1475", - "default.handlebars->41->1480", - "default.handlebars->41->2165", - "default.handlebars->41->2170" + "default-mobile.handlebars->11->594", + "default-mobile.handlebars->11->599", + "default.handlebars->41->1481", + "default.handlebars->41->1486", + "default.handlebars->41->2171", + "default.handlebars->41->2176" ] }, { @@ -74144,8 +74188,8 @@ "zh-chs": "{0} Mb,{1} Mhz", "zh-cht": "{0} Mb,{1} Mhz", "xloc": [ - "default-mobile.handlebars->11->591", - "default.handlebars->41->1473" + "default-mobile.handlebars->11->592", + "default.handlebars->41->1479" ] }, { @@ -74191,7 +74235,7 @@ "zh-chs": "{0}个活跃会话", "zh-cht": "{0}個活躍節", "xloc": [ - "default.handlebars->41->2663" + "default.handlebars->41->2669" ] }, { @@ -74216,8 +74260,8 @@ "zh-chs": "{0} b", "zh-cht": "{0} b", "xloc": [ - "default.handlebars->41->2163", - "default.handlebars->41->2168" + "default.handlebars->41->2169", + "default.handlebars->41->2174" ] }, { @@ -74243,8 +74287,8 @@ "zh-cht": "{0}個字節", "xloc": [ "default-mobile.handlebars->11->150", - "default.handlebars->41->2179", - "default.handlebars->41->2764", + "default.handlebars->41->2185", + "default.handlebars->41->2770", "download.handlebars->3->2", "download2.handlebars->5->2", "sharing.handlebars->11->97" @@ -74272,7 +74316,7 @@ "zh-chs": "剩余{0}个字节", "zh-cht": "剩餘{0}個字節", "xloc": [ - "default.handlebars->41->2158" + "default.handlebars->41->2164" ] }, { @@ -74318,7 +74362,7 @@ "zh-chs": "{0}个连接", "zh-cht": "{0}個連接", "xloc": [ - "default.handlebars->41->1226", + "default.handlebars->41->1231", "sharing.handlebars->11->16" ] }, @@ -74343,7 +74387,7 @@ "tr": "{1} ile {2} arasında {0}.", "zh-chs": "{0} 从 {1} 到 {2}。", "xloc": [ - "default.handlebars->41->1124" + "default.handlebars->41->1129" ] }, { @@ -74368,7 +74412,7 @@ "zh-chs": "剩余{0} GB", "zh-cht": "剩餘{0} GB", "xloc": [ - "default.handlebars->41->2161" + "default.handlebars->41->2167" ] }, { @@ -74393,7 +74437,7 @@ "zh-chs": "{0}个群组", "zh-cht": "{0}個群組", "xloc": [ - "default.handlebars->41->2622" + "default.handlebars->41->2628" ] }, { @@ -74418,7 +74462,7 @@ "zh-chs": "{0}小時", "zh-cht": "{0}小時", "xloc": [ - "default.handlebars->41->260" + "default.handlebars->41->261" ] }, { @@ -74465,7 +74509,7 @@ "zh-chs": "剩余{0}千字节", "zh-cht": "剩餘{0}千字節", "xloc": [ - "default.handlebars->41->2159" + "default.handlebars->41->2165" ] }, { @@ -74517,7 +74561,7 @@ "zh-chs": "剩余{0}兆字节", "zh-cht": "剩餘{0}兆字節", "xloc": [ - "default.handlebars->41->2160" + "default.handlebars->41->2166" ] }, { @@ -74537,7 +74581,7 @@ "ru": "{0} минута", "tr": "{0} dakika", "xloc": [ - "default.handlebars->41->273" + "default.handlebars->41->274" ] }, { @@ -74557,7 +74601,7 @@ "ru": "{0} минут", "tr": "{0} dakika", "xloc": [ - "default.handlebars->41->275" + "default.handlebars->41->276" ] }, { @@ -74628,7 +74672,7 @@ "zh-chs": "{0}未显示更多用户,请使用搜索框查找用户...", "zh-cht": "{0}未顯示更多用戶,請使用搜索框查找用戶...", "xloc": [ - "default.handlebars->41->2390" + "default.handlebars->41->2396" ] }, { @@ -74653,7 +74697,7 @@ "zh-chs": "{0}个节点", "zh-cht": "{0}個節點", "xloc": [ - "default.handlebars->41->598" + "default.handlebars->41->599" ] }, { @@ -74855,9 +74899,9 @@ "tr": "{0} saniye", "zh-chs": "{0} 秒", "xloc": [ - "default.handlebars->41->125", - "default.handlebars->41->127", - "default.handlebars->41->129" + "default.handlebars->41->126", + "default.handlebars->41->128", + "default.handlebars->41->130" ] }, { @@ -74974,7 +75018,7 @@ "tr": "{0} seçili cihaz çevrimdışı.", "zh-chs": "{0} 个选定的设备处于离线状态。", "xloc": [ - "default.handlebars->41->664" + "default.handlebars->41->665" ] }, { @@ -74998,7 +75042,7 @@ "tr": "{0} seçili cihaz çevrimiçi.", "zh-chs": "{0} 个选定的设备在线。", "xloc": [ - "default.handlebars->41->662" + "default.handlebars->41->663" ] }, { @@ -75030,14 +75074,14 @@ "default-mobile.handlebars->11->219", "default-mobile.handlebars->11->223", "default-mobile.handlebars->11->227", - "default.handlebars->41->2394", - "default.handlebars->41->400", - "default.handlebars->41->403", - "default.handlebars->41->407", - "default.handlebars->41->411", - "default.handlebars->41->415", - "default.handlebars->41->419", - "default.handlebars->41->423" + "default.handlebars->41->2400", + "default.handlebars->41->401", + "default.handlebars->41->404", + "default.handlebars->41->408", + "default.handlebars->41->412", + "default.handlebars->41->416", + "default.handlebars->41->420", + "default.handlebars->41->424" ] }, { @@ -75062,7 +75106,7 @@ "zh-chs": "{0}设置(.msh)", "zh-cht": "{0}设置(.msh)", "xloc": [ - "default.handlebars->41->563" + "default.handlebars->41->564" ] }, { @@ -75199,7 +75243,7 @@ "zh-chs": "{0}个用户", "zh-cht": "{0}個用戶", "xloc": [ - "default.handlebars->41->426" + "default.handlebars->41->427" ] }, { @@ -75265,8 +75309,8 @@ "ru": "{0}, {1} на {2} мин.", "tr": "{0}, {1} için {2} dakika", "xloc": [ - "default.handlebars->41->1932", - "default.handlebars->41->972" + "default.handlebars->41->1938", + "default.handlebars->41->977" ] }, { @@ -75286,8 +75330,8 @@ "ru": "{0}, {1} на {2} мин.", "tr": "{0}, {1} için {2} dakika", "xloc": [ - "default.handlebars->41->1933", - "default.handlebars->41->973" + "default.handlebars->41->1939", + "default.handlebars->41->978" ] }, { @@ -75312,8 +75356,8 @@ "zh-chs": "{0},{1}至{2}", "zh-cht": "{0},{1}至{2}", "xloc": [ - "default.handlebars->41->1931", - "default.handlebars->41->971" + "default.handlebars->41->1937", + "default.handlebars->41->976" ] }, { @@ -75388,7 +75432,7 @@ "zh-chs": "{0}k在1档案内。最多{1}k", "zh-cht": "{0}k在1檔案內。最多{1}k", "xloc": [ - "default.handlebars->41->2173" + "default.handlebars->41->2179" ] }, { @@ -75413,7 +75457,7 @@ "zh-chs": "{1}k在{0}个档案中。最多{2}k", "zh-cht": "{1}k在{0}個檔案中。最多{2}k", "xloc": [ - "default.handlebars->41->2172" + "default.handlebars->41->2178" ] }, { From 9372f7666c11d41943646e242aac857625a6951d Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 21 Jun 2022 19:06:40 -0700 Subject: [PATCH 039/105] Added more authenticode-js error handling, #4134 --- authenticode.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/authenticode.js b/authenticode.js index 825652d4..c2147956 100644 --- a/authenticode.js +++ b/authenticode.js @@ -426,10 +426,12 @@ function createAuthenticodeHandler(path) { res.on('data', function (chunk) { responseAccumulator += chunk; }); res.on('end', function () { // Decode the timestamp signature block - const timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); + var timepkcs7der = null; + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } // Decode the executable signature block - const pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); + var pkcs7der = null; + try { forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable // TODO: We could look to see if the certificate is already present in the executable @@ -1291,7 +1293,8 @@ function createAuthenticodeHandler(path) { signEx(args, p7signature, obj.filesize, func); } else { // Decode the signature block - var pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); + var pkcs7der = null; + try { forge.asn1.fromDer(forge.util.createBuffer(p7signature)); } catch (ex) { func('' + ex); return; } // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" @@ -1316,7 +1319,7 @@ function createAuthenticodeHandler(path) { ]); // Re-decode the PKCS7 from the executable, this time, no workaround needed - pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); + try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); } catch (ex) { func('' + ex); return; } // Serialize an ASN.1 object to DER format in Base64 const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); @@ -1341,7 +1344,8 @@ function createAuthenticodeHandler(path) { res.on('data', function (chunk) { responseAccumulator += chunk; }); res.on('end', function () { // Decode the timestamp signature block - const timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); + const timepkcs7der = null; + try { forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable // TODO: We could look to see if the certificate is already present in the executable @@ -1562,7 +1566,7 @@ function createAuthenticodeHandler(path) { if (args.hash == 'sha512') { hashOid = forge.pki.oids.sha512; fileHash = obj.getHashOfFile(output, 'sha512', written); } if (args.hash == 'sha224') { hashOid = forge.pki.oids.sha224; fileHash = obj.getHashOfFile(output, 'sha224', written); } if (args.hash == 'md5') { hashOid = forge.pki.oids.md5; fileHash = obj.getHashOfFile(output, 'md5', written); } - if (hashOid == null) return false; + if (hashOid == null) { func('Bad hash method OID'); return; } // Create the signature block var xp7 = forge.pkcs7.createSignedData(); @@ -1605,7 +1609,8 @@ function createAuthenticodeHandler(path) { writeExecutableEx(output, p7signature, written, func); } else { // Decode the signature block - var pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); + var pkcs7der = null; + try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); } catch (ex) { func('' + ex); return; } // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" @@ -1630,7 +1635,7 @@ function createAuthenticodeHandler(path) { ]); // Re-decode the PKCS7 from the executable, this time, no workaround needed - pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); + try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); } catch (ex) { func('' + ex); return; } // Serialize an ASN.1 object to DER format in Base64 const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); From 0605422ccd4d4638389d9a1b06c3dcb99d0cd004 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 10:51:39 -0700 Subject: [PATCH 040/105] Fixes to agent code signing, #4161 --- MeshCentralServer.njsproj | 2 -- authenticode.js | 38 +++++++++++++++++++++++++++----------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/MeshCentralServer.njsproj b/MeshCentralServer.njsproj index 7cbdaf20..64ed15d7 100644 --- a/MeshCentralServer.njsproj +++ b/MeshCentralServer.njsproj @@ -261,10 +261,8 @@ - - diff --git a/authenticode.js b/authenticode.js index c2147956..4ee18ee1 100644 --- a/authenticode.js +++ b/authenticode.js @@ -408,7 +408,12 @@ function createAuthenticodeHandler(path) { // Make an HTTP request const http = require('http'); - var options = { + const timeServerUrl = new URL(args.time); + const options = { + protocol: timeServerUrl.protocol, + hostname: timeServerUrl.hostname, + path: timeServerUrl.pathname, + port: ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)), method: 'POST', headers: { 'accept': 'application/octet-stream', @@ -421,7 +426,7 @@ function createAuthenticodeHandler(path) { // Set up the request var responseAccumulator = ''; - var req = http.request(args.time, options, function (res) { + var req = http.request(options, function (res) { res.setEncoding('utf8'); res.on('data', function (chunk) { responseAccumulator += chunk; }); res.on('end', function () { @@ -431,7 +436,7 @@ function createAuthenticodeHandler(path) { // Decode the executable signature block var pkcs7der = null; - try { forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable // TODO: We could look to see if the certificate is already present in the executable @@ -1294,7 +1299,7 @@ function createAuthenticodeHandler(path) { } else { // Decode the signature block var pkcs7der = null; - try { forge.asn1.fromDer(forge.util.createBuffer(p7signature)); } catch (ex) { func('' + ex); return; } + try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(p7signature)); } catch (ex) { func('' + ex); return; } // To work around ForgeJS PKCS#7 limitation, this may break PKCS7 verify if ForgeJS adds support for it in the future // Switch content type from "1.3.6.1.4.1.311.2.1.4" to "1.2.840.113549.1.7.1" @@ -1326,7 +1331,12 @@ function createAuthenticodeHandler(path) { // Make an HTTP request const http = require('http'); - var options = { + const timeServerUrl = new URL(args.time); + const options = { + protocol: timeServerUrl.protocol, + hostname: timeServerUrl.hostname, + path: timeServerUrl.pathname, + port: ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)), method: 'POST', headers: { 'accept': 'application/octet-stream', @@ -1339,13 +1349,13 @@ function createAuthenticodeHandler(path) { // Set up the request var responseAccumulator = ''; - var req = http.request(args.time, options, function (res) { + var req = http.request(options, function (res) { res.setEncoding('utf8'); res.on('data', function (chunk) { responseAccumulator += chunk; }); res.on('end', function () { // Decode the timestamp signature block - const timepkcs7der = null; - try { forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + var timepkcs7der = null; + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable // TODO: We could look to see if the certificate is already present in the executable @@ -1642,7 +1652,12 @@ function createAuthenticodeHandler(path) { // Make an HTTP request const http = require('http'); - var options = { + const timeServerUrl = new URL(args.time); + const options = { + protocol: timeServerUrl.protocol, + hostname: timeServerUrl.hostname, + path: timeServerUrl.pathname, + port: ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)), method: 'POST', headers: { 'accept': 'application/octet-stream', @@ -1655,12 +1670,13 @@ function createAuthenticodeHandler(path) { // Set up the request var responseAccumulator = ''; - var req = http.request(args.time, options, function (res) { + var req = http.request(options, function (res) { res.setEncoding('utf8'); res.on('data', function (chunk) { responseAccumulator += chunk; }); res.on('end', function () { // Decode the timestamp signature block - const timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); + var timepkcs7der = null; + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable // TODO: We could look to see if the certificate is already present in the executable From 1e368f52b3b917ebbe6e934947c349132eb01984 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 10:53:39 -0700 Subject: [PATCH 041/105] Version 1.0.40 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 28c2985a..c66b1b5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "1.0.39", + "version": "1.0.40", "keywords": [ "Remote Device Management", "Remote Device Monitoring", From af0ff0914469e75f61153df3c468a893066e6f17 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 11:43:47 -0700 Subject: [PATCH 042/105] Fixed empty notifications titles, #4155 --- meshuser.js | 7 ++++++- views/default.handlebars | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/meshuser.js b/meshuser.js index 2c2ec115..30b27364 100644 --- a/meshuser.js +++ b/meshuser.js @@ -2913,7 +2913,6 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use // Perform input validation try { if (common.validateStrArray(command.nodeids, 1, 256) == false) { err = "Invalid nodeids"; } // Check nodeids - else if (common.validateString(command.title, 1, 512) == false) { err = "Invalid title"; } // Check title else if (common.validateString(command.msg, 1, 4096) == false) { err = "Invalid message"; } // Check message else { var nodeids = []; @@ -2928,6 +2927,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use break; } + // Check the title, if needed, use a default one + if (common.validateString(command.title, 1, 512) == false) { delete command.title } // Check title + if ((command.title == null) && (typeof domain.notificationmessages == 'object') && (typeof domain.notificationmessages.title == 'string')) { command.title = domain.notificationmessages.title; } + if ((command.title == null) && (typeof domain.title == 'string')) { command.title = domain.title; } + if (command.title == null) { command.title = "MeshCentral"; } + for (i in command.nodeids) { // Get the node and the rights for this node parent.GetNodeWithRights(domain, user, command.nodeids[i], function (node, rights, visible) { diff --git a/views/default.handlebars b/views/default.handlebars index 6a23166e..1a250ce7 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -5551,6 +5551,7 @@ var op = Q('d2deviceop').value, title = Q('dp2notifyTitle').value, msg = Q('d2notifyMsg').value, chkNodeIds = getCheckedDevices(); if (msg.length == 0) return; if (title == '') { title = decodeURIComponent('{{{extitle}}}'); } + if (title == '') { title = "MeshCentral"; } if (op == 1) { // MessageBox for (var i = 0; i < chkNodeIds.length; i++) { meshserver.send({ action: 'msg', type: 'messagebox', nodeid: chkNodeIds[i], title: title, msg: msg }); } } else if (op == 2) { // Toast @@ -7599,10 +7600,12 @@ } function deviceMessageFunctionEx() { + var title = decodeURIComponent('{{{extitle}}}'); + if (title == '') { title = "MeshCentral"; } if (currentNode.pmt == 1) { - meshserver.send({ action: 'pushmessage', nodeid: currentNode._id, title: decodeURIComponent('{{{extitle}}}'), msg: Q('d2devMessage').value }); + meshserver.send({ action: 'pushmessage', nodeid: currentNode._id, title: title, msg: Q('d2devMessage').value }); } else { - meshserver.send({ action: 'msg', type: 'messagebox', nodeid: currentNode._id, title: decodeURIComponent('{{{extitle}}}'), msg: Q('d2devMessage').value }); + meshserver.send({ action: 'msg', type: 'messagebox', nodeid: currentNode._id, title: title, msg: Q('d2devMessage').value }); } } From 89c152027f96c7f81d2a13190a485bb0bafe1b39 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 12:23:03 -0700 Subject: [PATCH 043/105] Intel AMT power actions permissions improvements, #4159 --- meshuser.js | 5 +++-- views/default-mobile.handlebars | 38 ++++++--------------------------- views/default.handlebars | 9 +++++--- 3 files changed, 15 insertions(+), 37 deletions(-) diff --git a/meshuser.js b/meshuser.js index 30b27364..135e9e0a 100644 --- a/meshuser.js +++ b/meshuser.js @@ -2867,8 +2867,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use if ((command.actiontype == 400) && common.validateInt(command.time, 1, 30000)) { routeCommandToNode({ action: 'msg', type: 'console', nodeid: node._id, value: 'flash ' + command.time }, MESHRIGHT_ADMIN, 0); } if ((command.actiontype == 401) && common.validateInt(command.time, 1, 30000)) { routeCommandToNode({ action: 'msg', type: 'console', nodeid: node._id, value: 'vibrate ' + command.time }, MESHRIGHT_ADMIN, 0); } } else { - // Check we have the rights to delete this device - if ((rights & MESHRIGHT_RESETOFF) == 0) return; + // Check we have the rights to perform this operation + if ((command.actiontype == 302) && ((rights & MESHRIGHT_WAKEDEVICE) == 0)) return; // This is a Intel AMT power on operation, check if we have WAKE rights + if ((command.actiontype != 302) && ((rights & MESHRIGHT_RESETOFF) == 0)) return; // For all other operations, check that we have RESET/OFF rights // If this device is connected on MQTT, send a power action. if ((parent.parent.mqttbroker != null) && (command.actiontype >= 0) && (command.actiontype <= 4)) { parent.parent.mqttbroker.publish(node._id, 'powerAction', ['', '', 'poweroff', 'reset', 'sleep'][command.actiontype]); } diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars index e49ffe2d..57f05ef2 100644 --- a/views/default-mobile.handlebars +++ b/views/default-mobile.handlebars @@ -3541,7 +3541,7 @@ x += '
'; // Show action button, only show if we have permissions 4, 8, 64 - if (((meshrights & (4 + 8 + 64)) != 0) && (node.mtype < 3)) { x += ''; } + if (((meshrights & (4 + 8 + 64 + 262144)) != 0) && (node.mtype < 3)) { x += ''; } x += ''; //if ((connectivity & 1) && (meshrights & 8) && (node.agent.id < 5)) { x += ''; } @@ -3676,35 +3676,6 @@ if (currentDevicePanel == 1) { deskAdjust(); } } - /* - function deviceActionFunction() { - if (xxdialogMode) return; - var rights = GetNodeRights(currentNode), count = 0; - var x = "Select an operation to perform on this device." + '

'; - var y = ''; - x += addHtmlValue("Operation", y); - if (count == 0) { x = "No actions currently available for this device."; } - setDialogMode(2, "Device Action", (count == 0) ? 1 : 3, deviceActionFunctionEx, x); - } - - function deviceActionFunctionEx() { - var op = Q('d2deviceop').value; - if (op == 100) { - // Device wake - meshserver.send({ action: 'wakedevices', nodeids: [currentNode._id] }); - } else { - // Power operation - meshserver.send({ action: 'poweraction', nodeids: [currentNode._id], actiontype: op }); - } - } - */ - function deviceActionFunction() { if (xxdialogMode) return; var rights = GetNodeRights(currentNode), count = 0; @@ -3723,12 +3694,15 @@ //if (((currentNode.conn & 1) != 0) && ((rights & 131072) != 0)) { count++; y += ''; } // Remote command permission if ((currentNode.conn != 0) && ((rights & 262144) != 0)) { count++; y += ''; } //if ((currentNode.conn & 16) != 0) { count++; y += ''; } - if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && (rights == 0xFFFFFFFF)) { + if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && ((rights & 262144) != 0)) { count++; y += ''; - y += ''; y += ''; } + if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && ((rights & 64) != 0)) { + count++; + y += ''; + } //if ((getNodeAmtVersion(currentNode) >= 15) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && (rights == 0xFFFFFFFF) && ((features & 0x00000400) == 0)) { count++; y += ''; } // CIRA (2) or AMT (4) connected //if (((currentNode.conn & 1) != 0) && ((rights & 32768) != 0)) { count++; y += ''; } } diff --git a/views/default.handlebars b/views/default.handlebars index 1a250ce7..4a685ffe 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -7072,7 +7072,7 @@ x += '
'; // Show action button, only show if we have permissions 4, 8, 64 - if (((meshrights & (4 + 8 + 64)) != 0) && (node.mtype < 3) && ((node.agent == null) || (node.agent.id != 34))) { x += ''; } + if (((meshrights & (4 + 8 + 64 + 262144)) != 0) && (node.mtype < 3) && ((node.agent == null) || (node.agent.id != 34))) { x += ''; } x += ''; x += ''; if (node.mtype != 4) { @@ -7766,12 +7766,15 @@ if (((currentNode.conn & 1) != 0) && ((rights & 131072) != 0)) { count++; y += ''; } // Remote command permission if ((currentNode.conn != 0) && ((rights & 262144) != 0)) { count++; y += ''; } if ((currentNode.conn & 16) != 0) { count++; y += ''; } - if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && (rights == 0xFFFFFFFF)) { + if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && ((rights & 262144) != 0)) { count++; y += ''; - y += ''; y += ''; } + if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && ((rights & 64) != 0)) { + count++; + y += ''; + } if ((getNodeAmtVersion(currentNode) >= 15) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && (rights == 0xFFFFFFFF) && ((features & 0x00000400) == 0)) { count++; y += ''; } // CIRA (2) or AMT (4) connected if (((currentNode.conn & 1) != 0) && ((rights & 32768) != 0)) { count++; y += ''; } } From 156993666b88d98b863b8696e64dac4daab8264d Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 13:04:48 -0700 Subject: [PATCH 044/105] Merged all authenticode-js HTTP requests to a single location. --- authenticode.js | 371 ++++++++++++++++++++++-------------------------- 1 file changed, 169 insertions(+), 202 deletions(-) diff --git a/authenticode.js b/authenticode.js index 4ee18ee1..1a900f23 100644 --- a/authenticode.js +++ b/authenticode.js @@ -407,123 +407,100 @@ function createAuthenticodeHandler(path) { const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); // Make an HTTP request - const http = require('http'); - const timeServerUrl = new URL(args.time); - const options = { - protocol: timeServerUrl.protocol, - hostname: timeServerUrl.hostname, - path: timeServerUrl.pathname, - port: ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)), - method: 'POST', - headers: { - 'accept': 'application/octet-stream', - 'cache-control': 'no-cache', - 'user-agent': 'Transport', - 'content-type': 'application/octet-stream', - 'content-length': Buffer.byteLength(requestBody) + const options = { url: args.time, proxy: args.proxy }; + + // Make a request to the time server + httpRequest(options, requestBody, function (err, data) { + if (err != null) { func(err); return; } + + // Decode the timestamp signature block + var timepkcs7der = null; + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + + // Decode the executable signature block + var pkcs7der = null; + try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + + // Remove any existing time stamp signatures + var newValues = []; + for (var i in pkcs7der.value[1].value[0].value[4].value[0].value) { + const j = pkcs7der.value[1].value[0].value[4].value[0].value[i]; + if ((j.tagClass != 128) || (j.type != 1)) { newValues.push(j); } // If this is not a time stamp, add it to out new list. } - }; + pkcs7der.value[1].value[0].value[4].value[0].value = newValues; // Set the new list - // Set up the request - var responseAccumulator = ''; - var req = http.request(options, function (res) { - res.setEncoding('utf8'); - res.on('data', function (chunk) { responseAccumulator += chunk; }); - res.on('end', function () { - // Decode the timestamp signature block - var timepkcs7der = null; - try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); - // Decode the executable signature block - var pkcs7der = null; - try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); - // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable - // TODO: We could look to see if the certificate is already present in the executable - const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; - for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + // Open the output file + var output = null; + try { output = fs.openSync(args.out, 'w+'); } catch (ex) { } + if (output == null) return false; + var tmp, written = 0; + var executableSize = obj.header.sigpos ? obj.header.sigpos : this.filesize; - // Remove any existing time stamp signatures - var newValues = []; - for (var i in pkcs7der.value[1].value[0].value[4].value[0].value) { - const j = pkcs7der.value[1].value[0].value[4].value[0].value[i]; - if ((j.tagClass != 128) || (j.type != 1)) { newValues.push(j); } // If this is not a time stamp, add it to out new list. - } - pkcs7der.value[1].value[0].value[4].value[0].value = newValues; // Set the new list + // Compute pre-header length and copy that to the new file + var preHeaderLen = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); + var tmp = readFileSlice(written, preHeaderLen); + fs.writeSync(output, tmp); + written += tmp.length; - // Get the time signature and add it to the executables PKCS7 - const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; - const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; - const asn1obj2 = - asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), - timeasn1Signature - ]) - ]); - pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + // Quad Align the results, adding padding if necessary + var len = executableSize + p7signature.length; + var padding = (8 - ((len) % 8)) % 8; - // Re-encode the executable signature block - const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + // Write the signature header + var addresstable = Buffer.alloc(8); + addresstable.writeUInt32LE(executableSize); + addresstable.writeUInt32LE(8 + p7signature.length + padding, 4); + fs.writeSync(output, addresstable); + written += addresstable.length; - // Open the output file - var output = null; - try { output = fs.openSync(args.out, 'w+'); } catch (ex) { } - if (output == null) return false; - var tmp, written = 0; - var executableSize = obj.header.sigpos ? obj.header.sigpos : this.filesize; - - // Compute pre-header length and copy that to the new file - var preHeaderLen = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); - var tmp = readFileSlice(written, preHeaderLen); + // Copy the rest of the file until the start of the signature block + while ((executableSize - written) > 0) { + tmp = readFileSlice(written, Math.min(executableSize - written, 65536)); fs.writeSync(output, tmp); written += tmp.length; + } - // Quad Align the results, adding padding if necessary - var len = executableSize + p7signature.length; - var padding = (8 - ((len) % 8)) % 8; + // Write the signature block header and signature + var win = Buffer.alloc(8); // WIN CERTIFICATE Structure + win.writeUInt32LE(p7signature.length + padding + 8); // DWORD length + win.writeUInt16LE(512, 4); // WORD revision + win.writeUInt16LE(2, 6); // WORD type + fs.writeSync(output, win); + fs.writeSync(output, p7signature); + if (padding > 0) { fs.writeSync(output, Buffer.alloc(padding, 0)); } + written += (p7signature.length + padding + 8); - // Write the signature header - var addresstable = Buffer.alloc(8); - addresstable.writeUInt32LE(executableSize); - addresstable.writeUInt32LE(8 + p7signature.length + padding, 4); - fs.writeSync(output, addresstable); - written += addresstable.length; + // Compute the checksum and write it in the PE header checksum location + var tmp = Buffer.alloc(4); + tmp.writeUInt32LE(runChecksumOnFile(output, written, ((obj.header.peOptionalHeaderLocation + 64) / 4))); + fs.writeSync(output, tmp, 0, 4, obj.header.peOptionalHeaderLocation + 64); - // Copy the rest of the file until the start of the signature block - while ((executableSize - written) > 0) { - tmp = readFileSlice(written, Math.min(executableSize - written, 65536)); - fs.writeSync(output, tmp); - written += tmp.length; - } + // Close the file + fs.closeSync(output); - // Write the signature block header and signature - var win = Buffer.alloc(8); // WIN CERTIFICATE Structure - win.writeUInt32LE(p7signature.length + padding + 8); // DWORD length - win.writeUInt16LE(512, 4); // WORD revision - win.writeUInt16LE(2, 6); // WORD type - fs.writeSync(output, win); - fs.writeSync(output, p7signature); - if (padding > 0) { fs.writeSync(output, Buffer.alloc(padding, 0)); } - written += (p7signature.length + padding + 8); - - // Compute the checksum and write it in the PE header checksum location - var tmp = Buffer.alloc(4); - tmp.writeUInt32LE(runChecksumOnFile(output, written, ((obj.header.peOptionalHeaderLocation + 64) / 4))); - fs.writeSync(output, tmp, 0, 4, obj.header.peOptionalHeaderLocation + 64); - - // Close the file - fs.closeSync(output); - - // Indicate we are done - func(null); - }); + // Indicate we are done + func(null); }); - - // Post the data - req.on('error', function (err) { func('' + err); }); - req.write(requestBody); - req.end(); } // Read a resource table. @@ -1330,65 +1307,78 @@ function createAuthenticodeHandler(path) { const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); // Make an HTTP request - const http = require('http'); - const timeServerUrl = new URL(args.time); - const options = { - protocol: timeServerUrl.protocol, - hostname: timeServerUrl.hostname, - path: timeServerUrl.pathname, - port: ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)), - method: 'POST', - headers: { - 'accept': 'application/octet-stream', - 'cache-control': 'no-cache', - 'user-agent': 'Transport', - 'content-type': 'application/octet-stream', - 'content-length': Buffer.byteLength(requestBody) - } - }; + const options = { url: args.time, proxy: args.proxy }; - // Set up the request - var responseAccumulator = ''; - var req = http.request(options, function (res) { - res.setEncoding('utf8'); - res.on('data', function (chunk) { responseAccumulator += chunk; }); - res.on('end', function () { - // Decode the timestamp signature block - var timepkcs7der = null; - try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + // Make a request to the time server + httpRequest(options, requestBody, function (err, data) { + if (err != null) { func(err); return; } - // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable - // TODO: We could look to see if the certificate is already present in the executable - const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; - for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + // Decode the timestamp signature block + var timepkcs7der = null; + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } - // Get the time signature and add it to the executables PKCS7 - const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; - const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; - const asn1obj2 = - asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), - timeasn1Signature - ]) - ]); - pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } - // Re-encode the executable signature block - const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); - // Write the file with the signature block - signEx(args, p7signature, obj.filesize, func); - }); + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + + // Write the file with the signature block + signEx(args, p7signature, obj.filesize, func); }); - - // Post the data - req.on('error', function (err) { func('' + err); }); - req.write(requestBody); - req.end(); } } + // Make a HTTP request, use a proxy if needed + function httpRequest(options, requestBody, func) { + // If needed, decode the URL + if (options.url) { + const timeServerUrl = new URL(options.url); + options.protocol = timeServerUrl.protocol; + options.hostname = timeServerUrl.hostname; + options.path = timeServerUrl.pathname; + options.port = ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)); + delete options.url; + } + + // Setup the options + options.method = 'POST'; + options.headers = { + 'accept': 'application/octet-stream', + 'cache-control': 'no-cache', + 'user-agent': 'Transport', + 'content-type': 'application/octet-stream', + 'content-length': Buffer.byteLength(requestBody) + }; + + // Set up the request + var responseAccumulator = ''; + var req = require('http').request(options, function (res) { + res.setEncoding('utf8'); + res.on('data', function (chunk) { responseAccumulator += chunk; }); + res.on('end', function () { func(null, responseAccumulator); }); + }); + + // Post the data + req.on('error', function (err) { func('' + err); }); + req.write(requestBody); + req.end(); + } + function signEx(args, p7signature, filesize, func) { // Open the output file var output = null; @@ -1651,62 +1641,39 @@ function createAuthenticodeHandler(path) { const requestBody = Buffer.from(asn1.toDer(asn1obj).data, 'binary').toString('base64'); // Make an HTTP request - const http = require('http'); - const timeServerUrl = new URL(args.time); - const options = { - protocol: timeServerUrl.protocol, - hostname: timeServerUrl.hostname, - path: timeServerUrl.pathname, - port: ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)), - method: 'POST', - headers: { - 'accept': 'application/octet-stream', - 'cache-control': 'no-cache', - 'user-agent': 'Transport', - 'content-type': 'application/octet-stream', - 'content-length': Buffer.byteLength(requestBody) - } - }; + const options = { url: args.time, proxy: args.proxy }; - // Set up the request - var responseAccumulator = ''; - var req = http.request(options, function (res) { - res.setEncoding('utf8'); - res.on('data', function (chunk) { responseAccumulator += chunk; }); - res.on('end', function () { - // Decode the timestamp signature block - var timepkcs7der = null; - try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(responseAccumulator, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + // Make a request to the time server + httpRequest(options, requestBody, function (err, data) { + if (err != null) { func(err); return; } - // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable - // TODO: We could look to see if the certificate is already present in the executable - const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; - for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + // Decode the timestamp signature block + var timepkcs7der = null; + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } - // Get the time signature and add it to the executables PKCS7 - const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; - const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; - const asn1obj2 = - asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), - timeasn1Signature - ]) - ]); - pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } - // Re-encode the executable signature block - const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); - // Write the file with the signature block - writeExecutableEx(output, p7signature, written, func); - }); + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + + // Write the file with the signature block + writeExecutableEx(output, p7signature, written, func); }); - - // Post the data - req.on('error', function (err) { func('' + err); }); - req.write(requestBody); - req.end(); } return; } From 0d3454fb86033fe63c0f2ca1b6c8a3912b53c5a1 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 15:39:40 -0700 Subject: [PATCH 045/105] Added authenticode HTTP proxy support, #4168 --- authenticode.js | 164 +++++++++++++++++++++++---------- meshcentral-config-schema.json | 1 + meshcentral.js | 7 +- sample-config-advanced.json | 1 + 4 files changed, 125 insertions(+), 48 deletions(-) diff --git a/authenticode.js b/authenticode.js index 1a900f23..0fd4be52 100644 --- a/authenticode.js +++ b/authenticode.js @@ -1345,40 +1345,106 @@ function createAuthenticodeHandler(path) { // Make a HTTP request, use a proxy if needed function httpRequest(options, requestBody, func) { - // If needed, decode the URL - if (options.url) { - const timeServerUrl = new URL(options.url); - options.protocol = timeServerUrl.protocol; - options.hostname = timeServerUrl.hostname; - options.path = timeServerUrl.pathname; - options.port = ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)); + // Decode the URL + const timeServerUrl = new URL(options.url); + options.protocol = timeServerUrl.protocol; + options.hostname = timeServerUrl.hostname; + options.path = timeServerUrl.pathname; + options.port = ((timeServerUrl.port == '') ? 80 : parseInt(timeServerUrl.port)); + + if (options.proxy == null) { + // No proxy needed + + // Setup the options delete options.url; + options.method = 'POST'; + options.headers = { + 'accept': 'application/octet-stream', + 'cache-control': 'no-cache', + 'user-agent': 'Transport', + 'content-type': 'application/octet-stream', + 'content-length': Buffer.byteLength(requestBody) + }; + + // Set up the request + var responseAccumulator = ''; + var req = require('http').request(options, function (res) { + res.setEncoding('utf8'); + res.on('data', function (chunk) { responseAccumulator += chunk; }); + res.on('end', function () { func(null, responseAccumulator); }); + }); + + // Post the data + req.on('error', function (err) { func('' + err); }); + req.write(requestBody); + req.end(); + } else { + // We are using a proxy + // This is a fairly basic proxy implementation, should work most of the time. + + // Setup the options and decode the proxy URL + var proxyOptions = { method: 'CONNECT' }; + if (options.proxy) { + const proxyUrl = new URL(options.proxy); + proxyOptions.protocol = proxyUrl.protocol; + proxyOptions.hostname = proxyUrl.hostname; + proxyOptions.path = options.hostname + ':' + options.port; + proxyOptions.port = ((proxyUrl.port == '') ? 80 : parseInt(proxyUrl.port)); + } + + // Set up the proxy request + var responseAccumulator = ''; + var req = require('http').request(proxyOptions); + req.on('error', function (err) { func('' + err); }); + req.on('connect', function (res, socket, head) { + // Make a request over the HTTP tunnel + socket.write('POST ' + options.path + ' HTTP/1.1\r\n' + + 'host: ' + options.hostname + ':' + options.port + '\r\n' + + 'accept: application/octet-stream\r\n' + + 'cache-control: no-cache\r\n' + + 'user-agent: Transport\r\n' + + 'content-type: application/octet-stream\r\n' + + 'content-length: ' + Buffer.byteLength(requestBody) + '\r\n' + + '\r\n' + requestBody); + socket.on('data', function (chunk) { + responseAccumulator += chunk.toString(); + var responseData = parseHttpResponse(responseAccumulator); + if (responseData != null) { try { socket.end(); } catch (ex) { console.log('ex', ex); } socket.xdone = true; func(null, responseData); } + }); + socket.on('end', function () { + if (socket.xdone == true) return; + var responseData = parseHttpResponse(responseAccumulator); + if (responseData != null) { func(null, responseData); } else { func("Unable to parse response."); } + }); + }); + req.end(); } - - // Setup the options - options.method = 'POST'; - options.headers = { - 'accept': 'application/octet-stream', - 'cache-control': 'no-cache', - 'user-agent': 'Transport', - 'content-type': 'application/octet-stream', - 'content-length': Buffer.byteLength(requestBody) - }; - - // Set up the request - var responseAccumulator = ''; - var req = require('http').request(options, function (res) { - res.setEncoding('utf8'); - res.on('data', function (chunk) { responseAccumulator += chunk; }); - res.on('end', function () { func(null, responseAccumulator); }); - }); - - // Post the data - req.on('error', function (err) { func('' + err); }); - req.write(requestBody); - req.end(); } + // Parse the HTTP response and return data if available + function parseHttpResponse(data) { + var dataSplit = data.split('\r\n\r\n'); + if (dataSplit.length < 2) return null; + + // Parse the HTTP header + var headerSplit = dataSplit[0].split('\r\n'), headers = {}; + for (var i in headerSplit) { + if (i != 0) { + var x = headerSplit[i].indexOf(':'); + headers[headerSplit[i].substring(0, x).toLowerCase()] = headerSplit[i].substring(x + 2); + } + } + + // If there is a content-length in the header, keep accumulating data until we have the right length + if (headers['content-length'] != null) { + const contentLength = parseInt(headers['content-length']); + if (dataSplit[1].length < contentLength) return null; // Wait for more data + return dataSplit[1]; + } + return dataSplit[1]; + } + + // Complete the signature of an executable function signEx(args, p7signature, filesize, func) { // Open the output file var output = null; @@ -1653,26 +1719,28 @@ function createAuthenticodeHandler(path) { // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable // TODO: We could look to see if the certificate is already present in the executable - const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; - for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + try { + var timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } - // Get the time signature and add it to the executables PKCS7 - const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; - const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; - const asn1obj2 = - asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), - timeasn1Signature - ]) - ]); - pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); - // Re-encode the executable signature block - const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); - // Write the file with the signature block - writeExecutableEx(output, p7signature, written, func); + // Write the file with the signature block + writeExecutableEx(output, p7signature, written, func); + } catch (ex) { func('' + ex); return; } // Something failed }); } return; @@ -1744,6 +1812,7 @@ function start() { console.log(" --url [url] URL to embbed into signature."); console.log(" --hash [method] Default is SHA384, possible value: MD5, SHA224, SHA256, SHA384 or SHA512."); console.log(" --time [url] The time signing server URL."); + console.log(" --proxy [url] The HTTP proxy to use to contact the time signing server, must start with http://"); console.log(" unsign: Remove the signature from the executable."); console.log(" --exe [file] Required executable to un-sign."); console.log(" --out [file] Resulting executable with signature removed."); @@ -1760,6 +1829,7 @@ function start() { console.log(" --exe [file] Required executable to sign."); console.log(" --out [file] Resulting signed executable."); console.log(" --time [url] The time signing server URL."); + console.log(" --proxy [url] The HTTP proxy to use to contact the time signing server, must start with http://"); console.log(""); console.log("Note that certificate PEM files must first have the signing certificate,"); console.log("followed by all certificates that form the trust chain."); diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index d00bb162..dc736155 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -102,6 +102,7 @@ "agentCoreDumpUsers": { "type": "array", "description": "List of non-administrator users that have access to mesh agent crash dumps." }, "agentSignLock": { "type": "boolean", "default": false, "description": "When code signing an agent using authenticode, lock the agent to only allow connection to this server. (This is in testing, the default value will change to true in the future)." }, "agentTimeStampServer": { "type": [ "boolean", "string" ], "default": "http://timestamp.comodoca.com/authenticode", "description": "The time stamping server to use when code signing Windows executables. When set to false, the executables are not time stamped." }, + "agentTimeStampProxy": { "type": [ "boolean", "string" ], "description": "The HTTP proxy to use when contacting the time stamping server, if false, no proxy is used. By default, the npmproxy value is used." }, "ignoreAgentHashCheck": { "type": [ "boolean", "string" ], "default": false, "description": "When true, the agent no longer checked the TLS certificate of the server. This should be used for debugging only. You can also set this to a comma seperated list of IP addresses to ignore, for example: \"192.168.2.100,192.168.1.0/24\"." }, "exactPorts": { "type": "boolean", "default": false, "description": "When set to true, MeshCentral will only grab the required TCP listening ports or fail. It will not try to use the next available port of it's busy." }, "allowLoginToken": { "type": "boolean", "default": false }, diff --git a/meshcentral.js b/meshcentral.js index a7ae60f4..18c2f87d 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -2886,6 +2886,11 @@ function CreateMeshCentralServer(config, args) { if (args.agenttimestampserver === false) { timeStampUrl = null; } else if (typeof args.agenttimestampserver == 'string') { timeStampUrl = args.agenttimestampserver; } + // Setup the time server proxy + var timeStampProxy = null; + if (typeof args.agenttimestampproxy == 'string') { timeStampProxy = args.agenttimestampproxy; } + else if ((args.agenttimestampproxy !== false) && (typeof args.npmproxy == 'string')) { timeStampProxy = args.npmproxy; } + // Setup the pending operations counter var pendingOperations = 1; @@ -2972,7 +2977,7 @@ function CreateMeshCentralServer(config, args) { if (resChanges == true) { originalAgent.setVersionInfo(versionStrings); } } - const signingArguments = { out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl }; // Shallow clone + const signingArguments = { out: signeedagentpath, desc: signDesc, url: signUrl, time: timeStampUrl, proxy: timeStampProxy }; // Shallow clone obj.debug('main', "Code signing agent with arguments: " + JSON.stringify(signingArguments)); if (resChanges == false) { // Sign the agent the simple way, without changing any resources. diff --git a/sample-config-advanced.json b/sample-config-advanced.json index 6954c431..a3cc0f76 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -39,6 +39,7 @@ "_agentCoreDumpUsers": "user1,user2", "_agentSignLock": true, "_agentTimeStampServer": "http://timestamp.digicert.com", + "_agentTimeStampProxy": "http://1.2.3.4:80", "_ignoreAgentHashCheck": true, "_exactPorts": true, "_allowLoginToken": true, From 30c4c9b6ea27dc8eff2e14b73d66c21f723dbfb0 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 15:57:56 -0700 Subject: [PATCH 046/105] Fixed certificate and key matching on new Intel AMT versions. --- amtmanager.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/amtmanager.js b/amtmanager.js index 9703327e..23004792 100644 --- a/amtmanager.js +++ b/amtmanager.js @@ -3013,17 +3013,20 @@ module.exports.CreateAmtManager = function (parent) { function guidToStr(g) { return g.substring(6, 8) + g.substring(4, 6) + g.substring(2, 4) + g.substring(0, 2) + '-' + g.substring(10, 12) + g.substring(8, 10) + '-' + g.substring(14, 16) + g.substring(12, 14) + '-' + g.substring(16, 20) + '-' + g.substring(20); } + // Base64 to string conversion utility functions + function atob(x) { return Buffer.from(x, 'base64').toString('binary'); } + function btoa(x) { return Buffer.from(x, 'binary').toString('base64'); } + // Check which key pair matches the public key in the certificate function amtcert_linkCertPrivateKey(certs, keys) { + if ((keys == null) || (keys.length == 0)) return; for (var i in certs) { var cert = certs[i]; try { - if (keys.length == 0) return; - var b = obj.parent.certificateOperations.forge.asn1.fromDer(cert.X509CertificateBin); - var a = obj.parent.certificateOperations.forge.pki.certificateFromAsn1(b).publicKey; - var publicKeyPEM = obj.parent.certificateOperations.forge.pki.publicKeyToPem(a).substring(28 + 32).replace(/(\r\n|\n|\r)/gm, ""); + var publicKeyPEM = obj.parent.certificateOperations.forge.pki.publicKeyToPem(obj.parent.certificateOperations.forge.pki.certificateFromAsn1(obj.parent.certificateOperations.forge.asn1.fromDer(cert.X509CertificateBin)).publicKey).substring(28 + 32).replace(/(\r\n|\n|\r)/gm, ""); + publicKeyPEM = publicKeyPEM.substring(0, publicKeyPEM.length - 24); // Remove the PEM footer for (var j = 0; j < keys.length; j++) { - if (publicKeyPEM === (keys[j]['DERKey'] + '-----END PUBLIC KEY-----')) { + if ((publicKeyPEM === (keys[j]['DERKey'])) || (publicKeyPEM == btoa(atob(keys[j]['DERKey']).substring(24)))) { // Match directly or, new version of Intel AMT put the key type OID in the private key, skip that and match. keys[j].XCert = cert; // Link the key pair to the certificate cert.XPrivateKey = keys[j]; // Link the certificate to the key pair } From 339e3efbefac28e2a24d88a00798e24fed95b223 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 16:23:11 -0700 Subject: [PATCH 047/105] More improvements to authenticode-js error handling. --- authenticode.js | 186 +++++++++++++++++++++++++----------------------- 1 file changed, 95 insertions(+), 91 deletions(-) diff --git a/authenticode.js b/authenticode.js index 0fd4be52..8d62759b 100644 --- a/authenticode.js +++ b/authenticode.js @@ -415,91 +415,93 @@ function createAuthenticodeHandler(path) { // Decode the timestamp signature block var timepkcs7der = null; - try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func("Unable to parse time-stamp response: " + ex); return; } // Decode the executable signature block var pkcs7der = null; - try { pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + try { + var pkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(obj.getRawSignatureBlock(), 'base64').toString('binary'))); - // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable - // TODO: We could look to see if the certificate is already present in the executable - const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; - for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } - // Remove any existing time stamp signatures - var newValues = []; - for (var i in pkcs7der.value[1].value[0].value[4].value[0].value) { - const j = pkcs7der.value[1].value[0].value[4].value[0].value[i]; - if ((j.tagClass != 128) || (j.type != 1)) { newValues.push(j); } // If this is not a time stamp, add it to out new list. - } - pkcs7der.value[1].value[0].value[4].value[0].value = newValues; // Set the new list + // Remove any existing time stamp signatures + var newValues = []; + for (var i in pkcs7der.value[1].value[0].value[4].value[0].value) { + const j = pkcs7der.value[1].value[0].value[4].value[0].value[i]; + if ((j.tagClass != 128) || (j.type != 1)) { newValues.push(j); } // If this is not a time stamp, add it to out new list. + } + pkcs7der.value[1].value[0].value[4].value[0].value = newValues; // Set the new list - // Get the time signature and add it to the executables PKCS7 - const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; - const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; - const asn1obj2 = - asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), - timeasn1Signature - ]) - ]); - pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); - // Re-encode the executable signature block - const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); - // Open the output file - var output = null; - try { output = fs.openSync(args.out, 'w+'); } catch (ex) { } - if (output == null) return false; - var tmp, written = 0; - var executableSize = obj.header.sigpos ? obj.header.sigpos : this.filesize; + // Open the output file + var output = null; + try { output = fs.openSync(args.out, 'w+'); } catch (ex) { } + if (output == null) return false; + var tmp, written = 0; + var executableSize = obj.header.sigpos ? obj.header.sigpos : this.filesize; - // Compute pre-header length and copy that to the new file - var preHeaderLen = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); - var tmp = readFileSlice(written, preHeaderLen); - fs.writeSync(output, tmp); - written += tmp.length; - - // Quad Align the results, adding padding if necessary - var len = executableSize + p7signature.length; - var padding = (8 - ((len) % 8)) % 8; - - // Write the signature header - var addresstable = Buffer.alloc(8); - addresstable.writeUInt32LE(executableSize); - addresstable.writeUInt32LE(8 + p7signature.length + padding, 4); - fs.writeSync(output, addresstable); - written += addresstable.length; - - // Copy the rest of the file until the start of the signature block - while ((executableSize - written) > 0) { - tmp = readFileSlice(written, Math.min(executableSize - written, 65536)); + // Compute pre-header length and copy that to the new file + var preHeaderLen = (obj.header.peHeaderLocation + 152 + (obj.header.pe32plus * 16)); + var tmp = readFileSlice(written, preHeaderLen); fs.writeSync(output, tmp); written += tmp.length; - } - // Write the signature block header and signature - var win = Buffer.alloc(8); // WIN CERTIFICATE Structure - win.writeUInt32LE(p7signature.length + padding + 8); // DWORD length - win.writeUInt16LE(512, 4); // WORD revision - win.writeUInt16LE(2, 6); // WORD type - fs.writeSync(output, win); - fs.writeSync(output, p7signature); - if (padding > 0) { fs.writeSync(output, Buffer.alloc(padding, 0)); } - written += (p7signature.length + padding + 8); + // Quad Align the results, adding padding if necessary + var len = executableSize + p7signature.length; + var padding = (8 - ((len) % 8)) % 8; - // Compute the checksum and write it in the PE header checksum location - var tmp = Buffer.alloc(4); - tmp.writeUInt32LE(runChecksumOnFile(output, written, ((obj.header.peOptionalHeaderLocation + 64) / 4))); - fs.writeSync(output, tmp, 0, 4, obj.header.peOptionalHeaderLocation + 64); + // Write the signature header + var addresstable = Buffer.alloc(8); + addresstable.writeUInt32LE(executableSize); + addresstable.writeUInt32LE(8 + p7signature.length + padding, 4); + fs.writeSync(output, addresstable); + written += addresstable.length; - // Close the file - fs.closeSync(output); + // Copy the rest of the file until the start of the signature block + while ((executableSize - written) > 0) { + tmp = readFileSlice(written, Math.min(executableSize - written, 65536)); + fs.writeSync(output, tmp); + written += tmp.length; + } - // Indicate we are done - func(null); + // Write the signature block header and signature + var win = Buffer.alloc(8); // WIN CERTIFICATE Structure + win.writeUInt32LE(p7signature.length + padding + 8); // DWORD length + win.writeUInt16LE(512, 4); // WORD revision + win.writeUInt16LE(2, 6); // WORD type + fs.writeSync(output, win); + fs.writeSync(output, p7signature); + if (padding > 0) { fs.writeSync(output, Buffer.alloc(padding, 0)); } + written += (p7signature.length + padding + 8); + + // Compute the checksum and write it in the PE header checksum location + var tmp = Buffer.alloc(4); + tmp.writeUInt32LE(runChecksumOnFile(output, written, ((obj.header.peOptionalHeaderLocation + 64) / 4))); + fs.writeSync(output, tmp, 0, 4, obj.header.peOptionalHeaderLocation + 64); + + // Close the file + fs.closeSync(output); + + // Indicate we are done + func(null); + } catch (ex) { func('' + ex); return; } }); } @@ -1315,30 +1317,32 @@ function createAuthenticodeHandler(path) { // Decode the timestamp signature block var timepkcs7der = null; - try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func("Unable to parse time-stamp response: " + ex); return; } - // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable - // TODO: We could look to see if the certificate is already present in the executable - const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; - for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } + try { + // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable + // TODO: We could look to see if the certificate is already present in the executable + const timeasn1Certs = timepkcs7der.value[1].value[0].value[3].value; + for (var i in timeasn1Certs) { pkcs7der.value[1].value[0].value[3].value.push(timeasn1Certs[i]); } - // Get the time signature and add it to the executables PKCS7 - const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; - const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; - const asn1obj2 = - asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ - asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), - timeasn1Signature - ]) - ]); - pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); + // Get the time signature and add it to the executables PKCS7 + const timeasn1Signature = timepkcs7der.value[1].value[0].value[4]; + const countersignatureOid = asn1.oidToDer('1.2.840.113549.1.9.6').data; + const asn1obj2 = + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, countersignatureOid), + timeasn1Signature + ]) + ]); + pkcs7der.value[1].value[0].value[4].value[0].value.push(asn1obj2); - // Re-encode the executable signature block - const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); + // Re-encode the executable signature block + const p7signature = Buffer.from(forge.asn1.toDer(pkcs7der).data, 'binary'); - // Write the file with the signature block - signEx(args, p7signature, obj.filesize, func); + // Write the file with the signature block + signEx(args, p7signature, obj.filesize, func); + } catch (ex) { func('' + ex); } }); } } @@ -1715,7 +1719,7 @@ function createAuthenticodeHandler(path) { // Decode the timestamp signature block var timepkcs7der = null; - try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func('' + ex); return; } + try { timepkcs7der = forge.asn1.fromDer(forge.util.createBuffer(Buffer.from(data, 'base64').toString('binary'))); } catch (ex) { func("Unable to parse time-stamp response: " + ex); return; } // Get the ASN1 certificates used to sign the timestamp and add them to the certs in the PKCS7 of the executable // TODO: We could look to see if the certificate is already present in the executable From 6dbae08c4031461838e927cd1f4dd7d32be71799 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 22:10:07 -0700 Subject: [PATCH 048/105] Added Web-RDP mouse cursor support. --- apprelays.js | 12 +++-- public/scripts/agent-rdp-0.0.1.js | 10 ++++ rdp/core/layer.js | 2 +- rdp/protocol/pdu/data.js | 87 +++++++++++++++++++++++++++---- rdp/protocol/pdu/global.js | 13 +++-- rdp/protocol/rdp.js | 2 + 6 files changed, 109 insertions(+), 17 deletions(-) diff --git a/apprelays.js b/apprelays.js index ac742a2d..d9ba6cbe 100644 --- a/apprelays.js +++ b/apprelays.js @@ -202,10 +202,16 @@ module.exports.CreateMstscRelay = function (parent, db, ws, req, args, domain) { delete bitmap.data; send(['rdp-bitmap', bitmap]); // Send the bitmap metadata seperately, without bitmap data. }).on('clipboard', function (content) { - // Clipboard data changed - send(['rdp-clipboard', content]); + send(['rdp-clipboard', content]); // The clipboard data has changed + }).on('pointer', function (cursorId, cursorStr) { + if (cursorStr == null) { cursorStr = 'default'; } + if (obj.lastCursorStrSent != cursorStr) { + obj.lastCursorStrSent = cursorStr; + //console.log('pointer', cursorStr); + send(['rdp-pointer', cursorStr]); // The mouse pointer has changed + } }).on('close', function () { - send(['rdp-close']); + send(['rdp-close']); // This RDP session has closed }).on('error', function (err) { if (typeof err == 'string') { send(['rdp-error', err]); } if ((typeof err == 'object') && (err.err) && (err.code)) { send(['rdp-error', err.err, err.code]); } diff --git a/public/scripts/agent-rdp-0.0.1.js b/public/scripts/agent-rdp-0.0.1.js index 36740295..9c298870 100644 --- a/public/scripts/agent-rdp-0.0.1.js +++ b/public/scripts/agent-rdp-0.0.1.js @@ -18,6 +18,10 @@ var CreateRDPDesktop = function (canvasid) { obj.m.onClipboardChanged = null; obj.onConsoleMessageChange = null; + var xMouseCursorActive = true; + var xMouseCursorCurrent = 'default'; + obj.mouseCursorActive = function (x) { if (xMouseCursorActive == x) return; xMouseCursorActive = x; obj.CanvasId.style.cursor = ((x == true) ? xMouseCursorCurrent : 'default'); } + function mouseButtonMap(button) { // Swap mouse buttons if needed if (obj.m.SwapMouse === true) return [2, 0, 1, 0, 0][button]; @@ -75,6 +79,12 @@ var CreateRDPDesktop = function (canvasid) { obj.render.update(bitmap); break; } + case 'rdp-pointer': { + var pointer = msg[1]; + xMouseCursorCurrent = pointer; + if (xMouseCursorActive) { obj.CanvasId.style.cursor = pointer; } + break; + } case 'rdp-close': { obj.Stop(); break; diff --git a/rdp/core/layer.js b/rdp/core/layer.js index 2f7e9a66..7aa92d3b 100644 --- a/rdp/core/layer.js +++ b/rdp/core/layer.js @@ -22,7 +22,7 @@ var fs = require('fs'); var type = require('./type'); var log = require('./log'); var tls = require('tls'); -var crypto = require('crypto'); +//var crypto = require('crypto'); var events = require('events'); /** diff --git a/rdp/protocol/pdu/data.js b/rdp/protocol/pdu/data.js index 7c79012d..dec3ffd8 100644 --- a/rdp/protocol/pdu/data.js +++ b/rdp/protocol/pdu/data.js @@ -186,7 +186,7 @@ var FastPathUpdateType = { FASTPATH_UPDATETYPE_PTR_NULL : 0x5, FASTPATH_UPDATETYPE_PTR_DEFAULT : 0x6, FASTPATH_UPDATETYPE_PTR_POSITION : 0x8, - FASTPATH_UPDATETYPE_COLOR : 0x9, + FASTPATH_UPDATETYPE_COLOR : 0x9, // Mouse cursor FASTPATH_UPDATETYPE_CACHED : 0xA, FASTPATH_UPDATETYPE_POINTER : 0xB }; @@ -1075,7 +1075,7 @@ function clipPDU() { * @param opt {object} type option * @returns {type.Component} */ -function fastPathBitmapUpdateDataPDU (opt) { +function fastPathBitmapUpdateDataPDU(opt) { var self = { __FASTPATH_UPDATE_TYPE__ : FastPathUpdateType.FASTPATH_UPDATETYPE_BITMAP, header : new type.UInt16Le(FastPathUpdateType.FASTPATH_UPDATETYPE_BITMAP, { constant : true }), @@ -1093,13 +1093,67 @@ function fastPathBitmapUpdateDataPDU (opt) { return new type.Component(self, opt); } +// This is a table of cursorid to cursor name. +// Created by movering the mouse over this page: https://www.w3schools.com/csSref/tryit.asp?filename=trycss_cursor +const cursorIdTable = { + // Normal style mouse cursor + 903013897: 'alias', + 370524792: 'all-scroll', + 853046751: 'cell', + 2101250798: 'col-resize', + 703681364: 'copy', + 992638936: 'crosshair', + 1539083673: 'ew-resize', + 1919796298: 'grab', + 1010243511: 'grabbing', + 1247283057: 'help', + 1390892051: 'none', + 885751489: 'not-allowed', + 1732952247: 'row-resize', + 747144997: 'url', + 2018345610: 'zoom-in', + 347367048: 'zoom-out', + 1872942890: 'default', + 1737852989: 'text', + 1932827019: 'ns-resize', + 1884471290: 'nesw-resize', + 1204065391: 'nwse-resize', + 2030531519: 'progress', + 1050842114: 'pointer', + + // Black style cursors + 1258195498: 'default', + 219484254: 'all-scroll', + 399295089: 'text', + 1912613597: 'wait', + 864127801: 'ew-resize', + 23245044: 'nesw-resize', + 1966995494: 'not-allowed', + 1873216615: 'help', + 255126408: 'nesw-resize', + 157191894: 'ns-resize', + 1768446509: 'pointer', + 1032011501: 'crosshair' +} + +function fastPathPointerUpdateDataPDU(opt, cursorId, cursorStr) { + var self = { + __FASTPATH_UPDATE_TYPE__: FastPathUpdateType.FASTPATH_UPDATETYPE_COLOR, + header: new type.UInt16Le(FastPathUpdateType.FASTPATH_UPDATETYPE_COLOR, { constant: true }), + cursorId: cursorId, + cursorStr: cursorStr + }; + + return new type.Component(self, opt); +} + /** * @see http://msdn.microsoft.com/en-us/library/cc240622.aspx * @param updateData {type.Component} * @param opt {object} type option * @returns {type.Component} */ -function fastPathUpdatePDU (updateData, opt) { +function fastPathUpdatePDU(updateData, opt) { var self = { updateHeader : new type.UInt8( function () { return self.updateData.obj.__FASTPATH_UPDATE_TYPE__; @@ -1116,12 +1170,27 @@ function fastPathUpdatePDU (updateData, opt) { }) }; switch (self.updateHeader.value & 0xf) { - case FastPathUpdateType.FASTPATH_UPDATETYPE_BITMAP: - self.updateData = fastPathBitmapUpdateDataPDU(options).read(s); - break; - default: - self.updateData = new type.BinaryString(null, options).read(s); - log.debug('unknown fast path pdu type ' + (self.updateHeader.value & 0xf)); + case FastPathUpdateType.FASTPATH_UPDATETYPE_BITMAP: { + self.updateData = fastPathBitmapUpdateDataPDU(options).read(s); + break; + } + case FastPathUpdateType.FASTPATH_UPDATETYPE_COLOR: { + var data = new type.BinaryString(null, options).read(s); + + // Hash the data to get a cursor id. + // This is a hack since the cursor bitmap is sent but we can't use that, we has hash the bitmap and use that as a hint as to what cursor we need to display + const hasher = require('crypto').createHash('sha384'); + hasher.update(data.value); + const cursorid = Math.abs(hasher.digest().readInt32BE(0)); + const cursorStr = cursorIdTable[cursorid]; + //if (cursorStr == null) { console.log('Unknown cursorId: ' + cursorid); } + self.updateData = fastPathPointerUpdateDataPDU(options, cursorid, cursorStr); + break; + } + default: { + self.updateData = new type.BinaryString(null, options).read(s); + log.debug('unknown fast path pdu type ' + (self.updateHeader.value & 0xf)); + } } }) }; diff --git a/rdp/protocol/pdu/global.js b/rdp/protocol/pdu/global.js index a3f5766d..5fc3ddd7 100644 --- a/rdp/protocol/pdu/global.js +++ b/rdp/protocol/pdu/global.js @@ -268,11 +268,16 @@ Client.prototype.recvServerFontMapPDU = function(s) { */ Client.prototype.recvFastPath = function (secFlag, s) { while (s.availableLength() > 0) { - var pdu = data.fastPathUpdatePDU().read(s); + var pdu = data.fastPathUpdatePDU().read(s); switch (pdu.obj.updateHeader.value & 0xf) { - case data.FastPathUpdateType.FASTPATH_UPDATETYPE_BITMAP: - this.emit('bitmap', pdu.obj.updateData.obj.rectangles.obj); - break; + case data.FastPathUpdateType.FASTPATH_UPDATETYPE_BITMAP: { + this.emit('bitmap', pdu.obj.updateData.obj.rectangles.obj); + break; + } + case data.FastPathUpdateType.FASTPATH_UPDATETYPE_COLOR: { + this.emit('pointer', pdu.obj.updateData.obj.cursorId, pdu.obj.updateData.obj.cursorStr); + break; + } default: } } diff --git a/rdp/protocol/rdp.js b/rdp/protocol/rdp.js index c58e2e1c..41d71c9a 100644 --- a/rdp/protocol/rdp.js +++ b/rdp/protocol/rdp.js @@ -160,6 +160,8 @@ function RdpClient(config) { }).on('close', function () { self.connected = false; self.emit('close'); + }).on('pointer', function (cursorId, cursorStr) { + self.emit('pointer', cursorId, cursorStr); }).on('bitmap', function (bitmaps) { for (var bitmap in bitmaps) { var bitmapData = bitmaps[bitmap].obj.bitmapDataStream.value; From 726ce8bdddbfd06c3e423c65cfbdf70718cabcf4 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 23 Jun 2022 22:27:43 -0700 Subject: [PATCH 049/105] Version 1.0.41 --- package.json | 2 +- public/scripts/agent-rdp-0.0.1-min.js | 2 +- translate/translate.json | 4548 +++++++++++++------------ 3 files changed, 2278 insertions(+), 2274 deletions(-) diff --git a/package.json b/package.json index c66b1b5e..1c2ddb8c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "1.0.40", + "version": "1.0.41", "keywords": [ "Remote Device Management", "Remote Device Monitoring", diff --git a/public/scripts/agent-rdp-0.0.1-min.js b/public/scripts/agent-rdp-0.0.1-min.js index 0e285755..55aecf87 100644 --- a/public/scripts/agent-rdp-0.0.1-min.js +++ b/public/scripts/agent-rdp-0.0.1-min.js @@ -1 +1 @@ -var CreateRDPDesktop=function(e){var a={};function n(e){return(!0===a.m.SwapMouse?[2,0,1,0,0]:[1,0,2,0,0])[e]}function o(e){a.State!=e&&(a.State=e,null!=a.onStateChanged&&a.onStateChanged(a,a.State))}function s(e){var t=a.Canvas.canvas.height/a.CanvasId.clientHeight,n=a.Canvas.canvas.width/a.CanvasId.clientWidth,s=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}(a.Canvas.canvas),n=(e.pageX-s[0])*n,t=(e.pageY-s[1])*t;return e.addx&&(n+=e.addx),e.addy&&(t+=e.addy),{x:n,y:t}}a.m={KeyAction:{NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6}},a.State=0,a.canvas=Q(e),"string"==typeof(a.CanvasId=e)&&(a.CanvasId=Q(e)),a.Canvas=a.CanvasId.getContext("2d"),a.ScreenWidth=a.width=1280,a.ScreenHeight=a.height=1024,a.m.onClipboardChanged=null,a.onConsoleMessageChange=null,a.Start=function(e,t,n){o(1),a.nodeid=e,a.port=t;var s={savepass:(a.credentials=n).savecred,useServerCreds:n.servercred,width:n.width,height:n.height,flags:n.flags,workingDir:n.workdir,alternateShell:n.altshell};n.width&&n.height&&(s.width=a.ScreenWidth=a.width=n.width,s.height=a.ScreenHeight=a.height=n.height,delete n.width,delete n.height),a.render=new Mstsc.Canvas.create(a.canvas),a.socket=new WebSocket("wss://"+window.location.host+"/mstscrelay.ashx"),a.socket.binaryType="arraybuffer",a.socket.onopen=function(){o(2),a.socket.send(JSON.stringify(["infos",{ip:a.nodeid,port:a.port,screen:{width:a.width,height:a.height},domain:n.domain,username:n.username,password:n.password,options:s,locale:Mstsc.locale()}]))},a.socket.onmessage=function(e){if("string"==typeof e.data){var t=JSON.parse(e.data);switch(t[0]){case"rdp-connect":o(3),a.rotation=0,a.Canvas.setTransform(1,0,0,1,0,0),a.Canvas.canvas.width=a.ScreenWidth,a.Canvas.canvas.height=a.ScreenHeight,a.Canvas.fillRect(0,0,a.ScreenWidth,a.ScreenHeight),null!=a.m.onScreenSizeChange&&a.m.onScreenSizeChange(a,a.ScreenWidth,a.ScreenHeight,a.CanvasId);break;case"rdp-bitmap":if(null==a.bitmapData)break;var n=t[1];n.data=a.bitmapData,delete a.bitmapData,a.render.update(n);break;case"rdp-close":a.Stop();break;case"rdp-error":switch(a.consoleMessageTimeout=5,a.consoleMessage=t[1],delete a.consoleMessageArgs,2a.ScreenWidth||t.y>a.ScreenHeight))return a.mouseNagleData=["mouse",t.x,t.y,0,!1],null==a.mouseNagleTimer&&(a.mouseNagleTimer=setTimeout(function(){a.socket.send(JSON.stringify(a.mouseNagleData)),a.mouseNagleTimer=null},50)),e.preventDefault(),!1}},a.m.mouseup=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!1])),e.preventDefault(),!1}},a.m.mousedown=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!0])),e.preventDefault(),!1}},a.m.handleKeyUp=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!1])),e.preventDefault(),!1},a.m.handleKeyDown=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!0])),e.preventDefault(),!1},a.m.mousewheel=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight)){null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null);var n=0;return e.detail?n=120*e.detail:e.wheelDelta&&(n=3*e.wheelDelta),a.m.ReverseMouseWheel&&(n*=-1),0!=n&&a.socket.send(JSON.stringify(["wheel",t.x,t.y,n,!1,!1])),e.preventDefault(),!1}}},a.m.SendStringUnicode=function(e){a.socket&&3==a.State&&a.socket.send(JSON.stringify(["utype",e]))},a.m.SendKeyMsgKC=function(e,t,n){if(3==a.State)if("object"==typeof e)for(var s in e)a.m.SendKeyMsgKC(e[s][0],e[s][1],e[s][2]);else{t=i[t];null!=t&&a.socket.send(JSON.stringify(["scancode",t,0!=(1&e)]))}},a.m.mousedblclick=function(){},a.m.handleKeyPress=function(){},a.m.setRotation=function(){},a.m.sendcad=function(){a.socket.send(JSON.stringify(["scancode",29,!0])),a.socket.send(JSON.stringify(["scancode",56,!0])),a.socket.send(JSON.stringify(["scancode",57427,!0])),a.socket.send(JSON.stringify(["scancode",57427,!1])),a.socket.send(JSON.stringify(["scancode",56,!1])),a.socket.send(JSON.stringify(["scancode",29,!1]))};var i={9:15,16:42,17:29,18:56,27:1,33:57417,34:57425,35:57423,36:57415,37:57419,38:57416,39:57421,40:57424,44:57399,45:57426,46:57427,65:30,66:48,67:46,68:32,69:18,70:33,71:34,72:35,73:23,74:36,75:37,76:38,77:50,78:49,79:24,80:25,81:16,82:19,83:31,84:20,85:22,86:47,87:17,88:45,89:21,90:44,91:57435,112:59,113:60,114:61,115:62,116:63,117:64,118:65,119:66,120:67,121:68,122:87,123:88};return a} \ No newline at end of file +var CreateRDPDesktop=function(e){var a={m:{KeyAction:{NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6}},State:0};a.canvas=Q(e),"string"==typeof(a.CanvasId=e)&&(a.CanvasId=Q(e)),a.Canvas=a.CanvasId.getContext("2d"),a.ScreenWidth=a.width=1280,a.ScreenHeight=a.height=1024,a.m.onClipboardChanged=null;var o=!(a.onConsoleMessageChange=null),i="default";function n(e){return(!0===a.m.SwapMouse?[2,0,1,0,0]:[1,0,2,0,0])[e]}function r(e){a.State!=e&&(a.State=e,null!=a.onStateChanged&&a.onStateChanged(a,a.State))}function s(e){var t=a.Canvas.canvas.height/a.CanvasId.clientHeight,n=a.Canvas.canvas.width/a.CanvasId.clientWidth,s=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}(a.Canvas.canvas),n=(e.pageX-s[0])*n,t=(e.pageY-s[1])*t;return e.addx&&(n+=e.addx),e.addy&&(t+=e.addy),{x:n,y:t}}a.mouseCursorActive=function(e){o!=e&&(o=e,a.CanvasId.style.cursor=1==e?i:"default")},a.Start=function(e,t,n){r(1),a.nodeid=e,a.port=t;var s={savepass:(a.credentials=n).savecred,useServerCreds:n.servercred,width:n.width,height:n.height,flags:n.flags,workingDir:n.workdir,alternateShell:n.altshell};n.width&&n.height&&(s.width=a.ScreenWidth=a.width=n.width,s.height=a.ScreenHeight=a.height=n.height,delete n.width,delete n.height),a.render=new Mstsc.Canvas.create(a.canvas),a.socket=new WebSocket("wss://"+window.location.host+"/mstscrelay.ashx"),a.socket.binaryType="arraybuffer",a.socket.onopen=function(){r(2),a.socket.send(JSON.stringify(["infos",{ip:a.nodeid,port:a.port,screen:{width:a.width,height:a.height},domain:n.domain,username:n.username,password:n.password,options:s,locale:Mstsc.locale()}]))},a.socket.onmessage=function(e){if("string"==typeof e.data){var t=JSON.parse(e.data);switch(t[0]){case"rdp-connect":r(3),a.rotation=0,a.Canvas.setTransform(1,0,0,1,0,0),a.Canvas.canvas.width=a.ScreenWidth,a.Canvas.canvas.height=a.ScreenHeight,a.Canvas.fillRect(0,0,a.ScreenWidth,a.ScreenHeight),null!=a.m.onScreenSizeChange&&a.m.onScreenSizeChange(a,a.ScreenWidth,a.ScreenHeight,a.CanvasId);break;case"rdp-bitmap":if(null==a.bitmapData)break;var n=t[1];n.data=a.bitmapData,delete a.bitmapData,a.render.update(n);break;case"rdp-pointer":n=t[1];i=n,o&&(a.CanvasId.style.cursor=n);break;case"rdp-close":a.Stop();break;case"rdp-error":switch(a.consoleMessageTimeout=5,a.consoleMessage=t[1],delete a.consoleMessageArgs,2a.ScreenWidth||t.y>a.ScreenHeight))return a.mouseNagleData=["mouse",t.x,t.y,0,!1],null==a.mouseNagleTimer&&(a.mouseNagleTimer=setTimeout(function(){a.socket.send(JSON.stringify(a.mouseNagleData)),a.mouseNagleTimer=null},50)),e.preventDefault(),!1}},a.m.mouseup=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!1])),e.preventDefault(),!1}},a.m.mousedown=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight))return null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null),a.socket.send(JSON.stringify(["mouse",t.x,t.y,n(e.button),!0])),e.preventDefault(),!1}},a.m.handleKeyUp=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!1])),e.preventDefault(),!1},a.m.handleKeyDown=function(e){if(a.socket&&3==a.State)return a.socket.send(JSON.stringify(["scancode",Mstsc.scancode(e),!0])),e.preventDefault(),!1},a.m.mousewheel=function(e){if(a.socket&&3==a.State){var t=s(e);if(!(t.x<0||t.y<0||t.x>a.ScreenWidth||t.y>a.ScreenHeight)){null!=a.mouseNagleTimer&&(clearTimeout(a.mouseNagleTimer),a.mouseNagleTimer=null);var n=0;return e.detail?n=120*e.detail:e.wheelDelta&&(n=3*e.wheelDelta),a.m.ReverseMouseWheel&&(n*=-1),0!=n&&a.socket.send(JSON.stringify(["wheel",t.x,t.y,n,!1,!1])),e.preventDefault(),!1}}},a.m.SendStringUnicode=function(e){a.socket&&3==a.State&&a.socket.send(JSON.stringify(["utype",e]))},a.m.SendKeyMsgKC=function(e,t,n){if(3==a.State)if("object"==typeof e)for(var s in e)a.m.SendKeyMsgKC(e[s][0],e[s][1],e[s][2]);else{t=c[t];null!=t&&a.socket.send(JSON.stringify(["scancode",t,0!=(1&e)]))}},a.m.mousedblclick=function(){},a.m.handleKeyPress=function(){},a.m.setRotation=function(){},a.m.sendcad=function(){a.socket.send(JSON.stringify(["scancode",29,!0])),a.socket.send(JSON.stringify(["scancode",56,!0])),a.socket.send(JSON.stringify(["scancode",57427,!0])),a.socket.send(JSON.stringify(["scancode",57427,!1])),a.socket.send(JSON.stringify(["scancode",56,!1])),a.socket.send(JSON.stringify(["scancode",29,!1]))};var c={9:15,16:42,17:29,18:56,27:1,33:57417,34:57425,35:57423,36:57415,37:57419,38:57416,39:57421,40:57424,44:57399,45:57426,46:57427,65:30,66:48,67:46,68:32,69:18,70:33,71:34,72:35,73:23,74:36,75:37,76:38,77:50,78:49,79:24,80:25,81:16,82:19,83:31,84:20,85:22,86:47,87:17,88:45,89:21,90:44,91:57435,112:59,113:60,114:61,115:62,116:63,117:64,118:65,119:66,120:67,121:68,122:87,123:88};return a} \ No newline at end of file diff --git a/translate/translate.json b/translate/translate.json index 8e63e720..9272a478 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -46,8 +46,8 @@ "zh-chs": " + CIRA", "zh-cht": " + CIRA", "xloc": [ - "default.handlebars->41->1905", - "default.handlebars->41->1907" + "default.handlebars->41->1907", + "default.handlebars->41->1909" ] }, { @@ -299,7 +299,7 @@ "zh-chs": " 可以使用密码提示,但不建议使用。", "zh-cht": " 可以使用密碼提示,但不建議使用。", "xloc": [ - "default.handlebars->41->1784" + "default.handlebars->41->1786" ] }, { @@ -324,8 +324,8 @@ "zh-chs": " 用户需要先登录到该服务器一次,然后才能将其添加到设备组。", "zh-cht": " 用戶需要先登入到該伺服器一次,然後才能將其新增到裝置群。", "xloc": [ - "default.handlebars->41->2025", - "default.handlebars->41->2580" + "default.handlebars->41->2027", + "default.handlebars->41->2582" ] }, { @@ -834,7 +834,7 @@ "zh-chs": "* 8个字符,1个大写,1个小写,1个数字,1个非字母数字。", "zh-cht": "* 8個字符,1個大寫,1個小寫,1個數字,1個非字母數字。", "xloc": [ - "default.handlebars->41->1985", + "default.handlebars->41->1987", "default.handlebars->41->475" ] }, @@ -929,9 +929,9 @@ "zh-cht": ",", "xloc": [ "default-mobile.handlebars->11->701", - "default.handlebars->41->2099", - "default.handlebars->41->2363", - "default.handlebars->41->893" + "default.handlebars->41->2101", + "default.handlebars->41->2365", + "default.handlebars->41->894" ] }, { @@ -1048,7 +1048,7 @@ "zh-cht": ",MQTT在線", "xloc": [ "default-mobile.handlebars->11->605", - "default.handlebars->41->1493" + "default.handlebars->41->1495" ] }, { @@ -1072,8 +1072,8 @@ "tr": ", İzin Yok", "zh-chs": ", 不同意", "xloc": [ - "default.handlebars->41->1943", - "default.handlebars->41->982" + "default.handlebars->41->1945", + "default.handlebars->41->983" ] }, { @@ -1098,8 +1098,8 @@ "zh-chs": ",提示同意", "zh-cht": ",提示同意", "xloc": [ - "default.handlebars->41->1944", - "default.handlebars->41->983" + "default.handlebars->41->1946", + "default.handlebars->41->984" ] }, { @@ -1109,7 +1109,7 @@ "ru": ", RDP", "fr": ", RDP", "xloc": [ - "default.handlebars->41->1234" + "default.handlebars->41->1236" ] }, { @@ -1129,8 +1129,8 @@ "ru": ", Ежедневно", "tr": ", Günlük yinelenen", "xloc": [ - "default.handlebars->41->1940", - "default.handlebars->41->979" + "default.handlebars->41->1942", + "default.handlebars->41->980" ] }, { @@ -1150,8 +1150,8 @@ "ru": ", Еженедельно", "tr": ", Haftalık yinelenen", "xloc": [ - "default.handlebars->41->1941", - "default.handlebars->41->980" + "default.handlebars->41->1943", + "default.handlebars->41->981" ] }, { @@ -1193,7 +1193,7 @@ "fr": ", SFTP", "xloc": [ "default-mobile.handlebars->11->468", - "default.handlebars->41->1342" + "default.handlebars->41->1344" ] }, { @@ -1203,7 +1203,7 @@ "ru": ", SSH", "fr": ", SSH", "xloc": [ - "default.handlebars->41->1310" + "default.handlebars->41->1312" ] }, { @@ -1228,7 +1228,7 @@ "zh-chs": ",软体KVM", "zh-cht": ",軟體KVM", "xloc": [ - "default.handlebars->41->1217", + "default.handlebars->41->1219", "sharing.handlebars->11->12" ] }, @@ -1253,8 +1253,8 @@ "tr": ", Araç Çubuğu", "zh-chs": ", 工具栏", "xloc": [ - "default.handlebars->41->1945", - "default.handlebars->41->984" + "default.handlebars->41->1947", + "default.handlebars->41->985" ] }, { @@ -1295,8 +1295,8 @@ "ru": ", Только просмотр рабочего стола", "tr": ", Yalnızca masaüstünü görüntüle", "xloc": [ - "default.handlebars->41->1942", - "default.handlebars->41->981" + "default.handlebars->41->1944", + "default.handlebars->41->982" ] }, { @@ -1324,9 +1324,9 @@ "default-mobile.handlebars->11->411", "default-mobile.handlebars->11->446", "default-mobile.handlebars->11->469", - "default.handlebars->41->1233", - "default.handlebars->41->1311", - "default.handlebars->41->1343", + "default.handlebars->41->1235", + "default.handlebars->41->1313", + "default.handlebars->41->1345", "sharing.handlebars->11->19", "sharing.handlebars->11->27", "sharing.handlebars->11->44", @@ -1522,7 +1522,7 @@ "zh-chs": ",{0}观看", "zh-cht": ",{0}觀看", "xloc": [ - "default.handlebars->41->1228", + "default.handlebars->41->1230", "sharing.handlebars->11->13" ] }, @@ -1629,9 +1629,9 @@ "xloc": [ "default-mobile.handlebars->11->139", "default-mobile.handlebars->11->475", - "default.handlebars->41->1353", - "default.handlebars->41->2160", - "default.handlebars->41->2778", + "default.handlebars->41->1355", + "default.handlebars->41->2162", + "default.handlebars->41->2780", "sharing.handlebars->11->50" ] }, @@ -1793,7 +1793,7 @@ "zh-chs": "1个活跃时段", "zh-cht": "1個活躍時段", "xloc": [ - "default.handlebars->41->2668" + "default.handlebars->41->2670" ] }, { @@ -1820,7 +1820,7 @@ "xloc": [ "default-mobile.handlebars->11->149", "default-mobile.handlebars->11->745", - "default.handlebars->41->2184", + "default.handlebars->41->2186", "download.handlebars->3->1", "download2.handlebars->5->1", "sharing.handlebars->11->96" @@ -1859,7 +1859,7 @@ "zh-chs": "1条连接", "zh-cht": "1位聯絡文", "xloc": [ - "default.handlebars->41->1230", + "default.handlebars->41->1232", "sharing.handlebars->11->15" ] }, @@ -1912,7 +1912,7 @@ "zh-chs": "1组", "zh-cht": "1群", "xloc": [ - "default.handlebars->41->2627" + "default.handlebars->41->2629" ] }, { @@ -1964,8 +1964,8 @@ "zh-chs": "1分钟", "zh-cht": "1分鐘", "xloc": [ - "default.handlebars->41->1062", - "default.handlebars->41->1749" + "default.handlebars->41->1064", + "default.handlebars->41->1751" ] }, { @@ -2042,7 +2042,7 @@ "zh-chs": "有1个用户没有显示,请使用搜索框查找用户...", "zh-cht": "有1個用戶沒有顯示,請使用搜尋框搜尋用戶...", "xloc": [ - "default.handlebars->41->2395" + "default.handlebars->41->2397" ] }, { @@ -2134,7 +2134,7 @@ "zh-chs": "1秒", "xloc": [ "default-mobile.handlebars->11->361", - "default.handlebars->41->1097" + "default.handlebars->41->1099" ] }, { @@ -2239,7 +2239,7 @@ "default-mobile.handlebars->11->218", "default-mobile.handlebars->11->222", "default-mobile.handlebars->11->226", - "default.handlebars->41->2399", + "default.handlebars->41->2401", "default.handlebars->41->400", "default.handlebars->41->403", "default.handlebars->41->407", @@ -2426,8 +2426,8 @@ "zh-chs": "10分钟", "zh-cht": "10分鐘", "xloc": [ - "default.handlebars->41->1064", - "default.handlebars->41->1751" + "default.handlebars->41->1066", + "default.handlebars->41->1753" ] }, { @@ -2452,7 +2452,7 @@ "zh-chs": "10 秒", "xloc": [ "default-mobile.handlebars->11->363", - "default.handlebars->41->1099" + "default.handlebars->41->1101" ] }, { @@ -2620,8 +2620,8 @@ "zh-chs": "12小时", "zh-cht": "12小時", "xloc": [ - "default.handlebars->41->1072", - "default.handlebars->41->1759" + "default.handlebars->41->1074", + "default.handlebars->41->1761" ] }, { @@ -2774,8 +2774,8 @@ "zh-chs": "15分钟", "zh-cht": "15分鐘", "xloc": [ - "default.handlebars->41->1065", - "default.handlebars->41->1752" + "default.handlebars->41->1067", + "default.handlebars->41->1754" ] }, { @@ -2800,8 +2800,8 @@ "zh-chs": "16小时", "zh-cht": "16小時", "xloc": [ - "default.handlebars->41->1073", - "default.handlebars->41->1760" + "default.handlebars->41->1075", + "default.handlebars->41->1762" ] }, { @@ -2957,8 +2957,8 @@ "zh-chs": "2天", "zh-cht": "2天", "xloc": [ - "default.handlebars->41->1075", - "default.handlebars->41->1762" + "default.handlebars->41->1077", + "default.handlebars->41->1764" ] }, { @@ -2983,8 +2983,8 @@ "zh-chs": "2小时", "zh-cht": "2小時", "xloc": [ - "default.handlebars->41->1069", - "default.handlebars->41->1756" + "default.handlebars->41->1071", + "default.handlebars->41->1758" ] }, { @@ -3162,8 +3162,8 @@ "zh-chs": "24小时", "zh-cht": "24小時", "xloc": [ - "default.handlebars->41->1074", - "default.handlebars->41->1761" + "default.handlebars->41->1076", + "default.handlebars->41->1763" ] }, { @@ -3237,7 +3237,7 @@ "zh-chs": "2FA备份代码已清除", "zh-cht": "2FA備份代碼已清除", "xloc": [ - "default.handlebars->41->2295" + "default.handlebars->41->2297" ] }, { @@ -3259,7 +3259,7 @@ "ru": "2-oй фактор", "fr": "Second facteur", "xloc": [ - "default.handlebars->41->2814" + "default.handlebars->41->2816" ] }, { @@ -3284,8 +3284,8 @@ "zh-chs": "启用第二因素身份验证", "zh-cht": "啟用第二因素身份驗證", "xloc": [ - "default.handlebars->41->2413", - "default.handlebars->41->2651" + "default.handlebars->41->2415", + "default.handlebars->41->2653" ] }, { @@ -3434,8 +3434,8 @@ "zh-chs": "30分钟", "zh-cht": "30分鐘", "xloc": [ - "default.handlebars->41->1066", - "default.handlebars->41->1753" + "default.handlebars->41->1068", + "default.handlebars->41->1755" ] }, { @@ -3460,7 +3460,7 @@ "zh-chs": "32 位", "xloc": [ "default-mobile.handlebars->11->512", - "default.handlebars->41->1406" + "default.handlebars->41->1408" ] }, { @@ -3538,8 +3538,8 @@ "zh-chs": "4天", "zh-cht": "4天", "xloc": [ - "default.handlebars->41->1076", - "default.handlebars->41->1763" + "default.handlebars->41->1078", + "default.handlebars->41->1765" ] }, { @@ -3564,8 +3564,8 @@ "zh-chs": "4个小时", "zh-cht": "4個小時", "xloc": [ - "default.handlebars->41->1070", - "default.handlebars->41->1757" + "default.handlebars->41->1072", + "default.handlebars->41->1759" ] }, { @@ -3693,8 +3693,8 @@ "zh-chs": "45分钟", "zh-cht": "45分鐘", "xloc": [ - "default.handlebars->41->1067", - "default.handlebars->41->1754" + "default.handlebars->41->1069", + "default.handlebars->41->1756" ] }, { @@ -3744,8 +3744,8 @@ "zh-chs": "5分钟", "zh-cht": "5分鐘", "xloc": [ - "default.handlebars->41->1063", - "default.handlebars->41->1750" + "default.handlebars->41->1065", + "default.handlebars->41->1752" ] }, { @@ -3770,7 +3770,7 @@ "zh-chs": "5秒", "xloc": [ "default-mobile.handlebars->11->362", - "default.handlebars->41->1098" + "default.handlebars->41->1100" ] }, { @@ -3926,8 +3926,8 @@ "zh-chs": "60分钟", "zh-cht": "60分鐘", "xloc": [ - "default.handlebars->41->1068", - "default.handlebars->41->1755" + "default.handlebars->41->1070", + "default.handlebars->41->1757" ] }, { @@ -4004,7 +4004,7 @@ "zh-chs": "64 位", "xloc": [ "default-mobile.handlebars->11->514", - "default.handlebars->41->1408" + "default.handlebars->41->1410" ] }, { @@ -4164,7 +4164,7 @@ "zh-chs": "7天电源状态", "zh-cht": "7天電源狀態", "xloc": [ - "default.handlebars->41->1132" + "default.handlebars->41->1134" ] }, { @@ -4175,7 +4175,7 @@ "ru": "7 дней", "fr": "7 jours", "xloc": [ - "default.handlebars->41->1764" + "default.handlebars->41->1766" ] }, { @@ -4253,8 +4253,8 @@ "zh-chs": "8小時", "zh-cht": "8小時", "xloc": [ - "default.handlebars->41->1071", - "default.handlebars->41->1758", + "default.handlebars->41->1073", + "default.handlebars->41->1760", "default.handlebars->41->503", "default.handlebars->41->517" ] @@ -4581,8 +4581,8 @@ "zh-cht": "ACM", "xloc": [ "default-mobile.handlebars->11->297", - "default.handlebars->41->1923", - "default.handlebars->41->811" + "default.handlebars->41->1925", + "default.handlebars->41->812" ] }, { @@ -4676,7 +4676,7 @@ "tr": "AMT-OS", "zh-chs": "操作系统", "xloc": [ - "default.handlebars->41->2936" + "default.handlebars->41->2938" ] }, { @@ -4695,7 +4695,7 @@ "ru": "AMT-Redir", "tr": "AMT-Yönlendirme", "xloc": [ - "default.handlebars->41->2821" + "default.handlebars->41->2823" ] }, { @@ -4714,7 +4714,7 @@ "ru": "AMT-WSMAN", "tr": "AMT-WSMAN", "xloc": [ - "default.handlebars->41->2820" + "default.handlebars->41->2822" ] }, { @@ -4870,8 +4870,8 @@ "xloc": [ "default-mobile.handlebars->11->516", "default-mobile.handlebars->11->518", - "default.handlebars->41->830", - "default.handlebars->41->832" + "default.handlebars->41->831", + "default.handlebars->41->833" ] }, { @@ -4897,7 +4897,7 @@ "zh-cht": "拒絕存取", "xloc": [ "default-mobile.handlebars->11->606", - "default.handlebars->41->1494" + "default.handlebars->41->1496" ] }, { @@ -4973,7 +4973,7 @@ "zh-chs": "访问服务器档案", "zh-cht": "存取伺服器檔案", "xloc": [ - "default.handlebars->41->2586" + "default.handlebars->41->2588" ] }, { @@ -5082,11 +5082,11 @@ "default-mobile.handlebars->11->264", "default-mobile.handlebars->11->266", "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountSecurity->1->0", - "default.handlebars->41->1793", "default.handlebars->41->1795", - "default.handlebars->41->2989", - "default.handlebars->41->771", - "default.handlebars->41->773" + "default.handlebars->41->1797", + "default.handlebars->41->2991", + "default.handlebars->41->772", + "default.handlebars->41->774" ] }, { @@ -5111,7 +5111,7 @@ "zh-chs": "帐号设定", "xloc": [ "default-mobile.handlebars->11->712", - "default.handlebars->41->2865" + "default.handlebars->41->2867" ] }, { @@ -5187,7 +5187,7 @@ "zh-chs": "帐户已更改:{0}", "zh-cht": "帳戶已更改:{0}", "xloc": [ - "default.handlebars->41->2268" + "default.handlebars->41->2270" ] }, { @@ -5212,7 +5212,7 @@ "zh-chs": "创建帐户,电子邮件为{0}", "zh-cht": "創建帳戶,電子郵件為{0}", "xloc": [ - "default.handlebars->41->2267" + "default.handlebars->41->2269" ] }, { @@ -5232,7 +5232,7 @@ "ru": "Аккаунт создан, имя {0}.", "tr": "Hesap oluşturuldu, ad {0}.", "xloc": [ - "default.handlebars->41->2330" + "default.handlebars->41->2332" ] }, { @@ -5257,7 +5257,7 @@ "zh-chs": "创建帐户,用户名是{0}", "zh-cht": "帳戶已創建,用戶名是{0}", "xloc": [ - "default.handlebars->41->2266" + "default.handlebars->41->2268" ] }, { @@ -5284,8 +5284,8 @@ "xloc": [ "default-mobile.handlebars->11->64", "default.handlebars->41->199", - "default.handlebars->41->2415", - "default.handlebars->41->2583" + "default.handlebars->41->2417", + "default.handlebars->41->2585" ] }, { @@ -5311,7 +5311,7 @@ "zh-cht": "達到帳戶限制。", "xloc": [ "default-mobile.handlebars->11->724", - "default.handlebars->41->2877", + "default.handlebars->41->2879", "login-mobile.handlebars->5->6", "login.handlebars->5->6", "login2.handlebars->7->8" @@ -5366,7 +5366,7 @@ "zh-chs": "帐号登录", "zh-cht": "帳號登錄", "xloc": [ - "default.handlebars->41->2203" + "default.handlebars->41->2205" ] }, { @@ -5390,7 +5390,7 @@ "tr": "{0}, {1}, {2} adresinden hesap girişi", "zh-chs": "来自 {0}、{1}、{2} 的帐户登录", "xloc": [ - "default.handlebars->41->2309" + "default.handlebars->41->2311" ] }, { @@ -5415,7 +5415,7 @@ "zh-chs": "帐户登出", "zh-cht": "帳戶登出", "xloc": [ - "default.handlebars->41->2204" + "default.handlebars->41->2206" ] }, { @@ -5467,7 +5467,7 @@ "zh-chs": "帐户密码已更改:{0}", "zh-cht": "帳戶密碼已更改:{0}", "xloc": [ - "default.handlebars->41->2276" + "default.handlebars->41->2278" ] }, { @@ -5492,7 +5492,7 @@ "zh-chs": "帐户已删除", "zh-cht": "帳戶已刪除", "xloc": [ - "default.handlebars->41->2265" + "default.handlebars->41->2267" ] }, { @@ -5543,7 +5543,7 @@ "zh-cht": "指令", "xloc": [ "default-mobile.handlebars->11->612", - "default.handlebars->41->1500", + "default.handlebars->41->1502", "default.handlebars->container->column_l->p42->p42tbl->1->0->8" ] }, @@ -5569,8 +5569,8 @@ "zh-chs": "动作档案", "zh-cht": "動作檔案", "xloc": [ - "default.handlebars->41->1178", - "default.handlebars->41->1180" + "default.handlebars->41->1180", + "default.handlebars->41->1182" ] }, { @@ -5599,7 +5599,7 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->1", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3", - "default.handlebars->41->894", + "default.handlebars->41->895", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->1", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->1", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1" @@ -5702,7 +5702,7 @@ "zh-chs": "如果ACM失败,则激活到CCM", "zh-cht": "如果ACM失敗,則激活到CCM", "xloc": [ - "default.handlebars->41->1976" + "default.handlebars->41->1978" ] }, { @@ -5730,9 +5730,9 @@ "default-mobile.handlebars->11->292", "default-mobile.handlebars->11->294", "default-mobile.handlebars->11->567", - "default.handlebars->41->1454", - "default.handlebars->41->804", - "default.handlebars->41->806" + "default.handlebars->41->1456", + "default.handlebars->41->805", + "default.handlebars->41->807" ] }, { @@ -5782,8 +5782,8 @@ "zh-chs": "主动设备共享", "zh-cht": "主動設備共享", "xloc": [ - "default.handlebars->41->1927", - "default.handlebars->41->966" + "default.handlebars->41->1929", + "default.handlebars->41->967" ] }, { @@ -5807,7 +5807,7 @@ "tr": "Aktif Giriş Anahtarları", "zh-chs": "活动登录令牌", "xloc": [ - "default.handlebars->41->1824" + "default.handlebars->41->1826" ] }, { @@ -5827,7 +5827,7 @@ "ru": "Активный пользователь", "tr": "Aktif Kullanıcı", "xloc": [ - "default.handlebars->41->848" + "default.handlebars->41->849" ] }, { @@ -5847,7 +5847,7 @@ "ru": "Активные пользователи", "tr": "Aktif Kullanıcılar", "xloc": [ - "default.handlebars->41->847" + "default.handlebars->41->848" ] }, { @@ -5894,8 +5894,8 @@ "zh-chs": "添加", "xloc": [ "default-mobile.handlebars->11->438", - "default.handlebars->41->1265", - "default.handlebars->41->1270" + "default.handlebars->41->1267", + "default.handlebars->41->1272" ] }, { @@ -5962,7 +5962,7 @@ "zh-chs": "添加代理", "zh-cht": "新增代理", "xloc": [ - "default.handlebars->41->1917", + "default.handlebars->41->1919", "default.handlebars->41->441" ] }, @@ -6010,9 +6010,9 @@ "zh-chs": "添加设备", "zh-cht": "新增裝置", "xloc": [ - "default.handlebars->41->1921", - "default.handlebars->41->2558", - "default.handlebars->41->2717", + "default.handlebars->41->1923", + "default.handlebars->41->2560", + "default.handlebars->41->2719", "default.handlebars->41->445" ] }, @@ -6038,7 +6038,7 @@ "zh-chs": "添加设备日志", "zh-cht": "新增裝置日誌", "xloc": [ - "default.handlebars->41->1039" + "default.handlebars->41->1040" ] }, { @@ -6063,9 +6063,9 @@ "zh-chs": "添加设备组", "zh-cht": "新增裝置群", "xloc": [ - "default.handlebars->41->2061", - "default.handlebars->41->2552", - "default.handlebars->41->2705", + "default.handlebars->41->2063", + "default.handlebars->41->2554", + "default.handlebars->41->2707", "default.handlebars->41->357" ] }, @@ -6091,7 +6091,7 @@ "zh-chs": "添加设备组权限", "zh-cht": "新增裝置群權限", "xloc": [ - "default.handlebars->41->2058" + "default.handlebars->41->2060" ] }, { @@ -6116,8 +6116,8 @@ "zh-chs": "添加设备权限", "zh-cht": "新增裝置權限", "xloc": [ - "default.handlebars->41->2063", - "default.handlebars->41->2065" + "default.handlebars->41->2065", + "default.handlebars->41->2067" ] }, { @@ -6260,7 +6260,7 @@ "zh-chs": "添加成员身份", "zh-cht": "新增成員身份", "xloc": [ - "default.handlebars->41->2737" + "default.handlebars->41->2739" ] }, { @@ -6331,8 +6331,8 @@ "zh-chs": "添加安全密钥", "zh-cht": "新增安全密鑰", "xloc": [ - "default.handlebars->41->1539", - "default.handlebars->41->1540", + "default.handlebars->41->1541", + "default.handlebars->41->1542", "default.handlebars->41->230", "default.handlebars->41->232", "default.handlebars->41->235", @@ -6362,7 +6362,7 @@ "zh-cht": "新增用戶", "xloc": [ "default-mobile.handlebars->11->637", - "default.handlebars->41->958" + "default.handlebars->41->959" ] }, { @@ -6387,7 +6387,7 @@ "zh-chs": "添加用户设备权限", "zh-cht": "新增用戶裝置權限", "xloc": [ - "default.handlebars->41->2068" + "default.handlebars->41->2070" ] }, { @@ -6412,10 +6412,10 @@ "zh-chs": "添加用户组", "zh-cht": "新增用戶群", "xloc": [ - "default.handlebars->41->1913", - "default.handlebars->41->2060", - "default.handlebars->41->2711", - "default.handlebars->41->959" + "default.handlebars->41->1915", + "default.handlebars->41->2062", + "default.handlebars->41->2713", + "default.handlebars->41->960" ] }, { @@ -6440,7 +6440,7 @@ "zh-chs": "添加用户组设备权限", "zh-cht": "新增用戶群裝置權限", "xloc": [ - "default.handlebars->41->2070" + "default.handlebars->41->2072" ] }, { @@ -6512,8 +6512,8 @@ "zh-chs": "添加用户", "zh-cht": "新增用戶", "xloc": [ - "default.handlebars->41->1912", - "default.handlebars->41->2547" + "default.handlebars->41->1914", + "default.handlebars->41->2549" ] }, { @@ -6538,7 +6538,7 @@ "zh-chs": "将用户添加到设备组", "zh-cht": "將用戶新增到裝置群", "xloc": [ - "default.handlebars->41->2057" + "default.handlebars->41->2059" ] }, { @@ -6563,7 +6563,7 @@ "zh-chs": "将用户添加到用户组", "zh-cht": "將用戶新增到用戶群", "xloc": [ - "default.handlebars->41->2582" + "default.handlebars->41->2584" ] }, { @@ -6734,7 +6734,7 @@ "zh-chs": "通过安装Mesh Agent将新计算机添加到该设备组。", "zh-cht": "通過安裝Mesh Agent將新電腦新增到該裝置群。", "xloc": [ - "default.handlebars->41->1916", + "default.handlebars->41->1918", "default.handlebars->41->440" ] }, @@ -6759,7 +6759,7 @@ "tr": "Yerel ağda bulunan cihazı ekleyin.", "zh-chs": "添加位于本地网络上的设备。", "xloc": [ - "default.handlebars->41->1920", + "default.handlebars->41->1922", "default.handlebars->41->444" ] }, @@ -6859,7 +6859,7 @@ "zh-chs": "添加了身份验证应用程序", "zh-cht": "添加了身份驗證應用程序", "xloc": [ - "default.handlebars->41->2292" + "default.handlebars->41->2294" ] }, { @@ -6884,7 +6884,7 @@ "zh-chs": "已将设备共享{0}从{1}添加到{2}", "zh-cht": "已將設備共享{0}從{1}添加到{2}", "xloc": [ - "default.handlebars->41->2303" + "default.handlebars->41->2305" ] }, { @@ -6904,7 +6904,7 @@ "ru": "Добавлен ежедневный общий доступ к устройству {0}.", "tr": "Her gün yinelenen {0} cihaz paylaşımı eklendi.", "xloc": [ - "default.handlebars->41->2340" + "default.handlebars->41->2342" ] }, { @@ -6924,7 +6924,7 @@ "ru": "Добавлен еженедельный общий доступ к устройству {0}.", "tr": "Haftalık olarak yinelenen {0} cihaz paylaşımı eklendi.", "xloc": [ - "default.handlebars->41->2341" + "default.handlebars->41->2343" ] }, { @@ -6944,7 +6944,7 @@ "ru": "Добавлен общий доступ к устройству {0} с неограниченным временем.", "tr": "Sınırsız süre ile cihaz paylaşımı {0} eklendi.", "xloc": [ - "default.handlebars->41->2333" + "default.handlebars->41->2335" ] }, { @@ -6969,8 +6969,8 @@ "zh-chs": "已将设备{0}添加到设备组{1}", "zh-cht": "已將設備{0}添加到設備組{1}", "xloc": [ - "default.handlebars->41->2259", - "default.handlebars->41->2286" + "default.handlebars->41->2261", + "default.handlebars->41->2288" ] }, { @@ -6994,7 +6994,7 @@ "tr": "Giriş anahtarı eklendi", "zh-chs": "添加登录令牌", "xloc": [ - "default.handlebars->41->2317" + "default.handlebars->41->2319" ] }, { @@ -7018,7 +7018,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulama cihazı eklendi", "zh-chs": "新增推送通知认证装置", "xloc": [ - "default.handlebars->41->2315" + "default.handlebars->41->2317" ] }, { @@ -7043,7 +7043,7 @@ "zh-chs": "添加了安全密钥", "zh-cht": "添加了安全密鑰", "xloc": [ - "default.handlebars->41->2297" + "default.handlebars->41->2299" ] }, { @@ -7068,7 +7068,7 @@ "zh-chs": "已将用户组{0}添加到设备组{1}", "zh-cht": "已將用戶組{0}添加到設備組{1}", "xloc": [ - "default.handlebars->41->2270" + "default.handlebars->41->2272" ] }, { @@ -7093,8 +7093,8 @@ "zh-chs": "已将用户{0}添加到用户组{1}", "zh-cht": "已將用戶{0}添加到用戶組{1}", "xloc": [ - "default.handlebars->41->2273", - "default.handlebars->41->2282" + "default.handlebars->41->2275", + "default.handlebars->41->2284" ] }, { @@ -7170,7 +7170,7 @@ "zh-cht": "管理員控制模式(ACM)", "xloc": [ "default-mobile.handlebars->11->569", - "default.handlebars->41->1456" + "default.handlebars->41->1458" ] }, { @@ -7196,7 +7196,7 @@ "zh-cht": "管理員憑證", "xloc": [ "default-mobile.handlebars->11->575", - "default.handlebars->41->1462" + "default.handlebars->41->1464" ] }, { @@ -7247,7 +7247,7 @@ "zh-chs": "管理领域", "zh-cht": "管理領域", "xloc": [ - "default.handlebars->41->2631" + "default.handlebars->41->2633" ] }, { @@ -7298,7 +7298,7 @@ "zh-chs": "管理领域", "zh-cht": "管理領域", "xloc": [ - "default.handlebars->41->2480" + "default.handlebars->41->2482" ] }, { @@ -7323,7 +7323,7 @@ "zh-chs": "管理员", "zh-cht": "管理員", "xloc": [ - "default.handlebars->41->2407" + "default.handlebars->41->2409" ] }, { @@ -7348,7 +7348,7 @@ "zh-chs": "南非文", "zh-cht": "南非文", "xloc": [ - "default.handlebars->41->1542" + "default.handlebars->41->1544" ] }, { @@ -7377,9 +7377,9 @@ "default-mobile.handlebars->11->256", "default-mobile.handlebars->11->313", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1", - "default.handlebars->41->2135", - "default.handlebars->41->2148", - "default.handlebars->41->2934", + "default.handlebars->41->2137", + "default.handlebars->41->2150", + "default.handlebars->41->2936", "default.handlebars->41->377", "default.handlebars->41->629", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1", @@ -7408,8 +7408,8 @@ "zh-chs": "代理+英特尔AMT", "zh-cht": "代理+Intel® AMT", "xloc": [ - "default.handlebars->41->2137", - "default.handlebars->41->2150" + "default.handlebars->41->2139", + "default.handlebars->41->2152" ] }, { @@ -7461,7 +7461,7 @@ "zh-cht": "代理控制台", "xloc": [ "default-mobile.handlebars->11->683", - "default.handlebars->41->2078" + "default.handlebars->41->2080" ] }, { @@ -7486,7 +7486,7 @@ "zh-chs": "代理错误计数器", "zh-cht": "代理錯誤計數器", "xloc": [ - "default.handlebars->41->2903" + "default.handlebars->41->2905" ] }, { @@ -7653,8 +7653,8 @@ "ru": "Общий доступ из Агента", "tr": "Agent Kendisinin-Paylaşımı", "xloc": [ - "default.handlebars->41->1946", - "default.handlebars->41->985" + "default.handlebars->41->1948", + "default.handlebars->41->986" ] }, { @@ -7679,7 +7679,7 @@ "zh-chs": "代理时段", "zh-cht": "代理時段", "xloc": [ - "default.handlebars->41->2919" + "default.handlebars->41->2921" ] }, { @@ -7726,7 +7726,7 @@ "zh-cht": "代理標籤", "xloc": [ "default-mobile.handlebars->11->310", - "default.handlebars->41->827" + "default.handlebars->41->828" ] }, { @@ -7776,7 +7776,7 @@ "zh-chs": "代理类型", "zh-cht": "代理類型", "xloc": [ - "default.handlebars->41->2146", + "default.handlebars->41->2148", "default.handlebars->container->column_l->p21->p21main->1->1->meshOsChartDiv->1" ] }, @@ -7827,7 +7827,7 @@ "zh-chs": "代理关闭了与服务器压缩的{0}%代理会话。已发送:{1},已压缩:{2}", "zh-cht": "代理關閉了與{0}%代理到服務器壓縮的會話。已發送:{1},已壓縮:{2}", "xloc": [ - "default.handlebars->41->2256" + "default.handlebars->41->2258" ] }, { @@ -7853,8 +7853,8 @@ "zh-cht": "代理已連接", "xloc": [ "default.handlebars->41->243", - "default.handlebars->41->945", - "default.handlebars->41->946" + "default.handlebars->41->946", + "default.handlebars->41->947" ] }, { @@ -8008,7 +8008,7 @@ "zh-cht": "代理離線", "xloc": [ "default-mobile.handlebars->11->604", - "default.handlebars->41->1492" + "default.handlebars->41->1494" ] }, { @@ -8034,7 +8034,7 @@ "zh-cht": "代理在線", "xloc": [ "default-mobile.handlebars->11->603", - "default.handlebars->41->1491" + "default.handlebars->41->1493" ] }, { @@ -8122,7 +8122,7 @@ "zh-chs": "代理在特权降低的远程设备上运行。", "zh-cht": "代理在特權降低的遠程設備上運行。", "xloc": [ - "default.handlebars->41->939" + "default.handlebars->41->940" ] }, { @@ -8231,8 +8231,8 @@ "zh-chs": "代理", "zh-cht": "代理", "xloc": [ - "default.handlebars->41->2108", - "default.handlebars->41->2947", + "default.handlebars->41->2110", + "default.handlebars->41->2949", "default.handlebars->41->522" ] }, @@ -8258,7 +8258,7 @@ "zh-chs": "阿尔巴尼亚文", "zh-cht": "阿爾巴尼亞文", "xloc": [ - "default.handlebars->41->1543" + "default.handlebars->41->1545" ] }, { @@ -8286,7 +8286,7 @@ "default-mobile.handlebars->11->148", "default-mobile.handlebars->11->476", "default-mobile.handlebars->11->478", - "default.handlebars->41->2790", + "default.handlebars->41->2792", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->1" ] }, @@ -8312,7 +8312,7 @@ "zh-chs": "全部可用", "zh-cht": "全部可用", "xloc": [ - "default.handlebars->41->2369" + "default.handlebars->41->2371" ] }, { @@ -8323,7 +8323,7 @@ "pt-br": "Todos agentes disponíveis", "ru": "Все доступные агенты", "xloc": [ - "default.handlebars->41->2109", + "default.handlebars->41->2111", "default.handlebars->41->523" ] }, @@ -8349,7 +8349,7 @@ "zh-chs": "所有显示", "zh-cht": "所有顯示", "xloc": [ - "default.handlebars->41->1303" + "default.handlebars->41->1305" ] }, { @@ -8374,7 +8374,7 @@ "zh-chs": "所有事件", "zh-cht": "所有事件", "xloc": [ - "default.handlebars->41->2367" + "default.handlebars->41->2369" ] }, { @@ -8399,9 +8399,9 @@ "zh-chs": "全部聚焦", "zh-cht": "全部聚焦", "xloc": [ - "default.handlebars->41->1235", "default.handlebars->41->1237", - "default.handlebars->41->1238" + "default.handlebars->41->1239", + "default.handlebars->41->1240" ] }, { @@ -8450,8 +8450,8 @@ "zh-chs": "允许用户管理此设备组和该组中的设备。", "zh-cht": "允許用戶管理此裝置群和該群中的裝置。", "xloc": [ - "default.handlebars->41->2023", - "default.handlebars->41->2579" + "default.handlebars->41->2025", + "default.handlebars->41->2581" ] }, { @@ -8476,7 +8476,7 @@ "zh-chs": "允许用户管理此设备。", "zh-cht": "允許用戶管理此裝置。", "xloc": [ - "default.handlebars->41->2024" + "default.handlebars->41->2026" ] }, { @@ -8573,8 +8573,8 @@ "xloc": [ "default-mobile.handlebars->11->431", "default-mobile.handlebars->11->435", - "default.handlebars->41->1258", - "default.handlebars->41->1262" + "default.handlebars->41->1260", + "default.handlebars->41->1264" ] }, { @@ -8584,7 +8584,7 @@ "ru": "Альтернативная оболочка", "fr": "Shell alternatif", "xloc": [ - "default.handlebars->41->1225" + "default.handlebars->41->1227" ] }, { @@ -8661,7 +8661,7 @@ "zh-chs": "备用(F10 = ESC + 0)", "zh-cht": "備用(F10 = ESC + 0)", "xloc": [ - "default.handlebars->41->1337", + "default.handlebars->41->1339", "sharing.handlebars->11->37" ] }, @@ -8735,10 +8735,10 @@ "zh-chs": "一直通知", "zh-cht": "一直通知", "xloc": [ - "default.handlebars->41->1889", - "default.handlebars->41->2538", - "default.handlebars->41->2640", - "default.handlebars->41->857" + "default.handlebars->41->1891", + "default.handlebars->41->2540", + "default.handlebars->41->2642", + "default.handlebars->41->858" ] }, { @@ -8763,10 +8763,10 @@ "zh-chs": "一直提示", "zh-cht": "一直提示", "xloc": [ - "default.handlebars->41->1890", - "default.handlebars->41->2539", - "default.handlebars->41->2641", - "default.handlebars->41->858" + "default.handlebars->41->1892", + "default.handlebars->41->2541", + "default.handlebars->41->2643", + "default.handlebars->41->859" ] }, { @@ -9011,8 +9011,8 @@ "tr": "Anti-virüs etkin değil", "zh-chs": "杀毒软件未激活", "xloc": [ - "default.handlebars->41->2139", - "default.handlebars->41->2153" + "default.handlebars->41->2141", + "default.handlebars->41->2155" ] }, { @@ -9038,7 +9038,7 @@ "zh-cht": "防毒軟體", "xloc": [ "default-mobile.handlebars->11->532", - "default.handlebars->41->846" + "default.handlebars->41->847" ] }, { @@ -9331,7 +9331,7 @@ "zh-chs": "阿拉伯文(阿尔及利亚)", "zh-cht": "阿拉伯文(阿爾及利亞)", "xloc": [ - "default.handlebars->41->1545" + "default.handlebars->41->1547" ] }, { @@ -9356,7 +9356,7 @@ "zh-chs": "阿拉伯文(巴林)", "zh-cht": "阿拉伯文(巴林)", "xloc": [ - "default.handlebars->41->1546" + "default.handlebars->41->1548" ] }, { @@ -9381,7 +9381,7 @@ "zh-chs": "阿拉伯文(埃及)", "zh-cht": "阿拉伯文(埃及)", "xloc": [ - "default.handlebars->41->1547" + "default.handlebars->41->1549" ] }, { @@ -9406,7 +9406,7 @@ "zh-chs": "阿拉伯文(伊拉克)", "zh-cht": "阿拉伯文(伊拉克)", "xloc": [ - "default.handlebars->41->1548" + "default.handlebars->41->1550" ] }, { @@ -9431,7 +9431,7 @@ "zh-chs": "阿拉伯文(约旦)", "zh-cht": "阿拉伯文(約旦)", "xloc": [ - "default.handlebars->41->1549" + "default.handlebars->41->1551" ] }, { @@ -9456,7 +9456,7 @@ "zh-chs": "阿拉伯文(科威特)", "zh-cht": "阿拉伯文(科威特)", "xloc": [ - "default.handlebars->41->1550" + "default.handlebars->41->1552" ] }, { @@ -9481,7 +9481,7 @@ "zh-chs": "阿拉伯文(黎巴嫩)", "zh-cht": "阿拉伯文(黎巴嫩)", "xloc": [ - "default.handlebars->41->1551" + "default.handlebars->41->1553" ] }, { @@ -9506,7 +9506,7 @@ "zh-chs": "阿拉伯文(利比亚)", "zh-cht": "阿拉伯文(利比亞)", "xloc": [ - "default.handlebars->41->1552" + "default.handlebars->41->1554" ] }, { @@ -9531,7 +9531,7 @@ "zh-chs": "阿拉伯文(摩洛哥)", "zh-cht": "阿拉伯文(摩洛哥)", "xloc": [ - "default.handlebars->41->1553" + "default.handlebars->41->1555" ] }, { @@ -9556,7 +9556,7 @@ "zh-chs": "阿拉伯文(阿曼)", "zh-cht": "阿拉伯文(阿曼)", "xloc": [ - "default.handlebars->41->1554" + "default.handlebars->41->1556" ] }, { @@ -9581,7 +9581,7 @@ "zh-chs": "阿拉伯文(卡塔尔)", "zh-cht": "阿拉伯文(卡塔爾)", "xloc": [ - "default.handlebars->41->1555" + "default.handlebars->41->1557" ] }, { @@ -9606,7 +9606,7 @@ "zh-chs": "阿拉伯文(沙特阿拉伯)", "zh-cht": "阿拉伯文(沙特阿拉伯)", "xloc": [ - "default.handlebars->41->1556" + "default.handlebars->41->1558" ] }, { @@ -9631,7 +9631,7 @@ "zh-chs": "阿拉伯文(标准)", "zh-cht": "阿拉伯文(標準)", "xloc": [ - "default.handlebars->41->1544" + "default.handlebars->41->1546" ] }, { @@ -9656,7 +9656,7 @@ "zh-chs": "阿拉伯文(叙利亚)", "zh-cht": "阿拉伯文(敘利亞)", "xloc": [ - "default.handlebars->41->1557" + "default.handlebars->41->1559" ] }, { @@ -9681,7 +9681,7 @@ "zh-chs": "阿拉伯文(突尼斯)", "zh-cht": "阿拉伯文(突尼斯)", "xloc": [ - "default.handlebars->41->1558" + "default.handlebars->41->1560" ] }, { @@ -9706,7 +9706,7 @@ "zh-chs": "阿拉伯文(阿联酋)", "zh-cht": "阿拉伯文(阿聯酋)", "xloc": [ - "default.handlebars->41->1559" + "default.handlebars->41->1561" ] }, { @@ -9731,7 +9731,7 @@ "zh-chs": "阿拉伯文(也门)", "zh-cht": "阿拉伯文(也門)", "xloc": [ - "default.handlebars->41->1560" + "default.handlebars->41->1562" ] }, { @@ -9756,7 +9756,7 @@ "zh-chs": "阿拉贡文", "zh-cht": "阿拉貢文", "xloc": [ - "default.handlebars->41->1561" + "default.handlebars->41->1563" ] }, { @@ -9784,9 +9784,9 @@ "default-mobile.handlebars->11->511", "default-mobile.handlebars->11->513", "default-mobile.handlebars->11->515", - "default.handlebars->41->1405", "default.handlebars->41->1407", - "default.handlebars->41->1409" + "default.handlebars->41->1409", + "default.handlebars->41->1411" ] }, { @@ -9837,7 +9837,7 @@ "zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。", "xloc": [ "default-mobile.handlebars->11->644", - "default.handlebars->41->1990" + "default.handlebars->41->1992" ] }, { @@ -9862,7 +9862,7 @@ "zh-chs": "您确定要删除节点{0}吗?", "zh-cht": "你確定要刪除節點{0}嗎?", "xloc": [ - "default.handlebars->41->1154" + "default.handlebars->41->1156" ] }, { @@ -9887,7 +9887,7 @@ "zh-chs": "您确定要卸载所选代理吗?", "zh-cht": "你確定要卸載所選代理嗎?", "xloc": [ - "default.handlebars->41->1143" + "default.handlebars->41->1145" ] }, { @@ -9912,7 +9912,7 @@ "zh-chs": "您确定要卸载所选的{0}代理吗?", "zh-cht": "你確定要卸載所選的{0}代理嗎?", "xloc": [ - "default.handlebars->41->1142" + "default.handlebars->41->1144" ] }, { @@ -9937,7 +9937,7 @@ "zh-chs": "您确定要{0}插件吗:{1}", "zh-cht": "你確定要{0}外掛嗎:{1}", "xloc": [ - "default.handlebars->41->2998" + "default.handlebars->41->3000" ] }, { @@ -9987,7 +9987,7 @@ "zh-chs": "亚美尼亚文", "zh-cht": "亞美尼亞文", "xloc": [ - "default.handlebars->41->1562" + "default.handlebars->41->1564" ] }, { @@ -10099,7 +10099,7 @@ "zh-chs": "阿萨姆文", "zh-cht": "阿薩姆文", "xloc": [ - "default.handlebars->41->1563" + "default.handlebars->41->1565" ] }, { @@ -10244,7 +10244,7 @@ "zh-chs": "阿斯图里亚斯文", "zh-cht": "阿斯圖里亞斯文", "xloc": [ - "default.handlebars->41->1564" + "default.handlebars->41->1566" ] }, { @@ -10269,7 +10269,7 @@ "zh-chs": "尝试激活英特尔(R)AMT ACM模式", "zh-cht": "嘗試激活英特爾(R)AMT ACM模式", "xloc": [ - "default.handlebars->41->2225" + "default.handlebars->41->2227" ] }, { @@ -10317,9 +10317,9 @@ "default-mobile.handlebars->11->447", "default-mobile.handlebars->11->451", "default-mobile.handlebars->11->463", - "default.handlebars->41->1312", - "default.handlebars->41->1316", - "default.handlebars->41->1328", + "default.handlebars->41->1314", + "default.handlebars->41->1318", + "default.handlebars->41->1330", "ssh.handlebars->3->21", "ssh.handlebars->3->22", "ssh.handlebars->3->5", @@ -10348,7 +10348,7 @@ "zh-chs": "认证软件", "zh-cht": "認證軟體", "xloc": [ - "default.handlebars->41->2644" + "default.handlebars->41->2646" ] }, { @@ -10372,9 +10372,9 @@ "tr": "Kimlik Doğrulama Cihazı", "zh-chs": "认证设备", "xloc": [ - "default.handlebars->41->1525", "default.handlebars->41->1527", - "default.handlebars->41->1531" + "default.handlebars->41->1529", + "default.handlebars->41->1533" ] }, { @@ -10400,8 +10400,8 @@ "xloc": [ "default-mobile.handlebars->11->464", "default-mobile.handlebars->11->470", - "default.handlebars->41->1330", - "default.handlebars->41->1345" + "default.handlebars->41->1332", + "default.handlebars->41->1347" ] }, { @@ -10430,8 +10430,8 @@ "default-mobile.handlebars->11->104", "default-mobile.handlebars->11->68", "default-mobile.handlebars->11->71", - "default.handlebars->41->1521", "default.handlebars->41->1523", + "default.handlebars->41->1525", "default.handlebars->41->205", "default.handlebars->41->210" ] @@ -10553,8 +10553,8 @@ "zh-chs": "自动删除", "zh-cht": "自動刪除", "xloc": [ - "default.handlebars->41->1874", - "default.handlebars->41->2360" + "default.handlebars->41->1876", + "default.handlebars->41->2362" ] }, { @@ -10608,7 +10608,7 @@ "zh-chs": "自动下载代理程序核心转储文件:“{0}”", "zh-cht": "自動下載代理程序核心轉儲文件:“{0}”", "xloc": [ - "default.handlebars->41->2306" + "default.handlebars->41->2308" ] }, { @@ -10703,7 +10703,7 @@ "tr": "Etkin olmayan cihazları otomatik olarak kaldırın", "zh-chs": "自动移除非活动设备", "xloc": [ - "default.handlebars->41->2018" + "default.handlebars->41->2020" ] }, { @@ -10728,7 +10728,7 @@ "zh-chs": "可用內存", "zh-cht": "可用內存", "xloc": [ - "default.handlebars->41->2928" + "default.handlebars->41->2930" ] }, { @@ -10753,7 +10753,7 @@ "zh-chs": "阿塞拜疆文", "zh-cht": "阿塞拜疆文", "xloc": [ - "default.handlebars->41->1565" + "default.handlebars->41->1567" ] }, { @@ -10780,9 +10780,9 @@ "default-mobile.handlebars->11->519", "default-mobile.handlebars->11->523", "default-mobile.handlebars->11->527", - "default.handlebars->41->833", - "default.handlebars->41->837", - "default.handlebars->41->841" + "default.handlebars->41->834", + "default.handlebars->41->838", + "default.handlebars->41->842" ] }, { @@ -10808,7 +10808,7 @@ "zh-cht": "的BIOS", "xloc": [ "default-mobile.handlebars->11->582", - "default.handlebars->41->1469" + "default.handlebars->41->1471" ] }, { @@ -10919,7 +10919,7 @@ "zh-chs": "退格", "xloc": [ "default-mobile.handlebars->11->414", - "default.handlebars->41->1241" + "default.handlebars->41->1243" ] }, { @@ -10969,8 +10969,8 @@ "zh-chs": "背景与互动", "zh-cht": "背景與互動", "xloc": [ - "default.handlebars->41->2115", - "default.handlebars->41->2122", + "default.handlebars->41->2117", + "default.handlebars->41->2124", "default.handlebars->41->509", "default.handlebars->41->529" ] @@ -10997,8 +10997,8 @@ "zh-chs": "仅背景", "zh-cht": "僅背景", "xloc": [ - "default.handlebars->41->2116", - "default.handlebars->41->2123", + "default.handlebars->41->2118", + "default.handlebars->41->2125", "default.handlebars->41->510", "default.handlebars->41->530", "default.handlebars->41->546" @@ -11052,8 +11052,8 @@ "zh-chs": "备用码", "zh-cht": "備用碼", "xloc": [ - "default.handlebars->41->2647", - "default.handlebars->41->2838" + "default.handlebars->41->2649", + "default.handlebars->41->2840" ] }, { @@ -11109,7 +11109,7 @@ "zh-chs": "错误的签名", "zh-cht": "錯誤的簽名", "xloc": [ - "default.handlebars->41->2910" + "default.handlebars->41->2912" ] }, { @@ -11134,7 +11134,7 @@ "zh-chs": "错误的网络证书", "zh-cht": "錯誤的網絡憑證", "xloc": [ - "default.handlebars->41->2909" + "default.handlebars->41->2911" ] }, { @@ -11159,7 +11159,7 @@ "zh-chs": "巴斯克", "zh-cht": "巴斯克", "xloc": [ - "default.handlebars->41->1566" + "default.handlebars->41->1568" ] }, { @@ -11234,7 +11234,7 @@ "zh-chs": "将{0}个文件批量上传到文件夹{1}", "zh-cht": "將{0}個文件批量上傳到文件夾{1}", "xloc": [ - "default.handlebars->41->2305" + "default.handlebars->41->2307" ] }, { @@ -11259,7 +11259,7 @@ "zh-chs": "白俄罗斯文", "zh-cht": "白俄羅斯文", "xloc": [ - "default.handlebars->41->1568" + "default.handlebars->41->1570" ] }, { @@ -11284,7 +11284,7 @@ "zh-chs": "孟加拉", "zh-cht": "孟加拉", "xloc": [ - "default.handlebars->41->1569" + "default.handlebars->41->1571" ] }, { @@ -11358,7 +11358,7 @@ "zh-chs": "引导加载程序", "xloc": [ "default-mobile.handlebars->11->545", - "default.handlebars->41->1422" + "default.handlebars->41->1424" ] }, { @@ -11383,7 +11383,7 @@ "zh-chs": "波斯尼亚文", "zh-cht": "波斯尼亞文", "xloc": [ - "default.handlebars->41->1570" + "default.handlebars->41->1572" ] }, { @@ -11408,7 +11408,7 @@ "zh-chs": "布列塔尼", "zh-cht": "布列塔尼", "xloc": [ - "default.handlebars->41->1571" + "default.handlebars->41->1573" ] }, { @@ -11433,7 +11433,7 @@ "zh-chs": "广播", "zh-cht": "廣播", "xloc": [ - "default.handlebars->41->2545", + "default.handlebars->41->2547", "default.handlebars->container->column_l->p4->3->1->0->3->1" ] }, @@ -11459,7 +11459,7 @@ "zh-chs": "广播消息", "zh-cht": "廣播消息", "xloc": [ - "default.handlebars->41->2462" + "default.handlebars->41->2464" ] }, { @@ -11484,7 +11484,7 @@ "zh-chs": "向所有连接的用户广播消息。", "zh-cht": "向所有連接的用戶廣播消息。", "xloc": [ - "default.handlebars->41->2457" + "default.handlebars->41->2459" ] }, { @@ -11495,7 +11495,7 @@ "pt-br": "Navegador", "ru": "Браузер", "xloc": [ - "default.handlebars->41->2812" + "default.handlebars->41->2814" ] }, { @@ -11555,7 +11555,7 @@ "zh-chs": "保加利亚文", "zh-cht": "保加利亞文", "xloc": [ - "default.handlebars->41->1567" + "default.handlebars->41->1569" ] }, { @@ -11580,7 +11580,7 @@ "zh-chs": "缅甸文", "zh-cht": "緬甸文", "xloc": [ - "default.handlebars->41->1572" + "default.handlebars->41->1574" ] }, { @@ -11604,7 +11604,7 @@ "tr": "Varsayılan olarak, etkin olmayan cihazlar 1 gün sonra kaldırılacaktır.", "zh-chs": "默认情况下,不活动的设备将在 1 天后移除。", "xloc": [ - "default.handlebars->41->2020" + "default.handlebars->41->2022" ] }, { @@ -11628,7 +11628,7 @@ "tr": "Varsayılan olarak, etkin olmayan cihazlar {0} gün sonra kaldırılacaktır.", "zh-chs": "默认情况下,非活动设备将在 {0} 天后移除。", "xloc": [ - "default.handlebars->41->2021" + "default.handlebars->41->2023" ] }, { @@ -11648,7 +11648,7 @@ "ru": "Входящих байт", "tr": "Bayt Girişi", "xloc": [ - "default.handlebars->41->2808" + "default.handlebars->41->2810" ] }, { @@ -11668,7 +11668,7 @@ "ru": "Исходящих байт", "tr": "Bayt Bitti", "xloc": [ - "default.handlebars->41->2809" + "default.handlebars->41->2811" ] }, { @@ -11704,7 +11704,7 @@ "zh-cht": "CCM", "xloc": [ "default-mobile.handlebars->11->296", - "default.handlebars->41->809" + "default.handlebars->41->810" ] }, { @@ -11729,7 +11729,7 @@ "zh-chs": "CCM模式", "zh-cht": "CCM模式", "xloc": [ - "default.handlebars->41->1973" + "default.handlebars->41->1975" ] }, { @@ -11755,7 +11755,7 @@ "zh-cht": "CIRA", "xloc": [ "default-mobile.handlebars->11->257", - "default.handlebars->41->2935", + "default.handlebars->41->2937", "default.handlebars->41->379", "default.handlebars->41->631" ] @@ -11782,7 +11782,7 @@ "zh-chs": "CIRA服务器", "zh-cht": "CIRA伺服器", "xloc": [ - "default.handlebars->41->2982" + "default.handlebars->41->2984" ] }, { @@ -11807,7 +11807,7 @@ "zh-chs": "CIRA服务器命令", "zh-cht": "CIRA伺服器指令", "xloc": [ - "default.handlebars->41->2983" + "default.handlebars->41->2985" ] }, { @@ -11852,7 +11852,7 @@ "zh-chs": "CIRA设置", "zh-cht": "CIRA設置", "xloc": [ - "default.handlebars->41->1981" + "default.handlebars->41->1983" ] }, { @@ -11878,8 +11878,8 @@ "zh-cht": "CPU", "xloc": [ "default-mobile.handlebars->11->588", - "default.handlebars->41->1475", - "default.handlebars->41->2959", + "default.handlebars->41->1477", + "default.handlebars->41->2961", "default.handlebars->container->column_l->p40->3->1->p40type->5" ] }, @@ -11905,7 +11905,7 @@ "zh-chs": "CPU负载", "zh-cht": "CPU負載", "xloc": [ - "default.handlebars->41->2924" + "default.handlebars->41->2926" ] }, { @@ -11930,7 +11930,7 @@ "zh-chs": "最近15分钟的CPU负载", "zh-cht": "最近15分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2927" + "default.handlebars->41->2929" ] }, { @@ -11955,7 +11955,7 @@ "zh-chs": "最近5分钟的CPU负载", "zh-cht": "最近5分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2926" + "default.handlebars->41->2928" ] }, { @@ -11980,7 +11980,7 @@ "zh-chs": "最近一分钟的CPU负载", "zh-cht": "最近一分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2925" + "default.handlebars->41->2927" ] }, { @@ -12005,8 +12005,8 @@ "zh-chs": "CR+LF", "zh-cht": "CR+LF", "xloc": [ - "default.handlebars->41->1308", - "default.handlebars->41->1339", + "default.handlebars->41->1310", + "default.handlebars->41->1341", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons", "sharing.handlebars->11->25", "sharing.handlebars->11->39", @@ -12035,7 +12035,7 @@ "zh-chs": "CSV", "zh-cht": "CSV", "xloc": [ - "default.handlebars->41->2377" + "default.handlebars->41->2379" ] }, { @@ -12060,9 +12060,9 @@ "zh-chs": "CSV格式", "zh-cht": "CSV格式", "xloc": [ - "default.handlebars->41->2381", - "default.handlebars->41->2449", - "default.handlebars->41->702" + "default.handlebars->41->2383", + "default.handlebars->41->2451", + "default.handlebars->41->703" ] }, { @@ -12109,7 +12109,7 @@ "zh-chs": "呼叫错误", "zh-cht": "呼叫錯誤", "xloc": [ - "default.handlebars->41->2999" + "default.handlebars->41->3001" ] }, { @@ -12157,8 +12157,8 @@ "agent-translations.json", "default-mobile.handlebars->11->113", "default-mobile.handlebars->dialog->idx_dlgButtonBar", - "default.handlebars->41->1844", - "default.handlebars->41->2988", + "default.handlebars->41->1846", + "default.handlebars->41->2990", "default.handlebars->41->482", "default.handlebars->container->dialog->idx_dlgButtonBar", "login-mobile.handlebars->dialog->idx_dlgButtonBar", @@ -12246,9 +12246,9 @@ "default-mobile.handlebars->11->593", "default-mobile.handlebars->11->598", "default-mobile.handlebars->11->600", - "default.handlebars->41->1480", - "default.handlebars->41->1485", - "default.handlebars->41->1487" + "default.handlebars->41->1482", + "default.handlebars->41->1487", + "default.handlebars->41->1489" ] }, { @@ -12274,7 +12274,7 @@ "zh-cht": "容量/速度", "xloc": [ "default-mobile.handlebars->11->591", - "default.handlebars->41->1478" + "default.handlebars->41->1480" ] }, { @@ -12299,7 +12299,7 @@ "zh-chs": "加泰罗尼亚文", "zh-cht": "加泰羅尼亞文", "xloc": [ - "default.handlebars->41->1573" + "default.handlebars->41->1575" ] }, { @@ -12324,7 +12324,7 @@ "zh-chs": "在这里为中心显示地图", "zh-cht": "在這裡為中心顯示地圖", "xloc": [ - "default.handlebars->41->762" + "default.handlebars->41->763" ] }, { @@ -12396,7 +12396,7 @@ "zh-chs": "查莫罗", "zh-cht": "查莫羅", "xloc": [ - "default.handlebars->41->1574" + "default.handlebars->41->1576" ] }, { @@ -12448,7 +12448,7 @@ "zh-chs": "更改{0}的电邮", "zh-cht": "更改{0}的電郵", "xloc": [ - "default.handlebars->41->2692" + "default.handlebars->41->2694" ] }, { @@ -12473,9 +12473,9 @@ "zh-chs": "更改组", "zh-cht": "更改群", "xloc": [ - "default.handlebars->41->1151", - "default.handlebars->41->1152", - "default.handlebars->41->913" + "default.handlebars->41->1153", + "default.handlebars->41->1154", + "default.handlebars->41->914" ] }, { @@ -12501,8 +12501,8 @@ "zh-cht": "更改密碼", "xloc": [ "default-mobile.handlebars->11->121", - "default.handlebars->41->1790", - "default.handlebars->41->2665" + "default.handlebars->41->1792", + "default.handlebars->41->2667" ] }, { @@ -12527,7 +12527,7 @@ "zh-chs": "更改{0}的密码", "zh-cht": "更改{0}的密碼", "xloc": [ - "default.handlebars->41->2701" + "default.handlebars->41->2703" ] }, { @@ -12552,7 +12552,7 @@ "zh-chs": "更改{0}的真实名称", "zh-cht": "更改{0}的真實名稱", "xloc": [ - "default.handlebars->41->2687" + "default.handlebars->41->2689" ] }, { @@ -12699,7 +12699,7 @@ "zh-chs": "更改该用户的密码", "zh-cht": "更改該用戶的密碼", "xloc": [ - "default.handlebars->41->2664" + "default.handlebars->41->2666" ] }, { @@ -12749,7 +12749,7 @@ "zh-chs": "在此处更改您的帐户电邮地址。", "zh-cht": "在此處更改你的帳戶電郵地址。", "xloc": [ - "default.handlebars->41->1777" + "default.handlebars->41->1779" ] }, { @@ -12774,7 +12774,7 @@ "zh-chs": "在下面的框中两次输入旧密码和新密码,以更改帐户密码。", "zh-cht": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。", "xloc": [ - "default.handlebars->41->1783" + "default.handlebars->41->1785" ] }, { @@ -12799,7 +12799,7 @@ "zh-chs": "更改帐户凭据", "zh-cht": "帳戶憑證已更改", "xloc": [ - "default.handlebars->41->2277" + "default.handlebars->41->2279" ] }, { @@ -12819,7 +12819,7 @@ "ru": "Изменено отображаемое имя учетной записи на {0}.", "tr": "Hesap görünen adı {0} olarak değiştirildi.", "xloc": [ - "default.handlebars->41->2329" + "default.handlebars->41->2331" ] }, { @@ -12844,8 +12844,8 @@ "zh-chs": "{1}组中的设备{0}已更改:{2}", "zh-cht": "{1}組中的設備{0}已更改:{2}", "xloc": [ - "default.handlebars->41->2261", - "default.handlebars->41->2342" + "default.handlebars->41->2263", + "default.handlebars->41->2344" ] }, { @@ -12870,7 +12870,7 @@ "zh-chs": "语言从{1}更改为{2}", "zh-cht": "語言從{1}更改為{2}", "xloc": [ - "default.handlebars->41->2205" + "default.handlebars->41->2207" ] }, { @@ -12895,8 +12895,8 @@ "zh-chs": "已更改{0}的用户设备权限", "zh-cht": "已更改{0}的用戶設備權限", "xloc": [ - "default.handlebars->41->2263", - "default.handlebars->41->2284" + "default.handlebars->41->2265", + "default.handlebars->41->2286" ] }, { @@ -12942,7 +12942,7 @@ "zh-chs": "更改语言将需要刷新页面。", "zh-cht": "更改語言將需要刷新頁面。", "xloc": [ - "default.handlebars->41->1741" + "default.handlebars->41->1743" ] }, { @@ -12967,12 +12967,12 @@ "zh-chs": "聊天", "zh-cht": "聊天", "xloc": [ - "default.handlebars->41->1012", - "default.handlebars->41->1034", - "default.handlebars->41->2398", - "default.handlebars->41->2660", - "default.handlebars->41->2661", - "default.handlebars->41->902" + "default.handlebars->41->1013", + "default.handlebars->41->1035", + "default.handlebars->41->2400", + "default.handlebars->41->2662", + "default.handlebars->41->2663", + "default.handlebars->41->903" ] }, { @@ -12999,8 +12999,8 @@ "xloc": [ "default-mobile.handlebars->11->673", "default-mobile.handlebars->11->693", - "default.handlebars->41->2052", - "default.handlebars->41->2089" + "default.handlebars->41->2054", + "default.handlebars->41->2091" ] }, { @@ -13025,7 +13025,7 @@ "zh-chs": "聊天请求,点击这里接受。", "xloc": [ "default-mobile.handlebars->11->725", - "default.handlebars->41->2878" + "default.handlebars->41->2880" ] }, { @@ -13075,7 +13075,7 @@ "zh-chs": "车臣", "zh-cht": "車臣", "xloc": [ - "default.handlebars->41->1575" + "default.handlebars->41->1577" ] }, { @@ -13200,8 +13200,8 @@ "zh-chs": "检查...", "zh-cht": "檢查...", "xloc": [ - "default.handlebars->41->1541", - "default.handlebars->41->2993" + "default.handlebars->41->1543", + "default.handlebars->41->2995" ] }, { @@ -13226,7 +13226,7 @@ "zh-chs": "中文", "zh-cht": "中文", "xloc": [ - "default.handlebars->41->1576" + "default.handlebars->41->1578" ] }, { @@ -13251,7 +13251,7 @@ "zh-chs": "中文(香港)", "zh-cht": "中文(香港)", "xloc": [ - "default.handlebars->41->1577" + "default.handlebars->41->1579" ] }, { @@ -13276,7 +13276,7 @@ "zh-chs": "中文(中国)", "zh-cht": "中文(中國)", "xloc": [ - "default.handlebars->41->1578" + "default.handlebars->41->1580" ] }, { @@ -13301,7 +13301,7 @@ "zh-chs": "简体中文", "zh-cht": "簡體中文", "xloc": [ - "default.handlebars->41->1738" + "default.handlebars->41->1740" ] }, { @@ -13326,7 +13326,7 @@ "zh-chs": "中文(新加坡)", "zh-cht": "中文(新加坡)", "xloc": [ - "default.handlebars->41->1579" + "default.handlebars->41->1581" ] }, { @@ -13351,7 +13351,7 @@ "zh-chs": "中文(台湾)", "zh-cht": "中文(台灣)", "xloc": [ - "default.handlebars->41->1580" + "default.handlebars->41->1582" ] }, { @@ -13376,7 +13376,7 @@ "zh-chs": "繁体中文", "zh-cht": "繁體中文", "xloc": [ - "default.handlebars->41->1739" + "default.handlebars->41->1741" ] }, { @@ -13427,7 +13427,7 @@ "zh-chs": "楚瓦什", "zh-cht": "楚瓦什", "xloc": [ - "default.handlebars->41->1581" + "default.handlebars->41->1583" ] }, { @@ -13481,11 +13481,11 @@ "default-mobile.handlebars->11->501", "default-mobile.handlebars->11->78", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->5", - "default.handlebars->41->1379", "default.handlebars->41->1381", "default.handlebars->41->1383", "default.handlebars->41->1385", - "default.handlebars->41->2199", + "default.handlebars->41->1387", + "default.handlebars->41->2201", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7", "default.handlebars->container->column_l->p41->3->1", "messenger.handlebars->xbottom->1->1->0->5", @@ -13517,7 +13517,7 @@ "zh-chs": "清除 RDP 凭据?", "xloc": [ "default-mobile.handlebars->11->399", - "default.handlebars->41->1195" + "default.handlebars->41->1197" ] }, { @@ -13542,7 +13542,7 @@ "zh-chs": "清除 SSH 凭据?", "xloc": [ "default-mobile.handlebars->11->397", - "default.handlebars->41->1193" + "default.handlebars->41->1195" ] }, { @@ -13642,7 +13642,7 @@ "zh-cht": "全部清除", "xloc": [ "default-mobile.handlebars->11->708", - "default.handlebars->41->2861" + "default.handlebars->41->2863" ] }, { @@ -13694,7 +13694,7 @@ "zh-cht": "清除核心", "xloc": [ "default-mobile.handlebars->11->614", - "default.handlebars->41->1502" + "default.handlebars->41->1504" ] }, { @@ -13745,7 +13745,7 @@ "zh-cht": "清除此通知", "xloc": [ "default-mobile.handlebars->11->707", - "default.handlebars->41->2860" + "default.handlebars->41->2862" ] }, { @@ -13831,8 +13831,8 @@ "zh-chs": "单击此处编辑设备组名称", "zh-cht": "單擊此處編輯裝置群名稱", "xloc": [ - "default.handlebars->41->1855", - "default.handlebars->41->2144" + "default.handlebars->41->1857", + "default.handlebars->41->2146" ] }, { @@ -13857,7 +13857,7 @@ "zh-chs": "单击此处编辑服务器端设备名称", "zh-cht": "單擊此處編輯伺服器端裝置名稱", "xloc": [ - "default.handlebars->41->778" + "default.handlebars->41->779" ] }, { @@ -13882,7 +13882,7 @@ "zh-chs": "单击此处编辑用户组名称", "zh-cht": "單擊此處編輯用戶群名稱", "xloc": [ - "default.handlebars->41->2519" + "default.handlebars->41->2521" ] }, { @@ -14005,7 +14005,7 @@ "zh-cht": "單擊確定將驗證電郵發送到:", "xloc": [ "default-mobile.handlebars->11->106", - "default.handlebars->41->1774" + "default.handlebars->41->1776" ] }, { @@ -14099,7 +14099,7 @@ "zh-cht": "客戶端控制模式(CCM)", "xloc": [ "default-mobile.handlebars->11->568", - "default.handlebars->41->1455" + "default.handlebars->41->1457" ] }, { @@ -14124,7 +14124,7 @@ "zh-chs": "客户编号", "zh-cht": "客戶編號", "xloc": [ - "default.handlebars->41->1837" + "default.handlebars->41->1839" ] }, { @@ -14149,7 +14149,7 @@ "zh-chs": "客户端启动的远程访问", "zh-cht": "客戶端啟動的遠程訪問", "xloc": [ - "default.handlebars->41->1980" + "default.handlebars->41->1982" ] }, { @@ -14174,7 +14174,7 @@ "zh-chs": "客户机密", "zh-cht": "客戶機密", "xloc": [ - "default.handlebars->41->1838" + "default.handlebars->41->1840" ] }, { @@ -14227,11 +14227,11 @@ "xloc": [ "agent-translations.json", "default-mobile.handlebars->11->76", - "default.handlebars->41->1296", - "default.handlebars->41->1355", + "default.handlebars->41->1298", + "default.handlebars->41->1357", "default.handlebars->41->217", "default.handlebars->41->225", - "default.handlebars->41->2987", + "default.handlebars->41->2989", "sharing.handlebars->11->52" ] }, @@ -14243,7 +14243,7 @@ "pt-br": "Sessão \\\"{0}\\\" multiplex de área de trabalho fechada, {1} segundo(s)", "ru": "Завершился сеанс мультиплексирования рабочего стола \\\"{0}\\\", {1} сек.", "xloc": [ - "default.handlebars->41->2349" + "default.handlebars->41->2351" ] }, { @@ -14268,7 +14268,7 @@ "zh-chs": "封闭式桌面多路复用会话,{0}秒", "zh-cht": "封閉式桌面多路復用會話,{0}秒", "xloc": [ - "default.handlebars->41->2210" + "default.handlebars->41->2212" ] }, { @@ -14443,9 +14443,9 @@ "zh-cht": "指令", "xloc": [ "default-mobile.handlebars->11->695", - "default.handlebars->41->1014", - "default.handlebars->41->1036", - "default.handlebars->41->2091" + "default.handlebars->41->1015", + "default.handlebars->41->1037", + "default.handlebars->41->2093" ] }, { @@ -14470,8 +14470,8 @@ "zh-chs": "通用设备组", "zh-cht": "通用裝置群", "xloc": [ - "default.handlebars->41->2553", - "default.handlebars->41->2706" + "default.handlebars->41->2555", + "default.handlebars->41->2708" ] }, { @@ -14496,8 +14496,8 @@ "zh-chs": "通用设备", "zh-cht": "通用裝置", "xloc": [ - "default.handlebars->41->2559", - "default.handlebars->41->2718" + "default.handlebars->41->2561", + "default.handlebars->41->2720" ] }, { @@ -14522,7 +14522,7 @@ "zh-chs": "编译时间", "xloc": [ "default-mobile.handlebars->11->541", - "default.handlebars->41->1418" + "default.handlebars->41->1420" ] }, { @@ -14568,7 +14568,7 @@ "zh-chs": "压缩档案...", "zh-cht": "壓縮檔案...", "xloc": [ - "default.handlebars->41->1350", + "default.handlebars->41->1352", "sharing.handlebars->11->47" ] }, @@ -14617,13 +14617,13 @@ "xloc": [ "default-mobile.handlebars->11->394", "default-mobile.handlebars->11->645", - "default.handlebars->41->1146", - "default.handlebars->41->1155", - "default.handlebars->41->1991", - "default.handlebars->41->2427", - "default.handlebars->41->2509", - "default.handlebars->41->2575", - "default.handlebars->41->2704", + "default.handlebars->41->1148", + "default.handlebars->41->1157", + "default.handlebars->41->1993", + "default.handlebars->41->2429", + "default.handlebars->41->2511", + "default.handlebars->41->2577", + "default.handlebars->41->2706", "default.handlebars->41->666" ] }, @@ -14671,7 +14671,7 @@ "zh-cht": "確認將1個副本複製到此位置?", "xloc": [ "default-mobile.handlebars->11->490", - "default.handlebars->41->1374", + "default.handlebars->41->1376", "sharing.handlebars->11->70" ] }, @@ -14697,7 +14697,7 @@ "zh-chs": "确认{0}个条目的复制到此位置?", "zh-cht": "確認{0}個條目的複製到此位置?", "xloc": [ - "default.handlebars->41->1373", + "default.handlebars->41->1375", "sharing.handlebars->11->69" ] }, @@ -14748,7 +14748,7 @@ "zh-chs": "确认删除选定的帐户?", "zh-cht": "確認刪除所選帳戶?", "xloc": [ - "default.handlebars->41->2426" + "default.handlebars->41->2428" ] }, { @@ -14795,7 +14795,7 @@ "zh-chs": "确认删除选定的用户组?", "zh-cht": "確認刪除所選用戶群?", "xloc": [ - "default.handlebars->41->2508" + "default.handlebars->41->2510" ] }, { @@ -14820,7 +14820,7 @@ "zh-chs": "确认删除用户{0}?", "zh-cht": "確認刪除用戶{0}?", "xloc": [ - "default.handlebars->41->2703" + "default.handlebars->41->2705" ] }, { @@ -14845,7 +14845,7 @@ "zh-chs": "确认删除用户“ {0} ”的成员身份?", "zh-cht": "確認刪除用戶“ {0} ”的成員身份?", "xloc": [ - "default.handlebars->41->2578" + "default.handlebars->41->2580" ] }, { @@ -14870,7 +14870,7 @@ "zh-chs": "确认删除用户组“ {0} ”的成员身份?", "zh-cht": "確認刪除用戶群“ {0} ”的成員身份?", "xloc": [ - "default.handlebars->41->2735" + "default.handlebars->41->2737" ] }, { @@ -14896,7 +14896,7 @@ "zh-cht": "確認將1個條目移動到此位置?", "xloc": [ "default-mobile.handlebars->11->492", - "default.handlebars->41->1376", + "default.handlebars->41->1378", "sharing.handlebars->11->72" ] }, @@ -14922,7 +14922,7 @@ "zh-chs": "确认将{0}个条目移到此位置?", "zh-cht": "確認將{0}個條目移到該位置?", "xloc": [ - "default.handlebars->41->1375", + "default.handlebars->41->1377", "sharing.handlebars->11->71" ] }, @@ -14973,7 +14973,7 @@ "zh-chs": "确认覆盖?", "zh-cht": "確認覆蓋?", "xloc": [ - "default.handlebars->41->2193" + "default.handlebars->41->2195" ] }, { @@ -14998,8 +14998,8 @@ "zh-chs": "确认删除设备“ {0} ”的访问权限?", "zh-cht": "確認刪除裝置“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2568", - "default.handlebars->41->2726" + "default.handlebars->41->2570", + "default.handlebars->41->2728" ] }, { @@ -15024,8 +15024,8 @@ "zh-chs": "确认删除设备组“ {0} ”的访问权限?", "zh-cht": "確認刪除裝置群“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2570", - "default.handlebars->41->2739" + "default.handlebars->41->2572", + "default.handlebars->41->2741" ] }, { @@ -15050,7 +15050,7 @@ "zh-chs": "确认删除用户“ {0} ”的访问权限?", "zh-cht": "確認刪除用戶“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2728" + "default.handlebars->41->2730" ] }, { @@ -15075,7 +15075,7 @@ "zh-chs": "确认删除用户组“ {0} ”的访问权限?", "zh-cht": "確認刪除用戶群“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2731" + "default.handlebars->41->2733" ] }, { @@ -15100,8 +15100,8 @@ "zh-chs": "确认删除访问权限?", "zh-cht": "確認刪除訪問權限?", "xloc": [ - "default.handlebars->41->2729", - "default.handlebars->41->2732" + "default.handlebars->41->2731", + "default.handlebars->41->2734" ] }, { @@ -15127,7 +15127,7 @@ "zh-cht": "確認刪除身份驗證軟體兩步登入?", "xloc": [ "default-mobile.handlebars->11->105", - "default.handlebars->41->1524" + "default.handlebars->41->1526" ] }, { @@ -15174,7 +15174,7 @@ "zh-chs": "确认删除设备共享“{0}”?", "zh-cht": "確認刪除設備共享“{0}”?", "xloc": [ - "default.handlebars->41->2724" + "default.handlebars->41->2726" ] }, { @@ -15242,7 +15242,7 @@ "tr": "Push kimlik doğrulama cihazının kaldırılması onaylansın mı?", "zh-chs": "确认移除推送认证设备?", "xloc": [ - "default.handlebars->41->1526" + "default.handlebars->41->1528" ] }, { @@ -15267,7 +15267,7 @@ "zh-chs": "确认删除用户“ {0} ”的权限?", "zh-cht": "確認刪除用戶“ {0} ”的權限?", "xloc": [ - "default.handlebars->41->2102" + "default.handlebars->41->2104" ] }, { @@ -15292,7 +15292,7 @@ "zh-chs": "确认删除用户组“ {0} ”的权限?", "zh-cht": "確認刪除用戶群“ {0} ”的權限?", "xloc": [ - "default.handlebars->41->2104" + "default.handlebars->41->2106" ] }, { @@ -15340,7 +15340,7 @@ "tr": "Bu giriş belirtecinin kaldırılması onaylansın mı?", "zh-chs": "确认删除此登录令牌?", "xloc": [ - "default.handlebars->41->1830" + "default.handlebars->41->1832" ] }, { @@ -15437,7 +15437,7 @@ "zh-cht": "將{1}入口{2}中的{0}限製到此位置?", "xloc": [ "default-mobile.handlebars->11->158", - "default.handlebars->41->2194" + "default.handlebars->41->2196" ] }, { @@ -15466,8 +15466,8 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2span", - "default.handlebars->41->1893", - "default.handlebars->41->861", + "default.handlebars->41->1895", + "default.handlebars->41->862", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3", @@ -15549,7 +15549,7 @@ "zh-chs": "连接到服务器", "zh-cht": "連接到伺服器", "xloc": [ - "default.handlebars->41->1984" + "default.handlebars->41->1986" ] }, { @@ -15727,7 +15727,7 @@ "zh-chs": "已连接的英特尔®AMT", "zh-cht": "已連接的Intel® AMT", "xloc": [ - "default.handlebars->41->2915" + "default.handlebars->41->2917" ] }, { @@ -15752,7 +15752,7 @@ "zh-chs": "已连接的用户", "zh-cht": "已连接的用户", "xloc": [ - "default.handlebars->41->2920" + "default.handlebars->41->2922" ] }, { @@ -15799,7 +15799,7 @@ "zh-cht": "現在已連接", "xloc": [ "default-mobile.handlebars->11->536", - "default.handlebars->41->1413" + "default.handlebars->41->1415" ] }, { @@ -15914,7 +15914,7 @@ "default-mobile.handlebars->11->2", "default-mobile.handlebars->11->48", "default-mobile.handlebars->11->508", - "default.handlebars->41->1399", + "default.handlebars->41->1401", "default.handlebars->41->363", "default.handlebars->41->366", "default.handlebars->41->431", @@ -15968,7 +15968,7 @@ "zh-chs": "连接数量", "zh-cht": "連接數量", "xloc": [ - "default.handlebars->41->2946" + "default.handlebars->41->2948" ] }, { @@ -15993,8 +15993,8 @@ "zh-chs": "连接错误", "xloc": [ "default-mobile.handlebars->11->471", - "default.handlebars->41->1329", - "default.handlebars->41->1346", + "default.handlebars->41->1331", + "default.handlebars->41->1348", "login2.handlebars->7->32" ] }, @@ -16020,7 +16020,7 @@ "zh-chs": "连接转发器", "zh-cht": "連接轉發器", "xloc": [ - "default.handlebars->41->2981" + "default.handlebars->41->2983" ] }, { @@ -16096,9 +16096,9 @@ "zh-cht": "連接性", "xloc": [ "default-mobile.handlebars->11->318", - "default.handlebars->41->2151", + "default.handlebars->41->2153", "default.handlebars->41->353", - "default.handlebars->41->878", + "default.handlebars->41->879", "default.handlebars->container->column_l->p21->p21main->1->1->meshConnChartDiv->1" ] }, @@ -16119,7 +16119,7 @@ "ru": "Согласие", "tr": "Onay", "xloc": [ - "default.handlebars->41->2359" + "default.handlebars->41->2361" ] }, { @@ -16145,8 +16145,8 @@ "zh-cht": "控制台", "xloc": [ "default-mobile.handlebars->11->356", - "default.handlebars->41->1007", - "default.handlebars->41->1029", + "default.handlebars->41->1008", + "default.handlebars->41->1030", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole", "default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole", "default.handlebars->contextMenu->cxconsole" @@ -16174,7 +16174,7 @@ "zh-chs": "控制台 -", "zh-cht": "控制台 -", "xloc": [ - "default.handlebars->41->779" + "default.handlebars->41->780" ] }, { @@ -16199,8 +16199,8 @@ "zh-chs": "控制", "zh-cht": "控制", "xloc": [ - "default.handlebars->41->1006", - "default.handlebars->41->1028", + "default.handlebars->41->1007", + "default.handlebars->41->1029", "messenger.handlebars->remoteImage->3->2" ] }, @@ -16251,7 +16251,7 @@ "zh-chs": "Cookie编码器", "zh-cht": "Cookie編碼器", "xloc": [ - "default.handlebars->41->2965" + "default.handlebars->41->2967" ] }, { @@ -16470,8 +16470,8 @@ "zh-chs": "复制连结到剪贴板", "zh-cht": "複製連結到剪貼板", "xloc": [ - "default.handlebars->41->2162", - "default.handlebars->41->2181", + "default.handlebars->41->2164", + "default.handlebars->41->2183", "default.handlebars->41->295", "default.handlebars->41->317", "default.handlebars->41->319", @@ -16603,7 +16603,7 @@ "zh-chs": "复制:“{0}”到“{1}”", "zh-cht": "複製:“{0}”到“{1}”", "xloc": [ - "default.handlebars->41->2253" + "default.handlebars->41->2255" ] }, { @@ -16784,7 +16784,7 @@ "zh-chs": "核心服务器", "zh-cht": "核心伺服器", "xloc": [ - "default.handlebars->41->2964" + "default.handlebars->41->2966" ] }, { @@ -16809,7 +16809,7 @@ "zh-chs": "科西嘉文", "zh-cht": "科西嘉文", "xloc": [ - "default.handlebars->41->1582" + "default.handlebars->41->1584" ] }, { @@ -16855,7 +16855,7 @@ "zh-chs": "创建帐号", "zh-cht": "創建帳號", "xloc": [ - "default.handlebars->41->2476", + "default.handlebars->41->2478", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1", "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1", "login2.handlebars->centralTable->1->0->logincell->createpanel->createpanelform->9->1->12->1->1" @@ -16928,7 +16928,7 @@ "tr": "Giriş Simgesi Oluştur", "zh-chs": "创建登录令牌", "xloc": [ - "default.handlebars->41->1767", + "default.handlebars->41->1769", "default.handlebars->41->320" ] }, @@ -16954,7 +16954,7 @@ "zh-chs": "创建用户组", "zh-cht": "創建用戶群", "xloc": [ - "default.handlebars->41->2516" + "default.handlebars->41->2518" ] }, { @@ -16979,7 +16979,7 @@ "zh-chs": "创建连结以与访客共享此设备", "zh-cht": "創建鏈結以與訪客共享此裝置", "xloc": [ - "default.handlebars->41->905" + "default.handlebars->41->906" ] }, { @@ -17004,7 +17004,7 @@ "zh-chs": "使用以下选项创建一个新的设备组。", "zh-cht": "使用以下選項創建一個新的裝置群。", "xloc": [ - "default.handlebars->41->1797" + "default.handlebars->41->1799" ] }, { @@ -17053,7 +17053,7 @@ "tr": "Hesabınıza alternatif giriş olarak kullanılabilecek geçici bir kullanıcı adı ve şifre oluşturun. Bu, araçların veya diğer hizmetlerin hesabınıza erişmesine izin vermek için kullanışlıdır.", "zh-chs": "创建一个临时用户名和密码,可用作您帐户的替代登录名。这对于允许工具或其他服务访问您的帐户非常有用。", "xloc": [ - "default.handlebars->41->1747" + "default.handlebars->41->1749" ] }, { @@ -17103,7 +17103,7 @@ "zh-chs": "创建文件夹:“{0}”", "zh-cht": "創建文件夾:“{0}”", "xloc": [ - "default.handlebars->41->2246" + "default.handlebars->41->2248" ] }, { @@ -17152,7 +17152,7 @@ "zh-chs": "通过导入以下格式的JSON档案一次创建多个帐户:", "zh-cht": "通過導入以下格式的JSON檔案一次創建多個帳戶:", "xloc": [ - "default.handlebars->41->2440" + "default.handlebars->41->2442" ] }, { @@ -17204,7 +17204,7 @@ "zh-chs": "创建的设备组:{0}", "zh-cht": "創建的設備組:{0}", "xloc": [ - "default.handlebars->41->2257" + "default.handlebars->41->2259" ] }, { @@ -17229,7 +17229,7 @@ "zh-chs": "创建一个链接,该链接允许没有帐户的访客在有限的时间内远程控制此设备。", "zh-cht": "創建一個鏈接,該鏈接允許沒有帳戶的訪客在有限的時間內遠程控制此設備。", "xloc": [ - "default.handlebars->41->1052" + "default.handlebars->41->1054" ] }, { @@ -17298,7 +17298,7 @@ "zh-chs": "创建", "zh-cht": "創建", "xloc": [ - "default.handlebars->41->2620" + "default.handlebars->41->2622" ] }, { @@ -17323,7 +17323,7 @@ "zh-chs": "创建时间", "zh-cht": "創作時間", "xloc": [ - "default.handlebars->41->1873" + "default.handlebars->41->1875" ] }, { @@ -17375,8 +17375,8 @@ "zh-chs": "创建者", "zh-cht": "創作者", "xloc": [ - "default.handlebars->41->1871", - "default.handlebars->41->1872" + "default.handlebars->41->1873", + "default.handlebars->41->1874" ] }, { @@ -17402,9 +17402,9 @@ "zh-cht": "證書", "xloc": [ "default-mobile.handlebars->11->330", - "default.handlebars->41->1218", - "default.handlebars->41->1835", - "default.handlebars->41->890" + "default.handlebars->41->1220", + "default.handlebars->41->1837", + "default.handlebars->41->891" ] }, { @@ -17429,7 +17429,7 @@ "zh-chs": "克里语", "zh-cht": "克里語", "xloc": [ - "default.handlebars->41->1583" + "default.handlebars->41->1585" ] }, { @@ -17454,7 +17454,7 @@ "zh-chs": "克罗地亚文", "zh-cht": "克羅地亞文", "xloc": [ - "default.handlebars->41->1584" + "default.handlebars->41->1586" ] }, { @@ -17533,8 +17533,8 @@ "xloc": [ "default-mobile.handlebars->11->432", "default-mobile.handlebars->11->436", - "default.handlebars->41->1259", - "default.handlebars->41->1263", + "default.handlebars->41->1261", + "default.handlebars->41->1265", "default.handlebars->41->60", "sharing.handlebars->11->24" ] @@ -17709,7 +17709,7 @@ "zh-chs": "当前密码不正确。", "xloc": [ "default-mobile.handlebars->11->735", - "default.handlebars->41->2888" + "default.handlebars->41->2890" ] }, { @@ -17812,7 +17812,7 @@ "zh-chs": "捷克文", "zh-cht": "捷克文", "xloc": [ - "default.handlebars->41->1585" + "default.handlebars->41->1587" ] }, { @@ -17882,7 +17882,7 @@ "zh-chs": "丹麦文", "zh-cht": "丹麥文", "xloc": [ - "default.handlebars->41->1586" + "default.handlebars->41->1588" ] }, { @@ -17932,7 +17932,7 @@ "zh-chs": "数据通道", "zh-cht": "數據通道", "xloc": [ - "default.handlebars->41->1216", + "default.handlebars->41->1218", "sharing.handlebars->11->11" ] }, @@ -17958,7 +17958,7 @@ "zh-chs": "日期和时间", "zh-cht": "日期和時間", "xloc": [ - "default.handlebars->41->1744" + "default.handlebars->41->1746" ] }, { @@ -17984,9 +17984,9 @@ "zh-cht": "天", "xloc": [ "default-mobile.handlebars->11->384", - "default.handlebars->41->1130", - "default.handlebars->41->2785", - "default.handlebars->41->2788" + "default.handlebars->41->1132", + "default.handlebars->41->2787", + "default.handlebars->41->2790" ] }, { @@ -18011,8 +18011,8 @@ "zh-chs": "停用", "zh-cht": "停用", "xloc": [ - "default.handlebars->41->1903", - "default.handlebars->41->1963" + "default.handlebars->41->1905", + "default.handlebars->41->1965" ] }, { @@ -18037,7 +18037,7 @@ "zh-chs": "如果设置停用CCM", "zh-cht": "如果設置停用CCM", "xloc": [ - "default.handlebars->41->1975" + "default.handlebars->41->1977" ] }, { @@ -18110,10 +18110,10 @@ "zh-chs": "默认", "zh-cht": "默認", "xloc": [ - "default.handlebars->41->2463", - "default.handlebars->41->2512", - "default.handlebars->41->2523", - "default.handlebars->41->2596" + "default.handlebars->41->2465", + "default.handlebars->41->2514", + "default.handlebars->41->2525", + "default.handlebars->41->2598" ] }, { @@ -18138,7 +18138,7 @@ "zh-chs": "德尔", "xloc": [ "default-mobile.handlebars->11->420", - "default.handlebars->41->1247" + "default.handlebars->41->1249" ] }, { @@ -18168,9 +18168,9 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", "default-mobile.handlebars->dialog->idx_dlgButtonBar->5", - "default.handlebars->41->1365", - "default.handlebars->41->2188", - "default.handlebars->41->749", + "default.handlebars->41->1367", + "default.handlebars->41->2190", + "default.handlebars->41->750", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->dialog->idx_dlgButtonBar->5", @@ -18206,7 +18206,7 @@ "zh-cht": "刪除帳戶", "xloc": [ "default-mobile.handlebars->11->115", - "default.handlebars->41->1782" + "default.handlebars->41->1784" ] }, { @@ -18231,7 +18231,7 @@ "zh-chs": "删除帐户", "zh-cht": "刪除帳戶", "xloc": [ - "default.handlebars->41->2428" + "default.handlebars->41->2430" ] }, { @@ -18257,7 +18257,7 @@ "zh-cht": "刪除裝置", "xloc": [ "default-mobile.handlebars->11->339", - "default.handlebars->41->915" + "default.handlebars->41->916" ] }, { @@ -18308,8 +18308,8 @@ "xloc": [ "default-mobile.handlebars->11->643", "default-mobile.handlebars->11->646", - "default.handlebars->41->1951", - "default.handlebars->41->1992" + "default.handlebars->41->1953", + "default.handlebars->41->1994" ] }, { @@ -18335,7 +18335,7 @@ "zh-cht": "刪除節點", "xloc": [ "default-mobile.handlebars->11->392", - "default.handlebars->41->1156" + "default.handlebars->41->1158" ] }, { @@ -18382,7 +18382,7 @@ "zh-chs": "删除用户", "zh-cht": "刪除用戶", "xloc": [ - "default.handlebars->41->2663" + "default.handlebars->41->2665" ] }, { @@ -18407,8 +18407,8 @@ "zh-chs": "删除用户群组", "zh-cht": "刪除用戶群組", "xloc": [ - "default.handlebars->41->2564", - "default.handlebars->41->2576" + "default.handlebars->41->2566", + "default.handlebars->41->2578" ] }, { @@ -18433,7 +18433,7 @@ "zh-chs": "删除用户群组", "zh-cht": "刪除用戶群組", "xloc": [ - "default.handlebars->41->2510" + "default.handlebars->41->2512" ] }, { @@ -18458,7 +18458,7 @@ "zh-chs": "删除用户{0}", "zh-cht": "刪除用戶{0}", "xloc": [ - "default.handlebars->41->2702" + "default.handlebars->41->2704" ] }, { @@ -18484,7 +18484,7 @@ "zh-cht": "刪除帳戶", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountActions->3->9->0", - "default.handlebars->41->2424", + "default.handlebars->41->2426", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7" ] }, @@ -18535,7 +18535,7 @@ "zh-chs": "删除群组", "zh-cht": "刪除群組", "xloc": [ - "default.handlebars->41->2506" + "default.handlebars->41->2508" ] }, { @@ -18560,7 +18560,7 @@ "zh-chs": "删除项目?", "zh-cht": "刪除項目?", "xloc": [ - "default.handlebars->41->750" + "default.handlebars->41->751" ] }, { @@ -18585,7 +18585,7 @@ "zh-chs": "递归删除:“{0}”,{1}个元素已删除", "zh-cht": "遞歸刪除:“{0}”,{1}個元素已刪除", "xloc": [ - "default.handlebars->41->2248" + "default.handlebars->41->2250" ] }, { @@ -18612,8 +18612,8 @@ "xloc": [ "default-mobile.handlebars->11->155", "default-mobile.handlebars->11->484", - "default.handlebars->41->1367", - "default.handlebars->41->2190", + "default.handlebars->41->1369", + "default.handlebars->41->2192", "sharing.handlebars->11->63" ] }, @@ -18639,7 +18639,7 @@ "zh-chs": "删除用户群组{0}?", "zh-cht": "刪除用戶群組{0}?", "xloc": [ - "default.handlebars->41->2574" + "default.handlebars->41->2576" ] }, { @@ -18666,8 +18666,8 @@ "xloc": [ "default-mobile.handlebars->11->154", "default-mobile.handlebars->11->483", - "default.handlebars->41->1366", - "default.handlebars->41->2189", + "default.handlebars->41->1368", + "default.handlebars->41->2191", "sharing.handlebars->11->62" ] }, @@ -18718,7 +18718,7 @@ "zh-chs": "删除:“{0}”", "zh-cht": "刪除:“{0}”", "xloc": [ - "default.handlebars->41->2247" + "default.handlebars->41->2249" ] }, { @@ -18743,7 +18743,7 @@ "zh-chs": "删除:“{0}”,{1}个元素已删除", "zh-cht": "刪除:“{0}”,已刪除{1}個元素", "xloc": [ - "default.handlebars->41->2249" + "default.handlebars->41->2251" ] }, { @@ -18769,7 +18769,7 @@ "zh-cht": "被拒絕", "xloc": [ "default-mobile.handlebars->11->407", - "default.handlebars->41->1203", + "default.handlebars->41->1205", "sharing.handlebars->11->29", "sharing.handlebars->11->7" ] @@ -18914,20 +18914,20 @@ "default-mobile.handlebars->11->549", "default-mobile.handlebars->11->629", "default-mobile.handlebars->11->652", - "default.handlebars->41->1198", - "default.handlebars->41->1426", - "default.handlebars->41->1436", + "default.handlebars->41->1200", + "default.handlebars->41->1428", + "default.handlebars->41->1438", "default.handlebars->41->149", - "default.handlebars->41->1807", - "default.handlebars->41->1864", - "default.handlebars->41->1998", - "default.handlebars->41->2357", - "default.handlebars->41->2515", - "default.handlebars->41->2525", - "default.handlebars->41->2526", - "default.handlebars->41->2572", - "default.handlebars->41->790", + "default.handlebars->41->1809", + "default.handlebars->41->1866", + "default.handlebars->41->2000", + "default.handlebars->41->2359", + "default.handlebars->41->2517", + "default.handlebars->41->2527", + "default.handlebars->41->2528", + "default.handlebars->41->2574", "default.handlebars->41->791", + "default.handlebars->41->792", "default.handlebars->container->column_l->p42->p42tbl->1->0->3" ] }, @@ -18976,16 +18976,16 @@ "zh-cht": "桌面", "xloc": [ "default-mobile.handlebars->11->352", - "default.handlebars->41->1054", - "default.handlebars->41->1302", - "default.handlebars->41->1931", - "default.handlebars->41->2004", - "default.handlebars->41->2759", - "default.handlebars->41->2818", - "default.handlebars->41->2849", - "default.handlebars->41->2940", - "default.handlebars->41->755", - "default.handlebars->41->970", + "default.handlebars->41->1056", + "default.handlebars->41->1304", + "default.handlebars->41->1933", + "default.handlebars->41->2006", + "default.handlebars->41->2761", + "default.handlebars->41->2820", + "default.handlebars->41->2851", + "default.handlebars->41->2942", + "default.handlebars->41->756", + "default.handlebars->41->971", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop", "default.handlebars->contextMenu->cxdesktop", "sharing.handlebars->11->23", @@ -19013,9 +19013,9 @@ "tr": "Masaüstü + Dosyalar", "zh-chs": "桌面 + 文件", "xloc": [ - "default.handlebars->41->1057", - "default.handlebars->41->1935", - "default.handlebars->41->974" + "default.handlebars->41->1059", + "default.handlebars->41->1937", + "default.handlebars->41->975" ] }, { @@ -19039,8 +19039,8 @@ "tr": "Masaüstü + Terminal", "zh-chs": "桌面 + 终端", "xloc": [ - "default.handlebars->41->1932", - "default.handlebars->41->971" + "default.handlebars->41->1934", + "default.handlebars->41->972" ] }, { @@ -19064,9 +19064,9 @@ "tr": "Masaüstü + Terminal + Dosyalar", "zh-chs": "桌面 + 终端 + 文件", "xloc": [ - "default.handlebars->41->1059", - "default.handlebars->41->1936", - "default.handlebars->41->975" + "default.handlebars->41->1061", + "default.handlebars->41->1938", + "default.handlebars->41->976" ] }, { @@ -19115,7 +19115,7 @@ "tr": "Masaüstü Multiplex", "zh-chs": "桌面复用", "xloc": [ - "default.handlebars->41->2945" + "default.handlebars->41->2947" ] }, { @@ -19140,10 +19140,10 @@ "zh-chs": "桌面通知", "zh-cht": "桌面通知", "xloc": [ - "default.handlebars->41->1884", - "default.handlebars->41->2533", - "default.handlebars->41->2635", - "default.handlebars->41->852" + "default.handlebars->41->1886", + "default.handlebars->41->2535", + "default.handlebars->41->2637", + "default.handlebars->41->853" ] }, { @@ -19168,10 +19168,10 @@ "zh-chs": "桌面提示", "zh-cht": "桌面提示", "xloc": [ - "default.handlebars->41->1883", - "default.handlebars->41->2532", - "default.handlebars->41->2634", - "default.handlebars->41->851" + "default.handlebars->41->1885", + "default.handlebars->41->2534", + "default.handlebars->41->2636", + "default.handlebars->41->852" ] }, { @@ -19196,10 +19196,10 @@ "zh-chs": "桌面提示+工具栏", "zh-cht": "桌面提示+工具欄", "xloc": [ - "default.handlebars->41->1881", - "default.handlebars->41->2530", - "default.handlebars->41->2632", - "default.handlebars->41->849" + "default.handlebars->41->1883", + "default.handlebars->41->2532", + "default.handlebars->41->2634", + "default.handlebars->41->850" ] }, { @@ -19223,7 +19223,7 @@ "tr": "Masaüstü Oturumu", "zh-chs": "桌面会话", "xloc": [ - "default.handlebars->41->2752" + "default.handlebars->41->2754" ] }, { @@ -19321,10 +19321,10 @@ "zh-chs": "桌面工具栏", "zh-cht": "桌面工具欄", "xloc": [ - "default.handlebars->41->1882", - "default.handlebars->41->2531", - "default.handlebars->41->2633", - "default.handlebars->41->850" + "default.handlebars->41->1884", + "default.handlebars->41->2533", + "default.handlebars->41->2635", + "default.handlebars->41->851" ] }, { @@ -19348,7 +19348,7 @@ "tr": "Yalnızca Masaüstü Görünümü", "zh-chs": "仅桌面视图", "xloc": [ - "default.handlebars->41->2608" + "default.handlebars->41->2610" ] }, { @@ -19372,7 +19372,7 @@ "tr": "Masaüstü, Yalnızca görüntüleme", "zh-chs": "桌面,仅查看", "xloc": [ - "default.handlebars->41->1060" + "default.handlebars->41->1062" ] }, { @@ -19397,7 +19397,7 @@ "zh-chs": "桌面时段", "zh-cht": "桌面時段", "xloc": [ - "default.handlebars->41->1301" + "default.handlebars->41->1303" ] }, { @@ -19474,7 +19474,7 @@ "zh-cht": "細節", "xloc": [ "default-mobile.handlebars->11->355", - "default.handlebars->41->2094", + "default.handlebars->41->2096", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevInfo", "default.handlebars->contextMenu->cxdetails" ] @@ -19527,13 +19527,13 @@ "zh-cht": "裝置", "xloc": [ "default-mobile.handlebars->11->544", - "default.handlebars->41->1421", - "default.handlebars->41->1530", - "default.handlebars->41->2032", + "default.handlebars->41->1423", + "default.handlebars->41->1532", + "default.handlebars->41->2034", "default.handlebars->41->267", - "default.handlebars->41->2721", - "default.handlebars->41->2784", - "default.handlebars->41->2802", + "default.handlebars->41->2723", + "default.handlebars->41->2786", + "default.handlebars->41->2804", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5" ] }, @@ -19561,7 +19561,7 @@ "xloc": [ "default-mobile.handlebars->11->373", "default-mobile.handlebars->11->382", - "default.handlebars->41->1113" + "default.handlebars->41->1115" ] }, { @@ -19634,7 +19634,7 @@ "tr": "Cihaz Ayrıntıları", "zh-chs": "设备详情", "xloc": [ - "default.handlebars->41->2056" + "default.handlebars->41->2058" ] }, { @@ -19686,17 +19686,17 @@ "xloc": [ "agent-translations.json", "default-mobile.handlebars->11->713", - "default.handlebars->41->2027", - "default.handlebars->41->2030", - "default.handlebars->41->2031", - "default.handlebars->41->2374", - "default.handlebars->41->2556", - "default.handlebars->41->2562", - "default.handlebars->41->2709", - "default.handlebars->41->2768", - "default.handlebars->41->2791", - "default.handlebars->41->2805", - "default.handlebars->41->2866" + "default.handlebars->41->2029", + "default.handlebars->41->2032", + "default.handlebars->41->2033", + "default.handlebars->41->2376", + "default.handlebars->41->2558", + "default.handlebars->41->2564", + "default.handlebars->41->2711", + "default.handlebars->41->2770", + "default.handlebars->41->2793", + "default.handlebars->41->2807", + "default.handlebars->41->2868" ] }, { @@ -19722,7 +19722,7 @@ "zh-cht": "裝置群用戶", "xloc": [ "default-mobile.handlebars->11->702", - "default.handlebars->41->2100" + "default.handlebars->41->2102" ] }, { @@ -19748,11 +19748,11 @@ "zh-cht": "裝置群", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->3", - "default.handlebars->41->2390", - "default.handlebars->41->2500", - "default.handlebars->41->2543", - "default.handlebars->41->2629", - "default.handlebars->41->2918", + "default.handlebars->41->2392", + "default.handlebars->41->2502", + "default.handlebars->41->2545", + "default.handlebars->41->2631", + "default.handlebars->41->2920", "default.handlebars->container->column_l->p2->p2info->9" ] }, @@ -19778,7 +19778,7 @@ "zh-chs": "设备信息导出", "zh-cht": "裝置訊息輸出", "xloc": [ - "default.handlebars->41->709" + "default.handlebars->41->710" ] }, { @@ -19803,7 +19803,7 @@ "zh-chs": "设备位置", "zh-cht": "裝置位置", "xloc": [ - "default.handlebars->41->1157" + "default.handlebars->41->1159" ] }, { @@ -19828,7 +19828,7 @@ "zh-chs": "设备消息", "zh-cht": "裝置訊息", "xloc": [ - "default.handlebars->41->1044" + "default.handlebars->41->1045" ] }, { @@ -19854,8 +19854,8 @@ "zh-cht": "裝置名稱", "xloc": [ "default-mobile.handlebars->11->400", - "default.handlebars->41->1196", - "default.handlebars->41->2767", + "default.handlebars->41->1198", + "default.handlebars->41->2769", "default.handlebars->41->447", "default.handlebars->41->456", "player.handlebars->3->25" @@ -19883,7 +19883,7 @@ "zh-chs": "设备通知", "zh-cht": "裝置通知", "xloc": [ - "default.handlebars->41->1049", + "default.handlebars->41->1051", "default.handlebars->41->688" ] }, @@ -19932,7 +19932,7 @@ "tr": "Cihaz İtme", "zh-chs": "设备推送", "xloc": [ - "default.handlebars->41->2648" + "default.handlebars->41->2650" ] }, { @@ -20000,8 +20000,8 @@ "zh-chs": "设备共享链接", "zh-cht": "設備共享鏈接", "xloc": [ - "default.handlebars->41->1928", - "default.handlebars->41->967" + "default.handlebars->41->1930", + "default.handlebars->41->968" ] }, { @@ -20074,9 +20074,9 @@ "default-mobile.handlebars->11->282", "default-mobile.handlebars->11->284", "default-mobile.handlebars->11->286", - "default.handlebars->41->794", - "default.handlebars->41->796", - "default.handlebars->41->798" + "default.handlebars->41->795", + "default.handlebars->41->797", + "default.handlebars->41->799" ] }, { @@ -20125,11 +20125,11 @@ "zh-chs": "设备连接。", "zh-cht": "裝置連接。", "xloc": [ - "default.handlebars->41->1770", - "default.handlebars->41->2127", - "default.handlebars->41->2131", - "default.handlebars->41->991", - "default.handlebars->41->995" + "default.handlebars->41->1772", + "default.handlebars->41->2129", + "default.handlebars->41->2133", + "default.handlebars->41->992", + "default.handlebars->41->996" ] }, { @@ -20154,11 +20154,11 @@ "zh-chs": "设备断开连接。", "zh-cht": "裝置斷開連接。", "xloc": [ - "default.handlebars->41->1771", - "default.handlebars->41->2128", - "default.handlebars->41->2132", - "default.handlebars->41->992", - "default.handlebars->41->996" + "default.handlebars->41->1773", + "default.handlebars->41->2130", + "default.handlebars->41->2134", + "default.handlebars->41->993", + "default.handlebars->41->997" ] }, { @@ -20183,7 +20183,7 @@ "zh-chs": "创建的设备组:{0}", "zh-cht": "設備組已創建:{0}", "xloc": [ - "default.handlebars->41->2278" + "default.handlebars->41->2280" ] }, { @@ -20208,7 +20208,7 @@ "zh-chs": "设备组已删除:{0}", "zh-cht": "設備組已刪除:{0}", "xloc": [ - "default.handlebars->41->2279" + "default.handlebars->41->2281" ] }, { @@ -20233,7 +20233,7 @@ "zh-chs": "设备组成员身份已更改:{0}", "zh-cht": "設備組成員身份已更改:{0}", "xloc": [ - "default.handlebars->41->2280" + "default.handlebars->41->2282" ] }, { @@ -20259,7 +20259,7 @@ "zh-cht": "其他裝置群管理員可以查看和更改裝置群註釋。", "xloc": [ "default-mobile.handlebars->11->380", - "default.handlebars->41->1041" + "default.handlebars->41->1042" ] }, { @@ -20284,7 +20284,7 @@ "zh-chs": "设备组通知已更改", "zh-cht": "設備組通知已更改", "xloc": [ - "default.handlebars->41->2275" + "default.handlebars->41->2277" ] }, { @@ -20309,7 +20309,7 @@ "zh-chs": "未删除的设备组:{0}", "zh-cht": "未刪除的設備組:{0}", "xloc": [ - "default.handlebars->41->2258" + "default.handlebars->41->2260" ] }, { @@ -20329,7 +20329,7 @@ "ru": "Группа устройств {0} изменена: {1}", "tr": "{0} cihaz grubu değiştirildi: {1}", "xloc": [ - "default.handlebars->41->2344" + "default.handlebars->41->2346" ] }, { @@ -20338,7 +20338,7 @@ "pl": "Grupy urządzeń to urządzenie jest bramką dla", "ru": "Группы устройств, для которых это устройство является релеем", "xloc": [ - "default.handlebars->41->891" + "default.handlebars->41->892" ] }, { @@ -20366,7 +20366,7 @@ "default-mobile.handlebars->11->199", "default-mobile.handlebars->11->269", "default.handlebars->41->371", - "default.handlebars->41->776" + "default.handlebars->41->777" ] }, { @@ -20695,7 +20695,7 @@ "default-mobile.handlebars->11->198", "default-mobile.handlebars->11->268", "default.handlebars->41->370", - "default.handlebars->41->775" + "default.handlebars->41->776" ] }, { @@ -20817,7 +20817,7 @@ "zh-chs": "设备名称", "zh-cht": "裝置名稱", "xloc": [ - "default.handlebars->41->767" + "default.handlebars->41->768" ] }, { @@ -20866,7 +20866,7 @@ "tr": "Cihaz, Intel(R) AMT ACM TLS etkinleştirmesini istedi, FQDN: {0}", "zh-chs": "设备请求 Intel(R) AMT ACM TLS 激活,FQDN:{0}", "xloc": [ - "default.handlebars->41->2313" + "default.handlebars->41->2315" ] }, { @@ -20891,7 +20891,7 @@ "zh-chs": "设备请求激活Intel(R)AMT ACM,FQDN:{0}", "zh-cht": "設備請求激活Intel(R)AMT ACM,FQDN:{0}", "xloc": [ - "default.handlebars->41->2260" + "default.handlebars->41->2262" ] }, { @@ -20938,9 +20938,9 @@ "zh-chs": "设备", "zh-cht": "裝置", "xloc": [ - "default.handlebars->41->1949", - "default.handlebars->41->2501", - "default.handlebars->41->2544" + "default.handlebars->41->1951", + "default.handlebars->41->2503", + "default.handlebars->41->2546" ] }, { @@ -21048,7 +21048,7 @@ "xloc": [ "default-mobile.handlebars->11->529", "default.handlebars->41->122", - "default.handlebars->41->843" + "default.handlebars->41->844" ] }, { @@ -21073,7 +21073,7 @@ "zh-chs": "禁用的电子邮件两因素身份验证", "zh-cht": "禁用的電子郵件兩因素身份驗證", "xloc": [ - "default.handlebars->41->2291" + "default.handlebars->41->2293" ] }, { @@ -21102,8 +21102,8 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->disconnectbutton2span", - "default.handlebars->41->1894", - "default.handlebars->41->862", + "default.handlebars->41->1896", + "default.handlebars->41->863", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3", @@ -21332,7 +21332,7 @@ "zh-chs": "在远程设备上显示一个消息框。", "zh-cht": "在遠程裝置上顯示一個訊息框。", "xloc": [ - "default.handlebars->41->1045" + "default.handlebars->41->1046" ] }, { @@ -21382,7 +21382,7 @@ "zh-chs": "在远程设备上显示短信", "zh-cht": "在遠程裝置上顯示短信", "xloc": [ - "default.handlebars->41->901" + "default.handlebars->41->902" ] }, { @@ -21428,7 +21428,7 @@ "zh-chs": "显示设备组名称", "zh-cht": "顯示裝置群名稱", "xloc": [ - "default.handlebars->41->1769" + "default.handlebars->41->1771" ] }, { @@ -21453,7 +21453,7 @@ "zh-chs": "显示名称", "zh-cht": "顯示名稱", "xloc": [ - "default.handlebars->41->1285" + "default.handlebars->41->1287" ] }, { @@ -21478,7 +21478,7 @@ "zh-chs": "显示公共连结", "zh-cht": "顯示公共鏈結", "xloc": [ - "default.handlebars->41->2161" + "default.handlebars->41->2163" ] }, { @@ -21502,7 +21502,7 @@ "tr": "{0} göster", "zh-chs": "显示{0}", "xloc": [ - "default.handlebars->41->1304" + "default.handlebars->41->1306" ] }, { @@ -21527,7 +21527,7 @@ "zh-chs": "显示消息框,标题= “{0}”,消息= “{1}”", "zh-cht": "顯示消息框,標題= “{0}”,消息= “{1}”", "xloc": [ - "default.handlebars->41->2220" + "default.handlebars->41->2222" ] }, { @@ -21552,7 +21552,7 @@ "zh-chs": "显示吐司消息,标题= “{0}”,消息= “{1}”", "zh-cht": "顯示吐司消息,標題= “{0}”,消息= “{1}”", "xloc": [ - "default.handlebars->41->2228" + "default.handlebars->41->2230" ] }, { @@ -21577,8 +21577,8 @@ "zh-chs": "什么都不做", "zh-cht": "什麼都不做", "xloc": [ - "default.handlebars->41->1978", - "default.handlebars->41->1982" + "default.handlebars->41->1980", + "default.handlebars->41->1984" ] }, { @@ -21604,11 +21604,11 @@ "zh-cht": "域", "xloc": [ "default.handlebars->41->118", - "default.handlebars->41->1221", - "default.handlebars->41->2464", - "default.handlebars->41->2513", - "default.handlebars->41->2522", - "default.handlebars->41->2595", + "default.handlebars->41->1223", + "default.handlebars->41->2466", + "default.handlebars->41->2515", + "default.handlebars->41->2524", + "default.handlebars->41->2597", "mstsc.handlebars->main->1->3->1->rowdomain->1->0", "mstsc.handlebars->main->1->3->1->rowdomain->3" ] @@ -21656,7 +21656,7 @@ "zh-chs": "请勿更改,如果设置请保留CCM", "zh-cht": "請勿更改,如果設置請保留CCM", "xloc": [ - "default.handlebars->41->1974" + "default.handlebars->41->1976" ] }, { @@ -21703,7 +21703,7 @@ "zh-chs": "不要连接到服务器", "zh-cht": "不要連接到伺服器", "xloc": [ - "default.handlebars->41->1983" + "default.handlebars->41->1985" ] }, { @@ -21820,7 +21820,7 @@ "zh-chs": "下", "xloc": [ "default-mobile.handlebars->11->428", - "default.handlebars->41->1255" + "default.handlebars->41->1257" ] }, { @@ -21923,7 +21923,7 @@ "zh-cht": "下載檔案", "xloc": [ "default-mobile.handlebars->11->503", - "default.handlebars->41->1386", + "default.handlebars->41->1388", "sharing.handlebars->11->82" ] }, @@ -21974,7 +21974,7 @@ "zh-chs": "下载MeshCmd", "zh-cht": "下載MeshCmd", "xloc": [ - "default.handlebars->41->1182" + "default.handlebars->41->1184" ] }, { @@ -22049,7 +22049,7 @@ "zh-chs": "下载报告", "zh-cht": "下載報告", "xloc": [ - "default.handlebars->41->2379", + "default.handlebars->41->2381", "default.handlebars->container->column_l->p3->3->1->0->3", "default.handlebars->container->column_l->p60->3->1->0->3->1->p60downloadReportDiv" ] @@ -22076,7 +22076,7 @@ "zh-chs": "下载带有指令档案的“ meshcmd”,以通过此服务器将网络讯息发送到该设备。紧记编辑meshaction.txt并添加您的帐户密码或进行任何必要的更改。", "zh-cht": "下載帶有指令檔案的“ meshcmd”,以通過此服務器將網絡讯息發送到該裝置。緊記編輯meshaction.txt並新增你的帳戶密碼或進行任何必要的更改。", "xloc": [ - "default.handlebars->41->1175" + "default.handlebars->41->1177" ] }, { @@ -22150,7 +22150,7 @@ "tr": "Cihaz listesini indir", "zh-chs": "下载设备列表", "xloc": [ - "default.handlebars->41->1947" + "default.handlebars->41->1949" ] }, { @@ -22200,7 +22200,7 @@ "zh-chs": "下载电源事件", "zh-cht": "下載電源事件", "xloc": [ - "default.handlebars->41->1131" + "default.handlebars->41->1133" ] }, { @@ -22324,7 +22324,7 @@ "zh-chs": "使用以下一种档案格式下载设备列表。", "zh-cht": "使用以下一種檔案格式下載裝置列表。", "xloc": [ - "default.handlebars->41->701" + "default.handlebars->41->702" ] }, { @@ -22349,7 +22349,7 @@ "zh-chs": "使用以下一种档案格式下载事件列表。", "zh-cht": "使用以下一種檔案格式下載事件列表。", "xloc": [ - "default.handlebars->41->2380" + "default.handlebars->41->2382" ] }, { @@ -22374,7 +22374,7 @@ "zh-chs": "使用以下一种档案格式下载用户列表。", "zh-cht": "使用以下一種檔案格式下載用戶列表。", "xloc": [ - "default.handlebars->41->2448" + "default.handlebars->41->2450" ] }, { @@ -22475,7 +22475,7 @@ "zh-chs": "下载:“{0}”", "zh-cht": "下載:“{0}”", "xloc": [ - "default.handlebars->41->2251" + "default.handlebars->41->2253" ] }, { @@ -22499,7 +22499,7 @@ "tr": "İndirme: \\\"{0}\\\", Boyut: {1}", "zh-chs": "下载:\\\"{0}\\\",大小:{1}", "xloc": [ - "default.handlebars->41->2308" + "default.handlebars->41->2310" ] }, { @@ -22549,7 +22549,7 @@ "zh-chs": "代理重复", "zh-cht": "代理重複", "xloc": [ - "default.handlebars->41->2914" + "default.handlebars->41->2916" ] }, { @@ -22599,7 +22599,7 @@ "zh-chs": "复制用户组", "zh-cht": "複製用戶群", "xloc": [ - "default.handlebars->41->2517" + "default.handlebars->41->2519" ] }, { @@ -22646,11 +22646,11 @@ "zh-chs": "持续时间", "zh-cht": "持續時間", "xloc": [ - "default.handlebars->41->1088", + "default.handlebars->41->1090", "default.handlebars->41->273", - "default.handlebars->41->2747", + "default.handlebars->41->2749", "default.handlebars->41->275", - "default.handlebars->41->2773", + "default.handlebars->41->2775", "player.handlebars->3->18" ] }, @@ -22698,7 +22698,7 @@ "zh-chs": "荷兰文(比利时)", "zh-cht": "荷蘭文(比利時)", "xloc": [ - "default.handlebars->41->1588" + "default.handlebars->41->1590" ] }, { @@ -22723,7 +22723,7 @@ "zh-chs": "荷兰文(标准)", "zh-cht": "荷蘭文(標準)", "xloc": [ - "default.handlebars->41->1587" + "default.handlebars->41->1589" ] }, { @@ -23107,9 +23107,9 @@ "default-mobile.handlebars->11->396", "default-mobile.handlebars->11->398", "default-mobile.handlebars->11->405", - "default.handlebars->41->1192", "default.handlebars->41->1194", - "default.handlebars->41->1201" + "default.handlebars->41->1196", + "default.handlebars->41->1203" ] }, { @@ -23139,12 +23139,12 @@ "default-mobile.handlebars->11->653", "default-mobile.handlebars->11->659", "default-mobile.handlebars->11->679", - "default.handlebars->41->1993", - "default.handlebars->41->1996", - "default.handlebars->41->1999", - "default.handlebars->41->2036", - "default.handlebars->41->2062", - "default.handlebars->41->2074" + "default.handlebars->41->1995", + "default.handlebars->41->1998", + "default.handlebars->41->2001", + "default.handlebars->41->2038", + "default.handlebars->41->2064", + "default.handlebars->41->2076" ] }, { @@ -23169,7 +23169,7 @@ "zh-chs": "编辑设备组功能", "zh-cht": "編輯裝置群功能", "xloc": [ - "default.handlebars->41->2022" + "default.handlebars->41->2024" ] }, { @@ -23194,8 +23194,8 @@ "zh-chs": "编辑设备组权限", "zh-cht": "編輯裝置群權限", "xloc": [ - "default.handlebars->41->2059", - "default.handlebars->41->2071" + "default.handlebars->41->2061", + "default.handlebars->41->2073" ] }, { @@ -23220,7 +23220,7 @@ "zh-chs": "编辑设备组用户同意", "zh-cht": "編輯裝置群用戶同意", "xloc": [ - "default.handlebars->41->2000" + "default.handlebars->41->2002" ] }, { @@ -23246,7 +23246,7 @@ "zh-cht": "編輯裝置筆記", "xloc": [ "default-mobile.handlebars->11->671", - "default.handlebars->41->2050" + "default.handlebars->41->2052" ] }, { @@ -23271,8 +23271,8 @@ "zh-chs": "编辑设备权限", "zh-cht": "編輯裝置權限", "xloc": [ - "default.handlebars->41->2064", - "default.handlebars->41->2066" + "default.handlebars->41->2066", + "default.handlebars->41->2068" ] }, { @@ -23322,7 +23322,7 @@ "zh-chs": "编辑设备用户同意", "zh-cht": "編輯裝置用戶同意", "xloc": [ - "default.handlebars->41->2002" + "default.handlebars->41->2004" ] }, { @@ -23347,7 +23347,7 @@ "zh-chs": "编辑群组", "zh-cht": "編輯群組", "xloc": [ - "default.handlebars->41->1018" + "default.handlebars->41->1019" ] }, { @@ -23376,10 +23376,10 @@ "default-mobile.handlebars->11->305", "default-mobile.handlebars->11->306", "default-mobile.handlebars->11->391", - "default.handlebars->41->1138", - "default.handlebars->41->814", - "default.handlebars->41->819", - "default.handlebars->41->820" + "default.handlebars->41->1140", + "default.handlebars->41->815", + "default.handlebars->41->820", + "default.handlebars->41->821" ] }, { @@ -23405,7 +23405,7 @@ "zh-cht": "編輯筆記", "xloc": [ "default-mobile.handlebars->11->686", - "default.handlebars->41->2081" + "default.handlebars->41->2083" ] }, { @@ -23430,7 +23430,7 @@ "zh-chs": "编辑用户同意", "zh-cht": "編輯用戶同意", "xloc": [ - "default.handlebars->41->2001" + "default.handlebars->41->2003" ] }, { @@ -23455,7 +23455,7 @@ "zh-chs": "编辑用户设备组权限", "zh-cht": "編輯用戶裝置群權限", "xloc": [ - "default.handlebars->41->2072" + "default.handlebars->41->2074" ] }, { @@ -23480,7 +23480,7 @@ "zh-chs": "编辑用户设备权限", "zh-cht": "編輯用戶裝置權限", "xloc": [ - "default.handlebars->41->2067" + "default.handlebars->41->2069" ] }, { @@ -23504,7 +23504,7 @@ "tr": "Kullanıcı Özelliklerini Düzenle", "zh-chs": "编辑用户特征", "xloc": [ - "default.handlebars->41->2685" + "default.handlebars->41->2687" ] }, { @@ -23529,7 +23529,7 @@ "zh-chs": "编辑用户组", "zh-cht": "編輯用戶群", "xloc": [ - "default.handlebars->41->2573" + "default.handlebars->41->2575" ] }, { @@ -23554,7 +23554,7 @@ "zh-chs": "编辑用户组设备权限", "zh-cht": "編輯用戶群裝置權限", "xloc": [ - "default.handlebars->41->2069" + "default.handlebars->41->2071" ] }, { @@ -23574,7 +23574,7 @@ "ru": "Редактировать функции групп пользователей", "tr": "Kullanıcı Grubu Özelliklerini Düzenle", "xloc": [ - "default.handlebars->41->2566" + "default.handlebars->41->2568" ] }, { @@ -23599,7 +23599,7 @@ "zh-chs": "编辑用户组用户同意", "zh-cht": "編輯用戶組用戶同意", "xloc": [ - "default.handlebars->41->2003" + "default.handlebars->41->2005" ] }, { @@ -23718,12 +23718,12 @@ "zh-cht": "電郵", "xloc": [ "default-mobile.handlebars->11->109", - "default.handlebars->41->2466", - "default.handlebars->41->2599", + "default.handlebars->41->2468", "default.handlebars->41->2601", - "default.handlebars->41->2646", - "default.handlebars->41->2656", - "default.handlebars->41->2688", + "default.handlebars->41->2603", + "default.handlebars->41->2648", + "default.handlebars->41->2658", + "default.handlebars->41->2690", "default.handlebars->41->492", "login-mobile.handlebars->5->42", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3", @@ -23761,7 +23761,7 @@ "zh-cht": "電郵地址變更", "xloc": [ "default-mobile.handlebars->11->110", - "default.handlebars->41->1778" + "default.handlebars->41->1780" ] }, { @@ -23787,7 +23787,7 @@ "zh-cht": "電郵認證", "xloc": [ "default-mobile.handlebars->11->99", - "default.handlebars->41->1518" + "default.handlebars->41->1520" ] }, { @@ -23834,8 +23834,8 @@ "ru": "Подлючение электронной почты", "tr": "E-posta Bağlantısı", "xloc": [ - "default.handlebars->41->1896", - "default.handlebars->41->864" + "default.handlebars->41->1898", + "default.handlebars->41->865" ] }, { @@ -23855,8 +23855,8 @@ "ru": "Отключение электронной почты", "tr": "E-posta Bağlantısını Kes", "xloc": [ - "default.handlebars->41->1897", - "default.handlebars->41->865" + "default.handlebars->41->1899", + "default.handlebars->41->866" ] }, { @@ -23876,8 +23876,8 @@ "ru": "Уведомления по электронной почте", "tr": "E-posta Bildirimleri", "xloc": [ - "default.handlebars->41->2130", - "default.handlebars->41->994" + "default.handlebars->41->2132", + "default.handlebars->41->995" ] }, { @@ -23925,7 +23925,7 @@ "zh-cht": "電郵驗證", "xloc": [ "default-mobile.handlebars->11->108", - "default.handlebars->41->1776" + "default.handlebars->41->1778" ] }, { @@ -23937,7 +23937,7 @@ "fr": "Les courriels de \\\"{0}\\\" ne sont pas autorisés. Seulement ceux de ({1}) sont permis", "xloc": [ "default-mobile.handlebars->11->744", - "default.handlebars->41->2897" + "default.handlebars->41->2899" ] }, { @@ -23987,7 +23987,7 @@ "zh-chs": "电邮未验证", "zh-cht": "電郵未驗證", "xloc": [ - "default.handlebars->41->2410" + "default.handlebars->41->2412" ] }, { @@ -24012,8 +24012,8 @@ "zh-chs": "电子邮件已验证", "zh-cht": "電子郵件已驗證", "xloc": [ - "default.handlebars->41->2411", - "default.handlebars->41->2593" + "default.handlebars->41->2413", + "default.handlebars->41->2595" ] }, { @@ -24038,7 +24038,7 @@ "zh-chs": "电邮已验证。", "zh-cht": "電郵已驗證。", "xloc": [ - "default.handlebars->41->2472" + "default.handlebars->41->2474" ] }, { @@ -24063,7 +24063,7 @@ "zh-chs": "电邮未验证", "zh-cht": "電郵未驗證", "xloc": [ - "default.handlebars->41->2594" + "default.handlebars->41->2596" ] }, { @@ -24110,7 +24110,7 @@ "zh-cht": "電郵已發送。", "xloc": [ "default-mobile.handlebars->11->728", - "default.handlebars->41->2881", + "default.handlebars->41->2883", "login-mobile.handlebars->5->2", "login.handlebars->5->2", "login2.handlebars->7->3" @@ -24186,7 +24186,7 @@ "zh-chs": "已通过电邮验证,并且需要重置密码。", "zh-cht": "已通過電郵驗證,並且需要重置密碼。", "xloc": [ - "default.handlebars->41->2473" + "default.handlebars->41->2475" ] }, { @@ -24232,7 +24232,7 @@ "tr": "E-posta/SMS/Push Trafiği", "zh-chs": "电子邮件/短信/推送流量", "xloc": [ - "default.handlebars->41->2973" + "default.handlebars->41->2975" ] }, { @@ -24308,7 +24308,7 @@ "zh-chs": "启用邀请代码", "zh-cht": "啟用邀請代碼", "xloc": [ - "default.handlebars->41->2106" + "default.handlebars->41->2108" ] }, { @@ -24359,7 +24359,7 @@ "zh-cht": "啟用電郵二因子鑑別。", "xloc": [ "default-mobile.handlebars->11->101", - "default.handlebars->41->1520" + "default.handlebars->41->1522" ] }, { @@ -24410,7 +24410,7 @@ "zh-cht": "已啟用", "xloc": [ "default.handlebars->41->121", - "default.handlebars->41->2775" + "default.handlebars->41->2777" ] }, { @@ -24435,7 +24435,7 @@ "zh-chs": "启用电子邮件两因素身份验证", "zh-cht": "啟用電子郵件兩因素身份驗證", "xloc": [ - "default.handlebars->41->2290" + "default.handlebars->41->2292" ] }, { @@ -24491,7 +24491,7 @@ "ru": "Кодировка: RAW", "tr": "kodlama: RAW", "xloc": [ - "default.handlebars->41->1393" + "default.handlebars->41->1395" ] }, { @@ -24511,7 +24511,7 @@ "ru": "Кодировка: UTF8", "tr": "Kodlama: UTF8", "xloc": [ - "default.handlebars->41->1394" + "default.handlebars->41->1396" ] }, { @@ -24536,7 +24536,7 @@ "zh-chs": "结尾", "xloc": [ "default-mobile.handlebars->11->422", - "default.handlebars->41->1249" + "default.handlebars->41->1251" ] }, { @@ -24561,7 +24561,7 @@ "zh-chs": "时间结束", "zh-cht": "時間結束", "xloc": [ - "default.handlebars->41->2772" + "default.handlebars->41->2774" ] }, { @@ -24586,7 +24586,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了桌面会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了桌面會話“{0}”", "xloc": [ - "default.handlebars->41->2213" + "default.handlebars->41->2215" ] }, { @@ -24611,7 +24611,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了文件管理会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了文件管理會話“{0}”", "xloc": [ - "default.handlebars->41->2214" + "default.handlebars->41->2216" ] }, { @@ -24635,7 +24635,7 @@ "tr": "Yerel geçiş oturumu \\\"{0}\\\", {1} - {2} protokolü, {3} saniye sona erdi", "zh-chs": "结束本地中继会话\\\"{0}\\\",协议 {1} 到 {2},{3} 秒", "xloc": [ - "default.handlebars->41->2323" + "default.handlebars->41->2325" ] }, { @@ -24659,7 +24659,7 @@ "tr": "{1} ile {2} arasında \\\"{0}\\\" mesajlaşma oturumu sona erdi, {3} saniye", "zh-chs": "从 {1} 到 {2},{3} 秒结束了 Messenger 会话 \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2314" + "default.handlebars->41->2316" ] }, { @@ -24684,7 +24684,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了中继会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了中繼會話“{0}”", "xloc": [ - "default.handlebars->41->2211" + "default.handlebars->41->2213" ] }, { @@ -24709,7 +24709,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了终端会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了終端會話“{0}”", "xloc": [ - "default.handlebars->41->2212" + "default.handlebars->41->2214" ] }, { @@ -24734,7 +24734,7 @@ "zh-chs": "英文", "zh-cht": "英文", "xloc": [ - "default.handlebars->41->1589" + "default.handlebars->41->1591" ] }, { @@ -24759,7 +24759,7 @@ "zh-chs": "英文(澳洲)", "zh-cht": "英文(澳洲)", "xloc": [ - "default.handlebars->41->1590" + "default.handlebars->41->1592" ] }, { @@ -24784,7 +24784,7 @@ "zh-chs": "英文(伯利茲)", "zh-cht": "英文(伯利茲)", "xloc": [ - "default.handlebars->41->1591" + "default.handlebars->41->1593" ] }, { @@ -24809,7 +24809,7 @@ "zh-chs": "英文(加拿大)", "zh-cht": "英文(加拿大)", "xloc": [ - "default.handlebars->41->1592" + "default.handlebars->41->1594" ] }, { @@ -24834,7 +24834,7 @@ "zh-chs": "英文(爱尔兰)", "zh-cht": "英文(愛爾蘭)", "xloc": [ - "default.handlebars->41->1593" + "default.handlebars->41->1595" ] }, { @@ -24859,7 +24859,7 @@ "zh-chs": "英文(牙买加)", "zh-cht": "英文(牙買加)", "xloc": [ - "default.handlebars->41->1594" + "default.handlebars->41->1596" ] }, { @@ -24884,7 +24884,7 @@ "zh-chs": "英文(纽西兰)", "zh-cht": "英文(紐西蘭)", "xloc": [ - "default.handlebars->41->1595" + "default.handlebars->41->1597" ] }, { @@ -24909,7 +24909,7 @@ "zh-chs": "英文(菲律宾)", "zh-cht": "英文(菲律賓)", "xloc": [ - "default.handlebars->41->1596" + "default.handlebars->41->1598" ] }, { @@ -24934,7 +24934,7 @@ "zh-chs": "英语(南非)", "zh-cht": "英語(南非)", "xloc": [ - "default.handlebars->41->1597" + "default.handlebars->41->1599" ] }, { @@ -24959,7 +24959,7 @@ "zh-chs": "英文(特立尼达和多巴哥)", "zh-cht": "英文(特立尼達和多巴哥)", "xloc": [ - "default.handlebars->41->1598" + "default.handlebars->41->1600" ] }, { @@ -24984,7 +24984,7 @@ "zh-chs": "英文(英国)", "zh-cht": "英文(英國)", "xloc": [ - "default.handlebars->41->1599" + "default.handlebars->41->1601" ] }, { @@ -25009,7 +25009,7 @@ "zh-chs": "美国英文", "zh-cht": "美國英語", "xloc": [ - "default.handlebars->41->1600" + "default.handlebars->41->1602" ] }, { @@ -25034,7 +25034,7 @@ "zh-chs": "英文(津巴布韦)", "zh-cht": "英文(津巴布韋)", "xloc": [ - "default.handlebars->41->1601" + "default.handlebars->41->1603" ] }, { @@ -25081,10 +25081,10 @@ "zh-cht": "輸入", "xloc": [ "default-mobile.handlebars->11->416", - "default.handlebars->41->1243", - "default.handlebars->41->1358", - "default.handlebars->41->1815", - "default.handlebars->41->1816", + "default.handlebars->41->1245", + "default.handlebars->41->1360", + "default.handlebars->41->1817", + "default.handlebars->41->1818", "sharing.handlebars->11->55" ] }, @@ -25110,7 +25110,7 @@ "zh-chs": "输入管理领域名称的逗号分隔列表。", "zh-cht": "輸入管理領域名稱的逗號分隔列表。", "xloc": [ - "default.handlebars->41->2477" + "default.handlebars->41->2479" ] }, { @@ -25206,7 +25206,7 @@ "zh-chs": "输入文本,然后单击确定以远程键入它。在继续操作之前,请确保将远程光标放置在正确的位置。", "zh-cht": "輸入文本,然後單擊確定以遠程鍵入它。在繼續操作之前,請確保將遠程光標放置在正確的位置。", "xloc": [ - "default.handlebars->41->1273" + "default.handlebars->41->1275" ] }, { @@ -25325,7 +25325,7 @@ "zh-chs": "输入支持SMS的电话号码。验证后,该号码可用于登录验证和其他通知。", "zh-cht": "輸入支持SMS的電話號碼。驗證後,該號碼可用於登入驗證和其他通知。", "xloc": [ - "default.handlebars->41->1515" + "default.handlebars->41->1517" ] }, { @@ -25449,7 +25449,7 @@ "zh-chs": "错误,邀请码 \\\"{0}\\\" 已被使用。", "xloc": [ "default-mobile.handlebars->11->736", - "default.handlebars->41->2889" + "default.handlebars->41->2891" ] }, { @@ -25474,7 +25474,7 @@ "zh-chs": "错误,密码未更改。", "xloc": [ "default-mobile.handlebars->11->733", - "default.handlebars->41->2886" + "default.handlebars->41->2888" ] }, { @@ -25499,7 +25499,7 @@ "zh-chs": "错误,无法更改为常用密码。", "xloc": [ "default-mobile.handlebars->11->732", - "default.handlebars->41->2885" + "default.handlebars->41->2887" ] }, { @@ -25524,7 +25524,7 @@ "zh-chs": "错误,无法更改为以前使用的密码。", "xloc": [ "default-mobile.handlebars->11->731", - "default.handlebars->41->2884" + "default.handlebars->41->2886" ] }, { @@ -25574,7 +25574,7 @@ "zh-chs": "逃脱", "xloc": [ "default-mobile.handlebars->11->417", - "default.handlebars->41->1244" + "default.handlebars->41->1246" ] }, { @@ -25599,7 +25599,7 @@ "zh-chs": "世界文", "zh-cht": "世界語", "xloc": [ - "default.handlebars->41->1602" + "default.handlebars->41->1604" ] }, { @@ -25645,7 +25645,7 @@ "zh-chs": "爱沙尼亚文", "zh-cht": "愛沙尼亞語", "xloc": [ - "default.handlebars->41->1603" + "default.handlebars->41->1605" ] }, { @@ -25691,7 +25691,7 @@ "zh-chs": "事件详情", "zh-cht": "事件詳情", "xloc": [ - "default.handlebars->41->1402" + "default.handlebars->41->1404" ] }, { @@ -25716,7 +25716,7 @@ "zh-chs": "事件列表输出", "zh-cht": "事件列表輸出", "xloc": [ - "default.handlebars->41->2385" + "default.handlebars->41->2387" ] }, { @@ -25894,8 +25894,8 @@ "zh-chs": "到期时间", "zh-cht": "到期時間", "xloc": [ - "default.handlebars->41->1083", - "default.handlebars->41->1766", + "default.handlebars->41->1085", + "default.handlebars->41->1768", "default.handlebars->41->278" ] }, @@ -25946,7 +25946,7 @@ "zh-chs": "过期{0}", "zh-cht": "過期{0}", "xloc": [ - "default.handlebars->41->1829", + "default.handlebars->41->1831", "sharing.handlebars->11->95" ] }, @@ -25997,7 +25997,7 @@ "zh-chs": "扩充式ASCII", "zh-cht": "擴充式ASCII", "xloc": [ - "default.handlebars->41->1334", + "default.handlebars->41->1336", "sharing.handlebars->11->34" ] }, @@ -26049,7 +26049,7 @@ "zh-chs": "外部", "zh-cht": "外部", "xloc": [ - "default.handlebars->41->2953" + "default.handlebars->41->2955" ] }, { @@ -26060,7 +26060,7 @@ "ru": "ключ FIDO", "fr": "Clé FIDO", "xloc": [ - "default.handlebars->41->2839" + "default.handlebars->41->2841" ] }, { @@ -26110,7 +26110,7 @@ "zh-chs": "FYRO马其顿语", "zh-cht": "FYRO馬其頓語", "xloc": [ - "default.handlebars->41->1653" + "default.handlebars->41->1655" ] }, { @@ -26135,7 +26135,7 @@ "zh-chs": "法罗语", "zh-cht": "法羅語", "xloc": [ - "default.handlebars->41->1604" + "default.handlebars->41->1606" ] }, { @@ -26185,7 +26185,7 @@ "zh-chs": "无法更改电子邮件地址,另一个帐户已在使用:{0}。", "xloc": [ "default-mobile.handlebars->11->727", - "default.handlebars->41->2880" + "default.handlebars->41->2882" ] }, { @@ -26240,7 +26240,7 @@ "zh-chs": "本地用户拒绝后无法启动远程桌面", "zh-cht": "本地用戶拒絕後無法啟動遠程桌面", "xloc": [ - "default.handlebars->41->2236" + "default.handlebars->41->2238" ] }, { @@ -26286,7 +26286,7 @@ "zh-chs": "本地用户拒绝后无法启动远程文件", "zh-cht": "本地用戶拒絕後無法啟動遠程文件", "xloc": [ - "default.handlebars->41->2243" + "default.handlebars->41->2245" ] }, { @@ -26333,7 +26333,7 @@ "zh-cht": "無法啟動遠程終端接合{0}({1})", "xloc": [ "default-mobile.handlebars->11->408", - "default.handlebars->41->1204", + "default.handlebars->41->1206", "sharing.handlebars->11->30", "sharing.handlebars->11->8" ] @@ -26360,7 +26360,7 @@ "zh-chs": "波斯文(波斯文)", "zh-cht": "波斯語(波斯語)", "xloc": [ - "default.handlebars->41->1605" + "default.handlebars->41->1607" ] }, { @@ -26412,9 +26412,9 @@ "zh-chs": "功能", "zh-cht": "功能", "xloc": [ - "default.handlebars->41->1880", - "default.handlebars->41->2529", - "default.handlebars->41->2617" + "default.handlebars->41->1882", + "default.handlebars->41->2531", + "default.handlebars->41->2619" ] }, { @@ -26439,7 +26439,7 @@ "zh-chs": "斐济", "zh-cht": "斐濟", "xloc": [ - "default.handlebars->41->1606" + "default.handlebars->41->1608" ] }, { @@ -26490,8 +26490,8 @@ "zh-cht": "檔案編輯器", "xloc": [ "default-mobile.handlebars->11->487", - "default.handlebars->41->1370", - "default.handlebars->41->747", + "default.handlebars->41->1372", + "default.handlebars->41->748", "sharing.handlebars->11->66" ] }, @@ -26539,8 +26539,8 @@ "zh-chs": "档案操作", "zh-cht": "檔案操作", "xloc": [ - "default.handlebars->41->1349", "default.handlebars->41->1351", + "default.handlebars->41->1353", "sharing.handlebars->11->46", "sharing.handlebars->11->48" ] @@ -26591,7 +26591,7 @@ "tr": "Dosya transferi", "zh-chs": "文件传输", "xloc": [ - "default.handlebars->41->2753" + "default.handlebars->41->2755" ] }, { @@ -26616,7 +26616,7 @@ "zh-chs": "文件系统驱动", "zh-cht": "FileSystemDriver", "xloc": [ - "default.handlebars->41->1290" + "default.handlebars->41->1292" ] }, { @@ -26643,15 +26643,15 @@ "xloc": [ "default-mobile.handlebars->11->216", "default-mobile.handlebars->11->354", - "default.handlebars->41->1056", - "default.handlebars->41->1933", - "default.handlebars->41->2011", - "default.handlebars->41->2760", - "default.handlebars->41->2819", - "default.handlebars->41->2850", - "default.handlebars->41->2941", + "default.handlebars->41->1058", + "default.handlebars->41->1935", + "default.handlebars->41->2013", + "default.handlebars->41->2762", + "default.handlebars->41->2821", + "default.handlebars->41->2852", + "default.handlebars->41->2943", "default.handlebars->41->413", - "default.handlebars->41->972", + "default.handlebars->41->973", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevFiles", "default.handlebars->contextMenu->cxfiles", "sharing.handlebars->LeftSideToolBar" @@ -26704,10 +26704,10 @@ "zh-chs": "档案通知", "zh-cht": "檔案通知", "xloc": [ - "default.handlebars->41->1888", - "default.handlebars->41->2537", - "default.handlebars->41->2639", - "default.handlebars->41->856" + "default.handlebars->41->1890", + "default.handlebars->41->2539", + "default.handlebars->41->2641", + "default.handlebars->41->857" ] }, { @@ -26732,10 +26732,10 @@ "zh-chs": "档案提示", "zh-cht": "檔案提示", "xloc": [ - "default.handlebars->41->1887", - "default.handlebars->41->2536", - "default.handlebars->41->2638", - "default.handlebars->41->855" + "default.handlebars->41->1889", + "default.handlebars->41->2538", + "default.handlebars->41->2640", + "default.handlebars->41->856" ] }, { @@ -26761,7 +26761,7 @@ "zh-cht": "過濾", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p2->xdevicesBar->1", - "default.handlebars->41->1354", + "default.handlebars->41->1356", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar", "default.handlebars->container->column_l->p4->3->1->0->3->3", @@ -26836,7 +26836,7 @@ "zh-chs": "查找文件", "zh-cht": "查找文件", "xloc": [ - "default.handlebars->41->1357", + "default.handlebars->41->1359", "sharing.handlebars->11->54" ] }, @@ -26848,7 +26848,7 @@ "pt-br": "Gravação de sessão \\\"{0}\\\" finalizada, {1} segundo(s)", "ru": "Завершение сеанса записи \\\"{0}\\\", {1} сек.", "xloc": [ - "default.handlebars->41->2348" + "default.handlebars->41->2350" ] }, { @@ -26873,7 +26873,7 @@ "zh-chs": "录制会话已完成,{0}秒", "zh-cht": "錄製會話已完成,{0}秒", "xloc": [ - "default.handlebars->41->2209" + "default.handlebars->41->2211" ] }, { @@ -26898,7 +26898,7 @@ "zh-chs": "芬兰", "zh-cht": "芬蘭", "xloc": [ - "default.handlebars->41->1607" + "default.handlebars->41->1609" ] }, { @@ -26924,8 +26924,8 @@ "xloc": [ "default-mobile.handlebars->11->524", "default-mobile.handlebars->11->526", - "default.handlebars->41->838", - "default.handlebars->41->840" + "default.handlebars->41->839", + "default.handlebars->41->841" ] }, { @@ -26949,8 +26949,8 @@ "tr": "Güvenlik duvarı etkin değil", "zh-chs": "防火墙未激活", "xloc": [ - "default.handlebars->41->2141", - "default.handlebars->41->2155" + "default.handlebars->41->2143", + "default.handlebars->41->2157" ] }, { @@ -27000,7 +27000,7 @@ "ru": "Флаги", "tr": "Bayraklar", "xloc": [ - "default.handlebars->41->2358" + "default.handlebars->41->2360" ] }, { @@ -27025,7 +27025,7 @@ "zh-chs": "闪光", "xloc": [ "default-mobile.handlebars->11->358", - "default.handlebars->41->1094" + "default.handlebars->41->1096" ] }, { @@ -27285,8 +27285,8 @@ "zh-chs": "下次登录时强制重置密码。", "zh-cht": "下次登入時強制重置密碼。", "xloc": [ - "default.handlebars->41->2471", - "default.handlebars->41->2699" + "default.handlebars->41->2473", + "default.handlebars->41->2701" ] }, { @@ -27306,7 +27306,7 @@ "ru": "Принудительно отключен сеанс рабочего стола пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi masaüstü oturumu", "xloc": [ - "default.handlebars->41->2336" + "default.handlebars->41->2338" ] }, { @@ -27326,7 +27326,7 @@ "ru": "Принудительно отключен файловый сеанс пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesilen dosyalar oturumu", "xloc": [ - "default.handlebars->41->2338" + "default.handlebars->41->2340" ] }, { @@ -27346,7 +27346,7 @@ "ru": "Принудительно отключен сеанс маршрутизации пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi yönlendirme oturumu", "xloc": [ - "default.handlebars->41->2339" + "default.handlebars->41->2341" ] }, { @@ -27366,7 +27366,7 @@ "ru": "Принудительно отключен терминальный сеанс пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi terminal oturumu", "xloc": [ - "default.handlebars->41->2337" + "default.handlebars->41->2339" ] }, { @@ -27469,7 +27469,7 @@ "zh-chs": "格式化", "zh-cht": "格式化", "xloc": [ - "default.handlebars->41->2376" + "default.handlebars->41->2378" ] }, { @@ -27542,8 +27542,8 @@ "zh-chs": "自由", "zh-cht": "自由", "xloc": [ - "default.handlebars->41->2899", - "default.handlebars->41->2901" + "default.handlebars->41->2901", + "default.handlebars->41->2903" ] }, { @@ -27594,7 +27594,7 @@ "zh-chs": "法文(比利时)", "zh-cht": "法語(比利時)", "xloc": [ - "default.handlebars->41->1609" + "default.handlebars->41->1611" ] }, { @@ -27619,7 +27619,7 @@ "zh-chs": "法文(加拿大)", "zh-cht": "法語(加拿大)", "xloc": [ - "default.handlebars->41->1610" + "default.handlebars->41->1612" ] }, { @@ -27644,7 +27644,7 @@ "zh-chs": "法文(法国)", "zh-cht": "法語(法國)", "xloc": [ - "default.handlebars->41->1611" + "default.handlebars->41->1613" ] }, { @@ -27669,7 +27669,7 @@ "zh-chs": "法文(卢森堡)", "zh-cht": "法語(盧森堡)", "xloc": [ - "default.handlebars->41->1612" + "default.handlebars->41->1614" ] }, { @@ -27694,7 +27694,7 @@ "zh-chs": "法文(摩纳哥)", "zh-cht": "法語(摩納哥)", "xloc": [ - "default.handlebars->41->1613" + "default.handlebars->41->1615" ] }, { @@ -27719,7 +27719,7 @@ "zh-chs": "法文(标准)", "zh-cht": "法語(標準)", "xloc": [ - "default.handlebars->41->1608" + "default.handlebars->41->1610" ] }, { @@ -27744,7 +27744,7 @@ "zh-chs": "法文(瑞士)", "zh-cht": "法語(瑞士)", "xloc": [ - "default.handlebars->41->1614" + "default.handlebars->41->1616" ] }, { @@ -27769,7 +27769,7 @@ "zh-chs": "弗里斯兰文", "zh-cht": "弗里斯蘭語", "xloc": [ - "default.handlebars->41->1615" + "default.handlebars->41->1617" ] }, { @@ -27794,7 +27794,7 @@ "zh-chs": "弗留利", "zh-cht": "弗留利", "xloc": [ - "default.handlebars->41->1616" + "default.handlebars->41->1618" ] }, { @@ -27823,9 +27823,9 @@ "default-mobile.handlebars->11->641", "default-mobile.handlebars->11->658", "default-mobile.handlebars->11->678", - "default.handlebars->41->1822", - "default.handlebars->41->2035", - "default.handlebars->41->2483" + "default.handlebars->41->1824", + "default.handlebars->41->2037", + "default.handlebars->41->2485" ] }, { @@ -27850,7 +27850,7 @@ "zh-chs": "完整管理员(保留所有权利)", "zh-cht": "完整管理員(保留所有權利)", "xloc": [ - "default.handlebars->41->2073" + "default.handlebars->41->2075" ] }, { @@ -27897,7 +27897,7 @@ "zh-chs": "完整设备权限", "zh-cht": "完整裝置權限", "xloc": [ - "default.handlebars->41->998" + "default.handlebars->41->999" ] }, { @@ -27922,7 +27922,7 @@ "zh-chs": "全部权限", "zh-cht": "全部權限", "xloc": [ - "default.handlebars->41->1017" + "default.handlebars->41->1018" ] }, { @@ -28000,7 +28000,7 @@ "zh-chs": "完整管理员", "zh-cht": "完整管理員", "xloc": [ - "default.handlebars->41->2587" + "default.handlebars->41->2589" ] }, { @@ -28025,8 +28025,8 @@ "zh-chs": "全自动的", "zh-cht": "全自動的", "xloc": [ - "default.handlebars->41->1908", - "default.handlebars->41->1965" + "default.handlebars->41->1910", + "default.handlebars->41->1967" ] }, { @@ -28052,7 +28052,7 @@ "zh-cht": "GPU", "xloc": [ "default-mobile.handlebars->11->589", - "default.handlebars->41->1476" + "default.handlebars->41->1478" ] }, { @@ -28077,7 +28077,7 @@ "zh-chs": "盖尔文(爱尔兰)", "zh-cht": "蓋爾語(愛爾蘭)", "xloc": [ - "default.handlebars->41->1618" + "default.handlebars->41->1620" ] }, { @@ -28102,7 +28102,7 @@ "zh-chs": "盖尔文(苏格兰文)", "zh-cht": "蓋爾語(蘇格蘭語)", "xloc": [ - "default.handlebars->41->1617" + "default.handlebars->41->1619" ] }, { @@ -28127,7 +28127,7 @@ "zh-chs": "加拉契文", "zh-cht": "加拉契語", "xloc": [ - "default.handlebars->41->1619" + "default.handlebars->41->1621" ] }, { @@ -28233,7 +28233,7 @@ "zh-chs": "一般信息", "zh-cht": "一般訊息", "xloc": [ - "default.handlebars->41->754" + "default.handlebars->41->755" ] }, { @@ -28278,7 +28278,7 @@ "ru": "Создать отчет", "tr": "Rapor oluştur", "xloc": [ - "default.handlebars->41->2800" + "default.handlebars->41->2802" ] }, { @@ -28323,7 +28323,7 @@ "zh-chs": "格鲁吉亚文", "zh-cht": "格魯吉亞文", "xloc": [ - "default.handlebars->41->1620" + "default.handlebars->41->1622" ] }, { @@ -28348,7 +28348,7 @@ "zh-chs": "德文(奥地利)", "zh-cht": "德語(奧地利)", "xloc": [ - "default.handlebars->41->1622" + "default.handlebars->41->1624" ] }, { @@ -28373,7 +28373,7 @@ "zh-chs": "德文(德国)", "zh-cht": "德文(德國)", "xloc": [ - "default.handlebars->41->1623" + "default.handlebars->41->1625" ] }, { @@ -28398,7 +28398,7 @@ "zh-chs": "德文(列支敦士登)", "zh-cht": "德文(列支敦士登)", "xloc": [ - "default.handlebars->41->1624" + "default.handlebars->41->1626" ] }, { @@ -28423,7 +28423,7 @@ "zh-chs": "德文(卢森堡)", "zh-cht": "德語(盧森堡)", "xloc": [ - "default.handlebars->41->1625" + "default.handlebars->41->1627" ] }, { @@ -28448,7 +28448,7 @@ "zh-chs": "德文(标准)", "zh-cht": "德語(標準)", "xloc": [ - "default.handlebars->41->1621" + "default.handlebars->41->1623" ] }, { @@ -28473,7 +28473,7 @@ "zh-chs": "德文(瑞士)", "zh-cht": "德文(瑞士)", "xloc": [ - "default.handlebars->41->1626" + "default.handlebars->41->1628" ] }, { @@ -28493,7 +28493,7 @@ "ru": "Получить буфер", "tr": "Pano Al", "xloc": [ - "default.handlebars->41->1275" + "default.handlebars->41->1277" ] }, { @@ -28518,7 +28518,7 @@ "zh-chs": "获取此设备的MQTT登录凭证。", "zh-cht": "獲取此裝置的MQTT登入憑證。", "xloc": [ - "default.handlebars->41->937" + "default.handlebars->41->938" ] }, { @@ -28569,7 +28569,7 @@ "zh-chs": "正在获取剪贴板内容,{0}个字节", "zh-cht": "正在獲取剪貼板內容,{0}個字節", "xloc": [ - "default.handlebars->41->2223" + "default.handlebars->41->2225" ] }, { @@ -28646,7 +28646,7 @@ "zh-chs": "好", "zh-cht": "好", "xloc": [ - "default.handlebars->41->1818" + "default.handlebars->41->1820" ] }, { @@ -28701,8 +28701,8 @@ "zh-chs": "Google云端硬盘备份", "zh-cht": "Google雲端硬盤備份", "xloc": [ - "default.handlebars->41->1839", - "default.handlebars->41->1842", + "default.handlebars->41->1841", + "default.handlebars->41->1844", "default.handlebars->41->304" ] }, @@ -28728,7 +28728,7 @@ "zh-chs": "Google云端硬盘控制台", "zh-cht": "Google雲端硬盤控制台", "xloc": [ - "default.handlebars->41->1836" + "default.handlebars->41->1838" ] }, { @@ -28778,7 +28778,7 @@ "zh-chs": "Google云端硬盘备份当前处于活动状态。", "zh-cht": "Google雲端硬盤備份當前處於活動狀態。", "xloc": [ - "default.handlebars->41->1840" + "default.handlebars->41->1842" ] }, { @@ -28827,7 +28827,7 @@ "zh-chs": "希腊文", "zh-cht": "希臘文", "xloc": [ - "default.handlebars->41->1627" + "default.handlebars->41->1629" ] }, { @@ -28853,8 +28853,8 @@ "zh-cht": "群", "xloc": [ "default-mobile.handlebars->11->271", - "default.handlebars->41->2816", - "default.handlebars->41->782", + "default.handlebars->41->2818", + "default.handlebars->41->783", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->1" ] }, @@ -28880,8 +28880,8 @@ "zh-chs": "集体指令", "zh-cht": "集體指令", "xloc": [ - "default.handlebars->41->2425", - "default.handlebars->41->2507", + "default.handlebars->41->2427", + "default.handlebars->41->2509", "default.handlebars->41->659", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p4->3->1->0->3->3", @@ -28910,7 +28910,7 @@ "zh-chs": "通过...分组", "zh-cht": "通過...分群", "xloc": [ - "default.handlebars->41->2372" + "default.handlebars->41->2374" ] }, { @@ -28936,7 +28936,7 @@ "zh-cht": "群標識符", "xloc": [ "agent-translations.json", - "default.handlebars->41->2524" + "default.handlebars->41->2526" ] }, { @@ -28961,7 +28961,7 @@ "zh-chs": "群组成员", "zh-cht": "群組成員", "xloc": [ - "default.handlebars->41->2548" + "default.handlebars->41->2550" ] }, { @@ -28997,8 +28997,8 @@ "zh-chs": "通过...分组", "zh-cht": "通過...分群", "xloc": [ - "default.handlebars->41->2786", - "default.handlebars->41->2789" + "default.handlebars->41->2788", + "default.handlebars->41->2791" ] }, { @@ -29018,7 +29018,7 @@ "ru": "Имя группы", "tr": "Grup ismi", "xloc": [ - "default.handlebars->41->2356" + "default.handlebars->41->2358" ] }, { @@ -29043,7 +29043,7 @@ "zh-chs": "用户{0}的群组权限。", "zh-cht": "用戶{0}的群組權限。", "xloc": [ - "default.handlebars->41->2034" + "default.handlebars->41->2036" ] }, { @@ -29068,7 +29068,7 @@ "zh-chs": "{0}的群组权限。", "zh-cht": "{0}的群組權限。", "xloc": [ - "default.handlebars->41->2033" + "default.handlebars->41->2035" ] }, { @@ -29163,7 +29163,7 @@ "ru": "Гость", "tr": "Misafir", "xloc": [ - "default.handlebars->41->2806" + "default.handlebars->41->2808" ] }, { @@ -29188,7 +29188,7 @@ "zh-chs": "访客姓名", "zh-cht": "來賓姓名", "xloc": [ - "default.handlebars->41->1053", + "default.handlebars->41->1055", "default.handlebars->41->268" ] }, @@ -29213,8 +29213,8 @@ "tr": "Misafir Paylaşımı", "zh-chs": "嘉宾分享", "xloc": [ - "default.handlebars->41->1005", - "default.handlebars->41->1027" + "default.handlebars->41->1006", + "default.handlebars->41->1028" ] }, { @@ -29238,7 +29238,7 @@ "tr": "Misafir Paylaşımı", "zh-chs": "嘉宾分享", "xloc": [ - "default.handlebars->41->2042" + "default.handlebars->41->2044" ] }, { @@ -29263,7 +29263,7 @@ "zh-chs": "古久拉提", "zh-cht": "古久拉提", "xloc": [ - "default.handlebars->41->1628" + "default.handlebars->41->1630" ] }, { @@ -29287,7 +29287,7 @@ "tr": "HTTP", "zh-chs": "HTTP", "xloc": [ - "default.handlebars->41->2937" + "default.handlebars->41->2939" ] }, { @@ -29361,7 +29361,7 @@ "zh-chs": "海地文", "zh-cht": "海地文", "xloc": [ - "default.handlebars->41->1629" + "default.handlebars->41->1631" ] }, { @@ -29436,7 +29436,7 @@ "zh-cht": "強行斷開代理", "xloc": [ "default-mobile.handlebars->11->619", - "default.handlebars->41->1507" + "default.handlebars->41->1509" ] }, { @@ -29446,7 +29446,7 @@ "ru": "Аппаратный OTP", "fr": "Clé OTP matérielle", "xloc": [ - "default.handlebars->41->2841" + "default.handlebars->41->2843" ] }, { @@ -29471,7 +29471,7 @@ "zh-chs": "堆总数", "zh-cht": "堆總數", "xloc": [ - "default.handlebars->41->2955" + "default.handlebars->41->2957" ] }, { @@ -29496,7 +29496,7 @@ "zh-chs": "堆使用", "zh-cht": "堆使用", "xloc": [ - "default.handlebars->41->2954" + "default.handlebars->41->2956" ] }, { @@ -29521,7 +29521,7 @@ "zh-chs": "希伯来文", "zh-cht": "希伯來文", "xloc": [ - "default.handlebars->41->1630" + "default.handlebars->41->1632" ] }, { @@ -29618,7 +29618,7 @@ "zh-chs": "已请求帮助,用户:{0},详细信息:{1}", "zh-cht": "已請求幫助,用戶:{0},詳細信息:{1}", "xloc": [ - "default.handlebars->41->2300" + "default.handlebars->41->2302" ] }, { @@ -29694,7 +29694,7 @@ "zh-chs": "帮助翻译MeshCentral", "zh-cht": "幫助翻譯MeshCentral", "xloc": [ - "default.handlebars->41->1745" + "default.handlebars->41->1747" ] }, { @@ -29823,7 +29823,7 @@ "zh-chs": "印地文", "zh-cht": "印地文", "xloc": [ - "default.handlebars->41->1631" + "default.handlebars->41->1633" ] }, { @@ -29871,7 +29871,7 @@ "zh-cht": "保存1個項目進行複製", "xloc": [ "default-mobile.handlebars->11->496", - "default.handlebars->41->1380", + "default.handlebars->41->1382", "sharing.handlebars->11->76" ] }, @@ -29898,7 +29898,7 @@ "zh-cht": "保存1個項目進行移動", "xloc": [ "default-mobile.handlebars->11->500", - "default.handlebars->41->1384", + "default.handlebars->41->1386", "sharing.handlebars->11->80" ] }, @@ -29925,7 +29925,7 @@ "zh-cht": "保留{0}個項目進行複製", "xloc": [ "default-mobile.handlebars->11->494", - "default.handlebars->41->1378", + "default.handlebars->41->1380", "sharing.handlebars->11->74" ] }, @@ -29952,7 +29952,7 @@ "zh-cht": "保存{0}個項目以進行移動", "xloc": [ "default-mobile.handlebars->11->498", - "default.handlebars->41->1382", + "default.handlebars->41->1384", "sharing.handlebars->11->78" ] }, @@ -29979,7 +29979,7 @@ "zh-cht": "保存{0}項目{1}給{2}", "xloc": [ "default-mobile.handlebars->11->160", - "default.handlebars->41->2196" + "default.handlebars->41->2198" ] }, { @@ -30004,7 +30004,7 @@ "zh-chs": "家", "xloc": [ "default-mobile.handlebars->11->421", - "default.handlebars->41->1248" + "default.handlebars->41->1250" ] }, { @@ -30035,13 +30035,13 @@ "default-mobile.handlebars->11->401", "default-mobile.handlebars->11->547", "default-mobile.handlebars->11->634", - "default.handlebars->41->1197", - "default.handlebars->41->1424", - "default.handlebars->41->1811", - "default.handlebars->41->1869", + "default.handlebars->41->1199", + "default.handlebars->41->1426", + "default.handlebars->41->1813", + "default.handlebars->41->1871", "default.handlebars->41->448", "default.handlebars->41->457", - "default.handlebars->41->787" + "default.handlebars->41->788" ] }, { @@ -30066,7 +30066,7 @@ "zh-chs": "主机名同步", "zh-cht": "主機名同步", "xloc": [ - "default.handlebars->41->1876" + "default.handlebars->41->1878" ] }, { @@ -30091,7 +30091,7 @@ "zh-chs": "匈牙利文", "zh-cht": "匈牙利文", "xloc": [ - "default.handlebars->41->1632" + "default.handlebars->41->1634" ] }, { @@ -30101,7 +30101,7 @@ "ru": "Cервер требует гибридный режим", "fr": "Hybrid requis par le serveur", "xloc": [ - "default.handlebars->41->1214" + "default.handlebars->41->1216" ] }, { @@ -30112,8 +30112,8 @@ "pt-br": "Endereço IP", "ru": "IP Адрес", "xloc": [ - "default.handlebars->41->2811", - "default.handlebars->41->2846" + "default.handlebars->41->2813", + "default.handlebars->41->2848" ] }, { @@ -30243,7 +30243,7 @@ "ru": "IP-KVM / Устройство питания", "tr": "IP-KVM / Güç cihazı", "xloc": [ - "default.handlebars->41->1801" + "default.handlebars->41->1803" ] }, { @@ -30253,7 +30253,7 @@ "ru": "IP-KVM / Устройство питания, ретранслируемое через агента", "fr": "Appareil IP-KVM / Power relayé par l'agent", "xloc": [ - "default.handlebars->41->1802" + "default.handlebars->41->1804" ] }, { @@ -30274,7 +30274,7 @@ "tr": "IP-KVM cihazı", "xloc": [ "default-mobile.handlebars->11->626", - "default.handlebars->41->1861" + "default.handlebars->41->1863" ] }, { @@ -30285,7 +30285,7 @@ "fr": "Appareil IP-KAM relayé par l'agent", "xloc": [ "default-mobile.handlebars->11->627", - "default.handlebars->41->1862" + "default.handlebars->41->1864" ] }, { @@ -30305,8 +30305,8 @@ "ru": "Порт IP-KVM подключен", "tr": "IP-KVM bağlantı noktası bağlandı", "xloc": [ - "default.handlebars->41->943", - "default.handlebars->41->944" + "default.handlebars->41->944", + "default.handlebars->41->945" ] }, { @@ -30371,9 +30371,9 @@ "zh-chs": "IP:{0}", "zh-cht": "IP:{0}", "xloc": [ - "default.handlebars->41->1434", - "default.handlebars->41->1444", - "default.handlebars->41->1448" + "default.handlebars->41->1436", + "default.handlebars->41->1446", + "default.handlebars->41->1450" ] }, { @@ -30398,9 +30398,9 @@ "zh-chs": "IP:{0},掩码:{1},网关:{2}", "zh-cht": "IP:{0},遮罩:{1},閘道:{2}", "xloc": [ - "default.handlebars->41->1432", - "default.handlebars->41->1442", - "default.handlebars->41->1446" + "default.handlebars->41->1434", + "default.handlebars->41->1444", + "default.handlebars->41->1448" ] }, { @@ -30427,10 +30427,10 @@ "xloc": [ "default-mobile.handlebars->11->554", "default-mobile.handlebars->11->556", - "default.handlebars->41->1431", "default.handlebars->41->1433", - "default.handlebars->41->1441", - "default.handlebars->41->1443" + "default.handlebars->41->1435", + "default.handlebars->41->1443", + "default.handlebars->41->1445" ] }, { @@ -30535,8 +30535,8 @@ "xloc": [ "default-mobile.handlebars->11->558", "default-mobile.handlebars->11->560", - "default.handlebars->41->1445", - "default.handlebars->41->1447" + "default.handlebars->41->1447", + "default.handlebars->41->1449" ] }, { @@ -30636,7 +30636,7 @@ "zh-chs": "冰岛文", "zh-cht": "冰島文", "xloc": [ - "default.handlebars->41->1633" + "default.handlebars->41->1635" ] }, { @@ -30662,7 +30662,7 @@ "zh-cht": "圖符選擇", "xloc": [ "default-mobile.handlebars->11->395", - "default.handlebars->41->1191" + "default.handlebars->41->1193" ] }, { @@ -30689,8 +30689,8 @@ "xloc": [ "default-mobile.handlebars->11->546", "default-mobile.handlebars->11->587", - "default.handlebars->41->1423", - "default.handlebars->41->1474" + "default.handlebars->41->1425", + "default.handlebars->41->1476" ] }, { @@ -30715,7 +30715,7 @@ "zh-chs": "如果在CCM中,请重新激活英特尔®AMT", "zh-cht": "如果在CCM中,請重新激活英特爾®AMT", "xloc": [ - "default.handlebars->41->1979" + "default.handlebars->41->1981" ] }, { @@ -30891,9 +30891,9 @@ "tr": "Intel® AMT Cihazlarını İçe Aktarın", "zh-chs": "导入英特尔® AMT 设备", "xloc": [ - "default.handlebars->41->1953", - "default.handlebars->41->1954", - "default.handlebars->41->1958" + "default.handlebars->41->1955", + "default.handlebars->41->1956", + "default.handlebars->41->1960" ] }, { @@ -30917,7 +30917,7 @@ "tr": "MeshCommander JSON formatında yerel Intel® AMT cihazlarının bir listesini içe aktarın.", "zh-chs": "以 MeshCommander JSON 格式导入本地英特尔® AMT 设备列表。", "xloc": [ - "default.handlebars->41->1952" + "default.handlebars->41->1954" ] }, { @@ -30941,7 +30941,7 @@ "tr": "Cihaz listesini içe aktar", "zh-chs": "导入设备列表", "xloc": [ - "default.handlebars->41->1948" + "default.handlebars->41->1950" ] }, { @@ -30965,7 +30965,7 @@ "tr": "Anında bildirim kimlik doğrulamasını kullanmak için, hesabınızda tam haklara sahip bir mobil cihaz kurulmalıdır.", "zh-chs": "为了使用推送通知身份验证,必须在您的帐户中设置具有完全权限的移动设备。", "xloc": [ - "default.handlebars->41->1528" + "default.handlebars->41->1530" ] }, { @@ -30989,7 +30989,7 @@ "tr": "Kaldırılana kadar günleri devre dışı bırak", "zh-chs": "停用天数直到移除", "xloc": [ - "default.handlebars->41->2019" + "default.handlebars->41->2021" ] }, { @@ -31037,7 +31037,7 @@ "tr": "Cihaz ayrıntılarını dahil et", "zh-chs": "包括设备详细信息", "xloc": [ - "default.handlebars->41->708" + "default.handlebars->41->709" ] }, { @@ -31089,7 +31089,7 @@ "ru": "Несоответствие флагов", "fr": "Indicateurs incohérents", "xloc": [ - "default.handlebars->41->1213" + "default.handlebars->41->1215" ] }, { @@ -31100,8 +31100,8 @@ "pt-br": "2ª etapa incorreta", "ru": "Неверный 2-й фактор", "xloc": [ - "default.handlebars->41->2834", - "default.handlebars->41->2854" + "default.handlebars->41->2836", + "default.handlebars->41->2856" ] }, { @@ -31179,7 +31179,7 @@ "zh-chs": "印度尼西亚文", "zh-cht": "印度尼西亞文", "xloc": [ - "default.handlebars->41->1634" + "default.handlebars->41->1636" ] }, { @@ -31281,7 +31281,7 @@ "zh-chs": "插", "xloc": [ "default-mobile.handlebars->11->419", - "default.handlebars->41->1246" + "default.handlebars->41->1248" ] }, { @@ -31515,8 +31515,8 @@ "zh-chs": "安装类型", "zh-cht": "安裝方式", "xloc": [ - "default.handlebars->41->2114", - "default.handlebars->41->2121", + "default.handlebars->41->2116", + "default.handlebars->41->2123", "default.handlebars->41->508", "default.handlebars->41->528", "default.handlebars->41->544", @@ -31545,7 +31545,7 @@ "zh-chs": "英特尔(F10 = ESC + [OM)", "zh-cht": "Intel(F10 = ESC + [OM)", "xloc": [ - "default.handlebars->41->1336", + "default.handlebars->41->1338", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons", "sharing.handlebars->11->36", "sharing.handlebars->p12->9->1->terminalSettingsButtons" @@ -31573,7 +31573,7 @@ "zh-chs": "英特尔AMT", "zh-cht": "英特爾AMT", "xloc": [ - "default.handlebars->41->2951" + "default.handlebars->41->2953" ] }, { @@ -31657,7 +31657,7 @@ "tr": "Intel AMT yöneticisi", "zh-chs": "英特尔 AMT 经理", "xloc": [ - "default.handlebars->41->2980" + "default.handlebars->41->2982" ] }, { @@ -31702,7 +31702,7 @@ "zh-chs": "英特尔ASCII", "zh-cht": "Intel ASCII", "xloc": [ - "default.handlebars->41->1335", + "default.handlebars->41->1337", "sharing.handlebars->11->35" ] }, @@ -31731,16 +31731,16 @@ "default-mobile.handlebars->11->258", "default-mobile.handlebars->11->308", "default-mobile.handlebars->11->315", - "default.handlebars->41->1895", - "default.handlebars->41->1909", - "default.handlebars->41->2136", - "default.handlebars->41->2149", - "default.handlebars->41->2979", - "default.handlebars->41->757", - "default.handlebars->41->824", - "default.handlebars->41->863", - "default.handlebars->41->873", - "default.handlebars->41->957" + "default.handlebars->41->1897", + "default.handlebars->41->1911", + "default.handlebars->41->2138", + "default.handlebars->41->2151", + "default.handlebars->41->2981", + "default.handlebars->41->758", + "default.handlebars->41->825", + "default.handlebars->41->864", + "default.handlebars->41->874", + "default.handlebars->41->958" ] }, { @@ -31791,7 +31791,7 @@ "zh-cht": "Intel® AMT CIRA", "xloc": [ "default-mobile.handlebars->11->314", - "default.handlebars->41->871" + "default.handlebars->41->872" ] }, { @@ -31862,7 +31862,7 @@ "xloc": [ "default.handlebars->41->378", "default.handlebars->41->630", - "default.handlebars->41->870" + "default.handlebars->41->871" ] }, { @@ -31914,7 +31914,7 @@ "tr": "Intel® AMT JSON", "zh-chs": "英特尔® AMT JSON", "xloc": [ - "default.handlebars->41->706" + "default.handlebars->41->707" ] }, { @@ -31963,8 +31963,8 @@ "tr": "Intel® AMT Tek Tıkla Kurtarma", "zh-chs": "英特尔® AMT 一键恢复", "xloc": [ - "default.handlebars->41->1109", - "default.handlebars->41->1122" + "default.handlebars->41->1111", + "default.handlebars->41->1124" ] }, { @@ -31989,7 +31989,7 @@ "zh-chs": "英特尔®AMT政策", "zh-cht": "Intel® AMT政策", "xloc": [ - "default.handlebars->41->1966" + "default.handlebars->41->1968" ] }, { @@ -32016,9 +32016,9 @@ "default-mobile.handlebars->11->374", "default-mobile.handlebars->11->376", "default-mobile.handlebars->11->378", - "default.handlebars->41->1123", "default.handlebars->41->1125", - "default.handlebars->41->1127" + "default.handlebars->41->1127", + "default.handlebars->41->1129" ] }, { @@ -32042,8 +32042,8 @@ "tr": "Intel® AMT Kapatma", "zh-chs": "英特尔® AMT 关机", "xloc": [ - "default-mobile.handlebars->11->370", - "default.handlebars->41->1108" + "default-mobile.handlebars->11->369", + "default.handlebars->41->1109" ] }, { @@ -32067,8 +32067,8 @@ "tr": "Intel® AMT Gücü açık", "zh-chs": "英特尔® AMT 开机", "xloc": [ - "default-mobile.handlebars->11->369", - "default.handlebars->41->1107" + "default-mobile.handlebars->11->370", + "default.handlebars->41->1110" ] }, { @@ -32093,8 +32093,8 @@ "zh-chs": "英特尔®AMT重定向", "zh-cht": "Intel® AMT重定向", "xloc": [ - "default.handlebars->41->2755", - "default.handlebars->41->2762", + "default.handlebars->41->2757", + "default.handlebars->41->2764", "player.handlebars->3->30" ] }, @@ -32120,7 +32120,7 @@ "zh-chs": "英特尔® AMT 重置", "xloc": [ "default-mobile.handlebars->11->368", - "default.handlebars->41->1106" + "default.handlebars->41->1108" ] }, { @@ -32145,7 +32145,7 @@ "zh-chs": "英特尔®AMT标签", "zh-cht": "Intel® AMT標籤", "xloc": [ - "default.handlebars->41->828" + "default.handlebars->41->829" ] }, { @@ -32170,8 +32170,8 @@ "zh-chs": "英特尔®AMT WSMAN", "zh-cht": "Intle® AMT WSMAN", "xloc": [ - "default.handlebars->41->2754", - "default.handlebars->41->2761", + "default.handlebars->41->2756", + "default.handlebars->41->2763", "player.handlebars->3->29" ] }, @@ -32220,8 +32220,8 @@ "zh-cht": "Intel ®AMT已連接", "xloc": [ "default-mobile.handlebars->11->343", - "default.handlebars->41->947", - "default.handlebars->41->948" + "default.handlebars->41->948", + "default.handlebars->41->949" ] }, { @@ -32246,9 +32246,9 @@ "zh-chs": "英特尔®AMT桌面和串行事件", "zh-cht": "Intel® AMT桌面和串行事件", "xloc": [ - "default.handlebars->41->1772", - "default.handlebars->41->2129", - "default.handlebars->41->993" + "default.handlebars->41->1774", + "default.handlebars->41->2131", + "default.handlebars->41->994" ] }, { @@ -32274,8 +32274,8 @@ "zh-cht": "檢測到Intel® AMT", "xloc": [ "default-mobile.handlebars->11->344", - "default.handlebars->41->949", - "default.handlebars->41->950" + "default.handlebars->41->950", + "default.handlebars->41->951" ] }, { @@ -32300,7 +32300,7 @@ "zh-chs": "在Intel® AMT尔AMT", "zh-cht": "在管理控制模式下啟動了Intel® AMT", "xloc": [ - "default.handlebars->41->810" + "default.handlebars->41->811" ] }, { @@ -32325,7 +32325,7 @@ "zh-chs": "英特尔AMT在客户端控制模式下被激活", "zh-cht": "Intel® AMT在客户端控制模式下被启动", "xloc": [ - "default.handlebars->41->808" + "default.handlebars->41->809" ] }, { @@ -32350,7 +32350,7 @@ "zh-chs": "英特尔®AMT可路由并可以使用。", "zh-cht": "Intel® AMT可路由並可以使用。", "xloc": [ - "default.handlebars->41->872" + "default.handlebars->41->873" ] }, { @@ -32402,7 +32402,7 @@ "zh-cht": "Intel® AMT已設置TLS網絡安全性", "xloc": [ "default-mobile.handlebars->11->298", - "default.handlebars->41->812" + "default.handlebars->41->813" ] }, { @@ -32475,8 +32475,8 @@ "zh-cht": "僅限Intel® AMT,無代理", "xloc": [ "default-mobile.handlebars->11->622", - "default.handlebars->41->1805", - "default.handlebars->41->1857" + "default.handlebars->41->1807", + "default.handlebars->41->1859" ] }, { @@ -32548,7 +32548,7 @@ "zh-chs": "英特尔®主动管理技术", "zh-cht": "Intel® Active Management Technology", "xloc": [ - "default.handlebars->41->823" + "default.handlebars->41->824" ] }, { @@ -32574,7 +32574,7 @@ "zh-cht": "Intel ® Active Management Technology(Intel® AMT)", "xloc": [ "default-mobile.handlebars->11->579", - "default.handlebars->41->1466" + "default.handlebars->41->1468" ] }, { @@ -32600,7 +32600,7 @@ "zh-cht": "Intel® ME", "xloc": [ "default-mobile.handlebars->11->307", - "default.handlebars->41->822" + "default.handlebars->41->823" ] }, { @@ -32625,7 +32625,7 @@ "zh-chs": "英特尔®可管理性引擎", "zh-cht": "Intel® Management Engine", "xloc": [ - "default.handlebars->41->821" + "default.handlebars->41->822" ] }, { @@ -32651,8 +32651,8 @@ "zh-cht": "Intel® M", "xloc": [ "default-mobile.handlebars->11->309", - "default.handlebars->41->826", - "default.handlebars->41->955" + "default.handlebars->41->827", + "default.handlebars->41->956" ] }, { @@ -32677,26 +32677,26 @@ "zh-chs": "英特尔®标准可管理性", "zh-cht": "Intel® Standard Manageability", "xloc": [ - "default.handlebars->41->825" + "default.handlebars->41->826" ] }, { "en": "Intel® Standard Manageability (Intel® SM)", "xloc": [ "default-mobile.handlebars->11->578", - "default.handlebars->41->1465" + "default.handlebars->41->1467" ] }, { "en": "Intel®AMT", "xloc": [ - "default.handlebars->41->956" + "default.handlebars->41->957" ] }, { "en": "Intel®SM", "xloc": [ - "default.handlebars->41->954" + "default.handlebars->41->955" ] }, { @@ -32716,7 +32716,7 @@ "ru": "Изменение политик Intel(r) AMT", "tr": "Intel(r) AMT ilke değişikliği", "xloc": [ - "default.handlebars->41->2343" + "default.handlebars->41->2345" ] }, { @@ -32929,7 +32929,7 @@ "zh-chs": "互动", "zh-cht": "互動", "xloc": [ - "default.handlebars->41->1291" + "default.handlebars->41->1293" ] }, { @@ -32954,8 +32954,8 @@ "zh-chs": "仅限互动", "zh-cht": "僅限互動", "xloc": [ - "default.handlebars->41->2117", - "default.handlebars->41->2124", + "default.handlebars->41->2119", + "default.handlebars->41->2126", "default.handlebars->41->511", "default.handlebars->41->531", "default.handlebars->41->547" @@ -32983,7 +32983,7 @@ "zh-chs": "介面", "zh-cht": "介面", "xloc": [ - "default.handlebars->41->917" + "default.handlebars->41->918" ] }, { @@ -33032,7 +33032,7 @@ "zh-chs": "因纽特文", "zh-cht": "因紐特文", "xloc": [ - "default.handlebars->41->1635" + "default.handlebars->41->1637" ] }, { @@ -33083,7 +33083,7 @@ "zh-cht": "無效證件", "xloc": [ "default-mobile.handlebars->11->303", - "default.handlebars->41->817" + "default.handlebars->41->818" ] }, { @@ -33108,7 +33108,7 @@ "zh-chs": "无效的设备组类型", "zh-cht": "無效的裝置群類型", "xloc": [ - "default.handlebars->41->2913" + "default.handlebars->41->2915" ] }, { @@ -33133,7 +33133,7 @@ "zh-chs": "无效的JSON", "zh-cht": "無效的JSON", "xloc": [ - "default.handlebars->41->2907" + "default.handlebars->41->2909" ] }, { @@ -33158,9 +33158,9 @@ "zh-chs": "无效的JSON档案格式。", "zh-cht": "無效的JSON檔案格式。", "xloc": [ - "default.handlebars->41->1959", - "default.handlebars->41->2445", - "default.handlebars->41->2447" + "default.handlebars->41->1961", + "default.handlebars->41->2447", + "default.handlebars->41->2449" ] }, { @@ -33185,8 +33185,8 @@ "zh-chs": "无效的JSON档案:{0}。", "zh-cht": "無效的JSON檔案:{0}。", "xloc": [ - "default.handlebars->41->1955", - "default.handlebars->41->2443" + "default.handlebars->41->1957", + "default.handlebars->41->2445" ] }, { @@ -33291,7 +33291,7 @@ "zh-chs": "无效的PKCS签名", "zh-cht": "無效的PKCS簽名", "xloc": [ - "default.handlebars->41->2905" + "default.handlebars->41->2907" ] }, { @@ -33316,7 +33316,7 @@ "zh-chs": "無效的RSA密碼", "zh-cht": "無效的RSA密碼", "xloc": [ - "default.handlebars->41->2906" + "default.handlebars->41->2908" ] }, { @@ -33341,7 +33341,7 @@ "zh-chs": "无效的短信", "xloc": [ "default-mobile.handlebars->11->739", - "default.handlebars->41->2892" + "default.handlebars->41->2894" ] }, { @@ -33413,7 +33413,7 @@ "zh-chs": "无效域", "xloc": [ "default-mobile.handlebars->11->719", - "default.handlebars->41->2872" + "default.handlebars->41->2874" ] }, { @@ -33459,7 +33459,7 @@ "zh-chs": "不合规电邮", "xloc": [ "default-mobile.handlebars->11->718", - "default.handlebars->41->2871" + "default.handlebars->41->2873" ] }, { @@ -33548,8 +33548,8 @@ "pt-br": "Tentativa de login inválida", "ru": "Неудачная попытка входа", "xloc": [ - "default.handlebars->41->2836", - "default.handlebars->41->2856" + "default.handlebars->41->2838", + "default.handlebars->41->2858" ] }, { @@ -33575,7 +33575,7 @@ "xloc": [ "default-mobile.handlebars->11->717", "default-mobile.handlebars->11->85", - "default.handlebars->41->2870", + "default.handlebars->41->2872", "default.handlebars->41->310" ] }, @@ -33601,7 +33601,7 @@ "zh-chs": "网站权限无效", "xloc": [ "default-mobile.handlebars->11->720", - "default.handlebars->41->2873" + "default.handlebars->41->2875" ] }, { @@ -33652,7 +33652,7 @@ "tr": "{0}, {1}, {2}'den geçersiz kullanıcı giriş denemesi", "zh-chs": "来自 {0}、{1}、{2} 的无效用户登录尝试", "xloc": [ - "default.handlebars->41->2312" + "default.handlebars->41->2314" ] }, { @@ -33677,7 +33677,7 @@ "zh-chs": "无效的用户名", "xloc": [ "default-mobile.handlebars->11->716", - "default.handlebars->41->2869" + "default.handlebars->41->2871" ] }, { @@ -33723,7 +33723,7 @@ "zh-chs": "使电邮无效", "zh-cht": "使電郵無效", "xloc": [ - "default.handlebars->41->2419" + "default.handlebars->41->2421" ] }, { @@ -33820,7 +33820,7 @@ "zh-chs": "任何人都可以使用邀请代码通过以下公共连接将设备加入该设备组:", "zh-cht": "任何人都可以使用邀請代碼通過以下公共鏈結將裝置加入該裝置群:", "xloc": [ - "default.handlebars->41->2119" + "default.handlebars->41->2121" ] }, { @@ -33870,7 +33870,7 @@ "zh-chs": "邀请", "zh-cht": "邀請", "xloc": [ - "default.handlebars->41->1919", + "default.handlebars->41->1921", "default.handlebars->41->443", "default.handlebars->41->533" ] @@ -33898,12 +33898,12 @@ "zh-cht": "邀請碼", "xloc": [ "default-mobile.handlebars->11->714", - "default.handlebars->41->1901", - "default.handlebars->41->2107", - "default.handlebars->41->2118", + "default.handlebars->41->1903", + "default.handlebars->41->2109", "default.handlebars->41->2120", - "default.handlebars->41->2125", - "default.handlebars->41->2867" + "default.handlebars->41->2122", + "default.handlebars->41->2127", + "default.handlebars->41->2869" ] }, { @@ -33923,7 +33923,7 @@ "ru": "Код приглашения", "tr": "Davet kodu", "xloc": [ - "default.handlebars->41->2361" + "default.handlebars->41->2363" ] }, { @@ -33973,7 +33973,7 @@ "zh-chs": "邀请某人在该设备组上安装网格代理。", "zh-cht": "邀請某人在該裝置群上安裝mesh agent。", "xloc": [ - "default.handlebars->41->1918", + "default.handlebars->41->1920", "default.handlebars->41->442" ] }, @@ -34024,7 +34024,7 @@ "zh-chs": "爱尔兰文", "zh-cht": "愛爾蘭文", "xloc": [ - "default.handlebars->41->1636" + "default.handlebars->41->1638" ] }, { @@ -34034,7 +34034,7 @@ "ru": "Установлен ретранслятором для \\\"{0}\\\".", "fr": "Est un relais de \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2355" + "default.handlebars->41->2357" ] }, { @@ -34059,7 +34059,7 @@ "zh-chs": "意大利文(标准)", "zh-cht": "意大利文(標準)", "xloc": [ - "default.handlebars->41->1637" + "default.handlebars->41->1639" ] }, { @@ -34084,7 +34084,7 @@ "zh-chs": "意大利文(瑞士)", "zh-cht": "義大利文(瑞士)", "xloc": [ - "default.handlebars->41->1638" + "default.handlebars->41->1640" ] }, { @@ -34130,7 +34130,7 @@ "zh-chs": "JSON", "zh-cht": "JSON", "xloc": [ - "default.handlebars->41->2378" + "default.handlebars->41->2380" ] }, { @@ -34155,9 +34155,9 @@ "zh-chs": "JSON格式", "zh-cht": "JSON格式", "xloc": [ - "default.handlebars->41->2383", - "default.handlebars->41->2451", - "default.handlebars->41->704" + "default.handlebars->41->2385", + "default.handlebars->41->2453", + "default.handlebars->41->705" ] }, { @@ -34182,7 +34182,7 @@ "zh-chs": "日文", "zh-cht": "日文", "xloc": [ - "default.handlebars->41->1639" + "default.handlebars->41->1641" ] }, { @@ -34207,7 +34207,7 @@ "zh-chs": "已加入桌面Multiplex会话", "zh-cht": "已加入桌面Multiplex會話", "xloc": [ - "default.handlebars->41->2206" + "default.handlebars->41->2208" ] }, { @@ -34218,7 +34218,7 @@ "pt-br": "Entrou na sessão \\\"{0}\\\" multiplex de área de trabalho", "ru": "Присоединился к сеансу мультиплексированного рабочего стола \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2345" + "default.handlebars->41->2347" ] }, { @@ -34243,7 +34243,7 @@ "zh-chs": "卡纳达文", "zh-cht": "卡納達文", "xloc": [ - "default.handlebars->41->1640" + "default.handlebars->41->1642" ] }, { @@ -34268,7 +34268,7 @@ "zh-chs": "克什米尔文", "zh-cht": "克什米爾文", "xloc": [ - "default.handlebars->41->1641" + "default.handlebars->41->1643" ] }, { @@ -34293,7 +34293,7 @@ "zh-chs": "哈萨克文", "zh-cht": "哈薩克文", "xloc": [ - "default.handlebars->41->1642" + "default.handlebars->41->1644" ] }, { @@ -34318,7 +34318,7 @@ "zh-chs": "保留现有密码", "zh-cht": "保留現有密碼", "xloc": [ - "default.handlebars->41->1967" + "default.handlebars->41->1969" ] }, { @@ -34343,7 +34343,7 @@ "zh-chs": "内核驱动器", "zh-cht": "內核驅動器", "xloc": [ - "default.handlebars->41->1292" + "default.handlebars->41->1294" ] }, { @@ -34368,7 +34368,7 @@ "zh-chs": "密钥文件", "xloc": [ "default-mobile.handlebars->11->457", - "default.handlebars->41->1322", + "default.handlebars->41->1324", "ssh.handlebars->3->15" ] }, @@ -34394,8 +34394,8 @@ "zh-chs": "键名", "zh-cht": "鍵名", "xloc": [ - "default.handlebars->41->1533", - "default.handlebars->41->1536" + "default.handlebars->41->1535", + "default.handlebars->41->1538" ] }, { @@ -34420,7 +34420,7 @@ "zh-chs": "密钥密码", "xloc": [ "default-mobile.handlebars->11->459", - "default.handlebars->41->1324", + "default.handlebars->41->1326", "ssh.handlebars->3->17" ] }, @@ -34446,7 +34446,7 @@ "zh-chs": "密钥文件必须是 OpenSSH 格式。", "xloc": [ "default-mobile.handlebars->11->458", - "default.handlebars->41->1323", + "default.handlebars->41->1325", "ssh.handlebars->3->16" ] }, @@ -34494,7 +34494,7 @@ "zh-chs": "键盘快捷键自定义", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10dialog->1->1", - "default.handlebars->41->1266" + "default.handlebars->41->1268" ] }, { @@ -34514,7 +34514,7 @@ "ru": "Настройка клавиатурных строк", "tr": "Klavye Dizileri Özelleştirme", "xloc": [ - "default.handlebars->41->1271" + "default.handlebars->41->1273" ] }, { @@ -34561,7 +34561,7 @@ "zh-chs": "高棉文", "zh-cht": "高棉文", "xloc": [ - "default.handlebars->41->1643" + "default.handlebars->41->1645" ] }, { @@ -34586,7 +34586,7 @@ "zh-chs": "杀死进程{0}", "zh-cht": "殺死進程{0}", "xloc": [ - "default.handlebars->41->2221" + "default.handlebars->41->2223" ] }, { @@ -34611,7 +34611,7 @@ "zh-chs": "吉尔吉斯", "zh-cht": "吉爾吉斯", "xloc": [ - "default.handlebars->41->1644" + "default.handlebars->41->1646" ] }, { @@ -34636,7 +34636,7 @@ "zh-chs": "克林贡", "zh-cht": "克林貢", "xloc": [ - "default.handlebars->41->1645" + "default.handlebars->41->1647" ] }, { @@ -34662,7 +34662,7 @@ "zh-cht": "已知的", "xloc": [ "default-mobile.handlebars->11->577", - "default.handlebars->41->1464" + "default.handlebars->41->1466" ] }, { @@ -34687,7 +34687,7 @@ "zh-chs": "韩文", "zh-cht": "韓文", "xloc": [ - "default.handlebars->41->1646" + "default.handlebars->41->1648" ] }, { @@ -34712,7 +34712,7 @@ "zh-chs": "韩文(朝鲜)", "zh-cht": "韓文(朝鮮)", "xloc": [ - "default.handlebars->41->1647" + "default.handlebars->41->1649" ] }, { @@ -34737,7 +34737,7 @@ "zh-chs": "韩文(韩国)", "zh-cht": "韓文(韓國)", "xloc": [ - "default.handlebars->41->1648" + "default.handlebars->41->1650" ] }, { @@ -34762,8 +34762,8 @@ "zh-chs": "如果", "zh-cht": "如果", "xloc": [ - "default.handlebars->41->1309", - "default.handlebars->41->1340", + "default.handlebars->41->1311", + "default.handlebars->41->1342", "sharing.handlebars->11->26", "sharing.handlebars->11->40" ] @@ -34790,7 +34790,7 @@ "zh-chs": "语言", "zh-cht": "語言", "xloc": [ - "default.handlebars->41->1743" + "default.handlebars->41->1745" ] }, { @@ -34861,7 +34861,7 @@ "zh-chs": "大焦点", "zh-cht": "大焦點", "xloc": [ - "default.handlebars->41->1240" + "default.handlebars->41->1242" ] }, { @@ -35019,7 +35019,7 @@ "zh-chs": "过去30天", "zh-cht": "過去30天", "xloc": [ - "default.handlebars->41->2794", + "default.handlebars->41->2796", "default.handlebars->container->column_l->p40->3->1->p40time->9" ] }, @@ -35095,7 +35095,7 @@ "ru": "Последние 7 дней", "tr": "Son 7 gün", "xloc": [ - "default.handlebars->41->2793" + "default.handlebars->41->2795" ] }, { @@ -35145,7 +35145,7 @@ "zh-chs": "最后访问", "zh-cht": "最後訪問", "xloc": [ - "default.handlebars->41->2391" + "default.handlebars->41->2393" ] }, { @@ -35165,7 +35165,7 @@ "ru": "Последний день", "tr": "Son gun", "xloc": [ - "default.handlebars->41->2792" + "default.handlebars->41->2794" ] }, { @@ -35190,7 +35190,7 @@ "zh-chs": "上次登录", "zh-cht": "上次登入", "xloc": [ - "default.handlebars->41->2621" + "default.handlebars->41->2623" ] }, { @@ -35236,7 +35236,7 @@ "ru": "Последний доступ: {0}", "tr": "Son erişim: {0}", "xloc": [ - "default.handlebars->41->2401" + "default.handlebars->41->2403" ] }, { @@ -35265,9 +35265,9 @@ "default-mobile.handlebars->11->539", "default-mobile.handlebars->11->540", "default.handlebars->41->141", - "default.handlebars->41->1415", - "default.handlebars->41->1416", "default.handlebars->41->1417", + "default.handlebars->41->1418", + "default.handlebars->41->1419", "default.handlebars->41->143", "default.handlebars->41->145" ] @@ -35297,8 +35297,8 @@ "default-mobile.handlebars->11->535", "default-mobile.handlebars->11->537", "default.handlebars->41->140", - "default.handlebars->41->1412", - "default.handlebars->41->1414" + "default.handlebars->41->1414", + "default.handlebars->41->1416" ] }, { @@ -35323,7 +35323,7 @@ "zh-chs": "上次更改:{0}", "zh-cht": "上次更改:{0}", "xloc": [ - "default.handlebars->41->2625" + "default.handlebars->41->2627" ] }, { @@ -35398,7 +35398,7 @@ "zh-chs": "上次登录:{0}", "zh-cht": "上次登入:{0}", "xloc": [ - "default.handlebars->41->2402" + "default.handlebars->41->2404" ] }, { @@ -35424,7 +35424,7 @@ "zh-cht": "最後一次發現:", "xloc": [ "default.handlebars->41->110", - "default.handlebars->41->953" + "default.handlebars->41->954" ] }, { @@ -35545,7 +35545,7 @@ "zh-chs": "拉丁文", "zh-cht": "拉丁文", "xloc": [ - "default.handlebars->41->1649" + "default.handlebars->41->1651" ] }, { @@ -35570,7 +35570,7 @@ "zh-chs": "拉脱维亚文", "zh-cht": "拉脫維亞文", "xloc": [ - "default.handlebars->41->1650" + "default.handlebars->41->1652" ] }, { @@ -35595,7 +35595,7 @@ "zh-chs": "启动MeshCentral路由器", "zh-cht": "啟動MeshCentral路由器", "xloc": [ - "default.handlebars->41->1164" + "default.handlebars->41->1166" ] }, { @@ -35642,7 +35642,7 @@ "zh-chs": "启动基于Web的RDP连接到此设备", "zh-cht": "啟動基於Web的RDP連接到此裝置", "xloc": [ - "default.handlebars->41->933" + "default.handlebars->41->934" ] }, { @@ -35666,7 +35666,7 @@ "tr": "Bu cihaza web tabanlı SSH oturumu başlat", "zh-chs": "启动与此设备的基于 Web 的 SSH 会话", "xloc": [ - "default.handlebars->41->935" + "default.handlebars->41->936" ] }, { @@ -35690,7 +35690,7 @@ "tr": "Bu cihaza web tabanlı VNC oturumu başlat", "zh-chs": "启动与此设备的基于 Web 的 VNC 会话", "xloc": [ - "default.handlebars->41->931" + "default.handlebars->41->932" ] }, { @@ -35715,7 +35715,7 @@ "zh-chs": "如没有请留空。", "zh-cht": "如沒有請留空。", "xloc": [ - "default.handlebars->41->2671" + "default.handlebars->41->2673" ] }, { @@ -35740,7 +35740,7 @@ "zh-chs": "剩下", "xloc": [ "default-mobile.handlebars->11->425", - "default.handlebars->41->1252" + "default.handlebars->41->1254" ] }, { @@ -35751,7 +35751,7 @@ "pt-br": "Deixar a sessão WEB-RDP \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-RDP \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2327" + "default.handlebars->41->2329" ] }, { @@ -35779,7 +35779,7 @@ "pt-br": "Deixar a sessão WEB-SFTP \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-SFTP \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2326" + "default.handlebars->41->2328" ] }, { @@ -35807,7 +35807,7 @@ "pt-br": "Deixar a sessão WEB-SSH \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-SSH \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2325" + "default.handlebars->41->2327" ] }, { @@ -35844,7 +35844,7 @@ "ru": "Завершен сеанс Web-VNC, {0} с.", "tr": "{0} saniye sonra Web-VNC oturumundan ayrıldı.", "xloc": [ - "default.handlebars->41->2328" + "default.handlebars->41->2330" ] }, { @@ -35899,7 +35899,7 @@ "zh-chs": "离开桌面多路复用会话", "zh-cht": "離開桌面多路復用會話", "xloc": [ - "default.handlebars->41->2207" + "default.handlebars->41->2209" ] }, { @@ -35910,7 +35910,7 @@ "pt-br": "Deixar a sessão \\\"{0}\\\" de área de trabalho multiplex depois de {1} segundo(s)", "ru": "Покинул сеанс мультиплексного режима рабочего стола \\\"{0}\\\" через {1} с.", "xloc": [ - "default.handlebars->41->2346" + "default.handlebars->41->2348" ] }, { @@ -35930,7 +35930,7 @@ "ru": "Покинул сеанс мультиплексного режима рабочего стола через {0} с.", "tr": "{0} saniye sonra masaüstü multipleks oturumundan ayrıldı.", "xloc": [ - "default.handlebars->41->2324" + "default.handlebars->41->2326" ] }, { @@ -35950,7 +35950,7 @@ "ru": "Продолжительность", "tr": "Uzunluk", "xloc": [ - "default.handlebars->41->2807" + "default.handlebars->41->2809" ] }, { @@ -36022,8 +36022,8 @@ "zh-chs": "限制事件", "zh-cht": "限制事件", "xloc": [ - "default.handlebars->41->1011", - "default.handlebars->41->1033" + "default.handlebars->41->1012", + "default.handlebars->41->1034" ] }, { @@ -36075,9 +36075,9 @@ "zh-cht": "有限輸入", "xloc": [ "default-mobile.handlebars->11->691", - "default.handlebars->41->1003", - "default.handlebars->41->1025", - "default.handlebars->41->2087" + "default.handlebars->41->1004", + "default.handlebars->41->1026", + "default.handlebars->41->2089" ] }, { @@ -36103,7 +36103,7 @@ "zh-cht": "僅有限輸入", "xloc": [ "default-mobile.handlebars->11->664", - "default.handlebars->41->2041" + "default.handlebars->41->2043" ] }, { @@ -36233,7 +36233,7 @@ "agentinvite.handlebars->container->column_l->5->linuxtab->1", "default-mobile.handlebars->11->285", "default.handlebars->41->56", - "default.handlebars->41->797" + "default.handlebars->41->798" ] }, { @@ -36461,7 +36461,7 @@ "zh-chs": "Linux ARM,Raspberry Pi(32位)", "zh-cht": "Linux ARM,Raspberry Pi(32位)", "xloc": [ - "default.handlebars->41->1172" + "default.handlebars->41->1174" ] }, { @@ -36486,7 +36486,7 @@ "zh-chs": "Linux ARM, Raspberry Pi (64位)", "zh-cht": "Linux ARM, Raspberry Pi (64位)", "xloc": [ - "default.handlebars->41->1173" + "default.handlebars->41->1175" ] }, { @@ -36497,7 +36497,7 @@ "pt-br": "MeshAgent Linux", "ru": "MeshAgent для Linux", "xloc": [ - "default.handlebars->41->2111", + "default.handlebars->41->2113", "default.handlebars->41->525" ] }, @@ -36677,7 +36677,7 @@ "zh-chs": "Linux x86(32位)", "zh-cht": "Linux x86(32位)", "xloc": [ - "default.handlebars->41->1169" + "default.handlebars->41->1171" ] }, { @@ -36702,7 +36702,7 @@ "zh-chs": "Linux x86(64位)", "zh-cht": "Linux x86(64位)", "xloc": [ - "default.handlebars->41->1168" + "default.handlebars->41->1170" ] }, { @@ -36727,7 +36727,7 @@ "zh-chs": "Linux / BSD / macOS命令外壳", "zh-cht": "Linux / BSD / macOS命令外殼", "xloc": [ - "default.handlebars->41->1117", + "default.handlebars->41->1119", "default.handlebars->41->671" ] }, @@ -36822,7 +36822,7 @@ "zh-chs": "立陶宛文", "zh-cht": "立陶宛文", "xloc": [ - "default.handlebars->41->1651" + "default.handlebars->41->1653" ] }, { @@ -36874,13 +36874,13 @@ "xloc": [ "default-mobile.handlebars->11->103", "default-mobile.handlebars->11->88", - "default.handlebars->41->1159", - "default.handlebars->41->1510", - "default.handlebars->41->1522", - "default.handlebars->41->1848", - "default.handlebars->41->1852", - "default.handlebars->41->2694", - "default.handlebars->41->2743" + "default.handlebars->41->1161", + "default.handlebars->41->1512", + "default.handlebars->41->1524", + "default.handlebars->41->1850", + "default.handlebars->41->1854", + "default.handlebars->41->2696", + "default.handlebars->41->2745" ] }, { @@ -37000,8 +37000,8 @@ "zh-chs": "本地设备,无代理", "xloc": [ "default-mobile.handlebars->11->624", - "default.handlebars->41->1799", - "default.handlebars->41->1859" + "default.handlebars->41->1801", + "default.handlebars->41->1861" ] }, { @@ -37071,7 +37071,7 @@ "zh-chs": "本地用户接受的远程终端请求", "zh-cht": "本地用戶接受的遠程終端請求", "xloc": [ - "default.handlebars->41->2229" + "default.handlebars->41->2231" ] }, { @@ -37096,7 +37096,7 @@ "zh-chs": "本地用户拒绝了远程终端请求", "zh-cht": "本地用戶拒絕了遠程終端請求", "xloc": [ - "default.handlebars->41->2230" + "default.handlebars->41->2232" ] }, { @@ -37121,7 +37121,7 @@ "zh-chs": "本地化设置", "zh-cht": "本地化設置", "xloc": [ - "default.handlebars->41->1746", + "default.handlebars->41->1748", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->7" ] }, @@ -37147,7 +37147,7 @@ "zh-chs": "位置", "zh-cht": "位置", "xloc": [ - "default.handlebars->41->919" + "default.handlebars->41->920" ] }, { @@ -37197,7 +37197,7 @@ "zh-chs": "锁定账户", "zh-cht": "鎖定賬戶", "xloc": [ - "default.handlebars->41->2491" + "default.handlebars->41->2493" ] }, { @@ -37222,7 +37222,7 @@ "zh-chs": "锁定帐户设置", "zh-cht": "鎖定帳戶設置", "xloc": [ - "default.handlebars->41->2495" + "default.handlebars->41->2497" ] }, { @@ -37246,7 +37246,7 @@ "tr": "Masaüstünü Kilitle", "zh-chs": "锁定桌面", "xloc": [ - "default.handlebars->41->1050" + "default.handlebars->41->1052" ] }, { @@ -37271,7 +37271,7 @@ "zh-chs": "锁定账户", "zh-cht": "鎖定賬戶", "xloc": [ - "default.handlebars->41->2422" + "default.handlebars->41->2424" ] }, { @@ -37316,7 +37316,7 @@ "tr": "Uzak kullanıcının faresi ve klavyesi kilitlensin mi?", "zh-chs": "锁定远程用户的鼠标和键盘?", "xloc": [ - "default.handlebars->41->1047" + "default.handlebars->41->1049" ] }, { @@ -37364,7 +37364,7 @@ "tr": "Kullanıcı masaüstü kilitlensin mi?", "zh-chs": "锁定用户桌面?", "xloc": [ - "default.handlebars->41->1051" + "default.handlebars->41->1053" ] }, { @@ -37389,7 +37389,7 @@ "zh-chs": "已锁定", "zh-cht": "已鎖定", "xloc": [ - "default.handlebars->41->2403" + "default.handlebars->41->2405" ] }, { @@ -37415,9 +37415,9 @@ "zh-cht": "被鎖定賬戶", "xloc": [ "default-mobile.handlebars->11->84", - "default.handlebars->41->2584", - "default.handlebars->41->2835", - "default.handlebars->41->2855", + "default.handlebars->41->2586", + "default.handlebars->41->2837", + "default.handlebars->41->2857", "default.handlebars->41->309" ] }, @@ -37443,7 +37443,7 @@ "zh-chs": "将远程用户锁定在桌面之外", "zh-cht": "將遠程用戶鎖定在桌面之外", "xloc": [ - "default.handlebars->41->2255" + "default.handlebars->41->2257" ] }, { @@ -37468,7 +37468,7 @@ "zh-chs": "记录事件", "zh-cht": "記錄事件", "xloc": [ - "default.handlebars->41->898" + "default.handlebars->41->899" ] }, { @@ -37661,7 +37661,7 @@ "ru": "Токен входа", "fr": "Jeton de connexion", "xloc": [ - "default.handlebars->41->2845" + "default.handlebars->41->2847" ] }, { @@ -37805,7 +37805,7 @@ "zh-chs": "卢森堡文", "zh-cht": "盧森堡文", "xloc": [ - "default.handlebars->41->1652" + "default.handlebars->41->1654" ] }, { @@ -37832,10 +37832,10 @@ "xloc": [ "default-mobile.handlebars->11->550", "default-mobile.handlebars->11->552", - "default.handlebars->41->1427", "default.handlebars->41->1429", - "default.handlebars->41->1437", - "default.handlebars->41->1439" + "default.handlebars->41->1431", + "default.handlebars->41->1439", + "default.handlebars->41->1441" ] }, { @@ -37887,8 +37887,8 @@ "zh-cht": "MAC:{0}", "xloc": [ "default-mobile.handlebars->11->553", - "default.handlebars->41->1430", - "default.handlebars->41->1440" + "default.handlebars->41->1432", + "default.handlebars->41->1442" ] }, { @@ -37914,8 +37914,8 @@ "zh-cht": "MAC:{0},網關:{1}", "xloc": [ "default-mobile.handlebars->11->551", - "default.handlebars->41->1428", - "default.handlebars->41->1438" + "default.handlebars->41->1430", + "default.handlebars->41->1440" ] }, { @@ -38044,11 +38044,11 @@ "default-mobile.handlebars->11->607", "default-mobile.handlebars->11->609", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect2", - "default.handlebars->41->1495", "default.handlebars->41->1497", + "default.handlebars->41->1499", "default.handlebars->41->385", "default.handlebars->41->637", - "default.handlebars->41->877", + "default.handlebars->41->878", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect2" ] }, @@ -38099,7 +38099,7 @@ "zh-chs": "MQTT登录", "zh-cht": "MQTT登入", "xloc": [ - "default.handlebars->41->938" + "default.handlebars->41->939" ] }, { @@ -38125,7 +38125,7 @@ "zh-cht": "MQTT通道已連接", "xloc": [ "default-mobile.handlebars->11->345", - "default.handlebars->41->952" + "default.handlebars->41->953" ] }, { @@ -38151,7 +38151,7 @@ "zh-cht": "MQTT已連接", "xloc": [ "default.handlebars->41->247", - "default.handlebars->41->951" + "default.handlebars->41->952" ] }, { @@ -38178,7 +38178,7 @@ "xloc": [ "default.handlebars->41->384", "default.handlebars->41->636", - "default.handlebars->41->876" + "default.handlebars->41->877" ] }, { @@ -38344,7 +38344,7 @@ "tr": "MacOS Yükleyici", "zh-chs": "MacOS 安装程序", "xloc": [ - "default.handlebars->41->1162" + "default.handlebars->41->1164" ] }, { @@ -38355,7 +38355,7 @@ "pt-br": "MeshAgent MacOS", "ru": "MeshAgent для MacOS", "xloc": [ - "default.handlebars->41->2112", + "default.handlebars->41->2114", "default.handlebars->41->526" ] }, @@ -38405,7 +38405,7 @@ "zh-chs": "主服务器信息", "zh-cht": "主伺服器訊息", "xloc": [ - "default.handlebars->41->2967" + "default.handlebars->41->2969" ] }, { @@ -38430,7 +38430,7 @@ "zh-chs": "马来文", "zh-cht": "馬來文", "xloc": [ - "default.handlebars->41->1654" + "default.handlebars->41->1656" ] }, { @@ -38455,7 +38455,7 @@ "zh-chs": "玛拉雅拉姆文", "zh-cht": "馬拉雅拉姆文", "xloc": [ - "default.handlebars->41->1655" + "default.handlebars->41->1657" ] }, { @@ -38480,7 +38480,7 @@ "zh-chs": "马耳他文", "zh-cht": "馬耳他文", "xloc": [ - "default.handlebars->41->1656" + "default.handlebars->41->1658" ] }, { @@ -38505,7 +38505,7 @@ "zh-chs": "管理帐户图片", "xloc": [ "default-mobile.handlebars->11->89", - "default.handlebars->41->1511" + "default.handlebars->41->1513" ] }, { @@ -38558,8 +38558,8 @@ "xloc": [ "default-mobile.handlebars->11->661", "default-mobile.handlebars->11->681", - "default.handlebars->41->2038", - "default.handlebars->41->2076" + "default.handlebars->41->2040", + "default.handlebars->41->2078" ] }, { @@ -38586,8 +38586,8 @@ "xloc": [ "default-mobile.handlebars->11->660", "default-mobile.handlebars->11->680", - "default.handlebars->41->2037", - "default.handlebars->41->2075" + "default.handlebars->41->2039", + "default.handlebars->41->2077" ] }, { @@ -38612,7 +38612,7 @@ "zh-chs": "管理设备", "zh-cht": "管理裝置", "xloc": [ - "default.handlebars->41->1020" + "default.handlebars->41->1021" ] }, { @@ -38637,7 +38637,7 @@ "zh-chs": "管理录音", "zh-cht": "管理錄音", "xloc": [ - "default.handlebars->41->2489" + "default.handlebars->41->2491" ] }, { @@ -38687,7 +38687,7 @@ "zh-chs": "管理用户组", "zh-cht": "管理用戶群", "xloc": [ - "default.handlebars->41->2488" + "default.handlebars->41->2490" ] }, { @@ -38712,8 +38712,8 @@ "zh-chs": "管理用户", "zh-cht": "管理用戶", "xloc": [ - "default.handlebars->41->1019", - "default.handlebars->41->2487" + "default.handlebars->41->1020", + "default.handlebars->41->2489" ] }, { @@ -38893,7 +38893,7 @@ "zh-chs": "使用软件代理进行管理", "zh-cht": "使用軟體代理進行管理", "xloc": [ - "default.handlebars->41->1804" + "default.handlebars->41->1806" ] }, { @@ -38919,7 +38919,7 @@ "zh-cht": "使用軟體代理進行管理", "xloc": [ "default-mobile.handlebars->11->623", - "default.handlebars->41->1858" + "default.handlebars->41->1860" ] }, { @@ -38944,7 +38944,7 @@ "zh-chs": "经理", "zh-cht": "經理", "xloc": [ - "default.handlebars->41->2408" + "default.handlebars->41->2410" ] }, { @@ -39013,7 +39013,7 @@ "zh-chs": "毛利文", "zh-cht": "毛利文", "xloc": [ - "default.handlebars->41->1657" + "default.handlebars->41->1659" ] }, { @@ -39106,7 +39106,7 @@ "zh-chs": "马拉地文", "zh-cht": "馬拉地文", "xloc": [ - "default.handlebars->41->1658" + "default.handlebars->41->1660" ] }, { @@ -39131,7 +39131,7 @@ "zh-chs": "达到连接数量上限", "zh-cht": "達到連接數量上限", "xloc": [ - "default.handlebars->41->2911" + "default.handlebars->41->2913" ] }, { @@ -39222,8 +39222,8 @@ "zh-chs": "Megabyte", "zh-cht": "Megabyte", "xloc": [ - "default.handlebars->41->2952", - "default.handlebars->41->2957" + "default.handlebars->41->2954", + "default.handlebars->41->2959" ] }, { @@ -39249,8 +39249,8 @@ "zh-cht": "記憶體", "xloc": [ "default-mobile.handlebars->11->596", - "default.handlebars->41->1483", - "default.handlebars->41->2931", + "default.handlebars->41->1485", + "default.handlebars->41->2933", "default.handlebars->container->column_l->p40->3->1->p40type->3" ] }, @@ -39280,16 +39280,16 @@ "default-mobile.handlebars->11->342", "default-mobile.handlebars->11->534", "default-mobile.handlebars->11->542", - "default.handlebars->41->1411", - "default.handlebars->41->1419", + "default.handlebars->41->1413", + "default.handlebars->41->1421", "default.handlebars->41->555", "default.handlebars->41->559", "default.handlebars->41->570", "default.handlebars->41->583", "default.handlebars->41->586", "default.handlebars->41->592", - "default.handlebars->41->801", - "default.handlebars->41->869" + "default.handlebars->41->802", + "default.handlebars->41->870" ] }, { @@ -39315,7 +39315,7 @@ "zh-cht": "網格代理控制台", "xloc": [ "default-mobile.handlebars->11->668", - "default.handlebars->41->2047" + "default.handlebars->41->2049" ] }, { @@ -39384,7 +39384,7 @@ "zh-chs": "网格中继", "zh-cht": "Mesh Relay", "xloc": [ - "default.handlebars->41->875" + "default.handlebars->41->876" ] }, { @@ -39411,7 +39411,7 @@ "xloc": [ "default.handlebars->41->376", "default.handlebars->41->628", - "default.handlebars->41->868" + "default.handlebars->41->869" ] }, { @@ -39438,7 +39438,7 @@ "xloc": [ "default.handlebars->41->382", "default.handlebars->41->634", - "default.handlebars->41->874" + "default.handlebars->41->875" ] }, { @@ -39463,8 +39463,8 @@ "zh-chs": "MeshAction(.txt)", "zh-cht": "MeshAction(.txt)", "xloc": [ - "default.handlebars->41->1179", - "default.handlebars->41->1181" + "default.handlebars->41->1181", + "default.handlebars->41->1183" ] }, { @@ -39489,7 +39489,7 @@ "zh-chs": "MeshAgent流量", "zh-cht": "MeshAgent流量", "xloc": [ - "default.handlebars->41->2969" + "default.handlebars->41->2971" ] }, { @@ -39514,7 +39514,7 @@ "zh-chs": "MeshAgent更新", "zh-cht": "MeshAgent更新", "xloc": [ - "default.handlebars->41->2970" + "default.handlebars->41->2972" ] }, { @@ -39536,7 +39536,11 @@ "ru": "MeshCentral", "sv": "MeshCentral", "tr": "MeshCentral", - "zh-chs": "网格中心" + "zh-chs": "网格中心", + "xloc": [ + "default.handlebars->41->1047", + "default.handlebars->41->701" + ] }, { "cs": "MeshCentral Agent pro Android", @@ -39583,7 +39587,7 @@ "tr": "MeshCentral Yardımcısı", "zh-chs": "MeshCentral 助手", "xloc": [ - "default.handlebars->41->2113", + "default.handlebars->41->2115", "default.handlebars->41->500", "default.handlebars->41->527", "default.handlebars->41->539" @@ -39730,7 +39734,7 @@ "zh-chs": "MeshCentral错误", "zh-cht": "MeshCentral錯誤", "xloc": [ - "default.handlebars->41->1851" + "default.handlebars->41->1853" ] }, { @@ -39755,7 +39759,7 @@ "zh-chs": "MeshCentral路由器", "zh-cht": "MeshCentral Router", "xloc": [ - "default.handlebars->41->1165" + "default.handlebars->41->1167" ] }, { @@ -39867,7 +39871,7 @@ "zh-chs": "MeshCentral 路由器是Windows工具,用于TCP端口映射。例如,您可以通过该服务器将RDP放入远程设备。", "zh-cht": "MeshCentral Router是Windows工具,用於TCP介面映射。例如,你可以通過該伺服器將RDP放入遠程裝置。", "xloc": [ - "default.handlebars->41->1160" + "default.handlebars->41->1162" ] }, { @@ -39938,7 +39942,7 @@ "zh-chs": "MeshCentral服务器同级化", "zh-cht": "MeshCentral伺服器同級化", "xloc": [ - "default.handlebars->41->2968" + "default.handlebars->41->2970" ] }, { @@ -39988,7 +39992,7 @@ "zh-chs": "MeshCentral版本", "zh-cht": "MeshCentral版本", "xloc": [ - "default.handlebars->41->1847", + "default.handlebars->41->1849", "default.handlebars->41->187", "default.handlebars->41->189" ] @@ -40015,9 +40019,9 @@ "zh-chs": "MeshCmd", "zh-cht": "MeshCmd", "xloc": [ - "default.handlebars->41->1177", + "default.handlebars->41->1179", "default.handlebars->41->359", - "default.handlebars->41->921" + "default.handlebars->41->922" ] }, { @@ -40042,7 +40046,7 @@ "zh-chs": "MeshCmd(Linux ARM,32位)", "zh-cht": "MeshCmd(Linux ARM,32位)", "xloc": [ - "default.handlebars->41->1189" + "default.handlebars->41->1191" ] }, { @@ -40067,7 +40071,7 @@ "zh-chs": "MeshCmd(Linux ARM,64位)", "zh-cht": "MeshCmd(Linux ARM,64位)", "xloc": [ - "default.handlebars->41->1190" + "default.handlebars->41->1192" ] }, { @@ -40092,7 +40096,7 @@ "zh-chs": "MeshCmd(Linux x86,32bit)", "zh-cht": "MeshCmd(Linux x86,32bit)", "xloc": [ - "default.handlebars->41->1185" + "default.handlebars->41->1187" ] }, { @@ -40117,7 +40121,7 @@ "zh-chs": "MeshCmd(Linux x86,64位)", "zh-cht": "MeshCmd(Linux x86,64位)", "xloc": [ - "default.handlebars->41->1186" + "default.handlebars->41->1188" ] }, { @@ -40142,7 +40146,7 @@ "zh-chs": "MeshCmd(Win32可执行档案)", "zh-cht": "MeshCmd(Win32可執行檔案)", "xloc": [ - "default.handlebars->41->1183" + "default.handlebars->41->1185" ] }, { @@ -40167,7 +40171,7 @@ "zh-chs": "MeshCmd(Win64可执行档案)", "zh-cht": "MeshCmd(Win64可執行檔案)", "xloc": [ - "default.handlebars->41->1184" + "default.handlebars->41->1186" ] }, { @@ -40214,7 +40218,7 @@ "zh-chs": "MeshCmd(macOS,ARM-64位)", "zh-cht": "MeshCmd(macOS,ARM-64位)", "xloc": [ - "default.handlebars->41->1188" + "default.handlebars->41->1190" ] }, { @@ -40239,7 +40243,7 @@ "zh-chs": "MeshCmd(macOS,x86-ARM-64位)", "zh-cht": "MeshCmd(macOS,x86-ARM-64位)", "xloc": [ - "default.handlebars->41->1187" + "default.handlebars->41->1189" ] }, { @@ -40264,7 +40268,7 @@ "zh-chs": "MeshCmd是一个可以执行许多不同操作的命令行工具。可以选择下载和编辑操作档案以提供服务器信息和凭据。", "zh-cht": "MeshCmd是一個可以執行許多不同操作的命令行工具。可以選擇下載和編輯操作檔案以提供伺服器訊息和憑據。", "xloc": [ - "default.handlebars->41->1174" + "default.handlebars->41->1176" ] }, { @@ -40358,10 +40362,10 @@ "zh-chs": "消息", "zh-cht": "訊息", "xloc": [ - "default.handlebars->41->1140", - "default.handlebars->41->2813", + "default.handlebars->41->1142", + "default.handlebars->41->2815", "default.handlebars->41->512", - "default.handlebars->41->900" + "default.handlebars->41->901" ] }, { @@ -40411,7 +40415,7 @@ "zh-chs": "消息调度器", "zh-cht": "電郵調度器", "xloc": [ - "default.handlebars->41->2966" + "default.handlebars->41->2968" ] }, { @@ -40485,8 +40489,8 @@ "tr": "haberci", "zh-chs": "信使", "xloc": [ - "default.handlebars->41->2756", - "default.handlebars->41->2822" + "default.handlebars->41->2758", + "default.handlebars->41->2824" ] }, { @@ -40628,7 +40632,7 @@ "zh-chs": "移动设备", "xloc": [ "default-mobile.handlebars->11->548", - "default.handlebars->41->1425" + "default.handlebars->41->1427" ] }, { @@ -40679,9 +40683,9 @@ "xloc": [ "default-mobile.handlebars->11->543", "default-mobile.handlebars->11->597", - "default.handlebars->41->1420", - "default.handlebars->41->1484", - "default.handlebars->41->1808" + "default.handlebars->41->1422", + "default.handlebars->41->1486", + "default.handlebars->41->1810" ] }, { @@ -40706,7 +40710,7 @@ "zh-chs": "修改节点位置", "zh-cht": "修改節點位置", "xloc": [ - "default.handlebars->41->751" + "default.handlebars->41->752" ] }, { @@ -40731,7 +40735,7 @@ "zh-chs": "摩尔达维亚文", "zh-cht": "摩爾達維亞文", "xloc": [ - "default.handlebars->41->1659" + "default.handlebars->41->1661" ] }, { @@ -40779,7 +40783,7 @@ "zh-cht": "母板", "xloc": [ "default-mobile.handlebars->11->590", - "default.handlebars->41->1477" + "default.handlebars->41->1479" ] }, { @@ -40804,7 +40808,7 @@ "zh-chs": "将此设备移到其他设备组", "zh-cht": "將此裝置移至其他裝置群", "xloc": [ - "default.handlebars->41->912" + "default.handlebars->41->913" ] }, { @@ -40854,7 +40858,7 @@ "zh-chs": "移动:“{0}”到“{1}”", "zh-cht": "移動:“{0}”到“{1}”", "xloc": [ - "default.handlebars->41->2254" + "default.handlebars->41->2256" ] }, { @@ -40879,7 +40883,7 @@ "zh-chs": "将设备{0}移动到组{1}", "zh-cht": "將設備{0}移動到組{1}", "xloc": [ - "default.handlebars->41->2287" + "default.handlebars->41->2289" ] }, { @@ -40928,8 +40932,8 @@ "tr": "Birden Çok Sorun", "zh-chs": "多个问题", "xloc": [ - "default.handlebars->41->2142", - "default.handlebars->41->2156" + "default.handlebars->41->2144", + "default.handlebars->41->2158" ] }, { @@ -40975,7 +40979,7 @@ "zh-chs": "多路复用器", "zh-cht": "多工器", "xloc": [ - "default.handlebars->41->2774" + "default.handlebars->41->2776" ] }, { @@ -41000,7 +41004,7 @@ "zh-chs": "必须以用户身份运行", "zh-cht": "必須以用戶身份運行", "xloc": [ - "default.handlebars->41->1120", + "default.handlebars->41->1122", "default.handlebars->41->674" ] }, @@ -41184,7 +41188,7 @@ "zh-chs": "我的服务器控制台", "zh-cht": "我的伺服器控制台", "xloc": [ - "default.handlebars->41->1490" + "default.handlebars->41->1492" ] }, { @@ -41386,8 +41390,8 @@ "zh-chs": "我的密钥", "zh-cht": "我的密鍵", "xloc": [ - "default.handlebars->41->1534", - "default.handlebars->41->1537" + "default.handlebars->41->1536", + "default.handlebars->41->1539" ] }, { @@ -41397,7 +41401,7 @@ "ru": "NLA не поддерживается", "fr": "NLA non supporté", "xloc": [ - "default.handlebars->41->1209" + "default.handlebars->41->1211" ] }, { @@ -41513,25 +41517,25 @@ "default-mobile.handlebars->11->584", "default-mobile.handlebars->11->628", "default-mobile.handlebars->11->651", - "default.handlebars->41->1268", - "default.handlebars->41->1284", - "default.handlebars->41->1403", - "default.handlebars->41->1471", + "default.handlebars->41->1270", + "default.handlebars->41->1286", + "default.handlebars->41->1405", + "default.handlebars->41->1473", "default.handlebars->41->148", "default.handlebars->41->162", - "default.handlebars->41->1798", - "default.handlebars->41->1826", - "default.handlebars->41->1831", - "default.handlebars->41->1863", - "default.handlebars->41->1997", - "default.handlebars->41->2389", - "default.handlebars->41->2498", - "default.handlebars->41->2514", - "default.handlebars->41->2521", - "default.handlebars->41->2571", - "default.handlebars->41->2590", + "default.handlebars->41->1800", + "default.handlebars->41->1828", + "default.handlebars->41->1833", + "default.handlebars->41->1865", + "default.handlebars->41->1999", + "default.handlebars->41->2391", + "default.handlebars->41->2500", + "default.handlebars->41->2516", + "default.handlebars->41->2523", + "default.handlebars->41->2573", + "default.handlebars->41->2592", "default.handlebars->41->314", - "default.handlebars->41->780", + "default.handlebars->41->781", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->3", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->3", "default.handlebars->container->column_l->p42->p42tbl->1->0->2" @@ -41584,7 +41588,7 @@ "zh-chs": "名称1,名称2,名称3", "zh-cht": "名稱1,名稱2,名稱3", "xloc": [ - "default.handlebars->41->2479" + "default.handlebars->41->2481" ] }, { @@ -41609,7 +41613,7 @@ "zh-chs": "纳瓦霍文", "zh-cht": "納瓦霍文", "xloc": [ - "default.handlebars->41->1660" + "default.handlebars->41->1662" ] }, { @@ -41634,7 +41638,7 @@ "zh-chs": "恩东加", "zh-cht": "恩東加", "xloc": [ - "default.handlebars->41->1661" + "default.handlebars->41->1663" ] }, { @@ -41659,7 +41663,7 @@ "zh-chs": "尼泊尔文", "zh-cht": "尼泊爾文", "xloc": [ - "default.handlebars->41->1662" + "default.handlebars->41->1664" ] }, { @@ -41684,7 +41688,7 @@ "zh-chs": "网络接口", "zh-cht": "網絡介面", "xloc": [ - "default.handlebars->41->1158" + "default.handlebars->41->1160" ] }, { @@ -41732,8 +41736,8 @@ "zh-cht": "網路", "xloc": [ "default-mobile.handlebars->11->562", - "default.handlebars->41->1435", - "default.handlebars->41->1449" + "default.handlebars->41->1437", + "default.handlebars->41->1451" ] }, { @@ -41759,7 +41763,7 @@ "zh-cht": "新", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1->1", - "default.handlebars->41->1825", + "default.handlebars->41->1827", "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1->1" ] }, @@ -41785,7 +41789,7 @@ "zh-chs": "生成新的2FA备份代码", "zh-cht": "生成新的2FA備份代碼", "xloc": [ - "default.handlebars->41->2294" + "default.handlebars->41->2296" ] }, { @@ -41810,7 +41814,7 @@ "zh-chs": "新账户", "xloc": [ "default-mobile.handlebars->11->709", - "default.handlebars->41->2862" + "default.handlebars->41->2864" ] }, { @@ -41883,9 +41887,9 @@ "zh-cht": "新裝置群", "xloc": [ "default-mobile.handlebars->11->122", - "default.handlebars->41->1150", - "default.handlebars->41->1791", - "default.handlebars->41->1814" + "default.handlebars->41->1152", + "default.handlebars->41->1793", + "default.handlebars->41->1816" ] }, { @@ -41912,8 +41916,8 @@ "xloc": [ "default-mobile.handlebars->11->151", "default-mobile.handlebars->11->480", - "default.handlebars->41->1363", - "default.handlebars->41->2186", + "default.handlebars->41->1365", + "default.handlebars->41->2188", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "sharing.handlebars->11->59", @@ -42038,8 +42042,8 @@ "zh-chs": "新密码*", "zh-cht": "新密碼*", "xloc": [ - "default.handlebars->41->1971", - "default.handlebars->41->1972" + "default.handlebars->41->1973", + "default.handlebars->41->1974" ] }, { @@ -42066,8 +42070,8 @@ "xloc": [ "default-mobile.handlebars->11->117", "default-mobile.handlebars->11->118", - "default.handlebars->41->1786", - "default.handlebars->41->1787" + "default.handlebars->41->1788", + "default.handlebars->41->1789" ] }, { @@ -42138,8 +42142,8 @@ "zh-chs": "没有AMT", "zh-cht": "沒有AMT", "xloc": [ - "default.handlebars->41->1002", - "default.handlebars->41->1024" + "default.handlebars->41->1003", + "default.handlebars->41->1025" ] }, { @@ -42211,7 +42215,7 @@ "tr": "Aracı Konsolu Yok", "zh-chs": "无座席控制台", "xloc": [ - "default.handlebars->41->2680" + "default.handlebars->41->2682" ] }, { @@ -42235,7 +42239,7 @@ "tr": "Konsol Yok", "zh-chs": "没有控制台", "xloc": [ - "default.handlebars->41->2611" + "default.handlebars->41->2613" ] }, { @@ -42262,8 +42266,8 @@ "xloc": [ "default-mobile.handlebars->11->301", "default-mobile.handlebars->11->302", - "default.handlebars->41->815", - "default.handlebars->41->816" + "default.handlebars->41->816", + "default.handlebars->41->817" ] }, { @@ -42288,10 +42292,10 @@ "zh-chs": "没有桌面", "zh-cht": "沒有桌面", "xloc": [ - "default.handlebars->41->1004", - "default.handlebars->41->1026", - "default.handlebars->41->2083", - "default.handlebars->41->2607" + "default.handlebars->41->1005", + "default.handlebars->41->1027", + "default.handlebars->41->2085", + "default.handlebars->41->2609" ] }, { @@ -42316,8 +42320,8 @@ "zh-chs": "不能访问桌面", "zh-cht": "不能訪問桌面", "xloc": [ - "default.handlebars->41->2043", - "default.handlebars->41->2676" + "default.handlebars->41->2045", + "default.handlebars->41->2678" ] }, { @@ -42363,9 +42367,9 @@ "zh-chs": "找不到事件", "zh-cht": "找不到事件", "xloc": [ - "default.handlebars->41->1401", - "default.handlebars->41->2365", - "default.handlebars->41->2742" + "default.handlebars->41->1403", + "default.handlebars->41->2367", + "default.handlebars->41->2744" ] }, { @@ -42391,8 +42395,8 @@ "zh-cht": "不能存取檔案", "xloc": [ "default-mobile.handlebars->11->666", - "default.handlebars->41->2045", - "default.handlebars->41->2679" + "default.handlebars->41->2047", + "default.handlebars->41->2681" ] }, { @@ -42418,10 +42422,10 @@ "zh-cht": "沒有檔案", "xloc": [ "default-mobile.handlebars->11->689", - "default.handlebars->41->1001", - "default.handlebars->41->1023", - "default.handlebars->41->2085", - "default.handlebars->41->2610" + "default.handlebars->41->1002", + "default.handlebars->41->1024", + "default.handlebars->41->2087", + "default.handlebars->41->2612" ] }, { @@ -42446,8 +42450,8 @@ "zh-chs": "无输入", "zh-cht": "無輸入", "xloc": [ - "default.handlebars->41->1021", - "default.handlebars->41->999" + "default.handlebars->41->1000", + "default.handlebars->41->1022" ] }, { @@ -42474,8 +42478,8 @@ "xloc": [ "default-mobile.handlebars->11->667", "default-mobile.handlebars->11->690", - "default.handlebars->41->2046", - "default.handlebars->41->2086" + "default.handlebars->41->2048", + "default.handlebars->41->2088" ] }, { @@ -42596,7 +42600,7 @@ "zh-chs": "没有成员", "zh-cht": "沒有成員", "xloc": [ - "default.handlebars->41->2551" + "default.handlebars->41->2553" ] }, { @@ -42621,7 +42625,7 @@ "zh-chs": "没有新的设备组", "zh-cht": "沒有新的裝置群", "xloc": [ - "default.handlebars->41->2492" + "default.handlebars->41->2494" ] }, { @@ -42641,7 +42645,7 @@ "ru": "Запретить добавление новых устройств", "tr": "Yeni Cihaz Yok", "xloc": [ - "default.handlebars->41->2493" + "default.handlebars->41->2495" ] }, { @@ -42666,8 +42670,8 @@ "zh-chs": "没有政策", "zh-cht": "沒有政策", "xloc": [ - "default.handlebars->41->1902", - "default.handlebars->41->1962" + "default.handlebars->41->1904", + "default.handlebars->41->1964" ] }, { @@ -42708,8 +42712,8 @@ "ru": "Нет доступа к выполнению команд", "tr": "Uzaktan Komut Yok", "xloc": [ - "default.handlebars->41->2613", - "default.handlebars->41->2682" + "default.handlebars->41->2615", + "default.handlebars->41->2684" ] }, { @@ -42729,8 +42733,8 @@ "ru": "Нет доступа к удаленному управлению", "tr": "Uzaktan Kumanda Yok", "xloc": [ - "default.handlebars->41->2606", - "default.handlebars->41->2675" + "default.handlebars->41->2608", + "default.handlebars->41->2677" ] }, { @@ -42750,8 +42754,8 @@ "ru": "Нет доступа к перезагрузке/выключению", "tr": "Sıfırlama/Kapatma Yok", "xloc": [ - "default.handlebars->41->2615", - "default.handlebars->41->2684" + "default.handlebars->41->2617", + "default.handlebars->41->2686" ] }, { @@ -42779,10 +42783,10 @@ "default-mobile.handlebars->11->137", "default-mobile.handlebars->11->642", "default-mobile.handlebars->11->697", - "default.handlebars->41->1016", - "default.handlebars->41->1038", - "default.handlebars->41->1823", - "default.handlebars->41->2095" + "default.handlebars->41->1017", + "default.handlebars->41->1039", + "default.handlebars->41->1825", + "default.handlebars->41->2097" ] }, { @@ -42829,7 +42833,7 @@ "zh-cht": "沒有TLS加密", "xloc": [ "default-mobile.handlebars->11->389", - "default.handlebars->41->1136", + "default.handlebars->41->1138", "default.handlebars->41->463" ] }, @@ -42856,10 +42860,10 @@ "zh-cht": "沒有終端", "xloc": [ "default-mobile.handlebars->11->688", - "default.handlebars->41->1000", - "default.handlebars->41->1022", - "default.handlebars->41->2084", - "default.handlebars->41->2609" + "default.handlebars->41->1001", + "default.handlebars->41->1023", + "default.handlebars->41->2086", + "default.handlebars->41->2611" ] }, { @@ -42885,8 +42889,8 @@ "zh-cht": "不能訪問終端", "xloc": [ "default-mobile.handlebars->11->665", - "default.handlebars->41->2044", - "default.handlebars->41->2678" + "default.handlebars->41->2046", + "default.handlebars->41->2680" ] }, { @@ -42911,7 +42915,7 @@ "zh-chs": "没有工具(MeshCmd /路由器)", "zh-cht": "沒有工具(MeshCmd /路由器)", "xloc": [ - "default.handlebars->41->2494" + "default.handlebars->41->2496" ] }, { @@ -42931,8 +42935,8 @@ "ru": "Нет доступа к удалению", "tr": "Kaldırma Yok", "xloc": [ - "default.handlebars->41->2612", - "default.handlebars->41->2681" + "default.handlebars->41->2614", + "default.handlebars->41->2683" ] }, { @@ -42952,8 +42956,8 @@ "ru": "Нет доступа к пробуждению", "tr": "Uyanmak yok", "xloc": [ - "default.handlebars->41->2614", - "default.handlebars->41->2683" + "default.handlebars->41->2616", + "default.handlebars->41->2685" ] }, { @@ -42979,7 +42983,7 @@ "zh-cht": "該設備當前無可用操作。", "xloc": [ "default-mobile.handlebars->11->372", - "default.handlebars->41->1112" + "default.handlebars->41->1114" ] }, { @@ -43011,8 +43015,8 @@ "fr": "Aucun agent d'appareil relayé au travers de l'agent", "xloc": [ "default-mobile.handlebars->11->625", - "default.handlebars->41->1800", - "default.handlebars->41->1860" + "default.handlebars->41->1802", + "default.handlebars->41->1862" ] }, { @@ -43036,8 +43040,8 @@ "tr": "Otomatik güncelleme yok", "zh-chs": "没有自动更新", "xloc": [ - "default.handlebars->41->2140", - "default.handlebars->41->2154" + "default.handlebars->41->2142", + "default.handlebars->41->2156" ] }, { @@ -43062,8 +43066,8 @@ "zh-chs": "没有共同的设备组", "zh-cht": "沒有共同的裝置群", "xloc": [ - "default.handlebars->41->2557", - "default.handlebars->41->2710" + "default.handlebars->41->2559", + "default.handlebars->41->2712" ] }, { @@ -43188,7 +43192,7 @@ "zh-chs": "找不到设备。", "zh-cht": "找不到裝置。", "xloc": [ - "default.handlebars->41->768" + "default.handlebars->41->769" ] }, { @@ -43213,8 +43217,8 @@ "zh-chs": "没有共同的设备", "zh-cht": "沒有共同的裝置", "xloc": [ - "default.handlebars->41->2563", - "default.handlebars->41->2722" + "default.handlebars->41->2565", + "default.handlebars->41->2724" ] }, { @@ -43264,7 +43268,7 @@ "zh-chs": "该设备组中没有设备。", "zh-cht": "該裝置群中沒有裝置。", "xloc": [ - "default.handlebars->41->2158" + "default.handlebars->41->2160" ] }, { @@ -43366,7 +43370,7 @@ "zh-chs": "找不到文件", "zh-cht": "找不到文件", "xloc": [ - "default.handlebars->41->1344", + "default.handlebars->41->1346", "sharing.handlebars->11->45" ] }, @@ -43392,7 +43396,7 @@ "zh-chs": "找不到群组。", "zh-cht": "找不到群組。", "xloc": [ - "default.handlebars->41->2497" + "default.handlebars->41->2499" ] }, { @@ -43418,7 +43422,7 @@ "zh-cht": "沒有此裝置的訊息。", "xloc": [ "default-mobile.handlebars->11->602", - "default.handlebars->41->1489" + "default.handlebars->41->1491" ] }, { @@ -43467,7 +43471,7 @@ "zh-chs": "未定义键盘快捷键", "xloc": [ "default-mobile.handlebars->11->439", - "default.handlebars->41->1267" + "default.handlebars->41->1269" ] }, { @@ -43487,7 +43491,7 @@ "ru": "Клавиатурные строки не заданны", "tr": "Tanımlanmış klavye dizesi yok", "xloc": [ - "default.handlebars->41->1272" + "default.handlebars->41->1274" ] }, { @@ -43561,7 +43565,7 @@ "zh-chs": "找不到位置。", "zh-cht": "找不到位置。", "xloc": [ - "default.handlebars->41->770" + "default.handlebars->41->771" ] }, { @@ -43571,7 +43575,7 @@ "ru": "Больше не является ретранслятором для \\\"{0}\\\".", "fr": "Plus de relais pour \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2354" + "default.handlebars->41->2356" ] }, { @@ -43621,7 +43625,7 @@ "zh-chs": "没有其他相同类型的设备组。", "zh-cht": "沒有其他相同類型的裝置群。", "xloc": [ - "default.handlebars->41->1153" + "default.handlebars->41->1155" ] }, { @@ -43646,7 +43650,7 @@ "zh-chs": "此用户没有电话号码", "xloc": [ "default-mobile.handlebars->11->740", - "default.handlebars->41->2893" + "default.handlebars->41->2895" ] }, { @@ -43696,7 +43700,7 @@ "zh-chs": "没有录音。", "zh-cht": "沒有錄音。", "xloc": [ - "default.handlebars->41->2744" + "default.handlebars->41->2746" ] }, { @@ -43707,7 +43711,7 @@ "fr": "Pas d'appareil relais disponible.", "xloc": [ "default-mobile.handlebars->11->648", - "default.handlebars->41->1994" + "default.handlebars->41->1996" ] }, { @@ -43753,7 +43757,7 @@ "zh-chs": "没有服务器权限", "zh-cht": "沒有伺服器權限", "xloc": [ - "default.handlebars->41->2585" + "default.handlebars->41->2587" ] }, { @@ -43799,7 +43803,7 @@ "zh-chs": "没有用户组成员身份", "zh-cht": "沒有用戶群成員身份", "xloc": [ - "default.handlebars->41->2716" + "default.handlebars->41->2718" ] }, { @@ -43824,7 +43828,7 @@ "zh-chs": "无用户管理权限", "xloc": [ "default-mobile.handlebars->11->738", - "default.handlebars->41->2891" + "default.handlebars->41->2893" ] }, { @@ -43849,7 +43853,7 @@ "zh-chs": "未找到相应的用户。", "zh-cht": "未找到相應的用戶。", "xloc": [ - "default.handlebars->41->2397" + "default.handlebars->41->2399" ] }, { @@ -43874,7 +43878,7 @@ "zh-chs": "没有拥有特殊设备权限的用户", "zh-cht": "沒有擁有特殊裝置權限的用戶", "xloc": [ - "default.handlebars->41->965" + "default.handlebars->41->966" ] }, { @@ -43984,39 +43988,39 @@ "default-mobile.handlebars->11->429", "default-mobile.handlebars->11->477", "default-mobile.handlebars->11->630", - "default.handlebars->41->1256", - "default.handlebars->41->1854", - "default.handlebars->41->1865", - "default.handlebars->41->1879", - "default.handlebars->41->1891", - "default.handlebars->41->1898", + "default.handlebars->41->1258", + "default.handlebars->41->1856", + "default.handlebars->41->1867", + "default.handlebars->41->1881", + "default.handlebars->41->1893", "default.handlebars->41->1900", - "default.handlebars->41->1950", - "default.handlebars->41->2143", - "default.handlebars->41->2168", - "default.handlebars->41->2173", - "default.handlebars->41->2373", - "default.handlebars->41->2518", + "default.handlebars->41->1902", + "default.handlebars->41->1952", + "default.handlebars->41->2145", + "default.handlebars->41->2170", + "default.handlebars->41->2175", + "default.handlebars->41->2375", "default.handlebars->41->2520", - "default.handlebars->41->2528", - "default.handlebars->41->2540", + "default.handlebars->41->2522", + "default.handlebars->41->2530", + "default.handlebars->41->2542", "default.handlebars->41->258", - "default.handlebars->41->2604", - "default.handlebars->41->2616", - "default.handlebars->41->2626", - "default.handlebars->41->2630", - "default.handlebars->41->2642", - "default.handlebars->41->2837", + "default.handlebars->41->2606", + "default.handlebars->41->2618", + "default.handlebars->41->2628", + "default.handlebars->41->2632", + "default.handlebars->41->2644", + "default.handlebars->41->2839", "default.handlebars->41->286", "default.handlebars->41->368", "default.handlebars->41->369", - "default.handlebars->41->777", - "default.handlebars->41->788", + "default.handlebars->41->778", "default.handlebars->41->789", + "default.handlebars->41->790", "default.handlebars->41->82", - "default.handlebars->41->859", - "default.handlebars->41->866", - "default.handlebars->41->879", + "default.handlebars->41->860", + "default.handlebars->41->867", + "default.handlebars->41->880", "default.handlebars->container->column_l->p41->3->3->p41traceStatus" ] }, @@ -44088,7 +44092,7 @@ "zh-chs": "挪威文", "zh-cht": "挪威文", "xloc": [ - "default.handlebars->41->1663" + "default.handlebars->41->1665" ] }, { @@ -44113,7 +44117,7 @@ "zh-chs": "挪威文(Bokmal)", "zh-cht": "挪威文(Bokmal)", "xloc": [ - "default.handlebars->41->1664" + "default.handlebars->41->1666" ] }, { @@ -44138,7 +44142,7 @@ "zh-chs": "挪威文(尼诺斯克)", "zh-cht": "挪威文(尼諾斯克)", "xloc": [ - "default.handlebars->41->1665" + "default.handlebars->41->1667" ] }, { @@ -44163,7 +44167,7 @@ "zh-chs": "未激活", "zh-cht": "未激活", "xloc": [ - "default.handlebars->41->1452" + "default.handlebars->41->1454" ] }, { @@ -44190,7 +44194,7 @@ "xloc": [ "default-mobile.handlebars->11->291", "default-mobile.handlebars->11->566", - "default.handlebars->41->803" + "default.handlebars->41->804" ] }, { @@ -44217,7 +44221,7 @@ "xloc": [ "default-mobile.handlebars->11->290", "default-mobile.handlebars->11->565", - "default.handlebars->41->802" + "default.handlebars->41->803" ] }, { @@ -44242,8 +44246,8 @@ "zh-chs": "未连接", "zh-cht": "未連接", "xloc": [ - "default.handlebars->41->2134", - "default.handlebars->41->2147" + "default.handlebars->41->2136", + "default.handlebars->41->2149" ] }, { @@ -44269,7 +44273,7 @@ "zh-cht": "未知", "xloc": [ "default-mobile.handlebars->11->576", - "default.handlebars->41->1463" + "default.handlebars->41->1465" ] }, { @@ -44318,7 +44322,7 @@ "zh-chs": "不在服务器上", "zh-cht": "不在伺服器上", "xloc": [ - "default.handlebars->41->2766" + "default.handlebars->41->2768" ] }, { @@ -44343,8 +44347,8 @@ "zh-chs": "没有设置", "zh-cht": "沒有設置", "xloc": [ - "default.handlebars->41->2591", - "default.handlebars->41->2592" + "default.handlebars->41->2593", + "default.handlebars->41->2594" ] }, { @@ -44369,7 +44373,7 @@ "zh-chs": "未经审核的", "zh-cht": "未經審核的", "xloc": [ - "default.handlebars->41->2690" + "default.handlebars->41->2692" ] }, { @@ -44397,12 +44401,12 @@ "default-mobile.handlebars->11->332", "default-mobile.handlebars->11->381", "default-mobile.handlebars->11->636", - "default.handlebars->41->1010", - "default.handlebars->41->1032", - "default.handlebars->41->1042", - "default.handlebars->41->1910", - "default.handlebars->41->2652", - "default.handlebars->41->896" + "default.handlebars->41->1011", + "default.handlebars->41->1033", + "default.handlebars->41->1043", + "default.handlebars->41->1912", + "default.handlebars->41->2654", + "default.handlebars->41->897" ] }, { @@ -44452,9 +44456,9 @@ "zh-chs": "通知设置", "zh-cht": "通知設定", "xloc": [ - "default.handlebars->41->1773", - "default.handlebars->41->2133", - "default.handlebars->41->997", + "default.handlebars->41->1775", + "default.handlebars->41->2135", + "default.handlebars->41->998", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->10" ] }, @@ -44523,7 +44527,7 @@ "zh-chs": "通知音效", "zh-cht": "通知音效", "xloc": [ - "default.handlebars->41->1768" + "default.handlebars->41->1770" ] }, { @@ -44548,8 +44552,8 @@ "zh-chs": "通知", "zh-cht": "通知", "xloc": [ - "default.handlebars->41->1899", - "default.handlebars->41->867" + "default.handlebars->41->1901", + "default.handlebars->41->868" ] }, { @@ -44574,7 +44578,7 @@ "zh-chs": "通知", "zh-cht": "通知", "xloc": [ - "default.handlebars->41->2658", + "default.handlebars->41->2660", "default.handlebars->41->283" ] }, @@ -44600,7 +44604,7 @@ "zh-chs": "仅通知", "zh-cht": "只通知", "xloc": [ - "default.handlebars->41->1091" + "default.handlebars->41->1093" ] }, { @@ -44625,9 +44629,9 @@ "zh-chs": "通知使用者", "zh-cht": "通知使用者", "xloc": [ - "default.handlebars->41->2005", - "default.handlebars->41->2009", - "default.handlebars->41->2012" + "default.handlebars->41->2007", + "default.handlebars->41->2011", + "default.handlebars->41->2014" ] }, { @@ -44652,7 +44656,7 @@ "zh-chs": "通知{0}", "zh-cht": "通知{0}", "xloc": [ - "default.handlebars->41->2437" + "default.handlebars->41->2439" ] }, { @@ -44676,7 +44680,7 @@ "tr": "Boş", "zh-chs": "空值", "xloc": [ - "default.handlebars->41->2960" + "default.handlebars->41->2962" ] }, { @@ -44729,13 +44733,13 @@ "default-mobile.handlebars->11->531", "default-mobile.handlebars->container->page_content->column_l->p10->p10dialog->5", "default-mobile.handlebars->dialog->idx_dlgButtonBar", - "default.handlebars->41->1845", - "default.handlebars->41->2138", - "default.handlebars->41->2152", - "default.handlebars->41->831", - "default.handlebars->41->835", - "default.handlebars->41->839", - "default.handlebars->41->845", + "default.handlebars->41->1847", + "default.handlebars->41->2140", + "default.handlebars->41->2154", + "default.handlebars->41->832", + "default.handlebars->41->836", + "default.handlebars->41->840", + "default.handlebars->41->846", "default.handlebars->container->dialog->idx_dlgButtonBar", "login-mobile.handlebars->dialog->idx_dlgButtonBar", "login.handlebars->dialog->idx_dlgButtonBar", @@ -44793,7 +44797,7 @@ "zh-cht": "操作系統名稱", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p2->xdevicesBar->1->5", - "default.handlebars->41->785", + "default.handlebars->41->786", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->15->1" ] }, @@ -44830,7 +44834,7 @@ "zh-chs": "欧舒丹", "zh-cht": "歐舒丹", "xloc": [ - "default.handlebars->41->1666" + "default.handlebars->41->1668" ] }, { @@ -44856,7 +44860,7 @@ "zh-cht": "發生在{0}", "xloc": [ "default-mobile.handlebars->11->706", - "default.handlebars->41->2859" + "default.handlebars->41->2861" ] }, { @@ -44927,7 +44931,7 @@ "zh-chs": "离线用户", "zh-cht": "離線用戶", "xloc": [ - "default.handlebars->41->2394" + "default.handlebars->41->2396" ] }, { @@ -44978,7 +44982,7 @@ "zh-cht": "舊密碼:", "xloc": [ "default-mobile.handlebars->11->116", - "default.handlebars->41->1785" + "default.handlebars->41->1787" ] }, { @@ -45003,7 +45007,7 @@ "zh-chs": "一天", "zh-cht": "一天", "xloc": [ - "default.handlebars->41->2370" + "default.handlebars->41->2372" ] }, { @@ -45040,7 +45044,7 @@ "ru": "Одноразовый пароль", "fr": "Mot de passe à usage unique (OTP)", "xloc": [ - "default.handlebars->41->2843" + "default.handlebars->41->2845" ] }, { @@ -45092,7 +45096,7 @@ "zh-chs": "在线用户", "zh-cht": "在線用戶", "xloc": [ - "default.handlebars->41->2393" + "default.handlebars->41->2395" ] }, { @@ -45116,7 +45120,7 @@ "tr": "Yalnızca ilk 100 kullanıcıyı göster", "zh-chs": "只显示前 100 个用户", "xloc": [ - "default.handlebars->41->2438" + "default.handlebars->41->2440" ] }, { @@ -45142,8 +45146,8 @@ "zh-cht": "只能編輯小於200k的檔案。", "xloc": [ "default-mobile.handlebars->11->488", - "default.handlebars->41->1371", - "default.handlebars->41->748", + "default.handlebars->41->1373", + "default.handlebars->41->749", "sharing.handlebars->11->67" ] }, @@ -45220,7 +45224,7 @@ "zh-chs": "在设备上打开页面", "zh-cht": "在裝置上打開頁面", "xloc": [ - "default.handlebars->41->1043" + "default.handlebars->41->1044" ] }, { @@ -45313,7 +45317,7 @@ "zh-chs": "打开XTerm终端", "zh-cht": "打開XTerm終端", "xloc": [ - "default.handlebars->41->922" + "default.handlebars->41->923" ] }, { @@ -45363,7 +45367,7 @@ "zh-chs": "打开此计算机的聊天窗口", "zh-cht": "打開此電腦的聊天窗口", "xloc": [ - "default.handlebars->41->903", + "default.handlebars->41->904", "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, @@ -45473,7 +45477,7 @@ "zh-chs": "开头:{0}", "zh-cht": "開場:{0}", "xloc": [ - "default.handlebars->41->2222" + "default.handlebars->41->2224" ] }, { @@ -45499,13 +45503,13 @@ "zh-cht": "操作系統", "xloc": [ "default-mobile.handlebars->11->533", - "default.handlebars->41->1176", - "default.handlebars->41->1410", - "default.handlebars->41->2810", + "default.handlebars->41->1178", + "default.handlebars->41->1412", + "default.handlebars->41->2812", "default.handlebars->41->324", "default.handlebars->41->494", "default.handlebars->41->542", - "default.handlebars->41->829" + "default.handlebars->41->830" ] }, { @@ -45531,9 +45535,9 @@ "zh-cht": "操作", "xloc": [ "default-mobile.handlebars->11->371", - "default.handlebars->41->1111", - "default.handlebars->41->2421", - "default.handlebars->41->2505", + "default.handlebars->41->1113", + "default.handlebars->41->2423", + "default.handlebars->41->2507", "default.handlebars->41->658", "default.handlebars->41->677" ] @@ -45592,7 +45596,7 @@ "zh-chs": "奥里亚", "zh-cht": "奧里亞", "xloc": [ - "default.handlebars->41->1667" + "default.handlebars->41->1669" ] }, { @@ -45617,7 +45621,7 @@ "zh-chs": "奥罗莫", "zh-cht": "奧羅莫", "xloc": [ - "default.handlebars->41->1668" + "default.handlebars->41->1670" ] }, { @@ -45693,7 +45697,7 @@ "zh-cht": "過時的", "xloc": [ "default-mobile.handlebars->11->530", - "default.handlebars->41->844" + "default.handlebars->41->845" ] }, { @@ -45851,7 +45855,7 @@ "zh-chs": "自己的过程", "zh-cht": "自己的過程", "xloc": [ - "default.handlebars->41->1293" + "default.handlebars->41->1295" ] }, { @@ -45876,7 +45880,7 @@ "zh-chs": "PID", "zh-cht": "PID", "xloc": [ - "default.handlebars->41->1289", + "default.handlebars->41->1291", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->1" ] }, @@ -45902,7 +45906,7 @@ "zh-chs": "推", "xloc": [ "default-mobile.handlebars->11->608", - "default.handlebars->41->1496" + "default.handlebars->41->1498" ] }, { @@ -45927,7 +45931,7 @@ "zh-chs": "向下翻页", "xloc": [ "default-mobile.handlebars->11->424", - "default.handlebars->41->1251" + "default.handlebars->41->1253" ] }, { @@ -45952,7 +45956,7 @@ "zh-chs": "向上翻页", "xloc": [ "default-mobile.handlebars->11->423", - "default.handlebars->41->1250" + "default.handlebars->41->1252" ] }, { @@ -46002,7 +46006,7 @@ "zh-cht": "零件號", "xloc": [ "default-mobile.handlebars->11->595", - "default.handlebars->41->1482" + "default.handlebars->41->1484" ] }, { @@ -46027,7 +46031,7 @@ "zh-chs": "部分的", "zh-cht": "部分的", "xloc": [ - "default.handlebars->41->2409" + "default.handlebars->41->2411" ] }, { @@ -46098,7 +46102,7 @@ "xloc": [ "default-mobile.handlebars->11->135", "default-mobile.handlebars->11->640", - "default.handlebars->41->1821" + "default.handlebars->41->1823" ] }, { @@ -46123,7 +46127,7 @@ "zh-chs": "部分权限", "zh-cht": "部分權限", "xloc": [ - "default.handlebars->41->2588" + "default.handlebars->41->2590" ] }, { @@ -46176,18 +46180,18 @@ "default-mobile.handlebars->11->387", "default-mobile.handlebars->11->455", "default-mobile.handlebars->11->462", - "default.handlebars->41->1134", - "default.handlebars->41->1223", - "default.handlebars->41->1320", - "default.handlebars->41->1327", - "default.handlebars->41->1813", - "default.handlebars->41->1968", - "default.handlebars->41->2467", - "default.handlebars->41->2468", - "default.handlebars->41->2622", + "default.handlebars->41->1136", + "default.handlebars->41->1225", + "default.handlebars->41->1322", + "default.handlebars->41->1329", + "default.handlebars->41->1815", + "default.handlebars->41->1970", + "default.handlebars->41->2469", + "default.handlebars->41->2470", "default.handlebars->41->2624", - "default.handlebars->41->2695", - "default.handlebars->41->2696", + "default.handlebars->41->2626", + "default.handlebars->41->2697", + "default.handlebars->41->2698", "default.handlebars->41->318", "default.handlebars->41->461", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->2->1", @@ -46336,7 +46340,7 @@ "zh-chs": "密码已更改。", "xloc": [ "default-mobile.handlebars->11->734", - "default.handlebars->41->2887" + "default.handlebars->41->2889" ] }, { @@ -46387,7 +46391,7 @@ "zh-chs": "密码提示", "zh-cht": "密碼提示", "xloc": [ - "default.handlebars->41->2697" + "default.handlebars->41->2699" ] }, { @@ -46413,7 +46417,7 @@ "zh-cht": "密碼提示:", "xloc": [ "default-mobile.handlebars->11->119", - "default.handlebars->41->1788" + "default.handlebars->41->1790" ] }, { @@ -46512,8 +46516,8 @@ "account-invite.html->2->5", "default-mobile.handlebars->11->111", "default-mobile.handlebars->11->112", - "default.handlebars->41->1780", - "default.handlebars->41->1781", + "default.handlebars->41->1782", + "default.handlebars->41->1783", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->4->1", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->6->1", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->7->1->2->1", @@ -46556,9 +46560,9 @@ "default-mobile.handlebars->11->493", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->1341", - "default.handlebars->41->1377", - "default.handlebars->41->2195", + "default.handlebars->41->1343", + "default.handlebars->41->1379", + "default.handlebars->41->2197", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->3", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", @@ -46735,7 +46739,7 @@ "zh-cht": "執行代理指令", "xloc": [ "default-mobile.handlebars->11->611", - "default.handlebars->41->1499" + "default.handlebars->41->1501" ] }, { @@ -46804,7 +46808,7 @@ "zh-chs": "执行英特尔®AMT激活和配置。", "zh-cht": "執行英特爾®AMT激活和配置。", "xloc": [ - "default.handlebars->41->1914", + "default.handlebars->41->1916", "default.handlebars->41->438" ] }, @@ -46918,7 +46922,7 @@ "zh-chs": "执行英特尔® AMT 关机?", "xloc": [ "default-mobile.handlebars->11->377", - "default.handlebars->41->1126" + "default.handlebars->41->1128" ] }, { @@ -46943,7 +46947,7 @@ "zh-chs": "执行英特尔® AMT 电源?", "xloc": [ "default-mobile.handlebars->11->375", - "default.handlebars->41->1124" + "default.handlebars->41->1126" ] }, { @@ -46968,7 +46972,7 @@ "zh-chs": "执行英特尔® AMT 重置?", "xloc": [ "default-mobile.handlebars->11->379", - "default.handlebars->41->1128" + "default.handlebars->41->1130" ] }, { @@ -47044,7 +47048,7 @@ "zh-cht": "在裝置上執行電源操作", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3", - "default.handlebars->41->895", + "default.handlebars->41->896", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->1", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->1", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1" @@ -47068,7 +47072,7 @@ "tr": "Güç kapatılsın mı?", "xloc": [ "default-mobile.handlebars->11->347", - "default.handlebars->41->987" + "default.handlebars->41->988" ] }, { @@ -47089,7 +47093,7 @@ "tr": "Güç açık mı?", "xloc": [ "default-mobile.handlebars->11->349", - "default.handlebars->41->989" + "default.handlebars->41->990" ] }, { @@ -47114,7 +47118,7 @@ "zh-chs": "执行电源操作= {0},强制执行= {1}", "zh-cht": "執行電源操作= {0},強制執行= {1}", "xloc": [ - "default.handlebars->41->2227" + "default.handlebars->41->2229" ] }, { @@ -47139,7 +47143,7 @@ "zh-chs": "没有权限", "xloc": [ "default-mobile.handlebars->11->715", - "default.handlebars->41->2868" + "default.handlebars->41->2870" ] }, { @@ -47165,8 +47169,8 @@ "zh-cht": "權限", "xloc": [ "default-mobile.handlebars->11->700", - "default.handlebars->41->2098", - "default.handlebars->41->2392" + "default.handlebars->41->2100", + "default.handlebars->41->2394" ] }, { @@ -47191,7 +47195,7 @@ "zh-chs": "波斯/伊朗", "zh-cht": "波斯/伊朗", "xloc": [ - "default.handlebars->41->1669" + "default.handlebars->41->1671" ] }, { @@ -47267,10 +47271,10 @@ "default-mobile.handlebars->11->81", "default-mobile.handlebars->11->96", "default-mobile.handlebars->11->98", - "default.handlebars->41->1514", - "default.handlebars->41->1517", + "default.handlebars->41->1516", + "default.handlebars->41->1519", "default.handlebars->41->241", - "default.handlebars->41->2673" + "default.handlebars->41->2675" ] }, { @@ -47295,7 +47299,7 @@ "zh-chs": "电话号码", "zh-cht": "電話號碼", "xloc": [ - "default.handlebars->41->2603" + "default.handlebars->41->2605" ] }, { @@ -47321,8 +47325,8 @@ "zh-cht": "電話號碼:", "xloc": [ "default-mobile.handlebars->11->97", - "default.handlebars->41->1516", - "default.handlebars->41->2672" + "default.handlebars->41->1518", + "default.handlebars->41->2674" ] }, { @@ -47369,7 +47373,7 @@ "zh-chs": "将节点放在这里", "zh-cht": "將節點放在這裡", "xloc": [ - "default.handlebars->41->763" + "default.handlebars->41->764" ] }, { @@ -47521,7 +47525,7 @@ "zh-cht": "請等待幾分鐘以接收驗證。", "xloc": [ "default-mobile.handlebars->11->107", - "default.handlebars->41->1775" + "default.handlebars->41->1777" ] }, { @@ -47547,7 +47551,7 @@ "zh-cht": "外掛指令", "xloc": [ "default.handlebars->41->299", - "default.handlebars->41->2997" + "default.handlebars->41->2999" ] }, { @@ -47726,7 +47730,7 @@ "zh-cht": "政策", "xloc": [ "default-mobile.handlebars->11->134", - "default.handlebars->41->1820" + "default.handlebars->41->1822" ] }, { @@ -47751,7 +47755,7 @@ "zh-chs": "波兰文", "zh-cht": "波蘭文", "xloc": [ - "default.handlebars->41->1670" + "default.handlebars->41->1672" ] }, { @@ -47813,7 +47817,7 @@ "ru": "Синхронизация имени порта", "tr": "Bağlantı Noktası Adı Senkronizasyonu", "xloc": [ - "default.handlebars->41->1875" + "default.handlebars->41->1877" ] }, { @@ -47834,7 +47838,7 @@ "tr": "Port numarası", "xloc": [ "default-mobile.handlebars->11->280", - "default.handlebars->41->792" + "default.handlebars->41->793" ] }, { @@ -47855,7 +47859,7 @@ "tr": "Bağlantı Noktası Türü", "xloc": [ "default-mobile.handlebars->11->281", - "default.handlebars->41->793" + "default.handlebars->41->794" ] }, { @@ -47922,7 +47926,7 @@ "zh-chs": "葡萄牙文", "zh-cht": "葡萄牙文", "xloc": [ - "default.handlebars->41->1671" + "default.handlebars->41->1673" ] }, { @@ -47947,7 +47951,7 @@ "zh-chs": "葡萄牙文(巴西)", "zh-cht": "葡萄牙文(巴西)", "xloc": [ - "default.handlebars->41->1672" + "default.handlebars->41->1674" ] }, { @@ -48020,8 +48024,8 @@ "xloc": [ "default-mobile.handlebars->11->346", "default-mobile.handlebars->11->348", - "default.handlebars->41->986", - "default.handlebars->41->988" + "default.handlebars->41->987", + "default.handlebars->41->989" ] }, { @@ -48071,7 +48075,7 @@ "zh-chs": "电源状态", "zh-cht": "電源狀態", "xloc": [ - "default.handlebars->41->2145", + "default.handlebars->41->2147", "default.handlebars->container->column_l->p21->p21main->1->1->meshPowerChartDiv->1" ] }, @@ -48099,7 +48103,7 @@ "xloc": [ "default-mobile.handlebars->11->235", "default-mobile.handlebars->11->367", - "default.handlebars->41->1104", + "default.handlebars->41->1106", "default.handlebars->41->6" ] }, @@ -48198,7 +48202,7 @@ "zh-chs": "预激活", "zh-cht": "預激活", "xloc": [ - "default.handlebars->41->1453" + "default.handlebars->41->1455" ] }, { @@ -48251,7 +48255,7 @@ "zh-chs": "存在于服务器上", "zh-cht": "存在於伺服器上", "xloc": [ - "default.handlebars->41->2765" + "default.handlebars->41->2767" ] }, { @@ -48380,9 +48384,9 @@ "xloc": [ "default-mobile.handlebars->11->86", "default-mobile.handlebars->11->87", - "default.handlebars->41->1509", - "default.handlebars->41->2667", - "default.handlebars->41->2693", + "default.handlebars->41->1511", + "default.handlebars->41->2669", + "default.handlebars->41->2695", "default.handlebars->41->311" ] }, @@ -48408,7 +48412,7 @@ "zh-chs": "打印屏幕", "xloc": [ "default-mobile.handlebars->11->418", - "default.handlebars->41->1245" + "default.handlebars->41->1247" ] }, { @@ -48576,7 +48580,7 @@ "zh-chs": "进程控制", "zh-cht": "進程控制", "xloc": [ - "default.handlebars->41->1305" + "default.handlebars->41->1307" ] }, { @@ -48600,7 +48604,7 @@ "tr": "İşlem Ayrıntıları, #{0}", "zh-chs": "流程详情,#{0}", "xloc": [ - "default.handlebars->41->1280" + "default.handlebars->41->1282" ] }, { @@ -48674,7 +48678,7 @@ "zh-chs": "处理控制台命令:“{0}”", "zh-cht": "處理控制台命令:“{0}”", "xloc": [ - "default.handlebars->41->2219" + "default.handlebars->41->2221" ] }, { @@ -48724,7 +48728,7 @@ "zh-chs": "用户同意提示", "zh-cht": "用戶同意提示", "xloc": [ - "default.handlebars->41->1090" + "default.handlebars->41->1092" ] }, { @@ -48749,9 +48753,9 @@ "zh-chs": "用户同意提示", "zh-cht": "用戶同意提示", "xloc": [ - "default.handlebars->41->2006", - "default.handlebars->41->2010", - "default.handlebars->41->2013" + "default.handlebars->41->2008", + "default.handlebars->41->2012", + "default.handlebars->41->2015" ] }, { @@ -48776,7 +48780,7 @@ "zh-chs": "协议", "zh-cht": "協議", "xloc": [ - "default.handlebars->41->2763", + "default.handlebars->41->2765", "player.handlebars->3->32" ] }, @@ -48787,7 +48791,7 @@ "ru": "Ошибка согласования протокола ({0})", "fr": "Échec de la négociation du protocol ({0})", "xloc": [ - "default.handlebars->41->1208" + "default.handlebars->41->1210" ] }, { @@ -48835,7 +48839,7 @@ "zh-cht": "配置狀態", "xloc": [ "default-mobile.handlebars->11->570", - "default.handlebars->41->1457" + "default.handlebars->41->1459" ] }, { @@ -48882,7 +48886,7 @@ "zh-cht": "公開鏈結", "xloc": [ "default-mobile.handlebars->11->146", - "default.handlebars->41->2180" + "default.handlebars->41->2182" ] }, { @@ -48928,7 +48932,7 @@ "zh-chs": "旁遮普文", "zh-cht": "旁遮普文", "xloc": [ - "default.handlebars->41->1673" + "default.handlebars->41->1675" ] }, { @@ -48953,7 +48957,7 @@ "zh-chs": "旁遮普(印度)", "zh-cht": "旁遮普(印度)", "xloc": [ - "default.handlebars->41->1674" + "default.handlebars->41->1676" ] }, { @@ -48978,7 +48982,7 @@ "zh-chs": "旁遮普(巴基斯坦)", "zh-cht": "旁遮普(巴基斯坦)", "xloc": [ - "default.handlebars->41->1675" + "default.handlebars->41->1677" ] }, { @@ -49014,7 +49018,7 @@ "ru": "Push уведомление", "fr": "Notifications", "xloc": [ - "default.handlebars->41->2842" + "default.handlebars->41->2844" ] }, { @@ -49134,7 +49138,7 @@ "zh-chs": "盖丘亚族", "zh-cht": "蓋丘亞族", "xloc": [ - "default.handlebars->41->1676" + "default.handlebars->41->1678" ] }, { @@ -49237,9 +49241,9 @@ "default-mobile.handlebars->11->325", "default-mobile.handlebars->11->329", "default.handlebars->41->392", - "default.handlebars->41->885", - "default.handlebars->41->889", - "default.handlebars->41->925", + "default.handlebars->41->886", + "default.handlebars->41->890", + "default.handlebars->41->926", "default.handlebars->container->dialog->dialogBody->dialog7->1->td7rdpkvm" ] }, @@ -49275,7 +49279,7 @@ "zh-chs": "RDP连接", "zh-cht": "RDP連接", "xloc": [ - "default.handlebars->41->741" + "default.handlebars->41->742" ] }, { @@ -49285,7 +49289,7 @@ "ru": "Учетные данные RDP", "fr": "Informations d'identification RDP", "xloc": [ - "default.handlebars->41->1227" + "default.handlebars->41->1229" ] }, { @@ -49331,7 +49335,7 @@ "zh-chs": "RDP远程连接端口:", "zh-cht": "RDP遠程連接介面:", "xloc": [ - "default.handlebars->41->740" + "default.handlebars->41->741" ] }, { @@ -49432,7 +49436,7 @@ "zh-chs": "RSS", "zh-cht": "RSS", "xloc": [ - "default.handlebars->41->2956" + "default.handlebars->41->2958" ] }, { @@ -49482,7 +49486,7 @@ "zh-chs": "随机密码", "zh-cht": "隨機密碼", "xloc": [ - "default.handlebars->41->1969" + "default.handlebars->41->1971" ] }, { @@ -49507,7 +49511,7 @@ "zh-chs": "随机密码。", "zh-cht": "隨機密碼。", "xloc": [ - "default.handlebars->41->2469" + "default.handlebars->41->2471" ] }, { @@ -49526,7 +49530,7 @@ "ru": "Raritan Dominion KX III", "tr": "Raritan Dominion KX III", "xloc": [ - "default.handlebars->41->1809" + "default.handlebars->41->1811" ] }, { @@ -49617,9 +49621,9 @@ "zh-chs": "真正的名字", "zh-cht": "真正的名字", "xloc": [ - "default.handlebars->41->2600", "default.handlebars->41->2602", - "default.handlebars->41->2686" + "default.handlebars->41->2604", + "default.handlebars->41->2688" ] }, { @@ -49644,7 +49648,7 @@ "zh-chs": "境界", "zh-cht": "境界", "xloc": [ - "default.handlebars->41->2478" + "default.handlebars->41->2480" ] }, { @@ -49670,7 +49674,7 @@ "zh-cht": "收到無效的網絡數據", "xloc": [ "default-mobile.handlebars->11->410", - "default.handlebars->41->1206", + "default.handlebars->41->1208", "sharing.handlebars->11->10", "sharing.handlebars->11->32" ] @@ -49697,9 +49701,9 @@ "zh-chs": "记录会议", "zh-cht": "記錄會議", "xloc": [ - "default.handlebars->41->1877", - "default.handlebars->41->2527", - "default.handlebars->41->2605" + "default.handlebars->41->1879", + "default.handlebars->41->2529", + "default.handlebars->41->2607" ] }, { @@ -49749,9 +49753,9 @@ "zh-chs": "记录会议", "zh-cht": "記錄會議", "xloc": [ - "default.handlebars->41->2014", - "default.handlebars->41->2565", - "default.handlebars->41->2674" + "default.handlebars->41->2016", + "default.handlebars->41->2567", + "default.handlebars->41->2676" ] }, { @@ -49776,7 +49780,7 @@ "zh-chs": "记录细节", "zh-cht": "記錄細節", "xloc": [ - "default.handlebars->41->2777" + "default.handlebars->41->2779" ] }, { @@ -49842,7 +49846,7 @@ "ru": "Ежедневно", "tr": "Günlük yinelenen", "xloc": [ - "default.handlebars->41->1081" + "default.handlebars->41->1083" ] }, { @@ -49862,7 +49866,7 @@ "ru": "Еженедельно", "tr": "Haftalık yinelenen", "xloc": [ - "default.handlebars->41->1082" + "default.handlebars->41->1084" ] }, { @@ -49910,8 +49914,8 @@ "xloc": [ "default-mobile.handlebars->11->152", "default-mobile.handlebars->11->481", - "default.handlebars->41->1364", - "default.handlebars->41->2187", + "default.handlebars->41->1366", + "default.handlebars->41->2189", "sharing.handlebars->11->60" ] }, @@ -49974,7 +49978,7 @@ "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->760", + "default.handlebars->41->761", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->DeskToolsRefreshButton", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p40->3->3", @@ -50055,7 +50059,7 @@ "zh-cht": "中繼", "xloc": [ "default-mobile.handlebars->11->259", - "default.handlebars->41->2938", + "default.handlebars->41->2940", "default.handlebars->41->383", "default.handlebars->41->387", "default.handlebars->41->635" @@ -50083,7 +50087,7 @@ "zh-chs": "中继数量", "zh-cht": "中繼數量", "xloc": [ - "default.handlebars->41->2923" + "default.handlebars->41->2925" ] }, { @@ -50109,9 +50113,9 @@ "xloc": [ "default-mobile.handlebars->11->633", "default-mobile.handlebars->11->649", - "default.handlebars->41->1806", - "default.handlebars->41->1868", - "default.handlebars->41->1995" + "default.handlebars->41->1808", + "default.handlebars->41->1870", + "default.handlebars->41->1997" ] }, { @@ -50136,7 +50140,7 @@ "zh-chs": "中继错误", "zh-cht": "中繼錯誤", "xloc": [ - "default.handlebars->41->2916" + "default.handlebars->41->2918" ] }, { @@ -50182,8 +50186,8 @@ "zh-chs": "中继连接", "zh-cht": "中繼連接", "xloc": [ - "default.handlebars->41->2922", - "default.handlebars->41->2950" + "default.handlebars->41->2924", + "default.handlebars->41->2952" ] }, { @@ -50193,7 +50197,7 @@ "ru": "Устройство-ретранслятор", "fr": "Appareil relais", "xloc": [ - "default.handlebars->41->2362" + "default.handlebars->41->2364" ] }, { @@ -50203,7 +50207,7 @@ "ru": "Ретранслятор для", "fr": "Relais pour", "xloc": [ - "default.handlebars->41->892" + "default.handlebars->41->893" ] }, { @@ -50236,7 +50240,7 @@ "ru": "Запомнить устройство", "fr": "Se souvenir de l'appareil", "xloc": [ - "default.handlebars->41->2844" + "default.handlebars->41->2846" ] }, { @@ -50261,8 +50265,8 @@ "zh-chs": "记住凭据", "xloc": [ "default-mobile.handlebars->11->456", - "default.handlebars->41->1224", - "default.handlebars->41->1321", + "default.handlebars->41->1226", + "default.handlebars->41->1323", "mstsc.handlebars->main->1->3->1->rowremember->3->0", "ssh.handlebars->3->14" ] @@ -50275,7 +50279,7 @@ "fr": "Se souvenir du mot de passe", "xloc": [ "default-mobile.handlebars->11->461", - "default.handlebars->41->1326", + "default.handlebars->41->1328", "ssh.handlebars->3->19" ] }, @@ -50358,7 +50362,7 @@ "fr": "Se souvenir de l'utilisateur et de la clé", "xloc": [ "default-mobile.handlebars->11->460", - "default.handlebars->41->1325", + "default.handlebars->41->1327", "ssh.handlebars->3->18" ] }, @@ -50481,7 +50485,7 @@ "zh-chs": "远程剪贴板", "zh-cht": "遠程剪貼板", "xloc": [ - "default.handlebars->41->1278" + "default.handlebars->41->1280" ] }, { @@ -50507,7 +50511,7 @@ "zh-cht": "遠程命令", "xloc": [ "default-mobile.handlebars->11->675", - "default.handlebars->41->2054" + "default.handlebars->41->2056" ] }, { @@ -50536,10 +50540,10 @@ "default-mobile.handlebars->11->338", "default-mobile.handlebars->11->662", "default-mobile.handlebars->11->682", - "default.handlebars->41->2039", - "default.handlebars->41->2077", - "default.handlebars->41->910", - "default.handlebars->41->911" + "default.handlebars->41->2041", + "default.handlebars->41->2079", + "default.handlebars->41->911", + "default.handlebars->41->912" ] }, { @@ -50664,8 +50668,8 @@ "zh-chs": "远程桌面连接栏已激活/更新", "zh-cht": "遠程桌面連接欄已激活/更新", "xloc": [ - "default.handlebars->41->2233", - "default.handlebars->41->2239" + "default.handlebars->41->2235", + "default.handlebars->41->2241" ] }, { @@ -50690,7 +50694,7 @@ "zh-chs": "远程桌面连接栏失败或不受支持", "zh-cht": "遠程桌面連接欄失敗或不受支持", "xloc": [ - "default.handlebars->41->2234" + "default.handlebars->41->2236" ] }, { @@ -50715,7 +50719,7 @@ "zh-chs": "远程桌面连接栏失败或不受支持", "zh-cht": "遠程桌面連接欄失敗或不受支持", "xloc": [ - "default.handlebars->41->2240" + "default.handlebars->41->2242" ] }, { @@ -50740,9 +50744,9 @@ "zh-chs": "本地用户强行关闭了远程桌面连接", "zh-cht": "本地用戶強行關閉了遠程桌面連接", "xloc": [ - "default.handlebars->41->2231", - "default.handlebars->41->2235", - "default.handlebars->41->2241" + "default.handlebars->41->2233", + "default.handlebars->41->2237", + "default.handlebars->41->2243" ] }, { @@ -50814,7 +50818,7 @@ "zh-cht": "遠程桌面設置", "xloc": [ "default-mobile.handlebars->11->412", - "default.handlebars->41->1236", + "default.handlebars->41->1238", "default.handlebars->41->433", "sharing.handlebars->11->20" ] @@ -50990,7 +50994,7 @@ "tr": "Uzaktan Giriş Kilidi", "zh-chs": "远程输入锁定", "xloc": [ - "default.handlebars->41->1046" + "default.handlebars->41->1048" ] }, { @@ -51015,7 +51019,7 @@ "zh-chs": "远程键盘输入", "zh-cht": "遠程鍵盤輸入", "xloc": [ - "default.handlebars->41->1274", + "default.handlebars->41->1276", "sharing.handlebars->11->22" ] }, @@ -51086,7 +51090,7 @@ "tr": "Uzak Oturumlar", "zh-chs": "远程会话", "xloc": [ - "default.handlebars->41->2779" + "default.handlebars->41->2781" ] }, { @@ -51226,9 +51230,9 @@ "xloc": [ "default-mobile.handlebars->11->663", "default-mobile.handlebars->11->687", - "default.handlebars->41->2040", - "default.handlebars->41->2082", - "default.handlebars->41->2677" + "default.handlebars->41->2042", + "default.handlebars->41->2084", + "default.handlebars->41->2679" ] }, { @@ -51253,7 +51257,7 @@ "zh-chs": "远程剪贴板的有效期为60秒。", "zh-cht": "遠程剪貼板的有效期為60秒。", "xloc": [ - "default.handlebars->41->1277" + "default.handlebars->41->1279" ] }, { @@ -51420,7 +51424,7 @@ "zh-chs": "删除配置", "zh-cht": "刪除配置", "xloc": [ - "default.handlebars->41->1841" + "default.handlebars->41->1843" ] }, { @@ -51489,8 +51493,8 @@ "zh-chs": "删除设备组权限", "zh-cht": "刪除裝置群權限", "xloc": [ - "default.handlebars->41->2569", - "default.handlebars->41->2738" + "default.handlebars->41->2571", + "default.handlebars->41->2740" ] }, { @@ -51515,8 +51519,8 @@ "zh-chs": "删除设备权限", "zh-cht": "刪除裝置權限", "xloc": [ - "default.handlebars->41->2567", - "default.handlebars->41->2725" + "default.handlebars->41->2569", + "default.handlebars->41->2727" ] }, { @@ -51541,7 +51545,7 @@ "zh-chs": "删除设备共享", "zh-cht": "刪除設備共享", "xloc": [ - "default.handlebars->41->2723" + "default.handlebars->41->2725" ] }, { @@ -51565,7 +51569,7 @@ "tr": "Giriş Simgesini Kaldır", "zh-chs": "删除登录令牌", "xloc": [ - "default.handlebars->41->1833" + "default.handlebars->41->1835" ] }, { @@ -51612,7 +51616,7 @@ "zh-chs": "删除用户组成员身份", "zh-cht": "刪除用戶群成員身份", "xloc": [ - "default.handlebars->41->2734" + "default.handlebars->41->2736" ] }, { @@ -51637,8 +51641,8 @@ "zh-chs": "删除用户组权限", "zh-cht": "刪除用戶群權限", "xloc": [ - "default.handlebars->41->2103", - "default.handlebars->41->2730" + "default.handlebars->41->2105", + "default.handlebars->41->2732" ] }, { @@ -51663,7 +51667,7 @@ "zh-chs": "删除用户成员资格", "zh-cht": "刪除用戶成員資格", "xloc": [ - "default.handlebars->41->2577" + "default.handlebars->41->2579" ] }, { @@ -51688,8 +51692,8 @@ "zh-chs": "删除用户权限", "zh-cht": "刪除用戶權限", "xloc": [ - "default.handlebars->41->2101", - "default.handlebars->41->2727" + "default.handlebars->41->2103", + "default.handlebars->41->2729" ] }, { @@ -51714,7 +51718,7 @@ "zh-chs": "删除所有两因素认证。", "zh-cht": "刪除所有二因子鑑別。", "xloc": [ - "default.handlebars->41->2700" + "default.handlebars->41->2702" ] }, { @@ -51739,7 +51743,7 @@ "zh-chs": "删除此用户标识的所有先前事件。", "zh-cht": "刪除此用戶標識的所有先前事件。", "xloc": [ - "default.handlebars->41->2470" + "default.handlebars->41->2472" ] }, { @@ -51764,7 +51768,7 @@ "zh-chs": "断开连接后移除设备", "zh-cht": "斷開連接後删除裝置", "xloc": [ - "default.handlebars->41->2017" + "default.handlebars->41->2019" ] }, { @@ -51789,8 +51793,8 @@ "zh-chs": "删除设备共享", "zh-cht": "刪除設備共享", "xloc": [ - "default.handlebars->41->1929", - "default.handlebars->41->968" + "default.handlebars->41->1931", + "default.handlebars->41->969" ] }, { @@ -51814,7 +51818,7 @@ "tr": "Etkin olmayanı kaldır", "zh-chs": "移除不活跃", "xloc": [ - "default.handlebars->41->1878" + "default.handlebars->41->1880" ] }, { @@ -51838,7 +51842,7 @@ "tr": "Giriş anahtarını kaldır", "zh-chs": "删除登录令牌", "xloc": [ - "default.handlebars->41->1828" + "default.handlebars->41->1830" ] }, { @@ -51863,7 +51867,7 @@ "zh-chs": "删除节点位置", "zh-cht": "刪除節點位置", "xloc": [ - "default.handlebars->41->752" + "default.handlebars->41->753" ] }, { @@ -51889,7 +51893,7 @@ "zh-cht": "刪除電話號碼", "xloc": [ "default-mobile.handlebars->11->95", - "default.handlebars->41->1513" + "default.handlebars->41->1515" ] }, { @@ -51939,7 +51943,7 @@ "zh-chs": "删除此设备", "zh-cht": "刪除此裝置", "xloc": [ - "default.handlebars->41->914" + "default.handlebars->41->915" ] }, { @@ -51964,7 +51968,7 @@ "zh-chs": "删除此用户", "zh-cht": "刪除此用戶", "xloc": [ - "default.handlebars->41->2662" + "default.handlebars->41->2664" ] }, { @@ -51989,7 +51993,7 @@ "zh-chs": "删除用户组成员身份", "zh-cht": "刪除用戶群成員身份", "xloc": [ - "default.handlebars->41->2714" + "default.handlebars->41->2716" ] }, { @@ -52014,7 +52018,7 @@ "zh-chs": "删除此设备的用户组权限", "zh-cht": "刪除此裝置的用戶群權限", "xloc": [ - "default.handlebars->41->2561" + "default.handlebars->41->2563" ] }, { @@ -52039,8 +52043,8 @@ "zh-chs": "删除此设备组的用户组权限", "zh-cht": "刪除此裝置群的用戶群權限", "xloc": [ - "default.handlebars->41->2555", - "default.handlebars->41->961" + "default.handlebars->41->2557", + "default.handlebars->41->962" ] }, { @@ -52065,11 +52069,11 @@ "zh-chs": "删除此设备组的用户权限", "zh-cht": "刪除此裝置群的用戶權限", "xloc": [ - "default.handlebars->41->1925", - "default.handlebars->41->2549", - "default.handlebars->41->2708", - "default.handlebars->41->2720", - "default.handlebars->41->962" + "default.handlebars->41->1927", + "default.handlebars->41->2551", + "default.handlebars->41->2710", + "default.handlebars->41->2722", + "default.handlebars->41->963" ] }, { @@ -52110,7 +52114,7 @@ "ru": "Удалено отображаемое имя учетной записи.", "tr": "Hesabın görünen adı kaldırıldı.", "xloc": [ - "default.handlebars->41->2331" + "default.handlebars->41->2333" ] }, { @@ -52135,7 +52139,7 @@ "zh-chs": "删除身份验证应用程序", "zh-cht": "刪除身份驗證應用程序", "xloc": [ - "default.handlebars->41->2293" + "default.handlebars->41->2295" ] }, { @@ -52160,7 +52164,7 @@ "zh-chs": "删除的设备共享{0}", "zh-cht": "刪除的設備共享{0}", "xloc": [ - "default.handlebars->41->2304" + "default.handlebars->41->2306" ] }, { @@ -52185,7 +52189,7 @@ "zh-chs": "从设备组{1}中删除了设备{0}", "zh-cht": "從設備組{1}中刪除了設備{0}", "xloc": [ - "default.handlebars->41->2289" + "default.handlebars->41->2291" ] }, { @@ -52209,7 +52213,7 @@ "tr": "Kaldırılan giriş belirteci", "zh-chs": "删除了登录令牌", "xloc": [ - "default.handlebars->41->2318" + "default.handlebars->41->2320" ] }, { @@ -52234,7 +52238,7 @@ "zh-chs": "已删除用户{0}的电话号码", "zh-cht": "已刪除用戶{0}的電話號碼", "xloc": [ - "default.handlebars->41->2299" + "default.handlebars->41->2301" ] }, { @@ -52258,7 +52262,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulama cihazı kaldırıldı", "zh-chs": "删除了推送通知身份验证设备", "xloc": [ - "default.handlebars->41->2316" + "default.handlebars->41->2318" ] }, { @@ -52283,7 +52287,7 @@ "zh-chs": "移除安全密钥", "zh-cht": "移除安全密鑰", "xloc": [ - "default.handlebars->41->2296" + "default.handlebars->41->2298" ] }, { @@ -52308,9 +52312,9 @@ "zh-chs": "删除了{0}的用户设备权限", "zh-cht": "刪除了{0}的用戶設備權限", "xloc": [ - "default.handlebars->41->2262", - "default.handlebars->41->2283", - "default.handlebars->41->2288" + "default.handlebars->41->2264", + "default.handlebars->41->2285", + "default.handlebars->41->2290" ] }, { @@ -52335,7 +52339,7 @@ "zh-chs": "从设备组{1}中删除了用户组{0}", "zh-cht": "從設備組{1}中刪除了用戶組{0}", "xloc": [ - "default.handlebars->41->2272" + "default.handlebars->41->2274" ] }, { @@ -52360,7 +52364,7 @@ "zh-chs": "从设备组{1}中删除了用户{0}", "zh-cht": "已從設備組{1}中刪除用戶{0}", "xloc": [ - "default.handlebars->41->2285" + "default.handlebars->41->2287" ] }, { @@ -52385,8 +52389,8 @@ "zh-chs": "从用户组{1}中删除了用户{0}", "zh-cht": "從用戶組{1}中刪除了用戶{0}", "xloc": [ - "default.handlebars->41->2264", - "default.handlebars->41->2274" + "default.handlebars->41->2266", + "default.handlebars->41->2276" ] }, { @@ -52415,9 +52419,9 @@ "default-mobile.handlebars->11->485", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", - "default.handlebars->41->1368", - "default.handlebars->41->2191", - "default.handlebars->41->746", + "default.handlebars->41->1370", + "default.handlebars->41->2193", + "default.handlebars->41->747", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->filesContextMenu->1", @@ -52468,7 +52472,7 @@ "zh-chs": "重命名:“{0}”为“{1}”", "zh-cht": "重命名:“{0}”為“{1}”", "xloc": [ - "default.handlebars->41->2250" + "default.handlebars->41->2252" ] }, { @@ -52493,7 +52497,7 @@ "zh-chs": "报告日", "zh-cht": "報告日", "xloc": [ - "default.handlebars->41->2371" + "default.handlebars->41->2373" ] }, { @@ -52518,7 +52522,7 @@ "zh-chs": "报告类型", "zh-cht": "報告類型", "xloc": [ - "default.handlebars->41->2366" + "default.handlebars->41->2368" ] }, { @@ -52538,7 +52542,7 @@ "ru": "Отчет не вернул данных", "tr": "Rapor hiçbir bütün döndürmedi.", "xloc": [ - "default.handlebars->41->2815" + "default.handlebars->41->2817" ] }, { @@ -52560,7 +52564,7 @@ "sv": "Report.csv", "tr": "Report.csv", "xloc": [ - "default.handlebars->41->2857" + "default.handlebars->41->2859" ] }, { @@ -52694,7 +52698,7 @@ "tr": "Ayrıntılar isteniyor...", "zh-chs": "查询详情...", "xloc": [ - "default.handlebars->41->1281" + "default.handlebars->41->1283" ] }, { @@ -52719,7 +52723,7 @@ "zh-chs": "要求:", "zh-cht": "要求:", "xloc": [ - "default.handlebars->41->1789" + "default.handlebars->41->1791" ] }, { @@ -52745,8 +52749,8 @@ "zh-cht": "要求:{0}。", "xloc": [ "default-mobile.handlebars->11->120", - "default.handlebars->41->2475", - "default.handlebars->41->2698" + "default.handlebars->41->2477", + "default.handlebars->41->2700" ] }, { @@ -52771,7 +52775,7 @@ "zh-chs": "需要安装MeshCentral路由器", "zh-cht": "需要安裝MeshCentral路由器", "xloc": [ - "default.handlebars->41->924" + "default.handlebars->41->925" ] }, { @@ -52796,9 +52800,9 @@ "zh-chs": "需要安装MeshCentral Router。", "zh-cht": "需要安裝MeshCentral Router。", "xloc": [ - "default.handlebars->41->926", - "default.handlebars->41->928", - "default.handlebars->41->930" + "default.handlebars->41->927", + "default.handlebars->41->929", + "default.handlebars->41->931" ] }, { @@ -52851,7 +52855,7 @@ "zh-cht": "重設", "xloc": [ "default-mobile.handlebars->11->366", - "default.handlebars->41->1103", + "default.handlebars->41->1105", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devMapToolbar" ] }, @@ -52878,7 +52882,7 @@ "zh-cht": "重置/關閉電源", "xloc": [ "default-mobile.handlebars->11->676", - "default.handlebars->41->2055" + "default.handlebars->41->2057" ] }, { @@ -53035,9 +53039,9 @@ "zh-cht": "重置/關閉", "xloc": [ "default-mobile.handlebars->11->696", - "default.handlebars->41->1015", - "default.handlebars->41->1037", - "default.handlebars->41->2092" + "default.handlebars->41->1016", + "default.handlebars->41->1038", + "default.handlebars->41->2094" ] }, { @@ -53062,7 +53066,7 @@ "zh-chs": "重新启动", "zh-cht": "重新啟動", "xloc": [ - "default.handlebars->41->1299", + "default.handlebars->41->1301", "player.handlebars->p11->deskarea0->deskarea4->3" ] }, @@ -53088,7 +53092,7 @@ "zh-chs": "还原服务器", "zh-cht": "還原伺服器", "xloc": [ - "default.handlebars->41->1846" + "default.handlebars->41->1848" ] }, { @@ -53138,7 +53142,7 @@ "zh-chs": "使用备份还原服务器,这将删除现有服务器数据。仅当您知道自己在做什么时才这样做。", "zh-cht": "使用備份還原伺服器,這將刪除現有伺服器數據。僅當你知道自己在做什麼時才這樣做。", "xloc": [ - "default.handlebars->41->1843" + "default.handlebars->41->1845" ] }, { @@ -53164,8 +53168,8 @@ "zh-cht": "受限制的", "xloc": [ "default-mobile.handlebars->11->288", - "default.handlebars->41->800", - "default.handlebars->41->940" + "default.handlebars->41->801", + "default.handlebars->41->941" ] }, { @@ -53190,7 +53194,7 @@ "zh-chs": "限制条件", "zh-cht": "限制條件", "xloc": [ - "default.handlebars->41->2589" + "default.handlebars->41->2591" ] }, { @@ -53223,7 +53227,7 @@ "zh-chs": "雷托-罗曼语", "zh-cht": "雷托-羅曼語", "xloc": [ - "default.handlebars->41->1677" + "default.handlebars->41->1679" ] }, { @@ -53248,7 +53252,7 @@ "zh-chs": "正确的", "xloc": [ "default-mobile.handlebars->11->427", - "default.handlebars->41->1254" + "default.handlebars->41->1256" ] }, { @@ -53273,7 +53277,7 @@ "zh-chs": "罗马尼亚文", "zh-cht": "羅馬尼亞文", "xloc": [ - "default.handlebars->41->1678" + "default.handlebars->41->1680" ] }, { @@ -53298,7 +53302,7 @@ "zh-chs": "罗马尼亚文(摩尔达维亚)", "zh-cht": "羅馬尼亞文(摩爾達維亞)", "xloc": [ - "default.handlebars->41->1679" + "default.handlebars->41->1681" ] }, { @@ -53325,8 +53329,8 @@ "xloc": [ "default-mobile.handlebars->11->138", "default-mobile.handlebars->11->474", - "default.handlebars->41->1352", - "default.handlebars->41->2159", + "default.handlebars->41->1354", + "default.handlebars->41->2161", "sharing.handlebars->11->49" ] }, @@ -53541,8 +53545,8 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->1101", - "default.handlebars->41->1121", + "default.handlebars->41->1103", + "default.handlebars->41->1123", "default.handlebars->41->675" ] }, @@ -53568,7 +53572,7 @@ "zh-chs": "运行MeshCentral Router,然后单击“安装”以使其可从浏览器启动。", "zh-cht": "運行MeshCentral Router,然後單擊“安裝”以使其可從瀏覽器啟動。", "xloc": [ - "default.handlebars->41->1163" + "default.handlebars->41->1165" ] }, { @@ -53593,7 +53597,7 @@ "zh-chs": "以代理身份运行", "zh-cht": "以代理身份運行", "xloc": [ - "default.handlebars->41->1118", + "default.handlebars->41->1120", "default.handlebars->41->672" ] }, @@ -53619,7 +53623,7 @@ "zh-chs": "以用户身份运行,如果没有用户,则运行代理", "zh-cht": "以用戶身份運行,如果沒有用戶,則運行代理", "xloc": [ - "default.handlebars->41->1119", + "default.handlebars->41->1121", "default.handlebars->41->673" ] }, @@ -53670,7 +53674,7 @@ "zh-chs": "在所选设备上运行命令。", "zh-cht": "在所選裝置上運行命令。", "xloc": [ - "default.handlebars->41->1114", + "default.handlebars->41->1116", "default.handlebars->41->668" ] }, @@ -53713,8 +53717,8 @@ "ru": "Запущен", "tr": "Koşma", "xloc": [ - "default.handlebars->41->1283", - "default.handlebars->41->1287" + "default.handlebars->41->1285", + "default.handlebars->41->1289" ] }, { @@ -53739,7 +53743,7 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->2226" + "default.handlebars->41->2228" ] }, { @@ -53764,7 +53768,7 @@ "zh-chs": "以用户身份运行命令", "zh-cht": "以用戶身份運行命令", "xloc": [ - "default.handlebars->41->2301" + "default.handlebars->41->2303" ] }, { @@ -53789,7 +53793,7 @@ "zh-chs": "如果可能,以用户身份运行命令", "zh-cht": "如果可能,以用戶身份運行命令", "xloc": [ - "default.handlebars->41->2302" + "default.handlebars->41->2304" ] }, { @@ -53814,7 +53818,7 @@ "zh-chs": "俄文", "zh-cht": "俄文", "xloc": [ - "default.handlebars->41->1680" + "default.handlebars->41->1682" ] }, { @@ -53839,7 +53843,7 @@ "zh-chs": "俄文(摩尔达维亚)", "zh-cht": "俄文(摩爾達維亞)", "xloc": [ - "default.handlebars->41->1681" + "default.handlebars->41->1683" ] }, { @@ -53906,7 +53910,7 @@ "zh-chs": "SCP", "xloc": [ "default.handlebars->41->394", - "default.handlebars->41->929" + "default.handlebars->41->930" ] }, { @@ -53952,8 +53956,8 @@ "zh-chs": "短信", "zh-cht": "短信", "xloc": [ - "default.handlebars->41->2649", - "default.handlebars->41->2654", + "default.handlebars->41->2651", + "default.handlebars->41->2656", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3", "login.handlebars->container->column_l->centralTable->1->0->logincell->resettokenpanel->1->5->1->2->1->3", "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3", @@ -53983,7 +53987,7 @@ "zh-chs": "此用户的短信功能电话号码。", "zh-cht": "此用戶的短信功能電話號碼。", "xloc": [ - "default.handlebars->41->2670" + "default.handlebars->41->2672" ] }, { @@ -54008,7 +54012,7 @@ "zh-chs": "短信错误", "xloc": [ "default-mobile.handlebars->11->742", - "default.handlebars->41->2895" + "default.handlebars->41->2897" ] }, { @@ -54033,7 +54037,7 @@ "zh-chs": "短信错误:{0}", "xloc": [ "default-mobile.handlebars->11->743", - "default.handlebars->41->2896" + "default.handlebars->41->2898" ] }, { @@ -54078,7 +54082,7 @@ "zh-chs": "短信网关未启用", "xloc": [ "default-mobile.handlebars->11->737", - "default.handlebars->41->2890" + "default.handlebars->41->2892" ] }, { @@ -54089,7 +54093,7 @@ "ru": "SMS-сообщение", "fr": "Message SMS", "xloc": [ - "default.handlebars->41->2840" + "default.handlebars->41->2842" ] }, { @@ -54162,7 +54166,7 @@ "zh-chs": "短信发送成功。", "xloc": [ "default-mobile.handlebars->11->741", - "default.handlebars->41->2894" + "default.handlebars->41->2896" ] }, { @@ -54207,7 +54211,7 @@ "zh-chs": "SSH", "xloc": [ "default.handlebars->41->393", - "default.handlebars->41->927" + "default.handlebars->41->928" ] }, { @@ -54243,7 +54247,7 @@ "zh-chs": "SSH 连接", "xloc": [ "default-mobile.handlebars->11->445", - "default.handlebars->41->743" + "default.handlebars->41->744" ] }, { @@ -54269,8 +54273,8 @@ "xloc": [ "default-mobile.handlebars->11->443", "default-mobile.handlebars->11->479", - "default.handlebars->41->1307", - "default.handlebars->41->1362" + "default.handlebars->41->1309", + "default.handlebars->41->1364" ] }, { @@ -54316,7 +54320,7 @@ "zh-chs": "SSH远程连接端口:", "xloc": [ "default-mobile.handlebars->11->444", - "default.handlebars->41->742" + "default.handlebars->41->743" ] }, { @@ -54349,8 +54353,8 @@ "xloc": [ "default-mobile.handlebars->11->324", "default-mobile.handlebars->11->328", - "default.handlebars->41->884", - "default.handlebars->41->888" + "default.handlebars->41->885", + "default.handlebars->41->889" ] }, { @@ -54362,8 +54366,8 @@ "xloc": [ "default-mobile.handlebars->11->323", "default-mobile.handlebars->11->327", - "default.handlebars->41->883", - "default.handlebars->41->887" + "default.handlebars->41->884", + "default.handlebars->41->888" ] }, { @@ -54375,8 +54379,8 @@ "xloc": [ "default-mobile.handlebars->11->322", "default-mobile.handlebars->11->326", - "default.handlebars->41->882", - "default.handlebars->41->886" + "default.handlebars->41->883", + "default.handlebars->41->887" ] }, { @@ -54386,7 +54390,7 @@ "ru": "SSL-сертификат не на сервере", "fr": "Le certificat SSL n'est pas sur le serveur", "xloc": [ - "default.handlebars->41->1212" + "default.handlebars->41->1214" ] }, { @@ -54396,7 +54400,7 @@ "ru": "SSL не разрешен сервером", "fr": "SSL n'est pas autorisé par le serveur", "xloc": [ - "default.handlebars->41->1211" + "default.handlebars->41->1213" ] }, { @@ -54406,7 +54410,7 @@ "ru": "SSL требуется сервером", "fr": "SSL est requis par le serveur", "xloc": [ - "default.handlebars->41->1210" + "default.handlebars->41->1212" ] }, { @@ -54416,7 +54420,7 @@ "ru": "SSL с аутентификацией пользователя, требуется сервером", "fr": "SSL avec une authentification de l'utilisateur est requise par le serveur", "xloc": [ - "default.handlebars->41->1215" + "default.handlebars->41->1217" ] }, { @@ -54467,7 +54471,7 @@ "zh-chs": "萨米(拉普兰)", "zh-cht": "薩米(拉普蘭)", "xloc": [ - "default.handlebars->41->1682" + "default.handlebars->41->1684" ] }, { @@ -54541,7 +54545,7 @@ "zh-chs": "三乡", "zh-cht": "三鄉", "xloc": [ - "default.handlebars->41->1683" + "default.handlebars->41->1685" ] }, { @@ -54566,7 +54570,7 @@ "zh-chs": "梵文", "zh-cht": "梵文", "xloc": [ - "default.handlebars->41->1684" + "default.handlebars->41->1686" ] }, { @@ -54591,7 +54595,7 @@ "zh-chs": "撒丁岛", "zh-cht": "撒丁島", "xloc": [ - "default.handlebars->41->1685" + "default.handlebars->41->1687" ] }, { @@ -54667,7 +54671,7 @@ "zh-chs": "保存节点位置", "zh-cht": "保存節點位置", "xloc": [ - "default.handlebars->41->753" + "default.handlebars->41->754" ] }, { @@ -54952,8 +54956,8 @@ "zh-chs": "搜寻", "zh-cht": "搜尋", "xloc": [ - "default.handlebars->41->1356", - "default.handlebars->41->766", + "default.handlebars->41->1358", + "default.handlebars->41->767", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devMapToolbar", "sharing.handlebars->11->53" ] @@ -55081,7 +55085,7 @@ "zh-cht": "已使用TLS保安", "xloc": [ "default-mobile.handlebars->11->573", - "default.handlebars->41->1460" + "default.handlebars->41->1462" ] }, { @@ -55108,10 +55112,10 @@ "xloc": [ "default-mobile.handlebars->11->388", "default-mobile.handlebars->11->572", - "default.handlebars->41->1135", - "default.handlebars->41->1459", - "default.handlebars->41->2157", - "default.handlebars->41->2650", + "default.handlebars->41->1137", + "default.handlebars->41->1461", + "default.handlebars->41->2159", + "default.handlebars->41->2652", "default.handlebars->41->462", "default.handlebars->container->column_l->p21->p21main->1->1->meshSecurityChartDiv->1" ] @@ -55138,7 +55142,7 @@ "zh-chs": "安全密钥", "zh-cht": "安全密鑰", "xloc": [ - "default.handlebars->41->2645" + "default.handlebars->41->2647" ] }, { @@ -55163,7 +55167,7 @@ "zh-chs": "安全警告", "xloc": [ "default-mobile.handlebars->11->711", - "default.handlebars->41->2864" + "default.handlebars->41->2866" ] }, { @@ -55234,11 +55238,11 @@ "zh-chs": "全选", "zh-cht": "全選", "xloc": [ - "default.handlebars->41->1359", "default.handlebars->41->1361", - "default.handlebars->41->2183", - "default.handlebars->41->2417", - "default.handlebars->41->2503", + "default.handlebars->41->1363", + "default.handlebars->41->2185", + "default.handlebars->41->2419", + "default.handlebars->41->2505", "default.handlebars->41->483", "default.handlebars->41->640", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", @@ -55269,9 +55273,9 @@ "ru": "Выберите дату и время...", "tr": "Tarih ve Saati Seçin...", "xloc": [ - "default.handlebars->41->1085", "default.handlebars->41->1087", - "default.handlebars->41->2798" + "default.handlebars->41->1089", + "default.handlebars->41->2800" ] }, { @@ -55296,10 +55300,10 @@ "zh-chs": "选择无", "zh-cht": "選擇無", "xloc": [ - "default.handlebars->41->1360", - "default.handlebars->41->2182", - "default.handlebars->41->2416", - "default.handlebars->41->2502", + "default.handlebars->41->1362", + "default.handlebars->41->2184", + "default.handlebars->41->2418", + "default.handlebars->41->2504", "default.handlebars->41->639", "default.handlebars->meshContextMenu->cxselectnone", "sharing.handlebars->11->57" @@ -55326,7 +55330,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulaması için kaydedilecek bir cihaz seçin. Seçildikten sonra, cihaz onay isteyecektir.", "zh-chs": "选择要注册推送通知身份验证的设备。选择后,设备将提示确认。", "xloc": [ - "default.handlebars->41->1529" + "default.handlebars->41->1531" ] }, { @@ -55351,7 +55355,7 @@ "zh-chs": "为所选设备选择一个新组", "zh-cht": "為所選裝置選擇一個新群", "xloc": [ - "default.handlebars->41->1149" + "default.handlebars->41->1151" ] }, { @@ -55376,7 +55380,7 @@ "zh-chs": "选择此设备的新组", "zh-cht": "選擇此裝置的新群", "xloc": [ - "default.handlebars->41->1148" + "default.handlebars->41->1150" ] }, { @@ -55401,7 +55405,7 @@ "zh-chs": "选择要放置的节点", "zh-cht": "選擇要放置的節點", "xloc": [ - "default.handlebars->41->769" + "default.handlebars->41->770" ] }, { @@ -55451,8 +55455,8 @@ "zh-chs": "选择要对所有选定用户执行的操作。", "zh-cht": "選擇要對所有選定用戶執行的操作。", "xloc": [ - "default.handlebars->41->2420", - "default.handlebars->41->2504" + "default.handlebars->41->2422", + "default.handlebars->41->2506" ] }, { @@ -55478,7 +55482,7 @@ "zh-cht": "選擇要在此裝置上執行的操作。", "xloc": [ "default-mobile.handlebars->11->357", - "default.handlebars->41->1093" + "default.handlebars->41->1095" ] }, { @@ -55503,7 +55507,7 @@ "zh-chs": "选择新密码", "zh-cht": "選擇新密碼", "xloc": [ - "default.handlebars->41->1970" + "default.handlebars->41->1972" ] }, { @@ -55555,7 +55559,7 @@ "zh-cht": "僅自我事件", "xloc": [ "default-mobile.handlebars->11->692", - "default.handlebars->41->2088" + "default.handlebars->41->2090" ] }, { @@ -55630,7 +55634,7 @@ "zh-chs": "发电邮", "zh-cht": "發電郵", "xloc": [ - "default.handlebars->41->2431" + "default.handlebars->41->2433" ] }, { @@ -55655,7 +55659,7 @@ "zh-chs": "发送MQTT消息", "zh-cht": "發送MQTT消息", "xloc": [ - "default.handlebars->41->1105", + "default.handlebars->41->1107", "default.handlebars->41->641" ] }, @@ -55681,7 +55685,7 @@ "zh-chs": "发送MQTT消息", "zh-cht": "發送MQTT消息", "xloc": [ - "default.handlebars->41->1141" + "default.handlebars->41->1143" ] }, { @@ -55706,7 +55710,7 @@ "zh-chs": "发送短信", "zh-cht": "發送簡訊", "xloc": [ - "default.handlebars->41->2429" + "default.handlebars->41->2431" ] }, { @@ -55731,7 +55735,7 @@ "zh-chs": "发送短信给该用户", "zh-cht": "發送短信給該用戶", "xloc": [ - "default.handlebars->41->2655" + "default.handlebars->41->2657" ] }, { @@ -55756,7 +55760,7 @@ "zh-chs": "发送电邮给该用户", "zh-cht": "發送電郵給該用戶", "xloc": [ - "default.handlebars->41->2657" + "default.handlebars->41->2659" ] }, { @@ -55781,7 +55785,7 @@ "zh-chs": "向该组中的所有用户发送通知。", "zh-cht": "向該群中的所有用戶發送通知。", "xloc": [ - "default.handlebars->41->2546" + "default.handlebars->41->2548" ] }, { @@ -55806,7 +55810,7 @@ "zh-chs": "向该用户发送文本通知。", "zh-cht": "向該用戶發送文本通知。", "xloc": [ - "default.handlebars->41->2432" + "default.handlebars->41->2434" ] }, { @@ -55831,7 +55835,7 @@ "zh-chs": "发送电邮给用户", "zh-cht": "發送電郵給用戶", "xloc": [ - "default.handlebars->41->2412" + "default.handlebars->41->2414" ] }, { @@ -55881,7 +55885,7 @@ "zh-chs": "发送邀请电邮。", "zh-cht": "發送邀請電郵。", "xloc": [ - "default.handlebars->41->2474" + "default.handlebars->41->2476" ] }, { @@ -56034,7 +56038,7 @@ "zh-chs": "发送用户通知", "zh-cht": "發送用戶通知", "xloc": [ - "default.handlebars->41->2659" + "default.handlebars->41->2661" ] }, { @@ -56127,7 +56131,7 @@ "zh-chs": "塞尔维亚", "zh-cht": "塞爾維亞", "xloc": [ - "default.handlebars->41->1688" + "default.handlebars->41->1690" ] }, { @@ -56153,7 +56157,7 @@ "zh-cht": "序列號", "xloc": [ "default-mobile.handlebars->11->585", - "default.handlebars->41->1472" + "default.handlebars->41->1474" ] }, { @@ -56199,7 +56203,7 @@ "zh-chs": "服务器备份", "zh-cht": "伺服器備份", "xloc": [ - "default.handlebars->41->2484" + "default.handlebars->41->2486" ] }, { @@ -56224,7 +56228,7 @@ "zh-chs": "服务器证书", "zh-cht": "伺服器憑證", "xloc": [ - "default.handlebars->41->2971" + "default.handlebars->41->2973" ] }, { @@ -56273,7 +56277,7 @@ "zh-chs": "服务器数据库", "zh-cht": "伺服器數據庫", "xloc": [ - "default.handlebars->41->2972" + "default.handlebars->41->2974" ] }, { @@ -56300,11 +56304,11 @@ "xloc": [ "default-mobile.handlebars->11->669", "default-mobile.handlebars->11->684", - "default.handlebars->41->1008", - "default.handlebars->41->1030", - "default.handlebars->41->2048", - "default.handlebars->41->2079", - "default.handlebars->41->2481" + "default.handlebars->41->1009", + "default.handlebars->41->1031", + "default.handlebars->41->2050", + "default.handlebars->41->2081", + "default.handlebars->41->2483" ] }, { @@ -56354,7 +56358,7 @@ "zh-chs": "服务器限制", "xloc": [ "default-mobile.handlebars->11->710", - "default.handlebars->41->2863" + "default.handlebars->41->2865" ] }, { @@ -56403,8 +56407,8 @@ "zh-chs": "服务器权限", "zh-cht": "伺服器權限", "xloc": [ - "default.handlebars->41->2404", - "default.handlebars->41->2496" + "default.handlebars->41->2406", + "default.handlebars->41->2498" ] }, { @@ -56429,7 +56433,7 @@ "zh-chs": "服务器配额", "zh-cht": "伺服器配額", "xloc": [ - "default.handlebars->41->2619" + "default.handlebars->41->2621" ] }, { @@ -56454,7 +56458,7 @@ "zh-chs": "服务器还原", "zh-cht": "伺服器還原", "xloc": [ - "default.handlebars->41->2485" + "default.handlebars->41->2487" ] }, { @@ -56479,7 +56483,7 @@ "zh-chs": "服务器权限", "zh-cht": "伺服器權限", "xloc": [ - "default.handlebars->41->2618" + "default.handlebars->41->2620" ] }, { @@ -56504,7 +56508,7 @@ "zh-chs": "服务器状态", "zh-cht": "伺服器狀態", "xloc": [ - "default.handlebars->41->2902" + "default.handlebars->41->2904" ] }, { @@ -56554,7 +56558,7 @@ "zh-chs": "服务器跟踪", "zh-cht": "伺服器追蹤", "xloc": [ - "default.handlebars->41->2984" + "default.handlebars->41->2986" ] }, { @@ -56578,7 +56582,7 @@ "tr": "Sunucu İzleme Etkinliği", "zh-chs": "服务器跟踪事件", "xloc": [ - "default.handlebars->41->2963" + "default.handlebars->41->2965" ] }, { @@ -56654,7 +56658,7 @@ "zh-chs": "服务器更新", "zh-cht": "伺服器更新", "xloc": [ - "default.handlebars->41->2486" + "default.handlebars->41->2488" ] }, { @@ -56904,7 +56908,7 @@ "zh-chs": "ServerStats.csv", "zh-cht": "ServerStats.csv", "xloc": [ - "default.handlebars->41->2962" + "default.handlebars->41->2964" ] }, { @@ -56929,7 +56933,7 @@ "zh-chs": "服务详情", "zh-cht": "服務詳情", "xloc": [ - "default.handlebars->41->1300" + "default.handlebars->41->1302" ] }, { @@ -56979,8 +56983,8 @@ "zh-chs": "会话", "zh-cht": "節", "xloc": [ - "default.handlebars->41->2745", - "default.handlebars->41->2803", + "default.handlebars->41->2747", + "default.handlebars->41->2805", "ssh.handlebars->3->24", "ssh.handlebars->3->26" ] @@ -57031,7 +57035,7 @@ "zh-chs": "会话信息", "zh-cht": "會議訊息", "xloc": [ - "default.handlebars->41->1232", + "default.handlebars->41->1234", "sharing.handlebars->11->18" ] }, @@ -57058,8 +57062,8 @@ "xloc": [ "default-mobile.handlebars->11->465", "default-mobile.handlebars->11->472", - "default.handlebars->41->1331", - "default.handlebars->41->1347" + "default.handlebars->41->1333", + "default.handlebars->41->1349" ] }, { @@ -57137,8 +57141,8 @@ "xloc": [ "default-mobile.handlebars->11->466", "default-mobile.handlebars->11->473", - "default.handlebars->41->1332", - "default.handlebars->41->1348" + "default.handlebars->41->1334", + "default.handlebars->41->1350" ] }, { @@ -57230,7 +57234,7 @@ "ru": "Установить буфер", "tr": "Panoyu Ayarla", "xloc": [ - "default.handlebars->41->1276" + "default.handlebars->41->1278" ] }, { @@ -57325,7 +57329,7 @@ "zh-chs": "设置剪贴板内容,{0}个字节", "zh-cht": "設置剪貼板內容,{0}個字節", "xloc": [ - "default.handlebars->41->2224" + "default.handlebars->41->2226" ] }, { @@ -57428,7 +57432,7 @@ "zh-cht": "設定", "xloc": [ "agent-translations.json", - "default.handlebars->41->1915", + "default.handlebars->41->1917", "default.handlebars->41->439" ] }, @@ -57498,7 +57502,7 @@ "zh-chs": "将此服务器设置为自动将备份上传到Google云端硬盘。首先为您的帐户创建并输入Google Drive ClientID和ClientSecret。", "zh-cht": "將此服務器設置為自動將備份上傳到Google雲端硬盤。首先為您的帳戶創建並輸入Google Drive ClientID和ClientSecret。", "xloc": [ - "default.handlebars->41->1834" + "default.handlebars->41->1836" ] }, { @@ -57555,7 +57559,7 @@ "zh-chs": "共享", "zh-cht": "共享", "xloc": [ - "default.handlebars->41->904" + "default.handlebars->41->905" ] }, { @@ -57580,7 +57584,7 @@ "zh-chs": "共享设备", "zh-cht": "共享裝置", "xloc": [ - "default.handlebars->41->1092", + "default.handlebars->41->1094", "default.handlebars->41->296" ] }, @@ -57651,7 +57655,7 @@ "zh-chs": "共享过程", "zh-cht": "共享過程", "xloc": [ - "default.handlebars->41->1294" + "default.handlebars->41->1296" ] }, { @@ -57675,7 +57679,7 @@ "tr": "Paylaşım", "zh-chs": "分享", "xloc": [ - "default.handlebars->41->2093" + "default.handlebars->41->2095" ] }, { @@ -57773,8 +57777,8 @@ "xloc": [ "default-mobile.handlebars->11->430", "default-mobile.handlebars->11->434", - "default.handlebars->41->1257", - "default.handlebars->41->1261" + "default.handlebars->41->1259", + "default.handlebars->41->1263" ] }, { @@ -58082,7 +58086,7 @@ "zh-cht": "只顯示自己的事件", "xloc": [ "default-mobile.handlebars->11->672", - "default.handlebars->41->2051" + "default.handlebars->41->2053" ] }, { @@ -58123,7 +58127,7 @@ "ru": "Показать трафик", "tr": "Trafiği Göster", "xloc": [ - "default.handlebars->41->2799" + "default.handlebars->41->2801" ] }, { @@ -58148,7 +58152,7 @@ "zh-chs": "显示连接工具栏", "zh-cht": "顯示連接工具欄", "xloc": [ - "default.handlebars->41->2007" + "default.handlebars->41->2009" ] }, { @@ -58198,7 +58202,7 @@ "zh-chs": "显示设备位置信息", "zh-cht": "顯示裝置位置訊息", "xloc": [ - "default.handlebars->41->918" + "default.handlebars->41->919" ] }, { @@ -58223,7 +58227,7 @@ "zh-chs": "显示设备网络接口信息", "zh-cht": "顯示裝置網絡介面訊息", "xloc": [ - "default.handlebars->41->916" + "default.handlebars->41->917" ] }, { @@ -58273,8 +58277,8 @@ "zh-chs": "显示1分钟", "zh-cht": "顯示1分鐘", "xloc": [ - "default.handlebars->41->2435", - "default.handlebars->41->2460" + "default.handlebars->41->2437", + "default.handlebars->41->2462" ] }, { @@ -58299,8 +58303,8 @@ "zh-chs": "显示10秒", "zh-cht": "顯示10秒", "xloc": [ - "default.handlebars->41->2434", - "default.handlebars->41->2459" + "default.handlebars->41->2436", + "default.handlebars->41->2461" ] }, { @@ -58325,8 +58329,8 @@ "zh-chs": "显示5分钟", "zh-cht": "顯示5分鐘", "xloc": [ - "default.handlebars->41->2436", - "default.handlebars->41->2461" + "default.handlebars->41->2438", + "default.handlebars->41->2463" ] }, { @@ -58351,8 +58355,8 @@ "zh-chs": "显示消息,直到被用户拒绝", "zh-cht": "顯示消息,直到被用戶拒絕", "xloc": [ - "default.handlebars->41->2433", - "default.handlebars->41->2458" + "default.handlebars->41->2435", + "default.handlebars->41->2460" ] }, { @@ -58624,8 +58628,8 @@ "zh-chs": "简单管理员控制模式(ACM)", "zh-cht": "簡單管理員控制模式(ACM)", "xloc": [ - "default.handlebars->41->1906", - "default.handlebars->41->1960" + "default.handlebars->41->1908", + "default.handlebars->41->1962" ] }, { @@ -58650,8 +58654,8 @@ "zh-chs": "简单客户端控制模式(CCM)", "zh-cht": "簡單客戶端控制模式(CCM)", "xloc": [ - "default.handlebars->41->1904", - "default.handlebars->41->1964" + "default.handlebars->41->1906", + "default.handlebars->41->1966" ] }, { @@ -58676,7 +58680,7 @@ "zh-chs": "信地", "zh-cht": "信地", "xloc": [ - "default.handlebars->41->1686" + "default.handlebars->41->1688" ] }, { @@ -58701,7 +58705,7 @@ "zh-chs": "僧伽罗文", "zh-cht": "僧伽羅文", "xloc": [ - "default.handlebars->41->1687" + "default.handlebars->41->1689" ] }, { @@ -58739,7 +58743,7 @@ "ru": "Единая точка входа", "fr": "Authentification unique", "xloc": [ - "default.handlebars->41->2847" + "default.handlebars->41->2849" ] }, { @@ -58785,8 +58789,8 @@ "zh-chs": "尺寸", "zh-cht": "尺寸", "xloc": [ - "default.handlebars->41->2748", - "default.handlebars->41->2769", + "default.handlebars->41->2750", + "default.handlebars->41->2771", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSize" ] }, @@ -58812,7 +58816,7 @@ "zh-chs": "缩放:100%", "zh-cht": "縮放:100%", "xloc": [ - "default.handlebars->41->1389", + "default.handlebars->41->1391", "sharing.handlebars->11->85" ] }, @@ -58838,7 +58842,7 @@ "zh-chs": "缩放:125%", "zh-cht": "縮放:125%", "xloc": [ - "default.handlebars->41->1390", + "default.handlebars->41->1392", "sharing.handlebars->11->86" ] }, @@ -58864,7 +58868,7 @@ "zh-chs": "缩放:150%", "zh-cht": "縮放:150%", "xloc": [ - "default.handlebars->41->1391", + "default.handlebars->41->1393", "sharing.handlebars->11->87" ] }, @@ -58890,7 +58894,7 @@ "zh-chs": "缩放:200%", "zh-cht": "縮放:200%", "xloc": [ - "default.handlebars->41->1392", + "default.handlebars->41->1394", "sharing.handlebars->11->88" ] }, @@ -58920,7 +58924,7 @@ "default-mobile.handlebars->11->232", "default-mobile.handlebars->11->233", "default-mobile.handlebars->11->365", - "default.handlebars->41->1102", + "default.handlebars->41->1104", "default.handlebars->41->2", "default.handlebars->41->3", "default.handlebars->41->4" @@ -59001,7 +59005,7 @@ "zh-chs": "斯洛伐克文", "zh-cht": "斯洛伐克文", "xloc": [ - "default.handlebars->41->1689" + "default.handlebars->41->1691" ] }, { @@ -59026,7 +59030,7 @@ "zh-chs": "斯洛文尼亞文", "zh-cht": "斯洛文尼亞文", "xloc": [ - "default.handlebars->41->1690" + "default.handlebars->41->1692" ] }, { @@ -59104,7 +59108,7 @@ "zh-chs": "小焦点", "zh-cht": "小焦點", "xloc": [ - "default.handlebars->41->1239" + "default.handlebars->41->1241" ] }, { @@ -59130,7 +59134,7 @@ "zh-cht": "軟斷開代理", "xloc": [ "default-mobile.handlebars->11->618", - "default.handlebars->41->1506" + "default.handlebars->41->1508" ] }, { @@ -59206,7 +59210,7 @@ "zh-chs": "索马尼", "zh-cht": "索馬尼", "xloc": [ - "default.handlebars->41->1691" + "default.handlebars->41->1693" ] }, { @@ -59231,7 +59235,7 @@ "zh-chs": "索比亚文", "zh-cht": "索比亞文", "xloc": [ - "default.handlebars->41->1692" + "default.handlebars->41->1694" ] }, { @@ -59462,7 +59466,7 @@ "zh-chs": "西班牙文", "zh-cht": "西班牙文", "xloc": [ - "default.handlebars->41->1693" + "default.handlebars->41->1695" ] }, { @@ -59487,7 +59491,7 @@ "zh-chs": "西班牙文(阿根廷)", "zh-cht": "西班牙文(阿根廷)", "xloc": [ - "default.handlebars->41->1694" + "default.handlebars->41->1696" ] }, { @@ -59512,7 +59516,7 @@ "zh-chs": "西班牙文(玻利维亚)", "zh-cht": "西班牙文(玻利維亞)", "xloc": [ - "default.handlebars->41->1695" + "default.handlebars->41->1697" ] }, { @@ -59537,7 +59541,7 @@ "zh-chs": "西班牙文(智利)", "zh-cht": "西班牙文(智利)", "xloc": [ - "default.handlebars->41->1696" + "default.handlebars->41->1698" ] }, { @@ -59562,7 +59566,7 @@ "zh-chs": "西班牙文(哥伦比亚)", "zh-cht": "西班牙文(哥倫比亞)", "xloc": [ - "default.handlebars->41->1697" + "default.handlebars->41->1699" ] }, { @@ -59587,7 +59591,7 @@ "zh-chs": "西班牙文(哥斯达黎加)", "zh-cht": "西班牙文(哥斯達黎加)", "xloc": [ - "default.handlebars->41->1698" + "default.handlebars->41->1700" ] }, { @@ -59612,7 +59616,7 @@ "zh-chs": "西班牙文(多米尼加共和国)", "zh-cht": "西班牙文(多米尼加共和國)", "xloc": [ - "default.handlebars->41->1699" + "default.handlebars->41->1701" ] }, { @@ -59637,7 +59641,7 @@ "zh-chs": "西班牙文(厄瓜多尔)", "zh-cht": "西班牙文(厄瓜多爾)", "xloc": [ - "default.handlebars->41->1700" + "default.handlebars->41->1702" ] }, { @@ -59662,7 +59666,7 @@ "zh-chs": "西班牙文(萨尔瓦多)", "zh-cht": "西班牙文(薩爾瓦多)", "xloc": [ - "default.handlebars->41->1701" + "default.handlebars->41->1703" ] }, { @@ -59687,7 +59691,7 @@ "zh-chs": "西班牙文(危地马拉)", "zh-cht": "西班牙文(危地馬拉)", "xloc": [ - "default.handlebars->41->1702" + "default.handlebars->41->1704" ] }, { @@ -59712,7 +59716,7 @@ "zh-chs": "西班牙文(洪都拉斯)", "zh-cht": "西班牙文(洪都拉斯)", "xloc": [ - "default.handlebars->41->1703" + "default.handlebars->41->1705" ] }, { @@ -59737,7 +59741,7 @@ "zh-chs": "西班牙文(墨西哥)", "zh-cht": "西班牙文(墨西哥)", "xloc": [ - "default.handlebars->41->1704" + "default.handlebars->41->1706" ] }, { @@ -59762,7 +59766,7 @@ "zh-chs": "西班牙文(尼加拉瓜)", "zh-cht": "西班牙文(尼加拉瓜)", "xloc": [ - "default.handlebars->41->1705" + "default.handlebars->41->1707" ] }, { @@ -59787,7 +59791,7 @@ "zh-chs": "西班牙文(巴拿马)", "zh-cht": "西班牙文(巴拿馬)", "xloc": [ - "default.handlebars->41->1706" + "default.handlebars->41->1708" ] }, { @@ -59812,7 +59816,7 @@ "zh-chs": "西班牙文(巴拉圭)", "zh-cht": "西班牙文(巴拉圭)", "xloc": [ - "default.handlebars->41->1707" + "default.handlebars->41->1709" ] }, { @@ -59837,7 +59841,7 @@ "zh-chs": "西班牙文(秘鲁)", "zh-cht": "西班牙文(秘魯)", "xloc": [ - "default.handlebars->41->1708" + "default.handlebars->41->1710" ] }, { @@ -59862,7 +59866,7 @@ "zh-chs": "西班牙文(波多黎各)", "zh-cht": "西班牙文(波多黎各)", "xloc": [ - "default.handlebars->41->1709" + "default.handlebars->41->1711" ] }, { @@ -59887,7 +59891,7 @@ "zh-chs": "西班牙文(西班牙)", "zh-cht": "西班牙文(西班牙)", "xloc": [ - "default.handlebars->41->1710" + "default.handlebars->41->1712" ] }, { @@ -59912,7 +59916,7 @@ "zh-chs": "西班牙文(乌拉圭)", "zh-cht": "西班牙文(烏拉圭)", "xloc": [ - "default.handlebars->41->1711" + "default.handlebars->41->1713" ] }, { @@ -59937,7 +59941,7 @@ "zh-chs": "西班牙文(委内瑞拉)", "zh-cht": "西班牙文(委內瑞拉)", "xloc": [ - "default.handlebars->41->1712" + "default.handlebars->41->1714" ] }, { @@ -60037,7 +60041,7 @@ "zh-chs": "开始", "zh-cht": "開始", "xloc": [ - "default.handlebars->41->1297" + "default.handlebars->41->1299" ] }, { @@ -60084,13 +60088,13 @@ "zh-chs": "开始时间", "zh-cht": "開始時間", "xloc": [ - "default.handlebars->41->1086", + "default.handlebars->41->1088", "default.handlebars->41->119", - "default.handlebars->41->1229", + "default.handlebars->41->1231", "default.handlebars->41->272", - "default.handlebars->41->2746", + "default.handlebars->41->2748", "default.handlebars->41->277", - "default.handlebars->41->2771", + "default.handlebars->41->2773", "sharing.handlebars->11->14" ] }, @@ -60151,7 +60155,7 @@ "pt-br": "Sessão Web-RDP \\\"{0}\\\" iniciada.", "ru": "Начат сеанс Web-RDP \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2352" + "default.handlebars->41->2354" ] }, { @@ -60162,7 +60166,7 @@ "pt-br": "Sessão Web-SFTP \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-SFTP \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2351" + "default.handlebars->41->2353" ] }, { @@ -60173,7 +60177,7 @@ "pt-br": "Sessão Web-SSH \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-SSH \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2350" + "default.handlebars->41->2352" ] }, { @@ -60184,7 +60188,7 @@ "pt-br": "Sessão Web-VNC \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-VNC \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2353" + "default.handlebars->41->2355" ] }, { @@ -60209,7 +60213,7 @@ "zh-chs": "开始桌面多重会话", "zh-cht": "啟動桌面多路復用會話", "xloc": [ - "default.handlebars->41->2208" + "default.handlebars->41->2210" ] }, { @@ -60220,7 +60224,7 @@ "pt-br": "Sessão de área de trabalho multiplex \\\"{0}\\\" iniciada", "ru": "Начался сеанс мультиплексирования рабочего стола \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2347" + "default.handlebars->41->2349" ] }, { @@ -60245,7 +60249,7 @@ "zh-chs": "从{1}到{2}开始了桌面会话“{0}”", "zh-cht": "從{1}到{2}開始了桌面會話“{0}”", "xloc": [ - "default.handlebars->41->2217" + "default.handlebars->41->2219" ] }, { @@ -60270,7 +60274,7 @@ "zh-chs": "从{1}到{2}开始文件管理会话“{0}”", "zh-cht": "從{1}到{2}開始文件管理會話“{0}”", "xloc": [ - "default.handlebars->41->2218" + "default.handlebars->41->2220" ] }, { @@ -60294,7 +60298,7 @@ "tr": "Yerel geçiş oturumu \\\"{0}\\\", {1} - {2} protokolü başlatıldı", "zh-chs": "已启动本地中继会话 \\\"{0}\\\",协议 {1} 到 {2}", "xloc": [ - "default.handlebars->41->2322" + "default.handlebars->41->2324" ] }, { @@ -60319,7 +60323,7 @@ "zh-chs": "从{1}到{2}开始中继会话“{0}”", "zh-cht": "從{1}到{2}開始中繼會話“{0}”", "xloc": [ - "default.handlebars->41->2215" + "default.handlebars->41->2217" ] }, { @@ -60344,7 +60348,7 @@ "zh-chs": "使用Toast通知启动远程桌面", "zh-cht": "使用Toast通知啟動遠程桌面", "xloc": [ - "default.handlebars->41->2237" + "default.handlebars->41->2239" ] }, { @@ -60369,7 +60373,7 @@ "zh-chs": "启动远程桌面,而无需通知", "zh-cht": "啟動遠程桌面,而無需通知", "xloc": [ - "default.handlebars->41->2238" + "default.handlebars->41->2240" ] }, { @@ -60394,7 +60398,7 @@ "zh-chs": "启动带有Toast通知的远程文件", "zh-cht": "啟動帶有Toast通知的遠程文件", "xloc": [ - "default.handlebars->41->2244" + "default.handlebars->41->2246" ] }, { @@ -60419,7 +60423,7 @@ "zh-chs": "已启动的远程文件,恕不另行通知", "zh-cht": "已啟動的遠程文件,恕不另行通知", "xloc": [ - "default.handlebars->41->2245" + "default.handlebars->41->2247" ] }, { @@ -60444,7 +60448,7 @@ "zh-chs": "从{1}到{2}开始了终端会话“{0}”", "zh-cht": "從{1}到{2}開始了終端會話“{0}”", "xloc": [ - "default.handlebars->41->2216" + "default.handlebars->41->2218" ] }, { @@ -60469,7 +60473,7 @@ "zh-chs": "现在开始", "zh-cht": "現在開始", "xloc": [ - "default.handlebars->41->1079" + "default.handlebars->41->1081" ] }, { @@ -60494,7 +60498,7 @@ "zh-chs": "接受本地用户后启动远程桌面", "zh-cht": "接受本地用戶後啟動遠程桌面", "xloc": [ - "default.handlebars->41->2232" + "default.handlebars->41->2234" ] }, { @@ -60519,7 +60523,7 @@ "zh-chs": "本地用户接受后启动远程文件", "zh-cht": "本地用戶接受後啟動遠程文件", "xloc": [ - "default.handlebars->41->2242" + "default.handlebars->41->2244" ] }, { @@ -60565,7 +60569,7 @@ "zh-chs": "状况", "zh-cht": "狀態", "xloc": [ - "default.handlebars->41->1288", + "default.handlebars->41->1290", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->1" ] }, @@ -60637,8 +60641,8 @@ "zh-chs": "状况", "zh-cht": "狀態", "xloc": [ - "default.handlebars->41->2689", - "default.handlebars->41->2764", + "default.handlebars->41->2691", + "default.handlebars->41->2766", "default.handlebars->container->column_l->p42->p42tbl->1->0->7" ] }, @@ -60664,7 +60668,7 @@ "zh-chs": "停止", "zh-cht": "停止", "xloc": [ - "default.handlebars->41->1298" + "default.handlebars->41->1300" ] }, { @@ -60689,7 +60693,7 @@ "zh-chs": "停止进程", "zh-cht": "停止進程", "xloc": [ - "default.handlebars->41->1279" + "default.handlebars->41->1281" ] }, { @@ -60713,7 +60717,7 @@ "tr": "#{0} \\\"{1}\\\" işlemi durdurulsun mu?", "zh-chs": "停止进程 #{0} \\\"{1}\\\"?", "xloc": [ - "default.handlebars->41->1306" + "default.handlebars->41->1308" ] }, { @@ -60759,8 +60763,8 @@ "tr": "durduruldu", "zh-chs": "停止", "xloc": [ - "default.handlebars->41->1282", - "default.handlebars->41->1286" + "default.handlebars->41->1284", + "default.handlebars->41->1288" ] }, { @@ -60807,7 +60811,7 @@ "zh-cht": "儲存", "xloc": [ "default-mobile.handlebars->11->601", - "default.handlebars->41->1488" + "default.handlebars->41->1490" ] }, { @@ -60857,7 +60861,7 @@ "zh-chs": "超出储存空间", "zh-cht": "超出儲存空間", "xloc": [ - "default.handlebars->41->2163" + "default.handlebars->41->2165" ] }, { @@ -60868,7 +60872,7 @@ "fr": "Clé enregistrée", "xloc": [ "default-mobile.handlebars->11->448", - "default.handlebars->41->1313", + "default.handlebars->41->1315", "ssh.handlebars->3->6" ] }, @@ -60894,7 +60898,7 @@ "zh-chs": "强", "zh-cht": "強", "xloc": [ - "default.handlebars->41->1817" + "default.handlebars->41->1819" ] }, { @@ -60949,7 +60953,7 @@ "zh-chs": "主题", "zh-cht": "主題", "xloc": [ - "default.handlebars->41->2430" + "default.handlebars->41->2432" ] }, { @@ -60985,8 +60989,8 @@ "pt-br": "Login realizado com sucesso", "ru": "Успешный вход", "xloc": [ - "default.handlebars->41->2833", - "default.handlebars->41->2853" + "default.handlebars->41->2835", + "default.handlebars->41->2855" ] }, { @@ -61086,7 +61090,7 @@ "zh-chs": "苏图", "zh-cht": "蘇圖", "xloc": [ - "default.handlebars->41->1713" + "default.handlebars->41->1715" ] }, { @@ -61111,7 +61115,7 @@ "zh-chs": "斯瓦希里文", "zh-cht": "斯瓦希里文", "xloc": [ - "default.handlebars->41->1714" + "default.handlebars->41->1716" ] }, { @@ -61163,7 +61167,7 @@ "zh-chs": "瑞典文", "zh-cht": "瑞典文", "xloc": [ - "default.handlebars->41->1715" + "default.handlebars->41->1717" ] }, { @@ -61188,7 +61192,7 @@ "zh-chs": "瑞典文(芬兰)", "zh-cht": "瑞典文(芬蘭)", "xloc": [ - "default.handlebars->41->1716" + "default.handlebars->41->1718" ] }, { @@ -61213,7 +61217,7 @@ "zh-chs": "瑞典文(瑞典)", "zh-cht": "瑞典文(瑞典)", "xloc": [ - "default.handlebars->41->1717" + "default.handlebars->41->1719" ] }, { @@ -61261,7 +61265,7 @@ "zh-chs": "将英特尔AMT切换到管理员控制模式(ACM)。", "zh-cht": "將英特爾AMT切換到管理員控制模式(ACM)。", "xloc": [ - "default.handlebars->41->1922" + "default.handlebars->41->1924" ] }, { @@ -61281,8 +61285,8 @@ "ru": "Порт свитча подключен", "tr": "Bağlantı noktasını değiştir", "xloc": [ - "default.handlebars->41->941", - "default.handlebars->41->942" + "default.handlebars->41->942", + "default.handlebars->41->943" ] }, { @@ -61327,7 +61331,7 @@ "zh-chs": "将服务器设备名称同步到主机名称", "zh-cht": "將伺服器裝置名稱同步到主機名稱", "xloc": [ - "default.handlebars->41->2016" + "default.handlebars->41->2018" ] }, { @@ -61347,7 +61351,7 @@ "ru": "Синхронизировать имя устройства сервера с именем порта", "tr": "Sunucu cihaz adını bağlantı noktası adıyla senkronize et", "xloc": [ - "default.handlebars->41->2015" + "default.handlebars->41->2017" ] }, { @@ -61642,7 +61646,7 @@ "zh-cht": "TLS", "xloc": [ "default-mobile.handlebars->11->299", - "default.handlebars->41->813" + "default.handlebars->41->814" ] }, { @@ -61668,7 +61672,7 @@ "zh-cht": "未設置TLS", "xloc": [ "default-mobile.handlebars->11->574", - "default.handlebars->41->1461" + "default.handlebars->41->1463" ] }, { @@ -61694,7 +61698,7 @@ "zh-cht": "需要TLS加密", "xloc": [ "default-mobile.handlebars->11->390", - "default.handlebars->41->1137", + "default.handlebars->41->1139", "default.handlebars->41->464" ] }, @@ -61722,7 +61726,7 @@ "xloc": [ "default-mobile.handlebars->11->415", "default-mobile.handlebars->dialog->3->dialog3->deskkeys->3", - "default.handlebars->41->1242" + "default.handlebars->41->1244" ] }, { @@ -61747,7 +61751,7 @@ "zh-chs": "标签1,标签2,标签3", "zh-cht": "標籤1,標籤2,標籤3", "xloc": [ - "default.handlebars->41->1200", + "default.handlebars->41->1202", "default.handlebars->41->682" ] }, @@ -61801,10 +61805,10 @@ "default-mobile.handlebars->11->320", "default-mobile.handlebars->11->321", "default-mobile.handlebars->11->403", - "default.handlebars->41->1199", + "default.handlebars->41->1201", "default.handlebars->41->681", - "default.handlebars->41->880", "default.handlebars->41->881", + "default.handlebars->41->882", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->7" ] }, @@ -61854,7 +61858,7 @@ "zh-chs": "泰米尔文", "zh-cht": "泰米爾文", "xloc": [ - "default.handlebars->41->1718" + "default.handlebars->41->1720" ] }, { @@ -61879,7 +61883,7 @@ "zh-chs": "塔塔尔族", "zh-cht": "塔塔爾族", "xloc": [ - "default.handlebars->41->1719" + "default.handlebars->41->1721" ] }, { @@ -61904,7 +61908,7 @@ "zh-chs": "泰卢加", "zh-cht": "泰盧加", "xloc": [ - "default.handlebars->41->1720" + "default.handlebars->41->1722" ] }, { @@ -61931,16 +61935,16 @@ "xloc": [ "default-mobile.handlebars->11->212", "default-mobile.handlebars->11->353", - "default.handlebars->41->1055", - "default.handlebars->41->1930", - "default.handlebars->41->2008", - "default.handlebars->41->2758", - "default.handlebars->41->2817", - "default.handlebars->41->2848", - "default.handlebars->41->2939", + "default.handlebars->41->1057", + "default.handlebars->41->1932", + "default.handlebars->41->2010", + "default.handlebars->41->2760", + "default.handlebars->41->2819", + "default.handlebars->41->2850", + "default.handlebars->41->2941", "default.handlebars->41->409", - "default.handlebars->41->756", - "default.handlebars->41->969", + "default.handlebars->41->757", + "default.handlebars->41->970", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevTerminal", "default.handlebars->contextMenu->cxterminal", "sharing.handlebars->LeftSideToolBar" @@ -61967,9 +61971,9 @@ "tr": "Terminal + Dosyalar", "zh-chs": "终端 + 文件", "xloc": [ - "default.handlebars->41->1058", - "default.handlebars->41->1934", - "default.handlebars->41->973" + "default.handlebars->41->1060", + "default.handlebars->41->1936", + "default.handlebars->41->974" ] }, { @@ -62019,10 +62023,10 @@ "zh-chs": "终端通知", "zh-cht": "終端機通知", "xloc": [ - "default.handlebars->41->1886", - "default.handlebars->41->2535", - "default.handlebars->41->2637", - "default.handlebars->41->854" + "default.handlebars->41->1888", + "default.handlebars->41->2537", + "default.handlebars->41->2639", + "default.handlebars->41->855" ] }, { @@ -62047,10 +62051,10 @@ "zh-chs": "终端提示", "zh-cht": "終端機提示", "xloc": [ - "default.handlebars->41->1885", - "default.handlebars->41->2534", - "default.handlebars->41->2636", - "default.handlebars->41->853" + "default.handlebars->41->1887", + "default.handlebars->41->2536", + "default.handlebars->41->2638", + "default.handlebars->41->854" ] }, { @@ -62074,7 +62078,7 @@ "tr": "Terminal Oturumu", "zh-chs": "终端会话", "xloc": [ - "default.handlebars->41->2751" + "default.handlebars->41->2753" ] }, { @@ -62208,7 +62212,7 @@ "zh-chs": "泰国", "zh-cht": "泰國", "xloc": [ - "default.handlebars->41->1721" + "default.handlebars->41->1723" ] }, { @@ -62365,7 +62369,7 @@ "zh-chs": "此计算机所属的设备组的名称", "zh-cht": "此電腦所屬的裝置群的名稱", "xloc": [ - "default.handlebars->41->783" + "default.handlebars->41->784" ] }, { @@ -62390,7 +62394,7 @@ "zh-chs": "此计算机所属的设备组的名称。", "zh-cht": "此電腦所屬的裝置群的名稱。", "xloc": [ - "default.handlebars->41->781" + "default.handlebars->41->782" ] }, { @@ -62415,8 +62419,8 @@ "zh-chs": "此计算机的在操作系统中已设置的名称", "zh-cht": "此電腦在操作系統中已設置的的名稱", "xloc": [ - "default.handlebars->41->784", - "default.handlebars->41->786" + "default.handlebars->41->785", + "default.handlebars->41->787" ] }, { @@ -62442,7 +62446,7 @@ "zh-cht": "目前沒有任何通知", "xloc": [ "default-mobile.handlebars->11->705", - "default.handlebars->41->2858" + "default.handlebars->41->2860" ] }, { @@ -62467,7 +62471,7 @@ "zh-chs": "自上次登录以来,此帐户已有 {0} 次登录尝试失败。", "xloc": [ "default-mobile.handlebars->11->726", - "default.handlebars->41->2879" + "default.handlebars->41->2881" ] }, { @@ -62564,7 +62568,7 @@ "zh-cht": "此帳戶無權建立新的裝置群。", "xloc": [ "default-mobile.handlebars->11->123", - "default.handlebars->41->1792" + "default.handlebars->41->1794" ] }, { @@ -62588,7 +62592,7 @@ "tr": "Bu aracının eski bir sertifika doğrulama mekanizması var, güncellemeyi düşünün.", "zh-chs": "此代理具有过时的证书验证机制,请考虑更新。", "xloc": [ - "default.handlebars->41->2320" + "default.handlebars->41->2322" ] }, { @@ -62612,7 +62616,7 @@ "tr": "Bu aracı güvenli olmayan tüneller kullanıyor, güncellemeyi düşünün.", "zh-chs": "此代理正在使用不安全的隧道,请考虑更新。", "xloc": [ - "default.handlebars->41->2321" + "default.handlebars->41->2323" ] }, { @@ -62683,10 +62687,10 @@ "tr": "Bu bir misafir paylaşım oturumu", "zh-chs": "这是嘉宾分享环节", "xloc": [ - "default.handlebars->41->1400", - "default.handlebars->41->2364", - "default.handlebars->41->2740", - "default.handlebars->41->2741" + "default.handlebars->41->1402", + "default.handlebars->41->2366", + "default.handlebars->41->2742", + "default.handlebars->41->2743" ] }, { @@ -62735,7 +62739,7 @@ "tr": "Bu eski bir aracı sürümüdür, güncellemeyi düşünün.", "zh-chs": "这是一个旧的代理版本,考虑更新。", "xloc": [ - "default.handlebars->41->2319" + "default.handlebars->41->2321" ] }, { @@ -62782,7 +62786,7 @@ "zh-chs": "这是推荐的策略。英特尔®AMT激活和管理是完全自动化的,服务器将尝试最大程度地利用硬件管理。", "zh-cht": "這是推薦的策略。英特爾®AMT激活和管理是完全自動化的,服務器將嘗試最大程度地利用硬件管理。", "xloc": [ - "default.handlebars->41->1989" + "default.handlebars->41->1991" ] }, { @@ -62833,7 +62837,7 @@ "zh-chs": "此政策不会影响采用ACM模式的英特尔®AMT的设备。", "zh-cht": "此政策不會影響採用ACM模式的Intel® AMT的裝置。", "xloc": [ - "default.handlebars->41->1986" + "default.handlebars->41->1988" ] }, { @@ -62957,7 +62961,7 @@ "zh-chs": "这会在此设备的事件日志中添加一个条目。", "zh-cht": "這會在此裝置的事件日誌中增加一個記錄。", "xloc": [ - "default.handlebars->41->1040" + "default.handlebars->41->1041" ] }, { @@ -63004,7 +63008,7 @@ "zh-chs": "这不会从服务器上删除该设备,但是该设备将不再能够连接到服务器。该设备的所有远程访问都将丢失。该设备必须连线,此命令才能起作用。", "zh-cht": "這不會從伺服器上刪除該裝置,但是該裝置將不再能夠連接到伺服器。該裝置的所有遠程訪問都將丟失。該設備必須連線,此命令才能起作用。", "xloc": [ - "default.handlebars->41->1144" + "default.handlebars->41->1146" ] }, { @@ -63029,7 +63033,7 @@ "zh-chs": "这不会从服务器上删除该设备,但是该设备将不再能够连接到服务器。该设备的所有远程访问都将丢失。该设备必须连线,此命令才能起作用。", "zh-cht": "這不會從伺服器上刪除該裝置,但是該裝置將不再能夠連接到伺服器。該裝置的所有遠程訪問都將丟失。該設備必須連線,此命令才能起作用。", "xloc": [ - "default.handlebars->41->1145" + "default.handlebars->41->1147" ] }, { @@ -63054,7 +63058,7 @@ "zh-chs": "蒂格雷", "zh-cht": "蒂格雷", "xloc": [ - "default.handlebars->41->1722" + "default.handlebars->41->1724" ] }, { @@ -63080,9 +63084,9 @@ "zh-cht": "時間", "xloc": [ "default-mobile.handlebars->11->360", - "default.handlebars->41->1096", - "default.handlebars->41->2796", - "default.handlebars->41->2801", + "default.handlebars->41->1098", + "default.handlebars->41->2798", + "default.handlebars->41->2803", "player.handlebars->3->17" ] }, @@ -63108,8 +63112,8 @@ "zh-chs": "时间范围", "zh-cht": "時間範圍", "xloc": [ - "default.handlebars->41->1084", - "default.handlebars->41->2797" + "default.handlebars->41->1086", + "default.handlebars->41->2799" ] }, { @@ -63134,7 +63138,7 @@ "zh-chs": "时间跨度", "zh-cht": "時間跨度", "xloc": [ - "default.handlebars->41->2368" + "default.handlebars->41->2370" ] }, { @@ -63159,8 +63163,8 @@ "zh-chs": "时间范围", "zh-cht": "時間範圍", "xloc": [ - "default.handlebars->41->1080", - "default.handlebars->41->2795" + "default.handlebars->41->1082", + "default.handlebars->41->2797" ] }, { @@ -63186,7 +63190,7 @@ "zh-cht": "超時", "xloc": [ "default-mobile.handlebars->11->409", - "default.handlebars->41->1205", + "default.handlebars->41->1207", "sharing.handlebars->11->31", "sharing.handlebars->11->9" ] @@ -63403,7 +63407,7 @@ "zh-chs": "要删除此帐户,请在下面的两个框中键入帐户密码,然后单击确定。", "zh-cht": "要刪除此帳戶,請在下面的兩個框中鍵入帳戶密碼,然後單擊確定。", "xloc": [ - "default.handlebars->41->1779" + "default.handlebars->41->1781" ] }, { @@ -64034,7 +64038,7 @@ "tr": "Anahtar Adı", "zh-chs": "代币名称", "xloc": [ - "default.handlebars->41->1765" + "default.handlebars->41->1767" ] }, { @@ -64138,7 +64142,7 @@ "zh-chs": "主题", "zh-cht": "主題", "xloc": [ - "default.handlebars->41->1139" + "default.handlebars->41->1141" ] }, { @@ -64237,7 +64241,7 @@ "zh-chs": "用于通过此服务器连接到设备的流量路由器", "zh-cht": "用於通過此伺服器連接到裝置的流量路由器", "xloc": [ - "default.handlebars->41->920" + "default.handlebars->41->921" ] }, { @@ -64354,7 +64358,7 @@ "zh-chs": "尝试凭据", "xloc": [ "default-mobile.handlebars->11->304", - "default.handlebars->41->818" + "default.handlebars->41->819" ] }, { @@ -64379,7 +64383,7 @@ "zh-chs": "特松加", "zh-cht": "特松加", "xloc": [ - "default.handlebars->41->1723" + "default.handlebars->41->1725" ] }, { @@ -64404,7 +64408,7 @@ "zh-chs": "茨瓦纳", "zh-cht": "茨瓦納", "xloc": [ - "default.handlebars->41->1724" + "default.handlebars->41->1726" ] }, { @@ -64450,7 +64454,7 @@ "zh-chs": "土耳其", "zh-cht": "土耳其", "xloc": [ - "default.handlebars->41->1725" + "default.handlebars->41->1727" ] }, { @@ -64475,7 +64479,7 @@ "zh-chs": "土库曼文", "zh-cht": "土庫曼文", "xloc": [ - "default.handlebars->41->1726" + "default.handlebars->41->1728" ] }, { @@ -64497,8 +64501,8 @@ "xloc": [ "default-mobile.handlebars->11->333", "default-mobile.handlebars->11->334", - "default.handlebars->41->906", - "default.handlebars->41->907" + "default.handlebars->41->907", + "default.handlebars->41->908" ] }, { @@ -64518,7 +64522,7 @@ "ru": "Выключить.", "tr": "Kapat.", "xloc": [ - "default.handlebars->41->2335" + "default.handlebars->41->2337" ] }, { @@ -64540,8 +64544,8 @@ "xloc": [ "default-mobile.handlebars->11->335", "default-mobile.handlebars->11->336", - "default.handlebars->41->908", - "default.handlebars->41->909" + "default.handlebars->41->909", + "default.handlebars->41->910" ] }, { @@ -64561,7 +64565,7 @@ "ru": "Включить.", "tr": "Aç.", "xloc": [ - "default.handlebars->41->2334" + "default.handlebars->41->2336" ] }, { @@ -64634,12 +64638,12 @@ "xloc": [ "default-mobile.handlebars->11->129", "default-mobile.handlebars->11->631", - "default.handlebars->41->1061", - "default.handlebars->41->1295", - "default.handlebars->41->1803", - "default.handlebars->41->1866", - "default.handlebars->41->1961", - "default.handlebars->41->2782", + "default.handlebars->41->1063", + "default.handlebars->41->1297", + "default.handlebars->41->1805", + "default.handlebars->41->1868", + "default.handlebars->41->1963", + "default.handlebars->41->2784", "default.handlebars->41->450", "default.handlebars->container->column_l->p11->deskarea0->deskarea4->5", "sharing.handlebars->p11->deskarea0->deskarea4->3" @@ -64667,7 +64671,7 @@ "zh-chs": "输入密钥名称,选择OTP框,然后按YubiKey™上的按钮。", "zh-cht": "輸入密鑰名稱,選擇OTP框,然後按YubiKey™上的按鈕。", "xloc": [ - "default.handlebars->41->1535" + "default.handlebars->41->1537" ] }, { @@ -64692,7 +64696,7 @@ "zh-chs": "输入要添加的密钥的名称。", "zh-cht": "輸入要新增的密鑰的名稱。", "xloc": [ - "default.handlebars->41->1532" + "default.handlebars->41->1534" ] }, { @@ -64785,7 +64789,7 @@ "zh-chs": "UTF8终端", "zh-cht": "UTF8終端", "xloc": [ - "default.handlebars->41->1333", + "default.handlebars->41->1335", "sharing.handlebars->11->33" ] }, @@ -64811,7 +64815,7 @@ "zh-chs": "乌克兰", "zh-cht": "烏克蘭", "xloc": [ - "default.handlebars->41->1727" + "default.handlebars->41->1729" ] }, { @@ -64932,8 +64936,8 @@ "zh-chs": "在验证电子邮件地址之前,无法访问此功能。这是密码恢复所必需的。转到“我的帐户”标签以更改和验证电子邮件地址。", "zh-cht": "在驗證電子郵件地址之前,無法訪問此功能。這是密碼恢復所必需的。轉到“我的帳戶”標籤以更改和驗證電子郵件地址。", "xloc": [ - "default.handlebars->41->1794", - "default.handlebars->41->772" + "default.handlebars->41->1796", + "default.handlebars->41->773" ] }, { @@ -64958,9 +64962,9 @@ "zh-chs": "在启用两因素身份验证之前,无法访问此功能。这是额外的安全性所必需的。转到“我的帐户”标签,然后查看“帐户安全性”部分。", "zh-cht": "在啟用兩因素身份驗證之前,無法訪問此功能。這是額外的安全性所必需的。轉到“我的帳戶”標籤,然後查看“帳戶安全性”部分。", "xloc": [ - "default.handlebars->41->1796", - "default.handlebars->41->2990", - "default.handlebars->41->774" + "default.handlebars->41->1798", + "default.handlebars->41->2992", + "default.handlebars->41->775" ] }, { @@ -64985,7 +64989,7 @@ "zh-chs": "无法在此模式下添加用户", "xloc": [ "default-mobile.handlebars->11->722", - "default.handlebars->41->2875" + "default.handlebars->41->2877" ] }, { @@ -65054,7 +65058,7 @@ "tr": "Ekran yakalanamadı", "zh-chs": "无法捕捉显示", "xloc": [ - "default.handlebars->41->1207" + "default.handlebars->41->1209" ] }, { @@ -65152,7 +65156,7 @@ "tr": "Herhangi bir cihaz içe aktarılamıyor.", "zh-chs": "无法导入任何设备。", "xloc": [ - "default.handlebars->41->1957" + "default.handlebars->41->1959" ] }, { @@ -65414,9 +65418,9 @@ "xloc": [ "agent-translations.json", "default-mobile.handlebars->11->694", - "default.handlebars->41->1013", - "default.handlebars->41->1035", - "default.handlebars->41->2090" + "default.handlebars->41->1014", + "default.handlebars->41->1036", + "default.handlebars->41->2092" ] }, { @@ -65442,7 +65446,7 @@ "zh-cht": "卸載代理", "xloc": [ "default-mobile.handlebars->11->674", - "default.handlebars->41->1110", + "default.handlebars->41->1112", "default.handlebars->41->644" ] }, @@ -65468,7 +65472,7 @@ "zh-chs": "卸载代理/删除设备", "zh-cht": "卸載代理/刪除設備", "xloc": [ - "default.handlebars->41->2053" + "default.handlebars->41->2055" ] }, { @@ -65493,7 +65497,7 @@ "zh-chs": "卸载代理", "zh-cht": "卸載代理", "xloc": [ - "default.handlebars->41->1147" + "default.handlebars->41->1149" ] }, { @@ -65527,25 +65531,25 @@ "default-mobile.handlebars->11->6", "default-mobile.handlebars->11->632", "default.handlebars->41->13", - "default.handlebars->41->1451", - "default.handlebars->41->1458", + "default.handlebars->41->1453", + "default.handlebars->41->1460", "default.handlebars->41->179", "default.handlebars->41->180", "default.handlebars->41->181", "default.handlebars->41->183", - "default.handlebars->41->1849", "default.handlebars->41->185", - "default.handlebars->41->1850", - "default.handlebars->41->1867", - "default.handlebars->41->2733", - "default.handlebars->41->2750", - "default.handlebars->41->2757", - "default.handlebars->41->2827", - "default.handlebars->41->2828", + "default.handlebars->41->1851", + "default.handlebars->41->1852", + "default.handlebars->41->1869", + "default.handlebars->41->2735", + "default.handlebars->41->2752", + "default.handlebars->41->2759", "default.handlebars->41->2829", "default.handlebars->41->2830", "default.handlebars->41->2831", - "default.handlebars->41->2851", + "default.handlebars->41->2832", + "default.handlebars->41->2833", + "default.handlebars->41->2853", "default.handlebars->41->44", "default.handlebars->41->51", "default.handlebars->41->52", @@ -65575,7 +65579,7 @@ "zh-cht": "未知#{0}", "xloc": [ "default-mobile.handlebars->11->621", - "default.handlebars->41->1856" + "default.handlebars->41->1858" ] }, { @@ -65600,7 +65604,7 @@ "zh-chs": "未知动作", "zh-cht": "未知動作", "xloc": [ - "default.handlebars->41->2908" + "default.handlebars->41->2910" ] }, { @@ -65625,8 +65629,8 @@ "zh-chs": "未知设备", "zh-cht": "未知裝置", "xloc": [ - "default.handlebars->41->2560", - "default.handlebars->41->2719" + "default.handlebars->41->2562", + "default.handlebars->41->2721" ] }, { @@ -65651,9 +65655,9 @@ "zh-chs": "未知设备组", "zh-cht": "未知裝置群", "xloc": [ - "default.handlebars->41->2554", - "default.handlebars->41->2707", - "default.handlebars->41->2912" + "default.handlebars->41->2556", + "default.handlebars->41->2709", + "default.handlebars->41->2914" ] }, { @@ -65678,7 +65682,7 @@ "zh-chs": "未知群组", "zh-cht": "未知群組", "xloc": [ - "default.handlebars->41->2904" + "default.handlebars->41->2906" ] }, { @@ -65704,7 +65708,7 @@ "zh-cht": "未知狀態", "xloc": [ "default-mobile.handlebars->11->293", - "default.handlebars->41->805" + "default.handlebars->41->806" ] }, { @@ -65724,8 +65728,8 @@ "ru": "Неизвестный пользователь", "tr": "Bilinmeyen kullanıcı", "xloc": [ - "default.handlebars->41->2832", - "default.handlebars->41->2852" + "default.handlebars->41->2834", + "default.handlebars->41->2854" ] }, { @@ -65750,7 +65754,7 @@ "zh-chs": "未知用户组", "zh-cht": "未知用戶群", "xloc": [ - "default.handlebars->41->2713" + "default.handlebars->41->2715" ] }, { @@ -65776,7 +65780,7 @@ "zh-cht": "未知版本和狀態", "xloc": [ "default-mobile.handlebars->11->295", - "default.handlebars->41->807" + "default.handlebars->41->808" ] }, { @@ -65801,7 +65805,7 @@ "zh-chs": "密码未知", "zh-cht": "密碼未知", "xloc": [ - "default.handlebars->41->1977" + "default.handlebars->41->1979" ] }, { @@ -65826,8 +65830,8 @@ "zh-chs": "无限制", "zh-cht": "無限", "xloc": [ - "default.handlebars->41->1077", - "default.handlebars->41->1748", + "default.handlebars->41->1079", + "default.handlebars->41->1750", "default.handlebars->41->265", "default.handlebars->41->507", "default.handlebars->41->521" @@ -65855,7 +65859,7 @@ "zh-chs": "解锁帐户", "zh-cht": "解鎖帳戶", "xloc": [ - "default.handlebars->41->2423" + "default.handlebars->41->2425" ] }, { @@ -65879,7 +65883,7 @@ "tr": "Uzak kullanıcının fare ve klavyesinin kilidi açılsın mı?", "zh-chs": "解锁远程用户的鼠标和键盘?", "xloc": [ - "default.handlebars->41->1048" + "default.handlebars->41->1050" ] }, { @@ -65952,7 +65956,7 @@ "default-mobile.handlebars->11->426", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", - "default.handlebars->41->1253", + "default.handlebars->41->1255", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->dialog->dialogBody->dialog3->d3servermode->d3serveraction", @@ -65981,7 +65985,7 @@ "zh-chs": "最新", "zh-cht": "最新", "xloc": [ - "default.handlebars->41->2995" + "default.handlebars->41->2997" ] }, { @@ -66009,8 +66013,8 @@ "agent-translations.json", "default-mobile.handlebars->11->520", "default-mobile.handlebars->11->522", - "default.handlebars->41->834", - "default.handlebars->41->836" + "default.handlebars->41->835", + "default.handlebars->41->837" ] }, { @@ -66090,11 +66094,11 @@ "default-mobile.handlebars->11->486", "default-mobile.handlebars->11->504", "default-mobile.handlebars->11->507", - "default.handlebars->41->1369", - "default.handlebars->41->1395", - "default.handlebars->41->1398", - "default.handlebars->41->2192", - "default.handlebars->41->2200", + "default.handlebars->41->1371", + "default.handlebars->41->1397", + "default.handlebars->41->1400", + "default.handlebars->41->2194", + "default.handlebars->41->2202", "default.handlebars->container->dialog->dialogBody->dialog3->d3localmode->1", "sharing.handlebars->11->65", "sharing.handlebars->11->89", @@ -66124,7 +66128,7 @@ "zh-cht": "上載mesh agent核心", "xloc": [ "default-mobile.handlebars->11->620", - "default.handlebars->41->1508" + "default.handlebars->41->1510" ] }, { @@ -66150,7 +66154,7 @@ "zh-cht": "上載核心檔案", "xloc": [ "default-mobile.handlebars->11->617", - "default.handlebars->41->1505" + "default.handlebars->41->1507" ] }, { @@ -66176,7 +66180,7 @@ "zh-cht": "上載默認伺服器核心", "xloc": [ "default-mobile.handlebars->11->613", - "default.handlebars->41->1501", + "default.handlebars->41->1503", "default.handlebars->41->656", "default.handlebars->41->700" ] @@ -66278,7 +66282,7 @@ "zh-cht": "上傳恢復核心", "xloc": [ "default-mobile.handlebars->11->615", - "default.handlebars->41->1503" + "default.handlebars->41->1505" ] }, { @@ -66328,7 +66332,7 @@ "zh-chs": "上传小核", "xloc": [ "default-mobile.handlebars->11->616", - "default.handlebars->41->1504" + "default.handlebars->41->1506" ] }, { @@ -66354,8 +66358,8 @@ "zh-cht": "上傳將覆蓋1個檔案。繼續?", "xloc": [ "default-mobile.handlebars->11->505", - "default.handlebars->41->1396", - "default.handlebars->41->2201", + "default.handlebars->41->1398", + "default.handlebars->41->2203", "sharing.handlebars->11->90" ] }, @@ -66382,8 +66386,8 @@ "zh-cht": "上傳將覆蓋{0}個檔案。繼續?", "xloc": [ "default-mobile.handlebars->11->506", - "default.handlebars->41->1397", - "default.handlebars->41->2202", + "default.handlebars->41->1399", + "default.handlebars->41->2204", "sharing.handlebars->11->91" ] }, @@ -66431,7 +66435,7 @@ "zh-chs": "上传:“{0}”", "zh-cht": "上傳:“{0}”", "xloc": [ - "default.handlebars->41->2252" + "default.handlebars->41->2254" ] }, { @@ -66455,7 +66459,7 @@ "tr": "Yükleme: \\\"{0}\\\", Boyut: {1}", "zh-chs": "上传:\\\"{0}\\\",大小:{1}", "xloc": [ - "default.handlebars->41->2307" + "default.handlebars->41->2309" ] }, { @@ -66480,7 +66484,7 @@ "zh-chs": "上索布族", "zh-cht": "上索布族", "xloc": [ - "default.handlebars->41->1728" + "default.handlebars->41->1730" ] }, { @@ -66505,7 +66509,7 @@ "zh-chs": "乌尔都文", "zh-cht": "烏爾都文", "xloc": [ - "default.handlebars->41->1729" + "default.handlebars->41->1731" ] }, { @@ -66529,7 +66533,7 @@ "tr": "kullanım", "zh-chs": "用法", "xloc": [ - "default.handlebars->41->2958" + "default.handlebars->41->2960" ] }, { @@ -66653,7 +66657,7 @@ "tr": "Yeni kimlik bilgilerini kullan", "zh-chs": "使用新凭据", "xloc": [ - "default.handlebars->41->1220", + "default.handlebars->41->1222", "mstsc.handlebars->main->1->3->1->dropdowndomain->1->d3coreMode->1" ] }, @@ -66678,7 +66682,7 @@ "tr": "Sunucu kimlik bilgilerini kullan", "zh-chs": "使用服务器凭据", "xloc": [ - "default.handlebars->41->1219", + "default.handlebars->41->1221", "mstsc.handlebars->main->1->3->1->dropdowndomain->1->d3coreMode->0" ] }, @@ -66729,8 +66733,8 @@ "zh-chs": "用过的", "zh-cht": "用過的", "xloc": [ - "default.handlebars->41->2898", - "default.handlebars->41->2900" + "default.handlebars->41->2900", + "default.handlebars->41->2902" ] }, { @@ -66756,16 +66760,16 @@ "zh-cht": "用戶", "xloc": [ "default.handlebars->41->117", - "default.handlebars->41->1926", - "default.handlebars->41->2375", - "default.handlebars->41->2405", - "default.handlebars->41->2550", - "default.handlebars->41->2776", - "default.handlebars->41->2783", - "default.handlebars->41->2787", - "default.handlebars->41->2804", + "default.handlebars->41->1928", + "default.handlebars->41->2377", + "default.handlebars->41->2407", + "default.handlebars->41->2552", + "default.handlebars->41->2778", + "default.handlebars->41->2785", + "default.handlebars->41->2789", + "default.handlebars->41->2806", "default.handlebars->41->351", - "default.handlebars->41->964" + "default.handlebars->41->965" ] }, { @@ -66790,7 +66794,7 @@ "zh-chs": "用户+档案", "zh-cht": "用戶+檔案", "xloc": [ - "default.handlebars->41->2406" + "default.handlebars->41->2408" ] }, { @@ -66815,11 +66819,11 @@ "zh-chs": "用户帐户导入", "zh-cht": "用戶帳戶導入", "xloc": [ - "default.handlebars->41->1956", - "default.handlebars->41->2441", - "default.handlebars->41->2442", + "default.handlebars->41->1958", + "default.handlebars->41->2443", "default.handlebars->41->2444", - "default.handlebars->41->2446" + "default.handlebars->41->2446", + "default.handlebars->41->2448" ] }, { @@ -66844,7 +66848,7 @@ "zh-chs": "用户帐户", "zh-cht": "用戶帳戶", "xloc": [ - "default.handlebars->41->2917" + "default.handlebars->41->2919" ] }, { @@ -66870,8 +66874,8 @@ "zh-cht": "用戶授權", "xloc": [ "default-mobile.handlebars->11->639", - "default.handlebars->41->1924", - "default.handlebars->41->960" + "default.handlebars->41->1926", + "default.handlebars->41->961" ] }, { @@ -66896,12 +66900,12 @@ "zh-chs": "用户同意", "zh-cht": "用戶同意", "xloc": [ - "default.handlebars->41->1089", - "default.handlebars->41->1892", - "default.handlebars->41->2541", - "default.handlebars->41->2643", + "default.handlebars->41->1091", + "default.handlebars->41->1894", + "default.handlebars->41->2543", + "default.handlebars->41->2645", "default.handlebars->41->287", - "default.handlebars->41->860" + "default.handlebars->41->861" ] }, { @@ -66926,12 +66930,12 @@ "zh-chs": "用户组", "zh-cht": "用戶群", "xloc": [ - "default.handlebars->41->2028", - "default.handlebars->41->2029", - "default.handlebars->41->2511", - "default.handlebars->41->2715", - "default.handlebars->41->2736", - "default.handlebars->41->963" + "default.handlebars->41->2030", + "default.handlebars->41->2031", + "default.handlebars->41->2513", + "default.handlebars->41->2717", + "default.handlebars->41->2738", + "default.handlebars->41->964" ] }, { @@ -66981,7 +66985,7 @@ "zh-chs": "用户组成员", "zh-cht": "用戶群成員", "xloc": [ - "default.handlebars->41->2712" + "default.handlebars->41->2714" ] }, { @@ -67031,9 +67035,9 @@ "zh-chs": "用户识别码", "zh-cht": "用戶識別碼", "xloc": [ - "default.handlebars->41->2097", - "default.handlebars->41->2597", - "default.handlebars->41->2598" + "default.handlebars->41->2099", + "default.handlebars->41->2599", + "default.handlebars->41->2600" ] }, { @@ -67058,8 +67062,8 @@ "zh-chs": "用户标识符", "zh-cht": "用戶標識符", "xloc": [ - "default.handlebars->41->2026", - "default.handlebars->41->2581" + "default.handlebars->41->2028", + "default.handlebars->41->2583" ] }, { @@ -67108,7 +67112,7 @@ "zh-chs": "用户列表输出", "zh-cht": "用戶列表輸出", "xloc": [ - "default.handlebars->41->2453" + "default.handlebars->41->2455" ] }, { @@ -67119,7 +67123,7 @@ "pt-br": "Logins de usuários", "ru": "Входы пользователей", "xloc": [ - "default.handlebars->41->2781" + "default.handlebars->41->2783" ] }, { @@ -67145,7 +67149,7 @@ "zh-cht": "用戶名", "xloc": [ "default-mobile.handlebars->11->698", - "default.handlebars->41->2096" + "default.handlebars->41->2098" ] }, { @@ -67265,7 +67269,7 @@ "zh-chs": "用户节", "zh-cht": "用戶節", "xloc": [ - "default.handlebars->41->2949" + "default.handlebars->41->2951" ] }, { @@ -67314,7 +67318,7 @@ "ru": "Расход трафика пользователями", "tr": "Kullanıcı Trafiği Kullanımı", "xloc": [ - "default.handlebars->41->2780" + "default.handlebars->41->2782" ] }, { @@ -67414,7 +67418,7 @@ "zh-chs": "用户已存在", "xloc": [ "default-mobile.handlebars->11->721", - "default.handlebars->41->2874" + "default.handlebars->41->2876" ] }, { @@ -67439,8 +67443,8 @@ "zh-chs": "用户浏览器值", "zh-cht": "用戶瀏覽器值", "xloc": [ - "default.handlebars->41->1740", - "default.handlebars->41->1742" + "default.handlebars->41->1742", + "default.handlebars->41->1744" ] }, { @@ -67465,7 +67469,7 @@ "zh-chs": "用户组已更改:{0}", "zh-cht": "用戶組已更改:{0}", "xloc": [ - "default.handlebars->41->2281" + "default.handlebars->41->2283" ] }, { @@ -67490,7 +67494,7 @@ "zh-chs": "已创建用户组:{0}", "zh-cht": "已創建用戶組:{0}", "xloc": [ - "default.handlebars->41->2271" + "default.handlebars->41->2273" ] }, { @@ -67515,7 +67519,7 @@ "zh-chs": "用户组成员身份已更改:{0}", "zh-cht": "用戶組成員身份已更改:{0}", "xloc": [ - "default.handlebars->41->2269" + "default.handlebars->41->2271" ] }, { @@ -67569,7 +67573,7 @@ "tr": "{0}, {1}, {2}'den kilitli hesapta kullanıcı oturum açma girişimi", "zh-chs": "来自 {0}、{1}、{2} 的锁定帐户的用户登录尝试", "xloc": [ - "default.handlebars->41->2311" + "default.handlebars->41->2313" ] }, { @@ -67593,7 +67597,7 @@ "tr": "{0}, {1}, {2}'den yanlış 2. faktörle kullanıcı oturum açma girişimi", "zh-chs": "来自 {0}、{1}、{2} 的第二个因素不正确的用户登录尝试", "xloc": [ - "default.handlebars->41->2310" + "default.handlebars->41->2312" ] }, { @@ -67613,7 +67617,7 @@ "ru": "Уведомления пользователей изменены", "tr": "Kullanıcı bildirimleri değişti", "xloc": [ - "default.handlebars->41->2332" + "default.handlebars->41->2334" ] }, { @@ -67638,7 +67642,7 @@ "zh-chs": "未找到用户 {0}。", "xloc": [ "default-mobile.handlebars->11->729", - "default.handlebars->41->2882" + "default.handlebars->41->2884" ] }, { @@ -67691,14 +67695,14 @@ "default-mobile.handlebars->11->386", "default-mobile.handlebars->11->454", "default-mobile.handlebars->11->635", - "default.handlebars->41->1133", - "default.handlebars->41->1222", - "default.handlebars->41->1319", - "default.handlebars->41->1812", - "default.handlebars->41->1827", - "default.handlebars->41->1832", - "default.handlebars->41->1870", - "default.handlebars->41->2465", + "default.handlebars->41->1135", + "default.handlebars->41->1224", + "default.handlebars->41->1321", + "default.handlebars->41->1814", + "default.handlebars->41->1829", + "default.handlebars->41->1834", + "default.handlebars->41->1872", + "default.handlebars->41->2467", "default.handlebars->41->316", "default.handlebars->41->459", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->0->1", @@ -67732,8 +67736,8 @@ "xloc": [ "default-mobile.handlebars->11->449", "default-mobile.handlebars->11->452", - "default.handlebars->41->1314", - "default.handlebars->41->1317", + "default.handlebars->41->1316", + "default.handlebars->41->1319", "ssh.handlebars->3->10", "ssh.handlebars->3->7" ] @@ -67788,8 +67792,8 @@ "xloc": [ "default-mobile.handlebars->11->450", "default-mobile.handlebars->11->453", - "default.handlebars->41->1315", - "default.handlebars->41->1318", + "default.handlebars->41->1317", + "default.handlebars->41->1320", "ssh.handlebars->3->11", "ssh.handlebars->3->8" ] @@ -67846,9 +67850,9 @@ "zh-chs": "用户", "zh-cht": "用戶", "xloc": [ - "default.handlebars->41->2499", - "default.handlebars->41->2542", - "default.handlebars->41->2948", + "default.handlebars->41->2501", + "default.handlebars->41->2544", + "default.handlebars->41->2950", "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral" ] }, @@ -67874,7 +67878,7 @@ "zh-chs": "用户会话", "zh-cht": "用戶節", "xloc": [ - "default.handlebars->41->2921" + "default.handlebars->41->2923" ] }, { @@ -67898,7 +67902,7 @@ "tr": "Kullanıcılar Görünümü", "zh-chs": "用户视图", "xloc": [ - "default.handlebars->41->2439" + "default.handlebars->41->2441" ] }, { @@ -67923,7 +67927,7 @@ "zh-chs": "未找到用户 {0}。", "xloc": [ "default-mobile.handlebars->11->730", - "default.handlebars->41->2883" + "default.handlebars->41->2885" ] }, { @@ -67947,7 +67951,7 @@ "tr": "VNC Bağlantısı", "zh-chs": "VNC 连接", "xloc": [ - "default.handlebars->41->745" + "default.handlebars->41->746" ] }, { @@ -67971,7 +67975,7 @@ "tr": "VNC uzak bağlantı noktası:", "zh-chs": "VNC远程连接端口:", "xloc": [ - "default.handlebars->41->744" + "default.handlebars->41->745" ] }, { @@ -67996,7 +68000,7 @@ "zh-chs": "VT100 +(F10 = ESC + [OY)", "zh-cht": "VT100 +(F10 = ESC + [OY)", "xloc": [ - "default.handlebars->41->1338", + "default.handlebars->41->1340", "sharing.handlebars->11->38" ] }, @@ -68047,7 +68051,7 @@ "zh-chs": "验证电邮", "zh-cht": "驗證電郵", "xloc": [ - "default.handlebars->41->2418" + "default.handlebars->41->2420" ] }, { @@ -68072,7 +68076,7 @@ "zh-chs": "验证异常", "xloc": [ "default-mobile.handlebars->11->723", - "default.handlebars->41->2876" + "default.handlebars->41->2878" ] }, { @@ -68097,7 +68101,7 @@ "zh-chs": "有效期", "zh-cht": "有效期", "xloc": [ - "default.handlebars->41->1078" + "default.handlebars->41->1080" ] }, { @@ -68121,7 +68125,7 @@ "tr": "Değer", "zh-chs": "价值", "xloc": [ - "default.handlebars->41->1269" + "default.handlebars->41->1271" ] }, { @@ -68146,7 +68150,7 @@ "zh-chs": "文达", "zh-cht": "文達", "xloc": [ - "default.handlebars->41->1730" + "default.handlebars->41->1732" ] }, { @@ -68173,8 +68177,8 @@ "xloc": [ "default-mobile.handlebars->11->580", "default-mobile.handlebars->11->583", - "default.handlebars->41->1467", - "default.handlebars->41->1470" + "default.handlebars->41->1469", + "default.handlebars->41->1472" ] }, { @@ -68225,7 +68229,7 @@ "zh-chs": "已验证", "zh-cht": "已驗證", "xloc": [ - "default.handlebars->41->2691" + "default.handlebars->41->2693" ] }, { @@ -68277,8 +68281,8 @@ "zh-cht": "驗證電話號碼", "xloc": [ "default-mobile.handlebars->11->94", - "default.handlebars->41->1512", - "default.handlebars->41->2414" + "default.handlebars->41->1514", + "default.handlebars->41->2416" ] }, { @@ -68303,7 +68307,7 @@ "zh-chs": "用户{0}的已验证电话号码", "zh-cht": "用戶{0}的已驗證電話號碼", "xloc": [ - "default.handlebars->41->2298" + "default.handlebars->41->2300" ] }, { @@ -68383,10 +68387,10 @@ "default-mobile.handlebars->11->563", "default-mobile.handlebars->11->581", "default-mobile.handlebars->11->586", - "default.handlebars->41->1404", - "default.handlebars->41->1450", - "default.handlebars->41->1468", - "default.handlebars->41->1473", + "default.handlebars->41->1406", + "default.handlebars->41->1452", + "default.handlebars->41->1470", + "default.handlebars->41->1475", "default.handlebars->container->column_l->p42->p42tbl->1->0->5" ] }, @@ -68412,7 +68416,7 @@ "zh-chs": "版本不兼容,请先升级您的MeshCentral", "zh-cht": "版本不兼容,請先升級你的MeshCentral", "xloc": [ - "default.handlebars->41->2991" + "default.handlebars->41->2993" ] }, { @@ -68485,7 +68489,7 @@ "zh-chs": "颤动", "xloc": [ "default-mobile.handlebars->11->359", - "default.handlebars->41->1095" + "default.handlebars->41->1097" ] }, { @@ -68510,7 +68514,7 @@ "zh-chs": "越南文", "zh-cht": "越南文", "xloc": [ - "default.handlebars->41->1731" + "default.handlebars->41->1733" ] }, { @@ -68560,7 +68564,7 @@ "zh-chs": "查看所有事件", "zh-cht": "查看所有事件", "xloc": [ - "default.handlebars->41->2490" + "default.handlebars->41->2492" ] }, { @@ -68606,8 +68610,8 @@ "zh-chs": "查看变更日志", "zh-cht": "查看變更日誌", "xloc": [ - "default.handlebars->41->2994", - "default.handlebars->41->2996" + "default.handlebars->41->2996", + "default.handlebars->41->2998" ] }, { @@ -68632,7 +68636,7 @@ "zh-chs": "查看有关此设备的注释", "zh-cht": "查看有關此裝置的註釋", "xloc": [ - "default.handlebars->41->897" + "default.handlebars->41->898" ] }, { @@ -68657,7 +68661,7 @@ "zh-chs": "查看有关此设备组的注释", "zh-cht": "查看有關此裝置群的註釋", "xloc": [ - "default.handlebars->41->1911" + "default.handlebars->41->1913" ] }, { @@ -68682,7 +68686,7 @@ "zh-chs": "查看有关此用户的注释", "zh-cht": "查看有關此用戶的註釋", "xloc": [ - "default.handlebars->41->2653" + "default.handlebars->41->2655" ] }, { @@ -68731,7 +68735,7 @@ "tr": "Bu kullanıcı için önceki girişleri görüntüle", "zh-chs": "查看此用户以前的登录", "xloc": [ - "default.handlebars->41->2666" + "default.handlebars->41->2668" ] }, { @@ -68780,7 +68784,7 @@ "zh-chs": "沃拉普克", "zh-cht": "沃拉普克", "xloc": [ - "default.handlebars->41->1732" + "default.handlebars->41->1734" ] }, { @@ -68989,7 +68993,7 @@ "zh-cht": "正在等待用戶授予訪問權限...", "xloc": [ "default-mobile.handlebars->11->406", - "default.handlebars->41->1202", + "default.handlebars->41->1204", "sharing.handlebars->11->28", "sharing.handlebars->11->6" ] @@ -69016,8 +69020,8 @@ "zh-chs": "唤醒", "zh-cht": "喚醒", "xloc": [ - "default.handlebars->41->1009", - "default.handlebars->41->1031" + "default.handlebars->41->1010", + "default.handlebars->41->1032" ] }, { @@ -69044,8 +69048,8 @@ "xloc": [ "default-mobile.handlebars->11->670", "default-mobile.handlebars->11->685", - "default.handlebars->41->2049", - "default.handlebars->41->2080" + "default.handlebars->41->2051", + "default.handlebars->41->2082" ] }, { @@ -69071,7 +69075,7 @@ "zh-cht": "喚醒", "xloc": [ "default-mobile.handlebars->11->364", - "default.handlebars->41->1100" + "default.handlebars->41->1102" ] }, { @@ -69121,7 +69125,7 @@ "zh-chs": "瓦隆", "zh-cht": "瓦隆", "xloc": [ - "default.handlebars->41->1733" + "default.handlebars->41->1735" ] }, { @@ -69146,7 +69150,7 @@ "zh-chs": "弱", "zh-cht": "弱", "xloc": [ - "default.handlebars->41->1819" + "default.handlebars->41->1821" ] }, { @@ -69196,8 +69200,8 @@ "ru": "Веб Push-уведомления", "tr": "Web Sayfası Bildirimleri", "xloc": [ - "default.handlebars->41->2126", - "default.handlebars->41->990" + "default.handlebars->41->2128", + "default.handlebars->41->991" ] }, { @@ -69216,7 +69220,7 @@ "ru": "Web Power Switch 7", "tr": "Web Güç Anahtarı 7", "xloc": [ - "default.handlebars->41->1810" + "default.handlebars->41->1812" ] }, { @@ -69241,8 +69245,8 @@ "zh-chs": "网络服务器", "zh-cht": "網絡伺服器", "xloc": [ - "default.handlebars->41->2974", - "default.handlebars->41->2975" + "default.handlebars->41->2976", + "default.handlebars->41->2977" ] }, { @@ -69266,7 +69270,7 @@ "tr": "Web Sunucusu HTTP Başlıkları", "zh-chs": "Web 服务器 HTTP 标头", "xloc": [ - "default.handlebars->41->2978" + "default.handlebars->41->2980" ] }, { @@ -69291,7 +69295,7 @@ "zh-chs": "Web服务器请求", "zh-cht": "Web伺服器請求", "xloc": [ - "default.handlebars->41->2976" + "default.handlebars->41->2978" ] }, { @@ -69316,7 +69320,7 @@ "zh-chs": "Web套接字中继", "zh-cht": "Web插座中繼", "xloc": [ - "default.handlebars->41->2977" + "default.handlebars->41->2979" ] }, { @@ -69341,8 +69345,8 @@ "zh-chs": "网络RDP", "zh-cht": "網絡RDP", "xloc": [ - "default.handlebars->41->2823", - "default.handlebars->41->934", + "default.handlebars->41->2825", + "default.handlebars->41->935", "default.handlebars->contextMenu->cxwebrdp" ] }, @@ -69362,7 +69366,7 @@ "ru": "Web-SFTP", "tr": "Web-SFTP", "xloc": [ - "default.handlebars->41->2825" + "default.handlebars->41->2827" ] }, { @@ -69386,8 +69390,8 @@ "tr": "Web-SSH", "zh-chs": "网络SSH", "xloc": [ - "default.handlebars->41->2824", - "default.handlebars->41->936", + "default.handlebars->41->2826", + "default.handlebars->41->937", "default.handlebars->contextMenu->cxwebssh" ] }, @@ -69412,8 +69416,8 @@ "tr": "Web-VNC", "zh-chs": "网络VNC", "xloc": [ - "default.handlebars->41->2826", - "default.handlebars->41->932", + "default.handlebars->41->2828", + "default.handlebars->41->933", "default.handlebars->contextMenu->cxwebvnc" ] }, @@ -69438,7 +69442,7 @@ "tr": "WebRDP", "zh-chs": "网络RDP", "xloc": [ - "default.handlebars->41->2942" + "default.handlebars->41->2944" ] }, { @@ -69462,7 +69466,7 @@ "tr": "WebSSH", "zh-chs": "网络SSH", "xloc": [ - "default.handlebars->41->2943" + "default.handlebars->41->2945" ] }, { @@ -69506,7 +69510,7 @@ "tr": "WebVNC", "zh-chs": "网络VNC", "xloc": [ - "default.handlebars->41->2944" + "default.handlebars->41->2946" ] }, { @@ -69603,7 +69607,7 @@ "zh-chs": "威尔士文", "zh-cht": "威爾士文", "xloc": [ - "default.handlebars->41->1734" + "default.handlebars->41->1736" ] }, { @@ -69628,7 +69632,7 @@ "zh-chs": "启用后,任何人都可以使用邀请代码通过以下公共连结将设备加入该设备组:", "zh-cht": "啟用後,任何人都可以使用邀請代碼通過以下公共鏈結將裝置加入該裝置群:", "xloc": [ - "default.handlebars->41->2105" + "default.handlebars->41->2107" ] }, { @@ -69654,7 +69658,7 @@ "zh-cht": "啟用後,每次登入時,你都可以選擇向電郵帳戶接收登入保安編碼,以提高安全性。", "xloc": [ "default-mobile.handlebars->11->100", - "default.handlebars->41->1519" + "default.handlebars->41->1521" ] }, { @@ -69679,7 +69683,7 @@ "zh-chs": "选择此策略时,此服务器不管理英特尔®AMT。 仍然可以通过手动激活和配置Intel AMT来使用它。", "zh-cht": "選擇此策略時,此服務器不管理英特爾®AMT。 仍然可以通過手動激活和配置Intel AMT來使用它。", "xloc": [ - "default.handlebars->41->1987" + "default.handlebars->41->1989" ] }, { @@ -69726,7 +69730,7 @@ "zh-chs": "选择此策略后,将禁用处于客户端控制模式(CCM)的所有英特尔®AMT。 其他设备将清除CIRA,并且仍然可以手动进行管理。", "zh-cht": "選擇此策略後,將禁用處於客戶端控制模式(CCM)的所有英特爾®AMT。 其他設備將清除CIRA,並且仍然可以手動進行管理。", "xloc": [ - "default.handlebars->41->1988" + "default.handlebars->41->1990" ] }, { @@ -69751,7 +69755,7 @@ "zh-chs": "下次登录时将更改。", "zh-cht": "下次登入時將更改。", "xloc": [ - "default.handlebars->41->2623" + "default.handlebars->41->2625" ] }, { @@ -69779,8 +69783,8 @@ "default-mobile.handlebars->11->433", "default-mobile.handlebars->11->437", "default-mobile.handlebars->dialog->3->dialog3->deskkeys->5", - "default.handlebars->41->1260", - "default.handlebars->41->1264", + "default.handlebars->41->1262", + "default.handlebars->41->1266", "sharing.handlebars->p11->deskarea0->deskarea4->3->deskkeys->3" ] }, @@ -69986,7 +69990,7 @@ "zh-chs": "Win32可执行档案", "zh-cht": "Win32可執行檔案", "xloc": [ - "default.handlebars->41->1161" + "default.handlebars->41->1163" ] }, { @@ -70081,7 +70085,7 @@ "default-mobile.handlebars->11->283", "default.handlebars->41->534", "default.handlebars->41->55", - "default.handlebars->41->795" + "default.handlebars->41->796" ] }, { @@ -70132,7 +70136,7 @@ "zh-chs": "Windows(32位)", "zh-cht": "Windows(32位)", "xloc": [ - "default.handlebars->41->1167" + "default.handlebars->41->1169" ] }, { @@ -70157,7 +70161,7 @@ "zh-chs": "Windows(64位)", "zh-cht": "Windows(64位)", "xloc": [ - "default.handlebars->41->1166" + "default.handlebars->41->1168" ] }, { @@ -70385,7 +70389,7 @@ "zh-chs": "Windows命令提示", "zh-cht": "Windows命令提示", "xloc": [ - "default.handlebars->41->1115", + "default.handlebars->41->1117", "default.handlebars->41->669" ] }, @@ -70397,7 +70401,7 @@ "pt-br": "MeshAgent Windows", "ru": "MeshAgent для Windows ", "xloc": [ - "default.handlebars->41->2110", + "default.handlebars->41->2112", "default.handlebars->41->524" ] }, @@ -70500,7 +70504,7 @@ "zh-chs": "Windows PowerShell", "zh-cht": "Windows PowerShell", "xloc": [ - "default.handlebars->41->1116", + "default.handlebars->41->1118", "default.handlebars->41->670" ] }, @@ -70526,7 +70530,7 @@ "zh-chs": "视窗安全", "xloc": [ "default-mobile.handlebars->11->528", - "default.handlebars->41->842" + "default.handlebars->41->843" ] }, { @@ -70587,7 +70591,7 @@ "ru": "Рабочий каталог", "fr": "Répertoire de travail", "xloc": [ - "default.handlebars->41->1226" + "default.handlebars->41->1228" ] }, { @@ -70661,7 +70665,7 @@ "zh-chs": "换行:关", "zh-cht": "换行:關", "xloc": [ - "default.handlebars->41->1388", + "default.handlebars->41->1390", "sharing.handlebars->11->84" ] }, @@ -70687,7 +70691,7 @@ "zh-chs": "换行:开", "zh-cht": "换行:開", "xloc": [ - "default.handlebars->41->1387", + "default.handlebars->41->1389", "sharing.handlebars->11->83" ] }, @@ -70713,7 +70717,7 @@ "zh-chs": "为此设备写一个事件", "zh-cht": "為此裝置寫一個事件", "xloc": [ - "default.handlebars->41->899" + "default.handlebars->41->900" ] }, { @@ -70788,7 +70792,7 @@ "zh-chs": "XTerm", "zh-cht": "XTerm", "xloc": [ - "default.handlebars->41->923" + "default.handlebars->41->924" ] }, { @@ -70813,7 +70817,7 @@ "zh-chs": "科萨", "zh-cht": "科薩", "xloc": [ - "default.handlebars->41->1735" + "default.handlebars->41->1737" ] }, { @@ -70838,7 +70842,7 @@ "zh-chs": "意第绪文", "zh-cht": "意第緒文", "xloc": [ - "default.handlebars->41->1736" + "default.handlebars->41->1738" ] }, { @@ -71011,7 +71015,7 @@ "zh-chs": "YubiKey™ OTP", "zh-cht": "YubiKey™OTP", "xloc": [ - "default.handlebars->41->1538" + "default.handlebars->41->1540" ] }, { @@ -71062,7 +71066,7 @@ "zh-chs": "邮编档案名", "zh-cht": "郵編檔案名", "xloc": [ - "default.handlebars->41->1372", + "default.handlebars->41->1374", "sharing.handlebars->11->68" ] }, @@ -71088,7 +71092,7 @@ "zh-chs": "缩放至适合范围", "zh-cht": "縮放至適合範圍", "xloc": [ - "default.handlebars->41->761" + "default.handlebars->41->762" ] }, { @@ -71113,8 +71117,8 @@ "zh-chs": "放大到一定程度", "zh-cht": "放大到一定程度", "xloc": [ - "default.handlebars->41->758", - "default.handlebars->41->764" + "default.handlebars->41->759", + "default.handlebars->41->765" ] }, { @@ -71139,8 +71143,8 @@ "zh-chs": "缩小到一定程度", "zh-cht": "縮小到一定程度", "xloc": [ - "default.handlebars->41->759", - "default.handlebars->41->765" + "default.handlebars->41->760", + "default.handlebars->41->766" ] }, { @@ -71165,7 +71169,7 @@ "zh-chs": "祖鲁族", "zh-cht": "祖魯族", "xloc": [ - "default.handlebars->41->1737" + "default.handlebars->41->1739" ] }, { @@ -71583,7 +71587,7 @@ "zh-chs": "\\\\'", "zh-cht": "\\\\'", "xloc": [ - "default.handlebars->41->2992" + "default.handlebars->41->2994" ] }, { @@ -71610,8 +71614,8 @@ "xloc": [ "default-mobile.handlebars->11->180", "default-mobile.handlebars->11->181", - "default.handlebars->41->732", - "default.handlebars->41->733" + "default.handlebars->41->733", + "default.handlebars->41->734" ] }, { @@ -71689,8 +71693,8 @@ "xloc": [ "default-mobile.handlebars->11->184", "default-mobile.handlebars->11->185", - "default.handlebars->41->736", - "default.handlebars->41->737" + "default.handlebars->41->737", + "default.handlebars->41->738" ] }, { @@ -71714,7 +71718,7 @@ "tr": "ve", "zh-chs": "和", "xloc": [ - "default.handlebars->41->714" + "default.handlebars->41->715" ] }, { @@ -71792,8 +71796,8 @@ "xloc": [ "default-mobile.handlebars->11->178", "default-mobile.handlebars->11->179", - "default.handlebars->41->730", - "default.handlebars->41->731" + "default.handlebars->41->731", + "default.handlebars->41->732" ] }, { @@ -71990,8 +71994,8 @@ "tr": "bilgisayar listesi.json", "zh-chs": "计算机列表.json", "xloc": [ - "default.handlebars->41->707", - "default.handlebars->41->712" + "default.handlebars->41->708", + "default.handlebars->41->713" ] }, { @@ -72017,7 +72021,7 @@ "zh-cht": "console.txt", "xloc": [ "default-mobile.handlebars->11->610", - "default.handlebars->41->1498" + "default.handlebars->41->1500" ] }, { @@ -72043,7 +72047,7 @@ "zh-cht": "複製", "xloc": [ "default-mobile.handlebars->11->161", - "default.handlebars->41->2197" + "default.handlebars->41->2199" ] }, { @@ -72092,8 +72096,8 @@ "tr": "açıklama:", "zh-chs": "描述:", "xloc": [ - "default.handlebars->41->738", - "default.handlebars->41->739" + "default.handlebars->41->739", + "default.handlebars->41->740" ] }, { @@ -72142,8 +72146,8 @@ "zh-chs": "devicelist.csv", "zh-cht": "devicelist.csv", "xloc": [ - "default.handlebars->41->703", - "default.handlebars->41->711" + "default.handlebars->41->704", + "default.handlebars->41->712" ] }, { @@ -72168,8 +72172,8 @@ "zh-chs": "devicelist.json", "zh-cht": "devicelist.json", "xloc": [ - "default.handlebars->41->705", - "default.handlebars->41->713" + "default.handlebars->41->706", + "default.handlebars->41->714" ] }, { @@ -72264,8 +72268,8 @@ "zh-chs": "eventslist.csv", "zh-cht": "eventslist.csv", "xloc": [ - "default.handlebars->41->2382", - "default.handlebars->41->2387" + "default.handlebars->41->2384", + "default.handlebars->41->2389" ] }, { @@ -72290,8 +72294,8 @@ "zh-chs": "eventslist.json", "zh-cht": "eventslist.json", "xloc": [ - "default.handlebars->41->2384", - "default.handlebars->41->2388" + "default.handlebars->41->2386", + "default.handlebars->41->2390" ] }, { @@ -72366,8 +72370,8 @@ "zh-chs": "免费", "zh-cht": "免費", "xloc": [ - "default.handlebars->41->2929", - "default.handlebars->41->2932" + "default.handlebars->41->2931", + "default.handlebars->41->2934" ] }, { @@ -72394,8 +72398,8 @@ "xloc": [ "default-mobile.handlebars->11->172", "default-mobile.handlebars->11->173", - "default.handlebars->41->724", - "default.handlebars->41->725" + "default.handlebars->41->725", + "default.handlebars->41->726" ] }, { @@ -72422,8 +72426,8 @@ "xloc": [ "default-mobile.handlebars->11->170", "default-mobile.handlebars->11->171", - "default.handlebars->41->722", - "default.handlebars->41->723" + "default.handlebars->41->723", + "default.handlebars->41->724" ] }, { @@ -72639,7 +72643,7 @@ "ru": "id, name, email, creation, lastlogin, groups, authfactors, siteadmin, useradmin, locked", "fr": "id, nom, email, creation, derniereconnexion, groupes, authentification, siteadmin, useradmin, verrouillé", "xloc": [ - "default.handlebars->41->2454" + "default.handlebars->41->2456" ] }, { @@ -72706,7 +72710,7 @@ "tr": "id, ad, rname, ana bilgisayar, simge, ip, osdesc, durum, grup adı, bağlantı, pwr, av, güncelleme, güvenlik duvarı, avdetails", "zh-chs": "id、名称、rname、主机、图标、ip、osdesc、状态、组名、conn、pwr、av、更新、防火墙、avdetails", "xloc": [ - "default.handlebars->41->710" + "default.handlebars->41->711" ] }, { @@ -72754,8 +72758,8 @@ "xloc": [ "default-mobile.handlebars->11->168", "default-mobile.handlebars->11->169", - "default.handlebars->41->720", - "default.handlebars->41->721" + "default.handlebars->41->721", + "default.handlebars->41->722" ] }, { @@ -72855,7 +72859,7 @@ "zh-chs": "k max,默认为空白", "zh-cht": "k max,默認為空白", "xloc": [ - "default.handlebars->41->2482" + "default.handlebars->41->2484" ] }, { @@ -72953,7 +72957,7 @@ "zh-cht": "macOS", "xloc": [ "default-mobile.handlebars->11->287", - "default.handlebars->41->799" + "default.handlebars->41->800" ] }, { @@ -73068,7 +73072,7 @@ "zh-chs": "macOS ARM (64位)", "zh-cht": "macOS ARM (64位)", "xloc": [ - "default.handlebars->41->1171" + "default.handlebars->41->1173" ] }, { @@ -73093,7 +73097,7 @@ "zh-chs": "macOS x86 (64位)", "zh-cht": "macOS x86 (64位)", "xloc": [ - "default.handlebars->41->1170" + "default.handlebars->41->1172" ] }, { @@ -73196,7 +73200,7 @@ "zh-cht": "移動", "xloc": [ "default-mobile.handlebars->11->162", - "default.handlebars->41->2198" + "default.handlebars->41->2200" ] }, { @@ -73356,7 +73360,7 @@ "tr": "veya", "zh-chs": "或者", "xloc": [ - "default.handlebars->41->715" + "default.handlebars->41->716" ] }, { @@ -73382,8 +73386,8 @@ "xloc": [ "default-mobile.handlebars->11->182", "default-mobile.handlebars->11->183", - "default.handlebars->41->734", - "default.handlebars->41->735" + "default.handlebars->41->735", + "default.handlebars->41->736" ] }, { @@ -73467,7 +73471,7 @@ "zh-chs": "servererrors.txt", "zh-cht": "servererrors.txt", "xloc": [ - "default.handlebars->41->1853" + "default.handlebars->41->1855" ] }, { @@ -73492,7 +73496,7 @@ "zh-chs": "servertrace.csv", "zh-cht": "servertrace.csv", "xloc": [ - "default.handlebars->41->2986" + "default.handlebars->41->2988" ] }, { @@ -73540,8 +73544,8 @@ "xloc": [ "default-mobile.handlebars->11->176", "default-mobile.handlebars->11->177", - "default.handlebars->41->728", - "default.handlebars->41->729" + "default.handlebars->41->729", + "default.handlebars->41->730" ] }, { @@ -73568,8 +73572,8 @@ "xloc": [ "default-mobile.handlebars->11->174", "default-mobile.handlebars->11->175", - "default.handlebars->41->726", - "default.handlebars->41->727" + "default.handlebars->41->727", + "default.handlebars->41->728" ] }, { @@ -73594,7 +73598,7 @@ "zh-chs": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss", "zh-cht": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss", "xloc": [ - "default.handlebars->41->2961" + "default.handlebars->41->2963" ] }, { @@ -73619,7 +73623,7 @@ "zh-chs": "时间,来源,信息", "zh-cht": "時間,來源,訊息", "xloc": [ - "default.handlebars->41->2985" + "default.handlebars->41->2987" ] }, { @@ -73666,8 +73670,8 @@ "zh-chs": "总计", "zh-cht": "總", "xloc": [ - "default.handlebars->41->2930", - "default.handlebars->41->2933" + "default.handlebars->41->2932", + "default.handlebars->41->2935" ] }, { @@ -73718,8 +73722,8 @@ "xloc": [ "default-mobile.handlebars->11->166", "default-mobile.handlebars->11->167", - "default.handlebars->41->718", - "default.handlebars->41->719" + "default.handlebars->41->719", + "default.handlebars->41->720" ] }, { @@ -73768,8 +73772,8 @@ "xloc": [ "default-mobile.handlebars->11->164", "default-mobile.handlebars->11->165", - "default.handlebars->41->716", - "default.handlebars->41->717" + "default.handlebars->41->717", + "default.handlebars->41->718" ] }, { @@ -73794,8 +73798,8 @@ "zh-chs": "userlist.csv", "zh-cht": "userlist.csv", "xloc": [ - "default.handlebars->41->2450", - "default.handlebars->41->2455" + "default.handlebars->41->2452", + "default.handlebars->41->2457" ] }, { @@ -73820,8 +73824,8 @@ "zh-chs": "userlist.json", "zh-cht": "userlist.json", "xloc": [ - "default.handlebars->41->2452", - "default.handlebars->41->2456" + "default.handlebars->41->2454", + "default.handlebars->41->2458" ] }, { @@ -73846,7 +73850,7 @@ "zh-chs": "utc,时间,类型,指令,用户,设备,消息", "zh-cht": "utc,時間,類型,指令,用戶,裝置,消息", "xloc": [ - "default.handlebars->41->2386" + "default.handlebars->41->2388" ] }, { @@ -74063,8 +74067,8 @@ "zh-chs": "{0} Gb", "zh-cht": "{0} Gb", "xloc": [ - "default.handlebars->41->2172", - "default.handlebars->41->2177" + "default.handlebars->41->2174", + "default.handlebars->41->2179" ] }, { @@ -74110,9 +74114,9 @@ "zh-chs": "{0} Kb", "zh-cht": "{0} Kb", "xloc": [ - "default.handlebars->41->2170", - "default.handlebars->41->2175", - "default.handlebars->41->2749" + "default.handlebars->41->2172", + "default.handlebars->41->2177", + "default.handlebars->41->2751" ] }, { @@ -74160,10 +74164,10 @@ "xloc": [ "default-mobile.handlebars->11->594", "default-mobile.handlebars->11->599", - "default.handlebars->41->1481", - "default.handlebars->41->1486", - "default.handlebars->41->2171", - "default.handlebars->41->2176" + "default.handlebars->41->1483", + "default.handlebars->41->1488", + "default.handlebars->41->2173", + "default.handlebars->41->2178" ] }, { @@ -74189,7 +74193,7 @@ "zh-cht": "{0} Mb,{1} Mhz", "xloc": [ "default-mobile.handlebars->11->592", - "default.handlebars->41->1479" + "default.handlebars->41->1481" ] }, { @@ -74235,7 +74239,7 @@ "zh-chs": "{0}个活跃会话", "zh-cht": "{0}個活躍節", "xloc": [ - "default.handlebars->41->2669" + "default.handlebars->41->2671" ] }, { @@ -74260,8 +74264,8 @@ "zh-chs": "{0} b", "zh-cht": "{0} b", "xloc": [ - "default.handlebars->41->2169", - "default.handlebars->41->2174" + "default.handlebars->41->2171", + "default.handlebars->41->2176" ] }, { @@ -74287,8 +74291,8 @@ "zh-cht": "{0}個字節", "xloc": [ "default-mobile.handlebars->11->150", - "default.handlebars->41->2185", - "default.handlebars->41->2770", + "default.handlebars->41->2187", + "default.handlebars->41->2772", "download.handlebars->3->2", "download2.handlebars->5->2", "sharing.handlebars->11->97" @@ -74316,7 +74320,7 @@ "zh-chs": "剩余{0}个字节", "zh-cht": "剩餘{0}個字節", "xloc": [ - "default.handlebars->41->2164" + "default.handlebars->41->2166" ] }, { @@ -74362,7 +74366,7 @@ "zh-chs": "{0}个连接", "zh-cht": "{0}個連接", "xloc": [ - "default.handlebars->41->1231", + "default.handlebars->41->1233", "sharing.handlebars->11->16" ] }, @@ -74387,7 +74391,7 @@ "tr": "{1} ile {2} arasında {0}.", "zh-chs": "{0} 从 {1} 到 {2}。", "xloc": [ - "default.handlebars->41->1129" + "default.handlebars->41->1131" ] }, { @@ -74412,7 +74416,7 @@ "zh-chs": "剩余{0} GB", "zh-cht": "剩餘{0} GB", "xloc": [ - "default.handlebars->41->2167" + "default.handlebars->41->2169" ] }, { @@ -74437,7 +74441,7 @@ "zh-chs": "{0}个群组", "zh-cht": "{0}個群組", "xloc": [ - "default.handlebars->41->2628" + "default.handlebars->41->2630" ] }, { @@ -74509,7 +74513,7 @@ "zh-chs": "剩余{0}千字节", "zh-cht": "剩餘{0}千字節", "xloc": [ - "default.handlebars->41->2165" + "default.handlebars->41->2167" ] }, { @@ -74561,7 +74565,7 @@ "zh-chs": "剩余{0}兆字节", "zh-cht": "剩餘{0}兆字節", "xloc": [ - "default.handlebars->41->2166" + "default.handlebars->41->2168" ] }, { @@ -74672,7 +74676,7 @@ "zh-chs": "{0}未显示更多用户,请使用搜索框查找用户...", "zh-cht": "{0}未顯示更多用戶,請使用搜索框查找用戶...", "xloc": [ - "default.handlebars->41->2396" + "default.handlebars->41->2398" ] }, { @@ -75074,7 +75078,7 @@ "default-mobile.handlebars->11->219", "default-mobile.handlebars->11->223", "default-mobile.handlebars->11->227", - "default.handlebars->41->2400", + "default.handlebars->41->2402", "default.handlebars->41->401", "default.handlebars->41->404", "default.handlebars->41->408", @@ -75309,8 +75313,8 @@ "ru": "{0}, {1} на {2} мин.", "tr": "{0}, {1} için {2} dakika", "xloc": [ - "default.handlebars->41->1938", - "default.handlebars->41->977" + "default.handlebars->41->1940", + "default.handlebars->41->978" ] }, { @@ -75330,8 +75334,8 @@ "ru": "{0}, {1} на {2} мин.", "tr": "{0}, {1} için {2} dakika", "xloc": [ - "default.handlebars->41->1939", - "default.handlebars->41->978" + "default.handlebars->41->1941", + "default.handlebars->41->979" ] }, { @@ -75356,8 +75360,8 @@ "zh-chs": "{0},{1}至{2}", "zh-cht": "{0},{1}至{2}", "xloc": [ - "default.handlebars->41->1937", - "default.handlebars->41->976" + "default.handlebars->41->1939", + "default.handlebars->41->977" ] }, { @@ -75432,7 +75436,7 @@ "zh-chs": "{0}k在1档案内。最多{1}k", "zh-cht": "{0}k在1檔案內。最多{1}k", "xloc": [ - "default.handlebars->41->2179" + "default.handlebars->41->2181" ] }, { @@ -75457,7 +75461,7 @@ "zh-chs": "{1}k在{0}个档案中。最多{2}k", "zh-cht": "{1}k在{0}個檔案中。最多{2}k", "xloc": [ - "default.handlebars->41->2178" + "default.handlebars->41->2180" ] }, { From ee8b0e701e64916b280d8da6b01125d28b550e60 Mon Sep 17 00:00:00 2001 From: KJ7ICE <85096517+kj7ice@users.noreply.github.com> Date: Fri, 24 Jun 2022 01:42:41 -0700 Subject: [PATCH 050/105] Handle case of empty meshes list for SQL query. Fixes Ylianst#4157 --- db.js | 1 + 1 file changed, 1 insertion(+) diff --git a/db.js b/db.js index b4939f5d..62c94c33 100644 --- a/db.js +++ b/db.js @@ -1370,6 +1370,7 @@ module.exports.CreateDB = function (parent, func) { if (id && (id != '')) { sqlDbQuery('SELECT doc FROM main WHERE id = ? AND type = ? AND domain = ? AND extra IN (?)', [id, type, domain, meshes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } else { + if ((meshes == null) || (meshes.length == 0)) { meshes = ''; } if (extrasids == null) { sqlDbQuery('SELECT doc FROM main WHERE type = ? AND domain = ? AND extra IN (?)', [type, domain, meshes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } else { From dce4051f7b7b78c64ed4a896020274bf623094c8 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Fri, 24 Jun 2022 13:50:39 -0400 Subject: [PATCH 051/105] docs - debugging agents --- docs/docs/meshcentral/debugging.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/docs/meshcentral/debugging.md b/docs/docs/meshcentral/debugging.md index b34360d5..77e7a6cb 100644 --- a/docs/docs/meshcentral/debugging.md +++ b/docs/docs/meshcentral/debugging.md @@ -99,3 +99,11 @@ Of course, this is just for debugging. aka trying figure out what this is ![ID](images/determine-id.png) + +## Determine Agent capabilities + +On the server goto the agents console tab. Type: + +``` +info +``` From e445469579132545773a7a5642aaaefaad7af50e Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 24 Jun 2022 11:12:43 -0700 Subject: [PATCH 052/105] Fixes for MySQL not allowing IN() query with empty array, #4157 --- db.js | 33 ++++++++++++++++++--------------- meshuser.js | 2 +- package.json | 13 +++++++++++-- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/db.js b/db.js index 62c94c33..c47352ee 100644 --- a/db.js +++ b/db.js @@ -1198,23 +1198,20 @@ module.exports.CreateDB = function (parent, func) { obj.GetAllTypeNoTypeField = function (type, domain, func) { sqlDbQuery('SELECT doc FROM main WHERE type = $1 AND domain = $2', [type, domain], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); }; obj.GetAllTypeNoTypeFieldMeshFiltered = function (meshes, extrasids, domain, type, id, func) { if (id && (id != '')) { - sqlDbQuery('SELECT doc FROM main WHERE id = $1 AND type = $2 AND domain = $3 AND (extra = ANY ($4))', [id, type, domain, meshes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); + sqlDbQuery('SELECT doc FROM main WHERE (id = $1) AND (type = $2) AND (domain = $3) AND (extra = ANY ($4))', [id, type, domain, meshes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } else { if (extrasids == null) { - sqlDbQuery('SELECT doc FROM main WHERE (type = $1) AND (domain = $2) AND (extra = ANY ($3))', [type, domain, meshes], function (err, docs) { - if (err == null) { for (var i in docs) { delete docs[i].type } } - func(err, performTypedRecordDecrypt(docs)); - }, true); + sqlDbQuery('SELECT doc FROM main WHERE (type = $1) AND (domain = $2) AND (extra = ANY ($3))', [type, domain, meshes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }, true); } else { - sqlDbQuery('SELECT doc FROM main WHERE type = $1 AND domain = $2 AND ((extra = ANY ($3)) OR (id = ANY ($4)))', [type, domain, meshes, extrasids], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); + sqlDbQuery('SELECT doc FROM main WHERE (type = $1) AND (domain = $2) AND ((extra = ANY ($3)) OR (id = ANY ($4)))', [type, domain, meshes, extrasids], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } } }; obj.GetAllTypeNodeFiltered = function (nodes, domain, type, id, func) { if (id && (id != '')) { - sqlDbQuery('SELECT doc FROM main WHERE id = $1 AND type = $2 AND domain = $3 AND (extra = ANY ($4))', [id, type, domain, nodes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); + sqlDbQuery('SELECT doc FROM main WHERE (id = $1) AND (type = $2) AND (domain = $3) AND (extra = ANY ($4))', [id, type, domain, nodes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } else { - sqlDbQuery('SELECT doc FROM main WHERE type = $1 AND domain = $2 AND (extra = ANY ($3))', [type, domain, nodes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); + sqlDbQuery('SELECT doc FROM main WHERE (type = $1) AND (domain = $2) AND (extra = ANY ($3))', [type, domain, nodes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } }; obj.GetAllType = function (type, func) { sqlDbQuery('SELECT doc FROM main WHERE type = $1', [type], function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); } @@ -1367,18 +1364,16 @@ module.exports.CreateDB = function (parent, func) { obj.GetHash = function (id, func) { sqlDbQuery('SELECT doc FROM main WHERE id = ?', [id], function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); } obj.GetAllTypeNoTypeField = function (type, domain, func) { sqlDbQuery('SELECT doc FROM main WHERE type = ? AND domain = ?', [type, domain], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); }; obj.GetAllTypeNoTypeFieldMeshFiltered = function (meshes, extrasids, domain, type, id, func) { + if ((meshes == null) || (meshes.length == 0)) { meshes = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. + if ((extrasids == null) || (extrasids.length == 0)) { extrasids = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. if (id && (id != '')) { sqlDbQuery('SELECT doc FROM main WHERE id = ? AND type = ? AND domain = ? AND extra IN (?)', [id, type, domain, meshes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } else { - if ((meshes == null) || (meshes.length == 0)) { meshes = ''; } - if (extrasids == null) { - sqlDbQuery('SELECT doc FROM main WHERE type = ? AND domain = ? AND extra IN (?)', [type, domain, meshes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); - } else { - sqlDbQuery('SELECT doc FROM main WHERE type = ? AND domain = ? AND (extra IN (?) OR id IN (?))', [type, domain, meshes, extrasids], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); - } + sqlDbQuery('SELECT doc FROM main WHERE type = ? AND domain = ? AND (extra IN (?) OR id IN (?))', [type, domain, meshes, extrasids], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } }; obj.GetAllTypeNodeFiltered = function (nodes, domain, type, id, func) { + if ((nodes == null) || (nodes.length == 0)) { nodes = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. if (id && (id != '')) { sqlDbQuery('SELECT doc FROM main WHERE id = ? AND type = ? AND domain = ? AND extra IN (?)', [id, type, domain, nodes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, performTypedRecordDecrypt(docs)); }); } else { @@ -1386,7 +1381,10 @@ module.exports.CreateDB = function (parent, func) { } }; obj.GetAllType = function (type, func) { sqlDbQuery('SELECT doc FROM main WHERE type = ?', [type], function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); } - obj.GetAllIdsOfType = function (ids, domain, type, func) { sqlDbQuery('SELECT doc FROM main WHERE id IN (?) AND domain = ? AND type = ?', [ids, domain, type], function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); } + obj.GetAllIdsOfType = function (ids, domain, type, func) { + if ((ids == null) || (ids.length == 0)) { ids = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. + sqlDbQuery('SELECT doc FROM main WHERE id IN (?) AND domain = ? AND type = ?', [ids, domain, type], function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); + } obj.GetUserWithEmail = function (domain, email, func) { sqlDbQuery('SELECT doc FROM main WHERE domain = ? AND extra = ?', [domain, 'email/' + email], function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); } obj.GetUserWithVerifiedEmail = function (domain, email, func) { sqlDbQuery('SELECT doc FROM main WHERE domain = ? AND extra = ?', [domain, 'email/' + email], function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); } obj.Remove = function (id, func) { sqlDbQuery('DELETE FROM main WHERE id = ?', [id], func); }; @@ -1414,6 +1412,7 @@ module.exports.CreateDB = function (parent, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = ?) ORDER BY time DESC', [domain], func); } else { + if (ids.length == 0) { ids = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = ? AND target IN (?)) GROUP BY id ORDER BY time DESC', [domain, ids], func); } }; @@ -1421,6 +1420,7 @@ module.exports.CreateDB = function (parent, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = ?) ORDER BY time DESC LIMIT ?', [domain, limit], func); } else { + if (ids.length == 0) { ids = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = ? AND target IN (?)) GROUP BY id ORDER BY time DESC LIMIT ?', [domain, ids, limit], func); } }; @@ -1428,6 +1428,7 @@ module.exports.CreateDB = function (parent, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = ? AND userid = ?) ORDER BY time DESC', [domain, userid], func); } else { + if (ids.length == 0) { ids = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = ? AND userid = ? AND target IN (?)) GROUP BY id ORDER BY time DESC', [domain, userid, ids], func); } }; @@ -1435,6 +1436,7 @@ module.exports.CreateDB = function (parent, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = ? AND userid = ?) ORDER BY time DESC LIMIT ?', [domain, userid, limit], func); } else { + if (ids.length == 0) { ids = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = ? AND userid = ? AND target IN (?)) GROUP BY id ORDER BY time DESC LIMIT ?', [domain, userid, ids, limit], func); } }; @@ -1442,6 +1444,7 @@ module.exports.CreateDB = function (parent, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE ((domain = ?) AND (time BETWEEN ? AND ?)) ORDER BY time', [domain, start, end], func); } else { + if (ids.length == 0) { ids = ''; } // MySQL can't handle a query with IN() on an empty array, we have to use an empty string instead. sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE ((domain = ?) AND (target IN (?)) AND (time BETWEEN ? AND ?)) GROUP BY id ORDER BY time', [domain, ids, start, end], func); } }; diff --git a/meshuser.js b/meshuser.js index 135e9e0a..12560ab4 100644 --- a/meshuser.js +++ b/meshuser.js @@ -696,7 +696,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use // Request a list of all nodes db.GetAllTypeNoTypeFieldMeshFiltered(links, extraids, domain.id, 'node', command.id, function (err, docs) { - //console.log(docs); + //console.log(err, docs); if (docs == null) { docs = []; } parent.common.unEscapeAllLinksFieldName(docs); diff --git a/package.json b/package.json index 1c2ddb8c..474b5acc 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "sample-config-advanced.json" ], "dependencies": { + "@yetzt/nedb": "^1.8.0", "archiver": "^5.3.1", "body-parser": "^1.19.0", "cbor": "~5.2.0", @@ -45,13 +46,21 @@ "express": "^4.17.0", "express-handlebars": "^5.3.5", "express-ws": "^4.0.0", + "image-size": "^1.0.1", "ipcheck": "^0.1.0", + "loadavg-windows": "^1.1.1", "minimist": "^1.2.5", "multiparty": "^4.2.1", - "@yetzt/nedb": "^1.8.0", + "mysql": "^2.18.1", "node-forge": "^1.0.0", + "node-windows": "^0.1.4", + "otplib": "^10.2.3", + "pg": "^8.7.1", + "pgtools": "^0.3.2", + "web-push": "^3.5.0", "ws": "^5.2.3", - "yauzl": "^2.10.0" + "yauzl": "^2.10.0", + "yubikeyotp": "^0.2.0" }, "engines": { "node": ">=10.0.0" From 5addd6839e888ae2c0fa9f34ece16c2a0a26d19e Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 24 Jun 2022 11:14:26 -0700 Subject: [PATCH 053/105] Fixed dependencies. --- package.json | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 474b5acc..1c2ddb8c 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "sample-config-advanced.json" ], "dependencies": { - "@yetzt/nedb": "^1.8.0", "archiver": "^5.3.1", "body-parser": "^1.19.0", "cbor": "~5.2.0", @@ -46,21 +45,13 @@ "express": "^4.17.0", "express-handlebars": "^5.3.5", "express-ws": "^4.0.0", - "image-size": "^1.0.1", "ipcheck": "^0.1.0", - "loadavg-windows": "^1.1.1", "minimist": "^1.2.5", "multiparty": "^4.2.1", - "mysql": "^2.18.1", + "@yetzt/nedb": "^1.8.0", "node-forge": "^1.0.0", - "node-windows": "^0.1.4", - "otplib": "^10.2.3", - "pg": "^8.7.1", - "pgtools": "^0.3.2", - "web-push": "^3.5.0", "ws": "^5.2.3", - "yauzl": "^2.10.0", - "yubikeyotp": "^0.2.0" + "yauzl": "^2.10.0" }, "engines": { "node": ">=10.0.0" From 4dd5c18db43ba80aefef52ae3258a1c1ccbd88c8 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 24 Jun 2022 14:34:27 -0700 Subject: [PATCH 054/105] Started work on HTTP web relay, #4172 --- MeshCentralServer.njsproj | 3 ++ meshcentral.js | 5 +++ redirserver.js | 2 +- webrelayserver.js | 94 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 webrelayserver.js diff --git a/MeshCentralServer.njsproj b/MeshCentralServer.njsproj index 64ed15d7..0403d4b8 100644 --- a/MeshCentralServer.njsproj +++ b/MeshCentralServer.njsproj @@ -239,6 +239,7 @@ + @@ -696,6 +697,7 @@ + @@ -736,6 +738,7 @@ + diff --git a/meshcentral.js b/meshcentral.js index 18c2f87d..7e7127fc 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -1646,6 +1646,11 @@ function CreateMeshCentralServer(config, args) { obj.webserver = require('./webserver.js').CreateWebServer(obj, obj.db, obj.args, obj.certificates, obj.StartEx5); if (obj.redirserver != null) { obj.redirserver.hookMainWebServer(obj.certificates); } + // Start the HTTP relay web server if needed + if ((obj.args.relayport != null) && (obj.args.relayport != 0)) { + obj.webrelayserver = require('./webrelayserver.js').CreateWebRelayServer(obj, obj.db, obj.args, obj.certificates, function () { }); + } + // Update proxy certificates if (obj.supportsProxyCertificatesRequest == true) { obj.updateProxyCertificates(true); } diff --git a/redirserver.js b/redirserver.js index aadbcd96..54f69b30 100644 --- a/redirserver.js +++ b/redirserver.js @@ -142,7 +142,7 @@ module.exports.CreateRedirServer = function (parent, db, args, func) { obj.parent.updateServerState('redirect-port', port); func(obj.port); }).on('error', function (err) { - if ((err.code == 'EACCES') && (port < 65535)) { StartRedirServer(port + 1); } else { console.log(err); func(obj.port); } + if ((err.code == 'EACCES') && (port < 65535)) { StartRedirServer(port + 1, addr); } else { console.log(err); func(obj.port); } }); } diff --git a/webrelayserver.js b/webrelayserver.js new file mode 100644 index 00000000..93b73556 --- /dev/null +++ b/webrelayserver.js @@ -0,0 +1,94 @@ +/** +* @description Meshcentral web relay server +* @author Ylian Saint-Hilaire +* @copyright Intel Corporation 2018-2022 +* @license Apache-2.0 +* @version v0.0.1 +*/ + +/*jslint node: true */ +/*jshint node: true */ +/*jshint strict:false */ +/*jshint -W097 */ +/*jshint esversion: 6 */ +"use strict"; + +// Construct a HTTP redirection web server object +module.exports.CreateWebRelayServer = function (parent, db, args, certificates, func) { + var obj = {}; + obj.parent = parent; + obj.db = db; + obj.express = require('express'); + obj.expressWs = null; + obj.tlsServer = null; + obj.net = require('net'); + obj.app = obj.express(); + obj.webRelayServer = null; + obj.port = null; + const constants = (require('crypto').constants ? require('crypto').constants : require('constants')); // require('constants') is deprecated in Node 11.10, use require('crypto').constants instead. + var tlsSessionStore = {}; // Store TLS session information for quick resume. + var tlsSessionStoreCount = 0; // Number of cached TLS session information in store. + + // Add HTTP security headers to all responses + obj.app.use(function (req, res, next) { + parent.debug('webrequest', req.url + ' (RelayServer)'); + res.removeHeader('X-Powered-By'); + res.set({ + 'strict-transport-security': 'max-age=60000; includeSubDomains', + 'Referrer-Policy': 'no-referrer', + 'x-frame-options': 'SAMEORIGIN', + 'X-XSS-Protection': '1; mode=block', + 'X-Content-Type-Options': 'nosniff', + 'Content-Security-Policy': "default-src 'none'; style-src 'self' 'unsafe-inline';" + }); + return next(); + }); + + // Start the server, only after users and meshes are loaded from the database. + if (args.tlsoffload) { + // Setup the HTTP server without TLS + obj.expressWs = require('express-ws')(obj.app, null, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); + } else { + // Setup the HTTP server with TLS, use only TLS 1.2 and higher with perfect forward secrecy (PFS). + const tlsOptions = { cert: certificates.web.cert, key: certificates.web.key, ca: certificates.web.ca, rejectUnauthorized: true, ciphers: "HIGH:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256", secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_COMPRESSION | constants.SSL_OP_CIPHER_SERVER_PREFERENCE | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1 }; + obj.tlsServer = require('https').createServer(tlsOptions, obj.app); + obj.tlsServer.on('secureConnection', function () { /*console.log('tlsServer secureConnection');*/ }); + obj.tlsServer.on('error', function (err) { console.log('tlsServer error', err); }); + obj.tlsServer.on('newSession', function (id, data, cb) { if (tlsSessionStoreCount > 1000) { tlsSessionStoreCount = 0; tlsSessionStore = {}; } tlsSessionStore[id.toString('hex')] = data; tlsSessionStoreCount++; cb(); }); + obj.tlsServer.on('resumeSession', function (id, cb) { cb(null, tlsSessionStore[id.toString('hex')] || null); }); + obj.expressWs = require('express-ws')(obj.app, obj.tlsServer, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); + } + + // Find a free port starting with the specified one and going up. + function CheckListenPort(port, addr, func) { + var s = obj.net.createServer(function (socket) { }); + obj.webRelayServer = s.listen(port, addr, function () { s.close(function () { if (func) { func(port, addr); } }); }).on("error", function (err) { + if (args.exactports) { console.error("ERROR: MeshCentral HTTP relay server port " + port + " not available."); process.exit(); } + else { if (port < 65535) { CheckListenPort(port + 1, addr, func); } else { if (func) { func(0); } } } + }); + } + + // Start the ExpressJS web server, if the port is busy try the next one. + function StartWebRelayServer(port, addr) { + if (port == 0 || port == 65535) { return; } + if (obj.tlsServer != null) { + if (args.lanonly == true) { + obj.tcpServer = obj.tlsServer.listen(port, addr, function () { console.log('MeshCentral HTTPS relay server running on port ' + port + ((args.aliasport != null) ? (', alias port ' + args.aliasport) : '') + '.'); }); + } else { + obj.tcpServer = obj.tlsServer.listen(port, addr, function () { console.log('MeshCentral HTTPS relay server running on ' + certificates.CommonName + ':' + port + ((args.aliasport != null) ? (', alias port ' + args.aliasport) : '') + '.'); }); + obj.parent.updateServerState('servername', certificates.CommonName); + } + if (obj.parent.authlog) { obj.parent.authLog('https', 'Web relay server listening on ' + ((addr != null) ? addr : '0.0.0.0') + ' port ' + port + '.'); } + obj.parent.updateServerState('https-relay-port', port); + if (args.aliasport != null) { obj.parent.updateServerState('https-relay-aliasport', args.aliasport); } + } else { + obj.tcpServer = obj.app.listen(port, addr, function () { console.log('MeshCentral HTTP relay server running on port ' + port + ((args.aliasport != null) ? (', alias port ' + args.aliasport) : '') + '.'); }); + obj.parent.updateServerState('http-relay-port', port); + if (args.aliasport != null) { obj.parent.updateServerState('http-relay-aliasport', args.aliasport); } + } + } + + CheckListenPort(args.relayport, args.relayportbind, StartWebRelayServer); + + return obj; +}; From 571a0f1c2d5807d6e3fb9b8c98c7a5c339acf54b Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 24 Jun 2022 16:53:31 -0700 Subject: [PATCH 055/105] More work on web relay, #4172 --- apprelays.js | 143 ++++++++++++++++++++++++++++++++++++++- meshrelay.js | 2 + views/default.handlebars | 27 +++++++- webrelayserver.js | 68 ++++++++++++++++++- webserver.js | 13 +++- 5 files changed, 248 insertions(+), 5 deletions(-) diff --git a/apprelays.js b/apprelays.js index d9ba6cbe..29dd0b41 100644 --- a/apprelays.js +++ b/apprelays.js @@ -19,7 +19,8 @@ Protocol numbers 10 = RDP 11 = SSH-TERM 12 = VNC -13 - SSH-FILES +13 = SSH-FILES +14 = Web-TCP */ // Protocol Numbers @@ -58,6 +59,146 @@ const MESHRIGHT_GUESTSHARING = 0x00080000; // 524288 const MESHRIGHT_DEVICEDETAILS = 0x00100000; // 1048576 const MESHRIGHT_ADMIN = 0xFFFFFFFF; + +// Construct a TCP relay object +module.exports.CreateTcpRelay = function (parent, db, req, args, domain) { + const Net = require('net'); + const WebSocket = require('ws'); + + const obj = {}; + obj.relayActive = false; + obj.closed = false; + + // Events + obj.ondata = null; + obj.onconnect = null; + obj.onclose = null; + + // Disconnect + obj.close = function (arg) { + if (obj.closed == true) return; + obj.closed = true; + + // Event the session ending + if ((obj.startTime) && (obj.meshid != null)) { + // Collect how many raw bytes where received and sent. + // We sum both the websocket and TCP client in this case. + var inTraffc = obj.ws._socket.bytesRead, outTraffc = obj.ws._socket.bytesWritten; + if (obj.wsClient != null) { inTraffc += obj.wsClient._socket.bytesRead; outTraffc += obj.wsClient._socket.bytesWritten; } + const sessionSeconds = Math.round((Date.now() - obj.startTime) / 1000); + const user = parent.users[obj.cookie.userid]; + const username = (user != null) ? user.name : null; + const event = { etype: 'relay', action: 'relaylog', domain: domain.id, nodeid: obj.nodeid, userid: obj.cookie.userid, username: username, sessionid: obj.sessionid, msgid: 123, msgArgs: [sessionSeconds, obj.sessionid], msg: "Left Web-SSH session \"" + obj.sessionid + "\" after " + sessionSeconds + " second(s).", protocol: PROTOCOL_WEBSSH, bytesin: inTraffc, bytesout: outTraffc }; + parent.parent.DispatchEvent(['*', obj.nodeid, obj.cookie.userid, obj.meshid], obj, event); + delete obj.startTime; + delete obj.sessionid; + } + if (obj.wsClient) { + obj.wsClient.removeAllListeners('open'); + obj.wsClient.removeAllListeners('message'); + obj.wsClient.removeAllListeners('close'); + try { obj.wsClient.close(); } catch (ex) { console.log(ex); } + delete obj.wsClient; + } + + if ((arg == 1) || (arg == null)) { try { ws.close(); } catch (ex) { console.log(ex); } } // Soft close, close the websocket + if (arg == 2) { try { ws._socket._parent.end(); } catch (ex) { console.log(ex); } } // Hard close, close the TCP socket + obj.ws.removeAllListeners(); + + // Event disconnection + if (obj.onclose) { obj.onclose(); } + + obj.relayActive = false; + delete obj.cookie; + delete obj.nodeid; + delete obj.meshid; + delete obj.userid; + }; + + // Start the looppback server + function startRelayConnection() { + try { + // Setup the correct URL with domain and use TLS only if needed. + const options = { rejectUnauthorized: false }; + const protocol = (args.tlsoffload) ? 'ws' : 'wss'; + var domainadd = ''; + if ((domain.dns == null) && (domain.id != '')) { domainadd = domain.id + '/' } + const url = protocol + '://localhost:' + args.port + '/' + domainadd + (((obj.mtype == 3) && (obj.relaynodeid == null)) ? 'local' : 'mesh') + 'relay.ashx?p=14&auth=' + obj.xcookie; // Protocol 14 is Web-TCP + parent.parent.debug('relay', 'TCP: Connection websocket to ' + url); + obj.wsClient = new WebSocket(url, options); + obj.wsClient.on('open', function () { parent.parent.debug('relay', 'TCP: Relay websocket open'); }); + obj.wsClient.on('message', function (data) { // Make sure to handle flow control. + if (obj.relayActive == false) { + if ((data == 'c') || (data == 'cr')) { + obj.relayActive = true; + if (obj.onconnect) { obj.onconnect(); } // Event connection + } + } else { + if (typeof data == 'string') { + // Forward any ping/pong commands to the browser + var cmd = null; + try { cmd = JSON.parse(data); } catch (ex) { } + if ((cmd != null) && (cmd.ctrlChannel == '102938') && (cmd.type == 'ping')) { cmd.type = 'pong'; obj.wsClient.send(JSON.stringify(cmd)); } + return; + } + // Relay WS --> TCP, event data coming in + if (obj.ondata) { obj.ondata(data); } + } + }); + obj.wsClient.on('close', function () { parent.parent.debug('relay', 'TCP: Relay websocket closed'); obj.close(); }); + obj.wsClient.on('error', function (err) { parent.parent.debug('relay', 'TCP: Relay websocket error: ' + err); obj.close(); }); + } catch (ex) { + console.log(ex); + } + } + + // Send data thru the relay tunnel + obj.send = function (data) { + if (obj.relayActive = - false) return false; + obj.wsClient.send(data); + return true; + } + + parent.parent.debug('relay', 'TCP: Request for TCP relay (' + req.clientIp + ')'); + + // Decode the authentication cookie + obj.cookie = parent.parent.decodeCookie(req.query.auth, parent.parent.loginCookieEncryptionKey); + if ((obj.cookie == null) || (obj.cookie.userid == null) || (parent.users[obj.cookie.userid] == null)) { obj.ws.send(JSON.stringify({ action: 'sessionerror' })); obj.close(); return; } + obj.userid = obj.cookie.userid; + + // Get the meshid for this device + parent.parent.db.Get(obj.cookie.nodeid, function (err, nodes) { + if (obj.cookie == null) return; // obj has been cleaned up, just exit. + if ((err != null) || (nodes == null) || (nodes.length != 1)) { parent.parent.debug('relay', 'TCP: Invalid device'); obj.close(); } + const node = nodes[0]; + obj.nodeid = node._id; // Store the NodeID + obj.meshid = node.meshid; // Store the MeshID + obj.mtype = node.mtype; // Store the device group type + + // Check if we need to relay thru a different agent + const mesh = parent.meshes[obj.meshid]; + if (mesh && mesh.relayid) { + obj.relaynodeid = mesh.relayid; + obj.tcpaddr = node.host; + + // Check if we have rights to the relayid device, does nothing if a relay is not used + checkRelayRights(parent, domain, obj.cookie.userid, obj.relaynodeid, function (allowed) { + if (obj.cookie == null) return; // obj has been cleaned up, just exit. + if (allowed !== true) { parent.parent.debug('relay', 'TCP: Attempt to use un-authorized relay'); obj.close(); return; } + + // Re-encode a cookie with a device relay + const cookieContent = { userid: obj.cookie.userid, domainid: obj.cookie.domainid, nodeid: mesh.relayid, tcpaddr: node.host, tcpport: obj.cookie.tcpport }; + obj.xcookie = parent.parent.encodeCookie(cookieContent, parent.parent.loginCookieEncryptionKey); + }); + } else { + obj.xcookie = req.query.auth; + } + }); + + return obj; +}; + + // Construct a MSTSC Relay object, called upon connection // This implementation does not have TLS support // This is a bit of a hack as we are going to run the RDP connection thru a loopback connection. diff --git a/meshrelay.js b/meshrelay.js index d2915e67..aab96b60 100644 --- a/meshrelay.js +++ b/meshrelay.js @@ -43,6 +43,8 @@ const MESHRIGHT_ADMIN = 0xFFFFFFFF; // 10 = Web-RDP // 11 = Web-SSH // 12 = Web-VNC +// 13 = Web-SSH-Files +// 14 = Web-TCP // 100 = Intel AMT WSMAN // 101 = Intel AMT Redirection // 200 = Messenger diff --git a/views/default.handlebars b/views/default.handlebars index 4a685ffe..e6f688de 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -1449,6 +1449,7 @@ var features = parseInt('{{{features}}}'); var features2 = parseInt('{{{features2}}}'); var sessionTime = parseInt('{{{sessiontime}}}'); + var webRelayPort = parseInt('{{{webRelayPort}}}'); var sessionRefreshTimer = null; var domain = '{{{domain}}}'; var domainUrl = '{{{domainurl}}}'; @@ -2737,7 +2738,7 @@ if (message.name != null) { url += ('&name=' + encodeURIComponentEx(message.name)); } if (message.ip != null) { url += ('&remoteip=' + message.ip); } url += ('&appid=' + message.protocol + '&autoexit=1'); // Protocol: 0 = Custom, 1 = HTTP, 2 = HTTPS, 3 = RDP, 4 = PuTTY, 5 = WinSCP, 6 = MCRDesktop, 7 = MCRFiles - console.log(url); + //console.log(url); downloadFile(url, ''); } else if (message.tag == 'novnc') { var vncurl = window.location.origin + domainUrl + 'novnc/vnc.html?ws=wss%3A%2F%2F' + window.location.host + encodeURIComponentEx(domainUrl) + (message.localRelay?'local':'mesh') + 'relay.ashx%3Fauth%3D' + message.cookie + '&show_dot=1' + (urlargs.key?('&key=' + urlargs.key):'') + '&l={{{lang}}}'; @@ -4573,6 +4574,10 @@ // RDP link, show this link only of the remote machine is Windows. if ((((node.conn & 1) != 0) || (node.mtype == 3)) && (node.agent) && ((meshrights & 8) != 0) && (node.agent.id != 14)) { + if (webRelayPort != 0) { + x += '' + "HTTP" + ' '; + //x += '' + "HTTPS" + ' '; + } if ((node.agent.id > 0) && (node.agent.id < 5)) { if (navigator.platform.toLowerCase() == 'win32') { if ((serverinfo.devicemeshrouterlinks == null) || (serverinfo.devicemeshrouterlinks.rdp != false)) { @@ -7141,6 +7146,10 @@ // RDP link, show this link only of the remote machine is Windows. if ((((connectivity & 1) != 0) || (node.mtype == 3)) && (node.agent) && ((meshrights & 8) != 0)) { + if (webRelayPort != 0) { + x += '' + "HTTP" + ' '; + //x += '' + "HTTPS" + ' '; + } if ((node.agent.id > 0) && (node.agent.id < 5)) { if (navigator.platform.toLowerCase() == 'win32') { if ((serverinfo.devicemeshrouterlinks == null) || (serverinfo.devicemeshrouterlinks.rdp != false)) { @@ -8063,6 +8072,22 @@ meshserver.send({ action: 'removedevices', nodeids: [ nodeid ] }); } + function p10WebRouter(nodeid, protocol, port, addr) { + var relayid = null; + var node = getNodeFromId(nodeid); + if (node.mtype == 3) { // Setup device relay if needed + var mesh = meshes[node.meshid]; + if (mesh && mesh.relayid) { relayid = mesh.relayid; addr = node.host; } + } + var servername = serverinfo.name; + if ((servername.indexOf('.') == -1) || ((features & 2) != 0)) { servername = window.location.hostname; } // If the server name is not set or it's in LAN-only mode, use the URL hostname as server name. + var url = 'https://' + servername + ':' + webRelayPort + '/control-redirect.ashx?n=' + nodeid + '&p=' + port + '&appid=' + protocol; // Protocol: 1 = HTTP, 2 = HTTPS + if (addr != null) { url += '&addr=' + addr; } + if (relayid != null) { url += '&relayid=' + relayid; } + safeNewWindow(url, 'WebRelay'); + return false; + } + function p10MCRouter(nodeid, protocol, port, addr, localport) { var node = getNodeFromId(nodeid); var mesh = meshes[node.meshid]; diff --git a/webrelayserver.js b/webrelayserver.js index 93b73556..bed4305c 100644 --- a/webrelayserver.js +++ b/webrelayserver.js @@ -24,11 +24,35 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, obj.net = require('net'); obj.app = obj.express(); obj.webRelayServer = null; - obj.port = null; + obj.port = 0; + obj.relayTunnels = {} // RelayID --> Web Tunnel const constants = (require('crypto').constants ? require('crypto').constants : require('constants')); // require('constants') is deprecated in Node 11.10, use require('crypto').constants instead. var tlsSessionStore = {}; // Store TLS session information for quick resume. var tlsSessionStoreCount = 0; // Number of cached TLS session information in store. + if (args.trustedproxy) { + // Reverse proxy should add the "X-Forwarded-*" headers + try { + obj.app.set('trust proxy', args.trustedproxy); + } catch (ex) { + // If there is an error, try to resolve the string + if ((args.trustedproxy.length == 1) && (typeof args.trustedproxy[0] == 'string')) { + require('dns').lookup(args.trustedproxy[0], function (err, address, family) { if (err == null) { obj.app.set('trust proxy', address); args.trustedproxy = [address]; } }); + } + } + } + else if (typeof args.tlsoffload == 'object') { + // Reverse proxy should add the "X-Forwarded-*" headers + try { + obj.app.set('trust proxy', args.tlsoffload); + } catch (ex) { + // If there is an error, try to resolve the string + if ((Array.isArray(args.tlsoffload)) && (args.tlsoffload.length == 1) && (typeof args.tlsoffload[0] == 'string')) { + require('dns').lookup(args.tlsoffload[0], function (err, address, family) { if (err == null) { obj.app.set('trust proxy', address); args.tlsoffload = [address]; } }); + } + } + } + // Add HTTP security headers to all responses obj.app.use(function (req, res, next) { parent.debug('webrequest', req.url + ' (RelayServer)'); @@ -41,9 +65,50 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, 'X-Content-Type-Options': 'nosniff', 'Content-Security-Policy': "default-src 'none'; style-src 'self' 'unsafe-inline';" }); + + // Set the real IP address of the request + // If a trusted reverse-proxy is sending us the remote IP address, use it. + var ipex = '0.0.0.0', xforwardedhost = req.headers.host; + if (typeof req.connection.remoteAddress == 'string') { ipex = (req.connection.remoteAddress.startsWith('::ffff:')) ? req.connection.remoteAddress.substring(7) : req.connection.remoteAddress; } + if ( + (args.trustedproxy === true) || (args.tlsoffload === true) || + ((typeof args.trustedproxy == 'object') && (isIPMatch(ipex, args.trustedproxy))) || + ((typeof args.tlsoffload == 'object') && (isIPMatch(ipex, args.tlsoffload))) + ) { + // Get client IP + if (req.headers['cf-connecting-ip']) { // Use CloudFlare IP address if present + req.clientIp = req.headers['cf-connecting-ip'].split(',')[0].trim(); + } else if (req.headers['x-forwarded-for']) { + req.clientIp = req.headers['x-forwarded-for'].split(',')[0].trim(); + } else if (req.headers['x-real-ip']) { + req.clientIp = req.headers['x-real-ip'].split(',')[0].trim(); + } else { + req.clientIp = ipex; + } + + // If there is a port number, remove it. This will only work for IPv4, but nice for people that have a bad reverse proxy config. + const clientIpSplit = req.clientIp.split(':'); + if (clientIpSplit.length == 2) { req.clientIp = clientIpSplit[0]; } + + // Get server host + if (req.headers['x-forwarded-host']) { xforwardedhost = req.headers['x-forwarded-host'].split(',')[0]; } // If multiple hosts are specified with a comma, take the first one. + } else { + req.clientIp = ipex; + } + return next(); }); + // This is the magic URL that will setup the relay session + obj.app.get('/control-redirect.ashx', function (req, res) { + res.set({ 'Cache-Control': 'no-store' }); + parent.debug('web', 'webRelaySetup'); + + console.log('req.query', req.query); + + res.redirect('/'); + }); + // Start the server, only after users and meshes are loaded from the database. if (args.tlsoffload) { // Setup the HTTP server without TLS @@ -86,6 +151,7 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, obj.parent.updateServerState('http-relay-port', port); if (args.aliasport != null) { obj.parent.updateServerState('http-relay-aliasport', args.aliasport); } } + obj.port = port; } CheckListenPort(args.relayport, args.relayportbind, StartWebRelayServer); diff --git a/webserver.js b/webserver.js index b4b6be3e..10e033d7 100644 --- a/webserver.js +++ b/webserver.js @@ -2858,7 +2858,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF footer: (domain.footer == null) ? '' : domain.footer, webstate: encodeURIComponent(webstate).replace(/'/g, '%27'), amtscanoptions: amtscanoptions, - pluginHandler: (parent.pluginHandler == null) ? 'null' : parent.pluginHandler.prepExports() + pluginHandler: (parent.pluginHandler == null) ? 'null' : parent.pluginHandler.prepExports(), + webRelayPort: ((parent.webrelayserver != null) ? parent.webrelayserver.port : 0) }, dbGetFunc.req, domain), user); } xdbGetFunc.req = req; @@ -5846,11 +5847,19 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF var selfurl = ' wss://' + req.headers.host; if ((xforwardedhost != null) && (xforwardedhost != req.headers.host)) { selfurl += ' wss://' + xforwardedhost; } const extraScriptSrc = (parent.config.settings.extrascriptsrc != null) ? (' ' + parent.config.settings.extrascriptsrc) : ''; + + // If the web relay port is enabled, allow the web page to redirect to it + var extraFrameSrc = ''; + if ((parent.webrelayserver != null) && (parent.webrelayserver.port != 0)) { + extraFrameSrc = ' https://' + req.headers.host + ':' + parent.webrelayserver.port; + if ((xforwardedhost != null) && (xforwardedhost != req.headers.host)) { extraFrameSrc += ' https://' + xforwardedhost + ':' + parent.webrelayserver.port; } + } + const headers = { 'Referrer-Policy': 'no-referrer', 'X-XSS-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', - 'Content-Security-Policy': "default-src 'none'; font-src 'self'; script-src 'self' 'unsafe-inline'" + extraScriptSrc + "; connect-src 'self'" + geourl + selfurl + "; img-src 'self' blob: data:" + geourl + " data:; style-src 'self' 'unsafe-inline'; frame-src 'self' mcrouter:; media-src 'self'; form-action 'self'" + 'Content-Security-Policy': "default-src 'none'; font-src 'self'; script-src 'self' 'unsafe-inline'" + extraScriptSrc + "; connect-src 'self'" + geourl + selfurl + "; img-src 'self' blob: data:" + geourl + " data:; style-src 'self' 'unsafe-inline'; frame-src 'self' mcrouter:" + extraFrameSrc + "; media-src 'self'; form-action 'self'" }; if (req.headers['user-agent'] && (req.headers['user-agent'].indexOf('Chrome') >= 0)) { headers['Permissions-Policy'] = 'interest-cohort=()'; } // Remove Google's FLoC Network, only send this if Chrome browser if ((parent.config.settings.allowframing !== true) && (typeof parent.config.settings.allowframing !== 'string')) { headers['X-Frame-Options'] = 'sameorigin'; } From 7100b07b193ad83aa50f9f5b6c8ff7354ca7e68d Mon Sep 17 00:00:00 2001 From: silversword411 Date: Sat, 25 Jun 2022 10:42:51 -0400 Subject: [PATCH 056/105] docs - adding more debug --- docs/docs/meshcentral/debugging.md | 100 +++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 5 deletions(-) diff --git a/docs/docs/meshcentral/debugging.md b/docs/docs/meshcentral/debugging.md index 77e7a6cb..7a81bc9a 100644 --- a/docs/docs/meshcentral/debugging.md +++ b/docs/docs/meshcentral/debugging.md @@ -6,7 +6,22 @@ Make sure you understand how MeshCentral works with your browser using chrome de -## Enabling trace in your browser Dev Tools +## MeshCentral Server + +### Useful config.js settings + + + +```json +"AgentsInRAM": false, +"AgentUpdateBlockSize": 2048, +"agentUpdateSystem": 1, +"noAgentUpdate": 1, +"WsCompression": false, +"AgentWsCompression": false, +``` + +### Enabling trace in your browser Dev Tools `Trace=1` as a parameter in chrome dev tools for debugging @@ -34,7 +49,7 @@ If you want to change node to meshcentral in journalctl, add this to /etc/system SyslogIdentifier=meshcentral ``` -## Server: Logging it all +### Logging it all To log everything that's possible, prepare the log directory. @@ -84,7 +99,7 @@ You'll then have 3 files: `log.txt` will now log everything in the Trace tab -## Restricting server to specific IP(s) +### Restricting server to specific IP(s) When doing debugging on my development server, I use this line in the settings section to block all agent connections except the agent I want: @@ -94,16 +109,91 @@ When doing debugging on my development server, I use this line in the settings s Of course, this is just for debugging. -## Finding system ID types +### Finding system ID types aka trying figure out what this is ![ID](images/determine-id.png) -## Determine Agent capabilities +### Pull down cert .crt file from internet + +[See #1662](https://github.com/Ylianst/MeshCentral/issues/1662#issuecomment-666559391) We have run into this challenge before, where our .crt file expired and then all our agents were unable to connect. In our case, the TLS cert was available on the internet, and thus, we were able to use these commands to update it: + +```bash +echo -n \| openssl s_client -connect yourdomain.com:443 2> /dev/null\| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /opt/meshcentral/meshcentral-data/webserver-cert-public.crt +service meshcentral restart +``` + +## MeshAgent + +### Determine Agent capabilities On the server goto the agents console tab. Type: ``` info ``` + +### Useful MeshAgent.msh flags + + + +```json +controlChannelDebug=1 +logUpdate=1 +``` + +### Obtain generated .msh File + +If you need a trick to get the .msh file, you can add ?debug=1 to the URL and click "Add Agent", there will be an extra link to download it. + +### MeshAgent Commands + +``` +MeshAgent run +MeshAgent dbTool.js list +``` + +Forcing Core version from Cmdline + +* Download meschore.js and rename to CoreModule.js and put it alongside MeshAgent.exe +* Stop MeshAgent service +* Run `MeshAgent.exe dbTool.js import CoreModule` + +### On the fly Patching MeshAgent + +[MeshAgent#89 (comment)](https://github.com/Ylianst/MeshAgent/issues/89#issuecomment-949901720) + +There are two ways to do this... When debugging, and making changes, you can modify the .js file directly, and just save it in the same folder as the agent binary... The agent will use the .js file from disc if it's there, if it's newer than the one compiled in the binary. You don't even need to restart the agent. You can just clear the core, and reload the core..... + +When you are satisfied with your changes to the .js file, you can use the clipboard, in the following fashion: + +```bash +meshagent -exec "require('clipboard').nativeAddCompressedModule('foo');process.exit();" +``` + +if the file you modified isn't in the same folder as the agent binary, you can use the following command if you don't want to move the file, and edit it directly in the modules folder: + +```bash +meshagent -exec "setModulePath('pathToFolder');require('clipboard').nativeAddCompressedModule('foo');process.exit();" +``` + +This command is just like the previous, except it searches for modules in the path specified. + +Just substitute foo, with the name of the module that you modified. It will load the module from disc, compress it, and save it into the clipboard.. So you can just load up your editor for ILibDuktape_Polyfills.c, and find where that particular module is defined... and paste directly from the clipboard... The clipboard will contain all the necessary C code to uncompress and load the module. + +If the compressed result is relatively long, it will auto break it up into multiple lines to work around an issue with visual studio's maximum string literal limitations. + +### Agent Debugging using MeshCore JS Debugger + +[(#119)](https://github.com/Ylianst/MeshAgent/issues/119) How to test changes to the meshagent and recompile them. + +* Copy duktape-debugger.js to the mesh directory on the target machine. +* From the console tab of the agent, enter this command, substituting the port number you want to use instead of 9999 +`eval "attachDebugger({ webport: 9999 })"` + +Then open your browser to http://localhost:9999 or whatever port you used. + +!!!note + If you pause the debugger, and happen to forget about it, the agent will automatically kill itself and restart because it will think that a thread is stuck. Default debugger timeout is 10 minutes, you may find a log entry saved to disk saying "Microstack Thread STUCK", or something similar. + From 0aeeb1c79ce91e5a44d4b048152e5545fb359154 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 25 Jun 2022 13:29:24 -0700 Subject: [PATCH 057/105] First working web relay, very basic. #4172 --- apprelays.js | 255 +++++++++++++++++++++++++++++++++++----------- webrelayserver.js | 206 ++++++++++++++++++++++--------------- 2 files changed, 321 insertions(+), 140 deletions(-) diff --git a/apprelays.js b/apprelays.js index 29dd0b41..8d9b857e 100644 --- a/apprelays.js +++ b/apprelays.js @@ -60,19 +60,113 @@ const MESHRIGHT_DEVICEDETAILS = 0x00100000; // 1048576 const MESHRIGHT_ADMIN = 0xFFFFFFFF; -// Construct a TCP relay object -module.exports.CreateTcpRelay = function (parent, db, req, args, domain) { - const Net = require('net'); - const WebSocket = require('ws'); +// Construct a Web relay object +module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, userid, nodeid, addr, port) { + const obj = {}; + obj.lastOperation = Date.now(); + obj.userid = userid; + var pendingRequests = []; + var activeRequests = 0; + var nextTunnelId = 1; + var tunnels = {}; + + // Events + obj.closed = false; + obj.onclose = null; + + // Handle new HTTP request + obj.handleRequest = function (req, res) { + console.log('handleRequest', req.url); + pendingRequests.push([req, res]); + handleNextRequest(); + } + + // Handle request + function handleNextRequest() { + // Check to see if any of the tunnels are free + var count = 0; + for (var i in tunnels) { + count += (tunnels[i].isWebSocket ? 0 : 1); + if ((tunnels[i].relayActive == true) && (tunnels[i].res == null)) { + // Found a free tunnel, use it + console.log('handleNextRequest-found empty tunnel'); + const x = pendingRequests.shift(); + tunnels[i].processRequest(x[0], x[1]); + return; + } + } + + if (count > 0) return; + + // Launch a new tunnel + console.log('handleNextRequest-starting new tunnel'); + const tunnel = module.exports.CreateWebRelay(parent, db, args, domain); + tunnel.onclose = function (tunnelId) { console.log('tclose'); delete tunnels[tunnelId]; } + tunnel.onconnect = function (tunnelId) { console.log('tconnect'); if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } + tunnel.oncompleted = function (tunnelId) { console.log('tcompleted'); if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } + tunnel.connect(userid, nodeid, addr, port); + tunnel.tunnelId = nextTunnelId++; + tunnels[tunnel.tunnelId] = tunnel; + } + + // Close all tunnels + function close() { + if (obj.closed == true) return; + obj.closed = true; + for (var i in tunnels) { tunnels[i].close(); } + tunnels = null; + if (obj.onclose) { obj.onclose(obj.userid + '/' + obj.multiTunnelId); } + delete obj.userid; + delete obj.lastOperation; + } + + return obj; +} + + + +// Construct a Web relay object +module.exports.CreateWebRelay = function (parent, db, args, domain) { + //const Net = require('net'); + const WebSocket = require('ws') const obj = {}; obj.relayActive = false; obj.closed = false; + obj.isWebSocket = false; // Events - obj.ondata = null; - obj.onconnect = null; obj.onclose = null; + obj.oncompleted = null; + obj.onconnect = null; + + // Process a HTTP request + obj.processRequest = function (req, res) { + if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } + + console.log('processRequest-start', req.method); + + // Construct the HTTP request + var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; + request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; + for (var i in req.headers) { + const li = i.toLowerCase(); + if ((li != 'origin') && (li != 'host')) { request += i + ': ' + req.headers[i] + '\r\n'; } + } + request += '\r\n'; + + if ((req.headers['transfer-encoding'] != null) || (req.headers['content-length'] != null)) { + // Read the HTTP body and send the request to the device + obj.requestBinary = [Buffer.from(request)]; + req.on('data', function (data) { obj.requestBinary.push(data); }); + req.on('end', function () { obj.wsClient.send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; console.log('processRequest-sent-withbody'); }); + } else { + // Request has no body, send it now + obj.wsClient.send(Buffer.from(request)); + console.log('processRequest-sent-nobody'); + } + obj.res = res; + } // Disconnect obj.close = function (arg) { @@ -89,7 +183,7 @@ module.exports.CreateTcpRelay = function (parent, db, req, args, domain) { const user = parent.users[obj.cookie.userid]; const username = (user != null) ? user.name : null; const event = { etype: 'relay', action: 'relaylog', domain: domain.id, nodeid: obj.nodeid, userid: obj.cookie.userid, username: username, sessionid: obj.sessionid, msgid: 123, msgArgs: [sessionSeconds, obj.sessionid], msg: "Left Web-SSH session \"" + obj.sessionid + "\" after " + sessionSeconds + " second(s).", protocol: PROTOCOL_WEBSSH, bytesin: inTraffc, bytesout: outTraffc }; - parent.parent.DispatchEvent(['*', obj.nodeid, obj.cookie.userid, obj.meshid], obj, event); + parent.DispatchEvent(['*', obj.nodeid, obj.cookie.userid, obj.meshid], obj, event); delete obj.startTime; delete obj.sessionid; } @@ -101,37 +195,41 @@ module.exports.CreateTcpRelay = function (parent, db, req, args, domain) { delete obj.wsClient; } - if ((arg == 1) || (arg == null)) { try { ws.close(); } catch (ex) { console.log(ex); } } // Soft close, close the websocket - if (arg == 2) { try { ws._socket._parent.end(); } catch (ex) { console.log(ex); } } // Hard close, close the TCP socket - obj.ws.removeAllListeners(); + // Close any pending request + if (obj.res) { obj.res.end(); delete obj.res; } // Event disconnection - if (obj.onclose) { obj.onclose(); } + if (obj.onclose) { obj.onclose(obj.tunnelId); } obj.relayActive = false; - delete obj.cookie; - delete obj.nodeid; - delete obj.meshid; - delete obj.userid; }; // Start the looppback server - function startRelayConnection() { + obj.connect = function (userid, nodeid, addr, port) { + if (obj.relayActive || obj.closed) return; + obj.addr = addr; + obj.port = port; + + // Encode a cookie for the mesh relay + const cookieContent = { userid: userid, domainid: domain.id, nodeid: nodeid, tcpport: port }; + if (addr != null) { cookieContent.tcpaddr = addr; } + const cookie = parent.encodeCookie(cookieContent, parent.loginCookieEncryptionKey); + try { // Setup the correct URL with domain and use TLS only if needed. const options = { rejectUnauthorized: false }; const protocol = (args.tlsoffload) ? 'ws' : 'wss'; var domainadd = ''; if ((domain.dns == null) && (domain.id != '')) { domainadd = domain.id + '/' } - const url = protocol + '://localhost:' + args.port + '/' + domainadd + (((obj.mtype == 3) && (obj.relaynodeid == null)) ? 'local' : 'mesh') + 'relay.ashx?p=14&auth=' + obj.xcookie; // Protocol 14 is Web-TCP - parent.parent.debug('relay', 'TCP: Connection websocket to ' + url); + const url = protocol + '://localhost:' + args.port + '/' + domainadd + (((obj.mtype == 3) && (obj.relaynodeid == null)) ? 'local' : 'mesh') + 'relay.ashx?p=14&auth=' + cookie; // Protocol 14 is Web-TCP + parent.debug('relay', 'TCP: Connection websocket to ' + url); obj.wsClient = new WebSocket(url, options); - obj.wsClient.on('open', function () { parent.parent.debug('relay', 'TCP: Relay websocket open'); }); + obj.wsClient.on('open', function () { parent.debug('relay', 'TCP: Relay websocket open'); }); obj.wsClient.on('message', function (data) { // Make sure to handle flow control. if (obj.relayActive == false) { if ((data == 'c') || (data == 'cr')) { obj.relayActive = true; - if (obj.onconnect) { obj.onconnect(); } // Event connection + if (obj.onconnect) { obj.onconnect(obj.tunnelId); } // Event connection } } else { if (typeof data == 'string') { @@ -142,59 +240,96 @@ module.exports.CreateTcpRelay = function (parent, db, req, args, domain) { return; } // Relay WS --> TCP, event data coming in - if (obj.ondata) { obj.ondata(data); } + processHttpData(data.toString('binary')); } }); - obj.wsClient.on('close', function () { parent.parent.debug('relay', 'TCP: Relay websocket closed'); obj.close(); }); - obj.wsClient.on('error', function (err) { parent.parent.debug('relay', 'TCP: Relay websocket error: ' + err); obj.close(); }); + obj.wsClient.on('close', function () { parent.debug('relay', 'TCP: Relay websocket closed'); obj.close(); }); + obj.wsClient.on('error', function (err) { parent.debug('relay', 'TCP: Relay websocket error: ' + err); obj.close(); }); } catch (ex) { console.log(ex); } } + // Process incoming HTTP data + obj.socketAccumulator = ''; + obj.socketParseState = 0; + function processHttpData(data) { + obj.socketAccumulator += data; + while (true) { + //console.log('ACC(' + obj.socketAccumulator + '): ' + obj.socketAccumulator); + if (obj.socketParseState == 0) { + var headersize = obj.socketAccumulator.indexOf('\r\n\r\n'); + if (headersize < 0) return; + //obj.Debug("Header: "+obj.socketAccumulator.substring(0, headersize)); // Display received HTTP header + obj.socketHeader = obj.socketAccumulator.substring(0, headersize).split('\r\n'); + obj.socketAccumulator = obj.socketAccumulator.substring(headersize + 4); + obj.socketParseState = 1; + obj.socketData = ''; + obj.socketXHeader = { Directive: obj.socketHeader[0].split(' ') }; + for (var i in obj.socketHeader) { + if (i != 0) { + var x2 = obj.socketHeader[i].indexOf(':'); + obj.socketXHeader[obj.socketHeader[i].substring(0, x2).toLowerCase()] = obj.socketHeader[i].substring(x2 + 2); + } + } + } + if (obj.socketParseState == 1) { + var csize = -1; + if ((obj.socketXHeader['connection'] != undefined) && (obj.socketXHeader['connection'].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == undefined) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) { + // The body ends with a close, in this case, we will only process the header + csize = 0; + } else if (obj.socketXHeader['content-length'] != undefined) { + // The body length is specified by the content-length + csize = parseInt(obj.socketXHeader['content-length']); + if (obj.socketAccumulator.length < csize) return; + var data = obj.socketAccumulator.substring(0, csize); + obj.socketAccumulator = obj.socketAccumulator.substring(csize); + obj.socketData = data; + csize = 0; + } else { + // The body is chunked + var clen = obj.socketAccumulator.indexOf('\r\n'); + if (clen < 0) return; // Chunk length not found, exit now and get more data. + // Chunk length if found, lets see if we can get the data. + csize = parseInt(obj.socketAccumulator.substring(0, clen), 16); + if (obj.socketAccumulator.length < clen + 2 + csize + 2) return; + // We got a chunk with all of the data, handle the chunck now. + var data = obj.socketAccumulator.substring(clen + 2, clen + 2 + csize); + obj.socketAccumulator = obj.socketAccumulator.substring(clen + 2 + csize + 2); + try { obj.socketData += data; } catch (ex) { console.log(ex, typeof data, data.length); } + } + if (csize == 0) { + //obj.Debug("xxOnSocketData DONE: (" + obj.socketData.length + "): " + obj.socketData); + processHttpResponse(obj.socketXHeader, obj.socketData); + obj.socketParseState = 0; + obj.socketHeader = null; + } + } + } + } + + // This is a fully parsed HTTP response from the remote device + function processHttpResponse(header, data) { + console.log('processHttpResponse'); + + obj.res.status(parseInt(header.Directive[1])); // Set the status + for (var i in header) { if (i != 'Directive') { obj.res.set(i, header[i]); } } // Set the headers + obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future + obj.res.end(data, 'binary'); // Write the data + delete obj.res; + + // Event completion + if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } + } + // Send data thru the relay tunnel - obj.send = function (data) { + function send(data) { if (obj.relayActive = - false) return false; obj.wsClient.send(data); return true; } - parent.parent.debug('relay', 'TCP: Request for TCP relay (' + req.clientIp + ')'); - - // Decode the authentication cookie - obj.cookie = parent.parent.decodeCookie(req.query.auth, parent.parent.loginCookieEncryptionKey); - if ((obj.cookie == null) || (obj.cookie.userid == null) || (parent.users[obj.cookie.userid] == null)) { obj.ws.send(JSON.stringify({ action: 'sessionerror' })); obj.close(); return; } - obj.userid = obj.cookie.userid; - - // Get the meshid for this device - parent.parent.db.Get(obj.cookie.nodeid, function (err, nodes) { - if (obj.cookie == null) return; // obj has been cleaned up, just exit. - if ((err != null) || (nodes == null) || (nodes.length != 1)) { parent.parent.debug('relay', 'TCP: Invalid device'); obj.close(); } - const node = nodes[0]; - obj.nodeid = node._id; // Store the NodeID - obj.meshid = node.meshid; // Store the MeshID - obj.mtype = node.mtype; // Store the device group type - - // Check if we need to relay thru a different agent - const mesh = parent.meshes[obj.meshid]; - if (mesh && mesh.relayid) { - obj.relaynodeid = mesh.relayid; - obj.tcpaddr = node.host; - - // Check if we have rights to the relayid device, does nothing if a relay is not used - checkRelayRights(parent, domain, obj.cookie.userid, obj.relaynodeid, function (allowed) { - if (obj.cookie == null) return; // obj has been cleaned up, just exit. - if (allowed !== true) { parent.parent.debug('relay', 'TCP: Attempt to use un-authorized relay'); obj.close(); return; } - - // Re-encode a cookie with a device relay - const cookieContent = { userid: obj.cookie.userid, domainid: obj.cookie.domainid, nodeid: mesh.relayid, tcpaddr: node.host, tcpport: obj.cookie.tcpport }; - obj.xcookie = parent.parent.encodeCookie(cookieContent, parent.parent.loginCookieEncryptionKey); - }); - } else { - obj.xcookie = req.query.auth; - } - }); - + parent.debug('relay', 'TCP: Request for web relay'); return obj; }; diff --git a/webrelayserver.js b/webrelayserver.js index bed4305c..274f8829 100644 --- a/webrelayserver.js +++ b/webrelayserver.js @@ -19,109 +19,151 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, obj.parent = parent; obj.db = db; obj.express = require('express'); + obj.session = require('cookie-session'); obj.expressWs = null; obj.tlsServer = null; obj.net = require('net'); obj.app = obj.express(); obj.webRelayServer = null; obj.port = 0; - obj.relayTunnels = {} // RelayID --> Web Tunnel + var nextMultiTunnelId = 1; + var relayMultiTunnels = {} // RelayID --> Web Mutli-Tunnel const constants = (require('crypto').constants ? require('crypto').constants : require('constants')); // require('constants') is deprecated in Node 11.10, use require('crypto').constants instead. var tlsSessionStore = {}; // Store TLS session information for quick resume. var tlsSessionStoreCount = 0; // Number of cached TLS session information in store. - if (args.trustedproxy) { - // Reverse proxy should add the "X-Forwarded-*" headers - try { - obj.app.set('trust proxy', args.trustedproxy); - } catch (ex) { - // If there is an error, try to resolve the string - if ((args.trustedproxy.length == 1) && (typeof args.trustedproxy[0] == 'string')) { - require('dns').lookup(args.trustedproxy[0], function (err, address, family) { if (err == null) { obj.app.set('trust proxy', address); args.trustedproxy = [address]; } }); + function serverStart() { + if (args.trustedproxy) { + // Reverse proxy should add the "X-Forwarded-*" headers + try { + obj.app.set('trust proxy', args.trustedproxy); + } catch (ex) { + // If there is an error, try to resolve the string + if ((args.trustedproxy.length == 1) && (typeof args.trustedproxy[0] == 'string')) { + require('dns').lookup(args.trustedproxy[0], function (err, address, family) { if (err == null) { obj.app.set('trust proxy', address); args.trustedproxy = [address]; } }); + } } } - } - else if (typeof args.tlsoffload == 'object') { - // Reverse proxy should add the "X-Forwarded-*" headers - try { - obj.app.set('trust proxy', args.tlsoffload); - } catch (ex) { - // If there is an error, try to resolve the string - if ((Array.isArray(args.tlsoffload)) && (args.tlsoffload.length == 1) && (typeof args.tlsoffload[0] == 'string')) { - require('dns').lookup(args.tlsoffload[0], function (err, address, family) { if (err == null) { obj.app.set('trust proxy', address); args.tlsoffload = [address]; } }); + else if (typeof args.tlsoffload == 'object') { + // Reverse proxy should add the "X-Forwarded-*" headers + try { + obj.app.set('trust proxy', args.tlsoffload); + } catch (ex) { + // If there is an error, try to resolve the string + if ((Array.isArray(args.tlsoffload)) && (args.tlsoffload.length == 1) && (typeof args.tlsoffload[0] == 'string')) { + require('dns').lookup(args.tlsoffload[0], function (err, address, family) { if (err == null) { obj.app.set('trust proxy', address); args.tlsoffload = [address]; } }); + } } } - } - // Add HTTP security headers to all responses - obj.app.use(function (req, res, next) { - parent.debug('webrequest', req.url + ' (RelayServer)'); - res.removeHeader('X-Powered-By'); - res.set({ - 'strict-transport-security': 'max-age=60000; includeSubDomains', - 'Referrer-Policy': 'no-referrer', - 'x-frame-options': 'SAMEORIGIN', - 'X-XSS-Protection': '1; mode=block', - 'X-Content-Type-Options': 'nosniff', - 'Content-Security-Policy': "default-src 'none'; style-src 'self' 'unsafe-inline';" - }); + // Setup cookie session + var sessionOptions = { + name: 'xid', // Recommended security practice to not use the default cookie name + httpOnly: true, + keys: [args.sessionkey], // If multiple instances of this server are behind a load-balancer, this secret must be the same for all instances + secure: (args.tlsoffload == null), // Use this cookie only over TLS (Check this: https://expressjs.com/en/guide/behind-proxies.html) + sameSite: args.sessionsamesite + } + if (args.sessiontime != null) { sessionOptions.maxAge = (args.sessiontime * 60 * 1000); } + obj.app.use(obj.session(sessionOptions)); - // Set the real IP address of the request - // If a trusted reverse-proxy is sending us the remote IP address, use it. - var ipex = '0.0.0.0', xforwardedhost = req.headers.host; - if (typeof req.connection.remoteAddress == 'string') { ipex = (req.connection.remoteAddress.startsWith('::ffff:')) ? req.connection.remoteAddress.substring(7) : req.connection.remoteAddress; } - if ( - (args.trustedproxy === true) || (args.tlsoffload === true) || - ((typeof args.trustedproxy == 'object') && (isIPMatch(ipex, args.trustedproxy))) || - ((typeof args.tlsoffload == 'object') && (isIPMatch(ipex, args.tlsoffload))) - ) { - // Get client IP - if (req.headers['cf-connecting-ip']) { // Use CloudFlare IP address if present - req.clientIp = req.headers['cf-connecting-ip'].split(',')[0].trim(); - } else if (req.headers['x-forwarded-for']) { - req.clientIp = req.headers['x-forwarded-for'].split(',')[0].trim(); - } else if (req.headers['x-real-ip']) { - req.clientIp = req.headers['x-real-ip'].split(',')[0].trim(); + // Add HTTP security headers to all responses + obj.app.use(function (req, res, next) { + parent.debug('webrequest', req.url + ' (RelayServer)'); + res.removeHeader('X-Powered-By'); + res.set({ + 'strict-transport-security': 'max-age=60000; includeSubDomains', + 'Referrer-Policy': 'no-referrer', + 'x-frame-options': 'SAMEORIGIN', + 'X-XSS-Protection': '1; mode=block', + 'X-Content-Type-Options': 'nosniff', + 'Content-Security-Policy': "default-src 'none'; style-src 'self' 'unsafe-inline';" + }); + + // Set the real IP address of the request + // If a trusted reverse-proxy is sending us the remote IP address, use it. + var ipex = '0.0.0.0', xforwardedhost = req.headers.host; + if (typeof req.connection.remoteAddress == 'string') { ipex = (req.connection.remoteAddress.startsWith('::ffff:')) ? req.connection.remoteAddress.substring(7) : req.connection.remoteAddress; } + if ( + (args.trustedproxy === true) || (args.tlsoffload === true) || + ((typeof args.trustedproxy == 'object') && (isIPMatch(ipex, args.trustedproxy))) || + ((typeof args.tlsoffload == 'object') && (isIPMatch(ipex, args.tlsoffload))) + ) { + // Get client IP + if (req.headers['cf-connecting-ip']) { // Use CloudFlare IP address if present + req.clientIp = req.headers['cf-connecting-ip'].split(',')[0].trim(); + } else if (req.headers['x-forwarded-for']) { + req.clientIp = req.headers['x-forwarded-for'].split(',')[0].trim(); + } else if (req.headers['x-real-ip']) { + req.clientIp = req.headers['x-real-ip'].split(',')[0].trim(); + } else { + req.clientIp = ipex; + } + + // If there is a port number, remove it. This will only work for IPv4, but nice for people that have a bad reverse proxy config. + const clientIpSplit = req.clientIp.split(':'); + if (clientIpSplit.length == 2) { req.clientIp = clientIpSplit[0]; } + + // Get server host + if (req.headers['x-forwarded-host']) { xforwardedhost = req.headers['x-forwarded-host'].split(',')[0]; } // If multiple hosts are specified with a comma, take the first one. } else { req.clientIp = ipex; } - // If there is a port number, remove it. This will only work for IPv4, but nice for people that have a bad reverse proxy config. - const clientIpSplit = req.clientIp.split(':'); - if (clientIpSplit.length == 2) { req.clientIp = clientIpSplit[0]; } + // Check if this there is a multi-tunnel for this request + if (req.url.startsWith('/control-redirect.ashx?n=')) { + return next(); + } else { + if ((req.session.userid != null) && (req.session.rid != null)) { + var relayMultiTunnel = relayMultiTunnels[req.session.userid + '/' + req.session.rid]; + if (relayMultiTunnel != null) { relayMultiTunnel.handleRequest(req, res); return; } + } else { + res.end(); + } + } + }); - // Get server host - if (req.headers['x-forwarded-host']) { xforwardedhost = req.headers['x-forwarded-host'].split(',')[0]; } // If multiple hosts are specified with a comma, take the first one. + // This is the magic URL that will setup the relay session + obj.app.get('/control-redirect.ashx', function (req, res) { + if ((req.session == null) || (req.session.userid == null)) { res.redirect('/'); return; } + res.set({ 'Cache-Control': 'no-store' }); + parent.debug('web', 'webRelaySetup'); + + // Check that all the required arguments are present + if ((req.session.userid == null) || (req.query.n == null) || (req.query.p == null) || ((req.query.appid != 1) && (req.query.appid != 2))) { res.redirect('/'); return; } + + // Get the user and domain information + const userid = req.session.userid; + const domainid = userid.split('/')[1]; + const domain = parent.config.domains[domainid]; + + // Create the multi-tunnel + const relayMultiTunnel = require('./apprelays.js').CreateMultiWebRelay(parent, db, req, args, domain, userid, ((req.query.relayid != null) ? req.query.relayid : req.query.n), (req.query.addr != null) ? req.query.addr : '127.0.0.1', parseInt(req.query.p)); + relayMultiTunnel.onclose = function (multiTunnelId) { delete obj.relayTunnels[multiTunnelId]; } + relayMultiTunnel.multiTunnelId = nextMultiTunnelId++; + + // Set the tunnel + relayMultiTunnels[userid + '/' + relayMultiTunnel.multiTunnelId] = relayMultiTunnel; + req.session.rid = relayMultiTunnel.multiTunnelId; + + // Redirect to root + res.redirect('/'); + }); + + // Start the server, only after users and meshes are loaded from the database. + if (args.tlsoffload) { + // Setup the HTTP server without TLS + obj.expressWs = require('express-ws')(obj.app, null, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); } else { - req.clientIp = ipex; + // Setup the HTTP server with TLS, use only TLS 1.2 and higher with perfect forward secrecy (PFS). + const tlsOptions = { cert: certificates.web.cert, key: certificates.web.key, ca: certificates.web.ca, rejectUnauthorized: true, ciphers: "HIGH:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256", secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_COMPRESSION | constants.SSL_OP_CIPHER_SERVER_PREFERENCE | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1 }; + obj.tlsServer = require('https').createServer(tlsOptions, obj.app); + obj.tlsServer.on('secureConnection', function () { /*console.log('tlsServer secureConnection');*/ }); + obj.tlsServer.on('error', function (err) { console.log('tlsServer error', err); }); + obj.tlsServer.on('newSession', function (id, data, cb) { if (tlsSessionStoreCount > 1000) { tlsSessionStoreCount = 0; tlsSessionStore = {}; } tlsSessionStore[id.toString('hex')] = data; tlsSessionStoreCount++; cb(); }); + obj.tlsServer.on('resumeSession', function (id, cb) { cb(null, tlsSessionStore[id.toString('hex')] || null); }); + obj.expressWs = require('express-ws')(obj.app, obj.tlsServer, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); } - - return next(); - }); - - // This is the magic URL that will setup the relay session - obj.app.get('/control-redirect.ashx', function (req, res) { - res.set({ 'Cache-Control': 'no-store' }); - parent.debug('web', 'webRelaySetup'); - - console.log('req.query', req.query); - - res.redirect('/'); - }); - - // Start the server, only after users and meshes are loaded from the database. - if (args.tlsoffload) { - // Setup the HTTP server without TLS - obj.expressWs = require('express-ws')(obj.app, null, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); - } else { - // Setup the HTTP server with TLS, use only TLS 1.2 and higher with perfect forward secrecy (PFS). - const tlsOptions = { cert: certificates.web.cert, key: certificates.web.key, ca: certificates.web.ca, rejectUnauthorized: true, ciphers: "HIGH:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256", secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_COMPRESSION | constants.SSL_OP_CIPHER_SERVER_PREFERENCE | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1 }; - obj.tlsServer = require('https').createServer(tlsOptions, obj.app); - obj.tlsServer.on('secureConnection', function () { /*console.log('tlsServer secureConnection');*/ }); - obj.tlsServer.on('error', function (err) { console.log('tlsServer error', err); }); - obj.tlsServer.on('newSession', function (id, data, cb) { if (tlsSessionStoreCount > 1000) { tlsSessionStoreCount = 0; tlsSessionStore = {}; } tlsSessionStore[id.toString('hex')] = data; tlsSessionStoreCount++; cb(); }); - obj.tlsServer.on('resumeSession', function (id, cb) { cb(null, tlsSessionStore[id.toString('hex')] || null); }); - obj.expressWs = require('express-ws')(obj.app, obj.tlsServer, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); } // Find a free port starting with the specified one and going up. @@ -154,6 +196,10 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, obj.port = port; } + function getRandomPassword() { return Buffer.from(require('crypto').randomBytes(9), 'binary').toString('base64').split('/').join('@'); } + + // Start up the web relay server + serverStart(); CheckListenPort(args.relayport, args.relayportbind, StartWebRelayServer); return obj; From 3b93d1adf7a591f9b8352e800c7ee6a3d8b0cca9 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 25 Jun 2022 16:22:51 -0700 Subject: [PATCH 058/105] Web relay improvements, #4172 --- apprelays.js | 61 ++++++++++++++++++++++++++++------------------- webrelayserver.js | 40 ++++++++++++++++++++++++------- 2 files changed, 69 insertions(+), 32 deletions(-) diff --git a/apprelays.js b/apprelays.js index 8d9b857e..3046db38 100644 --- a/apprelays.js +++ b/apprelays.js @@ -63,20 +63,27 @@ const MESHRIGHT_ADMIN = 0xFFFFFFFF; // Construct a Web relay object module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, userid, nodeid, addr, port) { const obj = {}; + obj.parent = parent; obj.lastOperation = Date.now(); + obj.domain = domain; obj.userid = userid; + obj.nodeid = nodeid; + obj.addr = addr; + obj.port = port; var pendingRequests = []; - var activeRequests = 0; var nextTunnelId = 1; var tunnels = {}; + // Any HTTP cookie set by the device is going to be shared between all tunnels to that device. + obj.webCookie = null; + // Events obj.closed = false; obj.onclose = null; // Handle new HTTP request obj.handleRequest = function (req, res) { - console.log('handleRequest', req.url); + //console.log('handleRequest', req.url); pendingRequests.push([req, res]); handleNextRequest(); } @@ -89,7 +96,7 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us count += (tunnels[i].isWebSocket ? 0 : 1); if ((tunnels[i].relayActive == true) && (tunnels[i].res == null)) { // Found a free tunnel, use it - console.log('handleNextRequest-found empty tunnel'); + //console.log('handleNextRequest-found empty tunnel'); const x = pendingRequests.shift(); tunnels[i].processRequest(x[0], x[1]); return; @@ -99,11 +106,11 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us if (count > 0) return; // Launch a new tunnel - console.log('handleNextRequest-starting new tunnel'); - const tunnel = module.exports.CreateWebRelay(parent, db, args, domain); - tunnel.onclose = function (tunnelId) { console.log('tclose'); delete tunnels[tunnelId]; } - tunnel.onconnect = function (tunnelId) { console.log('tconnect'); if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } - tunnel.oncompleted = function (tunnelId) { console.log('tcompleted'); if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } + //console.log('handleNextRequest-starting new tunnel'); + const tunnel = module.exports.CreateWebRelay(obj, db, args, domain); + tunnel.onclose = function (tunnelId) { delete tunnels[tunnelId]; } + tunnel.onconnect = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } + tunnel.oncompleted = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } tunnel.connect(userid, nodeid, addr, port); tunnel.tunnelId = nextTunnelId++; tunnels[tunnel.tunnelId] = tunnel; @@ -144,26 +151,27 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.processRequest = function (req, res) { if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } - console.log('processRequest-start', req.method); + //console.log('processRequest-start', req.method); // Construct the HTTP request var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; - for (var i in req.headers) { - const li = i.toLowerCase(); - if ((li != 'origin') && (li != 'host')) { request += i + ': ' + req.headers[i] + '\r\n'; } - } + const blockedHeaders = ['origin', 'host', 'cookie']; // These are headers we do not forward + for (var i in req.headers) { if (blockedHeaders.indexOf(i) == -1) { request += i + ': ' + req.headers[i] + '\r\n'; } } + if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. request += '\r\n'; + //console.log('request', request); + if ((req.headers['transfer-encoding'] != null) || (req.headers['content-length'] != null)) { // Read the HTTP body and send the request to the device obj.requestBinary = [Buffer.from(request)]; req.on('data', function (data) { obj.requestBinary.push(data); }); - req.on('end', function () { obj.wsClient.send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; console.log('processRequest-sent-withbody'); }); + req.on('end', function () { obj.wsClient.send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; }); } else { // Request has no body, send it now obj.wsClient.send(Buffer.from(request)); - console.log('processRequest-sent-nobody'); + //console.log('processRequest-sent-nobody'); } obj.res = res; } @@ -173,6 +181,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (obj.closed == true) return; obj.closed = true; + /* // Event the session ending if ((obj.startTime) && (obj.meshid != null)) { // Collect how many raw bytes where received and sent. @@ -187,6 +196,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { delete obj.startTime; delete obj.sessionid; } + */ if (obj.wsClient) { obj.wsClient.removeAllListeners('open'); obj.wsClient.removeAllListeners('message'); @@ -213,7 +223,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Encode a cookie for the mesh relay const cookieContent = { userid: userid, domainid: domain.id, nodeid: nodeid, tcpport: port }; if (addr != null) { cookieContent.tcpaddr = addr; } - const cookie = parent.encodeCookie(cookieContent, parent.loginCookieEncryptionKey); + const cookie = parent.parent.encodeCookie(cookieContent, parent.parent.loginCookieEncryptionKey); try { // Setup the correct URL with domain and use TLS only if needed. @@ -222,9 +232,9 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { var domainadd = ''; if ((domain.dns == null) && (domain.id != '')) { domainadd = domain.id + '/' } const url = protocol + '://localhost:' + args.port + '/' + domainadd + (((obj.mtype == 3) && (obj.relaynodeid == null)) ? 'local' : 'mesh') + 'relay.ashx?p=14&auth=' + cookie; // Protocol 14 is Web-TCP - parent.debug('relay', 'TCP: Connection websocket to ' + url); + parent.parent.debug('relay', 'TCP: Connection websocket to ' + url); obj.wsClient = new WebSocket(url, options); - obj.wsClient.on('open', function () { parent.debug('relay', 'TCP: Relay websocket open'); }); + obj.wsClient.on('open', function () { parent.parent.debug('relay', 'TCP: Relay websocket open'); }); obj.wsClient.on('message', function (data) { // Make sure to handle flow control. if (obj.relayActive == false) { if ((data == 'c') || (data == 'cr')) { @@ -243,8 +253,8 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { processHttpData(data.toString('binary')); } }); - obj.wsClient.on('close', function () { parent.debug('relay', 'TCP: Relay websocket closed'); obj.close(); }); - obj.wsClient.on('error', function (err) { parent.debug('relay', 'TCP: Relay websocket error: ' + err); obj.close(); }); + obj.wsClient.on('close', function () { parent.parent.debug('relay', 'TCP: Relay websocket closed'); obj.close(); }); + obj.wsClient.on('error', function (err) { parent.parent.debug('relay', 'TCP: Relay websocket error: ' + err); obj.close(); }); } catch (ex) { console.log(ex); } @@ -310,10 +320,13 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // This is a fully parsed HTTP response from the remote device function processHttpResponse(header, data) { - console.log('processHttpResponse'); - + //console.log('processHttpResponse', header); obj.res.status(parseInt(header.Directive[1])); // Set the status - for (var i in header) { if (i != 'Directive') { obj.res.set(i, header[i]); } } // Set the headers + const blockHeaders = ['Directive' ]; // These are headers we do not forward + for (var i in header) { + if (i == 'set-cookie') { parent.webCookie = header[i]; } // Keep the cookie, don't forward it + else if (blockHeaders.indexOf(i) == -1) { obj.res.set(i, header[i]); } // Set the headers if not blocked + } obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future obj.res.end(data, 'binary'); // Write the data delete obj.res; @@ -329,7 +342,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { return true; } - parent.debug('relay', 'TCP: Request for web relay'); + parent.parent.debug('relay', 'TCP: Request for web relay'); return obj; }; diff --git a/webrelayserver.js b/webrelayserver.js index 274f8829..7287be64 100644 --- a/webrelayserver.js +++ b/webrelayserver.js @@ -116,8 +116,15 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, } else { if ((req.session.userid != null) && (req.session.rid != null)) { var relayMultiTunnel = relayMultiTunnels[req.session.userid + '/' + req.session.rid]; - if (relayMultiTunnel != null) { relayMultiTunnel.handleRequest(req, res); return; } + if (relayMultiTunnel != null) { + // The multi-tunnel session is valid, use it + relayMultiTunnel.handleRequest(req, res); + } else { + // No multi-tunnel session with this relay identifier, close the HTTP request. + res.end(); + } } else { + // The user is not logged in or does not have a relay identifier, close the HTTP request. res.end(); } } @@ -136,15 +143,32 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, const userid = req.session.userid; const domainid = userid.split('/')[1]; const domain = parent.config.domains[domainid]; + const nodeid = ((req.query.relayid != null) ? req.query.relayid : req.query.n); + const addr = (req.query.addr != null) ? req.query.addr : '127.0.0.1'; + const port = parseInt(req.query.p); - // Create the multi-tunnel - const relayMultiTunnel = require('./apprelays.js').CreateMultiWebRelay(parent, db, req, args, domain, userid, ((req.query.relayid != null) ? req.query.relayid : req.query.n), (req.query.addr != null) ? req.query.addr : '127.0.0.1', parseInt(req.query.p)); - relayMultiTunnel.onclose = function (multiTunnelId) { delete obj.relayTunnels[multiTunnelId]; } - relayMultiTunnel.multiTunnelId = nextMultiTunnelId++; + // Check to see if we already have a multi-relay session that matches exactly this device and port for this user + var relayMultiTunnel = null; + for (var i in relayMultiTunnels) { + const xrelayMultiTunnel = relayMultiTunnels[i]; + if ((xrelayMultiTunnel.domain.id == domain.id) && (xrelayMultiTunnel.userid == userid) && (xrelayMultiTunnel.nodeid == nodeid) && (xrelayMultiTunnel.addr == addr) && (xrelayMultiTunnel.port == port)) { + relayMultiTunnel = xrelayMultiTunnel; // We found an exact match + } + } - // Set the tunnel - relayMultiTunnels[userid + '/' + relayMultiTunnel.multiTunnelId] = relayMultiTunnel; - req.session.rid = relayMultiTunnel.multiTunnelId; + if (relayMultiTunnel != null) { + // Since we found a match, use it + req.session.rid = relayMultiTunnel.multiTunnelId; + } else { + // Create the multi-tunnel + relayMultiTunnel = require('./apprelays.js').CreateMultiWebRelay(parent, db, req, args, domain, userid, nodeid, addr, port); + relayMultiTunnel.onclose = function (multiTunnelId) { delete obj.relayTunnels[multiTunnelId]; } + relayMultiTunnel.multiTunnelId = nextMultiTunnelId++; + + // Set the tunnel + relayMultiTunnels[userid + '/' + relayMultiTunnel.multiTunnelId] = relayMultiTunnel; + req.session.rid = relayMultiTunnel.multiTunnelId; + } // Redirect to root res.redirect('/'); From ca9af4a5c4603df5fa894b38570df5d9574deafa Mon Sep 17 00:00:00 2001 From: Smartek <70715469+smartekIT@users.noreply.github.com> Date: Sun, 26 Jun 2022 14:56:21 +1000 Subject: [PATCH 059/105] Update meshcentral-config-schema.json --- meshcentral-config-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index dc736155..46060972 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -555,7 +555,7 @@ "legalCopyright": { "type": "string", "description": "Executable legal copyright." }, "originalFilename": { "type": "string", "description": "Executable original file name." }, "productName": { "type": "string", "description": "Executable product name." }, - "productCersion": { "type": "string", "description": "Executable product version, generally in the form of 1.2.3.4." } + "productVersion": { "type": "string", "description": "Executable product version, generally in the form of 1.2.3.4." } } }, "assistantCustomization": { From ab9b83b5f4526ce774f29d9bbfeac3cb0f9c68e4 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sat, 25 Jun 2022 22:10:07 -0700 Subject: [PATCH 060/105] Added TLS support to web relay, #4172 --- apprelays.js | 110 +++++++++++++++++++++++++++------------ views/default.handlebars | 4 +- webrelayserver.js | 5 +- 3 files changed, 81 insertions(+), 38 deletions(-) diff --git a/apprelays.js b/apprelays.js index 3046db38..8acd6fec 100644 --- a/apprelays.js +++ b/apprelays.js @@ -13,7 +13,6 @@ /*jshint esversion: 6 */ "use strict"; - /* Protocol numbers 10 = RDP @@ -59,9 +58,18 @@ const MESHRIGHT_GUESTSHARING = 0x00080000; // 524288 const MESHRIGHT_DEVICEDETAILS = 0x00100000; // 1048576 const MESHRIGHT_ADMIN = 0xFFFFFFFF; +// SerialTunnel object is used to embed TLS within another connection. +function SerialTunnel(options) { + var obj = new require('stream').Duplex(options); + obj.forwardwrite = null; + obj.updateBuffer = function (chunk) { this.push(chunk); }; + obj._write = function (chunk, encoding, callback) { if (obj.forwardwrite != null) { obj.forwardwrite(chunk); } else { console.err("Failed to fwd _write."); } if (callback) callback(); }; // Pass data written to forward + obj._read = function (size) { }; // Push nothing, anything to read should be pushed from updateBuffer() + return obj; +} // Construct a Web relay object -module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, userid, nodeid, addr, port) { +module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, userid, nodeid, addr, port, appid) { const obj = {}; obj.parent = parent; obj.lastOperation = Date.now(); @@ -70,6 +78,7 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us obj.nodeid = nodeid; obj.addr = addr; obj.port = port; + obj.appid = appid; var pendingRequests = []; var nextTunnelId = 1; var tunnels = {}; @@ -83,7 +92,6 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us // Handle new HTTP request obj.handleRequest = function (req, res) { - //console.log('handleRequest', req.url); pendingRequests.push([req, res]); handleNextRequest(); } @@ -96,7 +104,6 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us count += (tunnels[i].isWebSocket ? 0 : 1); if ((tunnels[i].relayActive == true) && (tunnels[i].res == null)) { // Found a free tunnel, use it - //console.log('handleNextRequest-found empty tunnel'); const x = pendingRequests.shift(); tunnels[i].processRequest(x[0], x[1]); return; @@ -106,12 +113,18 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us if (count > 0) return; // Launch a new tunnel - //console.log('handleNextRequest-starting new tunnel'); const tunnel = module.exports.CreateWebRelay(obj, db, args, domain); - tunnel.onclose = function (tunnelId) { delete tunnels[tunnelId]; } + tunnel.onclose = function (tunnelId) { + delete tunnels[tunnelId]; + // Count how many non-websocket tunnels are active + var count = 0; + for (var i in tunnels) { count += (tunnels[i].isWebSocket ? 0 : 1); } + // If there are none, discard all pending HTTP requests + if (count == 0) { for (var i in pendingRequests) { const x = pendingRequests[i]; x[1].end(); pendingRequests = []; } } + } tunnel.onconnect = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } tunnel.oncompleted = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } - tunnel.connect(userid, nodeid, addr, port); + tunnel.connect(userid, nodeid, addr, port, appid); tunnel.tunnelId = nextTunnelId++; tunnels[tunnel.tunnelId] = tunnel; } @@ -131,7 +144,6 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us } - // Construct a Web relay object module.exports.CreateWebRelay = function (parent, db, args, domain) { //const Net = require('net'); @@ -141,6 +153,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.relayActive = false; obj.closed = false; obj.isWebSocket = false; + const constants = (require('crypto').constants ? require('crypto').constants : require('constants')); // require('constants') is deprecated in Node 11.10, use require('crypto').constants instead. // Events obj.onclose = null; @@ -151,8 +164,6 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.processRequest = function (req, res) { if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } - //console.log('processRequest-start', req.method); - // Construct the HTTP request var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; @@ -161,17 +172,14 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. request += '\r\n'; - //console.log('request', request); - if ((req.headers['transfer-encoding'] != null) || (req.headers['content-length'] != null)) { // Read the HTTP body and send the request to the device obj.requestBinary = [Buffer.from(request)]; req.on('data', function (data) { obj.requestBinary.push(data); }); - req.on('end', function () { obj.wsClient.send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; }); + req.on('end', function () { send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; }); } else { // Request has no body, send it now - obj.wsClient.send(Buffer.from(request)); - //console.log('processRequest-sent-nobody'); + send(Buffer.from(request)); } obj.res = res; } @@ -181,6 +189,11 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (obj.closed == true) return; obj.closed = true; + if (obj.tls) { + try { obj.tls.end(); } catch (ex) { console.log(ex); } + delete obj.tls; + } + /* // Event the session ending if ((obj.startTime) && (obj.meshid != null)) { @@ -215,10 +228,11 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { }; // Start the looppback server - obj.connect = function (userid, nodeid, addr, port) { + obj.connect = function (userid, nodeid, addr, port, appid) { if (obj.relayActive || obj.closed) return; obj.addr = addr; obj.port = port; + obj.appid = appid; // Encode a cookie for the mesh relay const cookieContent = { userid: userid, domainid: domain.id, nodeid: nodeid, tcpport: port }; @@ -236,21 +250,36 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.wsClient = new WebSocket(url, options); obj.wsClient.on('open', function () { parent.parent.debug('relay', 'TCP: Relay websocket open'); }); obj.wsClient.on('message', function (data) { // Make sure to handle flow control. - if (obj.relayActive == false) { + if (obj.tls) { + // WS --> TLS + processRawHttpData(data); + } else if (obj.relayActive == false) { if ((data == 'c') || (data == 'cr')) { - obj.relayActive = true; - if (obj.onconnect) { obj.onconnect(obj.tunnelId); } // Event connection + if (appid == 2) { + // TLS needs to be setup + obj.ser = new SerialTunnel(); + obj.ser.forwardwrite = function (data) { if (data.length > 0) { try { obj.wsClient.send(data); } catch (ex) { } } }; // TLS ---> WS + + // TLSSocket to encapsulate TLS communication, which then tunneled via SerialTunnel + const tlsoptions = { socket: obj.ser, rejectUnauthorized: false }; + obj.tls = require('tls').connect(tlsoptions, function () { + parent.parent.debug('relay', "Web Relay Secure TLS Connection"); + obj.relayActive = true; + if (obj.onconnect) { obj.onconnect(obj.tunnelId); } // Event connection + }); + obj.tls.setEncoding('binary'); + obj.tls.on('error', function (err) { parent.parent.debug('relay', "Web Relay TLS Connection Error", err); obj.close(); }); + + // Decrypted tunnel from TLS communcation to be forwarded to the browser + obj.tls.on('data', function (data) { processHttpData(data); }); // TLS ---> Browser + } else { + // No TLS needed, tunnel is now active + obj.relayActive = true; + if (obj.onconnect) { obj.onconnect(obj.tunnelId); } // Event connection + } } } else { - if (typeof data == 'string') { - // Forward any ping/pong commands to the browser - var cmd = null; - try { cmd = JSON.parse(data); } catch (ex) { } - if ((cmd != null) && (cmd.ctrlChannel == '102938') && (cmd.type == 'ping')) { cmd.type = 'pong'; obj.wsClient.send(JSON.stringify(cmd)); } - return; - } - // Relay WS --> TCP, event data coming in - processHttpData(data.toString('binary')); + processRawHttpData(data); } }); obj.wsClient.on('close', function () { parent.parent.debug('relay', 'TCP: Relay websocket closed'); obj.close(); }); @@ -260,6 +289,23 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { } } + function processRawHttpData(data) { + if (typeof data == 'string') { + // Forward any ping/pong commands to the browser + var cmd = null; + try { cmd = JSON.parse(data); } catch (ex) { } + if ((cmd != null) && (cmd.ctrlChannel == '102938') && (cmd.type == 'ping')) { cmd.type = 'pong'; obj.wsClient.send(JSON.stringify(cmd)); } + return; + } + if (obj.tls) { + // If TLS is in use, WS --> TLS + if (data.length > 0) { try { obj.ser.updateBuffer(data); } catch (ex) { console.log(ex); } } + } else { + // Relay WS --> TCP, event data coming in + processHttpData(data.toString('binary')); + } + } + // Process incoming HTTP data obj.socketAccumulator = ''; obj.socketParseState = 0; @@ -335,12 +381,8 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } } - // Send data thru the relay tunnel - function send(data) { - if (obj.relayActive = - false) return false; - obj.wsClient.send(data); - return true; - } + // Send data thru the relay tunnel. Written to use TLS if needed. + function send(data) { try { if (obj.tls) { obj.tls.write(data); } else { obj.wsClient.send(data); } } catch (ex) { } } parent.parent.debug('relay', 'TCP: Request for web relay'); return obj; diff --git a/views/default.handlebars b/views/default.handlebars index e6f688de..6152d254 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -4576,7 +4576,7 @@ if ((((node.conn & 1) != 0) || (node.mtype == 3)) && (node.agent) && ((meshrights & 8) != 0) && (node.agent.id != 14)) { if (webRelayPort != 0) { x += '' + "HTTP" + ' '; - //x += '' + "HTTPS" + ' '; + x += '' + "HTTPS" + ' '; } if ((node.agent.id > 0) && (node.agent.id < 5)) { if (navigator.platform.toLowerCase() == 'win32') { @@ -7148,7 +7148,7 @@ if ((((connectivity & 1) != 0) || (node.mtype == 3)) && (node.agent) && ((meshrights & 8) != 0)) { if (webRelayPort != 0) { x += '' + "HTTP" + ' '; - //x += '' + "HTTPS" + ' '; + x += '' + "HTTPS" + ' '; } if ((node.agent.id > 0) && (node.agent.id < 5)) { if (navigator.platform.toLowerCase() == 'win32') { diff --git a/webrelayserver.js b/webrelayserver.js index 7287be64..f8f5ef44 100644 --- a/webrelayserver.js +++ b/webrelayserver.js @@ -146,12 +146,13 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, const nodeid = ((req.query.relayid != null) ? req.query.relayid : req.query.n); const addr = (req.query.addr != null) ? req.query.addr : '127.0.0.1'; const port = parseInt(req.query.p); + const appid = parseInt(req.query.appid); // Check to see if we already have a multi-relay session that matches exactly this device and port for this user var relayMultiTunnel = null; for (var i in relayMultiTunnels) { const xrelayMultiTunnel = relayMultiTunnels[i]; - if ((xrelayMultiTunnel.domain.id == domain.id) && (xrelayMultiTunnel.userid == userid) && (xrelayMultiTunnel.nodeid == nodeid) && (xrelayMultiTunnel.addr == addr) && (xrelayMultiTunnel.port == port)) { + if ((xrelayMultiTunnel.domain.id == domain.id) && (xrelayMultiTunnel.userid == userid) && (xrelayMultiTunnel.nodeid == nodeid) && (xrelayMultiTunnel.addr == addr) && (xrelayMultiTunnel.port == port) && (xrelayMultiTunnel.appid == appid)) { relayMultiTunnel = xrelayMultiTunnel; // We found an exact match } } @@ -161,7 +162,7 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, req.session.rid = relayMultiTunnel.multiTunnelId; } else { // Create the multi-tunnel - relayMultiTunnel = require('./apprelays.js').CreateMultiWebRelay(parent, db, req, args, domain, userid, nodeid, addr, port); + relayMultiTunnel = require('./apprelays.js').CreateMultiWebRelay(parent, db, req, args, domain, userid, nodeid, addr, port, appid); relayMultiTunnel.onclose = function (multiTunnelId) { delete obj.relayTunnels[multiTunnelId]; } relayMultiTunnel.multiTunnelId = nextMultiTunnelId++; From 12ff5fedd1e186bccdd3794dadc244212e3190fe Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Sun, 26 Jun 2022 13:52:57 +0100 Subject: [PATCH 061/105] add 100 percent --- views/default-mobile.handlebars | 2 +- views/default.handlebars | 2 +- views/sharing-mobile.handlebars | 2 +- views/sharing.handlebars | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars index 57f05ef2..9ac93927 100644 --- a/views/default-mobile.handlebars +++ b/views/default-mobile.handlebars @@ -4215,7 +4215,7 @@ } function applyDesktopSettings() { - var r = '', ops = (features & 512) ? [90, 70, 50, 40, 30, 20, 10, 5, 1] : [50, 40, 30, 20, 10, 5, 1]; + var r = '', ops = (features & 512) ? [100, 90, 70, 50, 40, 30, 20, 10, 5, 1] : [50, 40, 30, 20, 10, 5, 1]; for (var i in ops) { r += ''; } QH('d7bitmapquality', r); d7desktopmode.value = desktopsettings.encoding; diff --git a/views/default.handlebars b/views/default.handlebars index 6152d254..714ef239 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -8953,7 +8953,7 @@ } function applyDesktopSettings() { - var r = '', ops = (features & 512)?[90,80,70,60,50,40,30,20,10,5,1]:[60,50,40,30,20,10,5,1]; + var r = '', ops = (features & 512)?[100,90,80,70,60,50,40,30,20,10,5,1]:[60,50,40,30,20,10,5,1]; for (var i in ops) { r += ''; } QH('d7bitmapquality', r); d7desktopmode.value = desktopsettings.encoding; diff --git a/views/sharing-mobile.handlebars b/views/sharing-mobile.handlebars index 87bb00ce..e2ad0125 100644 --- a/views/sharing-mobile.handlebars +++ b/views/sharing-mobile.handlebars @@ -1188,7 +1188,7 @@ } function applyDesktopSettings() { - var r = '', ops = (features & 512) ? [90, 70, 50, 40, 30, 20, 10, 5, 1] : [50, 40, 30, 20, 10, 5, 1]; + var r = '', ops = (features & 512) ? [100, 90, 70, 50, 40, 30, 20, 10, 5, 1] : [50, 40, 30, 20, 10, 5, 1]; for (var i in ops) { r += ''; } QH('d7bitmapquality', r); d7desktopmode.value = desktopsettings.encoding; diff --git a/views/sharing.handlebars b/views/sharing.handlebars index ca10d11a..4208d680 100644 --- a/views/sharing.handlebars +++ b/views/sharing.handlebars @@ -780,7 +780,7 @@ } function applyDesktopSettings() { - var r = '', ops = (features2 & 1) ? [90, 80, 70, 60, 50, 40, 30, 20, 10, 5, 1] : [60, 50, 40, 30, 20, 10, 5, 1] + var r = '', ops = (features2 & 1) ? [100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 5, 1] : [60, 50, 40, 30, 20, 10, 5, 1] for (var i in ops) { r += ''; } QH('d7bitmapquality', r); d7desktopmode.value = desktopsettings.encoding; From 76b1c925509ead5959de9f3a42021ef035a0084b Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Sun, 26 Jun 2022 16:55:07 -0700 Subject: [PATCH 062/105] Added web relay session timeout, #4172 --- apprelays.js | 28 ++++++++++++++++++++++--- webrelayserver.js | 52 ++++++++++++++++++++++++++++++----------------- 2 files changed, 58 insertions(+), 22 deletions(-) diff --git a/apprelays.js b/apprelays.js index 8acd6fec..440060e3 100644 --- a/apprelays.js +++ b/apprelays.js @@ -69,7 +69,7 @@ function SerialTunnel(options) { } // Construct a Web relay object -module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, userid, nodeid, addr, port, appid) { +module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, userid, nodeid, addr, port, appid) { const obj = {}; obj.parent = parent; obj.lastOperation = Date.now(); @@ -90,6 +90,23 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us obj.closed = false; obj.onclose = null; + // Check if any tunnels need to be cleaned up + obj.checkTimeout = function () { + const limit = Date.now() - (1 * 60 * 1000); // This is is 5 minutes before current time + + // Close any old non-websocket tunnels + const tunnelToRemove = []; + for (var i in tunnels) { if ((tunnels[i].lastOperation < limit) && (tunnels[i].isWebSocket !== true)) { tunnelToRemove.push(tunnels[i]); } } + for (var i in tunnelToRemove) { console.log('session-close-tunnel'); tunnelToRemove[i].close(); } + + // Close this session if no longer used + if (obj.lastOperation < limit) { + var count = 0; + for (var i in tunnels) { count++; } + if (count == 0) { console.log('session-close-self'); close(); } // Time limit reached and no tunnels, clean up. + } + } + // Handle new HTTP request obj.handleRequest = function (req, res) { pendingRequests.push([req, res]); @@ -135,7 +152,7 @@ module.exports.CreateMultiWebRelay = function (parent, db, req, args, domain, us obj.closed = true; for (var i in tunnels) { tunnels[i].close(); } tunnels = null; - if (obj.onclose) { obj.onclose(obj.userid + '/' + obj.multiTunnelId); } + if (obj.onclose) { obj.onclose(obj.userid + '/' + obj.sessionId); } delete obj.userid; delete obj.lastOperation; } @@ -150,6 +167,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { const WebSocket = require('ws') const obj = {}; + obj.lastOperation = Date.now(); obj.relayActive = false; obj.closed = false; obj.isWebSocket = false; @@ -163,6 +181,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Process a HTTP request obj.processRequest = function (req, res) { if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } + parent.lastOperation = obj.lastOperation = Date.now(); // Construct the HTTP request var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; @@ -265,6 +284,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.tls = require('tls').connect(tlsoptions, function () { parent.parent.debug('relay', "Web Relay Secure TLS Connection"); obj.relayActive = true; + parent.lastOperation = obj.lastOperation = Date.now(); // Update time of last opertion performed if (obj.onconnect) { obj.onconnect(obj.tunnelId); } // Event connection }); obj.tls.setEncoding('binary'); @@ -275,6 +295,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { } else { // No TLS needed, tunnel is now active obj.relayActive = true; + parent.lastOperation = obj.lastOperation = Date.now(); // Update time of last opertion performed if (obj.onconnect) { obj.onconnect(obj.tunnelId); } // Event connection } } @@ -376,7 +397,8 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future obj.res.end(data, 'binary'); // Write the data delete obj.res; - + parent.lastOperation = obj.lastOperation = Date.now(); // Update time of last opertion performed + // Event completion if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } } diff --git a/webrelayserver.js b/webrelayserver.js index f8f5ef44..e826b314 100644 --- a/webrelayserver.js +++ b/webrelayserver.js @@ -26,8 +26,9 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, obj.app = obj.express(); obj.webRelayServer = null; obj.port = 0; - var nextMultiTunnelId = 1; - var relayMultiTunnels = {} // RelayID --> Web Mutli-Tunnel + obj.cleanupTimer = null; + var nextSessionId = 1; + var relaySessions = {} // RelayID --> Web Mutli-Tunnel const constants = (require('crypto').constants ? require('crypto').constants : require('constants')); // require('constants') is deprecated in Node 11.10, use require('crypto').constants instead. var tlsSessionStore = {}; // Store TLS session information for quick resume. var tlsSessionStoreCount = 0; // Number of cached TLS session information in store. @@ -115,10 +116,10 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, return next(); } else { if ((req.session.userid != null) && (req.session.rid != null)) { - var relayMultiTunnel = relayMultiTunnels[req.session.userid + '/' + req.session.rid]; - if (relayMultiTunnel != null) { + var relaySession = relaySessions[req.session.userid + '/' + req.session.rid]; + if (relaySession != null) { // The multi-tunnel session is valid, use it - relayMultiTunnel.handleRequest(req, res); + relaySession.handleRequest(req, res); } else { // No multi-tunnel session with this relay identifier, close the HTTP request. res.end(); @@ -149,26 +150,34 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, const appid = parseInt(req.query.appid); // Check to see if we already have a multi-relay session that matches exactly this device and port for this user - var relayMultiTunnel = null; - for (var i in relayMultiTunnels) { - const xrelayMultiTunnel = relayMultiTunnels[i]; - if ((xrelayMultiTunnel.domain.id == domain.id) && (xrelayMultiTunnel.userid == userid) && (xrelayMultiTunnel.nodeid == nodeid) && (xrelayMultiTunnel.addr == addr) && (xrelayMultiTunnel.port == port) && (xrelayMultiTunnel.appid == appid)) { - relayMultiTunnel = xrelayMultiTunnel; // We found an exact match + var relaySession = null; + for (var i in relaySessions) { + const xrelaySession = relaySessions[i]; + if ((xrelaySession.domain.id == domain.id) && (xrelaySession.userid == userid) && (xrelaySession.nodeid == nodeid) && (xrelaySession.addr == addr) && (xrelaySession.port == port) && (xrelaySession.appid == appid)) { + relaySession = xrelaySession; // We found an exact match } } - if (relayMultiTunnel != null) { + if (relaySession != null) { // Since we found a match, use it - req.session.rid = relayMultiTunnel.multiTunnelId; + req.session.rid = relaySession.sessionId; } else { - // Create the multi-tunnel - relayMultiTunnel = require('./apprelays.js').CreateMultiWebRelay(parent, db, req, args, domain, userid, nodeid, addr, port, appid); - relayMultiTunnel.onclose = function (multiTunnelId) { delete obj.relayTunnels[multiTunnelId]; } - relayMultiTunnel.multiTunnelId = nextMultiTunnelId++; + // Create a web relay session + relaySession = require('./apprelays.js').CreateWebRelaySession(parent, db, req, args, domain, userid, nodeid, addr, port, appid); + relaySession.onclose = function (sessionId) { + // Remove the relay session + delete relaySessions[sessionId]; + // If there are not more relay sessions, clear the cleanup timer + if ((Object.keys(relaySessions).length == 0) && (obj.cleanupTimer != null)) { clearInterval(obj.cleanupTimer); obj.cleanupTimer = null; } + } + relaySession.sessionId = nextSessionId++; - // Set the tunnel - relayMultiTunnels[userid + '/' + relayMultiTunnel.multiTunnelId] = relayMultiTunnel; - req.session.rid = relayMultiTunnel.multiTunnelId; + // Set the multi-tunnel session + relaySessions[userid + '/' + relaySession.sessionId] = relaySession; + req.session.rid = relaySession.sessionId; + + // Setup the cleanup timer if needed + if (obj.cleanupTimer == null) { obj.cleanupTimer = setInterval(checkTimeout, 10000); } } // Redirect to root @@ -191,6 +200,11 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, } } + // Check that everything is cleaned up + function checkTimeout() { + for (var i in relaySessions) { relaySessions[i].checkTimeout(); } + } + // Find a free port starting with the specified one and going up. function CheckListenPort(port, addr, func) { var s = obj.net.createServer(function (socket) { }); From 587bdffd17ab28b83f76978c6f1e6690387a926a Mon Sep 17 00:00:00 2001 From: KJ7ICE <85096517+kj7ice@users.noreply.github.com> Date: Sun, 26 Jun 2022 17:00:53 -0700 Subject: [PATCH 063/105] Expire old entries for MariaDB/MySQL --- db.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/db.js b/db.js index c47352ee..899d1e38 100644 --- a/db.js +++ b/db.js @@ -109,7 +109,13 @@ module.exports.CreateDB = function (parent, func) { obj.eventsfile.remove({ time: { '$lt': new Date(Date.now() - (expireEventsSeconds * 1000)) } }, { multi: true }); // Force delete older events obj.powerfile.remove({ time: { '$lt': new Date(Date.now() - (expirePowerEventsSeconds * 1000)) } }, { multi: true }); // Force delete older events obj.serverstatsfile.remove({ time: { '$lt': new Date(Date.now() - (expireServerStatsSeconds * 1000)) } }, { multi: true }); // Force delete older events + } else if ((obj.databaseType == 4) || (obj.databaseType == 5)) { // MariaDB or MySQL + sqlDbQuery('DELETE FROM events WHERE time < ?', [new Date(Date.now() - (expireEventsSeconds * 1000))], function (doc, err) { }); // Delete events older than expireEventsSeconds + sqlDbQuery('DELETE FROM power WHERE time < ?', [new Date(Date.now() - (expirePowerEventsSeconds * 1000))], function (doc, err) { }); // Delete events older than expirePowerSeconds + sqlDbQuery('DELETE FROM serverstats WHERE expire < ?', [new Date()], function (doc, err) { }); // Delete events where expiration date is in the past + sqlDbQuery('DELETE FROM smbios WHERE expire < ?', [new Date()], function (doc, err) { }); // Delete events where expiration date is in the past } + obj.removeInactiveDevices(); } @@ -1471,7 +1477,7 @@ module.exports.CreateDB = function (parent, func) { // Database actions on the Server Stats collection obj.SetServerStats = function (data, func) { sqlDbQuery('REPLACE INTO serverstats VALUE (?, ?, ?)', [data.time, data.expire, JSON.stringify(data)], func); }; - obj.GetServerStats = function (hours, func) { var t = new Date(); t.setTime(t.getTime() - (60 * 60 * 1000 * hours)); sqlDbQuery('SELECT doc FROM serverstats WHERE time > ?', [t], func); }; // TODO: Expire old entries + obj.GetServerStats = function (hours, func) { var t = new Date(); t.setTime(t.getTime() - (60 * 60 * 1000 * hours)); sqlDbQuery('SELECT doc FROM serverstats WHERE time > ?', [t], func); }; // Read a configuration file from the database obj.getConfigFile = function (path, func) { obj.Get('cfile/' + path, func); } From f996fd2d79e0fcd56ba993df01984550d76caa7e Mon Sep 17 00:00:00 2001 From: Marcin Wilk Date: Mon, 27 Jun 2022 12:07:19 +0200 Subject: [PATCH 064/105] Update Polish translation Add missing translation up to v 1.41 --- translate/translate.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/translate/translate.json b/translate/translate.json index 9272a478..e4649006 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -15671,6 +15671,7 @@ }, { "en": "Connect using hardware KVM", + "pl": "Połącz za pomocą sprzętowego KVM", "xloc": [ "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1hspan" ] @@ -26214,6 +26215,7 @@ }, { "en": "Failed to sign agent {0}: {1}", + "pl": "Nieudane przypisanie agenta {0}: {1}", "xloc": [ "default.handlebars->41->104" ] @@ -32682,6 +32684,7 @@ }, { "en": "Intel® Standard Manageability (Intel® SM)", + "pl": "Intel® Standard Manageability (Intel® SM)", "xloc": [ "default-mobile.handlebars->11->578", "default.handlebars->41->1467" @@ -32689,12 +32692,14 @@ }, { "en": "Intel®AMT", + "pl": "Intel®AMT", "xloc": [ "default.handlebars->41->957" ] }, { "en": "Intel®SM", + "pl": "Intel®SM", "xloc": [ "default.handlebars->41->955" ] @@ -49921,6 +49926,7 @@ }, { "en": "Redirection port or KVM feature is disabled", + "pl": "Pzekierowania portu lub funkcja KVM są wyłączone", "xloc": [ "default.handlebars->container->column_l->p11->p11warning->3", "default.handlebars->container->column_l->p12->p12warning->3" @@ -53199,6 +53205,7 @@ }, { "en": "Reverse Mouse Wheel", + "pl": "Odwróć Zachowanie Rolki Myszy", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7amtkvm->5->d7otherset->7", "default.handlebars->container->dialog->dialogBody->dialog7->d7meshkvm->d7desktopOtherSettings->d7otherset2->3", From 5030063c5a3019f022cd3cc1f0bab9bf84b4626d Mon Sep 17 00:00:00 2001 From: petervanv <58996467+petervanv@users.noreply.github.com> Date: Mon, 27 Jun 2022 20:13:05 +0200 Subject: [PATCH 065/105] Dutch translation update 1.0.41 + corrected polish translation layout --- translate/translate.json | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/translate/translate.json b/translate/translate.json index e4649006..b4abff74 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -9992,6 +9992,7 @@ }, { "en": "Ask Admin PowerShell", + "nl": "Vraag naar de PowerShell in beheersdersmodus", "pl": "PowerShell z Zapytaniem Administratora", "ru": "PowerShell от Админа, cпросить согласия", "fr": "Demander PowerShell en mode administrateur", @@ -10001,6 +10002,7 @@ }, { "en": "Ask Admin Shell", + "nl": "Vraag naar de shell in beheersdersmodus", "pl": "Terminal z Zapytaniem Administratora", "ru": "Консоль от Админа, cпросить согласия", "fr": "Demander le shell en mode administrateur", @@ -10061,6 +10063,7 @@ }, { "en": "Ask User PowerShell", + "nl": "Vraag naar de PowerShell in gebruikersmodus", "pl": "PowerShell z Zapytaniem Użytkownika", "ru": "PowerShell от Пользователя, cпросить согласия", "fr": "Demander PowerShell en mode utilisateur ", @@ -10070,6 +10073,7 @@ }, { "en": "Ask User Shell", + "nl": "Vraag naar de shell in gebruikersmodus", "pl": "Terminal z Zapytaniem Użytkownika", "ru": "Консоль от Пользователя, cпросить согласия", "fr": "Demander le shell en mode utilisateur", @@ -15671,7 +15675,8 @@ }, { "en": "Connect using hardware KVM", - "pl": "Połącz za pomocą sprzętowego KVM", + "nl": "Verbinding maken via hardware KVM", + "pl": "Połącz za pomocą sprzętowego KVM", "xloc": [ "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1hspan" ] @@ -26215,7 +26220,8 @@ }, { "en": "Failed to sign agent {0}: {1}", - "pl": "Nieudane przypisanie agenta {0}: {1}", + "nl": "Kan de agent niet ondertekenen {0}: {1}", + "pl": "Nieudane przypisanie agenta {0}: {1}", "xloc": [ "default.handlebars->41->104" ] @@ -32684,7 +32690,8 @@ }, { "en": "Intel® Standard Manageability (Intel® SM)", - "pl": "Intel® Standard Manageability (Intel® SM)", + "nl": "Intel® Standaard beheerbaarheid (Intel® SM)", + "pl": "Intel® Standard Manageability (Intel® SM)", "xloc": [ "default-mobile.handlebars->11->578", "default.handlebars->41->1467" @@ -32692,14 +32699,16 @@ }, { "en": "Intel®AMT", - "pl": "Intel®AMT", + "nl": "Intel®AMT", + "pl": "Intel®AMT", "xloc": [ "default.handlebars->41->957" ] }, { "en": "Intel®SM", - "pl": "Intel®SM", + "nl": "Intel®SM", + "pl": "Intel®SM", "xloc": [ "default.handlebars->41->955" ] @@ -49926,7 +49935,8 @@ }, { "en": "Redirection port or KVM feature is disabled", - "pl": "Pzekierowania portu lub funkcja KVM są wyłączone", + "nl": "Omleidingspoort of KVM functie is uitgeschakeld", + "pl": "Pzekierowania portu lub funkcja KVM są wyłączone", "xloc": [ "default.handlebars->container->column_l->p11->p11warning->3", "default.handlebars->container->column_l->p12->p12warning->3" @@ -53205,7 +53215,8 @@ }, { "en": "Reverse Mouse Wheel", - "pl": "Odwróć Zachowanie Rolki Myszy", + "nl": "Muiswiel actie omgekeerd", + "pl": "Odwróć Zachowanie Rolki Myszy", "xloc": [ "default.handlebars->container->dialog->dialogBody->dialog7->d7amtkvm->5->d7otherset->7", "default.handlebars->container->dialog->dialogBody->dialog7->d7meshkvm->d7desktopOtherSettings->d7otherset2->3", @@ -75780,4 +75791,4 @@ ] } ] -} \ No newline at end of file +} From 087b33649269e855c0a2cbdf44f3be8d599e5bf5 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 27 Jun 2022 13:02:46 -0700 Subject: [PATCH 066/105] Web relay now stream HTTP responces from device to browser, #4172 --- apprelays.js | 108 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 103 insertions(+), 5 deletions(-) diff --git a/apprelays.js b/apprelays.js index 440060e3..9d07c01b 100644 --- a/apprelays.js +++ b/apprelays.js @@ -97,13 +97,13 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, // Close any old non-websocket tunnels const tunnelToRemove = []; for (var i in tunnels) { if ((tunnels[i].lastOperation < limit) && (tunnels[i].isWebSocket !== true)) { tunnelToRemove.push(tunnels[i]); } } - for (var i in tunnelToRemove) { console.log('session-close-tunnel'); tunnelToRemove[i].close(); } + for (var i in tunnelToRemove) { tunnelToRemove[i].close(); } // Close this session if no longer used if (obj.lastOperation < limit) { var count = 0; for (var i in tunnels) { count++; } - if (count == 0) { console.log('session-close-self'); close(); } // Time limit reached and no tunnels, clean up. + if (count == 0) { close(); } // Time limit reached and no tunnels, clean up. } } @@ -137,7 +137,13 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, var count = 0; for (var i in tunnels) { count += (tunnels[i].isWebSocket ? 0 : 1); } // If there are none, discard all pending HTTP requests - if (count == 0) { for (var i in pendingRequests) { const x = pendingRequests[i]; x[1].end(); pendingRequests = []; } } + if (count == 0) { + for (var i in pendingRequests) { + const x = pendingRequests[i]; + if (x != null) { x[1].end(); } + pendingRequests = []; + } + } } tunnel.onconnect = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } tunnel.oncompleted = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } @@ -327,6 +333,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { } } + /* // Process incoming HTTP data obj.socketAccumulator = ''; obj.socketParseState = 0; @@ -352,10 +359,10 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { } if (obj.socketParseState == 1) { var csize = -1; - if ((obj.socketXHeader['connection'] != undefined) && (obj.socketXHeader['connection'].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == undefined) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) { + if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == null) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) { // The body ends with a close, in this case, we will only process the header csize = 0; - } else if (obj.socketXHeader['content-length'] != undefined) { + } else if (obj.socketXHeader['content-length'] != null) { // The body length is specified by the content-length csize = parseInt(obj.socketXHeader['content-length']); if (obj.socketAccumulator.length < csize) return; @@ -402,6 +409,97 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Event completion if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } } + */ + + // Process incoming HTTP data + obj.socketAccumulator = ''; + obj.socketParseState = 0; + obj.socketContentLengthRemaining = 0; + function processHttpData(data) { + obj.socketAccumulator += data; + while (true) { + //console.log('ACC(' + obj.socketAccumulator + '): ' + obj.socketAccumulator); + if (obj.socketParseState == 0) { + var headersize = obj.socketAccumulator.indexOf('\r\n\r\n'); + if (headersize < 0) return; + //obj.Debug("Header: "+obj.socketAccumulator.substring(0, headersize)); // Display received HTTP header + obj.socketHeader = obj.socketAccumulator.substring(0, headersize).split('\r\n'); + obj.socketAccumulator = obj.socketAccumulator.substring(headersize + 4); + obj.socketParseState = 1; + obj.socketXHeader = { Directive: obj.socketHeader[0].split(' ') }; + for (var i in obj.socketHeader) { + if (i != 0) { + var x2 = obj.socketHeader[i].indexOf(':'); + obj.socketXHeader[obj.socketHeader[i].substring(0, x2).toLowerCase()] = obj.socketHeader[i].substring(x2 + 2); + } + } + processHttpResponse(obj.socketXHeader, null, false); + } + if (obj.socketParseState == 1) { + var csize = -1; + if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == null) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) { + // The body ends with a close, in this case, we will only process the header + processHttpResponse(null, null, true); + csize = 0; + } else if (obj.socketXHeader['content-length'] != null) { + // The body length is specified by the content-length + if (obj.socketContentLengthRemaining == 0) { obj.socketContentLengthRemaining = parseInt(obj.socketXHeader['content-length']); } // Set the remaining content-length if not set + var data = obj.socketAccumulator.substring(0, obj.socketContentLengthRemaining); // Grab the available data, not passed the expected content-length + obj.socketAccumulator = obj.socketAccumulator.substring(data.length); // Remove the data from the accumulator + obj.socketContentLengthRemaining -= data.length; // Substract the obtained data from the expected size + processHttpResponse(null, data, (obj.socketContentLengthRemaining == 0)); // Send any data we have, if we are done, signal the end of the response + if (obj.socketContentLengthRemaining > 0) return; // If more data is needed, return now so we exit the while() loop. + csize = 0; // We are done + } else { + // The body is chunked + var clen = obj.socketAccumulator.indexOf('\r\n'); + if (clen < 0) return; // Chunk length not found, exit now and get more data. + // Chunk length if found, lets see if we can get the data. + csize = parseInt(obj.socketAccumulator.substring(0, clen), 16); + if (obj.socketAccumulator.length < clen + 2 + csize + 2) return; + // We got a chunk with all of the data, handle the chunck now. + var data = obj.socketAccumulator.substring(clen + 2, clen + 2 + csize); + obj.socketAccumulator = obj.socketAccumulator.substring(clen + 2 + csize + 2); + processHttpResponse(null, data, (csize == 0)); + } + if (csize == 0) { + //obj.Debug("xxOnSocketData DONE: (" + obj.socketData.length + "): " + obj.socketData); + obj.socketParseState = 0; + obj.socketHeader = null; + } + } + } + } + + // This is a fully parsed HTTP response from the remote device + function processHttpResponse(header, data, done) { + if (obj.res == null) return; + parent.lastOperation = obj.lastOperation = Date.now(); // Update time of last opertion performed + + // If there is a header, send it + if (header != null) { + obj.res.status(parseInt(header.Directive[1])); // Set the status + const blockHeaders = ['Directive']; // These are headers we do not forward + for (var i in header) { + if (i == 'set-cookie') { parent.webCookie = header[i]; } // Keep the cookie, don't forward it + else if (blockHeaders.indexOf(i) == -1) { obj.res.set(i, header[i]); } // Set the headers if not blocked + } + obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future + } + + // If there is data, send it + if (data != null) { obj.res.write(data, 'binary'); } + + // If we are done, close the response + if (done == true) { + // Close the response + obj.res.end(); + delete obj.res; + + // Event completion + if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } + } + } // Send data thru the relay tunnel. Written to use TLS if needed. function send(data) { try { if (obj.tls) { obj.tls.write(data); } else { obj.wsClient.send(data); } } catch (ex) { } } From e351e839db1cdc9d6f790e6ad020eb547f6f4563 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 27 Jun 2022 13:18:05 -0700 Subject: [PATCH 067/105] Web relay can now stream http content-length requests to the device, #4172 --- apprelays.js | 90 ++++++---------------------------------------------- 1 file changed, 9 insertions(+), 81 deletions(-) diff --git a/apprelays.js b/apprelays.js index 9d07c01b..46e7653b 100644 --- a/apprelays.js +++ b/apprelays.js @@ -197,11 +197,17 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. request += '\r\n'; - if ((req.headers['transfer-encoding'] != null) || (req.headers['content-length'] != null)) { + if (req.headers['content-length'] != null) { + // Stream the HTTP request and body, this is a content-length HTTP request, just forward the body dataf + send(Buffer.from(request)); + req.on('data', function (data) { send(data); }); // TODO: Flow control (Not sure how to do this in ExpressJS) + req.on('end', function () { }); + } else if (req.headers['transfer-encoding'] != null) { // Read the HTTP body and send the request to the device + console.log('chunk stream start'); obj.requestBinary = [Buffer.from(request)]; - req.on('data', function (data) { obj.requestBinary.push(data); }); - req.on('end', function () { send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; }); + req.on('data', function (data) { console.log('chunk stream data'); obj.requestBinary.push(data); }); + req.on('end', function () { console.log('chunk stream end');send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; }); } else { // Request has no body, send it now send(Buffer.from(request)); @@ -333,84 +339,6 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { } } - /* - // Process incoming HTTP data - obj.socketAccumulator = ''; - obj.socketParseState = 0; - function processHttpData(data) { - obj.socketAccumulator += data; - while (true) { - //console.log('ACC(' + obj.socketAccumulator + '): ' + obj.socketAccumulator); - if (obj.socketParseState == 0) { - var headersize = obj.socketAccumulator.indexOf('\r\n\r\n'); - if (headersize < 0) return; - //obj.Debug("Header: "+obj.socketAccumulator.substring(0, headersize)); // Display received HTTP header - obj.socketHeader = obj.socketAccumulator.substring(0, headersize).split('\r\n'); - obj.socketAccumulator = obj.socketAccumulator.substring(headersize + 4); - obj.socketParseState = 1; - obj.socketData = ''; - obj.socketXHeader = { Directive: obj.socketHeader[0].split(' ') }; - for (var i in obj.socketHeader) { - if (i != 0) { - var x2 = obj.socketHeader[i].indexOf(':'); - obj.socketXHeader[obj.socketHeader[i].substring(0, x2).toLowerCase()] = obj.socketHeader[i].substring(x2 + 2); - } - } - } - if (obj.socketParseState == 1) { - var csize = -1; - if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == null) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) { - // The body ends with a close, in this case, we will only process the header - csize = 0; - } else if (obj.socketXHeader['content-length'] != null) { - // The body length is specified by the content-length - csize = parseInt(obj.socketXHeader['content-length']); - if (obj.socketAccumulator.length < csize) return; - var data = obj.socketAccumulator.substring(0, csize); - obj.socketAccumulator = obj.socketAccumulator.substring(csize); - obj.socketData = data; - csize = 0; - } else { - // The body is chunked - var clen = obj.socketAccumulator.indexOf('\r\n'); - if (clen < 0) return; // Chunk length not found, exit now and get more data. - // Chunk length if found, lets see if we can get the data. - csize = parseInt(obj.socketAccumulator.substring(0, clen), 16); - if (obj.socketAccumulator.length < clen + 2 + csize + 2) return; - // We got a chunk with all of the data, handle the chunck now. - var data = obj.socketAccumulator.substring(clen + 2, clen + 2 + csize); - obj.socketAccumulator = obj.socketAccumulator.substring(clen + 2 + csize + 2); - try { obj.socketData += data; } catch (ex) { console.log(ex, typeof data, data.length); } - } - if (csize == 0) { - //obj.Debug("xxOnSocketData DONE: (" + obj.socketData.length + "): " + obj.socketData); - processHttpResponse(obj.socketXHeader, obj.socketData); - obj.socketParseState = 0; - obj.socketHeader = null; - } - } - } - } - - // This is a fully parsed HTTP response from the remote device - function processHttpResponse(header, data) { - //console.log('processHttpResponse', header); - obj.res.status(parseInt(header.Directive[1])); // Set the status - const blockHeaders = ['Directive' ]; // These are headers we do not forward - for (var i in header) { - if (i == 'set-cookie') { parent.webCookie = header[i]; } // Keep the cookie, don't forward it - else if (blockHeaders.indexOf(i) == -1) { obj.res.set(i, header[i]); } // Set the headers if not blocked - } - obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future - obj.res.end(data, 'binary'); // Write the data - delete obj.res; - parent.lastOperation = obj.lastOperation = Date.now(); // Update time of last opertion performed - - // Event completion - if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } - } - */ - // Process incoming HTTP data obj.socketAccumulator = ''; obj.socketParseState = 0; From d1e0cd94e254609c6a34d269d9de6645e1a757bc Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 27 Jun 2022 13:48:13 -0700 Subject: [PATCH 068/105] Web relay can now stream chunk encoding towards relay device, #4172 --- apprelays.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apprelays.js b/apprelays.js index 46e7653b..aa1ca562 100644 --- a/apprelays.js +++ b/apprelays.js @@ -198,16 +198,16 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { request += '\r\n'; if (req.headers['content-length'] != null) { - // Stream the HTTP request and body, this is a content-length HTTP request, just forward the body dataf + // Stream the HTTP request and body, this is a content-length HTTP request, just forward the body data send(Buffer.from(request)); req.on('data', function (data) { send(data); }); // TODO: Flow control (Not sure how to do this in ExpressJS) req.on('end', function () { }); } else if (req.headers['transfer-encoding'] != null) { - // Read the HTTP body and send the request to the device - console.log('chunk stream start'); - obj.requestBinary = [Buffer.from(request)]; - req.on('data', function (data) { console.log('chunk stream data'); obj.requestBinary.push(data); }); - req.on('end', function () { console.log('chunk stream end');send(Buffer.concat(obj.requestBinary)); delete obj.requestBinary; }); + // Stream the HTTP request and body, this is a chunked encoded HTTP request + // TODO: Flow control (Not sure how to do this in ExpressJS) + send(Buffer.from(request)); + req.on('data', function (data) { send(Buffer.concat([Buffer.from(data.length.toString(16) + '\r\n', 'binary'), data, send(Buffer.from('\r\n', 'binary'))])); }); + req.on('end', function () { send(Buffer.from('0\r\n\r\n', 'binary')); }); } else { // Request has no body, send it now send(Buffer.from(request)); From 1e7456f56d50699738797b9d726d021ada00e91c Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 27 Jun 2022 15:22:44 -0700 Subject: [PATCH 069/105] Updated URL in --help. --- meshcentral.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshcentral.js b/meshcentral.js index 7e7127fc..3d5a0590 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -145,7 +145,7 @@ function CreateMeshCentralServer(config, args) { if ((obj.args.help == true) || (obj.args['?'] == true)) { console.log('MeshCentral v' + getCurrentVersion() + ', remote computer management web portal.'); console.log('This software is open source under Apache 2.0 license.'); - console.log('Details at: https://www.meshcommander.com/meshcentral2\r\n'); + console.log('Details at: https://www.meshcentral.com\r\n'); if ((obj.platform == 'win32') || (obj.platform == 'linux')) { console.log('Run as a background service'); console.log(' --install/uninstall Install MeshCentral as a background service.'); From 91dead8e84af7d99d4d22b1e0942cee83d6e52a1 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 27 Jun 2022 23:08:07 -0700 Subject: [PATCH 070/105] Fixed web relay for responses with no body. --- apprelays.js | 145 ++++++++++++++++++++++++++++++++++------------ webrelayserver.js | 58 +++++++++++++------ 2 files changed, 147 insertions(+), 56 deletions(-) diff --git a/apprelays.js b/apprelays.js index aa1ca562..f75048fc 100644 --- a/apprelays.js +++ b/apprelays.js @@ -109,7 +109,13 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, // Handle new HTTP request obj.handleRequest = function (req, res) { - pendingRequests.push([req, res]); + pendingRequests.push([req, res, false]); + handleNextRequest(); + } + + // Handle new websocket request + obj.handleWebSocket = function (ws, req) { + pendingRequests.push([req, ws, true]); handleNextRequest(); } @@ -119,16 +125,19 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, var count = 0; for (var i in tunnels) { count += (tunnels[i].isWebSocket ? 0 : 1); - if ((tunnels[i].relayActive == true) && (tunnels[i].res == null)) { + if ((tunnels[i].relayActive == true) && (tunnels[i].res == null) && (tunnels[i].isWebSocket == false)) { // Found a free tunnel, use it const x = pendingRequests.shift(); - tunnels[i].processRequest(x[0], x[1]); + if (x[2] == true) { tunnels[i].processWebSocket(x[0], x[1]); } else { tunnels[i].processRequest(x[0], x[1]); } return; } } if (count > 0) return; + launchNewTunnel(); + } + function launchNewTunnel() { // Launch a new tunnel const tunnel = module.exports.CreateWebRelay(obj, db, args, domain); tunnel.onclose = function (tunnelId) { @@ -136,17 +145,20 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, // Count how many non-websocket tunnels are active var count = 0; for (var i in tunnels) { count += (tunnels[i].isWebSocket ? 0 : 1); } - // If there are none, discard all pending HTTP requests - if (count == 0) { - for (var i in pendingRequests) { - const x = pendingRequests[i]; - if (x != null) { x[1].end(); } - pendingRequests = []; - } + if (count == 0) { launchNewTunnel(); } + } + tunnel.onconnect = function (tunnelId) { + if (pendingRequests.length > 0) { + const x = pendingRequests.shift(); + if (x[2] == true) { tunnels[tunnelId].processWebSocket(x[0], x[1]); } else { tunnels[tunnelId].processRequest(x[0], x[1]); } + } + } + tunnel.oncompleted = function (tunnelId) { + if (pendingRequests.length > 0) { + const x = pendingRequests.shift(); + if (x[2] == true) { tunnels[tunnelId].processWebSocket(x[0], x[1]); } else { tunnels[tunnelId].processRequest(x[0], x[1]); } } } - tunnel.onconnect = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } - tunnel.oncompleted = function (tunnelId) { if (pendingRequests.length > 0) { const x = pendingRequests.shift(); tunnels[tunnelId].processRequest(x[0], x[1]); } } tunnel.connect(userid, nodeid, addr, port, appid); tunnel.tunnelId = nextTunnelId++; tunnels[tunnel.tunnelId] = tunnel; @@ -215,6 +227,26 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.res = res; } + // Process a websocket request + obj.processWebSocket = function (req, ws) { + //console.log('processWebSocket', req.url); + if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } + parent.lastOperation = obj.lastOperation = Date.now(); + + // Mark this tunnel as being a web socket tunnel + obj.isWebSocket = true; + obj.ws = ws; + + // Construct the HTTP request and send it out + var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; + request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; + const blockedHeaders = ['origin', 'host', 'cookie']; // These are headers we do not forward + for (var i in req.headers) { if (blockedHeaders.indexOf(i) == -1) { request += i + ': ' + req.headers[i] + '\r\n'; } } + if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. + request += '\r\n'; + send(Buffer.from(request)); + } + // Disconnect obj.close = function (arg) { if (obj.closed == true) return; @@ -251,6 +283,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Close any pending request if (obj.res) { obj.res.end(); delete obj.res; } + if (obj.ws) { obj.ws.close(); delete obj.ws; } // Event disconnection if (obj.onclose) { obj.onclose(obj.tunnelId); } @@ -353,7 +386,6 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { //obj.Debug("Header: "+obj.socketAccumulator.substring(0, headersize)); // Display received HTTP header obj.socketHeader = obj.socketAccumulator.substring(0, headersize).split('\r\n'); obj.socketAccumulator = obj.socketAccumulator.substring(headersize + 4); - obj.socketParseState = 1; obj.socketXHeader = { Directive: obj.socketHeader[0].split(' ') }; for (var i in obj.socketHeader) { if (i != 0) { @@ -361,11 +393,18 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.socketXHeader[obj.socketHeader[i].substring(0, x2).toLowerCase()] = obj.socketHeader[i].substring(x2 + 2); } } - processHttpResponse(obj.socketXHeader, null, false); + + // Check if this HTTP request has a body + if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'close')) { obj.socketParseState = 1; } + if (obj.socketXHeader['content-length'] != null) { obj.socketParseState = 1; } + if ((obj.socketXHeader["transfer-encoding"] != null) && (obj.socketXHeader["transfer-encoding"].toLowerCase() == 'chunked')) { obj.socketParseState = 1; } + + // Forward the HTTP request into the tunnel, if no body is present, close the request. + processHttpResponse(obj.socketXHeader, null, (obj.socketParseState == 0)); } if (obj.socketParseState == 1) { var csize = -1; - if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == null) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) { + if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'close')) { // The body ends with a close, in this case, we will only process the header processHttpResponse(null, null, true); csize = 0; @@ -378,10 +417,10 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { processHttpResponse(null, data, (obj.socketContentLengthRemaining == 0)); // Send any data we have, if we are done, signal the end of the response if (obj.socketContentLengthRemaining > 0) return; // If more data is needed, return now so we exit the while() loop. csize = 0; // We are done - } else { + } else if ((obj.socketXHeader["transfer-encoding"] != null) && (obj.socketXHeader["transfer-encoding"].toLowerCase() == 'chunked')) { // The body is chunked var clen = obj.socketAccumulator.indexOf('\r\n'); - if (clen < 0) return; // Chunk length not found, exit now and get more data. + if (clen < 0) { return; } // Chunk length not found, exit now and get more data. // Chunk length if found, lets see if we can get the data. csize = parseInt(obj.socketAccumulator.substring(0, clen), 16); if (obj.socketAccumulator.length < clen + 2 + csize + 2) return; @@ -396,36 +435,68 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.socketHeader = null; } } + if (obj.socketParseState == 2) { + // We are in websocket pass-thru mode, decode the websocket frame + if (obj.socketAccumulator.length < 2) return; // Need at least 2 bytes to decode a websocket header + console.log('WebSocket frame', obj.socketAccumulator.length, Buffer.from(obj.socketAccumulator, 'binary')); + + const buf = Buffer.from(obj.socketAccumulator, 'binary'); + const fin = ((buf[0] & 0x80) != 0); + const op = buf[0] & 0x0F; + const mask = ((buf[1] & 0x80) != 0); + const len = buf[1] & 0x7F; + console.log('fin', fin); + console.log('op', op); + console.log('mask', mask); + console.log('len', len); + + // Connection close + if ((fin == true) || (op == 8)) { obj.close(); } + + return; + } } } // This is a fully parsed HTTP response from the remote device function processHttpResponse(header, data, done) { - if (obj.res == null) return; - parent.lastOperation = obj.lastOperation = Date.now(); // Update time of last opertion performed + //console.log('processHttpResponse'); + if (obj.isWebSocket == false) { + if (obj.res == null) return; + parent.lastOperation = obj.lastOperation = Date.now(); // Update time of last opertion performed - // If there is a header, send it - if (header != null) { - obj.res.status(parseInt(header.Directive[1])); // Set the status - const blockHeaders = ['Directive']; // These are headers we do not forward - for (var i in header) { - if (i == 'set-cookie') { parent.webCookie = header[i]; } // Keep the cookie, don't forward it - else if (blockHeaders.indexOf(i) == -1) { obj.res.set(i, header[i]); } // Set the headers if not blocked + // If there is a header, send it + if (header != null) { + obj.res.status(parseInt(header.Directive[1])); // Set the status + const blockHeaders = ['Directive']; // These are headers we do not forward + for (var i in header) { + if (i == 'set-cookie') { parent.webCookie = header[i]; } // Keep the cookie, don't forward it + else if (blockHeaders.indexOf(i) == -1) { obj.res.set(i, header[i]); } // Set the headers if not blocked + } + obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future } - obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future - } - // If there is data, send it - if (data != null) { obj.res.write(data, 'binary'); } + // If there is data, send it + if (data != null) { obj.res.write(data, 'binary'); } - // If we are done, close the response - if (done == true) { - // Close the response - obj.res.end(); - delete obj.res; + // If we are done, close the response + if (done == true) { + // Close the response + obj.res.end(); + delete obj.res; - // Event completion - if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } + // Event completion + if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } + } + } else { + // Tunnel is now in web socket pass-thru mode + if (header.connection.toLowerCase() == 'upgrade') { + // Websocket upgrade succesful + obj.socketParseState = 2; + } else { + // Unable to upgrade to web socket + obj.close(); + } } } diff --git a/webrelayserver.js b/webrelayserver.js index e826b314..18552f83 100644 --- a/webrelayserver.js +++ b/webrelayserver.js @@ -24,6 +24,8 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, obj.tlsServer = null; obj.net = require('net'); obj.app = obj.express(); + if (args.compression !== false) { obj.app.use(require('compression')()); } + obj.app.disable('x-powered-by'); obj.webRelayServer = null; obj.port = 0; obj.cleanupTimer = null; @@ -111,17 +113,18 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, req.clientIp = ipex; } - // Check if this there is a multi-tunnel for this request - if (req.url.startsWith('/control-redirect.ashx?n=')) { + // If this is a session start or a websocket, have the application handle this + if ((req.headers.upgrade == 'websocket') || (req.url.startsWith('/control-redirect.ashx?n='))) { return next(); } else { + // If this is a normal request (GET, POST, etc) handle it here if ((req.session.userid != null) && (req.session.rid != null)) { var relaySession = relaySessions[req.session.userid + '/' + req.session.rid]; if (relaySession != null) { - // The multi-tunnel session is valid, use it + // The web relay session is valid, use it relaySession.handleRequest(req, res); } else { - // No multi-tunnel session with this relay identifier, close the HTTP request. + // No web relay ession with this relay identifier, close the HTTP request. res.end(); } } else { @@ -131,6 +134,38 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, } }); + // Start the server, only after users and meshes are loaded from the database. + if (args.tlsoffload) { + // Setup the HTTP server without TLS + obj.expressWs = require('express-ws')(obj.app, null, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); + } else { + // Setup the HTTP server with TLS, use only TLS 1.2 and higher with perfect forward secrecy (PFS). + const tlsOptions = { cert: certificates.web.cert, key: certificates.web.key, ca: certificates.web.ca, rejectUnauthorized: true, ciphers: "HIGH:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256", secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_COMPRESSION | constants.SSL_OP_CIPHER_SERVER_PREFERENCE | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1 }; + obj.tlsServer = require('https').createServer(tlsOptions, obj.app); + obj.tlsServer.on('secureConnection', function () { /*console.log('tlsServer secureConnection');*/ }); + obj.tlsServer.on('error', function (err) { console.log('tlsServer error', err); }); + obj.tlsServer.on('newSession', function (id, data, cb) { if (tlsSessionStoreCount > 1000) { tlsSessionStoreCount = 0; tlsSessionStore = {}; } tlsSessionStore[id.toString('hex')] = data; tlsSessionStoreCount++; cb(); }); + obj.tlsServer.on('resumeSession', function (id, cb) { cb(null, tlsSessionStore[id.toString('hex')] || null); }); + obj.expressWs = require('express-ws')(obj.app, obj.tlsServer, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); + } + + // Handle incoming web socket calls + obj.app.ws('/*', function (ws, req) { + if ((req.session.userid != null) && (req.session.rid != null)) { + var relaySession = relaySessions[req.session.userid + '/' + req.session.rid]; + if (relaySession != null) { + // The multi-tunnel session is valid, use it + relaySession.handleWebSocket(ws, req); + } else { + // No multi-tunnel session with this relay identifier, close the websocket. + ws.close(); + } + } else { + // The user is not logged in or does not have a relay identifier, close the websocket. + ws.close(); + } + }); + // This is the magic URL that will setup the relay session obj.app.get('/control-redirect.ashx', function (req, res) { if ((req.session == null) || (req.session.userid == null)) { res.redirect('/'); return; } @@ -183,21 +218,6 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, // Redirect to root res.redirect('/'); }); - - // Start the server, only after users and meshes are loaded from the database. - if (args.tlsoffload) { - // Setup the HTTP server without TLS - obj.expressWs = require('express-ws')(obj.app, null, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); - } else { - // Setup the HTTP server with TLS, use only TLS 1.2 and higher with perfect forward secrecy (PFS). - const tlsOptions = { cert: certificates.web.cert, key: certificates.web.key, ca: certificates.web.ca, rejectUnauthorized: true, ciphers: "HIGH:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256", secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_COMPRESSION | constants.SSL_OP_CIPHER_SERVER_PREFERENCE | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1 }; - obj.tlsServer = require('https').createServer(tlsOptions, obj.app); - obj.tlsServer.on('secureConnection', function () { /*console.log('tlsServer secureConnection');*/ }); - obj.tlsServer.on('error', function (err) { console.log('tlsServer error', err); }); - obj.tlsServer.on('newSession', function (id, data, cb) { if (tlsSessionStoreCount > 1000) { tlsSessionStoreCount = 0; tlsSessionStore = {}; } tlsSessionStore[id.toString('hex')] = data; tlsSessionStoreCount++; cb(); }); - obj.tlsServer.on('resumeSession', function (id, cb) { cb(null, tlsSessionStore[id.toString('hex')] || null); }); - obj.expressWs = require('express-ws')(obj.app, obj.tlsServer, { wsOptions: { perMessageDeflate: (args.wscompression === true) } }); - } } // Check that everything is cleaned up From a06acd47862f29b587bec3e606d7aa993b19e296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sch=C3=B6n?= Date: Tue, 28 Jun 2022 12:39:07 +0200 Subject: [PATCH 071/105] fixed german translation --- translate/translate.json | 42 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/translate/translate.json b/translate/translate.json index b4abff74..e13bf14b 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -5922,7 +5922,7 @@ { "cs": "Přidat a znovu odeslat mapu ...", "da": "Tilføj &Relay Map...", - "de": "&Relay-Karte hinzufügen...", + "de": "&Relay-Zuordnung hinzufügen...", "en": "Add &Relay Map...", "es": "Agregar y retransmitir mapa ...", "fi": "Lisää ja välitä kartta ...", @@ -6220,7 +6220,7 @@ { "cs": "Přidat mapu ...", "da": "Tilføj kort...", - "de": "Karte hinzufügen...", + "de": "Zuordnung hinzufügen...", "en": "Add Map...", "es": "Agregar mapa ...", "fi": "Lisää kartta ...", @@ -6291,7 +6291,7 @@ { "cs": "Přidat mapu relé ...", "da": "Tilføj Relay kort", - "de": "Relaiskarte hinzufügen...", + "de": "Relay-Zuordnung hinzufügen...", "en": "Add Relay Map...", "es": "Agregar mapa de retransmisiones ...", "fi": "Lisää välityskartta ...", @@ -8695,7 +8695,7 @@ { "cs": "Alternativní port", "da": "Alternativ port", - "de": "Alternativer Hafen", + "de": "Alternativer Port", "en": "Alternative Port", "es": "Puerto Alternativo", "fi": "Vaihtoehtoinen portti", @@ -11322,7 +11322,7 @@ { "cs": "Vázat místní port na všechna síťová rozhraní", "da": "Bind lokal port til alle netværksinterfaces", - "de": "Binden Sie den lokalen Port an alle Netzwerkschnittstellen", + "de": "Lokalen Port an alle Netzwerkschnittstellen binden", "en": "Bind local port to all network interfaces", "es": "Vincular el puerto local a todas las interfaces de red", "fi": "Sido paikallinen portti kaikkiin verkkoliitäntöihin", @@ -36974,7 +36974,7 @@ { "cs": "Místní přístav", "da": "Lokal Port", - "de": "Lokaler Hafen", + "de": "Lokaler Port", "en": "Local Port", "es": "Puerto Local", "fi": "Paikallinen satama", @@ -44700,7 +44700,7 @@ { "cs": "Web O & pen ...", "da": "O&pen Site...", - "de": "Website öffnen...", + "de": "Webseite öffnen...", "en": "O&pen Site...", "es": "Sitio de O & pen ...", "fi": "O & kynä -sivusto ...", @@ -45291,7 +45291,7 @@ { "cs": "Otevřete web", "da": "Åbn webstedet", - "de": "Website öffnen", + "de": "Webseite öffnen", "en": "Open Web Site", "es": "Abrir Sitio Web", "fi": "Avaa verkkosivusto", @@ -47775,7 +47775,7 @@ { "cs": "Mapování portů", "da": "Port Mapping", - "de": "Port-Mapping", + "de": "Port-Zuordnung", "en": "Port Mapping", "es": "Mapeo de Puertos", "fi": "Portin kartoitus", @@ -50109,7 +50109,7 @@ { "cs": "Reléové zařízení", "da": "Relay enhed", - "de": "Relaisgerät", + "de": "Relay-Gerät", "en": "Relay Device", "es": "Dispositivo de Retransmisión", "fi": "Relelaite", @@ -50162,7 +50162,7 @@ { "cs": "Reléové mapování", "da": "Relay Mapping", - "de": "Relaiszuordnung", + "de": "Relay-Zuordnung", "en": "Relay Mapping", "es": "Mapeo de Relés", "fi": "Relekartoitus", @@ -53867,7 +53867,7 @@ { "cs": "S & ettings ...", "da": "S&ettings...", - "de": "Die Einstellungen...", + "de": "Einstellungen...", "en": "S&ettings...", "es": "A&justes...", "fi": "Asetukset...", @@ -60322,7 +60322,7 @@ { "cs": "Zahájena relace přenosu „{0}“ z {1} na {2}", "da": "Startede relay session \\\"{0}\\\" fra {1} til {2}", - "de": "Relaissitzung \\\"{0}\\\" von {1} bis {2} gestartet", + "de": "Relay-Sitzung \\\"{0}\\\" von {1} bis {2} gestartet", "en": "Started relay session \\\"{0}\\\" from {1} to {2}", "es": "Sesión de retransmisión iniciada \\\"{0}\\\" de {1} a {2}", "fi": "Aloitti välitysistunnon \\\"{0}\\\" välillä {1} - {2}", @@ -61541,7 +61541,7 @@ { "cs": "TCP relé", "da": "TCP-relay", - "de": "TCP-Relais", + "de": "TCP-Relay", "en": "TCP relay", "es": "Relé TCP", "fi": "TCP -rele", @@ -64010,7 +64010,7 @@ { "cs": "Žeton", "da": "Token", - "de": "Zeichen", + "de": "Token", "en": "Token", "es": "Token", "fi": "Tunnus", @@ -64767,7 +64767,7 @@ { "cs": "UDP relé", "da": "UDP-relay", - "de": "UDP-Relais", + "de": "UDP-Relay", "en": "UDP relay", "es": "Relé UDP", "fi": "UDP -rele", @@ -68877,8 +68877,8 @@ }, { "cs": "VYHRAJ + L", - "da": "WIN + L.", - "de": "GEWINNEN + L.", + "da": "WIN + L", + "de": "WIN + L", "en": "WIN + L", "es": "WIN + L", "fi": "VOIT + L", @@ -68899,8 +68899,8 @@ }, { "cs": "VYHRAJ + M", - "da": "WIN + M.", - "de": "GEWINNEN + M.", + "da": "WIN + M", + "de": "WIN + M", "en": "WIN + M", "es": "WIN + M", "fi": "VOIT + M", @@ -68922,7 +68922,7 @@ { "cs": "VYHRAJ + R", "da": "WIN + R", - "de": "WIN + R.", + "de": "WIN + R", "en": "WIN + R", "es": "WIN + R", "fi": "VOIT + R", From 8a8d9869dd3ba9a27e906fa456175f5831ce8557 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 28 Jun 2022 11:05:15 -0700 Subject: [PATCH 072/105] Added websocket device to browser frame forwarding, #4172 --- apprelays.js | 108 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 92 insertions(+), 16 deletions(-) diff --git a/apprelays.js b/apprelays.js index f75048fc..3671b167 100644 --- a/apprelays.js +++ b/apprelays.js @@ -229,21 +229,29 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Process a websocket request obj.processWebSocket = function (req, ws) { - //console.log('processWebSocket', req.url); - if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } - parent.lastOperation = obj.lastOperation = Date.now(); + console.log('processWebSocket', req.url); // Mark this tunnel as being a web socket tunnel - obj.isWebSocket = true; + obj.isWebSocket = true; obj.ws = ws; + // Pause the websocket until we get a tunnel connected + obj.ws._socket.pause(); + + // Remove the trailing '/.websocket' if needed + if (req.url.endsWith('/.websocket')) { req.url = req.url.substring(0, req.url.length - 11); } + + if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } + parent.lastOperation = obj.lastOperation = Date.now(); + // Construct the HTTP request and send it out var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; - const blockedHeaders = ['origin', 'host', 'cookie']; // These are headers we do not forward + const blockedHeaders = ['origin', 'host', 'cookie', 'sec-websocket-extensions']; // These are headers we do not forward for (var i in req.headers) { if (blockedHeaders.indexOf(i) == -1) { request += i + ': ' + req.headers[i] + '\r\n'; } } if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. request += '\r\n'; + send(Buffer.from(request)); } @@ -397,7 +405,18 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Check if this HTTP request has a body if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'close')) { obj.socketParseState = 1; } if (obj.socketXHeader['content-length'] != null) { obj.socketParseState = 1; } - if ((obj.socketXHeader["transfer-encoding"] != null) && (obj.socketXHeader["transfer-encoding"].toLowerCase() == 'chunked')) { obj.socketParseState = 1; } + if ((obj.socketXHeader['transfer-encoding'] != null) && (obj.socketXHeader['transfer-encoding'].toLowerCase() == 'chunked')) { obj.socketParseState = 1; } + if (obj.isWebSocket) { + console.log('websocket', obj.socketXHeader); + if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'upgrade')) { + console.log('websocket pass-thru'); + obj.socketParseState = 2; // Switch to decoding websocket frames + obj.ws._socket.resume(); // Resume the browser's websocket + } else { + console.log('websocket failed'); + obj.close(); // Failed to upgrade to websocket + } + } // Forward the HTTP request into the tunnel, if no body is present, close the request. processHttpResponse(obj.socketXHeader, null, (obj.socketParseState == 0)); @@ -417,7 +436,8 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { processHttpResponse(null, data, (obj.socketContentLengthRemaining == 0)); // Send any data we have, if we are done, signal the end of the response if (obj.socketContentLengthRemaining > 0) return; // If more data is needed, return now so we exit the while() loop. csize = 0; // We are done - } else if ((obj.socketXHeader["transfer-encoding"] != null) && (obj.socketXHeader["transfer-encoding"].toLowerCase() == 'chunked')) { + } + else if ((obj.socketXHeader['transfer-encoding'] != null) && (obj.socketXHeader['transfer-encoding'].toLowerCase() == 'chunked')) { // The body is chunked var clen = obj.socketAccumulator.indexOf('\r\n'); if (clen < 0) { return; } // Chunk length not found, exit now and get more data. @@ -438,22 +458,78 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (obj.socketParseState == 2) { // We are in websocket pass-thru mode, decode the websocket frame if (obj.socketAccumulator.length < 2) return; // Need at least 2 bytes to decode a websocket header - console.log('WebSocket frame', obj.socketAccumulator.length, Buffer.from(obj.socketAccumulator, 'binary')); + //console.log('WebSocket frame', obj.socketAccumulator.length, Buffer.from(obj.socketAccumulator, 'binary')); + // Decode the websocket frame const buf = Buffer.from(obj.socketAccumulator, 'binary'); const fin = ((buf[0] & 0x80) != 0); + const rsv = ((buf[0] & 0x70) != 0); const op = buf[0] & 0x0F; const mask = ((buf[1] & 0x80) != 0); - const len = buf[1] & 0x7F; - console.log('fin', fin); - console.log('op', op); - console.log('mask', mask); - console.log('len', len); + var len = buf[1] & 0x7F; - // Connection close - if ((fin == true) || (op == 8)) { obj.close(); } + // Calculate the total length + var payload = null; + if (len < 126) { + // 1 byte length + if (buf.length < (2 + len)) return; // Insuffisent data + payload = buf.slice(2, 2 + len); + obj.socketAccumulator = obj.socketAccumulator.substring(2 + len); // Remove data from accumulator + } else if (len == 126) { + // 2 byte length + if (buf.length < 4) return; + len = buf.readInt16BE(2); + if (buf.length < (4 + len)) return; // Insuffisent data + payload = buf.slice(4, 4 + len); + obj.socketAccumulator = obj.socketAccumulator.substring(4 + len); // Remove data from accumulator + } if (len == 127) { + // 8 byte length + if (buf.length < 10) return; + len = buf.readInt32BE(2); + if (len > 0) { obj.close(); return; } // This frame is larger than 4 gigabyte, close the connection. + len = buf.readInt32BE(6); + if (buf.length < (10 + len)) return; // Insuffisent data + payload = buf.slice(10, 10 + len); + obj.socketAccumulator = obj.socketAccumulator.substring(10 + len); // Remove data from accumulator + } + if (buf.length < len) return; - return; + // If the mask or reserved bit are true, we are not decoding this right, close the connection. + if ((mask == true) || (rsv == true)) { obj.close(); return; } + + // TODO: If FIN is not set, we need to add support for continue frames + + // Perform operation + switch (op) { + case 0: { // Continue frame + //console.log('continue', payload.length); + break; + } + case 1: { // Text frame + //console.log('text', payload.length); + try { obj.ws.send(payload.toString('binary')); } catch (ex) { } + break; + } + case 2: { // Binary frame + //console.log('binary', payload.length); + try { obj.ws.send(payload); } catch (ex) { } + break; + } + case 8: { // Connection close + obj.close(); + return; + } + case 9: { // Ping frame + //console.log('ping', payload.length); + // TODO + break; + } + case 10: { // Pong frame + //console.log('pong', payload.length); + // TODO + break; + } + } } } } From b51763798167d6a9e95c520a3680f2119b2390d4 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Tue, 28 Jun 2022 13:01:56 -0700 Subject: [PATCH 073/105] Fixed 2 issues causing Agent Update to fail on very old agents 1. Added null check on callback, because old agents may return null 2. if needStreamFix was set on an old agent, and hash check fails, added retry without fix, as the fix was not needed on some very old agents. 3. Updated retry timeout to 20 seconds instead of 60 seconds --- agents/recoverycore.js | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/agents/recoverycore.js b/agents/recoverycore.js index c0bbfc66..0f4341fb 100644 --- a/agents/recoverycore.js +++ b/agents/recoverycore.js @@ -7,7 +7,6 @@ var tunnels = {}; var fs = require('fs'); var needStreamFix = (new Date(process.versions.meshAgent) < new Date('2020-01-21 13:27:45.000-08:00')); - try { Object.defineProperty(Array.prototype, 'find', { @@ -553,15 +552,15 @@ function agentUpdate_Start(updateurl, updateoptions) { if (process.platform == 'win32') { // Special Processing for Temporary/Console Mode Agents on Windows - var parms = windows_getCommandLine(); - if (parms.findIndex(function (val) { return (val.toUpperCase() == 'RUN' || val.toUpperCase() == 'CONNECT');})>=0) + var parms = windows_getCommandLine(); // This uses FFI to fetch the command line parameters that the agent was started with + if (parms.findIndex(function (val) { return (val != null && (val.toUpperCase() == 'RUN' || val.toUpperCase() == 'CONNECT')); }) >= 0) { // This is a Temporary/Console Mode Agent sendConsoleText('This is a temporary/console agent, checking for conflicts with background services...'); // Check to see if our binary conflicts with an installed agent var agents = _getPotentialServiceNames(); - if(_getPotentialServiceNames().length>0) + if (_getPotentialServiceNames().length > 0) { sendConsoleText('Self update cannot continue because the installed agent (' + agents[0] + ') conflicts with the currently running Temp/Console agent...', sessionid); return; @@ -648,11 +647,25 @@ function agentUpdate_Start(updateurl, updateoptions) { sendAgentMessage('Self Update FAILED because the downloaded agent FAILED hash check (' + agentUpdate_Start._retryCount + '), URL: ' + updateurl, 3); agentUpdate_Start._selfupdate = null; + try + { + // We are clearing these two properties, becuase some older agents may not cleanup correctly causing problems with the retry + require('https').globalAgent.sockets = {}; + require('https').globalAgent.requests = {}; + } + catch(z) + {} + if (needStreamFix) + { + sendConsoleText('This is an older agent that may have an httpstream bug. On next retry will try to fetch the update differently...'); + needStreamFix = false; + } + if (agentUpdate_Start._retryCount < 4) { // Retry the download again - sendConsoleText('Self Update will try again in 60 seconds...', sessionid); - agentUpdate_Start._timeout = setTimeout(agentUpdate_Start, 60000, updateurl, updateoptions); + sendConsoleText('Self Update will try again in 20 seconds...', sessionid); + agentUpdate_Start._timeout = setTimeout(agentUpdate_Start, 20000, updateurl, updateoptions); } else { @@ -900,7 +913,8 @@ function onTunnelControlData(data, ws) { } -require('MeshAgent').AddCommandHandler(function (data) { +require('MeshAgent').AddCommandHandler(function (data) +{ if (typeof data == 'object') { // If this is a console command, parse it and call the console handler switch (data.action) { From b41fdec922b8b6bb9fc6d2e7fd3c0f24b7f03e1b Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 28 Jun 2022 14:20:13 -0700 Subject: [PATCH 074/105] Added browser to device websocket relay, #4172 --- apprelays.js | 53 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/apprelays.js b/apprelays.js index 3671b167..008c6601 100644 --- a/apprelays.js +++ b/apprelays.js @@ -229,7 +229,8 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Process a websocket request obj.processWebSocket = function (req, ws) { - console.log('processWebSocket', req.url); + if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } + parent.lastOperation = obj.lastOperation = Date.now(); // Mark this tunnel as being a web socket tunnel obj.isWebSocket = true; @@ -239,10 +240,9 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.ws._socket.pause(); // Remove the trailing '/.websocket' if needed - if (req.url.endsWith('/.websocket')) { req.url = req.url.substring(0, req.url.length - 11); } - - if (obj.relayActive == false) { console.log("ERROR: Attempt to use an unconnected tunnel"); return false; } - parent.lastOperation = obj.lastOperation = Date.now(); + var baseurl = req.url, i = req.url.indexOf('?'); + if (i > 0) { baseurl = req.url.substring(0, i); } + if (baseurl.endsWith('/.websocket')) { req.url = baseurl.substring(0, baseurl.length - 11) + ((i < 1) ? '' : req.url.substring(i)); } // Construct the HTTP request and send it out var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; @@ -251,8 +251,46 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { for (var i in req.headers) { if (blockedHeaders.indexOf(i) == -1) { request += i + ': ' + req.headers[i] + '\r\n'; } } if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. request += '\r\n'; - send(Buffer.from(request)); + + // Hook up the websocket events + obj.ws.on('message', function (data) { + // Setup opcode and payload + var op = 2, payload = data; + if (typeof data == 'string') { op = 1; payload = Buffer.from(data, 'binary'); } // Text frame + + // Select a random mask + const mask = parent.parent.crypto.randomBytes(4) + + // Setup header and mask + var header = null; + if (data.length < 126) { + header = Buffer.alloc(6); // Header (2) + Mask (4) + header[0] = 0x80 + op; // FIN + OP + header[1] = 0x80 + data.length; // Mask + Length + mask.copy(header, 2, 0, 4); // Copy the mask + } else if (data.length <= 0xFFFF) { + header = Buffer.alloc(8); // Header (2) + Length (2) + Mask (4) + header[0] = 0x80 + op; // FIN + OP + header[1] = 0x80 + 126; // Mask + 126 + header.writeInt16BE(data.length, 2); // Payload size + mask.copy(header, 4, 0, 4); // Copy the mask + } else { + header = Buffer.alloc(14); // Header (2) + Length (8) + Mask (4) + header[0] = 0x80 + op; // FIN + OP + header[1] = 0x80 + 127; // Mask + 127 + header.writeInt32BE(data.length, 6); // Payload size + mask.copy(header, 10, 0, 4); // Copy the mask + } + + // Mask the payload + for (var i = 0; i < payload.length; i++) { payload[i] = (payload[i] ^ mask[i % 4]); } + + // Send the frame + send(Buffer.concat([header, payload])); + }); + obj.ws.on('close', function () { obj.close(); }); + obj.ws.on('error', function (err) { obj.close(); }); } // Disconnect @@ -407,13 +445,10 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (obj.socketXHeader['content-length'] != null) { obj.socketParseState = 1; } if ((obj.socketXHeader['transfer-encoding'] != null) && (obj.socketXHeader['transfer-encoding'].toLowerCase() == 'chunked')) { obj.socketParseState = 1; } if (obj.isWebSocket) { - console.log('websocket', obj.socketXHeader); if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'upgrade')) { - console.log('websocket pass-thru'); obj.socketParseState = 2; // Switch to decoding websocket frames obj.ws._socket.resume(); // Resume the browser's websocket } else { - console.log('websocket failed'); obj.close(); // Failed to upgrade to websocket } } From 0637412d1b94c6c175b3057f06ef60f7acae09c2 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 28 Jun 2022 15:20:05 -0700 Subject: [PATCH 075/105] Fixed Web-RDP when a default user is set and no users are logged in. --- apprelays.js | 12 +++++++++--- webserver.js | 10 ++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apprelays.js b/apprelays.js index 008c6601..3956c7c3 100644 --- a/apprelays.js +++ b/apprelays.js @@ -244,6 +244,8 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (i > 0) { baseurl = req.url.substring(0, i); } if (baseurl.endsWith('/.websocket')) { req.url = baseurl.substring(0, baseurl.length - 11) + ((i < 1) ? '' : req.url.substring(i)); } + //console.log('processWebSocket', obj.tunnelId, req.url); + // Construct the HTTP request and send it out var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; @@ -287,6 +289,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { for (var i = 0; i < payload.length; i++) { payload[i] = (payload[i] ^ mask[i % 4]); } // Send the frame + //console.log(obj.tunnelId, '-->', op, payload.length); send(Buffer.concat([header, payload])); }); obj.ws.on('close', function () { obj.close(); }); @@ -502,6 +505,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { const op = buf[0] & 0x0F; const mask = ((buf[1] & 0x80) != 0); var len = buf[1] & 0x7F; + //console.log(obj.tunnelId, 'fin: ' + fin + ', rsv: ' + rsv + ', op: ' + op + ', len: ' + len); // Calculate the total length var payload = null; @@ -513,16 +517,16 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { } else if (len == 126) { // 2 byte length if (buf.length < 4) return; - len = buf.readInt16BE(2); + len = buf.readUInt16BE(2); if (buf.length < (4 + len)) return; // Insuffisent data payload = buf.slice(4, 4 + len); obj.socketAccumulator = obj.socketAccumulator.substring(4 + len); // Remove data from accumulator } if (len == 127) { // 8 byte length if (buf.length < 10) return; - len = buf.readInt32BE(2); + len = buf.readUInt32BE(2); if (len > 0) { obj.close(); return; } // This frame is larger than 4 gigabyte, close the connection. - len = buf.readInt32BE(6); + len = buf.readUInt32BE(6); if (buf.length < (10 + len)) return; // Insuffisent data payload = buf.slice(10, 10 + len); obj.socketAccumulator = obj.socketAccumulator.substring(10 + len); // Remove data from accumulator @@ -533,6 +537,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if ((mask == true) || (rsv == true)) { obj.close(); return; } // TODO: If FIN is not set, we need to add support for continue frames + //console.log(obj.tunnelId, '<--', op, payload ? payload.length : 0); // Perform operation switch (op) { @@ -585,6 +590,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { else if (blockHeaders.indexOf(i) == -1) { obj.res.set(i, header[i]); } // Set the headers if not blocked } obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future + obj.res.set('Cache-Control', 'no-cache'); // Tell the browser not to cache the responses since since the relay port can be used for many relays } // If there is data, send it diff --git a/webserver.js b/webserver.js index 10e033d7..70b57ff6 100644 --- a/webserver.js +++ b/webserver.js @@ -6072,7 +6072,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF obj.app.ws(url + 'mstscrelay.ashx', function (ws, req) { const domain = getDomain(req); if (domain == null) { parent.debug('web', 'mstsc: failed checks.'); try { ws.close(); } catch (e) { } return; } - require('./apprelays.js').CreateMstscRelay(obj, obj.db, ws, req, obj.args, domain); + // If no user is logged in and we have a default user, set it now. + if ((req.session.userid == null) && (typeof obj.args.user == 'string') && (obj.users['user/' + domain.id + '/' + obj.args.user.toLowerCase()])) { req.session.userid = 'user/' + domain.id + '/' + obj.args.user.toLowerCase(); } + try { require('./apprelays.js').CreateMstscRelay(obj, obj.db, ws, req, obj.args, domain); } catch (ex) { console.log(ex); } }); } @@ -6082,9 +6084,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF obj.app.ws(url + 'sshrelay.ashx', function (ws, req) { const domain = getDomain(req); if (domain == null) { parent.debug('web', 'ssh: failed checks.'); try { ws.close(); } catch (e) { } return; } - try { - require('./apprelays.js').CreateSshRelay(obj, obj.db, ws, req, obj.args, domain); - } catch (ex) { console.log(ex); } + // If no user is logged in and we have a default user, set it now. + if ((req.session.userid == null) && (typeof obj.args.user == 'string') && (obj.users['user/' + domain.id + '/' + obj.args.user.toLowerCase()])) { req.session.userid = 'user/' + domain.id + '/' + obj.args.user.toLowerCase(); } + try { require('./apprelays.js').CreateSshRelay(obj, obj.db, ws, req, obj.args, domain); } catch (ex) { console.log(ex); } }); obj.app.ws(url + 'sshterminalrelay.ashx', function (ws, req) { PerformWSSessionAuth(ws, req, true, function (ws1, req1, domain, user, cookie, authData) { From a383bd1cb3f794c59dbc88c5243aa54d15e8651d Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 28 Jun 2022 15:42:52 -0700 Subject: [PATCH 076/105] Web relay websocket ping/pong forwarding, #4172 --- apprelays.js | 102 ++++++++++++++++++++++----------------------------- 1 file changed, 43 insertions(+), 59 deletions(-) diff --git a/apprelays.js b/apprelays.js index 3956c7c3..2002cea4 100644 --- a/apprelays.js +++ b/apprelays.js @@ -260,42 +260,48 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Setup opcode and payload var op = 2, payload = data; if (typeof data == 'string') { op = 1; payload = Buffer.from(data, 'binary'); } // Text frame - - // Select a random mask - const mask = parent.parent.crypto.randomBytes(4) - - // Setup header and mask - var header = null; - if (data.length < 126) { - header = Buffer.alloc(6); // Header (2) + Mask (4) - header[0] = 0x80 + op; // FIN + OP - header[1] = 0x80 + data.length; // Mask + Length - mask.copy(header, 2, 0, 4); // Copy the mask - } else if (data.length <= 0xFFFF) { - header = Buffer.alloc(8); // Header (2) + Length (2) + Mask (4) - header[0] = 0x80 + op; // FIN + OP - header[1] = 0x80 + 126; // Mask + 126 - header.writeInt16BE(data.length, 2); // Payload size - mask.copy(header, 4, 0, 4); // Copy the mask - } else { - header = Buffer.alloc(14); // Header (2) + Length (8) + Mask (4) - header[0] = 0x80 + op; // FIN + OP - header[1] = 0x80 + 127; // Mask + 127 - header.writeInt32BE(data.length, 6); // Payload size - mask.copy(header, 10, 0, 4); // Copy the mask - } - - // Mask the payload - for (var i = 0; i < payload.length; i++) { payload[i] = (payload[i] ^ mask[i % 4]); } - - // Send the frame - //console.log(obj.tunnelId, '-->', op, payload.length); - send(Buffer.concat([header, payload])); + sendWebSocketFrameToDevice(op, payload); }); + + obj.ws.on('ping', function (data) { sendWebSocketFrameToDevice(9, data); }); // Forward ping frame + obj.ws.on('pong', function (data) { sendWebSocketFrameToDevice(10, data); }); // Forward pong frame obj.ws.on('close', function () { obj.close(); }); obj.ws.on('error', function (err) { obj.close(); }); } + function sendWebSocketFrameToDevice(op, payload) { + // Select a random mask + const mask = parent.parent.crypto.randomBytes(4) + + // Setup header and mask + var header = null; + if (payload.length < 126) { + header = Buffer.alloc(6); // Header (2) + Mask (4) + header[0] = 0x80 + op; // FIN + OP + header[1] = 0x80 + payload.length; // Mask + Length + mask.copy(header, 2, 0, 4); // Copy the mask + } else if (payload.length <= 0xFFFF) { + header = Buffer.alloc(8); // Header (2) + Length (2) + Mask (4) + header[0] = 0x80 + op; // FIN + OP + header[1] = 0x80 + 126; // Mask + 126 + header.writeInt16BE(payload.length, 2); // Payload size + mask.copy(header, 4, 0, 4); // Copy the mask + } else { + header = Buffer.alloc(14); // Header (2) + Length (8) + Mask (4) + header[0] = 0x80 + op; // FIN + OP + header[1] = 0x80 + 127; // Mask + 127 + header.writeInt32BE(payload.length, 6); // Payload size + mask.copy(header, 10, 0, 4); // Copy the mask + } + + // Mask the payload + for (var i = 0; i < payload.length; i++) { payload[i] = (payload[i] ^ mask[i % 4]); } + + // Send the frame + //console.log(obj.tunnelId, '-->', op, payload.length); + send(Buffer.concat([header, payload])); + } + // Disconnect obj.close = function (arg) { if (obj.closed == true) return; @@ -541,34 +547,12 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Perform operation switch (op) { - case 0: { // Continue frame - //console.log('continue', payload.length); - break; - } - case 1: { // Text frame - //console.log('text', payload.length); - try { obj.ws.send(payload.toString('binary')); } catch (ex) { } - break; - } - case 2: { // Binary frame - //console.log('binary', payload.length); - try { obj.ws.send(payload); } catch (ex) { } - break; - } - case 8: { // Connection close - obj.close(); - return; - } - case 9: { // Ping frame - //console.log('ping', payload.length); - // TODO - break; - } - case 10: { // Pong frame - //console.log('pong', payload.length); - // TODO - break; - } + case 0: { break; } // Continue frame (TODO) + case 1: { try { obj.ws.send(payload.toString('binary')); } catch (ex) { } break; } // Text frame + case 2: { try { obj.ws.send(payload); } catch (ex) { } break; } // Binary frame + case 8: { obj.close(); return; } // Connection close + case 9: { try { obj.ws.ping(payload); } catch (ex) { } break; } // Ping frame + case 10: { try { obj.ws.pong(payload); } catch (ex) { } break; } // Pong frame } } } From edcc64548eba67cb2c41c16dfc5fa679f8a4b966 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 28 Jun 2022 17:51:18 -0700 Subject: [PATCH 077/105] Details tab improvement when displaying network information. --- views/default-mobile.handlebars | 21 +++++++-------------- views/default.handlebars | 21 +++++++-------------- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars index 9ac93927..0bf905c2 100644 --- a/views/default-mobile.handlebars +++ b/views/default-mobile.handlebars @@ -5772,20 +5772,13 @@ } } for (var j = 0; j < m.length; j++) { - var iplayer = m[j]; - if (iplayer.family == 'IPv4') { - if (iplayer.gateway && iplayer.netmask) { - x += addDetailItem("IPv4 Layer", format("{0}, Mask: {1}, Gateway: {2}", EscapeHtml(iplayer.address), EscapeHtml(iplayer.netmask), EscapeHtml(iplayer.gateway))); - } else { - if (iplayer.address) { x += addDetailItem("IPv4 Layer", format("{0}", EscapeHtml(iplayer.address))); } - } - } - if (iplayer.family == 'IPv6') { - if (iplayer.gateway && iplayer.netmask) { - x += addDetailItem("IPv6 Layer", format("{0}, Mask: {1}, Gateway: {2}", EscapeHtml(iplayer.address), EscapeHtml(iplayer.netmask), EscapeHtml(iplayer.gateway))); - } else { - if (iplayer.address) { x += addDetailItem("IPv6 Layer", format("{0}", EscapeHtml(iplayer.address))); } - } + var iplayer = m[j], items = []; + if (iplayer.address) { items.push(format("IP: {0}", EscapeHtml(iplayer.address))); } + if (iplayer.netmask) { items.push(format("Mask: {0}", EscapeHtml(iplayer.netmask))); } + if (iplayer.gateway) { items.push(format("Gateway: {0}", EscapeHtml(iplayer.gateway))); } + if (items.length > 0) { + if (iplayer.family == 'IPv4') { x += addDetailItem("IPv4 Layer", items.join(", ")); } + if (iplayer.family == 'IPv6') { x += addDetailItem("IPv6 Layer", items.join(", ")); } } } x += ''; diff --git a/views/default.handlebars b/views/default.handlebars index 714ef239..10bc78c6 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -11190,20 +11190,13 @@ } } for (var j = 0; j < m.length; j++) { - var iplayer = m[j]; - if (iplayer.family == 'IPv4') { - if (iplayer.gateway && iplayer.netmask) { - x += addDetailItem("IPv4 Layer", format("IP: {0}, Mask: {1}, Gateway: {2}", EscapeHtml(iplayer.address), EscapeHtml(iplayer.netmask), EscapeHtml(iplayer.gateway))); - } else { - if (iplayer.address) { x += addDetailItem("IPv4 Layer", format("IP: {0}", EscapeHtml(iplayer.address))); } - } - } - if (iplayer.family == 'IPv6') { - if (iplayer.gateway && iplayer.netmask) { - x += addDetailItem("IPv6 Layer", format("IP: {0}, Mask: {1}, Gateway: {2}", EscapeHtml(iplayer.address), EscapeHtml(iplayer.netmask), EscapeHtml(iplayer.gateway))); - } else { - if (iplayer.address) { x += addDetailItem("IPv6 Layer", format("IP: {0}", EscapeHtml(iplayer.address))); } - } + var iplayer = m[j], items = []; + if (iplayer.address) { items.push(format("IP: {0}", EscapeHtml(iplayer.address))); } + if (iplayer.netmask) { items.push(format("Mask: {0}", EscapeHtml(iplayer.netmask))); } + if (iplayer.gateway) { items.push(format("Gateway: {0}", EscapeHtml(iplayer.gateway))); } + if (items.length > 0) { + if (iplayer.family == 'IPv4') { x += addDetailItem("IPv4 Layer", items.join(", ")); } + if (iplayer.family == 'IPv6') { x += addDetailItem("IPv6 Layer", items.join(", ")); } } } x += ''; From 5d93787164071a0bca365767c209238bb6bb38b2 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 28 Jun 2022 18:05:30 -0700 Subject: [PATCH 078/105] Version 1.0.42 --- emails/translations/account-check-min_cs.html | 1 + emails/translations/account-check-min_da.html | 1 + emails/translations/account-check-min_de.html | 1 + emails/translations/account-check-min_es.html | 1 + emails/translations/account-check-min_fi.html | 1 + emails/translations/account-check-min_fr.html | 1 + emails/translations/account-check-min_hi.html | 1 + emails/translations/account-check-min_it.html | 1 + emails/translations/account-check-min_ja.html | 1 + emails/translations/account-check-min_ko.html | 1 + emails/translations/account-check-min_nl.html | 1 + emails/translations/account-check-min_pl.html | 1 + .../translations/account-check-min_pt-br.html | 1 + emails/translations/account-check-min_pt.html | 1 + emails/translations/account-check-min_ru.html | 1 + emails/translations/account-check-min_sv.html | 1 + emails/translations/account-check-min_tr.html | 1 + .../account-check-min_zh-chs.html | 1 + .../account-check-min_zh-cht.html | 1 + .../translations/account-invite-min_cs.html | 1 + .../translations/account-invite-min_da.html | 1 + .../translations/account-invite-min_de.html | 1 + .../translations/account-invite-min_es.html | 1 + .../translations/account-invite-min_fi.html | 1 + .../translations/account-invite-min_fr.html | 1 + .../translations/account-invite-min_hi.html | 1 + .../translations/account-invite-min_it.html | 1 + .../translations/account-invite-min_ja.html | 1 + .../translations/account-invite-min_ko.html | 1 + .../translations/account-invite-min_nl.html | 1 + .../translations/account-invite-min_pl.html | 1 + .../account-invite-min_pt-br.html | 1 + .../translations/account-invite-min_pt.html | 1 + .../translations/account-invite-min_ru.html | 1 + .../translations/account-invite-min_sv.html | 1 + .../translations/account-invite-min_tr.html | 1 + .../account-invite-min_zh-chs.html | 1 + .../account-invite-min_zh-cht.html | 1 + emails/translations/account-login-min_cs.html | 1 + emails/translations/account-login-min_da.html | 1 + emails/translations/account-login-min_de.html | 1 + emails/translations/account-login-min_es.html | 1 + emails/translations/account-login-min_fi.html | 1 + emails/translations/account-login-min_fr.html | 1 + emails/translations/account-login-min_hi.html | 1 + emails/translations/account-login-min_it.html | 1 + emails/translations/account-login-min_ja.html | 1 + emails/translations/account-login-min_ko.html | 1 + emails/translations/account-login-min_nl.html | 1 + emails/translations/account-login-min_pl.html | 1 + .../translations/account-login-min_pt-br.html | 1 + emails/translations/account-login-min_pt.html | 1 + emails/translations/account-login-min_ru.html | 1 + emails/translations/account-login-min_sv.html | 1 + emails/translations/account-login-min_tr.html | 1 + .../account-login-min_zh-chs.html | 1 + .../account-login-min_zh-cht.html | 1 + emails/translations/account-reset-min_cs.html | 1 + emails/translations/account-reset-min_da.html | 1 + emails/translations/account-reset-min_de.html | 1 + emails/translations/account-reset-min_es.html | 1 + emails/translations/account-reset-min_fi.html | 1 + emails/translations/account-reset-min_fr.html | 1 + emails/translations/account-reset-min_hi.html | 1 + emails/translations/account-reset-min_it.html | 1 + emails/translations/account-reset-min_ja.html | 1 + emails/translations/account-reset-min_ko.html | 1 + emails/translations/account-reset-min_nl.html | 1 + emails/translations/account-reset-min_pl.html | 1 + .../translations/account-reset-min_pt-br.html | 1 + emails/translations/account-reset-min_pt.html | 1 + emails/translations/account-reset-min_ru.html | 1 + emails/translations/account-reset-min_sv.html | 1 + emails/translations/account-reset-min_tr.html | 1 + .../account-reset-min_zh-chs.html | 1 + .../account-reset-min_zh-cht.html | 1 + emails/translations/device-notify-min_cs.html | 1 + emails/translations/device-notify-min_da.html | 1 + emails/translations/device-notify-min_de.html | 1 + emails/translations/device-notify-min_es.html | 1 + emails/translations/device-notify-min_fi.html | 1 + emails/translations/device-notify-min_fr.html | 1 + emails/translations/device-notify-min_hi.html | 1 + emails/translations/device-notify-min_it.html | 1 + emails/translations/device-notify-min_ja.html | 1 + emails/translations/device-notify-min_ko.html | 1 + emails/translations/device-notify-min_nl.html | 1 + emails/translations/device-notify-min_pl.html | 1 + .../translations/device-notify-min_pt-br.html | 1 + emails/translations/device-notify-min_pt.html | 1 + emails/translations/device-notify-min_ru.html | 1 + emails/translations/device-notify-min_sv.html | 1 + emails/translations/device-notify-min_tr.html | 1 + .../device-notify-min_zh-chs.html | 1 + .../device-notify-min_zh-cht.html | 1 + emails/translations/mesh-invite-min_cs.html | 1 + emails/translations/mesh-invite-min_da.html | 1 + emails/translations/mesh-invite-min_de.html | 1 + emails/translations/mesh-invite-min_es.html | 1 + emails/translations/mesh-invite-min_fi.html | 1 + emails/translations/mesh-invite-min_fr.html | 1 + emails/translations/mesh-invite-min_hi.html | 1 + emails/translations/mesh-invite-min_it.html | 1 + emails/translations/mesh-invite-min_ja.html | 1 + emails/translations/mesh-invite-min_ko.html | 1 + emails/translations/mesh-invite-min_nl.html | 1 + emails/translations/mesh-invite-min_pl.html | 1 + .../translations/mesh-invite-min_pt-br.html | 1 + emails/translations/mesh-invite-min_pt.html | 1 + emails/translations/mesh-invite-min_ru.html | 1 + emails/translations/mesh-invite-min_sv.html | 1 + emails/translations/mesh-invite-min_tr.html | 1 + .../translations/mesh-invite-min_zh-chs.html | 1 + .../translations/mesh-invite-min_zh-cht.html | 1 + package.json | 2 +- translate/translate.json | 5630 +++++++++-------- 116 files changed, 2938 insertions(+), 2808 deletions(-) create mode 100644 emails/translations/account-check-min_cs.html create mode 100644 emails/translations/account-check-min_da.html create mode 100644 emails/translations/account-check-min_de.html create mode 100644 emails/translations/account-check-min_es.html create mode 100644 emails/translations/account-check-min_fi.html create mode 100644 emails/translations/account-check-min_fr.html create mode 100644 emails/translations/account-check-min_hi.html create mode 100644 emails/translations/account-check-min_it.html create mode 100644 emails/translations/account-check-min_ja.html create mode 100644 emails/translations/account-check-min_ko.html create mode 100644 emails/translations/account-check-min_nl.html create mode 100644 emails/translations/account-check-min_pl.html create mode 100644 emails/translations/account-check-min_pt-br.html create mode 100644 emails/translations/account-check-min_pt.html create mode 100644 emails/translations/account-check-min_ru.html create mode 100644 emails/translations/account-check-min_sv.html create mode 100644 emails/translations/account-check-min_tr.html create mode 100644 emails/translations/account-check-min_zh-chs.html create mode 100644 emails/translations/account-check-min_zh-cht.html create mode 100644 emails/translations/account-invite-min_cs.html create mode 100644 emails/translations/account-invite-min_da.html create mode 100644 emails/translations/account-invite-min_de.html create mode 100644 emails/translations/account-invite-min_es.html create mode 100644 emails/translations/account-invite-min_fi.html create mode 100644 emails/translations/account-invite-min_fr.html create mode 100644 emails/translations/account-invite-min_hi.html create mode 100644 emails/translations/account-invite-min_it.html create mode 100644 emails/translations/account-invite-min_ja.html create mode 100644 emails/translations/account-invite-min_ko.html create mode 100644 emails/translations/account-invite-min_nl.html create mode 100644 emails/translations/account-invite-min_pl.html create mode 100644 emails/translations/account-invite-min_pt-br.html create mode 100644 emails/translations/account-invite-min_pt.html create mode 100644 emails/translations/account-invite-min_ru.html create mode 100644 emails/translations/account-invite-min_sv.html create mode 100644 emails/translations/account-invite-min_tr.html create mode 100644 emails/translations/account-invite-min_zh-chs.html create mode 100644 emails/translations/account-invite-min_zh-cht.html create mode 100644 emails/translations/account-login-min_cs.html create mode 100644 emails/translations/account-login-min_da.html create mode 100644 emails/translations/account-login-min_de.html create mode 100644 emails/translations/account-login-min_es.html create mode 100644 emails/translations/account-login-min_fi.html create mode 100644 emails/translations/account-login-min_fr.html create mode 100644 emails/translations/account-login-min_hi.html create mode 100644 emails/translations/account-login-min_it.html create mode 100644 emails/translations/account-login-min_ja.html create mode 100644 emails/translations/account-login-min_ko.html create mode 100644 emails/translations/account-login-min_nl.html create mode 100644 emails/translations/account-login-min_pl.html create mode 100644 emails/translations/account-login-min_pt-br.html create mode 100644 emails/translations/account-login-min_pt.html create mode 100644 emails/translations/account-login-min_ru.html create mode 100644 emails/translations/account-login-min_sv.html create mode 100644 emails/translations/account-login-min_tr.html create mode 100644 emails/translations/account-login-min_zh-chs.html create mode 100644 emails/translations/account-login-min_zh-cht.html create mode 100644 emails/translations/account-reset-min_cs.html create mode 100644 emails/translations/account-reset-min_da.html create mode 100644 emails/translations/account-reset-min_de.html create mode 100644 emails/translations/account-reset-min_es.html create mode 100644 emails/translations/account-reset-min_fi.html create mode 100644 emails/translations/account-reset-min_fr.html create mode 100644 emails/translations/account-reset-min_hi.html create mode 100644 emails/translations/account-reset-min_it.html create mode 100644 emails/translations/account-reset-min_ja.html create mode 100644 emails/translations/account-reset-min_ko.html create mode 100644 emails/translations/account-reset-min_nl.html create mode 100644 emails/translations/account-reset-min_pl.html create mode 100644 emails/translations/account-reset-min_pt-br.html create mode 100644 emails/translations/account-reset-min_pt.html create mode 100644 emails/translations/account-reset-min_ru.html create mode 100644 emails/translations/account-reset-min_sv.html create mode 100644 emails/translations/account-reset-min_tr.html create mode 100644 emails/translations/account-reset-min_zh-chs.html create mode 100644 emails/translations/account-reset-min_zh-cht.html create mode 100644 emails/translations/device-notify-min_cs.html create mode 100644 emails/translations/device-notify-min_da.html create mode 100644 emails/translations/device-notify-min_de.html create mode 100644 emails/translations/device-notify-min_es.html create mode 100644 emails/translations/device-notify-min_fi.html create mode 100644 emails/translations/device-notify-min_fr.html create mode 100644 emails/translations/device-notify-min_hi.html create mode 100644 emails/translations/device-notify-min_it.html create mode 100644 emails/translations/device-notify-min_ja.html create mode 100644 emails/translations/device-notify-min_ko.html create mode 100644 emails/translations/device-notify-min_nl.html create mode 100644 emails/translations/device-notify-min_pl.html create mode 100644 emails/translations/device-notify-min_pt-br.html create mode 100644 emails/translations/device-notify-min_pt.html create mode 100644 emails/translations/device-notify-min_ru.html create mode 100644 emails/translations/device-notify-min_sv.html create mode 100644 emails/translations/device-notify-min_tr.html create mode 100644 emails/translations/device-notify-min_zh-chs.html create mode 100644 emails/translations/device-notify-min_zh-cht.html create mode 100644 emails/translations/mesh-invite-min_cs.html create mode 100644 emails/translations/mesh-invite-min_da.html create mode 100644 emails/translations/mesh-invite-min_de.html create mode 100644 emails/translations/mesh-invite-min_es.html create mode 100644 emails/translations/mesh-invite-min_fi.html create mode 100644 emails/translations/mesh-invite-min_fr.html create mode 100644 emails/translations/mesh-invite-min_hi.html create mode 100644 emails/translations/mesh-invite-min_it.html create mode 100644 emails/translations/mesh-invite-min_ja.html create mode 100644 emails/translations/mesh-invite-min_ko.html create mode 100644 emails/translations/mesh-invite-min_nl.html create mode 100644 emails/translations/mesh-invite-min_pl.html create mode 100644 emails/translations/mesh-invite-min_pt-br.html create mode 100644 emails/translations/mesh-invite-min_pt.html create mode 100644 emails/translations/mesh-invite-min_ru.html create mode 100644 emails/translations/mesh-invite-min_sv.html create mode 100644 emails/translations/mesh-invite-min_tr.html create mode 100644 emails/translations/mesh-invite-min_zh-chs.html create mode 100644 emails/translations/mesh-invite-min_zh-cht.html diff --git a/emails/translations/account-check-min_cs.html b/emails/translations/account-check-min_cs.html new file mode 100644 index 00000000..69d4360d --- /dev/null +++ b/emails/translations/account-check-min_cs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Ověření e-mailem
[[[SERVERNAME]]] - Ověření

Ahoj [[[USERNAME]]], [[[SERVERNAME]]] požaduje ověření e-mailem a dokončete proces kliknutím na následující odkaz.

Kliknutím sem ověřte svou e-mailovou adresu.

Pokud jste tento požadavek nezačali, ignorujte tento e-mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_da.html b/emails/translations/account-check-min_da.html new file mode 100644 index 00000000..26a9e0dd --- /dev/null +++ b/emails/translations/account-check-min_da.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Email verificering
[[[SERVERNAME]]] - Verificering

Hej [[[USERNAME]], [[[SERVERNAME]]] anmoder om e-mailbekræftelse, klik på følgende link for at fuldføre processen.

Klik her for at bekræfte din e-mailadresse.

Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_de.html b/emails/translations/account-check-min_de.html new file mode 100644 index 00000000..529d1758 --- /dev/null +++ b/emails/translations/account-check-min_de.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - E-Mail-Überprüfung
[[[SERVERNAME]]] - Überprüfung

Hallo [[[USERNAME]]], [[[SERVERNAME]]] Wenn Sie eine E-Mail-Bestätigung anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.

Klicken Sie hier, um Ihre E-Mail-Adresse zu bestätigen.

Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.
\ No newline at end of file diff --git a/emails/translations/account-check-min_es.html b/emails/translations/account-check-min_es.html new file mode 100644 index 00000000..457ea70d --- /dev/null +++ b/emails/translations/account-check-min_es.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Verificación de Correo Electrónico
[[[SERVERNAME]]] - Verificación

Hola [[[USERNAME]]], [[[SERVERNAME]]] esta solicitando la verificación por correo electrónico, haz clic en el siguiente enlace para completar el proceso.

Haz clic aquí para verificar tu dirección de correo electrónico.

Si tu no iniciaste este requerimiento, por favor ignora este correo.
\ No newline at end of file diff --git a/emails/translations/account-check-min_fi.html b/emails/translations/account-check-min_fi.html new file mode 100644 index 00000000..54b03dd6 --- /dev/null +++ b/emails/translations/account-check-min_fi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Sähköpostivarmistus
[[[SERVERNAME]]] - Todentaminen

Moi [[[USERNAME]]], [[[SERVERNAME]]] pyytää sähköpostitse vahvistusta, suorita prosessi napsauttamalla seuraavaa linkkiä.

Napsauta tätä vahvistaaksesi sähköpostiosoitteesi.

Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.
\ No newline at end of file diff --git a/emails/translations/account-check-min_fr.html b/emails/translations/account-check-min_fr.html new file mode 100644 index 00000000..adcbe2ed --- /dev/null +++ b/emails/translations/account-check-min_fr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Vérification E-mail
[[[SERVERNAME]]] - Vérification

Bonjour [[[USERNAME]]], [[[SERVERNAME]]] demande une vérification par e-mail, cliquez sur le lien suivant pour terminer le processus.

Cliquez ici pour vérifier votre adresse e-mail.

Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.
\ No newline at end of file diff --git a/emails/translations/account-check-min_hi.html b/emails/translations/account-check-min_hi.html new file mode 100644 index 00000000..ef6abbb4 --- /dev/null +++ b/emails/translations/account-check-min_hi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - ईमेल सत्यापन
[[[SERVERNAME]]] - सत्यापन

हाय [[[USERNAME]]], [[[SERVERNAME]]] ईमेल सत्यापन का अनुरोध कर रहा है, प्रक्रिया को पूरा करने के लिए निम्न लिंक पर क्लिक करें।

अपना ई-मेल पता सत्यापित करने के लिए यहां क्लिक करें।

यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।
\ No newline at end of file diff --git a/emails/translations/account-check-min_it.html b/emails/translations/account-check-min_it.html new file mode 100644 index 00000000..4ab7f61c --- /dev/null +++ b/emails/translations/account-check-min_it.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Verifica email
[[[SERVERNAME]]] - Verifica

Salve [[[USERNAME]]], [[[SERVERNAME]]] sta richiedendo la verifica tramite posta elettronica, fare clic sul collegamento seguente per completare il processo.

Clicca qui per verificare il tuo indirizzo e-mail.

Se non hai avviato questa richiesta, ignora questo messaggio.
\ No newline at end of file diff --git a/emails/translations/account-check-min_ja.html b/emails/translations/account-check-min_ja.html new file mode 100644 index 00000000..eefdce51 --- /dev/null +++ b/emails/translations/account-check-min_ja.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - メールの確認
[[[SERVERNAME]]] - 確認

[[[USERNAME]]]様 [[[SERVERNAME]]] がメールの確認をリクエストしている場合は、次のリンクをクリックしてプロセスを完了してください。

ここをクリックして、電子メールアドレスを確認してください。

このリクエストを開始していない場合は、このメールを無視してください。
\ No newline at end of file diff --git a/emails/translations/account-check-min_ko.html b/emails/translations/account-check-min_ko.html new file mode 100644 index 00000000..e8bbc0f3 --- /dev/null +++ b/emails/translations/account-check-min_ko.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Email 인증
[[[SERVERNAME]]] - 인증

안녕하세요, [[[USERNAME]]]님. [[[SERVERNAME]]] 이메일 검증을 요구하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.

이메일 주소를 검증하려면 여기를 클릭하십시오.

이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.
\ No newline at end of file diff --git a/emails/translations/account-check-min_nl.html b/emails/translations/account-check-min_nl.html new file mode 100644 index 00000000..ca8ef8f1 --- /dev/null +++ b/emails/translations/account-check-min_nl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - E-mail Verificatie
[[[SERVERNAME]]] - Verificatie

Hallo [[[USERNAME]]], [[[SERVERNAME]]] vraagt om e-mailverificatie, klik op de volgende link om het proces te voltooien.

Klik hier om uw e-mailadres te verifiëren.

Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.
\ No newline at end of file diff --git a/emails/translations/account-check-min_pl.html b/emails/translations/account-check-min_pl.html new file mode 100644 index 00000000..25082b97 --- /dev/null +++ b/emails/translations/account-check-min_pl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Weryfikacja Email
[[[SERVERNAME]]] - Weryfikacja

Cześć [[[USERNAME]]], [[[SERVERNAME]]] prosi o weryfikację adresu email, kliknij na poniższy link, aby zakończyć proces.

Kliknij tutaj, aby zweryfikować swój adres e-mail.

Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.
\ No newline at end of file diff --git a/emails/translations/account-check-min_pt-br.html b/emails/translations/account-check-min_pt-br.html new file mode 100644 index 00000000..36937b05 --- /dev/null +++ b/emails/translations/account-check-min_pt-br.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Verificação de e-mail
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.

Clique aqui para verificar seu endereço de e-mail.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_pt.html b/emails/translations/account-check-min_pt.html new file mode 100644 index 00000000..179912af --- /dev/null +++ b/emails/translations/account-check-min_pt.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Verificação de Email
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.

Clique aqui para verificar seu endereço de e-mail.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_ru.html b/emails/translations/account-check-min_ru.html new file mode 100644 index 00000000..a75eb36c --- /dev/null +++ b/emails/translations/account-check-min_ru.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - подтверждение по электронной почте
[[[SERVERNAME]]] - Подтверждение

Привет [[[USERNAME]]], [[[SERVERNAME]]] запрашивает подтверждение по электронной почте, нажмите на следующую ссылку, чтобы завершить процесс.

Нажмите здесь, чтобы подтвердить свой адрес электронной почты.

Если вы не инициировали этот запрос, игнорируйте это письмо.
\ No newline at end of file diff --git a/emails/translations/account-check-min_sv.html b/emails/translations/account-check-min_sv.html new file mode 100644 index 00000000..b12f2c1b --- /dev/null +++ b/emails/translations/account-check-min_sv.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - E-postverifiering
[[[SERVERNAME]]] - Verifiering

Hej [[[USERNAME]], [[[SERVERNAME]]] begär e-postverifiering, klicka på följande länk för att slutföra processen.

Klicka här för att verifiera din e-postadress.

Om du inte initierade denna begäran, ignorerar du det här meddelandet.
\ No newline at end of file diff --git a/emails/translations/account-check-min_tr.html b/emails/translations/account-check-min_tr.html new file mode 100644 index 00000000..c6d7bd2d --- /dev/null +++ b/emails/translations/account-check-min_tr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - E-posta Doğrulaması
[[[SERVERNAME]]] - Doğrulama

Merhaba [[[USERNAME]]], [[[SERVERNAME]]] e-posta doğrulaması istiyorsa, işlemi tamamlamak için aşağıdaki bağlantıya tıklayın.

E-posta adresinizi doğrulamak için burayı tıklayın.

Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.
\ No newline at end of file diff --git a/emails/translations/account-check-min_zh-chs.html b/emails/translations/account-check-min_zh-chs.html new file mode 100644 index 00000000..c6a2cac3 --- /dev/null +++ b/emails/translations/account-check-min_zh-chs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-电邮验证
[[[SERVERNAME]]]-验证

[[[USERNAME]],你好, [[[SERVERNAME]]] 正在请求电邮验证,请单击以下连结以完成该过程。

单击此处以验证您的电邮地址。

如果您没有发起此请求,请不理此邮件。
\ No newline at end of file diff --git a/emails/translations/account-check-min_zh-cht.html b/emails/translations/account-check-min_zh-cht.html new file mode 100644 index 00000000..ae4f5b0a --- /dev/null +++ b/emails/translations/account-check-min_zh-cht.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-電郵驗證
[[[SERVERNAME]]]-驗證

[[[USERNAME]],你好, [[[SERVERNAME]] 正在請求電郵驗證,請單擊以下鏈結以完成該過程。

單擊此處以驗證你的電郵地址。

如果你沒有發起此請求,請不理此電郵。
\ No newline at end of file diff --git a/emails/translations/account-invite-min_cs.html b/emails/translations/account-invite-min_cs.html new file mode 100644 index 00000000..845a8c97 --- /dev/null +++ b/emails/translations/account-invite-min_cs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Pozvánka na účet
[[[SERVERNAME]]] - Pozvánka na účet

Účet byl pro vás vytvořen na serveru [[[SERVERNAME]]], nyní k němu máte přístup:

   Uživatelské jméno: [[[ACCOUNTNAME]]]
   Heslo: [[[PASSWORD]]]

S pozdravem,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_da.html b/emails/translations/account-invite-min_da.html new file mode 100644 index 00000000..574df71f --- /dev/null +++ b/emails/translations/account-invite-min_da.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Konto invitation
[[[SERVERNAME]]] - Konto invitation

En konto blev oprettet til dig på serveren [[[SERVERNAME]]]du kan tilgå den nu med:

   Brugernavn: [[[ACCOUNTNAME]]]
   Adgangskode: [[[PASSWORD]]]

Venlig hilsen,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_de.html b/emails/translations/account-invite-min_de.html new file mode 100644 index 00000000..95118c48 --- /dev/null +++ b/emails/translations/account-invite-min_de.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Kontoeinladung
[[[SERVERNAME]]] - Kontoeinladung

Auf dem Server wurde ein Konto für Sie erstellt [[[SERVERNAME]]], Sie können jetzt darauf zugreifen mit:

   Benutzername: [[[ACCOUNTNAME]]]
   Passwort: [[[PASSWORD]]]

Freundliche Grüße,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_es.html b/emails/translations/account-invite-min_es.html new file mode 100644 index 00000000..eae716cf --- /dev/null +++ b/emails/translations/account-invite-min_es.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Invitación de Cuenta
[[[SERVERNAME]]] - Invitación de Cuenta

Una cuenta ha sido creada en tu servidor [[[SERVERNAME]]], ahora puede acceder con:

   Nombre de Usuario: [[[ACCOUNTNAME]]]
   Contraseña: [[[PASSWORD]]]

Atentamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_fi.html b/emails/translations/account-invite-min_fi.html new file mode 100644 index 00000000..4b2ddbbb --- /dev/null +++ b/emails/translations/account-invite-min_fi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Tili kutsu
[[[SERVERNAME]]] - Tili kutsu

Sinulle on luotu tili palvelimelle [[[SERVERNAME]]], voit käyttää sitä nyt:

   Käyttäjätunnus: [[[ACCOUNTNAME]]]
   Salasana: [[[PASSWORD]]]

Ystävällisin terveisin,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_fr.html b/emails/translations/account-invite-min_fr.html new file mode 100644 index 00000000..03ad766f --- /dev/null +++ b/emails/translations/account-invite-min_fr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Invitation au compte
[[[SERVERNAME]]] - Invitation au compte

Un compte a été créé pour vous sur le serveur [[[SERVERNAME]]], vous pouvez y accéder maintenant avec :

   Nom d'utilisateur: [[[ACCOUNTNAME]]]
   Mot de passe: [[[PASSWORD]]]

Meilleures salutations,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_hi.html b/emails/translations/account-invite-min_hi.html new file mode 100644 index 00000000..b1d235b4 --- /dev/null +++ b/emails/translations/account-invite-min_hi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - खाता निमंत्रण
[[[SERVERNAME]]] - खाता निमंत्रण

सर्वर पर आपके लिए एक खाता बनाया गया था [[[SERVERNAME]]], आप इसे अभी एक्सेस कर सकते हैं:

   उपयोगकर्ता नाम: [[[ACCOUNTNAME]]]
   कुंजिका: [[[PASSWORD]]]

सादर,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_it.html b/emails/translations/account-invite-min_it.html new file mode 100644 index 00000000..b2859096 --- /dev/null +++ b/emails/translations/account-invite-min_it.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Invito per l'account
[[[SERVERNAME]]] - Invito per l'account

È stato creato un account per te sul server [[[SERVERNAME]]], puoi accedervi ora con

   Nome utente: [[[ACCOUNTNAME]]]
   Password: [[[PASSWORD]]]

I migliori saluti,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_ja.html b/emails/translations/account-invite-min_ja.html new file mode 100644 index 00000000..15911c68 --- /dev/null +++ b/emails/translations/account-invite-min_ja.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - アカウントの招待
[[[SERVERNAME]]] - アカウントの招待

サーバー上にアカウントが作成されました [[[SERVERNAME]]]、あなたは今それを使ってそれにアクセスできます:

   ユーザー名: [[[ACCOUNTNAME]]]
   パスワード: [[[PASSWORD]]]

宜しくお願いします、
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_ko.html b/emails/translations/account-invite-min_ko.html new file mode 100644 index 00000000..625d7208 --- /dev/null +++ b/emails/translations/account-invite-min_ko.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - 계정 초대
[[[SERVERNAME]]] - 계정 초대

당신을 위해 서버에서 한 계정이 생성되었습니다. [[[SERVERNAME]]]이제 당신은 다음으로 접근 가능합니다:

   사용자 이름: [[[ACCOUNTNAME]]]
   암호: [[[PASSWORD]]]

최고의 안부를 전합니다,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_nl.html b/emails/translations/account-invite-min_nl.html new file mode 100644 index 00000000..20f11963 --- /dev/null +++ b/emails/translations/account-invite-min_nl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Account uitnodiging
[[[SERVERNAME]]] - Account uitnodiging

Er is een account voor je aangemaakt op de server [[[SERVERNAME]]], je hebt er nu toegang toe met:

   Gebruikersnaam: [[[ACCOUNTNAME]]]
   Wachtwoord: [[[PASSWORD]]]

Vriendelijke groeten,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_pl.html b/emails/translations/account-invite-min_pl.html new file mode 100644 index 00000000..39fd859c --- /dev/null +++ b/emails/translations/account-invite-min_pl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Zaproszenie Do Założenia Konta
[[[SERVERNAME]]] - Zaproszenie Do Założenia Konta

Konto zostało utworzone dla Ciebie na serwerze [[[SERVERNAME]]], możesz uzyskać dostęp przez:

   Nazwa użytkownika: [[[ACCOUNTNAME]]]
   Hasło: [[[PASSWORD]]]

Z wyrazami szacunku,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_pt-br.html b/emails/translations/account-invite-min_pt-br.html new file mode 100644 index 00000000..b84117aa --- /dev/null +++ b/emails/translations/account-invite-min_pt-br.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Convite para conta
[[[SERVERNAME]]] - Convite para conta

Uma conta foi criada para você no servidor [[[SERVERNAME]]], você pode acessá-lo agora com:

   Nome do usuário: [[[ACCOUNTNAME]]]
   Senha: [[[PASSWORD]]]

Atenciosamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_pt.html b/emails/translations/account-invite-min_pt.html new file mode 100644 index 00000000..db5826fe --- /dev/null +++ b/emails/translations/account-invite-min_pt.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Convite para conta
[[[SERVERNAME]]] - Convite para conta

Uma conta foi criada para você no servidor [[[SERVERNAME]]], você pode acessá-lo agora com:

   Nome de usuário: [[[ACCOUNTNAME]]]
   Senha: [[[PASSWORD]]]

Cumprimentos,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_ru.html b/emails/translations/account-invite-min_ru.html new file mode 100644 index 00000000..d1d8a521 --- /dev/null +++ b/emails/translations/account-invite-min_ru.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - приглашение в аккаунт
[[[SERVERNAME]]] - приглашение в аккаунт

Для вас была создана учетная запись на сервере [[[SERVERNAME]]]Вы можете получить к нему доступ сейчас:

   Имя пользователя: [[[ACCOUNTNAME]]]
   Пароль: [[[PASSWORD]]]

С уважением,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_sv.html b/emails/translations/account-invite-min_sv.html new file mode 100644 index 00000000..c7cd52a7 --- /dev/null +++ b/emails/translations/account-invite-min_sv.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Kontoinbjudan
[[[SERVERNAME]]] - Kontoinbjudan

Ett konto skapades åt dig på servern [[[SERVERNAME]]]kan du komma åt det nu med:

   Användarnamn: [[[ACCOUNTNAME]]]
   Lösenord: [[[PASSWORD]]]

Vänliga hälsningar,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_tr.html b/emails/translations/account-invite-min_tr.html new file mode 100644 index 00000000..b65403de --- /dev/null +++ b/emails/translations/account-invite-min_tr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Hesap Davetiyesi
[[[SERVERNAME]]] - Hesap Davetiyesi

Sunucuda sizin için bir hesap oluşturuldu [[[SERVERNAME]]], şimdi şununla erişebilirsiniz:

   Kullanıcı adı: [[[ACCOUNTNAME]]]
   Parola: [[[PASSWORD]]]

Saygılarımla,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_zh-chs.html b/emails/translations/account-invite-min_zh-chs.html new file mode 100644 index 00000000..f535eb12 --- /dev/null +++ b/emails/translations/account-invite-min_zh-chs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-帐户邀请
[[[SERVERNAME]]]-帐户邀请

在服务器上为您创建了一个帐户 [[[SERVERNAME]]],您现在可以通过以下方式访问它:

   用户名: [[[ACCOUNTNAME]]]
   密码: [[[PASSWORD]]]

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_zh-cht.html b/emails/translations/account-invite-min_zh-cht.html new file mode 100644 index 00000000..7ce366c5 --- /dev/null +++ b/emails/translations/account-invite-min_zh-cht.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-帳戶邀請
[[[SERVERNAME]]]-帳戶邀請

在伺服器上為你創建了一個帳戶 [[[SERVERNAME]]],你現在可以通過以下方式訪問它:

   用戶名: [[[ACCOUNTNAME]]]
   密碼: [[[PASSWORD]]]

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-login-min_cs.html b/emails/translations/account-login-min_cs.html new file mode 100644 index 00000000..6f6ae83f --- /dev/null +++ b/emails/translations/account-login-min_cs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Přihlášení k účtu
[[[SERVERNAME]]] - Přihlášení k účtu

Váš přihlašovací token je: [[[TOKEN]]]

Tento token lze použít pouze jednou a je platný po dobu 5 minut.

\ No newline at end of file diff --git a/emails/translations/account-login-min_da.html b/emails/translations/account-login-min_da.html new file mode 100644 index 00000000..6a16a24e --- /dev/null +++ b/emails/translations/account-login-min_da.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Konto login
[[[SERVERNAME]]] - Konto login

Dit login-token er: [[[TOKEN]]]

Denne token kan kun bruges én gang og er gyldig i 5 minutter.

\ No newline at end of file diff --git a/emails/translations/account-login-min_de.html b/emails/translations/account-login-min_de.html new file mode 100644 index 00000000..c8d7f426 --- /dev/null +++ b/emails/translations/account-login-min_de.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Konto-Login
[[[SERVERNAME]]] - Konto-Login

Ihr Login-Token lautet: [[[TOKEN]]]

Dieser Token kann nur einmal verwendet werden und ist 5 Minuten gültig.

\ No newline at end of file diff --git a/emails/translations/account-login-min_es.html b/emails/translations/account-login-min_es.html new file mode 100644 index 00000000..7566c294 --- /dev/null +++ b/emails/translations/account-login-min_es.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Inicio de Sesión
[[[SERVERNAME]]] - Inicio de Sesión

Tu token de inicio de sesión es: [[[TOKEN]]]

Este token sólo se puede usar una vez y es válido durante 5 minutos.

\ No newline at end of file diff --git a/emails/translations/account-login-min_fi.html b/emails/translations/account-login-min_fi.html new file mode 100644 index 00000000..c14b1292 --- /dev/null +++ b/emails/translations/account-login-min_fi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Tilille Kirjautuminen
[[[SERVERNAME]]] - Tilille Kirjautuminen

Kirjautumistunnuksesi on: [[[TOKEN]]]

Tätä tunnusta voidaan käyttää vain kerran ja se on voimassa 5 minuuttia.

\ No newline at end of file diff --git a/emails/translations/account-login-min_fr.html b/emails/translations/account-login-min_fr.html new file mode 100644 index 00000000..4a7f1305 --- /dev/null +++ b/emails/translations/account-login-min_fr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Connexion au compte
[[[SERVERNAME]]] - Connexion au compte

Votre jeton de connexion est: [[[TOKEN]]]

Ce jeton ne peut être utilisé qu'une seule fois et est valide pendant 5 minutes.

\ No newline at end of file diff --git a/emails/translations/account-login-min_hi.html b/emails/translations/account-login-min_hi.html new file mode 100644 index 00000000..d4411b45 --- /dev/null +++ b/emails/translations/account-login-min_hi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - खाता लॉगिन
[[[SERVERNAME]]] - खाता लॉगिन

आपका लॉगिन टोकन है: [[[TOKEN]]]

यह टोकन केवल एक बार उपयोग किया जा सकता है और 5 मिनट के लिए वैध है।

\ No newline at end of file diff --git a/emails/translations/account-login-min_it.html b/emails/translations/account-login-min_it.html new file mode 100644 index 00000000..74b4f2cc --- /dev/null +++ b/emails/translations/account-login-min_it.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Accesso all'account
[[[SERVERNAME]]] - Accesso all'account

Il tuo token di accesso è: [[[TOKEN]]]

Questo token può essere utilizzato solo una volta ed è valido per 5 minuti.

\ No newline at end of file diff --git a/emails/translations/account-login-min_ja.html b/emails/translations/account-login-min_ja.html new file mode 100644 index 00000000..d4abea8d --- /dev/null +++ b/emails/translations/account-login-min_ja.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - アカウントログイン
[[[SERVERNAME]]] - アカウントログイン

ログイントークンは次のとおりです:[[[TOKEN]]]

このトークンは1回だけ使用でき、5分間有効です。

\ No newline at end of file diff --git a/emails/translations/account-login-min_ko.html b/emails/translations/account-login-min_ko.html new file mode 100644 index 00000000..368ea790 --- /dev/null +++ b/emails/translations/account-login-min_ko.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - 계정 로그인
[[[SERVERNAME]]] - 계정 로그인

당신이 로그인한 토큰은 다음과 같습니다 : [[[TOKEN]]]

이 토큰은 오직 한 번만 사용될 수 있으며, 5분 동안만 유효합니다.

\ No newline at end of file diff --git a/emails/translations/account-login-min_nl.html b/emails/translations/account-login-min_nl.html new file mode 100644 index 00000000..7ea6a268 --- /dev/null +++ b/emails/translations/account-login-min_nl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Inloggen account
[[[SERVERNAME]]] - Inloggen account

Uw login token is: [[[TOKEN]]]

Dit token kan maar één keer worden gebruikt en is 5 minuten geldig.

\ No newline at end of file diff --git a/emails/translations/account-login-min_pl.html b/emails/translations/account-login-min_pl.html new file mode 100644 index 00000000..a456429e --- /dev/null +++ b/emails/translations/account-login-min_pl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Logowanie Do Konta
[[[SERVERNAME]]] - Logowanie Do Konta

Twój token logowania to: [[[TOKEN]]]

Ten token może być użyty tylko raz i jest ważny przez 5 minut.

\ No newline at end of file diff --git a/emails/translations/account-login-min_pt-br.html b/emails/translations/account-login-min_pt-br.html new file mode 100644 index 00000000..43320355 --- /dev/null +++ b/emails/translations/account-login-min_pt-br.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Login da conta
[[[SERVERNAME]]] - Login da conta

Seu token de login é: [[[TOKEN]]]

Este token só pode ser usado uma vez e é válido por 5 minutos.

\ No newline at end of file diff --git a/emails/translations/account-login-min_pt.html b/emails/translations/account-login-min_pt.html new file mode 100644 index 00000000..43320355 --- /dev/null +++ b/emails/translations/account-login-min_pt.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Login da conta
[[[SERVERNAME]]] - Login da conta

Seu token de login é: [[[TOKEN]]]

Este token só pode ser usado uma vez e é válido por 5 minutos.

\ No newline at end of file diff --git a/emails/translations/account-login-min_ru.html b/emails/translations/account-login-min_ru.html new file mode 100644 index 00000000..d77dead5 --- /dev/null +++ b/emails/translations/account-login-min_ru.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Вход в аккаунт
[[[SERVERNAME]]] - Вход в аккаунт

Ваш токен для входа: [[[TOKEN]]]

Этот токен может быть использован только один раз и действителен в течение 5 минут.

\ No newline at end of file diff --git a/emails/translations/account-login-min_sv.html b/emails/translations/account-login-min_sv.html new file mode 100644 index 00000000..a477729f --- /dev/null +++ b/emails/translations/account-login-min_sv.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Kontoinloggning
[[[SERVERNAME]]] - Kontoinloggning

Din inloggningstoken är: [[[TOKEN]]]

Denna token kan bara användas en gång och är giltig i 5 minuter.

\ No newline at end of file diff --git a/emails/translations/account-login-min_tr.html b/emails/translations/account-login-min_tr.html new file mode 100644 index 00000000..aed366b2 --- /dev/null +++ b/emails/translations/account-login-min_tr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Hesap Girişi
[[[SERVERNAME]]] - Hesap Girişi

Giriş anahtarınız: [[[TOKEN]]]

Bu simge yalnızca bir kez kullanılabilir ve 5 dakika geçerlidir.

\ No newline at end of file diff --git a/emails/translations/account-login-min_zh-chs.html b/emails/translations/account-login-min_zh-chs.html new file mode 100644 index 00000000..b61a5832 --- /dev/null +++ b/emails/translations/account-login-min_zh-chs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-帐户登录
[[[SERVERNAME]]]-帐户登录

您的登录保安编码为:[[[TOKEN]]]

此保安编码只能使用一次,有效期为5分钟。

\ No newline at end of file diff --git a/emails/translations/account-login-min_zh-cht.html b/emails/translations/account-login-min_zh-cht.html new file mode 100644 index 00000000..4b227d14 --- /dev/null +++ b/emails/translations/account-login-min_zh-cht.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-帳戶登入
[[[SERVERNAME]]]-帳戶登入

你的登入保安編碼為:[[[TOKEN]]]

該保安編碼只能使用一次,有效期為5分鐘。

\ No newline at end of file diff --git a/emails/translations/account-reset-min_cs.html b/emails/translations/account-reset-min_cs.html new file mode 100644 index 00000000..daa51be1 --- /dev/null +++ b/emails/translations/account-reset-min_cs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Reset účtu
[[[SERVERNAME]]] - Ověření

Ahoj [[[USERNAME]]], [[[SERVERNAME]]] požaduje obnovení hesla k účtu, dokončete proces kliknutím na následující odkaz.

Kliknutím sem obnovíte heslo svého účtu.

Pokud jste tento požadavek nezačali, ignorujte tento e-mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_da.html b/emails/translations/account-reset-min_da.html new file mode 100644 index 00000000..b6829d3f --- /dev/null +++ b/emails/translations/account-reset-min_da.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Konto reset
[[[SERVERNAME]]] - Verificering

Hej [[[USERNAME]], [[[SERVERNAME]]] anmoder om en nulstilling af kontoadgangskode, klik på følgende link for at fuldføre processen.

Klik her for at nulstille adgangskoden til din konto.

Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_de.html b/emails/translations/account-reset-min_de.html new file mode 100644 index 00000000..fe952ca6 --- /dev/null +++ b/emails/translations/account-reset-min_de.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Zurücksetzen des Kontos
[[[SERVERNAME]]] - Überprüfung

Hallo [[[USERNAME]]], [[[SERVERNAME]]] Wenn Sie ein Zurücksetzen des Kontokennworts anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.

Klicken Sie hier, um Ihr Kontopasswort zurückzusetzen.

Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_es.html b/emails/translations/account-reset-min_es.html new file mode 100644 index 00000000..a464997a --- /dev/null +++ b/emails/translations/account-reset-min_es.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Restablecimiento de Cuenta
[[[SERVERNAME]]] - Verificación

Hola [[[USERNAME]]], [[[SERVERNAME]]] está solicitando restablecer la contraseña de la cuenta, haz clic en el siguiente enlace para completar el proceso.

Haz clic aquí para restablecer la contraseña de tu cuenta.

Si tu no iniciaste este requerimiento, por favor ignora este correo.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_fi.html b/emails/translations/account-reset-min_fi.html new file mode 100644 index 00000000..2037e88e --- /dev/null +++ b/emails/translations/account-reset-min_fi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Tili nollattu
[[[SERVERNAME]]] - Todentaminen

Moi [[[USERNAME]]], [[[SERVERNAME]]] pyytää tilin salasanan palauttamista, suorita prosessi napsauttamalla seuraavaa linkkiä.

Palauta tilisi salasana napsauttamalla tätä.

Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_fr.html b/emails/translations/account-reset-min_fr.html new file mode 100644 index 00000000..b647ecc2 --- /dev/null +++ b/emails/translations/account-reset-min_fr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Réinitialisation du compte
[[[SERVERNAME]]] - Vérification

Bonjour [[[USERNAME]]], [[[SERVERNAME]]] demande une réinitialisation du mot de passe du compte, cliquez sur le lien suivant pour terminer le processus.

Cliquez ici pour réinitialiser le mot de passe de votre compte.

Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_hi.html b/emails/translations/account-reset-min_hi.html new file mode 100644 index 00000000..149562c4 --- /dev/null +++ b/emails/translations/account-reset-min_hi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - खाता रीसेट
[[[SERVERNAME]]] - सत्यापन

हाय [[[USERNAME]]], [[[SERVERNAME]]] खाता पासवर्ड रीसेट का अनुरोध कर रहा है, प्रक्रिया पूरी करने के लिए निम्न लिंक पर क्लिक करें।

अपना खाता पासवर्ड रीसेट करने के लिए यहां क्लिक करें।

यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।
\ No newline at end of file diff --git a/emails/translations/account-reset-min_it.html b/emails/translations/account-reset-min_it.html new file mode 100644 index 00000000..0bedfea0 --- /dev/null +++ b/emails/translations/account-reset-min_it.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Reimpostazione dell'account
[[[SERVERNAME]]] - Verifica

Salve [[[USERNAME]]], [[[SERVERNAME]]] sta richiedendo la reimpostazione della password dell'account, fare clic sul seguente collegamento per completare il processo.

Clicca qui per reimpostare la password del tuo account.

Se non hai avviato questa richiesta, ignora questo messaggio.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_ja.html b/emails/translations/account-reset-min_ja.html new file mode 100644 index 00000000..ee648537 --- /dev/null +++ b/emails/translations/account-reset-min_ja.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - アカウントのリセット
[[[SERVERNAME]]] - 確認

[[[USERNAME]]]様 [[[SERVERNAME]]] がアカウントパスワードのリセットを要求している場合は、次のリンクをクリックしてプロセスを完了します。

ここをクリックしてアカウントのパスワードをリセットしてください。

このリクエストを開始していない場合は、このメールを無視してください。
\ No newline at end of file diff --git a/emails/translations/account-reset-min_ko.html b/emails/translations/account-reset-min_ko.html new file mode 100644 index 00000000..39b71a28 --- /dev/null +++ b/emails/translations/account-reset-min_ko.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - 계정 재설정
[[[SERVERNAME]]] - 인증

안녕하세요, [[[USERNAME]]]님. [[[SERVERNAME]]] 계정 비밀번호 재설정을 요청하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.

당신의 계정 암호를 초기화하려면 여기를 클릭하십시오.

이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_nl.html b/emails/translations/account-reset-min_nl.html new file mode 100644 index 00000000..2f071d6a --- /dev/null +++ b/emails/translations/account-reset-min_nl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Account Reset
[[[SERVERNAME]]] - Verificatie

Hallo [[[USERNAME]]], [[[SERVERNAME]]] vraagt om het opnieuw instellen van het wachtwoord van een account, klik op de volgende link om het proces te voltooien.

Klik hier om je wachtwoord opnieuw in te stellen.

Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_pl.html b/emails/translations/account-reset-min_pl.html new file mode 100644 index 00000000..9db979ea --- /dev/null +++ b/emails/translations/account-reset-min_pl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Resetowanie Konta
[[[SERVERNAME]]] - Weryfikacja

Cześć [[[USERNAME]]], [[[SERVERNAME]]] prosi o zresetowanie hasła do konta, kliknij na poniższy link aby zakończyć proces.

Kliknij tutaj, aby zresetować hasło do swojego konta.

Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_pt-br.html b/emails/translations/account-reset-min_pt-br.html new file mode 100644 index 00000000..97fbdc56 --- /dev/null +++ b/emails/translations/account-reset-min_pt-br.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Redefinição de conta
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.

Clique aqui para redefinir a senha da sua conta.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_pt.html b/emails/translations/account-reset-min_pt.html new file mode 100644 index 00000000..97fbdc56 --- /dev/null +++ b/emails/translations/account-reset-min_pt.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Redefinição de conta
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.

Clique aqui para redefinir a senha da sua conta.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_ru.html b/emails/translations/account-reset-min_ru.html new file mode 100644 index 00000000..2381c2cc --- /dev/null +++ b/emails/translations/account-reset-min_ru.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Сброс учетной записи
[[[SERVERNAME]]] - Подтверждение

Привет [[[USERNAME]]], [[[SERVERNAME]]] запрашивает сброс пароля учетной записи, нажмите на следующую ссылку, чтобы завершить процесс.

Нажмите здесь, чтобы сбросить пароль учетной записи.

Если вы не инициировали этот запрос, игнорируйте это письмо.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_sv.html b/emails/translations/account-reset-min_sv.html new file mode 100644 index 00000000..a983bb3b --- /dev/null +++ b/emails/translations/account-reset-min_sv.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Återställ konto
[[[SERVERNAME]]] - Verifiering

Hej [[[USERNAME]], [[[SERVERNAME]]] begär återställning av kontolösenord, klicka på följande länk för att slutföra processen.

Klicka här för att återställa ditt kontolösenord.

Om du inte initierade denna begäran, ignorerar du det här meddelandet.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_tr.html b/emails/translations/account-reset-min_tr.html new file mode 100644 index 00000000..b563e5ef --- /dev/null +++ b/emails/translations/account-reset-min_tr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Hesabı Sıfırlama
[[[SERVERNAME]]] - Doğrulama

Merhaba [[[USERNAME]]], [[[SERVERNAME]]] bir hesap şifresi sıfırlama talep ediyor, işlemi tamamlamak için aşağıdaki bağlantıya tıklayın.

Hesap şifrenizi sıfırlamak için burayı tıklayın.

Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_zh-chs.html b/emails/translations/account-reset-min_zh-chs.html new file mode 100644 index 00000000..1d880c90 --- /dev/null +++ b/emails/translations/account-reset-min_zh-chs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-帐户重置
[[[SERVERNAME]]]-验证

[[[USERNAME]],你好, [[[SERVERNAME]]] 正在要求重置帐户密码,请单击以下连结以完成该过程。

单击此处重置您的帐户密码。

如果您没有发起此请求,请不理此邮件。
\ No newline at end of file diff --git a/emails/translations/account-reset-min_zh-cht.html b/emails/translations/account-reset-min_zh-cht.html new file mode 100644 index 00000000..9924e8b9 --- /dev/null +++ b/emails/translations/account-reset-min_zh-cht.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-帳戶重置
[[[SERVERNAME]]]-驗證

[[[USERNAME]],你好, [[[SERVERNAME]] 正在要求重置帳戶密碼,請單擊以下鏈結以完成該過程。

單擊此處重置你的帳戶密碼。

如果你沒有發起此請求,請不理此電郵。
\ No newline at end of file diff --git a/emails/translations/device-notify-min_cs.html b/emails/translations/device-notify-min_cs.html new file mode 100644 index 00000000..f009fee3 --- /dev/null +++ b/emails/translations/device-notify-min_cs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] – Oznámení zařízení
[[[SERVERNAME]]] – Oznámení zařízení

Následující zařízení změnila svůj stav připojení.

Připojená zařízení:

[[[CONNECTIONS]]]

Odpojená zařízení:

[[[DISCONNECTIONS]]]

Chcete-li se odhlásit, klikněte zde do 1 hodiny od obdržení této zprávy.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_da.html b/emails/translations/device-notify-min_da.html new file mode 100644 index 00000000..7149beca --- /dev/null +++ b/emails/translations/device-notify-min_da.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Enheds Notifikation
[[[SERVERNAME]]] - Enheds Notifikation

Følgende enheder har ændret deres forbindelsestilstand.

Forbundne enheder:

[[[CONNECTIONS]]]

Afbrudte enheder:

[[[DISCONNECTIONS]]]

For at afmelde, Klik her inden for 1 time efter at have modtaget denne besked.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_de.html b/emails/translations/device-notify-min_de.html new file mode 100644 index 00000000..b0ca514c --- /dev/null +++ b/emails/translations/device-notify-min_de.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] – Gerätebenachrichtigung
[[[SERVERNAME]]] – Gerätebenachrichtigung

Die folgenden Geräte haben ihren Verbindungsstatus geändert.

Verbundene Geräte:

[[[CONNECTIONS]]]

Getrennte Geräte:

[[[DISCONNECTIONS]]]

Deabonnieren, hier klicken innerhalb 1 Stunde nach erhalt dieser Nachricht.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_es.html b/emails/translations/device-notify-min_es.html new file mode 100644 index 00000000..11cec694 --- /dev/null +++ b/emails/translations/device-notify-min_es.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Notificación del dispositivo
[[[SERVERNAME]]] - Notificación del dispositivo

Los siguientes dispositivos han cambiado su estado de conexión.

Dispositivos conectados:

[[[CONNECTIONS]]]

Dispositivos desconectados:

[[[DISCONNECTIONS]]]

Para darse de baja, haz clic aquí en 1 hora desde la recepción de este mensaje.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_fi.html b/emails/translations/device-notify-min_fi.html new file mode 100644 index 00000000..aa41d949 --- /dev/null +++ b/emails/translations/device-notify-min_fi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Laitteen ilmoitus
[[[SERVERNAME]]] - Laitteen ilmoitus

Seuraavat laitteet ovat muuttaneet yhteystilaa.

Kytketyt laitteet:

[[[CONNECTIONS]]]

Irrotetut laitteet:

[[[DISCONNECTIONS]]]

Lopettaa tilauksen, klikkaa tästä tunnin sisällä tämän viestin vastaanottamisesta.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_fr.html b/emails/translations/device-notify-min_fr.html new file mode 100644 index 00000000..97f63164 --- /dev/null +++ b/emails/translations/device-notify-min_fr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Notification de l'appareil
[[[SERVERNAME]]] - Notification de l'appareil

Ces appareils ont changé leur statut de connexion :

Appareils connectés :

[[[CONNECTIONS]]]

Appareils déconnectés :

[[[DISCONNECTIONS]]]

Pour se désinscrire, cliquez ici dans l'heure suivant la réception de ce message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_hi.html b/emails/translations/device-notify-min_hi.html new file mode 100644 index 00000000..16490f75 --- /dev/null +++ b/emails/translations/device-notify-min_hi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - डिवाइस नोटिफिकेशन
[[[SERVERNAME]]] - डिवाइस नोटिफिकेशन

निम्न उपकरणों ने अपनी कनेक्शन स्थिति बदल दी है।

जुड़ी हुई डिवाइसेज:

[[[CONNECTIONS]]]

डिस्कनेक्ट किए गए डिवाइस:

[[[DISCONNECTIONS]]]

सदस्यता रद्द करने के लिए, यहाँ क्लिक करें यह संदेश मिलने के 1 घंटे के भीतर।

\ No newline at end of file diff --git a/emails/translations/device-notify-min_it.html b/emails/translations/device-notify-min_it.html new file mode 100644 index 00000000..3039bfe8 --- /dev/null +++ b/emails/translations/device-notify-min_it.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Notifica dispositivo
[[[SERVERNAME]]] - Notifica dispositivo

I seguenti dispositivi hanno cambiato il loro stato di connessione.

Dispositivi collegati:

[[[CONNECTIONS]]]

Dispositivi disconnessi:

[[[DISCONNESSIONI]]]

Per annullare l'iscrizione, clicca qui entro 1 ora dalla ricezione di questo messaggio.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_ja.html b/emails/translations/device-notify-min_ja.html new file mode 100644 index 00000000..2284b03f --- /dev/null +++ b/emails/translations/device-notify-min_ja.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-デバイス通知
[[[SERVERNAME]]]-デバイス通知

次のデバイスは接続状態を変更しました。

接続されているデバイス:

[[[CONNECTIONS]]]

切断されたデバイス:

[[[DISCONNECTIONS]]]

退会するには、 ここをクリック このメッセージを受け取ってから1時間以内。

\ No newline at end of file diff --git a/emails/translations/device-notify-min_ko.html b/emails/translations/device-notify-min_ko.html new file mode 100644 index 00000000..11083560 --- /dev/null +++ b/emails/translations/device-notify-min_ko.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, 여기를 클릭하십시오. within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_nl.html b/emails/translations/device-notify-min_nl.html new file mode 100644 index 00000000..a3f8fef4 --- /dev/null +++ b/emails/translations/device-notify-min_nl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Apparaatmelding
[[[SERVERNAME]]] - Apparaatmelding

De volgende apparaten hebben hun verbindingsstatus gewijzigd.

Verbonden apparaten:

[[[CONNECTIONS]]]

Losgekoppelde apparaten:

[[[DISCONNECTIONS]]]

Uitschrijven, Klik hier binnen 1 uur na ontvangst van dit bericht.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_pl.html b/emails/translations/device-notify-min_pl.html new file mode 100644 index 00000000..badbc30c --- /dev/null +++ b/emails/translations/device-notify-min_pl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Powiadomienia Urządzenia
[[[SERVERNAME]]] - Powiadomienia Urządzenia

Przedstawione urządzenia zmieniły stan połączenia.

Podłączone urządzenia:

[[[CONNECTIONS]]]

Rozłączone urządzenia:

[[[DISCONNECTIONS]]]

By się wypisać. kliknij tutaj w ciągu 1 godziny od otrzymania wiadomości.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_pt-br.html b/emails/translations/device-notify-min_pt-br.html new file mode 100644 index 00000000..7bed9e4e --- /dev/null +++ b/emails/translations/device-notify-min_pt-br.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Notificação do dispositivo
[[[SERVERNAME]]] - Notificação do dispositivo

Os seguintes dispositivos mudaram seus estados de conexão.

Dispositivos conectados

[[[CONNECTIONS]]]

Dispositivos desconectados

[[[DISCONNECTIONS]]]

Cancelar inscrição Clique aqui Com 1 hora após recebida está mensagem.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_pt.html b/emails/translations/device-notify-min_pt.html new file mode 100644 index 00000000..ed67484e --- /dev/null +++ b/emails/translations/device-notify-min_pt.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, Clique aqui within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_ru.html b/emails/translations/device-notify-min_ru.html new file mode 100644 index 00000000..6f01ce93 --- /dev/null +++ b/emails/translations/device-notify-min_ru.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Уведомление устройства
[[[SERVERNAME]]] - Уведомление устройства

Следующие устройства изменили свое состояние подключения.

Подключенные устройства:

[[[CONNECTIONS]]]

Отключенные устройства:

[[[DISCONNECTIONS]]]

Чтобы отписаться, кликните сюда в течение 1 часа после получения этого сообщения.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_sv.html b/emails/translations/device-notify-min_sv.html new file mode 100644 index 00000000..7c1b40e3 --- /dev/null +++ b/emails/translations/device-notify-min_sv.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, Klicka här within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_tr.html b/emails/translations/device-notify-min_tr.html new file mode 100644 index 00000000..7d0d5d3a --- /dev/null +++ b/emails/translations/device-notify-min_tr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Cihaz Bildirimi
[[[SERVERNAME]]] - Cihaz Bildirimi

Aşağıdaki cihazlar bağlantı durumlarını değiştirdi.

Bağlı cihazlar:

[[[CONNECTIONS]]]

Bağlantısı kesilen cihazlar:

[[[DISCONNECTIONS]]]

Abonelikten çıkmak, buraya Tıkla Bu mesajı aldıktan sonra 1 saat içinde.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_zh-chs.html b/emails/translations/device-notify-min_zh-chs.html new file mode 100644 index 00000000..4aea50d0 --- /dev/null +++ b/emails/translations/device-notify-min_zh-chs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, 点击这里 within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_zh-cht.html b/emails/translations/device-notify-min_zh-cht.html new file mode 100644 index 00000000..69cae13a --- /dev/null +++ b/emails/translations/device-notify-min_zh-cht.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, 點擊這裡 within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_cs.html b/emails/translations/mesh-invite-min_cs.html new file mode 100644 index 00000000..e8af1eb5 --- /dev/null +++ b/emails/translations/mesh-invite-min_cs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Pozvánka
[[[SERVERNAME]]] - Instalace agenta

Dobrý den, [[[NAME]]],

Uživatel [[[USERNAME]]] na serveru [[[SERVERNAME]]] vás žádá o instalaci softwaru pro spuštění relace dálkového ovládání.

Zpráva: [[[MSG]]]

Kliknutím sem stáhnete MeshAgent pro Windows.

Kliknutím sem stáhnete MeshAgent pro Apple OSX.

V případě systému Linux vyjměte a vložte do terminálu a nainstalujte agenta:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Chcete-li nainstalovat software, klikněte zde a postupujte podle pokynů.

Pokud jste tento požadavek nezačali, ignorujte tento e-mail.

S pozdravem,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_da.html b/emails/translations/mesh-invite-min_da.html new file mode 100644 index 00000000..131e46d1 --- /dev/null +++ b/emails/translations/mesh-invite-min_da.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Invitation
[[[SERVERNAME]]] - Agent installation

Hej [[[NAME]]]

Bruger [[[USERNAME]]] på serveren [[[SERVERNAME]]] anmoder dig om at installere software for at starte en fjernbetjeningssession.

Meddelelse: [[[MSG]]]

Klik her for at downloade MeshAgent til Windows.

Klik her for at downloade MeshAgent til Apple OSX.

For Linux skal du klippe og indsætte følgende i en terminal for at installere agenten:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

For at installere softwaren, Klik her og følg instruktionerne.

Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.

Venlig hilsen,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_de.html b/emails/translations/mesh-invite-min_de.html new file mode 100644 index 00000000..2198a768 --- /dev/null +++ b/emails/translations/mesh-invite-min_de.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Einladung
[[[SERVERNAME]]] - Agenteninstallation

Hallo [[[NAME]]],

Benutzer [[[USERNAME]]] auf dem Server [[[SERVERNAME]]] fordert Sie auf, Software zu installieren, um eine Fernsteuerungssitzung zu starten.

Botschaft: [[[MSG]]]

Klicken Sie hier, um den MeshAgent für Windows herunterzuladen.

Klicken Sie hier, um den MeshAgent für Apple OSX herunterzuladen.

Schneiden Sie unter Linux Folgendes aus und fügen Sie es in ein Terminal ein, um den Agenten zu installieren:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Um die Software zu installieren, hier klicken und folgen Sie den Anweisungen.

Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.

Freundliche Grüße,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_es.html b/emails/translations/mesh-invite-min_es.html new file mode 100644 index 00000000..20cfcd91 --- /dev/null +++ b/emails/translations/mesh-invite-min_es.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Invitación
[[[SERVERNAME]]] - Instalación de Agente

Hola [[[NAME]]],

Usuario [[[USERNAME]]] en servidor [[[SERVERNAME]]] te solicita que instales el software para iniciar una sesión de control remoto.

Mensaje: [[[MSG]]]

Haz clic aquí para descargar el Agente Mesh para Windows.

Haz clic aquí para descargar el Agente Mesh para Apple OSX.

Para Linux, copia y pega lo siguiente en la terminal para instalar el agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Para instalar el software, haz clic aquí y sigue las instrucciones.

Si tu no iniciaste este requerimiento, por favor ignora este correo.

Atentamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_fi.html b/emails/translations/mesh-invite-min_fi.html new file mode 100644 index 00000000..cc8b0bf0 --- /dev/null +++ b/emails/translations/mesh-invite-min_fi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Kutsu
[[[SERVERNAME]]] - Agentin asennus

Hei [[[NAME]]],

Käyttäjä [[[USERNAME]]] palvelimella [[[SERVERNAME]]] pyytää sinua asentamaan ohjelmiston etäohjausistunnon aloittamiseksi.

Viesti: [[[MSG]]]

Napsauta tätä ladataksesi MeshAgent Windows:lle.

Napsauta tätä ladataksesi MeshAgent Apple OSX:lle.

Linux: leikkaa ja liitä seuraava päätelaitteeseen agentin asentamiseksi:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Asentaaksesi ohjelman, klikkaa tästä ja seuraa ohjeita.

Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.

Ystävällisin terveisin,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_fr.html b/emails/translations/mesh-invite-min_fr.html new file mode 100644 index 00000000..7ba16eed --- /dev/null +++ b/emails/translations/mesh-invite-min_fr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Invitation
[[[SERVERNAME]]] - Installation de l'agent

Bonjour [[[NAME]]],

Utilisateur [[[USERNAME]]] sur le serveur [[[SERVERNAME]]] vous demande d'installer un logiciel pour démarrer une session de contrôle à distance.

Message: [[[MSG]]]

Cliquez ici pour télécharger le MeshAgent pour Windows.

Cliquez ici pour télécharger le MeshAgent pour Apple OSX.

Pour Linux, copiez et collez les éléments suivants dans un terminal pour installer l'agent:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Cliquez ici pour télécharger l'assistant Meshcentral pour Windows.

Pour installer le logiciel, cliquez ici et suivez les instructions.

Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.

Meilleures salutations,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_hi.html b/emails/translations/mesh-invite-min_hi.html new file mode 100644 index 00000000..a95b9ab2 --- /dev/null +++ b/emails/translations/mesh-invite-min_hi.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - निमंत्रण
[[[SERVERNAME]]] - एजेंट स्थापना

नमस्कार [[[NAME]]],

उपयोगकर्ता [[[USERNAME]]] सर्वर पर [[[SERVERNAME]]] रिमोट कंट्रोल सेशन शुरू करने के लिए आपको सॉफ्टवेयर इंस्टॉल करने का अनुरोध कर रहा है।

संदेश: [[[MSG]]]

विंडोज के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।

Apple OSX के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।

लिनक्स में, एजेंट को स्थापित करने के लिए टर्मिनल में निम्नलिखित को काटें और चिपकाएँ:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

सॉफ़्टवेयर स्थापित करने के लिए, यहाँ क्लिक करें और निर्देशों का पालन करें।

यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।

सादर,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_it.html b/emails/translations/mesh-invite-min_it.html new file mode 100644 index 00000000..f51102ba --- /dev/null +++ b/emails/translations/mesh-invite-min_it.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Invito
[[[SERVERNAME]]] - Installazione dell'agente

Salve [[[NAME]]],

Utente [[[USERNAME]]] sul server [[[SERVERNAME]]] chiede di installare un software per avviare una sessione di controllo remoto.

Messaggio: [[[MSG]]]

Fare clic qui per scaricare MeshAgent per Windows.

Fare clic qui per scaricare MeshAgent per Apple OSX.

Per Linux, taglia e incolla quanto segue in un terminale per installare l'agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Per installare il software, clicca qui e segui le istruzioni.

Se non hai avviato questa richiesta, ignora questo messaggio.

I migliori saluti,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_ja.html b/emails/translations/mesh-invite-min_ja.html new file mode 100644 index 00000000..ce3e7966 --- /dev/null +++ b/emails/translations/mesh-invite-min_ja.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - 招待
[[[SERVERNAME]]] - エージェントのインストール

[[[NAME]]]様

サーバー上のユーザー[[[USERNAME]]] [[[SERVERNAME]]] リモートコントロールセッションを開始するソフトウェアをインストールするように要求しています。

メッセージ: [[[MSG]]]

Windows用のMeshAgentをダウンロードするには、ここをクリックしてください。

ここをクリックして、Apple OSX用のMeshAgentをダウンロードしてください。

Linuxの場合は、ターミナルで以下をカットアンドペーストしてエージェントをインストールします。

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

ソフトウェアをインストールするには、 ここをクリック 指示に従ってください。

このリクエストを開始していない場合は、このメールを無視してください。

宜しくお願いします、
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_ko.html b/emails/translations/mesh-invite-min_ko.html new file mode 100644 index 00000000..7c645fda --- /dev/null +++ b/emails/translations/mesh-invite-min_ko.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - 초대
[[[SERVERNAME]]] - 에이전트 설치

안녕하세요, [[[NAME]]]님.

서버의 [[[USERNAME]]] 사용자 [[[SERVERNAME]]] 원격 제어 세션을 시작하기 위해 소프트웨어 설치를 요청하고 있습니다.

메시지: [[[MSG]]]

Windows를 위한 MeshAgent를 다운로드 하려면 여기를 클릭하십시오.

Apple OSX를 위한 MeshAgent를 다운로드 하려면 여기를 클릭하십시오.

Linux의 경우, 다음을 잘라내어 터미널에 붙여 넣어 에이전트를 설치하십시오.

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

소프트웨어를 설치하려면, 여기를 클릭하십시오. 그리고 다음 지시들을 따르십시오.

이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.

최고의 안부를 전합니다,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_nl.html b/emails/translations/mesh-invite-min_nl.html new file mode 100644 index 00000000..aadbda8d --- /dev/null +++ b/emails/translations/mesh-invite-min_nl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Uitnodiging
[[[SERVERNAME]]] - Agent installatie

Hallo [[[NAME]]],

Gebruiker [[[USERNAME]]] op server [[[SERVERNAME]]] vraagt u om de software te installeren om een ondersteunings sessie te starten.

Bericht: [[[MSG]]]

Klik hier om de MeshAgent te downloaden voor Windows.

Klik hier om de MeshAgent te downloaden voor Apple OSX.

Voor Linux, knip het volgende en plak dit in een terminal om de agent te installeren:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Klik hier om de MeshCentral Assistant voor Windows te downloaden.

Om de software te installeren, Klik hier en volg de instructies.

Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.

Vriendelijke groeten,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_pl.html b/emails/translations/mesh-invite-min_pl.html new file mode 100644 index 00000000..6872b485 --- /dev/null +++ b/emails/translations/mesh-invite-min_pl.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Zaproszenie
[[[SERVERNAME]]] - Instalacja Agenta

Witaj [[[NAME]]],

Użytkownik [[[USERNAME]]] na serwerze [[[SERVERNAME]]] prosi o zainstalowanie oprogramowania w celu rozpoczęcia sesji zdalnego sterowania.

Wiadomość: [[[MSG]]]

Kliknij tutaj aby pobrać MeshAgent dla Windows.

Kliknij tutaj aby pobrać MeshAgent dla Apple OSX.

W systemie Linuks, wytnij i wklej poniższe polecenia w terminalu, aby zainstalować agenta:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Kliknij tutaj by pobrać Asystenta MeshCentral dla Windows.

Aby zainstalować oprogramowanie, kliknij tutaj i postępuj zgodnie z instrukcjami.

Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.

Z wyrazami szacunku,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_pt-br.html b/emails/translations/mesh-invite-min_pt-br.html new file mode 100644 index 00000000..d2084280 --- /dev/null +++ b/emails/translations/mesh-invite-min_pt-br.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Convite
[[[SERVERNAME]]] - Instalação do Agente

Olá [[[NAME]]],

Usuário [[[USERNAME]]] no servidor [[[SERVERNAME]]] está solicitando a instalação de um software para iniciar uma sessão de controle remoto.

Mensagem: [[[MSG]]]

Clique aqui para baixar o MeshAgent para Windows.

Clique aqui para baixar o MeshAgent para Apple OSX.

Para Linux, recorte e cole o seguinte em um terminal para instalar o agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Clique aqui para baixar o Mesh Central Assistant para Windows

Para instalar o software, Clique aqui e siga as instruções.

Se você não iniciou esta solicitação, ignore este e-mail.

Atenciosamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_pt.html b/emails/translations/mesh-invite-min_pt.html new file mode 100644 index 00000000..7af9f395 --- /dev/null +++ b/emails/translations/mesh-invite-min_pt.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Convite
[[[SERVERNAME]]] - Instalação do Agente

Olá [[[NAME]]],

Usuário [[[USERNAME]]] no servidor [[[SERVERNAME]]] está solicitando a instalação de um software para iniciar uma sessão de controle remoto.

Mensagem: [[[MSG]]]

Clique aqui para baixar o MeshAgent para Windows.

Clique aqui para baixar o MeshAgent para Apple OSX.

Para Linux, recorte e cole o seguinte em um terminal para instalar o agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Para instalar o software, Clique aqui e siga as instruções.

Se você não iniciou esta solicitação, ignore este e-mail.

Cumprimentos,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_ru.html b/emails/translations/mesh-invite-min_ru.html new file mode 100644 index 00000000..392d8af9 --- /dev/null +++ b/emails/translations/mesh-invite-min_ru.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Приглашение
[[[SERVERNAME]]] - Установка агента

Здравствуйте, [[[NAME]]],

Пользователь [[[USERNAME]]] на сервере [[[SERVERNAME]]] просит вас установить программное обеспечение, чтобы начать сеанс удаленного управления.

Сообщение: [[[MSG]]]

Нажмите здесь, чтобы загрузить MeshAgent для Windows.

Нажмите здесь, чтобы загрузить MeshAgent для Apple OSX.

Для Linux вырезайте и вставляйте в терминал следующее, чтобы установить агент:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Нажмите здесь, чтобы загрузить MeshCentral Assistant для Windows.

Чтобы установить программное обеспечение, кликните сюда и следуйте инструкциям.

Если вы не инициировали этот запрос, игнорируйте это письмо.

С уважением,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_sv.html b/emails/translations/mesh-invite-min_sv.html new file mode 100644 index 00000000..1a8c9f58 --- /dev/null +++ b/emails/translations/mesh-invite-min_sv.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Inbjudan
[[[SERVERNAME]]] - Agentinstallation

Hej [[[NAME]]]

Användare [[[USERNAME]]] på servern [[[SERVERNAME]]] ber dig att installera programvara för att starta en fjärrkontrollsession.

Meddelande: [[[MSG]]]

Klicka här för att ladda ner MeshAgent för Windows.

Klicka här för att ladda ner MeshAgent för Apple OSX.

För Linux, klipp och klistra in följande i en terminal för att installera agenten:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

För att installera programvaran, Klicka här och följ instruktionerna.

Om du inte initierade denna begäran, ignorerar du det här meddelandet.

Vänliga hälsningar,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_tr.html b/emails/translations/mesh-invite-min_tr.html new file mode 100644 index 00000000..bad7eac1 --- /dev/null +++ b/emails/translations/mesh-invite-min_tr.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]] - Davet
[[[SERVERNAME]]] - Agent Kurulumu

Merhaba [[[NAME]]],

Sunucudaki kullanıcı [[[USERNAME]]] [[[SERVERNAME]]] bir uzaktan kontrol oturumu başlatmak için yazılım yüklemenizi istiyor.

İleti: [[[MSG]]]

Windows için MeshAgent'ı indirmek için buraya tıklayın.

Apple OSX için MeshAgent'ı indirmek için burayı tıklayın.

Linux için, aracıyı yüklemek için aşağıdakileri kesip bir terminale yapıştırın:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Yazılımı kurmak için, buraya Tıkla ve talimatları izleyin.

Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.

Saygılarımla,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_zh-chs.html b/emails/translations/mesh-invite-min_zh-chs.html new file mode 100644 index 00000000..be76a0cc --- /dev/null +++ b/emails/translations/mesh-invite-min_zh-chs.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-邀请
[[[SERVERNAME]]]-代理程序安装

您好[[[NAME]]],

服务器上的使用者[[[USERNAME]]] [[[SERVERNAME]]] 正在要求您安装软件以启动远程控制会话。

消息: [[[MSG]]]

单击此处下载适用于Windows的MeshAgent。

单击此处下载适用于Apple OSX的MeshAgent。

对于Linux,将以下内容剪切并粘贴到终端中以安装代理软件:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

要安装软件, 点击这里 并按照说明进行操作。

如果您没有发起此请求,请不理此邮件。

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_zh-cht.html b/emails/translations/mesh-invite-min_zh-cht.html new file mode 100644 index 00000000..ee4a9a09 --- /dev/null +++ b/emails/translations/mesh-invite-min_zh-cht.html @@ -0,0 +1 @@ +
[[[SERVERNAME]]]-邀請
[[[SERVERNAME]]]-代理程序安裝

你好[[[NAME]]],

伺服器上的使用者[[[USERNAME]]] [[[SERVERNAME]] 正在要求你安裝軟體以啟動遠程控制會話。

訊息: [[[MSG]]]

單擊此處下載適用於Windows的MeshAgent。

單擊此處下載適用於Apple OSX的MeshAgent。

對於Linux,將以下內容剪切並粘貼到終端中以安裝代理軟體:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

要安裝軟體, 點擊這裡 並按照說明進行操作。

如果你沒有發起此請求,請不理此電郵。

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/package.json b/package.json index 1c2ddb8c..805639c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "1.0.41", + "version": "1.0.42", "keywords": [ "Remote Device Management", "Remote Device Monitoring", diff --git a/translate/translate.json b/translate/translate.json index e13bf14b..fc50fe41 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -46,8 +46,8 @@ "zh-chs": " + CIRA", "zh-cht": " + CIRA", "xloc": [ - "default.handlebars->41->1907", - "default.handlebars->41->1909" + "default.handlebars->41->1910", + "default.handlebars->41->1912" ] }, { @@ -299,7 +299,7 @@ "zh-chs": " 可以使用密码提示,但不建议使用。", "zh-cht": " 可以使用密碼提示,但不建議使用。", "xloc": [ - "default.handlebars->41->1786" + "default.handlebars->41->1789" ] }, { @@ -324,8 +324,8 @@ "zh-chs": " 用户需要先登录到该服务器一次,然后才能将其添加到设备组。", "zh-cht": " 用戶需要先登入到該伺服器一次,然後才能將其新增到裝置群。", "xloc": [ - "default.handlebars->41->2027", - "default.handlebars->41->2582" + "default.handlebars->41->2030", + "default.handlebars->41->2585" ] }, { @@ -789,7 +789,7 @@ "zh-chs": "(可选的)", "zh-cht": "(可選的)", "xloc": [ - "default.handlebars->41->513" + "default.handlebars->41->515" ] }, { @@ -834,8 +834,8 @@ "zh-chs": "* 8个字符,1个大写,1个小写,1个数字,1个非字母数字。", "zh-cht": "* 8個字符,1個大寫,1個小寫,1個數字,1個非字母數字。", "xloc": [ - "default.handlebars->41->1987", - "default.handlebars->41->475" + "default.handlebars->41->1990", + "default.handlebars->41->477" ] }, { @@ -860,7 +860,7 @@ "zh-chs": "*对于BSD,首先运行“ pkg install wget sudo bash ”。", "zh-cht": "*對於BSD,首先運行“ pkg install wget sudo bash ”。", "xloc": [ - "default.handlebars->41->566" + "default.handlebars->41->568" ] }, { @@ -928,10 +928,14 @@ "zh-chs": ",", "zh-cht": ",", "xloc": [ - "default-mobile.handlebars->11->701", - "default.handlebars->41->2101", - "default.handlebars->41->2365", - "default.handlebars->41->894" + "default-mobile.handlebars->11->558", + "default-mobile.handlebars->11->560", + "default-mobile.handlebars->11->700", + "default.handlebars->41->1451", + "default.handlebars->41->1453", + "default.handlebars->41->2104", + "default.handlebars->41->2368", + "default.handlebars->41->896" ] }, { @@ -1047,8 +1051,8 @@ "zh-chs": ",MQTT在线", "zh-cht": ",MQTT在線", "xloc": [ - "default-mobile.handlebars->11->605", - "default.handlebars->41->1495" + "default-mobile.handlebars->11->604", + "default.handlebars->41->1498" ] }, { @@ -1072,8 +1076,8 @@ "tr": ", İzin Yok", "zh-chs": ", 不同意", "xloc": [ - "default.handlebars->41->1945", - "default.handlebars->41->983" + "default.handlebars->41->1948", + "default.handlebars->41->987" ] }, { @@ -1098,8 +1102,8 @@ "zh-chs": ",提示同意", "zh-cht": ",提示同意", "xloc": [ - "default.handlebars->41->1946", - "default.handlebars->41->984" + "default.handlebars->41->1949", + "default.handlebars->41->988" ] }, { @@ -1109,7 +1113,7 @@ "ru": ", RDP", "fr": ", RDP", "xloc": [ - "default.handlebars->41->1236" + "default.handlebars->41->1240" ] }, { @@ -1129,8 +1133,8 @@ "ru": ", Ежедневно", "tr": ", Günlük yinelenen", "xloc": [ - "default.handlebars->41->1942", - "default.handlebars->41->980" + "default.handlebars->41->1945", + "default.handlebars->41->984" ] }, { @@ -1150,8 +1154,8 @@ "ru": ", Еженедельно", "tr": ", Haftalık yinelenen", "xloc": [ - "default.handlebars->41->1943", - "default.handlebars->41->981" + "default.handlebars->41->1946", + "default.handlebars->41->985" ] }, { @@ -1193,7 +1197,7 @@ "fr": ", SFTP", "xloc": [ "default-mobile.handlebars->11->468", - "default.handlebars->41->1344" + "default.handlebars->41->1348" ] }, { @@ -1203,7 +1207,7 @@ "ru": ", SSH", "fr": ", SSH", "xloc": [ - "default.handlebars->41->1312" + "default.handlebars->41->1316" ] }, { @@ -1228,7 +1232,7 @@ "zh-chs": ",软体KVM", "zh-cht": ",軟體KVM", "xloc": [ - "default.handlebars->41->1219", + "default.handlebars->41->1223", "sharing.handlebars->11->12" ] }, @@ -1253,8 +1257,8 @@ "tr": ", Araç Çubuğu", "zh-chs": ", 工具栏", "xloc": [ - "default.handlebars->41->1947", - "default.handlebars->41->985" + "default.handlebars->41->1950", + "default.handlebars->41->989" ] }, { @@ -1295,8 +1299,8 @@ "ru": ", Только просмотр рабочего стола", "tr": ", Yalnızca masaüstünü görüntüle", "xloc": [ - "default.handlebars->41->1944", - "default.handlebars->41->982" + "default.handlebars->41->1947", + "default.handlebars->41->986" ] }, { @@ -1324,9 +1328,9 @@ "default-mobile.handlebars->11->411", "default-mobile.handlebars->11->446", "default-mobile.handlebars->11->469", - "default.handlebars->41->1235", - "default.handlebars->41->1313", - "default.handlebars->41->1345", + "default.handlebars->41->1239", + "default.handlebars->41->1317", + "default.handlebars->41->1349", "sharing.handlebars->11->19", "sharing.handlebars->11->27", "sharing.handlebars->11->44", @@ -1522,7 +1526,7 @@ "zh-chs": ",{0}观看", "zh-cht": ",{0}觀看", "xloc": [ - "default.handlebars->41->1230", + "default.handlebars->41->1234", "sharing.handlebars->11->13" ] }, @@ -1629,9 +1633,9 @@ "xloc": [ "default-mobile.handlebars->11->139", "default-mobile.handlebars->11->475", - "default.handlebars->41->1355", - "default.handlebars->41->2162", - "default.handlebars->41->2780", + "default.handlebars->41->1359", + "default.handlebars->41->2165", + "default.handlebars->41->2783", "sharing.handlebars->11->50" ] }, @@ -1793,7 +1797,7 @@ "zh-chs": "1个活跃时段", "zh-cht": "1個活躍時段", "xloc": [ - "default.handlebars->41->2670" + "default.handlebars->41->2673" ] }, { @@ -1819,8 +1823,8 @@ "zh-cht": "1個位元組", "xloc": [ "default-mobile.handlebars->11->149", - "default-mobile.handlebars->11->745", - "default.handlebars->41->2186", + "default-mobile.handlebars->11->744", + "default.handlebars->41->2189", "download.handlebars->3->1", "download2.handlebars->5->1", "sharing.handlebars->11->96" @@ -1859,7 +1863,7 @@ "zh-chs": "1条连接", "zh-cht": "1位聯絡文", "xloc": [ - "default.handlebars->41->1232", + "default.handlebars->41->1236", "sharing.handlebars->11->15" ] }, @@ -1886,8 +1890,8 @@ "zh-cht": "1天", "xloc": [ "default.handlebars->41->262", - "default.handlebars->41->504", - "default.handlebars->41->518" + "default.handlebars->41->506", + "default.handlebars->41->520" ] }, { @@ -1912,7 +1916,7 @@ "zh-chs": "1组", "zh-cht": "1群", "xloc": [ - "default.handlebars->41->2629" + "default.handlebars->41->2632" ] }, { @@ -1938,8 +1942,8 @@ "zh-cht": "1小時", "xloc": [ "default.handlebars->41->260", - "default.handlebars->41->502", - "default.handlebars->41->516" + "default.handlebars->41->504", + "default.handlebars->41->518" ] }, { @@ -1964,8 +1968,8 @@ "zh-chs": "1分钟", "zh-cht": "1分鐘", "xloc": [ - "default.handlebars->41->1064", - "default.handlebars->41->1751" + "default.handlebars->41->1068", + "default.handlebars->41->1754" ] }, { @@ -2016,8 +2020,8 @@ "zh-cht": "1個月", "xloc": [ "default.handlebars->41->264", - "default.handlebars->41->506", - "default.handlebars->41->520" + "default.handlebars->41->508", + "default.handlebars->41->522" ] }, { @@ -2042,7 +2046,7 @@ "zh-chs": "有1个用户没有显示,请使用搜索框查找用户...", "zh-cht": "有1個用戶沒有顯示,請使用搜尋框搜尋用戶...", "xloc": [ - "default.handlebars->41->2397" + "default.handlebars->41->2400" ] }, { @@ -2067,7 +2071,7 @@ "zh-chs": "1个节点", "zh-cht": "1個節點", "xloc": [ - "default.handlebars->41->598" + "default.handlebars->41->600" ] }, { @@ -2134,7 +2138,7 @@ "zh-chs": "1秒", "xloc": [ "default-mobile.handlebars->11->361", - "default.handlebars->41->1099" + "default.handlebars->41->1103" ] }, { @@ -2183,7 +2187,7 @@ "tr": "1 seçili cihaz çevrimdışı.", "zh-chs": "1 个选定的设备处于离线状态。", "xloc": [ - "default.handlebars->41->664" + "default.handlebars->41->666" ] }, { @@ -2207,7 +2211,7 @@ "tr": "1 seçili cihaz çevrimiçi.", "zh-chs": "1 个选定的设备在线。", "xloc": [ - "default.handlebars->41->662" + "default.handlebars->41->664" ] }, { @@ -2239,14 +2243,14 @@ "default-mobile.handlebars->11->218", "default-mobile.handlebars->11->222", "default-mobile.handlebars->11->226", - "default.handlebars->41->2401", - "default.handlebars->41->400", - "default.handlebars->41->403", - "default.handlebars->41->407", - "default.handlebars->41->411", - "default.handlebars->41->415", - "default.handlebars->41->419", - "default.handlebars->41->423" + "default.handlebars->41->2404", + "default.handlebars->41->402", + "default.handlebars->41->405", + "default.handlebars->41->409", + "default.handlebars->41->413", + "default.handlebars->41->417", + "default.handlebars->41->421", + "default.handlebars->41->425" ] }, { @@ -2272,8 +2276,8 @@ "zh-cht": "1週", "xloc": [ "default.handlebars->41->263", - "default.handlebars->41->505", - "default.handlebars->41->519" + "default.handlebars->41->507", + "default.handlebars->41->521" ] }, { @@ -2426,8 +2430,8 @@ "zh-chs": "10分钟", "zh-cht": "10分鐘", "xloc": [ - "default.handlebars->41->1066", - "default.handlebars->41->1753" + "default.handlebars->41->1070", + "default.handlebars->41->1756" ] }, { @@ -2452,7 +2456,7 @@ "zh-chs": "10 秒", "xloc": [ "default-mobile.handlebars->11->363", - "default.handlebars->41->1101" + "default.handlebars->41->1105" ] }, { @@ -2620,8 +2624,8 @@ "zh-chs": "12小时", "zh-cht": "12小時", "xloc": [ - "default.handlebars->41->1074", - "default.handlebars->41->1761" + "default.handlebars->41->1078", + "default.handlebars->41->1764" ] }, { @@ -2774,8 +2778,8 @@ "zh-chs": "15分钟", "zh-cht": "15分鐘", "xloc": [ - "default.handlebars->41->1067", - "default.handlebars->41->1754" + "default.handlebars->41->1071", + "default.handlebars->41->1757" ] }, { @@ -2800,8 +2804,8 @@ "zh-chs": "16小时", "zh-cht": "16小時", "xloc": [ - "default.handlebars->41->1075", - "default.handlebars->41->1762" + "default.handlebars->41->1079", + "default.handlebars->41->1765" ] }, { @@ -2957,8 +2961,8 @@ "zh-chs": "2天", "zh-cht": "2天", "xloc": [ - "default.handlebars->41->1077", - "default.handlebars->41->1764" + "default.handlebars->41->1081", + "default.handlebars->41->1767" ] }, { @@ -2983,8 +2987,8 @@ "zh-chs": "2小时", "zh-cht": "2小時", "xloc": [ - "default.handlebars->41->1071", - "default.handlebars->41->1758" + "default.handlebars->41->1075", + "default.handlebars->41->1761" ] }, { @@ -3162,8 +3166,8 @@ "zh-chs": "24小时", "zh-cht": "24小時", "xloc": [ - "default.handlebars->41->1076", - "default.handlebars->41->1763" + "default.handlebars->41->1080", + "default.handlebars->41->1766" ] }, { @@ -3237,7 +3241,7 @@ "zh-chs": "2FA备份代码已清除", "zh-cht": "2FA備份代碼已清除", "xloc": [ - "default.handlebars->41->2297" + "default.handlebars->41->2300" ] }, { @@ -3259,7 +3263,7 @@ "ru": "2-oй фактор", "fr": "Second facteur", "xloc": [ - "default.handlebars->41->2816" + "default.handlebars->41->2819" ] }, { @@ -3284,8 +3288,8 @@ "zh-chs": "启用第二因素身份验证", "zh-cht": "啟用第二因素身份驗證", "xloc": [ - "default.handlebars->41->2415", - "default.handlebars->41->2653" + "default.handlebars->41->2418", + "default.handlebars->41->2656" ] }, { @@ -3434,8 +3438,8 @@ "zh-chs": "30分钟", "zh-cht": "30分鐘", "xloc": [ - "default.handlebars->41->1068", - "default.handlebars->41->1755" + "default.handlebars->41->1072", + "default.handlebars->41->1758" ] }, { @@ -3460,7 +3464,7 @@ "zh-chs": "32 位", "xloc": [ "default-mobile.handlebars->11->512", - "default.handlebars->41->1408" + "default.handlebars->41->1412" ] }, { @@ -3485,8 +3489,8 @@ "zh-chs": "MeshAgent的32位版本", "zh-cht": "MeshAgent的32位版本", "xloc": [ - "default.handlebars->41->556", - "default.handlebars->41->584" + "default.handlebars->41->558", + "default.handlebars->41->586" ] }, { @@ -3538,8 +3542,8 @@ "zh-chs": "4天", "zh-cht": "4天", "xloc": [ - "default.handlebars->41->1078", - "default.handlebars->41->1765" + "default.handlebars->41->1082", + "default.handlebars->41->1768" ] }, { @@ -3564,8 +3568,8 @@ "zh-chs": "4个小时", "zh-cht": "4個小時", "xloc": [ - "default.handlebars->41->1072", - "default.handlebars->41->1759" + "default.handlebars->41->1076", + "default.handlebars->41->1762" ] }, { @@ -3693,8 +3697,8 @@ "zh-chs": "45分钟", "zh-cht": "45分鐘", "xloc": [ - "default.handlebars->41->1069", - "default.handlebars->41->1756" + "default.handlebars->41->1073", + "default.handlebars->41->1759" ] }, { @@ -3744,8 +3748,8 @@ "zh-chs": "5分钟", "zh-cht": "5分鐘", "xloc": [ - "default.handlebars->41->1065", - "default.handlebars->41->1752" + "default.handlebars->41->1069", + "default.handlebars->41->1755" ] }, { @@ -3770,7 +3774,7 @@ "zh-chs": "5秒", "xloc": [ "default-mobile.handlebars->11->362", - "default.handlebars->41->1100" + "default.handlebars->41->1104" ] }, { @@ -3926,8 +3930,8 @@ "zh-chs": "60分钟", "zh-cht": "60分鐘", "xloc": [ - "default.handlebars->41->1070", - "default.handlebars->41->1757" + "default.handlebars->41->1074", + "default.handlebars->41->1760" ] }, { @@ -4004,7 +4008,7 @@ "zh-chs": "64 位", "xloc": [ "default-mobile.handlebars->11->514", - "default.handlebars->41->1410" + "default.handlebars->41->1414" ] }, { @@ -4069,7 +4073,7 @@ "zh-chs": "64位版本的macOS Mesh Agent", "zh-cht": "64位版本的macOS Mesh Agent", "xloc": [ - "default.handlebars->41->571" + "default.handlebars->41->573" ] }, { @@ -4094,8 +4098,8 @@ "zh-chs": "MeshAgent的64位版本", "zh-cht": "MeshAgent的64位版本", "xloc": [ - "default.handlebars->41->560", - "default.handlebars->41->587" + "default.handlebars->41->562", + "default.handlebars->41->589" ] }, { @@ -4164,7 +4168,7 @@ "zh-chs": "7天电源状态", "zh-cht": "7天電源狀態", "xloc": [ - "default.handlebars->41->1134" + "default.handlebars->41->1138" ] }, { @@ -4175,7 +4179,7 @@ "ru": "7 дней", "fr": "7 jours", "xloc": [ - "default.handlebars->41->1766" + "default.handlebars->41->1769" ] }, { @@ -4253,10 +4257,10 @@ "zh-chs": "8小時", "zh-cht": "8小時", "xloc": [ - "default.handlebars->41->1073", - "default.handlebars->41->1760", - "default.handlebars->41->503", - "default.handlebars->41->517" + "default.handlebars->41->1077", + "default.handlebars->41->1763", + "default.handlebars->41->505", + "default.handlebars->41->519" ] }, { @@ -4581,8 +4585,8 @@ "zh-cht": "ACM", "xloc": [ "default-mobile.handlebars->11->297", - "default.handlebars->41->1925", - "default.handlebars->41->812" + "default.handlebars->41->1928", + "default.handlebars->41->814" ] }, { @@ -4652,7 +4656,7 @@ "zh-cht": "AMT", "xloc": [ "default.handlebars->41->381", - "default.handlebars->41->633" + "default.handlebars->41->635" ] }, { @@ -4676,7 +4680,7 @@ "tr": "AMT-OS", "zh-chs": "操作系统", "xloc": [ - "default.handlebars->41->2938" + "default.handlebars->41->2941" ] }, { @@ -4695,7 +4699,7 @@ "ru": "AMT-Redir", "tr": "AMT-Yönlendirme", "xloc": [ - "default.handlebars->41->2823" + "default.handlebars->41->2826" ] }, { @@ -4714,7 +4718,7 @@ "ru": "AMT-WSMAN", "tr": "AMT-WSMAN", "xloc": [ - "default.handlebars->41->2822" + "default.handlebars->41->2825" ] }, { @@ -4870,8 +4874,8 @@ "xloc": [ "default-mobile.handlebars->11->516", "default-mobile.handlebars->11->518", - "default.handlebars->41->831", - "default.handlebars->41->833" + "default.handlebars->41->833", + "default.handlebars->41->835" ] }, { @@ -4896,8 +4900,8 @@ "zh-chs": "拒绝访问", "zh-cht": "拒絕存取", "xloc": [ - "default-mobile.handlebars->11->606", - "default.handlebars->41->1496" + "default-mobile.handlebars->11->605", + "default.handlebars->41->1499" ] }, { @@ -4973,7 +4977,7 @@ "zh-chs": "访问服务器档案", "zh-cht": "存取伺服器檔案", "xloc": [ - "default.handlebars->41->2588" + "default.handlebars->41->2591" ] }, { @@ -5082,11 +5086,11 @@ "default-mobile.handlebars->11->264", "default-mobile.handlebars->11->266", "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountSecurity->1->0", - "default.handlebars->41->1795", - "default.handlebars->41->1797", - "default.handlebars->41->2991", - "default.handlebars->41->772", - "default.handlebars->41->774" + "default.handlebars->41->1798", + "default.handlebars->41->1800", + "default.handlebars->41->2994", + "default.handlebars->41->774", + "default.handlebars->41->776" ] }, { @@ -5110,8 +5114,8 @@ "tr": "Hesap Ayarları", "zh-chs": "帐号设定", "xloc": [ - "default-mobile.handlebars->11->712", - "default.handlebars->41->2867" + "default-mobile.handlebars->11->711", + "default.handlebars->41->2870" ] }, { @@ -5187,7 +5191,7 @@ "zh-chs": "帐户已更改:{0}", "zh-cht": "帳戶已更改:{0}", "xloc": [ - "default.handlebars->41->2270" + "default.handlebars->41->2273" ] }, { @@ -5212,7 +5216,7 @@ "zh-chs": "创建帐户,电子邮件为{0}", "zh-cht": "創建帳戶,電子郵件為{0}", "xloc": [ - "default.handlebars->41->2269" + "default.handlebars->41->2272" ] }, { @@ -5232,7 +5236,7 @@ "ru": "Аккаунт создан, имя {0}.", "tr": "Hesap oluşturuldu, ad {0}.", "xloc": [ - "default.handlebars->41->2332" + "default.handlebars->41->2335" ] }, { @@ -5257,7 +5261,7 @@ "zh-chs": "创建帐户,用户名是{0}", "zh-cht": "帳戶已創建,用戶名是{0}", "xloc": [ - "default.handlebars->41->2268" + "default.handlebars->41->2271" ] }, { @@ -5284,8 +5288,8 @@ "xloc": [ "default-mobile.handlebars->11->64", "default.handlebars->41->199", - "default.handlebars->41->2417", - "default.handlebars->41->2585" + "default.handlebars->41->2420", + "default.handlebars->41->2588" ] }, { @@ -5310,8 +5314,8 @@ "zh-chs": "达到帐户限制。", "zh-cht": "達到帳戶限制。", "xloc": [ - "default-mobile.handlebars->11->724", - "default.handlebars->41->2879", + "default-mobile.handlebars->11->723", + "default.handlebars->41->2882", "login-mobile.handlebars->5->6", "login.handlebars->5->6", "login2.handlebars->7->8" @@ -5366,7 +5370,7 @@ "zh-chs": "帐号登录", "zh-cht": "帳號登錄", "xloc": [ - "default.handlebars->41->2205" + "default.handlebars->41->2208" ] }, { @@ -5390,7 +5394,7 @@ "tr": "{0}, {1}, {2} adresinden hesap girişi", "zh-chs": "来自 {0}、{1}、{2} 的帐户登录", "xloc": [ - "default.handlebars->41->2311" + "default.handlebars->41->2314" ] }, { @@ -5415,7 +5419,7 @@ "zh-chs": "帐户登出", "zh-cht": "帳戶登出", "xloc": [ - "default.handlebars->41->2206" + "default.handlebars->41->2209" ] }, { @@ -5467,7 +5471,7 @@ "zh-chs": "帐户密码已更改:{0}", "zh-cht": "帳戶密碼已更改:{0}", "xloc": [ - "default.handlebars->41->2278" + "default.handlebars->41->2281" ] }, { @@ -5492,7 +5496,7 @@ "zh-chs": "帐户已删除", "zh-cht": "帳戶已刪除", "xloc": [ - "default.handlebars->41->2267" + "default.handlebars->41->2270" ] }, { @@ -5542,8 +5546,8 @@ "zh-chs": "指令", "zh-cht": "指令", "xloc": [ - "default-mobile.handlebars->11->612", - "default.handlebars->41->1502", + "default-mobile.handlebars->11->611", + "default.handlebars->41->1505", "default.handlebars->container->column_l->p42->p42tbl->1->0->8" ] }, @@ -5569,8 +5573,8 @@ "zh-chs": "动作档案", "zh-cht": "動作檔案", "xloc": [ - "default.handlebars->41->1180", - "default.handlebars->41->1182" + "default.handlebars->41->1184", + "default.handlebars->41->1186" ] }, { @@ -5599,7 +5603,7 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->1", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3", - "default.handlebars->41->895", + "default.handlebars->41->897", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->1", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->1", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1" @@ -5627,7 +5631,7 @@ "zh-chs": "使用FAT格式的USB密钥在管理控制模式(ACM)中激活英特尔®AMT。将setup.bin放在其上,然后使用此键引导一台或多台计算机。", "zh-cht": "使用FAT格式的USB密鑰在管理控制模式(ACM)中激活英特爾®AMT。將setup.bin放在其上,然後使用此鍵引導一台或多台計算機。", "xloc": [ - "default.handlebars->41->469" + "default.handlebars->41->471" ] }, { @@ -5702,7 +5706,7 @@ "zh-chs": "如果ACM失败,则激活到CCM", "zh-cht": "如果ACM失敗,則激活到CCM", "xloc": [ - "default.handlebars->41->1978" + "default.handlebars->41->1981" ] }, { @@ -5729,10 +5733,10 @@ "xloc": [ "default-mobile.handlebars->11->292", "default-mobile.handlebars->11->294", - "default-mobile.handlebars->11->567", - "default.handlebars->41->1456", - "default.handlebars->41->805", - "default.handlebars->41->807" + "default-mobile.handlebars->11->566", + "default.handlebars->41->1459", + "default.handlebars->41->807", + "default.handlebars->41->809" ] }, { @@ -5782,8 +5786,8 @@ "zh-chs": "主动设备共享", "zh-cht": "主動設備共享", "xloc": [ - "default.handlebars->41->1929", - "default.handlebars->41->967" + "default.handlebars->41->1932", + "default.handlebars->41->971" ] }, { @@ -5807,7 +5811,7 @@ "tr": "Aktif Giriş Anahtarları", "zh-chs": "活动登录令牌", "xloc": [ - "default.handlebars->41->1826" + "default.handlebars->41->1829" ] }, { @@ -5827,7 +5831,7 @@ "ru": "Активный пользователь", "tr": "Aktif Kullanıcı", "xloc": [ - "default.handlebars->41->849" + "default.handlebars->41->851" ] }, { @@ -5847,7 +5851,7 @@ "ru": "Активные пользователи", "tr": "Aktif Kullanıcılar", "xloc": [ - "default.handlebars->41->848" + "default.handlebars->41->850" ] }, { @@ -5894,8 +5898,8 @@ "zh-chs": "添加", "xloc": [ "default-mobile.handlebars->11->438", - "default.handlebars->41->1267", - "default.handlebars->41->1272" + "default.handlebars->41->1271", + "default.handlebars->41->1276" ] }, { @@ -5962,8 +5966,8 @@ "zh-chs": "添加代理", "zh-cht": "新增代理", "xloc": [ - "default.handlebars->41->1919", - "default.handlebars->41->441" + "default.handlebars->41->1922", + "default.handlebars->41->443" ] }, { @@ -6010,10 +6014,10 @@ "zh-chs": "添加设备", "zh-cht": "新增裝置", "xloc": [ - "default.handlebars->41->1923", - "default.handlebars->41->2560", - "default.handlebars->41->2719", - "default.handlebars->41->445" + "default.handlebars->41->1926", + "default.handlebars->41->2563", + "default.handlebars->41->2722", + "default.handlebars->41->447" ] }, { @@ -6038,7 +6042,7 @@ "zh-chs": "添加设备日志", "zh-cht": "新增裝置日誌", "xloc": [ - "default.handlebars->41->1040" + "default.handlebars->41->1044" ] }, { @@ -6063,9 +6067,9 @@ "zh-chs": "添加设备组", "zh-cht": "新增裝置群", "xloc": [ - "default.handlebars->41->2063", - "default.handlebars->41->2554", - "default.handlebars->41->2707", + "default.handlebars->41->2066", + "default.handlebars->41->2557", + "default.handlebars->41->2710", "default.handlebars->41->357" ] }, @@ -6091,7 +6095,7 @@ "zh-chs": "添加设备组权限", "zh-cht": "新增裝置群權限", "xloc": [ - "default.handlebars->41->2060" + "default.handlebars->41->2063" ] }, { @@ -6116,8 +6120,8 @@ "zh-chs": "添加设备权限", "zh-cht": "新增裝置權限", "xloc": [ - "default.handlebars->41->2065", - "default.handlebars->41->2067" + "default.handlebars->41->2068", + "default.handlebars->41->2070" ] }, { @@ -6164,7 +6168,7 @@ "zh-chs": "添加英特尔®AMT设备", "zh-cht": "新增Intel® AMT裝置", "xloc": [ - "default.handlebars->41->465" + "default.handlebars->41->467" ] }, { @@ -6214,7 +6218,7 @@ "zh-chs": "添加本地", "zh-cht": "新增本地", "xloc": [ - "default.handlebars->41->435" + "default.handlebars->41->437" ] }, { @@ -6260,7 +6264,7 @@ "zh-chs": "添加成员身份", "zh-cht": "新增成員身份", "xloc": [ - "default.handlebars->41->2739" + "default.handlebars->41->2742" ] }, { @@ -6285,7 +6289,7 @@ "zh-chs": "添加 Mesh Agent", "zh-cht": "新增 Mesh Agent", "xloc": [ - "default.handlebars->41->597" + "default.handlebars->41->599" ] }, { @@ -6331,8 +6335,8 @@ "zh-chs": "添加安全密钥", "zh-cht": "新增安全密鑰", "xloc": [ - "default.handlebars->41->1541", - "default.handlebars->41->1542", + "default.handlebars->41->1544", + "default.handlebars->41->1545", "default.handlebars->41->230", "default.handlebars->41->232", "default.handlebars->41->235", @@ -6361,8 +6365,8 @@ "zh-chs": "添加用户", "zh-cht": "新增用戶", "xloc": [ - "default-mobile.handlebars->11->637", - "default.handlebars->41->959" + "default-mobile.handlebars->11->636", + "default.handlebars->41->963" ] }, { @@ -6387,7 +6391,7 @@ "zh-chs": "添加用户设备权限", "zh-cht": "新增用戶裝置權限", "xloc": [ - "default.handlebars->41->2070" + "default.handlebars->41->2073" ] }, { @@ -6412,10 +6416,10 @@ "zh-chs": "添加用户组", "zh-cht": "新增用戶群", "xloc": [ - "default.handlebars->41->1915", - "default.handlebars->41->2062", - "default.handlebars->41->2713", - "default.handlebars->41->960" + "default.handlebars->41->1918", + "default.handlebars->41->2065", + "default.handlebars->41->2716", + "default.handlebars->41->964" ] }, { @@ -6440,7 +6444,7 @@ "zh-chs": "添加用户组设备权限", "zh-cht": "新增用戶群裝置權限", "xloc": [ - "default.handlebars->41->2072" + "default.handlebars->41->2075" ] }, { @@ -6465,7 +6469,7 @@ "zh-chs": "将用户添加到设备组", "zh-cht": "將用戶新增到裝置群", "xloc": [ - "default-mobile.handlebars->11->677" + "default-mobile.handlebars->11->676" ] }, { @@ -6512,8 +6516,8 @@ "zh-chs": "添加用户", "zh-cht": "新增用戶", "xloc": [ - "default.handlebars->41->1914", - "default.handlebars->41->2549" + "default.handlebars->41->1917", + "default.handlebars->41->2552" ] }, { @@ -6538,7 +6542,7 @@ "zh-chs": "将用户添加到设备组", "zh-cht": "將用戶新增到裝置群", "xloc": [ - "default.handlebars->41->2059" + "default.handlebars->41->2062" ] }, { @@ -6563,7 +6567,7 @@ "zh-chs": "将用户添加到用户组", "zh-cht": "將用戶新增到用戶群", "xloc": [ - "default.handlebars->41->2584" + "default.handlebars->41->2587" ] }, { @@ -6612,7 +6616,7 @@ "tr": "\\\"{0}\\\" cihaz grubuna yerel bir cihaz ekleyin.", "zh-chs": "将本地设备添加到设备组 \\\"{0}\\\"。", "xloc": [ - "default.handlebars->41->446" + "default.handlebars->41->448" ] }, { @@ -6637,7 +6641,7 @@ "zh-chs": "通过扫描本地网络添加新的英特尔®AMT计算机。", "zh-cht": "通過掃描本地網絡新增新的Intel® AMT電腦。", "xloc": [ - "default.handlebars->41->436" + "default.handlebars->41->438" ] }, { @@ -6684,7 +6688,7 @@ "zh-chs": "添加位于本地网络上的新英特尔®AMT计算机。", "zh-cht": "新增位於本地網絡上的新Intel® AMT電腦。", "xloc": [ - "default.handlebars->41->434" + "default.handlebars->41->436" ] }, { @@ -6709,7 +6713,7 @@ "zh-chs": "将新的英特尔®AMT设备添加到设备组“{0}”。", "zh-cht": "將新的Intel® AMT裝置新增到裝置群“{0}”。", "xloc": [ - "default.handlebars->41->455" + "default.handlebars->41->457" ] }, { @@ -6734,8 +6738,8 @@ "zh-chs": "通过安装Mesh Agent将新计算机添加到该设备组。", "zh-cht": "通過安裝Mesh Agent將新電腦新增到該裝置群。", "xloc": [ - "default.handlebars->41->1918", - "default.handlebars->41->440" + "default.handlebars->41->1921", + "default.handlebars->41->442" ] }, { @@ -6759,8 +6763,8 @@ "tr": "Yerel ağda bulunan cihazı ekleyin.", "zh-chs": "添加位于本地网络上的设备。", "xloc": [ - "default.handlebars->41->1922", - "default.handlebars->41->444" + "default.handlebars->41->1925", + "default.handlebars->41->446" ] }, { @@ -6784,7 +6788,7 @@ "tr": "Yerel cihaz ekle", "zh-chs": "添加本地设备", "xloc": [ - "default.handlebars->41->454" + "default.handlebars->41->456" ] }, { @@ -6809,7 +6813,7 @@ "zh-chs": "添加标签", "zh-cht": "新增標籤", "xloc": [ - "default.handlebars->41->678" + "default.handlebars->41->680" ] }, { @@ -6834,7 +6838,7 @@ "zh-chs": "通过定期在远程设备上以管理员身份运行MeshCmd,添加,激活和配置Intel®AMT以将“{0}”分组。", "zh-cht": "通過定期在遠程設備上以管理員身份運行MeshCmd,添加,激活和配置Intel®AMT以將“{0}”分組。", "xloc": [ - "default.handlebars->41->466" + "default.handlebars->41->468" ] }, { @@ -6859,7 +6863,7 @@ "zh-chs": "添加了身份验证应用程序", "zh-cht": "添加了身份驗證應用程序", "xloc": [ - "default.handlebars->41->2294" + "default.handlebars->41->2297" ] }, { @@ -6884,7 +6888,7 @@ "zh-chs": "已将设备共享{0}从{1}添加到{2}", "zh-cht": "已將設備共享{0}從{1}添加到{2}", "xloc": [ - "default.handlebars->41->2305" + "default.handlebars->41->2308" ] }, { @@ -6904,7 +6908,7 @@ "ru": "Добавлен ежедневный общий доступ к устройству {0}.", "tr": "Her gün yinelenen {0} cihaz paylaşımı eklendi.", "xloc": [ - "default.handlebars->41->2342" + "default.handlebars->41->2345" ] }, { @@ -6924,7 +6928,7 @@ "ru": "Добавлен еженедельный общий доступ к устройству {0}.", "tr": "Haftalık olarak yinelenen {0} cihaz paylaşımı eklendi.", "xloc": [ - "default.handlebars->41->2343" + "default.handlebars->41->2346" ] }, { @@ -6944,7 +6948,7 @@ "ru": "Добавлен общий доступ к устройству {0} с неограниченным временем.", "tr": "Sınırsız süre ile cihaz paylaşımı {0} eklendi.", "xloc": [ - "default.handlebars->41->2335" + "default.handlebars->41->2338" ] }, { @@ -6969,8 +6973,8 @@ "zh-chs": "已将设备{0}添加到设备组{1}", "zh-cht": "已將設備{0}添加到設備組{1}", "xloc": [ - "default.handlebars->41->2261", - "default.handlebars->41->2288" + "default.handlebars->41->2264", + "default.handlebars->41->2291" ] }, { @@ -6994,7 +6998,7 @@ "tr": "Giriş anahtarı eklendi", "zh-chs": "添加登录令牌", "xloc": [ - "default.handlebars->41->2319" + "default.handlebars->41->2322" ] }, { @@ -7018,7 +7022,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulama cihazı eklendi", "zh-chs": "新增推送通知认证装置", "xloc": [ - "default.handlebars->41->2317" + "default.handlebars->41->2320" ] }, { @@ -7043,7 +7047,7 @@ "zh-chs": "添加了安全密钥", "zh-cht": "添加了安全密鑰", "xloc": [ - "default.handlebars->41->2299" + "default.handlebars->41->2302" ] }, { @@ -7068,7 +7072,7 @@ "zh-chs": "已将用户组{0}添加到设备组{1}", "zh-cht": "已將用戶組{0}添加到設備組{1}", "xloc": [ - "default.handlebars->41->2272" + "default.handlebars->41->2275" ] }, { @@ -7093,8 +7097,8 @@ "zh-chs": "已将用户{0}添加到用户组{1}", "zh-cht": "已將用戶{0}添加到用戶組{1}", "xloc": [ - "default.handlebars->41->2275", - "default.handlebars->41->2284" + "default.handlebars->41->2278", + "default.handlebars->41->2287" ] }, { @@ -7169,8 +7173,8 @@ "zh-chs": "管理员控制模式(ACM)", "zh-cht": "管理員控制模式(ACM)", "xloc": [ - "default-mobile.handlebars->11->569", - "default.handlebars->41->1458" + "default-mobile.handlebars->11->568", + "default.handlebars->41->1461" ] }, { @@ -7195,8 +7199,8 @@ "zh-chs": "管理员凭证", "zh-cht": "管理員憑證", "xloc": [ - "default-mobile.handlebars->11->575", - "default.handlebars->41->1464" + "default-mobile.handlebars->11->574", + "default.handlebars->41->1467" ] }, { @@ -7247,7 +7251,7 @@ "zh-chs": "管理领域", "zh-cht": "管理領域", "xloc": [ - "default.handlebars->41->2633" + "default.handlebars->41->2636" ] }, { @@ -7298,7 +7302,7 @@ "zh-chs": "管理领域", "zh-cht": "管理領域", "xloc": [ - "default.handlebars->41->2482" + "default.handlebars->41->2485" ] }, { @@ -7323,7 +7327,7 @@ "zh-chs": "管理员", "zh-cht": "管理員", "xloc": [ - "default.handlebars->41->2409" + "default.handlebars->41->2412" ] }, { @@ -7348,7 +7352,7 @@ "zh-chs": "南非文", "zh-cht": "南非文", "xloc": [ - "default.handlebars->41->1544" + "default.handlebars->41->1547" ] }, { @@ -7377,11 +7381,11 @@ "default-mobile.handlebars->11->256", "default-mobile.handlebars->11->313", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1", - "default.handlebars->41->2137", - "default.handlebars->41->2150", - "default.handlebars->41->2936", + "default.handlebars->41->2140", + "default.handlebars->41->2153", + "default.handlebars->41->2939", "default.handlebars->41->377", - "default.handlebars->41->629", + "default.handlebars->41->631", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1", "default.handlebars->container->dialog->dialogBody->dialog7->1->td7meshkvm" ] @@ -7408,8 +7412,8 @@ "zh-chs": "代理+英特尔AMT", "zh-cht": "代理+Intel® AMT", "xloc": [ - "default.handlebars->41->2139", - "default.handlebars->41->2152" + "default.handlebars->41->2142", + "default.handlebars->41->2155" ] }, { @@ -7460,8 +7464,8 @@ "zh-chs": "代理控制台", "zh-cht": "代理控制台", "xloc": [ - "default-mobile.handlebars->11->683", - "default.handlebars->41->2080" + "default-mobile.handlebars->11->682", + "default.handlebars->41->2083" ] }, { @@ -7486,7 +7490,7 @@ "zh-chs": "代理错误计数器", "zh-cht": "代理錯誤計數器", "xloc": [ - "default.handlebars->41->2905" + "default.handlebars->41->2908" ] }, { @@ -7561,7 +7565,7 @@ "zh-cht": "代理訊息", "xloc": [ "default-mobile.handlebars->11->229", - "default.handlebars->41->426" + "default.handlebars->41->428" ] }, { @@ -7653,8 +7657,8 @@ "ru": "Общий доступ из Агента", "tr": "Agent Kendisinin-Paylaşımı", "xloc": [ - "default.handlebars->41->1948", - "default.handlebars->41->986" + "default.handlebars->41->1951", + "default.handlebars->41->990" ] }, { @@ -7679,7 +7683,7 @@ "zh-chs": "代理时段", "zh-cht": "代理時段", "xloc": [ - "default.handlebars->41->2921" + "default.handlebars->41->2924" ] }, { @@ -7726,7 +7730,7 @@ "zh-cht": "代理標籤", "xloc": [ "default-mobile.handlebars->11->310", - "default.handlebars->41->828" + "default.handlebars->41->830" ] }, { @@ -7776,7 +7780,7 @@ "zh-chs": "代理类型", "zh-cht": "代理類型", "xloc": [ - "default.handlebars->41->2148", + "default.handlebars->41->2151", "default.handlebars->container->column_l->p21->p21main->1->1->meshOsChartDiv->1" ] }, @@ -7827,7 +7831,7 @@ "zh-chs": "代理关闭了与服务器压缩的{0}%代理会话。已发送:{1},已压缩:{2}", "zh-cht": "代理關閉了與{0}%代理到服務器壓縮的會話。已發送:{1},已壓縮:{2}", "xloc": [ - "default.handlebars->41->2258" + "default.handlebars->41->2261" ] }, { @@ -7853,8 +7857,8 @@ "zh-cht": "代理已連接", "xloc": [ "default.handlebars->41->243", - "default.handlebars->41->946", - "default.handlebars->41->947" + "default.handlebars->41->950", + "default.handlebars->41->951" ] }, { @@ -8007,8 +8011,8 @@ "zh-chs": "代理离线", "zh-cht": "代理離線", "xloc": [ - "default-mobile.handlebars->11->604", - "default.handlebars->41->1494" + "default-mobile.handlebars->11->603", + "default.handlebars->41->1497" ] }, { @@ -8033,8 +8037,8 @@ "zh-chs": "代理在线", "zh-cht": "代理在線", "xloc": [ - "default-mobile.handlebars->11->603", - "default.handlebars->41->1493" + "default-mobile.handlebars->11->602", + "default.handlebars->41->1496" ] }, { @@ -8122,7 +8126,7 @@ "zh-chs": "代理在特权降低的远程设备上运行。", "zh-cht": "代理在特權降低的遠程設備上運行。", "xloc": [ - "default.handlebars->41->940" + "default.handlebars->41->944" ] }, { @@ -8231,9 +8235,9 @@ "zh-chs": "代理", "zh-cht": "代理", "xloc": [ - "default.handlebars->41->2110", - "default.handlebars->41->2949", - "default.handlebars->41->522" + "default.handlebars->41->2113", + "default.handlebars->41->2952", + "default.handlebars->41->524" ] }, { @@ -8258,7 +8262,7 @@ "zh-chs": "阿尔巴尼亚文", "zh-cht": "阿爾巴尼亞文", "xloc": [ - "default.handlebars->41->1545" + "default.handlebars->41->1548" ] }, { @@ -8286,7 +8290,7 @@ "default-mobile.handlebars->11->148", "default-mobile.handlebars->11->476", "default-mobile.handlebars->11->478", - "default.handlebars->41->2792", + "default.handlebars->41->2795", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->1" ] }, @@ -8312,7 +8316,7 @@ "zh-chs": "全部可用", "zh-cht": "全部可用", "xloc": [ - "default.handlebars->41->2371" + "default.handlebars->41->2374" ] }, { @@ -8323,8 +8327,8 @@ "pt-br": "Todos agentes disponíveis", "ru": "Все доступные агенты", "xloc": [ - "default.handlebars->41->2111", - "default.handlebars->41->523" + "default.handlebars->41->2114", + "default.handlebars->41->525" ] }, { @@ -8349,7 +8353,7 @@ "zh-chs": "所有显示", "zh-cht": "所有顯示", "xloc": [ - "default.handlebars->41->1305" + "default.handlebars->41->1309" ] }, { @@ -8374,7 +8378,7 @@ "zh-chs": "所有事件", "zh-cht": "所有事件", "xloc": [ - "default.handlebars->41->2369" + "default.handlebars->41->2372" ] }, { @@ -8399,9 +8403,9 @@ "zh-chs": "全部聚焦", "zh-cht": "全部聚焦", "xloc": [ - "default.handlebars->41->1237", - "default.handlebars->41->1239", - "default.handlebars->41->1240" + "default.handlebars->41->1241", + "default.handlebars->41->1243", + "default.handlebars->41->1244" ] }, { @@ -8450,8 +8454,8 @@ "zh-chs": "允许用户管理此设备组和该组中的设备。", "zh-cht": "允許用戶管理此裝置群和該群中的裝置。", "xloc": [ - "default.handlebars->41->2025", - "default.handlebars->41->2581" + "default.handlebars->41->2028", + "default.handlebars->41->2584" ] }, { @@ -8476,7 +8480,7 @@ "zh-chs": "允许用户管理此设备。", "zh-cht": "允許用戶管理此裝置。", "xloc": [ - "default.handlebars->41->2026" + "default.handlebars->41->2029" ] }, { @@ -8573,8 +8577,8 @@ "xloc": [ "default-mobile.handlebars->11->431", "default-mobile.handlebars->11->435", - "default.handlebars->41->1260", - "default.handlebars->41->1264" + "default.handlebars->41->1264", + "default.handlebars->41->1268" ] }, { @@ -8584,7 +8588,7 @@ "ru": "Альтернативная оболочка", "fr": "Shell alternatif", "xloc": [ - "default.handlebars->41->1227" + "default.handlebars->41->1231" ] }, { @@ -8661,7 +8665,7 @@ "zh-chs": "备用(F10 = ESC + 0)", "zh-cht": "備用(F10 = ESC + 0)", "xloc": [ - "default.handlebars->41->1339", + "default.handlebars->41->1343", "sharing.handlebars->11->37" ] }, @@ -8735,10 +8739,10 @@ "zh-chs": "一直通知", "zh-cht": "一直通知", "xloc": [ - "default.handlebars->41->1891", - "default.handlebars->41->2540", - "default.handlebars->41->2642", - "default.handlebars->41->858" + "default.handlebars->41->1894", + "default.handlebars->41->2543", + "default.handlebars->41->2645", + "default.handlebars->41->860" ] }, { @@ -8763,10 +8767,10 @@ "zh-chs": "一直提示", "zh-cht": "一直提示", "xloc": [ - "default.handlebars->41->1892", - "default.handlebars->41->2541", - "default.handlebars->41->2643", - "default.handlebars->41->859" + "default.handlebars->41->1895", + "default.handlebars->41->2544", + "default.handlebars->41->2646", + "default.handlebars->41->861" ] }, { @@ -8961,7 +8965,7 @@ "tr": "Android Kurulumu", "zh-chs": "安卓安装", "xloc": [ - "default-mobile.handlebars->11->657" + "default-mobile.handlebars->11->656" ] }, { @@ -9011,8 +9015,8 @@ "tr": "Anti-virüs etkin değil", "zh-chs": "杀毒软件未激活", "xloc": [ - "default.handlebars->41->2141", - "default.handlebars->41->2155" + "default.handlebars->41->2144", + "default.handlebars->41->2158" ] }, { @@ -9038,7 +9042,7 @@ "zh-cht": "防毒軟體", "xloc": [ "default-mobile.handlebars->11->532", - "default.handlebars->41->847" + "default.handlebars->41->849" ] }, { @@ -9063,7 +9067,7 @@ "zh-chs": "任何可支持的", "zh-cht": "任何可支持的", "xloc": [ - "default.handlebars->41->496" + "default.handlebars->41->498" ] }, { @@ -9124,7 +9128,7 @@ "zh-chs": "苹果macOS", "zh-cht": "蘋果macOS", "xloc": [ - "default.handlebars->41->537" + "default.handlebars->41->539" ] }, { @@ -9149,7 +9153,7 @@ "zh-chs": "仅限Apple macOS", "zh-cht": "僅限Apple macOS", "xloc": [ - "default.handlebars->41->498" + "default.handlebars->41->500" ] }, { @@ -9282,7 +9286,7 @@ "tr": "Uygulama, Her zaman bağlı", "zh-chs": "应用程序,始终连接", "xloc": [ - "default.handlebars->41->550" + "default.handlebars->41->552" ] }, { @@ -9306,7 +9310,7 @@ "tr": "Uygulama, Kullanıcı isteği üzerine bağlanın", "zh-chs": "应用程序,根据用户请求连接", "xloc": [ - "default.handlebars->41->549" + "default.handlebars->41->551" ] }, { @@ -9331,7 +9335,7 @@ "zh-chs": "阿拉伯文(阿尔及利亚)", "zh-cht": "阿拉伯文(阿爾及利亞)", "xloc": [ - "default.handlebars->41->1547" + "default.handlebars->41->1550" ] }, { @@ -9356,7 +9360,7 @@ "zh-chs": "阿拉伯文(巴林)", "zh-cht": "阿拉伯文(巴林)", "xloc": [ - "default.handlebars->41->1548" + "default.handlebars->41->1551" ] }, { @@ -9381,7 +9385,7 @@ "zh-chs": "阿拉伯文(埃及)", "zh-cht": "阿拉伯文(埃及)", "xloc": [ - "default.handlebars->41->1549" + "default.handlebars->41->1552" ] }, { @@ -9406,7 +9410,7 @@ "zh-chs": "阿拉伯文(伊拉克)", "zh-cht": "阿拉伯文(伊拉克)", "xloc": [ - "default.handlebars->41->1550" + "default.handlebars->41->1553" ] }, { @@ -9431,7 +9435,7 @@ "zh-chs": "阿拉伯文(约旦)", "zh-cht": "阿拉伯文(約旦)", "xloc": [ - "default.handlebars->41->1551" + "default.handlebars->41->1554" ] }, { @@ -9456,7 +9460,7 @@ "zh-chs": "阿拉伯文(科威特)", "zh-cht": "阿拉伯文(科威特)", "xloc": [ - "default.handlebars->41->1552" + "default.handlebars->41->1555" ] }, { @@ -9481,7 +9485,7 @@ "zh-chs": "阿拉伯文(黎巴嫩)", "zh-cht": "阿拉伯文(黎巴嫩)", "xloc": [ - "default.handlebars->41->1553" + "default.handlebars->41->1556" ] }, { @@ -9506,7 +9510,7 @@ "zh-chs": "阿拉伯文(利比亚)", "zh-cht": "阿拉伯文(利比亞)", "xloc": [ - "default.handlebars->41->1554" + "default.handlebars->41->1557" ] }, { @@ -9531,7 +9535,7 @@ "zh-chs": "阿拉伯文(摩洛哥)", "zh-cht": "阿拉伯文(摩洛哥)", "xloc": [ - "default.handlebars->41->1555" + "default.handlebars->41->1558" ] }, { @@ -9556,7 +9560,7 @@ "zh-chs": "阿拉伯文(阿曼)", "zh-cht": "阿拉伯文(阿曼)", "xloc": [ - "default.handlebars->41->1556" + "default.handlebars->41->1559" ] }, { @@ -9581,7 +9585,7 @@ "zh-chs": "阿拉伯文(卡塔尔)", "zh-cht": "阿拉伯文(卡塔爾)", "xloc": [ - "default.handlebars->41->1557" + "default.handlebars->41->1560" ] }, { @@ -9606,7 +9610,7 @@ "zh-chs": "阿拉伯文(沙特阿拉伯)", "zh-cht": "阿拉伯文(沙特阿拉伯)", "xloc": [ - "default.handlebars->41->1558" + "default.handlebars->41->1561" ] }, { @@ -9631,7 +9635,7 @@ "zh-chs": "阿拉伯文(标准)", "zh-cht": "阿拉伯文(標準)", "xloc": [ - "default.handlebars->41->1546" + "default.handlebars->41->1549" ] }, { @@ -9656,7 +9660,7 @@ "zh-chs": "阿拉伯文(叙利亚)", "zh-cht": "阿拉伯文(敘利亞)", "xloc": [ - "default.handlebars->41->1559" + "default.handlebars->41->1562" ] }, { @@ -9681,7 +9685,7 @@ "zh-chs": "阿拉伯文(突尼斯)", "zh-cht": "阿拉伯文(突尼斯)", "xloc": [ - "default.handlebars->41->1560" + "default.handlebars->41->1563" ] }, { @@ -9706,7 +9710,7 @@ "zh-chs": "阿拉伯文(阿联酋)", "zh-cht": "阿拉伯文(阿聯酋)", "xloc": [ - "default.handlebars->41->1561" + "default.handlebars->41->1564" ] }, { @@ -9731,7 +9735,7 @@ "zh-chs": "阿拉伯文(也门)", "zh-cht": "阿拉伯文(也門)", "xloc": [ - "default.handlebars->41->1562" + "default.handlebars->41->1565" ] }, { @@ -9756,7 +9760,7 @@ "zh-chs": "阿拉贡文", "zh-cht": "阿拉貢文", "xloc": [ - "default.handlebars->41->1563" + "default.handlebars->41->1566" ] }, { @@ -9784,9 +9788,9 @@ "default-mobile.handlebars->11->511", "default-mobile.handlebars->11->513", "default-mobile.handlebars->11->515", - "default.handlebars->41->1407", - "default.handlebars->41->1409", - "default.handlebars->41->1411" + "default.handlebars->41->1411", + "default.handlebars->41->1413", + "default.handlebars->41->1415" ] }, { @@ -9811,7 +9815,7 @@ "zh-chs": "您确定要连接到{0}设备吗?", "zh-cht": "你確定要連接到{0}裝置嗎?", "xloc": [ - "default.handlebars->41->429" + "default.handlebars->41->431" ] }, { @@ -9836,8 +9840,8 @@ "zh-chs": "你确定要删除组{0}吗?删除设备组还将删除该组中有关设备的所有信息。", "zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。", "xloc": [ - "default-mobile.handlebars->11->644", - "default.handlebars->41->1992" + "default-mobile.handlebars->11->643", + "default.handlebars->41->1995" ] }, { @@ -9862,7 +9866,7 @@ "zh-chs": "您确定要删除节点{0}吗?", "zh-cht": "你確定要刪除節點{0}嗎?", "xloc": [ - "default.handlebars->41->1156" + "default.handlebars->41->1160" ] }, { @@ -9887,7 +9891,7 @@ "zh-chs": "您确定要卸载所选代理吗?", "zh-cht": "你確定要卸載所選代理嗎?", "xloc": [ - "default.handlebars->41->1145" + "default.handlebars->41->1149" ] }, { @@ -9912,7 +9916,7 @@ "zh-chs": "您确定要卸载所选的{0}代理吗?", "zh-cht": "你確定要卸載所選的{0}代理嗎?", "xloc": [ - "default.handlebars->41->1144" + "default.handlebars->41->1148" ] }, { @@ -9937,7 +9941,7 @@ "zh-chs": "您确定要{0}插件吗:{1}", "zh-cht": "你確定要{0}外掛嗎:{1}", "xloc": [ - "default.handlebars->41->3000" + "default.handlebars->41->3003" ] }, { @@ -9987,7 +9991,7 @@ "zh-chs": "亚美尼亚文", "zh-cht": "亞美尼亞文", "xloc": [ - "default.handlebars->41->1564" + "default.handlebars->41->1567" ] }, { @@ -10103,7 +10107,7 @@ "zh-chs": "阿萨姆文", "zh-cht": "阿薩姆文", "xloc": [ - "default.handlebars->41->1565" + "default.handlebars->41->1568" ] }, { @@ -10198,8 +10202,8 @@ "tr": "Windows için Asistan (.exe)", "zh-chs": "Windows 助手 (.exe)", "xloc": [ - "default.handlebars->41->576", - "default.handlebars->41->580" + "default.handlebars->41->578", + "default.handlebars->41->582" ] }, { @@ -10248,7 +10252,7 @@ "zh-chs": "阿斯图里亚斯文", "zh-cht": "阿斯圖里亞斯文", "xloc": [ - "default.handlebars->41->1566" + "default.handlebars->41->1569" ] }, { @@ -10273,7 +10277,7 @@ "zh-chs": "尝试激活英特尔(R)AMT ACM模式", "zh-cht": "嘗試激活英特爾(R)AMT ACM模式", "xloc": [ - "default.handlebars->41->2227" + "default.handlebars->41->2230" ] }, { @@ -10321,9 +10325,9 @@ "default-mobile.handlebars->11->447", "default-mobile.handlebars->11->451", "default-mobile.handlebars->11->463", - "default.handlebars->41->1314", "default.handlebars->41->1318", - "default.handlebars->41->1330", + "default.handlebars->41->1322", + "default.handlebars->41->1334", "ssh.handlebars->3->21", "ssh.handlebars->3->22", "ssh.handlebars->3->5", @@ -10352,7 +10356,7 @@ "zh-chs": "认证软件", "zh-cht": "認證軟體", "xloc": [ - "default.handlebars->41->2646" + "default.handlebars->41->2649" ] }, { @@ -10376,9 +10380,9 @@ "tr": "Kimlik Doğrulama Cihazı", "zh-chs": "认证设备", "xloc": [ - "default.handlebars->41->1527", - "default.handlebars->41->1529", - "default.handlebars->41->1533" + "default.handlebars->41->1530", + "default.handlebars->41->1532", + "default.handlebars->41->1536" ] }, { @@ -10404,8 +10408,8 @@ "xloc": [ "default-mobile.handlebars->11->464", "default-mobile.handlebars->11->470", - "default.handlebars->41->1332", - "default.handlebars->41->1347" + "default.handlebars->41->1336", + "default.handlebars->41->1351" ] }, { @@ -10434,8 +10438,8 @@ "default-mobile.handlebars->11->104", "default-mobile.handlebars->11->68", "default-mobile.handlebars->11->71", - "default.handlebars->41->1523", - "default.handlebars->41->1525", + "default.handlebars->41->1526", + "default.handlebars->41->1528", "default.handlebars->41->205", "default.handlebars->41->210" ] @@ -10557,8 +10561,8 @@ "zh-chs": "自动删除", "zh-cht": "自動刪除", "xloc": [ - "default.handlebars->41->1876", - "default.handlebars->41->2362" + "default.handlebars->41->1879", + "default.handlebars->41->2365" ] }, { @@ -10612,7 +10616,7 @@ "zh-chs": "自动下载代理程序核心转储文件:“{0}”", "zh-cht": "自動下載代理程序核心轉儲文件:“{0}”", "xloc": [ - "default.handlebars->41->2308" + "default.handlebars->41->2311" ] }, { @@ -10707,7 +10711,7 @@ "tr": "Etkin olmayan cihazları otomatik olarak kaldırın", "zh-chs": "自动移除非活动设备", "xloc": [ - "default.handlebars->41->2020" + "default.handlebars->41->2023" ] }, { @@ -10732,7 +10736,7 @@ "zh-chs": "可用內存", "zh-cht": "可用內存", "xloc": [ - "default.handlebars->41->2930" + "default.handlebars->41->2933" ] }, { @@ -10757,7 +10761,7 @@ "zh-chs": "阿塞拜疆文", "zh-cht": "阿塞拜疆文", "xloc": [ - "default.handlebars->41->1567" + "default.handlebars->41->1570" ] }, { @@ -10784,9 +10788,9 @@ "default-mobile.handlebars->11->519", "default-mobile.handlebars->11->523", "default-mobile.handlebars->11->527", - "default.handlebars->41->834", - "default.handlebars->41->838", - "default.handlebars->41->842" + "default.handlebars->41->836", + "default.handlebars->41->840", + "default.handlebars->41->844" ] }, { @@ -10811,8 +10815,8 @@ "zh-chs": "的BIOS", "zh-cht": "的BIOS", "xloc": [ - "default-mobile.handlebars->11->582", - "default.handlebars->41->1471" + "default-mobile.handlebars->11->581", + "default.handlebars->41->1474" ] }, { @@ -10923,7 +10927,7 @@ "zh-chs": "退格", "xloc": [ "default-mobile.handlebars->11->414", - "default.handlebars->41->1243" + "default.handlebars->41->1247" ] }, { @@ -10948,7 +10952,7 @@ "zh-chs": "背景与互动", "zh-cht": "背景與互動", "xloc": [ - "default.handlebars->41->545" + "default.handlebars->41->547" ] }, { @@ -10973,10 +10977,10 @@ "zh-chs": "背景与互动", "zh-cht": "背景與互動", "xloc": [ - "default.handlebars->41->2117", - "default.handlebars->41->2124", - "default.handlebars->41->509", - "default.handlebars->41->529" + "default.handlebars->41->2120", + "default.handlebars->41->2127", + "default.handlebars->41->511", + "default.handlebars->41->531" ] }, { @@ -11001,11 +11005,11 @@ "zh-chs": "仅背景", "zh-cht": "僅背景", "xloc": [ - "default.handlebars->41->2118", - "default.handlebars->41->2125", - "default.handlebars->41->510", - "default.handlebars->41->530", - "default.handlebars->41->546" + "default.handlebars->41->2121", + "default.handlebars->41->2128", + "default.handlebars->41->512", + "default.handlebars->41->532", + "default.handlebars->41->548" ] }, { @@ -11056,8 +11060,8 @@ "zh-chs": "备用码", "zh-cht": "備用碼", "xloc": [ - "default.handlebars->41->2649", - "default.handlebars->41->2840" + "default.handlebars->41->2652", + "default.handlebars->41->2843" ] }, { @@ -11113,7 +11117,7 @@ "zh-chs": "错误的签名", "zh-cht": "錯誤的簽名", "xloc": [ - "default.handlebars->41->2912" + "default.handlebars->41->2915" ] }, { @@ -11138,7 +11142,7 @@ "zh-chs": "错误的网络证书", "zh-cht": "錯誤的網絡憑證", "xloc": [ - "default.handlebars->41->2911" + "default.handlebars->41->2914" ] }, { @@ -11163,7 +11167,7 @@ "zh-chs": "巴斯克", "zh-cht": "巴斯克", "xloc": [ - "default.handlebars->41->1568" + "default.handlebars->41->1571" ] }, { @@ -11188,7 +11192,7 @@ "zh-chs": "批处理文件上传", "zh-cht": "批處理文件上傳", "xloc": [ - "default.handlebars->41->694" + "default.handlebars->41->696" ] }, { @@ -11238,7 +11242,7 @@ "zh-chs": "将{0}个文件批量上传到文件夹{1}", "zh-cht": "將{0}個文件批量上傳到文件夾{1}", "xloc": [ - "default.handlebars->41->2307" + "default.handlebars->41->2310" ] }, { @@ -11263,7 +11267,7 @@ "zh-chs": "白俄罗斯文", "zh-cht": "白俄羅斯文", "xloc": [ - "default.handlebars->41->1570" + "default.handlebars->41->1573" ] }, { @@ -11288,7 +11292,7 @@ "zh-chs": "孟加拉", "zh-cht": "孟加拉", "xloc": [ - "default.handlebars->41->1571" + "default.handlebars->41->1574" ] }, { @@ -11362,7 +11366,7 @@ "zh-chs": "引导加载程序", "xloc": [ "default-mobile.handlebars->11->545", - "default.handlebars->41->1424" + "default.handlebars->41->1428" ] }, { @@ -11387,7 +11391,7 @@ "zh-chs": "波斯尼亚文", "zh-cht": "波斯尼亞文", "xloc": [ - "default.handlebars->41->1572" + "default.handlebars->41->1575" ] }, { @@ -11412,7 +11416,7 @@ "zh-chs": "布列塔尼", "zh-cht": "布列塔尼", "xloc": [ - "default.handlebars->41->1573" + "default.handlebars->41->1576" ] }, { @@ -11437,7 +11441,7 @@ "zh-chs": "广播", "zh-cht": "廣播", "xloc": [ - "default.handlebars->41->2547", + "default.handlebars->41->2550", "default.handlebars->container->column_l->p4->3->1->0->3->1" ] }, @@ -11463,7 +11467,7 @@ "zh-chs": "广播消息", "zh-cht": "廣播消息", "xloc": [ - "default.handlebars->41->2464" + "default.handlebars->41->2467" ] }, { @@ -11488,7 +11492,7 @@ "zh-chs": "向所有连接的用户广播消息。", "zh-cht": "向所有連接的用戶廣播消息。", "xloc": [ - "default.handlebars->41->2459" + "default.handlebars->41->2462" ] }, { @@ -11499,7 +11503,7 @@ "pt-br": "Navegador", "ru": "Браузер", "xloc": [ - "default.handlebars->41->2814" + "default.handlebars->41->2817" ] }, { @@ -11559,7 +11563,7 @@ "zh-chs": "保加利亚文", "zh-cht": "保加利亞文", "xloc": [ - "default.handlebars->41->1569" + "default.handlebars->41->1572" ] }, { @@ -11584,7 +11588,7 @@ "zh-chs": "缅甸文", "zh-cht": "緬甸文", "xloc": [ - "default.handlebars->41->1574" + "default.handlebars->41->1577" ] }, { @@ -11608,7 +11612,7 @@ "tr": "Varsayılan olarak, etkin olmayan cihazlar 1 gün sonra kaldırılacaktır.", "zh-chs": "默认情况下,不活动的设备将在 1 天后移除。", "xloc": [ - "default.handlebars->41->2022" + "default.handlebars->41->2025" ] }, { @@ -11632,7 +11636,7 @@ "tr": "Varsayılan olarak, etkin olmayan cihazlar {0} gün sonra kaldırılacaktır.", "zh-chs": "默认情况下,非活动设备将在 {0} 天后移除。", "xloc": [ - "default.handlebars->41->2023" + "default.handlebars->41->2026" ] }, { @@ -11652,7 +11656,7 @@ "ru": "Входящих байт", "tr": "Bayt Girişi", "xloc": [ - "default.handlebars->41->2810" + "default.handlebars->41->2813" ] }, { @@ -11672,7 +11676,7 @@ "ru": "Исходящих байт", "tr": "Bayt Bitti", "xloc": [ - "default.handlebars->41->2811" + "default.handlebars->41->2814" ] }, { @@ -11708,7 +11712,7 @@ "zh-cht": "CCM", "xloc": [ "default-mobile.handlebars->11->296", - "default.handlebars->41->810" + "default.handlebars->41->812" ] }, { @@ -11733,7 +11737,7 @@ "zh-chs": "CCM模式", "zh-cht": "CCM模式", "xloc": [ - "default.handlebars->41->1975" + "default.handlebars->41->1978" ] }, { @@ -11759,9 +11763,9 @@ "zh-cht": "CIRA", "xloc": [ "default-mobile.handlebars->11->257", - "default.handlebars->41->2937", + "default.handlebars->41->2940", "default.handlebars->41->379", - "default.handlebars->41->631" + "default.handlebars->41->633" ] }, { @@ -11786,7 +11790,7 @@ "zh-chs": "CIRA服务器", "zh-cht": "CIRA伺服器", "xloc": [ - "default.handlebars->41->2984" + "default.handlebars->41->2987" ] }, { @@ -11811,7 +11815,7 @@ "zh-chs": "CIRA服务器命令", "zh-cht": "CIRA伺服器指令", "xloc": [ - "default.handlebars->41->2985" + "default.handlebars->41->2988" ] }, { @@ -11856,7 +11860,7 @@ "zh-chs": "CIRA设置", "zh-cht": "CIRA設置", "xloc": [ - "default.handlebars->41->1983" + "default.handlebars->41->1986" ] }, { @@ -11881,9 +11885,9 @@ "zh-chs": "CPU", "zh-cht": "CPU", "xloc": [ - "default-mobile.handlebars->11->588", - "default.handlebars->41->1477", - "default.handlebars->41->2961", + "default-mobile.handlebars->11->587", + "default.handlebars->41->1480", + "default.handlebars->41->2964", "default.handlebars->container->column_l->p40->3->1->p40type->5" ] }, @@ -11909,7 +11913,7 @@ "zh-chs": "CPU负载", "zh-cht": "CPU負載", "xloc": [ - "default.handlebars->41->2926" + "default.handlebars->41->2929" ] }, { @@ -11934,7 +11938,7 @@ "zh-chs": "最近15分钟的CPU负载", "zh-cht": "最近15分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2929" + "default.handlebars->41->2932" ] }, { @@ -11959,7 +11963,7 @@ "zh-chs": "最近5分钟的CPU负载", "zh-cht": "最近5分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2928" + "default.handlebars->41->2931" ] }, { @@ -11984,7 +11988,7 @@ "zh-chs": "最近一分钟的CPU负载", "zh-cht": "最近一分鐘的CPU負載", "xloc": [ - "default.handlebars->41->2927" + "default.handlebars->41->2930" ] }, { @@ -12009,8 +12013,8 @@ "zh-chs": "CR+LF", "zh-cht": "CR+LF", "xloc": [ - "default.handlebars->41->1310", - "default.handlebars->41->1341", + "default.handlebars->41->1314", + "default.handlebars->41->1345", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons", "sharing.handlebars->11->25", "sharing.handlebars->11->39", @@ -12039,7 +12043,7 @@ "zh-chs": "CSV", "zh-cht": "CSV", "xloc": [ - "default.handlebars->41->2379" + "default.handlebars->41->2382" ] }, { @@ -12064,9 +12068,9 @@ "zh-chs": "CSV格式", "zh-cht": "CSV格式", "xloc": [ - "default.handlebars->41->2383", - "default.handlebars->41->2451", - "default.handlebars->41->703" + "default.handlebars->41->2386", + "default.handlebars->41->2454", + "default.handlebars->41->705" ] }, { @@ -12113,7 +12117,7 @@ "zh-chs": "呼叫错误", "zh-cht": "呼叫錯誤", "xloc": [ - "default.handlebars->41->3001" + "default.handlebars->41->3004" ] }, { @@ -12161,9 +12165,9 @@ "agent-translations.json", "default-mobile.handlebars->11->113", "default-mobile.handlebars->dialog->idx_dlgButtonBar", - "default.handlebars->41->1846", - "default.handlebars->41->2990", - "default.handlebars->41->482", + "default.handlebars->41->1849", + "default.handlebars->41->2993", + "default.handlebars->41->484", "default.handlebars->container->dialog->idx_dlgButtonBar", "login-mobile.handlebars->dialog->idx_dlgButtonBar", "login.handlebars->dialog->idx_dlgButtonBar", @@ -12247,12 +12251,12 @@ "zh-chs": "容量", "zh-cht": "容量", "xloc": [ - "default-mobile.handlebars->11->593", - "default-mobile.handlebars->11->598", - "default-mobile.handlebars->11->600", - "default.handlebars->41->1482", - "default.handlebars->41->1487", - "default.handlebars->41->1489" + "default-mobile.handlebars->11->592", + "default-mobile.handlebars->11->597", + "default-mobile.handlebars->11->599", + "default.handlebars->41->1485", + "default.handlebars->41->1490", + "default.handlebars->41->1492" ] }, { @@ -12277,8 +12281,8 @@ "zh-chs": "容量/速度", "zh-cht": "容量/速度", "xloc": [ - "default-mobile.handlebars->11->591", - "default.handlebars->41->1480" + "default-mobile.handlebars->11->590", + "default.handlebars->41->1483" ] }, { @@ -12303,7 +12307,7 @@ "zh-chs": "加泰罗尼亚文", "zh-cht": "加泰羅尼亞文", "xloc": [ - "default.handlebars->41->1575" + "default.handlebars->41->1578" ] }, { @@ -12328,7 +12332,7 @@ "zh-chs": "在这里为中心显示地图", "zh-cht": "在這裡為中心顯示地圖", "xloc": [ - "default.handlebars->41->763" + "default.handlebars->41->765" ] }, { @@ -12400,7 +12404,7 @@ "zh-chs": "查莫罗", "zh-cht": "查莫羅", "xloc": [ - "default.handlebars->41->1576" + "default.handlebars->41->1579" ] }, { @@ -12452,7 +12456,7 @@ "zh-chs": "更改{0}的电邮", "zh-cht": "更改{0}的電郵", "xloc": [ - "default.handlebars->41->2694" + "default.handlebars->41->2697" ] }, { @@ -12477,9 +12481,9 @@ "zh-chs": "更改组", "zh-cht": "更改群", "xloc": [ - "default.handlebars->41->1153", - "default.handlebars->41->1154", - "default.handlebars->41->914" + "default.handlebars->41->1157", + "default.handlebars->41->1158", + "default.handlebars->41->916" ] }, { @@ -12505,8 +12509,8 @@ "zh-cht": "更改密碼", "xloc": [ "default-mobile.handlebars->11->121", - "default.handlebars->41->1792", - "default.handlebars->41->2667" + "default.handlebars->41->1795", + "default.handlebars->41->2670" ] }, { @@ -12531,7 +12535,7 @@ "zh-chs": "更改{0}的密码", "zh-cht": "更改{0}的密碼", "xloc": [ - "default.handlebars->41->2703" + "default.handlebars->41->2706" ] }, { @@ -12556,7 +12560,7 @@ "zh-chs": "更改{0}的真实名称", "zh-cht": "更改{0}的真實名稱", "xloc": [ - "default.handlebars->41->2689" + "default.handlebars->41->2692" ] }, { @@ -12703,7 +12707,7 @@ "zh-chs": "更改该用户的密码", "zh-cht": "更改該用戶的密碼", "xloc": [ - "default.handlebars->41->2666" + "default.handlebars->41->2669" ] }, { @@ -12753,7 +12757,7 @@ "zh-chs": "在此处更改您的帐户电邮地址。", "zh-cht": "在此處更改你的帳戶電郵地址。", "xloc": [ - "default.handlebars->41->1779" + "default.handlebars->41->1782" ] }, { @@ -12778,7 +12782,7 @@ "zh-chs": "在下面的框中两次输入旧密码和新密码,以更改帐户密码。", "zh-cht": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。", "xloc": [ - "default.handlebars->41->1785" + "default.handlebars->41->1788" ] }, { @@ -12803,7 +12807,7 @@ "zh-chs": "更改帐户凭据", "zh-cht": "帳戶憑證已更改", "xloc": [ - "default.handlebars->41->2279" + "default.handlebars->41->2282" ] }, { @@ -12823,7 +12827,7 @@ "ru": "Изменено отображаемое имя учетной записи на {0}.", "tr": "Hesap görünen adı {0} olarak değiştirildi.", "xloc": [ - "default.handlebars->41->2331" + "default.handlebars->41->2334" ] }, { @@ -12848,8 +12852,8 @@ "zh-chs": "{1}组中的设备{0}已更改:{2}", "zh-cht": "{1}組中的設備{0}已更改:{2}", "xloc": [ - "default.handlebars->41->2263", - "default.handlebars->41->2344" + "default.handlebars->41->2266", + "default.handlebars->41->2347" ] }, { @@ -12874,7 +12878,7 @@ "zh-chs": "语言从{1}更改为{2}", "zh-cht": "語言從{1}更改為{2}", "xloc": [ - "default.handlebars->41->2207" + "default.handlebars->41->2210" ] }, { @@ -12899,8 +12903,8 @@ "zh-chs": "已更改{0}的用户设备权限", "zh-cht": "已更改{0}的用戶設備權限", "xloc": [ - "default.handlebars->41->2265", - "default.handlebars->41->2286" + "default.handlebars->41->2268", + "default.handlebars->41->2289" ] }, { @@ -12946,7 +12950,7 @@ "zh-chs": "更改语言将需要刷新页面。", "zh-cht": "更改語言將需要刷新頁面。", "xloc": [ - "default.handlebars->41->1743" + "default.handlebars->41->1746" ] }, { @@ -12971,12 +12975,12 @@ "zh-chs": "聊天", "zh-cht": "聊天", "xloc": [ - "default.handlebars->41->1013", - "default.handlebars->41->1035", - "default.handlebars->41->2400", - "default.handlebars->41->2662", - "default.handlebars->41->2663", - "default.handlebars->41->903" + "default.handlebars->41->1017", + "default.handlebars->41->1039", + "default.handlebars->41->2403", + "default.handlebars->41->2665", + "default.handlebars->41->2666", + "default.handlebars->41->905" ] }, { @@ -13001,10 +13005,10 @@ "zh-chs": "聊天并通知", "zh-cht": "聊天並通知", "xloc": [ - "default-mobile.handlebars->11->673", - "default-mobile.handlebars->11->693", - "default.handlebars->41->2054", - "default.handlebars->41->2091" + "default-mobile.handlebars->11->672", + "default-mobile.handlebars->11->692", + "default.handlebars->41->2057", + "default.handlebars->41->2094" ] }, { @@ -13028,8 +13032,8 @@ "tr": "Sohbet İsteği, Kabul etmek için buraya tıklayın.", "zh-chs": "聊天请求,点击这里接受。", "xloc": [ - "default-mobile.handlebars->11->725", - "default.handlebars->41->2880" + "default-mobile.handlebars->11->724", + "default.handlebars->41->2883" ] }, { @@ -13079,7 +13083,7 @@ "zh-chs": "车臣", "zh-cht": "車臣", "xloc": [ - "default.handlebars->41->1577" + "default.handlebars->41->1580" ] }, { @@ -13204,8 +13208,8 @@ "zh-chs": "检查...", "zh-cht": "檢查...", "xloc": [ - "default.handlebars->41->1543", - "default.handlebars->41->2995" + "default.handlebars->41->1546", + "default.handlebars->41->2998" ] }, { @@ -13230,7 +13234,7 @@ "zh-chs": "中文", "zh-cht": "中文", "xloc": [ - "default.handlebars->41->1578" + "default.handlebars->41->1581" ] }, { @@ -13255,7 +13259,7 @@ "zh-chs": "中文(香港)", "zh-cht": "中文(香港)", "xloc": [ - "default.handlebars->41->1579" + "default.handlebars->41->1582" ] }, { @@ -13280,7 +13284,7 @@ "zh-chs": "中文(中国)", "zh-cht": "中文(中國)", "xloc": [ - "default.handlebars->41->1580" + "default.handlebars->41->1583" ] }, { @@ -13305,7 +13309,7 @@ "zh-chs": "简体中文", "zh-cht": "簡體中文", "xloc": [ - "default.handlebars->41->1740" + "default.handlebars->41->1743" ] }, { @@ -13330,7 +13334,7 @@ "zh-chs": "中文(新加坡)", "zh-cht": "中文(新加坡)", "xloc": [ - "default.handlebars->41->1581" + "default.handlebars->41->1584" ] }, { @@ -13355,7 +13359,7 @@ "zh-chs": "中文(台湾)", "zh-cht": "中文(台灣)", "xloc": [ - "default.handlebars->41->1582" + "default.handlebars->41->1585" ] }, { @@ -13380,7 +13384,7 @@ "zh-chs": "繁体中文", "zh-cht": "繁體中文", "xloc": [ - "default.handlebars->41->1741" + "default.handlebars->41->1744" ] }, { @@ -13431,7 +13435,7 @@ "zh-chs": "楚瓦什", "zh-cht": "楚瓦什", "xloc": [ - "default.handlebars->41->1583" + "default.handlebars->41->1586" ] }, { @@ -13485,11 +13489,11 @@ "default-mobile.handlebars->11->501", "default-mobile.handlebars->11->78", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->5", - "default.handlebars->41->1381", - "default.handlebars->41->1383", "default.handlebars->41->1385", "default.handlebars->41->1387", - "default.handlebars->41->2201", + "default.handlebars->41->1389", + "default.handlebars->41->1391", + "default.handlebars->41->2204", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7", "default.handlebars->container->column_l->p41->3->1", "messenger.handlebars->xbottom->1->1->0->5", @@ -13521,7 +13525,7 @@ "zh-chs": "清除 RDP 凭据?", "xloc": [ "default-mobile.handlebars->11->399", - "default.handlebars->41->1197" + "default.handlebars->41->1201" ] }, { @@ -13546,7 +13550,7 @@ "zh-chs": "清除 SSH 凭据?", "xloc": [ "default-mobile.handlebars->11->397", - "default.handlebars->41->1195" + "default.handlebars->41->1199" ] }, { @@ -13595,8 +13599,8 @@ "tr": "Temsilci çekirdeğini temizle", "zh-chs": "清除代理核心", "xloc": [ - "default.handlebars->41->655", - "default.handlebars->41->698" + "default.handlebars->41->657", + "default.handlebars->41->700" ] }, { @@ -13620,7 +13624,7 @@ "tr": "Seçilen cihazlarda temsilci çekirdeği temizlensin mi?", "zh-chs": "清除选定设备上的代理核心?", "xloc": [ - "default.handlebars->41->697" + "default.handlebars->41->699" ] }, { @@ -13645,8 +13649,8 @@ "zh-chs": "全部清除", "zh-cht": "全部清除", "xloc": [ - "default-mobile.handlebars->11->708", - "default.handlebars->41->2863" + "default-mobile.handlebars->11->707", + "default.handlebars->41->2866" ] }, { @@ -13697,8 +13701,8 @@ "zh-chs": "清除核心", "zh-cht": "清除核心", "xloc": [ - "default-mobile.handlebars->11->614", - "default.handlebars->41->1504" + "default-mobile.handlebars->11->613", + "default.handlebars->41->1507" ] }, { @@ -13748,8 +13752,8 @@ "zh-chs": "清除此通知", "zh-cht": "清除此通知", "xloc": [ - "default-mobile.handlebars->11->707", - "default.handlebars->41->2862" + "default-mobile.handlebars->11->706", + "default.handlebars->41->2865" ] }, { @@ -13835,8 +13839,8 @@ "zh-chs": "单击此处编辑设备组名称", "zh-cht": "單擊此處編輯裝置群名稱", "xloc": [ - "default.handlebars->41->1857", - "default.handlebars->41->2146" + "default.handlebars->41->1860", + "default.handlebars->41->2149" ] }, { @@ -13861,7 +13865,7 @@ "zh-chs": "单击此处编辑服务器端设备名称", "zh-cht": "單擊此處編輯伺服器端裝置名稱", "xloc": [ - "default.handlebars->41->779" + "default.handlebars->41->781" ] }, { @@ -13886,7 +13890,7 @@ "zh-chs": "单击此处编辑用户组名称", "zh-cht": "單擊此處編輯用戶群名稱", "xloc": [ - "default.handlebars->41->2521" + "default.handlebars->41->2524" ] }, { @@ -14009,7 +14013,7 @@ "zh-cht": "單擊確定將驗證電郵發送到:", "xloc": [ "default-mobile.handlebars->11->106", - "default.handlebars->41->1776" + "default.handlebars->41->1779" ] }, { @@ -14102,8 +14106,8 @@ "zh-chs": "客户端控制模式(CCM)", "zh-cht": "客戶端控制模式(CCM)", "xloc": [ - "default-mobile.handlebars->11->568", - "default.handlebars->41->1457" + "default-mobile.handlebars->11->567", + "default.handlebars->41->1460" ] }, { @@ -14128,7 +14132,7 @@ "zh-chs": "客户编号", "zh-cht": "客戶編號", "xloc": [ - "default.handlebars->41->1839" + "default.handlebars->41->1842" ] }, { @@ -14153,7 +14157,7 @@ "zh-chs": "客户端启动的远程访问", "zh-cht": "客戶端啟動的遠程訪問", "xloc": [ - "default.handlebars->41->1982" + "default.handlebars->41->1985" ] }, { @@ -14178,7 +14182,7 @@ "zh-chs": "客户机密", "zh-cht": "客戶機密", "xloc": [ - "default.handlebars->41->1840" + "default.handlebars->41->1843" ] }, { @@ -14231,11 +14235,11 @@ "xloc": [ "agent-translations.json", "default-mobile.handlebars->11->76", - "default.handlebars->41->1298", - "default.handlebars->41->1357", + "default.handlebars->41->1302", + "default.handlebars->41->1361", "default.handlebars->41->217", "default.handlebars->41->225", - "default.handlebars->41->2989", + "default.handlebars->41->2992", "sharing.handlebars->11->52" ] }, @@ -14247,7 +14251,7 @@ "pt-br": "Sessão \\\"{0}\\\" multiplex de área de trabalho fechada, {1} segundo(s)", "ru": "Завершился сеанс мультиплексирования рабочего стола \\\"{0}\\\", {1} сек.", "xloc": [ - "default.handlebars->41->2351" + "default.handlebars->41->2354" ] }, { @@ -14272,7 +14276,7 @@ "zh-chs": "封闭式桌面多路复用会话,{0}秒", "zh-cht": "封閉式桌面多路復用會話,{0}秒", "xloc": [ - "default.handlebars->41->2212" + "default.handlebars->41->2215" ] }, { @@ -14397,7 +14401,7 @@ "zh-chs": "命令", "zh-cht": "命令", "xloc": [ - "default.handlebars->41->595" + "default.handlebars->41->597" ] }, { @@ -14446,10 +14450,10 @@ "zh-chs": "指令", "zh-cht": "指令", "xloc": [ - "default-mobile.handlebars->11->695", - "default.handlebars->41->1015", - "default.handlebars->41->1037", - "default.handlebars->41->2093" + "default-mobile.handlebars->11->694", + "default.handlebars->41->1019", + "default.handlebars->41->1041", + "default.handlebars->41->2096" ] }, { @@ -14474,8 +14478,8 @@ "zh-chs": "通用设备组", "zh-cht": "通用裝置群", "xloc": [ - "default.handlebars->41->2555", - "default.handlebars->41->2708" + "default.handlebars->41->2558", + "default.handlebars->41->2711" ] }, { @@ -14500,8 +14504,8 @@ "zh-chs": "通用设备", "zh-cht": "通用裝置", "xloc": [ - "default.handlebars->41->2561", - "default.handlebars->41->2720" + "default.handlebars->41->2564", + "default.handlebars->41->2723" ] }, { @@ -14526,7 +14530,7 @@ "zh-chs": "编译时间", "xloc": [ "default-mobile.handlebars->11->541", - "default.handlebars->41->1420" + "default.handlebars->41->1424" ] }, { @@ -14572,7 +14576,7 @@ "zh-chs": "压缩档案...", "zh-cht": "壓縮檔案...", "xloc": [ - "default.handlebars->41->1352", + "default.handlebars->41->1356", "sharing.handlebars->11->47" ] }, @@ -14620,15 +14624,15 @@ "zh-cht": "確認", "xloc": [ "default-mobile.handlebars->11->394", - "default-mobile.handlebars->11->645", - "default.handlebars->41->1148", - "default.handlebars->41->1157", - "default.handlebars->41->1993", - "default.handlebars->41->2429", - "default.handlebars->41->2511", - "default.handlebars->41->2577", - "default.handlebars->41->2706", - "default.handlebars->41->666" + "default-mobile.handlebars->11->644", + "default.handlebars->41->1152", + "default.handlebars->41->1161", + "default.handlebars->41->1996", + "default.handlebars->41->2432", + "default.handlebars->41->2514", + "default.handlebars->41->2580", + "default.handlebars->41->2709", + "default.handlebars->41->668" ] }, { @@ -14675,7 +14679,7 @@ "zh-cht": "確認將1個副本複製到此位置?", "xloc": [ "default-mobile.handlebars->11->490", - "default.handlebars->41->1376", + "default.handlebars->41->1380", "sharing.handlebars->11->70" ] }, @@ -14701,7 +14705,7 @@ "zh-chs": "确认{0}个条目的复制到此位置?", "zh-cht": "確認{0}個條目的複製到此位置?", "xloc": [ - "default.handlebars->41->1375", + "default.handlebars->41->1379", "sharing.handlebars->11->69" ] }, @@ -14752,7 +14756,7 @@ "zh-chs": "确认删除选定的帐户?", "zh-cht": "確認刪除所選帳戶?", "xloc": [ - "default.handlebars->41->2428" + "default.handlebars->41->2431" ] }, { @@ -14799,7 +14803,7 @@ "zh-chs": "确认删除选定的用户组?", "zh-cht": "確認刪除所選用戶群?", "xloc": [ - "default.handlebars->41->2510" + "default.handlebars->41->2513" ] }, { @@ -14824,7 +14828,7 @@ "zh-chs": "确认删除用户{0}?", "zh-cht": "確認刪除用戶{0}?", "xloc": [ - "default.handlebars->41->2705" + "default.handlebars->41->2708" ] }, { @@ -14849,7 +14853,7 @@ "zh-chs": "确认删除用户“ {0} ”的成员身份?", "zh-cht": "確認刪除用戶“ {0} ”的成員身份?", "xloc": [ - "default.handlebars->41->2580" + "default.handlebars->41->2583" ] }, { @@ -14874,7 +14878,7 @@ "zh-chs": "确认删除用户组“ {0} ”的成员身份?", "zh-cht": "確認刪除用戶群“ {0} ”的成員身份?", "xloc": [ - "default.handlebars->41->2737" + "default.handlebars->41->2740" ] }, { @@ -14900,7 +14904,7 @@ "zh-cht": "確認將1個條目移動到此位置?", "xloc": [ "default-mobile.handlebars->11->492", - "default.handlebars->41->1378", + "default.handlebars->41->1382", "sharing.handlebars->11->72" ] }, @@ -14926,7 +14930,7 @@ "zh-chs": "确认将{0}个条目移到此位置?", "zh-cht": "確認將{0}個條目移到該位置?", "xloc": [ - "default.handlebars->41->1377", + "default.handlebars->41->1381", "sharing.handlebars->11->71" ] }, @@ -14977,7 +14981,7 @@ "zh-chs": "确认覆盖?", "zh-cht": "確認覆蓋?", "xloc": [ - "default.handlebars->41->2195" + "default.handlebars->41->2198" ] }, { @@ -15002,8 +15006,8 @@ "zh-chs": "确认删除设备“ {0} ”的访问权限?", "zh-cht": "確認刪除裝置“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2570", - "default.handlebars->41->2728" + "default.handlebars->41->2573", + "default.handlebars->41->2731" ] }, { @@ -15028,8 +15032,8 @@ "zh-chs": "确认删除设备组“ {0} ”的访问权限?", "zh-cht": "確認刪除裝置群“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2572", - "default.handlebars->41->2741" + "default.handlebars->41->2575", + "default.handlebars->41->2744" ] }, { @@ -15054,7 +15058,7 @@ "zh-chs": "确认删除用户“ {0} ”的访问权限?", "zh-cht": "確認刪除用戶“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2730" + "default.handlebars->41->2733" ] }, { @@ -15079,7 +15083,7 @@ "zh-chs": "确认删除用户组“ {0} ”的访问权限?", "zh-cht": "確認刪除用戶群“ {0} ”的訪問權限?", "xloc": [ - "default.handlebars->41->2733" + "default.handlebars->41->2736" ] }, { @@ -15104,8 +15108,8 @@ "zh-chs": "确认删除访问权限?", "zh-cht": "確認刪除訪問權限?", "xloc": [ - "default.handlebars->41->2731", - "default.handlebars->41->2734" + "default.handlebars->41->2734", + "default.handlebars->41->2737" ] }, { @@ -15131,7 +15135,7 @@ "zh-cht": "確認刪除身份驗證軟體兩步登入?", "xloc": [ "default-mobile.handlebars->11->105", - "default.handlebars->41->1526" + "default.handlebars->41->1529" ] }, { @@ -15178,7 +15182,7 @@ "zh-chs": "确认删除设备共享“{0}”?", "zh-cht": "確認刪除設備共享“{0}”?", "xloc": [ - "default.handlebars->41->2726" + "default.handlebars->41->2729" ] }, { @@ -15246,7 +15250,7 @@ "tr": "Push kimlik doğrulama cihazının kaldırılması onaylansın mı?", "zh-chs": "确认移除推送认证设备?", "xloc": [ - "default.handlebars->41->1528" + "default.handlebars->41->1531" ] }, { @@ -15271,7 +15275,7 @@ "zh-chs": "确认删除用户“ {0} ”的权限?", "zh-cht": "確認刪除用戶“ {0} ”的權限?", "xloc": [ - "default.handlebars->41->2104" + "default.handlebars->41->2107" ] }, { @@ -15296,7 +15300,7 @@ "zh-chs": "确认删除用户组“ {0} ”的权限?", "zh-cht": "確認刪除用戶群“ {0} ”的權限?", "xloc": [ - "default.handlebars->41->2106" + "default.handlebars->41->2109" ] }, { @@ -15320,7 +15324,7 @@ "tr": "Seçili cihazların kaldırılması onaylansın mı?", "zh-chs": "确认移除所选设备?", "xloc": [ - "default.handlebars->41->660" + "default.handlebars->41->662" ] }, { @@ -15344,7 +15348,7 @@ "tr": "Bu giriş belirtecinin kaldırılması onaylansın mı?", "zh-chs": "确认删除此登录令牌?", "xloc": [ - "default.handlebars->41->1832" + "default.handlebars->41->1835" ] }, { @@ -15391,7 +15395,7 @@ "zh-chs": "确认删除用户{0}?", "zh-cht": "確認刪除用戶{0}?", "xloc": [ - "default-mobile.handlebars->11->704" + "default-mobile.handlebars->11->703" ] }, { @@ -15415,7 +15419,7 @@ "tr": "Seçilen {0} cihazın kaldırılması onaylansın mı?", "zh-chs": "确认移除 {0} 个选定的设备?", "xloc": [ - "default.handlebars->41->661" + "default.handlebars->41->663" ] }, { @@ -15441,7 +15445,7 @@ "zh-cht": "將{1}入口{2}中的{0}限製到此位置?", "xloc": [ "default-mobile.handlebars->11->158", - "default.handlebars->41->2196" + "default.handlebars->41->2199" ] }, { @@ -15470,8 +15474,8 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2span", - "default.handlebars->41->1895", - "default.handlebars->41->862", + "default.handlebars->41->1898", + "default.handlebars->41->864", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3", @@ -15506,7 +15510,7 @@ "zh-chs": "全部连接", "zh-cht": "全部連接", "xloc": [ - "default.handlebars->41->428", + "default.handlebars->41->430", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar" ] }, @@ -15553,7 +15557,7 @@ "zh-chs": "连接到服务器", "zh-cht": "連接到伺服器", "xloc": [ - "default.handlebars->41->1986" + "default.handlebars->41->1989" ] }, { @@ -15733,7 +15737,7 @@ "zh-chs": "已连接的英特尔®AMT", "zh-cht": "已連接的Intel® AMT", "xloc": [ - "default.handlebars->41->2917" + "default.handlebars->41->2920" ] }, { @@ -15758,7 +15762,7 @@ "zh-chs": "已连接的用户", "zh-cht": "已连接的用户", "xloc": [ - "default.handlebars->41->2922" + "default.handlebars->41->2925" ] }, { @@ -15805,7 +15809,7 @@ "zh-cht": "現在已連接", "xloc": [ "default-mobile.handlebars->11->536", - "default.handlebars->41->1415" + "default.handlebars->41->1419" ] }, { @@ -15920,10 +15924,10 @@ "default-mobile.handlebars->11->2", "default-mobile.handlebars->11->48", "default-mobile.handlebars->11->508", - "default.handlebars->41->1401", + "default.handlebars->41->1405", "default.handlebars->41->363", "default.handlebars->41->366", - "default.handlebars->41->431", + "default.handlebars->41->433", "default.handlebars->41->9", "sharing.handlebars->11->2", "sharing.handlebars->11->93", @@ -15974,7 +15978,7 @@ "zh-chs": "连接数量", "zh-cht": "連接數量", "xloc": [ - "default.handlebars->41->2948" + "default.handlebars->41->2951" ] }, { @@ -15999,8 +16003,8 @@ "zh-chs": "连接错误", "xloc": [ "default-mobile.handlebars->11->471", - "default.handlebars->41->1331", - "default.handlebars->41->1348", + "default.handlebars->41->1335", + "default.handlebars->41->1352", "login2.handlebars->7->32" ] }, @@ -16026,7 +16030,7 @@ "zh-chs": "连接转发器", "zh-cht": "連接轉發器", "xloc": [ - "default.handlebars->41->2983" + "default.handlebars->41->2986" ] }, { @@ -16102,9 +16106,9 @@ "zh-cht": "連接性", "xloc": [ "default-mobile.handlebars->11->318", - "default.handlebars->41->2153", + "default.handlebars->41->2156", "default.handlebars->41->353", - "default.handlebars->41->879", + "default.handlebars->41->881", "default.handlebars->container->column_l->p21->p21main->1->1->meshConnChartDiv->1" ] }, @@ -16125,7 +16129,7 @@ "ru": "Согласие", "tr": "Onay", "xloc": [ - "default.handlebars->41->2361" + "default.handlebars->41->2364" ] }, { @@ -16151,8 +16155,8 @@ "zh-cht": "控制台", "xloc": [ "default-mobile.handlebars->11->356", - "default.handlebars->41->1008", - "default.handlebars->41->1030", + "default.handlebars->41->1012", + "default.handlebars->41->1034", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole", "default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole", "default.handlebars->contextMenu->cxconsole" @@ -16180,7 +16184,7 @@ "zh-chs": "控制台 -", "zh-cht": "控制台 -", "xloc": [ - "default.handlebars->41->780" + "default.handlebars->41->782" ] }, { @@ -16205,8 +16209,8 @@ "zh-chs": "控制", "zh-cht": "控制", "xloc": [ - "default.handlebars->41->1007", - "default.handlebars->41->1029", + "default.handlebars->41->1011", + "default.handlebars->41->1033", "messenger.handlebars->remoteImage->3->2" ] }, @@ -16257,7 +16261,7 @@ "zh-chs": "Cookie编码器", "zh-cht": "Cookie編碼器", "xloc": [ - "default.handlebars->41->2967" + "default.handlebars->41->2970" ] }, { @@ -16284,7 +16288,7 @@ "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->568", + "default.handlebars->41->570", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "sharing.handlebars->p13->p13toolbar->fileArea2->3" @@ -16338,8 +16342,8 @@ "tr": "URL'yi panoya kopyala", "zh-chs": "将 URL 复制到剪贴板", "xloc": [ - "default.handlebars->41->577", - "default.handlebars->41->581" + "default.handlebars->41->579", + "default.handlebars->41->583" ] }, { @@ -16364,7 +16368,7 @@ "zh-chs": "将Windows 32位代理URL复制到剪贴板", "zh-cht": "將Windows 32位代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->558" + "default.handlebars->41->560" ] }, { @@ -16389,7 +16393,7 @@ "zh-chs": "将Windows 64位代理URL复制到剪贴板", "zh-cht": "將Windows 64位代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->562" + "default.handlebars->41->564" ] }, { @@ -16450,8 +16454,8 @@ "zh-chs": "将代理URL复制到剪贴板", "zh-cht": "將代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->594", - "default.handlebars->41->596" + "default.handlebars->41->596", + "default.handlebars->41->598" ] }, { @@ -16476,12 +16480,12 @@ "zh-chs": "复制连结到剪贴板", "zh-cht": "複製連結到剪貼板", "xloc": [ - "default.handlebars->41->2164", - "default.handlebars->41->2183", + "default.handlebars->41->2167", + "default.handlebars->41->2186", "default.handlebars->41->295", "default.handlebars->41->317", "default.handlebars->41->319", - "default.handlebars->41->532" + "default.handlebars->41->534" ] }, { @@ -16506,7 +16510,7 @@ "zh-chs": "将macOS代理URL复制到剪贴板", "zh-cht": "將macOS代理URL複製到剪貼板", "xloc": [ - "default.handlebars->41->572" + "default.handlebars->41->574" ] }, { @@ -16558,8 +16562,8 @@ "xloc": [ "agentinvite.handlebars->container->column_l->5->linuxtab", "agentinvite.handlebars->container->column_l->5->linuxtab", - "default.handlebars->41->567", - "default.handlebars->41->590" + "default.handlebars->41->569", + "default.handlebars->41->592" ] }, { @@ -16609,7 +16613,7 @@ "zh-chs": "复制:“{0}”到“{1}”", "zh-cht": "複製:“{0}”到“{1}”", "xloc": [ - "default.handlebars->41->2255" + "default.handlebars->41->2258" ] }, { @@ -16790,7 +16794,7 @@ "zh-chs": "核心服务器", "zh-cht": "核心伺服器", "xloc": [ - "default.handlebars->41->2966" + "default.handlebars->41->2969" ] }, { @@ -16815,7 +16819,7 @@ "zh-chs": "科西嘉文", "zh-cht": "科西嘉文", "xloc": [ - "default.handlebars->41->1584" + "default.handlebars->41->1587" ] }, { @@ -16861,7 +16865,7 @@ "zh-chs": "创建帐号", "zh-cht": "創建帳號", "xloc": [ - "default.handlebars->41->2478", + "default.handlebars->41->2481", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1", "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1", "login2.handlebars->centralTable->1->0->logincell->createpanel->createpanelform->9->1->12->1->1" @@ -16934,7 +16938,7 @@ "tr": "Giriş Simgesi Oluştur", "zh-chs": "创建登录令牌", "xloc": [ - "default.handlebars->41->1769", + "default.handlebars->41->1772", "default.handlebars->41->320" ] }, @@ -16960,7 +16964,7 @@ "zh-chs": "创建用户组", "zh-cht": "創建用戶群", "xloc": [ - "default.handlebars->41->2518" + "default.handlebars->41->2521" ] }, { @@ -16985,7 +16989,7 @@ "zh-chs": "创建连结以与访客共享此设备", "zh-cht": "創建鏈結以與訪客共享此裝置", "xloc": [ - "default.handlebars->41->906" + "default.handlebars->41->908" ] }, { @@ -17010,7 +17014,7 @@ "zh-chs": "使用以下选项创建一个新的设备组。", "zh-cht": "使用以下選項創建一個新的裝置群。", "xloc": [ - "default.handlebars->41->1799" + "default.handlebars->41->1802" ] }, { @@ -17059,7 +17063,7 @@ "tr": "Hesabınıza alternatif giriş olarak kullanılabilecek geçici bir kullanıcı adı ve şifre oluşturun. Bu, araçların veya diğer hizmetlerin hesabınıza erişmesine izin vermek için kullanışlıdır.", "zh-chs": "创建一个临时用户名和密码,可用作您帐户的替代登录名。这对于允许工具或其他服务访问您的帐户非常有用。", "xloc": [ - "default.handlebars->41->1749" + "default.handlebars->41->1752" ] }, { @@ -17084,7 +17088,7 @@ "zh-chs": "创建文件夹(如果不存在)?", "zh-cht": "創建文件夾(如果不存在)?", "xloc": [ - "default.handlebars->41->692" + "default.handlebars->41->694" ] }, { @@ -17109,7 +17113,7 @@ "zh-chs": "创建文件夹:“{0}”", "zh-cht": "創建文件夾:“{0}”", "xloc": [ - "default.handlebars->41->2248" + "default.handlebars->41->2251" ] }, { @@ -17158,7 +17162,7 @@ "zh-chs": "通过导入以下格式的JSON档案一次创建多个帐户:", "zh-cht": "通過導入以下格式的JSON檔案一次創建多個帳戶:", "xloc": [ - "default.handlebars->41->2442" + "default.handlebars->41->2445" ] }, { @@ -17210,7 +17214,7 @@ "zh-chs": "创建的设备组:{0}", "zh-cht": "創建的設備組:{0}", "xloc": [ - "default.handlebars->41->2259" + "default.handlebars->41->2262" ] }, { @@ -17235,7 +17239,7 @@ "zh-chs": "创建一个链接,该链接允许没有帐户的访客在有限的时间内远程控制此设备。", "zh-cht": "創建一個鏈接,該鏈接允許沒有帳戶的訪客在有限的時間內遠程控制此設備。", "xloc": [ - "default.handlebars->41->1054" + "default.handlebars->41->1058" ] }, { @@ -17304,7 +17308,7 @@ "zh-chs": "创建", "zh-cht": "創建", "xloc": [ - "default.handlebars->41->2622" + "default.handlebars->41->2625" ] }, { @@ -17329,7 +17333,7 @@ "zh-chs": "创建时间", "zh-cht": "創作時間", "xloc": [ - "default.handlebars->41->1875" + "default.handlebars->41->1878" ] }, { @@ -17381,8 +17385,8 @@ "zh-chs": "创建者", "zh-cht": "創作者", "xloc": [ - "default.handlebars->41->1873", - "default.handlebars->41->1874" + "default.handlebars->41->1876", + "default.handlebars->41->1877" ] }, { @@ -17408,9 +17412,9 @@ "zh-cht": "證書", "xloc": [ "default-mobile.handlebars->11->330", - "default.handlebars->41->1220", - "default.handlebars->41->1837", - "default.handlebars->41->891" + "default.handlebars->41->1224", + "default.handlebars->41->1840", + "default.handlebars->41->893" ] }, { @@ -17435,7 +17439,7 @@ "zh-chs": "克里语", "zh-cht": "克里語", "xloc": [ - "default.handlebars->41->1585" + "default.handlebars->41->1588" ] }, { @@ -17460,7 +17464,7 @@ "zh-chs": "克罗地亚文", "zh-cht": "克羅地亞文", "xloc": [ - "default.handlebars->41->1586" + "default.handlebars->41->1589" ] }, { @@ -17539,8 +17543,8 @@ "xloc": [ "default-mobile.handlebars->11->432", "default-mobile.handlebars->11->436", - "default.handlebars->41->1261", "default.handlebars->41->1265", + "default.handlebars->41->1269", "default.handlebars->41->60", "sharing.handlebars->11->24" ] @@ -17714,8 +17718,8 @@ "tr": "Mevcut şifre doğru değil.", "zh-chs": "当前密码不正确。", "xloc": [ - "default-mobile.handlebars->11->735", - "default.handlebars->41->2890" + "default-mobile.handlebars->11->734", + "default.handlebars->41->2893" ] }, { @@ -17818,7 +17822,7 @@ "zh-chs": "捷克文", "zh-cht": "捷克文", "xloc": [ - "default.handlebars->41->1587" + "default.handlebars->41->1590" ] }, { @@ -17888,7 +17892,7 @@ "zh-chs": "丹麦文", "zh-cht": "丹麥文", "xloc": [ - "default.handlebars->41->1588" + "default.handlebars->41->1591" ] }, { @@ -17938,7 +17942,7 @@ "zh-chs": "数据通道", "zh-cht": "數據通道", "xloc": [ - "default.handlebars->41->1218", + "default.handlebars->41->1222", "sharing.handlebars->11->11" ] }, @@ -17964,7 +17968,7 @@ "zh-chs": "日期和时间", "zh-cht": "日期和時間", "xloc": [ - "default.handlebars->41->1746" + "default.handlebars->41->1749" ] }, { @@ -17990,9 +17994,9 @@ "zh-cht": "天", "xloc": [ "default-mobile.handlebars->11->384", - "default.handlebars->41->1132", - "default.handlebars->41->2787", - "default.handlebars->41->2790" + "default.handlebars->41->1136", + "default.handlebars->41->2790", + "default.handlebars->41->2793" ] }, { @@ -18017,8 +18021,8 @@ "zh-chs": "停用", "zh-cht": "停用", "xloc": [ - "default.handlebars->41->1905", - "default.handlebars->41->1965" + "default.handlebars->41->1908", + "default.handlebars->41->1968" ] }, { @@ -18043,7 +18047,7 @@ "zh-chs": "如果设置停用CCM", "zh-cht": "如果設置停用CCM", "xloc": [ - "default.handlebars->41->1977" + "default.handlebars->41->1980" ] }, { @@ -18091,7 +18095,7 @@ "zh-cht": "沉睡", "xloc": [ "default-mobile.handlebars->11->241", - "default.handlebars->41->607" + "default.handlebars->41->609" ] }, { @@ -18116,10 +18120,10 @@ "zh-chs": "默认", "zh-cht": "默認", "xloc": [ - "default.handlebars->41->2465", - "default.handlebars->41->2514", - "default.handlebars->41->2525", - "default.handlebars->41->2598" + "default.handlebars->41->2468", + "default.handlebars->41->2517", + "default.handlebars->41->2528", + "default.handlebars->41->2601" ] }, { @@ -18144,7 +18148,7 @@ "zh-chs": "德尔", "xloc": [ "default-mobile.handlebars->11->420", - "default.handlebars->41->1249" + "default.handlebars->41->1253" ] }, { @@ -18174,9 +18178,9 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", "default-mobile.handlebars->dialog->idx_dlgButtonBar->5", - "default.handlebars->41->1367", - "default.handlebars->41->2190", - "default.handlebars->41->750", + "default.handlebars->41->1371", + "default.handlebars->41->2193", + "default.handlebars->41->752", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->dialog->idx_dlgButtonBar->5", @@ -18212,7 +18216,7 @@ "zh-cht": "刪除帳戶", "xloc": [ "default-mobile.handlebars->11->115", - "default.handlebars->41->1784" + "default.handlebars->41->1787" ] }, { @@ -18237,7 +18241,7 @@ "zh-chs": "删除帐户", "zh-cht": "刪除帳戶", "xloc": [ - "default.handlebars->41->2430" + "default.handlebars->41->2433" ] }, { @@ -18263,7 +18267,7 @@ "zh-cht": "刪除裝置", "xloc": [ "default-mobile.handlebars->11->339", - "default.handlebars->41->916" + "default.handlebars->41->918" ] }, { @@ -18287,7 +18291,7 @@ "tr": "Cihazları Sil", "zh-chs": "删除设备", "xloc": [ - "default.handlebars->41->667" + "default.handlebars->41->669" ] }, { @@ -18312,10 +18316,10 @@ "zh-chs": "删除群组", "zh-cht": "刪除群組", "xloc": [ - "default-mobile.handlebars->11->643", - "default-mobile.handlebars->11->646", - "default.handlebars->41->1953", - "default.handlebars->41->1994" + "default-mobile.handlebars->11->642", + "default-mobile.handlebars->11->645", + "default.handlebars->41->1956", + "default.handlebars->41->1997" ] }, { @@ -18341,7 +18345,7 @@ "zh-cht": "刪除節點", "xloc": [ "default-mobile.handlebars->11->392", - "default.handlebars->41->1158" + "default.handlebars->41->1162" ] }, { @@ -18388,7 +18392,7 @@ "zh-chs": "删除用户", "zh-cht": "刪除用戶", "xloc": [ - "default.handlebars->41->2665" + "default.handlebars->41->2668" ] }, { @@ -18413,8 +18417,8 @@ "zh-chs": "删除用户群组", "zh-cht": "刪除用戶群組", "xloc": [ - "default.handlebars->41->2566", - "default.handlebars->41->2578" + "default.handlebars->41->2569", + "default.handlebars->41->2581" ] }, { @@ -18439,7 +18443,7 @@ "zh-chs": "删除用户群组", "zh-cht": "刪除用戶群組", "xloc": [ - "default.handlebars->41->2512" + "default.handlebars->41->2515" ] }, { @@ -18464,7 +18468,7 @@ "zh-chs": "删除用户{0}", "zh-cht": "刪除用戶{0}", "xloc": [ - "default.handlebars->41->2704" + "default.handlebars->41->2707" ] }, { @@ -18490,7 +18494,7 @@ "zh-cht": "刪除帳戶", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountActions->3->9->0", - "default.handlebars->41->2426", + "default.handlebars->41->2429", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7" ] }, @@ -18516,7 +18520,7 @@ "zh-chs": "删除设备", "zh-cht": "刪除裝置", "xloc": [ - "default.handlebars->41->653" + "default.handlebars->41->655" ] }, { @@ -18541,7 +18545,7 @@ "zh-chs": "删除群组", "zh-cht": "刪除群組", "xloc": [ - "default.handlebars->41->2508" + "default.handlebars->41->2511" ] }, { @@ -18566,7 +18570,7 @@ "zh-chs": "删除项目?", "zh-cht": "刪除項目?", "xloc": [ - "default.handlebars->41->751" + "default.handlebars->41->753" ] }, { @@ -18591,7 +18595,7 @@ "zh-chs": "递归删除:“{0}”,{1}个元素已删除", "zh-cht": "遞歸刪除:“{0}”,{1}個元素已刪除", "xloc": [ - "default.handlebars->41->2250" + "default.handlebars->41->2253" ] }, { @@ -18618,8 +18622,8 @@ "xloc": [ "default-mobile.handlebars->11->155", "default-mobile.handlebars->11->484", - "default.handlebars->41->1369", - "default.handlebars->41->2192", + "default.handlebars->41->1373", + "default.handlebars->41->2195", "sharing.handlebars->11->63" ] }, @@ -18645,7 +18649,7 @@ "zh-chs": "删除用户群组{0}?", "zh-cht": "刪除用戶群組{0}?", "xloc": [ - "default.handlebars->41->2576" + "default.handlebars->41->2579" ] }, { @@ -18672,8 +18676,8 @@ "xloc": [ "default-mobile.handlebars->11->154", "default-mobile.handlebars->11->483", - "default.handlebars->41->1368", - "default.handlebars->41->2191", + "default.handlebars->41->1372", + "default.handlebars->41->2194", "sharing.handlebars->11->62" ] }, @@ -18724,7 +18728,7 @@ "zh-chs": "删除:“{0}”", "zh-cht": "刪除:“{0}”", "xloc": [ - "default.handlebars->41->2249" + "default.handlebars->41->2252" ] }, { @@ -18749,7 +18753,7 @@ "zh-chs": "删除:“{0}”,{1}个元素已删除", "zh-cht": "刪除:“{0}”,已刪除{1}個元素", "xloc": [ - "default.handlebars->41->2251" + "default.handlebars->41->2254" ] }, { @@ -18775,7 +18779,7 @@ "zh-cht": "被拒絕", "xloc": [ "default-mobile.handlebars->11->407", - "default.handlebars->41->1205", + "default.handlebars->41->1209", "sharing.handlebars->11->29", "sharing.handlebars->11->7" ] @@ -18918,22 +18922,22 @@ "default-mobile.handlebars->11->279", "default-mobile.handlebars->11->402", "default-mobile.handlebars->11->549", - "default-mobile.handlebars->11->629", - "default-mobile.handlebars->11->652", - "default.handlebars->41->1200", - "default.handlebars->41->1428", - "default.handlebars->41->1438", + "default-mobile.handlebars->11->628", + "default-mobile.handlebars->11->651", + "default.handlebars->41->1204", + "default.handlebars->41->1432", + "default.handlebars->41->1442", "default.handlebars->41->149", - "default.handlebars->41->1809", - "default.handlebars->41->1866", - "default.handlebars->41->2000", - "default.handlebars->41->2359", - "default.handlebars->41->2517", - "default.handlebars->41->2527", - "default.handlebars->41->2528", - "default.handlebars->41->2574", - "default.handlebars->41->791", - "default.handlebars->41->792", + "default.handlebars->41->1812", + "default.handlebars->41->1869", + "default.handlebars->41->2003", + "default.handlebars->41->2362", + "default.handlebars->41->2520", + "default.handlebars->41->2530", + "default.handlebars->41->2531", + "default.handlebars->41->2577", + "default.handlebars->41->793", + "default.handlebars->41->794", "default.handlebars->container->column_l->p42->p42tbl->1->0->3" ] }, @@ -18982,16 +18986,16 @@ "zh-cht": "桌面", "xloc": [ "default-mobile.handlebars->11->352", - "default.handlebars->41->1056", - "default.handlebars->41->1304", - "default.handlebars->41->1933", - "default.handlebars->41->2006", - "default.handlebars->41->2761", - "default.handlebars->41->2820", - "default.handlebars->41->2851", - "default.handlebars->41->2942", - "default.handlebars->41->756", - "default.handlebars->41->971", + "default.handlebars->41->1060", + "default.handlebars->41->1308", + "default.handlebars->41->1936", + "default.handlebars->41->2009", + "default.handlebars->41->2764", + "default.handlebars->41->2823", + "default.handlebars->41->2854", + "default.handlebars->41->2945", + "default.handlebars->41->758", + "default.handlebars->41->975", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop", "default.handlebars->contextMenu->cxdesktop", "sharing.handlebars->11->23", @@ -19019,9 +19023,9 @@ "tr": "Masaüstü + Dosyalar", "zh-chs": "桌面 + 文件", "xloc": [ - "default.handlebars->41->1059", - "default.handlebars->41->1937", - "default.handlebars->41->975" + "default.handlebars->41->1063", + "default.handlebars->41->1940", + "default.handlebars->41->979" ] }, { @@ -19045,8 +19049,8 @@ "tr": "Masaüstü + Terminal", "zh-chs": "桌面 + 终端", "xloc": [ - "default.handlebars->41->1934", - "default.handlebars->41->972" + "default.handlebars->41->1937", + "default.handlebars->41->976" ] }, { @@ -19070,9 +19074,9 @@ "tr": "Masaüstü + Terminal + Dosyalar", "zh-chs": "桌面 + 终端 + 文件", "xloc": [ - "default.handlebars->41->1061", - "default.handlebars->41->1938", - "default.handlebars->41->976" + "default.handlebars->41->1065", + "default.handlebars->41->1941", + "default.handlebars->41->980" ] }, { @@ -19121,7 +19125,7 @@ "tr": "Masaüstü Multiplex", "zh-chs": "桌面复用", "xloc": [ - "default.handlebars->41->2947" + "default.handlebars->41->2950" ] }, { @@ -19146,10 +19150,10 @@ "zh-chs": "桌面通知", "zh-cht": "桌面通知", "xloc": [ - "default.handlebars->41->1886", - "default.handlebars->41->2535", - "default.handlebars->41->2637", - "default.handlebars->41->853" + "default.handlebars->41->1889", + "default.handlebars->41->2538", + "default.handlebars->41->2640", + "default.handlebars->41->855" ] }, { @@ -19174,10 +19178,10 @@ "zh-chs": "桌面提示", "zh-cht": "桌面提示", "xloc": [ - "default.handlebars->41->1885", - "default.handlebars->41->2534", - "default.handlebars->41->2636", - "default.handlebars->41->852" + "default.handlebars->41->1888", + "default.handlebars->41->2537", + "default.handlebars->41->2639", + "default.handlebars->41->854" ] }, { @@ -19202,10 +19206,10 @@ "zh-chs": "桌面提示+工具栏", "zh-cht": "桌面提示+工具欄", "xloc": [ - "default.handlebars->41->1883", - "default.handlebars->41->2532", - "default.handlebars->41->2634", - "default.handlebars->41->850" + "default.handlebars->41->1886", + "default.handlebars->41->2535", + "default.handlebars->41->2637", + "default.handlebars->41->852" ] }, { @@ -19229,7 +19233,7 @@ "tr": "Masaüstü Oturumu", "zh-chs": "桌面会话", "xloc": [ - "default.handlebars->41->2754" + "default.handlebars->41->2757" ] }, { @@ -19327,10 +19331,10 @@ "zh-chs": "桌面工具栏", "zh-cht": "桌面工具欄", "xloc": [ - "default.handlebars->41->1884", - "default.handlebars->41->2533", - "default.handlebars->41->2635", - "default.handlebars->41->851" + "default.handlebars->41->1887", + "default.handlebars->41->2536", + "default.handlebars->41->2638", + "default.handlebars->41->853" ] }, { @@ -19354,7 +19358,7 @@ "tr": "Yalnızca Masaüstü Görünümü", "zh-chs": "仅桌面视图", "xloc": [ - "default.handlebars->41->2610" + "default.handlebars->41->2613" ] }, { @@ -19378,7 +19382,7 @@ "tr": "Masaüstü, Yalnızca görüntüleme", "zh-chs": "桌面,仅查看", "xloc": [ - "default.handlebars->41->1062" + "default.handlebars->41->1066" ] }, { @@ -19403,7 +19407,7 @@ "zh-chs": "桌面时段", "zh-cht": "桌面時段", "xloc": [ - "default.handlebars->41->1303" + "default.handlebars->41->1307" ] }, { @@ -19480,7 +19484,7 @@ "zh-cht": "細節", "xloc": [ "default-mobile.handlebars->11->355", - "default.handlebars->41->2096", + "default.handlebars->41->2099", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevInfo", "default.handlebars->contextMenu->cxdetails" ] @@ -19533,13 +19537,13 @@ "zh-cht": "裝置", "xloc": [ "default-mobile.handlebars->11->544", - "default.handlebars->41->1423", - "default.handlebars->41->1532", - "default.handlebars->41->2034", + "default.handlebars->41->1427", + "default.handlebars->41->1535", + "default.handlebars->41->2037", "default.handlebars->41->267", - "default.handlebars->41->2723", - "default.handlebars->41->2786", - "default.handlebars->41->2804", + "default.handlebars->41->2726", + "default.handlebars->41->2789", + "default.handlebars->41->2807", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5" ] }, @@ -19567,7 +19571,7 @@ "xloc": [ "default-mobile.handlebars->11->373", "default-mobile.handlebars->11->382", - "default.handlebars->41->1115" + "default.handlebars->41->1119" ] }, { @@ -19640,7 +19644,7 @@ "tr": "Cihaz Ayrıntıları", "zh-chs": "设备详情", "xloc": [ - "default.handlebars->41->2058" + "default.handlebars->41->2061" ] }, { @@ -19691,18 +19695,18 @@ "zh-cht": "裝置群", "xloc": [ "agent-translations.json", - "default-mobile.handlebars->11->713", - "default.handlebars->41->2029", + "default-mobile.handlebars->11->712", "default.handlebars->41->2032", - "default.handlebars->41->2033", - "default.handlebars->41->2376", - "default.handlebars->41->2558", - "default.handlebars->41->2564", - "default.handlebars->41->2711", - "default.handlebars->41->2770", - "default.handlebars->41->2793", - "default.handlebars->41->2807", - "default.handlebars->41->2868" + "default.handlebars->41->2035", + "default.handlebars->41->2036", + "default.handlebars->41->2379", + "default.handlebars->41->2561", + "default.handlebars->41->2567", + "default.handlebars->41->2714", + "default.handlebars->41->2773", + "default.handlebars->41->2796", + "default.handlebars->41->2810", + "default.handlebars->41->2871" ] }, { @@ -19727,8 +19731,8 @@ "zh-chs": "设备组用户", "zh-cht": "裝置群用戶", "xloc": [ - "default-mobile.handlebars->11->702", - "default.handlebars->41->2102" + "default-mobile.handlebars->11->701", + "default.handlebars->41->2105" ] }, { @@ -19754,11 +19758,11 @@ "zh-cht": "裝置群", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->3", - "default.handlebars->41->2392", - "default.handlebars->41->2502", - "default.handlebars->41->2545", - "default.handlebars->41->2631", - "default.handlebars->41->2920", + "default.handlebars->41->2395", + "default.handlebars->41->2505", + "default.handlebars->41->2548", + "default.handlebars->41->2634", + "default.handlebars->41->2923", "default.handlebars->container->column_l->p2->p2info->9" ] }, @@ -19784,7 +19788,7 @@ "zh-chs": "设备信息导出", "zh-cht": "裝置訊息輸出", "xloc": [ - "default.handlebars->41->710" + "default.handlebars->41->712" ] }, { @@ -19809,7 +19813,7 @@ "zh-chs": "设备位置", "zh-cht": "裝置位置", "xloc": [ - "default.handlebars->41->1159" + "default.handlebars->41->1163" ] }, { @@ -19834,7 +19838,7 @@ "zh-chs": "设备消息", "zh-cht": "裝置訊息", "xloc": [ - "default.handlebars->41->1045" + "default.handlebars->41->1049" ] }, { @@ -19860,10 +19864,10 @@ "zh-cht": "裝置名稱", "xloc": [ "default-mobile.handlebars->11->400", - "default.handlebars->41->1198", - "default.handlebars->41->2769", - "default.handlebars->41->447", - "default.handlebars->41->456", + "default.handlebars->41->1202", + "default.handlebars->41->2772", + "default.handlebars->41->449", + "default.handlebars->41->458", "player.handlebars->3->25" ] }, @@ -19889,8 +19893,8 @@ "zh-chs": "设备通知", "zh-cht": "裝置通知", "xloc": [ - "default.handlebars->41->1051", - "default.handlebars->41->688" + "default.handlebars->41->1055", + "default.handlebars->41->690" ] }, { @@ -19914,7 +19918,7 @@ "tr": "Cihaz Eşleştirme Bağlantısı", "zh-chs": "设备配对链接", "xloc": [ - "default-mobile.handlebars->11->656" + "default-mobile.handlebars->11->655" ] }, { @@ -19938,7 +19942,7 @@ "tr": "Cihaz İtme", "zh-chs": "设备推送", "xloc": [ - "default.handlebars->41->2650" + "default.handlebars->41->2653" ] }, { @@ -20006,8 +20010,8 @@ "zh-chs": "设备共享链接", "zh-cht": "設備共享鏈接", "xloc": [ - "default.handlebars->41->1930", - "default.handlebars->41->968" + "default.handlebars->41->1933", + "default.handlebars->41->972" ] }, { @@ -20080,9 +20084,9 @@ "default-mobile.handlebars->11->282", "default-mobile.handlebars->11->284", "default-mobile.handlebars->11->286", - "default.handlebars->41->795", "default.handlebars->41->797", - "default.handlebars->41->799" + "default.handlebars->41->799", + "default.handlebars->41->801" ] }, { @@ -20131,10 +20135,10 @@ "zh-chs": "设备连接。", "zh-cht": "裝置連接。", "xloc": [ - "default.handlebars->41->1772", - "default.handlebars->41->2129", - "default.handlebars->41->2133", - "default.handlebars->41->992", + "default.handlebars->41->1000", + "default.handlebars->41->1775", + "default.handlebars->41->2132", + "default.handlebars->41->2136", "default.handlebars->41->996" ] }, @@ -20160,10 +20164,10 @@ "zh-chs": "设备断开连接。", "zh-cht": "裝置斷開連接。", "xloc": [ - "default.handlebars->41->1773", - "default.handlebars->41->2130", - "default.handlebars->41->2134", - "default.handlebars->41->993", + "default.handlebars->41->1001", + "default.handlebars->41->1776", + "default.handlebars->41->2133", + "default.handlebars->41->2137", "default.handlebars->41->997" ] }, @@ -20189,7 +20193,7 @@ "zh-chs": "创建的设备组:{0}", "zh-cht": "設備組已創建:{0}", "xloc": [ - "default.handlebars->41->2280" + "default.handlebars->41->2283" ] }, { @@ -20214,7 +20218,7 @@ "zh-chs": "设备组已删除:{0}", "zh-cht": "設備組已刪除:{0}", "xloc": [ - "default.handlebars->41->2281" + "default.handlebars->41->2284" ] }, { @@ -20239,7 +20243,7 @@ "zh-chs": "设备组成员身份已更改:{0}", "zh-cht": "設備組成員身份已更改:{0}", "xloc": [ - "default.handlebars->41->2282" + "default.handlebars->41->2285" ] }, { @@ -20265,7 +20269,7 @@ "zh-cht": "其他裝置群管理員可以查看和更改裝置群註釋。", "xloc": [ "default-mobile.handlebars->11->380", - "default.handlebars->41->1042" + "default.handlebars->41->1046" ] }, { @@ -20290,7 +20294,7 @@ "zh-chs": "设备组通知已更改", "zh-cht": "設備組通知已更改", "xloc": [ - "default.handlebars->41->2277" + "default.handlebars->41->2280" ] }, { @@ -20315,7 +20319,7 @@ "zh-chs": "未删除的设备组:{0}", "zh-cht": "未刪除的設備組:{0}", "xloc": [ - "default.handlebars->41->2260" + "default.handlebars->41->2263" ] }, { @@ -20335,7 +20339,7 @@ "ru": "Группа устройств {0} изменена: {1}", "tr": "{0} cihaz grubu değiştirildi: {1}", "xloc": [ - "default.handlebars->41->2346" + "default.handlebars->41->2349" ] }, { @@ -20344,7 +20348,7 @@ "pl": "Grupy urządzeń to urządzenie jest bramką dla", "ru": "Группы устройств, для которых это устройство является релеем", "xloc": [ - "default.handlebars->41->892" + "default.handlebars->41->894" ] }, { @@ -20372,7 +20376,7 @@ "default-mobile.handlebars->11->199", "default-mobile.handlebars->11->269", "default.handlebars->41->371", - "default.handlebars->41->777" + "default.handlebars->41->779" ] }, { @@ -20393,7 +20397,7 @@ "tr": "Aygıt meşgul", "xloc": [ "default-mobile.handlebars->11->205", - "default.handlebars->41->402" + "default.handlebars->41->404" ] }, { @@ -20418,7 +20422,7 @@ "zh-chs": "检测到设备,但无法获得电源状态。", "zh-cht": "檢測到裝置,但無法獲得電源狀態。", "xloc": [ - "default.handlebars->41->612" + "default.handlebars->41->614" ] }, { @@ -20444,7 +20448,7 @@ "zh-cht": "裝置正在休眠(S4)", "xloc": [ "default-mobile.handlebars->11->250", - "default.handlebars->41->620" + "default.handlebars->41->622" ] }, { @@ -20470,7 +20474,7 @@ "zh-cht": "裝置處於深度睡眠狀態(S3)", "xloc": [ "default-mobile.handlebars->11->249", - "default.handlebars->41->619" + "default.handlebars->41->621" ] }, { @@ -20495,7 +20499,7 @@ "zh-chs": "设备处于深度睡眠状态(S3)。", "zh-cht": "裝置處於深度睡眠狀態(S3)。", "xloc": [ - "default.handlebars->41->606" + "default.handlebars->41->608" ] }, { @@ -20520,7 +20524,7 @@ "zh-chs": "设备处于休眠状态(S4)。", "zh-cht": "裝置處於休眠狀態(S4)。", "xloc": [ - "default.handlebars->41->608" + "default.handlebars->41->610" ] }, { @@ -20545,7 +20549,7 @@ "zh-chs": "设备处于关机状态(S5)。", "zh-cht": "裝置處於關機狀態(S5)。", "xloc": [ - "default.handlebars->41->610" + "default.handlebars->41->612" ] }, { @@ -20571,7 +20575,7 @@ "zh-cht": "裝置處於睡眠狀態(S1)", "xloc": [ "default-mobile.handlebars->11->247", - "default.handlebars->41->617" + "default.handlebars->41->619" ] }, { @@ -20596,7 +20600,7 @@ "zh-chs": "设备处于睡眠状态(S1)。", "zh-cht": "裝置處於睡眠狀態(S1)。", "xloc": [ - "default.handlebars->41->602" + "default.handlebars->41->604" ] }, { @@ -20622,7 +20626,7 @@ "zh-cht": "裝置處於睡眠狀態(S2)", "xloc": [ "default-mobile.handlebars->11->248", - "default.handlebars->41->618" + "default.handlebars->41->620" ] }, { @@ -20647,7 +20651,7 @@ "zh-chs": "设备处于睡眠状态(S2)。", "zh-cht": "裝置處於睡眠狀態(S2)。", "xloc": [ - "default.handlebars->41->604" + "default.handlebars->41->606" ] }, { @@ -20673,7 +20677,7 @@ "zh-cht": "裝置處於軟關機狀態(S5)", "xloc": [ "default-mobile.handlebars->11->251", - "default.handlebars->41->621" + "default.handlebars->41->623" ] }, { @@ -20701,7 +20705,7 @@ "default-mobile.handlebars->11->198", "default-mobile.handlebars->11->268", "default.handlebars->41->370", - "default.handlebars->41->776" + "default.handlebars->41->778" ] }, { @@ -20727,7 +20731,7 @@ "zh-cht": "裝置已連接電源", "xloc": [ "default-mobile.handlebars->11->246", - "default.handlebars->41->616" + "default.handlebars->41->618" ] }, { @@ -20747,7 +20751,7 @@ "ru": "Устройство выключено.", "tr": "Cihaz kapalı.", "xloc": [ - "default.handlebars->41->614" + "default.handlebars->41->616" ] }, { @@ -20772,7 +20776,7 @@ "zh-chs": "设备已连接电源。", "zh-cht": "裝置已連接電源。", "xloc": [ - "default.handlebars->41->600" + "default.handlebars->41->602" ] }, { @@ -20798,7 +20802,7 @@ "zh-cht": "裝置存在,但無法確定電源狀態", "xloc": [ "default-mobile.handlebars->11->252", - "default.handlebars->41->622" + "default.handlebars->41->624" ] }, { @@ -20823,7 +20827,7 @@ "zh-chs": "设备名称", "zh-cht": "裝置名稱", "xloc": [ - "default.handlebars->41->768" + "default.handlebars->41->770" ] }, { @@ -20848,7 +20852,7 @@ "zh-chs": "设备通知", "zh-cht": "設備通知", "xloc": [ - "default.handlebars->41->650" + "default.handlebars->41->652" ] }, { @@ -20872,7 +20876,7 @@ "tr": "Cihaz, Intel(R) AMT ACM TLS etkinleştirmesini istedi, FQDN: {0}", "zh-chs": "设备请求 Intel(R) AMT ACM TLS 激活,FQDN:{0}", "xloc": [ - "default.handlebars->41->2315" + "default.handlebars->41->2318" ] }, { @@ -20897,7 +20901,7 @@ "zh-chs": "设备请求激活Intel(R)AMT ACM,FQDN:{0}", "zh-cht": "設備請求激活Intel(R)AMT ACM,FQDN:{0}", "xloc": [ - "default.handlebars->41->2262" + "default.handlebars->41->2265" ] }, { @@ -20944,9 +20948,9 @@ "zh-chs": "设备", "zh-cht": "裝置", "xloc": [ - "default.handlebars->41->1951", - "default.handlebars->41->2503", - "default.handlebars->41->2546" + "default.handlebars->41->1954", + "default.handlebars->41->2506", + "default.handlebars->41->2549" ] }, { @@ -21054,7 +21058,7 @@ "xloc": [ "default-mobile.handlebars->11->529", "default.handlebars->41->122", - "default.handlebars->41->844" + "default.handlebars->41->846" ] }, { @@ -21079,7 +21083,7 @@ "zh-chs": "禁用的电子邮件两因素身份验证", "zh-cht": "禁用的電子郵件兩因素身份驗證", "xloc": [ - "default.handlebars->41->2293" + "default.handlebars->41->2296" ] }, { @@ -21108,8 +21112,8 @@ "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->disconnectbutton2span", - "default.handlebars->41->1896", - "default.handlebars->41->863", + "default.handlebars->41->1899", + "default.handlebars->41->865", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3", @@ -21210,12 +21214,12 @@ "default-mobile.handlebars->11->217", "default-mobile.handlebars->11->221", "default-mobile.handlebars->11->225", - "default.handlebars->41->399", - "default.handlebars->41->406", - "default.handlebars->41->410", - "default.handlebars->41->414", - "default.handlebars->41->418", - "default.handlebars->41->422" + "default.handlebars->41->401", + "default.handlebars->41->408", + "default.handlebars->41->412", + "default.handlebars->41->416", + "default.handlebars->41->420", + "default.handlebars->41->424" ] }, { @@ -21247,7 +21251,7 @@ "default.handlebars->41->362", "default.handlebars->41->365", "default.handlebars->41->391", - "default.handlebars->41->430", + "default.handlebars->41->432", "default.handlebars->41->8", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->deskstatus", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->termstatus", @@ -21303,7 +21307,7 @@ "zh-chs": "解雇", "zh-cht": "解僱", "xloc": [ - "default.handlebars->41->395" + "default.handlebars->41->397" ] }, { @@ -21338,7 +21342,7 @@ "zh-chs": "在远程设备上显示一个消息框。", "zh-cht": "在遠程裝置上顯示一個訊息框。", "xloc": [ - "default.handlebars->41->1046" + "default.handlebars->41->1050" ] }, { @@ -21363,7 +21367,7 @@ "zh-chs": "在远程计算机上显示通知", "zh-cht": "在遠程電腦上顯示通知", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -21388,7 +21392,7 @@ "zh-chs": "在远程设备上显示短信", "zh-cht": "在遠程裝置上顯示短信", "xloc": [ - "default.handlebars->41->902" + "default.handlebars->41->904" ] }, { @@ -21434,7 +21438,7 @@ "zh-chs": "显示设备组名称", "zh-cht": "顯示裝置群名稱", "xloc": [ - "default.handlebars->41->1771" + "default.handlebars->41->1774" ] }, { @@ -21459,7 +21463,7 @@ "zh-chs": "显示名称", "zh-cht": "顯示名稱", "xloc": [ - "default.handlebars->41->1287" + "default.handlebars->41->1291" ] }, { @@ -21484,7 +21488,7 @@ "zh-chs": "显示公共连结", "zh-cht": "顯示公共鏈結", "xloc": [ - "default.handlebars->41->2163" + "default.handlebars->41->2166" ] }, { @@ -21508,7 +21512,7 @@ "tr": "{0} göster", "zh-chs": "显示{0}", "xloc": [ - "default.handlebars->41->1306" + "default.handlebars->41->1310" ] }, { @@ -21533,7 +21537,7 @@ "zh-chs": "显示消息框,标题= “{0}”,消息= “{1}”", "zh-cht": "顯示消息框,標題= “{0}”,消息= “{1}”", "xloc": [ - "default.handlebars->41->2222" + "default.handlebars->41->2225" ] }, { @@ -21558,7 +21562,7 @@ "zh-chs": "显示吐司消息,标题= “{0}”,消息= “{1}”", "zh-cht": "顯示吐司消息,標題= “{0}”,消息= “{1}”", "xloc": [ - "default.handlebars->41->2230" + "default.handlebars->41->2233" ] }, { @@ -21583,8 +21587,8 @@ "zh-chs": "什么都不做", "zh-cht": "什麼都不做", "xloc": [ - "default.handlebars->41->1980", - "default.handlebars->41->1984" + "default.handlebars->41->1983", + "default.handlebars->41->1987" ] }, { @@ -21610,11 +21614,11 @@ "zh-cht": "域", "xloc": [ "default.handlebars->41->118", - "default.handlebars->41->1223", - "default.handlebars->41->2466", - "default.handlebars->41->2515", - "default.handlebars->41->2524", - "default.handlebars->41->2597", + "default.handlebars->41->1227", + "default.handlebars->41->2469", + "default.handlebars->41->2518", + "default.handlebars->41->2527", + "default.handlebars->41->2600", "mstsc.handlebars->main->1->3->1->rowdomain->1->0", "mstsc.handlebars->main->1->3->1->rowdomain->3" ] @@ -21662,7 +21666,7 @@ "zh-chs": "请勿更改,如果设置请保留CCM", "zh-cht": "請勿更改,如果設置請保留CCM", "xloc": [ - "default.handlebars->41->1976" + "default.handlebars->41->1979" ] }, { @@ -21709,7 +21713,7 @@ "zh-chs": "不要连接到服务器", "zh-cht": "不要連接到伺服器", "xloc": [ - "default.handlebars->41->1985" + "default.handlebars->41->1988" ] }, { @@ -21826,7 +21830,7 @@ "zh-chs": "下", "xloc": [ "default-mobile.handlebars->11->428", - "default.handlebars->41->1257" + "default.handlebars->41->1261" ] }, { @@ -21929,7 +21933,7 @@ "zh-cht": "下載檔案", "xloc": [ "default-mobile.handlebars->11->503", - "default.handlebars->41->1388", + "default.handlebars->41->1392", "sharing.handlebars->11->82" ] }, @@ -21980,7 +21984,7 @@ "zh-chs": "下载MeshCmd", "zh-cht": "下載MeshCmd", "xloc": [ - "default.handlebars->41->1184" + "default.handlebars->41->1188" ] }, { @@ -22055,7 +22059,7 @@ "zh-chs": "下载报告", "zh-cht": "下載報告", "xloc": [ - "default.handlebars->41->2381", + "default.handlebars->41->2384", "default.handlebars->container->column_l->p3->3->1->0->3", "default.handlebars->container->column_l->p60->3->1->0->3->1->p60downloadReportDiv" ] @@ -22082,7 +22086,7 @@ "zh-chs": "下载带有指令档案的“ meshcmd”,以通过此服务器将网络讯息发送到该设备。紧记编辑meshaction.txt并添加您的帐户密码或进行任何必要的更改。", "zh-cht": "下載帶有指令檔案的“ meshcmd”,以通過此服務器將網絡讯息發送到該裝置。緊記編輯meshaction.txt並新增你的帳戶密碼或進行任何必要的更改。", "xloc": [ - "default.handlebars->41->1177" + "default.handlebars->41->1181" ] }, { @@ -22156,7 +22160,7 @@ "tr": "Cihaz listesini indir", "zh-chs": "下载设备列表", "xloc": [ - "default.handlebars->41->1949" + "default.handlebars->41->1952" ] }, { @@ -22206,7 +22210,7 @@ "zh-chs": "下载电源事件", "zh-cht": "下載電源事件", "xloc": [ - "default.handlebars->41->1133" + "default.handlebars->41->1137" ] }, { @@ -22231,7 +22235,7 @@ "zh-chs": "将远程剪贴板下载到本地剪贴板", "zh-cht": "將遠程剪貼板下載到本地剪貼板", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -22330,7 +22334,7 @@ "zh-chs": "使用以下一种档案格式下载设备列表。", "zh-cht": "使用以下一種檔案格式下載裝置列表。", "xloc": [ - "default.handlebars->41->702" + "default.handlebars->41->704" ] }, { @@ -22355,7 +22359,7 @@ "zh-chs": "使用以下一种档案格式下载事件列表。", "zh-cht": "使用以下一種檔案格式下載事件列表。", "xloc": [ - "default.handlebars->41->2382" + "default.handlebars->41->2385" ] }, { @@ -22380,7 +22384,7 @@ "zh-chs": "使用以下一种档案格式下载用户列表。", "zh-cht": "使用以下一種檔案格式下載用戶列表。", "xloc": [ - "default.handlebars->41->2450" + "default.handlebars->41->2453" ] }, { @@ -22481,7 +22485,7 @@ "zh-chs": "下载:“{0}”", "zh-cht": "下載:“{0}”", "xloc": [ - "default.handlebars->41->2253" + "default.handlebars->41->2256" ] }, { @@ -22505,7 +22509,7 @@ "tr": "İndirme: \\\"{0}\\\", Boyut: {1}", "zh-chs": "下载:\\\"{0}\\\",大小:{1}", "xloc": [ - "default.handlebars->41->2310" + "default.handlebars->41->2313" ] }, { @@ -22555,7 +22559,7 @@ "zh-chs": "代理重复", "zh-cht": "代理重複", "xloc": [ - "default.handlebars->41->2916" + "default.handlebars->41->2919" ] }, { @@ -22605,7 +22609,7 @@ "zh-chs": "复制用户组", "zh-cht": "複製用戶群", "xloc": [ - "default.handlebars->41->2519" + "default.handlebars->41->2522" ] }, { @@ -22652,11 +22656,11 @@ "zh-chs": "持续时间", "zh-cht": "持續時間", "xloc": [ - "default.handlebars->41->1090", + "default.handlebars->41->1094", "default.handlebars->41->273", - "default.handlebars->41->2749", "default.handlebars->41->275", - "default.handlebars->41->2775", + "default.handlebars->41->2752", + "default.handlebars->41->2778", "player.handlebars->3->18" ] }, @@ -22704,7 +22708,7 @@ "zh-chs": "荷兰文(比利时)", "zh-cht": "荷蘭文(比利時)", "xloc": [ - "default.handlebars->41->1590" + "default.handlebars->41->1593" ] }, { @@ -22729,7 +22733,7 @@ "zh-chs": "荷兰文(标准)", "zh-cht": "荷蘭文(標準)", "xloc": [ - "default.handlebars->41->1589" + "default.handlebars->41->1592" ] }, { @@ -23113,9 +23117,9 @@ "default-mobile.handlebars->11->396", "default-mobile.handlebars->11->398", "default-mobile.handlebars->11->405", - "default.handlebars->41->1194", - "default.handlebars->41->1196", - "default.handlebars->41->1203" + "default.handlebars->41->1198", + "default.handlebars->41->1200", + "default.handlebars->41->1207" ] }, { @@ -23140,17 +23144,17 @@ "zh-chs": "编辑设备组", "zh-cht": "編輯裝置群", "xloc": [ - "default-mobile.handlebars->11->647", - "default-mobile.handlebars->11->650", - "default-mobile.handlebars->11->653", - "default-mobile.handlebars->11->659", - "default-mobile.handlebars->11->679", - "default.handlebars->41->1995", + "default-mobile.handlebars->11->646", + "default-mobile.handlebars->11->649", + "default-mobile.handlebars->11->652", + "default-mobile.handlebars->11->658", + "default-mobile.handlebars->11->678", "default.handlebars->41->1998", "default.handlebars->41->2001", - "default.handlebars->41->2038", - "default.handlebars->41->2064", - "default.handlebars->41->2076" + "default.handlebars->41->2004", + "default.handlebars->41->2041", + "default.handlebars->41->2067", + "default.handlebars->41->2079" ] }, { @@ -23175,7 +23179,7 @@ "zh-chs": "编辑设备组功能", "zh-cht": "編輯裝置群功能", "xloc": [ - "default.handlebars->41->2024" + "default.handlebars->41->2027" ] }, { @@ -23200,8 +23204,8 @@ "zh-chs": "编辑设备组权限", "zh-cht": "編輯裝置群權限", "xloc": [ - "default.handlebars->41->2061", - "default.handlebars->41->2073" + "default.handlebars->41->2064", + "default.handlebars->41->2076" ] }, { @@ -23226,7 +23230,7 @@ "zh-chs": "编辑设备组用户同意", "zh-cht": "編輯裝置群用戶同意", "xloc": [ - "default.handlebars->41->2002" + "default.handlebars->41->2005" ] }, { @@ -23251,8 +23255,8 @@ "zh-chs": "编辑设备笔记", "zh-cht": "編輯裝置筆記", "xloc": [ - "default-mobile.handlebars->11->671", - "default.handlebars->41->2052" + "default-mobile.handlebars->11->670", + "default.handlebars->41->2055" ] }, { @@ -23277,8 +23281,8 @@ "zh-chs": "编辑设备权限", "zh-cht": "編輯裝置權限", "xloc": [ - "default.handlebars->41->2066", - "default.handlebars->41->2068" + "default.handlebars->41->2069", + "default.handlebars->41->2071" ] }, { @@ -23303,7 +23307,7 @@ "zh-chs": "编辑设备标签", "zh-cht": "編輯裝置標籤", "xloc": [ - "default.handlebars->41->683" + "default.handlebars->41->685" ] }, { @@ -23328,7 +23332,7 @@ "zh-chs": "编辑设备用户同意", "zh-cht": "編輯裝置用戶同意", "xloc": [ - "default.handlebars->41->2004" + "default.handlebars->41->2007" ] }, { @@ -23353,7 +23357,7 @@ "zh-chs": "编辑群组", "zh-cht": "編輯群組", "xloc": [ - "default.handlebars->41->1019" + "default.handlebars->41->1023" ] }, { @@ -23382,10 +23386,10 @@ "default-mobile.handlebars->11->305", "default-mobile.handlebars->11->306", "default-mobile.handlebars->11->391", - "default.handlebars->41->1140", - "default.handlebars->41->815", - "default.handlebars->41->820", - "default.handlebars->41->821" + "default.handlebars->41->1144", + "default.handlebars->41->817", + "default.handlebars->41->822", + "default.handlebars->41->823" ] }, { @@ -23410,8 +23414,8 @@ "zh-chs": "编辑笔记", "zh-cht": "編輯筆記", "xloc": [ - "default-mobile.handlebars->11->686", - "default.handlebars->41->2083" + "default-mobile.handlebars->11->685", + "default.handlebars->41->2086" ] }, { @@ -23436,7 +23440,7 @@ "zh-chs": "编辑用户同意", "zh-cht": "編輯用戶同意", "xloc": [ - "default.handlebars->41->2003" + "default.handlebars->41->2006" ] }, { @@ -23461,7 +23465,7 @@ "zh-chs": "编辑用户设备组权限", "zh-cht": "編輯用戶裝置群權限", "xloc": [ - "default.handlebars->41->2074" + "default.handlebars->41->2077" ] }, { @@ -23486,7 +23490,7 @@ "zh-chs": "编辑用户设备权限", "zh-cht": "編輯用戶裝置權限", "xloc": [ - "default.handlebars->41->2069" + "default.handlebars->41->2072" ] }, { @@ -23510,7 +23514,7 @@ "tr": "Kullanıcı Özelliklerini Düzenle", "zh-chs": "编辑用户特征", "xloc": [ - "default.handlebars->41->2687" + "default.handlebars->41->2690" ] }, { @@ -23535,7 +23539,7 @@ "zh-chs": "编辑用户组", "zh-cht": "編輯用戶群", "xloc": [ - "default.handlebars->41->2575" + "default.handlebars->41->2578" ] }, { @@ -23560,7 +23564,7 @@ "zh-chs": "编辑用户组设备权限", "zh-cht": "編輯用戶群裝置權限", "xloc": [ - "default.handlebars->41->2071" + "default.handlebars->41->2074" ] }, { @@ -23580,7 +23584,7 @@ "ru": "Редактировать функции групп пользователей", "tr": "Kullanıcı Grubu Özelliklerini Düzenle", "xloc": [ - "default.handlebars->41->2568" + "default.handlebars->41->2571" ] }, { @@ -23605,7 +23609,7 @@ "zh-chs": "编辑用户组用户同意", "zh-cht": "編輯用戶組用戶同意", "xloc": [ - "default.handlebars->41->2005" + "default.handlebars->41->2008" ] }, { @@ -23656,7 +23660,7 @@ "zh-chs": "编辑标签", "zh-cht": "編輯標籤", "xloc": [ - "default.handlebars->41->651" + "default.handlebars->41->653" ] }, { @@ -23724,13 +23728,13 @@ "zh-cht": "電郵", "xloc": [ "default-mobile.handlebars->11->109", - "default.handlebars->41->2468", - "default.handlebars->41->2601", - "default.handlebars->41->2603", - "default.handlebars->41->2648", - "default.handlebars->41->2658", - "default.handlebars->41->2690", - "default.handlebars->41->492", + "default.handlebars->41->2471", + "default.handlebars->41->2604", + "default.handlebars->41->2606", + "default.handlebars->41->2651", + "default.handlebars->41->2661", + "default.handlebars->41->2693", + "default.handlebars->41->494", "login-mobile.handlebars->5->42", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3", "login.handlebars->5->44", @@ -23767,7 +23771,7 @@ "zh-cht": "電郵地址變更", "xloc": [ "default-mobile.handlebars->11->110", - "default.handlebars->41->1780" + "default.handlebars->41->1783" ] }, { @@ -23793,7 +23797,7 @@ "zh-cht": "電郵認證", "xloc": [ "default-mobile.handlebars->11->99", - "default.handlebars->41->1520" + "default.handlebars->41->1523" ] }, { @@ -23840,8 +23844,8 @@ "ru": "Подлючение электронной почты", "tr": "E-posta Bağlantısı", "xloc": [ - "default.handlebars->41->1898", - "default.handlebars->41->865" + "default.handlebars->41->1901", + "default.handlebars->41->867" ] }, { @@ -23861,8 +23865,8 @@ "ru": "Отключение электронной почты", "tr": "E-posta Bağlantısını Kes", "xloc": [ - "default.handlebars->41->1899", - "default.handlebars->41->866" + "default.handlebars->41->1902", + "default.handlebars->41->868" ] }, { @@ -23882,8 +23886,8 @@ "ru": "Уведомления по электронной почте", "tr": "E-posta Bildirimleri", "xloc": [ - "default.handlebars->41->2132", - "default.handlebars->41->995" + "default.handlebars->41->2135", + "default.handlebars->41->999" ] }, { @@ -23931,7 +23935,7 @@ "zh-cht": "電郵驗證", "xloc": [ "default-mobile.handlebars->11->108", - "default.handlebars->41->1778" + "default.handlebars->41->1781" ] }, { @@ -23942,8 +23946,8 @@ "ru": "Домен почты \\\"{0}\\\" не разрешен. Разрешены только ({1})", "fr": "Les courriels de \\\"{0}\\\" ne sont pas autorisés. Seulement ceux de ({1}) sont permis", "xloc": [ - "default-mobile.handlebars->11->744", - "default.handlebars->41->2899" + "default-mobile.handlebars->11->743", + "default.handlebars->41->2902" ] }, { @@ -23968,7 +23972,7 @@ "zh-chs": "电邮邀请", "zh-cht": "電郵邀請", "xloc": [ - "default.handlebars->41->489" + "default.handlebars->41->491" ] }, { @@ -23993,7 +23997,7 @@ "zh-chs": "电邮未验证", "zh-cht": "電郵未驗證", "xloc": [ - "default.handlebars->41->2412" + "default.handlebars->41->2415" ] }, { @@ -24018,8 +24022,8 @@ "zh-chs": "电子邮件已验证", "zh-cht": "電子郵件已驗證", "xloc": [ - "default.handlebars->41->2413", - "default.handlebars->41->2595" + "default.handlebars->41->2416", + "default.handlebars->41->2598" ] }, { @@ -24044,7 +24048,7 @@ "zh-chs": "电邮已验证。", "zh-cht": "電郵已驗證。", "xloc": [ - "default.handlebars->41->2474" + "default.handlebars->41->2477" ] }, { @@ -24069,7 +24073,7 @@ "zh-chs": "电邮未验证", "zh-cht": "電郵未驗證", "xloc": [ - "default.handlebars->41->2596" + "default.handlebars->41->2599" ] }, { @@ -24115,8 +24119,8 @@ "zh-chs": "电邮已发送。", "zh-cht": "電郵已發送。", "xloc": [ - "default-mobile.handlebars->11->728", - "default.handlebars->41->2883", + "default-mobile.handlebars->11->727", + "default.handlebars->41->2886", "login-mobile.handlebars->5->2", "login.handlebars->5->2", "login2.handlebars->7->3" @@ -24192,7 +24196,7 @@ "zh-chs": "已通过电邮验证,并且需要重置密码。", "zh-cht": "已通過電郵驗證,並且需要重置密碼。", "xloc": [ - "default.handlebars->41->2475" + "default.handlebars->41->2478" ] }, { @@ -24238,7 +24242,7 @@ "tr": "E-posta/SMS/Push Trafiği", "zh-chs": "电子邮件/短信/推送流量", "xloc": [ - "default.handlebars->41->2975" + "default.handlebars->41->2978" ] }, { @@ -24314,7 +24318,7 @@ "zh-chs": "启用邀请代码", "zh-cht": "啟用邀請代碼", "xloc": [ - "default.handlebars->41->2108" + "default.handlebars->41->2111" ] }, { @@ -24365,7 +24369,7 @@ "zh-cht": "啟用電郵二因子鑑別。", "xloc": [ "default-mobile.handlebars->11->101", - "default.handlebars->41->1522" + "default.handlebars->41->1525" ] }, { @@ -24416,7 +24420,7 @@ "zh-cht": "已啟用", "xloc": [ "default.handlebars->41->121", - "default.handlebars->41->2777" + "default.handlebars->41->2780" ] }, { @@ -24441,7 +24445,7 @@ "zh-chs": "启用电子邮件两因素身份验证", "zh-cht": "啟用電子郵件兩因素身份驗證", "xloc": [ - "default.handlebars->41->2292" + "default.handlebars->41->2295" ] }, { @@ -24497,7 +24501,7 @@ "ru": "Кодировка: RAW", "tr": "kodlama: RAW", "xloc": [ - "default.handlebars->41->1395" + "default.handlebars->41->1399" ] }, { @@ -24517,7 +24521,7 @@ "ru": "Кодировка: UTF8", "tr": "Kodlama: UTF8", "xloc": [ - "default.handlebars->41->1396" + "default.handlebars->41->1400" ] }, { @@ -24542,7 +24546,7 @@ "zh-chs": "结尾", "xloc": [ "default-mobile.handlebars->11->422", - "default.handlebars->41->1251" + "default.handlebars->41->1255" ] }, { @@ -24567,7 +24571,7 @@ "zh-chs": "时间结束", "zh-cht": "時間結束", "xloc": [ - "default.handlebars->41->2774" + "default.handlebars->41->2777" ] }, { @@ -24592,7 +24596,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了桌面会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了桌面會話“{0}”", "xloc": [ - "default.handlebars->41->2215" + "default.handlebars->41->2218" ] }, { @@ -24617,7 +24621,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了文件管理会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了文件管理會話“{0}”", "xloc": [ - "default.handlebars->41->2216" + "default.handlebars->41->2219" ] }, { @@ -24641,7 +24645,7 @@ "tr": "Yerel geçiş oturumu \\\"{0}\\\", {1} - {2} protokolü, {3} saniye sona erdi", "zh-chs": "结束本地中继会话\\\"{0}\\\",协议 {1} 到 {2},{3} 秒", "xloc": [ - "default.handlebars->41->2325" + "default.handlebars->41->2328" ] }, { @@ -24665,7 +24669,7 @@ "tr": "{1} ile {2} arasında \\\"{0}\\\" mesajlaşma oturumu sona erdi, {3} saniye", "zh-chs": "从 {1} 到 {2},{3} 秒结束了 Messenger 会话 \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2316" + "default.handlebars->41->2319" ] }, { @@ -24690,7 +24694,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了中继会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了中繼會話“{0}”", "xloc": [ - "default.handlebars->41->2213" + "default.handlebars->41->2216" ] }, { @@ -24715,7 +24719,7 @@ "zh-chs": "从{1}到{2},{3}秒结束了终端会话“{0}”", "zh-cht": "從{1}到{2},{3}秒結束了終端會話“{0}”", "xloc": [ - "default.handlebars->41->2214" + "default.handlebars->41->2217" ] }, { @@ -24740,7 +24744,7 @@ "zh-chs": "英文", "zh-cht": "英文", "xloc": [ - "default.handlebars->41->1591" + "default.handlebars->41->1594" ] }, { @@ -24765,7 +24769,7 @@ "zh-chs": "英文(澳洲)", "zh-cht": "英文(澳洲)", "xloc": [ - "default.handlebars->41->1592" + "default.handlebars->41->1595" ] }, { @@ -24790,7 +24794,7 @@ "zh-chs": "英文(伯利茲)", "zh-cht": "英文(伯利茲)", "xloc": [ - "default.handlebars->41->1593" + "default.handlebars->41->1596" ] }, { @@ -24815,7 +24819,7 @@ "zh-chs": "英文(加拿大)", "zh-cht": "英文(加拿大)", "xloc": [ - "default.handlebars->41->1594" + "default.handlebars->41->1597" ] }, { @@ -24840,7 +24844,7 @@ "zh-chs": "英文(爱尔兰)", "zh-cht": "英文(愛爾蘭)", "xloc": [ - "default.handlebars->41->1595" + "default.handlebars->41->1598" ] }, { @@ -24865,7 +24869,7 @@ "zh-chs": "英文(牙买加)", "zh-cht": "英文(牙買加)", "xloc": [ - "default.handlebars->41->1596" + "default.handlebars->41->1599" ] }, { @@ -24890,7 +24894,7 @@ "zh-chs": "英文(纽西兰)", "zh-cht": "英文(紐西蘭)", "xloc": [ - "default.handlebars->41->1597" + "default.handlebars->41->1600" ] }, { @@ -24915,7 +24919,7 @@ "zh-chs": "英文(菲律宾)", "zh-cht": "英文(菲律賓)", "xloc": [ - "default.handlebars->41->1598" + "default.handlebars->41->1601" ] }, { @@ -24940,7 +24944,7 @@ "zh-chs": "英语(南非)", "zh-cht": "英語(南非)", "xloc": [ - "default.handlebars->41->1599" + "default.handlebars->41->1602" ] }, { @@ -24965,7 +24969,7 @@ "zh-chs": "英文(特立尼达和多巴哥)", "zh-cht": "英文(特立尼達和多巴哥)", "xloc": [ - "default.handlebars->41->1600" + "default.handlebars->41->1603" ] }, { @@ -24990,7 +24994,7 @@ "zh-chs": "英文(英国)", "zh-cht": "英文(英國)", "xloc": [ - "default.handlebars->41->1601" + "default.handlebars->41->1604" ] }, { @@ -25015,7 +25019,7 @@ "zh-chs": "美国英文", "zh-cht": "美國英語", "xloc": [ - "default.handlebars->41->1602" + "default.handlebars->41->1605" ] }, { @@ -25040,7 +25044,7 @@ "zh-chs": "英文(津巴布韦)", "zh-cht": "英文(津巴布韋)", "xloc": [ - "default.handlebars->41->1603" + "default.handlebars->41->1606" ] }, { @@ -25087,10 +25091,10 @@ "zh-cht": "輸入", "xloc": [ "default-mobile.handlebars->11->416", - "default.handlebars->41->1245", - "default.handlebars->41->1360", - "default.handlebars->41->1817", - "default.handlebars->41->1818", + "default.handlebars->41->1249", + "default.handlebars->41->1364", + "default.handlebars->41->1820", + "default.handlebars->41->1821", "sharing.handlebars->11->55" ] }, @@ -25116,7 +25120,7 @@ "zh-chs": "输入管理领域名称的逗号分隔列表。", "zh-cht": "輸入管理領域名稱的逗號分隔列表。", "xloc": [ - "default.handlebars->41->2479" + "default.handlebars->41->2482" ] }, { @@ -25141,7 +25145,7 @@ "zh-chs": "输入IP地址范围以扫描英特尔AMT设备。", "zh-cht": "輸入IP地址範圍以掃描Intel® AMT裝置。", "xloc": [ - "default.handlebars->41->477" + "default.handlebars->41->479" ] }, { @@ -25212,7 +25216,7 @@ "zh-chs": "输入文本,然后单击确定以远程键入它。在继续操作之前,请确保将远程光标放置在正确的位置。", "zh-cht": "輸入文本,然後單擊確定以遠程鍵入它。在繼續操作之前,請確保將遠程光標放置在正確的位置。", "xloc": [ - "default.handlebars->41->1275" + "default.handlebars->41->1279" ] }, { @@ -25331,7 +25335,7 @@ "zh-chs": "输入支持SMS的电话号码。验证后,该号码可用于登录验证和其他通知。", "zh-cht": "輸入支持SMS的電話號碼。驗證後,該號碼可用於登入驗證和其他通知。", "xloc": [ - "default.handlebars->41->1517" + "default.handlebars->41->1520" ] }, { @@ -25454,8 +25458,8 @@ "tr": "Hata, davet kodu \\\"{0}\\\" zaten kullanılıyor.", "zh-chs": "错误,邀请码 \\\"{0}\\\" 已被使用。", "xloc": [ - "default-mobile.handlebars->11->736", - "default.handlebars->41->2891" + "default-mobile.handlebars->11->735", + "default.handlebars->41->2894" ] }, { @@ -25479,8 +25483,8 @@ "tr": "Hata, şifre değiştirilmedi.", "zh-chs": "错误,密码未更改。", "xloc": [ - "default-mobile.handlebars->11->733", - "default.handlebars->41->2888" + "default-mobile.handlebars->11->732", + "default.handlebars->41->2891" ] }, { @@ -25504,8 +25508,8 @@ "tr": "Hata, yaygın olarak kullanılan parolaya geçilemiyor.", "zh-chs": "错误,无法更改为常用密码。", "xloc": [ - "default-mobile.handlebars->11->732", - "default.handlebars->41->2887" + "default-mobile.handlebars->11->731", + "default.handlebars->41->2890" ] }, { @@ -25529,8 +25533,8 @@ "tr": "Hata, daha önce kullanılan parolaya geçilemiyor.", "zh-chs": "错误,无法更改为以前使用的密码。", "xloc": [ - "default-mobile.handlebars->11->731", - "default.handlebars->41->2886" + "default-mobile.handlebars->11->730", + "default.handlebars->41->2889" ] }, { @@ -25580,7 +25584,7 @@ "zh-chs": "逃脱", "xloc": [ "default-mobile.handlebars->11->417", - "default.handlebars->41->1246" + "default.handlebars->41->1250" ] }, { @@ -25605,7 +25609,7 @@ "zh-chs": "世界文", "zh-cht": "世界語", "xloc": [ - "default.handlebars->41->1604" + "default.handlebars->41->1607" ] }, { @@ -25651,7 +25655,7 @@ "zh-chs": "爱沙尼亚文", "zh-cht": "愛沙尼亞語", "xloc": [ - "default.handlebars->41->1605" + "default.handlebars->41->1608" ] }, { @@ -25697,7 +25701,7 @@ "zh-chs": "事件详情", "zh-cht": "事件詳情", "xloc": [ - "default.handlebars->41->1404" + "default.handlebars->41->1408" ] }, { @@ -25722,7 +25726,7 @@ "zh-chs": "事件列表输出", "zh-cht": "事件列表輸出", "xloc": [ - "default.handlebars->41->2387" + "default.handlebars->41->2390" ] }, { @@ -25900,8 +25904,8 @@ "zh-chs": "到期时间", "zh-cht": "到期時間", "xloc": [ - "default.handlebars->41->1085", - "default.handlebars->41->1768", + "default.handlebars->41->1089", + "default.handlebars->41->1771", "default.handlebars->41->278" ] }, @@ -25952,7 +25956,7 @@ "zh-chs": "过期{0}", "zh-cht": "過期{0}", "xloc": [ - "default.handlebars->41->1831", + "default.handlebars->41->1834", "sharing.handlebars->11->95" ] }, @@ -25978,7 +25982,7 @@ "zh-chs": "输出设备信息", "zh-cht": "輸出裝置訊息", "xloc": [ - "default.handlebars->41->642" + "default.handlebars->41->644" ] }, { @@ -26003,7 +26007,7 @@ "zh-chs": "扩充式ASCII", "zh-cht": "擴充式ASCII", "xloc": [ - "default.handlebars->41->1336", + "default.handlebars->41->1340", "sharing.handlebars->11->34" ] }, @@ -26055,7 +26059,7 @@ "zh-chs": "外部", "zh-cht": "外部", "xloc": [ - "default.handlebars->41->2955" + "default.handlebars->41->2958" ] }, { @@ -26066,7 +26070,7 @@ "ru": "ключ FIDO", "fr": "Clé FIDO", "xloc": [ - "default.handlebars->41->2841" + "default.handlebars->41->2844" ] }, { @@ -26116,7 +26120,7 @@ "zh-chs": "FYRO马其顿语", "zh-cht": "FYRO馬其頓語", "xloc": [ - "default.handlebars->41->1655" + "default.handlebars->41->1658" ] }, { @@ -26141,7 +26145,7 @@ "zh-chs": "法罗语", "zh-cht": "法羅語", "xloc": [ - "default.handlebars->41->1606" + "default.handlebars->41->1609" ] }, { @@ -26190,8 +26194,8 @@ "tr": "E-posta adresi değiştirilemedi, başka bir hesap zaten kullanıyor: {0}.", "zh-chs": "无法更改电子邮件地址,另一个帐户已在使用:{0}。", "xloc": [ - "default-mobile.handlebars->11->727", - "default.handlebars->41->2882" + "default-mobile.handlebars->11->726", + "default.handlebars->41->2885" ] }, { @@ -26248,7 +26252,7 @@ "zh-chs": "本地用户拒绝后无法启动远程桌面", "zh-cht": "本地用戶拒絕後無法啟動遠程桌面", "xloc": [ - "default.handlebars->41->2238" + "default.handlebars->41->2241" ] }, { @@ -26294,7 +26298,7 @@ "zh-chs": "本地用户拒绝后无法启动远程文件", "zh-cht": "本地用戶拒絕後無法啟動遠程文件", "xloc": [ - "default.handlebars->41->2245" + "default.handlebars->41->2248" ] }, { @@ -26341,7 +26345,7 @@ "zh-cht": "無法啟動遠程終端接合{0}({1})", "xloc": [ "default-mobile.handlebars->11->408", - "default.handlebars->41->1206", + "default.handlebars->41->1210", "sharing.handlebars->11->30", "sharing.handlebars->11->8" ] @@ -26368,7 +26372,7 @@ "zh-chs": "波斯文(波斯文)", "zh-cht": "波斯語(波斯語)", "xloc": [ - "default.handlebars->41->1607" + "default.handlebars->41->1610" ] }, { @@ -26420,9 +26424,9 @@ "zh-chs": "功能", "zh-cht": "功能", "xloc": [ - "default.handlebars->41->1882", - "default.handlebars->41->2531", - "default.handlebars->41->2619" + "default.handlebars->41->1885", + "default.handlebars->41->2534", + "default.handlebars->41->2622" ] }, { @@ -26447,7 +26451,7 @@ "zh-chs": "斐济", "zh-cht": "斐濟", "xloc": [ - "default.handlebars->41->1608" + "default.handlebars->41->1611" ] }, { @@ -26498,8 +26502,8 @@ "zh-cht": "檔案編輯器", "xloc": [ "default-mobile.handlebars->11->487", - "default.handlebars->41->1372", - "default.handlebars->41->748", + "default.handlebars->41->1376", + "default.handlebars->41->750", "sharing.handlebars->11->66" ] }, @@ -26547,8 +26551,8 @@ "zh-chs": "档案操作", "zh-cht": "檔案操作", "xloc": [ - "default.handlebars->41->1351", - "default.handlebars->41->1353", + "default.handlebars->41->1355", + "default.handlebars->41->1357", "sharing.handlebars->11->46", "sharing.handlebars->11->48" ] @@ -26599,7 +26603,7 @@ "tr": "Dosya transferi", "zh-chs": "文件传输", "xloc": [ - "default.handlebars->41->2755" + "default.handlebars->41->2758" ] }, { @@ -26624,7 +26628,7 @@ "zh-chs": "文件系统驱动", "zh-cht": "FileSystemDriver", "xloc": [ - "default.handlebars->41->1292" + "default.handlebars->41->1296" ] }, { @@ -26651,15 +26655,15 @@ "xloc": [ "default-mobile.handlebars->11->216", "default-mobile.handlebars->11->354", - "default.handlebars->41->1058", - "default.handlebars->41->1935", - "default.handlebars->41->2013", - "default.handlebars->41->2762", - "default.handlebars->41->2821", - "default.handlebars->41->2852", - "default.handlebars->41->2943", - "default.handlebars->41->413", - "default.handlebars->41->973", + "default.handlebars->41->1062", + "default.handlebars->41->1938", + "default.handlebars->41->2016", + "default.handlebars->41->2765", + "default.handlebars->41->2824", + "default.handlebars->41->2855", + "default.handlebars->41->2946", + "default.handlebars->41->415", + "default.handlebars->41->977", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevFiles", "default.handlebars->contextMenu->cxfiles", "sharing.handlebars->LeftSideToolBar" @@ -26712,10 +26716,10 @@ "zh-chs": "档案通知", "zh-cht": "檔案通知", "xloc": [ - "default.handlebars->41->1890", - "default.handlebars->41->2539", - "default.handlebars->41->2641", - "default.handlebars->41->857" + "default.handlebars->41->1893", + "default.handlebars->41->2542", + "default.handlebars->41->2644", + "default.handlebars->41->859" ] }, { @@ -26740,10 +26744,10 @@ "zh-chs": "档案提示", "zh-cht": "檔案提示", "xloc": [ - "default.handlebars->41->1889", - "default.handlebars->41->2538", - "default.handlebars->41->2640", - "default.handlebars->41->856" + "default.handlebars->41->1892", + "default.handlebars->41->2541", + "default.handlebars->41->2643", + "default.handlebars->41->858" ] }, { @@ -26769,7 +26773,7 @@ "zh-cht": "過濾", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p2->xdevicesBar->1", - "default.handlebars->41->1356", + "default.handlebars->41->1360", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar", "default.handlebars->container->column_l->p4->3->1->0->3->3", @@ -26844,7 +26848,7 @@ "zh-chs": "查找文件", "zh-cht": "查找文件", "xloc": [ - "default.handlebars->41->1359", + "default.handlebars->41->1363", "sharing.handlebars->11->54" ] }, @@ -26856,7 +26860,7 @@ "pt-br": "Gravação de sessão \\\"{0}\\\" finalizada, {1} segundo(s)", "ru": "Завершение сеанса записи \\\"{0}\\\", {1} сек.", "xloc": [ - "default.handlebars->41->2350" + "default.handlebars->41->2353" ] }, { @@ -26881,7 +26885,7 @@ "zh-chs": "录制会话已完成,{0}秒", "zh-cht": "錄製會話已完成,{0}秒", "xloc": [ - "default.handlebars->41->2211" + "default.handlebars->41->2214" ] }, { @@ -26906,7 +26910,7 @@ "zh-chs": "芬兰", "zh-cht": "芬蘭", "xloc": [ - "default.handlebars->41->1609" + "default.handlebars->41->1612" ] }, { @@ -26932,8 +26936,8 @@ "xloc": [ "default-mobile.handlebars->11->524", "default-mobile.handlebars->11->526", - "default.handlebars->41->839", - "default.handlebars->41->841" + "default.handlebars->41->841", + "default.handlebars->41->843" ] }, { @@ -26957,8 +26961,8 @@ "tr": "Güvenlik duvarı etkin değil", "zh-chs": "防火墙未激活", "xloc": [ - "default.handlebars->41->2143", - "default.handlebars->41->2157" + "default.handlebars->41->2146", + "default.handlebars->41->2160" ] }, { @@ -27008,7 +27012,7 @@ "ru": "Флаги", "tr": "Bayraklar", "xloc": [ - "default.handlebars->41->2360" + "default.handlebars->41->2363" ] }, { @@ -27033,7 +27037,7 @@ "zh-chs": "闪光", "xloc": [ "default-mobile.handlebars->11->358", - "default.handlebars->41->1096" + "default.handlebars->41->1100" ] }, { @@ -27109,7 +27113,7 @@ "zh-chs": "对于ACM激活,需要将英特尔®AMT设置为以下受信任的FQDN:", "zh-cht": "對於ACM激活,需要將英特爾®AMT設置為以下受信任的FQDN:", "xloc": [ - "default.handlebars->41->467" + "default.handlebars->41->469" ] }, { @@ -27220,7 +27224,7 @@ "tr": "Aracı güncellemesi için", "zh-chs": "代理更新", "xloc": [ - "default.handlebars->41->696" + "default.handlebars->41->698" ] }, { @@ -27244,7 +27248,7 @@ "tr": "Aracı güncellemesini zorla", "zh-chs": "强制代理更新", "xloc": [ - "default.handlebars->41->654" + "default.handlebars->41->656" ] }, { @@ -27268,7 +27272,7 @@ "tr": "Seçilen cihazlarda aracı güncellemesi zorunlu kılınsın mı?", "zh-chs": "在选定的设备上强制更新代理?", "xloc": [ - "default.handlebars->41->695" + "default.handlebars->41->697" ] }, { @@ -27293,8 +27297,8 @@ "zh-chs": "下次登录时强制重置密码。", "zh-cht": "下次登入時強制重置密碼。", "xloc": [ - "default.handlebars->41->2473", - "default.handlebars->41->2701" + "default.handlebars->41->2476", + "default.handlebars->41->2704" ] }, { @@ -27314,7 +27318,7 @@ "ru": "Принудительно отключен сеанс рабочего стола пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi masaüstü oturumu", "xloc": [ - "default.handlebars->41->2338" + "default.handlebars->41->2341" ] }, { @@ -27334,7 +27338,7 @@ "ru": "Принудительно отключен файловый сеанс пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesilen dosyalar oturumu", "xloc": [ - "default.handlebars->41->2340" + "default.handlebars->41->2343" ] }, { @@ -27354,7 +27358,7 @@ "ru": "Принудительно отключен сеанс маршрутизации пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi yönlendirme oturumu", "xloc": [ - "default.handlebars->41->2341" + "default.handlebars->41->2344" ] }, { @@ -27374,7 +27378,7 @@ "ru": "Принудительно отключен терминальный сеанс пользователя {0}", "tr": "{0} kullanıcısının bağlantısı zorla kesildi terminal oturumu", "xloc": [ - "default.handlebars->41->2339" + "default.handlebars->41->2342" ] }, { @@ -27477,7 +27481,7 @@ "zh-chs": "格式化", "zh-cht": "格式化", "xloc": [ - "default.handlebars->41->2378" + "default.handlebars->41->2381" ] }, { @@ -27550,8 +27554,8 @@ "zh-chs": "自由", "zh-cht": "自由", "xloc": [ - "default.handlebars->41->2901", - "default.handlebars->41->2903" + "default.handlebars->41->2904", + "default.handlebars->41->2906" ] }, { @@ -27602,7 +27606,7 @@ "zh-chs": "法文(比利时)", "zh-cht": "法語(比利時)", "xloc": [ - "default.handlebars->41->1611" + "default.handlebars->41->1614" ] }, { @@ -27627,7 +27631,7 @@ "zh-chs": "法文(加拿大)", "zh-cht": "法語(加拿大)", "xloc": [ - "default.handlebars->41->1612" + "default.handlebars->41->1615" ] }, { @@ -27652,7 +27656,7 @@ "zh-chs": "法文(法国)", "zh-cht": "法語(法國)", "xloc": [ - "default.handlebars->41->1613" + "default.handlebars->41->1616" ] }, { @@ -27677,7 +27681,7 @@ "zh-chs": "法文(卢森堡)", "zh-cht": "法語(盧森堡)", "xloc": [ - "default.handlebars->41->1614" + "default.handlebars->41->1617" ] }, { @@ -27702,7 +27706,7 @@ "zh-chs": "法文(摩纳哥)", "zh-cht": "法語(摩納哥)", "xloc": [ - "default.handlebars->41->1615" + "default.handlebars->41->1618" ] }, { @@ -27727,7 +27731,7 @@ "zh-chs": "法文(标准)", "zh-cht": "法語(標準)", "xloc": [ - "default.handlebars->41->1610" + "default.handlebars->41->1613" ] }, { @@ -27752,7 +27756,7 @@ "zh-chs": "法文(瑞士)", "zh-cht": "法語(瑞士)", "xloc": [ - "default.handlebars->41->1616" + "default.handlebars->41->1619" ] }, { @@ -27777,7 +27781,7 @@ "zh-chs": "弗里斯兰文", "zh-cht": "弗里斯蘭語", "xloc": [ - "default.handlebars->41->1617" + "default.handlebars->41->1620" ] }, { @@ -27802,7 +27806,7 @@ "zh-chs": "弗留利", "zh-cht": "弗留利", "xloc": [ - "default.handlebars->41->1618" + "default.handlebars->41->1621" ] }, { @@ -27828,12 +27832,12 @@ "zh-cht": "完整管理員", "xloc": [ "default-mobile.handlebars->11->136", - "default-mobile.handlebars->11->641", - "default-mobile.handlebars->11->658", - "default-mobile.handlebars->11->678", - "default.handlebars->41->1824", - "default.handlebars->41->2037", - "default.handlebars->41->2485" + "default-mobile.handlebars->11->640", + "default-mobile.handlebars->11->657", + "default-mobile.handlebars->11->677", + "default.handlebars->41->1827", + "default.handlebars->41->2040", + "default.handlebars->41->2488" ] }, { @@ -27858,7 +27862,7 @@ "zh-chs": "完整管理员(保留所有权利)", "zh-cht": "完整管理員(保留所有權利)", "xloc": [ - "default.handlebars->41->2075" + "default.handlebars->41->2078" ] }, { @@ -27905,7 +27909,7 @@ "zh-chs": "完整设备权限", "zh-cht": "完整裝置權限", "xloc": [ - "default.handlebars->41->999" + "default.handlebars->41->1003" ] }, { @@ -27930,7 +27934,7 @@ "zh-chs": "全部权限", "zh-cht": "全部權限", "xloc": [ - "default.handlebars->41->1018" + "default.handlebars->41->1022" ] }, { @@ -28008,7 +28012,7 @@ "zh-chs": "完整管理员", "zh-cht": "完整管理員", "xloc": [ - "default.handlebars->41->2589" + "default.handlebars->41->2592" ] }, { @@ -28033,8 +28037,8 @@ "zh-chs": "全自动的", "zh-cht": "全自動的", "xloc": [ - "default.handlebars->41->1910", - "default.handlebars->41->1967" + "default.handlebars->41->1913", + "default.handlebars->41->1970" ] }, { @@ -28059,8 +28063,8 @@ "zh-chs": "GPU", "zh-cht": "GPU", "xloc": [ - "default-mobile.handlebars->11->589", - "default.handlebars->41->1478" + "default-mobile.handlebars->11->588", + "default.handlebars->41->1481" ] }, { @@ -28085,7 +28089,7 @@ "zh-chs": "盖尔文(爱尔兰)", "zh-cht": "蓋爾語(愛爾蘭)", "xloc": [ - "default.handlebars->41->1620" + "default.handlebars->41->1623" ] }, { @@ -28110,7 +28114,7 @@ "zh-chs": "盖尔文(苏格兰文)", "zh-cht": "蓋爾語(蘇格蘭語)", "xloc": [ - "default.handlebars->41->1619" + "default.handlebars->41->1622" ] }, { @@ -28135,7 +28139,7 @@ "zh-chs": "加拉契文", "zh-cht": "加拉契語", "xloc": [ - "default.handlebars->41->1621" + "default.handlebars->41->1624" ] }, { @@ -28163,6 +28167,13 @@ "default.handlebars->41->160" ] }, + { + "en": "Gateway: {0}", + "xloc": [ + "default-mobile.handlebars->11->556", + "default.handlebars->41->1449" + ] + }, { "cs": "Obecné", "da": "Generel", @@ -28241,7 +28252,7 @@ "zh-chs": "一般信息", "zh-cht": "一般訊息", "xloc": [ - "default.handlebars->41->755" + "default.handlebars->41->757" ] }, { @@ -28286,7 +28297,7 @@ "ru": "Создать отчет", "tr": "Rapor oluştur", "xloc": [ - "default.handlebars->41->2802" + "default.handlebars->41->2805" ] }, { @@ -28331,7 +28342,7 @@ "zh-chs": "格鲁吉亚文", "zh-cht": "格魯吉亞文", "xloc": [ - "default.handlebars->41->1622" + "default.handlebars->41->1625" ] }, { @@ -28356,7 +28367,7 @@ "zh-chs": "德文(奥地利)", "zh-cht": "德語(奧地利)", "xloc": [ - "default.handlebars->41->1624" + "default.handlebars->41->1627" ] }, { @@ -28381,7 +28392,7 @@ "zh-chs": "德文(德国)", "zh-cht": "德文(德國)", "xloc": [ - "default.handlebars->41->1625" + "default.handlebars->41->1628" ] }, { @@ -28406,7 +28417,7 @@ "zh-chs": "德文(列支敦士登)", "zh-cht": "德文(列支敦士登)", "xloc": [ - "default.handlebars->41->1626" + "default.handlebars->41->1629" ] }, { @@ -28431,7 +28442,7 @@ "zh-chs": "德文(卢森堡)", "zh-cht": "德語(盧森堡)", "xloc": [ - "default.handlebars->41->1627" + "default.handlebars->41->1630" ] }, { @@ -28456,7 +28467,7 @@ "zh-chs": "德文(标准)", "zh-cht": "德語(標準)", "xloc": [ - "default.handlebars->41->1623" + "default.handlebars->41->1626" ] }, { @@ -28481,7 +28492,7 @@ "zh-chs": "德文(瑞士)", "zh-cht": "德文(瑞士)", "xloc": [ - "default.handlebars->41->1628" + "default.handlebars->41->1631" ] }, { @@ -28501,7 +28512,7 @@ "ru": "Получить буфер", "tr": "Pano Al", "xloc": [ - "default.handlebars->41->1277" + "default.handlebars->41->1281" ] }, { @@ -28526,7 +28537,7 @@ "zh-chs": "获取此设备的MQTT登录凭证。", "zh-cht": "獲取此裝置的MQTT登入憑證。", "xloc": [ - "default.handlebars->41->938" + "default.handlebars->41->942" ] }, { @@ -28577,7 +28588,7 @@ "zh-chs": "正在获取剪贴板内容,{0}个字节", "zh-cht": "正在獲取剪貼板內容,{0}個字節", "xloc": [ - "default.handlebars->41->2225" + "default.handlebars->41->2228" ] }, { @@ -28654,7 +28665,7 @@ "zh-chs": "好", "zh-cht": "好", "xloc": [ - "default.handlebars->41->1820" + "default.handlebars->41->1823" ] }, { @@ -28709,8 +28720,8 @@ "zh-chs": "Google云端硬盘备份", "zh-cht": "Google雲端硬盤備份", "xloc": [ - "default.handlebars->41->1841", "default.handlebars->41->1844", + "default.handlebars->41->1847", "default.handlebars->41->304" ] }, @@ -28736,7 +28747,7 @@ "zh-chs": "Google云端硬盘控制台", "zh-cht": "Google雲端硬盤控制台", "xloc": [ - "default.handlebars->41->1838" + "default.handlebars->41->1841" ] }, { @@ -28786,7 +28797,7 @@ "zh-chs": "Google云端硬盘备份当前处于活动状态。", "zh-cht": "Google雲端硬盤備份當前處於活動狀態。", "xloc": [ - "default.handlebars->41->1842" + "default.handlebars->41->1845" ] }, { @@ -28835,7 +28846,7 @@ "zh-chs": "希腊文", "zh-cht": "希臘文", "xloc": [ - "default.handlebars->41->1629" + "default.handlebars->41->1632" ] }, { @@ -28861,8 +28872,8 @@ "zh-cht": "群", "xloc": [ "default-mobile.handlebars->11->271", - "default.handlebars->41->2818", - "default.handlebars->41->783", + "default.handlebars->41->2821", + "default.handlebars->41->785", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->1" ] }, @@ -28888,9 +28899,9 @@ "zh-chs": "集体指令", "zh-cht": "集體指令", "xloc": [ - "default.handlebars->41->2427", - "default.handlebars->41->2509", - "default.handlebars->41->659", + "default.handlebars->41->2430", + "default.handlebars->41->2512", + "default.handlebars->41->661", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p4->3->1->0->3->3", "default.handlebars->container->column_l->p50->3->1->0->3->p50userGroupOps" @@ -28918,7 +28929,7 @@ "zh-chs": "通过...分组", "zh-cht": "通過...分群", "xloc": [ - "default.handlebars->41->2374" + "default.handlebars->41->2377" ] }, { @@ -28944,7 +28955,7 @@ "zh-cht": "群標識符", "xloc": [ "agent-translations.json", - "default.handlebars->41->2526" + "default.handlebars->41->2529" ] }, { @@ -28969,7 +28980,7 @@ "zh-chs": "群组成员", "zh-cht": "群組成員", "xloc": [ - "default.handlebars->41->2550" + "default.handlebars->41->2553" ] }, { @@ -29005,8 +29016,8 @@ "zh-chs": "通过...分组", "zh-cht": "通過...分群", "xloc": [ - "default.handlebars->41->2788", - "default.handlebars->41->2791" + "default.handlebars->41->2791", + "default.handlebars->41->2794" ] }, { @@ -29026,7 +29037,7 @@ "ru": "Имя группы", "tr": "Grup ismi", "xloc": [ - "default.handlebars->41->2358" + "default.handlebars->41->2361" ] }, { @@ -29051,7 +29062,7 @@ "zh-chs": "用户{0}的群组权限。", "zh-cht": "用戶{0}的群組權限。", "xloc": [ - "default.handlebars->41->2036" + "default.handlebars->41->2039" ] }, { @@ -29076,7 +29087,7 @@ "zh-chs": "{0}的群组权限。", "zh-cht": "{0}的群組權限。", "xloc": [ - "default.handlebars->41->2035" + "default.handlebars->41->2038" ] }, { @@ -29171,7 +29182,7 @@ "ru": "Гость", "tr": "Misafir", "xloc": [ - "default.handlebars->41->2808" + "default.handlebars->41->2811" ] }, { @@ -29196,7 +29207,7 @@ "zh-chs": "访客姓名", "zh-cht": "來賓姓名", "xloc": [ - "default.handlebars->41->1055", + "default.handlebars->41->1059", "default.handlebars->41->268" ] }, @@ -29221,8 +29232,8 @@ "tr": "Misafir Paylaşımı", "zh-chs": "嘉宾分享", "xloc": [ - "default.handlebars->41->1006", - "default.handlebars->41->1028" + "default.handlebars->41->1010", + "default.handlebars->41->1032" ] }, { @@ -29246,7 +29257,7 @@ "tr": "Misafir Paylaşımı", "zh-chs": "嘉宾分享", "xloc": [ - "default.handlebars->41->2044" + "default.handlebars->41->2047" ] }, { @@ -29271,7 +29282,7 @@ "zh-chs": "古久拉提", "zh-cht": "古久拉提", "xloc": [ - "default.handlebars->41->1630" + "default.handlebars->41->1633" ] }, { @@ -29295,7 +29306,9 @@ "tr": "HTTP", "zh-chs": "HTTP", "xloc": [ - "default.handlebars->41->2939" + "default.handlebars->41->2942", + "default.handlebars->41->392", + "default.handlebars->41->927" ] }, { @@ -29317,7 +29330,11 @@ "ru": "HTTPS", "sv": "HTTPS", "tr": "HTTPS", - "zh-chs": "HTTPS" + "zh-chs": "HTTPS", + "xloc": [ + "default.handlebars->41->393", + "default.handlebars->41->928" + ] }, { "cs": "HW připojení", @@ -29369,7 +29386,7 @@ "zh-chs": "海地文", "zh-cht": "海地文", "xloc": [ - "default.handlebars->41->1631" + "default.handlebars->41->1634" ] }, { @@ -29443,8 +29460,8 @@ "zh-chs": "强行断开代理", "zh-cht": "強行斷開代理", "xloc": [ - "default-mobile.handlebars->11->619", - "default.handlebars->41->1509" + "default-mobile.handlebars->11->618", + "default.handlebars->41->1512" ] }, { @@ -29454,7 +29471,7 @@ "ru": "Аппаратный OTP", "fr": "Clé OTP matérielle", "xloc": [ - "default.handlebars->41->2843" + "default.handlebars->41->2846" ] }, { @@ -29479,7 +29496,7 @@ "zh-chs": "堆总数", "zh-cht": "堆總數", "xloc": [ - "default.handlebars->41->2957" + "default.handlebars->41->2960" ] }, { @@ -29504,7 +29521,7 @@ "zh-chs": "堆使用", "zh-cht": "堆使用", "xloc": [ - "default.handlebars->41->2956" + "default.handlebars->41->2959" ] }, { @@ -29529,7 +29546,7 @@ "zh-chs": "希伯来文", "zh-cht": "希伯來文", "xloc": [ - "default.handlebars->41->1632" + "default.handlebars->41->1635" ] }, { @@ -29626,7 +29643,7 @@ "zh-chs": "已请求帮助,用户:{0},详细信息:{1}", "zh-cht": "已請求幫助,用戶:{0},詳細信息:{1}", "xloc": [ - "default.handlebars->41->2302" + "default.handlebars->41->2305" ] }, { @@ -29652,7 +29669,7 @@ "zh-cht": "幫助請求", "xloc": [ "default-mobile.handlebars->11->200", - "default.handlebars->41->396" + "default.handlebars->41->398" ] }, { @@ -29702,7 +29719,7 @@ "zh-chs": "帮助翻译MeshCentral", "zh-cht": "幫助翻譯MeshCentral", "xloc": [ - "default.handlebars->41->1747" + "default.handlebars->41->1750" ] }, { @@ -29806,7 +29823,7 @@ "default-mobile.handlebars->11->234", "default-mobile.handlebars->11->242", "default.handlebars->41->5", - "default.handlebars->41->609" + "default.handlebars->41->611" ] }, { @@ -29831,7 +29848,7 @@ "zh-chs": "印地文", "zh-cht": "印地文", "xloc": [ - "default.handlebars->41->1633" + "default.handlebars->41->1636" ] }, { @@ -29879,7 +29896,7 @@ "zh-cht": "保存1個項目進行複製", "xloc": [ "default-mobile.handlebars->11->496", - "default.handlebars->41->1382", + "default.handlebars->41->1386", "sharing.handlebars->11->76" ] }, @@ -29906,7 +29923,7 @@ "zh-cht": "保存1個項目進行移動", "xloc": [ "default-mobile.handlebars->11->500", - "default.handlebars->41->1386", + "default.handlebars->41->1390", "sharing.handlebars->11->80" ] }, @@ -29933,7 +29950,7 @@ "zh-cht": "保留{0}個項目進行複製", "xloc": [ "default-mobile.handlebars->11->494", - "default.handlebars->41->1380", + "default.handlebars->41->1384", "sharing.handlebars->11->74" ] }, @@ -29960,7 +29977,7 @@ "zh-cht": "保存{0}個項目以進行移動", "xloc": [ "default-mobile.handlebars->11->498", - "default.handlebars->41->1384", + "default.handlebars->41->1388", "sharing.handlebars->11->78" ] }, @@ -29987,7 +30004,7 @@ "zh-cht": "保存{0}項目{1}給{2}", "xloc": [ "default-mobile.handlebars->11->160", - "default.handlebars->41->2198" + "default.handlebars->41->2201" ] }, { @@ -30012,7 +30029,7 @@ "zh-chs": "家", "xloc": [ "default-mobile.handlebars->11->421", - "default.handlebars->41->1250" + "default.handlebars->41->1254" ] }, { @@ -30042,14 +30059,14 @@ "default-mobile.handlebars->11->276", "default-mobile.handlebars->11->401", "default-mobile.handlebars->11->547", - "default-mobile.handlebars->11->634", - "default.handlebars->41->1199", - "default.handlebars->41->1426", - "default.handlebars->41->1813", - "default.handlebars->41->1871", - "default.handlebars->41->448", - "default.handlebars->41->457", - "default.handlebars->41->788" + "default-mobile.handlebars->11->633", + "default.handlebars->41->1203", + "default.handlebars->41->1430", + "default.handlebars->41->1816", + "default.handlebars->41->1874", + "default.handlebars->41->450", + "default.handlebars->41->459", + "default.handlebars->41->790" ] }, { @@ -30074,7 +30091,7 @@ "zh-chs": "主机名同步", "zh-cht": "主機名同步", "xloc": [ - "default.handlebars->41->1878" + "default.handlebars->41->1881" ] }, { @@ -30099,7 +30116,7 @@ "zh-chs": "匈牙利文", "zh-cht": "匈牙利文", "xloc": [ - "default.handlebars->41->1634" + "default.handlebars->41->1637" ] }, { @@ -30109,7 +30126,7 @@ "ru": "Cервер требует гибридный режим", "fr": "Hybrid requis par le serveur", "xloc": [ - "default.handlebars->41->1216" + "default.handlebars->41->1220" ] }, { @@ -30120,8 +30137,8 @@ "pt-br": "Endereço IP", "ru": "IP Адрес", "xloc": [ - "default.handlebars->41->2813", - "default.handlebars->41->2848" + "default.handlebars->41->2816", + "default.handlebars->41->2851" ] }, { @@ -30180,8 +30197,8 @@ "zh-chs": "IP范围", "zh-cht": "IP範圍", "xloc": [ - "default.handlebars->41->478", - "default.handlebars->41->480" + "default.handlebars->41->480", + "default.handlebars->41->482" ] }, { @@ -30231,7 +30248,7 @@ "default-mobile.handlebars->11->312", "default-mobile.handlebars->11->341", "default.handlebars->41->375", - "default.handlebars->41->627" + "default.handlebars->41->629" ] }, { @@ -30251,7 +30268,7 @@ "ru": "IP-KVM / Устройство питания", "tr": "IP-KVM / Güç cihazı", "xloc": [ - "default.handlebars->41->1803" + "default.handlebars->41->1806" ] }, { @@ -30261,7 +30278,7 @@ "ru": "IP-KVM / Устройство питания, ретранслируемое через агента", "fr": "Appareil IP-KVM / Power relayé par l'agent", "xloc": [ - "default.handlebars->41->1804" + "default.handlebars->41->1807" ] }, { @@ -30281,8 +30298,8 @@ "ru": "IP-KVM-устройство", "tr": "IP-KVM cihazı", "xloc": [ - "default-mobile.handlebars->11->626", - "default.handlebars->41->1863" + "default-mobile.handlebars->11->625", + "default.handlebars->41->1866" ] }, { @@ -30292,8 +30309,8 @@ "ru": "Устройство IP-KVM ретранслируемое через агента", "fr": "Appareil IP-KAM relayé par l'agent", "xloc": [ - "default-mobile.handlebars->11->627", - "default.handlebars->41->1864" + "default-mobile.handlebars->11->626", + "default.handlebars->41->1867" ] }, { @@ -30313,8 +30330,8 @@ "ru": "Порт IP-KVM подключен", "tr": "IP-KVM bağlantı noktası bağlandı", "xloc": [ - "default.handlebars->41->944", - "default.handlebars->41->945" + "default.handlebars->41->948", + "default.handlebars->41->949" ] }, { @@ -30354,7 +30371,7 @@ "ru": "Порт IP-KVM запущен и готов к использованию.", "tr": "IP-KVM portu hazır ve kullanıma hazır.", "xloc": [ - "default.handlebars->41->626" + "default.handlebars->41->628" ] }, { @@ -30379,9 +30396,9 @@ "zh-chs": "IP:{0}", "zh-cht": "IP:{0}", "xloc": [ - "default.handlebars->41->1436", - "default.handlebars->41->1446", - "default.handlebars->41->1450" + "default-mobile.handlebars->11->554", + "default.handlebars->41->1440", + "default.handlebars->41->1447" ] }, { @@ -30406,9 +30423,7 @@ "zh-chs": "IP:{0},掩码:{1},网关:{2}", "zh-cht": "IP:{0},遮罩:{1},閘道:{2}", "xloc": [ - "default.handlebars->41->1434", - "default.handlebars->41->1444", - "default.handlebars->41->1448" + "default.handlebars->41->1438" ] }, { @@ -30433,12 +30448,10 @@ "zh-chs": "IPv4层", "zh-cht": "IPv4層", "xloc": [ - "default-mobile.handlebars->11->554", - "default-mobile.handlebars->11->556", - "default.handlebars->41->1433", - "default.handlebars->41->1435", - "default.handlebars->41->1443", - "default.handlebars->41->1445" + "default-mobile.handlebars->11->557", + "default.handlebars->41->1437", + "default.handlebars->41->1439", + "default.handlebars->41->1450" ] }, { @@ -30541,10 +30554,8 @@ "zh-chs": "IPv6层", "zh-cht": "IPv6層", "xloc": [ - "default-mobile.handlebars->11->558", - "default-mobile.handlebars->11->560", - "default.handlebars->41->1447", - "default.handlebars->41->1449" + "default-mobile.handlebars->11->559", + "default.handlebars->41->1452" ] }, { @@ -30644,7 +30655,7 @@ "zh-chs": "冰岛文", "zh-cht": "冰島文", "xloc": [ - "default.handlebars->41->1635" + "default.handlebars->41->1638" ] }, { @@ -30670,7 +30681,7 @@ "zh-cht": "圖符選擇", "xloc": [ "default-mobile.handlebars->11->395", - "default.handlebars->41->1193" + "default.handlebars->41->1197" ] }, { @@ -30696,9 +30707,9 @@ "zh-cht": "識別符", "xloc": [ "default-mobile.handlebars->11->546", - "default-mobile.handlebars->11->587", - "default.handlebars->41->1425", - "default.handlebars->41->1476" + "default-mobile.handlebars->11->586", + "default.handlebars->41->1429", + "default.handlebars->41->1479" ] }, { @@ -30723,7 +30734,7 @@ "zh-chs": "如果在CCM中,请重新激活英特尔®AMT", "zh-cht": "如果在CCM中,請重新激活英特爾®AMT", "xloc": [ - "default.handlebars->41->1981" + "default.handlebars->41->1984" ] }, { @@ -30899,9 +30910,9 @@ "tr": "Intel® AMT Cihazlarını İçe Aktarın", "zh-chs": "导入英特尔® AMT 设备", "xloc": [ - "default.handlebars->41->1955", - "default.handlebars->41->1956", - "default.handlebars->41->1960" + "default.handlebars->41->1958", + "default.handlebars->41->1959", + "default.handlebars->41->1963" ] }, { @@ -30925,7 +30936,7 @@ "tr": "MeshCommander JSON formatında yerel Intel® AMT cihazlarının bir listesini içe aktarın.", "zh-chs": "以 MeshCommander JSON 格式导入本地英特尔® AMT 设备列表。", "xloc": [ - "default.handlebars->41->1954" + "default.handlebars->41->1957" ] }, { @@ -30949,7 +30960,7 @@ "tr": "Cihaz listesini içe aktar", "zh-chs": "导入设备列表", "xloc": [ - "default.handlebars->41->1950" + "default.handlebars->41->1953" ] }, { @@ -30973,7 +30984,7 @@ "tr": "Anında bildirim kimlik doğrulamasını kullanmak için, hesabınızda tam haklara sahip bir mobil cihaz kurulmalıdır.", "zh-chs": "为了使用推送通知身份验证,必须在您的帐户中设置具有完全权限的移动设备。", "xloc": [ - "default.handlebars->41->1530" + "default.handlebars->41->1533" ] }, { @@ -30997,7 +31008,7 @@ "tr": "Kaldırılana kadar günleri devre dışı bırak", "zh-chs": "停用天数直到移除", "xloc": [ - "default.handlebars->41->2021" + "default.handlebars->41->2024" ] }, { @@ -31045,7 +31056,7 @@ "tr": "Cihaz ayrıntılarını dahil et", "zh-chs": "包括设备详细信息", "xloc": [ - "default.handlebars->41->709" + "default.handlebars->41->711" ] }, { @@ -31097,7 +31108,7 @@ "ru": "Несоответствие флагов", "fr": "Indicateurs incohérents", "xloc": [ - "default.handlebars->41->1215" + "default.handlebars->41->1219" ] }, { @@ -31108,8 +31119,8 @@ "pt-br": "2ª etapa incorreta", "ru": "Неверный 2-й фактор", "xloc": [ - "default.handlebars->41->2836", - "default.handlebars->41->2856" + "default.handlebars->41->2839", + "default.handlebars->41->2859" ] }, { @@ -31187,7 +31198,7 @@ "zh-chs": "印度尼西亚文", "zh-cht": "印度尼西亞文", "xloc": [ - "default.handlebars->41->1636" + "default.handlebars->41->1639" ] }, { @@ -31289,7 +31300,7 @@ "zh-chs": "插", "xloc": [ "default-mobile.handlebars->11->419", - "default.handlebars->41->1248" + "default.handlebars->41->1252" ] }, { @@ -31432,7 +31443,7 @@ "tr": "Bu cihaza yükle", "zh-chs": "在此设备上安装", "xloc": [ - "default-mobile.handlebars->11->638" + "default-mobile.handlebars->11->637" ] }, { @@ -31456,7 +31467,7 @@ "tr": "MeshCentral Agent'ı Android cihazınıza yükleyin. Kurulduktan sonra, cihazınızı bu sunucuya bağlamak için eşleştirme bağlantısını tıklayın.", "zh-chs": "在您的 Android 设备上安装 MeshCentral Agent。安装后,单击配对链接将您的设备连接到此服务器。", "xloc": [ - "default-mobile.handlebars->11->654" + "default-mobile.handlebars->11->653" ] }, { @@ -31523,12 +31534,12 @@ "zh-chs": "安装类型", "zh-cht": "安裝方式", "xloc": [ - "default.handlebars->41->2116", - "default.handlebars->41->2123", - "default.handlebars->41->508", - "default.handlebars->41->528", - "default.handlebars->41->544", - "default.handlebars->41->548" + "default.handlebars->41->2119", + "default.handlebars->41->2126", + "default.handlebars->41->510", + "default.handlebars->41->530", + "default.handlebars->41->546", + "default.handlebars->41->550" ] }, { @@ -31553,7 +31564,7 @@ "zh-chs": "英特尔(F10 = ESC + [OM)", "zh-cht": "Intel(F10 = ESC + [OM)", "xloc": [ - "default.handlebars->41->1338", + "default.handlebars->41->1342", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons", "sharing.handlebars->11->36", "sharing.handlebars->p12->9->1->terminalSettingsButtons" @@ -31581,7 +31592,7 @@ "zh-chs": "英特尔AMT", "zh-cht": "英特爾AMT", "xloc": [ - "default.handlebars->41->2953" + "default.handlebars->41->2956" ] }, { @@ -31665,7 +31676,7 @@ "tr": "Intel AMT yöneticisi", "zh-chs": "英特尔 AMT 经理", "xloc": [ - "default.handlebars->41->2982" + "default.handlebars->41->2985" ] }, { @@ -31710,7 +31721,7 @@ "zh-chs": "英特尔ASCII", "zh-cht": "Intel ASCII", "xloc": [ - "default.handlebars->41->1337", + "default.handlebars->41->1341", "sharing.handlebars->11->35" ] }, @@ -31739,16 +31750,16 @@ "default-mobile.handlebars->11->258", "default-mobile.handlebars->11->308", "default-mobile.handlebars->11->315", - "default.handlebars->41->1897", - "default.handlebars->41->1911", - "default.handlebars->41->2138", - "default.handlebars->41->2151", - "default.handlebars->41->2981", - "default.handlebars->41->758", - "default.handlebars->41->825", - "default.handlebars->41->864", - "default.handlebars->41->874", - "default.handlebars->41->958" + "default.handlebars->41->1900", + "default.handlebars->41->1914", + "default.handlebars->41->2141", + "default.handlebars->41->2154", + "default.handlebars->41->2984", + "default.handlebars->41->760", + "default.handlebars->41->827", + "default.handlebars->41->866", + "default.handlebars->41->876", + "default.handlebars->41->962" ] }, { @@ -31773,7 +31784,7 @@ "zh-chs": "英特尔®AMT ACM", "zh-cht": "英特爾®AMT ACM", "xloc": [ - "default.handlebars->41->476" + "default.handlebars->41->478" ] }, { @@ -31799,7 +31810,7 @@ "zh-cht": "Intel® AMT CIRA", "xloc": [ "default-mobile.handlebars->11->314", - "default.handlebars->41->872" + "default.handlebars->41->874" ] }, { @@ -31869,8 +31880,8 @@ "zh-cht": "Intel® AMT CIRA已連接並可以使用。", "xloc": [ "default.handlebars->41->378", - "default.handlebars->41->630", - "default.handlebars->41->871" + "default.handlebars->41->632", + "default.handlebars->41->873" ] }, { @@ -31922,7 +31933,7 @@ "tr": "Intel® AMT JSON", "zh-chs": "英特尔® AMT JSON", "xloc": [ - "default.handlebars->41->707" + "default.handlebars->41->709" ] }, { @@ -31971,8 +31982,8 @@ "tr": "Intel® AMT Tek Tıkla Kurtarma", "zh-chs": "英特尔® AMT 一键恢复", "xloc": [ - "default.handlebars->41->1111", - "default.handlebars->41->1124" + "default.handlebars->41->1115", + "default.handlebars->41->1128" ] }, { @@ -31997,7 +32008,7 @@ "zh-chs": "英特尔®AMT政策", "zh-cht": "Intel® AMT政策", "xloc": [ - "default.handlebars->41->1968" + "default.handlebars->41->1971" ] }, { @@ -32024,9 +32035,9 @@ "default-mobile.handlebars->11->374", "default-mobile.handlebars->11->376", "default-mobile.handlebars->11->378", - "default.handlebars->41->1125", - "default.handlebars->41->1127", - "default.handlebars->41->1129" + "default.handlebars->41->1129", + "default.handlebars->41->1131", + "default.handlebars->41->1133" ] }, { @@ -32051,7 +32062,7 @@ "zh-chs": "英特尔® AMT 关机", "xloc": [ "default-mobile.handlebars->11->369", - "default.handlebars->41->1109" + "default.handlebars->41->1113" ] }, { @@ -32076,7 +32087,7 @@ "zh-chs": "英特尔® AMT 开机", "xloc": [ "default-mobile.handlebars->11->370", - "default.handlebars->41->1110" + "default.handlebars->41->1114" ] }, { @@ -32101,8 +32112,8 @@ "zh-chs": "英特尔®AMT重定向", "zh-cht": "Intel® AMT重定向", "xloc": [ - "default.handlebars->41->2757", - "default.handlebars->41->2764", + "default.handlebars->41->2760", + "default.handlebars->41->2767", "player.handlebars->3->30" ] }, @@ -32128,7 +32139,7 @@ "zh-chs": "英特尔® AMT 重置", "xloc": [ "default-mobile.handlebars->11->368", - "default.handlebars->41->1108" + "default.handlebars->41->1112" ] }, { @@ -32153,7 +32164,7 @@ "zh-chs": "英特尔®AMT标签", "zh-cht": "Intel® AMT標籤", "xloc": [ - "default.handlebars->41->829" + "default.handlebars->41->831" ] }, { @@ -32178,8 +32189,8 @@ "zh-chs": "英特尔®AMT WSMAN", "zh-cht": "Intle® AMT WSMAN", "xloc": [ - "default.handlebars->41->2756", - "default.handlebars->41->2763", + "default.handlebars->41->2759", + "default.handlebars->41->2766", "player.handlebars->3->29" ] }, @@ -32228,8 +32239,8 @@ "zh-cht": "Intel ®AMT已連接", "xloc": [ "default-mobile.handlebars->11->343", - "default.handlebars->41->948", - "default.handlebars->41->949" + "default.handlebars->41->952", + "default.handlebars->41->953" ] }, { @@ -32254,9 +32265,9 @@ "zh-chs": "英特尔®AMT桌面和串行事件", "zh-cht": "Intel® AMT桌面和串行事件", "xloc": [ - "default.handlebars->41->1774", - "default.handlebars->41->2131", - "default.handlebars->41->994" + "default.handlebars->41->1777", + "default.handlebars->41->2134", + "default.handlebars->41->998" ] }, { @@ -32282,8 +32293,8 @@ "zh-cht": "檢測到Intel® AMT", "xloc": [ "default-mobile.handlebars->11->344", - "default.handlebars->41->950", - "default.handlebars->41->951" + "default.handlebars->41->954", + "default.handlebars->41->955" ] }, { @@ -32308,7 +32319,7 @@ "zh-chs": "在Intel® AMT尔AMT", "zh-cht": "在管理控制模式下啟動了Intel® AMT", "xloc": [ - "default.handlebars->41->811" + "default.handlebars->41->813" ] }, { @@ -32333,7 +32344,7 @@ "zh-chs": "英特尔AMT在客户端控制模式下被激活", "zh-cht": "Intel® AMT在客户端控制模式下被启动", "xloc": [ - "default.handlebars->41->809" + "default.handlebars->41->811" ] }, { @@ -32358,7 +32369,7 @@ "zh-chs": "英特尔®AMT可路由并可以使用。", "zh-cht": "Intel® AMT可路由並可以使用。", "xloc": [ - "default.handlebars->41->873" + "default.handlebars->41->875" ] }, { @@ -32384,7 +32395,7 @@ "zh-cht": "Intel® AMT是可路由的。", "xloc": [ "default.handlebars->41->380", - "default.handlebars->41->632" + "default.handlebars->41->634" ] }, { @@ -32410,7 +32421,7 @@ "zh-cht": "Intel® AMT已設置TLS網絡安全性", "xloc": [ "default-mobile.handlebars->11->298", - "default.handlebars->41->813" + "default.handlebars->41->815" ] }, { @@ -32482,9 +32493,9 @@ "zh-chs": "仅限英特尔®AMT,无代理", "zh-cht": "僅限Intel® AMT,無代理", "xloc": [ - "default-mobile.handlebars->11->622", - "default.handlebars->41->1807", - "default.handlebars->41->1859" + "default-mobile.handlebars->11->621", + "default.handlebars->41->1810", + "default.handlebars->41->1862" ] }, { @@ -32509,7 +32520,7 @@ "zh-chs": "英特尔®AMT设置", "zh-cht": "英特爾®AMT設置", "xloc": [ - "default.handlebars->41->468" + "default.handlebars->41->470" ] }, { @@ -32556,7 +32567,7 @@ "zh-chs": "英特尔®主动管理技术", "zh-cht": "Intel® Active Management Technology", "xloc": [ - "default.handlebars->41->824" + "default.handlebars->41->826" ] }, { @@ -32581,8 +32592,8 @@ "zh-chs": "英特尔®主动管理技术(英特尔®AMT)", "zh-cht": "Intel ® Active Management Technology(Intel® AMT)", "xloc": [ - "default-mobile.handlebars->11->579", - "default.handlebars->41->1468" + "default-mobile.handlebars->11->578", + "default.handlebars->41->1471" ] }, { @@ -32608,7 +32619,7 @@ "zh-cht": "Intel® ME", "xloc": [ "default-mobile.handlebars->11->307", - "default.handlebars->41->823" + "default.handlebars->41->825" ] }, { @@ -32633,7 +32644,7 @@ "zh-chs": "英特尔®可管理性引擎", "zh-cht": "Intel® Management Engine", "xloc": [ - "default.handlebars->41->822" + "default.handlebars->41->824" ] }, { @@ -32659,8 +32670,8 @@ "zh-cht": "Intel® M", "xloc": [ "default-mobile.handlebars->11->309", - "default.handlebars->41->827", - "default.handlebars->41->956" + "default.handlebars->41->829", + "default.handlebars->41->960" ] }, { @@ -32685,7 +32696,7 @@ "zh-chs": "英特尔®标准可管理性", "zh-cht": "Intel® Standard Manageability", "xloc": [ - "default.handlebars->41->826" + "default.handlebars->41->828" ] }, { @@ -32693,8 +32704,8 @@ "nl": "Intel® Standaard beheerbaarheid (Intel® SM)", "pl": "Intel® Standard Manageability (Intel® SM)", "xloc": [ - "default-mobile.handlebars->11->578", - "default.handlebars->41->1467" + "default-mobile.handlebars->11->577", + "default.handlebars->41->1470" ] }, { @@ -32702,7 +32713,7 @@ "nl": "Intel®AMT", "pl": "Intel®AMT", "xloc": [ - "default.handlebars->41->957" + "default.handlebars->41->961" ] }, { @@ -32710,7 +32721,7 @@ "nl": "Intel®SM", "pl": "Intel®SM", "xloc": [ - "default.handlebars->41->955" + "default.handlebars->41->959" ] }, { @@ -32730,7 +32741,7 @@ "ru": "Изменение политик Intel(r) AMT", "tr": "Intel(r) AMT ilke değişikliği", "xloc": [ - "default.handlebars->41->2345" + "default.handlebars->41->2348" ] }, { @@ -32943,7 +32954,7 @@ "zh-chs": "互动", "zh-cht": "互動", "xloc": [ - "default.handlebars->41->1293" + "default.handlebars->41->1297" ] }, { @@ -32968,11 +32979,11 @@ "zh-chs": "仅限互动", "zh-cht": "僅限互動", "xloc": [ - "default.handlebars->41->2119", - "default.handlebars->41->2126", - "default.handlebars->41->511", - "default.handlebars->41->531", - "default.handlebars->41->547" + "default.handlebars->41->2122", + "default.handlebars->41->2129", + "default.handlebars->41->513", + "default.handlebars->41->533", + "default.handlebars->41->549" ] }, { @@ -32997,7 +33008,7 @@ "zh-chs": "介面", "zh-cht": "介面", "xloc": [ - "default.handlebars->41->918" + "default.handlebars->41->920" ] }, { @@ -33046,7 +33057,7 @@ "zh-chs": "因纽特文", "zh-cht": "因紐特文", "xloc": [ - "default.handlebars->41->1637" + "default.handlebars->41->1640" ] }, { @@ -33097,7 +33108,7 @@ "zh-cht": "無效證件", "xloc": [ "default-mobile.handlebars->11->303", - "default.handlebars->41->818" + "default.handlebars->41->820" ] }, { @@ -33122,7 +33133,7 @@ "zh-chs": "无效的设备组类型", "zh-cht": "無效的裝置群類型", "xloc": [ - "default.handlebars->41->2915" + "default.handlebars->41->2918" ] }, { @@ -33147,7 +33158,7 @@ "zh-chs": "无效的JSON", "zh-cht": "無效的JSON", "xloc": [ - "default.handlebars->41->2909" + "default.handlebars->41->2912" ] }, { @@ -33172,9 +33183,9 @@ "zh-chs": "无效的JSON档案格式。", "zh-cht": "無效的JSON檔案格式。", "xloc": [ - "default.handlebars->41->1961", - "default.handlebars->41->2447", - "default.handlebars->41->2449" + "default.handlebars->41->1964", + "default.handlebars->41->2450", + "default.handlebars->41->2452" ] }, { @@ -33199,8 +33210,8 @@ "zh-chs": "无效的JSON档案:{0}。", "zh-cht": "無效的JSON檔案:{0}。", "xloc": [ - "default.handlebars->41->1957", - "default.handlebars->41->2445" + "default.handlebars->41->1960", + "default.handlebars->41->2448" ] }, { @@ -33305,7 +33316,7 @@ "zh-chs": "无效的PKCS签名", "zh-cht": "無效的PKCS簽名", "xloc": [ - "default.handlebars->41->2907" + "default.handlebars->41->2910" ] }, { @@ -33330,7 +33341,7 @@ "zh-chs": "無效的RSA密碼", "zh-cht": "無效的RSA密碼", "xloc": [ - "default.handlebars->41->2908" + "default.handlebars->41->2911" ] }, { @@ -33354,8 +33365,8 @@ "tr": "Geçersiz SMS mesajı", "zh-chs": "无效的短信", "xloc": [ - "default-mobile.handlebars->11->739", - "default.handlebars->41->2894" + "default-mobile.handlebars->11->738", + "default.handlebars->41->2897" ] }, { @@ -33426,8 +33437,8 @@ "tr": "Geçersiz alan", "zh-chs": "无效域", "xloc": [ - "default-mobile.handlebars->11->719", - "default.handlebars->41->2874" + "default-mobile.handlebars->11->718", + "default.handlebars->41->2877" ] }, { @@ -33472,8 +33483,8 @@ "tr": "Geçersiz e-posta", "zh-chs": "不合规电邮", "xloc": [ - "default-mobile.handlebars->11->718", - "default.handlebars->41->2873" + "default-mobile.handlebars->11->717", + "default.handlebars->41->2876" ] }, { @@ -33562,8 +33573,8 @@ "pt-br": "Tentativa de login inválida", "ru": "Неудачная попытка входа", "xloc": [ - "default.handlebars->41->2838", - "default.handlebars->41->2858" + "default.handlebars->41->2841", + "default.handlebars->41->2861" ] }, { @@ -33587,9 +33598,9 @@ "tr": "Geçersiz şifre", "zh-chs": "无效的密码", "xloc": [ - "default-mobile.handlebars->11->717", + "default-mobile.handlebars->11->716", "default-mobile.handlebars->11->85", - "default.handlebars->41->2872", + "default.handlebars->41->2875", "default.handlebars->41->310" ] }, @@ -33614,8 +33625,8 @@ "tr": "Geçersiz site izinleri", "zh-chs": "网站权限无效", "xloc": [ - "default-mobile.handlebars->11->720", - "default.handlebars->41->2875" + "default-mobile.handlebars->11->719", + "default.handlebars->41->2878" ] }, { @@ -33666,7 +33677,7 @@ "tr": "{0}, {1}, {2}'den geçersiz kullanıcı giriş denemesi", "zh-chs": "来自 {0}、{1}、{2} 的无效用户登录尝试", "xloc": [ - "default.handlebars->41->2314" + "default.handlebars->41->2317" ] }, { @@ -33690,8 +33701,8 @@ "tr": "Geçersiz kullanıcı adı", "zh-chs": "无效的用户名", "xloc": [ - "default-mobile.handlebars->11->716", - "default.handlebars->41->2871" + "default-mobile.handlebars->11->715", + "default.handlebars->41->2874" ] }, { @@ -33737,7 +33748,7 @@ "zh-chs": "使电邮无效", "zh-cht": "使電郵無效", "xloc": [ - "default.handlebars->41->2421" + "default.handlebars->41->2424" ] }, { @@ -33809,7 +33820,7 @@ "zh-chs": "邀请类型", "zh-cht": "邀請類型", "xloc": [ - "default.handlebars->41->487" + "default.handlebars->41->489" ] }, { @@ -33834,7 +33845,7 @@ "zh-chs": "任何人都可以使用邀请代码通过以下公共连接将设备加入该设备组:", "zh-cht": "任何人都可以使用邀請代碼通過以下公共鏈結將裝置加入該裝置群:", "xloc": [ - "default.handlebars->41->2121" + "default.handlebars->41->2124" ] }, { @@ -33884,9 +33895,9 @@ "zh-chs": "邀请", "zh-cht": "邀請", "xloc": [ - "default.handlebars->41->1921", - "default.handlebars->41->443", - "default.handlebars->41->533" + "default.handlebars->41->1924", + "default.handlebars->41->445", + "default.handlebars->41->535" ] }, { @@ -33911,13 +33922,13 @@ "zh-chs": "邀请码", "zh-cht": "邀請碼", "xloc": [ - "default-mobile.handlebars->11->714", - "default.handlebars->41->1903", - "default.handlebars->41->2109", - "default.handlebars->41->2120", - "default.handlebars->41->2122", - "default.handlebars->41->2127", - "default.handlebars->41->2869" + "default-mobile.handlebars->11->713", + "default.handlebars->41->1906", + "default.handlebars->41->2112", + "default.handlebars->41->2123", + "default.handlebars->41->2125", + "default.handlebars->41->2130", + "default.handlebars->41->2872" ] }, { @@ -33937,7 +33948,7 @@ "ru": "Код приглашения", "tr": "Davet kodu", "xloc": [ - "default.handlebars->41->2363" + "default.handlebars->41->2366" ] }, { @@ -33962,7 +33973,7 @@ "zh-chs": "通过共享邀请连结来邀请某人安装网格代理。该连结为用户提供“ {0} ”设备组的安装说明。该连结是公用的,不需要这服务器的帐户。", "zh-cht": "通過共享邀請鏈結來邀請某人安裝mesh agent。該鏈結將用戶指向“ {0} ”裝置群的安裝說明。該鏈結是公用的,不需要這伺服器的帳戶。", "xloc": [ - "default.handlebars->41->514" + "default.handlebars->41->516" ] }, { @@ -33987,8 +33998,8 @@ "zh-chs": "邀请某人在该设备组上安装网格代理。", "zh-cht": "邀請某人在該裝置群上安裝mesh agent。", "xloc": [ - "default.handlebars->41->1920", - "default.handlebars->41->442" + "default.handlebars->41->1923", + "default.handlebars->41->444" ] }, { @@ -34013,7 +34024,7 @@ "zh-chs": "邀请某人安装网状代理。将发送一封电邮,其中包含指向“ {0} ”设备组的网状代理安装的连结。", "zh-cht": "邀請某人安裝mesh agent。將發送一封電郵,其中包含指向“ {0} ”裝置群的mesh agent安裝的鏈結。", "xloc": [ - "default.handlebars->41->490" + "default.handlebars->41->492" ] }, { @@ -34038,7 +34049,7 @@ "zh-chs": "爱尔兰文", "zh-cht": "愛爾蘭文", "xloc": [ - "default.handlebars->41->1638" + "default.handlebars->41->1641" ] }, { @@ -34048,7 +34059,7 @@ "ru": "Установлен ретранслятором для \\\"{0}\\\".", "fr": "Est un relais de \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2357" + "default.handlebars->41->2360" ] }, { @@ -34073,7 +34084,7 @@ "zh-chs": "意大利文(标准)", "zh-cht": "意大利文(標準)", "xloc": [ - "default.handlebars->41->1639" + "default.handlebars->41->1642" ] }, { @@ -34098,7 +34109,7 @@ "zh-chs": "意大利文(瑞士)", "zh-cht": "義大利文(瑞士)", "xloc": [ - "default.handlebars->41->1640" + "default.handlebars->41->1643" ] }, { @@ -34144,7 +34155,7 @@ "zh-chs": "JSON", "zh-cht": "JSON", "xloc": [ - "default.handlebars->41->2380" + "default.handlebars->41->2383" ] }, { @@ -34169,9 +34180,9 @@ "zh-chs": "JSON格式", "zh-cht": "JSON格式", "xloc": [ - "default.handlebars->41->2385", - "default.handlebars->41->2453", - "default.handlebars->41->705" + "default.handlebars->41->2388", + "default.handlebars->41->2456", + "default.handlebars->41->707" ] }, { @@ -34196,7 +34207,7 @@ "zh-chs": "日文", "zh-cht": "日文", "xloc": [ - "default.handlebars->41->1641" + "default.handlebars->41->1644" ] }, { @@ -34221,7 +34232,7 @@ "zh-chs": "已加入桌面Multiplex会话", "zh-cht": "已加入桌面Multiplex會話", "xloc": [ - "default.handlebars->41->2208" + "default.handlebars->41->2211" ] }, { @@ -34232,7 +34243,7 @@ "pt-br": "Entrou na sessão \\\"{0}\\\" multiplex de área de trabalho", "ru": "Присоединился к сеансу мультиплексированного рабочего стола \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2347" + "default.handlebars->41->2350" ] }, { @@ -34257,7 +34268,7 @@ "zh-chs": "卡纳达文", "zh-cht": "卡納達文", "xloc": [ - "default.handlebars->41->1642" + "default.handlebars->41->1645" ] }, { @@ -34282,7 +34293,7 @@ "zh-chs": "克什米尔文", "zh-cht": "克什米爾文", "xloc": [ - "default.handlebars->41->1643" + "default.handlebars->41->1646" ] }, { @@ -34307,7 +34318,7 @@ "zh-chs": "哈萨克文", "zh-cht": "哈薩克文", "xloc": [ - "default.handlebars->41->1644" + "default.handlebars->41->1647" ] }, { @@ -34332,7 +34343,7 @@ "zh-chs": "保留现有密码", "zh-cht": "保留現有密碼", "xloc": [ - "default.handlebars->41->1969" + "default.handlebars->41->1972" ] }, { @@ -34357,7 +34368,7 @@ "zh-chs": "内核驱动器", "zh-cht": "內核驅動器", "xloc": [ - "default.handlebars->41->1294" + "default.handlebars->41->1298" ] }, { @@ -34382,7 +34393,7 @@ "zh-chs": "密钥文件", "xloc": [ "default-mobile.handlebars->11->457", - "default.handlebars->41->1324", + "default.handlebars->41->1328", "ssh.handlebars->3->15" ] }, @@ -34408,8 +34419,8 @@ "zh-chs": "键名", "zh-cht": "鍵名", "xloc": [ - "default.handlebars->41->1535", - "default.handlebars->41->1538" + "default.handlebars->41->1538", + "default.handlebars->41->1541" ] }, { @@ -34434,7 +34445,7 @@ "zh-chs": "密钥密码", "xloc": [ "default-mobile.handlebars->11->459", - "default.handlebars->41->1326", + "default.handlebars->41->1330", "ssh.handlebars->3->17" ] }, @@ -34460,7 +34471,7 @@ "zh-chs": "密钥文件必须是 OpenSSH 格式。", "xloc": [ "default-mobile.handlebars->11->458", - "default.handlebars->41->1325", + "default.handlebars->41->1329", "ssh.handlebars->3->16" ] }, @@ -34508,7 +34519,7 @@ "zh-chs": "键盘快捷键自定义", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10dialog->1->1", - "default.handlebars->41->1268" + "default.handlebars->41->1272" ] }, { @@ -34528,7 +34539,7 @@ "ru": "Настройка клавиатурных строк", "tr": "Klavye Dizileri Özelleştirme", "xloc": [ - "default.handlebars->41->1273" + "default.handlebars->41->1277" ] }, { @@ -34575,7 +34586,7 @@ "zh-chs": "高棉文", "zh-cht": "高棉文", "xloc": [ - "default.handlebars->41->1645" + "default.handlebars->41->1648" ] }, { @@ -34600,7 +34611,7 @@ "zh-chs": "杀死进程{0}", "zh-cht": "殺死進程{0}", "xloc": [ - "default.handlebars->41->2223" + "default.handlebars->41->2226" ] }, { @@ -34625,7 +34636,7 @@ "zh-chs": "吉尔吉斯", "zh-cht": "吉爾吉斯", "xloc": [ - "default.handlebars->41->1646" + "default.handlebars->41->1649" ] }, { @@ -34650,7 +34661,7 @@ "zh-chs": "克林贡", "zh-cht": "克林貢", "xloc": [ - "default.handlebars->41->1647" + "default.handlebars->41->1650" ] }, { @@ -34675,8 +34686,8 @@ "zh-chs": "已知的", "zh-cht": "已知的", "xloc": [ - "default-mobile.handlebars->11->577", - "default.handlebars->41->1466" + "default-mobile.handlebars->11->576", + "default.handlebars->41->1469" ] }, { @@ -34701,7 +34712,7 @@ "zh-chs": "韩文", "zh-cht": "韓文", "xloc": [ - "default.handlebars->41->1648" + "default.handlebars->41->1651" ] }, { @@ -34726,7 +34737,7 @@ "zh-chs": "韩文(朝鲜)", "zh-cht": "韓文(朝鮮)", "xloc": [ - "default.handlebars->41->1649" + "default.handlebars->41->1652" ] }, { @@ -34751,7 +34762,7 @@ "zh-chs": "韩文(韩国)", "zh-cht": "韓文(韓國)", "xloc": [ - "default.handlebars->41->1650" + "default.handlebars->41->1653" ] }, { @@ -34776,8 +34787,8 @@ "zh-chs": "如果", "zh-cht": "如果", "xloc": [ - "default.handlebars->41->1311", - "default.handlebars->41->1342", + "default.handlebars->41->1315", + "default.handlebars->41->1346", "sharing.handlebars->11->26", "sharing.handlebars->11->40" ] @@ -34804,7 +34815,7 @@ "zh-chs": "语言", "zh-cht": "語言", "xloc": [ - "default.handlebars->41->1745" + "default.handlebars->41->1748" ] }, { @@ -34875,7 +34886,7 @@ "zh-chs": "大焦点", "zh-cht": "大焦點", "xloc": [ - "default.handlebars->41->1242" + "default.handlebars->41->1246" ] }, { @@ -35033,7 +35044,7 @@ "zh-chs": "过去30天", "zh-cht": "過去30天", "xloc": [ - "default.handlebars->41->2796", + "default.handlebars->41->2799", "default.handlebars->container->column_l->p40->3->1->p40time->9" ] }, @@ -35109,7 +35120,7 @@ "ru": "Последние 7 дней", "tr": "Son 7 gün", "xloc": [ - "default.handlebars->41->2795" + "default.handlebars->41->2798" ] }, { @@ -35159,7 +35170,7 @@ "zh-chs": "最后访问", "zh-cht": "最後訪問", "xloc": [ - "default.handlebars->41->2393" + "default.handlebars->41->2396" ] }, { @@ -35179,7 +35190,7 @@ "ru": "Последний день", "tr": "Son gun", "xloc": [ - "default.handlebars->41->2794" + "default.handlebars->41->2797" ] }, { @@ -35204,7 +35215,7 @@ "zh-chs": "上次登录", "zh-cht": "上次登入", "xloc": [ - "default.handlebars->41->2623" + "default.handlebars->41->2626" ] }, { @@ -35250,7 +35261,7 @@ "ru": "Последний доступ: {0}", "tr": "Son erişim: {0}", "xloc": [ - "default.handlebars->41->2403" + "default.handlebars->41->2406" ] }, { @@ -35279,9 +35290,9 @@ "default-mobile.handlebars->11->539", "default-mobile.handlebars->11->540", "default.handlebars->41->141", - "default.handlebars->41->1417", - "default.handlebars->41->1418", - "default.handlebars->41->1419", + "default.handlebars->41->1421", + "default.handlebars->41->1422", + "default.handlebars->41->1423", "default.handlebars->41->143", "default.handlebars->41->145" ] @@ -35311,8 +35322,8 @@ "default-mobile.handlebars->11->535", "default-mobile.handlebars->11->537", "default.handlebars->41->140", - "default.handlebars->41->1414", - "default.handlebars->41->1416" + "default.handlebars->41->1418", + "default.handlebars->41->1420" ] }, { @@ -35337,7 +35348,7 @@ "zh-chs": "上次更改:{0}", "zh-cht": "上次更改:{0}", "xloc": [ - "default.handlebars->41->2627" + "default.handlebars->41->2630" ] }, { @@ -35412,7 +35423,7 @@ "zh-chs": "上次登录:{0}", "zh-cht": "上次登入:{0}", "xloc": [ - "default.handlebars->41->2404" + "default.handlebars->41->2407" ] }, { @@ -35438,7 +35449,7 @@ "zh-cht": "最後一次發現:", "xloc": [ "default.handlebars->41->110", - "default.handlebars->41->954" + "default.handlebars->41->958" ] }, { @@ -35559,7 +35570,7 @@ "zh-chs": "拉丁文", "zh-cht": "拉丁文", "xloc": [ - "default.handlebars->41->1651" + "default.handlebars->41->1654" ] }, { @@ -35584,7 +35595,7 @@ "zh-chs": "拉脱维亚文", "zh-cht": "拉脫維亞文", "xloc": [ - "default.handlebars->41->1652" + "default.handlebars->41->1655" ] }, { @@ -35609,7 +35620,7 @@ "zh-chs": "启动MeshCentral路由器", "zh-cht": "啟動MeshCentral路由器", "xloc": [ - "default.handlebars->41->1166" + "default.handlebars->41->1170" ] }, { @@ -35656,7 +35667,7 @@ "zh-chs": "启动基于Web的RDP连接到此设备", "zh-cht": "啟動基於Web的RDP連接到此裝置", "xloc": [ - "default.handlebars->41->934" + "default.handlebars->41->938" ] }, { @@ -35680,7 +35691,7 @@ "tr": "Bu cihaza web tabanlı SSH oturumu başlat", "zh-chs": "启动与此设备的基于 Web 的 SSH 会话", "xloc": [ - "default.handlebars->41->936" + "default.handlebars->41->940" ] }, { @@ -35704,7 +35715,7 @@ "tr": "Bu cihaza web tabanlı VNC oturumu başlat", "zh-chs": "启动与此设备的基于 Web 的 VNC 会话", "xloc": [ - "default.handlebars->41->932" + "default.handlebars->41->936" ] }, { @@ -35729,7 +35740,7 @@ "zh-chs": "如没有请留空。", "zh-cht": "如沒有請留空。", "xloc": [ - "default.handlebars->41->2673" + "default.handlebars->41->2676" ] }, { @@ -35754,7 +35765,7 @@ "zh-chs": "剩下", "xloc": [ "default-mobile.handlebars->11->425", - "default.handlebars->41->1254" + "default.handlebars->41->1258" ] }, { @@ -35765,7 +35776,7 @@ "pt-br": "Deixar a sessão WEB-RDP \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-RDP \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2329" + "default.handlebars->41->2332" ] }, { @@ -35793,7 +35804,7 @@ "pt-br": "Deixar a sessão WEB-SFTP \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-SFTP \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2328" + "default.handlebars->41->2331" ] }, { @@ -35821,7 +35832,7 @@ "pt-br": "Deixar a sessão WEB-SSH \\\"{1}\\\" depois de {0} segundo(s)", "ru": "Завершен сеанс Web-SSH \\\"{1}\\\", {0} с.", "xloc": [ - "default.handlebars->41->2327" + "default.handlebars->41->2330" ] }, { @@ -35858,7 +35869,7 @@ "ru": "Завершен сеанс Web-VNC, {0} с.", "tr": "{0} saniye sonra Web-VNC oturumundan ayrıldı.", "xloc": [ - "default.handlebars->41->2330" + "default.handlebars->41->2333" ] }, { @@ -35913,7 +35924,7 @@ "zh-chs": "离开桌面多路复用会话", "zh-cht": "離開桌面多路復用會話", "xloc": [ - "default.handlebars->41->2209" + "default.handlebars->41->2212" ] }, { @@ -35924,7 +35935,7 @@ "pt-br": "Deixar a sessão \\\"{0}\\\" de área de trabalho multiplex depois de {1} segundo(s)", "ru": "Покинул сеанс мультиплексного режима рабочего стола \\\"{0}\\\" через {1} с.", "xloc": [ - "default.handlebars->41->2348" + "default.handlebars->41->2351" ] }, { @@ -35944,7 +35955,7 @@ "ru": "Покинул сеанс мультиплексного режима рабочего стола через {0} с.", "tr": "{0} saniye sonra masaüstü multipleks oturumundan ayrıldı.", "xloc": [ - "default.handlebars->41->2326" + "default.handlebars->41->2329" ] }, { @@ -35964,7 +35975,7 @@ "ru": "Продолжительность", "tr": "Uzunluk", "xloc": [ - "default.handlebars->41->2809" + "default.handlebars->41->2812" ] }, { @@ -36036,8 +36047,8 @@ "zh-chs": "限制事件", "zh-cht": "限制事件", "xloc": [ - "default.handlebars->41->1012", - "default.handlebars->41->1034" + "default.handlebars->41->1016", + "default.handlebars->41->1038" ] }, { @@ -36088,10 +36099,10 @@ "zh-chs": "有限输入", "zh-cht": "有限輸入", "xloc": [ - "default-mobile.handlebars->11->691", - "default.handlebars->41->1004", - "default.handlebars->41->1026", - "default.handlebars->41->2089" + "default-mobile.handlebars->11->690", + "default.handlebars->41->1008", + "default.handlebars->41->1030", + "default.handlebars->41->2092" ] }, { @@ -36116,8 +36127,8 @@ "zh-chs": "仅有限输入", "zh-cht": "僅有限輸入", "xloc": [ - "default-mobile.handlebars->11->664", - "default.handlebars->41->2043" + "default-mobile.handlebars->11->663", + "default.handlebars->41->2046" ] }, { @@ -36168,8 +36179,8 @@ "zh-chs": "连结过期", "zh-cht": "鏈結過期", "xloc": [ - "default.handlebars->41->501", - "default.handlebars->41->515" + "default.handlebars->41->503", + "default.handlebars->41->517" ] }, { @@ -36194,7 +36205,7 @@ "zh-chs": "连结邀请", "zh-cht": "鏈結邀請", "xloc": [ - "default.handlebars->41->488" + "default.handlebars->41->490" ] }, { @@ -36247,7 +36258,7 @@ "agentinvite.handlebars->container->column_l->5->linuxtab->1", "default-mobile.handlebars->11->285", "default.handlebars->41->56", - "default.handlebars->41->798" + "default.handlebars->41->800" ] }, { @@ -36271,7 +36282,7 @@ "tr": "Linux (SSH/SCP/VNC)", "zh-chs": "Linux (SSH/SCP/VNC)", "xloc": [ - "default.handlebars->41->452" + "default.handlebars->41->454" ] }, { @@ -36296,7 +36307,7 @@ "zh-chs": "Linux / BSD", "zh-cht": "Linux / BSD", "xloc": [ - "default.handlebars->41->535" + "default.handlebars->41->537" ] }, { @@ -36321,7 +36332,7 @@ "zh-chs": "Linux / BSD(卸载)", "zh-cht": "Linux / BSD(解除安裝)", "xloc": [ - "default.handlebars->41->541" + "default.handlebars->41->543" ] }, { @@ -36346,7 +36357,7 @@ "zh-chs": "Linux / BSD / macOS二进制安装程序", "zh-cht": "Linux / BSD / macOS二進制安裝軟體", "xloc": [ - "default.handlebars->41->536" + "default.handlebars->41->538" ] }, { @@ -36475,7 +36486,7 @@ "zh-chs": "Linux ARM,Raspberry Pi(32位)", "zh-cht": "Linux ARM,Raspberry Pi(32位)", "xloc": [ - "default.handlebars->41->1174" + "default.handlebars->41->1178" ] }, { @@ -36500,7 +36511,7 @@ "zh-chs": "Linux ARM, Raspberry Pi (64位)", "zh-cht": "Linux ARM, Raspberry Pi (64位)", "xloc": [ - "default.handlebars->41->1175" + "default.handlebars->41->1179" ] }, { @@ -36511,8 +36522,8 @@ "pt-br": "MeshAgent Linux", "ru": "MeshAgent для Linux", "xloc": [ - "default.handlebars->41->2113", - "default.handlebars->41->525" + "default.handlebars->41->2116", + "default.handlebars->41->527" ] }, { @@ -36589,7 +36600,7 @@ "zh-chs": "Linux路径", "zh-cht": "Linux路徑", "xloc": [ - "default.handlebars->41->691" + "default.handlebars->41->693" ] }, { @@ -36666,7 +36677,7 @@ "zh-chs": "只限Linux", "zh-cht": "只限Linux", "xloc": [ - "default.handlebars->41->499" + "default.handlebars->41->501" ] }, { @@ -36691,7 +36702,7 @@ "zh-chs": "Linux x86(32位)", "zh-cht": "Linux x86(32位)", "xloc": [ - "default.handlebars->41->1171" + "default.handlebars->41->1175" ] }, { @@ -36716,7 +36727,7 @@ "zh-chs": "Linux x86(64位)", "zh-cht": "Linux x86(64位)", "xloc": [ - "default.handlebars->41->1170" + "default.handlebars->41->1174" ] }, { @@ -36741,8 +36752,8 @@ "zh-chs": "Linux / BSD / macOS命令外壳", "zh-cht": "Linux / BSD / macOS命令外殼", "xloc": [ - "default.handlebars->41->1119", - "default.handlebars->41->671" + "default.handlebars->41->1123", + "default.handlebars->41->673" ] }, { @@ -36836,7 +36847,7 @@ "zh-chs": "立陶宛文", "zh-cht": "立陶宛文", "xloc": [ - "default.handlebars->41->1653" + "default.handlebars->41->1656" ] }, { @@ -36888,13 +36899,13 @@ "xloc": [ "default-mobile.handlebars->11->103", "default-mobile.handlebars->11->88", - "default.handlebars->41->1161", - "default.handlebars->41->1512", - "default.handlebars->41->1524", - "default.handlebars->41->1850", - "default.handlebars->41->1854", - "default.handlebars->41->2696", - "default.handlebars->41->2745" + "default.handlebars->41->1165", + "default.handlebars->41->1515", + "default.handlebars->41->1527", + "default.handlebars->41->1853", + "default.handlebars->41->1857", + "default.handlebars->41->2699", + "default.handlebars->41->2748" ] }, { @@ -37013,9 +37024,9 @@ "tr": "Yerel cihazlar, aracı yok", "zh-chs": "本地设备,无代理", "xloc": [ - "default-mobile.handlebars->11->624", - "default.handlebars->41->1801", - "default.handlebars->41->1861" + "default-mobile.handlebars->11->623", + "default.handlebars->41->1804", + "default.handlebars->41->1864" ] }, { @@ -37085,7 +37096,7 @@ "zh-chs": "本地用户接受的远程终端请求", "zh-cht": "本地用戶接受的遠程終端請求", "xloc": [ - "default.handlebars->41->2231" + "default.handlebars->41->2234" ] }, { @@ -37110,7 +37121,7 @@ "zh-chs": "本地用户拒绝了远程终端请求", "zh-cht": "本地用戶拒絕了遠程終端請求", "xloc": [ - "default.handlebars->41->2232" + "default.handlebars->41->2235" ] }, { @@ -37135,7 +37146,7 @@ "zh-chs": "本地化设置", "zh-cht": "本地化設置", "xloc": [ - "default.handlebars->41->1748", + "default.handlebars->41->1751", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->7" ] }, @@ -37161,7 +37172,7 @@ "zh-chs": "位置", "zh-cht": "位置", "xloc": [ - "default.handlebars->41->920" + "default.handlebars->41->922" ] }, { @@ -37211,7 +37222,7 @@ "zh-chs": "锁定账户", "zh-cht": "鎖定賬戶", "xloc": [ - "default.handlebars->41->2493" + "default.handlebars->41->2496" ] }, { @@ -37236,7 +37247,7 @@ "zh-chs": "锁定帐户设置", "zh-cht": "鎖定帳戶設置", "xloc": [ - "default.handlebars->41->2497" + "default.handlebars->41->2500" ] }, { @@ -37260,7 +37271,7 @@ "tr": "Masaüstünü Kilitle", "zh-chs": "锁定桌面", "xloc": [ - "default.handlebars->41->1052" + "default.handlebars->41->1056" ] }, { @@ -37285,7 +37296,7 @@ "zh-chs": "锁定账户", "zh-cht": "鎖定賬戶", "xloc": [ - "default.handlebars->41->2424" + "default.handlebars->41->2427" ] }, { @@ -37330,7 +37341,7 @@ "tr": "Uzak kullanıcının faresi ve klavyesi kilitlensin mi?", "zh-chs": "锁定远程用户的鼠标和键盘?", "xloc": [ - "default.handlebars->41->1049" + "default.handlebars->41->1053" ] }, { @@ -37354,7 +37365,7 @@ "tr": "Uzak bilgisayarı kilitle", "zh-chs": "锁定远程计算机", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -37378,7 +37389,7 @@ "tr": "Kullanıcı masaüstü kilitlensin mi?", "zh-chs": "锁定用户桌面?", "xloc": [ - "default.handlebars->41->1053" + "default.handlebars->41->1057" ] }, { @@ -37403,7 +37414,7 @@ "zh-chs": "已锁定", "zh-cht": "已鎖定", "xloc": [ - "default.handlebars->41->2405" + "default.handlebars->41->2408" ] }, { @@ -37429,9 +37440,9 @@ "zh-cht": "被鎖定賬戶", "xloc": [ "default-mobile.handlebars->11->84", - "default.handlebars->41->2586", - "default.handlebars->41->2837", - "default.handlebars->41->2857", + "default.handlebars->41->2589", + "default.handlebars->41->2840", + "default.handlebars->41->2860", "default.handlebars->41->309" ] }, @@ -37457,7 +37468,7 @@ "zh-chs": "将远程用户锁定在桌面之外", "zh-cht": "將遠程用戶鎖定在桌面之外", "xloc": [ - "default.handlebars->41->2257" + "default.handlebars->41->2260" ] }, { @@ -37482,7 +37493,7 @@ "zh-chs": "记录事件", "zh-cht": "記錄事件", "xloc": [ - "default.handlebars->41->899" + "default.handlebars->41->901" ] }, { @@ -37675,7 +37686,7 @@ "ru": "Токен входа", "fr": "Jeton de connexion", "xloc": [ - "default.handlebars->41->2847" + "default.handlebars->41->2850" ] }, { @@ -37819,7 +37830,7 @@ "zh-chs": "卢森堡文", "zh-cht": "盧森堡文", "xloc": [ - "default.handlebars->41->1654" + "default.handlebars->41->1657" ] }, { @@ -37846,10 +37857,10 @@ "xloc": [ "default-mobile.handlebars->11->550", "default-mobile.handlebars->11->552", - "default.handlebars->41->1429", - "default.handlebars->41->1431", - "default.handlebars->41->1439", - "default.handlebars->41->1441" + "default.handlebars->41->1433", + "default.handlebars->41->1435", + "default.handlebars->41->1443", + "default.handlebars->41->1445" ] }, { @@ -37901,8 +37912,8 @@ "zh-cht": "MAC:{0}", "xloc": [ "default-mobile.handlebars->11->553", - "default.handlebars->41->1432", - "default.handlebars->41->1442" + "default.handlebars->41->1436", + "default.handlebars->41->1446" ] }, { @@ -37928,8 +37939,8 @@ "zh-cht": "MAC:{0},網關:{1}", "xloc": [ "default-mobile.handlebars->11->551", - "default.handlebars->41->1430", - "default.handlebars->41->1440" + "default.handlebars->41->1434", + "default.handlebars->41->1444" ] }, { @@ -38055,14 +38066,14 @@ "xloc": [ "default-mobile.handlebars->11->260", "default-mobile.handlebars->11->317", - "default-mobile.handlebars->11->607", - "default-mobile.handlebars->11->609", + "default-mobile.handlebars->11->606", + "default-mobile.handlebars->11->608", "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect2", - "default.handlebars->41->1497", - "default.handlebars->41->1499", + "default.handlebars->41->1500", + "default.handlebars->41->1502", "default.handlebars->41->385", - "default.handlebars->41->637", - "default.handlebars->41->878", + "default.handlebars->41->639", + "default.handlebars->41->880", "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect2" ] }, @@ -38113,7 +38124,7 @@ "zh-chs": "MQTT登录", "zh-cht": "MQTT登入", "xloc": [ - "default.handlebars->41->939" + "default.handlebars->41->943" ] }, { @@ -38139,7 +38150,7 @@ "zh-cht": "MQTT通道已連接", "xloc": [ "default-mobile.handlebars->11->345", - "default.handlebars->41->953" + "default.handlebars->41->957" ] }, { @@ -38165,7 +38176,7 @@ "zh-cht": "MQTT已連接", "xloc": [ "default.handlebars->41->247", - "default.handlebars->41->952" + "default.handlebars->41->956" ] }, { @@ -38191,8 +38202,8 @@ "zh-cht": "與裝置的MQTT連接已啟動。", "xloc": [ "default.handlebars->41->384", - "default.handlebars->41->636", - "default.handlebars->41->877" + "default.handlebars->41->638", + "default.handlebars->41->879" ] }, { @@ -38358,7 +38369,7 @@ "tr": "MacOS Yükleyici", "zh-chs": "MacOS 安装程序", "xloc": [ - "default.handlebars->41->1164" + "default.handlebars->41->1168" ] }, { @@ -38369,8 +38380,8 @@ "pt-br": "MeshAgent MacOS", "ru": "MeshAgent для MacOS", "xloc": [ - "default.handlebars->41->2114", - "default.handlebars->41->526" + "default.handlebars->41->2117", + "default.handlebars->41->528" ] }, { @@ -38419,7 +38430,7 @@ "zh-chs": "主服务器信息", "zh-cht": "主伺服器訊息", "xloc": [ - "default.handlebars->41->2969" + "default.handlebars->41->2972" ] }, { @@ -38444,7 +38455,7 @@ "zh-chs": "马来文", "zh-cht": "馬來文", "xloc": [ - "default.handlebars->41->1656" + "default.handlebars->41->1659" ] }, { @@ -38469,7 +38480,7 @@ "zh-chs": "玛拉雅拉姆文", "zh-cht": "馬拉雅拉姆文", "xloc": [ - "default.handlebars->41->1657" + "default.handlebars->41->1660" ] }, { @@ -38494,7 +38505,7 @@ "zh-chs": "马耳他文", "zh-cht": "馬耳他文", "xloc": [ - "default.handlebars->41->1658" + "default.handlebars->41->1661" ] }, { @@ -38519,7 +38530,7 @@ "zh-chs": "管理帐户图片", "xloc": [ "default-mobile.handlebars->11->89", - "default.handlebars->41->1513" + "default.handlebars->41->1516" ] }, { @@ -38570,10 +38581,10 @@ "zh-chs": "管理设备组计算机", "zh-cht": "管理裝置群電腦", "xloc": [ - "default-mobile.handlebars->11->661", - "default-mobile.handlebars->11->681", - "default.handlebars->41->2040", - "default.handlebars->41->2078" + "default-mobile.handlebars->11->660", + "default-mobile.handlebars->11->680", + "default.handlebars->41->2043", + "default.handlebars->41->2081" ] }, { @@ -38598,10 +38609,10 @@ "zh-chs": "管理设备组用户", "zh-cht": "管理裝置群用戶", "xloc": [ - "default-mobile.handlebars->11->660", - "default-mobile.handlebars->11->680", - "default.handlebars->41->2039", - "default.handlebars->41->2077" + "default-mobile.handlebars->11->659", + "default-mobile.handlebars->11->679", + "default.handlebars->41->2042", + "default.handlebars->41->2080" ] }, { @@ -38626,7 +38637,7 @@ "zh-chs": "管理设备", "zh-cht": "管理裝置", "xloc": [ - "default.handlebars->41->1021" + "default.handlebars->41->1025" ] }, { @@ -38651,7 +38662,7 @@ "zh-chs": "管理录音", "zh-cht": "管理錄音", "xloc": [ - "default.handlebars->41->2491" + "default.handlebars->41->2494" ] }, { @@ -38701,7 +38712,7 @@ "zh-chs": "管理用户组", "zh-cht": "管理用戶群", "xloc": [ - "default.handlebars->41->2490" + "default.handlebars->41->2493" ] }, { @@ -38726,8 +38737,8 @@ "zh-chs": "管理用户", "zh-cht": "管理用戶", "xloc": [ - "default.handlebars->41->1020", - "default.handlebars->41->2489" + "default.handlebars->41->1024", + "default.handlebars->41->2492" ] }, { @@ -38907,7 +38918,7 @@ "zh-chs": "使用软件代理进行管理", "zh-cht": "使用軟體代理進行管理", "xloc": [ - "default.handlebars->41->1806" + "default.handlebars->41->1809" ] }, { @@ -38932,8 +38943,8 @@ "zh-chs": "使用软件代理进行管理", "zh-cht": "使用軟體代理進行管理", "xloc": [ - "default-mobile.handlebars->11->623", - "default.handlebars->41->1860" + "default-mobile.handlebars->11->622", + "default.handlebars->41->1863" ] }, { @@ -38958,7 +38969,7 @@ "zh-chs": "经理", "zh-cht": "經理", "xloc": [ - "default.handlebars->41->2410" + "default.handlebars->41->2413" ] }, { @@ -39027,7 +39038,7 @@ "zh-chs": "毛利文", "zh-cht": "毛利文", "xloc": [ - "default.handlebars->41->1659" + "default.handlebars->41->1662" ] }, { @@ -39120,7 +39131,14 @@ "zh-chs": "马拉地文", "zh-cht": "馬拉地文", "xloc": [ - "default.handlebars->41->1660" + "default.handlebars->41->1663" + ] + }, + { + "en": "Mask: {0}", + "xloc": [ + "default-mobile.handlebars->11->555", + "default.handlebars->41->1448" ] }, { @@ -39145,7 +39163,7 @@ "zh-chs": "达到连接数量上限", "zh-cht": "達到連接數量上限", "xloc": [ - "default.handlebars->41->2913" + "default.handlebars->41->2916" ] }, { @@ -39236,8 +39254,8 @@ "zh-chs": "Megabyte", "zh-cht": "Megabyte", "xloc": [ - "default.handlebars->41->2954", - "default.handlebars->41->2959" + "default.handlebars->41->2957", + "default.handlebars->41->2962" ] }, { @@ -39262,9 +39280,9 @@ "zh-chs": "记忆体", "zh-cht": "記憶體", "xloc": [ - "default-mobile.handlebars->11->596", - "default.handlebars->41->1485", - "default.handlebars->41->2933", + "default-mobile.handlebars->11->595", + "default.handlebars->41->1488", + "default.handlebars->41->2936", "default.handlebars->container->column_l->p40->3->1->p40type->3" ] }, @@ -39294,16 +39312,16 @@ "default-mobile.handlebars->11->342", "default-mobile.handlebars->11->534", "default-mobile.handlebars->11->542", - "default.handlebars->41->1413", - "default.handlebars->41->1421", - "default.handlebars->41->555", - "default.handlebars->41->559", - "default.handlebars->41->570", - "default.handlebars->41->583", - "default.handlebars->41->586", - "default.handlebars->41->592", - "default.handlebars->41->802", - "default.handlebars->41->870" + "default.handlebars->41->1417", + "default.handlebars->41->1425", + "default.handlebars->41->557", + "default.handlebars->41->561", + "default.handlebars->41->572", + "default.handlebars->41->585", + "default.handlebars->41->588", + "default.handlebars->41->594", + "default.handlebars->41->804", + "default.handlebars->41->872" ] }, { @@ -39328,8 +39346,8 @@ "zh-chs": "网格代理控制台", "zh-cht": "網格代理控制台", "xloc": [ - "default-mobile.handlebars->11->668", - "default.handlebars->41->2049" + "default-mobile.handlebars->11->667", + "default.handlebars->41->2052" ] }, { @@ -39398,7 +39416,7 @@ "zh-chs": "网格中继", "zh-cht": "Mesh Relay", "xloc": [ - "default.handlebars->41->876" + "default.handlebars->41->878" ] }, { @@ -39424,8 +39442,8 @@ "zh-cht": "已連接Mesh Agent並準備使用。", "xloc": [ "default.handlebars->41->376", - "default.handlebars->41->628", - "default.handlebars->41->869" + "default.handlebars->41->630", + "default.handlebars->41->871" ] }, { @@ -39451,8 +39469,8 @@ "zh-cht": "Mesh Agent可以經過其他代理作為中繼訪問得到。", "xloc": [ "default.handlebars->41->382", - "default.handlebars->41->634", - "default.handlebars->41->875" + "default.handlebars->41->636", + "default.handlebars->41->877" ] }, { @@ -39477,8 +39495,8 @@ "zh-chs": "MeshAction(.txt)", "zh-cht": "MeshAction(.txt)", "xloc": [ - "default.handlebars->41->1181", - "default.handlebars->41->1183" + "default.handlebars->41->1185", + "default.handlebars->41->1187" ] }, { @@ -39503,7 +39521,7 @@ "zh-chs": "MeshAgent流量", "zh-cht": "MeshAgent流量", "xloc": [ - "default.handlebars->41->2971" + "default.handlebars->41->2974" ] }, { @@ -39528,7 +39546,7 @@ "zh-chs": "MeshAgent更新", "zh-cht": "MeshAgent更新", "xloc": [ - "default.handlebars->41->2972" + "default.handlebars->41->2975" ] }, { @@ -39552,8 +39570,8 @@ "tr": "MeshCentral", "zh-chs": "网格中心", "xloc": [ - "default.handlebars->41->1047", - "default.handlebars->41->701" + "default.handlebars->41->1051", + "default.handlebars->41->703" ] }, { @@ -39577,7 +39595,7 @@ "tr": "Android için MeshCentral Aracısı", "zh-chs": "适用于 Android 的 MeshCentral 代理", "xloc": [ - "default-mobile.handlebars->11->655" + "default-mobile.handlebars->11->654" ] }, { @@ -39601,10 +39619,10 @@ "tr": "MeshCentral Yardımcısı", "zh-chs": "MeshCentral 助手", "xloc": [ - "default.handlebars->41->2115", - "default.handlebars->41->500", - "default.handlebars->41->527", - "default.handlebars->41->539" + "default.handlebars->41->2118", + "default.handlebars->41->502", + "default.handlebars->41->529", + "default.handlebars->41->541" ] }, { @@ -39628,8 +39646,8 @@ "tr": "Windows için MeshCentral Yardımcısı", "zh-chs": "适用于 Windows 的 MeshCentral 助手", "xloc": [ - "default.handlebars->41->575", - "default.handlebars->41->579" + "default.handlebars->41->577", + "default.handlebars->41->581" ] }, { @@ -39674,7 +39692,7 @@ "tr": "MeshCentral Assistant, kullanıcıların yardım istemek için kullanabilecekleri bir Windows aracıdır. \\\"{0}\\\" cihaz grubuna bağlanacak bir sürümü indirmek için aşağıdaki bağlantıyı kullanın.", "zh-chs": "MeshCentral Assistant 是一个 Windows 工具,用户可以使用它来寻求帮助。使用下面的链接下载将连接到设备组 \\\"{0}\\\" 的版本。", "xloc": [ - "default.handlebars->41->574" + "default.handlebars->41->576" ] }, { @@ -39698,7 +39716,7 @@ "tr": "MeshCentral Assistant, kullanıcıların yardım istemek için kullanabilecekleri bir Windows aracıdır. Arka plan aracısını izleyecek bir sürümü indirmek için aşağıdaki bağlantıyı kullanın.", "zh-chs": "MeshCentral Assistant 是一个 Windows 工具,用户可以使用它来寻求帮助。使用下面的链接下载将监控后台代理的版本。", "xloc": [ - "default.handlebars->41->578" + "default.handlebars->41->580" ] }, { @@ -39748,7 +39766,7 @@ "zh-chs": "MeshCentral错误", "zh-cht": "MeshCentral錯誤", "xloc": [ - "default.handlebars->41->1853" + "default.handlebars->41->1856" ] }, { @@ -39773,7 +39791,7 @@ "zh-chs": "MeshCentral路由器", "zh-cht": "MeshCentral Router", "xloc": [ - "default.handlebars->41->1167" + "default.handlebars->41->1171" ] }, { @@ -39885,7 +39903,7 @@ "zh-chs": "MeshCentral 路由器是Windows工具,用于TCP端口映射。例如,您可以通过该服务器将RDP放入远程设备。", "zh-cht": "MeshCentral Router是Windows工具,用於TCP介面映射。例如,你可以通過該伺服器將RDP放入遠程裝置。", "xloc": [ - "default.handlebars->41->1162" + "default.handlebars->41->1166" ] }, { @@ -39956,7 +39974,7 @@ "zh-chs": "MeshCentral服务器同级化", "zh-cht": "MeshCentral伺服器同級化", "xloc": [ - "default.handlebars->41->2970" + "default.handlebars->41->2973" ] }, { @@ -40006,7 +40024,7 @@ "zh-chs": "MeshCentral版本", "zh-cht": "MeshCentral版本", "xloc": [ - "default.handlebars->41->1849", + "default.handlebars->41->1852", "default.handlebars->41->187", "default.handlebars->41->189" ] @@ -40033,9 +40051,9 @@ "zh-chs": "MeshCmd", "zh-cht": "MeshCmd", "xloc": [ - "default.handlebars->41->1179", + "default.handlebars->41->1183", "default.handlebars->41->359", - "default.handlebars->41->922" + "default.handlebars->41->924" ] }, { @@ -40060,7 +40078,7 @@ "zh-chs": "MeshCmd(Linux ARM,32位)", "zh-cht": "MeshCmd(Linux ARM,32位)", "xloc": [ - "default.handlebars->41->1191" + "default.handlebars->41->1195" ] }, { @@ -40085,7 +40103,7 @@ "zh-chs": "MeshCmd(Linux ARM,64位)", "zh-cht": "MeshCmd(Linux ARM,64位)", "xloc": [ - "default.handlebars->41->1192" + "default.handlebars->41->1196" ] }, { @@ -40110,7 +40128,7 @@ "zh-chs": "MeshCmd(Linux x86,32bit)", "zh-cht": "MeshCmd(Linux x86,32bit)", "xloc": [ - "default.handlebars->41->1187" + "default.handlebars->41->1191" ] }, { @@ -40135,7 +40153,7 @@ "zh-chs": "MeshCmd(Linux x86,64位)", "zh-cht": "MeshCmd(Linux x86,64位)", "xloc": [ - "default.handlebars->41->1188" + "default.handlebars->41->1192" ] }, { @@ -40160,7 +40178,7 @@ "zh-chs": "MeshCmd(Win32可执行档案)", "zh-cht": "MeshCmd(Win32可執行檔案)", "xloc": [ - "default.handlebars->41->1185" + "default.handlebars->41->1189" ] }, { @@ -40185,7 +40203,7 @@ "zh-chs": "MeshCmd(Win64可执行档案)", "zh-cht": "MeshCmd(Win64可執行檔案)", "xloc": [ - "default.handlebars->41->1186" + "default.handlebars->41->1190" ] }, { @@ -40232,7 +40250,7 @@ "zh-chs": "MeshCmd(macOS,ARM-64位)", "zh-cht": "MeshCmd(macOS,ARM-64位)", "xloc": [ - "default.handlebars->41->1190" + "default.handlebars->41->1194" ] }, { @@ -40257,7 +40275,7 @@ "zh-chs": "MeshCmd(macOS,x86-ARM-64位)", "zh-cht": "MeshCmd(macOS,x86-ARM-64位)", "xloc": [ - "default.handlebars->41->1189" + "default.handlebars->41->1193" ] }, { @@ -40282,7 +40300,7 @@ "zh-chs": "MeshCmd是一个可以执行许多不同操作的命令行工具。可以选择下载和编辑操作档案以提供服务器信息和凭据。", "zh-cht": "MeshCmd是一個可以執行許多不同操作的命令行工具。可以選擇下載和編輯操作檔案以提供伺服器訊息和憑據。", "xloc": [ - "default.handlebars->41->1176" + "default.handlebars->41->1180" ] }, { @@ -40376,10 +40394,10 @@ "zh-chs": "消息", "zh-cht": "訊息", "xloc": [ - "default.handlebars->41->1142", - "default.handlebars->41->2815", - "default.handlebars->41->512", - "default.handlebars->41->901" + "default.handlebars->41->1146", + "default.handlebars->41->2818", + "default.handlebars->41->514", + "default.handlebars->41->903" ] }, { @@ -40404,7 +40422,7 @@ "zh-chs": "留言框", "zh-cht": "留言框", "xloc": [ - "default.handlebars->41->686" + "default.handlebars->41->688" ] }, { @@ -40429,7 +40447,7 @@ "zh-chs": "消息调度器", "zh-cht": "電郵調度器", "xloc": [ - "default.handlebars->41->2968" + "default.handlebars->41->2971" ] }, { @@ -40503,8 +40521,8 @@ "tr": "haberci", "zh-chs": "信使", "xloc": [ - "default.handlebars->41->2758", - "default.handlebars->41->2824" + "default.handlebars->41->2761", + "default.handlebars->41->2827" ] }, { @@ -40646,7 +40664,7 @@ "zh-chs": "移动设备", "xloc": [ "default-mobile.handlebars->11->548", - "default.handlebars->41->1427" + "default.handlebars->41->1431" ] }, { @@ -40670,7 +40688,7 @@ "tr": "Mobil cihaz", "zh-chs": "移动设备", "xloc": [ - "default.handlebars->41->538" + "default.handlebars->41->540" ] }, { @@ -40696,10 +40714,10 @@ "zh-cht": "模型", "xloc": [ "default-mobile.handlebars->11->543", - "default-mobile.handlebars->11->597", - "default.handlebars->41->1422", - "default.handlebars->41->1486", - "default.handlebars->41->1810" + "default-mobile.handlebars->11->596", + "default.handlebars->41->1426", + "default.handlebars->41->1489", + "default.handlebars->41->1813" ] }, { @@ -40724,7 +40742,7 @@ "zh-chs": "修改节点位置", "zh-cht": "修改節點位置", "xloc": [ - "default.handlebars->41->752" + "default.handlebars->41->754" ] }, { @@ -40749,7 +40767,7 @@ "zh-chs": "摩尔达维亚文", "zh-cht": "摩爾達維亞文", "xloc": [ - "default.handlebars->41->1661" + "default.handlebars->41->1664" ] }, { @@ -40796,8 +40814,8 @@ "zh-chs": "母板", "zh-cht": "母板", "xloc": [ - "default-mobile.handlebars->11->590", - "default.handlebars->41->1479" + "default-mobile.handlebars->11->589", + "default.handlebars->41->1482" ] }, { @@ -40822,7 +40840,7 @@ "zh-chs": "将此设备移到其他设备组", "zh-cht": "將此裝置移至其他裝置群", "xloc": [ - "default.handlebars->41->913" + "default.handlebars->41->915" ] }, { @@ -40847,7 +40865,7 @@ "zh-chs": "移至设备组", "zh-cht": "移至裝置群", "xloc": [ - "default.handlebars->41->643" + "default.handlebars->41->645" ] }, { @@ -40872,7 +40890,7 @@ "zh-chs": "移动:“{0}”到“{1}”", "zh-cht": "移動:“{0}”到“{1}”", "xloc": [ - "default.handlebars->41->2256" + "default.handlebars->41->2259" ] }, { @@ -40897,7 +40915,7 @@ "zh-chs": "将设备{0}移动到组{1}", "zh-cht": "將設備{0}移動到組{1}", "xloc": [ - "default.handlebars->41->2289" + "default.handlebars->41->2292" ] }, { @@ -40946,8 +40964,8 @@ "tr": "Birden Çok Sorun", "zh-chs": "多个问题", "xloc": [ - "default.handlebars->41->2144", - "default.handlebars->41->2158" + "default.handlebars->41->2147", + "default.handlebars->41->2161" ] }, { @@ -40993,7 +41011,7 @@ "zh-chs": "多路复用器", "zh-cht": "多工器", "xloc": [ - "default.handlebars->41->2776" + "default.handlebars->41->2779" ] }, { @@ -41018,8 +41036,8 @@ "zh-chs": "必须以用户身份运行", "zh-cht": "必須以用戶身份運行", "xloc": [ - "default.handlebars->41->1122", - "default.handlebars->41->674" + "default.handlebars->41->1126", + "default.handlebars->41->676" ] }, { @@ -41202,7 +41220,7 @@ "zh-chs": "我的服务器控制台", "zh-cht": "我的伺服器控制台", "xloc": [ - "default.handlebars->41->1492" + "default.handlebars->41->1495" ] }, { @@ -41404,8 +41422,8 @@ "zh-chs": "我的密钥", "zh-cht": "我的密鍵", "xloc": [ - "default.handlebars->41->1536", - "default.handlebars->41->1539" + "default.handlebars->41->1539", + "default.handlebars->41->1542" ] }, { @@ -41415,7 +41433,7 @@ "ru": "NLA не поддерживается", "fr": "NLA non supporté", "xloc": [ - "default.handlebars->41->1211" + "default.handlebars->41->1215" ] }, { @@ -41528,28 +41546,28 @@ "default-mobile.handlebars->11->128", "default-mobile.handlebars->11->272", "default-mobile.handlebars->11->509", - "default-mobile.handlebars->11->584", - "default-mobile.handlebars->11->628", - "default-mobile.handlebars->11->651", - "default.handlebars->41->1270", - "default.handlebars->41->1286", - "default.handlebars->41->1405", - "default.handlebars->41->1473", + "default-mobile.handlebars->11->583", + "default-mobile.handlebars->11->627", + "default-mobile.handlebars->11->650", + "default.handlebars->41->1274", + "default.handlebars->41->1290", + "default.handlebars->41->1409", + "default.handlebars->41->1476", "default.handlebars->41->148", "default.handlebars->41->162", - "default.handlebars->41->1800", - "default.handlebars->41->1828", - "default.handlebars->41->1833", - "default.handlebars->41->1865", - "default.handlebars->41->1999", - "default.handlebars->41->2391", - "default.handlebars->41->2500", - "default.handlebars->41->2516", - "default.handlebars->41->2523", - "default.handlebars->41->2573", - "default.handlebars->41->2592", + "default.handlebars->41->1803", + "default.handlebars->41->1831", + "default.handlebars->41->1836", + "default.handlebars->41->1868", + "default.handlebars->41->2002", + "default.handlebars->41->2394", + "default.handlebars->41->2503", + "default.handlebars->41->2519", + "default.handlebars->41->2526", + "default.handlebars->41->2576", + "default.handlebars->41->2595", "default.handlebars->41->314", - "default.handlebars->41->781", + "default.handlebars->41->783", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->3", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->3", "default.handlebars->container->column_l->p42->p42tbl->1->0->2" @@ -41577,7 +41595,7 @@ "zh-chs": "名称(可选)", "zh-cht": "名稱(可選)", "xloc": [ - "default.handlebars->41->491" + "default.handlebars->41->493" ] }, { @@ -41602,7 +41620,7 @@ "zh-chs": "名称1,名称2,名称3", "zh-cht": "名稱1,名稱2,名稱3", "xloc": [ - "default.handlebars->41->2481" + "default.handlebars->41->2484" ] }, { @@ -41627,7 +41645,7 @@ "zh-chs": "纳瓦霍文", "zh-cht": "納瓦霍文", "xloc": [ - "default.handlebars->41->1662" + "default.handlebars->41->1665" ] }, { @@ -41652,7 +41670,7 @@ "zh-chs": "恩东加", "zh-cht": "恩東加", "xloc": [ - "default.handlebars->41->1663" + "default.handlebars->41->1666" ] }, { @@ -41677,7 +41695,7 @@ "zh-chs": "尼泊尔文", "zh-cht": "尼泊爾文", "xloc": [ - "default.handlebars->41->1664" + "default.handlebars->41->1667" ] }, { @@ -41702,7 +41720,7 @@ "zh-chs": "网络接口", "zh-cht": "網絡介面", "xloc": [ - "default.handlebars->41->1160" + "default.handlebars->41->1164" ] }, { @@ -41749,9 +41767,9 @@ "zh-chs": "网络", "zh-cht": "網路", "xloc": [ - "default-mobile.handlebars->11->562", - "default.handlebars->41->1437", - "default.handlebars->41->1451" + "default-mobile.handlebars->11->561", + "default.handlebars->41->1441", + "default.handlebars->41->1454" ] }, { @@ -41777,7 +41795,7 @@ "zh-cht": "新", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1->1", - "default.handlebars->41->1827", + "default.handlebars->41->1830", "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1->1" ] }, @@ -41803,7 +41821,7 @@ "zh-chs": "生成新的2FA备份代码", "zh-cht": "生成新的2FA備份代碼", "xloc": [ - "default.handlebars->41->2296" + "default.handlebars->41->2299" ] }, { @@ -41827,8 +41845,8 @@ "tr": "Yeni hesap", "zh-chs": "新账户", "xloc": [ - "default-mobile.handlebars->11->709", - "default.handlebars->41->2864" + "default-mobile.handlebars->11->708", + "default.handlebars->41->2867" ] }, { @@ -41901,9 +41919,9 @@ "zh-cht": "新裝置群", "xloc": [ "default-mobile.handlebars->11->122", - "default.handlebars->41->1152", - "default.handlebars->41->1793", - "default.handlebars->41->1816" + "default.handlebars->41->1156", + "default.handlebars->41->1796", + "default.handlebars->41->1819" ] }, { @@ -41930,8 +41948,8 @@ "xloc": [ "default-mobile.handlebars->11->151", "default-mobile.handlebars->11->480", - "default.handlebars->41->1365", - "default.handlebars->41->2188", + "default.handlebars->41->1369", + "default.handlebars->41->2191", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "sharing.handlebars->11->59", @@ -41985,8 +42003,8 @@ "zh-chs": "新密码*", "zh-cht": "新密碼*", "xloc": [ - "default.handlebars->41->472", - "default.handlebars->41->473" + "default.handlebars->41->474", + "default.handlebars->41->475" ] }, { @@ -42056,8 +42074,8 @@ "zh-chs": "新密码*", "zh-cht": "新密碼*", "xloc": [ - "default.handlebars->41->1973", - "default.handlebars->41->1974" + "default.handlebars->41->1976", + "default.handlebars->41->1977" ] }, { @@ -42084,8 +42102,8 @@ "xloc": [ "default-mobile.handlebars->11->117", "default-mobile.handlebars->11->118", - "default.handlebars->41->1788", - "default.handlebars->41->1789" + "default.handlebars->41->1791", + "default.handlebars->41->1792" ] }, { @@ -42156,8 +42174,8 @@ "zh-chs": "没有AMT", "zh-cht": "沒有AMT", "xloc": [ - "default.handlebars->41->1003", - "default.handlebars->41->1025" + "default.handlebars->41->1007", + "default.handlebars->41->1029" ] }, { @@ -42229,7 +42247,7 @@ "tr": "Aracı Konsolu Yok", "zh-chs": "无座席控制台", "xloc": [ - "default.handlebars->41->2682" + "default.handlebars->41->2685" ] }, { @@ -42253,7 +42271,7 @@ "tr": "Konsol Yok", "zh-chs": "没有控制台", "xloc": [ - "default.handlebars->41->2613" + "default.handlebars->41->2616" ] }, { @@ -42280,8 +42298,8 @@ "xloc": [ "default-mobile.handlebars->11->301", "default-mobile.handlebars->11->302", - "default.handlebars->41->816", - "default.handlebars->41->817" + "default.handlebars->41->818", + "default.handlebars->41->819" ] }, { @@ -42306,10 +42324,10 @@ "zh-chs": "没有桌面", "zh-cht": "沒有桌面", "xloc": [ - "default.handlebars->41->1005", - "default.handlebars->41->1027", - "default.handlebars->41->2085", - "default.handlebars->41->2609" + "default.handlebars->41->1009", + "default.handlebars->41->1031", + "default.handlebars->41->2088", + "default.handlebars->41->2612" ] }, { @@ -42334,8 +42352,8 @@ "zh-chs": "不能访问桌面", "zh-cht": "不能訪問桌面", "xloc": [ - "default.handlebars->41->2045", - "default.handlebars->41->2678" + "default.handlebars->41->2048", + "default.handlebars->41->2681" ] }, { @@ -42381,9 +42399,9 @@ "zh-chs": "找不到事件", "zh-cht": "找不到事件", "xloc": [ - "default.handlebars->41->1403", - "default.handlebars->41->2367", - "default.handlebars->41->2744" + "default.handlebars->41->1407", + "default.handlebars->41->2370", + "default.handlebars->41->2747" ] }, { @@ -42408,9 +42426,9 @@ "zh-chs": "不能存取档案", "zh-cht": "不能存取檔案", "xloc": [ - "default-mobile.handlebars->11->666", - "default.handlebars->41->2047", - "default.handlebars->41->2681" + "default-mobile.handlebars->11->665", + "default.handlebars->41->2050", + "default.handlebars->41->2684" ] }, { @@ -42435,11 +42453,11 @@ "zh-chs": "没有档案", "zh-cht": "沒有檔案", "xloc": [ - "default-mobile.handlebars->11->689", - "default.handlebars->41->1002", - "default.handlebars->41->1024", - "default.handlebars->41->2087", - "default.handlebars->41->2612" + "default-mobile.handlebars->11->688", + "default.handlebars->41->1006", + "default.handlebars->41->1028", + "default.handlebars->41->2090", + "default.handlebars->41->2615" ] }, { @@ -42464,8 +42482,8 @@ "zh-chs": "无输入", "zh-cht": "無輸入", "xloc": [ - "default.handlebars->41->1000", - "default.handlebars->41->1022" + "default.handlebars->41->1004", + "default.handlebars->41->1026" ] }, { @@ -42490,10 +42508,10 @@ "zh-chs": "没有英特尔®AMT", "zh-cht": "沒有Intel® AMT", "xloc": [ - "default-mobile.handlebars->11->667", - "default-mobile.handlebars->11->690", - "default.handlebars->41->2048", - "default.handlebars->41->2088" + "default-mobile.handlebars->11->666", + "default-mobile.handlebars->11->689", + "default.handlebars->41->2051", + "default.handlebars->41->2091" ] }, { @@ -42614,7 +42632,7 @@ "zh-chs": "没有成员", "zh-cht": "沒有成員", "xloc": [ - "default.handlebars->41->2553" + "default.handlebars->41->2556" ] }, { @@ -42639,7 +42657,7 @@ "zh-chs": "没有新的设备组", "zh-cht": "沒有新的裝置群", "xloc": [ - "default.handlebars->41->2494" + "default.handlebars->41->2497" ] }, { @@ -42659,7 +42677,7 @@ "ru": "Запретить добавление новых устройств", "tr": "Yeni Cihaz Yok", "xloc": [ - "default.handlebars->41->2495" + "default.handlebars->41->2498" ] }, { @@ -42684,8 +42702,8 @@ "zh-chs": "没有政策", "zh-cht": "沒有政策", "xloc": [ - "default.handlebars->41->1904", - "default.handlebars->41->1964" + "default.handlebars->41->1907", + "default.handlebars->41->1967" ] }, { @@ -42726,8 +42744,8 @@ "ru": "Нет доступа к выполнению команд", "tr": "Uzaktan Komut Yok", "xloc": [ - "default.handlebars->41->2615", - "default.handlebars->41->2684" + "default.handlebars->41->2618", + "default.handlebars->41->2687" ] }, { @@ -42747,8 +42765,8 @@ "ru": "Нет доступа к удаленному управлению", "tr": "Uzaktan Kumanda Yok", "xloc": [ - "default.handlebars->41->2608", - "default.handlebars->41->2677" + "default.handlebars->41->2611", + "default.handlebars->41->2680" ] }, { @@ -42768,8 +42786,8 @@ "ru": "Нет доступа к перезагрузке/выключению", "tr": "Sıfırlama/Kapatma Yok", "xloc": [ - "default.handlebars->41->2617", - "default.handlebars->41->2686" + "default.handlebars->41->2620", + "default.handlebars->41->2689" ] }, { @@ -42795,12 +42813,12 @@ "zh-cht": "沒有權利", "xloc": [ "default-mobile.handlebars->11->137", - "default-mobile.handlebars->11->642", - "default-mobile.handlebars->11->697", - "default.handlebars->41->1017", - "default.handlebars->41->1039", - "default.handlebars->41->1825", - "default.handlebars->41->2097" + "default-mobile.handlebars->11->641", + "default-mobile.handlebars->11->696", + "default.handlebars->41->1021", + "default.handlebars->41->1043", + "default.handlebars->41->1828", + "default.handlebars->41->2100" ] }, { @@ -42847,8 +42865,8 @@ "zh-cht": "沒有TLS加密", "xloc": [ "default-mobile.handlebars->11->389", - "default.handlebars->41->1138", - "default.handlebars->41->463" + "default.handlebars->41->1142", + "default.handlebars->41->465" ] }, { @@ -42873,11 +42891,11 @@ "zh-chs": "没有终端", "zh-cht": "沒有終端", "xloc": [ - "default-mobile.handlebars->11->688", - "default.handlebars->41->1001", - "default.handlebars->41->1023", - "default.handlebars->41->2086", - "default.handlebars->41->2611" + "default-mobile.handlebars->11->687", + "default.handlebars->41->1005", + "default.handlebars->41->1027", + "default.handlebars->41->2089", + "default.handlebars->41->2614" ] }, { @@ -42902,9 +42920,9 @@ "zh-chs": "不能访问终端", "zh-cht": "不能訪問終端", "xloc": [ - "default-mobile.handlebars->11->665", - "default.handlebars->41->2046", - "default.handlebars->41->2680" + "default-mobile.handlebars->11->664", + "default.handlebars->41->2049", + "default.handlebars->41->2683" ] }, { @@ -42929,7 +42947,7 @@ "zh-chs": "没有工具(MeshCmd /路由器)", "zh-cht": "沒有工具(MeshCmd /路由器)", "xloc": [ - "default.handlebars->41->2496" + "default.handlebars->41->2499" ] }, { @@ -42949,8 +42967,8 @@ "ru": "Нет доступа к удалению", "tr": "Kaldırma Yok", "xloc": [ - "default.handlebars->41->2614", - "default.handlebars->41->2683" + "default.handlebars->41->2617", + "default.handlebars->41->2686" ] }, { @@ -42970,8 +42988,8 @@ "ru": "Нет доступа к пробуждению", "tr": "Uyanmak yok", "xloc": [ - "default.handlebars->41->2616", - "default.handlebars->41->2685" + "default.handlebars->41->2619", + "default.handlebars->41->2688" ] }, { @@ -42997,7 +43015,7 @@ "zh-cht": "該設備當前無可用操作。", "xloc": [ "default-mobile.handlebars->11->372", - "default.handlebars->41->1114" + "default.handlebars->41->1118" ] }, { @@ -43028,9 +43046,9 @@ "ru": "Устройства без агента, ретранслируемые через агент", "fr": "Aucun agent d'appareil relayé au travers de l'agent", "xloc": [ - "default-mobile.handlebars->11->625", - "default.handlebars->41->1802", - "default.handlebars->41->1862" + "default-mobile.handlebars->11->624", + "default.handlebars->41->1805", + "default.handlebars->41->1865" ] }, { @@ -43054,8 +43072,8 @@ "tr": "Otomatik güncelleme yok", "zh-chs": "没有自动更新", "xloc": [ - "default.handlebars->41->2142", - "default.handlebars->41->2156" + "default.handlebars->41->2145", + "default.handlebars->41->2159" ] }, { @@ -43080,8 +43098,8 @@ "zh-chs": "没有共同的设备组", "zh-cht": "沒有共同的裝置群", "xloc": [ - "default.handlebars->41->2559", - "default.handlebars->41->2712" + "default.handlebars->41->2562", + "default.handlebars->41->2715" ] }, { @@ -43206,7 +43224,7 @@ "zh-chs": "找不到设备。", "zh-cht": "找不到裝置。", "xloc": [ - "default.handlebars->41->769" + "default.handlebars->41->771" ] }, { @@ -43231,8 +43249,8 @@ "zh-chs": "没有共同的设备", "zh-cht": "沒有共同的裝置", "xloc": [ - "default.handlebars->41->2565", - "default.handlebars->41->2724" + "default.handlebars->41->2568", + "default.handlebars->41->2727" ] }, { @@ -43282,7 +43300,7 @@ "zh-chs": "该设备组中没有设备。", "zh-cht": "該裝置群中沒有裝置。", "xloc": [ - "default.handlebars->41->2160" + "default.handlebars->41->2163" ] }, { @@ -43384,7 +43402,7 @@ "zh-chs": "找不到文件", "zh-cht": "找不到文件", "xloc": [ - "default.handlebars->41->1346", + "default.handlebars->41->1350", "sharing.handlebars->11->45" ] }, @@ -43410,7 +43428,7 @@ "zh-chs": "找不到群组。", "zh-cht": "找不到群組。", "xloc": [ - "default.handlebars->41->2499" + "default.handlebars->41->2502" ] }, { @@ -43435,8 +43453,8 @@ "zh-chs": "没有此设备的讯息。", "zh-cht": "沒有此裝置的訊息。", "xloc": [ - "default-mobile.handlebars->11->602", - "default.handlebars->41->1491" + "default-mobile.handlebars->11->601", + "default.handlebars->41->1494" ] }, { @@ -43485,7 +43503,7 @@ "zh-chs": "未定义键盘快捷键", "xloc": [ "default-mobile.handlebars->11->439", - "default.handlebars->41->1269" + "default.handlebars->41->1273" ] }, { @@ -43505,7 +43523,7 @@ "ru": "Клавиатурные строки не заданны", "tr": "Tanımlanmış klavye dizesi yok", "xloc": [ - "default.handlebars->41->1274" + "default.handlebars->41->1278" ] }, { @@ -43579,7 +43597,7 @@ "zh-chs": "找不到位置。", "zh-cht": "找不到位置。", "xloc": [ - "default.handlebars->41->771" + "default.handlebars->41->773" ] }, { @@ -43589,7 +43607,7 @@ "ru": "Больше не является ретранслятором для \\\"{0}\\\".", "fr": "Plus de relais pour \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2356" + "default.handlebars->41->2359" ] }, { @@ -43639,7 +43657,7 @@ "zh-chs": "没有其他相同类型的设备组。", "zh-cht": "沒有其他相同類型的裝置群。", "xloc": [ - "default.handlebars->41->1155" + "default.handlebars->41->1159" ] }, { @@ -43663,8 +43681,8 @@ "tr": "Bu kullanıcı için telefon numarası yok", "zh-chs": "此用户没有电话号码", "xloc": [ - "default-mobile.handlebars->11->740", - "default.handlebars->41->2895" + "default-mobile.handlebars->11->739", + "default.handlebars->41->2898" ] }, { @@ -43714,7 +43732,7 @@ "zh-chs": "没有录音。", "zh-cht": "沒有錄音。", "xloc": [ - "default.handlebars->41->2746" + "default.handlebars->41->2749" ] }, { @@ -43724,8 +43742,8 @@ "ru": "Нет доступных устройств-релеев.", "fr": "Pas d'appareil relais disponible.", "xloc": [ - "default-mobile.handlebars->11->648", - "default.handlebars->41->1996" + "default-mobile.handlebars->11->647", + "default.handlebars->41->1999" ] }, { @@ -43771,7 +43789,7 @@ "zh-chs": "没有服务器权限", "zh-cht": "沒有伺服器權限", "xloc": [ - "default.handlebars->41->2587" + "default.handlebars->41->2590" ] }, { @@ -43817,7 +43835,7 @@ "zh-chs": "没有用户组成员身份", "zh-cht": "沒有用戶群成員身份", "xloc": [ - "default.handlebars->41->2718" + "default.handlebars->41->2721" ] }, { @@ -43841,8 +43859,8 @@ "tr": "Kullanıcı yönetimi hakları yok", "zh-chs": "无用户管理权限", "xloc": [ - "default-mobile.handlebars->11->738", - "default.handlebars->41->2893" + "default-mobile.handlebars->11->737", + "default.handlebars->41->2896" ] }, { @@ -43867,7 +43885,7 @@ "zh-chs": "未找到相应的用户。", "zh-cht": "未找到相應的用戶。", "xloc": [ - "default.handlebars->41->2399" + "default.handlebars->41->2402" ] }, { @@ -43892,7 +43910,7 @@ "zh-chs": "没有拥有特殊设备权限的用户", "zh-cht": "沒有擁有特殊裝置權限的用戶", "xloc": [ - "default.handlebars->41->966" + "default.handlebars->41->970" ] }, { @@ -44001,40 +44019,40 @@ "default-mobile.handlebars->11->319", "default-mobile.handlebars->11->429", "default-mobile.handlebars->11->477", - "default-mobile.handlebars->11->630", - "default.handlebars->41->1258", - "default.handlebars->41->1856", - "default.handlebars->41->1867", - "default.handlebars->41->1881", - "default.handlebars->41->1893", - "default.handlebars->41->1900", - "default.handlebars->41->1902", - "default.handlebars->41->1952", - "default.handlebars->41->2145", - "default.handlebars->41->2170", - "default.handlebars->41->2175", - "default.handlebars->41->2375", - "default.handlebars->41->2520", - "default.handlebars->41->2522", - "default.handlebars->41->2530", - "default.handlebars->41->2542", + "default-mobile.handlebars->11->629", + "default.handlebars->41->1262", + "default.handlebars->41->1859", + "default.handlebars->41->1870", + "default.handlebars->41->1884", + "default.handlebars->41->1896", + "default.handlebars->41->1903", + "default.handlebars->41->1905", + "default.handlebars->41->1955", + "default.handlebars->41->2148", + "default.handlebars->41->2173", + "default.handlebars->41->2178", + "default.handlebars->41->2378", + "default.handlebars->41->2523", + "default.handlebars->41->2525", + "default.handlebars->41->2533", + "default.handlebars->41->2545", "default.handlebars->41->258", - "default.handlebars->41->2606", - "default.handlebars->41->2618", - "default.handlebars->41->2628", - "default.handlebars->41->2632", - "default.handlebars->41->2644", - "default.handlebars->41->2839", + "default.handlebars->41->2609", + "default.handlebars->41->2621", + "default.handlebars->41->2631", + "default.handlebars->41->2635", + "default.handlebars->41->2647", + "default.handlebars->41->2842", "default.handlebars->41->286", "default.handlebars->41->368", "default.handlebars->41->369", - "default.handlebars->41->778", - "default.handlebars->41->789", - "default.handlebars->41->790", + "default.handlebars->41->780", + "default.handlebars->41->791", + "default.handlebars->41->792", "default.handlebars->41->82", - "default.handlebars->41->860", - "default.handlebars->41->867", - "default.handlebars->41->880", + "default.handlebars->41->862", + "default.handlebars->41->869", + "default.handlebars->41->882", "default.handlebars->container->column_l->p41->3->3->p41traceStatus" ] }, @@ -44106,7 +44124,7 @@ "zh-chs": "挪威文", "zh-cht": "挪威文", "xloc": [ - "default.handlebars->41->1665" + "default.handlebars->41->1668" ] }, { @@ -44131,7 +44149,7 @@ "zh-chs": "挪威文(Bokmal)", "zh-cht": "挪威文(Bokmal)", "xloc": [ - "default.handlebars->41->1666" + "default.handlebars->41->1669" ] }, { @@ -44156,7 +44174,7 @@ "zh-chs": "挪威文(尼诺斯克)", "zh-cht": "挪威文(尼諾斯克)", "xloc": [ - "default.handlebars->41->1667" + "default.handlebars->41->1670" ] }, { @@ -44181,7 +44199,7 @@ "zh-chs": "未激活", "zh-cht": "未激活", "xloc": [ - "default.handlebars->41->1454" + "default.handlebars->41->1457" ] }, { @@ -44207,8 +44225,8 @@ "zh-cht": "未啟動(輸入)", "xloc": [ "default-mobile.handlebars->11->291", - "default-mobile.handlebars->11->566", - "default.handlebars->41->804" + "default-mobile.handlebars->11->565", + "default.handlebars->41->806" ] }, { @@ -44234,8 +44252,8 @@ "zh-cht": "未啟動(預)", "xloc": [ "default-mobile.handlebars->11->290", - "default-mobile.handlebars->11->565", - "default.handlebars->41->803" + "default-mobile.handlebars->11->564", + "default.handlebars->41->805" ] }, { @@ -44260,8 +44278,8 @@ "zh-chs": "未连接", "zh-cht": "未連接", "xloc": [ - "default.handlebars->41->2136", - "default.handlebars->41->2149" + "default.handlebars->41->2139", + "default.handlebars->41->2152" ] }, { @@ -44286,8 +44304,8 @@ "zh-chs": "未知", "zh-cht": "未知", "xloc": [ - "default-mobile.handlebars->11->576", - "default.handlebars->41->1465" + "default-mobile.handlebars->11->575", + "default.handlebars->41->1468" ] }, { @@ -44336,7 +44354,7 @@ "zh-chs": "不在服务器上", "zh-cht": "不在伺服器上", "xloc": [ - "default.handlebars->41->2768" + "default.handlebars->41->2771" ] }, { @@ -44361,8 +44379,8 @@ "zh-chs": "没有设置", "zh-cht": "沒有設置", "xloc": [ - "default.handlebars->41->2593", - "default.handlebars->41->2594" + "default.handlebars->41->2596", + "default.handlebars->41->2597" ] }, { @@ -44387,7 +44405,7 @@ "zh-chs": "未经审核的", "zh-cht": "未經審核的", "xloc": [ - "default.handlebars->41->2692" + "default.handlebars->41->2695" ] }, { @@ -44414,13 +44432,13 @@ "xloc": [ "default-mobile.handlebars->11->332", "default-mobile.handlebars->11->381", - "default-mobile.handlebars->11->636", - "default.handlebars->41->1011", - "default.handlebars->41->1033", - "default.handlebars->41->1043", - "default.handlebars->41->1912", - "default.handlebars->41->2654", - "default.handlebars->41->897" + "default-mobile.handlebars->11->635", + "default.handlebars->41->1015", + "default.handlebars->41->1037", + "default.handlebars->41->1047", + "default.handlebars->41->1915", + "default.handlebars->41->2657", + "default.handlebars->41->899" ] }, { @@ -44470,9 +44488,9 @@ "zh-chs": "通知设置", "zh-cht": "通知設定", "xloc": [ - "default.handlebars->41->1775", - "default.handlebars->41->2135", - "default.handlebars->41->998", + "default.handlebars->41->1002", + "default.handlebars->41->1778", + "default.handlebars->41->2138", "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->10" ] }, @@ -44541,7 +44559,7 @@ "zh-chs": "通知音效", "zh-cht": "通知音效", "xloc": [ - "default.handlebars->41->1770" + "default.handlebars->41->1773" ] }, { @@ -44566,8 +44584,8 @@ "zh-chs": "通知", "zh-cht": "通知", "xloc": [ - "default.handlebars->41->1901", - "default.handlebars->41->868" + "default.handlebars->41->1904", + "default.handlebars->41->870" ] }, { @@ -44592,7 +44610,7 @@ "zh-chs": "通知", "zh-cht": "通知", "xloc": [ - "default.handlebars->41->2660", + "default.handlebars->41->2663", "default.handlebars->41->283" ] }, @@ -44618,7 +44636,7 @@ "zh-chs": "仅通知", "zh-cht": "只通知", "xloc": [ - "default.handlebars->41->1093" + "default.handlebars->41->1097" ] }, { @@ -44643,9 +44661,9 @@ "zh-chs": "通知使用者", "zh-cht": "通知使用者", "xloc": [ - "default.handlebars->41->2007", - "default.handlebars->41->2011", - "default.handlebars->41->2014" + "default.handlebars->41->2010", + "default.handlebars->41->2014", + "default.handlebars->41->2017" ] }, { @@ -44670,7 +44688,7 @@ "zh-chs": "通知{0}", "zh-cht": "通知{0}", "xloc": [ - "default.handlebars->41->2439" + "default.handlebars->41->2442" ] }, { @@ -44694,7 +44712,7 @@ "tr": "Boş", "zh-chs": "空值", "xloc": [ - "default.handlebars->41->2962" + "default.handlebars->41->2965" ] }, { @@ -44747,13 +44765,13 @@ "default-mobile.handlebars->11->531", "default-mobile.handlebars->container->page_content->column_l->p10->p10dialog->5", "default-mobile.handlebars->dialog->idx_dlgButtonBar", - "default.handlebars->41->1847", - "default.handlebars->41->2140", - "default.handlebars->41->2154", - "default.handlebars->41->832", - "default.handlebars->41->836", - "default.handlebars->41->840", - "default.handlebars->41->846", + "default.handlebars->41->1850", + "default.handlebars->41->2143", + "default.handlebars->41->2157", + "default.handlebars->41->834", + "default.handlebars->41->838", + "default.handlebars->41->842", + "default.handlebars->41->848", "default.handlebars->container->dialog->idx_dlgButtonBar", "login-mobile.handlebars->dialog->idx_dlgButtonBar", "login.handlebars->dialog->idx_dlgButtonBar", @@ -44811,7 +44829,7 @@ "zh-cht": "操作系統名稱", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p2->xdevicesBar->1->5", - "default.handlebars->41->786", + "default.handlebars->41->788", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->15->1" ] }, @@ -44848,7 +44866,7 @@ "zh-chs": "欧舒丹", "zh-cht": "歐舒丹", "xloc": [ - "default.handlebars->41->1668" + "default.handlebars->41->1671" ] }, { @@ -44873,8 +44891,8 @@ "zh-chs": "发生在{0}", "zh-cht": "發生在{0}", "xloc": [ - "default-mobile.handlebars->11->706", - "default.handlebars->41->2861" + "default-mobile.handlebars->11->705", + "default.handlebars->41->2864" ] }, { @@ -44895,7 +44913,7 @@ "xloc": [ "default-mobile.handlebars->11->237", "default-mobile.handlebars->11->245", - "default.handlebars->41->615" + "default.handlebars->41->617" ] }, { @@ -44945,7 +44963,7 @@ "zh-chs": "离线用户", "zh-cht": "離線用戶", "xloc": [ - "default.handlebars->41->2396" + "default.handlebars->41->2399" ] }, { @@ -44970,7 +44988,7 @@ "zh-chs": "旧密码", "zh-cht": "舊密碼", "xloc": [ - "default.handlebars->41->471" + "default.handlebars->41->473" ] }, { @@ -44996,7 +45014,7 @@ "zh-cht": "舊密碼:", "xloc": [ "default-mobile.handlebars->11->116", - "default.handlebars->41->1787" + "default.handlebars->41->1790" ] }, { @@ -45021,7 +45039,7 @@ "zh-chs": "一天", "zh-cht": "一天", "xloc": [ - "default.handlebars->41->2372" + "default.handlebars->41->2375" ] }, { @@ -45058,7 +45076,7 @@ "ru": "Одноразовый пароль", "fr": "Mot de passe à usage unique (OTP)", "xloc": [ - "default.handlebars->41->2845" + "default.handlebars->41->2848" ] }, { @@ -45110,7 +45128,7 @@ "zh-chs": "在线用户", "zh-cht": "在線用戶", "xloc": [ - "default.handlebars->41->2395" + "default.handlebars->41->2398" ] }, { @@ -45134,7 +45152,7 @@ "tr": "Yalnızca ilk 100 kullanıcıyı göster", "zh-chs": "只显示前 100 个用户", "xloc": [ - "default.handlebars->41->2440" + "default.handlebars->41->2443" ] }, { @@ -45160,8 +45178,8 @@ "zh-cht": "只能編輯小於200k的檔案。", "xloc": [ "default-mobile.handlebars->11->488", - "default.handlebars->41->1373", - "default.handlebars->41->749", + "default.handlebars->41->1377", + "default.handlebars->41->751", "sharing.handlebars->11->67" ] }, @@ -45238,7 +45256,7 @@ "zh-chs": "在设备上打开页面", "zh-cht": "在裝置上打開頁面", "xloc": [ - "default.handlebars->41->1044" + "default.handlebars->41->1048" ] }, { @@ -45331,7 +45349,7 @@ "zh-chs": "打开XTerm终端", "zh-cht": "打開XTerm終端", "xloc": [ - "default.handlebars->41->923" + "default.handlebars->41->925" ] }, { @@ -45356,7 +45374,7 @@ "zh-chs": "在远程计算机上打开一个网址", "zh-cht": "在遠程電腦上打開一個網址", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -45381,8 +45399,8 @@ "zh-chs": "打开此计算机的聊天窗口", "zh-cht": "打開此電腦的聊天窗口", "xloc": [ - "default.handlebars->41->904", - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->41->906", + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -45491,7 +45509,7 @@ "zh-chs": "开头:{0}", "zh-cht": "開場:{0}", "xloc": [ - "default.handlebars->41->2224" + "default.handlebars->41->2227" ] }, { @@ -45517,13 +45535,13 @@ "zh-cht": "操作系統", "xloc": [ "default-mobile.handlebars->11->533", - "default.handlebars->41->1178", - "default.handlebars->41->1412", - "default.handlebars->41->2812", + "default.handlebars->41->1182", + "default.handlebars->41->1416", + "default.handlebars->41->2815", "default.handlebars->41->324", - "default.handlebars->41->494", - "default.handlebars->41->542", - "default.handlebars->41->830" + "default.handlebars->41->496", + "default.handlebars->41->544", + "default.handlebars->41->832" ] }, { @@ -45549,11 +45567,11 @@ "zh-cht": "操作", "xloc": [ "default-mobile.handlebars->11->371", - "default.handlebars->41->1113", - "default.handlebars->41->2423", - "default.handlebars->41->2507", - "default.handlebars->41->658", - "default.handlebars->41->677" + "default.handlebars->41->1117", + "default.handlebars->41->2426", + "default.handlebars->41->2510", + "default.handlebars->41->660", + "default.handlebars->41->679" ] }, { @@ -45610,7 +45628,7 @@ "zh-chs": "奥里亚", "zh-cht": "奧里亞", "xloc": [ - "default.handlebars->41->1669" + "default.handlebars->41->1672" ] }, { @@ -45635,7 +45653,7 @@ "zh-chs": "奥罗莫", "zh-cht": "奧羅莫", "xloc": [ - "default.handlebars->41->1670" + "default.handlebars->41->1673" ] }, { @@ -45711,7 +45729,7 @@ "zh-cht": "過時的", "xloc": [ "default-mobile.handlebars->11->530", - "default.handlebars->41->845" + "default.handlebars->41->847" ] }, { @@ -45823,7 +45841,7 @@ "zh-chs": "是否覆盖文件存在?", "zh-cht": "是否覆蓋文件存在?", "xloc": [ - "default.handlebars->41->693" + "default.handlebars->41->695" ] }, { @@ -45869,7 +45887,7 @@ "zh-chs": "自己的过程", "zh-cht": "自己的過程", "xloc": [ - "default.handlebars->41->1295" + "default.handlebars->41->1299" ] }, { @@ -45894,7 +45912,7 @@ "zh-chs": "PID", "zh-cht": "PID", "xloc": [ - "default.handlebars->41->1291", + "default.handlebars->41->1295", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->1" ] }, @@ -45919,8 +45937,8 @@ "tr": "İTMEK", "zh-chs": "推", "xloc": [ - "default-mobile.handlebars->11->608", - "default.handlebars->41->1498" + "default-mobile.handlebars->11->607", + "default.handlebars->41->1501" ] }, { @@ -45945,7 +45963,7 @@ "zh-chs": "向下翻页", "xloc": [ "default-mobile.handlebars->11->424", - "default.handlebars->41->1253" + "default.handlebars->41->1257" ] }, { @@ -45970,7 +45988,7 @@ "zh-chs": "向上翻页", "xloc": [ "default-mobile.handlebars->11->423", - "default.handlebars->41->1252" + "default.handlebars->41->1256" ] }, { @@ -46019,8 +46037,8 @@ "zh-chs": "零件号", "zh-cht": "零件號", "xloc": [ - "default-mobile.handlebars->11->595", - "default.handlebars->41->1484" + "default-mobile.handlebars->11->594", + "default.handlebars->41->1487" ] }, { @@ -46045,7 +46063,7 @@ "zh-chs": "部分的", "zh-cht": "部分的", "xloc": [ - "default.handlebars->41->2411" + "default.handlebars->41->2414" ] }, { @@ -46115,8 +46133,8 @@ "zh-cht": "部分權限", "xloc": [ "default-mobile.handlebars->11->135", - "default-mobile.handlebars->11->640", - "default.handlebars->41->1823" + "default-mobile.handlebars->11->639", + "default.handlebars->41->1826" ] }, { @@ -46141,7 +46159,7 @@ "zh-chs": "部分权限", "zh-cht": "部分權限", "xloc": [ - "default.handlebars->41->2590" + "default.handlebars->41->2593" ] }, { @@ -46194,20 +46212,20 @@ "default-mobile.handlebars->11->387", "default-mobile.handlebars->11->455", "default-mobile.handlebars->11->462", - "default.handlebars->41->1136", - "default.handlebars->41->1225", - "default.handlebars->41->1322", - "default.handlebars->41->1329", - "default.handlebars->41->1815", - "default.handlebars->41->1970", - "default.handlebars->41->2469", - "default.handlebars->41->2470", - "default.handlebars->41->2624", - "default.handlebars->41->2626", - "default.handlebars->41->2697", - "default.handlebars->41->2698", + "default.handlebars->41->1140", + "default.handlebars->41->1229", + "default.handlebars->41->1326", + "default.handlebars->41->1333", + "default.handlebars->41->1818", + "default.handlebars->41->1973", + "default.handlebars->41->2472", + "default.handlebars->41->2473", + "default.handlebars->41->2627", + "default.handlebars->41->2629", + "default.handlebars->41->2700", + "default.handlebars->41->2701", "default.handlebars->41->318", - "default.handlebars->41->461", + "default.handlebars->41->463", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->2->1", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->2->1", "mstsc.handlebars->main->1->3->1->rowpassword->1->0", @@ -46353,8 +46371,8 @@ "tr": "Şifre değişti.", "zh-chs": "密码已更改。", "xloc": [ - "default-mobile.handlebars->11->734", - "default.handlebars->41->2889" + "default-mobile.handlebars->11->733", + "default.handlebars->41->2892" ] }, { @@ -46405,7 +46423,7 @@ "zh-chs": "密码提示", "zh-cht": "密碼提示", "xloc": [ - "default.handlebars->41->2699" + "default.handlebars->41->2702" ] }, { @@ -46431,7 +46449,7 @@ "zh-cht": "密碼提示:", "xloc": [ "default-mobile.handlebars->11->119", - "default.handlebars->41->1790" + "default.handlebars->41->1793" ] }, { @@ -46530,8 +46548,8 @@ "account-invite.html->2->5", "default-mobile.handlebars->11->111", "default-mobile.handlebars->11->112", - "default.handlebars->41->1782", - "default.handlebars->41->1783", + "default.handlebars->41->1785", + "default.handlebars->41->1786", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->4->1", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->6->1", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->7->1->2->1", @@ -46574,9 +46592,9 @@ "default-mobile.handlebars->11->493", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->1343", - "default.handlebars->41->1379", - "default.handlebars->41->2197", + "default.handlebars->41->1347", + "default.handlebars->41->1383", + "default.handlebars->41->2200", "default.handlebars->container->column_l->p12->termTable->1->1->4->1->3", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", @@ -46752,8 +46770,8 @@ "zh-chs": "执行代理指令", "zh-cht": "執行代理指令", "xloc": [ - "default-mobile.handlebars->11->611", - "default.handlebars->41->1501" + "default-mobile.handlebars->11->610", + "default.handlebars->41->1504" ] }, { @@ -46822,8 +46840,8 @@ "zh-chs": "执行英特尔®AMT激活和配置。", "zh-cht": "執行英特爾®AMT激活和配置。", "xloc": [ - "default.handlebars->41->1916", - "default.handlebars->41->438" + "default.handlebars->41->1919", + "default.handlebars->41->440" ] }, { @@ -46936,7 +46954,7 @@ "zh-chs": "执行英特尔® AMT 关机?", "xloc": [ "default-mobile.handlebars->11->377", - "default.handlebars->41->1128" + "default.handlebars->41->1132" ] }, { @@ -46961,7 +46979,7 @@ "zh-chs": "执行英特尔® AMT 电源?", "xloc": [ "default-mobile.handlebars->11->375", - "default.handlebars->41->1126" + "default.handlebars->41->1130" ] }, { @@ -46986,7 +47004,7 @@ "zh-chs": "执行英特尔® AMT 重置?", "xloc": [ "default-mobile.handlebars->11->379", - "default.handlebars->41->1130" + "default.handlebars->41->1134" ] }, { @@ -47011,7 +47029,7 @@ "zh-chs": "执行批量设备通知", "zh-cht": "執行批量設備通知", "xloc": [ - "default.handlebars->41->684" + "default.handlebars->41->686" ] }, { @@ -47036,7 +47054,7 @@ "zh-chs": "执行批量设备标签操作", "zh-cht": "執行批次裝置標籤操作", "xloc": [ - "default.handlebars->41->676" + "default.handlebars->41->678" ] }, { @@ -47062,7 +47080,7 @@ "zh-cht": "在裝置上執行電源操作", "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3", - "default.handlebars->41->896", + "default.handlebars->41->898", "default.handlebars->container->column_l->p11->deskarea0->deskarea1->1", "default.handlebars->container->column_l->p12->termTable->1->1->0->1->1", "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1" @@ -47086,7 +47104,7 @@ "tr": "Güç kapatılsın mı?", "xloc": [ "default-mobile.handlebars->11->347", - "default.handlebars->41->988" + "default.handlebars->41->992" ] }, { @@ -47107,7 +47125,7 @@ "tr": "Güç açık mı?", "xloc": [ "default-mobile.handlebars->11->349", - "default.handlebars->41->990" + "default.handlebars->41->994" ] }, { @@ -47132,7 +47150,7 @@ "zh-chs": "执行电源操作= {0},强制执行= {1}", "zh-cht": "執行電源操作= {0},強制執行= {1}", "xloc": [ - "default.handlebars->41->2229" + "default.handlebars->41->2232" ] }, { @@ -47156,8 +47174,8 @@ "tr": "İzin reddedildi", "zh-chs": "没有权限", "xloc": [ - "default-mobile.handlebars->11->715", - "default.handlebars->41->2870" + "default-mobile.handlebars->11->714", + "default.handlebars->41->2873" ] }, { @@ -47182,9 +47200,9 @@ "zh-chs": "权限", "zh-cht": "權限", "xloc": [ - "default-mobile.handlebars->11->700", - "default.handlebars->41->2100", - "default.handlebars->41->2394" + "default-mobile.handlebars->11->699", + "default.handlebars->41->2103", + "default.handlebars->41->2397" ] }, { @@ -47209,7 +47227,7 @@ "zh-chs": "波斯/伊朗", "zh-cht": "波斯/伊朗", "xloc": [ - "default.handlebars->41->1671" + "default.handlebars->41->1674" ] }, { @@ -47285,10 +47303,10 @@ "default-mobile.handlebars->11->81", "default-mobile.handlebars->11->96", "default-mobile.handlebars->11->98", - "default.handlebars->41->1516", "default.handlebars->41->1519", + "default.handlebars->41->1522", "default.handlebars->41->241", - "default.handlebars->41->2675" + "default.handlebars->41->2678" ] }, { @@ -47313,7 +47331,7 @@ "zh-chs": "电话号码", "zh-cht": "電話號碼", "xloc": [ - "default.handlebars->41->2605" + "default.handlebars->41->2608" ] }, { @@ -47339,8 +47357,8 @@ "zh-cht": "電話號碼:", "xloc": [ "default-mobile.handlebars->11->97", - "default.handlebars->41->1518", - "default.handlebars->41->2674" + "default.handlebars->41->1521", + "default.handlebars->41->2677" ] }, { @@ -47387,7 +47405,7 @@ "zh-chs": "将节点放在这里", "zh-cht": "將節點放在這裡", "xloc": [ - "default.handlebars->41->764" + "default.handlebars->41->766" ] }, { @@ -47539,7 +47557,7 @@ "zh-cht": "請等待幾分鐘以接收驗證。", "xloc": [ "default-mobile.handlebars->11->107", - "default.handlebars->41->1777" + "default.handlebars->41->1780" ] }, { @@ -47565,7 +47583,7 @@ "zh-cht": "外掛指令", "xloc": [ "default.handlebars->41->299", - "default.handlebars->41->2999" + "default.handlebars->41->3002" ] }, { @@ -47744,7 +47762,7 @@ "zh-cht": "政策", "xloc": [ "default-mobile.handlebars->11->134", - "default.handlebars->41->1822" + "default.handlebars->41->1825" ] }, { @@ -47769,7 +47787,7 @@ "zh-chs": "波兰文", "zh-cht": "波蘭文", "xloc": [ - "default.handlebars->41->1672" + "default.handlebars->41->1675" ] }, { @@ -47831,7 +47849,7 @@ "ru": "Синхронизация имени порта", "tr": "Bağlantı Noktası Adı Senkronizasyonu", "xloc": [ - "default.handlebars->41->1877" + "default.handlebars->41->1880" ] }, { @@ -47852,7 +47870,7 @@ "tr": "Port numarası", "xloc": [ "default-mobile.handlebars->11->280", - "default.handlebars->41->793" + "default.handlebars->41->795" ] }, { @@ -47873,7 +47891,7 @@ "tr": "Bağlantı Noktası Türü", "xloc": [ "default-mobile.handlebars->11->281", - "default.handlebars->41->794" + "default.handlebars->41->796" ] }, { @@ -47940,7 +47958,7 @@ "zh-chs": "葡萄牙文", "zh-cht": "葡萄牙文", "xloc": [ - "default.handlebars->41->1673" + "default.handlebars->41->1676" ] }, { @@ -47965,7 +47983,7 @@ "zh-chs": "葡萄牙文(巴西)", "zh-cht": "葡萄牙文(巴西)", "xloc": [ - "default.handlebars->41->1674" + "default.handlebars->41->1677" ] }, { @@ -48038,8 +48056,8 @@ "xloc": [ "default-mobile.handlebars->11->346", "default-mobile.handlebars->11->348", - "default.handlebars->41->987", - "default.handlebars->41->989" + "default.handlebars->41->991", + "default.handlebars->41->993" ] }, { @@ -48089,7 +48107,7 @@ "zh-chs": "电源状态", "zh-cht": "電源狀態", "xloc": [ - "default.handlebars->41->2147", + "default.handlebars->41->2150", "default.handlebars->container->column_l->p21->p21main->1->1->meshPowerChartDiv->1" ] }, @@ -48117,7 +48135,7 @@ "xloc": [ "default-mobile.handlebars->11->235", "default-mobile.handlebars->11->367", - "default.handlebars->41->1106", + "default.handlebars->41->1110", "default.handlebars->41->6" ] }, @@ -48143,7 +48161,7 @@ "zh-chs": "关闭设备", "zh-cht": "關閉裝置", "xloc": [ - "default.handlebars->41->648" + "default.handlebars->41->650" ] }, { @@ -48163,7 +48181,7 @@ "ru": "Выключатель питания готов к использованию.", "tr": "Güç anahtarı kullanıma hazırdır.", "xloc": [ - "default.handlebars->41->624" + "default.handlebars->41->626" ] }, { @@ -48191,7 +48209,7 @@ "default-mobile.handlebars->11->230", "default-mobile.handlebars->11->238", "default.handlebars->41->1", - "default.handlebars->41->601" + "default.handlebars->41->603" ] }, { @@ -48216,7 +48234,7 @@ "zh-chs": "预激活", "zh-cht": "預激活", "xloc": [ - "default.handlebars->41->1455" + "default.handlebars->41->1458" ] }, { @@ -48243,7 +48261,7 @@ "xloc": [ "default-mobile.handlebars->11->236", "default-mobile.handlebars->11->244", - "default.handlebars->41->613", + "default.handlebars->41->615", "default.handlebars->41->7" ] }, @@ -48269,7 +48287,7 @@ "zh-chs": "存在于服务器上", "zh-cht": "存在於伺服器上", "xloc": [ - "default.handlebars->41->2767" + "default.handlebars->41->2770" ] }, { @@ -48398,9 +48416,9 @@ "xloc": [ "default-mobile.handlebars->11->86", "default-mobile.handlebars->11->87", - "default.handlebars->41->1511", - "default.handlebars->41->2669", - "default.handlebars->41->2695", + "default.handlebars->41->1514", + "default.handlebars->41->2672", + "default.handlebars->41->2698", "default.handlebars->41->311" ] }, @@ -48426,7 +48444,7 @@ "zh-chs": "打印屏幕", "xloc": [ "default-mobile.handlebars->11->418", - "default.handlebars->41->1247" + "default.handlebars->41->1251" ] }, { @@ -48594,7 +48612,7 @@ "zh-chs": "进程控制", "zh-cht": "進程控制", "xloc": [ - "default.handlebars->41->1307" + "default.handlebars->41->1311" ] }, { @@ -48618,7 +48636,7 @@ "tr": "İşlem Ayrıntıları, #{0}", "zh-chs": "流程详情,#{0}", "xloc": [ - "default.handlebars->41->1282" + "default.handlebars->41->1286" ] }, { @@ -48692,7 +48710,7 @@ "zh-chs": "处理控制台命令:“{0}”", "zh-cht": "處理控制台命令:“{0}”", "xloc": [ - "default.handlebars->41->2221" + "default.handlebars->41->2224" ] }, { @@ -48742,7 +48760,7 @@ "zh-chs": "用户同意提示", "zh-cht": "用戶同意提示", "xloc": [ - "default.handlebars->41->1092" + "default.handlebars->41->1096" ] }, { @@ -48767,9 +48785,9 @@ "zh-chs": "用户同意提示", "zh-cht": "用戶同意提示", "xloc": [ - "default.handlebars->41->2008", - "default.handlebars->41->2012", - "default.handlebars->41->2015" + "default.handlebars->41->2011", + "default.handlebars->41->2015", + "default.handlebars->41->2018" ] }, { @@ -48794,7 +48812,7 @@ "zh-chs": "协议", "zh-cht": "協議", "xloc": [ - "default.handlebars->41->2765", + "default.handlebars->41->2768", "player.handlebars->3->32" ] }, @@ -48805,7 +48823,7 @@ "ru": "Ошибка согласования протокола ({0})", "fr": "Échec de la négociation du protocol ({0})", "xloc": [ - "default.handlebars->41->1210" + "default.handlebars->41->1214" ] }, { @@ -48852,8 +48870,8 @@ "zh-chs": "配置状态", "zh-cht": "配置狀態", "xloc": [ - "default-mobile.handlebars->11->570", - "default.handlebars->41->1459" + "default-mobile.handlebars->11->569", + "default.handlebars->41->1462" ] }, { @@ -48900,7 +48918,7 @@ "zh-cht": "公開鏈結", "xloc": [ "default-mobile.handlebars->11->146", - "default.handlebars->41->2182" + "default.handlebars->41->2185" ] }, { @@ -48946,7 +48964,7 @@ "zh-chs": "旁遮普文", "zh-cht": "旁遮普文", "xloc": [ - "default.handlebars->41->1675" + "default.handlebars->41->1678" ] }, { @@ -48971,7 +48989,7 @@ "zh-chs": "旁遮普(印度)", "zh-cht": "旁遮普(印度)", "xloc": [ - "default.handlebars->41->1676" + "default.handlebars->41->1679" ] }, { @@ -48996,7 +49014,7 @@ "zh-chs": "旁遮普(巴基斯坦)", "zh-cht": "旁遮普(巴基斯坦)", "xloc": [ - "default.handlebars->41->1677" + "default.handlebars->41->1680" ] }, { @@ -49032,7 +49050,7 @@ "ru": "Push уведомление", "fr": "Notifications", "xloc": [ - "default.handlebars->41->2844" + "default.handlebars->41->2847" ] }, { @@ -49152,7 +49170,7 @@ "zh-chs": "盖丘亚族", "zh-cht": "蓋丘亞族", "xloc": [ - "default.handlebars->41->1678" + "default.handlebars->41->1681" ] }, { @@ -49254,10 +49272,10 @@ "xloc": [ "default-mobile.handlebars->11->325", "default-mobile.handlebars->11->329", - "default.handlebars->41->392", - "default.handlebars->41->886", - "default.handlebars->41->890", - "default.handlebars->41->926", + "default.handlebars->41->394", + "default.handlebars->41->888", + "default.handlebars->41->892", + "default.handlebars->41->930", "default.handlebars->container->dialog->dialogBody->dialog7->1->td7rdpkvm" ] }, @@ -49293,7 +49311,7 @@ "zh-chs": "RDP连接", "zh-cht": "RDP連接", "xloc": [ - "default.handlebars->41->742" + "default.handlebars->41->744" ] }, { @@ -49303,7 +49321,7 @@ "ru": "Учетные данные RDP", "fr": "Informations d'identification RDP", "xloc": [ - "default.handlebars->41->1229" + "default.handlebars->41->1233" ] }, { @@ -49349,7 +49367,7 @@ "zh-chs": "RDP远程连接端口:", "zh-cht": "RDP遠程連接介面:", "xloc": [ - "default.handlebars->41->741" + "default.handlebars->41->743" ] }, { @@ -49450,7 +49468,7 @@ "zh-chs": "RSS", "zh-cht": "RSS", "xloc": [ - "default.handlebars->41->2958" + "default.handlebars->41->2961" ] }, { @@ -49500,7 +49518,7 @@ "zh-chs": "随机密码", "zh-cht": "隨機密碼", "xloc": [ - "default.handlebars->41->1971" + "default.handlebars->41->1974" ] }, { @@ -49525,7 +49543,7 @@ "zh-chs": "随机密码。", "zh-cht": "隨機密碼。", "xloc": [ - "default.handlebars->41->2471" + "default.handlebars->41->2474" ] }, { @@ -49544,7 +49562,7 @@ "ru": "Raritan Dominion KX III", "tr": "Raritan Dominion KX III", "xloc": [ - "default.handlebars->41->1811" + "default.handlebars->41->1814" ] }, { @@ -49635,9 +49653,9 @@ "zh-chs": "真正的名字", "zh-cht": "真正的名字", "xloc": [ - "default.handlebars->41->2602", - "default.handlebars->41->2604", - "default.handlebars->41->2688" + "default.handlebars->41->2605", + "default.handlebars->41->2607", + "default.handlebars->41->2691" ] }, { @@ -49662,7 +49680,7 @@ "zh-chs": "境界", "zh-cht": "境界", "xloc": [ - "default.handlebars->41->2480" + "default.handlebars->41->2483" ] }, { @@ -49688,7 +49706,7 @@ "zh-cht": "收到無效的網絡數據", "xloc": [ "default-mobile.handlebars->11->410", - "default.handlebars->41->1208", + "default.handlebars->41->1212", "sharing.handlebars->11->10", "sharing.handlebars->11->32" ] @@ -49715,9 +49733,9 @@ "zh-chs": "记录会议", "zh-cht": "記錄會議", "xloc": [ - "default.handlebars->41->1879", - "default.handlebars->41->2529", - "default.handlebars->41->2607" + "default.handlebars->41->1882", + "default.handlebars->41->2532", + "default.handlebars->41->2610" ] }, { @@ -49742,7 +49760,7 @@ "zh-chs": "将远程桌面会话记录到档案", "zh-cht": "將遠程桌面會話記錄到檔案", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -49767,9 +49785,9 @@ "zh-chs": "记录会议", "zh-cht": "記錄會議", "xloc": [ - "default.handlebars->41->2016", - "default.handlebars->41->2567", - "default.handlebars->41->2676" + "default.handlebars->41->2019", + "default.handlebars->41->2570", + "default.handlebars->41->2679" ] }, { @@ -49794,7 +49812,7 @@ "zh-chs": "记录细节", "zh-cht": "記錄細節", "xloc": [ - "default.handlebars->41->2779" + "default.handlebars->41->2782" ] }, { @@ -49860,7 +49878,7 @@ "ru": "Ежедневно", "tr": "Günlük yinelenen", "xloc": [ - "default.handlebars->41->1083" + "default.handlebars->41->1087" ] }, { @@ -49880,7 +49898,7 @@ "ru": "Еженедельно", "tr": "Haftalık yinelenen", "xloc": [ - "default.handlebars->41->1084" + "default.handlebars->41->1088" ] }, { @@ -49928,8 +49946,8 @@ "xloc": [ "default-mobile.handlebars->11->152", "default-mobile.handlebars->11->481", - "default.handlebars->41->1366", - "default.handlebars->41->2189", + "default.handlebars->41->1370", + "default.handlebars->41->2192", "sharing.handlebars->11->60" ] }, @@ -49994,7 +50012,7 @@ "xloc": [ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", - "default.handlebars->41->761", + "default.handlebars->41->763", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsAreaTop->DeskToolsRefreshButton", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p40->3->3", @@ -50049,7 +50067,7 @@ "zh-chs": "刷新桌面", "zh-cht": "刷新桌面", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -50075,10 +50093,10 @@ "zh-cht": "中繼", "xloc": [ "default-mobile.handlebars->11->259", - "default.handlebars->41->2940", + "default.handlebars->41->2943", "default.handlebars->41->383", "default.handlebars->41->387", - "default.handlebars->41->635" + "default.handlebars->41->637" ] }, { @@ -50103,7 +50121,7 @@ "zh-chs": "中继数量", "zh-cht": "中繼數量", "xloc": [ - "default.handlebars->41->2925" + "default.handlebars->41->2928" ] }, { @@ -50127,11 +50145,11 @@ "tr": "Röle Cihazı", "zh-chs": "中继装置", "xloc": [ - "default-mobile.handlebars->11->633", - "default-mobile.handlebars->11->649", - "default.handlebars->41->1808", - "default.handlebars->41->1870", - "default.handlebars->41->1997" + "default-mobile.handlebars->11->632", + "default-mobile.handlebars->11->648", + "default.handlebars->41->1811", + "default.handlebars->41->1873", + "default.handlebars->41->2000" ] }, { @@ -50156,7 +50174,7 @@ "zh-chs": "中继错误", "zh-cht": "中繼錯誤", "xloc": [ - "default.handlebars->41->2918" + "default.handlebars->41->2921" ] }, { @@ -50202,8 +50220,8 @@ "zh-chs": "中继连接", "zh-cht": "中繼連接", "xloc": [ - "default.handlebars->41->2924", - "default.handlebars->41->2952" + "default.handlebars->41->2927", + "default.handlebars->41->2955" ] }, { @@ -50213,7 +50231,7 @@ "ru": "Устройство-ретранслятор", "fr": "Appareil relais", "xloc": [ - "default.handlebars->41->2364" + "default.handlebars->41->2367" ] }, { @@ -50223,7 +50241,7 @@ "ru": "Ретранслятор для", "fr": "Relais pour", "xloc": [ - "default.handlebars->41->893" + "default.handlebars->41->895" ] }, { @@ -50256,7 +50274,7 @@ "ru": "Запомнить устройство", "fr": "Se souvenir de l'appareil", "xloc": [ - "default.handlebars->41->2846" + "default.handlebars->41->2849" ] }, { @@ -50281,8 +50299,8 @@ "zh-chs": "记住凭据", "xloc": [ "default-mobile.handlebars->11->456", - "default.handlebars->41->1226", - "default.handlebars->41->1323", + "default.handlebars->41->1230", + "default.handlebars->41->1327", "mstsc.handlebars->main->1->3->1->rowremember->3->0", "ssh.handlebars->3->14" ] @@ -50295,7 +50313,7 @@ "fr": "Se souvenir du mot de passe", "xloc": [ "default-mobile.handlebars->11->461", - "default.handlebars->41->1328", + "default.handlebars->41->1332", "ssh.handlebars->3->19" ] }, @@ -50378,7 +50396,7 @@ "fr": "Se souvenir de l'utilisateur et de la clé", "xloc": [ "default-mobile.handlebars->11->460", - "default.handlebars->41->1327", + "default.handlebars->41->1331", "ssh.handlebars->3->18" ] }, @@ -50501,7 +50519,7 @@ "zh-chs": "远程剪贴板", "zh-cht": "遠程剪貼板", "xloc": [ - "default.handlebars->41->1280" + "default.handlebars->41->1284" ] }, { @@ -50526,8 +50544,8 @@ "zh-chs": "远程命令", "zh-cht": "遠程命令", "xloc": [ - "default-mobile.handlebars->11->675", - "default.handlebars->41->2056" + "default-mobile.handlebars->11->674", + "default.handlebars->41->2059" ] }, { @@ -50554,12 +50572,12 @@ "xloc": [ "default-mobile.handlebars->11->337", "default-mobile.handlebars->11->338", - "default-mobile.handlebars->11->662", - "default-mobile.handlebars->11->682", - "default.handlebars->41->2041", - "default.handlebars->41->2079", - "default.handlebars->41->911", - "default.handlebars->41->912" + "default-mobile.handlebars->11->661", + "default-mobile.handlebars->11->681", + "default.handlebars->41->2044", + "default.handlebars->41->2082", + "default.handlebars->41->913", + "default.handlebars->41->914" ] }, { @@ -50586,8 +50604,8 @@ "xloc": [ "default-mobile.handlebars->11->201", "default-mobile.handlebars->11->208", - "default.handlebars->41->398", - "default.handlebars->41->405" + "default.handlebars->41->400", + "default.handlebars->41->407" ] }, { @@ -50684,8 +50702,8 @@ "zh-chs": "远程桌面连接栏已激活/更新", "zh-cht": "遠程桌面連接欄已激活/更新", "xloc": [ - "default.handlebars->41->2235", - "default.handlebars->41->2241" + "default.handlebars->41->2238", + "default.handlebars->41->2244" ] }, { @@ -50710,7 +50728,7 @@ "zh-chs": "远程桌面连接栏失败或不受支持", "zh-cht": "遠程桌面連接欄失敗或不受支持", "xloc": [ - "default.handlebars->41->2236" + "default.handlebars->41->2239" ] }, { @@ -50735,7 +50753,7 @@ "zh-chs": "远程桌面连接栏失败或不受支持", "zh-cht": "遠程桌面連接欄失敗或不受支持", "xloc": [ - "default.handlebars->41->2242" + "default.handlebars->41->2245" ] }, { @@ -50760,9 +50778,9 @@ "zh-chs": "本地用户强行关闭了远程桌面连接", "zh-cht": "本地用戶強行關閉了遠程桌面連接", "xloc": [ - "default.handlebars->41->2233", - "default.handlebars->41->2237", - "default.handlebars->41->2243" + "default.handlebars->41->2236", + "default.handlebars->41->2240", + "default.handlebars->41->2246" ] }, { @@ -50834,8 +50852,8 @@ "zh-cht": "遠程桌面設置", "xloc": [ "default-mobile.handlebars->11->412", - "default.handlebars->41->1238", - "default.handlebars->41->433", + "default.handlebars->41->1242", + "default.handlebars->41->435", "sharing.handlebars->11->20" ] }, @@ -51010,7 +51028,7 @@ "tr": "Uzaktan Giriş Kilidi", "zh-chs": "远程输入锁定", "xloc": [ - "default.handlebars->41->1048" + "default.handlebars->41->1052" ] }, { @@ -51035,7 +51053,7 @@ "zh-chs": "远程键盘输入", "zh-cht": "遠程鍵盤輸入", "xloc": [ - "default.handlebars->41->1276", + "default.handlebars->41->1280", "sharing.handlebars->11->22" ] }, @@ -51061,7 +51079,7 @@ "zh-chs": "远程网格用户", "zh-cht": "遠程網格用戶", "xloc": [ - "default-mobile.handlebars->11->703" + "default-mobile.handlebars->11->702" ] }, { @@ -51106,7 +51124,7 @@ "tr": "Uzak Oturumlar", "zh-chs": "远程会话", "xloc": [ - "default.handlebars->41->2781" + "default.handlebars->41->2784" ] }, { @@ -51244,11 +51262,11 @@ "zh-chs": "仅远程查看", "zh-cht": "僅遠程查看", "xloc": [ - "default-mobile.handlebars->11->663", - "default-mobile.handlebars->11->687", - "default.handlebars->41->2042", - "default.handlebars->41->2084", - "default.handlebars->41->2679" + "default-mobile.handlebars->11->662", + "default-mobile.handlebars->11->686", + "default.handlebars->41->2045", + "default.handlebars->41->2087", + "default.handlebars->41->2682" ] }, { @@ -51273,7 +51291,7 @@ "zh-chs": "远程剪贴板的有效期为60秒。", "zh-cht": "遠程剪貼板的有效期為60秒。", "xloc": [ - "default.handlebars->41->1279" + "default.handlebars->41->1283" ] }, { @@ -51345,7 +51363,7 @@ "tr": "Uzak giriş kilitli", "zh-chs": "远程输入被锁定", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -51369,7 +51387,7 @@ "tr": "Uzaktan giriş kilidi açıldı", "zh-chs": "远程输入解锁", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -51440,7 +51458,7 @@ "zh-chs": "删除配置", "zh-cht": "刪除配置", "xloc": [ - "default.handlebars->41->1843" + "default.handlebars->41->1846" ] }, { @@ -51509,8 +51527,8 @@ "zh-chs": "删除设备组权限", "zh-cht": "刪除裝置群權限", "xloc": [ - "default.handlebars->41->2571", - "default.handlebars->41->2740" + "default.handlebars->41->2574", + "default.handlebars->41->2743" ] }, { @@ -51535,8 +51553,8 @@ "zh-chs": "删除设备权限", "zh-cht": "刪除裝置權限", "xloc": [ - "default.handlebars->41->2569", - "default.handlebars->41->2727" + "default.handlebars->41->2572", + "default.handlebars->41->2730" ] }, { @@ -51561,7 +51579,7 @@ "zh-chs": "删除设备共享", "zh-cht": "刪除設備共享", "xloc": [ - "default.handlebars->41->2725" + "default.handlebars->41->2728" ] }, { @@ -51585,7 +51603,7 @@ "tr": "Giriş Simgesini Kaldır", "zh-chs": "删除登录令牌", "xloc": [ - "default.handlebars->41->1835" + "default.handlebars->41->1838" ] }, { @@ -51632,7 +51650,7 @@ "zh-chs": "删除用户组成员身份", "zh-cht": "刪除用戶群成員身份", "xloc": [ - "default.handlebars->41->2736" + "default.handlebars->41->2739" ] }, { @@ -51657,8 +51675,8 @@ "zh-chs": "删除用户组权限", "zh-cht": "刪除用戶群權限", "xloc": [ - "default.handlebars->41->2105", - "default.handlebars->41->2732" + "default.handlebars->41->2108", + "default.handlebars->41->2735" ] }, { @@ -51683,7 +51701,7 @@ "zh-chs": "删除用户成员资格", "zh-cht": "刪除用戶成員資格", "xloc": [ - "default.handlebars->41->2579" + "default.handlebars->41->2582" ] }, { @@ -51708,8 +51726,8 @@ "zh-chs": "删除用户权限", "zh-cht": "刪除用戶權限", "xloc": [ - "default.handlebars->41->2103", - "default.handlebars->41->2729" + "default.handlebars->41->2106", + "default.handlebars->41->2732" ] }, { @@ -51734,7 +51752,7 @@ "zh-chs": "删除所有两因素认证。", "zh-cht": "刪除所有二因子鑑別。", "xloc": [ - "default.handlebars->41->2702" + "default.handlebars->41->2705" ] }, { @@ -51759,7 +51777,7 @@ "zh-chs": "删除此用户标识的所有先前事件。", "zh-cht": "刪除此用戶標識的所有先前事件。", "xloc": [ - "default.handlebars->41->2472" + "default.handlebars->41->2475" ] }, { @@ -51784,7 +51802,7 @@ "zh-chs": "断开连接后移除设备", "zh-cht": "斷開連接後删除裝置", "xloc": [ - "default.handlebars->41->2019" + "default.handlebars->41->2022" ] }, { @@ -51809,8 +51827,8 @@ "zh-chs": "删除设备共享", "zh-cht": "刪除設備共享", "xloc": [ - "default.handlebars->41->1931", - "default.handlebars->41->969" + "default.handlebars->41->1934", + "default.handlebars->41->973" ] }, { @@ -51834,7 +51852,7 @@ "tr": "Etkin olmayanı kaldır", "zh-chs": "移除不活跃", "xloc": [ - "default.handlebars->41->1880" + "default.handlebars->41->1883" ] }, { @@ -51858,7 +51876,7 @@ "tr": "Giriş anahtarını kaldır", "zh-chs": "删除登录令牌", "xloc": [ - "default.handlebars->41->1830" + "default.handlebars->41->1833" ] }, { @@ -51883,7 +51901,7 @@ "zh-chs": "删除节点位置", "zh-cht": "刪除節點位置", "xloc": [ - "default.handlebars->41->753" + "default.handlebars->41->755" ] }, { @@ -51909,7 +51927,7 @@ "zh-cht": "刪除電話號碼", "xloc": [ "default-mobile.handlebars->11->95", - "default.handlebars->41->1515" + "default.handlebars->41->1518" ] }, { @@ -51934,7 +51952,7 @@ "zh-chs": "移除标签", "zh-cht": "删除標籤", "xloc": [ - "default.handlebars->41->680" + "default.handlebars->41->682" ] }, { @@ -51959,7 +51977,7 @@ "zh-chs": "删除此设备", "zh-cht": "刪除此裝置", "xloc": [ - "default.handlebars->41->915" + "default.handlebars->41->917" ] }, { @@ -51984,7 +52002,7 @@ "zh-chs": "删除此用户", "zh-cht": "刪除此用戶", "xloc": [ - "default.handlebars->41->2664" + "default.handlebars->41->2667" ] }, { @@ -52009,7 +52027,7 @@ "zh-chs": "删除用户组成员身份", "zh-cht": "刪除用戶群成員身份", "xloc": [ - "default.handlebars->41->2716" + "default.handlebars->41->2719" ] }, { @@ -52034,7 +52052,7 @@ "zh-chs": "删除此设备的用户组权限", "zh-cht": "刪除此裝置的用戶群權限", "xloc": [ - "default.handlebars->41->2563" + "default.handlebars->41->2566" ] }, { @@ -52059,8 +52077,8 @@ "zh-chs": "删除此设备组的用户组权限", "zh-cht": "刪除此裝置群的用戶群權限", "xloc": [ - "default.handlebars->41->2557", - "default.handlebars->41->962" + "default.handlebars->41->2560", + "default.handlebars->41->966" ] }, { @@ -52085,11 +52103,11 @@ "zh-chs": "删除此设备组的用户权限", "zh-cht": "刪除此裝置群的用戶權限", "xloc": [ - "default.handlebars->41->1927", - "default.handlebars->41->2551", - "default.handlebars->41->2710", - "default.handlebars->41->2722", - "default.handlebars->41->963" + "default.handlebars->41->1930", + "default.handlebars->41->2554", + "default.handlebars->41->2713", + "default.handlebars->41->2725", + "default.handlebars->41->967" ] }, { @@ -52130,7 +52148,7 @@ "ru": "Удалено отображаемое имя учетной записи.", "tr": "Hesabın görünen adı kaldırıldı.", "xloc": [ - "default.handlebars->41->2333" + "default.handlebars->41->2336" ] }, { @@ -52155,7 +52173,7 @@ "zh-chs": "删除身份验证应用程序", "zh-cht": "刪除身份驗證應用程序", "xloc": [ - "default.handlebars->41->2295" + "default.handlebars->41->2298" ] }, { @@ -52180,7 +52198,7 @@ "zh-chs": "删除的设备共享{0}", "zh-cht": "刪除的設備共享{0}", "xloc": [ - "default.handlebars->41->2306" + "default.handlebars->41->2309" ] }, { @@ -52205,7 +52223,7 @@ "zh-chs": "从设备组{1}中删除了设备{0}", "zh-cht": "從設備組{1}中刪除了設備{0}", "xloc": [ - "default.handlebars->41->2291" + "default.handlebars->41->2294" ] }, { @@ -52229,7 +52247,7 @@ "tr": "Kaldırılan giriş belirteci", "zh-chs": "删除了登录令牌", "xloc": [ - "default.handlebars->41->2320" + "default.handlebars->41->2323" ] }, { @@ -52254,7 +52272,7 @@ "zh-chs": "已删除用户{0}的电话号码", "zh-cht": "已刪除用戶{0}的電話號碼", "xloc": [ - "default.handlebars->41->2301" + "default.handlebars->41->2304" ] }, { @@ -52278,7 +52296,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulama cihazı kaldırıldı", "zh-chs": "删除了推送通知身份验证设备", "xloc": [ - "default.handlebars->41->2318" + "default.handlebars->41->2321" ] }, { @@ -52303,7 +52321,7 @@ "zh-chs": "移除安全密钥", "zh-cht": "移除安全密鑰", "xloc": [ - "default.handlebars->41->2298" + "default.handlebars->41->2301" ] }, { @@ -52328,9 +52346,9 @@ "zh-chs": "删除了{0}的用户设备权限", "zh-cht": "刪除了{0}的用戶設備權限", "xloc": [ - "default.handlebars->41->2264", - "default.handlebars->41->2285", - "default.handlebars->41->2290" + "default.handlebars->41->2267", + "default.handlebars->41->2288", + "default.handlebars->41->2293" ] }, { @@ -52355,7 +52373,7 @@ "zh-chs": "从设备组{1}中删除了用户组{0}", "zh-cht": "從設備組{1}中刪除了用戶組{0}", "xloc": [ - "default.handlebars->41->2274" + "default.handlebars->41->2277" ] }, { @@ -52380,7 +52398,7 @@ "zh-chs": "从设备组{1}中删除了用户{0}", "zh-cht": "已從設備組{1}中刪除用戶{0}", "xloc": [ - "default.handlebars->41->2287" + "default.handlebars->41->2290" ] }, { @@ -52405,8 +52423,8 @@ "zh-chs": "从用户组{1}中删除了用户{0}", "zh-cht": "從用戶組{1}中刪除了用戶{0}", "xloc": [ - "default.handlebars->41->2266", - "default.handlebars->41->2276" + "default.handlebars->41->2269", + "default.handlebars->41->2279" ] }, { @@ -52435,9 +52453,9 @@ "default-mobile.handlebars->11->485", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", - "default.handlebars->41->1370", - "default.handlebars->41->2193", - "default.handlebars->41->747", + "default.handlebars->41->1374", + "default.handlebars->41->2196", + "default.handlebars->41->749", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->filesContextMenu->1", @@ -52488,7 +52506,7 @@ "zh-chs": "重命名:“{0}”为“{1}”", "zh-cht": "重命名:“{0}”為“{1}”", "xloc": [ - "default.handlebars->41->2252" + "default.handlebars->41->2255" ] }, { @@ -52513,7 +52531,7 @@ "zh-chs": "报告日", "zh-cht": "報告日", "xloc": [ - "default.handlebars->41->2373" + "default.handlebars->41->2376" ] }, { @@ -52538,7 +52556,7 @@ "zh-chs": "报告类型", "zh-cht": "報告類型", "xloc": [ - "default.handlebars->41->2368" + "default.handlebars->41->2371" ] }, { @@ -52558,7 +52576,7 @@ "ru": "Отчет не вернул данных", "tr": "Rapor hiçbir bütün döndürmedi.", "xloc": [ - "default.handlebars->41->2817" + "default.handlebars->41->2820" ] }, { @@ -52580,7 +52598,7 @@ "sv": "Report.csv", "tr": "Report.csv", "xloc": [ - "default.handlebars->41->2859" + "default.handlebars->41->2862" ] }, { @@ -52714,7 +52732,7 @@ "tr": "Ayrıntılar isteniyor...", "zh-chs": "查询详情...", "xloc": [ - "default.handlebars->41->1283" + "default.handlebars->41->1287" ] }, { @@ -52739,7 +52757,7 @@ "zh-chs": "要求:", "zh-cht": "要求:", "xloc": [ - "default.handlebars->41->1791" + "default.handlebars->41->1794" ] }, { @@ -52765,8 +52783,8 @@ "zh-cht": "要求:{0}。", "xloc": [ "default-mobile.handlebars->11->120", - "default.handlebars->41->2477", - "default.handlebars->41->2700" + "default.handlebars->41->2480", + "default.handlebars->41->2703" ] }, { @@ -52791,7 +52809,7 @@ "zh-chs": "需要安装MeshCentral路由器", "zh-cht": "需要安裝MeshCentral路由器", "xloc": [ - "default.handlebars->41->925" + "default.handlebars->41->929" ] }, { @@ -52816,9 +52834,9 @@ "zh-chs": "需要安装MeshCentral Router。", "zh-cht": "需要安裝MeshCentral Router。", "xloc": [ - "default.handlebars->41->927", - "default.handlebars->41->929", - "default.handlebars->41->931" + "default.handlebars->41->931", + "default.handlebars->41->933", + "default.handlebars->41->935" ] }, { @@ -52871,7 +52889,7 @@ "zh-cht": "重設", "xloc": [ "default-mobile.handlebars->11->366", - "default.handlebars->41->1105", + "default.handlebars->41->1109", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devMapToolbar" ] }, @@ -52897,8 +52915,8 @@ "zh-chs": "重置/关闭电源", "zh-cht": "重置/關閉電源", "xloc": [ - "default-mobile.handlebars->11->676", - "default.handlebars->41->2057" + "default-mobile.handlebars->11->675", + "default.handlebars->41->2060" ] }, { @@ -53004,7 +53022,7 @@ "zh-chs": "重置设备", "zh-cht": "重置裝置", "xloc": [ - "default.handlebars->41->647" + "default.handlebars->41->649" ] }, { @@ -53054,10 +53072,10 @@ "zh-chs": "重置/关闭", "zh-cht": "重置/關閉", "xloc": [ - "default-mobile.handlebars->11->696", - "default.handlebars->41->1016", - "default.handlebars->41->1038", - "default.handlebars->41->2094" + "default-mobile.handlebars->11->695", + "default.handlebars->41->1020", + "default.handlebars->41->1042", + "default.handlebars->41->2097" ] }, { @@ -53082,7 +53100,7 @@ "zh-chs": "重新启动", "zh-cht": "重新啟動", "xloc": [ - "default.handlebars->41->1301", + "default.handlebars->41->1305", "player.handlebars->p11->deskarea0->deskarea4->3" ] }, @@ -53108,7 +53126,7 @@ "zh-chs": "还原服务器", "zh-cht": "還原伺服器", "xloc": [ - "default.handlebars->41->1848" + "default.handlebars->41->1851" ] }, { @@ -53158,7 +53176,7 @@ "zh-chs": "使用备份还原服务器,这将删除现有服务器数据。仅当您知道自己在做什么时才这样做。", "zh-cht": "使用備份還原伺服器,這將刪除現有伺服器數據。僅當你知道自己在做什麼時才這樣做。", "xloc": [ - "default.handlebars->41->1845" + "default.handlebars->41->1848" ] }, { @@ -53184,8 +53202,8 @@ "zh-cht": "受限制的", "xloc": [ "default-mobile.handlebars->11->288", - "default.handlebars->41->801", - "default.handlebars->41->941" + "default.handlebars->41->803", + "default.handlebars->41->945" ] }, { @@ -53210,7 +53228,7 @@ "zh-chs": "限制条件", "zh-cht": "限制條件", "xloc": [ - "default.handlebars->41->2591" + "default.handlebars->41->2594" ] }, { @@ -53245,7 +53263,7 @@ "zh-chs": "雷托-罗曼语", "zh-cht": "雷托-羅曼語", "xloc": [ - "default.handlebars->41->1679" + "default.handlebars->41->1682" ] }, { @@ -53270,7 +53288,7 @@ "zh-chs": "正确的", "xloc": [ "default-mobile.handlebars->11->427", - "default.handlebars->41->1256" + "default.handlebars->41->1260" ] }, { @@ -53295,7 +53313,7 @@ "zh-chs": "罗马尼亚文", "zh-cht": "羅馬尼亞文", "xloc": [ - "default.handlebars->41->1680" + "default.handlebars->41->1683" ] }, { @@ -53320,7 +53338,7 @@ "zh-chs": "罗马尼亚文(摩尔达维亚)", "zh-cht": "羅馬尼亞文(摩爾達維亞)", "xloc": [ - "default.handlebars->41->1681" + "default.handlebars->41->1684" ] }, { @@ -53347,8 +53365,8 @@ "xloc": [ "default-mobile.handlebars->11->138", "default-mobile.handlebars->11->474", - "default.handlebars->41->1354", - "default.handlebars->41->2161", + "default.handlebars->41->1358", + "default.handlebars->41->2164", "sharing.handlebars->11->49" ] }, @@ -53563,9 +53581,9 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->1103", - "default.handlebars->41->1123", - "default.handlebars->41->675" + "default.handlebars->41->1107", + "default.handlebars->41->1127", + "default.handlebars->41->677" ] }, { @@ -53590,7 +53608,7 @@ "zh-chs": "运行MeshCentral Router,然后单击“安装”以使其可从浏览器启动。", "zh-cht": "運行MeshCentral Router,然後單擊“安裝”以使其可從瀏覽器啟動。", "xloc": [ - "default.handlebars->41->1165" + "default.handlebars->41->1169" ] }, { @@ -53615,8 +53633,8 @@ "zh-chs": "以代理身份运行", "zh-cht": "以代理身份運行", "xloc": [ - "default.handlebars->41->1120", - "default.handlebars->41->672" + "default.handlebars->41->1124", + "default.handlebars->41->674" ] }, { @@ -53641,8 +53659,8 @@ "zh-chs": "以用户身份运行,如果没有用户,则运行代理", "zh-cht": "以用戶身份運行,如果沒有用戶,則運行代理", "xloc": [ - "default.handlebars->41->1121", - "default.handlebars->41->673" + "default.handlebars->41->1125", + "default.handlebars->41->675" ] }, { @@ -53667,7 +53685,7 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->649" + "default.handlebars->41->651" ] }, { @@ -53692,8 +53710,8 @@ "zh-chs": "在所选设备上运行命令。", "zh-cht": "在所選裝置上運行命令。", "xloc": [ - "default.handlebars->41->1116", - "default.handlebars->41->668" + "default.handlebars->41->1120", + "default.handlebars->41->670" ] }, { @@ -53735,8 +53753,8 @@ "ru": "Запущен", "tr": "Koşma", "xloc": [ - "default.handlebars->41->1285", - "default.handlebars->41->1289" + "default.handlebars->41->1289", + "default.handlebars->41->1293" ] }, { @@ -53761,7 +53779,7 @@ "zh-chs": "运行命令", "zh-cht": "運行命令", "xloc": [ - "default.handlebars->41->2228" + "default.handlebars->41->2231" ] }, { @@ -53786,7 +53804,7 @@ "zh-chs": "以用户身份运行命令", "zh-cht": "以用戶身份運行命令", "xloc": [ - "default.handlebars->41->2303" + "default.handlebars->41->2306" ] }, { @@ -53811,7 +53829,7 @@ "zh-chs": "如果可能,以用户身份运行命令", "zh-cht": "如果可能,以用戶身份運行命令", "xloc": [ - "default.handlebars->41->2304" + "default.handlebars->41->2307" ] }, { @@ -53836,7 +53854,7 @@ "zh-chs": "俄文", "zh-cht": "俄文", "xloc": [ - "default.handlebars->41->1682" + "default.handlebars->41->1685" ] }, { @@ -53861,7 +53879,7 @@ "zh-chs": "俄文(摩尔达维亚)", "zh-cht": "俄文(摩爾達維亞)", "xloc": [ - "default.handlebars->41->1683" + "default.handlebars->41->1686" ] }, { @@ -53927,8 +53945,8 @@ "tr": "SCP", "zh-chs": "SCP", "xloc": [ - "default.handlebars->41->394", - "default.handlebars->41->930" + "default.handlebars->41->396", + "default.handlebars->41->934" ] }, { @@ -53974,8 +53992,8 @@ "zh-chs": "短信", "zh-cht": "短信", "xloc": [ - "default.handlebars->41->2651", - "default.handlebars->41->2656", + "default.handlebars->41->2654", + "default.handlebars->41->2659", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3", "login.handlebars->container->column_l->centralTable->1->0->logincell->resettokenpanel->1->5->1->2->1->3", "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3", @@ -54005,7 +54023,7 @@ "zh-chs": "此用户的短信功能电话号码。", "zh-cht": "此用戶的短信功能電話號碼。", "xloc": [ - "default.handlebars->41->2672" + "default.handlebars->41->2675" ] }, { @@ -54029,8 +54047,8 @@ "tr": "SMS hatası", "zh-chs": "短信错误", "xloc": [ - "default-mobile.handlebars->11->742", - "default.handlebars->41->2897" + "default-mobile.handlebars->11->741", + "default.handlebars->41->2900" ] }, { @@ -54054,8 +54072,8 @@ "tr": "SMS hatası: {0}", "zh-chs": "短信错误:{0}", "xloc": [ - "default-mobile.handlebars->11->743", - "default.handlebars->41->2898" + "default-mobile.handlebars->11->742", + "default.handlebars->41->2901" ] }, { @@ -54099,8 +54117,8 @@ "tr": "SMS ağ geçidi etkinleştirilmedi", "zh-chs": "短信网关未启用", "xloc": [ - "default-mobile.handlebars->11->737", - "default.handlebars->41->2892" + "default-mobile.handlebars->11->736", + "default.handlebars->41->2895" ] }, { @@ -54111,7 +54129,7 @@ "ru": "SMS-сообщение", "fr": "Message SMS", "xloc": [ - "default.handlebars->41->2842" + "default.handlebars->41->2845" ] }, { @@ -54183,8 +54201,8 @@ "tr": "SMS başarıyla gönderildi.", "zh-chs": "短信发送成功。", "xloc": [ - "default-mobile.handlebars->11->741", - "default.handlebars->41->2896" + "default-mobile.handlebars->11->740", + "default.handlebars->41->2899" ] }, { @@ -54228,8 +54246,8 @@ "tr": "SSH", "zh-chs": "SSH", "xloc": [ - "default.handlebars->41->393", - "default.handlebars->41->928" + "default.handlebars->41->395", + "default.handlebars->41->932" ] }, { @@ -54265,7 +54283,7 @@ "zh-chs": "SSH 连接", "xloc": [ "default-mobile.handlebars->11->445", - "default.handlebars->41->744" + "default.handlebars->41->746" ] }, { @@ -54291,8 +54309,8 @@ "xloc": [ "default-mobile.handlebars->11->443", "default-mobile.handlebars->11->479", - "default.handlebars->41->1309", - "default.handlebars->41->1364" + "default.handlebars->41->1313", + "default.handlebars->41->1368" ] }, { @@ -54338,7 +54356,7 @@ "zh-chs": "SSH远程连接端口:", "xloc": [ "default-mobile.handlebars->11->444", - "default.handlebars->41->743" + "default.handlebars->41->745" ] }, { @@ -54371,8 +54389,8 @@ "xloc": [ "default-mobile.handlebars->11->324", "default-mobile.handlebars->11->328", - "default.handlebars->41->885", - "default.handlebars->41->889" + "default.handlebars->41->887", + "default.handlebars->41->891" ] }, { @@ -54384,8 +54402,8 @@ "xloc": [ "default-mobile.handlebars->11->323", "default-mobile.handlebars->11->327", - "default.handlebars->41->884", - "default.handlebars->41->888" + "default.handlebars->41->886", + "default.handlebars->41->890" ] }, { @@ -54397,8 +54415,8 @@ "xloc": [ "default-mobile.handlebars->11->322", "default-mobile.handlebars->11->326", - "default.handlebars->41->883", - "default.handlebars->41->887" + "default.handlebars->41->885", + "default.handlebars->41->889" ] }, { @@ -54408,7 +54426,7 @@ "ru": "SSL-сертификат не на сервере", "fr": "Le certificat SSL n'est pas sur le serveur", "xloc": [ - "default.handlebars->41->1214" + "default.handlebars->41->1218" ] }, { @@ -54418,7 +54436,7 @@ "ru": "SSL не разрешен сервером", "fr": "SSL n'est pas autorisé par le serveur", "xloc": [ - "default.handlebars->41->1213" + "default.handlebars->41->1217" ] }, { @@ -54428,7 +54446,7 @@ "ru": "SSL требуется сервером", "fr": "SSL est requis par le serveur", "xloc": [ - "default.handlebars->41->1212" + "default.handlebars->41->1216" ] }, { @@ -54438,7 +54456,7 @@ "ru": "SSL с аутентификацией пользователя, требуется сервером", "fr": "SSL avec une authentification de l'utilisateur est requise par le serveur", "xloc": [ - "default.handlebars->41->1217" + "default.handlebars->41->1221" ] }, { @@ -54463,8 +54481,8 @@ "zh-chs": "与设备名称相同", "zh-cht": "與裝置名稱相同", "xloc": [ - "default.handlebars->41->449", - "default.handlebars->41->458" + "default.handlebars->41->451", + "default.handlebars->41->460" ] }, { @@ -54489,7 +54507,7 @@ "zh-chs": "萨米(拉普兰)", "zh-cht": "薩米(拉普蘭)", "xloc": [ - "default.handlebars->41->1684" + "default.handlebars->41->1687" ] }, { @@ -54516,7 +54534,7 @@ "xloc": [ "default.handlebars->41->253", "default.handlebars->41->257", - "default.handlebars->41->485" + "default.handlebars->41->487" ] }, { @@ -54563,7 +54581,7 @@ "zh-chs": "三乡", "zh-cht": "三鄉", "xloc": [ - "default.handlebars->41->1685" + "default.handlebars->41->1688" ] }, { @@ -54588,7 +54606,7 @@ "zh-chs": "梵文", "zh-cht": "梵文", "xloc": [ - "default.handlebars->41->1686" + "default.handlebars->41->1689" ] }, { @@ -54613,7 +54631,7 @@ "zh-chs": "撒丁岛", "zh-cht": "撒丁島", "xloc": [ - "default.handlebars->41->1687" + "default.handlebars->41->1690" ] }, { @@ -54638,7 +54656,7 @@ "zh-chs": "保存远程桌面的屏幕截图", "zh-cht": "保存遠程桌面的屏幕截圖", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1", + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7", "sharing.handlebars->p11->deskarea0->deskarea4->1" ] }, @@ -54689,7 +54707,7 @@ "zh-chs": "保存节点位置", "zh-cht": "保存節點位置", "xloc": [ - "default.handlebars->41->754" + "default.handlebars->41->756" ] }, { @@ -54763,8 +54781,8 @@ "zh-chs": "扫瞄", "zh-cht": "掃瞄", "xloc": [ - "default.handlebars->41->479", - "default.handlebars->41->481" + "default.handlebars->41->481", + "default.handlebars->41->483" ] }, { @@ -54789,7 +54807,7 @@ "zh-chs": "扫描网络", "zh-cht": "掃描網絡", "xloc": [ - "default.handlebars->41->437" + "default.handlebars->41->439" ] }, { @@ -54814,7 +54832,7 @@ "zh-chs": "扫描英特尔®AMT设备", "zh-cht": "掃描Intel® AMT裝置", "xloc": [ - "default.handlebars->41->484" + "default.handlebars->41->486" ] }, { @@ -54864,7 +54882,7 @@ "zh-chs": "扫描...", "zh-cht": "掃描...", "xloc": [ - "default.handlebars->41->486" + "default.handlebars->41->488" ] }, { @@ -54974,8 +54992,8 @@ "zh-chs": "搜寻", "zh-cht": "搜尋", "xloc": [ - "default.handlebars->41->1358", - "default.handlebars->41->767", + "default.handlebars->41->1362", + "default.handlebars->41->769", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devMapToolbar", "sharing.handlebars->11->53" ] @@ -55102,8 +55120,8 @@ "zh-chs": "已使用TLS保安", "zh-cht": "已使用TLS保安", "xloc": [ - "default-mobile.handlebars->11->573", - "default.handlebars->41->1462" + "default-mobile.handlebars->11->572", + "default.handlebars->41->1465" ] }, { @@ -55129,12 +55147,12 @@ "zh-cht": "安全", "xloc": [ "default-mobile.handlebars->11->388", - "default-mobile.handlebars->11->572", - "default.handlebars->41->1137", - "default.handlebars->41->1461", - "default.handlebars->41->2159", - "default.handlebars->41->2652", - "default.handlebars->41->462", + "default-mobile.handlebars->11->571", + "default.handlebars->41->1141", + "default.handlebars->41->1464", + "default.handlebars->41->2162", + "default.handlebars->41->2655", + "default.handlebars->41->464", "default.handlebars->container->column_l->p21->p21main->1->1->meshSecurityChartDiv->1" ] }, @@ -55160,7 +55178,7 @@ "zh-chs": "安全密钥", "zh-cht": "安全密鑰", "xloc": [ - "default.handlebars->41->2647" + "default.handlebars->41->2650" ] }, { @@ -55184,8 +55202,8 @@ "tr": "Güvenlik uyarısı", "zh-chs": "安全警告", "xloc": [ - "default-mobile.handlebars->11->711", - "default.handlebars->41->2866" + "default-mobile.handlebars->11->710", + "default.handlebars->41->2869" ] }, { @@ -55256,13 +55274,13 @@ "zh-chs": "全选", "zh-cht": "全選", "xloc": [ - "default.handlebars->41->1361", - "default.handlebars->41->1363", - "default.handlebars->41->2185", - "default.handlebars->41->2419", - "default.handlebars->41->2505", - "default.handlebars->41->483", - "default.handlebars->41->640", + "default.handlebars->41->1365", + "default.handlebars->41->1367", + "default.handlebars->41->2188", + "default.handlebars->41->2422", + "default.handlebars->41->2508", + "default.handlebars->41->485", + "default.handlebars->41->642", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p4->3->1->0->3->3", @@ -55291,9 +55309,9 @@ "ru": "Выберите дату и время...", "tr": "Tarih ve Saati Seçin...", "xloc": [ - "default.handlebars->41->1087", - "default.handlebars->41->1089", - "default.handlebars->41->2800" + "default.handlebars->41->1091", + "default.handlebars->41->1093", + "default.handlebars->41->2803" ] }, { @@ -55318,11 +55336,11 @@ "zh-chs": "选择无", "zh-cht": "選擇無", "xloc": [ - "default.handlebars->41->1362", - "default.handlebars->41->2184", - "default.handlebars->41->2418", - "default.handlebars->41->2504", - "default.handlebars->41->639", + "default.handlebars->41->1366", + "default.handlebars->41->2187", + "default.handlebars->41->2421", + "default.handlebars->41->2507", + "default.handlebars->41->641", "default.handlebars->meshContextMenu->cxselectnone", "sharing.handlebars->11->57" ] @@ -55348,7 +55366,7 @@ "tr": "Anında iletme bildirimi kimlik doğrulaması için kaydedilecek bir cihaz seçin. Seçildikten sonra, cihaz onay isteyecektir.", "zh-chs": "选择要注册推送通知身份验证的设备。选择后,设备将提示确认。", "xloc": [ - "default.handlebars->41->1531" + "default.handlebars->41->1534" ] }, { @@ -55373,7 +55391,7 @@ "zh-chs": "为所选设备选择一个新组", "zh-cht": "為所選裝置選擇一個新群", "xloc": [ - "default.handlebars->41->1151" + "default.handlebars->41->1155" ] }, { @@ -55398,7 +55416,7 @@ "zh-chs": "选择此设备的新组", "zh-cht": "選擇此裝置的新群", "xloc": [ - "default.handlebars->41->1150" + "default.handlebars->41->1154" ] }, { @@ -55423,7 +55441,7 @@ "zh-chs": "选择要放置的节点", "zh-cht": "選擇要放置的節點", "xloc": [ - "default.handlebars->41->770" + "default.handlebars->41->772" ] }, { @@ -55448,7 +55466,7 @@ "zh-chs": "选择要在所有选定设备上执行的操作。仅在拥有适当权限的情况下才能执行操作。", "zh-cht": "選擇要在所有選定裝置上執行的操作。僅在擁有適當權限的情況下才能執行操作。", "xloc": [ - "default.handlebars->41->657" + "default.handlebars->41->659" ] }, { @@ -55473,8 +55491,8 @@ "zh-chs": "选择要对所有选定用户执行的操作。", "zh-cht": "選擇要對所有選定用戶執行的操作。", "xloc": [ - "default.handlebars->41->2422", - "default.handlebars->41->2506" + "default.handlebars->41->2425", + "default.handlebars->41->2509" ] }, { @@ -55500,7 +55518,7 @@ "zh-cht": "選擇要在此裝置上執行的操作。", "xloc": [ "default-mobile.handlebars->11->357", - "default.handlebars->41->1095" + "default.handlebars->41->1099" ] }, { @@ -55525,7 +55543,7 @@ "zh-chs": "选择新密码", "zh-cht": "選擇新密碼", "xloc": [ - "default.handlebars->41->1972" + "default.handlebars->41->1975" ] }, { @@ -55576,8 +55594,8 @@ "zh-chs": "仅自我事件", "zh-cht": "僅自我事件", "xloc": [ - "default-mobile.handlebars->11->692", - "default.handlebars->41->2090" + "default-mobile.handlebars->11->691", + "default.handlebars->41->2093" ] }, { @@ -55652,7 +55670,7 @@ "zh-chs": "发电邮", "zh-cht": "發電郵", "xloc": [ - "default.handlebars->41->2433" + "default.handlebars->41->2436" ] }, { @@ -55677,8 +55695,8 @@ "zh-chs": "发送MQTT消息", "zh-cht": "發送MQTT消息", "xloc": [ - "default.handlebars->41->1107", - "default.handlebars->41->641" + "default.handlebars->41->1111", + "default.handlebars->41->643" ] }, { @@ -55703,7 +55721,7 @@ "zh-chs": "发送MQTT消息", "zh-cht": "發送MQTT消息", "xloc": [ - "default.handlebars->41->1143" + "default.handlebars->41->1147" ] }, { @@ -55728,7 +55746,7 @@ "zh-chs": "发送短信", "zh-cht": "發送簡訊", "xloc": [ - "default.handlebars->41->2431" + "default.handlebars->41->2434" ] }, { @@ -55753,7 +55771,7 @@ "zh-chs": "发送短信给该用户", "zh-cht": "發送短信給該用戶", "xloc": [ - "default.handlebars->41->2657" + "default.handlebars->41->2660" ] }, { @@ -55778,7 +55796,7 @@ "zh-chs": "发送电邮给该用户", "zh-cht": "發送電郵給該用戶", "xloc": [ - "default.handlebars->41->2659" + "default.handlebars->41->2662" ] }, { @@ -55803,7 +55821,7 @@ "zh-chs": "向该组中的所有用户发送通知。", "zh-cht": "向該群中的所有用戶發送通知。", "xloc": [ - "default.handlebars->41->2548" + "default.handlebars->41->2551" ] }, { @@ -55828,7 +55846,7 @@ "zh-chs": "向该用户发送文本通知。", "zh-cht": "向該用戶發送文本通知。", "xloc": [ - "default.handlebars->41->2434" + "default.handlebars->41->2437" ] }, { @@ -55853,7 +55871,7 @@ "zh-chs": "发送电邮给用户", "zh-cht": "發送電郵給用戶", "xloc": [ - "default.handlebars->41->2414" + "default.handlebars->41->2417" ] }, { @@ -55878,7 +55896,7 @@ "zh-chs": "发送安装连结", "zh-cht": "發送安裝鏈結", "xloc": [ - "default.handlebars->41->495" + "default.handlebars->41->497" ] }, { @@ -55903,7 +55921,7 @@ "zh-chs": "发送邀请电邮。", "zh-cht": "發送邀請電郵。", "xloc": [ - "default.handlebars->41->2476" + "default.handlebars->41->2479" ] }, { @@ -56056,7 +56074,7 @@ "zh-chs": "发送用户通知", "zh-cht": "發送用戶通知", "xloc": [ - "default.handlebars->41->2661" + "default.handlebars->41->2664" ] }, { @@ -56149,7 +56167,7 @@ "zh-chs": "塞尔维亚", "zh-cht": "塞爾維亞", "xloc": [ - "default.handlebars->41->1690" + "default.handlebars->41->1693" ] }, { @@ -56174,8 +56192,8 @@ "zh-chs": "序列号", "zh-cht": "序列號", "xloc": [ - "default-mobile.handlebars->11->585", - "default.handlebars->41->1474" + "default-mobile.handlebars->11->584", + "default.handlebars->41->1477" ] }, { @@ -56221,7 +56239,7 @@ "zh-chs": "服务器备份", "zh-cht": "伺服器備份", "xloc": [ - "default.handlebars->41->2486" + "default.handlebars->41->2489" ] }, { @@ -56246,7 +56264,7 @@ "zh-chs": "服务器证书", "zh-cht": "伺服器憑證", "xloc": [ - "default.handlebars->41->2973" + "default.handlebars->41->2976" ] }, { @@ -56295,7 +56313,7 @@ "zh-chs": "服务器数据库", "zh-cht": "伺服器數據庫", "xloc": [ - "default.handlebars->41->2974" + "default.handlebars->41->2977" ] }, { @@ -56320,13 +56338,13 @@ "zh-chs": "服务器档案", "zh-cht": "伺服器檔案", "xloc": [ - "default-mobile.handlebars->11->669", - "default-mobile.handlebars->11->684", - "default.handlebars->41->1009", - "default.handlebars->41->1031", - "default.handlebars->41->2050", - "default.handlebars->41->2081", - "default.handlebars->41->2483" + "default-mobile.handlebars->11->668", + "default-mobile.handlebars->11->683", + "default.handlebars->41->1013", + "default.handlebars->41->1035", + "default.handlebars->41->2053", + "default.handlebars->41->2084", + "default.handlebars->41->2486" ] }, { @@ -56375,8 +56393,8 @@ "tr": "Sunucu Sınırı", "zh-chs": "服务器限制", "xloc": [ - "default-mobile.handlebars->11->710", - "default.handlebars->41->2865" + "default-mobile.handlebars->11->709", + "default.handlebars->41->2868" ] }, { @@ -56425,8 +56443,8 @@ "zh-chs": "服务器权限", "zh-cht": "伺服器權限", "xloc": [ - "default.handlebars->41->2406", - "default.handlebars->41->2498" + "default.handlebars->41->2409", + "default.handlebars->41->2501" ] }, { @@ -56451,7 +56469,7 @@ "zh-chs": "服务器配额", "zh-cht": "伺服器配額", "xloc": [ - "default.handlebars->41->2621" + "default.handlebars->41->2624" ] }, { @@ -56476,7 +56494,7 @@ "zh-chs": "服务器还原", "zh-cht": "伺服器還原", "xloc": [ - "default.handlebars->41->2487" + "default.handlebars->41->2490" ] }, { @@ -56501,7 +56519,7 @@ "zh-chs": "服务器权限", "zh-cht": "伺服器權限", "xloc": [ - "default.handlebars->41->2620" + "default.handlebars->41->2623" ] }, { @@ -56526,7 +56544,7 @@ "zh-chs": "服务器状态", "zh-cht": "伺服器狀態", "xloc": [ - "default.handlebars->41->2904" + "default.handlebars->41->2907" ] }, { @@ -56576,7 +56594,7 @@ "zh-chs": "服务器跟踪", "zh-cht": "伺服器追蹤", "xloc": [ - "default.handlebars->41->2986" + "default.handlebars->41->2989" ] }, { @@ -56600,7 +56618,7 @@ "tr": "Sunucu İzleme Etkinliği", "zh-chs": "服务器跟踪事件", "xloc": [ - "default.handlebars->41->2965" + "default.handlebars->41->2968" ] }, { @@ -56676,7 +56694,7 @@ "zh-chs": "服务器更新", "zh-cht": "伺服器更新", "xloc": [ - "default.handlebars->41->2488" + "default.handlebars->41->2491" ] }, { @@ -56926,7 +56944,7 @@ "zh-chs": "ServerStats.csv", "zh-cht": "ServerStats.csv", "xloc": [ - "default.handlebars->41->2964" + "default.handlebars->41->2967" ] }, { @@ -56951,7 +56969,7 @@ "zh-chs": "服务详情", "zh-cht": "服務詳情", "xloc": [ - "default.handlebars->41->1302" + "default.handlebars->41->1306" ] }, { @@ -57001,8 +57019,8 @@ "zh-chs": "会话", "zh-cht": "節", "xloc": [ - "default.handlebars->41->2747", - "default.handlebars->41->2805", + "default.handlebars->41->2750", + "default.handlebars->41->2808", "ssh.handlebars->3->24", "ssh.handlebars->3->26" ] @@ -57053,7 +57071,7 @@ "zh-chs": "会话信息", "zh-cht": "會議訊息", "xloc": [ - "default.handlebars->41->1234", + "default.handlebars->41->1238", "sharing.handlebars->11->18" ] }, @@ -57080,8 +57098,8 @@ "xloc": [ "default-mobile.handlebars->11->465", "default-mobile.handlebars->11->472", - "default.handlebars->41->1333", - "default.handlebars->41->1349" + "default.handlebars->41->1337", + "default.handlebars->41->1353" ] }, { @@ -57159,8 +57177,8 @@ "xloc": [ "default-mobile.handlebars->11->466", "default-mobile.handlebars->11->473", - "default.handlebars->41->1334", - "default.handlebars->41->1350" + "default.handlebars->41->1338", + "default.handlebars->41->1354" ] }, { @@ -57231,7 +57249,7 @@ "zh-cht": "節", "xloc": [ "default-mobile.handlebars->11->228", - "default.handlebars->41->425", + "default.handlebars->41->427", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->7" ] }, @@ -57252,7 +57270,7 @@ "ru": "Установить буфер", "tr": "Panoyu Ayarla", "xloc": [ - "default.handlebars->41->1278" + "default.handlebars->41->1282" ] }, { @@ -57322,7 +57340,7 @@ "zh-chs": "设置标签", "zh-cht": "設置標籤", "xloc": [ - "default.handlebars->41->679" + "default.handlebars->41->681" ] }, { @@ -57347,7 +57365,7 @@ "zh-chs": "设置剪贴板内容,{0}个字节", "zh-cht": "設置剪貼板內容,{0}個字節", "xloc": [ - "default.handlebars->41->2226" + "default.handlebars->41->2229" ] }, { @@ -57398,7 +57416,7 @@ "zh-chs": "设定档案", "zh-cht": "設定檔案", "xloc": [ - "default.handlebars->41->563" + "default.handlebars->41->565" ] }, { @@ -57450,8 +57468,8 @@ "zh-cht": "設定", "xloc": [ "agent-translations.json", - "default.handlebars->41->1917", - "default.handlebars->41->439" + "default.handlebars->41->1920", + "default.handlebars->41->441" ] }, { @@ -57520,7 +57538,7 @@ "zh-chs": "将此服务器设置为自动将备份上传到Google云端硬盘。首先为您的帐户创建并输入Google Drive ClientID和ClientSecret。", "zh-cht": "將此服務器設置為自動將備份上傳到Google雲端硬盤。首先為您的帳戶創建並輸入Google Drive ClientID和ClientSecret。", "xloc": [ - "default.handlebars->41->1836" + "default.handlebars->41->1839" ] }, { @@ -57549,7 +57567,7 @@ "default.handlebars->41->10", "default.handlebars->41->364", "default.handlebars->41->367", - "default.handlebars->41->432", + "default.handlebars->41->434", "sharing.handlebars->11->3", "ssh.handlebars->3->3", "xterm.handlebars->9->3" @@ -57577,7 +57595,7 @@ "zh-chs": "共享", "zh-cht": "共享", "xloc": [ - "default.handlebars->41->905" + "default.handlebars->41->907" ] }, { @@ -57602,7 +57620,7 @@ "zh-chs": "共享设备", "zh-cht": "共享裝置", "xloc": [ - "default.handlebars->41->1094", + "default.handlebars->41->1098", "default.handlebars->41->296" ] }, @@ -57648,7 +57666,7 @@ "ru": "Поделиться устройством с гостем", "tr": "Cihazı bir misafirle paylaşın", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -57673,7 +57691,7 @@ "zh-chs": "共享过程", "zh-cht": "共享過程", "xloc": [ - "default.handlebars->41->1296" + "default.handlebars->41->1300" ] }, { @@ -57697,7 +57715,7 @@ "tr": "Paylaşım", "zh-chs": "分享", "xloc": [ - "default.handlebars->41->2095" + "default.handlebars->41->2098" ] }, { @@ -57795,8 +57813,8 @@ "xloc": [ "default-mobile.handlebars->11->430", "default-mobile.handlebars->11->434", - "default.handlebars->41->1259", - "default.handlebars->41->1263" + "default.handlebars->41->1263", + "default.handlebars->41->1267" ] }, { @@ -58103,8 +58121,8 @@ "zh-chs": "只显示自己的事件", "zh-cht": "只顯示自己的事件", "xloc": [ - "default-mobile.handlebars->11->672", - "default.handlebars->41->2053" + "default-mobile.handlebars->11->671", + "default.handlebars->41->2056" ] }, { @@ -58145,7 +58163,7 @@ "ru": "Показать трафик", "tr": "Trafiği Göster", "xloc": [ - "default.handlebars->41->2801" + "default.handlebars->41->2804" ] }, { @@ -58170,7 +58188,7 @@ "zh-chs": "显示连接工具栏", "zh-cht": "顯示連接工具欄", "xloc": [ - "default.handlebars->41->2009" + "default.handlebars->41->2012" ] }, { @@ -58220,7 +58238,7 @@ "zh-chs": "显示设备位置信息", "zh-cht": "顯示裝置位置訊息", "xloc": [ - "default.handlebars->41->919" + "default.handlebars->41->921" ] }, { @@ -58245,7 +58263,7 @@ "zh-chs": "显示设备网络接口信息", "zh-cht": "顯示裝置網絡介面訊息", "xloc": [ - "default.handlebars->41->917" + "default.handlebars->41->919" ] }, { @@ -58295,8 +58313,8 @@ "zh-chs": "显示1分钟", "zh-cht": "顯示1分鐘", "xloc": [ - "default.handlebars->41->2437", - "default.handlebars->41->2462" + "default.handlebars->41->2440", + "default.handlebars->41->2465" ] }, { @@ -58321,8 +58339,8 @@ "zh-chs": "显示10秒", "zh-cht": "顯示10秒", "xloc": [ - "default.handlebars->41->2436", - "default.handlebars->41->2461" + "default.handlebars->41->2439", + "default.handlebars->41->2464" ] }, { @@ -58347,8 +58365,8 @@ "zh-chs": "显示5分钟", "zh-cht": "顯示5分鐘", "xloc": [ - "default.handlebars->41->2438", - "default.handlebars->41->2463" + "default.handlebars->41->2441", + "default.handlebars->41->2466" ] }, { @@ -58373,8 +58391,8 @@ "zh-chs": "显示消息,直到被用户拒绝", "zh-cht": "顯示消息,直到被用戶拒絕", "xloc": [ - "default.handlebars->41->2435", - "default.handlebars->41->2460" + "default.handlebars->41->2438", + "default.handlebars->41->2463" ] }, { @@ -58646,8 +58664,8 @@ "zh-chs": "简单管理员控制模式(ACM)", "zh-cht": "簡單管理員控制模式(ACM)", "xloc": [ - "default.handlebars->41->1908", - "default.handlebars->41->1962" + "default.handlebars->41->1911", + "default.handlebars->41->1965" ] }, { @@ -58672,8 +58690,8 @@ "zh-chs": "简单客户端控制模式(CCM)", "zh-cht": "簡單客戶端控制模式(CCM)", "xloc": [ - "default.handlebars->41->1906", - "default.handlebars->41->1966" + "default.handlebars->41->1909", + "default.handlebars->41->1969" ] }, { @@ -58698,7 +58716,7 @@ "zh-chs": "信地", "zh-cht": "信地", "xloc": [ - "default.handlebars->41->1688" + "default.handlebars->41->1691" ] }, { @@ -58723,7 +58741,7 @@ "zh-chs": "僧伽罗文", "zh-cht": "僧伽羅文", "xloc": [ - "default.handlebars->41->1689" + "default.handlebars->41->1692" ] }, { @@ -58761,7 +58779,7 @@ "ru": "Единая точка входа", "fr": "Authentification unique", "xloc": [ - "default.handlebars->41->2849" + "default.handlebars->41->2852" ] }, { @@ -58807,8 +58825,8 @@ "zh-chs": "尺寸", "zh-cht": "尺寸", "xloc": [ - "default.handlebars->41->2750", - "default.handlebars->41->2771", + "default.handlebars->41->2753", + "default.handlebars->41->2774", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSize" ] }, @@ -58834,7 +58852,7 @@ "zh-chs": "缩放:100%", "zh-cht": "縮放:100%", "xloc": [ - "default.handlebars->41->1391", + "default.handlebars->41->1395", "sharing.handlebars->11->85" ] }, @@ -58860,7 +58878,7 @@ "zh-chs": "缩放:125%", "zh-cht": "縮放:125%", "xloc": [ - "default.handlebars->41->1392", + "default.handlebars->41->1396", "sharing.handlebars->11->86" ] }, @@ -58886,7 +58904,7 @@ "zh-chs": "缩放:150%", "zh-cht": "縮放:150%", "xloc": [ - "default.handlebars->41->1393", + "default.handlebars->41->1397", "sharing.handlebars->11->87" ] }, @@ -58912,7 +58930,7 @@ "zh-chs": "缩放:200%", "zh-cht": "縮放:200%", "xloc": [ - "default.handlebars->41->1394", + "default.handlebars->41->1398", "sharing.handlebars->11->88" ] }, @@ -58942,7 +58960,7 @@ "default-mobile.handlebars->11->232", "default-mobile.handlebars->11->233", "default-mobile.handlebars->11->365", - "default.handlebars->41->1104", + "default.handlebars->41->1108", "default.handlebars->41->2", "default.handlebars->41->3", "default.handlebars->41->4" @@ -58970,7 +58988,7 @@ "zh-chs": "把装置休眠", "zh-cht": "把裝置休眠", "xloc": [ - "default.handlebars->41->646" + "default.handlebars->41->648" ] }, { @@ -58997,8 +59015,8 @@ "xloc": [ "default-mobile.handlebars->11->239", "default-mobile.handlebars->11->240", - "default.handlebars->41->603", - "default.handlebars->41->605" + "default.handlebars->41->605", + "default.handlebars->41->607" ] }, { @@ -59023,7 +59041,7 @@ "zh-chs": "斯洛伐克文", "zh-cht": "斯洛伐克文", "xloc": [ - "default.handlebars->41->1691" + "default.handlebars->41->1694" ] }, { @@ -59048,7 +59066,7 @@ "zh-chs": "斯洛文尼亞文", "zh-cht": "斯洛文尼亞文", "xloc": [ - "default.handlebars->41->1692" + "default.handlebars->41->1695" ] }, { @@ -59126,7 +59144,7 @@ "zh-chs": "小焦点", "zh-cht": "小焦點", "xloc": [ - "default.handlebars->41->1241" + "default.handlebars->41->1245" ] }, { @@ -59151,8 +59169,8 @@ "zh-chs": "软断开代理", "zh-cht": "軟斷開代理", "xloc": [ - "default-mobile.handlebars->11->618", - "default.handlebars->41->1508" + "default-mobile.handlebars->11->617", + "default.handlebars->41->1511" ] }, { @@ -59178,7 +59196,7 @@ "zh-cht": "軟關機", "xloc": [ "default-mobile.handlebars->11->243", - "default.handlebars->41->611" + "default.handlebars->41->613" ] }, { @@ -59228,7 +59246,7 @@ "zh-chs": "索马尼", "zh-cht": "索馬尼", "xloc": [ - "default.handlebars->41->1693" + "default.handlebars->41->1696" ] }, { @@ -59253,7 +59271,7 @@ "zh-chs": "索比亚文", "zh-cht": "索比亞文", "xloc": [ - "default.handlebars->41->1694" + "default.handlebars->41->1697" ] }, { @@ -59484,7 +59502,7 @@ "zh-chs": "西班牙文", "zh-cht": "西班牙文", "xloc": [ - "default.handlebars->41->1695" + "default.handlebars->41->1698" ] }, { @@ -59509,7 +59527,7 @@ "zh-chs": "西班牙文(阿根廷)", "zh-cht": "西班牙文(阿根廷)", "xloc": [ - "default.handlebars->41->1696" + "default.handlebars->41->1699" ] }, { @@ -59534,7 +59552,7 @@ "zh-chs": "西班牙文(玻利维亚)", "zh-cht": "西班牙文(玻利維亞)", "xloc": [ - "default.handlebars->41->1697" + "default.handlebars->41->1700" ] }, { @@ -59559,7 +59577,7 @@ "zh-chs": "西班牙文(智利)", "zh-cht": "西班牙文(智利)", "xloc": [ - "default.handlebars->41->1698" + "default.handlebars->41->1701" ] }, { @@ -59584,7 +59602,7 @@ "zh-chs": "西班牙文(哥伦比亚)", "zh-cht": "西班牙文(哥倫比亞)", "xloc": [ - "default.handlebars->41->1699" + "default.handlebars->41->1702" ] }, { @@ -59609,7 +59627,7 @@ "zh-chs": "西班牙文(哥斯达黎加)", "zh-cht": "西班牙文(哥斯達黎加)", "xloc": [ - "default.handlebars->41->1700" + "default.handlebars->41->1703" ] }, { @@ -59634,7 +59652,7 @@ "zh-chs": "西班牙文(多米尼加共和国)", "zh-cht": "西班牙文(多米尼加共和國)", "xloc": [ - "default.handlebars->41->1701" + "default.handlebars->41->1704" ] }, { @@ -59659,7 +59677,7 @@ "zh-chs": "西班牙文(厄瓜多尔)", "zh-cht": "西班牙文(厄瓜多爾)", "xloc": [ - "default.handlebars->41->1702" + "default.handlebars->41->1705" ] }, { @@ -59684,7 +59702,7 @@ "zh-chs": "西班牙文(萨尔瓦多)", "zh-cht": "西班牙文(薩爾瓦多)", "xloc": [ - "default.handlebars->41->1703" + "default.handlebars->41->1706" ] }, { @@ -59709,7 +59727,7 @@ "zh-chs": "西班牙文(危地马拉)", "zh-cht": "西班牙文(危地馬拉)", "xloc": [ - "default.handlebars->41->1704" + "default.handlebars->41->1707" ] }, { @@ -59734,7 +59752,7 @@ "zh-chs": "西班牙文(洪都拉斯)", "zh-cht": "西班牙文(洪都拉斯)", "xloc": [ - "default.handlebars->41->1705" + "default.handlebars->41->1708" ] }, { @@ -59759,7 +59777,7 @@ "zh-chs": "西班牙文(墨西哥)", "zh-cht": "西班牙文(墨西哥)", "xloc": [ - "default.handlebars->41->1706" + "default.handlebars->41->1709" ] }, { @@ -59784,7 +59802,7 @@ "zh-chs": "西班牙文(尼加拉瓜)", "zh-cht": "西班牙文(尼加拉瓜)", "xloc": [ - "default.handlebars->41->1707" + "default.handlebars->41->1710" ] }, { @@ -59809,7 +59827,7 @@ "zh-chs": "西班牙文(巴拿马)", "zh-cht": "西班牙文(巴拿馬)", "xloc": [ - "default.handlebars->41->1708" + "default.handlebars->41->1711" ] }, { @@ -59834,7 +59852,7 @@ "zh-chs": "西班牙文(巴拉圭)", "zh-cht": "西班牙文(巴拉圭)", "xloc": [ - "default.handlebars->41->1709" + "default.handlebars->41->1712" ] }, { @@ -59859,7 +59877,7 @@ "zh-chs": "西班牙文(秘鲁)", "zh-cht": "西班牙文(秘魯)", "xloc": [ - "default.handlebars->41->1710" + "default.handlebars->41->1713" ] }, { @@ -59884,7 +59902,7 @@ "zh-chs": "西班牙文(波多黎各)", "zh-cht": "西班牙文(波多黎各)", "xloc": [ - "default.handlebars->41->1711" + "default.handlebars->41->1714" ] }, { @@ -59909,7 +59927,7 @@ "zh-chs": "西班牙文(西班牙)", "zh-cht": "西班牙文(西班牙)", "xloc": [ - "default.handlebars->41->1712" + "default.handlebars->41->1715" ] }, { @@ -59934,7 +59952,7 @@ "zh-chs": "西班牙文(乌拉圭)", "zh-cht": "西班牙文(烏拉圭)", "xloc": [ - "default.handlebars->41->1713" + "default.handlebars->41->1716" ] }, { @@ -59959,7 +59977,7 @@ "zh-chs": "西班牙文(委内瑞拉)", "zh-cht": "西班牙文(委內瑞拉)", "xloc": [ - "default.handlebars->41->1714" + "default.handlebars->41->1717" ] }, { @@ -60059,7 +60077,7 @@ "zh-chs": "开始", "zh-cht": "開始", "xloc": [ - "default.handlebars->41->1299" + "default.handlebars->41->1303" ] }, { @@ -60106,13 +60124,13 @@ "zh-chs": "开始时间", "zh-cht": "開始時間", "xloc": [ - "default.handlebars->41->1088", + "default.handlebars->41->1092", "default.handlebars->41->119", - "default.handlebars->41->1231", + "default.handlebars->41->1235", "default.handlebars->41->272", - "default.handlebars->41->2748", + "default.handlebars->41->2751", "default.handlebars->41->277", - "default.handlebars->41->2773", + "default.handlebars->41->2776", "sharing.handlebars->11->14" ] }, @@ -60138,7 +60156,7 @@ "zh-chs": "首先输入新旧MBEx密码。", "zh-cht": "首先輸入新舊MBEx密碼。", "xloc": [ - "default.handlebars->41->470" + "default.handlebars->41->472" ] }, { @@ -60173,7 +60191,7 @@ "pt-br": "Sessão Web-RDP \\\"{0}\\\" iniciada.", "ru": "Начат сеанс Web-RDP \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2354" + "default.handlebars->41->2357" ] }, { @@ -60184,7 +60202,7 @@ "pt-br": "Sessão Web-SFTP \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-SFTP \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2353" + "default.handlebars->41->2356" ] }, { @@ -60195,7 +60213,7 @@ "pt-br": "Sessão Web-SSH \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-SSH \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2352" + "default.handlebars->41->2355" ] }, { @@ -60206,7 +60224,7 @@ "pt-br": "Sessão Web-VNC \\\"{0}\\\" iniciada", "ru": "Начат сеанс Web-VNC \\\"{0}\\\".", "xloc": [ - "default.handlebars->41->2355" + "default.handlebars->41->2358" ] }, { @@ -60231,7 +60249,7 @@ "zh-chs": "开始桌面多重会话", "zh-cht": "啟動桌面多路復用會話", "xloc": [ - "default.handlebars->41->2210" + "default.handlebars->41->2213" ] }, { @@ -60242,7 +60260,7 @@ "pt-br": "Sessão de área de trabalho multiplex \\\"{0}\\\" iniciada", "ru": "Начался сеанс мультиплексирования рабочего стола \\\"{0}\\\"", "xloc": [ - "default.handlebars->41->2349" + "default.handlebars->41->2352" ] }, { @@ -60267,7 +60285,7 @@ "zh-chs": "从{1}到{2}开始了桌面会话“{0}”", "zh-cht": "從{1}到{2}開始了桌面會話“{0}”", "xloc": [ - "default.handlebars->41->2219" + "default.handlebars->41->2222" ] }, { @@ -60292,7 +60310,7 @@ "zh-chs": "从{1}到{2}开始文件管理会话“{0}”", "zh-cht": "從{1}到{2}開始文件管理會話“{0}”", "xloc": [ - "default.handlebars->41->2220" + "default.handlebars->41->2223" ] }, { @@ -60316,7 +60334,7 @@ "tr": "Yerel geçiş oturumu \\\"{0}\\\", {1} - {2} protokolü başlatıldı", "zh-chs": "已启动本地中继会话 \\\"{0}\\\",协议 {1} 到 {2}", "xloc": [ - "default.handlebars->41->2324" + "default.handlebars->41->2327" ] }, { @@ -60341,7 +60359,7 @@ "zh-chs": "从{1}到{2}开始中继会话“{0}”", "zh-cht": "從{1}到{2}開始中繼會話“{0}”", "xloc": [ - "default.handlebars->41->2217" + "default.handlebars->41->2220" ] }, { @@ -60366,7 +60384,7 @@ "zh-chs": "使用Toast通知启动远程桌面", "zh-cht": "使用Toast通知啟動遠程桌面", "xloc": [ - "default.handlebars->41->2239" + "default.handlebars->41->2242" ] }, { @@ -60391,7 +60409,7 @@ "zh-chs": "启动远程桌面,而无需通知", "zh-cht": "啟動遠程桌面,而無需通知", "xloc": [ - "default.handlebars->41->2240" + "default.handlebars->41->2243" ] }, { @@ -60416,7 +60434,7 @@ "zh-chs": "启动带有Toast通知的远程文件", "zh-cht": "啟動帶有Toast通知的遠程文件", "xloc": [ - "default.handlebars->41->2246" + "default.handlebars->41->2249" ] }, { @@ -60441,7 +60459,7 @@ "zh-chs": "已启动的远程文件,恕不另行通知", "zh-cht": "已啟動的遠程文件,恕不另行通知", "xloc": [ - "default.handlebars->41->2247" + "default.handlebars->41->2250" ] }, { @@ -60466,7 +60484,7 @@ "zh-chs": "从{1}到{2}开始了终端会话“{0}”", "zh-cht": "從{1}到{2}開始了終端會話“{0}”", "xloc": [ - "default.handlebars->41->2218" + "default.handlebars->41->2221" ] }, { @@ -60491,7 +60509,7 @@ "zh-chs": "现在开始", "zh-cht": "現在開始", "xloc": [ - "default.handlebars->41->1081" + "default.handlebars->41->1085" ] }, { @@ -60516,7 +60534,7 @@ "zh-chs": "接受本地用户后启动远程桌面", "zh-cht": "接受本地用戶後啟動遠程桌面", "xloc": [ - "default.handlebars->41->2234" + "default.handlebars->41->2237" ] }, { @@ -60541,7 +60559,7 @@ "zh-chs": "本地用户接受后启动远程文件", "zh-cht": "本地用戶接受後啟動遠程文件", "xloc": [ - "default.handlebars->41->2244" + "default.handlebars->41->2247" ] }, { @@ -60587,7 +60605,7 @@ "zh-chs": "状况", "zh-cht": "狀態", "xloc": [ - "default.handlebars->41->1290", + "default.handlebars->41->1294", "default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->1" ] }, @@ -60659,8 +60677,8 @@ "zh-chs": "状况", "zh-cht": "狀態", "xloc": [ - "default.handlebars->41->2691", - "default.handlebars->41->2766", + "default.handlebars->41->2694", + "default.handlebars->41->2769", "default.handlebars->container->column_l->p42->p42tbl->1->0->7" ] }, @@ -60686,7 +60704,7 @@ "zh-chs": "停止", "zh-cht": "停止", "xloc": [ - "default.handlebars->41->1300" + "default.handlebars->41->1304" ] }, { @@ -60711,7 +60729,7 @@ "zh-chs": "停止进程", "zh-cht": "停止進程", "xloc": [ - "default.handlebars->41->1281" + "default.handlebars->41->1285" ] }, { @@ -60735,7 +60753,7 @@ "tr": "#{0} \\\"{1}\\\" işlemi durdurulsun mu?", "zh-chs": "停止进程 #{0} \\\"{1}\\\"?", "xloc": [ - "default.handlebars->41->1308" + "default.handlebars->41->1312" ] }, { @@ -60781,8 +60799,8 @@ "tr": "durduruldu", "zh-chs": "停止", "xloc": [ - "default.handlebars->41->1284", - "default.handlebars->41->1288" + "default.handlebars->41->1288", + "default.handlebars->41->1292" ] }, { @@ -60828,8 +60846,8 @@ "zh-chs": "储存", "zh-cht": "儲存", "xloc": [ - "default-mobile.handlebars->11->601", - "default.handlebars->41->1490" + "default-mobile.handlebars->11->600", + "default.handlebars->41->1493" ] }, { @@ -60879,7 +60897,7 @@ "zh-chs": "超出储存空间", "zh-cht": "超出儲存空間", "xloc": [ - "default.handlebars->41->2165" + "default.handlebars->41->2168" ] }, { @@ -60890,7 +60908,7 @@ "fr": "Clé enregistrée", "xloc": [ "default-mobile.handlebars->11->448", - "default.handlebars->41->1315", + "default.handlebars->41->1319", "ssh.handlebars->3->6" ] }, @@ -60916,7 +60934,7 @@ "zh-chs": "强", "zh-cht": "強", "xloc": [ - "default.handlebars->41->1819" + "default.handlebars->41->1822" ] }, { @@ -60971,7 +60989,7 @@ "zh-chs": "主题", "zh-cht": "主題", "xloc": [ - "default.handlebars->41->2432" + "default.handlebars->41->2435" ] }, { @@ -61007,8 +61025,8 @@ "pt-br": "Login realizado com sucesso", "ru": "Успешный вход", "xloc": [ - "default.handlebars->41->2835", - "default.handlebars->41->2855" + "default.handlebars->41->2838", + "default.handlebars->41->2858" ] }, { @@ -61108,7 +61126,7 @@ "zh-chs": "苏图", "zh-cht": "蘇圖", "xloc": [ - "default.handlebars->41->1715" + "default.handlebars->41->1718" ] }, { @@ -61133,7 +61151,7 @@ "zh-chs": "斯瓦希里文", "zh-cht": "斯瓦希里文", "xloc": [ - "default.handlebars->41->1716" + "default.handlebars->41->1719" ] }, { @@ -61185,7 +61203,7 @@ "zh-chs": "瑞典文", "zh-cht": "瑞典文", "xloc": [ - "default.handlebars->41->1717" + "default.handlebars->41->1720" ] }, { @@ -61210,7 +61228,7 @@ "zh-chs": "瑞典文(芬兰)", "zh-cht": "瑞典文(芬蘭)", "xloc": [ - "default.handlebars->41->1718" + "default.handlebars->41->1721" ] }, { @@ -61235,7 +61253,7 @@ "zh-chs": "瑞典文(瑞典)", "zh-cht": "瑞典文(瑞典)", "xloc": [ - "default.handlebars->41->1719" + "default.handlebars->41->1722" ] }, { @@ -61258,7 +61276,7 @@ "default-mobile.handlebars->11->311", "default-mobile.handlebars->11->340", "default.handlebars->41->373", - "default.handlebars->41->625" + "default.handlebars->41->627" ] }, { @@ -61283,7 +61301,7 @@ "zh-chs": "将英特尔AMT切换到管理员控制模式(ACM)。", "zh-cht": "將英特爾AMT切換到管理員控制模式(ACM)。", "xloc": [ - "default.handlebars->41->1924" + "default.handlebars->41->1927" ] }, { @@ -61303,8 +61321,8 @@ "ru": "Порт свитча подключен", "tr": "Bağlantı noktasını değiştir", "xloc": [ - "default.handlebars->41->942", - "default.handlebars->41->943" + "default.handlebars->41->946", + "default.handlebars->41->947" ] }, { @@ -61349,7 +61367,7 @@ "zh-chs": "将服务器设备名称同步到主机名称", "zh-cht": "將伺服器裝置名稱同步到主機名稱", "xloc": [ - "default.handlebars->41->2018" + "default.handlebars->41->2021" ] }, { @@ -61369,7 +61387,7 @@ "ru": "Синхронизировать имя устройства сервера с именем порта", "tr": "Sunucu cihaz adını bağlantı noktası adıyla senkronize et", "xloc": [ - "default.handlebars->41->2017" + "default.handlebars->41->2020" ] }, { @@ -61393,7 +61411,7 @@ "tr": "Sistem Tepsisi, Her zaman bağlı", "zh-chs": "系统托盘,始终连接", "xloc": [ - "default.handlebars->41->552" + "default.handlebars->41->554" ] }, { @@ -61417,7 +61435,7 @@ "tr": "Sistem Tepsisi, Kullanıcı isteği üzerine bağlanın", "zh-chs": "系统托盘,根据用户要求连接", "xloc": [ - "default.handlebars->41->551" + "default.handlebars->41->553" ] }, { @@ -61441,7 +61459,7 @@ "tr": "Sistem Tepsisi, Yalnızca Monitör", "zh-chs": "系统托盘,仅显示器", "xloc": [ - "default.handlebars->41->553" + "default.handlebars->41->555" ] }, { @@ -61466,7 +61484,7 @@ "zh-chs": "系统类型", "zh-cht": "系統類型", "xloc": [ - "default.handlebars->41->543" + "default.handlebars->41->545" ] }, { @@ -61535,7 +61553,7 @@ "zh-cht": "TCP路由", "xloc": [ "default-mobile.handlebars->11->220", - "default.handlebars->41->417" + "default.handlebars->41->419" ] }, { @@ -61664,7 +61682,7 @@ "zh-cht": "TLS", "xloc": [ "default-mobile.handlebars->11->299", - "default.handlebars->41->814" + "default.handlebars->41->816" ] }, { @@ -61689,8 +61707,8 @@ "zh-chs": "未设置TLS", "zh-cht": "未設置TLS", "xloc": [ - "default-mobile.handlebars->11->574", - "default.handlebars->41->1463" + "default-mobile.handlebars->11->573", + "default.handlebars->41->1466" ] }, { @@ -61716,8 +61734,8 @@ "zh-cht": "需要TLS加密", "xloc": [ "default-mobile.handlebars->11->390", - "default.handlebars->41->1139", - "default.handlebars->41->464" + "default.handlebars->41->1143", + "default.handlebars->41->466" ] }, { @@ -61744,7 +61762,7 @@ "xloc": [ "default-mobile.handlebars->11->415", "default-mobile.handlebars->dialog->3->dialog3->deskkeys->3", - "default.handlebars->41->1244" + "default.handlebars->41->1248" ] }, { @@ -61769,8 +61787,8 @@ "zh-chs": "标签1,标签2,标签3", "zh-cht": "標籤1,標籤2,標籤3", "xloc": [ - "default.handlebars->41->1202", - "default.handlebars->41->682" + "default.handlebars->41->1206", + "default.handlebars->41->684" ] }, { @@ -61823,10 +61841,10 @@ "default-mobile.handlebars->11->320", "default-mobile.handlebars->11->321", "default-mobile.handlebars->11->403", - "default.handlebars->41->1201", - "default.handlebars->41->681", - "default.handlebars->41->881", - "default.handlebars->41->882", + "default.handlebars->41->1205", + "default.handlebars->41->683", + "default.handlebars->41->883", + "default.handlebars->41->884", "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->7" ] }, @@ -61876,7 +61894,7 @@ "zh-chs": "泰米尔文", "zh-cht": "泰米爾文", "xloc": [ - "default.handlebars->41->1720" + "default.handlebars->41->1723" ] }, { @@ -61901,7 +61919,7 @@ "zh-chs": "塔塔尔族", "zh-cht": "塔塔爾族", "xloc": [ - "default.handlebars->41->1721" + "default.handlebars->41->1724" ] }, { @@ -61926,7 +61944,7 @@ "zh-chs": "泰卢加", "zh-cht": "泰盧加", "xloc": [ - "default.handlebars->41->1722" + "default.handlebars->41->1725" ] }, { @@ -61953,16 +61971,16 @@ "xloc": [ "default-mobile.handlebars->11->212", "default-mobile.handlebars->11->353", - "default.handlebars->41->1057", - "default.handlebars->41->1932", - "default.handlebars->41->2010", - "default.handlebars->41->2760", - "default.handlebars->41->2819", - "default.handlebars->41->2850", - "default.handlebars->41->2941", - "default.handlebars->41->409", - "default.handlebars->41->757", - "default.handlebars->41->970", + "default.handlebars->41->1061", + "default.handlebars->41->1935", + "default.handlebars->41->2013", + "default.handlebars->41->2763", + "default.handlebars->41->2822", + "default.handlebars->41->2853", + "default.handlebars->41->2944", + "default.handlebars->41->411", + "default.handlebars->41->759", + "default.handlebars->41->974", "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevTerminal", "default.handlebars->contextMenu->cxterminal", "sharing.handlebars->LeftSideToolBar" @@ -61989,9 +62007,9 @@ "tr": "Terminal + Dosyalar", "zh-chs": "终端 + 文件", "xloc": [ - "default.handlebars->41->1060", - "default.handlebars->41->1936", - "default.handlebars->41->974" + "default.handlebars->41->1064", + "default.handlebars->41->1939", + "default.handlebars->41->978" ] }, { @@ -62041,10 +62059,10 @@ "zh-chs": "终端通知", "zh-cht": "終端機通知", "xloc": [ - "default.handlebars->41->1888", - "default.handlebars->41->2537", - "default.handlebars->41->2639", - "default.handlebars->41->855" + "default.handlebars->41->1891", + "default.handlebars->41->2540", + "default.handlebars->41->2642", + "default.handlebars->41->857" ] }, { @@ -62069,10 +62087,10 @@ "zh-chs": "终端提示", "zh-cht": "終端機提示", "xloc": [ - "default.handlebars->41->1887", - "default.handlebars->41->2536", - "default.handlebars->41->2638", - "default.handlebars->41->854" + "default.handlebars->41->1890", + "default.handlebars->41->2539", + "default.handlebars->41->2641", + "default.handlebars->41->856" ] }, { @@ -62096,7 +62114,7 @@ "tr": "Terminal Oturumu", "zh-chs": "终端会话", "xloc": [ - "default.handlebars->41->2753" + "default.handlebars->41->2756" ] }, { @@ -62230,7 +62248,7 @@ "zh-chs": "泰国", "zh-cht": "泰國", "xloc": [ - "default.handlebars->41->1723" + "default.handlebars->41->1726" ] }, { @@ -62251,7 +62269,7 @@ "tr": "Cihaz kapalı", "xloc": [ "default-mobile.handlebars->11->253", - "default.handlebars->41->623" + "default.handlebars->41->625" ] }, { @@ -62387,7 +62405,7 @@ "zh-chs": "此计算机所属的设备组的名称", "zh-cht": "此電腦所屬的裝置群的名稱", "xloc": [ - "default.handlebars->41->784" + "default.handlebars->41->786" ] }, { @@ -62412,7 +62430,7 @@ "zh-chs": "此计算机所属的设备组的名称。", "zh-cht": "此電腦所屬的裝置群的名稱。", "xloc": [ - "default.handlebars->41->782" + "default.handlebars->41->784" ] }, { @@ -62437,8 +62455,8 @@ "zh-chs": "此计算机的在操作系统中已设置的名称", "zh-cht": "此電腦在操作系統中已設置的的名稱", "xloc": [ - "default.handlebars->41->785", - "default.handlebars->41->787" + "default.handlebars->41->787", + "default.handlebars->41->789" ] }, { @@ -62463,8 +62481,8 @@ "zh-chs": "目前没有任何通知", "zh-cht": "目前沒有任何通知", "xloc": [ - "default-mobile.handlebars->11->705", - "default.handlebars->41->2860" + "default-mobile.handlebars->11->704", + "default.handlebars->41->2863" ] }, { @@ -62488,8 +62506,8 @@ "tr": "Son girişten bu yana bu hesapta {0} başarısız giriş denemesi oldu.", "zh-chs": "自上次登录以来,此帐户已有 {0} 次登录尝试失败。", "xloc": [ - "default-mobile.handlebars->11->726", - "default.handlebars->41->2881" + "default-mobile.handlebars->11->725", + "default.handlebars->41->2884" ] }, { @@ -62586,7 +62604,7 @@ "zh-cht": "此帳戶無權建立新的裝置群。", "xloc": [ "default-mobile.handlebars->11->123", - "default.handlebars->41->1794" + "default.handlebars->41->1797" ] }, { @@ -62610,7 +62628,7 @@ "tr": "Bu aracının eski bir sertifika doğrulama mekanizması var, güncellemeyi düşünün.", "zh-chs": "此代理具有过时的证书验证机制,请考虑更新。", "xloc": [ - "default.handlebars->41->2322" + "default.handlebars->41->2325" ] }, { @@ -62634,7 +62652,7 @@ "tr": "Bu aracı güvenli olmayan tüneller kullanıyor, güncellemeyi düşünün.", "zh-chs": "此代理正在使用不安全的隧道,请考虑更新。", "xloc": [ - "default.handlebars->41->2323" + "default.handlebars->41->2326" ] }, { @@ -62659,7 +62677,7 @@ "zh-chs": "这是OS图形用户界面上的可执行档案。您需要'chmod + x meshagent'并运行此档案。", "zh-cht": "這是OS圖形用戶界面上的可執行檔案。你需要'chmod + x meshagent'並運行此檔案。", "xloc": [ - "default.handlebars->41->591" + "default.handlebars->41->593" ] }, { @@ -62705,10 +62723,10 @@ "tr": "Bu bir misafir paylaşım oturumu", "zh-chs": "这是嘉宾分享环节", "xloc": [ - "default.handlebars->41->1402", - "default.handlebars->41->2366", - "default.handlebars->41->2742", - "default.handlebars->41->2743" + "default.handlebars->41->1406", + "default.handlebars->41->2369", + "default.handlebars->41->2745", + "default.handlebars->41->2746" ] }, { @@ -62757,7 +62775,7 @@ "tr": "Bu eski bir aracı sürümüdür, güncellemeyi düşünün.", "zh-chs": "这是一个旧的代理版本,考虑更新。", "xloc": [ - "default.handlebars->41->2321" + "default.handlebars->41->2324" ] }, { @@ -62804,7 +62822,7 @@ "zh-chs": "这是推荐的策略。英特尔®AMT激活和管理是完全自动化的,服务器将尝试最大程度地利用硬件管理。", "zh-cht": "這是推薦的策略。英特爾®AMT激活和管理是完全自動化的,服務器將嘗試最大程度地利用硬件管理。", "xloc": [ - "default.handlebars->41->1991" + "default.handlebars->41->1994" ] }, { @@ -62855,7 +62873,7 @@ "zh-chs": "此政策不会影响采用ACM模式的英特尔®AMT的设备。", "zh-cht": "此政策不會影響採用ACM模式的Intel® AMT的裝置。", "xloc": [ - "default.handlebars->41->1988" + "default.handlebars->41->1991" ] }, { @@ -62979,7 +62997,7 @@ "zh-chs": "这会在此设备的事件日志中添加一个条目。", "zh-cht": "這會在此裝置的事件日誌中增加一個記錄。", "xloc": [ - "default.handlebars->41->1041" + "default.handlebars->41->1045" ] }, { @@ -63026,7 +63044,7 @@ "zh-chs": "这不会从服务器上删除该设备,但是该设备将不再能够连接到服务器。该设备的所有远程访问都将丢失。该设备必须连线,此命令才能起作用。", "zh-cht": "這不會從伺服器上刪除該裝置,但是該裝置將不再能夠連接到伺服器。該裝置的所有遠程訪問都將丟失。該設備必須連線,此命令才能起作用。", "xloc": [ - "default.handlebars->41->1146" + "default.handlebars->41->1150" ] }, { @@ -63051,7 +63069,7 @@ "zh-chs": "这不会从服务器上删除该设备,但是该设备将不再能够连接到服务器。该设备的所有远程访问都将丢失。该设备必须连线,此命令才能起作用。", "zh-cht": "這不會從伺服器上刪除該裝置,但是該裝置將不再能夠連接到伺服器。該裝置的所有遠程訪問都將丟失。該設備必須連線,此命令才能起作用。", "xloc": [ - "default.handlebars->41->1147" + "default.handlebars->41->1151" ] }, { @@ -63076,7 +63094,7 @@ "zh-chs": "蒂格雷", "zh-cht": "蒂格雷", "xloc": [ - "default.handlebars->41->1724" + "default.handlebars->41->1727" ] }, { @@ -63102,9 +63120,9 @@ "zh-cht": "時間", "xloc": [ "default-mobile.handlebars->11->360", - "default.handlebars->41->1098", - "default.handlebars->41->2798", - "default.handlebars->41->2803", + "default.handlebars->41->1102", + "default.handlebars->41->2801", + "default.handlebars->41->2806", "player.handlebars->3->17" ] }, @@ -63130,8 +63148,8 @@ "zh-chs": "时间范围", "zh-cht": "時間範圍", "xloc": [ - "default.handlebars->41->1086", - "default.handlebars->41->2799" + "default.handlebars->41->1090", + "default.handlebars->41->2802" ] }, { @@ -63156,7 +63174,7 @@ "zh-chs": "时间跨度", "zh-cht": "時間跨度", "xloc": [ - "default.handlebars->41->2370" + "default.handlebars->41->2373" ] }, { @@ -63181,8 +63199,8 @@ "zh-chs": "时间范围", "zh-cht": "時間範圍", "xloc": [ - "default.handlebars->41->1082", - "default.handlebars->41->2797" + "default.handlebars->41->1086", + "default.handlebars->41->2800" ] }, { @@ -63208,7 +63226,7 @@ "zh-cht": "超時", "xloc": [ "default-mobile.handlebars->11->409", - "default.handlebars->41->1207", + "default.handlebars->41->1211", "sharing.handlebars->11->31", "sharing.handlebars->11->9" ] @@ -63235,7 +63253,7 @@ "zh-chs": "标题", "zh-cht": "標題", "xloc": [ - "default.handlebars->41->687" + "default.handlebars->41->689" ] }, { @@ -63260,7 +63278,7 @@ "zh-chs": "要将计算机添加到\\\"{0}\\\",请运行以下命令。命令需要root凭证。", "zh-cht": "要將電腦新增到\\\"{0}\\\",請運行以下命令。命令需要root憑據。", "xloc": [ - "default.handlebars->41->565" + "default.handlebars->41->567" ] }, { @@ -63284,7 +63302,7 @@ "tr": "\\\"{0}\\\" grubuna bir mobil cihaz eklemek için MeshAgent uygulamasını indirin ve bu QR kodunu tarayın.", "zh-chs": "要将移动设备添加到组“{0}”,请下载 MeshAgent 应用程序并扫描此二维码。", "xloc": [ - "default.handlebars->41->573" + "default.handlebars->41->575" ] }, { @@ -63375,7 +63393,7 @@ "zh-chs": "要将新计算机添加到设备组“ {0} ”,请下载网状代理并安装该计算机以进行管理。这代理中已嵌入了服务器和设备组信息。", "zh-cht": "要將新電腦新增到裝置群“ {0} ”,請下載mesh agent並安裝該電腦以進行管理。這agent中已嵌入了伺服器和裝置群訊息。", "xloc": [ - "default.handlebars->41->554" + "default.handlebars->41->556" ] }, { @@ -63400,7 +63418,7 @@ "zh-chs": "要将新计算机添加到设备组“ {0} ”,请下载网状代理并安装该计算机以进行管理。该代理安装程序中已嵌入了服务器和设备组讯息。", "zh-cht": "要將新電腦新增到裝置群“ {0} ”,請下載mesh agent並安裝該電腦以進行管理。該代理安裝程序中已嵌入了伺服器和裝置群訊息。", "xloc": [ - "default.handlebars->41->569" + "default.handlebars->41->571" ] }, { @@ -63425,7 +63443,7 @@ "zh-chs": "要删除此帐户,请在下面的两个框中键入帐户密码,然后单击确定。", "zh-cht": "要刪除此帳戶,請在下面的兩個框中鍵入帳戶密碼,然後單擊確定。", "xloc": [ - "default.handlebars->41->1781" + "default.handlebars->41->1784" ] }, { @@ -63550,7 +63568,7 @@ "zh-chs": "要删除网格代理,请下载以下档案,运行并单击“卸载”。", "zh-cht": "要刪除mash agent,請下載以下檔案,運行該檔案,然後單擊“卸載”。", "xloc": [ - "default.handlebars->41->582" + "default.handlebars->41->584" ] }, { @@ -63575,7 +63593,7 @@ "zh-chs": "要删除网格代理,请运行以下命令。需要根凭证。", "zh-cht": "要刪除網格代理,請運行以下命令。需要root憑據。", "xloc": [ - "default.handlebars->41->589" + "default.handlebars->41->591" ] }, { @@ -63665,7 +63683,7 @@ "zh-chs": "吐司通知", "zh-cht": "吐司通知", "xloc": [ - "default.handlebars->41->685" + "default.handlebars->41->687" ] }, { @@ -63885,7 +63903,7 @@ "zh-chs": "切换远程桌面背景", "zh-cht": "切換遠程桌面背景", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -64056,7 +64074,7 @@ "tr": "Anahtar Adı", "zh-chs": "代币名称", "xloc": [ - "default.handlebars->41->1767" + "default.handlebars->41->1770" ] }, { @@ -64160,7 +64178,7 @@ "zh-chs": "主题", "zh-cht": "主題", "xloc": [ - "default.handlebars->41->1141" + "default.handlebars->41->1145" ] }, { @@ -64259,7 +64277,7 @@ "zh-chs": "用于通过此服务器连接到设备的流量路由器", "zh-cht": "用於通過此伺服器連接到裝置的流量路由器", "xloc": [ - "default.handlebars->41->921" + "default.handlebars->41->923" ] }, { @@ -64376,7 +64394,7 @@ "zh-chs": "尝试凭据", "xloc": [ "default-mobile.handlebars->11->304", - "default.handlebars->41->819" + "default.handlebars->41->821" ] }, { @@ -64401,7 +64419,7 @@ "zh-chs": "特松加", "zh-cht": "特松加", "xloc": [ - "default.handlebars->41->1725" + "default.handlebars->41->1728" ] }, { @@ -64426,7 +64444,7 @@ "zh-chs": "茨瓦纳", "zh-cht": "茨瓦納", "xloc": [ - "default.handlebars->41->1726" + "default.handlebars->41->1729" ] }, { @@ -64472,7 +64490,7 @@ "zh-chs": "土耳其", "zh-cht": "土耳其", "xloc": [ - "default.handlebars->41->1727" + "default.handlebars->41->1730" ] }, { @@ -64497,7 +64515,7 @@ "zh-chs": "土库曼文", "zh-cht": "土庫曼文", "xloc": [ - "default.handlebars->41->1728" + "default.handlebars->41->1731" ] }, { @@ -64519,8 +64537,8 @@ "xloc": [ "default-mobile.handlebars->11->333", "default-mobile.handlebars->11->334", - "default.handlebars->41->907", - "default.handlebars->41->908" + "default.handlebars->41->909", + "default.handlebars->41->910" ] }, { @@ -64540,7 +64558,7 @@ "ru": "Выключить.", "tr": "Kapat.", "xloc": [ - "default.handlebars->41->2337" + "default.handlebars->41->2340" ] }, { @@ -64562,8 +64580,8 @@ "xloc": [ "default-mobile.handlebars->11->335", "default-mobile.handlebars->11->336", - "default.handlebars->41->909", - "default.handlebars->41->910" + "default.handlebars->41->911", + "default.handlebars->41->912" ] }, { @@ -64583,7 +64601,7 @@ "ru": "Включить.", "tr": "Aç.", "xloc": [ - "default.handlebars->41->2336" + "default.handlebars->41->2339" ] }, { @@ -64655,14 +64673,14 @@ "zh-cht": "類型", "xloc": [ "default-mobile.handlebars->11->129", - "default-mobile.handlebars->11->631", - "default.handlebars->41->1063", - "default.handlebars->41->1297", - "default.handlebars->41->1805", - "default.handlebars->41->1868", - "default.handlebars->41->1963", - "default.handlebars->41->2784", - "default.handlebars->41->450", + "default-mobile.handlebars->11->630", + "default.handlebars->41->1067", + "default.handlebars->41->1301", + "default.handlebars->41->1808", + "default.handlebars->41->1871", + "default.handlebars->41->1966", + "default.handlebars->41->2787", + "default.handlebars->41->452", "default.handlebars->container->column_l->p11->deskarea0->deskarea4->5", "sharing.handlebars->p11->deskarea0->deskarea4->3" ] @@ -64689,7 +64707,7 @@ "zh-chs": "输入密钥名称,选择OTP框,然后按YubiKey™上的按钮。", "zh-cht": "輸入密鑰名稱,選擇OTP框,然後按YubiKey™上的按鈕。", "xloc": [ - "default.handlebars->41->1537" + "default.handlebars->41->1540" ] }, { @@ -64714,7 +64732,7 @@ "zh-chs": "输入要添加的密钥的名称。", "zh-cht": "輸入要新增的密鑰的名稱。", "xloc": [ - "default.handlebars->41->1534" + "default.handlebars->41->1537" ] }, { @@ -64761,7 +64779,7 @@ "zh-cht": "UDP路由", "xloc": [ "default-mobile.handlebars->11->224", - "default.handlebars->41->421" + "default.handlebars->41->423" ] }, { @@ -64807,7 +64825,7 @@ "zh-chs": "UTF8终端", "zh-cht": "UTF8終端", "xloc": [ - "default.handlebars->41->1335", + "default.handlebars->41->1339", "sharing.handlebars->11->33" ] }, @@ -64833,7 +64851,7 @@ "zh-chs": "乌克兰", "zh-cht": "烏克蘭", "xloc": [ - "default.handlebars->41->1729" + "default.handlebars->41->1732" ] }, { @@ -64954,8 +64972,8 @@ "zh-chs": "在验证电子邮件地址之前,无法访问此功能。这是密码恢复所必需的。转到“我的帐户”标签以更改和验证电子邮件地址。", "zh-cht": "在驗證電子郵件地址之前,無法訪問此功能。這是密碼恢復所必需的。轉到“我的帳戶”標籤以更改和驗證電子郵件地址。", "xloc": [ - "default.handlebars->41->1796", - "default.handlebars->41->773" + "default.handlebars->41->1799", + "default.handlebars->41->775" ] }, { @@ -64980,9 +64998,9 @@ "zh-chs": "在启用两因素身份验证之前,无法访问此功能。这是额外的安全性所必需的。转到“我的帐户”标签,然后查看“帐户安全性”部分。", "zh-cht": "在啟用兩因素身份驗證之前,無法訪問此功能。這是額外的安全性所必需的。轉到“我的帳戶”標籤,然後查看“帳戶安全性”部分。", "xloc": [ - "default.handlebars->41->1798", - "default.handlebars->41->2992", - "default.handlebars->41->775" + "default.handlebars->41->1801", + "default.handlebars->41->2995", + "default.handlebars->41->777" ] }, { @@ -65006,8 +65024,8 @@ "tr": "Bu modda kullanıcı eklenemiyor", "zh-chs": "无法在此模式下添加用户", "xloc": [ - "default-mobile.handlebars->11->722", - "default.handlebars->41->2877" + "default-mobile.handlebars->11->721", + "default.handlebars->41->2880" ] }, { @@ -65076,7 +65094,7 @@ "tr": "Ekran yakalanamadı", "zh-chs": "无法捕捉显示", "xloc": [ - "default.handlebars->41->1209" + "default.handlebars->41->1213" ] }, { @@ -65174,7 +65192,7 @@ "tr": "Herhangi bir cihaz içe aktarılamıyor.", "zh-chs": "无法导入任何设备。", "xloc": [ - "default.handlebars->41->1959" + "default.handlebars->41->1962" ] }, { @@ -65435,10 +65453,10 @@ "zh-cht": "卸載", "xloc": [ "agent-translations.json", - "default-mobile.handlebars->11->694", - "default.handlebars->41->1014", - "default.handlebars->41->1036", - "default.handlebars->41->2092" + "default-mobile.handlebars->11->693", + "default.handlebars->41->1018", + "default.handlebars->41->1040", + "default.handlebars->41->2095" ] }, { @@ -65463,9 +65481,9 @@ "zh-chs": "卸载代理", "zh-cht": "卸載代理", "xloc": [ - "default-mobile.handlebars->11->674", - "default.handlebars->41->1112", - "default.handlebars->41->644" + "default-mobile.handlebars->11->673", + "default.handlebars->41->1116", + "default.handlebars->41->646" ] }, { @@ -65490,7 +65508,7 @@ "zh-chs": "卸载代理/删除设备", "zh-cht": "卸載代理/刪除設備", "xloc": [ - "default.handlebars->41->2055" + "default.handlebars->41->2058" ] }, { @@ -65515,7 +65533,7 @@ "zh-chs": "卸载代理", "zh-cht": "卸載代理", "xloc": [ - "default.handlebars->41->1149" + "default.handlebars->41->1153" ] }, { @@ -65544,34 +65562,34 @@ "default-mobile.handlebars->11->37", "default-mobile.handlebars->11->44", "default-mobile.handlebars->11->45", - "default-mobile.handlebars->11->564", - "default-mobile.handlebars->11->571", + "default-mobile.handlebars->11->563", + "default-mobile.handlebars->11->570", "default-mobile.handlebars->11->6", - "default-mobile.handlebars->11->632", + "default-mobile.handlebars->11->631", "default.handlebars->41->13", - "default.handlebars->41->1453", - "default.handlebars->41->1460", + "default.handlebars->41->1456", + "default.handlebars->41->1463", "default.handlebars->41->179", "default.handlebars->41->180", "default.handlebars->41->181", "default.handlebars->41->183", "default.handlebars->41->185", - "default.handlebars->41->1851", - "default.handlebars->41->1852", - "default.handlebars->41->1869", - "default.handlebars->41->2735", - "default.handlebars->41->2752", - "default.handlebars->41->2759", - "default.handlebars->41->2829", - "default.handlebars->41->2830", - "default.handlebars->41->2831", + "default.handlebars->41->1854", + "default.handlebars->41->1855", + "default.handlebars->41->1872", + "default.handlebars->41->2738", + "default.handlebars->41->2755", + "default.handlebars->41->2762", "default.handlebars->41->2832", "default.handlebars->41->2833", - "default.handlebars->41->2853", + "default.handlebars->41->2834", + "default.handlebars->41->2835", + "default.handlebars->41->2836", + "default.handlebars->41->2856", "default.handlebars->41->44", "default.handlebars->41->51", "default.handlebars->41->52", - "default.handlebars->41->638" + "default.handlebars->41->640" ] }, { @@ -65596,8 +65614,8 @@ "zh-chs": "未知#{0}", "zh-cht": "未知#{0}", "xloc": [ - "default-mobile.handlebars->11->621", - "default.handlebars->41->1858" + "default-mobile.handlebars->11->620", + "default.handlebars->41->1861" ] }, { @@ -65622,7 +65640,7 @@ "zh-chs": "未知动作", "zh-cht": "未知動作", "xloc": [ - "default.handlebars->41->2910" + "default.handlebars->41->2913" ] }, { @@ -65647,8 +65665,8 @@ "zh-chs": "未知设备", "zh-cht": "未知裝置", "xloc": [ - "default.handlebars->41->2562", - "default.handlebars->41->2721" + "default.handlebars->41->2565", + "default.handlebars->41->2724" ] }, { @@ -65673,9 +65691,9 @@ "zh-chs": "未知设备组", "zh-cht": "未知裝置群", "xloc": [ - "default.handlebars->41->2556", - "default.handlebars->41->2709", - "default.handlebars->41->2914" + "default.handlebars->41->2559", + "default.handlebars->41->2712", + "default.handlebars->41->2917" ] }, { @@ -65700,7 +65718,7 @@ "zh-chs": "未知群组", "zh-cht": "未知群組", "xloc": [ - "default.handlebars->41->2906" + "default.handlebars->41->2909" ] }, { @@ -65726,7 +65744,7 @@ "zh-cht": "未知狀態", "xloc": [ "default-mobile.handlebars->11->293", - "default.handlebars->41->806" + "default.handlebars->41->808" ] }, { @@ -65746,8 +65764,8 @@ "ru": "Неизвестный пользователь", "tr": "Bilinmeyen kullanıcı", "xloc": [ - "default.handlebars->41->2834", - "default.handlebars->41->2854" + "default.handlebars->41->2837", + "default.handlebars->41->2857" ] }, { @@ -65772,7 +65790,7 @@ "zh-chs": "未知用户组", "zh-cht": "未知用戶群", "xloc": [ - "default.handlebars->41->2715" + "default.handlebars->41->2718" ] }, { @@ -65798,7 +65816,7 @@ "zh-cht": "未知版本和狀態", "xloc": [ "default-mobile.handlebars->11->295", - "default.handlebars->41->808" + "default.handlebars->41->810" ] }, { @@ -65823,7 +65841,7 @@ "zh-chs": "密码未知", "zh-cht": "密碼未知", "xloc": [ - "default.handlebars->41->1979" + "default.handlebars->41->1982" ] }, { @@ -65848,11 +65866,11 @@ "zh-chs": "无限制", "zh-cht": "無限", "xloc": [ - "default.handlebars->41->1079", - "default.handlebars->41->1750", + "default.handlebars->41->1083", + "default.handlebars->41->1753", "default.handlebars->41->265", - "default.handlebars->41->507", - "default.handlebars->41->521" + "default.handlebars->41->509", + "default.handlebars->41->523" ] }, { @@ -65877,7 +65895,7 @@ "zh-chs": "解锁帐户", "zh-cht": "解鎖帳戶", "xloc": [ - "default.handlebars->41->2425" + "default.handlebars->41->2428" ] }, { @@ -65901,7 +65919,7 @@ "tr": "Uzak kullanıcının fare ve klavyesinin kilidi açılsın mı?", "zh-chs": "解锁远程用户的鼠标和键盘?", "xloc": [ - "default.handlebars->41->1050" + "default.handlebars->41->1054" ] }, { @@ -65974,7 +65992,7 @@ "default-mobile.handlebars->11->426", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", - "default.handlebars->41->1255", + "default.handlebars->41->1259", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->dialog->dialogBody->dialog3->d3servermode->d3serveraction", @@ -66003,7 +66021,7 @@ "zh-chs": "最新", "zh-cht": "最新", "xloc": [ - "default.handlebars->41->2997" + "default.handlebars->41->3000" ] }, { @@ -66031,8 +66049,8 @@ "agent-translations.json", "default-mobile.handlebars->11->520", "default-mobile.handlebars->11->522", - "default.handlebars->41->835", - "default.handlebars->41->837" + "default.handlebars->41->837", + "default.handlebars->41->839" ] }, { @@ -66112,11 +66130,11 @@ "default-mobile.handlebars->11->486", "default-mobile.handlebars->11->504", "default-mobile.handlebars->11->507", - "default.handlebars->41->1371", - "default.handlebars->41->1397", - "default.handlebars->41->1400", - "default.handlebars->41->2194", - "default.handlebars->41->2202", + "default.handlebars->41->1375", + "default.handlebars->41->1401", + "default.handlebars->41->1404", + "default.handlebars->41->2197", + "default.handlebars->41->2205", "default.handlebars->container->dialog->dialogBody->dialog3->d3localmode->1", "sharing.handlebars->11->65", "sharing.handlebars->11->89", @@ -66145,8 +66163,8 @@ "zh-chs": "上载网格代理核心", "zh-cht": "上載mesh agent核心", "xloc": [ - "default-mobile.handlebars->11->620", - "default.handlebars->41->1510" + "default-mobile.handlebars->11->619", + "default.handlebars->41->1513" ] }, { @@ -66171,8 +66189,8 @@ "zh-chs": "上载核心档案", "zh-cht": "上載核心檔案", "xloc": [ - "default-mobile.handlebars->11->617", - "default.handlebars->41->1507" + "default-mobile.handlebars->11->616", + "default.handlebars->41->1510" ] }, { @@ -66197,10 +66215,10 @@ "zh-chs": "上载默认服务器核心", "zh-cht": "上載默認伺服器核心", "xloc": [ - "default-mobile.handlebars->11->613", - "default.handlebars->41->1503", - "default.handlebars->41->656", - "default.handlebars->41->700" + "default-mobile.handlebars->11->612", + "default.handlebars->41->1506", + "default.handlebars->41->658", + "default.handlebars->41->702" ] }, { @@ -66224,7 +66242,7 @@ "tr": "Seçili cihazlara varsayılan sunucu çekirdeği yüklensin mi?", "zh-chs": "在所选设备上上传默认服务器核心?", "xloc": [ - "default.handlebars->41->699" + "default.handlebars->41->701" ] }, { @@ -66249,7 +66267,7 @@ "zh-chs": "上传文件", "zh-cht": "上傳文件", "xloc": [ - "default.handlebars->41->652" + "default.handlebars->41->654" ] }, { @@ -66274,7 +66292,7 @@ "zh-chs": "将本地剪貼板上传到远程设备", "zh-cht": "將本地剪貼板上傳到遠程裝置", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" ] }, { @@ -66299,8 +66317,8 @@ "zh-chs": "上传恢复核心", "zh-cht": "上傳恢復核心", "xloc": [ - "default-mobile.handlebars->11->615", - "default.handlebars->41->1505" + "default-mobile.handlebars->11->614", + "default.handlebars->41->1508" ] }, { @@ -66325,7 +66343,7 @@ "zh-chs": "将所选文件上传到所有所选设备", "zh-cht": "將所選文件上傳到所有所選設備", "xloc": [ - "default.handlebars->41->689" + "default.handlebars->41->691" ] }, { @@ -66349,8 +66367,8 @@ "tr": "Küçük çekirdek yükleyin", "zh-chs": "上传小核", "xloc": [ - "default-mobile.handlebars->11->616", - "default.handlebars->41->1506" + "default-mobile.handlebars->11->615", + "default.handlebars->41->1509" ] }, { @@ -66376,8 +66394,8 @@ "zh-cht": "上傳將覆蓋1個檔案。繼續?", "xloc": [ "default-mobile.handlebars->11->505", - "default.handlebars->41->1398", - "default.handlebars->41->2203", + "default.handlebars->41->1402", + "default.handlebars->41->2206", "sharing.handlebars->11->90" ] }, @@ -66404,8 +66422,8 @@ "zh-cht": "上傳將覆蓋{0}個檔案。繼續?", "xloc": [ "default-mobile.handlebars->11->506", - "default.handlebars->41->1399", - "default.handlebars->41->2204", + "default.handlebars->41->1403", + "default.handlebars->41->2207", "sharing.handlebars->11->91" ] }, @@ -66453,7 +66471,7 @@ "zh-chs": "上传:“{0}”", "zh-cht": "上傳:“{0}”", "xloc": [ - "default.handlebars->41->2254" + "default.handlebars->41->2257" ] }, { @@ -66477,7 +66495,7 @@ "tr": "Yükleme: \\\"{0}\\\", Boyut: {1}", "zh-chs": "上传:\\\"{0}\\\",大小:{1}", "xloc": [ - "default.handlebars->41->2309" + "default.handlebars->41->2312" ] }, { @@ -66502,7 +66520,7 @@ "zh-chs": "上索布族", "zh-cht": "上索布族", "xloc": [ - "default.handlebars->41->1730" + "default.handlebars->41->1733" ] }, { @@ -66527,7 +66545,7 @@ "zh-chs": "乌尔都文", "zh-cht": "烏爾都文", "xloc": [ - "default.handlebars->41->1731" + "default.handlebars->41->1734" ] }, { @@ -66551,7 +66569,7 @@ "tr": "kullanım", "zh-chs": "用法", "xloc": [ - "default.handlebars->41->2960" + "default.handlebars->41->2963" ] }, { @@ -66651,7 +66669,7 @@ "tr": "Çıplak metal LAN aktivasyonu için kullanın.", "zh-chs": "用于裸机 LAN 激活。", "xloc": [ - "default.handlebars->41->474" + "default.handlebars->41->476" ] }, { @@ -66675,7 +66693,7 @@ "tr": "Yeni kimlik bilgilerini kullan", "zh-chs": "使用新凭据", "xloc": [ - "default.handlebars->41->1222", + "default.handlebars->41->1226", "mstsc.handlebars->main->1->3->1->dropdowndomain->1->d3coreMode->1" ] }, @@ -66700,7 +66718,7 @@ "tr": "Sunucu kimlik bilgilerini kullan", "zh-chs": "使用服务器凭据", "xloc": [ - "default.handlebars->41->1221", + "default.handlebars->41->1225", "mstsc.handlebars->main->1->3->1->dropdowndomain->1->d3coreMode->0" ] }, @@ -66751,8 +66769,8 @@ "zh-chs": "用过的", "zh-cht": "用過的", "xloc": [ - "default.handlebars->41->2900", - "default.handlebars->41->2902" + "default.handlebars->41->2903", + "default.handlebars->41->2905" ] }, { @@ -66778,16 +66796,16 @@ "zh-cht": "用戶", "xloc": [ "default.handlebars->41->117", - "default.handlebars->41->1928", - "default.handlebars->41->2377", - "default.handlebars->41->2407", - "default.handlebars->41->2552", - "default.handlebars->41->2778", - "default.handlebars->41->2785", - "default.handlebars->41->2789", - "default.handlebars->41->2806", + "default.handlebars->41->1931", + "default.handlebars->41->2380", + "default.handlebars->41->2410", + "default.handlebars->41->2555", + "default.handlebars->41->2781", + "default.handlebars->41->2788", + "default.handlebars->41->2792", + "default.handlebars->41->2809", "default.handlebars->41->351", - "default.handlebars->41->965" + "default.handlebars->41->969" ] }, { @@ -66812,7 +66830,7 @@ "zh-chs": "用户+档案", "zh-cht": "用戶+檔案", "xloc": [ - "default.handlebars->41->2408" + "default.handlebars->41->2411" ] }, { @@ -66837,11 +66855,11 @@ "zh-chs": "用户帐户导入", "zh-cht": "用戶帳戶導入", "xloc": [ - "default.handlebars->41->1958", - "default.handlebars->41->2443", - "default.handlebars->41->2444", + "default.handlebars->41->1961", "default.handlebars->41->2446", - "default.handlebars->41->2448" + "default.handlebars->41->2447", + "default.handlebars->41->2449", + "default.handlebars->41->2451" ] }, { @@ -66866,7 +66884,7 @@ "zh-chs": "用户帐户", "zh-cht": "用戶帳戶", "xloc": [ - "default.handlebars->41->2919" + "default.handlebars->41->2922" ] }, { @@ -66891,9 +66909,9 @@ "zh-chs": "用户授权", "zh-cht": "用戶授權", "xloc": [ - "default-mobile.handlebars->11->639", - "default.handlebars->41->1926", - "default.handlebars->41->961" + "default-mobile.handlebars->11->638", + "default.handlebars->41->1929", + "default.handlebars->41->965" ] }, { @@ -66918,12 +66936,12 @@ "zh-chs": "用户同意", "zh-cht": "用戶同意", "xloc": [ - "default.handlebars->41->1091", - "default.handlebars->41->1894", - "default.handlebars->41->2543", - "default.handlebars->41->2645", + "default.handlebars->41->1095", + "default.handlebars->41->1897", + "default.handlebars->41->2546", + "default.handlebars->41->2648", "default.handlebars->41->287", - "default.handlebars->41->861" + "default.handlebars->41->863" ] }, { @@ -66948,12 +66966,12 @@ "zh-chs": "用户组", "zh-cht": "用戶群", "xloc": [ - "default.handlebars->41->2030", - "default.handlebars->41->2031", - "default.handlebars->41->2513", - "default.handlebars->41->2717", - "default.handlebars->41->2738", - "default.handlebars->41->964" + "default.handlebars->41->2033", + "default.handlebars->41->2034", + "default.handlebars->41->2516", + "default.handlebars->41->2720", + "default.handlebars->41->2741", + "default.handlebars->41->968" ] }, { @@ -67003,7 +67021,7 @@ "zh-chs": "用户组成员", "zh-cht": "用戶群成員", "xloc": [ - "default.handlebars->41->2714" + "default.handlebars->41->2717" ] }, { @@ -67028,7 +67046,7 @@ "zh-chs": "用户识别码", "zh-cht": "用戶識別碼", "xloc": [ - "default-mobile.handlebars->11->699" + "default-mobile.handlebars->11->698" ] }, { @@ -67053,9 +67071,9 @@ "zh-chs": "用户识别码", "zh-cht": "用戶識別碼", "xloc": [ - "default.handlebars->41->2099", - "default.handlebars->41->2599", - "default.handlebars->41->2600" + "default.handlebars->41->2102", + "default.handlebars->41->2602", + "default.handlebars->41->2603" ] }, { @@ -67080,8 +67098,8 @@ "zh-chs": "用户标识符", "zh-cht": "用戶標識符", "xloc": [ - "default.handlebars->41->2028", - "default.handlebars->41->2583" + "default.handlebars->41->2031", + "default.handlebars->41->2586" ] }, { @@ -67130,7 +67148,7 @@ "zh-chs": "用户列表输出", "zh-cht": "用戶列表輸出", "xloc": [ - "default.handlebars->41->2455" + "default.handlebars->41->2458" ] }, { @@ -67141,7 +67159,7 @@ "pt-br": "Logins de usuários", "ru": "Входы пользователей", "xloc": [ - "default.handlebars->41->2783" + "default.handlebars->41->2786" ] }, { @@ -67166,8 +67184,8 @@ "zh-chs": "用户名", "zh-cht": "用戶名", "xloc": [ - "default-mobile.handlebars->11->698", - "default.handlebars->41->2098" + "default-mobile.handlebars->11->697", + "default.handlebars->41->2101" ] }, { @@ -67287,7 +67305,7 @@ "zh-chs": "用户节", "zh-cht": "用戶節", "xloc": [ - "default.handlebars->41->2951" + "default.handlebars->41->2954" ] }, { @@ -67336,7 +67354,7 @@ "ru": "Расход трафика пользователями", "tr": "Kullanıcı Trafiği Kullanımı", "xloc": [ - "default.handlebars->41->2782" + "default.handlebars->41->2785" ] }, { @@ -67435,8 +67453,8 @@ "tr": "Kullanıcı zaten var", "zh-chs": "用户已存在", "xloc": [ - "default-mobile.handlebars->11->721", - "default.handlebars->41->2876" + "default-mobile.handlebars->11->720", + "default.handlebars->41->2879" ] }, { @@ -67461,8 +67479,8 @@ "zh-chs": "用户浏览器值", "zh-cht": "用戶瀏覽器值", "xloc": [ - "default.handlebars->41->1742", - "default.handlebars->41->1744" + "default.handlebars->41->1745", + "default.handlebars->41->1747" ] }, { @@ -67487,7 +67505,7 @@ "zh-chs": "用户组已更改:{0}", "zh-cht": "用戶組已更改:{0}", "xloc": [ - "default.handlebars->41->2283" + "default.handlebars->41->2286" ] }, { @@ -67512,7 +67530,7 @@ "zh-chs": "已创建用户组:{0}", "zh-cht": "已創建用戶組:{0}", "xloc": [ - "default.handlebars->41->2273" + "default.handlebars->41->2276" ] }, { @@ -67537,7 +67555,7 @@ "zh-chs": "用户组成员身份已更改:{0}", "zh-cht": "用戶組成員身份已更改:{0}", "xloc": [ - "default.handlebars->41->2271" + "default.handlebars->41->2274" ] }, { @@ -67591,7 +67609,7 @@ "tr": "{0}, {1}, {2}'den kilitli hesapta kullanıcı oturum açma girişimi", "zh-chs": "来自 {0}、{1}、{2} 的锁定帐户的用户登录尝试", "xloc": [ - "default.handlebars->41->2313" + "default.handlebars->41->2316" ] }, { @@ -67615,7 +67633,7 @@ "tr": "{0}, {1}, {2}'den yanlış 2. faktörle kullanıcı oturum açma girişimi", "zh-chs": "来自 {0}、{1}、{2} 的第二个因素不正确的用户登录尝试", "xloc": [ - "default.handlebars->41->2312" + "default.handlebars->41->2315" ] }, { @@ -67635,7 +67653,7 @@ "ru": "Уведомления пользователей изменены", "tr": "Kullanıcı bildirimleri değişti", "xloc": [ - "default.handlebars->41->2334" + "default.handlebars->41->2337" ] }, { @@ -67659,8 +67677,8 @@ "tr": "{0} kullanıcısı bulunamadı.", "zh-chs": "未找到用户 {0}。", "xloc": [ - "default-mobile.handlebars->11->729", - "default.handlebars->41->2884" + "default-mobile.handlebars->11->728", + "default.handlebars->41->2887" ] }, { @@ -67712,17 +67730,17 @@ "xloc": [ "default-mobile.handlebars->11->386", "default-mobile.handlebars->11->454", - "default-mobile.handlebars->11->635", - "default.handlebars->41->1135", - "default.handlebars->41->1224", - "default.handlebars->41->1321", - "default.handlebars->41->1814", - "default.handlebars->41->1829", - "default.handlebars->41->1834", - "default.handlebars->41->1872", - "default.handlebars->41->2467", + "default-mobile.handlebars->11->634", + "default.handlebars->41->1139", + "default.handlebars->41->1228", + "default.handlebars->41->1325", + "default.handlebars->41->1817", + "default.handlebars->41->1832", + "default.handlebars->41->1837", + "default.handlebars->41->1875", + "default.handlebars->41->2470", "default.handlebars->41->316", - "default.handlebars->41->459", + "default.handlebars->41->461", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->0->1", "login2.handlebars->centralTable->1->0->logincell->loginpanel->loginpanelform->loginuserpassdiv->1->1->0->1", "mstsc.handlebars->main->1->3->1->rowusername->1->0", @@ -67754,8 +67772,8 @@ "xloc": [ "default-mobile.handlebars->11->449", "default-mobile.handlebars->11->452", - "default.handlebars->41->1316", - "default.handlebars->41->1319", + "default.handlebars->41->1320", + "default.handlebars->41->1323", "ssh.handlebars->3->10", "ssh.handlebars->3->7" ] @@ -67810,8 +67828,8 @@ "xloc": [ "default-mobile.handlebars->11->450", "default-mobile.handlebars->11->453", - "default.handlebars->41->1317", - "default.handlebars->41->1320", + "default.handlebars->41->1321", + "default.handlebars->41->1324", "ssh.handlebars->3->11", "ssh.handlebars->3->8" ] @@ -67868,9 +67886,9 @@ "zh-chs": "用户", "zh-cht": "用戶", "xloc": [ - "default.handlebars->41->2501", - "default.handlebars->41->2544", - "default.handlebars->41->2950", + "default.handlebars->41->2504", + "default.handlebars->41->2547", + "default.handlebars->41->2953", "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral" ] }, @@ -67896,7 +67914,7 @@ "zh-chs": "用户会话", "zh-cht": "用戶節", "xloc": [ - "default.handlebars->41->2923" + "default.handlebars->41->2926" ] }, { @@ -67920,7 +67938,7 @@ "tr": "Kullanıcılar Görünümü", "zh-chs": "用户视图", "xloc": [ - "default.handlebars->41->2441" + "default.handlebars->41->2444" ] }, { @@ -67944,8 +67962,8 @@ "tr": "{0} kullanıcıları bulunamadı.", "zh-chs": "未找到用户 {0}。", "xloc": [ - "default-mobile.handlebars->11->730", - "default.handlebars->41->2885" + "default-mobile.handlebars->11->729", + "default.handlebars->41->2888" ] }, { @@ -67969,7 +67987,7 @@ "tr": "VNC Bağlantısı", "zh-chs": "VNC 连接", "xloc": [ - "default.handlebars->41->746" + "default.handlebars->41->748" ] }, { @@ -67993,7 +68011,7 @@ "tr": "VNC uzak bağlantı noktası:", "zh-chs": "VNC远程连接端口:", "xloc": [ - "default.handlebars->41->745" + "default.handlebars->41->747" ] }, { @@ -68018,7 +68036,7 @@ "zh-chs": "VT100 +(F10 = ESC + [OY)", "zh-cht": "VT100 +(F10 = ESC + [OY)", "xloc": [ - "default.handlebars->41->1340", + "default.handlebars->41->1344", "sharing.handlebars->11->38" ] }, @@ -68069,7 +68087,7 @@ "zh-chs": "验证电邮", "zh-cht": "驗證電郵", "xloc": [ - "default.handlebars->41->2420" + "default.handlebars->41->2423" ] }, { @@ -68093,8 +68111,8 @@ "tr": "Doğrulama istisnası", "zh-chs": "验证异常", "xloc": [ - "default-mobile.handlebars->11->723", - "default.handlebars->41->2878" + "default-mobile.handlebars->11->722", + "default.handlebars->41->2881" ] }, { @@ -68119,7 +68137,7 @@ "zh-chs": "有效期", "zh-cht": "有效期", "xloc": [ - "default.handlebars->41->1080" + "default.handlebars->41->1084" ] }, { @@ -68143,7 +68161,7 @@ "tr": "Değer", "zh-chs": "价值", "xloc": [ - "default.handlebars->41->1271" + "default.handlebars->41->1275" ] }, { @@ -68168,7 +68186,7 @@ "zh-chs": "文达", "zh-cht": "文達", "xloc": [ - "default.handlebars->41->1732" + "default.handlebars->41->1735" ] }, { @@ -68193,10 +68211,10 @@ "zh-chs": "供应商", "zh-cht": "供應商", "xloc": [ - "default-mobile.handlebars->11->580", - "default-mobile.handlebars->11->583", - "default.handlebars->41->1469", - "default.handlebars->41->1472" + "default-mobile.handlebars->11->579", + "default-mobile.handlebars->11->582", + "default.handlebars->41->1472", + "default.handlebars->41->1475" ] }, { @@ -68247,7 +68265,7 @@ "zh-chs": "已验证", "zh-cht": "已驗證", "xloc": [ - "default.handlebars->41->2693" + "default.handlebars->41->2696" ] }, { @@ -68299,8 +68317,8 @@ "zh-cht": "驗證電話號碼", "xloc": [ "default-mobile.handlebars->11->94", - "default.handlebars->41->1514", - "default.handlebars->41->2416" + "default.handlebars->41->1517", + "default.handlebars->41->2419" ] }, { @@ -68325,7 +68343,7 @@ "zh-chs": "用户{0}的已验证电话号码", "zh-cht": "用戶{0}的已驗證電話號碼", "xloc": [ - "default.handlebars->41->2300" + "default.handlebars->41->2303" ] }, { @@ -68402,13 +68420,13 @@ "zh-cht": "版", "xloc": [ "default-mobile.handlebars->11->510", - "default-mobile.handlebars->11->563", - "default-mobile.handlebars->11->581", - "default-mobile.handlebars->11->586", - "default.handlebars->41->1406", - "default.handlebars->41->1452", - "default.handlebars->41->1470", - "default.handlebars->41->1475", + "default-mobile.handlebars->11->562", + "default-mobile.handlebars->11->580", + "default-mobile.handlebars->11->585", + "default.handlebars->41->1410", + "default.handlebars->41->1455", + "default.handlebars->41->1473", + "default.handlebars->41->1478", "default.handlebars->container->column_l->p42->p42tbl->1->0->5" ] }, @@ -68434,7 +68452,7 @@ "zh-chs": "版本不兼容,请先升级您的MeshCentral", "zh-cht": "版本不兼容,請先升級你的MeshCentral", "xloc": [ - "default.handlebars->41->2993" + "default.handlebars->41->2996" ] }, { @@ -68507,7 +68525,7 @@ "zh-chs": "颤动", "xloc": [ "default-mobile.handlebars->11->359", - "default.handlebars->41->1097" + "default.handlebars->41->1101" ] }, { @@ -68532,7 +68550,7 @@ "zh-chs": "越南文", "zh-cht": "越南文", "xloc": [ - "default.handlebars->41->1733" + "default.handlebars->41->1736" ] }, { @@ -68582,7 +68600,7 @@ "zh-chs": "查看所有事件", "zh-cht": "查看所有事件", "xloc": [ - "default.handlebars->41->2492" + "default.handlebars->41->2495" ] }, { @@ -68628,8 +68646,8 @@ "zh-chs": "查看变更日志", "zh-cht": "查看變更日誌", "xloc": [ - "default.handlebars->41->2996", - "default.handlebars->41->2998" + "default.handlebars->41->2999", + "default.handlebars->41->3001" ] }, { @@ -68654,7 +68672,7 @@ "zh-chs": "查看有关此设备的注释", "zh-cht": "查看有關此裝置的註釋", "xloc": [ - "default.handlebars->41->898" + "default.handlebars->41->900" ] }, { @@ -68679,7 +68697,7 @@ "zh-chs": "查看有关此设备组的注释", "zh-cht": "查看有關此裝置群的註釋", "xloc": [ - "default.handlebars->41->1913" + "default.handlebars->41->1916" ] }, { @@ -68704,7 +68722,7 @@ "zh-chs": "查看有关此用户的注释", "zh-cht": "查看有關此用戶的註釋", "xloc": [ - "default.handlebars->41->2655" + "default.handlebars->41->2658" ] }, { @@ -68753,7 +68771,7 @@ "tr": "Bu kullanıcı için önceki girişleri görüntüle", "zh-chs": "查看此用户以前的登录", "xloc": [ - "default.handlebars->41->2668" + "default.handlebars->41->2671" ] }, { @@ -68802,7 +68820,7 @@ "zh-chs": "沃拉普克", "zh-cht": "沃拉普克", "xloc": [ - "default.handlebars->41->1734" + "default.handlebars->41->1737" ] }, { @@ -69011,7 +69029,7 @@ "zh-cht": "正在等待用戶授予訪問權限...", "xloc": [ "default-mobile.handlebars->11->406", - "default.handlebars->41->1204", + "default.handlebars->41->1208", "sharing.handlebars->11->28", "sharing.handlebars->11->6" ] @@ -69038,8 +69056,8 @@ "zh-chs": "唤醒", "zh-cht": "喚醒", "xloc": [ - "default.handlebars->41->1010", - "default.handlebars->41->1032" + "default.handlebars->41->1014", + "default.handlebars->41->1036" ] }, { @@ -69064,10 +69082,10 @@ "zh-chs": "唤醒设备", "zh-cht": "喚醒裝置", "xloc": [ - "default-mobile.handlebars->11->670", - "default-mobile.handlebars->11->685", - "default.handlebars->41->2051", - "default.handlebars->41->2082" + "default-mobile.handlebars->11->669", + "default-mobile.handlebars->11->684", + "default.handlebars->41->2054", + "default.handlebars->41->2085" ] }, { @@ -69093,7 +69111,7 @@ "zh-cht": "喚醒", "xloc": [ "default-mobile.handlebars->11->364", - "default.handlebars->41->1102" + "default.handlebars->41->1106" ] }, { @@ -69118,7 +69136,7 @@ "zh-chs": "唤醒设备", "zh-cht": "喚醒裝置", "xloc": [ - "default.handlebars->41->645" + "default.handlebars->41->647" ] }, { @@ -69143,7 +69161,7 @@ "zh-chs": "瓦隆", "zh-cht": "瓦隆", "xloc": [ - "default.handlebars->41->1735" + "default.handlebars->41->1738" ] }, { @@ -69168,7 +69186,7 @@ "zh-chs": "弱", "zh-cht": "弱", "xloc": [ - "default.handlebars->41->1821" + "default.handlebars->41->1824" ] }, { @@ -69218,8 +69236,8 @@ "ru": "Веб Push-уведомления", "tr": "Web Sayfası Bildirimleri", "xloc": [ - "default.handlebars->41->2128", - "default.handlebars->41->991" + "default.handlebars->41->2131", + "default.handlebars->41->995" ] }, { @@ -69238,7 +69256,7 @@ "ru": "Web Power Switch 7", "tr": "Web Güç Anahtarı 7", "xloc": [ - "default.handlebars->41->1812" + "default.handlebars->41->1815" ] }, { @@ -69263,8 +69281,8 @@ "zh-chs": "网络服务器", "zh-cht": "網絡伺服器", "xloc": [ - "default.handlebars->41->2976", - "default.handlebars->41->2977" + "default.handlebars->41->2979", + "default.handlebars->41->2980" ] }, { @@ -69288,7 +69306,7 @@ "tr": "Web Sunucusu HTTP Başlıkları", "zh-chs": "Web 服务器 HTTP 标头", "xloc": [ - "default.handlebars->41->2980" + "default.handlebars->41->2983" ] }, { @@ -69313,7 +69331,7 @@ "zh-chs": "Web服务器请求", "zh-cht": "Web伺服器請求", "xloc": [ - "default.handlebars->41->2978" + "default.handlebars->41->2981" ] }, { @@ -69338,7 +69356,7 @@ "zh-chs": "Web套接字中继", "zh-cht": "Web插座中繼", "xloc": [ - "default.handlebars->41->2979" + "default.handlebars->41->2982" ] }, { @@ -69363,8 +69381,8 @@ "zh-chs": "网络RDP", "zh-cht": "網絡RDP", "xloc": [ - "default.handlebars->41->2825", - "default.handlebars->41->935", + "default.handlebars->41->2828", + "default.handlebars->41->939", "default.handlebars->contextMenu->cxwebrdp" ] }, @@ -69384,7 +69402,7 @@ "ru": "Web-SFTP", "tr": "Web-SFTP", "xloc": [ - "default.handlebars->41->2827" + "default.handlebars->41->2830" ] }, { @@ -69408,8 +69426,8 @@ "tr": "Web-SSH", "zh-chs": "网络SSH", "xloc": [ - "default.handlebars->41->2826", - "default.handlebars->41->937", + "default.handlebars->41->2829", + "default.handlebars->41->941", "default.handlebars->contextMenu->cxwebssh" ] }, @@ -69434,8 +69452,8 @@ "tr": "Web-VNC", "zh-chs": "网络VNC", "xloc": [ - "default.handlebars->41->2828", - "default.handlebars->41->933", + "default.handlebars->41->2831", + "default.handlebars->41->937", "default.handlebars->contextMenu->cxwebvnc" ] }, @@ -69460,7 +69478,7 @@ "tr": "WebRDP", "zh-chs": "网络RDP", "xloc": [ - "default.handlebars->41->2944" + "default.handlebars->41->2947" ] }, { @@ -69484,7 +69502,7 @@ "tr": "WebSSH", "zh-chs": "网络SSH", "xloc": [ - "default.handlebars->41->2945" + "default.handlebars->41->2948" ] }, { @@ -69528,7 +69546,7 @@ "tr": "WebVNC", "zh-chs": "网络VNC", "xloc": [ - "default.handlebars->41->2946" + "default.handlebars->41->2949" ] }, { @@ -69625,7 +69643,7 @@ "zh-chs": "威尔士文", "zh-cht": "威爾士文", "xloc": [ - "default.handlebars->41->1736" + "default.handlebars->41->1739" ] }, { @@ -69650,7 +69668,7 @@ "zh-chs": "启用后,任何人都可以使用邀请代码通过以下公共连结将设备加入该设备组:", "zh-cht": "啟用後,任何人都可以使用邀請代碼通過以下公共鏈結將裝置加入該裝置群:", "xloc": [ - "default.handlebars->41->2107" + "default.handlebars->41->2110" ] }, { @@ -69676,7 +69694,7 @@ "zh-cht": "啟用後,每次登入時,你都可以選擇向電郵帳戶接收登入保安編碼,以提高安全性。", "xloc": [ "default-mobile.handlebars->11->100", - "default.handlebars->41->1521" + "default.handlebars->41->1524" ] }, { @@ -69701,7 +69719,7 @@ "zh-chs": "选择此策略时,此服务器不管理英特尔®AMT。 仍然可以通过手动激活和配置Intel AMT来使用它。", "zh-cht": "選擇此策略時,此服務器不管理英特爾®AMT。 仍然可以通過手動激活和配置Intel AMT來使用它。", "xloc": [ - "default.handlebars->41->1989" + "default.handlebars->41->1992" ] }, { @@ -69748,7 +69766,7 @@ "zh-chs": "选择此策略后,将禁用处于客户端控制模式(CCM)的所有英特尔®AMT。 其他设备将清除CIRA,并且仍然可以手动进行管理。", "zh-cht": "選擇此策略後,將禁用處於客戶端控制模式(CCM)的所有英特爾®AMT。 其他設備將清除CIRA,並且仍然可以手動進行管理。", "xloc": [ - "default.handlebars->41->1990" + "default.handlebars->41->1993" ] }, { @@ -69773,7 +69791,7 @@ "zh-chs": "下次登录时将更改。", "zh-cht": "下次登入時將更改。", "xloc": [ - "default.handlebars->41->2625" + "default.handlebars->41->2628" ] }, { @@ -69801,8 +69819,8 @@ "default-mobile.handlebars->11->433", "default-mobile.handlebars->11->437", "default-mobile.handlebars->dialog->3->dialog3->deskkeys->5", - "default.handlebars->41->1262", "default.handlebars->41->1266", + "default.handlebars->41->1270", "sharing.handlebars->p11->deskarea0->deskarea4->3->deskkeys->3" ] }, @@ -70008,7 +70026,7 @@ "zh-chs": "Win32可执行档案", "zh-cht": "Win32可執行檔案", "xloc": [ - "default.handlebars->41->1163" + "default.handlebars->41->1167" ] }, { @@ -70101,9 +70119,9 @@ "zh-cht": "視窗", "xloc": [ "default-mobile.handlebars->11->283", - "default.handlebars->41->534", + "default.handlebars->41->536", "default.handlebars->41->55", - "default.handlebars->41->796" + "default.handlebars->41->798" ] }, { @@ -70128,8 +70146,8 @@ "zh-chs": "Windows(.exe)", "zh-cht": "Windows(.exe)", "xloc": [ - "default.handlebars->41->557", - "default.handlebars->41->585" + "default.handlebars->41->559", + "default.handlebars->41->587" ] }, { @@ -70154,7 +70172,7 @@ "zh-chs": "Windows(32位)", "zh-cht": "Windows(32位)", "xloc": [ - "default.handlebars->41->1169" + "default.handlebars->41->1173" ] }, { @@ -70179,7 +70197,7 @@ "zh-chs": "Windows(64位)", "zh-cht": "Windows(64位)", "xloc": [ - "default.handlebars->41->1168" + "default.handlebars->41->1172" ] }, { @@ -70203,7 +70221,7 @@ "tr": "Windows (RDP)", "zh-chs": "视窗 (RDP)", "xloc": [ - "default.handlebars->41->451" + "default.handlebars->41->453" ] }, { @@ -70228,7 +70246,7 @@ "zh-chs": "Windows(卸载)", "zh-cht": "Windows(卸載)", "xloc": [ - "default.handlebars->41->540" + "default.handlebars->41->542" ] }, { @@ -70407,8 +70425,8 @@ "zh-chs": "Windows命令提示", "zh-cht": "Windows命令提示", "xloc": [ - "default.handlebars->41->1117", - "default.handlebars->41->669" + "default.handlebars->41->1121", + "default.handlebars->41->671" ] }, { @@ -70419,8 +70437,8 @@ "pt-br": "MeshAgent Windows", "ru": "MeshAgent для Windows ", "xloc": [ - "default.handlebars->41->2112", - "default.handlebars->41->524" + "default.handlebars->41->2115", + "default.handlebars->41->526" ] }, { @@ -70497,7 +70515,7 @@ "zh-chs": "Windows路径", "zh-cht": "Windows路徑", "xloc": [ - "default.handlebars->41->690" + "default.handlebars->41->692" ] }, { @@ -70522,8 +70540,8 @@ "zh-chs": "Windows PowerShell", "zh-cht": "Windows PowerShell", "xloc": [ - "default.handlebars->41->1118", - "default.handlebars->41->670" + "default.handlebars->41->1122", + "default.handlebars->41->672" ] }, { @@ -70548,7 +70566,7 @@ "zh-chs": "视窗安全", "xloc": [ "default-mobile.handlebars->11->528", - "default.handlebars->41->843" + "default.handlebars->41->845" ] }, { @@ -70573,7 +70591,7 @@ "zh-chs": "仅Windows", "zh-cht": "僅Windows", "xloc": [ - "default.handlebars->41->497" + "default.handlebars->41->499" ] }, { @@ -70598,8 +70616,8 @@ "zh-chs": "Windows x64(.exe)", "zh-cht": "Windows x64(.exe)", "xloc": [ - "default.handlebars->41->561", - "default.handlebars->41->588" + "default.handlebars->41->563", + "default.handlebars->41->590" ] }, { @@ -70609,7 +70627,7 @@ "ru": "Рабочий каталог", "fr": "Répertoire de travail", "xloc": [ - "default.handlebars->41->1228" + "default.handlebars->41->1232" ] }, { @@ -70683,7 +70701,7 @@ "zh-chs": "换行:关", "zh-cht": "换行:關", "xloc": [ - "default.handlebars->41->1390", + "default.handlebars->41->1394", "sharing.handlebars->11->84" ] }, @@ -70709,7 +70727,7 @@ "zh-chs": "换行:开", "zh-cht": "换行:開", "xloc": [ - "default.handlebars->41->1389", + "default.handlebars->41->1393", "sharing.handlebars->11->83" ] }, @@ -70735,7 +70753,7 @@ "zh-chs": "为此设备写一个事件", "zh-cht": "為此裝置寫一個事件", "xloc": [ - "default.handlebars->41->900" + "default.handlebars->41->902" ] }, { @@ -70810,7 +70828,7 @@ "zh-chs": "XTerm", "zh-cht": "XTerm", "xloc": [ - "default.handlebars->41->924" + "default.handlebars->41->926" ] }, { @@ -70835,7 +70853,7 @@ "zh-chs": "科萨", "zh-cht": "科薩", "xloc": [ - "default.handlebars->41->1737" + "default.handlebars->41->1740" ] }, { @@ -70860,7 +70878,7 @@ "zh-chs": "意第绪文", "zh-cht": "意第緒文", "xloc": [ - "default.handlebars->41->1738" + "default.handlebars->41->1741" ] }, { @@ -71033,7 +71051,7 @@ "zh-chs": "YubiKey™ OTP", "zh-cht": "YubiKey™OTP", "xloc": [ - "default.handlebars->41->1540" + "default.handlebars->41->1543" ] }, { @@ -71084,7 +71102,7 @@ "zh-chs": "邮编档案名", "zh-cht": "郵編檔案名", "xloc": [ - "default.handlebars->41->1374", + "default.handlebars->41->1378", "sharing.handlebars->11->68" ] }, @@ -71110,7 +71128,7 @@ "zh-chs": "缩放至适合范围", "zh-cht": "縮放至適合範圍", "xloc": [ - "default.handlebars->41->762" + "default.handlebars->41->764" ] }, { @@ -71135,8 +71153,8 @@ "zh-chs": "放大到一定程度", "zh-cht": "放大到一定程度", "xloc": [ - "default.handlebars->41->759", - "default.handlebars->41->765" + "default.handlebars->41->761", + "default.handlebars->41->767" ] }, { @@ -71161,8 +71179,8 @@ "zh-chs": "缩小到一定程度", "zh-cht": "縮小到一定程度", "xloc": [ - "default.handlebars->41->760", - "default.handlebars->41->766" + "default.handlebars->41->762", + "default.handlebars->41->768" ] }, { @@ -71187,7 +71205,7 @@ "zh-chs": "祖鲁族", "zh-cht": "祖魯族", "xloc": [ - "default.handlebars->41->1739" + "default.handlebars->41->1742" ] }, { @@ -71605,7 +71623,7 @@ "zh-chs": "\\\\'", "zh-cht": "\\\\'", "xloc": [ - "default.handlebars->41->2994" + "default.handlebars->41->2997" ] }, { @@ -71632,8 +71650,8 @@ "xloc": [ "default-mobile.handlebars->11->180", "default-mobile.handlebars->11->181", - "default.handlebars->41->733", - "default.handlebars->41->734" + "default.handlebars->41->735", + "default.handlebars->41->736" ] }, { @@ -71685,7 +71703,7 @@ "zh-chs": "管理员", "zh-cht": "管理員", "xloc": [ - "default.handlebars->41->460" + "default.handlebars->41->462" ] }, { @@ -71711,8 +71729,8 @@ "xloc": [ "default-mobile.handlebars->11->184", "default-mobile.handlebars->11->185", - "default.handlebars->41->737", - "default.handlebars->41->738" + "default.handlebars->41->739", + "default.handlebars->41->740" ] }, { @@ -71736,7 +71754,7 @@ "tr": "ve", "zh-chs": "和", "xloc": [ - "default.handlebars->41->715" + "default.handlebars->41->717" ] }, { @@ -71814,8 +71832,8 @@ "xloc": [ "default-mobile.handlebars->11->178", "default-mobile.handlebars->11->179", - "default.handlebars->41->731", - "default.handlebars->41->732" + "default.handlebars->41->733", + "default.handlebars->41->734" ] }, { @@ -71876,7 +71894,7 @@ "zh-chs": "取消帮助", "zh-cht": "取消幫助", "xloc": [ - "default.handlebars->41->397" + "default.handlebars->41->399" ] }, { @@ -72012,8 +72030,8 @@ "tr": "bilgisayar listesi.json", "zh-chs": "计算机列表.json", "xloc": [ - "default.handlebars->41->708", - "default.handlebars->41->713" + "default.handlebars->41->710", + "default.handlebars->41->715" ] }, { @@ -72038,8 +72056,8 @@ "zh-chs": "console.txt", "zh-cht": "console.txt", "xloc": [ - "default-mobile.handlebars->11->610", - "default.handlebars->41->1500" + "default-mobile.handlebars->11->609", + "default.handlebars->41->1503" ] }, { @@ -72065,7 +72083,7 @@ "zh-cht": "複製", "xloc": [ "default-mobile.handlebars->11->161", - "default.handlebars->41->2199" + "default.handlebars->41->2202" ] }, { @@ -72114,8 +72132,8 @@ "tr": "açıklama:", "zh-chs": "描述:", "xloc": [ - "default.handlebars->41->739", - "default.handlebars->41->740" + "default.handlebars->41->741", + "default.handlebars->41->742" ] }, { @@ -72164,8 +72182,8 @@ "zh-chs": "devicelist.csv", "zh-cht": "devicelist.csv", "xloc": [ - "default.handlebars->41->704", - "default.handlebars->41->712" + "default.handlebars->41->706", + "default.handlebars->41->714" ] }, { @@ -72190,8 +72208,8 @@ "zh-chs": "devicelist.json", "zh-cht": "devicelist.json", "xloc": [ - "default.handlebars->41->706", - "default.handlebars->41->714" + "default.handlebars->41->708", + "default.handlebars->41->716" ] }, { @@ -72286,8 +72304,8 @@ "zh-chs": "eventslist.csv", "zh-cht": "eventslist.csv", "xloc": [ - "default.handlebars->41->2384", - "default.handlebars->41->2389" + "default.handlebars->41->2387", + "default.handlebars->41->2392" ] }, { @@ -72312,8 +72330,8 @@ "zh-chs": "eventslist.json", "zh-cht": "eventslist.json", "xloc": [ - "default.handlebars->41->2386", - "default.handlebars->41->2390" + "default.handlebars->41->2389", + "default.handlebars->41->2393" ] }, { @@ -72338,7 +72356,7 @@ "zh-chs": "example@email.com", "zh-cht": "example@email.com", "xloc": [ - "default.handlebars->41->493" + "default.handlebars->41->495" ] }, { @@ -72388,8 +72406,8 @@ "zh-chs": "免费", "zh-cht": "免費", "xloc": [ - "default.handlebars->41->2931", - "default.handlebars->41->2934" + "default.handlebars->41->2934", + "default.handlebars->41->2937" ] }, { @@ -72416,8 +72434,8 @@ "xloc": [ "default-mobile.handlebars->11->172", "default-mobile.handlebars->11->173", - "default.handlebars->41->725", - "default.handlebars->41->726" + "default.handlebars->41->727", + "default.handlebars->41->728" ] }, { @@ -72444,8 +72462,8 @@ "xloc": [ "default-mobile.handlebars->11->170", "default-mobile.handlebars->11->171", - "default.handlebars->41->723", - "default.handlebars->41->724" + "default.handlebars->41->725", + "default.handlebars->41->726" ] }, { @@ -72661,7 +72679,7 @@ "ru": "id, name, email, creation, lastlogin, groups, authfactors, siteadmin, useradmin, locked", "fr": "id, nom, email, creation, derniereconnexion, groupes, authentification, siteadmin, useradmin, verrouillé", "xloc": [ - "default.handlebars->41->2456" + "default.handlebars->41->2459" ] }, { @@ -72728,7 +72746,7 @@ "tr": "id, ad, rname, ana bilgisayar, simge, ip, osdesc, durum, grup adı, bağlantı, pwr, av, güncelleme, güvenlik duvarı, avdetails", "zh-chs": "id、名称、rname、主机、图标、ip、osdesc、状态、组名、conn、pwr、av、更新、防火墙、avdetails", "xloc": [ - "default.handlebars->41->711" + "default.handlebars->41->713" ] }, { @@ -72776,8 +72794,8 @@ "xloc": [ "default-mobile.handlebars->11->168", "default-mobile.handlebars->11->169", - "default.handlebars->41->721", - "default.handlebars->41->722" + "default.handlebars->41->723", + "default.handlebars->41->724" ] }, { @@ -72877,7 +72895,7 @@ "zh-chs": "k max,默认为空白", "zh-cht": "k max,默認為空白", "xloc": [ - "default.handlebars->41->2484" + "default.handlebars->41->2487" ] }, { @@ -72975,7 +72993,7 @@ "zh-cht": "macOS", "xloc": [ "default-mobile.handlebars->11->287", - "default.handlebars->41->800" + "default.handlebars->41->802" ] }, { @@ -73021,7 +73039,7 @@ "tr": "macOS (SSH/SCP/VNC)", "zh-chs": "macOS (SSH/SCP/VNC)", "xloc": [ - "default.handlebars->41->453" + "default.handlebars->41->455" ] }, { @@ -73090,7 +73108,7 @@ "zh-chs": "macOS ARM (64位)", "zh-cht": "macOS ARM (64位)", "xloc": [ - "default.handlebars->41->1173" + "default.handlebars->41->1177" ] }, { @@ -73115,7 +73133,7 @@ "zh-chs": "macOS x86 (64位)", "zh-cht": "macOS x86 (64位)", "xloc": [ - "default.handlebars->41->1172" + "default.handlebars->41->1176" ] }, { @@ -73192,7 +73210,7 @@ "zh-chs": "MeshAgent", "zh-cht": "MeshAgent", "xloc": [ - "default.handlebars->41->593" + "default.handlebars->41->595" ] }, { @@ -73218,7 +73236,7 @@ "zh-cht": "移動", "xloc": [ "default-mobile.handlebars->11->162", - "default.handlebars->41->2200" + "default.handlebars->41->2203" ] }, { @@ -73378,7 +73396,7 @@ "tr": "veya", "zh-chs": "或者", "xloc": [ - "default.handlebars->41->716" + "default.handlebars->41->718" ] }, { @@ -73404,8 +73422,8 @@ "xloc": [ "default-mobile.handlebars->11->182", "default-mobile.handlebars->11->183", - "default.handlebars->41->735", - "default.handlebars->41->736" + "default.handlebars->41->737", + "default.handlebars->41->738" ] }, { @@ -73489,7 +73507,7 @@ "zh-chs": "servererrors.txt", "zh-cht": "servererrors.txt", "xloc": [ - "default.handlebars->41->1855" + "default.handlebars->41->1858" ] }, { @@ -73514,7 +73532,7 @@ "zh-chs": "servertrace.csv", "zh-cht": "servertrace.csv", "xloc": [ - "default.handlebars->41->2988" + "default.handlebars->41->2991" ] }, { @@ -73562,8 +73580,8 @@ "xloc": [ "default-mobile.handlebars->11->176", "default-mobile.handlebars->11->177", - "default.handlebars->41->729", - "default.handlebars->41->730" + "default.handlebars->41->731", + "default.handlebars->41->732" ] }, { @@ -73590,8 +73608,8 @@ "xloc": [ "default-mobile.handlebars->11->174", "default-mobile.handlebars->11->175", - "default.handlebars->41->727", - "default.handlebars->41->728" + "default.handlebars->41->729", + "default.handlebars->41->730" ] }, { @@ -73616,7 +73634,7 @@ "zh-chs": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss", "zh-cht": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss", "xloc": [ - "default.handlebars->41->2963" + "default.handlebars->41->2966" ] }, { @@ -73641,7 +73659,7 @@ "zh-chs": "时间,来源,信息", "zh-cht": "時間,來源,訊息", "xloc": [ - "default.handlebars->41->2987" + "default.handlebars->41->2990" ] }, { @@ -73688,8 +73706,8 @@ "zh-chs": "总计", "zh-cht": "總", "xloc": [ - "default.handlebars->41->2932", - "default.handlebars->41->2935" + "default.handlebars->41->2935", + "default.handlebars->41->2938" ] }, { @@ -73740,8 +73758,8 @@ "xloc": [ "default-mobile.handlebars->11->166", "default-mobile.handlebars->11->167", - "default.handlebars->41->719", - "default.handlebars->41->720" + "default.handlebars->41->721", + "default.handlebars->41->722" ] }, { @@ -73790,8 +73808,8 @@ "xloc": [ "default-mobile.handlebars->11->164", "default-mobile.handlebars->11->165", - "default.handlebars->41->717", - "default.handlebars->41->718" + "default.handlebars->41->719", + "default.handlebars->41->720" ] }, { @@ -73816,8 +73834,8 @@ "zh-chs": "userlist.csv", "zh-cht": "userlist.csv", "xloc": [ - "default.handlebars->41->2452", - "default.handlebars->41->2457" + "default.handlebars->41->2455", + "default.handlebars->41->2460" ] }, { @@ -73842,8 +73860,8 @@ "zh-chs": "userlist.json", "zh-cht": "userlist.json", "xloc": [ - "default.handlebars->41->2454", - "default.handlebars->41->2458" + "default.handlebars->41->2457", + "default.handlebars->41->2461" ] }, { @@ -73868,7 +73886,7 @@ "zh-chs": "utc,时间,类型,指令,用户,设备,消息", "zh-cht": "utc,時間,類型,指令,用戶,裝置,消息", "xloc": [ - "default.handlebars->41->2388" + "default.handlebars->41->2391" ] }, { @@ -73948,11 +73966,7 @@ "sv": "{0}", "tr": "{0}", "zh-chs": "{0}", - "zh-cht": "{0}", - "xloc": [ - "default-mobile.handlebars->11->557", - "default-mobile.handlebars->11->561" - ] + "zh-cht": "{0}" }, { "cs": "{0} - Instalace agenta", @@ -74085,8 +74099,8 @@ "zh-chs": "{0} Gb", "zh-cht": "{0} Gb", "xloc": [ - "default.handlebars->41->2174", - "default.handlebars->41->2179" + "default.handlebars->41->2177", + "default.handlebars->41->2182" ] }, { @@ -74132,9 +74146,9 @@ "zh-chs": "{0} Kb", "zh-cht": "{0} Kb", "xloc": [ - "default.handlebars->41->2172", - "default.handlebars->41->2177", - "default.handlebars->41->2751" + "default.handlebars->41->2175", + "default.handlebars->41->2180", + "default.handlebars->41->2754" ] }, { @@ -74180,12 +74194,12 @@ "zh-chs": "{0} Mb", "zh-cht": "{0} Mb", "xloc": [ - "default-mobile.handlebars->11->594", - "default-mobile.handlebars->11->599", - "default.handlebars->41->1483", - "default.handlebars->41->1488", - "default.handlebars->41->2173", - "default.handlebars->41->2178" + "default-mobile.handlebars->11->593", + "default-mobile.handlebars->11->598", + "default.handlebars->41->1486", + "default.handlebars->41->1491", + "default.handlebars->41->2176", + "default.handlebars->41->2181" ] }, { @@ -74210,8 +74224,8 @@ "zh-chs": "{0} Mb,{1} Mhz", "zh-cht": "{0} Mb,{1} Mhz", "xloc": [ - "default-mobile.handlebars->11->592", - "default.handlebars->41->1481" + "default-mobile.handlebars->11->591", + "default.handlebars->41->1484" ] }, { @@ -74257,7 +74271,7 @@ "zh-chs": "{0}个活跃会话", "zh-cht": "{0}個活躍節", "xloc": [ - "default.handlebars->41->2671" + "default.handlebars->41->2674" ] }, { @@ -74282,8 +74296,8 @@ "zh-chs": "{0} b", "zh-cht": "{0} b", "xloc": [ - "default.handlebars->41->2171", - "default.handlebars->41->2176" + "default.handlebars->41->2174", + "default.handlebars->41->2179" ] }, { @@ -74309,8 +74323,8 @@ "zh-cht": "{0}個字節", "xloc": [ "default-mobile.handlebars->11->150", - "default.handlebars->41->2187", - "default.handlebars->41->2772", + "default.handlebars->41->2190", + "default.handlebars->41->2775", "download.handlebars->3->2", "download2.handlebars->5->2", "sharing.handlebars->11->97" @@ -74338,7 +74352,7 @@ "zh-chs": "剩余{0}个字节", "zh-cht": "剩餘{0}個字節", "xloc": [ - "default.handlebars->41->2166" + "default.handlebars->41->2169" ] }, { @@ -74384,7 +74398,7 @@ "zh-chs": "{0}个连接", "zh-cht": "{0}個連接", "xloc": [ - "default.handlebars->41->1233", + "default.handlebars->41->1237", "sharing.handlebars->11->16" ] }, @@ -74409,7 +74423,7 @@ "tr": "{1} ile {2} arasında {0}.", "zh-chs": "{0} 从 {1} 到 {2}。", "xloc": [ - "default.handlebars->41->1131" + "default.handlebars->41->1135" ] }, { @@ -74434,7 +74448,7 @@ "zh-chs": "剩余{0} GB", "zh-cht": "剩餘{0} GB", "xloc": [ - "default.handlebars->41->2169" + "default.handlebars->41->2172" ] }, { @@ -74459,7 +74473,7 @@ "zh-chs": "{0}个群组", "zh-cht": "{0}個群組", "xloc": [ - "default.handlebars->41->2630" + "default.handlebars->41->2633" ] }, { @@ -74531,7 +74545,7 @@ "zh-chs": "剩余{0}千字节", "zh-cht": "剩餘{0}千字節", "xloc": [ - "default.handlebars->41->2167" + "default.handlebars->41->2170" ] }, { @@ -74583,7 +74597,7 @@ "zh-chs": "剩余{0}兆字节", "zh-cht": "剩餘{0}兆字節", "xloc": [ - "default.handlebars->41->2168" + "default.handlebars->41->2171" ] }, { @@ -74694,7 +74708,7 @@ "zh-chs": "{0}未显示更多用户,请使用搜索框查找用户...", "zh-cht": "{0}未顯示更多用戶,請使用搜索框查找用戶...", "xloc": [ - "default.handlebars->41->2398" + "default.handlebars->41->2401" ] }, { @@ -74719,7 +74733,7 @@ "zh-chs": "{0}个节点", "zh-cht": "{0}個節點", "xloc": [ - "default.handlebars->41->599" + "default.handlebars->41->601" ] }, { @@ -75040,7 +75054,7 @@ "tr": "{0} seçili cihaz çevrimdışı.", "zh-chs": "{0} 个选定的设备处于离线状态。", "xloc": [ - "default.handlebars->41->665" + "default.handlebars->41->667" ] }, { @@ -75064,7 +75078,7 @@ "tr": "{0} seçili cihaz çevrimiçi.", "zh-chs": "{0} 个选定的设备在线。", "xloc": [ - "default.handlebars->41->663" + "default.handlebars->41->665" ] }, { @@ -75096,14 +75110,14 @@ "default-mobile.handlebars->11->219", "default-mobile.handlebars->11->223", "default-mobile.handlebars->11->227", - "default.handlebars->41->2402", - "default.handlebars->41->401", - "default.handlebars->41->404", - "default.handlebars->41->408", - "default.handlebars->41->412", - "default.handlebars->41->416", - "default.handlebars->41->420", - "default.handlebars->41->424" + "default.handlebars->41->2405", + "default.handlebars->41->403", + "default.handlebars->41->406", + "default.handlebars->41->410", + "default.handlebars->41->414", + "default.handlebars->41->418", + "default.handlebars->41->422", + "default.handlebars->41->426" ] }, { @@ -75128,7 +75142,7 @@ "zh-chs": "{0}设置(.msh)", "zh-cht": "{0}设置(.msh)", "xloc": [ - "default.handlebars->41->564" + "default.handlebars->41->566" ] }, { @@ -75265,7 +75279,7 @@ "zh-chs": "{0}个用户", "zh-cht": "{0}個用戶", "xloc": [ - "default.handlebars->41->427" + "default.handlebars->41->429" ] }, { @@ -75308,11 +75322,7 @@ "ru": "{0}, маска: {1}, шлюз: {2}", "sv": "{0}, Mask: {1}, Gateway: {2}", "tr": "{0}, Maske: {1}, Ağ Geçidi: {2}", - "zh-chs": "{0},掩码:{1},网关:{2}", - "xloc": [ - "default-mobile.handlebars->11->555", - "default-mobile.handlebars->11->559" - ] + "zh-chs": "{0},掩码:{1},网关:{2}" }, { "cs": "{0}, {1} po dobu {2} minut", @@ -75331,8 +75341,8 @@ "ru": "{0}, {1} на {2} мин.", "tr": "{0}, {1} için {2} dakika", "xloc": [ - "default.handlebars->41->1940", - "default.handlebars->41->978" + "default.handlebars->41->1943", + "default.handlebars->41->982" ] }, { @@ -75352,8 +75362,8 @@ "ru": "{0}, {1} на {2} мин.", "tr": "{0}, {1} için {2} dakika", "xloc": [ - "default.handlebars->41->1941", - "default.handlebars->41->979" + "default.handlebars->41->1944", + "default.handlebars->41->983" ] }, { @@ -75378,8 +75388,8 @@ "zh-chs": "{0},{1}至{2}", "zh-cht": "{0},{1}至{2}", "xloc": [ - "default.handlebars->41->1939", - "default.handlebars->41->977" + "default.handlebars->41->1942", + "default.handlebars->41->981" ] }, { @@ -75454,7 +75464,7 @@ "zh-chs": "{0}k在1档案内。最多{1}k", "zh-cht": "{0}k在1檔案內。最多{1}k", "xloc": [ - "default.handlebars->41->2181" + "default.handlebars->41->2184" ] }, { @@ -75479,7 +75489,7 @@ "zh-chs": "{1}k在{0}个档案中。最多{2}k", "zh-cht": "{1}k在{0}個檔案中。最多{2}k", "xloc": [ - "default.handlebars->41->2180" + "default.handlebars->41->2183" ] }, { @@ -75532,6 +75542,12 @@ "default-mobile.handlebars->11->144" ] }, + { + "en": "Á/span>", + "xloc": [ + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + ] + }, { "cs": "↺", "da": "↺", @@ -75791,4 +75807,4 @@ ] } ] -} +} \ No newline at end of file From 3633c9ff81c69ddcc8790a95d86dbfc808a855ed Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 28 Jun 2022 23:53:52 -0700 Subject: [PATCH 079/105] Fixed missing isIPMatch(), #4172 --- webrelayserver.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/webrelayserver.js b/webrelayserver.js index 18552f83..15d7334c 100644 --- a/webrelayserver.js +++ b/webrelayserver.js @@ -257,6 +257,13 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates, function getRandomPassword() { return Buffer.from(require('crypto').randomBytes(9), 'binary').toString('base64').split('/').join('@'); } + // Perform a IP match against a list + function isIPMatch(ip, matchList) { + const ipcheck = require('ipcheck'); + for (var i in matchList) { if (ipcheck.match(ip, matchList[i]) == true) return true; } + return false; + } + // Start up the web relay server serverStart(); CheckListenPort(args.relayport, args.relayportbind, StartWebRelayServer); From 0453266148798fe31a33eb8eeb3f8a6407bbc6bf Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 29 Jun 2022 12:16:40 -0700 Subject: [PATCH 080/105] Fixed UI glitch, #4192 --- emails/translations/account-check-min_cs.html | 1 - emails/translations/account-check-min_da.html | 1 - emails/translations/account-check-min_de.html | 1 - emails/translations/account-check-min_es.html | 1 - emails/translations/account-check-min_fi.html | 1 - emails/translations/account-check-min_fr.html | 1 - emails/translations/account-check-min_hi.html | 1 - emails/translations/account-check-min_it.html | 1 - emails/translations/account-check-min_ja.html | 1 - emails/translations/account-check-min_ko.html | 1 - emails/translations/account-check-min_nl.html | 1 - emails/translations/account-check-min_pl.html | 1 - .../translations/account-check-min_pt-br.html | 1 - emails/translations/account-check-min_pt.html | 1 - emails/translations/account-check-min_ru.html | 1 - emails/translations/account-check-min_sv.html | 1 - emails/translations/account-check-min_tr.html | 1 - .../account-check-min_zh-chs.html | 1 - .../account-check-min_zh-cht.html | 1 - .../translations/account-invite-min_cs.html | 1 - .../translations/account-invite-min_da.html | 1 - .../translations/account-invite-min_de.html | 1 - .../translations/account-invite-min_es.html | 1 - .../translations/account-invite-min_fi.html | 1 - .../translations/account-invite-min_fr.html | 1 - .../translations/account-invite-min_hi.html | 1 - .../translations/account-invite-min_it.html | 1 - .../translations/account-invite-min_ja.html | 1 - .../translations/account-invite-min_ko.html | 1 - .../translations/account-invite-min_nl.html | 1 - .../translations/account-invite-min_pl.html | 1 - .../account-invite-min_pt-br.html | 1 - .../translations/account-invite-min_pt.html | 1 - .../translations/account-invite-min_ru.html | 1 - .../translations/account-invite-min_sv.html | 1 - .../translations/account-invite-min_tr.html | 1 - .../account-invite-min_zh-chs.html | 1 - .../account-invite-min_zh-cht.html | 1 - emails/translations/account-login-min_cs.html | 1 - emails/translations/account-login-min_da.html | 1 - emails/translations/account-login-min_de.html | 1 - emails/translations/account-login-min_es.html | 1 - emails/translations/account-login-min_fi.html | 1 - emails/translations/account-login-min_fr.html | 1 - emails/translations/account-login-min_hi.html | 1 - emails/translations/account-login-min_it.html | 1 - emails/translations/account-login-min_ja.html | 1 - emails/translations/account-login-min_ko.html | 1 - emails/translations/account-login-min_nl.html | 1 - emails/translations/account-login-min_pl.html | 1 - .../translations/account-login-min_pt-br.html | 1 - emails/translations/account-login-min_pt.html | 1 - emails/translations/account-login-min_ru.html | 1 - emails/translations/account-login-min_sv.html | 1 - emails/translations/account-login-min_tr.html | 1 - .../account-login-min_zh-chs.html | 1 - .../account-login-min_zh-cht.html | 1 - emails/translations/account-reset-min_cs.html | 1 - emails/translations/account-reset-min_da.html | 1 - emails/translations/account-reset-min_de.html | 1 - emails/translations/account-reset-min_es.html | 1 - emails/translations/account-reset-min_fi.html | 1 - emails/translations/account-reset-min_fr.html | 1 - emails/translations/account-reset-min_hi.html | 1 - emails/translations/account-reset-min_it.html | 1 - emails/translations/account-reset-min_ja.html | 1 - emails/translations/account-reset-min_ko.html | 1 - emails/translations/account-reset-min_nl.html | 1 - emails/translations/account-reset-min_pl.html | 1 - .../translations/account-reset-min_pt-br.html | 1 - emails/translations/account-reset-min_pt.html | 1 - emails/translations/account-reset-min_ru.html | 1 - emails/translations/account-reset-min_sv.html | 1 - emails/translations/account-reset-min_tr.html | 1 - .../account-reset-min_zh-chs.html | 1 - .../account-reset-min_zh-cht.html | 1 - emails/translations/device-notify-min_cs.html | 1 - emails/translations/device-notify-min_da.html | 1 - emails/translations/device-notify-min_de.html | 1 - emails/translations/device-notify-min_es.html | 1 - emails/translations/device-notify-min_fi.html | 1 - emails/translations/device-notify-min_fr.html | 1 - emails/translations/device-notify-min_hi.html | 1 - emails/translations/device-notify-min_it.html | 1 - emails/translations/device-notify-min_ja.html | 1 - emails/translations/device-notify-min_ko.html | 1 - emails/translations/device-notify-min_nl.html | 1 - emails/translations/device-notify-min_pl.html | 1 - .../translations/device-notify-min_pt-br.html | 1 - emails/translations/device-notify-min_pt.html | 1 - emails/translations/device-notify-min_ru.html | 1 - emails/translations/device-notify-min_sv.html | 1 - emails/translations/device-notify-min_tr.html | 1 - .../device-notify-min_zh-chs.html | 1 - .../device-notify-min_zh-cht.html | 1 - emails/translations/mesh-invite-min_cs.html | 1 - emails/translations/mesh-invite-min_da.html | 1 - emails/translations/mesh-invite-min_de.html | 1 - emails/translations/mesh-invite-min_es.html | 1 - emails/translations/mesh-invite-min_fi.html | 1 - emails/translations/mesh-invite-min_fr.html | 1 - emails/translations/mesh-invite-min_hi.html | 1 - emails/translations/mesh-invite-min_it.html | 1 - emails/translations/mesh-invite-min_ja.html | 1 - emails/translations/mesh-invite-min_ko.html | 1 - emails/translations/mesh-invite-min_nl.html | 1 - emails/translations/mesh-invite-min_pl.html | 1 - .../translations/mesh-invite-min_pt-br.html | 1 - emails/translations/mesh-invite-min_pt.html | 1 - emails/translations/mesh-invite-min_ru.html | 1 - emails/translations/mesh-invite-min_sv.html | 1 - emails/translations/mesh-invite-min_tr.html | 1 - .../translations/mesh-invite-min_zh-chs.html | 1 - .../translations/mesh-invite-min_zh-cht.html | 1 - package.json | 17 ++++++++-- public/translate.bat | 6 ++-- translate/translate-node12.bat | 4 --- translate/translate-node14.bat | 4 +++ translate/translate.json | 31 +++++++++---------- views/default.handlebars | 2 +- 120 files changed, 36 insertions(+), 142 deletions(-) delete mode 100644 emails/translations/account-check-min_cs.html delete mode 100644 emails/translations/account-check-min_da.html delete mode 100644 emails/translations/account-check-min_de.html delete mode 100644 emails/translations/account-check-min_es.html delete mode 100644 emails/translations/account-check-min_fi.html delete mode 100644 emails/translations/account-check-min_fr.html delete mode 100644 emails/translations/account-check-min_hi.html delete mode 100644 emails/translations/account-check-min_it.html delete mode 100644 emails/translations/account-check-min_ja.html delete mode 100644 emails/translations/account-check-min_ko.html delete mode 100644 emails/translations/account-check-min_nl.html delete mode 100644 emails/translations/account-check-min_pl.html delete mode 100644 emails/translations/account-check-min_pt-br.html delete mode 100644 emails/translations/account-check-min_pt.html delete mode 100644 emails/translations/account-check-min_ru.html delete mode 100644 emails/translations/account-check-min_sv.html delete mode 100644 emails/translations/account-check-min_tr.html delete mode 100644 emails/translations/account-check-min_zh-chs.html delete mode 100644 emails/translations/account-check-min_zh-cht.html delete mode 100644 emails/translations/account-invite-min_cs.html delete mode 100644 emails/translations/account-invite-min_da.html delete mode 100644 emails/translations/account-invite-min_de.html delete mode 100644 emails/translations/account-invite-min_es.html delete mode 100644 emails/translations/account-invite-min_fi.html delete mode 100644 emails/translations/account-invite-min_fr.html delete mode 100644 emails/translations/account-invite-min_hi.html delete mode 100644 emails/translations/account-invite-min_it.html delete mode 100644 emails/translations/account-invite-min_ja.html delete mode 100644 emails/translations/account-invite-min_ko.html delete mode 100644 emails/translations/account-invite-min_nl.html delete mode 100644 emails/translations/account-invite-min_pl.html delete mode 100644 emails/translations/account-invite-min_pt-br.html delete mode 100644 emails/translations/account-invite-min_pt.html delete mode 100644 emails/translations/account-invite-min_ru.html delete mode 100644 emails/translations/account-invite-min_sv.html delete mode 100644 emails/translations/account-invite-min_tr.html delete mode 100644 emails/translations/account-invite-min_zh-chs.html delete mode 100644 emails/translations/account-invite-min_zh-cht.html delete mode 100644 emails/translations/account-login-min_cs.html delete mode 100644 emails/translations/account-login-min_da.html delete mode 100644 emails/translations/account-login-min_de.html delete mode 100644 emails/translations/account-login-min_es.html delete mode 100644 emails/translations/account-login-min_fi.html delete mode 100644 emails/translations/account-login-min_fr.html delete mode 100644 emails/translations/account-login-min_hi.html delete mode 100644 emails/translations/account-login-min_it.html delete mode 100644 emails/translations/account-login-min_ja.html delete mode 100644 emails/translations/account-login-min_ko.html delete mode 100644 emails/translations/account-login-min_nl.html delete mode 100644 emails/translations/account-login-min_pl.html delete mode 100644 emails/translations/account-login-min_pt-br.html delete mode 100644 emails/translations/account-login-min_pt.html delete mode 100644 emails/translations/account-login-min_ru.html delete mode 100644 emails/translations/account-login-min_sv.html delete mode 100644 emails/translations/account-login-min_tr.html delete mode 100644 emails/translations/account-login-min_zh-chs.html delete mode 100644 emails/translations/account-login-min_zh-cht.html delete mode 100644 emails/translations/account-reset-min_cs.html delete mode 100644 emails/translations/account-reset-min_da.html delete mode 100644 emails/translations/account-reset-min_de.html delete mode 100644 emails/translations/account-reset-min_es.html delete mode 100644 emails/translations/account-reset-min_fi.html delete mode 100644 emails/translations/account-reset-min_fr.html delete mode 100644 emails/translations/account-reset-min_hi.html delete mode 100644 emails/translations/account-reset-min_it.html delete mode 100644 emails/translations/account-reset-min_ja.html delete mode 100644 emails/translations/account-reset-min_ko.html delete mode 100644 emails/translations/account-reset-min_nl.html delete mode 100644 emails/translations/account-reset-min_pl.html delete mode 100644 emails/translations/account-reset-min_pt-br.html delete mode 100644 emails/translations/account-reset-min_pt.html delete mode 100644 emails/translations/account-reset-min_ru.html delete mode 100644 emails/translations/account-reset-min_sv.html delete mode 100644 emails/translations/account-reset-min_tr.html delete mode 100644 emails/translations/account-reset-min_zh-chs.html delete mode 100644 emails/translations/account-reset-min_zh-cht.html delete mode 100644 emails/translations/device-notify-min_cs.html delete mode 100644 emails/translations/device-notify-min_da.html delete mode 100644 emails/translations/device-notify-min_de.html delete mode 100644 emails/translations/device-notify-min_es.html delete mode 100644 emails/translations/device-notify-min_fi.html delete mode 100644 emails/translations/device-notify-min_fr.html delete mode 100644 emails/translations/device-notify-min_hi.html delete mode 100644 emails/translations/device-notify-min_it.html delete mode 100644 emails/translations/device-notify-min_ja.html delete mode 100644 emails/translations/device-notify-min_ko.html delete mode 100644 emails/translations/device-notify-min_nl.html delete mode 100644 emails/translations/device-notify-min_pl.html delete mode 100644 emails/translations/device-notify-min_pt-br.html delete mode 100644 emails/translations/device-notify-min_pt.html delete mode 100644 emails/translations/device-notify-min_ru.html delete mode 100644 emails/translations/device-notify-min_sv.html delete mode 100644 emails/translations/device-notify-min_tr.html delete mode 100644 emails/translations/device-notify-min_zh-chs.html delete mode 100644 emails/translations/device-notify-min_zh-cht.html delete mode 100644 emails/translations/mesh-invite-min_cs.html delete mode 100644 emails/translations/mesh-invite-min_da.html delete mode 100644 emails/translations/mesh-invite-min_de.html delete mode 100644 emails/translations/mesh-invite-min_es.html delete mode 100644 emails/translations/mesh-invite-min_fi.html delete mode 100644 emails/translations/mesh-invite-min_fr.html delete mode 100644 emails/translations/mesh-invite-min_hi.html delete mode 100644 emails/translations/mesh-invite-min_it.html delete mode 100644 emails/translations/mesh-invite-min_ja.html delete mode 100644 emails/translations/mesh-invite-min_ko.html delete mode 100644 emails/translations/mesh-invite-min_nl.html delete mode 100644 emails/translations/mesh-invite-min_pl.html delete mode 100644 emails/translations/mesh-invite-min_pt-br.html delete mode 100644 emails/translations/mesh-invite-min_pt.html delete mode 100644 emails/translations/mesh-invite-min_ru.html delete mode 100644 emails/translations/mesh-invite-min_sv.html delete mode 100644 emails/translations/mesh-invite-min_tr.html delete mode 100644 emails/translations/mesh-invite-min_zh-chs.html delete mode 100644 emails/translations/mesh-invite-min_zh-cht.html delete mode 100644 translate/translate-node12.bat create mode 100644 translate/translate-node14.bat diff --git a/emails/translations/account-check-min_cs.html b/emails/translations/account-check-min_cs.html deleted file mode 100644 index 69d4360d..00000000 --- a/emails/translations/account-check-min_cs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Ověření e-mailem
[[[SERVERNAME]]] - Ověření

Ahoj [[[USERNAME]]], [[[SERVERNAME]]] požaduje ověření e-mailem a dokončete proces kliknutím na následující odkaz.

Kliknutím sem ověřte svou e-mailovou adresu.

Pokud jste tento požadavek nezačali, ignorujte tento e-mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_da.html b/emails/translations/account-check-min_da.html deleted file mode 100644 index 26a9e0dd..00000000 --- a/emails/translations/account-check-min_da.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Email verificering
[[[SERVERNAME]]] - Verificering

Hej [[[USERNAME]], [[[SERVERNAME]]] anmoder om e-mailbekræftelse, klik på følgende link for at fuldføre processen.

Klik her for at bekræfte din e-mailadresse.

Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_de.html b/emails/translations/account-check-min_de.html deleted file mode 100644 index 529d1758..00000000 --- a/emails/translations/account-check-min_de.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - E-Mail-Überprüfung
[[[SERVERNAME]]] - Überprüfung

Hallo [[[USERNAME]]], [[[SERVERNAME]]] Wenn Sie eine E-Mail-Bestätigung anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.

Klicken Sie hier, um Ihre E-Mail-Adresse zu bestätigen.

Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.
\ No newline at end of file diff --git a/emails/translations/account-check-min_es.html b/emails/translations/account-check-min_es.html deleted file mode 100644 index 457ea70d..00000000 --- a/emails/translations/account-check-min_es.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Verificación de Correo Electrónico
[[[SERVERNAME]]] - Verificación

Hola [[[USERNAME]]], [[[SERVERNAME]]] esta solicitando la verificación por correo electrónico, haz clic en el siguiente enlace para completar el proceso.

Haz clic aquí para verificar tu dirección de correo electrónico.

Si tu no iniciaste este requerimiento, por favor ignora este correo.
\ No newline at end of file diff --git a/emails/translations/account-check-min_fi.html b/emails/translations/account-check-min_fi.html deleted file mode 100644 index 54b03dd6..00000000 --- a/emails/translations/account-check-min_fi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Sähköpostivarmistus
[[[SERVERNAME]]] - Todentaminen

Moi [[[USERNAME]]], [[[SERVERNAME]]] pyytää sähköpostitse vahvistusta, suorita prosessi napsauttamalla seuraavaa linkkiä.

Napsauta tätä vahvistaaksesi sähköpostiosoitteesi.

Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.
\ No newline at end of file diff --git a/emails/translations/account-check-min_fr.html b/emails/translations/account-check-min_fr.html deleted file mode 100644 index adcbe2ed..00000000 --- a/emails/translations/account-check-min_fr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Vérification E-mail
[[[SERVERNAME]]] - Vérification

Bonjour [[[USERNAME]]], [[[SERVERNAME]]] demande une vérification par e-mail, cliquez sur le lien suivant pour terminer le processus.

Cliquez ici pour vérifier votre adresse e-mail.

Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.
\ No newline at end of file diff --git a/emails/translations/account-check-min_hi.html b/emails/translations/account-check-min_hi.html deleted file mode 100644 index ef6abbb4..00000000 --- a/emails/translations/account-check-min_hi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - ईमेल सत्यापन
[[[SERVERNAME]]] - सत्यापन

हाय [[[USERNAME]]], [[[SERVERNAME]]] ईमेल सत्यापन का अनुरोध कर रहा है, प्रक्रिया को पूरा करने के लिए निम्न लिंक पर क्लिक करें।

अपना ई-मेल पता सत्यापित करने के लिए यहां क्लिक करें।

यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।
\ No newline at end of file diff --git a/emails/translations/account-check-min_it.html b/emails/translations/account-check-min_it.html deleted file mode 100644 index 4ab7f61c..00000000 --- a/emails/translations/account-check-min_it.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Verifica email
[[[SERVERNAME]]] - Verifica

Salve [[[USERNAME]]], [[[SERVERNAME]]] sta richiedendo la verifica tramite posta elettronica, fare clic sul collegamento seguente per completare il processo.

Clicca qui per verificare il tuo indirizzo e-mail.

Se non hai avviato questa richiesta, ignora questo messaggio.
\ No newline at end of file diff --git a/emails/translations/account-check-min_ja.html b/emails/translations/account-check-min_ja.html deleted file mode 100644 index eefdce51..00000000 --- a/emails/translations/account-check-min_ja.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - メールの確認
[[[SERVERNAME]]] - 確認

[[[USERNAME]]]様 [[[SERVERNAME]]] がメールの確認をリクエストしている場合は、次のリンクをクリックしてプロセスを完了してください。

ここをクリックして、電子メールアドレスを確認してください。

このリクエストを開始していない場合は、このメールを無視してください。
\ No newline at end of file diff --git a/emails/translations/account-check-min_ko.html b/emails/translations/account-check-min_ko.html deleted file mode 100644 index e8bbc0f3..00000000 --- a/emails/translations/account-check-min_ko.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Email 인증
[[[SERVERNAME]]] - 인증

안녕하세요, [[[USERNAME]]]님. [[[SERVERNAME]]] 이메일 검증을 요구하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.

이메일 주소를 검증하려면 여기를 클릭하십시오.

이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.
\ No newline at end of file diff --git a/emails/translations/account-check-min_nl.html b/emails/translations/account-check-min_nl.html deleted file mode 100644 index ca8ef8f1..00000000 --- a/emails/translations/account-check-min_nl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - E-mail Verificatie
[[[SERVERNAME]]] - Verificatie

Hallo [[[USERNAME]]], [[[SERVERNAME]]] vraagt om e-mailverificatie, klik op de volgende link om het proces te voltooien.

Klik hier om uw e-mailadres te verifiëren.

Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.
\ No newline at end of file diff --git a/emails/translations/account-check-min_pl.html b/emails/translations/account-check-min_pl.html deleted file mode 100644 index 25082b97..00000000 --- a/emails/translations/account-check-min_pl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Weryfikacja Email
[[[SERVERNAME]]] - Weryfikacja

Cześć [[[USERNAME]]], [[[SERVERNAME]]] prosi o weryfikację adresu email, kliknij na poniższy link, aby zakończyć proces.

Kliknij tutaj, aby zweryfikować swój adres e-mail.

Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.
\ No newline at end of file diff --git a/emails/translations/account-check-min_pt-br.html b/emails/translations/account-check-min_pt-br.html deleted file mode 100644 index 36937b05..00000000 --- a/emails/translations/account-check-min_pt-br.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Verificação de e-mail
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.

Clique aqui para verificar seu endereço de e-mail.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_pt.html b/emails/translations/account-check-min_pt.html deleted file mode 100644 index 179912af..00000000 --- a/emails/translations/account-check-min_pt.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Verificação de Email
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.

Clique aqui para verificar seu endereço de e-mail.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-check-min_ru.html b/emails/translations/account-check-min_ru.html deleted file mode 100644 index a75eb36c..00000000 --- a/emails/translations/account-check-min_ru.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - подтверждение по электронной почте
[[[SERVERNAME]]] - Подтверждение

Привет [[[USERNAME]]], [[[SERVERNAME]]] запрашивает подтверждение по электронной почте, нажмите на следующую ссылку, чтобы завершить процесс.

Нажмите здесь, чтобы подтвердить свой адрес электронной почты.

Если вы не инициировали этот запрос, игнорируйте это письмо.
\ No newline at end of file diff --git a/emails/translations/account-check-min_sv.html b/emails/translations/account-check-min_sv.html deleted file mode 100644 index b12f2c1b..00000000 --- a/emails/translations/account-check-min_sv.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - E-postverifiering
[[[SERVERNAME]]] - Verifiering

Hej [[[USERNAME]], [[[SERVERNAME]]] begär e-postverifiering, klicka på följande länk för att slutföra processen.

Klicka här för att verifiera din e-postadress.

Om du inte initierade denna begäran, ignorerar du det här meddelandet.
\ No newline at end of file diff --git a/emails/translations/account-check-min_tr.html b/emails/translations/account-check-min_tr.html deleted file mode 100644 index c6d7bd2d..00000000 --- a/emails/translations/account-check-min_tr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - E-posta Doğrulaması
[[[SERVERNAME]]] - Doğrulama

Merhaba [[[USERNAME]]], [[[SERVERNAME]]] e-posta doğrulaması istiyorsa, işlemi tamamlamak için aşağıdaki bağlantıya tıklayın.

E-posta adresinizi doğrulamak için burayı tıklayın.

Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.
\ No newline at end of file diff --git a/emails/translations/account-check-min_zh-chs.html b/emails/translations/account-check-min_zh-chs.html deleted file mode 100644 index c6a2cac3..00000000 --- a/emails/translations/account-check-min_zh-chs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-电邮验证
[[[SERVERNAME]]]-验证

[[[USERNAME]],你好, [[[SERVERNAME]]] 正在请求电邮验证,请单击以下连结以完成该过程。

单击此处以验证您的电邮地址。

如果您没有发起此请求,请不理此邮件。
\ No newline at end of file diff --git a/emails/translations/account-check-min_zh-cht.html b/emails/translations/account-check-min_zh-cht.html deleted file mode 100644 index ae4f5b0a..00000000 --- a/emails/translations/account-check-min_zh-cht.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-電郵驗證
[[[SERVERNAME]]]-驗證

[[[USERNAME]],你好, [[[SERVERNAME]] 正在請求電郵驗證,請單擊以下鏈結以完成該過程。

單擊此處以驗證你的電郵地址。

如果你沒有發起此請求,請不理此電郵。
\ No newline at end of file diff --git a/emails/translations/account-invite-min_cs.html b/emails/translations/account-invite-min_cs.html deleted file mode 100644 index 845a8c97..00000000 --- a/emails/translations/account-invite-min_cs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Pozvánka na účet
[[[SERVERNAME]]] - Pozvánka na účet

Účet byl pro vás vytvořen na serveru [[[SERVERNAME]]], nyní k němu máte přístup:

   Uživatelské jméno: [[[ACCOUNTNAME]]]
   Heslo: [[[PASSWORD]]]

S pozdravem,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_da.html b/emails/translations/account-invite-min_da.html deleted file mode 100644 index 574df71f..00000000 --- a/emails/translations/account-invite-min_da.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Konto invitation
[[[SERVERNAME]]] - Konto invitation

En konto blev oprettet til dig på serveren [[[SERVERNAME]]]du kan tilgå den nu med:

   Brugernavn: [[[ACCOUNTNAME]]]
   Adgangskode: [[[PASSWORD]]]

Venlig hilsen,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_de.html b/emails/translations/account-invite-min_de.html deleted file mode 100644 index 95118c48..00000000 --- a/emails/translations/account-invite-min_de.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Kontoeinladung
[[[SERVERNAME]]] - Kontoeinladung

Auf dem Server wurde ein Konto für Sie erstellt [[[SERVERNAME]]], Sie können jetzt darauf zugreifen mit:

   Benutzername: [[[ACCOUNTNAME]]]
   Passwort: [[[PASSWORD]]]

Freundliche Grüße,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_es.html b/emails/translations/account-invite-min_es.html deleted file mode 100644 index eae716cf..00000000 --- a/emails/translations/account-invite-min_es.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Invitación de Cuenta
[[[SERVERNAME]]] - Invitación de Cuenta

Una cuenta ha sido creada en tu servidor [[[SERVERNAME]]], ahora puede acceder con:

   Nombre de Usuario: [[[ACCOUNTNAME]]]
   Contraseña: [[[PASSWORD]]]

Atentamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_fi.html b/emails/translations/account-invite-min_fi.html deleted file mode 100644 index 4b2ddbbb..00000000 --- a/emails/translations/account-invite-min_fi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Tili kutsu
[[[SERVERNAME]]] - Tili kutsu

Sinulle on luotu tili palvelimelle [[[SERVERNAME]]], voit käyttää sitä nyt:

   Käyttäjätunnus: [[[ACCOUNTNAME]]]
   Salasana: [[[PASSWORD]]]

Ystävällisin terveisin,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_fr.html b/emails/translations/account-invite-min_fr.html deleted file mode 100644 index 03ad766f..00000000 --- a/emails/translations/account-invite-min_fr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Invitation au compte
[[[SERVERNAME]]] - Invitation au compte

Un compte a été créé pour vous sur le serveur [[[SERVERNAME]]], vous pouvez y accéder maintenant avec :

   Nom d'utilisateur: [[[ACCOUNTNAME]]]
   Mot de passe: [[[PASSWORD]]]

Meilleures salutations,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_hi.html b/emails/translations/account-invite-min_hi.html deleted file mode 100644 index b1d235b4..00000000 --- a/emails/translations/account-invite-min_hi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - खाता निमंत्रण
[[[SERVERNAME]]] - खाता निमंत्रण

सर्वर पर आपके लिए एक खाता बनाया गया था [[[SERVERNAME]]], आप इसे अभी एक्सेस कर सकते हैं:

   उपयोगकर्ता नाम: [[[ACCOUNTNAME]]]
   कुंजिका: [[[PASSWORD]]]

सादर,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_it.html b/emails/translations/account-invite-min_it.html deleted file mode 100644 index b2859096..00000000 --- a/emails/translations/account-invite-min_it.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Invito per l'account
[[[SERVERNAME]]] - Invito per l'account

È stato creato un account per te sul server [[[SERVERNAME]]], puoi accedervi ora con

   Nome utente: [[[ACCOUNTNAME]]]
   Password: [[[PASSWORD]]]

I migliori saluti,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_ja.html b/emails/translations/account-invite-min_ja.html deleted file mode 100644 index 15911c68..00000000 --- a/emails/translations/account-invite-min_ja.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - アカウントの招待
[[[SERVERNAME]]] - アカウントの招待

サーバー上にアカウントが作成されました [[[SERVERNAME]]]、あなたは今それを使ってそれにアクセスできます:

   ユーザー名: [[[ACCOUNTNAME]]]
   パスワード: [[[PASSWORD]]]

宜しくお願いします、
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_ko.html b/emails/translations/account-invite-min_ko.html deleted file mode 100644 index 625d7208..00000000 --- a/emails/translations/account-invite-min_ko.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - 계정 초대
[[[SERVERNAME]]] - 계정 초대

당신을 위해 서버에서 한 계정이 생성되었습니다. [[[SERVERNAME]]]이제 당신은 다음으로 접근 가능합니다:

   사용자 이름: [[[ACCOUNTNAME]]]
   암호: [[[PASSWORD]]]

최고의 안부를 전합니다,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_nl.html b/emails/translations/account-invite-min_nl.html deleted file mode 100644 index 20f11963..00000000 --- a/emails/translations/account-invite-min_nl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Account uitnodiging
[[[SERVERNAME]]] - Account uitnodiging

Er is een account voor je aangemaakt op de server [[[SERVERNAME]]], je hebt er nu toegang toe met:

   Gebruikersnaam: [[[ACCOUNTNAME]]]
   Wachtwoord: [[[PASSWORD]]]

Vriendelijke groeten,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_pl.html b/emails/translations/account-invite-min_pl.html deleted file mode 100644 index 39fd859c..00000000 --- a/emails/translations/account-invite-min_pl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Zaproszenie Do Założenia Konta
[[[SERVERNAME]]] - Zaproszenie Do Założenia Konta

Konto zostało utworzone dla Ciebie na serwerze [[[SERVERNAME]]], możesz uzyskać dostęp przez:

   Nazwa użytkownika: [[[ACCOUNTNAME]]]
   Hasło: [[[PASSWORD]]]

Z wyrazami szacunku,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_pt-br.html b/emails/translations/account-invite-min_pt-br.html deleted file mode 100644 index b84117aa..00000000 --- a/emails/translations/account-invite-min_pt-br.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Convite para conta
[[[SERVERNAME]]] - Convite para conta

Uma conta foi criada para você no servidor [[[SERVERNAME]]], você pode acessá-lo agora com:

   Nome do usuário: [[[ACCOUNTNAME]]]
   Senha: [[[PASSWORD]]]

Atenciosamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_pt.html b/emails/translations/account-invite-min_pt.html deleted file mode 100644 index db5826fe..00000000 --- a/emails/translations/account-invite-min_pt.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Convite para conta
[[[SERVERNAME]]] - Convite para conta

Uma conta foi criada para você no servidor [[[SERVERNAME]]], você pode acessá-lo agora com:

   Nome de usuário: [[[ACCOUNTNAME]]]
   Senha: [[[PASSWORD]]]

Cumprimentos,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_ru.html b/emails/translations/account-invite-min_ru.html deleted file mode 100644 index d1d8a521..00000000 --- a/emails/translations/account-invite-min_ru.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - приглашение в аккаунт
[[[SERVERNAME]]] - приглашение в аккаунт

Для вас была создана учетная запись на сервере [[[SERVERNAME]]]Вы можете получить к нему доступ сейчас:

   Имя пользователя: [[[ACCOUNTNAME]]]
   Пароль: [[[PASSWORD]]]

С уважением,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_sv.html b/emails/translations/account-invite-min_sv.html deleted file mode 100644 index c7cd52a7..00000000 --- a/emails/translations/account-invite-min_sv.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Kontoinbjudan
[[[SERVERNAME]]] - Kontoinbjudan

Ett konto skapades åt dig på servern [[[SERVERNAME]]]kan du komma åt det nu med:

   Användarnamn: [[[ACCOUNTNAME]]]
   Lösenord: [[[PASSWORD]]]

Vänliga hälsningar,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_tr.html b/emails/translations/account-invite-min_tr.html deleted file mode 100644 index b65403de..00000000 --- a/emails/translations/account-invite-min_tr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Hesap Davetiyesi
[[[SERVERNAME]]] - Hesap Davetiyesi

Sunucuda sizin için bir hesap oluşturuldu [[[SERVERNAME]]], şimdi şununla erişebilirsiniz:

   Kullanıcı adı: [[[ACCOUNTNAME]]]
   Parola: [[[PASSWORD]]]

Saygılarımla,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_zh-chs.html b/emails/translations/account-invite-min_zh-chs.html deleted file mode 100644 index f535eb12..00000000 --- a/emails/translations/account-invite-min_zh-chs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-帐户邀请
[[[SERVERNAME]]]-帐户邀请

在服务器上为您创建了一个帐户 [[[SERVERNAME]]],您现在可以通过以下方式访问它:

   用户名: [[[ACCOUNTNAME]]]
   密码: [[[PASSWORD]]]

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-invite-min_zh-cht.html b/emails/translations/account-invite-min_zh-cht.html deleted file mode 100644 index 7ce366c5..00000000 --- a/emails/translations/account-invite-min_zh-cht.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-帳戶邀請
[[[SERVERNAME]]]-帳戶邀請

在伺服器上為你創建了一個帳戶 [[[SERVERNAME]]],你現在可以通過以下方式訪問它:

   用戶名: [[[ACCOUNTNAME]]]
   密碼: [[[PASSWORD]]]

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/account-login-min_cs.html b/emails/translations/account-login-min_cs.html deleted file mode 100644 index 6f6ae83f..00000000 --- a/emails/translations/account-login-min_cs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Přihlášení k účtu
[[[SERVERNAME]]] - Přihlášení k účtu

Váš přihlašovací token je: [[[TOKEN]]]

Tento token lze použít pouze jednou a je platný po dobu 5 minut.

\ No newline at end of file diff --git a/emails/translations/account-login-min_da.html b/emails/translations/account-login-min_da.html deleted file mode 100644 index 6a16a24e..00000000 --- a/emails/translations/account-login-min_da.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Konto login
[[[SERVERNAME]]] - Konto login

Dit login-token er: [[[TOKEN]]]

Denne token kan kun bruges én gang og er gyldig i 5 minutter.

\ No newline at end of file diff --git a/emails/translations/account-login-min_de.html b/emails/translations/account-login-min_de.html deleted file mode 100644 index c8d7f426..00000000 --- a/emails/translations/account-login-min_de.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Konto-Login
[[[SERVERNAME]]] - Konto-Login

Ihr Login-Token lautet: [[[TOKEN]]]

Dieser Token kann nur einmal verwendet werden und ist 5 Minuten gültig.

\ No newline at end of file diff --git a/emails/translations/account-login-min_es.html b/emails/translations/account-login-min_es.html deleted file mode 100644 index 7566c294..00000000 --- a/emails/translations/account-login-min_es.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Inicio de Sesión
[[[SERVERNAME]]] - Inicio de Sesión

Tu token de inicio de sesión es: [[[TOKEN]]]

Este token sólo se puede usar una vez y es válido durante 5 minutos.

\ No newline at end of file diff --git a/emails/translations/account-login-min_fi.html b/emails/translations/account-login-min_fi.html deleted file mode 100644 index c14b1292..00000000 --- a/emails/translations/account-login-min_fi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Tilille Kirjautuminen
[[[SERVERNAME]]] - Tilille Kirjautuminen

Kirjautumistunnuksesi on: [[[TOKEN]]]

Tätä tunnusta voidaan käyttää vain kerran ja se on voimassa 5 minuuttia.

\ No newline at end of file diff --git a/emails/translations/account-login-min_fr.html b/emails/translations/account-login-min_fr.html deleted file mode 100644 index 4a7f1305..00000000 --- a/emails/translations/account-login-min_fr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Connexion au compte
[[[SERVERNAME]]] - Connexion au compte

Votre jeton de connexion est: [[[TOKEN]]]

Ce jeton ne peut être utilisé qu'une seule fois et est valide pendant 5 minutes.

\ No newline at end of file diff --git a/emails/translations/account-login-min_hi.html b/emails/translations/account-login-min_hi.html deleted file mode 100644 index d4411b45..00000000 --- a/emails/translations/account-login-min_hi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - खाता लॉगिन
[[[SERVERNAME]]] - खाता लॉगिन

आपका लॉगिन टोकन है: [[[TOKEN]]]

यह टोकन केवल एक बार उपयोग किया जा सकता है और 5 मिनट के लिए वैध है।

\ No newline at end of file diff --git a/emails/translations/account-login-min_it.html b/emails/translations/account-login-min_it.html deleted file mode 100644 index 74b4f2cc..00000000 --- a/emails/translations/account-login-min_it.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Accesso all'account
[[[SERVERNAME]]] - Accesso all'account

Il tuo token di accesso è: [[[TOKEN]]]

Questo token può essere utilizzato solo una volta ed è valido per 5 minuti.

\ No newline at end of file diff --git a/emails/translations/account-login-min_ja.html b/emails/translations/account-login-min_ja.html deleted file mode 100644 index d4abea8d..00000000 --- a/emails/translations/account-login-min_ja.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - アカウントログイン
[[[SERVERNAME]]] - アカウントログイン

ログイントークンは次のとおりです:[[[TOKEN]]]

このトークンは1回だけ使用でき、5分間有効です。

\ No newline at end of file diff --git a/emails/translations/account-login-min_ko.html b/emails/translations/account-login-min_ko.html deleted file mode 100644 index 368ea790..00000000 --- a/emails/translations/account-login-min_ko.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - 계정 로그인
[[[SERVERNAME]]] - 계정 로그인

당신이 로그인한 토큰은 다음과 같습니다 : [[[TOKEN]]]

이 토큰은 오직 한 번만 사용될 수 있으며, 5분 동안만 유효합니다.

\ No newline at end of file diff --git a/emails/translations/account-login-min_nl.html b/emails/translations/account-login-min_nl.html deleted file mode 100644 index 7ea6a268..00000000 --- a/emails/translations/account-login-min_nl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Inloggen account
[[[SERVERNAME]]] - Inloggen account

Uw login token is: [[[TOKEN]]]

Dit token kan maar één keer worden gebruikt en is 5 minuten geldig.

\ No newline at end of file diff --git a/emails/translations/account-login-min_pl.html b/emails/translations/account-login-min_pl.html deleted file mode 100644 index a456429e..00000000 --- a/emails/translations/account-login-min_pl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Logowanie Do Konta
[[[SERVERNAME]]] - Logowanie Do Konta

Twój token logowania to: [[[TOKEN]]]

Ten token może być użyty tylko raz i jest ważny przez 5 minut.

\ No newline at end of file diff --git a/emails/translations/account-login-min_pt-br.html b/emails/translations/account-login-min_pt-br.html deleted file mode 100644 index 43320355..00000000 --- a/emails/translations/account-login-min_pt-br.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Login da conta
[[[SERVERNAME]]] - Login da conta

Seu token de login é: [[[TOKEN]]]

Este token só pode ser usado uma vez e é válido por 5 minutos.

\ No newline at end of file diff --git a/emails/translations/account-login-min_pt.html b/emails/translations/account-login-min_pt.html deleted file mode 100644 index 43320355..00000000 --- a/emails/translations/account-login-min_pt.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Login da conta
[[[SERVERNAME]]] - Login da conta

Seu token de login é: [[[TOKEN]]]

Este token só pode ser usado uma vez e é válido por 5 minutos.

\ No newline at end of file diff --git a/emails/translations/account-login-min_ru.html b/emails/translations/account-login-min_ru.html deleted file mode 100644 index d77dead5..00000000 --- a/emails/translations/account-login-min_ru.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Вход в аккаунт
[[[SERVERNAME]]] - Вход в аккаунт

Ваш токен для входа: [[[TOKEN]]]

Этот токен может быть использован только один раз и действителен в течение 5 минут.

\ No newline at end of file diff --git a/emails/translations/account-login-min_sv.html b/emails/translations/account-login-min_sv.html deleted file mode 100644 index a477729f..00000000 --- a/emails/translations/account-login-min_sv.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Kontoinloggning
[[[SERVERNAME]]] - Kontoinloggning

Din inloggningstoken är: [[[TOKEN]]]

Denna token kan bara användas en gång och är giltig i 5 minuter.

\ No newline at end of file diff --git a/emails/translations/account-login-min_tr.html b/emails/translations/account-login-min_tr.html deleted file mode 100644 index aed366b2..00000000 --- a/emails/translations/account-login-min_tr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Hesap Girişi
[[[SERVERNAME]]] - Hesap Girişi

Giriş anahtarınız: [[[TOKEN]]]

Bu simge yalnızca bir kez kullanılabilir ve 5 dakika geçerlidir.

\ No newline at end of file diff --git a/emails/translations/account-login-min_zh-chs.html b/emails/translations/account-login-min_zh-chs.html deleted file mode 100644 index b61a5832..00000000 --- a/emails/translations/account-login-min_zh-chs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-帐户登录
[[[SERVERNAME]]]-帐户登录

您的登录保安编码为:[[[TOKEN]]]

此保安编码只能使用一次,有效期为5分钟。

\ No newline at end of file diff --git a/emails/translations/account-login-min_zh-cht.html b/emails/translations/account-login-min_zh-cht.html deleted file mode 100644 index 4b227d14..00000000 --- a/emails/translations/account-login-min_zh-cht.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-帳戶登入
[[[SERVERNAME]]]-帳戶登入

你的登入保安編碼為:[[[TOKEN]]]

該保安編碼只能使用一次,有效期為5分鐘。

\ No newline at end of file diff --git a/emails/translations/account-reset-min_cs.html b/emails/translations/account-reset-min_cs.html deleted file mode 100644 index daa51be1..00000000 --- a/emails/translations/account-reset-min_cs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Reset účtu
[[[SERVERNAME]]] - Ověření

Ahoj [[[USERNAME]]], [[[SERVERNAME]]] požaduje obnovení hesla k účtu, dokončete proces kliknutím na následující odkaz.

Kliknutím sem obnovíte heslo svého účtu.

Pokud jste tento požadavek nezačali, ignorujte tento e-mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_da.html b/emails/translations/account-reset-min_da.html deleted file mode 100644 index b6829d3f..00000000 --- a/emails/translations/account-reset-min_da.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Konto reset
[[[SERVERNAME]]] - Verificering

Hej [[[USERNAME]], [[[SERVERNAME]]] anmoder om en nulstilling af kontoadgangskode, klik på følgende link for at fuldføre processen.

Klik her for at nulstille adgangskoden til din konto.

Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_de.html b/emails/translations/account-reset-min_de.html deleted file mode 100644 index fe952ca6..00000000 --- a/emails/translations/account-reset-min_de.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Zurücksetzen des Kontos
[[[SERVERNAME]]] - Überprüfung

Hallo [[[USERNAME]]], [[[SERVERNAME]]] Wenn Sie ein Zurücksetzen des Kontokennworts anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.

Klicken Sie hier, um Ihr Kontopasswort zurückzusetzen.

Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_es.html b/emails/translations/account-reset-min_es.html deleted file mode 100644 index a464997a..00000000 --- a/emails/translations/account-reset-min_es.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Restablecimiento de Cuenta
[[[SERVERNAME]]] - Verificación

Hola [[[USERNAME]]], [[[SERVERNAME]]] está solicitando restablecer la contraseña de la cuenta, haz clic en el siguiente enlace para completar el proceso.

Haz clic aquí para restablecer la contraseña de tu cuenta.

Si tu no iniciaste este requerimiento, por favor ignora este correo.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_fi.html b/emails/translations/account-reset-min_fi.html deleted file mode 100644 index 2037e88e..00000000 --- a/emails/translations/account-reset-min_fi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Tili nollattu
[[[SERVERNAME]]] - Todentaminen

Moi [[[USERNAME]]], [[[SERVERNAME]]] pyytää tilin salasanan palauttamista, suorita prosessi napsauttamalla seuraavaa linkkiä.

Palauta tilisi salasana napsauttamalla tätä.

Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_fr.html b/emails/translations/account-reset-min_fr.html deleted file mode 100644 index b647ecc2..00000000 --- a/emails/translations/account-reset-min_fr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Réinitialisation du compte
[[[SERVERNAME]]] - Vérification

Bonjour [[[USERNAME]]], [[[SERVERNAME]]] demande une réinitialisation du mot de passe du compte, cliquez sur le lien suivant pour terminer le processus.

Cliquez ici pour réinitialiser le mot de passe de votre compte.

Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_hi.html b/emails/translations/account-reset-min_hi.html deleted file mode 100644 index 149562c4..00000000 --- a/emails/translations/account-reset-min_hi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - खाता रीसेट
[[[SERVERNAME]]] - सत्यापन

हाय [[[USERNAME]]], [[[SERVERNAME]]] खाता पासवर्ड रीसेट का अनुरोध कर रहा है, प्रक्रिया पूरी करने के लिए निम्न लिंक पर क्लिक करें।

अपना खाता पासवर्ड रीसेट करने के लिए यहां क्लिक करें।

यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।
\ No newline at end of file diff --git a/emails/translations/account-reset-min_it.html b/emails/translations/account-reset-min_it.html deleted file mode 100644 index 0bedfea0..00000000 --- a/emails/translations/account-reset-min_it.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Reimpostazione dell'account
[[[SERVERNAME]]] - Verifica

Salve [[[USERNAME]]], [[[SERVERNAME]]] sta richiedendo la reimpostazione della password dell'account, fare clic sul seguente collegamento per completare il processo.

Clicca qui per reimpostare la password del tuo account.

Se non hai avviato questa richiesta, ignora questo messaggio.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_ja.html b/emails/translations/account-reset-min_ja.html deleted file mode 100644 index ee648537..00000000 --- a/emails/translations/account-reset-min_ja.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - アカウントのリセット
[[[SERVERNAME]]] - 確認

[[[USERNAME]]]様 [[[SERVERNAME]]] がアカウントパスワードのリセットを要求している場合は、次のリンクをクリックしてプロセスを完了します。

ここをクリックしてアカウントのパスワードをリセットしてください。

このリクエストを開始していない場合は、このメールを無視してください。
\ No newline at end of file diff --git a/emails/translations/account-reset-min_ko.html b/emails/translations/account-reset-min_ko.html deleted file mode 100644 index 39b71a28..00000000 --- a/emails/translations/account-reset-min_ko.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - 계정 재설정
[[[SERVERNAME]]] - 인증

안녕하세요, [[[USERNAME]]]님. [[[SERVERNAME]]] 계정 비밀번호 재설정을 요청하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.

당신의 계정 암호를 초기화하려면 여기를 클릭하십시오.

이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_nl.html b/emails/translations/account-reset-min_nl.html deleted file mode 100644 index 2f071d6a..00000000 --- a/emails/translations/account-reset-min_nl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Account Reset
[[[SERVERNAME]]] - Verificatie

Hallo [[[USERNAME]]], [[[SERVERNAME]]] vraagt om het opnieuw instellen van het wachtwoord van een account, klik op de volgende link om het proces te voltooien.

Klik hier om je wachtwoord opnieuw in te stellen.

Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_pl.html b/emails/translations/account-reset-min_pl.html deleted file mode 100644 index 9db979ea..00000000 --- a/emails/translations/account-reset-min_pl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Resetowanie Konta
[[[SERVERNAME]]] - Weryfikacja

Cześć [[[USERNAME]]], [[[SERVERNAME]]] prosi o zresetowanie hasła do konta, kliknij na poniższy link aby zakończyć proces.

Kliknij tutaj, aby zresetować hasło do swojego konta.

Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_pt-br.html b/emails/translations/account-reset-min_pt-br.html deleted file mode 100644 index 97fbdc56..00000000 --- a/emails/translations/account-reset-min_pt-br.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Redefinição de conta
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.

Clique aqui para redefinir a senha da sua conta.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_pt.html b/emails/translations/account-reset-min_pt.html deleted file mode 100644 index 97fbdc56..00000000 --- a/emails/translations/account-reset-min_pt.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Redefinição de conta
[[[SERVERNAME]]] - Verificação

Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.

Clique aqui para redefinir a senha da sua conta.

Se você não iniciou esta solicitação, ignore este e-mail.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_ru.html b/emails/translations/account-reset-min_ru.html deleted file mode 100644 index 2381c2cc..00000000 --- a/emails/translations/account-reset-min_ru.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Сброс учетной записи
[[[SERVERNAME]]] - Подтверждение

Привет [[[USERNAME]]], [[[SERVERNAME]]] запрашивает сброс пароля учетной записи, нажмите на следующую ссылку, чтобы завершить процесс.

Нажмите здесь, чтобы сбросить пароль учетной записи.

Если вы не инициировали этот запрос, игнорируйте это письмо.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_sv.html b/emails/translations/account-reset-min_sv.html deleted file mode 100644 index a983bb3b..00000000 --- a/emails/translations/account-reset-min_sv.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Återställ konto
[[[SERVERNAME]]] - Verifiering

Hej [[[USERNAME]], [[[SERVERNAME]]] begär återställning av kontolösenord, klicka på följande länk för att slutföra processen.

Klicka här för att återställa ditt kontolösenord.

Om du inte initierade denna begäran, ignorerar du det här meddelandet.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_tr.html b/emails/translations/account-reset-min_tr.html deleted file mode 100644 index b563e5ef..00000000 --- a/emails/translations/account-reset-min_tr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Hesabı Sıfırlama
[[[SERVERNAME]]] - Doğrulama

Merhaba [[[USERNAME]]], [[[SERVERNAME]]] bir hesap şifresi sıfırlama talep ediyor, işlemi tamamlamak için aşağıdaki bağlantıya tıklayın.

Hesap şifrenizi sıfırlamak için burayı tıklayın.

Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.
\ No newline at end of file diff --git a/emails/translations/account-reset-min_zh-chs.html b/emails/translations/account-reset-min_zh-chs.html deleted file mode 100644 index 1d880c90..00000000 --- a/emails/translations/account-reset-min_zh-chs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-帐户重置
[[[SERVERNAME]]]-验证

[[[USERNAME]],你好, [[[SERVERNAME]]] 正在要求重置帐户密码,请单击以下连结以完成该过程。

单击此处重置您的帐户密码。

如果您没有发起此请求,请不理此邮件。
\ No newline at end of file diff --git a/emails/translations/account-reset-min_zh-cht.html b/emails/translations/account-reset-min_zh-cht.html deleted file mode 100644 index 9924e8b9..00000000 --- a/emails/translations/account-reset-min_zh-cht.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-帳戶重置
[[[SERVERNAME]]]-驗證

[[[USERNAME]],你好, [[[SERVERNAME]] 正在要求重置帳戶密碼,請單擊以下鏈結以完成該過程。

單擊此處重置你的帳戶密碼。

如果你沒有發起此請求,請不理此電郵。
\ No newline at end of file diff --git a/emails/translations/device-notify-min_cs.html b/emails/translations/device-notify-min_cs.html deleted file mode 100644 index f009fee3..00000000 --- a/emails/translations/device-notify-min_cs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] – Oznámení zařízení
[[[SERVERNAME]]] – Oznámení zařízení

Následující zařízení změnila svůj stav připojení.

Připojená zařízení:

[[[CONNECTIONS]]]

Odpojená zařízení:

[[[DISCONNECTIONS]]]

Chcete-li se odhlásit, klikněte zde do 1 hodiny od obdržení této zprávy.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_da.html b/emails/translations/device-notify-min_da.html deleted file mode 100644 index 7149beca..00000000 --- a/emails/translations/device-notify-min_da.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Enheds Notifikation
[[[SERVERNAME]]] - Enheds Notifikation

Følgende enheder har ændret deres forbindelsestilstand.

Forbundne enheder:

[[[CONNECTIONS]]]

Afbrudte enheder:

[[[DISCONNECTIONS]]]

For at afmelde, Klik her inden for 1 time efter at have modtaget denne besked.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_de.html b/emails/translations/device-notify-min_de.html deleted file mode 100644 index b0ca514c..00000000 --- a/emails/translations/device-notify-min_de.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] – Gerätebenachrichtigung
[[[SERVERNAME]]] – Gerätebenachrichtigung

Die folgenden Geräte haben ihren Verbindungsstatus geändert.

Verbundene Geräte:

[[[CONNECTIONS]]]

Getrennte Geräte:

[[[DISCONNECTIONS]]]

Deabonnieren, hier klicken innerhalb 1 Stunde nach erhalt dieser Nachricht.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_es.html b/emails/translations/device-notify-min_es.html deleted file mode 100644 index 11cec694..00000000 --- a/emails/translations/device-notify-min_es.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Notificación del dispositivo
[[[SERVERNAME]]] - Notificación del dispositivo

Los siguientes dispositivos han cambiado su estado de conexión.

Dispositivos conectados:

[[[CONNECTIONS]]]

Dispositivos desconectados:

[[[DISCONNECTIONS]]]

Para darse de baja, haz clic aquí en 1 hora desde la recepción de este mensaje.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_fi.html b/emails/translations/device-notify-min_fi.html deleted file mode 100644 index aa41d949..00000000 --- a/emails/translations/device-notify-min_fi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Laitteen ilmoitus
[[[SERVERNAME]]] - Laitteen ilmoitus

Seuraavat laitteet ovat muuttaneet yhteystilaa.

Kytketyt laitteet:

[[[CONNECTIONS]]]

Irrotetut laitteet:

[[[DISCONNECTIONS]]]

Lopettaa tilauksen, klikkaa tästä tunnin sisällä tämän viestin vastaanottamisesta.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_fr.html b/emails/translations/device-notify-min_fr.html deleted file mode 100644 index 97f63164..00000000 --- a/emails/translations/device-notify-min_fr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Notification de l'appareil
[[[SERVERNAME]]] - Notification de l'appareil

Ces appareils ont changé leur statut de connexion :

Appareils connectés :

[[[CONNECTIONS]]]

Appareils déconnectés :

[[[DISCONNECTIONS]]]

Pour se désinscrire, cliquez ici dans l'heure suivant la réception de ce message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_hi.html b/emails/translations/device-notify-min_hi.html deleted file mode 100644 index 16490f75..00000000 --- a/emails/translations/device-notify-min_hi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - डिवाइस नोटिफिकेशन
[[[SERVERNAME]]] - डिवाइस नोटिफिकेशन

निम्न उपकरणों ने अपनी कनेक्शन स्थिति बदल दी है।

जुड़ी हुई डिवाइसेज:

[[[CONNECTIONS]]]

डिस्कनेक्ट किए गए डिवाइस:

[[[DISCONNECTIONS]]]

सदस्यता रद्द करने के लिए, यहाँ क्लिक करें यह संदेश मिलने के 1 घंटे के भीतर।

\ No newline at end of file diff --git a/emails/translations/device-notify-min_it.html b/emails/translations/device-notify-min_it.html deleted file mode 100644 index 3039bfe8..00000000 --- a/emails/translations/device-notify-min_it.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Notifica dispositivo
[[[SERVERNAME]]] - Notifica dispositivo

I seguenti dispositivi hanno cambiato il loro stato di connessione.

Dispositivi collegati:

[[[CONNECTIONS]]]

Dispositivi disconnessi:

[[[DISCONNESSIONI]]]

Per annullare l'iscrizione, clicca qui entro 1 ora dalla ricezione di questo messaggio.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_ja.html b/emails/translations/device-notify-min_ja.html deleted file mode 100644 index 2284b03f..00000000 --- a/emails/translations/device-notify-min_ja.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-デバイス通知
[[[SERVERNAME]]]-デバイス通知

次のデバイスは接続状態を変更しました。

接続されているデバイス:

[[[CONNECTIONS]]]

切断されたデバイス:

[[[DISCONNECTIONS]]]

退会するには、 ここをクリック このメッセージを受け取ってから1時間以内。

\ No newline at end of file diff --git a/emails/translations/device-notify-min_ko.html b/emails/translations/device-notify-min_ko.html deleted file mode 100644 index 11083560..00000000 --- a/emails/translations/device-notify-min_ko.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, 여기를 클릭하십시오. within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_nl.html b/emails/translations/device-notify-min_nl.html deleted file mode 100644 index a3f8fef4..00000000 --- a/emails/translations/device-notify-min_nl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Apparaatmelding
[[[SERVERNAME]]] - Apparaatmelding

De volgende apparaten hebben hun verbindingsstatus gewijzigd.

Verbonden apparaten:

[[[CONNECTIONS]]]

Losgekoppelde apparaten:

[[[DISCONNECTIONS]]]

Uitschrijven, Klik hier binnen 1 uur na ontvangst van dit bericht.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_pl.html b/emails/translations/device-notify-min_pl.html deleted file mode 100644 index badbc30c..00000000 --- a/emails/translations/device-notify-min_pl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Powiadomienia Urządzenia
[[[SERVERNAME]]] - Powiadomienia Urządzenia

Przedstawione urządzenia zmieniły stan połączenia.

Podłączone urządzenia:

[[[CONNECTIONS]]]

Rozłączone urządzenia:

[[[DISCONNECTIONS]]]

By się wypisać. kliknij tutaj w ciągu 1 godziny od otrzymania wiadomości.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_pt-br.html b/emails/translations/device-notify-min_pt-br.html deleted file mode 100644 index 7bed9e4e..00000000 --- a/emails/translations/device-notify-min_pt-br.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Notificação do dispositivo
[[[SERVERNAME]]] - Notificação do dispositivo

Os seguintes dispositivos mudaram seus estados de conexão.

Dispositivos conectados

[[[CONNECTIONS]]]

Dispositivos desconectados

[[[DISCONNECTIONS]]]

Cancelar inscrição Clique aqui Com 1 hora após recebida está mensagem.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_pt.html b/emails/translations/device-notify-min_pt.html deleted file mode 100644 index ed67484e..00000000 --- a/emails/translations/device-notify-min_pt.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, Clique aqui within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_ru.html b/emails/translations/device-notify-min_ru.html deleted file mode 100644 index 6f01ce93..00000000 --- a/emails/translations/device-notify-min_ru.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Уведомление устройства
[[[SERVERNAME]]] - Уведомление устройства

Следующие устройства изменили свое состояние подключения.

Подключенные устройства:

[[[CONNECTIONS]]]

Отключенные устройства:

[[[DISCONNECTIONS]]]

Чтобы отписаться, кликните сюда в течение 1 часа после получения этого сообщения.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_sv.html b/emails/translations/device-notify-min_sv.html deleted file mode 100644 index 7c1b40e3..00000000 --- a/emails/translations/device-notify-min_sv.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, Klicka här within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_tr.html b/emails/translations/device-notify-min_tr.html deleted file mode 100644 index 7d0d5d3a..00000000 --- a/emails/translations/device-notify-min_tr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Cihaz Bildirimi
[[[SERVERNAME]]] - Cihaz Bildirimi

Aşağıdaki cihazlar bağlantı durumlarını değiştirdi.

Bağlı cihazlar:

[[[CONNECTIONS]]]

Bağlantısı kesilen cihazlar:

[[[DISCONNECTIONS]]]

Abonelikten çıkmak, buraya Tıkla Bu mesajı aldıktan sonra 1 saat içinde.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_zh-chs.html b/emails/translations/device-notify-min_zh-chs.html deleted file mode 100644 index 4aea50d0..00000000 --- a/emails/translations/device-notify-min_zh-chs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, 点击这里 within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/device-notify-min_zh-cht.html b/emails/translations/device-notify-min_zh-cht.html deleted file mode 100644 index 69cae13a..00000000 --- a/emails/translations/device-notify-min_zh-cht.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Device Notification
[[[SERVERNAME]]] - Device Notification

The following devices have changed their connection state.

Connected devices:

[[[CONNECTIONS]]]

Disconnected devices:

[[[DISCONNECTIONS]]]

To unsubscribe, 點擊這裡 within 1 hour of getting this message.

\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_cs.html b/emails/translations/mesh-invite-min_cs.html deleted file mode 100644 index e8af1eb5..00000000 --- a/emails/translations/mesh-invite-min_cs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Pozvánka
[[[SERVERNAME]]] - Instalace agenta

Dobrý den, [[[NAME]]],

Uživatel [[[USERNAME]]] na serveru [[[SERVERNAME]]] vás žádá o instalaci softwaru pro spuštění relace dálkového ovládání.

Zpráva: [[[MSG]]]

Kliknutím sem stáhnete MeshAgent pro Windows.

Kliknutím sem stáhnete MeshAgent pro Apple OSX.

V případě systému Linux vyjměte a vložte do terminálu a nainstalujte agenta:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Chcete-li nainstalovat software, klikněte zde a postupujte podle pokynů.

Pokud jste tento požadavek nezačali, ignorujte tento e-mail.

S pozdravem,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_da.html b/emails/translations/mesh-invite-min_da.html deleted file mode 100644 index 131e46d1..00000000 --- a/emails/translations/mesh-invite-min_da.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Invitation
[[[SERVERNAME]]] - Agent installation

Hej [[[NAME]]]

Bruger [[[USERNAME]]] på serveren [[[SERVERNAME]]] anmoder dig om at installere software for at starte en fjernbetjeningssession.

Meddelelse: [[[MSG]]]

Klik her for at downloade MeshAgent til Windows.

Klik her for at downloade MeshAgent til Apple OSX.

For Linux skal du klippe og indsætte følgende i en terminal for at installere agenten:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

For at installere softwaren, Klik her og følg instruktionerne.

Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.

Venlig hilsen,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_de.html b/emails/translations/mesh-invite-min_de.html deleted file mode 100644 index 2198a768..00000000 --- a/emails/translations/mesh-invite-min_de.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Einladung
[[[SERVERNAME]]] - Agenteninstallation

Hallo [[[NAME]]],

Benutzer [[[USERNAME]]] auf dem Server [[[SERVERNAME]]] fordert Sie auf, Software zu installieren, um eine Fernsteuerungssitzung zu starten.

Botschaft: [[[MSG]]]

Klicken Sie hier, um den MeshAgent für Windows herunterzuladen.

Klicken Sie hier, um den MeshAgent für Apple OSX herunterzuladen.

Schneiden Sie unter Linux Folgendes aus und fügen Sie es in ein Terminal ein, um den Agenten zu installieren:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Um die Software zu installieren, hier klicken und folgen Sie den Anweisungen.

Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.

Freundliche Grüße,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_es.html b/emails/translations/mesh-invite-min_es.html deleted file mode 100644 index 20cfcd91..00000000 --- a/emails/translations/mesh-invite-min_es.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Invitación
[[[SERVERNAME]]] - Instalación de Agente

Hola [[[NAME]]],

Usuario [[[USERNAME]]] en servidor [[[SERVERNAME]]] te solicita que instales el software para iniciar una sesión de control remoto.

Mensaje: [[[MSG]]]

Haz clic aquí para descargar el Agente Mesh para Windows.

Haz clic aquí para descargar el Agente Mesh para Apple OSX.

Para Linux, copia y pega lo siguiente en la terminal para instalar el agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Para instalar el software, haz clic aquí y sigue las instrucciones.

Si tu no iniciaste este requerimiento, por favor ignora este correo.

Atentamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_fi.html b/emails/translations/mesh-invite-min_fi.html deleted file mode 100644 index cc8b0bf0..00000000 --- a/emails/translations/mesh-invite-min_fi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Kutsu
[[[SERVERNAME]]] - Agentin asennus

Hei [[[NAME]]],

Käyttäjä [[[USERNAME]]] palvelimella [[[SERVERNAME]]] pyytää sinua asentamaan ohjelmiston etäohjausistunnon aloittamiseksi.

Viesti: [[[MSG]]]

Napsauta tätä ladataksesi MeshAgent Windows:lle.

Napsauta tätä ladataksesi MeshAgent Apple OSX:lle.

Linux: leikkaa ja liitä seuraava päätelaitteeseen agentin asentamiseksi:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Asentaaksesi ohjelman, klikkaa tästä ja seuraa ohjeita.

Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.

Ystävällisin terveisin,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_fr.html b/emails/translations/mesh-invite-min_fr.html deleted file mode 100644 index 7ba16eed..00000000 --- a/emails/translations/mesh-invite-min_fr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Invitation
[[[SERVERNAME]]] - Installation de l'agent

Bonjour [[[NAME]]],

Utilisateur [[[USERNAME]]] sur le serveur [[[SERVERNAME]]] vous demande d'installer un logiciel pour démarrer une session de contrôle à distance.

Message: [[[MSG]]]

Cliquez ici pour télécharger le MeshAgent pour Windows.

Cliquez ici pour télécharger le MeshAgent pour Apple OSX.

Pour Linux, copiez et collez les éléments suivants dans un terminal pour installer l'agent:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Cliquez ici pour télécharger l'assistant Meshcentral pour Windows.

Pour installer le logiciel, cliquez ici et suivez les instructions.

Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.

Meilleures salutations,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_hi.html b/emails/translations/mesh-invite-min_hi.html deleted file mode 100644 index a95b9ab2..00000000 --- a/emails/translations/mesh-invite-min_hi.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - निमंत्रण
[[[SERVERNAME]]] - एजेंट स्थापना

नमस्कार [[[NAME]]],

उपयोगकर्ता [[[USERNAME]]] सर्वर पर [[[SERVERNAME]]] रिमोट कंट्रोल सेशन शुरू करने के लिए आपको सॉफ्टवेयर इंस्टॉल करने का अनुरोध कर रहा है।

संदेश: [[[MSG]]]

विंडोज के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।

Apple OSX के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।

लिनक्स में, एजेंट को स्थापित करने के लिए टर्मिनल में निम्नलिखित को काटें और चिपकाएँ:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

सॉफ़्टवेयर स्थापित करने के लिए, यहाँ क्लिक करें और निर्देशों का पालन करें।

यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।

सादर,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_it.html b/emails/translations/mesh-invite-min_it.html deleted file mode 100644 index f51102ba..00000000 --- a/emails/translations/mesh-invite-min_it.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Invito
[[[SERVERNAME]]] - Installazione dell'agente

Salve [[[NAME]]],

Utente [[[USERNAME]]] sul server [[[SERVERNAME]]] chiede di installare un software per avviare una sessione di controllo remoto.

Messaggio: [[[MSG]]]

Fare clic qui per scaricare MeshAgent per Windows.

Fare clic qui per scaricare MeshAgent per Apple OSX.

Per Linux, taglia e incolla quanto segue in un terminale per installare l'agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Per installare il software, clicca qui e segui le istruzioni.

Se non hai avviato questa richiesta, ignora questo messaggio.

I migliori saluti,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_ja.html b/emails/translations/mesh-invite-min_ja.html deleted file mode 100644 index ce3e7966..00000000 --- a/emails/translations/mesh-invite-min_ja.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - 招待
[[[SERVERNAME]]] - エージェントのインストール

[[[NAME]]]様

サーバー上のユーザー[[[USERNAME]]] [[[SERVERNAME]]] リモートコントロールセッションを開始するソフトウェアをインストールするように要求しています。

メッセージ: [[[MSG]]]

Windows用のMeshAgentをダウンロードするには、ここをクリックしてください。

ここをクリックして、Apple OSX用のMeshAgentをダウンロードしてください。

Linuxの場合は、ターミナルで以下をカットアンドペーストしてエージェントをインストールします。

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

ソフトウェアをインストールするには、 ここをクリック 指示に従ってください。

このリクエストを開始していない場合は、このメールを無視してください。

宜しくお願いします、
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_ko.html b/emails/translations/mesh-invite-min_ko.html deleted file mode 100644 index 7c645fda..00000000 --- a/emails/translations/mesh-invite-min_ko.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - 초대
[[[SERVERNAME]]] - 에이전트 설치

안녕하세요, [[[NAME]]]님.

서버의 [[[USERNAME]]] 사용자 [[[SERVERNAME]]] 원격 제어 세션을 시작하기 위해 소프트웨어 설치를 요청하고 있습니다.

메시지: [[[MSG]]]

Windows를 위한 MeshAgent를 다운로드 하려면 여기를 클릭하십시오.

Apple OSX를 위한 MeshAgent를 다운로드 하려면 여기를 클릭하십시오.

Linux의 경우, 다음을 잘라내어 터미널에 붙여 넣어 에이전트를 설치하십시오.

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

소프트웨어를 설치하려면, 여기를 클릭하십시오. 그리고 다음 지시들을 따르십시오.

이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.

최고의 안부를 전합니다,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_nl.html b/emails/translations/mesh-invite-min_nl.html deleted file mode 100644 index aadbda8d..00000000 --- a/emails/translations/mesh-invite-min_nl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Uitnodiging
[[[SERVERNAME]]] - Agent installatie

Hallo [[[NAME]]],

Gebruiker [[[USERNAME]]] op server [[[SERVERNAME]]] vraagt u om de software te installeren om een ondersteunings sessie te starten.

Bericht: [[[MSG]]]

Klik hier om de MeshAgent te downloaden voor Windows.

Klik hier om de MeshAgent te downloaden voor Apple OSX.

Voor Linux, knip het volgende en plak dit in een terminal om de agent te installeren:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Klik hier om de MeshCentral Assistant voor Windows te downloaden.

Om de software te installeren, Klik hier en volg de instructies.

Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.

Vriendelijke groeten,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_pl.html b/emails/translations/mesh-invite-min_pl.html deleted file mode 100644 index 6872b485..00000000 --- a/emails/translations/mesh-invite-min_pl.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Zaproszenie
[[[SERVERNAME]]] - Instalacja Agenta

Witaj [[[NAME]]],

Użytkownik [[[USERNAME]]] na serwerze [[[SERVERNAME]]] prosi o zainstalowanie oprogramowania w celu rozpoczęcia sesji zdalnego sterowania.

Wiadomość: [[[MSG]]]

Kliknij tutaj aby pobrać MeshAgent dla Windows.

Kliknij tutaj aby pobrać MeshAgent dla Apple OSX.

W systemie Linuks, wytnij i wklej poniższe polecenia w terminalu, aby zainstalować agenta:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Kliknij tutaj by pobrać Asystenta MeshCentral dla Windows.

Aby zainstalować oprogramowanie, kliknij tutaj i postępuj zgodnie z instrukcjami.

Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.

Z wyrazami szacunku,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_pt-br.html b/emails/translations/mesh-invite-min_pt-br.html deleted file mode 100644 index d2084280..00000000 --- a/emails/translations/mesh-invite-min_pt-br.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Convite
[[[SERVERNAME]]] - Instalação do Agente

Olá [[[NAME]]],

Usuário [[[USERNAME]]] no servidor [[[SERVERNAME]]] está solicitando a instalação de um software para iniciar uma sessão de controle remoto.

Mensagem: [[[MSG]]]

Clique aqui para baixar o MeshAgent para Windows.

Clique aqui para baixar o MeshAgent para Apple OSX.

Para Linux, recorte e cole o seguinte em um terminal para instalar o agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Clique aqui para baixar o Mesh Central Assistant para Windows

Para instalar o software, Clique aqui e siga as instruções.

Se você não iniciou esta solicitação, ignore este e-mail.

Atenciosamente,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_pt.html b/emails/translations/mesh-invite-min_pt.html deleted file mode 100644 index 7af9f395..00000000 --- a/emails/translations/mesh-invite-min_pt.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Convite
[[[SERVERNAME]]] - Instalação do Agente

Olá [[[NAME]]],

Usuário [[[USERNAME]]] no servidor [[[SERVERNAME]]] está solicitando a instalação de um software para iniciar uma sessão de controle remoto.

Mensagem: [[[MSG]]]

Clique aqui para baixar o MeshAgent para Windows.

Clique aqui para baixar o MeshAgent para Apple OSX.

Para Linux, recorte e cole o seguinte em um terminal para instalar o agente:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Para instalar o software, Clique aqui e siga as instruções.

Se você não iniciou esta solicitação, ignore este e-mail.

Cumprimentos,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_ru.html b/emails/translations/mesh-invite-min_ru.html deleted file mode 100644 index 392d8af9..00000000 --- a/emails/translations/mesh-invite-min_ru.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Приглашение
[[[SERVERNAME]]] - Установка агента

Здравствуйте, [[[NAME]]],

Пользователь [[[USERNAME]]] на сервере [[[SERVERNAME]]] просит вас установить программное обеспечение, чтобы начать сеанс удаленного управления.

Сообщение: [[[MSG]]]

Нажмите здесь, чтобы загрузить MeshAgent для Windows.

Нажмите здесь, чтобы загрузить MeshAgent для Apple OSX.

Для Linux вырезайте и вставляйте в терминал следующее, чтобы установить агент:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Нажмите здесь, чтобы загрузить MeshCentral Assistant для Windows.

Чтобы установить программное обеспечение, кликните сюда и следуйте инструкциям.

Если вы не инициировали этот запрос, игнорируйте это письмо.

С уважением,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_sv.html b/emails/translations/mesh-invite-min_sv.html deleted file mode 100644 index 1a8c9f58..00000000 --- a/emails/translations/mesh-invite-min_sv.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Inbjudan
[[[SERVERNAME]]] - Agentinstallation

Hej [[[NAME]]]

Användare [[[USERNAME]]] på servern [[[SERVERNAME]]] ber dig att installera programvara för att starta en fjärrkontrollsession.

Meddelande: [[[MSG]]]

Klicka här för att ladda ner MeshAgent för Windows.

Klicka här för att ladda ner MeshAgent för Apple OSX.

För Linux, klipp och klistra in följande i en terminal för att installera agenten:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

För att installera programvaran, Klicka här och följ instruktionerna.

Om du inte initierade denna begäran, ignorerar du det här meddelandet.

Vänliga hälsningar,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_tr.html b/emails/translations/mesh-invite-min_tr.html deleted file mode 100644 index bad7eac1..00000000 --- a/emails/translations/mesh-invite-min_tr.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Davet
[[[SERVERNAME]]] - Agent Kurulumu

Merhaba [[[NAME]]],

Sunucudaki kullanıcı [[[USERNAME]]] [[[SERVERNAME]]] bir uzaktan kontrol oturumu başlatmak için yazılım yüklemenizi istiyor.

İleti: [[[MSG]]]

Windows için MeshAgent'ı indirmek için buraya tıklayın.

Apple OSX için MeshAgent'ı indirmek için burayı tıklayın.

Linux için, aracıyı yüklemek için aşağıdakileri kesip bir terminale yapıştırın:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

Yazılımı kurmak için, buraya Tıkla ve talimatları izleyin.

Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.

Saygılarımla,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_zh-chs.html b/emails/translations/mesh-invite-min_zh-chs.html deleted file mode 100644 index be76a0cc..00000000 --- a/emails/translations/mesh-invite-min_zh-chs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-邀请
[[[SERVERNAME]]]-代理程序安装

您好[[[NAME]]],

服务器上的使用者[[[USERNAME]]] [[[SERVERNAME]]] 正在要求您安装软件以启动远程控制会话。

消息: [[[MSG]]]

单击此处下载适用于Windows的MeshAgent。

单击此处下载适用于Apple OSX的MeshAgent。

对于Linux,将以下内容剪切并粘贴到终端中以安装代理软件:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

要安装软件, 点击这里 并按照说明进行操作。

如果您没有发起此请求,请不理此邮件。

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/emails/translations/mesh-invite-min_zh-cht.html b/emails/translations/mesh-invite-min_zh-cht.html deleted file mode 100644 index ee4a9a09..00000000 --- a/emails/translations/mesh-invite-min_zh-cht.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]]-邀請
[[[SERVERNAME]]]-代理程序安裝

你好[[[NAME]]],

伺服器上的使用者[[[USERNAME]]] [[[SERVERNAME]] 正在要求你安裝軟體以啟動遠程控制會話。

訊息: [[[MSG]]]

單擊此處下載適用於Windows的MeshAgent。

單擊此處下載適用於Apple OSX的MeshAgent。

對於Linux,將以下內容剪切並粘貼到終端中以安裝代理軟體:

wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'

Click here to download the MeshCentral Assistant for Windows.

要安裝軟體, 點擊這裡 並按照說明進行操作。

如果你沒有發起此請求,請不理此電郵。

最好的祝福,
[[[USERNAME]]]
\ No newline at end of file diff --git a/package.json b/package.json index 805639c1..e0ebd370 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "sample-config-advanced.json" ], "dependencies": { + "@yetzt/nedb": "^1.8.0", "archiver": "^5.3.1", "body-parser": "^1.19.0", "cbor": "~5.2.0", @@ -45,13 +46,23 @@ "express": "^4.17.0", "express-handlebars": "^5.3.5", "express-ws": "^4.0.0", + "html-minifier": "^4.0.0", + "image-size": "^1.0.1", "ipcheck": "^0.1.0", - "minimist": "^1.2.5", + "jsdom": "^20.0.0", + "loadavg-windows": "^1.1.1", + "minify-js": "0.0.4", + "minimist": "^1.2.6", "multiparty": "^4.2.1", - "@yetzt/nedb": "^1.8.0", "node-forge": "^1.0.0", + "node-windows": "^0.1.4", + "otplib": "^10.2.3", + "pg": "^8.7.1", + "pgtools": "^0.3.2", + "web-push": "^3.5.0", "ws": "^5.2.3", - "yauzl": "^2.10.0" + "yauzl": "^2.10.0", + "yubikeyotp": "^0.2.0" }, "engines": { "node": ">=10.0.0" diff --git a/public/translate.bat b/public/translate.bat index 2b94c869..b1320d12 100644 --- a/public/translate.bat +++ b/public/translate.bat @@ -1,7 +1,7 @@ @ECHO OFF CD ..\translate -%LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node translate.js minifyall -%LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node translate.js translateall -%LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node translate.js extractall +%LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node translate.js minifyall +%LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node translate.js translateall +%LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node translate.js extractall DEL ..\emails\translations\*-min_* Pause \ No newline at end of file diff --git a/translate/translate-node12.bat b/translate/translate-node12.bat deleted file mode 100644 index 9a98a8da..00000000 --- a/translate/translate-node12.bat +++ /dev/null @@ -1,4 +0,0 @@ -@ECHO OFF -%LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node translate.js minifyall -%LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node translate.js translateall -%LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node translate.js extractall \ No newline at end of file diff --git a/translate/translate-node14.bat b/translate/translate-node14.bat new file mode 100644 index 00000000..7bff1afb --- /dev/null +++ b/translate/translate-node14.bat @@ -0,0 +1,4 @@ +@ECHO OFF +%LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node translate.js minifyall +%LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node translate.js translateall +%LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node translate.js extractall \ No newline at end of file diff --git a/translate/translate.json b/translate/translate.json index fc50fe41..6b59cfd5 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -21367,7 +21367,7 @@ "zh-chs": "在远程计算机上显示通知", "zh-cht": "在遠程電腦上顯示通知", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -22235,7 +22235,7 @@ "zh-chs": "将远程剪贴板下载到本地剪贴板", "zh-cht": "將遠程剪貼板下載到本地剪貼板", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -37365,7 +37365,7 @@ "tr": "Uzak bilgisayarı kilitle", "zh-chs": "锁定远程计算机", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -45374,7 +45374,7 @@ "zh-chs": "在远程计算机上打开一个网址", "zh-cht": "在遠程電腦上打開一個網址", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -45400,7 +45400,7 @@ "zh-cht": "打開此電腦的聊天窗口", "xloc": [ "default.handlebars->41->906", - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -49760,7 +49760,7 @@ "zh-chs": "将远程桌面会话记录到档案", "zh-cht": "將遠程桌面會話記錄到檔案", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -50067,7 +50067,7 @@ "zh-chs": "刷新桌面", "zh-cht": "刷新桌面", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -51363,7 +51363,7 @@ "tr": "Uzak giriş kilitli", "zh-chs": "远程输入被锁定", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -51387,7 +51387,7 @@ "tr": "Uzaktan giriş kilidi açıldı", "zh-chs": "远程输入解锁", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -54656,7 +54656,7 @@ "zh-chs": "保存远程桌面的屏幕截图", "zh-cht": "保存遠程桌面的屏幕截圖", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7", + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1", "sharing.handlebars->p11->deskarea0->deskarea4->1" ] }, @@ -57666,7 +57666,7 @@ "ru": "Поделиться устройством с гостем", "tr": "Cihazı bir misafirle paylaşın", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -63903,7 +63903,7 @@ "zh-chs": "切换远程桌面背景", "zh-cht": "切換遠程桌面背景", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -66292,7 +66292,7 @@ "zh-chs": "将本地剪貼板上传到远程设备", "zh-cht": "將本地剪貼板上傳到遠程裝置", "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" + "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1" ] }, { @@ -75543,10 +75543,7 @@ ] }, { - "en": "Á/span>", - "xloc": [ - "default.handlebars->container->column_l->p11->deskarea0->deskarea4->1->7" - ] + "en": "Á/span>" }, { "cs": "↺", diff --git a/views/default.handlebars b/views/default.handlebars index 10bc78c6..07876c20 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -696,7 +696,7 @@ -   +   From efd4dac6e8eccb44ff4be7aea49281fd5df93348 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 29 Jun 2022 12:25:34 -0700 Subject: [PATCH 081/105] Fixed authenticode-js unsign when changing resources, #4190 --- authenticode.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/authenticode.js b/authenticode.js index 8d62759b..213d3d4d 100644 --- a/authenticode.js +++ b/authenticode.js @@ -1937,7 +1937,6 @@ function start() { }); return; } - console.log("Done."); } if (command == 'unsign') { // Unsign an executable if (typeof args.exe != 'string') { console.log("Missing --exe [filename]"); return; } @@ -1952,7 +1951,10 @@ function start() { } } else { console.log("Changing resources and unsigning to " + args.out); - exe.writeExecutable(args, null); // Unsigning with resources decoded and re-encoded. + exe.writeExecutable(args, null, function (err) { // Unsigning with resources decoded and re-encoded. + if (err == null) { console.log("Done."); } else { console.log(err); } + if (exe != null) { exe.close(); } + }); } } if (command == 'createcert') { // Create a code signing certificate and private key From 0cc213193d9ad0632b09af194314eb4aeda9e1a5 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 29 Jun 2022 12:26:30 -0700 Subject: [PATCH 082/105] Dependency fix --- package.json | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index e0ebd370..805639c1 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "sample-config-advanced.json" ], "dependencies": { - "@yetzt/nedb": "^1.8.0", "archiver": "^5.3.1", "body-parser": "^1.19.0", "cbor": "~5.2.0", @@ -46,23 +45,13 @@ "express": "^4.17.0", "express-handlebars": "^5.3.5", "express-ws": "^4.0.0", - "html-minifier": "^4.0.0", - "image-size": "^1.0.1", "ipcheck": "^0.1.0", - "jsdom": "^20.0.0", - "loadavg-windows": "^1.1.1", - "minify-js": "0.0.4", - "minimist": "^1.2.6", + "minimist": "^1.2.5", "multiparty": "^4.2.1", + "@yetzt/nedb": "^1.8.0", "node-forge": "^1.0.0", - "node-windows": "^0.1.4", - "otplib": "^10.2.3", - "pg": "^8.7.1", - "pgtools": "^0.3.2", - "web-push": "^3.5.0", "ws": "^5.2.3", - "yauzl": "^2.10.0", - "yubikeyotp": "^0.2.0" + "yauzl": "^2.10.0" }, "engines": { "node": ">=10.0.0" From 22edf8d45f8f7b0704239639592be6eb87a75ab9 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 29 Jun 2022 14:16:48 -0700 Subject: [PATCH 083/105] Improved web relay cookie handling, #4172 --- apprelays.js | 54 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/apprelays.js b/apprelays.js index 2002cea4..3dc70282 100644 --- a/apprelays.js +++ b/apprelays.js @@ -84,7 +84,7 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, var tunnels = {}; // Any HTTP cookie set by the device is going to be shared between all tunnels to that device. - obj.webCookie = null; + obj.webCookies = {}; // Events obj.closed = false; @@ -203,10 +203,11 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // Construct the HTTP request var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; - request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; - const blockedHeaders = ['origin', 'host', 'cookie']; // These are headers we do not forward + const blockedHeaders = ['origin', 'cookie']; // These are headers we do not forward for (var i in req.headers) { if (blockedHeaders.indexOf(i) == -1) { request += i + ': ' + req.headers[i] + '\r\n'; } } - if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. + var cookieStr = ''; + for (var i in parent.webCookies) { if (cookieStr != '') { cookieStr += '; ' } cookieStr += (i + '=' + parent.webCookies[i].value); } + if (cookieStr.length > 0) { request += 'cookie: ' + cookieStr + '\r\n' } // If we have session cookies, set them in the header here request += '\r\n'; if (req.headers['content-length'] != null) { @@ -244,14 +245,13 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (i > 0) { baseurl = req.url.substring(0, i); } if (baseurl.endsWith('/.websocket')) { req.url = baseurl.substring(0, baseurl.length - 11) + ((i < 1) ? '' : req.url.substring(i)); } - //console.log('processWebSocket', obj.tunnelId, req.url); - - // Construct the HTTP request and send it out + // Construct the HTTP request var request = req.method + ' ' + req.url + ' HTTP/' + req.httpVersion + '\r\n'; - request += 'host: ' + obj.addr + ':' + obj.port + '\r\n'; - const blockedHeaders = ['origin', 'host', 'cookie', 'sec-websocket-extensions']; // These are headers we do not forward + const blockedHeaders = ['origin', 'cookie', 'sec-websocket-extensions']; // These are headers we do not forward for (var i in req.headers) { if (blockedHeaders.indexOf(i) == -1) { request += i + ': ' + req.headers[i] + '\r\n'; } } - if (parent.webCookie != null) { request += 'cookie: ' + parent.webCookie + '\r\n' } // If we have a sessin cookie, use it. + var cookieStr = ''; + for (var i in parent.webCookies) { if (cookieStr != '') { cookieStr += '; ' } cookieStr += (i + '=' + parent.webCookies[i].value); } + if (cookieStr.length > 0) { request += 'cookie: ' + cookieStr + '\r\n' } // If we have session cookies, set them in the header here request += '\r\n'; send(Buffer.from(request)); @@ -445,7 +445,13 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { for (var i in obj.socketHeader) { if (i != 0) { var x2 = obj.socketHeader[i].indexOf(':'); - obj.socketXHeader[obj.socketHeader[i].substring(0, x2).toLowerCase()] = obj.socketHeader[i].substring(x2 + 2); + const n = obj.socketHeader[i].substring(0, x2).toLowerCase(); + const v = obj.socketHeader[i].substring(x2 + 2); + if (n == 'set-cookie') { // Since "set-cookie" can be present many times in the header, handle it as an array of values + if (obj.socketXHeader[n] == null) { obj.socketXHeader[n] = [v]; } else { obj.socketXHeader[n].push(v); } + } else { + obj.socketXHeader[n] = v; + } } } @@ -568,9 +574,31 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { // If there is a header, send it if (header != null) { obj.res.status(parseInt(header.Directive[1])); // Set the status - const blockHeaders = ['Directive']; // These are headers we do not forward + const blockHeaders = ['Directive', 'sec-websocket-extensions']; // We do not forward these headers for (var i in header) { - if (i == 'set-cookie') { parent.webCookie = header[i]; } // Keep the cookie, don't forward it + if (i == 'set-cookie') { + for (var ii in header[i]) { + // Decode the new cookie + //console.log('set-cookie', header[i][ii]); + const cookieSplit = header[i][ii].split(';'); + var newCookieName = null, newCookie = {}; + for (var j in cookieSplit) { + var l = cookieSplit[j].indexOf('='), k = null, v = null; + if (l == -1) { k = cookieSplit[j].trim(); } else { k = cookieSplit[j].substring(0, l).trim(); v = cookieSplit[j].substring(l + 1).trim(); } + if (j == 0) { newCookieName = k; newCookie.value = v; } else { newCookie[k.toLowerCase()] = (v == null) ? true : v; } + } + if (newCookieName != null) { + if ((typeof newCookie['max-age'] == 'string') && (parseInt(newCookie['max-age']) <= 0)) { + delete parent.webCookies[newCookieName]; // Remove a expired cookie + //console.log('clear-cookie', newCookieName); + } else if (((newCookie.secure != true) || (obj.tls != null))) { + parent.webCookies[newCookieName] = newCookie; // Keep this cookie in the session + if (newCookie.httponly != true) { obj.res.set(i, header[i]); } // if the cookie is not HTTP-only, forward it to the browser. We need to do this to allow JavaScript to read it. + //console.log('new-cookie', newCookieName, newCookie); + } + } + } + } else if (blockHeaders.indexOf(i) == -1) { obj.res.set(i, header[i]); } // Set the headers if not blocked } obj.res.set('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;"); // Set an "allow all" policy, see if the can restrict this in the future From c22219f903dbe3d0c2ddedf2dcf73421191499b8 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 29 Jun 2022 14:18:24 -0700 Subject: [PATCH 084/105] Fixed setclip bug where success was sent prematurely for Windows Service --- agents/meshcore.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/agents/meshcore.js b/agents/meshcore.js index e8d3b723..54e12a23 100644 --- a/agents/meshcore.js +++ b/agents/meshcore.js @@ -1365,13 +1365,18 @@ function handleServerCommand(data) { } case 'setclip': { // Set the load clipboard to a user value - if (typeof data.data == 'string') { + if (typeof data.data == 'string') + { MeshServerLogEx(22, [data.data.length], "Setting clipboard content, " + data.data.length + " byte(s)", data); - if (require('MeshAgent').isService) { - if (process.platform != 'win32') { + if (require('MeshAgent').isService) + { + if (process.platform != 'win32') + { require('clipboard').dispatchWrite(data.data); + mesh.SendCommand({ action: 'msg', type: 'setclip', sessionid: data.sessionid, success: true }); } - else { + else + { var clipargs = data.data; var uid = require('user-sessions').consoleUid(); var user = require('user-sessions').getUsername(uid); @@ -1381,20 +1386,24 @@ function handleServerCommand(data) { this._dispatcher = require('win-dispatcher').dispatch({ user: user, modules: [{ name: 'clip-dispatch', script: "module.exports = { dispatch: function dispatch(val) { require('clipboard')(val); process.exit(); } };" }], launch: { module: 'clip-dispatch', method: 'dispatch', args: [clipargs] } }); this._dispatcher.parent = this; //require('events').setFinalizerMetadata.call(this._dispatcher, 'clip-dispatch'); - this._dispatcher.on('connection', function (c) { + this._dispatcher.on('connection', function (c) + { this._c = c; this._c.root = this.parent; - this._c.on('end', function () { + this._c.on('end', function () + { this.root._dispatcher = null; this.root = null; + mesh.SendCommand({ action: 'msg', type: 'setclip', sessionid: data.sessionid, success: true }); }); }); } } - else { + else + { require("clipboard")(data.data); + mesh.SendCommand({ action: 'msg', type: 'setclip', sessionid: data.sessionid, success: true }); } // Set the clipboard - mesh.SendCommand({ action: 'msg', type: 'setclip', sessionid: data.sessionid, success: true }); } break; } From d2b39fef3e488f6f0cc01432895872e87a9f6109 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 29 Jun 2022 14:44:16 -0700 Subject: [PATCH 085/105] Improved tunnel clean up, #4172 --- apprelays.js | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/apprelays.js b/apprelays.js index 3dc70282..502ec760 100644 --- a/apprelays.js +++ b/apprelays.js @@ -82,6 +82,7 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, var pendingRequests = []; var nextTunnelId = 1; var tunnels = {}; + var errorCount = 0; // If we keep closing tunnels without processing requests, fail the requests // Any HTTP cookie set by the device is going to be shared between all tunnels to that device. obj.webCookies = {}; @@ -121,6 +122,12 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, // Handle request function handleNextRequest() { + // if there are not pending requests, do nothing + if (pendingRequests.length == 0) return; + + // If the errorCount is high, something is really wrong, we are opening lots of tunnels and not processing any requests. + if (errorCount > 5) { close(); return; } + // Check to see if any of the tunnels are free var count = 0; for (var i in tunnels) { @@ -140,12 +147,10 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, function launchNewTunnel() { // Launch a new tunnel const tunnel = module.exports.CreateWebRelay(obj, db, args, domain); - tunnel.onclose = function (tunnelId) { + tunnel.onclose = function (tunnelId, processedCount) { + if (processedCount == 0) { errorCount++; } // If this tunnel closed without processing any requests, mark this as an error delete tunnels[tunnelId]; - // Count how many non-websocket tunnels are active - var count = 0; - for (var i in tunnels) { count += (tunnels[i].isWebSocket ? 0 : 1); } - if (count == 0) { launchNewTunnel(); } + handleNextRequest(); } tunnel.onconnect = function (tunnelId) { if (pendingRequests.length > 0) { @@ -154,6 +159,7 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, } } tunnel.oncompleted = function (tunnelId) { + errorCount = 0; // Something got completed, clear any error count if (pendingRequests.length > 0) { const x = pendingRequests.shift(); if (x[2] == true) { tunnels[tunnelId].processWebSocket(x[0], x[1]); } else { tunnels[tunnelId].processRequest(x[0], x[1]); } @@ -166,11 +172,21 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, // Close all tunnels function close() { + // Set the session as closed if (obj.closed == true) return; obj.closed = true; + + // Close all tunnels for (var i in tunnels) { tunnels[i].close(); } tunnels = null; + + // Close any pending requests + for (var i in pendingRequests) { if (pendingRequests[i][2] == true) { pendingRequests[i][1].end(); } else { pendingRequests[i][1].close(); } } + + // Notify of session closure if (obj.onclose) { obj.onclose(obj.userid + '/' + obj.sessionId); } + + // Cleanup delete obj.userid; delete obj.lastOperation; } @@ -189,6 +205,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { obj.relayActive = false; obj.closed = false; obj.isWebSocket = false; + obj.processedRequestCount = 0; const constants = (require('crypto').constants ? require('crypto').constants : require('constants')); // require('constants') is deprecated in Node 11.10, use require('crypto').constants instead. // Events @@ -341,7 +358,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if (obj.ws) { obj.ws.close(); delete obj.ws; } // Event disconnection - if (obj.onclose) { obj.onclose(obj.tunnelId); } + if (obj.onclose) { obj.onclose(obj.tunnelId, obj.processedRequestCount); } obj.relayActive = false; }; @@ -461,6 +478,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { if ((obj.socketXHeader['transfer-encoding'] != null) && (obj.socketXHeader['transfer-encoding'].toLowerCase() == 'chunked')) { obj.socketParseState = 1; } if (obj.isWebSocket) { if ((obj.socketXHeader['connection'] != null) && (obj.socketXHeader['connection'].toLowerCase() == 'upgrade')) { + obj.processedRequestCount++; obj.socketParseState = 2; // Switch to decoding websocket frames obj.ws._socket.resume(); // Resume the browser's websocket } else { @@ -615,6 +633,7 @@ module.exports.CreateWebRelay = function (parent, db, args, domain) { delete obj.res; // Event completion + obj.processedRequestCount++; if (obj.oncompleted) { obj.oncompleted(obj.tunnelId); } } } else { From aa58afcc3a5d738177ab7a7b6d0228d72af82b85 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 29 Jun 2022 15:08:46 -0700 Subject: [PATCH 086/105] Version 1.0.43 --- agents/compressModules.bat | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/agents/compressModules.bat b/agents/compressModules.bat index cc5af30b..dd9d8444 100644 --- a/agents/compressModules.bat +++ b/agents/compressModules.bat @@ -7,14 +7,14 @@ MD modules_meshcore_min "..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe" meshcmd.js REM del meshcore.min.js -REM %LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node ..\translate\translate.js minify meshcore.js +REM %LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node ..\translate\translate.js minify meshcore.js REM rename meshcore.js.min meshcore.min.js REM del meshcmd.min.js -REM %LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node ..\translate\translate.js minify meshcmd.js +REM %LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node ..\translate\translate.js minify meshcmd.js REM rename meshcmd.js.min meshcmd.min.js REM Minify the translations -%LOCALAPPDATA%\..\Roaming\nvm\v12.13.0\node ..\translate\translate.js minify modules_meshcore\coretranslations.json +%LOCALAPPDATA%\..\Roaming\nvm\v14.16.0\node ..\translate\translate.js minify modules_meshcore\coretranslations.json COPY modules_meshcore\coretranslations.json.min modules_meshcore_min\coretranslations.json DEL modules_meshcore\coretranslations.json.min \ No newline at end of file diff --git a/package.json b/package.json index 805639c1..c222235f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "1.0.42", + "version": "1.0.43", "keywords": [ "Remote Device Management", "Remote Device Monitoring", From c7e5aaf42cdb442eb9a2e3d498852aba134d4689 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Thu, 30 Jun 2022 00:30:16 -0400 Subject: [PATCH 087/105] docs - Adding power state legend https://github.com/Ylianst/MeshCentral/issues/4177 --- docs/docs/meshcentral/devicetabs.md | 26 ++++++++++++++++++ .../meshcentral/images/7daypowerstate.png | Bin 0 -> 7010 bytes docs/mkdocs.yml | 1 + 3 files changed, 27 insertions(+) create mode 100644 docs/docs/meshcentral/devicetabs.md create mode 100644 docs/docs/meshcentral/images/7daypowerstate.png diff --git a/docs/docs/meshcentral/devicetabs.md b/docs/docs/meshcentral/devicetabs.md new file mode 100644 index 00000000..4373a399 --- /dev/null +++ b/docs/docs/meshcentral/devicetabs.md @@ -0,0 +1,26 @@ +# Device Tabs + +## General + +### 7 Day Power State + +Legend + +1. Black color: device is powered om +2. purple color: device is in sleep state +3. blue/green color : device is connected trough amt/cira, but not powered on +4. grey color: device is powered off + +![](images/7daypowerstate.png) + +## Desktop + +## Terminal + +## Files + +## Events + +## Details + +## Console \ No newline at end of file diff --git a/docs/docs/meshcentral/images/7daypowerstate.png b/docs/docs/meshcentral/images/7daypowerstate.png new file mode 100644 index 0000000000000000000000000000000000000000..de5455443e473282eab18d2633c2e61cf951eda3 GIT binary patch literal 7010 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

Q@`{5{R@EDljA;| zzaO48D!lp1KJU8RsHt{$cOa`Xb@puP9lc_~rv4-N{P9;A2G+oO&4U$ev)Z2VDpY4{ zN0bZTMd&{143&EsONi+Dml1-jO!9n_Vgn9IP{#EbDxE)ERv!aLgfKPGB6aqaQr$2)Vrsi~<-`qq{N zfXbru+}vFApT5h?Z^<%f_SPz`yH`zI_CFvp(#6-E<^kg#FD+@7bgQZiLedofb+&iS zGL8cKJt;*@sY@mFK^4^Ss{a0FG>_E6ml9zE{X`|oG1tjy!gvlj38_54DgYo5+3c z92KpX2ggPZapv^0qpIC-?jDVt^A1i zu{D3!eB9n7yS4Xi_(1RiL0!~Zc~P>0b;(o(y*?EyiA`knV5*W0J7zHRZ_%?)nYBsf z5$I*fJkp|2#7rJ%|EyI+u=nD4Uh?9c;rfV!%D%^q5f~v}m%i1xV^NoBm4nmgA75G1 zj9+6LmM?dip$pNYKQQd{mYPg1uZ1QGCR$l-{S7)oZ7rhi@N}9QbA4LlrUV~TjBQfB zaQcFynjFL0Y-0>-4!g^M@$-#CQm=;b&d2UYJWng;Mr(5fK?5n%yFMq=#1Ut*xA_Rlq zl+ClK0X`4uWz4Rw7PPT;xoXL30%L&vf-A3GvTJbt`@;Eehtvjj&}*01BbUmS8t}c= z>q#Sf2lH6EWh-olLyovED zc$DAzr51B>6@y;7S_hjUr{vC{iraf(8(puEdveP2Z3hE{SLu26yPPsA2U*k`Dk~FT zo{ng31c(Wur1OHWqLFzlx+~c;gLN+tGquQDZhfpG?KNtJ4>fC;q;P{XxAHW`Y7MSI z^}k02FVgdh;H(ttJZm}LBrEmAVxsml@ SOMSroAZ-nUTe&yyKlv|T(-$TH literal 0 HcmV?d00001 diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 9ea8f3dc..326c1f94 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -9,6 +9,7 @@ nav: - MeshCentral2: - 'MeshCentral2 Guide': 'meshcentral/index.md' - 'All Configuration Options': 'meshcentral/config.md' + - 'Device Tabs': 'meshcentral/devicetabs.md' - 'Tokens': 'meshcentral/tokens.md' - 'Assistant': 'meshcentral/assistant.md' - 'Code Signing': 'meshcentral/codesigning.md' From 60800d626344d98aead4f0c32034e7aac609f9c2 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Thu, 30 Jun 2022 00:30:59 -0400 Subject: [PATCH 088/105] docs - adding videos --- docs/docs/design/index.md | 6 ++++++ docs/docs/intelamt/index.md | 22 ++++++++++++++++++++++ docs/docs/meshcentral/index.md | 14 ++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/docs/docs/design/index.md b/docs/docs/design/index.md index 3eda1e7c..6c90729a 100644 --- a/docs/docs/design/index.md +++ b/docs/docs/design/index.md @@ -81,6 +81,12 @@ The main takeaway is that MeshCentral is mostly an ExpressJS application. This i MeshCentral will run `npm install` automatically when any of these optional modules are needed but not currently available. +## Understanding the different modes: LAN, WAN and Hybrid + +

+ +
+ ## Code files and folders Someone would think the server is rather simple when taking a look at the MeshCentral server code files. At a high level, the entire server has 3 folders, 3 text files and a manageable number of .js files that are fairly self-descriptive. Here is a list of the source files and folders. diff --git a/docs/docs/intelamt/index.md b/docs/docs/intelamt/index.md index c7ba65ca..67b3f74d 100644 --- a/docs/docs/intelamt/index.md +++ b/docs/docs/intelamt/index.md @@ -13,6 +13,12 @@ Intel AMT Guide [as .odt](https://github.com/Ylianst/MeshCentral/blob/master/doc This user guide contains all essential information for activating and using Intel® Active Management Technology (Intel® AMT) with MeshCentral. We will review how to activate, connect to and use Intel AMT features and how this benefit administrators that want to manage computers remotely. This document expect the reader to already be familiar with how to install and operate MeshCentral and have a basic understanding of how Intel® AMT works. +## History of AMT + +
+ +
+ ## Introduction MeshCentral is a free open source web-based remote computer management software and it fully supports Intel® Active Management Technology (Intel® AMT). MeshCentral does not require that computers it manages support Intel AMT, but if a remote computer has this capability, MeshCentral will make use of it. @@ -173,3 +179,19 @@ Once Intel AMT is in a situation where ACM activation can occur, the activation ![](images/2022-05-16-23-16-05.png) The best way to test this feature is to create an “Intel AMT only” device group and run the MeshCMD command on the remote system to perform activation. If there is a problem, this process should clearly display why ACM activation fails. + +## Intel AMT MEI and LMS + +Intel Active Management Technology (Intel AMT) can communicate to the local platform using the Management Engine Interface (MEI). We show how your can use that to get Intel AMT information. For more advanced usages, you need to connect using TCP and TLS which requires Intel Local Manageability Service (LMS). We show how MeshCentral's Mesh Agent and MeshCMD have a small version of LMS built-in and how it works + +
+ +
+ +## Intel AMT System Defense + +As part of Intel AMT there are hardware filters in the network interface you can setup to match and perform actions on packets. This happens at Ethernet speeds with no slow down and independent of the OS. + +
+ +
diff --git a/docs/docs/meshcentral/index.md b/docs/docs/meshcentral/index.md index 38d51490..9a56067e 100644 --- a/docs/docs/meshcentral/index.md +++ b/docs/docs/meshcentral/index.md @@ -767,6 +767,12 @@ In addition to local device groups, the IP-KVM/Power switch device group was als ## NGINX Reverse-Proxy Setup +### Video Walkthru + +
+ +
+ Sometimes it’s useful to setup MeshCentral with a reverse-proxy in front of it. This is useful if you need to host many services on a single public IP address, if you want to offload TLS and perform extra web caching. In this section we will setup NGINX, a popular reverse-proxy, in front of MeshCentral. NGNIX is available at: https://www.nginx.com/ ![](images/2022-05-19-00-23-11.png) @@ -1760,3 +1766,11 @@ su -c '/bin/bash -i' myOtherUser ``` This will run bash in interactive mode and work correctly. + +#### SSH and SFTP integration to the Terminal + +MeshCentral has built-in web-based integration of SSH in the "Termina" tab and SFTP in the "Files" tab. + +
+ +
\ No newline at end of file From 33cba56614a84344111784e4c84921b0910af313 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Thu, 30 Jun 2022 00:31:42 -0400 Subject: [PATCH 089/105] docs - adding plugin script https://github.com/Ylianst/MeshCentral/issues/4191 --- docs/docs/meshcentral/plugins.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docs/docs/meshcentral/plugins.md diff --git a/docs/docs/meshcentral/plugins.md b/docs/docs/meshcentral/plugins.md new file mode 100644 index 00000000..e9d664ff --- /dev/null +++ b/docs/docs/meshcentral/plugins.md @@ -0,0 +1,9 @@ +# Plugins + +## Installation + +1. Enable plugins in the configuration and restart MC as described. +2. Log into MC as full administrator. +3. Go my `My Server` -> `Plugins`, hit the Download plugin button. +4. A dialog opens requesting an URL, put in: +5. The plugin pops up in the plugin list below the download button, you can now configure and enable/disable it. From ddd344952a0a11a944443e470aa2816792bc5492 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Thu, 30 Jun 2022 00:32:15 -0400 Subject: [PATCH 090/105] docs - adding folder for powerpoints --- docs/powerpoints/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/powerpoints/README.md diff --git a/docs/powerpoints/README.md b/docs/powerpoints/README.md new file mode 100644 index 00000000..159d630d --- /dev/null +++ b/docs/powerpoints/README.md @@ -0,0 +1 @@ +Please place Powerpoints and slides here \ No newline at end of file From 21939e82138f99ad423704a7250c4aac6e76ad3d Mon Sep 17 00:00:00 2001 From: silversword411 Date: Thu, 30 Jun 2022 00:36:47 -0400 Subject: [PATCH 091/105] docs - adding agentlogdump reference https://github.com/Ylianst/MeshCentral/issues/4187 --- docs/docs/meshcentral/debugging.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/docs/meshcentral/debugging.md b/docs/docs/meshcentral/debugging.md index 7a81bc9a..ab6faa82 100644 --- a/docs/docs/meshcentral/debugging.md +++ b/docs/docs/meshcentral/debugging.md @@ -126,6 +126,16 @@ service meshcentral restart ## MeshAgent +### Agent Debug Logs to server + +This automatically downloads all agent error logs into `meshcentral-data/agenterrorlogs.txt` + +[Set](https://github.com/Ylianst/MeshCentral/blob/aa58afcc3a5d738177ab7a7b6d0228d72af82b85/meshcentral-config-schema.json#L100) in `config.json` + +```json +"agentLogDump": true +``` + ### Determine Agent capabilities On the server goto the agents console tab. Type: From 01a385d272edcf5e26a321b63ef16c4f971ff888 Mon Sep 17 00:00:00 2001 From: silversword411 Date: Thu, 30 Jun 2022 00:41:23 -0400 Subject: [PATCH 092/105] docs - adding help info https://github.com/Ylianst/MeshCentral/issues/4190 --- docs/docs/meshcentral/codesigning.md | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/docs/docs/meshcentral/codesigning.md b/docs/docs/meshcentral/codesigning.md index 3934db9d..5cd7404a 100644 --- a/docs/docs/meshcentral/codesigning.md +++ b/docs/docs/meshcentral/codesigning.md @@ -6,6 +6,63 @@ Nodejs Code Signing module +MeshCentral comes with authenticode.js, you can run it like this: + +```bash +node node_modules/meshcentral/authenticode-js +``` + +and you will get + +``` +MeshCentral Authenticode Tool. +Usage: + node authenticode.js [command] [options] +Commands: + info: Show information about an executable. + --exe [file] Required executable to view information. + --json Show information in JSON format. + sign: Sign an executable. + --exe [file] Required executable to sign. + --out [file] Resulting signed executable. + --pem [pemfile] Certificate & private key to sign the executable with. + --desc [description] Description string to embbed into signature. + --url [url] URL to embbed into signature. + --hash [method] Default is SHA384, possible value: MD5, SHA224, SHA256, SHA384 or SHA512. + --time [url] The time signing server URL. + --proxy [url] The HTTP proxy to use to contact the time signing server, must start with http:// + unsign: Remove the signature from the executable. + --exe [file] Required executable to un-sign. + --out [file] Resulting executable with signature removed. + createcert: Create a code signging self-signed certificate and key. + --out [pemfile] Required certificate file to create. + --cn [value] Required certificate common name. + --country [value] Certificate country name. + --state [value] Certificate state name. + --locality [value] Certificate locality name. + --org [value] Certificate organization name. + --ou [value] Certificate organization unit name. + --serial [value] Certificate serial number. + timestamp: Add a signed timestamp to an already signed executable. + --exe [file] Required executable to sign. + --out [file] Resulting signed executable. + --time [url] The time signing server URL. + --proxy [url] The HTTP proxy to use to contact the time signing server, must start with http:// + +Note that certificate PEM files must first have the signing certificate, +followed by all certificates that form the trust chain. + +When doing sign/unsign, you can also change resource properties of the generated file. + + --filedescription [value] + --fileversion [value] + --internalname [value] + --legalcopyright [value] + --originalfilename [value] + --productname [value] + --productversion [value] +``` + ## Automatic Agent Code Signing If you want to self-sign the mesh agent so you can whitelist the software in your AV, and lock it to your server and organization. From c492aae484af50db5060005a0b85af8bc471f180 Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Thu, 30 Jun 2022 10:48:57 +0100 Subject: [PATCH 093/105] switch end/close close ws not end end http not close --- apprelays.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apprelays.js b/apprelays.js index 502ec760..68535e9e 100644 --- a/apprelays.js +++ b/apprelays.js @@ -181,7 +181,7 @@ module.exports.CreateWebRelaySession = function (parent, db, req, args, domain, tunnels = null; // Close any pending requests - for (var i in pendingRequests) { if (pendingRequests[i][2] == true) { pendingRequests[i][1].end(); } else { pendingRequests[i][1].close(); } } + for (var i in pendingRequests) { if (pendingRequests[i][2] == true) { pendingRequests[i][1].close(); } else { pendingRequests[i][1].end(); } } // Notify of session closure if (obj.onclose) { obj.onclose(obj.userid + '/' + obj.sessionId); } @@ -2227,4 +2227,4 @@ function checkRelayRights(parent, domain, user, relayNodeId, func) { parent.GetNodeWithRights(domain, user, relayNodeId, function (node, rights, visible) { func((node != null) && (rights == 0xFFFFFFFF)); }); -} \ No newline at end of file +} From 39eed8cdff606b48e6958103910c8e3c1453ba6f Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Thu, 30 Jun 2022 15:13:16 +0100 Subject: [PATCH 094/105] add section for config.json --- .github/ISSUE_TEMPLATE/bug_report.md | 38 ++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 93f329fe..81d4bda8 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -27,8 +27,8 @@ If applicable, add screenshots to help explain your problem. - OS: [e.g. Ubuntu] - Virtualization: [e.g. Docker] - Network: [e.g. LAN/WAN, reverse proxy, cloudflare, ssl offload, etc...] - - Version: [e.g. 1.0.36] - - Node: [e.g. 18.3.0] + - Version: [e.g. 1.0.43] + - Node: [e.g. 18.4.0] - Browser: [e.g. Google Chrome] **Remote Device (please complete the following information):** @@ -39,3 +39,37 @@ If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. + +**Config.JSON** +``` +{ + "$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json", + "__comment1__": "This is a simple configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.", + "__comment2__": "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.", + "settings": { + "_cert": "myserver.mydomain.com", + "_WANonly": true, + "_LANonly": true, + "_sessionKey": "MyReallySecretPassword1", + "_port": 443, + "_aliasPort": 443, + "_redirPort": 80, + "_redirAliasPort": 80 + }, + "domains": { + "": { + "_title": "MyServer", + "_title2": "Servername", + "_minify": true, + "_newAccounts": true, + "_userNameIsEmail": true + } + }, + "_letsencrypt": { + "__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.", + "email": "myemail@mydomain.com", + "names": "myserver.mydomain.com", + "production": false + } +} +``` From ce8528b04feaf03ea277a3fbe5b54b4dc760b3d8 Mon Sep 17 00:00:00 2001 From: Simon Smith Date: Thu, 30 Jun 2022 15:14:21 +0100 Subject: [PATCH 095/105] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 81d4bda8..b4978944 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -40,7 +40,7 @@ If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. -**Config.JSON** +**Your config.json file** ``` { "$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json", From 81e18fac59c5c2f55ec77b5fcc563c957ab490d1 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 30 Jun 2022 12:46:04 -0700 Subject: [PATCH 096/105] Improved AmtHashes command in MeshCMD. --- agents/MeshCmd-signed.exe | Bin 4491784 -> 4498464 bytes agents/MeshCmd64-signed.exe | Bin 4104712 -> 4111392 bytes agents/meshcmd.js | 145 +++++++++++++++++++++++++++++++----- package.json | 16 +++- 4 files changed, 141 insertions(+), 20 deletions(-) diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index 2a60ffb159a6755f0a683552596379f494088451..b14bd8118d76bc2528426550b753f400700ed18d 100644 GIT binary patch delta 4782 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 diff --git a/agents/meshcmd.js b/agents/meshcmd.js index e63d0c86..5628303b 100644 --- a/agents/meshcmd.js +++ b/agents/meshcmd.js @@ -157,6 +157,8 @@ function run(argv) { if ((typeof args.uuidoutput) == 'string' || args.uuidoutput) { settings.uuidoutput = args.uuidoutput; } if ((typeof args.desc) == 'string') { settings.desc = args.desc; } if ((typeof args.dnssuffix) == 'string') { settings.dnssuffix = args.dnssuffix; } + if ((typeof args.create) == 'string') { settings.create = args.create; } + if ((typeof args.delete) == 'string') { settings.delete = args.delete; } if (args.bindany) { settings.bindany = true; } if (args.emailtoken) { settings.emailtoken = true; } if (args.smstoken) { settings.smstoken = true; } @@ -238,8 +240,12 @@ function run(argv) { console.log('\r\nPossible arguments:\r\n'); console.log(' --json Display all Intel AMT state in JSON format.'); } else if (action == 'amthashes') { - console.log('Amthashes will display all trusted activations hashes for Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd amthashes'); + console.log('Amthashes will display all trusted activations hashes for Intel AMT. If the host is not specified, the hashes are read using the local MEI driver is used. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd amthashes'); console.log('\r\nPossible arguments:\r\n'); + console.log(' --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.'); + console.log(' --user [username] The Intel AMT login username, admin is default.'); + console.log(' --pass [password] The Intel AMT login password.'); + console.log(' --tls Specifies that TLS must be used.'); console.log(' --json Display all Intel AMT hashes in JSON format.'); } else if ((action == 'microlms') || (action == 'lms') || (action == 'amtlms')) { console.log('Starts MicroLMS on this computer, allowing local access to Intel AMT on TCP ports 16992 and 16993 when applicable. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd microlms'); @@ -528,23 +534,28 @@ function run(argv) { return; }); } else if (settings.action == 'amthashes') { - // Display Intel AMT list of trusted hashes - var amtMeiModule, amtMei, amtHashes = []; - try { amtMeiModule = require('amt-mei'); amtMei = new amtMeiModule(); } catch (ex) { console.log(ex); exit(1); return; } - amtMei.on('error', function (e) { console.log('amthashes error: ' + e); exit(1); return; }); - amtMei.getHashHandles(function (handles) { - exitOnCount = handles.length; - for (var i = 0; i < handles.length; ++i) { - this.getCertHashEntry(handles[i], function (result) { - var certState = []; - if (result.isDefault) { certState.push('Default'); } - if (result.isActive) { certState.push('Active'); } else { certState.push('Disabled'); } - amtHashes.push(result); - if (!args.json) { console.log(result.name + ', (' + certState.join(', ') + ')\r\n ' + result.hashAlgorithmStr + ': ' + result.certificateHash); } - if (--exitOnCount == 0) { if (args.json) { console.log(JSON.stringify(amtHashes, null, 2)); } exit(0); } - }); - } - }); + if (settings.hostname == null) { + // Display Intel AMT list of trusted hashes from the MEI driver + var amtMeiModule, amtMei, amtHashes = []; + try { amtMeiModule = require('amt-mei'); amtMei = new amtMeiModule(); } catch (ex) { console.log(ex); exit(1); return; } + amtMei.on('error', function (e) { console.log('amthashes error: ' + e); exit(1); return; }); + amtMei.getHashHandles(function (handles) { + exitOnCount = handles.length; + for (var i = 0; i < handles.length; ++i) { + this.getCertHashEntry(handles[i], function (result) { + var certState = []; + if (result.isDefault) { certState.push('Default'); } + if (result.isActive) { certState.push('Active'); } else { certState.push('Disabled'); } + amtHashes.push(result); + if (!args.json) { console.log(result.name + ', (' + certState.join(', ') + ')\r\n ' + result.hashAlgorithmStr + ': ' + result.certificateHash); } + if (--exitOnCount == 0) { if (args.json) { console.log(JSON.stringify(amtHashes, null, 2)); } exit(0); } + }); + } + }); + } else { + // We are going to use WSMAN to perform hash operations + performAmtTrustedHashes(); + } } else if (settings.action == 'netinfo') { // Display network information var interfaces = require('os').networkInterfaces(); @@ -872,6 +883,104 @@ function run(argv) { } } + +// +// Intel AMT Trusted Hashes +// + +function performAmtTrustedHashes() { + // Check the settings + if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; } + if ((settings.hostname == null) || (typeof settings.hostname != 'string') || (settings.hostname == '')) { settings.hostname = '127.0.0.1'; } + if ((settings.username == null) || (typeof settings.username != 'string') || (settings.username == '')) { settings.username = 'admin'; } + if ((typeof settings.create == 'string')) { + if ((settings.name == null) || (typeof settings.name != 'string') || (settings.name == '')) { console.log('No or invalid \"name\" specified, use --name [name].'); exit(1); return; } + if ((settings.create.length != 32) && (settings.create.length != 40) && (settings.create.length != 64) && (settings.create.length != 96)) { console.log('No or invalid \"create\" hash, must be in HEX format of length 30, 40, 64, 96.'); exit(1); return; } + if (Buffer.from(settings.create, 'hex').toString('hex') != settings.create.toUpperCase()) { console.log('No or invalid \"create\" specified, must be in HEX format.'); exit(1); return; } + settings.create = Buffer.from(settings.create, 'hex').toString('hex'); + } + if ((typeof settings.delete == 'string')) { + if ((settings.delete.length != 32) && (settings.delete.length != 40) && (settings.delete.length != 64) && (settings.delete.length != 96)) { console.log('No or invalid \"delete\" hash, must be in HEX format of length 30, 40, 64, 96.'); exit(1); return; } + if (Buffer.from(settings.delete, 'hex').toString('hex') != settings.delete.toUpperCase()) { console.log('No or invalid \"delete\" specified, must be in HEX format.'); exit(1); return; } + settings.delete = Buffer.from(settings.delete, 'hex').toString('hex'); + } + + // See if MicroLMS needs to be started + if ((settings.hostname == '127.0.0.1') || (settings.hostname.toLowerCase() == 'localhost')) { + settings.noconsole = true; startLms(performAmtTrustedHashesEx); + } else { + performAmtTrustedHashesEx(); + } +} + +function performAmtTrustedHashesEx(x) { + var transport = require('amt-wsman-duk'); + var wsman = require('amt-wsman'); + var amt = require('amt'); + wsstack = new wsman(transport, settings.hostname, settings.tls ? 16993 : 16992, settings.username, settings.password, settings.tls); + amtstack = new amt(wsstack); + amtstack.BatchEnum(null, ['AMT_ProvisioningCertificateHash'], performAmtTrustedHashesEx2); +} + +function performAmtTrustedHashesEx2(stack, name, responses, status) { + if (status != 200) { + console.log('Unable to get trusted hashes, status = ' + status + '.'); + } else { + var r = responses['AMT_ProvisioningCertificateHash'].responses; + if (settings.create) { + // Create a new hash entry + var instanceId = null; + for (var i in r) { if (Buffer.from(r[i]['HashData'], 'base64').toString('hex') == settings.create) { instanceId = r[i]['InstanceID']; } } + if (instanceId != null) { console.log('This trusted hash is already present.'); exit(1); return; } + + // Setup hash type + var hashtype = -1; + var hash = Buffer.from(settings.create, 'hex'); + if (hash.length == 16) { hashtype = 0; } // MD5 + if (hash.length == 20) { hashtype = 1; } // SHA1 + if (hash.length == 32) { hashtype = 2; } // SHA256 + if (hash.length == 48) { hashtype = 3; } // SHA384 + if (hashtype == -1) { console.log('Invalid hash type', hash.length); exit(1); return; } + + // Setup object instance + var instance = { "Description": settings.name, "Enabled": true, "HashData": hash.toString('base64'), "HashType": hashtype, "IsDefault": false, "InstanceID": '' }; + + // Perform WSMAN "CREATE" operation. + amtstack.Create('AMT_ProvisioningCertificateHash', instance, function (stack, name, response, status) { + if (status != 200) { console.log('ERROR: Failed to create trusted hash.', status, JSON.stringify(response, null, 2)); } else { console.log('Done.'); } + exit(0); + }); + return; + } else if (settings.delete) { + // Delete a hash entry + var instance = null; + for (var i in r) { if (Buffer.from(r[i]['HashData'], 'base64').toString('hex') == settings.delete) { instance = r[i]; } } + if (instance == null) { console.log('This trusted hash not present.'); exit(1); return; } + + // Perform WSMAN "DELETE" operation. + amtstack.Delete('AMT_ProvisioningCertificateHash', instance, function (stack, name, response, status) { + if (status != 200) { console.log('ERROR: Failed to delete trusted hash.', status, JSON.stringify(response, null, 2)); } else { console.log('Done.'); } + exit(0); + }); + return; + } else if (settings.json) { + // List the hashes in JSON format + console.log(JSON.stringify(r, null, 2)); + } else { + // List the hashes + for (var i in r) { + var certState = []; + var hashTypes = ['MD5', 'SHA1', 'SHA256', 'SHA384']; + if (r[i]['IsDefault']) { certState.push('Default'); } + if (r[i]['Enabled']) { certState.push('Active'); } else { certState.push('Disabled'); } + console.log(r[i]['Description'] + ', (' + certState.join(', ') + ')\r\n ' + hashTypes[r[i]['HashType']] + ': ' + Buffer.from(r[i]['HashData'], 'base64').toString('hex')); + } + } + exit(0); + } +} + + // // Intel AMT Agent Presence // diff --git a/package.json b/package.json index c222235f..6d0edca3 100644 --- a/package.json +++ b/package.json @@ -37,21 +37,33 @@ "sample-config-advanced.json" ], "dependencies": { + "@yetzt/nedb": "^1.8.0", "archiver": "^5.3.1", "body-parser": "^1.19.0", "cbor": "~5.2.0", "compression": "^1.7.4", "cookie-session": "^1.4.0", + "esprima": "^4.0.1", "express": "^4.17.0", "express-handlebars": "^5.3.5", "express-ws": "^4.0.0", + "html-minifier": "^4.0.0", + "image-size": "^1.0.1", "ipcheck": "^0.1.0", + "jsdom": "^20.0.0", + "loadavg-windows": "^1.1.1", + "minify-js": "0.0.4", "minimist": "^1.2.5", "multiparty": "^4.2.1", - "@yetzt/nedb": "^1.8.0", "node-forge": "^1.0.0", + "node-windows": "^0.1.4", + "otplib": "^10.2.3", + "pg": "^8.7.1", + "pgtools": "^0.3.2", + "web-push": "^3.5.0", "ws": "^5.2.3", - "yauzl": "^2.10.0" + "yauzl": "^2.10.0", + "yubikeyotp": "^0.2.0" }, "engines": { "node": ">=10.0.0" From 675996ccf2efbd504b1cb61a1e93e88622e20abe Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Thu, 30 Jun 2022 15:09:06 -0700 Subject: [PATCH 097/105] Filtered out exception that can get thrown when JS attempts to restart self, which is normal, because the exception says the process is shutting down. Only happens on macOS --- agents/recoverycore.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/agents/recoverycore.js b/agents/recoverycore.js index 0f4341fb..169b170c 100644 --- a/agents/recoverycore.js +++ b/agents/recoverycore.js @@ -721,8 +721,11 @@ function agentUpdate_Start(updateurl, updateoptions) { } catch (zz) { - sendConsoleText('Self Update encountered an error trying to restart service', sessionid); - sendAgentMessage('Self Update encountered an error trying to restart service', 3); + if (zz.toString() != 'waitExit() aborted because thread is exiting') + { + sendConsoleText('Self Update encountered an error trying to restart service', sessionid); + sendAgentMessage('Self Update encountered an error trying to restart service', 3); + } } break; } From 70e158afbdc85614293599c95de864949fca390f Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 30 Jun 2022 19:55:24 -0700 Subject: [PATCH 098/105] You can now change HTTP and HTTPS ports, #4172 --- meshuser.js | 16 +++++++++++++++ views/default.handlebars | 44 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/meshuser.js b/meshuser.js index 12560ab4..aa2fe965 100644 --- a/meshuser.js +++ b/meshuser.js @@ -3026,6 +3026,22 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use } } + if ((typeof command.httpport == 'number') && (command.httpport > 0) && (command.httpport < 65536)) { + if ((command.httpport == 80) && (node.httpport != null)) { + delete node.httpport; change = 1; changes.push('httpport'); // Delete the HTTP port + } else { + node.httpport = command.httpport; change = 1; changes.push('httpport'); // Set the HTTP port + } + } + + if ((typeof command.httpsport == 'number') && (command.httpsport > 0) && (command.httpsport < 65536)) { + if ((command.httpsport == 443) && (node.httpsport != null)) { + delete node.httpsport; change = 1; changes.push('httpsport'); // Delete the HTTPS port + } else { + node.httpsport = command.httpsport; change = 1; changes.push('httpsport'); // Set the HTTPS port + } + } + if ((typeof command.ssh == 'number') && (command.ssh == 0)) { if ((node.ssh != null) && (node.ssh[user._id] != null)) { delete node.ssh[user._id]; change = 1; changes.push('ssh'); } // Delete the SSH cendentials } diff --git a/views/default.handlebars b/views/default.handlebars index 07876c20..3a206ab3 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -112,6 +112,12 @@ + +