Links to good Free Software ressources I know of

Here you can find some links of software you can use for free1 and might be useful for you also. Some might need a system administrator to install them for you, others you can install alone.

You do not need to install those software - But if you think they might ease your work, do so. They might provide functionalities you need BUT do not yet have yet.

Feel free to suggest adding some several software to this list.

1 Office software & Work

  • LibreOffice suite can be viewed as the equivalent to microsoft office suite. It includes among other software equivalent to word, excel and powerpoint, and allow to open and save documents into the same file formats as Microsoft office.

  • Freeplane . Freeplane is an amazing free mind-mapping software, its very good if you need something visual to organize your thoughts. It might be a bit un-intuitive to start with, but if you watch one or two videos on youtube to help you start, this will easy. I still use in a simple way, which is largely good enough to help me think.

  • Obsidian is a note taking software, knowledge database and some more. The notes are written in Markdown, you can look at your R files, tag notes by themes etc. It is a bit like an alternative to onenote, but the functionalities can be extended by plugins. Its my definitive favorite, because it allows me to write in markdown, and to link notes together. There are many videos on youtube showing you how people can use it. (Its my number one working tool, but maybe a bit scary for you to start with). You can also take notes as drawings (like I used during the course). The plugging is called excalidraw. Obsidian can be used in a simple way to manage projects and task, take notes, write ideas osv… . There is a mobile app to allow notes taking on the go. If you need to sync your notes, its possible to have a sync. via google drive (its what I am doing).

  • Xodo Annotation and reading of pdfs. Maybe a bit limited functionality for the free version on windows, but excellent as android app.

2 Portable software

Portable Apps have a lot of software (apps) that can be installed on a USB key and used on any computer without requiring administrative rights on the computer. The complete list of current software can be found here. To install those, you either first install a menu and then the apps, OR you install directly the app, but then you will have to go to the folder where you installed it to launch it, by clicking on the file that was created during installation and that ends with .exe.

Installing those software on an USB key (it might require to be big enough) can allow you to have access to the same programs on different computers, if you have to change between computers often, this might be an idea to use a usb key, BUT it will be slower than installing on the PC.

Usually, software version that are available as portable app, are not at the latest version, because it takes time to make a software to a portable software. This is normal.

Here are the Instructions for installation with the menu.

Here is a list of those that I really find very useful:

  1. Libre office - portable version.

  2. Drawio a workflow and diagram software. Allow to launch the app directly from your computer, I am unsure though if it can be used when offline. I use it online, through this webpage : Drawio.

  3. Dia a simple tool that allow to make workflow and diagrams. Great to organize your thoughts. Will work without Internet access.

  4. Inkscape This is a vector graphic image editor. This software is usually a linux software, but works on windows as a portable app. This is similar in a way to adobe illustrator. (This is a most useful software for making illustrations). There is some learning curve, but there are several good guides and video online to help you how to use it.

  5. Gimp. A photo editor. This software is usually a linux software, but works on windows as a portable app. This is similar in a way to adobe photoshop. It is not so easy to use as a beginner, but there are several guides and video online to help you how to use it. (I rarely need to use this one, but some people might need it).

  6. irfanview is a little software to allow you to view images saved in different foramts with your computer.

  7. There are several tools that allow you manipulate pdf files, eg. arranging, rotating, viewing and taking notes. I use often pdf arranger, one of my colleague uses Sumatra PDF.

  8. Zotero portable is the portable version of the free (and fantastic) library manager Zotero. Zotero can be linked to Rstudio, and allows you to insert your bibliography in Markdown documents, so you can really make a document that is ready to be submitted to a journal. It also comes with the ability to take notes (also possible to take them in Markdown if you want to train) for each paper you have in your reference manager, and comes with a minimal but practical pdf annotator. For me, it beats Mendeley and Endnote by far, but thats maybe a matter of taste.

  9. Calibre portable alow not only management but creation of ebooks from different formats … which allows you to make most things readeable on the go (eg. when you transfer those to your cell phone also, then it can be very practical). This is the portable version, the normal version can be found here.

  10. Thunderbird portable is an email client (you can download and then write answers to emails when you do not have access to internet, and then send them when you again gain access to internet). This is the portable version of the software, the normal version can found here.

  11. 7zip portable is a compression decompression utility. This is the portable version of the software. (In case you do not always have this one on windows).

You have also have very good alternatives to windows file manager (more practical). There is also File syncing that can be useful to make backup of your files (eg. Free File Sync) and tools for files comparison and merging (which is nice when you have different version of the same file and do not know which one to use, I did not use those then but it might be).

3 Others

  1. Bitwarden is a password manager. It can be used for free to manage your passwords and fills them directly eg. using an app extension on your webrowser (Firefox and Google chrome). There is a phone app also (at least android).
    The paying version has a bit more option, but the free is as secure as the non-paying to store passwords. This allows you to use more complicated passwords and not reusing the same password to log into different sites. For the passwords stored on Bitwarden to be save, you need however to use a difficult password to login (at least 14 long, with letters, numbers, upper and lower letters, and special characters) AND a double identification system (2FA two factor authentication activated). There might be better ones, but I know this one works for me.

4 Useful online software/tools ressources

  • Excalidraw is a drawing tool that can be used online, and shared between people, to be used as a white board (eg. during online meetings). It works better though if you have access to a mouse (instead of the keypad). The drawing can be saved (eg. .png).

  • Drawio is a drawing tool that can be used online.

  • Easy file conversion between file formats: Madelains’ link.


  1. for education & research, but not for anything commercial usually, see the licences terms of each respective software for more information.↩︎

LS0tDQp0aXRsZTogImByIHBhcmFtcyR0aXRsZWAiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiDQphdXRob3I6IEV2ZSBaZXlsIEZpc2tlYmVjaw0KcGFyYW1zOg0KICB0aXRsZTogIkxpbmtzIHRvIGdvb2QgRnJlZSBTb2Z0d2FyZSByZXNzb3VyY2VzIEkga25vdyBvZiIgDQogIHByb2plY3RfcGF0aDogImByIGhlcmU6OmhlcmUoKWAiDQogIA0Ka25pdDogKGZ1bmN0aW9uKGlucHV0RmlsZSwgZW5jb2RpbmcpIHsNCiAgcm1hcmtkb3duOjpyZW5kZXIoaW5wdXRGaWxlLCBlbmNvZGluZyA9IGVuY29kaW5nLCBvdXRwdXRfZGlyID0gIi4uLy4uL2RvY3MiKSB9KQ0KICAgIA0Kb3V0cHV0OiANCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246DQogICAgICBjc3M6IC4uL3N0eWxlLmNzcw0KICAgICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICAgIHRvY19kZXB0aDogNA0KICAgICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICAgIGF1dGhvcjogcGFyYW1zJGF1dGhvcg0KICAgICAgaGlnaGxpZ2h0OiBlc3ByZXNzbw0KICAgICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlDQogIA0KZWRpdG9yX29wdGlvbnM6IA0KICBtYXJrZG93bjogDQogICAgd3JhcDogNzINCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQoNCkhlcmUgeW91IGNhbiBmaW5kIHNvbWUgbGlua3Mgb2Ygc29mdHdhcmUgeW91IGNhbiB1c2UgZm9yIGZyZWVbXjFdIGFuZCBtaWdodCBiZQ0KdXNlZnVsIGZvciB5b3UgYWxzby4gU29tZSBtaWdodCBuZWVkIGEgc3lzdGVtIGFkbWluaXN0cmF0b3IgdG8gaW5zdGFsbCB0aGVtIA0KZm9yIHlvdSwgb3RoZXJzIHlvdSBjYW4gaW5zdGFsbCBhbG9uZS4gDQoNCioqWW91IGRvIG5vdCBuZWVkIHRvIGluc3RhbGwgdGhvc2Ugc29mdHdhcmUgLSBCdXQgaWYgeW91IHRoaW5rIHRoZXkgbWlnaHQgZWFzZSANCnlvdXIgd29yaywgZG8gc28uIFRoZXkgbWlnaHQgcHJvdmlkZSBmdW5jdGlvbmFsaXRpZXMgeW91IG5lZWQgQlVUIGRvIG5vdA0KeWV0IGhhdmUgeWV0KiouDQoNCkZlZWwgZnJlZSB0byBzdWdnZXN0IGFkZGluZyBzb21lIHNldmVyYWwgc29mdHdhcmUgdG8gdGhpcyBsaXN0Lg0KDQpbXjFdOiBmb3IgZWR1Y2F0aW9uICYgcmVzZWFyY2gsIGJ1dCBub3QgZm9yIGFueXRoaW5nIGNvbW1lcmNpYWwgdXN1YWxseSwgc2VlIA0KdGhlIGxpY2VuY2VzIHRlcm1zIG9mIGVhY2ggcmVzcGVjdGl2ZSBzb2Z0d2FyZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gDQoNCiMgT2ZmaWNlIHNvZnR3YXJlICYgV29yaw0KDQotIFtMaWJyZU9mZmljZSBzdWl0ZV0oaHR0cHM6Ly93d3cubGlicmVvZmZpY2Uub3JnL2Rvd25sb2FkL2Rvd25sb2FkLWxpYnJlb2ZmaWNlLykNCmNhbiBiZSB2aWV3ZWQgYXMgdGhlIGVxdWl2YWxlbnQgdG8gbWljcm9zb2Z0IG9mZmljZSBzdWl0ZS4gSXQgaW5jbHVkZXMgYW1vbmcgb3RoZXINCnNvZnR3YXJlIGVxdWl2YWxlbnQgdG8gd29yZCwgZXhjZWwgYW5kIHBvd2VycG9pbnQsIGFuZCBhbGxvdyB0byBvcGVuIGFuZCBzYXZlIA0KZG9jdW1lbnRzIGludG8gdGhlIHNhbWUgZmlsZSBmb3JtYXRzIGFzIE1pY3Jvc29mdCBvZmZpY2UuIA0KDQotIFtGcmVlcGxhbmVdKGh0dHBzOi8vZG9jcy5mcmVlcGxhbmUub3JnLykgLiBGcmVlcGxhbmUgaXMgYW4gYW1hemluZyBmcmVlIG1pbmQtbWFwcGluZyBzb2Z0d2FyZSwgaXRzIA0KdmVyeSBnb29kIGlmIHlvdSBuZWVkIHNvbWV0aGluZyB2aXN1YWwgdG8gb3JnYW5pemUgeW91ciB0aG91Z2h0cy4gSXQgbWlnaHQNCmJlIGEgYml0IHVuLWludHVpdGl2ZSB0byBzdGFydCB3aXRoLCBidXQgaWYgeW91IHdhdGNoIG9uZSBvciB0d28gdmlkZW9zIG9uIA0KeW91dHViZSB0byBoZWxwIHlvdSBzdGFydCwgdGhpcyB3aWxsIGVhc3kuIEkgc3RpbGwgdXNlIGluIGEgc2ltcGxlIHdheSwgd2hpY2gNCmlzIGxhcmdlbHkgZ29vZCBlbm91Z2ggdG8gaGVscCBtZSB0aGluay4NCg0KLSBbT2JzaWRpYW5dKGh0dHBzOi8vb2JzaWRpYW4ubWQvKSBpcyBhIG5vdGUgdGFraW5nIHNvZnR3YXJlLCBrbm93bGVkZ2UgZGF0YWJhc2UNCmFuZCBzb21lIG1vcmUuIFRoZSBub3RlcyBhcmUgd3JpdHRlbiBpbiBNYXJrZG93biwgeW91IGNhbiBsb29rIGF0IHlvdXIgUiBmaWxlcywNCnRhZyBub3RlcyBieSB0aGVtZXMgZXRjLiBJdCBpcyBhIGJpdCBsaWtlIGFuIGFsdGVybmF0aXZlIHRvIG9uZW5vdGUsIGJ1dCB0aGUNCmZ1bmN0aW9uYWxpdGllcyBjYW4gYmUgZXh0ZW5kZWQgYnkgcGx1Z2lucy4gSXRzIG15IGRlZmluaXRpdmUgZmF2b3JpdGUsIGJlY2F1c2UNCml0IGFsbG93cyBtZSB0byB3cml0ZSBpbiBtYXJrZG93biwgYW5kIHRvIGxpbmsgbm90ZXMgdG9nZXRoZXIuIFRoZXJlIGFyZSBtYW55IA0KdmlkZW9zIG9uIHlvdXR1YmUgc2hvd2luZyB5b3UgaG93IHBlb3BsZSBjYW4gdXNlIGl0LiAoSXRzIG15IG51bWJlciBvbmUgd29ya2luZyANCnRvb2wsIGJ1dCBtYXliZSBhIGJpdCBzY2FyeSBmb3IgeW91IHRvIHN0YXJ0IHdpdGgpLiBZb3UgY2FuIGFsc28gdGFrZSANCm5vdGVzIGFzIGRyYXdpbmdzIChsaWtlIEkgdXNlZCBkdXJpbmcgdGhlIGNvdXJzZSkuIFRoZSBwbHVnZ2luZyBpcyBjYWxsZWQNCmBleGNhbGlkcmF3YC4gT2JzaWRpYW4gY2FuIGJlIHVzZWQgaW4gYSBzaW1wbGUgd2F5IHRvIG1hbmFnZSBwcm9qZWN0cyBhbmQgdGFzaywNCnRha2Ugbm90ZXMsIHdyaXRlIGlkZWFzIG9zdi4uLiAuIFRoZXJlIGlzIGEgbW9iaWxlIGFwcCB0byBhbGxvdyBub3RlcyB0YWtpbmcgb24NCnRoZSBnby4gSWYgeW91IG5lZWQgdG8gc3luYyB5b3VyIG5vdGVzLCBpdHMgcG9zc2libGUgdG8gaGF2ZSBhIHN5bmMuIHZpYSBnb29nbGUNCmRyaXZlIChpdHMgd2hhdCBJIGFtIGRvaW5nKS4NCg0KLSBbWG9kb10oaHR0cHM6Ly94b2RvLmNvbS8pIEFubm90YXRpb24gYW5kIHJlYWRpbmcgb2YgcGRmcy4gTWF5YmUgYSBiaXQgbGltaXRlZCBmdW5jdGlvbmFsaXR5IGZvciB0aGUgZnJlZSB2ZXJzaW9uIG9uIHdpbmRvd3MsIGJ1dCBleGNlbGxlbnQgYXMgYW5kcm9pZCBhcHAuDQoNCiMgUG9ydGFibGUgc29mdHdhcmUNCg0KDQpbUG9ydGFibGUgQXBwc10oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tLykgaGF2ZSBhIGxvdCBvZiBzb2Z0d2FyZSAoYGFwcHNgKSB0aGF0IGNhbiBiZQ0KaW5zdGFsbGVkIG9uIGEgVVNCIGtleSBhbmQgdXNlZCBvbiBhbnkgY29tcHV0ZXIgd2l0aG91dCByZXF1aXJpbmcgYWRtaW5pc3RyYXRpdmUNCnJpZ2h0cyBvbiB0aGUgY29tcHV0ZXIuIFRoZSBjb21wbGV0ZSBsaXN0IG9mIGN1cnJlbnQgc29mdHdhcmUgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL3BvcnRhYmxlYXBwcy5jb20vYXBwcykuIFRvIGluc3RhbGwgdGhvc2UsIHlvdSBlaXRoZXIgZmlyc3QgaW5zdGFsbA0KYSBtZW51IGFuZCB0aGVuIHRoZSBhcHBzLCBPUiB5b3UgaW5zdGFsbCBkaXJlY3RseSB0aGUgYXBwLCBidXQgdGhlbiB5b3Ugd2lsbCBoYXZlDQp0byBnbyB0byB0aGUgZm9sZGVyIHdoZXJlIHlvdSBpbnN0YWxsZWQgaXQgdG8gbGF1bmNoIGl0LCBieSBjbGlja2luZyBvbiB0aGUgZmlsZQ0KdGhhdCB3YXMgY3JlYXRlZCBkdXJpbmcgaW5zdGFsbGF0aW9uIGFuZCB0aGF0IGVuZHMgd2l0aCBgLmV4ZWAuIA0KDQpJbnN0YWxsaW5nIHRob3NlIHNvZnR3YXJlIG9uIGFuIFVTQiBrZXkgKGl0IG1pZ2h0IHJlcXVpcmUgdG8gYmUgYmlnIGVub3VnaCkgY2FuDQphbGxvdyB5b3UgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIHNhbWUgcHJvZ3JhbXMgb24gZGlmZmVyZW50IGNvbXB1dGVycywgaWYgeW91DQpoYXZlIHRvIGNoYW5nZSBiZXR3ZWVuIGNvbXB1dGVycyBvZnRlbiwgdGhpcyBtaWdodCBiZSBhbiBpZGVhIHRvIHVzZSBhIHVzYiBrZXksIA0KQlVUIGl0IHdpbGwgYmUgc2xvd2VyIHRoYW4gaW5zdGFsbGluZyBvbiB0aGUgUEMuIA0KDQpVc3VhbGx5LCBzb2Z0d2FyZSB2ZXJzaW9uIHRoYXQgYXJlIGF2YWlsYWJsZSBhcyBwb3J0YWJsZSBhcHAsIGFyZSBub3QgYXQgdGhlDQpsYXRlc3QgdmVyc2lvbiwgYmVjYXVzZSBpdCB0YWtlcyB0aW1lIHRvIG1ha2UgYSBzb2Z0d2FyZSB0byBhIHBvcnRhYmxlIHNvZnR3YXJlLg0KVGhpcyBpcyBub3JtYWwuDQoNCkhlcmUgYXJlIHRoZSBbSW5zdHJ1Y3Rpb25zIGZvciBpbnN0YWxsYXRpb24gd2l0aCB0aGUgbWVudV0oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tL2Rvd25sb2FkL3N1Y2Nlc3MpLg0KDQpIZXJlIGlzIGEgbGlzdCBvZiB0aG9zZSB0aGF0IEkgcmVhbGx5IGZpbmQgdmVyeSB1c2VmdWw6IA0KDQoxLiBbTGlicmUgb2ZmaWNlIC0gcG9ydGFibGUgdmVyc2lvbl0oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tL2FwcHMvb2ZmaWNlL2xpYnJlb2ZmaWNlX3BvcnRhYmxlKS4NCg0KMS4gW0RyYXdpb10oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tL2FwcHMvZ3JhcGhpY3NfcGljdHVyZXMvZHJhd2lvLXBvcnRhYmxlKSANCmEgd29ya2Zsb3cgYW5kIGRpYWdyYW0gc29mdHdhcmUuIEFsbG93IHRvIGxhdW5jaCB0aGUgYXBwIGRpcmVjdGx5IGZyb20geW91ciANCmNvbXB1dGVyLCBJIGFtIHVuc3VyZSB0aG91Z2ggaWYgaXQgY2FuIGJlIHVzZWQgd2hlbiBvZmZsaW5lLiBJIHVzZSBpdCBvbmxpbmUsIA0KdGhyb3VnaCB0aGlzIHdlYnBhZ2UgOiBbRHJhd2lvXShodHRwczovL2FwcC5kaWFncmFtcy5uZXQvKS4NCg0KMS4gW0RpYV0oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tL2FwcHMvb2ZmaWNlL2RpYV9wb3J0YWJsZSkgYSBzaW1wbGUgdG9vbCB0aGF0IA0KYWxsb3cgdG8gbWFrZSB3b3JrZmxvdyBhbmQgZGlhZ3JhbXMuIEdyZWF0IHRvIG9yZ2FuaXplIHlvdXIgdGhvdWdodHMuIFdpbGwgd29yaw0Kd2l0aG91dCBJbnRlcm5ldCBhY2Nlc3MuIA0KDQoxLiBbSW5rc2NhcGVdKGh0dHBzOi8vcG9ydGFibGVhcHBzLmNvbS9hcHBzL2dyYXBoaWNzX3BpY3R1cmVzL2lua3NjYXBlX3BvcnRhYmxlKQ0KVGhpcyBpcyBhIHZlY3RvciBncmFwaGljIGltYWdlIGVkaXRvci4gVGhpcyBzb2Z0d2FyZSBpcyB1c3VhbGx5IGEgbGludXggc29mdHdhcmUsIA0KYnV0IHdvcmtzIG9uIHdpbmRvd3MgYXMgYSBwb3J0YWJsZSBhcHAuIFRoaXMgaXMgc2ltaWxhciBpbiBhIHdheSB0byANCl9hZG9iZSBpbGx1c3RyYXRvcl8uIChUaGlzIGlzIGEgbW9zdCB1c2VmdWwgc29mdHdhcmUgZm9yIG1ha2luZyBpbGx1c3RyYXRpb25zKS4gDQpUaGVyZSBpcyBzb21lIGxlYXJuaW5nIGN1cnZlLCBidXQgdGhlcmUgYXJlIHNldmVyYWwgZ29vZCBndWlkZXMgYW5kIHZpZGVvIG9ubGluZSB0bw0KaGVscCB5b3UgaG93IHRvIHVzZSBpdC4NCg0KMS4gW0dpbXBdKGh0dHBzOi8vcG9ydGFibGVhcHBzLmNvbS9hcHBzL2dyYXBoaWNzX3BpY3R1cmVzL2dpbXBfcG9ydGFibGUpLiBBIHBob3RvDQplZGl0b3IuIFRoaXMgc29mdHdhcmUgaXMgdXN1YWxseSBhIGxpbnV4IHNvZnR3YXJlLCBidXQgd29ya3Mgb24gd2luZG93cyBhcyBhIHBvcnRhYmxlDQphcHAuIFRoaXMgaXMgc2ltaWxhciBpbiBhIHdheSB0byBfYWRvYmUgcGhvdG9zaG9wXy4gSXQgaXMgbm90IHNvIGVhc3kgdG8gdXNlIGFzIGENCmJlZ2lubmVyLCBidXQgdGhlcmUgYXJlIHNldmVyYWwgZ3VpZGVzIGFuZCB2aWRlbyBvbmxpbmUgdG8gaGVscCB5b3UgaG93IHRvIHVzZSBpdC4NCihJIHJhcmVseSBuZWVkIHRvIHVzZSB0aGlzIG9uZSwgYnV0IHNvbWUgcGVvcGxlIG1pZ2h0IG5lZWQgaXQpLg0KDQoxLiBbaXJmYW52aWV3XShodHRwczovL3BvcnRhYmxlYXBwcy5jb20vYXBwcy9ncmFwaGljc19waWN0dXJlcy9pcmZhbnZpZXdfcG9ydGFibGUpIA0KaXMgYSBsaXR0bGUgc29mdHdhcmUgdG8gYWxsb3cgeW91IHRvIHZpZXcgaW1hZ2VzIHNhdmVkIGluIGRpZmZlcmVudCBmb3JhbXRzDQp3aXRoIHlvdXIgY29tcHV0ZXIuIA0KDQoxLiBUaGVyZSBhcmUgc2V2ZXJhbCB0b29scyB0aGF0IGFsbG93IHlvdSBtYW5pcHVsYXRlIHBkZiBmaWxlcywgZWcuIGFycmFuZ2luZywgDQpyb3RhdGluZywgdmlld2luZyBhbmQgdGFraW5nIG5vdGVzLiBJIHVzZSBvZnRlbiBbcGRmIGFycmFuZ2VyXShodHRwczovL3BvcnRhYmxlYXBwcy5jb20vYXBwcy9vZmZpY2UvcGRmLWFycmFuZ2VyLXBvcnRhYmxlKSwgb25lIG9mIG15DQpjb2xsZWFndWUgdXNlcyBbU3VtYXRyYSBQREZdKGh0dHBzOi8vcG9ydGFibGVhcHBzLmNvbS9hcHBzL29mZmljZS9zdW1hdHJhX3BkZl9wb3J0YWJsZSkuDQoNCg0KMS4gW1pvdGVybyBwb3J0YWJsZV0oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tL2FwcHMvb2ZmaWNlL3pvdGVyby1wb3J0YWJsZSkgaXMgdGhlIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhlIGZyZWUgKGFuZCBmYW50YXN0aWMpIGxpYnJhcnkNCm1hbmFnZXIgW1pvdGVyb10oaHR0cHM6Ly93d3cuem90ZXJvLm9yZy8pLiBab3Rlcm8gY2FuIGJlIGxpbmtlZCB0byBSc3R1ZGlvLCBhbmQNCmFsbG93cyB5b3UgdG8gaW5zZXJ0IHlvdXIgYmlibGlvZ3JhcGh5IGluIE1hcmtkb3duIGRvY3VtZW50cywgc28geW91IGNhbiByZWFsbHkNCm1ha2UgYSBkb2N1bWVudCB0aGF0IGlzIHJlYWR5IHRvIGJlIHN1Ym1pdHRlZCB0byBhIGpvdXJuYWwuIEl0IGFsc28gY29tZXMgd2l0aA0KdGhlIGFiaWxpdHkgdG8gdGFrZSBub3RlcyAoYWxzbyBwb3NzaWJsZSB0byB0YWtlIHRoZW0gaW4gTWFya2Rvd24gaWYgeW91IHdhbnQgDQp0byB0cmFpbikgZm9yIGVhY2ggcGFwZXIgeW91IGhhdmUgaW4geW91ciByZWZlcmVuY2UgbWFuYWdlciwgYW5kDQpjb21lcyB3aXRoIGEgbWluaW1hbCBidXQgcHJhY3RpY2FsIHBkZiBhbm5vdGF0b3IuIEZvciBtZSwgaXQgYmVhdHMgTWVuZGVsZXkgYW5kDQpFbmRub3RlIGJ5IGZhciwgYnV0IHRoYXRzIG1heWJlIGEgbWF0dGVyIG9mIHRhc3RlLiANCg0KMS4gW0NhbGlicmUgcG9ydGFibGVdKGh0dHBzOi8vcG9ydGFibGVhcHBzLmNvbS9hcHBzL29mZmljZS9jYWxpYnJlLXBvcnRhYmxlKSBhbG93DQpub3Qgb25seSBtYW5hZ2VtZW50IGJ1dCBjcmVhdGlvbiBvZiBlYm9va3MgZnJvbSBkaWZmZXJlbnQgZm9ybWF0cyAuLi4gd2hpY2ggYWxsb3dzDQp5b3UgdG8gbWFrZSBtb3N0IHRoaW5ncyByZWFkZWFibGUgb24gdGhlIGdvIChlZy4gd2hlbiB5b3UgdHJhbnNmZXIgdGhvc2UgdG8geW91cg0KY2VsbCBwaG9uZSBhbHNvLCB0aGVuIGl0IGNhbiBiZSB2ZXJ5IHByYWN0aWNhbCkuIFRoaXMgaXMgdGhlIHBvcnRhYmxlIHZlcnNpb24sIA0KdGhlIG5vcm1hbCB2ZXJzaW9uIGNhbiBiZSBmb3VuZCBbaGVyZV0oaHR0cHM6Ly9jYWxpYnJlLWVib29rLmNvbS8pLg0KDQoxLiBbVGh1bmRlcmJpcmQgcG9ydGFibGVdKGh0dHBzOi8vcG9ydGFibGVhcHBzLmNvbS9hcHBzL2ludGVybmV0L3RodW5kZXJiaXJkX3BvcnRhYmxlKQ0KaXMgYW4gZW1haWwgY2xpZW50ICh5b3UgY2FuIGRvd25sb2FkIGFuZCB0aGVuIHdyaXRlIGFuc3dlcnMgdG8gZW1haWxzIHdoZW4geW91DQpkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gaW50ZXJuZXQsIGFuZCB0aGVuIHNlbmQgdGhlbSB3aGVuIHlvdSBhZ2FpbiBnYWluIGFjY2VzcyB0bw0KaW50ZXJuZXQpLiBUaGlzIGlzIHRoZSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZSwgdGhlIG5vcm1hbCB2ZXJzaW9uIGNhbg0KZm91bmQgW2hlcmVdKGh0dHBzOi8vd3d3LnRodW5kZXJiaXJkLm5ldC9lbi1VUy8pLg0KDQoxLiBbN3ppcCBwb3J0YWJsZV0oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tL2FwcHMvdXRpbGl0aWVzLzctemlwX3BvcnRhYmxlKSBpcyBhDQpjb21wcmVzc2lvbiBkZWNvbXByZXNzaW9uIHV0aWxpdHkuIFRoaXMgaXMgdGhlIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLg0KKEluIGNhc2UgeW91IGRvIG5vdCBhbHdheXMgaGF2ZSB0aGlzIG9uZSBvbiB3aW5kb3dzKS4NCg0KDQpZb3UgaGF2ZSBhbHNvIGhhdmUgdmVyeSBnb29kIGFsdGVybmF0aXZlcyB0byB3aW5kb3dzIGZpbGUgbWFuYWdlciANCihtb3JlIHByYWN0aWNhbCkuIFRoZXJlIGlzIGFsc28gRmlsZSBzeW5jaW5nIHRoYXQgY2FuIGJlIHVzZWZ1bCB0byBtYWtlDQpiYWNrdXAgb2YgeW91ciBmaWxlcyAoZWcuIFtGcmVlIEZpbGUgU3luY10oaHR0cHM6Ly9wb3J0YWJsZWFwcHMuY29tL2FwcHMvdXRpbGl0aWVzL2ZyZWVmaWxlc3luYy1wb3J0YWJsZSkpIGFuZCB0b29scw0KZm9yIGZpbGVzIGNvbXBhcmlzb24gYW5kIG1lcmdpbmcgKHdoaWNoIGlzIG5pY2Ugd2hlbiB5b3UgaGF2ZSBkaWZmZXJlbnQgdmVyc2lvbg0Kb2YgdGhlIHNhbWUgZmlsZSBhbmQgZG8gbm90IGtub3cgd2hpY2ggb25lIHRvIHVzZSwgSSBkaWQgbm90IHVzZSB0aG9zZSB0aGVuDQpidXQgaXQgbWlnaHQgYmUpLg0KDQojIE90aGVycyANCg0KMS4gW0JpdHdhcmRlbl0oaHR0cHM6Ly9iaXR3YXJkZW4uY29tLykgaXMgYSBwYXNzd29yZCBtYW5hZ2VyLiANCkl0IGNhbiBiZSB1c2VkIGZvciBmcmVlIHRvIG1hbmFnZSB5b3VyIA0KcGFzc3dvcmRzIGFuZCBmaWxscyB0aGVtIGRpcmVjdGx5IGVnLiB1c2luZyBhbiBhcHAgZXh0ZW5zaW9uIG9uIHlvdXIgd2Vicm93c2VyDQooRmlyZWZveCBhbmQgR29vZ2xlIGNocm9tZSkuIFRoZXJlIGlzIGEgcGhvbmUgYXBwIGFsc28gKGF0IGxlYXN0IGFuZHJvaWQpLiAgDQpUaGUgcGF5aW5nIHZlcnNpb24gaGFzIGEgYml0IG1vcmUgb3B0aW9uLCBidXQgdGhlIGZyZWUgaXMgYXMgc2VjdXJlIGFzIHRoZSBub24tcGF5aW5nDQp0byBzdG9yZSBwYXNzd29yZHMuIFRoaXMgYWxsb3dzIHlvdSB0byB1c2UgbW9yZSBjb21wbGljYXRlZCBwYXNzd29yZHMgYW5kIG5vdCByZXVzaW5nDQp0aGUgc2FtZSBwYXNzd29yZCB0byBsb2cgaW50byBkaWZmZXJlbnQgc2l0ZXMuIEZvciB0aGUgcGFzc3dvcmRzIHN0b3JlZCBvbiBCaXR3YXJkZW4NCnRvIGJlIHNhdmUsIHlvdSBuZWVkIGhvd2V2ZXIgdG8gdXNlIGEgZGlmZmljdWx0IHBhc3N3b3JkIHRvIGxvZ2luIChhdCBsZWFzdCAxNCANCmxvbmcsIHdpdGggbGV0dGVycywgbnVtYmVycywgdXBwZXIgYW5kIGxvd2VyIGxldHRlcnMsIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMpIEFORA0KYSBkb3VibGUgaWRlbnRpZmljYXRpb24gc3lzdGVtICgyRkEgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbiBhY3RpdmF0ZWQpLiBUaGVyZSANCm1pZ2h0IGJlIGJldHRlciBvbmVzLCBidXQgSSBrbm93IHRoaXMgb25lIHdvcmtzIGZvciBtZS4gDQoNCiMgVXNlZnVsIG9ubGluZSBzb2Z0d2FyZS90b29scyByZXNzb3VyY2VzDQoNCi0gW0V4Y2FsaWRyYXddKGh0dHBzOi8vZXhjYWxpZHJhdy5jb20vKSBpcyBhIGRyYXdpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIG9ubGluZSwgDQphbmQgc2hhcmVkIGJldHdlZW4gcGVvcGxlLCB0byBiZSB1c2VkIGFzIGEgd2hpdGUgYm9hcmQgKGVnLiBkdXJpbmcgb25saW5lIG1lZXRpbmdzKS4NCkl0IHdvcmtzIGJldHRlciB0aG91Z2ggaWYgeW91IGhhdmUgYWNjZXNzIHRvIGEgbW91c2UgKGluc3RlYWQgb2YgdGhlIGtleXBhZCkuIFRoZQ0KZHJhd2luZyBjYW4gYmUgc2F2ZWQgKGVnLiAucG5nKS4NCg0KLSBbRHJhd2lvXShodHRwczovL2FwcC5kaWFncmFtcy5uZXQvKSBpcyBhIGRyYXdpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIG9ubGluZS4NCg0KLSBbRWFzeSBmaWxlIGNvbnZlcnNpb24gYmV0d2VlbiBmaWxlIGZvcm1hdHNdKGh0dHBzOi8vY29udmVydGlvLmNvLyk6IE1hZGVsYWlucycgbGluay4NCg0KDQoNCg==