#install.packages("arules")
library(arules)
#Groceries {arules}
?Groceries

Groceries Data Set

Description

The Groceries data set contains 1 month (30 days) of real-world point-of-sale transaction data from a typical local grocery outlet. The data set contains 9835 transactions and the items are aggregated to 169 categories.

If you use this data set in your paper, please refer to the paper in the references section.

Usage

data(Groceries) Format

Object of class transactions.

#inspect(Groceries)
mydata<-read.csv("file:///C:/Users/badal/Desktop/datset_/groceries.csv")
mydata = read.transactions(file.path("file:///C:/Users/badal/Desktop/datset_/groceries.csv"), sep = ",",rm.duplicates=T)
summary(mydata)
transactions as itemMatrix in sparse format with
 9835 rows (elements/itemsets/transactions) and
 169 columns (items) and a density of 0.02609146 

most frequent items:
      whole milk other vegetables       rolls/buns             soda           yogurt          (Other) 
            2513             1903             1809             1715             1372            34055 

element (itemset/transaction) length distribution:
sizes
   1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23 
2159 1643 1299 1005  855  645  545  438  350  246  182  117   78   77   55   46   29   14   14    9   11    4    6 
  24   26   27   28   29   32 
   1    1    1    1    3    1 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   2.000   3.000   4.409   6.000  32.000 

includes extended item information - examples:
mydata
transactions in sparse format with
 9835 transactions (rows) and
 169 items (columns)
itemFrequencyPlot(mydata,topN=10, col = "blue")

itemFrequencyPlot(mydata, support= 0.1, col ="red", main = "Items having more then 10% support")

rules <- apriori(mydata) 
Apriori

Parameter specification:

Algorithmic control:

Absolute minimum support count: 983 

set item appearances ...[0 item(s)] done [0.02s].
set transactions ...[169 item(s), 9835 transaction(s)] done [0.03s].
sorting and recoding items ... [8 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 done [0.02s].
writing ... [0 rule(s)] done [0.02s].
creating S4 object  ... done [0.01s].

Rules with specified parameter valus

rules <- apriori(mydata, parameter = list(supp = 0.001, conf = 0.8))
Apriori

Parameter specification:

Algorithmic control:

Absolute minimum support count: 9 

set item appearances ...[0 item(s)] done [0.01s].
set transactions ...[169 item(s), 9835 transaction(s)] done [0.03s].
sorting and recoding items ... [157 item(s)] done [0.02s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 5 6 done [0.08s].
writing ... [410 rule(s)] done [0.03s].
creating S4 object  ... done [0.02s].
inspect(rules[1:10])
rules <- sort(rules, by = "support", desc = T)
inspect(rules[1:10])
redundant <- is.redundant(rules, measure="confidence")
which(redundant)
 [1]  38  89 122 257 261 262 282 283 356 360 367 377 394 396 404 405 407 408
summary(redundant)
   Mode   FALSE    TRUE 
logical     392      18 
rules.pruned <- rules[!redundant]
rules.pruned <- sort(rules.pruned, by="lift")
summary(rules.pruned)
set of 392 rules

rule length distribution (lhs + rhs):sizes
  3   4   5   6 
 29 227 130   6 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  3.000   4.000   4.000   4.288   5.000   6.000 

summary of quality measures:
    support           confidence          lift            count      
 Min.   :0.001017   Min.   :0.8000   Min.   : 3.131   Min.   :10.00  
 1st Qu.:0.001017   1st Qu.:0.8333   1st Qu.: 3.312   1st Qu.:10.00  
 Median :0.001220   Median :0.8462   Median : 3.588   Median :12.00  
 Mean   :0.001253   Mean   :0.8667   Mean   : 3.959   Mean   :12.33  
 3rd Qu.:0.001322   3rd Qu.:0.9091   3rd Qu.: 4.357   3rd Qu.:13.00  
 Max.   :0.003152   Max.   :1.0000   Max.   :11.235   Max.   :31.00  

mining info:
inspect(rules.pruned[1:10])
plot(rules.pruned,method="graph",control=list(type="items"))
Unknown control parameters: type
Available control parameters (with default values):
main     =  Graph for 100 rules
nodeColors   =  c("#66CC6680", "#9999CC80")
nodeCol  =  c("#EE0000FF", "#EE0303FF", "#EE0606FF", "#EE0909FF", "#EE0C0CFF", "#EE0F0FFF", "#EE1212FF", "#EE1515FF", "#EE1818FF", "#EE1B1BFF", "#EE1E1EFF", "#EE2222FF", "#EE2525FF", "#EE2828FF", "#EE2B2BFF", "#EE2E2EFF", "#EE3131FF", "#EE3434FF", "#EE3737FF", "#EE3A3AFF", "#EE3D3DFF", "#EE4040FF", "#EE4444FF", "#EE4747FF", "#EE4A4AFF", "#EE4D4DFF", "#EE5050FF", "#EE5353FF", "#EE5656FF", "#EE5959FF", "#EE5C5CFF", "#EE5F5FFF", "#EE6262FF", "#EE6666FF", "#EE6969FF", "#EE6C6CFF", "#EE6F6FFF", "#EE7272FF", "#EE7575FF",  "#EE7878FF", "#EE7B7BFF", "#EE7E7EFF", "#EE8181FF", "#EE8484FF", "#EE8888FF", "#EE8B8BFF", "#EE8E8EFF", "#EE9191FF", "#EE9494FF", "#EE9797FF", "#EE9999FF", "#EE9B9BFF", "#EE9D9DFF", "#EE9F9FFF", "#EEA0A0FF", "#EEA2A2FF", "#EEA4A4FF", "#EEA5A5FF", "#EEA7A7FF", "#EEA9A9FF", "#EEABABFF", "#EEACACFF", "#EEAEAEFF", "#EEB0B0FF", "#EEB1B1FF", "#EEB3B3FF", "#EEB5B5FF", "#EEB7B7FF", "#EEB8B8FF", "#EEBABAFF", "#EEBCBCFF", "#EEBDBDFF", "#EEBFBFFF", "#EEC1C1FF", "#EEC3C3FF", "#EEC4C4FF", "#EEC6C6FF", "#EEC8C8FF",  "#EEC9C9FF", "#EECBCBFF", "#EECDCDFF", "#EECFCFFF", "#EED0D0FF", "#EED2D2FF", "#EED4D4FF", "#EED5D5FF", "#EED7D7FF", "#EED9D9FF", "#EEDBDBFF", "#EEDCDCFF", "#EEDEDEFF", "#EEE0E0FF", "#EEE1E1FF", "#EEE3E3FF", "#EEE5E5FF", "#EEE7E7FF", "#EEE8E8FF", "#EEEAEAFF", "#EEECECFF", "#EEEEEEFF")
edgeCol  =  c("#474747FF", "#494949FF", "#4B4B4BFF", "#4D4D4DFF", "#4F4F4FFF", "#515151FF", "#535353FF", "#555555FF", "#575757FF", "#595959FF", "#5B5B5BFF", "#5E5E5EFF", "#606060FF", "#626262FF", "#646464FF", "#666666FF", "#686868FF", "#6A6A6AFF", "#6C6C6CFF", "#6E6E6EFF", "#707070FF", "#727272FF", "#747474FF", "#767676FF", "#787878FF", "#7A7A7AFF", "#7C7C7CFF", "#7E7E7EFF", "#808080FF", "#828282FF", "#848484FF", "#868686FF", "#888888FF", "#8A8A8AFF", "#8C8C8CFF", "#8D8D8DFF", "#8F8F8FFF", "#919191FF", "#939393FF",  "#959595FF", "#979797FF", "#999999FF", "#9A9A9AFF", "#9C9C9CFF", "#9E9E9EFF", "#A0A0A0FF", "#A2A2A2FF", "#A3A3A3FF", "#A5A5A5FF", "#A7A7A7FF", "#A9A9A9FF", "#AAAAAAFF", "#ACACACFF", "#AEAEAEFF", "#AFAFAFFF", "#B1B1B1FF", "#B3B3B3FF", "#B4B4B4FF", "#B6B6B6FF", "#B7B7B7FF", "#B9B9B9FF", "#BBBBBBFF", "#BCBCBCFF", "#BEBEBEFF", "#BFBFBFFF", "#C1C1C1FF", "#C2C2C2FF", "#C3C3C4FF", "#C5C5C5FF", "#C6C6C6FF", "#C8C8C8FF", "#C9C9C9FF", "#CACACAFF", "#CCCCCCFF", "#CDCDCDFF", "#CECECEFF", "#CFCFCFFF", "#D1D1D1FF",  "#D2D2D2FF", "#D3D3D3FF", "#D4D4D4FF", "#D5D5D5FF", "#D6D6D6FF", "#D7D7D7FF", "#D8D8D8FF", "#D9D9D9FF", "#DADADAFF", "#DBDBDBFF", "#DCDCDCFF", "#DDDDDDFF", "#DEDEDEFF", "#DEDEDEFF", "#DFDFDFFF", "#E0E0E0FF", "#E0E0E0FF", "#E1E1E1FF", "#E1E1E1FF", "#E2E2E2FF", "#E2E2E2FF", "#E2E2E2FF")
alpha    =  0.5
cex  =  1
itemLabels   =  TRUE
labelCol     =  #000000B3
measureLabels    =  FALSE
precision    =  3
layout   =  NULL
layoutParams     =  list()
arrowSize    =  0.5
engine   =  igraph
plot     =  TRUE
plot_options     =  list()
max  =  100
verbose  =  FALSE
plot: Too many rules supplied. Only plotting the best 100 rules using 㤼㸱support㤼㸲 (change control parameter max if needed)

Targeting items.

rules_whole_milk <- apriori(mydata,parameter = list(supp=.001,conf=.8),appearance=list(default="rhs", lhs='whole milk'))
Apriori

Parameter specification:

Algorithmic control:

Absolute minimum support count: 9 

set item appearances ...[1 item(s)] done [0.00s].
set transactions ...[169 item(s), 9835 transaction(s)] done [0.01s].
sorting and recoding items ... [157 item(s)] done [0.00s].
creating transaction tree ... done [0.01s].
checking subsets of size 1 2 done [0.04s].
writing ... [0 rule(s)] done [0.04s].
creating S4 object  ... done [0.01s].
rules_whole_milk <- apriori(mydata,parameter = list(supp=.001,conf=.08),appearance=list(default="rhs", lhs='whole milk'))
Apriori

Parameter specification:

Algorithmic control:

Absolute minimum support count: 9 

set item appearances ...[1 item(s)] done [0.02s].
set transactions ...[169 item(s), 9835 transaction(s)] done [0.01s].
sorting and recoding items ... [157 item(s)] done [0.02s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 done [0.02s].
writing ... [35 rule(s)] done [0.02s].
creating S4 object  ... done [0.02s].
inspect(rules_whole_milk)
plot(rules_whole_milk,method="graph",control=list(type="items"))
Unknown control parameters: type
Available control parameters (with default values):
main     =  Graph for 35 rules
nodeColors   =  c("#66CC6680", "#9999CC80")
nodeCol  =  c("#EE0000FF", "#EE0303FF", "#EE0606FF", "#EE0909FF", "#EE0C0CFF", "#EE0F0FFF", "#EE1212FF", "#EE1515FF", "#EE1818FF", "#EE1B1BFF", "#EE1E1EFF", "#EE2222FF", "#EE2525FF", "#EE2828FF", "#EE2B2BFF", "#EE2E2EFF", "#EE3131FF", "#EE3434FF", "#EE3737FF", "#EE3A3AFF", "#EE3D3DFF", "#EE4040FF", "#EE4444FF", "#EE4747FF", "#EE4A4AFF", "#EE4D4DFF", "#EE5050FF", "#EE5353FF", "#EE5656FF", "#EE5959FF", "#EE5C5CFF", "#EE5F5FFF", "#EE6262FF", "#EE6666FF", "#EE6969FF", "#EE6C6CFF", "#EE6F6FFF", "#EE7272FF", "#EE7575FF",  "#EE7878FF", "#EE7B7BFF", "#EE7E7EFF", "#EE8181FF", "#EE8484FF", "#EE8888FF", "#EE8B8BFF", "#EE8E8EFF", "#EE9191FF", "#EE9494FF", "#EE9797FF", "#EE9999FF", "#EE9B9BFF", "#EE9D9DFF", "#EE9F9FFF", "#EEA0A0FF", "#EEA2A2FF", "#EEA4A4FF", "#EEA5A5FF", "#EEA7A7FF", "#EEA9A9FF", "#EEABABFF", "#EEACACFF", "#EEAEAEFF", "#EEB0B0FF", "#EEB1B1FF", "#EEB3B3FF", "#EEB5B5FF", "#EEB7B7FF", "#EEB8B8FF", "#EEBABAFF", "#EEBCBCFF", "#EEBDBDFF", "#EEBFBFFF", "#EEC1C1FF", "#EEC3C3FF", "#EEC4C4FF", "#EEC6C6FF", "#EEC8C8FF",  "#EEC9C9FF", "#EECBCBFF", "#EECDCDFF", "#EECFCFFF", "#EED0D0FF", "#EED2D2FF", "#EED4D4FF", "#EED5D5FF", "#EED7D7FF", "#EED9D9FF", "#EEDBDBFF", "#EEDCDCFF", "#EEDEDEFF", "#EEE0E0FF", "#EEE1E1FF", "#EEE3E3FF", "#EEE5E5FF", "#EEE7E7FF", "#EEE8E8FF", "#EEEAEAFF", "#EEECECFF", "#EEEEEEFF")
edgeCol  =  c("#474747FF", "#494949FF", "#4B4B4BFF", "#4D4D4DFF", "#4F4F4FFF", "#515151FF", "#535353FF", "#555555FF", "#575757FF", "#595959FF", "#5B5B5BFF", "#5E5E5EFF", "#606060FF", "#626262FF", "#646464FF", "#666666FF", "#686868FF", "#6A6A6AFF", "#6C6C6CFF", "#6E6E6EFF", "#707070FF", "#727272FF", "#747474FF", "#767676FF", "#787878FF", "#7A7A7AFF", "#7C7C7CFF", "#7E7E7EFF", "#808080FF", "#828282FF", "#848484FF", "#868686FF", "#888888FF", "#8A8A8AFF", "#8C8C8CFF", "#8D8D8DFF", "#8F8F8FFF", "#919191FF", "#939393FF",  "#959595FF", "#979797FF", "#999999FF", "#9A9A9AFF", "#9C9C9CFF", "#9E9E9EFF", "#A0A0A0FF", "#A2A2A2FF", "#A3A3A3FF", "#A5A5A5FF", "#A7A7A7FF", "#A9A9A9FF", "#AAAAAAFF", "#ACACACFF", "#AEAEAEFF", "#AFAFAFFF", "#B1B1B1FF", "#B3B3B3FF", "#B4B4B4FF", "#B6B6B6FF", "#B7B7B7FF", "#B9B9B9FF", "#BBBBBBFF", "#BCBCBCFF", "#BEBEBEFF", "#BFBFBFFF", "#C1C1C1FF", "#C2C2C2FF", "#C3C3C4FF", "#C5C5C5FF", "#C6C6C6FF", "#C8C8C8FF", "#C9C9C9FF", "#CACACAFF", "#CCCCCCFF", "#CDCDCDFF", "#CECECEFF", "#CFCFCFFF", "#D1D1D1FF",  "#D2D2D2FF", "#D3D3D3FF", "#D4D4D4FF", "#D5D5D5FF", "#D6D6D6FF", "#D7D7D7FF", "#D8D8D8FF", "#D9D9D9FF", "#DADADAFF", "#DBDBDBFF", "#DCDCDCFF", "#DDDDDDFF", "#DEDEDEFF", "#DEDEDEFF", "#DFDFDFFF", "#E0E0E0FF", "#E0E0E0FF", "#E1E1E1FF", "#E1E1E1FF", "#E2E2E2FF", "#E2E2E2FF", "#E2E2E2FF")
alpha    =  0.5
cex  =  1
itemLabels   =  TRUE
labelCol     =  #000000B3
measureLabels    =  FALSE
precision    =  3
layout   =  NULL
layoutParams     =  list()
arrowSize    =  0.5
engine   =  igraph
plot     =  TRUE
plot_options     =  list()
max  =  100
verbose  =  FALSE

rules_beer <- apriori(mydata,parameter = list(supp=.001,conf=.08),appearance=list(default="rhs", lhs='bottled beer'))
Apriori

Parameter specification:

Algorithmic control:

Absolute minimum support count: 9 

set item appearances ...[1 item(s)] done [0.01s].
set transactions ...[169 item(s), 9835 transaction(s)] done [0.02s].
sorting and recoding items ... [157 item(s)] done [0.01s].
creating transaction tree ... done [0.01s].
checking subsets of size 1 2 done [0.02s].
writing ... [22 rule(s)] done [0.01s].
creating S4 object  ... done [0.03s].
inspect(rules_beer)
plot(rules_beer,method="graph",control=list(type="items"))
Unknown control parameters: type
Available control parameters (with default values):
main     =  Graph for 22 rules
nodeColors   =  c("#66CC6680", "#9999CC80")
nodeCol  =  c("#EE0000FF", "#EE0303FF", "#EE0606FF", "#EE0909FF", "#EE0C0CFF", "#EE0F0FFF", "#EE1212FF", "#EE1515FF", "#EE1818FF", "#EE1B1BFF", "#EE1E1EFF", "#EE2222FF", "#EE2525FF", "#EE2828FF", "#EE2B2BFF", "#EE2E2EFF", "#EE3131FF", "#EE3434FF", "#EE3737FF", "#EE3A3AFF", "#EE3D3DFF", "#EE4040FF", "#EE4444FF", "#EE4747FF", "#EE4A4AFF", "#EE4D4DFF", "#EE5050FF", "#EE5353FF", "#EE5656FF", "#EE5959FF", "#EE5C5CFF", "#EE5F5FFF", "#EE6262FF", "#EE6666FF", "#EE6969FF", "#EE6C6CFF", "#EE6F6FFF", "#EE7272FF", "#EE7575FF",  "#EE7878FF", "#EE7B7BFF", "#EE7E7EFF", "#EE8181FF", "#EE8484FF", "#EE8888FF", "#EE8B8BFF", "#EE8E8EFF", "#EE9191FF", "#EE9494FF", "#EE9797FF", "#EE9999FF", "#EE9B9BFF", "#EE9D9DFF", "#EE9F9FFF", "#EEA0A0FF", "#EEA2A2FF", "#EEA4A4FF", "#EEA5A5FF", "#EEA7A7FF", "#EEA9A9FF", "#EEABABFF", "#EEACACFF", "#EEAEAEFF", "#EEB0B0FF", "#EEB1B1FF", "#EEB3B3FF", "#EEB5B5FF", "#EEB7B7FF", "#EEB8B8FF", "#EEBABAFF", "#EEBCBCFF", "#EEBDBDFF", "#EEBFBFFF", "#EEC1C1FF", "#EEC3C3FF", "#EEC4C4FF", "#EEC6C6FF", "#EEC8C8FF",  "#EEC9C9FF", "#EECBCBFF", "#EECDCDFF", "#EECFCFFF", "#EED0D0FF", "#EED2D2FF", "#EED4D4FF", "#EED5D5FF", "#EED7D7FF", "#EED9D9FF", "#EEDBDBFF", "#EEDCDCFF", "#EEDEDEFF", "#EEE0E0FF", "#EEE1E1FF", "#EEE3E3FF", "#EEE5E5FF", "#EEE7E7FF", "#EEE8E8FF", "#EEEAEAFF", "#EEECECFF", "#EEEEEEFF")
edgeCol  =  c("#474747FF", "#494949FF", "#4B4B4BFF", "#4D4D4DFF", "#4F4F4FFF", "#515151FF", "#535353FF", "#555555FF", "#575757FF", "#595959FF", "#5B5B5BFF", "#5E5E5EFF", "#606060FF", "#626262FF", "#646464FF", "#666666FF", "#686868FF", "#6A6A6AFF", "#6C6C6CFF", "#6E6E6EFF", "#707070FF", "#727272FF", "#747474FF", "#767676FF", "#787878FF", "#7A7A7AFF", "#7C7C7CFF", "#7E7E7EFF", "#808080FF", "#828282FF", "#848484FF", "#868686FF", "#888888FF", "#8A8A8AFF", "#8C8C8CFF", "#8D8D8DFF", "#8F8F8FFF", "#919191FF", "#939393FF",  "#959595FF", "#979797FF", "#999999FF", "#9A9A9AFF", "#9C9C9CFF", "#9E9E9EFF", "#A0A0A0FF", "#A2A2A2FF", "#A3A3A3FF", "#A5A5A5FF", "#A7A7A7FF", "#A9A9A9FF", "#AAAAAAFF", "#ACACACFF", "#AEAEAEFF", "#AFAFAFFF", "#B1B1B1FF", "#B3B3B3FF", "#B4B4B4FF", "#B6B6B6FF", "#B7B7B7FF", "#B9B9B9FF", "#BBBBBBFF", "#BCBCBCFF", "#BEBEBEFF", "#BFBFBFFF", "#C1C1C1FF", "#C2C2C2FF", "#C3C3C4FF", "#C5C5C5FF", "#C6C6C6FF", "#C8C8C8FF", "#C9C9C9FF", "#CACACAFF", "#CCCCCCFF", "#CDCDCDFF", "#CECECEFF", "#CFCFCFFF", "#D1D1D1FF",  "#D2D2D2FF", "#D3D3D3FF", "#D4D4D4FF", "#D5D5D5FF", "#D6D6D6FF", "#D7D7D7FF", "#D8D8D8FF", "#D9D9D9FF", "#DADADAFF", "#DBDBDBFF", "#DCDCDCFF", "#DDDDDDFF", "#DEDEDEFF", "#DEDEDEFF", "#DFDFDFFF", "#E0E0E0FF", "#E0E0E0FF", "#E1E1E1FF", "#E1E1E1FF", "#E2E2E2FF", "#E2E2E2FF", "#E2E2E2FF")
alpha    =  0.5
cex  =  1
itemLabels   =  TRUE
labelCol     =  #000000B3
measureLabels    =  FALSE
precision    =  3
layout   =  NULL
layoutParams     =  list()
arrowSize    =  0.5
engine   =  igraph
plot     =  TRUE
plot_options     =  list()
max  =  100
verbose  =  FALSE

LS0tDQp0aXRsZTogIk1hcmtldCBCYXNrZXQgQW5hbHlzaXMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCiNpbnN0YWxsLnBhY2thZ2VzKCJhcnVsZXMiKQ0KbGlicmFyeShhcnVsZXMpDQpgYGANCg0KYGBge3J9DQojR3JvY2VyaWVzIHthcnVsZXN9DQo/R3JvY2VyaWVzDQpgYGANCkdyb2NlcmllcyBEYXRhIFNldA0KDQpEZXNjcmlwdGlvbg0KDQpUaGUgR3JvY2VyaWVzIGRhdGEgc2V0IGNvbnRhaW5zIDEgbW9udGggKDMwIGRheXMpIG9mIHJlYWwtd29ybGQgcG9pbnQtb2Ytc2FsZSB0cmFuc2FjdGlvbiBkYXRhIGZyb20gYSB0eXBpY2FsIGxvY2FsIGdyb2Nlcnkgb3V0bGV0LiBUaGUgZGF0YSBzZXQgY29udGFpbnMgOTgzNSB0cmFuc2FjdGlvbnMgYW5kIHRoZSBpdGVtcyBhcmUgYWdncmVnYXRlZCB0byAxNjkgY2F0ZWdvcmllcy4NCg0KSWYgeW91IHVzZSB0aGlzIGRhdGEgc2V0IGluIHlvdXIgcGFwZXIsIHBsZWFzZSByZWZlciB0byB0aGUgcGFwZXIgaW4gdGhlIHJlZmVyZW5jZXMgc2VjdGlvbi4NCg0KVXNhZ2UNCg0KZGF0YShHcm9jZXJpZXMpDQpGb3JtYXQNCg0KT2JqZWN0IG9mIGNsYXNzIHRyYW5zYWN0aW9ucy4NCg0KYGBge3J9DQojaW5zcGVjdChHcm9jZXJpZXMpDQpgYGANCg0KYGBge3J9DQpteWRhdGE8LXJlYWQuY3N2KCJmaWxlOi8vL0M6L1VzZXJzL2JhZGFsL0Rlc2t0b3AvZGF0c2V0Xy9ncm9jZXJpZXMuY3N2IikNCm15ZGF0YSA9IHJlYWQudHJhbnNhY3Rpb25zKGZpbGUucGF0aCgiZmlsZTovLy9DOi9Vc2Vycy9iYWRhbC9EZXNrdG9wL2RhdHNldF8vZ3JvY2VyaWVzLmNzdiIpLCBzZXAgPSAiLCIscm0uZHVwbGljYXRlcz1UKQ0Kc3VtbWFyeShteWRhdGEpDQpgYGANCg0KYGBge3J9DQpteWRhdGENCmBgYA0KYGBge3J9DQppdGVtRnJlcXVlbmN5UGxvdChteWRhdGEsdG9wTj0xMCwgY29sID0gImJsdWUiKQ0KYGBgDQpgYGB7cn0NCml0ZW1GcmVxdWVuY3lQbG90KG15ZGF0YSwgc3VwcG9ydD0gMC4xLCBjb2wgPSJyZWQiLCBtYWluID0gIkl0ZW1zIGhhdmluZyBtb3JlIHRoZW4gMTAlIHN1cHBvcnQiKQ0KYGBgDQoNCmBgYHtyfQ0KcnVsZXMgPC0gYXByaW9yaShteWRhdGEpIA0KYGBgDQojIFJ1bGVzIHdpdGggc3BlY2lmaWVkIHBhcmFtZXRlciB2YWx1cw0KYGBge3J9DQpydWxlcyA8LSBhcHJpb3JpKG15ZGF0YSwgcGFyYW1ldGVyID0gbGlzdChzdXBwID0gMC4wMDEsIGNvbmYgPSAwLjgpKQ0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KaW5zcGVjdChydWxlc1sxOjEwXSkNCmBgYA0KDQpgYGB7cn0NCnJ1bGVzIDwtIHNvcnQocnVsZXMsIGJ5ID0gInN1cHBvcnQiLCBkZXNjID0gVCkNCmluc3BlY3QocnVsZXNbMToxMF0pDQpgYGANCg0KYGBge3J9DQpyZWR1bmRhbnQgPC0gaXMucmVkdW5kYW50KHJ1bGVzLCBtZWFzdXJlPSJjb25maWRlbmNlIikNCg0Kd2hpY2gocmVkdW5kYW50KQ0KYGBgDQpgYGB7cn0NCnN1bW1hcnkocmVkdW5kYW50KQ0KYGBgDQoNCmBgYHtyfQ0KcnVsZXMucHJ1bmVkIDwtIHJ1bGVzWyFyZWR1bmRhbnRdDQpydWxlcy5wcnVuZWQgPC0gc29ydChydWxlcy5wcnVuZWQsIGJ5PSJsaWZ0IikNCnN1bW1hcnkocnVsZXMucHJ1bmVkKQ0KDQpgYGANCg0KYGBge3J9DQppbnNwZWN0KHJ1bGVzLnBydW5lZFsxOjEwXSkNCmBgYA0KYGBge3J9DQpwbG90KHJ1bGVzLnBydW5lZCxtZXRob2Q9ImdyYXBoIixjb250cm9sPWxpc3QodHlwZT0iaXRlbXMiKSkNCmBgYA0KDQojVGFyZ2V0aW5nIGl0ZW1zLiANCmBgYHtyfQ0KcnVsZXNfd2hvbGVfbWlsayA8LSBhcHJpb3JpKG15ZGF0YSxwYXJhbWV0ZXIgPSBsaXN0KHN1cHA9LjAwMSxjb25mPS44KSxhcHBlYXJhbmNlPWxpc3QoZGVmYXVsdD0icmhzIiwgbGhzPSd3aG9sZSBtaWxrJykpDQpgYGANCg0KYGBge3J9DQpydWxlc193aG9sZV9taWxrIDwtIGFwcmlvcmkobXlkYXRhLHBhcmFtZXRlciA9IGxpc3Qoc3VwcD0uMDAxLGNvbmY9LjA4KSxhcHBlYXJhbmNlPWxpc3QoZGVmYXVsdD0icmhzIiwgbGhzPSd3aG9sZSBtaWxrJykpDQoNCmBgYA0KDQpgYGB7cn0NCmluc3BlY3QocnVsZXNfd2hvbGVfbWlsaykNCmBgYA0KYGBge3J9DQpwbG90KHJ1bGVzX3dob2xlX21pbGssbWV0aG9kPSJncmFwaCIsY29udHJvbD1saXN0KHR5cGU9Iml0ZW1zIikpDQpgYGANCg0KYGBge3J9DQpydWxlc19iZWVyIDwtIGFwcmlvcmkobXlkYXRhLHBhcmFtZXRlciA9IGxpc3Qoc3VwcD0uMDAxLGNvbmY9LjA4KSxhcHBlYXJhbmNlPWxpc3QoZGVmYXVsdD0icmhzIiwgbGhzPSdib3R0bGVkIGJlZXInKSkNCmBgYA0KDQpgYGB7cn0NCmluc3BlY3QocnVsZXNfYmVlcikNCmBgYA0KDQpgYGB7cn0NCnBsb3QocnVsZXNfYmVlcixtZXRob2Q9ImdyYXBoIixjb250cm9sPWxpc3QodHlwZT0iaXRlbXMiKSkNCmBgYA0K