Mushroom Data
-
class: The classification of the mushroom (e.g., edible or
poisonous).
-
cap.diameter: Diameter of the mushroom cap.
-
cap.shape: Shape of the mushroom cap.
-
cap.surface: Surface texture of the mushroom cap.
-
cap.color: Color of the mushroom cap.
-
does.bruise.or.bleed: Indicates if the mushroom bruises or
bleeds.
-
gill.attachment: How the gills are attached to the mushroom.
-
gill.spacing: Spacing between the gills.
-
gill.color: Color of the gills.
-
stem.height: Height of the mushroom stem.
-
stem.width: Width of the mushroom stem.
-
stem.root: Type of root structure the stem has.
-
stem.surface: Surface texture of the mushroom stem.
-
stem.color: Color of the mushroom stem.
-
veil.type: Type of veil covering the mushroom.
-
veil.color: Color of the veil.
-
has.ring: Indicates if the mushroom has a ring.
-
ring.type: Type of ring the mushroom has.
-
spore.print.color: Color of the mushroom’s spore print.
-
habitat: The habitat where the mushroom is found.
-
season: Season when the mushroom is typically found.
This dataset provides various characteristics of mushrooms, which can
be useful in identifying and classifying them. Each row represents a
specific mushroom, and the columns detail its physical attributes and
ecological traits.
# Load the required library
library(dplyr)
# Read the data
mushroom <- read.csv("https://ecoleman451.github.io/ecoleman/w10/mushroom-data.txt")
The following dashboard and story points were designed based on the
following considerations:
Season Filter: Each sheet in the dashboard and story point has a
Season filter, offering viewers the flexibility to delve into data
specific to different seasons, facilitating seasonal analysis and
comparison.
Table Chart: Average Cap Diameter per Class by Habitat: This chart
provides a detailed insight into the average cap diameter across
different classes of mushrooms, categorized by habitat. By color-coding
each habitat, viewers can easily discern trends and patterns associated
with environmental conditions.
Table Chart: Average Measurements Across Classes by Stem Color:
Offering a comprehensive overview, this table chart displays average
measurements (such as stem width and height) across various mushroom
classes, distinguished by stem color. The color-coded values enable
viewers to identify associations between mushroom classes and their
physical attributes.
Histogram: Total Stem Height Distribution by Cap Diameter and Cap
Shape: This histogram offers a visual representation of the distribution
of total stem height, considering both cap diameter and cap shape. By
color-coding each cap shape, viewers can gain insights into how stem
height varies across different cap shapes and sizes.
Dual Lines Chart: Average Stem Width and Stem Height Across Cap
Diameter Lengths: This chart presents an in-depth analysis of the
average stem width and stem height across different lengths of cap
diameter. By visualizing these relationships simultaneously, viewers can
discern correlations and variations between cap diameter and stem
dimensions.
Scatter Plot: Average Stem Width vs. Average Stem Height with Cap
Diameter Color Dependency: This scatter plot provides a comprehensive
view of the relationship between average stem width and height, with cap
diameter represented by color.
By incorporating visualizations and interactive features, this
dashboard and its story points aim to empower viewers with the tools and
insights for data analysis.
Tableau Story
Points
In addition to the detailed dashboard, a complementary story point
has been crafted to provide a guided narrative based on the previous
dashboard’s insights. Each visual sheet within the story point is
accompanied by a brief caption, offering context and highlighting key
findings. This approach enables viewers to explore each visual sheet
independently, allowing them to draw their own conclusions and insights
from the data presented. Through this structured storytelling approach,
viewers can engage with the data at their own pace, uncovering patterns
tailored to their interests and goals.
LS0tDQp0aXRsZTogIlRhYmxlYXUgRGFzaGJvYXJkIg0KYXV0aG9yOiAiRWR3YXJkIENvbGVtYW4iDQpkYXRlOiAiV2VzdCBDaGVzdGVyIFVuaXZlcnNpdHkiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogbm8NCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRoZW1lOiByZWFkYWJsZQ0KLS0tDQogICAgICANCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQpkaXYjVE9DIGxpIHsNCiAgICBsaXN0LXN0eWxlOm5vbmU7DQogICAgYmFja2dyb3VuZC1pbWFnZTpub25lOw0KICAgIGJhY2tncm91bmQtcmVwZWF0Om5vbmU7DQogICAgYmFja2dyb3VuZC1wb3NpdGlvbjowOw0KfQ0KaDEudGl0bGUgew0KICBmb250LXNpemU6IDI0cHg7DQogIGNvbG9yOiBEYXJrUmVkOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpoNC5hdXRob3IgeyANCiAgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCmg0LmRhdGUgeyANCiAgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpoMSB7IA0KICAgIC8qIEhlYWRlciAzIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAyMnB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCmgyIHsgDQogICAgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCmgzIHsgDQogICAgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE1cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgZm9udC1mYWNlOiBib2xkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQpoNCB7IA0KICAgIC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQogICAvKiBjZW50ZXIgbWFwcyB1c2luZyBjaHVuayBvcHRpb246IGZpZy5hbGlnbj0nY2VudGVyJyAqLw0KLmh0bWwtd2lkZ2V0IHsNCiAgICBtYXJnaW46IGF1dG87DQp9DQo8L3N0eWxlPg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCAgIA0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRSVUUsICAgDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBOQSkNCmBgYA0KDQpcDQoNCiMgTXVzaHJvb20gRGF0YQ0KPHVsPg0KICA8bGk+PGI+Y2xhc3M6PC9iPiBUaGUgY2xhc3NpZmljYXRpb24gb2YgdGhlIG11c2hyb29tIChlLmcuLCBlZGlibGUgb3IgcG9pc29ub3VzKS48L2xpPg0KICA8bGk+PGI+Y2FwLmRpYW1ldGVyOjwvYj4gRGlhbWV0ZXIgb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+Y2FwLnNoYXBlOjwvYj4gU2hhcGUgb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+Y2FwLnN1cmZhY2U6PC9iPiBTdXJmYWNlIHRleHR1cmUgb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+Y2FwLmNvbG9yOjwvYj4gQ29sb3Igb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+ZG9lcy5icnVpc2Uub3IuYmxlZWQ6PC9iPiBJbmRpY2F0ZXMgaWYgdGhlIG11c2hyb29tIGJydWlzZXMgb3IgYmxlZWRzLjwvbGk+DQogIDxsaT48Yj5naWxsLmF0dGFjaG1lbnQ6PC9iPiBIb3cgdGhlIGdpbGxzIGFyZSBhdHRhY2hlZCB0byB0aGUgbXVzaHJvb20uPC9saT4NCiAgPGxpPjxiPmdpbGwuc3BhY2luZzo8L2I+IFNwYWNpbmcgYmV0d2VlbiB0aGUgZ2lsbHMuPC9saT4NCiAgPGxpPjxiPmdpbGwuY29sb3I6PC9iPiBDb2xvciBvZiB0aGUgZ2lsbHMuPC9saT4NCiAgPGxpPjxiPnN0ZW0uaGVpZ2h0OjwvYj4gSGVpZ2h0IG9mIHRoZSBtdXNocm9vbSBzdGVtLjwvbGk+DQogIDxsaT48Yj5zdGVtLndpZHRoOjwvYj4gV2lkdGggb2YgdGhlIG11c2hyb29tIHN0ZW0uPC9saT4NCiAgPGxpPjxiPnN0ZW0ucm9vdDo8L2I+IFR5cGUgb2Ygcm9vdCBzdHJ1Y3R1cmUgdGhlIHN0ZW0gaGFzLjwvbGk+DQogIDxsaT48Yj5zdGVtLnN1cmZhY2U6PC9iPiBTdXJmYWNlIHRleHR1cmUgb2YgdGhlIG11c2hyb29tIHN0ZW0uPC9saT4NCiAgPGxpPjxiPnN0ZW0uY29sb3I6PC9iPiBDb2xvciBvZiB0aGUgbXVzaHJvb20gc3RlbS48L2xpPg0KICA8bGk+PGI+dmVpbC50eXBlOjwvYj4gVHlwZSBvZiB2ZWlsIGNvdmVyaW5nIHRoZSBtdXNocm9vbS48L2xpPg0KICA8bGk+PGI+dmVpbC5jb2xvcjo8L2I+IENvbG9yIG9mIHRoZSB2ZWlsLjwvbGk+DQogIDxsaT48Yj5oYXMucmluZzo8L2I+IEluZGljYXRlcyBpZiB0aGUgbXVzaHJvb20gaGFzIGEgcmluZy48L2xpPg0KICA8bGk+PGI+cmluZy50eXBlOjwvYj4gVHlwZSBvZiByaW5nIHRoZSBtdXNocm9vbSBoYXMuPC9saT4NCiAgPGxpPjxiPnNwb3JlLnByaW50LmNvbG9yOjwvYj4gQ29sb3Igb2YgdGhlIG11c2hyb29tJ3Mgc3BvcmUgcHJpbnQuPC9saT4NCiAgPGxpPjxiPmhhYml0YXQ6PC9iPiBUaGUgaGFiaXRhdCB3aGVyZSB0aGUgbXVzaHJvb20gaXMgZm91bmQuPC9saT4NCiAgPGxpPjxiPnNlYXNvbjo8L2I+IFNlYXNvbiB3aGVuIHRoZSBtdXNocm9vbSBpcyB0eXBpY2FsbHkgZm91bmQuPC9saT4NCjwvdWw+DQpUaGlzIGRhdGFzZXQgcHJvdmlkZXMgdmFyaW91cyBjaGFyYWN0ZXJpc3RpY3Mgb2YgbXVzaHJvb21zLCB3aGljaCBjYW4gYmUgdXNlZnVsIGluIGlkZW50aWZ5aW5nIGFuZCBjbGFzc2lmeWluZyB0aGVtLiBFYWNoIHJvdyByZXByZXNlbnRzIGEgc3BlY2lmaWMgbXVzaHJvb20sIGFuZCB0aGUgY29sdW1ucyBkZXRhaWwgaXRzIHBoeXNpY2FsIGF0dHJpYnV0ZXMgYW5kIGVjb2xvZ2ljYWwgdHJhaXRzLg0KYGBge3J9DQojIExvYWQgdGhlIHJlcXVpcmVkIGxpYnJhcnkNCmxpYnJhcnkoZHBseXIpDQoNCiMgUmVhZCB0aGUgZGF0YQ0KbXVzaHJvb20gPC0gcmVhZC5jc3YoImh0dHBzOi8vZWNvbGVtYW40NTEuZ2l0aHViLmlvL2Vjb2xlbWFuL3cxMC9tdXNocm9vbS1kYXRhLnR4dCIpDQpgYGANClRoZSBmb2xsb3dpbmcgZGFzaGJvYXJkIGFuZCBzdG9yeSBwb2ludHMgd2VyZSBkZXNpZ25lZCBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGNvbnNpZGVyYXRpb25zOg0KICANCiAgU2Vhc29uIEZpbHRlcjogRWFjaCBzaGVldCBpbiB0aGUgZGFzaGJvYXJkIGFuZCBzdG9yeSBwb2ludCBoYXMgYSBTZWFzb24gZmlsdGVyLCBvZmZlcmluZyB2aWV3ZXJzIHRoZSBmbGV4aWJpbGl0eSB0byBkZWx2ZSBpbnRvIGRhdGEgc3BlY2lmaWMgdG8gZGlmZmVyZW50IHNlYXNvbnMsIGZhY2lsaXRhdGluZyBzZWFzb25hbCBhbmFseXNpcyBhbmQgY29tcGFyaXNvbi4NCg0KICBUYWJsZSBDaGFydDogQXZlcmFnZSBDYXAgRGlhbWV0ZXIgcGVyIENsYXNzIGJ5IEhhYml0YXQ6IFRoaXMgY2hhcnQgcHJvdmlkZXMgYSBkZXRhaWxlZCBpbnNpZ2h0IGludG8gdGhlIGF2ZXJhZ2UgY2FwIGRpYW1ldGVyIGFjcm9zcyBkaWZmZXJlbnQgY2xhc3NlcyBvZiBtdXNocm9vbXMsIGNhdGVnb3JpemVkIGJ5IGhhYml0YXQuIEJ5IGNvbG9yLWNvZGluZyBlYWNoIGhhYml0YXQsIHZpZXdlcnMgY2FuIGVhc2lseSBkaXNjZXJuIHRyZW5kcyBhbmQgcGF0dGVybnMgYXNzb2NpYXRlZCB3aXRoIGVudmlyb25tZW50YWwgY29uZGl0aW9ucy4NCg0KICBUYWJsZSBDaGFydDogQXZlcmFnZSBNZWFzdXJlbWVudHMgQWNyb3NzIENsYXNzZXMgYnkgU3RlbSBDb2xvcjogT2ZmZXJpbmcgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3LCB0aGlzIHRhYmxlIGNoYXJ0IGRpc3BsYXlzIGF2ZXJhZ2UgbWVhc3VyZW1lbnRzIChzdWNoIGFzIHN0ZW0gd2lkdGggYW5kIGhlaWdodCkgYWNyb3NzIHZhcmlvdXMgbXVzaHJvb20gY2xhc3NlcywgZGlzdGluZ3Vpc2hlZCBieSBzdGVtIGNvbG9yLiBUaGUgY29sb3ItY29kZWQgdmFsdWVzIGVuYWJsZSB2aWV3ZXJzIHRvIGlkZW50aWZ5IGFzc29jaWF0aW9ucyBiZXR3ZWVuIG11c2hyb29tIGNsYXNzZXMgYW5kIHRoZWlyIHBoeXNpY2FsIGF0dHJpYnV0ZXMuDQoNCiAgSGlzdG9ncmFtOiBUb3RhbCBTdGVtIEhlaWdodCBEaXN0cmlidXRpb24gYnkgQ2FwIERpYW1ldGVyIGFuZCBDYXAgU2hhcGU6IFRoaXMgaGlzdG9ncmFtIG9mZmVycyBhIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGlzdHJpYnV0aW9uIG9mIHRvdGFsIHN0ZW0gaGVpZ2h0LCBjb25zaWRlcmluZyBib3RoIGNhcCBkaWFtZXRlciBhbmQgY2FwIHNoYXBlLiBCeSBjb2xvci1jb2RpbmcgZWFjaCBjYXAgc2hhcGUsIHZpZXdlcnMgY2FuIGdhaW4gaW5zaWdodHMgaW50byBob3cgc3RlbSBoZWlnaHQgdmFyaWVzIGFjcm9zcyBkaWZmZXJlbnQgY2FwIHNoYXBlcyBhbmQgc2l6ZXMuDQoNCiAgRHVhbCBMaW5lcyBDaGFydDogQXZlcmFnZSBTdGVtIFdpZHRoIGFuZCBTdGVtIEhlaWdodCBBY3Jvc3MgQ2FwIERpYW1ldGVyIExlbmd0aHM6IFRoaXMgY2hhcnQgcHJlc2VudHMgYW4gaW4tZGVwdGggYW5hbHlzaXMgb2YgdGhlIGF2ZXJhZ2Ugc3RlbSB3aWR0aCBhbmQgc3RlbSBoZWlnaHQgYWNyb3NzIGRpZmZlcmVudCBsZW5ndGhzIG9mIGNhcCBkaWFtZXRlci4gQnkgdmlzdWFsaXppbmcgdGhlc2UgcmVsYXRpb25zaGlwcyBzaW11bHRhbmVvdXNseSwgdmlld2VycyBjYW4gZGlzY2VybiBjb3JyZWxhdGlvbnMgYW5kIHZhcmlhdGlvbnMgYmV0d2VlbiBjYXAgZGlhbWV0ZXIgYW5kIHN0ZW0gZGltZW5zaW9ucy4NCg0KICBTY2F0dGVyIFBsb3Q6IEF2ZXJhZ2UgU3RlbSBXaWR0aCB2cy4gQXZlcmFnZSBTdGVtIEhlaWdodCB3aXRoIENhcCBEaWFtZXRlciBDb2xvciBEZXBlbmRlbmN5OiBUaGlzIHNjYXR0ZXIgcGxvdCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYXZlcmFnZSBzdGVtIHdpZHRoIGFuZCBoZWlnaHQsIHdpdGggY2FwIGRpYW1ldGVyIHJlcHJlc2VudGVkIGJ5IGNvbG9yLg0KDQogIEJ5IGluY29ycG9yYXRpbmcgdmlzdWFsaXphdGlvbnMgYW5kIGludGVyYWN0aXZlIGZlYXR1cmVzLCB0aGlzIGRhc2hib2FyZCBhbmQgaXRzIHN0b3J5IHBvaW50cyBhaW0gdG8gZW1wb3dlciB2aWV3ZXJzIHdpdGggdGhlIHRvb2xzIGFuZCBpbnNpZ2h0cyBmb3IgZGF0YSBhbmFseXNpcy4NCg0KPHRhYmxlIGJvcmRlciA9IDAgYm9yZGVyY29sb3I9ImRhcmtncmVlbiIgYmdjb2xvcj0nI2Y2ZjZmNicgIHdpZHRoPTExMCUgIGFsaWduID0gY2VudGVyPg0KPHRyPg0KPHRkPg0KDQo8ZGl2IGNsYXNzPSd0YWJsZWF1UGxhY2Vob2xkZXInIGlkPSd2aXoxNzEyNzkyNTA2ODY2JyBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlJz48bm9zY3JpcHQ+PGEgaHJlZj0nIyc+PGltZyBhbHQ9J0Rhc2hib2FyZCAxICcgc3JjPSdodHRwczomIzQ3OyYjNDc7cHVibGljLnRhYmxlYXUuY29tJiM0NztzdGF0aWMmIzQ3O2ltYWdlcyYjNDc7VGEmIzQ3O1RhYmxlYXVTdG9yeUJvYXJkXzE3MTI3ODkwNDU4NjYwJiM0NztEYXNoYm9hcmQxJiM0NzsxX3Jzcy5wbmcnIHN0eWxlPSdib3JkZXI6IG5vbmUnIC8+PC9hPjwvbm9zY3JpcHQ+PG9iamVjdCBjbGFzcz0ndGFibGVhdVZpeicgIHN0eWxlPSdkaXNwbGF5Om5vbmU7Jz48cGFyYW0gbmFtZT0naG9zdF91cmwnIHZhbHVlPSdodHRwcyUzQSUyRiUyRnB1YmxpYy50YWJsZWF1LmNvbSUyRicgLz4gPHBhcmFtIG5hbWU9J2VtYmVkX2NvZGVfdmVyc2lvbicgdmFsdWU9JzMnIC8+IDxwYXJhbSBuYW1lPSdzaXRlX3Jvb3QnIHZhbHVlPScnIC8+PHBhcmFtIG5hbWU9J25hbWUnIHZhbHVlPSdUYWJsZWF1U3RvcnlCb2FyZF8xNzEyNzg5MDQ1ODY2MCYjNDc7RGFzaGJvYXJkMScgLz48cGFyYW0gbmFtZT0ndGFicycgdmFsdWU9J25vJyAvPjxwYXJhbSBuYW1lPSd0b29sYmFyJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdzdGF0aWNfaW1hZ2UnIHZhbHVlPSdodHRwczomIzQ3OyYjNDc7cHVibGljLnRhYmxlYXUuY29tJiM0NztzdGF0aWMmIzQ3O2ltYWdlcyYjNDc7VGEmIzQ3O1RhYmxlYXVTdG9yeUJvYXJkXzE3MTI3ODkwNDU4NjYwJiM0NztEYXNoYm9hcmQxJiM0NzsxLnBuZycgLz4gPHBhcmFtIG5hbWU9J2FuaW1hdGVfdHJhbnNpdGlvbicgdmFsdWU9J3llcycgLz48cGFyYW0gbmFtZT0nZGlzcGxheV9zdGF0aWNfaW1hZ2UnIHZhbHVlPSd5ZXMnIC8+PHBhcmFtIG5hbWU9J2Rpc3BsYXlfc3Bpbm5lcicgdmFsdWU9J3llcycgLz48cGFyYW0gbmFtZT0nZGlzcGxheV9vdmVybGF5JyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdkaXNwbGF5X2NvdW50JyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdsYW5ndWFnZScgdmFsdWU9J2VuLVVTJyAvPjxwYXJhbSBuYW1lPSdmaWx0ZXInIHZhbHVlPSdwdWJsaXNoPXllcycgLz48L29iamVjdD48L2Rpdj4gICAgICAgICAgICAgICAgDQo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ICAgICAgICAgICAgICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aXoxNzEyNzkyNTA2ODY2Jyk7ICAgICAgICAgICAgICAgICAgICB2YXIgdml6RWxlbWVudCA9IGRpdkVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29iamVjdCcpWzBdOyAgICAgICAgICAgICAgICAgICAgaWYgKCBkaXZFbGVtZW50Lm9mZnNldFdpZHRoID4gODAwICkgeyB2aXpFbGVtZW50LnN0eWxlLndpZHRoPScxMDAlJzt2aXpFbGVtZW50LnN0eWxlLmhlaWdodD0oZGl2RWxlbWVudC5vZmZzZXRXaWR0aCowLjc1KSsncHgnO30gZWxzZSBpZiAoIGRpdkVsZW1lbnQub2Zmc2V0V2lkdGggPiA1MDAgKSB7IHZpekVsZW1lbnQuc3R5bGUud2lkdGg9JzEwMCUnO3ZpekVsZW1lbnQuc3R5bGUuaGVpZ2h0PShkaXZFbGVtZW50Lm9mZnNldFdpZHRoKjAuNzUpKydweCc7fSBlbHNlIHsgdml6RWxlbWVudC5zdHlsZS53aWR0aD0nMTAwJSc7dml6RWxlbWVudC5zdHlsZS5oZWlnaHQ9JzE1MjdweCc7fSAgICAgICAgICAgICAgICAgICAgIHZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7ICAgICAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50LnNyYyA9ICdodHRwczovL3B1YmxpYy50YWJsZWF1LmNvbS9qYXZhc2NyaXB0cy9hcGkvdml6X3YxLmpzJzsgICAgICAgICAgICAgICAgICAgIHZpekVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc2NyaXB0RWxlbWVudCwgdml6RWxlbWVudCk7ICAgICAgICAgICAgICAgIA0KPC9zY3JpcHQ+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNClwNCg0KXA0KDQoNCiMgVGFibGVhdSBTdG9yeSBQb2ludHMNCkluIGFkZGl0aW9uIHRvIHRoZSBkZXRhaWxlZCBkYXNoYm9hcmQsIGEgY29tcGxlbWVudGFyeSBzdG9yeSBwb2ludCBoYXMgYmVlbiBjcmFmdGVkIHRvIHByb3ZpZGUgYSBndWlkZWQgbmFycmF0aXZlIGJhc2VkIG9uIHRoZSBwcmV2aW91cyBkYXNoYm9hcmQncyBpbnNpZ2h0cy4gRWFjaCB2aXN1YWwgc2hlZXQgd2l0aGluIHRoZSBzdG9yeSBwb2ludCBpcyBhY2NvbXBhbmllZCBieSBhIGJyaWVmIGNhcHRpb24sIG9mZmVyaW5nIGNvbnRleHQgYW5kIGhpZ2hsaWdodGluZyBrZXkgZmluZGluZ3MuIFRoaXMgYXBwcm9hY2ggZW5hYmxlcyB2aWV3ZXJzIHRvIGV4cGxvcmUgZWFjaCB2aXN1YWwgc2hlZXQgaW5kZXBlbmRlbnRseSwgYWxsb3dpbmcgdGhlbSB0byBkcmF3IHRoZWlyIG93biBjb25jbHVzaW9ucyBhbmQgaW5zaWdodHMgZnJvbSB0aGUgZGF0YSBwcmVzZW50ZWQuIFRocm91Z2ggdGhpcyBzdHJ1Y3R1cmVkIHN0b3J5dGVsbGluZyBhcHByb2FjaCwgdmlld2VycyBjYW4gZW5nYWdlIHdpdGggdGhlIGRhdGEgYXQgdGhlaXIgb3duIHBhY2UsIHVuY292ZXJpbmcgcGF0dGVybnMgdGFpbG9yZWQgdG8gdGhlaXIgaW50ZXJlc3RzIGFuZCBnb2Fscy4NCg0KXA0KDQo8dGFibGUgYm9yZGVyID0gMCBib3JkZXJjb2xvcj0iZGFya2dyZWVuIiBiZ2NvbG9yPScjZjZmNmY2JyAgd2lkdGg9MTEwJSAgYWxpZ24gPSBjZW50ZXI+DQo8dHI+DQo8dGQ+DQoNCjxkaXYgY2xhc3M9J3RhYmxlYXVQbGFjZWhvbGRlcicgaWQ9J3ZpejE3MTI3ODkwNjk4NDknIHN0eWxlPSdwb3NpdGlvbjogcmVsYXRpdmUnPjxub3NjcmlwdD48YSBocmVmPScjJz48aW1nIGFsdD0nTXVzaHJvb20gU3RvcnkgUG9pbnQgJyBzcmM9J2h0dHBzOiYjNDc7JiM0NztwdWJsaWMudGFibGVhdS5jb20mIzQ3O3N0YXRpYyYjNDc7aW1hZ2VzJiM0NztUYSYjNDc7VGFibGVhdVN0b3J5Qm9hcmRfMTcxMjc4OTA0NTg2NjAmIzQ3O1N0b3J5MSYjNDc7MV9yc3MucG5nJyBzdHlsZT0nYm9yZGVyOiBub25lJyAvPjwvYT48L25vc2NyaXB0PjxvYmplY3QgY2xhc3M9J3RhYmxlYXVWaXonICBzdHlsZT0nZGlzcGxheTpub25lOyc+PHBhcmFtIG5hbWU9J2hvc3RfdXJsJyB2YWx1ZT0naHR0cHMlM0ElMkYlMkZwdWJsaWMudGFibGVhdS5jb20lMkYnIC8+IDxwYXJhbSBuYW1lPSdlbWJlZF9jb2RlX3ZlcnNpb24nIHZhbHVlPSczJyAvPiA8cGFyYW0gbmFtZT0nc2l0ZV9yb290JyB2YWx1ZT0nJyAvPjxwYXJhbSBuYW1lPSduYW1lJyB2YWx1ZT0nVGFibGVhdVN0b3J5Qm9hcmRfMTcxMjc4OTA0NTg2NjAmIzQ3O1N0b3J5MScgLz48cGFyYW0gbmFtZT0ndGFicycgdmFsdWU9J25vJyAvPjxwYXJhbSBuYW1lPSd0b29sYmFyJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdzdGF0aWNfaW1hZ2UnIHZhbHVlPSdodHRwczomIzQ3OyYjNDc7cHVibGljLnRhYmxlYXUuY29tJiM0NztzdGF0aWMmIzQ3O2ltYWdlcyYjNDc7VGEmIzQ3O1RhYmxlYXVTdG9yeUJvYXJkXzE3MTI3ODkwNDU4NjYwJiM0NztTdG9yeTEmIzQ3OzEucG5nJyAvPiA8cGFyYW0gbmFtZT0nYW5pbWF0ZV90cmFuc2l0aW9uJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdkaXNwbGF5X3N0YXRpY19pbWFnZScgdmFsdWU9J3llcycgLz48cGFyYW0gbmFtZT0nZGlzcGxheV9zcGlubmVyJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdkaXNwbGF5X292ZXJsYXknIHZhbHVlPSd5ZXMnIC8+PHBhcmFtIG5hbWU9J2Rpc3BsYXlfY291bnQnIHZhbHVlPSd5ZXMnIC8+PHBhcmFtIG5hbWU9J2xhbmd1YWdlJyB2YWx1ZT0nZW4tVVMnIC8+PC9vYmplY3Q+PC9kaXY+ICAgICAgICAgICAgICAgIA0KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiAgICAgICAgICAgICAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndml6MTcxMjc4OTA2OTg0OScpOyAgICAgICAgICAgICAgICAgICAgdmFyIHZpekVsZW1lbnQgPSBkaXZFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvYmplY3QnKVswXTsgICAgICAgICAgICAgICAgICAgIHZpekVsZW1lbnQuc3R5bGUud2lkdGg9JzEwMTZweCc7dml6RWxlbWVudC5zdHlsZS5oZWlnaHQ9Jzk5MXB4JzsgICAgICAgICAgICAgICAgICAgIHZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7ICAgICAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50LnNyYyA9ICdodHRwczovL3B1YmxpYy50YWJsZWF1LmNvbS9qYXZhc2NyaXB0cy9hcGkvdml6X3YxLmpzJzsgICAgICAgICAgICAgICAgICAgIHZpekVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc2NyaXB0RWxlbWVudCwgdml6RWxlbWVudCk7ICAgICAgICAgICAgICAgIA0KPC9zY3JpcHQ+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo=