workflowr  
 
Last updated:  2025-05-15
Checks:    2
  0
Knit directory: 
DigitalResearchSkillsNetwork/ 
 
This reproducible R Markdown 
analysis was created with workflowr  (version
1.7.1). The Checks  tab describes the reproducibility checks
that were applied when the results were created. The Past
versions  tab lists the development history.
 
 
Great! Since the R Markdown file has been committed to the Git
repository, you know the exact version of the code that produced these
results.
 
 
 
Great! You are using Git for version control. Tracking code development
and connecting the code version to the results is critical for
reproducibility.
The results in this page were generated with repository version
b102ce1 .
See the Past versions  tab to see a history of the changes made
to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for
the analysis have been committed to Git prior to generating the results
(you can use wflow_publish or
wflow_git_commit). workflowr only checks the R Markdown
file, but you know if there are other scripts or data files that it
depends on. Below is the status of the Git repository when the results
were generated:
Ignored files:
    Ignored:    .DS_Store
    Ignored:    .Rhistory
    Ignored:    analysis/.DS_Store
    Ignored:    analysis/.RData
    Ignored:    analysis/.Rhistory
    Ignored:    analysis/adit/.DS_Store
    Ignored:    plots/
    Ignored:    raw/
Untracked files:
    Untracked:  analysis/adit/0_content management.csv
    Untracked:  analysis/x202504_Workshop.Rmd
Unstaged changes:
    Deleted:    analysis/202504_Workshop.Rmd
    Modified:   analysis/_site.yml
    Modified:   workflow.R
 
Note that any generated files, e.g. HTML, png, CSS, etc., are not
included in this status report because it is ok for generated content to
have uncommitted changes.
 
 
 
 
 
 
These are the previous versions of the repository in which changes were
made to the R Markdown (analysis/0_resources.Rmd) and HTML
(docs/0_resources.html) files. If you’ve configured a
remote Git repository (see ?wflow_git_remote), click on the
hyperlinks in the table below to view the files as they were in that
past version.
File
 
Version
 
Author
 
Date
 
Message
 
 
 
Rmd
 
b102ce1 
 
DrThomasOneil
 
2025-05-15
 
wflow_publish(files)
 
 
html
 
fb553e5 
 
DrThomasOneil
 
2025-05-14
 
Build site.
 
 
html
 
cff7923 
 
DrThomasOneil
 
2025-05-07
 
Build site.
 
 
Rmd
 
ff95f8f 
 
DrThomasOneil
 
2025-05-07
 
wflow_publish(files)
 
 
html
 
16a9613 
 
DrThomasOneil
 
2025-04-30
 
Build site.
 
 
html
 
862d6b6 
 
DrThomasOneil
 
2025-04-29
 
Build site.
 
 
html
 
938818e 
 
DrThomasOneil
 
2025-04-14
 
Build site.
 
 
html
 
ed690e6 
 
DrThomasOneil
 
2025-04-14
 
Build site.
 
 
html
 
cb886ef 
 
DrThomasOneil
 
2025-04-10
 
Build site.
 
 
html
 
f6c0433 
 
YuchenLi
 
2025-04-09
 
Build site.
 
 
html
 
8d78b0f 
 
YuchenLi
 
2025-04-09
 
Build site.
 
 
html
 
7421f69 
 
DrThomasOneil
 
2025-04-08
 
Build site.
 
 
html
 
f2d3385 
 
DrThomasOneil
 
2025-03-24
 
update
 
 
html
 
517dcf9 
 
DrThomasOneil
 
2025-03-24
 
Build site.
 
 
html
 
6a4432b 
 
DrThomasOneil
 
2025-03-24
 
Build site.
 
 
html
 
1f218f3 
 
DrThomasOneil
 
2025-03-24
 
Build site.
 
 
html
 
dca90e9 
 
DrThomasOneil
 
2025-03-24
 
Build site.
 
 
html
 
1d1c076 
 
DrThomasOneil
 
2025-03-24
 
Build site.
 
 
html
 
956ba9b 
 
DrThomasOneil
 
2025-03-24
 
Build site.
 
 
Rmd
 
6b72e34 
 
DrThomasOneil
 
2025-03-24
 
wflow_publish(c("analysis/*.Rmd"))
 
 
html
 
d600337 
 
DrThomasOneil
 
2025-03-18
 
Build site.
 
 
html
 
b537f69 
 
DrThomasOneil
 
2025-03-18
 
Build site.
 
 
html
 
b7982e9 
 
DrThomasOneil
 
2025-03-16
 
Build site.
 
 
html
 
fc5dd81 
 
DrThomasOneil
 
2025-03-16
 
Build site.
 
 
html
 
8e1c1a3 
 
DrThomasOneil
 
2025-03-16
 
Build site.
 
 
html
 
36dc5fc 
 
DrThomasOneil
 
2025-03-03
 
Build site.
 
 
html
 
49bb28c 
 
DrThomasOneil
 
2025-03-03
 
Build site.
 
 
html
 
8258922 
 
DrThomasOneil
 
2025-03-03
 
Build site.
 
 
html
 
71646a5 
 
DrThomasOneil
 
2025-02-27
 
Build site.
 
 
Rmd
 
c05aafe 
 
DrThomasOneil
 
2025-02-27
 
wflow_publish(c("analysis/*.Rmd"))
 
 
html
 
c7f5738 
 
DrThomasOneil
 
2025-02-24
 
Build site.
 
 
html
 
79d09b1 
 
DrThomasOneil
 
2025-02-24
 
Build site.
 
 
html
 
a5c9f2c 
 
DrThomasOneil
 
2025-02-24
 
Build site.
 
 
html
 
ca2c086 
 
DrThomasOneil
 
2025-02-24
 
Build site.
 
 
html
 
fca0503 
 
DrThomasOneil
 
2025-02-24
 
Build site.
 
 
html
 
af42fba 
 
DrThomasOneil
 
2025-02-24
 
Build site.
 
 
html
 
1aeefc7 
 
DrThomasOneil
 
2025-02-20
 
Build site.
 
 
html
 
5fe30de 
 
DrThomasOneil
 
2025-02-20
 
Build site.
 
 
html
 
5ef4f12 
 
DrThomasOneil
 
2025-02-11
 
Build site.
 
 
Rmd
 
4f9c6de 
 
DrThomasOneil
 
2025-02-11
 
update book
 
 
html
 
f48f4f0 
 
DrThomasOneil
 
2025-02-10
 
Build site.
 
 
html
 
3bfe847 
 
DrThomasOneil
 
2025-02-10
 
Build site.
 
 
html
 
b14f3b5 
 
DrThomasOneil
 
2025-02-10
 
Build site.
 
 
html
 
bfba3e0 
 
DrThomasOneil
 
2025-02-07
 
Build site.
 
 
Rmd
 
b7989a4 
 
DrThomasOneil
 
2025-02-07
 
wflow_publish(c("analysis/*.Rmd"))
 
 
html
 
f3d6f87 
 
DrThomasOneil
 
2025-02-04
 
Build site.
 
 
html
 
f654b8d 
 
DrThomasOneil
 
2025-02-04
 
Build site.
 
 
Rmd
 
e6ea78d 
 
DrThomasOneil
 
2025-02-04
 
wflow_publish(c("analysis/*.Rmd"))
 
 
html
 
4968925 
 
DrThomasOneil
 
2025-01-30
 
Build site.
 
 
Rmd
 
afccf59 
 
DrThomasOneil
 
2025-01-30
 
wflow_publish(c("analysis/*.Rmd"))
 
 
html
 
299ff3d 
 
DrThomasOneil
 
2025-01-28
 
Build site.
 
 
Rmd
 
272b312 
 
DrThomasOneil
 
2025-01-28
 
wflow_publish(c("analysis/*"))
 
 
html
 
023005d 
 
DrThomasOneil
 
2025-01-07
 
Build site.
 
 
html
 
c893d70 
 
DrThomasOneil
 
2025-01-06
 
Build site.
 
 
Rmd
 
8eec2ce 
 
DrThomasOneil
 
2025-01-06
 
Initial Deployment
 
 
html
 
660b0f8 
 
DrThomasOneil
 
2025-01-06
 
Build site.
 
 
html
 
2e79a1d 
 
DrThomasOneil
 
2025-01-06
 
Build site.
 
 
Rmd
 
451a21f 
 
DrThomasOneil
 
2025-01-06
 
Initial Deployment
 
 
 
 
 
 
 
 
 We’ll drop resources that we find
that might be useful to others.   
Computational Genomics with R 
Computational Genomics
with R  is an exceptionally comprehensive resource for biomedical
bioinformatics. It covers a broad range of topics—statistics, machine
learning, sequencing data processing, and more—while providing both code
examples and clear explanations. Although it may not be the most
accessible starting point for wet-lab researchers, it serves as an
invaluable reference for deeper explorations of bioinformatic
analyses.
 
10X Analysis Resources 
10X Genomics are a unique company, in that they provide a
lot  of supporting materials. In the drop down below, we have listed
a series of resources that 10X have provided, including how-to videos
and tutorials.
Drop-down 
 
Xenium In situ 
Downloads and documentation 
Webinars and workshops 
 
Visium HD 
Downloads and documentation 
Webinars and workshops 
 
 
 
 
Stretchly 
Stretchly  is an
open-source app designed to encourage healthy work habits by prompting
regular short (30-second) and long (20-minute) breaks. I’ve found it
invaluable for maintaining focus and preventing burnout. It’s highly
customizable, allowing you to tailor prompts to your needs.
 
roadmap.sh 
roadmap.sh  provides structured
learning pathways for various tech-related skills, from Data Science to
DevOps. The Data Science and AI roadmap outlines essential topics such
as mathematics, statistics, and coding, along with curated free and paid
learning resources. These roadmaps are community-driven and frequently
updated, making them a great guide for self-paced learning.
 
LinkedIn Learning 
LinkedIn Learning 
offers a vast library of online courses covering data analysis,
programming (including R and Python), statistics, research skills, and
professional development. There is a short R
for Data Science  course that is quite nice.
You should have access to LinkedIn Learning through your University
email. Otherwise, WIMR staff can apply for a license through WIMR.
 
Interactive R learning UI 
learnr  is a package that you
can install which provides a nice little UI if you want to practice
basicR skills and prefer some interactivity.
 
ggplot2 book 
ggplot2:Elegant
Graphics for Data Analysis  is a nice, comprehensive handbook for
graphing using ggplot2. It covers the basic layout, different graph
types, customizing elements such as colours, group overlays,
annotations, etc.
 
LS0tDQp0aXRsZTogIkV4dHJhIFJlc291cmNlcyINCm91dHB1dDoNCiAgd29ya2Zsb3dyOjp3Zmxvd19odG1sOg0KICAgIHRvYzogbm8NCi0tLQ0KDQo8ZGV2IGNsYXNzPSJoaW50LWluZm8iPiANCioqV2UnbGwgZHJvcCByZXNvdXJjZXMgdGhhdCB3ZSBmaW5kIHRoYXQgbWlnaHQgYmUgdXNlZnVsIHRvIG90aGVycy4qKg0KPC9kZXY+DQoNCiMjIyBDb21wdXRhdGlvbmFsIEdlbm9taWNzIHdpdGggUg0KDQpbQ29tcHV0YXRpb25hbCBHZW5vbWljcyB3aXRoIFJdKGh0dHBzOi8vY29tcGdlbm9tci5naXRodWIuaW8vYm9vay8pIGlzIGFuIGV4Y2VwdGlvbmFsbHkgY29tcHJlaGVuc2l2ZSByZXNvdXJjZSBmb3IgYmlvbWVkaWNhbCBiaW9pbmZvcm1hdGljcy4gSXQgY292ZXJzIGEgYnJvYWQgcmFuZ2Ugb2YgdG9waWNz4oCUc3RhdGlzdGljcywgbWFjaGluZSBsZWFybmluZywgc2VxdWVuY2luZyBkYXRhIHByb2Nlc3NpbmcsIGFuZCBtb3Jl4oCUd2hpbGUgcHJvdmlkaW5nIGJvdGggY29kZSBleGFtcGxlcyBhbmQgY2xlYXIgZXhwbGFuYXRpb25zLiBBbHRob3VnaCBpdCBtYXkgbm90IGJlIHRoZSBtb3N0IGFjY2Vzc2libGUgc3RhcnRpbmcgcG9pbnQgZm9yIHdldC1sYWIgcmVzZWFyY2hlcnMsIGl0IHNlcnZlcyBhcyBhbiBpbnZhbHVhYmxlIHJlZmVyZW5jZSBmb3IgZGVlcGVyIGV4cGxvcmF0aW9ucyBvZiBiaW9pbmZvcm1hdGljIGFuYWx5c2VzLg0KDQojIyMgMTBYIEFuYWx5c2lzIFJlc291cmNlcw0KDQoxMFggR2Vub21pY3MgYXJlIGEgdW5pcXVlIGNvbXBhbnksIGluIHRoYXQgdGhleSBwcm92aWRlICphIGxvdCogb2Ygc3VwcG9ydGluZyBtYXRlcmlhbHMuIEluIHRoZSBkcm9wIGRvd24gYmVsb3csIHdlIGhhdmUgbGlzdGVkIGEgc2VyaWVzIG9mIHJlc291cmNlcyB0aGF0IDEwWCBoYXZlIHByb3ZpZGVkLCBpbmNsdWRpbmcgaG93LXRvIHZpZGVvcyBhbmQgdHV0b3JpYWxzLiANCg0KPGRldGFpbHM+PHN1bW1hcnk+KipEcm9wLWRvd24qKjwvc3VtbWFyeT48ZGl2Pg0KDQojIyMjIFhlbml1bSBJbiBzaXR1DQoNCioqRG93bmxvYWRzIGFuZCBkb2N1bWVudGF0aW9uKioNCg0KLSBbWGVuaXVtIEFuYWx5c2lzIE92ZXJ2aWV3XShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy82c0p0Q3huZ3dPZnhSeUszd3N2aDFmeXJiNFE/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkNCg0KLSBbWGVuaXVtIE9uYm9hcmQgQW5hbHlzaXNdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL3I3ODFDeW9qeFFUTDJnRVJrY1FpR2Z4SUVMYz9kb21haW49MTB4Z2Vub21pY3MuY29tKSwgW1hlbml1bSBSYW5nZXJdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zLy1RMEJDenZreVZDNHczdkE5Q0tzWmY5dVRJcD9kb21haW49MTB4Z2Vub21pY3MuY29tKQ0KDQotIFtYZW5pdW0gRXhwbG9yZXJdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL3NSNGtDQU5wZ2pDRWxnTXoyQ1F0a2ZHdVFsaD9kb21haW49MTB4Z2Vub21pY3MuY29tKQ0KDQoqKldlYmluYXJzIGFuZCB3b3Jrc2hvcHMqKg0KDQotIFtEZW15c3RpZnlpbmcgc2luZ2xlLWNlbGwgYW5kIHNwYXRpYWwgc2VxdWVuY2luZyBkYXRhIGFuYWx5c2lzOiBUaGUgcGF0aCB0byBtYWtpbmcgYmlvbG9naWNhbCBkaXNjb3ZlcmllcyByb3V0aW5lXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy81d0gxQ0JOcWpsQzhSMTNPQnMxdUdmMmV5OW8/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkNCg0KLSBbWGVuaXVtOiBTcGF0aWFsIGFuYWx5c2lzIG9mIGx1bmcgY2FuY2VycyByZXZlYWxzIGhldGVyb2dlbmVpdHkgaW4gdHVtb3IgbWljcm8tZW52aXJvbm1lbnRzXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9DRHFoQ0QxdmxwVDNKMVFrMGZSQ21maklhZHk/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkNCg0KLSBbWGVuaXVtIHRvIHVucmF2ZWwgdHVtb3ItaW1tdW5lIG1pY3JvZW52aXJvbm1lbnQgZHVyaW5nIGxlcHRvbWVuaW5nZWFsIG1ldGFzdGFzaXNdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zLzZGUWdDRTh3bXJ0cDBtS05NSXhGMWY3elhGYT9kb21haW49MTB4Z2Vub21pY3MuY29tKQ0KDQotIFtYZW5pdW0gNWsgV2ViaW5hciAtIE11bHRpbW9kYWwgc3BhdGlhbCByZWNvbnN0cnVjdGlvbiBvZiBhdXRvaW1tdW5lIGRpc2Vhc2VzIHdpdGggNSwwMDAtZ2VuZSBhc3NheXNdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL1JQWF9DR3Ywb3lDQU9tb1FHU3JIUmZCSVF4aD9kb21haW49MTB4Z2Vub21pY3MuY29tKQ0KDQojIyMjIFZpc2l1bSBIRA0KDQoqKkRvd25sb2FkcyBhbmQgZG9jdW1lbnRhdGlvbioqDQoNCi0gW1Zpc2l1bSBBbmFseXNpcyBPdmVydmlld10oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvWVVKeENKeUJyR2ZLQVJQRDVIS0lLZnlmb2JGP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pDQoNCi0gW1NwYWNlIFJhbmdlcl0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvaUJGakNLMUR2S1Q0TWwwR21Da1NtZjVwR2FXP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pDQoNCi0gKipDbG91ZCBBbmFseXNpcyoqDQoNCiAgLSBbQ2xvdWQgQW5hbHlzaXMgT3ZlcnZpZXddKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL0hUTFhDTDdFd01mUXdBNVo0U1lUMGZ5eGdKVT9kb21haW49MTB4Z2Vub21pY3MuY29tKQ0KDQogIC0gW0Nsb3VkIEFuYWx5c2lzIFN1cHBvcnQgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvRFdaR0NNd0d4T3R6a2dHQVdJcVVXZjhXZ1g2P2RvbWFpbj0xMHhnZW5vbWljcy5jb20pDQoNCiAgLSBbV2Fsa3Rocm91Z2ggVHV0b3JpYWwgKHdpdGggc21hbGwgZGVtbyBkYXRhc2V0KV0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvVTQ4c0NOTEp5UVVqUEExR1hVM2NaZnk4QUtzP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pIA0KDQotIFtMb3VwZSBCcm93c2VyXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9KUVdoQ09NS3pWVHZaSm95NEM5ZjRmR3MteUs/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkNCg0KICAtIFtUdXRvcmlhbHNdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL0NWUWpDUDdMQVhmM05PcWtNZkpocGZ4RXZTTD9kb21haW49MTB4Z2Vub21pY3MuY29tKQ0KDQoqKldlYmluYXJzIGFuZCB3b3Jrc2hvcHMqKg0KDQotIFtEaXNjb3ZlciBzcGF0aWFsIGluc2lnaHRzIHdpdGggaW50dWl0aXZlIGFuYWx5c2lzIHRvb2xzIGZvciBWaXNpdW0gSEQgZGF0YV0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvSjdLQ0NRbk1CWmZvbDhteXJDbGl4ZkdRR1kwP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pDQoNCi0gW0RhdGEtZHJpdmVuIGRpc2NvdmVyeSB3aXRoIFZpc2l1bSBTcGF0aWFsIEdlbmUgRXhwcmVzc2lvbiBmb3IgRkZQRV0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvZm1fcENST05EMnU1MEo4ekJIVnNxZjFFNmdlP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pDQoNCi0gW1NwYXRpYWwgdHJhbnNjcmlwdG9taWNzIGRhdGEgYW5hbHlzaXMgaW4gUHl0aG9uXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy8wOVJwQ1ZBUktnQ2drNzFSOWZvdFJmRXN3RHI/ZG9tYWluPWdpdGh1Yi5jb20pDQoNCi0gW1Zpc2l1bSBIRCBCaW9pbmZvcm1hdGljcyBib290Y2FtcDogSGFuZHMtb24gVmlzaXVtIEhEIGRhdGEgdmlzdWFsaXphdGlvbl0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvTWV5Z0NXTFZYa1VEWDJ2V0d1TXVWZm85Nm14P2RvbWFpbj0xMHhnZW5vbWljcy5jb20pDQoNCjwvZGl2PjwvZGV0YWlscz4NCg0KIyMjIFN0cmV0Y2hseQ0KDQpbU3RyZXRjaGx5XShodHRwczovL2hvdmFuY2lrLm5ldC9zdHJldGNobHkvKSBpcyBhbiBvcGVuLXNvdXJjZSBhcHAgZGVzaWduZWQgdG8gZW5jb3VyYWdlIGhlYWx0aHkgd29yayBoYWJpdHMgYnkgcHJvbXB0aW5nIHJlZ3VsYXIgc2hvcnQgKDMwLXNlY29uZCkgYW5kIGxvbmcgKDIwLW1pbnV0ZSkgYnJlYWtzLiBJ4oCZdmUgZm91bmQgaXQgaW52YWx1YWJsZSBmb3IgbWFpbnRhaW5pbmcgZm9jdXMgYW5kIHByZXZlbnRpbmcgYnVybm91dC4gSXTigJlzIGhpZ2hseSBjdXN0b21pemFibGUsIGFsbG93aW5nIHlvdSB0byB0YWlsb3IgcHJvbXB0cyB0byB5b3VyIG5lZWRzLg0KDQojIyMgcm9hZG1hcC5zaA0KDQpbcm9hZG1hcC5zaF0oaHR0cHM6Ly9yb2FkbWFwLnNoKSBwcm92aWRlcyBzdHJ1Y3R1cmVkIGxlYXJuaW5nIHBhdGh3YXlzIGZvciB2YXJpb3VzIHRlY2gtcmVsYXRlZCBza2lsbHMsIGZyb20gRGF0YSBTY2llbmNlIHRvIERldk9wcy4gVGhlIERhdGEgU2NpZW5jZSBhbmQgQUkgcm9hZG1hcCBvdXRsaW5lcyBlc3NlbnRpYWwgdG9waWNzIHN1Y2ggYXMgbWF0aGVtYXRpY3MsIHN0YXRpc3RpY3MsIGFuZCBjb2RpbmcsIGFsb25nIHdpdGggY3VyYXRlZCBmcmVlIGFuZCBwYWlkIGxlYXJuaW5nIHJlc291cmNlcy4gVGhlc2Ugcm9hZG1hcHMgYXJlIGNvbW11bml0eS1kcml2ZW4gYW5kIGZyZXF1ZW50bHkgdXBkYXRlZCwgbWFraW5nIHRoZW0gYSBncmVhdCBndWlkZSBmb3Igc2VsZi1wYWNlZCBsZWFybmluZy4NCg0KIyMjIExpbmtlZEluIExlYXJuaW5nDQoNCltMaW5rZWRJbiBMZWFybmluZ10oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2xlYXJuaW5nLykgb2ZmZXJzIGEgdmFzdCBsaWJyYXJ5IG9mIG9ubGluZSBjb3Vyc2VzIGNvdmVyaW5nIGRhdGEgYW5hbHlzaXMsIHByb2dyYW1taW5nIChpbmNsdWRpbmcgUiBhbmQgUHl0aG9uKSwgc3RhdGlzdGljcywgcmVzZWFyY2ggc2tpbGxzLCBhbmQgcHJvZmVzc2lvbmFsIGRldmVsb3BtZW50LiBUaGVyZSBpcyBhIHNob3J0IFtSIGZvciBEYXRhIFNjaWVuY2VdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9sZWFybmluZy1sb2dpbi9zaGFyZT9hY2NvdW50PTIxOTYyMDQmZm9yY2VBY2NvdW50PWZhbHNlJnJlZGlyZWN0PWh0dHBzJTNBJTJGJTJGd3d3LmxpbmtlZGluLmNvbSUyRmxlYXJuaW5nJTJGci1mb3ItZGF0YS1zY2llbmNlLWFuYWx5c2lzLWFuZC12aXN1YWxpemF0aW9uJTNGdHJrJTNEc2hhcmVfZW50X3VybCUyNnNoYXJlSWQlM0RnVkVCclkxTlNxZUpRcUJhUXZ6T0xRJTI1M0QlMjUzRCkgY291cnNlIHRoYXQgaXMgcXVpdGUgbmljZS4gDQoNCllvdSBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gTGlua2VkSW4gTGVhcm5pbmcgdGhyb3VnaCB5b3VyIFVuaXZlcnNpdHkgZW1haWwuIE90aGVyd2lzZSwgV0lNUiBzdGFmZiBjYW4gYXBwbHkgZm9yIGEgbGljZW5zZSB0aHJvdWdoIFdJTVIuIA0KDQojIyMgU3lkbmV5IEluZm9ybWF0aWNzIEh1YiANCg0KU3lkbmV5IEluZm9ybWF0aWNzIEh1YiBvZmZlcnMgW3RyYWluaW5nIHdvcmtzaG9wc10oaHR0cHM6Ly93d3cuc3lkbmV5LmVkdS5hdS9yZXNlYXJjaC9mYWNpbGl0aWVzL3N5ZG5leS1pbmZvcm1hdGljcy1odWIvd29ya3Nob3BzLWFuZC10cmFpbmluZy90cmFpbmluZy1jYWxlbmRhci5odG1sKSByZWd1bGFybHkgb24gcmVzZWFyY2ggZGF0YSBtYW5hZ2VtZW50LCBzdGF0aXN0aWNhbCBtZXRob2RzLCBhbmQgaGlnaC1wZXJmb3JtYW5jZSBjb21wdXRpbmcuIFRoZXNlIGFyZSBtb3JlIGdlbmVyYWwgbWV0aG9kcyB0aGF0IG5vdCBvbmx5IGFwcGx5IHRvIGJpb21lZGljYWwgcmVzZWFyY2gsIGJ1dCBtYXkgcHJvdmlkZSBpbnNwaXJhdGlvbiBvciBnb29kIGZ1bmRhbWVudGFsIGtub3dsZWRnZSBvbiB0aGUgYW5hbHl0aWNhbCBtZXRob2RzIHdlIHVzZS4NCg0KIyMjIEludGVyYWN0aXZlIFIgbGVhcm5pbmcgVUkNCg0KW2xlYXJucl0ocnN0dWRpby5naXRodWIuaW8vbGVhcm5yKSBpcyBhIHBhY2thZ2UgdGhhdCB5b3UgY2FuIGluc3RhbGwgd2hpY2ggcHJvdmlkZXMgYSBuaWNlIGxpdHRsZSBVSSBpZiB5b3Ugd2FudCB0byBwcmFjdGljZSBiYXNpY1Igc2tpbGxzIGFuZCBwcmVmZXIgc29tZSBpbnRlcmFjdGl2aXR5Lg0KDQojIyMgZ2dwbG90MiBib29rDQoNCltnZ3Bsb3QyOkVsZWdhbnQgR3JhcGhpY3MgZm9yIERhdGEgQW5hbHlzaXNdKGh0dHBzOi8vZ2dwbG90Mi1ib29rLm9yZy9pbnRyb2R1Y3Rpb24pIGlzIGEgbmljZSwgY29tcHJlaGVuc2l2ZSBoYW5kYm9vayBmb3IgZ3JhcGhpbmcgdXNpbmcgZ2dwbG90Mi4gSXQgY292ZXJzIHRoZSBiYXNpYyBsYXlvdXQsIGRpZmZlcmVudCBncmFwaCB0eXBlcywgY3VzdG9taXppbmcgZWxlbWVudHMgc3VjaCBhcyBjb2xvdXJzLCBncm91cCBvdmVybGF5cywgYW5ub3RhdGlvbnMsIGV0Yy4gDQoNCg==