Start Using the neg.cat() Function

From the negligible R package


Introduction

What is the purpose/goal of neg.cat()?

The purpose of the neg.cat function is to test for a negligible relationship among two categorical variables.

What is the theory behind neg.semfit()?

The test is based upon the popular Cramer’s V statistic, which was found by Shiskina, Farmus, & Cribbie (http://dx.doi.org/10.20982/tqmp.14.3.p167) to perform well in this situation. A negligible association can be concluded if the upper bound of the 100(1-2alpha)% CI for Cramer’s V falls below eiU. In other words, in such a situation we can reject Ho: The relationship is non-negligible (V >= eiU). eiU is set to .2 by default, but should be set based on the context of the research. Since Cramer’s V statistic is in a correlation metric, setting eiU is a matter of determining what correlation is the minimally meaningful effect size (MMES) given the context of the research.

Shiskina, T., Farmus, L., & Cribbie, R. A. (2018). Testing for a lack of relationship among categorical variables. The Quantitative Methods for Psychology, 14, 167-179. http://dx.doi.org/10.20982/tqmp.14.3.p167

Null and Alternate Hypotheses of the Procedure

The null hypothesis specifies that the association among the two categorical variables is non-negligible. \[H_{0}: V_{pop} \ge eiU\]

The alternate hypothesis specifies that the association among the two categorical variables is negligible. \[H_{1}: V_{pop} \lt eiU\]

Using neg.cat()

Now let’s use the function. Users must specify either v1/v2 (the two categorical variables) or tab (a table of frequencies across the two categorical variables).

Required arguments (no default)

v1: first categorical variable

v2: second categorical variable

OR

tab: contingency table for the two predictor variables

Optional arguments (has a default)

eiU: the upper bound of the negligible effect (equivalence) interval (since Cramer’s V has a lower bound of 0, only the upper bound needs to be specified, and tested). The default is an upper bound of .2, but depends on the context of the research.

data: an optional data file containing the two categorical variables; the default is NULL

plot: should a plot showing the effect of interest and the proportional distance be produced; default is TRUE

save: should the plot be saved to ‘jpg’ or ‘png’; default is FALSE

nbootpd: number of bootstrap samples for calculating the CI for the proportional distance; default is 1000 bootstrap samples

alpha: nominal Type I error rate. The default is .05, but any value can be used (e.g., .01, .10, .06)

Examples

Example 1

Let’s look at whether the class of the passengers on the Titanic was neligibly related to their sex.

library(negligible)
d<-data.frame(Titanic)
tab<- table(d[rep(row.names(d), d$Freq), 1:2])[1:3,]
tab
     Sex
Class Male Female
  1st  180    145
  2nd  179    106
  3rd  510    196
neg.cat(tab = tab)


******************** 

** Negligible Effect Test of the Relationship ** 
** Between Two Categorical Variables ** 

******************** 

Nominal Type I error rate (alpha): 0.05 

******************** 

Cramer's V:  0.151 

90% CI for Cramer's V: (0.102, 0.194)

******************* 

Proportion of Shared Variability:  0.023 

******************* 

Upper Bound of the Equivalence Interval (Correlation Metric):  0.2 

Upper Bound of the 90% CI for Cramer's V: 0.194

NHST Decision: 
The null hypothesis that the relationship between the categorical variables is substantial can be rejected. A negligible relationship among the variables is concluded. Be sure to interpret the magnitude (and precision) of the effect size. 

******************* 

Proportional Distance 

Proportional Distance: 0.755 
Confidence Interval for the Proportional Distance: (0.502,1.034)

Note: Confidence Interval for the Proportional Distance may not be precise with small N 
******************* 

Since the upper bound of the 100(1-2alpha)% CI for Cramer’s V falls below the upper bound of the negligible effect (equivalence) bound (eiU = .2), we can reject \(H_{0}: V_{pop} \ge eiU\) and conclude that class and sex are negligibly related. Based on the proportional distance, Cramer’s v is about 75% of the distance from 0 to eiU (but the CI on the proportional distance is quite wide).

Example 2

Let’s explore whether there is a negligible association between education level (1 = high school to 5 = graduate work) and sex (1 = male; 2 = female) using the sat.act dataset available in the psych package. We will also change the alpha level (nominal Type I error rate) to .10.

d<-psych::sat.act
head(d)
      gender education age ACT SATV SATQ
29442      2         3  19  24  500  500
29457      2         3  23  35  600  500
29498      2         3  20  21  480  470
29503      1         4  27  26  550  520
29504      1         2  33  31  600  550
29518      1         5  26  28  640  640
neg.cat(v1 = gender, v2 = education, data = d, alpha = .10)


******************** 

** Negligible Effect Test of the Relationship ** 
** Between Two Categorical Variables ** 

******************** 

Nominal Type I error rate (alpha): 0.1 

******************** 

Cramer's V:  0.152 

80% CI for Cramer's V: (0.077, 0.183)

******************* 

Proportion of Shared Variability:  0.023 

******************* 

Upper Bound of the Equivalence Interval (Correlation Metric):  0.2 

Upper Bound of the 80% CI for Cramer's V: 0.183

NHST Decision: 
The null hypothesis that the relationship between the categorical variables is substantial can be rejected. A negligible relationship among the variables is concluded. Be sure to interpret the magnitude (and precision) of the effect size. 

******************* 

Proportional Distance 

Proportional Distance: 0.76 
Confidence Interval for the Proportional Distance: (0.494,1.199)

Note: Confidence Interval for the Proportional Distance may not be precise with small N 
******************* 

Since the upper bound of the 100(1-2alpha)% CI for Cramer’s V falls below the upper bound of the negligible effect (equivalence) bound (eiU = .2), we can reject \(H_{0}: V_{pop} \ge eiU\) and conclude that gender and education are negligibly related. Based on the proportional distance, Cramer’s v is 76% of the distance from 0 to eiU (but the CI on the proportional distance is quite wide).

Extractable Elements

A number of elements of the output can be extracted, including:

cramv Cramer’s V statistic

propvar Proportion of variance explained (V^2)

cil Lower bound of the confidence interval for Cramer’s V

ciu Upper bound of the confidence interval for Cramer’s V

eiU Upper bound of the negligible effect (equivalence) interval

decis NHST decision

PD Proportional distance

CI95L Lower bound of the 1-alpha CI for the PD

CI95U Upper bound of the 1-alpha CI for the PD

alpha Nominal Type I error rate

LS0tDQp0aXRsZTogIlN0YXJ0IFVzaW5nIHRoZSBgbmVnLmNhdCgpYCBGdW5jdGlvbiINCnN1YnRpdGxlOiB8IA0KICAgIEZyb20gdGhlIFtgbmVnbGlnaWJsZWBdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9uZWdsaWdpYmxlL2luZGV4Lmh0bWwpIFIgcGFja2FnZSFbXShHOi9NeSBEcml2ZS9SZXNlYXJjaC9DcmliYmllIExhYi9uZWdsaWdpYmxlIFZpZ25ldHRlcy9UZW1wbGF0ZS9uZWcubG9nby5wbmcpe3dpZHRoPTEwJX0gIA0KYXV0aG9yOiAiW1JvYiBDcmliYmllXShodHRwczovL2NyaWJiaWUuaW5mby55b3JrdS5jYS8pIg0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJvYm9ib29rOg0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGhpZ2hsaWdodDogdGFuZ28NCi0tLQ0KDQpgYGB7ciBzZXR1cCwgZWNobz1GQUxTRSwgY2FjaGU9RkFMU0UsIG1lc3NhZ2VzPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KI2luc3RhbGwucGFja2FnZXMoInJtZGZvcm1hdHMiKQ0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkocm1kZm9ybWF0cywgd2Fybi5jb25mbGljdHM9RkFMU0UpKQ0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkoa25pdHIsIHdhcm4uY29uZmxpY3RzPUZBTFNFKSkNCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KHRpZHl2ZXJzZSwgd2Fybi5jb25mbGljdHM9RkFMU0UpKQ0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkocGxvdGx5LCB3YXJuLmNvbmZsaWN0cz1GQUxTRSkpDQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMobGlicmFyeShyZWFkeGwsIHdhcm4uY29uZmxpY3RzPUZBTFNFKSkNCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KHBsb3RseSwgd2Fybi5jb25mbGljdHM9RkFMU0UpKQ0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkoTWV0QnJld2VyLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSkpDQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMobGlicmFyeShnZ2FuaW1hdGUsIHdhcm4uY29uZmxpY3RzPUZBTFNFKSkNCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KGRwbHlyLCB3YXJuLmNvbmZsaWN0cz1GQUxTRSkpDQoNCiMjIEdsb2JhbCBvcHRpb25zDQpvcHRpb25zKG1heC5wcmludD0iNzUiKQ0Kb3B0c19jaHVuayRzZXQoZWNobz1UUlVFLA0KCSAgICAgICAgICAgICBjYWNoZT1UUlVFLA0KICAgICAgICAgICAgICAgcHJvbXB0PUZBTFNFLA0KICAgICAgICAgICAgICAgY29tbWVudD1OQSwNCiAgICAgICAgICAgICAgIG1lc3NhZ2U9RkFMU0UsDQogICAgICAgICAgICAgICB3YXJuaW5nPUZBTFNFKQ0Kb3B0c19rbml0JHNldCh3aWR0aD03NSkNCmBgYA0KDQo8YnIvPg0KDQojIyAqKkludHJvZHVjdGlvbioqDQoNCg0KDQojIyMgKipXaGF0IGlzIHRoZSBwdXJwb3NlL2dvYWwgb2YgYG5lZy5jYXQoKWA/KioNCg0KVGhlIHB1cnBvc2Ugb2YgdGhlIG5lZy5jYXQgZnVuY3Rpb24gaXMgdG8gdGVzdCBmb3IgYSBuZWdsaWdpYmxlIHJlbGF0aW9uc2hpcCBhbW9uZyB0d28gY2F0ZWdvcmljYWwgdmFyaWFibGVzLiANCg0KDQojIyMgKipXaGF0IGlzIHRoZSB0aGVvcnkgYmVoaW5kIGBuZWcuc2VtZml0KClgPyoqDQoNClRoZSB0ZXN0IGlzIGJhc2VkIHVwb24gdGhlIHBvcHVsYXIgQ3JhbWVyJ3MgViBzdGF0aXN0aWMsIHdoaWNoIHdhcyBmb3VuZCBieSBTaGlza2luYSwgRmFybXVzLCAmIENyaWJiaWUgKGh0dHA6Ly9keC5kb2kub3JnLzEwLjIwOTgyL3RxbXAuMTQuMy5wMTY3KSB0byBwZXJmb3JtIHdlbGwgaW4gdGhpcyBzaXR1YXRpb24uIEEgbmVnbGlnaWJsZSBhc3NvY2lhdGlvbiBjYW4gYmUgY29uY2x1ZGVkIGlmIHRoZSB1cHBlciBib3VuZCBvZiB0aGUgMTAwKDEtMmFscGhhKSUgQ0kgZm9yIENyYW1lcidzIFYgZmFsbHMgYmVsb3cgZWlVLiBJbiBvdGhlciB3b3JkcywgaW4gc3VjaCBhIHNpdHVhdGlvbiB3ZSBjYW4gcmVqZWN0IEhvOiBUaGUgcmVsYXRpb25zaGlwIGlzIG5vbi1uZWdsaWdpYmxlIChWID49IGVpVSkuIGVpVSBpcyBzZXQgdG8gLjIgYnkgZGVmYXVsdCwgYnV0IHNob3VsZCBiZSBzZXQgYmFzZWQgb24gdGhlIGNvbnRleHQgb2YgdGhlIHJlc2VhcmNoLiBTaW5jZSBDcmFtZXIncyBWIHN0YXRpc3RpYyBpcyBpbiBhIGNvcnJlbGF0aW9uIG1ldHJpYywgc2V0dGluZyBlaVUgaXMgYSBtYXR0ZXIgb2YgZGV0ZXJtaW5pbmcgd2hhdCBjb3JyZWxhdGlvbiBpcyB0aGUgbWluaW1hbGx5IG1lYW5pbmdmdWwgZWZmZWN0IHNpemUgKE1NRVMpIGdpdmVuIHRoZSBjb250ZXh0IG9mIHRoZSByZXNlYXJjaC4NCg0KU2hpc2tpbmEsIFQuLCBGYXJtdXMsIEwuLCAmIENyaWJiaWUsIFIuIEEuICgyMDE4KS4gVGVzdGluZyBmb3IgYSBsYWNrIG9mIHJlbGF0aW9uc2hpcA0KYW1vbmcgY2F0ZWdvcmljYWwgdmFyaWFibGVzLiBUaGUgUXVhbnRpdGF0aXZlIE1ldGhvZHMgZm9yIFBzeWNob2xvZ3ksIDE0LCAxNjctMTc5LiBodHRwOi8vZHguZG9pLm9yZy8xMC4yMDk4Mi90cW1wLjE0LjMucDE2Nw0KDQoNCiMjIyMgKk51bGwgYW5kIEFsdGVybmF0ZSBIeXBvdGhlc2VzIG9mIHRoZSBQcm9jZWR1cmUqDQoNClRoZSBudWxsIGh5cG90aGVzaXMgc3BlY2lmaWVzIHRoYXQgdGhlIGFzc29jaWF0aW9uIGFtb25nIHRoZSB0d28gY2F0ZWdvcmljYWwgdmFyaWFibGVzIGlzIG5vbi1uZWdsaWdpYmxlLg0KJCRIX3swfTogVl97cG9wfSBcZ2UgZWlVJCQNCg0KDQpUaGUgYWx0ZXJuYXRlIGh5cG90aGVzaXMgc3BlY2lmaWVzIHRoYXQgdGhlIGFzc29jaWF0aW9uIGFtb25nIHRoZSB0d28gY2F0ZWdvcmljYWwgdmFyaWFibGVzIGlzIG5lZ2xpZ2libGUuDQokJEhfezF9OiBWX3twb3B9IFxsdCBlaVUkJA0KDQoNCiMjIyAqKlVzaW5nIGBuZWcuY2F0KClgKioNCg0KTm93IGxldCdzIHVzZSB0aGUgZnVuY3Rpb24uIFVzZXJzIG11c3Qgc3BlY2lmeSBlaXRoZXIgdjEvdjIgKHRoZSB0d28gY2F0ZWdvcmljYWwgdmFyaWFibGVzKSBvciB0YWIgKGEgdGFibGUgb2YgZnJlcXVlbmNpZXMgYWNyb3NzIHRoZSB0d28gY2F0ZWdvcmljYWwgdmFyaWFibGVzKS4gDQoNCiMjIyMgKlJlcXVpcmVkIGFyZ3VtZW50cyAobm8gZGVmYXVsdCkqDQoNCip2MSo6IGZpcnN0IGNhdGVnb3JpY2FsIHZhcmlhYmxlDQoNCip2Mio6IHNlY29uZCBjYXRlZ29yaWNhbCB2YXJpYWJsZQ0KDQpPUg0KDQoqdGFiKjogY29udGluZ2VuY3kgdGFibGUgZm9yIHRoZSB0d28gcHJlZGljdG9yIHZhcmlhYmxlcw0KDQoNCiMjIyMgKk9wdGlvbmFsIGFyZ3VtZW50cyAoaGFzIGEgZGVmYXVsdCkqDQoNCiplaVUqOiB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIG5lZ2xpZ2libGUgZWZmZWN0IChlcXVpdmFsZW5jZSkgaW50ZXJ2YWwgKHNpbmNlIENyYW1lcidzIFYgaGFzIGEgbG93ZXIgYm91bmQgb2YgMCwgb25seSB0aGUgdXBwZXIgYm91bmQgbmVlZHMgdG8gYmUgc3BlY2lmaWVkLCBhbmQgdGVzdGVkKS4gVGhlIGRlZmF1bHQgaXMgYW4gdXBwZXIgYm91bmQgb2YgLjIsIGJ1dCBkZXBlbmRzIG9uIHRoZSBjb250ZXh0IG9mIHRoZSByZXNlYXJjaC4gIA0KDQoqZGF0YSo6IGFuIG9wdGlvbmFsIGRhdGEgZmlsZSBjb250YWluaW5nIHRoZSB0d28gY2F0ZWdvcmljYWwgdmFyaWFibGVzOyB0aGUgZGVmYXVsdCBpcyBOVUxMIA0KDQoqcGxvdCo6IHNob3VsZCBhIHBsb3Qgc2hvd2luZyB0aGUgZWZmZWN0IG9mIGludGVyZXN0IGFuZCB0aGUgcHJvcG9ydGlvbmFsIGRpc3RhbmNlIGJlIHByb2R1Y2VkOyBkZWZhdWx0IGlzIFRSVUUNCg0KKnNhdmUqOiBzaG91bGQgdGhlIHBsb3QgYmUgc2F2ZWQgdG8gJ2pwZycgb3IgJ3BuZyc7IGRlZmF1bHQgaXMgRkFMU0UNCg0KKm5ib290cGQqOiBudW1iZXIgb2YgYm9vdHN0cmFwIHNhbXBsZXMgZm9yIGNhbGN1bGF0aW5nIHRoZSBDSSBmb3IgdGhlIHByb3BvcnRpb25hbCBkaXN0YW5jZTsgZGVmYXVsdCBpcyAxMDAwIGJvb3RzdHJhcCBzYW1wbGVzDQoNCiphbHBoYSo6IG5vbWluYWwgVHlwZSBJIGVycm9yIHJhdGUuIFRoZSBkZWZhdWx0IGlzIC4wNSwgYnV0IGFueSB2YWx1ZSBjYW4gYmUgdXNlZCAoZS5nLiwgLjAxLCAuMTAsIC4wNikNCg0KDQoNCiMjICoqRXhhbXBsZXMqKg0KDQojIyMgKipFeGFtcGxlIDEqKg0KDQpMZXQncyBsb29rIGF0IHdoZXRoZXIgdGhlIGNsYXNzIG9mIHRoZSBwYXNzZW5nZXJzIG9uIHRoZSBUaXRhbmljIHdhcyBuZWxpZ2libHkgcmVsYXRlZCB0byB0aGVpciBzZXguDQoNCg0KYGBge3J9DQpsaWJyYXJ5KG5lZ2xpZ2libGUpDQpkPC1kYXRhLmZyYW1lKFRpdGFuaWMpDQp0YWI8LSB0YWJsZShkW3JlcChyb3cubmFtZXMoZCksIGQkRnJlcSksIDE6Ml0pWzE6MyxdDQp0YWINCm5lZy5jYXQodGFiID0gdGFiKQ0KYGBgDQoNClNpbmNlIHRoZSB1cHBlciBib3VuZCBvZiB0aGUgMTAwKDEtMmFscGhhKSUgQ0kgZm9yIENyYW1lcidzIFYgZmFsbHMgYmVsb3cgdGhlIHVwcGVyIGJvdW5kIG9mIHRoZSBuZWdsaWdpYmxlIGVmZmVjdCAoZXF1aXZhbGVuY2UpIGJvdW5kIChlaVUgPSAuMiksIHdlIGNhbiByZWplY3QgJEhfezB9OiBWX3twb3B9IFxnZSBlaVUkIGFuZCBjb25jbHVkZSB0aGF0ICoqY2xhc3MqKiBhbmQgKipzZXgqKiBhcmUgbmVnbGlnaWJseSByZWxhdGVkLiBCYXNlZCBvbiB0aGUgcHJvcG9ydGlvbmFsIGRpc3RhbmNlLCBDcmFtZXIncyB2IGlzIGFib3V0IDc1JSBvZiB0aGUgZGlzdGFuY2UgZnJvbSAwIHRvIGVpVSAoYnV0IHRoZSBDSSBvbiB0aGUgcHJvcG9ydGlvbmFsIGRpc3RhbmNlIGlzIHF1aXRlIHdpZGUpLg0KDQoNCiMjIyAqKkV4YW1wbGUgMioqDQoNCkxldCdzIGV4cGxvcmUgd2hldGhlciB0aGVyZSBpcyBhIG5lZ2xpZ2libGUgYXNzb2NpYXRpb24gYmV0d2VlbiBlZHVjYXRpb24gbGV2ZWwgKDEgPSBoaWdoIHNjaG9vbCB0byA1ID0gZ3JhZHVhdGUgd29yaykgYW5kIHNleCAoMSA9IG1hbGU7IDIgPSBmZW1hbGUpIHVzaW5nIHRoZSBzYXQuYWN0IGRhdGFzZXQgYXZhaWxhYmxlIGluIHRoZSAqcHN5Y2gqIHBhY2thZ2UuIFdlIHdpbGwgYWxzbyBjaGFuZ2UgdGhlIGFscGhhIGxldmVsIChub21pbmFsIFR5cGUgSSBlcnJvciByYXRlKSB0byAuMTAuIA0KDQpgYGB7cn0NCmQ8LXBzeWNoOjpzYXQuYWN0DQpoZWFkKGQpDQpuZWcuY2F0KHYxID0gZ2VuZGVyLCB2MiA9IGVkdWNhdGlvbiwgZGF0YSA9IGQsIGFscGhhID0gLjEwKQ0KYGBgDQoNClNpbmNlIHRoZSB1cHBlciBib3VuZCBvZiB0aGUgMTAwKDEtMmFscGhhKSUgQ0kgZm9yIENyYW1lcidzIFYgZmFsbHMgYmVsb3cgdGhlIHVwcGVyIGJvdW5kIG9mIHRoZSBuZWdsaWdpYmxlIGVmZmVjdCAoZXF1aXZhbGVuY2UpIGJvdW5kIChlaVUgPSAuMiksIHdlIGNhbiByZWplY3QgJEhfezB9OiBWX3twb3B9IFxnZSBlaVUkIGFuZCBjb25jbHVkZSB0aGF0ICoqZ2VuZGVyKiogYW5kICoqZWR1Y2F0aW9uKiogYXJlIG5lZ2xpZ2libHkgcmVsYXRlZC4gQmFzZWQgb24gdGhlIHByb3BvcnRpb25hbCBkaXN0YW5jZSwgQ3JhbWVyJ3MgdiBpcyA3NiUgb2YgdGhlIGRpc3RhbmNlIGZyb20gMCB0byBlaVUgKGJ1dCB0aGUgQ0kgb24gdGhlIHByb3BvcnRpb25hbCBkaXN0YW5jZSBpcyBxdWl0ZSB3aWRlKS4NCg0KDQojIyAqKkV4dHJhY3RhYmxlIEVsZW1lbnRzKioNCg0KQSBudW1iZXIgb2YgZWxlbWVudHMgb2YgdGhlIG91dHB1dCBjYW4gYmUgZXh0cmFjdGVkLCBpbmNsdWRpbmc6DQoNCipjcmFtdiogQ3JhbWVyJ3MgViBzdGF0aXN0aWMNCg0KKnByb3B2YXIqIFByb3BvcnRpb24gb2YgdmFyaWFuY2UgZXhwbGFpbmVkIChWXjIpDQoNCipjaWwqIExvd2VyIGJvdW5kIG9mIHRoZSBjb25maWRlbmNlIGludGVydmFsIGZvciBDcmFtZXIncyBWDQoNCipjaXUqIFVwcGVyIGJvdW5kIG9mIHRoZSBjb25maWRlbmNlIGludGVydmFsIGZvciBDcmFtZXIncyBWDQoNCiplaVUqIFVwcGVyIGJvdW5kIG9mIHRoZSBuZWdsaWdpYmxlIGVmZmVjdCAoZXF1aXZhbGVuY2UpIGludGVydmFsDQoNCipkZWNpcyogTkhTVCBkZWNpc2lvbg0KDQoqUEQqIFByb3BvcnRpb25hbCBkaXN0YW5jZQ0KDQoqQ0k5NUwqIExvd2VyIGJvdW5kIG9mIHRoZSAxLWFscGhhIENJIGZvciB0aGUgUEQNCg0KKkNJOTVVKiBVcHBlciBib3VuZCBvZiB0aGUgMS1hbHBoYSBDSSBmb3IgdGhlIFBEDQoNCiphbHBoYSogTm9taW5hbCBUeXBlIEkgZXJyb3IgcmF0ZQ==