# HG changeset patch # User Oliver Maurhart # Date 1403725749 -7200 # Node ID b16c57614eee81513db85cdff18ebc28b8cda1a7 # Parent 009ae01fd5756424b8a65c91c30d883d32f8cf26 added format drive option diff -r 009ae01fd575 -r b16c57614eee OpenSecurity/bin/ui/FormatDriveDialog.ui --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OpenSecurity/bin/ui/FormatDriveDialog.ui Wed Jun 25 21:49:09 2014 +0200 @@ -0,0 +1,177 @@ + + + FormatDriveDialog + + + + 0 + 0 + 420 + 120 + + + + + 0 + 0 + + + + OpenSecuirty Format Drive + + + + :/opensecurity/gfx/opensecurity_icon_64.png:/opensecurity/gfx/opensecurity_icon_64.png + + + + + + 16 + + + + + + + + :/opensecurity/gfx/emblem-important.png + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + 4 + + + + + <b>Attention!</b>TextLabel + + + Qt::RichText + + + + + + + + + + &Password: + + + edtPassword + + + + + + + &Keyfile: + + + edtKeyfile + + + + + + + + + + ... + + + + + + + QLineEdit::Password + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 100 + 0 + + + + &About + + + + + + + + 100 + 0 + + + + &Cancel + + + + + + + + 100 + 0 + + + + &Ok + + + true + + + + + + + + + edtPassword + edtKeyfile + btnBrowse + btnAbout + btnCancel + btnOk + + + + + + diff -r 009ae01fd575 -r b16c57614eee OpenSecurity/bin/ui/Makefile --- a/OpenSecurity/bin/ui/Makefile Wed Jun 25 20:42:12 2014 +0200 +++ b/OpenSecurity/bin/ui/Makefile Wed Jun 25 21:49:09 2014 +0200 @@ -4,6 +4,7 @@ ui_AboutDialog.py \ ui_ConfigureDialog.py \ ui_CredentialsDialog.py \ + ui_FormatDriveDialog.py \ ui_LaunchDialog.py \ ui_KeyfileDialog.py \ ui_NotificationDialog.py \ diff -r 009ae01fd575 -r b16c57614eee OpenSecurity/bin/ui/format_drive_dialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OpenSecurity/bin/ui/format_drive_dialog.py Wed Jun 25 21:49:09 2014 +0200 @@ -0,0 +1,132 @@ +#!/bin/env python +# -*- coding: utf-8 -*- + +# ------------------------------------------------------------ +# keyfile_dialog.pyw +# +# the user should give us a keyfile +# +# Autor: Oliver Maurhart, +# +# Copyright (C) 2014 AIT Austrian Institute of Technology +# AIT Austrian Institute of Technology GmbH +# Donau-City-Strasse 1 | 1220 Vienna | Austria +# http://www.ait.ac.at +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation version 2. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# ------------------------------------------------------------ + + +# ------------------------------------------------------------ +# imports + +import base64 +import sys + +from PyQt4 import QtCore +from PyQt4 import QtGui + +from ui_KeyfileDialog import Ui_KeyfileDialog +from about_dialog import AboutDialog + + +# ------------------------------------------------------------ +# code + + +class KeyfileDialog(QtGui.QDialog): + + """A dialog for letting the user pass on a password/keyfile combo""" + + def __init__(self, user_text = 'Please provide an approbitate password and keyfile to proceed:'): + + QtGui.QDialog.__init__(self) + + # setup the user interface + self.ui = Ui_KeyfileDialog() + self.ui.setupUi(self) + + # local members + self._about_dialog = AboutDialog() + self._open_file_dialog = QtGui.QFileDialog(self, 'Open Keyfile', QtCore.QDir.homePath(), 'All Files (*.*);;') + self._open_file_dialog.setAcceptMode(QtGui.QFileDialog.AcceptOpen) + self._open_file_dialog.setFileMode(QtGui.QFileDialog.ExistingFile) + + # connectors + self.ui.lblText.setText(user_text) + self.ui.btnAbout.clicked.connect(self.clicked_about) + self.ui.btnCancel.clicked.connect(self.reject) + self.ui.btnOk.clicked.connect(self.clicked_ok) + self.ui.btnBrowse.clicked.connect(self.clicked_browse) + + # positionate ourself central + screen = QtGui.QDesktopWidget().screenGeometry() + size = self.geometry() + self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2) + + + def clicked_about(self): + + """About button has been clicked.""" + self._about_dialog.show() + + + def clicked_browse(self): + + """Browse button has been clicked.""" + if self._open_file_dialog.exec_() == QtGui.QDialog.Accepted: + self.ui.edtKeyfile.setText(self._open_file_dialog.selectedFiles()[0]) + + + def clicked_ok(self): + + """Ok button has been clicked.""" + + # read the content of the keyfile + keyfile_content = '' + try: + keyfile = open(self.ui.edtKeyfile.text(), 'r') + keyfile_content = keyfile.read() + except Exception as e: + sys.stderr.write('failed to read keyfile content:\n' + str(e) + '\n') + QtGui.QMessageBox.critical(self, 'Failed to read keyfile', str(e)) + return + + # turn into Base64 + keyfile_content_base64 = base64.b64encode(keyfile_content) + + sys.stdout.write('{ ') + sys.stdout.write('"password": "') + sys.stdout.write(self.ui.edtPassword.text()) + sys.stdout.write('", ') + sys.stdout.write('"keyfile": "') + sys.stdout.write(keyfile_content_base64) + sys.stdout.write('" ') + sys.stdout.write('}\n') + self.accept() + + + def set_user_text(user_text): + + """Set a text to explain which password we need.""" + self.ui.lblText.setText(user_text) + + +if __name__ == "__main__": + a = QtGui.QApplication(sys.argv) + d = KeyfileDialog() + d.show() + sys.exit(a.exec_()) + diff -r 009ae01fd575 -r b16c57614eee OpenSecurity/bin/ui/gfx/emblem-important.png Binary file OpenSecurity/bin/ui/gfx/emblem-important.png has changed diff -r 009ae01fd575 -r b16c57614eee OpenSecurity/bin/ui/opensecurity.qrc --- a/OpenSecurity/bin/ui/opensecurity.qrc Wed Jun 25 20:42:12 2014 +0200 +++ b/OpenSecurity/bin/ui/opensecurity.qrc Wed Jun 25 21:49:09 2014 +0200 @@ -1,5 +1,6 @@ + gfx/emblem-important.png gfx/network-workgroup.png gfx/cpu.png gfx/drive-harddisk.png diff -r 009ae01fd575 -r b16c57614eee OpenSecurity/bin/ui/opensecurity_rc.py --- a/OpenSecurity/bin/ui/opensecurity_rc.py Wed Jun 25 20:42:12 2014 +0200 +++ b/OpenSecurity/bin/ui/opensecurity_rc.py Wed Jun 25 21:49:09 2014 +0200 @@ -2,7 +2,7 @@ # Resource object code # -# Created: Wed Jun 25 20:39:32 2014 +# Created: Wed Jun 25 21:46:29 2014 # by: The Resource Compiler for PyQt (Qt v4.8.5) # # WARNING! All changes made in this file will be lost! @@ -6643,6 +6643,341 @@ \x46\x72\x12\x00\x41\x8d\x9a\x87\x35\x6a\x6e\x27\x8d\xda\xf3\x34\ \x00\xfc\x1f\x01\x0f\xf7\xd0\x25\x2d\x11\x4b\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x14\xc7\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x6e\xb9\x00\x00\x6e\xb9\ +\x01\x7b\x67\x90\x7a\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\ +\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x14\x39\x49\x44\x41\x54\x78\ +\xda\xb5\x5b\x6b\x90\x5c\xc5\x75\x3e\xa7\xef\x9d\x99\x9d\xdd\xd5\ +\x63\x77\xd1\x03\x09\x24\xde\x42\x41\x31\x4f\x61\x20\xb6\x2b\x06\ +\x4c\xb9\x62\x27\xe6\x47\x20\x0e\x09\x90\x50\x86\x38\x2e\x82\x5d\ +\xe5\x98\x54\x05\xf2\x70\x9e\x55\xb1\x49\x80\xb8\x9c\x14\xa4\x9c\ +\x04\x42\x9c\x8a\xf3\x03\x92\xca\xab\xca\x06\x07\xdb\x31\x85\x62\ +\x5e\x11\x60\x03\x02\x69\x11\x92\x11\x5a\x69\xb5\xda\xd7\xcc\x7d\ +\x74\xbe\xd3\xa7\x9b\x9e\xeb\xbb\xab\xd9\x95\x2a\x57\x3a\xdb\x7d\ +\xfb\xf6\x74\xf7\xf7\xf5\x39\xa7\x4f\xf7\x9d\x61\x3a\xce\xeb\xf1\ +\xc4\xfc\x68\x11\x43\xa4\xb0\xb0\xf8\x93\x40\xac\xde\x9f\x81\x74\ +\x3b\xd2\x8b\x21\xe7\x91\xb5\x9b\x51\xf1\x24\xe4\x87\x21\x2d\xd2\ +\xab\x0b\x99\x46\xf9\x41\x62\xde\x83\xfc\x4e\xc8\xf7\x20\xff\x03\ +\xd9\x65\x89\xca\x41\x64\x3a\x10\xd6\xa6\x4b\x6d\x3e\x5e\xef\x2f\ +\xca\xe3\xc2\xb1\x6c\x02\xbe\x01\xe0\x01\xba\xd5\x84\x59\xdb\x09\ +\x23\x48\x09\x80\xf1\xec\x63\x00\x7b\x35\xf2\x5b\x21\x83\xac\xd5\ +\x19\xb5\x8f\xdd\xb1\xb5\x14\xea\x42\x66\x21\x2f\x13\xf3\xd7\x71\ +\xf3\x28\xfa\xdd\x81\xd4\x41\x65\x25\xd7\xaa\xc4\x01\xbd\xaf\x2c\ +\xff\xff\x08\x78\xa2\x36\xeb\x3a\x08\x0b\x21\x9d\xd5\x1b\x21\xb7\ +\xa0\x64\x9b\x80\x50\x6a\xdc\x15\x67\xac\x2c\x19\xcf\xd9\x96\xb6\ +\xd2\x39\x1b\x57\xd7\xb2\x31\x01\x90\xd4\x33\x10\x0b\x09\x54\xef\ +\x44\xad\xaf\xb0\xb5\x0f\x5b\xe6\x09\x96\x1e\x58\x44\xc9\x0f\xd5\ +\x7e\x62\x19\xda\xc0\x4b\x05\xce\x55\x9d\x63\x11\x8c\x4d\x7a\x1a\ +\x23\xe6\x4f\xe3\xe6\x57\x3d\x09\x0a\x02\xa0\x05\x6c\x59\x94\x82\ +\x28\x7c\x9c\x85\xb1\xa4\xd9\x20\x33\x30\x80\x1b\x4f\x68\x89\xaa\ +\xf3\xf3\x54\x74\x33\xed\x23\xd6\xb5\x26\x31\x25\xa1\x3d\x21\x43\ +\xda\x53\x2d\xa2\x77\xf0\xe7\xcb\x78\x7c\x3f\x0a\x0e\x39\xfa\x38\ +\x4c\x44\x1c\xe0\x15\x79\x79\xe2\x04\x7c\x13\xe0\x6d\xf5\x03\xa6\ +\x8b\x21\xb7\x30\x20\x34\x7f\x2b\x80\x7e\x1e\x5d\xaf\xf3\xb3\x57\ +\x22\x4f\x65\x5e\xc8\x33\x4e\x88\xec\xc0\xfa\x75\x3c\xb4\x65\x0b\ +\x0d\x6d\x3d\x97\xda\xa7\x9f\x4e\xad\xf5\x27\x53\xba\x7a\x15\x25\ +\x83\x83\xa8\x20\x35\x80\x0d\x04\x14\xb3\xb3\x94\x1f\x3e\x4c\xdd\ +\x03\x07\x68\xf6\xd5\xd7\x20\xaf\xd0\xec\xcb\xdf\xa7\xce\xdb\x07\ +\x6c\x19\xc8\x48\x93\x92\x98\x85\x30\xd1\x0c\x64\xf8\x87\xb8\xfd\ +\xad\x24\xb1\x5f\xe9\x76\xb9\x4c\x53\x12\x4a\xcb\xde\xf1\x5e\xde\ +\x87\x04\xee\x07\xde\x5f\x61\x0a\x13\xcc\x7a\x81\xec\x16\x62\x7e\ +\x00\x83\xf8\x80\x0c\x87\x30\x02\x99\x9d\x02\xb3\x2d\xaa\x3f\xb4\ +\x79\x13\x8f\x5e\x75\x25\xad\xbe\xfc\x72\x1a\x3a\xf7\x5c\x6a\xac\ +\x5e\x4d\x32\x34\x9b\xe7\x64\xbb\x5d\x2a\xb3\x4c\xf2\x02\x24\x7a\ +\x11\x90\x61\x1a\x0d\x62\x88\x69\x36\x9d\xe6\xe7\x93\x93\x20\xe2\ +\x55\x9a\x7c\xf2\x5b\x34\xf9\xc4\x13\x34\xbb\x67\xdc\x92\x10\x1b\ +\xb4\xa2\x2c\xd4\xf1\x32\x7f\x93\xad\xbd\x0d\x0f\x5f\x35\xcc\x89\ +\xf8\x89\xa5\x92\xc0\x7d\xc1\x57\xed\x5d\x66\xf8\x26\x62\xfe\x12\ +\xd2\x15\x6c\x4c\x2e\xe5\x05\x66\x1c\xaa\x6a\x47\xae\xb8\x9c\xd7\ +\x5d\x77\x3d\xad\xda\x7e\x09\xa5\x2b\x56\x50\x31\x37\x47\xc5\xd1\ +\xa3\x2e\xb5\x99\x00\x2e\x1c\x30\xea\x11\x5b\xcf\xab\x61\xa7\x0d\ +\x4a\x86\x06\x29\x5d\x05\x6d\x41\x5b\x25\xda\x98\x7a\xfa\x69\x3a\ +\xf0\xb5\xaf\xd1\x91\xef\x3e\x65\xa1\x65\x9c\x34\x12\x41\x26\xa6\ +\x96\x12\xf3\x14\xf2\x9f\x02\xa0\x47\xbc\x83\xac\xa0\xbe\x2c\x2f\ +\x97\x4e\xc0\x7f\x55\xc1\x33\x05\x83\x67\xfe\x22\x06\xf8\x59\xdc\ +\xa2\xf7\x44\x54\x3d\x91\x51\x8f\x5e\x71\x39\x6d\xbc\xf5\x13\xbc\ +\xf2\xc2\x0b\x65\x76\x45\x95\x9d\x4a\xdb\xa2\xec\xd1\x1e\x01\x17\ +\x3c\x55\x04\x5b\x23\xa3\x94\x7c\x29\x66\x81\xbc\xa6\xd2\x57\x32\ +\x3c\x0c\xf3\x59\xef\xd2\xa3\xcf\x3d\x4f\xfb\xff\xea\x41\x3b\xf9\ +\x9d\xef\x12\xe3\x32\x8d\xa4\xa0\xe2\x5d\x6d\xf8\xc2\xd1\xb2\xbc\ +\x73\xb5\x31\x1c\xfd\x89\x5e\xef\x5d\x80\x04\xee\x07\x5e\xac\x34\ +\xb7\xb6\xc1\xcc\x0f\x61\x84\x1f\x27\xe6\x9c\x31\xdf\x79\x96\x73\ +\xfb\xe4\xf5\xf6\xb4\xcf\x7c\x9a\xc7\xae\xb9\xc6\x01\xee\x1e\x3c\ +\x88\x99\xce\xb4\x59\xa6\x3a\xb8\xfa\xfd\xe2\x65\x44\xa1\x4c\x89\ +\x28\x0a\x22\x88\x38\xcf\xd6\xa9\xa7\x52\x3a\x36\x46\x93\x8f\x3f\ +\x4e\x6f\xdd\x7b\x9f\x9d\xdf\xb7\x1f\xda\x90\xa2\xb2\x53\x31\xd1\ +\x86\xaf\x22\xbd\x39\x65\x9b\x15\x42\x51\x0f\x09\x97\xe6\x76\x71\ +\x02\x9e\xac\x82\x57\x0c\x00\x6f\x99\xff\x11\x99\x6b\x99\x39\x23\ +\xe6\x14\x2a\xcf\x6b\xae\xf9\x90\x3d\xed\x37\xee\xe4\x74\x68\x88\ +\x3a\xfb\xf6\x63\xe6\xbb\xc1\xab\x2f\x1d\xf0\x32\xef\x71\x09\x11\ +\xe2\x3f\x1c\x11\x83\x67\x9f\xed\xfc\xc7\xde\x7b\xee\xb1\x13\xff\ +\xfe\x9f\x0c\x27\x69\x19\x4f\x09\x63\x46\xf9\xa3\xc6\xd2\xf5\x96\ +\xcb\x4c\x91\x44\xb0\xdb\x7b\x48\xe0\x5e\xf0\x5d\xa4\x69\x0c\xe9\ +\xf8\x7d\xc3\xc3\xf6\xc9\xe9\xe9\x47\xd8\xda\x1b\xc8\x00\x7c\x49\ +\x0d\xf9\xe8\xe6\x3b\x6e\xb7\xeb\x6f\xb8\x81\xc5\x63\x17\x53\x53\ +\xe2\xc0\xc2\x72\xd6\x1f\x6c\xbd\x4e\xf5\x5e\xaf\x6a\x79\x5d\x94\ +\x08\x68\x5b\x63\xed\x5a\x6a\x63\x95\x39\xf4\xd8\x63\x76\xef\x9f\ +\xdd\xe7\x42\x02\xc6\x58\x6d\x29\x5a\x4b\x5f\x05\xd8\x1b\x76\x24\ +\x8c\x4b\x5a\x62\x05\x2c\xa1\x69\x61\x23\x01\xdf\x02\x78\xae\x46\ +\x77\xc6\xaa\x13\xf9\x13\x74\xf6\x39\x99\x79\xd1\x04\x38\x26\x7b\ +\xe6\xef\xfe\x36\x8f\x7e\xf0\x83\x34\xb7\x7b\xb7\xda\xa7\x31\x92\ +\x2e\x6d\xb6\x89\xc4\xcb\x2f\xfc\xdc\x13\x68\x3b\x1d\xa4\xfd\xdb\ +\x0b\x57\xd9\xed\x3a\x1f\x31\x0c\xff\x33\xf3\xc2\x0b\x34\xfe\xf9\ +\xdf\xb3\xe5\xfc\x1c\x9b\x24\x90\xc0\xf7\xa0\xfa\xaf\x33\x93\x61\ +\x54\x57\x7b\x50\xd9\x9e\x59\xc5\xfd\xed\xc4\x2c\x04\xfe\x46\x90\ +\xf6\x10\x31\x17\x2e\x08\x49\x53\x3e\xfb\x8f\xff\x88\x56\x5c\x74\ +\x11\xcd\xef\xd9\x43\xfc\xee\xac\xf7\xce\xde\xe2\xaa\x5c\x60\xb6\ +\xb8\xd9\xa2\x91\x9f\xbd\x8e\x4c\xbb\xad\xa4\xc5\xe9\x76\x44\x96\ +\xb3\x73\x34\xf1\xc8\xc3\x64\xe1\xf1\x13\x8d\x11\x96\x42\x84\x9a\ +\x7e\xa7\x4b\x83\xe7\xbf\x87\xb2\xb7\xf6\xd1\xee\xbb\xee\xc6\xfd\ +\xbc\x65\xc3\xea\x13\x88\x7f\x19\xd5\xfe\x86\x59\x57\x07\xe3\x49\ +\xb8\x18\x04\x98\x6f\xa3\xe3\x22\x8e\x9f\xa5\x39\x00\xdf\x0a\xb9\ +\x1f\xe0\xa5\xc0\x88\xee\x9c\x71\xd7\x6f\xda\xe1\x6d\x3f\x4e\x73\ +\xbb\x76\x91\x94\xdb\xdc\xa9\x20\xd2\x1e\xc9\x54\x48\x53\x15\xd8\ +\x6b\x89\x34\x43\xa4\x97\x75\xe6\x89\x5a\x2d\xe2\x81\x01\x15\x10\ +\x01\x41\x5e\x85\x50\x96\x75\x3a\x52\x37\xc4\x0a\x15\x21\x49\xab\ +\xa2\xfd\xe5\x85\x9b\x90\x99\x1d\x3b\x28\x41\x90\xb5\xe9\xee\xbb\ +\xac\xa8\x00\x5b\x4a\x34\x56\xb6\xf7\xb2\xb1\xe7\x11\xdb\x92\x70\ +\x5b\x5a\xdd\x51\x3d\xd3\x10\xb5\x00\xc2\xe1\x54\x19\x31\xc0\x55\ +\x68\x80\x2d\x21\x26\x56\x12\x53\x20\xb8\xe1\x53\x6e\xfd\x84\x5d\ +\x79\xe9\x7b\x79\x6e\xf7\x1b\x78\x66\x7a\x80\xe7\x7d\x25\x10\x91\ +\x63\x56\xbb\x10\xb1\xdd\x52\xbd\x7a\x55\x5c\x59\xee\xc0\xe7\x4a\ +\x80\x00\xae\x91\x4c\x9a\xd6\x25\xeb\xba\xd8\x61\xf6\xf9\xe7\xc5\ +\x2f\xf0\xfa\x4f\xfe\x0a\x14\xc3\xb2\x68\x01\xb0\xac\x02\xee\xfb\ +\xdb\xaa\xf1\x56\x30\x8f\x04\x5f\x27\x7f\xe7\x0a\x64\x74\xa6\x29\ +\x2d\xcd\x6d\xb2\x8b\xe3\x04\xe0\xb3\x3c\x19\xfb\xc0\xfb\xed\x49\ +\x1f\xf9\x29\x9e\x77\xe0\x79\xc9\xc0\xc9\xa7\x51\x03\x74\x66\x6d\ +\xb4\x79\x97\xb7\x95\x3c\x51\xd7\x69\x4a\xa7\x4a\x72\x56\x15\x52\ +\xa9\xf5\xa9\x24\xa4\x34\xf3\xdc\xb3\x34\x74\xe1\x05\x3c\xfa\xe1\ +\x0f\xd9\xb2\x5b\x26\xd0\x8e\x9c\xad\xbd\xb2\xc3\xfc\x49\x56\xe0\ +\x66\x22\x6c\x5d\x6d\xa9\x25\x90\x12\xf0\x64\x33\x73\xb7\x53\xf1\ +\xac\xe0\xd6\xd8\x28\x9d\x7c\xf3\x4d\xdc\x7d\xfb\x6d\x75\x50\xd6\ +\xc6\x54\x9d\x56\x48\xeb\xf6\xe9\x41\x31\xa4\xcc\x73\x51\xff\x1a\ +\x60\x66\x0e\xf5\x34\x2d\x4b\x47\x12\x43\x4a\x84\xc3\xd0\x40\x29\ +\x84\xd0\x22\xf6\xbf\x90\x7f\xd0\x76\x67\x11\x2c\x8d\x7c\xf4\xa3\ +\x3c\xb7\xf3\x45\xea\xee\xdd\x67\x4c\x93\xd1\x94\xbd\x0b\x2d\xfe\ +\x93\x65\x7e\x87\x7c\xa8\x68\x98\x95\x11\xbf\x52\xde\x8e\x3f\xa7\ +\x32\x73\x6e\x51\xb6\xee\xe3\x3f\x67\xc1\xa8\x46\x75\x02\x32\xda\ +\xa5\xcf\xc7\x94\x16\xb2\xcd\x50\xc7\x6b\x40\x57\x48\x88\x64\x49\ +\x5a\xc9\x97\x10\x99\xfd\x1c\xa2\xea\xae\x6d\x69\x3e\x4a\x54\xfb\ +\x28\xd4\x2b\x62\x66\xb3\x33\x94\x61\xe2\x46\xaf\xbf\xce\xfa\x55\ +\x3d\x07\xc6\x8d\xc4\xfc\x6b\x41\x0b\x0c\x29\x70\x86\xc8\xec\xaf\ +\x85\xdc\xc6\xc6\xc8\xec\x27\xc3\x5b\xce\x11\x8f\xcf\xd9\xc4\x84\ +\xcc\x62\x05\x3c\x79\xe9\xef\xa4\xa2\x09\xe4\x00\x2f\x24\x94\x15\ +\xf0\x75\x12\x40\x80\x93\xf2\x18\x7e\x86\xa2\x2c\xea\x77\x44\x0b\ +\xba\xe3\xe3\xd4\xdc\xb0\x81\x87\x2f\xba\x80\xac\x98\x82\x31\x82\ +\xe5\x56\xc8\x5a\xc5\x4c\x9c\x12\xeb\x31\x16\xe4\x06\xb6\x74\xb2\ +\x3f\xd2\x4a\x46\xaf\xbe\x4a\xf6\xe8\xda\x21\xf3\x62\x01\x49\x9f\ +\xf2\x92\x58\x92\x2c\x73\xa0\x8a\x5e\xbb\xaf\x07\x3d\x6a\x02\x58\ +\xd7\x13\x88\x23\xdc\x97\x31\xd5\x4c\x60\x29\x63\xd1\x7e\xdf\x7a\ +\x8b\x56\x20\x6e\x99\x7d\xf6\x39\x06\xf0\x1c\x58\xd6\xe3\xd9\x2f\ +\x12\xd1\x9f\x42\x4c\x6a\x00\x98\x75\x6f\x7f\x93\x5b\x8b\x61\xfb\ +\xed\x4d\xa7\x52\xfb\xac\xb3\x34\xca\x8b\x9d\x2f\x9d\x04\x0a\x80\ +\x1c\x48\xd5\x00\x80\x02\x95\xd1\x07\x04\xe0\xf1\x0a\x1a\x80\xd9\ +\xea\x88\xdf\x88\xfe\xa5\x7f\xbf\xf5\xbe\x7d\x3e\xdb\xbf\x1f\xf1\ +\xc1\xf9\xd4\xde\xba\x85\xe6\x5f\xfa\x01\x7c\x81\x91\x67\x37\x32\ +\xd9\x7b\x2d\x71\x91\xba\x6a\xcc\x97\x81\x84\x0b\xfd\xb8\x78\xf8\ +\x82\xf3\x03\x83\xb8\xe3\x7a\xa7\xcb\x18\x90\xfb\x97\x67\x62\xd7\ +\x4a\x80\x02\x72\x52\xb9\xb4\xcc\x11\x65\x3b\x5e\x03\xfa\xf4\xb7\ +\xa4\x20\x49\x34\x0f\xe7\x0a\x43\x97\x5c\x22\x04\xe8\x32\x48\x04\ +\x9b\xa0\xcb\x90\xfe\x77\xca\xda\xf9\x4f\xfb\x93\x96\x22\x69\xa6\ +\x69\x1b\x9b\x0c\xdd\xce\x16\xe4\xdd\xf3\x12\x55\x3f\x02\x09\x9f\ +\x61\xa7\x01\xb9\x53\xed\x3c\x9a\x52\x6d\x15\x60\x2d\x43\x3d\x71\ +\x6a\x4a\x40\xec\x9b\x16\xeb\xbf\xbf\x88\x59\xed\xdb\x47\xad\x33\ +\xce\xc0\x19\x45\x9b\x11\x6d\xe6\x6c\x58\x22\x9f\x9f\x21\x21\x60\ +\x15\x3a\x98\x22\xbe\x4a\xa3\xbb\xd2\x34\x37\xac\x73\x87\x19\x16\ +\xf6\xbf\x60\x67\xb4\xe4\x81\xc4\xe5\x2d\x57\x13\xc8\x98\x17\xf2\ +\x01\x95\xb2\x0c\xe0\xa9\xeb\x9d\x1f\xb3\xfa\x80\x1e\x95\xa6\x65\ +\x69\x84\x9a\x50\x71\xe8\x10\x99\xf3\xce\xa3\xe6\x69\xa7\xd3\xfc\ +\xff\xbe\x04\xf8\x6e\x49\xbc\x72\x30\xb3\x94\x4e\x31\x6f\x41\xc5\ +\x1f\x63\x6d\x9e\x5b\x1b\x37\xe2\x2f\xc9\xd1\xd5\xd2\xd5\x9f\xfa\ +\x10\x21\x3e\x40\x84\x8d\x02\x55\xd4\x9a\xc6\x3c\x92\xd2\xd5\x63\ +\x90\x50\x82\x34\xe2\xb8\xd7\x58\xf6\xcc\x53\xd5\x0c\x4a\x68\x34\ +\xb4\x40\x08\x60\xbf\x0b\xdc\x3a\xd7\xe4\x73\xc4\x04\x2e\x92\x63\ +\x3c\xe1\x04\x79\xd3\x18\x1b\x8b\x6b\x3b\x73\x5f\xf5\xaf\x0b\x45\ +\x52\x34\x50\x72\x0e\x2d\xef\x66\xa2\x01\x7d\x56\x01\xab\x04\x74\ +\x33\x8d\xfa\x08\xf5\xa3\x09\x2c\x49\x2c\x55\xef\xdd\xc4\x0a\xa1\ +\x47\x8e\x50\x73\xf3\x26\x0a\xcb\x3e\x8a\x87\xf1\xfc\x62\x51\x86\ +\x8b\xfd\x4c\x5b\xc3\xa4\xea\x0f\x27\x44\x8e\x00\xaa\x01\x5e\xee\ +\x52\xa8\x03\xc8\xa8\x10\x33\x30\xc6\x03\x8a\x5a\xe0\xaf\xe8\x03\ +\x50\xd7\xf8\xf0\xd7\xfb\xa5\x63\xa8\x3e\xc5\xbe\xeb\x75\x62\x3f\ +\x79\x81\x15\x4d\x08\x38\x0d\x33\xec\xcc\xc2\xb2\xaa\xfc\x45\x29\ +\xfe\x6c\x23\x76\x03\x60\x6a\x18\xe2\x66\x43\xd4\xdf\x6d\x4c\x70\ +\xf5\x01\xda\x9f\x14\xf7\x4f\x34\x20\xf3\x04\x94\x76\xc1\x55\x20\ +\x44\x82\x39\xea\xa6\x3e\x08\x22\x13\x7d\x80\x82\x5c\xfe\x38\xdc\ +\x05\x2c\x25\x0e\x67\x13\x1c\xb0\x9a\xc1\x36\xd9\xe9\x39\x22\xdd\ +\xcd\x6f\x4b\x99\x69\x13\xf9\xcb\x24\x89\x6e\x78\x32\x21\xa0\xe8\ +\x63\x5f\xfd\x06\x43\x41\x7d\x1d\x01\x45\x06\x12\xd0\x7e\xb9\xc8\ +\x5e\x40\xcb\x94\x00\x11\x2b\x62\x58\x7d\x00\x2d\x7f\x29\x64\x5b\ +\x46\x02\x84\x4c\x44\xa2\xdc\x6a\xb9\x23\xf7\xc2\xce\xf9\x9e\x69\ +\xb3\x10\xb0\x26\x9c\x49\x70\x92\x04\xa7\xd5\xff\x54\x66\xc9\x41\ +\x51\x30\x81\x1c\x92\xf6\x5d\x05\x0a\x89\xe3\x21\x4e\x03\xf3\x8a\ +\x09\x2c\xb2\x1c\x56\xc7\xc9\xa1\x3c\xdc\x93\xbe\x4d\xb4\x79\xa1\ +\x04\x34\x9a\xc2\x69\x20\xe0\x24\x31\x81\xe1\x78\x1e\xa6\xea\x0a\ +\x22\x42\x0c\xb0\x5c\xc0\x75\x51\x13\x00\xa8\x5c\xc0\x05\xa0\xf5\ +\x55\x40\x45\xc0\xa3\x9e\x8f\xf9\xc3\x32\x78\xcc\x3e\xcb\xd0\x4f\ +\xf8\x5f\x89\x01\x6c\xee\xd4\x1f\x50\x4f\x92\x83\x54\xad\x1f\xaf\ +\x61\x59\x05\x9a\x2e\xcb\x10\x19\xa0\x84\xa2\x69\xe2\x1c\x07\x51\ +\x7f\xc0\xfd\x83\x21\x75\x42\x7a\x10\x52\xf8\xf2\xfa\x2a\xc0\xef\ +\x12\x50\x2a\xf9\x62\x02\x54\x69\xab\x6a\xd7\xd5\xbc\x6a\x4a\xdc\ +\x9d\x4a\x21\xd4\xbd\x85\x4d\xcd\x28\x35\x71\x68\x3a\xb0\xed\x3d\ +\x54\x4e\x4f\xbb\xf8\x86\x0d\x85\x39\x6f\xa5\x3e\x23\x6c\x4b\x03\ +\xb2\x8d\x14\x3b\x51\x27\xa4\xa6\xb1\x4c\x95\xaf\x13\x02\x75\xd6\ +\x25\x51\x24\x9e\x09\x54\x00\x44\xb0\xbe\x5e\x51\x2c\xbc\x0c\xbb\ +\xd3\xa3\x42\x48\xd5\x3c\xc4\xe9\x73\xda\x20\x83\x23\xfa\x74\xc3\ +\x46\x4a\xd7\xae\x15\xe0\x72\xaf\xfe\x07\xfb\x81\x99\xff\xf8\x37\ +\xea\xbe\xf2\x0a\x1c\xe0\x0c\x71\x22\x7d\x69\xf3\x29\xfe\x76\xd0\ +\x70\xdb\x39\x3f\xf1\x7b\x33\xb3\xc4\x63\x27\xb9\xc6\xe3\x1b\x9a\ +\xc2\xa7\x3a\x13\xf5\x35\xbf\x7e\x1f\x80\xb2\xf7\xc2\x46\xf2\x5a\ +\xa5\xee\x04\x7b\xfc\x80\x11\x95\x97\x99\x9c\x43\x28\x6e\x8c\x33\ +\x09\x0a\xed\x18\x26\x16\xa0\x03\x6d\x07\x2e\x59\xb9\x12\x67\x80\ +\x23\x64\xb0\x74\x73\xa3\xe1\xc6\x57\xce\x4c\x53\xbe\x7f\x1f\x75\ +\x5e\x78\x9e\xf2\x7d\x7b\x11\x05\x4e\x39\x5c\x4c\x90\x44\xa4\xf2\ +\x42\xa0\x9b\x22\x9d\x46\xa6\x0d\x71\xaa\x31\xb7\x73\x27\x65\x68\ +\xc0\xe0\xed\x6d\x32\x38\x24\x27\xb8\xce\x79\x70\x9a\xea\x11\x02\ +\x27\x51\xe5\x74\xb6\x90\x44\x9b\xeb\x99\xe9\xb8\x93\xeb\x76\x1d\ +\x28\xa3\xe5\x8b\x3a\x41\xb9\x12\x00\x49\xd0\x77\xba\x66\x2d\x35\ +\x01\x90\x06\xe0\xb8\x5a\x03\xc4\xcd\xa6\x80\x54\xff\xe4\x34\x75\ +\x96\x4a\xec\x56\xb3\xd7\x77\x51\x7e\xe0\x6d\x2a\x0e\x1e\x44\xb0\ +\x73\x94\xca\xcc\x2a\x3e\x8f\xc7\xa4\xc8\x34\x4c\x65\x92\x98\x29\ +\x5c\xd3\xa9\xff\x5a\xca\x1a\xa5\x9f\xb9\x9c\x3c\x42\x9d\x43\x47\ +\x28\xc4\x8b\x9c\xb2\x7f\x63\xdb\x02\x11\x4d\x1d\xcc\xc0\x00\x88\ +\x91\x54\x88\x69\xe0\x79\x8a\x81\x41\x40\x92\xf1\x44\x85\xd9\x65\ +\xe4\x53\x44\x76\x8d\xb9\x0e\xe5\xf8\x1c\xfa\x5f\xdc\x09\xca\x58\ +\x31\xb3\x0d\x66\x69\xc7\x69\x41\x31\x71\x10\x6a\x0b\x60\x47\xa7\ +\x31\xbb\x33\x00\x0e\x3b\x9e\x95\x65\x9a\xfc\x15\xc1\x52\x0a\x02\ +\x5b\x1c\x43\x78\x8a\xfb\x01\x8f\x27\xbe\xa8\xd4\x5a\xef\x08\x3f\ +\x7b\x20\x5b\x99\x59\x4f\x25\x13\x16\xd0\xca\x94\xb2\xe6\x22\xc3\ +\x02\x42\x53\xa4\xe5\x36\xf4\xac\xc2\x21\x4d\x84\xf2\x84\xd8\x70\ +\x20\xc1\xe5\xe7\xf0\xb0\x00\x01\x76\x64\x54\x6c\xb6\xa6\x01\xbd\ +\xbe\xa2\xd8\xf5\x3a\x65\x87\x27\x69\xe6\xa5\xef\x13\x53\x15\x24\ +\x19\xa4\x5e\x09\x4d\xda\x0b\x94\x6a\xce\xb1\x0a\x38\x44\x9b\xb1\ +\xcc\x5f\xe3\xd2\xcc\x4e\x54\xf8\x70\xe8\x86\x03\x73\xd1\x39\x46\ +\xaf\x19\xcb\xe2\x7d\x2f\x10\x55\xff\x38\x16\x88\xb1\xba\x01\xe7\ +\x9c\xf4\xa4\x47\xcd\x42\x52\xd7\x4e\x1c\xb4\xfa\x98\xd4\xe8\xeb\ +\xb9\x64\xc0\x50\x22\xf5\x7a\xbb\xad\x91\x06\x89\x43\x8a\x97\x8d\ +\xa9\x27\xa2\x72\x71\xac\xb1\x53\x08\x78\xa6\xfa\xee\x90\x63\x83\ +\xaa\xb0\x55\x3e\xaa\xa0\x63\x79\x64\x36\xa6\xf1\xec\x1d\xa0\xac\ +\x12\x91\x24\x22\x42\x42\x85\x00\x29\x23\x88\x03\x0f\xe1\xb2\xf4\ +\xfd\x2e\x02\xa2\x7a\x7f\xcc\xba\xb5\xa2\x58\xed\x7b\x29\xe1\x0f\ +\x64\x9a\x99\x86\x3d\x32\x8e\x0d\xf2\x8f\x34\x68\x17\x69\xb0\xc2\ +\x78\xad\x2b\x26\x2b\xc0\x5c\x18\xdc\x9d\x98\x40\x4e\x8f\xca\xf9\ +\xdd\xae\xac\xd8\x3c\x9e\x1d\xa2\xd4\x6a\x5d\x16\xe1\x65\x00\xe6\ +\x63\x00\xae\xcf\xbe\x81\xcc\x40\x9e\xe1\xc7\xda\x4c\x67\x16\xf6\ +\x69\x14\x6f\x17\xde\x59\x1f\x22\xdb\x17\x70\xff\x72\x3f\xc9\x1d\ +\xa4\xe3\x90\x29\x66\xec\x36\x57\x6a\x8c\x6f\x17\x98\x51\xd9\x0e\ +\x1f\x9d\xa2\x55\x20\x61\xb3\x21\x6a\xf1\x22\x80\x63\xe6\x78\xc6\ +\x17\x30\xee\x68\x10\x5d\x9a\x9e\xe5\x02\x3e\x7e\x9c\x18\x04\x68\ +\x9c\x68\xaa\x1f\x3e\xde\x8e\x62\x61\xd3\x7f\x33\xb2\x00\xc0\xf9\ +\xc3\x47\xaa\x76\x1d\xf0\xf9\xfc\x70\x42\xb4\xc6\xe8\x67\x22\xe8\ +\x13\x00\x5c\x2f\x0f\x18\xbf\x91\x49\xc6\xbb\xf5\x7f\xf6\x6f\x46\ +\x13\x88\xad\x9a\x73\x55\x68\xa9\xe5\x56\x45\x9b\x57\xbb\x6e\xb0\ +\x4a\xb3\x9a\x56\x25\xf8\x80\x20\x21\xd3\xa7\xbf\x25\x96\x5b\xc1\ +\xe8\xc7\xf7\x2f\x10\x4a\x3d\xc9\x4f\x81\x89\xe7\x90\x5e\xe0\x55\ +\x84\x8f\x6b\xe6\xed\xc2\x36\x9b\x43\xa6\xad\xbe\x97\x1e\x58\xb5\ +\x42\x03\x2a\xbb\x90\xc9\x94\x6e\xe3\x72\xd4\x5a\x1a\xf2\x84\x91\ +\x8d\x9d\x9c\x90\x66\xda\xb8\x30\xa1\xec\x59\x66\x7a\xca\x45\xd0\ +\x89\x12\x5e\x40\x1e\x0e\x04\x04\x33\xe0\xe5\x00\xae\x3d\xd4\x7b\ +\xc5\xa0\x2c\xb4\x46\x56\xd0\x19\x8f\xfd\xab\x8b\xd3\x6d\x5e\x54\ +\xf4\x9f\xd3\xc4\x1d\x5e\xbe\xf1\xb1\x8f\x10\x1d\x46\xf8\xda\x50\ +\xcd\xb1\x7d\xc0\x2d\x6b\x42\x62\xc9\x43\x56\x03\xfb\x24\x65\x64\ +\xfc\x93\xbf\x43\xfe\x73\xc8\xae\xff\x51\xde\x79\x89\x80\xeb\xeb\ +\x71\x54\xe3\xd4\x47\x85\xc9\xc8\x28\x08\x18\x93\x70\xb6\xba\x0c\ +\xa6\xa9\xab\xdf\x90\x3a\x0b\xad\xa8\x27\x3e\x21\x96\xd9\x35\xbd\ +\x1f\xf2\xf7\xc1\x1f\x18\x67\xf3\xaa\x94\x07\x50\xf0\xa0\xff\x5c\ +\xe1\xed\xc4\x42\x88\xbc\x30\x47\x21\x0e\x80\x2b\x12\xeb\xda\xd8\ +\xbf\x46\xa9\x22\x7a\xd8\x52\x42\x6c\x94\x4a\x59\xea\x97\x4c\x53\ +\xf3\x27\x75\xfb\xae\x8c\x6d\xf1\xf1\x59\x5f\x56\xf8\xc0\xf6\x01\ +\x52\xac\x06\x62\x4d\x60\xc2\xa7\x7f\x8e\x86\xde\x92\x31\x40\x4a\ +\x66\xe2\x4a\xa3\x72\xf5\x01\x5c\x19\x40\xa8\xe7\x09\x68\x40\x6c\ +\x1f\x69\xa8\x54\x1c\x20\xf7\xb4\xb3\xdc\x09\x09\x6f\xe8\x21\x29\ +\xea\xbc\x89\xb2\x2f\x21\x4f\xbe\x8c\x4c\x40\xee\xb5\xe0\x1d\x54\ +\xf8\x43\xff\x61\x7d\x14\x19\x54\x39\x16\x60\x3f\xc0\x28\xd1\x0c\ +\x52\x15\xbd\xea\xc0\xf5\xf2\xe0\x83\x06\x90\xed\x33\xcb\x0b\x02\ +\x8e\xa2\x6a\x1f\xb5\x00\xd7\x1f\x40\x0e\x22\x6f\x42\x7d\x03\xa1\ +\xd7\xba\x2e\x53\x96\x1a\xb7\xff\x25\x1e\x3c\x0e\x49\x21\x85\x0f\ +\xe4\xac\x0e\xa0\x0e\x98\x22\xd8\x68\x77\x86\x9d\xbd\x73\x92\xb8\ +\x08\x2f\x69\x34\xa9\xd1\x32\xd4\x94\x1d\x65\xef\x86\x45\xa5\xb2\ +\x81\x69\xb6\x5a\xa8\x9b\xe8\xee\xb3\xe1\x77\x9a\xa9\xb4\xe5\x46\ +\x1b\xc1\x56\xf7\x51\xb8\x6a\x84\x04\x3f\x56\xf8\x95\xf5\xeb\x90\ +\x07\xaa\x1a\x0f\xb2\x85\xe9\x73\x9a\x14\x36\x82\x61\xb3\x78\x07\ +\xd2\xef\xe0\x66\x95\x83\xaf\xe5\xa1\xc1\xfa\x6e\x50\x74\x07\xe2\ +\xd2\x24\x41\x9a\x20\x35\x9a\x7a\x22\x5a\xb2\x0b\xc4\x17\x98\x48\ +\x9c\x5d\x38\x7c\x8d\x4e\x50\xcb\xf0\xac\xb9\x7a\xb5\x3b\x37\x48\ +\xd2\xc4\xa5\xa4\xa2\xa7\x40\x85\x88\xe4\x35\x65\xeb\x9f\xc5\xed\ +\x49\x30\xcb\x38\x66\x05\x3f\x09\xb9\x23\x8e\x3a\x72\x96\x9e\x83\ +\xd9\x7f\xa5\x19\xe3\x64\xb6\x4e\xfb\x5e\xc4\xcd\x67\x90\xfe\x35\ +\xa4\xe0\x18\x9b\x04\x1a\x1c\x38\xf6\x83\x66\x15\xe4\x13\x4d\x13\ +\x79\x96\x86\xed\x31\xee\x15\x8c\x5d\xb5\x5a\xf6\xf6\x3a\x93\x45\ +\x51\x55\x23\xa9\x8f\x67\xad\x91\x11\x5d\x2d\x20\x04\xa0\xe1\x78\ +\xcc\x42\x42\xca\x79\xee\x4f\x8d\xa3\xc8\xb3\xb0\x13\xe5\x08\xbe\ +\x84\x24\x1e\xfc\xcb\x10\xd3\x3b\xfb\x9b\xe6\xfd\x08\x5e\x6d\x51\ +\xc4\xa6\x62\x58\x2b\x7e\x11\xf2\x59\x48\x86\x87\x0d\x66\xcf\x2d\ +\x80\x99\xf6\xa0\x9c\x14\x39\x02\xa2\xaa\x36\x02\x21\x4a\x4e\x20\ +\x41\xf2\xc6\x93\x31\x3c\xec\xf2\x71\xba\x82\x8d\xe9\x5e\x80\x67\ +\x67\x02\x18\x2f\x1e\x78\x2e\x69\xf5\x9b\x28\x94\x65\x31\xed\xcc\ +\xbb\xef\x17\x5a\xb8\x36\x66\xd7\x64\x46\xec\x5c\xca\x17\x20\x77\ +\x56\xc0\x57\x09\xd0\xeb\x35\x60\xe1\xb0\x36\xa8\xe1\xf0\x0a\x64\ +\x67\x75\xcd\xfc\xf9\xd0\x20\x52\x75\x2a\xed\x36\x1b\x39\x8f\x1b\ +\x1c\x74\x04\x10\x04\x69\x95\x04\xd5\x06\x4f\x86\x37\x8b\xaa\xa1\ +\xd6\xf7\xf7\xcc\x3a\x93\x45\x2f\xf8\xdc\xa7\x19\xc0\xe6\x3e\xd5\ +\xf7\x87\x24\xef\xfd\xe4\xc4\x68\x72\xd2\xe2\xe0\x86\x7d\x93\x19\ +\xa4\xe1\xd7\xfb\x5f\x88\x6a\x5f\x05\x4f\xbd\x8e\xf9\xac\x0e\xd1\ +\xae\x56\xa4\x48\xac\x74\x4a\x2b\xdc\xcc\x72\x66\xc8\x74\xad\x27\ +\x21\x45\xca\x60\xdb\x5a\x63\x98\xe4\x68\x6c\x50\xb5\x01\xe0\xdd\ +\xd9\x1d\x55\x35\xa2\x4e\x84\x31\x8b\x11\x10\x55\xb9\x88\xe0\x39\ +\xcf\x34\xf5\xb1\x42\x48\x69\x7e\x4e\x0e\x41\xe5\xc5\xa7\x82\x57\ +\x90\x60\x08\xe0\x99\x1e\x45\xfe\x97\x20\x54\x07\x7f\x8c\xe0\xea\ +\xf5\x56\xfd\x0b\xe3\x3e\x2c\xff\x5b\x56\x4d\xc8\xc5\x08\xc8\xea\ +\x33\x6e\x0f\x70\x7a\xf2\x06\x4a\x36\x6c\x20\x83\xad\x2e\x81\x00\ +\x6e\x0a\x01\x9a\x12\x52\x10\x50\x21\x82\x8c\x88\x06\x19\x11\xbf\ +\xf5\xf6\x1e\xc0\xab\xaa\xc7\x6f\x9e\x76\xe5\x9d\xa5\x57\xf7\x0e\ +\x66\xfc\x30\x15\x7b\x71\xea\x7b\xe0\x80\x45\x1d\x66\xf6\x8a\xab\ +\xeb\xfd\x3f\x20\x7f\x13\x24\x0b\x18\x6a\xe0\xeb\x04\xd4\x49\xe0\ +\x1e\x4b\x1d\x47\x23\x9b\xe4\xcb\xd3\x08\x97\x39\xfe\x6e\x4f\x88\ +\xb0\xdc\x48\xc8\x8c\x8d\x71\xba\x69\x33\x88\xd8\x48\x0c\x22\xb8\ +\xa5\xcb\x98\x12\x02\x69\xa8\x66\x78\x32\xc2\xd9\x61\x24\x40\xc1\ +\x43\x7a\x54\xbc\x9b\x29\x68\x05\xef\xec\xbc\x3c\x2c\xc0\xdf\xa4\ +\x7c\x7c\xdc\xda\xa9\x23\x62\xf3\x02\xbe\xf0\xf3\x8c\x46\x29\x7c\ +\x39\x5a\x1b\xaf\x81\xef\x4b\x80\x5e\x6f\xb4\xaa\x51\x4b\xf8\xb6\ +\xb5\xb7\xa9\x2f\x43\x56\xa2\x2c\x47\x6a\xac\x55\xd7\x81\x53\x62\ +\x4e\xe4\x47\x51\x78\x0d\x9d\xe0\x8b\x16\x66\x64\x34\x9a\x47\xb3\ +\x15\xc9\x80\x50\x2a\x64\x24\xde\xe6\xad\x7a\xf5\x2c\x17\xa0\x10\ +\xd8\x63\xb7\x07\xf4\x34\xd4\x1c\xc7\xde\xc5\x9b\xe3\x94\xef\xd9\ +\x4d\xe5\xc4\x41\x0b\xfb\x67\xd2\x6f\x7f\x97\x3e\x7a\x3e\x0a\x34\ +\xb7\xcb\x46\x67\x11\x87\xb7\xfc\x1f\x4d\xed\x8e\x24\x04\xff\xe4\ +\x7e\x90\x84\xf4\x6c\x09\x2a\x50\xf6\x93\xd2\x51\x08\x3a\x02\x11\ +\x00\xcc\x09\xde\xc5\x25\xa7\x9c\x02\x22\x4e\xa5\x64\xed\x3a\x32\ +\xb2\xbc\x61\x05\xe0\xf6\xa0\x7e\x51\xba\xe5\x09\x31\x46\x54\x5e\ +\x67\x79\xbe\x03\x99\x87\xe7\x9d\x71\xdb\xe2\xf2\xd0\x04\x15\x3f\ +\xdc\x0f\xe0\x6f\x52\xb1\x6f\xaf\xcc\x3e\x80\x17\x4c\x5c\xed\x13\ +\xf9\x27\x91\xbf\x0d\xf2\x03\xf2\xbb\xdb\x2a\xf8\x13\xf8\xd9\xdc\ +\x9e\x8a\x26\x40\xd8\xcd\x78\x69\x8c\x03\x7b\x0b\xe4\xf7\x51\xbe\ +\x9e\x74\x40\xa5\x27\xcb\xe8\xdb\x66\x8e\xab\x05\xde\x36\x19\x90\ +\xe2\xf2\x2b\x57\x8a\x66\xa8\x56\x18\xa3\x6a\xdf\xe9\xb8\x73\x7f\ +\xa8\x35\x80\x1f\xd2\x17\x1d\x13\x90\xa9\x23\x16\xc4\xe8\x4a\xa9\ +\xc0\xc9\x6b\x9d\x64\xdf\x46\xd9\xef\xe0\xc9\x83\xae\x6f\xee\x33\ +\xf3\xc7\xfb\xc3\xc9\xf1\x01\x01\x55\x3b\x15\x67\xdf\xd9\xa8\x0b\ +\x34\x2c\x7d\x0a\xe9\x1a\x4f\x44\x20\x83\x6d\xa9\x64\x48\x39\x08\ +\x61\xd8\x7f\x5c\x36\x4d\x12\xde\x00\xc7\x65\x4e\xd7\x76\x50\xec\ +\x9d\x57\x9c\x6d\xe3\x83\x50\xb9\x3b\x88\x87\x7f\x81\xdc\x7d\x28\ +\x9b\x08\xab\xf7\xc2\xde\xfe\x44\x08\xa8\x13\x51\xbd\xaa\x1d\x8f\ +\x41\x6e\x44\xee\x16\xdc\x6c\xab\xc4\x39\xd1\x69\x6a\xc8\x2f\xb2\ +\xc0\x15\xc8\xeb\xf9\x9c\xa9\x7c\x8e\xc8\xfd\x74\x96\xd8\x1d\xde\ +\x1c\xf4\x75\xb8\xcf\xac\xf7\x27\xe0\x84\x48\xa8\x0f\x22\x81\x6c\ +\x27\x4b\xd7\x22\xbd\xda\x86\x1f\x4f\x03\xdc\xd2\xfb\x0b\xf6\xad\ +\x3f\x9e\x66\xdd\xc8\x3c\x06\xd9\x41\xea\x78\xa9\xcf\xac\x1f\x27\ +\x01\x27\x4e\x84\x81\x14\x01\xaa\xbf\x3f\x13\xf7\x97\x20\xbd\xd8\ +\x6b\xc6\x66\x8a\x3f\x9f\x6f\x92\x5e\x1d\xc8\xb4\x9f\xd5\x3d\x90\ +\x17\xe5\xa5\x85\x00\x86\xbc\x2e\x66\xe0\x9a\x8c\x04\x97\x27\x06\ +\x3c\x5e\xff\x07\xfa\x11\xf1\x94\xb7\x77\xfd\x50\x00\x00\x00\x22\ +\x7a\x54\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x00\x78\xda\ +\x2b\x2f\x2f\xd7\xcb\xcc\xcb\x2e\x4e\x4e\x2c\x48\xd5\xcb\x2f\x4a\ +\x07\x00\x36\xd8\x06\x58\x10\x53\xca\x5c\x00\x00\x00\x00\x49\x45\ +\x4e\x44\xae\x42\x60\x82\ \x00\x00\x1a\xb6\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -8682,6 +9017,11 @@ \x00\x6f\ \x00\x70\x00\x65\x00\x6e\x00\x73\x00\x65\x00\x63\x00\x75\x00\x72\x00\x69\x00\x74\x00\x79\x00\x5f\x00\x6c\x00\x61\x00\x75\x00\x6e\ \x00\x63\x00\x68\x00\x5f\x00\x36\x00\x34\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x14\ +\x02\x93\x52\xe7\ +\x00\x65\ +\x00\x6d\x00\x62\x00\x6c\x00\x65\x00\x6d\x00\x2d\x00\x69\x00\x6d\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x61\x00\x6e\x00\x74\x00\x2e\ +\x00\x70\x00\x6e\x00\x67\ \x00\x15\ \x0d\x88\xf5\x07\ \x00\x6e\ @@ -8711,9 +9051,10 @@ qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ -\x00\x00\x00\x1e\x00\x02\x00\x00\x00\x16\x00\x00\x00\x03\ +\x00\x00\x00\x1e\x00\x02\x00\x00\x00\x17\x00\x00\x00\x03\ \x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x9f\x7e\ -\x00\x00\x02\xfe\x00\x00\x00\x00\x00\x01\x00\x01\xb7\x09\ +\x00\x00\x03\x2c\x00\x00\x00\x00\x00\x01\x00\x01\xcb\xd4\ +\x00\x00\x02\xce\x00\x00\x00\x00\x00\x01\x00\x01\x9c\x4f\ \x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x01\x51\xa7\ \x00\x00\x02\x94\x00\x00\x00\x00\x00\x01\x00\x01\x83\x53\ \x00\x00\x02\x36\x00\x00\x00\x00\x00\x01\x00\x01\x66\x1d\ @@ -8724,14 +9065,14 @@ \x00\x00\x02\x56\x00\x00\x00\x00\x00\x01\x00\x01\x6a\xcc\ \x00\x00\x02\x76\x00\x00\x00\x00\x00\x01\x00\x01\x7a\x70\ \x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\xd8\xea\ -\x00\x00\x03\x52\x00\x00\x00\x00\x00\x01\x00\x01\xe8\xb8\ -\x00\x00\x03\x88\x00\x00\x00\x00\x00\x01\x00\x01\xfc\x9b\ +\x00\x00\x03\x80\x00\x00\x00\x00\x00\x01\x00\x01\xfd\x83\ +\x00\x00\x03\xb6\x00\x00\x00\x00\x00\x01\x00\x02\x11\x66\ \x00\x00\x01\xc2\x00\x00\x00\x00\x00\x01\x00\x01\x07\xb0\ \x00\x00\x01\x5c\x00\x00\x00\x00\x00\x01\x00\x00\xe3\xfa\ \x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\xb7\xea\ \x00\x00\x01\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xfe\xef\ -\x00\x00\x03\x30\x00\x00\x00\x00\x00\x01\x00\x01\xcf\xa5\ -\x00\x00\x02\xce\x00\x00\x00\x00\x00\x01\x00\x01\x9c\x4f\ +\x00\x00\x03\x5e\x00\x00\x00\x00\x00\x01\x00\x01\xe4\x70\ +\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x01\xb1\x1a\ \x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\xcb\xf1\ \x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " diff -r 009ae01fd575 -r b16c57614eee OpenSecurity/bin/ui/ui_FormatDriveDialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OpenSecurity/bin/ui/ui_FormatDriveDialog.py Wed Jun 25 21:49:09 2014 +0200 @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'FormatDriveDialog.ui' +# +# Created: Wed Jun 25 21:47:35 2014 +# by: PyQt4 UI code generator 4.10.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_FormatDriveDialog(object): + def setupUi(self, FormatDriveDialog): + FormatDriveDialog.setObjectName(_fromUtf8("FormatDriveDialog")) + FormatDriveDialog.resize(420, 120) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(FormatDriveDialog.sizePolicy().hasHeightForWidth()) + FormatDriveDialog.setSizePolicy(sizePolicy) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/opensecurity/gfx/opensecurity_icon_64.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + FormatDriveDialog.setWindowIcon(icon) + self.lyMain = QtGui.QVBoxLayout(FormatDriveDialog) + self.lyMain.setObjectName(_fromUtf8("lyMain")) + self.lyContent = QtGui.QHBoxLayout() + self.lyContent.setSpacing(16) + self.lyContent.setObjectName(_fromUtf8("lyContent")) + self.lblIcon = QtGui.QLabel(FormatDriveDialog) + self.lblIcon.setText(_fromUtf8("")) + self.lblIcon.setPixmap(QtGui.QPixmap(_fromUtf8(":/opensecurity/gfx/emblem-important.png"))) + self.lblIcon.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.lblIcon.setObjectName(_fromUtf8("lblIcon")) + self.lyContent.addWidget(self.lblIcon) + self.lyCredentials = QtGui.QGridLayout() + self.lyCredentials.setSpacing(4) + self.lyCredentials.setObjectName(_fromUtf8("lyCredentials")) + self.lblText = QtGui.QLabel(FormatDriveDialog) + self.lblText.setTextFormat(QtCore.Qt.RichText) + self.lblText.setObjectName(_fromUtf8("lblText")) + self.lyCredentials.addWidget(self.lblText, 0, 0, 1, 2) + self.wdCredentialsSpacer = QtGui.QWidget(FormatDriveDialog) + self.wdCredentialsSpacer.setObjectName(_fromUtf8("wdCredentialsSpacer")) + self.lyCredentials.addWidget(self.wdCredentialsSpacer, 3, 0, 1, 2) + self.lblPassword = QtGui.QLabel(FormatDriveDialog) + self.lblPassword.setObjectName(_fromUtf8("lblPassword")) + self.lyCredentials.addWidget(self.lblPassword, 1, 0, 1, 1) + self.lblKeyfile = QtGui.QLabel(FormatDriveDialog) + self.lblKeyfile.setObjectName(_fromUtf8("lblKeyfile")) + self.lyCredentials.addWidget(self.lblKeyfile, 2, 0, 1, 1) + self.edtKeyfile = QtGui.QLineEdit(FormatDriveDialog) + self.edtKeyfile.setObjectName(_fromUtf8("edtKeyfile")) + self.lyCredentials.addWidget(self.edtKeyfile, 2, 1, 1, 1) + self.btnBrowse = QtGui.QToolButton(FormatDriveDialog) + self.btnBrowse.setObjectName(_fromUtf8("btnBrowse")) + self.lyCredentials.addWidget(self.btnBrowse, 2, 2, 1, 1) + self.edtPassword = QtGui.QLineEdit(FormatDriveDialog) + self.edtPassword.setEchoMode(QtGui.QLineEdit.Password) + self.edtPassword.setObjectName(_fromUtf8("edtPassword")) + self.lyCredentials.addWidget(self.edtPassword, 1, 1, 1, 2) + self.lyContent.addLayout(self.lyCredentials) + self.lyMain.addLayout(self.lyContent) + self.lyButtons = QtGui.QHBoxLayout() + self.lyButtons.setObjectName(_fromUtf8("lyButtons")) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.lyButtons.addItem(spacerItem) + self.btnAbout = QtGui.QPushButton(FormatDriveDialog) + self.btnAbout.setMinimumSize(QtCore.QSize(100, 0)) + self.btnAbout.setObjectName(_fromUtf8("btnAbout")) + self.lyButtons.addWidget(self.btnAbout) + self.btnCancel = QtGui.QPushButton(FormatDriveDialog) + self.btnCancel.setMinimumSize(QtCore.QSize(100, 0)) + self.btnCancel.setObjectName(_fromUtf8("btnCancel")) + self.lyButtons.addWidget(self.btnCancel) + self.btnOk = QtGui.QPushButton(FormatDriveDialog) + self.btnOk.setMinimumSize(QtCore.QSize(100, 0)) + self.btnOk.setDefault(True) + self.btnOk.setObjectName(_fromUtf8("btnOk")) + self.lyButtons.addWidget(self.btnOk) + self.lyMain.addLayout(self.lyButtons) + self.lblPassword.setBuddy(self.edtPassword) + self.lblKeyfile.setBuddy(self.edtKeyfile) + + self.retranslateUi(FormatDriveDialog) + QtCore.QMetaObject.connectSlotsByName(FormatDriveDialog) + FormatDriveDialog.setTabOrder(self.edtPassword, self.edtKeyfile) + FormatDriveDialog.setTabOrder(self.edtKeyfile, self.btnBrowse) + FormatDriveDialog.setTabOrder(self.btnBrowse, self.btnAbout) + FormatDriveDialog.setTabOrder(self.btnAbout, self.btnCancel) + FormatDriveDialog.setTabOrder(self.btnCancel, self.btnOk) + + def retranslateUi(self, FormatDriveDialog): + FormatDriveDialog.setWindowTitle(_translate("FormatDriveDialog", "OpenSecuirty Format Drive", None)) + self.lblText.setText(_translate("FormatDriveDialog", "Attention!TextLabel", None)) + self.lblPassword.setText(_translate("FormatDriveDialog", "&Password:", None)) + self.lblKeyfile.setText(_translate("FormatDriveDialog", "&Keyfile:", None)) + self.btnBrowse.setText(_translate("FormatDriveDialog", "...", None)) + self.btnAbout.setText(_translate("FormatDriveDialog", "&About", None)) + self.btnCancel.setText(_translate("FormatDriveDialog", "&Cancel", None)) + self.btnOk.setText(_translate("FormatDriveDialog", "&Ok", None)) + +import opensecurity_rc