diff --git a/chat_widget.py b/chat_widget.py
index 6d0e77e..59ae1c2 100644
--- a/chat_widget.py
+++ b/chat_widget.py
@@ -26,14 +26,103 @@ def setupUi(self, Form):
font.setFamily("Consolas")
font.setPointSize(10)
self.chat_text.setFont(font)
- self.chat_text.setStyleSheet("selection-background-color: rgb(161, 75, 0);")
+ self.chat_text.setStyleSheet("selection-background-color: rgb(161, 75, 0);\n"
+"\n"
+"QScrollBar::handle {\n"
+"border-syle: outset;\n"
+"background: #444444;\n"
+"border-width: 2px;\n"
+"border-radius: 10px;\n"
+"}\n"
+"\n"
+"QScrollBar::handle::pressed {\n"
+"background: rgb(161, 75, 0);\n"
+"}\n"
+"\n"
+"QScrollBar::add-page {\n"
+"background-color: rgb(43, 43, 43);\n"
+"}")
+ self.chat_text.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.chat_text.setUndoRedoEnabled(False)
self.chat_text.setReadOnly(True)
self.chat_text.setObjectName("chat_text")
self.horizontalLayout_4.addWidget(self.chat_text)
+ self.verticalScrollBar = QtWidgets.QScrollBar(Form)
+ self.verticalScrollBar.setStyleSheet("QScrollBar:vertical {\n"
+" border: 0px solid;\n"
+" background: rgb(43, 43, 43);\n"
+" width: 15px;\n"
+" margin: 16px 0 16px 0;\n"
+" }\n"
+" QScrollBar::handle:vertical {\n"
+" background: rgb(161, 75, 0);\n"
+" border-width: 2px;\n"
+" border-radius: 10px;\n"
+" }\n"
+" QScrollBar::add-line:vertical {\n"
+" border: 0px solid;\n"
+" background-color: rgb(43, 43, 43);\n"
+" height: 16px;\n"
+" subcontrol-position: bottom;\n"
+" subcontrol-origin: margin;\n"
+" image: url(:/arrows/up_arrow_dark.png);\n"
+" }\n"
+"\n"
+" QScrollBar::sub-line:vertical {\n"
+" border: 0px solid;\n"
+" background: rgb(43, 43, 43);\n"
+" height: 16px;\n"
+" subcontrol-position: top;\n"
+" subcontrol-origin: margin;\n"
+" image: url(:/arrows/down_arrow_dark.png);\n"
+" }\n"
+"\n"
+" QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\n"
+" background: none;\n"
+" }")
+ self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical)
+ self.verticalScrollBar.setObjectName("verticalScrollBar")
+ self.horizontalLayout_4.addWidget(self.verticalScrollBar)
+ self.verticalScrollBar_2 = QtWidgets.QScrollBar(Form)
+ self.verticalScrollBar_2.setStyleSheet("QScrollBar:vertical {\n"
+" border: 0px solid;\n"
+" background: rgb(43, 43, 43);\n"
+" width: 15px;\n"
+" margin: 16px 0 16px 0;\n"
+" }\n"
+" QScrollBar::handle:vertical {\n"
+" background: rgb(161, 75, 0);\n"
+" border-width: 2px;\n"
+" border-radius: 10px;\n"
+" }\n"
+" QScrollBar::add-line:vertical {\n"
+" border: 0px solid;\n"
+" background-color: rgb(43, 43, 43);\n"
+" height: 16px;\n"
+" subcontrol-position: bottom;\n"
+" subcontrol-origin: margin;\n"
+" image: url(:/arrows/up_arrow_dark.png);\n"
+" }\n"
+"\n"
+" QScrollBar::sub-line:vertical {\n"
+" border: 0px solid;\n"
+" background: rgb(43, 43, 43);\n"
+" height: 16px;\n"
+" subcontrol-position: top;\n"
+" subcontrol-origin: margin;\n"
+" image: url(:/arrows/down_arrow_dark.png);\n"
+" }\n"
+"\n"
+" QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\n"
+" background: none;\n"
+" }")
+ self.verticalScrollBar_2.setOrientation(QtCore.Qt.Vertical)
+ self.verticalScrollBar_2.setObjectName("verticalScrollBar_2")
+ self.horizontalLayout_4.addWidget(self.verticalScrollBar_2)
self.members_list = QtWidgets.QTreeWidget(Form)
self.members_list.setMinimumSize(QtCore.QSize(144, 0))
self.members_list.setMaximumSize(QtCore.QSize(144, 16777215))
+ self.members_list.setStyleSheet("selection-background-color: rgb(161, 75, 0);")
self.members_list.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.members_list.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.members_list.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.SelectedClicked)
@@ -44,6 +133,7 @@ def setupUi(self, Form):
self.members_list.setExpandsOnDoubleClick(True)
self.members_list.setObjectName("members_list")
self.members_list.header().setVisible(False)
+ self.members_list.header().setStretchLastSection(True)
self.horizontalLayout_4.addWidget(self.members_list)
self.verticalLayout.addLayout(self.horizontalLayout_4)
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
@@ -76,3 +166,4 @@ def retranslateUi(self, Form):
self.members_list.headerItem().setText(0, _translate("Form", "Members"))
self.message_text.setText(_translate("Form", "На данный момент отправить сообщение нельзя"))
self.send_msg_btn.setText(_translate("Form", "Отправить"))
+import resources_rc
diff --git a/chat_widget.ui b/chat_widget.ui
index 32067b3..2d7b465 100644
--- a/chat_widget.ui
+++ b/chat_widget.ui
@@ -29,7 +29,25 @@ color: rgb(255, 255, 255);
- selection-background-color: rgb(161, 75, 0);
+ selection-background-color: rgb(161, 75, 0);
+
+QScrollBar::handle {
+border-syle: outset;
+background: #444444;
+border-width: 2px;
+border-radius: 10px;
+}
+
+QScrollBar::handle::pressed {
+background: rgb(161, 75, 0);
+}
+
+QScrollBar::add-page {
+background-color: rgb(43, 43, 43);
+}
+
+
+ Qt::ScrollBarAsNeeded
false
@@ -39,6 +57,88 @@ color: rgb(255, 255, 255);
+ -
+
+
+ QScrollBar:vertical {
+ border: 0px solid;
+ background: rgb(43, 43, 43);
+ width: 15px;
+ margin: 16px 0 16px 0;
+ }
+ QScrollBar::handle:vertical {
+ background: rgb(161, 75, 0);
+ border-width: 2px;
+ border-radius: 10px;
+ }
+ QScrollBar::add-line:vertical {
+ border: 0px solid;
+ background-color: rgb(43, 43, 43);
+ height: 16px;
+ subcontrol-position: bottom;
+ subcontrol-origin: margin;
+ image: url(:/arrows/up_arrow_dark.png);
+ }
+
+ QScrollBar::sub-line:vertical {
+ border: 0px solid;
+ background: rgb(43, 43, 43);
+ height: 16px;
+ subcontrol-position: top;
+ subcontrol-origin: margin;
+ image: url(:/arrows/down_arrow_dark.png);
+ }
+
+ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
+ background: none;
+ }
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ QScrollBar:vertical {
+ border: 0px solid;
+ background: rgb(43, 43, 43);
+ width: 15px;
+ margin: 16px 0 16px 0;
+ }
+ QScrollBar::handle:vertical {
+ background: rgb(161, 75, 0);
+ border-width: 2px;
+ border-radius: 10px;
+ }
+ QScrollBar::add-line:vertical {
+ border: 0px solid;
+ background-color: rgb(43, 43, 43);
+ height: 16px;
+ subcontrol-position: bottom;
+ subcontrol-origin: margin;
+ image: url(:/arrows/up_arrow_dark.png);
+ }
+
+ QScrollBar::sub-line:vertical {
+ border: 0px solid;
+ background: rgb(43, 43, 43);
+ height: 16px;
+ subcontrol-position: top;
+ subcontrol-origin: margin;
+ image: url(:/arrows/down_arrow_dark.png);
+ }
+
+ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
+ background: none;
+ }
+
+
+ Qt::Vertical
+
+
+
-
@@ -53,6 +153,9 @@ color: rgb(255, 255, 255);
16777215
+
+ selection-background-color: rgb(161, 75, 0);
+
Qt::ScrollBarAlwaysOff
@@ -80,6 +183,9 @@ color: rgb(255, 255, 255);
false
+
+ true
+
Members
@@ -141,6 +247,8 @@ color: rgb(79, 79, 79);
-
+
+
+
diff --git a/down_arrow_dark.png b/down_arrow_dark.png
new file mode 100644
index 0000000..9b21500
Binary files /dev/null and b/down_arrow_dark.png differ
diff --git a/down_arrow_light.png b/down_arrow_light.png
new file mode 100644
index 0000000..a2dd547
Binary files /dev/null and b/down_arrow_light.png differ
diff --git a/flight.py b/flight.py
index 73e51d4..53185fd 100644
--- a/flight.py
+++ b/flight.py
@@ -16,14 +16,15 @@
from dlg003 import Ui_Dialog as swiz_003
from dlg004 import Ui_Dialog as aboutprg
from dlg005 import Ui_Dialog as ext_sett
+from progresswindow import Ui_Dialog as progrdlg
from chat_widget import Ui_Form as chatwidg
from mention_notif import Ui_Dialog as mention_notif_window
settings = configparser.ConfigParser()
profiles = configparser.ConfigParser()
-version = '1.0.1'
-date = '2021-09-01'
+version = '0.5.0 Beta'
+date = '2021-09-04'
init_required = 1
@@ -112,10 +113,22 @@ def run(self):
self.socket.send(bytes("NICK " + self.username + "\n", self.encoding))
while True:
- self.text=self.socket.recv(2040)
+ self.text=self.socket.recv(8192)
self.ping = time.time()
- self.started.emit(''.join(self.text.decode(self.encoding).split(":")), self.server, self.port, self.username, self.encoding, self.quiting_msg, self.ping, self.socket)
- msg_list = self.text.decode(self.encoding).splitlines()
+ try:
+ for line in self.text.decode(self.encoding).splitlines():
+ if ' '.join(msg_line.split(' ')[0:2]).find('321') != -1:
+ self.started.emit('{0}{1}'.format('Please wait...', ':'.join(line.split(":")[2:])), self.server, self.port, self.username, self.encoding, self.quiting_msg, self.ping, self.socket)
+ if ' '.join(msg_line.split(' ')[0:2]).find('322') != -1:
+ time.sleep(0.2)
+ self.started.emit('{0}{1}'.format(''.join(line.split(":")[:2]), ':'.join(line.split(":")[2:])), self.server, self.port, self.username, self.encoding, self.quiting_msg, self.ping, self.socket)
+ except Exception as e:
+ if not str(e).startswith('\'utf-8\' codec can\'t decode byte'):
+ self.started.emit(''.join(self.text.decode(self.encoding).split(":")), self.server, self.port, self.username, self.encoding, self.quiting_msg, self.ping, self.socket)
+ try:
+ msg_list = self.text.decode(self.encoding).splitlines()
+ except:
+ msg_list = ['Oops']
for msg_line in msg_list:
if msg_line.startswith('PING'):
ping_msg = msg_line.split(' ')
@@ -124,7 +137,6 @@ def run(self):
elif msg_line.startswith(':{0} {1}'.format(self.server, '001')) and profiles[self.parent.ui.tableWidget.item(self.parent.ui.tableWidget.currentRow(), 0).text()]['AuthMethod'] == 'NickServ':
self.socket.send(bytes("PRIVMSG nickserv identify {0} {1}\r\n".format(self.username, self.password), self.encoding))
elif msg_line.startswith('ERROR'):
- print(msg_line)
self.socket.close()
tracemalloc.stop()
elif msg_line.startswith(':{0} {1}'.format(self.server, 433)):
@@ -135,6 +147,7 @@ def run(self):
self.socket.send(bytes("NICK " + self.username + "\n", self.encoding))
except:
pass
+
except Exception as e:
exc_type, exc_value, exc_tb = sys.exc_info()
ex = traceback.format_exception(exc_type, exc_value, exc_tb)
@@ -169,6 +182,8 @@ def __init__(self, parent=None):
profiles.read('profiles')
print('Tinelix codename Flight {0} ({1})\nDone!'.format(version, date))
self.ui.tabs.addTab(self.child_widget, 'Thread')
+ self.child_widget.chat_text.setVerticalScrollBar(self.child_widget.verticalScrollBar)
+ self.child_widget.members_list.setVerticalScrollBar(self.child_widget.verticalScrollBar_2)
self.child_widget.members_list.setVisible(False)
try:
font = QFont(settings['Main']['MsgFont'].split(', ')[0])
@@ -197,6 +212,8 @@ def __init__(self, parent=None):
self.child_widget.members_list.setStyleSheet('selection-background-color: #ff7700')
if self.child_widget.message_text.isEnabled() == True:
self.child_widget.message_text.setStyleSheet('selection-background-color: #ff7700')
+ self.child_widget.verticalScrollBar.setStyleSheet('QScrollBar:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: #ff7700;\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_light.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_light.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
+ self.child_widget.verticalScrollBar_2.setStyleSheet('QScrollBar:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: #ff7700;\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_light.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_light.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
else:
self.ui.line.setStyleSheet('color: #4a4a4a')
self.child.setStyleSheet('background-color: #313131;\ncolor: #ffffff;')
@@ -207,6 +224,8 @@ def __init__(self, parent=None):
self.child_widget.members_list.setStyleSheet('selection-background-color: #a14b00')
if self.child_widget.message_text.isEnabled() == True:
self.child_widget.message_text.setStyleSheet('selection-background-color: #a14b00')
+ self.child_widget.verticalScrollBar.setStyleSheet('QScrollBar:vertical {border: 0px solid;\nbackground: rgb(43, 43, 43);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: rgb(161, 75, 0);\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_dark.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_dark.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
+ self.child_widget.verticalScrollBar_2.setStyleSheet('QScrollBar:vertical {border: 0px solid;\nbackground: rgb(43, 43, 43);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: rgb(161, 75, 0);\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_dark.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_dark.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
#swiz001 = SettingsWizard001()
if settings.sections() == [] or profiles.sections == []:
@@ -335,6 +354,8 @@ def change_theme(self):
tab.setStyleSheet('background-color: #ffffff;\ncolor: #000000;')
tab.chat_text.setStyleSheet('selection-background-color: #ff7700')
tab.members_list.setStyleSheet('selection-background-color: #ff7700')
+ tab.verticalScrollBar.setStyleSheet('QScrollBar:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: #ff7700;\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_light.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_light.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
+ tab.verticalScrollBar_2.setStyleSheet('QScrollBar:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: #ff7700;\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_light.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_light.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
if self.child_widget.message_text.isEnabled() == True:
self.child_widget.message_text.setStyleSheet('selection-background-color: #ff7700')
else:
@@ -364,6 +385,8 @@ def change_theme(self):
tab.setStyleSheet('background-color: #313131;\ncolor: #ffffff;')
tab.chat_text.setStyleSheet('selection-background-color: #a14b00')
tab.members_list.setStyleSheet('selection-background-color: #a14b00')
+ tab.verticalScrollBar.setStyleSheet('QScrollBar:vertical {border: 0px solid;\nbackground: rgb(43, 43, 43);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: rgb(161, 75, 0);\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_dark.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_dark.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
+ tab.verticalScrollBar_2.setStyleSheet('QScrollBar:vertical {border: 0px solid;\nbackground: rgb(43, 43, 43);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: rgb(161, 75, 0);\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_dark.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_dark.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
if self.child_widget.message_text.isEnabled() == True:
self.child_widget.message_text.setStyleSheet('selection-background-color: #a14b00')
try:
@@ -738,6 +761,9 @@ def __init__(self, parent=None):
self.ui.del_profile_btn.setEnabled(False)
self.ui.del_profile_btn.setStyleSheet('color: #4f4f4f')
self.parent = parent
+ self.progr = ProgressDlg(self)
+ self.progr.ui.frame.setVisible(False)
+ self.progr.ui.additional_btn.clicked.connect(self.progress_additional)
self.channel = None
self.timer = QTimer()
self.connected = False
@@ -747,6 +773,7 @@ def __init__(self, parent=None):
self.members = []
self.operators = []
self.owners = []
+ self.channels = {}
try:
if settings['Main']['DarkTheme'] == 'Disabled':
self.setStyleSheet('background-color: #ffffff;\ncolor: #000000;')
@@ -808,6 +835,9 @@ def irc_connect(self):
self.now = datetime.datetime.now()
self.parent.child_widget.message_text.setText('')
self.parent.child_widget.message_text.setEnabled(True)
+ self.parent.ui.join_item.setEnabled(True)
+ self.parent.ui.msg_history.setEnabled(True)
+ self.parent.ui.join_item.triggered.connect(self.join_channel)
if settings.sections() != [] and settings['Main']['DarkTheme'] == 'Disabled':
self.parent.child_widget.message_text.setStyleSheet('selection-background-color: rgb(255, 119, 0); color: #000000')
else:
@@ -1002,8 +1032,11 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
tab = self.parent.ui.tabs.widget(i)
tab.members_list.clear()
tab.members_list.addTopLevelItems([owners_list, operators_list, members_list])
+ operators_list.setIcon(0, QIcon(':/icons/operator_icon.png'))
operators_list.setExpanded(True)
+ members_list.setIcon(0, QIcon(':/icons/member_icon.png'))
members_list.setExpanded(True)
+ owners_list.setIcon(0, QIcon(':/icons/owner_icon.png'))
owners_list.setExpanded(True)
self.members = []
self.operators = []
@@ -1012,9 +1045,9 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
exc_type, exc_value, exc_tb = sys.exc_info()
ex = traceback.format_exception(exc_type, exc_value, exc_tb)
print("\n".join(ex))
- elif msg_line.startswith('{0} {1}'.format(self.server, 366)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('366') != -1:
pass
- elif msg_line.startswith('{0} {1}'.format(self.server, 372)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('372') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1023,7 +1056,8 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
tab.chat_text.setHtml('{0}\nMOTD: {1}'.format(tab.chat_text.toHtml(), " ".join(msg_line.split(' ')[3:])))
except:
tab.chat_text.setHtml('{0}\nMOTD: {1}'.format(tab.chat_text.toHtml(), "".join(" ".join(msg_line.split(' ')[3:]).splitlines()[0])))
- elif msg_line.startswith('{0} {1}'.format(self.server, 371)):
+ tab.chat_text.moveCursor(QTextCursor.End)
+ elif ' '.join(msg_line.split(' ')[0:2]).find('371') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1032,7 +1066,8 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
tab.chat_text.setHtml('{0}\nInfo: {1}'.format(tab.chat_text.toHtml(), " ".join(msg_line.split(' ')[3:])))
except:
tab.chat_text.setHtml('{0}\nInfo: {1}'.format(tab.chat_text.toHtml(), "".join(" ".join(msg_line.split(' ')[3:]).splitlines()[0])))
- elif msg_line.startswith('{0} {1}'.format(self.server, 671)):
+ tab.chat_text.moveCursor(QTextCursor.End)
+ elif ' '.join(msg_line.split(' ')[0:2]).find('671') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1041,29 +1076,59 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
tab.chat_text.setHtml('{0}\n{1} using a TLS/SSL connection.'.format(tab.chat_text.toHtml(), " ".join(msg_line.split(' ')[3])))
except:
tab.chat_text.setHtml('{0}\n{1} using a TLS/SSL connection.'.format(tab.chat_text.toHtml(), " ".join(msg_line.split(' ')[3])))
- elif msg_line.startswith('{0} {1}'.format(self.server, 318)):
+ tab.chat_text.moveCursor(QTextCursor.End)
+ elif ' '.join(msg_line.split(' ')[0:2]).find('318') != -1:
pass
- elif msg_line.startswith('{0} {1}'.format(self.server, 321)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('321') != -1:
pass
- elif msg_line.startswith('{0} {1}'.format(self.server, 374)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('374') != -1:
pass
- elif msg_line.startswith('{0} {1}'.format(self.server, 322)):
- for i in range(self.parent.ui.tabs.count()):
- if self.parent.ui.tabs.tabText(i) == self.parent.ui.tabs.tabText(self.parent.ui.tabs.currentIndex()):
- tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
- try:
- if settings['Main']['MsgBacklight'] == 'Disabled':
- tab.chat_text.setHtml('{0}{1}
Topic: {2}
Members: {3}
------------------------------------'.format(tab.chat_text.toHtml(), msg_line.split(' ')[3], " ".join(msg_line.split(' ')[5:]).replace('http//', 'http://').replace('https//', 'https://').replace('ftp//', 'ftp://'), msg_line.split(' ')[4]))
- else:
- tab.chat_text.setHtml('{0}{1}
Topic: {2}
Members: {3}
-------------------------------------'.format(tab.chat_text.toHtml(), msg_line.split(' ')[3], " ".join(msg_line.split(' ')[5:]).replace('http//', 'http://').replace('https//', 'https://').replace('ftp//', 'ftp://'), msg_line.split(' ')[4]))
- except:
- tab.chat_text.setHtml('{0}{1}
Topic: {2}
Members: {3}
------------------------------------'.format(tab.chat_text.toHtml(), msg_line.split(' ')[3], " ".join(msg_line.split(' ')[5:]).replace('http//', 'http://').replace('https//', 'https://').replace('ftp//', 'ftp://'), msg_line.split(' ')[4]))
- self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).chat_text.moveCursor(QTextCursor.End)
- elif msg_line.startswith('{0} {1}'.format(self.server, 376)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('322') != -1:
+ try:
+ tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
+ if settings['Main']['DarkTheme'] == 'Disabled':
+ self.progr.setStyleSheet('background-color: #ffffff; color: #000000;')
+ self.progr.ui.progressBar.setStyleSheet('selection-background-color: #ff7700;')
+ elif settings['Main']['DarkTheme'] == 'Enabled':
+ self.progr.setStyleSheet('background-color: #313131; color: #ffffff;')
+ self.progr.ui.progressBar.setStyleSheet('selection-background-color: rgb(161, 75, 0);')
+ self.progr.ui.value.setText(msg_line.split(' ')[3])
+ if len(self.channels) > 10 and settings['Main']['Language'] == 'English':
+ self.progr.ui.progresstext.setText(en_US.get()['p_chanls'].format(len(self.channels)))
+ self.progr.setWindowTitle(en_US.get()['prgrwait'])
+ self.progr.ui.additional_btn.setText(en_US.get()['addit_bt'])
+ self.progr.ui.propertie.setText(en_US.get()['channelp'])
+ elif len(self.channels) > 10 and settings['Main']['Language'] == 'Russian':
+ self.progr.ui.progresstext.setText(ru_RU.get()['p_chanls'].format(len(self.channels)))
+ self.progr.ui.additional_btn.setText(ru_RU.get()['addit_bt'])
+ self.progr.setWindowTitle(ru_RU.get()['prgrwait'])
+ self.progr.ui.propertie.setText(ru_RU.get()['channelp'])
+ elif len(self.channels) == 10:
+ self.progr.exec_()
+ self.channels.update({msg_line.split(' ')[3]: {'name': msg_line.split(' ')[3], 'topic': " ".join(msg_line.split(' ')[5:]), 'members': int(msg_line.split(' ')[4])}})
+ except Exception as e:
+ pass
+ elif ' '.join(msg_line.split(' ')[0:2]).find('323') != -1:
+ try:
+ self.progr.close()
+ except:
+ pass
+ for channel in self.channels:
+ tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
+ try:
+ if settings['Main']['MsgBacklight'] == 'Disabled':
+ tab.chat_text.setHtml('{0}{1}
Topic: {2}
Members: {3}
------------------------------------'.format(tab.chat_text.toHtml(), self.channels[channel]['name'], self.channels[channel]['topic'], self.channels[channel]['members']))
+ else:
+ tab.chat_text.setHtml('{0}{1}
Topic: {2}
Members: {3}
-------------------------------------'.format(tab.chat_text.toHtml(), self.channels[channel]['name'], self.channels[channel]['topic'], self.channels[channel]['members']))
+ except:
+ tab.chat_text.setHtml('{0}{1}
Topic: {2}
Members: {3}
------------------------------------'.format(tab.chat_text.toHtml(), self.channels[channel]['name'], self.channels[channel]['topic'], self.channels[channel]['members']))
+ self.channels = {}
+ self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).chat_text.moveCursor(QTextCursor.End)
+ elif ' '.join(msg_line.split(' ')[0:2]).find('376') != -1:
pass
- elif msg_line.startswith('{0} {1}'.format(self.server, 378)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('378') != -1:
pass
- elif msg_line.startswith('{0} {1}'.format(self.server, 312)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('312') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1073,7 +1138,7 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
except:
tab.chat_text.setHtml('{0}{1}'.format(tab.chat_text.toHtml(), " ".join(msg_line.split(' ')[4:])))
self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).chat_text.moveCursor(QTextCursor.End)
- elif msg_line.startswith('{0} {1}'.format(self.server, 311)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('311') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1084,7 +1149,7 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
except:
tab.chat_text.setHtml('{0}{1} ({2}@{3})
Real name: {4}
------------------------------------'.format(tab.chat_text.toHtml(), msg_line.split(' ')[3], msg_line.split(' ')[4], msg_line.split(' ')[5], ' '.join(msg_line.split(' ')[7:]).splitlines()[0]))
tab.chat_text.moveCursor(QTextCursor.End)
- elif msg_line.startswith('{0} {1}'.format(self.server, 332)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('332') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1097,7 +1162,7 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
print("\n".join(ex))
tab.chat_text.setHtml('{0}\nTopic: {1}'.format(tab.chat_text.toHtml(), " ".join(msg_line.split(' ')[3:]).replace('http//', 'http://').replace('https//', 'https://')))
tab.chat_text.moveCursor(QTextCursor.End)
- elif msg_line.startswith('{0} {1}'.format(self.server, 333)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('333') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1110,7 +1175,7 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
print("\n".join(ex))
tab.chat_text.setHtml('{0}\nTopic set by {1} ({2})'.format(tab.chat_text.toHtml(), msg_line.split(' ')[4], datetime.datetime.fromtimestamp(int(msg_line.split(' ')[5])).strftime('%Y-%m-%d %H:%M:%S')))
tab.chat_text.moveCursor(QTextCursor.End)
- elif msg_line.startswith('{0} {1}'.format(self.server, 319)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('319') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1123,7 +1188,7 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
print("\n".join(ex))
tab.chat_text.setHtml('{0}\nMutual channels: {1}'.format(tab.chat_text.toHtml(), " ".join(msg_line.split(' ')[4:]).replace('@', '').replace('~', '').replace('&', '')))
tab.chat_text.moveCursor(QTextCursor.End)
- elif msg_line.startswith('{0} {1}'.format(self.server, 317)):
+ elif ' '.join(msg_line.split(' ')[0:2]).find('317') != -1:
tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
try:
if settings['Main']['MsgBacklight'] == 'Disabled':
@@ -1186,7 +1251,6 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
exc_type, exc_value, exc_tb = sys.exc_info()
ex = traceback.format_exception(exc_type, exc_value, exc_tb)
print("\n".join(ex))
-
self.parent.child_widget.chat_text.setHtml('{0}\n{1}'.format(self.parent.child_widget.chat_text.toHtml(), msg_line))
self.parent.child_widget.chat_text.moveCursor(QTextCursor.End)
elif msg_line.find('JOIN') != -1:
@@ -1259,7 +1323,6 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
print("\n".join(ex))
self.parent.child_widget.chat_text.setHtml('{0}
{1}'.format(self.parent.child_widget.chat_text.toHtml(), msg_line))
self.parent.child_widget.chat_text.moveCursor(QTextCursor.End)
-
elif msg_line.find('QUIT') != -1:
try:
decoded_text = status.replace('!', ' ').split(' ')
@@ -1310,6 +1373,7 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
except:
tab.chat_text.setHtml('{0}\n{1} changed nickname to {2}. ({3})'.format(tab.chat_text.toHtml(), decoded_text[0], " ".join(decoded_text[3:]).splitlines()[0], datetime.datetime.now().strftime("%H:%M:%S")))
tab.chat_text.moveCursor(QTextCursor.End)
+ self.socket.send(bytes('NAMES {0}\r\n'.format(self.parent.ui.tabs.tabText(i)), self.encoding))
try:
if settings['Main']['Language'] == 'English':
self.parent.ui.status_label.setText(en_US.get()['rdstatus'])
@@ -1318,8 +1382,8 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
except:
pass
except:
- self.parent.child_widget.chat_text.setHtml('{0}\n{1}'.format(self.parent.child_widget.chat_text.toHtml(), msg_line))
- self.parent.child_widget.chat_text.moveCursor(QTextCursor.End)
+ if self.channels == {} and self.owners == [] and self.operators == [] and self.members == []:
+ self.parent.child_widget.chat_text.setHtml('{0}\n{1}'.format(self.parent.child_widget.chat_text.toHtml(), msg_line))
self.parent.child_widget.chat_text.moveCursor(QTextCursor.End)
elif msg_line.startswith('Exception: '):
self.parent.child_widget.chat_text.setHtml('{0}'.format(msg_line))
@@ -1350,12 +1414,11 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
message_code.append(int(string))
if msg_line.index(string) > 1 and message_code != []:
message_splited.append(string.splitlines()[0])
- if message_code != []:
+ if message_code != [] and (self.channels == {} and self.owners == [] and self.operators == [] and self.members == []):
tab.chat_text.setHtml('{0}\nCode {1:03d}: {2}'.format(tab.chat_text.toHtml(), message_code[0], ' '.join(message_splited[2:])))
- else:
+ elif (self.channels == {} and self.owners == [] and self.operators == [] and self.members == []):
tab.chat_text.setHtml('{0}\n{1}'.format(tab.chat_text.toHtml(), msg_line))
tab.chat_text.moveCursor(QTextCursor.End)
- self.parent.child_widget.chat_text.moveCursor(QTextCursor.End)
try:
if not msg_line.startswith('Exception: ') and settings.sections() != [] and settings['Main']['MsgHistory'] == 'Enabled':
if not os.path.exists('history'):
@@ -1363,10 +1426,14 @@ def started(self, status, server, port, nickname, encoding, quiting_msg, ping, s
for i in range(self.parent.ui.tabs.count()):
with open('history/irc_{0}_{1}_{2}.html'.format(self.parent.ui.tabs.tabText(i), self.ui.tableWidget.item(self.ui.tableWidget.currentRow(), 0).text(), self.now.strftime('%Y-%m-%d_%H.%M.%S')), 'w+') as f:
f.write(self.parent.ui.tabs.widget(i).chat_text.toHtml())
+ self.parent.ui.msg_history.triggered.disconnect()
+ self.parent.ui.msg_history.triggered.connect(self.show_channel_history)
else:
for i in range(self.parent.ui.tabs.count()):
with open('history/irc_{0}_{1}_{2}.html'.format(self.parent.ui.tabs.tabText(i), str(self.ui.tableWidget.item(self.ui.tableWidget.currentRow(), 0).text()), self.now.strftime('%Y-%m-%d_%H.%M.%S')), 'w+') as f:
f.write(self.parent.ui.tabs.widget(i).chat_text.toHtml())
+ self.parent.ui.msg_history.triggered.disconnect()
+ self.parent.ui.msg_history.triggered.connect(self.show_channel_history)
except:
pass
@@ -1378,12 +1445,21 @@ def irc_reconnect_msg(self):
self.parent.child_widget.chat_text.setHtml('{0}\nReconnecting...'.format(self.parent.child_widget.chat_text.toHtml()))
self.timer_2.stop()
+ def progress_additional(self):
+ if self.progr.ui.frame.isVisible() == False:
+ self.progr.ui.frame.setVisible(True)
+ else:
+ self.progr.ui.frame.setVisible(False)
+
def send_msg(self):
if self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).message_text.text().startswith('/join '):
msg_list = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).message_text.text().split(' ')
if self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).message_text.text().startswith('/join #'):
self.socket.send(bytes('JOIN {0}\r\n'.format(msg_list[1]), self.encoding))
self.channel = msg_list[1]
+ if self.parent.ui.leave_item.isEnabled() == False:
+ self.parent.ui.leave_item.setEnabled(True)
+ self.parent.ui.leave_item.triggered.connect(self.leave_channel)
else:
self.socket.send(bytes('JOIN #{0}\r\n'.format(msg_list[1]), self.encoding))
self.channel = '#{0}'.format(msg_list[1])
@@ -1394,26 +1470,20 @@ def send_msg(self):
self.tab.setStyleSheet('background-color: #ffffff;\ncolor: #000000;\nselection-background-color: rgb(255, 119, 0);')
self.tab.chat_text.setStyleSheet('selection-background-color: rgb(255, 119, 0);')
self.tab.members_list.setStyleSheet('selection-background-color: #ff7700;')
+ self.tab.verticalScrollBar.setStyleSheet('QScrollBar:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: #ff7700;\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_light.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_light.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
+ self.tab.verticalScrollBar_2.setStyleSheet('QScrollBar:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: #a14b00;\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_light.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(255, 255, 255);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_light.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
else:
self.tab.setStyleSheet('background-color: #313131;\ncolor: #ffffff;\nselection-background-color: rgb(161, 75, 0);')
self.tab.chat_text.setStyleSheet('selection-background-color: rgb(161, 75, 0);')
self.tab.members_list.setStyleSheet('selection-background-color: #a14b00;')
+ self.tab.verticalScrollBar.setStyleSheet('QScrollBar:vertical {border: 0px solid;\nbackground: rgb(43, 43, 43);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: rgb(161, 75, 0);\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_dark.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_dark.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
+ self.tab.verticalScrollBar_2.setStyleSheet('QScrollBar:vertical {border: 0px solid;\nbackground: rgb(43, 43, 43);\nwidth: 15px;\nmargin: 16px 0 16px 0;\n}\nQScrollBar::handle:vertical {\nbackground: rgb(161, 75, 0);\nborder-width: 2px;\nborder-radius: 10px;\n}\n\nQScrollBar::add-line:vertical {\nborder: 0px solid;\nbackground-color: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: bottom;\nsubcontrol-origin: margin;\nimage: url(:/arrows/up_arrow_dark.png);\n}\n\nQScrollBar::sub-line:vertical {\nborder: 0px solid;\nbackground: rgb(43, 43, 43);\nheight: 16px;\nsubcontrol-position: top;\nsubcontrol-origin: margin;\nimage: url(:/arrows/down_arrow_dark.png);\n}\n\nQScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {\nbackground: none;\n}')
self.tab.members_list.setContextMenuPolicy(Qt.CustomContextMenu)
self.tab.members_list.customContextMenuRequested.connect(self.call_member_cm)
self.member_context_menu = QMenu(self)
- try:
- settings.read('settings')
- if settings.sections() != [] and settings['Main']['Language'] == 'English':
- self.mention_item = self.member_context_menu.addAction(en_US.get()['mntion_a'])
- self.whoism_item = self.member_context_menu.addAction(en_US.get()['whoism_a'])
- self.ping_item = self.member_context_menu.addAction(en_US.get()['pingctcp'])
- else:
- self.mention_item = self.member_context_menu.addAction(ru_RU.get()['mntion_a'])
- self.whoism_item = self.member_context_menu.addAction(ru_RU.get()['whoism_a'])
- self.ping_item = self.member_context_menu.addAction(ru_RU.get()['pingctcp'])
- except:
- pass
self.parent.ui.tabs.addTab(self.tab, self.channel)
+ self.tab.chat_text.setVerticalScrollBar(self.tab.verticalScrollBar)
+ self.tab.members_list.setVerticalScrollBar(self.tab.verticalScrollBar_2)
self.tab.message_text.setEnabled(True)
self.tab.send_msg_btn.setEnabled(False)
self.tab.send_msg_btn.clicked.connect(self.send_msg)
@@ -1547,6 +1617,31 @@ def send_msg(self):
self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).message_text.setText('')
self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).chat_text.moveCursor(QTextCursor.End)
+ def leave_channel(self):
+ for i in range(self.parent.ui.tabs.count()):
+ if i > 0 and i == self.parent.ui.tabs.currentIndex():
+ try:
+ self.socket.send(bytes('PART {0}\r\n'.format(self.parent.ui.tabs.tabText(self.parent.ui.tabs.currentIndex())), self.encoding))
+ self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).members_list.clear()
+ self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).members_list.setVisible(False)
+ self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).message_text.setEnabled(False)
+ self.parent.ui.tabs.removeTab(self.parent.ui.tabs.currentIndex())
+ if settings.sections() != [] and settings['Main']['Language'] == 'English':
+ self.parent.ui.status_label.setText(en_US.get()['rdstatus'])
+ else:
+ self.parent.ui.status_label.setText(ru_RU.get()['rdstatus'])
+ except:
+ pass
+
+ def join_channel(self):
+ self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex()).message_text.setText('/join #')
+
+ def show_channel_history(self):
+ try:
+ webbrowser.open('history/irc_{0}_{1}_{2}.html'.format(self.parent.ui.tabs.tabText(self.parent.ui.tabs.currentIndex()), self.ui.tableWidget.item(self.ui.tableWidget.currentRow(), 0).text(), self.now.strftime('%Y-%m-%d_%H.%M.%S')))
+ except Exception as e:
+ print(e)
+
def chanjoined(self):
tabs_count = self.parent.ui.tabs.count() - 1
self.parent.ui.tabs.setCurrentIndex(tabs_count)
@@ -1558,8 +1653,38 @@ def chanjoined(self):
def call_member_cm(self, pos):
self.tab = self.parent.ui.tabs.widget(self.parent.ui.tabs.currentIndex())
- if self.tab.members_list.currentItem().parent() != None:
- context_menu = self.member_context_menu.exec_(self.tab.members_list.mapToGlobal(QPoint(-146, -0)))
+ try:
+ if self.tab.members_list.currentItem().parent() != None:
+ nick_action = QtWidgets.QWidgetAction(self.member_context_menu)
+ nick_label = QtWidgets.QLabel(self.tab.members_list.currentItem().text(0))
+ nick_action.setDefaultWidget(nick_label)
+ nick_action.setEnabled(False)
+ self.member_context_menu.clear()
+ try:
+ settings.read('settings')
+ if settings.sections() != [] and settings['Main']['DarkTheme'] == 'Enabled':
+ nick_label.setStyleSheet('QLabel {margin-left: 13px;\nfont-weight: 700; color: #828282}')
+ elif settings.sections() != [] and settings['Main']['DarkTheme'] == 'Disabled':
+ nick_label.setStyleSheet('QLabel {margin-left: 13px;\nfont-weight: 700; color: #626262}')
+ else:
+ nick_label.setStyleSheet('QLabel {margin-left: 13px;\nfont-weight: 700;}')
+ except:
+ pass
+ self.member_context_menu.addAction(nick_action)
+ try:
+ if settings.sections() != [] and settings['Main']['Language'] == 'English':
+ self.mention_item = self.member_context_menu.addAction(en_US.get()['mntion_a'])
+ self.whoism_item = self.member_context_menu.addAction(en_US.get()['whoism_a'])
+ self.ping_item = self.member_context_menu.addAction(en_US.get()['pingctcp'])
+ else:
+ self.mention_item = self.member_context_menu.addAction(ru_RU.get()['mntion_a'])
+ self.whoism_item = self.member_context_menu.addAction(ru_RU.get()['whoism_a'])
+ self.ping_item = self.member_context_menu.addAction(ru_RU.get()['pingctcp'])
+ except:
+ pass
+ context_menu = self.member_context_menu.exec_(self.tab.members_list.mapToGlobal(QPoint(-self.member_context_menu.width() - 2, -0)))
+ except:
+ pass
try:
if context_menu == self.mention_item and self.tab.members_list.currentItem().text(0) != '':
self.tab.message_text.setText(self.tab.members_list.currentItem().text(0))
@@ -1716,6 +1841,27 @@ def __init__(self, parent=None):
if settings.sections() != []:
self.ui.language_combo.setCurrentText(settings['Main']['Language'])
+class ProgressDlg(QtWidgets.QDialog, progrdlg):
+ def __init__(self, parent=None):
+ super(ProgressDlg, self).__init__(parent)
+ self.ui = progrdlg()
+ self.ui.setupUi(self)
+ self.parent = parent
+ self.setWindowFlag(Qt.CustomizeWindowHint, True)
+ self.setWindowFlag(Qt.WindowMinimizeButtonHint, False)
+ self.setWindowFlag(Qt.WindowMaximizeButtonHint, False)
+ self.setWindowFlag(Qt.WindowCloseButtonHint, False)
+ settings.read('settings')
+ try:
+ if settings.sections() != [] and settings['Main']['DarkTheme'] == 'Disabled':
+ self.setStyleSheet('background-color: #ffffff; color: #000000;')
+ self.progressBar.setStyleSheet('selection-background-color: #ff7700;')
+ elif settings.sections() != [] and settings['Main']['DarkTheme'] == 'Enabled':
+ self.setStyleSheet('background-color: #313131; color: #ffffff;')
+ self.progressBar.setStyleSheet('selection-background-color: rgb(161, 75, 0);')
+ except:
+ pass
+
class MentionNotificationWindow(QtWidgets.QDialog, mention_notif_window):
def __init__(self, parent=None):
super(MentionNotificationWindow, self).__init__(parent)
diff --git a/languages/en_US.py b/languages/en_US.py
index bf7dbb2..034e63e 100644
--- a/languages/en_US.py
+++ b/languages/en_US.py
@@ -33,9 +33,13 @@ def get():
'quit_msg': 'Quit message:',
'filemenu': 'File',
'viewmenu': 'View',
+ 'chanmenu': 'Channel',
'helpmenu': 'Help',
'conn_mi': 'Connect...',
'quit_mi': 'Quit',
+ 'joinchan': 'Join...',
+ 'lv_chan': 'Leave',
+ 'msg_hist': 'Messages history',
'about_mi': 'About...',
'send_msg': 'Send',
'chstatus': 'You are on the channel {0}.',
@@ -64,6 +68,10 @@ def get():
'msg_font': 'Messages font:',
'mentionl': '{0} mentioned you',
'opclient': 'Open',
+ 'p_chanls': 'Getting channel list... ({0})',
+ 'channelp': 'Channel:',
+ 'addit_bt': 'More',
+ 'prgrwait': 'Waiting',
'about_tt': 'About Tinelix IRC Client',
'prog_ver': '
Tinelix IRC Client (codename Flight, {0})
',
'free_sft': 'Written on Python, using Qt {0} with PyQt5 {1}',
diff --git a/languages/ru_RU.py b/languages/ru_RU.py
index f9f58d9..d31156a 100644
--- a/languages/ru_RU.py
+++ b/languages/ru_RU.py
@@ -33,9 +33,13 @@ def get():
'quit_msg': 'Сообщение при выходе:',
'filemenu': 'Файл',
'viewmenu': 'Вид',
+ 'chanmenu': 'Канал',
'helpmenu': 'Справка',
'conn_mi': 'Подключиться...',
'quit_mi': 'Выйти',
+ 'joinchan': 'Присоединиться...',
+ 'lv_chan': 'Покинуть',
+ 'msg_hist': 'История сообщений',
'about_mi': 'О программе...',
'send_msg': 'Отправить',
'chstatus': 'Вы находитесь на канале {0}.',
@@ -64,6 +68,10 @@ def get():
'msg_font': 'Шрифт сообщений:',
'mentionl': '{0} упомянул(a) вас',
'opclient': 'Открыть',
+ 'p_chanls': 'Получение списка каналов... ({0})',
+ 'channelp': 'Канал:',
+ 'addit_bt': 'Подробнее',
+ 'prgrwait': 'Ожидание',
'about_tt': 'О клиенте Tinelix IRC',
'prog_ver': 'Tinelix IRC Client (codename Flight, {0})
',
'free_sft': 'Написан на языке программирования Python, используется Qt {0} с PyQt5 {1}',
diff --git a/mainform.py b/mainform.py
index baa6420..7e0606d 100644
--- a/mainform.py
+++ b/mainform.py
@@ -1,169 +1,195 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'mainform.ui'
-#
-# Created by: PyQt5 UI code generator 5.15.4
-#
-# WARNING: Any manual changes made to this file will be lost when pyuic5 is
-# run again. Do not edit this file unless you know what you are doing.
-
-
-from PyQt5 import QtCore, QtGui, QtWidgets
-
-
-class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(595, 354)
- MainWindow.setMinimumSize(QtCore.QSize(544, 300))
- icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap("icon_48x48.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- MainWindow.setWindowIcon(icon)
- MainWindow.setStyleSheet("background-color: rgb(43, 43, 43);\n"
-"color: rgb(255, 255, 255);")
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
- self.verticalLayout.setContentsMargins(0, 0, 0, 0)
- self.verticalLayout.setSpacing(0)
- self.verticalLayout.setObjectName("verticalLayout")
- self.horizontalLayout = QtWidgets.QHBoxLayout()
- self.horizontalLayout.setSpacing(0)
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.tabs = QtWidgets.QTabWidget(self.centralwidget)
- self.tabs.setStyleSheet("")
- self.tabs.setTabsClosable(False)
- self.tabs.setObjectName("tabs")
- self.horizontalLayout.addWidget(self.tabs)
- self.verticalLayout.addLayout(self.horizontalLayout)
- self.verticalLayout_2 = QtWidgets.QVBoxLayout()
- self.verticalLayout_2.setContentsMargins(-1, -1, 0, 0)
- self.verticalLayout_2.setSpacing(0)
- self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
- self.horizontalLayout_2.setContentsMargins(-1, 0, -1, -1)
- self.horizontalLayout_2.setSpacing(4)
- self.horizontalLayout_2.setObjectName("horizontalLayout_2")
- self.verticalLayout_2.addLayout(self.horizontalLayout_2)
- self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
- self.horizontalLayout_3.setContentsMargins(-1, -1, -1, 0)
- self.horizontalLayout_3.setSpacing(4)
- self.horizontalLayout_3.setObjectName("horizontalLayout_3")
- self.status_label = QtWidgets.QLabel(self.centralwidget)
- self.status_label.setMinimumSize(QtCore.QSize(100, 0))
- self.status_label.setMaximumSize(QtCore.QSize(220, 16777215))
- font = QtGui.QFont()
- font.setPointSize(8)
- self.status_label.setFont(font)
- self.status_label.setText("")
- self.status_label.setTextFormat(QtCore.Qt.PlainText)
- self.status_label.setObjectName("status_label")
- self.horizontalLayout_3.addWidget(self.status_label)
- spacerItem = QtWidgets.QSpacerItem(2, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.horizontalLayout_3.addItem(spacerItem)
- self.channel_name = QtWidgets.QLabel(self.centralwidget)
- self.channel_name.setMaximumSize(QtCore.QSize(16777215, 40))
- font = QtGui.QFont()
- font.setPointSize(8)
- self.channel_name.setFont(font)
- self.channel_name.setText("")
- self.channel_name.setObjectName("channel_name")
- self.horizontalLayout_3.addWidget(self.channel_name)
- self.line = QtWidgets.QFrame(self.centralwidget)
- self.line.setStyleSheet("color: rgb(74, 74, 74)")
- self.line.setFrameShadow(QtWidgets.QFrame.Plain)
- self.line.setFrameShape(QtWidgets.QFrame.VLine)
- self.line.setObjectName("line")
- self.horizontalLayout_3.addWidget(self.line)
- self.conn_quality_label = QtWidgets.QLabel(self.centralwidget)
- font = QtGui.QFont()
- font.setPointSize(8)
- self.conn_quality_label.setFont(font)
- self.conn_quality_label.setObjectName("conn_quality_label")
- self.horizontalLayout_3.addWidget(self.conn_quality_label)
- self.conn_quality_progr = QtWidgets.QProgressBar(self.centralwidget)
- self.conn_quality_progr.setMinimumSize(QtCore.QSize(0, 18))
- self.conn_quality_progr.setMaximumSize(QtCore.QSize(80, 16777215))
- font = QtGui.QFont()
- font.setPointSize(8)
- font.setBold(False)
- font.setWeight(50)
- self.conn_quality_progr.setFont(font)
- self.conn_quality_progr.setStyleSheet("selection-background-color: rgb(161, 75, 0);")
- self.conn_quality_progr.setMaximum(5000)
- self.conn_quality_progr.setProperty("value", 4970)
- self.conn_quality_progr.setTextVisible(True)
- self.conn_quality_progr.setInvertedAppearance(False)
- self.conn_quality_progr.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
- self.conn_quality_progr.setObjectName("conn_quality_progr")
- self.horizontalLayout_3.addWidget(self.conn_quality_progr)
- self.latency_label = QtWidgets.QLabel(self.centralwidget)
- self.latency_label.setMinimumSize(QtCore.QSize(35, 0))
- font = QtGui.QFont()
- font.setPointSize(8)
- font.setBold(False)
- font.setWeight(50)
- self.latency_label.setFont(font)
- self.latency_label.setObjectName("latency_label")
- self.horizontalLayout_3.addWidget(self.latency_label)
- self.verticalLayout_2.addLayout(self.horizontalLayout_3)
- self.verticalLayout.addLayout(self.verticalLayout_2)
- MainWindow.setCentralWidget(self.centralwidget)
- self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 595, 21))
- self.menubar.setStyleSheet("selection-background-color: rgb(161, 75, 0);")
- self.menubar.setObjectName("menubar")
- self.menu = QtWidgets.QMenu(self.menubar)
- self.menu.setObjectName("menu")
- self.menu_2 = QtWidgets.QMenu(self.menubar)
- self.menu_2.setStyleSheet("")
- self.menu_2.setObjectName("menu_2")
- self.menu_3 = QtWidgets.QMenu(self.menubar)
- self.menu_3.setObjectName("menu_3")
- MainWindow.setMenuBar(self.menubar)
- self.about_item = QtWidgets.QAction(MainWindow)
- self.about_item.setObjectName("about_item")
- self.about_Qt_item = QtWidgets.QAction(MainWindow)
- self.about_Qt_item.setObjectName("about_Qt_item")
- self.connect_item = QtWidgets.QAction(MainWindow)
- self.connect_item.setObjectName("connect_item")
- self.quit_item = QtWidgets.QAction(MainWindow)
- self.quit_item.setObjectName("quit_item")
- self.history_cb_action = QtWidgets.QAction(MainWindow)
- self.history_cb_action.setCheckable(True)
- self.history_cb_action.setChecked(False)
- self.history_cb_action.setObjectName("history_cb_action")
- self.action = QtWidgets.QAction(MainWindow)
- self.action.setObjectName("action")
- self.settings_item = QtWidgets.QAction(MainWindow)
- self.settings_item.setObjectName("settings_item")
- self.menu.addAction(self.connect_item)
- self.menu.addSeparator()
- self.menu.addAction(self.quit_item)
- self.menu_2.addAction(self.about_item)
- self.menu_3.addAction(self.settings_item)
- self.menubar.addAction(self.menu.menuAction())
- self.menubar.addAction(self.menu_3.menuAction())
- self.menubar.addAction(self.menu_2.menuAction())
-
- self.retranslateUi(MainWindow)
- self.tabs.setCurrentIndex(-1)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
-
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "Tinelix IRC Client"))
- self.conn_quality_label.setText(_translate("MainWindow", "Качество соединения:"))
- self.conn_quality_progr.setFormat(_translate("MainWindow", "%p%"))
- self.latency_label.setText(_translate("MainWindow", "(2 ms)"))
- self.menu.setTitle(_translate("MainWindow", "Файл"))
- self.menu_2.setTitle(_translate("MainWindow", "Справка"))
- self.menu_3.setTitle(_translate("MainWindow", "Вид"))
- self.about_item.setText(_translate("MainWindow", "О программе..."))
- self.about_Qt_item.setText(_translate("MainWindow", "О Qt..."))
- self.connect_item.setText(_translate("MainWindow", "Подключиться"))
- self.quit_item.setText(_translate("MainWindow", "Выход"))
- self.history_cb_action.setText(_translate("MainWindow", "Сохранить историю переписок"))
- self.action.setText(_translate("MainWindow", "Настройки"))
- self.settings_item.setText(_translate("MainWindow", "Настройки"))
-import resources_rc
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'mainform.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.4
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.resize(595, 354)
+ MainWindow.setMinimumSize(QtCore.QSize(544, 300))
+ icon = QtGui.QIcon()
+ icon.addPixmap(QtGui.QPixmap("icon_48x48.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ MainWindow.setWindowIcon(icon)
+ MainWindow.setStyleSheet("background-color: rgb(43, 43, 43);\n"
+"color: rgb(255, 255, 255);")
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
+ self.verticalLayout.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout.setSpacing(0)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setSpacing(0)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.tabs = QtWidgets.QTabWidget(self.centralwidget)
+ self.tabs.setStyleSheet("")
+ self.tabs.setTabsClosable(False)
+ self.tabs.setObjectName("tabs")
+ self.horizontalLayout.addWidget(self.tabs)
+ self.verticalLayout.addLayout(self.horizontalLayout)
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout()
+ self.verticalLayout_2.setContentsMargins(-1, -1, 0, 0)
+ self.verticalLayout_2.setSpacing(0)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_2.setContentsMargins(-1, 0, -1, -1)
+ self.horizontalLayout_2.setSpacing(4)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.verticalLayout_2.addLayout(self.horizontalLayout_2)
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_3.setContentsMargins(-1, -1, -1, 0)
+ self.horizontalLayout_3.setSpacing(4)
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.status_label = QtWidgets.QLabel(self.centralwidget)
+ self.status_label.setMinimumSize(QtCore.QSize(100, 0))
+ self.status_label.setMaximumSize(QtCore.QSize(220, 16777215))
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ self.status_label.setFont(font)
+ self.status_label.setText("")
+ self.status_label.setTextFormat(QtCore.Qt.PlainText)
+ self.status_label.setObjectName("status_label")
+ self.horizontalLayout_3.addWidget(self.status_label)
+ spacerItem = QtWidgets.QSpacerItem(2, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_3.addItem(spacerItem)
+ self.channel_name = QtWidgets.QLabel(self.centralwidget)
+ self.channel_name.setMaximumSize(QtCore.QSize(16777215, 40))
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ self.channel_name.setFont(font)
+ self.channel_name.setText("")
+ self.channel_name.setObjectName("channel_name")
+ self.horizontalLayout_3.addWidget(self.channel_name)
+ self.line = QtWidgets.QFrame(self.centralwidget)
+ self.line.setStyleSheet("color: rgb(74, 74, 74)")
+ self.line.setFrameShadow(QtWidgets.QFrame.Plain)
+ self.line.setFrameShape(QtWidgets.QFrame.VLine)
+ self.line.setObjectName("line")
+ self.horizontalLayout_3.addWidget(self.line)
+ self.conn_quality_label = QtWidgets.QLabel(self.centralwidget)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ self.conn_quality_label.setFont(font)
+ self.conn_quality_label.setObjectName("conn_quality_label")
+ self.horizontalLayout_3.addWidget(self.conn_quality_label)
+ self.conn_quality_progr = QtWidgets.QProgressBar(self.centralwidget)
+ self.conn_quality_progr.setMinimumSize(QtCore.QSize(0, 18))
+ self.conn_quality_progr.setMaximumSize(QtCore.QSize(80, 16777215))
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ font.setWeight(50)
+ self.conn_quality_progr.setFont(font)
+ self.conn_quality_progr.setStyleSheet("selection-background-color: rgb(161, 75, 0);")
+ self.conn_quality_progr.setMaximum(5000)
+ self.conn_quality_progr.setProperty("value", 4970)
+ self.conn_quality_progr.setTextVisible(True)
+ self.conn_quality_progr.setInvertedAppearance(False)
+ self.conn_quality_progr.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
+ self.conn_quality_progr.setObjectName("conn_quality_progr")
+ self.horizontalLayout_3.addWidget(self.conn_quality_progr)
+ self.latency_label = QtWidgets.QLabel(self.centralwidget)
+ self.latency_label.setMinimumSize(QtCore.QSize(35, 0))
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ font.setWeight(50)
+ self.latency_label.setFont(font)
+ self.latency_label.setObjectName("latency_label")
+ self.horizontalLayout_3.addWidget(self.latency_label)
+ self.verticalLayout_2.addLayout(self.horizontalLayout_3)
+ self.verticalLayout.addLayout(self.verticalLayout_2)
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QtWidgets.QMenuBar(MainWindow)
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 595, 29))
+ self.menubar.setStyleSheet("selection-background-color: rgb(161, 75, 0);")
+ self.menubar.setObjectName("menubar")
+ self.menu = QtWidgets.QMenu(self.menubar)
+ self.menu.setObjectName("menu")
+ self.menu_2 = QtWidgets.QMenu(self.menubar)
+ self.menu_2.setStyleSheet("")
+ self.menu_2.setObjectName("menu_2")
+ self.menu_3 = QtWidgets.QMenu(self.menubar)
+ self.menu_3.setObjectName("menu_3")
+ self.menu_4 = QtWidgets.QMenu(self.menubar)
+ self.menu_4.setObjectName("menu_4")
+ MainWindow.setMenuBar(self.menubar)
+ self.about_item = QtWidgets.QAction(MainWindow)
+ self.about_item.setObjectName("about_item")
+ self.about_Qt_item = QtWidgets.QAction(MainWindow)
+ self.about_Qt_item.setObjectName("about_Qt_item")
+ self.connect_item = QtWidgets.QAction(MainWindow)
+ self.connect_item.setObjectName("connect_item")
+ self.quit_item = QtWidgets.QAction(MainWindow)
+ self.quit_item.setObjectName("quit_item")
+ self.history_cb_action = QtWidgets.QAction(MainWindow)
+ self.history_cb_action.setCheckable(True)
+ self.history_cb_action.setChecked(False)
+ self.history_cb_action.setObjectName("history_cb_action")
+ self.action = QtWidgets.QAction(MainWindow)
+ self.action.setObjectName("action")
+ self.settings_item = QtWidgets.QAction(MainWindow)
+ self.settings_item.setObjectName("settings_item")
+ self.join_item = QtWidgets.QAction(MainWindow)
+ self.join_item.setEnabled(False)
+ self.join_item.setObjectName("join_item")
+ self.leave_item = QtWidgets.QAction(MainWindow)
+ self.leave_item.setEnabled(False)
+ self.leave_item.setObjectName("leave_item")
+ self.members_list_item = QtWidgets.QAction(MainWindow)
+ self.members_list_item.setCheckable(True)
+ self.members_list_item.setChecked(True)
+ self.members_list_item.setObjectName("members_list_item")
+ self.msg_history = QtWidgets.QAction(MainWindow)
+ self.msg_history.setEnabled(False)
+ self.msg_history.setObjectName("msg_history")
+ self.menu.addAction(self.connect_item)
+ self.menu.addSeparator()
+ self.menu.addAction(self.quit_item)
+ self.menu_2.addAction(self.about_item)
+ self.menu_3.addSeparator()
+ self.menu_3.addAction(self.settings_item)
+ self.menu_4.addAction(self.join_item)
+ self.menu_4.addAction(self.leave_item)
+ self.menu_4.addSeparator()
+ self.menu_4.addAction(self.msg_history)
+ self.menubar.addAction(self.menu.menuAction())
+ self.menubar.addAction(self.menu_4.menuAction())
+ self.menubar.addAction(self.menu_3.menuAction())
+ self.menubar.addAction(self.menu_2.menuAction())
+
+ self.retranslateUi(MainWindow)
+ self.tabs.setCurrentIndex(-1)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "Tinelix IRC Client"))
+ self.conn_quality_label.setText(_translate("MainWindow", "Качество соединения:"))
+ self.conn_quality_progr.setFormat(_translate("MainWindow", "%p%"))
+ self.latency_label.setText(_translate("MainWindow", "(2 ms)"))
+ self.menu.setTitle(_translate("MainWindow", "Файл"))
+ self.menu_2.setTitle(_translate("MainWindow", "Справка"))
+ self.menu_3.setTitle(_translate("MainWindow", "Вид"))
+ self.menu_4.setTitle(_translate("MainWindow", "Канал"))
+ self.about_item.setText(_translate("MainWindow", "О программе..."))
+ self.about_Qt_item.setText(_translate("MainWindow", "О Qt..."))
+ self.connect_item.setText(_translate("MainWindow", "Подключиться"))
+ self.quit_item.setText(_translate("MainWindow", "Выход"))
+ self.history_cb_action.setText(_translate("MainWindow", "Сохранить историю переписок"))
+ self.action.setText(_translate("MainWindow", "Настройки"))
+ self.settings_item.setText(_translate("MainWindow", "Настройки"))
+ self.join_item.setText(_translate("MainWindow", "Присоединиться..."))
+ self.leave_item.setText(_translate("MainWindow", "Покинуть"))
+ self.members_list_item.setText(_translate("MainWindow", "Список участников"))
+ self.msg_history.setText(_translate("MainWindow", "История"))
+import resources_rc
diff --git a/mainform.ui b/mainform.ui
index 54fc16f..61a2882 100644
--- a/mainform.ui
+++ b/mainform.ui
@@ -255,7 +255,7 @@ color: rgb(255, 255, 255);
0
0
595
- 21
+ 29
@@ -282,9 +282,20 @@ color: rgb(255, 255, 255);
Вид
+
+
+
@@ -329,6 +340,41 @@ color: rgb(255, 255, 255);
Настройки
+
+
+ false
+
+
+ Присоединиться...
+
+
+
+
+ false
+
+
+ Покинуть
+
+
+
+
+ true
+
+
+ true
+
+
+ Список участников
+
+
+
+
+ false
+
+
+ История
+
+
diff --git a/member_icon.png b/member_icon.png
index 198cd4c..e13b274 100644
Binary files a/member_icon.png and b/member_icon.png differ
diff --git a/progresswindow.py b/progresswindow.py
new file mode 100644
index 0000000..3fb7b16
--- /dev/null
+++ b/progresswindow.py
@@ -0,0 +1,93 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'progresswindow.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.4
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(240, 140)
+ Dialog.setMinimumSize(QtCore.QSize(240, 140))
+ Dialog.setMaximumSize(QtCore.QSize(240, 140))
+ Dialog.setWindowTitle("")
+ Dialog.setStyleSheet("background-color: rgb(43, 43, 43);\n"
+"color: rgb(255, 255, 255);")
+ self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.progresstext = QtWidgets.QLabel(Dialog)
+ self.progresstext.setMinimumSize(QtCore.QSize(0, 24))
+ self.progresstext.setMaximumSize(QtCore.QSize(16777215, 24))
+ self.progresstext.setText("")
+ self.progresstext.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
+ self.progresstext.setWordWrap(True)
+ self.progresstext.setObjectName("progresstext")
+ self.verticalLayout.addWidget(self.progresstext)
+ self.progressBar = QtWidgets.QProgressBar(Dialog)
+ self.progressBar.setMinimumSize(QtCore.QSize(0, 20))
+ self.progressBar.setMaximumSize(QtCore.QSize(16777215, 20))
+ self.progressBar.setStyleSheet("selection-background-color: rgb(161, 75, 0);")
+ self.progressBar.setMaximum(0)
+ self.progressBar.setProperty("value", -1)
+ self.progressBar.setInvertedAppearance(False)
+ self.progressBar.setObjectName("progressBar")
+ self.verticalLayout.addWidget(self.progressBar)
+ self.frame = QtWidgets.QFrame(Dialog)
+ self.frame.setMinimumSize(QtCore.QSize(0, 24))
+ self.frame.setMaximumSize(QtCore.QSize(16777215, 24))
+ self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
+ self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame.setObjectName("frame")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame)
+ self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout_2.setSpacing(0)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.gridLayout_2 = QtWidgets.QGridLayout()
+ self.gridLayout_2.setObjectName("gridLayout_2")
+ self.propertie = QtWidgets.QLabel(self.frame)
+ self.propertie.setMinimumSize(QtCore.QSize(80, 22))
+ self.propertie.setMaximumSize(QtCore.QSize(80, 22))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.propertie.setFont(font)
+ self.propertie.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
+ self.propertie.setObjectName("propertie")
+ self.gridLayout_2.addWidget(self.propertie, 0, 0, 1, 1)
+ self.value = QtWidgets.QLabel(self.frame)
+ self.value.setMinimumSize(QtCore.QSize(0, 22))
+ self.value.setMaximumSize(QtCore.QSize(16777215, 22))
+ self.value.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
+ self.value.setObjectName("value")
+ self.gridLayout_2.addWidget(self.value, 0, 1, 1, 1)
+ self.verticalLayout_2.addLayout(self.gridLayout_2)
+ self.verticalLayout.addWidget(self.frame)
+ self.frame_2 = QtWidgets.QFrame(Dialog)
+ self.frame_2.setFrameShape(QtWidgets.QFrame.NoFrame)
+ self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame_2.setObjectName("frame_2")
+ self.verticalLayout.addWidget(self.frame_2)
+ self.additional_btn = QtWidgets.QPushButton(Dialog)
+ self.additional_btn.setMinimumSize(QtCore.QSize(0, 24))
+ self.additional_btn.setMaximumSize(QtCore.QSize(100, 24))
+ self.additional_btn.setStyleSheet("selection-background-color: #ff7700;")
+ self.additional_btn.setFlat(False)
+ self.additional_btn.setObjectName("additional_btn")
+ self.verticalLayout.addWidget(self.additional_btn)
+
+ self.retranslateUi(Dialog)
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ _translate = QtCore.QCoreApplication.translate
+ self.propertie.setText(_translate("Dialog", "Свойство:"))
+ self.value.setText(_translate("Dialog", "Значение"))
+ self.additional_btn.setText(_translate("Dialog", "Подробнее"))
+import resources_rc
diff --git a/progresswindow.ui b/progresswindow.ui
new file mode 100644
index 0000000..d431043
--- /dev/null
+++ b/progresswindow.ui
@@ -0,0 +1,220 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 240
+ 140
+
+
+
+
+ 240
+ 140
+
+
+
+
+ 240
+ 140
+
+
+
+
+
+
+ background-color: rgb(43, 43, 43);
+color: rgb(255, 255, 255);
+
+
+ -
+
+
+
+ 0
+ 24
+
+
+
+
+ 16777215
+ 24
+
+
+
+
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 20
+
+
+
+
+ 16777215
+ 20
+
+
+
+ selection-background-color: rgb(161, 75, 0);
+
+
+ 0
+
+
+ -1
+
+
+ false
+
+
+
+ -
+
+
+
+ 0
+ 24
+
+
+
+
+ 16777215
+ 24
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
-
+
+
+
+ 80
+ 22
+
+
+
+
+ 80
+ 22
+
+
+
+
+ 75
+ true
+
+
+
+ Свойство:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+ -
+
+
+
+ 0
+ 22
+
+
+
+
+ 16777215
+ 22
+
+
+
+ Значение
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+
+
+
+
+
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ -
+
+
+
+ 0
+ 24
+
+
+
+
+ 100
+ 24
+
+
+
+ selection-background-color: #ff7700;
+
+
+ Подробнее
+
+
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/resources.qrc b/resources.qrc
index 5bb18af..ddaca6d 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -1,5 +1,6 @@
+ member_icon.png
owner_icon.png
admin_icon.png
operator_icon.png
@@ -8,6 +9,12 @@
icon_48x48.png
icon_64_64.png
+
+ down_arrow_dark.png
+ down_arrow_light.png
+ up_arrow_dark.png
+ up_arrow_light.png
+
closebutton.png
diff --git a/resources_rc.py b/resources_rc.py
index fe4b51b..360a994 100644
--- a/resources_rc.py
+++ b/resources_rc.py
@@ -9,56 +9,143 @@
from PyQt5 import QtCore
qt_resource_data = b"\
-\x00\x00\x02\xbe\
+\x00\x00\x08\x22\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
-\x00\x00\x02\x85\x49\x44\x41\x54\x38\x8d\x85\x91\x5d\x48\x93\x51\
-\x18\xc7\x7f\xef\x71\xc6\x5c\x6a\xd3\xcc\xaf\xec\xb5\x90\x54\x22\
-\xf1\x22\x22\x23\x88\x28\xb3\xba\xe8\x22\xe8\xe3\xa2\x20\x84\x62\
-\x89\x50\x41\x14\xd5\x75\xcc\x08\x83\x88\x40\xbb\xd2\x2e\x84\x40\
-\x29\x28\x24\xa9\x59\x91\x51\x62\x69\x81\x44\x9a\x1f\xe5\xe6\xdc\
-\x74\x7e\xac\xbd\xed\x9d\xf3\xdd\xf6\x76\xf1\x6e\xd3\x2b\x3d\xf0\
-\xe7\x9c\x87\x73\x1e\xce\xef\xf9\xff\x25\x5d\xd7\xe1\xe5\xfd\xed\
-\x58\x37\xdd\xc5\x6c\xa9\x46\x88\x4c\x56\x5b\xb1\x58\x80\x45\xd5\
-\x81\xdf\x77\x93\xe3\xd7\x46\xa4\xe9\x7b\x47\xcb\x2c\x05\x3b\x7a\
-\x87\x2b\x4b\xad\x13\x45\xb9\xc4\xcc\x66\x24\x21\x81\x44\x52\x7a\
-\x62\xd7\x63\x88\xf0\x22\xc5\x93\x33\x94\x7f\x19\xf5\xab\x53\x3f\
-\xaa\x4c\x3e\x6f\x97\xbd\x27\x7b\xc4\x3a\x69\xb2\x21\xcd\x28\x34\
-\xb9\xbb\x99\x0b\x76\xd1\x9c\xdf\xc2\xbe\x8d\xbb\xa9\xf8\xb9\x13\
-\x04\xf4\x94\x7c\xc2\xcd\x34\xdf\xd2\xc6\xe8\xb7\x40\x49\xca\x73\
-\x6b\x95\x77\xdc\x2e\x7c\x21\xaa\xeb\xa2\x63\x4c\x2b\xb3\xdc\x19\
-\xbc\xce\xdc\x7c\x17\x68\x90\x9b\x9a\x83\x5b\xf5\x42\x0c\x88\x82\
-\xd5\x94\x89\xd3\x3f\x49\xc3\xd0\x0d\x3c\xc1\x59\x2e\x98\xc6\xf1\
-\x85\xa8\x11\xca\x12\x99\x04\xa1\xcd\x3b\x00\x4b\x40\xc4\x50\xce\
-\xba\x2c\xfe\x04\x5d\x10\x05\xa4\x5d\x6c\x48\xcd\xe4\x69\xe0\x1d\
-\x68\xd0\x3a\xd3\x07\x2a\x28\x4b\xa4\x0b\x0d\x20\x04\x21\xbf\xc3\
-\x78\x1c\x57\x81\x25\x0f\x45\x0b\x42\x14\xea\xd3\x6a\x08\x47\xc3\
-\x0c\xa8\xcf\x8c\x7b\xe5\x3d\x84\x41\x03\xa4\x8e\x8b\xe8\x27\x8b\
-\x80\xcd\xf0\xb8\xb4\x85\x63\x5b\x0f\xad\x1a\x02\x80\x3c\x78\x02\
-\x9c\xfd\x74\x0c\x80\x09\xb1\x8c\x6d\x1b\xaa\x85\x5f\xd0\xb8\xed\
-\x11\x47\xe4\x03\x54\xf4\x1a\x06\x7e\xa8\xfc\x88\x53\x75\x73\x6e\
-\xe2\x8c\x91\x8c\x88\x93\x0a\x10\x7a\xa2\x88\x2c\xab\x24\xbd\x98\
-\xd1\x85\xdf\xc9\xba\x60\x7d\x1e\xbd\xf3\xdf\x8d\x3a\x31\x66\x0c\
-\x74\x01\x52\x7b\x3d\xfa\xa9\x74\x38\x5b\x51\x47\xc3\xfe\x5b\x6b\
-\xe2\xbf\x72\x75\x63\x73\xd5\x82\x07\xda\x47\x13\x04\x1a\xb4\x79\
-\x9a\x90\x3b\x64\xe4\xce\xd3\x00\x34\x7e\x6d\x46\xee\x94\x69\x1f\
-\x7e\xc1\xdf\xc5\x00\xb2\x43\x46\x7e\x2b\x63\x1b\xab\x35\xdc\x8b\
-\x18\x04\x26\x2d\x06\xa8\x46\x12\x98\xe1\x4a\xf6\x41\xc2\x91\x30\
-\x0f\x5d\x76\x10\x90\x6f\xce\x65\x4a\xf1\x1a\xf8\x22\xae\x08\x10\
-\x04\x4d\x07\x11\x81\x00\x21\x60\xd6\x20\x29\xb6\x14\xb2\xa8\x85\
-\x93\xf3\x6f\xc9\x28\x64\xc2\xef\x5a\xf6\x48\x03\xbc\x40\x00\x22\
-\x3a\xff\x04\x12\x8e\x4b\x26\x60\x01\x70\x42\x56\xca\x06\xa6\xfc\
-\x9e\x64\x43\x56\x9a\x15\x25\x1c\x34\x1a\x55\x60\xcc\xf8\xac\x3e\
-\x02\x48\xbc\x96\x5a\x2f\x53\x1e\xd3\xf9\xdc\xa7\x62\x6d\x5e\x8a\
-\x3b\x95\x88\x4a\x5a\x81\xbd\xe2\x6c\x13\xb0\x47\xe0\x17\xb0\x57\
-\xd2\x75\x9d\x27\x57\xa5\x32\xc0\x0e\x1c\x06\x32\xd6\x08\x42\x01\
-\xde\x00\xb7\xcf\x3f\xd0\x87\xff\x03\x38\x6a\x17\x21\xd5\x41\x8f\
-\xc4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
-\x00\x00\x16\x76\
+\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
+\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
+\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
+\x50\x6c\xd5\xc1\x8c\x49\x5b\x8a\x20\x58\xab\x43\x92\xad\x49\x43\
+\x95\x62\x12\x6e\xae\x7f\xfa\x10\x8e\x6e\x1d\x5c\xdc\x7d\x02\x27\
+\x47\xc1\x41\xf1\x09\x7c\x03\xc5\xa9\x83\x43\x84\x0c\x05\x8b\xdf\
+\xf4\x9d\xdf\x39\x1c\xce\x01\xa3\x62\xd7\x9d\x86\x51\x86\xf3\x58\
+\xab\x76\xd3\x91\xae\xe7\xcb\xd9\x17\x66\x98\x02\x80\x4e\x98\xa5\
+\x76\xab\x75\x00\x10\x27\x71\xc4\x18\xdf\xef\x08\x80\xd7\x4d\xbb\
+\xee\x34\xc6\xfb\x7f\x32\x1f\xa6\x4a\x03\x23\x60\xbb\x1b\x65\x21\
+\x88\x0a\xd0\xbf\xd2\xa9\x06\x31\x04\xcc\xa0\x9f\x6a\x10\x0f\x80\
+\xa9\x4e\xda\x35\x10\x4f\x40\xa9\x97\xfb\x1b\x50\x0a\x72\xff\x00\
+\x4a\xca\xf5\x7c\x10\x5f\x80\xd9\x73\x3d\x1f\x8c\x39\xc0\x0c\x72\
+\x5f\x01\x4c\x1d\x5d\x6b\x80\x5a\x92\x0e\xd4\x59\xef\x54\xcb\xaa\
+\x65\x59\xd2\xee\x26\x41\x24\x8f\x07\x99\x8e\xce\x33\xb9\x1f\x87\
+\x89\x4a\x13\xd5\xd1\x51\x17\xc8\xef\x03\x60\x31\x1f\x6c\x37\x1d\
+\xb9\x56\xb5\xac\xbd\xf5\x7f\xfe\x3d\x11\xd7\xf3\x65\x6e\x9f\x47\
+\x08\x40\x2c\x3d\x17\x59\x41\x78\xa1\x2e\x7f\x55\x18\x3b\x93\xeb\
+\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
+\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
+\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x05\xea\x69\x54\x58\x74\
+\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
+\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
+\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
+\x57\x35\x4d\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\
+\x4e\x54\x63\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\
+\x6d\x70\x6d\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\
+\x61\x64\x6f\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\
+\x78\x3a\x78\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\
+\x4d\x50\x20\x43\x6f\x72\x65\x20\x35\x2e\x36\x2d\x63\x31\x34\x32\
+\x20\x37\x39\x2e\x31\x36\x30\x39\x32\x34\x2c\x20\x32\x30\x31\x37\
+\x2f\x30\x37\x2f\x31\x33\x2d\x30\x31\x3a\x30\x36\x3a\x33\x39\x20\
+\x20\x20\x20\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\
+\x44\x46\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\
+\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\
+\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\
+\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\
+\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\
+\x78\x6d\x70\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\
+\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\
+\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\
+\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\
+\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x45\x76\x74\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\
+\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\
+\x52\x65\x73\x6f\x75\x72\x63\x65\x45\x76\x65\x6e\x74\x23\x22\x20\
+\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\
+\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\
+\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\x22\x68\x74\x74\
+\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\
+\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\x2e\x30\x2f\x22\
+\x20\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\
+\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
+\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
+\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
+\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x38\x54\x31\x35\x3a\x31\x32\
+\x3a\x31\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
+\x31\x2d\x30\x38\x2d\x32\x38\x54\x31\x35\x3a\x31\x32\x3a\x31\x37\
+\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
+\x32\x38\x54\x31\x35\x3a\x31\x32\x3a\x31\x37\x2b\x30\x37\x3a\x30\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x66\x38\
+\x33\x61\x37\x32\x64\x2d\x63\x66\x65\x31\x2d\x65\x31\x34\x39\x2d\
+\x61\x37\x66\x63\x2d\x34\x66\x33\x38\x38\x63\x35\x37\x33\x35\x65\
+\x64\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x38\x33\x31\x36\x30\
+\x36\x30\x61\x2d\x32\x32\x37\x35\x2d\x66\x30\x34\x35\x2d\x62\x63\
+\x35\x63\x2d\x34\x37\x34\x36\x35\x36\x61\x38\x38\x61\x66\x63\x22\
+\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
+\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
+\x69\x64\x3a\x65\x32\x64\x31\x65\x31\x34\x65\x2d\x33\x66\x32\x35\
+\x2d\x37\x32\x34\x37\x2d\x38\x39\x66\x33\x2d\x32\x64\x32\x63\x61\
+\x30\x31\x62\x30\x37\x65\x39\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
+\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
+\x3a\x49\x43\x43\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\
+\x62\x65\x20\x52\x47\x42\x20\x28\x31\x39\x39\x38\x29\x22\x3e\x20\
+\x3c\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\
+\x3c\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\
+\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
+\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
+\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
+\x69\x64\x3a\x65\x32\x64\x31\x65\x31\x34\x65\x2d\x33\x66\x32\x35\
+\x2d\x37\x32\x34\x37\x2d\x38\x39\x66\x33\x2d\x32\x64\x32\x63\x61\
+\x30\x31\x62\x30\x37\x65\x39\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x38\x54\
+\x31\x35\x3a\x31\x32\x3a\x31\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
+\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
+\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
+\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
+\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x66\x38\x33\
+\x61\x37\x32\x64\x2d\x63\x66\x65\x31\x2d\x65\x31\x34\x39\x2d\x61\
+\x37\x66\x63\x2d\x34\x66\x33\x38\x38\x63\x35\x37\x33\x35\x65\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
+\x32\x31\x2d\x30\x38\x2d\x32\x38\x54\x31\x35\x3a\x31\x32\x3a\x31\
+\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
+\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
+\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
+\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
+\x3c\x2f\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\
+\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\
+\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\
+\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\
+\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\
+\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x12\x0f\x9d\x9c\x00\x00\
+\x00\x9b\x49\x44\x41\x54\x38\x8d\xa5\x93\x51\x0a\x03\x21\x0c\x44\
+\xc7\xde\x20\x7b\x11\x7b\xfc\x7a\x88\xc2\xf6\x44\xaf\x1f\x8d\x8b\
+\x58\xa3\xc2\x06\x82\x30\xc9\xbc\x8f\x24\x26\x40\x77\xe2\xe1\x6f\
+\x96\x54\x24\xd9\x86\xc7\xbc\x37\x4b\x92\x00\x01\x2f\x7e\xf1\x06\
+\xcc\xb5\x51\x9a\xf7\x00\x14\xe0\x02\x1c\x4d\x21\x82\x58\xd7\x73\
+\xb4\x80\x15\x64\x68\xee\x01\x11\x24\x34\x8f\x00\x3d\xe4\xf4\x1c\
+\x9a\x23\x40\x85\x54\x63\x05\xfd\x99\x81\x6b\x8d\x7d\xf4\xc7\x91\
+\x06\x9a\xda\x35\x46\xd3\x3e\x81\xcf\x6c\x3b\x3b\xab\xea\x35\x8b\
+\x00\xb3\x69\x87\x90\x1d\xf3\x14\x52\x8b\x65\x61\x5e\x9e\x72\x76\
+\x61\xf6\x0f\x5a\x48\x01\x9e\x80\x12\x37\xbf\xf3\x17\xc5\x12\x83\
+\x61\x69\x9d\xa9\xb0\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\
+\x82\
+\x00\x00\x0a\x05\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\
+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
@@ -80,7 +167,7 @@
\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
-\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x08\x15\x69\x54\x58\x74\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x06\xb5\x69\x54\x58\x74\
\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
@@ -118,70 +205,233 @@
\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
-\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x32\x33\
-\x3a\x34\x38\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
-\x6f\x64\x69\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\
-\x30\x38\x2d\x32\x36\x54\x31\x34\x3a\x33\x39\x3a\x32\x32\x2b\x30\
-\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x65\x74\x61\x64\x61\
-\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
-\x32\x36\x54\x31\x34\x3a\x33\x39\x3a\x32\x32\x2b\x30\x37\x3a\x30\
-\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x32\x3a\x35\x30\
+\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
+\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x34\x33\x3a\x32\x30\
+\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
+\x32\x36\x54\x31\x33\x3a\x34\x33\x3a\x32\x30\x2b\x30\x37\x3a\x30\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x31\x64\x30\
+\x64\x64\x33\x64\x65\x2d\x65\x33\x32\x66\x2d\x66\x38\x34\x64\x2d\
+\x61\x39\x61\x38\x2d\x62\x37\x33\x63\x30\x35\x38\x61\x65\x30\x36\
+\x62\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
-\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x35\x30\x37\x38\x31\
-\x64\x36\x63\x2d\x38\x39\x34\x34\x2d\x66\x39\x34\x65\x2d\x61\x34\
-\x37\x62\x2d\x38\x35\x63\x31\x32\x36\x34\x62\x30\x35\x30\x33\x22\
-\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\
-\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x30\x31\x30\x35\x31\
-\x37\x61\x63\x2d\x64\x32\x34\x33\x2d\x38\x62\x34\x38\x2d\x61\x33\
-\x61\x30\x2d\x32\x61\x30\x39\x66\x62\x61\x35\x65\x30\x66\x62\x22\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x61\x34\x36\x39\x30\
+\x32\x38\x39\x2d\x38\x62\x66\x63\x2d\x32\x62\x34\x35\x2d\x61\x61\
+\x34\x32\x2d\x64\x62\x63\x66\x36\x35\x62\x65\x36\x30\x64\x37\x22\
\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
-\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\
-\x3a\x64\x6f\x63\x69\x64\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
-\x3a\x61\x34\x36\x39\x30\x32\x38\x39\x2d\x38\x62\x66\x63\x2d\x32\
-\x62\x34\x35\x2d\x61\x61\x34\x32\x2d\x64\x62\x63\x66\x36\x35\x62\
-\x65\x36\x30\x64\x37\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\
-\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\x68\x6f\
-\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\x64\x65\
-\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x49\
-\x43\x43\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\x62\x65\
-\x20\x52\x47\x42\x20\x28\x31\x39\x39\x38\x29\x22\x3e\x20\x3c\x78\
-\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\x3c\x72\
-\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\
-\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x63\x72\
-\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\
-\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\
-\x3a\x65\x37\x39\x66\x62\x63\x35\x30\x2d\x61\x66\x32\x38\x2d\x36\
-\x38\x34\x65\x2d\x61\x35\x36\x33\x2d\x32\x36\x63\x32\x36\x37\x65\
-\x32\x33\x61\x66\x31\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\
-\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\
-\x3a\x32\x33\x3a\x34\x38\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\
-\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\
-\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\
-\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\
-\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\
-\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x63\x6f\x6e\x76\x65\x72\x74\
-\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x70\x61\x72\x61\x6d\x65\
-\x74\x65\x72\x73\x3d\x22\x66\x72\x6f\x6d\x20\x61\x70\x70\x6c\x69\
-\x63\x61\x74\x69\x6f\x6e\x2f\x76\x6e\x64\x2e\x61\x64\x6f\x62\x65\
-\x2e\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x74\x6f\x20\x69\x6d\
-\x61\x67\x65\x2f\x70\x6e\x67\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\
-\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\
-\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\
-\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\
-\x64\x3a\x38\x32\x30\x38\x65\x64\x34\x63\x2d\x38\x65\x37\x63\x2d\
-\x30\x36\x34\x65\x2d\x38\x62\x31\x64\x2d\x34\x63\x31\x34\x34\x39\
-\x62\x64\x65\x63\x30\x62\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\
-\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\
-\x33\x3a\x35\x35\x3a\x31\x36\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\
-\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\
-\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\
-\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\
-\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\
-\x22\x2f\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\
-\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\
-\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\
-\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x30\x31\x30\
-\x35\x31\x37\x61\x63\x2d\x64\x32\x34\x33\x2d\x38\x62\x34\x38\x2d\
+\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
+\x69\x64\x3a\x39\x32\x61\x31\x32\x35\x31\x31\x2d\x38\x36\x39\x35\
+\x2d\x66\x64\x34\x63\x2d\x38\x37\x31\x61\x2d\x30\x62\x38\x66\x37\
+\x35\x66\x65\x34\x63\x37\x37\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
+\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
+\x3a\x49\x43\x43\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\
+\x62\x65\x20\x52\x47\x42\x20\x28\x31\x39\x39\x38\x29\x22\x3e\x20\
+\x3c\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\
+\x3c\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\
+\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
+\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
+\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
+\x69\x64\x3a\x39\x32\x61\x31\x32\x35\x31\x31\x2d\x38\x36\x39\x35\
+\x2d\x66\x64\x34\x63\x2d\x38\x37\x31\x61\x2d\x30\x62\x38\x66\x37\
+\x35\x66\x65\x34\x63\x37\x37\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\
+\x31\x32\x3a\x35\x30\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
+\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
+\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
+\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
+\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x34\x65\x65\x63\
+\x62\x35\x31\x64\x2d\x30\x33\x63\x31\x2d\x34\x64\x34\x66\x2d\x62\
+\x36\x62\x30\x2d\x37\x64\x61\x64\x64\x65\x38\x62\x62\x31\x34\x36\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
+\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x32\x3a\x35\x30\x3a\x33\
+\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
+\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
+\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
+\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
+\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\
+\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\
+\x6d\x70\x2e\x69\x69\x64\x3a\x31\x64\x30\x64\x64\x33\x64\x65\x2d\
+\x65\x33\x32\x66\x2d\x66\x38\x34\x64\x2d\x61\x39\x61\x38\x2d\x62\
+\x37\x33\x63\x30\x35\x38\x61\x65\x30\x36\x62\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\
+\x2d\x32\x36\x54\x31\x33\x3a\x34\x33\x3a\x32\x30\x2b\x30\x37\x3a\
+\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\
+\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\
+\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\
+\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\
+\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\
+\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\
+\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\
+\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\
+\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\
+\x22\x72\x22\x3f\x3e\x46\x3f\x58\x82\x00\x00\x01\xb3\x49\x44\x41\
+\x54\x38\x8d\xa5\x93\x4f\x6b\x13\x41\x18\xc6\x7f\xef\xce\x06\x8b\
+\x49\xca\x86\x62\x82\xc7\x1e\xa4\x42\xe7\xde\x06\x84\x52\xa9\x82\
+\xe0\x61\x89\xe0\x17\xd0\x43\x3f\x81\x8a\x78\x94\x20\x9e\xd4\x8b\
+\x1e\xf4\x13\x48\x40\x51\x2f\xb6\x34\x28\x85\xb6\x9e\x37\xd2\x22\
+\xe8\x39\x5e\xba\x54\xd3\x6e\xa1\xc9\xeb\x61\xb6\xbb\x5b\xac\x52\
+\xe8\x03\xc3\x33\xc3\xcc\xf3\xbc\x7f\x78\x47\x54\x95\xd3\xc0\x07\
+\xb0\xd6\xf2\xa2\xd6\xbb\x00\x3c\x02\x16\x80\x71\x8a\xbe\xe2\x48\
+\x61\x47\x94\x65\x84\x7b\x8b\xdb\xd3\xdf\xa2\x28\x42\x54\x95\xd5\
+\x39\x99\x1a\xaa\xac\x77\x76\x1b\xc1\xc6\x7e\xc0\x40\xcd\x5f\x91\
+\xc2\x30\x64\xe9\x6d\x87\x99\x33\x31\xad\x72\x3f\xf6\x55\x67\x2f\
+\x7d\xd6\x2d\x0f\x00\x8f\x76\x67\xaf\x11\xac\x24\x13\xc7\x8a\x0f\
+\x31\x50\xc3\x4a\x32\xc1\xbb\xbd\x7a\x80\xa1\xed\xa4\x80\xf8\x2c\
+\x6c\xec\x07\x27\xae\x7b\x35\xa9\x21\x3e\x57\x33\x03\x0c\xe3\x83\
+\x91\x8b\x1c\xcd\x93\x71\x74\xdd\xe3\xf2\x79\xc9\x84\xd1\xbc\x5b\
+\x83\x91\x01\x43\x25\x37\x28\x15\xec\xc7\x52\xc1\x98\x87\x7d\x3f\
+\xe2\xd9\x0d\x97\xd9\xc3\xf8\x0d\xb6\x0b\xb6\x9b\xbe\xf3\xa1\x58\
+\x42\x8e\x6a\xda\x83\xaa\xf3\xa6\xb7\xed\xb8\x76\xb4\x37\x52\xfa\
+\xa7\x81\x97\x71\xd4\x32\xdc\xf9\x91\x9e\xeb\xc5\x47\xb9\xc6\x2b\
+\xa6\x03\x40\x25\x37\xb8\xbb\x29\x3c\x9e\x1c\x01\xf0\xa0\x7f\x2d\
+\xeb\x41\x51\xe3\x17\xd3\x01\xb0\x4f\x13\xc7\x4f\x1c\x7f\xf8\x5a\
+\xb8\xeb\xe6\xfb\x23\x3d\xc0\xb0\x53\xf6\x87\x9c\x14\x65\x7f\x88\
+\x94\xf8\x9d\xfb\x94\x58\x6e\x9e\x8b\x5b\x95\x99\x5b\xff\x15\x86\
+\x61\x08\x40\xf2\xe5\x25\x18\x3e\x02\x6e\x94\xd7\x17\xe5\xe2\x01\
+\xb2\xf6\xfa\x7b\x23\x58\xfb\x19\xb0\x7b\x70\xfc\x34\x9e\xf5\x87\
+\x34\xeb\x31\x37\x27\xfb\xb1\xf1\xb4\x39\xfb\x5c\x37\x45\x55\xb1\
+\xd6\xf2\x6a\xae\x37\x05\xb4\x15\xae\x08\x54\x15\x10\x81\xc3\x4f\
+\x95\xd2\x2f\x60\x09\xb8\x7f\xfb\xd3\xf4\x56\xf6\x99\x4e\x83\x3f\
+\xd9\xb1\x8d\xe5\xa7\x2e\x4c\x70\x00\x00\x00\x00\x49\x45\x4e\x44\
+\xae\x42\x60\x82\
+\x00\x00\x16\x76\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\
+\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
+\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
+\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
+\x50\x6c\xd5\xc1\x8c\x49\x5b\x8a\x20\x58\xab\x43\x92\xad\x49\x43\
+\x95\x62\x12\x6e\xae\x7f\xfa\x10\x8e\x6e\x1d\x5c\xdc\x7d\x02\x27\
+\x47\xc1\x41\xf1\x09\x7c\x03\xc5\xa9\x83\x43\x84\x0c\x05\x8b\xdf\
+\xf4\x9d\xdf\x39\x1c\xce\x01\xa3\x62\xd7\x9d\x86\x51\x86\xf3\x58\
+\xab\x76\xd3\x91\xae\xe7\xcb\xd9\x17\x66\x98\x02\x80\x4e\x98\xa5\
+\x76\xab\x75\x00\x10\x27\x71\xc4\x18\xdf\xef\x08\x80\xd7\x4d\xbb\
+\xee\x34\xc6\xfb\x7f\x32\x1f\xa6\x4a\x03\x23\x60\xbb\x1b\x65\x21\
+\x88\x0a\xd0\xbf\xd2\xa9\x06\x31\x04\xcc\xa0\x9f\x6a\x10\x0f\x80\
+\xa9\x4e\xda\x35\x10\x4f\x40\xa9\x97\xfb\x1b\x50\x0a\x72\xff\x00\
+\x4a\xca\xf5\x7c\x10\x5f\x80\xd9\x73\x3d\x1f\x8c\x39\xc0\x0c\x72\
+\x5f\x01\x4c\x1d\x5d\x6b\x80\x5a\x92\x0e\xd4\x59\xef\x54\xcb\xaa\
+\x65\x59\xd2\xee\x26\x41\x24\x8f\x07\x99\x8e\xce\x33\xb9\x1f\x87\
+\x89\x4a\x13\xd5\xd1\x51\x17\xc8\xef\x03\x60\x31\x1f\x6c\x37\x1d\
+\xb9\x56\xb5\xac\xbd\xf5\x7f\xfe\x3d\x11\xd7\xf3\x65\x6e\x9f\x47\
+\x08\x40\x2c\x3d\x17\x59\x41\x78\xa1\x2e\x7f\x55\x18\x3b\x93\xeb\
+\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
+\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
+\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x08\x15\x69\x54\x58\x74\
+\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
+\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
+\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
+\x57\x35\x4d\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\
+\x4e\x54\x63\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\
+\x6d\x70\x6d\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\
+\x61\x64\x6f\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\
+\x78\x3a\x78\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\
+\x4d\x50\x20\x43\x6f\x72\x65\x20\x35\x2e\x36\x2d\x63\x31\x34\x32\
+\x20\x37\x39\x2e\x31\x36\x30\x39\x32\x34\x2c\x20\x32\x30\x31\x37\
+\x2f\x30\x37\x2f\x31\x33\x2d\x30\x31\x3a\x30\x36\x3a\x33\x39\x20\
+\x20\x20\x20\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\
+\x44\x46\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\
+\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\
+\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\
+\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\
+\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\
+\x78\x6d\x70\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\
+\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\
+\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\
+\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\
+\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x45\x76\x74\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\
+\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\
+\x52\x65\x73\x6f\x75\x72\x63\x65\x45\x76\x65\x6e\x74\x23\x22\x20\
+\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\
+\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\
+\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\x22\x68\x74\x74\
+\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\
+\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\x2e\x30\x2f\x22\
+\x20\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\
+\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
+\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
+\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
+\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x32\x33\
+\x3a\x34\x38\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x6f\x64\x69\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\
+\x30\x38\x2d\x32\x36\x54\x31\x34\x3a\x33\x39\x3a\x32\x32\x2b\x30\
+\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x65\x74\x61\x64\x61\
+\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
+\x32\x36\x54\x31\x34\x3a\x33\x39\x3a\x32\x32\x2b\x30\x37\x3a\x30\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x35\x30\x37\x38\x31\
+\x64\x36\x63\x2d\x38\x39\x34\x34\x2d\x66\x39\x34\x65\x2d\x61\x34\
+\x37\x62\x2d\x38\x35\x63\x31\x32\x36\x34\x62\x30\x35\x30\x33\x22\
+\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\
+\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x30\x31\x30\x35\x31\
+\x37\x61\x63\x2d\x64\x32\x34\x33\x2d\x38\x62\x34\x38\x2d\x61\x33\
+\x61\x30\x2d\x32\x61\x30\x39\x66\x62\x61\x35\x65\x30\x66\x62\x22\
+\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
+\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\
+\x3a\x64\x6f\x63\x69\x64\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
+\x3a\x61\x34\x36\x39\x30\x32\x38\x39\x2d\x38\x62\x66\x63\x2d\x32\
+\x62\x34\x35\x2d\x61\x61\x34\x32\x2d\x64\x62\x63\x66\x36\x35\x62\
+\x65\x36\x30\x64\x37\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\
+\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\x68\x6f\
+\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\x64\x65\
+\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x49\
+\x43\x43\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\x62\x65\
+\x20\x52\x47\x42\x20\x28\x31\x39\x39\x38\x29\x22\x3e\x20\x3c\x78\
+\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\x3c\x72\
+\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\
+\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x63\x72\
+\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\
+\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\
+\x3a\x65\x37\x39\x66\x62\x63\x35\x30\x2d\x61\x66\x32\x38\x2d\x36\
+\x38\x34\x65\x2d\x61\x35\x36\x33\x2d\x32\x36\x63\x32\x36\x37\x65\
+\x32\x33\x61\x66\x31\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\
+\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\
+\x3a\x32\x33\x3a\x34\x38\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\
+\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\
+\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\
+\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\
+\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\
+\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x63\x6f\x6e\x76\x65\x72\x74\
+\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x70\x61\x72\x61\x6d\x65\
+\x74\x65\x72\x73\x3d\x22\x66\x72\x6f\x6d\x20\x61\x70\x70\x6c\x69\
+\x63\x61\x74\x69\x6f\x6e\x2f\x76\x6e\x64\x2e\x61\x64\x6f\x62\x65\
+\x2e\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x74\x6f\x20\x69\x6d\
+\x61\x67\x65\x2f\x70\x6e\x67\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\
+\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\
+\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\
+\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\
+\x64\x3a\x38\x32\x30\x38\x65\x64\x34\x63\x2d\x38\x65\x37\x63\x2d\
+\x30\x36\x34\x65\x2d\x38\x62\x31\x64\x2d\x34\x63\x31\x34\x34\x39\
+\x62\x64\x65\x63\x30\x62\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\
+\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\
+\x33\x3a\x35\x35\x3a\x31\x36\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\
+\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\
+\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\
+\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\
+\x22\x2f\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\
+\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\
+\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x30\x31\x30\
+\x35\x31\x37\x61\x63\x2d\x64\x32\x34\x33\x2d\x38\x62\x34\x38\x2d\
\x61\x33\x61\x30\x2d\x32\x61\x30\x39\x66\x62\x61\x35\x65\x30\x66\
\x62\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\
\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x34\x3a\x33\x39\x3a\
@@ -900,10 +1150,640 @@
\x36\xd9\xd2\xdc\x80\xf9\x18\x7e\x37\x5a\x1f\xda\x4d\xee\x6e\x76\
\xcd\xd1\x74\xbc\xfa\x7f\x00\xfc\x55\xb5\xb4\xec\xeb\x30\x72\x00\
\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
-\x00\x00\x0a\x71\
+\x00\x00\x02\xbe\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x02\x85\x49\x44\x41\x54\x38\x8d\x85\x91\x5d\x48\x93\x51\
+\x18\xc7\x7f\xef\x71\xc6\x5c\x6a\xd3\xcc\xaf\xec\xb5\x90\x54\x22\
+\xf1\x22\x22\x23\x88\x28\xb3\xba\xe8\x22\xe8\xe3\xa2\x20\x84\x62\
+\x89\x50\x41\x14\xd5\x75\xcc\x08\x83\x88\x40\xbb\xd2\x2e\x84\x40\
+\x29\x28\x24\xa9\x59\x91\x51\x62\x69\x81\x44\x9a\x1f\xe5\xe6\xdc\
+\x74\x7e\xac\xbd\xed\x9d\xf3\xdd\xf6\x76\xf1\x6e\xd3\x2b\x3d\xf0\
+\xe7\x9c\x87\x73\x1e\xce\xef\xf9\xff\x25\x5d\xd7\xe1\xe5\xfd\xed\
+\x58\x37\xdd\xc5\x6c\xa9\x46\x88\x4c\x56\x5b\xb1\x58\x80\x45\xd5\
+\x81\xdf\x77\x93\xe3\xd7\x46\xa4\xe9\x7b\x47\xcb\x2c\x05\x3b\x7a\
+\x87\x2b\x4b\xad\x13\x45\xb9\xc4\xcc\x66\x24\x21\x81\x44\x52\x7a\
+\x62\xd7\x63\x88\xf0\x22\xc5\x93\x33\x94\x7f\x19\xf5\xab\x53\x3f\
+\xaa\x4c\x3e\x6f\x97\xbd\x27\x7b\xc4\x3a\x69\xb2\x21\xcd\x28\x34\
+\xb9\xbb\x99\x0b\x76\xd1\x9c\xdf\xc2\xbe\x8d\xbb\xa9\xf8\xb9\x13\
+\x04\xf4\x94\x7c\xc2\xcd\x34\xdf\xd2\xc6\xe8\xb7\x40\x49\xca\x73\
+\x6b\x95\x77\xdc\x2e\x7c\x21\xaa\xeb\xa2\x63\x4c\x2b\xb3\xdc\x19\
+\xbc\xce\xdc\x7c\x17\x68\x90\x9b\x9a\x83\x5b\xf5\x42\x0c\x88\x82\
+\xd5\x94\x89\xd3\x3f\x49\xc3\xd0\x0d\x3c\xc1\x59\x2e\x98\xc6\xf1\
+\x85\xa8\x11\xca\x12\x99\x04\xa1\xcd\x3b\x00\x4b\x40\xc4\x50\xce\
+\xba\x2c\xfe\x04\x5d\x10\x05\xa4\x5d\x6c\x48\xcd\xe4\x69\xe0\x1d\
+\x68\xd0\x3a\xd3\x07\x2a\x28\x4b\xa4\x0b\x0d\x20\x04\x21\xbf\xc3\
+\x78\x1c\x57\x81\x25\x0f\x45\x0b\x42\x14\xea\xd3\x6a\x08\x47\xc3\
+\x0c\xa8\xcf\x8c\x7b\xe5\x3d\x84\x41\x03\xa4\x8e\x8b\xe8\x27\x8b\
+\x80\xcd\xf0\xb8\xb4\x85\x63\x5b\x0f\xad\x1a\x02\x80\x3c\x78\x02\
+\x9c\xfd\x74\x0c\x80\x09\xb1\x8c\x6d\x1b\xaa\x85\x5f\xd0\xb8\xed\
+\x11\x47\xe4\x03\x54\xf4\x1a\x06\x7e\xa8\xfc\x88\x53\x75\x73\x6e\
+\xe2\x8c\x91\x8c\x88\x93\x0a\x10\x7a\xa2\x88\x2c\xab\x24\xbd\x98\
+\xd1\x85\xdf\xc9\xba\x60\x7d\x1e\xbd\xf3\xdf\x8d\x3a\x31\x66\x0c\
+\x74\x01\x52\x7b\x3d\xfa\xa9\x74\x38\x5b\x51\x47\xc3\xfe\x5b\x6b\
+\xe2\xbf\x72\x75\x63\x73\xd5\x82\x07\xda\x47\x13\x04\x1a\xb4\x79\
+\x9a\x90\x3b\x64\xe4\xce\xd3\x00\x34\x7e\x6d\x46\xee\x94\x69\x1f\
+\x7e\xc1\xdf\xc5\x00\xb2\x43\x46\x7e\x2b\x63\x1b\xab\x35\xdc\x8b\
+\x18\x04\x26\x2d\x06\xa8\x46\x12\x98\xe1\x4a\xf6\x41\xc2\x91\x30\
+\x0f\x5d\x76\x10\x90\x6f\xce\x65\x4a\xf1\x1a\xf8\x22\xae\x08\x10\
+\x04\x4d\x07\x11\x81\x00\x21\x60\xd6\x20\x29\xb6\x14\xb2\xa8\x85\
+\x93\xf3\x6f\xc9\x28\x64\xc2\xef\x5a\xf6\x48\x03\xbc\x40\x00\x22\
+\x3a\xff\x04\x12\x8e\x4b\x26\x60\x01\x70\x42\x56\xca\x06\xa6\xfc\
+\x9e\x64\x43\x56\x9a\x15\x25\x1c\x34\x1a\x55\x60\xcc\xf8\xac\x3e\
+\x02\x48\xbc\x96\x5a\x2f\x53\x1e\xd3\xf9\xdc\xa7\x62\x6d\x5e\x8a\
+\x3b\x95\x88\x4a\x5a\x81\xbd\xe2\x6c\x13\xb0\x47\xe0\x17\xb0\x57\
+\xd2\x75\x9d\x27\x57\xa5\x32\xc0\x0e\x1c\x06\x32\xd6\x08\x42\x01\
+\xde\x00\xb7\xcf\x3f\xd0\x87\xff\x03\x38\x6a\x17\x21\xd5\x41\x8f\
+\xc4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x0a\x86\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
+\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
+\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
+\x50\x6c\xd5\xc1\x8c\x49\x5b\x8a\x20\x58\xab\x43\x92\xad\x49\x43\
+\x95\x62\x12\x6e\xae\x7f\xfa\x10\x8e\x6e\x1d\x5c\xdc\x7d\x02\x27\
+\x47\xc1\x41\xf1\x09\x7c\x03\xc5\xa9\x83\x43\x84\x0c\x05\x8b\xdf\
+\xf4\x9d\xdf\x39\x1c\xce\x01\xa3\x62\xd7\x9d\x86\x51\x86\xf3\x58\
+\xab\x76\xd3\x91\xae\xe7\xcb\xd9\x17\x66\x98\x02\x80\x4e\x98\xa5\
+\x76\xab\x75\x00\x10\x27\x71\xc4\x18\xdf\xef\x08\x80\xd7\x4d\xbb\
+\xee\x34\xc6\xfb\x7f\x32\x1f\xa6\x4a\x03\x23\x60\xbb\x1b\x65\x21\
+\x88\x0a\xd0\xbf\xd2\xa9\x06\x31\x04\xcc\xa0\x9f\x6a\x10\x0f\x80\
+\xa9\x4e\xda\x35\x10\x4f\x40\xa9\x97\xfb\x1b\x50\x0a\x72\xff\x00\
+\x4a\xca\xf5\x7c\x10\x5f\x80\xd9\x73\x3d\x1f\x8c\x39\xc0\x0c\x72\
+\x5f\x01\x4c\x1d\x5d\x6b\x80\x5a\x92\x0e\xd4\x59\xef\x54\xcb\xaa\
+\x65\x59\xd2\xee\x26\x41\x24\x8f\x07\x99\x8e\xce\x33\xb9\x1f\x87\
+\x89\x4a\x13\xd5\xd1\x51\x17\xc8\xef\x03\x60\x31\x1f\x6c\x37\x1d\
+\xb9\x56\xb5\xac\xbd\xf5\x7f\xfe\x3d\x11\xd7\xf3\x65\x6e\x9f\x47\
+\x08\x40\x2c\x3d\x17\x59\x41\x78\xa1\x2e\x7f\x55\x18\x3b\x93\xeb\
+\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
+\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
+\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x06\xb5\x69\x54\x58\x74\
+\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
+\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
+\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
+\x57\x35\x4d\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\
+\x4e\x54\x63\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\
+\x6d\x70\x6d\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\
+\x61\x64\x6f\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\
+\x78\x3a\x78\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\
+\x4d\x50\x20\x43\x6f\x72\x65\x20\x35\x2e\x36\x2d\x63\x31\x34\x32\
+\x20\x37\x39\x2e\x31\x36\x30\x39\x32\x34\x2c\x20\x32\x30\x31\x37\
+\x2f\x30\x37\x2f\x31\x33\x2d\x30\x31\x3a\x30\x36\x3a\x33\x39\x20\
+\x20\x20\x20\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\
+\x44\x46\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\
+\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\
+\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\
+\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\
+\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\
+\x78\x6d\x70\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\
+\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\
+\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\
+\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\
+\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x45\x76\x74\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\
+\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\
+\x52\x65\x73\x6f\x75\x72\x63\x65\x45\x76\x65\x6e\x74\x23\x22\x20\
+\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\
+\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\
+\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\x22\x68\x74\x74\
+\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\
+\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\x2e\x30\x2f\x22\
+\x20\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\
+\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
+\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
+\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
+\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x37\x3a\x33\x35\
+\x3a\x30\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
+\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x39\x3a\x34\x35\x3a\x35\x31\
+\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\
+\x30\x32\x54\x31\x39\x3a\x34\x35\x3a\x35\x31\x2b\x30\x37\x3a\x30\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x63\x37\x38\
+\x63\x61\x30\x61\x36\x2d\x65\x33\x31\x32\x2d\x61\x62\x34\x39\x2d\
+\x62\x65\x34\x64\x2d\x33\x33\x35\x62\x65\x63\x34\x63\x65\x66\x39\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x32\x63\x36\x33\x36\
+\x65\x34\x33\x2d\x66\x63\x33\x31\x2d\x33\x34\x34\x39\x2d\x61\x61\
+\x30\x65\x2d\x65\x65\x39\x35\x34\x66\x61\x63\x31\x32\x63\x35\x22\
+\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
+\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
+\x69\x64\x3a\x34\x39\x66\x31\x30\x34\x36\x37\x2d\x37\x61\x36\x62\
+\x2d\x30\x65\x34\x32\x2d\x39\x34\x37\x33\x2d\x36\x62\x64\x34\x66\
+\x34\x62\x65\x31\x31\x31\x64\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
+\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
+\x3a\x49\x43\x43\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\
+\x62\x65\x20\x52\x47\x42\x20\x28\x31\x39\x39\x38\x29\x22\x3e\x20\
+\x3c\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\
+\x3c\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\
+\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
+\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
+\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
+\x69\x64\x3a\x34\x39\x66\x31\x30\x34\x36\x37\x2d\x37\x61\x36\x62\
+\x2d\x30\x65\x34\x32\x2d\x39\x34\x37\x33\x2d\x36\x62\x64\x34\x66\
+\x34\x62\x65\x31\x31\x31\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\
+\x31\x37\x3a\x33\x35\x3a\x30\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
+\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
+\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
+\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
+\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x33\x39\x36\x64\
+\x63\x32\x34\x38\x2d\x31\x37\x35\x30\x2d\x34\x63\x34\x39\x2d\x62\
+\x31\x34\x64\x2d\x37\x61\x61\x30\x32\x33\x38\x39\x39\x30\x36\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
+\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x37\x3a\x33\x35\x3a\x30\
+\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
+\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
+\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
+\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
+\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\
+\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\
+\x6d\x70\x2e\x69\x69\x64\x3a\x63\x37\x38\x63\x61\x30\x61\x36\x2d\
+\x65\x33\x31\x32\x2d\x61\x62\x34\x39\x2d\x62\x65\x34\x64\x2d\x33\
+\x33\x35\x62\x65\x63\x34\x63\x65\x66\x39\x30\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\
+\x2d\x30\x32\x54\x31\x39\x3a\x34\x35\x3a\x35\x31\x2b\x30\x37\x3a\
+\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\
+\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\
+\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\
+\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\
+\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\
+\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\
+\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\
+\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\
+\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\
+\x22\x72\x22\x3f\x3e\xc7\xa3\x9b\xf5\x00\x00\x02\x34\x49\x44\x41\
+\x54\x38\x8d\x7d\x92\x4f\x4b\x94\x61\x14\xc5\x7f\xf7\x7d\x9f\x99\
+\x71\x1c\x1d\x8d\x16\x0a\xa1\xe1\x58\x89\x22\x19\x21\xe4\x22\x23\
+\xc8\xdc\x24\x11\x46\x9b\x04\x3f\x40\x8b\x22\x37\x59\x42\x9b\x68\
+\x08\x02\x83\xe8\x0b\x04\xe2\xca\x55\x46\x50\x59\x2d\x0a\x8a\x68\
+\xd1\x2e\x2a\x14\x2a\x23\x2c\x82\x69\x0a\xcb\xf9\xf3\x9c\x16\xef\
+\xe8\xcc\xb4\xe8\x81\xf3\xdc\xcd\xe5\xdc\x73\xce\xbd\x36\x30\x30\
+\xc0\xeb\xe1\xd2\x6e\xe0\x1a\x62\x04\x23\xcd\xff\x5f\x1e\xb1\x84\
+\x31\xbd\xef\xa9\x7b\x6f\x3a\xdb\xdf\x53\x94\x5e\xcc\x2e\x07\xad\
+\xf7\xd6\x8c\x5c\x29\xea\xb2\x9a\x1f\x55\x4b\x8b\x13\xc7\xda\x61\
+\x2a\x53\xce\xc5\x02\x86\x1c\x21\xd9\x1b\xef\x82\xd6\xf9\x4f\xb6\
+\xd5\xef\x0c\xa6\x32\x9e\xb1\x36\x61\xc0\xdd\x35\x63\x76\x25\xa0\
+\x28\xf8\x51\x82\xf9\x55\x68\x08\x83\xd6\x73\xdd\xca\x06\x84\x8c\
+\x2c\x7e\xa9\x0c\x11\x48\x62\x6a\x8f\x98\xe8\x82\x96\x94\x91\x4e\
+\x19\xa7\x33\x70\xa6\xdb\x23\x69\xab\x67\xe1\x33\xe0\x18\x0d\x08\
+\x2d\x9d\x2b\x80\xe4\xf1\x44\x0d\x63\x5d\x06\x8d\x01\x24\xab\x38\
+\xb9\x2b\x40\x08\x29\x42\xae\x20\x08\xad\xc9\xe1\x0c\x28\x23\x0c\
+\x93\x22\x25\xa9\x10\x12\x55\xef\x00\xc4\x40\xbe\x8c\xac\x26\x10\
+\x67\x04\x38\xf0\x1e\x90\x47\xde\xe3\xbd\x58\x5c\x15\xa4\x82\x3a\
+\x2c\x7c\xa8\x5a\xc0\x47\x36\x70\x46\xa4\x40\x1e\x61\x20\x81\x89\
+\xeb\xcf\x0b\x10\x8f\x73\xbc\xd7\x01\x70\xe7\x4d\x89\x9b\x2f\x8b\
+\xa8\x12\x94\x54\x09\x7c\x93\x40\xaa\x28\x30\x30\x19\x85\xb2\xc8\
+\x3e\xde\xe0\xea\xa3\x02\x18\x98\x04\x18\x32\xc0\x2b\x22\xa1\x96\
+\x00\x1f\x49\x93\xd1\xe4\x3c\x93\x9d\x01\xa3\x6d\x46\x67\xa3\x81\
+\x60\x65\x5d\xdc\xff\x2a\xe6\x3e\x8a\xf5\xca\x9d\x44\x16\xc0\x11\
+\xb3\x28\x03\xa0\x3d\x29\xe6\x86\x63\x74\xa4\xac\xee\xf4\xfa\x9a\
+\xa1\xaf\x1d\xc6\xbb\xc4\xc4\xb3\x22\xdf\xfe\x00\x26\x88\x05\x04\
+\x84\x44\x0a\xf0\x4c\x0f\xc5\xe9\xd8\xe1\xa0\x35\xac\xc7\xb6\xa8\
+\xee\xec\x70\x5c\x3c\x10\xaf\x86\x59\xb1\x90\x4f\xc7\x2d\x9d\xdf\
+\x10\x07\x7b\x63\x90\xa8\x9f\xbe\x75\xd1\x51\x0c\x1c\xea\x0f\xe0\
+\xc9\x6f\xd2\x0d\x06\x8e\x5f\x0e\x67\x4b\x27\xfa\x63\xe3\xb7\x5f\
+\x6d\xb0\xff\x56\x3e\x5a\xc4\x3f\x1c\xaa\xe1\xd8\xe4\x3b\xb5\x37\
+\x0e\x21\x0f\x02\x42\x66\x2e\x1c\x49\xe6\x26\x07\x13\xa4\x13\xd5\
+\x80\x6a\x11\xad\x0e\x90\x68\x49\xc0\xe4\x60\x9c\xf3\x87\x93\x39\
+\x42\x9b\xb1\x4c\x26\xc3\xf2\xe5\xed\x3d\x40\x16\x74\x14\xac\xb9\
+\x5e\x7a\x45\x52\xf5\x2a\x7f\x02\x0f\x81\x4b\xdd\x57\xbe\xbf\xfd\
+\x0b\x58\xf1\xfc\x4e\x1a\x56\xb5\x8c\x00\x00\x00\x00\x49\x45\x4e\
+\x44\xae\x42\x60\x82\
+\x00\x00\x02\xdd\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x02\xa4\x49\x44\x41\x54\x38\x8d\x6d\x93\x4f\x6b\x9d\x55\
+\x10\xc6\x7f\x73\xce\xfb\x26\x97\xdc\xde\xf4\x6a\xa2\xad\x14\x43\
+\x2d\xd6\x54\x37\x15\x37\x2d\x74\x5b\x45\x0a\xa2\xb8\x53\x04\x77\
+\x2a\xb8\x73\x25\x2e\x14\xa1\x04\xbf\x80\x50\xfd\x02\xfa\x09\x24\
+\x98\x52\x69\xc1\x3f\x2b\xa1\x15\x21\xc1\xa0\x21\x2e\xd4\x84\xdc\
+\xde\xdc\x3f\xb9\xef\x39\x73\xce\x19\x17\x37\x94\xc4\xfa\xc0\x6c\
+\x06\xe6\x99\xe7\x19\x9e\x11\x33\x63\xf0\xc5\xa7\xe7\x7d\x55\x7f\
+\xe6\xaa\xfa\xaa\x38\x3f\x2f\xce\x21\x22\x1c\x85\x99\x61\xa5\x60\
+\x25\x0f\x4a\xd2\x9b\x39\xe9\x87\xf3\xef\x7e\xf2\x9b\xfc\x75\xfd\
+\x9d\x65\x37\xd7\xfd\xe9\xee\xd3\xd7\xba\xeb\x8f\x9d\x43\x67\x5b\
+\xd4\xce\xe3\x9c\x3c\x20\x31\x33\x4a\x31\xb4\x64\xea\xd0\x70\x61\
+\xf7\x77\x2e\x6e\x7e\xd3\x2f\x07\xfd\xcb\x2e\x84\xb8\x72\x67\xe1\
+\x4a\x77\xb5\xbd\x44\xaf\x78\x72\x36\xcc\x40\x10\xc4\x0e\x0b\xc1\
+\x0c\x72\x36\x7a\xc5\xb3\xda\x5e\xe2\x87\x47\x2e\x77\x43\x88\x2b\
+\x55\x88\x7a\xf5\x4e\xfb\x49\x46\x13\xc5\x8b\x67\xb9\x33\xc3\xf3\
+\xa7\x5a\x9c\x9e\x9f\xa5\x3d\xe3\xf0\x22\x0c\x43\x66\xbb\x1f\xf8\
+\xf9\x9f\x31\xbf\x0e\x13\xf7\x27\xca\xad\xce\x59\x9e\x8b\xfa\x52\
+\x15\x63\x9c\xff\x3b\x09\xbe\x51\xfa\xe2\x78\xf9\xec\xa3\xb4\x5b\
+\x35\xce\x81\x60\x60\xc6\x89\x1a\x2e\x2c\xd4\x9c\xeb\xcc\xf1\xfd\
+\xed\x7d\x26\x8d\x32\x4a\x42\x8c\xf1\x44\x15\x42\xa4\x69\x22\xbe\
+\x86\x58\x84\xac\x09\xf5\x0e\xef\xfd\xb1\x23\xe6\x9c\x51\x55\xf6\
+\xc6\x91\xa2\x4a\xd6\x48\x08\x91\x2a\x86\xc8\x24\x24\x5c\x16\x7c\
+\x16\x54\x03\x42\xf9\x5f\x82\xde\x30\x30\x69\x94\xac\x4a\x49\x89\
+\x18\x22\x95\x46\xe5\xa0\x51\x7c\x2d\x48\x16\x76\xf7\x03\x8f\x9f\
+\x9c\x0e\x1c\x45\x29\x85\x3f\x7b\x13\xc6\xcd\x74\xb8\xa8\xa2\x51\
+\xa9\x34\x46\x0e\x62\x46\x4a\xc6\x65\xc7\xd6\x5e\xc3\x62\xa7\x7e\
+\x28\x07\xa5\x14\x36\x76\x1a\xc6\x21\x53\x52\xc6\x52\x46\x63\xa4\
+\xd2\x10\xd8\x9f\x28\xae\x02\xa9\x8c\x1f\xb7\x46\x5c\x3c\xd3\xa2\
+\x94\xf2\x90\x85\x5b\x5b\x23\xf6\x27\x11\x4b\x8a\x25\x45\x43\xa0\
+\x8a\x21\xb0\xdb\x04\x70\x19\xf1\x89\x2f\x37\x95\x4b\xa7\x1d\xcf\
+\x9e\x99\x3b\x16\xa4\xef\xd6\x07\xac\xee\x8c\x20\x27\x2c\x27\x28\
+\x89\x18\xc2\x54\xc1\x68\x12\x41\x12\x38\x0f\xce\xf1\xda\x5a\xc3\
+\x57\x57\xba\x3c\xf3\x44\x0b\x80\xdb\xeb\x23\x3e\xb8\x37\x04\x2b\
+\x50\x0a\x94\x0c\x56\xa6\x0a\x34\x84\xc1\xd2\x78\x3c\xbf\xed\x6b\
+\x40\x40\x04\x10\xde\x58\x1d\xf1\xf9\xa5\x0e\x7b\xe3\xcc\xc7\xbf\
+\x1c\x80\x19\x1c\xe6\x02\x8c\xa5\xac\x68\x08\xa3\x2a\x85\xe6\xe6\
+\xb5\x9d\xcd\xd7\x6f\x9c\x7c\x6a\xba\x01\x3b\x74\x2d\xbc\xbf\x36\
+\x38\xfa\x4e\x0f\xfa\x88\xe3\x95\xfe\x26\x29\x34\xdf\xfa\x57\x17\
+\xab\x7b\x0b\xbd\xf5\xb7\x16\xdd\xa9\xd6\x5d\x66\x40\x13\xc4\x08\
+\x31\xfc\xa7\x14\x54\x41\x1b\xde\xbe\xff\x07\x2f\x6c\x7f\xdd\xf7\
+\x65\xfc\xa6\x98\x19\x37\x96\x67\x97\x9b\xc2\x4a\x2c\xf6\xa2\x16\
+\x3a\xc9\x8c\x62\x1c\x83\x13\xa8\x44\xa8\x1c\xc3\x59\x27\x6b\x2d\
+\xc7\x47\xef\x6d\x84\x8d\x7f\x01\x94\xaa\xa7\xf7\x0e\x04\xf9\x8f\
+\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x0a\x71\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
+\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
+\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
+\x50\x6c\xd5\xc1\x8c\x49\x5b\x8a\x20\x58\xab\x43\x92\xad\x49\x43\
+\x95\x62\x12\x6e\xae\x7f\xfa\x10\x8e\x6e\x1d\x5c\xdc\x7d\x02\x27\
+\x47\xc1\x41\xf1\x09\x7c\x03\xc5\xa9\x83\x43\x84\x0c\x05\x8b\xdf\
+\xf4\x9d\xdf\x39\x1c\xce\x01\xa3\x62\xd7\x9d\x86\x51\x86\xf3\x58\
+\xab\x76\xd3\x91\xae\xe7\xcb\xd9\x17\x66\x98\x02\x80\x4e\x98\xa5\
+\x76\xab\x75\x00\x10\x27\x71\xc4\x18\xdf\xef\x08\x80\xd7\x4d\xbb\
+\xee\x34\xc6\xfb\x7f\x32\x1f\xa6\x4a\x03\x23\x60\xbb\x1b\x65\x21\
+\x88\x0a\xd0\xbf\xd2\xa9\x06\x31\x04\xcc\xa0\x9f\x6a\x10\x0f\x80\
+\xa9\x4e\xda\x35\x10\x4f\x40\xa9\x97\xfb\x1b\x50\x0a\x72\xff\x00\
+\x4a\xca\xf5\x7c\x10\x5f\x80\xd9\x73\x3d\x1f\x8c\x39\xc0\x0c\x72\
+\x5f\x01\x4c\x1d\x5d\x6b\x80\x5a\x92\x0e\xd4\x59\xef\x54\xcb\xaa\
+\x65\x59\xd2\xee\x26\x41\x24\x8f\x07\x99\x8e\xce\x33\xb9\x1f\x87\
+\x89\x4a\x13\xd5\xd1\x51\x17\xc8\xef\x03\x60\x31\x1f\x6c\x37\x1d\
+\xb9\x56\xb5\xac\xbd\xf5\x7f\xfe\x3d\x11\xd7\xf3\x65\x6e\x9f\x47\
+\x08\x40\x2c\x3d\x17\x59\x41\x78\xa1\x2e\x7f\x55\x18\x3b\x93\xeb\
+\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
+\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
+\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x06\xb5\x69\x54\x58\x74\
+\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
+\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
+\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
+\x57\x35\x4d\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\
+\x4e\x54\x63\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\
+\x6d\x70\x6d\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\
+\x61\x64\x6f\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\
+\x78\x3a\x78\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\
+\x4d\x50\x20\x43\x6f\x72\x65\x20\x35\x2e\x36\x2d\x63\x31\x34\x32\
+\x20\x37\x39\x2e\x31\x36\x30\x39\x32\x34\x2c\x20\x32\x30\x31\x37\
+\x2f\x30\x37\x2f\x31\x33\x2d\x30\x31\x3a\x30\x36\x3a\x33\x39\x20\
+\x20\x20\x20\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\
+\x44\x46\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\
+\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\
+\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\
+\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\
+\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\
+\x78\x6d\x70\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\
+\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\
+\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\
+\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\
+\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x45\x76\x74\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\
+\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\
+\x52\x65\x73\x6f\x75\x72\x63\x65\x45\x76\x65\x6e\x74\x23\x22\x20\
+\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\
+\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\
+\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\x22\x68\x74\x74\
+\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\
+\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\x2e\x30\x2f\x22\
+\x20\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\
+\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
+\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
+\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
+\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x37\x3a\x33\x35\
+\x3a\x30\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
+\x31\x2d\x30\x38\x2d\x32\x36\x54\x32\x32\x3a\x30\x35\x3a\x35\x39\
+\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
+\x32\x36\x54\x32\x32\x3a\x30\x35\x3a\x35\x39\x2b\x30\x37\x3a\x30\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x61\x62\x36\
+\x66\x34\x31\x31\x35\x2d\x62\x31\x64\x33\x2d\x65\x62\x34\x66\x2d\
+\x38\x36\x66\x37\x2d\x36\x35\x63\x38\x34\x66\x63\x31\x35\x34\x36\
+\x64\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x65\x34\x34\x66\x66\
+\x31\x33\x35\x2d\x66\x34\x61\x35\x2d\x33\x32\x34\x39\x2d\x61\x64\
+\x30\x37\x2d\x34\x35\x30\x65\x64\x63\x63\x31\x37\x65\x62\x37\x22\
+\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
+\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
+\x69\x64\x3a\x34\x39\x66\x31\x30\x34\x36\x37\x2d\x37\x61\x36\x62\
+\x2d\x30\x65\x34\x32\x2d\x39\x34\x37\x33\x2d\x36\x62\x64\x34\x66\
+\x34\x62\x65\x31\x31\x31\x64\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
+\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
+\x3a\x49\x43\x43\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\
+\x62\x65\x20\x52\x47\x42\x20\x28\x31\x39\x39\x38\x29\x22\x3e\x20\
+\x3c\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\
+\x3c\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\
+\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
+\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
+\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
+\x69\x64\x3a\x34\x39\x66\x31\x30\x34\x36\x37\x2d\x37\x61\x36\x62\
+\x2d\x30\x65\x34\x32\x2d\x39\x34\x37\x33\x2d\x36\x62\x64\x34\x66\
+\x34\x62\x65\x31\x31\x31\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\
+\x31\x37\x3a\x33\x35\x3a\x30\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
+\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
+\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
+\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
+\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x33\x39\x36\x64\
+\x63\x32\x34\x38\x2d\x31\x37\x35\x30\x2d\x34\x63\x34\x39\x2d\x62\
+\x31\x34\x64\x2d\x37\x61\x61\x30\x32\x33\x38\x39\x39\x30\x36\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
+\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x37\x3a\x33\x35\x3a\x30\
+\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
+\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
+\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
+\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
+\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\
+\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\
+\x6d\x70\x2e\x69\x69\x64\x3a\x61\x62\x36\x66\x34\x31\x31\x35\x2d\
+\x62\x31\x64\x33\x2d\x65\x62\x34\x66\x2d\x38\x36\x66\x37\x2d\x36\
+\x35\x63\x38\x34\x66\x63\x31\x35\x34\x36\x64\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\
+\x2d\x32\x36\x54\x32\x32\x3a\x30\x35\x3a\x35\x39\x2b\x30\x37\x3a\
+\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\
+\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\
+\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\
+\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\
+\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\
+\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\
+\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\
+\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\
+\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\
+\x22\x72\x22\x3f\x3e\xd5\x71\x5f\x37\x00\x00\x02\x1f\x49\x44\x41\
+\x54\x38\x8d\x8d\x92\x3f\x68\x94\x41\x10\xc5\x7f\x33\xbb\xf7\xdd\
+\x91\xbb\x5c\x0c\x7a\x26\x06\xb5\x8b\x01\x31\x92\x74\x5a\x68\x15\
+\x2d\x52\x5a\xaa\xb5\x9d\xd8\xaa\x60\x2b\x82\x60\x69\x61\x65\x63\
+\x11\x90\x70\x29\xa3\x49\x88\x48\x40\xed\x92\x4e\x43\x2c\x14\x41\
+\xad\x8e\xfc\x23\xdf\x7d\xb7\x3b\x16\x7b\x31\x7f\x44\xf4\xc1\x32\
+\xb3\xcb\xce\x9b\xb7\x6f\x47\xa6\x1f\xc3\xda\x73\x86\x7b\x1c\x8f\
+\xbc\x73\x13\xce\xb9\xba\xaa\x22\x22\x98\x81\x90\x20\x2a\x88\x08\
+\x4e\xdd\xba\xaa\xce\x01\x77\x47\xef\xd8\xaa\xdc\x3b\xc3\x48\xd9\
+\xf3\x6e\xf8\x12\x47\x4e\x8d\x09\xe5\x9a\x47\x10\x44\x05\x8c\xc4\
+\x60\x89\x40\x55\xa1\x70\xac\xaf\x3a\x7e\x2c\x69\xcb\x8c\x0b\x6e\
+\xac\x8f\x67\x8d\x71\xc6\x8f\x8f\x42\x4f\x0d\x54\x52\x4f\x33\xc3\
+\xcc\x52\xce\x5e\xae\x1e\x6a\x43\x8a\x96\xb4\xb2\xfd\x4d\x86\x74\
+\xcb\x98\x70\x83\xb0\xd3\x86\x76\x01\xd1\x22\x21\x04\x42\x0c\x07\
+\xf2\x10\x02\x9d\xd0\xf9\x9d\xf7\x9f\x8d\xa0\x5c\xd5\xdc\xa8\x77\
+\x04\x96\x96\xa1\x08\x10\xa3\x31\xf3\xc6\x98\x59\x34\xa2\x45\x22\
+\x91\xe6\x42\xa4\xb9\x18\x13\x61\x0c\xcc\x7f\x88\x68\xc5\x30\xb1\
+\x9a\xef\x00\x11\x58\x5e\x05\x51\x28\x67\xd0\x9c\x4f\xc6\x85\x98\
+\x62\x73\x61\x77\x6f\x38\x6f\xac\x7d\x8d\x4c\x5c\x8c\x98\x2a\xde\
+\xba\x5e\x1d\xed\x83\xe9\x79\xd0\x5d\xdb\x81\xa9\x59\x0e\x60\x6a\
+\x16\x9c\x83\xc9\xcb\x5d\x73\x15\xfc\xae\xcb\x8d\x7e\xd8\xc9\x41\
+\x24\xad\xfd\x30\x4b\x67\x66\xe0\x3d\x9c\x68\xa4\x62\x3c\x78\x34\
+\x6d\x06\x1a\x90\xb7\xff\x2c\x3e\x8c\x4e\x80\x93\x83\x5d\x05\x0e\
+\xbc\x69\x62\x1e\x38\x96\x7e\xe1\x5f\x70\x0e\x4e\x0f\x25\x02\x71\
+\xe0\x0d\x08\x06\xb5\x1e\x98\x79\x0a\xbd\xd5\xbf\xa8\xb0\x2e\x81\
+\x87\x52\x29\xcd\x09\x62\xf8\x28\x50\x74\x20\x0f\x30\x79\xeb\xff\
+\x14\xbc\x7f\x99\x9e\x6d\x6a\xf8\x08\xeb\x9b\x9b\xd4\xb7\x7a\xe1\
+\xc5\x13\xe8\xaf\x43\x56\x4a\x97\xf7\x2b\xd9\x35\xb7\x9c\xa5\xf9\
+\x28\xf2\x48\x44\x36\x3d\xc2\x5c\xeb\x3b\xd7\xaa\x35\xa8\x94\x93\
+\xd2\x72\x29\x75\x3a\x5c\x5c\x72\x20\x1a\x11\x0d\xb4\x3e\x09\x01\
+\x5e\xb9\xf3\x83\xac\xec\x6c\x70\x53\x94\x8a\xaf\x24\x73\x8a\x0e\
+\xb4\x3b\x90\x17\x90\xe7\x29\xb6\x8b\x34\x58\xa1\x80\xed\x2f\xc6\
+\xcf\x15\x69\x61\x76\x5d\x1e\xdc\x86\xcf\x6f\x19\x41\x78\x98\x29\
+\x57\xca\x9e\xde\x92\x82\x6a\xfa\x29\x91\xbd\x98\x39\xa8\x66\x6c\
+\xd4\x32\x5e\x57\x33\xb9\x7f\xee\x86\x7e\xfc\x05\x65\x13\xe6\x9c\
+\x64\x4c\xd0\x01\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\
+\x00\x00\x0c\x06\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
+\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
+\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
+\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
+\x50\x6c\xd5\xc1\x8c\x49\x5b\x8a\x20\x58\xab\x43\x92\xad\x49\x43\
+\x95\x62\x12\x6e\xae\x7f\xfa\x10\x8e\x6e\x1d\x5c\xdc\x7d\x02\x27\
+\x47\xc1\x41\xf1\x09\x7c\x03\xc5\xa9\x83\x43\x84\x0c\x05\x8b\xdf\
+\xf4\x9d\xdf\x39\x1c\xce\x01\xa3\x62\xd7\x9d\x86\x51\x86\xf3\x58\
+\xab\x76\xd3\x91\xae\xe7\xcb\xd9\x17\x66\x98\x02\x80\x4e\x98\xa5\
+\x76\xab\x75\x00\x10\x27\x71\xc4\x18\xdf\xef\x08\x80\xd7\x4d\xbb\
+\xee\x34\xc6\xfb\x7f\x32\x1f\xa6\x4a\x03\x23\x60\xbb\x1b\x65\x21\
+\x88\x0a\xd0\xbf\xd2\xa9\x06\x31\x04\xcc\xa0\x9f\x6a\x10\x0f\x80\
+\xa9\x4e\xda\x35\x10\x4f\x40\xa9\x97\xfb\x1b\x50\x0a\x72\xff\x00\
+\x4a\xca\xf5\x7c\x10\x5f\x80\xd9\x73\x3d\x1f\x8c\x39\xc0\x0c\x72\
+\x5f\x01\x4c\x1d\x5d\x6b\x80\x5a\x92\x0e\xd4\x59\xef\x54\xcb\xaa\
+\x65\x59\xd2\xee\x26\x41\x24\x8f\x07\x99\x8e\xce\x33\xb9\x1f\x87\
+\x89\x4a\x13\xd5\xd1\x51\x17\xc8\xef\x03\x60\x31\x1f\x6c\x37\x1d\
+\xb9\x56\xb5\xac\xbd\xf5\x7f\xfe\x3d\x11\xd7\xf3\x65\x6e\x9f\x47\
+\x08\x40\x2c\x3d\x17\x59\x41\x78\xa1\x2e\x7f\x55\x18\x3b\x93\xeb\
+\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
+\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
+\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x07\x53\x69\x54\x58\x74\
+\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
+\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
+\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
+\x57\x35\x4d\x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\
+\x4e\x54\x63\x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\
+\x6d\x70\x6d\x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\
+\x61\x64\x6f\x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\
+\x78\x3a\x78\x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\
+\x4d\x50\x20\x43\x6f\x72\x65\x20\x35\x2e\x36\x2d\x63\x31\x34\x32\
+\x20\x37\x39\x2e\x31\x36\x30\x39\x32\x34\x2c\x20\x32\x30\x31\x37\
+\x2f\x30\x37\x2f\x31\x33\x2d\x30\x31\x3a\x30\x36\x3a\x33\x39\x20\
+\x20\x20\x20\x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\
+\x44\x46\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\
+\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\
+\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\
+\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\
+\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\
+\x78\x6d\x70\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\
+\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\
+\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\
+\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\
+\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x74\x45\x76\x74\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\
+\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\
+\x52\x65\x73\x6f\x75\x72\x63\x65\x45\x76\x65\x6e\x74\x23\x22\x20\
+\x78\x6d\x6c\x6e\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\
+\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\
+\x2e\x63\x6f\x6d\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\
+\x2e\x30\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\
+\x63\x2f\x65\x6c\x65\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\
+\x20\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\
+\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
+\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
+\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
+\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x30\x30\
+\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
+\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x33\x39\x3a\x34\x35\
+\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
+\x32\x36\x54\x31\x33\x3a\x33\x39\x3a\x34\x35\x2b\x30\x37\x3a\x30\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x32\x66\x36\
+\x64\x39\x33\x61\x36\x2d\x31\x32\x33\x37\x2d\x39\x33\x34\x66\x2d\
+\x38\x61\x35\x30\x2d\x62\x63\x30\x66\x61\x35\x31\x30\x30\x37\x63\
+\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x38\x37\x30\x62\x30\
+\x64\x35\x32\x2d\x39\x34\x63\x38\x2d\x62\x39\x34\x34\x2d\x62\x35\
+\x37\x64\x2d\x66\x35\x37\x64\x30\x66\x63\x39\x36\x39\x32\x62\x22\
+\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
+\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
+\x69\x64\x3a\x38\x34\x62\x63\x30\x36\x62\x31\x2d\x65\x37\x61\x33\
+\x2d\x34\x37\x34\x35\x2d\x62\x61\x38\x37\x2d\x65\x33\x65\x65\x38\
+\x36\x61\x63\x62\x62\x64\x34\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\
+\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\x64\x65\x3d\x22\x33\x22\
+\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x49\x43\x43\x50\x72\
+\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\x62\x65\x20\x52\x47\x42\
+\x20\x28\x31\x39\x39\x38\x29\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x3e\x20\
+\x3c\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\
+\x3c\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\
+\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
+\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
+\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
+\x69\x64\x3a\x38\x34\x62\x63\x30\x36\x62\x31\x2d\x65\x37\x61\x33\
+\x2d\x34\x37\x34\x35\x2d\x62\x61\x38\x37\x2d\x65\x33\x65\x65\x38\
+\x36\x61\x63\x62\x62\x64\x34\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\
+\x31\x33\x3a\x30\x30\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
+\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
+\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
+\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
+\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x65\x33\x33\x34\
+\x38\x30\x35\x31\x2d\x32\x63\x64\x37\x2d\x66\x62\x34\x66\x2d\x39\
+\x66\x33\x62\x2d\x36\x66\x37\x66\x61\x38\x32\x62\x66\x32\x34\x64\
+\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
+\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x30\x30\x3a\x33\
+\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
+\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
+\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
+\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
+\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\
+\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\
+\x6d\x70\x2e\x69\x69\x64\x3a\x32\x66\x36\x64\x39\x33\x61\x36\x2d\
+\x31\x32\x33\x37\x2d\x39\x33\x34\x66\x2d\x38\x61\x35\x30\x2d\x62\
+\x63\x30\x66\x61\x35\x31\x30\x30\x37\x63\x30\x22\x20\x73\x74\x45\
+\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\
+\x2d\x32\x36\x54\x31\x33\x3a\x33\x39\x3a\x34\x35\x2b\x30\x37\x3a\
+\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\
+\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\
+\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\
+\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\
+\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\
+\x73\x74\x6f\x72\x79\x3e\x20\x3c\x70\x68\x6f\x74\x6f\x73\x68\x6f\
+\x70\x3a\x44\x6f\x63\x75\x6d\x65\x6e\x74\x41\x6e\x63\x65\x73\x74\
+\x6f\x72\x73\x3e\x20\x3c\x72\x64\x66\x3a\x42\x61\x67\x3e\x20\x3c\
+\x72\x64\x66\x3a\x6c\x69\x3e\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\
+\x69\x64\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x61\x34\x36\
+\x39\x30\x32\x38\x39\x2d\x38\x62\x66\x63\x2d\x32\x62\x34\x35\x2d\
+\x61\x61\x34\x32\x2d\x64\x62\x63\x66\x36\x35\x62\x65\x36\x30\x64\
+\x37\x3c\x2f\x72\x64\x66\x3a\x6c\x69\x3e\x20\x3c\x2f\x72\x64\x66\
+\x3a\x42\x61\x67\x3e\x20\x3c\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\
+\x70\x3a\x44\x6f\x63\x75\x6d\x65\x6e\x74\x41\x6e\x63\x65\x73\x74\
+\x6f\x72\x73\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\
+\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\
+\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\
+\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\
+\x22\x3f\x3e\x22\x47\x54\x58\x00\x00\x03\x16\x49\x44\x41\x54\x58\
+\x85\xc5\x97\xcf\x4b\x54\x51\x14\xc7\x3f\xe7\xbe\x99\x71\x91\xe8\
+\xb4\x88\x08\x5b\xb4\xc8\x0c\x9a\x55\x51\x5a\x48\x90\x88\x10\x54\
+\x0c\xb4\x0f\x77\x41\x41\x6b\xff\x80\x10\x17\x2d\x73\x61\x4b\x17\
+\xad\x22\xa6\x88\x8a\x10\x8d\x34\xfb\xb1\x2a\xb0\x30\x24\x0a\x52\
+\x08\x2b\x70\xcc\xac\x9c\x71\x6e\x8b\x37\xef\xbd\x7b\xdf\xbb\x4f\
+\x0d\xfc\x71\x60\x98\x7b\xee\x3b\xef\x7c\xbf\xf7\x9e\x1f\xef\x5e\
+\xd1\x5a\xb3\x93\xa2\x76\x14\x1d\xc8\x98\xca\x44\xa7\xb4\x22\x0c\
+\x00\xdd\x40\x13\xae\xcd\x11\x08\xe7\x83\xb1\xf9\x8f\x63\xec\xcb\
+\x22\x30\x02\xf4\x75\x4e\xe8\x99\xd0\x5d\x10\x82\x89\xd3\xd2\x86\
+\xe6\x25\x42\xde\x72\x62\x82\x05\xe2\x02\xc5\xf1\xdc\xd4\x23\x1f\
+\x0b\x40\x47\xe7\x33\xfd\x01\xcc\x1d\x10\xfa\x11\xf2\xef\x2a\x8d\
+\x0c\x2f\xb5\x50\xae\x59\x9b\xf3\xdf\x52\x2c\x16\x29\x95\x4a\xa1\
+\xde\xac\xaa\x5c\x6a\x9c\xe3\x48\x76\x29\x2f\xd0\x0f\x5c\x04\x33\
+\x07\x84\x6e\x14\x9b\x02\xee\x92\x72\x2d\xc3\xf0\x52\x8b\xbf\x0b\
+\x42\x4f\x30\x1f\x22\x89\xf2\x63\xbe\x15\xe0\x26\x09\xf1\xc3\xd0\
+\x98\x20\x50\x67\xb6\xf5\x12\xab\x3b\x9b\xc0\x76\x48\x2a\x01\xb5\
+\x4d\x24\x36\x4a\x60\xea\x4c\xf2\xdd\xc2\x58\x72\xfe\xe9\x1f\xc5\
+\xed\x8f\x9a\xc9\xf9\xa8\xe0\xa7\x7a\x04\xaa\xf7\xb9\x7e\xc6\x7e\
+\x17\x48\x2c\xd2\x4c\xc2\x04\x18\xc0\x54\xb7\x50\x18\x31\x3a\x92\
+\x67\xeb\xa7\xf6\xc3\xad\x23\x9a\xc2\x7c\xdd\xfe\xbc\x62\x79\x4f\
+\x96\xd2\xaf\xa3\xf4\x3f\x78\x91\x58\x84\x28\xac\xfe\x16\xc2\x6a\
+\xcf\xff\x25\x24\x3e\x97\xb1\x97\x30\x39\x5b\x83\x5d\x06\xfb\x7d\
+\x59\xfa\xc6\xab\xbc\xff\xbb\xd7\xe1\xac\xee\xcf\x30\x37\xfb\x80\
+\x3b\x07\xb2\x69\x7b\x66\x48\xde\x60\xf9\xa5\xc2\xe8\xcc\xaa\x1b\
+\x3c\x40\xf4\x6c\xd5\xc7\xf7\x92\x61\x70\x12\x88\xeb\x71\x02\xb9\
+\x75\x32\x59\x08\x7a\x01\xb0\x91\x3e\xb0\x0e\x81\xae\x7d\xc2\xe3\
+\x57\x2b\x1b\x26\x20\x5e\x4a\x0e\x88\x47\x32\xde\x2e\x87\x86\xde\
+\x75\x40\x31\x70\x36\xc7\xa3\xef\xc6\xf3\x86\xb5\x09\x68\x95\xb6\
+\x03\x69\x27\x83\x38\x81\xd9\x4a\x54\x8a\xba\xc6\xb5\xf1\x2a\xa3\
+\x9f\x6a\xe9\xf6\x31\x89\x57\x41\x44\xc0\x03\x71\x7d\xff\xe3\x21\
+\x68\x6b\xa0\x30\xf4\x37\x54\x87\x8e\xd7\xf8\x91\x87\xb7\x0b\xf5\
+\x89\x86\xb5\xcf\x38\x5a\xd9\x91\xb6\xab\xc0\x15\x82\xec\xda\x84\
+\x1e\x7e\x83\xbe\x63\x5e\xe4\x34\xb7\x26\xbe\x9f\xe8\xa9\x55\xe0\
+\x4c\xc2\x78\xef\xb4\x8d\xee\x7f\xd6\xb0\x4b\x71\xa1\x55\x85\xf6\
+\x37\x4f\x2a\x0e\xf2\xcd\xcd\x40\x61\x85\xdb\xce\x01\x23\x04\x61\
+\x9c\xdf\xfc\x0e\xc7\x85\xb1\x24\x01\x0d\x0c\xbc\x5e\xe5\x4a\x47\
+\x86\x7b\x33\x2b\x14\x6e\x2c\xfb\xf6\xe5\xe7\xf4\xba\x5a\x71\x2c\
+\x04\x21\x01\xad\xec\x1c\x08\x5f\x88\x49\xe1\xc6\x72\x62\xee\xed\
+\xd7\x1a\x97\x4b\x51\x29\x16\xc6\x92\x27\xa2\x40\xc4\xb3\x17\x6a\
+\x7f\x0b\xb6\xe3\x84\x1e\xeb\x37\x56\x23\x72\xe6\xc0\x66\x4b\xda\
+\xe7\x38\xa8\xcf\x62\xb1\xb8\x69\x58\x2e\x5f\x32\xff\xce\x4d\x00\
+\xc5\x22\x9a\xa6\xb1\x87\x77\x28\xaf\x6c\xcd\xb9\xb0\x39\x57\xe5\
+\xdc\x09\x40\x58\x8a\x60\x43\x6a\x8c\x88\x40\x6f\xeb\x1c\xcd\xb9\
+\xea\xa6\x83\xef\x6e\xa8\xd0\x7b\x68\xce\xaf\x02\xe1\x49\x08\x1b\
+\x5c\x4c\x5e\x5d\x95\xc3\x1a\x5e\x08\xf5\x8b\x49\x5d\xd2\xee\x1e\
+\xe6\xa5\xc5\x65\xa3\xc5\xa8\x2a\xfb\x96\xb4\x00\x9c\x6c\x1f\xd4\
+\xd3\x60\xec\x40\xfb\xa0\x9e\x16\xa1\x03\xe1\x2e\x8a\x9f\x61\xb6\
+\x06\x47\xb5\x60\xac\xa2\x39\x1d\x7f\x26\xd1\x4f\x30\xec\x7c\x02\
+\x3f\x11\xee\x6a\x45\x47\x00\x6e\xed\xc0\x4e\xc9\x8e\xdf\x8e\xff\
+\x01\xde\xb1\xde\x59\xd8\xdd\x2c\x0e\x00\x00\x00\x00\x49\x45\x4e\
+\x44\xae\x42\x60\x82\
+\x00\x00\x07\xc2\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x09\x00\x00\x00\x09\x08\x06\x00\x00\x00\xe0\x91\x06\x10\
\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
@@ -925,7 +1805,7 @@
\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
-\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x06\xb5\x69\x54\x58\x74\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x05\xea\x69\x54\x58\x74\
\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
@@ -963,27 +1843,27 @@
\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
-\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x37\x3a\x33\x35\
-\x3a\x30\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\
+\x3a\x32\x36\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
-\x31\x2d\x30\x38\x2d\x32\x36\x54\x32\x32\x3a\x30\x35\x3a\x35\x39\
+\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x32\x36\
\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
-\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
-\x32\x36\x54\x32\x32\x3a\x30\x35\x3a\x35\x39\x2b\x30\x37\x3a\x30\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\
+\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x32\x36\x2b\x30\x37\x3a\x30\
\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
-\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x61\x62\x36\
-\x66\x34\x31\x31\x35\x2d\x62\x31\x64\x33\x2d\x65\x62\x34\x66\x2d\
-\x38\x36\x66\x37\x2d\x36\x35\x63\x38\x34\x66\x63\x31\x35\x34\x36\
-\x64\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x62\x36\x39\
+\x65\x32\x31\x66\x65\x2d\x35\x62\x64\x31\x2d\x64\x63\x34\x61\x2d\
+\x39\x38\x64\x39\x2d\x37\x33\x63\x61\x31\x35\x62\x65\x35\x39\x30\
+\x31\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
-\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x65\x34\x34\x66\x66\
-\x31\x33\x35\x2d\x66\x34\x61\x35\x2d\x33\x32\x34\x39\x2d\x61\x64\
-\x30\x37\x2d\x34\x35\x30\x65\x64\x63\x63\x31\x37\x65\x62\x37\x22\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x38\x33\x33\x62\x61\
+\x63\x34\x66\x2d\x31\x62\x66\x64\x2d\x63\x34\x34\x64\x2d\x62\x62\
+\x33\x61\x2d\x35\x30\x63\x38\x61\x32\x34\x31\x34\x33\x65\x64\x22\
\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
-\x69\x64\x3a\x34\x39\x66\x31\x30\x34\x36\x37\x2d\x37\x61\x36\x62\
-\x2d\x30\x65\x34\x32\x2d\x39\x34\x37\x33\x2d\x36\x62\x64\x34\x66\
-\x34\x62\x65\x31\x31\x31\x64\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x69\x64\x3a\x39\x66\x36\x36\x31\x66\x32\x36\x2d\x38\x38\x35\x36\
+\x2d\x33\x64\x34\x34\x2d\x39\x32\x30\x34\x2d\x33\x31\x62\x33\x64\
+\x36\x35\x30\x66\x61\x63\x65\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
@@ -994,134 +1874,43 @@
\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
-\x69\x64\x3a\x34\x39\x66\x31\x30\x34\x36\x37\x2d\x37\x61\x36\x62\
-\x2d\x30\x65\x34\x32\x2d\x39\x34\x37\x33\x2d\x36\x62\x64\x34\x66\
-\x34\x62\x65\x31\x31\x31\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
-\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\
-\x31\x37\x3a\x33\x35\x3a\x30\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x69\x64\x3a\x39\x66\x36\x36\x31\x66\x32\x36\x2d\x38\x38\x35\x36\
+\x2d\x33\x64\x34\x34\x2d\x39\x32\x30\x34\x2d\x33\x31\x62\x33\x64\
+\x36\x35\x30\x66\x61\x63\x65\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\
+\x31\x38\x3a\x34\x32\x3a\x32\x36\x2b\x30\x37\x3a\x30\x30\x22\x20\
\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
-\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x33\x39\x36\x64\
-\x63\x32\x34\x38\x2d\x31\x37\x35\x30\x2d\x34\x63\x34\x39\x2d\x62\
-\x31\x34\x64\x2d\x37\x61\x61\x30\x32\x33\x38\x39\x39\x30\x36\x64\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x62\x36\x39\x65\
+\x32\x31\x66\x65\x2d\x35\x62\x64\x31\x2d\x64\x63\x34\x61\x2d\x39\
+\x38\x64\x39\x2d\x37\x33\x63\x61\x31\x35\x62\x65\x35\x39\x30\x31\
\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
-\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x37\x3a\x33\x35\x3a\x30\
-\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x32\
+\x36\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
-\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\
-\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\
-\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\
-\x6d\x70\x2e\x69\x69\x64\x3a\x61\x62\x36\x66\x34\x31\x31\x35\x2d\
-\x62\x31\x64\x33\x2d\x65\x62\x34\x66\x2d\x38\x36\x66\x37\x2d\x36\
-\x35\x63\x38\x34\x66\x63\x31\x35\x34\x36\x64\x22\x20\x73\x74\x45\
-\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\
-\x2d\x32\x36\x54\x32\x32\x3a\x30\x35\x3a\x35\x39\x2b\x30\x37\x3a\
-\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\
-\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\
-\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\
-\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\
-\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\
-\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\
-\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\
-\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\
-\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\
-\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\
-\x22\x72\x22\x3f\x3e\xd5\x71\x5f\x37\x00\x00\x02\x1f\x49\x44\x41\
-\x54\x38\x8d\x8d\x92\x3f\x68\x94\x41\x10\xc5\x7f\x33\xbb\xf7\xdd\
-\x91\xbb\x5c\x0c\x7a\x26\x06\xb5\x8b\x01\x31\x92\x74\x5a\x68\x15\
-\x2d\x52\x5a\xaa\xb5\x9d\xd8\xaa\x60\x2b\x82\x60\x69\x61\x65\x63\
-\x11\x90\x70\x29\xa3\x49\x88\x48\x40\xed\x92\x4e\x43\x2c\x14\x41\
-\xad\x8e\xfc\x23\xdf\x7d\xb7\x3b\x16\x7b\x31\x7f\x44\xf4\xc1\x32\
-\xb3\xcb\xce\x9b\xb7\x6f\x47\xa6\x1f\xc3\xda\x73\x86\x7b\x1c\x8f\
-\xbc\x73\x13\xce\xb9\xba\xaa\x22\x22\x98\x81\x90\x20\x2a\x88\x08\
-\x4e\xdd\xba\xaa\xce\x01\x77\x47\xef\xd8\xaa\xdc\x3b\xc3\x48\xd9\
-\xf3\x6e\xf8\x12\x47\x4e\x8d\x09\xe5\x9a\x47\x10\x44\x05\x8c\xc4\
-\x60\x89\x40\x55\xa1\x70\xac\xaf\x3a\x7e\x2c\x69\xcb\x8c\x0b\x6e\
-\xac\x8f\x67\x8d\x71\xc6\x8f\x8f\x42\x4f\x0d\x54\x52\x4f\x33\xc3\
-\xcc\x52\xce\x5e\xae\x1e\x6a\x43\x8a\x96\xb4\xb2\xfd\x4d\x86\x74\
-\xcb\x98\x70\x83\xb0\xd3\x86\x76\x01\xd1\x22\x21\x04\x42\x0c\x07\
-\xf2\x10\x02\x9d\xd0\xf9\x9d\xf7\x9f\x8d\xa0\x5c\xd5\xdc\xa8\x77\
-\x04\x96\x96\xa1\x08\x10\xa3\x31\xf3\xc6\x98\x59\x34\xa2\x45\x22\
-\x91\xe6\x42\xa4\xb9\x18\x13\x61\x0c\xcc\x7f\x88\x68\xc5\x30\xb1\
-\x9a\xef\x00\x11\x58\x5e\x05\x51\x28\x67\xd0\x9c\x4f\xc6\x85\x98\
-\x62\x73\x61\x77\x6f\x38\x6f\xac\x7d\x8d\x4c\x5c\x8c\x98\x2a\xde\
-\xba\x5e\x1d\xed\x83\xe9\x79\xd0\x5d\xdb\x81\xa9\x59\x0e\x60\x6a\
-\x16\x9c\x83\xc9\xcb\x5d\x73\x15\xfc\xae\xcb\x8d\x7e\xd8\xc9\x41\
-\x24\xad\xfd\x30\x4b\x67\x66\xe0\x3d\x9c\x68\xa4\x62\x3c\x78\x34\
-\x6d\x06\x1a\x90\xb7\xff\x2c\x3e\x8c\x4e\x80\x93\x83\x5d\x05\x0e\
-\xbc\x69\x62\x1e\x38\x96\x7e\xe1\x5f\x70\x0e\x4e\x0f\x25\x02\x71\
-\xe0\x0d\x08\x06\xb5\x1e\x98\x79\x0a\xbd\xd5\xbf\xa8\xb0\x2e\x81\
-\x87\x52\x29\xcd\x09\x62\xf8\x28\x50\x74\x20\x0f\x30\x79\xeb\xff\
-\x14\xbc\x7f\x99\x9e\x6d\x6a\xf8\x08\xeb\x9b\x9b\xd4\xb7\x7a\xe1\
-\xc5\x13\xe8\xaf\x43\x56\x4a\x97\xf7\x2b\xd9\x35\xb7\x9c\xa5\xf9\
-\x28\xf2\x48\x44\x36\x3d\xc2\x5c\xeb\x3b\xd7\xaa\x35\xa8\x94\x93\
-\xd2\x72\x29\x75\x3a\x5c\x5c\x72\x20\x1a\x11\x0d\xb4\x3e\x09\x01\
-\x5e\xb9\xf3\x83\xac\xec\x6c\x70\x53\x94\x8a\xaf\x24\x73\x8a\x0e\
-\xb4\x3b\x90\x17\x90\xe7\x29\xb6\x8b\x34\x58\xa1\x80\xed\x2f\xc6\
-\xcf\x15\x69\x61\x76\x5d\x1e\xdc\x86\xcf\x6f\x19\x41\x78\x98\x29\
-\x57\xca\x9e\xde\x92\x82\x6a\xfa\x29\x91\xbd\x98\x39\xa8\x66\x6c\
-\xd4\x32\x5e\x57\x33\xb9\x7f\xee\x86\x7e\xfc\x05\x65\x13\xe6\x9c\
-\x64\x4c\xd0\x01\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
-\
-\x00\x00\x02\xdd\
-\x89\
-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
-\x00\x00\x02\xa4\x49\x44\x41\x54\x38\x8d\x6d\x93\x4f\x6b\x9d\x55\
-\x10\xc6\x7f\x73\xce\xfb\x26\x97\xdc\xde\xf4\x6a\xa2\xad\x14\x43\
-\x2d\xd6\x54\x37\x15\x37\x2d\x74\x5b\x45\x0a\xa2\xb8\x53\x04\x77\
-\x2a\xb8\x73\x25\x2e\x14\xa1\x04\xbf\x80\x50\xfd\x02\xfa\x09\x24\
-\x98\x52\x69\xc1\x3f\x2b\xa1\x15\x21\xc1\xa0\x21\x2e\xd4\x84\xdc\
-\xde\xdc\x3f\xb9\xef\x39\x73\xce\x19\x17\x37\x94\xc4\xfa\xc0\x6c\
-\x06\xe6\x99\xe7\x19\x9e\x11\x33\x63\xf0\xc5\xa7\xe7\x7d\x55\x7f\
-\xe6\xaa\xfa\xaa\x38\x3f\x2f\xce\x21\x22\x1c\x85\x99\x61\xa5\x60\
-\x25\x0f\x4a\xd2\x9b\x39\xe9\x87\xf3\xef\x7e\xf2\x9b\xfc\x75\xfd\
-\x9d\x65\x37\xd7\xfd\xe9\xee\xd3\xd7\xba\xeb\x8f\x9d\x43\x67\x5b\
-\xd4\xce\xe3\x9c\x3c\x20\x31\x33\x4a\x31\xb4\x64\xea\xd0\x70\x61\
-\xf7\x77\x2e\x6e\x7e\xd3\x2f\x07\xfd\xcb\x2e\x84\xb8\x72\x67\xe1\
-\x4a\x77\xb5\xbd\x44\xaf\x78\x72\x36\xcc\x40\x10\xc4\x0e\x0b\xc1\
-\x0c\x72\x36\x7a\xc5\xb3\xda\x5e\xe2\x87\x47\x2e\x77\x43\x88\x2b\
-\x55\x88\x7a\xf5\x4e\xfb\x49\x46\x13\xc5\x8b\x67\xb9\x33\xc3\xf3\
-\xa7\x5a\x9c\x9e\x9f\xa5\x3d\xe3\xf0\x22\x0c\x43\x66\xbb\x1f\xf8\
-\xf9\x9f\x31\xbf\x0e\x13\xf7\x27\xca\xad\xce\x59\x9e\x8b\xfa\x52\
-\x15\x63\x9c\xff\x3b\x09\xbe\x51\xfa\xe2\x78\xf9\xec\xa3\xb4\x5b\
-\x35\xce\x81\x60\x60\xc6\x89\x1a\x2e\x2c\xd4\x9c\xeb\xcc\xf1\xfd\
-\xed\x7d\x26\x8d\x32\x4a\x42\x8c\xf1\x44\x15\x42\xa4\x69\x22\xbe\
-\x86\x58\x84\xac\x09\xf5\x0e\xef\xfd\xb1\x23\xe6\x9c\x51\x55\xf6\
-\xc6\x91\xa2\x4a\xd6\x48\x08\x91\x2a\x86\xc8\x24\x24\x5c\x16\x7c\
-\x16\x54\x03\x42\xf9\x5f\x82\xde\x30\x30\x69\x94\xac\x4a\x49\x89\
-\x18\x22\x95\x46\xe5\xa0\x51\x7c\x2d\x48\x16\x76\xf7\x03\x8f\x9f\
-\x9c\x0e\x1c\x45\x29\x85\x3f\x7b\x13\xc6\xcd\x74\xb8\xa8\xa2\x51\
-\xa9\x34\x46\x0e\x62\x46\x4a\xc6\x65\xc7\xd6\x5e\xc3\x62\xa7\x7e\
-\x28\x07\xa5\x14\x36\x76\x1a\xc6\x21\x53\x52\xc6\x52\x46\x63\xa4\
-\xd2\x10\xd8\x9f\x28\xae\x02\xa9\x8c\x1f\xb7\x46\x5c\x3c\xd3\xa2\
-\x94\xf2\x90\x85\x5b\x5b\x23\xf6\x27\x11\x4b\x8a\x25\x45\x43\xa0\
-\x8a\x21\xb0\xdb\x04\x70\x19\xf1\x89\x2f\x37\x95\x4b\xa7\x1d\xcf\
-\x9e\x99\x3b\x16\xa4\xef\xd6\x07\xac\xee\x8c\x20\x27\x2c\x27\x28\
-\x89\x18\xc2\x54\xc1\x68\x12\x41\x12\x38\x0f\xce\xf1\xda\x5a\xc3\
-\x57\x57\xba\x3c\xf3\x44\x0b\x80\xdb\xeb\x23\x3e\xb8\x37\x04\x2b\
-\x50\x0a\x94\x0c\x56\xa6\x0a\x34\x84\xc1\xd2\x78\x3c\xbf\xed\x6b\
-\x40\x40\x04\x10\xde\x58\x1d\xf1\xf9\xa5\x0e\x7b\xe3\xcc\xc7\xbf\
-\x1c\x80\x19\x1c\xe6\x02\x8c\xa5\xac\x68\x08\xa3\x2a\x85\xe6\xe6\
-\xb5\x9d\xcd\xd7\x6f\x9c\x7c\x6a\xba\x01\x3b\x74\x2d\xbc\xbf\x36\
-\x38\xfa\x4e\x0f\xfa\x88\xe3\x95\xfe\x26\x29\x34\xdf\xfa\x57\x17\
-\xab\x7b\x0b\xbd\xf5\xb7\x16\xdd\xa9\xd6\x5d\x66\x40\x13\xc4\x08\
-\x31\xfc\xa7\x14\x54\x41\x1b\xde\xbe\xff\x07\x2f\x6c\x7f\xdd\xf7\
-\x65\xfc\xa6\x98\x19\x37\x96\x67\x97\x9b\xc2\x4a\x2c\xf6\xa2\x16\
-\x3a\xc9\x8c\x62\x1c\x83\x13\xa8\x44\xa8\x1c\xc3\x59\x27\x6b\x2d\
-\xc7\x47\xef\x6d\x84\x8d\x7f\x01\x94\xaa\xa7\xf7\x0e\x04\xf9\x8f\
-\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
-\x00\x00\x0c\x06\
+\x3c\x2f\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\
+\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\
+\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\
+\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\
+\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\
+\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xa6\x0c\xb7\x4f\x00\x00\
+\x00\x3b\x49\x44\x41\x54\x18\x95\x63\xfc\xff\xff\x3f\x03\x21\xc0\
+\x44\x50\x05\x14\xac\x66\x60\x60\xf0\xc0\x21\xe7\x01\x95\x67\xf0\
+\x60\x60\x60\xf8\x88\x45\x21\x86\x38\xba\x00\x2e\x8d\x70\x89\x1a\
+\x5c\x0a\x90\x15\x3e\x46\x57\xc0\x48\xb5\x20\x00\x00\xca\xf2\x12\
+\x4c\x24\x06\x88\x40\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\
+\x82\
+\x00\x00\x07\xce\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
+\x00\x00\x09\x00\x00\x00\x09\x08\x06\x00\x00\x00\xe0\x91\x06\x10\
\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
@@ -1143,7 +1932,7 @@
\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
-\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x07\x53\x69\x54\x58\x74\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x05\xea\x69\x54\x58\x74\
\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
@@ -1171,152 +1960,84 @@
\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\
\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\
\x52\x65\x73\x6f\x75\x72\x63\x65\x45\x76\x65\x6e\x74\x23\x22\x20\
-\x78\x6d\x6c\x6e\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\
-\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\
-\x2e\x63\x6f\x6d\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\
-\x2e\x30\x2f\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\
-\x63\x2f\x65\x6c\x65\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\
+\x78\x6d\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\
+\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\
+\x6d\x65\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3d\x22\x68\x74\x74\
+\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\
+\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x2f\x31\x2e\x30\x2f\x22\
\x20\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\
\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
-\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x30\x30\
-\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x33\
+\x3a\x31\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
-\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x33\x39\x3a\x34\x35\
+\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x33\x3a\x31\x39\
\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
-\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
-\x32\x36\x54\x31\x33\x3a\x33\x39\x3a\x34\x35\x2b\x30\x37\x3a\x30\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\
+\x30\x32\x54\x31\x38\x3a\x34\x33\x3a\x31\x39\x2b\x30\x37\x3a\x30\
\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
-\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x32\x66\x36\
-\x64\x39\x33\x61\x36\x2d\x31\x32\x33\x37\x2d\x39\x33\x34\x66\x2d\
-\x38\x61\x35\x30\x2d\x62\x63\x30\x66\x61\x35\x31\x30\x30\x37\x63\
-\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x62\x37\x39\
+\x34\x30\x61\x33\x61\x2d\x63\x64\x38\x64\x2d\x61\x34\x34\x38\x2d\
+\x39\x31\x36\x31\x2d\x39\x66\x33\x38\x31\x61\x30\x38\x39\x31\x64\
+\x33\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
-\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x38\x37\x30\x62\x30\
-\x64\x35\x32\x2d\x39\x34\x63\x38\x2d\x62\x39\x34\x34\x2d\x62\x35\
-\x37\x64\x2d\x66\x35\x37\x64\x30\x66\x63\x39\x36\x39\x32\x62\x22\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x39\x36\x64\x34\x62\
+\x32\x34\x31\x2d\x30\x38\x33\x37\x2d\x66\x35\x34\x61\x2d\x61\x37\
+\x63\x36\x2d\x65\x34\x66\x31\x30\x38\x63\x37\x62\x37\x30\x61\x22\
\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
-\x69\x64\x3a\x38\x34\x62\x63\x30\x36\x62\x31\x2d\x65\x37\x61\x33\
-\x2d\x34\x37\x34\x35\x2d\x62\x61\x38\x37\x2d\x65\x33\x65\x65\x38\
-\x36\x61\x63\x62\x62\x64\x34\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\
-\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\x64\x65\x3d\x22\x33\x22\
-\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x49\x43\x43\x50\x72\
-\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\x62\x65\x20\x52\x47\x42\
-\x20\x28\x31\x39\x39\x38\x29\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
-\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x3e\x20\
+\x69\x64\x3a\x61\x31\x36\x34\x65\x62\x64\x32\x2d\x66\x32\x30\x62\
+\x2d\x32\x35\x34\x34\x2d\x38\x39\x32\x38\x2d\x38\x65\x30\x33\x35\
+\x37\x37\x30\x66\x32\x33\x65\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
+\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
+\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
+\x3a\x49\x43\x43\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x41\x64\x6f\
+\x62\x65\x20\x52\x47\x42\x20\x28\x31\x39\x39\x38\x29\x22\x3e\x20\
\x3c\x78\x6d\x70\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\
\x3c\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x72\x64\x66\x3a\x6c\
\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
-\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
-\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
-\x69\x64\x3a\x38\x34\x62\x63\x30\x36\x62\x31\x2d\x65\x37\x61\x33\
-\x2d\x34\x37\x34\x35\x2d\x62\x61\x38\x37\x2d\x65\x33\x65\x65\x38\
-\x36\x61\x63\x62\x62\x64\x34\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
-\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\
-\x31\x33\x3a\x30\x30\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
+\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
+\x69\x64\x3a\x61\x31\x36\x34\x65\x62\x64\x32\x2d\x66\x32\x30\x62\
+\x2d\x32\x35\x34\x34\x2d\x38\x39\x32\x38\x2d\x38\x65\x30\x33\x35\
+\x37\x37\x30\x66\x32\x33\x65\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\
+\x31\x38\x3a\x34\x33\x3a\x31\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\
\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
-\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x65\x33\x33\x34\
-\x38\x30\x35\x31\x2d\x32\x63\x64\x37\x2d\x66\x62\x34\x66\x2d\x39\
-\x66\x33\x62\x2d\x36\x66\x37\x66\x61\x38\x32\x62\x66\x32\x34\x64\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x62\x37\x39\x34\
+\x30\x61\x33\x61\x2d\x63\x64\x38\x64\x2d\x61\x34\x34\x38\x2d\x39\
+\x31\x36\x31\x2d\x39\x66\x33\x38\x31\x61\x30\x38\x39\x31\x64\x33\
\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
-\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x30\x30\x3a\x33\
-\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x33\x3a\x31\
+\x39\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
-\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\
-\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\
-\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\
-\x6d\x70\x2e\x69\x69\x64\x3a\x32\x66\x36\x64\x39\x33\x61\x36\x2d\
-\x31\x32\x33\x37\x2d\x39\x33\x34\x66\x2d\x38\x61\x35\x30\x2d\x62\
-\x63\x30\x66\x61\x35\x31\x30\x30\x37\x63\x30\x22\x20\x73\x74\x45\
-\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\
-\x2d\x32\x36\x54\x31\x33\x3a\x33\x39\x3a\x34\x35\x2b\x30\x37\x3a\
-\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\
-\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\
-\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\
-\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\
-\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\
-\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\
-\x73\x74\x6f\x72\x79\x3e\x20\x3c\x70\x68\x6f\x74\x6f\x73\x68\x6f\
-\x70\x3a\x44\x6f\x63\x75\x6d\x65\x6e\x74\x41\x6e\x63\x65\x73\x74\
-\x6f\x72\x73\x3e\x20\x3c\x72\x64\x66\x3a\x42\x61\x67\x3e\x20\x3c\
-\x72\x64\x66\x3a\x6c\x69\x3e\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\
-\x69\x64\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x61\x34\x36\
-\x39\x30\x32\x38\x39\x2d\x38\x62\x66\x63\x2d\x32\x62\x34\x35\x2d\
-\x61\x61\x34\x32\x2d\x64\x62\x63\x66\x36\x35\x62\x65\x36\x30\x64\
-\x37\x3c\x2f\x72\x64\x66\x3a\x6c\x69\x3e\x20\x3c\x2f\x72\x64\x66\
-\x3a\x42\x61\x67\x3e\x20\x3c\x2f\x70\x68\x6f\x74\x6f\x73\x68\x6f\
-\x70\x3a\x44\x6f\x63\x75\x6d\x65\x6e\x74\x41\x6e\x63\x65\x73\x74\
-\x6f\x72\x73\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\
-\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\
-\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\
-\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\
-\x22\x3f\x3e\x22\x47\x54\x58\x00\x00\x03\x16\x49\x44\x41\x54\x58\
-\x85\xc5\x97\xcf\x4b\x54\x51\x14\xc7\x3f\xe7\xbe\x99\x71\x91\xe8\
-\xb4\x88\x08\x5b\xb4\xc8\x0c\x9a\x55\x51\x5a\x48\x90\x88\x10\x54\
-\x0c\xb4\x0f\x77\x41\x41\x6b\xff\x80\x10\x17\x2d\x73\x61\x4b\x17\
-\xad\x22\xa6\x88\x8a\x10\x8d\x34\xfb\xb1\x2a\xb0\x30\x24\x0a\x52\
-\x08\x2b\x70\xcc\xac\x9c\x71\x6e\x8b\x37\xef\xbd\x7b\xdf\xbb\x4f\
-\x0d\xfc\x71\x60\x98\x7b\xee\x3b\xef\x7c\xbf\xf7\x9e\x1f\xef\x5e\
-\xd1\x5a\xb3\x93\xa2\x76\x14\x1d\xc8\x98\xca\x44\xa7\xb4\x22\x0c\
-\x00\xdd\x40\x13\xae\xcd\x11\x08\xe7\x83\xb1\xf9\x8f\x63\xec\xcb\
-\x22\x30\x02\xf4\x75\x4e\xe8\x99\xd0\x5d\x10\x82\x89\xd3\xd2\x86\
-\xe6\x25\x42\xde\x72\x62\x82\x05\xe2\x02\xc5\xf1\xdc\xd4\x23\x1f\
-\x0b\x40\x47\xe7\x33\xfd\x01\xcc\x1d\x10\xfa\x11\xf2\xef\x2a\x8d\
-\x0c\x2f\xb5\x50\xae\x59\x9b\xf3\xdf\x52\x2c\x16\x29\x95\x4a\xa1\
-\xde\xac\xaa\x5c\x6a\x9c\xe3\x48\x76\x29\x2f\xd0\x0f\x5c\x04\x33\
-\x07\x84\x6e\x14\x9b\x02\xee\x92\x72\x2d\xc3\xf0\x52\x8b\xbf\x0b\
-\x42\x4f\x30\x1f\x22\x89\xf2\x63\xbe\x15\xe0\x26\x09\xf1\xc3\xd0\
-\x98\x20\x50\x67\xb6\xf5\x12\xab\x3b\x9b\xc0\x76\x48\x2a\x01\xb5\
-\x4d\x24\x36\x4a\x60\xea\x4c\xf2\xdd\xc2\x58\x72\xfe\xe9\x1f\xc5\
-\xed\x8f\x9a\xc9\xf9\xa8\xe0\xa7\x7a\x04\xaa\xf7\xb9\x7e\xc6\x7e\
-\x17\x48\x2c\xd2\x4c\xc2\x04\x18\xc0\x54\xb7\x50\x18\x31\x3a\x92\
-\x67\xeb\xa7\xf6\xc3\xad\x23\x9a\xc2\x7c\xdd\xfe\xbc\x62\x79\x4f\
-\x96\xd2\xaf\xa3\xf4\x3f\x78\x91\x58\x84\x28\xac\xfe\x16\xc2\x6a\
-\xcf\xff\x25\x24\x3e\x97\xb1\x97\x30\x39\x5b\x83\x5d\x06\xfb\x7d\
-\x59\xfa\xc6\xab\xbc\xff\xbb\xd7\xe1\xac\xee\xcf\x30\x37\xfb\x80\
-\x3b\x07\xb2\x69\x7b\x66\x48\xde\x60\xf9\xa5\xc2\xe8\xcc\xaa\x1b\
-\x3c\x40\xf4\x6c\xd5\xc7\xf7\x92\x61\x70\x12\x88\xeb\x71\x02\xb9\
-\x75\x32\x59\x08\x7a\x01\xb0\x91\x3e\xb0\x0e\x81\xae\x7d\xc2\xe3\
-\x57\x2b\x1b\x26\x20\x5e\x4a\x0e\x88\x47\x32\xde\x2e\x87\x86\xde\
-\x75\x40\x31\x70\x36\xc7\xa3\xef\xc6\xf3\x86\xb5\x09\x68\x95\xb6\
-\x03\x69\x27\x83\x38\x81\xd9\x4a\x54\x8a\xba\xc6\xb5\xf1\x2a\xa3\
-\x9f\x6a\xe9\xf6\x31\x89\x57\x41\x44\xc0\x03\x71\x7d\xff\xe3\x21\
-\x68\x6b\xa0\x30\xf4\x37\x54\x87\x8e\xd7\xf8\x91\x87\xb7\x0b\xf5\
-\x89\x86\xb5\xcf\x38\x5a\xd9\x91\xb6\xab\xc0\x15\x82\xec\xda\x84\
-\x1e\x7e\x83\xbe\x63\x5e\xe4\x34\xb7\x26\xbe\x9f\xe8\xa9\x55\xe0\
-\x4c\xc2\x78\xef\xb4\x8d\xee\x7f\xd6\xb0\x4b\x71\xa1\x55\x85\xf6\
-\x37\x4f\x2a\x0e\xf2\xcd\xcd\x40\x61\x85\xdb\xce\x01\x23\x04\x61\
-\x9c\xdf\xfc\x0e\xc7\x85\xb1\x24\x01\x0d\x0c\xbc\x5e\xe5\x4a\x47\
-\x86\x7b\x33\x2b\x14\x6e\x2c\xfb\xf6\xe5\xe7\xf4\xba\x5a\x71\x2c\
-\x04\x21\x01\xad\xec\x1c\x08\x5f\x88\x49\xe1\xc6\x72\x62\xee\xed\
-\xd7\x1a\x97\x4b\x51\x29\x16\xc6\x92\x27\xa2\x40\xc4\xb3\x17\x6a\
-\x7f\x0b\xb6\xe3\x84\x1e\xeb\x37\x56\x23\x72\xe6\xc0\x66\x4b\xda\
-\xe7\x38\xa8\xcf\x62\xb1\xb8\x69\x58\x2e\x5f\x32\xff\xce\x4d\x00\
-\xc5\x22\x9a\xa6\xb1\x87\x77\x28\xaf\x6c\xcd\xb9\xb0\x39\x57\xe5\
-\xdc\x09\x40\x58\x8a\x60\x43\x6a\x8c\x88\x40\x6f\xeb\x1c\xcd\xb9\
-\xea\xa6\x83\xef\x6e\xa8\xd0\x7b\x68\xce\xaf\x02\xe1\x49\x08\x1b\
-\x5c\x4c\x5e\x5d\x95\xc3\x1a\x5e\x08\xf5\x8b\x49\x5d\xd2\xee\x1e\
-\xe6\xa5\xc5\x65\xa3\xc5\xa8\x2a\xfb\x96\xb4\x00\x9c\x6c\x1f\xd4\
-\xd3\x60\xec\x40\xfb\xa0\x9e\x16\xa1\x03\xe1\x2e\x8a\x9f\x61\xb6\
-\x06\x47\xb5\x60\xac\xa2\x39\x1d\x7f\x26\xd1\x4f\x30\xec\x7c\x02\
-\x3f\x11\xee\x6a\x45\x47\x00\x6e\xed\xc0\x4e\xc9\x8e\xdf\x8e\xff\
-\x01\xde\xb1\xde\x59\xd8\xdd\x2c\x0e\x00\x00\x00\x00\x49\x45\x4e\
-\x44\xae\x42\x60\x82\
-\x00\x00\x0a\x05\
+\x3c\x2f\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\
+\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\
+\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\
+\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\
+\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\
+\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xb0\x97\x95\x64\x00\x00\
+\x00\x47\x49\x44\x41\x54\x18\x95\xad\xd0\xc1\x09\x00\x20\x08\x85\
+\xe1\x57\xd3\x39\x54\x1b\x35\x56\x13\x34\xc1\xdf\xa5\x28\x4a\xf0\
+\x92\x20\x0f\xf1\xf3\x62\x02\x14\x55\x0e\x85\x83\x4c\x52\x9b\xb9\
+\x0b\x58\x6d\x40\x07\xca\x4c\x5b\xbb\x1b\x98\x37\x7b\xe0\x39\x14\
+\x50\x1d\x70\xc2\x9a\xbe\xbd\x60\x00\xef\xb0\x7d\xe2\xd3\x05\x84\
+\xb6\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x07\xcc\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x09\x00\x00\x00\x09\x08\x06\x00\x00\x00\xe0\x91\x06\x10\
\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
@@ -1338,7 +2059,7 @@
\x62\xc7\x70\x19\x0e\xef\x61\x7a\x54\x64\xbb\x37\x70\xb7\x01\x0b\
\xb7\x45\xb6\x5a\x85\xf2\x16\x3c\x0e\x7f\x00\xc0\xc6\x4f\xfd\xf3\
\x53\x3f\xc8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x2e\x23\x00\
-\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x06\xb5\x69\x54\x58\x74\
+\x00\x2e\x23\x01\x78\xa5\x3f\x76\x00\x00\x05\xea\x69\x54\x58\x74\
\x58\x4d\x4c\x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\
\x70\x00\x00\x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\
\x62\x65\x67\x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\
@@ -1376,27 +2097,27 @@
\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
-\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x32\x3a\x35\x30\
-\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\
+\x3a\x34\x30\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
-\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x33\x3a\x34\x33\x3a\x32\x30\
+\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x34\x30\
\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
-\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
-\x32\x36\x54\x31\x33\x3a\x34\x33\x3a\x32\x30\x2b\x30\x37\x3a\x30\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\
+\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x34\x30\x2b\x30\x37\x3a\x30\
\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
-\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x31\x64\x30\
-\x64\x64\x33\x64\x65\x2d\x65\x33\x32\x66\x2d\x66\x38\x34\x64\x2d\
-\x61\x39\x61\x38\x2d\x62\x37\x33\x63\x30\x35\x38\x61\x65\x30\x36\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x39\x62\x31\
+\x39\x61\x35\x61\x34\x2d\x65\x65\x37\x36\x2d\x31\x31\x34\x38\x2d\
+\x62\x64\x38\x32\x2d\x30\x30\x64\x33\x65\x33\x32\x30\x66\x31\x33\
\x62\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
-\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x61\x34\x36\x39\x30\
-\x32\x38\x39\x2d\x38\x62\x66\x63\x2d\x32\x62\x34\x35\x2d\x61\x61\
-\x34\x32\x2d\x64\x62\x63\x66\x36\x35\x62\x65\x36\x30\x64\x37\x22\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x33\x37\x36\x34\x30\
+\x66\x32\x38\x2d\x34\x62\x62\x66\x2d\x39\x38\x34\x66\x2d\x62\x39\
+\x32\x30\x2d\x33\x66\x65\x36\x65\x64\x62\x32\x33\x33\x35\x33\x22\
\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
-\x69\x64\x3a\x39\x32\x61\x31\x32\x35\x31\x31\x2d\x38\x36\x39\x35\
-\x2d\x66\x64\x34\x63\x2d\x38\x37\x31\x61\x2d\x30\x62\x38\x66\x37\
-\x35\x66\x65\x34\x63\x37\x37\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x69\x64\x3a\x37\x37\x64\x35\x65\x61\x34\x33\x2d\x35\x35\x39\x31\
+\x2d\x30\x61\x34\x64\x2d\x39\x35\x30\x32\x2d\x33\x38\x39\x32\x64\
+\x34\x61\x36\x62\x31\x62\x36\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
@@ -1407,79 +2128,43 @@
\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
-\x69\x64\x3a\x39\x32\x61\x31\x32\x35\x31\x31\x2d\x38\x36\x39\x35\
-\x2d\x66\x64\x34\x63\x2d\x38\x37\x31\x61\x2d\x30\x62\x38\x66\x37\
-\x35\x66\x65\x34\x63\x37\x37\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
-\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\
-\x31\x32\x3a\x35\x30\x3a\x33\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x69\x64\x3a\x37\x37\x64\x35\x65\x61\x34\x33\x2d\x35\x35\x39\x31\
+\x2d\x30\x61\x34\x64\x2d\x39\x35\x30\x32\x2d\x33\x38\x39\x32\x64\
+\x34\x61\x36\x62\x31\x62\x36\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\
+\x31\x38\x3a\x34\x32\x3a\x34\x30\x2b\x30\x37\x3a\x30\x30\x22\x20\
\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
-\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x34\x65\x65\x63\
-\x62\x35\x31\x64\x2d\x30\x33\x63\x31\x2d\x34\x64\x34\x66\x2d\x62\
-\x36\x62\x30\x2d\x37\x64\x61\x64\x64\x65\x38\x62\x62\x31\x34\x36\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x39\x62\x31\x39\
+\x61\x35\x61\x34\x2d\x65\x65\x37\x36\x2d\x31\x31\x34\x38\x2d\x62\
+\x64\x38\x32\x2d\x30\x30\x64\x33\x65\x33\x32\x30\x66\x31\x33\x62\
\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
-\x32\x31\x2d\x30\x38\x2d\x32\x36\x54\x31\x32\x3a\x35\x30\x3a\x33\
-\x34\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
+\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x34\
+\x30\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\
\x74\x3a\x63\x68\x61\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\
-\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\
-\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\x22\x20\x73\x74\x45\
-\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\
-\x6d\x70\x2e\x69\x69\x64\x3a\x31\x64\x30\x64\x64\x33\x64\x65\x2d\
-\x65\x33\x32\x66\x2d\x66\x38\x34\x64\x2d\x61\x39\x61\x38\x2d\x62\
-\x37\x33\x63\x30\x35\x38\x61\x65\x30\x36\x62\x22\x20\x73\x74\x45\
-\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\
-\x2d\x32\x36\x54\x31\x33\x3a\x34\x33\x3a\x32\x30\x2b\x30\x37\x3a\
-\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\
-\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\
-\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\
-\x64\x6f\x77\x73\x29\x22\x20\x73\x74\x45\x76\x74\x3a\x63\x68\x61\
-\x6e\x67\x65\x64\x3d\x22\x2f\x22\x2f\x3e\x20\x3c\x2f\x72\x64\x66\
-\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\x4d\x4d\x3a\x48\x69\
-\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\
-\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\
-\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\
-\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\
-\x22\x72\x22\x3f\x3e\x46\x3f\x58\x82\x00\x00\x01\xb3\x49\x44\x41\
-\x54\x38\x8d\xa5\x93\x4f\x6b\x13\x41\x18\xc6\x7f\xef\xce\x06\x8b\
-\x49\xca\x86\x62\x82\xc7\x1e\xa4\x42\xe7\xde\x06\x84\x52\xa9\x82\
-\xe0\x61\x89\xe0\x17\xd0\x43\x3f\x81\x8a\x78\x94\x20\x9e\xd4\x8b\
-\x1e\xf4\x13\x48\x40\x51\x2f\xb6\x34\x28\x85\xb6\x9e\x37\xd2\x22\
-\xe8\x39\x5e\xba\x54\xd3\x6e\xa1\xc9\xeb\x61\xb6\xbb\x5b\xac\x52\
-\xe8\x03\xc3\x33\xc3\xcc\xf3\xbc\x7f\x78\x47\x54\x95\xd3\xc0\x07\
-\xb0\xd6\xf2\xa2\xd6\xbb\x00\x3c\x02\x16\x80\x71\x8a\xbe\xe2\x48\
-\x61\x47\x94\x65\x84\x7b\x8b\xdb\xd3\xdf\xa2\x28\x42\x54\x95\xd5\
-\x39\x99\x1a\xaa\xac\x77\x76\x1b\xc1\xc6\x7e\xc0\x40\xcd\x5f\x91\
-\xc2\x30\x64\xe9\x6d\x87\x99\x33\x31\xad\x72\x3f\xf6\x55\x67\x2f\
-\x7d\xd6\x2d\x0f\x00\x8f\x76\x67\xaf\x11\xac\x24\x13\xc7\x8a\x0f\
-\x31\x50\xc3\x4a\x32\xc1\xbb\xbd\x7a\x80\xa1\xed\xa4\x80\xf8\x2c\
-\x6c\xec\x07\x27\xae\x7b\x35\xa9\x21\x3e\x57\x33\x03\x0c\xe3\x83\
-\x91\x8b\x1c\xcd\x93\x71\x74\xdd\xe3\xf2\x79\xc9\x84\xd1\xbc\x5b\
-\x83\x91\x01\x43\x25\x37\x28\x15\xec\xc7\x52\xc1\x98\x87\x7d\x3f\
-\xe2\xd9\x0d\x97\xd9\xc3\xf8\x0d\xb6\x0b\xb6\x9b\xbe\xf3\xa1\x58\
-\x42\x8e\x6a\xda\x83\xaa\xf3\xa6\xb7\xed\xb8\x76\xb4\x37\x52\xfa\
-\xa7\x81\x97\x71\xd4\x32\xdc\xf9\x91\x9e\xeb\xc5\x47\xb9\xc6\x2b\
-\xa6\x03\x40\x25\x37\xb8\xbb\x29\x3c\x9e\x1c\x01\xf0\xa0\x7f\x2d\
-\xeb\x41\x51\xe3\x17\xd3\x01\xb0\x4f\x13\xc7\x4f\x1c\x7f\xf8\x5a\
-\xb8\xeb\xe6\xfb\x23\x3d\xc0\xb0\x53\xf6\x87\x9c\x14\x65\x7f\x88\
-\x94\xf8\x9d\xfb\x94\x58\x6e\x9e\x8b\x5b\x95\x99\x5b\xff\x15\x86\
-\x61\x08\x40\xf2\xe5\x25\x18\x3e\x02\x6e\x94\xd7\x17\xe5\xe2\x01\
-\xb2\xf6\xfa\x7b\x23\x58\xfb\x19\xb0\x7b\x70\xfc\x34\x9e\xf5\x87\
-\x34\xeb\x31\x37\x27\xfb\xb1\xf1\xb4\x39\xfb\x5c\x37\x45\x55\xb1\
-\xd6\xf2\x6a\xae\x37\x05\xb4\x15\xae\x08\x54\x15\x10\x81\xc3\x4f\
-\x95\xd2\x2f\x60\x09\xb8\x7f\xfb\xd3\xf4\x56\xf6\x99\x4e\x83\x3f\
-\xd9\xb1\x8d\xe5\xa7\x2e\x4c\x70\x00\x00\x00\x00\x49\x45\x4e\x44\
-\xae\x42\x60\x82\
-\x00\x00\x08\x22\
+\x3c\x2f\x72\x64\x66\x3a\x53\x65\x71\x3e\x20\x3c\x2f\x78\x6d\x70\
+\x4d\x4d\x3a\x48\x69\x73\x74\x6f\x72\x79\x3e\x20\x3c\x2f\x72\x64\
+\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\
+\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\
+\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\
+\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xab\x72\xb5\x19\x00\x00\
+\x00\x45\x49\x44\x41\x54\x18\x95\x63\xfc\xff\xff\x3f\x03\x21\xc0\
+\x44\x50\x05\x54\xd1\x6a\x06\x06\x06\x0f\x1c\xf2\x1e\x0c\x0c\x0c\
+\xab\x19\xfe\xff\xff\xef\xf1\xff\xff\xff\x8f\x50\x9a\x01\x09\xc3\
+\xc5\x31\x04\xb0\xf1\xb1\xe9\xac\x41\x37\x99\x01\x8b\x15\x8f\xd1\
+\xad\x66\xa4\x5a\x10\x00\x00\x38\x03\x7d\xe2\x78\x0d\x2b\xc1\x00\
+\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x07\xc2\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
+\x00\x00\x09\x00\x00\x00\x09\x08\x06\x00\x00\x00\xe0\x91\x06\x10\
\x00\x00\x01\x37\x69\x43\x43\x50\x41\x64\x6f\x62\x65\x20\x52\x47\
\x42\x20\x28\x31\x39\x39\x38\x29\x00\x00\x28\x91\x95\x8f\xbf\x4a\
\xc3\x50\x14\x87\xbf\x1b\x45\xc5\xa1\x56\x08\xe2\xe0\x70\x27\x51\
@@ -1539,27 +2224,27 @@
\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\
\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x29\x22\x20\
\x78\x6d\x70\x3a\x43\x72\x65\x61\x74\x65\x44\x61\x74\x65\x3d\x22\
-\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x38\x54\x31\x35\x3a\x31\x32\
-\x3a\x31\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
+\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\
+\x3a\x30\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\
\x65\x74\x61\x64\x61\x74\x61\x44\x61\x74\x65\x3d\x22\x32\x30\x32\
-\x31\x2d\x30\x38\x2d\x32\x38\x54\x31\x35\x3a\x31\x32\x3a\x31\x37\
+\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x30\x37\
\x2b\x30\x37\x3a\x30\x30\x22\x20\x78\x6d\x70\x3a\x4d\x6f\x64\x69\
-\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\
-\x32\x38\x54\x31\x35\x3a\x31\x32\x3a\x31\x37\x2b\x30\x37\x3a\x30\
+\x66\x79\x44\x61\x74\x65\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\
+\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x30\x37\x2b\x30\x37\x3a\x30\
\x30\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\
-\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x66\x38\
-\x33\x61\x37\x32\x64\x2d\x63\x66\x65\x31\x2d\x65\x31\x34\x39\x2d\
-\x61\x37\x66\x63\x2d\x34\x66\x33\x38\x38\x63\x35\x37\x33\x35\x65\
-\x64\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
+\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x65\x34\x61\
+\x64\x61\x35\x34\x38\x2d\x63\x35\x34\x37\x2d\x38\x33\x34\x39\x2d\
+\x61\x62\x33\x32\x2d\x34\x39\x32\x39\x62\x33\x64\x33\x31\x64\x64\
+\x63\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\x6f\x63\x75\x6d\x65\x6e\
\x74\x49\x44\x3d\x22\x61\x64\x6f\x62\x65\x3a\x64\x6f\x63\x69\x64\
-\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x38\x33\x31\x36\x30\
-\x36\x30\x61\x2d\x32\x32\x37\x35\x2d\x66\x30\x34\x35\x2d\x62\x63\
-\x35\x63\x2d\x34\x37\x34\x36\x35\x36\x61\x38\x38\x61\x66\x63\x22\
+\x3a\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x65\x36\x30\x64\x62\
+\x61\x63\x38\x2d\x61\x62\x63\x63\x2d\x65\x30\x34\x33\x2d\x61\x61\
+\x33\x65\x2d\x34\x64\x65\x36\x62\x31\x33\x34\x34\x38\x39\x62\x22\
\x20\x78\x6d\x70\x4d\x4d\x3a\x4f\x72\x69\x67\x69\x6e\x61\x6c\x44\
\x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\
-\x69\x64\x3a\x65\x32\x64\x31\x65\x31\x34\x65\x2d\x33\x66\x32\x35\
-\x2d\x37\x32\x34\x37\x2d\x38\x39\x66\x33\x2d\x32\x64\x32\x63\x61\
-\x30\x31\x62\x30\x37\x65\x39\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
+\x69\x64\x3a\x33\x61\x32\x63\x64\x64\x63\x65\x2d\x61\x33\x61\x36\
+\x2d\x62\x64\x34\x65\x2d\x61\x63\x35\x37\x2d\x31\x34\x30\x65\x34\
+\x62\x37\x31\x32\x33\x64\x30\x22\x20\x64\x63\x3a\x66\x6f\x72\x6d\
\x61\x74\x3d\x22\x69\x6d\x61\x67\x65\x2f\x70\x6e\x67\x22\x20\x70\
\x68\x6f\x74\x6f\x73\x68\x6f\x70\x3a\x43\x6f\x6c\x6f\x72\x4d\x6f\
\x64\x65\x3d\x22\x33\x22\x20\x70\x68\x6f\x74\x6f\x73\x68\x6f\x70\
@@ -1570,22 +2255,22 @@
\x69\x20\x73\x74\x45\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\
\x63\x72\x65\x61\x74\x65\x64\x22\x20\x73\x74\x45\x76\x74\x3a\x69\
\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\
-\x69\x64\x3a\x65\x32\x64\x31\x65\x31\x34\x65\x2d\x33\x66\x32\x35\
-\x2d\x37\x32\x34\x37\x2d\x38\x39\x66\x33\x2d\x32\x64\x32\x63\x61\
-\x30\x31\x62\x30\x37\x65\x39\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
-\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x38\x2d\x32\x38\x54\
-\x31\x35\x3a\x31\x32\x3a\x31\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\
+\x69\x64\x3a\x33\x61\x32\x63\x64\x64\x63\x65\x2d\x61\x33\x61\x36\
+\x2d\x62\x64\x34\x65\x2d\x61\x63\x35\x37\x2d\x31\x34\x30\x65\x34\
+\x62\x37\x31\x32\x33\x64\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x77\
+\x68\x65\x6e\x3d\x22\x32\x30\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\
+\x31\x38\x3a\x34\x32\x3a\x30\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\
\x73\x74\x45\x76\x74\x3a\x73\x6f\x66\x74\x77\x61\x72\x65\x41\x67\
\x65\x6e\x74\x3d\x22\x41\x64\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\
\x73\x68\x6f\x70\x20\x43\x43\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\
\x29\x22\x2f\x3e\x20\x3c\x72\x64\x66\x3a\x6c\x69\x20\x73\x74\x45\
\x76\x74\x3a\x61\x63\x74\x69\x6f\x6e\x3d\x22\x73\x61\x76\x65\x64\
\x22\x20\x73\x74\x45\x76\x74\x3a\x69\x6e\x73\x74\x61\x6e\x63\x65\
-\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x38\x66\x38\x33\
-\x61\x37\x32\x64\x2d\x63\x66\x65\x31\x2d\x65\x31\x34\x39\x2d\x61\
-\x37\x66\x63\x2d\x34\x66\x33\x38\x38\x63\x35\x37\x33\x35\x65\x64\
+\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\x69\x64\x3a\x65\x34\x61\x64\
+\x61\x35\x34\x38\x2d\x63\x35\x34\x37\x2d\x38\x33\x34\x39\x2d\x61\
+\x62\x33\x32\x2d\x34\x39\x32\x39\x62\x33\x64\x33\x31\x64\x64\x63\
\x22\x20\x73\x74\x45\x76\x74\x3a\x77\x68\x65\x6e\x3d\x22\x32\x30\
-\x32\x31\x2d\x30\x38\x2d\x32\x38\x54\x31\x35\x3a\x31\x32\x3a\x31\
+\x32\x31\x2d\x30\x39\x2d\x30\x32\x54\x31\x38\x3a\x34\x32\x3a\x30\
\x37\x2b\x30\x37\x3a\x30\x30\x22\x20\x73\x74\x45\x76\x74\x3a\x73\
\x6f\x66\x74\x77\x61\x72\x65\x41\x67\x65\x6e\x74\x3d\x22\x41\x64\
\x6f\x62\x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x43\
@@ -1596,35 +2281,36 @@
\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x20\x3c\
\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x20\x3c\x2f\x78\x3a\x78\x6d\
\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\
-\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\x12\x0f\x9d\x9c\x00\x00\
-\x00\x9b\x49\x44\x41\x54\x38\x8d\xa5\x93\x51\x0a\x03\x21\x0c\x44\
-\xc7\xde\x20\x7b\x11\x7b\xfc\x7a\x88\xc2\xf6\x44\xaf\x1f\x8d\x8b\
-\x58\xa3\xc2\x06\x82\x30\xc9\xbc\x8f\x24\x26\x40\x77\xe2\xe1\x6f\
-\x96\x54\x24\xd9\x86\xc7\xbc\x37\x4b\x92\x00\x01\x2f\x7e\xf1\x06\
-\xcc\xb5\x51\x9a\xf7\x00\x14\xe0\x02\x1c\x4d\x21\x82\x58\xd7\x73\
-\xb4\x80\x15\x64\x68\xee\x01\x11\x24\x34\x8f\x00\x3d\xe4\xf4\x1c\
-\x9a\x23\x40\x85\x54\x63\x05\xfd\x99\x81\x6b\x8d\x7d\xf4\xc7\x91\
-\x06\x9a\xda\x35\x46\xd3\x3e\x81\xcf\x6c\x3b\x3b\xab\xea\x35\x8b\
-\x00\xb3\x69\x87\x90\x1d\xf3\x14\x52\x8b\x65\x61\x5e\x9e\x72\x76\
-\x61\xf6\x0f\x5a\x48\x01\x9e\x80\x12\x37\xbf\xf3\x17\xc5\x12\x83\
-\x61\x69\x9d\xa9\xb0\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\
+\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\x3e\xac\xdc\x29\x1a\x00\x00\
+\x00\x3b\x49\x44\x41\x54\x18\x95\x63\xfc\xff\xff\x3f\x03\x21\xc0\
+\x44\x50\x05\x16\xe0\xc1\xc0\xc0\xf0\x18\x4a\xe3\x54\xf0\x91\x81\
+\x81\xa1\x06\x4a\x63\x28\xf4\x40\x93\x40\xe7\x63\x0a\x60\x13\x5f\
+\x8d\xc7\x0d\x1e\x0c\x0c\x0c\xab\x19\xa9\x16\x04\x00\x82\xae\x12\
+\x4c\xdc\xc0\x99\x68\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\
\x82\
"
qt_resource_name = b"\
+\x00\x06\
+\x06\x89\x96\xe3\
+\x00\x61\
+\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x73\
+\x00\x05\
+\x00\x6f\xa6\x53\
+\x00\x69\
+\x00\x63\x00\x6f\x00\x6e\x00\x73\
\x00\x0c\
\x01\x67\x14\xb3\
\x00\x62\
\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x73\
-\x00\x05\
-\x00\x6f\xa6\x53\
+\x00\x0f\
+\x06\x97\xc6\xe7\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0e\
+\x0f\x81\x05\x07\
\x00\x69\
-\x00\x63\x00\x6f\x00\x6e\x00\x73\
-\x00\x11\
-\x0b\x14\xee\x87\
-\x00\x6f\
-\x00\x70\x00\x65\x00\x72\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
-\
+\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x31\x00\x36\x00\x78\x00\x31\x00\x36\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
\x0f\xb3\x03\x47\
\x00\x69\
@@ -1633,64 +2319,103 @@
\x06\x5f\x1e\x67\
\x00\x69\
\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x36\x00\x34\x00\x5f\x00\x36\x00\x34\x00\x2e\x00\x70\x00\x6e\x00\x67\
-\x00\x0e\
-\x06\xf8\x41\x07\
+\x00\x11\
+\x0b\x14\xee\x87\
\x00\x6f\
-\x00\x77\x00\x6e\x00\x65\x00\x72\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x70\x00\x65\x00\x72\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\
+\x00\x0f\
+\x01\x78\x12\x47\
+\x00\x6d\
+\x00\x65\x00\x6d\x00\x62\x00\x65\x00\x72\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
\x00\xe1\xc5\x67\
\x00\x61\
\x00\x64\x00\x6d\x00\x69\x00\x6e\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
+\x06\xf8\x41\x07\
+\x00\x6f\
+\x00\x77\x00\x6e\x00\x65\x00\x72\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0e\
\x0f\xad\x01\x87\
\x00\x69\
\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x33\x00\x32\x00\x78\x00\x33\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\
-\x00\x0e\
-\x0f\x81\x05\x07\
-\x00\x69\
-\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x31\x00\x36\x00\x78\x00\x31\x00\x36\x00\x2e\x00\x70\x00\x6e\x00\x67\
-\x00\x0f\
-\x06\x97\xc6\xe7\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x12\
+\x00\x33\x70\xe7\
+\x00\x75\
+\x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x6c\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x70\x00\x6e\
+\x00\x67\
+\x00\x13\
+\x06\x1a\xe9\x67\
+\x00\x64\
+\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x64\x00\x61\x00\x72\x00\x6b\x00\x2e\x00\x70\
+\x00\x6e\x00\x67\
+\x00\x11\
+\x0a\x52\x6a\x27\
+\x00\x75\
+\x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x64\x00\x61\x00\x72\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\
+\x00\x14\
+\x04\xbb\x45\x67\
+\x00\x64\
+\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x6c\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\
+\x00\x70\x00\x6e\x00\x67\
"
qt_resource_struct_v1 = b"\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
-\x00\x00\x00\x1e\x00\x02\x00\x00\x00\x07\x00\x00\x00\x04\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
-\x00\x00\x01\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5a\xb5\
-\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x41\xc1\
-\x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x19\x3c\
-\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x4c\
-\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x50\xac\
-\x00\x00\x00\xde\x00\x00\x00\x00\x00\x01\x00\x00\x44\xa2\
-\x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x02\xc2\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x01\
+\x00\x00\x00\x12\x00\x02\x00\x00\x00\x08\x00\x00\x00\x09\
+\x00\x00\x00\x22\x00\x02\x00\x00\x00\x01\x00\x00\x00\x08\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x04\
+\x00\x00\x01\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x6d\x65\
+\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x84\xcd\
+\x00\x00\x01\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x75\x2b\
+\x00\x00\x01\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x7c\xfd\
+\x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x54\x05\
+\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x49\x7b\
+\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x28\xa9\
+\x00\x00\x01\x38\x00\x00\x00\x00\x00\x01\x00\x00\x56\xe6\
+\x00\x00\x00\xca\x00\x00\x00\x00\x00\x01\x00\x00\x46\xb9\
+\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x08\x26\
+\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x61\x5b\
+\x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x12\x2f\
"
qt_resource_struct_v2 = b"\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x12\x00\x02\x00\x00\x00\x08\x00\x00\x00\x09\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x1e\x00\x02\x00\x00\x00\x07\x00\x00\x00\x04\
+\x00\x00\x00\x22\x00\x02\x00\x00\x00\x01\x00\x00\x00\x08\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x04\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x01\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5a\xb5\
+\x00\x00\x01\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x6d\x65\
+\x00\x00\x01\x7b\xa6\x51\x3e\x30\
+\x00\x00\x01\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x84\xcd\
+\x00\x00\x01\x7b\xa6\x50\xf1\xe2\
+\x00\x00\x01\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x75\x2b\
+\x00\x00\x01\x7b\xa6\x52\x0e\xb9\
+\x00\x00\x01\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x7c\xfd\
+\x00\x00\x01\x7b\xa6\x51\x77\x12\
+\x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x7b\x8b\xd1\x0b\x9b\
-\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x41\xc1\
+\x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x54\x05\
\x00\x00\x01\x7b\x81\xf2\x36\x20\
-\x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x19\x3c\
+\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x49\x7b\
+\x00\x00\x01\x7b\xa6\x8b\x4f\x41\
+\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x28\xa9\
\x00\x00\x01\x7b\x81\x5d\x71\xcc\
-\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x4c\
+\x00\x00\x01\x38\x00\x00\x00\x00\x00\x01\x00\x00\x56\xe6\
\x00\x00\x01\x7b\x82\xff\x17\x69\
-\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x00\xca\x00\x00\x00\x00\x00\x01\x00\x00\x46\xb9\
\x00\x00\x01\x7b\x81\xbb\x50\x12\
-\x00\x00\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x50\xac\
+\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x08\x26\
\x00\x00\x01\x7b\x81\x32\xe3\x89\
-\x00\x00\x00\xde\x00\x00\x00\x00\x00\x01\x00\x00\x44\xa2\
+\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x61\x5b\
\x00\x00\x01\x7b\x81\x2f\xa0\x61\
-\x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x02\xc2\
+\x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x12\x2f\
\x00\x00\x01\x7b\x81\x66\x31\x53\
"
diff --git a/translator.py b/translator.py
index 94d848a..63080d0 100644
--- a/translator.py
+++ b/translator.py
@@ -17,12 +17,16 @@ def translate_001(mainclass, form, language, en_US, ru_RU):
pass
try:
mainclass.ui.menu.setTitle(ru_RU.get()['filemenu'])
+ mainclass.ui.menu_4.setTitle(ru_RU.get()['chanmenu'])
mainclass.ui.menu_2.setTitle(ru_RU.get()['helpmenu'])
mainclass.ui.menu_3.setTitle(ru_RU.get()['viewmenu'])
mainclass.ui.connect_item.setText(ru_RU.get()['conn_mi'])
mainclass.ui.settings_item.setText(ru_RU.get()['setsitem'])
mainclass.ui.quit_item.setText(ru_RU.get()['quit_mi'])
mainclass.ui.about_item.setText(ru_RU.get()['about_mi'])
+ mainclass.ui.join_item.setText(ru_RU.get()['joinchan'])
+ mainclass.ui.leave_item.setText(ru_RU.get()['lv_chan'])
+ mainclass.ui.msg_history.setText(ru_RU.get()['msg_hist'])
mainclass.child_widget.send_msg_btn.setText(ru_RU.get()['send_msg'])
if mainclass.child_widget.message_text.isEnabled() == False:
mainclass.child_widget.message_text.setText(ru_RU.get()['cantsmsg'])
@@ -32,12 +36,16 @@ def translate_001(mainclass, form, language, en_US, ru_RU):
elif language == 'English':
try:
mainclass.ui.menu.setTitle(en_US.get()['filemenu'])
+ mainclass.ui.menu_4.setTitle(en_US.get()['chanmenu'])
mainclass.ui.menu_2.setTitle(en_US.get()['helpmenu'])
mainclass.ui.menu_3.setTitle(en_US.get()['viewmenu'])
mainclass.ui.connect_item.setText(en_US.get()['conn_mi'])
mainclass.ui.settings_item.setText(en_US.get()['setsitem'])
mainclass.ui.quit_item.setText(en_US.get()['quit_mi'])
mainclass.ui.about_item.setText(en_US.get()['about_mi'])
+ mainclass.ui.join_item.setText(en_US.get()['joinchan'])
+ mainclass.ui.leave_item.setText(en_US.get()['lv_chan'])
+ mainclass.ui.msg_history.setText(en_US.get()['msg_hist'])
mainclass.child_widget.send_msg_btn.setText(en_US.get()['send_msg'])
if mainclass.child_widget.message_text.isEnabled() == False:
mainclass.child_widget.message_text.setText(en_US.get()['cantsmsg'])
diff --git a/up_arrow_dark.png b/up_arrow_dark.png
new file mode 100644
index 0000000..a3cecd5
Binary files /dev/null and b/up_arrow_dark.png differ
diff --git a/up_arrow_light.png b/up_arrow_light.png
new file mode 100644
index 0000000..87b485e
Binary files /dev/null and b/up_arrow_light.png differ