I. Preliminaries

Loading libraries

library("tidyverse")
library("tibble")
library("msigdbr")
library("ggplot2")
library("TCGAbiolinks")
library("RNAseqQC")
library("DESeq2")
library("ensembldb")
library("purrr")
library("magrittr")
library("vsn")
library("matrixStats")
library("dplyr")
library("grex")

II. Downloading the TCGA gene expression data

Create a function for downloading TCGA gene expression data.

For more detailed documentation, refer to 2. Differential Gene Expression Analysis - TCGA.Rmd.

query_and_filter_samples <- function(project) {
  query_tumor <- GDCquery(
    project = project,
    data.category = "Transcriptome Profiling",
    data.type = "Gene Expression Quantification",
    experimental.strategy = "RNA-Seq",
    workflow.type = "STAR - Counts",
    access = "open",
    sample.type = "Primary Tumor"
  )
  tumor <- getResults(query_tumor)
  
  query_normal <- GDCquery(
    project = project,
    data.category = "Transcriptome Profiling",
    data.type = "Gene Expression Quantification",
    experimental.strategy = "RNA-Seq",
    workflow.type = "STAR - Counts",
    access = "open",
    sample.type = "Solid Tissue Normal"
  )
  normal <- getResults(query_normal)
  
  submitter_ids <- inner_join(tumor, normal, by = "cases.submitter_id") %>%
    dplyr::select(cases.submitter_id)
  tumor <- tumor %>%
    dplyr::filter(cases.submitter_id %in% submitter_ids$cases.submitter_id)
  normal <- normal %>%
    dplyr::filter(cases.submitter_id %in% submitter_ids$cases.submitter_id)
  
  samples <- rbind(tumor, normal)
  unique(samples$sample_type)
  
  query_project <- GDCquery(
    project = project,
    data.category = "Transcriptome Profiling",
    data.type = "Gene Expression Quantification",
    experimental.strategy = "RNA-Seq",
    workflow.type = "STAR - Counts",
    access = "open",
    sample.type = c("Solid Tissue Normal", "Primary Tumor"),
    barcode = as.list(samples$sample.submitter_id)
  )
  
  # If this is your first time running this notebook (i.e., you have not yet downloaded the results of the query in the previous block), 
  # uncomment the line below
  
  # GDCdownload(query_project)
  
  return (list(samples = samples, query_project = query_project))
}

Download the TCGA gene expression data for different cancer types.

Refer to this link for the list of TCGA cancer type abbreviations: https://gdc.cancer.gov/resources-tcga-users/tcga-code-tables/tcga-study-abbreviations

projects <- c("TCGA-LUSC", "TCGA-COAD", "TCGA-KICH", "TCGA-KIRC", "TCGA-PRAD",
              "TCGA-BRCA", "TCGA-HNSC", "TCGA-KIRP", "TCGA-LIHC", "TCGA-STAD",
              "TCGA-THCA", "TCGA-BLCA", "TCGA-LUAD", "TCGA-ESCA")

samples <- list()
project_data <- list()

for (project in projects) {
  result <- query_and_filter_samples(project)
  
  samples[[project]] <- result$samples
  project_data[[project]] <- result$query_project
}

Running the code block above should generate and populate a directory named GDCdata.

III. Data preprocessing

Construct the RNA-seq count matrix for each cancer type.

tcga_data <- list()
tcga_matrix <- list()

for (project in projects) {
  tcga_data[[project]] <- GDCprepare(project_data[[project]], summarizedExperiment = TRUE)
}
for (project in projects) {
  count_matrix <- assay(tcga_data[[project]], "unstranded")
  
  # Remove duplicate entries
  count_matrix_df <- data.frame(count_matrix)
  count_matrix_df <- count_matrix_df[!duplicated(count_matrix_df), ]
  count_matrix <- data.matrix(count_matrix_df)
  rownames(count_matrix) <- cleanid(rownames(count_matrix))
  count_matrix <- count_matrix[!(duplicated(rownames(count_matrix)) | duplicated(rownames(count_matrix), fromLast = TRUE)), ]
  
  tcga_matrix[[project]] <- count_matrix
}

Format the samples table so that it can be fed as input to DESeq2.

for (project in projects) {
  rownames(samples[[project]]) <- samples[[project]]$cases
  samples[[project]] <- samples[[project]] %>%
    dplyr::select(case = "cases.submitter_id", type = "sample_type")
  samples[[project]]$type <- str_replace(samples[[project]]$type, "Solid Tissue Normal", "normal")
  samples[[project]]$type <- str_replace(samples[[project]]$type, "Primary Tumor", "tumor")
}

DESeq2 requires the row names of samples should be identical to the column names of count_matrix.

for (project in projects) {
  colnames(tcga_matrix[[project]]) <- gsub(x = colnames(tcga_matrix[[project]]), pattern = "\\.", replacement = "-")
  tcga_matrix[[project]] <- tcga_matrix[[project]][, rownames(samples[[project]])]
  
  # Sanity check
  print(all(colnames(tcga_matrix[[project]]) == rownames(samples[[project]])))
}

IV. Differential gene expression analysis

References:

Construct the DESeqDataSet object for each cancer type.

dds_results <- list()

for (project in projects) {
  dds_results[[project]] <- DESeqDataSetFromMatrix(
    countData = tcga_matrix[[project]],
    colData = samples[[project]],
    design = ~type
  )
}
Warning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factorsWarning: some variables in design formula are characters, converting to factors

Regulated Cell Death

We obtain the gene sets from RCDdb: https://pmc.ncbi.nlm.nih.gov/articles/PMC11384979/

Download the gene sets by running:

wget http://chenyclab.com/RCDdb/download/Apoptosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Entotic_cell_death.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Necroptosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Alkaliptosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Ferroptosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/NETotic_cell_death.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Autophagy_dependent_cell_death.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Immunogenic_cell_death.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Oxeiptosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Cuproptosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Lysosome_dependent_cell_death.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Parthanatos.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Disulfidptosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/MPT_driven_necrosis.csv -P data/RCDdb/
wget http://chenyclab.com/RCDdb/download/Pyroptosis.csv -P data/RCDdb/
RCDdb <- "data/RCDdb/"

Write utility functions for filtering the gene sets, performing differential gene expression analysis, and plotting the results.

filter_gene_set_and_perform_dgea <- function(genes) {
  tcga_rcd <- list()

  for (project in projects) {
    rownames(genes) <- genes$gene_id
    tcga_rcd[[project]] <- tcga_matrix[[project]][rownames(tcga_matrix[[project]]) %in% genes$gene_id, ]
    tcga_rcd[[project]] <- tcga_rcd[[project]][, rownames(samples[[project]])]
  }
  
  dds_rcd <- list()
  res_rcd <- list()
  
  for (project in projects) {
    print(project)
    print("=============")
    dds <- DESeqDataSetFromMatrix(
      countData = tcga_rcd[[project]],
      colData = samples[[project]],
      design = ~type
    )
    dds <- filter_genes(dds, min_count = 10)
    dds$type <- relevel(dds$type, ref = "normal")
    dds_rcd[[project]] <- DESeq(dds)
    res_rcd[[project]] <- results(dds_rcd[[project]])
  }
  
  deseq.bbl.data <- list()
  
  for (project in projects) {
    deseq.results <- res_rcd[[project]]
    deseq.bbl.data[[project]] <- data.frame(
      row.names = rownames(deseq.results),
      baseMean = deseq.results$baseMean,
      log2FoldChange = deseq.results$log2FoldChange,
      lfcSE = deseq.results$lfcSE,
      stat = deseq.results$stat,
      pvalue = deseq.results$pvalue,
      padj = deseq.results$padj,
      cancer_type = project,
      gene_symbol = genes[rownames(deseq.results), "gene"]
    )
  }
  
  deseq.bbl.data.combined <- bind_rows(deseq.bbl.data)
  deseq.bbl.data.combined <- dplyr::filter(deseq.bbl.data.combined, abs(log2FoldChange) >= 1.5 & padj < 0.05)
  
  return (deseq.bbl.data.combined)
}
plot_dgea <- function(deseq.bbl.data.combined) {
  sizes <- c("<10^-15" = 4, "10^-10" = 3, "10^-5" = 2, "0.05" = 1)
  
  deseq.bbl.data.combined <- deseq.bbl.data.combined %>%
  mutate(fdr_category = cut(padj,
                            breaks = c(-Inf, 1e-15, 1e-10, 1e-5, 0.05),
                            labels = c("<10^-15", "10^-10", "10^-5", "0.05"),
                            right = FALSE))

  top_genes <- deseq.bbl.data.combined %>%
    group_by(cancer_type) %>%
    mutate(rank = rank(-abs(log2FoldChange))) %>%
    dplyr::filter(rank <= 10) %>%
    ungroup()
  
  ggplot(top_genes, aes(y=cancer_type, x=gene_symbol, size=fdr_category, fill=log2FoldChange)) +
      geom_point(alpha=0.5, shape=21, color="black") +
      scale_size_manual(values = sizes) +
      scale_fill_gradient2(low = "blue", mid = "white", high = "red", limits = c(min(deseq.bbl.data.combined$log2FoldChange),max(deseq.bbl.data.combined$log2FoldChange))) +
      theme_minimal() +
      theme(
        axis.text.x = element_text(size = 9, angle = 90, hjust = 1)
      ) +
      theme(legend.position="bottom") +
      theme(legend.position = "bottom")+
      labs(size = "Adjusted p-value", fill = "log2 FC", y = "Cancer type", x = "Gene")
}

1. Necroptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Necroptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

2. Ferroptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Ferroptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 19 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 22 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 19 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 28 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 22 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 40 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 18 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 18 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 35 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 18 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 11 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 37 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 21 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 37 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

3. Pyroptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Pyroptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 5 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 5 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 5 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 7 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

4. Alkaliptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Alkaliptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

5. Apoptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Apoptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 24 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 18 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 23 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 27 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 15 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 32 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 15 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 19 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 42 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 17 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 22 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 37 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 17 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 34 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

6. Autophagy-Dependent Cell Death

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Autophagy_dependent_cell_death.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 27 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 18 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 28 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 25 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 23 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 48 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 19 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 25 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 35 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 17 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 20 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 48 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 17 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 47 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

7. Cuproptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Cuproptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

8. Disulfidptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Disulfidptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

9. Entotic Cell Death

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Entotic_cell_death.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

10. Immunogenic Cell Death

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Immunogenic_cell_death.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

11. Lysosome-Dependent Cell Death

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Lysosome_dependent_cell_death.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

12. MPT-Driven Necrosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "MPT_driven_necrosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

13. NETotic Cell Death

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "NETotic_cell_death.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 2 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 3 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

14. Oxeiptosis

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Oxeiptosis.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)

15. Parthanatos

Fetch the gene set of interest.

genes <- read.csv(paste0(RCDdb, "Parthanatos.csv"))
genes$gene_id <- cleanid(genes$gene_id)
genes <- distinct(genes, gene_id, .keep_all = TRUE)
genes <- subset(genes, gene_id != "")
genes

Filter the genes to include only those in the gene set of interest, and then perform differential gene expression analysis.

deseq.bbl.data.combined <- filter_gene_set_and_perform_dgea(genes)
[1] "TCGA-LUSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-COAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KICH"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-PRAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-BRCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-HNSC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-KIRP"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-LIHC"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-STAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-THCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
-- replacing outliers and refitting for 1 genes
-- DESeq argument 'minReplicatesForReplace' = 7 
-- original counts are preserved in counts(dds)
estimating dispersions
fitting model and testing
[1] "TCGA-BLCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
[1] "TCGA-LUAD"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
[1] "TCGA-ESCA"
[1] "============="
Warning: some variables in design formula are characters, converting to factorsestimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing
deseq.bbl.data.combined

Plot the results.

plot_dgea(deseq.bbl.data.combined)


  1. De La Salle University, Manila, Philippines, ↩︎

  2. De La Salle University, Manila, Philippines, ↩︎

LS0tDQp0aXRsZTogIkRpZmZlcmVudGlhbCBHZW5lIEV4cHJlc3Npb24gQW5hbHlzaXMiDQpzdWJ0aXRsZTogIlBhbi1jYW5jZXIgfCBNdWx0aXBsZSBSQ0QgdHlwZXMiDQphdXRob3I6IA0KICAtIE1hcmsgRWR3YXJkIE0uIEdvbnphbGVzXltEZSBMYSBTYWxsZSBVbml2ZXJzaXR5LCBNYW5pbGEsIFBoaWxpcHBpbmVzLCBnb256YWxlcy5tYXJrZWR3YXJkQGdtYWlsLmNvbV0NCiAgLSBEci4gQW5pc2ggTS5TLiBTaHJlc3RoYV5bRGUgTGEgU2FsbGUgVW5pdmVyc2l0eSwgTWFuaWxhLCBQaGlsaXBwaW5lcywgYW5pc2guc2hyZXN0aGFAZGxzdS5lZHUucGhdDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyBJLiBQcmVsaW1pbmFyaWVzDQoNCiMjIyBMb2FkaW5nIGxpYnJhcmllcw0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJ0aWJibGUiKQ0KbGlicmFyeSgibXNpZ2RiciIpDQpsaWJyYXJ5KCJnZ3Bsb3QyIikNCmxpYnJhcnkoIlRDR0FiaW9saW5rcyIpDQpsaWJyYXJ5KCJSTkFzZXFRQyIpDQpsaWJyYXJ5KCJERVNlcTIiKQ0KbGlicmFyeSgiZW5zZW1ibGRiIikNCmxpYnJhcnkoInB1cnJyIikNCmxpYnJhcnkoIm1hZ3JpdHRyIikNCmxpYnJhcnkoInZzbiIpDQpsaWJyYXJ5KCJtYXRyaXhTdGF0cyIpDQpsaWJyYXJ5KCJkcGx5ciIpDQpsaWJyYXJ5KCJncmV4IikNCmBgYA0KDQojIyBJSS4gRG93bmxvYWRpbmcgdGhlIFRDR0EgZ2VuZSBleHByZXNzaW9uIGRhdGEgDQoNCkNyZWF0ZSBhIGZ1bmN0aW9uIGZvciBkb3dubG9hZGluZyBUQ0dBIGdlbmUgZXhwcmVzc2lvbiBkYXRhLiANCg0KRm9yIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiwgcmVmZXIgdG8gYDIuIERpZmZlcmVudGlhbCBHZW5lIEV4cHJlc3Npb24gQW5hbHlzaXMgLSBUQ0dBLnJtZGAuDQoNCmBgYHtyfQ0KcXVlcnlfYW5kX2ZpbHRlcl9zYW1wbGVzIDwtIGZ1bmN0aW9uKHByb2plY3QpIHsNCiAgcXVlcnlfdHVtb3IgPC0gR0RDcXVlcnkoDQogICAgcHJvamVjdCA9IHByb2plY3QsDQogICAgZGF0YS5jYXRlZ29yeSA9ICJUcmFuc2NyaXB0b21lIFByb2ZpbGluZyIsDQogICAgZGF0YS50eXBlID0gIkdlbmUgRXhwcmVzc2lvbiBRdWFudGlmaWNhdGlvbiIsDQogICAgZXhwZXJpbWVudGFsLnN0cmF0ZWd5ID0gIlJOQS1TZXEiLA0KICAgIHdvcmtmbG93LnR5cGUgPSAiU1RBUiAtIENvdW50cyIsDQogICAgYWNjZXNzID0gIm9wZW4iLA0KICAgIHNhbXBsZS50eXBlID0gIlByaW1hcnkgVHVtb3IiDQogICkNCiAgdHVtb3IgPC0gZ2V0UmVzdWx0cyhxdWVyeV90dW1vcikNCiAgDQogIHF1ZXJ5X25vcm1hbCA8LSBHRENxdWVyeSgNCiAgICBwcm9qZWN0ID0gcHJvamVjdCwNCiAgICBkYXRhLmNhdGVnb3J5ID0gIlRyYW5zY3JpcHRvbWUgUHJvZmlsaW5nIiwNCiAgICBkYXRhLnR5cGUgPSAiR2VuZSBFeHByZXNzaW9uIFF1YW50aWZpY2F0aW9uIiwNCiAgICBleHBlcmltZW50YWwuc3RyYXRlZ3kgPSAiUk5BLVNlcSIsDQogICAgd29ya2Zsb3cudHlwZSA9ICJTVEFSIC0gQ291bnRzIiwNCiAgICBhY2Nlc3MgPSAib3BlbiIsDQogICAgc2FtcGxlLnR5cGUgPSAiU29saWQgVGlzc3VlIE5vcm1hbCINCiAgKQ0KICBub3JtYWwgPC0gZ2V0UmVzdWx0cyhxdWVyeV9ub3JtYWwpDQogIA0KICBzdWJtaXR0ZXJfaWRzIDwtIGlubmVyX2pvaW4odHVtb3IsIG5vcm1hbCwgYnkgPSAiY2FzZXMuc3VibWl0dGVyX2lkIikgJT4lDQogICAgZHBseXI6OnNlbGVjdChjYXNlcy5zdWJtaXR0ZXJfaWQpDQogIHR1bW9yIDwtIHR1bW9yICU+JQ0KICAgIGRwbHlyOjpmaWx0ZXIoY2FzZXMuc3VibWl0dGVyX2lkICVpbiUgc3VibWl0dGVyX2lkcyRjYXNlcy5zdWJtaXR0ZXJfaWQpDQogIG5vcm1hbCA8LSBub3JtYWwgJT4lDQogICAgZHBseXI6OmZpbHRlcihjYXNlcy5zdWJtaXR0ZXJfaWQgJWluJSBzdWJtaXR0ZXJfaWRzJGNhc2VzLnN1Ym1pdHRlcl9pZCkNCiAgDQogIHNhbXBsZXMgPC0gcmJpbmQodHVtb3IsIG5vcm1hbCkNCiAgdW5pcXVlKHNhbXBsZXMkc2FtcGxlX3R5cGUpDQogIA0KICBxdWVyeV9wcm9qZWN0IDwtIEdEQ3F1ZXJ5KA0KICAgIHByb2plY3QgPSBwcm9qZWN0LA0KICAgIGRhdGEuY2F0ZWdvcnkgPSAiVHJhbnNjcmlwdG9tZSBQcm9maWxpbmciLA0KICAgIGRhdGEudHlwZSA9ICJHZW5lIEV4cHJlc3Npb24gUXVhbnRpZmljYXRpb24iLA0KICAgIGV4cGVyaW1lbnRhbC5zdHJhdGVneSA9ICJSTkEtU2VxIiwNCiAgICB3b3JrZmxvdy50eXBlID0gIlNUQVIgLSBDb3VudHMiLA0KICAgIGFjY2VzcyA9ICJvcGVuIiwNCiAgICBzYW1wbGUudHlwZSA9IGMoIlNvbGlkIFRpc3N1ZSBOb3JtYWwiLCAiUHJpbWFyeSBUdW1vciIpLA0KICAgIGJhcmNvZGUgPSBhcy5saXN0KHNhbXBsZXMkc2FtcGxlLnN1Ym1pdHRlcl9pZCkNCiAgKQ0KICANCiAgIyBJZiB0aGlzIGlzIHlvdXIgZmlyc3QgdGltZSBydW5uaW5nIHRoaXMgbm90ZWJvb2sgKGkuZS4sIHlvdSBoYXZlIG5vdCB5ZXQgZG93bmxvYWRlZCB0aGUgcmVzdWx0cyBvZiB0aGUgcXVlcnkgaW4gdGhlIHByZXZpb3VzIGJsb2NrKSwgDQogICMgdW5jb21tZW50IHRoZSBsaW5lIGJlbG93DQogIA0KICAjIEdEQ2Rvd25sb2FkKHF1ZXJ5X3Byb2plY3QpDQogIA0KICByZXR1cm4gKGxpc3Qoc2FtcGxlcyA9IHNhbXBsZXMsIHF1ZXJ5X3Byb2plY3QgPSBxdWVyeV9wcm9qZWN0KSkNCn0NCmBgYA0KDQpEb3dubG9hZCB0aGUgVENHQSBnZW5lIGV4cHJlc3Npb24gZGF0YSBmb3IgZGlmZmVyZW50IGNhbmNlciB0eXBlcy4NCg0KUmVmZXIgdG8gdGhpcyBsaW5rIGZvciB0aGUgbGlzdCBvZiBUQ0dBIGNhbmNlciB0eXBlIGFiYnJldmlhdGlvbnM6IGh0dHBzOi8vZ2RjLmNhbmNlci5nb3YvcmVzb3VyY2VzLXRjZ2EtdXNlcnMvdGNnYS1jb2RlLXRhYmxlcy90Y2dhLXN0dWR5LWFiYnJldmlhdGlvbnMNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0V9DQpwcm9qZWN0cyA8LSBjKCJUQ0dBLUxVU0MiLCAiVENHQS1DT0FEIiwgIlRDR0EtS0lDSCIsICJUQ0dBLUtJUkMiLCAiVENHQS1QUkFEIiwNCiAgICAgICAgICAgICAgIlRDR0EtQlJDQSIsICJUQ0dBLUhOU0MiLCAiVENHQS1LSVJQIiwgIlRDR0EtTElIQyIsICJUQ0dBLVNUQUQiLA0KICAgICAgICAgICAgICAiVENHQS1USENBIiwgIlRDR0EtQkxDQSIsICJUQ0dBLUxVQUQiLCAiVENHQS1FU0NBIikNCg0Kc2FtcGxlcyA8LSBsaXN0KCkNCnByb2plY3RfZGF0YSA8LSBsaXN0KCkNCg0KZm9yIChwcm9qZWN0IGluIHByb2plY3RzKSB7DQogIHJlc3VsdCA8LSBxdWVyeV9hbmRfZmlsdGVyX3NhbXBsZXMocHJvamVjdCkNCiAgDQogIHNhbXBsZXNbW3Byb2plY3RdXSA8LSByZXN1bHQkc2FtcGxlcw0KICBwcm9qZWN0X2RhdGFbW3Byb2plY3RdXSA8LSByZXN1bHQkcXVlcnlfcHJvamVjdA0KfQ0KYGBgDQoNCg0KUnVubmluZyB0aGUgY29kZSBibG9jayBhYm92ZSBzaG91bGQgZ2VuZXJhdGUgYW5kIHBvcHVsYXRlIGEgZGlyZWN0b3J5IG5hbWVkIGBHRENkYXRhYC4NCg0KIyMgSUlJLiBEYXRhIHByZXByb2Nlc3NpbmcNCg0KQ29uc3RydWN0IHRoZSBSTkEtc2VxIGNvdW50IG1hdHJpeCBmb3IgZWFjaCBjYW5jZXIgdHlwZS4NCg0KYGBge3IsIGVjaG8gPSBUUlVFLCBtZXNzYWdlID0gRkFMU0UsIHJlc3VsdHM9ImhpZGUifQ0KdGNnYV9kYXRhIDwtIGxpc3QoKQ0KdGNnYV9tYXRyaXggPC0gbGlzdCgpDQoNCmZvciAocHJvamVjdCBpbiBwcm9qZWN0cykgew0KICB0Y2dhX2RhdGFbW3Byb2plY3RdXSA8LSBHRENwcmVwYXJlKHByb2plY3RfZGF0YVtbcHJvamVjdF1dLCBzdW1tYXJpemVkRXhwZXJpbWVudCA9IFRSVUUpDQp9DQpgYGANCg0KYGBge3J9DQpmb3IgKHByb2plY3QgaW4gcHJvamVjdHMpIHsNCiAgY291bnRfbWF0cml4IDwtIGFzc2F5KHRjZ2FfZGF0YVtbcHJvamVjdF1dLCAidW5zdHJhbmRlZCIpDQogIA0KICAjIFJlbW92ZSBkdXBsaWNhdGUgZW50cmllcw0KICBjb3VudF9tYXRyaXhfZGYgPC0gZGF0YS5mcmFtZShjb3VudF9tYXRyaXgpDQogIGNvdW50X21hdHJpeF9kZiA8LSBjb3VudF9tYXRyaXhfZGZbIWR1cGxpY2F0ZWQoY291bnRfbWF0cml4X2RmKSwgXQ0KICBjb3VudF9tYXRyaXggPC0gZGF0YS5tYXRyaXgoY291bnRfbWF0cml4X2RmKQ0KICByb3duYW1lcyhjb3VudF9tYXRyaXgpIDwtIGNsZWFuaWQocm93bmFtZXMoY291bnRfbWF0cml4KSkNCiAgY291bnRfbWF0cml4IDwtIGNvdW50X21hdHJpeFshKGR1cGxpY2F0ZWQocm93bmFtZXMoY291bnRfbWF0cml4KSkgfCBkdXBsaWNhdGVkKHJvd25hbWVzKGNvdW50X21hdHJpeCksIGZyb21MYXN0ID0gVFJVRSkpLCBdDQogIA0KICB0Y2dhX21hdHJpeFtbcHJvamVjdF1dIDwtIGNvdW50X21hdHJpeA0KfQ0KYGBgDQpGb3JtYXQgdGhlIGBzYW1wbGVzYCB0YWJsZSBzbyB0aGF0IGl0IGNhbiBiZSBmZWQgYXMgaW5wdXQgdG8gREVTZXEyLg0KDQpgYGB7cn0NCmZvciAocHJvamVjdCBpbiBwcm9qZWN0cykgew0KICByb3duYW1lcyhzYW1wbGVzW1twcm9qZWN0XV0pIDwtIHNhbXBsZXNbW3Byb2plY3RdXSRjYXNlcw0KICBzYW1wbGVzW1twcm9qZWN0XV0gPC0gc2FtcGxlc1tbcHJvamVjdF1dICU+JQ0KICAgIGRwbHlyOjpzZWxlY3QoY2FzZSA9ICJjYXNlcy5zdWJtaXR0ZXJfaWQiLCB0eXBlID0gInNhbXBsZV90eXBlIikNCiAgc2FtcGxlc1tbcHJvamVjdF1dJHR5cGUgPC0gc3RyX3JlcGxhY2Uoc2FtcGxlc1tbcHJvamVjdF1dJHR5cGUsICJTb2xpZCBUaXNzdWUgTm9ybWFsIiwgIm5vcm1hbCIpDQogIHNhbXBsZXNbW3Byb2plY3RdXSR0eXBlIDwtIHN0cl9yZXBsYWNlKHNhbXBsZXNbW3Byb2plY3RdXSR0eXBlLCAiUHJpbWFyeSBUdW1vciIsICJ0dW1vciIpDQp9DQpgYGANCg0KREVTZXEyIHJlcXVpcmVzIHRoZSByb3cgbmFtZXMgb2YgYHNhbXBsZXNgIHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGhlIGNvbHVtbiBuYW1lcyBvZiBgY291bnRfbWF0cml4YC4NCg0KYGBge3IsIGVjaG8gPSBUUlVFLCByZXN1bHRzPSJoaWRlIn0NCmZvciAocHJvamVjdCBpbiBwcm9qZWN0cykgew0KICBjb2xuYW1lcyh0Y2dhX21hdHJpeFtbcHJvamVjdF1dKSA8LSBnc3ViKHggPSBjb2xuYW1lcyh0Y2dhX21hdHJpeFtbcHJvamVjdF1dKSwgcGF0dGVybiA9ICJcXC4iLCByZXBsYWNlbWVudCA9ICItIikNCiAgdGNnYV9tYXRyaXhbW3Byb2plY3RdXSA8LSB0Y2dhX21hdHJpeFtbcHJvamVjdF1dWywgcm93bmFtZXMoc2FtcGxlc1tbcHJvamVjdF1dKV0NCiAgDQogICMgU2FuaXR5IGNoZWNrDQogIHByaW50KGFsbChjb2xuYW1lcyh0Y2dhX21hdHJpeFtbcHJvamVjdF1dKSA9PSByb3duYW1lcyhzYW1wbGVzW1twcm9qZWN0XV0pKSkNCn0NCmBgYA0KDQojIyBJVi4gRGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcw0KDQpSZWZlcmVuY2VzOiANCg0KLSBPZmZpY2lhbCBkb2N1bWVudGF0aW9uOiBodHRwczovL3d3dy5iaW9jb25kdWN0b3Iub3JnL3BhY2thZ2VzL3JlbGVhc2UvYmlvYy92aWduZXR0ZXMvREVTZXEyL2luc3QvZG9jL0RFU2VxMi5odG1sDQotIEdvb2QgYmFsYW5jZSBvZiB0aGVvcnkgYW5kIGhhbmRzLW9uOiBodHRwczovL2hiY3RyYWluaW5nLmdpdGh1Yi5pby9ER0Vfd29ya3Nob3AvbGVzc29ucy8wNF9ER0VfREVTZXEyX2FuYWx5c2lzLmh0bWwNCi0gUXVhbGl0eSBjb250cm9sOiBodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvUk5Bc2VxUUMvdmlnbmV0dGVzL2ludHJvZHVjdGlvbi5odG1sDQoNCkNvbnN0cnVjdCB0aGUgYERFU2VxRGF0YVNldGAgb2JqZWN0IGZvciBlYWNoIGNhbmNlciB0eXBlLg0KDQpgYGB7cn0NCmRkc19yZXN1bHRzIDwtIGxpc3QoKQ0KDQpmb3IgKHByb2plY3QgaW4gcHJvamVjdHMpIHsNCiAgZGRzX3Jlc3VsdHNbW3Byb2plY3RdXSA8LSBERVNlcURhdGFTZXRGcm9tTWF0cml4KA0KICAgIGNvdW50RGF0YSA9IHRjZ2FfbWF0cml4W1twcm9qZWN0XV0sDQogICAgY29sRGF0YSA9IHNhbXBsZXNbW3Byb2plY3RdXSwNCiAgICBkZXNpZ24gPSB+dHlwZQ0KICApDQp9DQpgYGANCg0KDQojIyMgUmVndWxhdGVkIENlbGwgRGVhdGgNCg0KV2Ugb2J0YWluIHRoZSBnZW5lIHNldHMgZnJvbSBSQ0RkYjogaHR0cHM6Ly9wbWMubmNiaS5ubG0ubmloLmdvdi9hcnRpY2xlcy9QTUMxMTM4NDk3OS8NCg0KRG93bmxvYWQgdGhlIGdlbmUgc2V0cyBieSBydW5uaW5nOg0KDQpgYGANCndnZXQgaHR0cDovL2NoZW55Y2xhYi5jb20vUkNEZGIvZG93bmxvYWQvQXBvcHRvc2lzLmNzdiAtUCBkYXRhL1JDRGRiLw0Kd2dldCBodHRwOi8vY2hlbnljbGFiLmNvbS9SQ0RkYi9kb3dubG9hZC9FbnRvdGljX2NlbGxfZGVhdGguY3N2IC1QIGRhdGEvUkNEZGIvDQp3Z2V0IGh0dHA6Ly9jaGVueWNsYWIuY29tL1JDRGRiL2Rvd25sb2FkL05lY3JvcHRvc2lzLmNzdiAtUCBkYXRhL1JDRGRiLw0Kd2dldCBodHRwOi8vY2hlbnljbGFiLmNvbS9SQ0RkYi9kb3dubG9hZC9BbGthbGlwdG9zaXMuY3N2IC1QIGRhdGEvUkNEZGIvDQp3Z2V0IGh0dHA6Ly9jaGVueWNsYWIuY29tL1JDRGRiL2Rvd25sb2FkL0ZlcnJvcHRvc2lzLmNzdiAtUCBkYXRhL1JDRGRiLw0Kd2dldCBodHRwOi8vY2hlbnljbGFiLmNvbS9SQ0RkYi9kb3dubG9hZC9ORVRvdGljX2NlbGxfZGVhdGguY3N2IC1QIGRhdGEvUkNEZGIvDQp3Z2V0IGh0dHA6Ly9jaGVueWNsYWIuY29tL1JDRGRiL2Rvd25sb2FkL0F1dG9waGFneV9kZXBlbmRlbnRfY2VsbF9kZWF0aC5jc3YgLVAgZGF0YS9SQ0RkYi8NCndnZXQgaHR0cDovL2NoZW55Y2xhYi5jb20vUkNEZGIvZG93bmxvYWQvSW1tdW5vZ2VuaWNfY2VsbF9kZWF0aC5jc3YgLVAgZGF0YS9SQ0RkYi8NCndnZXQgaHR0cDovL2NoZW55Y2xhYi5jb20vUkNEZGIvZG93bmxvYWQvT3hlaXB0b3Npcy5jc3YgLVAgZGF0YS9SQ0RkYi8NCndnZXQgaHR0cDovL2NoZW55Y2xhYi5jb20vUkNEZGIvZG93bmxvYWQvQ3Vwcm9wdG9zaXMuY3N2IC1QIGRhdGEvUkNEZGIvDQp3Z2V0IGh0dHA6Ly9jaGVueWNsYWIuY29tL1JDRGRiL2Rvd25sb2FkL0x5c29zb21lX2RlcGVuZGVudF9jZWxsX2RlYXRoLmNzdiAtUCBkYXRhL1JDRGRiLw0Kd2dldCBodHRwOi8vY2hlbnljbGFiLmNvbS9SQ0RkYi9kb3dubG9hZC9QYXJ0aGFuYXRvcy5jc3YgLVAgZGF0YS9SQ0RkYi8NCndnZXQgaHR0cDovL2NoZW55Y2xhYi5jb20vUkNEZGIvZG93bmxvYWQvRGlzdWxmaWRwdG9zaXMuY3N2IC1QIGRhdGEvUkNEZGIvDQp3Z2V0IGh0dHA6Ly9jaGVueWNsYWIuY29tL1JDRGRiL2Rvd25sb2FkL01QVF9kcml2ZW5fbmVjcm9zaXMuY3N2IC1QIGRhdGEvUkNEZGIvDQp3Z2V0IGh0dHA6Ly9jaGVueWNsYWIuY29tL1JDRGRiL2Rvd25sb2FkL1B5cm9wdG9zaXMuY3N2IC1QIGRhdGEvUkNEZGIvDQpgYGANCg0KYGBge3J9DQpSQ0RkYiA8LSAiZGF0YS9SQ0RkYi8iDQpgYGANCg0KV3JpdGUgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGZpbHRlcmluZyB0aGUgZ2VuZSBzZXRzLCBwZXJmb3JtaW5nIGRpZmZlcmVudGlhbCBnZW5lIGV4cHJlc3Npb24gYW5hbHlzaXMsIGFuZCBwbG90dGluZyB0aGUgcmVzdWx0cy4NCg0KYGBge3J9DQpmaWx0ZXJfZ2VuZV9zZXRfYW5kX3BlcmZvcm1fZGdlYSA8LSBmdW5jdGlvbihnZW5lcykgew0KICB0Y2dhX3JjZCA8LSBsaXN0KCkNCg0KICBmb3IgKHByb2plY3QgaW4gcHJvamVjdHMpIHsNCiAgICByb3duYW1lcyhnZW5lcykgPC0gZ2VuZXMkZ2VuZV9pZA0KICAgIHRjZ2FfcmNkW1twcm9qZWN0XV0gPC0gdGNnYV9tYXRyaXhbW3Byb2plY3RdXVtyb3duYW1lcyh0Y2dhX21hdHJpeFtbcHJvamVjdF1dKSAlaW4lIGdlbmVzJGdlbmVfaWQsIF0NCiAgICB0Y2dhX3JjZFtbcHJvamVjdF1dIDwtIHRjZ2FfcmNkW1twcm9qZWN0XV1bLCByb3duYW1lcyhzYW1wbGVzW1twcm9qZWN0XV0pXQ0KICB9DQogIA0KICBkZHNfcmNkIDwtIGxpc3QoKQ0KICByZXNfcmNkIDwtIGxpc3QoKQ0KICANCiAgZm9yIChwcm9qZWN0IGluIHByb2plY3RzKSB7DQogICAgcHJpbnQocHJvamVjdCkNCiAgICBwcmludCgiPT09PT09PT09PT09PSIpDQogICAgZGRzIDwtIERFU2VxRGF0YVNldEZyb21NYXRyaXgoDQogICAgICBjb3VudERhdGEgPSB0Y2dhX3JjZFtbcHJvamVjdF1dLA0KICAgICAgY29sRGF0YSA9IHNhbXBsZXNbW3Byb2plY3RdXSwNCiAgICAgIGRlc2lnbiA9IH50eXBlDQogICAgKQ0KICAgIGRkcyA8LSBmaWx0ZXJfZ2VuZXMoZGRzLCBtaW5fY291bnQgPSAxMCkNCiAgICBkZHMkdHlwZSA8LSByZWxldmVsKGRkcyR0eXBlLCByZWYgPSAibm9ybWFsIikNCiAgICBkZHNfcmNkW1twcm9qZWN0XV0gPC0gREVTZXEoZGRzKQ0KICAgIHJlc19yY2RbW3Byb2plY3RdXSA8LSByZXN1bHRzKGRkc19yY2RbW3Byb2plY3RdXSkNCiAgfQ0KICANCiAgZGVzZXEuYmJsLmRhdGEgPC0gbGlzdCgpDQogIA0KICBmb3IgKHByb2plY3QgaW4gcHJvamVjdHMpIHsNCiAgICBkZXNlcS5yZXN1bHRzIDwtIHJlc19yY2RbW3Byb2plY3RdXQ0KICAgIGRlc2VxLmJibC5kYXRhW1twcm9qZWN0XV0gPC0gZGF0YS5mcmFtZSgNCiAgICAgIHJvdy5uYW1lcyA9IHJvd25hbWVzKGRlc2VxLnJlc3VsdHMpLA0KICAgICAgYmFzZU1lYW4gPSBkZXNlcS5yZXN1bHRzJGJhc2VNZWFuLA0KICAgICAgbG9nMkZvbGRDaGFuZ2UgPSBkZXNlcS5yZXN1bHRzJGxvZzJGb2xkQ2hhbmdlLA0KICAgICAgbGZjU0UgPSBkZXNlcS5yZXN1bHRzJGxmY1NFLA0KICAgICAgc3RhdCA9IGRlc2VxLnJlc3VsdHMkc3RhdCwNCiAgICAgIHB2YWx1ZSA9IGRlc2VxLnJlc3VsdHMkcHZhbHVlLA0KICAgICAgcGFkaiA9IGRlc2VxLnJlc3VsdHMkcGFkaiwNCiAgICAgIGNhbmNlcl90eXBlID0gcHJvamVjdCwNCiAgICAgIGdlbmVfc3ltYm9sID0gZ2VuZXNbcm93bmFtZXMoZGVzZXEucmVzdWx0cyksICJnZW5lIl0NCiAgICApDQogIH0NCiAgDQogIGRlc2VxLmJibC5kYXRhLmNvbWJpbmVkIDwtIGJpbmRfcm93cyhkZXNlcS5iYmwuZGF0YSkNCiAgZGVzZXEuYmJsLmRhdGEuY29tYmluZWQgPC0gZHBseXI6OmZpbHRlcihkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCwgYWJzKGxvZzJGb2xkQ2hhbmdlKSA+PSAxLjUgJiBwYWRqIDwgMC4wNSkNCiAgDQogIHJldHVybiAoZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpDQp9DQpgYGANCg0KYGBge3J9DQpwbG90X2RnZWEgPC0gZnVuY3Rpb24oZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpIHsNCiAgc2l6ZXMgPC0gYygiPDEwXi0xNSIgPSA0LCAiMTBeLTEwIiA9IDMsICIxMF4tNSIgPSAyLCAiMC4wNSIgPSAxKQ0KICANCiAgZGVzZXEuYmJsLmRhdGEuY29tYmluZWQgPC0gZGVzZXEuYmJsLmRhdGEuY29tYmluZWQgJT4lDQogIG11dGF0ZShmZHJfY2F0ZWdvcnkgPSBjdXQocGFkaiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBjKC1JbmYsIDFlLTE1LCAxZS0xMCwgMWUtNSwgMC4wNSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiPDEwXi0xNSIsICIxMF4tMTAiLCAiMTBeLTUiLCAiMC4wNSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gRkFMU0UpKQ0KDQogIHRvcF9nZW5lcyA8LSBkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCAlPiUNCiAgICBncm91cF9ieShjYW5jZXJfdHlwZSkgJT4lDQogICAgbXV0YXRlKHJhbmsgPSByYW5rKC1hYnMobG9nMkZvbGRDaGFuZ2UpKSkgJT4lDQogICAgZHBseXI6OmZpbHRlcihyYW5rIDw9IDEwKSAlPiUNCiAgICB1bmdyb3VwKCkNCiAgDQogIGdncGxvdCh0b3BfZ2VuZXMsIGFlcyh5PWNhbmNlcl90eXBlLCB4PWdlbmVfc3ltYm9sLCBzaXplPWZkcl9jYXRlZ29yeSwgZmlsbD1sb2cyRm9sZENoYW5nZSkpICsNCiAgICAgIGdlb21fcG9pbnQoYWxwaGE9MC41LCBzaGFwZT0yMSwgY29sb3I9ImJsYWNrIikgKw0KICAgICAgc2NhbGVfc2l6ZV9tYW51YWwodmFsdWVzID0gc2l6ZXMpICsNCiAgICAgIHNjYWxlX2ZpbGxfZ3JhZGllbnQyKGxvdyA9ICJibHVlIiwgbWlkID0gIndoaXRlIiwgaGlnaCA9ICJyZWQiLCBsaW1pdHMgPSBjKG1pbihkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCRsb2cyRm9sZENoYW5nZSksbWF4KGRlc2VxLmJibC5kYXRhLmNvbWJpbmVkJGxvZzJGb2xkQ2hhbmdlKSkpICsNCiAgICAgIHRoZW1lX21pbmltYWwoKSArDQogICAgICB0aGVtZSgNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkNCiAgICAgICkgKw0KICAgICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJib3R0b20iKSArDQogICAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikrDQogICAgICBsYWJzKHNpemUgPSAiQWRqdXN0ZWQgcC12YWx1ZSIsIGZpbGwgPSAibG9nMiBGQyIsIHkgPSAiQ2FuY2VyIHR5cGUiLCB4ID0gIkdlbmUiKQ0KfQ0KYGBgDQoNCiMjIyMgMS4gTmVjcm9wdG9zaXMNCg0KRmV0Y2ggdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0Lg0KDQpgYGB7cn0NCmdlbmVzIDwtIHJlYWQuY3N2KHBhc3RlMChSQ0RkYiwgIk5lY3JvcHRvc2lzLmNzdiIpKQ0KZ2VuZXMkZ2VuZV9pZCA8LSBjbGVhbmlkKGdlbmVzJGdlbmVfaWQpDQpnZW5lcyA8LSBkaXN0aW5jdChnZW5lcywgZ2VuZV9pZCwgLmtlZXBfYWxsID0gVFJVRSkNCmdlbmVzIDwtIHN1YnNldChnZW5lcywgZ2VuZV9pZCAhPSAiIikNCmdlbmVzDQpgYGANCkZpbHRlciB0aGUgZ2VuZXMgdG8gaW5jbHVkZSBvbmx5IHRob3NlIGluIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdCwgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnRpYWwgZ2VuZSBleHByZXNzaW9uIGFuYWx5c2lzLg0KDQpgYGB7cn0NCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkIDwtIGZpbHRlcl9nZW5lX3NldF9hbmRfcGVyZm9ybV9kZ2VhKGdlbmVzKQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQNCmBgYA0KDQpQbG90IHRoZSByZXN1bHRzLg0KDQpgYGB7ciwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQ9NX0NCnBsb3RfZGdlYShkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCkNCmBgYA0KDQojIyMjIDIuIEZlcnJvcHRvc2lzDQoNCkZldGNoIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdC4NCg0KYGBge3J9DQpnZW5lcyA8LSByZWFkLmNzdihwYXN0ZTAoUkNEZGIsICJGZXJyb3B0b3Npcy5jc3YiKSkNCmdlbmVzJGdlbmVfaWQgPC0gY2xlYW5pZChnZW5lcyRnZW5lX2lkKQ0KZ2VuZXMgPC0gZGlzdGluY3QoZ2VuZXMsIGdlbmVfaWQsIC5rZWVwX2FsbCA9IFRSVUUpDQpnZW5lcyA8LSBzdWJzZXQoZ2VuZXMsIGdlbmVfaWQgIT0gIiIpDQpnZW5lcw0KYGBgDQoNCkZpbHRlciB0aGUgZ2VuZXMgdG8gaW5jbHVkZSBvbmx5IHRob3NlIGluIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdCwgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnRpYWwgZ2VuZSBleHByZXNzaW9uIGFuYWx5c2lzLg0KDQpgYGB7cn0NCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkIDwtIGZpbHRlcl9nZW5lX3NldF9hbmRfcGVyZm9ybV9kZ2VhKGdlbmVzKQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQNCmBgYA0KDQpQbG90IHRoZSByZXN1bHRzLg0KDQpgYGB7ciwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQ9NX0NCnBsb3RfZGdlYShkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCkNCmBgYA0KDQojIyMjIDMuIFB5cm9wdG9zaXMNCg0KRmV0Y2ggdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0Lg0KDQpgYGB7cn0NCmdlbmVzIDwtIHJlYWQuY3N2KHBhc3RlMChSQ0RkYiwgIlB5cm9wdG9zaXMuY3N2IikpDQpnZW5lcyRnZW5lX2lkIDwtIGNsZWFuaWQoZ2VuZXMkZ2VuZV9pZCkNCmdlbmVzIDwtIGRpc3RpbmN0KGdlbmVzLCBnZW5lX2lkLCAua2VlcF9hbGwgPSBUUlVFKQ0KZ2VuZXMgPC0gc3Vic2V0KGdlbmVzLCBnZW5lX2lkICE9ICIiKQ0KZ2VuZXMNCmBgYA0KDQpGaWx0ZXIgdGhlIGdlbmVzIHRvIGluY2x1ZGUgb25seSB0aG9zZSBpbiB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4NCg0KYGBge3J9DQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCA8LSBmaWx0ZXJfZ2VuZV9zZXRfYW5kX3BlcmZvcm1fZGdlYShnZW5lcykNCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkDQpgYGANCg0KUGxvdCB0aGUgcmVzdWx0cy4NCg0KYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTV9DQpwbG90X2RnZWEoZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpDQpgYGANCg0KIyMjIyA0LiBBbGthbGlwdG9zaXMNCg0KRmV0Y2ggdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0Lg0KDQpgYGB7cn0NCmdlbmVzIDwtIHJlYWQuY3N2KHBhc3RlMChSQ0RkYiwgIkFsa2FsaXB0b3Npcy5jc3YiKSkNCmdlbmVzJGdlbmVfaWQgPC0gY2xlYW5pZChnZW5lcyRnZW5lX2lkKQ0KZ2VuZXMgPC0gZGlzdGluY3QoZ2VuZXMsIGdlbmVfaWQsIC5rZWVwX2FsbCA9IFRSVUUpDQpnZW5lcyA8LSBzdWJzZXQoZ2VuZXMsIGdlbmVfaWQgIT0gIiIpDQpnZW5lcw0KYGBgDQoNCkZpbHRlciB0aGUgZ2VuZXMgdG8gaW5jbHVkZSBvbmx5IHRob3NlIGluIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdCwgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnRpYWwgZ2VuZSBleHByZXNzaW9uIGFuYWx5c2lzLg0KDQpgYGB7cn0NCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkIDwtIGZpbHRlcl9nZW5lX3NldF9hbmRfcGVyZm9ybV9kZ2VhKGdlbmVzKQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQNCmBgYA0KDQpQbG90IHRoZSByZXN1bHRzLg0KDQpgYGB7ciwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQ9NX0NCnBsb3RfZGdlYShkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCkNCmBgYA0KDQojIyMjIDUuIEFwb3B0b3Npcw0KDQpGZXRjaCB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QuDQoNCmBgYHtyfQ0KZ2VuZXMgPC0gcmVhZC5jc3YocGFzdGUwKFJDRGRiLCAiQXBvcHRvc2lzLmNzdiIpKQ0KZ2VuZXMkZ2VuZV9pZCA8LSBjbGVhbmlkKGdlbmVzJGdlbmVfaWQpDQpnZW5lcyA8LSBkaXN0aW5jdChnZW5lcywgZ2VuZV9pZCwgLmtlZXBfYWxsID0gVFJVRSkNCmdlbmVzIDwtIHN1YnNldChnZW5lcywgZ2VuZV9pZCAhPSAiIikNCmdlbmVzDQpgYGANCg0KRmlsdGVyIHRoZSBnZW5lcyB0byBpbmNsdWRlIG9ubHkgdGhvc2UgaW4gdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0LCBhbmQgdGhlbiBwZXJmb3JtIGRpZmZlcmVudGlhbCBnZW5lIGV4cHJlc3Npb24gYW5hbHlzaXMuDQoNCmBgYHtyfQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQgPC0gZmlsdGVyX2dlbmVfc2V0X2FuZF9wZXJmb3JtX2RnZWEoZ2VuZXMpDQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZA0KYGBgDQoNClBsb3QgdGhlIHJlc3VsdHMuDQoNCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD01fQ0KcGxvdF9kZ2VhKGRlc2VxLmJibC5kYXRhLmNvbWJpbmVkKQ0KYGBgDQoNCiMjIyMgNi4gQXV0b3BoYWd5LURlcGVuZGVudCBDZWxsIERlYXRoDQoNCkZldGNoIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdC4NCg0KYGBge3J9DQpnZW5lcyA8LSByZWFkLmNzdihwYXN0ZTAoUkNEZGIsICJBdXRvcGhhZ3lfZGVwZW5kZW50X2NlbGxfZGVhdGguY3N2IikpDQpnZW5lcyRnZW5lX2lkIDwtIGNsZWFuaWQoZ2VuZXMkZ2VuZV9pZCkNCmdlbmVzIDwtIGRpc3RpbmN0KGdlbmVzLCBnZW5lX2lkLCAua2VlcF9hbGwgPSBUUlVFKQ0KZ2VuZXMgPC0gc3Vic2V0KGdlbmVzLCBnZW5lX2lkICE9ICIiKQ0KZ2VuZXMNCmBgYA0KDQpGaWx0ZXIgdGhlIGdlbmVzIHRvIGluY2x1ZGUgb25seSB0aG9zZSBpbiB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4NCg0KYGBge3J9DQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCA8LSBmaWx0ZXJfZ2VuZV9zZXRfYW5kX3BlcmZvcm1fZGdlYShnZW5lcykNCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkDQpgYGANCg0KUGxvdCB0aGUgcmVzdWx0cy4NCg0KYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTV9DQpwbG90X2RnZWEoZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpDQpgYGANCg0KIyMjIyA3LiBDdXByb3B0b3Npcw0KDQpGZXRjaCB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QuDQoNCmBgYHtyfQ0KZ2VuZXMgPC0gcmVhZC5jc3YocGFzdGUwKFJDRGRiLCAiQ3Vwcm9wdG9zaXMuY3N2IikpDQpnZW5lcyRnZW5lX2lkIDwtIGNsZWFuaWQoZ2VuZXMkZ2VuZV9pZCkNCmdlbmVzIDwtIGRpc3RpbmN0KGdlbmVzLCBnZW5lX2lkLCAua2VlcF9hbGwgPSBUUlVFKQ0KZ2VuZXMgPC0gc3Vic2V0KGdlbmVzLCBnZW5lX2lkICE9ICIiKQ0KZ2VuZXMNCmBgYA0KDQpGaWx0ZXIgdGhlIGdlbmVzIHRvIGluY2x1ZGUgb25seSB0aG9zZSBpbiB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4NCg0KYGBge3J9DQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCA8LSBmaWx0ZXJfZ2VuZV9zZXRfYW5kX3BlcmZvcm1fZGdlYShnZW5lcykNCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkDQpgYGANCg0KUGxvdCB0aGUgcmVzdWx0cy4NCg0KYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTV9DQpwbG90X2RnZWEoZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpDQpgYGANCg0KIyMjIyA4LiBEaXN1bGZpZHB0b3Npcw0KDQpGZXRjaCB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QuDQoNCmBgYHtyfQ0KZ2VuZXMgPC0gcmVhZC5jc3YocGFzdGUwKFJDRGRiLCAiRGlzdWxmaWRwdG9zaXMuY3N2IikpDQpnZW5lcyRnZW5lX2lkIDwtIGNsZWFuaWQoZ2VuZXMkZ2VuZV9pZCkNCmdlbmVzIDwtIGRpc3RpbmN0KGdlbmVzLCBnZW5lX2lkLCAua2VlcF9hbGwgPSBUUlVFKQ0KZ2VuZXMgPC0gc3Vic2V0KGdlbmVzLCBnZW5lX2lkICE9ICIiKQ0KZ2VuZXMNCmBgYA0KDQpGaWx0ZXIgdGhlIGdlbmVzIHRvIGluY2x1ZGUgb25seSB0aG9zZSBpbiB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4NCg0KYGBge3J9DQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCA8LSBmaWx0ZXJfZ2VuZV9zZXRfYW5kX3BlcmZvcm1fZGdlYShnZW5lcykNCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkDQpgYGANCg0KUGxvdCB0aGUgcmVzdWx0cy4NCg0KYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTV9DQpwbG90X2RnZWEoZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpDQpgYGANCg0KIyMjIyA5LiBFbnRvdGljIENlbGwgRGVhdGgNCg0KRmV0Y2ggdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0Lg0KDQpgYGB7cn0NCmdlbmVzIDwtIHJlYWQuY3N2KHBhc3RlMChSQ0RkYiwgIkVudG90aWNfY2VsbF9kZWF0aC5jc3YiKSkNCmdlbmVzJGdlbmVfaWQgPC0gY2xlYW5pZChnZW5lcyRnZW5lX2lkKQ0KZ2VuZXMgPC0gZGlzdGluY3QoZ2VuZXMsIGdlbmVfaWQsIC5rZWVwX2FsbCA9IFRSVUUpDQpnZW5lcyA8LSBzdWJzZXQoZ2VuZXMsIGdlbmVfaWQgIT0gIiIpDQpnZW5lcw0KYGBgDQoNCkZpbHRlciB0aGUgZ2VuZXMgdG8gaW5jbHVkZSBvbmx5IHRob3NlIGluIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdCwgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnRpYWwgZ2VuZSBleHByZXNzaW9uIGFuYWx5c2lzLg0KDQpgYGB7cn0NCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkIDwtIGZpbHRlcl9nZW5lX3NldF9hbmRfcGVyZm9ybV9kZ2VhKGdlbmVzKQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQNCmBgYA0KDQpQbG90IHRoZSByZXN1bHRzLg0KDQpgYGB7ciwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQ9NX0NCnBsb3RfZGdlYShkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCkNCmBgYA0KDQojIyMjIDEwLiBJbW11bm9nZW5pYyBDZWxsIERlYXRoDQoNCkZldGNoIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdC4NCg0KYGBge3J9DQpnZW5lcyA8LSByZWFkLmNzdihwYXN0ZTAoUkNEZGIsICJJbW11bm9nZW5pY19jZWxsX2RlYXRoLmNzdiIpKQ0KZ2VuZXMkZ2VuZV9pZCA8LSBjbGVhbmlkKGdlbmVzJGdlbmVfaWQpDQpnZW5lcyA8LSBkaXN0aW5jdChnZW5lcywgZ2VuZV9pZCwgLmtlZXBfYWxsID0gVFJVRSkNCmdlbmVzIDwtIHN1YnNldChnZW5lcywgZ2VuZV9pZCAhPSAiIikNCmdlbmVzDQpgYGANCg0KRmlsdGVyIHRoZSBnZW5lcyB0byBpbmNsdWRlIG9ubHkgdGhvc2UgaW4gdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0LCBhbmQgdGhlbiBwZXJmb3JtIGRpZmZlcmVudGlhbCBnZW5lIGV4cHJlc3Npb24gYW5hbHlzaXMuDQoNCmBgYHtyfQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQgPC0gZmlsdGVyX2dlbmVfc2V0X2FuZF9wZXJmb3JtX2RnZWEoZ2VuZXMpDQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZA0KYGBgDQoNClBsb3QgdGhlIHJlc3VsdHMuDQoNCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD01fQ0KcGxvdF9kZ2VhKGRlc2VxLmJibC5kYXRhLmNvbWJpbmVkKQ0KYGBgDQoNCiMjIyMgMTEuIEx5c29zb21lLURlcGVuZGVudCBDZWxsIERlYXRoDQoNCkZldGNoIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdC4NCg0KYGBge3J9DQpnZW5lcyA8LSByZWFkLmNzdihwYXN0ZTAoUkNEZGIsICJMeXNvc29tZV9kZXBlbmRlbnRfY2VsbF9kZWF0aC5jc3YiKSkNCmdlbmVzJGdlbmVfaWQgPC0gY2xlYW5pZChnZW5lcyRnZW5lX2lkKQ0KZ2VuZXMgPC0gZGlzdGluY3QoZ2VuZXMsIGdlbmVfaWQsIC5rZWVwX2FsbCA9IFRSVUUpDQpnZW5lcyA8LSBzdWJzZXQoZ2VuZXMsIGdlbmVfaWQgIT0gIiIpDQpnZW5lcw0KYGBgDQoNCkZpbHRlciB0aGUgZ2VuZXMgdG8gaW5jbHVkZSBvbmx5IHRob3NlIGluIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdCwgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnRpYWwgZ2VuZSBleHByZXNzaW9uIGFuYWx5c2lzLg0KDQpgYGB7cn0NCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkIDwtIGZpbHRlcl9nZW5lX3NldF9hbmRfcGVyZm9ybV9kZ2VhKGdlbmVzKQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQNCmBgYA0KDQpQbG90IHRoZSByZXN1bHRzLg0KDQpgYGB7ciwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQ9NX0NCnBsb3RfZGdlYShkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCkNCmBgYA0KDQojIyMjIDEyLiBNUFQtRHJpdmVuIE5lY3Jvc2lzDQoNCkZldGNoIHRoZSBnZW5lIHNldCBvZiBpbnRlcmVzdC4NCg0KYGBge3J9DQpnZW5lcyA8LSByZWFkLmNzdihwYXN0ZTAoUkNEZGIsICJNUFRfZHJpdmVuX25lY3Jvc2lzLmNzdiIpKQ0KZ2VuZXMkZ2VuZV9pZCA8LSBjbGVhbmlkKGdlbmVzJGdlbmVfaWQpDQpnZW5lcyA8LSBkaXN0aW5jdChnZW5lcywgZ2VuZV9pZCwgLmtlZXBfYWxsID0gVFJVRSkNCmdlbmVzIDwtIHN1YnNldChnZW5lcywgZ2VuZV9pZCAhPSAiIikNCmdlbmVzDQpgYGANCg0KRmlsdGVyIHRoZSBnZW5lcyB0byBpbmNsdWRlIG9ubHkgdGhvc2UgaW4gdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0LCBhbmQgdGhlbiBwZXJmb3JtIGRpZmZlcmVudGlhbCBnZW5lIGV4cHJlc3Npb24gYW5hbHlzaXMuDQoNCmBgYHtyfQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQgPC0gZmlsdGVyX2dlbmVfc2V0X2FuZF9wZXJmb3JtX2RnZWEoZ2VuZXMpDQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZA0KYGBgDQoNClBsb3QgdGhlIHJlc3VsdHMuDQoNCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD01fQ0KcGxvdF9kZ2VhKGRlc2VxLmJibC5kYXRhLmNvbWJpbmVkKQ0KYGBgDQoNCiMjIyMgMTMuIE5FVG90aWMgQ2VsbCBEZWF0aA0KDQpGZXRjaCB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QuDQoNCmBgYHtyfQ0KZ2VuZXMgPC0gcmVhZC5jc3YocGFzdGUwKFJDRGRiLCAiTkVUb3RpY19jZWxsX2RlYXRoLmNzdiIpKQ0KZ2VuZXMkZ2VuZV9pZCA8LSBjbGVhbmlkKGdlbmVzJGdlbmVfaWQpDQpnZW5lcyA8LSBkaXN0aW5jdChnZW5lcywgZ2VuZV9pZCwgLmtlZXBfYWxsID0gVFJVRSkNCmdlbmVzIDwtIHN1YnNldChnZW5lcywgZ2VuZV9pZCAhPSAiIikNCmdlbmVzDQpgYGANCg0KRmlsdGVyIHRoZSBnZW5lcyB0byBpbmNsdWRlIG9ubHkgdGhvc2UgaW4gdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0LCBhbmQgdGhlbiBwZXJmb3JtIGRpZmZlcmVudGlhbCBnZW5lIGV4cHJlc3Npb24gYW5hbHlzaXMuDQoNCmBgYHtyfQ0KZGVzZXEuYmJsLmRhdGEuY29tYmluZWQgPC0gZmlsdGVyX2dlbmVfc2V0X2FuZF9wZXJmb3JtX2RnZWEoZ2VuZXMpDQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZA0KYGBgDQoNClBsb3QgdGhlIHJlc3VsdHMuDQoNCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD01fQ0KcGxvdF9kZ2VhKGRlc2VxLmJibC5kYXRhLmNvbWJpbmVkKQ0KYGBgDQoNCiMjIyMgMTQuIE94ZWlwdG9zaXMNCg0KRmV0Y2ggdGhlIGdlbmUgc2V0IG9mIGludGVyZXN0Lg0KDQpgYGB7cn0NCmdlbmVzIDwtIHJlYWQuY3N2KHBhc3RlMChSQ0RkYiwgIk94ZWlwdG9zaXMuY3N2IikpDQpnZW5lcyRnZW5lX2lkIDwtIGNsZWFuaWQoZ2VuZXMkZ2VuZV9pZCkNCmdlbmVzIDwtIGRpc3RpbmN0KGdlbmVzLCBnZW5lX2lkLCAua2VlcF9hbGwgPSBUUlVFKQ0KZ2VuZXMgPC0gc3Vic2V0KGdlbmVzLCBnZW5lX2lkICE9ICIiKQ0KZ2VuZXMNCmBgYA0KDQpGaWx0ZXIgdGhlIGdlbmVzIHRvIGluY2x1ZGUgb25seSB0aG9zZSBpbiB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4NCg0KYGBge3J9DQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCA8LSBmaWx0ZXJfZ2VuZV9zZXRfYW5kX3BlcmZvcm1fZGdlYShnZW5lcykNCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkDQpgYGANCg0KUGxvdCB0aGUgcmVzdWx0cy4NCg0KYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTV9DQpwbG90X2RnZWEoZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpDQpgYGANCg0KDQojIyMjIDE1LiBQYXJ0aGFuYXRvcw0KDQpGZXRjaCB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QuDQoNCmBgYHtyfQ0KZ2VuZXMgPC0gcmVhZC5jc3YocGFzdGUwKFJDRGRiLCAiUGFydGhhbmF0b3MuY3N2IikpDQpnZW5lcyRnZW5lX2lkIDwtIGNsZWFuaWQoZ2VuZXMkZ2VuZV9pZCkNCmdlbmVzIDwtIGRpc3RpbmN0KGdlbmVzLCBnZW5lX2lkLCAua2VlcF9hbGwgPSBUUlVFKQ0KZ2VuZXMgPC0gc3Vic2V0KGdlbmVzLCBnZW5lX2lkICE9ICIiKQ0KZ2VuZXMNCmBgYA0KDQpGaWx0ZXIgdGhlIGdlbmVzIHRvIGluY2x1ZGUgb25seSB0aG9zZSBpbiB0aGUgZ2VuZSBzZXQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50aWFsIGdlbmUgZXhwcmVzc2lvbiBhbmFseXNpcy4NCg0KYGBge3J9DQpkZXNlcS5iYmwuZGF0YS5jb21iaW5lZCA8LSBmaWx0ZXJfZ2VuZV9zZXRfYW5kX3BlcmZvcm1fZGdlYShnZW5lcykNCmRlc2VxLmJibC5kYXRhLmNvbWJpbmVkDQpgYGANCg0KUGxvdCB0aGUgcmVzdWx0cy4NCg0KYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTV9DQpwbG90X2RnZWEoZGVzZXEuYmJsLmRhdGEuY29tYmluZWQpDQpgYGA=