You can find all of our workshop information on this site.


When & Where

Date: 16th - 20th September 2019, 08:00-17:30
Location: Pakistan


Set up & Pre-work

To participate in this workshop, you will need to make sure you:


Download R and RStudio

Download the latest versions

Once R and Rstudio are both installed, if you open RStudio and things have gone according to plan then in the console you will see something like the following:

R version 3.6.1 (2019-07-05) -- "Action of the Toes"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

Install Necessary Packages

Open RStudio and paste the following code into your console, then press Enter to run it:

These are the main packages for the workshop. If we require more then we can either install them from the web or from e.g. a USB if we have them.


Learning Objectives

From basic principles to advanced graphics. You will be able to


Organizers


Schedule

Our agenda is below.


DAY 1 (17-9): Introduction

Pre-reading



DAY 2 (18-9): Handling data

Pre-reading



DAY 3 (19-9): Outputs

Pre-reading


LS0tDQp0aXRsZTogIlBha2lzdGFuIFIgd29ya3Nob3AiDQpzaXRlOiBkaXN0aWxsOjpkaXN0aWxsX3dlYnNpdGUNCmRlc2NyaXB0aW9uOiBudWxsDQotLS0NCg0KPGJyPg0KDQo8Y2VudGVyPiFbXShodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zLzUvNWEvRGVyYXdhcl9mb3J0LV9BX3ZpZXdfb2ZfdGhlX2ZvcnRfZnJvbV90aGVfYmFsY29ueV9vZl9hX21vc3F1ZS5qcGcpPC9jZW50ZXI+DQo8YnI+DQoNCiMjIyMgWW91IGNhbiBmaW5kIGFsbCBvZiBvdXIgd29ya3Nob3AgaW5mb3JtYXRpb24gb24gdGhpcyBzaXRlLiAgDQoNCjxicj4NCg0KIyBXaGVuICYgV2hlcmUNCg0KKipEYXRlOioqIDE2dGggLSAyMHRoIFNlcHRlbWJlciAyMDE5LCAwODowMC0xNzozMCAgDQoqKkxvY2F0aW9uOioqIFBha2lzdGFuDQoNCg0KPGJyPg0KDQoNCiMgU2V0IHVwICYgUHJlLXdvcmsNCg0KVG8gcGFydGljaXBhdGUgaW4gdGhpcyB3b3Jrc2hvcCwgeW91IHdpbGwgbmVlZCB0byBtYWtlIHN1cmUgeW91OiAgDQoNCg0KPGJyPg0KDQojIyMgRG93bmxvYWQgUiBhbmQgUlN0dWRpbw0KDQpEb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb25zIA0KDQoqIFIgaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvDQoqIFJTdHVkaW8gaHR0cHM6Ly93d3cucnN0dWRpby5jb20vcHJvZHVjdHMvcnN0dWRpby8jRGVza3RvcA0KDQpPbmNlIFIgYW5kIFJzdHVkaW8gYXJlIGJvdGggaW5zdGFsbGVkLCBpZiB5b3Ugb3BlbiBSU3R1ZGlvIGFuZCB0aGluZ3MgaGF2ZSBnb25lIGFjY29yZGluZyB0byBwbGFuIHRoZW4gaW4gdGhlIGNvbnNvbGUgeW91IHdpbGwgc2VlIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6DQoNCmBgYA0KUiB2ZXJzaW9uIDMuNi4xICgyMDE5LTA3LTA1KSAtLSAiQWN0aW9uIG9mIHRoZSBUb2VzIg0KQ29weXJpZ2h0IChDKSAyMDE5IFRoZSBSIEZvdW5kYXRpb24gZm9yIFN0YXRpc3RpY2FsIENvbXB1dGluZw0KUGxhdGZvcm06IHg4Nl82NC13NjQtbWluZ3czMi94NjQgKDY0LWJpdCkNCg0KUiBpcyBmcmVlIHNvZnR3YXJlIGFuZCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuDQpZb3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4NClR5cGUgJ2xpY2Vuc2UoKScgb3IgJ2xpY2VuY2UoKScgZm9yIGRpc3RyaWJ1dGlvbiBkZXRhaWxzLg0KDQpSIGlzIGEgY29sbGFib3JhdGl2ZSBwcm9qZWN0IHdpdGggbWFueSBjb250cmlidXRvcnMuDQpUeXBlICdjb250cmlidXRvcnMoKScgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kDQonY2l0YXRpb24oKScgb24gaG93IHRvIGNpdGUgUiBvciBSIHBhY2thZ2VzIGluIHB1YmxpY2F0aW9ucy4NCg0KVHlwZSAnZGVtbygpJyBmb3Igc29tZSBkZW1vcywgJ2hlbHAoKScgZm9yIG9uLWxpbmUgaGVscCwgb3INCidoZWxwLnN0YXJ0KCknIGZvciBhbiBIVE1MIGJyb3dzZXIgaW50ZXJmYWNlIHRvIGhlbHAuDQpUeXBlICdxKCknIHRvIHF1aXQgUi4NCmBgYA0KDQojIyMgSW5zdGFsbCBOZWNlc3NhcnkgUGFja2FnZXMNCk9wZW4gUlN0dWRpbyBhbmQgcGFzdGUgdGhlIGZvbGxvd2luZyBjb2RlIGludG8geW91ciBjb25zb2xlLCB0aGVuIHByZXNzIEVudGVyIHRvIHJ1biBpdDoNCg0KDQpgYGB7ciwgZXZhbCA9IEZBTFNFfQ0KIyBEb3dubG9hZCBwYWNrYWdlcyBmcm9tIENSQU4NCg0KaW5zdGFsbC5wYWNrYWdlcyhjKCJkZXZ0b29scyIsICJrbml0ciIsICJtYWdyaXR0ciIsICJzZiIsICJzcCIsICJybWFya2Rvd24iLCAidXNldGhpcyIsICJnZ3Bsb3QyIiwgImRwbHlyIiwgInpvbyIsICJyZXNoYXBlMiIsICJzY2FsZXMiLCAibWFwdG9vbHMiKSkNCg0KYGBgDQoNCg0KVGhlc2UgYXJlIHRoZSBtYWluIHBhY2thZ2VzIGZvciB0aGUgd29ya3Nob3AuDQpJZiB3ZSByZXF1aXJlIG1vcmUgdGhlbiB3ZSBjYW4gZWl0aGVyIGluc3RhbGwgdGhlbSBmcm9tIHRoZSB3ZWIgb3IgZnJvbSBlLmcuIGEgVVNCIGlmIHdlIGhhdmUgdGhlbS4NCiANCg0KPGJyPg0KDQoNCg0KIyBMZWFybmluZyBPYmplY3RpdmVzDQogDQpGcm9tIGJhc2ljIHByaW5jaXBsZXMgdG8gYWR2YW5jZWQgZ3JhcGhpY3MuIFlvdSB3aWxsIGJlIGFibGUgdG8gDQoNCiogUmVhZC1pbiwgZXhwbG9yZSBhbmQgd3JpdGUgZGF0YSBzZXRzDQoqIENsZWFuIG1lc3N5IGRhdGEgYW5kIHJlYXJyYW5nZSBmb3IgYW5hbHlzaXMNCiogUGxvdCBhbmQgbWFwIGRpZmZlcmVudCB0eXBlcyBvZiBkYXRhDQoNCg0KPGJyPg0KDQojIE9yZ2FuaXplcnMNCg0KKiBOYXRoYW4gR3JlZW4NCiogRGF2aWQgSm9yZ2Vuc2VuDQoNCg0KPGJyPg0KDQojIFNjaGVkdWxlDQoNCk91ciBhZ2VuZGEgaXMgYmVsb3cuIA0KDQo8YnI+DQoNCiMjIyMgREFZIDEgKDE3LTkpOiBJbnRyb2R1Y3Rpb24NCg0KUHJlLXJlYWRpbmcNCg0KLSBgciB4ZnVuOjplbWJlZF9maWxlKCdUaGllbWUtMjAxOC1TaWduaWZpY2FuY2UucGRmJywgdGV4dCA9ICJSIGdlbmVyYXRpb24sIFNpZ25pZmljYW5jZSBNYWdhemluZSIpYA0KDQo8YnI+DQogICANCiogV29ya3Nob3AgaW50cm9kdWN0aW9uIDk6MTUtMTA6MDANCiAgKyBzbGlkZXM6DQogICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDEvOS0xNS0tMTAtMDBfd29ya3Nob3AgaW50by93b3Jrc2hvcC1pbnRyby5wZGYnKSlgDQoqIEludHJvZHVjdGlvbiB0byBSIDEwOjE1LTEyOjMwDQogICsgaGlzdG9yeSBhbmQgbW90aXZhdGlvbg0KICArIFIgZm9yIGRhdGEgYW5hbHlzaXMNCiAgKyBSU3R1ZGlvIEdVSQ0KICArIENvbnNvbGUsIHNjcmlwdHMNCiAgKyBzbGlkZXM6DQogICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDEvMTAtMTUtLTEyLTMwX2ludHJvIHRvIFIvaW50cm8gUlN0dWRpby5wZGYnKSlgDQogICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDEvMTAtMTUtLTEyLTMwX2ludHJvIHRvIFIvUl9vdmVydmlld19zbGlkZXMucGRmJykpYA0KICArIGV4ZXJjaXNlczoNCiAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgnZXhlcmNpc2VzL2RheSAxLzEwLTE1LS0xMi0zMF9pbnRybyB0byBSL2V4ZXJjaXNlcy0xX2ludHJvLVJfdmVjdG9ycy5wZGYnKSwgdGV4dCA9ICJzdGFydGVyIGV4ZXJjaXNlcyIpYA0KICAgICsgYHIgeGZ1bjo6ZW1iZWRfZmlsZShoZXJlOjpoZXJlKCdleGVyY2lzZXMvZGF5IDEvMTAtMTUtLTEyLTMwX2ludHJvIHRvIFIvZXhlcmNpc2VzLTFfaW50cm8tUl90eXBlcy5wZGYnKSwgdGV4dCA9ICJ0eXBlcyBleGVyY2lzZXMgcXVlc3Rpb25zIilgDQogICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ2V4ZXJjaXNlcy9kYXkgMS8xMC0xNS0tMTItMzBfaW50cm8gdG8gUi9leGVyY2lzZXMtMV9pbnRyby1SX3R5cGVzX3Jvb3QucGRmJyksIHRleHQgPSAidHlwZXMgZXhlcmNpc2VzIHNvbHV0aW9ucyIpYA0KICAgICsgYHIgeGZ1bjo6ZW1iZWRfZmlsZShoZXJlOjpoZXJlKCdleGVyY2lzZXMvZGF5IDEvMTAtMTUtLTEyLTMwX2ludHJvIHRvIFIvZXhlcmNpc2VzLTFfaW50cm8tUl9NX0Vfcm9vdC5wZGYnKSwgdGV4dCA9ICJNICYgRSBkYXRhIGludHJvIGV4ZXJjaXNlcyIpYA0KICANCiogQmFzaWMgdHlwZXMgMTM6MzAtMTU6MDANCiAgKyBiYXNlDQogICsgZGF0ZXMgYW5kIHRpbWVzDQogICsgc2xpZGVzOg0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDEvMTMtMzAtLTE1LTAwX3R5cGVzL3R5cGVzX2xvb3BzLnBkZicpKWANCiAgKyBleGVyY2lzZXM6DQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgnZXhlcmNpc2VzL2RheSAxLzEzLTMwLS0xNS0wMF90eXBlcy9leGVyY2lzZXMtMV9pbnRyby1SX2xpc3RzLnBkZicpKWANCiogRGF0YSB0cmFuc2Zvcm1hdGlvbiAxNTozMC0xNzowMA0KICArIE1pc3NpbmcgdmFsdWVzDQogICsgSW5kZXhpbmcsIHNvcnRpbmcsIGZpbHRlcmluZw0KICAgICsgc2xpZGVzOg0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDEvMTUtMzAtLTE3LTAwX05BcyBhbmQgaW5kZXhpbmcvU3Vic2V0dGluZy1sb2dpY2Fscy5wZGYnKSlgDQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgncHJlc2VudGF0aW9ucy9kYXkgMS8xNS0zMC0tMTctMDBfTkFzIGFuZCBpbmRleGluZy9NaXNzaW5nIGRhdGEsIGZhY3RvcnMgYW5kIGRhdGVzIGluIFIucGRmJykpYA0KICAgICsgZXhlcmNpc2VzOg0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ2V4ZXJjaXNlcy9kYXkgMS8xNS0zMC0tMTctMDBfTkFzIGFuZCBpbmRleGluZy9leGVyY2lzZXMtMV9pbnRyby1SX2luZGV4LnBkZicpKWANCiAgICAgICsgYHIgeGZ1bjo6ZW1iZWRfZmlsZShoZXJlOjpoZXJlKCdleGVyY2lzZXMvZGF5IDEvMTUtMzAtLTE3LTAwX05BcyBhbmQgaW5kZXhpbmcvZXhlcmNpc2VzLTFfaW50cm8tUl9sb2dpY2Fscy5wZGYnKSlgDQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgnZXhlcmNpc2VzL2RheSAxLzE1LTMwLS0xNy0wMF9OQXMgYW5kIGluZGV4aW5nL2V4ZXJjaXNlcy0xX2ludHJvLVJfTkFzLnBkZicpKWANCiAgICANCg0KPGJyPg0KDQojIyMjIERBWSAyICgxOC05KTogSGFuZGxpbmcgZGF0YQ0KDQpQcmUtcmVhZGluZw0KDQotIGByIHhmdW46OmVtYmVkX2ZpbGUoJ3Y1OWkxMC5wZGYnLCB0ZXh0ID0gIlRpZHkgRGF0YSwgV2lja2hhbSIpYA0KLSBgciB4ZnVuOjplbWJlZF9maWxlKCdwZWVyai1wcmVwcmludHMtMzE4My5wZGYnLCB0ZXh0ID0gIkRhdGEgb3JnYW5pemF0aW9uIGluIHNwcmVhZHNoZWV0cywgQnJvbWFuIilgDQoNCjxicj4NCg0KKiBEYXkgMiByZWNhcCA5OjMwLTEwOjAwDQoqIFByZS1wcm9jZXNzaW5nL211bmdpbmcgMTA6MTUtMTI6MTUNCiAgKyBiYXNlOiBqb2luLCBtZXJnZSwgYWdncmVnYXRlDQogICAgKyBzbGlkZXMNCiAgICAgICsgYHIgeGZ1bjo6ZW1iZWRfZmlsZShoZXJlOjpoZXJlKCdwcmVzZW50YXRpb25zL2RheSAyLzEwLTE1LS0xMi0xNV9tZXJnZSBqb2luIGRwbHlyL2pvaW5zIGFuZCBtZWx0cy5wZGYnKSlgDQogICAgKyBleGVyY2lzZXM6DQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgnZXhlcmNpc2VzL2RheSAyLzEwLTE1LS0xMi0xNV9tZXJnZSBqb2luIGRwbHlyL2V4ZXJjaXNlc19qb2luLWFuZC1tZWx0LnBkZicpKWANCiAgICAgICsgYHIgeGZ1bjo6ZW1iZWRfZmlsZShoZXJlOjpoZXJlKCdleGVyY2lzZXMvZGF5IDIvMTAtMTUtLTEyLTE1X21lcmdlIGpvaW4gZHBseXIvZXhlcmNpc2VzLTFfaW50cm8tUl9iaW5kaW5nLnBkZicpKWANCiogQmFzaXMgcGxvdHMgYW5kIHRhYmxlcyAxMzoxNS0xNTozMA0KICArIHNsaWRlczoNCiAgICAgICsgYHIgeGZ1bjo6ZW1iZWRfZmlsZShoZXJlOjpoZXJlKCdwcmVzZW50YXRpb25zL2RheSAyLzEzLTE1LS0xNS0zMF9iYXNpYyBwbG90cyB0YWJsZXMvaW50cm8gTSZFIHBsb3RzLnBkZicpKWANCiAgKyBleGVyY2lzZXM6DQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgnZXhlcmNpc2VzL2RheSAyLzEzLTE1LS0xNS0zMF9iYXNpYyBwbG90cyB0YWJsZXMvZXhlcmNpc2VzLTNfcGxvdHNfY29udGVudC5wZGYnKSwgdGV4dCA9ICJiYXNlIFIgcGxvdHMgcXVlc3Rpb25zIilgDQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgnZXhlcmNpc2VzL2RheSAyLzEzLTE1LS0xNS0zMF9iYXNpYyBwbG90cyB0YWJsZXMvZXhlcmNpc2VzLTNfcGxvdHNfcm9vdC5wZGYnKSwgdGV4dCA9ICJiYXNlIFIgcGxvdHMgYW5zd2VycyIpYA0KKiByZWFkaW5nIGFuZCBjbGVhbmluZyBkYXRhIDE1OjQ1LTE3OjAwDQogICsgc2xpZGVzOg0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDIvMTUtNDUtLTE3LTAwX3JlYWRpbmcgY2xlYW5pbmcvaW50cm8tdG8tZGF0YS1jbGVhbmluZy5wZGYnKSlgDQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgncHJlc2VudGF0aW9ucy9kYXkgMi8xNS00NS0tMTctMDBfcmVhZGluZyBjbGVhbmluZy9yZWFkLWRhdGEucGRmJykpYA0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDIvMTUtNDUtLTE3LTAwX3JlYWRpbmcgY2xlYW5pbmcvRGF0YSB3cmFuZ2xpbmctZHBseXIucGRmJykpYA0KICANCg0KPGJyPg0KDQojIyMjIERBWSAzICgxOS05KTogT3V0cHV0cw0KDQpQcmUtcmVhZGluZw0KDQotIGByIHhmdW46OmVtYmVkX2ZpbGUoJ2plYWJlaGF2MDAwODgtMDE0MC5wZGYnLCB0ZXh0ID0gIkhvdyB0byBsb29rIGF0IGRhdGE6IEEgcmV2aWV3IG9mIEpvaG4gVy4gVHVrZXkncyBleHBsb3JhdG9yeSBkYXRhIGFuYWx5c2lzLCBDaHVyY2giKWANCi0gYHIgeGZ1bjo6ZW1iZWRfZmlsZSgnMTkwMy4wOTUxMi5wZGYnLCB0ZXh0ID0gIkVmZmVjdGl2ZSB2aXN1YWwgY29tbXVuaWNhdGlvbiBmb3IgdGhlIHF1YW50aXRhdGl2ZSBzY2llbnRpc3QsIFZhbmRlbWV1bGVicm9lY2tlIilgDQoNCjxicj4NCg0KKiBEYXkgMyByZWNhcCA5OjMwLTEwOjAwDQoqIFBsb3R0aW5nIDEwOjE1LTEyOjMwDQogICsgZ2dwbG90Mg0KICAgICsgc2xpZGVzOg0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ3ByZXNlbnRhdGlvbnMvZGF5IDMvMTAtMTUtLTEyLTMwX2dncGxvdC9wbG90cyBnZ3Bsb3QucGRmJykpYA0KICAgICsgZXhlcmNpc2VzOg0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ2V4ZXJjaXNlcy9kYXkgMy8xMC0xNS0tMTItMzBfZ2dwbG90L2V4ZXJjaXNlcy1nZ3Bsb3QucGRmJyksIHRleHQgPSAiaW50cm8gZ2dwbG90IHF1ZXN0aW9ucyIpYA0KICAgICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ2V4ZXJjaXNlcy9kYXkgMy8xMC0xNS0tMTItMzBfZ2dwbG90L2V4ZXJjaXNlcy1nZ3Bsb3Rfc29sdXRpb25zLnBkZicpLCB0ZXh0ID0gImludHJvIGdncGxvdCBhbnN3ZXJzIilgDQogICAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgnZXhlcmNpc2VzL2RheSAzLzEwLTE1LS0xMi0zMF9nZ3Bsb3QvTV9FLXBsb3RzLWluLWdncGxvdDIucGRmJyksIHRleHQgPSAiTSAmIEUgZGF0YSBnZ3Bsb3RzIilgDQogICAgICANCiogTWFwcyAxMzozMC0xNDo0NQ0KICArIHNsaWRlczoNCiAgICArIGByIHhmdW46OmVtYmVkX2ZpbGUoaGVyZTo6aGVyZSgncHJlc2VudGF0aW9ucy9kYXkgMy8xMy0zMC0tMTQtNDVfbWFwcy9NYXBwaW5nIHNwYXRpYWwgZGF0YS5wZGYnKSlgDQogICsgZXhlcmNpc2VzOg0KICAgICsgYHIgeGZ1bjo6ZW1iZWRfZmlsZShoZXJlOjpoZXJlKCdleGVyY2lzZXMvZGF5IDMvMTMtMzAtLTE0LTQ1X21hcHMvU3BhdGlhbF9kYXRhLmh0bWwnKSlgDQogICAgKyBgciB4ZnVuOjplbWJlZF9maWxlKGhlcmU6OmhlcmUoJ2V4ZXJjaXNlcy9kYXkgMy8xMy0zMC0tMTQtNDVfbWFwcy9TcGF0aWFsX2RhdGFfYW5zd2Vycy5odG1sJykpYA0KKiBQdXR0aW5nIGl0IGFsbCB0b2dldGhlciAxNDowMC0xNjowMA0KICArIHBsb3RzIGZvciBwcmVzZW50YXRpb25zDQogICsgbWFwcyBmb3IgcHJlc2VudGF0aW9ucw0K