aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quickcontrols
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quickcontrols')
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml82
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactDialog.qml45
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml72
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactList.qml70
-rw-r--r--examples/quickcontrols/contactslist/Contact/ContactView.ui.qml36
-rw-r--r--examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml17
-rw-r--r--examples/quickcontrols/contactslist/Contact/qmldir7
-rw-r--r--examples/quickcontrols/contactslist/contactlist.pyproject10
-rw-r--r--examples/quickcontrols/contactslist/contactmodel.py116
-rw-r--r--examples/quickcontrols/contactslist/doc/contactslist.rst15
-rw-r--r--examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.pngbin0 -> 23581 bytes
-rw-r--r--examples/quickcontrols/contactslist/main.py28
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml185
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc15
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc14
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg2
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg43
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg26
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg38
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg6
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml93
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml23
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml160
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml156
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml45
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml177
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml23
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml138
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml16
-rw-r--r--examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir11
-rw-r--r--examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst52
-rw-r--r--examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webpbin0 -> 47416 bytes
-rw-r--r--examples/quickcontrols/filesystemexplorer/editormodels.py116
-rw-r--r--examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject29
-rw-r--r--examples/quickcontrols/filesystemexplorer/main.py48
-rw-r--r--examples/quickcontrols/gallery/+Material/ToolBar.qml8
-rw-r--r--examples/quickcontrols/gallery/ToolBar.qml6
-rw-r--r--examples/quickcontrols/gallery/doc/gallery.pngbin0 -> 23828 bytes
-rw-r--r--examples/quickcontrols/gallery/doc/gallery.rst9
-rw-r--r--examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-drawer.pngbin0 -> 15428 bytes
-rw-r--r--examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-menu.pngbin0 -> 15953 bytes
-rw-r--r--examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-welcome.pngbin0 -> 18513 bytes
-rw-r--r--examples/quickcontrols/gallery/gallery.py52
-rw-r--r--examples/quickcontrols/gallery/gallery.pyproject36
-rw-r--r--examples/quickcontrols/gallery/gallery.qml318
-rw-r--r--examples/quickcontrols/gallery/gallery.qrc61
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20/back.pngbin0 -> 146 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20/drawer.pngbin0 -> 123 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20/menu.pngbin0 -> 123 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@2/back.pngbin0 -> 184 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@2/drawer.pngbin0 -> 126 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@2/menu.pngbin0 -> 158 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@3/back.pngbin0 -> 227 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@3/drawer.pngbin0 -> 130 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@3/menu.pngbin0 -> 193 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@4/back.pngbin0 -> 246 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@4/drawer.pngbin0 -> 131 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/20x20@4/menu.pngbin0 -> 223 bytes
-rw-r--r--examples/quickcontrols/gallery/icons/gallery/index.theme24
-rw-r--r--examples/quickcontrols/gallery/images/arrow.pngbin0 -> 319 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrow@2x.pngbin0 -> 476 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrow@3x.pngbin0 -> 611 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrow@4x.pngbin0 -> 758 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows.pngbin0 -> 458 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows@2x.pngbin0 -> 699 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows@3x.pngbin0 -> 942 bytes
-rw-r--r--examples/quickcontrols/gallery/images/arrows@4x.pngbin0 -> 1211 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo.pngbin0 -> 2849 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo@2x.pngbin0 -> 4936 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo@3x.pngbin0 -> 7254 bytes
-rw-r--r--examples/quickcontrols/gallery/images/qt-logo@4x.pngbin0 -> 9505 bytes
-rw-r--r--examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml28
-rw-r--r--examples/quickcontrols/gallery/pages/ButtonPage.qml44
-rw-r--r--examples/quickcontrols/gallery/pages/CheckBoxPage.qml40
-rw-r--r--examples/quickcontrols/gallery/pages/ComboBoxPage.qml51
-rw-r--r--examples/quickcontrols/gallery/pages/DelayButtonPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/DelegatePage.qml201
-rw-r--r--examples/quickcontrols/gallery/pages/DialPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/DialogPage.qml179
-rw-r--r--examples/quickcontrols/gallery/pages/FramePage.qml47
-rw-r--r--examples/quickcontrols/gallery/pages/GroupBoxPage.qml48
-rw-r--r--examples/quickcontrols/gallery/pages/PageIndicatorPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/ProgressBarPage.qml33
-rw-r--r--examples/quickcontrols/gallery/pages/RadioButtonPage.qml39
-rw-r--r--examples/quickcontrols/gallery/pages/RangeSliderPage.qml35
-rw-r--r--examples/quickcontrols/gallery/pages/ScrollBarPage.qml40
-rw-r--r--examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml40
-rw-r--r--examples/quickcontrols/gallery/pages/ScrollablePage.qml24
-rw-r--r--examples/quickcontrols/gallery/pages/SliderPage.qml33
-rw-r--r--examples/quickcontrols/gallery/pages/SpinBoxPage.qml29
-rw-r--r--examples/quickcontrols/gallery/pages/StackViewPage.qml58
-rw-r--r--examples/quickcontrols/gallery/pages/SwipeViewPage.qml49
-rw-r--r--examples/quickcontrols/gallery/pages/SwitchPage.qml39
-rw-r--r--examples/quickcontrols/gallery/pages/TabBarPage.qml57
-rw-r--r--examples/quickcontrols/gallery/pages/TextAreaPage.qml29
-rw-r--r--examples/quickcontrols/gallery/pages/TextFieldPage.qml27
-rw-r--r--examples/quickcontrols/gallery/pages/ToolTipPage.qml30
-rw-r--r--examples/quickcontrols/gallery/pages/TumblerPage.qml26
-rw-r--r--examples/quickcontrols/gallery/qmldir1
-rw-r--r--examples/quickcontrols/gallery/qtquickcontrols2.conf8
-rw-r--r--examples/quickcontrols/gallery/rc_gallery.py4410
106 files changed, 8344 insertions, 0 deletions
diff --git a/examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml b/examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml
new file mode 100644
index 000000000..affcccc3e
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactDelegate.ui.qml
@@ -0,0 +1,82 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+ItemDelegate {
+ id: delegate
+
+ checkable: true
+
+ contentItem: ColumnLayout {
+ spacing: 10
+
+ Label {
+ text: fullName
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+
+ GridLayout {
+ id: grid
+ visible: false
+
+ columns: 2
+ rowSpacing: 10
+ columnSpacing: 10
+
+ Label {
+ text: qsTr("Address:")
+ Layout.leftMargin: 60
+ }
+
+ Label {
+ text: address
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+
+ Label {
+ text: qsTr("City:")
+ Layout.leftMargin: 60
+ }
+
+ Label {
+ text: city
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+
+ Label {
+ text: qsTr("Number:")
+ Layout.leftMargin: 60
+ }
+
+ Label {
+ text: number
+ font.bold: true
+ elide: Text.ElideRight
+ Layout.fillWidth: true
+ }
+ }
+ }
+
+ states: [
+ State {
+ name: "expanded"
+ when: delegate.checked
+
+ PropertyChanges {
+ // TODO: When Qt Design Studio supports generalized grouped properties, change to:
+ // grid.visible: true
+ target: grid
+ visible: true
+ }
+ }
+ ]
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactDialog.qml b/examples/quickcontrols/contactslist/Contact/ContactDialog.qml
new file mode 100644
index 000000000..d906f00e6
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactDialog.qml
@@ -0,0 +1,45 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Dialog {
+ id: dialog
+
+ signal finished(string fullName, string address, string city, string number)
+
+ function createContact() {
+ form.fullName.clear();
+ form.address.clear();
+ form.city.clear();
+ form.number.clear();
+
+ dialog.title = qsTr("Add Contact");
+ dialog.open();
+ }
+
+ function editContact(contact) {
+ form.fullName.text = contact.fullName;
+ form.address.text = contact.address;
+ form.city.text = contact.city;
+ form.number.text = contact.number;
+
+ dialog.title = qsTr("Edit Contact");
+ dialog.open();
+ }
+
+ x: parent.width / 2 - width / 2
+ y: parent.height / 2 - height / 2
+
+ focus: true
+ modal: true
+ title: qsTr("Add Contact")
+ standardButtons: Dialog.Ok | Dialog.Cancel
+
+ contentItem: ContactForm {
+ id: form
+ }
+
+ onAccepted: finished(form.fullName.text, form.address.text, form.city.text, form.number.text)
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml b/examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml
new file mode 100644
index 000000000..56c918619
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactForm.ui.qml
@@ -0,0 +1,72 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+GridLayout {
+ id: grid
+ property alias fullName: fullName
+ property alias address: address
+ property alias city: city
+ property alias number: number
+ property int minimumInputSize: 120
+ property string placeholderText: qsTr("<enter>")
+
+ rows: 4
+ columns: 2
+
+ Label {
+ text: qsTr("Full Name")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: fullName
+ focus: true
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+
+ Label {
+ text: qsTr("Address")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: address
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+
+ Label {
+ text: qsTr("City")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: city
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+
+ Label {
+ text: qsTr("Number")
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ }
+
+ TextField {
+ id: number
+ Layout.fillWidth: true
+ Layout.minimumWidth: grid.minimumInputSize
+ Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
+ placeholderText: grid.placeholderText
+ }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactList.qml b/examples/quickcontrols/contactslist/Contact/ContactList.qml
new file mode 100644
index 000000000..0b7af32b5
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactList.qml
@@ -0,0 +1,70 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ApplicationWindow {
+ id: window
+
+ property int currentContact: -1
+
+ width: 320
+ height: 480
+ visible: true
+ title: qsTr("Contact List")
+
+ ContactDialog {
+ id: contactDialog
+ onFinished: function(fullName, address, city, number) {
+ if (currentContact == -1)
+ contactView.model.append(fullName, address, city, number)
+ else
+ contactView.model.set(currentContact, fullName, address, city, number)
+ }
+ }
+
+ Menu {
+ id: contactMenu
+ x: parent.width / 2 - width / 2
+ y: parent.height / 2 - height / 2
+ modal: true
+
+ Label {
+ padding: 10
+ font.bold: true
+ width: parent.width
+ horizontalAlignment: Qt.AlignHCenter
+ text: currentContact >= 0 ? contactView.model.get(currentContact).fullName : ""
+ }
+ MenuItem {
+ text: qsTr("Edit...")
+ onTriggered: contactDialog.editContact(contactView.model.get(currentContact))
+ }
+ MenuItem {
+ text: qsTr("Remove")
+ onTriggered: contactView.model.remove(currentContact)
+ }
+ }
+
+ ContactView {
+ id: contactView
+ anchors.fill: parent
+ onPressAndHold: {
+ currentContact = index
+ contactMenu.open()
+ }
+ }
+
+ RoundButton {
+ text: qsTr("+")
+ highlighted: true
+ anchors.margins: 10
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ onClicked: {
+ currentContact = -1
+ contactDialog.createContact()
+ }
+ }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/ContactView.ui.qml b/examples/quickcontrols/contactslist/Contact/ContactView.ui.qml
new file mode 100644
index 000000000..3b82b681e
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/ContactView.ui.qml
@@ -0,0 +1,36 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+import Backend
+
+ListView {
+ id: listView
+
+ signal pressAndHold(int index)
+
+ width: 320
+ height: 480
+
+ focus: true
+ boundsBehavior: Flickable.StopAtBounds
+
+ section.property: "fullName"
+ section.criteria: ViewSection.FirstCharacter
+ section.delegate: SectionDelegate {
+ width: listView.width
+ }
+
+ delegate: ContactDelegate {
+ id: delegate
+ width: listView.width
+ onPressAndHold: listView.pressAndHold(index)
+ }
+
+ model: ContactModel {
+ id: contactModel
+ }
+
+ ScrollBar.vertical: ScrollBar { }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml b/examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml
new file mode 100644
index 000000000..3a62409a8
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/SectionDelegate.ui.qml
@@ -0,0 +1,17 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ToolBar {
+ id: background
+
+ Label {
+ id: label
+ text: section
+ anchors.fill: parent
+ horizontalAlignment: Qt.AlignHCenter
+ verticalAlignment: Qt.AlignVCenter
+ }
+}
diff --git a/examples/quickcontrols/contactslist/Contact/qmldir b/examples/quickcontrols/contactslist/Contact/qmldir
new file mode 100644
index 000000000..339d45a1d
--- /dev/null
+++ b/examples/quickcontrols/contactslist/Contact/qmldir
@@ -0,0 +1,7 @@
+module Contact
+ContactList 1.0 ContactList.qml
+ContactDialog 1.0 ContactDialog.qml
+ContactDelegate 1.0 ContactDelegate.ui.qml
+ContactForm 1.0 ContactForm.ui.qml
+ContactView 1.0 ContactView.ui.qml
+SectionDelegate 1.0 SectionDelegate.ui.qml
diff --git a/examples/quickcontrols/contactslist/contactlist.pyproject b/examples/quickcontrols/contactslist/contactlist.pyproject
new file mode 100644
index 000000000..75b0bd693
--- /dev/null
+++ b/examples/quickcontrols/contactslist/contactlist.pyproject
@@ -0,0 +1,10 @@
+{
+ "files": ["main.py",
+ "contactmodel.py",
+ "Contact/ContactDialog.qml",
+ "Contact/ContactDelegate.ui.qml",
+ "Contact/ContactForm.ui.qml",
+ "Contact/ContactList.qml",
+ "Contact/ContactView.ui.qml",
+ "Contact/SectionDelegate.ui.qml"]
+}
diff --git a/examples/quickcontrols/contactslist/contactmodel.py b/examples/quickcontrols/contactslist/contactmodel.py
new file mode 100644
index 000000000..5d2746c2e
--- /dev/null
+++ b/examples/quickcontrols/contactslist/contactmodel.py
@@ -0,0 +1,116 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import bisect
+from dataclasses import dataclass
+from enum import IntEnum
+
+from PySide6.QtCore import (QAbstractListModel, QEnum, Qt, QModelIndex, Slot,
+ QByteArray)
+from PySide6.QtQml import QmlElement
+
+QML_IMPORT_NAME = "Backend"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+class ContactModel(QAbstractListModel):
+
+ @QEnum
+ class ContactRole(IntEnum):
+ FullNameRole = Qt.DisplayRole
+ AddressRole = Qt.UserRole
+ CityRole = Qt.UserRole + 1
+ NumberRole = Qt.UserRole + 2
+
+ @dataclass
+ class Contact:
+ fullName: str
+ address: str
+ city: str
+ number: str
+
+ def __init__(self, parent=None) -> None:
+ super().__init__(parent)
+ self.m_contacts = []
+ self.m_contacts.append(self.Contact("Angel Hogan", "Chapel St. 368 ", "Clearwater",
+ "0311 1823993"))
+ self.m_contacts.append(self.Contact("Felicia Patton", "Annadale Lane 2", "Knoxville",
+ "0368 1244494"))
+ self.m_contacts.append(self.Contact("Grant Crawford", "Windsor Drive 34", "Riverdale",
+ "0351 7826892"))
+ self.m_contacts.append(self.Contact("Gretchen Little", "Sunset Drive 348", "Virginia Beach",
+ "0343 1234991"))
+ self.m_contacts.append(self.Contact("Geoffrey Richards", "University Lane 54", "Trussville",
+ "0423 2144944"))
+ self.m_contacts.append(self.Contact("Henrietta Chavez", "Via Volto San Luca 3",
+ "Piobesi Torinese", "0399 2826994"))
+ self.m_contacts.append(self.Contact("Harvey Chandler", "North Squaw Creek 11",
+ "Madisonville", "0343 1244492"))
+ self.m_contacts.append(self.Contact("Miguel Gomez", "Wild Rose Street 13", "Trussville",
+ "0343 9826996"))
+ self.m_contacts.append(self.Contact("Norma Rodriguez", " Glen Eagles Street 53",
+ "Buffalo", "0241 5826596"))
+ self.m_contacts.append(self.Contact("Shelia Ramirez", "East Miller Ave 68", "Pickerington",
+ "0346 4844556"))
+ self.m_contacts.append(self.Contact("Stephanie Moss", "Piazza Trieste e Trento 77",
+ "Roata Chiusani", "0363 0510490"))
+
+ def rowCount(self, parent=QModelIndex()):
+ return len(self.m_contacts)
+
+ def data(self, index: QModelIndex, role: int):
+ row = index.row()
+ if row < self.rowCount():
+ if role == ContactModel.ContactRole.FullNameRole:
+ return self.m_contacts[row].fullName
+ elif role == ContactModel.ContactRole.AddressRole:
+ return self.m_contacts[row].address
+ elif role == ContactModel.ContactRole.CityRole:
+ return self.m_contacts[row].city
+ elif role == ContactModel.ContactRole.NumberRole:
+ return self.m_contacts[row].number
+
+ def roleNames(self):
+ default = super().roleNames()
+ default[ContactModel.ContactRole.FullNameRole] = QByteArray(b"fullName")
+ default[ContactModel.ContactRole.AddressRole] = QByteArray(b"address")
+ default[ContactModel.ContactRole.CityRole] = QByteArray(b"city")
+ default[ContactModel.ContactRole.NumberRole] = QByteArray(b"number")
+ return default
+
+ @Slot(int)
+ def get(self, row: int):
+ contact = self.m_contacts[row]
+ return {"fullName": contact.fullName, "address": contact.address,
+ "city": contact.city, "number": contact.number}
+
+ @Slot(str, str, str, str)
+ def append(self, full_name: str, address: str, city: str, number: str):
+ contact = self.Contact(full_name, address, city, number)
+ contact_names = [contact.fullName for contact in self.m_contacts]
+ index = bisect.bisect(contact_names, contact.fullName)
+ self.beginInsertRows(QModelIndex(), index, index)
+ self.m_contacts.insert(index, contact)
+ self.endInsertRows()
+
+ @Slot(int, str, str, str, str)
+ def set(self, row: int, full_name: str, address: str, city: str, number: str):
+ if row < 0 or row >= len(self.m_contacts):
+ return
+
+ self.m_contacts[row] = self.Contact(full_name, address, city, number)
+ self.dataChanged(self.index(row, 0), self.index(row, 0),
+ [ContactModel.ContactRole.FullNameRole,
+ ContactModel.ContactRole.AddressRole,
+ ContactModel.ContactRole.CityRole,
+ ContactModel.ContactRole.NumberRole])
+
+ @Slot(int)
+ def remove(self, row):
+ if row < 0 or row >= len(self.m_contacts):
+ return
+
+ self.beginRemoveRows(QModelIndex(), row, row)
+ del self.m_contacts[row]
+ self.endRemoveRows()
diff --git a/examples/quickcontrols/contactslist/doc/contactslist.rst b/examples/quickcontrols/contactslist/doc/contactslist.rst
new file mode 100644
index 000000000..b5540e39b
--- /dev/null
+++ b/examples/quickcontrols/contactslist/doc/contactslist.rst
@@ -0,0 +1,15 @@
+Qt Quick Controls - Contact List
+================================
+
+.. tags:: Android
+
+A QML app using Qt Quick Controls and a Python class that implements a simple
+contact list. This example can also be deployed to Android using
+**pyside6-android-deploy**
+
+A PySide6 application that demonstrates the analogous example in Qt
+`ContactsList <https://doc.qt.io/qt-6.6/qtquickcontrols-contactlist-example.html>`_
+
+.. image:: qtquickcontrols-contactlist.png
+ :width: 400
+ :alt: ContactList Screenshot
diff --git a/examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.png b/examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.png
new file mode 100644
index 000000000..9f1c30654
--- /dev/null
+++ b/examples/quickcontrols/contactslist/doc/qtquickcontrols-contactlist.png
Binary files differ
diff --git a/examples/quickcontrols/contactslist/main.py b/examples/quickcontrols/contactslist/main.py
new file mode 100644
index 000000000..d501bbdb4
--- /dev/null
+++ b/examples/quickcontrols/contactslist/main.py
@@ -0,0 +1,28 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+PySide6 port of Qt Quick Controls Contact List example from Qt v6.x
+"""
+import sys
+from pathlib import Path
+from PySide6.QtGui import QGuiApplication
+from PySide6.QtQml import QQmlApplicationEngine
+
+from contactmodel import ContactModel # noqa: F401
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ app.setOrganizationName("QtProject")
+ app.setApplicationName("ContactsList")
+ engine = QQmlApplicationEngine()
+
+ engine.addImportPath(Path(__file__).parent)
+ engine.loadFromModule("Contact", "ContactList")
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ ex = app.exec()
+ del engine
+ sys.exit(ex)
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml
new file mode 100644
index 000000000..7f7798ed8
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/Main.qml
@@ -0,0 +1,185 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls.Basic
+import QtQuick.Layouts
+import FileSystemModule
+
+pragma ComponentBehavior: Bound
+
+ApplicationWindow {
+ id: root
+
+ property bool expandPath: false
+ property bool showLineNumbers: true
+ property string currentFilePath: ""
+
+ width: 1100
+ height: 600
+ minimumWidth: 200
+ minimumHeight: 100
+ visible: true
+ color: Colors.background
+ flags: Qt.Window | Qt.FramelessWindowHint
+ title: qsTr("File System Explorer Example")
+
+ function getInfoText() : string {
+ let out = root.currentFilePath
+ if (!out)
+ return qsTr("File System Explorer")
+ return root.expandPath ? out : out.substring(out.lastIndexOf("/") + 1, out.length)
+ }
+
+ menuBar: MyMenuBar {
+ dragWindow: root
+ infoText: root.getInfoText()
+ MyMenu {
+ title: qsTr("File")
+
+ Action {
+ text: qsTr("Increase Font")
+ shortcut: StandardKey.ZoomIn
+ onTriggered: editor.text.font.pixelSize += 1
+ }
+ Action {
+ text: qsTr("Decrease Font")
+ shortcut: StandardKey.ZoomOut
+ onTriggered: editor.text.font.pixelSize -= 1
+ }
+ Action {
+ text: root.showLineNumbers ? qsTr("Toggle Line Numbers OFF")
+ : qsTr("Toggle Line Numbers ON")
+ shortcut: "Ctrl+L"
+ onTriggered: root.showLineNumbers = !root.showLineNumbers
+ }
+ Action {
+ text: root.expandPath ? qsTr("Toggle Short Path")
+ : qsTr("Toggle Expand Path")
+ enabled: root.currentFilePath
+ onTriggered: root.expandPath = !root.expandPath
+ }
+ Action {
+ text: qsTr("Reset Filesystem")
+ enabled: sidebar.currentTabIndex === 1
+ onTriggered: fileSystemView.rootIndex = undefined
+ }
+ Action {
+ text: qsTr("Exit")
+ onTriggered: Qt.exit(0)
+ shortcut: StandardKey.Quit
+ }
+ }
+
+ MyMenu {
+ title: qsTr("Edit")
+
+ Action {
+ text: qsTr("Cut")
+ shortcut: StandardKey.Cut
+ enabled: editor.text.selectedText.length > 0
+ onTriggered: editor.text.cut()
+ }
+ Action {
+ text: qsTr("Copy")
+ shortcut: StandardKey.Copy
+ enabled: editor.text.selectedText.length > 0
+ onTriggered: editor.text.copy()
+ }
+ Action {
+ text: qsTr("Paste")
+ shortcut: StandardKey.Paste
+ enabled: editor.text.canPaste
+ onTriggered: editor.text.paste()
+ }
+ Action {
+ text: qsTr("Select All")
+ shortcut: StandardKey.SelectAll
+ enabled: editor.text.length > 0
+ onTriggered: editor.text.selectAll()
+ }
+ Action {
+ text: qsTr("Undo")
+ shortcut: StandardKey.Undo
+ enabled: editor.text.canUndo
+ onTriggered: editor.text.undo()
+ }
+ }
+ }
+ // Set up the layout of the main components in a row:
+ // [ Sidebar, Navigation, Editor ]
+ RowLayout {
+ anchors.fill: parent
+ spacing: 0
+
+ // Stores the buttons that navigate the application.
+ Sidebar {
+ id: sidebar
+ dragWindow: root
+ Layout.preferredWidth: 50
+ Layout.fillHeight: true
+ }
+
+ // Allows resizing parts of the UI.
+ SplitView {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ // Customized handle to drag between the Navigation and the Editor.
+ handle: Rectangle {
+ implicitWidth: 10
+ color: SplitHandle.pressed ? Colors.color2 : Colors.background
+ border.color: SplitHandle.hovered ? Colors.color2 : Colors.background
+ opacity: SplitHandle.hovered || navigationView.width < 15 ? 1.0 : 0.0
+
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 1400
+ }
+ }
+ }
+
+ Rectangle {
+ id: navigationView
+ color: Colors.surface1
+ SplitView.preferredWidth: 250
+ SplitView.fillHeight: true
+ // The stack-layout provides different views, based on the
+ // selected buttons inside the sidebar.
+ StackLayout {
+ anchors.fill: parent
+ currentIndex: sidebar.currentTabIndex
+
+ // Shows the help text.
+ Text {
+ text: qsTr("This example shows how to use and visualize the file system.\n\n"
+ + "Customized Qt Quick Components have been used to achieve this look.\n\n"
+ + "You can edit the files but they won't be changed on the file system.\n\n"
+ + "Click on the folder icon to the left to get started.")
+ wrapMode: TextArea.Wrap
+ color: Colors.text
+ }
+
+ // Shows the files on the file system.
+ FileSystemView {
+ id: fileSystemView
+ color: Colors.surface1
+ onFileClicked: path => root.currentFilePath = path
+ }
+ }
+ }
+
+ // The main view that contains the editor.
+ Editor {
+ id: editor
+ showLineNumbers: root.showLineNumbers
+ currentFilePath: root.currentFilePath
+ SplitView.fillWidth: true
+ SplitView.fillHeight: true
+ }
+ }
+ }
+
+ ResizeButton {
+ resizeWindow: root
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc b/examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc
new file mode 100644
index 000000000..fec76fe67
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/app.qrc
@@ -0,0 +1,15 @@
+<RCC>
+ <qresource prefix="/qt/qml/FileSystemModule">
+ <file>qmldir</file>
+ <file>Main.qml</file>
+ <file>qml/About.qml</file>
+ <file>qml/Editor.qml</file>
+ <file>qml/Colors.qml</file>
+ <file>qml/FileSystemView.qml</file>
+ <file>qml/MyMenu.qml</file>
+ <file>qml/MyMenuBar.qml</file>
+ <file>qml/ResizeButton.qml</file>
+ <file>qml/Sidebar.qml</file>
+ <file>qml/WindowDragHandler.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc
new file mode 100644
index 000000000..97d8a3d79
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons.qrc
@@ -0,0 +1,14 @@
+<RCC>
+ <qresource>
+ <file>icons/app_icon.svg</file>
+ <file>icons/folder_closed.svg</file>
+ <file>icons/folder_open.svg</file>
+ <file>icons/generic_file.svg</file>
+ <file>icons/globe.svg</file>
+ <file>icons/info_sign.svg</file>
+ <file>icons/light_bulb.svg</file>
+ <file>icons/qt_logo.svg</file>
+ <file>icons/read.svg</file>
+ <file>icons/resize.svg</file>
+ </qresource>
+</RCC>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg
new file mode 100644
index 000000000..5aae4221f
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/app_icon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="#EBDBB2" d="M13.25 8.5a.75.75 0 1 1-.75-.75.75.75 0 0 1 .75.75zM9.911 21.35l.816.578C10.819 21.798 13 18.666 13 13h-1a15.503 15.503 0 0 1-2.089 8.35zM4 6.703V10a2.002 2.002 0 0 1-2 2v1a2.002 2.002 0 0 1 2 2v3.297A3.707 3.707 0 0 0 7.703 22H9v-1H7.703A2.706 2.706 0 0 1 5 18.297V15a2.999 2.999 0 0 0-1.344-2.5A2.999 2.999 0 0 0 5 10V6.703A2.706 2.706 0 0 1 7.703 4H9V3H7.703A3.707 3.707 0 0 0 4 6.703zM20 10V6.703A3.707 3.707 0 0 0 16.297 3H15v1h1.297A2.706 2.706 0 0 1 19 6.703V10a2.999 2.999 0 0 0 1.344 2.5A2.999 2.999 0 0 0 19 15v3.297A2.706 2.706 0 0 1 16.297 21H15v1h1.297A3.707 3.707 0 0 0 20 18.297V15a2.002 2.002 0 0 1 2-2v-1a2.002 2.002 0 0 1-2-2z"/><path fill="none" d="M0 0h24v24H0z"/></svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg
new file mode 100644
index 000000000..36f119c96
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_closed.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg51"
+ sodipodi:docname="folder_closed.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs55" />
+ <sodipodi:namedview
+ id="namedview53"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.45033482"
+ inkscape:cx="842.70632"
+ inkscape:cy="896"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg51" />
+ <path
+ fill="currentColor"
+ d="m 1718,672 v 704 q 0,92 -66,158 -66,66 -158,66 H 278 q -92,0 -158,-66 -66,-66 -66,-158 V 416 q 0,-92 66,-158 66,-66 158,-66 h 320 q 92,0 158,66 66,66 66,158 v 32 h 672 q 92,0 158,66 66,66 66,158 z"
+ id="path49" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg
new file mode 100644
index 000000000..daa55a7a1
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/folder_open.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg139"
+ sodipodi:docname="folder_open.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs143" />
+ <sodipodi:namedview
+ id="namedview141"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.24358259"
+ inkscape:cx="149.84651"
+ inkscape:cy="1098.1901"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg139" />
+ <path
+ fill="currentColor"
+ d="M 1590,1376 V 672 q 0,-40 -28,-68 -28,-28 -68,-28 H 790 q -40,0 -68,-28 -28,-28 -28,-68 v -64 q 0,-40 -28,-68 -28,-28 -68,-28 H 278 q -40,0 -68,28 -28,28 -28,68 v 960 q 0,40 28,68 28,28 68,28 h 1216 q 40,0 68,-28 28,-28 28,-68 z m 128,-704 v 704 q 0,92 -66,158 -66,66 -158,66 H 278 q -92,0 -158,-66 -66,-66 -66,-158 V 416 q 0,-92 66,-158 66,-66 158,-66 h 320 q 92,0 158,66 66,66 66,158 v 32 h 672 q 92,0 158,66 66,66 66,158 z"
+ id="path137" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg
new file mode 100644
index 000000000..9c855676e
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/generic_file.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg147"
+ sodipodi:docname="generic_file.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs151" />
+ <sodipodi:namedview
+ id="namedview149"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.12179129"
+ inkscape:cx="-578.85911"
+ inkscape:cy="1687.3127"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg147" />
+ <path
+ fill="currentColor"
+ d="m 1586,476 q 14,14 28,36 H 1142 V 40 q 22,14 36,28 z m -476,164 h 544 v 1056 q 0,40 -28,68 -28,28 -68,28 H 214 q -40,0 -68,-28 -28,-28 -28,-68 V 96 Q 118,56 146,28 174,0 214,0 h 800 v 544 q 0,40 28,68 28,28 68,28 z m 160,736 v -64 q 0,-14 -9,-23 -9,-9 -23,-9 H 534 q -14,0 -23,9 -9,9 -9,23 v 64 q 0,14 9,23 9,9 23,9 h 704 q 14,0 23,-9 9,-9 9,-23 z m 0,-256 v -64 q 0,-14 -9,-23 -9,-9 -23,-9 H 534 q -14,0 -23,9 -9,9 -9,23 v 64 q 0,14 9,23 9,9 23,9 h 704 q 14,0 23,-9 9,-9 9,-23 z m 0,-256 v -64 q 0,-14 -9,-23 -9,-9 -23,-9 H 534 q -14,0 -23,9 -9,9 -9,23 v 64 q 0,14 9,23 9,9 23,9 h 704 q 14,0 23,-9 9,-9 9,-23 z"
+ id="path145" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg
new file mode 100644
index 000000000..081433813
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/globe.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg155"
+ sodipodi:docname="globe.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs159" />
+ <sodipodi:namedview
+ id="namedview157"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.12179129"
+ inkscape:cx="504.9622"
+ inkscape:cy="1720.1558"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg155" />
+ <path
+ fill="currentColor"
+ d="m 886,128 q 209,0 385.5,103 176.5,103 279.5,279.5 103,176.5 103,385.5 0,209 -103,385.5 Q 1448,1458 1271.5,1561 1095,1664 886,1664 677,1664 500.5,1561 324,1458 221,1281.5 118,1105 118,896 118,687 221,510.5 324,334 500.5,231 677,128 886,128 Z m 274,521 q -2,1 -9.5,9.5 -7.5,8.5 -13.5,9.5 2,0 4.5,-5 2.5,-5 5,-11 2.5,-6 3.5,-7 6,-7 22,-15 14,-6 52,-12 34,-8 51,11 -2,-2 9.5,-13 11.5,-11 14.5,-12 3,-2 15,-4.5 12,-2.5 15,-7.5 l 2,-22 q -12,1 -17.5,-7 -5.5,-8 -6.5,-21 0,2 -6,8 0,-7 -4.5,-8 -4.5,-1 -11.5,1 -7,2 -9,1 -10,-3 -15,-7.5 -5,-4.5 -8,-16.5 -3,-12 -4,-15 -2,-5 -9.5,-10.5 -7.5,-5.5 -9.5,-10.5 -1,-2 -2.5,-5.5 -1.5,-3.5 -3,-6.5 -1.5,-3 -4,-5.5 -2.5,-2.5 -5.5,-2.5 -3,0 -7,5 -4,5 -7.5,10 -3.5,5 -4.5,5 -3,-2 -6,-1.5 -3,0.5 -4.5,1 -1.5,0.5 -4.5,3 -3,2.5 -5,3.5 -3,2 -8.5,3 -5.5,1 -8.5,2 15,-5 -1,-11 -10,-4 -16,-3 9,-4 7.5,-12 -1.5,-8 -8.5,-14 h 5 q -1,-4 -8.5,-8.5 -7.5,-4.5 -17.5,-8.5 -10,-4 -13,-6 -8,-5 -34,-9.5 -26,-4.5 -33,-0.5 -5,6 -4.5,10.5 0.5,4.5 4,14 3.5,9.5 3.5,12.5 1,6 -5.5,13 -6.5,7 -6.5,12 0,7 14,15.5 14,8.5 10,21.5 -3,8 -16,16 -13,8 -16,12 -5,8 -1.5,18.5 3.5,10.5 10.5,16.5 2,2 1.5,4 -0.5,2 -3.5,4.5 -3,2.5 -5.5,4 -2.5,1.5 -6.5,3.5 l -3,2 q -11,5 -20.5,-6 -9.5,-11 -13.5,-26 -7,-25 -16,-30 -23,-8 -29,1 -5,-13 -41,-26 -25,-9 -58,-4 6,-1 0,-15 -7,-15 -19,-12 3,-6 4,-17.5 1,-11.5 1,-13.5 3,-13 12,-23 1,-1 7,-8.5 6,-7.5 9.5,-13.5 3.5,-6 0.5,-6 35,4 50,-11 5,-5 11.5,-17 6.5,-12 10.5,-17 9,-6 14,-5.5 5,0.5 14.5,5.5 9.5,5 14.5,5 14,1 15.5,-11 1.5,-12 -7.5,-20 12,1 3,-17 -5,-7 -8,-9 -12,-4 -27,5 -8,4 2,8 -1,-1 -9.5,10.5 Q 927,340 919,346 q -8,6 -16,-5 -1,-1 -5.5,-13.5 Q 893,315 888,314 q -8,0 -16,15 3,-8 -11,-15 -14,-7 -24,-8 19,-12 -8,-27 -7,-4 -20.5,-5 -13.5,-1 -19.5,4 -5,7 -5.5,11.5 -0.5,4.5 5,8 5.5,3.5 10.5,5.5 5,2 11.5,4 6.5,2 8.5,3 14,10 8,14 -2,1 -8.5,3.5 -6.5,2.5 -11.5,4.5 -5,2 -6,4 -3,4 0,14 3,10 -2,14 -5,-5 -9,-17.5 -4,-12.5 -7,-16.5 7,9 -25,6 l -10,-1 q -4,0 -16,2 -12,2 -20.5,1 -8.5,-1 -13.5,-8 -4,-8 0,-20 1,-4 4,-2 -4,-3 -11,-9.5 -7,-6.5 -10,-8.5 -46,15 -94,41 6,1 12,-1 5,-2 13,-6.5 8,-4.5 10,-5.5 34,-14 42,-7 l 5,-5 q 14,16 20,25 -7,-4 -30,-1 -20,6 -22,12 7,12 5,18 -4,-3 -11.5,-10 -7.5,-7 -14.5,-11 -7,-4 -15,-5 -16,0 -22,1 -146,80 -235,222 7,7 12,8 4,1 5,9 1,8 2.5,11 1.5,3 11.5,-3 9,8 3,19 1,-1 44,27 19,17 21,21 3,11 -10,18 -1,-2 -9,-9 -8,-7 -9,-4 -3,5 0.5,18.5 3.5,13.5 10.5,12.5 -7,0 -9.5,16 -2.5,16 -2.5,35.5 0,19.5 -1,23.5 l 2,1 q -3,12 5.5,34.5 8.5,22.5 21.5,19.5 -13,3 20,43 6,8 8,9 3,2 12,7.5 9,5.5 15,10 6,4.5 10,10.5 4,5 10,22.5 6,17.5 14,23.5 -2,6 9.5,20 11.5,14 10.5,23 -1,0 -2.5,1 -1.5,1 -2.5,1 3,7 15.5,14 12.5,7 15.5,13 1,3 2,10 1,7 3,11 2,4 8,2 2,-20 -24,-62 -15,-25 -17,-29 -3,-5 -5.5,-15.5 Q 541,919 539,915 q 2,0 6,1.5 4,1.5 8.5,3.5 4.5,2 7.5,4 3,2 2,3 -3,7 2,17.5 5,10.5 12,18.5 7,8 17,19 10,11 12,13 6,6 14,19.5 8,13.5 0,13.5 9,0 20,10 11,10 17,20 5,8 8,26 3,18 5,24 2,7 8.5,13.5 6.5,6.5 12.5,9.5 l 16,8 q 0,0 13,7 5,2 18.5,10.5 13.5,8.5 21.5,11.5 10,4 16,4 6,0 14.5,-2.5 8.5,-2.5 13.5,-3.5 15,-2 29,15 14,17 21,21 36,19 55,11 -2,1 0.5,7.5 2.5,6.5 8,15.5 5.5,9 9,14.5 3.5,5.5 5.5,8.5 5,6 18,15 13,9 18,15 6,-4 7,-9 -3,8 7,20 10,12 18,10 14,-3 14,-32 -31,15 -49,-18 0,-1 -2.5,-5.5 -2.5,-4.5 -4,-8.5 -1.5,-4 -2.5,-8.5 -1,-4.5 0,-7.5 1,-3 5,-3 9,0 10,-3.5 1,-3.5 -2,-12.5 -3,-9 -4,-13 -1,-8 -11,-20 -10,-12 -12,-15 -5,9 -16,8 -11,-1 -16,-9 0,1 -1.5,5.5 -1.5,4.5 -1.5,6.5 -13,0 -15,-1 1,-3 2.5,-17.5 1.5,-14.5 3.5,-22.5 1,-4 5.5,-12 4.5,-8 7.5,-14.5 3,-6.5 4,-12.5 1,-6 -4.5,-9.5 -5.5,-3.5 -17.5,-2.5 -19,1 -26,20 -1,3 -3,10.5 -2,7.5 -5,11.5 -3,4 -9,7 -7,3 -24,2 -17,-1 -24,-5 -13,-8 -22.5,-29 -9.5,-21 -9.5,-37 0,-10 2.5,-26.5 2.5,-16.5 3,-25 0.5,-8.5 -5.5,-24.5 3,-2 9,-9.5 6,-7.5 10,-10.5 2,-1 4.5,-1.5 2.5,-0.5 4.5,0 2,0.5 4,-1.5 2,-2 3,-6 -1,-1 -4,-3 -3,-3 -4,-3 7,3 28.5,-1.5 21.5,-4.5 27.5,1.5 15,11 22,-2 0,-1 -2.5,-9.5 Q 870,931 872,926 q 5,27 29,9 3,3 15.5,5 12.5,2 17.5,5 3,2 7,5.5 4,3.5 5.5,4.5 1.5,1 5,-0.5 3.5,-1.5 8.5,-6.5 10,14 12,24 11,40 19,44 7,3 11,2 4,-1 4.5,-9.5 0.5,-8.5 0,-14 Q 1006,989 1005,982 l -1,-8 v -18 l -1,-8 q -15,-3 -18.5,-12 -3.5,-9 1.5,-18.5 5,-9.5 15,-18.5 1,-1 8,-3.5 7,-2.5 15.5,-6.5 8.5,-4 12.5,-8 21,-19 15,-35 7,0 11,-9 -1,0 -5,-3 -4,-3 -7.5,-5 -3.5,-2 -4.5,-2 9,-5 2,-16 5,-3 7.5,-11 2.5,-8 7.5,-10 9,12 21,2 7,-8 1,-16 5,-7 20.5,-10.5 15.5,-3.5 18.5,-9.5 7,2 8,-2 1,-4 1,-12 0,-8 3,-12 4,-5 15,-9 11,-4 13,-5 l 17,-11 q 3,-4 0,-4 18,2 31,-11 10,-11 -6,-20 3,-6 -3,-9.5 -6,-3.5 -15,-5.5 3,-1 11.5,-0.5 8.5,0.5 10.5,-1.5 15,-10 -7,-16 -17,-5 -43,12 z m -163,877 q 206,-36 351,-189 -3,-3 -12.5,-4.5 -9.5,-1.5 -12.5,-3.5 -18,-7 -24,-8 1,-7 -2.5,-13 -3.5,-6 -8,-9 -4.5,-3 -12.5,-8 -8,-5 -11,-7 -2,-2 -7,-6 -5,-4 -7,-5.5 -2,-1.5 -7.5,-4.5 -5.5,-3 -8.5,-2 -3,1 -10,1 l -3,1 q -3,1 -5.5,2.5 -2.5,1.5 -5.5,3 -3,1.5 -4,3 -1,1.5 0,2.5 -21,-17 -36,-22 -5,-1 -11,-5.5 -6,-4.5 -10.5,-7 -4.5,-2.5 -10,-1.5 -5.5,1 -11.5,7 -5,5 -6,15 -1,10 -2,13 -7,-5 0,-17.5 7,-12.5 2,-18.5 -3,-6 -10.5,-4.5 -7.5,1.5 -12,4.5 -4.5,3 -11.5,8.5 -7,5.5 -9,6.5 -2,1 -8.5,5.5 -6.5,4.5 -8.5,7.5 -3,4 -6,12 -3,8 -5,11 -2,-4 -11.5,-6.5 -9.5,-2.5 -9.5,-5.5 2,10 4,35 2,25 5,38 7,31 -12,48 -27,25 -29,40 -4,22 12,26 0,7 -8,20.5 -8,13.5 -7,21.5 0,6 2,16 z"
+ id="path153" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg
new file mode 100644
index 000000000..517f76360
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/info_sign.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1792 1792"
+ id="svg163"
+ sodipodi:docname="info_sign.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs167" />
+ <sodipodi:namedview
+ id="namedview165"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.48716518"
+ inkscape:cx="72.870561"
+ inkscape:cy="896"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg163" />
+ <path
+ fill="currentColor"
+ d="m 1142,1376 v -160 q 0,-14 -9,-23 -9,-9 -23,-9 h -96 V 672 q 0,-14 -9,-23 -9,-9 -23,-9 H 662 q -14,0 -23,9 -9,9 -9,23 v 160 q 0,14 9,23 9,9 23,9 h 96 v 320 h -96 q -14,0 -23,9 -9,9 -9,23 v 160 q 0,14 9,23 9,9 23,9 h 448 q 14,0 23,-9 9,-9 9,-23 z M 1014,480 V 320 q 0,-14 -9,-23 -9,-9 -23,-9 H 790 q -14,0 -23,9 -9,9 -9,23 v 160 q 0,14 9,23 9,9 23,9 h 192 q 14,0 23,-9 9,-9 9,-23 z m 640,416 q 0,209 -103,385.5 Q 1448,1458 1271.5,1561 1095,1664 886,1664 677,1664 500.5,1561 324,1458 221,1281.5 118,1105 118,896 118,687 221,510.5 324,334 500.5,231 677,128 886,128 1095,128 1271.5,231 1448,334 1551,510.5 1654,687 1654,896 Z"
+ id="path161" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg
new file mode 100644
index 000000000..ed2ed55fb
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/light_bulb.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-10 0 1538 1538"
+ id="svg4"
+ sodipodi:docname="light_bulb.svg"
+ width="1538"
+ height="1538"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ id="namedview6"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ fit-margin-top="1"
+ fit-margin-left="1"
+ fit-margin-right="1"
+ fit-margin-bottom="1"
+ lock-margins="true"
+ inkscape:zoom="0.16"
+ inkscape:cx="1234.375"
+ inkscape:cy="409.375"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg4" />
+ <path
+ fill="currentColor"
+ d="m 983,449 q 0,13 -9.5,22.5 Q 964,481 951,481 938,481 928.5,471.5 919,462 919,449 919,403 865,378 811,353 759,353 746,353 736.5,343.5 727,334 727,321 q 0,-13 9.5,-22.5 9.5,-9.5 22.5,-9.5 50,0 99.5,16 49.5,16 87,54 37.5,38 37.5,90 z m 160,0 q 0,-72 -34.5,-134 -34.5,-62 -90,-101.5 Q 963,174 895.5,151.5 828,129 759,129 690,129 622.5,151.5 555,174 499.5,213.5 444,253 409.5,315 375,377 375,449 q 0,101 68,180 10,11 30.5,33 20.5,22 30.5,33 128,153 141,298 h 228 q 13,-145 141,-298 10,-11 30.5,-33 20.5,-22 30.5,-33 68,-79 68,-180 z m 128,0 q 0,155 -103,268 -45,49 -74.5,87 -29.5,38 -59.5,95.5 -30,57.5 -34,107.5 47,28 47,82 0,37 -25,64 25,27 25,64 0,52 -45,81 13,23 13,47 0,46 -31.5,71 -31.5,25 -77.5,25 -20,44 -60,70 -40,26 -87,26 -47,0 -87,-26 -40,-26 -60,-70 -46,0 -77.5,-25 -31.5,-25 -31.5,-71 0,-24 13,-47 -45,-29 -45,-81 0,-37 25,-64 -25,-27 -25,-64 0,-54 47,-82 Q 514,957 484,899.5 454,842 424.5,804 395,766 350,717 247,604 247,449 247,350 291.5,264.5 336,179 408.5,122.5 481,66 572.5,33.5 664,1 759,1 q 95,0 186.5,32.5 91.5,32.5 164,89 72.5,56.5 117,142 Q 1271,350 1271,449 Z"
+ id="path2" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg
new file mode 100644
index 000000000..062daff3e
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/qt_logo.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="462pt"
+ height="339pt"
+ viewBox="0 0 462 339"
+ version="1.1"
+ id="svg2"
+>
+ <path
+ fill="#41cd52"
+ d=" M 63.50 0.00 L 462.00 0.00 L 462.00 274.79 C 440.60 296.26 419.13 317.66 397.61 339.00 L 0.00 339.00 L 0.00 63.39 C 21.08 42.18 42.34 21.13 63.50 0.00 Z"
+ id="path6"/>
+ <path
+ d=" M 122.37 71.33 C 137.50 61.32 156.21 58.79 174.00 58.95 C 190.94 59.16 208.72 62.13 222.76 72.24 C 232.96 79.41 239.59 90.48 244.01 101.93 C 251.16 120.73 253.26 141.03 253.50 161.01 C 253.53 181.13 252.62 201.69 245.96 220.86 C 241.50 233.90 233.01 245.48 221.81 253.52 C 229.87 266.58 238.09 279.54 246.15 292.60 C 236.02 297.27 225.92 301.97 215.78 306.62 C 207.15 292.38 198.56 278.11 189.90 263.89 C 178.19 265.81 166.21 265.66 154.44 264.36 C 140.34 262.67 125.97 258.37 115.09 248.88 C 106.73 241.64 101.48 231.51 97.89 221.21 C 92.01 203.79 90.43 185.25 90.16 166.97 C 90.02 147.21 91.28 127.14 97.24 108.18 C 101.85 93.92 109.48 79.69 122.37 71.33 Z"
+ id="path8"
+ fill="#ffffff"/>
+ <path
+ d=" M 294.13 70.69 C 304.73 70.68 315.33 70.68 325.93 70.69 C 325.96 84.71 325.92 98.72 325.95 112.74 C 339.50 112.76 353.05 112.74 366.60 112.75 C 366.37 121.85 366.12 130.95 365.86 140.05 C 352.32 140.08 338.79 140.04 325.25 140.07 C 325.28 163.05 325.18 186.03 325.30 209.01 C 325.56 215.30 325.42 221.94 328.19 227.75 C 330.21 232.23 335.65 233.38 340.08 233.53 C 348.43 233.50 356.77 233.01 365.12 232.86 C 365.63 241.22 366.12 249.59 366.60 257.95 C 349.99 260.74 332.56 264.08 316.06 258.86 C 309.11 256.80 302.63 252.19 299.81 245.32 C 294.76 233.63 294.35 220.62 294.13 208.07 C 294.11 185.40 294.13 162.74 294.12 140.07 C 286.73 140.05 279.34 140.08 271.95 140.05 C 271.93 130.96 271.93 121.86 271.95 112.76 C 279.34 112.73 286.72 112.77 294.11 112.74 C 294.14 98.72 294.10 84.71 294.13 70.69 Z"
+ id="path10"
+ fill="#ffffff"/>
+ <path
+ fill="#41cd52"
+ d=" M 160.51 87.70 C 170.80 86.36 181.60 86.72 191.34 90.61 C 199.23 93.73 205.93 99.84 209.47 107.58 C 214.90 119.31 216.98 132.26 218.03 145.05 C 219.17 162.07 219.01 179.25 216.66 196.17 C 215.01 206.24 212.66 216.85 205.84 224.79 C 198.92 232.76 188.25 236.18 178.01 236.98 C 167.21 237.77 155.82 236.98 146.07 231.87 C 140.38 228.84 135.55 224.09 132.73 218.27 C 129.31 211.30 127.43 203.69 126.11 196.07 C 122.13 171.91 121.17 146.91 126.61 122.89 C 128.85 113.83 132.11 104.53 138.73 97.70 C 144.49 91.85 152.51 88.83 160.51 87.70 Z"
+ id="path12"/>
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg
new file mode 100644
index 000000000..c3af473d2
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/read.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.1"
+ viewBox="-11 0 1792 1792"
+ id="svg184"
+ sodipodi:docname="read.svg"
+ width="1792"
+ height="1792"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs188" />
+ <sodipodi:namedview
+ id="namedview186"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="0.24358259"
+ inkscape:cx="519.33104"
+ inkscape:cy="1089.9794"
+ inkscape:window-width="1846"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg184" />
+ <path
+ fill="currentColor"
+ d="m 1691.8576,478 q 40,57 18,129 l -275,906 q -19,64 -76.5,107.5 -57.5,43.5 -122.5,43.5 H 312.85764 q -77,0 -148.5,-53.5 Q 92.857644,1557 64.857644,1479 q -24,-67 -2,-127 0,-4 3,-27 3,-23 4,-37 1,-8 -3,-21.5 -4,-13.5 -3,-19.5 2,-11 8,-21 6,-10 16.5,-23.5 10.5,-13.5 16.499996,-23.5 23,-38 45,-91.5 22,-53.5 30,-91.5 3,-10 0.5,-30 -2.5,-20 -0.5,-28 3,-11 17,-28 14,-17 17,-23 21,-36 42,-92 21,-56 25,-90 1,-9 -2.5,-32 -3.5,-23 0.5,-28 4,-13 22,-30.5 18,-17.5 22,-22.5 19,-26 42.5,-84.5 23.5,-58.5 27.5,-96.5 1,-8 -3,-25.5 -4,-17.5 -2,-26.5 2,-8 9,-18 7,-10 18,-23 11,-13 17,-21 8,-12 16.5,-30.5 8.5,-18.5 15,-35 6.5,-16.5 16,-36 9.5,-19.5 19.5,-32 10,-12.5 26.5,-23.5 16.5,-11 36,-11.5 19.5,-0.5 47.5,5.5 l -1,3 q 38,-9 51,-9 h 760.99996 q 74,0 114,56 40,56 18,130 l -274,906 q -36,119 -71.5,153.5 -35.5,34.5 -128.5,34.5 H 208.85764 q -27,0 -38,15 -11,16 -1,43 24,70 144,70 h 922.99996 q 29,0 56,-15.5 27,-15.5 35,-41.5 l 300,-987 q 7,-22 5,-57 38,15 59,43 z m -1063.99996,2 q -4,13 2,22.5 6,9.5 20,9.5 h 607.99996 q 13,0 25.5,-9.5 12.5,-9.5 16.5,-22.5 l 21,-64 q 4,-13 -2,-22.5 -6,-9.5 -20,-9.5 H 690.85764 q -13,0 -25.5,9.5 -12.5,9.5 -16.5,22.5 z m -83,256 q -4,13 2,22.5 6,9.5 20,9.5 h 607.99996 q 13,0 25.5,-9.5 12.5,-9.5 16.5,-22.5 l 21,-64 q 4,-13 -2,-22.5 -6,-9.5 -20,-9.5 H 607.85764 q -13,0 -25.5,9.5 -12.5,9.5 -16.5,22.5 z"
+ id="path182" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg
new file mode 100644
index 000000000..e86d612f3
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/icons/resize.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'>
+ <line x1="00" y1="100" x2="100" y2="00" stroke="black" stroke-width="3" />
+ <line x1="20" y1="100" x2="100" y2="20" stroke="black" stroke-width="3" />
+ <line x1="40" y1="100" x2="100" y2="40" stroke="black" stroke-width="3" />
+ <line x1="60" y1="100" x2="100" y2="60" stroke="black" stroke-width="3" />
+</svg>
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml
new file mode 100644
index 000000000..178bf03e4
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/About.qml
@@ -0,0 +1,93 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+ApplicationWindow {
+ id: root
+ width: 650
+ height: 550
+ flags: Qt.Window | Qt.FramelessWindowHint
+ color: Colors.surface1
+
+ menuBar: MyMenuBar {
+ id: menuBar
+
+ dragWindow: root
+ implicitHeight: 27
+ infoText: "About Qt"
+ }
+
+ Image {
+ id: logo
+
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: 20
+
+ source: "../icons/qt_logo.svg"
+ sourceSize.width: 80
+ sourceSize.height: 80
+ fillMode: Image.PreserveAspectFit
+
+ smooth: true
+ antialiasing: true
+ asynchronous: true
+ }
+
+ ScrollView {
+ anchors.top: logo.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ anchors.margins: 20
+
+ TextArea {
+ selectedTextColor: Colors.textFile
+ selectionColor: Colors.selection
+ horizontalAlignment: Text.AlignHCenter
+ textFormat: Text.RichText
+
+ text: qsTr("<h3>About Qt</h3>"
+ + "<p>This program uses Qt version %1.</p>"
+ + "<p>Qt is a C++ toolkit for cross-platform application "
+ + "development.</p>"
+ + "<p>Qt provides single-source portability across all major desktop "
+ + "operating systems. It is also available for embedded Linux and other "
+ + "embedded and mobile operating systems.</p>"
+ + "<p>Qt is available under multiple licensing options designed "
+ + "to accommodate the needs of our various users.</p>"
+ + "<p>Qt licensed under our commercial license agreement is appropriate "
+ + "for development of proprietary/commercial software where you do not "
+ + "want to share any source code with third parties or otherwise cannot "
+ + "comply with the terms of GNU (L)GPL.</p>"
+ + "<p>Qt licensed under GNU (L)GPL is appropriate for the "
+ + "development of Qt&nbsp;applications provided you can comply with the terms "
+ + "and conditions of the respective licenses.</p>"
+ + "<p>Please see <a href=\"http://%2/\">%2</a> "
+ + "for an overview of Qt licensing.</p>"
+ + "<p>Copyright (C) %3 The Qt Company Ltd and other "
+ + "contributors.</p>"
+ + "<p>Qt and the Qt logo are trademarks of The Qt Company Ltd.</p>"
+ + "<p>Qt is The Qt Company Ltd product developed as an open source "
+ + "project. See <a href=\"http://%4/\">%4</a> for more information.</p>")
+ .arg(Application.version).arg("qt.io/licensing").arg("2023").arg("qt.io")
+ color: Colors.textFile
+ wrapMode: Text.WordWrap
+ readOnly: true
+ antialiasing: true
+ background: null
+
+ onLinkActivated: function(link) {
+ Qt.openUrlExternally(link)
+ }
+ }
+ }
+
+ ResizeButton {
+ resizeWindow: root
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml
new file mode 100644
index 000000000..285667773
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Colors.qml
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+
+pragma Singleton
+
+QtObject {
+ readonly property color background: "#292828"
+ readonly property color surface1: "#171819"
+ readonly property color surface2: "#090A0C"
+ readonly property color text: "#D4BE98"
+ readonly property color textFile: "#E1D2B7"
+ readonly property color disabledText: "#2C313A"
+ readonly property color selection: "#4B4A4A"
+ readonly property color active: "#292828"
+ readonly property color inactive: "#383737"
+ readonly property color folder: "#383737"
+ readonly property color icon: "#383737"
+ readonly property color iconIndicator: "#D5B35D"
+ readonly property color color1: "#A7B464"
+ readonly property color color2: "#D3869B"
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml
new file mode 100644
index 000000000..80f7c04c5
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Editor.qml
@@ -0,0 +1,160 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import FileSystemModule
+
+pragma ComponentBehavior: Bound
+
+// This is the text editor that displays the currently open file, including
+// their corresponding line numbers.
+Rectangle {
+ id: root
+
+ required property string currentFilePath
+ required property bool showLineNumbers
+ property alias text: textArea
+ property int currentLineNumber: -1
+ property int rowHeight: Math.ceil(fontMetrics.lineSpacing)
+
+ color: Colors.background
+
+ onWidthChanged: textArea.update()
+ onHeightChanged: textArea.update()
+
+ RowLayout {
+ anchors.fill: parent
+ // We use a flickable to synchronize the position of the editor and
+ // the line numbers. This is necessary because the line numbers can
+ // extend the available height.
+ Flickable {
+ id: lineNumbers
+
+ // Calculate the width based on the logarithmic scale.
+ Layout.preferredWidth: fontMetrics.averageCharacterWidth
+ * (Math.floor(Math.log10(textArea.lineCount)) + 1) + 10
+ Layout.fillHeight: true
+
+ interactive: false
+ contentY: editorFlickable.contentY
+ visible: textArea.text !== "" && root.showLineNumbers
+
+ Column {
+ anchors.fill: parent
+ Repeater {
+ id: repeatedLineNumbers
+
+ model: LineNumberModel {
+ lineCount: textArea.text !== "" ? textArea.lineCount : 0
+ }
+
+ delegate: Item {
+ required property int index
+
+ width: parent.width
+ height: root.rowHeight
+ Label {
+ id: numbers
+
+ text: parent.index + 1
+
+ width: parent.width
+ height: parent.height
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ color: (root.currentLineNumber === parent.index)
+ ? Colors.iconIndicator : Qt.darker(Colors.text, 2)
+ font: textArea.font
+ }
+ Rectangle {
+ id: indicator
+
+ anchors.left: numbers.right
+ width: 1
+ height: parent.height
+ color: Qt.darker(Colors.text, 3)
+ }
+ }
+ }
+ }
+ }
+
+ Flickable {
+ id: editorFlickable
+
+ property alias textArea: textArea
+
+ // We use an inline component to customize the horizontal and vertical
+ // scroll-bars. This is convenient when the component is only used in one file.
+ component MyScrollBar: ScrollBar {
+ id: scrollBar
+ background: Rectangle {
+ implicitWidth: scrollBar.interactive ? 8 : 4
+ implicitHeight: scrollBar.interactive ? 8 : 4
+
+ opacity: scrollBar.active && scrollBar.size < 1.0 ? 1.0 : 0.0
+ color: Colors.background
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 500
+ }
+ }
+ }
+ contentItem: Rectangle {
+ implicitWidth: scrollBar.interactive ? 8 : 4
+ implicitHeight: scrollBar.interactive ? 8 : 4
+ opacity: scrollBar.active && scrollBar.size < 1.0 ? 1.0 : 0.0
+ color: Colors.color1
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 1000
+ }
+ }
+ }
+ }
+
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ ScrollBar.horizontal: MyScrollBar {}
+ ScrollBar.vertical: MyScrollBar {}
+
+ boundsBehavior: Flickable.StopAtBounds
+
+ TextArea.flickable: TextArea {
+ id: textArea
+ anchors.fill: parent
+
+ focus: false
+ topPadding: 0
+ leftPadding: 10
+
+ text: FileSystemModel.readFile(root.currentFilePath)
+ tabStopDistance: fontMetrics.averageCharacterWidth * 4
+
+ // Grab the current line number from the C++ interface.
+ onCursorPositionChanged: {
+ root.currentLineNumber = FileSystemModel.currentLineNumber(
+ textArea.textDocument, textArea.cursorPosition)
+ }
+
+ color: Colors.textFile
+ selectedTextColor: Colors.textFile
+ selectionColor: Colors.selection
+
+ textFormat: TextEdit.PlainText
+ renderType: Text.QtRendering
+ selectByMouse: true
+ antialiasing: true
+ background: null
+ }
+
+ FontMetrics {
+ id: fontMetrics
+ font: textArea.font
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml
new file mode 100644
index 000000000..db955168c
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/FileSystemView.qml
@@ -0,0 +1,156 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Effects
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+pragma ComponentBehavior: Bound
+
+// This is the file system view which gets populated by the C++ model.
+Rectangle {
+ id: root
+
+ signal fileClicked(string filePath)
+ property alias rootIndex: fileSystemTreeView.rootIndex
+
+ TreeView {
+ id: fileSystemTreeView
+
+ property int lastIndex: -1
+
+ anchors.fill: parent
+ model: FileSystemModel
+ rootIndex: FileSystemModel.rootIndex
+ boundsBehavior: Flickable.StopAtBounds
+ boundsMovement: Flickable.StopAtBounds
+ clip: true
+
+ Component.onCompleted: fileSystemTreeView.toggleExpanded(0)
+
+ // The delegate represents a single entry in the filesystem.
+ delegate: TreeViewDelegate {
+ id: treeDelegate
+ indentation: 8
+ implicitWidth: fileSystemTreeView.width > 0 ? fileSystemTreeView.width : 250
+ implicitHeight: 25
+
+ // Since we have the 'ComponentBehavior Bound' pragma, we need to
+ // require these properties from our model. This is a convenient way
+ // to bind the properties provided by the model's role names.
+ required property int index
+ required property url filePath
+ required property string fileName
+
+ indicator: Image {
+ id: directoryIcon
+
+ x: treeDelegate.leftMargin + (treeDelegate.depth * treeDelegate.indentation)
+ anchors.verticalCenter: parent.verticalCenter
+ source: treeDelegate.hasChildren ? (treeDelegate.expanded
+ ? "../icons/folder_open.svg" : "../icons/folder_closed.svg")
+ : "../icons/generic_file.svg"
+ sourceSize.width: 20
+ sourceSize.height: 20
+ fillMode: Image.PreserveAspectFit
+
+ smooth: true
+ antialiasing: true
+ asynchronous: true
+ }
+
+ contentItem: Text {
+ text: treeDelegate.fileName
+ color: Colors.text
+ }
+
+ background: Rectangle {
+ color: (treeDelegate.index === fileSystemTreeView.lastIndex)
+ ? Colors.selection
+ : (hoverHandler.hovered ? Colors.active : "transparent")
+ }
+
+ // We color the directory icons with this MultiEffect, where we overlay
+ // the colorization color ontop of the SVG icons.
+ MultiEffect {
+ id: iconOverlay
+
+ anchors.fill: directoryIcon
+ source: directoryIcon
+ colorization: 1.0
+ brightness: 1.0
+ colorizationColor: {
+ const isFile = treeDelegate.index === fileSystemTreeView.lastIndex
+ && !treeDelegate.hasChildren;
+ if (isFile)
+ return Qt.lighter(Colors.folder, 3)
+
+ const isExpandedFolder = treeDelegate.expanded && treeDelegate.hasChildren;
+ if (isExpandedFolder)
+ return Colors.color2
+ else
+ return Colors.folder
+ }
+ }
+
+ HoverHandler {
+ id: hoverHandler
+ }
+
+ TapHandler {
+ acceptedButtons: Qt.LeftButton | Qt.RightButton
+ onSingleTapped: (eventPoint, button) => {
+ switch (button) {
+ case Qt.LeftButton:
+ fileSystemTreeView.toggleExpanded(treeDelegate.row)
+ fileSystemTreeView.lastIndex = treeDelegate.index
+ // If this model item doesn't have children, it means it's
+ // representing a file.
+ if (!treeDelegate.hasChildren)
+ root.fileClicked(treeDelegate.filePath)
+ break;
+ case Qt.RightButton:
+ if (treeDelegate.hasChildren)
+ contextMenu.popup();
+ break;
+ }
+ }
+ }
+
+ MyMenu {
+ id: contextMenu
+ Action {
+ text: qsTr("Set as root index")
+ onTriggered: {
+ fileSystemTreeView.rootIndex = fileSystemTreeView.index(treeDelegate.row, 0)
+ }
+ }
+ Action {
+ text: qsTr("Reset root index")
+ onTriggered: fileSystemTreeView.rootIndex = undefined
+ }
+ }
+ }
+
+ // Provide our own custom ScrollIndicator for the TreeView.
+ ScrollIndicator.vertical: ScrollIndicator {
+ active: true
+ implicitWidth: 15
+
+ contentItem: Rectangle {
+ implicitWidth: 6
+ implicitHeight: 6
+
+ color: Colors.color1
+ opacity: fileSystemTreeView.movingVertically ? 0.5 : 0.0
+
+ Behavior on opacity {
+ OpacityAnimator {
+ duration: 500
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml
new file mode 100644
index 000000000..1f1d30c56
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenu.qml
@@ -0,0 +1,45 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+Menu {
+ id: root
+
+ delegate: MenuItem {
+ id: menuItem
+ contentItem: Item {
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 5
+
+ text: menuItem.text
+ color: enabled ? Colors.text : Colors.disabledText
+ }
+ Rectangle {
+ id: indicator
+
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ width: 6
+ height: parent.height
+
+ visible: menuItem.highlighted
+ color: Colors.color2
+ }
+ }
+ background: Rectangle {
+ implicitWidth: 210
+ implicitHeight: 35
+ color: menuItem.highlighted ? Colors.active : "transparent"
+ }
+ }
+ background: Rectangle {
+ implicitWidth: 210
+ implicitHeight: 35
+ color: Colors.surface2
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml
new file mode 100644
index 000000000..4874a2c03
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/MyMenuBar.qml
@@ -0,0 +1,177 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+// The MenuBar also serves as a controller for our window as we don't use any decorations.
+MenuBar {
+ id: root
+
+ required property ApplicationWindow dragWindow
+ property alias infoText: windowInfo.text
+
+ // Customization of the top level menus inside the MenuBar
+ delegate: MenuBarItem {
+ id: menuBarItem
+
+ contentItem: Text {
+ horizontalAlignment: Text.AlignLeft
+ verticalAlignment: Text.AlignVCenter
+
+ text: menuBarItem.text
+ font: menuBarItem.font
+ elide: Text.ElideRight
+ color: menuBarItem.highlighted ? Colors.textFile : Colors.text
+ opacity: enabled ? 1.0 : 0.3
+ }
+
+ background: Rectangle {
+ id: background
+
+ color: menuBarItem.highlighted ? Colors.selection : "transparent"
+ Rectangle {
+ id: indicator
+
+ width: 0; height: 3
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+
+ color: Colors.color1
+ states: State {
+ name: "active"
+ when: menuBarItem.highlighted
+ PropertyChanges {
+ indicator.width: background.width - 2
+ }
+ }
+ transitions: Transition {
+ NumberAnimation {
+ properties: "width"
+ duration: 175
+ }
+ }
+ }
+ }
+ }
+ // We use the contentItem property as a place to attach our window decorations. Beneath
+ // the usual menu entries within a MenuBar, it includes a centered information text, along
+ // with the minimize, maximize, and close buttons.
+ contentItem: RowLayout {
+ id: windowBar
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ spacing: root.spacing
+ Repeater {
+ id: menuBarItems
+
+ Layout.alignment: Qt.AlignLeft
+ model: root.contentModel
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Text {
+ id: windowInfo
+
+ width: parent.width; height: parent.height
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ leftPadding: windowActions.width
+ color: Colors.text
+ clip: true
+ }
+ }
+
+ RowLayout {
+ id: windowActions
+
+ Layout.alignment: Qt.AlignRight
+ Layout.fillHeight: true
+
+ spacing: 0
+
+ component InteractionButton: Rectangle {
+ id: interactionButton
+
+ signal action()
+ property alias hovered: hoverHandler.hovered
+
+ Layout.fillHeight: true
+ Layout.preferredWidth: height
+
+ color: hovered ? Colors.background : "transparent"
+ HoverHandler {
+ id: hoverHandler
+ }
+ TapHandler {
+ id: tapHandler
+ onTapped: interactionButton.action()
+ }
+ }
+
+ InteractionButton {
+ id: minimize
+
+ onAction: root.dragWindow.showMinimized()
+ Rectangle {
+ anchors.centerIn: parent
+ color: parent.hovered ? Colors.iconIndicator : Colors.icon
+ height: 2
+ width: parent.height - 14
+ }
+ }
+
+ InteractionButton {
+ id: maximize
+
+ onAction: root.dragWindow.showMaximized()
+ Rectangle {
+ anchors.fill: parent
+ anchors.margins: 7
+ border.color: parent.hovered ? Colors.iconIndicator : Colors.icon
+ border.width: 2
+ color: "transparent"
+ }
+ }
+
+ InteractionButton {
+ id: close
+
+ color: hovered ? "#ec4143" : "transparent"
+ onAction: root.dragWindow.close()
+ Rectangle {
+ anchors.centerIn: parent
+ width: parent.height - 8; height: 2
+
+ rotation: 45
+ antialiasing: true
+ transformOrigin: Item.Center
+ color: parent.hovered ? Colors.iconIndicator : Colors.icon
+
+ Rectangle {
+ anchors.centerIn: parent
+ width: parent.height
+ height: parent.width
+
+ antialiasing: true
+ color: parent.color
+ }
+ }
+ }
+ }
+ }
+
+ background: Rectangle {
+ color: Colors.surface2
+ // Make the empty space drag the specified root window.
+ WindowDragHandler {
+ dragWindow: root.dragWindow
+ }
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml
new file mode 100644
index 000000000..0df65bf82
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/ResizeButton.qml
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick.Controls
+import FileSystemModule
+
+Button {
+ required property ApplicationWindow resizeWindow
+
+ icon.width: 20; icon.height: 20
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ rightPadding: 3
+ bottomPadding: 3
+
+ icon.source: "../icons/resize.svg"
+ icon.color: hovered ? Colors.iconIndicator : Colors.icon
+
+ background: null
+ checkable: false
+ display: AbstractButton.IconOnly
+ onPressed: resizeWindow.startSystemResize(Qt.BottomEdge | Qt.RightEdge)
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml
new file mode 100644
index 000000000..aac530394
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/Sidebar.qml
@@ -0,0 +1,138 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+import FileSystemModule
+
+Rectangle {
+ id: root
+
+ property alias currentTabIndex: topBar.currentIndex
+ required property ApplicationWindow dragWindow
+ readonly property int tabBarSpacing: 10
+
+ color: Colors.surface2
+
+ component SidebarEntry: Button {
+ id: sidebarButton
+
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+
+ icon.color: down || checked ? Colors.iconIndicator : Colors.icon
+ icon.width: 27
+ icon.height: 27
+
+ topPadding: 0
+ rightPadding: 0
+ bottomPadding: 0
+ leftPadding: 0
+ background: null
+
+ Rectangle {
+ id: indicator
+
+ anchors.verticalCenter: parent.verticalCenter
+ x: 2
+ width: 4
+ height: sidebarButton.icon.height * 1.2
+
+ visible: sidebarButton.checked
+ color: Colors.color1
+ }
+ }
+
+ // TabBar is designed to be horizontal, whereas we need a vertical bar.
+ // We can easily achieve that by using a Container.
+ component TabBar: Container {
+ id: tabBarComponent
+
+ Layout.fillWidth: true
+ // ButtonGroup ensures that only one button can be checked at a time.
+ ButtonGroup {
+ buttons: tabBarComponent.contentChildren
+
+ // We have to manage the currentIndex ourselves, which we do by setting it to the index
+ // of the currently checked button. We use setCurrentIndex instead of setting the
+ // currentIndex property to avoid breaking bindings. See "Managing the Current Index"
+ // in Container's documentation for more information.
+ onCheckedButtonChanged: tabBarComponent.setCurrentIndex(
+ Math.max(0, buttons.indexOf(checkedButton)))
+ }
+
+ contentItem: ColumnLayout {
+ spacing: tabBarComponent.spacing
+ Repeater {
+ model: tabBarComponent.contentModel
+ }
+ }
+ }
+
+ ColumnLayout {
+ anchors.fill: root
+ anchors.topMargin: root.tabBarSpacing
+ anchors.bottomMargin: root.tabBarSpacing
+
+ spacing: root.tabBarSpacing
+ TabBar {
+ id: topBar
+
+ spacing: root.tabBarSpacing
+ // Shows help text when clicked.
+ SidebarEntry {
+ id: infoTab
+ icon.source: "../icons/light_bulb.svg"
+ checkable: true
+ checked: true
+ }
+
+ // Shows the file system when clicked.
+ SidebarEntry {
+ id: filesystemTab
+
+ icon.source: "../icons/read.svg"
+ checkable: true
+ }
+ }
+
+ // This item acts as a spacer to expand between the checkable and non-checkable buttons.
+ Item {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ // Make the empty space drag our main window.
+ WindowDragHandler {
+ dragWindow: root.dragWindow
+ }
+ }
+
+ TabBar {
+ id: bottomBar
+
+ spacing: root.tabBarSpacing
+ // Opens the Qt website in the system's web browser.
+ SidebarEntry {
+ id: qtWebsiteButton
+ icon.source: "../icons/globe.svg"
+ checkable: false
+ onClicked: Qt.openUrlExternally("https://www.qt.io/")
+ }
+
+ // Opens the About Qt Window.
+ SidebarEntry {
+ id: aboutQtButton
+
+ icon.source: "../icons/info_sign.svg"
+ checkable: false
+ onClicked: aboutQtWindow.visible = !aboutQtWindow.visible
+ }
+ }
+ }
+
+ About {
+ id: aboutQtWindow
+ visible: false
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml
new file mode 100644
index 000000000..0e140aca3
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qml/WindowDragHandler.qml
@@ -0,0 +1,16 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+// Allows dragging the window when placed on an unused section of the UI.
+DragHandler {
+
+ required property ApplicationWindow dragWindow
+
+ target: null
+ onActiveChanged: {
+ if (active) dragWindow.startSystemMove()
+ }
+}
diff --git a/examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir
new file mode 100644
index 000000000..b1f684600
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/FileSystemModule/qmldir
@@ -0,0 +1,11 @@
+module FileSystemModule
+Main 1.0 Main.qml
+About 1.0 qml/About.qml
+Editor 1.0 qml/Editor.qml
+MyMenu 1.0 qml/MyMenu.qml
+Sidebar 1.0 qml/Sidebar.qml
+MyMenuBar 1.0 qml/MyMenuBar.qml
+singleton Colors 1.0 qml/Colors.qml
+ResizeButton 1.0 qml/ResizeButton.qml
+FileSystemView 1.0 qml/FileSystemView.qml
+WindowDragHandler 1.0 qml/WindowDragHandler.qml
diff --git a/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst
new file mode 100644
index 000000000..b46cbec79
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.rst
@@ -0,0 +1,52 @@
+.. _filesystemexplorer_example:
+
+Qt Quick Controls - Filesystem Explorer
+=======================================
+
+This example demonstrates how to create a **modern-looking** filesystem
+explorer with a dark-themed user interface that has a uniform look
+across all operating systems. Custom Qt Quick Controls have been
+implemented to provide a clean and intuitive UI for opening and
+navigating text-files from the filesystem.
+
+Frameless Window
+----------------
+
+To maximize the available space, we use a **frameless window**. The basic
+functionality, such as minimizing, maximizing, and closing the window,
+has been moved to a customized MenuBar called ``MyMenuBar``. Users can
+drag the window thanks to the ``WindowDragHandler`` added to the Sidebar
+and MenuBar.
+
+Customization
+-------------
+
+Combining **customized animations** and **colors** with QtQuick Controls
+allows us to easily create custom user interfaces. This example
+showcases the potential of QtQuick Controls for creating aesthetically
+pleasing UIs.
+
+..
+
+ With the knowledge gained from this example, developers can apply
+ similar techniques to create **their own** customized UIs using PySide's
+ QtQuick Controls.
+
+
+
+.. image:: filesystemexplorer.webp
+ :target: filesystemexplorer.webp
+ :alt: QtQuickControls Filesystem Explorer Screenshot
+
+References
+----------
+
+If you're interested in the C++ version of this example, you can find it
+`here <https://doc-snapshots.qt.io/qt6-dev/qtquickcontrols-filesystemexplorer-example.html>`_.
+
+Additionally, there is a detailed
+`tutorial <https://doc.qt.io/qtforpython-6/tutorials/extendedexplorer/extendedexplorer.html>`_
+available that provides step-by-step instructions on how to extend this example
+with additional features. This tutorial can be helpful if you want to explore
+and learn more about building upon the existing functionality of the filesystem
+explorer.
diff --git a/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webp b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webp
new file mode 100644
index 000000000..10ad0d26e
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/doc/filesystemexplorer.webp
Binary files differ
diff --git a/examples/quickcontrols/filesystemexplorer/editormodels.py b/examples/quickcontrols/filesystemexplorer/editormodels.py
new file mode 100644
index 000000000..688147726
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/editormodels.py
@@ -0,0 +1,116 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QFileSystemModel
+from PySide6.QtQuick import QQuickTextDocument
+from PySide6.QtQml import QmlElement, QmlSingleton
+from PySide6.QtCore import (Qt, QDir, QAbstractListModel, Slot, QFile, QTextStream,
+ QMimeDatabase, QFileInfo, QStandardPaths, QModelIndex,
+ Signal, Property)
+
+QML_IMPORT_NAME = "FileSystemModule"
+QML_IMPORT_MAJOR_VERSION = 1
+
+
+@QmlElement
+@QmlSingleton
+class FileSystemModel(QFileSystemModel):
+
+ rootIndexChanged = Signal()
+
+ def getDefaultRootDir():
+ return QStandardPaths.writableLocation(QStandardPaths.StandardLocation.HomeLocation)
+
+ def __init__(self, parent=None):
+ super().__init__(parent=parent)
+ self.mRootIndex = QModelIndex()
+ self.mDb = QMimeDatabase()
+ self.setFilter(QDir.Filter.AllEntries | QDir.Filter.Hidden | QDir.Filter.NoDotAndDotDot)
+ self.setInitialDirectory()
+
+ # check for the correct mime type and then read the file.
+ # returns the text file's content or an error message on failure
+ @Slot(str, result=str)
+ def readFile(self, path):
+ if path == "":
+ return ""
+
+ file = QFile(path)
+
+ mime = self.mDb.mimeTypeForFile(QFileInfo(file))
+ if ('text' in mime.comment().lower()
+ or any('text' in s.lower() for s in mime.parentMimeTypes())):
+ if file.open(QFile.OpenModeFlag.ReadOnly | QFile.OpenModeFlag.Text):
+ stream = QTextStream(file).readAll()
+ file.close()
+ return stream
+ else:
+ return self.tr("Error opening the file!")
+ return self.tr("File type not supported!")
+
+ @Slot(QQuickTextDocument, int, result=int)
+ def currentLineNumber(self, textDocument, cursorPosition):
+ td = textDocument.textDocument()
+ tb = td.findBlock(cursorPosition)
+ return tb.blockNumber()
+
+ def setInitialDirectory(self, path=getDefaultRootDir()):
+ dir = QDir(path)
+ if dir.makeAbsolute():
+ self.setRootPath(dir.path())
+ else:
+ self.setRootPath(self.getDefaultRootDir())
+ self.setRootIndex(self.index(dir.path()))
+
+ # we only need one column in this example
+ def columnCount(self, parent):
+ return 1
+
+ @Property(QModelIndex, notify=rootIndexChanged)
+ def rootIndex(self):
+ return self.mRootIndex
+
+ def setRootIndex(self, index):
+ if (index == self.mRootIndex):
+ return
+ self.mRootIndex = index
+ self.rootIndexChanged.emit()
+
+
+@QmlElement
+class LineNumberModel(QAbstractListModel):
+
+ lineCountChanged = Signal()
+
+ def __init__(self, parent=None):
+ self.mLineCount = 0
+ super().__init__(parent=parent)
+
+ @Property(int, notify=lineCountChanged)
+ def lineCount(self):
+ return self.mLineCount
+
+ @lineCount.setter
+ def lineCount(self, n):
+ if n < 0:
+ print("lineCount must be greater then zero")
+ return
+ if self.mLineCount == n:
+ return
+
+ if self.mLineCount < n:
+ self.beginInsertRows(QModelIndex(), self.mLineCount, n - 1)
+ self.mLineCount = n
+ self.endInsertRows()
+ else:
+ self.beginRemoveRows(QModelIndex(), n, self.mLineCount - 1)
+ self.mLineCount = n
+ self.endRemoveRows()
+
+ def rowCount(self, parent):
+ return self.mLineCount
+
+ def data(self, index, role):
+ if not self.checkIndex(index) or role != Qt.ItemDataRole.DisplayRole:
+ return
+ return index.row()
diff --git a/examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject b/examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject
new file mode 100644
index 000000000..8053cfab0
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/filesystemexplorer.pyproject
@@ -0,0 +1,29 @@
+{
+ "files": [
+ "main.py",
+ "editormodels.py",
+ "FileSystemModule/qmldir",
+ "FileSystemModule/app.qrc",
+ "FileSystemModule/qmldir",
+ "FileSystemModule/Main.qml",
+ "FileSystemModule/qml/About.qml",
+ "FileSystemModule/qml/Colors.qml",
+ "FileSystemModule/qml/Editor.qml",
+ "FileSystemModule/qml/FileSystemView.qml",
+ "FileSystemModule/qml/MyMenu.qml",
+ "FileSystemModule/qml/MyMenuBar.qml",
+ "FileSystemModule/qml/ResizeButton.qml",
+ "FileSystemModule/qml/Sidebar.qml",
+ "FileSystemModule/qml/WindowDragHandler.qml",
+ "FileSystemModule/icons/app_icon.svg",
+ "FileSystemModule/icons/folder_closed.svg",
+ "FileSystemModule/icons/folder_open.svg",
+ "FileSystemModule/icons/generic_file.svg",
+ "FileSystemModule/icons/globe.svg",
+ "FileSystemModule/icons/info_sign.svg",
+ "FileSystemModule/icons/light_bulb.svg",
+ "FileSystemModule/icons/qt_logo.svg",
+ "FileSystemModule/icons/read.svg",
+ "FileSystemModule/icons/resize.svg"
+ ]
+}
diff --git a/examples/quickcontrols/filesystemexplorer/main.py b/examples/quickcontrols/filesystemexplorer/main.py
new file mode 100644
index 000000000..8fad951cb
--- /dev/null
+++ b/examples/quickcontrols/filesystemexplorer/main.py
@@ -0,0 +1,48 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+This example shows how to customize Qt Quick Controls by implementing a simple filesystem explorer.
+"""
+
+# Compile both resource files app.qrc and icons.qrc and include them here if you wish
+# to load them from the resource system. Currently, all resources are loaded locally
+# import FileSystemModule.rc_icons
+# import FileSystemModule.rc_app
+
+from editormodels import FileSystemModel # noqa: F401
+from PySide6.QtGui import QGuiApplication, QIcon
+from PySide6.QtQml import QQmlApplicationEngine
+from PySide6.QtCore import QCommandLineParser, qVersion
+
+import sys
+
+if __name__ == '__main__':
+ app = QGuiApplication(sys.argv)
+ app.setOrganizationName("QtProject")
+ app.setApplicationName("File System Explorer")
+ app.setApplicationVersion(qVersion())
+ app.setWindowIcon(QIcon(sys.path[0] + "/FileSystemModule/icons/app_icon.svg"))
+
+ parser = QCommandLineParser()
+ parser.setApplicationDescription("Qt Filesystemexplorer Example")
+ parser.addHelpOption()
+ parser.addVersionOption()
+ parser.addPositionalArgument("", "Initial directory", "[path]")
+ parser.process(app)
+ args = parser.positionalArguments()
+
+ engine = QQmlApplicationEngine()
+ # Include the path of this file to search for the 'qmldir' module
+ engine.addImportPath(sys.path[0])
+
+ engine.loadFromModule("FileSystemModule", "Main")
+
+ if not engine.rootObjects():
+ sys.exit(-1)
+
+ if (len(args) == 1):
+ fsm = engine.singletonInstance("FileSystemModule", "FileSystemModel")
+ fsm.setInitialDirectory(args[0])
+
+ sys.exit(app.exec())
diff --git a/examples/quickcontrols/gallery/+Material/ToolBar.qml b/examples/quickcontrols/gallery/+Material/ToolBar.qml
new file mode 100644
index 000000000..f7ecbf116
--- /dev/null
+++ b/examples/quickcontrols/gallery/+Material/ToolBar.qml
@@ -0,0 +1,8 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick.Controls.Material
+
+ToolBar {
+ Material.foreground: "white"
+}
diff --git a/examples/quickcontrols/gallery/ToolBar.qml b/examples/quickcontrols/gallery/ToolBar.qml
new file mode 100644
index 000000000..03d68dfba
--- /dev/null
+++ b/examples/quickcontrols/gallery/ToolBar.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick.Controls
+
+ToolBar {}
diff --git a/examples/quickcontrols/gallery/doc/gallery.png b/examples/quickcontrols/gallery/doc/gallery.png
new file mode 100644
index 000000000..615ea9e3c
--- /dev/null
+++ b/examples/quickcontrols/gallery/doc/gallery.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/doc/gallery.rst b/examples/quickcontrols/gallery/doc/gallery.rst
new file mode 100644
index 000000000..acd5096f6
--- /dev/null
+++ b/examples/quickcontrols/gallery/doc/gallery.rst
@@ -0,0 +1,9 @@
+Qt Quick Controls 2 - Gallery
+=============================
+
+.. tags:: Android
+
+The gallery example is a simple application with a drawer menu that contains
+all the Qt Quick Controls 2. Each menu item opens a page that shows the
+graphical appearance of a control, allows you to interact with the control, and
+explains in which circumstances it is handy to use this control.
diff --git a/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-drawer.png b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-drawer.png
new file mode 100644
index 000000000..0df43fbc4
--- /dev/null
+++ b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-drawer.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-menu.png b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-menu.png
new file mode 100644
index 000000000..3bdaae942
--- /dev/null
+++ b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-menu.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-welcome.png b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-welcome.png
new file mode 100644
index 000000000..ded30381d
--- /dev/null
+++ b/examples/quickcontrols/gallery/doc/images/qtquickcontrols2-gallery-welcome.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/gallery.py b/examples/quickcontrols/gallery/gallery.py
new file mode 100644
index 000000000..6c2a3612e
--- /dev/null
+++ b/examples/quickcontrols/gallery/gallery.py
@@ -0,0 +1,52 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+"""
+The gallery example is a simple application with a drawer menu that contains
+all the Qt Quick Controls. Each menu item opens a page that shows the
+graphical appearance of a control, allows you to interact with the control,
+and explains in which circumstances it is handy to use this control.
+"""
+
+import os
+import sys
+import platform
+
+from PySide6.QtGui import QGuiApplication, QIcon
+from PySide6.QtCore import QSettings, QUrl
+from PySide6.QtQml import QQmlApplicationEngine
+from PySide6.QtQuickControls2 import QQuickStyle
+
+import rc_gallery # noqa: F401
+
+if __name__ == "__main__":
+ QGuiApplication.setApplicationName("Gallery")
+ QGuiApplication.setOrganizationName("QtProject")
+
+ app = QGuiApplication()
+ QIcon.setThemeName("gallery")
+
+ settings = QSettings()
+ if not os.environ.get("QT_QUICK_CONTROLS_STYLE"):
+ style_name = settings.value("style")
+ if style_name:
+ QQuickStyle.setStyle(style_name)
+
+ engine = QQmlApplicationEngine()
+
+ built_in_styles = ["Basic", "Fusion", "Imagine", "Material", "Universal"]
+ if platform.system() == "Darwin":
+ built_in_styles.append("macOS")
+ elif platform.system() == "Windows":
+ built_in_styles.append("Windows")
+ engine.setInitialProperties({"builtInStyles": built_in_styles})
+
+ engine.load(QUrl.fromLocalFile(":/gallery.qml"))
+ rootObjects = engine.rootObjects()
+ if not rootObjects:
+ sys.exit(-1)
+
+ window = rootObjects[0]
+ window.setIcon(QIcon(':/qt-project.org/logos/pysidelogo.png'))
+
+ sys.exit(app.exec())
diff --git a/examples/quickcontrols/gallery/gallery.pyproject b/examples/quickcontrols/gallery/gallery.pyproject
new file mode 100644
index 000000000..5b5fe35da
--- /dev/null
+++ b/examples/quickcontrols/gallery/gallery.pyproject
@@ -0,0 +1,36 @@
+{
+ "files": ["gallery.py",
+ "gallery.qml",
+ "gallery.qrc",
+ "qmldir",
+ "qtquickcontrols2.conf",
+ "ToolBar.qml",
+ "+Material/ToolBar.qml",
+ "pages/ComboBoxPage.qml",
+ "pages/FramePage.qml",
+ "pages/SliderPage.qml",
+ "pages/TumblerPage.qml",
+ "pages/SpinBoxPage.qml",
+ "pages/ProgressBarPage.qml",
+ "pages/DelegatePage.qml",
+ "pages/StackViewPage.qml",
+ "pages/DialPage.qml",
+ "pages/PageIndicatorPage.qml",
+ "pages/SwipeViewPage.qml",
+ "pages/TabBarPage.qml",
+ "pages/TextFieldPage.qml",
+ "pages/GroupBoxPage.qml",
+ "pages/RadioButtonPage.qml",
+ "pages/ButtonPage.qml",
+ "pages/ScrollIndicatorPage.qml",
+ "pages/ScrollablePage.qml",
+ "pages/DialogPage.qml",
+ "pages/ToolTipPage.qml",
+ "pages/CheckBoxPage.qml",
+ "pages/TextAreaPage.qml",
+ "pages/RangeSliderPage.qml",
+ "pages/DelayButtonPage.qml",
+ "pages/SwitchPage.qml",
+ "pages/ScrollBarPage.qml",
+ "pages/BusyIndicatorPage.qml"]
+}
diff --git a/examples/quickcontrols/gallery/gallery.qml b/examples/quickcontrols/gallery/gallery.qml
new file mode 100644
index 000000000..65851f8c9
--- /dev/null
+++ b/examples/quickcontrols/gallery/gallery.qml
@@ -0,0 +1,318 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtCore
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+import "." as App
+
+ApplicationWindow {
+ id: window
+ width: 360
+ height: 520
+ visible: true
+ title: "Qt Quick Controls"
+
+ //! [orientation]
+ readonly property bool portraitMode: window.width < window.height
+ //! [orientation]
+
+ function help() {
+ let displayingControl = listView.currentIndex !== -1
+ let currentControlName = displayingControl
+ ? listView.model.get(listView.currentIndex).title.toLowerCase() : ""
+ let url = "https://doc.qt.io/qt-6/"
+ + (displayingControl
+ ? "qml-qtquick-controls2-" + currentControlName + ".html"
+ : "qtquick-controls2-qmlmodule.html");
+ Qt.openUrlExternally(url)
+ }
+
+ required property var builtInStyles
+
+ Settings {
+ id: settings
+ property string style
+ }
+
+ Shortcut {
+ sequences: ["Esc", "Back"]
+ enabled: stackView.depth > 1
+ onActivated: navigateBackAction.trigger()
+ }
+
+ Shortcut {
+ sequence: StandardKey.HelpContents
+ onActivated: window.help()
+ }
+
+ Action {
+ id: navigateBackAction
+ icon.name: stackView.depth > 1 ? "back" : "drawer"
+ onTriggered: {
+ if (stackView.depth > 1) {
+ stackView.pop()
+ listView.currentIndex = -1
+ } else {
+ drawer.open()
+ }
+ }
+ }
+
+ Shortcut {
+ sequence: "Menu"
+ onActivated: optionsMenuAction.trigger()
+ }
+
+ Action {
+ id: optionsMenuAction
+ icon.name: "menu"
+ onTriggered: optionsMenu.open()
+ }
+
+ header: App.ToolBar {
+ RowLayout {
+ spacing: 20
+ anchors.fill: parent
+ anchors.leftMargin: !window.portraitMode ? drawer.width : undefined
+
+ ToolButton {
+ action: navigateBackAction
+ visible: window.portraitMode
+ }
+
+ Label {
+ id: titleLabel
+ text: listView.currentItem ? (listView.currentItem as ItemDelegate).text : "Gallery"
+ font.pixelSize: 20
+ elide: Label.ElideRight
+ horizontalAlignment: Qt.AlignHCenter
+ verticalAlignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ }
+
+ ToolButton {
+ action: optionsMenuAction
+
+ Menu {
+ id: optionsMenu
+ x: parent.width - width
+ transformOrigin: Menu.TopRight
+
+ Action {
+ text: "Settings"
+ onTriggered: settingsDialog.open()
+ }
+ Action {
+ text: "Help"
+ onTriggered: window.help()
+ }
+ Action {
+ text: "About"
+ onTriggered: aboutDialog.open()
+ }
+ }
+ }
+ }
+ }
+
+ Drawer {
+ id: drawer
+
+ width: Math.min(window.width, window.height) / 3 * 2
+ height: window.height
+ modal: window.portraitMode
+ interactive: window.portraitMode ? (stackView.depth === 1) : false
+ position: window.portraitMode ? 0 : 1
+ visible: !window.portraitMode
+
+ ListView {
+ id: listView
+
+ focus: true
+ currentIndex: -1
+ anchors.fill: parent
+
+ model: ListModel {
+ ListElement { title: "BusyIndicator"; source: "qrc:/pages/BusyIndicatorPage.qml" }
+ ListElement { title: "Button"; source: "qrc:/pages/ButtonPage.qml" }
+ ListElement { title: "CheckBox"; source: "qrc:/pages/CheckBoxPage.qml" }
+ ListElement { title: "ComboBox"; source: "qrc:/pages/ComboBoxPage.qml" }
+ ListElement { title: "DelayButton"; source: "qrc:/pages/DelayButtonPage.qml" }
+ ListElement { title: "Dial"; source: "qrc:/pages/DialPage.qml" }
+ ListElement { title: "Dialog"; source: "qrc:/pages/DialogPage.qml" }
+ ListElement { title: "Delegates"; source: "qrc:/pages/DelegatePage.qml" }
+ ListElement { title: "Frame"; source: "qrc:/pages/FramePage.qml" }
+ ListElement { title: "GroupBox"; source: "qrc:/pages/GroupBoxPage.qml" }
+ ListElement { title: "PageIndicator"; source: "qrc:/pages/PageIndicatorPage.qml" }
+ ListElement { title: "ProgressBar"; source: "qrc:/pages/ProgressBarPage.qml" }
+ ListElement { title: "RadioButton"; source: "qrc:/pages/RadioButtonPage.qml" }
+ ListElement { title: "RangeSlider"; source: "qrc:/pages/RangeSliderPage.qml" }
+ ListElement { title: "ScrollBar"; source: "qrc:/pages/ScrollBarPage.qml" }
+ ListElement { title: "ScrollIndicator"; source: "qrc:/pages/ScrollIndicatorPage.qml" }
+ ListElement { title: "Slider"; source: "qrc:/pages/SliderPage.qml" }
+ ListElement { title: "SpinBox"; source: "qrc:/pages/SpinBoxPage.qml" }
+ ListElement { title: "StackView"; source: "qrc:/pages/StackViewPage.qml" }
+ ListElement { title: "SwipeView"; source: "qrc:/pages/SwipeViewPage.qml" }
+ ListElement { title: "Switch"; source: "qrc:/pages/SwitchPage.qml" }
+ ListElement { title: "TabBar"; source: "qrc:/pages/TabBarPage.qml" }
+ ListElement { title: "TextArea"; source: "qrc:/pages/TextAreaPage.qml" }
+ ListElement { title: "TextField"; source: "qrc:/pages/TextFieldPage.qml" }
+ ListElement { title: "ToolTip"; source: "qrc:/pages/ToolTipPage.qml" }
+ ListElement { title: "Tumbler"; source: "qrc:/pages/TumblerPage.qml" }
+ }
+
+ delegate: ItemDelegate {
+ id: delegateItem
+ width: ListView.view.width
+ text: title
+ highlighted: ListView.isCurrentItem
+
+ required property int index
+ required property var model
+ required property string title
+ required property string source
+
+ onClicked: {
+ listView.currentIndex = index
+ stackView.push(source)
+ if (window.portraitMode)
+ drawer.close()
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+ }
+
+ StackView {
+ id: stackView
+
+ anchors.fill: parent
+ anchors.leftMargin: !window.portraitMode ? drawer.width : undefined
+
+ initialItem: Pane {
+ id: pane
+
+ Image {
+ id: logo
+ width: pane.availableWidth / 2
+ height: pane.availableHeight / 2
+ anchors.centerIn: parent
+ anchors.verticalCenterOffset: -50
+ fillMode: Image.PreserveAspectFit
+ source: "images/qt-logo.png"
+ }
+
+ Label {
+ text: "Qt Quick Controls provides a set of controls that can be used to build complete interfaces in Qt Quick."
+ anchors.margins: 20
+ anchors.top: logo.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: arrow.top
+ horizontalAlignment: Label.AlignHCenter
+ verticalAlignment: Label.AlignVCenter
+ wrapMode: Label.Wrap
+ }
+
+ Image {
+ id: arrow
+ source: "images/arrow.png"
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ visible: window.portraitMode
+ }
+ }
+ }
+
+ Dialog {
+ id: settingsDialog
+ x: Math.round((window.width - width) / 2)
+ y: Math.round(window.height / 6)
+ width: Math.round(Math.min(window.width, window.height) / 3 * 2)
+ modal: true
+ focus: true
+ title: "Settings"
+
+ standardButtons: Dialog.Ok | Dialog.Cancel
+ onAccepted: {
+ settings.style = styleBox.displayText
+ settingsDialog.close()
+ }
+ onRejected: {
+ styleBox.currentIndex = styleBox.styleIndex
+ settingsDialog.close()
+ }
+
+ contentItem: ColumnLayout {
+ id: settingsColumn
+ spacing: 20
+
+ RowLayout {
+ spacing: 10
+
+ Label {
+ text: "Style:"
+ }
+
+ ComboBox {
+ id: styleBox
+ property int styleIndex: -1
+ model: window.builtInStyles
+ Component.onCompleted: {
+ styleIndex = find(settings.style, Qt.MatchFixedString)
+ if (styleIndex !== -1)
+ currentIndex = styleIndex
+ }
+ Layout.fillWidth: true
+ }
+ }
+
+ Label {
+ text: "Restart required"
+ color: "#e41e25"
+ opacity: styleBox.currentIndex !== styleBox.styleIndex ? 1.0 : 0.0
+ horizontalAlignment: Label.AlignHCenter
+ verticalAlignment: Label.AlignVCenter
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ }
+ }
+ }
+
+ Dialog {
+ id: aboutDialog
+ modal: true
+ focus: true
+ title: "About"
+ x: (window.width - width) / 2
+ y: window.height / 6
+ width: Math.min(window.width, window.height) / 3 * 2
+ contentHeight: aboutColumn.height
+
+ Column {
+ id: aboutColumn
+ spacing: 20
+
+ Label {
+ width: aboutDialog.availableWidth
+ text: "The Qt Quick Controls module delivers the next generation user interface controls based on Qt Quick."
+ wrapMode: Label.Wrap
+ font.pixelSize: 12
+ }
+
+ Label {
+ width: aboutDialog.availableWidth
+ text: "In comparison to Qt Quick Controls 1, Qt Quick Controls "
+ + "are an order of magnitude simpler, lighter, and faster."
+ wrapMode: Label.Wrap
+ font.pixelSize: 12
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/gallery.qrc b/examples/quickcontrols/gallery/gallery.qrc
new file mode 100644
index 000000000..330197941
--- /dev/null
+++ b/examples/quickcontrols/gallery/gallery.qrc
@@ -0,0 +1,61 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>+Material/ToolBar.qml</file>
+ <file>ToolBar.qml</file>
+ <file>gallery.qml</file>
+ <file>icons/gallery/20x20/back.png</file>
+ <file>icons/gallery/20x20/drawer.png</file>
+ <file>icons/gallery/20x20/menu.png</file>
+ <file>icons/gallery/20x20@2/back.png</file>
+ <file>icons/gallery/20x20@2/drawer.png</file>
+ <file>icons/gallery/20x20@2/menu.png</file>
+ <file>icons/gallery/20x20@3/back.png</file>
+ <file>icons/gallery/20x20@3/drawer.png</file>
+ <file>icons/gallery/20x20@3/menu.png</file>
+ <file>icons/gallery/20x20@4/back.png</file>
+ <file>icons/gallery/20x20@4/drawer.png</file>
+ <file>icons/gallery/20x20@4/menu.png</file>
+ <file>icons/gallery/index.theme</file>
+ <file>images/arrow.png</file>
+ <file>images/arrow@2x.png</file>
+ <file>images/arrow@3x.png</file>
+ <file>images/arrow@4x.png</file>
+ <file>images/arrows.png</file>
+ <file>images/arrows@2x.png</file>
+ <file>images/arrows@3x.png</file>
+ <file>images/arrows@4x.png</file>
+ <file>images/qt-logo.png</file>
+ <file>images/qt-logo@2x.png</file>
+ <file>images/qt-logo@3x.png</file>
+ <file>images/qt-logo@4x.png</file>
+ <file>pages/BusyIndicatorPage.qml</file>
+ <file>pages/ButtonPage.qml</file>
+ <file>pages/CheckBoxPage.qml</file>
+ <file>pages/ComboBoxPage.qml</file>
+ <file>pages/DelayButtonPage.qml</file>
+ <file>pages/DelegatePage.qml</file>
+ <file>pages/DialPage.qml</file>
+ <file>pages/DialogPage.qml</file>
+ <file>pages/FramePage.qml</file>
+ <file>pages/GroupBoxPage.qml</file>
+ <file>pages/PageIndicatorPage.qml</file>
+ <file>pages/ProgressBarPage.qml</file>
+ <file>pages/RadioButtonPage.qml</file>
+ <file>pages/RangeSliderPage.qml</file>
+ <file>pages/ScrollBarPage.qml</file>
+ <file>pages/ScrollIndicatorPage.qml</file>
+ <file>pages/ScrollablePage.qml</file>
+ <file>pages/SliderPage.qml</file>
+ <file>pages/SpinBoxPage.qml</file>
+ <file>pages/StackViewPage.qml</file>
+ <file>pages/SwipeViewPage.qml</file>
+ <file>pages/SwitchPage.qml</file>
+ <file>pages/TabBarPage.qml</file>
+ <file>pages/TextAreaPage.qml</file>
+ <file>pages/TextFieldPage.qml</file>
+ <file>pages/ToolTipPage.qml</file>
+ <file>pages/TumblerPage.qml</file>
+ <file>qmldir</file>
+ <file>qtquickcontrols2.conf</file>
+</qresource>
+</RCC>
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20/back.png
new file mode 100644
index 000000000..1f89ee058
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20/back.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20/drawer.png
new file mode 100644
index 000000000..1e974efae
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20/drawer.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20/menu.png
new file mode 100644
index 000000000..a10473d9e
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20/menu.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@2/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20@2/back.png
new file mode 100644
index 000000000..88e290b13
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@2/back.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@2/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20@2/drawer.png
new file mode 100644
index 000000000..eba3b6ccc
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@2/drawer.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@2/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20@2/menu.png
new file mode 100644
index 000000000..649c2a08c
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@2/menu.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@3/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20@3/back.png
new file mode 100644
index 000000000..4402c7d30
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@3/back.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@3/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20@3/drawer.png
new file mode 100644
index 000000000..3584ed6d8
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@3/drawer.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@3/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20@3/menu.png
new file mode 100644
index 000000000..9554b6952
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@3/menu.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@4/back.png b/examples/quickcontrols/gallery/icons/gallery/20x20@4/back.png
new file mode 100644
index 000000000..9982478c1
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@4/back.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@4/drawer.png b/examples/quickcontrols/gallery/icons/gallery/20x20@4/drawer.png
new file mode 100644
index 000000000..60d93aff7
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@4/drawer.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/20x20@4/menu.png b/examples/quickcontrols/gallery/icons/gallery/20x20@4/menu.png
new file mode 100644
index 000000000..187c171cd
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/20x20@4/menu.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/icons/gallery/index.theme b/examples/quickcontrols/gallery/icons/gallery/index.theme
new file mode 100644
index 000000000..a1bcd5e03
--- /dev/null
+++ b/examples/quickcontrols/gallery/icons/gallery/index.theme
@@ -0,0 +1,24 @@
+[Icon Theme]
+Name=Gallery
+Comment=Qt Quick Controls 2 Gallery Example Icon Theme
+
+Directories=20x20,20x20@2,20x20@3,20x20@4
+
+[20x20]
+Size=20
+Type=Fixed
+
+[20x20@2]
+Size=20
+Scale=2
+Type=Fixed
+
+[20x20@3]
+Size=20
+Scale=3
+Type=Fixed
+
+[20x20@4]
+Size=20
+Scale=4
+Type=Fixed
diff --git a/examples/quickcontrols/gallery/images/arrow.png b/examples/quickcontrols/gallery/images/arrow.png
new file mode 100644
index 000000000..9835108eb
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrow.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/arrow@2x.png b/examples/quickcontrols/gallery/images/arrow@2x.png
new file mode 100644
index 000000000..a5187d48c
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrow@2x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/arrow@3x.png b/examples/quickcontrols/gallery/images/arrow@3x.png
new file mode 100644
index 000000000..a512f648c
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrow@3x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/arrow@4x.png b/examples/quickcontrols/gallery/images/arrow@4x.png
new file mode 100644
index 000000000..fd893ebb0
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrow@4x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/arrows.png b/examples/quickcontrols/gallery/images/arrows.png
new file mode 100644
index 000000000..3a4cc9b95
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrows.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/arrows@2x.png b/examples/quickcontrols/gallery/images/arrows@2x.png
new file mode 100644
index 000000000..8c80a2b45
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrows@2x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/arrows@3x.png b/examples/quickcontrols/gallery/images/arrows@3x.png
new file mode 100644
index 000000000..22f23cefb
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrows@3x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/arrows@4x.png b/examples/quickcontrols/gallery/images/arrows@4x.png
new file mode 100644
index 000000000..6d1afeef5
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/arrows@4x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo.png b/examples/quickcontrols/gallery/images/qt-logo.png
new file mode 100644
index 000000000..05684292b
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo@2x.png b/examples/quickcontrols/gallery/images/qt-logo@2x.png
new file mode 100644
index 000000000..2b7683ca0
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo@2x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo@3x.png b/examples/quickcontrols/gallery/images/qt-logo@3x.png
new file mode 100644
index 000000000..7cc98348d
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo@3x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/images/qt-logo@4x.png b/examples/quickcontrols/gallery/images/qt-logo@4x.png
new file mode 100644
index 000000000..0e1bc9d93
--- /dev/null
+++ b/examples/quickcontrols/gallery/images/qt-logo@4x.png
Binary files differ
diff --git a/examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml b/examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml
new file mode 100644
index 000000000..5f391abfb
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/BusyIndicatorPage.qml
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "BusyIndicator is used to indicate activity while content is being loaded,"
+ + " or when the UI is blocked waiting for a resource to become available."
+ }
+
+ BusyIndicator {
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ButtonPage.qml b/examples/quickcontrols/gallery/pages/ButtonPage.qml
new file mode 100644
index 000000000..06051767e
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ButtonPage.qml
@@ -0,0 +1,44 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Button presents a push-button that can be pushed or clicked by the user. "
+ + "Buttons are normally used to perform an action, or to answer a question."
+ }
+
+ ColumnLayout {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Button {
+ text: "First"
+ Layout.fillWidth: true
+ }
+ Button {
+ id: button
+ text: "Second"
+ highlighted: true
+ Layout.fillWidth: true
+ }
+ Button {
+ text: "Third"
+ enabled: false
+ Layout.fillWidth: true
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/CheckBoxPage.qml b/examples/quickcontrols/gallery/pages/CheckBoxPage.qml
new file mode 100644
index 000000000..003e44c82
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/CheckBoxPage.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "CheckBox presents an option button that can be toggled on or off. "
+ + "Check boxes are typically used to select one or more options from a set of options."
+ }
+
+ Column {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ CheckBox {
+ text: "First"
+ checked: true
+ }
+ CheckBox {
+ text: "Second"
+ }
+ CheckBox {
+ text: "Third"
+ checked: true
+ enabled: false
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ComboBoxPage.qml b/examples/quickcontrols/gallery/pages/ComboBoxPage.qml
new file mode 100644
index 000000000..2dc10cee3
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ComboBoxPage.qml
@@ -0,0 +1,51 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ComboBox is a combined button and popup list. It presents "
+ + "a list of options to the user that occupies minimal screen space."
+ }
+
+ ComboBox {
+ model: ["First", "Second", "Third"]
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ComboBox can be made \l editable. An editable combo box auto-"
+ + "completes its text based on what is available in the model."
+ }
+
+ ComboBox {
+ id: comboBox
+
+ editable: true
+ model: ListModel {
+ ListElement { text: "Banana" }
+ ListElement { text: "Apple" }
+ ListElement { text: "Coconut" }
+ }
+ onAccepted: {
+ if (find(editText) === -1)
+ comboBox.model.append({text: comboBox.editText})
+ }
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DelayButtonPage.qml b/examples/quickcontrols/gallery/pages/DelayButtonPage.qml
new file mode 100644
index 000000000..4c0e8725b
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DelayButtonPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "DelayButton is a checkable button that incorporates a delay before the "
+ + "button is activated. This delay prevents accidental presses."
+ }
+
+ DelayButton {
+ text: "DelayButton"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DelegatePage.qml b/examples/quickcontrols/gallery/pages/DelegatePage.qml
new file mode 100644
index 000000000..26d346a91
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DelegatePage.qml
@@ -0,0 +1,201 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+Pane {
+ ColumnLayout {
+ spacing: 40
+ anchors.fill: parent
+ anchors.topMargin: 20
+
+ Label {
+ Layout.fillWidth: true
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Delegate controls are used as delegates in views such as ListView."
+ }
+
+ ListView {
+ id: listView
+ clip: true
+ section.property: "type"
+ section.delegate: Pane {
+ id: sectionPane
+ required property string section
+ width: ListView.view.width
+ height: sectionLabel.implicitHeight + 20
+ Label {
+ id: sectionLabel
+ text: sectionPane.section
+ anchors.centerIn: parent
+ }
+ }
+
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ readonly property var delegateComponentMap: {
+ "ItemDelegate": itemDelegateComponent,
+ "SwipeDelegate": swipeDelegateComponent,
+ "CheckDelegate": checkDelegateComponent,
+ "RadioDelegate": radioDelegateComponent,
+ "SwitchDelegate": switchDelegateComponent
+ }
+
+ Component {
+ id: itemDelegateComponent
+
+ ItemDelegate {
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ width: parent.width
+ }
+ }
+
+ Component {
+ id: swipeDelegateComponent
+
+ SwipeDelegate {
+ id: swipeDelegate
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ width: parent.width
+
+ Component {
+ id: removeComponent
+
+ Rectangle {
+ color: SwipeDelegate.pressed ? "#333" : "#444"
+ width: parent.width
+ height: parent.height
+ clip: true
+
+ SwipeDelegate.onClicked: {
+ // qmllint disable unqualified
+ view.model.remove(ourIndex)
+ // qmllint enable unqualified
+ }
+
+ Label {
+ // qmllint disable unqualified
+ font.pixelSize: swipeDelegate.font.pixelSize
+ // qmllint enable unqualified
+ text: "Remove"
+ color: "white"
+ anchors.centerIn: parent
+ }
+ }
+ }
+
+ SequentialAnimation {
+ id: removeAnimation
+
+ PropertyAction {
+ // qmllint disable unqualified
+ target: delegateItem
+ // qmllint enable unqualified
+ property: "ListView.delayRemove"
+ value: true
+ }
+ NumberAnimation {
+ // qmllint disable unqualified
+ target: delegateItem.item
+ // qmllint enable unqualified
+ property: "height"
+ to: 0
+ easing.type: Easing.InOutQuad
+ }
+ PropertyAction {
+ // qmllint disable unqualified
+ target: delegateItem
+ // qmllint enable unqualified
+ property: "ListView.delayRemove"
+ value: false
+ }
+ }
+
+ swipe.left: removeComponent
+ swipe.right: removeComponent
+ ListView.onRemove: removeAnimation.start()
+ }
+ }
+
+ Component {
+ id: checkDelegateComponent
+
+ CheckDelegate {
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ }
+ }
+
+ ButtonGroup {
+ id: radioButtonGroup
+ }
+
+ Component {
+ id: radioDelegateComponent
+
+ RadioDelegate {
+ // qmllint disable unqualified
+ text: value
+ ButtonGroup.group: radioButtonGroup
+ // qmllint enable unqualified
+ }
+ }
+
+ Component {
+ id: switchDelegateComponent
+
+ SwitchDelegate {
+ // qmllint disable unqualified
+ text: value
+ // qmllint enable unqualified
+ }
+ }
+
+ model: ListModel {
+ ListElement { type: "ItemDelegate"; value: "ItemDelegate1" }
+ ListElement { type: "ItemDelegate"; value: "ItemDelegate2" }
+ ListElement { type: "ItemDelegate"; value: "ItemDelegate3" }
+ ListElement { type: "SwipeDelegate"; value: "SwipeDelegate1" }
+ ListElement { type: "SwipeDelegate"; value: "SwipeDelegate2" }
+ ListElement { type: "SwipeDelegate"; value: "SwipeDelegate3" }
+ ListElement { type: "CheckDelegate"; value: "CheckDelegate1" }
+ ListElement { type: "CheckDelegate"; value: "CheckDelegate2" }
+ ListElement { type: "CheckDelegate"; value: "CheckDelegate3" }
+ ListElement { type: "RadioDelegate"; value: "RadioDelegate1" }
+ ListElement { type: "RadioDelegate"; value: "RadioDelegate2" }
+ ListElement { type: "RadioDelegate"; value: "RadioDelegate3" }
+ ListElement { type: "SwitchDelegate"; value: "SwitchDelegate1" }
+ ListElement { type: "SwitchDelegate"; value: "SwitchDelegate2" }
+ ListElement { type: "SwitchDelegate"; value: "SwitchDelegate3" }
+ }
+
+ delegate: Loader {
+ id: delegateLoader
+ width: ListView.view.width
+ // qmllint disable unqualified
+ sourceComponent: listView.delegateComponentMap[type]
+ // qmllint enable unqualified
+
+ required property string value
+ required property string type
+ required property var model
+ required property int index
+
+ property Loader delegateItem: delegateLoader
+ // qmllint disable unqualified
+ property ListView view: listView
+ // qmllint enable unqualified
+ property int ourIndex: index
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DialPage.qml b/examples/quickcontrols/gallery/pages/DialPage.qml
new file mode 100644
index 000000000..17c9e090b
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DialPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "The Dial is similar to a traditional dial knob that is found on devices such as "
+ + "stereos or industrial equipment. It allows the user to specify a value within a range."
+ }
+
+ Dial {
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/DialogPage.qml b/examples/quickcontrols/gallery/pages/DialogPage.qml
new file mode 100644
index 000000000..ffabb415e
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/DialogPage.qml
@@ -0,0 +1,179 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ readonly property int buttonWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, page.availableWidth / 3))
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Dialog is a popup that is mostly used for short-term tasks "
+ + "and brief communications with the user."
+ }
+
+ Button {
+ text: "Message"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: messageDialog.open()
+
+ Dialog {
+ id: messageDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+
+ title: "Message"
+
+ Label {
+ text: "Lorem ipsum dolor sit amet..."
+ }
+ }
+ }
+
+ Button {
+ id: button
+ text: "Confirmation"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: confirmationDialog.open()
+
+ Dialog {
+ id: confirmationDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ parent: Overlay.overlay
+
+ modal: true
+ title: "Confirmation"
+ standardButtons: Dialog.Yes | Dialog.No
+
+ Column {
+ spacing: 20
+ anchors.fill: parent
+ Label {
+ text: "The document has been modified.\nDo you want to save your changes?"
+ }
+ CheckBox {
+ text: "Do not ask again"
+ anchors.right: parent.right
+ }
+ }
+ }
+ }
+
+ Button {
+ text: "Content"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: contentDialog.open()
+
+ Dialog {
+ id: contentDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ width: Math.min(page.width, page.height) / 3 * 2
+ contentHeight: logo.height * 2
+ parent: Overlay.overlay
+
+ modal: true
+ title: "Content"
+ standardButtons: Dialog.Close
+
+ Flickable {
+ id: flickable
+ clip: true
+ anchors.fill: parent
+ contentHeight: column.height
+
+ Column {
+ id: column
+ spacing: 20
+ width: parent.width
+
+ Image {
+ id: logo
+ width: parent.width / 2
+ anchors.horizontalCenter: parent.horizontalCenter
+ fillMode: Image.PreserveAspectFit
+ source: "../images/qt-logo.png"
+ }
+
+ Label {
+ width: parent.width
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc finibus "
+ + "in est quis laoreet. Interdum et malesuada fames ac ante ipsum primis "
+ + "in faucibus. Curabitur eget justo sollicitudin enim faucibus bibendum. "
+ + "Suspendisse potenti. Vestibulum cursus consequat mauris id sollicitudin. "
+ + "Duis facilisis hendrerit consectetur. Curabitur sapien tortor, efficitur "
+ + "id auctor nec, efficitur et nisl. Ut venenatis eros in nunc placerat, "
+ + "eu aliquam enim suscipit."
+ wrapMode: Label.Wrap
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator {
+ parent: contentDialog.contentItem
+ anchors.top: flickable.top
+ anchors.bottom: flickable.bottom
+ anchors.right: parent.right
+ anchors.rightMargin: -contentDialog.rightPadding + 1
+ }
+ }
+ }
+ }
+
+ Button {
+ text: "Input"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: page.buttonWidth
+ onClicked: inputDialog.open()
+
+ Dialog {
+ id: inputDialog
+
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ parent: Overlay.overlay
+
+ focus: true
+ modal: true
+ title: "Input"
+ standardButtons: Dialog.Ok | Dialog.Cancel
+
+ ColumnLayout {
+ spacing: 20
+ anchors.fill: parent
+ Label {
+ elide: Label.ElideRight
+ text: "Please enter the credentials:"
+ Layout.fillWidth: true
+ }
+ TextField {
+ focus: true
+ placeholderText: "Username"
+ Layout.fillWidth: true
+ }
+ TextField {
+ placeholderText: "Password"
+ echoMode: TextField.PasswordEchoOnEdit
+ Layout.fillWidth: true
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/FramePage.qml b/examples/quickcontrols/gallery/pages/FramePage.qml
new file mode 100644
index 000000000..852644253
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/FramePage.qml
@@ -0,0 +1,47 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Frame is used to layout a logical group of controls together, within a visual frame."
+ }
+
+ Frame {
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Column {
+ spacing: 20
+ width: page.itemWidth
+
+ RadioButton {
+ text: "First"
+ checked: true
+ width: parent.width
+ }
+ RadioButton {
+ id: button
+ text: "Second"
+ width: parent.width
+ }
+ RadioButton {
+ text: "Third"
+ width: parent.width
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/GroupBoxPage.qml b/examples/quickcontrols/gallery/pages/GroupBoxPage.qml
new file mode 100644
index 000000000..9e24d8e6c
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/GroupBoxPage.qml
@@ -0,0 +1,48 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "A GroupBox provides a frame, a title on top of it, and a logical group of controls within that frame."
+ }
+
+ GroupBox {
+ title: "Title"
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Column {
+ spacing: 20
+ width: page.itemWidth
+
+ RadioButton {
+ text: "First"
+ checked: true
+ width: parent.width
+ }
+ RadioButton {
+ id: button
+ text: "Second"
+ width: parent.width
+ }
+ RadioButton {
+ text: "Third"
+ width: parent.width
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/PageIndicatorPage.qml b/examples/quickcontrols/gallery/pages/PageIndicatorPage.qml
new file mode 100644
index 000000000..e83c86563
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/PageIndicatorPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "PageIndicator is used to indicate the currently active page in a container of pages."
+ }
+
+ PageIndicator {
+ count: 5
+ currentIndex: 2
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ProgressBarPage.qml b/examples/quickcontrols/gallery/pages/ProgressBarPage.qml
new file mode 100644
index 000000000..d712aae10
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ProgressBarPage.qml
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ProgressBar indicates the progress of an operation. It can be set in an "
+ + "indeterminate mode to indicate that the length of the operation is unknown."
+ }
+
+ ProgressBar {
+ id: bar
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ ProgressBar {
+ indeterminate: true
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/RadioButtonPage.qml b/examples/quickcontrols/gallery/pages/RadioButtonPage.qml
new file mode 100644
index 000000000..644543c00
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/RadioButtonPage.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "RadioButton presents an option button that can be toggled on or off. "
+ + "Radio buttons are typically used to select one option from a set of options."
+ }
+
+ Column {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ RadioButton {
+ text: "First"
+ }
+ RadioButton {
+ text: "Second"
+ checked: true
+ }
+ RadioButton {
+ text: "Third"
+ enabled: false
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/RangeSliderPage.qml b/examples/quickcontrols/gallery/pages/RangeSliderPage.qml
new file mode 100644
index 000000000..0ca235822
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/RangeSliderPage.qml
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "RangeSlider is used to select a range specified by two values, by sliding each handle along a track."
+ }
+
+ RangeSlider {
+ id: slider
+ first.value: 0.25
+ second.value: 0.75
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ RangeSlider {
+ orientation: Qt.Vertical
+ first.value: 0.25
+ second.value: 0.75
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ScrollBarPage.qml b/examples/quickcontrols/gallery/pages/ScrollBarPage.qml
new file mode 100644
index 000000000..248e74ca7
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ScrollBarPage.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Flickable {
+ id: flickable
+
+ contentHeight: pane.height
+
+ Pane {
+ id: pane
+ width: flickable.width
+ height: flickable.height * 1.25
+
+ Column {
+ id: column
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ScrollBar is an interactive bar that can be used to scroll to a specific position. "
+ + "A scroll bar can be either vertical or horizontal, and can be attached to any Flickable, "
+ + "such as ListView and GridView."
+ }
+
+ Image {
+ rotation: 90
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+
+ ScrollBar.vertical: ScrollBar { }
+}
diff --git a/examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml b/examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml
new file mode 100644
index 000000000..04ce97483
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ScrollIndicatorPage.qml
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Flickable {
+ id: flickable
+
+ contentHeight: pane.height
+
+ Pane {
+ id: pane
+ width: flickable.width
+ height: flickable.height * 1.25
+
+ Column {
+ id: column
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ScrollIndicator is a non-interactive indicator that indicates the current scroll position. "
+ + "A scroll indicator can be either vertical or horizontal, and can be attached to any Flickable, "
+ + "such as ListView and GridView."
+ }
+
+ Image {
+ rotation: 90
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+}
diff --git a/examples/quickcontrols/gallery/pages/ScrollablePage.qml b/examples/quickcontrols/gallery/pages/ScrollablePage.qml
new file mode 100644
index 000000000..69bc0cd97
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ScrollablePage.qml
@@ -0,0 +1,24 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Page {
+ id: page
+
+ default property alias content: pane.contentItem
+
+ Flickable {
+ anchors.fill: parent
+ contentHeight: pane.implicitHeight
+ flickableDirection: Flickable.AutoFlickIfNeeded
+
+ Pane {
+ id: pane
+ width: parent.width
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SliderPage.qml b/examples/quickcontrols/gallery/pages/SliderPage.qml
new file mode 100644
index 000000000..fd03680a0
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SliderPage.qml
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Slider is used to select a value by sliding a handle along a track."
+ }
+
+ Slider {
+ id: slider
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Slider {
+ orientation: Qt.Vertical
+ value: 0.5
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SpinBoxPage.qml b/examples/quickcontrols/gallery/pages/SpinBoxPage.qml
new file mode 100644
index 000000000..18c9b06c1
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SpinBoxPage.qml
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "SpinBox allows the user to choose an integer value by clicking the up or down indicator buttons, "
+ + "by pressing up or down on the keyboard, or by entering a text value in the input field."
+ }
+
+ SpinBox {
+ id: box
+ value: 50
+ anchors.horizontalCenter: parent.horizontalCenter
+ editable: true
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/StackViewPage.qml b/examples/quickcontrols/gallery/pages/StackViewPage.qml
new file mode 100644
index 000000000..841d491ef
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/StackViewPage.qml
@@ -0,0 +1,58 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick.Controls
+
+StackView {
+ id: stackView
+ initialItem: page
+
+ Component {
+ id: page
+
+ Pane {
+ id: pane
+ width: parent ? parent.width : 0 // TODO: fix null parent on destruction
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "StackView provides a stack-based navigation model which can be used with a set of interlinked pages. "
+ + "Items are pushed onto the stack as the user navigates deeper into the material, and popped off again "
+ + "when he chooses to go back."
+ }
+
+ Button {
+ id: button
+ text: "Push"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, pane.availableWidth / 3))
+ onClicked: stackView.push(page)
+ }
+
+ Button {
+ text: "Pop"
+ enabled: stackView.depth > 1
+ width: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, pane.availableWidth / 3))
+ anchors.horizontalCenter: parent.horizontalCenter
+ onClicked: stackView.pop()
+ }
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Stack Depth: " + stackView.depth
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SwipeViewPage.qml b/examples/quickcontrols/gallery/pages/SwipeViewPage.qml
new file mode 100644
index 000000000..03958320e
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SwipeViewPage.qml
@@ -0,0 +1,49 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Pane {
+ id: pane
+
+ SwipeView {
+ id: view
+ currentIndex: 1
+ anchors.fill: parent
+
+ Repeater {
+ model: 3
+
+ Pane {
+ width: SwipeView.view.width
+ height: SwipeView.view.height
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "SwipeView provides a navigation model that simplifies horizontal paged scrolling. "
+ + "The page indicator on the bottom shows which is the presently active page."
+ }
+
+ Image {
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+ }
+ }
+
+ PageIndicator {
+ count: view.count
+ currentIndex: view.currentIndex
+ anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/SwitchPage.qml b/examples/quickcontrols/gallery/pages/SwitchPage.qml
new file mode 100644
index 000000000..cca200582
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/SwitchPage.qml
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Switch is an option button that can be dragged or toggled on or off. "
+ + "Switches are typically used to select between two states."
+ }
+
+ Column {
+ spacing: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Switch {
+ text: "First"
+ }
+ Switch {
+ text: "Second"
+ checked: true
+ }
+ Switch {
+ text: "Third"
+ enabled: false
+ }
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TabBarPage.qml b/examples/quickcontrols/gallery/pages/TabBarPage.qml
new file mode 100644
index 000000000..d4dfeb895
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TabBarPage.qml
@@ -0,0 +1,57 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+Page {
+ id: page
+
+ SwipeView {
+ id: swipeView
+ anchors.fill: parent
+ currentIndex: tabBar.currentIndex
+
+ Repeater {
+ model: 3
+
+ Pane {
+ width: SwipeView.view.width
+ height: SwipeView.view.height
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "TabBar is a bar with icons or text which allows the user "
+ + "to switch between different subtasks, views, or modes."
+ }
+
+ Image {
+ source: "../images/arrows.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+ }
+ }
+ }
+
+ footer: TabBar {
+ id: tabBar
+ currentIndex: swipeView.currentIndex
+
+ TabButton {
+ text: "First"
+ }
+ TabButton {
+ text: "Second"
+ }
+ TabButton {
+ text: "Third"
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TextAreaPage.qml b/examples/quickcontrols/gallery/pages/TextAreaPage.qml
new file mode 100644
index 000000000..3e9d7ee52
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TextAreaPage.qml
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "TextArea is a multi-line text editor."
+ }
+
+ TextArea {
+ width: page.availableWidth / 3
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ wrapMode: TextArea.Wrap
+ text: "TextArea\n...\n...\n..."
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TextFieldPage.qml b/examples/quickcontrols/gallery/pages/TextFieldPage.qml
new file mode 100644
index 000000000..2b06894c8
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TextFieldPage.qml
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "TextField is a single-line text editor."
+ }
+
+ TextField {
+ id: field
+ placeholderText: "TextField"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/ToolTipPage.qml b/examples/quickcontrols/gallery/pages/ToolTipPage.qml
new file mode 100644
index 000000000..dd92c89b4
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/ToolTipPage.qml
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "A tool tip is a short piece of text that informs the user of a control's function."
+ }
+
+ Button {
+ text: "Tip"
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ ToolTip.timeout: 5000
+ ToolTip.visible: pressed
+ ToolTip.text: "This is a tool tip."
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/pages/TumblerPage.qml b/examples/quickcontrols/gallery/pages/TumblerPage.qml
new file mode 100644
index 000000000..4d01f02e8
--- /dev/null
+++ b/examples/quickcontrols/gallery/pages/TumblerPage.qml
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Controls
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "Tumbler is used to select a value by spinning a wheel."
+ }
+
+ Tumbler {
+ model: 10
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols/gallery/qmldir b/examples/quickcontrols/gallery/qmldir
new file mode 100644
index 000000000..6b7f86bfa
--- /dev/null
+++ b/examples/quickcontrols/gallery/qmldir
@@ -0,0 +1 @@
+module App
diff --git a/examples/quickcontrols/gallery/qtquickcontrols2.conf b/examples/quickcontrols/gallery/qtquickcontrols2.conf
new file mode 100644
index 000000000..da1a8f41d
--- /dev/null
+++ b/examples/quickcontrols/gallery/qtquickcontrols2.conf
@@ -0,0 +1,8 @@
+[Material]
+Primary=#41cd52
+Accent=#41cd52
+Theme=System
+
+[Universal]
+Accent=#41cd52
+Theme=System
diff --git a/examples/quickcontrols/gallery/rc_gallery.py b/examples/quickcontrols/gallery/rc_gallery.py
new file mode 100644
index 000000000..786c9cfbc
--- /dev/null
+++ b/examples/quickcontrols/gallery/rc_gallery.py
@@ -0,0 +1,4410 @@
+# Resource object code (Python 3)
+# Created by: object code
+# Created by: The Resource Compiler for Qt version 6.5.0
+# WARNING! All changes made in this file will be lost!
+
+from PySide6 import QtCore
+
+qt_resource_data = b"\
+\x00\x00\x09\xc1\
+\x00\
+\x00)\xbbx\xda\xc5Z\xdds\xdb6\x12\x7f\xd7_\x81\
+\xb0/RcQ\xb6s\xc9\x03\xdb\xdc\x8d-'\x8d\xe7\
+\x9cKb\xf9\x9a\xcet\xfa\x00\x91\x90\x843\x04\xd0\x00\
+h[\xcd\xf9\x7f\xbf\x05\xf8!~\x00\xb2\xc4I\xe78\
+\x93\x98\x04\x16\x8b\xc5b?~Xh2AS\x91n\
+$]\xae4\x1aNG\xe8\xf4\xf8\xf4\x04\xdd\xac\x08\xfa\
+\xa2\xa1g\x9db\xbeAW:\x09\x07\x93\x09\x9a}\xbe\
+\xf8m|Ec\xc2\x15\x19_&\x84k\xba\xa0DF\
+\xa8h\xbb&\x8b\xf1\x17=\x86ak\x22c\x8a\x19\xfa\
+t\x8d\xceg\x17\xe3W\xe3)\xc3\x99\x22\x83A*\xf1\
+r\x8d-g\xc1\x81\xc19Y\xe1{*\x80\xc7\xb9\xc8\
+x2\x18P\xe8\x90\x1af\x9f\x0aI\xb6__2\x1a\
+\xdf\xb6>\xc3+\xbc\x11\x99V\xed\xe6\xa9\xe0Z\x0a\xa6\
+*fA\x18 \xac\xd0Y\x9a\x0e\x06\xf0\x1f\xa31\xd6\
+T\xf0\xaf\x94'\xe2\x01}\x1b xh\x12\xa1\x07\xdb\
+`?\x1fh\xa2W\x11z\xf5\xe6\xd8~\xae\x88QP\
+\x84^\x9f\xe6\xdf\xf7T\xd19#\x11\xd22#\xb6E\
+Sm\xbe\x03P\x9b\x95\x02\x95R\x04\x03\xdb?\x99\xbc\
+@\xbf\x0bIa\xcdv\xf2?l\xab$8\x11\x9cm\
+P*EJ\xa4\xde\xa0\xb9\x10\x0c\x19\xa9%\xa6\xfa\xa3\
+HH)VhEB?\x97\x9f\xb9H\x1e\xde\xb6y\
+\x91\xf1\xd8|\x82\xf4,\x1d\x8e\x8a\x85\x9a\x87\x11\x8d\x12\
+\xaaR\x867\x94/\x0bI\xd1[\xc4\xa8\xd2\xbfR\xf2\
+\x10\xc6\x99\x94\xc0\xed\x92'\xe4\x11\xbdx\xfb\x16\x8dO\
+\x1a\x83\x8b\xfeb\xe4\xbf\xf0\x9a\xc0\xe8\x0e\xc7j\x88y\
+\xfe\xb1\xe5\xbe\x86e\xb1pI\xf4\xd09\xe1(\xb4\xca\
+\x0c\xb5\xb8\x12\x0fDN\xb1\x22 =\xe86h\xc8\x90\
+I#r\xb0\xd2:U\xd1d\x92\x888\xbc\xd3!\x15\
+\x93;=~3\x09\x1a\x93\xbfD\xc3\xdd\xd2Y\x01\x83\
+\xbb5\x1b\xdf\xe9;\xb3\x7f\xe3\xb8\xd8\xbf\xd3q\x00\xc3\
+\x1d\x0b~\x09v\xb5\xd2k\x16\xb4\x19\x81\xa4]&\xc0\
+\x1a\x96\x9d\xc1\xb2\xec\x98\xd1O\xd5\xa8/:\x84\xbd\xe7\
+\xff\x96\xec\xdd\xa3&\x92c\xc66CX\xdc\xc8R<\
+\x0d\x0aC\x01\x86\x92$[C\xb9\xc7\x12\xcd3\xca@\
+g3\xbdaD\xe5\x843\xa25\xacQ\xd5v\xdb\x98\
+\xb6*\x9a\xab\xc6\x8a\x8f\xd2\x12:\xe0\x0f\xf0\xa8\xcf8\
+[\x81\x11\xc6\x99\xae1R \x04\xe11Q\x11\xfa=\
+x\xa7\xe2\xe0\x08\x05\xe78\xbe\x0d\xfe\xa8H\x08\xc7\xe0\
+\x17fB\x0d\x1dvk\x13\x92\x82\xdd\xfe\x1dm-H\
+\xf030\xcc{\xac\x0d!\x07\xff_\xc2\xabatf\
+\xed5\x04\x89\x96K\x22\x87\xa3=\xe5\x89\xd0Lc\x9e\
+`\x99\xfc\x93l\xc2\x0f`\xedf\x9f`\xbb\x94{\xca\
+\xca\x83\x8c[\xd4\xe7\xc8\xe7o\xa9\xae+\xe0\xb6\x1b\xf6\
+7\xe4`\x0c\xce\xf5\x1a\x8b\x9a\x1b\xf5\x18\x8bH$\x06\
+[\x0ej\x02\xdd\xe4\xab4\x02}k\x98\x10]\xa0\xa1\
+\x83\xdd\xa8Ef5P\x91\xa5\xa2\x5cK\xfdq;t\
+\xc3\x9d\xed\xf2\x11a\x8a8\xf8\xe7R[\xfblq\x7f\
+\x1a4\xdf\xf6\xd9\xa5\xe0#\xe1Y\xe0\xde\x13\x91\x1a\xcd\
+*C\xb1\xcb\x0a\x9c;\xd4\x19\xeb\xda\xa0`\xdd\x9a\xbc\
+\xa6\xff\x1a\x83\xfaZ\x8b9W\x10\xa4M\x96\x83\xd4\x11\
+\xde@x>\x07\xcf\xdb\x0ap-\x1e\xf2<\xd4R\x9f\
+Jq\x0c\x8e\x15\xa1\x22e\x94\x0f\xe61\xe8H\x85\x0b\
+\xcaX\x84Rl\xb6\xc5I\xc0\xc8B\x7f\xc4rIy\
+\x84^\x14&[O\x0c`^\xc5\xf6\xe4\x99!B\x90\
+@\xc9\x82r\x92\x0c\x1a\x0c\xad\xcc\x99\xd6\x0d\xbdU\xb3\
+Y\x85\xed\xb4\xf2\xf2\xa9\x92\x9eC\x98\x96m4>\xaf\
+\xf0\x9c0\xc7\xd4f\xebl\xa4\xb7\x04\x9dnM\x1e!\
+\xe3v,X\x935\xac|\xe8l\x87$o\xfe^\x10\
+F\xccZ \x91\x00\x0f\xe3}\xbf@P%r\xd3\x09\
+\xd5h\x01\x81\x22L\xe9#a3\xfa'\xe9l\x96\x0d\
+i\x8c\x9a,l\x85\x0c\xdf\x99\x8f\xeb*\xf3\xd6\x1f\xd8\
+4\xfa'\xb0\xc3\xec\x8c\xd1%\x07s\x03\xf1!\xb8\xdb\
+\xaf\x0fS\xf8$\xb2\xabS\x88\xc1\x00G\x5cC~\xf5\
+\x0c\xc9\xad\xcd\xda\xcf\xd7\x1c\xa5T \xc4\xb3\x01{\x19\
+@\xd7\x89:\xa4\xa6\xcf\xc1\xc1\xe1\x86N\x9a\xc7\xd2\xdc\
+\x0b\x83\x1d\xe7(\xcbI\x0b\x86\xc5\xd5B\xc8\xf5'\xf0\
+R\xe3\x01\xd67oD\x9a\xeb\xde9\xa6\x13\x1b\xdc\x16\
+\x15\x94)2\xf0\x126\x82C\x99:/\x00\xd0\x8a\xa5\
++\x16vcb\x1f\xb1L\xde\xdaS\xa4n\x02\xfb\xbe\
+\xa2\x9c\xcd\xc1\xc2\xf6\x94\x05\x1b\xda>\xbay\xda'\x9f\
+\x5c\xd8\x08\xd7\x8a\xf7y\xd8\xdb\x1aA\x01\xd6?b\xbd\
+\x0a\xd7\x94\x0f\xeb\x80\xf9\xa8\x89\x97Gh\x82^\xa1\x1f\
+\xd1i5\xb8\x84\xf6]Xm\x1e\xc0l\x98\xed\x8ex\
+\xd4x\xa9\xf1\xa2{wh4\xd1\xaa\x9d\xce\xdf\x02\xa4\
+>1\x98v\x81!\xf1nA\x99P4\xf7F7\x9f\
+c\x18\xb1\xcd\xdcU<ve\x87\xadv\xae\x8aH\xd9\
+F\x19\xc96\xb86\xfdi!\xe2L9\xa2J\x1dC\
+Dm\x08\xe1Lk\x0d\x0a\x8b\xfa#+\x8e\x11\xd0\x95\
+\x11L\xdf;FL\x1cD\xdf\xaa#\xd5y\xa660\
+\xa99\xb5\x09\x19\xfc\x84\x94\xc8\xa4\x85\x13w2\x8e&\
+)^\x125i\xd0|\x86\xa6\x10\x00w\xe0\xb0:\xdf\
+\x14&:zy\x9b\xce\xc3\x99NW$\xbe=\x17\x8f\
+\x1e\xb6ew\x0f\xc6b=\x17;\x18\x17\xdd\x873\x86\
+\xc4\x897;uQ\xa3\xe8\xc1\x1e\xa2\x84\x8f/t\xf5\
+c(\x96;X\x8ae/%X\xf4\xa0\xfc*\xb0\xfd\
+\x87s~/\x01\x89z\xb8\xda\xbe\xc3Y\xfe\x22E\x96\
+\xfaM\xa1\xec>\x9c\xb1\x19\xf1\x9c\xd35hzL!\
+\xc5R\x12\xa5\x00O\xfb&\xd8R\x1c\xce\xfe\x1a'T\
+\xec4\xe6\x1aE\x1f\xf6|If\x06\x0eJ/\xfb\x8a\
+\xe2p\xf6\xb3X\x0a\xc6\xfc\xaa\xa9\xfa\xfb\xb2~ns\
+[T=\xa6\xd9\xa5\x9b\xdejI)\xf7\x9b{\xd1\xdb\
+\x83m\x99\x9f}\x8c\xcb\xfe\x1e\xac\x1fhJv\xb1.\
+\xfb{\xb1\xd6\xf1\xca\xcf\x17:\x0fgz\x83\xe7~\xab\
+\xcb;{0\x05\x5cy&\x09\xf6\xb1-\xba\xfb1~\
+O\x09Kvp\xb6\xfd=X\xc3\xa9\xe9\x86\xa6>\xc6\
+yo\x0f\xb6\xd9\x1a@\x9bW\xc1y\xaf\x8fm\xeb`\
+\x97\x14\xa9(j\x1c{=G\xed\x92\xd8\x90v\x08\x0a\
+\x08]b\xc5\xf0\xde\xfc\xe7>\x9e\xe5g\x04\xbb\x9c\xee\
+\x19\x18\xc033\x00\xda\x9c\x0c*fTM\xb7\x87\xf4\
+\xee\xd9\xad[\xdb\x04H\x0d\xff\x00f\xeeAk\xea\xa0\
+\x16Z\xeeA[\xd4:\xdd\xb2{\xc9\xf3}\xea\xca-\
+\xf8\x94\xd1\xf8\xb6[\xc0{\xae\xfa\xe6^Z\xab\x9e\x97\
+\xa9\xd50\x9f\xd9}\xa02UB\x07\xee\x1fyOm\
+E\xb1(f\xc2\xd4\xd3\x9f=\x8e5>[\xc9 ,\
+\xcb\x16Q\xbb\x07\x0c\xddW\x19,\x97\xd6\xaeL\x97\xed\
+\xdb\x19w\x96\xc8\xbeky\x8cr8oaf\xec2\
+B\x9f1'\x8eCR\x0a\xcdMm\x5c\xae\xc1==\
+^\x06\x90S\xf8\xbc\xcbp\x0a\xf1=\xa6\xcc\x14\xc9m\
+\xf1\x06\x8e\xa3\xa7]/*\x8e\xa4M\xfa\x0f\xb6\xd59\
+\xa0\xd4Il+F\x97\xdcYW\xac\x13\x96\xfb\x97\x97\
+\x98>-\x16\x8a\xc0|\xe3\xd7\xdd\xea\x97\xd9\x83\xfc\x1a\
+\xca\xae:\xfc\x0cx\x8c\xc8{r\xa6R\x12Ch\xed\
+\xceQ\x855\xba\xb6!\xedN\x8f\x8dR\xc2\x94/\x83\
+>e\xc2\xa2&\xd1\xb9X3~z\x0f(B!l\
+j4H,Py\xdd\x82\xf4\x0ak\x14c\x8e\xe6\x04\
+e\x0a|Z\x0b{Y\x92\x00\xc9:e\x04\x82\xa4=\
+\xb6/p\x0c\xe3)G%\xf70\xf0\xealm\x8dM\
+9k\x84%\x8d\x16in\x02\xe1\x5c\x00\xac\x5c{\x09\
+\x8d\xf5V\xe50\xf3\xe1\xa5\x94\xa5-XR\xe9,=\
+\x96\xb4\xf9\xa4\x11\xc2R\x827\x800\xfb\x15)\xf3\xd2\
+\xe6\xa1u\xca\xda(_\xa9\xf2A\xe247\x9e\x9c\xf8\
++|\xef2\x81]\x8ee\xd7\xf4\xac\xb1\xe5+\xef\x98\
+Z?\xd5\x97\xea,h=[z@Y\xdc]\xe2\xb2\
+\xe7T\xcf}]\xde9\xa8\x95Pm\x95K\x9a\xcb\xf2\
+a\xa3\xd0U\x96SM\x85\xebt\x1b\xde7\x8d\x11\x8d\
+\x22\x17\x10\xbe\x199\x8bh9\xf1A\xf5\xb4Q\xbbd\
+\xd6(\x1f\xb9JJ\x15\x8a\xad\xca\xb1\x83Z\x1a\xb4\xd7\
+y\xf9\xd9\x0c\x06\x16\xf5\xc5O\xb7\xe8\xbf\xe5\xfb\x14v\
+\xa9\x96\xf4\xcdeRLR\xdd\xcd\xc6\xa5*C{\xc5\
+\x09\xe9\xd7\xfe\x85cBX\x5c\x09\x1b\x8c\xe8\x1cQ\xcc\
+\xd4\xce\x98O\xb5I\xaf\xc9\x7f \x0c:&-\xe7h\
+\xa5\xfe\xaa\xdd\xbe\x5cv\x80\xc0\xb3SW\xafq~\xc5\
+\x99\xa7\xae\xa9`\xd9\x9a;\xef\xa1\xea\xd6\x94\x93y\xaf\
+\xa9\x1a\x1d\xbe{\xad\xc6\xa0\x93\xe3\x81\xe3~\xc2\x1d\xc7\
+\xeb\x15x\xb3\xf8(p`\x90NSY\xcc\xdaq\xef\
+P\xea\xd4I\xd0\xc0\x94[\xa5w\xea\x97\xad*ea\
+\xe4\xcd\x0bv\x17}\xf5K\x96\x10\xe0`\x91[\xbc\x80\
+\xb0\xb2\x8c\xd2\x1c\x00\x8e$\xc3\xa6\x81\x1e\x99\x0b p\
+\xbdx\xf5\x9e>\x92df1\xa8\x1f\xd5\xe5\x97\xc5\x15\
+\xcb\xfc\xb7\x1a~\xf2v\x1d\xb74\xc9K/$u\xdf\
+$\xecq\x09\xf5,\xa8|&\xe1_\x13\x08\x03RW\
+\xb8\xbck.\xb1`\xe6\x97C\xc1\x0f\xe4o'\xe4\xf4\
+u\x97@\x18;\xd5\x9b\xc8\xe3\x8eFY\x0e\x87\x04\xe4\
+x\x12\x9aR\xfbqx\xfc\x7fN\xa0{\xaa\xb9F\xf6\
+\xa1\xc0\x8e\x8e;\xc1\xfd\xb3O\xedN\xa7wXo\xdd\
+!\x81\xc7\xf9\xd3U=[uR\xd4\xf7\xb9\xe6)\xc2\
+e\xa9\x1e\xbb\xc2<\x1c\x96W>\x83\xadK\x9bfG\
+\x18\xad\x0d\xda/\x86\xfa,\xbcXI\xfd\xea\xacy,\
+\xf0\xf9D\xf1\xc3\xbc\x16\x10\xce\x7fXd\x0e\xf8\x14\xcc\
+\xcc\xa0_\x82\xb8\xb9\xf9^\x12N\xa4\xfdI\x98A\xc1\
+r\x8by\xb7Hy\x8e\x0d<\x16;\x11\xf0\xb30\xce\
+u\x93~r\xda\xc7\xf7{k\xe6\x92[h\x8f%U\
+\xb0\x18\x80\xfb]5\x9d\x1c9\x1a\xdd\xb7\x9c/Q\x00\
+\x98\x0f\x80 \x122\x01\xc5\xc1\xd9\x02\xf0%\x1c\x163\
+8X*j\xc2\xbc<By\xa5\x03^\x00\xad\xa0\x05\
+V\xf0\xfe\x97i\xaf\xed\xbcO\x83\xff\x01\x9e\xca\xab\x1d\
+\
+\x00\x00\x00`\
+[\
+Material]\x0aPrimar\
+y=#41cd52\x0aAccent\
+=#41cd52\x0aTheme=S\
+ystem\x0a\x0a[Universa\
+l]\x0aAccent=#41cd5\
+2\x0aTheme=System\x0a\
+\x00\x00\x00\x94\
+/\
+/ Copyright (C) \
+2021 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick.Co\
+ntrols\x0a\x0aToolBar \
+{}\x0a\
+\x00\x00\x00\x0b\
+m\
+odule App\x0a\
+\x00\x00\x03\x0b\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22SpinBox\
+ allows the user\
+ to choose an in\
+teger value by c\
+licking the up o\
+r down indicator\
+ buttons, \x22\x0a \
+ + \x22b\
+y pressing up or\
+ down on the key\
+board, or by ent\
+ering a text val\
+ue in the input \
+field.\x22\x0a \
+}\x0a\x0a SpinB\
+ox {\x0a \
+ id: box\x0a \
+ value: 50\x0a \
+ ancho\
+rs.horizontalCen\
+ter: parent.hori\
+zontalCenter\x0a \
+ editabl\
+e: true\x0a \
+}\x0a }\x0a}\x0a\
+\x00\x00\x02\x84\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22PageInd\
+icator is used t\
+o indicate the c\
+urrently active \
+page in a contai\
+ner of pages.\x22\x0a \
+ }\x0a\x0a \
+ PageIndicator \
+{\x0a co\
+unt: 5\x0a \
+ currentIndex:\
+ 2\x0a a\
+nchors.horizonta\
+lCenter: parent.\
+horizontalCenter\
+\x0a }\x0a }\
+\x0a}\x0a\
+\x00\x00\x05{\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aPage {\x0a \
+ id: page\x0a\x0a \
+SwipeView {\x0a \
+ id: swipeVie\
+w\x0a anchor\
+s.fill: parent\x0a \
+ currentIn\
+dex: tabBar.curr\
+entIndex\x0a\x0a \
+ Repeater {\x0a \
+ model: \
+3\x0a\x0a P\
+ane {\x0a \
+ width: Swi\
+peView.view.widt\
+h\x0a \
+ height: SwipeV\
+iew.view.height\x0a\
+\x0a \
+ Column {\x0a \
+ sp\
+acing: 40\x0a \
+ wi\
+dth: parent.widt\
+h\x0a\x0a \
+ Label {\x0a \
+ \
+ width: pa\
+rent.width\x0a \
+ \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ \
+horizontalAlignm\
+ent: Qt.AlignHCe\
+nter\x0a \
+ tex\
+t: \x22TabBar is a \
+bar with icons o\
+r text which all\
+ows the user \x22\x0a \
+ \
+ + \x22\
+to switch betwee\
+n different subt\
+asks, views, or \
+modes.\x22\x0a \
+ }\x0a\x0a \
+ \
+ Image {\x0a \
+ \
+ source: \x22../i\
+mages/arrows.png\
+\x22\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ \
+}\x0a \
+ }\x0a \
+}\x0a }\x0a \
+}\x0a\x0a footer: T\
+abBar {\x0a \
+id: tabBar\x0a \
+ currentIndex:\
+ swipeView.curre\
+ntIndex\x0a\x0a \
+ TabButton {\x0a \
+ text: \x22\
+First\x22\x0a }\
+\x0a TabButt\
+on {\x0a \
+ text: \x22Second\x22\x0a\
+ }\x0a \
+ TabButton {\x0a \
+ text: \
+\x22Third\x22\x0a \
+}\x0a }\x0a}\x0a\
+\x00\x00\x02\xc6\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ap\
+ragma ComponentB\
+ehavior: Bound\x0a\x0a\
+import QtQuick\x0ai\
+mport QtQuick.Co\
+ntrols\x0a\x0aScrollab\
+lePage {\x0a id:\
+ page\x0a\x0a Colum\
+n {\x0a spac\
+ing: 40\x0a \
+width: parent.wi\
+dth\x0a\x0a Lab\
+el {\x0a \
+ width: parent.w\
+idth\x0a \
+ wrapMode: Label\
+.Wrap\x0a \
+ horizontalAlig\
+nment: Qt.AlignH\
+Center\x0a \
+ text: \x22BusyIn\
+dicator is used \
+to indicate acti\
+vity while conte\
+nt is being load\
+ed,\x22\x0a \
+ + \x22 or wh\
+en the UI is blo\
+cked waiting for\
+ a resource to b\
+ecome available.\
+\x22\x0a }\x0a\x0a \
+ BusyIndicat\
+or {\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x02\x01\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aPage {\x0a \
+ id: page\x0a\x0a \
+default property\
+ alias content: \
+pane.contentItem\
+\x0a\x0a Flickable \
+{\x0a anchor\
+s.fill: parent\x0a \
+ contentHe\
+ight: pane.impli\
+citHeight\x0a \
+ flickableDirec\
+tion: Flickable.\
+AutoFlickIfNeede\
+d\x0a\x0a Pane \
+{\x0a id\
+: pane\x0a \
+ width: parent\
+.width\x0a }\
+\x0a\x0a Scroll\
+Indicator.vertic\
+al: ScrollIndica\
+tor { }\x0a }\x0a}\x0a\
+\
+\x00\x00\x03O\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Progres\
+sBar indicates t\
+he progress of a\
+n operation. It \
+can be set in an\
+ \x22\x0a \
+ + \x22indetermin\
+ate mode to indi\
+cate that the le\
+ngth of the oper\
+ation is unknown\
+.\x22\x0a }\x0a\x0a \
+ ProgressBa\
+r {\x0a \
+id: bar\x0a \
+ value: 0.5\x0a \
+ ancho\
+rs.horizontalCen\
+ter: parent.hori\
+zontalCenter\x0a \
+ }\x0a\x0a \
+ProgressBar {\x0a \
+ indete\
+rminate: true\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x02\xda\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22A tool \
+tip is a short p\
+iece of text tha\
+t informs the us\
+er of a control'\
+s function.\x22\x0a \
+ }\x0a\x0a \
+Button {\x0a \
+ text: \x22Tip\x22\
+\x0a anc\
+hors.horizontalC\
+enter: parent.ho\
+rizontalCenter\x0a\x0a\
+ Tool\
+Tip.timeout: 500\
+0\x0a To\
+olTip.visible: p\
+ressed\x0a \
+ ToolTip.text:\
+ \x22This is a tool\
+ tip.\x22\x0a }\
+\x0a }\x0a}\x0a\
+\x00\x00\x02\x9b\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22TextAre\
+a is a multi-lin\
+e text editor.\x22\x0a\
+ }\x0a\x0a \
+ TextArea {\x0a \
+ width:\
+ page.availableW\
+idth / 3\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a\x0a \
+ wrapMode: Te\
+xtArea.Wrap\x0a \
+ text: \x22T\
+extArea\x5cn...\x5cn..\
+.\x5cn...\x22\x0a \
+}\x0a }\x0a}\x0a\
+\x00\x00\x02\xff\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Slider \
+is used to selec\
+t a value by sli\
+ding a handle al\
+ong a track.\x22\x0a \
+ }\x0a\x0a \
+ Slider {\x0a \
+ id: slider\
+\x0a val\
+ue: 0.5\x0a \
+ anchors.hori\
+zontalCenter: pa\
+rent.horizontalC\
+enter\x0a }\x0a\
+\x0a Slider \
+{\x0a or\
+ientation: Qt.Ve\
+rtical\x0a \
+ value: 0.5\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x02E\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Tumbler\
+ is used to sele\
+ct a value by sp\
+inning a wheel.\x22\
+\x0a }\x0a\x0a \
+ Tumbler {\x0a \
+ model:\
+ 10\x0a \
+anchors.horizont\
+alCenter: parent\
+.horizontalCente\
+r\x0a }\x0a \
+}\x0a}\x0a\
+\x00\x00\x04i\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Lay\
+outs\x0aimport QtQu\
+ick.Controls\x0a\x0aSc\
+rollablePage {\x0a \
+ id: page\x0a\x0a \
+ Column {\x0a \
+ spacing: 40\x0a \
+ width: par\
+ent.width\x0a\x0a \
+ Label {\x0a \
+ width: pa\
+rent.width\x0a \
+ wrapMode:\
+ Label.Wrap\x0a \
+ horizont\
+alAlignment: Qt.\
+AlignHCenter\x0a \
+ text: \x22\
+Button presents \
+a push-button th\
+at can be pushed\
+ or clicked by t\
+he user. \x22\x0a \
+ + \x22Bu\
+ttons are normal\
+ly used to perfo\
+rm an action, or\
+ to answer a que\
+stion.\x22\x0a \
+}\x0a\x0a Colum\
+nLayout {\x0a \
+ spacing: 2\
+0\x0a an\
+chors.horizontal\
+Center: parent.h\
+orizontalCenter\x0a\
+\x0a But\
+ton {\x0a \
+ text: \x22Fir\
+st\x22\x0a \
+ Layout.fillW\
+idth: true\x0a \
+ }\x0a \
+ Button {\x0a \
+ id\
+: button\x0a \
+ text: \x22\
+Second\x22\x0a \
+ highligh\
+ted: true\x0a \
+ Layout\
+.fillWidth: true\
+\x0a }\x0a \
+ Butto\
+n {\x0a \
+ text: \x22Third\
+\x22\x0a \
+ enabled: false\
+\x0a \
+ Layout.fillWidt\
+h: true\x0a \
+ }\x0a }\x0a\
+ }\x0a}\x0a\
+\x00\x00\x03\xa5\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22Switch \
+is an option but\
+ton that can be \
+dragged or toggl\
+ed on or off. \x22\x0a\
+ \
++ \x22Switches are \
+typically used t\
+o select between\
+ two states.\x22\x0a \
+ }\x0a\x0a \
+ Column {\x0a \
+ spacing: 2\
+0\x0a an\
+chors.horizontal\
+Center: parent.h\
+orizontalCenter\x0a\
+\x0a Swi\
+tch {\x0a \
+ text: \x22Fir\
+st\x22\x0a \
+}\x0a Sw\
+itch {\x0a \
+ text: \x22Se\
+cond\x22\x0a \
+ checked: t\
+rue\x0a \
+}\x0a Sw\
+itch {\x0a \
+ text: \x22Th\
+ird\x22\x0a \
+ enabled: fa\
+lse\x0a \
+}\x0a }\x0a \
+}\x0a}\x0a\
+\x00\x00\x02a\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22TextFie\
+ld is a single-l\
+ine text editor.\
+\x22\x0a }\x0a\x0a \
+ TextField {\
+\x0a id:\
+ field\x0a \
+ placeholderTe\
+xt: \x22TextField\x22\x0a\
+ anch\
+ors.horizontalCe\
+nter: parent.hor\
+izontalCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\
+\x00\x00\x05\xcc\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22ComboBo\
+x is a combined \
+button and popup\
+ list. It presen\
+ts \x22\x0a \
+ + \x22a list o\
+f options to the\
+ user that occup\
+ies minimal scre\
+en space.\x22\x0a \
+ }\x0a\x0a Co\
+mboBox {\x0a \
+ model: [\x22Fi\
+rst\x22, \x22Second\x22, \
+\x22Third\x22]\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a }\
+\x0a\x0a Label \
+{\x0a wi\
+dth: parent.widt\
+h\x0a wr\
+apMode: Label.Wr\
+ap\x0a h\
+orizontalAlignme\
+nt: Qt.AlignHCen\
+ter\x0a \
+text: \x22ComboBox \
+can be made \x5cl e\
+ditable. An edit\
+able combo box a\
+uto-\x22\x0a \
+ + \x22complet\
+es its text base\
+d on what is ava\
+ilable in the mo\
+del.\x22\x0a }\x0a\
+\x0a ComboBo\
+x {\x0a \
+id: comboBox\x0a\x0a \
+ editab\
+le: true\x0a \
+ model: List\
+Model {\x0a \
+ ListElem\
+ent { text: \x22Ban\
+ana\x22 }\x0a \
+ ListEleme\
+nt { text: \x22Appl\
+e\x22 }\x0a \
+ ListElement\
+ { text: \x22Coconu\
+t\x22 }\x0a \
+ }\x0a o\
+nAccepted: {\x0a \
+ if \
+(find(editText) \
+=== -1)\x0a \
+ comb\
+oBox.model.appen\
+d({text: comboBo\
+x.editText})\x0a \
+ }\x0a \
+ anchors.h\
+orizontalCenter:\
+ parent.horizont\
+alCenter\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x04\xce\
+\x00\
+\x00\x1c\xd2x\xda\xedY\xddo\xdb6\x10\x7f\xd7_A\
+\xa8/\x096+\xb1\x13`\x80\xfa0\xb4N\xb1\x04p\
+\xd6\xc4\x1e\xd6\x02\xc3\x1e\x18\xe9l\x13\xa1H\x85\xa2\xe2\
+\xb8C\xfe\xf7\x91\x92,\x93\xd6\x87\xe5D)V`~\
+\x08B\xde\x07y\xbf;\xde\x1d\xa9\x93\x134\xe6\xf1Z\
+\x90\xc5R\xa2\xa3\xf11\x1a\x9d\x0e\x7fA\x7f,\x01\xdd\
+JE\x89b\xcc\xd6h\x22C\xcf99A\xb3\x9b\x8b\
+\xaf\x83\x09\x09\x80%0\xb8\x0a\x81I2' |T\
+\xccMa>\xb8\x95\x03%\x16\x81\x08\x08\xa6\xe8\xf3\x14\
+}\x9c]\x0c\xce\x06c\x8a\xd3\x04\x1c\x87D1\x17R\
+)\xbfMIp\xbf3\xf4&x\xcdS\x99\xecN\x8f\
+9\x93\x82\xd3\xc4qn0\x03\xf4\x8f\x83\xd4o\xcci\
+\x1a\xb1\x5c\xa2\x98\xd2\xbf$\xc6\x01a\x0b\x1f\x9d\x9f\x96\
+s\x98\x05K.\x12oN(\xf5Q\x8c\x85\xday\x85\
+(y|\x8d\xc5\x820_a\xe0\x94\xe4\x09\xbe\x03j\
+\xe8\xcf\xe7\xf4\xa2\x99\xba/$\x94K\x1fI\x91\x82\xc5\
+\xb2\x128\xbe\xe6!\xf8\xb9\x02\xef\x8b\x1a[\x0cjM\
+\xf2M\xd9\x85\xe9\x07J\x16,R[\xf2\x95\xc1^6\
+\xba\x1c\xab!\x08K@\xc2\x93\xe2p/\x80\xc2\x02K\
+@A\x01\x0aR\xe6 \x85m\x88p\x82\xc2\x82\x9a \
+\xc2\xd0#\x81U\x82\x924Xj\xd2\x84$\xf2O5\
+\xe3\xb9\xa5\xdag\xc3\xcc\x82\xbac)\x09}D\x0b\x92\
+E\x08(\x89k\xccN \x90\x843/\x16<\x06!\
+\xd7j\xc3r\x1d\x83[\xcb\xb4\xd9\xac\x8f\x0c\xb7\xee\xae\
+^0k\x8e\x0a]\xc0CJ\x84\xb2|\xb3\x1cJ\xa4\
+P\xce\xdf\x08U\x04V\xb9\xb7J(4B^6Y\
+a]\x82>\x12\xe5\xfa\xb9\x17U\x5cR\x12\x10y\x99\
+\x11\xd1O:Rv\x05\xeb\x02\xa6\xc6\xa0\x8c\xad\x96)\
+w\xb4a\xb7\xd7d\x8e\x19\xbeA\x161W\xac\x12\xdf\
+[g\xdb\xa3C#\xda`\xb9,\xb0\xc9x\x1c\xdb#\
+8\xe4\x8c\xae\xb7\x1ey\xc4\xa2\x8cJ\x9dO8S\x9b\
+\xbb\xc6*x\xaa\x10\xb9W\x12\xa2M\x80\xbb>\x22\xc6\
+\xb0\x94\xfd\xb9*6[\x91\x18\x0c\xb9\xc4\x1c\xb7\x09\x8e\
+\x97\x10\xdc\x1b\x82\x819n\x13\x9c\xe2\x90pCP\x98\
+\xe3=[\x95\xc1\xd2\xde\xab1Q\x8a\xb69\xabdj\
+82\xb5\xb09\x15V\x13\xec\x86xU9\xff!\xa2\
+\x94\xa8\xa5B\x92\xe0;\xaa2\x0d{H1\xd5y?\
+l\x89\xdeGLS\xd8\xa7\x12X'\x8d\xc5\xa1\xcd\xc3\
+\xba\xe1\xb4>\xbf\x06\xaf\xfap\xa9\x02f\x85Y\xdb\x09\
+7\xf9~,\x5ck\x19\xdb\xf03\xed\x16\x10\xf1\xc76\
+\x007\xbf\xa9\xcag\x98-(\xb4(\xcc\x8a\x0c\xa7\x5c\
+u\x17\x16\xee\xaa\xb4@\xa2\xab\xdd\xaf\xc8}wvv\
+\xe6\x22Uc\xde\x9d\x9f\x9f\xbb\xad\xaa\xba\x04Q]\xfa\
+/\x04\xf2a\xfbf\xb7\x15\xb1\x95\xcf\xb6\x86\xb3\xb1\xaa\
+(\xf7\x10\xfa{\xb0xa\xd8\x98\xbf\xac\xdaE\xaa)\
+\xa1^\xee\xaa#\x9e\xaa\x8a\x11\xc2\xd3\xf1!Kw\x0c\
+\xaf\x86\xc3xH\xb9\xec\xd1\xf6\xb9\xea\x96\xbc\x98<\x01\
+\x9d\x91o\xb0sF=\x9b\xfa\x86`\x18\x8d\xdc4s\
+\x81\xbb\x97\xbd8\x04\xeej\xa9\xf2\xfa~\xf6\xce\xfd@\
+s\xfa\xdcOi\xf0\xe9L\xf5c\xfaR\xa0zZF\
+\x22\xac{\x96N)\xa3\xe4n\x0e\x95\x9b\xa2\x9f\xf8\x10\
+\xec\xd1\xfa\xcaX\x91\xea\x0a\x00\xca=\x9b\x96E\x17I\
+\xe7mb\xc1\xe8\x91\xcb\x86T-\x8b\xd7]\x22#+\
+\x045]Z7\xaf\xfe\x9eFw \xba8\xe9\x0d\xe0\
+\xf4\xc8w\xc14O\xd9\xed(J\xee\xa3\xd3V\x0e\xc0\
+\x89\xbaPx\xfa\x12\xe3\xa3O\xf9\xe0\x8a}N\xd5\xcd\
+\x14\x87/@\xfe\xff8\xae\x8d\xe39\xa6\x09\xf4\x93\x84\
+\xb2\xcc\xeeQ\x98\xcbjG\xd2\xcc/\xf2r\xdfE\xa0\
+4\x92\xb3\xdc\xc2J\x1a\xf3\x12\x05\xbf<:\xee\xb7M\
+\xad\xbf\x9cTA\xb0.5\xff\xd5\xc6\xbe\x15\x89\x8f\xa9\
+\x94\x9c\xfd&x\x1a7`\x91\xdd\xb7\x0c\xb6\xd7\xe0Z\
+\x7fw\xab\xe2j\xdd\xf9\xbe\x1f\xae\x86\x95\xdeB\xff\xdd\
+c\xfd\x1b\xf8\xa3\xc3\x05\xaa\xf6\x0e[w\x832\x18\x7f\
+\xc8\xd8\xcc\xfa\xe7\xfc\x09I\xbf\xef\xd5\xb5\xae\x9a\xf6\x89\
+B\x94\x01\x86\xf2\xd2a?m\xbc\xdf\xe4=kz\xe8\
+\xd6d\xba\x97*\x1b\xf5\xa9\xec\xac\xb32\xfb)f\xab\
+\xcd\x9a\x1f\xf6\xabn\xd4\xaf\xba\xee\xc6\xda\xcfG[u\
+\xd6\xfc\xb0_u\xa3~\xd5u7\xd6~\xf2\xda\xaa\xb3\
+\xe6\x87\xfd\xaa\x1b\xf5\xab\xee\xa006\x9f\xe9\xacH1\
+\x08\xc3\xbe\x15\x8e\xfaVX1y'\x9dm\xdf\xe0'\
+\x1c\x87 \x1a2\xfc\x86-gz\xcd\xbb\xfa\x81\xd9=\
+\xe1\xa9\x08\xb6%e\xfb5\xc2\xab{T\xfeK\x83\xf3\
+\xb7sX\xfa\xef\xfeY\xa1\xbe\xc04\xb2\xeb\xcdt\xe0\
+\xd6/\xe4YU\xe9\xc0\xabM \xfa\xc5\xa6\xba\xeb\x92\
+\xa7p\xa4\xd9\xf9\xefu\xe0\x81^\xd9\xae\xb5\xf9l\xa4\
+=\xde\xf0\xa9\xe8\xf0\x02l\x99\xbby\xa3\xf2\x0b\xc3\xeb\
++u\xfe\xdf\xb3\xf3\xec\xfc\x0b\x01\xe6r&\
+\x00\x00\x02\xc8\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22The Dia\
+l is similar to \
+a traditional di\
+al knob that is \
+found on devices\
+ such as \x22\x0a \
+ + \x22st\
+ereos or industr\
+ial equipment. I\
+t allows the use\
+r to specify a v\
+alue within a ra\
+nge.\x22\x0a }\x0a\
+\x0a Dial {\x0a\
+ valu\
+e: 0.5\x0a \
+ anchors.horiz\
+ontalCenter: par\
+ent.horizontalCe\
+nter\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x04\xe8\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a readon\
+ly property int \
+itemWidth: Math.\
+max(button.impli\
+citWidth, Math.m\
+in(button.implic\
+itWidth * 3, pag\
+e.availableWidth\
+ / 3 * 2))\x0a\x0a \
+Column {\x0a \
+ spacing: 40\x0a \
+ width: pare\
+nt.width\x0a\x0a \
+ Label {\x0a \
+ width: par\
+ent.width\x0a \
+ wrapMode: \
+Label.Wrap\x0a \
+ horizonta\
+lAlignment: Qt.A\
+lignHCenter\x0a \
+ text: \x22F\
+rame is used to \
+layout a logical\
+ group of contro\
+ls together, wit\
+hin a visual fra\
+me.\x22\x0a }\x0a\x0a\
+ Frame {\x0a\
+ anch\
+ors.horizontalCe\
+nter: parent.hor\
+izontalCenter\x0a\x0a \
+ Colum\
+n {\x0a \
+ spacing: 20\x0a\
+ \
+width: page.item\
+Width\x0a\x0a \
+ RadioButt\
+on {\x0a \
+ text: \x22\
+First\x22\x0a \
+ check\
+ed: true\x0a \
+ wid\
+th: parent.width\
+\x0a \
+ }\x0a \
+ RadioButton {\
+\x0a \
+ id: button\x0a\
+ \
+ text: \x22Secon\
+d\x22\x0a \
+ width: pa\
+rent.width\x0a \
+ }\x0a \
+ Rad\
+ioButton {\x0a \
+ t\
+ext: \x22Third\x22\x0a \
+ \
+ width: parent.w\
+idth\x0a \
+ }\x0a \
+ }\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x05B\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aPane {\x0a \
+ id: pane\x0a\x0a \
+SwipeView {\x0a \
+ id: view\x0a \
+ currentInde\
+x: 1\x0a anc\
+hors.fill: paren\
+t\x0a\x0a Repea\
+ter {\x0a \
+ model: 3\x0a\x0a \
+ Pane {\x0a \
+ w\
+idth: SwipeView.\
+view.width\x0a \
+ heigh\
+t: SwipeView.vie\
+w.height\x0a\x0a \
+ Column\
+ {\x0a \
+ spacing: \
+40\x0a \
+ width: pa\
+rent.width\x0a\x0a \
+ \
+Label {\x0a \
+ \
+width: parent.wi\
+dth\x0a \
+ wrap\
+Mode: Label.Wrap\
+\x0a \
+ horizon\
+talAlignment: Qt\
+.AlignHCenter\x0a \
+ \
+ text: \x22Swi\
+peView provides \
+a navigation mod\
+el that simplifi\
+es horizontal pa\
+ged scrolling. \x22\
+\x0a \
+ + \x22The \
+page indicator o\
+n the bottom sho\
+ws which is the \
+presently active\
+ page.\x22\x0a \
+ }\x0a\x0a \
+ \
+ Image {\x0a \
+ \
+ source: \x22../i\
+mages/arrows.png\
+\x22\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ \
+}\x0a \
+ }\x0a \
+}\x0a }\x0a \
+}\x0a\x0a PageIndic\
+ator {\x0a c\
+ount: view.count\
+\x0a current\
+Index: view.curr\
+entIndex\x0a \
+ anchors.bottom:\
+ parent.bottom\x0a \
+ anchors.h\
+orizontalCenter:\
+ parent.horizont\
+alCenter\x0a }\x0a}\
+\x0a\
+\x00\x00\x04;\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aFlickable\
+ {\x0a id: flick\
+able\x0a\x0a conten\
+tHeight: pane.he\
+ight\x0a\x0a Pane {\
+\x0a id: pan\
+e\x0a width:\
+ flickable.width\
+\x0a height:\
+ flickable.heigh\
+t * 1.25\x0a\x0a \
+ Column {\x0a \
+ id: colum\
+n\x0a sp\
+acing: 40\x0a \
+ width: par\
+ent.width\x0a\x0a \
+ Label {\x0a \
+ w\
+idth: parent.wid\
+th\x0a \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ horizont\
+alAlignment: Qt.\
+AlignHCenter\x0a \
+ tex\
+t: \x22ScrollBar is\
+ an interactive \
+bar that can be \
+used to scroll t\
+o a specific pos\
+ition. \x22\x0a \
+ + \x22\
+A scroll bar can\
+ be either verti\
+cal or horizonta\
+l, and can be at\
+tached to any Fl\
+ickable, \x22\x0a \
+ +\
+ \x22such as ListVi\
+ew and GridView.\
+\x22\x0a }\x0a\
+\x0a Ima\
+ge {\x0a \
+ rotation: 9\
+0\x0a \
+ source: \x22../im\
+ages/arrows.png\x22\
+\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a }\
+\x0a }\x0a }\
+\x0a\x0a ScrollBar.\
+vertical: Scroll\
+Bar { }\x0a}\x0a\
+\x00\x00\x03v\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22RangeSl\
+ider is used to \
+select a range s\
+pecified by two \
+values, by slidi\
+ng each handle a\
+long a track.\x22\x0a \
+ }\x0a\x0a \
+ RangeSlider {\x0a\
+ id: \
+slider\x0a \
+ first.value: \
+0.25\x0a \
+ second.value: 0\
+.75\x0a \
+anchors.horizont\
+alCenter: parent\
+.horizontalCente\
+r\x0a }\x0a\x0a \
+ RangeSlider\
+ {\x0a o\
+rientation: Qt.V\
+ertical\x0a \
+ first.value:\
+ 0.25\x0a \
+ second.value: \
+0.75\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x05\x17\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a readon\
+ly property int \
+itemWidth: Math.\
+max(button.impli\
+citWidth, Math.m\
+in(button.implic\
+itWidth * 3, pag\
+e.availableWidth\
+ / 3 * 2))\x0a\x0a \
+Column {\x0a \
+ spacing: 40\x0a \
+ width: pare\
+nt.width\x0a\x0a \
+ Label {\x0a \
+ width: par\
+ent.width\x0a \
+ wrapMode: \
+Label.Wrap\x0a \
+ horizonta\
+lAlignment: Qt.A\
+lignHCenter\x0a \
+ text: \x22A\
+ GroupBox provid\
+es a frame, a ti\
+tle on top of it\
+, and a logical \
+group of control\
+s within that fr\
+ame.\x22\x0a }\x0a\
+\x0a GroupBo\
+x {\x0a \
+title: \x22Title\x22\x0a \
+ ancho\
+rs.horizontalCen\
+ter: parent.hori\
+zontalCenter\x0a\x0a \
+ Column\
+ {\x0a \
+ spacing: 20\x0a \
+ w\
+idth: page.itemW\
+idth\x0a\x0a \
+ RadioButto\
+n {\x0a \
+ text: \x22F\
+irst\x22\x0a \
+ checke\
+d: true\x0a \
+ widt\
+h: parent.width\x0a\
+ \
+}\x0a \
+ RadioButton {\x0a\
+ \
+ id: button\x0a \
+ \
+ text: \x22Second\
+\x22\x0a \
+ width: par\
+ent.width\x0a \
+ }\x0a \
+ Radi\
+oButton {\x0a \
+ te\
+xt: \x22Third\x22\x0a \
+ \
+width: parent.wi\
+dth\x0a \
+ }\x0a \
+ }\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x03\xc7\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22RadioBu\
+tton presents an\
+ option button t\
+hat can be toggl\
+ed on or off. \x22\x0a\
+ \
++ \x22Radio buttons\
+ are typically u\
+sed to select on\
+e option from a \
+set of options.\x22\
+\x0a }\x0a\x0a \
+ Column {\x0a \
+ spacing\
+: 20\x0a \
+ anchors.horizon\
+talCenter: paren\
+t.horizontalCent\
+er\x0a\x0a \
+RadioButton {\x0a \
+ te\
+xt: \x22First\x22\x0a \
+ }\x0a \
+ RadioButto\
+n {\x0a \
+ text: \x22Secon\
+d\x22\x0a \
+ checked: true\
+\x0a }\x0a \
+ Radio\
+Button {\x0a \
+ text: \x22\
+Third\x22\x0a \
+ enabled: \
+false\x0a \
+ }\x0a }\x0a \
+ }\x0a}\x0a\
+\x00\x00\x04U\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aFlickable\
+ {\x0a id: flick\
+able\x0a\x0a conten\
+tHeight: pane.he\
+ight\x0a\x0a Pane {\
+\x0a id: pan\
+e\x0a width:\
+ flickable.width\
+\x0a height:\
+ flickable.heigh\
+t * 1.25\x0a\x0a \
+ Column {\x0a \
+ id: colum\
+n\x0a sp\
+acing: 40\x0a \
+ width: par\
+ent.width\x0a\x0a \
+ Label {\x0a \
+ w\
+idth: parent.wid\
+th\x0a \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ horizont\
+alAlignment: Qt.\
+AlignHCenter\x0a \
+ tex\
+t: \x22ScrollIndica\
+tor is a non-int\
+eractive indicat\
+or that indicate\
+s the current sc\
+roll position. \x22\
+\x0a \
+ + \x22A scroll\
+ indicator can b\
+e either vertica\
+l or horizontal,\
+ and can be atta\
+ched to any Flic\
+kable, \x22\x0a \
+ + \x22\
+such as ListView\
+ and GridView.\x22\x0a\
+ }\x0a\x0a \
+ Image\
+ {\x0a \
+ rotation: 90\x0a\
+ \
+source: \x22../imag\
+es/arrows.png\x22\x0a \
+ a\
+nchors.horizonta\
+lCenter: parent.\
+horizontalCenter\
+\x0a }\x0a \
+ }\x0a }\x0a\x0a\
+ ScrollIndica\
+tor.vertical: Sc\
+rollIndicator { \
+}\x0a}\x0a\
+\x00\x00\x05\x99\
+\x00\
+\x00\x17\x96x\xda\xcdXKs\xdb6\x10\xbe\xf3W\xec\
+\xf8d'\x16\x948\x99\xe9\x8c.\x9dD\x8e'\x9e\xb1\
+\xe3W\xd2\xb43\xbd@\xc4RB\x0d\x024\x00\xdaV\
+S\xff\xf7.H=(\xf1!\xc5I\xed\xf2 \x11\xc0\
+.\xf6\xf5\xedb\xc1~\x1f\x86&\x9bZ9\x9ex\xd8\
+\x1d\xee\xc1\xc1\xab\xd7\xbf\xc0\xe7\x09\xc2\x85\xa7\x954\xe3\
+z\x0a'^\xb0\xa8\xdf\x87\xab\xf3\xc3\xdf{'2F\
+\xed\xb0w,P{\x99H\xb4\x03\x98\xcd]b\xd2\xbb\
+\xf0=bK\xd1\xc6\x92+8\xbb\x84\xf7W\x87\xbd7\
+\xbd\xa1\xe2\xb9\xc3(\x92if\xac\xa7\xcd/r\x19_\
+\xaf\x0d\xd9\x09\x9f\x9a\xdc\xbb\xf5\xe9\xa1\xd1\xde\x1a\xe5\xa2\
+\xe8*\xa6\x7f\xc5G\x0a\xcf\xf9\x18\xe1[\x04\xf4H1\
+\x80\x8c\x86Q1\xb2\xc8\x85\xd1j\x0a\x995\x19Z?\
+\x05\xa9=\x8cr\xef\x8d\xfe*\x85\x9f\x0c\xe0\x94\xfb\x09\
+K\xf9\xfdn9\xcbH\x9c\x92\xb1\xf4\xc5\xf2\xfelY\
+\xea\xc6ex\x01\x07\xfb\x858\xc6o\xb9,t)\x17\
+\xfa\xf0fo\xaf\xd4ahT\x9e\xea\x99z\xe1q\x19\
+\x8f\xa5\x1e\x0f\xe0\xed\xab\xc5\xdc]\xa9L\xc6-9\x92\
+\x15\xa3h\xb1x\xc2G\xa8*\x1b\xb41\xac\xac[\x9e\
+\x9d\x1a\x81\x83\x92\x9b}\xa5\xf1\x0a\xc1\xc4X\xf97\xf9\
+\x92\xabwJ\x8euJ\xdb\x0c\xc8\xc9\xac\x18}\x1c\xd2\
+\x10\xed\x0a\x83\xc7{\xa2\xd89\xa4P\x9a1H\x07\x1c\
+2\x93\xe5\x19\xf8\x09\xf7a\x9c\x1a\xe7\xc9\xd5\x14Z\x01\
+\x89\xb1\xe0H\x84\xef\xd16)x\xee\xae\x1d\xec\xac\xec\
+\x17\x9e\x97\xb0\xc3\xb5\x80\x91\x95\x98@LP\xc9\xb5\x8c\
+\xb9\x97F;\xb2\x90\xfc\xe8\x09|\xb4\xa1eK\xde\x87\
+\xa5c\xde\x171Y\xf3\xccL\xcfSt\x8e\x02\xb3*\
+\x93\xeb\x98\x94rli|i\xe8\xc2\x91\xeb\x0b\xcd>\
+\xa7xW0\xb4Bc\xf4\x90\xf0q\x8d\x04\xc3\xb4\xd4\
+\xa0t\x18#\xfc\xe9\xdd\xbdh\x85x\xe6\xcbo5\xbf\
+\xc8u\xf6\xa8Fr?\x80\xddj\xf4\xa1W\xea\xb7G\
+\xd8;\xa8QO\x97\xd4\x13,\xf2\xbb\x07\xe5KI_\
+c\xf0\xd2+\xac\xba\xb1F\xd1\x84\xca\xb5\x18\x9c\x18\x8b\
+)\xc8\xcc\xe5)\x08\xa3\x02&\xa4\x07\x9e\xa2g\x8c\xd5\
+\xd1\xf0\x105\x8f6E<x\xab\x8cG\x13\x10\xa8`\
+$\xd2\xa6\x05\xaa\x9e\x11\x0dqE\x8d\xc7B\xa2\xbe\xc7\
+\x7f\x8d\x8bu\xfa\x92v\x00g\xb7h\x15\x9f2S\xfe\
+\xd7\xd5H\x8d\xe0j\x00\xde\xe6\xd8\x8a\xad\xf6\xc8\x14e\
+\xd2Si\xe0V\x94!w\x83\x99k\xd8\x1f\xe8\xe0\x9f\
+\xf9\xe0\x93\xa9\x8b\xae\x15\xdc\x95]\xe7\xc5\xf7\xe0U\xe3\
+\xfa\x1c\x13\x89Tj\x8e\x83F\xc2.\xf8W\xd0\x17N\
+Oa\xe2<\xd4W\x98p\x07#D\x1d\xbc\x13NK\
+\xc1\xfe\xd4\x87\x06\xe8\x9c\x83;N\xeb\xde\x80\xe3\xb7\x18\
+&,\xc4\x13\xae\xc7\xe8~\xddi\x14\xf1\xd08;\x9c\
+`|\xfd\xde\xdco\xd6\x8b\xc4jC\xb9\xe8\xae\x81\x8f\
+\xb9\xd4;\xad\x0cs\x8f\x14m\xc1\x225\x8a\xd1\x96\x9a\
+=6\xaf\x97\x09\xecI\xe4\xf3\xe6n\xd0\xe0\x07\xd2v\
+\xc9\xfe\xd4\x19{Wms\xa8\x8f)l\xbe+\x9b\x9b\
+\xe2}\xc9\xfc&\xf43\xb5\x0df\xda\x7f\xc42\xfed\
+\x82\x99K~\xf1\x04\x15\xa2\x1e\xfa\xae\xe20T\xc6a\
+]\xd6Q\x88d\xe8\xceZ\x12#D)\x99\xd34R\
+\xc4Jf-\xca~W\xd9X\xf3f\x5c\xd4\xaa\x99?\
+\xa3\xe6\x9c\xee*gK\x88\x05\xa2V\x92MUoc\
+\x0b\xba\xfe\x1c\xa7\xcb\x96\xbbK\xaf\x80\x96N\xa2\x06\xa9\
+\x8d0\xfey\xb9\xbf\xfe\x84\x90\x95\x9dra\x14;\xb7\
+H\x0d\xe7-\xbes\x19\xc6\xfeH\xfaNnG\xa5:\
+\x0ePe\xac/\x03\xbf\xeb\xdf\xf8^\x91$\x99\x1e\xb7\
+W\xd5\x87v\xdfn:Y\xb6i\xff\xbf\xbb!\xdb\x0f\
+\xc8td0z:{\xb8\x90\x99t\x012\x80Jz\
+\x06\x9fr\x1d\x93\xa7\xb4\x1c\xe5M}|C_/5\
+\xa0\xf3p\x93\xd3\xcd@q\x92KM\x1f\x1c\x87h\x08\
+\x12\x8e\x1eR\xae\xd0\xe5\x5cpHH\x01\xbaN\xc4\x14\
+X\x8f3\xed2+S\xb9\xbd\xa8\x84\xe7q\xd0\x8d\xc1\
+0\xb7|$\x83\x118&)\x7f\xe5.\x9c\xaatQ\
+\x0c\xb7\xb6\x5c\x04\xb5\xb4L\x17\x0c0\x92#\xd4\xa4\x12\
+\xdbN\xd6UN\xb0\xd0B:\x87t\xfd\x09\xa9,\x19\
+\xfcF\x96\xd2f\x94\x82\x10\xe7\xd6\xd1\xae\x853or\
+\x1e\xcc\xcc-\x19\x22\xc5\x8a\x12[J;\x0c\xdeK(\
+w\x95t\xf46!\xc9\x16-\x85\xac\x12\xac\xaa\xc9\x8e\
+g\x92\xda\x0bO\x17/c\xf7\x01\x93\xa4\x10h\xb7\xf4\
+\xa3\x00\xf2\x0aq\x82\xc6\xb8\xcaM~\xd4\xd2)\x06_\
+<\xdc\xa2FM-\x9b\x03\xb4\x86\xec\xd2\xa0\x0362\
+\xc5c\xb4\x9cp\xb4\x95(\xcc\x81+I\x0eJ\xcbp\
+\x90\xcfb\x82\x9cg\xdd\xdc\x1bo\xb5\x9b[\xa4\x96\xc4\
++?&\x1cSd\xe9\xfei,\xa3S\xcb\xd3+\x15\
+\xf3\xb5\x95\x8e\xc4\x9c\x1f}\xab\xed\xc2lt\xec1\xdd\
+\xd8cy\x93U\x0e\xa20\xdc\xc822t\x02\xa6U\
+\xaer\xe6\xa7\xf5s5\x9eSn\xc7R\x0f\xa0\xb7j\
+g\xb1v\xce\x85\x08U\xe3%\xbc~\x9a\xe6\xf0Xg\
+\xf9s\xb6\x862\xc8\x7flcXa\xfe\xdf^\xe4\x12\
+\xba\xbc\xb8\x96\xceg\x9b\x16\xae!@]\x0d\xdc\xd9\xf5\
+\xf2r7\xa4H\xa2j\xbb\xe0\x95\xdf\x07\x9f\xfb\x9aG\
+\xc7\xe3\xb2\x1c}\x08\x83\xcb\xceL\x9a\xc1\xf6\x5c!\xa7\
+\x13\xa4\x80_\xf1\x91+\xb6X|C\xe5\xca\x0dv:\
+Z\x83`s\xa1\xf5\xec\xf3ekG\xda\x5c\xfd>\x93\
+\xf8#\x89Jt\x98\xd4\x15\xf1\x05|B\xb9\x9f\x18%\
+\xd0~.-\xfaBM\x93\xa6\x83\xfc\x99\x95\xaf+v\
+\xce\x9d\xbb3V\xb4+\x86\x84\x85\xf2TYH`s\
+\xae\x0f\xb4v\xa6?\x88\x8e6\xf0\x87\xecj/\x7f\xe5\
+\xefC\xf4/yY\x0ax\
+\x00\x00\x03\xe0\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22CheckBo\
+x presents an op\
+tion button that\
+ can be toggled \
+on or off. \x22\x0a \
+ + \x22\
+Check boxes are \
+typically used t\
+o select one or \
+more options fro\
+m a set of optio\
+ns.\x22\x0a }\x0a\x0a\
+ Column {\
+\x0a spa\
+cing: 20\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a\x0a \
+ CheckBox {\x0a \
+ t\
+ext: \x22First\x22\x0a \
+ che\
+cked: true\x0a \
+ }\x0a \
+ CheckBox {\x0a\
+ \
+text: \x22Second\x22\x0a \
+ }\x0a \
+ CheckBo\
+x {\x0a \
+ text: \x22Third\
+\x22\x0a \
+ checked: true\x0a\
+ \
+enabled: false\x0a \
+ }\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x02\xb5\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick\x0aim\
+port QtQuick.Con\
+trols\x0a\x0aScrollabl\
+ePage {\x0a id: \
+page\x0a\x0a Column\
+ {\x0a spaci\
+ng: 40\x0a w\
+idth: parent.wid\
+th\x0a\x0a Labe\
+l {\x0a \
+width: parent.wi\
+dth\x0a \
+wrapMode: Label.\
+Wrap\x0a \
+ horizontalAlign\
+ment: Qt.AlignHC\
+enter\x0a \
+ text: \x22DelayBu\
+tton is a checka\
+ble button that \
+incorporates a d\
+elay before the \
+\x22\x0a \
+ + \x22button is a\
+ctivated. This d\
+elay prevents ac\
+cidental presses\
+.\x22\x0a }\x0a\x0a \
+ DelayButto\
+n {\x0a \
+text: \x22DelayButt\
+on\x22\x0a \
+anchors.horizont\
+alCenter: parent\
+.horizontalCente\
+r\x0a }\x0a \
+}\x0a}\x0a\
+\x00\x00\x07\x9f\
+/\
+/ Copyright (C) \
+2017 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ap\
+ragma ComponentB\
+ehavior: Bound\x0a\x0a\
+import QtQuick\x0ai\
+mport QtQuick.Co\
+ntrols\x0a\x0aStackVie\
+w {\x0a id: stac\
+kView\x0a initia\
+lItem: page\x0a\x0a \
+ Component {\x0a \
+ id: page\x0a\x0a \
+ Pane {\x0a \
+ id: pa\
+ne\x0a w\
+idth: parent ? p\
+arent.width : 0 \
+// TODO: fix nul\
+l parent on dest\
+ruction\x0a\x0a \
+ Column {\x0a \
+ sp\
+acing: 40\x0a \
+ width:\
+ parent.width\x0a\x0a \
+ L\
+abel {\x0a \
+ width\
+: parent.width\x0a \
+ \
+ wrapMode: Lab\
+el.Wrap\x0a \
+ hori\
+zontalAlignment:\
+ Qt.AlignHCenter\
+\x0a \
+ text: \x22Stac\
+kView provides a\
+ stack-based nav\
+igation model wh\
+ich can be used \
+with a set of in\
+terlinked pages.\
+ \x22\x0a \
+ + \x22Items \
+are pushed onto \
+the stack as the\
+ user navigates \
+deeper into the \
+material, and po\
+pped off again \x22\
+\x0a \
+ + \x22when he \
+chooses to go ba\
+ck.\x22\x0a \
+ }\x0a\x0a \
+ Button {\
+\x0a \
+ id: button\x0a\
+ \
+ text: \x22Push\x22\
+\x0a \
+ anchors.hor\
+izontalCenter: p\
+arent.horizontal\
+Center\x0a \
+ width\
+: Math.max(butto\
+n.implicitWidth,\
+ Math.min(button\
+.implicitWidth *\
+ 2, pane.availab\
+leWidth / 3))\x0a \
+ \
+ onClicked: sta\
+ckView.push(page\
+)\x0a \
+ }\x0a\x0a \
+ Button {\x0a \
+ \
+ text: \x22Pop\x22\x0a \
+ \
+ enabled: stack\
+View.depth > 1\x0a \
+ \
+ width: Math.m\
+ax(button.implic\
+itWidth, Math.mi\
+n(button.implici\
+tWidth * 2, pane\
+.availableWidth \
+/ 3))\x0a \
+ anchor\
+s.horizontalCent\
+er: parent.horiz\
+ontalCenter\x0a \
+ \
+onClicked: stack\
+View.pop()\x0a \
+ }\x0a\x0a \
+ La\
+bel {\x0a \
+ width:\
+ parent.width\x0a \
+ \
+ wrapMode: Labe\
+l.Wrap\x0a \
+ horiz\
+ontalAlignment: \
+Qt.AlignHCenter\x0a\
+ \
+ text: \x22Stack\
+ Depth: \x22 + stac\
+kView.depth\x0a \
+ }\x0a \
+ }\x0a \
+ }\x0a }\x0a}\x0a\
+\x00\x00\x01?\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
+\x00\x00\x000PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RP\xcaNA\xcdRA\xcdRH\xcbPB\xccQ\
+I\xcbPD\xccQE\xccQE\xccQD\xccQD\
+\xccQC\xccQA\xcdR\xb0DE*\x00\x00\x00\x0f\
+tRNS\x00\x00\x186Oc\xab\xae\xb8\xbd\xc9\xd6\
+\xdf\xe9\xf0r\xc1;\x05\x00\x00\x00\xafIDAT(\
+\xcf\x8d\xd2\xb1\x0d\xc20\x14\x04\xd0[\x81\x0d~\x81\x98\
+\x81\x01\xe8-e\x01F@\xf2\x14t\xec\xe0E\xd8!\
+\xca\x08\xac\x10YXXG\x11'v\xf0\x15\x5c\xf9\xf4\
+\x8b\xff\xed\x03\xd6\xb8\x80>.\x99@\x06\x85\xd9\x04r\
+T\xd8\x8f:\x92/\x13\xc8A\xe1l\x02\x7fG\x17\x8c\
+\x06\x00\xe7{\xc9\x93$I\x0f\x00\x0f\xee\x13M \xbd\
+\xc2d\x02\x19\x14&\x13\xc8\xa00+\xe4\xdf8+\x1c\
+\x04Nb\xa5\xac.\x1a\xc5\xed\x1f\x03p\xeb/\x07\x8e\
+\x97\x92\xeb\xf6F\xddw,\xd59\xacq$\xf96\x81\
+\x1e=F\x13X\x06w\xb8\xf5\xa3\xc5\xad\x1e\x0d\xd6\x22\
+5X{Tq\xb2\x1eO\xd5\xbe:U\x87P(\x16\
+\xe3k\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x01\xca\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00@\x00\x00\x00;\x04\x03\x00\x00\x009\xa2\x91\xef\
+\x00\x00\x000PLTE\x00\x00\x00A\xcdRP\xca\
+NA\xcdRA\xcdRF\xccPH\xcbPB\xccQ\
+I\xcbPD\xccQE\xccQE\xccQD\xccQD\
+\xccQC\xccQA\xcdR\x96\x12X7\x00\x00\x00\x0f\
+tRNS\x00\x186Oc\x9d\xab\xae\xb8\xbd\xc9\xd6\
+\xdf\xe9\xf0URDE\x00\x00\x01:IDAT8\
+\xcb\x85\xd4\xcdM\xc40\x10\x05\xe0\x99\x0e,\x05\x11)\
+\x88;\xc7E\x14`QAj\xa0\x02D\x05{B\xe2\
+F\x0d[\x81K\xa0\x06D\x019P\xc0\x1e\x12\x09\xf1\
+\xb3z\x1c\x9c\xc4\xcex\xd63\xd7|yR</&\
+\xd2\xc6\x1f\xa8>\xfe\xc7\x19\x00\x07\x0b\x9c\x9c\x01\xf0n\
+\x81z\x84\x07\xf0\xe9\x0c\x80{\x0bL\xce\x00\xb5\x88\x08\
+\xbe\x8a\x88\x9b\x97y\xde\x00\x00x\x92\xe0\x15\xdb)\x22\
+$(\x22\x0a wV\x00\xb9\xb3\x12\x88\x88\x12\x88\x08\
+\x05\x9c\xd2S~\xd0\x00\x12\xe8\xc6:\xe0\xa0\x82i\x05\
+\xd7P\xc1\xba0\x1eT\xf0\xe1R\x80\x06R\xef\x9a\xa3\
+\x0a\xd6\xe6r\x0f\x0d\xfc\xad\x01\x17\x000\xd2\xe3\xb9c\
+\xe4>\x82\xe6n\x9e^,\xa2E\x04\xa2r)`\x1f\
+\xcfdy\xff6\x82o\x11\x90\x7f\x9c\xdf\xd4i\x0e\xc8\
+f\xe7\x91\x17\xb2\x83\x0aR@P\xc1T\x09\xc0\xce\xe7\
+[\x0a*\x98\xf2-i \xfd\x97\x83\x0a\xd2\x9a\x09\x1a\
+\xb8\xcc\xda\x1e4\x90W\xbd\xb5@y\x8e\x02h\x11[\
+\xa0DlA\xacS\x0d\xc4>U\xc0\x12\xf1\xbb\xdcP\
+\xcf\xf2\xe6\x99#F:;\xcd`\x80\xb8\xb1\x1a\xe0\xc1\
+\x00te\x01\x0e\x06\xa0\xce\x02\x1c\x0c@\xad\x05xo\
+\x00ju\xf0\x0fRR\x00X\xeb\xfc\xd3\xe9\x00\x00\x00\
+\x00IEND\xaeB`\x82\
+\x00\x00%!\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x03 \x00\x00\x02;\x08\x03\x00\x00\x00#\xc8\x0f\xb6\
+\x00\x00\x00\x09pHYs\x00\x004\xba\x00\x004\xba\
+\x010P\xac\x88\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x03\x00PL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84.\xdb\x89,\xdc\x84+\xdd\x88)\
+\xde\x840\xdf\x87.\xe0\x83-\xe1\x87,\xdb\x83+\xdc\
+\x87)\xdd\x83/\xdd\x86.\xde\x83-\xdf\x86,\xe0\x83\
++\xe1\x86*\xdb\x82.\xdc\x85-\xdd\x82,\xde\x85+\
+\xde\x88+\xdf\x85*\xe0\x87.\xe0\x85-\xdc\x87,\xdd\
+\x84+\xdd\x87+\xde\x84*\xdf\x86.\xdf\x84-\xe0\x86\
+,\xdc\x84+\xdc\x86+\xdd\x84.\xde\x86-\xde\x84-\
+\xdf\x86,\xdf\x83+\xe0\x85+\xdc\x83.\xdd\x85-\xdd\
+\x83,\xde\x85,\xde\x87+\xdf\x85+\xdf\x87-\xe0\x85\
+-\xdd\x86,\xdd\x85,\xdd\x86+\xde\x84+\xde\x86-\
+\xdf\x84-\xdf\x86,\xe0\x84,\xdd\x86+\xdd\x84+\xde\
+\x86-\xde\x84,\xde\x85,\xdf\x84+\xdf\x85+\xdd\x84\
+-\xdd\x85-\xdd\x84,\xde\x85,\xde\x86+\xde\x85+\
+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86+\xde\
+\x85+\xde\x86-\xdf\x85-\xdf\x86,\xdf\x84,\xdd\x86\
++\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\
+\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\
+\x84,\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85\
+,\xde\x86,\xde\x85+\xde\x86-\xde\x85-\xdf\x86,\
+\xdf\x85,\xdd\x85+\xdd\x84+\xde\x85-\xde\x84,\xde\
+\x85,\xde\x84,\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84\
+,\xde\x85,\xde\x84,\xde\x85+\xde\x86+\xdf\x85-\
+\xdd\x86,\xdd\x85,\xde\x86,\xde\x85+\xde\x86-\xde\
+\x85,\xde\x85,\xdf\x85,\xdd\x85,\xdd\x85+\xde\x85\
+-\xde\x84,\xde\x85,\xde\x84,\xdf\x85,\xdf\x84+\
+\xdd\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\
+\x86+\xdf\x85-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85\
+,\xde\x86-\xde\x85,\xde\x85,\xdf\x85,\xdd\x85,\
+\xdd\x85+\xde\x85-\xde\x85,\xde\x85,\xde\x84,\xde\
+\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\x84\
+,\xde\x85,\xde\x86+\xde\x85-\xdf\x86,\xdd\x85,\
+\xde\x86,\xde\x85,\xde\x85+\xde\x85,\xde\x85,\xde\
+\x85,\xdf\x85,\xde\x85,\xde\x85-\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xdd\x85-\xde\x84,\
+\xde\x85,\xde\x84,\xde\x85,\xde\x86,\xde\x85-\xdf\
+\x86,\xdd\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\
+\x85-\xde\x85,\xde\x85,\xde\x84,\xde\x85,\xde\x86\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85\xf8\xdf\x16\xb8\x00\x00\x00\xfftRNS\x00\x01\
+\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\
+\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\
+\x22#$%&'()*+,-./01\
+23456789:;<=>?@A\
+BCDEFGHIJKLMNOPQ\
+RSTUVWXYZ[\x5c]^_`a\
+bcdefghijklmnopq\
+rstuvwxyz{|}~\x7f\x80\x81\
+\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\
+\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\
+\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\
+\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\
+\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\
+\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\
+\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\
+\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xeb\x08\xd9\
+5\x00\x00 \x97IDATx\xda\xed\x9dy\x80\x8f\
+\xd5\xfe\xc7\x9f\x991\xf6m\x0a\xd9\xcb(\x09\x89\x88H\
+\x12\x92\x8aV$\x22\xf5+*j\xda\x10mC\xc9T\
+7.\xb7M\xbb\xa5\xba\xd9Z\xdc\xeaj,\xddH*\
+\x89\xac\x955\xfb\xbe\xaf\xb3|\x7f\xc9u\xb9\xb7\x06s\
+>\xe7y\xce9\xcf\xf3z\xfd_\xf3y\x9f\xcf\xe7\xe5\
+\xfb\xac\xe7\xf1<\xdf8{m\x0c\xc0q\xf0\x03\xc0\x84\
+ \xf8\x01\x08\x82\x1f\x80 \xf8\x01\x08\x82\x1f\x00A\x09\
+\x82\x1f\x80 9S\x15?\x00A\xf0\x03\x10\x04?\x00\
+A\xf0\x03 A\xf0\x03\x10\x04?\x00A\xf0\x03 \
+\x86\x1f\x00\x01\x09\x82\x1f\x80 \xf8\x01\x08\x82\x1f\x00z\
+\x05\xa9\xba\x8e\xc5\x04\x04\xc1\x0f@\x10\xfc\x00\xd0)\x08\
+~\x00\x82\xe0\x07 \x08~\x00\xe8\x15\x04?\x00A\xf0\
+\x03\x10\x04?\x00\xf4\x0ar\x0e~\x00\x82\xe0\x07 \x08\
+~\x00h\x15\x04?\x00A\xf0\x03\x10\x04?\x00\xf4\x0a\
+\x82\x1f\x80 \xf8\x01\x08\x82\x1f\x00z\x05\xa9\xb9\x89\xa5\
+\x03\x04\xc1\x0f@\x10\xfc\x00\xd0)\x08~\x00\x82\xe0\x07\
+\x80\x8a \xf8\x01\x08\x82\x1f\x00*\x82\x9c\x87\x1f\x80 \
+\xf8\x01\xa0 \x08~\x00\x82\xe0\x07\x80\x8a \xf8\x01\x08\
+\x82\x1f\x00*\x82\xe0\x07 \x08~\x00\xa8\x08\x82\x1f\x80\
+ \xf8\x01\xa0\x22\x08~\x00\x82\xe0\x07\x80\x8a \xf8\x01\
+\x08\x82\x1f\x00*\x82\xe0\x07 H\xce\xd4\xc2\x0f@\x90\
+\x9c\xfd\xd8\xcc\x1a\x01\x82\xe0\x07@\xee\x05\xc1\x0f@\x10\
+\xfc\x00P\x11\x04?\x00A\xf0\x03@E\x10\xfc\x00\x88\
+\xe1\x07\x80\x82 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\
+\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\
+\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\
+\xb3 \xf8\x01\x90\xb3 \xf8\x01\x90\xb3 \xb5\xf1\x03 \
+GA\xf0\x03 gA\xf0\x03 gA\xf0\x03 g\
+A\xf0\x03 gA\xf0\x03 gAjoa)\x00\
+r\x12\x04?\x00r\x16\x04?\x00r\x16\xa4\xeeV\xd6\
+\xe1x\xec^\xbbx\xd6\xacY\x93\xd2\xd3?\x1b}\x88\
+\x09\xe9\xe9\xe9\xdf\xce\x9a\xb5`\xd5\x0e\x96&\x12\x82\xe0\
+\xc7\x1f\xd9\xb1p\xea\xa8A\x0ftl\xd5\xb8VrR\
+B\xce[#%\x9d~n\xc3\x96\xedS\xd2\x86O\x9c\
+\xc7&\xf8a\x15\x04?\x8e\xfd\xb1\xf8a\xcc\xd3\xb7]\
+\x5c\xb9\xa0\x97{\xf2Vh\xd0\xe1\x89Q3\xb9\x1a\x18\
+2A\xeanc\x11\x0e\xb1m\xea\xa0\xdb/)\xe7\xc9\
+9\xa5^\x87''\xacfA\xc3\x22\x08~\xc4\xd6~\
+\xf2\xd4\x0d\xc9\x9e^J]\xfe\xf0\xe8_\xb2Y[\xf7\
+\x05\x89x\xfe\x85\xaf\xdcT\xd6\xf3\x8bb\xad\x9e\x9d\x99\
+\xc1\x8c!\x88\xa3,\x1d\xd6\xb9\x82\xe77\x85\x9a\xa7\xa6\
+\xefg\xce\x10\xc41\xf6\xa5\xa7\x94\xf7\x82\xa2`\xeba\
+\xeb\x185\x04q\x86\xcd\xa3;\x17\xf5\x82%\xa1N\xea\
+\x02\xa6\x0dA\x1c`\xdb+\x8d\x13<#\x9c\xd3o\x19\
+\x03\x87 V\x93\x95\xde\xb9\x90g\x90:\xc3\xb8\xfd\x8e\
+ \xd62\xff\xa12\x9ei\x0a\xde\xfcy\x16c\x87 \
+6\xfex\xb4\xf6\xec\xa0r\xdav\x06\x0fA\xecb\xd7\
+\xb0s<{(\x9a\xb2\x92\xd1C\x10{\xf8\xb5Wq\
+\xcf.\x12\xdb\x7f\xcb\xf0!\x88\x1dl\xec\x9d\xdf\xb3\x90\
+\xe6\xb3\x18?\x041\xcf\xd6\xd4\x22\x9e\x9d\xc4\xb5]\xcc\
+\x00\x22\x88Yv\xa7%y\xf6\x12\xdfv)#\x88 \
+\xe6\xc8~\xfd4\xcfn\xf2\xf5\xde\xcd\x10\x22\x88!\xe6\
+^\xe4\xd9O\xb9\x11L!\x82\x98`Oj^\xcf\x09\
+Z/g\x0e\x11$p\xc6W\xf0\x5c\xa1`\xdaA&\
+\x11A\x02eGG\xcf%\xea\xfe\xc4(\x22H\x80|\
+\x9d\xec\xb9E\x81!\xcc\x22\x82\x04EFZ\xa2\xe7\x1c\
+\xd7\xb3\x1f\x0a\x82\x04\xc3\xf2\x86\x9e\x8bT\x98\xca8\x22\
+H\x00L,\xee\xb9I\xc2\xe0`\x17j\xdfV5\xb2\
+\x11\xc4e\x86%z\xce\xf2\x7f\x07\x82\x5c\xa9g\x15\xab\
+\xdc\x80 \x0e\x9f~\xf4\xf0\x5c\xe6\xa2\x0d\x08\x82 >\
+\xb2\xa5\xa9\xe76\xc9\xf3\x11\x04A|\xe3\x973=\xd7\
+):\x05A\x10\xc4'\x16\x97\xf3\xdc'\xdfG\x08\x82\
+ \xbe\xb0\xb0\x8c\x17\x06\xf2\x8eG\x10\x04\xf1\x81\xd9%\
+\xbcp\x900\x12A\x10D;\xdf\x9d\xe2\x85\x85\x84\xb7\
+\x10\x04At\xfbQ\xc4\x0b\x0f\xf1\xa3\x11\x04A\xb4\xb2\
+\xf44/L\xe4MG\x10\x04\xd1\xc8\xa6*^\xb8(\
+:\x07A\x10D\x1b{\x1axa\xa3\xecJ\x04A\x10\
+Md^\xe3\x85\x8fj[\x11\x04A\xf4\xd0\xcd\x0b#\
+\xcd3\x11\x04At\xf0\x8e\x17N\x1eC\x10\x04\xd1\xc0\
+\xbc\x82!\x15$\xfeS\x04A\x101\xbb\xce\xf1\xc2J\
+\xd22\x04A\x10)\x1d\xbd\xf0Ro?\x82 \x88\x8c\
+!^\x98\xb9\x17A\x10D\xc4\xa2\xfc\xa1\x16$n\x22\
+\x82 \x88\x80\xccz^\xb89c'\x82 \x88:\x03\
+\xbd\xb0\xd3\x1dA\x10\x84\x03\xac\xe3\x1cd}\x8e \x08\
+b\xfb\x01V\xe1\x0a5\x1b_\xd3\xb6}\xd7\xae]{\
+\xdd\xdd\xb5k\xe7\xb6m\x9a\xd5IN\x8a\x0b\xe6o'\
+\xefF\x10\x04Q\xe3\x19\x9fg3O\x95\xebR\x06\x8d\
+\x9e\xb1:\xe3\xcf\xff\xfc\xc69\x1f\xbf\xd8\xa7c\x1d\xbf\
+\xefS\xde\x87 \x08\xa2\xc4\xaf\x85\xfc\x9b\xca\x22\xcd\xfa\
+\xbc;\xe7\xe4\xeeBd-\xfdx`\x9b\xb2>j:\
+\x1fA\x10D\x85\xf6>M\xe4i\x9d^\x9a\x93\xeb\x07\
+\x05W\xbe{o5\x9f\xeai\x86 \x08\xa2\xc0t?\
+N\x02\xe2\xeb\xf4\x9e\x9e\xa5Z\xd1\xf2am}y\xf1\
+w\x1c\x82 H\xee\xcf\xd0\xcf\xd3?\x89\xd5\xd3\xd6\x0a\
+\xab\xda7\xa1\xad\xfe\xbd\x81+\xeeA\x10\x04\xc9-/\
+\xeb\x1e\xc3\xd2}\x17h)l\xc3\xd0\x9a\xbaK\xeb\x8f\
+ \x08\x92K\xb6h\xde\x05\xab\xd6\xdb\x1a\x1f\x0c\x9c\xdc\
+:^kq\x05W!\x08\x82\xe4\x8e^Z'\xb0\xc5\
+T\xcd\xe5\xfd\xdcM\xeb\x91V7\x04A\x90\x5c\xb1N\
+\xe7\xdd\x87\x0b'\xfbP\xe1\x8a\xae\x09\xfa*L\x5c\x8a\
+ \x08\x92\x1bR\xf4\x0d_\xb5\x09>\xd58\xb7\xa5\xbe\
+\x22oE\x10\x04\xc9\x05k\x0a\xe8\x9a\xbc\x02\xa9>\xbe\
+\x944\xa1\xbc\xae2\x13\x16#\x08\x82\x9c<\xda\xf61\
+i\xb2\xc8\xd7:\xb7\xa7\xe8:\xce\xba\x19A\x10\xe4\xe4\
+\x8f\xef\xf3\xea\x99\xba\xfcC|\xff \xe5\x14M\x0f\xa1\
+$,D\x10\x049Yn\xd53tU\xe7\x06P\xeb\
+\xfa\x16z\x8a\xed\x88 \x08r\xb2g z~@:\
+\xed\x0e\xa4\xda\xac\x01Zn\x8a$\xfe\x8a \x08rr\
+<\xac\xe5M\xa4\xd4\xc0\xea\x1d\xaf\xe5\x9atO\x04A\
+\x90\x93b\xcf\xa9\x1a\xc6-\xef\xc8\x00+\x9eYJC\
+\xc5E\xb7#\x08\x82\x9c\x0c\x7f\xd3\xf1\xbe\xc7\x17\x81\x96\
+\xbc\xe4\x0c\x0d5\x0fF\x10\x049\x092+\xcbg\xad\
+\xd0\xd4\x80\x8b^\xa9\xc1\x90\xd33\x10\x04AN\xccX\
+\x0d\x0f\xffM\x0d\xbc\xea\x15\xa7\xcb\xcb\x1e\x8d \x08r\
+b\x1a\xc9o\x7f|a\xa0\xec\x9f\xe4\xe7!\x8d\x10\x04\
+AN\xc8B\xf9\xf5\xabQF\x0a\xff*\x9f\xb8\xf2\x85\
+\x08\x82 'B\xfe\x98b\xaa\xa1\xca\xdf\x17\xbf#\xdc\
+\x13A\x10\xe4\x04\xec\x13_\xe3m\x9fm\xaa\xf6\xbe\xd2\
+\xd2K\x1d@\x10\x049>\xefJ\x87\xec\xac]\xc6j\
+\xcfj*-~,\x82 \xc8\xf1\xb9T8b\xf9f\
+\x1b,~\xb5\xf4\xe7\xef\x0a\x04A\x90\xe3\xb2Tz\x1c\
+?\xd8h\xf9\xe3\x85\xd5\xc7\xaf@\x10\x049\x1e\xd2\xc7\
+\xb0Zd\x9b\xad_\xfa\x1cr\x7f\x04A\x90\xe3\x90-\
+\xbc\xddV`\x89\xe1\x00[J\x0a\x9f\xd0G\x10\x049\
+\x0e\xd3\x84\xff\x00?i<\xc1k\xc2\x04\xf3\x10\x04A\
+r\xa6\x87\xf0\x0a\xd6>\xe3\x09\xb2\x1a\xc8\x22<\x8a \
+\x08\x92#\x99ed\xd3\xf5O\x0b2\xcc\x92]f8\
+\x0bA\x10$G&\xcb\xfc\xb8\xc4\x8a\x10md!f\
+#\x08\x82\xe4DW\xd9l}mE\x88\xc5yD!\
+z#\x08\x82\xe4@\x86\xec\x81\xd8\xeb,\x89\xd1I\x94\
+\xa2R6\x82 \xc8\x9f3Qv\x93m\xbe%1\x96\
+\xc8\xf6\xca\xfa\x1eA\x10\xc4\x8fkX\xd7X\x93\xa3\x9d\
+\x1d\x97\xaa\x11$l\x82\xc8\xde\xb5\x9dnM\x8e\xefD\
+9.D\x10\x04\xf9S\xe6\x8b\xe6\xaa\xbeEI.\x16\
+\x1d*n@\x10\x04\xf93d_}\xfe\xd0\xa2$\x1f\
+\x8a\x92\x8c@\x10\x04\xf93\x1aK\xa6\xaab\xa6EI\
+\xb2D\x8f\x94\xb5G\x10\x04\xf9\x13\xb6\x8a\xee\x1f\x0c\xb0\
+*K\xaa$JR\x06\x82 \xc8\x1f\x11\xbdK\x98g\
+\x8dUYV\x89\xae\xf4~\x89 \x08\xf2GD\xf7\xd7\
+\xae\xb7,\xccU\x920}\x11\x04A\xfeH9\xd7\x1f\
+S<\x96\x0f$a\x1a \x08\x82\xfc\x81\x9f$#U\
+:\xd3\xb24\x07N\x91\x1c/\xeeD\x10\x04\xf9_\x86\
+I\x04\xb9\xcf\xba8\xb7I\xe2LD\x10\x04\xf9_n\
+\x92L\xd47\xd6\xc5\x99h\xfe$\x04AB%\x88\xe4\
+[\x7f\x95\xb3\xad\x8b\x93y\x9a OC\x04A\x10\x9d\
+\xa7 }-\x0ct\x97 O\xe2.\x04A\x10\x8d\xa7\
+ \xdfY\x18\xe8\x9f~_\x94\x9b\xd1\xf5\x04\xd4W\xfc\
+\xe3\x9d\xbaja/\x82\xd8r\x0aR.\xdb\xc2@\xfb\
+\x0b\x0b\x12\xf59\x89?\xf0\xb6g7\xdb\x11D'\xe5\
+\x05\xad\xe8fe\xa2\xeb\x04\x89\x9a \x08\x82\xfc\x17k\
+$\xad\xf8\xd4\xcaHo\x08\x12\x15\xceD\x10\x049\x96\
+q\x92i\xdage\xa4\x0d\x92\xcf\xa7\xcfG\x10\x049\
+\x16\xc9\x9e\xbc\xad,\xcdT[\x90\xe9M\x04A\x90c\
+i\x22\xe8\xc4_-\xcd\xf4\xa0 \xd3]\x08\x82 \xc7\
+\x90UT\xd0\x89y\x96\x86\xfa\x87 S\x1d\x04A\x90\
+c\x98'hD\xa9lKC\xedL\x14\xdc*\xdc\x8b\
+ \x08r\x94\xd7\x05\x8d\xe8`m*\xc9>\xd63\x10\
+\x04A\x8e\xd2M\xd0\x88\xd7\xadM%\xf9\xa8\xe7\x10\x04\
+A\x90\xa3\xd4\x154b\xb1\xb5\xa9>\x11\xa4\xfa?\x04\
+A\x90\xa3\xe7\xe8\x85\xd4\xfbpj\xb6\xb5\xb1\xb6\x0a\xbe\
+\x84P\x0fA\x10\xe4?H\x1e\xe5mmq\xae\xb3\xd5\
+c\x15\xcaB\x10\x049\xc2XA\x1f\x9e\xb68W\x17\
+A\xae%\x08\x82 GxB\xd0\x87/,\xce\xf5\x8a\
+ \xd7\x07\x08\x82 G\xb8A\xbd\x0d\x09\xbb-\xce5\
+G0_\xfd\x10\x04A\x8ep\x96z\x1bj\xd8\x9c+\
+#\xbfz\xb0\xb6\x08\x82 \xfff\x8f\xe0\xb9\xd7Na\
+\xbd|]\x15A\x10\xe4\xdfH\xbe\xa7\xf1\xbc\xd5\xc9n\
+\x17\x1c;\xeeC\x10\x04\x91\xb7z\x8a\xd5\xc9^\xf0\xf1\
+\x19L\x04\x89\x8c \x8f\xa8w!n\xab\xd5\xc9\xbe\xf2\
+\xf12\x16\x82DF\x90\x1b\xd5\xbbP\xc9\xeed\xbb\x04\
+gW\xcf\x22\x08\x82\x1c\xe6\xfcp\xdeG?D%\xf5\
+h\xdd\x10\x04A\x0eSL\xbd\x0b\xbd-\x8fv\xa5z\
+\xb4\xa6\x08\x82 \xbf\xb3^\xd0\x85\xb7-\xcf\xf6\x80z\
+\xb4\x8a\x08\x82 \xbf3M\xd0\x85o,\xcf\xf6\xaaz\
+\xb4\xf8\xbd\x08\x82 \x87xSp\x11kG\x88\xe5\x9f\
+\x8f \x08r\x08\xc1\x8bw\x15l\xcf\xb6Y0a\x1f\
+\x22\x08\x82\x1c\xa2\x9dz\x13\x9a[\x1f\xae\x84o\x0f\x09\
+ HT\x04\xb9\xc0\xbfK\xa1\xe6\xa9\xa7\x1e.\x05A\
+\x10\xe4\x10\xa5\xd5\x9b\xf0\x8c\xf5\xe1\xda\xab\x87\xbb\x1eA\
+\x10\xe47\x0e\x0a\xee6\x8f\xb1>]\x1f\xf5p\x17 \
+\x08\x82\xfc\xc6rA\x13f[\x9fNp\x9d\xb7\x0c\x82\
+ \xc8o|)h\xc26\xeb\xd3M\x12\xdc\x089\x80\
+ \x08\x12\x8b\xbd\xa3\xde\x83S\xedO\xb7L0b\xcb\
+\x11\x04Ab\xb1g\xd4{p\xbe\xfd\xe92\x12\xd4\xe3\
+}\x89 \x08\x12\x8b\xf5P\xef\xc15\x0et\xa0\x9cz\
+\xbcw\x10\x04Ab\xb1k\xd4{\xd0\xdd\x81\x0e\x08n\
+\x84\xa4!\x08\x82\x8866x\xda\x81\x0e\x08\xbe\xe5y\
+\x0f\x82 \x88\xe8\x18d\x84\x03\x1d\xb8G=\xde\x8d\x08\
+\x82 \xb1\xec\xbc\xea=\x98\xe2@\x07\xd2\xd4\xe3]\x8a\
+ \x08\x12\xdb&\xe8\xc1\xcf\x0et`\xa4z\xbc\x1a\x08\
+\x82 \xb1\x9f\x05=\xd8\xe5@\x07&\xab\xc7+\x85 \
+\x08\x22y\xa5\xa8\xa0\x0b\x1d\x10|~1!\x13A\x10\
+d\x9cz\x0b\xcep\xa1\x03\x1b\x043\xb6\x09A\x10\xe4\
+e\xf5\x16\xd4s\xa1\x03\x99\x82[\xe9\x0b\x10\x04A\xfa\
+\xab\xb7\xa0\x95\x13-(\xa9\x1e\xf0\x0b\x04A\x10\xc1}\
+\x82[\x9dhA5\xf5\x80\xa3\x8f\xf7\xff\xdd<\xeb\x04\
+\xa4(\xfe\xd5\xcfgi!\x13A\xb4 x\xe5\xae\xb7\
+\x13-h\xa2\x1e\xf0E\xd1\x1f~V\xf1\xafn\x88E\
+\x08\xfb\x05\xb9L}~\xfe\xe2D\x0b\xda\xaa\x07|\x0a\
+A\x10D\xb0e\xc3\x9bN\xb4\xe0N\xf5\x80\xbd\x10\x04\
+A\xaa\xa8\xcf\xcfx'Z\xf0\xb0z\xc0n\x08\x82 \
+\xa7\xa9\xcf\xcfT'Z0P=`{\x04A\x10\xc1\
+w.\x7fp\xa2\x05\x82\x1b=W H\xe4\x059 \
+\xb8\xd2\xbe\xc2\x89\x16\xbc\xa7\x1e\xb0!\x82D^\x90\x8d\
+\xa1\xbf\x15\xf5\x99z\xc0\xea\x08\x12yA\x96\xa8\x8fO\
+|\x96\x13-\xf8Z=ay\x04\x89\xbc \xdf\xab\x8f\
+O17Z\xb0H=a\x11\x04\x89\xbc S\xd4\xc7\
+\xa7\x9c\x1b-X\xa5\x9e0.\x13A\xa2.\xc8\x07\xea\
+\xe3S\xc5\x8d\x16l5u\x96\x85 a\x10d\x94\xfa\
+\xf4\xd4v\xa3\x05\x92\xebt\xeb\x10$\xea\x82\xbc\xa6>\
+=\x17;\xd2\x83D\xf5\x88\xcb\x10$\xea\x82\xfcM}\
+zZ:\xd2\x83\xe2>\xbd1\x85 Q\x10\xe4Y\xf5\
+\xe9\xb9\xc1\x91\x1e\x086\xfe\xfa\x1eA\xa2.H?\xf5\
+\xe9\xe9\xecH\x0f\x04\x8fcNG\x90\xa8\x0b\x22\xf8\x02\
+S7Gzp\xbez\xc4t\x04\x89\xba \xf7\xa9O\
+\xcf=\x8e\xf4\xa0\xbez\xc4\x09\x08\x12uA\x04\xaf\x13\
+\xdd\xefH\x0f.\xf2\xe9\xa5t\x04\x89\x82 \xb7\xa8O\
+OOGzp\x89z\xc4\xe1\x08\x12uA\xda\xa9O\
+O\x1fGz\xd0\x5c=\xe20\x04\x89\xba W\xabO\
+\xcfc\x8e\xf4\xa0\xa5z\xc4\xbf\x22H\xd4\x05\xb9B}\
+z\xfa9\xd2\x83V\xea\x11\x9fG\x90\xa8\x0b\xd2B}\
+z\x068\xd2\x83k\xd5#>\x8b Q\x17\xa4\x99\xa1\
+\xe9\x09\x10\xc1\xc6X\x03\x11$\xea\x824Q\x9f\x9eA\
+\x8e\xf4\xe0&\xf5\x88O!H\xd4\x05i\xac>=C\
+\x1d\xe9A'C\xa7Y\x08\x12\x06A\x04w\xd1^r\
+\xa4\x07\xb7\xaaG|\x1cA\xa2.\xc8\x85\xea\xd3\xf3\x9a\
+#=\xb8C=\xe2#\x08\x12uA\xea\xa9O\xcf[\
+\x8e\xf4\xe0nC\xf7B\x11$\x0c\x82\xd4Q\x9f\x9e\x91\
+\x8e\xf4\xe0^\xf5\x88\xbd\x10$\xea\x82\xd4R\x9f\x9e\xbf\
+;\xd2\x83\x07\xd4#>\x88 Q\x17\xa4\xa6\xfa\xf4\x8c\
+u\xa4\x07\xbd\xd4#\xde\x87 Q\x17\xa4\x86\xfa\xf4\x8c\
+s\xa4\x07}\xd5#\xa6 \x08\xbf \xca\xbc\xefH\x0f\
+\x1e\xe6\x10\x0bA\x94\xa9\xad>=\xef8\xd2\x83\x87\xd4\
+#\xf6F\x90\xa8\x0bR\xd7\xd0\xdbD\x01\x22x\xab\xb8\
+/\x82D]\x10\xc1}\x907\x1c\xe9A\x0f\xee\xa4#\
+\x882\x0d\x0c\xbdn\x17 \x82\xd7\xeey\x16+\xf2\x82\
+4R\x9f\x9e\x17\x1d\xe9\xc1\xed<\xcd\x8b \xca\x08\x9e\
+\xe6\x1d\xe2H\x0f\xba\xa8GLC\x90\xa8\x0br\xa9\xfa\
+\xf4\xfc\xc5\x91\x1e\xdcl(\x22\x82\x84A\x90\xe6\x86\xfe\
+y\x0d\x90\xf6\xea\x11\x07#H\xd4\x05ia\xe8\x00=\
+@\xda\xa8G\xfc\x1b\x82D]\x90+\xd5\xa7'\xd5\x91\
+\x1e\x086mx\x09A\xa2.\x88`z\x5c\xd9\x17\xeb\
+*\xf5\x88\xaf\x22H\xd4\x05\x11\x1c\xa0\xbb\xb2\xb3\xe2\xe5\
+\xea\x11\xdfD\x90\xa8\x0b\x22xa\xdb\x95\xbdy\x05;\
+\x1b\xb17o\xe4\x05\x11\xbc\x8fz\x9f#=\x10l^\
+\xfd\x1e\x82D]\x10\xc1\xebv\xae|\x1fD\xb0q\xcb\
+\xc7\x08\x12uA\x1eQ\x9f\x9e\xdb\x1d\xe9\x81\xe0\x03:\
+\x93\x11$\xea\x82<\xa9>=\x1d\x1c\xe9Au\xf5\x88\
+3\x11$\xea\x82<\xa7>=\xd78\xd2\x83\x8a\xea\x11\
+\xe7!H\xd4\x05yA}z\x9a;\xd2\x03\xc1w\xd2\
+\x97!H\xd4\x05yC}z\x1a8\xd2\x83<\xea\x11\
+7 H\xd4\x05yW}zj\xba\xd1\x82\xbd\xea\x09\
+\xbd\xdd\x08\x12uA>R\x9f\x9e\xcan\xb4`\x83z\
+\xc2\xb8l\x04\x89\xba _\xa8\x8fOi7Z\xb0D\
+=a\xa1\x18\x82D]\x90\x1f\xd4\xc7\xa7\xa0\x1b-\x10\
+$,\x85 \x91\x17d\xa9\xe0\x08}\xbf\x13-\xf8R\
+=`%\x04\x89\xbc \x9b=C\xd7x\x02\xe3\x1f\xea\
+\x01k H\xe4\x05\xc9\x10\x08\xf2\x93\x13-xO=\
+`}\x04\x89\xbc \xb1B\xea\xf3\xf3\x8d\x13-xM\
+=`S\x04A\x90\xd2\xea\xf33\xd1\x89\x16<\xaf\x1e\
+\xb0\x1d\x82 \xc8\xd9\xea\xf3\xe3\xc6\xf6\xee\xa9\xea\x01\xef\
+B\x10\x04\x11<\x0c\xee\xc6\xde\xa3\x0f\xaa\x07|\x04A\
+\x10D\xb0\xef\xcf\x00'Z \xd8yt0\x82 H\
+\x87\xb0\xbfs{\x8dz\xc0\x91\x08\x82 )a\x7fc\
+J\xb0\x7f\xfd\xa7\x08\x82 O\xa9\xcf\xcfeN\xb4\xe0\
+L\xf5\x80\xdf\x22\x08\x82\xbc\xaa>?\xb5\x9chA1\
+\xf5\x80K\x11\x04A>P\x9f\x9f\xb2.t\xe0@\x9c\
+z\xc0\xed\x08\x82 _\xa9\xcfO\xdel\x07:\xb0F\
+=_\x9el\x04A\x90\x9f\x05\x0fcmv\xa0\x03s\
+\xd4\xe3\x9d\x16C\x10\x04\xd9.\x10d\x8e\x03\x1d\xf8D\
+=^u\x04A\x90X,\x9f\xfa\x04}\xe2@\x07\x04\
+\xcf*6F\x10\x04\x89\xc5\xca\x85\xfbY\x93~\xea\xf1\
+\xda \x08\x82\xc4b\x17\xa8O\xd0\xe3\x0et\xe0\x0e\xf5\
+x\x0f \x08\x82\xc4b\xd7\xa9O\xd0m\x0et@\xf0\
+\x09\xadA\x08\x82 \xb1\xd8\xbd\xea\x13t\xb9\x03\x1d8\
+O=\xde\x18\x04A\x10\xf5>\xfeFU\x07:PJ\
+=\xde\x0c\x04A\x10\xd1;\xdb\xf9\xb3\xacO\xb7Gp\
+#}5\x82 H,6\xcd36B\x010_p\
+#=\x13A\x10$\x16[!\x10d\x9a\xf5\xe9&\xa8\
+\x87\xab\x18C\x10\x04\x89\xc5\x0e&\xa8\xcf\xd0p\xeb\xd3\
+\x0dU\x0f\xd7\x10A\x10\xe4\x10e\xd5g(\xd5\xfap\
+\xf7\xab\x87\xbb\x11A\x10\xe4\x10\xf5\xd4g\xa8\x93\xf5\xe1\
+\xae5v\x9f\x10A\xc2\x22H{\xf5\x19\xaag}\xb8\
+\x9a\xa6\xb6l@\x90\xd0\x08\xf2\x98\xfa\x0c\x15\xb5\xfd\x8d\
+\x90\xac\x02\xc6\xee\x13\x22HX\x04\x19\x1e\xe2\xeb\xbc\x92\
+\xcd\xeb\x7f@\x10\x049\x84\xe0\x9dB\xefs\xcb\xb3\x09\
+\xde\x06\x89\xdb\x85 \x08r\x88\x8d\x02A\x86X\x9eM\
+\xb01o\x85\x18\x82 \xc8\xef\x08\xbe\x93|\xa7\xe5\xd1\
+\xba\xaaGk\x8e \x08r\x98\xba\xeaS\xd4\xc8\xf2h\
+\x8d\xd5\xa3uG\x10\x049\x8c\xe0:oa\xbb\x1fW\
+\xccNR\x8f6\x14A\x10\xe40\x82\xeb\xbc\xde\xcfV\
+'[.H6\x11A\x10\xe40\xa3\x04cd\xf77\
+B>\x14$[\x81 \x08r\x18\xc1\xd6Q^\x1f\xab\
+\x93=\xa1\x1e\xac@\x16\x82 \xc8a\xf6'\xaa\xcfQ\
+K\xab\x93\x09>}p^\x0cA\x10\xe4\xdfTW\x9f\
+\xa3\x92V?lr\x86z\xb0v\x08\x82 G\xb81\
+\xa4g\xe9\x1b\x04\xb9\x1eC\x10\x049\x82\xe0\x1b!V\
+\xbf3\xf5\x91 \xd7h\x04A\x10\x1d\x83d\xf3\xbd\xf4\
+\x87\x05\xb9\x96\x22\x08\x82\x1ca\x99`\x90jZ\x9c\xeb\
+\x12\xf5X\xc5\xb3\x11\x04A\x8e\x90]D}\x92\x12v\
+X\x1b+\xa3\xb0z\xacKc\x08\x82 \xff\xa1\xa1\xe0\
+'\xc4\xde-\xdeg\x0bR=\x88 \x08r\x94\x14\xb3\
+\xa3\xe4\x13\x83\x04\xa9\xdeC\x10\x049\xca;\x82Q\xb2\
+\xf7S\x9e\xad\x04\xa9~B\x10\x049\xca\x12\xc1(\xc5\
+m\xb4\xf5\x14\xa4\xa8\xe0e\xfb,\x04A\x90c\xce\xd2\
+K\x18\xbdc\xe0\x0f_\x0b2]\x12C\x10\x049\x86\
++\x04\xc3t\x87\xa5\x99\x06\x082\xdd\x87 \x08r,\
+\x82\xc7^\xbd2\x96>\x8e%\xb8\x0b\xe2\x8d4(\xc8\
+z\x04\xb1\x0f\xc1\xee\x1f\x9e\xf7\x8d\x95\x91\xb6\xe6\x11D\
+ZlP\x90\xb5\x08b\x1f\x9b\x05\x9f\xd1\xf0\x1e\xb52\
+\x92\xe45\xb0\xd2\xd9\x06\x05Y\x8d \x16R%tO\
+\x9b\x08\xde\xb4\x17\xef[-\x12d%\x82XHW\xc9\
+1\xd62\x0b\x03\x1d\x14lf\xe4\xbdlR\x90\xe5\x08\
+b!\xefJ\x04y\xda\xc2@\xe9\x92@\x8bL\x0a\xb2\
+\x14A,d\xadd\x9ejX\x18\xe86\xd3\xa7 \xb1\
+\xe7B\xb9QLT\x05\x89U\x95\x182\xd7\xba8\xfb\
+%GX\xed\xb5\x940\xd8\xe0\x154\x04\xd1N7\x89\
+ \xf6\xedm2^\x12\xe7\x15-%\xbc\xa0\xf8\xd7\x7f\
+D\x10\x1b\xf9\xbbd\xa2*f\xda\x16\xa7\x9d\xf1S\x90\
+\xd8\xb0P\xddV\x8a\xbc \xeb$wB\xbc\x7fX\x96\
+f\x8b\xe0\xc39^\x19=5\xbc\xa9\xf8\xe7\xff\x85 \
+VRM\x22H+\xcb\xc2\x0c\xf6\x8c\x9f\x82\xc4F(\
+\xfe\xf9\x89\x08b%=%3\x15\xbf<D\xb6\xbf\xa9\
+\xa7\x06\xd5+\xe7\x1f#\x88\x95|!\x99)\xcb\x1e7\
+\x11e\x89[\xa7\xa7\x88\xb1\x8a\x7f\xff}\x04\xb1\x92\x0c\
+\xc9\x85Q\xaf\xe4\x1e\x9b\xb2Hv\xc2\xf3\xeaj*B\
+u\xe7\xec\xe1\x08b'\xedE?!C-J\xb2L\
+\xf2 \xaf\x97\xaa\xa9\x0a\xd5'\xa4_@\x10;\x19)\
+\x12\xa4\xc2A{\x92\xdc%J\xf2\x9d\xa6*&*\xfe\
+\xfd\x01\x08b'[\x12Ds5\xc2\x9a \x1b$\xd7\
+x\xbdr\xba\xde\xff\x9a\xa2X@/\x04\xb1\x94\x8bD\
+\x82T\xcd\xb0%G_Q\x8e\x1e\xba\xca\x98\xa6X@\
+7\x04\xb1\x944\xd1`y\xafZ\x12c}aQ\x8c\
+\xa9\xba\xea\x98\xa9X\xc0M\x08b)KE7\xd3\xbd\
+\xb2\x96\x5c\xc8\xea.JQJ\xdbS3\x0b\x14+\xb8\
+\x12Al\xa5\x9e\xec'\xc4\x8e\xb3\xcb_\x12E!\xba\
+j+d\x8db\x05\x17 \x88\xad\x0c\x92\x09Rd\x95\
+\x0d!\xdazv\x1ca\xc5\xf6\xa8^\x0fD\x10[Y\
+\x13/\x1b.\x1b\x0e\x0e>\x95E8]\xe3\x87\xdf\xf3\
+\xaa\x95\x90/\x1bAl\xa5\xb1l\xba\xbc\xb1\xc6\x13\xec\
+\xae$K\xf0\x88\xc6ZJ*\xd6\xb0\x15Al\xe5E\
+\xa1 e\x8c\xf7\xf6\x1ea\x82E\x1ak9K\xb1\x86\
+\x85\x08b+\x1b\xf2\x08\xe7\xebZ\xc3\x87\x07\x93\x84\x07\
+\x89\xf5u\x16s\x81b\x11\x93\x11\xc4ZZ\x09\x05\xf1\
+\x06\x1b-\x7f}\x19a\xf9o\xe8\xac\xe62\xc5\x22^\
+G\x10k\xf9H*H\xe2W\x06\xab\xcfl&\xac\xbe\
+\xd8n\x1b\xae\xa7\xf5E\x10k\xc9('5\xa4\x82\xc1\
+\x9d3\x1f\x92\x16\xdfCk9\xb7\x9b}\xa3\x11A\xfc\
+\xe0Q\xe9\x8cy\xd5\x8d\x9d\xa8\xbf,\xae\xfdG+|\
+\xad\x87 \xf6\xb2\x22^<eM\x0f\x98)}\xac\xb8\
+\xf4K\xf4\x16\xf4\x94b\x19\xc5\xb3\x11\xc4^Z\x8a\x05\
+\xf1\xda\x18y5dJ~q\xe1\x1f\xe9\xadHu\xdf\
+\x9f(\xed\xce\xeb\x9e \xe3\xe4\x82xW\xed\x0b\xbe\xee\
+\xcf\x0a\x88\xcb\xae\x92\xa5\xb7\xa4\x8fU\x0b\x19\x8f \xf6\
+r\xb0\xa2\x06CZ\x04\xfe`\xef\xb8\xbc\xf2\xaa_\xd6\
+\x5c\xd3w\xaa\x85<\x8e \x16\xf3\xbc\x06A\xbc\x86\x01\
+\x7fG\xec\x8d<\xf2\x9a\xb5\xef;\xb1Z\xf9\x17\x18A\
+,fgq\x1d\x86\x94\xfb6\xc0\x923z\xeb(y\
+\xa0\xf6\xb2T\xdfa.r\x10A,F\xcb\xb4y\x05\
+\xdf\x0b\xac\xe0M\x97\xea(\xf8\x94\x9d\xda\x0b+\xadZ\
+\xcbW\x08b1k\xf2j1\xc4\xbb}g0\xf5N\
+\xae\xa8\xa5\xdc\xfe\xfa+\xab\xafZK?\x04\xb1\x99.\
+z\x04\xf1\x92\xa7\x05P\xec\xde{\xe3\xb4\x14[|\xbb\
+\xfe\xda\x94w\x1a\xab\x85 63/N\x93!\x09\x0f\
+\xec\xf0\xbb\xd6igk\xaa5\xcd\x87\xe2\xfa(W\xf3\
+\x03\x82\xd8L\x1bO\x17\xa5\xdf\xf6\xf5\xae\xf0\xaf7\xe9\
+r\xb9\xfc^\x1f\xcaS\xbeS\xe8\xa5 \x88\xcd,L\
+\xd0f\x88w\xe1t\xdf\xca\xdc\xdd\xaf\xa0\xb62\xdf\xf0\
+\xa3\xc0\xcf\x95\xcb)\xbc\x06Al\xe6\x16O#\xcd\xbf\
+\xf4\xa5\xc6\x1d\x03J\xe8\xab\xb1\x86/\x9f\xc8Z\xa6^\
+Pg\x04\xb1\x99\xe5yu\x1a\xe25\x99\x98\xa5\xbb\xc2\
+\x8dO$\xe9\xac0\xdd\x97e\xccR\xff\x85\x8b\xff\x0c\
+Al\xa6\xbb\xa7\x97\xcai\x1bu\x967\xabk\x01\xad\
+\xe5\xdd\xe0\xd32\xd6R/\xa9\xc8l\x04\xb1\x98\xb5\x05\
+5\x1b\xe2\xe5\xef8a\xbf\xa6\x03\x97\xb4\xb35\xd7V\
+p\x85O\xcbx\x93\xa0\xa8\xb2\xb3\x11\xc4b\x1e\xf5\xf4\
+S\xbc\xb3\xdc\x91%\x03\xeb\xe8/\xac\xbf_\xab\xd8O\
+RU\x817\x10\xc4^\xf6T\xf4\xfc\xa0`\xcb\xbf\xcc\
+U\xbe\xf0\xbbe\xdc]U\xfc(\xaa\xda~\xbfVQ\
+\xf8\xee\xc0\xb5\x0b\x10\xc4Z\xc6y~q\xdauOO\
+\xca\xedm\xeb\xcc\xf9ow\xaf\x93\xe0O=\xf13|\
+[\xc4e\xc2\xd2\x12\xba\xccF\x10[i\xe1\xf9H\x5c\
+\xd5\xb6\x8f\xbe3\xebd\x1e\xd6\xca\x5c\xf2\xe9\xa0n\x8d\
+\x0b\xfbX\x8b\x8f7\xe5\xb2O\x11WwN\xff9\xb9\
+\xb9\x04}p\xeb\xda\xa5?\xce\x9a\x92>z\x0e\x82\xf8\
+\xcc\xe2\xbc\x9e\xef\x94\xa9{\xf5\xddO\xbe\xfd\xf1\xbf\xe6\
+\xae\xd8\xf6_\x7f{\xef\xbaE3'\xbe;\xf8\xc1\x0e\
+\x17\x9f\xe5{\x15\x95v\xfb\xb8\x88\xcdtTX\xa4i\
+\xdf\xe1S\x96\x1cs\x1c\xb8k\xeb\xf2%\xb3\xbeI\xff\
+d\xf4\xf0a\xcf\xa7\xf5\xe9\xd5\xf5\xb6\xb6W7oX\
+\xa7J\xf2)\xc5\x8e\xfeGw\x22\x88\xdf<\xec\x05J\
+|RRR\xc5\xe4\xe4\x12II\x05\x83\xfc\xb3\x09\xbe\
+>Q\xd9Sc\xa5E\x92*\x9dY+\xb9|\xd2\xc9\
+\xbd{\xdf\x01A\xfcfwe/\x02\xf8\xfb\x81\xf71\
+\xc6r]\x85 \xbe\xf3UB\xf8\xfd\xa8\xe3\xef\xcb{\
+\xeb\x8d\x05k\x84 \xfe\xd33\xf4~\x14\xfd\xd9\xe7%\
+<\xd3T\xb2s\x11\xc4\x7f\xf6\xd7\x0c\xb9\x1fqc\xfc\
+^\xc2[LE;\x1dA\x02`v\xdep\x0b\xd2\xd3\
+\xf7\x15|\xcdT\xb4\xe2\x08\x12\x04O\x85\xda\x8f&\xfe\
+\x7f\xda}\x85\xa9l\xf1\xd9\x08\x12\x00YW\x86\xd8\x8f\
+36\x04\xb0\x82g\x9bJ\xb7\x0bA\x82`\xeb\x99\xa1\
+\xf5\xa3\xc8\x8fA,`\x8a\xa9x\xab\x11$\x10\xe6\x16\
+\x0a\xa9\x1f\x09\xc1\xbc\x92\xf4\xa9\xa9|\xf3\x11$\x18\xde\
+\x0b\xa9 /\x05\xb3|\xfb\x8a\x18\xca7\x03A\x02\xe2\
+\xa1P\xfa\x11\xd8\xdel7\x19\x0a\xf8O\x04\x09\x88\xcc\
+kC\xe8G\x8f\xc0\x96o\x9c\xa1\x84\x7fG\x90\xa0\xd8\
+\xd74t~t\xc8\x0al\xf5\xf6\x18:\x89\x1b\x86 \
+\xc1\xf5\xb8a\xc8\xfch\x9b\x11\xe0\xeau2\x93\xf19\
+\x04\x09\x8eM\xd5B\xe5G\x9b \xfd\x88}a&\xe4\
+c\x08\x12 \xab*\x86\xc8\x8f\x1b\x03\xf5#\x96}\x96\
+\x91\x94\xf7\x22H\x90,\x0b\xcf\x0d\xc3n\x99\x01\xaf]\
+\x9a\x91\x98\xb7 H\xa0\xac\xaf\x15\x12?z\x07\xbet\
+[\x0a\x9b\xc8y\x1d\x82\x04\xcb\xb6F\xa1\xb8\x7f\xfe\x82\
+\x81\xa5\xeba\x22iS\x04\x09\xfaZV\x08\x1e\x5c,\
+\xfc\xa1\x91\xe3\xd3<\x06\xa2\xd6A\x90\xa09\xd8\xd9u\
+?N\x9fkf\xe5:\x1a\xc8z\x16\x82\x04\xcf_\xf3\
+8\xedG\xd0\x1f\xa7\xfe\x0fK\x0c\xbcxV\x0aA\x0c\
+\xf0ei\x87\xfd\xe8z\xc0\xd8\xbau\x0f>m>\x04\
+1\xc1\xca\xba\xae\xeaQ\xe4}\x93\xd7\x00\x8b\x05\x1fx\
+\x1f\x82\x98`\xdf\xadn\xfaQ{\x91\xd1e{)\xf8\
+\xc4\x1b\x10\xc4\x0ccJ\xb8\xa7G\x5c\xca~\xb3\x8b\x96\
+\x15\xfc\xe3l\xbf \x88!\xd6\xb5v\xcd\x8f\x0aS\x8d\
+/\xda\xfc\x02A\x87\xfe\x0eA\x8c1:\xc9-A\xaa\
+\xec7\xbff\xaf\x06\x1dz2\x82\x98c\xc5en\x19\
+\xd2\xdf\x825\x0b\xfa\xd5\xc2\xf1\x08b\x92\x09\xc9.\x09\
+\x92o\xb1\xf9\x15\xdb{a\xb0\x99\xdfF\x10\xa3\x1c\x18\
+R\xd8!C\x9aX\xb0\x8f\xda\xa6`\x9f{\x1f\x82 \
+\xa6\xef\x89\xb4s\xc8\x90\x91\x16,\xd8\xe22Q;\xac\
+\x8c\xb6 \xb1\xd8\xf4\xe6\xce\x08Rj\x8b\x05\xeb\xf5S\
+\x85\x00\x13?\x84 \x160\xcd\x19E\xee\xb0a\xb9\x96\
+U\x8eX\xe0\xc8\x0b\x12\x8b\xcdp\xe4\xaeH\xdct\x1b\
+VkK\xb3\xc0\x02\xdf\x88 \x96\xf0U\x1b'\x1e\xf2\
+\xadq\xd0\x86\xc5:xwPy[\x22\x885\xacM\
++\xe7\x80!\x03\xedX\xacq\xa7\x06\x13\xb7\x01\x82X\
+\xc4\xfe\x91\xf5\xad\x17\xa4\xe0R;\xd6j\xcd\xe5\x81\xc4\
+\xad\x86 v\xf1\xfd}e,7\xc4\x9a\x83\x8e\xf7\xcb\
+\x07\x90\xb6<\x82\xd8F\xe6\xa4\xdb\x8a[m\x885\xfb\
+\xd5\xeez\xd8\xff\x8f\xc1\x17A\x10\x1b\x0f\xb5\xc6\xb7\xb1\
+\xf8\x06{\x99\xed\xd6,\xd4\xba{\xf3\xfb}\xd9.\x13\
+A\xect$\xfd\xfe*\xb6\x1ar\xb7E\xeb\xb4\xfaa\
+\x9f\xcf\xd6\xb7!\x88\xb5,\x19zy~\x1b\x05\x89\x9f\
+i\xd3*\xed}\xb5\xb6_A\x13kv|f/\x82\
+\xd8L\xc6\xac!m\xed{\xf7\xf0\xdc\x83v\xad\xd2\x82\
+\xd43tGLj\x942l\xfa^G\xa6$\xc2\x82\
+\x1c\x22{\xc1\xb0\xceU\xe2\xad2\xc4\xba\xaf\x02dN\
+\xef\xadk\xef\xfc\xfc\xe7w\x194i\xa3S\x13\x12q\
+A~g\xf7\xccaw7*\xaa\xe7\xbc3N\xfc\xbf\
+(\xb4\xc2\xc6#\xd2a\x1d\xca\x8aR\x95h\xd0e\xc0\
+\x98\x05\x19\xee\x0d\x07\x82\x1c\xf9-Y\xfa\xe1sw]\
+~f\xa2@\x8e*\x9dG\xac\xd3\xf01\x9a\xd6\x96\xae\
+\xd0O#R\x1a\xe5\xfecT\x85k\xb7{t\xc4\xcc\
+-\xce\xce\x05\x82\xfc\xcf\x89\xc9\xb2I\xc3\xfav\xb9\xb2\
+v\xd9\xdc<\xbdU\xe8\xdck\x1f|\xf1\xf3\xdf\xaf\xc9\
+\xac\xd7p\x9fe\x9c\xbd\xcb\x93\xf9\xf3G\xcf\xdcvQ\
+\xb9\x938(-pv\xb3.O\xbc>u\xb5\xeb\x03\
+\x81 9\xfd\xa2\xac\xffq\xe2\xa8\x97\xd3\xfa\xf4\xb8\xe5\
+\xfa\xe6u\xab&'\x9f\x9a\x94td\xf6\x93\x92\x92\xca\
+%'W\xa9\x7fE\x87\xee\x8f>\xff\xe6\x87\xd3\xd7\x1d\
+\xfb\xdf\xbd\xa8\xe1\x0e\xf3N\xdb\x17\xe7\xe0\x8ai\xef\x0e\
+}\xa2\xfb\x8d\xcd/</\xb9dR\xbe\xc3e\xe7K\
+*Q\xb9N\xb3\xebo\xed5h\xd4\xa4y\x1b\xc32\
+\x07\x08\xa2\x99,\x0d\x8f|\xa5\xb0\x8c\x08\x12Zf%\
+\x84\xecf\x08\x82\x80V\xee\x92\xff\x84\xd4\xc9d\x19\x11\
+$\xacl\xd7\xf0\xcc\xf0\x10\x96\x11AB\xcbp\x0d\x0f\
+\xba\xaeb\x19\x11$\xacd_*7\xe4z\x96\x11A\
+B\xcb\x82D\xb9!\x1f\xb1\x8c\x08\x12Zz\xc9\x05\xa9\
+\xb8\x8beD\x90\xb0\xb2G\xc3\x13\xb0\x0f\xb1\x8c\x08\x12\
+Z\xc6\xcb\x05\xc93\x9beD\x90\xd0\xd2Jn\xc8\x05\
+\xdc\x0cA\x90\xd0\xb2\xa2\x90\xdc\x90\x17YF\x04\x09-\
+\xfd\xe5\x82\x14]\xcd2\x22HX9P5\x22\x9b\xd7\
+\x22\x08(\x91\xae\xe1\x05\xc5\x09,#\x82\x84\x96\xf6r\
+AN\xdf\xcd2\x22HXYWLnH\x1f\x96\x11\
+AB\xcb`\x0d7C\xe6\xb0\x8c\x08\x12V25\xec\
+\xbaV?\x8buD\x90\xb0\xf2\xad\x86\x1d\xb7^e\x19\
+\x11$\xb4\xdc\xaea\x1b\xc2\x0d,#\x82\x84\x95-%\
+\xe5\x86\xdc\xcc2\x22Hhy]\xc3\xcd\x90t\x96\x11\
+A\xc2J\xf6%rA\xce\xdc\xc7:\x22HX\x99\xa7\
+\xe1\xe5\xc2\xc7YF\x04\x09-\xf7\xcb\x05\xc9\xbb\x90e\
+D\x90\xb0\xb2S\xc3\xf7\xa7\x1bg\xb3\x8e\x08\x12V\xde\
+\xd7p\x9e\xfe\x16\xcb\x88 \xa1\xa5\x85\x5c\x90\x12\x9bX\
+F3lC\x10\xdf\xf9E\xc3\xc7\x10oe\x19\x8d\xb0\
+\xbd\x1e\x82\xf8\xcf\xe3\x1a\xbe\x5c5\x99e4\xe3\x07\x82\
+\xf8\xcf~\x0d\x1f\x9d\xae\xc2\xcd\x10\x03\xc7W\xbf\xf9\x81\
+ \x010Q\xc3yz\x7f\x96\xd1\x88\x1f\x08\x12\x047\
+\xc8\x05\xc9\xb7\x98e4\xe1\x07\x82\x04\xc1\xaa\xc2rC\
+\x9ap3\xc4\x84\x1f\x08\x12\x08\xcfj8\xc8\x1a\xc52\
+\x1a\xf0\x03A\x02!\xe3<n\x86\xb8\xe9\x07\x82\x04\xc3\
+\xb48\xb9!w\xb0\x8c\x81\xf9q\x81\x87 \xc1\xd2E\
+\xc3\xcd\x90\xe9,c\xe0~ H@l.!7\xa4\
+\xfaA\xd61h?\x10$(^\xd6p\x9e>\x90e\
+\x0c\xda\x0f\x04\x09\x8a\xac\x0b\xe5\x82\x14X\xc2:\x06\xec\
+\x07\x82\x04\xc6\xf7\x09rC.g\x19\x03\xf6\x03A\x82\
+\xa3\x87\x86\x83\xac\xf7Y\xc6`\xfd@\x90\xe0\xd8QV\
+.H\xe9m\xacc\xa0~ H\x80\x8c\xd2\xf0\x13r\
+7\xcb\x18\xa8\x1f\x08\x12$M\xe5\x82\xc4\xcf`\x19\x83\
+\xf4\x03A\x82dQ^\xf9\xf7\xd3\xc7\xb0\x8c~\xb1\xe5\
+|\x0fA\xcc\xd2G\xba\x89\xdc\x90\xfd,b\x90\xbf\x1f\
+\x08\x12,{+I\xf4\xa83\x82\x8f!\x04\xed\x07\x82\
+\x04\xcb\xa7\xeaOb\xb5\xe6Q,\x03~ H\xc0\x5c\
+\xad\xa6Gb\xe7\xf9\xac\x9d\x09?\x10$`V\x16R\
+\xd0\xa3P\xcaJV\xce_?\xeaz\x08b\x07\x03r\
+\xff\xa6T\xeaf\x96\xcd\x94\x1f\x08\x124\x07\xce\xc9\xe5\
+\xa7\xa0\x87\xeca\xd1\xcc\xf9\x81 \x81\xf3\xaf\xdc\xbc\x5c\
+x\xee\x88\x0cV\xcc\xa4\x1f\x08\x12<\x1dOZ\x8fF\
+\x13\xd8\xca\xc4\xb0\x1f\x08\x12<\xeb\x8b\x9f\xdcC%\xad\
+y\xaa\xc4\xbc\x1f\x08b\x80\xa1'\xf3\xd5\x9c\xce\x0bX\
+(\x0b\xfc@\x10\x03d\xd5;\x91\x1e\x85S~e\x99\
+\xac\xf0\x03AL\xf0\xdd\xf1_.,\x99\xba\x855\xb2\
+\xc4\x0f\x041\xc2\x9d\xc7\xe9H%\xae\xeb\x06\xc6\xd6\x13\
+\xfa\x81 f\x1aS*\xa7~\x9c\xc7u]\xab\xfc@\
+\x103\xbc\xc5u]7\xfc@\x103d7\xf9\xb3\xeb\
+\xba_\xb30\xb6\xf9\x81 \x86\x98\x9f\xf8\x87\xeb\xba\x8b\
+X\x15\xfb\xfc@\x10S\xf4\xfc\xaf6\x14IY\xcd\x92\
+\xd8\xe8\x07\x82\x98b\xcf\x19G\x9bP*u+\x0b\x12\
+\xb0\x1fu<\x04\xb1\x9b\xb1GZ\x90<d/\xaba\
+\xab\x1f\x08b\x8e\xab~o@\xad\x11\x99,\x85\xbd~\
+ \x889\x96\xe4?t]\x97u\xb0\xda\x0f\x041\xc8\
+\x80\xf6\xb3Y\x04\x03l\xca\xcd\x07\xf1X.\xe0\xf7\x03\
+A\x00\x94\xfc@\x10\xc0\x0f\x04\x01P\xf3\x03A\x00?\
+\x10\x04@\xcd\x0f\x04\x01\xfc@\x10\x80XlcM\x0f\
+A\x00t\xfa\x81 \x80\x1f\x08\x02\xf8q\xae\x87 \x00\
+\x9a\xfd@\x10\xc0\x0f\x04\x01\xfc@\x10\x00\xed~ \x08\
+\xe0\x07\x82\x00~ \x08\x80v?\x10\x04\xf0\x03A\x00\
+?\x10\x04@\xbb\x1f\x08\x02\xf8\x81 \x80\x1f\x08\x02\xa0\
+\xdd\x0f\x04\x01\xfc@\x10\xc0\x0f\x04\x01\xd0\xee\x07\x82\x00\
+~ \x08\xe0\x07\x82\x00h\xf7\x03A |l\xd0\xe7\
+\x07\x82@\xf8\xfc\xa8\xe1!\x08@\x10~ \x08\xe0\x07\
+\x82\x00~ \x08\x80v?\x10\x04\xf0\x03A\x00?\x10\
+\x04\xf0\xc3C\x10\x80\x00\xfd@\x10\xc0\x0f\x04\x01\xfc@\
+\x10\xc0\x0f\x04\x01\x08\xd2\x0f\x04\x01\xfc@\x10\xc0\x0f\x04\
+\x81\xc8\xfaQ\xddC\x10\x00\x03~\xfc?\xf8\x1a\xb7\x9e\
+cx\x86\x0f\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x02\xbb\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x80\x00\x00\x00v\x08\x03\x00\x00\x007+k\xfd\
+\x00\x00\x003PLTE\x00\x00\x00A\xcdRP\xca\
+NA\xcdRA\xcdRF\xccPH\xcbPB\xccQ\
+I\xcbPD\xccQE\xccQJ\xcbOE\xccQD\
+\xccQD\xccQC\xccQA\xcdRz\x18s\xcb\x00\
+\x00\x00\x10tRNS\x00\x186Oc\x9d\xab\xae\xb8\
+\xbd\xc9\xcd\xd6\xdf\xe9\xf0\xb8\x82#\xe9\x00\x00\x02'I\
+DATh\xde\xc5\xda[v\x830\x0c\x04PT\xd3\
+\x90\x07\xa5\xda\xffj\xfb\x91\xa4!`\x9f\x18i\xa4\xd1\
+\x06\xe6\xf2\x01#\xc0\xc3\x101E\x17\x19\x98ST\x97\
+\x22\x5c\x80\xea(d\x00Sp\x07\x10\x05\x0f\x00O\xf0\
+\x04\xe8$d\x00K\xf0\x02\x90\x04+\x00G\xb0\x06\xe8\
+U\xc8\x00\x86\xe0\x1d@\x10l\x00:\x0b\x19\x90^\x8e\
+;@\xb6`\x0fH\xae\xe7\x0a \xb7\x18\xaa\x80LA\
+\x1d\x90(h\x00\xf2\x04-\x00\xa4\x18\xa4|\x9eQ\x03\
+\x05\xdf\xea\x1a\xbf\xe0\xacd\x81\x17\xe0\xae&7\xc0+\
+\xf0\x03\x9c\x02\x00\xc0W\xcf\x08\x80\xab\x1c!\x00\x8f\x00\
+\x03p\x08@\x00\xfd\xb5.\x08(\x80\xb9\x9ap\x00\xa3\
+\x00\x08\xb0\x09\x90\x00S1@\x01:\xb1\x01\xda\xbf\x86\
+\xdc\x84\x09\x90Q\xb5\x10\x012j\x10`\xec\xcf\x8f\x00\
+t\xbe.\xdd\xf3\x03\x00\x9d} \x93\xc6\x00\x0e\xe6\xc3\
+\x01\xf3\xc1|4\xa0s/\x93\x8b\xc6\x00z\xf3\xaf\x1a\
+\x030\xe4C\x01\x93!\x1f\x09\xe8\xcd\xff\xd1\x18@o\
+\xfe\xa21\x00c>\x0c\xd0\xb7\x06I\xd9\xe6\xa3\x00\xe3\
+\x91\xc7\x7f\x0d\xf0u\xfe<sD\xfe\x13\xd03%\x22\
+\x1f\x018V\xbfx\xc0\xd1\xfaC\x03\x9c\xf9n\xc0\xec\
+\xcc\xf7\x02\x8e\xd7\xef\xee\x0a:\xee\xbf\x93\xb4\x00\x96\xfa\
+\xb3Li\x00\xb2\xf2[\x80)+\xbf\x01\xb0\xd5/\x0e\
+`\xad?\x14 3\xbf\x060\xd7/\x08\xe0\xa9\x1f\x04\
+ 9\x7f\x07\xc8\xce\xdf\x00|\xf5\xeb\x07x\xeb\xcf\x0b\
+`\xe4\xaf\x013#\x7f\x05\xe8\xfd+q\xd1\x18@\xf7\
+_\x11\x8d\x00\xc8\xed\xd4\xfd\x09t\x89\x00\x1c\x19Y\xc8\
+\x00\xb0\xc0\x00@\xac!>\x00T`\x02 \x056\x00\
+P`\x04\xe0\x9e\x87V\x00L`\x06\xa0\x04v\x00H\
+\xe0\x00`\xf6\x12\x0f\x00\x22p\x01\x10\x02\x1f\x00\xf0v\
+\xe0\x04\xb8\xab\x09pj\xaf-\x18;N0!\x8ej\
+5\x05eH\x9aV1\xa4\x01Z\x82<@C\x90\x08\
+\xa8\x0b2\x01\xd5bH\x05\xd4\x04\xb9\x80\x8a \x19\xb0\
+\x17d\x03v\xd5\x94\x0e\xd8\x0a\xf2\x01\x1b\x01\x01\xf0^\
+\xcf\x0c\xc0[5q\x00+\x01\x09\xf0\x12\xb0\x00\xff\xc5\
+@\x03<\x05<\xc0C@\x04\xdc\x05L\xc0 \x13\x19\
+0\xc8\x14\x04\xf8\x03L-q\xaa\x9e\xb6\xb9\xda\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x02\xf6\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x9e\x00\x00\x00\x9d\x04\x03\x00\x00\x00\xb7?\xdc\xe6\
+\x00\x00\x00$PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RA\xcdRA\xcdRH\xcbPB\xccQE\xccQ\
+J\xcbOD\xccQC\xccQA\xcdRE\xef\x01u\
+\x00\x00\x00\x0btRNS\x00\x00\x18Oc\xab\xae\xc9\
+\xd7\xe9\xf0\xc1\xad8\xf5\x00\x00\x02vIDATh\
+\xde\xcd\xda\xdbM\xc40\x10\x85\xe1\x15i\x00:\x88D\
+\x07\xc0\xdb\xbem))!=\xd0\xc0\xd6\xb2J\xb4\xeb\
+\xe6x\x08\xb98\xbe\x8dg\xfe\x07\xa7\x80OG \x0e\
+\xe3\xb1/\x17\xc1\xd7=\xfb\x0b\xf9u\xee\x0e{\xaf/\
+\xd6s\x8f\x9e\xf5\xdc\x0d\xf6\xc8\x80\x9ds\xce\x0d\xb07\
+\xf5\xac\x07\x06\x5c<.\xe0\xe2\xb9\x11\xf6\xe6\x9e\xf5\xb0\
+\x80\xabG\x05\x5c=\xaa\x166\x0f\xea\xad\xcd\x83\x02\xee\
+\x1e\xd3[\xbb\xc7\xd4\xc2\xc1Cz\xeb\xe8\x11\x01\x8f\x1e\
+Q\x0b\x9e\x07\xd4\x82\xe7\x01\x01}\xcf\x1e\xd0\xf7\xec\xb5\
+p\xf2\xcc\xb5p\xf2\xcc\x01\xcf\x9e5\xe0\xd9\xb3\xd6B\
+\xe0\x19{+\xf0\x8c\x01C\xcf\xd6[\xa1g\xab\x85\x88\
+g\xea\xad\x98g\x09\x18\xf3,\xb5\x10\xf5\x0c\xb5\x10\xf5\
+\x0c\x01\xe3\x9e>`\xdc\xd3\xd7B\xc2S\xd7B\xc2S\
+\x07Ly\xda\x80)O[\x0bI/\xd2[\x9f\xdf\xe5\
+\xef\xc7\xc9\x03^\x9d\xe5\x0b{\xcb\xe6\x85\xb5`\xf4\x82\
+\xde\xb2z\xe7\x80V\xef\x5c\x0bf\xefT\x0bf\xef\x14\
+\xd0\xee\xf9\x01\xed\x9e_\x0b\x80\xe7\xd5\x02\xe0y\x01\x09\
+\xef\x18\x90\xf0\x8e\xb5\x80x\x87\xdeB\xbcC@\xc6\xdb\
+{\x8b\xf1\xf6Z\x80\xbc\xad\xb7(o\x0dHyk-\
+`\xde\x7f-`\xde\x7f@\xce[\x02r\xdeR\x0b\xa0\
+7\xf7\xac\xe7F\xd8\x9b{\xd6sw\xd8{\xf6\xac\xe7\
+\xee\xb0\xf7\x82=\x07{\xcf\xb6\x7f~3\xfc\xfb\x1d\xdb\
+\xfe\xfb\x80\xff~'\xb8_\x86\xb6\xfb\x19\xfe\xff\xf1\x80\
+\xff\xbf\xdd\x9a\x9e\x0f\xb6\x01\xebJ\x15\x01\xea\xed\x03j\
+\x93\xf3\xe9\x0c\xcf\xcfc\xdb\xe7\x0f\xf8|4\xc1\xe7\xb7\
+\xa1\xed\xf3/|>\x7f\xc0\xfb\x83[\xd3\xfb\x97`\x81\
+u\xa5\x8a\x00\xf1\xc2\x05 \xbd\xff3\xed'\x95\x0b\xd4\
+N\xb4\xc9io\xbf\x0b\xef\x9f'x?>\xb0\xfb{\
+\xfa~!\x1e\xef#\xff\xbd'\xbd\xc4\x05\x92\xdaK\x5c\
+pi\xbd\xd4\xfd\x96\xd2K^\x10*\xbdd\x11\xe8\xbc\
+\xf4\x05\xab\xceK\xf7\x94\xca\xcb\x14\x81\xca\xcb\x14\x81\xc6\
+\xcb\xf5\x94\xc6\xcb\xf5\x94\xc2\xcb\x16\x81\xc2\xcb\xf6T\xbd\
+\x97\xef\xa9z/_\xa3\xd5^\xe1\xa2\xbb\xda+\x5c\xc4\
+\xd7z\xa5{\xf8J\xaf\xf8\x90\xa1\xd2+\x0e,u^\
+\xf9!H\x9dW\x9e\xa7\xaa<\xc1\xc0R\xe5\x09\x06\x96\
+\x1aO2O\xd5x\x92y\xaa\xc2\x13\x0d,\x15\x9eh\
+\x9e\x92{\xb2yJ\xee\xc9\xc6=\xb1'|\x90#\xf6\
+\x84\x0f\x86\xa4\x9e\xf4\xbd\x90\xd0\x13?\xb8\x12z\xe2\x83\
+\x95\xcc\x93?X\x93y\xf2s\x9f\xc4{\xfb\x15\xc7\xfb\
+\x03\xfd\xb9\xba%(\xb7\xb7:\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x02c\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00w\x00\x00\x00w\x04\x03\x00\x00\x00\xcb\x17\xc2\xb9\
+\x00\x00\x00'PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RA\xcdRA\xcdRB\xccQD\xccQE\xccQ\
+E\xccQD\xccQD\xccQC\xccQA\xcdR\xeb\
+\xfeC\xda\x00\x00\x00\x0ctRNS\x00\x00\x18Oc\
+\xae\xbd\xc9\xd6\xdf\xe9\xf0v\x89\xbe\xf7\x00\x00\x01\xdfI\
+DATX\xc3\xc5\xd8\xbbm\xc30\x14\x05P\xc1Z\
+ \xd9\x80e\x902I\xe9\x22\xd0\x08\x9c\xc4\xf0H\xd2\
+\x22)(\x07R\xdeP)\xa2\x0fI\x89|\x9f[\x84\
+\xfd\xc1\x05l]>\x92MS^\xed\xb7k\xcc\xab\xa5\
+\x1e\xc1\xb3\x030\x10\xdd\x12\xfd\xbc\x01\x98\x82\x030u\
+\x08\xb6F\xb7DD\xe4\x11<:\x00\x1b\xa3\x17l\x8b\
+^0\xdd\x11l\xea\xc7\x8aM\xd1\x1b\xb6Do\xd8\xd2\
+\x8f\x1d\x1b\xaa\xb9cCt\x84\xf5\xd5\x8c\xb0\xbe\x1f1\
+VW3\xc1\xda\xe8\x04k\xfb\x91be?R\xac\x8c\
+\xce\xb0.:\xc3\xba~\xe4X\xd5\x8f\x1c\xab\xa2\x0fX\
+\x13}\xc0\x9a~\x1c\xb1\xa2\x9aG\x9cG_\xde\x8b\xeb\
+\xe3\x88\xb3j\xbe\x92j\xa5\xfd\xb8\xeapZM-N\
+\xa2\xb58\xe9\x87\x1a\xc7\xfdP\xe38Z\x8f\xa3h=\
+\x8e\xfaa\xc0{?\x0cx\x8f\xb6\xe0-\xda\x82\xb7~\
+\x98\xf0ZM\x13^\xa3mx\xa9\xa6\x0d/\xfd0\xe2\
+\xbfjZqp\x00&\x8f\xe0\xd1\x01\x98<\x82G\x07\
+`\xba!\xf8\xeb\xdf\xf0'\x80\x03\xf2\x83u\xc0_5\
+\x00\x1f\xc9\x8c|\xdb=\xd0\xaa\x09\xe9\xf3\x1d\xd8I\x96\
+\xcd\xf7\x0a\x04\xdb\xf0\x03\xd9z=\xb0\xe9\x8f\xc8\xb8\xf1\
+\xc0\xa0\x0b\xc8\x88\xed\x80\xe1\x1e\x90cE\x07\x1ch\x06\
+\xe0(5#'\xc0\x1e8{N\xc9\xa9\xf7\xc5z\x06\
+\xd3\x1f\xd6\xe5W\x94\x96\x0b\xd6\xe1\x07rA\xf1\xc0\xd5\
+hD.e\x1e\xb8\x0e\x06\xe4\x22z|sx.\xad\
+\xa7\x1c\x9f\x04\xcb\xf1\xc9c\x87\x18\x0f\xce\x8eO/\xb0\
+R|zu\x16\xe2\xc9\x01\xf8\xbc\x112\x5c\xa8\xa2\x0c\
+\x17\xaa(\xc2\xa5*\x8ap\xa9\x11\x12\x5c\xac\xa2\x04\x17\
+\xab(\xc0\xe5*\x0ap\xf9\xf9\x8f\xc7\x95=\x80\xc7\x95\
+wG\x16\x0f\xce\x8e\xaboI\x1c\xae\xbeb1xr\
+\x00\xae\x0f\xa7:f\xa6b\x1d3S\xb1\x8a\xb9\xa9X\
+\xc5\xdcp\xaaav*V\xf0\x85{\x8b\xff\x05\xc8d\
+f\xae\xfe\xc1\x88\xef\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x1cV\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x02X\x00\x00\x01\xad\x08\x03\x00\x00\x00\xfd\x0f\xfa\xd9\
+\x00\x00\x00\x09pHYs\x00\x00'\x8b\x00\x00'\x8b\
+\x01q}\xe4H\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x03\x00PL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84.\xdb\x89,\xdc\x84+\xdd\x88)\
+\xde\x840\xdf\x87.\xe0\x83-\xe1\x87,\xdb\x83+\xdc\
+\x87)\xdd\x83/\xdd\x86.\xde\x83-\xdf\x86,\xe0\x83\
++\xe1\x86*\xdb\x82.\xdc\x85-\xdd\x82,\xde\x85+\
+\xde\x88+\xdf\x85*\xe0\x87.\xe0\x85-\xdc\x87,\xdd\
+\x84+\xdd\x87+\xde\x84*\xdf\x86.\xdf\x84-\xe0\x86\
+,\xdc\x84+\xdc\x86+\xdd\x84.\xde\x86-\xde\x84-\
+\xdf\x86,\xdf\x83+\xe0\x85+\xdc\x83.\xdd\x85-\xdd\
+\x83,\xde\x85,\xde\x87+\xdf\x85+\xdf\x87-\xe0\x85\
+-\xdd\x86,\xdd\x85,\xdd\x86+\xde\x84+\xde\x86-\
+\xdf\x84-\xdf\x86,\xe0\x84,\xdd\x86+\xdd\x84+\xde\
+\x86-\xde\x84,\xde\x85,\xdf\x84+\xdf\x85+\xdd\x84\
+-\xdd\x85-\xdd\x84,\xde\x85,\xde\x86+\xde\x85+\
+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86+\xde\
+\x85+\xde\x86-\xdf\x85-\xdf\x86,\xdf\x84,\xdd\x86\
++\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\
+\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\
+\x84,\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85\
+,\xde\x86,\xde\x85+\xde\x86-\xde\x85-\xdf\x86,\
+\xdf\x85,\xdd\x85+\xdd\x84+\xde\x85-\xde\x84,\xde\
+\x85,\xde\x84,\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84\
+,\xde\x85,\xde\x84,\xde\x85+\xde\x86+\xdf\x85-\
+\xdd\x86,\xdd\x85,\xde\x86,\xde\x85+\xde\x86-\xde\
+\x85,\xde\x85,\xdf\x85,\xdd\x85,\xdd\x85+\xde\x85\
+-\xde\x84,\xde\x85,\xde\x84,\xdf\x85,\xdf\x84+\
+\xdd\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\
+\x86+\xdf\x85-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85\
+,\xde\x86-\xde\x85,\xde\x85,\xdf\x85,\xdd\x85,\
+\xdd\x85+\xde\x85-\xde\x85,\xde\x85,\xde\x84,\xde\
+\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\x84\
+,\xde\x85,\xde\x86+\xde\x85-\xdf\x86,\xdd\x85,\
+\xde\x86,\xde\x85,\xde\x85+\xde\x85,\xde\x85,\xde\
+\x85,\xdf\x85,\xde\x85,\xde\x85-\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xdd\x85-\xde\x84,\
+\xde\x85,\xde\x84,\xde\x85,\xde\x86,\xde\x85-\xdf\
+\x86,\xdd\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85\
+,\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\
+\x85-\xde\x85,\xde\x85,\xde\x84,\xde\x85,\xde\x86\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85\xf8\xdf\x16\xb8\x00\x00\x00\xfftRNS\x00\x01\
+\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\
+\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\
+\x22#$%&'()*+,-./01\
+23456789:;<=>?@A\
+BCDEFGHIJKLMNOPQ\
+RSTUVWXYZ[\x5c]^_`a\
+bcdefghijklmnopq\
+rstuvwxyz{|}~\x7f\x80\x81\
+\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\
+\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\
+\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\
+\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\
+\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\
+\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\
+\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\
+\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xeb\x08\xd9\
+5\x00\x00\x17\xccIDATx\xda\xed\xdd{\x9cM\
+\xe5\xfe\x07\xf0\xb5gh\x90\xeb\xb8D\xe4\xb8F\xb9\x95\
+q\x8b\x944'\xe4\x1aM\xa1\xa2NE\xc2\xe8\xa2\xa6\
+R\x19Q8(\xa4N\xa3\x9bD\x0e\x91J9\x95\xe6\
+\xd0\xa9\x8e\x5c\x0e\xe1'\x84\xdc\xefL\x0d&\xc3\xcc\xec\
+9\xbf\xdf\xef\x9c\x84\xb9\xec\xfdYk}\xd7\xf7Y3\
+\x9f\xcf\xdf^\xf3|\xd7\xf7y\xdb{\xed\xb5\x9e\xf5,\
+\xcbr\x9eJ\xff\x93\xcd0\xe7\x87\xae\x18CaU\xda\
+\xc0.2\xee\xc3\xa2+F\x02\x16]1\x12\xb0\xe8\x8a\
+\x91\x80EW\x8c\x04,\xbab$`\xd1\x15#\x01\x8b\
+\xae\x18\x09Xt\xc5H\xc0\xa2+F\x02\x16]1\x12\
+\xb0*\xd2\x15#\x00\xab\xe2zv\x8eq\x1f\x16]1\
+\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04,\xbab$`\xd1\
+\x15#\x01\x8b\xae\x18\x09Xt\xc5H\xc0\xa2+F\x02\
+\x16]1\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04,\xbab\
+$`\xd1\x15#\x01\x8b\xae\x18\x09X\x15\xd7\xb1U\x8c\
+\xfb\xb0\xe8\x8a\x91\x80Un5\x1b\xc5\xb8\x0f\x8b\xae\x18\
+\x09Xt\xc5H\xc0\xa2+F\x02\x16]1\x12\xb0\xe8\
+\x8a\x91\x80EW\x8c\x04,\xbab$`\xd1\x15#\x01\
+\x8b\xae\x18\x09X\xe5V\xb1=\x8c\xfb\xb0\xe8\x8a\x91\x80\
+U\x96\xae\x18\x01Xt\xc5H\xc0\xa2+F\x02\x16]\
+1\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04,\xbab$`\
+\xd1\x15#\x01\x8b\xae\x18\x09XeW\xb2'\x8c\xfb\xb0\
+\xe8\x8a\x91\x80EW\x8c\x04,\xbab$`\xd1\x15#\
+\x01\x8b\xae\x18\x09Xt\xc5H\xc0\xa2+F\x02\x16]\
+1\x12\xb0\xe8\x8a\x91\x80EW\x8c\x04\xac\xb2+\xd8\x08\
+\xc6}Xt\xc5H\xc0*\xc0\xcfy\xa5\xa6\xa4\x1c\xdb\
+\xfe\x7f9\x90\x92\x92\x92\xc9\xd9\xf6\x14V\xc1r\x95\xb6\
+\xf5\xeb\xb9\x93\x13\xfa\xdfrcL\x9dJ\xc5.\xb8\xc3\
+\x1eQ\xaef\x93\xb6\x9d\xfb\xc4\xbf0\xe3o\xeb\x0fr\
+\xea\x85a\x15\x94\xf5W\xc7V\xcc\x1a\xd9\xb7y\xb9\xb0\
+\xf7\xad/Z\xf7\xe6a\xd3>\xdf\xce\x8f1)X\x05\
+\xc0\xd5\xce\x85\xcfv\xadf\xd9K\x89V\x0f$\xad:\
+E\x07\xee\xc3\xf2w\xf9\x19\xdf\x8d\xef\x1cm9M\x91\
+\xab\xe2\x17\x1c\xa6\x05\xc2\xfao\xd6\xbc\xd0\xa1\xa4\xe5V\
+\x02\x0d\x06/8A\x0f\x85\x1eV\xe67\xc3.\xb3\xdc\
+N\xb1\xd8){H\xa2\x10\xc3\xca\xfc\xa4wiK&\
+\x81f\x93\x0ePE\xe1\x84\xf5CbuK2\x11\xb1\
+3\xd3\x08\xa3\xb0\xc1J\x7f\xb3\x99%\x9frC\xb7\x92\
+Fa\x82ux\x5cU\xcb\x9bD\xc4.\x22\x8e\xc2\x02\
+k\xeb}\xc5,\x0f\xd3\xf4\xafY\xf4Q\x08`\x1dJ\
+\x88\xb2<N\x83yA\x0a)\xe0\xb0\x8e%\x14\xb7\x14\
+\xd2*\x99D\x0a2\xac\xcc\xa9e,\xa5t\xdfE$\
+\x05\x16\xd6\x9a\x16\x96^J$\x9e&\x93\x02\x09\xeb\x97\
+\xc1\x11\x96j\x1a~C'\x05\x10\xd6\xf2Z\x96v\x02\
+\xc3\xf8\xa1U\xd0`e$FZ\x06\xa4\xd9\x8f\xa4R\
+\xa0`\xedhm\x99\x91R3h\xa5\x00\xc1J\x8e\xb6\
+\x8c\xc9\xe0\x0c\xd7\x0fo[R\xb8\xd9AXnfz\
+Q\xcb\xa0\xfc1\xc5\xed\xe3\x9b\x13\xf6\xd8\x0b\x09\xcb\xc5\
+\x8bW\x09\x96Y\xa9\xb3\x89\xb0\x0a\x00\xac_o\xb6L\
+K\xf4*\xc2\xf2=\xac\xb4X\xcb\xbc\x94\xf9\x96\xb0|\
+\x0e\xebd{\xcb\xc4\x5c\xfc%a\xf9\x1a\xd6/\xad,\
+3Sb\x09a\xf9\x18\xd6\xe9\x1b-SSb9a\
+\xf9\x16VV\x9cen*l!,\xbf\xc2z\xc82\
+9\xb5\x0f\x12\x96?aM\xb2\xccN\xcbS\x84\xe5G\
+XK#\x0d\x87e\x0d ,\x1f\xc2:X\xc52>\
+o\x13\x96\xef`e\x5cg\xbe+\xab\xf8Z\xc2\xf2\x1b\
+\xac\x04\xcb\x0f\xa9w\x92\xb0\xfc\x05\xeb\xdb\x08_\xc0\xb2\
+\x86\x12\x96\xaf`\xa5\xd5\xf5\x87++b\x19a\xf9\x09\
+\xd60\xcb/\xa9y\x82\xb0\xfc\x03\xebk\xf7\xbe\x08#\
+\xab\xb6\xbe\xe5\x9eGFOKJzs\xde\xec\xa4\xa4\
+\xa4\x09O\x0d\xeas\xd3\x95\xeem\xd4f\xc5\x13\x96o\
+`\x9d\xae\xe7\xca\xf2\xf4\xb6\x03_N\xde\x95\xc7B\xe2\
+\x94\xb5sF\xf4\xac\xe3\xca\x97\xe1j\xc2\xf2\x0b\xac\x09\
+\x8eg\xbbJ\xff\xd7\xd6\x85\xb1\x11\xf2\xe1\x8f\x9fl\xed\
+\xf82l\x9b a\xf9\x03\xd6\x01\x87\xdb\xf45\x1f\xb3\
+\x06\x98\xeb\xa3\xb3\xfb\x96r6\xde,\xc2\xf2\x07\xac\xbb\
+\x1d\x9dL?\xb3\x19\xff\x0d:\xbb\x93\x93\xcf\xad\xaa'\
+\x08\xcb\x0f\xb0V88so\xff\xb1\xcd\xbd\xacv>\
+\xea`\xbb\x91\xa7\x09\xcb\x0f\xb0\xda\xd9\x9d\xdf@\xcf\xef\
+\x1d\x0c{|b\x05\xdb\x0b\x95\x0f\x11\x96\xf9\xb0\xbe\xb4\
+;\xbd79}v&u\xa4\xdd\x93\xadG\x08\xcb|\
+Xmm\xfe\x0e\x9c\xe7\xc2\xd8\xfb\xfb\xd9\x1b\xbc\xd8^\
+\xc22\x1d\xd6b{\xdf\x82C\x8f\xbb3\xfc\x87\xf6\x16\
+\xeb\x0c%,\xc3a\x05m\xed\xb2]q\xb1k\x05\x1c\
+\xeah\xa7\x80\xa8=\x84e6\xac/\xecL\xebu\xfb\
+\xdc\xa4=\xd6\xce\xa5\x87\xc7\x09\xcblX7\xd9\x98\xd4\
+\xdb\x5c~\x1d\xdc\x87%\xf0\x1aJ\xa7\x12\x96\xc9\xb06\
+\x04\xf09}\xc6\xf5\xbd\xb2WT\xc2\xab\x98BX&\
+\xc3\xb2q\xd1}\x8c@\x19\x9b*\xc3e\xd4\xc8$,\
+sa\x1d\xc0\xdf\x0d\xf0\x82H!\xeb\xca\xc3\x85\xcc'\
+,sa\x8d\xf2\xf6\xa49\xbfoC\xf8=\x05\xb1\x84\
+e,\xac\xac?\xa0\xb3y\xb3\xd8K\xc2\xdfG\xcf\xf6\
+\x02\xdb\x08\xcbTX\x9f\xa1\xae\x9a\x9c\x94+\xe6i\xef\
+nE\x13\x96pz\xa17\x7f7I~|\xa27\xc3\
+\xabf\x12\x96\x99\xb0\x8e\xa0\xa7\xeeo\x88\x96\xb3\x07\xdd\
+\xaa\xf9S\xc22\x13\xd6Dp\x22\xbb\x0b\xd73\x13\xac\
+\xe7V\xc22\x13\xd6\xd5\xd8<\x96\xd8!]\x10\xb8M\
+e\xb1T\xc22\x11\xd66\xf0\x03b\xbcxE\x1b\xc1\
+\xfd\xe5g\x13\x96\x89\xb0\xc6`\xb3X\xf7\x8c|I\xc3\
+\xbc\xf9n&,\xd14\xc4fq\xae\x07%\x1d\xc6\x96\
+\x94F\xfdBX\xe6\xc1\xda\x84\xb9j\xec\xc9\x1b\xc0\x9f\
+\xc0\x8az\x87\xb0\xcc\x83\x05\xde\xceY\xe4IQ\xc7J\
+z\xf1]HX\x92\xc1\x96\x8e^\xe1\xd1{\xe5\xe3\xb1\
++\xb6\xe9\x84e\x1a\xac\x03\xd8\xbd9\xaf^\x1b\xb8\xa3\
+\x08T\xd6\x17\x84e\x1a\xac7\xa1\x09\xbc\xd4\xb3w\xe8\
+\xde\x0a\xd55\x8c\xb0L\x83\xd5\x13\x9a\xc0\x91\x9e\xd5\x85\
+=\xe6X\x9b\xb0\x0c\x83u\x1a\xfaa\x1f\xb9\xd3\xb3\xc2\
+\x82\xd8^G?\x12\x96Y\xb0\x92\xa1\xe9\xeb\xeaae\
+/@\x95\xbdLXf\xc1\xc2V?}\xe8ae\xfb\
+\xa0=Jz\x11\x96Y\xb0\xaeEf\xafl\xba\x97\xa5\
+A\xeb\xb2\xcag\x11\x96I\xb0\xd2\xa0\xa5X\xf7yZ\
+\xdb_\xa0\x0f\xd3\xf5\x84e\x12\xac%\xd0\xe4%{Z\
+\xdb\x11\xe8R\xd6T\xc22\x09\xd6\x08\xe8\xeb&\xd3\xdb\
+\xe2n@\x8a\xeb\x99\xf7\xdf\xc9L\xca#\xf7\x85\xfd\xd7\
+\x07%\xd9\xc8w\x85\x18\x16t\x8a\xd5\xcf\xe3\xe2\xa0\xd7\
+\xdbU\xc8\xfb^S\xba\xa5\x93\xc7\x0a/\xac\xd3\xd0)\
+\xd6|\x8f\xab\xdb\x0cM\xe3V\xc22\x07\xd6\x0ah\xd5\
+\xd3q\xaf\xcb\x83\xde\xbf2\x9b\xb0\xcc\x815\x0d\xe9S\
+{\xcf\xcb\x1b\x82\x94\xf7\x10a\x99\x03\xeb.\xfd\xdd\x1a\
+\xf2\xcb\x07Hym\x08\xcb\x1cX\x97#}Z\xe1y\
+y?#[\xb1\x15?CX\xa6\xc0\xfa\x19Y\x8bU\
+&\xd3\xfb\x02c\x90y\x5cKX\xa6\xc0\x82\xf6\x87\xec\
+\xacP\xe0\xc3\xae<\x9fMX^\x07z)\xd3(\x85\
+\x02\xdfse\xb1\x1fay\x1dhw\xf5\xc5\x0a\x05\xfe\
+\xe8\xca\xafV\xc2\xf2:\xd0\xb3\xf5\x87\x15\x0a\x0c\x22\xfb\
+\x83T ,C`e\x22\xbb\xe7\xd5T)1\x16\x99\
+\xc8\x83\x84e\x06,\xe8Q\xd5\xdbUJ\x84\x1e\x5c]\
+BXf\xc0\x9a\x87ti\xa2J\x89\xef#%\xbeH\
+Xf\xc0JD\xba\xb4L\xa5\xc4\x9dn\xacC$,\
+\x8f\xd3\x17hR\xc4q\x9d\x1a\x91W\x0a\xb4#,3\
+`\xb5\x00\x9aT_\xa9\xc6\x0e@\x8dU\x09\xcb\x0cX\
+\xe5\x80&uW\xaaq(Pc\xe0$a\x99\x00\xeb\
+\x88\x1f\x9a4\xd5\x85\x07*\x08\xcb\xdb\xfc\x13i\xd2t\
+\xa5\x22\xff\x86\x14\xf9\x01a\x99\x00\x0b\xda\x9cx\x99R\
+\x91\xd0\x06\xa9\xe3\x09\xcb\x04X\xcf\x22M\xda\xa7Td\
+\x06\xb2\xcf\xed\x00\xc22\x01V\x7f\xa0G%\x83ZU\
+\x22k\x11;\x11\x96\x09\xb0\x90\xdd\xd4\x9b\xaaU\xd9\x19\
+\xa8\xb2!a\x99\x00\x0by\x06\xa6\xb7Z\x95\x0f!\x8b\
+\x5c\x09\xcb\x04X\xc8\x1b\x98\x9fU\xab\xf2\x15d*\x8f\
+\x13\x96>\xac\xa3H\x8ff\xa8\x95\x09\xbd\xf2n#a\
+\xe9\xc3Z\xe3\xc6\x8a\x14\xf9\xacG\xca\xfc\x9c\xb0\xf4a\
+}\xec\xc25m\xd3\xee\x0f\xbcAX\xfa\xb0^Cz\
+tD\xad\xcc r!k\x0ca\xe9\xc3B\xdeHq\
+QP\xafC\xd5\x80:\x87\x11\x96>,dc\x84\xea\
+\x8a\x1dB\xde\x9c\xd1\x87\xb0\xf4a\xdd\x0e\xb4\xa8\xa5b\
+\x87\xba\x02u\xdeHX\xfa\xb0\x90\xfd\xf2z(v\xe8\
+~\xa0\xce\xc6\x84\xa5\x0f\x0byM\xe1\x03\x8a\x1dz\x06\
+\xa8\xb32a\xe9\xc3\xba\x04hQ\xa2b\x87\x90K\xef\
+Er\xfd\x91\x919.\x8f\xf4\x09\xfb\x0f\xf7\x1bg#\
+\x7f/\x94\xb0\xb2\x90-\x82\x92\x14;\x04m\x92u\x0c\
+\xfa\xd3\xdc5Y ?\xbb\xb04\xd3\x93|\x83\x14\xba\
+\x8d\xb0\xb4a\xedD\xe6+Y\xb1C\x1b\x90B\xd7\x12\
+\x966\xacu\xc8|\xadT\xec\x10\xf4?`\x19ai\
+\xc3\xfa\x072_\x9b\x15;\x94\x82\x14\xfa\x11ai\xc3\
+Z\x84\xcc\xd7~\xc5\x0ee \x85\xce$,mX\xb3\
+\x90\xf9:\xa9\xd9\x22d\xb3\xa5\x97\x09K\x1b\x16ry\
+(2\xa8\xd9\x22\xe4\x82\xdb\x18\xc2\xd2\x865\xd6\xf9Z\
+r\x8f\x82\xac\xcd\x7f\x8c\xb0\xb4a!\xef\xfd\xaa\xae\xda\
+\xa2\xa6@\xa5C\x08K\x1b\xd6\xa3\xc0t5PmQ\
+;\xa0\xd2{\x09K\x1b\xd6\x83\xc0t]\xa3\xda\x22d\
+\xddL_\xc2\xd2\x86u\x0f0]\x1dT[t\x07P\
+iO\xc2\xd2\x86\xd5\x07\x98\xae\x1e\xaa-\x1a\x08T\xda\
+\x89\xb0\xb4a\xf5\x00\xa6+N\xb5E\x83\x81J\xdb\x11\
+\x966\xac\x8e\x8e\x97\x92{\x15\xe4!\xfbV\x84\xa5\x0d\
+\xebz`\xba\xeeRm\xd1p\xa0\xd2&\x84\xa5\x0d\xab\
+\x150]\xf7\xa8\xb6\x08y\x89\xc0\x15\x84\xa5\x0d\xab9\
+0]\x03T[\xf44P\xe9\xe5\x84\xa5\x0d\x0b\xb9\x9e\
+\xfd\xa0j\x8b\x12\x81Jk\x13\x966\xac&\xc0t\xc5\
+\xab\xb6h\x0cPiM\xc2\xd2\x86\x85<\xfd\xf5\x88j\
+\x8b\xc6\x89\xdd\xd5$,\x81\x5c\x09LW\x82j\x8b&\
+\x02\x95V%,mX\xf5\x80\xe9\x1a\xa1\xda\xa2)\x8e\
+\x9fX%,\x0fS\x07\x98\xae\x91\xaa-B\x96$V\
+\x22,mX\xb5\x80\xe9zN\xb5E\xd3\x81J\xcb\x13\
+\x96\x9f`%\xaa\xb6\xe8u\xa0\xd2\x8a\x84\xe5\xa7\xaf\xc2\
+gT[\xf4*Pi\x15\xc2\xf2\xd3\xc9\xfb\x93\xaa-\
+B^\x00V\x8d\xb0\xb4a]\xe1\x97\xfdx\xb2_\x04\
+*\xadAX\xda\xb0\x90\x0b\xa4\x0f\xab\xb6h<Pi\
+\x1d\xc2\xd2\x86\x85\xdc\xd2\x19\xaa\xda\xa2\xe7\x81J\xeb\x11\
+\x966\xac\xab\x81\xe9\x1a\xa4\xda\x22d{\xe7\x06\x84\xa5\
+\x0d\x0b\xd9\x8c\xf8~\xd5\x16!\xefUlLX\xda\xb0\
+Z\x02\xd3u\xb7j\x8b\x9e\x02*mJX\xda\xb0\x90\
+\xa5\xc9w\xaa\xb6\xe81\xa0\xd2\x16\x84\xa5\x0d\xab\x030\
+]\xbdU[\xf4\xb0\xd8\xa3\xb5\x84%\x90[\x80\xe9\xea\
+\xa5\xda\xa2\xa1|\xfc\xcbO\xb0\x90\x07V\xbb\xaa\xb6h\
+\x10Pig\xc2\xd2\x86\x85<b\x7f\x83j\x8b\x90\x97\
+\xa2\xdfFX\xda\xb0\x90MA\x9a\xa9\xb6\xa8\xa7\xd8\x83\
+j\x84%\x10d\x1b\xa3z\xaa-\x8a\xe5\xfeX~\x82\
+\x85<\xadWE\xb5E\xc8\xa3\xb5\x09\x84\xa5\x0d\x0by\
+\xf6\xa5\xa4j\x8b\x90\xc7>\x9e#,mX\xc8\xf2\xb9\
+@\xa6f\x8b.\x03*\x9dDX\xda\xb0f\x03\xd3e\
+\xa5j\xb6\xa8,P\xe8k\x84\xa5\x0d\x0bz\x81\xc0\x1e\
+\xcd\x16\x15\x01\x0a}\x97\xb0\xb4aA\xaf<\xd9\xa8\xd8\
+\xa1_\x91B\x17\x10\x966,\xe8%M\xdf)v\xe8\
+\x10R\xe8R\xc2\xd2\x86\xb5\x03\x99\xaf%\x8a\x1d\xda\x86\
+\x14\xba\x81\xb0\xb4aA/\xd5\x9a\xab\xd8\xa15H\xa1\
+\xfb\x08K\x1bV\x109'\x9e\xac\xd8\xa1\xcf\x10X\xe9\
+\x84\xa5\x0d\x0bz\xf7\x91\xe6\x83\x853\x80:Ke\x13\
+\x96:\xacF>Y\x9b\x8c\xdc\x22\xa8IX\xfa\xb0n\
+\x04&\xac\xa3b\x87\x90\x05\xa4\xcd\x08K\x1fVo`\
+\xc2\xaeR\xecP\x1f\xb9\xff\x00\x84%\x91x\xb1\xfd\xcc\
+\xdc\xcd\x0d@\x9dw\x10\x96>\xac\xd1\xc0\x84Ed\xe8\
+u\x08\xd9d\x22\x9e\xb0\xf4a%!?\xe3\x15\xdf6\
+\x1e\x0d\x94\xf9<a\xe9\xc3\xfa\x04\x81\xb5F\xad\xcc\xf4\
+\x80\xd8=h\xc2\x12\xc9\xf7\x08\xac\xc5je\xeeF\xca\
+\xfc;a\xe9\xc3:\x86\xcc\xd8\xabje~\x87\x94\xb9\
+\x95\xb0\xf4ae_\xec\x8b\x1d\xb2\x90\x05\x89\x81S\x84\
+e\x00\xac\xcb\x81)\xeb\xa2Ve\x22Pe\xc5l\xc2\
+2\x00\x16r\xe9\xfdr\xb5*\xef\x14\xdbk\x86\xb0\x84\
+\x82<a\x5c\xf4\x8cV\x95\xc8\xc3_\xdd\x08\xcb\x04X\
+#\x05O\x8b\xddKy\xa0\xc8\xc1\x84e\x02\xacw\xfd\
+p\xbd\xe1g\xa4\xc8\xb1\x84e\x02\xac\xe5\xc8\x9cMQ\
+*r%R\xe4|\xc22\x01\xd6Qd\xce\x86(\x15\
+\x09=\xfe\xb8\x81\xb0L\x80\x95]\x0e\x98\xb3?*\xd5\
+\xf8\x1cr\xab\xfc\x14a\x19\x01\xab\x85\xe0%\x22\xb7\xd2\
+Wn\xfd(a\x990i\xd6N\x9d\x1a\xebJ\xaes\
+%,\xfd\xaf\x19\xeb}\x95\x12\x7fA\xd66\x0c#,\
+3`}\x80\xc0z\x5c\xa5\xc4/E\xef\x94\x13\x96L\
+\xb6\x22\xb3\xa6\xb3\x0f)\xf2\x88\x8e\x95LXf\xc0\xca\
+B\xd67\x94\xce\xd2(1\x0e\x81\xb5\x97\xb0\xcc\x80\x95\
+\xdd\x1c\x99\xb6M\x1a\x15\xd6\x00\x0a\xac\x90MX\x86\xc0\
+\xfa\x13\x02k\xa6B\x81G\x90\x02;\x10\x96)\xb0^\
+2\xfd\xda;\xb4o\xc3\x93\x84e\x0a\xace\xc8\xbc5\
+R(0Q\xf6\x82\x08a\x09\xe5$\xb2\xe3L\xe0\x80\
+\xf7\x05^\x87\xc0\xdaAX\xa6\xc0\xcan\x8cL\xdc\x1c\
+\xcf\xcbK\x8b\x02\xca\x8b\x0e\x12\x961\xb0\xeeC`\xdd\
+\xebyy\x9f#\xe5\xc5f\x13\x961\xb0\xa6#3w\
+i\xd0\xeb\xf2\x86\x0b\xdf\x1a ,\xa9@;\xdcZ+\
+\xbd.\xaf\xbe\xe4*?\x08\xd6<\xc2\x82\x92Y\x12\x99\
+\xba\xa7=\xae\x0e\xba\xe5\x148,\x09k6aaA\
+^\xe0\x0b\xbe\x22\xde\xe3\xcbl\x0d\xb3%a\xcd ,\
+,c\xa1\xef\xc2\x1f\x0c\xbe\xd80D\x14\xd6\xeb\x84\x85\
+\x05z\xa0\xc2z\xc6\xd3\xdavG\x08\x9fbe\xcf\x0d\
+\xfb\xaf\xbfBXX2J!\x93W\xdb\xd3\xdf\x85\xe3\
+\xa1S\xacC6F\x08\x7fA\xda\x14\xc2\x02\xd3\x11\xfa\
+\xc8\xfa\xd6\xcb\xd2\xae\x96>\xc5\x02^T5\x81\xb0\xc0\
+@+\xe9\xac~\x1eV\xf6/K\xfa\x14\x0b\xb8\xc7\xfd\
+\x02a\x81Y\x0bM_\xf1\xa3\xdeU6\x00\xaa\xecC\
+;C$\x87\xfd\xe7G\x11\x16\x98`5h\xfe&y\
+V\xd8q\xe8\xec\xafx\x9a\x9d1\xbe2\xf6\x12\x9e\xff\
+ae\x0f\x84`U\xf7l\xd7\x99\xa9P]\xddl\x8d\
+\xf1\xcf\xb0\xff\xfe\xa3\x84\x85\xe6ch\x02\xadw\xbc\xfa\
+\xb9\xfa\x07\xa8\xac7m\x0d\xb2*\xec\xbf\x7f7a\xa1\
+I+\x06\xcd`\x03\x8f\x9e\xa9\x80\xb6\xc2\xb1\x22\x0e\xd9\
+\x1a$\xfc\xfd}\xbb\x12\x16\x9cN\xd8G\x967w\xcd\
+2\x1b@E\xb5\xb67\xcaF\xe9\x01\x0a5\xac71\
+X\xb5N{Q\xd4\xdbXQ\xe3\xed\x8d\xf2S\xd8\x03\
+\xd4#,8)\x17a\x93\xe8\xc5K1OU\xc7j\
+\xdal\xf3\xd0\x8d\xdf\x13\xc5\xcf\xb0\xb2\xbb`\x93X\xd6\
+\x83\xd7\x9f\x8c\xc6Jje\xf7\x0b7\xec\x9d!\x22\xb3\
+\x08K\xf8<\xd9\xb2\xe2\xc4+\xda\x82\xfd\xa0\xb0\xa6\xdb\
+\x1d\xa8t\xd8C\xa4\x10\x16~)\xb28(Kz\x9d\
+nV[\xac\x9e\x8bS\xed\x8e\x14\xfe7\xeeV\xc2\xc2\
+\x13\x07\xc2\x8a\xde%[\xcf\xf3`=\xfdm\x8f\x14\xfe\
+SJ_\x11\x16\x9e\xcf\xc0\x89\xb4Z\x88\xfe2\x5cV\
+\x04,\xc7\xfe\xa4\x87\xbf\x94\xf0m\xc2\xb2\xf1\xd5S\x03\
+\x95u\xbf`5\xbb\xab\x80\xc5\xd4\xb1\xbfJ\xac\xab\xa1\
+k\x1c\x0b\x08,\xf4G\xd8\xff\xe69\xb1Z\x8e]\x89\
+\xd62\xd6\xfe`w\x85=\xc8\x1d\x84e#{\xd1/\
+\x1f+0]\xa8\x94\xb4k\xd1RJ9\xf8\xc1\xf6\xb0\
+\xb1\x0f\x92\x14\x0cX\xd9\xdd\xe0\x8f\xac\xc04\x91BR\
+\xdb\xc2\x95\x0cw0\xdc\xa4\xb0G)\x9aNX6\x92\
+l\xe1\x19+P\xc7\xd1\xe6p\x19Q{\x1d\x8c7/\
+\xfcqV\x13\x96\x9d4\xb5!\xeb\x8e_\xdd\xaebs\
+}\xbc\x0aG\xbf#\x80\x87\x94&\x13\x96\x9d\xcc\xb6\x01\
+\xcbj\xbd\xcf\xdd\x22\xe6\x97\xc4k\x88\xd8\xe2\xe8\xe42\
+\xfc\x81\xba\x10\x96\x9d\x80\xeb\xea~\xbbR:\xd7\xc5\x12\
+N\x0c\x08\xd8(\xe1VGcf\x16\x0d\xff7\xc2)\
+\xc2\xb2\x93\x17-[\xe9{\xc8\xad\x02\xbe\xaaeg\xfc\
+\xc8\xf5\xceF\x05\xfe?\xcd%,;9Y\xd9\x9e\xac\
+2/\xb9\xb2\x0a~w\xef\x80\xad\xe1\x07:\x1c\x17\xb8\
+\xb8\xd1\x81\xb0le\xaae3\xf5\xdfs\xbc\xa4\xe4\xc8\
+S%\xec\x8d]\xda\xe9\x07&\xf2:\xa1e\x84e'\
+\xe95,\xdb\xb4f:\xbaw\xb8\x7fxI\xbb#\x8f\
+sz\xd4c\x80\xc1\x9a\xfcJXv\xf2\x96e?\x95\
+\x12\xb6\xdb\x1c5kI\x5cQ\xdb\xc3\xd6t|B\x0d\
+=\xa3\xd4%\x93\xb0\xec\xfcB\xba\xc2\x81,+\xe2\xfa\
+W\xf0]\x95\x83+\x1f\xab\xe1dP\xe7\xfb\xec\xed\x80\
+\xc6\xeb\xfe3a\xd9\xc8\xe7\x96\xb3D\xb6\x1d\xbd\x1c\xf8\
+?}l\xc1\xa0\x1a\xce\x06\xbc\xc9\xf9\xe67\xc1\xd2\xd0\
+\x88\xb5?!,\x1b\xe9i9N\xd9N\xcf.:\x18\
+\xfa\xc3q\xfd[\x83\x9aF:\x1d\xab\xccn\x17\x8e\xb9\
+58h\xdb\xf9\xa7\x08\x0b\xcd\xce\x12\x96+)\xdf\xe6\
+\xde?\xcf\xf9\xfa\xa7\x5cn\xdb\x1e\xdd\xf0\xe9\x1bO\xf4\
+l\x10\xe5\xca0o\xb9q\xcc\x03q\xcf}^^\x9d\
+\xf3\xd02R\x0el\xdf\xb0z\xe9\x92\xf7\xff\x9a4m\
+\x5cb\xc2\x90\x01\xbd\xe3b\x7f\x22\xac\xfff\xb4\xe5j\
+J]\xd6\xf0\xda\xd8\x1eqqw\xc6\xc5\xc5\xdd\x1c\xdb\
+\xacn\xa5(7\xff\xba;\xf7X\xa6\xd9\x1a;P\xa5\
+e\xb7\xb8?\x0d\xb87\xae{l\x9b\x98z\xb5\xca\x97\
+\xcd\xf5_}KX\xbf]rh`\xf9&\xd1\xee<\
+\x85\xb6B\xb0\xc4\xc5\x84\xf5[V\x17\xf5\x0d\xac\xf7\xdc\
+9\xe2\x8c2r%\xce!\xac\xb3\x19\xe5\x17W\x0f\xba\
+u\xc4\x9d\xe5jL\x22\xac\xdf\xff\x03\xb7\xf0\x87\xab6\
+\xae='4Q\xae\xc8\x09\x84\xf5{6\x95\xf4\x83\xab\
+\xcb\x5c[T\x91\xbdF\xae\xca\xa7\x09\xeb\x9c,\x0c\x98\
+\xef\xaa\x98\x8bo\xf5\xc9*/Vf<a\x9d\x9b\x04\
+\xf3a\xcdr\xf3xo\x11+\xb3?a\x9dwY\xfc\
+&\xd3]\x8dq\xf5xg\x88\xd5\xd9\x83\xb0\xce\xcb\xb1\
+\xfaf\xbbz\xd2\xdd\xc3E\xf7\x07\x0b?7\x10\xd6\xf9\
+\xd9}\x99\xc9\xae\x5c?s\xe9$Ui\x0ca]\x90\
+\xad\x97\x98\xeb\xaa\xbf\xeb[\xa0\xcd\x91*\xb5\x0ea\xe5\
+\xb8\x02_\xdaTW}\xdd_lw*Z\xa8\xd6\x8a\
+\x84\x95#\xcb\xa3\xcdt5Xb\x11g\xbcP\xb1Q\
+\x84\x953\x1b\xab\x1a\xc8*\x90(r\xac?E\x0a\xd5\
+\x9bNX9\xb3\xa3\x8eq\xae\xa2\xa4\xf6\x98\xef%T\
+\xf0!\xc2\xca%\xfbcL[(\xf3\x0f\xb1SJ\xa1\
+\xbb\x0d[\x08+\xd7\x93\xda~F\xb9j\xb4Y\xeeP\
+o\x93)y\x15a\xe5\x9e)E\xccq5P\xf2\xa9\
+\xbe-2\x17I\xbf$\xac<\xb2\xb4\x8a!\xac\xca\x08\
+\xef\x9c0B\xa4\xea\x05\x84\x95W\x8e\xden\x84\xab\xe6\
+\xdb\x85\x8f\xf3T]\x89\xb2\xdf&\xac|\xaeK\x1bp\
+E\xab\xc8.\xf1\xc3\x5c)\xf1e8\x99\xb0\xf2\xc9\xbe\
+\x1e\xfa\xb2z\xcb\x1f\xe6K\x02e\x8f\x22\xac|\x93\xdc\
+P]\x96\x07O ?\xe8~\xd5\xc3\x09+\xff\x9c\x99\
+\xa8}\xef\xb0\xb6\xfcN/\x19]\x5c\xaf\xfa~\xc2\x0a\
+\x95\x83\x0f\x15\xd7\x955B\xfe\x18\xd3\xbb\xbb]\xf4m\
+\x84\x15:\x07ti]\xb4\xd1\x83\x0f\xe6\xbb].\xba\
+\x03a\x85E\xeb\x912\x8a\xb2\xae\x0bzp\x88\x13\xdd\
+\xbd\x1d}\x0da\x85\x97\x13I\x8d\xf4d\xbd\xe5\xc5\x11\
+.w\xf5\xd6\xfb\x95\x84\x15\xfe/\xc4^\x17)\xc1*\
+\x7f\xc4\x8b\xe3K\x1d\x18\xe1^\xc9U\x09\x0bH\xca\xf4\
+\xeb#Td\xf5\xf7\xe6\xf8V\xb6t\xad\xe2R\x84\x85\
+e\xcf\x84\x96\x0a\xb6\x02K\xbd9\xba\xe0GM\xdc\xaa\
+8\x93\xb0\xd0\x1c~\xb7\x8f\xe7\xf7z\xea{\xb5\x223\
+\xf8Y'WVh\x95J%,\x1b\xc9\xfcv\xcc\xcd\
+\xde\xfeN|\xce\xbb\x83\xdb\xfalM'\x95F\xd4\xb9\
+u\xd4\xc2\xed\xc1l\xc2\xb2\x99\xacu\xd3\xfa\xd6\x8f\xf4\
+\x0aV\xb1\x1f=<\xb4\xe0\xf2'm\xdd\xca*{\xdd\
+\x90\xe9+N\xaa\xcf\x8c\xcfa\xfd\x7f\xd2VN\x1f\xd2\
+\xb6\x22:\x01\x17\xc7\xe2\xf3\x16\xeb\xf1\x91\xed\x9du\x7f\
+\xe3\xb0\xf7\xa2\xbb\xa8^\xb7\xe1IK\xf7\x192)\x05\
+\x01\xd6\x7fr|\xed\x82??\xd0\xb1\xd1%a\x9c\x9d\
+Tn\xd3o\xd2\x8a\x8c\xec\x0d\xf8\xfe\x81\xb3\xbc?\xae\
+3\xeb\xde}\xbcC\xb5|~\xacDT\x89\xe9:x\
+\xf2\xe2m\x19FMG\xc1\x81u\xf6\xd4k\xff\xdaO\
+\xdf\x9966a\xd0\x9d\xddcccbb\xae\xaaU\
+\xabV\x83\x98\x98\x16\xb1\xb1]\xee\x8a\x1f9\xf9\x9d\x8f\
+\xd7\x9d\xfd\x9e\x18\x0e\xc3\xba$E\xe9\xa82\xf6\xad^\
+\xf4\xfa\xa8\x07o\x8f\xeb\x14\xdb&\xa6Q\xad+c\xda\
+w\x8a\xbb\xe7\x81\x11S\x17.\xdf\x9ba\xe44\x14<\
+X\xc8w(\xfe\x96\xc4\x81\xd9\x0ca\x85\xcc\xfb\xf8\xcf\
+\xadoh\x86\xb0B\x07\xdfZ\xb6\xe1\x19\xa2!\xac\x90\
+\xd9V\x0c\x965\x9eh\x08+t\x12aX%\xb6S\
+\x0da\x85Lz=XVG\xaa!\xac\xd0\xb1\xf12\
+\xbb\xf9dCX\xa1s+\x0c\xab\xca/tCX!\
+\xb3\x07\x7feA<\xdd\x10V\xe8L\xc0/f-g\
+\xd7\x08+d2\xf0uu\x8d3\xd86\xc2\x0a\x99\xaf\
+\xf1Uu\x93\xd95\xc2\x0a\x9d\xfe\xf8\xda\xcc=\xec\x1a\
+a\x85\xccQ\xfcEI=\xd95\xc2\x0a\x9dW\xf1\x8b\
+Y\x1f\xb1k\x84\x152Y\xad`X\xd5O\xb0m\x84\
+\x152\xab\xf1u\xf3\xc3\xd95\xc2\x0a\x9d\xc1\xf86\x7f\
+k\xd85\xc2\x0a\x99T|\x1b\xdd\xe6Yl\x1ba\x85\
+\xccL\xfc\xfc\xfd/\xec\x1aa\x85N{\x18V\xe9}\
+\xec\x1aa\x85\xccF\xfca\xb0\xde\xecZ^YEX\
+g\xf38\xfee\xf8)\xbb\x96{\xd6D\x13\xd6\xd9\xa4\
+\xd5\x80a\xd5\xf9\x95m\xcb\xc3\x15a\xfd\x9e\x05F\xee\
+y\xebSW\x84uN\xf0\x0d\xb1\xbd\xd8\xf3\xd6\x9f\xae\
+\x08\xeb\x9c\xec,\x01\xcbj\x1bd\xdbruEX\xe7\
+f\x94\xa1{\xde\xfa\xd0\x15a\x9d\x9b\xd3\xf8\xc3`\xd1\
+\x87\xd9\xb6\xf3\x5c\xfd\xb6\x04\x89\xad87_\xe0\x1fY\
+w\xb3k\xb9\xb9\x22\xac\xf3\x83\xbfD7\x90\xcc\xae\x9d\
+\xcd\xda\xdf\x97L\xb2\x19\xe7\xe5\x00\xbe\xab\xe9\xe5\xa7\xd8\
+\xb6\x9c\xae\x08\xeb\x82L2z\xcf[\xff\xb8\x22\xac\x0b\
+b\xe3a\xb0\xa8\xcdl[\x0eW\x84ua\xbe\xc1\x1f\
+\x06k\xc7\x8bY9\x5c\x11V\x8e\xdc\x03\xc3j}\x90\
+]\xcb\xfe\xd7\x05/t`G.\xcc\xd1\x0a\x18\xabk\
+\x17\xb1g9>\xaf\x08+\x97\xbc\x86l\xe3\xd0u\x15\
+\x1b\x96\x9b+\xc2\xca\x99\xack\xc2>m\xef\xf7#\xdb\
+\x95\xbb+\xc2\xca%\xeb\x8a\x84\xb74y\xd8~\xf6*\
+/W\x84\x95[\x86\x86\xc1\xaar\x22\xf7_\xcb\xc7\x15\
+a\xe5\x96\xd4KC\xae\x1d\x9d\xc2\xeb\xed\xf9\xba\x22\xac\
+\x5c3+\x7fV133\xd9\xa3\xfc]\x11V\xeei\
+\xcf\xeb\x0b\xce\x5c\x11V\xee\xd9\x12\xc5\xeb\x0b\x8e\x5c\x11\
+V\x1ey\x82\xd7\x17\x1c\xb9\x22\xac<\x92V\x93\xd7\x17\
+B\xe7\xfb\xbc\xb7\xaccs\xf2\xc8B^_\x08\xed*\
+\x9f\xbb_\xecN^\xe9z\xc1\xf5\x85t\xb6\x04pE\
+Xyf\xd7\xc5\xbc\xbe`\xdf\x15a\xe5\x9d\xd1\xbc\xbe\
+`\xdf\x15a\xe5\x9d\xd3\xf5\xffs}a5[\x81\xbb\
+\x22\xac|\xb2\x84\xd7\x17l\xbb\x22\xac\xfc2h\xe4\x11\
+6\xc1\x9e+\xc2bD\x5c\x11\x16#\xe2\x8a\xb0\x18\x11\
+W\x84\xc5\xa0Y\x17\xd6\xd3&\xec\x13#\xe1\x8a\xb0\x18\
+\x11W\x84\xc5\x88\xb8\x22,F\xc4\x15a1\x22\xae\x08\
+\x8b\x09??T\xb6\x08\x8bQuEX\x8c\x88+\xc2\
+bD\x5c\x11\x16#\xe2\x8a\xb0\x18\x11W\x84\xc5\x84\x93\
+M\xa8+\xc2bD\x5c\x11\x16#\xe2\x8a\xb0\x18\x11W\
+\x84\xc5\x88\xb8\x22,F\xc4\x15a1\x22\xae\x08\x8b\x11\
+qEXL\xbe\xae\xaaX\x84\xc5\x18\xe4\x8a\xb0\x18\x11\
+W\x84\xc5\x88\xb8\x22,F\xc4\x15a1\x22\xae\x08\x8b\
+\x11qEXL\xae\xd9\xec\xd0\x15a1\x22\xae\x08\x8b\
+\x11qEX\x8c\x88+\xc2bD\x5c\x11\x16#\xe2\xea\
+\xdfK\xb1\x10m(`\xee\x87\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x01\xdc\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00O\x00\x00\x00O\x04\x03\x00\x00\x00X\x1a\x85\xb5\
+\x00\x00\x000PLTE\x00\x00\x00\xff\xff\xffA\xcd\
+RP\xcaNA\xcdRA\xcdRF\xccPH\xcbP\
+B\xccQI\xcbPE\xccQJ\xcbOE\xccQD\
+\xccQC\xccQA\xcdR\x000]\xbe\x00\x00\x00\x0f\
+tRNS\x00\x00\x186Oc\x9d\xab\xae\xb8\xc9\xcd\
+\xd6\xe9\xf0\xbb\x00_o\x00\x00\x01LIDATH\
+\xc7\xc5\xd6\xbdM\xc4@\x10\x86\xe1+\x01:\x98\x80\x8c\
+\x0aH\x11\xf9\x227@\x09HT\x80\xdc\x05\x11\x92K\
+\xa1\x01$\xebJ\xa0\x00\x12K\xd6\xc9\xd6\x10\x9c\x7f\xd6\
+\xbb\xb3;o\xc6\xc4\x8f>\xe9\xee\xbe\x9d\x9b\xd3)\x9b\
+\xd0\x9f\xd8\x84\xf9\x11B\x1d\x04Bm(d\x91Aa\
+dP\xd5Q \xd4\x96B\x12\x19\x14F^\xe1E \
+\xd4\x8eB?r\x81\xfaE\xe1,\x10jO\xa1W\xb7\
+\x0dz\xdd\xd8\xa1\xd3\x8d\x08\xd6##X\x8f\x8ca\xd4\
+\x8d\xbb\xa7t^\x22\x18u\xe3U\xab\xb3G~\xd6\xe1\
+\x1e\xe9\xc1\xad\x1b\x1e\xdc\xea\xe6\xc25\xd2\x85k\xdd|\
+\xb8\xd4\xcd\x87K\xdd\x00\xbcF\x02\xa8?\x02\xa16\x14\
+\x0e\x02\xa16\x14\x8e\x02\xa1\xbeS\xf8\xfb\x7f\xf0\x19\xc2\
+3\xfc\xd43\xfd\xc2{\xf8\x13N\xb4\x14\x1d\xac\xd9\x85\
+\xf6\xb1\x83\x0d\x1f\xe9\x9bi\xe1+\x1c\xe9\xbbn\xe1\xa6\
+\x18\xe8\xee\xd9v\xee\xc3G:\xdff\xa0\xb3\x9a\xabK\
+<\x1c\xeb\xb5\xcem:7!\xdbO>\x8c\xff\x0dk\
+p\x12\x08\x0fG@\x05\x1eo\x80\x0a<^\x15e\x98\
+\x9c>e\x98\x5c>E\x98\xdeRE\x98\x9eR%\x98\
+\xb5\xa1\x04\xb36\x14`^\xaf\x02\xcc\xebe\xc3\xb30\
+h][&\xb4\x8e-\x0bN\x02\xa1yc\x1a\xd0>\
+1sx\xfff\xb9?\x9e\xd1\xe7wR\xc2\xd3\xb8\x00\
+\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x13H\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x90\x00\x00\x01\x1e\x08\x03\x00\x00\x00\x93\xdb\xb3V\
+\x00\x00\x00\x09pHYs\x00\x00\x1a]\x00\x00\x1a]\
+\x01\x87\x7f\xcb\xb2\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x02\xfdPL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84.\xdb\x89,\xdc\x84+\xdd\x88)\
+\xde\x840\xdf\x87.\xe0\x83-\xe1\x87,\xdb\x83+\xdc\
+\x87)\xdd\x83/\xdd\x86.\xde\x83-\xdf\x86,\xe0\x83\
++\xe1\x86*\xdb\x82.\xdc\x85-\xdd\x82,\xde\x85+\
+\xde\x88+\xdf\x85*\xe0\x87.\xe0\x85-\xdc\x87,\xdd\
+\x84+\xdd\x87+\xde\x84*\xdf\x86.\xdf\x84-\xe0\x86\
+,\xdc\x84+\xdc\x86+\xdd\x84.\xde\x86-\xde\x84-\
+\xdf\x86,\xdf\x83+\xe0\x85+\xdc\x83.\xdd\x85-\xdd\
+\x83,\xde\x85,\xde\x87+\xdf\x85+\xdf\x87-\xe0\x85\
+-\xdd\x86,\xdd\x85,\xdd\x86+\xde\x84+\xde\x86-\
+\xdf\x84-\xdf\x86,\xe0\x84,\xdd\x86+\xdd\x84+\xde\
+\x86-\xde\x84,\xde\x85,\xdf\x84+\xdf\x85+\xdd\x84\
+-\xdd\x85-\xdd\x84,\xde\x85,\xde\x86+\xde\x85+\
+\xdf\x86-\xdd\x86,\xdd\x85,\xde\x86+\xde\x85+\xde\
+\x86-\xdf\x85-\xdf\x86,\xdf\x84,\xdd\x86+\xdd\x84\
++\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\xdf\x85+\
+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\x84,\xde\
+\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\xde\x86\
+,\xde\x85+\xde\x86-\xde\x85-\xdf\x86,\xdf\x85,\
+\xdd\x85+\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xde\
+\x84,\xdf\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85\
+,\xde\x84,\xde\x85+\xde\x86+\xdf\x85-\xdd\x86,\
+\xdd\x85,\xde\x86,\xde\x85+\xde\x86-\xde\x85,\xde\
+\x85,\xdf\x85,\xdd\x85,\xdd\x85+\xde\x85-\xde\x84\
+,\xde\x85,\xde\x84,\xdf\x85,\xdf\x84+\xdd\x85-\
+\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\x86+\xdf\
+\x85-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85,\xde\x86\
+-\xde\x85,\xde\x85,\xdf\x85,\xdd\x85,\xdd\x85+\
+\xde\x85-\xde\x85,\xde\x85,\xde\x84,\xde\x85,\xdf\
+\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85\
+,\xde\x86+\xde\x85-\xdf\x86,\xdd\x85,\xde\x86,\
+\xde\x85,\xde\x85+\xde\x85,\xde\x85,\xde\x85,\xdf\
+\x85,\xde\x85,\xde\x85-\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xdf\x85,\xdd\x85-\xde\x84,\xde\x85,\
+\xde\x84,\xde\x85,\xde\x86,\xde\x85-\xdf\x86,\xdd\
+\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85,\xde\x85\
+,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\x85-\xde\
+\x85,\xde\x85,\xde\x84,\xde\x85,\xde\x86,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\xbf\
+\x5c\xdf:\x00\x00\x00\xfetRNS\x00\x01\x02\x03\x04\
+\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\
+\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\x22#$\
+%&'()*+,-./01234\
+56789:;<=>?@ABCD\
+EFGHIJKLMNOPQRST\
+UVWXYZ[\x5c]^_abcde\
+fghijklmnopqrstu\
+vwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\
+\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\
+\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\
+\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\
+\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\
+\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\
+\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\
+\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\
+\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfeV\xf3|\x8f\x00\x00\x0e\
+\xc2IDATx\xda\xed\xddy|NW\x1a\x07\xf0\
+\x9b}A\x88\x18\xc5\x08\x95\xc6\xbe7(e*\x94Z\
+\x83\xb6t\xaa\x22cmP\x8dA\xd1N-E\x8d)\
+UK-U\xc5\xd8F\xa2C\xec%j,\xa1*v\
+\xad6\xda\xd4:\x12%!MR\x917y\xcfg\x92\
+\x98\x96\x90<\xe7\xde{\xce\xbd\xce\xb9\xf7\xf9\xfd\x9d\xf7\
+<\xf7\x9co\xde\xf7n\xe7\x9e\xab(\x1a\xe2\xfb%\xc1\
+\x18\x1c\xf4\x90\x17\xc4w\x0f\x0e\x97H \xe8!\x16\x08\
+z\x88\x05\x82\x1eb\x81\xa0\x87X \xe8!\x16\x08z\
+\x88\x05\xe2\x83\x1eB\x81\xf8\xc4\xe10\x89\x04\x82\x1eb\
+\x81\xa0\x87X \xe8!\x16\x08z\x88\x05\x82\x1eb\x81\
+\xa0\x87X \xe8!\x16\x08z\x88\x05\x82\x1eb\x81x\
+m\xc3\xc1\x11\x09\x04=\xc4\x02A\x0f\xb1@\xd0C,\
+\x10\xf4\x10\x0b\x04=\xc4\x02A\x0f\xb1@\xd0C,\x10\
+\xf4\x10\x0b\xc4k+\x8e\x89H \xe8!\x16\x08z\x88\
+\x05\xe2\x89\x1eB\x81\xa0\x87X \xe8!\x16\x08z\x88\
+\x05\x82\x1eb\x81\xa0\x87X \xe8!\x16\x08z\x88\x05\
+\x82\x1eb\x81xn\xc1q\x10\x09\x04=\xc4\x02\xf1\xda\
+!\xdcF\xa5\xa7\x15&\xdb\x96 ^\xdb\x85\xd8\x8e\xbc\
+\x0b\xbbWL\x1f\xf9\xf2sM\x82\xfc]\x1f\x98\xacW\
+\xa9V\xb3N\x11\xe3\xe7F\x1fM\xb3\x0d\xc8\xe3\xf7\xb8\
+\x14;\xb9W]/\xda\x83*\x01-\x07\xce?\xf8\x8b\
+\x0d@\x1e\xef\xf7\xe2\xe4\xdc^\x154,\xb7\xe2Zo\
+\xd8\xbf\xae!\x88Q{\x8a\x98~\xe5\x15\x1d\xa9?\xe1\
+p\x1e\x82\xf0\xce\x9d\xf5]=\x15\xdd\xa9\xf8F\x02\x82\
+\xf0\xcc\xe9\xc8r\x0ac\xea\xcf\xbe\x85 |\xe2\x8c\x0b\
+sQ8\xa4\xf4\xd0s\x08\xc2!\xb1\x0d\x14^q\xed\
+\x9f\x84 \x8c\xd9\xd7R\xe1\x19\x8f\xc8\x14\x04aHJ\
+\x84\x8b\xc29\xe5\xe6\xe5\x22\x88\xde\x9d\xc7\x92r\x8a\x01\
+iq\x16At\xe5F\x0f\xc5\x98x\xcfs\x22\x88\xf6\
+\xec\xad\xa2\x18\x96\xb0[\x08\xa25\x8b\xdc\x15\x03S\xfb\
+\xbc\xae\x8d:\xe2_r&Y\x1a\xc41B16\xe5\
+u-\xf2\x1c\x0f\xb4\xf8\x96\x95A\x1c\xfd\x14\xa3\xe3\xb9\
+\x09AT\xe7\xee\x8b\x8a\xf1\xf1\xd8\x80 *\x93\xdbC\
+1#\xee[\x10D]F(\xe6\xc4'\x1eA\xd4d\
+\xaabV*\x9cG\x10z\xb6\xb9\x98\x06\xa24\xc8B\
+\x10Z.\x05(&\xe65\x04\xa1$\xa7\x85bjV\
+ \x08\x9c\xf7\xcc\xf5P\xca^F\x10(gt\xde8\
+/S\xde\xdfK\xdf'\xbb\x22\x08t\x06\x12\xa2\xed\xde\
+F\xcb\xf0)k\x8e$\xa5f\xde\xfbtZrb\xdc\
+\xe21=\xebk\xbb\x0a\xb6\x06AJ\xceb\xf5\xe3X\
+\xaa\xc3\xcc\xf8\x9c\xe2[\xc9\x8c\x1b\xdf\xc6CuC\x95\
+\xd2\x11\xa4\xa4\xa4\xa9\x9d\x04Wv\xe0^\x07\xdcT\xea\
+\xb2PW\x95\x8d\xbd\x8d %%J\xdd\x08\x06\x7f\x9c\
+\xa1\xa6\xb5\xc4a\xbe\xea\xeeW]@\x90\x12NAT\
+\xed\x97\xab/W}S\xfc\xda\x08U\xc7\x08\x83\x10\xa4\
+\xf8\x0cVs\x8d6*SK\x93\xe7\x9fW\xd1\xa6[\
+\x22\x82\x14\x97\x1fU\xec\x88\xeb\x9e\xd6\xd8\xa8s\x8e\x8a\
+/I\x04\x82\x14\x97H\xfa\xc8\xf5\xcd\xd4\xde\xecQ\xfa\
+\xbdy\x8f\xcb\x08\xf2hn\xf8P\x07\xee\x1d]\xb3E\
+.\xd3\xa7>\x8eE\x10=\x17M\xa6\xe9l\xf9\xd6\xd3\
+\xb4\x96\xfdn#\xc8\xc3\xb9[\x896j\x13u\xb7\xfd\
+sMZ\xdb\xf3\x11\xe4\xe1l\xa0\x8dY\x1f\x86\xd9m\
+\xdf\xfbS\x1ao\x88 \x0f\xa73\xed^\xd2\xaf,\xad\
+o\xa6\xdd\xf5J@\x90\xa2\xb9H\xb9\xd0\xe1\xcd8!\
+w\x18\x05$\x12A\x8af\xbaA;\xf4\xdf\x92Q\x95\
+2q.\x07A\x8a\xa4!e\xea'\xf3\xa2\x00\xb4}\
+\xd4v\x04y0\xdfQ\x86+\x9a\xbdD3\xb8\xc2_\
+\x10\xe4\xc1L\xa6\x5c1\xe1\xf0\x5c\xf3\xbf)W\xf4\xb3\
+\x11D\xfd/\xd6Z\x0e%\x9c\x94\x13\xf68\x04y\xe0\
+\xea\x06|T\x1a\xec\xe0Qd\x0d\x0c2\x0aA\xee\x87\
+r\xebv!\x97\x22\x8e\xca`\x91\x9a\x08r?a\xf0\
+9\x08\xa7\xa5}\xc6\xc0\xec\xe7\x11\xe4\xf7\xff\xdd2\xe0\
+H\xfd\x99S\x99\xb30\xc8b\x04\xf9-\x87\xe1\x91\xe2\
+\xb6bZcVw\xbb\x80\xcc\x00\x07\xea\x09\x07\xaf:\
+\xb3\xc1:\x15\x9d\x08\xf2\xfft\x02\x07j8\xbf\x0bf\
+\xf07\xf1\xd1\xa5P\x16\x0d-\x1a\xe8I\xa2\xc6C\xe9\
+q\xc8\x01\x92\x0b\xefB8\xae\xb9Y\x07,\xf4\xe9#\
+\x7f\xdf\x8b\xf3L\xe2l9@N\xc3Ogf\xf0\xab\
+\xf4&Xi(\x82\xdc\xcb\xa7`':p\xac\xb4\x0d\
+\xac\xd4\x04A\xeee\x08\xd8\x89Y\x1c+e\x82S\xf1\
+\xdc2\x11\xa40M\xc0N\x9c\xe6Y*\x14,u\x08\
+A\x0a\x92\x03Ne+\xcdu5\xa5\xf1\xe0x-A\
+\x90\x82\x9c\x01\xfb\xd0\x96k-\xf86\xd5\x08\x04)\xc8\
+Z\xb0\x0f|\xcf\xb7.\x80\xb5\x9eC\x90\x82L\x00\xfb\
+\x10\xc3\xb7\xd8\x1f\xa0Z\xfe\x08R\x90\x9e`\x1f~\xe2\
+[\x0c\x9emt\x1dA\xf2\xd3\x08\xeaB\x00\xe7b\x7f\
+\x03\x07\xec\x08\x82\xe4\x07\xbcp\xd2\x9as\xb1\xd5\xe0\x80\
+\xadG\x10Bn\x82]\x18\xc0\xb9\xda\x11\xb0\xdaL\x04\
+!$\x01\xec\xc2\x0c\xce\xd5\xd24\xcd_\xb4%H\x0c\
+\xd8\x85\xcfy\x97\x03_\xb0\xd0\x09A\x08\xf9\x00\xec\xc2\
+\x19\xde\xe5\x9e\x81\xaa\xd5B\x10\xca4h\x97_y\x97\
+\x0b\x87\xcay\xe5!\x08\xe9\x02\xf5\xa0\x0a\xf7r\xf0\x1c\
+\xc9\xab\x08B\xeaB=\x08\xe1^n\x098b\xf1\x08\
+B\xfc\xa0\x1et\xe7^.V\xcb1\x84\x1dAr\xc0\
+Y\xa4C\xb8w\x00>\x11\xf9\x04AR\xc0\x1e\xf0_\
+\xbf\x1b\x9ey\xf2w\x049\xc7:\x9bPc\xb2\xc1o\
+\xe48\x04\x89\x07{\xb0\x91\x7f\x0f\xc03\xc3\xc1E\xff\
+\xf6PL\xd1L\x03>\xda#\x86\x9e<\x09@\xb6\x80\
+ \x87\xf9\xf7\xa0\x1eT\xef%\xfd\xff=V\x99\xb9\xb8\
+\x02\x04\xf9\x96\x7f\x0fZA\xf5B\x11\x04\x9eo{\x85\
+\x7f\x0f\xc0y\xab\x8d\x10\x04\xbec\x94\xce\xbf\x07\xbd\xa1\
+zU\x11\x04\xbe\x94e\xc0^p T\xd0\x17A^\
+\x85\xc6\xa7\x8c\x01=\x18\xc5p`j\x07\x10p\x8a\xc3\
+\x1f\x0d\xe8\xc1D\x10\xe4\x17\xdb\x83t\x85\x86\xa7\xae\x01\
+=\x80\xef\xbf\xdc\xb4=HGhx\x9a\x19\xd0\x03\xf8\
+r\xef5\xdb\x83\xb4\x85\x86\xa7\x95\x01=\xf8\x0c\x04\xb9\
+d{\x10\xf0<\xedO\x06\xf4\xe0\x9f \xc8\x0f\xb6\x07\
+\x01\xd7\x84io@\x0f\xd62\x5c\x1a\xb0\x03\x088o\
+\xf1\x05\x03z\x10\x0d\x82\x9c\xb4=\x08\xf8\x1cfW\x03\
+z\x00\xaf\x0at\xd4\xf6 OA\xc3\xd3\xc3\x80\x1el\
+\xd1rS\xdd\x86 \x81\xd0\xf0\xbcl@\x0fv\x80 \
+{m\x0f\x02.\xd7\xfb\x8a\x01=\x88\x03A\xbe\xb0=\
+\x08\xb8fR\x1f\x03z\xb0\x07\x04\xd9e{\x90j\x0c\
+7\xf0te'\x08\xf2\xa5\xedA\x82\xcd\xde\xa9o\x05\
+A\xf6\xd9\x1e\xa4\xae\xd9\x87\xbd\x1b\xf1(\x0bLc\xb3\
+O\x0c\xe1\xc7\x1f\xbe\xc2K'f_:Y\x07\x82$\
+\xd8\x1e\xe4YM\x0f\x8es\xc8*\xbct\x02&\xd4\xec\
+\xcb\xef\xf0\xbc\xa3\xb3\xb6\x07y\x01\x1a\x9e\xa7\x0d\xe8\xc1\
+R\x86\xc7\xe2\xed\x00\xd2\x0d\x1a\x9e\x9a\x06\xf4`\x0e\x08\
+\xf2\xb3\xedA\xc0\xf9\xcc\x95\x0c\xe8\xc1{ H\x96\xed\
+A^c\x98&\xa5+c\x19&\x82\xd9\x01\xe4\x0dp\
+|r\xf9\xf7`(T\xb0\x14\xb1=\xc8$\xf0\x17\xe4\
+\x16\xff\x1e\xf4\x85\xeaUD\x90\x8f\x18&\x81\xe8\x0a\xb8\
+\xce|\x10\x82\xc0\x93@\xbe\xe1\xdf\x03p\xdeQs\x04\
+\x81/\xbe\x1e\xe0\xdf\x83\xa6Z\xd6\xd6\xb0!\xc8!\x10\
+$\x86\x7f\x0f\xc0;b\xe1\x08\x02\xbf\x0el\x1e\xf7\x0e\
+\xe4\xb9C\xf5\xa2\x10\xe4:\x08\xf2\x0e\xf7\x0e\xc0\x8fa\
+OE\x10\x07\xf8\x98\xf2@\xee\x1d8\x05\x82,D\x10\
+xi\x8d.\xdc\xcb\xedb\xd9g\xd9\x02\x04|L\xb9\
+)\xf7r+\x19n\x18\xda\x03\xa4\x1b\xc3\x99\xb3\x8e\xfc\
+\x03\x04\xb9\x8c d\x84\xb9\xd7N^\x87\xaa\xb99\x10\
+\x84\xccb\xb8\xc7\xad#\xcfC\xd5\x02\x09\x82P\xd6\xc7\
+_\xc7\xbb\x5c5\x96[\xc6\xb6\x009\x06\x82L\xe1\x5c\
+\xed\x8e+\xcb\xd4U[\x80\xc0\x0b)\xf7\xe3\x5c\xed[\
+\xa6\xf3P{\xbc6\xcf\x8f\xe1\xf2\xab\xe6l\x06AV\
+\x22\x08\xa1<\xd4\xe6\xcb\xf9\xd5\x7f3YNCl\x02\
+\x02/\xdbv\x8ao1p\xe9\x19%\x0dA\x08m=\
+\xa0e|\x8bUg:\x0d\xb5\x07\xc8z\x10\xe4u\xae\
+\xb5n(L\x8f\xc5\xdb\x03\x04>\xf0\xe1\xbb\x942\xfc\
+\x80\xe1H\x04)\x88\x03|\xdb\xa3\xe7\x1d\x9e\xb5\xa6\x81\
+ \xcb\x11\xa40\xcd\xc1Q\xda\xcd\xb3Tg\xb6\x03\x08\
+\x9b\x80\xc0\x97\x17\xc7\xf0<O\xf7\x85*y\xe7 H\
+a\xe0\x99@\xf58V\x82\xefN\xb5 \x08R\x18x\
+\x9e\x03\xcf\xc9r\xa3\xc1B\xc3\x99@F[\x07\xc4\x09\
+.6\xfd\xe8\x1bj\xf5\xa7>Xh=\x13\xc8H\xeb\
+\x80P^-\xc9\xef\xc9O\xf8\xc5\xab.\xc9L \x91\
+\x16\x02\x81\xe7\xf7\xbaq[My*X\xa7\x0e\xbd\x81\
+\xc3\xc0\xc7\x07Y\x08\xe4\x04\xbc\x13y\x9f\xd7O#\xb8\
+\xf2\x902\x8c\xde\x02\xf4\x8a\xbf\x08\x0b\x81\xe4\x05\x80#\
+U\xd3\xc9\xa7\xcc~\x85q\x17\x02N\xea\xeak!\x10\
+\xf81*E9\xc8\xa7\xca\x00\xb0\x88{*\xbd\x85o\
+\x80\xcf\xf7\xb6\x12\x08\xbc\x0e\x22\xa77Q]/\x05\x16\
+i\xa7\xa2\x89D\x93\x97\x01yl i\xee\xb0\xc8\xd7\
+<\x8a\xbc\x05\xd7\x98\xab\xa2\x89$\xe0\xf3\xcfX\x09\x84\
+<\x07\x0fVW\xe3\xbf \xaa^\xdc~\x05\xf8|\xb0\
+\xa5@\x16\xc0\x83\xf5\xc8\x8b\xce\xf9\x7fA\x1a\xa9i\xe3\
+6\xd0\x80\xbf\xa5@R\xdc\xe0\xe1j\xc1\xfc8n\x92\
+/\x5ca\x96\xaa\xc3A`\x12\x91k\xae\x95@\xe0\x09\
+\x85\xf9\xf9\x88\xf5\x1c\x84R\xc0#EU3\xfe@\x13\
+7,\x05\xb2\x9c\x02\xe2}\x82\xad\xfd\x0f)\xed\xf7R\
+\xd7L\x0d\xa0\x89\xe3\x96\x02\xc9\xf4\xa3\x8cX0\xd3?\
+\xe0A\x0fJ\xf3[\xd4\xb5\x03=1\xba\xc6R $\
+\x922bJ+\x867y\x9f+Oi<P\xe5\xf4\
+\xafv@\x1b\xefZ\x0b\xe48\x0dD\xe9\x90\xa9\xb7\xed\
+\xc4\xaa\x0a\xa7]T_\xe1N\xd5\x0d\x03!m\xa8\x22\
+mt\xfej\x9dx\x82\xd6r\x80Z\xebqlW\x8b\
+\xa5\x02\xd9L\x05Qj\x9c\xd6\xd3\xf0:_j\xc3\xaa\
+\xe7\xd8/`\xbb\x9f\x22\x15H^\x1d\xba\x88\xf7l\xcd\
+\xef\xd1K\x1f@o\xb6\xf4M\xb5\xadm\x82\x9aYa\
+-\x10\xea\x91\xef\xbd+FG\xb5\x9d~\xac\x0fT\xd1\
+\xe84\xd5\xed\x81\x0f\xb3\x84Z\x0c\xc4Q[\x8d\x88\xeb\
+\xab\x1a\xde\x8f\xbb\xebY5MVS\x7f\xfc\x06OE\
+\xddk-\x10\xca\xbbo\xee\x93\xf4\xd8\xa1\xea\x87+\xeb\
+\xb3f\xea\x1a\x5c\xaba\x1b\xc1\x95R\xaa\xff\xd7Z \
+\xce\x10Ee\x02G\x1d\xa4Lj\xcb\x88\x0d\xf7S\xd9\
+XK-7$\xc1ET\x95\xa7NY\x0a\x84\x1cv\
+QT\xc7\xb7\xfd\xe4=%\x1c\xac&\x7f\x1e\xd5\xcc]\
+uC^\x9a\xd6\xe4\x1aC\xb9$\x16\xf9\x9d\x95@\xc8\
+\x00E[\xaa\xb4\x0e\x9f\xb8|s\xdc\x91\x93I\xd7.\
+\xfep,>n\xe3\xc7c{\x87\x04hkc\xa6\xa6\
+-\x5cIm\xaf\xc9\xc8\x95\xfb\xcf'\xa7\xa5&%\xe6\
+oPl\xcc\xb2Of\xbe?\xfe\xafC\xfb\xf7\xe9\xd2\
+\xa1y\x7f\xe9@\xaek\x1cL\x0ei\xa9\xed\xaa\xf9i\
+\x96Z\xb5\xa5\x03Q\xbb_\xe7\x97\xd2\xdfk<[b\
+\xf9\x97\xa9,\x1f\x08\xfc6o\xfeq\x89\xd6\xba\x81/\
+1T\xf3\x95\x10$\xb5\x86\xa9 \x135o\xe0\x02\x96\
+r9\xf2\x81\x90\x93\xbe&z\xf4\xd0|%\x06\x9c\x9a\
+E\xcdM\x09A\xc8j\xf3<Ze\xe8\xd8\xbe:\x0c\
+\x05\x93d\x04\xa1L\x89\xe6\x98\xc6\xa9fo\xdeI)\
+Ah'_\xbcR;E\xd7\xd6]p\xd1_r\x9f\
+\x9c \xce!fx4\xd5{\xfb\xa2\xb5\xfe\x9a\x9b\xe5\
+\x04!\xce\xf1\xc6{tL\xd7\xbbu\x1b\xf5\x17]-\
+)\x08!\x1f\xb8\x1a\xec1H\xff\xa26\xce\xc6\xba\xab\
+.\x90\x16\x84l+g$\x87'\xd3\xbc\xbb\x0d\xba\xeb\
+N\x97\x17\x84$60\xce#\x88m%\xc7\xbc\xb6z\
+\x0b\x8f\x93\x18\x84\xdc\x19c\xd4\xcfV\xcf\xdb\x8c\x9b\xf6\
+S\x19\x9d\x95#e\x06!d\x7fMc@\xd8_\x0a\
+\xbeTg\xe5\xber\x83\x90\x9cy~\x86\x88le\xde\
+2\x9d\x87\x81\xdd$\x07!\xe4\xea\x00w\x03@jd\
+1\x1f\x98G\xea*\xdcFz\x10B\x92\x06z\xf0\x17\
+\x99\xc0\xbcYy\x13\xf4\x9c\xb07\xb4\x00\x08!\x97&\
+T\xe0\x0d\xe2q\x96}\xb3\xb6\xf8k\xaf[\xcd\x12 \
+\xf9\x07\x5c+B9\x1fq\xb5\xe6\xf0\xe8\xfb\xc5\xde\x9a\
+\xbf$e-\x02\x92\x9f+\xb3\x9b\xb9\xf0\x14Y\xcac\
+\xa3\x0e\xb5\xd2X\xd5\xd5i\x19\x90\xfc$/\xef\xcd\xef\
+\xf4\xbd\xfcu.\xdbt \xdc[}M\xb7\xda}\xb2\
+\xad\x04R\xb0+=\xb3(<\x98\xcf\xafW8\xa7M\
+J]\xd8\xbd\x94\x0a\xffvo.K\xc82bH\x1e\
+/Ha2\x0e/\x1e\xde\xb9\x96'x\xabc\xd0p\
+\xea\xf4\x86=\xdc6\xe8\xee\xdew\xc3\x9e,i\x1a^\
+\xfd\x17\xc7-\xdb\x9fb\xdch\x08\x00r/\xb9\x97\x0e\
+mZ8)\xb2_\xcf\xf6!\x0d\x83\x82\x82*V\x0d\
+\x0a\xaa\x13\xd2&,\x22jFtBZ\xfew\xa9\x05\
+M\xa4\x16\xd7\xe5N\xc9\xed\xf85\x1f\x8e\xee\xd7\xb1y\
+H\xed\xa0\xca5\xea\x84\x84v\x8ax{\xfe\xa6\xaf\xae\
+\xe6\x19=\x0e\xc2\x80\xd0r\xdc\x8d&2\x99X!\xd2\
+\x80\xc0\xef\x05/\xbc\x06\x7f\x0eA\xccLz\x15\x9aH\
+['\x82\x98\x19\xfa|\xa2U\x08bj\xda\xd3@\x02\
+n \x88\x99I\xf4\xa2\x89\x0cF\x10SC\xbdk\xe1\
+\xf2\x1f\x0413YO\xd2D\xea\xe7 \x88\x99\xa1O\
+\xa1\x9a\x81 \xa6\xa6;\x0d\xc4\xe7G\x0413\x17\xa9\
+\x17\xfe:!\x88\xa9\xa1\xcfU\x8fF\x103s\x97\xba\
+<D\xa5[\x08bfvS\xbf\x22#\x10\xc4\xd4\xbc\
+B\xbd\xaf\xfa\xb5\xc4\x1e\xdb\xe5\x03I.K\x13i$\
+\xef\xc9\xc8No\xf9@\xa8\x0b\x92*\xca\x1cY=\xbe\
+\xf0V$\x04q4\xa1>?~A^\x0f\x09AH\
+<u\x02QWy=d\x04Q\xb1\xa6M\xac\xb4\x1e\
+R\x82\xdc\xa4\xceE\x0d\xcc\x90\xd5CJ\x10\xb2\x84\xfa\
+\x15\x19-\xab\x87\x9c y\xd49\x9fn'$\xf5\x90\
+\x13\x84\x9cp\xb3\xd6\xf9\xfa\xce\xfb3X%=b\x1f\
+Iy\x92f\xabT\xbd\xd9\xf5\xc0\x8cbIA\xa0I\
+A\xaea\x09DZ\x0fYA\xc8\x9a\x928\xbc\x22\xce\
+\x13\x89=\xa4\x05)aR\x90_\xd45\x22\xb5\x87\xbc\
+ \xc5M\x0a\xaa4\xe5\xb6t\xfd\xd8\xe5\xa3X\x03\x84\
+Lx\x98#x^6\x91\xdeCb\x90\xac\xa2\xcb9\
+\x86\xac\xca%\x16\xf0\x90\x18\xa4\xc8\xbb&$;\xce-\
+\xd9Cf\x10\x12\xf6\xfbq\xee1b\x15\x0f\xa9A.\
+\x95\x92\xf38\x17\xf2\x90\x1a\x84LS\x94\xb2Q\xc9\xc4\
+J\x1er\x83dw\x98\x9bI\xac\xe5!7\x88\xcc\xd9\
+]\xbc\x07\x82\x08\xe6\x81 \x82y \x88`\x1e\x08\x22\
+\x98\x07\x82\x08\xe6\x81 \x82y \x88`\x1e\x08bv\
+\xf6S\x1e\x02\xc3\x11\x12\xcb\x03A\x04\xf3@\x10\xc1<\
+\x10D0\x0f\x04\x11\xcc\x03A\x04\xf3@\x10\xf3<J\
++\x08\x22\x9f\x07\x82\x08\xe6\x81 \xe6\xe4\x80Z\x0f\x04\
+\x11\xcc\x03A\x04\xf3@\x10\xc1<\x10D0\x0f\x04\x11\
+\xcc\xe3\x7f\xb9\x0bd\xb5'\xfb\xb9\xcc\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x04\xbb\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x01\x00\x00\x00\x00\xeb\x04\x03\x00\x00\x00t\xa8U\xa0\
+\x00\x00\x000PLTE\x00\x00\x00A\xcdRA\xcd\
+RA\xcdRH\xcbPB\xccQI\xcbPD\xccQ\
+E\xccQJ\xcbOE\xccQJ\xcbOD\xccQD\
+\xccQC\xccQA\xcdR\xaa`?\xbc\x00\x00\x00\x0f\
+tRNS\x00\x18Oc\xab\xae\xb8\xbd\xc9\xcd\xd6\xd7\
+\xdf\xe9\xf0\x91\xee\xa9J\x00\x00\x04+IDATx\
+\xda\xc5\xda\xc1m\x13A\x18\xc5\xf1\xddT`%Bp\
+ R\x02'N\x08\x1ap\x0dT`q\xa1\x0f*\xa0\
+\x0b*\xa0\x91T\xe0\x1e@\x96|q\x86\x83c\xc7\xbb\
+;\x93\xcc|\xef\xcd{\xd3\xc0\xfe\xf4\x0e\xfb\x9f\x95v\
+\x18z\x9c\xab\xc3j\xb0\x9e\xab\xf4\xe0\x06<\xde\x9b\x01\
+\xe9\xdf\xca\x0cH_\xdc\x00\xeb\x04W)\xa5\xf4\xcd\x0d\
+\xd8\xad\xcc\x00\xe7\x04G\x80q\x82# \xfdt\x03\xf6\
++3\xc07\xc1\x09`\x9b\xe0\x04\xb05\xe9\x0cpe\
+\xf9\x0cpM\xf0\x0c0e\xf9\x19`j\xd2\x05\xc0\x93\
+\xe5K\x80e\x82K\x80\xa5I\x13\x80\xa3I\x13\x80c\
+\x82)\xc00\xc1\x14`h\xd2\x0c\xa0o\xd2\x0c\xa0\x9f\
+`\x0e\x90O0\x07\xc8\x9b\xb4\x00\xa8\xb3\xbc\x00\xa8'\
+X\x02\xc4Y^\x02\xc4M\xca\x00\xb4Y\xce\x01\xa4\x13\
+\xe4\x00\xd2&e\x01\xca&e\x01\xca\x09\xf2\x00\xe1\x04\
+y\x80\xb0I\x05\x80\xaeI\x05\x80n\x82\x12@6A\
+\x09 kR\x11\xc0\xc8\xf2\xf5\x87\xd7\xcf\xc7\xd4q\x82\
+\xcf\x099\x84,c\x00B\x93@\x00\x9ee\x14\x00O\
+\x80\x02\xe0&\xc1\x00\xb4I0\x00\x9d\x00\x07\x80\x13\xe0\
+\x00\xb0I\x04\x00\xd6$\x02\x00\x9b\x80\x01\x80&`\x00\
+\xa0&Q\x00H\x96)\x00d\x02\x0e\x00\xc82\x07\x00\
+4\x89\x04\x88g\x99\x05\x08O\xc0\x02\x84\x9bD\x03D\
+\x9bD\x03D'\xe0\x01\x82\x13\xf0\x00\xc1&\x11\x01\xb1\
+&\x11\x01\xb1\x09\x98\x80\xd0\x04L@\xa8IT@$\
+\xcbT@d\x02.\xe0\xb1\xfa\xb9\xe3\xa7U\x0f@\xaa\
+\x06\xbcIw=\x00\x87\xea\x016}\x00\x0f\xf5\x03t\
+\x01T\xbf\x08\xc6M\x1f@\xf5\xab\xf0]\xea\x02\xa8\x1f\
+\xe0W\x1f@\xd3\x00\x1d\x00\xbb\xa6\x01:\x00\xaa\xafD\
+\xb7\xa9\x0b\xa0~\x80m\x1f@\xe3\x00t@\xf5\x87\xc1\
+\xf5\xb6\x0f\xa0\xf6\xd3h\x5c\xa7.\x80\xea\x01nR\x17\
+@\xf5\xe7\xf1y\x002\xa0\xa5B=\x00\x87\x96\x0a\xf5\
+\x00\x04\x06\xa0\x02\xf6\x81\x01\xa8\x80\xb6\x0a\xf1\x01m\x19\
+\xee\x00\x08\x0d@\x04\xecB\x03\x10\x01\xad\x15b\x03Z\
+3L\x07\x04\x07\xa0\x01\x9a3\xcc\x064g\x98\x0ch\
+\xcf0\x17\x10\xc80\x17\x10\xa9\x10\x13\x10\xc9\xf0\x0c \
+\xfa\x7f`9\xc0\x09\x00\xfdA\xb1\x07\x06\xa0\x00b\x15\
+\xe2\x01b\x19&\x02\xa0\x01\x08\x80\x1d4\x00\x01\x10\xad\
+\x10\x0b\x10\xcd0\x0d\x00\x0e\x00\x03\xc2\x19f\x01\xc2\x19\
+&\x01\xe2\x19\xe6\x00\x80\x0cs\x00H\x85\x9e\xce\xd7\x8a\
+\x0c\xde\x97\x00H\x86[\xce\xdf\x12\x800\x00\x04\xd8\x8b\
+\x06(\x02\xb0\x0a\xe1\x00,\xc3\x04\x80l\x80\x02`'\
+\x1b\xa0\x00@+\x84\x02\xd0\x0c\xc3\x00\xe1\x00Y\x00\x9c\
+a\x14\x00g\x18\x04\xe0\x19\xc6\x00\x84\x0cc\x00U\x85\
+J\x00U\x86\x8b\x00\xf1\x00\x0b\xc0^<\xc0\x02\xa0\xab\
+P\x1e\xa0\xcbp\x01 \x1f`\x06\xd8\xc9\x07\x98\x01\x94\
+\x15\xca\x01\x94\x19\xce\x02\x0c\x03L\x00\xd2\x0c\xe7\x00\xd2\
+\x0cg\x00\xda\x0c/\x01\xe2\x0c/\x01\xea\x0a\xcd\x01\xf5\
+\xff\xe9m\xfa\x00\xea\x7f\xd3K=\x00\xe3\x9f\x95\x17\xd0\
+r\xd6n\x00\xf35\x14\x020_\xc41\xc0\xb85\x03\
+\x86\xf7n\x00\xef:\x12\x04\xf0.dQ\x00q\x82\x18\
+`x\xeb\x06\x8c\x1b3\x80\x97\xc4(\x806A\x14@\
+\xbb\x16\x85\x01\xac{Q\x18\xc0\x9a \x0e M\x10\x07\
+\x90\xb2\x0c\x008YF\x00\x94,#\x00J\x96!\x00\
+\xa3I\x10\x80\x91e\x0c@\x98\x00\x03\x10\xb2\x0c\x02\xf0\
+&\x81\x00<\xcb(\x00\x9e\x00\x05\xc0M\x82\x01h\x93\
+`\x00:\x01\x0exa\x82\xdf?^?\xdfa\xc0\x0b\
+Y\xbe\x1b4\xe7\xd6\x0d(fY\x05(fY\x06(\
+5I\x06(eY\x07(L\xa0\x03\x14\xb2,\x04\xe4\
+\x9b$\x04\xe4\xb3\xac\x04d'P\x02\xb2M\x92\x02r\
+M\x92\x02r\x13h\x01\x99\x09\xb4\x80L\x96\xc5\x80e\
+\x96\xd5\x80E\x96\xd5\x80E\x96\xe5\x80y\x93\xe4\x80y\
+\x96\xf5\x80\xd9\x04z\xc0,\xcb\x06\xc0\xb4I\x06\xc04\
+\xcb\x0e\xc0d\x02\x07`\xd2$\x0b\xe0\xb2I\x16\xc0\xe5\
+\x04\x1e\xc0\xc5\x04\x1e\xc0E\x96M\x80\xe7,\xbb\x00\xe7\
+,\xbb\x00\xe7,\xdb\x00\xa7&\xd9\x00\xa7,\xfb\x00O\
+\x13\xf8\x00OY6\x02\x8eM2\x02\x8eYv\x02\xc6\
+\x8d\x190\xdc\xb8\x01\xe3\xda\x0c\x18n\xdc\x80qm\x06\
+\x0c\xd7\xdb>\x80\xffx\xf2iE\x15\xa8J\x8b\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x0b!\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\xc8\x00\x00\x00\x8f\x08\x03\x00\x00\x00\x88\xdbdx\
+\x00\x00\x00\x09pHYs\x00\x00\x0d.\x00\x00\x0d.\
+\x01\xb5\xcb\x89]\x00\x00\x00\x19tEXtSof\
+tware\x00www.inksca\
+pe.org\x9b\xee<\x1a\x00\x00\x02\xacPL\
+TE\x00\x00\x00\x00\xff\xff\x00\xff\x80U\xff\xaa@\xbf\
+\x803\xcc\x99+\xd5\x80$\xdb\x92 \xdf\x809\xe3\x8e\
+3\xe6\x80.\xe8\x8b+\xd5\x80'\xd8\x89$\xdb\x803\
+\xdd\x880\xdf\x80-\xe1\x87+\xe3\x80(\xe4\x86&\xd9\
+\x801\xdb\x86.\xdc\x80,\xde\x85+\xdf\x8a)\xe0\x85\
+'\xe2\x89/\xe3\x84,\xdc\x84+\xdd\x88)\xde\x84.\
+\xe0\x83-\xe1\x87,\xdb\x83+\xdc\x87)\xdd\x83/\xdd\
+\x86.\xde\x83-\xdf\x86,\xe0\x83+\xe1\x86*\xdb\x82\
+.\xdc\x85-\xdd\x82,\xde\x85+\xde\x88+\xdf\x85*\
+\xe0\x87.\xe0\x85-\xdc\x87,\xdd\x84+\xdd\x87+\xde\
+\x84*\xdf\x86.\xdf\x84-\xe0\x86,\xdc\x84+\xdc\x86\
++\xdd\x84.\xde\x86-\xde\x84-\xdf\x86,\xdf\x83+\
+\xe0\x85+\xdc\x83-\xdd\x83,\xde\x85,\xde\x87+\xdf\
+\x87-\xe0\x85-\xdd\x86,\xdd\x86+\xde\x84+\xde\x86\
+-\xdf\x86,\xe0\x84,\xdd\x86-\xde\x84,\xdf\x84+\
+\xdf\x85+\xdd\x84-\xdd\x85-\xdd\x84,\xde\x85,\xde\
+\x86+\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85\
++\xde\x85+\xde\x86-\xdf\x85-\xdf\x86,\xdd\x86+\
+\xdd\x84+\xde\x85-\xde\x84,\xde\x85,\xdf\x84,\xdf\
+\x85+\xdf\x84+\xdd\x85-\xdd\x84,\xde\x85,\xde\x84\
+,\xde\x85+\xdf\x86-\xdf\x85-\xdd\x86,\xdd\x85,\
+\xde\x86,\xde\x85+\xde\x86-\xde\x85,\xdd\x85+\xdd\
+\x84+\xde\x85,\xde\x85,\xdf\x85+\xdf\x84+\xdd\x85\
+-\xdd\x84,\xde\x85,\xde\x84+\xde\x86+\xdf\x85,\
+\xdd\x85,\xde\x86,\xde\x85+\xde\x86,\xde\x85,\xdf\
+\x85,\xdd\x85,\xdd\x85+\xde\x85-\xde\x84,\xde\x85\
+,\xdf\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\
+\xde\x84,\xde\x85,\xde\x86+\xdf\x85,\xdd\x85,\xde\
+\x86,\xde\x85,\xde\x86-\xde\x85,\xde\x85,\xdf\x85\
+,\xdd\x85,\xdd\x85+\xde\x85-\xde\x85,\xde\x84,\
+\xde\x85,\xdf\x84+\xdd\x85-\xde\x84,\xde\x85,\xde\
+\x84,\xde\x86-\xdf\x86,\xdd\x85,\xde\x86,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\
+\xde\x85-\xde\x85,\xde\x85,\xde\x85,\xdf\x85,\xdd\
+\x85-\xde\x84,\xde\x85,\xde\x84,\xde\x85,\xde\x85\
+,\xdd\x85,\xde\x85,\xde\x85,\xde\x85+\xde\x85,\
+\xde\x85,\xde\x85,\xdf\x85,\xde\x85,\xde\x85+\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xdd\x85\
+-\xde\x85,\xde\x85,\xde\x84,\xde\x86,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\
+\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\
+,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85,\
+\xde\x85,\xde\x85,\xde\x85,\xde\x85,\xde\x85\x83p\
+\xec\x06\x00\x00\x00\xe3tRNS\x00\x01\x02\x03\x04\x05\
+\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\
+\x16\x17\x18\x19\x1a\x1b\x1d\x1e\x1f!\x22#$%&'\
+()*+,-./01234567\
+89:;<=>?@ABDEFHI\
+JLMNPQRUWXYZ[\x5c]^\
+_`abdefgijklmnop\
+qrstuvwxyz{|}\x80\x81\x82\
+\x84\x86\x87\x88\x89\x8a\x8b\x8d\x8e\x90\x91\x92\x93\x95\x96\x97\
+\x98\x99\x9a\x9b\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa7\xa8\xa9\
+\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xbb\
+\xbd\xbe\xbf\xc0\xc1\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcc\xcd\xce\
+\xcf\xd0\xd1\xd3\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\
+\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\
+\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe.\xcby\
+/\x00\x00\x07\x07IDATx\xda\xdd\xdc\xf9_\x94\
+E\x1c\x07\xf0\xd9\x85\xf5@E\x17\x0d\xf3B\x84\x0c\x8f\
+\x14\xb7,\x8d4O\x14+\x0c\x0f4M\xad\x14\xad\xc4\
+\xbc\x22q\xb3\x8c\xf2H\x10I3\xcb\x83\xd4\xb4C\xcd\
+\xf2\xca#\xb5T\xa4\xbc\xc8\xa3\x02\x95\x92c\xbf\xffH\
+?\xa8\xaf\xf8~\x9fk\xf6\xc1yf\xf6\x99\x1fe>\
+\xcf\xcc\xdb=\x9e9\x9eY\xc6\xf4JT\x09DZ\xd1\
+ux#\xcf\xa1\x0b\xf1\xae\x03W@\x22\xd2\x01nq\
+\x80[\x1c\xe0\x16\x07\xb8\xc5\x01nq\x80[\x1c\xe0\x16\
+\x07\xb8\xc5\xd1\x00\xe2Y\x0d\xae\x80D\xb8\x03\xdc\xe2\x00\
+\xb78\xc0-\x0ep\x8b\x03\x18c\xcc\xb3\x0a\x5c\x01q\
+\x85\x03\xdc\xe2\x00\xe6-z`\xd7\xba}G&\xa4\xd1\
+\x8ek;>\xc8y>\x90\xe0\x8fa\x8c\xb1X\x7f\xe2\
+\xc0\xacy+\xf6\xdet\x1e\xd2\xa8\xf4\xf5\xc2\x09I\xfa\
+\xebI}\xa6o\xae\x8e\x14\xc8\xad\xe2\x91>fRZ\
+f\x95\xd6E\x00\xa4\xaa\xa0\x03\xb3,]\x0b\xfeQ\x1c\
+R\xf7n\x1b\xc6U\xba|\xae4\xe4d\x7f\xc6]F\
+_V\x17R\xd8\x94\x85Q\x1e\xdag\xf2\x06\x0d6,\
+\xeb\x1d\x86\x04Yx\xa5\xe9g\x86\x97\xba\x80*>\xed\
+($4\x83\x85[\xbc\x85*B\x96\xb2\xf0K\xd4W\
+\xeaAvE\xd9\x800\xff\x19\xd5 \xbf\xc72[\xa5\
+w\x8db\x901\xfa\xfd\x8c{r\xfc\xdcE\xc1\xe0\xfc\
+\xd73S[\xea\xd7\x08\xaa\x05\xd9\xaa\xf7Q\x1e\xbe\xe2\
+T\xc3{\xe5\xe1`\xaaN\xad\x98\xf3*A\xeet\xd1\
+t\xd07\xf3\x9c\xb6\xde\xe1\x17\xb4\x92L\x95 \x85\x9a\
+\xee\x0d:\xad_\xf3\xbbn\x9a\x17\xee\xb4:\x90:\xcd\
+\x98}f\xadQ\xdd\x1b#h\xddI\xea@6\xd2\xbe\
+\xbde\xf66\xa4\x12\xdf\x05e CI\xd7\xc6\x87\xcc\
+j\xdf|\x8cT_\xa2\x0a\xe4\x12\xb9\x17v\xfa\xcb\xbc\
+\xfeq2\xefzD\x15H>\xf9\x1f.\xb5\x0a\xcc%\
+\x81\xc3\x8a@z\xe1n=\x1e\xb2\x0a\x5c\x8d\xc1\x897\
+\xd4\x80\x5c$\xff\xbf[\xad#\xb3p\xa2\x97\x1a\x90\xb5\
+\xb8W\xedk\xac#\xc7\x88\xfd\xa2\x12\x90,\xdc\xa97\
+y2\xe4\x8b\xabD\x09H<\xee\xd4\x01\x9eL\x1e\xce\
+d\xdf\xff\xf7\xaf\x03wKo\xbc\x80\x14\xa0e\xa5\x00\
+\xc8y2\xde\xe5Z\xb3:\x80C=\x0co\xad\x06e\
+\x91\x00\xc8\x16\xdc\xc4X\xbeAM\x1c\x9e)\xdeV\x00\
+\xb2\x107\xf1\x11_j\xa4\xfe\xfbQ&$\x1d7q\
+\x90/\xb5\x18\xa7V*\x00\xc1S\x11\x1f\xe7Zh)\
+\x19-\xcb\x87\xd4\xe0\x81Vw\xce\xd8\x19\xdc\xb1\x0c\xf9\
+\x90s\xfa=\xb2*\xb5>\xdd{\xbbD\xc87V\xc3\
+&\x83\x82\xe7b-\xe4C\x0am}i\x01\x0c\xc7\xb9\
+\xab\xd2!\xe4\x1e\xbd\x997\x97\x8ds'\xa4C\xc8@\
+\xf6G\xde\x5c.\xce\xed\x91\x0e\x99\x88[(\xe3\xcd-\
+\xc7\xb9-\xf7\xa6\xc1ew\xcb~\xf4\xc7@\x19-7\
+\x1e<d\x14\xee\xd0\x9f\xbc\xb9b\x9c+\x94>\xfa}\
+\x0aw\xa8\xd6\xe6\x10-(\x1d\x92\x82\x17@\xc1\xe6\xd7\
+\xf6\x02\xe9\x10\xbcr\xd8\x9e\xbb\x81\x83\xa6\xd31\x09\x90\
+\xcex\xb3\x96\xbb\x012\xdb\xcd\x91\x0ey\x185\x99\xc8\
+\xdd\xc0\xcf\x182C:$\xcej\xad\xcd\xa0\x9c\xc6\x90\
+\xa9\xd2!\xad\xf4\xe7\xac\xe1\x0e6'J\x87\xc4\xda\x1a\
+\xc5k\xc6\xf1\x93\xa4C\xda\xa2&\x13\xb8\x1b8\x81!\
+\xd3\x15\xfb\xb0\xc7s7p\x08CfI\x87\xe0\x99n\
+,w\x03{1$W\xb1\x1b\xa2\x8f\xbb\x81\xdd\x18\xb2\
+X:\xa4\x07\xee\x10\xf7#e\xa5\xa6\x9b=\x12 \x03\
+q\x87n\xf1\xe6\xc8\xcc\xe3=\xe9\x90\xd1\xb8C\xd7l\
+\x0e\xe3WI\x87\x90)\xebY\xde\xdc\x87\xa6\x9b*\x12\
+ \xb3q\x87\xbe\xe7\xcd-0\x9d\x22K\x80\xbc\x83;\
+\xf4\x05on\x8a\xe9\x14Y\x02\xa4\x08w\xa8\xc0\xe6\x14\
+\xf9\xb6t\xc8\xb7\xa6\xf3\x0a\xde\x99%\xbd\x91J\x80\x94\
+aH:g\xac\xbe\x19\x8a%\xcb\x87\x90E\xec$\xce\
+\xd8o\xd8?J>\x04\x12\xf0\xde\x13\xe7c\xfc;1\
+d\x9e\x02\x10rG\xdc\xc7\x97z\x1b\xa76(\x00!\
+{O\xef\xf3\xa52p\xea\xb8\x02\x90m\xe4Iq\xae\
+P\x1d\x9e\x8fE\xff\xab\x00\x84|l[p\xed\xbd\x91\
+U\xad\x9e`\x0a\x19\xe8\x08\x04\xc81\x8b]6>\x22\
+\xaf\x98C\xfa;\x03!\xeb\xf1\xe3y2\x8f\xe2\xcc\x97\
+\xf4\xefW\xd0\x9fS\x9d\x81\xac\xc7\x9dj\xfe\xb7u\x84\
+<\xf8\xe0\xab\xa2\x15*\xcd\xdfyb \x15\x1e\xdc\xad\
+|\xeb\x08y\x0eg\xb0\xa6B->\x00\xe4\x0c\x04\x9e\
+\xc0\xddj[i\x158\x15eIoboI\xa3q\
+\x102G\xa2\xeb\xb8\x9a\x12\x22\x1b\xa1\x1e\x9dG\x9d\xd1\
+\x09'O\x8d3\x90kMH\xc7v\x9a\xd7'\xbbn\
+l\x88N\x9d\x8e\xf66\xf4\x1a\x07\x81\xe7\xe8\x01\xbd\xfd\
+f\xb57\xd1\x03\x1az\xe7\xc6\xba\xa3\x1a;\x1c\x82\xec\
+\xa1\x9b\xae\xb1\xdb\x8c+\xaf\xa2\x87\x14\x93\xf5\x96\x90\xf0\
+\xa3\xc4y\x0eA \x8dJ<\xaf\x19\xec\x8a^\xca\xd4\
+l5\x17\xeb\xd5\x9b\x84\xaa\xf4s\x0a\xb2[\xe7\xacN\
+~\x85\xb6^yn\x8c\xa6bj\xbd\xde\x15\xf3\xccG\
+\xc7\xa2 0DgS?zT\xc1\xd1\x06\xef\x9a;\
+?,\x1b\xe4\xd19e\xa2\xbf\xeeB\x0e\xa44[r\
+\xd3\x19\xc8\x99\xe6\xfaO(4I\x1e\x915mN\xce\
+\xb4\x17\x87v\x8d\xd6\xaf1[\xff\x82\xe74Wz6\
+{N\xee\xb4\x9723\x86\x0d\x08$'\x16\x89\x82\xd8\
+:\xf3\xc6\x18c}\xaa\xf9\x86\xa2\xa4,\x15\x06\xa9\x1d\
+f\xcb\xd1\xae\xdc\xe8\x82\xe3Ls\xf3\x85A\xa0\xb2\xb7\
+\x0dG\x0b\xe3\x85\xc9M\xa6\xc1W\xc5A\xa0\xbcS\xd8\
+\x8eV{\x8d/W\xdd\xda,9A \x04.\xf7\x0b\
+\xd3\xd1\xe1\x88\xd9\xe5r\xcd\xa2cDB\xa0*=,\
+\xc73\x97L\xaf\xf6\x87\xd9\xc9\xf8\xc1B!\x10Z\xdd\
+\x86\xdf\x91b\xf5 Q\x89I\xb8\xafX\x08\xc0\x95\xb1\
+^n\xc9v\xab\x8b\x99\xbc\xb9\x12EC\x00~\x99\xca\
+{:?\xc1r\x9bnY\xb4Q\xb6\xadx\x08@\xc5\
+\xf24\xbe\x97e\xae\xe5\xa5\x8e\x0c6\x88\xfa\x9c\x80\x00\
+@\xc5\x9a\xc9=\xad\x8f\x85G\x9f\xe0X\xa6\x98\x12\xaf\
+\x19\x9du\xcb\x98W\x12r\x06\x02\x00P\xb5o]\xde\
+\xcb\xe9\x81\x94\xc4x\xbf\xbfsR -;\x7f;=\
+*>\xa0\x9eg\x03\xe2\xd8\x9a\x99\xa3\x03\x89q~\x7f\
+\xe7\x94\xa1\xd9\x0b7\xfc\x14\xde\x0f\xc44\x1e\xc21\xc7\
+e\x0e\xfc~\x97\x10H]_\x02i}92!p\
+\x88~\x0b\x8c\x8bP\x08\xdd\xcbelg\x84B\xae\xb7\
+#\x90\xa4\xea\xc8\x84\xc0\xc7\xf6\x9frW\x0bR?\x80\
+NaOF&\x04\x8e\xd2\x1b\xe5\xa0\x90HG\x910\
+\x08=\xa7a\xb0\xae\xf5\xa0\x1c^q\x90\xca\x8et\x00\
+xUX[k\xbdL\x1c\x04>\xa5/\xc9d\x91\x0e\
+\x81\x10\xcdODx\x8e\x0a{_\x89\x85\xfc\x8ag,\
+i\xdb\x05\xbe\x1eB!0\xbf\xc1\x98<\xe3\x08\x08u\
+\x08\x85Tw\xbd\xff\x9bg\xd9gA\xb0C(\xe4\xde\
+\xb3\xb2\xads*@\xb8C,\x042\x18K\x08V\x8a\
+\xbb~\xf1\xff\xc3l\xb1\x90\xf2\xfe\x9f\xd4\x80#\x0e\xc1\
+\x10\xb1\xa5\xa1\x83\xb9\xc5\xc1\xdc\xe2\x88\x5c\xc8F2\xbc\
+v\x8b\x83\xb9\xc5\xc1\xdc\xe2`nq0\xb78\x98[\
+\x1c\xcc-\x8e\xc8\x83l\xd4\xdf\x15\xfa\x0f\x13\xf4\xa6<\
+X\xcd\xe8\x1c\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x03\xae\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\xc0\x00\x00\x00\xb0\x04\x03\x00\x00\x00\xab\xd0|\xf5\
+\x00\x00\x00-PLTE\x00\x00\x00A\xcdRA\xcd\
+RA\xcdRD\xccQH\xcbPB\xccQI\xcbP\
+D\xccQE\xccQE\xccQD\xccQD\xccQC\
+\xccQA\xcdR\x9e%\xfb\x88\x00\x00\x00\x0etRN\
+S\x00\x18Oc\x8f\xab\xae\xb8\xbd\xc9\xd6\xdf\xe9\xf0\xe7\
+5\xddl\x00\x00\x03\x22IDATx\xda\xb5\xd8\xc1\
+\x89\xdb@\x18\xc5q)\x15\x08\x1b\x0cY\xf6\x90l\x01\
+\x82m\xc0\x90R\xdc\x80o!\xe7\x94\xa0\x06\x5cB \
+%\xa4\x01\x1fR@\x0e\xbb\x10\xd8\xb0L\x0d9\xd8\xb2\
+\xa5\x19[\xf3\xbd\xf7}o\xee\xf6\x8fw\xd0\x7f\x84\x9a\
+\xc6y\xfa\xa1\xd1\x9e\xfe\xbd\x13\x03\xe9\x97\x1a\x10O\xe8\
+S\xfa\xdd\x89\x81\xf4\xac\x06^;1 \x9d\xd0\xa7\x94\
+\xd2\xdfN\x0c\xa4\x9d\x1a\x10N8\x01\xc2\x09g\xe0\xad\
+\x13\x03iP\x03\xb2\x09# \x9bp\x01T\xcd\xbb\x00\
+\xaal_\x01\xd1\x84+ \xca\xf6\x04\xd04o\x0aH\
+\xb2=\x05$\x13f\x80\xa2y3@\xd1\xbc9 \x98\
+0\x07\x04\x132 \xbey\x19\x10\xdf\xbc\x1c\x08\x9f\x90\
+\x03\xe1\x13\x0a \xbay\x05\x10\x9d\xed\x12`&\xac\x9e\
+\xee\x9em\x01\x10\xd9n\x8f\x09:p\xf3>`\xff\x8f\
+g\x1b\x05\xe0\x090\x806\x0f\x06\xd0\xe6\xe1\x008\x01\
+\x07\xc0\x09\x04\x805\x8f\x00\xb0\xe61\x004\x81\x01\xa0\
+\x09\x14\x804\x8f\x02\x90ls\x000\x81\x03\x80l\x93\
+\x80\xbdy,`\xce6\x0b\x98'\xd0\x80\xb5y4`\
+m\x1e\x0f\x18'\xf0\x80q\x82\x03x\xab\xbd\xb0|q\
+\x02\xa9\x02<\xbch\x81\xf6\xe8\x05^\x97\x81\xc7\xe4\x05\
+\x96\x1f\xb5\xd5\xd1\x0b,\xc7\xa2\xdd&'\xf0\xfeyq\
+\xc0:y\x81\xe5;\xa7\xddz\x81\xca\x95\xb3N^\xe0\
+\xe7\xf2\x80\xbd\x17\xa8\xbc\xb9l\x92\x17\x18\x0c\x03<\x80\
+i\x80\x07\xf8\xbe<\xe0\xe0\x05*W\xc1\xc7\xe4\x05v\
+\xa6\x01<P\x19\xf0\x90\xbc\xc0s%\xd3^\xa0\xf2J\
+\xf4\x98\xbc@5\xd3N\xa0\x9ei\x1f`\xc8\xb4\x0f0\
+d\xda\x05X2\xed\x02,\x99\x9e\x01\xed\x0fA\xe5\xa6\
+\x00\xf8Aj\x00\x06\x9c\x81\x85\xd3\xfb\x060\x80-\xd3\
+<`\xcc4\x0f\xec\xa0\x018`\xcd4\x0dX3\xcd\
+\x02\xe6L\xb3\x809\xd3$`\xcf\xf4\xe5\x17\xf7\x9f\xe1\
+\xa7\xae\x00\x80L[\xce\xa7\x02\x002M\x01H\xa6)\
+\x00\xc94\x03`\x95#\x80!x@\x0e\x84\x0f\xc8\x01\
+,\xd38\x00f\x1a\x07v\xe1\x03\xe6\x00\x9ai\x18@\
+3\x8d\x02p\xa6Q\x00\xce4\x08\xe0\x99\xc6\x80\xe0L\
+\x97@p\xa6\x0b :\xd3\x05\x10\x9d\xe9\x1c\x88\xaf\x5c\
+\x06\x0c\xa2\x01# \x1b0\x02\xcb\x99n\x0e^\xa0\xf6\
+\xfd;y\x81\xda\xe7\xef\xa3\x13XU\x06\x90\x9d\xbb\x02\
+\xd5\xd3\x1e\xc4\x00uYB\x00?\xc1\x08\xf0\x13\xac\x00\
+\xfd,[\x01\xfaa6\x03\xec\x043\xc0N\xb0\x03\xe4\
+\x9df\x07\xc8K\x0d\x00\xb8\x09\x00\xd0\xac\xfe\x88\x01\xaa\
+y\x10\xc0\xbc\x9dB\x003\x01\x03\x88\xe6a\x00\xd1<\
+\x10\xc0'\x80\x00>\x01\x05\xe0\xe6\xa1\x00\xdc<\x18\xb8\
+5\xe1\xdf\xb7\xbb\xe7k\xd7\x04Lxi\x22\xcf\x8d\xe6\
+\xc5\x027\xb2\x1d\x0c\x94\x13\x82\x812\xdb\xd1@\xd1\xbc\
+p \xcfv8\x90O\x88\x07\xb2\xe6\xc5\x03Y\xf3\x04\
+\xc0|\x82\x00\x98OP\x00\xb3\xe6)\x80Y\xf3$\xc0\
+t\x82\x04\x98N\xd0\x00\x93\xe6i\x80I\xb6E\xc0u\
+\x82\x08\xb8f[\x05\x5c\x9a'\x03\xc6l\xcb\x80q\x82\
+\x0e87O\x07\x9c\x9b'\x04N\x13\x84\xc0i\x82\x12\
+h\xf7b\xa0\xd9\xa8\x81v/\x06\x9a\x8d\x1ah\xb7b\
+\xa0Y\xab\x81v\xeb\x06\xfe\x03$\xe7\x91\x89\x97#\xf5\
+\xaf\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\xbf\
+/\
+/ Copyright (C) \
+2020 The Qt Comp\
+any Ltd.\x0a// SPDX\
+-License-Identif\
+ier: LicenseRef-\
+Qt-Commercial OR\
+ BSD-3-Clause\x0a\x0ai\
+mport QtQuick.Co\
+ntrols.Material\x0a\
+\x0aToolBar {\x0a M\
+aterial.foregrou\
+nd: \x22white\x22\x0a}\x0a\
+\x00\x00\x01\x0a\
+[\
+Icon Theme]\x0aName\
+=Gallery\x0aComment\
+=Qt Quick Contro\
+ls 2 Gallery Exa\
+mple Icon Theme\x0a\
+\x0aDirectories=20x\
+20,20x20@2,20x20\
+@3,20x20@4\x0a\x0a[20x\
+20]\x0aSize=20\x0aType\
+=Fixed\x0a\x0a[20x20@2\
+]\x0aSize=20\x0aScale=\
+2\x0aType=Fixed\x0a\x0a[2\
+0x20@3]\x0aSize=20\x0a\
+Scale=3\x0aType=Fix\
+ed\x0a\x0a[20x20@4]\x0aSi\
+ze=20\x0aScale=4\x0aTy\
+pe=Fixed\x0a\
+\x00\x00\x00\xe3\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00<\x00\x00\x00<\x04\x03\x00\x00\x00\xc8\xd2\xc4A\
+\x00\x00\x00$PLTE\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6X\x02G\
+\x00\x00\x00\x0ctRNS\x00\x1c\x1d\x1e=l|}\
+\xd8\xd9\xda\xfa\x85T\xfd\xb6\x00\x00\x00bIDAT\
+8\xcbc`\xa070\xc5+\xcb4\xbb\x00\x9f\xb4\xd5\
+\xeemx5\xef\xde]\x80O\xf3\xee\xdd[\xf0j\xde\
+\x9d\x80W\xf36r5k\x8ej\x1e\x11\x9a\xadh\xa7\
+\x99A\x02(\xbd\x1d\xb74c\xf7n\x82\x89\x7f\x1b\xf9\
+\xda)\xb4}T\xfb\x10\xd5Na\xb2\xc1_\xe4\x82\xb5\
+'\x90]\xdc\x03\xb5'PP\xd5P\x0d\x00\x00^\xe9\
+\x99\xeb`\xde0?\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x00\x82\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00<\x00\x00\x00<\x02\x03\x00\x00\x00G\x921\xe1\
+\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
+\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
+\x93\xcd8\x00\x00\x00&IDAT(\xcfc\x08E\
+\x05\x0c\x03\xcd\x0f[\x85\x0c\xa6R\x9d\x1f\xc2\x80\x0cD\
+\x87\x1c\x7f4|\x066|\x06Y~\x01\x00\x0e\xe9\x0f\
+x\xb7\x12\x1d\x13\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x00\xc1\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00<\x00\x00\x00<\x04\x03\x00\x00\x00\xc8\xd2\xc4A\
+\x00\x00\x00\x15PLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1fI:\x15\
+.\x00\x00\x00\x06tRNS\x00\x00 0\x9f\xef,\
+\x93$\x03\x00\x00\x00UIDAT8\xcbc\x10\xc4\
+\x0b\x18\xa8'\xcd\xa0\x12\x96\xea\xc4\x80S\x9a9,-\
+-\xd5\x00\xa7\xb4j\x1a\x10\x04\xe1\x94v\x03I\xa7\xe0\
+\x94\x0e\x03I\xa7\xe2\x94N\x03\x03r\xa5\x09\x18N\xc0\
+i\x04<F X\x08\x04*\x03\x18\x8cJ\x8f&\xc5\
+\xd1\xa48\x9a\x14G\x93\x22m\xaa9\x00L\x0e\xa9W\
+\xb5\x91\xf7\x9e\x00\x00\x00\x00IEND\xaeB`\x82\
+\
+\x00\x00\x00\xf6\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
+\x00\x00\x00\x1bPLTE\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x94Q\xe2 \x00\x00\x00\x09tRNS\x00\
+1267\xe8\xe9\xeb\xfa\x91\xc7O\xc2\x00\x00\x00\x81\
+IDATH\xc7\xed\xd6\xb1\x0d\x800\x0cDQ\x93\
+\xcc\x90\x15R#Q\xd0\xb2\x05l\x00=\x14\xd9 7\
+6#\xf0\x0b\x22\x82d\xd7\xa7gW\xd6\x99\xfd{&\
+\x98\x0b\xfb\xc2\x82Y\x17\xca\xc5\xa2:2P\x88\x0c\x87\
+\xa4\xba0\x90\xec\x0e\x87$\x9d\xcf\xe0\xfc6\x98\x1dt\
+\xd0\xc1\x9e\xc1X\xbe\x02\x87M\xf0#&\xc1\x8f\x88w\
+s\xb2\xc1\x95N:\xe9d{\x92\xd6\x99fW\xa2^\
+\x98\xe0\xc7\xe2E\xd3\x12\x03\xcd\x86\x95\x81\xbc^w3\
+7\xa7\xd5\xc3\xb4x\xa1\x14\xf6\x00\x00\x00\x00IEN\
+D\xaeB`\x82\
+\x00\x00\x00\x83\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00P\x00\x00\x00P\x02\x03\x00\x00\x00\xf3\x7f\x1a>\
+\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
+\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
+\x93\xcd8\x00\x00\x00'IDAT8\xcbc\x08\xc5\
+\x02\x18F\x8a\xe0*\x0c08\x05\x190\xc0\xa8 %\
+\x82\xa3\xf1>\x1a\xef\x839\xdeGn\x99\x0c\x00\xaa\xfe\
+\xe3\x80<\x1b\xa3\xfb\x00\x00\x00\x00IEND\xaeB\
+`\x82\
+\x00\x00\x00\xdf\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00P\x00\x00\x00P\x04\x03\x00\x00\x00|?\xef\x9e\
+\x00\x00\x00\x18PLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\x22\x1f\x1f\
+G\xb0\x1c\xf2\x00\x00\x00\x07tRNS\x00\x00 `\
+\xbf\xcf\xef\x1dV\xbf\x1a\x00\x00\x00oIDATH\
+\xc7c\x10$\x120\x0c\x22\x85\x0c\x0c&\xe5\xe5\xce\x0c\
+\x0c\x84\x15\xaa\x96\x03A\x10a\x85L\xe9 \x85e\x0a\
+\x04\x15\xb2\x96\x83A\x00A\x85\xe6\x10\x85\xc5\x04\x15\xba\
+C\x14\x96\x10TX\x0e\x05\x83Y!\xd1\x9e!:x\
+\x88\x0ep\xa2\xa3\x90\xe8DA|2\x83\x82Q\x85#\
+A\xe1h\xd93Z\xf6\x8c\x96=\xa3\x0aG\xcb\x9e\xd1\
+\xb2gd\x97=\x83\xb0\xaf\x00\x00G\x10>\xf2\xcfQ\
+\xf1\x00\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\x92\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\
+\x00\x00\x00YIDAT8\x8d\xed\xd4\xb1\x09\x80@\
+\x0c\x05\xd0\x87\x16\x8e\xe4\xa6\xda\x0a\xeeegw\x13X\
+\xd9Z\x08\xe2%bs\xbf\xcfKB $\xa7\xaf\xac\
+\x99P\xb0g\x0c\xb0\xe2\xc0\x86!\x0b+\x18\xa3\xd8\xd2\
+\xb0\x7f\xb1\xeakv\x91\xceo\x92\xbarC\xbfE\xd3\
+\x9e\xc3\x1d\x1a~_Wt\x964\xe1cN\x85\xa7,\
+\x143\xcaZ\x14\x00\x00\x00\x00IEND\xaeB`\
+\x82\
+\x00\x00\x00{\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\
+\x00\x00\x00BIDATx\xda\xec\x94\xc1\x0d\x000\
+\x08\x02\x8f\xc6\xfdW\xc6\x1d\x1a|)\x03\x10\xf0\x0c\xb2\
+MR\x8f\xb0\xe2\x86\x05 )\xd2\xdb\xb6f\x12\x02\xda\
+\x03e\xec\x86\xa9\xef>\xcaG\xf9\xcbq\xdf\xc06\x00\
+\x00\x00\xff\xff\x03\x00\xf7\x83\x0c-\xe7\xf9\xf9<\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00{\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00\x14\x00\x00\x00\x14\x02\x03\x00\x00\x00\xf0\xe7\xf5\x9e\
+\x00\x00\x00\x0cPLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x13\xee\x05I\x00\x00\x00\x03tRNS\
+\x00\x00\x80\x17\xceG\xfe\x00\x00\x00\x1bIDAT\x08\
+[c\x08\x05\x01\x86\xd0\xd0}`\xf2?\x12\x09\x11\xc1\
+D\x94\xab\x04\x02\x00\xd4P%\xa9\xa8Z\xf7\x1d\x00\x00\
+\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\xb8\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
+\x00\x00\x00\x18PLTE\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+V7\x1c*\x00\x00\x00\x08tRNS\x00\x0b\x0e\x90\
+\xbc\xbd\xc2\xfa`jr\x94\x00\x00\x00GIDAT\
+(\xcfc` \x0f(+`\x8a1\xa5'a\x0a\x8a\
+\x96\x97a(e\x0c\xc7\x22\xa8V^\x9eD\x94B\xd1\
+\xe1\xa4\x10\x9b\xaf\x99\xd2\xb1\x85\x99;\x16A\xac\xdaq\
+(\x15\x19\x9eJI\x0a\x01,\x82X\x13-\xd6\xe4\x8d\
+\x17\x00\x00\xbe(.\x06\xf5\xa2\x90\xab\x00\x00\x00\x00I\
+END\xaeB`\x82\
+\x00\x00\x00~\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x02\x03\x00\x00\x00\xf1\x90P\xfe\
+\x00\x00\x00\x09PLTE\x00\x00\x00\xff\xff\xff\x00\x00\
+\x00s\xc6\x83q\x00\x00\x00\x02tRNS\x00\x00v\
+\x93\xcd8\x00\x00\x00\x22IDAT\x18\x95c\x08\x85\
+\x03\x062\x99Q\xab\xa0`)af\x00\x03\x14\xb0R\
+\x979\xd4\xdc@q\xa8\x03\x00\xea\x17x\xdd\x86\xef\x87\
+\xad\x00\x00\x00\x00IEND\xaeB`\x82\
+\x00\x00\x00\x9e\
+\x89\
+PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
+\x00\x00(\x00\x00\x00(\x04\x03\x00\x00\x00~\xd0\xa5^\
+\x00\x00\x00\x0fPLTE\x00\x00\x00\xff\xff\xff\x22\x1f\
+\x1f\x22\x1f\x1f\x22\x1f\x1f\xc1T\xc5\x91\x00\x00\x00\x04t\
+RNS\x00\x00P\xdf\x1fD\xf4\x8b\x00\x00\x00:I\
+DAT(\xcfc\x10\xc4\x02\x18\xf0\x0a2\x998+\
+`\x08\xaa\xb8\xb88a\x08\x9a\xb8\xb88c\x08\xba\x00\
+\x01q\x82X\xb5c\xb5\x08\xab\x93\x18\x80`\xe0\x04G\
+Ci8\x85\x12\xc1\xdc\x01\x00\xcb~A\x15\x05\x8a+\
+\xbc\x00\x00\x00\x00IEND\xaeB`\x82\
+"
+
+qt_resource_name = b"\
+\x00\x05\
+\x00o\xa6S\
+\x00i\
+\x00c\x00o\x00n\x00s\
+\x00\x0b\
+\x0cCR|\
+\x00g\
+\x00a\x00l\x00l\x00e\x00r\x00y\x00.\x00q\x00m\x00l\
+\x00\x15\
+\x08\x1e\x16f\
+\x00q\
+\x00t\x00q\x00u\x00i\x00c\x00k\x00c\x00o\x00n\x00t\x00r\x00o\x00l\x00s\x002\x00.\
+\x00c\x00o\x00n\x00f\
+\x00\x09\
+\x08\xac\xef\x1c\
+\x00+\
+\x00M\x00a\x00t\x00e\x00r\x00i\x00a\x00l\
+\x00\x0b\
+\x083\x9c<\
+\x00T\
+\x00o\x00o\x00l\x00B\x00a\x00r\x00.\x00q\x00m\x00l\
+\x00\x06\
+\x07\x03}\xc3\
+\x00i\
+\x00m\x00a\x00g\x00e\x00s\
+\x00\x06\
+\x07\x84+\x02\
+\x00q\
+\x00m\x00l\x00d\x00i\x00r\
+\x00\x05\
+\x00v}\xc3\
+\x00p\
+\x00a\x00g\x00e\x00s\
+\x00\x0f\
+\x07\x87\xe7<\
+\x00S\
+\x00p\x00i\x00n\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x15\
+\x02E\x02\xfc\
+\x00P\
+\x00a\x00g\x00e\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\x00g\x00e\
+\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x09\x09P|\
+\x00T\
+\x00a\x00b\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x15\
+\x0fE\xff\x5c\
+\x00B\
+\x00u\x00s\x00y\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\x00g\x00e\
+\x00.\x00q\x00m\x00l\
+\x00\x12\
+\x05P\x5c\x1c\
+\x00S\
+\x00c\x00r\x00o\x00l\x00l\x00a\x00b\x00l\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\
+\x00l\
+\x00\x13\
+\x0dr\xfb|\
+\x00P\
+\x00r\x00o\x00g\x00r\x00e\x00s\x00s\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x0f\
+\x0b\xe33|\
+\x00T\
+\x00o\x00o\x00l\x00T\x00i\x00p\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x06\xd3\x8b\x1c\
+\x00T\
+\x00e\x00x\x00t\x00A\x00r\x00e\x00a\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x02%\xd0|\
+\x00S\
+\x00l\x00i\x00d\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0f\
+\x00\xf4\xb9\xfc\
+\x00T\
+\x00u\x00m\x00b\x00l\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x0e\xa2\x84\x9c\
+\x00B\
+\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x0b\xc5|\x5c\
+\x00S\
+\x00w\x00i\x00t\x00c\x00h\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x11\
+\x0fw<\xdc\
+\x00T\
+\x00e\x00x\x00t\x00F\x00i\x00e\x00l\x00d\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x10\
+\x05\xb8\x16\x1c\
+\x00C\
+\x00o\x00m\x00b\x00o\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x00w\xb4\x5c\
+\x00D\
+\x00e\x00l\x00e\x00g\x00a\x00t\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0c\
+\x0e\x8bV\xfc\
+\x00D\
+\x00i\x00a\x00l\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0d\
+\x0c\xc8%\xdc\
+\x00F\
+\x00r\x00a\x00m\x00e\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x11\
+\x03$Q\x5c\
+\x00S\
+\x00w\x00i\x00p\x00e\x00V\x00i\x00e\x00w\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x11\
+\x00\xa3\xff|\
+\x00S\
+\x00c\x00r\x00o\x00l\x00l\x00B\x00a\x00r\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x13\
+\x002\xb3\xbc\
+\x00R\
+\x00a\x00n\x00g\x00e\x00S\x00l\x00i\x00d\x00e\x00r\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x10\
+\x0fY+\x5c\
+\x00G\
+\x00r\x00o\x00u\x00p\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x13\
+\x0fN\x9e\x5c\
+\x00R\
+\x00a\x00d\x00i\x00o\x00B\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x17\
+\x0a>\xfa\x1c\
+\x00S\
+\x00c\x00r\x00o\x00l\x00l\x00I\x00n\x00d\x00i\x00c\x00a\x00t\x00o\x00r\x00P\x00a\
+\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x0e\
+\x08\xd2\xfe\x5c\
+\x00D\
+\x00i\x00a\x00l\x00o\x00g\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x10\
+\x048\xf8\x1c\
+\x00C\
+\x00h\x00e\x00c\x00k\x00B\x00o\x00x\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x13\
+\x05\xac\xa6\xdc\
+\x00D\
+\x00e\x00l\x00a\x00y\x00B\x00u\x00t\x00t\x00o\x00n\x00P\x00a\x00g\x00e\x00.\x00q\
+\x00m\x00l\
+\x00\x11\
+\x07%R|\
+\x00S\
+\x00t\x00a\x00c\x00k\x00V\x00i\x00e\x00w\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\
+\x00\x09\
+\x09j\x86g\
+\x00a\
+\x00r\x00r\x00o\x00w\x00.\x00p\x00n\x00g\
+\x00\x0a\
+\x06\xebDg\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d=\xfd'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x004\x00x\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x02\xa9\x8a\x07\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0e\xa8z'\
+\x00a\
+\x00r\x00r\x00o\x00w\x00@\x004\x00x\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0e\xb8z'\
+\x00a\
+\x00r\x00r\x00o\x00w\x00@\x003\x00x\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d-\xfd'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x003\x00x\x00.\x00p\x00n\x00g\
+\x00\x0c\
+\x0e\x88z'\
+\x00a\
+\x00r\x00r\x00o\x00w\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0e\
+\x0d\x1d\xfd'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00@\x002\x00x\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x02\x89\x8a\x07\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00@\x004\x00x\x00.\x00p\x00n\x00g\
+\x00\x0b\
+\x05R\xbf'\
+\x00q\
+\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\
+\x00\x0d\
+\x02\x99\x8a\x07\
+\x00a\
+\x00r\x00r\x00o\x00w\x00s\x00@\x003\x00x\x00.\x00p\x00n\x00g\
+\x00\x07\
+\x0d\x83,Y\
+\x00g\
+\x00a\x00l\x00l\x00e\x00r\x00y\
+\x00\x07\
+\x05{TR\
+\x002\
+\x000\x00x\x002\x000\x00@\x002\
+\x00\x05\
+\x005{P\
+\x002\
+\x000\x00x\x002\x000\
+\x00\x07\
+\x05{TT\
+\x002\
+\x000\x00x\x002\x000\x00@\x004\
+\x00\x0b\
+\x0b\xba\x81\xb5\
+\x00i\
+\x00n\x00d\x00e\x00x\x00.\x00t\x00h\x00e\x00m\x00e\
+\x00\x07\
+\x05{TS\
+\x002\
+\x000\x00x\x002\x000\x00@\x003\
+\x00\x08\
+\x07\x9eZG\
+\x00b\
+\x00a\x00c\x00k\x00.\x00p\x00n\x00g\
+\x00\x0a\
+\x0d\xc8&G\
+\x00d\
+\x00r\x00a\x00w\x00e\x00r\x00.\x00p\x00n\x00g\
+\x00\x08\
+\x0cXY'\
+\x00m\
+\x00e\x00n\x00u\x00.\x00p\x00n\x00g\
+"
+
+qt_resource_struct = b"\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x08\x00\x00\x00\x01\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x001\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\xb4\x00\x02\x00\x00\x00\x1b\x00\x00\x00\x16\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x90\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x0a\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xc1\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x09\xc5\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00\x0a)\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00\x5c\x00\x02\x00\x00\x00\x01\x00\x00\x00\x09\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x00t\x00\x00\x00\x00\x00\x01\x00\x00\xe93\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05\xf6\x00\x00\x00\x00\x00\x01\x00\x00\xd5\x9d\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x062\x00\x00\x00\x00\x00\x01\x00\x00\xe5\x81\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x058\x00\x00\x00\x00\x00\x01\x00\x00\x9b\xf7\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\xda\x5c\
+\x00\x00\x01\x87\x137-\xff\
+\x00\x00\x04\xfc\x00\x00\x00\x00\x00\x01\x00\x00u\x04\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x04\xe4\x00\x00\x00\x00\x00\x01\x00\x00s\xc1\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05\xd4\x00\x00\x00\x00\x00\x01\x00\x00\xc2Q\
+\x00\x00\x01\x87\x137\xd0\xfa\
+\x00\x00\x05\x94\x00\x00\x00\x00\x00\x01\x00\x00\xa4\x17\
+\x00\x00\x01\x87\x137\xd0\xfa\
+\x00\x00\x05\x16\x00\x00\x00\x00\x00\x01\x00\x00v\xd2\
+\x00\x00\x01\x87\x137\xd0\xfe\
+\x00\x00\x05\xb6\x00\x00\x00\x00\x00\x01\x00\x00\xc0q\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05X\x00\x00\x00\x00\x00\x01\x00\x00\x9e\xb6\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x05v\x00\x00\x00\x00\x00\x01\x00\x00\xa1\xb0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03\x96\x00\x00\x00\x00\x00\x01\x00\x00O+\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\xe2\x00\x01\x00\x00\x00\x01\x00\x009\x1c\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x03n\x00\x00\x00\x00\x00\x01\x00\x00J\xec\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02,\x00\x00\x00\x00\x00\x01\x00\x00&\x88\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\x0a\x00\x00\x00\x00\x00\x01\x00\x00#\x85\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xdf\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03F\x00\x00\x00\x00\x00\x01\x00\x00E\xa6\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x04j\x00\x00\x00\x00\x00\x01\x00\x00e\x81\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01j\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x04\x90\x00\x00\x00\x00\x00\x01\x00\x00ie\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\xbc\x00\x00\x00\x00\x00\x01\x00\x003L\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x01\xe4\x00\x00\x00\x00\x00\x01\x00\x00 \xe6\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x04\xbc\x00\x00\x00\x00\x00\x01\x00\x00l\x1e\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xd0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x04H\x00\x01\x00\x00\x00\x01\x00\x00_\xe4\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x10g\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x04\x14\x00\x00\x00\x00\x00\x01\x00\x00[\x8b\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02r\x00\x00\x00\x00\x00\x01\x00\x00->\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x08\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03&\x00\x00\x00\x00\x00\x01\x00\x00@\xba\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01\x94\x00\x00\x00\x00\x00\x01\x00\x00\x1a\xb5\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03\x08\x00\x00\x00\x00\x00\x01\x00\x00=\xee\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02P\x00\x00\x00\x00\x00\x01\x00\x00(\xd1\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x01:\x00\x00\x00\x00\x00\x01\x00\x00\x15\xe6\
+\x00\x00\x01\x86\xcc\xe0s'\
+\x00\x00\x03\xe8\x00\x00\x00\x00\x00\x01\x00\x00W\xc0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00R\xa5\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x02\x94\x00\x00\x00\x00\x00\x01\x00\x000\xe7\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06R\x00\x02\x00\x00\x00\x05\x00\x00\x002\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06z\x00\x02\x00\x00\x00\x03\x00\x00\x00@\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06f\x00\x02\x00\x00\x00\x03\x00\x00\x00=\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06\xba\x00\x02\x00\x00\x00\x03\x00\x00\x00:\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06\x8a\x00\x02\x00\x00\x00\x03\x00\x00\x007\
+\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x06\x9e\x00\x00\x00\x00\x00\x01\x00\x00\xe9\xf6\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xed6\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xee\xb7\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xee0\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xeb\x04\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xecq\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xeb\xeb\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xf1.\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xf2l\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xf1\xea\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xce\x00\x00\x00\x00\x00\x01\x00\x00\xef\x9a\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x01\x00\x00\xf0\xaf\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+\x00\x00\x06\xe4\x00\x00\x00\x00\x00\x01\x00\x00\xf00\
+\x00\x00\x01\x86\xb7m\x07\x8b\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()