Als ersten Schritt wollen wir R und R-Studio herunterladen und
installieren. R ist eine frei verfügbare Statistik Software, welche wir
in unserem Kurs für ökonometrische Analysen verwenden. R kann über die
Internetseite https://www.r-project.org bezogen
werden. Hier werden spezielle “Mirrors” für einzelne Länder angegeben,
aus welchen eine Seite zum Download herausgesucht werden kann. Wir
befinden uns in Deutschland nehmen für diese Anleitung beispielhaft den
“Mirror” in Münster. Gehen Sie hierfür auf die CRAN Seite der Uni
Münster https://cran.uni-muenster.de/.
Installation von R
Installation für Windows
- Klicken Sie auf “Download R for Windows”
- Klicken Sie den Link “install R for the first time”
- Klicken Sie anschließend den Link “Download R 4.x.x for Windows”
(wobei x die Versionsnummer beinhaltet)
- Speichern Sie die .exe Datei auf ihrem PC und führen Sie diese aus;
folgen Sie den Installationsbeschreibungen
Installation für den Mac
- Klicken Sie auf “Download R for (Mac) OS X”
- Klicken Sie auf den Link welcher zuoberst genannt wird “R-4.x.x.pkg”
(in den Folien zur Veranstaltung wird auf die neueste Versionsnummer
hingewiesen) um die neueste Version von R herunterzuladen
- Speichern Sie die .pkg Datei auf ihrem PC und führen Sie diese aus;
folgen Sie den Installationsbeschreibungen
Nachdem Sie R erfolgreich installiert haben sollten Sie noch RStudio
installieren
Installation von RStudio
- Gehen Sie auf die Seite von https://www.rstudio.com/products/rstudio/download/ und
klicken Sie auf “Download RStudio”
- Laden Sie die “RStudio Desktop” Version herunter, welche frei
verfügbar ist (Open Source License)
- Laden Sie die für Sie benötigte Version von RStudio herunter
(Windows/Mac/Linux)
- Führen Sie die Datei aus und folgend Sie den
Installationsbeschreibungen
Installation von Paketen in R
Die von uns heruntergeladene R Version ist das Basissystem, auf dem
wir nun aufbauen und weitere, für unsere späten Analysen wichtige, R
Pakete herunterladen. Insbesondere Pakete aus dem “Tidyverse” sind für
diese Vorlesung wichtig. Um diese Pakete herunterzuladen starten Sie
RStudio und geben folgende Befehle ein:
install.packages("tidyverse")
Dieser Befehl läd alle Programme, welche im “Tidyverse” Paket
enthalten sind auf ihren PC herunter und installiert diese in RStudio.
Wenn Sie mehrere Pakete auf einmal herunterladen möchten, so können Sie
diese in einem Vektor zusammenfassen. Hier ein Beispiel:
install.packages(c("tidyverse", "devtools", "ggplot2"))
Laden von Paketen in R
Nach der Installation von Paketen sind diese nicht automatisch in R
verfügbar. Wenn Sie RStudio öffnen, dann öffnet sich immer nur die
Basisversion. Um bestimmte Pakete in RStudio (und R in der Konsole)
verfügbar zu machen, müssen Sie diese vorher laden. Dies geschieht wie
folgt:
library(tidyverse)
- Achtung der Name des Pakets ist hier nicht in
Anführungszeichen!
- “Tidyverse” ist
hierbei eine Kollektion von verschiedenen Paketen. Der Befehl search()
gibt alle zur Verfügung stehenden Pakete aus.
library(tidyverse)
search()
## [1] ".GlobalEnv" "package:lubridate" "package:forcats"
## [4] "package:stringr" "package:dplyr" "package:purrr"
## [7] "package:readr" "package:tidyr" "package:tibble"
## [10] "package:ggplot2" "package:tidyverse" "package:stats"
## [13] "package:graphics" "package:grDevices" "package:utils"
## [16] "package:datasets" "package:methods" "Autoloads"
## [19] "package:base"
Update einer bereits vorhandenen R-Version und/oder R-Studio
Version
Falls Sie bereits R und R-Studio installiert haben sollten Sie diese
auf den neuesten Stand bringen.
R auf den neuesten Stand bringen (nutzen Sie hierfür direkt die
R-Konsole und nicht R-Studio): Verwenden Sie entweder das Paket
installr
mit der Funktion updateR()
oder laden
Sie R manuell in der neuesten
Version herunter.
Bitte beachten Sie:
- Falls Sie R in einer früheren Version installiert haben, bspw.
3.1.2, dann sind alle ihre Pakete auch unter dieser Version gespeichert.
- In diesem Fall müssen Sie die Pakete für die Version 3.x.x ebenfalls
neu herunterladen bspw. aktualisieren. In den Folien zur Veranstaltung
wird auf die neueste Versionsnummer hingewiesen.
- Wenn Sie den Befehl
updateR()
aus dem
installr
Paket verwenden werden Sie direkt durch diesen
Aktualisierungsprozess geführt
- Sie können jedoch Pakete auch durch den Befehl
update.packages()
aktualisieren
- Wenn es sich bei der neuen R Version um ein major release gehandelt
hat (z.B. Upgrade von 3.x.x auf 4.x.x), dann hilft ihnen das Paket
installr
nicht weiter und Sie müssen die 4.x.x Version neu
von Hand installieren.
R-Studio auf den neuesten Stand bringen:
- Laden Sie die aktuellste Version von R-Studio
herunter und installieren Sie diese.
Installation und erste Schritte mit RTutor
In diesem Kurs werden Sie neben der Vorlesung das interative Tool RTutor benutzen. RTutor
wurde von Prof. Kranz hier an der Universität Ulm entwickelt und wir
haben zusammen sogenannte Problem Sets kreiert, welche auf diesen Kurs
abgestimmt sind und vorlesungsbegleitend von ihnen bearbeitet werden
sollen.
RTutor
können Sie mit dem folgenden Befehl herunterladen
und dann mit library(RTutor)
aufrufen:
options(repos = c(skranz = 'https://skranz.r-universe.dev',
CRAN = 'https://cloud.r-project.org'))
install.packages("RTutor")
library(RTutor
Die Problem Sets sind als Vorleistung zu
absolvieren. Ein erfolgreicher Abschluss aller Problem Sets ist die
Voraussetzung zur Teilnahme an den Projekten und der multiple Choice
Klausur zum Ende des Semesters. Durch die RTutor Problem Sets können Sie
das in der Vorlesung Erlernte noch einmal praktisch üben und so direkt
den Umgang mit R, RStudio und RMarkdown verinnerlichen.
Viel Spaß mit dem Projektkurs Data Science und Business
Analytics!
LS0tCnRpdGxlOiAiSW5zdGFsbGF0aW9uIHZvbiBSIHVuZCBSU3R1ZGlvIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0aGVtZTogY29zbW8KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgpBbHMgZXJzdGVuIFNjaHJpdHQgd29sbGVuIHdpciBSIHVuZCBSLVN0dWRpbyBoZXJ1bnRlcmxhZGVuIHVuZCBpbnN0YWxsaWVyZW4uClIgaXN0IGVpbmUgZnJlaSB2ZXJmw7xnYmFyZSBTdGF0aXN0aWsgU29mdHdhcmUsIHdlbGNoZSB3aXIgaW4gdW5zZXJlbSBLdXJzIGbDvHIgw7Zrb25vbWV0cmlzY2hlIEFuYWx5c2VuIHZlcndlbmRlbi4gClIga2FubiDDvGJlciBkaWUgSW50ZXJuZXRzZWl0ZSBbaHR0cHM6Ly93d3cuci1wcm9qZWN0Lm9yZ10oaHR0cHM6Ly93d3cuci1wcm9qZWN0Lm9yZykgYmV6b2dlbiB3ZXJkZW4uIEhpZXIgd2VyZGVuIHNwZXppZWxsZSAiTWlycm9ycyIgZsO8ciBlaW56ZWxuZSBMw6RuZGVyIGFuZ2VnZWJlbiwgYXVzIHdlbGNoZW4gZWluZSBTZWl0ZSB6dW0gRG93bmxvYWQgaGVyYXVzZ2VzdWNodCB3ZXJkZW4ga2Fubi4gV2lyIGJlZmluZGVuIHVucyBpbiBEZXV0c2NobGFuZCBuZWhtZW4gZsO8ciBkaWVzZSBBbmxlaXR1bmcgYmVpc3BpZWxoYWZ0IGRlbiAiTWlycm9yIiBpbiBNw7xuc3Rlci4gR2VoZW4gU2llIGhpZXJmw7xyIGF1ZiBkaWUgQ1JBTiBTZWl0ZSBkZXIgVW5pIE3DvG5zdGVyIFtodHRwczovL2NyYW4udW5pLW11ZW5zdGVyLmRlL10oaHR0cHM6Ly9jcmFuLnVuaS1tdWVuc3Rlci5kZS8pLgoKIyBJbnN0YWxsYXRpb24gdm9uIFIKCiMjIEluc3RhbGxhdGlvbiBmw7xyIFdpbmRvd3MKCjEuIEtsaWNrZW4gU2llIGF1ZiAiRG93bmxvYWQgUiBmb3IgV2luZG93cyIKMi4gS2xpY2tlbiBTaWUgZGVuIExpbmsgImluc3RhbGwgUiBmb3IgdGhlIGZpcnN0IHRpbWUiCjMuIEtsaWNrZW4gU2llIGFuc2NobGllw59lbmQgZGVuIExpbmsgIkRvd25sb2FkIFIgNC54LnggZm9yIFdpbmRvd3MiICh3b2JlaSB4IGRpZSBWZXJzaW9uc251bW1lciBiZWluaGFsdGV0KQo0LiBTcGVpY2hlcm4gU2llIGRpZSAuZXhlIERhdGVpIGF1ZiBpaHJlbSBQQyB1bmQgZsO8aHJlbiBTaWUgZGllc2UgYXVzOyBmb2xnZW4gU2llIGRlbiBJbnN0YWxsYXRpb25zYmVzY2hyZWlidW5nZW4KCiMjIEluc3RhbGxhdGlvbiBmw7xyIGRlbiBNYWMKCjEuIEtsaWNrZW4gU2llIGF1ZiAiRG93bmxvYWQgUiBmb3IgKE1hYykgT1MgWCIKMi4gS2xpY2tlbiBTaWUgYXVmIGRlbiBMaW5rIHdlbGNoZXIgenVvYmVyc3QgZ2VuYW5udCB3aXJkICJSLTQueC54LnBrZyIgKGluIGRlbiBGb2xpZW4genVyIFZlcmFuc3RhbHR1bmcgd2lyZCBhdWYgZGllIG5ldWVzdGUgVmVyc2lvbnNudW1tZXIgaGluZ2V3aWVzZW4pIHVtIGRpZSBuZXVlc3RlIFZlcnNpb24gdm9uIFIgaGVydW50ZXJ6dWxhZGVuCjMuIFNwZWljaGVybiBTaWUgZGllIC5wa2cgRGF0ZWkgYXVmIGlocmVtIFBDIHVuZCBmw7xocmVuIFNpZSBkaWVzZSBhdXM7IGZvbGdlbiBTaWUgZGVuIEluc3RhbGxhdGlvbnNiZXNjaHJlaWJ1bmdlbgoKTmFjaGRlbSBTaWUgUiBlcmZvbGdyZWljaCBpbnN0YWxsaWVydCBoYWJlbiBzb2xsdGVuIFNpZSBub2NoIFJTdHVkaW8gaW5zdGFsbGllcmVuCgojIEluc3RhbGxhdGlvbiB2b24gUlN0dWRpbwoKMS4gR2VoZW4gU2llIGF1ZiBkaWUgU2VpdGUgdm9uIDxodHRwczovL3d3dy5yc3R1ZGlvLmNvbS9wcm9kdWN0cy9yc3R1ZGlvL2Rvd25sb2FkLz4gdW5kIGtsaWNrZW4gU2llIGF1ZiAiRG93bmxvYWQgUlN0dWRpbyIKMi4gTGFkZW4gU2llIGRpZSAiUlN0dWRpbyBEZXNrdG9wIiBWZXJzaW9uIGhlcnVudGVyLCB3ZWxjaGUgZnJlaSB2ZXJmw7xnYmFyIGlzdCAoT3BlbiBTb3VyY2UgTGljZW5zZSkKMy4gTGFkZW4gU2llIGRpZSBmw7xyIFNpZSBiZW7DtnRpZ3RlIFZlcnNpb24gdm9uIFJTdHVkaW8gaGVydW50ZXIgKFdpbmRvd3MvTWFjL0xpbnV4KQo0LiBGw7xocmVuIFNpZSBkaWUgRGF0ZWkgYXVzIHVuZCBmb2xnZW5kIFNpZSBkZW4gSW5zdGFsbGF0aW9uc2Jlc2NocmVpYnVuZ2VuCgojIEluc3RhbGxhdGlvbiB2b24gUGFrZXRlbiBpbiBSCgpEaWUgdm9uIHVucyBoZXJ1bnRlcmdlbGFkZW5lIFIgVmVyc2lvbiBpc3QgZGFzIEJhc2lzc3lzdGVtLCBhdWYgZGVtIHdpciBudW4gYXVmYmF1ZW4gdW5kIHdlaXRlcmUsIGbDvHIgdW5zZXJlIHNww6R0ZW4gQW5hbHlzZW4gd2ljaHRpZ2UsIFIgUGFrZXRlIGhlcnVudGVybGFkZW4uCkluc2Jlc29uZGVyZSBQYWtldGUgYXVzIGRlbSBbIlRpZHl2ZXJzZSJdKGh0dHBzOi8vd3d3LnRpZHl2ZXJzZS5vcmcvcGFja2FnZXMvKSBzaW5kIGbDvHIgZGllc2UgVm9ybGVzdW5nIHdpY2h0aWcuClVtIGRpZXNlIFBha2V0ZSBoZXJ1bnRlcnp1bGFkZW4gc3RhcnRlbiBTaWUgUlN0dWRpbyB1bmQgZ2ViZW4gZm9sZ2VuZGUgQmVmZWhsZSBlaW46CgpgYGAKaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKYGBgCgpEaWVzZXIgQmVmZWhsIGzDpGQgYWxsZSBQcm9ncmFtbWUsIHdlbGNoZSBpbSAiVGlkeXZlcnNlIiBQYWtldCBlbnRoYWx0ZW4gc2luZCBhdWYgaWhyZW4gUEMgaGVydW50ZXIgdW5kIGluc3RhbGxpZXJ0IGRpZXNlIGluIFJTdHVkaW8uCldlbm4gU2llIG1laHJlcmUgUGFrZXRlIGF1ZiBlaW5tYWwgaGVydW50ZXJsYWRlbiBtw7ZjaHRlbiwgc28ga8O2bm5lbiBTaWUgZGllc2UgaW4gZWluZW0gVmVrdG9yIHp1c2FtbWVuZmFzc2VuLiAKSGllciBlaW4gQmVpc3BpZWw6CgpgYGAKaW5zdGFsbC5wYWNrYWdlcyhjKCJ0aWR5dmVyc2UiLCAiZGV2dG9vbHMiLCAiZ2dwbG90MiIpKQpgYGAKCiMgTGFkZW4gdm9uIFBha2V0ZW4gaW4gUgoKTmFjaCBkZXIgSW5zdGFsbGF0aW9uIHZvbiBQYWtldGVuIHNpbmQgZGllc2UgbmljaHQgYXV0b21hdGlzY2ggaW4gUiB2ZXJmw7xnYmFyLiBXZW5uIFNpZSBSU3R1ZGlvIMO2ZmZuZW4sIGRhbm4gw7ZmZm5ldCBzaWNoIGltbWVyIG51ciBkaWUgQmFzaXN2ZXJzaW9uLiBVbSBiZXN0aW1tdGUgUGFrZXRlIGluIFJTdHVkaW8gKHVuZCBSIGluIGRlciBLb25zb2xlKSB2ZXJmw7xnYmFyIHp1IG1hY2hlbiwgbcO8c3NlbiBTaWUgZGllc2Ugdm9yaGVyIGxhZGVuLiBEaWVzIGdlc2NoaWVodCB3aWUgZm9sZ3Q6CmBgYApsaWJyYXJ5KHRpZHl2ZXJzZSkKYGBgCi0gKkFjaHR1bmcqIGRlciBOYW1lIGRlcyBQYWtldHMgaXN0IGhpZXIgbmljaHQgaW4gQW5mw7xocnVuZ3N6ZWljaGVuIQotIFsiVGlkeXZlcnNlIl0oaHR0cHM6Ly93d3cudGlkeXZlcnNlLm9yZy9wYWNrYWdlcy8pIGlzdCBoaWVyYmVpIGVpbmUgS29sbGVrdGlvbiB2b24gdmVyc2NoaWVkZW5lbiBQYWtldGVuLiBEZXIgQmVmZWhsIHNlYXJjaCgpIGdpYnQgYWxsZSB6dXIgVmVyZsO8Z3VuZyBzdGVoZW5kZW4gUGFrZXRlIGF1cy4KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKQpzZWFyY2goKQpgYGAKCiMgVXBkYXRlIGVpbmVyIGJlcmVpdHMgdm9yaGFuZGVuZW4gUi1WZXJzaW9uIHVuZC9vZGVyIFItU3R1ZGlvIFZlcnNpb24KCkZhbGxzIFNpZSBiZXJlaXRzIFIgdW5kIFItU3R1ZGlvIGluc3RhbGxpZXJ0IGhhYmVuIHNvbGx0ZW4gU2llIGRpZXNlIGF1ZiBkZW4gbmV1ZXN0ZW4gU3RhbmQgYnJpbmdlbi4KClIgYXVmIGRlbiBuZXVlc3RlbiBTdGFuZCBicmluZ2VuIChudXR6ZW4gU2llIGhpZXJmw7xyIGRpcmVrdCBkaWUgUi1Lb25zb2xlIHVuZCBfbmljaHRfIFItU3R1ZGlvKToKVmVyd2VuZGVuIFNpZSBlbnR3ZWRlciBkYXMgUGFrZXQgYGluc3RhbGxyYCBtaXQgZGVyIEZ1bmt0aW9uIGB1cGRhdGVSKClgIG9kZXIgbGFkZW4gU2llIFIgbWFudWVsbCBpbiBkZXIgW25ldWVzdGVuIFZlcnNpb25dKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnLykgaGVydW50ZXIuCgpCaXR0ZSBiZWFjaHRlbiBTaWU6CgotIEZhbGxzIFNpZSBSIGluIGVpbmVyIGZyw7xoZXJlbiBWZXJzaW9uIGluc3RhbGxpZXJ0IGhhYmVuLCBic3B3LiAzLjEuMiwgZGFubiBzaW5kIGFsbGUgaWhyZSBQYWtldGUgYXVjaCB1bnRlciBkaWVzZXIgVmVyc2lvbiBnZXNwZWljaGVydC4gCiAgICAtIEluIGRpZXNlbSBGYWxsIG3DvHNzZW4gU2llIGRpZSBQYWtldGUgZsO8ciBkaWUgVmVyc2lvbiAzLngueCBlYmVuZmFsbHMgbmV1IGhlcnVudGVybGFkZW4gYnNwdy4gYWt0dWFsaXNpZXJlbi4gSW4gZGVuIEZvbGllbiB6dXIgVmVyYW5zdGFsdHVuZyB3aXJkIGF1ZiBkaWUgbmV1ZXN0ZSBWZXJzaW9uc251bW1lciBoaW5nZXdpZXNlbi4KICAgIC0gIFdlbm4gU2llIGRlbiBCZWZlaGwgYHVwZGF0ZVIoKWAgYXVzIGRlbSBgaW5zdGFsbHJgIFBha2V0IHZlcndlbmRlbiB3ZXJkZW4gU2llIGRpcmVrdCBkdXJjaCBkaWVzZW4gQWt0dWFsaXNpZXJ1bmdzcHJvemVzcyBnZWbDvGhydAotIFNpZSBrw7ZubmVuIGplZG9jaCBQYWtldGUgYXVjaCBkdXJjaCBkZW4gQmVmZWhsIGB1cGRhdGUucGFja2FnZXMoKWAgYWt0dWFsaXNpZXJlbgotIFdlbm4gZXMgc2ljaCBiZWkgZGVyIG5ldWVuIFIgVmVyc2lvbiB1bSBlaW4gbWFqb3IgcmVsZWFzZSBnZWhhbmRlbHQgaGF0ICh6LkIuIFVwZ3JhZGUgdm9uIDMueC54IGF1ZiA0LngueCksIGRhbm4gaGlsZnQgaWhuZW4gZGFzIFBha2V0IGBpbnN0YWxscmAgbmljaHQgd2VpdGVyIHVuZCBTaWUgbcO8c3NlbiBkaWUgNC54LnggVmVyc2lvbiBuZXUgdm9uIEhhbmQgaW5zdGFsbGllcmVuLgoKUi1TdHVkaW8gYXVmIGRlbiBuZXVlc3RlbiBTdGFuZCBicmluZ2VuOgoKLSBMYWRlbiBTaWUgZGllIGFrdHVlbGxzdGUgVmVyc2lvbiB2b24gW1ItU3R1ZGlvXShodHRwczovL3d3dy5yc3R1ZGlvLmNvbS9wcm9kdWN0cy9yc3R1ZGlvL2Rvd25sb2FkLykgaGVydW50ZXIgdW5kIGluc3RhbGxpZXJlbiBTaWUgZGllc2UuCgoKIyBJbnN0YWxsYXRpb24gdW5kIGVyc3RlIFNjaHJpdHRlIG1pdCBSVHV0b3IKCkluIGRpZXNlbSBLdXJzIHdlcmRlbiBTaWUgbmViZW4gZGVyIFZvcmxlc3VuZyBkYXMgaW50ZXJhdGl2ZSBUb29sIFtSVHV0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9za3JhbnovUlR1dG9yKSBiZW51dHplbi4KUlR1dG9yIHd1cmRlIHZvbiBQcm9mLiBLcmFueiBoaWVyIGFuIGRlciBVbml2ZXJzaXTDpHQgVWxtIGVudHdpY2tlbHQgdW5kIHdpciBoYWJlbiB6dXNhbW1lbiBzb2dlbmFubnRlIFByb2JsZW0gU2V0cyBrcmVpZXJ0LCB3ZWxjaGUgYXVmIGRpZXNlbiBLdXJzIGFiZ2VzdGltbXQgc2luZCB1bmQgdm9ybGVzdW5nc2JlZ2xlaXRlbmQgdm9uIGlobmVuIGJlYXJiZWl0ZXQgd2VyZGVuIHNvbGxlbi4KCmBSVHV0b3JgIGvDtm5uZW4gU2llIG1pdCBkZW0gZm9sZ2VuZGVuIEJlZmVobCBoZXJ1bnRlcmxhZGVuIHVuZCBkYW5uIG1pdCBgbGlicmFyeShSVHV0b3IpYCBhdWZydWZlbjoKCmBgYApvcHRpb25zKHJlcG9zID0gYyhza3JhbnogPSAnaHR0cHM6Ly9za3Jhbnouci11bml2ZXJzZS5kZXYnLAogICAgQ1JBTiA9ICdodHRwczovL2Nsb3VkLnItcHJvamVjdC5vcmcnKSkKaW5zdGFsbC5wYWNrYWdlcygiUlR1dG9yIikKCmxpYnJhcnkoUlR1dG9yCmBgYAoKRGllIFByb2JsZW0gU2V0cyBzaW5kIGFscyAqKlZvcmxlaXN0dW5nKiogenUgYWJzb2x2aWVyZW4uIApFaW4gZXJmb2xncmVpY2hlciBBYnNjaGx1c3MgYWxsZXIgUHJvYmxlbSBTZXRzIGlzdCBkaWUgVm9yYXVzc2V0enVuZyB6dXIgVGVpbG5haG1lIGFuIGRlbiBQcm9qZWt0ZW4gdW5kIGRlciBtdWx0aXBsZSBDaG9pY2UgS2xhdXN1ciB6dW0gRW5kZSBkZXMgU2VtZXN0ZXJzLiBEdXJjaCBkaWUgUlR1dG9yIFByb2JsZW0gU2V0cyBrw7ZubmVuIFNpZSBkYXMgaW4gZGVyIFZvcmxlc3VuZyBFcmxlcm50ZSBub2NoIGVpbm1hbCBwcmFrdGlzY2ggw7xiZW4gdW5kIHNvIGRpcmVrdCBkZW4gVW1nYW5nIG1pdCBSLCBSU3R1ZGlvIHVuZCBSTWFya2Rvd24gdmVyaW5uZXJsaWNoZW4uCgoqKlZpZWwgU3Bhw58gbWl0IGRlbSBQcm9qZWt0a3VycyBEYXRhIFNjaWVuY2UgdW5kIEJ1c2luZXNzIEFuYWx5dGljcyEqKgo=