diff --git a/VERSION b/VERSION index 7ec1d6db..437459cd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.0 +2.5.0 diff --git a/client/src/UDSClient.py b/client/src/UDSClient.py index dbe62cd8..d1f72212 100755 --- a/client/src/UDSClient.py +++ b/client/src/UDSClient.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Copyright (c) 2014 Virtual Cable S.L. +# Copyright (c) 2014-2017 Virtual Cable S.L. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -46,6 +46,8 @@ import webbrowser from UDSWindow import Ui_MainWindow +OLD_METHOD_VERSION = '2.1.0' + class RetryException(Exception): pass @@ -57,6 +59,7 @@ class UDSClient(QtGui.QMainWindow): animTimer = None anim = 0 animInverted = False + serverVersion = 'X.Y.Z' # Will be overwriten on getVersion def __init__(self): QtGui.QMainWindow.__init__(self) @@ -146,6 +149,8 @@ class UDSClient(QtGui.QMainWindow): webbrowser.open(data['result']['downloadUrl']) self.closeWindow() return + + self.serverVersion = data['result']['requiredVersion'] self.getTransportData() except RetryException as e: @@ -172,7 +177,19 @@ class UDSClient(QtGui.QMainWindow): try: self.processError(data) - script = data['result'].decode('base64').decode('bz2') + params = None + + if self.serverVersion <= OLD_METHOD_VERSION: + script = data['result'].decode('base64').decode('bz2') + else: + res = data['result'] + # We have three elements on result: + # * Script + # * Signature + # * Script data + # We test that the Script has correct signature, and them execute it with the parameters + script, signature, params = res['script'].decode('base64').decode('bz2'), res['signature'], res['params'].decode('base64').decode('bz2') + self.stopAnim() @@ -182,7 +199,7 @@ class UDSClient(QtGui.QMainWindow): QtCore.QTimer.singleShot(3000, self.endScript) self.hide() - six.exec_(script, globals(), {'parent': self}) + six.exec_(script, globals(), {'parent': self, 'params': params}) except RetryException as e: self.ui.info.setText(six.text_type(e) + ', retrying access...') diff --git a/client/src/uds/__init__.py b/client/src/uds/__init__.py index b6c41135..9bd5cf4f 100644 --- a/client/src/uds/__init__.py +++ b/client/src/uds/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2014 Virtual Cable S.L. +# Copyright (c) 2014-2017 Virtual Cable S.L. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -34,11 +34,11 @@ from __future__ import unicode_literals # On centos, old six release does not includes byte2int, nor six.PY2 import six -VERSION = '2.1.0' +VERSION = '2.5.0' __title__ = 'udclient' __version__ = VERSION -__build__ = 0x010750 +__build__ = 0x010760 __author__ = 'Adolfo Gómez' __license__ = "BSD 3-clause" -__copyright__ = "Copyright 2014-2015 VirtualCable S.L.U." +__copyright__ = "Copyright 2014-2017 VirtualCable S.L.U." diff --git a/client/src/uds/tools.py b/client/src/uds/tools.py index 84246d45..3c2c4818 100644 --- a/client/src/uds/tools.py +++ b/client/src/uds/tools.py @@ -32,6 +32,12 @@ ''' from __future__ import unicode_literals +# For signature checking +from Crypto.PublicKey import RSA +from Crypto.Signature import PKCS1_v1_5 +from Crypto.Hash import SHA256 +from base64 import b64decode + import tempfile import string import random @@ -42,15 +48,32 @@ import six import sys import time + + from log import logger _unlinkFiles = [] _tasksToWait = [] _execBeforeExit = [] - sys_fs_enc = sys.getfilesystemencoding() or 'mbcs' +# Public key for scripts +PUBLIC_KEY = '''-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuNURlGjBpqbglkTTg2lh +dU5qPbg9Q+RofoDDucGfrbY0pjB9ULgWXUetUWDZhFG241tNeKw+aYFTEorK5P+g +ud7h9KfyJ6huhzln9eyDu3k+kjKUIB1PLtA3lZLZnBx7nmrHRody1u5lRaLVplsb +FmcnptwYD+3jtJ2eK9ih935DYAkYS4vJFi2FO+npUQdYBZHPG/KwXLjP4oGOuZp0 +pCTLiCXWGjqh2GWsTECby2upGS/ZNZ1r4Ymp4V2A6DZnN0C0xenHIY34FWYahbXF +ZGdr4DFBPdYde5Rb5aVKJQc/pWK0CV7LK6Krx0/PFc7OGg7ItdEuC7GSfPNV/ANt +5BEQNF5w2nUUsyN8ziOrNih+z6fWQujAAUZfpCCeV9ekbwXGhbRtdNkbAryE5vH6 +eCE0iZ+cFsk72VScwLRiOhGNelMQ7mIMotNck3a0P15eaGJVE2JV0M/ag/Cnk0Lp +wI1uJQRAVqz9ZAwvF2SxM45vnrBn6TqqxbKnHCeiwstLDYG4fIhBwFxP3iMH9EqV +2+QXqdJW/wLenFjmXfxrjTRr+z9aYMIdtIkSpADIlbaJyTtuQpEdWnrlDS2b1IGd +Okbm65EebVzOxfje+8dRq9Uqwip8f/qmzFsIIsx3wPSvkKawFwb0G5h2HX5oJrk0 +nVgtClKcDDlSaBsO875WDR0CAwEAAQ== +-----END PUBLIC KEY-----''' + def saveTempFile(content, filename=None): if filename is None: filename = b''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(16)) @@ -160,3 +183,18 @@ def addExecBeforeExit(fnc): def execBeforeExit(): for fnc in _execBeforeExit: fnc.__call__() + +def verifySignature(script, signature): + ''' + Verifies with a public key from whom the data came that it was indeed + signed by their private key + param: public_key_loc Path to public key + param: signature String signature to be verified + return: Boolean. True if the signature is valid; False otherwise. + ''' + rsakey = RSA.importKey(PUBLIC_KEY) + signer = PKCS1_v1_5.new(rsakey) + digest = SHA256.new(script) # Script is "binary string" here + if signer.verify(digest, b64decode(signature)): + return True + return False diff --git a/server/src/uds/REST/methods/client.py b/server/src/uds/REST/methods/client.py index 6060d6c7..fd60cb36 100644 --- a/server/src/uds/REST/methods/client.py +++ b/server/src/uds/REST/methods/client.py @@ -138,11 +138,15 @@ class Client(Handler): userService.setConnectionSource(srcIp, hostname) # Store where we are accessing from so we can notify Service - transportScript = transportInstance.getUDSTransportScript(userService, transport, ip, self._request.os, self._request.user, password, self._request) + transportScript, signature, params = transportInstance.getUDSTransportScript(userService, transport, ip, self._request.os, self._request.user, password, self._request) logger.debug('Script:\n{}'.format(transportScript)) - return Client.result(result=transportScript.encode('bz2').encode('base64')) + return Client.result(result={ + 'script': transportScript.encode('bz2').encode('base64'), + 'signature': signature, + 'params': params.encode('bz2').encode('base64'), + }) except ServiceNotReadyError as e: # Refresh ticket and make this retrayable TicketStore.revalidate(ticket, 20) # Retry will be in at most 5 seconds diff --git a/server/src/uds/transports/NX/scripts/linux/direct.py.signature b/server/src/uds/transports/NX/scripts/linux/direct.py.signature new file mode 100644 index 00000000..7b14426f --- /dev/null +++ b/server/src/uds/transports/NX/scripts/linux/direct.py.signature @@ -0,0 +1 @@ +tsRHebbCGfsC5uVtO/Mrv02Nu4szCYyUWAcI10mc6hIOplKJS0oZrRF5/PzE8v6bNpJ6r7l+XmeIvSGEVQTvNVQBND4HmO+dgFRpP1B2pD+nGA6uoiKHTfXaQpNXlEwhLgh1+N8vxfRw1LPmWpAaWs44cRdnzwBQWTFsSp/E4CGjhrn/Dsmk5PHTqjGta8SogRPMkQB+mLXp1rmRZJc+nfAkwnSoESnzhtsZ7wAC5vsNrakNLtlHNUibaKAiSfKF1eQsVyJ6y1CHB8cD0hI5E3dY/MAX9jfuFLvdJnFbSzwSWHK4KsxHxBDOCI/QpID7kYhT6SZ/SfmC9O5E2t4W5ibBPC6pdFn/zRZpkz7rMvu9+skW08F4n4aTR7UFErTBTeez3QUEgHc23UIOEh1svAV98xXlEqmO3CczksZIZGHDtcEWMlLAO5/cBYn2y82C7TO797U45ahm2M1QKeeJELg8K+mbkR2Zc7IK/lRTODbM5hNL5QgRehUeMXF0/L+315IGgu79wHEb2ERXRVWJA1ySRwobYv4a//dMe6fv0h5CDv91MufWQJqgrpCx2WEHTsQPEO4cqh9gSOdN/Nb/TnKrlPNwpv0V3LIoTlBefF3x8VPeCEScc4MjJgMYecefHBqmWr+2+RROQSc1Na+JaoLrLHZfViXzelYcJSIpp2Y= \ No newline at end of file diff --git a/server/src/uds/transports/NX/scripts/linux/tunnel.py.signature b/server/src/uds/transports/NX/scripts/linux/tunnel.py.signature new file mode 100644 index 00000000..6b139927 --- /dev/null +++ b/server/src/uds/transports/NX/scripts/linux/tunnel.py.signature @@ -0,0 +1 @@ +R/MBVUl+xVOD8jZgN5SZV4JeFtH42ZW5JRi812ho2d1uZ+5khA8r4cdeTDc5nhZu6+obrpZiaG7oAprpZvI7H/uuBH4v5rpm/CVPKVhN/dDxRsCkdlNwJ1/v6yEaTYig11LliHR8IoY2bdaXiScmMBBZc/inMHftTGvhRwetxEOSn/sKt8S72fCUWlXCtqMoIququ8fM0cXYKeYaUKIg2GPvjbvkKikQskDtDNVO0uhJuOTtaGpPJf1s9ZuOT3fPbmadvtRBGW2ZD6iKryROfiGMGi9UoqAhACAxWNFlq4uJ8lOZ5Hbhtcgl1y2oIyj8LvTtasTCZXYVQt0thM/q1vlNqtjKt3bf6FMXkF3KVTQEuG0UDtF9p9krPMHS/vQjrp1kLKbxYVeV/tttQrcnCqfMi0t8gRPzFz6llHLrjPt5XupsdsWijAGzBDGudijrQdFr9n8KDF1S56HZnUGOvECe9VliqUsJvsxMPulkh8Y3zVcKAz8II7HJfGcTn9Dt/dcUSxujnnK1Ik6MOmznUhcbXiuV+aTlxdvuffgIL7t4LtaLepv5LraNt22dKVxBXdjQKAaTVm8oON39dyJzMN6pnwGabb8dS841hYvY3u+PXgHqkW3T5VVFLPXaxejTEuxTFj442ntEMlJsjf9CxSgmd7squGvK4cWT1Aw94qI= \ No newline at end of file diff --git a/server/src/uds/transports/NX/scripts/macosx/direct.py.signature b/server/src/uds/transports/NX/scripts/macosx/direct.py.signature new file mode 100644 index 00000000..a5728cda --- /dev/null +++ b/server/src/uds/transports/NX/scripts/macosx/direct.py.signature @@ -0,0 +1 @@ +fDEmcLHGQu2ny9nqi5k5FuAzqrIoqJwgDFW/Q/YMPT/pFZ9ph3xHDKo6B9RGCyAhwBifg0w3/1085LqCFm88hVOl4mdk+rnF4BW/tbSvlLl2DaQ6qQxuyF36qCW4vqnl5BS4sqYKFrs0hp00FYU+nfYnbefPzq6MhCD8AHT+DP4sGZSjF6Is04RsrtBZOf6ZjWMJ+IOy4/1eGMYl5TRz136y6SpOh8OoVsdsxHuYwHvwdTNz6E+2Ct+yg8sBb/wGCSLxYyThE+tFYZLX0o87hv1BE7nIC2I03QvU63YJEguj2SKnix+azyzA4GfJPjpjmt/u7e4PO6/wdEeToq1ZU/2HPoghBBNQUtCwt79GfX58nITBNlxue2UnzQllRKQUd6LLsw1HOgeyb99JoLFbKN+uD9wQ4cWRFRbaUJLXkmIOxjgHe1Cx80dl2EJHEINNLxgUbE54NrtZYjPAMgU5x3q32Wc2YISVm1h9d4uRFhf3WQqqJRxZ6IluGfLEFBvGJJS77fvJtmRWT5/wKvfmwlq4iRaJtUZ7h6t4pSBquObOw55iDYSL00kc912/jzikAOrOf5OqOzU5+lq+In5IJqQUcbcmaIFrjg1tFCU8A5txi4sbnfzHwLjjVg8C8DNuTb44PDIRlrwP9vL2OqdPV9ZxApf/UqXiL8YyqluyV4E= \ No newline at end of file diff --git a/server/src/uds/transports/NX/scripts/macosx/tunnel.py.signature b/server/src/uds/transports/NX/scripts/macosx/tunnel.py.signature new file mode 100644 index 00000000..a95c4168 --- /dev/null +++ b/server/src/uds/transports/NX/scripts/macosx/tunnel.py.signature @@ -0,0 +1 @@ +qVZa74Dzxofof/9WcomtCXvGZLw/zm4o+4Mv9Yg4pYyACGh9VPS0jCLENEyM85RJ3J8CdraTOGTSo+i9dhNLtKeshI3W0xSgNxf4WlxtRY4ZyIZH+xgWt0/hIoM/vtDIcOpW8XtfDJBCQ/B8vuB10H84STl411Gk4ny3eS0KYFsD2dlouMgPArk0FpbOFBgzhZpKZp0ustzUPh+Hxli4S3N5i6ipphajLz/oDnCJ5fFaZ7jH84J7tlUgv5gwbfLc81c/XPehglYzjn0gHXXOZYmnu76w1m+GP7pklAVPwGBJW1NYfQqekKSZDvSPHAH76tNAugEoFFyQ2bg4dRwyFz7MyidmN6QnqBEjEUo3dGo60ZX3LnbIlnG0ri7MAp/nvclI18yBIsibBEi7290nwcg0SmQMU/41Ck/EsplaCJf197Rtks42VWiy1rK9Ij93umroMJRUSOwma2OJ2UBBujq5B6ucgKD68sf7xoHxHzKe7iB8FfCjApfyv7KUrNnfl7w0xPinKJgNonKzTM9Ifr8ZIUwl7jkMxnMr5wyNmqyPSUyfwbD52E4I+8McuAuJn5CZRIggQnfJnSwfqyd41btTuOUles6LvctXYjTq41VNzp6BUQI6Um+cMOeLDejstL2/wudJuUP/j+7pxgW/lG7kpRJV6MdwYPZr7JMbBEk= \ No newline at end of file diff --git a/server/src/uds/transports/NX/scripts/windows/direct.py.signature b/server/src/uds/transports/NX/scripts/windows/direct.py.signature new file mode 100644 index 00000000..efdc1ec8 --- /dev/null +++ b/server/src/uds/transports/NX/scripts/windows/direct.py.signature @@ -0,0 +1 @@ +lOSb5Krs5w+PMH2ftvqsWjtnLw/jtk1qCLeQHI07C/OYtMzlqARN8oFe1uTxrfqBuRGIT4aDf3O3MliVRgdQOm+2AnWtjF95Za8ctJj5SOZUl6ZI7iM5JZ9npTYmWAZFNseiH9/Zi9LcPiX6M8AZcGu9XyNWz2qpMJmWFykfCEwZ1WBhtYmc1sueTtoy3hwDgXQ/65CyzXqVnadJXba4iArAB+ZRcUcgXOLDFunUL2SacaWW3mGA4UfeIavlhW8ZscmvT0PTeswDGq4NjWVd9nFV0gawuQcTBDLC3Rtl+8taqDcDnsBP641A/4RsN9TKILlk1RryL1Yc7LxvqCNjOziRC3LuF+pAZw9nuNBi1wDHkdwjNS3q8D6al+QDP9ke5h87m9TUrUSJG1VuNmQkrHEPVJScWWaj5YEuivVy8uzXP/7Fthkox9vGANlvlLmzh5BWdp76rB9dt4XaQcPJ1zWbndckg0Uwn4Rk3asVyT9EoLl+vuIs0dINKeRKDEfBew672rj+eXf1ozimh7wuEvhSZD5KtRrDdEpX8ZYB9NURQOwHkxWpuZ93wjNPIxS7FM6o4dRGqWYauYFY5MyUllX0KsxsPe/QameB8lhZVedWhiLROgQruNLY7V6kYp17/7dG8HKMhNLIFDnZL/bIWV3IBgASHSDoiKJ5Vp77GIQ= \ No newline at end of file diff --git a/server/src/uds/transports/NX/scripts/windows/tunnel.py.signature b/server/src/uds/transports/NX/scripts/windows/tunnel.py.signature new file mode 100644 index 00000000..e943c242 --- /dev/null +++ b/server/src/uds/transports/NX/scripts/windows/tunnel.py.signature @@ -0,0 +1 @@ +PoQV/R+u0zQ13yKshCbDSCb9UWmOz0KkfYbgcGQfeLC9Qhg2tH5+xMOSVMJZY/fI3cjlcUVJivpxmijhAqsBcYhRKYL8zO12R8q8iGnl0PYIheEAhQk7U7dilJPoAieBKffPHdrpXeUDs4zU3ltdkcI5OFOF1gLEtc4MCyRnUgG37Qqf82OE9gj5tXKHkZOwA0HgbGhiCCKJZIdXcwZOUhtrn+mRwBVxLh2brxjAcpEDMrXdyiIiJqt9rQpis3I6Lp0HW70yzWyy1YI6slAIDkPFabTxsaTeZVxpjVoXUQ5JOfyDSkH9CUwkwlyt9gS2fo909SBmfAlrlAyYQrmXqlQf6SomFhCHpuemTVgH/fN+PPv1aECBZS/RH1G4qRSpxpWLa6ZG9SInlPyNd7yWBnmKgMircmszh4IxA5j0SoshDnjd1GQm9XkrpuqQDu9XiL5p5KEn/EyLFZx3yRq6yCorWoSwbMhR0PNy4h3Q2xtImk6fxYuHpZmoKsrhWoUV+X7ezsfDuXHFu3N60bKV/N0LxTjIpoKACbWbmiwJHi+wt1/fsZuqhfvyB3/V9DjcgYcOdPeA/9OKW/npSxbS5wliQ2y4rs2eCKB96RLWJp0MRt1m2r5kQXjaewNvLW0YyoPY6wfaXpOGXGWVUyNLydF4KCbErNlAlT2N+jdirwY= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/linux/direct.py.signature b/server/src/uds/transports/RDP/scripts/linux/direct.py.signature new file mode 100644 index 00000000..878715f4 --- /dev/null +++ b/server/src/uds/transports/RDP/scripts/linux/direct.py.signature @@ -0,0 +1 @@ +KpbZ9kO5s28fPQxeAkPRKY/dJrw9g/RlkunlCUn3j3MjqDlrm1WqsiDw3WbmyvRUTuVHj+gzqkUgmNc/TWkWs2fQIKW0RQ4id8HT8n6MH8rzp8DPBXdWUzW5VgOlbLi5t8+MSLr2Ccp+GrtH/cw9RRMtls3jeISvRbpC4Y1DIpdQl2AZx1Pm2yCvb9SWq8Hcapt1pbfxcAAvDyQtlcOZHF+okKixYLifqbjSjbdwMkwPnBW+ZDKWoEUJSSy3cr7eIbd0pWOg0PkvvsrO7B9GdxNBEDIOBfi6wIUWDCg8d03swDl0kWGstI+tQSRtkC6LnABkOAW1YAFgHVCkxQMaFAukT+Jo3zuRYlm0qUvsL/GbIgtHzrRzGDpwyAAH7SI+pVdNQwlQP1wSQtQ6h4Fv8HrIMagO2h8D2k+kJ9MiBInzG1wcTYXbOqFT8M+n7hFi2XZUVaeNeIjF3GQh2JCrF+AZhDHinDbEYk4dUgtRr7VwfwKWenW4jyevmYg6RF4/8UPzd5noGQtNHop1M2DMbYxv2alCoevVQyDDmmaouDJ1K46iKOzAEll6wU/8KUC3EpcDVNiDBI+JACYZOcLpXH0HVXIpm7OVOyAX8380CvWMu8pt07so4gohyW+n2bLZiMXx1PS6muhx2a1NZ6S8W2cQ9lcGTkrujk6MKxV9GBc= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/linux/tunnel.py.signature b/server/src/uds/transports/RDP/scripts/linux/tunnel.py.signature new file mode 100644 index 00000000..db0bad6a --- /dev/null +++ b/server/src/uds/transports/RDP/scripts/linux/tunnel.py.signature @@ -0,0 +1 @@ +BYgATicnP1y+WshtNUsk4+Y8TBlBeOJtB8xjSkO8F2tAj579BAoyqqrtn5K88SBN7aD0+0nGymRwus2/+zyXeOz3fTF15RHUJzwBb6RZTYR4ng+Mf1nZuke4t8l2GxbBpKriOSgPLMcSx6cO4LAxMnc+9tn6YiNMpyhQa7e1wv/7kEEMM39O0DeC9/qvm7ZCVpHikLbpLtZznf1Et5xwSNdmikPeUY+xn3d0uJrkipkt+QW70nqx/miWP0MQrsNOtVcijQgSFBVt+k1R9YKczsqpKVOjc3B131OtebxUAPaod+mkkalU1Lc7ITXpO+/CjspfrJtHF5j1WuByM6mxXk3QeOgUDZ6m9qso/DKpx9CwHx1ShQBuOfqj5ADOlzv+VcigaqWjIW/qKMkkhD7C14pJv8KdpUxx02xaggaQcdNZZNKZs3YOgmpGWMkqKPBYTo5QMFO4Lg59vVnv3BZRGxMWhkAxM5zNhzVh2xRoEZJPNSilENuZgJLNZRpwFuxLDQ5NHoxXUcDZDUlHe+K7TwgKCZ2NrrGuAShOPiGc9M8Du4zMDJ9+A1/809BN2ZZ1A4VDrF2osiaFejIu03jEJMaA3afo1UGvuLQO61GSkzoqG/fEmZxS68meEXyDONiW5Y6/wawwFkyjG1mAdF/3D8yMHE0X6KQNsRbTja4WhBQ= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature b/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature new file mode 100644 index 00000000..e8aff94e --- /dev/null +++ b/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature @@ -0,0 +1 @@ +I9wIw2jnOvdKH8kJVE4ikNKl9mzH2pJpefunD9JGl6Be8kqQODlaC6KOAqLlk0hpMHgYS9/f+OdWNgeQVAwcTNZ3IPl6FmbbVbwhoosa7a9t/I2Ho0jcwY8HUEqu8HS5XWzWl6Qxa1sUJeUa7SXh2/CpoIGWVkaZur1fpC4d3SmylbuQ+kkJKtMNmDn0gypIQ7RtgWq6Lf23jfHD95UYpga/fgT/oG2dB696NHUQrRsLwYxFcFIjWf9nS1JlJ5E1fkIjdQ2v3R5w+CfkazFl4l+ShGTG6b7+iIIiv5z1xMbQ5MkWHGCbqlMUq8HPalIeaTcl8BkUqr5j7T7tV9ovTe7lBVz4NuXcbfvXZWMOW/73N+K64MRcxbSyqb7fLC8sfMbHy6RrBoUltXltAIuDpetIhzf5w/dVliGiL9j0DH/152k6l48GUfUI9jkxeywgze9fZCBg/2jF5/lsQ0xWpWjDNKXHRwBxqyjatRSoyL4WWQ2cCd0P+oQoIL2y4cb+zDNu1ilIn1Yf8XVJ5pkDhhDmH0wlXJOpUp+qIck9w2VeOW8DAR5wyagpGwa0IaZ+lH6XPSkMC3FDDVg9W0GeGk1KZPt4d0/a2aOBFZQyr2wU9E/PF+winkvacxZJDN6YlKcwfFZGtEXI6efmupZNSEA2oylEQ20Fopwd0ZgxVR0= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature new file mode 100644 index 00000000..f21a37c0 --- /dev/null +++ b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature @@ -0,0 +1 @@ +TT9DCCNC4wuxcJ6q1KoQuw/1t6fRBZ+aYfi3kEiekyK2hVeG0ZI72q+eadEwIRb93W80KcGr+ta8T+ReP5+vYHoGN7oAjuW+YNQceWwMmhK+gyf1PN4VS+8fHzLY+WUFa8rFihDdqmORjR66zCWjM/VrObzciOZsyR3NSKznOyWUxetAVFz3PyXnYJgBjcGitvMB0PMIR8LmzCHrbD2kvBgV5WsY8+NrzS0bge84s9HcRMYJCeM1g8W9wazAQLSneGk0+jg8Qptm3zz1sw7YMGLMbEe2TbmmL+9Ybk7wH7Y4lH/eP/yO+rstEt+tsV96HVWYw/Hr0IUdsqbpxuxVZFc77qCk8BrkiPZiCATeelQBWm8a+70DQfygYJpZOJTrUFD5NTr7Zoi940FesPIH9jfAVxmULwsDndg7rLy+9Z9cCFWBzXutE7DHc80/Ul7XhkwIVy22jKwyNoXaf3NX9yWsjLCrWoJqpQn1Pc5L0dgHIFykPlt3m9yoIEsWJbYeU/U7W/1h63hVeuayiwu5IW4FjFn9c4rRsyLREtCUToKCiRUuoLHIkOIl/8Qfzy9eyb3fJJ6W1MqHFE4/NY4Iu2OUenfBANPaoI384dGJwz6CoPdfRhpWxxC7kaY7T/aug8+7Ha63FbG2IPaF/poyEfY3AXHB4jaFVpToIpVNQZ4= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/windows/direct.py.signature b/server/src/uds/transports/RDP/scripts/windows/direct.py.signature new file mode 100644 index 00000000..75a0969d --- /dev/null +++ b/server/src/uds/transports/RDP/scripts/windows/direct.py.signature @@ -0,0 +1 @@ +RFy+Z2wPewrDO1EnLQcJ3JwDPBvLaXsjFGxFr4KMrqVuSH/DemDgiXzqFJmzb/tBzs/tjF6/ZqfEWh8bvRD8Z9+fKBB/6ga/GR8+NSBO+ujptjG3ytXEjHcdKf12RXbE2rnFrZYuXzaf8B3zTix22dkbZ8yiJq5yUDbCmyNeKfxZqzi4qTR5Hv0E+G+j1399rvd2s9isTQwrw7DDqKgmrgCQ0fymAolgT7VGSy7BmW1AR1uPFYY1l80eL2U8jIsLwhOsWhC6WzMlb8XOLoVhdO96odCG16z3d2sMiGJt+HPWec6RSMz+GDthxRcHl+ZS39fIOwXJgrd4Sv2XS4GRtZDyuSCXa8MLUX1NRxnfSdKiiv4UzjgBZoWFtIjWyjLAB1hfhaBO9HWEuJIZ2hrzb55KpzoIo1p+YoFIOpet9iJYEHv02P6rUabQdkiQhty0a9y6qeImEDHp3IH/e5AcksnphKrdR5Lb7zO2mEosbNh5RAYjhnDwCMZIYYP0ka/49SspFXSDtbJXNk/0xooJ3sd4u72EeQUVwg4hQmmq8zvagYIkLqaezFYRhQamIxK8AQUiZwXC4Eq4unV8Clw8qkjFCT9TRCrPAvMgH1Z9iTM47widtmUful9i3PN+a/vm34YLuCMFBYIhLEXi8ecjahrnYjrA3Yv7vZJhkTi6NHk= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/windows/tunnel.py.signature b/server/src/uds/transports/RDP/scripts/windows/tunnel.py.signature new file mode 100644 index 00000000..57c14f9d --- /dev/null +++ b/server/src/uds/transports/RDP/scripts/windows/tunnel.py.signature @@ -0,0 +1 @@ +RCYiCSIBFhbMgBl0/EIU+2P/zQIuoUlZCXb1gBt2oyy6tZ5DG2G6ZlT+ldPY/5rP0GoPM7BGqoBGVf2djT+isZ+5f3Gaq6YO8I5Bb9wVT6QkDJbXihZgK56H+zLwsDW032rPzPH8XXrTOrUS/TqktGquNTh46XUAlZ3lCBUZmEap+MNa3WYCqE2jfLLeYO0nYmrzTpst9mx2K2ZloqOH3oMdH7MnflmnCQLcMsDxOkBtZ5zr/NtgOW/JxS+0I4dDzJdcp9utye9cEA8jrMqNcEB3WN9NeGYXjT+5mVeRtiPn58hd4pO0MQb1FM06UKgwjQ3nU0p5yizzhCHdLjbKrd7REaUUbV3xnES0Q0SMTMSF51SsLb8yCN2sM6oQ4AJYvUL8E07ZhWyz+kv+xbdDN/3mC4lxUq1PzNaUUBnWReaH2ZEqfY6myEfn0C0gW/LEiLCD7PnG4lV2G9tCPWXvGGn601+ntQs2U6irbtJslSldd+1ZqcHyUmIAh9ChBr6Ro6hRz5Khl8WPq8ZyBMMapjdEEN+/gLa94AVhB/aCypmjTNcQzQsBlmHy0EyemoDb42kp8HRJl2jLdCUZxayZcV/KjrgLMuIEHQHDcaIa8UMzb6HK4U5KdHRNZK/E4SM276r8cmUl4zrlZ38kNkbsetQLcgKx3PGxjp9yGtUcioQ= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/linux/direct.py.signature b/server/src/uds/transports/SPICE/scripts/linux/direct.py.signature new file mode 100644 index 00000000..ca2b8c36 --- /dev/null +++ b/server/src/uds/transports/SPICE/scripts/linux/direct.py.signature @@ -0,0 +1 @@ +OXKEbc6+poPTlIVhceM9tzzQu5PhTPLyC/5xEnUGdGbUHlzO7LcnijVKL8FY3BhWBKrDdXRusYF4TGIQpb5ki1/F7y4A1X5aMSVDBJshrDs3WkeFgsn5VE5Dz3Ys6q23YwH0mlSNJeYLzOR9/7i+1i7H8tQ1vr6XFk9d+VzMeRpEYd7Fn1aIA70mycPlrarzyFYj4fjazUzb2PB/IzGh9ontzKaW6F0eRJ71+weTX6n+JwcgYZ+SMcH0iM4RYesGM8KVxYh0tP/y8FbfKQW2LBS1hV1dt1KWzneGelgk4XdfqfeeHuy55bdNeRfbQaOhZV8E/7oH12/Y5C5mxVWONithKXPm9unVOqv43VRUs5U9NUn8JX4s7awmqXFDJzmn5O1U1zL2CyLKISC2VdpiAjpTHN3MaJYwsvlmc+p6OgPmgHP07Zfl/sp4K6BCzz+OhbqCoIMMxjPDWB2XTxsgI/BWDiT2bfxERqYXr77RQzIbf9i+PJ1AoNe8NvA++Uv5HceoeXQg/otwIXmrqn+dwyp3Xz1IiX35Ul68RtYz+b1HdPrASbEpx9TiBlpmx33LC5R4wqptNs2CBOfpOuFiG512DTpJQ952eY94KL2vjvT43DwzSHo+N1OdAgxqXwywuNUutUdgSGlQdlBs2cyi3OaYO2TavMW7b7Lcct+KuhI= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/linux/tunnel.py.signature b/server/src/uds/transports/SPICE/scripts/linux/tunnel.py.signature new file mode 100644 index 00000000..a8465c13 --- /dev/null +++ b/server/src/uds/transports/SPICE/scripts/linux/tunnel.py.signature @@ -0,0 +1 @@ +UH5wmMzr/5Tt4lfbp9uvqqJQMWagMq61zaVwfQOm6CV/wCraMIao3+y2POAUcHauw/1ceok+8rL9lz5ACVQMjsDcGgu/s0IINQmQpk/Or5tpJ2V0Uusn4eDvOlyYG/KABEycH/ZeG9LoUk40HLg8RFUCZzSPMJA26ALdAzqNDaEhU8hckKpdSEM1GihFL/os32TvmutvTzAMIFQdTwohrSLf3QN2UWI7xNwr5iNgik8iyiaYtw5XiOckq/Fq16rX12uGYW1VYVVNnL5Q+Utfu6B62F2EzyD8qKIpsbHR7WObqFp0A7ABcxnIEjHLmmongnMeg9LNJQCmc+nGPVjIMiUYjLVAkEAK8NrbpZH4ICn0A9GvuEivziqASFflzDi+uGJepXtM7Ix3ffOukm5LDP3A7jANRCT+k5XE4ihirBGVgLpLVY5TFKaEWHiwxHpRvD03SoRjqGm2nmjn3LtkYdXR1qGq55u/LoLcbC+YMjnXsgMb/0GO7dwEcsaiI/zKzQuEkv9htAeOR9MaNcejqY/euEzi+0Wv2XnctNZUvk+diu5dwsLk3zweqBobVP75PFf8knqSialdQ1xYRICRVcbpOP/wW6sK/xWQzjfGVflUNEzebabvFgYiY84i2mAk6gTifmngp+YUV8z/OsS+sdKrRYAFcnywex22OW+d2tM= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/macosx/direct.py.signature b/server/src/uds/transports/SPICE/scripts/macosx/direct.py.signature new file mode 100644 index 00000000..ba8081e5 --- /dev/null +++ b/server/src/uds/transports/SPICE/scripts/macosx/direct.py.signature @@ -0,0 +1 @@ +K53OnKFW+I5lm3IOTndAkWRf/6tMuT4FGw2A+9IorgVQdTKthO37MTfofYdDbKAyEjWN7SaSDt8EXe3sr0s8vTia4RmrLm2gYeHAIA4eUd2zqkwSD3dmELEDWopYZdpeiIYEvv7sPFJpYaztwu14w5f9HBwF8EzPNq13ds1ZefUqq9MBeu6vAQHWBHyPjHepQ1BhkI9k3gdZaCqRj0vT8a+wIgEjV0jjBZSvA5p5XBK1XDgjlFCn1ImsT17QdQQoZcX5vAWKh7Qar6DxKuEVFCw4Ncejnb9YeqgtMG7sVeLIUtI2xDf0idpZ+ppRWxbke5aI5zgK9P4mx1SSYhzLscfD1HUPcgEipheOGmO5eRDGC+Z2JCUzfKezqW/6IGvAZLNuHaF3gG1Q1DQ7D/QuWdO3p8IA/+9e2QJIDHgYcmN3Q3r5nXipqa3Hf7Mv19BtW9G75cGO6ZwkBC0THg6Yk8rhzpwvH9cXpZmi7GdhF6SYS1JILaHp9bcDxJb2pPRNRhUl9WcKsHRbTohPU3kbRt2gGWS1VSldkgdcU3pi7SSVRMu4wUlcgESJ9fE27A7URoEzC3t5Gf7L376QNarJTl5hP+Xr6AYn5Deeeeb1YuEWaJm0hL6pVVCmFBh7mDwgs7bm6wo4qjWat8U0JvuBWnGkqw/ogvgaeHwt3z43/Cs= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature new file mode 100644 index 00000000..3f6488d3 --- /dev/null +++ b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature @@ -0,0 +1 @@ +CpTiYaxvzwUaRifDHRIZmXt2QqJnOVwPu317MCMDtL3S1yuwtcAbzRQnra118WGU0RGLnsYV8rMQp9Gr8qTLy17+RHg8RaMdIOvSX42ACtfuAQteT+Oa8tYIbNm9kNxGT8ZCzvxseEE+LKhLKMFxIWZTbQ1cOYPjVSgv5jXn1wJLJ4ieokUt9ik0TVrRbsm/nAp4sirdhmihGDDJoG3yTDYYqkyLbxSk3gSCEV6FBqFASZDgS57G05lNy0A5KBsCulwyLfepJT81vWQ3+j5hm62pzzS4fEWzoQV432lIDnB4XkRY06brjWGGAbw6Z8z+bkQ48uL3upmxhYYb9di238q2UWp4V4aEmAYjO3xEDTbx7wqlyCwBCiPEEkeGNXryWM5t4h6AwHhidT5H1sGStMEPIiA6DD0lxAQGh76O+RYQ3/MNDFc36t87IOSpPsIcF4OzCpelybWhcXP/lZfq6jumjHLlFqDnD8mrM7K1zMJU5lqcpjQLxYyeR7YN8vxzeP1ulGNY/T4DdJW6akDkal528MEAfRN3BHqwjLRCNFe4YlES5e6G99LjpN2Gz1Ps4v0qS0QHXGTRWGKHM4SgYWsRQTigOd/wJjNy4o0Y/tWH5FwJpAsg4GuMlLb5iWjTkiMcb7ne/8qdWUxkCcon1DUKIPtrS+Ysr7YGxT/bUuk= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/windows/direct.py.signature b/server/src/uds/transports/SPICE/scripts/windows/direct.py.signature new file mode 100644 index 00000000..2cbfa1a5 --- /dev/null +++ b/server/src/uds/transports/SPICE/scripts/windows/direct.py.signature @@ -0,0 +1 @@ +RvUnaV1eJSTiLYd9jLweZMY8rxOEdswTRLI6kyo2kJ/2F9Y2LwfY6KqBSK5FVid3Ia5pJmUUWEei4GXsoolvon2yBT0kNrloQDKVFUWceuKHQPsxxdJtr0EkZK2pfiy1Vg+GiBv6DhIIqpmEt/Iol7OUYJliMvE0CdIcOljFG18YJvOeoe8lymWYspdrM3H49md+XrhJh9rKsUCiixgoTDldmZcgGa2CMdKISzBbc2AdWxc0Iy4/E7bc0+Fjzfci6IAAJ+fYo+15ghENwl0MP8YPLhJpTz2IEuv4JzhBRiY47dGpeNWZG6mc0F8fAoG1vFh5vcfu5jg9nUokwZaXDX1VLD7BF8QlpBPoYkHw5D1hXSNxsxxWicVbaHLoPrbtVyxG83MDszZEc40JXAjBfLZMi+UsUWDbhMFtywF0OLCLKokhPa1fJvKumMQcX1sBSCCAPSLCxhY/hh9mN1NnndOm+8bqXNkJg1AEoy9pIST2XMfNxc6914EE2DOOSoqWzdTrynEzEYu56GzrA4Wa0H6zaxS2XHaDJmkQHCg6CjndbJRbQbpRhaqcaRzCwM2kzurevi6VmaySkHqu3EE124ubdns3lcudZKg/C4s1/sjbR+fNRt+EhppG+DzHk3JS3xyo/R8JsRBtnFySag65tIHaVoxygKL7SjnUuHIVHhM= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/windows/tunnel.py.signature b/server/src/uds/transports/SPICE/scripts/windows/tunnel.py.signature new file mode 100644 index 00000000..4e5e6873 --- /dev/null +++ b/server/src/uds/transports/SPICE/scripts/windows/tunnel.py.signature @@ -0,0 +1 @@ +G+JHL1/elgDaceaxCY+bK8rd+YowcrU0UNertNwSsDrZVr52/X5BKmbXX2mlOe5wqvj7j6juVT1ZR5vZLV6JXXZRNUgaaYmd5Uo8iGYpMmIPxxrVphZwpbMtUeeVL0XYbTGvDDMz+fEA/4JeZ1SzvkmFqjQOvuzIolXzKUKs4CQh5E/ZAolzAZRs84lgMXRvPpGzzNkHXg69sbBZHgLxHvMlRpBYcf+64mZ8rhVVVGRStIZju2A0j3yqCmVHQX7Yr7hQmUGOtfprH46a1caZmsw4atC04EHuY09x6nkZndCfroHeBmtseECmvh/GWw84jgkyUMpmB8snWKzzGIyQLhGkUfuttPxMFXr+HIM3Oe6gLq1AwYILAqXdJSo+QSzb8Qr03BA/hhZtwBPki1Cq8RDGZSN/a7fLcINaZCYANKvBGgv7uPrXWv0QdOFlYte4EpGF6ahzs6RNC++eNe7707heKnlm2WUcBZ257TsjbxMl8vEcYDdOSP8bdnO9EADTaTnWntfh7OpFyFlEGh/5Zg8p+Mr/froUKZOgU4wbcsVtPXfwQ0JpVVnpPfU4KcFgEmFOYSdD3mcGgvRBiBwp72uquLq5E5xHAU92Zzf2nNjeS5dbhubCsex+g2rOzVw9OUEnFS1mvcPv1uh0ek3/vMT7rkAjOjX6NBvYtxtT9V0= \ No newline at end of file diff --git a/server/src/uds/transports/X2GO/scripts/linux/direct.py.signature b/server/src/uds/transports/X2GO/scripts/linux/direct.py.signature new file mode 100644 index 00000000..bb78b313 --- /dev/null +++ b/server/src/uds/transports/X2GO/scripts/linux/direct.py.signature @@ -0,0 +1 @@ +aMp4MhyO5CgI/FHwIXuIdm3FiEtlTE9lOvPvyigpjT0NhyzU6GsJvMVJX860WxUYodhNzpsUZHehvOYpxkTyaxF8n8uEi3LCf3DQoPFSQv4sf8zBXaJkF/bo/DsdNOb1Zufd9PvaE8mSns7V7OMeua55imqkMukWueOCyJnQBfOTg8ZoRu5vG26F1eWZZRycesXWr9bpMMWS2A5swOlY9cAhdk2B0IOnP2mf2SOI0ex4nsVK2trfDBeXgqQcm9dFg+lo88Bg1OD5rfJFYna5uZm265Whw9ZkuVarTvMnNtaDH2qpSvjqhdmtZFr9WoEFoMU45nV3cr2H/uXJFzf5HmKv4E4jxQ86GbYiLmhD4WOjvfxECRCivgG1VV3FfOpF2TYyOcmiSTWNFOZICM9lxSs0Sn2Mbjc3AUIRH4HwViPHyehOQjpSwRsVd+uysiKoMEQA10dLXOMjX/MA0vG1feUmgWTpVdtEevn98gYWNUK2sJTwekB4ovwG1lADoWrP7oXmq4KqoCzcgJacorAw/S7SUfavluqyfD0gf2b/GSAh29QJUNa02qlGxO85JsPx94o0jmXRlp8dEduVxtea+rW3AAJln7irrVj3TD8BFt3LUsszVcwref95+qMqfJtdq3DZ7eJ62D1Cm5AxFHSwPOjz4imWQsrnJodgipY4my4= \ No newline at end of file diff --git a/server/src/uds/transports/X2GO/scripts/linux/tunnel.py.signature b/server/src/uds/transports/X2GO/scripts/linux/tunnel.py.signature new file mode 100644 index 00000000..bfcedf6d --- /dev/null +++ b/server/src/uds/transports/X2GO/scripts/linux/tunnel.py.signature @@ -0,0 +1 @@ +t9FzKW38+0tICrM6HRul6X80PWMuq/nZQRCJlww2scUBG28/VlJZcdWacCC5WOUn36wAUqFtjse/tTx52tBHKvLEINZIjVaWwgUkt316al4LsNGzfK1xptXKk8nX1JHg9dFAbvUUjaS1tgJtkW/F4wGT6m4a7h2aburLj5PN9f20uwen8QlyM4e9ZgiCAXYxHPaglmd7VCxii24K6+DZh8AzSc8J1txuau+cRpaY0qV9fgJJajSuWdy9JRJ8op4okaQQ9BQ8mgoo36CWHDQp9/GfUwMfFGuo1J3PfmdLyBPoy5QBwWQrTJco5CCh1vK92q3e0pxtHvInmUyyDfk2tmgjpNah1f6P3LFCF8oJHh2nkJT9zxisQg+6QvaofQdd9ap7qNDdqMzQIwSqqVydLpjCg7Z298owv+cFBeVfKtpYAqLpS8lch7CYXkXpUBxoqYrSVnSWUxKq7gluRuI4n5/w73xDc6o4G69KeuH9RcSrqNByim80drM9IEARMXWbiTKkEvgqKBpAZnK7YPx1abrPdH9SDovgj+jO11K5D41yE/D+BZYXGHFQbSVr3T7vY586MP5KinW+TO27mZpp+uU6ikD9ulieE7zIqz8X7VBwmaRGJL5rLV8QvsEKKkChilvvDZN+khDzxm0NIhYe2Hu9Y7mMvmk16Yi2etGw95M= \ No newline at end of file diff --git a/server/src/uds/transports/X2GO/scripts/windows/direct.py.signature b/server/src/uds/transports/X2GO/scripts/windows/direct.py.signature new file mode 100644 index 00000000..dbae5f8f --- /dev/null +++ b/server/src/uds/transports/X2GO/scripts/windows/direct.py.signature @@ -0,0 +1 @@ +s4a00oXZoCxYyhyJ+DmgCxqhpjH7apx5jRFed/sgWdjYyNNK7kpGI7KDilP0QLyS9N2JpdklA2m2hKCUcQ9bEsjorSFA35cZPreGwM+USOj+iO+eOBOYd3q5jU2eFcF/pjd8NBbENQG3rZLo0AQ3A3JhlBfEffdrXAyYvHcaEtYd6mOSPmE9nHly5eGa8Zfg94QLEXXjLffkkWABAqHpdsZW9yrG6MPfmQk5NOqXQIeSEKIPHAkTpO/2EjdARJB78oSfgGf1Ypo69QFYTBlNRbErSzLSL6lopWPmLE7GKF/nt67/jWAPd79cFAkIrqjeHuA/8yeIemUtSEi8Or3AuilKRv7R9VrOWgnqT38LrVPIFi6QrXO6CAnPiL2X947U1OfXpHh92TTaqxMaW4uxb/gMIGo1kheZ2Ury3u7sXehpyehNM3qdLfr3gf7cVEmIyeOeXS/fdA6rJhYTfZlIeOhsYx9joQyiW+ntpI8sDe5kcgsJBprFLMHIRhhoHTHSo8KlRnM4xoAzg4aOrcb4CZx9TEwgFWW8f2G7anT25LNbs7T7QrU6DeEy2Az9QllznszDTSH0cddH1Z4ewdGvOzdfom/YZPGqV02/pI+dO0knzXaK5IpvVCyi4ZIrMAJV6bD7FoYXM6QEgC9TmJq+/fhob+6+l92m5no/WP7Dvfg= \ No newline at end of file diff --git a/server/src/uds/transports/X2GO/scripts/windows/tunnel.py.signature b/server/src/uds/transports/X2GO/scripts/windows/tunnel.py.signature new file mode 100644 index 00000000..d10df398 --- /dev/null +++ b/server/src/uds/transports/X2GO/scripts/windows/tunnel.py.signature @@ -0,0 +1 @@ +Hn5x2fpMnfqp9yzuZ2toqe2dprthtxyGTLA6/iCZr3A+t7Nb/D2SWSYkPBDU4yxYU3j/E34UTl60Yen00dmky5rGH/FPlTD4VzbRJasCE3vpqhcAj7I7zmmmZRwVQ7DI8U7pSOMsMJJuZ44cb0V4KAeEpaXrQw7TeMsjMbjkUkQqromZS59OBJGTjrPV/v5i9nfAageL9hyheXjOt+seULPhPfA/KTqLV1fuDhsWaLMjC/LXDor4qWJP6THbcdOqkIegkAEo8D2pyYa5eLhfqPuxicpU9wejm4BmdTzXIBrIxxFImy124oUDbUx6Q/WLKxsvClUQUmYNC3A6DLgEfvpeYCj7U4914jy3q0rXuY3avWt6BsgMMBIB55hKgLM6eoGe+md1F0pr6ofna/1JsObWwf0MBV/hbWwiUr2iDTl+c15VzmOSqa6liSGjBH/0wKGBVnNN/OZBPwEd8QqslfzdK1Db/1thA32f/jQhejYlUG0mT1/pKynHGWf8CJG9tTc+NmlL58kV9w0e5LiLMVPHeHYoXYIrpfCTkJye+dYM/ZozIzy/yaB1N763/sn7eyGgm9Hf0ClJEnc0CJb0PVvibUY7jGEIAWu48A4BNeTjlpV+DTqY7eZ8oxhpODUA9V7bX7vldmzACO/wgd63fVN564sUoqew18GOHOA3Q+A= \ No newline at end of file