Existential agreement variation in Peninsular Spanish: Twitter vs. COSER

  • Claes (2017) examined existential agreement variation in Peninsular Spanish using data drawn from Twitter and Corpus Oral y Sonoro del Español Rural (COSER)
  • Here we will model type as a function of:
    • Typical.Action.Chain.Pos: Typical role of the referent of the noun in events. Heads refers to typical agents; tails-settings refers to typical patients and circumstantial elements
    • negation: absence vs. presence of negation
    • broad.regions: broad geographical regions
    • tense: verb tense
    • corpus: Twitter vs. COSER corpus
    • characters_before_noun: number of characters between haber and the NP’s head noun
    • long: longitude
    • lat: latitude
  • We have already explored this dataset in Class 2, so we can skip the data exploration phase

1. Loading the data

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIExvYWQgdGhlIHJlYWRyIHBhY2thZ2VcblxuIyBMb2FkIHRoZSBjb3Vyc2UgZGF0YSBmcm9tIHRoZSBjb3V0cnNlIHdlYnNpdGUgdG8gdGhlIG9iamVjdCAnZGF0YVNldCc6XG4jIGh0dHA6Ly93d3cuamVyb2VuY2xhZXMuYmUvc3RhdGlzdGljc19mb3JfbGluZ3Vpc3RpY3MvZGF0YXNldHMvY2xhc3MzX2NsYWVzXzIwMTcuY3N2XG5cbiMgTG9hZCB0aGUgZHBseXIgcGFja2FnZVxuXG4jIENvbnZlcnQgYWxsIGNoYXJhY3RlciB2YWx1ZXMgdG8gZmFjdG9yIHdpdGggbXV0YXRlX2lmXG5cbiMgUHJpbnQgYSAnZ2xpbXBzZScgb2YgdGhlIGRhdGFTZXQiLCJzb2x1dGlvbiI6IiMgTG9hZCB0aGUgcmVhZHIgcGFja2FnZVxubGlicmFyeShyZWFkcilcbiMgTG9hZCB0aGUgY291cnNlIGRhdGEgZnJvbSB0aGUgY291cnNlIHdlYnNpdGUgdG8gdGhlIG9iamVjdCAnZGF0YVNldCc6XG4jIGh0dHA6Ly93d3cuamVyb2VuY2xhZXMuYmUvc3RhdGlzdGljc19mb3JfbGluZ3Vpc3RpY3MvZGF0YXNldHMvY2xhc3MzX2NsYWVzXzIwMTcuY3N2XG5kYXRhU2V0IDwtIHJlYWRfY3N2KFwiaHR0cDovL3d3dy5qZXJvZW5jbGFlcy5iZS9zdGF0aXN0aWNzX2Zvcl9saW5ndWlzdGljcy9kYXRhc2V0cy9jbGFzczNfY2xhZXNfMjAxNy5jc3ZcIilcbiMgTG9hZCB0aGUgZHBseXIgcGFja2FnZVxubGlicmFyeShkcGx5cilcbiMgQ29udmVydCBhbGwgY2hhcmFjdGVyIHZhbHVlcyB0byBmYWN0b3Igd2l0aCBtdXRhdGVfaWZcbmRhdGFTZXQ8LWRhdGFTZXQgJT4lXG4gIG11dGF0ZV9pZihpcy5jaGFyYWN0ZXIsIGFzLmZhY3RvcilcbiMgUHJpbnQgYSAnZ2xpbXBzZScgb2YgdGhlIGRhdGFTZXRcbmdsaW1wc2UoZGF0YVNldCkiLCJzY3QiOiJ0ZXN0X29iamVjdChcImRhdGFTZXRcIilcbnRlc3RfbGlicmFyeV9mdW5jdGlvbihcInJlYWRyXCIsIFwiTWFrZSBzdXJlIHRvIGNhbGwgdGhlICdyZWFkcicgcGFja2FnZSFcIilcbnRlc3RfbGlicmFyeV9mdW5jdGlvbihcImRwbHlyXCIsIFwiTWFrZSBzdXJlIHRvIGNhbGwgdGhlICdkcGx5cicgcGFja2FnZSFcIilcbnRlc3Rfb3V0cHV0X2NvbnRhaW5zKFwiZ2xpbXBzZShkYXRhU2V0KVwiLCAgIGluY29ycmVjdF9tc2cgPSBcIk1ha2Ugc3VyZSB0byBwcmludCBhICdnbGltcHNlJyBvZiB0aGUgZGF0YSFcIilcbnN1Y2Nlc3NfbXNnKFwiR3JlYXQhXCIpIn0=

2. A first model: fitting a simple glm model with a polynomial term for characters_before_noun

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkocmVhZHIpXG5saWJyYXJ5KGRwbHlyKVxuXG5kYXRhU2V0IDwtIHJlYWRfY3N2KFwiaHR0cDovL3d3dy5qZXJvZW5jbGFlcy5iZS9zdGF0aXN0aWNzX2Zvcl9saW5ndWlzdGljcy9kYXRhc2V0cy9jbGFzczNfY2xhZXNfMjAxNy5jc3ZcIikgJT4lIG11dGF0ZV9pZihpcy5jaGFyYWN0ZXIsIGFzLmZhY3RvcikiLCJzYW1wbGUiOiIjIFRoZSBkYXRhLmZyYW1lIGRhdGFTZXQgaXMgYWxyZWFkeSBpbiB5b3VyIHdvcmtzcGFjZVxuXG4jIExvYWQgdGhlIGdncGxvdCBwYWNrYWdlXG5cbiMgRml0IGEgbG9naXN0aWMgZ2xtIG1vZGVsICdtb2QnIHJlZ3Jlc3NpbmcgdHlwZSBvbiBjaGFyYWN0ZXJzX2JlZm9yZV9ub3VuXG5cbiMgQ3JlYXRlIGEgZGF0YS5mcmFtZSAnZGF0Jy4gSW4gdGhlIGNvbHVtbiAnY2hhcmFjdGVyc19iZWZvcmVfbm91bicgeW91IHN0b3JlIGFsbCB2YWx1ZXMgdGhhdCBvY2N1ciBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCB0aGUgbWF4aW11bSBvZiBjaGFyYWN0ZXJzX2JlZm9yZV9ub3VuXG5cbiMgR2VuZXJhdGUgcHJlZGljdGVkIHByb2JhYmlsaXRpZXMgZnJvbSBtb2QgZm9yIHRoZSBkYXRhLmZyYW1lICdkYXQnLiBTdG9yZSB0aGUgcHJvYmFiaWxpdGllcyBpbiB0aGUgY29sdW1uICdwcmVkaWN0ZWQnXG5cbiMgUGxvdCBhIHNjYXR0ZXJwbG90IG9mIHRoZSBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcyBvZiAnbW9kJyB2cyB0aGUgdmFsdWVzIG9mIGNoYXJhY3RlcnNfYmVmb3JlX25vdW4uIEFkZCBhIHNlY29uZC1vcmRlciBwb2x5bm9taWFsIHJlZ3Jlc3Npb24gbGluZVxuXG4jIE5vdyBmaXQgYSBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsIG1vZDIsIGluIHdoaWNoIHlvdSByZWdyZXNzIHR5cGUgb24gdGhlIHNlY29uZC1vcmRlciBwb2x5bm9taWFsIG9mIGNoYXJhY3RlcnNfYmVmb3JlX25vdW4gXG5cbiMgQ29tcGFyZSB0aGUgQUlDIG9mIG1vZDIgdG8gdGhhdCBvZiBtb2RcblxuIyBXaGljaCBtb2RlbCBoYXMgdGhlIGxvd2VzdCBBSUM/IERvZXMgdGhlIEFJQyBzdGF0aXN0aWMgc3VwcG9ydCB0aGF0IHRoZXJlIGlzIG1vcmUgZXZpZGVuY2UgZm9yIHRoZSBzaW1wbGVyIG1vZGVsIHdpdGhvdXQgcG9seW5vbWlhbD8gWW91IHdpbGwgZmluZCB0aGUgY29ycmVjdCBhbnN3ZXIgb24gdGhlIFNvbHV0aW9uIHRhYiIsInNvbHV0aW9uIjoiIyBUaGUgZGF0YS5mcmFtZSBkYXRhU2V0IGlzIGFscmVhZHkgaW4geW91ciB3b3Jrc3BhY2VcblxuIyBMb2FkIHRoZSBnZ3Bsb3QgcGFja2FnZVxubGlicmFyeShnZ3Bsb3QyKVxuXG4jIEZpdCBhIGxvZ2lzdGljIGdsbSBtb2RlbCAnbW9kJyByZWdyZXNzaW5nIHR5cGUgb24gY2hhcmFjdGVyc19iZWZvcmVfbm91blxubW9kIDwtZ2xtKHR5cGUgfiBjaGFyYWN0ZXJzX2JlZm9yZV9ub3VuLCBmYW1pbHk9XCJiaW5vbWlhbFwiLCBkYXRhU2V0KVxuIyBDcmVhdGUgYSBkYXRhLmZyYW1lICdkYXQnLiBJbiB0aGUgY29sdW1uICdjaGFyYWN0ZXJzX2JlZm9yZV9ub3VuJyB5b3Ugc3RvcmUgYWxsIHZhbHVlcyB0aGF0IG9jY3VyIGJldHdlZW4gdGhlIG1pbmltdW0gYW5kIHRoZSBtYXhpbXVtIG9mIGNoYXJhY3RlcnNfYmVmb3JlX25vdW5cbmRhdDwtZGF0YS5mcmFtZShjaGFyYWN0ZXJzX2JlZm9yZV9ub3VuPW1pbihkYXRhU2V0JGNoYXJhY3RlcnNfYmVmb3JlX25vdW4pOm1heChkYXRhU2V0JGNoYXJhY3RlcnNfYmVmb3JlX25vdW4pKVxuIyBHZW5lcmF0ZSBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcyBmcm9tIG1vZCBmb3IgdGhlIGRhdGEuZnJhbWUgJ2RhdCcuIFN0b3JlIHRoZSBwcm9iYWJpbGl0aWVzIGluIHRoZSBjb2x1bW4gJ3ByZWRpY3RlZCdcbmRhdCRwcmVkaWN0ZWQ8LXByZWRpY3QobW9kLCBuZXdkYXRhPWRhdCx0eXBlPVwicmVzcG9uc2VcIilcbiMgUGxvdCBhIHNjYXR0ZXJwbG90IG9mIHRoZSBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcyBvZiAnbW9kJyB2cyB0aGUgdmFsdWVzIG9mIGNoYXJhY3RlcnNfYmVmb3JlX25vdW4gaW4gZGF0LiBBZGQgYSBzZWNvbmQtb3JkZXIgcG9seW5vbWlhbCByZWdyZXNzaW9uIGxpbmVcbmdncGxvdChkYXQsIGFlcyh4PWNoYXJhY3RlcnNfYmVmb3JlX25vdW4sIHk9cHJlZGljdGVkKSkgK1xuICBnZW9tX3BvaW50KCkgKyBcbiAgZ2VvbV9zbW9vdGgobWV0aG9kPVwibG1cIiwgZm9ybXVsYT1cInkgfiBwb2x5KHgsIDIpXCIpXG4jIE5vdyBmaXQgYSBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsIG1vZDIsIGluIHdoaWNoIHlvdSByZWdyZXNzIHR5cGUgb24gdGhlIHNlY29uZC1vcmRlciBwb2x5bm9taWFsIG9mIGNoYXJhY3RlcnNfYmVmb3JlX25vdW4gXG5tb2QyPC1nbG0odHlwZSB+IHBvbHkoY2hhcmFjdGVyc19iZWZvcmVfbm91biwyKSwgZmFtaWx5PVwiYmlub21pYWxcIiwgZGF0YVNldClcbiMgQ29tcGFyZSB0aGUgQUlDIG9mIG1vZDIgdG8gdGhhdCBvZiBtb2RcbkFJQyhtb2QyKS1BSUMobW9kKVxuIyBXaGljaCBtb2RlbCBoYXMgdGhlIGxvd2VzdCBBSUM/IERvZXMgdGhlIEFJQyBzdGF0aXN0aWMgc3VwcG9ydCB0aGF0IHRoZXJlIGlzIG1vcmUgZXZpZGVuY2UgZm9yIHRoZSBzaW1wbGVyIG1vZGVsIHdpdGhvdXQgcG9seW5vbWlhbD9cbiMgLSBUaGUgbW9kZWwgd2l0aG91dCB0aGUgcG9seW5vbWlhbCB0ZXJtIGhhcyB0aGUgbG93ZXN0IEFJQy4gSG93ZXZlciwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG1vZGVscyBkb2VzIG5vdCBhbW91bnQgdG8gdHdvIEFJQyB1bml0cyBmb3Igd2hpY2ggdGhlcmUgaXMgbm90IG1vcmUgZXZpZGVuY2UgaW4gZmF2b3Igb2YgdGhlIHNpbXBsZXIgbW9kZWwgKHRoZSBvbmUgd2l0aG91dCB0aGUgcG9seW5vbWlhbCkgdGhhbiB0aGVyZSBpcyBpbiBmYXZvciBvZiB0aGUgbW9yZSBjb21wbGV4IG1vZGVsICh0aGUgb25lIHdpdGggdGhlIHBvbHlub21pYWwpIiwic2N0IjoidGVzdF9saWJyYXJ5X2Z1bmN0aW9uKFwiZ2dwbG90MlwiLCBcIk1ha2Ugc3VyZSB0byBjYWxsIHRoZSAnZ2dwbG90MicgcGFja2FnZSFcIilcbnRlc3RfZ2dwbG90KDEpXG50ZXN0X291dHB1dF9jb250YWlucyhcIkFJQyhtb2QyKS1BSUMobW9kKVwiLCAgIGluY29ycmVjdF9tc2cgPSBcIk1ha2Ugc3VyZSB0byBjb21wYXJlIHRoZSBBSUMgc3RhdGlzdGljcyBvZiB0aGUgdHdvIG1vZGVscyFcIilcbnN1Y2Nlc3NfbXNnKFwiR3JlYXQhXCIpIn0=

3. The real thing: fitting a GAM

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkocmVhZHIpXG5saWJyYXJ5KGRwbHlyKVxuXG5kYXRhU2V0IDwtIHJlYWRfY3N2KFwiaHR0cDovL3d3dy5qZXJvZW5jbGFlcy5iZS9zdGF0aXN0aWNzX2Zvcl9saW5ndWlzdGljcy9kYXRhc2V0cy9jbGFzczNfY2xhZXNfMjAxNy5jc3ZcIikgJT4lIG11dGF0ZV9pZihpcy5jaGFyYWN0ZXIsIGFzLmZhY3RvcikiLCJzYW1wbGUiOiIjIFRoZSBkYXRhLmZyYW1lIGRhdGFTZXQgaXMgYWxyZWFkeSBpbiB5b3VyIHdvcmtzcGFjZVxuXG4jIExvYWQgdGhlIG1nY3YgcGFja2FnZVxuXG4jIFJlbGV2ZWwgdHlwZSBzbyB0aGF0ICdzaW5ndWxhcicgYmVjb21lcyB0aGUgcmVmZXJlbmNlIGxldmVsXG5cbiMgU3BlY2lmeSBhIGdlbmVyYWxpemVkIGFkZGl0aXZlIGxvZ2lzdGljIG1vZGVsIG1vZCB0aGF0IHJlZ3Jlc3NlcyB0eXBlIG9uIFR5cGljYWwuQWN0aW9uLkNoYWluLlBvcyAgKyBuZWdhdGlvbiArIHRlbnNlICsgIGNvcnB1cyBcbiMgQWRkIHRoZSBmb2xsb3dpbmcgc21vb3RoaW5nIHRlcm1zOiBsb25nLCBsYXRcbiMgV2Ugd29uJ3QgYmUgYWRkaW5nIHJhbmRvbSBpbnRlcmNlcHRzIG9yIHNsb3BlcywgYXMgb3VyIGRhdGFzZXQgaXMgcmF0aGVyIHNtYWxsXG5cbiMgUHJpbnQgYSBzdW1tYXJ5IG9mIG1vZFxuXG4jIFBsb3QgdGhlIGVmZmVjdHMgb2YgZ2VvZ3JhcGh5IG9uICdoYWJlcicgcGx1cmFsaXphdGlvblxuXG4jIExvYWQgdGhlIEhtaXNjIHBhY2thZ2VcblxuIyBDYWxjdWxhdGUgdGhlIGMtaW5kZXggb2YgY29uY29yZGFuY2UgZm9yICBtb2RcblxuIyBXaGF0IGRvIHlvdSBzZWU/IFxuIyAtIEFyZSB0aGUgdHdvIHNtb290aGluZyB0ZXJtcyBzaWduaWZpY2FudD9cbiMgLSBXaGljaCBwYXJhbWV0cmljIHByZWRpY3RvcnMgYXJlIHNpZ25pZmljYW50P1xuIyAtIEluIHdoaWNoIHJlZ2lvbnMgb2YgU3BhaW4gaXMgJ2hhYmVyJyBwbHVyYWxpemF0aW9uIG1vcmUgY29tbW9uPyBcbiMgLSBEb2VzIHRoZSBtb2RlbCBwcm92aWRlIGEgZ29vZCBmaXQgZm9yIHRoZSBkYXRhPyBUYWtlIGEgbG9vayBhdCB0aGUgUi1zcXVhcmVkIGFuZCB0aGUgYy1pbmRleFxuIyBZb3Ugd2lsbCBmaW5kIHRoZSBjb3JyZWN0IGFuc3dlciBvbiB0aGUgU29sdXRpb24gdGFiIiwic29sdXRpb24iOiIjIFRoZSBkYXRhLmZyYW1lIGRhdGFTZXQgaXMgYWxyZWFkeSBpbiB5b3VyIHdvcmtzcGFjZVxuXG4jIExvYWQgdGhlIG1nY3YgcGFja2FnZVxubGlicmFyeShtZ2N2KVxuIyBSZWxldmVsIHR5cGUgc28gdGhhdCAnc2luZ3VsYXInIGJlY29tZXMgdGhlIHJlZmVyZW5jZSBsZXZlbFxuZGF0YVNldCR0eXBlPC1yZWxldmVsKGRhdGFTZXQkdHlwZSwgcmVmPVwic2luZ3VsYXJcIilcbiMgU3BlY2lmeSBhIGdlbmVyYWxpemVkIGFkZGl0aXZlIGxvZ2lzdGljIG1vZGVsIG1vZCB0aGF0IHJlZ3Jlc3NlcyB0eXBlIG9uIFR5cGljYWwuQWN0aW9uLkNoYWluLlBvcyAgKyBuZWdhdGlvbiArIHRlbnNlICsgIGNvcnB1cyBcbiMgQWRkIHRoZSBmb2xsb3dpbmcgc21vb3RoaW5nIHRlcm1zOiBsb25nLCBsYXRcbiMgV2Ugd29uJ3QgYmUgYWRkaW5nIHJhbmRvbSBpbnRlcmNlcHRzIG9yIHNsb3BlcywgYXMgb3VyIGRhdGFzZXQgaXMgcmF0aGVyIHNtYWxsXG5tb2Q8LWJhbSh0eXBlIH4gVHlwaWNhbC5BY3Rpb24uQ2hhaW4uUG9zICArIG5lZ2F0aW9uICsgdGVuc2UgKyAgY29ycHVzICArICBzKGxvbmcsIGxhdCksIGZhbWlseT1cImJpbm9taWFsXCIsIGRhdGFTZXQpXG4jIFByaW50IGEgc3VtbWFyeSBvZiBtb2RcbnN1bW1hcnkobW9kKVxuIyBQbG90IHRoZSBlZmZlY3RzIG9mIGdlb2dyYXBoeSBvbiAnaGFiZXInIHBsdXJhbGl6YXRpb25cbnZpcy5nYW0obW9kLCBwbG90LnR5cGU9XCJjb250b3VyXCIsIGNvbG9yPVwidGVycmFpblwiLCB0b28uZmFyPTAuMDUsIHZpZXc9YyhcImxvbmdcIiwgXCJsYXRcIikpXG4jIExvYWQgdGhlIEhtaXNjIHBhY2thZ2VcbmxpYnJhcnkoSG1pc2MpXG4jIENhbGN1bGF0ZSB0aGUgYy1pbmRleCBvZiBjb25jb3JkYW5jZSBmb3IgIG1vZFxuc29tZXJzMihmaXR0ZWQobW9kKSwgYXMubnVtZXJpYyhkYXRhU2V0JHR5cGUpLTEpXG4jIFdoYXQgZG8geW91IHNlZT8gXG4jIC0gSXMgdGhlIHNtb290aGluZyB0ZXJtIHNpZ25pZmljYW50P1xuIyBZZXMsIGdlb2dyYXBoeSBhcHBlYXJzIHRvIGhhdmUgYSBzaWduaWZpY2FudCBlZmZlY3Qgb24gJ2hhYmVyJyBwbHVyYWxpemF0aW9uXG4jIC0gV2hpY2ggcGFyYW1ldHJpYyBwcmVkaWN0b3JzIGFyZSBzaWduaWZpY2FudD9cbiMgTm9uZSBleGNlcHQgZm9yIG5lZ2F0aW9uLiBUaGlzIGlzIGR1ZSB0byB0aGUgbGltaXRlZCBzYW1wbGUgc2l6ZS4gV2l0aCA1MCBwbHVyYWwgdG9rZW5zIGluIHRoZSBkYXRhIHdlIGFyZSByZWFjaGluZyBvdXIgbGltaXRzIGJ5IGluY2x1ZGluZyA1IHByZWRpY3RvcnMgaW4gdGhlIG1vZGVsIChyZW1lbWJlciB0aGUgMS8xMCBydWxlIG9mIHRodW1iIHdlIGRpc2N1c3NlZCBpbiBUb3BpYyAxMClcbiMgLSBJbiB3aGljaCByZWdpb25zIG9mIFNwYWluIGlzICdoYWJlcicgcGx1cmFsaXphdGlvbiBtb3JlIGNvbW1vbj8gXG4jIFBsdXJhbGl6ZWQgJ2hhYmVyJyBpcyBtb3N0IGNvbW1vbiBpbiB0aGUgcmVnaW9ucyBuZWlnaGJvb3JpbmcgdGhlIE1lZGl0ZXJyYW5lYW4gU2VhLiBJdHMgcHJvYmFiaWxpdHkgZGVjcmVhc2VzIHdoZW4gd2UgbW92ZSBmcm9tIGVhc3QgdG8gd2VzdCBhbmQgZnJvbSBzb3V0aCB0byBub3J0aFxuIyAtIERvZXMgdGhlIG1vZGVsIHByb3ZpZGUgYSBnb29kIGZpdCBmb3IgdGhlIGRhdGE/IFRha2UgYSBsb29rIGF0IHRoZSBSLXNxdWFyZWQgYW5kIHRoZSBjLWluZGV4XG4jIFRoZSByLXNxdWFyZWQgdmFsdWUgb2YgdGhlIG1vZGVsIHJlbWFpbnMgb24gdGhlIGxvdyBlbmQgb2YgdGhpbmdzLCBhcyBpcyBvZnRlbiB0aGUgY2FzZSBpbiBsb2dpc2ljIHJlZ3Jlc3Npb24uIFN0aWxsLCBqdWRnaW5nIGZyb20gdGhlIGMtaW5kZXgsIHRoZSBtb2RlbCBzdGlsbCByZWFjaGVzIGdvb2QgZGVzY3JpbWluYXRpdmUgYWJpbGl0eS4gIiwic2N0IjoidGVzdF9saWJyYXJ5X2Z1bmN0aW9uKFwibWdjdlwiLCBcIk1ha2Ugc3VyZSB0byBjYWxsIHRoZSAnbWdjdicgcGFja2FnZSFcIilcbnRlc3Rfb3V0cHV0X2NvbnRhaW5zKFwic3VtbWFyeShtb2QpXCIsICAgaW5jb3JyZWN0X21zZyA9IFwiTWFrZSBzdXJlIHRvIHByaW50IGEgc3VtbWFyeSBvZiB0aGUgR0FNIG1vZGVsIVwiKVxuc3VjY2Vzc19tc2coXCJHcmVhdCFcIikifQ==

© 2018 Jeroen Claes