[QGIS Commit] r9363 - trunk/qgis/python/plugins/plugin_installer
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Sep 20 12:56:02 EDT 2008
Author: timlinux
Date: 2008-09-20 12:56:02 -0400 (Sat, 20 Sep 2008)
New Revision: 9363
Removed:
trunk/qgis/python/plugins/plugin_installer/INSTALL
trunk/qgis/python/plugins/plugin_installer/README
trunk/qgis/python/plugins/plugin_installer/dialog.py
trunk/qgis/python/plugins/plugin_installer/gui.py
trunk/qgis/python/plugins/plugin_installer/gui.ui
trunk/qgis/python/plugins/plugin_installer/icon.xpm
trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py
trunk/qgis/python/plugins/plugin_installer/repository.ui
trunk/qgis/python/plugins/plugin_installer/repository_dialog.py
trunk/qgis/python/plugins/plugin_installer/repository_ui.py
trunk/qgis/python/plugins/plugin_installer/resources.py
Modified:
trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt
trunk/qgis/python/plugins/plugin_installer/__init__.py
trunk/qgis/python/plugins/plugin_installer/installer_data.py
Log:
Plugin installer fixes from Borys
Modified: trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,13 +1,10 @@
#TODO: Need to configure cmake to run pyrcc4 and pyuic4 as required when the resource
# file or the ui change
SET(INSTALLER_FILES
-dialog.py
fetchingbase.py
fetchingbase.ui
guibase.py
guibase.ui
-gui.py
-icon.xpm
__init__.py
installer_data.py
installer_gui.py
@@ -19,15 +16,11 @@
plugin_installer.png
PluginInstaller.png
qgis-icon.png
-qgis_plugins.py
repoConnected.png
repoDisabled.png
repositorybase.py
repositorybase.ui
-repository_dialog.py
-repository_ui.py
repoUnavailable.png
-resources.py
resources_rc.py
unzip.py
)
Deleted: trunk/qgis/python/plugins/plugin_installer/INSTALL
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/INSTALL 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/INSTALL 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,7 +0,0 @@
-You must have qgis 0.9+ with python bindings in order to run this plugin. If you want to modify the UI, you'll need th qt4 devtools.
-
-1) Edit the INST_DIR in the Makefile to match your environment
-2) sudo make install
-3) open qgis and turn on the Installer plugin
-
-
Deleted: trunk/qgis/python/plugins/plugin_installer/README
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/README 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/README 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,6 +0,0 @@
-The installer plugin retrieves an xml description of available plugins and shows the a full listing. You can choose to install any given plugin which will download the zip file to your temp directory and extract it into your *local user's* python plugin dir (ie ~/.qgis/python/plugins NOT /usr/share/qgis/python/plugins)
-
-This plugin itself should, however, be installed in the system plugin directory to ensure all users have access to it.
-
-Matthew T. Perry
-perrygeo at gmail.com
Modified: trunk/qgis/python/plugins/plugin_installer/__init__.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/__init__.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/__init__.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -20,7 +20,7 @@
return "perrygeo, borysiasty"
def version():
- return "Version 0.06.1"
+ return "Version 0.06.2"
def classFactory(iface):
from installer_plugin import InstallerPlugin
Deleted: trunk/qgis/python/plugins/plugin_installer/dialog.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/dialog.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/dialog.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,223 +0,0 @@
-"""
-Copyright (C) 2008 Matthew Perry
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-"""
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
-
-from qgis.core import QgsApplication, QgsContextHelp
-
-from gui import Ui_Dialog
-import resources
-
-from repository_dialog import RepositoryDialog
-
-
-class InstallerPluginGui(QDialog, Ui_Dialog):
- def __init__(self, parent, fl):
- QDialog.__init__(self, parent, fl)
-
- self.default_repository_name = "Official QGIS repository"
- self.default_repository = "http://spatialserver.net/cgi-bin/pyqgis_plugin.rb"
-
- self.setupUi(self)
-
- self.connect(self.buttonBrowse, SIGNAL("clicked()"), self.getAvailablePlugins)
- self.connect(self.pbnOK, SIGNAL("clicked()"), self.installPlugin)
-
- # grab the click on the treelist
- self.connect(self.treePlugins, SIGNAL("itemClicked(QTreeWidgetItem *,int)"), self.treeClicked)
-
- # repositories handling
- self.connect(self.buttonAddRep, SIGNAL("clicked()"), self.addRepository)
- self.connect(self.buttonEditRep, SIGNAL("clicked()"), self.editRepository)
- self.connect(self.buttonDeleteRep, SIGNAL("clicked()"), self.deleteRepository)
-
- self.populateRepositories()
-
-
- def on_pbnCancel_clicked(self):
- self.close()
-
-
- def getAvailablePlugins(self):
- print "getting list of plugins"
- repository = self.getRepository()
- if not repository:
- return
- repository_url = str(repository[1])
-
- from qgis_plugins import retrieve_list
- QApplication.setOverrideCursor(Qt.WaitCursor)
-
- try:
- pluginlist = retrieve_list(repository_url)
- except IOError:
- QApplication.restoreOverrideCursor()
- QMessageBox.warning(self, "Error", "Couldn't connect to the repository.")
- return
- except Exception:
- QApplication.restoreOverrideCursor()
- QMessageBox.warning(self, "Error", "Couldn't parse output from repository.")
- return
-
- #output = "QGIS python plugins avialable from \n%s\n" % self.repository
- #for p in pluginlist:
- # output += "\n%s ( version %s )" % (p["name"], p["version"])
- # output += "\n\t%s by %s" % (p["desc"],p["author"])
- #self.gui.txtAvailable.setText(output)
- self.treePlugins.clear()
- for p in pluginlist:
- a = QTreeWidgetItem(self.treePlugins)
- a.setText(0,p["name"])
- a.setText(1,p["version"])
- a.setText(2,p["desc"])
- a.setText(3,p["author"])
- a.setToolTip(2, p["desc"])
-
- QApplication.restoreOverrideCursor()
-
- # resize the columns
- # plugin name
- self.treePlugins.resizeColumnToContents(0);
- # version
- self.treePlugins.resizeColumnToContents(1);
- # author/contributor
- self.treePlugins.resizeColumnToContents(3);
- # description
- self.treePlugins.setColumnWidth(2, 560);
-
-
- def installPlugin(self):
- """ installs currently selected plugin """
- plugin = self.linePlugin.text()
- repository = self.getRepository()
- if not repository:
- return
- repository_url = str(repository[1])
- plugindir = unicode(QgsApplication.qgisSettingsDirPath(),'utf-8') + "/python/plugins"
-
- QApplication.setOverrideCursor(Qt.WaitCursor)
- from qgis_plugins import retrieve_list, install_plugin
- print "install_plugin",plugin,plugindir,repository_url
- result = install_plugin(plugin, plugindir, repository_url)
- QApplication.restoreOverrideCursor()
-
- if result[0]:
- QMessageBox.information(self, "Plugin installed successfully", result[1])
- else:
- QMessageBox.warning(self, "Plugin installation failed", result[1])
-
-
- def treeClicked(self, item, col):
- self.linePlugin.setText(item.text(0))
-
-
- def getRepository(self):
- """ returns Name and URL of the current repository as a tuple or None if no repository is selected """
- if self.comboRepositories.currentIndex() == -1:
- return None
-
- settings = QSettings()
- reposGroup = "/Qgis/plugin-repos"
- reposName = self.comboRepositories.currentText()
- reposURL = settings.value(reposGroup+"/"+reposName+"/url", QVariant()).toString()
- return (reposName, reposURL)
-
-
- def populateRepositories(self):
- """ populate repository combo box from the settings """
- self.comboRepositories.clear()
-
- settings = QSettings()
- reposGroup = "/Qgis/plugin-repos"
- settings.beginGroup(reposGroup)
-
- # add the default repository when there isn't any...
- if len(settings.childGroups()) == 0:
- settings.setValue(self.default_repository_name+"/url", QVariant(self.default_repository))
-
- for key in settings.childGroups():
- self.comboRepositories.addItem(key)
-
- settings.endGroup()
-
-
- def addRepository(self):
- """ add repository button has been clicked """
- print "add"
- dlg = RepositoryDialog(self)
- if not dlg.exec_():
- return
-
- settings = QSettings()
- reposGroup = "/Qgis/plugin-repos"
- settings.beginGroup(reposGroup)
-
- reposName = dlg.editName.text()
- reposURL = dlg.editURL.text()
- print "name: "+reposName
- print "url: "+reposURL
-
- # add to settings
- settings.setValue(reposName+"/url", QVariant(reposURL))
-
- # add to combobox
- self.comboRepositories.addItem(reposName)
-
-
- def editRepository(self):
- """ edit repository button has been clicked """
- print "edit"
-
- current = self.comboRepositories.currentIndex()
- if current == -1:
- return
-
- (reposName, reposURL) = self.getRepository()
-
- dlg = RepositoryDialog(self)
- dlg.editName.setText(reposName)
- dlg.editURL.setText(reposURL)
- if not dlg.exec_():
- return
-
- settings = QSettings()
- reposGroup = "/Qgis/plugin-repos"
- settings.beginGroup(reposGroup)
-
- # first delete old setting
- settings.remove(reposName)
-
- # and create new one
- settings.setValue(dlg.editName.text()+"/url", QVariant(dlg.editURL.text()))
-
- # update the name if it has been changed
- self.comboRepositories.setItemText(current, dlg.editName.text())
-
-
- def deleteRepository(self):
- """ delete repository button has been clicked """
- print "delete"
-
- current = self.comboRepositories.currentIndex()
- if current == -1:
- return
-
- settings = QSettings()
- reposGroup = "/Qgis/plugin-repos"
- settings.beginGroup(reposGroup)
-
- # delete from settings
- reposName = self.comboRepositories.currentText()
- settings.remove(reposName)
-
- # delete from combo box
- self.comboRepositories.removeItem(current)
Deleted: trunk/qgis/python/plugins/plugin_installer/gui.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/gui.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/gui.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,139 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'gui.ui'
-#
-# Created: Thu Jan 10 13:11:48 2008
-# by: PyQt4 UI code generator 4.3
-#
-# WARNING! All changes made in this file will be lost!
-
-from PyQt4 import QtCore, QtGui
-
-class Ui_Dialog(object):
- def setupUi(self, Dialog):
- Dialog.setObjectName("Dialog")
- Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,761,471).size()).expandedTo(Dialog.minimumSizeHint()))
-
- self.vboxlayout = QtGui.QVBoxLayout(Dialog)
- self.vboxlayout.setObjectName("vboxlayout")
-
- self.label = QtGui.QLabel(Dialog)
- self.label.setObjectName("label")
- self.vboxlayout.addWidget(self.label)
-
- self.groupBox = QtGui.QGroupBox(Dialog)
- self.groupBox.setObjectName("groupBox")
-
- self.vboxlayout1 = QtGui.QVBoxLayout(self.groupBox)
- self.vboxlayout1.setObjectName("vboxlayout1")
-
- self.hboxlayout = QtGui.QHBoxLayout()
- self.hboxlayout.setObjectName("hboxlayout")
-
- self.label_4 = QtGui.QLabel(self.groupBox)
- self.label_4.setObjectName("label_4")
- self.hboxlayout.addWidget(self.label_4)
-
- self.comboRepositories = QtGui.QComboBox(self.groupBox)
-
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.comboRepositories.sizePolicy().hasHeightForWidth())
- self.comboRepositories.setSizePolicy(sizePolicy)
- self.comboRepositories.setObjectName("comboRepositories")
- self.hboxlayout.addWidget(self.comboRepositories)
- self.vboxlayout1.addLayout(self.hboxlayout)
-
- self.hboxlayout1 = QtGui.QHBoxLayout()
- self.hboxlayout1.setObjectName("hboxlayout1")
-
- self.buttonBrowse = QtGui.QPushButton(self.groupBox)
-
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.buttonBrowse.sizePolicy().hasHeightForWidth())
- self.buttonBrowse.setSizePolicy(sizePolicy)
- self.buttonBrowse.setObjectName("buttonBrowse")
- self.hboxlayout1.addWidget(self.buttonBrowse)
-
- spacerItem = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.hboxlayout1.addItem(spacerItem)
-
- self.buttonAddRep = QtGui.QPushButton(self.groupBox)
- self.buttonAddRep.setObjectName("buttonAddRep")
- self.hboxlayout1.addWidget(self.buttonAddRep)
-
- self.buttonEditRep = QtGui.QPushButton(self.groupBox)
- self.buttonEditRep.setObjectName("buttonEditRep")
- self.hboxlayout1.addWidget(self.buttonEditRep)
-
- self.buttonDeleteRep = QtGui.QPushButton(self.groupBox)
- self.buttonDeleteRep.setObjectName("buttonDeleteRep")
- self.hboxlayout1.addWidget(self.buttonDeleteRep)
- self.vboxlayout1.addLayout(self.hboxlayout1)
- self.vboxlayout.addWidget(self.groupBox)
-
- self.treePlugins = QtGui.QTreeWidget(Dialog)
- self.treePlugins.setAlternatingRowColors(True)
- self.treePlugins.setRootIsDecorated(False)
- self.treePlugins.setItemsExpandable(False)
- self.treePlugins.setObjectName("treePlugins")
- self.vboxlayout.addWidget(self.treePlugins)
-
- self.hboxlayout2 = QtGui.QHBoxLayout()
- self.hboxlayout2.setObjectName("hboxlayout2")
-
- self.label_2 = QtGui.QLabel(Dialog)
- self.label_2.setObjectName("label_2")
- self.hboxlayout2.addWidget(self.label_2)
-
- self.linePlugin = QtGui.QLineEdit(Dialog)
- self.linePlugin.setObjectName("linePlugin")
- self.hboxlayout2.addWidget(self.linePlugin)
-
- self.pbnOK = QtGui.QPushButton(Dialog)
- self.pbnOK.setObjectName("pbnOK")
- self.hboxlayout2.addWidget(self.pbnOK)
- self.vboxlayout.addLayout(self.hboxlayout2)
-
- self.hboxlayout3 = QtGui.QHBoxLayout()
- self.hboxlayout3.setObjectName("hboxlayout3")
-
- self.label_3 = QtGui.QLabel(Dialog)
- self.label_3.setObjectName("label_3")
- self.hboxlayout3.addWidget(self.label_3)
-
- self.pbnCancel = QtGui.QPushButton(Dialog)
-
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.pbnCancel.sizePolicy().hasHeightForWidth())
- self.pbnCancel.setSizePolicy(sizePolicy)
- self.pbnCancel.setObjectName("pbnCancel")
- self.hboxlayout3.addWidget(self.pbnCancel)
- self.vboxlayout.addLayout(self.hboxlayout3)
-
- self.retranslateUi(Dialog)
- QtCore.QMetaObject.connectSlotsByName(Dialog)
-
- def retranslateUi(self, Dialog):
- Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "QGIS Plugin Installer", None, QtGui.QApplication.UnicodeUTF8))
- self.label.setText(QtGui.QApplication.translate("Dialog", "Select repository, retrieve the list of available plugins, select one and install it", None, QtGui.QApplication.UnicodeUTF8))
- self.groupBox.setTitle(QtGui.QApplication.translate("Dialog", "Repository", None, QtGui.QApplication.UnicodeUTF8))
- self.label_4.setText(QtGui.QApplication.translate("Dialog", "Active repository:", None, QtGui.QApplication.UnicodeUTF8))
- self.buttonBrowse.setText(QtGui.QApplication.translate("Dialog", "Get List", None, QtGui.QApplication.UnicodeUTF8))
- self.buttonAddRep.setText(QtGui.QApplication.translate("Dialog", "Add", None, QtGui.QApplication.UnicodeUTF8))
- self.buttonEditRep.setText(QtGui.QApplication.translate("Dialog", "Edit", None, QtGui.QApplication.UnicodeUTF8))
- self.buttonDeleteRep.setText(QtGui.QApplication.translate("Dialog", "Delete", None, QtGui.QApplication.UnicodeUTF8))
- self.treePlugins.headerItem().setText(0,QtGui.QApplication.translate("Dialog", "Name", None, QtGui.QApplication.UnicodeUTF8))
- self.treePlugins.headerItem().setText(1,QtGui.QApplication.translate("Dialog", "Version", None, QtGui.QApplication.UnicodeUTF8))
- self.treePlugins.headerItem().setText(2,QtGui.QApplication.translate("Dialog", "Description", None, QtGui.QApplication.UnicodeUTF8))
- self.treePlugins.headerItem().setText(3,QtGui.QApplication.translate("Dialog", "Author", None, QtGui.QApplication.UnicodeUTF8))
- self.label_2.setText(QtGui.QApplication.translate("Dialog", "Name of plugin to install", None, QtGui.QApplication.UnicodeUTF8))
- self.pbnOK.setText(QtGui.QApplication.translate("Dialog", "Install Plugin", None, QtGui.QApplication.UnicodeUTF8))
- self.label_3.setText(QtGui.QApplication.translate("Dialog", "The plugin will be installed to ~/.qgis/python/plugins", None, QtGui.QApplication.UnicodeUTF8))
- self.pbnCancel.setText(QtGui.QApplication.translate("Dialog", "Done", None, QtGui.QApplication.UnicodeUTF8))
-
Deleted: trunk/qgis/python/plugins/plugin_installer/gui.ui
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/gui.ui 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/gui.ui 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,186 +0,0 @@
-<ui version="4.0" >
- <class>Dialog</class>
- <widget class="QDialog" name="Dialog" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>761</width>
- <height>471</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>QGIS Plugin Installer</string>
- </property>
- <layout class="QVBoxLayout" >
- <item>
- <widget class="QLabel" name="label" >
- <property name="text" >
- <string>Select repository, retrieve the list of available plugins, select one and install it</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox" >
- <property name="title" >
- <string>Repository</string>
- </property>
- <layout class="QVBoxLayout" >
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QLabel" name="label_4" >
- <property name="text" >
- <string>Active repository:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="comboRepositories" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QPushButton" name="buttonBrowse" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Get List</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="buttonAddRep" >
- <property name="text" >
- <string>Add</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="buttonEditRep" >
- <property name="text" >
- <string>Edit</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="buttonDeleteRep" >
- <property name="text" >
- <string>Delete</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QTreeWidget" name="treePlugins" >
- <property name="alternatingRowColors" >
- <bool>true</bool>
- </property>
- <property name="rootIsDecorated" >
- <bool>false</bool>
- </property>
- <property name="itemsExpandable" >
- <bool>false</bool>
- </property>
- <column>
- <property name="text" >
- <string>Name</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Version</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Description</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Author</string>
- </property>
- </column>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QLabel" name="label_2" >
- <property name="text" >
- <string>Name of plugin to install</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="linePlugin" />
- </item>
- <item>
- <widget class="QPushButton" name="pbnOK" >
- <property name="text" >
- <string>Install Plugin</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QLabel" name="label_3" >
- <property name="text" >
- <string>The plugin will be installed to ~/.qgis/python/plugins</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="pbnCancel" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Done</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
Deleted: trunk/qgis/python/plugins/plugin_installer/icon.xpm
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/icon.xpm 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/icon.xpm 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,311 +0,0 @@
-/* XPM */
-static const char *icon[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 257 2",
-" c #4E4E57",
-". c #555555",
-"X c #55555E",
-"o c #5B5B5B",
-"O c #4F4F63",
-"+ c #585868",
-"@ c #5A5A7C",
-"# c #437761",
-"$ c #4D7373",
-"% c gray39",
-"& c #6A6A6A",
-"* c #646476",
-"= c #79617B",
-"- c gray46",
-"; c #72727C",
-": c #7C7C7C",
-"> c #006BD1",
-", c #0075DB",
-"< c #1E7CD6",
-"1 c #007FE4",
-"2 c #5E5E85",
-"3 c #5F74A9",
-"4 c #5B7DB6",
-"5 c #62638A",
-"6 c #676899",
-"7 c #706F98",
-"8 c #767788",
-"9 c #72729F",
-"0 c #6C6EA2",
-"q c #6575AA",
-"w c #617FB3",
-"e c #7676A8",
-"r c #7C7CB4",
-"t c #019A01",
-"y c #0D9313",
-"u c #1A8C26",
-"i c #15A70E",
-"p c #1AAA11",
-"a c #25B118",
-"s c #31AE34",
-"d c #32BA21",
-"f c #33804D",
-"g c #3DC128",
-"h c #49B550",
-"j c #43AF60",
-"k c #49CA31",
-"l c #51C52F",
-"z c #59D43B",
-"x c #66DD44",
-"c c #73E54C",
-"v c #0088ED",
-"b c #0598FC",
-"n c #129FFF",
-"m c #1BA2FE",
-"M c #28A6FE",
-"N c #37A1EF",
-"B c #38ABFC",
-"V c #56B28F",
-"C c #7D85AF",
-"Z c #7884B6",
-"A c #73BBBF",
-"S c #528FCF",
-"D c #539FDF",
-"F c #4BB2FD",
-"G c #52B1F1",
-"H c #55B5FF",
-"J c #5AB2F5",
-"K c #5AB7FF",
-"L c #5EBDFE",
-"P c #6493D1",
-"I c #7691C9",
-"U c #68ACE6",
-"Y c #6DB8EB",
-"T c #64BAFE",
-"R c #6EB7F2",
-"E c #69BCFF",
-"W c #79B7EA",
-"Q c #70BEFD",
-"! c #74C680",
-"~ c #77C3F6",
-"^ c #75C0FF",
-"/ c #78C4F7",
-"( c #7BC2FF",
-") c #7CC8FB",
-"_ c #866979",
-"` c #A65646",
-"' c #B56E4E",
-"] c #A66D60",
-"[ c #DF6923",
-"{ c #D26D30",
-"} c #CE7E5A",
-"| c #A99020",
-" . c #88F35A",
-".. c #A2EA5B",
-"X. c #B3E85C",
-"o. c #FA9535",
-"O. c #FFA23C",
-"+. c #EEA85E",
-"@. c #ECBE4F",
-"#. c #FFA842",
-"$. c #FFB14B",
-"%. c #CCD555",
-"&. c #DBC54F",
-"*. c #848484",
-"=. c #8B8B8B",
-"-. c #868597",
-";. c #989898",
-":. c #8383AA",
-">. c #8787BA",
-",. c #8F9DAA",
-"<. c #9999BB",
-"1. c #99A5B2",
-"2. c #9AA8B8",
-"3. c gray64",
-"4. c #A3A4AF",
-"5. c #ACACAC",
-"6. c #A5A9B6",
-"7. c #A6ACBF",
-"8. c #A9A9B9",
-"9. c #A6B0B9",
-"0. c #B2B2B2",
-"q. c #B4B4BA",
-"w. c #BBBBBB",
-"e. c #8788C6",
-"r. c #898BD7",
-"t. c #9394C6",
-"y. c #929FD2",
-"u. c #9F9FD2",
-"i. c #9C9CDA",
-"p. c #9999E5",
-"a. c #9B9BFE",
-"s. c #83A0C6",
-"d. c #98AAC9",
-"f. c #93A7DA",
-"g. c #9DB2CC",
-"h. c #8CB7E7",
-"j. c #87B4FC",
-"k. c #99A6FF",
-"l. c #95B0E3",
-"z. c #96BDE3",
-"x. c #97B9EC",
-"c. c #94BBFF",
-"v. c #A5A5C9",
-"b. c #A4A8DB",
-"n. c #ACACD9",
-"m. c #AFB3C1",
-"M. c #ADB3CC",
-"N. c #A1B9D8",
-"B. c #B2B2C9",
-"V. c #B3B4D1",
-"C. c #BABAD3",
-"Z. c #BEBED9",
-"A. c #ACACE9",
-"S. c #A7A7FE",
-"D. c #A5BFE5",
-"F. c #A9B2E5",
-"G. c #ADBDF0",
-"H. c #B3A9FF",
-"J. c #B3B3E6",
-"K. c #BBBCE5",
-"L. c #B7B6FE",
-"P. c #AEDDBF",
-"I. c #9FC5DF",
-"U. c #84C5FF",
-"Y. c #89C7FF",
-"T. c #8FCBFC",
-"R. c #9BCBEB",
-"E. c #96C2F9",
-"W. c #96CFF6",
-"Q. c #94CAFF",
-"!. c #98C2F5",
-"~. c #99C5FF",
-"^. c #9BCCFF",
-"/. c #99D1FB",
-"(. c #B6C4CF",
-"). c #BBCEDB",
-"_. c #A6C4EC",
-"`. c #A4CCFF",
-"'. c #ACC1F4",
-"]. c #ABCCFF",
-"[. c #ADD2EC",
-"{. c #A6D3FD",
-"}. c #B2CDE6",
-"|. c #B0CFE8",
-" X c #BFC2EB",
-".X c #B3CCFF",
-"XX c #BBCCFF",
-"oX c #B2D0E7",
-"OX c #B6DAF5",
-"+X c #B2D9FF",
-"@X c #BBDDFF",
-"#X c #BEE1FC",
-"$X c #DCAF81",
-"%X c #D1B392",
-"&X c #C4BBFF",
-"*X c #C2C0B9",
-"=X c #D0CEA7",
-"-X c #E9E7A7",
-";X c #C3C3C4",
-":X c #C0C0CD",
-">X c #CBCBCB",
-",X c #C0C0D6",
-"<X c #C6C6D9",
-"1X c #CFCFD6",
-"2X c #CECEDD",
-"3X c LightGray",
-"4X c #D1D1DE",
-"5X c #D5D8D9",
-"6X c gray86",
-"7X c #C4C4E5",
-"8X c #C2C2EC",
-"9X c #C8C8E6",
-"0X c #C5C5F2",
-"qX c #C4C4FE",
-"wX c #C3CCFF",
-"eX c #CDC4FF",
-"rX c #CDCFF6",
-"tX c #CBCBFE",
-"yX c #C9DCEC",
-"uX c #D2CCFD",
-"iX c #D3D3E1",
-"pX c #D6D7EE",
-"aX c #D6DDE4",
-"sX c #D6DFE8",
-"dX c #DADCE4",
-"fX c #D8DCE9",
-"gX c #D1D2F2",
-"hX c #D3D3FF",
-"jX c #DBDBFF",
-"kX c #CDE0ED",
-"lX c #C8E2FB",
-"zX c #D5E0EB",
-"xX c #DDE3E9",
-"cX c #D6E9FC",
-"vX c #EAC5FF",
-"bX c #EED7FF",
-"nX c #FDCCFF",
-"mX c #FAD8FF",
-"MX c gray89",
-"NX c #E2E4ED",
-"BX c #E4E8EC",
-"VX c gray93",
-"CX c #E3E3F3",
-"ZX c #E3E3FE",
-"AX c #E3EDF3",
-"SX c #EBEDF3",
-"DX c #EBEBFF",
-"FX c #E9F4FE",
-"GX c #FDE8FE",
-"HX c #F3F3F3",
-"JX c #F4F4FC",
-"KX c #F3F8FF",
-"LX c #FEF1FF",
-"PX c #FDFDFE",
-"IX c black",
-"UX c black",
-"YX c None",
-/* pixels */
-"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX5X3X>Xw.>XMXYXYXBXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
-"YXYXYXYXYXYXYXYXYXYX5X3X>Xw.w.0.5.m.6.7.M.M.K.K.8X8.0.6X>Xw.;Xw.0.;X>XMXYXYXYXYXYXYXYXYXYXYXYXYX",
-"YXYX>Xw.5.3.9.1.2.g.g.N.D.D.]..X.X.XXXXXXXwXwXwXtXV.: >X5.KXPXPXPXMX3X*X5.*XMXYXYXYXYXYXYXYXYXYX",
-";X>X3.R ^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwXwX X- 5.4XJXKXPXPXPXPXPXq.*.*XMXYXYXYXYXYXYXYXYX",
-"q.5Xq.H E ^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwXwX*.4.ZXDXJXJXPXPXPXHX: & w.BXYXYXYXYXYXYXYXYX",
-"3X3XPXKX#X/.^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwX4.9XjXZXDXDXJXPXPX>Xo *.3XYXYXYXYXYXYXYXYXYX",
-"MX0.HXHXHXHXT.^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXK.hXhXjXZXDXDXJXPX=.o 5.MXYXYXYXYXYXYXYXYXYX",
-"YXw.MXYXYXYXOXE ^ U.Q.^.^.^.`.`.`.].].]..X'.G.F.F.b.fXZXZXjXjXZXDXDX1X% - >XYXYXYXYXYXYXYXYXYXYX",
-"YX6Xq.BXBXBXxXT E ^ U.Q.^.!.x.l.f.y.t.e.>.t.t.t.t.t.iXHXPXPXKXJXDXDX5.. ;.6XYXYXYXYXYXYXYXYXYXYX",
-"YXBX3.MXMXMXMXh.P I Z Z e r r r r >.>.>.>.>.t.t.t.t.2XBXHXHXJXYXYXMX;.% w.BXYXYXYXYXYXYXYXYXYXYX",
-"YXYXw.;X6X6X6X:X0 0 9 e e e r r r r >.>.>.>.>.v.V.C.dXMXMX6X6X6X6X5X3X3.3.6XYXYXYXYXYXYXYXYXYXYX",
-"YXYX>X;XYX6X5X5Xe 0 0 9 e e e r >.<.C.,XiXBXYXBXMXMXMXMX6X6X6X6X5X3X3X3X5.;.5XYXYXYXYXYXYXYXYXYX",
-"YXYX>X;XPXPXYX3X<.0 <.<.V.2XiXHXHXHXYXYXYXYXBXMXMXMXMX6X6X6X6X5X3X3X3X3X>X0.=.>XBXYXYXYXYXYXYXYX",
-"YXYX>X;XPXPXPXJXyXKXPXPXJXHXHXHXHXYXYXYXYXBXMXMXMXMX6X6X6X6X5X).I.Y 3.=.& & - 3.6XYXYXYXYXYXYXYX",
-"YXYX>X;X6XMXJXHXlXL PXJXHXHXHXHXYXYXYXYXBXMXMXMXMXoXR.Y G B b n m M - . - ;.3.;XMXYXYXYXYXYXYXYX",
-"YXYX>X;X3X3.0.MXlXB ) HXHXHXHXYXYXYXYX[.R.~ F M b n M M N S 4 3 6 6 5 5 -.q.5XMXYXYXYXYXYXYXYXYX",
-"YXYX>X;X6X6X;X;XlXF M /.AXOXW.~ B m n n M B B F F F D 3 6 <.V.9X7XgXK.n.t.0 9 m.MXYXYXYXYXYXYXYX",
-"YXYX>X*X3X3.0.BXkXK H n n m M B F K K K K K K K J w 6 B.CXDXDXZXZXjXhXhXtXqXt.0 :.3XBXYXYXYXYXYX",
-"YXYX>Xw.yXxX;X3XkXT T T T T T T T T T T T T T U q :.SXPXDXDXZXZXjXhXhXtXtXqX&XA.e 7 ;XMXYXYXYXYX",
-"YXYX>Xw.W < z.YXkXQ Q Q Q Q Q Q Q Q Q Q Q Q U 6 <.PXPXPXDXZXZXjXhXhXtXtXqX&XL.L.S.e 7 *XMXYXYXYX",
-"YXYX>Xw.W , > }.kX( ( ( ( ( ( ( ( ( ( ( ( j.0 <.PXPXPXPXJXZXjXhXhXtXtXqX&XL.L.H.S.a.e 8 >XBXYXYX",
-"YXYX>Xw.W 1 , }.zXY.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.c.e >.PXPXPXPXPXPXjXhXhXtXtXqX&XL.L.H.S.a.a.p.0 -.3XYXYX",
-"YXYX>Xw.~ v 1 |.zXQ.Q.Q.Q.Q.Q.Q.Q.Q.Q.c.r.9 JXPXPXPXPXPXPXZXhXtXtXqX&XL.L.H.S.a.a.a.a.e.5 5.MXYX",
-"YXYX>Xw./ b v |.zX^.^.^.^.^.^.^.^.^.~.k.0 <XPXPXPXPXPXPXPXKXtXtXqX&XL.L.H.S.a.a.a.a.S.S.0 8 >XYX",
-"YXYX>Xq.{.b b [.zX^.^.^.^.^.^.(.*X%X} ` e PXPXPXPXPXPXPXPXPXhXeXeX&XL.H.S.a.a.a.a.S.S.H.>.2 0.MX",
-"YXYX>X0.YXkXB [.zX{.{.{.$X+.O.#.#.O.[ = V.PXPXPXPXPXPXPXPXPXmXnXnXmXmX&Xa.a.a.a.S.S.H.L.i.5 ;.6X",
-"YXYX>X0.YXBXBXMXzX{.{.{.O.O.#.#.$.o.{ 6 qXhXDXPXPXPXPXPXPXGXmXnXvXbXGXLX&Xa.a.S.S.H.L.L.L.6 - >X",
-"YXYX>X0.BXBXMXMXzX{.{.{.O.#.#.$.$.o.' e tXtXtXtXjXDXPXPXLXGXLX0Xe.p.&XLXJXS.S.S.H.L.L.qXqX9 * ;X",
-"YXYX>X0.BXMXMXMXzX+X+X+XX.%. at .$.$.o.] t.tXtXtXtXtXtXuXDXLXLX<X0 Z 0 e.uXPXqXS.H.L.L.qXqXtXC + 0.",
-"YXYX>X0.MXMXMXMXsX+X+X+X . . ...&.o._ u.tXtXtXtXtXtXtXDXLXuX9 =X+X_.6 L.PXhXH.L.qXqXtXrXgX:.+ 5.",
-"YXYX>X5.MXMXMXMXsX at X@X at X . . . .l | _ J.tXtXtXtXtXtXtXJXLXA.-.-X at X@X6 pXPXSXfXfXfXfXfXfXfX:.+ 5.",
-"YXYX>X5.MXMXMXMXaX at X@X at Xc c c c g t $ K.hXhXtXtXqX&XL.DXLXp.7 -X at Xd.9 SXPXHXNXNXNXNXNXNXNX:.+ 5.",
-"YXYX>X5.MXMXMX6XaX#X#X#Xx x x x d t $ K.hXtXtXqX&XL.L.ZXLX&Xr 9 C 6 <XLXPXJXSXSXSXSXSXSXSX6 o 0.",
-"YXYX>X5.MXMX6X6XaXlXlXlXz z z z d t # u.tXtXqX&XL.L.H.&XLXmXH.r.r. XGXLXPXPXPXPXJXJXJXJXiX5 % ;X",
-"YXYX>X5.MX6X6X6XaXlXlXlXk k k k a t f >.tXqX&XL.L.H.S.a.uXGXmXvXvXmXGXLXPXPXPXPXPXPXPXPXv.@ - >X",
-"YXYX;X5.6X6X6X6XaXcXcXcXg g g g p t u e qX&XL.L.H.S.a.a.a.&XbXnXnXmXbXPXPXPXPXPXPXPXPXPXe X =.5X",
-"YXYX;X3.6X6X6X6XaXcXcXcXd d d d p t t 5 A.L.L.H.S.a.a.a.a.S.S.L.&XL.qXPXPXPXPXPXPXPXPX<X5 o 5.MX",
-"YXYX;X3.;X3X6X5XsXcXcXcXa a a a p t t # >.L.H.S.a.a.a.a.S.S.H.L.L.qXqXDXPXPXPXPXPXPXPXe O - >XYX",
-"YXYX;X3.;X;.0.3XxXcXcXcXi i i i i t t y 6 S.S.a.a.a.a.S.S.H.L.L.qXqXtXjXPXPXPXPXPXPXB.2 . 3.6XYX",
-"YXYX;X3.>X>X0.w.xXFXFXFXt t t t s j V A I r a.a.a.a.S.S.H.L.L.qXqXtXhXjXPXPXPXPXPXdX6 : >XYXYX",
-"YXYX;X3.0.3.;X3XxXFXFXFXh ! P.SXFXlX~.~.E.0 e.a.a.S.S.H.L.L.qXqXtXhXjXjXDXPXPXPXNX9 O & 0.MXYXYX",
-"YXYX;X3.5Xw.;.;XxXFXFXFXFXFXFXFXFXFX^.^.^.h.0 r.S.S.H.L.L.qXqXtXhXjXjXZXDXPXPXNX9 O % 3.6XYXYXYX",
-"YXYX3X*.;X3X>X>XxXKXKXKXKXKXKXKXKXKXcX^.^.^.s.6 r S.L.L.qXqXtXhXjXjXZXDXDXPXB.6 O % 3.3XYXYXYXYX",
-"YXYXBX0.- 0.3X3XMXKXKXKXKXKXKXKXKXBX;X,.8 % o X 2 0 i.qXqXtXhXjXjXZXDXCXZ.e 2 % 3.3XYXYXYXYXYX",
-"YXYXYX6X5.& ;.>XMXPXPXPXPX5Xw.;.: % . . . o & *.=.8 5 0 >.u.K.K.7Xv.>.6 5 O . : 5.6XYXYXYXYXYXYX",
-"YXYXYXYXMXw.- : 6X>X0.=.% o . . o % - =.3.w.>X3X5X>X3.; * 2 2 2 2 @ + X o - 3.>XMXYXYXYXYXYXYXYX",
-"YXYXYXYXYXMX>X*.% o . . o & : ;.5.;X>X5X6XBXYXYXYXYX6X>X0.;.*.: : : *.;.0.>X6XYXYXYXYXYXYXYXYXYX",
-"YXYXYXYXYXYXBX3X5.*.=.;.0.;X3X6XMXYXYXYXYXYXYXYXYXYXYXYXMX6X3X3X3X3X3X6XMXYXYXYXYXYXYXYXYXYXYXYX"
-};
Modified: trunk/qgis/python/plugins/plugin_installer/installer_data.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/installer_data.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/installer_data.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -54,10 +54,10 @@
# knownRepos: (name, url for QGIS 0.x, url for QGIS 1.x, possible depreciated url, another possible depreciated url)
knownRepos = [("Official QGIS Repository","http://spatialserver.net/cgi-bin/pyqgis_plugin.rb","http://spatialserver.net/cgi-bin/pyqgis_plugin.rb","",""),
- ("Carson Farmer's Repository","http://www.ftools.ca/cfarmerQgisRepo.xml","","http://www.geog.uvic.ca/spar/carson/cfarmerQgisRepo.xml",""),
+ ("Carson Farmer's Repository","http://www.ftools.ca/cfarmerQgisRepo_0.xx.xml","","http://www.geog.uvic.ca/spar/carson/cfarmerQgisRepo.xml",""),
("Barry Rowlingson's Repository","http://www.maths.lancs.ac.uk/~rowlings/Qgis/Plugins/plugins.xml","","",""),
("Borys Jurgiel's Repository","http://bwj.aster.net.pl/qgis-oldapi/plugins.xml","http://bwj.aster.net.pl/qgis/plugins.xml","",""),
- ("Faunalia Repository","http://faunalia.it/qgis/plugins.xml","","","")]
+ ("Faunalia Repository","http://faunalia.it/qgis/plugins.xml","http://faunalia.it/qgis/1.x/plugins.xml","","")]
@@ -169,7 +169,7 @@
settings.beginGroup(reposGroup)
# first, update the QSettings repositories if needed
if len(settings.childGroups()) == 0: # add the default repository when there isn't any
- settings.setValue(self.knownRepos[0][0]+"/url", QVariant(self.knownRepos[0][self.QGISver+1]))
+ settings.setValue(knownRepos[0][0]+"/url", QVariant(knownRepos[0][self.QGISver+1]))
else: # else update invalid urls
for key in settings.childGroups():
url = settings.value(key+"/url", QVariant()).toString()
Deleted: trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,158 +0,0 @@
-"""
-qgis_plugins.py
-author: Matthew Perry
-date: 2007-Oct-21
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-"""
-import urllib
-import sys
-import os
-import tempfile
-import zipfile
-from xml.dom import minidom, Node
-
-
-class unzip:
- """ unzip.py
- Version: 1.1
-
- Extract a zipfile to the directory provided
- It first creates the directory structure to house the files
- then it extracts the files to it.
-
- import unzip
- un = unzip.unzip()
- un.extract(r'c:\testfile.zip', 'c:\testoutput')
-
-
- By Doug Tolton (http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252508)
- """
- def __init__(self, verbose = True, percent = 10):
- self.verbose = verbose
- self.percent = percent
-
- def extract(self, file, dir):
- if not dir.endswith(':') and not os.path.exists(dir):
- os.mkdir(dir)
-
- zf = zipfile.ZipFile(file)
-
- # create directory structure to house files
- print "Creating plugin structure:"
- self._createstructure(file, dir)
-
- num_files = len(zf.namelist())
- percent = self.percent
- divisions = 100 / percent
- perc = int(num_files / divisions)
-
- # extract files to directory structure
- for i, name in enumerate(zf.namelist()):
-
- if self.verbose == True:
- print "Extracting %s" % name
- elif perc > 0 and (i % perc) == 0 and i > 0:
- complete = int (i / perc) * percent
- print "%s%% complete" % complete
-
- if not name.endswith('/'):
- outfile = open(os.path.join(dir, name), 'wb')
- outfile.write(zf.read(name))
- outfile.flush()
- outfile.close()
-
-
- def _createstructure(self, file, dir):
- self._makedirs(self._listdirs(file), dir)
-
-
- def _makedirs(self, directories, basedir):
- """ Create any directories that don't currently exist """
- print "Processing directories contained in the zip file: %s" % directories
- for dir in directories:
- curdir = os.path.join(basedir, dir)
- # normalize the path
- curdir = os.path.normpath(curdir)
- print "Checking to see if we should create %s" % curdir
- if not os.path.exists(curdir):
- # use makedirs to create parent directories as well
- print "Creating %s" % curdir
- os.makedirs(curdir)
-
- def _listdirs(self, file):
- """ Grabs all the directories in the zip structure
- This is necessary to create the structure before trying
- to extract the file to it. """
- zf = zipfile.ZipFile(file)
-
- dirs = []
-
- for name in zf.namelist():
- (path, filename) = os.path.split(name)
-
- if path not in dirs:
- dirs.append(path)
-
- dirs.sort()
- return dirs
-
-
-def retrieve_list(repos):
- repos = urllib.urlopen(repos).read()
- repos_xml = minidom.parseString(repos)
- plugin_nodes = repos_xml.getElementsByTagName("pyqgis_plugin")
- plugins = [
- {"name" : x.getAttribute("name").encode(),
- "version" : x.getAttribute("version").encode(),
- "desc" : x.getElementsByTagName("description")[0].childNodes[0].nodeValue.encode(),
- "author" : x.getElementsByTagName("author_name")[0].childNodes[0].nodeValue.encode(),
- "url" : x.getElementsByTagName("download_url")[0].childNodes[0].nodeValue.encode(),
- "filename": x.getElementsByTagName("file_name")[0].childNodes[0].nodeValue.encode()}
- for x in plugin_nodes]
-
- return plugins
-
-def install_plugin(plugin, plugindir, repos):
- # normalize the path to the users plugin directory
- plugindir = os.path.normpath(plugindir)
- plugin_list = retrieve_list(repos)
- target = [x for x in plugin_list if x["name"] == plugin]
- if target:
- # Take the first match
- target = target[0]
- url = target["url"]
- filename = target["filename"]
-
- print "Retrieving from %s" % url
- try:
- tmpdir = tempfile.gettempdir()
- outfile = os.path.join(tmpdir,filename)
- urllib.urlretrieve(url,outfile)
- except:
- return (False, "Failed to download file to %s" % outfile)
- return
-
- # make sure that the parent directory exists
- if not os.path.exists(plugindir):
- os.makedirs(plugindir)
-
- print "Extracting to plugin directory (%s)" % plugindir
- try:
- un = unzip()
- un.extract(outfile, plugindir)
- except:
- return (False, "Failed to unzip file to %s ... check permissions" % plugindir)
-
- else:
- return (False, "No plugins found named %s" % plugin)
-
- return (True, "Python plugin installed. Go to Plugins > Plugin Manager to enable %s." % plugin )
-
-
Deleted: trunk/qgis/python/plugins/plugin_installer/repository.ui
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/repository.ui 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/repository.ui 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,100 +0,0 @@
-<ui version="4.0" >
- <class>RepositoryDetailsDialog</class>
- <widget class="QDialog" name="RepositoryDetailsDialog" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>395</width>
- <height>169</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>Repository details</string>
- </property>
- <layout class="QGridLayout" >
- <item row="0" column="0" >
- <widget class="QLabel" name="label" >
- <property name="text" >
- <string>Name:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="editName" />
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="label_2" >
- <property name="text" >
- <string>URL:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="editURL" >
- <property name="text" >
- <string>http://</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="2" >
- <spacer>
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>181</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="3" column="0" colspan="2" >
- <widget class="QDialogButtonBox" name="buttonBox" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons" >
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>RepositoryDetailsDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel" >
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>RepositoryDetailsDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel" >
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
Deleted: trunk/qgis/python/plugins/plugin_installer/repository_dialog.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/repository_dialog.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/repository_dialog.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,30 +0,0 @@
-"""
-Copyright (C) 2008 Matthew Perry
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-"""
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
-
-from repository_ui import Ui_RepositoryDetailsDialog
-
-class RepositoryDialog(QDialog, Ui_RepositoryDetailsDialog):
- def __init__(self, parent=None):
- QDialog.__init__(self, parent)
-
- self.setupUi(self)
-
- self.connect(self.editName, SIGNAL("textChanged(const QString &)"), self.changed)
- self.connect(self.editURL, SIGNAL("textChanged(const QString &)"), self.changed)
-
- self.changed(None)
-
- def changed(self, string):
- enable = (self.editName.text().count() > 0 and self.editURL.text().count() > 0)
- self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(enable)
Deleted: trunk/qgis/python/plugins/plugin_installer/repository_ui.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/repository_ui.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/repository_ui.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,55 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'repository.ui'
-#
-# Created: Thu Jan 10 14:22:08 2008
-# by: PyQt4 UI code generator 4.3
-#
-# WARNING! All changes made in this file will be lost!
-
-from PyQt4 import QtCore, QtGui
-
-class Ui_RepositoryDetailsDialog(object):
- def setupUi(self, RepositoryDetailsDialog):
- RepositoryDetailsDialog.setObjectName("RepositoryDetailsDialog")
- RepositoryDetailsDialog.resize(QtCore.QSize(QtCore.QRect(0,0,395,169).size()).expandedTo(RepositoryDetailsDialog.minimumSizeHint()))
-
- self.gridlayout = QtGui.QGridLayout(RepositoryDetailsDialog)
- self.gridlayout.setObjectName("gridlayout")
-
- self.label = QtGui.QLabel(RepositoryDetailsDialog)
- self.label.setObjectName("label")
- self.gridlayout.addWidget(self.label,0,0,1,1)
-
- self.editName = QtGui.QLineEdit(RepositoryDetailsDialog)
- self.editName.setObjectName("editName")
- self.gridlayout.addWidget(self.editName,0,1,1,1)
-
- self.label_2 = QtGui.QLabel(RepositoryDetailsDialog)
- self.label_2.setObjectName("label_2")
- self.gridlayout.addWidget(self.label_2,1,0,1,1)
-
- self.editURL = QtGui.QLineEdit(RepositoryDetailsDialog)
- self.editURL.setObjectName("editURL")
- self.gridlayout.addWidget(self.editURL,1,1,1,1)
-
- spacerItem = QtGui.QSpacerItem(181,40,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding)
- self.gridlayout.addItem(spacerItem,2,0,1,2)
-
- self.buttonBox = QtGui.QDialogButtonBox(RepositoryDetailsDialog)
- self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
- self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
- self.buttonBox.setObjectName("buttonBox")
- self.gridlayout.addWidget(self.buttonBox,3,0,1,2)
-
- self.retranslateUi(RepositoryDetailsDialog)
- QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),RepositoryDetailsDialog.accept)
- QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),RepositoryDetailsDialog.reject)
- QtCore.QMetaObject.connectSlotsByName(RepositoryDetailsDialog)
-
- def retranslateUi(self, RepositoryDetailsDialog):
- RepositoryDetailsDialog.setWindowTitle(QtGui.QApplication.translate("RepositoryDetailsDialog", "Repository details", None, QtGui.QApplication.UnicodeUTF8))
- self.label.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "Name:", None, QtGui.QApplication.UnicodeUTF8))
- self.label_2.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "URL:", None, QtGui.QApplication.UnicodeUTF8))
- self.editURL.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "http://", None, QtGui.QApplication.UnicodeUTF8))
-
Deleted: trunk/qgis/python/plugins/plugin_installer/resources.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/resources.py 2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/resources.py 2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,608 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Resource object code
-#
-# Created: Thu Jan 10 13:11:47 2008
-# by: The Resource Compiler for PyQt (Qt v4.2.3)
-#
-# WARNING! All changes made in this file will be lost!
-
-from PyQt4 import QtCore
-
-qt_resource_data = "\
-\x00\x00\x23\x2f\
-\x2f\
-\x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\
-\x63\x68\x61\x72\x20\x2a\x69\x63\x6f\x6e\x5b\x5d\x20\x3d\x20\x7b\
-\x0a\x2f\x2a\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20\x72\x6f\x77\x73\
-\x20\x63\x6f\x6c\x6f\x72\x73\x20\x63\x68\x61\x72\x73\x2d\x70\x65\
-\x72\x2d\x70\x69\x78\x65\x6c\x20\x2a\x2f\x0a\x22\x34\x38\x20\x34\
-\x38\x20\x32\x35\x37\x20\x32\x22\x2c\x0a\x22\x20\x20\x20\x63\x20\
-\x23\x34\x45\x34\x45\x35\x37\x22\x2c\x0a\x22\x2e\x20\x20\x63\x20\
-\x23\x35\x35\x35\x35\x35\x35\x22\x2c\x0a\x22\x58\x20\x20\x63\x20\
-\x23\x35\x35\x35\x35\x35\x45\x22\x2c\x0a\x22\x6f\x20\x20\x63\x20\
-\x23\x35\x42\x35\x42\x35\x42\x22\x2c\x0a\x22\x4f\x20\x20\x63\x20\
-\x23\x34\x46\x34\x46\x36\x33\x22\x2c\x0a\x22\x2b\x20\x20\x63\x20\
-\x23\x35\x38\x35\x38\x36\x38\x22\x2c\x0a\x22\x40\x20\x20\x63\x20\
-\x23\x35\x41\x35\x41\x37\x43\x22\x2c\x0a\x22\x23\x20\x20\x63\x20\
-\x23\x34\x33\x37\x37\x36\x31\x22\x2c\x0a\x22\x24\x20\x20\x63\x20\
-\x23\x34\x44\x37\x33\x37\x33\x22\x2c\x0a\x22\x25\x20\x20\x63\x20\
-\x67\x72\x61\x79\x33\x39\x22\x2c\x0a\x22\x26\x20\x20\x63\x20\x23\
-\x36\x41\x36\x41\x36\x41\x22\x2c\x0a\x22\x2a\x20\x20\x63\x20\x23\
-\x36\x34\x36\x34\x37\x36\x22\x2c\x0a\x22\x3d\x20\x20\x63\x20\x23\
-\x37\x39\x36\x31\x37\x42\x22\x2c\x0a\x22\x2d\x20\x20\x63\x20\x67\
-\x72\x61\x79\x34\x36\x22\x2c\x0a\x22\x3b\x20\x20\x63\x20\x23\x37\
-\x32\x37\x32\x37\x43\x22\x2c\x0a\x22\x3a\x20\x20\x63\x20\x23\x37\
-\x43\x37\x43\x37\x43\x22\x2c\x0a\x22\x3e\x20\x20\x63\x20\x23\x30\
-\x30\x36\x42\x44\x31\x22\x2c\x0a\x22\x2c\x20\x20\x63\x20\x23\x30\
-\x30\x37\x35\x44\x42\x22\x2c\x0a\x22\x3c\x20\x20\x63\x20\x23\x31\
-\x45\x37\x43\x44\x36\x22\x2c\x0a\x22\x31\x20\x20\x63\x20\x23\x30\
-\x30\x37\x46\x45\x34\x22\x2c\x0a\x22\x32\x20\x20\x63\x20\x23\x35\
-\x45\x35\x45\x38\x35\x22\x2c\x0a\x22\x33\x20\x20\x63\x20\x23\x35\
-\x46\x37\x34\x41\x39\x22\x2c\x0a\x22\x34\x20\x20\x63\x20\x23\x35\
-\x42\x37\x44\x42\x36\x22\x2c\x0a\x22\x35\x20\x20\x63\x20\x23\x36\
-\x32\x36\x33\x38\x41\x22\x2c\x0a\x22\x36\x20\x20\x63\x20\x23\x36\
-\x37\x36\x38\x39\x39\x22\x2c\x0a\x22\x37\x20\x20\x63\x20\x23\x37\
-\x30\x36\x46\x39\x38\x22\x2c\x0a\x22\x38\x20\x20\x63\x20\x23\x37\
-\x36\x37\x37\x38\x38\x22\x2c\x0a\x22\x39\x20\x20\x63\x20\x23\x37\
-\x32\x37\x32\x39\x46\x22\x2c\x0a\x22\x30\x20\x20\x63\x20\x23\x36\
-\x43\x36\x45\x41\x32\x22\x2c\x0a\x22\x71\x20\x20\x63\x20\x23\x36\
-\x35\x37\x35\x41\x41\x22\x2c\x0a\x22\x77\x20\x20\x63\x20\x23\x36\
-\x31\x37\x46\x42\x33\x22\x2c\x0a\x22\x65\x20\x20\x63\x20\x23\x37\
-\x36\x37\x36\x41\x38\x22\x2c\x0a\x22\x72\x20\x20\x63\x20\x23\x37\
-\x43\x37\x43\x42\x34\x22\x2c\x0a\x22\x74\x20\x20\x63\x20\x23\x30\
-\x31\x39\x41\x30\x31\x22\x2c\x0a\x22\x79\x20\x20\x63\x20\x23\x30\
-\x44\x39\x33\x31\x33\x22\x2c\x0a\x22\x75\x20\x20\x63\x20\x23\x31\
-\x41\x38\x43\x32\x36\x22\x2c\x0a\x22\x69\x20\x20\x63\x20\x23\x31\
-\x35\x41\x37\x30\x45\x22\x2c\x0a\x22\x70\x20\x20\x63\x20\x23\x31\
-\x41\x41\x41\x31\x31\x22\x2c\x0a\x22\x61\x20\x20\x63\x20\x23\x32\
-\x35\x42\x31\x31\x38\x22\x2c\x0a\x22\x73\x20\x20\x63\x20\x23\x33\
-\x31\x41\x45\x33\x34\x22\x2c\x0a\x22\x64\x20\x20\x63\x20\x23\x33\
-\x32\x42\x41\x32\x31\x22\x2c\x0a\x22\x66\x20\x20\x63\x20\x23\x33\
-\x33\x38\x30\x34\x44\x22\x2c\x0a\x22\x67\x20\x20\x63\x20\x23\x33\
-\x44\x43\x31\x32\x38\x22\x2c\x0a\x22\x68\x20\x20\x63\x20\x23\x34\
-\x39\x42\x35\x35\x30\x22\x2c\x0a\x22\x6a\x20\x20\x63\x20\x23\x34\
-\x33\x41\x46\x36\x30\x22\x2c\x0a\x22\x6b\x20\x20\x63\x20\x23\x34\
-\x39\x43\x41\x33\x31\x22\x2c\x0a\x22\x6c\x20\x20\x63\x20\x23\x35\
-\x31\x43\x35\x32\x46\x22\x2c\x0a\x22\x7a\x20\x20\x63\x20\x23\x35\
-\x39\x44\x34\x33\x42\x22\x2c\x0a\x22\x78\x20\x20\x63\x20\x23\x36\
-\x36\x44\x44\x34\x34\x22\x2c\x0a\x22\x63\x20\x20\x63\x20\x23\x37\
-\x33\x45\x35\x34\x43\x22\x2c\x0a\x22\x76\x20\x20\x63\x20\x23\x30\
-\x30\x38\x38\x45\x44\x22\x2c\x0a\x22\x62\x20\x20\x63\x20\x23\x30\
-\x35\x39\x38\x46\x43\x22\x2c\x0a\x22\x6e\x20\x20\x63\x20\x23\x31\
-\x32\x39\x46\x46\x46\x22\x2c\x0a\x22\x6d\x20\x20\x63\x20\x23\x31\
-\x42\x41\x32\x46\x45\x22\x2c\x0a\x22\x4d\x20\x20\x63\x20\x23\x32\
-\x38\x41\x36\x46\x45\x22\x2c\x0a\x22\x4e\x20\x20\x63\x20\x23\x33\
-\x37\x41\x31\x45\x46\x22\x2c\x0a\x22\x42\x20\x20\x63\x20\x23\x33\
-\x38\x41\x42\x46\x43\x22\x2c\x0a\x22\x56\x20\x20\x63\x20\x23\x35\
-\x36\x42\x32\x38\x46\x22\x2c\x0a\x22\x43\x20\x20\x63\x20\x23\x37\
-\x44\x38\x35\x41\x46\x22\x2c\x0a\x22\x5a\x20\x20\x63\x20\x23\x37\
-\x38\x38\x34\x42\x36\x22\x2c\x0a\x22\x41\x20\x20\x63\x20\x23\x37\
-\x33\x42\x42\x42\x46\x22\x2c\x0a\x22\x53\x20\x20\x63\x20\x23\x35\
-\x32\x38\x46\x43\x46\x22\x2c\x0a\x22\x44\x20\x20\x63\x20\x23\x35\
-\x33\x39\x46\x44\x46\x22\x2c\x0a\x22\x46\x20\x20\x63\x20\x23\x34\
-\x42\x42\x32\x46\x44\x22\x2c\x0a\x22\x47\x20\x20\x63\x20\x23\x35\
-\x32\x42\x31\x46\x31\x22\x2c\x0a\x22\x48\x20\x20\x63\x20\x23\x35\
-\x35\x42\x35\x46\x46\x22\x2c\x0a\x22\x4a\x20\x20\x63\x20\x23\x35\
-\x41\x42\x32\x46\x35\x22\x2c\x0a\x22\x4b\x20\x20\x63\x20\x23\x35\
-\x41\x42\x37\x46\x46\x22\x2c\x0a\x22\x4c\x20\x20\x63\x20\x23\x35\
-\x45\x42\x44\x46\x45\x22\x2c\x0a\x22\x50\x20\x20\x63\x20\x23\x36\
-\x34\x39\x33\x44\x31\x22\x2c\x0a\x22\x49\x20\x20\x63\x20\x23\x37\
-\x36\x39\x31\x43\x39\x22\x2c\x0a\x22\x55\x20\x20\x63\x20\x23\x36\
-\x38\x41\x43\x45\x36\x22\x2c\x0a\x22\x59\x20\x20\x63\x20\x23\x36\
-\x44\x42\x38\x45\x42\x22\x2c\x0a\x22\x54\x20\x20\x63\x20\x23\x36\
-\x34\x42\x41\x46\x45\x22\x2c\x0a\x22\x52\x20\x20\x63\x20\x23\x36\
-\x45\x42\x37\x46\x32\x22\x2c\x0a\x22\x45\x20\x20\x63\x20\x23\x36\
-\x39\x42\x43\x46\x46\x22\x2c\x0a\x22\x57\x20\x20\x63\x20\x23\x37\
-\x39\x42\x37\x45\x41\x22\x2c\x0a\x22\x51\x20\x20\x63\x20\x23\x37\
-\x30\x42\x45\x46\x44\x22\x2c\x0a\x22\x21\x20\x20\x63\x20\x23\x37\
-\x34\x43\x36\x38\x30\x22\x2c\x0a\x22\x7e\x20\x20\x63\x20\x23\x37\
-\x37\x43\x33\x46\x36\x22\x2c\x0a\x22\x5e\x20\x20\x63\x20\x23\x37\
-\x35\x43\x30\x46\x46\x22\x2c\x0a\x22\x2f\x20\x20\x63\x20\x23\x37\
-\x38\x43\x34\x46\x37\x22\x2c\x0a\x22\x28\x20\x20\x63\x20\x23\x37\
-\x42\x43\x32\x46\x46\x22\x2c\x0a\x22\x29\x20\x20\x63\x20\x23\x37\
-\x43\x43\x38\x46\x42\x22\x2c\x0a\x22\x5f\x20\x20\x63\x20\x23\x38\
-\x36\x36\x39\x37\x39\x22\x2c\x0a\x22\x60\x20\x20\x63\x20\x23\x41\
-\x36\x35\x36\x34\x36\x22\x2c\x0a\x22\x27\x20\x20\x63\x20\x23\x42\
-\x35\x36\x45\x34\x45\x22\x2c\x0a\x22\x5d\x20\x20\x63\x20\x23\x41\
-\x36\x36\x44\x36\x30\x22\x2c\x0a\x22\x5b\x20\x20\x63\x20\x23\x44\
-\x46\x36\x39\x32\x33\x22\x2c\x0a\x22\x7b\x20\x20\x63\x20\x23\x44\
-\x32\x36\x44\x33\x30\x22\x2c\x0a\x22\x7d\x20\x20\x63\x20\x23\x43\
-\x45\x37\x45\x35\x41\x22\x2c\x0a\x22\x7c\x20\x20\x63\x20\x23\x41\
-\x39\x39\x30\x32\x30\x22\x2c\x0a\x22\x20\x2e\x20\x63\x20\x23\x38\
-\x38\x46\x33\x35\x41\x22\x2c\x0a\x22\x2e\x2e\x20\x63\x20\x23\x41\
-\x32\x45\x41\x35\x42\x22\x2c\x0a\x22\x58\x2e\x20\x63\x20\x23\x42\
-\x33\x45\x38\x35\x43\x22\x2c\x0a\x22\x6f\x2e\x20\x63\x20\x23\x46\
-\x41\x39\x35\x33\x35\x22\x2c\x0a\x22\x4f\x2e\x20\x63\x20\x23\x46\
-\x46\x41\x32\x33\x43\x22\x2c\x0a\x22\x2b\x2e\x20\x63\x20\x23\x45\
-\x45\x41\x38\x35\x45\x22\x2c\x0a\x22\x40\x2e\x20\x63\x20\x23\x45\
-\x43\x42\x45\x34\x46\x22\x2c\x0a\x22\x23\x2e\x20\x63\x20\x23\x46\
-\x46\x41\x38\x34\x32\x22\x2c\x0a\x22\x24\x2e\x20\x63\x20\x23\x46\
-\x46\x42\x31\x34\x42\x22\x2c\x0a\x22\x25\x2e\x20\x63\x20\x23\x43\
-\x43\x44\x35\x35\x35\x22\x2c\x0a\x22\x26\x2e\x20\x63\x20\x23\x44\
-\x42\x43\x35\x34\x46\x22\x2c\x0a\x22\x2a\x2e\x20\x63\x20\x23\x38\
-\x34\x38\x34\x38\x34\x22\x2c\x0a\x22\x3d\x2e\x20\x63\x20\x23\x38\
-\x42\x38\x42\x38\x42\x22\x2c\x0a\x22\x2d\x2e\x20\x63\x20\x23\x38\
-\x36\x38\x35\x39\x37\x22\x2c\x0a\x22\x3b\x2e\x20\x63\x20\x23\x39\
-\x38\x39\x38\x39\x38\x22\x2c\x0a\x22\x3a\x2e\x20\x63\x20\x23\x38\
-\x33\x38\x33\x41\x41\x22\x2c\x0a\x22\x3e\x2e\x20\x63\x20\x23\x38\
-\x37\x38\x37\x42\x41\x22\x2c\x0a\x22\x2c\x2e\x20\x63\x20\x23\x38\
-\x46\x39\x44\x41\x41\x22\x2c\x0a\x22\x3c\x2e\x20\x63\x20\x23\x39\
-\x39\x39\x39\x42\x42\x22\x2c\x0a\x22\x31\x2e\x20\x63\x20\x23\x39\
-\x39\x41\x35\x42\x32\x22\x2c\x0a\x22\x32\x2e\x20\x63\x20\x23\x39\
-\x41\x41\x38\x42\x38\x22\x2c\x0a\x22\x33\x2e\x20\x63\x20\x67\x72\
-\x61\x79\x36\x34\x22\x2c\x0a\x22\x34\x2e\x20\x63\x20\x23\x41\x33\
-\x41\x34\x41\x46\x22\x2c\x0a\x22\x35\x2e\x20\x63\x20\x23\x41\x43\
-\x41\x43\x41\x43\x22\x2c\x0a\x22\x36\x2e\x20\x63\x20\x23\x41\x35\
-\x41\x39\x42\x36\x22\x2c\x0a\x22\x37\x2e\x20\x63\x20\x23\x41\x36\
-\x41\x43\x42\x46\x22\x2c\x0a\x22\x38\x2e\x20\x63\x20\x23\x41\x39\
-\x41\x39\x42\x39\x22\x2c\x0a\x22\x39\x2e\x20\x63\x20\x23\x41\x36\
-\x42\x30\x42\x39\x22\x2c\x0a\x22\x30\x2e\x20\x63\x20\x23\x42\x32\
-\x42\x32\x42\x32\x22\x2c\x0a\x22\x71\x2e\x20\x63\x20\x23\x42\x34\
-\x42\x34\x42\x41\x22\x2c\x0a\x22\x77\x2e\x20\x63\x20\x23\x42\x42\
-\x42\x42\x42\x42\x22\x2c\x0a\x22\x65\x2e\x20\x63\x20\x23\x38\x37\
-\x38\x38\x43\x36\x22\x2c\x0a\x22\x72\x2e\x20\x63\x20\x23\x38\x39\
-\x38\x42\x44\x37\x22\x2c\x0a\x22\x74\x2e\x20\x63\x20\x23\x39\x33\
-\x39\x34\x43\x36\x22\x2c\x0a\x22\x79\x2e\x20\x63\x20\x23\x39\x32\
-\x39\x46\x44\x32\x22\x2c\x0a\x22\x75\x2e\x20\x63\x20\x23\x39\x46\
-\x39\x46\x44\x32\x22\x2c\x0a\x22\x69\x2e\x20\x63\x20\x23\x39\x43\
-\x39\x43\x44\x41\x22\x2c\x0a\x22\x70\x2e\x20\x63\x20\x23\x39\x39\
-\x39\x39\x45\x35\x22\x2c\x0a\x22\x61\x2e\x20\x63\x20\x23\x39\x42\
-\x39\x42\x46\x45\x22\x2c\x0a\x22\x73\x2e\x20\x63\x20\x23\x38\x33\
-\x41\x30\x43\x36\x22\x2c\x0a\x22\x64\x2e\x20\x63\x20\x23\x39\x38\
-\x41\x41\x43\x39\x22\x2c\x0a\x22\x66\x2e\x20\x63\x20\x23\x39\x33\
-\x41\x37\x44\x41\x22\x2c\x0a\x22\x67\x2e\x20\x63\x20\x23\x39\x44\
-\x42\x32\x43\x43\x22\x2c\x0a\x22\x68\x2e\x20\x63\x20\x23\x38\x43\
-\x42\x37\x45\x37\x22\x2c\x0a\x22\x6a\x2e\x20\x63\x20\x23\x38\x37\
-\x42\x34\x46\x43\x22\x2c\x0a\x22\x6b\x2e\x20\x63\x20\x23\x39\x39\
-\x41\x36\x46\x46\x22\x2c\x0a\x22\x6c\x2e\x20\x63\x20\x23\x39\x35\
-\x42\x30\x45\x33\x22\x2c\x0a\x22\x7a\x2e\x20\x63\x20\x23\x39\x36\
-\x42\x44\x45\x33\x22\x2c\x0a\x22\x78\x2e\x20\x63\x20\x23\x39\x37\
-\x42\x39\x45\x43\x22\x2c\x0a\x22\x63\x2e\x20\x63\x20\x23\x39\x34\
-\x42\x42\x46\x46\x22\x2c\x0a\x22\x76\x2e\x20\x63\x20\x23\x41\x35\
-\x41\x35\x43\x39\x22\x2c\x0a\x22\x62\x2e\x20\x63\x20\x23\x41\x34\
-\x41\x38\x44\x42\x22\x2c\x0a\x22\x6e\x2e\x20\x63\x20\x23\x41\x43\
-\x41\x43\x44\x39\x22\x2c\x0a\x22\x6d\x2e\x20\x63\x20\x23\x41\x46\
-\x42\x33\x43\x31\x22\x2c\x0a\x22\x4d\x2e\x20\x63\x20\x23\x41\x44\
-\x42\x33\x43\x43\x22\x2c\x0a\x22\x4e\x2e\x20\x63\x20\x23\x41\x31\
-\x42\x39\x44\x38\x22\x2c\x0a\x22\x42\x2e\x20\x63\x20\x23\x42\x32\
-\x42\x32\x43\x39\x22\x2c\x0a\x22\x56\x2e\x20\x63\x20\x23\x42\x33\
-\x42\x34\x44\x31\x22\x2c\x0a\x22\x43\x2e\x20\x63\x20\x23\x42\x41\
-\x42\x41\x44\x33\x22\x2c\x0a\x22\x5a\x2e\x20\x63\x20\x23\x42\x45\
-\x42\x45\x44\x39\x22\x2c\x0a\x22\x41\x2e\x20\x63\x20\x23\x41\x43\
-\x41\x43\x45\x39\x22\x2c\x0a\x22\x53\x2e\x20\x63\x20\x23\x41\x37\
-\x41\x37\x46\x45\x22\x2c\x0a\x22\x44\x2e\x20\x63\x20\x23\x41\x35\
-\x42\x46\x45\x35\x22\x2c\x0a\x22\x46\x2e\x20\x63\x20\x23\x41\x39\
-\x42\x32\x45\x35\x22\x2c\x0a\x22\x47\x2e\x20\x63\x20\x23\x41\x44\
-\x42\x44\x46\x30\x22\x2c\x0a\x22\x48\x2e\x20\x63\x20\x23\x42\x33\
-\x41\x39\x46\x46\x22\x2c\x0a\x22\x4a\x2e\x20\x63\x20\x23\x42\x33\
-\x42\x33\x45\x36\x22\x2c\x0a\x22\x4b\x2e\x20\x63\x20\x23\x42\x42\
-\x42\x43\x45\x35\x22\x2c\x0a\x22\x4c\x2e\x20\x63\x20\x23\x42\x37\
-\x42\x36\x46\x45\x22\x2c\x0a\x22\x50\x2e\x20\x63\x20\x23\x41\x45\
-\x44\x44\x42\x46\x22\x2c\x0a\x22\x49\x2e\x20\x63\x20\x23\x39\x46\
-\x43\x35\x44\x46\x22\x2c\x0a\x22\x55\x2e\x20\x63\x20\x23\x38\x34\
-\x43\x35\x46\x46\x22\x2c\x0a\x22\x59\x2e\x20\x63\x20\x23\x38\x39\
-\x43\x37\x46\x46\x22\x2c\x0a\x22\x54\x2e\x20\x63\x20\x23\x38\x46\
-\x43\x42\x46\x43\x22\x2c\x0a\x22\x52\x2e\x20\x63\x20\x23\x39\x42\
-\x43\x42\x45\x42\x22\x2c\x0a\x22\x45\x2e\x20\x63\x20\x23\x39\x36\
-\x43\x32\x46\x39\x22\x2c\x0a\x22\x57\x2e\x20\x63\x20\x23\x39\x36\
-\x43\x46\x46\x36\x22\x2c\x0a\x22\x51\x2e\x20\x63\x20\x23\x39\x34\
-\x43\x41\x46\x46\x22\x2c\x0a\x22\x21\x2e\x20\x63\x20\x23\x39\x38\
-\x43\x32\x46\x35\x22\x2c\x0a\x22\x7e\x2e\x20\x63\x20\x23\x39\x39\
-\x43\x35\x46\x46\x22\x2c\x0a\x22\x5e\x2e\x20\x63\x20\x23\x39\x42\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x2f\x2e\x20\x63\x20\x23\x39\x39\
-\x44\x31\x46\x42\x22\x2c\x0a\x22\x28\x2e\x20\x63\x20\x23\x42\x36\
-\x43\x34\x43\x46\x22\x2c\x0a\x22\x29\x2e\x20\x63\x20\x23\x42\x42\
-\x43\x45\x44\x42\x22\x2c\x0a\x22\x5f\x2e\x20\x63\x20\x23\x41\x36\
-\x43\x34\x45\x43\x22\x2c\x0a\x22\x60\x2e\x20\x63\x20\x23\x41\x34\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x27\x2e\x20\x63\x20\x23\x41\x43\
-\x43\x31\x46\x34\x22\x2c\x0a\x22\x5d\x2e\x20\x63\x20\x23\x41\x42\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x5b\x2e\x20\x63\x20\x23\x41\x44\
-\x44\x32\x45\x43\x22\x2c\x0a\x22\x7b\x2e\x20\x63\x20\x23\x41\x36\
-\x44\x33\x46\x44\x22\x2c\x0a\x22\x7d\x2e\x20\x63\x20\x23\x42\x32\
-\x43\x44\x45\x36\x22\x2c\x0a\x22\x7c\x2e\x20\x63\x20\x23\x42\x30\
-\x43\x46\x45\x38\x22\x2c\x0a\x22\x20\x58\x20\x63\x20\x23\x42\x46\
-\x43\x32\x45\x42\x22\x2c\x0a\x22\x2e\x58\x20\x63\x20\x23\x42\x33\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x58\x58\x20\x63\x20\x23\x42\x42\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x6f\x58\x20\x63\x20\x23\x42\x32\
-\x44\x30\x45\x37\x22\x2c\x0a\x22\x4f\x58\x20\x63\x20\x23\x42\x36\
-\x44\x41\x46\x35\x22\x2c\x0a\x22\x2b\x58\x20\x63\x20\x23\x42\x32\
-\x44\x39\x46\x46\x22\x2c\x0a\x22\x40\x58\x20\x63\x20\x23\x42\x42\
-\x44\x44\x46\x46\x22\x2c\x0a\x22\x23\x58\x20\x63\x20\x23\x42\x45\
-\x45\x31\x46\x43\x22\x2c\x0a\x22\x24\x58\x20\x63\x20\x23\x44\x43\
-\x41\x46\x38\x31\x22\x2c\x0a\x22\x25\x58\x20\x63\x20\x23\x44\x31\
-\x42\x33\x39\x32\x22\x2c\x0a\x22\x26\x58\x20\x63\x20\x23\x43\x34\
-\x42\x42\x46\x46\x22\x2c\x0a\x22\x2a\x58\x20\x63\x20\x23\x43\x32\
-\x43\x30\x42\x39\x22\x2c\x0a\x22\x3d\x58\x20\x63\x20\x23\x44\x30\
-\x43\x45\x41\x37\x22\x2c\x0a\x22\x2d\x58\x20\x63\x20\x23\x45\x39\
-\x45\x37\x41\x37\x22\x2c\x0a\x22\x3b\x58\x20\x63\x20\x23\x43\x33\
-\x43\x33\x43\x34\x22\x2c\x0a\x22\x3a\x58\x20\x63\x20\x23\x43\x30\
-\x43\x30\x43\x44\x22\x2c\x0a\x22\x3e\x58\x20\x63\x20\x23\x43\x42\
-\x43\x42\x43\x42\x22\x2c\x0a\x22\x2c\x58\x20\x63\x20\x23\x43\x30\
-\x43\x30\x44\x36\x22\x2c\x0a\x22\x3c\x58\x20\x63\x20\x23\x43\x36\
-\x43\x36\x44\x39\x22\x2c\x0a\x22\x31\x58\x20\x63\x20\x23\x43\x46\
-\x43\x46\x44\x36\x22\x2c\x0a\x22\x32\x58\x20\x63\x20\x23\x43\x45\
-\x43\x45\x44\x44\x22\x2c\x0a\x22\x33\x58\x20\x63\x20\x4c\x69\x67\
-\x68\x74\x47\x72\x61\x79\x22\x2c\x0a\x22\x34\x58\x20\x63\x20\x23\
-\x44\x31\x44\x31\x44\x45\x22\x2c\x0a\x22\x35\x58\x20\x63\x20\x23\
-\x44\x35\x44\x38\x44\x39\x22\x2c\x0a\x22\x36\x58\x20\x63\x20\x67\
-\x72\x61\x79\x38\x36\x22\x2c\x0a\x22\x37\x58\x20\x63\x20\x23\x43\
-\x34\x43\x34\x45\x35\x22\x2c\x0a\x22\x38\x58\x20\x63\x20\x23\x43\
-\x32\x43\x32\x45\x43\x22\x2c\x0a\x22\x39\x58\x20\x63\x20\x23\x43\
-\x38\x43\x38\x45\x36\x22\x2c\x0a\x22\x30\x58\x20\x63\x20\x23\x43\
-\x35\x43\x35\x46\x32\x22\x2c\x0a\x22\x71\x58\x20\x63\x20\x23\x43\
-\x34\x43\x34\x46\x45\x22\x2c\x0a\x22\x77\x58\x20\x63\x20\x23\x43\
-\x33\x43\x43\x46\x46\x22\x2c\x0a\x22\x65\x58\x20\x63\x20\x23\x43\
-\x44\x43\x34\x46\x46\x22\x2c\x0a\x22\x72\x58\x20\x63\x20\x23\x43\
-\x44\x43\x46\x46\x36\x22\x2c\x0a\x22\x74\x58\x20\x63\x20\x23\x43\
-\x42\x43\x42\x46\x45\x22\x2c\x0a\x22\x79\x58\x20\x63\x20\x23\x43\
-\x39\x44\x43\x45\x43\x22\x2c\x0a\x22\x75\x58\x20\x63\x20\x23\x44\
-\x32\x43\x43\x46\x44\x22\x2c\x0a\x22\x69\x58\x20\x63\x20\x23\x44\
-\x33\x44\x33\x45\x31\x22\x2c\x0a\x22\x70\x58\x20\x63\x20\x23\x44\
-\x36\x44\x37\x45\x45\x22\x2c\x0a\x22\x61\x58\x20\x63\x20\x23\x44\
-\x36\x44\x44\x45\x34\x22\x2c\x0a\x22\x73\x58\x20\x63\x20\x23\x44\
-\x36\x44\x46\x45\x38\x22\x2c\x0a\x22\x64\x58\x20\x63\x20\x23\x44\
-\x41\x44\x43\x45\x34\x22\x2c\x0a\x22\x66\x58\x20\x63\x20\x23\x44\
-\x38\x44\x43\x45\x39\x22\x2c\x0a\x22\x67\x58\x20\x63\x20\x23\x44\
-\x31\x44\x32\x46\x32\x22\x2c\x0a\x22\x68\x58\x20\x63\x20\x23\x44\
-\x33\x44\x33\x46\x46\x22\x2c\x0a\x22\x6a\x58\x20\x63\x20\x23\x44\
-\x42\x44\x42\x46\x46\x22\x2c\x0a\x22\x6b\x58\x20\x63\x20\x23\x43\
-\x44\x45\x30\x45\x44\x22\x2c\x0a\x22\x6c\x58\x20\x63\x20\x23\x43\
-\x38\x45\x32\x46\x42\x22\x2c\x0a\x22\x7a\x58\x20\x63\x20\x23\x44\
-\x35\x45\x30\x45\x42\x22\x2c\x0a\x22\x78\x58\x20\x63\x20\x23\x44\
-\x44\x45\x33\x45\x39\x22\x2c\x0a\x22\x63\x58\x20\x63\x20\x23\x44\
-\x36\x45\x39\x46\x43\x22\x2c\x0a\x22\x76\x58\x20\x63\x20\x23\x45\
-\x41\x43\x35\x46\x46\x22\x2c\x0a\x22\x62\x58\x20\x63\x20\x23\x45\
-\x45\x44\x37\x46\x46\x22\x2c\x0a\x22\x6e\x58\x20\x63\x20\x23\x46\
-\x44\x43\x43\x46\x46\x22\x2c\x0a\x22\x6d\x58\x20\x63\x20\x23\x46\
-\x41\x44\x38\x46\x46\x22\x2c\x0a\x22\x4d\x58\x20\x63\x20\x67\x72\
-\x61\x79\x38\x39\x22\x2c\x0a\x22\x4e\x58\x20\x63\x20\x23\x45\x32\
-\x45\x34\x45\x44\x22\x2c\x0a\x22\x42\x58\x20\x63\x20\x23\x45\x34\
-\x45\x38\x45\x43\x22\x2c\x0a\x22\x56\x58\x20\x63\x20\x67\x72\x61\
-\x79\x39\x33\x22\x2c\x0a\x22\x43\x58\x20\x63\x20\x23\x45\x33\x45\
-\x33\x46\x33\x22\x2c\x0a\x22\x5a\x58\x20\x63\x20\x23\x45\x33\x45\
-\x33\x46\x45\x22\x2c\x0a\x22\x41\x58\x20\x63\x20\x23\x45\x33\x45\
-\x44\x46\x33\x22\x2c\x0a\x22\x53\x58\x20\x63\x20\x23\x45\x42\x45\
-\x44\x46\x33\x22\x2c\x0a\x22\x44\x58\x20\x63\x20\x23\x45\x42\x45\
-\x42\x46\x46\x22\x2c\x0a\x22\x46\x58\x20\x63\x20\x23\x45\x39\x46\
-\x34\x46\x45\x22\x2c\x0a\x22\x47\x58\x20\x63\x20\x23\x46\x44\x45\
-\x38\x46\x45\x22\x2c\x0a\x22\x48\x58\x20\x63\x20\x23\x46\x33\x46\
-\x33\x46\x33\x22\x2c\x0a\x22\x4a\x58\x20\x63\x20\x23\x46\x34\x46\
-\x34\x46\x43\x22\x2c\x0a\x22\x4b\x58\x20\x63\x20\x23\x46\x33\x46\
-\x38\x46\x46\x22\x2c\x0a\x22\x4c\x58\x20\x63\x20\x23\x46\x45\x46\
-\x31\x46\x46\x22\x2c\x0a\x22\x50\x58\x20\x63\x20\x23\x46\x44\x46\
-\x44\x46\x45\x22\x2c\x0a\x22\x49\x58\x20\x63\x20\x62\x6c\x61\x63\
-\x6b\x22\x2c\x0a\x22\x55\x58\x20\x63\x20\x62\x6c\x61\x63\x6b\x22\
-\x2c\x0a\x22\x59\x58\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x2f\
-\x2a\x20\x70\x69\x78\x65\x6c\x73\x20\x2a\x2f\x0a\x22\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x35\x58\x33\x58\x3e\x58\x77\x2e\x3e\
-\x58\x4d\x58\x59\x58\x59\x58\x42\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x35\x58\x33\x58\x3e\x58\x77\x2e\x77\x2e\x30\
-\x2e\x35\x2e\x6d\x2e\x36\x2e\x37\x2e\x4d\x2e\x4d\x2e\x4b\x2e\x4b\
-\x2e\x38\x58\x38\x2e\x30\x2e\x36\x58\x3e\x58\x77\x2e\x3b\x58\x77\
-\x2e\x30\x2e\x3b\x58\x3e\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x35\x2e\x33\
-\x2e\x39\x2e\x31\x2e\x32\x2e\x67\x2e\x67\x2e\x4e\x2e\x44\x2e\x44\
-\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\x58\x77\
-\x58\x77\x58\x77\x58\x74\x58\x56\x2e\x3a\x20\x3e\x58\x35\x2e\x4b\
-\x58\x50\x58\x50\x58\x50\x58\x4d\x58\x33\x58\x2a\x58\x35\x2e\x2a\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x3b\x58\x3e\x58\x33\x2e\x52\
-\x20\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\
-\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\
-\x58\x58\x58\x58\x58\x77\x58\x77\x58\x77\x58\x20\x58\x2d\x20\x35\
-\x2e\x34\x58\x4a\x58\x4b\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x71\x2e\x2a\x2e\x2a\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x71\x2e\x35\
-\x58\x71\x2e\x48\x20\x45\x20\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\
-\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\
-\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\x58\x77\x58\x77\x58\x77\
-\x58\x2a\x2e\x34\x2e\x5a\x58\x44\x58\x4a\x58\x4a\x58\x50\x58\x50\
-\x58\x50\x58\x48\x58\x3a\x20\x26\x20\x77\x2e\x42\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x33\x58\x33\x58\x50\x58\x4b\x58\x23\x58\x2f\x2e\x5e\x20\x55\
-\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\
-\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\
-\x58\x77\x58\x77\x58\x34\x2e\x39\x58\x6a\x58\x5a\x58\x44\x58\x44\
-\x58\x4a\x58\x50\x58\x50\x58\x3e\x58\x6f\x20\x2a\x2e\x33\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x4d\x58\x30\x2e\x48\x58\x48\x58\x48\x58\x48\
-\x58\x54\x2e\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\
-\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\
-\x58\x58\x58\x58\x58\x58\x58\x77\x58\x4b\x2e\x68\x58\x68\x58\x6a\
-\x58\x5a\x58\x44\x58\x44\x58\x4a\x58\x50\x58\x3d\x2e\x6f\x20\x35\
-\x2e\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x77\x2e\x4d\x58\x59\
-\x58\x59\x58\x59\x58\x4f\x58\x45\x20\x5e\x20\x55\x2e\x51\x2e\x5e\
-\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\
-\x2e\x2e\x58\x27\x2e\x47\x2e\x46\x2e\x46\x2e\x62\x2e\x66\x58\x5a\
-\x58\x5a\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x44\x58\x31\x58\x25\
-\x20\x2d\x20\x3e\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x36\
-\x58\x71\x2e\x42\x58\x42\x58\x42\x58\x78\x58\x54\x20\x45\x20\x5e\
-\x20\x55\x2e\x51\x2e\x5e\x2e\x21\x2e\x78\x2e\x6c\x2e\x66\x2e\x79\
-\x2e\x74\x2e\x65\x2e\x3e\x2e\x74\x2e\x74\x2e\x74\x2e\x74\x2e\x74\
-\x2e\x69\x58\x48\x58\x50\x58\x50\x58\x4b\x58\x4a\x58\x44\x58\x44\
-\x58\x35\x2e\x2e\x20\x3b\x2e\x36\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x42\x58\x33\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\x58\x68\
-\x2e\x50\x20\x49\x20\x5a\x20\x5a\x20\x65\x20\x72\x20\x72\x20\x72\
-\x20\x72\x20\x3e\x2e\x3e\x2e\x3e\x2e\x3e\x2e\x3e\x2e\x74\x2e\x74\
-\x2e\x74\x2e\x74\x2e\x32\x58\x42\x58\x48\x58\x48\x58\x4a\x58\x59\
-\x58\x59\x58\x4d\x58\x3b\x2e\x25\x20\x77\x2e\x42\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x77\x2e\x3b\x58\x36\x58\x36\
-\x58\x36\x58\x3a\x58\x30\x20\x30\x20\x39\x20\x65\x20\x65\x20\x65\
-\x20\x72\x20\x72\x20\x72\x20\x72\x20\x3e\x2e\x3e\x2e\x3e\x2e\x3e\
-\x2e\x3e\x2e\x76\x2e\x56\x2e\x43\x2e\x64\x58\x4d\x58\x4d\x58\x36\
-\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\x2e\x33\x2e\x36\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\
-\x58\x59\x58\x36\x58\x35\x58\x35\x58\x65\x20\x30\x20\x30\x20\x39\
-\x20\x65\x20\x65\x20\x65\x20\x72\x20\x3e\x2e\x3c\x2e\x43\x2e\x2c\
-\x58\x69\x58\x42\x58\x59\x58\x42\x58\x4d\x58\x4d\x58\x4d\x58\x4d\
-\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\x58\x33\
-\x58\x35\x2e\x3b\x2e\x35\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x3b\x58\x50\x58\x50\x58\x59\x58\x33\x58\x3c\x2e\x30\
-\x20\x3c\x2e\x3c\x2e\x56\x2e\x32\x58\x69\x58\x48\x58\x48\x58\x48\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\x58\x4d\x58\x4d\
-\x58\x4d\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\
-\x58\x33\x58\x33\x58\x3e\x58\x30\x2e\x3d\x2e\x3e\x58\x42\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x3b\x58\x50\x58\x50\x58\x50\x58\x4a\
-\x58\x79\x58\x4b\x58\x50\x58\x50\x58\x4a\x58\x48\x58\x48\x58\x48\
-\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\x58\x4d\
-\x58\x4d\x58\x4d\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x29\
-\x2e\x49\x2e\x59\x20\x33\x2e\x3d\x2e\x26\x20\x26\x20\x2d\x20\x33\
-\x2e\x36\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\x58\x36\x58\x4d\
-\x58\x4a\x58\x48\x58\x6c\x58\x4c\x20\x50\x58\x4a\x58\x48\x58\x48\
-\x58\x48\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\
-\x58\x4d\x58\x4d\x58\x4d\x58\x6f\x58\x52\x2e\x59\x20\x47\x20\x42\
-\x20\x62\x20\x6e\x20\x6d\x20\x4d\x20\x2d\x20\x2e\x20\x2d\x20\x3b\
-\x2e\x33\x2e\x3b\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\
-\x58\x33\x58\x33\x2e\x30\x2e\x4d\x58\x6c\x58\x42\x20\x29\x20\x48\
-\x58\x48\x58\x48\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x5b\
-\x2e\x52\x2e\x7e\x20\x46\x20\x4d\x20\x62\x20\x6e\x20\x4d\x20\x4d\
-\x20\x4e\x20\x53\x20\x34\x20\x33\x20\x36\x20\x36\x20\x35\x20\x35\
-\x20\x2d\x2e\x71\x2e\x35\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x3b\x58\x36\x58\x36\x58\x3b\x58\x3b\x58\x6c\x58\x46\
-\x20\x4d\x20\x2f\x2e\x41\x58\x4f\x58\x57\x2e\x7e\x20\x42\x20\x6d\
-\x20\x6e\x20\x6e\x20\x4d\x20\x42\x20\x42\x20\x46\x20\x46\x20\x46\
-\x20\x44\x20\x33\x20\x36\x20\x3c\x2e\x56\x2e\x39\x58\x37\x58\x67\
-\x58\x4b\x2e\x6e\x2e\x74\x2e\x30\x20\x39\x20\x6d\x2e\x4d\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x2a\x58\x33\x58\x33\x2e\x30\x2e\x42\
-\x58\x6b\x58\x4b\x20\x48\x20\x6e\x20\x6e\x20\x6d\x20\x4d\x20\x42\
-\x20\x46\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\
-\x20\x4a\x20\x77\x20\x36\x20\x42\x2e\x43\x58\x44\x58\x44\x58\x5a\
-\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x71\x58\x74\x2e\x30\
-\x20\x3a\x2e\x33\x58\x42\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x79\x58\x78\
-\x58\x3b\x58\x33\x58\x6b\x58\x54\x20\x54\x20\x54\x20\x54\x20\x54\
-\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\
-\x20\x54\x20\x55\x20\x71\x20\x3a\x2e\x53\x58\x50\x58\x44\x58\x44\
-\x58\x5a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x74\x58\x71\
-\x58\x26\x58\x41\x2e\x65\x20\x37\x20\x3b\x58\x4d\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\
-\x2e\x57\x20\x3c\x20\x7a\x2e\x59\x58\x6b\x58\x51\x20\x51\x20\x51\
-\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\
-\x20\x51\x20\x51\x20\x55\x20\x36\x20\x3c\x2e\x50\x58\x50\x58\x50\
-\x58\x44\x58\x5a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x74\
-\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x53\x2e\x65\x20\x37\x20\x2a\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x77\x2e\x57\x20\x2c\x20\x3e\x20\x7d\x2e\x6b\x58\x28\
-\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\
-\x20\x28\x20\x28\x20\x28\x20\x6a\x2e\x30\x20\x3c\x2e\x50\x58\x50\
-\x58\x50\x58\x50\x58\x4a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\
-\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\
-\x2e\x65\x20\x38\x20\x3e\x58\x42\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x57\x20\x31\x20\x2c\x20\x7d\
-\x2e\x7a\x58\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\
-\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x63\x2e\x65\x20\x3e\x2e\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x6a\x58\x68\x58\x68\
-\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\
-\x2e\x61\x2e\x61\x2e\x70\x2e\x30\x20\x2d\x2e\x33\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x7e\x20\x76\
-\x20\x31\x20\x7c\x2e\x7a\x58\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x51\
-\x2e\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x63\x2e\x72\x2e\x39\
-\x20\x4a\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x5a\
-\x58\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\
-\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x65\x2e\x35\x20\x35\
-\x2e\x4d\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\
-\x2e\x2f\x20\x62\x20\x76\x20\x7c\x2e\x7a\x58\x5e\x2e\x5e\x2e\x5e\
-\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x7e\x2e\x6b\
-\x2e\x30\x20\x3c\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x4b\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\
-\x2e\x48\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\
-\x2e\x30\x20\x38\x20\x3e\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x71\x2e\x7b\x2e\x62\x20\x62\x20\x5b\x2e\x7a\x58\x5e\
-\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x28\x2e\x2a\x58\x25\
-\x58\x7d\x20\x60\x20\x65\x20\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x68\x58\x65\x58\x65\x58\x26\
-\x58\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\
-\x2e\x53\x2e\x48\x2e\x3e\x2e\x32\x20\x30\x2e\x4d\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x59\x58\x6b\x58\x42\x20\x5b\
-\x2e\x7a\x58\x7b\x2e\x7b\x2e\x7b\x2e\x24\x58\x2b\x2e\x4f\x2e\x23\
-\x2e\x23\x2e\x4f\x2e\x5b\x20\x3d\x20\x56\x2e\x50\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x6d\x58\x6e\
-\x58\x6e\x58\x6d\x58\x6d\x58\x26\x58\x61\x2e\x61\x2e\x61\x2e\x61\
-\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x69\x2e\x35\x20\x3b\x2e\x36\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x59\x58\x42\
-\x58\x42\x58\x4d\x58\x7a\x58\x7b\x2e\x7b\x2e\x7b\x2e\x4f\x2e\x4f\
-\x2e\x23\x2e\x23\x2e\x24\x2e\x6f\x2e\x7b\x20\x36\x20\x71\x58\x68\
-\x58\x44\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x47\
-\x58\x6d\x58\x6e\x58\x76\x58\x62\x58\x47\x58\x4c\x58\x26\x58\x61\
-\x2e\x61\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x4c\x2e\x36\
-\x20\x2d\x20\x3e\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x30\
-\x2e\x42\x58\x42\x58\x4d\x58\x4d\x58\x7a\x58\x7b\x2e\x7b\x2e\x7b\
-\x2e\x4f\x2e\x23\x2e\x23\x2e\x24\x2e\x24\x2e\x6f\x2e\x27\x20\x65\
-\x20\x74\x58\x74\x58\x74\x58\x74\x58\x6a\x58\x44\x58\x50\x58\x50\
-\x58\x4c\x58\x47\x58\x4c\x58\x30\x58\x65\x2e\x70\x2e\x26\x58\x4c\
-\x58\x4a\x58\x53\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\
-\x58\x71\x58\x39\x20\x2a\x20\x3b\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x30\x2e\x42\x58\x4d\x58\x4d\x58\x4d\x58\x7a\x58\x2b\
-\x58\x2b\x58\x2b\x58\x58\x2e\x25\x2e\x40\x2e\x24\x2e\x24\x2e\x6f\
-\x2e\x5d\x20\x74\x2e\x74\x58\x74\x58\x74\x58\x74\x58\x74\x58\x74\
-\x58\x75\x58\x44\x58\x4c\x58\x4c\x58\x3c\x58\x30\x20\x5a\x20\x30\
-\x20\x65\x2e\x75\x58\x50\x58\x71\x58\x53\x2e\x48\x2e\x4c\x2e\x4c\
-\x2e\x71\x58\x71\x58\x74\x58\x43\x20\x2b\x20\x30\x2e\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\
-\x58\x73\x58\x2b\x58\x2b\x58\x2b\x58\x20\x2e\x20\x2e\x20\x2e\x2e\
-\x2e\x26\x2e\x6f\x2e\x5f\x20\x75\x2e\x74\x58\x74\x58\x74\x58\x74\
-\x58\x74\x58\x74\x58\x74\x58\x44\x58\x4c\x58\x75\x58\x39\x20\x3d\
-\x58\x2b\x58\x5f\x2e\x36\x20\x4c\x2e\x50\x58\x68\x58\x48\x2e\x4c\
-\x2e\x71\x58\x71\x58\x74\x58\x72\x58\x67\x58\x3a\x2e\x2b\x20\x35\
-\x2e\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x4d\
-\x58\x4d\x58\x4d\x58\x73\x58\x40\x58\x40\x58\x40\x58\x20\x2e\x20\
-\x2e\x20\x2e\x20\x2e\x6c\x20\x7c\x20\x5f\x20\x4a\x2e\x74\x58\x74\
-\x58\x74\x58\x74\x58\x74\x58\x74\x58\x74\x58\x4a\x58\x4c\x58\x41\
-\x2e\x2d\x2e\x2d\x58\x40\x58\x40\x58\x36\x20\x70\x58\x50\x58\x53\
-\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x3a\
-\x2e\x2b\x20\x35\x2e\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\
-\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\x58\x61\x58\x40\x58\x40\x58\x40\
-\x58\x63\x20\x63\x20\x63\x20\x63\x20\x67\x20\x74\x20\x24\x20\x4b\
-\x2e\x68\x58\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x44\
-\x58\x4c\x58\x70\x2e\x37\x20\x2d\x58\x40\x58\x64\x2e\x39\x20\x53\
-\x58\x50\x58\x48\x58\x4e\x58\x4e\x58\x4e\x58\x4e\x58\x4e\x58\x4e\
-\x58\x4e\x58\x3a\x2e\x2b\x20\x35\x2e\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x35\x2e\x4d\x58\x4d\x58\x4d\x58\x36\x58\x61\x58\x23\
-\x58\x23\x58\x23\x58\x78\x20\x78\x20\x78\x20\x78\x20\x64\x20\x74\
-\x20\x24\x20\x4b\x2e\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\
-\x2e\x4c\x2e\x5a\x58\x4c\x58\x26\x58\x72\x20\x39\x20\x43\x20\x36\
-\x20\x3c\x58\x4c\x58\x50\x58\x4a\x58\x53\x58\x53\x58\x53\x58\x53\
-\x58\x53\x58\x53\x58\x53\x58\x36\x20\x6f\x20\x30\x2e\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x4d\x58\x36\x58\x36\
-\x58\x61\x58\x6c\x58\x6c\x58\x6c\x58\x7a\x20\x7a\x20\x7a\x20\x7a\
-\x20\x64\x20\x74\x20\x23\x20\x75\x2e\x74\x58\x74\x58\x71\x58\x26\
-\x58\x4c\x2e\x4c\x2e\x48\x2e\x26\x58\x4c\x58\x6d\x58\x48\x2e\x72\
-\x2e\x72\x2e\x20\x58\x47\x58\x4c\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x4a\x58\x4a\x58\x4a\x58\x4a\x58\x69\x58\x35\x20\x25\x20\x3b\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x36\
-\x58\x36\x58\x36\x58\x61\x58\x6c\x58\x6c\x58\x6c\x58\x6b\x20\x6b\
-\x20\x6b\x20\x6b\x20\x61\x20\x74\x20\x66\x20\x3e\x2e\x74\x58\x71\
-\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x75\x58\x47\
-\x58\x6d\x58\x76\x58\x76\x58\x6d\x58\x47\x58\x4c\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x76\x2e\x40\
-\x20\x2d\x20\x3e\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x35\
-\x2e\x36\x58\x36\x58\x36\x58\x36\x58\x61\x58\x63\x58\x63\x58\x63\
-\x58\x67\x20\x67\x20\x67\x20\x67\x20\x70\x20\x74\x20\x75\x20\x65\
-\x20\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x61\
-\x2e\x61\x2e\x26\x58\x62\x58\x6e\x58\x6e\x58\x6d\x58\x62\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x65\x20\x58\x20\x3d\x2e\x35\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3b\x58\x33\x2e\x36\x58\x36\x58\x36\x58\x36\x58\x61\x58\x63\
-\x58\x63\x58\x63\x58\x64\x20\x64\x20\x64\x20\x64\x20\x70\x20\x74\
-\x20\x74\x20\x35\x20\x41\x2e\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\
-\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x4c\x2e\x26\x58\x4c\
-\x2e\x71\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x3c\x58\x35\x20\x6f\x20\x35\x2e\x4d\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x3b\x58\x33\x58\x36\x58\x35\
-\x58\x73\x58\x63\x58\x63\x58\x63\x58\x61\x20\x61\x20\x61\x20\x61\
-\x20\x70\x20\x74\x20\x74\x20\x23\x20\x3e\x2e\x4c\x2e\x48\x2e\x53\
-\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\
-\x2e\x4c\x2e\x71\x58\x71\x58\x44\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x65\x20\x4f\x20\x2d\x20\x3e\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x3b\x58\x3b\
-\x2e\x30\x2e\x33\x58\x78\x58\x63\x58\x63\x58\x63\x58\x69\x20\x69\
-\x20\x69\x20\x69\x20\x69\x20\x74\x20\x74\x20\x79\x20\x36\x20\x53\
-\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x48\
-\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x6a\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x42\x2e\x32\x20\x2e\x20\x33\
-\x2e\x36\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x33\
-\x2e\x3e\x58\x3e\x58\x30\x2e\x77\x2e\x78\x58\x46\x58\x46\x58\x46\
-\x58\x74\x20\x74\x20\x74\x20\x74\x20\x73\x20\x6a\x20\x56\x20\x41\
-\x20\x49\x20\x72\x20\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\
-\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x68\x58\x6a\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x64\x58\x36\x20\x20\
-\x20\x3a\x20\x3e\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3b\x58\x33\x2e\x30\x2e\x33\x2e\x3b\x58\x33\x58\x78\x58\x46\
-\x58\x46\x58\x46\x58\x68\x20\x21\x20\x50\x2e\x53\x58\x46\x58\x6c\
-\x58\x7e\x2e\x7e\x2e\x45\x2e\x30\x20\x65\x2e\x61\x2e\x61\x2e\x53\
-\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x68\
-\x58\x6a\x58\x6a\x58\x44\x58\x50\x58\x50\x58\x50\x58\x4e\x58\x39\
-\x20\x4f\x20\x26\x20\x30\x2e\x4d\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x35\x58\x77\x2e\x3b\x2e\x3b\
-\x58\x78\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\
-\x58\x46\x58\x46\x58\x5e\x2e\x5e\x2e\x5e\x2e\x68\x2e\x30\x20\x72\
-\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\
-\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x50\x58\x50\x58\x4e\
-\x58\x39\x20\x4f\x20\x25\x20\x33\x2e\x36\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x33\x58\x2a\x2e\x3b\x58\x33\
-\x58\x3e\x58\x3e\x58\x78\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x4b\
-\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x63\x58\x5e\x2e\x5e\x2e\x5e\
-\x2e\x73\x2e\x36\x20\x72\x20\x53\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\
-\x58\x74\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x44\x58\x50\
-\x58\x42\x2e\x36\x20\x4f\x20\x25\x20\x33\x2e\x33\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x42\x58\x30\
-\x2e\x2d\x20\x30\x2e\x33\x58\x33\x58\x4d\x58\x4b\x58\x4b\x58\x4b\
-\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x42\x58\x3b\x58\x2c\
-\x2e\x38\x20\x25\x20\x6f\x20\x58\x20\x32\x20\x30\x20\x69\x2e\x71\
-\x58\x71\x58\x74\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x43\
-\x58\x5a\x2e\x65\x20\x32\x20\x20\x20\x25\x20\x33\x2e\x33\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x59\x58\x36\x58\x35\x2e\x26\x20\x3b\x2e\x3e\x58\x4d\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x35\x58\x77\x2e\x3b\x2e\x3a\x20\x25\
-\x20\x2e\x20\x2e\x20\x2e\x20\x6f\x20\x26\x20\x2a\x2e\x3d\x2e\x38\
-\x20\x35\x20\x30\x20\x3e\x2e\x75\x2e\x4b\x2e\x4b\x2e\x37\x58\x76\
-\x2e\x3e\x2e\x36\x20\x35\x20\x4f\x20\x2e\x20\x3a\x20\x35\x2e\x36\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x59\x58\x59\x58\x4d\x58\x77\x2e\x2d\x20\x3a\
-\x20\x36\x58\x3e\x58\x30\x2e\x3d\x2e\x25\x20\x6f\x20\x2e\x20\x2e\
-\x20\x6f\x20\x25\x20\x2d\x20\x3d\x2e\x33\x2e\x77\x2e\x3e\x58\x33\
-\x58\x35\x58\x3e\x58\x33\x2e\x3b\x20\x2a\x20\x32\x20\x32\x20\x32\
-\x20\x32\x20\x40\x20\x2b\x20\x58\x20\x6f\x20\x2d\x20\x33\x2e\x3e\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x4d\
-\x58\x3e\x58\x2a\x2e\x25\x20\x6f\x20\x2e\x20\x2e\x20\x6f\x20\x26\
-\x20\x3a\x20\x3b\x2e\x35\x2e\x3b\x58\x3e\x58\x35\x58\x36\x58\x42\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x36\x58\x3e\x58\x30\x2e\x3b\
-\x2e\x2a\x2e\x3a\x20\x3a\x20\x3a\x20\x2a\x2e\x3b\x2e\x30\x2e\x3e\
-\x58\x36\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x42\x58\x33\x58\x35\x2e\x2a\x2e\x3d\x2e\x3b\
-\x2e\x30\x2e\x3b\x58\x33\x58\x36\x58\x4d\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x4d\x58\x36\x58\x33\x58\x33\x58\x33\x58\x33\x58\x33\x58\x36\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x0a\x7d\x3b\x0a\
-"
-
-qt_resource_name = "\
-\x00\x07\
-\x07\x3b\xe0\xb3\
-\x00\x70\
-\x00\x6c\x00\x75\x00\x67\x00\x69\x00\x6e\x00\x73\
-\x00\x09\
-\x0a\xa8\xd2\x62\
-\x00\x69\
-\x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6c\x00\x6c\x00\x65\x00\x72\
-\x00\x08\
-\x0a\x61\x52\x8d\
-\x00\x69\
-\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x78\x00\x70\x00\x6d\
-"
-
-qt_resource_struct = "\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
-\x00\x00\x00\x14\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
-\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-"
-
-def qInitResources():
- QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
- QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()
More information about the QGIS-commit
mailing list