feat: add version container

This commit is contained in:
semenov
2024-12-27 10:43:26 +03:00
parent 8d748507b5
commit fc7f311d1e
85 changed files with 1875 additions and 632 deletions

View File

@@ -9,8 +9,9 @@ UpdateController::UpdateController(DataParser *parser,SendSystem *sendSystem, QO
applicationFolderPath = QDir::currentPath() + applicationFolderName;
}
void UpdateController::initialize(MainWindow *mainWindow)
void UpdateController::initialize(MainWindow *mainWindow,VersionContainer *versionContainer)
{
this->versionContainer = versionContainer;
connect(this,&UpdateController::sigUpdateComplete,mainWindow,&MainWindow::showCompleteDialogBox);
}
@@ -32,11 +33,6 @@ void UpdateController::calculateStreamingHash()
dataParser->createFileDataList(streamingDataList,streamingHashFilename);
}
void UpdateController::setServerVersion(StreamingVersionData *version)
{
serverVersion = version;
}
QList<FileData> UpdateController::calculateHash(QString path,QString ignoreName)
{
qDebug() << "Try calculate";
@@ -136,11 +132,6 @@ void UpdateController::updateFilesOnServer(QList<FileData> *fileSendList){
}
StreamingVersionData *UpdateController::getServerVersion() const
{
return serverVersion;
}
UpdateController::~UpdateController()
{

View File

@@ -21,6 +21,7 @@
class SendSystem;
class MainWindow;
class DataParser;
class VersionContainer;
class UpdateController : public QObject
{
@@ -28,26 +29,26 @@ class UpdateController : public QObject
Q_OBJECT
public:
explicit UpdateController(DataParser *parser,SendSystem *sendSystem,QObject *parent = 0);
void initialize(MainWindow *mainWindow);
explicit UpdateController(DataParser *parser,
SendSystem *sendSystem,
QObject *parent = 0);
void initialize(MainWindow *mainWindow,VersionContainer *versionContainer);
void calculateCommonHash();
void calculateStreamingHash();
void setServerVersion(StreamingVersionData *version);
~UpdateController();
void updateFilesOnServer(QList<FileData> *fileSendList);
StreamingVersionData *getServerVersion() const;
signals:
void sigUpdateComplete(bool flag);
private:
DataParser *dataParser;
SendSystem *sendSystem;
QString applicationFolderPath;
VersionContainer *versionContainer;
QList<FileData> appDataList;
QList<FileData> streamingDataList;
StreamingVersionData *serverVersion;
QList<FileData> calculateHash(QString path,QString ignoreName);
};

View File

@@ -88,9 +88,19 @@ void DataParser::createServerSettings(ServerSettings* serverSettings)
xmlWriter.writeAttribute("AutoStart",QString::number(false));
xmlWriter.writeEndElement();
xmlWriter.writeStartElement("VersionData");
xmlWriter.writeAttribute("Version","NONE");
xmlWriter.writeEndElement();
if(serverSettings->LocalVersionName == "")
{
xmlWriter.writeStartElement("VersionData");
xmlWriter.writeAttribute("Version","NONE");
xmlWriter.writeEndElement();
}
else
{
xmlWriter.writeStartElement("VersionData");
xmlWriter.writeAttribute("Version",serverSettings->LocalVersionName);
xmlWriter.writeEndElement();
}
xmlWriter.writeEndElement();
@@ -197,11 +207,13 @@ ServerSettings *DataParser::getServerSettings()
file.open(QIODevice::ReadOnly);
QXmlStreamReader xmlReader(&file);
while (!xmlReader.atEnd()){
while (!xmlReader.atEnd())
{
if(xmlReader.isStartElement()){
if(xmlReader.name() == "ServerSettings"){
if(xmlReader.name() == "ServerSettings")
{
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()){
QString name = attr.name().toString();
@@ -222,6 +234,20 @@ ServerSettings *DataParser::getServerSettings()
if(name == "AutoStart"){
settings->isAutoStart = value.toInt();
}
}
}
if (xmlReader.name() == "VersionData")
{
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes())
{
QString name = attr.name().toString();
QString value = attr.value().toString();
if (name == "Version")
{
settings->LocalVersionName = value;
}
}
}

View File

@@ -9,10 +9,11 @@ HashComparer::HashComparer(DataParser *dataParser,QObject *)
this->dataParser = dataParser;
}
void HashComparer::initialize(MainWindow* mainWindow)
void HashComparer::initialize(MainWindow* mainWindow,VersionContainer *versionContainer)
{
connect(this,&HashComparer::sigCallCheck,mainWindow,&MainWindow::checkUpdate);
connect(this,&HashComparer::sigHaveDelta,mainWindow,&MainWindow::showUpdateInfo);
this->versionContainer = versionContainer;
}
void HashComparer::CompareDeltas()
@@ -68,8 +69,26 @@ void HashComparer::setWidget(UpdateNotifyWidget* updateWidget)
this->updateWidget = updateWidget;
}
quint16 HashComparer::getFileUpdateCount() const
{
return filesForUpdate->count();
}
QList<FileData> *HashComparer::getFilesForUpdate() const
{
QList<FileData> *completeList = filesForUpdate;
for (int i = 0; i < completeList->count();i++)
{
FileData data = completeList->at(i);
QString streamingAssetsName = "StreamingAssets";
quint16 baseIndex = data.path.indexOf("StreamingAssets");
data.path = data.path.remove(0,baseIndex + streamingAssetsName.length());
data.path.prepend("/SharedData/" + versionContainer->getLocalVersion());
completeList->replace(i,data);
}
return filesForUpdate;
}

View File

@@ -10,19 +10,20 @@
#include <updatenotifywidget.h>
class UpdateNotifyWidget;
class VersionContainer;
class HashComparer :public QObject
{
Q_OBJECT
public:
explicit HashComparer(DataParser *dataParser,QObject *parent = nullptr);
void initialize(MainWindow* mainWindow);
void initialize(MainWindow* mainWindow,VersionContainer *versionContainer);
void CompareDeltas();
~HashComparer();
void showDeltas();
void setWidget(UpdateNotifyWidget *updateWidget);
quint16 getFileUpdateCount() const;
QList<FileData> *getFilesForUpdate() const;
signals:
void sigCallCheck();
void sigHaveDelta();
@@ -30,6 +31,7 @@ private:
UpdateNotifyWidget* updateWidget;
QList<FileData> *filesForUpdate;
DataParser *dataParser;
VersionContainer *versionContainer;
};
#endif // HASHCOMPARER_H

View File

@@ -26,11 +26,13 @@ void RecognizeSystem::initialize(UpdateController *updateController,
DataParser *dataParser,
MainWindow *mainWindow,
HashComparer *hashComparer,
TCPClient *client)
TCPClient *client,
VersionContainer* versionContainer)
{
this->updateController = updateController;
this->dataParser = dataParser;
this->mainWindow = mainWindow;
this->versionContainer = versionContainer;
connect(this,&RecognizeSystem::sigSaveLoginData,dataParser,&DataParser::createAuthData);
connect(this,&RecognizeSystem::sigStartCompare,hashComparer,&HashComparer::CompareDeltas);
@@ -83,7 +85,7 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
continue;
}
filePath = Tools::createReceiveFullPath(filePath,updateController->getServerVersion());
filePath = Tools::createReceiveFullPath(filePath,versionContainer->getServerVersionData());
QDir dir(filePath);
if(!dir.exists()){
@@ -118,7 +120,7 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
}
filePath = Tools::createReceiveFullPath(filePath,updateController->getServerVersion());
filePath = Tools::createReceiveFullPath(filePath,versionContainer->getServerVersionData());
emit sigSendDebugLog("CLIENT: filesize: " + QString::number(fileSize));
emit sigSendDebugLog("CLIENT: filePath: " + filePath);
@@ -201,7 +203,7 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
continue;
}
filePath = Tools::createReceiveFullPath(filePath,updateController->getServerVersion());
filePath = Tools::createReceiveFullPath(filePath,versionContainer->getServerVersionData());
QFileInfo fileInfo(filePath);
@@ -227,7 +229,8 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
}
if(packetType ==PacketType::TYPE_FINISH){ //для повторного создания хэша после загрузки
if (packetType ==PacketType::TYPE_FINISH) //для повторного создания хэша после загрузки
{
updateController->calculateCommonHash();
emit sigLoadComplete();
packetType = PacketType::TYPE_NONE;
@@ -238,17 +241,19 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
bool flag = false;
quint64 size = 0;
quint64 fileCount = 0;
quint64 fileDelete = 0;
stream.startTransaction();
stream >> flag;
stream >> size;
stream >> fileCount;
stream >> fileDelete;
if(!stream.commitTransaction()){
continue;
}
emit sigNeedUpdate(flag,size,fileCount);
emit sigNeedUpdate(flag,size,fileCount,fileDelete);
packetType = PacketType::TYPE_NONE;
}
@@ -284,9 +289,7 @@ void RecognizeSystem::checkAccessType(QString type)
void RecognizeSystem::setServerVersion(StreamingVersionData *serverVersion)
{
dataParser->changeVersion(serverVersion->getViewName());
updateController->setServerVersion(serverVersion);
mainWindow->setCurrentVersionName(serverVersion->getViewName());
versionContainer->setServerVersonData(serverVersion);
}
void RecognizeSystem::showServerDataList(QList<StreamingVersionData*> *showServerDataList)

View File

@@ -26,7 +26,8 @@ public:
DataParser *dataParser,
MainWindow *mainWindow,
HashComparer *hashComparer,
TCPClient *client);
TCPClient *client,
VersionContainer* versionContainer);
void recognize(QTcpSocket *socket);
void checkAccessType(QString type);
@@ -36,7 +37,7 @@ public:
signals:
void sigUpdateBytesAvailable();
void sigLoadComplete();
void sigNeedUpdate(bool flag,qint64 size,quint64 fileCount);
void sigNeedUpdate(bool flag,qint64 size,quint64 fileCount,quint64 fileDelete);
void sigSendDebugLog(QString message);
void sigSocketDisabled();
void sigServerBlocked();
@@ -50,6 +51,7 @@ private:
MainWindow *mainWindow;
UpdateController *updateController;
DataParser *dataParser;
VersionContainer *versionContainer;
PacketType packetType;
QString message;
QString filePath;

View File

@@ -26,6 +26,7 @@ static QString serverHash = fullStaticDataFolderName + "/serverHash.xml";
static QString cmd_CheckVersionList = "CHECKVERSIONLIST";
static QString cmd_GetServerHash = "GETSERVERDATALIST";
static QString cmd_Disable = "DISABLE";
static QString baseNamePackage = "base";
enum PacketType{
TYPE_NONE = 0,

42
Core/versioncontainer.cpp Normal file
View File

@@ -0,0 +1,42 @@
#include "versioncontainer.h"
VersionContainer::VersionContainer(QObject *parent) :
QObject(parent)
{
}
VersionContainer::~VersionContainer()
{
}
QString VersionContainer::getServerVersion() const
{
return serverVersionData->getViewName();
}
QString VersionContainer::getLocalVersion() const
{
return localVersionData->getViewName();
}
StreamingVersionData *VersionContainer::getLocalVersionData() const
{
return localVersionData;
}
void VersionContainer::setLocalVersionData(StreamingVersionData *value)
{
localVersionData = value;
}
StreamingVersionData *VersionContainer::getServerVersionData() const
{
return serverVersionData;
}
void VersionContainer::setServerVersonData(StreamingVersionData *value)
{
serverVersionData = value;
}

31
Core/versioncontainer.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef VERSIONCONTAINER_H
#define VERSIONCONTAINER_H
#include "streamingversiondata.h"
#include <QObject>
class VersionContainer : public QObject
{
Q_OBJECT
public:
explicit VersionContainer(QObject *parent = nullptr);
~VersionContainer();
QString getServerVersion() const;
QString getLocalVersion() const;
StreamingVersionData *getLocalVersionData() const;
void setLocalVersionData(StreamingVersionData *value);
StreamingVersionData *getServerVersionData() const;
void setServerVersonData(StreamingVersionData *value);
private:
StreamingVersionData *localVersionData;
StreamingVersionData *serverVersionData;
};
#endif // VERSIONCONTAINER_H

View File

@@ -8,6 +8,7 @@ public:
QString Address;
QString Port;
QString Language;
QString LocalVersionName;
bool isAutoStart;
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -19,6 +19,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
Core/sendsystem.cpp \
Core/versioncontainer.cpp \
Core\updatecontroller.cpp \
Core\externalexecuter.cpp\
Core\dataparser.cpp\
@@ -39,6 +40,7 @@ SOURCES += \
HEADERS += \
Core/streamingversiondata.h \
Core/versioncontainer.h \
Core\sendsystem.h \
Core\updatecontroller.h \
Core\externalexecuter.h\

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-12-23T18:08:25. -->
<!-- Written by QtCreator 4.11.1, 2024-12-26T11:29:31. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -184,22 +184,11 @@
<FileData Path="/Application/RRJLoader/RRJ_Data/Managed/Unity.Mathematics.dll" Hash="88db1f1b78092627dd59ba7098212fb9"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/Managed/Unity.Rendering.LightTransport.Runtime.dll" Hash="39b58780871edbbe50c43180e940dec5"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/Managed/Unity.RenderPipelines.Core.Runtime.dll" Hash="b7f1b29575e39edb80529f80dbe96b51"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder12027" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RUS" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds/UI" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RRJ-95NEW-100" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder8456" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder746" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder13868" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file10372 — копия.txt" Hash="0eaa763a2aac183209e5d11481c8551d"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file10372.txt" Hash="0eaa763a2aac183209e5d11481c8551d"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file112.txt" Hash="c635af0ef87e223a6fc5f1357126750c"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file451.txt" Hash="570e0c7f7bf33e9048adaebae0a7de53"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file4773.txt" Hash="f1a15060c60ce5f473cfff766e096625"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file7787 — копия.txt" Hash="e4706faaea8860880bfd0b809f6e0250"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file7787.txt" Hash="e4706faaea8860880bfd0b809f6e0250"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RUS" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds/UI" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RRJ-95NEW-100/docs.xml" Hash="fcad1626c1ef3851931bf68a1aa054c6"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RUS/024.31.00a.xml" Hash="e730fbd64cd77dd163732cfaf2bd0e75"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds/UI/ir_begin.wav" Hash="2e0057ee08c7b6fa07d28863a40d1cbf"/>

View File

@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<ServerSettingsContainer>
<ServerSettings AutoStart="0" Port="6000" Address="192.168.100.241" Language="RUS"/>
<ServerSettings Language="RUS" AutoStart="0" Address="192.168.100.241" Port="6000"/>
<VersionData Version="base"/>
</ServerSettingsContainer>

View File

@@ -1,21 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<FileDataList>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder12027" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RUS" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds/UI" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RRJ-95NEW-100" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder8456" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder746" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Folder13868" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file10372 — копия.txt" Hash="0eaa763a2aac183209e5d11481c8551d"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file10372.txt" Hash="0eaa763a2aac183209e5d11481c8551d"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file112.txt" Hash="c635af0ef87e223a6fc5f1357126750c"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file451.txt" Hash="570e0c7f7bf33e9048adaebae0a7de53"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file4773.txt" Hash="f1a15060c60ce5f473cfff766e096625"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file7787 — копия.txt" Hash="e4706faaea8860880bfd0b809f6e0250"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/file7787.txt" Hash="e4706faaea8860880bfd0b809f6e0250"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RUS" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds/UI" Hash="FOLDER"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RRJ-95NEW-100/docs.xml" Hash="fcad1626c1ef3851931bf68a1aa054c6"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/RUS/024.31.00a.xml" Hash="e730fbd64cd77dd163732cfaf2bd0e75"/>
<FileData Path="/Application/RRJLoader/RRJ_Data/StreamingAssets/Sounds/UI/ir_begin.wav" Hash="2e0057ee08c7b6fa07d28863a40d1cbf"/>

View File

@@ -8,16 +8,17 @@ CommonButtonGroupWidget::CommonButtonGroupWidget(QWidget *parent) :
ui->setupUi(this);
}
void CommonButtonGroupWidget::initialize(ExternalExecuter *extExec,SendSystem *sendSystem,TCPClient *client)
void CommonButtonGroupWidget::initialize(MainWindow *mainWindow,ExternalExecuter *extExec,SendSystem *sendSystem,TCPClient *client)
{
externalExecuter = extExec;
this->sendSystem = sendSystem;
this->mainWindow = mainWindow;
ui->loadingProgressBar->setValue(0);
ui->loadingProgressBar->hide();
ui->updateButton->hide();
ui->startButton->hide();
ui->startButton->setEnabled(false);
ui->startButton->setEnabled(false);
connect(this,&CommonButtonGroupWidget::sigSendCommand,client,&TCPClient::slotSendCommand,Qt::AutoConnection);
connect(this,&CommonButtonGroupWidget::sigSendXMLAnswer,sendSystem,&SendSystem::xmlAnswer,Qt::DirectConnection);
@@ -40,6 +41,7 @@ void CommonButtonGroupWidget::loadCompleteState()
void CommonButtonGroupWidget::lastVerInstalledState()
{
show();
ui->updateButton->hide();
ui->loadingProgressBar->hide();
ui->startButton->show();
}
@@ -83,6 +85,7 @@ void CommonButtonGroupWidget::on_updateButton_clicked()
{
emit sigSendCommand("update");
startUpdateState();
mainWindow->disableUnsaveButton(true);
}
void CommonButtonGroupWidget::on_startButton_clicked()

View File

@@ -19,7 +19,7 @@ class CommonButtonGroupWidget : public QWidget
public:
explicit CommonButtonGroupWidget(QWidget *parent = nullptr);
void initialize(ExternalExecuter *extExec,SendSystem *sendSystem,TCPClient *client);
void initialize(MainWindow *mainWindow,ExternalExecuter *extExec,SendSystem *sendSystem,TCPClient *client);
void loadCompleteState();
void lastVerInstalledState();
void disconnectState();
@@ -42,6 +42,7 @@ public:
private:
Ui::CommonButtonGroupWidget *ui;
MainWindow *mainWindow;
ExternalExecuter *externalExecuter;
SendSystem *sendSystem;
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -23,8 +23,8 @@ QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_MainWindow_t {
QByteArrayData data[61];
char stringdata0[933];
QByteArrayData data[63];
char stringdata0[977];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
@@ -83,17 +83,19 @@ QT_MOC_LITERAL(46, 657, 10), // "serverAuth"
QT_MOC_LITERAL(47, 668, 13), // "setNeedUpdate"
QT_MOC_LITERAL(48, 682, 4), // "size"
QT_MOC_LITERAL(49, 687, 9), // "fileCount"
QT_MOC_LITERAL(50, 697, 20), // "showServerListWidget"
QT_MOC_LITERAL(51, 718, 29), // "QList<StreamingVersionData*>*"
QT_MOC_LITERAL(52, 748, 10), // "serverData"
QT_MOC_LITERAL(53, 759, 25), // "on_settingsButton_clicked"
QT_MOC_LITERAL(54, 785, 29), // "on_languageComboBox_activated"
QT_MOC_LITERAL(55, 815, 4), // "arg1"
QT_MOC_LITERAL(56, 820, 17), // "slotDisableNotify"
QT_MOC_LITERAL(57, 838, 37), // "on_updateListGuideLabel_linkA..."
QT_MOC_LITERAL(58, 876, 4), // "link"
QT_MOC_LITERAL(59, 881, 21), // "on_exitButton_clicked"
QT_MOC_LITERAL(60, 903, 29) // "on_offlineStartButton_clicked"
QT_MOC_LITERAL(50, 697, 11), // "deleteCount"
QT_MOC_LITERAL(51, 709, 20), // "showServerListWidget"
QT_MOC_LITERAL(52, 730, 29), // "QList<StreamingVersionData*>*"
QT_MOC_LITERAL(53, 760, 10), // "serverData"
QT_MOC_LITERAL(54, 771, 25), // "on_settingsButton_clicked"
QT_MOC_LITERAL(55, 797, 29), // "on_languageComboBox_activated"
QT_MOC_LITERAL(56, 827, 4), // "arg1"
QT_MOC_LITERAL(57, 832, 17), // "slotDisableNotify"
QT_MOC_LITERAL(58, 850, 37), // "on_updateListGuideLabel_linkA..."
QT_MOC_LITERAL(59, 888, 4), // "link"
QT_MOC_LITERAL(60, 893, 21), // "on_exitButton_clicked"
QT_MOC_LITERAL(61, 915, 29), // "on_offlineStartButton_clicked"
QT_MOC_LITERAL(62, 945, 31) // "on_unsafeChangingButton_clicked"
},
"MainWindow\0sigInitializeClient\0\0"
@@ -115,14 +117,15 @@ QT_MOC_LITERAL(60, 903, 29) // "on_offlineStartButton_clicked"
"updateProgress\0loadComplete\0lostConnection\0"
"serverBlocked\0checkLoginResult\0"
"ServerAuthorization*\0serverAuth\0"
"setNeedUpdate\0size\0fileCount\0"
"setNeedUpdate\0size\0fileCount\0deleteCount\0"
"showServerListWidget\0QList<StreamingVersionData*>*\0"
"serverData\0on_settingsButton_clicked\0"
"on_languageComboBox_activated\0arg1\0"
"slotDisableNotify\0"
"on_updateListGuideLabel_linkActivated\0"
"link\0on_exitButton_clicked\0"
"on_offlineStartButton_clicked"
"on_offlineStartButton_clicked\0"
"on_unsafeChangingButton_clicked"
};
#undef QT_MOC_LITERAL
@@ -132,7 +135,7 @@ static const uint qt_meta_data_MainWindow[] = {
8, // revision
0, // classname
0, 0, // classinfo
26, 14, // methods
27, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
@@ -140,34 +143,35 @@ static const uint qt_meta_data_MainWindow[] = {
9, // signalCount
// signals: name, argc, parameters, tag, flags
1, 5, 144, 2, 0x06 /* Public */,
13, 5, 155, 2, 0x06 /* Public */,
22, 1, 166, 2, 0x06 /* Public */,
24, 1, 169, 2, 0x06 /* Public */,
26, 1, 172, 2, 0x06 /* Public */,
29, 2, 175, 2, 0x06 /* Public */,
32, 0, 180, 2, 0x06 /* Public */,
33, 0, 181, 2, 0x06 /* Public */,
34, 0, 182, 2, 0x06 /* Public */,
1, 5, 149, 2, 0x06 /* Public */,
13, 5, 160, 2, 0x06 /* Public */,
22, 1, 171, 2, 0x06 /* Public */,
24, 1, 174, 2, 0x06 /* Public */,
26, 1, 177, 2, 0x06 /* Public */,
29, 2, 180, 2, 0x06 /* Public */,
32, 0, 185, 2, 0x06 /* Public */,
33, 0, 186, 2, 0x06 /* Public */,
34, 0, 187, 2, 0x06 /* Public */,
// slots: name, argc, parameters, tag, flags
35, 0, 183, 2, 0x0a /* Public */,
36, 0, 184, 2, 0x0a /* Public */,
37, 1, 185, 2, 0x0a /* Public */,
39, 0, 188, 2, 0x0a /* Public */,
40, 0, 189, 2, 0x0a /* Public */,
41, 0, 190, 2, 0x0a /* Public */,
42, 0, 191, 2, 0x0a /* Public */,
43, 0, 192, 2, 0x0a /* Public */,
44, 1, 193, 2, 0x0a /* Public */,
47, 3, 196, 2, 0x0a /* Public */,
50, 1, 203, 2, 0x0a /* Public */,
53, 0, 206, 2, 0x08 /* Private */,
54, 1, 207, 2, 0x08 /* Private */,
56, 0, 210, 2, 0x08 /* Private */,
57, 1, 211, 2, 0x08 /* Private */,
59, 0, 214, 2, 0x08 /* Private */,
60, 0, 215, 2, 0x08 /* Private */,
35, 0, 188, 2, 0x0a /* Public */,
36, 0, 189, 2, 0x0a /* Public */,
37, 1, 190, 2, 0x0a /* Public */,
39, 0, 193, 2, 0x0a /* Public */,
40, 0, 194, 2, 0x0a /* Public */,
41, 0, 195, 2, 0x0a /* Public */,
42, 0, 196, 2, 0x0a /* Public */,
43, 0, 197, 2, 0x0a /* Public */,
44, 1, 198, 2, 0x0a /* Public */,
47, 4, 201, 2, 0x0a /* Public */,
51, 1, 210, 2, 0x0a /* Public */,
54, 0, 213, 2, 0x08 /* Private */,
55, 1, 214, 2, 0x08 /* Private */,
57, 0, 217, 2, 0x08 /* Private */,
58, 1, 218, 2, 0x08 /* Private */,
60, 0, 221, 2, 0x08 /* Private */,
61, 0, 222, 2, 0x08 /* Private */,
62, 0, 223, 2, 0x08 /* Private */,
// signals: parameters
QMetaType::Void, 0x80000000 | 3, 0x80000000 | 5, 0x80000000 | 7, 0x80000000 | 9, 0x80000000 | 11, 4, 6, 8, 10, 12,
@@ -190,12 +194,13 @@ static const uint qt_meta_data_MainWindow[] = {
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, 0x80000000 | 45, 46,
QMetaType::Void, QMetaType::Bool, QMetaType::ULongLong, QMetaType::ULongLong, 38, 48, 49,
QMetaType::Void, 0x80000000 | 51, 52,
QMetaType::Void, QMetaType::Bool, QMetaType::ULongLong, QMetaType::ULongLong, QMetaType::ULongLong, 38, 48, 49, 50,
QMetaType::Void, 0x80000000 | 52, 53,
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 55,
QMetaType::Void, QMetaType::QString, 56,
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 59,
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 58,
QMetaType::Void,
QMetaType::Void,
@@ -227,7 +232,7 @@ void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id,
case 15: _t->lostConnection(); break;
case 16: _t->serverBlocked(); break;
case 17: _t->checkLoginResult((*reinterpret_cast< ServerAuthorization*(*)>(_a[1]))); break;
case 18: _t->setNeedUpdate((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< quint64(*)>(_a[2])),(*reinterpret_cast< quint64(*)>(_a[3]))); break;
case 18: _t->setNeedUpdate((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< quint64(*)>(_a[2])),(*reinterpret_cast< quint64(*)>(_a[3])),(*reinterpret_cast< quint64(*)>(_a[4]))); break;
case 19: _t->showServerListWidget((*reinterpret_cast< QList<StreamingVersionData*>*(*)>(_a[1]))); break;
case 20: _t->on_settingsButton_clicked(); break;
case 21: _t->on_languageComboBox_activated((*reinterpret_cast< const QString(*)>(_a[1]))); break;
@@ -235,6 +240,7 @@ void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id,
case 23: _t->on_updateListGuideLabel_linkActivated((*reinterpret_cast< const QString(*)>(_a[1]))); break;
case 24: _t->on_exitButton_clicked(); break;
case 25: _t->on_offlineStartButton_clicked(); break;
case 26: _t->on_unsafeChangingButton_clicked(); break;
default: ;
}
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
@@ -375,13 +381,13 @@ int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 26)
if (_id < 27)
qt_static_metacall(this, _c, _id, _a);
_id -= 26;
_id -= 27;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 26)
if (_id < 27)
qt_static_metacall(this, _c, _id, _a);
_id -= 26;
_id -= 27;
}
return _id;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -23,8 +23,8 @@ QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_RecognizeSystem_t {
QByteArrayData data[21];
char stringdata0[310];
QByteArrayData data[22];
char stringdata0[321];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
@@ -41,25 +41,26 @@ QT_MOC_LITERAL(4, 57, 13), // "sigNeedUpdate"
QT_MOC_LITERAL(5, 71, 4), // "flag"
QT_MOC_LITERAL(6, 76, 4), // "size"
QT_MOC_LITERAL(7, 81, 9), // "fileCount"
QT_MOC_LITERAL(8, 91, 15), // "sigSendDebugLog"
QT_MOC_LITERAL(9, 107, 7), // "message"
QT_MOC_LITERAL(10, 115, 17), // "sigSocketDisabled"
QT_MOC_LITERAL(11, 133, 16), // "sigServerBlocked"
QT_MOC_LITERAL(12, 150, 16), // "sigSaveLoginData"
QT_MOC_LITERAL(13, 167, 20), // "ServerAuthorization*"
QT_MOC_LITERAL(14, 188, 10), // "serverAuth"
QT_MOC_LITERAL(15, 199, 25), // "sigSocketWaitForReadyRead"
QT_MOC_LITERAL(16, 225, 8), // "waitTime"
QT_MOC_LITERAL(17, 234, 15), // "sigStartCompare"
QT_MOC_LITERAL(18, 250, 17), // "sigShowServerList"
QT_MOC_LITERAL(19, 268, 29), // "QList<StreamingVersionData*>*"
QT_MOC_LITERAL(20, 298, 11) // "serverDatas"
QT_MOC_LITERAL(8, 91, 10), // "fileDelete"
QT_MOC_LITERAL(9, 102, 15), // "sigSendDebugLog"
QT_MOC_LITERAL(10, 118, 7), // "message"
QT_MOC_LITERAL(11, 126, 17), // "sigSocketDisabled"
QT_MOC_LITERAL(12, 144, 16), // "sigServerBlocked"
QT_MOC_LITERAL(13, 161, 16), // "sigSaveLoginData"
QT_MOC_LITERAL(14, 178, 20), // "ServerAuthorization*"
QT_MOC_LITERAL(15, 199, 10), // "serverAuth"
QT_MOC_LITERAL(16, 210, 25), // "sigSocketWaitForReadyRead"
QT_MOC_LITERAL(17, 236, 8), // "waitTime"
QT_MOC_LITERAL(18, 245, 15), // "sigStartCompare"
QT_MOC_LITERAL(19, 261, 17), // "sigShowServerList"
QT_MOC_LITERAL(20, 279, 29), // "QList<StreamingVersionData*>*"
QT_MOC_LITERAL(21, 309, 11) // "serverDatas"
},
"RecognizeSystem\0sigUpdateBytesAvailable\0"
"\0sigLoadComplete\0sigNeedUpdate\0flag\0"
"size\0fileCount\0sigSendDebugLog\0message\0"
"sigSocketDisabled\0sigServerBlocked\0"
"size\0fileCount\0fileDelete\0sigSendDebugLog\0"
"message\0sigSocketDisabled\0sigServerBlocked\0"
"sigSaveLoginData\0ServerAuthorization*\0"
"serverAuth\0sigSocketWaitForReadyRead\0"
"waitTime\0sigStartCompare\0sigShowServerList\0"
@@ -83,26 +84,26 @@ static const uint qt_meta_data_RecognizeSystem[] = {
// signals: name, argc, parameters, tag, flags
1, 0, 64, 2, 0x06 /* Public */,
3, 0, 65, 2, 0x06 /* Public */,
4, 3, 66, 2, 0x06 /* Public */,
8, 1, 73, 2, 0x06 /* Public */,
10, 0, 76, 2, 0x06 /* Public */,
11, 0, 77, 2, 0x06 /* Public */,
12, 1, 78, 2, 0x06 /* Public */,
15, 1, 81, 2, 0x06 /* Public */,
17, 0, 84, 2, 0x06 /* Public */,
18, 1, 85, 2, 0x06 /* Public */,
4, 4, 66, 2, 0x06 /* Public */,
9, 1, 75, 2, 0x06 /* Public */,
11, 0, 78, 2, 0x06 /* Public */,
12, 0, 79, 2, 0x06 /* Public */,
13, 1, 80, 2, 0x06 /* Public */,
16, 1, 83, 2, 0x06 /* Public */,
18, 0, 86, 2, 0x06 /* Public */,
19, 1, 87, 2, 0x06 /* Public */,
// signals: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::Bool, QMetaType::LongLong, QMetaType::ULongLong, 5, 6, 7,
QMetaType::Void, QMetaType::QString, 9,
QMetaType::Void, QMetaType::Bool, QMetaType::LongLong, QMetaType::ULongLong, QMetaType::ULongLong, 5, 6, 7, 8,
QMetaType::Void, QMetaType::QString, 10,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, 0x80000000 | 13, 14,
QMetaType::Void, QMetaType::Int, 16,
QMetaType::Void, 0x80000000 | 14, 15,
QMetaType::Void, QMetaType::Int, 17,
QMetaType::Void,
QMetaType::Void, 0x80000000 | 19, 20,
QMetaType::Void, 0x80000000 | 20, 21,
0 // eod
};
@@ -115,7 +116,7 @@ void RecognizeSystem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int
switch (_id) {
case 0: _t->sigUpdateBytesAvailable(); break;
case 1: _t->sigLoadComplete(); break;
case 2: _t->sigNeedUpdate((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< qint64(*)>(_a[2])),(*reinterpret_cast< quint64(*)>(_a[3]))); break;
case 2: _t->sigNeedUpdate((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< qint64(*)>(_a[2])),(*reinterpret_cast< quint64(*)>(_a[3])),(*reinterpret_cast< quint64(*)>(_a[4]))); break;
case 3: _t->sigSendDebugLog((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 4: _t->sigSocketDisabled(); break;
case 5: _t->sigServerBlocked(); break;
@@ -142,7 +143,7 @@ void RecognizeSystem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int
}
}
{
using _t = void (RecognizeSystem::*)(bool , qint64 , quint64 );
using _t = void (RecognizeSystem::*)(bool , qint64 , quint64 , quint64 );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&RecognizeSystem::sigNeedUpdate)) {
*result = 2;
return;
@@ -253,9 +254,9 @@ void RecognizeSystem::sigLoadComplete()
}
// SIGNAL 2
void RecognizeSystem::sigNeedUpdate(bool _t1, qint64 _t2, quint64 _t3)
void RecognizeSystem::sigNeedUpdate(bool _t1, qint64 _t2, quint64 _t3, quint64 _t4)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t2))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t3))) };
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t2))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t3))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t4))) };
QMetaObject::activate(this, &staticMetaObject, 2, _a);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,95 @@
/****************************************************************************
** Meta object code from reading C++ file 'versioncontainer.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.14.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../Core/versioncontainer.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'versioncontainer.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.14.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_VersionContainer_t {
QByteArrayData data[1];
char stringdata0[17];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_VersionContainer_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_VersionContainer_t qt_meta_stringdata_VersionContainer = {
{
QT_MOC_LITERAL(0, 0, 16) // "VersionContainer"
},
"VersionContainer"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_VersionContainer[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void VersionContainer::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject VersionContainer::staticMetaObject = { {
QMetaObject::SuperData::link<QObject::staticMetaObject>(),
qt_meta_stringdata_VersionContainer.data,
qt_meta_data_VersionContainer,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *VersionContainer::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *VersionContainer::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_VersionContainer.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int VersionContainer::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -8,52 +8,54 @@
static const unsigned char qt_resource_data[] = {
// D:/QT/Projects/RRJClient/style.css
0x0,0x0,0x2,0xb6,
0x0,0x0,0x2,0xd4,
0x0,
0x0,0xb,0xe5,0x78,0x9c,0xd5,0x56,0xdb,0x6e,0xe2,0x30,0x10,0x7d,0x47,0xe2,0x1f,
0xac,0xf2,0x42,0x25,0x28,0x49,0x80,0x16,0x65,0xdf,0x68,0xf7,0xaa,0xb2,0xda,0xaa,
0xdd,0xed,0xe3,0xca,0x89,0xdd,0x64,0x84,0xb1,0x91,0xed,0x88,0xa2,0x6a,0xff,0x7d,
0xa7,0x49,0xb8,0x84,0x4,0x1a,0xda,0x6a,0xa5,0x25,0x28,0xa0,0x78,0x72,0xe6,0x8c,
0x67,0xe6,0x8c,0x9b,0x8d,0x9b,0x9,0x5,0x79,0xf,0x92,0xa9,0x45,0xb3,0xf1,0xd4,
0x6c,0x10,0xfc,0x4,0x34,0x9c,0x46,0x5a,0x25,0x92,0x75,0x61,0x46,0x23,0xee,0x93,
0x44,0x8b,0xb6,0xdf,0xd3,0xdc,0xa8,0x44,0x87,0xbc,0x77,0x7b,0xfb,0xed,0xf7,0xc6,
0xe8,0x8a,0xea,0xe9,0xed,0xe4,0x6c,0x2e,0xa3,0xd3,0xf,0x25,0x80,0xb9,0x32,0x60,
0x41,0x49,0x9f,0x84,0x5c,0x5a,0xae,0xd1,0xe2,0x4f,0xb3,0xd1,0x6c,0xdc,0x7c,0xd2,
0x74,0xc6,0x5b,0x1b,0xcb,0x9f,0x73,0x46,0x2d,0xff,0xb7,0x1c,0xae,0xc1,0xd8,0x7b,
0x60,0x11,0xb7,0xad,0x24,0x75,0xbf,0x79,0x50,0x45,0x24,0x54,0x42,0x69,0x9f,0xe8,
0x28,0xa0,0xed,0x91,0xdb,0xc9,0xbe,0xee,0xc8,0x59,0xb9,0xcc,0xd6,0x17,0x31,0x58,
0xbe,0x76,0x71,0xa9,0x66,0x81,0x1a,0xab,0xc7,0xc3,0x78,0x6d,0xcf,0xe9,0x77,0x3c,
0x6f,0xd4,0xf1,0x86,0xc3,0x75,0x0,0x4a,0x33,0xae,0xbb,0xc6,0x2e,0x5,0x46,0xaf,
0x12,0x6b,0xb8,0x2d,0x2e,0x69,0xca,0x20,0x31,0x3e,0xe9,0xcf,0x1f,0xf3,0x85,0x7,
0x25,0x6d,0xf7,0x81,0xce,0x40,0x2c,0x7d,0x72,0x72,0x49,0x5,0x4,0x1a,0x4e,0xb6,
0x16,0x7d,0xe2,0x9e,0xaf,0xad,0xb7,0xfc,0xf,0x86,0x9d,0xd1,0xa0,0xe3,0xf6,0xd3,
0x58,0x32,0xe6,0x3f,0x12,0x13,0x8f,0x13,0x6b,0x95,0xfc,0x9f,0xb9,0xfb,0xc,0xc,
0xd,0x4,0x67,0x7,0x82,0x10,0x10,0xc5,0xf6,0xb3,0xa6,0xcb,0x22,0x76,0x84,0x4f,
0x56,0x80,0x13,0x6e,0xc,0x56,0xe1,0xe1,0x44,0x16,0x33,0xbf,0x79,0x85,0xdc,0x5c,
0xd3,0x80,0x8b,0xf5,0x9b,0x35,0x22,0xf5,0x9c,0xdd,0x48,0x3,0x81,0xfe,0x2a,0xc1,
0xab,0x12,0x55,0xdc,0x64,0x6f,0xd,0x36,0xa7,0x8c,0x81,0x8c,0x7c,0xe2,0x9c,0x79,
0x7c,0xb6,0xbe,0xf7,0x57,0xff,0x73,0xb3,0x19,0xc8,0xee,0x2,0x98,0x8d,0x7d,0x72,
0x91,0x31,0x59,0x35,0x8c,0xe4,0x1f,0x19,0xd8,0x5d,0x47,0xb5,0x13,0x9d,0xa7,0x47,
0xab,0x8,0x1b,0xd9,0x8c,0xa9,0xde,0x41,0x4a,0xb9,0x12,0xa3,0x4,0xb0,0x72,0x6e,
0x2b,0x50,0x87,0xfb,0xb6,0xa9,0x6e,0x45,0x21,0x0,0x62,0xa,0x96,0x3f,0xb5,0xfc,
0xd1,0x76,0xd1,0x30,0x2a,0x89,0x45,0x91,0xb6,0xef,0x87,0x71,0x22,0xa7,0xfb,0x36,
0x7c,0x43,0xab,0x56,0xcb,0xe4,0x52,0x11,0xf3,0x70,0xba,0x5d,0x61,0xdb,0xfc,0xf7,
0xd0,0x1f,0xed,0xc6,0x5f,0xac,0xc1,0x5c,0xdc,0x20,0x54,0x72,0x57,0xd6,0x32,0xc2,
0xd5,0xda,0xfa,0x15,0xed,0x4d,0x6f,0x2e,0xa8,0xe4,0xa9,0xa4,0x12,0x27,0xbf,0x8c,
0xd5,0xdc,0x86,0xf1,0xea,0x77,0x55,0x54,0x7b,0xf5,0xf5,0xed,0x65,0x5f,0x8c,0x27,
0x5,0x6c,0x81,0x14,0x58,0x87,0x77,0x98,0xaa,0x2b,0x1e,0x24,0xd1,0x31,0xe,0xf2,
0xd,0x2b,0xec,0x4e,0xcc,0x29,0x6e,0xc5,0x4b,0xb2,0xbf,0x37,0x6d,0x85,0x1,0x52,
0x6f,0x78,0x6c,0xe1,0xbc,0x4e,0x35,0x5d,0xa7,0x14,0x6,0x79,0x3d,0x3,0x67,0xb7,
0xbb,0xde,0x83,0xc1,0xbb,0x88,0x5e,0xb5,0xbc,0x4f,0x96,0x78,0x60,0xf9,0x92,0x66,
0x2d,0x4f,0xde,0xd1,0xae,0xca,0x8d,0xb3,0x67,0x92,0x64,0x15,0x87,0x9d,0x10,0x25,
0xd8,0x29,0x77,0x60,0x5,0xaf,0xe7,0xe7,0x40,0xfd,0x7e,0x57,0x16,0x1e,0x20,0xa4,
0xcf,0x3d,0x73,0x4,0xf3,0x2a,0x44,0xc4,0xbc,0x53,0x4a,0x64,0xf2,0xdf,0xc2,0x59,
0x87,0x4d,0xbb,0xfc,0x5,0x7c,0x51,0xd2,0xd5,0xc1,0x9b,0x74,0xb5,0xfa,0x9d,0x17,
0x26,0x60,0x35,0x33,0x54,0x4e,0xd4,0xb9,0x83,0x3,0xf9,0xd9,0x9b,0x3b,0xc4,0xb3,
0xd5,0xc5,0x39,0x56,0xa7,0x7b,0xfa,0x62,0xb4,0x75,0xa6,0x7c,0x5,0xe8,0x81,0xf8,
0xca,0x27,0x89,0x56,0xce,0x3b,0xcd,0x58,0x9d,0x83,0x11,0x6d,0x3b,0x9d,0xf4,0xaa,
0x3a,0x97,0xb4,0x50,0xc2,0xa6,0x47,0xa3,0xd4,0xac,0x91,0x40,0x24,0x5b,0x15,0xf2,
0x17,0xcd,0xcd,0x75,0xf3,
0x0,0xc,0x69,0x78,0x9c,0xd5,0x56,0xd9,0x6e,0xe2,0x30,0x14,0x7d,0x47,0xe2,0x1f,
0xac,0xa2,0x91,0x5a,0x9,0xda,0x24,0x94,0x96,0x49,0xdf,0x68,0x67,0x55,0xa9,0xa6,
0x6a,0xa7,0x7d,0x1c,0x39,0xf1,0x6d,0x62,0x61,0x6c,0x64,0x3b,0xa2,0x68,0x34,0xff,
0x3e,0x26,0x1b,0xd9,0x80,0x74,0xd1,0x48,0x43,0x10,0x4b,0xec,0x9c,0x7b,0xee,0x76,
0xae,0xbb,0x9d,0xdb,0x29,0xa6,0xfc,0x91,0x72,0x22,0x96,0xdd,0xce,0xef,0x6e,0x7,
0x99,0x97,0x87,0xfd,0x59,0x20,0x45,0xc4,0xc9,0x80,0xce,0x71,0x0,0x2e,0x8a,0x24,
0x3b,0x74,0x4f,0x24,0x28,0x11,0x49,0x1f,0x4e,0xee,0xee,0xbe,0xff,0xda,0x6c,0xba,
0xc2,0x72,0x76,0x37,0x3d,0x5e,0xf0,0xe0,0xe8,0xa2,0x6,0xb0,0x10,0x8a,0x6a,0x2a,
0xb8,0x8b,0x7c,0xe0,0x1a,0xa4,0xd9,0xf1,0xa7,0xdb,0xe9,0x76,0x6e,0x3f,0x4b,0x3c,
0x87,0xde,0x66,0xe7,0xcf,0x5,0xc1,0x1a,0xfe,0x2d,0x87,0x6b,0xaa,0xf4,0x23,0x25,
0x1,0xe8,0x5e,0x14,0x9b,0xdf,0xdc,0x68,0x22,0xe2,0xb,0x26,0xa4,0x8b,0x64,0xe0,
0xe1,0xc3,0xb1,0xdd,0x4f,0xde,0xf6,0xd8,0xca,0x4c,0x26,0xeb,0xcb,0x90,0x6a,0xa8,
0xb8,0x79,0x3,0xcb,0x7,0x90,0x93,0x1c,0x2a,0x43,0xaf,0x81,0xc7,0xd8,0x56,0x7f,
0x7d,0x7d,0xb4,0x3e,0x1c,0x5d,0xe4,0x38,0x97,0x62,0xee,0x89,0x89,0x78,0xde,0xcd,
0xeb,0xd0,0xb1,0x86,0x7d,0xc7,0x19,0xf7,0x9d,0xd1,0x28,0xf,0x84,0x90,0x4,0xe4,
0x40,0xe9,0x15,0x33,0x51,0x14,0x91,0x56,0xa0,0xcb,0x4b,0x12,0x13,0x1a,0x29,0x17,
0xd,0x17,0xcf,0xe9,0xc2,0x93,0xe0,0x7a,0xf0,0x84,0xe7,0x94,0xad,0x5c,0x74,0x70,
0x89,0x19,0xf5,0x24,0x3d,0x28,0x2c,0xba,0xc8,0x3e,0xcb,0x77,0x17,0xec,0x9f,0x8e,
0xfa,0xe3,0xd3,0xbe,0x3d,0x8c,0x63,0x92,0x30,0xff,0x11,0xa9,0x70,0x12,0x69,0x2d,
0xf8,0xff,0xcc,0xdd,0x25,0x54,0x61,0x8f,0x1,0xd9,0xe1,0x4,0xa3,0x41,0xa8,0xbf,
0x48,0xbc,0x2a,0x63,0x7,0xe6,0x4e,0x6,0x38,0x5,0xa5,0x4c,0x35,0xef,0x4e,0x64,
0xb9,0x82,0x36,0x8f,0xa0,0xdb,0x6b,0xec,0x1,0xcb,0x9f,0x6c,0xe1,0xa9,0x63,0x55,
0x3d,0xf5,0x98,0xb1,0xd7,0x8,0xde,0x94,0xa8,0x72,0x90,0x9d,0x1c,0x6c,0x81,0x9,
0xa1,0x3c,0x70,0x91,0x75,0xec,0xc0,0x3c,0xff,0x1c,0x66,0xbf,0xd3,0x6d,0x73,0xca,
0x7,0x4b,0x4a,0x74,0xe8,0xa2,0xf3,0x84,0x49,0xd6,0x78,0x1c,0x3e,0x11,0xaa,0xab,
0x86,0x5a,0x27,0x3a,0x4d,0x8f,0x14,0x81,0x11,0x4,0x35,0xc1,0xb2,0x82,0x14,0x73,
0x45,0x4a,0x30,0x4a,0xea,0xb9,0x6d,0x40,0x1d,0x6d,0xb,0x53,0xdb,0x8a,0x32,0x0,
0x6,0x93,0x91,0xf4,0xae,0x86,0x67,0x3d,0x30,0x1b,0x83,0x9a,0xe8,0x94,0x69,0xbb,
0xae,0x1f,0x46,0x7c,0xb6,0x2d,0xe0,0x1b,0x5a,0xad,0x5a,0x26,0x95,0x8a,0x10,0xfc,
0x59,0xb1,0xc2,0x8a,0xfc,0xb7,0xd0,0x1f,0x57,0xfd,0x2f,0xd7,0x60,0x2a,0x92,0xd4,
0x17,0xbc,0x2a,0x8f,0x9,0xe1,0x66,0x8d,0xfe,0x66,0xf6,0xab,0x93,0x5,0xc3,0x1c,
0x62,0x69,0x46,0x56,0x7a,0x29,0x2d,0x41,0xfb,0x61,0xf6,0x9d,0x15,0xd5,0x56,0x9d,
0x7e,0x7b,0xd9,0x97,0xfd,0xb9,0x37,0xe9,0x59,0xd7,0x5f,0x8f,0x72,0x66,0x4a,0x71,
0xfd,0xf7,0xa,0xbc,0x28,0xd8,0xa7,0xfa,0x89,0x32,0xe7,0x45,0xd4,0xa6,0x30,0xda,
0x45,0x36,0x4,0x6c,0xc2,0xb8,0x6f,0xf4,0x6c,0x4d,0x79,0x69,0x88,0xb5,0x1b,0x60,
0x5,0x9c,0xd7,0x29,0xae,0x5d,0x6c,0xe8,0xc4,0x26,0x7a,0x3d,0x3,0xab,0xda,0x99,
0xef,0xc1,0xe0,0x5d,0x4,0xb3,0x79,0x34,0x4c,0x57,0xe6,0xd0,0xf4,0x35,0xce,0x5a,
0x9a,0xbc,0x17,0x9b,0xaa,0x97,0xc6,0x96,0x29,0x14,0x23,0xf7,0x4c,0x17,0x5,0x91,
0xe9,0xb2,0x7b,0xaa,0x19,0xb4,0xb3,0xd3,0x58,0x71,0x9,0xda,0x8d,0xd0,0xf4,0x89,
0xfa,0x78,0xdd,0x6f,0x2f,0x60,0xde,0x84,0xb8,0xee,0x27,0x21,0x58,0x32,0x3a,0x7a,
0x66,0x4e,0x9a,0x86,0x5f,0x3d,0x50,0x58,0xd6,0x34,0xf9,0xf4,0x4d,0x9a,0xdc,0xfc,
0xcc,0x9e,0xe9,0xd9,0xcc,0xcc,0xa8,0xae,0xd1,0xc8,0x9d,0xc3,0x7c,0x6d,0xcd,0x1e,
0x99,0xf3,0xdd,0xf9,0x99,0xa9,0x4e,0xfb,0x68,0xaf,0xb7,0x6d,0x4e,0x8,0xd,0xa0,
0x3b,0xfc,0xab,0x9f,0x42,0x7a,0x29,0xef,0x38,0x63,0x6d,0xe,0x55,0x25,0xc9,0xaa,
0xa1,0x19,0xed,0x9b,0xbd,0x18,0xa5,0x65,0x8d,0x78,0x2c,0x2a,0x54,0xc8,0x5f,0x90,
0x99,0x9c,0x9f,
// D:/QT/Projects/RRJClient/resource/SSJ_backgroundDark.png
0x0,0x22,0x2a,0x2f,
0x89,
@@ -323692,6 +323694,394 @@ static const unsigned char qt_resource_data[] = {
0xc8,0xff,0x38,0x0,0x1,0x0,0x1,0x4,0xdc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,
0x0,0x0,0x0,0xcc,0x3d,0xa2,0xcf,0x0,0x0,0x0,0x0,0xc8,0x40,0xf9,0x9a,0x0,
0x0,0x0,0x0,0xcc,0x91,0xee,0xe9,
// D:/QT/Projects/RRJClient/resource/Icons/caution.png
0x0,0x0,0x18,0xd,
0x89,
0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,
0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x8,0x6,0x0,0x0,0x0,0x5c,0x72,0xa8,0x66,
0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc3,0x0,0x0,0xe,0xc3,
0x1,0xc7,0x6f,0xa8,0x64,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,
0x74,0x77,0x61,0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61,
0x70,0x65,0x2e,0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x17,0x9a,0x49,0x44,
0x41,0x54,0x78,0x9c,0xed,0xdd,0x79,0xd4,0x1d,0x45,0x9d,0xc6,0xf1,0xa7,0xd8,0x9,
0x90,0xb0,0xba,0x80,0xa8,0x80,0x3,0x2,0xca,0x22,0xca,0x22,0x3a,0x8,0xa3,0xa0,
0x82,0xa2,0x38,0xa8,0x80,0x8c,0xa,0xb2,0x28,0x82,0x33,0x88,0xa8,0xc,0xee,0x88,
0x32,0x8e,0xb,0xb2,0xc8,0xae,0x48,0x10,0x94,0x23,0x2a,0xee,0xce,0xe0,0x0,0xb2,
0xc,0x1a,0xc,0x41,0xd9,0x64,0xd,0x48,0xd8,0x12,0x48,0x58,0x2,0x64,0x79,0xbf,
0xfe,0xd1,0x37,0x87,0x18,0xf3,0xde,0xaa,0x7b,0x6f,0x77,0xd7,0xed,0xbe,0xcf,0xe7,
0x9c,0x9c,0xa3,0x74,0xbd,0xd5,0xbf,0xee,0xdb,0x5d,0xb7,0x6f,0x57,0xd5,0xaf,0x24,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
0x33,0x33,0xb3,0x36,0xb,0xb9,0x3,0xb0,0xfa,0x1,0xcb,0x4b,0x9a,0x24,0x69,0x75,
0x49,0x48,0x9a,0x23,0x69,0x76,0x8,0x61,0x41,0xd6,0xc0,0xac,0x76,0x6e,0x0,0x5a,
0xe,0x58,0x4f,0xd2,0xae,0x92,0xb6,0x96,0xb4,0x95,0xa4,0x2d,0x54,0xdc,0xfc,0x4b,
0x33,0x47,0xd2,0x34,0x49,0xd7,0x4b,0x9a,0x2a,0xe9,0x37,0x21,0x84,0x19,0x75,0xc4,
0x69,0x66,0x25,0x1,0x9e,0x7,0x7c,0xc,0xb8,0x6,0x18,0xa3,0x7f,0xb,0x81,0xab,
0x80,0x8f,0x2,0xcf,0xc9,0x7d,0x5c,0x66,0xd6,0x5,0xb0,0x1,0x70,0x22,0x30,0x77,
0x80,0x9b,0x7e,0x3c,0x4f,0x3,0xdf,0x5,0x36,0xce,0x7d,0x9c,0x66,0xb6,0x18,0x60,
0x12,0x70,0xa,0xb0,0xa0,0x82,0x1b,0x7f,0x49,0xb,0x80,0x93,0x80,0x89,0xb9,0x8f,
0xdb,0x6c,0xe4,0x1,0xef,0x4,0x66,0xd4,0x70,0xe3,0x2f,0xe9,0x3e,0x60,0xaf,0xdc,
0xc7,0x6f,0x36,0x92,0x80,0xe5,0x28,0x1e,0xf7,0x73,0x3b,0x9d,0xa2,0x57,0xc1,0xcc,
0xea,0x0,0xac,0x5,0x5c,0x9a,0xf9,0xc6,0x5f,0xdc,0x15,0xf8,0x25,0x61,0x23,0xb9,
0x1b,0xb0,0x61,0x80,0xe7,0x4a,0xba,0x5c,0xd2,0x26,0x3,0x54,0xf3,0x8c,0x8a,0x2e,
0xbf,0x39,0x9d,0xff,0x3f,0xa9,0xf3,0x6f,0xc5,0x1,0xea,0xbc,0x59,0xd2,0x4e,0x21,
0x84,0x87,0x7,0xa8,0xc3,0xcc,0xc6,0x3,0xac,0x9,0x4c,0xeb,0xe3,0x1b,0x7a,0x36,
0x30,0x19,0x78,0xf,0xb0,0x39,0xb0,0xdc,0x52,0xea,0x5e,0xe,0x78,0x19,0xb0,0x3f,
0x70,0x7e,0xe7,0x6f,0x7a,0x35,0x15,0x58,0x23,0xc7,0xb9,0x31,0x6b,0x35,0x60,0x25,
0xe0,0xda,0x1e,0x6f,0xc8,0xeb,0x81,0x7d,0x81,0x15,0xfa,0xd8,0xdf,0xa,0xc0,0x7e,
0xf4,0xde,0xe0,0x5c,0xd,0xc,0xf2,0x24,0x61,0x66,0x4b,0xa2,0xe8,0xe6,0x4b,0x35,
0x83,0xa2,0x77,0x60,0xe0,0x9f,0x78,0x40,0x0,0xde,0x45,0x6f,0x3d,0xd,0x27,0x96,
0x71,0xcc,0x66,0x26,0x9,0xd8,0xab,0x87,0x9b,0x6f,0x32,0x30,0xde,0x50,0xdf,0x41,
0x62,0x58,0x1d,0xf8,0x5e,0x62,0xc,0x63,0xc0,0xdb,0xca,0x8e,0xc1,0x6c,0xe4,0x0,
0xcf,0x7,0x1e,0x49,0xb8,0xe9,0x16,0x0,0x47,0xd5,0x10,0xcf,0xd1,0x14,0x43,0x84,
0x63,0x66,0x1,0xcf,0xab,0x3a,0x1e,0xb3,0x56,0x3,0x2e,0x4e,0xfc,0xc6,0x3d,0xa8,
0xc6,0x98,0xde,0x9b,0xd8,0x8,0x5c,0x52,0x57,0x4c,0x66,0xad,0x3,0xec,0x9d,0x70,
0x93,0x1,0x1c,0x91,0x21,0xb6,0xff,0x48,0x8c,0xed,0x1d,0x75,0xc7,0x66,0xd6,0x78,
0x14,0x5d,0x7e,0xf,0x24,0xdc,0x60,0xdf,0xcf,0x18,0xe3,0xe4,0x84,0xf8,0xee,0x7,
0xd6,0xcc,0x15,0xa3,0x59,0x23,0x1,0xdf,0x49,0xb8,0xb9,0xee,0x24,0xe3,0xa4,0x1c,
0x60,0x62,0x27,0x86,0x98,0x73,0x72,0xc5,0x68,0xd6,0x38,0xc0,0x2e,0xc4,0xe7,0xf1,
0x8f,0x1,0x6f,0x18,0x82,0x58,0x77,0x4e,0x88,0x15,0x60,0xd7,0xdc,0xb1,0x9a,0xd,
0x3d,0x60,0x15,0xe0,0x8e,0x84,0x1b,0xea,0xcc,0xdc,0xb1,0x2e,0x2,0x9c,0x95,0x10,
0xef,0xdd,0xc0,0xaa,0xb9,0x63,0x35,0x1b,0x6a,0xc0,0x37,0x13,0x6e,0xa6,0x19,0xc,
0xd1,0x90,0x5b,0x8a,0x7c,0x4,0x7f,0x4d,0x88,0xfb,0xeb,0xb9,0x63,0x35,0x1b,0x5a,
0xc0,0xf6,0xa4,0x25,0xf5,0x78,0x7b,0xee,0x58,0x97,0x4,0xec,0x91,0x10,0xf7,0x42,
0x60,0xc7,0xdc,0xb1,0x9a,0xd,0x1d,0x60,0x45,0xe0,0xc6,0x84,0x9b,0x28,0xdb,0x5b,
0xff,0x18,0xe0,0x7,0x9,0xf1,0xdf,0xc,0xac,0x94,0x3b,0x56,0xb3,0xa1,0x2,0x1c,
0x97,0x70,0xf3,0xcc,0xa2,0x98,0xe,0x3c,0x94,0x80,0xb5,0x81,0x87,0x12,0x8e,0xe3,
0x73,0xb9,0x63,0x35,0x1b,0x1a,0xc0,0x16,0xc0,0xbc,0x84,0x1b,0xe7,0xbd,0xb9,0x63,
0x8d,0xa1,0x18,0x25,0x18,0x33,0x1f,0xd8,0x3a,0x77,0xac,0x66,0xd9,0x1,0xcb,0x2,
0x7f,0x48,0xb8,0x69,0x2e,0xa5,0x84,0xd9,0x7d,0x75,0x0,0x7e,0x95,0x70,0x3c,0xbf,
0x7,0x96,0xcd,0x1d,0xab,0x59,0x56,0x14,0x93,0x6b,0x62,0x9e,0x0,0x36,0xcc,0x1d,
0x6b,0x2a,0xe0,0x45,0xc0,0x63,0x9,0xc7,0xf5,0xd1,0xdc,0xb1,0x9a,0x65,0x43,0x91,
0xc7,0xff,0x89,0x84,0x1b,0xe5,0xf0,0xdc,0xb1,0xf6,0xa,0x38,0x22,0xe1,0xb8,0x9e,
0x4,0x5e,0x92,0x3b,0x56,0xb3,0xda,0x51,0x24,0xda,0xf8,0xdf,0x84,0x9b,0xe4,0x1a,
0x1a,0xf8,0xa8,0xc,0x2c,0x3,0xfc,0x2e,0xe1,0xf8,0xfe,0x8f,0x86,0xfc,0xb4,0x31,
0x2b,0xd,0x70,0x68,0xc2,0xcd,0xf1,0x34,0xb0,0x59,0xee,0x58,0xfb,0x5,0x6c,0x2,
0x3c,0x95,0x70,0x9c,0xb5,0x4d,0x65,0x36,0xcb,0xe,0x58,0x17,0x78,0x34,0xe1,0xc6,
0x38,0x36,0x77,0xac,0x83,0x2,0x8e,0x4d,0x38,0xce,0x39,0xc0,0xb,0x72,0xc7,0x6a,
0x56,0xb,0xe0,0x47,0x9,0x37,0xc5,0x34,0x5a,0xb0,0xe0,0x6,0x45,0xb6,0xe1,0x3f,
0x26,0x1c,0xef,0x4f,0x73,0xc7,0x6a,0x56,0x39,0x60,0x9f,0x84,0x9b,0x61,0x1,0xf0,
0xca,0xa,0xf6,0xbd,0x29,0xc5,0x4a,0xbf,0x3f,0x3,0x6e,0xa0,0xc8,0x37,0xf0,0x40,
0xe7,0x7f,0xff,0x14,0x38,0x12,0x78,0x69,0x5,0xfb,0xdd,0x8a,0xb4,0x71,0xe,0xef,
0x2c,0x7b,0xdf,0x66,0x43,0x83,0x62,0x45,0x9f,0x7,0x13,0x6e,0x84,0x13,0x4a,0xde,
0xef,0xab,0x81,0xdf,0x26,0xec,0x77,0x91,0xab,0x80,0x9d,0x4b,0x8e,0xe1,0xbf,0x12,
0xf6,0xfb,0x30,0xb0,0x4e,0x99,0xfb,0x35,0x1b,0x1a,0xa4,0x65,0xd0,0xb9,0x13,0x58,
0xa5,0xa4,0xfd,0x4d,0x0,0x2e,0xe8,0xe1,0xc6,0x5f,0xd2,0xf9,0xc0,0x84,0x92,0x62,
0x59,0x19,0xf8,0x4b,0xc2,0x3e,0xcf,0x2d,0x63,0x7f,0x66,0x43,0x5,0x78,0x53,0xc2,
0xc5,0x3f,0x6,0xfc,0x4b,0x49,0xfb,0x5b,0xf,0xb8,0xae,0xef,0x5b,0xff,0x59,0x53,
0x80,0xf5,0x4a,0x8a,0x69,0x27,0xd2,0x92,0x87,0xbc,0xa5,0x8c,0xfd,0x99,0xd,0x5,
0x8a,0xd4,0x59,0xf7,0x24,0x5c,0xf8,0xa7,0x95,0xb4,0xbf,0x95,0x3b,0x37,0x6e,0x59,
0xa6,0x51,0xde,0x53,0xc9,0x69,0x9,0xfb,0x9b,0xe,0xac,0x56,0xc6,0xfe,0xcc,0xb2,
0x3,0x4e,0x4d,0xb8,0xe8,0x67,0x0,0xab,0x97,0xb4,0xbf,0xb,0xfb,0xbf,0xd7,0xc7,
0xf5,0xbd,0x92,0x62,0x9b,0x8,0xdc,0x9b,0xb0,0xbf,0x93,0xca,0xd8,0x9f,0x59,0x56,
0xc0,0xe,0xa4,0xe5,0xd0,0x2f,0x65,0x25,0x1d,0xd2,0x7e,0x6a,0xf4,0xab,0x94,0x1c,
0x84,0xc0,0xee,0x9,0xfb,0x5a,0x8,0xbc,0xa6,0x8c,0xfd,0x99,0x65,0x41,0x91,0xe4,
0xe3,0xa6,0x84,0x8b,0xbd,0xac,0x6f,0xd7,0x40,0xda,0xcc,0xc2,0x45,0xe6,0x76,0xfe,
0xa5,0xba,0xb6,0x8c,0x38,0x3b,0xb1,0xa6,0xbc,0x9c,0xbc,0x5,0x27,0xf,0xb1,0xa6,
0x2,0xbe,0x94,0x70,0x91,0xcf,0x4,0x9e,0x53,0xd2,0xfe,0x76,0x4c,0xd8,0xdf,0x18,
0x70,0x6,0x8b,0xd,0x31,0x6,0x36,0x3,0xce,0x24,0xed,0x5,0xdd,0xe,0x25,0xc5,
0xba,0x36,0x69,0x5d,0xa2,0xc7,0x95,0xb1,0x3f,0xb3,0x5a,0x1,0x5b,0x92,0x36,0xf8,
0x65,0xbf,0x12,0xf7,0x19,0xcb,0x2a,0x34,0x6,0xbc,0xbf,0xcb,0xdf,0x1f,0x40,0xbc,
0x11,0xf8,0x7c,0x89,0xf1,0xbe,0x27,0xe1,0xfc,0xcc,0x7,0x5e,0x51,0xd6,0x3e,0xcd,
0x2a,0x47,0x31,0xfc,0x35,0xe5,0x2d,0xfc,0x2f,0x4a,0xde,0xef,0xb5,0x91,0xfd,0x7d,
0x27,0xa1,0x8e,0x73,0x23,0x75,0x5c,0x53,0x72,0xcc,0x3f,0x49,0x38,0x4f,0xd7,0xd3,
0x82,0x61,0xd1,0x36,0x22,0x80,0x4f,0x26,0x5c,0xd4,0x8f,0x1,0x2f,0x2c,0x79,0xbf,
0xf7,0x47,0xf6,0x19,0xfd,0x26,0x5,0xb6,0x89,0xd4,0x71,0x5f,0xc9,0x31,0xaf,0xb,
0xcc,0x4e,0x38,0x5f,0x47,0x97,0xb9,0x5f,0xb3,0x4a,0x0,0x1b,0x93,0xf6,0x62,0xed,
0x43,0x15,0xec,0xfb,0x99,0x2e,0xfb,0x5b,0x48,0x42,0x5e,0x1,0x8a,0xa7,0x97,0x6e,
0xbd,0x16,0x4f,0x57,0x10,0xf7,0x61,0x9,0xe7,0xeb,0x69,0x60,0xd3,0xb2,0xf7,0x6d,
0x56,0x1a,0x8a,0x24,0x18,0x57,0x24,0x5c,0xcc,0x57,0x3,0xcb,0x94,0xbc,0xef,0x15,
0x22,0xfb,0x7c,0xa6,0x87,0xba,0x9e,0x8e,0xd4,0xb5,0x42,0xc9,0xb1,0xa7,0x9e,0xb7,
0xcb,0x70,0xf2,0x10,0x1b,0x56,0x64,0xfc,0x26,0xa3,0xe8,0x2,0xec,0x66,0xac,0x87,
0xba,0xba,0x3d,0x1,0x8c,0x55,0x71,0x13,0x92,0xfe,0xe4,0x74,0x68,0xd9,0xfb,0x36,
0x1b,0x18,0xc5,0xd8,0xfb,0x94,0xdf,0xb2,0x9f,0xa8,0x30,0x86,0x58,0xaf,0x43,0xf4,
0x45,0x1a,0xb0,0x7c,0xa4,0x8e,0xe4,0x27,0x89,0x3e,0xe2,0x4f,0x79,0x77,0x32,0x7,
0x58,0xbf,0xaa,0x18,0xcc,0xfa,0xc2,0x10,0xbc,0xcd,0x26,0x9e,0x60,0x34,0x3a,0x9e,
0x9f,0x62,0x71,0xd2,0x6e,0x1e,0xaf,0x30,0xfe,0xd4,0xde,0x93,0x9f,0x57,0x15,0x83,
0x59,0xcf,0x48,0xef,0xcf,0xde,0xa6,0xe2,0x38,0x1e,0x89,0xc4,0x10,0x5d,0x50,0x14,
0x58,0x23,0x52,0xc7,0xac,0x8a,0x8f,0x21,0x75,0xfc,0xc4,0x3e,0x55,0xc6,0x61,0x96,
0x84,0xf4,0x11,0x6d,0xc7,0xd7,0x10,0xcb,0x3,0x91,0x18,0xa2,0xcb,0x8a,0x1,0xcf,
0x8d,0xd4,0x71,0x7f,0xd,0xc7,0x91,0x32,0x82,0xf2,0x61,0x4a,0x1a,0x41,0x69,0xd6,
0x37,0xd2,0xc6,0xb4,0xdf,0xa,0xac,0x5c,0x43,0x2c,0xb1,0x29,0xc7,0xd1,0xdf,0xce,
0xc0,0xfa,0x91,0x3a,0xa6,0xd7,0x70,0x1c,0xa9,0x73,0x28,0x26,0x57,0x1d,0x8b,0xd9,
0xb8,0x48,0x9f,0xd5,0xf6,0xda,0x9a,0xe2,0xb9,0x3d,0x12,0xcb,0x46,0x9,0x75,0x6c,
0x14,0xa9,0xe3,0xb6,0x9a,0x8e,0x25,0x75,0x16,0xe5,0x9e,0x75,0xc4,0xd3,0x56,0xa5,
0xf6,0x45,0x8f,0x12,0x60,0xa2,0xa4,0x94,0x4,0x1e,0xa7,0x85,0x10,0x7e,0x57,0x75,
0x3c,0x1d,0xf3,0x22,0xdb,0x53,0xfa,0xef,0x63,0x65,0x62,0xfb,0x28,0x45,0x8,0xe1,
0x1a,0xa5,0x9d,0xdf,0x53,0x29,0x29,0x8f,0xc2,0x28,0x72,0x3,0xd0,0xbf,0xaf,0x48,
0x8a,0xe5,0xb2,0x9f,0x21,0xe9,0x3f,0x6b,0x88,0x65,0x91,0xd6,0x34,0x0,0x1d,0x9f,
0x90,0x74,0x4f,0xa4,0xcc,0xba,0x92,0x2a,0x7f,0xbf,0xd2,0x56,0x6e,0x0,0xfa,0x0,
0xec,0x24,0x29,0x65,0x35,0x9b,0xf,0x86,0x10,0x66,0x57,0x1d,0xcf,0x62,0x5a,0xd5,
0x0,0x84,0x10,0x1e,0x97,0x94,0x32,0xf0,0xe7,0x50,0x4a,0xca,0xa5,0x38,0x6a,0xdc,
0x0,0xf4,0x88,0xe2,0x65,0xde,0x59,0x92,0x62,0xa3,0xe1,0x26,0x87,0x10,0x2e,0xa9,
0x21,0xa4,0xc5,0xb5,0xaa,0x1,0x90,0xa4,0x10,0xc2,0x2f,0x25,0x9d,0x1f,0x2b,0x26,
0xe9,0x5b,0xd4,0xf0,0xa2,0xb5,0x6d,0xdc,0x0,0xf4,0xee,0x73,0x92,0x62,0x2b,0xda,
0xce,0x94,0x94,0x63,0xe9,0xeb,0xd6,0x35,0x0,0x1d,0x1f,0x91,0xf4,0x50,0xa4,0xcc,
0x3f,0x49,0xfa,0x74,0xd,0xb1,0xb4,0x8a,0x1b,0x80,0x1e,0x0,0x5b,0x49,0xfa,0xf7,
0x84,0xa2,0x87,0x87,0x10,0x62,0x17,0x6c,0x15,0xe6,0x47,0xb6,0x97,0xd1,0x0,0xc4,
0xf6,0x51,0xba,0x10,0xc2,0x2c,0xa5,0x9d,0xf7,0xa3,0xa8,0x78,0xb0,0x55,0xdb,0xb8,
0x1,0x48,0x4,0x2c,0x27,0xe9,0x1c,0x49,0xb1,0xa1,0xbc,0xbf,0x8,0x21,0x5c,0x58,
0x43,0x48,0x4b,0xd3,0xd6,0x27,0x0,0x85,0x10,0x2e,0x90,0xf4,0xe3,0x48,0xb1,0xe5,
0x24,0x9d,0x83,0x93,0x87,0x24,0x73,0x3,0x90,0xee,0x93,0x92,0xb6,0x8e,0x94,0x79,
0x4c,0x69,0x2f,0xad,0xaa,0xd2,0xda,0x6,0xa0,0xe3,0x30,0x49,0xb1,0x97,0xaa,0x5b,
0x48,0xfa,0x58,0xd,0xb1,0xb4,0x82,0x1b,0x80,0x4,0xc0,0x26,0x92,0x8e,0x49,0x28,
0x7a,0x74,0x8,0xe1,0xde,0xaa,0xe3,0xe9,0x22,0x76,0x73,0xa6,0x7c,0x33,0xe,0x6d,
0x3,0x10,0x42,0x98,0xa1,0xa2,0x6b,0x30,0xe6,0xd3,0x2c,0x96,0xf4,0xd4,0xc6,0xe7,
0x6,0x20,0x82,0x22,0x71,0xc7,0x59,0x92,0x62,0xe9,0xa9,0x2f,0x97,0x74,0x46,0xf5,
0x11,0x75,0xd5,0xf6,0x27,0x0,0xa9,0x38,0xc7,0x97,0x46,0xca,0xac,0x28,0xe9,0x6c,
0x4a,0x4e,0xba,0xd2,0x46,0x3e,0x41,0x71,0x1f,0x96,0x14,0x5b,0xa0,0xe2,0x19,0x49,
0x87,0x86,0x10,0xa8,0x21,0x9e,0x6e,0x5a,0xdf,0x0,0x74,0xce,0xf1,0x41,0x92,0x9e,
0x8c,0x14,0xdd,0x5e,0xd2,0x7,0xab,0x8f,0xa8,0xd9,0xdc,0x0,0x74,0x1,0xbc,0x48,
0x52,0x4a,0x5e,0xfa,0x4f,0x85,0x10,0x6e,0xa9,0x3a,0x9e,0x4,0xad,0x6f,0x0,0x24,
0x29,0x84,0x70,0x97,0xa4,0x94,0xf4,0xe4,0x27,0x0,0x1b,0x54,0x1d,0x4f,0x93,0xb9,
0x1,0xe8,0xee,0x74,0x49,0xb1,0x45,0x2a,0xaf,0x97,0xf4,0x8d,0x1a,0x62,0x49,0x31,
0x12,0xd,0x40,0xc7,0x57,0x25,0x4d,0x89,0x94,0x59,0x45,0xd2,0x29,0x35,0xc4,0xd2,
0x58,0x6e,0x0,0xc6,0x1,0xbc,0x4f,0xd2,0x6e,0x91,0x62,0xb,0x24,0x1d,0x18,0x42,
0xa8,0xbd,0x6f,0x7c,0x1c,0x23,0xd3,0x0,0x84,0x10,0x16,0x4a,0x3a,0x50,0xf1,0x71,
0x9,0x6f,0x2,0xf6,0xaf,0x21,0xa4,0x46,0x72,0x3,0xb0,0x14,0xc0,0x3a,0x2a,0x26,
0xfb,0xc4,0x7c,0x39,0x84,0xf0,0xc7,0xaa,0xe3,0xe9,0xc1,0xc8,0x34,0x0,0x92,0x14,
0x42,0xb8,0x41,0xd2,0x9,0x9,0x45,0xbf,0x4e,0x42,0x32,0x94,0x51,0xe4,0x6,0x60,
0xe9,0x4e,0x95,0xb4,0x76,0xa4,0xcc,0xad,0x92,0xbe,0x58,0x43,0x2c,0xbd,0x88,0x7d,
0x1b,0xa6,0x74,0x3,0xc6,0xca,0xc,0xcb,0xd3,0xce,0x22,0xc7,0x49,0xba,0x29,0x52,
0x66,0x2d,0x49,0x27,0xd6,0x10,0x4b,0xe3,0xb8,0x1,0x58,0x2,0xb0,0x87,0xa4,0x7f,
0x8d,0x14,0x1b,0x93,0xf4,0x81,0x10,0x42,0xe9,0x8b,0x64,0xc,0x68,0xa4,0x9e,0x0,
0x24,0x29,0x84,0xf0,0x8c,0x8a,0x9f,0x2,0xb,0x23,0x45,0xdf,0x45,0x49,0x4b,0xb0,
0xb7,0x89,0x1b,0x80,0xc5,0x0,0x93,0x94,0x96,0x84,0xe2,0xe4,0x10,0xc2,0x95,0x55,
0xc7,0xd3,0x87,0x91,0x6b,0x0,0x24,0x29,0x84,0xf0,0xff,0x2a,0x9e,0xda,0x62,0x4e,
0x25,0x21,0x31,0xea,0x28,0x71,0x3,0xf0,0xf7,0xbe,0x2a,0x69,0xbd,0x48,0x99,0x7b,
0x24,0x1d,0x5b,0x43,0x2c,0xfd,0x18,0xc9,0x6,0xa0,0xe3,0x93,0x92,0xee,0x8c,0x94,
0x79,0xbe,0xa4,0x2f,0xd7,0x10,0x4b,0x63,0xb8,0x1,0xe8,0x0,0x76,0x96,0x74,0x40,
0x42,0xd1,0x43,0x3a,0x89,0x2a,0x86,0xd1,0xc8,0x36,0x0,0x21,0x84,0x27,0x55,0xc,
0x10,0x8a,0xd,0xc6,0x3a,0x8,0x78,0x7d,0xd,0x21,0x35,0x82,0x1b,0x0,0x49,0xc0,
0x4,0x49,0x67,0x2a,0x9e,0xe4,0xe3,0xdc,0x10,0xc2,0xaf,0x6a,0x8,0xa9,0x5f,0x23,
0xdb,0x0,0x48,0x52,0x8,0xe1,0xb7,0x92,0xbe,0x1b,0x2b,0x26,0xe9,0xc,0x12,0x16,
0x49,0x19,0x5,0x6e,0x0,0xa,0xc7,0x49,0x8a,0x65,0xcc,0x9d,0xa9,0xe1,0x9f,0x65,
0x36,0xd2,0xd,0x40,0xc7,0x91,0x92,0x1e,0x8c,0x94,0xd9,0x40,0xd2,0x67,0xab,0xf,
0x65,0xf8,0x8d,0x7c,0x3,0x0,0x6c,0x2b,0xe9,0x88,0x84,0xa2,0x1f,0xa,0x21,0x3c,
0x5c,0x75,0x3c,0x3,0x1a,0xf9,0x6,0x20,0x84,0xf0,0x88,0xa4,0xc3,0x13,0x8a,0x1e,
0x9,0xec,0x50,0x75,0x3c,0xc3,0x6e,0xa4,0x1b,0x0,0x8a,0x65,0xae,0xcf,0x96,0xb4,
0x6c,0xa4,0xe8,0xcf,0x42,0x8,0x17,0xd5,0x10,0xd2,0xa0,0x46,0xbe,0x1,0x90,0xa4,
0xce,0x67,0xf5,0xa3,0x48,0xb1,0x65,0x24,0x9d,0x4e,0xc9,0x4b,0x9d,0x37,0xcd,0x48,
0x37,0x0,0x2a,0xe6,0xf8,0xbf,0x2c,0x52,0x66,0x8e,0xf2,0x26,0xf9,0xe8,0x85,0x1b,
0x80,0x67,0x1d,0x26,0xe9,0xd1,0x48,0x99,0x97,0x4b,0xfa,0x78,0xd,0xb1,0xc,0xad,
0x91,0x6d,0x0,0x80,0x97,0x2a,0x2d,0xb9,0xc4,0x51,0x21,0x84,0xfb,0xaa,0x8e,0xa7,
0x24,0x65,0x34,0x0,0xb1,0x91,0x80,0x8d,0x68,0x0,0x42,0x8,0xf7,0x4b,0x3a,0x3a,
0xa1,0xe8,0xb1,0xc0,0xe6,0x55,0xc7,0x33,0xac,0x46,0xb2,0x1,0xe8,0x24,0x8a,0x38,
0x5b,0x45,0xe2,0x88,0x6e,0x2e,0xeb,0x94,0x6b,0xa,0x3f,0x1,0xfc,0xbd,0xb3,0x25,
0xfd,0x4f,0xa4,0xcc,0xa,0x2a,0x92,0x87,0xc4,0x7e,0x6,0xb6,0xd2,0x48,0x36,0x0,
0x2a,0x32,0xcc,0xbe,0x3a,0x52,0x66,0xae,0xa4,0x83,0x86,0x20,0xc9,0x47,0x2f,0xdc,
0x0,0x2c,0xa6,0xf3,0xd9,0x1d,0x2c,0xe9,0x89,0x48,0xd1,0xed,0x54,0x24,0x7e,0xb1,
0xb6,0x3,0x5e,0xc,0x3c,0x9e,0xb0,0xe8,0xe4,0x91,0xb9,0x63,0xed,0x15,0xb0,0x55,
0xe4,0x98,0xa6,0x26,0xd4,0x31,0x35,0x52,0xc7,0x96,0x75,0x1c,0x4b,0x99,0x80,0x23,
0x13,0x3e,0xef,0x27,0x81,0xd,0x73,0xc7,0x6a,0x15,0x2,0x2,0xf0,0xeb,0x84,0x8b,
0xe1,0x5a,0x1a,0xf8,0x48,0x8,0x6c,0x16,0x39,0xae,0x1b,0x13,0xea,0xb8,0x31,0x52,
0xc7,0xa6,0x75,0x1c,0x4b,0x99,0x80,0x65,0x80,0xab,0x12,0x3e,0xf7,0x4b,0x81,0xd8,
0x60,0xb0,0x56,0x19,0xb5,0x9f,0x0,0x7,0x48,0xda,0x35,0x52,0x66,0x81,0x8a,0xe1,
0xbe,0xb1,0xd9,0x65,0xc3,0xc8,0x3f,0x1,0x96,0x22,0x84,0x30,0x26,0xe9,0x3,0x2a,
0x72,0x37,0x76,0xb3,0x8b,0xa4,0xf7,0x56,0x1f,0x91,0xd5,0xe,0x78,0x1e,0xf0,0x48,
0xc2,0xb7,0xc0,0x67,0x73,0xc7,0xda,0x2f,0xe0,0x85,0x91,0x63,0x9b,0x9e,0x50,0xc7,
0xf4,0x48,0x1d,0xeb,0xd7,0x71,0x2c,0x55,0x0,0x3e,0x9b,0xf0,0xf9,0xcf,0x6,0x62,
0x13,0xc2,0xac,0x69,0x80,0x1f,0x26,0x7c,0xf8,0x37,0x3,0xb1,0xf4,0xdf,0x43,0x8b,
0xa2,0x91,0xeb,0xe6,0xfe,0x84,0x3a,0xee,0x8f,0xd4,0xd1,0xd8,0xcc,0x3a,0xc0,0xa,
0xc0,0x9f,0x12,0xae,0x83,0x26,0xc,0xfa,0xb2,0x54,0xc0,0xde,0x9,0x1f,0xfa,0x42,
0x60,0xc7,0xdc,0xb1,0xe,0x2,0x58,0x33,0x72,0x8c,0xb3,0x12,0xea,0x98,0x15,0xa9,
0xa3,0xd1,0xf3,0xe9,0x81,0x6d,0x81,0x5,0x9,0xd7,0xc3,0x5e,0xb9,0x63,0xb5,0x12,
0x0,0x93,0x80,0xfb,0x12,0x3e,0xf0,0xaf,0xe5,0x8e,0x75,0x50,0xc0,0xaa,0x91,0x63,
0x8c,0x4e,0x63,0x26,0xde,0x43,0xb2,0x6a,0x1d,0xc7,0x52,0x25,0xe0,0x6b,0x9,0xd7,
0xc3,0xfd,0x34,0xbc,0xb1,0x33,0x49,0xc0,0xb7,0x13,0x3e,0xec,0xbb,0x5a,0x72,0x61,
0xaf,0x18,0x39,0xce,0xd8,0x4b,0x30,0x1,0xcf,0x44,0xea,0x68,0xfc,0xd8,0x79,0x60,
0x2,0x70,0x7b,0xc2,0x75,0xd1,0xa4,0x41,0x60,0xb6,0x24,0x60,0x17,0x60,0x2c,0xe1,
0x83,0x8e,0xf5,0xc,0x34,0x2,0x45,0x37,0x67,0xb7,0xe3,0x1d,0xa3,0x4b,0x37,0xd7,
0xa0,0x7f,0xdf,0x24,0xc0,0xce,0x9,0xd7,0xc6,0x58,0x5b,0xae,0x8d,0x91,0x43,0xd1,
0xca,0xdf,0x91,0x70,0xf3,0xb7,0xaa,0x95,0x7,0xe6,0x45,0x8e,0x77,0xdc,0xb1,0xfe,
0x14,0x2f,0xc9,0xba,0x89,0x3e,0x41,0x34,0x9,0x70,0x76,0xc2,0xf5,0x71,0x17,0x2d,
0x78,0x3a,0x1c,0x39,0xc0,0x89,0x9,0x1f,0x6e,0xeb,0x7e,0xe7,0x1,0x4f,0x44,0x8e,
0x79,0xdc,0x4c,0x38,0x94,0xf0,0xe,0xa1,0x49,0x28,0xde,0xf,0xfd,0x35,0xe1,0x3a,
0x69,0xfc,0xfb,0xa1,0x91,0x2,0x6c,0xc7,0x88,0xbe,0xe9,0x25,0x3e,0xd6,0x61,0xdc,
0x6,0x8f,0x12,0x7a,0x11,0x9a,0x6,0x78,0x4b,0xc2,0x75,0xd2,0xf8,0x1e,0xa2,0x91,
0x41,0xf1,0x22,0xec,0xcf,0x9,0x1f,0x6a,0x2b,0xfb,0x7a,0x81,0x7,0x22,0xc7,0x3d,
0x6e,0x3f,0x3e,0x25,0x8c,0x23,0x68,0x22,0xe0,0xa2,0x84,0xeb,0xa5,0xd1,0x63,0x44,
0xc6,0xd3,0xc6,0xa1,0xc0,0xc7,0x4a,0x8a,0xcd,0xef,0x9e,0xa3,0x62,0x46,0x60,0x1b,
0xd,0x32,0x1c,0xb8,0x75,0xc3,0x80,0x13,0x1d,0x2e,0xe9,0x91,0x48,0x99,0xd4,0xfc,
0x11,0x96,0xb,0xf0,0x72,0xe2,0xdd,0x58,0x50,0x2c,0xfc,0xd9,0x4a,0xc4,0xbb,0xb7,
0xc6,0x4d,0x7e,0xa,0xbc,0x24,0xf2,0xb7,0xb7,0xd5,0x79,0x2c,0x75,0x2,0xde,0x9f,
0x70,0xdd,0xcc,0x7,0xb6,0xca,0x1d,0xab,0x2d,0x5,0xb0,0x2c,0xf0,0xfb,0x84,0xf,
0xb1,0xd5,0x33,0xbe,0x80,0x9b,0x22,0xc7,0x3f,0xee,0x6c,0x3e,0x4a,0x98,0x4d,0xd8,
0x64,0xc0,0xaf,0x12,0xae,0x9f,0x46,0xce,0x14,0x1d,0x4f,0x9b,0x7e,0x2,0x1c,0x29,
0xe9,0x55,0x91,0x32,0x73,0x25,0x1d,0xdc,0xb0,0x24,0x1f,0xbd,0xf2,0x4f,0x80,0xfe,
0x1d,0xa2,0x78,0xf2,0x90,0x6d,0x25,0x7d,0xa4,0x86,0x58,0x6a,0xd1,0x8a,0x6,0x0,
0xd8,0x40,0xd2,0x67,0x12,0x8a,0x1e,0x13,0x42,0xb8,0xa3,0xea,0x78,0x32,0x73,0x3,
0xd0,0xa7,0x10,0xc2,0x74,0xa5,0x2d,0xfb,0xf6,0x5,0xe0,0x25,0x55,0xc7,0x53,0x87,
0xc6,0x37,0x0,0x9d,0xc7,0xf9,0x33,0x24,0xc5,0x56,0x7a,0xb9,0x56,0xd2,0xc9,0xd5,
0x47,0x94,0x9d,0x1b,0x80,0xc1,0x9c,0x24,0x29,0xb6,0xf0,0xeb,0x4,0x49,0x67,0xb6,
0xe1,0xa7,0x64,0xe3,0x1b,0x0,0x15,0xeb,0xc1,0xc5,0xd6,0x7a,0x9b,0x27,0xe9,0xc0,
0x86,0x26,0xf9,0xe8,0x95,0x1b,0x80,0x1,0x2c,0x96,0x3c,0x24,0xb6,0xf4,0xfb,0xeb,
0x94,0xb6,0x96,0xe4,0x50,0x6b,0x74,0x3,0x0,0xa4,0xae,0xf6,0xfa,0xc5,0x10,0x42,
0xab,0x5f,0x60,0x2d,0xc6,0xd,0xc0,0x80,0x42,0x8,0xb7,0x4a,0xfa,0x52,0x42,0xd1,
0xaf,0xd2,0xf0,0xe4,0x21,0x8d,0x6e,0x0,0x54,0xac,0x9,0x1f,0x1b,0xca,0xfb,0x27,
0x8d,0xd6,0x92,0xd0,0x6e,0x0,0xca,0x71,0xbc,0xa4,0x58,0x12,0xd5,0x49,0x92,0x4e,
0xab,0x21,0x96,0xca,0x34,0xb6,0x1,0x0,0xde,0x2d,0xe9,0x6d,0x91,0x62,0x63,0x2a,
0xf2,0xfb,0x8d,0xd2,0x85,0x1b,0x7b,0x74,0x9d,0xd4,0x65,0xdb,0xc4,0xc8,0xdf,0xb6,
0x6a,0x32,0x50,0x37,0x21,0x84,0x5,0x92,0xe,0x54,0x91,0x23,0xb2,0x9b,0x3d,0x80,
0xbd,0x6b,0x8,0xa9,0x12,0x8d,0x6c,0x0,0x80,0xb5,0x24,0x7d,0x23,0xa1,0xe8,0xd7,
0x42,0x8,0xd7,0x54,0x1d,0xcf,0x90,0xf9,0x6b,0x64,0xfb,0xf6,0x5d,0xb6,0xc5,0x16,
0xcb,0x8c,0xd5,0xdd,0x2a,0x21,0x84,0xa9,0x4a,0xbb,0xce,0x4e,0x5,0xd6,0xa9,0x3a,
0x1e,0xeb,0x0,0xce,0x4b,0x18,0xb0,0x71,0x27,0x23,0xb8,0x6,0x3c,0x70,0x44,0xe4,
0xbc,0xcc,0x5,0x36,0x5b,0xca,0xdf,0x6d,0xe,0x3c,0x15,0xf9,0xdb,0x94,0x55,0x77,
0x5b,0x5,0x58,0x19,0xb8,0x2d,0xe1,0x7a,0xfb,0x4e,0xee,0x58,0x47,0x2,0xf0,0xa6,
0x84,0xf,0x63,0xc,0x88,0xf5,0xc,0xb4,0x12,0xb0,0x45,0xc2,0xf9,0x99,0x9,0x1c,
0x0,0xac,0xdb,0xf9,0x77,0x60,0xe7,0xbf,0xc5,0xc4,0x16,0x52,0x6d,0x25,0x60,0x27,
0xd2,0x12,0xcb,0xbc,0x31,0x77,0xac,0xad,0x6,0xac,0x42,0xf1,0xcd,0x1e,0x73,0x46,
0xee,0x58,0x73,0x22,0x3e,0x1c,0xb8,0x1f,0x37,0xe7,0x3e,0xae,0x9c,0x80,0x33,0x12,
0xce,0xd1,0x74,0x60,0xb5,0xdc,0xb1,0xb6,0x16,0x70,0x72,0xc2,0x87,0x30,0x83,0x96,
0x25,0xf9,0xe8,0x15,0x70,0xf0,0x0,0x37,0xfa,0x78,0xe,0xca,0x7d,0x5c,0x39,0x1,
0x13,0x81,0x7b,0x13,0xce,0xd3,0x89,0xb9,0x63,0x6d,0x25,0x60,0x7,0x8a,0xc4,0xc,
0x31,0x6f,0xcf,0x1d,0x6b,0x6e,0x14,0x13,0xa3,0xa6,0xf5,0x7f,0xaf,0xff,0x83,0xeb,
0x69,0xd1,0x4,0x98,0x7e,0x1,0xbb,0x27,0x9c,0xab,0x85,0xc0,0x6b,0x72,0xc7,0xda,
0x2a,0x14,0x49,0x3e,0x62,0x6b,0xd6,0x1,0x5c,0x98,0x3b,0xd6,0x61,0x41,0x31,0xb3,
0x6f,0x76,0xdf,0xb7,0xfc,0xb3,0x1e,0x3,0x5e,0x9e,0xfb,0x78,0x86,0x5,0x70,0x61,
0xc2,0x39,0xbb,0x85,0x16,0x26,0xf,0xc9,0x6,0x38,0x3e,0xe1,0xa4,0xcf,0xa4,0xc1,
0xab,0xd6,0x54,0x1,0x78,0x23,0xf1,0x37,0xfb,0xdd,0xcc,0x5,0x76,0xcb,0x7d,0x1c,
0xc3,0x4,0x58,0x1b,0x78,0x28,0xe1,0xdc,0x7d,0x21,0x77,0xac,0xad,0x0,0x6c,0x49,
0x3c,0xd3,0x2d,0xc0,0xfe,0xb9,0x63,0x1d,0x46,0xc0,0xd6,0xc0,0xdd,0x7d,0xdc,0xfc,
0xf7,0x2,0xdb,0xe6,0x8e,0x7f,0x18,0x1,0xfb,0x27,0x9c,0xbf,0xf9,0xc0,0x2b,0x72,
0xc7,0xda,0x68,0xc0,0x72,0xc0,0x94,0x84,0x93,0xfd,0xcb,0xdc,0xb1,0xe,0x33,0x60,
0xd,0xe0,0x4,0x8a,0x6f,0xf4,0x98,0x27,0x81,0x2f,0x1,0xab,0xe7,0x8e,0x7b,0x98,
0x1,0x97,0x24,0x9c,0xcb,0xa9,0x74,0x49,0xc3,0x6e,0x11,0xc0,0x27,0x12,0x4e,0xf2,
0x13,0xc0,0x86,0xb9,0x63,0x6d,0x2,0x60,0x1d,0x8a,0x3e,0xff,0x8b,0x29,0xde,0xa9,
0x3c,0xd6,0xf9,0x77,0x63,0xe7,0xbf,0x1d,0x0,0xac,0x9d,0x3b,0xce,0x26,0xa0,0x58,
0x89,0xf9,0xb1,0x84,0xeb,0xf3,0x63,0xb9,0x63,0x6d,0x24,0x60,0x63,0xd2,0xbe,0xb1,
0x3e,0x9c,0x3b,0x56,0x1b,0x4d,0xc0,0x87,0x13,0xae,0xcf,0xa7,0x81,0x97,0xe6,0x8e,
0xb5,0x51,0x80,0x65,0x80,0xcb,0x13,0x4e,0xee,0x35,0x40,0x23,0xe7,0x33,0x58,0xf3,
0x75,0xae,0xd3,0x2b,0x12,0xae,0xd3,0xcb,0x68,0x41,0xf2,0x90,0xda,0x0,0x1f,0x4a,
0x6c,0x59,0xff,0x61,0x4c,0xbb,0x59,0x9d,0x28,0x9e,0x54,0x53,0x7a,0x5a,0xe,0xc9,
0x1d,0x6b,0x23,0x50,0x8c,0x4d,0x7f,0x34,0xe1,0x84,0x1e,0x93,0x3b,0x56,0x33,0x49,
0x2,0x8e,0x49,0xb8,0x5e,0xe7,0x0,0xeb,0xe7,0x8e,0x75,0xe8,0x1,0x3f,0x49,0x38,
0x99,0xd3,0xf0,0xdb,0x55,0x1b,0x12,0x14,0xbd,0x55,0xd7,0x25,0x5c,0xb7,0x3f,0xcf,
0x1d,0xeb,0x50,0x3,0xf6,0x4b,0x38,0x89,0xf3,0x81,0x57,0xe6,0x8e,0xd5,0x6c,0x71,
0xa4,0x8f,0x57,0x79,0x77,0xee,0x58,0x87,0x12,0xc5,0x8,0xab,0x7,0x13,0x4e,0xe0,
0x28,0xa5,0xf7,0xb2,0x6,0x1,0xbe,0x9c,0x70,0xfd,0x3e,0xc,0x3c,0x27,0x77,0xac,
0x43,0x7,0xf8,0x5e,0xc2,0xc9,0xfb,0xb,0xb0,0x72,0xee,0x58,0xcd,0x96,0x86,0x62,
0xce,0x4a,0xca,0x54,0xec,0xf3,0x72,0xc7,0xba,0xc8,0x50,0x74,0x4d,0x0,0x6f,0x96,
0x14,0xfb,0x7d,0x84,0xa4,0x37,0x84,0x10,0x2e,0xad,0x21,0xa4,0xd6,0xa2,0xe8,0x36,
0xdd,0x40,0xd2,0x46,0x7a,0x36,0x3f,0xe0,0x6c,0x49,0x77,0x48,0xba,0xab,0xe5,0xab,
0x26,0x55,0xe,0xd8,0x41,0xc5,0xba,0x2,0xb1,0xee,0xe9,0x3d,0x43,0x8,0x97,0xd4,
0x10,0xd2,0x70,0xa3,0x98,0x67,0x7d,0x4f,0x42,0xab,0xf9,0xad,0xdc,0xb1,0x36,0x15,
0x45,0x7f,0xf5,0x6e,0xc0,0x69,0x14,0xf9,0x12,0xc6,0x73,0x1f,0xf0,0x2d,0x60,0x57,
0xdc,0x6f,0xdd,0x37,0xe0,0xd4,0x84,0xeb,0xf9,0x3e,0x3c,0xdc,0x5a,0xea,0x5c,0x94,
0x3e,0x59,0x15,0x1,0x5e,0x4f,0xda,0x1b,0xea,0x25,0xfd,0x19,0xd8,0x23,0x77,0xfc,
0x4d,0x44,0xfa,0x97,0xda,0x29,0xb9,0x63,0xcd,0x8a,0xf4,0x5c,0x6b,0x7b,0xe6,0x8e,
0xb5,0x69,0x28,0xd2,0xa7,0x5d,0xd4,0xc7,0x8d,0xbf,0xa4,0xef,0x33,0x82,0xc9,0x55,
0x7,0x45,0x5a,0xee,0xca,0x85,0xc0,0x6b,0x73,0xc7,0x9a,0x5,0xe9,0x2f,0x4c,0xce,
0xcf,0x1d,0x6b,0xd3,0x0,0xeb,0x91,0x36,0x8b,0x32,0xd5,0x34,0xe0,0x45,0xb9,0x8f,
0xab,0x69,0x80,0xf3,0x13,0xce,0xed,0xad,0x8c,0xe2,0x8b,0x6d,0x8a,0xe9,0xa9,0x31,
0x33,0x71,0x97,0x49,0x4f,0x80,0xb5,0x80,0xdb,0xfb,0xbe,0xd5,0xc7,0x77,0x17,0xce,
0x7d,0xdf,0x93,0xce,0x67,0x91,0xd2,0xb5,0x7d,0x7c,0xee,0x58,0x6b,0x5,0x6c,0x4a,
0x31,0xa0,0x27,0x66,0xbf,0xdc,0xb1,0x36,0x9,0xb0,0x3c,0xf0,0xdb,0x7e,0xef,0xf0,
0x4,0x57,0x0,0xb1,0xe5,0xc3,0x6c,0x31,0xc0,0xbe,0x9,0xe7,0x75,0x3e,0xa3,0x34,
0x63,0x10,0xf8,0x79,0xc2,0x49,0xf9,0x45,0xee,0x38,0x9b,0x6,0xf8,0xe2,0x0,0x37,
0x77,0xaa,0xcf,0xe5,0x3e,0xce,0xa6,0x1,0x7e,0x9c,0x70,0x5e,0x47,0xa3,0x4b,0x10,
0xd8,0x25,0xe1,0x64,0x78,0xe2,0x44,0x8f,0x28,0x7e,0xf7,0xa7,0xe4,0x4f,0x58,0xe4,
0x6,0x8a,0x79,0x17,0x3f,0xe9,0xfc,0xef,0x54,0x4f,0x50,0xac,0xca,0x6c,0x89,0x48,
0x9f,0xe0,0xd6,0xfe,0xc5,0x6c,0x80,0x3f,0x24,0x9c,0x88,0xf,0xe6,0x8e,0xb3,0x69,
0x48,0x5b,0xb8,0x62,0xc,0x38,0x87,0xa5,0x64,0x50,0x2,0x36,0x4,0xbe,0x4d,0x5a,
0xaf,0x8c,0xc7,0x64,0xf4,0x8,0x38,0x34,0xe1,0xbc,0xb6,0x7b,0x1d,0x4b,0x60,0x9b,
0x84,0x93,0x70,0x15,0x4e,0xf2,0xd1,0x13,0x8a,0x1e,0x95,0x58,0x7a,0xaa,0xf9,0xc0,
0x3e,0x9,0x75,0xed,0x43,0xfc,0xfd,0xcc,0x1c,0xfc,0x2e,0xa0,0x27,0x40,0x0,0xae,
0x4c,0xb8,0xfe,0xb7,0xcc,0x1d,0x6b,0x65,0x88,0xf,0xfa,0x19,0xc3,0x99,0x68,0x7b,
0x6,0xbc,0x39,0xe1,0xc2,0x3a,0xa2,0x87,0xfa,0x62,0xb,0x8c,0x82,0xd3,0x85,0xf7,
0x8c,0x22,0x43,0x73,0x6c,0x71,0x9b,0x93,0x72,0xc7,0x59,0x9,0x60,0x2,0xc5,0x37,
0x47,0x37,0x43,0x33,0x49,0xa2,0x49,0x80,0x53,0x22,0xe7,0xf5,0x7a,0x7a,0x78,0xaa,
0xa2,0x18,0x3a,0x7c,0x7d,0xa4,0xce,0x6f,0x56,0x79,0x4c,0x6d,0x5,0x4c,0x8e,0x9c,
0xd7,0x47,0xa9,0x71,0x5c,0x40,0x9d,0x8f,0xda,0xaf,0x95,0x34,0x31,0x52,0x26,0x65,
0x2d,0x76,0xfb,0x47,0xb1,0x95,0x7b,0xce,0xa,0x21,0x8c,0xa5,0x56,0xd6,0x29,0x7b,
0x76,0xa4,0xd8,0x48,0xae,0x14,0x5c,0x82,0xd8,0x35,0xbe,0xba,0xa4,0x1d,0xea,0x8,
0x44,0xaa,0xb7,0x1,0xd8,0x29,0xb2,0x7d,0x5a,0x8,0xe1,0xba,0x5a,0x22,0x69,0x9f,
0x75,0x23,0xdb,0xaf,0xea,0xa3,0xce,0xdf,0x45,0xb6,0xbf,0xa0,0x8f,0x3a,0x47,0x5e,
0x8,0x61,0x8a,0xa4,0xa9,0x91,0x62,0xb1,0x7b,0xa5,0x34,0x75,0x36,0x0,0xff,0x1c,
0xd9,0x7e,0x41,0x2d,0x51,0xb4,0xd3,0x84,0xc8,0xf6,0x87,0xfb,0xa8,0x33,0xf6,0x37,
0x9e,0x1f,0xd0,0xbf,0x1f,0x44,0xb6,0xb7,0xab,0x1,0xe8,0xfc,0xfe,0x8c,0xa5,0xf1,
0xba,0xbc,0x8e,0x58,0x5a,0xea,0xa9,0xc8,0xf6,0x35,0xfb,0xa8,0x33,0xf6,0x37,0xb1,
0x7d,0xda,0xf8,0x62,0xd7,0xfa,0xab,0xa8,0x69,0x3a,0x76,0x5d,0x4f,0x0,0xeb,0x48,
0x5a,0xb1,0xcb,0xf6,0xa7,0x24,0xf9,0xf1,0xbf,0x7f,0xf,0x46,0xb6,0xf7,0xd3,0xb3,
0xb2,0x5d,0x64,0xfb,0x3,0x7d,0xd4,0x69,0x85,0x29,0x92,0x9e,0xee,0xb2,0x7d,0x82,
0xfa,0x6b,0xb4,0x7b,0x56,0x57,0x3,0xb0,0x5e,0x64,0xfb,0x3d,0x21,0x84,0xf9,0xb5,
0x44,0xd2,0x4e,0x37,0x46,0xb6,0xbf,0xaf,0x8f,0x3a,0x63,0x7f,0x13,0xdb,0xa7,0x8d,
0xa3,0x73,0xad,0xdf,0x1b,0x29,0x56,0xcb,0x3b,0x96,0xba,0x1a,0x80,0xd8,0x4b,0xaa,
0x19,0xb5,0x44,0xd1,0x5e,0xb1,0xc5,0x51,0x77,0x4,0xf6,0x4d,0xad,0xac,0x53,0x76,
0xc7,0x1,0xf7,0x69,0xdd,0xdd,0x17,0xd9,0x1e,0xfb,0xd2,0x2c,0x45,0x5d,0xd,0x40,
0x2c,0x87,0xff,0x9c,0x5a,0xa2,0x68,0xaf,0x5f,0x2b,0xfe,0x9b,0xfc,0x4c,0xe0,0x75,
0xb1,0x8a,0x3a,0x65,0xce,0x8c,0x14,0x9b,0x2b,0xe9,0x37,0x49,0x91,0xd9,0x78,0x66,
0x47,0xb6,0xd7,0xb2,0xee,0x45,0x5d,0xd,0xc0,0xbc,0xc8,0x76,0xf,0x2b,0x1d,0x40,
0x8,0xe1,0x49,0x49,0x3f,0x8a,0x14,0x9b,0x20,0xe9,0x37,0xc0,0xe7,0x81,0xd5,0x96,
0xdc,0x8,0xac,0x6,0x7c,0x5e,0xc5,0x8d,0x1d,0xeb,0x55,0xb8,0x38,0x84,0x30,0xb7,
0xbf,0x68,0xad,0x63,0xa5,0xc8,0xf6,0x6e,0xef,0x8,0x4a,0xb3,0x5c,0x1d,0x3b,0x51,
0xfc,0x60,0x46,0x2f,0x23,0x4a,0xf9,0x3e,0x23,0x69,0x6f,0x75,0xff,0xe6,0x58,0x5e,
0xd2,0xa7,0x24,0x1d,0x5,0x5c,0x26,0xe9,0xb6,0xce,0x7f,0xdf,0x58,0x45,0xd7,0x53,
0xca,0xe7,0x30,0xaf,0xb3,0x2f,0x1b,0x4c,0xac,0x1,0x78,0xa6,0x96,0x28,0xea,0x0,
0x6c,0x17,0x19,0xfe,0x78,0x77,0xee,0x18,0xdb,0x0,0x38,0x39,0x72,0x9e,0xcb,0xe0,
0xd1,0x9a,0x25,0x0,0xee,0x8e,0x9c,0xe7,0x6d,0x72,0xc7,0x58,0x1a,0x60,0x52,0xe4,
0x60,0xc7,0x58,0xca,0x63,0xa9,0xf5,0x6,0x58,0x95,0x22,0x7f,0x5f,0x55,0xa6,0xe2,
0x4,0xa1,0x3,0xeb,0x7c,0x4e,0xdd,0xa6,0x5d,0xd7,0x76,0x3f,0xd4,0xf2,0xe,0x20,
0x84,0x30,0x47,0xdd,0xdf,0x7a,0x6,0x49,0xaf,0xa8,0x23,0x96,0x36,0xb,0x21,0x3c,
0x21,0xe9,0xad,0x92,0x1e,0xaa,0xa0,0xfa,0x99,0x92,0xf6,0xea,0xbc,0x6f,0xb0,0xc1,
0x6c,0xa3,0xee,0x8b,0xf2,0xdc,0x1b,0x42,0x78,0xbc,0x8e,0x40,0xea,0x1c,0xa,0x7c,
0x53,0x64,0xfb,0x5b,0x6b,0x89,0xa2,0xe5,0x42,0x8,0xd3,0x25,0xbd,0x41,0xd2,0xf4,
0x12,0xab,0xbd,0x5b,0xd2,0x2e,0x21,0x84,0xbb,0x4a,0xac,0x73,0x94,0xc5,0xd2,0xdc,
0xd7,0x36,0xc6,0xa2,0xce,0x6,0x20,0x36,0xb9,0x64,0x4f,0xbc,0x1a,0x4d,0x29,0x42,
0x8,0x37,0xa8,0x18,0xfd,0x77,0x65,0x9,0xd5,0x5d,0x2e,0x69,0xdb,0x10,0xc2,0x9f,
0x4a,0xa8,0x6b,0xe4,0x75,0xae,0xf1,0xd8,0x97,0x5d,0x3f,0x93,0xb7,0x86,0x1b,0xb0,
0x45,0xc2,0x6f,0xcc,0xdd,0x73,0xc7,0xd9,0x26,0x14,0xf3,0xfa,0xf7,0x6,0xee,0xec,
0xe3,0xf7,0xfe,0xbd,0xc0,0xc1,0xc0,0xb2,0xb9,0x8f,0xa3,0x4d,0x80,0xdd,0x13,0xce,
0xfd,0xe6,0xb9,0xe3,0xac,0x44,0xc2,0x85,0x78,0x45,0xee,0x18,0xdb,0x8,0x58,0x19,
0xf8,0x0,0xf0,0x33,0xe0,0xa9,0x2e,0xe7,0xff,0x29,0xe0,0xa7,0xc0,0x81,0x40,0xac,
0x9b,0xca,0xfa,0x40,0x91,0x5a,0xbd,0x9b,0x3b,0xea,0x8c,0xa7,0xd6,0x47,0x6e,0xe0,
0xbf,0x25,0x7d,0x34,0x52,0x6c,0xf7,0x10,0x82,0x53,0x82,0x57,0x4,0x58,0x55,0xc5,
0xcc,0xcc,0xd,0x25,0xad,0xd5,0xf9,0xcf,0x33,0x25,0xdd,0x25,0x69,0x4a,0xe7,0x45,
0xa2,0x55,0x80,0xb4,0x55,0xb0,0xbf,0x12,0x42,0x38,0xba,0x8e,0x78,0x6a,0x7,0xac,
0xf,0xcc,0x8b,0xb4,0x80,0xd3,0x3b,0x17,0xa9,0x59,0x6b,0x50,0xa4,0xc4,0x8b,0x3d,
0x1,0xcf,0xa3,0xed,0x4b,0xb0,0x11,0xcf,0x89,0x6,0x70,0x6a,0xee,0x38,0xcd,0xca,
0x44,0xda,0x2a,0xd8,0x93,0x73,0xc7,0x59,0x39,0x8a,0x97,0x81,0x29,0xb9,0xe7,0xbd,
0x36,0x80,0xb5,0x2,0x70,0x58,0xc2,0xf5,0x3e,0x46,0x9b,0x53,0x82,0x2f,0x8e,0x62,
0x71,0x8a,0x98,0xf9,0xc0,0x3b,0x72,0xc7,0x6a,0x36,0x8,0x8a,0x5e,0x98,0x94,0x75,
0x30,0xbf,0x9d,0x3b,0xd6,0xda,0x0,0x6b,0x92,0xb6,0x6a,0xea,0x2,0xe0,0x90,0xdc,
0xf1,0x9a,0xf5,0x3,0x78,0x7f,0xe2,0xcd,0xff,0x30,0xb0,0x76,0xee,0x78,0x6b,0x5,
0xec,0x97,0x70,0x62,0x16,0x39,0x1d,0xbf,0x18,0xb4,0x86,0xa0,0x98,0x5a,0x7d,0x66,
0xf,0xd7,0x77,0x74,0xc5,0xa6,0x56,0x2,0xce,0xeb,0xe1,0x24,0xdd,0x8e,0x7,0xa,
0xd9,0x90,0x3,0xde,0x2,0xdc,0xd1,0xc3,0x75,0x7d,0x6e,0xee,0x98,0xb3,0x1,0x56,
0x2,0xae,0xee,0xe1,0x64,0x1,0x5c,0xb,0xbc,0xd,0xaf,0x4d,0x67,0x43,0x2,0x58,
0x1,0x78,0x3b,0xf0,0xfb,0x1e,0xaf,0xe5,0x2b,0x81,0x6e,0xc9,0x72,0x2b,0x97,0x7d,
0xec,0x3d,0xf0,0x5c,0x49,0xd7,0x4a,0xea,0xb5,0xff,0xf3,0x11,0x49,0x17,0xab,0x18,
0xab,0x7e,0x9d,0xa4,0x5b,0x7b,0x59,0xfd,0xc6,0xac,0x5f,0x14,0x69,0xee,0x37,0x51,
0x31,0xab,0xef,0x75,0x92,0xf6,0x92,0xb4,0x46,0x8f,0xd5,0xdc,0x2d,0x69,0xbb,0x10,
0x42,0x15,0x33,0x37,0x93,0x65,0x6f,0x0,0x24,0x9,0x78,0xb1,0x8a,0xbc,0x76,0x1b,
0xf,0x50,0xcd,0x7c,0x15,0x79,0xd6,0x66,0x4b,0x7a,0xac,0x84,0xb0,0xcc,0x96,0x34,
0x51,0xc5,0xd2,0x5d,0xab,0x6b,0xb0,0x9c,0x7d,0xb7,0x4a,0xda,0xad,0x33,0x73,0x33,
0xab,0xa1,0x68,0x0,0xa4,0xa2,0x67,0x40,0xc5,0x30,0xc9,0xed,0x73,0xc7,0x62,0x56,
0xa1,0x29,0x92,0xde,0x1c,0x42,0xe8,0x67,0xb5,0xa6,0xd2,0xd5,0x39,0x1d,0xb8,0xab,
0x10,0xc2,0x23,0x92,0x76,0x95,0xf4,0xfd,0xdc,0xb1,0x98,0x55,0xe4,0x2,0x49,0x3b,
0xf,0xcb,0xcd,0x2f,0xd,0x51,0x3,0x20,0x49,0x21,0x84,0xc7,0x43,0x8,0xef,0x96,
0xf4,0x4e,0x49,0xb3,0x72,0xc7,0x63,0x56,0x92,0x39,0x92,0xfe,0x2d,0x84,0xb0,0xef,
0xb0,0x4d,0xb6,0x1a,0xaa,0x6,0x60,0x91,0x10,0xc2,0x45,0x92,0xb6,0x92,0x34,0x59,
0xd2,0xc2,0xcc,0xe1,0x98,0xf5,0x6b,0xa1,0xa4,0xf3,0x24,0x6d,0x1e,0x42,0x38,0x2f,
0x77,0x30,0x4b,0x33,0x34,0xef,0x0,0xc6,0x3,0x6c,0x28,0xe9,0xe3,0x92,0xe,0x94,
0xe4,0xe4,0x14,0xd6,0x4,0x63,0x92,0x7e,0x28,0xe9,0xd3,0x21,0x84,0x5b,0x72,0x7,
0xd3,0xcd,0xd0,0x37,0x0,0x8b,0x0,0x2f,0x90,0xf4,0xe,0x15,0xb9,0xef,0x5f,0xad,
0x6,0xc5,0x6e,0x23,0xe3,0x26,0x49,0x17,0x49,0xfa,0x6e,0x8,0xe1,0xce,0xdc,0xc1,
0xa4,0x68,0xe4,0x4d,0x4,0x6c,0xa4,0x62,0xed,0xba,0x6d,0x54,0x24,0xb7,0xd8,0x44,
0xcf,0x26,0xb7,0x30,0xab,0xc3,0x2c,0x49,0xb7,0xa8,0x18,0x83,0x32,0x45,0xd2,0xd5,
0x21,0x84,0x5a,0xb3,0xf9,0x94,0xa1,0x91,0xd,0xc0,0xd2,0x50,0x24,0x5b,0x5c,0xa3,
0xf3,0x6f,0xf5,0xcc,0xe1,0x58,0x3b,0xcd,0x96,0xf4,0xa8,0xa4,0x47,0x43,0x8,0xe4,
0xe,0xc6,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
0xcc,0xcc,0xcc,0xcc,0xcc,0x62,0xfe,0x6,0xd6,0x1,0xf1,0x80,0xed,0x3a,0xa5,0x7d,
0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// D:/QT/Projects/RRJClient/resource/Icons/762.gif
0x0,0x0,0x26,0x72,
0x47,
@@ -327694,6 +328084,11 @@ static const unsigned char qt_resource_name[] = {
0x0,0x4c,
0x0,0x69,0x0,0x62,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x53,0x0,0x61,0x0,0x6e,0x0,0x73,0x0,0x2d,0x0,0x52,0x0,0x65,
0x0,0x67,0x0,0x75,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x2e,0x0,0x74,0x0,0x74,0x0,0x66,
// caution.png
0x0,0xb,
0x0,0xb2,0x4e,0x27,
0x0,0x63,
0x0,0x61,0x0,0x75,0x0,0x74,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// 762.gif
0x0,0x7,
0xa,0x95,0x4d,0x96,
@@ -327745,60 +328140,63 @@ static const unsigned char qt_resource_struct[] = {
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/style.css
0x0,0x0,0x0,0x16,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
0x0,0x0,0x1,0x93,0xf7,0xbd,0xf,0xce,
0x0,0x0,0x1,0x93,0xf9,0x25,0xe1,0x94,
// :/resource
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/resource/Fonts
0x0,0x0,0x0,0xe6,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x11,
0x0,0x0,0x0,0xe6,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x12,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/resource/Icons
0x0,0x0,0x0,0xd6,0x0,0x2,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x9,
0x0,0x0,0x0,0xd6,0x0,0x2,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x9,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/resource/SSJ-100Dark.png
0x0,0x0,0x0,0xb2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3c,0x49,0x3a,
0x0,0x0,0x0,0xb2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3c,0x49,0x58,
0x0,0x0,0x1,0x92,0x4d,0x8e,0xd2,0xb0,
// :/resource/SSJ-100.png
0x0,0x0,0x0,0x96,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2f,0xcc,0x8c,
0x0,0x0,0x0,0x96,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2f,0xcc,0xaa,
0x0,0x0,0x1,0x92,0x4d,0x0,0xce,0xbb,
// :/resource/SSJ_backgroundDarkSM.png
0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x22,0x2c,0xed,
0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x22,0x2d,0xb,
0x0,0x0,0x1,0x93,0xf7,0x6c,0xa6,0xcf,
// :/resource/SSJ_backgroundDark.png
0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0xba,
0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0xd8,
0x0,0x0,0x1,0x93,0xf7,0x67,0xfd,0xc6,
// :/resource/Icons/caution.png
0x0,0x0,0x1,0x90,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x4,0xe5,
0x0,0x0,0x1,0x93,0xf8,0xc4,0xe,0x70,
// :/resource/Icons/setting.png
0x0,0x0,0x2,0x18,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x8d,0xb9,
0x0,0x0,0x2,0x34,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0xa5,0xe8,
0x0,0x0,0x1,0x92,0x47,0x9,0xdd,0xaa,
// :/resource/Icons/checked.png
0x0,0x0,0x2,0x74,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0xeb,0x26,
0x0,0x0,0x2,0x90,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x50,0x3,0x55,
0x0,0x0,0x1,0x92,0x51,0xaa,0xfa,0x67,
// :/resource/Icons/settingWhite.png
0x0,0x0,0x1,0xc6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x41,0xb2,
0x0,0x0,0x1,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x59,0xe1,
0x0,0x0,0x1,0x92,0x47,0xc,0xaf,0x4c,
// :/resource/Icons/plane.png
0x0,0x0,0x2,0x34,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0xb8,0xcb,
0x0,0x0,0x2,0x50,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0xd0,0xfa,
0x0,0x0,0x1,0x91,0xb3,0xf,0xc0,0x1f,
// :/resource/Icons/crossInCircle.png
0x0,0x0,0x2,0x4c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0xbd,0x18,
0x0,0x0,0x2,0x68,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0xd5,0x47,
0x0,0x0,0x1,0x92,0x4c,0x9f,0x4d,0xc4,
// :/resource/Icons/whiteCross.png
0x0,0x0,0x1,0xa4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x2b,0x3d,
0x0,0x0,0x1,0xc0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x43,0x6c,
0x0,0x0,0x1,0x92,0x4c,0x9e,0xfa,0x44,
// :/resource/Icons/monitor-display.png
0x0,0x0,0x1,0xec,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x87,0xea,
0x0,0x0,0x2,0x8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0xa0,0x19,
0x0,0x0,0x1,0x92,0x42,0xfe,0x89,0x26,
// :/resource/Icons/762.gif
0x0,0x0,0x1,0x90,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x4,0xc7,
0x0,0x0,0x1,0xac,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4f,0x1c,0xf6,
0x0,0x0,0x1,0x92,0x4d,0xb,0xea,0x71,
// :/resource/Fonts/HelveticaNeue-Medium.ttf
0x0,0x0,0x0,0xf6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x46,0xbb,0x97,
0x0,0x0,0x0,0xf6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x46,0xbb,0xb5,
0x0,0x0,0x1,0x92,0x42,0xb4,0xbd,0xcd,
// :/resource/Fonts/LiberationSans-Regular.ttf
0x0,0x0,0x1,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x49,0xac,0xcb,
0x0,0x0,0x1,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x49,0xac,0xe9,
0x0,0x0,0x1,0x92,0x42,0x25,0xa7,0xdc,
// :/resource/Fonts/Kanit Cyrillic.ttf
0x0,0x0,0x1,0x2c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x49,0x25,0xb,
0x0,0x0,0x1,0x2c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x49,0x25,0x29,
0x0,0x0,0x1,0x92,0x42,0x14,0x94,0xcc,
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
debug/versioncontainer.o Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -19,8 +19,10 @@ void EntryWidget::initialize(MainWindow *mainWindow)
void EntryWidget::connectionEmptyState()
{
show();
ui->offlineWidget->show();
ui->loginWidget->hide();
ui->settingsWidget->hide();
}
void EntryWidget::settingsState()

View File

@@ -1,6 +1,8 @@
#include "instructorbuttongroupwidget.h"
#include "ui_instructorbuttongroupwidget.h"
#include <QMessageBox>
InstructorButtonGroupWidget::InstructorButtonGroupWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::InstructorButtonGroupWidget)
@@ -29,6 +31,8 @@ void InstructorButtonGroupWidget::on_startWithCurrentChangesButton_clicked()
mainWindow->startUnityClient();
}
InstructorButtonGroupWidget::~InstructorButtonGroupWidget()
{
delete ui;

View File

@@ -17,6 +17,7 @@ class InstructorButtonGroupWidget : public QWidget
public:
explicit InstructorButtonGroupWidget(QWidget *parent = nullptr);
void initialize(MainWindow *mainWindow);
~InstructorButtonGroupWidget();
private slots:

View File

@@ -22,19 +22,19 @@ MainWindow::MainWindow(QWidget *parent)
void MainWindow::initialize()
{
createObjects();
loadStaticData();
updateWidget->initialize(this);
updateWidget->initialize(this,versionContainer);
entryWidget->initialize(this);
versionSelectWidget->initialize(sendSystem);
hashComparer->initialize(this);
updateController->initialize(this);
versionSelectWidget->initialize(sendSystem,versionContainer);
hashComparer->initialize(this,versionContainer);
updateController->initialize(this,versionContainer);
commonButtonGroupWidget->initialize(externalExecuter,sendSystem,client);
commonButtonGroupWidget->initialize(this,externalExecuter,sendSystem,client);
commonButtonGroupWidget->show();
//instructorButtonGroupWidget->initialize(this);
ui->notificationLabel->hide();
ui->unsafeChangingButton->hide();
ui->offlineStartButton->show();
ui->offlineStartButton->setEnabled(false);
@@ -46,31 +46,33 @@ void MainWindow::initialize()
sendSystem->initialize(this,dataParser);
dataParser->initialize(recognizeSystem);
emit sigCalculateHash();
emit sigInitializeClient(this,recognizeSystem,externalExecuter,sendSystem,workerThread);
emit sigRecognize(updateController,dataParser,this,hashComparer,client);
recognizeSystem->initialize(updateController,dataParser,this,hashComparer,client,versionContainer);
//emit sigRecognize(updateController,dataParser,this,hashComparer,client);
screenChecker->check();
loadStaticData();
emit sigSetConnect(dataParser->getServerSettings(),workerThread);
checkAppAvailable();
//test
}
void MainWindow::createObjects()
{
updateWidget = new UpdateNotifyWidget;
updateWidget->setParent(this);
commonButtonGroupWidget = new CommonButtonGroupWidget;
//instructorButtonGroupWidget = new InstructorButtonGroupWidget;
entryWidget = new EntryWidget;
versionSelectWidget = new VersionSelectWidget;
ui->changButtonGroup->addWidget(commonButtonGroupWidget);
//updateWidget->setButtonWidget(instructorButtonGroupWidget);
ui->interactiveGroup->addWidget(entryWidget);
ui->interactiveGroup->addWidget(versionSelectWidget);
@@ -99,6 +101,8 @@ void MainWindow::createObjects()
hashComparer = new HashComparer(dataParser);
hashComparer->moveToThread(workerThread);
versionContainer = new VersionContainer;
workerThread->start();
workerThread->setPriority(QThread::HighestPriority);
@@ -114,7 +118,7 @@ void MainWindow::bindConnection()
connect(this,&MainWindow::sigSetConnect,client,&TCPClient::setConnect,Qt::AutoConnection);
connect(this,&MainWindow::sigSendCommand,client,&TCPClient::slotSendCommand,Qt::AutoConnection);
connect(this,&MainWindow::sigSendXMLAnswer,sendSystem,&SendSystem::xmlAnswer,Qt::AutoConnection);
connect(this,&MainWindow::sigRecognize,recognizeSystem,&RecognizeSystem::initialize,Qt::AutoConnection);
//connect(this,&MainWindow::sigRecognize,recognizeSystem,&RecognizeSystem::initialize,Qt::AutoConnection);
connect(this,&MainWindow::sigGetConnected,client,&TCPClient::getIsConnected);
connect(this,&MainWindow::sigCalculateHash,updateController,&UpdateController::calculateCommonHash);
@@ -137,9 +141,12 @@ void MainWindow::loadComplete()
ui->offlineStartButton->setEnabled(true);
ui->autostartCheckBox->hide();
ui->offlineStartButton->show();
dataParser->changeVersion(versionContainer->getServerVersionData()->getViewName());
setTitle();
}
void MainWindow::setNeedUpdate(bool flag,quint64 size, quint64 fileCount)
void MainWindow::setNeedUpdate(bool flag,quint64 size, quint64 fileCount,quint64 deleteCount)
{
fileCountForUpdate = 0;
filesLoaded = 0;
@@ -153,8 +160,17 @@ void MainWindow::setNeedUpdate(bool flag,quint64 size, quint64 fileCount)
}
else if(flag)
{
QString result = tr("Доступно обновление: ") + Tools::convertFileSize(size);
result += tr("Количество файлов: ") + QString::number(fileCount);
QString result;
if(fileCount > 0)
{
result = tr("Доступно обновление: ") + Tools::convertFileSize(size);
result += tr("Количество файлов: ") + QString::number(fileCount);
}
else
{
result = tr("Файлов к удалению: ") + QString::number(deleteCount);
}
ui->inlineTextDebug->setText(result);
commonButtonGroupWidget->needUpdateState(flag);
ui->autostartCheckBox->show();
@@ -165,7 +181,10 @@ void MainWindow::setNeedUpdate(bool flag,quint64 size, quint64 fileCount)
ui->inlineTextDebug->setText(tr("Установлена последняя версия"));
autoStart();
commonButtonGroupWidget->lastVerInstalledState();
ui->unsafeChangingButton->hide();
ui->offlineStartButton->setEnabled(true);
dataParser->changeVersion(versionContainer->getServerVersion());
setTitle();
stopLoadingMovie();
}
}
@@ -219,6 +238,7 @@ void MainWindow::checkLoginResult(ServerAuthorization *serverAuth)
}
else
{
entryWidget->loginIsActive(true);
ui->notificationLabel->setText(tr("Неверный логин/пароль"));
timer->setInterval(3000);
timer->start();
@@ -261,6 +281,15 @@ void MainWindow::autoStart()
}
}
void MainWindow::setTitle()
{
ServerSettings *currentSettings = dataParser->getServerSettings();
QString title = tr("Тренажер процедур технического обслуживания самолета RRJ-95NEW-100");
title.append(" (" + currentSettings->LocalVersionName + ")");
ui->headerLabel->setText(title);
}
void MainWindow::loadStaticData()
{
ServerSettings *currentSettings = dataParser->getServerSettings();
@@ -270,6 +299,7 @@ void MainWindow::loadStaticData()
ui->autostartCheckBox->setChecked(currentSettings->isAutoStart);
checkLanguage(currentSettings->Language);
setTitle();
}
void MainWindow::showConnectionEmpty()
@@ -282,7 +312,14 @@ void MainWindow::showConnectionEmpty()
ui->offlineStartButton->show();
ui->offlineStartButton->setGeometry(280,340,250,40);
ui->settingsButton->show();
//instructorButtonGroupWidget->hide();
ui->unsafeChangingButton->hide();
versionSelectWidget->hide();
}
void MainWindow::disableUnsaveButton(bool flag)
{
if(!flag) ui->unsafeChangingButton->show();
else ui->unsafeChangingButton->hide();
}
void MainWindow::slotConnectionState(bool flag)
@@ -333,7 +370,6 @@ void MainWindow::callUpdateList()
{
hashComparer->setWidget(updateWidget);
emit sigSendXMLAnswer(cmd_GetServerHash);
updateWidget->initialize(this);
}
@@ -366,6 +402,7 @@ void MainWindow::saveServerSettingsWithConnect()
}
//TODO: не заполняется 2 поля (автостарт и язык)
ServerSettings *settings = entryWidget->getServerSettings();
settings->LocalVersionName = dataParser->getServerSettings()->LocalVersionName;
dataParser->createServerSettings(settings);
emit sigSetConnect(settings,workerThread);
@@ -389,9 +426,9 @@ void MainWindow::loadToServer()
{
ui->inlineTextDebug->setText(tr("Отправка файлов..."));
commonButtonGroupWidget->showProgressBar(true);
//instructorButtonGroupWidget->hide();
ui->offlineStartButton->setEnabled(false);
updateWidget->hide();
ui->unsafeChangingButton->hide();
emit sigUpdateFilesOnServer(hashComparer->getFilesForUpdate());
}
@@ -402,7 +439,6 @@ void MainWindow::undoCurrentChanges()
commonButtonGroupWidget->showProgressBar(true);
ui->offlineStartButton->setEnabled(false);
//instructorButtonGroupWidget->hide();
updateWidget->hide();
startLoadingAnim();
@@ -436,6 +472,12 @@ void MainWindow::on_offlineStartButton_clicked()
startUnityClient();
}
void MainWindow::on_unsafeChangingButton_clicked()
{
updateWidget->show();
}
void MainWindow::on_exitButton_clicked()
{
exit(0);
@@ -451,11 +493,11 @@ void MainWindow::showUpdateInfo()
{
stopLoadingMovie();
updateWidget->showWithFill();
ui->unsafeChangingButton->show();
entryWidget->hide();
commonButtonGroupWidget->hide();
//instructorButtonGroupWidget->show();
commonButtonGroupWidget->show();
ui->offlineStartButton->setGeometry(540,549,250,40);
fileCountForUpdate = hashComparer->getFilesForUpdate()->length();
fileCountForUpdate = hashComparer->getFileUpdateCount();
filesLoaded = 0;
}
@@ -465,7 +507,7 @@ void MainWindow::showCompleteDialogBox()
ui->inlineTextDebug->setText(tr("Загрузка завершена"));
startLoadingAnim();
QTime dieTime= QTime::currentTime().addSecs(10);
QTime dieTime= QTime::currentTime().addSecs(10); //DELAY ДЛЯ ПЕРЕСЧЕТА ХЭША НА СЕРВЕРЕ
while (QTime::currentTime() < dieTime)
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
@@ -479,9 +521,9 @@ void MainWindow::startUnityClient()
emit sigSendXMLAnswer("DISABLE");
}
void MainWindow::setCurrentVersionName(QString versionName)
void MainWindow::setCurrentVersionName(StreamingVersionData *version)
{
versionSelectWidget->fillCurrentVersionName(versionName);
versionContainer->setLocalVersionData(version);
}
void MainWindow::keyPressEvent(QKeyEvent *event)
@@ -513,6 +555,20 @@ void MainWindow::painting()
ui->settingsButton->setIcon(icon);
//caution
QPixmap cautionIcon(":resource/Icons/caution.png");
painter.begin(&cautionIcon);
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
painter.fillRect(cautionIcon.rect(),color);
painter.end();
icon.addPixmap(cautionIcon,QIcon::Normal,QIcon::Off);
QSize cautionIconSize(30,30);
ui->unsafeChangingButton->setIcon(icon);
ui->unsafeChangingButton->setIconSize(cautionIconSize);
//exit
QPixmap crossPixmap(":resource/Icons/crossInCircle.png");
QPainter painterCross;
@@ -567,3 +623,4 @@ MainWindow::~MainWindow()

View File

@@ -11,6 +11,7 @@
#include <Core/UpdateController.h>
#include <Core/sendsystem.h>
#include <Core/hashcomparer.h>
#include <Core/versioncontainer.h>
#include "Datas.h"
#include "commonbuttongroupwidget.h"
#include "entrywidget.h"
@@ -45,7 +46,15 @@ public:
void checkUpdate();
~MainWindow();
void initialize();
void bindConnection();
void login();
void saveServerSettingsWithConnect();
void loadToServer();
void undoCurrentChanges();
void startUnityClient();
void setCurrentVersionName(StreamingVersionData *version);
void disableUnsaveButton(bool flag);
signals:
void sigInitializeClient(MainWindow* mainWindow,
@@ -78,7 +87,7 @@ public slots:
void lostConnection();
void serverBlocked();
void checkLoginResult(ServerAuthorization * serverAuth);
void setNeedUpdate(bool flag,quint64 size,quint64 fileCount);
void setNeedUpdate(bool flag,quint64 size,quint64 fileCount,quint64 deleteCount);
void showServerListWidget(QList<StreamingVersionData*> *serverData);
@@ -91,12 +100,13 @@ private slots:
void on_offlineStartButton_clicked();
void on_unsafeChangingButton_clicked();
private:
Ui::MainWindow *ui;
MyWinHeader *header;
UpdateNotifyWidget *updateWidget;
CommonButtonGroupWidget *commonButtonGroupWidget;
InstructorButtonGroupWidget *instructorButtonGroupWidget;
EntryWidget *entryWidget;
VersionSelectWidget *versionSelectWidget;
@@ -109,6 +119,7 @@ private:
ExternalExecuter *externalExecuter;
SendSystem *sendSystem;
HashComparer *hashComparer;
VersionContainer *versionContainer;
QThread *workerThread;
QThread *animationThread;
QTimer *timer;
@@ -131,15 +142,7 @@ private:
void startLoadingAnim();
void stopLoadingMovie();
void showConnectionEmpty();
public:
void initialize();
void login();
void saveServerSettingsWithConnect();
void loadToServer();
void undoCurrentChanges();
void startUnityClient();
void setCurrentVersionName(QString versionName);
void setTitle();
protected:
virtual void keyPressEvent(QKeyEvent *event);

View File

@@ -168,34 +168,6 @@
</item>
</layout>
</widget>
<widget class="QPushButton" name="settingsButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>730</x>
<y>0</y>
<width>51</width>
<height>40</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>40</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
</widget>
</widget>
<widget class="QWidget" name="LanguageWidget" native="true">
<property name="geometry">
@@ -330,68 +302,6 @@
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QWidget" name="debugWidget" native="true">
<property name="geometry">
<rect>
<x>10</x>
<y>500</y>
<width>561</width>
<height>51</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item>
<widget class="QCheckBox" name="autostartCheckBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="text">
<string>Автозапуск</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="inlineTextDebug">
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="headerWidget" native="true">
<property name="geometry">
<rect>
@@ -454,7 +364,7 @@
<item>
<widget class="MyWinHeader" name="headerLabel">
<property name="text">
<string>Тренажер процедур технического обслуживания самолета RRJ-95NEW-100</string>
<string/>
</property>
</widget>
</item>
@@ -554,14 +464,119 @@
</property>
<layout class="QVBoxLayout" name="interactiveGroup"/>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_3">
<property name="geometry">
<rect>
<x>10</x>
<y>480</y>
<width>531</width>
<height>61</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>3</number>
</property>
<item>
<widget class="QCheckBox" name="autostartCheckBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Автозапуск</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="inlineTextDebug">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>740</x>
<y>50</y>
<width>50</width>
<height>42</height>
</rect>
</property>
<layout class="QHBoxLayout" name="additionalButtonLayout">
<item>
<widget class="QPushButton" name="unsafeChangingButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="settingsButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<zorder>mainFrame</zorder>
<zorder>notificationLabel</zorder>
<zorder>debugWidget</zorder>
<zorder>headerWidget</zorder>
<zorder>LanguageWidget</zorder>
<zorder>offlineStartButton</zorder>
<zorder>verticalLayoutWidget</zorder>
<zorder>verticalLayoutWidget_2</zorder>
<zorder>verticalLayoutWidget_3</zorder>
<zorder>horizontalLayoutWidget</zorder>
<zorder>LanguageWidget</zorder>
</widget>
</widget>
<customwidgets>

View File

@@ -2,11 +2,17 @@
MyWinHeader::MyWinHeader(QWidget*)
{
}
MyWinHeader::~MyWinHeader()
{
}
void MyWinHeader::mousePressEvent(QMouseEvent *event) {
winX = this->parentWidget()->window()->x(); winY = this->parentWidget()->window()->y();
mouseX = event->globalX(); mouseY = event->globalY();
isMousePressed = true;;
isMousePressed = true;
}
void MyWinHeader::mouseReleaseEvent(QMouseEvent*) {
isMousePressed = false;
@@ -15,3 +21,8 @@ void MyWinHeader::mouseMoveEvent(QMouseEvent *event) {
if(!isMousePressed) return;
this->parentWidget()->window()->move(winX + event->globalX()-mouseX, winY + event->globalY()-mouseY);
}
void MyWinHeader::changeText(QString *text){
setText(*text);
repaint();
}

View File

@@ -12,6 +12,8 @@ class MyWinHeader : public QLabel
Q_OBJECT
public:
MyWinHeader(QWidget *parent = nullptr);
~MyWinHeader();
void changeText(QString *text);
private:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);

View File

@@ -6,8 +6,9 @@ NewVersionWidget::NewVersionWidget(QWidget *parent) :
ui(new Ui::NewVersionWidget)
{
ui->setupUi(this);
setWindowFlag(Qt::SubWindow);
setWindowFlags(Qt::SubWindow | Qt::FramelessWindowHint | Qt::CustomizeWindowHint );
setAttribute(Qt::WA_ShowModal,true);
setAttribute(Qt::WA_TranslucentBackground);
}
void NewVersionWidget::initialize(VersionSelectWidget *versionSelectWidget, QString prevName)
@@ -22,6 +23,7 @@ void NewVersionWidget::on_createButton_clicked()
if(ui->lineEdit->text() != "")
{
versionSelectWidget->sendCopyEmit(ui->lineEdit->text());
hide();
}
}

View File

@@ -6,90 +6,238 @@
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>240</height>
<width>310</width>
<height>152</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
<string>Создать копию...</string>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<widget class="QLabel" name="prevVerTitle">
<widget class="QFrame" name="NewVerBackground">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>171</width>
<height>31</height>
<x>0</x>
<y>0</y>
<width>311</width>
<height>191</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
<widget class="QLabel" name="newNameVersionTitle">
<property name="geometry">
<rect>
<x>10</x>
<y>50</y>
<width>161</width>
<height>31</height>
</rect>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="text">
<string>Новое название:</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>180</x>
<y>50</y>
<width>211</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="createButton">
<property name="geometry">
<rect>
<x>40</x>
<y>120</y>
<width>131</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>Создать</string>
</property>
</widget>
<widget class="QLabel" name="prevVerValue">
<property name="geometry">
<rect>
<x>180</x>
<y>10</y>
<width>201</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="cancelButton">
<property name="geometry">
<rect>
<x>210</x>
<y>120</y>
<width>131</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>Отмена</string>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>311</width>
<height>51</height>
</rect>
</property>
<layout class="QHBoxLayout" name="baseVerLayout">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="prevVerTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Базовая версия:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="prevVerValue">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget_2">
<property name="geometry">
<rect>
<x>0</x>
<y>50</y>
<width>311</width>
<height>51</height>
</rect>
</property>
<layout class="QHBoxLayout" name="newNameLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>20</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="newNameVersionTitle">
<property name="text">
<string>Новое название:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget_3">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>311</width>
<height>51</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="createButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Создать</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Отмена</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</widget>
<resources/>

View File

@@ -1,4 +1,5 @@
debug/sendsystem.o
debug/versioncontainer.o
debug/updatecontroller.o
debug/externalexecuter.o
debug/dataparser.o
@@ -17,6 +18,7 @@ debug/newversionwidget.o
debug/updatenotifywidget.o
debug/versionselectwidget.o
debug/qrc_resources.o
debug/moc_versioncontainer.o
debug/moc_sendsystem.o
debug/moc_updatecontroller.o
debug/moc_externalexecuter.o

View File

@@ -1,4 +1,5 @@
release/sendsystem.o
release/versioncontainer.o
release/updatecontroller.o
release/externalexecuter.o
release/dataparser.o
@@ -17,6 +18,7 @@ release/newversionwidget.o
release/updatenotifywidget.o
release/versionselectwidget.o
release/qrc_resources.o
release/moc_versioncontainer.o
release/moc_sendsystem.o
release/moc_updatecontroller.o
release/moc_externalexecuter.o

BIN
resource/Icons/caution.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -17,5 +17,6 @@
<file>resource/Icons/checked.png</file>
<file>resource/SSJ_backgroundDark.png</file>
<file>resource/SSJ_backgroundDarkSM.png</file>
<file>resource/Icons/caution.png</file>
</qresource>
</RCC>

View File

@@ -17,6 +17,11 @@ QListWidget#updateListWidget
color:white;
}
QFrame#NewVerBackground
{
background-color:rgba(0,0,0,90%);;
}
QComboBox
{
background-color: rgb(203,228,255);
@@ -105,10 +110,12 @@ QLabel
color: white;
}
QLabel#inlineTextDebug
QTextEdit#inlineTextDebug
{
background-color: rgba(0,0,0,0);
font-family: "Calibri";
font: 18px;
color: white;
}
QWidget#headerWidget

View File

@@ -35,16 +35,11 @@ public:
QWidget *screenWidget;
QHBoxLayout *horizontalLayout_3;
QHBoxLayout *displayLayout;
QPushButton *settingsButton;
QWidget *LanguageWidget;
QHBoxLayout *horizontalLayout_2;
QLabel *languageTitle;
QComboBox *languageComboBox;
QLabel *notificationLabel;
QWidget *debugWidget;
QVBoxLayout *verticalLayout_5;
QCheckBox *autostartCheckBox;
QLabel *inlineTextDebug;
QWidget *headerWidget;
QHBoxLayout *headerLayout;
QWidget *iconWidget;
@@ -55,6 +50,14 @@ public:
QVBoxLayout *changButtonGroup;
QWidget *verticalLayoutWidget_2;
QVBoxLayout *interactiveGroup;
QWidget *verticalLayoutWidget_3;
QVBoxLayout *verticalLayout;
QCheckBox *autostartCheckBox;
QLabel *inlineTextDebug;
QWidget *horizontalLayoutWidget;
QHBoxLayout *additionalButtonLayout;
QPushButton *unsafeChangingButton;
QPushButton *settingsButton;
void setupUi(QMainWindow *MainWindow)
{
@@ -125,12 +128,6 @@ public:
verticalLayout_4->addWidget(screenWidget);
settingsButton = new QPushButton(mainFrame);
settingsButton->setObjectName(QString::fromUtf8("settingsButton"));
settingsButton->setEnabled(true);
settingsButton->setGeometry(QRect(730, 0, 51, 40));
settingsButton->setMinimumSize(QSize(0, 40));
settingsButton->setIconSize(QSize(30, 30));
LanguageWidget = new QWidget(centralwidget);
LanguageWidget->setObjectName(QString::fromUtf8("LanguageWidget"));
LanguageWidget->setGeometry(QRect(0, 555, 231, 30));
@@ -180,29 +177,6 @@ public:
notificationLabel->setFrameShadow(QFrame::Plain);
notificationLabel->setTextFormat(Qt::RichText);
notificationLabel->setAlignment(Qt::AlignCenter);
debugWidget = new QWidget(centralwidget);
debugWidget->setObjectName(QString::fromUtf8("debugWidget"));
debugWidget->setGeometry(QRect(10, 500, 561, 51));
verticalLayout_5 = new QVBoxLayout(debugWidget);
verticalLayout_5->setSpacing(6);
verticalLayout_5->setObjectName(QString::fromUtf8("verticalLayout_5"));
verticalLayout_5->setContentsMargins(1, 6, 1, 1);
autostartCheckBox = new QCheckBox(debugWidget);
autostartCheckBox->setObjectName(QString::fromUtf8("autostartCheckBox"));
autostartCheckBox->setEnabled(true);
sizePolicy2.setHeightForWidth(autostartCheckBox->sizePolicy().hasHeightForWidth());
autostartCheckBox->setSizePolicy(sizePolicy2);
autostartCheckBox->setMinimumSize(QSize(0, 20));
autostartCheckBox->setChecked(false);
verticalLayout_5->addWidget(autostartCheckBox);
inlineTextDebug = new QLabel(debugWidget);
inlineTextDebug->setObjectName(QString::fromUtf8("inlineTextDebug"));
inlineTextDebug->setAlignment(Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft);
verticalLayout_5->addWidget(inlineTextDebug);
headerWidget = new QWidget(centralwidget);
headerWidget->setObjectName(QString::fromUtf8("headerWidget"));
headerWidget->setGeometry(QRect(0, 0, 801, 40));
@@ -261,15 +235,61 @@ public:
interactiveGroup = new QVBoxLayout(verticalLayoutWidget_2);
interactiveGroup->setObjectName(QString::fromUtf8("interactiveGroup"));
interactiveGroup->setContentsMargins(0, 0, 0, 0);
verticalLayoutWidget_3 = new QWidget(centralwidget);
verticalLayoutWidget_3->setObjectName(QString::fromUtf8("verticalLayoutWidget_3"));
verticalLayoutWidget_3->setGeometry(QRect(10, 480, 531, 61));
verticalLayout = new QVBoxLayout(verticalLayoutWidget_3);
verticalLayout->setSpacing(3);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setContentsMargins(0, 0, 0, 0);
autostartCheckBox = new QCheckBox(verticalLayoutWidget_3);
autostartCheckBox->setObjectName(QString::fromUtf8("autostartCheckBox"));
sizePolicy1.setHeightForWidth(autostartCheckBox->sizePolicy().hasHeightForWidth());
autostartCheckBox->setSizePolicy(sizePolicy1);
autostartCheckBox->setFont(font);
verticalLayout->addWidget(autostartCheckBox);
inlineTextDebug = new QLabel(verticalLayoutWidget_3);
inlineTextDebug->setObjectName(QString::fromUtf8("inlineTextDebug"));
inlineTextDebug->setFont(font);
verticalLayout->addWidget(inlineTextDebug);
horizontalLayoutWidget = new QWidget(centralwidget);
horizontalLayoutWidget->setObjectName(QString::fromUtf8("horizontalLayoutWidget"));
horizontalLayoutWidget->setGeometry(QRect(740, 50, 50, 42));
additionalButtonLayout = new QHBoxLayout(horizontalLayoutWidget);
additionalButtonLayout->setObjectName(QString::fromUtf8("additionalButtonLayout"));
additionalButtonLayout->setContentsMargins(0, 0, 0, 0);
unsafeChangingButton = new QPushButton(horizontalLayoutWidget);
unsafeChangingButton->setObjectName(QString::fromUtf8("unsafeChangingButton"));
sizePolicy2.setHeightForWidth(unsafeChangingButton->sizePolicy().hasHeightForWidth());
unsafeChangingButton->setSizePolicy(sizePolicy2);
unsafeChangingButton->setMinimumSize(QSize(40, 40));
additionalButtonLayout->addWidget(unsafeChangingButton);
settingsButton = new QPushButton(horizontalLayoutWidget);
settingsButton->setObjectName(QString::fromUtf8("settingsButton"));
settingsButton->setEnabled(true);
sizePolicy2.setHeightForWidth(settingsButton->sizePolicy().hasHeightForWidth());
settingsButton->setSizePolicy(sizePolicy2);
settingsButton->setMinimumSize(QSize(40, 40));
settingsButton->setIconSize(QSize(30, 30));
additionalButtonLayout->addWidget(settingsButton);
MainWindow->setCentralWidget(centralwidget);
mainFrame->raise();
notificationLabel->raise();
debugWidget->raise();
headerWidget->raise();
LanguageWidget->raise();
offlineStartButton->raise();
verticalLayoutWidget->raise();
verticalLayoutWidget_2->raise();
verticalLayoutWidget_3->raise();
horizontalLayoutWidget->raise();
LanguageWidget->raise();
retranslateUi(MainWindow);
@@ -280,17 +300,18 @@ public:
{
MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "\320\242\321\200\320\265\320\275\320\260\320\266\320\265\321\200 \320\277\321\200\320\276\321\206\320\265\320\264\321\203\321\200 \321\202\320\265\321\205\320\275\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276 \320\276\320\261\321\201\320\273\321\203\320\266\320\270\320\262\320\260\320\275\320\270\321\217 \321\201\320\260\320\274\320\276\320\273\320\265\321\202\320\260 RRJ-95NEW-100", nullptr));
displayChoiceTitle->setText(QCoreApplication::translate("MainWindow", "\320\222\321\213\320\261\320\265\321\200\320\270\321\202\320\265 \320\260\320\272\321\202\320\270\320\262\320\275\321\213\320\265 \320\274\320\276\320\275\320\270\321\202\320\276\321\200\321\213:", nullptr));
settingsButton->setText(QString());
languageTitle->setText(QCoreApplication::translate("MainWindow", "\320\257\320\267\321\213\320\272/Language", nullptr));
languageComboBox->setItemText(0, QCoreApplication::translate("MainWindow", "RUS", nullptr));
languageComboBox->setItemText(1, QCoreApplication::translate("MainWindow", "ENG", nullptr));
notificationLabel->setText(QCoreApplication::translate("MainWindow", "\320\232\320\260\320\272\320\260\321\217-\321\202\320\276 \320\276\321\210\320\270\320\261\320\272\320\260", nullptr));
autostartCheckBox->setText(QCoreApplication::translate("MainWindow", "\320\220\320\262\321\202\320\276\320\267\320\260\320\277\321\203\321\201\320\272", nullptr));
inlineTextDebug->setText(QString());
headerLabel->setText(QCoreApplication::translate("MainWindow", "\320\242\321\200\320\265\320\275\320\260\320\266\320\265\321\200 \320\277\321\200\320\276\321\206\320\265\320\264\321\203\321\200 \321\202\320\265\321\205\320\275\320\270\321\207\320\265\321\201\320\272\320\276\320\263\320\276 \320\276\320\261\321\201\320\273\321\203\320\266\320\270\320\262\320\260\320\275\320\270\321\217 \321\201\320\260\320\274\320\276\320\273\320\265\321\202\320\260 RRJ-95NEW-100", nullptr));
headerLabel->setText(QString());
exitButton->setText(QString());
offlineStartButton->setText(QCoreApplication::translate("MainWindow", "\320\227\320\260\320\277\321\203\321\201\320\272 \320\262 \320\260\320\262\321\202\320\276\320\275\320\276\320\274\320\275\320\276\320\274 \321\200\320\265\320\266\320\270\320\274\320\265", nullptr));
autostartCheckBox->setText(QCoreApplication::translate("MainWindow", "\320\220\320\262\321\202\320\276\320\267\320\260\320\277\321\203\321\201\320\272", nullptr));
inlineTextDebug->setText(QString());
unsafeChangingButton->setText(QString());
settingsButton->setText(QString());
} // retranslateUi
};

View File

@@ -11,9 +11,12 @@
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QFrame>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
@@ -21,37 +24,120 @@ QT_BEGIN_NAMESPACE
class Ui_NewVersionWidget
{
public:
QFrame *NewVerBackground;
QWidget *horizontalLayoutWidget;
QHBoxLayout *baseVerLayout;
QLabel *prevVerTitle;
QLabel *prevVerValue;
QWidget *horizontalLayoutWidget_2;
QHBoxLayout *newNameLayout;
QLabel *newNameVersionTitle;
QLineEdit *lineEdit;
QWidget *horizontalLayoutWidget_3;
QHBoxLayout *horizontalLayout;
QSpacerItem *horizontalSpacer;
QPushButton *createButton;
QLabel *prevVerValue;
QSpacerItem *horizontalSpacer_3;
QPushButton *cancelButton;
QSpacerItem *horizontalSpacer_2;
void setupUi(QWidget *NewVersionWidget)
{
if (NewVersionWidget->objectName().isEmpty())
NewVersionWidget->setObjectName(QString::fromUtf8("NewVersionWidget"));
NewVersionWidget->resize(400, 240);
NewVersionWidget->resize(310, 152);
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(NewVersionWidget->sizePolicy().hasHeightForWidth());
NewVersionWidget->setSizePolicy(sizePolicy);
NewVersionWidget->setAutoFillBackground(true);
NewVersionWidget->setStyleSheet(QString::fromUtf8(""));
prevVerTitle = new QLabel(NewVersionWidget);
NewVerBackground = new QFrame(NewVersionWidget);
NewVerBackground->setObjectName(QString::fromUtf8("NewVerBackground"));
NewVerBackground->setEnabled(true);
NewVerBackground->setGeometry(QRect(0, 0, 311, 191));
QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(NewVerBackground->sizePolicy().hasHeightForWidth());
NewVerBackground->setSizePolicy(sizePolicy1);
NewVerBackground->setFrameShape(QFrame::StyledPanel);
NewVerBackground->setFrameShadow(QFrame::Raised);
horizontalLayoutWidget = new QWidget(NewVerBackground);
horizontalLayoutWidget->setObjectName(QString::fromUtf8("horizontalLayoutWidget"));
horizontalLayoutWidget->setGeometry(QRect(0, 0, 311, 51));
baseVerLayout = new QHBoxLayout(horizontalLayoutWidget);
baseVerLayout->setObjectName(QString::fromUtf8("baseVerLayout"));
baseVerLayout->setContentsMargins(5, 5, 5, 5);
prevVerTitle = new QLabel(horizontalLayoutWidget);
prevVerTitle->setObjectName(QString::fromUtf8("prevVerTitle"));
prevVerTitle->setGeometry(QRect(10, 10, 171, 31));
newNameVersionTitle = new QLabel(NewVersionWidget);
newNameVersionTitle->setObjectName(QString::fromUtf8("newNameVersionTitle"));
newNameVersionTitle->setGeometry(QRect(10, 50, 161, 31));
lineEdit = new QLineEdit(NewVersionWidget);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
lineEdit->setGeometry(QRect(180, 50, 211, 31));
createButton = new QPushButton(NewVersionWidget);
createButton->setObjectName(QString::fromUtf8("createButton"));
createButton->setGeometry(QRect(40, 120, 131, 41));
prevVerValue = new QLabel(NewVersionWidget);
QSizePolicy sizePolicy2(QSizePolicy::Minimum, QSizePolicy::Minimum);
sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0);
sizePolicy2.setHeightForWidth(prevVerTitle->sizePolicy().hasHeightForWidth());
prevVerTitle->setSizePolicy(sizePolicy2);
baseVerLayout->addWidget(prevVerTitle);
prevVerValue = new QLabel(horizontalLayoutWidget);
prevVerValue->setObjectName(QString::fromUtf8("prevVerValue"));
prevVerValue->setGeometry(QRect(180, 10, 201, 31));
cancelButton = new QPushButton(NewVersionWidget);
baseVerLayout->addWidget(prevVerValue);
horizontalLayoutWidget_2 = new QWidget(NewVerBackground);
horizontalLayoutWidget_2->setObjectName(QString::fromUtf8("horizontalLayoutWidget_2"));
horizontalLayoutWidget_2->setGeometry(QRect(0, 50, 311, 51));
newNameLayout = new QHBoxLayout(horizontalLayoutWidget_2);
newNameLayout->setSpacing(6);
newNameLayout->setObjectName(QString::fromUtf8("newNameLayout"));
newNameLayout->setContentsMargins(5, 5, 20, 5);
newNameVersionTitle = new QLabel(horizontalLayoutWidget_2);
newNameVersionTitle->setObjectName(QString::fromUtf8("newNameVersionTitle"));
newNameLayout->addWidget(newNameVersionTitle);
lineEdit = new QLineEdit(horizontalLayoutWidget_2);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
sizePolicy.setHeightForWidth(lineEdit->sizePolicy().hasHeightForWidth());
lineEdit->setSizePolicy(sizePolicy);
lineEdit->setMinimumSize(QSize(150, 30));
lineEdit->setMaximumSize(QSize(60, 30));
newNameLayout->addWidget(lineEdit);
horizontalLayoutWidget_3 = new QWidget(NewVerBackground);
horizontalLayoutWidget_3->setObjectName(QString::fromUtf8("horizontalLayoutWidget_3"));
horizontalLayoutWidget_3->setGeometry(QRect(0, 100, 311, 51));
horizontalLayout = new QHBoxLayout(horizontalLayoutWidget_3);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
horizontalLayout->setContentsMargins(0, 0, 0, 6);
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Minimum, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer);
createButton = new QPushButton(horizontalLayoutWidget_3);
createButton->setObjectName(QString::fromUtf8("createButton"));
sizePolicy.setHeightForWidth(createButton->sizePolicy().hasHeightForWidth());
createButton->setSizePolicy(sizePolicy);
horizontalLayout->addWidget(createButton);
horizontalSpacer_3 = new QSpacerItem(40, 20, QSizePolicy::Minimum, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer_3);
cancelButton = new QPushButton(horizontalLayoutWidget_3);
cancelButton->setObjectName(QString::fromUtf8("cancelButton"));
cancelButton->setGeometry(QRect(210, 120, 131, 41));
sizePolicy.setHeightForWidth(cancelButton->sizePolicy().hasHeightForWidth());
cancelButton->setSizePolicy(sizePolicy);
horizontalLayout->addWidget(cancelButton);
horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Minimum, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer_2);
retranslateUi(NewVersionWidget);
@@ -60,11 +146,11 @@ public:
void retranslateUi(QWidget *NewVersionWidget)
{
NewVersionWidget->setWindowTitle(QCoreApplication::translate("NewVersionWidget", "Form", nullptr));
prevVerTitle->setText(QCoreApplication::translate("NewVersionWidget", "TextLabel", nullptr));
NewVersionWidget->setWindowTitle(QCoreApplication::translate("NewVersionWidget", "\320\241\320\276\320\267\320\264\320\260\321\202\321\214 \320\272\320\276\320\277\320\270\321\216...", nullptr));
prevVerTitle->setText(QCoreApplication::translate("NewVersionWidget", "\320\221\320\260\320\267\320\276\320\262\320\260\321\217 \320\262\320\265\321\200\321\201\320\270\321\217:", nullptr));
prevVerValue->setText(QCoreApplication::translate("NewVersionWidget", "TextLabel", nullptr));
newNameVersionTitle->setText(QCoreApplication::translate("NewVersionWidget", "\320\235\320\276\320\262\320\276\320\265 \320\275\320\260\320\267\320\262\320\260\320\275\320\270\320\265:", nullptr));
createButton->setText(QCoreApplication::translate("NewVersionWidget", "\320\241\320\276\320\267\320\264\320\260\321\202\321\214", nullptr));
prevVerValue->setText(QCoreApplication::translate("NewVersionWidget", "TextLabel", nullptr));
cancelButton->setText(QCoreApplication::translate("NewVersionWidget", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr));
} // retranslateUi

View File

@@ -118,7 +118,7 @@ public:
ButtonLayout->addWidget(switchServerVersionButton);
horizontalSpacer = new QSpacerItem(180, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
horizontalSpacer = new QSpacerItem(170, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
ButtonLayout->addItem(horizontalSpacer);

View File

@@ -8,22 +8,20 @@ UpdateNotifyWidget::UpdateNotifyWidget(QWidget *) :
ui(new Ui::UpdateNotifyWidget)
{
ui->setupUi(this);
setWindowFlag(Qt::FramelessWindowHint);
setAttribute(Qt::WA_ShowModal,true);
// setWindowFlag(Qt::FramelessWindowHint);
// setAttribute(Qt::WA_ShowModal,true);
}
void UpdateNotifyWidget::initialize(MainWindow *mainWindow)
void UpdateNotifyWidget::initialize(MainWindow *mainWindow,VersionContainer *verContainer)
{
this->mainWindow = mainWindow;
this->versionContainer = verContainer;
currentLoadingCount = 0;
hide();
auto pos = mainWindow->pos();
pos.setY(pos.y() + 40);
move(pos);
// auto point = mainWindow->pos();
// point.setY(point.y() + 100);
// mapToParent(point);
}
void UpdateNotifyWidget::addToList(FileData fileData)
@@ -48,6 +46,12 @@ void UpdateNotifyWidget::showWithFill()
void UpdateNotifyWidget::on_loadToServerButton_clicked()
{
if(versionContainer->getServerVersion() == baseNamePackage)
{
showWarning("В базовую версию загрузка невозможна!");
return;
}
mainWindow->loadToServer();
}
@@ -61,12 +65,15 @@ void UpdateNotifyWidget::on_startWithCurrentChangesButton_clicked()
mainWindow->startUnityClient();
}
void UpdateNotifyWidget::setButtonWidget(InstructorButtonGroupWidget *widget)
void UpdateNotifyWidget::showWarning(QString text)
{
//ui->ButtonsLayout->addWidget(widget,0,Qt::AlignTop);
QMessageBox warning;
warning.setText(text);
warning.setIcon(QMessageBox::Warning);
warning.setWindowTitle(tr("Ошибка"));
warning.exec();
}
UpdateNotifyWidget::~UpdateNotifyWidget()
{
delete ui;

View File

@@ -15,6 +15,7 @@ class UpdateNotifyWidget;
class MainWindow;
class UpdateController;
class InstructorButtonGroupWidget;
class VersionContainer;
class UpdateNotifyWidget : public QWidget
{
@@ -22,29 +23,24 @@ class UpdateNotifyWidget : public QWidget
public:
explicit UpdateNotifyWidget(QWidget *parent = nullptr);
void initialize(MainWindow *mainWindow);
void initialize(MainWindow *mainWindow,VersionContainer *versionContainer);
void addToList(FileData fileData);
~UpdateNotifyWidget();
void showWithFill();
void setButtonWidget(InstructorButtonGroupWidget *widget);
signals:
~UpdateNotifyWidget();
private slots:
void on_closeButton_clicked();
void on_loadToServerButton_clicked();
void on_undoChangesButton_clicked();
void on_startWithCurrentChangesButton_clicked();
private:
Ui::UpdateNotifyWidget *ui;
MainWindow *mainWindow;
VersionContainer *versionContainer;
int currentLoadingCount;
void showWarning(QString text);
};
#endif // UPDATENOTIFYWIDGET_H

View File

@@ -2,18 +2,22 @@
#include "ui_versionselectwidget.h"
#include "ui_versionselectwidget.h"
#include <QMessageBox>
VersionSelectWidget::VersionSelectWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::VersionSelectWidget)
ui(new Ui::VersionSelectWidget),
selectedVersion(nullptr)
{
ui->setupUi(this);
}
void VersionSelectWidget::initialize(SendSystem *sendSystem)
void VersionSelectWidget::initialize(SendSystem *sendSystem,VersionContainer *versionContainer)
{
connect(this,&VersionSelectWidget::sigSendSwitchVersion,sendSystem,&SendSystem::sendChangeVersion,Qt::AutoConnection);
connect(this,&VersionSelectWidget::sigSendCopyVersion,sendSystem,&SendSystem::sendCopyVersion,Qt::AutoConnection);
connect(this,&VersionSelectWidget::sigSendDeleteVersion,sendSystem,&SendSystem::sendDeleteVersion,Qt::AutoConnection);
this->versionContainer = versionContainer;
hide();
}
@@ -22,6 +26,7 @@ void VersionSelectWidget::fillView(QList<StreamingVersionData *> *serverData)
show();
ui->verListView->clear();
serverDataList = serverData;
ui->verValue->setText(versionContainer->getServerVersionData()->getViewName());
foreach(StreamingVersionData *data,*serverData)
{
@@ -29,11 +34,6 @@ void VersionSelectWidget::fillView(QList<StreamingVersionData *> *serverData)
}
}
void VersionSelectWidget::fillCurrentVersionName(QString versionName)
{
ui->verValue->setText(versionName);
}
void VersionSelectWidget::on_verListView_itemDoubleClicked(QListWidgetItem *item)
{
foreach(StreamingVersionData *data,*serverDataList)
@@ -59,22 +59,67 @@ void VersionSelectWidget::on_createDuplicateButton_clicked()
void VersionSelectWidget::sendCopyEmit(QString newName)
{
QString result = selectedVersion->getViewName() + ";" + newName;
if (selectedVersion != nullptr)
if (selectedVersion == nullptr)
{
showWarning(tr("Версия не выбрана"));
return;
}
quint16 matchIndex = ui->verListView->findItems(newName,Qt::MatchFlag::MatchFixedString).length();
if (matchIndex > 0)
{
showWarning(tr("Версия с таким именем уже существует"));
return;
}
versionContainer->setLocalVersionData(selectedVersion);
emit sigSendCopyVersion(result);
}
void VersionSelectWidget::on_DeleteVersionButton_clicked()
{
if (selectedVersion != nullptr)
if (selectedVersion == nullptr)
{
showWarning(tr("Версия не выбрана"));
return;
}
if (selectedVersion->getViewName() == baseNamePackage)
{
showWarning(tr("Нельзя удалить базовый пакет"));
return;
}
if (selectedVersion->getViewName() == versionContainer->getServerVersion())
{
showWarning(tr("Нельзя удалить активную версию"));
return;
}
emit sigSendDeleteVersion(selectedVersion);
}
void VersionSelectWidget::on_switchServerVersionButton_clicked()
{
if (selectedVersion != nullptr){
emit sigSendSwitchVersion(selectedVersion);
if (selectedVersion == nullptr)
{
showWarning(tr("Версия не выбрана"));
return;
}
versionContainer->setServerVersonData(selectedVersion);
ui->verValue->setText(selectedVersion->getViewName());
emit sigSendSwitchVersion(selectedVersion);
}
void VersionSelectWidget::showWarning(QString text)
{
QMessageBox warning;
warning.setText(text);
warning.setIcon(QMessageBox::Warning);
warning.setWindowTitle(tr("Ошибка"));
warning.exec();
}
VersionSelectWidget::~VersionSelectWidget()

View File

@@ -18,12 +18,13 @@ class VersionSelectWidget : public QWidget
public:
explicit VersionSelectWidget(QWidget *parent = nullptr);
void initialize(SendSystem *sendSystem);
void fillView(QList<StreamingVersionData*> *serverData);
~VersionSelectWidget();
void fillCurrentVersionName(QString versionName);
void initialize(SendSystem *sendSystem,VersionContainer *versionContainer);
void fillView(QList<StreamingVersionData*> *serverData);
void sendCopyEmit(QString newName);
void showWarning(QString text);
~VersionSelectWidget();
private slots:
void on_verListView_itemDoubleClicked(QListWidgetItem *item);
void on_createDuplicateButton_clicked();
@@ -39,6 +40,7 @@ private:
Ui::VersionSelectWidget *ui;
SendSystem *sendSystem;
QList<StreamingVersionData*> *serverDataList;
VersionContainer *versionContainer;
StreamingVersionData *selectedVersion;
};

View File

@@ -146,7 +146,7 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>180</width>
<width>170</width>
<height>20</height>
</size>
</property>