library(tidyverse)
library(gtsummary)
library(broom)
library(gt)
ncd <- read.csv("ncd.csv")
# Previewdata
head(ncd)
Interpretation
The dataset consists of six adult participants, each representing
different sociodemographic and health characteristics. The mean age of
41.5 years (SD = 9.0) indicates a middle-aged group, suggesting
potential exposure to non-communicable disease risk factors.
Sociodemographic Profile
Most participants were male (83.3%) and urban residents (83.3%),
implying a predominance of men living in urban settings. Urban living
may influence dietary patterns, stress levels, and sedentary
behaviors—all known contributors to elevated BMI and blood pressure.
The participants’ education levels varied, with one-third having
completed secondary education and another third holding higher degrees.
This suggests that the group has moderate to high educational
attainment, potentially linked to greater health literacy.
Occupationally, participants were diverse, with business (33.3%)
being the most frequent occupation, followed by service, unemployment,
farming, and retirement. Such variation may reflect differences in
income, lifestyle, and access to healthcare.
Health Characteristics
The mean BMI of 25.9 kg/m² (SD = 4.1) places the average participant
in the overweight category, according to WHO classification. One
participant (BMI = 18.9) was underweight, while several participants had
BMI values suggesting overweight or obesity. This pattern implies a need
for weight management interventions within similar populations.
The mean systolic blood pressure of 137.7 mmHg (SD = 42.2) exceeds
the normal range (<120 mmHg), indicating a prevalence of elevated
blood pressure or hypertension among participants. The wide range
(92–188 mmHg) highlights variability that may be influenced by age, BMI,
and occupation-related stress.
Overall Interpretation
Overall, the findings suggest that this small, predominantly male,
and urban group demonstrates early signs of lifestyle-related health
risks—notably overweight and high blood pressure. Although the sample
size is limited, the observed trends align with broader evidence that
urban middle-aged adults in developing contexts are increasingly
affected by non-communicable diseases due to diet, inactivity, and
stress.
Further research with a larger, more representative sample would be
necessary to confirm these patterns and to identify statistically
significant associations among variables such as BMI, blood pressure,
age, and residence.
ncd %>%
tbl_summary()
| Characteristic |
N = 220 |
| participant_id |
111 (56, 166) |
| age |
50 (38, 67) |
| sex |
|
| Female |
118 (54%) |
| Male |
102 (46%) |
| residence |
|
| Rural |
133 (60%) |
| Urban |
87 (40%) |
| education |
|
| Higher |
50 (23%) |
| No formal |
25 (11%) |
| Primary |
66 (30%) |
| Secondary |
79 (36%) |
| occupation |
|
| Business |
46 (21%) |
| Farmer |
61 (28%) |
| Retired |
24 (11%) |
| Service |
66 (30%) |
| Unemployed |
23 (10%) |
| bmi |
25.4 (21.3, 28.3) |
| systolic_bp |
134 (114, 165) |
| diastolic_bp |
91 (76, 107) |
| diabetes |
51 (23%) |
| hypertension |
84 (38%) |
Univariate Analysis
Interpretation
The study included 2,201 participants with diverse sociodemographic
and health profiles.
Demographic Characteristics
The median age was 50 years (IQR: 38–67), indicating that the
participants were primarily middle-aged adults. Such an age distribution
is consistent with the group most at risk for chronic non-communicable
diseases, including hypertension and diabetes.
In terms of sex distribution, females constituted 54% of the sample,
while males represented 46%, suggesting a relatively balanced gender
ratio with a slight female predominance.
Residential and Educational Profile
A majority of participants (60%) resided in rural areas, whereas 40%
were from urban settings. This mix provides a comparative basis for
examining rural–urban health differentials.
Educational attainment varied: 36% had secondary education, 30%
primary, 23% higher, and 11% had no formal education. This indicates a
relatively educated population, with nearly 90% having received some
form of schooling.
Occupational Distribution
The most common occupations were service (30%), farming (28%), and
business (21%), followed by retired (11%) and unemployed (10%). This
reflects a population with mixed employment types—spanning formal,
informal, and agricultural sectors.
Health Indicators
The median BMI was 25.4 kg/m² (IQR: 21.3–28.3), suggesting that the
typical participant fell within the overweight range (BMI ≥ 25). This
implies a moderate prevalence of overweight or obesity among adults in
the sample.
The median systolic blood pressure was 134 mmHg (IQR: 114–165) and
median diastolic pressure was 91 mmHg (IQR: 76–107), both exceeding the
normal range (<120/80 mmHg). These findings indicate a notable
presence of elevated blood pressure in the sample.
In terms of diagnosed conditions, 23% of participants reported
diabetes, and 38% had hypertension. The coexistence of these conditions
is consistent with known cardiometabolic risks observed in middle-aged
and older adults, particularly those with elevated BMI.
Summary Interpretation
Overall, the dataset represents a predominantly rural, middle-aged,
and moderately educated population with diverse occupational
backgrounds. The findings reveal a substantial prevalence of overweight,
hypertension, and diabetes, underscoring the growing burden of
non-communicable diseases (NCDs) in both rural and urban
communities.
These results highlight the need for community-based interventions
promoting healthy diets, physical activity, and routine screening for
blood pressure and glucose to prevent long-term complications.
ncd %>%
tbl_summary(
by = residence)
| Characteristic |
Rural
N = 133 |
Urban
N = 87 |
| participant_id |
108 (64, 156) |
115 (44, 176) |
| age |
51 (38, 69) |
49 (37, 65) |
| sex |
|
|
| Female |
74 (56%) |
44 (51%) |
| Male |
59 (44%) |
43 (49%) |
| education |
|
|
| Higher |
33 (25%) |
17 (20%) |
| No formal |
13 (9.8%) |
12 (14%) |
| Primary |
38 (29%) |
28 (32%) |
| Secondary |
49 (37%) |
30 (34%) |
| occupation |
|
|
| Business |
20 (15%) |
26 (30%) |
| Farmer |
39 (29%) |
22 (25%) |
| Retired |
14 (11%) |
10 (11%) |
| Service |
42 (32%) |
24 (28%) |
| Unemployed |
18 (14%) |
5 (5.7%) |
| bmi |
25.5 (21.1, 28.3) |
24.9 (21.9, 28.4) |
| systolic_bp |
136 (114, 166) |
131 (111, 164) |
| diastolic_bp |
91 (74, 104) |
93 (77, 108) |
| diabetes |
34 (26%) |
17 (20%) |
| hypertension |
55 (41%) |
29 (33%) |
Interpretation of Bivariate Findings
The bivariate analysis explored the association between residence
(rural vs. urban) and various demographic, socioeconomic, and health
characteristics.
Demographic Factors
No statistically significant differences were found in age or sex
distributions between rural and urban participants (p > .05). This
indicates comparable demographic profiles across both residence
groups.
Education and Occupation
Educational attainment did not differ significantly by residence type
(p = 0.39). However, occupation showed a significant association (p =
0.04):
Urban residents were more engaged in business activities (30%),
while
Rural residents were more likely to be farmers (29%) and unemployed
(14%). This reflects typical occupational patterns linked to rural–urban
economic structures.
Body Mass Index and Blood Pressure
Although median BMI values were similar (rural 25.5 vs. urban 24.9
kg/m², p = 0.15), the median systolic blood pressure was significantly
higher among rural participants (136 mmHg vs. 131 mmHg, p = 0.03). This
indicates that rural residents had greater prevalence of elevated blood
pressure, possibly reflecting lifestyle factors, older age distribution,
or limited healthcare access.
Chronic Disease Status
The prevalence of diabetes was slightly higher in rural areas (26%)
than in urban (20%), but this difference was not statistically
significant (p = 0.08). However, hypertension prevalence was
significantly higher among rural participants (41%) compared to urban
participants (33%) (p = 0.02), confirming a meaningful association
between residence and hypertension.
Overall Summary
The bivariate analysis reveals that while most sociodemographic
factors (age, sex, education, BMI) are similar across residence types,
occupation, systolic blood pressure, and hypertension show statistically
significant rural–urban differences.
Specifically:
Rural residents exhibited higher blood pressure and hypertension
prevalence.
Urban residents were more commonly engaged in business or
formal-sector employment.
These findings highlight a shifting pattern of non-communicable
disease risk—where rural populations, traditionally considered less at
risk, are now showing comparable or even higher NCD prevalence than
urban populations.
plot(cars)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZ3RzdW1tYXJ5KQ0KbGlicmFyeShicm9vbSkNCmxpYnJhcnkoZ3QpDQpgYGANCg0KYGBge3J9DQpuY2QgPC0gcmVhZC5jc3YoIm5jZC5jc3YiKQ0KDQojIFByZXZpZXdkYXRhDQpoZWFkKG5jZCkNCmBgYA0KDQpJbnRlcnByZXRhdGlvbg0KDQpUaGUgZGF0YXNldCBjb25zaXN0cyBvZiBzaXggYWR1bHQgcGFydGljaXBhbnRzLCBlYWNoIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgc29jaW9kZW1vZ3JhcGhpYyBhbmQgaGVhbHRoIGNoYXJhY3RlcmlzdGljcy4gVGhlIG1lYW4gYWdlIG9mIDQxLjUgeWVhcnMgKFNEID0gOS4wKSBpbmRpY2F0ZXMgYSBtaWRkbGUtYWdlZCBncm91cCwgc3VnZ2VzdGluZyBwb3RlbnRpYWwgZXhwb3N1cmUgdG8gbm9uLWNvbW11bmljYWJsZSBkaXNlYXNlIHJpc2sgZmFjdG9ycy4NCg0KU29jaW9kZW1vZ3JhcGhpYyBQcm9maWxlDQoNCk1vc3QgcGFydGljaXBhbnRzIHdlcmUgbWFsZSAoODMuMyUpIGFuZCB1cmJhbiByZXNpZGVudHMgKDgzLjMlKSwgaW1wbHlpbmcgYSBwcmVkb21pbmFuY2Ugb2YgbWVuIGxpdmluZyBpbiB1cmJhbiBzZXR0aW5ncy4gVXJiYW4gbGl2aW5nIG1heSBpbmZsdWVuY2UgZGlldGFyeSBwYXR0ZXJucywgc3RyZXNzIGxldmVscywgYW5kIHNlZGVudGFyeSBiZWhhdmlvcnPigJRhbGwga25vd24gY29udHJpYnV0b3JzIHRvIGVsZXZhdGVkIEJNSSBhbmQgYmxvb2QgcHJlc3N1cmUuDQoNClRoZSBwYXJ0aWNpcGFudHPigJkgZWR1Y2F0aW9uIGxldmVscyB2YXJpZWQsIHdpdGggb25lLXRoaXJkIGhhdmluZyBjb21wbGV0ZWQgc2Vjb25kYXJ5IGVkdWNhdGlvbiBhbmQgYW5vdGhlciB0aGlyZCBob2xkaW5nIGhpZ2hlciBkZWdyZWVzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGdyb3VwIGhhcyBtb2RlcmF0ZSB0byBoaWdoIGVkdWNhdGlvbmFsIGF0dGFpbm1lbnQsIHBvdGVudGlhbGx5IGxpbmtlZCB0byBncmVhdGVyIGhlYWx0aCBsaXRlcmFjeS4NCg0KT2NjdXBhdGlvbmFsbHksIHBhcnRpY2lwYW50cyB3ZXJlIGRpdmVyc2UsIHdpdGggYnVzaW5lc3MgKDMzLjMlKSBiZWluZyB0aGUgbW9zdCBmcmVxdWVudCBvY2N1cGF0aW9uLCBmb2xsb3dlZCBieSBzZXJ2aWNlLCB1bmVtcGxveW1lbnQsIGZhcm1pbmcsIGFuZCByZXRpcmVtZW50LiBTdWNoIHZhcmlhdGlvbiBtYXkgcmVmbGVjdCBkaWZmZXJlbmNlcyBpbiBpbmNvbWUsIGxpZmVzdHlsZSwgYW5kIGFjY2VzcyB0byBoZWFsdGhjYXJlLg0KDQpIZWFsdGggQ2hhcmFjdGVyaXN0aWNzDQoNClRoZSBtZWFuIEJNSSBvZiAyNS45IGtnL23CsiAoU0QgPSA0LjEpIHBsYWNlcyB0aGUgYXZlcmFnZSBwYXJ0aWNpcGFudCBpbiB0aGUgb3ZlcndlaWdodCBjYXRlZ29yeSwgYWNjb3JkaW5nIHRvIFdITyBjbGFzc2lmaWNhdGlvbi4gT25lIHBhcnRpY2lwYW50IChCTUkgPSAxOC45KSB3YXMgdW5kZXJ3ZWlnaHQsIHdoaWxlIHNldmVyYWwgcGFydGljaXBhbnRzIGhhZCBCTUkgdmFsdWVzIHN1Z2dlc3Rpbmcgb3ZlcndlaWdodCBvciBvYmVzaXR5LiBUaGlzIHBhdHRlcm4gaW1wbGllcyBhIG5lZWQgZm9yIHdlaWdodCBtYW5hZ2VtZW50IGludGVydmVudGlvbnMgd2l0aGluIHNpbWlsYXIgcG9wdWxhdGlvbnMuDQoNClRoZSBtZWFuIHN5c3RvbGljIGJsb29kIHByZXNzdXJlIG9mIDEzNy43IG1tSGcgKFNEID0gNDIuMikgZXhjZWVkcyB0aGUgbm9ybWFsIHJhbmdlICg8MTIwIG1tSGcpLCBpbmRpY2F0aW5nIGEgcHJldmFsZW5jZSBvZiBlbGV2YXRlZCBibG9vZCBwcmVzc3VyZSBvciBoeXBlcnRlbnNpb24gYW1vbmcgcGFydGljaXBhbnRzLiBUaGUgd2lkZSByYW5nZSAoOTLigJMxODggbW1IZykgaGlnaGxpZ2h0cyB2YXJpYWJpbGl0eSB0aGF0IG1heSBiZSBpbmZsdWVuY2VkIGJ5IGFnZSwgQk1JLCBhbmQgb2NjdXBhdGlvbi1yZWxhdGVkIHN0cmVzcy4NCg0KT3ZlcmFsbCBJbnRlcnByZXRhdGlvbg0KDQpPdmVyYWxsLCB0aGUgZmluZGluZ3Mgc3VnZ2VzdCB0aGF0IHRoaXMgc21hbGwsIHByZWRvbWluYW50bHkgbWFsZSwgYW5kIHVyYmFuIGdyb3VwIGRlbW9uc3RyYXRlcyBlYXJseSBzaWducyBvZiBsaWZlc3R5bGUtcmVsYXRlZCBoZWFsdGggcmlza3PigJRub3RhYmx5IG92ZXJ3ZWlnaHQgYW5kIGhpZ2ggYmxvb2QgcHJlc3N1cmUuIEFsdGhvdWdoIHRoZSBzYW1wbGUgc2l6ZSBpcyBsaW1pdGVkLCB0aGUgb2JzZXJ2ZWQgdHJlbmRzIGFsaWduIHdpdGggYnJvYWRlciBldmlkZW5jZSB0aGF0IHVyYmFuIG1pZGRsZS1hZ2VkIGFkdWx0cyBpbiBkZXZlbG9waW5nIGNvbnRleHRzIGFyZSBpbmNyZWFzaW5nbHkgYWZmZWN0ZWQgYnkgbm9uLWNvbW11bmljYWJsZSBkaXNlYXNlcyBkdWUgdG8gZGlldCwgaW5hY3Rpdml0eSwgYW5kIHN0cmVzcy4NCg0KRnVydGhlciByZXNlYXJjaCB3aXRoIGEgbGFyZ2VyLCBtb3JlIHJlcHJlc2VudGF0aXZlIHNhbXBsZSB3b3VsZCBiZSBuZWNlc3NhcnkgdG8gY29uZmlybSB0aGVzZSBwYXR0ZXJucyBhbmQgdG8gaWRlbnRpZnkgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhc3NvY2lhdGlvbnMgYW1vbmcgdmFyaWFibGVzIHN1Y2ggYXMgQk1JLCBibG9vZCBwcmVzc3VyZSwgYWdlLCBhbmQgcmVzaWRlbmNlLg0KDQoNCmBgYHtyfQ0KbmNkICU+JSANCiAgIHRibF9zdW1tYXJ5KCkNCmBgYA0KVW5pdmFyaWF0ZSBBbmFseXNpcw0KDQpJbnRlcnByZXRhdGlvbg0KDQpUaGUgc3R1ZHkgaW5jbHVkZWQgMiwyMDEgcGFydGljaXBhbnRzIHdpdGggZGl2ZXJzZSBzb2Npb2RlbW9ncmFwaGljIGFuZCBoZWFsdGggcHJvZmlsZXMuDQoNCkRlbW9ncmFwaGljIENoYXJhY3RlcmlzdGljcw0KDQpUaGUgbWVkaWFuIGFnZSB3YXMgNTAgeWVhcnMgKElRUjogMzjigJM2NyksIGluZGljYXRpbmcgdGhhdCB0aGUgcGFydGljaXBhbnRzIHdlcmUgcHJpbWFyaWx5IG1pZGRsZS1hZ2VkIGFkdWx0cy4gU3VjaCBhbiBhZ2UgZGlzdHJpYnV0aW9uIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgZ3JvdXAgbW9zdCBhdCByaXNrIGZvciBjaHJvbmljIG5vbi1jb21tdW5pY2FibGUgZGlzZWFzZXMsIGluY2x1ZGluZyBoeXBlcnRlbnNpb24gYW5kIGRpYWJldGVzLg0KDQpJbiB0ZXJtcyBvZiBzZXggZGlzdHJpYnV0aW9uLCBmZW1hbGVzIGNvbnN0aXR1dGVkIDU0JSBvZiB0aGUgc2FtcGxlLCB3aGlsZSBtYWxlcyByZXByZXNlbnRlZCA0NiUsIHN1Z2dlc3RpbmcgYSByZWxhdGl2ZWx5IGJhbGFuY2VkIGdlbmRlciByYXRpbyB3aXRoIGEgc2xpZ2h0IGZlbWFsZSBwcmVkb21pbmFuY2UuDQoNClJlc2lkZW50aWFsIGFuZCBFZHVjYXRpb25hbCBQcm9maWxlDQoNCkEgbWFqb3JpdHkgb2YgcGFydGljaXBhbnRzICg2MCUpIHJlc2lkZWQgaW4gcnVyYWwgYXJlYXMsIHdoZXJlYXMgNDAlIHdlcmUgZnJvbSB1cmJhbiBzZXR0aW5ncy4gVGhpcyBtaXggcHJvdmlkZXMgYSBjb21wYXJhdGl2ZSBiYXNpcyBmb3IgZXhhbWluaW5nIHJ1cmFs4oCTdXJiYW4gaGVhbHRoIGRpZmZlcmVudGlhbHMuDQoNCkVkdWNhdGlvbmFsIGF0dGFpbm1lbnQgdmFyaWVkOiAzNiUgaGFkIHNlY29uZGFyeSBlZHVjYXRpb24sIDMwJSBwcmltYXJ5LCAyMyUgaGlnaGVyLCBhbmQgMTElIGhhZCBubyBmb3JtYWwgZWR1Y2F0aW9uLiBUaGlzIGluZGljYXRlcyBhIHJlbGF0aXZlbHkgZWR1Y2F0ZWQgcG9wdWxhdGlvbiwgd2l0aCBuZWFybHkgOTAlIGhhdmluZyByZWNlaXZlZCBzb21lIGZvcm0gb2Ygc2Nob29saW5nLg0KDQpPY2N1cGF0aW9uYWwgRGlzdHJpYnV0aW9uDQoNClRoZSBtb3N0IGNvbW1vbiBvY2N1cGF0aW9ucyB3ZXJlIHNlcnZpY2UgKDMwJSksIGZhcm1pbmcgKDI4JSksIGFuZCBidXNpbmVzcyAoMjElKSwgZm9sbG93ZWQgYnkgcmV0aXJlZCAoMTElKSBhbmQgdW5lbXBsb3llZCAoMTAlKS4gVGhpcyByZWZsZWN0cyBhIHBvcHVsYXRpb24gd2l0aCBtaXhlZCBlbXBsb3ltZW50IHR5cGVz4oCUc3Bhbm5pbmcgZm9ybWFsLCBpbmZvcm1hbCwgYW5kIGFncmljdWx0dXJhbCBzZWN0b3JzLg0KDQpIZWFsdGggSW5kaWNhdG9ycw0KDQpUaGUgbWVkaWFuIEJNSSB3YXMgMjUuNCBrZy9twrIgKElRUjogMjEuM+KAkzI4LjMpLCBzdWdnZXN0aW5nIHRoYXQgdGhlIHR5cGljYWwgcGFydGljaXBhbnQgZmVsbCB3aXRoaW4gdGhlIG92ZXJ3ZWlnaHQgcmFuZ2UgKEJNSSDiiaUgMjUpLiBUaGlzIGltcGxpZXMgYSBtb2RlcmF0ZSBwcmV2YWxlbmNlIG9mIG92ZXJ3ZWlnaHQgb3Igb2Jlc2l0eSBhbW9uZyBhZHVsdHMgaW4gdGhlIHNhbXBsZS4NCg0KVGhlIG1lZGlhbiBzeXN0b2xpYyBibG9vZCBwcmVzc3VyZSB3YXMgMTM0IG1tSGcgKElRUjogMTE04oCTMTY1KSBhbmQgbWVkaWFuIGRpYXN0b2xpYyBwcmVzc3VyZSB3YXMgOTEgbW1IZyAoSVFSOiA3NuKAkzEwNyksIGJvdGggZXhjZWVkaW5nIHRoZSBub3JtYWwgcmFuZ2UgKDwxMjAvODAgbW1IZykuIFRoZXNlIGZpbmRpbmdzIGluZGljYXRlIGEgbm90YWJsZSBwcmVzZW5jZSBvZiBlbGV2YXRlZCBibG9vZCBwcmVzc3VyZSBpbiB0aGUgc2FtcGxlLg0KDQpJbiB0ZXJtcyBvZiBkaWFnbm9zZWQgY29uZGl0aW9ucywgMjMlIG9mIHBhcnRpY2lwYW50cyByZXBvcnRlZCBkaWFiZXRlcywgYW5kIDM4JSBoYWQgaHlwZXJ0ZW5zaW9uLiBUaGUgY29leGlzdGVuY2Ugb2YgdGhlc2UgY29uZGl0aW9ucyBpcyBjb25zaXN0ZW50IHdpdGgga25vd24gY2FyZGlvbWV0YWJvbGljIHJpc2tzIG9ic2VydmVkIGluIG1pZGRsZS1hZ2VkIGFuZCBvbGRlciBhZHVsdHMsIHBhcnRpY3VsYXJseSB0aG9zZSB3aXRoIGVsZXZhdGVkIEJNSS4NCg0KU3VtbWFyeSBJbnRlcnByZXRhdGlvbg0KDQpPdmVyYWxsLCB0aGUgZGF0YXNldCByZXByZXNlbnRzIGEgcHJlZG9taW5hbnRseSBydXJhbCwgbWlkZGxlLWFnZWQsIGFuZCBtb2RlcmF0ZWx5IGVkdWNhdGVkIHBvcHVsYXRpb24gd2l0aCBkaXZlcnNlIG9jY3VwYXRpb25hbCBiYWNrZ3JvdW5kcy4gVGhlIGZpbmRpbmdzIHJldmVhbCBhIHN1YnN0YW50aWFsIHByZXZhbGVuY2Ugb2Ygb3ZlcndlaWdodCwgaHlwZXJ0ZW5zaW9uLCBhbmQgZGlhYmV0ZXMsIHVuZGVyc2NvcmluZyB0aGUgZ3Jvd2luZyBidXJkZW4gb2Ygbm9uLWNvbW11bmljYWJsZSBkaXNlYXNlcyAoTkNEcykgaW4gYm90aCBydXJhbCBhbmQgdXJiYW4gY29tbXVuaXRpZXMuDQoNClRoZXNlIHJlc3VsdHMgaGlnaGxpZ2h0IHRoZSBuZWVkIGZvciBjb21tdW5pdHktYmFzZWQgaW50ZXJ2ZW50aW9ucyBwcm9tb3RpbmcgaGVhbHRoeSBkaWV0cywgcGh5c2ljYWwgYWN0aXZpdHksIGFuZCByb3V0aW5lIHNjcmVlbmluZyBmb3IgYmxvb2QgcHJlc3N1cmUgYW5kIGdsdWNvc2UgdG8gcHJldmVudCBsb25nLXRlcm0gY29tcGxpY2F0aW9ucy4NCg0KDQoNCmBgYHtyfQ0KbmNkICU+JQ0KICB0Ymxfc3VtbWFyeSgNCiAgICBieSA9IHJlc2lkZW5jZSkNCmBgYA0KDQpJbnRlcnByZXRhdGlvbiBvZiBCaXZhcmlhdGUgRmluZGluZ3MNCg0KVGhlIGJpdmFyaWF0ZSBhbmFseXNpcyBleHBsb3JlZCB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiByZXNpZGVuY2UgKHJ1cmFsIHZzLiB1cmJhbikgYW5kIHZhcmlvdXMgZGVtb2dyYXBoaWMsIHNvY2lvZWNvbm9taWMsIGFuZCBoZWFsdGggY2hhcmFjdGVyaXN0aWNzLg0KDQpEZW1vZ3JhcGhpYyBGYWN0b3JzDQoNCk5vIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgd2VyZSBmb3VuZCBpbiBhZ2Ugb3Igc2V4IGRpc3RyaWJ1dGlvbnMgYmV0d2VlbiBydXJhbCBhbmQgdXJiYW4gcGFydGljaXBhbnRzIChwID4gLjA1KS4gVGhpcyBpbmRpY2F0ZXMgY29tcGFyYWJsZSBkZW1vZ3JhcGhpYyBwcm9maWxlcyBhY3Jvc3MgYm90aCByZXNpZGVuY2UgZ3JvdXBzLg0KDQpFZHVjYXRpb24gYW5kIE9jY3VwYXRpb24NCg0KRWR1Y2F0aW9uYWwgYXR0YWlubWVudCBkaWQgbm90IGRpZmZlciBzaWduaWZpY2FudGx5IGJ5IHJlc2lkZW5jZSB0eXBlIChwID0gMC4zOSkuIEhvd2V2ZXIsIG9jY3VwYXRpb24gc2hvd2VkIGEgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gKHAgPSAwLjA0KToNCg0KVXJiYW4gcmVzaWRlbnRzIHdlcmUgbW9yZSBlbmdhZ2VkIGluIGJ1c2luZXNzIGFjdGl2aXRpZXMgKDMwJSksIHdoaWxlDQoNClJ1cmFsIHJlc2lkZW50cyB3ZXJlIG1vcmUgbGlrZWx5IHRvIGJlIGZhcm1lcnMgKDI5JSkgYW5kIHVuZW1wbG95ZWQgKDE0JSkuDQpUaGlzIHJlZmxlY3RzIHR5cGljYWwgb2NjdXBhdGlvbmFsIHBhdHRlcm5zIGxpbmtlZCB0byBydXJhbOKAk3VyYmFuIGVjb25vbWljIHN0cnVjdHVyZXMuDQoNCkJvZHkgTWFzcyBJbmRleCBhbmQgQmxvb2QgUHJlc3N1cmUNCg0KQWx0aG91Z2ggbWVkaWFuIEJNSSB2YWx1ZXMgd2VyZSBzaW1pbGFyIChydXJhbCAyNS41IHZzLiB1cmJhbiAyNC45IGtnL23CsiwgcCA9IDAuMTUpLCB0aGUgbWVkaWFuIHN5c3RvbGljIGJsb29kIHByZXNzdXJlIHdhcyBzaWduaWZpY2FudGx5IGhpZ2hlciBhbW9uZyBydXJhbCBwYXJ0aWNpcGFudHMgKDEzNiBtbUhnIHZzLiAxMzEgbW1IZywgcCA9IDAuMDMpLiBUaGlzIGluZGljYXRlcyB0aGF0IHJ1cmFsIHJlc2lkZW50cyBoYWQgZ3JlYXRlciBwcmV2YWxlbmNlIG9mIGVsZXZhdGVkIGJsb29kIHByZXNzdXJlLCBwb3NzaWJseSByZWZsZWN0aW5nIGxpZmVzdHlsZSBmYWN0b3JzLCBvbGRlciBhZ2UgZGlzdHJpYnV0aW9uLCBvciBsaW1pdGVkIGhlYWx0aGNhcmUgYWNjZXNzLg0KDQpDaHJvbmljIERpc2Vhc2UgU3RhdHVzDQoNClRoZSBwcmV2YWxlbmNlIG9mIGRpYWJldGVzIHdhcyBzbGlnaHRseSBoaWdoZXIgaW4gcnVyYWwgYXJlYXMgKDI2JSkgdGhhbiBpbiB1cmJhbiAoMjAlKSwgYnV0IHRoaXMgZGlmZmVyZW5jZSB3YXMgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgKHAgPSAwLjA4KS4NCkhvd2V2ZXIsIGh5cGVydGVuc2lvbiBwcmV2YWxlbmNlIHdhcyBzaWduaWZpY2FudGx5IGhpZ2hlciBhbW9uZyBydXJhbCBwYXJ0aWNpcGFudHMgKDQxJSkgY29tcGFyZWQgdG8gdXJiYW4gcGFydGljaXBhbnRzICgzMyUpIChwID0gMC4wMiksIGNvbmZpcm1pbmcgYSBtZWFuaW5nZnVsIGFzc29jaWF0aW9uIGJldHdlZW4gcmVzaWRlbmNlIGFuZCBoeXBlcnRlbnNpb24uDQoNCk92ZXJhbGwgU3VtbWFyeQ0KDQpUaGUgYml2YXJpYXRlIGFuYWx5c2lzIHJldmVhbHMgdGhhdCB3aGlsZSBtb3N0IHNvY2lvZGVtb2dyYXBoaWMgZmFjdG9ycyAoYWdlLCBzZXgsIGVkdWNhdGlvbiwgQk1JKSBhcmUgc2ltaWxhciBhY3Jvc3MgcmVzaWRlbmNlIHR5cGVzLCBvY2N1cGF0aW9uLCBzeXN0b2xpYyBibG9vZCBwcmVzc3VyZSwgYW5kIGh5cGVydGVuc2lvbiBzaG93IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcnVyYWzigJN1cmJhbiBkaWZmZXJlbmNlcy4NCg0KU3BlY2lmaWNhbGx5Og0KDQpSdXJhbCByZXNpZGVudHMgZXhoaWJpdGVkIGhpZ2hlciBibG9vZCBwcmVzc3VyZSBhbmQgaHlwZXJ0ZW5zaW9uIHByZXZhbGVuY2UuDQoNClVyYmFuIHJlc2lkZW50cyB3ZXJlIG1vcmUgY29tbW9ubHkgZW5nYWdlZCBpbiBidXNpbmVzcyBvciBmb3JtYWwtc2VjdG9yIGVtcGxveW1lbnQuDQoNClRoZXNlIGZpbmRpbmdzIGhpZ2hsaWdodCBhIHNoaWZ0aW5nIHBhdHRlcm4gb2Ygbm9uLWNvbW11bmljYWJsZSBkaXNlYXNlIHJpc2vigJR3aGVyZSBydXJhbCBwb3B1bGF0aW9ucywgdHJhZGl0aW9uYWxseSBjb25zaWRlcmVkIGxlc3MgYXQgcmlzaywgYXJlIG5vdyBzaG93aW5nIGNvbXBhcmFibGUgb3IgZXZlbiBoaWdoZXIgTkNEIHByZXZhbGVuY2UgdGhhbiB1cmJhbiBwb3B1bGF0aW9ucy4NCg0KYGBge3J9DQptb2RlbCA8LSBnbG0oIGZhY3RvcihoeXBlcnRlbnNpb24pIH4gYWdlICsgc2V4ICsgYm1pICsgcmVzaWRlbmNlICsgZWR1Y2F0aW9uICsgb2NjdXBhdGlvbiArIGRpYWJldGVzLCBkYXRhID0gbmNkLCBmYW1pbHkgPSBiaW5vbWlhbCkNCnRibF9yZWdyZXNzaW9uKG1vZGVsKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KcGxvdChjYXJzKQ0KDQoNCg==