#In this script I will I will remove Non T cells from PBMC

1. load libraries

2. Load Seurat Object

All_samples_Merged
An object of class Seurat 
36752 features across 59355 samples within 5 assays 
Active assay: RNA (36601 features, 0 variable features)
 2 layers present: data, counts
 4 other assays present: ADT, prediction.score.celltype.l1, prediction.score.celltype.l2, prediction.score.celltype.l3
 2 dimensional reductions calculated: integrated_dr, ref.umap

3. Cell type Distribution to check clusters

# We can apply it later on R obj to get these tables to compare it to decide about resolution.

# Azimuth l1
janitor::tabyl(All_samples_Merged@meta.data, predicted.celltype.l1, cell_line)
 predicted.celltype.l1   L1   L2   L3   L4   L5   L6   L7 PBMC PBMC_10x
                     B    0    0   12  131   35   85  121 1093      957
                 CD4 T 5771 3124 6351 5967 4914 4575 4634 5448     3639
                 CD8 T   13   25    0    1    4    5    3  814     1379
                    DC    0    0    1    4   29   12   41   71      196
                  Mono    0    0    1   13    3    0    5  754     3165
                    NK   38 2784    6   25   11  259   38   92      463
                 other    0    0   57    8 1025  208  487   19       46
               other T    3    2    0    1    1    4    2   63      317
# Azimuth l2
janitor::tabyl(All_samples_Merged@meta.data, predicted.celltype.l2, cell_line)
 predicted.celltype.l2   L1   L2   L3   L4   L5   L6   L7 PBMC PBMC_10x
                  ASDC    0    0    0    0    0    0    0    0        3
        B intermediate    0    0    2   54    2    2    0  457      179
              B memory    0    0   11   34   38   82  120  164       74
               B naive    0    0    0   41    0    0    0  459      692
             CD14 Mono    0    0    1   14    5    0    6  755     3042
             CD16 Mono    0    0    0    0    0    0    0    2      124
               CD4 CTL    0    0    0    0    0    0    0   16        1
             CD4 Naive    0    0    0    7    0    0    0  524     1512
     CD4 Proliferating 2461 2852 5452 5391 4732 4002 4115    0        6
               CD4 TCM 3320  270  887  562  178  557  517 4609     1978
               CD4 TEM    1    0    0    0    0    0    0   68       25
             CD8 Naive    0    0    0    0    0    0    0  361     1012
     CD8 Proliferating    0    0    0    0    0    1    1    0        0
               CD8 TCM    1   16    0    0    0    0    0  286      174
               CD8 TEM    1    8    0    0    2    3    1  181      195
                  cDC1    0    0    0    0    2    6    0   21       13
                  cDC2    0    0    0    4   11    3   35   52      124
                   dnT    2    3    0    1    2    5    2   38       29
                   gdT    0    0    0    0    0    0    0   26       67
                  HSPC    0    0   60    7 1035  213  490   17       12
                   ILC    0    0    0    1    0    0    0    3        3
                  MAIT    0    0    0    0    0    0    0   14      228
                    NK    0    0    0    1    0    0    0   89      444
      NK Proliferating   38 2785    6   24   11  259   38    1        5
         NK_CD56bright    0    0    0    0    0    0    0    1       15
                   pDC    0    0    0    0    0    0    0    0       56
           Plasmablast    0    0    0    0    0    0    0    9       10
              Platelet    0    0    0    0    0    0    0    1       31
                  Treg    1    1    9    9    4   15    6  200      108
# Azimuth l3
janitor::tabyl(All_samples_Merged@meta.data, predicted.celltype.l3, cell_line)
 predicted.celltype.l3   L1   L2   L3   L4   L5   L6   L7 PBMC PBMC_10x
              ASDC_pDC    0    0    0    0    0    0    0    0        4
  B intermediate kappa    0    0    0    1    0    0    0   75       51
 B intermediate lambda    0    0    2   48    4    2    3  371      129
        B memory kappa    0    0    7    1    7   22   55   38       42
       B memory lambda    0    0    3   41    7   29   26  131       30
         B naive kappa    0    0    0    0    0    0    0  267      645
        B naive lambda    0    0    0   37    0    0    0  192       48
             CD14 Mono    0    0    1   15    9    0   22  755     3043
             CD16 Mono    0    0    0    0    0    0    0    2      124
               CD4 CTL    0    0    0    0    0    0    0   27        1
             CD4 Naive    0    0    0    9    0    0    0  528     1525
     CD4 Proliferating 2462 2852 5452 5391 4732 4003 4115    0        6
             CD4 TCM_1 1932    6    6   35    0    7    3 4057     1449
             CD4 TCM_2  652  250  870  516  165  536  482  265      144
             CD4 TCM_3  436   12    4    6   13    7   26  267      359
             CD4 TEM_1    1    0    0    0    0    0    0    4        8
             CD4 TEM_2    0    0    0    0    0    0    0   17       17
             CD4 TEM_3    0    0    0    0    0    0    0   50        1
             CD8 Naive    0    0    0    0    0    0    0  291      969
           CD8 Naive_2    0    0    0    0    1    1    0   63       47
     CD8 Proliferating    0    0    0    0    0    1    1    0        0
             CD8 TCM_1    0    8    0    0    0    0    0  137      115
             CD8 TCM_2  298    6    0    0    0    0    0   80       43
             CD8 TCM_3    0    1    0    0    0    0    0   77       17
             CD8 TEM_1    0    0    0    0    0    0    0   91       67
             CD8 TEM_2    0    0    0    0    0    1    0   32       62
             CD8 TEM_3    0    0    0    0    0    0    0   17       15
             CD8 TEM_4    0    0    0    0    0    0    0    2       12
             CD8 TEM_5    0    0    0    0    0    0    0   27        1
             CD8 TEM_6    1   10    0    0    1    1    1    1       36
                  cDC1    0    0    0    1   17   36   16   28       13
                cDC2_1    0    0    0    1    1    0    4    2       40
                cDC2_2    0    0    1    3   12    4   33   46       83
                 dnT_2    2    3    0    2    2    6    2   42       31
                 gdT_1    0    0    0    0    0    0    0   33       52
                 gdT_3    0    0    0    0    0    0    0    1       15
                  HSPC    0    0   62    7 1036  214  493   17       12
                   ILC    0    0    1    3    0    0    0    4        3
                  MAIT    0    0    0    0    0    0    0   16      229
      NK Proliferating   38 2785    6   24   11  259   38    1        5
                  NK_1    0    0    0    0    0    0    0   42        7
                  NK_2    0    0    0    0    0    0    0   18      386
                  NK_3    0    0    0    0    0    0    0   22       20
                  NK_4    0    0    0    0    0    0    0    3       30
         NK_CD56bright    0    0    0    0    0    0    0    1       16
                   pDC    0    0    0    0    0    0    0    0       56
                Plasma    0    0    0    0    0    0    0    9       10
              Platelet    0    0    0    0    0    0    0    1       31
           Treg Memory    3    2   13    9    4   19   11  200       89
            Treg Naive    0    0    0    0    0    0    0    4       24

4. filter cells just keep CD4 T cells




# Set identity to cell_line 
Idents(All_samples_Merged) <- "cell_line"

# Identify CD4 T cells in PBMC and PBMC_10x
cd4_cells_pbmc <- WhichCells(All_samples_Merged, expression = 
  grepl("^CD4", All_samples_Merged$predicted.celltype.l1) &
  grepl("^CD4", All_samples_Merged$predicted.celltype.l2) &
  grepl("^CD4", All_samples_Merged$predicted.celltype.l3) &
  (cell_line %in% c("PBMC", "PBMC_10x"))
)

# Select all cells from other cell lines
other_cells_seurat <- subset(All_samples_Merged, subset = cell_line %in% c("L1", "L2", "L3", "L4", "L5", "L6", "L7"))

# Get the cell names from the subset
other_cells <- colnames(other_cells_seurat)

# Combine the cell lists
cells_to_keep <- c(cd4_cells_pbmc, other_cells)

# Create the final filtered Seurat object
seurat_filtered <- subset(All_samples_Merged, cells = cells_to_keep)



library(ggplot2)
library(RColorBrewer)  

# Assuming you have 10 different cell lines, generating a color palette with 10 colors
cell_line_colors <- brewer.pal(10, "Set3")

# Assuming All_samples_Merged$cell_line is a factor or character vector containing cell line names
data <- as.data.frame(table(seurat_filtered$cell_line))
colnames(data) <- c("cell_line", "nUMI")  # Change column name to nUMI

ncells <- ggplot(data, aes(x = cell_line, y = nUMI, fill = cell_line)) + 
  geom_col() +
  theme_classic() +
  geom_text(aes(label = nUMI), 
            position = position_dodge(width = 0.9), 
            vjust = -0.25) +
  scale_fill_manual(values = cell_line_colors) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5)) +  # Adjust the title position
  ggtitle("Filtered cells per sample") +
  xlab("Cell lines") +  # Adjust x-axis label
  ylab("Frequency")    # Adjust y-axis label

print(ncells)




# # Define CD4 T-cell types to keep
# cd4_cell_types <- c(
#   "CD4 T", "CD4 Proliferating", "CD4 TCM", "CD4 TEM", "CD4 Naive", "CD4 CTL"
# )
# 
# 
# # Subset to retain only CD4 T cells from PBMC and PBMC_10x
# seurat_cd4 <- subset(
#   seurat_object,
#   subset = (predicted.celltype.l1 %in% cd4_cell_types |
#             predicted.celltype.l2 %in% cd4_cell_types |
#             predicted.celltype.l3 %in% cd4_cell_types) &
#            (sample %in% c("PBMC", "PBMC_10x"))
# )
# 
# 
# # Subset to retain only CD4 T cells from PBMC and PBMC_10x
# seurat_cd4 <- subset(
#   seurat_object,
#   subset = (predicted.celltype.l1 %in% cd4_cell_types |
#             predicted.celltype.l2 %in% cd4_cell_types |
#             predicted.celltype.l3 %in% cd4_cell_types) &
#            (sample %in% c("PBMC", "PBMC_10x"))
# )
# 
# 

Cell type Distribution to check clusters


# We can apply it later on R obj to get these tables to compare it to decide about resolution.

# Azimuth l1
janitor::tabyl(seurat_filtered@meta.data, predicted.celltype.l1, cell_line)
 predicted.celltype.l1   L1   L2   L3   L4   L5   L6   L7 PBMC PBMC_10x
                     B    0    0   12  131   35   85  121    0        0
                 CD4 T 5771 3124 6351 5967 4914 4575 4634 5171     3505
                 CD8 T   13   25    0    1    4    5    3    0        0
                    DC    0    0    1    4   29   12   41    0        0
                  Mono    0    0    1   13    3    0    5    0        0
                    NK   38 2784    6   25   11  259   38    0        0
                 other    0    0   57    8 1025  208  487    0        0
               other T    3    2    0    1    1    4    2    0        0
janitor::tabyl(seurat_filtered@meta.data, predicted.celltype.l2, cell_line)
 predicted.celltype.l2   L1   L2   L3   L4   L5   L6   L7 PBMC PBMC_10x
        B intermediate    0    0    2   54    2    2    0    0        0
              B memory    0    0   11   34   38   82  120    0        0
               B naive    0    0    0   41    0    0    0    0        0
             CD14 Mono    0    0    1   14    5    0    6    0        0
               CD4 CTL    0    0    0    0    0    0    0   12        1
             CD4 Naive    0    0    0    7    0    0    0  523     1512
     CD4 Proliferating 2461 2852 5452 5391 4732 4002 4115    0        6
               CD4 TCM 3320  270  887  562  178  557  517 4576     1963
               CD4 TEM    1    0    0    0    0    0    0   60       23
     CD8 Proliferating    0    0    0    0    0    1    1    0        0
               CD8 TCM    1   16    0    0    0    0    0    0        0
               CD8 TEM    1    8    0    0    2    3    1    0        0
                  cDC1    0    0    0    0    2    6    0    0        0
                  cDC2    0    0    0    4   11    3   35    0        0
                   dnT    2    3    0    1    2    5    2    0        0
                  HSPC    0    0   60    7 1035  213  490    0        0
                   ILC    0    0    0    1    0    0    0    0        0
                    NK    0    0    0    1    0    0    0    0        0
      NK Proliferating   38 2785    6   24   11  259   38    0        0
                  Treg    1    1    9    9    4   15    6    0        0
janitor::tabyl(seurat_filtered@meta.data, predicted.celltype.l3, cell_line)
 predicted.celltype.l3   L1   L2   L3   L4   L5   L6   L7 PBMC PBMC_10x
  B intermediate kappa    0    0    0    1    0    0    0    0        0
 B intermediate lambda    0    0    2   48    4    2    3    0        0
        B memory kappa    0    0    7    1    7   22   55    0        0
       B memory lambda    0    0    3   41    7   29   26    0        0
        B naive lambda    0    0    0   37    0    0    0    0        0
             CD14 Mono    0    0    1   15    9    0   22    0        0
               CD4 CTL    0    0    0    0    0    0    0   14        1
             CD4 Naive    0    0    0    9    0    0    0  526     1524
     CD4 Proliferating 2462 2852 5452 5391 4732 4003 4115    0        6
             CD4 TCM_1 1932    6    6   35    0    7    3 4038     1447
             CD4 TCM_2  652  250  870  516  165  536  482  265      144
             CD4 TCM_3  436   12    4    6   13    7   26  265      359
             CD4 TEM_1    1    0    0    0    0    0    0    4        7
             CD4 TEM_2    0    0    0    0    0    0    0   15       16
             CD4 TEM_3    0    0    0    0    0    0    0   44        1
           CD8 Naive_2    0    0    0    0    1    1    0    0        0
     CD8 Proliferating    0    0    0    0    0    1    1    0        0
             CD8 TCM_1    0    8    0    0    0    0    0    0        0
             CD8 TCM_2  298    6    0    0    0    0    0    0        0
             CD8 TCM_3    0    1    0    0    0    0    0    0        0
             CD8 TEM_2    0    0    0    0    0    1    0    0        0
             CD8 TEM_6    1   10    0    0    1    1    1    0        0
                  cDC1    0    0    0    1   17   36   16    0        0
                cDC2_1    0    0    0    1    1    0    4    0        0
                cDC2_2    0    0    1    3   12    4   33    0        0
                 dnT_2    2    3    0    2    2    6    2    0        0
                  HSPC    0    0   62    7 1036  214  493    0        0
                   ILC    0    0    1    3    0    0    0    0        0
      NK Proliferating   38 2785    6   24   11  259   38    0        0
           Treg Memory    3    2   13    9    4   19   11    0        0

3.Save the Seurat object as an Robj file

LS0tCnRpdGxlOiAidXNlIEFubm90YXRlZCBSb2JqIGluY2x1ZGluZyBQQk1DMTB4IHRvIHJlbW92ZSBOb25DRDRUY2VsbHMgZnJvbSBDb250cm9sIGFuZCBrZWVwIGp1c3QgQ0Q0VGNlbGxzIgphdXRob3I6IE5hc2lyIE1haG1vb2QgQWJiYXNpCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKb3V0cHV0OgogICMgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgIyB3b3JkX2RvY3VtZW50OiBkZWZhdWx0CiAgIyBodG1sX2RvY3VtZW50OiBkZWZhdWx0CiAgI3JtZGZvcm1hdHM6OnJlYWR0aGVkb3duCiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0b2NfY29sbGFwc2VkOiB0cnVlCi0tLQoKCgojSW4gdGhpcyBzY3JpcHQgSSB3aWxsIEkgd2lsbCByZW1vdmUgTm9uIFQgY2VsbHMgZnJvbSBQQk1DIAoKIyAxLiBsb2FkIGxpYnJhcmllcwpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KFNldXJhdE9iamVjdCkKbGlicmFyeShTZXVyYXREYXRhKQpsaWJyYXJ5KHBhdGNod29yaykKCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoUkNvbG9yQnJld2VyKQpsaWJyYXJ5KG1hZ3JpdHRyKQpsaWJyYXJ5KGRicGx5cikKbGlicmFyeShybWFya2Rvd24pCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkodGlueXRleCkKI0F6aW11dGggQW5ub3RhdGlvbiBsaWJyYXJpZXMKbGlicmFyeShBemltdXRoKQojUHJvamVjVGlscyBBbm5vdGF0aW9uIGxpYnJhcmllcwpsaWJyYXJ5KFNUQUNBUykKbGlicmFyeShQcm9qZWNUSUxzKQojc2luZ2xlUiBBbm5vdGF0aW9uIGxpYnJhcmllcwpsaWJyYXJ5KFNpbmdsZVIpCmxpYnJhcnkoY2VsbGRleCkKbGlicmFyeShTaW5nbGVDZWxsRXhwZXJpbWVudCkKCmxpYnJhcnkoY2x1c3RyZWUpCgpgYGAKCgojIDIuIExvYWQgU2V1cmF0IE9iamVjdCAKYGBge3IgbG9hZF9zZXVyYXR9CgojTG9hZCBTZXVyYXQgT2JqZWN0IG1lcmdlZCBmcm9tIGNlbGwgbGluZXMgYW5kIGEgY29udHJvbChQQk1DKSBhZnRlciBmaWx0cmF0aW9uCmxvYWQoIjAtaW1wX1JvYmovQWxsX1NhbXBsZXNfTWVyZ2VkX3dpdGhfMTB4X0F6aXRtdXRoX0Fubm90YXRlZC5yb2JqIikKCgpBbGxfc2FtcGxlc19NZXJnZWQKCgpgYGAKCiMgMy4gQ2VsbCB0eXBlIERpc3RyaWJ1dGlvbiB0byBjaGVjayBjbHVzdGVycwpgYGB7ciBEaXN0cmlidXRpb24xLCBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9MTB9CiMgV2UgY2FuIGFwcGx5IGl0IGxhdGVyIG9uIFIgb2JqIHRvIGdldCB0aGVzZSB0YWJsZXMgdG8gY29tcGFyZSBpdCB0byBkZWNpZGUgYWJvdXQgcmVzb2x1dGlvbi4KCiMgQXppbXV0aCBsMQpqYW5pdG9yOjp0YWJ5bChBbGxfc2FtcGxlc19NZXJnZWRAbWV0YS5kYXRhLCBwcmVkaWN0ZWQuY2VsbHR5cGUubDEsIGNlbGxfbGluZSkKCgojIEF6aW11dGggbDIKamFuaXRvcjo6dGFieWwoQWxsX3NhbXBsZXNfTWVyZ2VkQG1ldGEuZGF0YSwgcHJlZGljdGVkLmNlbGx0eXBlLmwyLCBjZWxsX2xpbmUpCgojIEF6aW11dGggbDMKamFuaXRvcjo6dGFieWwoQWxsX3NhbXBsZXNfTWVyZ2VkQG1ldGEuZGF0YSwgcHJlZGljdGVkLmNlbGx0eXBlLmwzLCBjZWxsX2xpbmUpCgpgYGAKCiMgNC4gZmlsdGVyIGNlbGxzIGp1c3Qga2VlcCBDRDQgVCBjZWxscwpgYGB7ciBEaXN0cmlidXRpb24sIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTEwfQoKCgojIFNldCBpZGVudGl0eSB0byBjZWxsX2xpbmUgCklkZW50cyhBbGxfc2FtcGxlc19NZXJnZWQpIDwtICJjZWxsX2xpbmUiCgojIElkZW50aWZ5IENENCBUIGNlbGxzIGluIFBCTUMgYW5kIFBCTUNfMTB4CmNkNF9jZWxsc19wYm1jIDwtIFdoaWNoQ2VsbHMoQWxsX3NhbXBsZXNfTWVyZ2VkLCBleHByZXNzaW9uID0gCiAgZ3JlcGwoIl5DRDQiLCBBbGxfc2FtcGxlc19NZXJnZWQkcHJlZGljdGVkLmNlbGx0eXBlLmwxKSAmCiAgZ3JlcGwoIl5DRDQiLCBBbGxfc2FtcGxlc19NZXJnZWQkcHJlZGljdGVkLmNlbGx0eXBlLmwyKSAmCiAgZ3JlcGwoIl5DRDQiLCBBbGxfc2FtcGxlc19NZXJnZWQkcHJlZGljdGVkLmNlbGx0eXBlLmwzKSAmCiAgKGNlbGxfbGluZSAlaW4lIGMoIlBCTUMiLCAiUEJNQ18xMHgiKSkKKQoKIyBTZWxlY3QgYWxsIGNlbGxzIGZyb20gb3RoZXIgY2VsbCBsaW5lcwpvdGhlcl9jZWxsc19zZXVyYXQgPC0gc3Vic2V0KEFsbF9zYW1wbGVzX01lcmdlZCwgc3Vic2V0ID0gY2VsbF9saW5lICVpbiUgYygiTDEiLCAiTDIiLCAiTDMiLCAiTDQiLCAiTDUiLCAiTDYiLCAiTDciKSkKCiMgR2V0IHRoZSBjZWxsIG5hbWVzIGZyb20gdGhlIHN1YnNldApvdGhlcl9jZWxscyA8LSBjb2xuYW1lcyhvdGhlcl9jZWxsc19zZXVyYXQpCgojIENvbWJpbmUgdGhlIGNlbGwgbGlzdHMKY2VsbHNfdG9fa2VlcCA8LSBjKGNkNF9jZWxsc19wYm1jLCBvdGhlcl9jZWxscykKCiMgQ3JlYXRlIHRoZSBmaW5hbCBmaWx0ZXJlZCBTZXVyYXQgb2JqZWN0CnNldXJhdF9maWx0ZXJlZCA8LSBzdWJzZXQoQWxsX3NhbXBsZXNfTWVyZ2VkLCBjZWxscyA9IGNlbGxzX3RvX2tlZXApCgoKCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShSQ29sb3JCcmV3ZXIpICAKCiMgQXNzdW1pbmcgeW91IGhhdmUgMTAgZGlmZmVyZW50IGNlbGwgbGluZXMsIGdlbmVyYXRpbmcgYSBjb2xvciBwYWxldHRlIHdpdGggMTAgY29sb3JzCmNlbGxfbGluZV9jb2xvcnMgPC0gYnJld2VyLnBhbCgxMCwgIlNldDMiKQoKIyBBc3N1bWluZyBBbGxfc2FtcGxlc19NZXJnZWQkY2VsbF9saW5lIGlzIGEgZmFjdG9yIG9yIGNoYXJhY3RlciB2ZWN0b3IgY29udGFpbmluZyBjZWxsIGxpbmUgbmFtZXMKZGF0YSA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKHNldXJhdF9maWx0ZXJlZCRjZWxsX2xpbmUpKQpjb2xuYW1lcyhkYXRhKSA8LSBjKCJjZWxsX2xpbmUiLCAiblVNSSIpICAjIENoYW5nZSBjb2x1bW4gbmFtZSB0byBuVU1JCgpuY2VsbHMgPC0gZ2dwbG90KGRhdGEsIGFlcyh4ID0gY2VsbF9saW5lLCB5ID0gblVNSSwgZmlsbCA9IGNlbGxfbGluZSkpICsgCiAgZ2VvbV9jb2woKSArCiAgdGhlbWVfY2xhc3NpYygpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gblVNSSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSwgCiAgICAgICAgICAgIHZqdXN0ID0gLTAuMjUpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjZWxsX2xpbmVfY29sb3JzKSArIAogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpICsgICMgQWRqdXN0IHRoZSB0aXRsZSBwb3NpdGlvbgogIGdndGl0bGUoIkZpbHRlcmVkIGNlbGxzIHBlciBzYW1wbGUiKSArCiAgeGxhYigiQ2VsbCBsaW5lcyIpICsgICMgQWRqdXN0IHgtYXhpcyBsYWJlbAogIHlsYWIoIkZyZXF1ZW5jeSIpICAgICMgQWRqdXN0IHktYXhpcyBsYWJlbAoKcHJpbnQobmNlbGxzKQoKCmBgYAoKCgoKIyBDZWxsIHR5cGUgRGlzdHJpYnV0aW9uIHRvIGNoZWNrIGNsdXN0ZXJzCmBgYHtyIERpc3RyaWJ1dGlvbjIsIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTEwfQoKIyBXZSBjYW4gYXBwbHkgaXQgbGF0ZXIgb24gUiBvYmogdG8gZ2V0IHRoZXNlIHRhYmxlcyB0byBjb21wYXJlIGl0IHRvIGRlY2lkZSBhYm91dCByZXNvbHV0aW9uLgoKIyBBemltdXRoIGwxCmphbml0b3I6OnRhYnlsKHNldXJhdF9maWx0ZXJlZEBtZXRhLmRhdGEsIHByZWRpY3RlZC5jZWxsdHlwZS5sMSwgY2VsbF9saW5lKQoKCmphbml0b3I6OnRhYnlsKHNldXJhdF9maWx0ZXJlZEBtZXRhLmRhdGEsIHByZWRpY3RlZC5jZWxsdHlwZS5sMiwgY2VsbF9saW5lKQoKCmphbml0b3I6OnRhYnlsKHNldXJhdF9maWx0ZXJlZEBtZXRhLmRhdGEsIHByZWRpY3RlZC5jZWxsdHlwZS5sMywgY2VsbF9saW5lKQoKYGBgCgoKIyAzLlNhdmUgdGhlIFNldXJhdCBvYmplY3QgYXMgYW4gUm9iaiBmaWxlCmBgYHtyIHNhdmVST0JKLCBlY2hvPUZBTFNFfQoKc2F2ZShzZXVyYXRfZmlsdGVyZWQsIGZpbGUgPSAiMC1pbXBfUm9iai9TU19DRDRfVGNlbGxzX0F6aW11dGhfQW5ub3RhdGVkX1BCTUMxMHhfZXhjbHVkaW5nX25vbkNENF9jZWxsc19mcm9tX0NvbnRyb2wucm9iaiIpCgoKYGBgCgoKCgoKCgo=