Objectives
By the end of this assignment, you should:
- understand the concept of “cumulative science”
- be able to identify the type of a variable
- understand the properties of “tidy data”
- understand how to isolate data (
select
, filter
, arrange
)
- understand how to use the pipe operator (
%>%
)
This assignment is due Thursday, September 16th at noon. You should complete the assignment in the .Rmd template. Please turn your .html AND .Rmd files into Canvas. Your .Rmd file should knit without an error before turning in the assignment. If you need help, there a lot of resources available to you. Please reach out if you’re stuck.
To get started, you’ll need to download and open up the Rmarkdown template in RStudio. The first few exercises focus on data from the Lewis & Frank (2018) replication of the Xu and Tenenbaum (2007) experiment (that we talked about in lecture). We’ll be working with data from the first experiment only. For reference, the journal paper write up of this study can be found here, and you can see the actual experiment that participants saw here.
The data are in a file called lewis_2018_exp1.csv
that lives on the internet. We can load the data into R by passing the online filepath to the read_csv()
function. Once we read it into R, we can save it to a variable called lf_data
:
lf_data <- read_csv("https://raw.githubusercontent.com/mllewis/cumulative-science/master/static/data/lewis_2018_exp1.csv")
There are six variables in the data and each variable is described below. The first six rows of the data frame are also displayed below.
- exp - Experiment number. Lewis & Frank (2016) had 12 experiments in it; the present dataset only includes the data from the first experiment.
- subids - Subject ID. This is an anonymous id that uniquely identifies every participant in the study.
- trial_num - Each participant completed 12 “trials.” In this case, a trial is a single screen where the participant sees a novel word, one or more examples, and then is asked to click on other examples of the novel word.
- category - There were three different categories of objects: vehicles, vegetables, and animals. Each participant saw some trials from each category.
- condition - This is the variable that we manipulated. It refers to the number of examples of the novel word participants saw at the top of the page. Participants saw either 3 subordinate examples (“three_subordinate”; e.g., 3 dalmations), 3 basic level examples (“three_basic”; e.g. a dalmation, a poodle, and a bernese mountain dog), 3 superordinate examples (“three_superordinate”; e.g. a dalmation, a rabbit, and a horse), or just a single example (“one”; e.g. 1 dalmation).
- proportion_basic_level_responses - This is the variable that we measured. It refers to the proportion (out of 2 possible) of basic level examples that a participant selected.
1 |
1 |
9 |
vehicles |
three_subordinate |
0 |
1 |
2 |
9 |
animals |
three_basic |
1 |
1 |
3 |
9 |
animals |
three_superordinate |
1 |
1 |
4 |
9 |
vehicles |
three_superordinate |
1 |
1 |
5 |
9 |
animals |
three_superordinate |
1 |
1 |
6 |
9 |
vegetables |
three_subordinate |
0 |
- Is this dataset tidy? Describe the smallest unit of observation in this dataset.
- Select the columns
subids
, category
, proportion_basic_level_responses
from the data. Print the first six rows of this data frame.
- Print the first six rows of a data frame excluding the
category
column.
- Use logical tests and Boolean operators to return only the rows that contain trials (rows): [a] with category as vegetables, [b] with category as vehicles and a trial greater than 3, [c] with category as vegetables or animals, [d] with at least one basic level response in the “one” condition.
- The following code selects all trials (rows) where the condition was either “three_subordinate” or “one.” Rewrite this code in a way that uses the
%in%
operator.
filter(lf_data, condition == "three_subordinate" | condition == "one")
- How many trials are there where the category is either vegetables or animals? Use
nrow()
.
- The three following sets of commands are written without the pipe operator (
%>%
). Rewrite each one to include the pipe.
[a]
var1 <- mutate(lf_data, category)
[b]
var1 <- select(lf_data, category)
var2 <- nrow(var1)
[c]
var1 <- filter(lf_data, trial_num == 1)
var2 <- filter(var1, category == "animals")
var3 <- select(var2, trial_num, category)
- The two following sets of commands are written with the pipe operator. Rewrite each one to exclude the pipe.
[a]
lf_data %>%
filter(trial_num < 6) %>%
nrow()
[b]
lf_data %>%
select(subids, category, proportion_basic_level_responses) %>%
filter(subids == 1) %>%
arrange(category)
- Look at the code below. Describe in full sentences what this code does.
lf_data %>%
select(subids, category, condition) %>%
filter(category == "vehicles" & condition != "one") %>%
arrange(-subids)
- On the first day of class, we talked about the “Sally Anne Task” that measures children’s understanding of theory of mind (example videos). Describe four variables that you could measure in this task to assess children’s theory of mind performance. Specifically, describe (1) one qualitative variable, (2) one quantitative - binary variable, (3) one quantitative - numeric, and (4) one quantitative - real variable. For each variable, give a one sentence description of the variable, AND one example value of that variable with units.
- Describe the ways in which the scientific process could be described as a “social endeavor”. Your answer should make reference to the concepts of “replication” and “reproducibility”. Please respond with a short paragraph.
LS0tCnRpdGxlOiAiQXNzaWdubWVudCAxOiBDdW11bGF0aXZlIFNjaWVuY2UgYW5kIEludHJvIHRvIGRwbHlyIgpzdWJ0aXRsZTogIk1vZGVybiBSZXNlYXJjaCBNZXRob2RzIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIGNzczogLi4vbGFiLmNzcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogZmFsc2UKICAgIHRvY19mbG9hdDogZmFsc2UKLS0tCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZSA9IEZ9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGtuaXRyKQpgYGAKCgo8YnI+Cjxicj4KPGRpdiBpZD0iYm94ZWR0ZXh0Ij4KCiA8Zm9udCBzaXplPSI0Ij4gKipPYmplY3RpdmVzKiogPC9mb250PiAKIApCeSB0aGUgZW5kIG9mIHRoaXMgYXNzaWdubWVudCwgeW91IHNob3VsZDoKCi0gdW5kZXJzdGFuZCB0aGUgY29uY2VwdCBvZiAiY3VtdWxhdGl2ZSBzY2llbmNlIgotIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZQotIHVuZGVyc3RhbmQgdGhlIHByb3BlcnRpZXMgb2YgInRpZHkgZGF0YSIKLSB1bmRlcnN0YW5kIGhvdyB0byBpc29sYXRlIGRhdGEgKCBgc2VsZWN0YCwgYGZpbHRlcmAsIGBhcnJhbmdlYCkKLSB1bmRlcnN0YW5kIGhvdyB0byB1c2UgdGhlIHBpcGUgb3BlcmF0b3IgKGAlPiVgKQo8L2Rpdj4KClRoaXMgYXNzaWdubWVudCBpcyBkdWUgKipUaHVyc2RheSwgU2VwdGVtYmVyIDE2dGggYXQgbm9vbioqLiBZb3Ugc2hvdWxkIGNvbXBsZXRlIHRoZSBhc3NpZ25tZW50IGluIHRoZSAuUm1kIHRlbXBsYXRlLiBQbGVhc2UgdHVybiB5b3VyIC5odG1sIEFORCAuUm1kIGZpbGVzIGludG8gQ2FudmFzLiBZb3VyIC5SbWQgZmlsZSBzaG91bGQga25pdCB3aXRob3V0IGFuIGVycm9yIGJlZm9yZSB0dXJuaW5nIGluIHRoZSBhc3NpZ25tZW50LiBJZiB5b3UgbmVlZCBoZWxwLCB0aGVyZSBbYSBsb3Qgb2YgcmVzb3VyY2VzXSgvcmVzb3VyY2UvZ2V0dGluZ19oZWxwLykgYXZhaWxhYmxlIHRvIHlvdS4gUGxlYXNlIHJlYWNoIG91dCBpZiB5b3UncmUgc3R1Y2suIAoKPGJyPiAKClRvIGdldCBzdGFydGVkLCB5b3UnbGwgbmVlZCB0byBkb3dubG9hZCBhbmQgb3BlbiB1cCB0aGUgPGEgaHJlZj0iL2Fzc2lnbm1lbnQvMDFfTVJNX2Fzc2lnbm1lbnRfdGVtcGxhdGUuUm1kIiBkb3dubG9hZD5SbWFya2Rvd24gdGVtcGxhdGU8L2E+IGluIFJTdHVkaW8uIFRoZSBmaXJzdCBmZXcgZXhlcmNpc2VzICBmb2N1cyBvbiBkYXRhIGZyb20gdGhlIExld2lzICYgRnJhbmsgKDIwMTgpIHJlcGxpY2F0aW9uIG9mIHRoZSBYdSBhbmQgVGVuZW5iYXVtICgyMDA3KSBleHBlcmltZW50ICh0aGF0IHdlIHRhbGtlZCBhYm91dCBpbiBsZWN0dXJlKS4gV2UnbGwgYmUgd29ya2luZyB3aXRoIGRhdGEgZnJvbSB0aGUgZmlyc3QgZXhwZXJpbWVudCBvbmx5LiAgRm9yIHJlZmVyZW5jZSwgdGhlIGpvdXJuYWwgcGFwZXIgd3JpdGUgdXAgb2YgdGhpcyBzdHVkeSBjYW4gYmUgZm91bmQgW2hlcmVdKGh0dHA6Ly93d3cuYW5kcmV3LmNtdS5lZHUvdXNlci9tb2xseWxldy9wYXBlcnMvTEZfMjAxOC5wZGYpLCBhbmQgeW91IGNhbiBzZWUgdGhlIGFjdHVhbCBleHBlcmltZW50IHRoYXQgcGFydGljaXBhbnRzIHNhdyBbaGVyZV0oaHR0cHM6Ly9sYW5nY29nLnN0YW5mb3JkLmVkdS9leHB0cy9NTEwvWFRNRU0vZXhwMS9leHAxLmh0bWwpLgoKVGhlIGRhdGEgYXJlIGluIGEgZmlsZSBjYWxsZWQgYGxld2lzXzIwMThfZXhwMS5jc3ZgIHRoYXQgbGl2ZXMgb24gdGhlIGludGVybmV0LiBXZSBjYW4gbG9hZCB0aGUgZGF0YSBpbnRvIFIgYnkgcGFzc2luZyB0aGUgb25saW5lIGZpbGVwYXRoIHRvIHRoZSBgcmVhZF9jc3YoKWAgZnVuY3Rpb24uIE9uY2Ugd2UgcmVhZCBpdCBpbnRvIFIsIHdlIGNhbiBzYXZlIGl0IHRvIGEgdmFyaWFibGUgY2FsbGVkIGBsZl9kYXRhYDoKYGBge3IsIG1lc3NhZ2UgPSBGfQpsZl9kYXRhIDwtIHJlYWRfY3N2KCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWxsZXdpcy9jdW11bGF0aXZlLXNjaWVuY2UvbWFzdGVyL3N0YXRpYy9kYXRhL2xld2lzXzIwMThfZXhwMS5jc3YiKQpgYGAKClRoZXJlIGFyZSBzaXggdmFyaWFibGVzIGluIHRoZSBkYXRhIGFuZCBlYWNoIHZhcmlhYmxlIGlzIGRlc2NyaWJlZCBiZWxvdy4gVGhlIGZpcnN0IHNpeCByb3dzIG9mIHRoZSBkYXRhIGZyYW1lIGFyZSBhbHNvIGRpc3BsYXllZCBiZWxvdy4gCgoqICoqZXhwKiogLSBFeHBlcmltZW50IG51bWJlci4gTGV3aXMgJiBGcmFuayAoMjAxNikgaGFkIDEyIGV4cGVyaW1lbnRzIGluIGl0OyB0aGUgcHJlc2VudCBkYXRhc2V0IG9ubHkgaW5jbHVkZXMgdGhlIGRhdGEgZnJvbSB0aGUgZmlyc3QgZXhwZXJpbWVudC4KKiAqKnN1YmlkcyoqIC0gU3ViamVjdCBJRC4gVGhpcyBpcyBhbiBhbm9ueW1vdXMgaWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGV2ZXJ5IHBhcnRpY2lwYW50IGluIHRoZSBzdHVkeS4KKiAqKnRyaWFsX251bSoqIC0gRWFjaCBwYXJ0aWNpcGFudCBjb21wbGV0ZWQgMTIgInRyaWFscy4iIEluIHRoaXMgY2FzZSwgYSB0cmlhbCBpcyBhIHNpbmdsZSBzY3JlZW4gd2hlcmUgdGhlIHBhcnRpY2lwYW50IHNlZXMgYSBub3ZlbCB3b3JkLCBvbmUgb3IgbW9yZSBleGFtcGxlcywgYW5kIHRoZW4gaXMgYXNrZWQgdG8gY2xpY2sgb24gb3RoZXIgZXhhbXBsZXMgb2YgdGhlIG5vdmVsIHdvcmQuCiogKipjYXRlZ29yeSoqIC0gVGhlcmUgd2VyZSB0aHJlZSBkaWZmZXJlbnQgY2F0ZWdvcmllcyBvZiBvYmplY3RzOiB2ZWhpY2xlcywgdmVnZXRhYmxlcywgYW5kIGFuaW1hbHMuIEVhY2ggcGFydGljaXBhbnQgc2F3IHNvbWUgdHJpYWxzIGZyb20gZWFjaCBjYXRlZ29yeS4gCiogKipjb25kaXRpb24qKiAtIFRoaXMgaXMgdGhlIHZhcmlhYmxlIHRoYXQgd2UgbWFuaXB1bGF0ZWQuIEl0IHJlZmVycyB0byB0aGUgbnVtYmVyIG9mIGV4YW1wbGVzIG9mIHRoZSBub3ZlbCB3b3JkIHBhcnRpY2lwYW50cyBzYXcgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZS4gUGFydGljaXBhbnRzIHNhdyBlaXRoZXIgMyBzdWJvcmRpbmF0ZSBleGFtcGxlcyAoInRocmVlX3N1Ym9yZGluYXRlIjsgZS5nLiwgMyBkYWxtYXRpb25zKSwgIDMgYmFzaWMgbGV2ZWwgZXhhbXBsZXMgKCJ0aHJlZV9iYXNpYyI7IGUuZy4gYSBkYWxtYXRpb24sIGEgcG9vZGxlLCBhbmQgYSBiZXJuZXNlIG1vdW50YWluIGRvZyksIDMgc3VwZXJvcmRpbmF0ZSBleGFtcGxlcyAoInRocmVlX3N1cGVyb3JkaW5hdGUiOyBlLmcuIGEgZGFsbWF0aW9uLCBhIHJhYmJpdCwgYW5kIGEgaG9yc2UpLCBvciBqdXN0IGEgc2luZ2xlIGV4YW1wbGUgKCJvbmUiOyBlLmcuIDEgZGFsbWF0aW9uKS4KKiAqKnByb3BvcnRpb25fYmFzaWNfbGV2ZWxfcmVzcG9uc2VzKiogLSBUaGlzIGlzIHRoZSB2YXJpYWJsZSB0aGF0IHdlIG1lYXN1cmVkLiBJdCByZWZlcnMgdG8gdGhlIHByb3BvcnRpb24gKG91dCBvZiAyIHBvc3NpYmxlKSBvZiBiYXNpYyBsZXZlbCBleGFtcGxlcyB0aGF0IGEgcGFydGljaXBhbnQgc2VsZWN0ZWQuIAoKYGBge3IsIGVjaG8gPUZ9CmthYmxlKGhlYWQobGZfZGF0YSkpCmBgYAoKPGJyPiAKCigxKSBJcyB0aGlzIGRhdGFzZXQgdGlkeT8gRGVzY3JpYmUgdGhlIHNtYWxsZXN0IHVuaXQgb2Ygb2JzZXJ2YXRpb24gaW4gdGhpcyBkYXRhc2V0LgoKPGJyPiAKCigxKSBTZWxlY3QgdGhlIGNvbHVtbnMgYHN1Ymlkc2AsIGBjYXRlZ29yeWAsIGBwcm9wb3J0aW9uX2Jhc2ljX2xldmVsX3Jlc3BvbnNlc2AgZnJvbSB0aGUgZGF0YS4gUHJpbnQgdGhlIGZpcnN0IHNpeCByb3dzIG9mIHRoaXMgZGF0YSBmcmFtZS4gCgoKPGJyPiAKCigxKSBQcmludCB0aGUgZmlyc3Qgc2l4IHJvd3Mgb2YgYSBkYXRhIGZyYW1lIGV4Y2x1ZGluZyB0aGUgYGNhdGVnb3J5YCBjb2x1bW4uCgoKPGJyPiAKCigxKSBVc2UgbG9naWNhbCB0ZXN0cyBhbmQgQm9vbGVhbiBvcGVyYXRvcnMgdG8gcmV0dXJuIG9ubHkgdGhlIHJvd3MgdGhhdCBjb250YWluIHRyaWFscyAocm93cyk6IFthXSB3aXRoIGNhdGVnb3J5IGFzIHZlZ2V0YWJsZXMsIFtiXSB3aXRoIGNhdGVnb3J5IGFzIHZlaGljbGVzIGFuZCBhIHRyaWFsIGdyZWF0ZXIgdGhhbiAzLCBbY10gd2l0aCBjYXRlZ29yeSBhcyB2ZWdldGFibGVzIG9yIGFuaW1hbHMsICBbZF0gd2l0aCBhdCBsZWFzdCBvbmUgYmFzaWMgbGV2ZWwgcmVzcG9uc2UgaW4gdGhlICJvbmUiIGNvbmRpdGlvbi4KCjxicj4gCgooMSkgVGhlIGZvbGxvd2luZyBjb2RlIHNlbGVjdHMgYWxsIHRyaWFscyAocm93cykgd2hlcmUgdGhlIGNvbmRpdGlvbiB3YXMgZWl0aGVyICJ0aHJlZV9zdWJvcmRpbmF0ZSIgb3IgIm9uZS4iIFJld3JpdGUgdGhpcyBjb2RlIGluIGEgd2F5IHRoYXQgdXNlcyB0aGUgYCVpbiVgIG9wZXJhdG9yLiAKCmBgYHtyLCBldmFsID0gRn0KZmlsdGVyKGxmX2RhdGEsIGNvbmRpdGlvbiA9PSAidGhyZWVfc3Vib3JkaW5hdGUiIHwgY29uZGl0aW9uID09ICJvbmUiKQpgYGAKCjxicj4gCgooMSkgSG93IG1hbnkgdHJpYWxzIGFyZSB0aGVyZSB3aGVyZSB0aGUgY2F0ZWdvcnkgaXMgZWl0aGVyIHZlZ2V0YWJsZXMgb3IgYW5pbWFscz8gVXNlIGBucm93KClgLgoKPGJyPiAKCigxKSBUaGUgdGhyZWUgZm9sbG93aW5nIHNldHMgb2YgY29tbWFuZHMgYXJlIHdyaXR0ZW4gd2l0aG91dCB0aGUgcGlwZSBvcGVyYXRvciAoYCU+JWApLiBSZXdyaXRlIGVhY2ggb25lIHRvIGluY2x1ZGUgdGhlIHBpcGUuIAoKW2FdCmBgYHtyfQp2YXIxIDwtIG11dGF0ZShsZl9kYXRhLCBjYXRlZ29yeSkKYGBgCgpbYl0KYGBge3J9CnZhcjEgPC0gc2VsZWN0KGxmX2RhdGEsIGNhdGVnb3J5KQp2YXIyIDwtIG5yb3codmFyMSkKYGBgCgpbY10KYGBge3J9CnZhcjEgPC0gZmlsdGVyKGxmX2RhdGEsIHRyaWFsX251bSA9PSAxKQp2YXIyIDwtIGZpbHRlcih2YXIxLCBjYXRlZ29yeSA9PSAiYW5pbWFscyIpCnZhcjMgPC0gc2VsZWN0KHZhcjIsIHRyaWFsX251bSwgY2F0ZWdvcnkpCmBgYAoKPGJyPiAKCigxKSBUaGUgdHdvIGZvbGxvd2luZyBzZXRzIG9mIGNvbW1hbmRzIGFyZSB3cml0dGVuIHdpdGggdGhlIHBpcGUgb3BlcmF0b3IuIFJld3JpdGUgZWFjaCBvbmUgdG8gZXhjbHVkZSB0aGUgcGlwZS4gCgpbYV0KYGBge3IsIGV2YWwgPSBGfQpsZl9kYXRhICU+JQogIGZpbHRlcih0cmlhbF9udW0gPCA2KSAlPiUKICBucm93KCkKYGBgCgpbYl0KYGBge3IsIGV2YWwgPSBGfQpsZl9kYXRhICU+JQogIHNlbGVjdChzdWJpZHMsIGNhdGVnb3J5LCBwcm9wb3J0aW9uX2Jhc2ljX2xldmVsX3Jlc3BvbnNlcykgJT4lCiAgZmlsdGVyKHN1YmlkcyA9PSAxKSAlPiUKICBhcnJhbmdlKGNhdGVnb3J5KQpgYGAKCjxicj4gCgooMSkgTG9vayBhdCB0aGUgY29kZSBiZWxvdy4gRGVzY3JpYmUgaW4gZnVsbCBzZW50ZW5jZXMgd2hhdCB0aGlzIGNvZGUgZG9lcy4KCmBgYHtyLCBldmFsID0gRn0KbGZfZGF0YSAlPiUKICBzZWxlY3Qoc3ViaWRzLCBjYXRlZ29yeSwgY29uZGl0aW9uKSAlPiUKICBmaWx0ZXIoY2F0ZWdvcnkgPT0gInZlaGljbGVzIiAmIGNvbmRpdGlvbiAhPSAib25lIikgJT4lCiAgYXJyYW5nZSgtc3ViaWRzKQpgYGAKCjxicj4gCgooMSkgT24gdGhlIGZpcnN0IGRheSBvZiBjbGFzcywgd2UgdGFsa2VkIGFib3V0IHRoZSAiU2FsbHkgQW5uZSBUYXNrIiB0aGF0IG1lYXN1cmVzIGNoaWxkcmVuJ3MgdW5kZXJzdGFuZGluZyBvZiB0aGVvcnkgb2YgbWluZCAoW2V4YW1wbGUgdmlkZW9zXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW9heksyZmtSVTFBXSkpLiBEZXNjcmliZSBmb3VyIHZhcmlhYmxlcyB0aGF0IHlvdSBjb3VsZCBtZWFzdXJlIGluIHRoaXMgdGFzayB0byBhc3Nlc3MgY2hpbGRyZW4ncyB0aGVvcnkgb2YgbWluZCBwZXJmb3JtYW5jZS4gU3BlY2lmaWNhbGx5LCBkZXNjcmliZSAoMSkgb25lIHF1YWxpdGF0aXZlIHZhcmlhYmxlLCAoMikgb25lIHF1YW50aXRhdGl2ZSAtIGJpbmFyeSB2YXJpYWJsZSwgKDMpIG9uZSBxdWFudGl0YXRpdmUgLSBudW1lcmljLCBhbmQgKDQpIG9uZSBxdWFudGl0YXRpdmUgLSAgcmVhbCB2YXJpYWJsZS4gRm9yIGVhY2ggdmFyaWFibGUsIGdpdmUgYSBvbmUgc2VudGVuY2UgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlhYmxlLCBBTkQgb25lIGV4YW1wbGUgdmFsdWUgb2YgdGhhdCB2YXJpYWJsZSB3aXRoIHVuaXRzLgoKPGJyPiAKCgooMSkgRGVzY3JpYmUgdGhlIHdheXMgaW4gd2hpY2ggdGhlIHNjaWVudGlmaWMgcHJvY2VzcyBjb3VsZCBiZSBkZXNjcmliZWQgYXMgYSAic29jaWFsIGVuZGVhdm9yIi4gWW91ciBhbnN3ZXIgc2hvdWxkIG1ha2UgcmVmZXJlbmNlIHRvIHRoZSBjb25jZXB0cyBvZiAicmVwbGljYXRpb24iIGFuZCAicmVwcm9kdWNpYmlsaXR5Ii4gUGxlYXNlIHJlc3BvbmQgd2l0aCBhIHNob3J0IHBhcmFncmFwaC4gCgo=