Warum eine eigenständige deutschsprachige Einführung in die automatisierte inhaltsanalyse mit R? Die klassische (d.h. manuelle) standardisierte Inhaltsanalyse ist eine der wichtigsten Methoden der empirischen Sozialwissenschaften, und es existieren zahlreiche auflagenstarke Standardwerke, an die dieser knappe Überblick ganz sicher nicht heranreicht, was seinen Detailreichtum, die Tiefe der methodischen Einordnung, und den Grad der praktischen Erprobtheit angeht. Allerdings ist das Angebot an Lehrbüchern bereits deutlich eingeschränkter, wenn man sich der (teil)automatisierten Inhaltsanalyse zuwendet, und eine hinreichend anwendungsnahe Beschreibung sucht, die vor Code nicht zurückschreckt, und die zudem noch frei verfügbar ist. In dieser zugegeben engen Sparte gibt es deutlich weniger Auswahl, und zumeist liegt der Fokus auf einzelnen proprietären Programmen mit grafischer Nutzeroberfläche, die i.d.R. nicht kostenlos verfügbar und wenig leistungsstark sind, und zudem zum Teil relativ schnell veralten.

Programmiersprachen für die Datenwissenschaft, vor allem R und Python, bieten seit einigen Jahren viele neue Möglichkeiten für die Anwendung innerhalb der sozialwissenschaftlichen Forschung – nicht nur im Bereich Statistik. Solche Sprachen sind häufig flexibler, vielseitiger und leistungsstärker als kommerzielle Standardwerkzeuge wie SPSS und MaxQDA, was nicht bedeutet, dass man nicht beides nebeneinander nutzen kann. Aber gerade in den letzten Jahren hat R gewaltig zugelegt, was sein Potenzial für Bereiche wie die Inhaltsanalyse angeht, in denen zuvor eine Kombination aus manuellen Ansätzen und unflexiblen Standardprogrammen vorherrschte. Die Entwicklung von leistungsfähigen R-Paketen speziell für die sozialwissenschaftliche Forschung, wie etwa quanteda, stm und RTextTools, erleichtert die Arbeit mit Inhaltsdaten so stark, dass R nicht mehr hinter dem Hauptkonkurrenten Python zurückstehen muss, wenn es um die effiziente Analyse von Textdaten geht.

Was ist hier überhaupt mit Inhaltsanalyse gemeint? Um Enttäuschungen vorzubeugen: In dieser Einführung wird (derzeit) ausschließlich mit Text gearbeitet, auch wenn mit der klassischen Inhaltsanalyse natürlich auch Bilder und Videoinhalte umtersucht werden. Zwar tut sich in diesen Bereichen in den letzten Jahren sehr viel, Verfahren für die Analyse nicht-textueller Inhalte würden den Rahmen dieser Einführung aber klar sprengen. Ich habe dem Begriff Inhaltsanalyse dennoch bewusst der Vorzug gegenüber verwandten Begriffen wie Textmining gegeben, um klarzustellen, dass für uns das sozialwissenschaftliche Erkenntnisinteresse im Mittelpunkt steht, nicht die Feinheiten einzelner technischer Verfahren. Zugleich verwende ich den Begriff nicht in der relativ engen Lesart, die in der Kommunikations- und Medienwissenschaft häufig vorherrscht, und welche i.d.R. die Klassifikation von Texten durch menschliche Codierer anhand eines entsprechenden Codebuchs meint. Grund hierfür ist einerseits, dass diese Einführung idealerweise für Kommunikations- und Medienwissenschaftler genauso wie für Soziologen und Politikwissenschaftler nützlich ist (und natürlich auch gerne über diese Fachbereiche hinaus verwendet werden kann), und andererseits, dass es in den folgenden neun Kapiteln immer wieder Bezüge zu Ansätzen gibt, die klar aus der Computerlinguistik und der Informatik kommen, und die das sozialwissenschaftliche Methodenrepertoire eindeutig bereichern, ohne unter diese klassisiche Definition von Inhaltsanalyse zu fallen. Zugleich existieren in diesen Disziplinen wichtige Techniken, die für Sozialwissenschaftler vergleichsweise wenig relevant sind, etwa die Wortartbestimmung (Tagging) oder die syntaktische Analyse (Parsing), die wir hier nur am Rand behandeln, auch wenn sie interessante Potenziale bieten, um andere Verfahren zu unterstützen. Auch werden gängige Ansätze und Techniken in technischen Fächern so behandelt, dass Studierende diese idealerweise selbst verbessern oder erweitern können. Dieses Interesse steht in dieser Einführung eindeutig nicht im Vordergrund. Stattdessen geht es bei der computergestützten Analyse innerhalb der computational communication science um die kompetente Anwendung solcher Techniken, mit dem klaren Ziel, Erkenntnisse über gesellschaftliche Phänomene aus Texten zu gewinnen. Deshalb spreche ich ganz bewusst nicht von Text- oder Datamining, sondern von Inhaltsanalyse, auch wenn wir im Verlauf der folgenden neun Kapitel sehr viel mit Begiffen wie Korpus, Wortfrequenz und Textstatistik hantieren, die vermutlich in den meisten klassischen Einführungen in die Inhaltsanalyse fehlen. Dass schließlich trotzdem der Weg über R gewählt, und nicht etwa ein Tool mit graphischer Bedienoberfläche herangezogen wird, ist kein Wiederspruch. Das Vorurteil, Programmieren = Informatik hält sich leider immer noch in den Sozialwissenschaften, gerade unter älteren Semestern, auch wenn sich mit dem Internet radikal verändert hat wie und was man programmiert, und im Zuge dessen auch, wie relevant das Programmieren für die Sozialwissenschaften ist.

Eine frei verfügbare deutschsprachige Einführung in die automatisierte Inhaltsanalyse mit R, die genau diesen anwendungsbezogenen und sozialwissenschaftliche Fokus hat, und die zugleich ganz konkrete Code-Beispiele liefert, statt die Inhaltsanalyse primär abstrakt zu erklären, fehlte in meinen Augen bislang, auch wenn fortgeschrittene Überblicke zu Themen wie der Verknüpfung von maschinellem Lernen und Inhaltsanalyse bereits existieren. Ob das Experiment nun gelungen ist oder nicht, entscheiden wie immer die Leserinnen und Leser. Dabei steht die konkrete Anwendung in den folgenden Kapiteln klar gegenüber der theoretischen Reflexion im Hintergrund. Standardwerke wie die von Rössler, Mayring, Früh oder Merten sollten hier dringend herangezogen werden, um die Inhaltsanalyse inklusive ihrer Entwicklungsgeschichte besser zu verstehen. Wem die zu Beginn vorgestellten Techniken zu sehr von der klassischen Inhaltsanalyse mit manueller Kodierung entfernt sind, lege ich das Kapitel 5 besonders ans Herz, in dem es um das Ableiten von Inhaltsanalyse-Kategorien aus strukturellen Merkmalen (in der Regel sind das Wörter) anhand von Verfahren des überwachten maschinellen Lernens geht. Dort dürfte der Bezug zwischen traditioneller und automatisierter Inhaltsanalyse am deutlichsten werden.

Last but not least: Diese Einführung setzte neben Wissen über die Inhaltsanalyse und etwas sozialwissenschaftlicher Vorbildung auch grundlegende R-Kenntnisse voraus. Einführungen in R gibt es zuhauf, etwa die von Zuckarelli oder von Luhmann. Über ‘normales R’ hinaus werden nahezu alle Pakete aus dem sogenannten tidyverse eingesetzt, allen voran ggplot2 und dplyr. Das Buch R for Data Science von Garrett Grolemund und Hadley Wickham ist hier besonders nützlich, um die Codebeispiele zu verstehen. Und natürlich handelt sich bei dieser Einführung um work in progress – Feedback und Kritik sind mir sehr willkommen!

CoRnelius Puschmann

puschmann@gmail.com / cbpuschmann

Düsseldorf, Januar 2021

LS0tCnRpdGxlOiAiQXV0b21hdGlzaWVydGUgSW5oYWx0c2FuYWx5c2UgbWl0IFIiCmF1dGhvcjogIkNvcm5lbGl1cyBQdXNjaG1hbm4iCnN1YnRpdGxlOiBFaW5sZWl0dW5nCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCjwhLS0tCiogCiogCiogCi0tPgoKV2FydW0gZWluZSBlaWdlbnN0w6RuZGlnZSBkZXV0c2Noc3ByYWNoaWdlIEVpbmbDvGhydW5nIGluIGRpZSBhdXRvbWF0aXNpZXJ0ZSBpbmhhbHRzYW5hbHlzZSBtaXQgUj8gRGllIGtsYXNzaXNjaGUgKGQuaC4gbWFudWVsbGUpIHN0YW5kYXJkaXNpZXJ0ZSBJbmhhbHRzYW5hbHlzZSBpc3QgZWluZSBkZXIgd2ljaHRpZ3N0ZW4gTWV0aG9kZW4gZGVyIGVtcGlyaXNjaGVuIFNvemlhbHdpc3NlbnNjaGFmdGVuLCB1bmQgZXMgZXhpc3RpZXJlbiB6YWhscmVpY2hlIGF1ZmxhZ2Vuc3RhcmtlIFN0YW5kYXJkd2Vya2UsIGFuIGRpZSBkaWVzZXIga25hcHBlIMOcYmVyYmxpY2sgZ2FueiBzaWNoZXIgbmljaHQgaGVyYW5yZWljaHQsIHdhcyBzZWluZW4gRGV0YWlscmVpY2h0dW0sIGRpZSBUaWVmZSBkZXIgbWV0aG9kaXNjaGVuIEVpbm9yZG51bmcsIHVuZCBkZW4gR3JhZCBkZXIgcHJha3Rpc2NoZW4gRXJwcm9idGhlaXQgYW5nZWh0LiBBbGxlcmRpbmdzIGlzdCBkYXMgQW5nZWJvdCBhbiBMZWhyYsO8Y2hlcm4gYmVyZWl0cyBkZXV0bGljaCBlaW5nZXNjaHLDpG5rdGVyLCB3ZW5uIG1hbiBzaWNoIGRlciAodGVpbClhdXRvbWF0aXNpZXJ0ZW4gSW5oYWx0c2FuYWx5c2UgenV3ZW5kZXQsIHVuZCBlaW5lIGhpbnJlaWNoZW5kIGFud2VuZHVuZ3NuYWhlIEJlc2NocmVpYnVuZyBzdWNodCwgZGllIHZvciBDb2RlIG5pY2h0IHp1csO8Y2tzY2hyZWNrdCwgdW5kIGRpZSB6dWRlbSBub2NoIGZyZWkgdmVyZsO8Z2JhciBpc3QuIEluIGRpZXNlciB6dWdlZ2ViZW4gZW5nZW4gU3BhcnRlIGdpYnQgZXMgZGV1dGxpY2ggd2VuaWdlciBBdXN3YWhsLCB1bmQgenVtZWlzdCBsaWVndCBkZXIgRm9rdXMgYXVmIGVpbnplbG5lbiBwcm9wcmlldMOkcmVuIFByb2dyYW1tZW4gbWl0IGdyYWZpc2NoZXIgTnV0emVyb2JlcmZsw6RjaGUsIGRpZSBpLmQuUi4gbmljaHQga29zdGVubG9zIHZlcmbDvGdiYXIgdW5kIHdlbmlnIGxlaXN0dW5nc3N0YXJrIHNpbmQsIHVuZCB6dWRlbSB6dW0gVGVpbCByZWxhdGl2IHNjaG5lbGwgdmVyYWx0ZW4uCgpQcm9ncmFtbWllcnNwcmFjaGVuIGbDvHIgZGllIFtEYXRlbndpc3NlbnNjaGFmdF0oaHR0cHM6Ly9kZS53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9TY2llbmNlKSwgdm9yIGFsbGVtIFIgdW5kIFB5dGhvbiwgYmlldGVuIHNlaXQgZWluaWdlbiBKYWhyZW4gdmllbGUgbmV1ZSBNw7ZnbGljaGtlaXRlbiBmw7xyIGRpZSBBbndlbmR1bmcgaW5uZXJoYWxiIGRlciBzb3ppYWx3aXNzZW5zY2hhZnRsaWNoZW4gRm9yc2NodW5nIC0tIG5pY2h0IG51ciBpbSBCZXJlaWNoIFN0YXRpc3Rpay4gU29sY2hlIFNwcmFjaGVuIHNpbmQgaMOkdWZpZyBmbGV4aWJsZXIsIHZpZWxzZWl0aWdlciB1bmQgbGVpc3R1bmdzc3TDpHJrZXIgYWxzIGtvbW1lcnppZWxsZSBTdGFuZGFyZHdlcmt6ZXVnZSB3aWUgU1BTUyB1bmQgTWF4UURBLCB3YXMgbmljaHQgYmVkZXV0ZXQsIGRhc3MgbWFuIG5pY2h0IGJlaWRlcyBuZWJlbmVpbmFuZGVyIG51dHplbiBrYW5uLiBBYmVyIGdlcmFkZSBpbiBkZW4gbGV0enRlbiBKYWhyZW4gaGF0IFIgZ2V3YWx0aWcgenVnZWxlZ3QsIHdhcyBzZWluIFBvdGVuemlhbCBmw7xyIEJlcmVpY2hlIHdpZSBkaWUgSW5oYWx0c2FuYWx5c2UgYW5nZWh0LCBpbiBkZW5lbiB6dXZvciBlaW5lIEtvbWJpbmF0aW9uIGF1cyBtYW51ZWxsZW4gQW5zw6R0emVuIHVuZCB1bmZsZXhpYmxlbiBTdGFuZGFyZHByb2dyYW1tZW4gdm9yaGVycnNjaHRlLiBEaWUgRW50d2lja2x1bmcgdm9uIGxlaXN0dW5nc2bDpGhpZ2VuIFItUGFrZXRlbiBzcGV6aWVsbCBmw7xyIGRpZSBzb3ppYWx3aXNzZW5zY2hhZnRsaWNoZSBGb3JzY2h1bmcsIHdpZSBldHdhIFtxdWFudGVkYV0oaHR0cHM6Ly9xdWFudGVkYS5pby8pLCBbc3RtXShodHRwczovL3d3dy5zdHJ1Y3R1cmFsdG9waWNtb2RlbC5jb20vKSB1bmQgW1JUZXh0VG9vbHNdKGh0dHA6Ly93d3cucnRleHR0b29scy5jb20vKSwgZXJsZWljaHRlcnQgZGllIEFyYmVpdCBtaXQgSW5oYWx0c2RhdGVuIHNvIHN0YXJrLCBkYXNzIFIgbmljaHQgbWVociBoaW50ZXIgZGVtIEhhdXB0a29ua3VycmVudGVuIFtQeXRob25dKGh0dHBzOi8vZGUud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8oUHJvZ3JhbW1pZXJzcHJhY2hlKSkgenVyw7xja3N0ZWhlbiBtdXNzLCB3ZW5uIGVzIHVtIGRpZSBlZmZpemllbnRlIEFuYWx5c2Ugdm9uIFRleHRkYXRlbiBnZWh0LiAKCldhcyBpc3QgaGllciDDvGJlcmhhdXB0IG1pdCBJbmhhbHRzYW5hbHlzZSBnZW1laW50PyBVbSBFbnR0w6R1c2NodW5nZW4gdm9yenViZXVnZW46IEluIGRpZXNlciBFaW5mw7xocnVuZyB3aXJkIChkZXJ6ZWl0KSBhdXNzY2hsaWXDn2xpY2ggbWl0IFRleHQgZ2VhcmJlaXRldCwgYXVjaCB3ZW5uIG1pdCBkZXIga2xhc3Npc2NoZW4gSW5oYWx0c2FuYWx5c2UgbmF0w7xybGljaCBhdWNoIEJpbGRlciB1bmQgVmlkZW9pbmhhbHRlIHVtdGVyc3VjaHQgd2VyZGVuLiBad2FyIHR1dCBzaWNoIGluIGRpZXNlbiBCZXJlaWNoZW4gaW4gZGVuIGxldHp0ZW4gSmFocmVuIHNlaHIgdmllbCwgVmVyZmFocmVuIGbDvHIgZGllIEFuYWx5c2UgbmljaHQtdGV4dHVlbGxlciBJbmhhbHRlIHfDvHJkZW4gZGVuIFJhaG1lbiBkaWVzZXIgRWluZsO8aHJ1bmcgYWJlciBrbGFyIHNwcmVuZ2VuLiBJY2ggaGFiZSBkZW0gQmVncmlmZiAqSW5oYWx0c2FuYWx5c2UqIGRlbm5vY2ggYmV3dXNzdCBkZXIgVm9yenVnIGdlZ2Vuw7xiZXIgdmVyd2FuZHRlbiBCZWdyaWZmZW4gd2llICpUZXh0bWluaW5nKiBnZWdlYmVuLCB1bSBrbGFyenVzdGVsbGVuLCBkYXNzIGbDvHIgdW5zIGRhcyBzb3ppYWx3aXNzZW5zY2hhZnRsaWNoZSBFcmtlbm50bmlzaW50ZXJlc3NlIGltIE1pdHRlbHB1bmt0IHN0ZWh0LCBuaWNodCBkaWUgRmVpbmhlaXRlbiBlaW56ZWxuZXIgdGVjaG5pc2NoZXIgVmVyZmFocmVuLiBadWdsZWljaCB2ZXJ3ZW5kZSBpY2ggZGVuIEJlZ3JpZmYgbmljaHQgaW4gZGVyIHJlbGF0aXYgZW5nZW4gTGVzYXJ0LCBkaWUgaW4gZGVyIEtvbW11bmlrYXRpb25zLSB1bmQgTWVkaWVud2lzc2Vuc2NoYWZ0IGjDpHVmaWcgdm9yaGVycnNjaHQsIHVuZCB3ZWxjaGUgaS5kLlIuIGRpZSBLbGFzc2lmaWthdGlvbiB2b24gVGV4dGVuIGR1cmNoIG1lbnNjaGxpY2hlIENvZGllcmVyIGFuaGFuZCBlaW5lcyBlbnRzcHJlY2hlbmRlbiBDb2RlYnVjaHMgbWVpbnQuIEdydW5kIGhpZXJmw7xyIGlzdCBlaW5lcnNlaXRzLCBkYXNzIGRpZXNlIEVpbmbDvGhydW5nIGlkZWFsZXJ3ZWlzZSBmw7xyIEtvbW11bmlrYXRpb25zLSB1bmQgTWVkaWVud2lzc2Vuc2NoYWZ0bGVyIGdlbmF1c28gd2llIGbDvHIgU296aW9sb2dlbiB1bmQgUG9saXRpa3dpc3NlbnNjaGFmdGxlciBuw7x0emxpY2ggaXN0ICh1bmQgbmF0w7xybGljaCBhdWNoIGdlcm5lIMO8YmVyIGRpZXNlIEZhY2hiZXJlaWNoZSBoaW5hdXMgdmVyd2VuZGV0IHdlcmRlbiBrYW5uKSwgdW5kIGFuZGVyZXJzZWl0cywgZGFzcyBlcyBpbiBkZW4gZm9sZ2VuZGVuIG5ldW4gS2FwaXRlbG4gaW1tZXIgd2llZGVyIEJlesO8Z2UgenUgQW5zw6R0emVuIGdpYnQsIGRpZSBrbGFyIGF1cyBkZXIgQ29tcHV0ZXJsaW5ndWlzdGlrIHVuZCBkZXIgSW5mb3JtYXRpayBrb21tZW4sIHVuZCBkaWUgZGFzIHNvemlhbHdpc3NlbnNjaGFmdGxpY2hlIE1ldGhvZGVucmVwZXJ0b2lyZSBlaW5kZXV0aWcgYmVyZWljaGVybiwgb2huZSB1bnRlciBkaWVzZSBrbGFzc2lzaWNoZSBEZWZpbml0aW9uIHZvbiBJbmhhbHRzYW5hbHlzZSB6dSBmYWxsZW4uIFp1Z2xlaWNoIGV4aXN0aWVyZW4gaW4gZGllc2VuIERpc3ppcGxpbmVuIHdpY2h0aWdlIFRlY2huaWtlbiwgZGllIGbDvHIgU296aWFsd2lzc2Vuc2NoYWZ0bGVyIHZlcmdsZWljaHN3ZWlzZSB3ZW5pZyByZWxldmFudCBzaW5kLCBldHdhIGRpZSBXb3J0YXJ0YmVzdGltbXVuZyAoVGFnZ2luZykgb2RlciBkaWUgc3ludGFrdGlzY2hlIEFuYWx5c2UgKFBhcnNpbmcpLCBkaWUgd2lyIGhpZXIgbnVyIGFtIFJhbmQgYmVoYW5kZWxuLCBhdWNoIHdlbm4gc2llIGludGVyZXNzYW50ZSBQb3RlbnppYWxlIGJpZXRlbiwgdW0gYW5kZXJlIFZlcmZhaHJlbiB6dSB1bnRlcnN0w7x0emVuLiBBdWNoIHdlcmRlbiBnw6RuZ2lnZSBBbnPDpHR6ZSB1bmQgVGVjaG5pa2VuIGluIHRlY2huaXNjaGVuIEbDpGNoZXJuIHNvIGJlaGFuZGVsdCwgZGFzcyBTdHVkaWVyZW5kZSBkaWVzZSBpZGVhbGVyd2Vpc2Ugc2VsYnN0IHZlcmJlc3Nlcm4gb2RlciBlcndlaXRlcm4ga8O2bm5lbi4gRGllc2VzIEludGVyZXNzZSBzdGVodCBpbiBkaWVzZXIgRWluZsO8aHJ1bmcgZWluZGV1dGlnIG5pY2h0IGltIFZvcmRlcmdydW5kLiBTdGF0dGRlc3NlbiBnZWh0IGVzIGJlaSBkZXIgY29tcHV0ZXJnZXN0w7x0enRlbiBBbmFseXNlIGlubmVyaGFsYiBkZXIgY29tcHV0YXRpb25hbCBjb21tdW5pY2F0aW9uIHNjaWVuY2UgdW0gZGllIGtvbXBldGVudGUgQW53ZW5kdW5nIHNvbGNoZXIgVGVjaG5pa2VuLCBtaXQgZGVtIGtsYXJlbiBaaWVsLCBFcmtlbm50bmlzc2Ugw7xiZXIgZ2VzZWxsc2NoYWZ0bGljaGUgUGjDpG5vbWVuZSBhdXMgVGV4dGVuIHp1IGdld2lubmVuLiBEZXNoYWxiIHNwcmVjaGUgaWNoIGdhbnogYmV3dXNzdCBuaWNodCB2b24gKlRleHQtIG9kZXIgRGF0YW1pbmluZyosIHNvbmRlcm4gdm9uICpJbmhhbHRzYW5hbHlzZSosIGF1Y2ggd2VubiB3aXIgaW0gVmVybGF1ZiBkZXIgZm9sZ2VuZGVuIG5ldW4gS2FwaXRlbCBzZWhyIHZpZWwgbWl0IEJlZ2lmZmVuIHdpZSBLb3JwdXMsIFdvcnRmcmVxdWVueiB1bmQgVGV4dHN0YXRpc3RpayBoYW50aWVyZW4sIGRpZSB2ZXJtdXRsaWNoIGluIGRlbiBtZWlzdGVuIGtsYXNzaXNjaGVuIEVpbmbDvGhydW5nZW4gaW4gZGllIEluaGFsdHNhbmFseXNlIGZlaGxlbi4gRGFzcyBzY2hsaWXDn2xpY2ggdHJvdHpkZW0gZGVyIFdlZyDDvGJlciBSIGdld8OkaGx0LCB1bmQgbmljaHQgZXR3YSBlaW4gVG9vbCBtaXQgZ3JhcGhpc2NoZXIgQmVkaWVub2JlcmZsw6RjaGUgaGVyYW5nZXpvZ2VuIHdpcmQsIGlzdCBrZWluIFdpZWRlcnNwcnVjaC4gRGFzIFZvcnVydGVpbCwgKlByb2dyYW1taWVyZW4gPSBJbmZvcm1hdGlrKiBow6RsdCBzaWNoIGxlaWRlciBpbW1lciBub2NoIGluIGRlbiBTb3ppYWx3aXNzZW5zY2hhZnRlbiwgZ2VyYWRlIHVudGVyIMOkbHRlcmVuIFNlbWVzdGVybiwgYXVjaCB3ZW5uIHNpY2ggbWl0IGRlbSBJbnRlcm5ldCByYWRpa2FsIHZlcsOkbmRlcnQgaGF0IHdpZSB1bmQgd2FzIG1hbiBwcm9ncmFtbWllcnQsIHVuZCBpbSBadWdlIGRlc3NlbiBhdWNoLCBbd2llIHJlbGV2YW50IGRhcyBQcm9ncmFtbWllcmVuIGbDvHIgZGllIFNvemlhbHdpc3NlbnNjaGFmdGVuIGlzdF0oaHR0cHM6Ly9zb3ppb3BvbGlzLmRlL2Jlb2JhY2h0ZW4vd2lzc2Vuc2NoYWZ0L2FydGlrZWwvbGVybnQtcHJvZ3JhbW1pZXJlbi8pLgoKRWluZSBmcmVpIHZlcmbDvGdiYXJlIGRldXRzY2hzcHJhY2hpZ2UgRWluZsO8aHJ1bmcgaW4gZGllIGF1dG9tYXRpc2llcnRlIEluaGFsdHNhbmFseXNlIG1pdCBSLCBkaWUgZ2VuYXUgZGllc2VuIGFud2VuZHVuZ3NiZXpvZ2VuZW4gdW5kIHNvemlhbHdpc3NlbnNjaGFmdGxpY2hlIEZva3VzIGhhdCwgdW5kIGRpZSB6dWdsZWljaCBnYW56IGtvbmtyZXRlIENvZGUtQmVpc3BpZWxlIGxpZWZlcnQsIHN0YXR0IGRpZSBJbmhhbHRzYW5hbHlzZSBwcmltw6RyIGFic3RyYWt0IHp1IGVya2zDpHJlbiwgZmVobHRlIGluIG1laW5lbiBBdWdlbiBiaXNsYW5nLCBhdWNoIHdlbm4gW2ZvcnRnZXNjaHJpdHRlbmUgw5xiZXJibGlja2UgenUgVGhlbWVuIHdpZSBkZXIgVmVya27DvHBmdW5nIHZvbiBtYXNjaGluZWxsZW0gTGVybmVuIHVuZCBJbmhhbHRzYW5hbHlzZV0oaHR0cHM6Ly9uYm4tcmVzb2x2aW5nLm9yZy91cm46bmJuOmRlOmtvYnY6YjE3MC1vcHVzLTQwNSkgYmVyZWl0cyBleGlzdGllcmVuLiBPYiBkYXMgRXhwZXJpbWVudCBudW4gZ2VsdW5nZW4gaXN0IG9kZXIgbmljaHQsIGVudHNjaGVpZGVuIHdpZSBpbW1lciBkaWUgTGVzZXJpbm5lbiB1bmQgTGVzZXIuIERhYmVpIHN0ZWh0IGRpZSBrb25rcmV0ZSBBbndlbmR1bmcgaW4gZGVuIGZvbGdlbmRlbiBLYXBpdGVsbiBrbGFyIGdlZ2Vuw7xiZXIgZGVyIHRoZW9yZXRpc2NoZW4gUmVmbGV4aW9uIGltIEhpbnRlcmdydW5kLiBTdGFuZGFyZHdlcmtlIHdpZSBkaWUgdm9uIFtSw7Zzc2xlcl0oaHR0cHM6Ly9ib29rcy5nb29nbGUuZGUvYm9va3M/aWQ9WnpnOER3QUFRQkFKKSwgW01heXJpbmddKGh0dHBzOi8vYm9va3MuZ29vZ2xlLmRlL2Jvb2tzP2lkPUlkYktyUUVBQ0FBSiksIFtGcsO8aF0oaHR0cHM6Ly9ib29rcy5nb29nbGUuZGUvYm9va3M/aWQ9MVpOM28wcDlFQ0lDKSBvZGVyIFtNZXJ0ZW5dKGh0dHBzOi8vYm9va3MuZ29vZ2xlLmRlL2Jvb2tzP2lkPUEyenpCZ0FBUUJBSikgc29sbHRlbiBoaWVyIGRyaW5nZW5kIGhlcmFuZ2V6b2dlbiB3ZXJkZW4sIHVtIGRpZSBJbmhhbHRzYW5hbHlzZSBpbmtsdXNpdmUgaWhyZXIgRW50d2lja2x1bmdzZ2VzY2hpY2h0ZSBiZXNzZXIgenUgdmVyc3RlaGVuLiBXZW0gZGllIHp1IEJlZ2lubiB2b3JnZXN0ZWxsdGVuIFRlY2huaWtlbiB6dSBzZWhyIHZvbiBkZXIga2xhc3Npc2NoZW4gSW5oYWx0c2FuYWx5c2UgbWl0IG1hbnVlbGxlciBLb2RpZXJ1bmcgZW50ZmVybnQgc2luZCwgbGVnZSBpY2ggZGFzIEthcGl0ZWwgNSBiZXNvbmRlcnMgYW5zIEhlcnosIGluIGRlbSBlcyB1bSBkYXMgQWJsZWl0ZW4gdm9uIEluaGFsdHNhbmFseXNlLUthdGVnb3JpZW4gYXVzIHN0cnVrdHVyZWxsZW4gTWVya21hbGVuIChpbiBkZXIgUmVnZWwgc2luZCBkYXMgV8O2cnRlcikgYW5oYW5kIHZvbiBWZXJmYWhyZW4gZGVzIMO8YmVyd2FjaHRlbiBtYXNjaGluZWxsZW4gTGVybmVucyBnZWh0LiBEb3J0IGTDvHJmdGUgZGVyIEJlenVnIHp3aXNjaGVuIHRyYWRpdGlvbmVsbGVyIHVuZCBhdXRvbWF0aXNpZXJ0ZXIgSW5oYWx0c2FuYWx5c2UgYW0gZGV1dGxpY2hzdGVuIHdlcmRlbi4gCgpMYXN0IGJ1dCBub3QgbGVhc3Q6IERpZXNlIEVpbmbDvGhydW5nIHNldHp0ZSBuZWJlbiBXaXNzZW4gw7xiZXIgZGllIEluaGFsdHNhbmFseXNlIHVuZCBldHdhcyBzb3ppYWx3aXNzZW5zY2hhZnRsaWNoZXIgVm9yYmlsZHVuZyBhdWNoIGdydW5kbGVnZW5kZSBSLUtlbm50bmlzc2Ugdm9yYXVzLiBFaW5mw7xocnVuZ2VuIGluIFIgZ2lidCBlcyB6dWhhdWYsIGV0d2EgZGllIHZvbiBbWnVja2FyZWxsaV0oaHR0cHM6Ly9ib29rcy5nb29nbGUuZGUvYm9va3M/aWQ9WVRrMkR3QUFRQkFKKSBvZGVyIHZvbiBbTHVobWFubl0oaHR0cHM6Ly9ib29rcy5nb29nbGUuZGUvYm9va3M/aWQ9bnB1UHJnRUFDQUFKKS4gw5xiZXIgJ25vcm1hbGVzIFInIGhpbmF1cyB3ZXJkZW4gbmFoZXp1IGFsbGUgUGFrZXRlIGF1cyBkZW0gc29nZW5hbm50ZW4gdGlkeXZlcnNlIGVpbmdlc2V0enQsIGFsbGVuIHZvcmFuIGdncGxvdDIgdW5kIGRwbHlyLiBEYXMgQnVjaCBbUiBmb3IgRGF0YSBTY2llbmNlXShodHRwOi8vcjRkcy5oYWQuY28ubnovKSB2b24gR2FycmV0dCBHcm9sZW11bmQgdW5kIEhhZGxleSBXaWNraGFtIGlzdCBoaWVyIGJlc29uZGVycyBuw7x0emxpY2gsIHVtIGRpZSBDb2RlYmVpc3BpZWxlIHp1IHZlcnN0ZWhlbi4gVW5kIG5hdMO8cmxpY2ggaGFuZGVsdCBzaWNoIGJlaSBkaWVzZXIgRWluZsO8aHJ1bmcgdW0gKndvcmsgaW4gcHJvZ3Jlc3MqIC0tIEZlZWRiYWNrIHVuZCBLcml0aWsgc2luZCBtaXIgc2VociB3aWxsa29tbWVuIQoKQ29SbmVsaXVzIFB1c2NobWFubgoKW3B1c2NobWFubkBnbWFpbC5jb21dKG1haWx0bzpwdXNjaG1hbm5AZ21haWwuY29tKSAvIFtjYnB1c2NobWFubl0oaHR0cDovL3R3aXR0ZXIuY29tL2NicHVzY2htYW5uKQoKRMO8c3NlbGRvcmYsIEphbnVhciAyMDIxCg==