From c89fc6063fc7bc41daaee0456db88671aa864c83 Mon Sep 17 00:00:00 2001 From: tonywu1999 Date: Thu, 16 Apr 2026 16:25:08 -0400 Subject: [PATCH 01/10] initial attempt to do protein turnover with DIANN converter --- R/clean_DIANN.R | 105 ++++++++++++++++++++++------ R/clean_Spectronaut.R | 29 +++----- R/converters_DIANNtoMSstatsFormat.R | 58 +++++++++------ R/utils_clean_features.R | 57 +++++++++++++++ 4 files changed, 190 insertions(+), 59 deletions(-) diff --git a/R/clean_DIANN.R b/R/clean_DIANN.R index 43de3447..fe47fcb3 100644 --- a/R/clean_DIANN.R +++ b/R/clean_DIANN.R @@ -4,42 +4,49 @@ #' @return data.table #' @importFrom stats na.omit #' @keywords internal -.cleanRawDIANN <- function(msstats_object, MBR = TRUE, +.cleanRawDIANN <- function(msstats_object, MBR = TRUE, quantificationColumn = "FragmentQuantCorrected", global_qvalue_cutoff = 0.01, - qvalue_cutoff = 0.01, + qvalue_cutoff = 0.01, pg_qvalue_cutoff = 0.01, - calculateAnomalyScores = FALSE, - anomalyModelFeatures = c()) { + calculateAnomalyScores = FALSE, + anomalyModelFeatures = c(), + labeledAminoAcids = NULL) { dn_input <- getInputFile(msstats_object, "input") dn_input <- data.table::as.data.table(dn_input) - + # Process quantification columns quantificationColumn <- .cleanDIANNProcessQuantificationColumns(dn_input, quantificationColumn) - + # Add missing columns dn_input <- .cleanDIANNAddMissingColumns(dn_input) - + + has_channel <- !is.null(labeledAminoAcids) && "Channel" %in% colnames(dn_input) + # Select required columns dn_input <- .cleanDIANNSelectRequiredColumns(dn_input, quantificationColumn, MBR, calculateAnomalyScores, - anomalyModelFeatures) - + anomalyModelFeatures, + has_channel = has_channel) + # Split concatenated values dn_input <- .cleanDIANNSplitConcatenatedValues(dn_input, quantificationColumn) - + # Process fragment information dn_input <- .cleanDIANNProcessFragmentInfo(dn_input, quantificationColumn) - + # Clean and filter data - dn_input <- .cleanDIANNCleanAndFilterData(dn_input, MBR, quantificationColumn, + dn_input <- .cleanDIANNCleanAndFilterData(dn_input, MBR, quantificationColumn, global_qvalue_cutoff, - qvalue_cutoff, + qvalue_cutoff, pg_qvalue_cutoff) - + # Rename columns dn_input <- .cleanDIANNRenameColumns(dn_input, quantificationColumn) - + + # Assign IsotopeLabelType for protein turnover + dn_input <- .assignDIANNIsotopeLabelType(dn_input, labeledAminoAcids, has_channel) + .logSuccess("DIANN", "clean") dn_input } @@ -84,17 +91,22 @@ #' @noRd .cleanDIANNSelectRequiredColumns <- function(dn_input, quantificationColumn, MBR, calculateAnomalyScores, - anomalyModelFeatures) { - base_cols <- c('ProteinNames', 'StrippedSequence', 'ModifiedSequence', - 'PrecursorCharge', quantificationColumn, 'QValue', + anomalyModelFeatures, + has_channel = FALSE) { + base_cols <- c('ProteinNames', 'StrippedSequence', 'ModifiedSequence', + 'PrecursorCharge', quantificationColumn, 'QValue', 'PrecursorMz', 'FragmentInfo', 'Run') - + + if (has_channel) { + base_cols <- c(base_cols, 'Channel') + } + mbr_cols <- if (MBR) { c('LibQValue', 'LibPGQValue') } else { c('GlobalQValue', 'GlobalPGQValue') } - + qual_cols <- if (calculateAnomalyScores) { anomalyModelFeatures } else { @@ -207,6 +219,59 @@ return(dn_input) } +#' Assign IsotopeLabelType for DIANN protein turnover workflows. +#' +#' When \code{labeledAminoAcids} is provided, each row is classified as heavy +#' (\code{"H"}), light (\code{"L"}), or unlabeled (\code{NA}). +#' +#' If the input contains a \code{Channel} column (present in some DIANN protein +#' turnover exports), the column is mapped directly: \code{"H"} → \code{"H"}, +#' \code{"L"} → \code{"L"}, anything else → \code{NA}. +#' +#' Otherwise the \code{PeptideSequence} (i.e. the original ModifiedSequence) is +#' inspected for SILAC suffixes of the form \code{(SILAC--H)} or +#' \code{(SILAC--L)}, where \code{} is one of the supplied +#' \code{labeledAminoAcids}. Sequences carrying neither suffix are \code{NA}. +#' The SILAC suffix is stripped from \code{PeptideSequence} after classification. +#' +#' @param dn_input \code{data.table} after column renaming. +#' @param labeledAminoAcids Character vector of single-letter amino acid codes +#' that carry the SILAC label (e.g. \code{c("K")} or \code{c("K", "R")}), or +#' \code{NULL} to skip labeling (backwards-compatible default). +#' @param has_channel Logical; \code{TRUE} when the raw input contained a +#' \code{Channel} column that was carried through to \code{dn_input}. +#' @return \code{dn_input} with \code{IsotopeLabelType} column added (and +#' \code{Channel} removed when applicable). +#' @keywords internal +#' @noRd +.assignDIANNIsotopeLabelType <- function(dn_input, labeledAminoAcids, has_channel) { + IsotopeLabelType = Channel = PeptideSequence = NULL + + if (is.null(labeledAminoAcids)) { + return(dn_input) + } + + if (has_channel) { + dn_input[, IsotopeLabelType := data.table::fcase( + Channel == "H", "H", + Channel == "L", "L", + default = NA_character_ + )] + dn_input[, Channel := NULL] + } else { + aa_pattern <- paste0(labeledAminoAcids, collapse = "|") + heavy_regex <- paste0("\\(SILAC-(?:", aa_pattern, ")-H\\)") + light_regex <- paste0("\\(SILAC-(?:", aa_pattern, ")-L\\)") + strip_regex <- paste0("\\(SILAC-(?:", aa_pattern, ")-[HL]\\)") + + dn_input <- .classifyIsotopeLabelType(dn_input, heavy_regex, light_regex) + dn_input[, PeptideSequence := gsub(strip_regex, "", PeptideSequence, perl = TRUE)] + } + + dn_input +} + + #' Rename columns to standardized names #' @param dn_input data.table input #' @param quantificationColumn quantification column name diff --git a/R/clean_Spectronaut.R b/R/clean_Spectronaut.R index 4729683f..ebf7cc98 100644 --- a/R/clean_Spectronaut.R +++ b/R/clean_Spectronaut.R @@ -183,32 +183,25 @@ #' @keywords internal #' @noRd .assignSpectronautIsotopeLabelType = function(spec_input, heavyLabels) { - IsotopeLabelType = PeptideSequence = StrippedSequence = NULL + PeptideSequence = NULL if (is.null(heavyLabels)) { return(spec_input) } - + bare_amino_acids = sub("\\[.*\\]", "", heavyLabels) - bare_amino_acids_pattern = paste0(bare_amino_acids, collapse = "|") - heavy_pattern = paste0(heavyLabels, collapse = "|") - heavy_brackets_escaped_pattern = paste( - gsub("([\\[\\]])", "\\\\\\1", heavy_pattern, perl = TRUE), + labeled_aa_regex = paste0(bare_amino_acids, collapse = "|") + heavy_regex = paste( + gsub("([\\[\\]])", "\\\\\\1", heavyLabels, perl = TRUE), collapse = "|" ) - - spec_input[, StrippedSequence := gsub("\\[.*?\\]", "", PeptideSequence)] - - spec_input[, IsotopeLabelType := data.table::fcase( - grepl(heavy_brackets_escaped_pattern, PeptideSequence, perl = TRUE), "H", - grepl(bare_amino_acids_pattern, StrippedSequence, perl = TRUE), "L", - default = NA_character_ - )] - - spec_input[, StrippedSequence := NULL] - + + spec_input = .classifyIsotopeLabelType(spec_input, heavy_regex, + labeled_aa_regex = labeled_aa_regex) + for (i in seq_along(heavyLabels)) { escaped = gsub("([\\[\\]])", "\\\\\\1", heavyLabels[i], perl = TRUE) - spec_input[, PeptideSequence := gsub(escaped, bare_amino_acids[i], PeptideSequence, perl = TRUE)] + spec_input[, PeptideSequence := gsub(escaped, bare_amino_acids[i], + PeptideSequence, perl = TRUE)] } spec_input } diff --git a/R/converters_DIANNtoMSstatsFormat.R b/R/converters_DIANNtoMSstatsFormat.R index 833990f6..fd31057e 100644 --- a/R/converters_DIANNtoMSstatsFormat.R +++ b/R/converters_DIANNtoMSstatsFormat.R @@ -19,8 +19,19 @@ #' @param removeFewMeasurements should proteins with few measurements be removed #' @param removeOxidationMpeptides should peptides with oxidation be removed #' @param removeProtein_with1Feature should proteins with a single feature be removed +#' @param labeledAminoAcids Character vector of single-letter amino acid codes +#' that carry the SILAC label in protein turnover experiments, e.g. +#' \code{c("K")} or \code{c("K", "R")}. When provided, each peptide is +#' classified as heavy (\code{IsotopeLabelType = "H"}), light +#' (\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). +#' If the input contains a \code{Channel} column (some DIANN protein turnover +#' exports), that column is mapped directly to \code{IsotopeLabelType} and the +#' \code{labeledAminoAcids} are used for documentation / validation only. +#' Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of +#' the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} +#' (default) all peptides receive \code{IsotopeLabelType = "Light"}. #' @param quantificationColumn Use 'FragmentQuantCorrected'(default) column for quantified intensities for DIANN 1.8.x. -#' Use 'FragmentQuantRaw' for quantified intensities for DIANN 1.9.x. +#' Use 'FragmentQuantRaw' for quantified intensities for DIANN 1.9.x. #' Use 'auto' for quantified intensities for DIANN 2.x where each fragment intensity is a separate column, e.g. Fr0Quantity. #' @param calculateAnomalyScores Default is FALSE. If TRUE, will run anomaly detection model and calculate anomaly scores for each feature. Used downstream to weigh measurements in differential analysis. #' @param anomalyModelFeatures character vector of quality metric column names to be used as features in the anomaly detection model. List must not be empty if calculateAnomalyScores=TRUE. @@ -63,19 +74,20 @@ DIANNtoMSstatsFormat = function( input, annotation = NULL, global_qvalue_cutoff = 0.01, - qvalue_cutoff = 0.01, + qvalue_cutoff = 0.01, pg_qvalue_cutoff = 0.01, - useUniquePeptide = TRUE, + useUniquePeptide = TRUE, removeFewMeasurements = TRUE, - removeOxidationMpeptides = TRUE, + removeOxidationMpeptides = TRUE, removeProtein_with1Feature = TRUE, - MBR = TRUE, + MBR = TRUE, + labeledAminoAcids = NULL, quantificationColumn = "FragmentQuantCorrected", calculateAnomalyScores=FALSE, anomalyModelFeatures=c(), anomalyModelFeatureTemporal=c(), removeMissingFeatures=.5, anomalyModelFeatureCount=100, - runOrder=NULL, n_trees=100, max_depth="auto", numberOfCores=1, - use_log_file = TRUE, append = FALSE, + runOrder=NULL, n_trees=100, max_depth="auto", numberOfCores=1, + use_log_file = TRUE, append = FALSE, verbose = TRUE, log_file_path = NULL, ...) { MSstatsConvert::MSstatsLogsSettings(use_log_file, append, verbose, @@ -86,42 +98,46 @@ DIANNtoMSstatsFormat = function( input = MSstatsConvert::MSstatsImport(list(input = input), "MSstats", "DIANN") - input = MSstatsConvert::MSstatsClean(input, MBR = MBR, + input = MSstatsConvert::MSstatsClean(input, MBR = MBR, quantificationColumn = quantificationColumn, global_qvalue_cutoff = global_qvalue_cutoff, - qvalue_cutoff = qvalue_cutoff, + qvalue_cutoff = qvalue_cutoff, pg_qvalue_cutoff = pg_qvalue_cutoff, - calculateAnomalyScores = calculateAnomalyScores, - anomalyModelFeatures = anomalyModelFeatures) + calculateAnomalyScores = calculateAnomalyScores, + anomalyModelFeatures = anomalyModelFeatures, + labeledAminoAcids = labeledAminoAcids) annotation = MSstatsConvert::MSstatsMakeAnnotation(input, annotation) - + decoy_filter = list(col_name = "ProteinName", pattern = c("DECOY", "Decoys"), - filter = T, + filter = T, drop_column = FALSE) oxidation_filter = list(col_name = "PeptideSequence", pattern = "\\(UniMod\\:35\\)", filter = removeOxidationMpeptides, drop_column = FALSE) - + feature_columns = c("PeptideSequence", "PrecursorCharge", "FragmentIon", "ProductCharge") - # browser() + preprocess_feature_columns = if ("IsotopeLabelType" %in% colnames(input)) + c(feature_columns, "IsotopeLabelType") else feature_columns + fill_isotope_label_type = if ("IsotopeLabelType" %in% colnames(input)) + list() else list("IsotopeLabelType" = "Light") + input = MSstatsConvert::MSstatsPreprocess( - input, - annotation, - feature_columns, + input, + annotation, + preprocess_feature_columns, remove_shared_peptides = useUniquePeptide, remove_single_feature_proteins = removeProtein_with1Feature, exact_filtering = NULL, - pattern_filtering = list(decoy = decoy_filter, + pattern_filtering = list(decoy = decoy_filter, oxidation = oxidation_filter), aggregate_isotopic = FALSE, feature_cleaning = list( remove_features_with_few_measurements = removeFewMeasurements, summarize_multiple_psms = max), - columns_to_fill = list(Fraction = 1, - IsotopeLabelType = "Light"), + columns_to_fill = c(list(Fraction = 1), fill_isotope_label_type), anomaly_metrics = anomalyModelFeatures) input[, Intensity := ifelse(Intensity == 0, NA, Intensity)] # browser() diff --git a/R/utils_clean_features.R b/R/utils_clean_features.R index 8ba1045f..cd49698a 100644 --- a/R/utils_clean_features.R +++ b/R/utils_clean_features.R @@ -309,6 +309,63 @@ } +#' Classify IsotopeLabelType from peptide sequence patterns. +#' +#' Shared core logic for protein turnover workflows in both Spectronaut and +#' DIANN converters. Each peptide is classified as heavy (\code{"H"}), light +#' (\code{"L"}), or unlabeled (\code{NA}) by matching regex patterns against +#' the \code{PeptideSequence} column. +#' +#' Two modes are supported: +#' \describe{ +#' \item{Spectronaut mode}{Pass \code{labeled_aa_regex}. The sequence is +#' first stripped of all bracket modifications; light is inferred when the +#' bare labeled amino acid is present but the heavy bracket form is absent.} +#' \item{DIANN mode}{Pass \code{light_regex}. Both heavy and light patterns +#' are matched directly against the modified sequence; absence of either +#' yields \code{NA}.} +#' } +#' +#' @param dt \code{data.table} with a \code{PeptideSequence} column. +#' @param heavy_regex Perl-compatible regex matching heavy-labeled sequences. +#' @param light_regex Perl-compatible regex explicitly matching light-labeled +#' sequences, or \code{NULL} (DIANN mode). +#' @param labeled_aa_regex Perl-compatible regex for bare labeled amino acids +#' applied to the bracket-stripped sequence to detect light peptides +#' (Spectronaut mode), or \code{NULL}. +#' @return \code{dt} with \code{IsotopeLabelType} column added or updated. +#' @keywords internal +#' @noRd +.classifyIsotopeLabelType = function(dt, heavy_regex, + light_regex = NULL, + labeled_aa_regex = NULL) { + IsotopeLabelType = PeptideSequence = StrippedSequence = NULL + + if (!is.null(labeled_aa_regex)) { + dt[, StrippedSequence := gsub("\\[.*?\\]", "", PeptideSequence)] + dt[, IsotopeLabelType := data.table::fcase( + grepl(heavy_regex, PeptideSequence, perl = TRUE), "H", + grepl(labeled_aa_regex, StrippedSequence, perl = TRUE), "L", + default = NA_character_ + )] + dt[, StrippedSequence := NULL] + } else if (!is.null(light_regex)) { + dt[, IsotopeLabelType := data.table::fcase( + grepl(heavy_regex, PeptideSequence, perl = TRUE), "H", + grepl(light_regex, PeptideSequence, perl = TRUE), "L", + default = NA_character_ + )] + } else { + dt[, IsotopeLabelType := data.table::fcase( + grepl(heavy_regex, PeptideSequence, perl = TRUE), "H", + default = NA_character_ + )] + } + + dt +} + + #' Fix invalid intensities: infinite to NA, between 0 and 1 to 0 #' @param input data.table #' @return data.table From d81e5ae73ea5b07eef8ef0efc015c4a355f2fb31 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Fri, 17 Apr 2026 09:12:54 -0400 Subject: [PATCH 02/10] add test files --- .../raw_data/DIANN/annotation_silac.csv | 11 ++++ .../raw_data/DIANN/diann_input_silac.csv | 51 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 inst/tinytest/raw_data/DIANN/annotation_silac.csv create mode 100644 inst/tinytest/raw_data/DIANN/diann_input_silac.csv diff --git a/inst/tinytest/raw_data/DIANN/annotation_silac.csv b/inst/tinytest/raw_data/DIANN/annotation_silac.csv new file mode 100644 index 00000000..dd215699 --- /dev/null +++ b/inst/tinytest/raw_data/DIANN/annotation_silac.csv @@ -0,0 +1,11 @@ +"Run","Condition","BioReplicate" +"dAL_AT_Long_B1",10,1 +"dAL_AT_Long_B10",10,2 +"dAL_AT_Long_B2",10,3 +"dAL_AT_Long_B3",5,4 +"dAL_AT_Long_B4",5,5 +"dAL_AT_Long_B5",5,6 +"dAL_AT_Long_B6",5,7 +"dAL_AT_Long_B7",5,8 +"dAL_AT_Long_B8",5,9 +"dAL_AT_Long_B9",10,10 diff --git a/inst/tinytest/raw_data/DIANN/diann_input_silac.csv b/inst/tinytest/raw_data/DIANN/diann_input_silac.csv new file mode 100644 index 00000000..f3a0b164 --- /dev/null +++ b/inst/tinytest/raw_data/DIANN/diann_input_silac.csv @@ -0,0 +1,51 @@ +"File.Name","Run","Protein.Group","Protein.Ids","Protein.Names","Genes","PG.Quantity","PG.Normalised","PG.MaxLFQ","Genes.Quantity","Genes.Normalised","Genes.MaxLFQ","Genes.MaxLFQ.Unique","Modified.Sequence","Stripped.Sequence","Precursor.Id","Precursor.Charge","Q.Value","PEP","Global.Q.Value","Protein.Q.Value","PG.Q.Value","Global.PG.Q.Value","GG.Q.Value","Translated.Q.Value","Proteotypic","Precursor.Quantity","Precursor.Normalised","Precursor.Translated","Translated.Quality","Ms1.Translated","Quantity.Quality","RT","RT.Start","RT.Stop","iRT","Predicted.RT","Predicted.iRT","First.Protein.Description","Lib.Q.Value","Lib.PG.Q.Value","Ms1.Profile.Corr","Ms1.Area","Evidence","Spectrum.Similarity","Averagine","Mass.Evidence","CScore","Decoy.Evidence","Decoy.CScore","Fragment.Quant.Raw","Fragment.Quant.Corrected","Fragment.Correlations","MS2.Scan","Channel.Evidence.Ms1","Channel.Evidence.Ms2","Channel.Q.Value","Channel.L","Channel.H","Channel.decoy","Precursor.Mz","Fragment.Info","Lib.Index","IM","iIM","Predicted.IM","Predicted.iIM" +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q6NZL0","Q6NZL0","SOGA3_MOUSE","Soga3",32284358,17883826,6782988.5,32284358,17883826,6782988.5,6183574.5,"AAAAAAAAQMHTK(SILAC-K-L)","AAAAAAAAQMHTK","AAAAAAAAQMHTK(SILAC-K-L)2",2,0.004283288959,0.1120364144,0.01398449857,0.0001518372301,0.000149097963,0.0001358142035,0.0001497678604,0.02955167368,1,153958.9062,86013.17188,131687.875,NA,0,0.05494280159,15.01007652,14.77463055,15.2468071,-28.34333038,15.172966,-28.7857151,NA,0.0004954243195,0.000135446302,0,177210.7188,1.581254125,0.108699441,0.05289458483,0,0.5946734548,1.106842875,0.09633274376,"120170.8125;39879.93359;13874.50293;33449.03516;0;33788.10156;","120170.8125;39879.93359;13874.50293;33449.03516;0;33788.10156;","0;0.816496551;0.816496551;0.816496551;0;0.2503524423;",8859,0,1.499111891,0.03406033292,177210.7188,437919.875,0,606.8113403,"y5^1/644.3184814;y8^1/857.4298096;y10^1/999.5040283;y9^1/928.4669189;y6^1/715.3555908;b4-NH3^1/268.1291809;",131,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q6NZL0","Q6NZL0","SOGA3_MOUSE","Soga3",44433220,14355674,6647798,44433220,14355674,6647798,6081964.5,"AAAAAAAAQMHTK(SILAC-K-L)","AAAAAAAAQMHTK","AAAAAAAAQMHTK(SILAC-K-L)2",2,0.006261997391,0.1597869694,0.01398449857,0.000157405957,0.0001544163097,0.0001358142035,0.0001551831228,0.03603852913,1,25863.96094,8619.426758,20871.70703,NA,287889.1875,0.3788406849,14.51498699,14.27960205,14.75062084,-28.34333038,14.72296333,-28.85308647,NA,0.0004954243195,0.000135446302,0.06202368066,2402388.75,1.117191315,0.006572403014,0.2326820493,0,0.5659567118,1.630342007,0.06476257741,"0;28532.5957;6259.287109;38859.66797;0;25863.96094;","0;28532.5957;6259.287109;38859.66797;0;25863.96094;","0;0.8164966106;0.8164966106;0.8164966106;0;0.3788406551;",8571,0.2855505645,1.063216686,0.01028443594,2402388.75,2002955.5,0,606.8113403,"y5^1/644.3184814;y8^1/857.4298096;y10^1/999.5040283;y9^1/928.4669189;y6^1/715.3555908;b4-NH3^1/268.1291809;",131,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B8.raw","dAL_AT_Long_B8","Q6NZL0","Q6NZL0","SOGA3_MOUSE","Soga3",10869921,20067288,6876724.5,10869921,20067288,6876724.5,6176264.5,"AAAAAAAAQMHTK(SILAC-K-L)","AAAAAAAAQMHTK","AAAAAAAAQMHTK(SILAC-K-L)2",2,2.799317008e-05,0.0001256719988,0.01398449857,0.0001751006785,0.000171703301,0.0001358142035,0.0001723840687,0,1,39374.10938,77272.54688,33421.18359,0.3308399916,139349.5312,0.9095945954,16.17643166,15.93890762,16.41442299,-28.34333038,16.20256042,-28.37516022,NA,0.0004954243195,0.000135446302,0.05590924621,164170.2344,2.731082439,0.4511356652,0.05289459229,0.3412810266,0.9998725057,0.403288424,0.126041159,"27676.55078;5134.108887;4891.382324;3844.573975;3443.866699;8253.693359;","27676.55078;5134.108887;4891.382324;3844.573975;3443.866699;8253.693359;","0.9022546411;0.816496551;0.816496551;0.816496551;0.8164966106;0.9730522037;",9531,0,2.108338833,0.0003001303994,164170.2344,0,0,606.8113403,"y5^1/644.3184814;y8^1/857.4298096;y10^1/999.5040283;y9^1/928.4669189;y6^1/715.3555908;b4-NH3^1/268.1291809;",131,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q6NZL0","Q6NZL0","SOGA3_MOUSE","Soga3",32284358,17883826,6782988.5,32284358,17883826,6782988.5,6183574.5,"AAAAAAAAQMHTK(SILAC-K-H)","AAAAAAAAQMHTK","AAAAAAAAQMHTK(SILAC-K-H)2",2,0.004283288959,0.1120364144,0.01398449857,0.0001518372301,0.000149097963,0.0001358142035,0.0001497678604,0,1,53441.0625,29856.25,45710.51172,NA,374572.2812,0.5068411231,15.01122189,14.77577591,15.24795341,-28.34333038,15.172966,-28.78292465,NA,0.0004954243195,0.000135446302,0.807780683,437919.875,2.389034748,0.2632122636,0.2098549008,0,0.8936085701,1.613744617,0.06964779645,"0;18378.38477;17024.44141;15426.27441;38014.78906;","0;18378.38477;17024.44141;15426.27441;38014.78906;","0;0.816496551;0.816496551;0.8164966106;0.3811839521;",8860,0,1.581254125,0.01099894103,0,437919.875,0,609.8214111,"y5^1/650.338623;y8^1/863.4499512;y9^1/934.4870605;y6^1/721.3757324;b4-NH3^1/268.1291809;",132,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q6NZL0","Q6NZL0","SOGA3_MOUSE","Soga3",44433220,14355674,6647798,44433220,14355674,6647798,6081964.5,"AAAAAAAAQMHTK(SILAC-K-H)","AAAAAAAAQMHTK","AAAAAAAAQMHTK(SILAC-K-H)2",2,0.006261997391,0.1597869694,0.01398449857,0.000157405957,0.0001544163097,0.0001358142035,0.0001551831228,0,1,79762.60938,26581.69531,64366.85547,NA,240023.2812,0.6600624323,14.51613331,14.28074741,14.7517662,-28.34333038,14.72296333,-28.85000229,NA,0.0004954243195,0.000135446302,0.807780683,297433.875,1.861950159,0.1426064521,0.2810209394,0,0.8532176018,1.194468856,0.07334788144,"12702.59766;0;0;8279.326172;58780.6875;","12702.59766;0;0;8279.326172;58780.6875;","0.816496551;0;0;0.8164966106;0.6042228341;",8572,0,1.054169416,0.01861365139,356748.7188,297433.875,0,609.8214111,"y5^1/650.338623;y8^1/863.4499512;y9^1/934.4870605;y6^1/721.3757324;b4-NH3^1/268.1291809;",132,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B8.raw","dAL_AT_Long_B8","Q6NZL0","Q6NZL0","SOGA3_MOUSE","Soga3",10869921,20067288,6876724.5,10869921,20067288,6876724.5,6176264.5,"AAAAAAAAQMHTK(SILAC-K-H)","AAAAAAAAQMHTK","AAAAAAAAQMHTK(SILAC-K-H)2",2,2.799317008e-05,0.0001256719988,0.01398449857,0.0001751006785,0.000171703301,0.0001358142035,0.0001723840687,0.8317982554,1,170265.7188,334150.1562,10442.45312,0.3308399916,0,0.924280107,16.25707817,16.01942253,16.41556931,-28.34333038,16.20256042,-28.20146179,NA,0.0004954243195,0.000135446302,0,0,1.06999743,0.05967807397,0.03326049075,0,0.1103457958,0.9151456952,0.0927252844,"9262.703125;0;0;0;161003.0156;","9262.703125;0;0;0;161003.0156;","0.6916281581;0;0;0;0.9376648664;",9580,0,1.066607237,0.231190756,164170.2344,0,0,609.8214111,"y5^1/650.338623;y8^1/863.4499512;y9^1/934.4870605;y6^1/721.3757324;b4-NH3^1/268.1291809;",132,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",212047.2969,123802.3047,107190.5234,212047.2969,123802.3047,107190.5234,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.001163143083,0.02589621767,0.0004225292651,0.005310674664,0.001123753376,0.0001358142035,0.001129464945,0,0,95040.78906,63363.30469,97010.47656,0.7011249661,387503.4688,0.8006234169,8.636230469,8.398341179,8.873604774,-53.90829086,8.480743408,-53.31990433,NA,5.310815322e-05,0.000135446302,0.4892804325,379635.6562,1.051217079,0.6326891184,0.03206285834,0,0.9732177854,1.714347482,0.4108651578,"32290.98242;41176.15234;13489.95117;30575.37109;21573.6582;3996.641602;0;0;2236.78125;","32290.98242;41176.15234;13489.95117;30575.37109;21573.6582;3996.641602;0;0;2236.78125;","0.9415035844;0.6433763504;0.8576279283;0.6598693728;0.8898835182;0.3823775053;0;0;0.5288007259;",4975,0.5827328563,0.4074173868,0.0009870278882,379635.6562,0,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",391965.25,120364.7266,82191.08594,391965.25,120364.7266,82191.08594,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.001030019135,0.02432355657,0.0004225292651,0.000157405957,0.000558503205,0.0001358142035,0.0005617977586,0,0,94091.25,40645.89062,98422.92188,1.177917361,310414.4688,0.8590099812,8.396367073,8.158231735,8.633708,-53.90829086,8.385850906,-53.67735672,NA,5.310815322e-05,0.000135446302,0.679577291,296752.875,2.04504776,0.2960965335,0.11702279,0.1138138771,0.9744804502,1.183600187,0.1109313741,"25673.18164;39577.30078;16265.4668;28438.99805;28840.76953;4717.997559;0;0;3313.040039;","25673.18164;39577.30078;16265.4668;28438.99805;28840.76953;4717.997559;0;0;3313.040039;","0.9203853607;0.8231810927;0.9690821767;0.4306588173;0.8535421491;0.5196204185;0;0;0.4736764729;",4831,0.7007297873,0.8716665506,0.000258417218,296752.875,0,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B3.raw","dAL_AT_Long_B3","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",92087.53906,47336.31641,49007.85938,92087.53906,47336.31641,49007.85938,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.001373693231,0.03386193514,0.0004225292651,0.0005711022532,0.002005615737,0.0001358142035,0.002015587175,0,0,92087.53906,47336.31641,93916.33594,0.9429367781,485028.0312,0.8652051091,8.556984901,8.318594933,8.79493618,-53.90829086,8.659291267,-54.25846863,NA,5.310815322e-05,0.000135446302,0.4493939281,475583.2812,1.83394146,0.6262834668,0.03201780096,0.06501235813,0.9651550055,2.496255636,0.2419258356,"30194.05273;38911.44922;16975.40039;11128.8584;22982.04102;0;0;0;5998.006348;","30194.05273;38911.44922;16975.40039;11128.8584;22982.04102;0;0;0;5998.006348;","0.8139603138;0.9133472443;0.9130863547;0.7160564661;0.8510202765;0;0;0;0.7802280784;",4927,0.5541067123,1.375571609,8.483280544e-05,475583.2812,0,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B4.raw","dAL_AT_Long_B4","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",101416.4609,49079.79297,52409.46484,101416.4609,49079.79297,52409.46484,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.005142304115,0.1329254955,0.0004225292651,0.0001542971731,0.04523892328,0.0001358142035,0.04525309056,0,0,101416.4609,49079.79297,115012.2422,0.5615753531,441205.9375,0.8617601395,8.317462921,8.079061508,8.555631638,-53.90829086,8.372802734,-53.97488785,NA,5.310815322e-05,0.000135446302,0,427217.7188,1.408298016,0.2884612978,0.03206285834,0,0.8735553026,1.72437501,0.0934330374,"39462.86719;38823.40625;18212.29688;13086.78125;23130.18555;0;0;0;7085.167969;","39462.86719;38823.40625;18212.29688;13086.78125;23130.18555;0;0;0;7085.167969;","0.8218385577;0.9007672071;0.885633409;0.6336928606;0.8643989563;0;0;0;0.6417046785;",4783,0,0.9795170426,0.0001675706444,427217.7188,0,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B5.raw","dAL_AT_Long_B5","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",142786.4531,193913.0625,220644.2188,142786.4531,193913.0625,220644.2188,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.008183306083,0.165974766,0.0004225292651,0.1369090527,0.03727342188,0.0001358142035,0.03709408268,0,0,142786.4531,193913.0625,141355.4531,NA,375019.8125,0.5432867408,8.87962532,8.640967369,9.117512703,-53.90829086,8.685803413,-53.1949501,NA,5.310815322e-05,0.000135446302,0.6113488078,378816.3125,2.330576897,0.445051223,0.03206285834,0,0.8521270752,2.209398746,0.5003484488,"130027.7891;9577.949219;9504.417969;2551.996826;3180.72583;1855.911743;0;0;0;","130027.7891;9577.949219;9504.417969;2551.996826;3180.72583;1855.911743;0;0;0;","0.5100164413;0.9473818541;0.9484211206;0;0.6865409613;0.2074242979;0;0;0;",5119,0.6370290518,1.472753882,6.412987568e-05,378816.3125,0,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B6.raw","dAL_AT_Long_B6","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",167050.7344,90896.83594,103427.0781,167050.7344,90896.83594,103427.0781,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.0001887504768,0.003836598946,0.0004225292651,0.1003175378,0.002667415421,0.0001358142035,0.002538786968,0,0,167050.7344,90896.83594,149342.6562,NA,701715.875,0.5918812156,8.397314072,8.158808708,8.634609222,-53.90829086,8.380908966,-53.87474442,NA,5.310815322e-05,0.000135446302,0.4531009793,784920.75,1.140955448,0.5817877054,0.03206285834,1.200165749,0.9959288836,2.384166718,0.2955044508,"135817.9531;25775.52734;7379.25;17066.09375;5457.248047;0;0;3650.360596;0;","135817.9531;25775.52734;7379.25;17066.09375;5457.248047;0;0;3650.360596;0;","0.5179138184;0.9848871827;0.6856572628;0.7408962846;0.5765211582;0;0;0.540843606;0;",4831,0.5582283735,0.5622341633,6.813524669e-05,784920.75,0,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B7.raw","dAL_AT_Long_B7","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",158491.125,79353.96094,90444.5,158491.125,79353.96094,90444.5,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.00214016065,0.04035980627,0.0004225292651,0.0003146633098,0.02359346673,0.0001358142035,0.02361246385,0,0,158491.125,79353.96094,242199.0156,1.250258446,610648.5,0.941490829,8.556357384,8.317925453,8.794066429,-53.90829086,8.657549858,-54.29063416,NA,5.310815322e-05,0.000135446302,0,569261.3125,1.540281415,0.6261863112,0.03201780096,1.807235003,0.9587110281,1.323613286,0.233368665,"72576.00781;55463.41797;32618.11328;19370.47266;30451.69922;3621.257568;0;0;4231.007812;","72576.00781;55463.41797;32618.11328;19370.47266;30451.69922;3621.257568;0;0;4231.007812;","0.902466774;0.9864812493;0.90406394;0.8677548766;0.9525535107;0.472101748;0;0;0.35989362;",4927,0.1727397144,1.199697614,2.557199332e-05,569261.3125,0,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B9.raw","dAL_AT_Long_B9","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",91732.70312,65103.52344,104351.6172,91732.70312,65103.52344,104351.6172,NA,"AAAAAAAK(SILAC-K-L)","AAAAAAAK","AAAAAAAK(SILAC-K-L)1",1,0.003187937895,0.05026358739,0.0004225292651,0.002131893067,0.03398645297,0.0001358142035,0.03405083343,0.003187937895,0,91732.70312,65103.52344,75611.13281,1.639649749,426501.0312,0.9097887874,8.557502747,8.319443703,8.795410156,-53.90829086,8.458975792,-53.46603394,NA,5.310815322e-05,0.000135446302,0.3114357889,517438.25,0.6510641575,0.4491073787,0.03206285834,0,1,0.6987406611,0.1292690635,"40731.82422;37872.875;0;16958.73047;13128.00195;0;0;0;0;","40731.82422;37872.875;0;16958.73047;13128.00195;0;0;0;0;","0.9591439366;0.933919847;0;0.8150786161;0.6870405078;0;0;0;0;",4927,0.4322820604,0.1630497426,0.001741838525,517438.25,103169.0781,0,644.3726196,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/289.1870422;b4^1/285.1557312;y4^1/360.2241516;y6^1/502.2983704;y5^1/431.261261;b3^1/214.1186218;",179,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",212047.2969,123802.3047,107190.5234,212047.2969,123802.3047,107190.5234,NA,"AAAAAAAK(SILAC-K-H)","AAAAAAAK","AAAAAAAK(SILAC-K-H)1",1,0.001163143083,0.02589621767,0.0004225292651,0.005310674664,0.001123753376,0.0001358142035,0.001129464945,0.3144025207,0,45226.83984,30880.32227,69964.46094,0.7011249661,0,0.7392836809,8.565105438,8.406573296,8.802835464,-53.90829086,8.480743408,-53.59151459,NA,5.310815322e-05,0.000135446302,0,0,0.911413312,0.1357955635,0.03202843294,0,0.3094550371,0.05194849148,0.2601362169,"8530.337891;15617.91211;16959.69727;3087.577637;21078.58984;0;0;0;39805.69922;","8530.337891;15617.91211;16959.69727;3087.577637;21078.58984;0;0;0;39805.69922;","0.5029858351;0.955096662;0.8304009438;0.4843699038;0.6750077009;0;0;0;0.9237129688;",4928,0,0.9904902577,0.04621374607,379635.6562,0,0,650.3927612,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/295.2071838;b4^1/285.1557312;y4^1/366.2442932;y6^1/508.318512;y5^1/437.2814026;b3^1/214.1186218;",180,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",391965.25,120364.7266,82191.08594,391965.25,120364.7266,82191.08594,NA,"AAAAAAAK(SILAC-K-H)","AAAAAAAK","AAAAAAAK(SILAC-K-H)1",1,0.001030019135,0.02432355657,0.0004225292651,0.000157405957,0.000558503205,0.0001358142035,0.0005617977586,0.05648044497,0,60804.28516,26266.46484,54004.92969,1.177917361,0,0.6003360152,8.404585838,8.166466713,8.64193821,-53.90829086,8.385850906,-53.64825058,NA,5.310815322e-05,0.000135446302,0,0,0.9517351985,0.2459764034,0.03202843294,0,0.5022765398,0,-1e+07,"7195.609375;26991.84766;15547.19531;0;26616.82812;0;0;0;27574.60352;","7195.609375;26991.84766;15547.19531;0;26616.82812;0;0;0;27574.60352;","0.9397946;0.6864959002;0.5160371065;0;0.4211928248;0;0;0;0.8908403516;",4832,0,0.5360730886,0.09629689902,296752.875,0,0,650.3927612,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/295.2071838;b4^1/285.1557312;y4^1/366.2442932;y6^1/508.318512;y5^1/437.2814026;b3^1/214.1186218;",180,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B3.raw","dAL_AT_Long_B3","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",92087.53906,47336.31641,49007.85938,92087.53906,47336.31641,49007.85938,NA,"AAAAAAAK(SILAC-K-H)","AAAAAAAK","AAAAAAAK(SILAC-K-H)1",1,0.001373693231,0.03386193514,0.0004225292651,0.0005711022532,0.002005615737,0.0001358142035,0.002015587175,0.08874544501,0,23938.57812,12305.29199,0,0.9429367781,0,0.6931300759,8.565229416,8.326833725,8.803154945,-53.90829086,8.659291267,-54.22748566,NA,5.310815322e-05,0.000135446302,0,0,0.7296460867,1.919131866e-14,0.03202843294,0.9743981361,0.4509452283,0,-1e+07,"8958.958984;2744.909668;10992.33691;3254.713623;12234.70898;0;0;0;17793.44531;","8958.958984;2744.909668;10992.33691;3254.713623;12234.70898;0;0;0;17793.44531;","0.7059621215;0;0.665596962;0.5;0.8392404318;0;0;0;0.8146731853;",4928,0,1.020977974,0.03263974562,475583.2812,0,0,650.3927612,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/295.2071838;b4^1/285.1557312;y4^1/366.2442932;y6^1/508.318512;y5^1/437.2814026;b3^1/214.1186218;",180,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B4.raw","dAL_AT_Long_B4","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",101416.4609,49079.79297,52409.46484,101416.4609,49079.79297,52409.46484,NA,"AAAAAAAK(SILAC-K-H)","AAAAAAAK","AAAAAAAK(SILAC-K-H)1",1,0.005142304115,0.1329254955,0.0004225292651,0.0001542971731,0.04523892328,0.0001358142035,0.04525309056,0.005142304115,0,28304.51562,13697.77344,29231.2793,0.5615753531,0,0.7504021525,8.325695992,8.087310791,8.563855171,-53.90829086,8.372802734,-53.94473267,NA,5.310815322e-05,0.000135446302,0,0,0.1865401417,0.2351273149,0.03202843294,0,0.8999999762,0,-1e+07,"0;2772.72998;10425.78223;0;25531.78516;0;0;0;36671.29688;","0;2772.72998;10425.78223;0;25531.78516;0;0;0;36671.29688;","0;0.4241246581;0.5981249213;0;0.7858356237;0;0;0;0.8356204033;",4784,0,0.2777247727,0.1012149826,427217.7188,0,0,650.3927612,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/295.2071838;b4^1/285.1557312;y4^1/366.2442932;y6^1/508.318512;y5^1/437.2814026;b3^1/214.1186218;",180,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B7.raw","dAL_AT_Long_B7","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",158491.125,79353.96094,90444.5,158491.125,79353.96094,90444.5,NA,"AAAAAAAK(SILAC-K-H)","AAAAAAAK","AAAAAAAK(SILAC-K-H)1",1,0.00214016065,0.04035980627,0.0004225292651,0.0003146633098,0.02359346673,0.0001358142035,0.02361246385,0.00214016065,0,51315.46094,25692.82812,55046.26562,1.250258446,0,0.7770940661,8.564584732,8.32614994,8.802308083,-53.90829086,8.657549858,-54.25889587,NA,5.310815322e-05,0.000135446302,0,0,0.7322891355,0.3676898777,0.03202843294,0.8571429253,1,0,-1e+07,"4425.131836;12068.45703;23691.68359;2954.154053;34821.87109;0;0;0;29618.29297;","4425.131836;12068.45703;23691.68359;2954.154053;34821.87109;0;0;0;29618.29297;","0.5;0.8650770783;0.9955550432;0.5;0.7818140984;0;0;0;0.9304268956;",4928,0,1.010962963,0.07671135664,569261.3125,0,0,650.3927612,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/295.2071838;b4^1/285.1557312;y4^1/366.2442932;y6^1/508.318512;y5^1/437.2814026;b3^1/214.1186218;",180,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B9.raw","dAL_AT_Long_B9","Q14AX6","Q14AX6;Q8CCJ9","CDK12_MOUSE","Cdk12",91732.70312,65103.52344,104351.6172,91732.70312,65103.52344,104351.6172,NA,"AAAAAAAK(SILAC-K-H)","AAAAAAAK","AAAAAAAK(SILAC-K-H)1",1,0.003187937895,0.05026358739,0.0004225292651,0.002131893067,0.03398645297,0.0001358142035,0.03405083343,0,0,64568.05078,45824.52344,88091.94531,1.639649749,85037.625,0.911393702,8.565731049,8.327672005,8.803639412,-53.90829086,8.458975792,-53.43494415,NA,5.310815322e-05,0.000135446302,0.3642122149,103169.0781,1.115540624,0.7667208314,0.03202843294,0,0.9482577443,0.06357295811,0.1836545467,"16323.82812;20953.61328;8738.330078;3024.477295;27290.60938;0;0;0;18001.0957;","16323.82812;20953.61328;8738.330078;3024.477295;27290.60938;0;0;0;18001.0957;","0.8917352557;0.8463507295;0.7258470654;0.5977492332;0.9730920196;0;0;0;0.8970465064;",4928,0.4364166558,1.625778675,0.004728606436,517438.25,103169.0781,0,650.3927612,"b6^1/427.22995;b5^1/356.1928406;b7^1/498.2670593;y3^1/295.2071838;b4^1/285.1557312;y4^1/366.2442932;y6^1/508.318512;y5^1/437.2814026;b3^1/214.1186218;",180,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B5.raw","dAL_AT_Long_B5","Q9DC71","Q9DC71","RT15_MOUSE","Mrps15",6321146,7098571.5,2385307,6321146,7098571.5,2385307,2385307,"AAAAAAK(SILAC-K-L)","AAAAAAK","AAAAAAK(SILAC-K-L)1",1,0.003081103321,0.06082134694,0.0009112497792,0.0001745200716,0.000170125888,0.0001358142035,0.0001706193434,0,1,175401.9844,238207.0312,49136.80469,0.6429715753,4478772.5,0.7714571357,8.869391441,8.630693436,9.107290268,-53.35337067,8.839101791,-53.23244858,NA,0.0002652736439,0.000135446302,0,4524113,0.9828038812,0.4923752546,0.1288607121,1.009735584,0.9402107,0.9835837483,0.04481246695,"28437.66016;104672.3984;42291.91797;9888.657227;11286.10547;0;","28437.66016;104672.3984;42291.91797;9888.657227;11286.10547;0;","0.8631055951;0.8191307783;0.5918392539;0.8661312461;0.202050522;0;",5111,0.6581689715,0.7128421664,0.0003198620398,4524113,0,0,573.3355103,"b5^1/356.1928406;b6^1/427.22995;b4^1/285.1557312;y3^1/289.1870422;y4^1/360.2241516;y5^1/431.261261;",243,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B5.raw","dAL_AT_Long_B5","Q9DC71","Q9DC71","RT15_MOUSE","Mrps15",6321146,7098571.5,2385307,6321146,7098571.5,2385307,2385307,"AAAAAAK(SILAC-K-H)","AAAAAAK","AAAAAAK(SILAC-K-H)1",1,0.003081103321,0.06082134694,0.0009112497792,0.0001745200716,0.000170125888,0.0001358142035,0.0001706193434,0.003081103321,1,34624.97266,47022.91016,34277.96094,0.6429715753,182018.0469,0.7788773775,8.87054348,8.631844521,9.108441353,-53.35337067,8.839101791,-53.22822952,NA,0.0002652736439,0.000135446302,0,183860.7031,0.4952013493,0.2538063526,0.0319047831,0,1,0.9582434297,0.2265898734,"22693.16797;0;11931.80469;0;0;0;","22693.16797;0;11931.80469;0;0;0;","0.9721744657;0;0.4112443924;0;0;0;",5112,0.113469936,0.6839603782,0.1297041476,4524113,183860.7031,0,579.3556519,"b5^1/356.1928406;b6^1/427.22995;b4^1/285.1557312;y3^1/295.2071838;y4^1/366.2442932;y5^1/437.2814026;",244,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",1607331.125,794415.125,742314,1607331.125,794415.125,742314,742314,"AAAAADLANR","AAAAADLANR","AAAAADLANR1",1,1.674060513e-05,5.373661406e-05,0.003096906934,0.0001518372301,0.000149097963,0.0001358142035,0.0001497678604,0.004044648726,1,90585.64844,42963.27734,65777.63281,NA,0,0.6801478267,18.03158379,17.79408455,18.26710701,-21.71437645,17.99830055,-21.63735199,NA,0.0005746455863,0.000135446302,0,0,0.4868803024,0.09312620014,0.03259755298,0.237967208,0.8999999762,1.264104009,0.177635178,"30702.21094;0;7146.277344;53320.91016;6562.526855;13295.7207;4456.728516;5924.005371;0;19796.6582;0;5798.952637;","30702.21094;0;7146.277344;53320.91016;6562.526855;13295.7207;4456.728516;5924.005371;0;19796.6582;0;5798.952637;","0.7234594226;0;0.1462784559;0.6686252356;0.5711399913;0.4554708898;0.1462784559;0.5711399913;0;0.4257377982;0;0;",10702,0,0.3459825218,1,0,0,0,943.4955444,"y4^1/473.2830505;y5^1/588.3099976;y3^1/360.1990051;y6^1/659.3471069;b7^1/584.303833;b6^1/471.2197876;b8^1/655.3409424;b3^1/214.1186218;b4^1/285.1557312;b5^1/356.1928406;y7^1/730.3842163;b9^1/769.3839111;",299,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B3.raw","dAL_AT_Long_B3","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",2007524,842269.875,650127.6875,2007524,842269.875,650127.6875,650127.6875,"AAAAADLANR","AAAAADLANR","AAAAADLANR1",1,0.00916364044,0.2428251058,0.003096906934,0.0001531862799,0.0001501501538,0.0001358142035,0.0001507613488,0.05009800568,1,119601.9375,57476.30078,114034.2891,NA,0,0.9410312772,18.33156967,18.09383774,18.56774902,-21.71437645,18.28462791,-21.58758354,NA,0.0005746455863,0.000135446302,0,0,0.3309267759,3.133080639e-15,0.03259755298,0.6467909813,0.5211917162,0.8548426628,0.1661199033,"11621.94141;0;32013.4375;107979.9922;0;9627.623047;0;6014.385742;21534.0957;10554.22656;0;26733.5625;","11621.94141;0;32013.4375;107979.9922;0;9627.623047;0;6014.385742;21534.0957;10554.22656;0;26733.5625;","0.5;0;0.8510015607;0.9884997606;0;0;0;0.5;0;0.3745263517;0;0;",10894,0,0.2274779528,1,0,0,0,943.4955444,"y4^1/473.2830505;y5^1/588.3099976;y3^1/360.1990051;y6^1/659.3471069;b7^1/584.303833;b6^1/471.2197876;b8^1/655.3409424;b3^1/214.1186218;b4^1/285.1557312;b5^1/356.1928406;y7^1/730.3842163;b9^1/769.3839111;",299,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B5.raw","dAL_AT_Long_B5","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",727757.5,802856.375,918186.9375,727757.5,802856.375,918186.9375,918186.9375,"AAAAADLANR","AAAAADLANR","AAAAADLANR1",1,4.275639185e-06,4.275639185e-06,0.003096906934,0.0001745200716,0.000170125888,0.0001358142035,0.0001706193434,0.04466248676,1,177636.8906,234537.5938,170969.2344,NA,93918.32812,0.3047888875,19.10640526,18.86802292,19.34342003,-21.71437645,18.93070984,-21.33060646,NA,0.0005746455863,0.000135446302,0.1406651735,97581.0625,0.9510612488,0.1023818702,0.03259755298,0.6266293526,0.5660154819,1.31014967,0.381470114,"3006.929932;6687.639648;20966.125;174629.9531;0;0;7069.994629;5922.836426;3234.19165;11775.33789;0;0;","3006.929932;6687.639648;20966.125;174629.9531;0;0;7069.994629;5922.836426;3234.19165;11775.33789;0;0;","0.8164966106;0.8164966106;0.3363437951;0.2959778607;0;0;0.4082482755;0.2754744589;0.8164966106;0.7096552253;0;0;",11326,0.2725008726,1.284077406,1,0,0,0,943.4955444,"y4^1/473.2830505;y5^1/588.3099976;y3^1/360.1990051;y6^1/659.3471069;b7^1/584.303833;b6^1/471.2197876;b8^1/655.3409424;b3^1/214.1186218;b4^1/285.1557312;b5^1/356.1928406;y7^1/730.3842163;b9^1/769.3839111;",299,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B9.raw","dAL_AT_Long_B9","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",729017.8125,480510.0938,693035.375,729017.8125,480510.0938,693035.375,693035.375,"AAAAADLANR","AAAAADLANR","AAAAADLANR1",1,1.701693145e-05,2.866148134e-05,0.003096906934,0.0001648261095,0.0001617337839,0.0001358142035,0.0001623640273,0.1776558757,1,96733.55469,55119.03906,64015.17188,NA,0,0.5844445825,18.20200157,17.96445465,18.43882561,-21.71437645,18.09308052,-21.47635078,NA,0.0005746455863,0.000135446302,0,0,0.3901058733,0.2049535364,0.03259755298,0.9373598695,0.4017922282,1.223693609,0.3482481241,"0;0;19205.77734;89222.9375;7510.61377;25414.28125;0;6904.740234;0;47565.36328;18617.37891;15525.04688;","0;0;19205.77734;89222.9375;7510.61377;25414.28125;0;6904.740234;0;47565.36328;18617.37891;15525.04688;","0;0;0.6546238065;0.621979177;0.1385497898;0.9570445418;0;0.277834177;0;0.8407991529;0.495177716;0.4951777458;",10798,0,0.3198794723,1,0,0,0,943.4955444,"y4^1/473.2830505;y5^1/588.3099976;y3^1/360.1990051;y6^1/659.3471069;b7^1/584.303833;b6^1/471.2197876;b8^1/655.3409424;b3^1/214.1186218;b4^1/285.1557312;b5^1/356.1928406;y7^1/730.3842163;b9^1/769.3839111;",299,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",1607331.125,794415.125,742314,1607331.125,794415.125,742314,742314,"AAAAADLANR","AAAAADLANR","AAAAADLANR2",2,1.674060513e-05,5.373661406e-05,0.0006490872474,0.0001518372301,0.000149097963,0.0001358142035,0.0001497678604,0,1,899200.125,428510.1562,656057.5625,NA,2499815,0.8160616755,18.05126572,17.8137722,18.28678894,-21.32222939,18.1705513,-21.59338951,NA,9.991008119e-05,0.000135446302,0.6309387088,3426275.75,3.230315685,0.5237364769,0.9799031019,0.7867111564,0.9999428988,1.861606121,0.06610165536,"536130.25;443880.2188;201327.6094;275118.4375;161742.2188;0;","536130.25;443880.2188;201327.6094;275118.4375;161742.2188;0;","0.8160614967;0.8163610697;0.8160615563;0.8161194921;0.8160626292;0;",10713,0.7773690224,2.574193954,1,0,0,0,472.2514343,"y6^1/659.3471069;y7^1/730.3842163;y8^1/801.4213257;y5^1/588.3099976;b4^1/285.1557312;b9^1/769.3839111;",300,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B3.raw","dAL_AT_Long_B3","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",2007524,842269.875,650127.6875,2007524,842269.875,650127.6875,650127.6875,"AAAAADLANR","AAAAADLANR","AAAAADLANR2",2,0.00916364044,0.2428251058,0.0006490872474,0.0001531862799,0.0001501501538,0.0001358142035,0.0001507613488,0,1,942141.875,448753.1875,890336.5625,NA,3119138.5,0.8589064479,18.35126877,18.11352348,18.58742332,-21.32222939,18.46173286,-21.54527664,NA,9.991008119e-05,0.000135446302,0.5746723413,3300629.5,2.139348507,0.2437086552,0.3952181339,0.7992215157,0.794346869,2.328962326,0.05760458857,"430145.625;48624.25781;137092.4375;0;374903.8438;0;","430145.625;48624.25781;137092.4375;0;374903.8438;0;","0.9093863368;0;0.816496551;0;0.8164966106;0;",10905,0.8072815537,1.166624665,1,0,0,0,472.2514343,"y6^1/659.3471069;y7^1/730.3842163;y8^1/801.4213257;y5^1/588.3099976;b4^1/285.1557312;b9^1/769.3839111;",300,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B5.raw","dAL_AT_Long_B5","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",727757.5,802856.375,918186.9375,727757.5,802856.375,918186.9375,918186.9375,"AAAAADLANR","AAAAADLANR","AAAAADLANR2",2,4.275639185e-06,4.275639185e-06,0.0006490872474,0.0001745200716,0.000170125888,0.0001358142035,0.0001706193434,0,1,379045.0625,456620.375,332859.375,NA,2702911,0.8499773741,19.12610054,18.88772392,19.3631115,-21.32222939,19.11120796,-21.28826332,NA,9.991008119e-05,0.000135446302,0.7191221714,3077951.75,3.344281435,0.5628420711,0.3966919184,0.7535367608,0.9999955297,2.727768898,0.1738889366,"169896.4844;125670.2969;99889.11719;118979.5625;109259.4688;0;","169896.4844;125670.2969;99889.11719;118979.5625;109259.4688;0;","0.8580392599;0.8653072119;0.8715733886;0.8608202934;0.817697227;0;",11337,0.7145422697,2.918129921,1,0,0,0,472.2514343,"y6^1/659.3471069;y7^1/730.3842163;y8^1/801.4213257;y5^1/588.3099976;b4^1/285.1557312;b9^1/769.3839111;",300,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B6.raw","dAL_AT_Long_B6","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",1610590.375,729602.5,839777.125,1610590.375,729602.5,839777.125,839777.125,"AAAAADLANR","AAAAADLANR","AAAAADLANR2",2,7.226869639e-05,0.001436895924,0.0006490872474,0.0001622849668,0.000158830997,0.0001358142035,0.0001594133646,0,1,415412.9375,165399.1406,271749.25,NA,2252514.75,0.816496551,17.8771801,17.64019012,18.11351776,-21.32222939,17.88889313,-21.2931118,NA,9.991008119e-05,0.000135446302,0,3443335.5,1.783088565,0.5097224116,0.03568196669,0.7069677114,0.9984713793,0.9829619527,0.1603230834,"175252.8906;151534.0781;104316.5078;0;135843.5312;0;","175252.8906;151534.0781;104316.5078;0;135843.5312;0;","0.816496551;0.7962657213;0.816496551;0;0.816496551;0;",10617,0.1766548157,1.607152343,1,0,0,0,472.2514343,"y6^1/659.3471069;y7^1/730.3842163;y8^1/801.4213257;y5^1/588.3099976;b4^1/285.1557312;b9^1/769.3839111;",300,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B8.raw","dAL_AT_Long_B8","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",334690.75,671059.3125,770917,334690.75,671059.3125,770917,770917,"AAAAADLANR","AAAAADLANR","AAAAADLANR2",2,2.799317008e-05,0.0001319006114,0.0006490872474,0.0001751006785,0.000171703301,0.0001358142035,0.0001723840687,0,1,179770.75,367912.8438,159126.1562,NA,1471403.75,0.8726844788,19.39972687,19.16104698,19.63812256,-21.32222939,19.42512131,-21.36941719,NA,9.991008119e-05,0.000135446302,0.6476421356,1662299.75,3.834887505,0.505007565,0.7523557544,1.615561366,0.9998661876,1.777883291,0.05869986862,"93765.14844;68640.07031;52107.86328;47793.39844;33897.73047;10260.63965;","93765.14844;68640.07031;52107.86328;47793.39844;33897.73047;10260.63965;","0.8675714731;0.8915858269;0.8164966106;0.8800247312;0.9732004404;0.816496551;",11481,0.8181859255,2.932992458,1,0,0,0,472.2514343,"y6^1/659.3471069;y7^1/730.3842163;y8^1/801.4213257;y5^1/588.3099976;b4^1/285.1557312;b9^1/769.3839111;",300,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B9.raw","dAL_AT_Long_B9","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",729017.8125,480510.0938,693035.375,729017.8125,480510.0938,693035.375,693035.375,"AAAAADLANR","AAAAADLANR","AAAAADLANR2",2,1.701693145e-05,2.866148134e-05,0.0006490872474,0.0001648261095,0.0001617337839,0.0001358142035,0.0001623640273,0,1,620460.75,363513.25,422183.7188,NA,2922998.5,0.7167005539,18.22169113,17.98415375,18.45849609,-21.32222939,18.26799011,-21.43239975,NA,9.991008119e-05,0.000135446302,0.6676675081,4295774,2.82158041,0.5721581578,0.08730252087,0.4286405146,0.9999688864,1.772887707,0.06178896502,"160922.3906;233641.6875;122010.2656;178559.9688;337528.125;0;","160922.3906;233641.6875;122010.2656;178559.9688;337528.125;0;","0.8164966106;0.806849122;0.816496551;0.816496551;0.6330465078;0;",10809,0.8262636065,1.659512639,1,0,0,0,472.2514343,"y6^1/659.3471069;y7^1/730.3842163;y8^1/801.4213257;y5^1/588.3099976;b4^1/285.1557312;b9^1/769.3839111;",300,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B10.raw","dAL_AT_Long_B10","Q9JHS4","Q9JHS4","CLPX_MOUSE","Clpx",97056.14062,521911.9375,683220.125,97056.14062,521911.9375,683220.125,683220.125,"AAAAADLANR","AAAAADLANR","AAAAADLANR2",2,5.967277957e-06,5.967277957e-06,0.0006490872474,0.0002301495988,0.0002236135915,0.0001358142035,0.0002240645263,0,1,59950.84766,363601.9688,38302.09766,NA,321944.6875,0.8912644982,19.61519241,19.37590027,19.85445786,-21.32222939,19.66028976,-21.4210434,NA,9.991008119e-05,0.000135446302,0.6718819737,503911.1875,3.032055616,0.6588291526,0.9786368012,0.7913947105,0.9999939799,1.659168839,0.1043588296,"25862.62305;21928.57227;17353.9082;12836.5459;16734.31641;0;","25862.62305;21928.57227;17353.9082;12836.5459;16734.31641;0;","0.8424301744;0.9327343702;0.8936807513;0.8909284472;0.9642313719;0;",11577,0.7439624071,2.098476887,1,0,0,0,472.2514343,"y6^1/659.3471069;y7^1/730.3842163;y8^1/801.4213257;y5^1/588.3099976;b4^1/285.1557312;b9^1/769.3839111;",300,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q9QYL7","Q9QYL7","ABT1_MOUSE","Abt1",39190.86328,26759.0332,13504.40527,39190.86328,26759.0332,13504.40527,13504.40527,"AAAAAGGK(SILAC-K-L)","AAAAAGGK","AAAAAGGK(SILAC-K-L)1",1,0.007260709535,0.1954764724,0.005079592112,0.01374527067,0.01433868986,0.0009875324322,0.01442427281,0,1,39190.86328,26759.0332,34254.08594,0.7678255439,2855972.75,0.7851482034,7.439221859,7.200433731,7.67815733,-57.84890366,7.448111534,-57.89104462,NA,0.002288215328,0.000135446302,0.7929172516,2732043.75,2.310770988,0.248098135,0.6108617187,1.942544341,0.8280011415,1.548932791,0.1535957158,"5587.535156;33603.32812;8502.878906;0;3910.589355;0;0;0;26818.22266;12344.2207;0;0;","5587.535156;33603.32812;8502.878906;0;3910.589355;0;0;0;26818.22266;12344.2207;0;0;","0;0.915702045;0.7702460289;0;0.816496551;0;0;0;0.7876480818;0;0;0;",4252,0.764492631,0.5541287065,0.0009870278882,2732043.75,317617.0625,0,616.3413086,"y4^1/332.1928406;y3^1/261.1557312;b5^1/356.1928406;y5^1/403.22995;b6^1/413.214325;b4^1/285.1557312;b3^1/214.1186218;y6^1/474.2670593;b7^1/470.2357788;y7^1/545.3041992;y6^2/237.6371765;y7^2/273.1557312;",351,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q9QYL7","Q9QYL7","ABT1_MOUSE","Abt1",102039,44079.19141,17747.40039,102039,44079.19141,17747.40039,17747.40039,"AAAAAGGK(SILAC-K-L)","AAAAAGGK","AAAAAGGK(SILAC-K-L)1",1,0.0001877581672,0.002201226307,0.005079592112,0.04681802168,0.04684975743,0.0009875324322,0.04697674513,0,1,102039,44079.19141,106736.5625,0.5309715271,4653199,0.9253932834,7.358582973,7.119765759,7.597272396,-57.84890366,7.381231308,-57.35240173,NA,0.002288215328,0.000135446302,0.8041107059,4448408,2.412487507,0.5005257726,0.1376755685,1.885714889,0.9976356626,1.209128022,0.1314851344,"39425.6875;50263.73438;3532.047607;12349.58008;20208.04688;0;2689.122803;0;41703.97266;0;0;0;","39425.6875;50263.73438;3532.047607;12349.58008;20208.04688;0;2689.122803;0;41703.97266;0;0;0;","0.9266978502;0.9844219685;0.4263185859;0.6809772849;0.8819261193;0;0.4263185859;0;0.9738645554;0;0;0;",4204,0.9570935369,1.155377626,0.0002171428205,4448408,0,0,616.3413086,"y4^1/332.1928406;y3^1/261.1557312;b5^1/356.1928406;y5^1/403.22995;b6^1/413.214325;b4^1/285.1557312;b3^1/214.1186218;y6^1/474.2670593;b7^1/470.2357788;y7^1/545.3041992;y6^2/237.6371765;y7^2/273.1557312;",351,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B3.raw","dAL_AT_Long_B3","Q9QYL7","Q9QYL7","ABT1_MOUSE","Abt1",81261.58594,41771.38672,19655.10938,81261.58594,41771.38672,19655.10938,19655.10938,"AAAAAGGK(SILAC-K-L)","AAAAAGGK","AAAAAGGK(SILAC-K-L)1",1,5.016219075e-05,0.0002220502356,0.005079592112,0.04656834155,0.04657783732,0.0009875324322,0.04645561054,0,1,81261.58594,41771.38672,82875.38281,NA,4401844,0.9266912341,7.677595615,7.438820839,7.916414261,-57.84890366,7.630819798,-57.56324387,NA,0.002288215328,0.000135446302,0.8233778477,4316128.5,2.679209709,0.4042788148,0.5805947185,1.905209899,0.99976331,0,-1e+07,"26884.68359;47265.06641;6249.852539;7111.837891;6428.359375;0;0;0;40791.79688;0;0;2282.208008;","26884.68359;47265.06641;6249.852539;7111.837891;6428.359375;0;0;0;40791.79688;0;0;2282.208008;","0.9451296926;0.9466620088;0.5990924835;0.7242629528;0.7432294488;0;0;0;0.9644508958;0;0;0.200568229;",4396,0.9442327023,1.171681881,2.357213816e-05,4316128.5,0,0,616.3413086,"y4^1/332.1928406;y3^1/261.1557312;b5^1/356.1928406;y5^1/403.22995;b6^1/413.214325;b4^1/285.1557312;b3^1/214.1186218;y6^1/474.2670593;b7^1/470.2357788;y7^1/545.3041992;y6^2/237.6371765;y7^2/273.1557312;",351,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B4.raw","dAL_AT_Long_B4","Q9QYL7","Q9QYL7","ABT1_MOUSE","Abt1",89368.3125,43249.17578,20350.45898,89368.3125,43249.17578,20350.45898,20350.45898,"AAAAAGGK(SILAC-K-L)","AAAAAGGK","AAAAAGGK(SILAC-K-L)1",1,1.887932376e-05,0.000130948727,0.005079592112,0.048122067,0.04784413055,0.0009875324322,0.04787914082,0,1,89368.3125,43249.17578,92294.46875,NA,3765865.25,0.9197205901,7.35830164,7.119362831,7.597032547,-57.84890366,7.353360176,-57.48803329,NA,0.002288215328,0.000135446302,0.8049622178,3646470.25,2.307816744,0.7881931067,0.6101654768,2.126365423,0.9998574257,0.9749743342,0.1361165196,"36556.50781;49666.875;4378.938477;3144.933105;8610.481445;2784.981445;0;0;23632.97461;0;0;0;","36556.50781;49666.875;4378.938477;3144.933105;8610.481445;2784.981445;0;0;23632.97461;0;0;0;","0.9125887752;0.9474761486;0.5642845035;0.5642845035;0.6727139354;0.5642845035;0;0;0.8517807126;0;0;0;",4204,0.9265346527,0.9353510737,6.657250196e-05,3646470.5,0,0,616.3413086,"y4^1/332.1928406;y3^1/261.1557312;b5^1/356.1928406;y5^1/403.22995;b6^1/413.214325;b4^1/285.1557312;b3^1/214.1186218;y6^1/474.2670593;b7^1/470.2357788;y7^1/545.3041992;y6^2/237.6371765;y7^2/273.1557312;",351,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q9QYL7","Q9QYL7","ABT1_MOUSE","Abt1",39190.86328,26759.0332,13504.40527,39190.86328,26759.0332,13504.40527,13504.40527,"AAAAAGGK(SILAC-K-H)","AAAAAGGK","AAAAAGGK(SILAC-K-H)1",1,0.007260709535,0.1954764724,0.005079592112,0.01374527067,0.01433868986,0.0009875324322,0.01442427281,0.007260709535,1,26469.26367,18072.88281,27669.94336,0.7678255439,332024.5938,0.9473966956,7.441445351,7.202604771,7.680328846,-57.84890366,7.448111534,-57.8825531,NA,0.002288215328,0.000135446302,0.4834521413,384269.6875,1.491315126,0.4502587616,0.1203947514,0.5914103389,0.8999999762,0,-1e+07,"2233.225098;24236.03906;12589.89648;0;0;0;0;0;0;0;0;0;","2233.225098;24236.03906;12589.89648;0;0;0;0;0;0;0;0;0;","0.4955580235;0.9890312552;0.8910690546;0;0;0;0;0;0;0;0;0;",4253,0.6065121293,0.8010076284,0.01855966076,3305369,384269.6875,0,622.3614502,"y4^1/338.2129822;y3^1/267.1758728;b5^1/356.1928406;y5^1/409.2500916;b6^1/413.214325;b4^1/285.1557312;b3^1/214.1186218;y6^1/480.2872009;b7^1/470.2357788;y7^1/551.3243408;y6^2/240.6472473;y7^2/276.165802;",352,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q9QYL7","Q9QYL7","ABT1_MOUSE","Abt1",102039,44079.19141,17747.40039,102039,44079.19141,17747.40039,17747.40039,"AAAAAGGK(SILAC-K-H)","AAAAAGGK","AAAAAGGK(SILAC-K-H)1",1,0.0001877581672,0.002201226307,0.005079592112,0.04681802168,0.04684975743,0.0009875324322,0.04697674513,0.02513524331,1,30883.74219,13341.27637,22406.86133,0.5309715271,0,0.679933548,7.360754967,7.121937752,7.599496365,-57.84890366,7.381231308,-57.3447113,NA,0.002288215328,0.000135446302,0.2823084891,367548.625,0.4314091504,0.5010403991,0.03197918832,0.3417317271,0.626768291,0.4664905369,0.1105662584,"7058.750977;23824.99219;4397.85791;0;0;0;0;0;0;0;0;0;","7058.750977;23824.99219;4397.85791;0;0;0;0;0;0;0;0;0;","0.5352689624;0.7227939963;0.9448980689;0;0;0;0;0;0;0;0;0;",4205,0.4269564152,0.04586754739,0.018520955,4448408,367548.625,0,622.3614502,"y4^1/338.2129822;y3^1/267.1758728;b5^1/356.1928406;y5^1/409.2500916;b6^1/413.214325;b4^1/285.1557312;b3^1/214.1186218;y6^1/480.2872009;b7^1/470.2357788;y7^1/551.3243408;y6^2/240.6472473;y7^2/276.165802;",352,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",1377873.625,930183,729092.8125,1377873.625,930183,729092.8125,729092.8125,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,0.0009393893997,0.02048791945,5.50940058e-05,0.0001518372301,0.000149097963,0.0001358142035,0.0001497678604,0,1,314326.125,162868.6094,249355.0781,NA,0,0.9608847499,17.08014107,16.8446312,17.31759834,-23.87726021,17.0640316,-23.80544662,NA,8.209332009e-06,0.000135446302,0,0,2.228735447,0.3349373639,0.03446272016,2.18956089,0.9786919355,0.05926535651,0.1802371591,"142469.1094;138208.5625;0;6249.592773;33648.42969;97715.34375;","142469.1094;138208.5625;0;6249.592773;33648.42969;97715.34375;","0.9587916732;0.9733410478;0;0.3918153644;0.9185836911;0.9730597734;",10122,0,2.784156561,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",521707.9688,179061.2656,680869.625,521707.9688,179061.2656,680869.625,680869.625,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,0.003341036616,0.08598645031,5.50940058e-05,0.01050447393,0.01051964518,0.0001358142035,0.0104658585,0,1,424929.625,148519.8281,359636.7188,NA,0,0.8771668673,16.66034889,16.42432785,16.89596367,-23.87726021,16.4874115,-23.50916481,NA,8.209332009e-06,0.000135446302,0,0,1.865641475,0.3878117204,0.03446272388,2.106858015,0.9152673483,1.791848779,0.4792858958,"215588.9688;154248.0156;0;8231.459961;55092.63672;126631.0391;","215588.9688;154248.0156;0;8231.459961;55092.63672;126631.0391;","0.8876625896;0.8608678579;0;0.3486099243;0.8817284107;0.8305500746;",9882,0,1.728558779,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B3.raw","dAL_AT_Long_B3","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",1085594.875,455252.25,632177.125,1085594.875,455252.25,632177.125,632177.125,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,1.838336721e-05,8.587752382e-05,5.50940058e-05,0.0001531862799,0.0001501501538,0.0001358142035,0.0001507613488,0.00406424189,1,327380.3438,156625.875,310749.2812,NA,0,0.6428604722,17.2220974,16.98718643,17.45790863,-23.87726021,17.3208046,-24.0586853,NA,8.209332009e-06,0.000135446302,0,0,0.7537618279,4.128490677e-15,0.0347398147,1.583657384,0.8999999762,0.8177216649,0.2187358439,"143162.1094;145993.9531;6526.876953;0;38224.28906;89332.59375;","143162.1094;145993.9531;6526.876953;0;38224.28906;89332.59375;","0.5894944072;0.658033967;0.4999999702;0;0.7847791314;0.7010689378;",10218,0,0.6868440509,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B5.raw","dAL_AT_Long_B5","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",454242.7812,614122,885752.625,454242.7812,614122,885752.625,885752.625,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,0.008875411935,0.1778103411,5.50940058e-05,0.003183747642,0.002828222699,0.0001358142035,0.002837938722,0,1,106316.375,144183.5625,105104.4844,NA,0,0.8512318134,17.8334446,17.59525299,18.06990814,-23.87726021,17.94355774,-24.09442329,NA,8.209332009e-06,0.000135446302,0,0,1.293236852,0.4506063461,0.0347398147,0.5171104074,0.8432353735,0.8174673319,0.2480325699,"30369.98633;59503.19531;93065.78125;7369.902832;16443.19531;63836.57812;","30369.98633;59503.19531;93065.78125;7369.902832;16443.19531;63836.57812;","0.7072373033;0.927935183;0.1583013833;0.6401432753;0.8396167159;0.7303804755;",10554,0,1.221141815,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B6.raw","dAL_AT_Long_B6","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",408637.1875,182845.4375,315928.9062,408637.1875,182845.4375,315928.9062,315928.9062,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,0.003965519369,0.08950874954,5.50940058e-05,0.0007766386843,0.000611340336,0.0001358142035,0.0006137793534,0,1,408637.1875,182845.4375,300413.375,NA,295264.0312,0.9247679114,16.90643692,16.67072296,17.14281845,-23.87726021,16.78363228,-23.54474449,NA,8.209332009e-06,0.000135446302,0,401632.8125,2.043133259,0.3302604258,0.03446272388,1.780057073,0.9129348993,0.8896936178,0.1963243634,"204504.6406;166425.1562;0;6024.456543;37707.35938;161150.8125;","204504.6406;166425.1562;0;6024.456543;37707.35938;161150.8125;","0.9157336354;0.9419649243;0;0.1862178892;0.8978651166;0.9628808498;",10026,0,1.924494386,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B7.raw","dAL_AT_Long_B7","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",697332,292309.5625,480703.5625,697332,292309.5625,480703.5625,480703.5625,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,0.002176407725,0.04187319428,5.50940058e-05,0.0001667500474,0.0001633719949,0.0001358142035,0.0001639881957,0,1,310222.5312,129110.6328,276616.4688,NA,226530.4062,0.9211497307,17.21945763,16.98391533,17.45523262,-23.87726021,17.17678642,-23.73630524,NA,8.209332009e-06,0.000135446302,0,254051.5312,1.431321263,0.5673387051,0.03446272388,1.625888348,0.9572290182,1.164865732,0.1367967278,"138798.6406;123736.3594;120424.1016;0;47687.52734;90592.20312;","138798.6406;123736.3594;120424.1016;0;47687.52734;90592.20312;","0.9393885136;0.945204258;0.01286838017;0;0.805649519;0.5321009159;",10218,0,1.664131999,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B8.raw","dAL_AT_Long_B8","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",133088.2656,615422.1875,738895.6875,133088.2656,615422.1875,738895.6875,738895.6875,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,0.0002349241986,0.003887107363,5.50940058e-05,0.0001751006785,0.000171703301,0.0001358142035,0.0001723840687,0,1,52554.37891,101878.0781,44063.33203,NA,63947.25,0.8306208849,18.02449608,17.78687096,18.26217651,-23.87726021,18.22454834,-24.30904579,NA,8.209332009e-06,0.000135446302,0.1292551607,76269.94531,2.082244396,0.4284141362,0.05845912918,2.24496603,0.9960715175,1.016103029,0.144247815,"18290.38867;28263.8125;0;3456.593262;6000.174805;12382.8125;","18290.38867;28263.8125;0;3456.593262;6000.174805;12382.8125;","0.9105148315;0.7758747935;0;0.8164966106;0.8449613452;0.1582418382;",10650,0,2.202255726,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B9.raw","dAL_AT_Long_B9","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",872425.8125,619168.4375,749836.25,872425.8125,619168.4375,749836.25,749836.25,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER2",2,0.008796521463,0.1747110337,5.50940058e-05,0.0001648261095,0.0001617337839,0.0001358142035,0.0001623640273,0.008796521463,1,214309.9531,147661.6094,171493.9688,NA,155562.7812,0.7548833489,16.93254662,16.7753334,17.16855621,-23.87726021,17.13619995,-24.32439232,NA,8.209332009e-06,0.000135446302,0.2086322755,194401.3125,0.4703039527,0.6057195067,0.2102110088,1.231267571,1,0.8248972297,0.7849490047,"117759.4453;66349.5;3714.527344;9885.912109;30201.01953;117310.8281;","117759.4453;66349.5;3714.527344;9885.912109;30201.01953;117310.8281;","0.8660164475;0.5513890982;0.4082483053;0.4082482755;0.7686166763;0.6062803864;",10026,0,0.2934386432,1,0,0,0,804.8660889,"y12^2/698.3103638;b7-H2O^1/568.2355957;y5^1/676.2896729;b7^1/586.2467041;b6^1/457.2041321;b5^1/400.1826782;",565,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B1.raw","dAL_AT_Long_B1","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",1377873.625,930183,729092.8125,1377873.625,930183,729092.8125,729092.8125,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER3",3,0.0009393893997,0.02048791945,0.0002085070882,0.0001518372301,0.000149097963,0.0001358142035,0.0001497678604,0.1283187866,1,510840.3125,267246.4062,409159.5938,NA,0,0.9492473006,17.044487,16.80898476,17.28193855,-23.65784454,17.15783501,-23.88876534,NA,5.181328106e-06,0.000135446302,0,0,0.7967304587,0.1539487094,0.03446625546,0,0.4014773965,0,-1e+07,"21893.18359;149418.9375;56935.14453;0;339528.1875;0;107751.3359;140066.9844;95115.51562;15753.39453;162439.2188;31637.28125;","21893.18359;149418.9375;56935.14453;0;339528.1875;0;107751.3359;140066.9844;95115.51562;15753.39453;162439.2188;31637.28125;","0.4282678366;0.9501514435;0.3737477958;0;0.9824427962;0;0.6675688028;0.5182726383;0.6640800238;0.4176591635;0.5806184411;0.604823947;",10098,0,0.3717748523,1,0,0,0,536.913147,"y11^2/662.7918091;b3^1/214.1186218;y10^2/605.2783813;y6^1/813.3485718;y7-NH3^1/909.4060669;y5^1/676.2896729;y7^1/926.4326172;y6^2/407.1779175;y7-H2O^2/454.714386;y7^2/463.7199402;b4^1/285.1557312;y7-NH3^2/455.2066956;",566,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B2.raw","dAL_AT_Long_B2","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",521707.9688,179061.2656,680869.625,521707.9688,179061.2656,680869.625,680869.625,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER3",3,0.003341036616,0.08598645031,0.0002085070882,0.01050447393,0.01051964518,0.0001358142035,0.0104658585,0.003341036616,1,521707.9688,179061.2656,433591.9688,NA,318743.3438,0.6191794276,16.62462807,16.38937569,16.86030769,-23.65784454,16.58123398,-23.59293556,NA,5.181328106e-06,0.000135446302,0.2305561602,383519.4062,0.6562963128,0.2747071981,0.03446625546,0.0266663786,1,0.4535522461,0.4277704656,"41899;245675.3438;0;0;234133.625;0;107714.3516;58900.12109;164563.7812;39162.54688;342867.3438;0;","41899;245675.3438;0;0;234133.625;0;107714.3516;58900.12109;164563.7812;39162.54688;342867.3438;0;","0.5092510581;0.4219729304;0;0;0.8457793593;0;0.7764500976;0.3535533845;0.7877739072;0.7071067691;0.3834217489;0;",9858,0.3333333433,1.399500847,1,0,0,0,536.913147,"y11^2/662.7918091;b3^1/214.1186218;y10^2/605.2783813;y6^1/813.3485718;y7-NH3^1/909.4060669;y5^1/676.2896729;y7^1/926.4326172;y6^2/407.1779175;y7-H2O^2/454.714386;y7^2/463.7199402;b4^1/285.1557312;y7-NH3^2/455.2066956;",566,0,0,0,0 +"G:\.shortcut-targets-by-id\1uQ4exoKlaZAGnOG1iCJPzYN3ooYYZB7g\MS\Users\aleduc\miceotopes\Bulk\dAL_AT_Long_B3.raw","dAL_AT_Long_B3","Q80WW9","Q80WW9","DDRGK_MOUSE","Ddrgk1",1085594.875,455252.25,632177.125,1085594.875,455252.25,632177.125,632177.125,"AAAADGEPLHNEEER","AAAADGEPLHNEEER","AAAADGEPLHNEEER3",3,1.838336721e-05,8.587752382e-05,0.0002085070882,0.0001531862799,0.0001501501538,0.0001358142035,0.0001507613488,0,1,715797.5,339753.1562,674078,NA,605979.6875,0.6171481013,17.18645668,16.9515419,17.42218208,-23.65784454,17.41730118,-24.14256668,NA,5.181328106e-06,0.000135446302,0.898673892,643484.5,3.005169868,0.6769152284,0.06367587298,0.3671406209,0.9999084473,0.7417593598,0.1905063987,"65508.53516;168778.3906;25805.08398;23172.66797;481510.5938;13172.30664;63632.96875;89918.5625;91909.75781;12512.17676;147063.8125;10701.66016;","65508.53516;168778.3906;25805.08398;23172.66797;481510.5938;13172.30664;63632.96875;89918.5625;91909.75781;12512.17676;147063.8125;10701.66016;","0.9128565192;0.6604357362;0.8164966106;0.8164966106;0.5617444515;0.8164966106;0;0.8960002065;0;0;0.8619066477;0.816496551;",10194,0.9112304449,3.290697813,1,0,0,0,536.913147,"y11^2/662.7918091;b3^1/214.1186218;y10^2/605.2783813;y6^1/813.3485718;y7-NH3^1/909.4060669;y5^1/676.2896729;y7^1/926.4326172;y6^2/407.1779175;y7-H2O^2/454.714386;y7^2/463.7199402;b4^1/285.1557312;y7-NH3^2/455.2066956;",566,0,0,0,0 From d0a9639da639335ef19945112f7068b55dbe0126 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Fri, 17 Apr 2026 09:24:08 -0400 Subject: [PATCH 03/10] add sanity unit tests --- .../test_converters_DIANNtoMSstatsFormat.R | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R b/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R index 2cf5308e..85f8dcdb 100644 --- a/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R +++ b/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R @@ -1,3 +1,107 @@ +# Test DIANNtoMSstatsFormat SILAC protein turnover --------------------------- +# Verifies E2E behavior when labeledAminoAcids = c("K") is used for protein +# turnover experiments with SILAC-labeled lysines. +input_file_path_silac = system.file("tinytest/raw_data/DIANN/diann_input_silac.csv", + package = "MSstatsConvert") +annotation_file_path_silac = system.file("tinytest/raw_data/DIANN/annotation_silac.csv", + package = "MSstatsConvert") +input_silac = data.table::fread(input_file_path_silac) +annot_silac = data.table::fread(annotation_file_path_silac) +output_silac = DIANNtoMSstatsFormat(input_silac, annotation = annot_silac, + labeledAminoAcids = c("K"), + removeFewMeasurements = FALSE, + use_log_file = FALSE) +output_silac_dt = data.table::as.data.table(output_silac) + +# Basic structure +expect_equal(ncol(output_silac), 11) +expect_equal(nrow(output_silac), 1020) +expect_true("Run" %in% colnames(output_silac)) +expect_true("ProteinName" %in% colnames(output_silac)) +expect_true("PeptideSequence" %in% colnames(output_silac)) +expect_true("PrecursorCharge" %in% colnames(output_silac)) +expect_true("Intensity" %in% colnames(output_silac)) +expect_true("FragmentIon" %in% colnames(output_silac)) +expect_true("ProductCharge" %in% colnames(output_silac)) +expect_true("IsotopeLabelType" %in% colnames(output_silac)) +expect_true("Condition" %in% colnames(output_silac)) +expect_true("BioReplicate" %in% colnames(output_silac)) +expect_true("Fraction" %in% colnames(output_silac)) + +# IsotopeLabelType is classified as H/L/NA — not the "Light" default from +# the labeledAminoAcids=NULL path +expect_false("Light" %in% output_silac$IsotopeLabelType) +label_counts = table(output_silac$IsotopeLabelType, useNA = "ifany") +expect_equal(unname(label_counts["H"]), 350L) +expect_equal(unname(label_counts["L"]), 350L) +expect_equal(sum(is.na(output_silac$IsotopeLabelType)), 320L) + +# SILAC modification tags are stripped from PeptideSequence +expect_false(any(grepl("SILAC", output_silac$PeptideSequence))) + +# Peptides without a labeled K get NA IsotopeLabelType +unlabeled_rows = output_silac_dt[PeptideSequence %in% c("AAAAADLANR", "AAAADGEPLHNEEER")] +expect_true(all(is.na(unlabeled_rows$IsotopeLabelType))) + +# Peptides with a labeled K get only H or L +k_pep_rows = output_silac_dt[PeptideSequence %in% c("AAAAAAAAQMHTK", "AAAAAAAK", + "AAAAAAK", "AAAAAGGK")] +expect_true(all(k_pep_rows$IsotopeLabelType %in% c("H", "L"))) + +# Annotation merges correctly: run dAL_AT_Long_B1 maps to Condition 10 +cond_b1 = unique(output_silac_dt[Run == "dAL_AT_Long_B1", Condition]) +expect_equal(as.character(cond_b1), "10") + +# Heavy fragment intensities trace back to the heavy input rows. +# Input: AAAAAAAAQMHTK(SILAC-K-H), Run dAL_AT_Long_B1 has +# Fragment.Quant.Corrected = "0;18378.38477;17024.44141;15426.27441;38014.78906;" +# Fragment.Info ions (after NH3 removal): +# y8^1/863.4499512 -> 18378.38477, y9^1/934.4870605 -> 17024.44141, +# y6^1/721.3757324 -> 15426.27441 +heavy_b1 = output_silac_dt[PeptideSequence == "AAAAAAAAQMHTK" & + IsotopeLabelType == "H" & + Run == "dAL_AT_Long_B1"] +heavy_y8 = heavy_b1[FragmentIon == "y8^1/863.4499512", Intensity] +expect_equal(heavy_y8, 18378.38477, tolerance = 1) +heavy_y9 = heavy_b1[FragmentIon == "y9^1/934.4870605", Intensity] +expect_equal(heavy_y9, 17024.44141, tolerance = 1) +heavy_y6 = heavy_b1[FragmentIon == "y6^1/721.3757324", Intensity] +expect_equal(heavy_y6, 15426.27441, tolerance = 1) + +# Light fragment intensities trace back to the light input rows. +# Input: AAAAAAAAQMHTK(SILAC-K-L), Run dAL_AT_Long_B1 has +# Fragment.Quant.Corrected = "120170.8125;39879.93359;13874.50293;33449.03516;0;33788.10156;" +# Fragment.Info ions (after NH3 removal): +# y5^1/644.3184814 -> 120170.8125, y8^1/857.4298096 -> 39879.93359, +# y10^1/999.5040283 -> 13874.50293, y9^1/928.4669189 -> 33449.03516 +light_b1 = output_silac_dt[PeptideSequence == "AAAAAAAAQMHTK" & + IsotopeLabelType == "L" & + Run == "dAL_AT_Long_B1"] +light_y5 = light_b1[FragmentIon == "y5^1/644.3184814", Intensity] +expect_equal(light_y5, 120170.8125, tolerance = 1) +light_y8 = light_b1[FragmentIon == "y8^1/857.4298096", Intensity] +expect_equal(light_y8, 39879.93359, tolerance = 1) +light_y10 = light_b1[FragmentIon == "y10^1/999.5040283", Intensity] +expect_equal(light_y10, 13874.50293, tolerance = 1) +light_y9 = light_b1[FragmentIon == "y9^1/928.4669189", Intensity] +expect_equal(light_y9, 33449.03516, tolerance = 1) + +# Zero-intensity input fragments are converted to NA in output +# AAAAAAAAQMHTK(SILAC-K-L) B1 has y6^1/715.3555908 = 0 in input +light_y6_zero = light_b1[FragmentIon == "y6^1/715.3555908", Intensity] +expect_true(is.na(light_y6_zero)) + +# Verify cross-run consistency: B8 light intensities also trace to input +# Input: AAAAAAAAQMHTK(SILAC-K-L), Run dAL_AT_Long_B8 has +# Fragment.Quant.Corrected = "27676.55078;5134.108887;4891.382324;3844.573975;3443.866699;8253.693359;" +light_b8 = output_silac_dt[PeptideSequence == "AAAAAAAAQMHTK" & + IsotopeLabelType == "L" & + Run == "dAL_AT_Long_B8"] +light_y5_b8 = light_b8[FragmentIon == "y5^1/644.3184814", Intensity] +expect_equal(light_y5_b8, 27676.55078, tolerance = 1) +light_y8_b8 = light_b8[FragmentIon == "y8^1/857.4298096", Intensity] +expect_equal(light_y8_b8, 5134.108887, tolerance = 1) + # Test DIANNtoMSstatsFormat --------------------------- input_file_path = system.file("tinytest/raw_data/DIANN/diann_input.tsv", package="MSstatsConvert") annotation_file_path = system.file("tinytest/raw_data/DIANN/annotation.csv", package = "MSstatsConvert") From c715ffd7f2f175d19e66340c43c599b4ea1e3075 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Fri, 17 Apr 2026 09:28:42 -0400 Subject: [PATCH 04/10] add additional unit tests --- inst/tinytest/test_clean_DIANN.R | 63 +++++++++++++++++++ .../test_converters_DIANNtoMSstatsFormat.R | 6 +- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/inst/tinytest/test_clean_DIANN.R b/inst/tinytest/test_clean_DIANN.R index 2f2a7ce1..d9493638 100644 --- a/inst/tinytest/test_clean_DIANN.R +++ b/inst/tinytest/test_clean_DIANN.R @@ -54,3 +54,66 @@ output <- MSstatsConvert:::.cleanRawDIANN(input, MBR = FALSE, qvalue_cutoff = 0. expect_qvalue_cutoff(output, "GlobalQValue", 0.001) output <- MSstatsConvert:::.cleanRawDIANN(input, MBR = FALSE, pg_qvalue_cutoff = 0.0002) expect_qvalue_cutoff(output, "GlobalPGQValue", 0.0002) + +# Test .classifyIsotopeLabelType --------------------------- +# DIANN mode: explicit SILAC-H / SILAC-L suffix tags +dt_diann = data.table::data.table(PeptideSequence = c( + "PEPTIDEK(SILAC-K-H)", # heavy + "PEPTIDEK(SILAC-K-L)", # light + "PEPTIDEAC" # neither -> NA +)) +result_diann = MSstatsConvert:::.classifyIsotopeLabelType( + dt_diann, + heavy_regex = "\\(SILAC-(?:K)-H\\)", + light_regex = "\\(SILAC-(?:K)-L\\)" +) +expect_equal(result_diann$IsotopeLabelType, c("H", "L", NA_character_)) + +# DIANN mode with multiple labeled amino acids (K and R) +dt_multi = data.table::data.table(PeptideSequence = c( + "PEPTIDEK(SILAC-K-H)", # heavy K + "PEPTIDER(SILAC-R-H)", # heavy R + "PEPTIDEK(SILAC-K-L)", # light K + "PEPTIDER(SILAC-R-L)", # light R + "PEPTIDEAC" # NA +)) +result_multi = MSstatsConvert:::.classifyIsotopeLabelType( + dt_multi, + heavy_regex = "\\(SILAC-(?:K|R)-H\\)", + light_regex = "\\(SILAC-(?:K|R)-L\\)" +) +expect_equal(result_multi$IsotopeLabelType, c("H", "H", "L", "L", NA_character_)) + +# Heavy-only mode: no light_regex -- non-heavy sequences get NA, not "L" +dt_heavy_only = data.table::data.table(PeptideSequence = c( + "PEPTIDEK(SILAC-K-H)", # heavy + "PEPTIDEK(SILAC-K-L)", # would be light, but no light_regex -> NA + "PEPTIDEAC" # NA +)) +result_heavy_only = MSstatsConvert:::.classifyIsotopeLabelType( + dt_heavy_only, + heavy_regex = "\\(SILAC-(?:K)-H\\)" +) +expect_equal(result_heavy_only$IsotopeLabelType, c("H", NA_character_, NA_character_)) + +# Test .assignDIANNIsotopeLabelType --------------------------- +# Channel path: Channel column is mapped to IsotopeLabelType, then dropped +dt_channel = data.table::data.table( + PeptideSequence = c("PEPTIDEK", "PEPTIDEK", "PEPTIDEK"), + Channel = c("H", "L", "other") +) +result_channel = MSstatsConvert:::.assignDIANNIsotopeLabelType( + dt_channel, labeledAminoAcids = c("K"), has_channel = TRUE +) +expect_equal(result_channel$IsotopeLabelType, c("H", "L", NA_character_)) +expect_false("Channel" %in% colnames(result_channel)) + +# NULL path: labeledAminoAcids = NULL returns input unchanged (no IsotopeLabelType added) +dt_null = data.table::data.table( + PeptideSequence = c("PEPTIDEK(SILAC-K-H)", "PEPTIDEK(SILAC-K-L)") +) +result_null = MSstatsConvert:::.assignDIANNIsotopeLabelType( + dt_null, labeledAminoAcids = NULL, has_channel = FALSE +) +expect_false("IsotopeLabelType" %in% colnames(result_null)) +expect_equal(nrow(result_null), 2L) diff --git a/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R b/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R index 85f8dcdb..78ff1665 100644 --- a/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R +++ b/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R @@ -121,6 +121,8 @@ expect_true("IsotopeLabelType" %in% colnames(output)) expect_true("Condition" %in% colnames(output)) expect_true("BioReplicate" %in% colnames(output)) expect_true("Fraction" %in% colnames(output)) +# When labeledAminoAcids = NULL (default), IsotopeLabelType is filled with "Light" +expect_true(all(output$IsotopeLabelType == "Light")) # Test DIANNtoMSstatsFormat DIANN 2.0 ------------------------ input_file_path = system.file("tinytest/raw_data/DIANN/diann_2.0.parquet", package="MSstatsConvert") @@ -140,4 +142,6 @@ expect_true("ProductCharge" %in% colnames(output)) expect_true("IsotopeLabelType" %in% colnames(output)) expect_true("Condition" %in% colnames(output)) expect_true("BioReplicate" %in% colnames(output)) -expect_true("Fraction" %in% colnames(output)) \ No newline at end of file +expect_true("Fraction" %in% colnames(output)) +# When labeledAminoAcids = NULL (default), IsotopeLabelType is filled with "Light" +expect_true(all(output$IsotopeLabelType == "Light")) \ No newline at end of file From 1c3bcb42e45aba24175b633876e911e76ac06d63 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Fri, 17 Apr 2026 09:44:51 -0400 Subject: [PATCH 05/10] added dataset source --- inst/tinytest/test_converters_DIANNtoMSstatsFormat.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R b/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R index 78ff1665..2880bcdb 100644 --- a/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R +++ b/inst/tinytest/test_converters_DIANNtoMSstatsFormat.R @@ -1,6 +1,5 @@ # Test DIANNtoMSstatsFormat SILAC protein turnover --------------------------- -# Verifies E2E behavior when labeledAminoAcids = c("K") is used for protein -# turnover experiments with SILAC-labeled lysines. +# Dataset source: MSV000097050 input_file_path_silac = system.file("tinytest/raw_data/DIANN/diann_input_silac.csv", package = "MSstatsConvert") annotation_file_path_silac = system.file("tinytest/raw_data/DIANN/annotation_silac.csv", From 28929acacb18ee2eb01fff40bf1dc2f96bd215aa Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Fri, 17 Apr 2026 09:54:46 -0400 Subject: [PATCH 06/10] add additional unit tests --- .../tinytest/raw_data/DIANN/PXD055942.parquet | Bin 0 -> 137868 bytes .../raw_data/DIANN/annotation_PXD055942.csv | 25 ++++++ .../test_converters_DIANNtoMSstatsFormat.R | 77 ++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 inst/tinytest/raw_data/DIANN/PXD055942.parquet create mode 100644 inst/tinytest/raw_data/DIANN/annotation_PXD055942.csv diff --git a/inst/tinytest/raw_data/DIANN/PXD055942.parquet b/inst/tinytest/raw_data/DIANN/PXD055942.parquet new file mode 100644 index 0000000000000000000000000000000000000000..c576365a58ac0b5a6a82433432cc4908e141f2a2 GIT binary patch literal 137868 zcmeEv2UHc;y8j-S!8tl8Do3#o%2BX_4eWz*kfVSgMIe^3pkT$0eT)q|b~KjJSkPEw z32M}_*Vr}2l8n7z!QSKl_o3z{x4rl7d+)#2eJd`{K6Cc$^6hVbeHS7ETl!gftHD_h zaG_RTD=Wm9n$u2Xj9Kt;!p9jO0Ur(@yk&*)amUAsPZ4~I;v?bXicfxg3gF|0PeFY0 z;FAv@`p4trf=^z2tjv1a$$HVLvh|g-)y?W+#fz0(PA2vB%9#@a<+Q*f^4^j&&vy8s zfyWPljw4xkTEywdj=@Gitq5`=uB0t61>sLX`ruHo7J3%iPz@?cvf6 z(N237+|rlMo_`!Q3OU<0A43Cui*$RqJ1Kv&uA4p9@K?ht?Okf0)NJ+qO=*#qDjlM$ zi%7}_+vL{gFHfYpb-Y(5CZpxP5iKX8j}3(`J0^O}N()Rv9xwr%rCY7roIm62P+qeZ zV6X05-Oo3`w^qBxy;7UB@6)4wYW1F-+6_$Zlo%G}*REMuyObzLXuFg?z1k%uw(rxg zU5)CU+WGxl2Nh%MFww7Xzw>?A*gA}_UbE#5HUJL+oz4d^=G!5Fi8cErb-l(UU(|@r zWM2lbgqGX@ysXiAABQ^h3k?Nayv90D;P@JSdM-mPT-TO=DfKBog$;P+-1)K- zTIsxp8!+0LQapQb12S1>ybWMd0J{6XFk2<9awzDGC^&yjBIOWDLh&JDoXuJ1bH69X z<~hwi(V~;UqBFY|;XIhItZR(m#^s5KVXIcfxN(ITeneYYbj&h$rvhVEIc0W@iD7z- zz%p04I~C`gS0xnU1SN(eY8h>{u98BnA-NFj$=kgGIt~mDiw+D5jR?1gI_#mL_U7K8 zj=&~9wex@iytzvCBVyyDnnp!M#6~rZ4~`8APN>Y7eR*Z(VYdfGHMO^jbuhk0KF;AC z8)~-)+Jhro`c)PRxQ7QuHH~N*Tb(6ELj;WH$a31(D2-n2j#x*0WKdA3 zy=hQvq$8qfL_~CWY$V`_jcQqgBuQ{kYO79O{UU z-NxelDx!cRFfckiG_a|oX(TWc5oHf)`-PKdR7rpujhgWZk&JnAk#ayGBPm1 z#+V0ZivzNw9l^2Dfe|70z-Tn!Xc`;dvbyKBSbwGmMc6}IHATmv_NefP_?Fd4I)(-U z%Gi+5ruO*Az`)p`roeyusw^~NHK)V}huI^eW9>nJrIo#9^^#mrQm8#FJTxpMFd{NG zFeuOw+B7^eEI2wOKB#4lzyl>iBLf{FKwd&ur+$9EXuf4cs3RycHa0RkFf_^@9SInK zN{k}*7*lGH$OSH&f_PeiCMt3TDu)JzMm3EL3=Xmf#<%asM~22Wz+?u7hepMQ+oM9m z!$X4|(I6{88`@GR78={s9vO%Z9FCx{aG)wY!qL*+rBf>h%0|ZqhQ>w*g$KsQhqQ_c zvp2OzMMkt;#<=$-;{#)ZgFrKF6P+Yd0u5uh_HG{W4!a{BQ@e*Tzrbc5@u8tXAi{*3 z%u>!hI@sK}FPz8S z9)o|g664SJZ}VgS_8zkn-HQqHw)D94>3?tclFoS1=Jv26Wh}DzrHtM@KK3vHtzHix z-3Z41-rf2z-)F{Nn74a*Wd9S!W)--Kf5X?YV633!mHxulAyAWCh}UmyT}jCQnX7$S zr$2CY8T9uTrUq?TxN`Dmo-WO~er9PW&a?90Fmy#Ggnnk{ON=$)dVb<&&%eXXdst4} zQt0iUGBeTs-{WOJ%Kwj9+1aV4CrbW~lgDt}yT5SqW)|&(_kYXC387A0i{BVIwgqD{ z*WxdX9P0%`h4bq4_ZgYyEVdTQ_-jrkQ|Iq6a{FT7W1Xx2SA1N8Ypni5Hnwm43lk?e zrBp-9|Comlvi8AVe_>$HVZKp+;NRB7zx7yP!;rtjy>>|Zzr(zNvHyg56Li*oSWLgJ(=25}5&^d@3|NRO8Whz0Z`iNMKW0DMWcjlWwcD<$ z|B&@;SAWlUjY9vxcVuBjhBg;GV5|JK&J=t@{tnmKdi@iovka*DSzR`5p38677!$d| z9v`)3a~Lb1G-YTm*5f~_%BIc#O*N&5wd7|LT&hgklQcV7;TTU(YoFhn-~JbVXML}% zSe406g1#yt#+`GHh$+n#a`Iq>oT{@tG0S3OVtnedJS$hNa?)1GPEg3YlQq-nGgqf` zIa8lxbF8kXz#8JyJWn20zGxn{xkg@Ab6j3XJy$mVe17(Wa{*RuYXP>Vc478(o(JnQ zusADwrwps$D9d~yHum;p1@>gQH%o}9$dGrtfgYGJ&bGO5;b}Lk zi(}j8n&H$+$aEA+OrEzqdEPB5LjURIyj7q7t{G8u4Pmk-1~}`1^lg zL}jhzKlfHpp@>_P?)^Ga^e${ruO8L^2RbmySksDzQrM1W#w<`1ZEGFZg(~Y zDd{Ub>T|Ma-dksJ6NmWLL2Cog1yF0{YZ5O!&PR+gKN77KeMY?GTn*Xg@XPeFj2)>~ z+6^zK#~={}^e3OQsJwF0qKd|dngB&@1}5f}7sxeJDER^jyMRPXMIuwe?jun;xT@l; zynbAks8z24*vy7y8*y$D8}P6p$s)A^_1uPdSwAM?y)wE&2w+!lgd5K6D=OSAr3PoLK`IB9K&qc#kL+Q!Df`L_q}n7a zQe)0oAxSjnuA#;^&(7`W1n|`_gZg=WfU=h^7Xn0O|4NG}wz%F*Naw?&EOC5~$J9u^ zfz-&%he%CpYow|#;a`cN$v3&%l%w@T&%xL5$d)GvZoE7cGoVk+ws^1rOPr{Fe+QXr zW3;JPwS@5IY9xAJONeM5j}}5iCGTDP1ySCN{`vY(39PeMfMRy+ZGGVoU*rUy<&mQm z4!w>is9AnsN7Tj;>eZUy6@V0RsCHgl6XH zO^}!9ff`fR+BMNQQjyBK??I|=Ym3x~6Cjb*OpHZRS`DttWr}(;H!5_iKY-DC4zNS% z7`?wnmg(G=UJTocRQqx$Qhg@j+O!R%{241K$89)L#iCYA6iOT{EMz05B;zTp# zG0k;)4fjM@}jvReNb;>_J z$YzN8)3!%$0| zR)Xq|A&}W}C_Yh}18U^uEf!yqxeT|sv7LBQwu0z*SNBLKM~e zzLJnGD#gd+*=$$?P~4q~CY0gH>qQ3I1|4(*0<t68fd zRT9S~W{Ae%@9-?Yn~Ky}^9un}2UKcaN(1by*=}U3_0WN6v>{4X{m0OA39=mIE30gp zsGPclXYCs4TzURkdhVXvWb%DHvxF%^x+K4IZsLg-_uZ*bg@W|rh96R6a%rUMH7}$} z7Z=Le2Z6)(S^`AfSH=jmK0t_^uOy(6AHD!4wbI@&27p_Pyk#V6$i@d!{c9Vbh_<%; zvOAJ7=|TfAv%xo|S_3^%$b9QcMJwckO<=l}McuZAkfG&oMA-+35R?*-F1&GrFg6Q` zvKVqfUO6|2OA__3Kv|+%Y%x-!EBHlJD$Rk_U|RPCk-%0KEe;~9VLES}&;MSNj(2({ za-Wo`7|1v$XI^m0BUG|wQBnZ)TvvqeuIXMl)%PKg6zRfLmbVThlYi>h=^<%6&(}XDlR_Zi`H%0 zwo}`8=-4T-bC;y#uHCx#=-Df!cb~rf`VSbGI%x2ap~Hrc&_;eaYV??~99pYWm zB6|8`@|-qQ;l#?i{~#{|1=PrlhEN$s{E}!+lypm@PWUp6aZ&VZ%7{4doa!|HBN)s7}md6JTTIuHezEf1R4JN#T91#~B0Z@gk_zHNb5O0N;1RsHzw5C}qT z^>=89saFzEj&-k=9|er*o)!p?r!to*DeBuVAfnXay+MtpQx_pZGB0&(4I5hD^UQ(5 z+U8b5rlhT}P>*x-HT0s6+#$-x!--D*9pkg>i&p(__A?yJ_ z^Pb?X+A#*HGH41?b{(S>wMx{to^#3;0JkI8lku^l1+8>`k{`dgiu}uBfI_zJvPFo> zgz9M5Oo?s|y`%PBj;hAH)=14?i8c+fI(oWY0Afi?3xbhgJda1Ve7Y>!V$Uo(bVhwN zrp_T%XauiE5xvz$V2W*Q(u|bC%E5TS8sy3`?+a+GEZH~8jqj0~+eu5v9|(A@MXthL zTU*Ewwf%btO<$ctJEk(J0S8BE+6LPz(Ksx^&~U3sg#l1IA( z*w}JN=5(VH!J=IejWp83@+N3Y$qYMc=X8;sx{WMtEA_2jsGQ9BVaripkIbQx-d&Lz zdk6{2fmEdCQP7>Jw4Q)e8%x?sj+N{f?WmGy(>T4QF|elD((yvQKNhKJ>_V!q%|vR< zo{Lo5kqy10*mTMDF2tke}Q@;Gw5E?YU*ufnV z)dv>9$>LTam0e7{W(&hH$La+Tn`p#5v4x1t>p7myr@1}^pp!w|9Z6{^*um~<_I0#B6iD#Zk{;*kZNpu%f708p zod2k|)Bi?myZo)%&Rmf0Q%{?^(O&qni7 zpfBaa<49;px%9pWtmE=kttD>$p#D^T$ zs45iIS=$89#%h10y0t8dYW+9i+1zvq@|C3whFQ;+$D*WKaT?wl_AL-fY(^jCD0T`U zDdj0Tqo1Cfi;Q=HB0i7DPlR9#WsAu&Cr###P zWGGjhVhA(g)lo?;`3xP%Gq&NGZGMb0Q8fUdc5FLbj__si9CX4jTk+C}ZH$*i593k) zGFS8sC5>f75i_#yf1u}=Ls4YwI6NwszN4_+uT(_&k%We^^?Ri9V^X);q}3!k#^tnz zN29JU+XkaoMqVSOHK8$?T5^+Dz@ct+B0M{j)* zQG_`wFzU@w$MKC(XQ_RvanrsCl=md>2;C5sDKxnxMzVxy7AcAymO8`J2LJYLb8>B3& zCsOq|i3%;G7cf$?8oZtc&jT?H+S|A2TiFlC!z@H1(~KqWQtP$Io+hg8Q;_O&8$uDw z9k&3lYr>2WI2(;TlB43-6EvXw)UeE5CP6e1%8_reD&&$!G!lLh(Cks#+CR|xnUKNbE!>H;M z9nvExSYs}5r3L~?tI0l95dEk$a!dxOl+=RuZ5i}A%Z9|cl08#2SE%vi(1sw8qggt zlhvwoGXRn1fE1x(F1a*0d3}r|~ zTaKumyhY%QEe^`=c5Dm`O0%1T%Ms;pC^5;b6Wt6JFB4*@h4U^%=V4?XX^*ZWRi`{g zDtCTGZwvm4mL0V~H)<=2fv}J>4vml5PmgPJJIq%M28W*h6R1zmWAPT1h@*+Vk}Cn&*qEe=%j{-LB)ZXc%w7$Ri6~T zKDZ;`RcH1LfYA~&H*h57Ji)oY!@6q58kz7G4-oBhvtvu;-R&r3NX z>B!uF@bCVEwHY|UC;!R`R+e;n+6dL<M$8ex@?>o<_P~UHfSKf^jLPV`l6EeYv-9ss5 zckh>+w`hv*i4N}mVhP~4wn9s?0UaZ$?Y@47w?>ifmi4@C5o)R5x*1GNoUgv?(JLC1I{VqnM*pU6@4q<3|6(<* zjP+d)fG@(q+Cf#NvW|9_GwnGa`>eLN=K^kgkUc@*g ztwQred@<*X6;r1+V;9NS~O3%)}Z!Z7J@A*sc-U9?8wZMm%Njj!$^(w$PPu8ez*_pTS=R8e;5_0 zzPmrZlpWtB(J$9~Z3*)=I)PW%u+f7El>^ITHVSf*GOX7S{8kF|nv9}`$F!~}s@^0v zF;{*Ag<^Ol*pi^~YV@H%L%(u11zMztKZLq6=!lRm>F35Fh$6}QR|#l+ zgLbrKO9fLj)JwKBN#$4Np=i_F5@o5tvpcCMz=q}(PKu`gZt$aVfbg#Mc?qS$F4lHr zh&x`5pk<=slZ60D9(3pnD2Ty5g*%cycw{o3Q%l;@Bt3auT~aVXLwqiXUDhPw*~oZq zN27gyv}KBVOuBGKlwmt~i~7;Q@DGiuT`U*)WeNplFPF95L407TkRh21J9Ob9MDuyB zPWKpL_mJf1vDE;vQEm`S`pWF?khcm^^_#QPFkZb`>6tXb(IxG$z^*j5U4V+-4FgBM z{F0P*%mcun51eC96_v9Ai4b?4^ChZS@R^P%n^J#GPjsd>Ic5i0xPEJ6qR|3`BB{5t z+Yy@IF9n5}*XIf_X`Za@LBvshI}C66>64B$Tfa7dc`K^6DZ&Mjc^(E%v~dSJ6M83X zq#&c|cDox2=$8Yq0-#i0Xj32^r-I&;tBpyhw(KG3V6o-BIbX@VZNLN-<;n|SEFDaQ zQDOQlBhnn?K+3j7+SW_v*vH)kUw+X;L6wxLor(hnqucA!=!unU{mv7a(bEy+;YYj> z4q^QwBrydC37oKQq!sIt#@mY7(_wt}f=HID@57kXZ?AN~_+_aAc`rZq6xL(yI{YYYPV%+Oy^$_PJTdnL(I=_?#2J@ZT~1it>oD0_-1_lrurAjv5! z8WEbTlH&s3>pU>Z?CzKvV`iEi_{baA4HcCATR{_Y^J_$CM?`YsuKD%?!kKG~O_r3i z$AgHLF1rIpcB%1T{4iS_KvYb2J}sn)so!nM6S*Zk8s$|0 z)QMK45pb=$`lAQ=e5Q~iYST?ng}!SRKxF}$Hg8yo%r1*YkNysYAN&M3HY%2}#fj|v zJmC;Rx4|5u73^}=WhW)YYuXIJpvH}`>!NYB+!)|#&#=T)QFrGm5Z1J zHZd1>vfSaTULbK}DJ-OmY6)`8jAaKVl796$nvU7h3b;c~iu(4Y%U((BN#3C}-26cp zo7S(+vNTbSnYb)NWVc6;c_r!%vTa$CRwvv6A~CAhfc?prj3$@VV}y^)FE4J-6wSTk ziSQ?ViJtV8u|EXDuWY^)&6&eHC*Bd&0xp6fYPRKozWB5_oa?u; zYB#%)g`)93a9$*%i+^)`DP}r6B}r|+J2y}}h5z=VLVOvKvoj}_G^?=D-NaAup;(JcyHcn|0NZxdnAp1 zUHl=}rA*$gqtYpj)(*zqoB&JBm~s{-v^stg!rY_b}R{CQBo zxVJ(`ljMsBy3i`dsBYv6%CWJY_);zpLmX2yyYbj?HSsXKF6Oh%<}JxHoQJ>+*4y5) zc}S+U1@-`l8sZ~4lDuv2DEyFzxmt97(|0~@{Fc$eNy$hLXiKdZD{Du4M)UTzR7oj! zLZy0_yV_LA=voMoMoICAY(?FV80?^a_q4)BnL!iDVN{wlAWzYFmQH@Ywz(x*HHVh% zidU@J(e`+yJt+*2Rjkn;F0BZMm8{Vco#E|C#;7*%9wohXp{aO9d#6I+hy+te!D!;w zgL*2;TMqF>y#@FTmO|us;yf|}t724lTBb3zY;u>4avu=Lm6UHIX!XNPoJ9j(^Pve1 zIPNBbqq@r%WRttu0`TKQo53ioRqsq80WLhM`qJ9tK_dq;RlN>~O~&>P(bmep71EfIYGWPqag z*noIxmKC^D&XpH3M5W!_F_?j$;}B9&t~bJqJT#`Y+0iDY_>(=-|Yhs>QZJ`C8KVGj$E3kiEr)Rl5#_Ox7d)(iEXEY zRr;O9N)o@habgOVcMk5);I*pBzM_8faw6tCq$7M@c40S&MVauLaCv@6A`{i#_3W7S zS|cZN5t5RxKe4tp^e9MEFJT{t(de~eQAK+=3ft=UMI-`@&Gmq6{bfuvJY3_ObYEcE zJam|7L%CC#Hg+WMhkO-{!e3!(l=?iv!y!*?pwSn8Lb|BOHxyDp0%|F@Wf`Izy(uvV zPHe5oAW-wtA=^ppkhuZ2RmVnP1zzu2dvdP(TD)MMe^dAMf7N?^{N%T-b5KO&zW%9V z|5UM%&VQ=dKUM6XD)vtm`=^Ti?{7~3YZa@Pw!Xo(w;Lb5*z^Llq;I5VcEh5on0B7l z2>+fBt9%(afNZPlRj~o6;j%>Xnl6OrIzne!(_S2prsR%l1s{?RYYc2h9<6!zDY;xM z!;98W)qw?;;!A%wcP{<9+@H)Wc6=I)Qg*8dY;66f8yRG&A3CUWIQ5n7>MQngng}CK z6D{P!?)u82@nUOuGsddD?wnj%p5Nn~0`O()Epm1B#r1?VNiTh-3rxP#1IUF{*L+7V ztQ_&A1UfU53Xs#+!ZI19jhMY~VimLK5R}e8oR*t&omf#+%N-NeOWN9cqfyMjg?s5`sCA@-*dU{=kiYE@hjVsn^BR$m&lQ2L!82?2-aTl zg`Hwpr;?1f{b=d(wLc+BJ{ZxL@{ApD+(h;8C>#8aaWi4d*B*>jDe_}Y7@crov7ToP ziJHmq9+yfUvl-E>;!LK!YOAfR?bp`pb za;ts*c%@BRM=L^I4%5a9Te{47h${ar+$g1FN-D;#oKA(8W#sr^Yg5ZfNqDV?-m_c~ zr*x-PE-X=ED)cRKJbuVw?_u_u(*&%Rs!|e+b$JQ1>5}qGp$4u!niN}D{81! z_+)Zc7q!cER*x0#2~doc8k{)e=3AKV%86APcFk@5*#@|8eBT*`&3X&q*7Gf2Vu#Xn zcRTyM&Z-9wqjgqu+1%W9R`YoJbd>(+u1auMDGDGrIcr1u7l+kDWTzk4;hfxEWseYz zPVP1hz9OBeP|6i;2WZX9@A?2sYUNhg6US?NeX{tn?d*3xxvcV~erWHb%c|C;ea}XL zY=l7cACGo`cgw!)0jJf7=#+@%=C5rw4^gWf12pT4PY^QS_JDJyZOF8x@ahGh2vIIM zK#1d&gBCc9vrgO7MWy0T~|!s%hKAMDryscg?|k<)rJOM8@6=Oyf9qIf2x+v!8t`d_6??NCJ}U3o8>3Xc=h{ph3~qx~Sr0mar~P^bL_+Rq7LFplg=+}+ z6zh#K26lKx-@LUOq8d5Gwq7**C)?6+s9`Gl)60z&G7wpM+m;K+^-fbI zc&FH10NM!?Qghu?OhC9x1gOoZb{xL5p5Sd)M0lqN_Q>6{V>lTLkF@>O{H5`j07;o6 z#X)Kqb8AsNMm_Y_en^zluF>-N*(VsuM+a5EaTN}#aWOmbf@l``fN?5^o7jNb8{eQM zrG0zyYT=;*9P&`{0v;+*rPa4(ipI0|iQu&J7p9?%hof)h_A6|J z5Yr?B z>?7biIi@!qL|2#H1=*;3dt!B;ap$T-=9nw%pa3#|;s_Nb!hLB5Y?kF|o|DQ{$D9Zob zc`oI*16|4=PIM{%BS*Rb>c>-EMBU_)>aNyjE}_=5T<#g>lQ>e&ap1^ZTpny!NP~!0 zCnJ$3VauxFiY>K6uX%p@-s7SGsaJQpZ-Ih&UZFNOlXnx%xg@T-`Q1rDm06;x~hlWnzSw$7jizh zWAN&PVtq>tIpuY^Ql~EaXK&k7=7;7_PwzC>N7kSDKu%lKseW1iqqly@D{h#wHM~;y zF5DJ34|z*qy>B|KYs%kA@hH7Ye7@UxNxOQ@FCGpJ^4eZ%a&U7muSSP5=pqE#9UxjS zf|j+9w5;&~$dx!(w~eY)Q}(u;Xw z@8QcVbNdFqv`)jW;mfE~-ozJkET)YzGoznCTq)~I(f%XbDEE!Nk)TrFCa(jc7Bg6`OzIxaSMa*km0~s4qDKz zaAhIV$6v07AIjTRt??zh)@_X5_y6ib1;*bjgfBgRCPh-!ua%3U*m_d<(yzh#;t?SFacPpHxD6+6tv&xPda`vPVY)Aw81m1a3~8VUqzR!+^^^GW%k%|3S&@5EI>K=%zRrKPMy!g z5Y0?SI3m6*Y$5H_li!vujAF*MfmmiK-&9EQWkF-k)6P1Jy_b``p z=o9(61S+x=)V`$ibnkp;0t&c03dh73ot=E~K>vlyhv`L%j0>2)Y|xUs&h|407OZ@# zOsm;rLBeX6A!3u}S=CA&t9qB$kR_EvpN1}cyJtiFZVCF+evdwE9=5#ehT``ZC!_B0HATMJT{^dsiRI$w zQQ=WuNA}d*Lfu8o>fgRti3vvLZLw2IQnOxUV78S<6~NR@|+Xxeq`ndkL>IKpDI zuZ(P#^9b3pNM}^^ZU>Pn&36-6d3N07G9{&s`yId_JH51MI2n)y0~64q{3x8*dR`aX zK$Ue*uVLGjk!LmHjcvgPyL&i!qI$L07T9C4&V!)SLE(g!X1KQ3nm&gwY{jky_n)L{=#^{5{ z$m%92IGlczOpELvVAN{a3j{+nEB}yNzX2KlCGP_3#*SM^^^&=lY>eAZqo|hy(@Ve1 z)A+ZH1T>0k2pU!oMp5&Rib8>Gcle6RhIWLxjf58C#5(Y~nXO{x*$Zs(WW(>ES*>Ry zOpN65v!~9pY@DIdcl97sZe64e#?ILj0~kePq)$78rD?Ibd6Jx+O)_Zr!2r zbF=AX5J?Rqov@YL;_WrdwYSq1oe)LzJpa(OPGqHHM0~4bE zI2m=-`vWX8A5@sSHQS&8b$FFmd`=})P+p11HCEA@m0WTrl~@@=^N>yZ=k+fSp|nvM zh}0@Hrg6O3ha&p;PC%2kqJ<@mPcDSMdmcyo`A9S?Q#hpBm!X&!?Rql6yfh3max&+N zXBPG%`q@Dwt*T%jFdN$QE@Y{>JMVavU-FbB?xVz0B=BP@oCkW9@A_kS9f}JouTFAY z5LsOZn$(#iM^ttNQXlK)5h!az;G`Ha4MA&$lm%Em3_vn*VPcxdww4CU*jEQZQN~*= zg-PlrkB6Kl%3G(R0lm~JG+<=LqL6ti2+wK`E%li1;DhsOGzKj{eMbYG6$rM|&h}9G zjl@?b*BQmMX5FZm5q5!34gw`8BUVO0;^zUr^{;T`1cX`=1z^T|4&9KVg zd-mFr#IqyGnBZ{NlYCD<$R2Go$q`khP3ZEi?MThNAOTS;N9PS#$Q-14;l9F2-tfc{ zm{BVRB(1a@1m-p-9k<1aN?Ha+Vg#&&dQ}3R-SP|()%{Beocx{eLfemfN<{g|PI#7b zwUsAD`LNBB!irfud|8;&L((Zm;aLxIb;|$7We&gH=1{BFf9*bp|HOq3-MZEKc&9@x z{QF;6okFW0uXdmtx=AVJl(25Y0hpa1mC`F$vYC{tgGUn<)lO$~wa%B&B9b}C7v42* z9|NL1h*d|)oOX@qUiQLlNbI`__h4k0(cwf^D@g=v1<#NGtTP_Za+_GBMv@8PBUj-c zk#{^|KQ;2T2qnV%*C4u?L~=@9TAYML%~4cssT)$gQD3B54u6CMe~N%zxfo3ucP^uKwlXCfj}@VhH2iiz1sM^Suxz1>$w2ChBg~Di%(>NVx*)=JG74#O9VD>1BR2`K~&%F}Sp}e<&kjl$994AHf!%AcuwQ`Tp zHT@0^E6HsE_SXO&r zc2Mrv<;Z6V2ay^*Pm@$zp9RitREd=m-occ1l_1a?S7yGyxROx z1Y)bhNY(la0HQ|cQrY|FRK(*7W`j-IZjsq~h}hJH1R+~WJudSDsp+#wnVQF6*w*u^ zuS3D^rBv#m5`}xT!7DHb^D*uqVg(%`qIviz3L6)1`KV(5^sAoG!u#yWclfmqi^-p= zhOpFT(!NG-ViBz#E?0+|Afr!Bk3y={j}}ryqaMj`ZG06$7nQatfOr3W%*E~ch(*b} z1Mqk(*W#++4hT%==KxaX4H{^HU8tzcw4xEVqyTmFg%{AJukz7&^Ib9qHr1QT?RUaE zJ^LMGvAW&o5RL+b!jFCH09mF^N29E@H+s#u3F0wVg4J<{R5^Ms)eo~V7iO!Z)|#K~ z2}W%FCLnMZ#1RI?|dUtLx#BT7O5fjB%Su?ebA9aZ%wI7p^@RWz-aIz@_O;8%F9wVp&peN6DF@tSCn ziJ>rFhJ^x_N9 zh#4}40L)jI1Wbz#c64061M>BaB+!*6g~09&eN0h(@*Q$n^MVN2vVar7m-4}j;@jRS zz*Jv<@UK?Lfw`#q75Y@qhY=KQ(~&K2^?_`>qoBHcv>Eo!$!8Ise%$ZDc)ucZ?-+hh7 z<#In`^yZxz$At*q^#?#Lm)Ii2No?x%f@iKLAr}wj6&RKh$TqctO+;-$tv3-3{L8;{MAtUi%3#=^{TI;95BC4Kg5vN0`#bUc|CLMe{C~R@&;JkC;`x8=|DU=T z&;Os^jOXuv>!SnZ4=j5X!@rP0|N7FG|D; zot75?D`?leh?c5$26@XnesKk_7_|l>P>P#)QV`x1S!9+)6a$~TQB?Qz#=OWf&YVRZ z)BFLFK+Thhno6T;*e@U{@!PD_rsorgBgZ?U*Se@IkE{&(GCKyKyzUx{_(lU5;gYg8 zuqYzNY+Q(l?)1ZRuUS{A{$%FBbclHaLgG#l`(w@hM>*mNOL{g zFQkcTuO>uQJt`t)zXk&`c_)#k_HG2|*&OBtZL3r~Cvg$Hx&jQXj%kACw2bK<;Bn>F zB+#<{)n;(3S#~crv5xh&d1Fs=R{Kb!b*dX~<@3KKUE}KDdq88_E z7eu8yLNyW#`jC&)5z$(a2o2v7opV=T2U+EKihB1cJa1O0{%Lbg$Sqz!{RZ$WVxr`FR&wNqJ4 z3M(5sM#Uk5)I3}|cx5Jv%9}`W>#JG-65T6?CVuT%fS|WPq>(odC1d=3+G2D5lzLDK ztRh6cs9jnD{iVIhE{M2Y;Ln79Wk2BsA@LC0QZAxJb^foIDRwj+G3Os3d4lF}_ zVbB^wJTjK&5S;T}86s)wt~?wDRkWGIth(pO%HHtkjP-UmW%L1=!H$9D*77 zbiY8clcWJQh>=Jbz>74LqyA?nGU7ne10%wFt&EzD|zg71v~MQR$jUlUT<> z05rCtG^_C=r5Dp_4$9|xxczrg{hi)Ol?L-Mhx$*+=@?840x5q%VBdUq)doT@6YP^J zPRvt`Geo8IFgqqI>PO@&J>iMsY z5kPp!$AfK5PUUs`_#9Cih=Urw<|5akB;n2YMsNNX_2mDdTVvPbPXxM!TF-y{s|gqK z((0GiSbl@mFSdj3b&i?&6eOy;IYDO?TKyObPpcUDI`>8n!@cAAQZAq+0qXju*1;vKV3B>fw_Z-Hq z)`Kz3n+vdxY_2Q|bn4fiAOt$37>UZ>DL|_FBtJ^)!hH-t{bDUZG^*Fcz|39GAv7E} zvPsu1E9T?DAG~El{iU>|qpl&lRS#`%g8*Ap*0x?`8S8z##f@1mo&h5JiDqA3S(Ijf zS|4Z3zSbbx5yD?mNg8e3iMOm^ZXk4fYdjkx>f1Fqs9Bg%qe-AG1&c5-00ik!6PY!?W5GpacI1K6=u~JcsK8VyP zS1(b+X4r?xDPoJ$Z@5eeAm_ywJ0AdJQB+En6tb{w%z#SLPHY!4z)#f^Q((>Z^U2`r zl80?>M)*b4y5{=9PO+G8tJy0`4C zGyebnHqU!p&eG4;Vj#_ns5MZ@66$v}OK+^?Y~?D`YUH(Q>aFvF_rRp2Wzjr$FjeR_)`n z$vV~Ft)m#4cB&tw2ez7o+{bk4RolU+`VfRRwAjuiX`5x~eO7d0olq2|)E1A)z-FmF zq%+e?7YBiBnN7f5YNtuya#=5miDidNfWgf<*{G*gL2yJegqP1iwn}`1U#QD#^$K$# z5(_9#63)EmRe%8KTsAL6Mz88{t0T|v!lf$8!ys}D)LlowEt{};0M`vh6yZF)&0jp7 zY4~bCSnHB8&GwKs2|LiC$$-y1UO8+-$%ysXymROXO^xDgBL++YYN(s6oAMx-a%VB0Tsw&0GmIks|Vr`uHWXIBwr5>D7 zj%KWo2J2EU+4wn3kJ~@p0TNy|f<)5%kHSP`{Wc+0hdd?|zZ7=d@$2IqBJXN}FwkfB z8c9PCcOIfi>Fp1wSn2k*JBY{pjBd;xVK$9+;X(M#q5aQVgawnKMQ<+(MWmkZ>w#+K zod*b)b(})@n)MPzPqn&+5T;&QD+pO;JnNI|61G1M(!t?e3EPb@%PTQfxk5NRQBf~; z4WS7Qe;&XWW^p_g-uCB#uraFUhF0d&QnOk0OM4QIH;yEt$!L0?OBI!6y&!q?S7j4@ zCB1u`CpHI}9j}$a*gN#Z23+k?jZ#Efo5}rQFZ&`jU3bH}S1Z1T7p3{0g>2Kj1acpz z&y%3i%$FLbNsp)tlg{`)lzJ`u5VWZDxQ>q06AK`AWXpFXYU)e`@{L39Eto0g!EPAT zr@s-hBsJ0f26sp_JFm07l9=B7DgcnH*CVuj?Fj(X%cpHQ__IhIaF0+63M(5|584@) zPIiD}I)>7O)>(58bZxd=f00ZTQJ-`G^^_B9$t}sYk#;^?+!lfD8@P%VGdl(NQ0v;x zVh+unJx&3^dYhuVfnddKPg?QaV%YQY^#W9J#aR^ASlQE{Qn`zdfOU&lA4t;t4Q$@H zqjx%{-k7z7nD53cTL}J8(lAVdSt%niRb+3g*cA9huL(hyrX*svZXXfS-I!A!rf^rp zeET0mtC`2k1E)%zBLG%^?nN~MGSH_v=%fwIs4iVd=L(D=xqA@SU0E3-t}EsR4`AR1 zyD#qcZfJ$PVbz=wMdu&(wu4rBCFMhe&P*DghE3OuiJ8nT&X9cpTKB}gly z1IZ2Z+6o(pb8autj~eJpX3Ezcz?N)cJf?yzo=T*?;tchjlt}3;@{i5_#|VyL{)uSk zRwfPp_E0C!2)w>;OM<`je0%_3#n&$5)-@T%sQ$WF9-78tuTf2&F?oClpM6sB_EsL0 z&t2ruh9?6Gb!|2(8?T?jiQaY7lEnwire1b0g15>}mlHgE<((aikQ|h6e0k>op5rm| zfAa5D086<$9Ew>dVTZ%QPdgl>++CpyD<00>Cw|MaA1r8$8h07QsA_)jJ$^iZkh7#X z7%e(!)pd$on;AuEwMlpHdlnQE|1I|QNOI-mAE`uxMkkRM76$$o)%d=UlE$K_OCV=s z2LL}Z8R2y9 zAX+qMm=JK1a`ypkcGcoG0{~;<)Er<%9hdR}d8XqyU^NcMQ>3xQ?qe8)+<^jg#{1`X zl$soQ99ahbN(@j`PdY$gxYi+gf1)hFFw~hgU)+jc%9746A1fFV%fym~ucUasIf0I4 zJqsIEMYHi;2vyT3nu0KoCqpU9i>keY(QbUW2{%(zzP7`rUgUzqQS$oA*hRp){;Z1;`#1Fzq)IHO0(MU>_xsFDRdew>LcjaE4-KmJ<5Wi^; z!h7QjVT#S=;kHakFEH;pbeHmVI$C1W17FZ!gbE}g8vJY`mXWYpNSD<8V+q;v!hS-I zsCbS+8%tY5=&GqX4>0N4fWh`SQTwR{5U*^caFDqgnii9@3aQ+qJk`3t$i5z1L)TKs zXw?t|_N1qF6nuw22O*kMLxEoTY*RSER!vCZ<=VKRSrM@F1(ze@kCx)H=i-T=oDsi5 z2xDs58}IS~RdVIV*fWELUVAzsfc7y-*bqU|KYaQ+a~ZnEZvgSi9khh=VsfzqFJr^W zj@&!tg%jje+j`-*t1)B$!Ol_Umkrk6tQ`GwdkMLh|C7Ole`YO#BpIsJjjmSo~e_kd=ZoTb0&~G6llC;`Q(7S>#;HDm z(1OytoGt@*UPc8ilEe}>C9x}lRf;mA=e3#oOX8=!EdZF4rELj1UL z8>n7;UlV6YJ>mNqo_ugDagBsIs|kZB)hYsO8075J1Xjg9uZfo3I1{J6(&SVeHRquR zB!0g76e6&-xQ|K*1@NJEC)x<4dYr);2SPCd+!XbBuW=7jbHZ6Q43O+QAE(%AVg4gl zqS&+?L{RH=K!w@vVPK67yAF(qd@CMD`O@b_KT!7bcN;Se(#qXO(8ekuhw()<&N+cE zQt7uKiLb&sMF1M`#l`_%3L8!Xkg^f4b;;0K(Bzdz=N{O1t+Xqlz`H~iia!JJ56X~XJ?vMQg^6jjo3gmK*jI}L^td{ zL=#c2@P_7%t{NK4dzVhad&hjhNbKZv?5&i-$F765zvOsyGVnnNou+uSK15BLF$EY^ z^5PC6^}0kF5wX@cxQU|8+Clr+n{j}2_g2sr*dCvh1u5kjfZ8m1DUH^px9ESV<~ZO& zR`Ja-bh&WGU|bGiiz0x>()btY9H|Qy*6=)%9=c`S|%fL+Sj9DCSnw2EM8eWTi z7&f6&?n%UI`Q`v(sdpC{fkbXsJ&NM^d%e&FVzqqF@Ixrt6^&sRQ*{}bZcvt{6|b+b zb5e<6##{s7_%#i>eXWkT!b>%`kw9J-Va&jm@g_PGP(512yc&n@=NHVm4uP3`A5ni+ z#)1)NHD%0RC0{{o8wC9>%u{9V0?a_U<&{`b`|LZK6dBVnhkrBzgY)ffA%^JP9}A96 znTpvdjZ4BT5pLk@2NEKr%2thgjmq+cPf{O6B^ZI8_MVGQFv)G>o)HLC-kmuA7yihz zqW4en2Lu8hLX_=qR$-mjd>Su~7jVs|`F5fh-L?|hoKIT|vqt#kEp>DX@!O;&H9&#> zYQh9jF2N|Q@OT3mg%yo-=&n?~09W-mh8&p4zQqJrPmBY67G@b7fDL@(-F75&_<>z? z=mDImBoC~-It^E9SCHIzNYP+A_`?-%KB15!X1MY*B0JSrVB-jD;mA|mL~W^u5S-#+ z_LUQB=RhQNH$Es!>FX_osrILsnleu}b%k0$VVLT#Oqy*5=|XWc*0a*30M2y`a<_|B z&_;1uVHCp}XsC_%a)F+d3EnYi0DtRSYT1b}G`mr8yo&XH1#KmNPj*|C@ukon^*q>9 ze0i!TpZo*nu(FX(&Do89n6c`vF_gYzI$XZE3|Fc_EFs<-N8VcY+>K|)+DuUw@W8sGbj0X29+%CqkUaa997W{xX3Sp1H-&I$B=6H%ydMaEtuNu8Kt_N2Rjfbmr zCIdQ}HgJlNsjmSw5y+QJMRSGbpdh6zIC2;{RUmvV9UF@?h#PdiuQpgoxtw<sm(>@E0r~AO=WzT2{X3?l*bsqK*5RUt7 z(@2m`+>6iRUf=|%-G3X4hVXJ{g3AM4D5Fl(;R@69!114N8A2J@{Nai@8I(b1oM?-jgrz5f*QkDi!?NH= zHcU-^X$frHbm_QH=G`?{o7o3wQX003@+(fauulL0{cJ6?a>) z8;7AK5(D6O7?AXnb3QD8gGxTu(zn9YH$t2jHD^9p{6bIx1gnMa5lQ0j2ik4dD~cyp zr95svgR5+#m9AEHS(;;z+HI<=$%K$g1qvEU5&`TQUAz;gJ1oe>bvh@1y;N}x&~mWvJsF0f(4V{O8u~$ajOt($E23dt|0)s zsYfUMWd-)nS%EF>{q$=zM`u)G^3HhbMPUf0m4SbDz9tZp_`#nLouU@Q9BEvY!1iQ1 zi50HbrAc-Wh)yo@kq{kge3p_W7a{vdVom1>;_7cP_`-XzUvW1e#sRD|`GXzVN$ySY zfoTJ1I2Y35RbA*{OnFL>NFDJ8M66o672-(YK@>i{D_pr?NtEftW71bpaZCg#)(RWwxW=;)YRfmf1tceJ zxkC|KKw?gt1DXN0F6JY5pNo|6#XPvuz5`hNt1!J~vWhL7+d()^>|6>YoU#@?6|B~3 zaK#;asSjF&!c|;B3~1E}03gf@{BkY78Lx7wl^_AtAc6#vm0$yZ5^xTL=PtP7U5p7Q z93z&An!6e8V&aQ9O(w2%wLy?D5OOn{8c>&dUi2l@&2R4xSEw|B!WX7dqW*Z5 zUqWg`s~)FryhjkbBNQ{7LLH&TfjDw|-c}{#vI8@fQ&Y%n-y)FjxSCZIEEzTfV)zDm z-j<34SWeZ!2cgYu^pILNjZmG`nSid6LjbvtlW1v7z(*QGxJ3O#uvkdjh>y>Sis9b? zd~0!68DnN4DnV)W0jN$g|3VX_HJOWZFHfjW+!&8E9yHNZ9|Gc1(W-D+p%#?Oh?2Ai zSOgjpd%q@d<%q`go_~Hc;(HYWw@5BH8`<->NR&$TcAn6)l4uEwsY#~KCHp5E7MQ$> z#H-{vrDKz|9y5@Ivd{`wSa%4eA9m7hdzPST;!#3tRpChJIIRksaax7sKBOnGd#*I= z@3ecKP8j@NbzLSWcUegF>595(l|pE(x)5X!Ck~;^sn5jT^a@!xMO4o>J;4@#+d+8@|g{v3T?v>PFVPi-ktn>zTbVk%W-r)q~d41iX9=>V-QbxS2x1YVtEAr^bLZAL$Pp~NS&*m zi9m1&K#o?K3ET#A$5c5m64441&GLJ+sCztmBRmSOJV8=b!7lLDfm~xD(2`&#a5t4I%Y(zlNC%kUE z1xKbkC~}dDL|zXj6t0H!QZ$!gY#Yov@Wpph^u=`dUr3EInn1J-1#sm(FPNdBq z6JG)yBxq}) zFnY{8RF?rOVjVYY6zl*h8qpCsI0S&ifbVV~7G+X-^a{VGIT|TVjzXQ}qx(>bWK4<9 zKv&*2;;xJ0mZfdA1Q`oi-o)bRyfqp)CH(~Gc=1gKBX1DA`fdTBkhrH9LNNX8*!bK+ zcgm-4pxyk0N;I{UgSup`Fr|*56^_!G(s(!IC=c{9V#u~Vz`OK=mk|xgcYzK_4puv^ zNj0eJH$gVVAf)9u*}K{2DI@g-RrB0^I$b;eVH@>$;3#x~eD*cidg6&V%oLV;jiQ?N z0YEBP62i4$2DX_M=isY4qyI9=_9x%&qY?X}{3i6gdatz+&F;ty(WK%Z1!Lil}aV zkLe*9b?-TW8wOX_ZKNI!{{&aO7e-lX^yqEA-yMK5{t|>l`0u;pDu-(f6iOix1V9a#2P4l{AoX**W?_OUH9%=|OXkFaGcN_UtczswP=2fi z^KBb0KS7-Q=OIATYP+TV@JU&^nAS{%!6V={sg_BFY<@DH5|tb}j1mp04w&;^#d_nf z`;)dIgPPN&FV2^h%#Bn-_GWNnc>IA$oe*6%{75HU`*%qwLuoyr4?d|C&-TVAA!!|O zHovh;96*QKE|lsz@ezUAE|t*|wyr`ln$@r}cw$;3hY%<^UA5 zR3unC>J2{gX+p5Vy;(LCdCFt9k=k3OgU}S7JgaC5B8+a{otiOmI!>~bCbk4rq?Y%m%bboPt@=ut|PKxRT?bMFS?`ZANXHimcPJSUT(YQ=0W$pjl6}`4x_-VOiL)e9`!t z(5zRn)P(ykXGhj3(_l>7iVGX8bPcflnA*7f5f_ii@e%VH?@Q`mQtRUDUv|!!PFqTZ z1)hD@fANiD?_4(6qHbk!oY#bDWACN?u)1ljxI;bnwbza)9OJo&vQBUC13&ecapR-G z)fS%(-n?>s>-Ei^HC}wH(~ig&MaLIh+|V((+mR9}luJ;ltp&mkJmGy6u6?&+vl@oY zITdINnOAW^&hp+@I(xTFzcjqT`j)0*uZxA&oiwOi>C6iu+YIYQh(a=bb9TaC%l)tA z{?~HA%qQUugROJv5DVD}PO1JGJN}_IgTt8!`CjC!px~4{bxXMTLj5K*_F{M)Y%8RR z@u2;6xbEr8385sCAeV1wgFH2KuYK^JIa{eOUv{-JlZr43g(3F)Sx zd4zPyCbyELlG+izQ4xzTbct+PH}J~Kfn`cRaW!nQ?e|{~>m8GvgmiZEm_HKI0n=-D zIQL;>&86RU`kIiozbHDl;IhUQ&rG}oLK?XQmD*XLg3D9h_aF#q$BLGgdG(STR$N+T zVf{zb9{2KYo&WMzg!GWrZL;r$>@sA7kWQsoz5VBJPG1f{ZMKe=t+LhXAsHzYb%tSE*aux zT*n`AQp|~GkCMK-rG_dHyAYqI4IrwtF{IsKD!Orfie0}!SrjU*Zdr%wcJxshZbpk2$yN_* z8w@Iu`D{WZq}uOEOy+$57+mINKlzWO16}<+(3;XR1vZWhs^vj*lp;TBNgQPHil8hrkmC&nF(WwC_WI1h%`je_3>ww6(PHy-5km3U%(nvo*8gO{HGZ=+}jy4lYN|z)&kK z=VFs8J&`_Qe*K>|qK5rJ$8`K$EwOwbB|0 z1E#04Iuc>)%^Qg@lo z*PWTtUsUmzx&4=LElaD$x&?8$E1PJV8q^6xno+T@ei;jBrL;W?$rP!Te`8vA>b^9p z?Izt!DfrT(lP}7l|r0 zTYyBYMxT{cHG+1Qj3UHUHmB6g1({Z{bK#;Ae_XiPfTrma<+bMB_8{q-gtb_4gZe-O99l-bgyse&g(8 zKHDa=t~k3(hpX3Xa2s#4Ug>C{4*Fz!$v*Bce=pS&lvH8(5t+fvQW=RGZ7ymwir*_td3q1&&~EUj24W(6=LT#0#{ zhbx_kjpu-`2%`bdU_t?TfcKDxF~CKVrqLO%6Zc}QhNKfF&O@;VK|gO8En+9`g_3F?*G^S6=F>DWm3k?x7(&4>9gt;K7G6K=JW=g5WyF37n^quJ>0ajmz(P;$4K{T4|l(V%e5Qt?v+pHUcjGz z_>c7EU0i#t*^IbrHd6>54}Bqz|NemNztonE5y|{&MC|AiL5)zTYt$_U5GV%m;5VQ! z4Dz&&yWv4w^$r~u5csXP69;Vv2g{)Ls&N3IrD4=IL=c{J_eW>{HXiEWx_dBI@;3c` zd{cM#*hx`-8;{5+k<nf{jE~LOwMF}5BA?1O~aIG{7yhc!KL6|@vp|!yv zq$~vQ6;?g!Iahhdw!~;vKDvU4Qaz43!TqAjCn+OPNR-j`l^5t2U#9~+d2L@1vj(;& zj=;IFen}$`QE#4t7-SzId(E8-qqt%cBbeX=<eI*23*SrLN1^i&{v7R~> zz;un;w`%%*S3j6mw0SX?dGChfTUqAfj{v^_=6c(=S$n<4(2}{&3M@eBnljyr9T+Lb z3X+2vmYLsshA!Sa(K(12F0|s+5pO$FRoSGfUC;p8JehU}{Q0P^@L0(Ppp?r?g{szf zjUPkfuxh!Q3b zZ%l#fV^ZMBny!#|0bx~=L~~eF6C!NnfLMYSs823N?dT&IIC($3JMzU0l4!Enhtn2h z)~p{8CSP3Fo5H+sHwb!-Cyt`>H!c~BFwoT?T==p5;L1g3=&}sL{zeHPOvHY^;PGF0 z-HPJs^(!cD+)kp4w3`wUrVMu)Y(@o~wA9wpX&Bsc*PYv=4xym%@CDl&leBc|cCj`|J8xHn=SyF- z!E|cW@I=^xyVLZ?rkOPda3f+7AOFYeQl=fzFKQdIa(}jmpll(_b-J;aC=zMD!xUnA9(kRmwV}a$*(RCJx&3iAdY#=*&qA+ByDrm; zQ0s34RcFAS(Yc(|e9Q1l_{j*WjrxtSw351S1U#B{7+~z$fFbgqrah1n*qe4eq9J}f z21W8a0y>RtSlMj9t1biJ zLIyxVp}7Dk;?uS>D1))X=`3hefu+cR&-h_fUbQf<402M9N$_yCu>>9<6HQG%y)BMN zIBq~k`~bkftmQ-%m>l;h4jY3Y9e;>UeX54wydvX=>5wyG`)1(;NQ#VFMI{^!Cuk=G zFWm%BIWD$`#}elyq2c$_gL$p-Hl&p`=Wv{(!woa8R>4FN=ID*KC{(>S4W+S{xhO|b z=&BFfz8c&Dap|(}L5y!)LaSB!ZdwnDl~o@a6NfF*Nu1FBC!J`*el(HBNPKsz!@t@m z{(<=XH=+myT+d`Qw9HFb;XE*D82p>$QKR8W$&frMdP_I%2Uz&*+DI(ceDs_GqmM1M zr41j)xQBh62PVrKl=$O;Nk;!A4Ni~D4fYv-xZR=w`w}-4tFu_2JTzQPNZvWG!K!@6 zb1EiNF7BJw6ewREl1JM(NveCW%=CC}LE^q-e(+e`;vOx$o2FlM9+=E(5KYUi3x?9C$g?z0ShoRv;VGkE;rf)ekROpiBco^2Xm?2krsJecNEjMapZ$Fh zCOl=>9T-@{Q(5?=LLZySAnF5q18DM-M&n3Os)U<63`TG{wb>G2C}r&uEC}(%^&VgX z^?yhUhK0vt?i%FqE{ovtqdU=*3@$#LKJC3k91MP(05AxfurVgS{)nE`EaCAleQ4mX z<-`B4X^yp;+#X+`k}D!I>^uqa;4J_T&kCn)Fimh_h3T6BSIEZ%Ez|J$8RImU84Yxm zmcJ{@Wq!;hhw?(I(glv#=2`oX>VbI9XaJw1hcC=ZQ9LyQ<1|Ju_YOsvR?-ykV$y!| z1gj=AU_=vN*F}^YRI)c5?CU#rR{pMe(HW~j!A_I~Ypgk6TVwr`AV_HS`HvuocXxMg z6!x7V5X4*y;og(BY%gq(U)=72Ree9501)3}C;=e${vrU7dhy;o45ZlY6+s~O0e8%~ zN?}d_G;=8dAUTZm>d1ENkPUpL^#p+UGVAdJ{X&evuRxFTZ$Xc;V;_MY;K47T2fw8F zv0uZU{+_6%D84XagPr~gH(!5ksLv$OgS$Cbs|Dj9t)GbSwlOfiWxnB&ic6T}Q zDxM6n)|z+a!GsQELsfbJL#(bd78P&Q?9y=kh<8amz0~*id0b}uOl}<+Vx9FdBDH+S zW|?m{{`#?Z*F|Jib#fBYR{fhHR%!IlF*7Lgh+H7(&A%C9E!ni{$G!C~tr)WSkA_%t z^Lg*W_9@H>Q?_Y{m{N?Y6Ylbdvx#{j=p97b$m%_U{DQ|5&_bO0<97h~XD4E`gf2rm z13O9LS|YZDk35k@G~`&}*<*>+qRvDb;mm%(e9+Rs5)ZF-A|y9V0Wwey+eHF1A9;|$ zxVun;MzgUEbc~5eV<&)HoYdNh0`hrZ`5h!!p~+qT8zj(0@flJ3`NdfyrZiu@-F2KJ zXvLw~gR=3nK>PLgMZ=VE*E!>QuD@TZOZWWdpdurt6pzZbWEMLpFRAIidTwGuzO?Cw z{H8UWwgxFY?#N5VB7?;9i6<*JJrNaa<~nQl9VRe(==;F)DMQl1j|u4-{d#) zmk-SzL21pd#zr08M@&g96xRu5tSHjdF~WCRMpOs)5gr;RAo$093txRxb!ymu*i`*v zGMb@(Vq=x*?tK=!v9!GHSO(|Z9G^KgMWE!>+t5wM=OHtx)BAv%Z4m0dBBn5VH7OIL zCf98MUIfhvB z*)|ghl4-5ja|y5eO+e$6Ws88|3_RNee8{Q2(;ZHL}a}jnvU;mz6Vh* z^2~0=rZB8<99T{6Y{A4WU15xd*D_aJ24g$t7(qliJ_F0iRcldu?bT z6`ZMkQ79VmTE)?pv5R(?CWhm?q#5m;w0|~4Uzl>vn91=UZ)2Y)?`t;)a7`NC65B;i z9t3M4S~dkrF@&MLjLU(X(*Z7p7E_@WaOYa%Hcr^IQZKQ}*hGj2Yw9vM^;rXKBvlXV zSV)O0Nwony#Tzcs{UMq}0zlHDl{%T@W3QpR>T5wV=$&s&MGB!eQRL#8+n^0NdDebiCMPC_K%J1(rTPGjt$6+{s-)iYN50aP z#m0x=U{@m&q{}h%sJgEK8p5ZxFuv!QdqKznDM=-$clVI`N2S;uq!p*V(&dcZfHJ^)Cm*17s7tnJB3K|S4a0WD#AY{{j8`4IDIZ@Q^`+20?fC(4j+zN$4fo zh39yBFTtV3jy%}%P|vV|=lJP+HLkd)G#R`QWeSKw6~>Ys9#21rRqPt$oDEiV9Su(e#TB*02JDF#No*LYp z_th$}ug!RrC1*fMh=QcD+cqtmiBHlXN;nRV(gWd80K$YKsVsp?>p-895t@V-mWa}l zi2&8Ib}-~7QPC+VCr8VgJ9BNSWgRJ5CpWH03~Pex@z4~5N+2#w{tZQ80xWehIaEPn zRCxe$QQVp`B{bLB5rU-W5j|Hcj6i;ZTMk8IBC0L)qAzuj!9Xf0G(pRTp(FwKd63{e z;x0#MhE|$~yJ$)lh1T(9a-F7HHOs+C0K-vzN1w{46S z$)uX1ay)EZ@kr0`RqD#qZ>`h~T4AKl=!=f%hAh-f#G@iVblga{Aag<;840pb6_rUv zf{=v}icFD(63QcLF1j4qnu9_!@YYl-jn?;PqS?1=Q+zZrrM^G|))j4?0VA{$3SyyD zF-nVfw`{y8!$hMm8xOE3jB&Ocf%Q%3A68F~cy&~ig&Gu*>*un#G5s;m1l9t%F>_|u z7$)?{2lX{x)2oPg-g+gIU0iA2&ySX>+n1HD>J&LS3zs77=3|QtjNMJ-sSkB+cB6{qBrz9*7CKr5!>czceEv^ z)cVG&Q+x~8lATM&HR{sUyIc1fsf9Z9=;>9sYm;7Bfc-4cqd%x)sF^z^aa$xoK zZSLtg+@97nXvD}-Wm$Ul$k9^9n6c50aRn-P4fbs^enOLp<;=diT9Yy-m-BERK4t1O zONZ%|CwR@U&$L&rmX#75Hfy#xXD)RT7O_;wdu*Y2ZzWG3u;lt?n2R(K{5U+-yD}Eu zgR#|k8sohQo>O?5;dxV?vDSDzYB079eqH$eD>D}VEn^4qe2*sqzpKIT27d?q0r2a< zKZIu)p8EJ*9e#KCJK>iKMjm*2#WOadHe=WE)b7XFEj$PC2zX}W8H}eoo_TmyqMk?b z92)?(44#L0YU4nmb0@C6ci}+!qv5M00z^{wno#0FGAEq-lAO2AM=HQF)$H9Ly9DRg$Gu}JH zUjTm?d_DZ?@R!tNY*RF2<>9B}d6vLfQhmm@;>oRtaQsfj6Nje`oZGztk{Z_s%V;S%#35-R9ZvGB_Y$wJ>;VFmbCZ01XjJd!cgvTFGRXi&Y_8R`r zsfG-GT$o^E)w%^AB7|6Lc%ny!qk!ZQI+AM{{5&mg=Pfxi{L3!Xc82kd8K@YKQc zx;w@mZGDS83bjUkTQRm7PkFq@;n{%qzIdMF$-#36?QhW)eU1KV34a-WpMzg44&}u# z)(HN>Sj=BMR;2gF^B(EC!}rDW5$`?W>pL*EE{U<9+G9<@pNyv+!am^l{}gT&C{(zR zdm#c{-XJ!L`uO@3BaO5GUoiW@e*@@cEc+Xs0q7NK`kUpCFLpnifGf}9;MevBiF9bu zs&y*@R|K!xbpXN8snhT6w)gv;KH9YO(SSw&U|Dze%sF%C{VTJ&o3?D-wtdHron%*c zPo5&$1BVZPeHRy(anF8r8}~Q3^%DFE)|LupQ@A6{VUMs{EZ!_2A|lLWwwod%3TqnL!jU>6 z+!SWDghyDc`pV3z=@?*jIFMU}#o^Eeu?S62fZY~mH9PF~@WPr(CL5B3hg%S0Gg(U3 z^+RN9q}gIF=E+Bz!ozGPtI4c)*dh_l5$OoC+3i-FrDVJ>qD7c27JW}$8^4I~Fss92 zvgkZnqGnckYotBQ91-pa4|iw&UN#%*9BFoh*`ati+@arR3<@wKrwE(f6lvCbYt60w zEA!^?Fp!vLRK%O{7IRp*-EJ~ly~pz?CCp;6nZtDpkojjm(rga1+ATJl{<6-~&xWQ% zMA{sBhtAVK-r#Up96E>YP>{_L5oU>u2)COHYc^=gqL=JwmLkqa_DG}+k2L9jMC}~bFrejdlVg2AWMm|wTJ2V|#t}S@ zH%Ek-!%Y|x<2a2Yz-+eI!on?Pd$=wTx{aRkb}QOwwb^aZ4QMe(&E?H@a~Os&!csZN z&twY&Rqn9s>tQ-zwwSDzFk7U}W{35J$9`6nW3rk}`b3Q%2&;vM_M*WV(ZySqmb{gi;%DYiPE z(e=He8{uzyQnMLJtuBpf>*ZUp*^HFg-=|#J(zV19dv-XFddMmSLW~LRBLkw~ zvrE}U>Co+#&n*GJ_)BGe#zsz(-(98s-1J+&z~fW8ZiJ^8HbTA(cVU*P*lIS~0g)U| zcs>t1f3;@RJKD1!JVsZu`^|qqo4_IMh();Br2*7yh^?yErle8p9Pp$bO)T(KM_eR4 zQ7_kmr?_r|z#u2(8w<8IJJ6W)gNkL>kkX)?dm`YTA6*mQnJ^E#PT|`W9^cjLb}Nz! z9b1;Aq~osRatMD#3kLVKho?2NK^-^t9KOqAR@cC$n|BMTOy$`Pbik2sZ#hc3O{dVO zx5h2>OZ3~P;k-3mv3I+uJ@uRAB9ygSjB7t!lQ#G8gFlgQ6F-L5+KL~t(%?KL8&K~h zI3AlSfXTu>-^-6Z_46tDDCLBaZ%H2Hp#45YyIYjhJahrkXzSE*M{Nt0t2jJ`FXx4b;`r@G6#HQH zc1UIkZL%Iw;+*NIC>t2*14fHFpfvcqvX~Jqe?9cd2c^ zo=U<2!KzA03_A8lTmYAc6`FUJN^RNW6y+J09GwjzMzs(I|}7!+oLl$DXlx5 zf()$Vpf+@~?14m;lw5=~Tyyi?z?}%{#4tV|-s)u7>g)sV6@T5woA{b-7DJK-}Hj143e4a6eV~@z{ zk966oTSW6I37m>HFmYgzIxPNClg+U@)r~xCeHV((<)j&7bg1o<%{V$!e%*v=A|Igv zS7&NGH2pco9ma494X2C}49snbp4cYsMq&`#qGa6XIp!idB9z{_j46d!u~U305?3 zu8ozn^TyD!S=UUroMWMQVSPwjrijGaevJ(hhf6W+kYTU=H*U4HS*e( zmvvb%kA1^a!*fcV8b);Ip#`HbeSJDS!~jdJ+CBIJ!jbr~pb z7dUw0lK4?UoZK%56GF&t?yBi;U_1OO(DZJZV!?#rW-k>CvVE@fh0vg5-uYHgii zOVOnb@=+zOo1q^<yJZ+3a%poBbYu?T{B;?W3La;YKw-(WP`G2^kZ7Q zt>S^ol)_^l(EM231%OW75QCEWbW&Qz+AqK=kQR)c#gH?x)PjV z6)IQowHWkJLT7b*S`sUMCU8^ALHWR7I`ZiaffO)#a2M5}+?jb#lLgfyodM#-yJblN zUahRf`W7!h@gD5dFTDf>%@Iqm=ET)uVBO1|DkBfIZ*{P%MPD=cYnLGRfGescAZ#F) zD~Bjj!L3xSw-t3*==E@tz{&dN06Q5HoG4g(DA@Wd_p>9M`MKZr?RORs}DM)QJ`&EM$5(5%_!=*T~NG~IFZuMAk|937M(7WlZI2* zv9hn>DkVra6~C}9pfK|ujM|Ci$iNj}iAt2tlFb_Bd0jvVesG0oxjZjiUP`Pcb<2d) znoLf7HyfoXP$P#X`rUvl=3I;3#z~*A5d*p?AQ0pqMxvp@rD=fAtnP9&Pu_4eI@cg? z(mv8P)z)8t;?%KqkdM3{LjMrcTJ{7WP##H!l1F85_e>x!RGGMM|Imfy- zK%H2Piula?6+^-5ltZX1>(erY(>fMKXG8n%I(@FTHq@0uAO0X@&o>{5>ads(P}`+k zEQ_vLznGBE(I2R(?`)`t=;j8OwOI>S81srER=NbxrnK>=dYm4LmPkHy6PiEp0(BDI zsO9plYjCCUr|^}f(ZP-syaSa#zXVf+^{71sLwKA&<&Uq|+6N2T^&_e72Rtd88AVYu zwc+>lez!8R6dDpWrAF<;0nMw{I)xK*c2V#~vUMbOfhl-xN$}pan{zRg?58fepz_kx zZ->*MNJ(?n>N0}p4Uf|0z-(G@^CNV!K|0}?jk(L4?x0QTpb4=#+H0Mtk?C3^%I~)( zI92;;p*~AncO>SiI&BQFf%5&qr@#i%1e|t4xwbD{`D6kh|E&s$IJYZ$O<+^?JnNI9 zaMDk4$WE%V7x_zFUjgg!FXx~k%oh}=R(!BRgkhqOq#dkhEPC~BB!*tSS!cPn&r0gG zmXN!EL0vjKl^-V}XYuqn%op|8MzDi#-AC4ZA2KX2bOS(u9lNJ+Sp;dc7iW{TMme!C z@|H)|5w!!#;-rI#r*)Y9*GQ8MNf|KAIvRBoPwfW*rEXOo0t1R3W6ls<>$wN(TbNUusub@H$Rdq8f)T&| z03&nSsg}OY7HHa3e5yQiR=|77W9PB@e>`3R^3gbtSN_hL{Ui1%s|gGY3Zx^H(7>?3 zK%AjC@lRl21ryusk z*r?JT-#&nN9oRF6fz=W2u;|L_903+=gw0?(fEVImHceSD53m`Iv`2uO5n#h!-Rg*l zFuQBY+MOF`vk9AZTZF?AsSDK13b5InJOi`c2Hpp8L`+~o*mM~EcgcAL6{u{f%D?7;Y|@?k$AP(^xm4wLFNdv3BU2x40ergM3~)V zb6EAyH4DK^FoO#a9%M6Zh+qsVRh(UXzB(;h7+5{25wBrG1_pGW{kmtUem)cy{`pDTg;9kM>Pw0v(+9E z77-a?3O!<6sI}WQ4Va@yWoAZ2tl%z0Sj~~<;1qu?A07#Ij>#Hs(aCOCebJ?MtHm7a zjqZ%Ff-eDnLxkR;*~o(fh3ZVD;^!S+b>l*UtckcCG*bqA9s!h~_Mqpr4aTet($aeqGi|5_|-p(a=Onr#7=#c<+O z7{XlKv|vNj_e}?Tp@$zwtcfqoivuQNUfi*t2Ir!%hr3=A{lTbJ1)@ zpH^N)U47GugE7m=x462chu@_>UL|$&!L)ccMAOm6rF;3i5Rbw>#V0_oDHl&14zMlg zKSG0MLlBFII<=(tS!l4mmPgd(7HW!M-tX6ZL>eo$zCQ`@g*`opgp+0#d`pDbmL{}Y zmvUwn0KqMknn>o?)wa!u{OB-_45}%)^?~4|&}T$RBvp7yiJrHhEs656-yMKSb>Rux z>P^^QRwEdsAuIjqllHS4MLceIg~#s9Gr;3(GwjB(T`&g#AfK~gyKLakD%dm{ShekX zWF_5N0yHM}e^DB`S;ZwVl_htB-E)Ir2rG!KkUTX2$FK(J&4KrtOoMd34Ts8#JD?%f z-5}phIZpZI7yJ-YSX#!DVw&&1!7ru7FW88o9JPF{V1b*Q`WX;^Vow(kAd0pYnkBT0 z25}|txd58PAb5Ur5cQk6>@jjse;sxUo>29`O8PZ4@;W?rBEw0K@N`c%Ib3jP5b_rb{zC>2zf0BL z-cE-BP{MH^#ND7g90Vo~xBeH5#| zEjk%iX?=_Wlm%u(D1)Wdc?&Gb22@2)B-Ez!D-5PQ@AVJV^FtSqP2wyB$^H^{p{P!s0DPSWz2(R&_4+GKZ2(2D$3iA8Br_E>Hx8^7{rR z@djyPyJuJ$eD8+Dg?rW=6rK3qKROF{8OLCPQsJjexI0u7a%P|O) zqx5Xs7*V^sL39js+>>YxD_YSN;bz-w^qf*>>^lq_-(?)q%27BdfHkxy$XULq)nyu# zqlWtcHSD0<6B_C#k)(2FQ=|7Z((8^T<#Nn24>Md&-vF{*ZRL;Qkz-Hm6oa~9c~Omo zE18oKBss2tycYCJF}cLeB|zFqewnDHjD>;BACx@`Zr92nYE{2m!FFxJrIak~vS4H* zj2-;}-7Cg*paGiPG+5Do-`9wqn2~s!mXRJtzES&UPlEev%WNJc<8tVPQ7CA7pssiR=)+BhYLK4E&AXQ86$Oq5u%n$&&;49l7bG zHUpiaIDg=G{0COYKk_;L#W@<$t(yY_zmS^$meR~4GjH9#bNAl;2M-@Te)9C$7n)Nk z>74<7{^dN}sQwd%hx}j(u_)M?T!Q>c(lMH#Os)6=9zSahAU`0fLW|pP7w!3$e@6!7 z)Su=6pMrZZAFEGUPCL5KHvmnTc!~Br1G|73C)Tpk{^b^3dxRkJM_Llq$u@(sa3x%M zRSDP;nA`mUE&H9=KViXOW5G%DZ$hKf_MJ2r>Q4uECI8R&A!3v}h=7$xcY^Fuq!C`7 z1{+@nsp4mqm}Yk;0b_CU^C;NS5YFjUPCAZM5KvvMGkI&YmD(VG>12K|N7WE2 zNX@Hotti%;IQV-b(q5dRSG3j(C`QSLogI)y6z%mMtr8|gYaEQ z^p%f2i5(IqN)x*1dgf@jr zOET@p@1JQz%nOx(o8;=mvXOrD1PbMgHlb#i+!2SJ?*m4;TEp))Ac8W6m;!m+5TO%k zGgrT(#VvJTO@;MY59STuE;xhZhszk9G74%d4OngDAzUr$vY@oKGj-*W({NS$A?kk3 zJ#>arb~%J~cHSX~SAf_X(#ogU{)K2M*IUOyo%CLGN0V(3Eb;qs8YEBmTSOaleyDaG zW{hws2B#x1EFY_T$Vnj^jVcqmnqZr4RdA5DQwl+*#17PB_iN!@)vQGU>PsjE228!D z=eb^0XTVzT{1TWxa>W>x;CFnMqDkeX8)xXS=ci^cBFf3Xq*4m=G1N(rn**D;6veBO z4A5s_W%4}$xgoq-gYB$AYFKPN&E!6HF4KHnIt_#htkR%IrjA5c3kN;GEa^(SaH+Tp zx<$NP9XZLq{ZTP_(kdWJ*1MHX;MCMwG!7?TVoC`0VeU!$ICV^d_Pa+2Y{?!{&T7*;9b010G%t^NrG&r{<4;z+f~wD&>}7$e-VgVVQX+46EdB$fF27Zm{1Nb z>wE!Q?S4)@%5{nwQQv`j-EuHQ8o*VnM@OUkeux9M5Pcegmo~}`X{7TrD814gnG3#T zkxf~shpRrwk8ox5Xd3H5#I93nkPxO?v9_+iR(Vc_0Gc;6Vwyjjf~4ZH{KjmKFZ&Bx zDLuj!dxKnV%G_v!BiB?QGhT2HC zHY1|oR~NWitr#q6#T}tp+V|_IjXLTnzVU&jA`Fdm1A9Z&mbea5R4fvK(GqqM!;Wt; z23;!_s)9mAu(?pLT1hB$aVTC{UmwhN`EpHT3@1*hjE<{#9Es8ucbi#5p8LH@BtX8fNdADhzM!q&u}bm*y!>ZY$w4>o9e)!Bx&1{L z#7wLb?4!dX?RHzZMehx!hBt4sTf!o(kUG$Ne`_K31Ee(^VJ2I+IU+(A;^rM-2@f+x zMmS73+;3flVYA6gjF=DS{uYM zbPiu)xkN%1qKz9^H%Mi-o2~jan)LqQ|JcEqu%pVv{~18+7)LlUcN`A0!(HQPBVh^> zKqiKW)nozxBN7Y-JLDSXYWnivb%a^NA(f$<3!#v8e7M67IS0GV6k5hOmbX|Sq!I40 zT7pIN24p+J9cHr~G8+B$mHmicU~@#8!BI-owF|I-qX7XKQ+N?gS+~P}ka&p%OUN3m zF*)nxfFz2=6yeZSGOp#p6bUnfwPSG`XIyLl8^a>P9Zg8oKj+Z^^c%!2H2rk-cyK(3 zbrNnj&iyvgnHh<-pv6|Or^ZIR``R7EyRy4^Y7X#d=J{{*vY1R@dg=Nb(N=VeB^+Ewcg?uGF2wW! zj|-w6MlbYK0&fF%3RSd3=*Md+a*@_Z%>u36th=oD)Y`0?1uO#9aqtii0x!;Nu|%)2 z51<)@T#?Lb3McW9UHQBZ{*KQwUz0oUYd*{Hzl(>sQWp?!leA?6I^E2egQUMdlJe z{fdJ(PU$%f#-7?-4vf;&;W{)Uris$$8V+?0Z1On`fbYF6V4WD0#q;P$q3|dp-2NfN zgpn_&=cf!VfkuQ~>U#O8fC@7JjittwKS01l+LQrO0JmRja)9bm4v*cja-cDIB{+dK z?Z$419hKt03)c<L$966~3#>au-(ox>N8Mxwiw4BE7V= zDG(!nyq^)6ud{#+p>X@!FKCY3WdR9pNDHgKrV8c{_3>xmkpvr&PqjKm&^(FNF*1A+ z5xgN>W1d_D6&x0!1Lmu8+Zz>Rt9D+15tk|MkPMLG@BWHW>ezxd2GTeUu7f1b1|hDE zdv8QXx2|Zsj6;|+K#csno{$D`7w&?-m$QdOi?BJ`2AmM7{`BoM1H4)pGYn#-c|_zX zgO~hBb$i$O7(BUSDv@qH)Rw?gJ$4kp9#l*YE=Wbrn*$0?PTLX8w6@9E9rmjjon??W zUM5Knd0IYWf8#|2?v4XOTV7UUvrZ&3`MGQ2jVQ8?K#!kEm-Gj3vzC>2u! zFwF1vd_&(4RVhK=6H?Gf{&6JkvdK%|8ZZ{DTZ5P2sVJ}mB||sBFJSX%+2LRi053Nh z-y4MQ3%^CHD)>qm_enEzN2kZ z$$imwPCe&^J&W40H3|~49uvv+x+Z2H+qM($@}`+Ye!1&1IktXIbZ(FsQ{;hwg)9CV z450(5+kV*aHb~=--$1*?_s#Y;FR4>Fl&Xgn}|vDzeu|h_!!Qx|ITJ7W|cM)!jN{RD057tSofxR(zw$Y_0JJ)RzuySoP0sCNnA zaV65=$-vmOqgiAnw%IIeg8H!^uE8w(D{c{+_WcFIa4OG9EU+G`4Wrj<1uT7O*(?vP z1q$@!V@oagAg>F`;#wGhdX3Jh*@AX&2s&Ns6YD$zk-FP3S~ZV%@XAVm4}40!cheV` zg>)idHHQm0odPE(zX}dyoE(4vo;oN|1AwQ=b}(JGrYfLZ^uYsTp7>JEL9n?5pDjqE zM+1#9j%P0@Wc?EDa88m!F~6vRmBZx`VCippZw_ zd(dSvu1w8EhZ^FPxp{&#^Njoe;d-hfs7M2-BiI*nAAl%O(uwca{fNs`H{2ut@VzN= ze-!Ep#r8^>w+JdWyPV)uyD0`8qFZaQm^=S1<>{XYA)YTXLJ*IGq4^Ti*wfPuj(B={ zQUX&#Vk6JSFIt+O?s%N%KO!Wao_|3H`41QgPD=llukiHze&wIc&A+oYv4^`To+oD`l(Xb;BJL@Zm`-)P#N?>?^LZQ7Ic7>yC zAKa1>_jwG^nY}QPnztw1z(i^;owNeufPFd%{`ACFcoem1YcaR0Q!E8|K3et#;wBn1 z?6hFAN8iz^XZ|F>@s*aA!y^d~t0Y85D)+(sD5zT>V0eyrizcP7PvIcS&dH~64#_@j z8=YeWbo>PM+C3})`T$ag0W1Q?$|O_-57*f#e5Rl+pisWz2?~fH{p^HiW$bug_7=>K zdeQeyi4rBv`VNnq#xJ_bB?$WWBjLpBO>3d)>XsC|nw>V{*sSMBY^n!7#YC(v{{mCJ z2`~j$pEn2GKCnbC;GtCKM$v9R{8!6)$-e6LHsu$zEA(5f&b$&0+9;M0RCHKHadL^{1lawS7Ml3zR**xDr<;EeJ*1 zjrIwc56t(gQn3}3P}g&;v%HD zHMlILl#_bx;W+>Rt+LTXJq&b2K}p?!F*1JJywK;G! zzF?(eWpwV_#KqA=hdZ-Hw&K-nRFnRy8qT3Xid_-Z66sj`q!I7%Y2eyC#4XX@zCyoF zUWpSLXKqoK7AwwU`s*Brn`HWnWci$}L4De@B+jA@2>_%lJu;4R=sKefnH^uxz|Yb^ zvJK2{?&DQ`t2yq?LC#rz0j{6JF{;TzQ_ALBynQ*ePiZtwFnqBpg^iQdp| zj3+W^?&gd5L%*>F3uZN1lZ<6IWc19V2Do?@MjGG`Q@1v|P6wLW2j8weiY7{{>dOwnkZR!q*y4B4M&lQ(D}wg1 zCmtSs#Mj@}M;GlJ3K-64=%B;?*cK-?oCN17gL=^;RPz)Lq&cb6)VXJAkd=NPziNBK za29_OZ;-D~Wj24CTx&F841}c?|va7?fiF9fkzBY4aV41W#u$}o< z1$?27jgYaAeTAG5W`5A6fSxF&#Rfd?dVb^%>g>j!B$=W)c-#Su-!rc{(@<^losDuk z>y{o^Va(Tlyn^#Iq#6N|uZVSC*)!xS=WjQwhF_s$nS8}-|CtB!x8TO}HAfIas|dg0 z8}4O?0|ms>vxtP~=~)EJdt%-BecADJ(?C4mMPeR^h@3ku?+*xvrzf&t|B8nAH|vhT z&7C(tYr(=rt|iBF@e)r@H`r0M@CdGCm%pQeU?+Fsx#w%nOW+1Meg6sEnDGL*(ZuEQ zyHZssSs@j*Ig0;YUe!INBf@*rPenMqJ*k%k{R$QO1g$ zFbcj9ql432nYx7fnGeEl6Y;_b2a zSpJIK5$Mh~F%}6Ue7>!p6a#7t5=3I`wtn1IWUK(fRERfjhO@p}* zWX%A>05TBI?+mVKjfo7NBF2FzVyhKA3Yj)wvVfRjchs240v)(aG|b`E)mDh)5abob zMK~P%i9aTi8qwR5#3B!}b5kdqSY$I#t? zlcKAyVvgWlfpO?UWGBVc7|aPs7^>gb8WW2e;j=<0AH@Y-MREh>wIrvV++T<@9 zn;mDcPVD@KJU(NO9nPHDeAZcPW>)C*1HNPV9dRaBXUAcz1Yj&5K_h#HqaJ0EiKdHZdYsX@Pz^>iW4nI}j+9UxIiqefpt!?gax$+NdK`5EV7;&|j>SyxDj1%lt; z{pc1m;EbFiD6f8&qzLLz9ge2)Q%yNT(7*L{J`jyMeIFovCIzki1t(GNiKo#Z_ML?+ zuGEn*7ubUL?$d4FITNr93gJ|6_J=4$Q)h;tb-ONyiN@n4p17av{!Umh%0ZY?g6?+| zgM@w23rIwbOMpgdEXOrzA2<~hnqNR0{KCNLQJT~}28)t;)P`rF^lFvLK+}$Db6raJH2WR9xbEO z2S_{-*((tQZ0+cj6b7;~MTX3@UvSfvcix99q1<>I_g9-qCbqKo1fMBL0rzCsI(r)8 z_OWN>t#E40O#w-n5L(x_B1l=cYpMf+e38qkljA4uLT?%KhahY&C|>!%PuRGR@v!Ti zvJo#A*!3oeQhq!T(pYo5!o*bCT_8hqJ@Igi+drcV)b~r^7HicSmg3StnHmA~!1nG0FNOr!d`;S+q6?*p73lt}v2ad6^fCiGsHjo(RA@Wj_bK!Xy%IkVBDN{s+tO zIX9TqQ&{~5jAR>JbPe_*9Pt zdXvu)l|J#GV=ODzZrj><34(Te38n*c<~m{!X$O~G$B0GE?;em-otuvqfImSqPl+6i z63QUSEy^I#ez=d%YTj(PX#1=(=JCZ2G{8(ag~;j~OYl*VUE%jayG^t9YlPDeh{c0o z+IPb#HRpUx6Y+q%m=UzfSMWV+?}uuAKRFK(*_~DBCxjap_%NF>++vHLDR%ucyjbL1L;w_QHeGQK1|Dv z9F5P!pi?0t{O~w1VfDmLtTX0!96HdbLYl79rO@l>6g})G!ta%WVHEJ5J%yg;S*@{^ z)V~XM*ZbW(iFHCddP+_MsaivP-mK6Rr?qbsL2}Lu^%)@wPAAC)( z6_!$CHa4T4Te}Cop4f`~)CwtpV~vf&(HDA~S8y3#0=CwV-jmUF>tCgtTLTetku~do zhRa0#j5WAyGpae7roX$H(asgKMp&amj+XhheHGxCqIC5 zNv~JLmfGvLF-a-2{IHF&0IL_$9J^s(BisTHzS}eUV%7sJGDb%ym=Le-!=CDpei(_$ zzVR2i9IWN9;3T@&7CJ!94>12Kzuc0upms=CXuLH^W`NZL=&}Z1!L2tJUcmPU zIeIb;j9W6oEPCpOL%1bc@0IvLpZLUy5xh@E+tkM?d>S65NV=jYSE94snu`n9*L9)ZT8a5xP`X{9OUPeF9a5s7`{-q51>x>oQPYf!W;u^ydGa0^S;BL?8CCOe{6fSQyo!N#$9+uY#!svVMzYW zx`r;FfYNRw-~68^cW>9+&T)kYD=@dX zMJ2{)hX1Sioz*JOYS&>ET$pqD*WX~y@~%n#&EK8>Kc#@+!n#!;jf)RHEdSBRpWx5G zO+$o&2n1nR`In_GSotaCU(5tyZXDqGRPUbY%R>!k9fRHlW6$$Ja3-4DU-I;=^xeN^ ze9ZRpn+{L^ZCA#}e$O`Uj1QMzkA#RCj+n@psQ6MG=~y7(4|f|m0|?IZVYMTp$lZ$~ zT0$IjB1qaI5a|kb>=MD(LGnkP5V)|>5q3wU!<%d2&dG4ZA}0eIxN5)J2EgL`6t$h2(Gpi z2|0{7sCYyLbP0(gWd|gYL^!xwa#Q??Yl;CtM2QUrVexR8V{oKcduh2c(12zk$W8$o z5&0;n)aR4#^CDh@PaOQWcN#sKJr8K|GlFRw;Z`4KY7$g21%uVlC}7MQx_Jx$U~^dQ^D^ny!#xtm1UA{ z8T5fhJyh_frcA*qjd+fpJ&imj<=i?#`q{>HyD$Zg9=j5MXjAqt!PGB}$4pqwxawcd zW#KmGkzN6{R44^wdynI;nC$1*U^{)`O)+C7>x?({GRn_~{U&vZe@33Wv(7Erdd@TQ zftB+$Y*-Ms*Z&1G?1$?~Ho~aUV+Y^EJ)5&LLcQX#+P57ni0wuh{oN)Yv`)Zm|O9av83lkTvg^3N@+1$ zkFCJ<5LuPgW$>3aFioIqylLTcL4GhfI{fh}aOSOAVmKC$(chj$Ev+^NXaMG%MZqv| z)ZRxQqebfO1K@?$ee)6a&}O#`f*+{>%G)5_XfWtS&JTyiyV`hND zuZ5SrOE&KLO6XCo#oG_a7h2pk(QaLw$fu!T&TtqO#_Aa|Y=+Y<`7FWA^2Bjpeyvs3MK6nea(}LcW(*)K| zr0ens!z;`8MGKXYEs`|BELRmnR$mkF816Pp9i8ZHo!1W3VgKMH*u0Z2r8Db+bIv?b zdo}GE-QAN1_#=pEo=+~c-YftNWPFhb!&@*fk9DFA9dEK=oY!j;@B}TiJ=_51`wd|~ zRliHl5sqxN;(1gb-nc`3GGK*_21QMCW{76J&r8rjp8Cp}g5qOM>LKcuL<3Kt?l`;w zSF6=Q00#o>$M?d>`r#&QDWiWXAQ$!BP|z=|Uj6Z_S?rA?=rT1Z0v?euUo1ve>7#s% zA${m+TduWr&*U&`HF$4=@#7X-j`e=XT%7-{l}WkCXkU$i%~t#jlT?D-560M~AP^VS znAoH=LD?trFxZ$XNFCy5ElhFUU4>(~A89I0m>tqm5S z*xUFp4x$cEOj3}b@|J8D%#I6XoN#|KndyF4(Lgh~1uRnS_627PyOwyygCj!8L~Y0|FKh%3L1KetVON7-#(uve!6>& z(*DFnpcQH!cMK1mUgZ!bKoAcwTiO@9IAkO8uEEz1=P`jw9!Uy`?hFc}Z5I3=({BY_97`iwA%C27okL?%0^sszeoDuGZwr3({Ftz^Z&S$$shG;A zAsMJVTomIO%G3#3jqmZQTt);|G~R5T&$X*&PFcNq6Z%w(TugYU_CakqOptGKd%f;l%F%_hzOo~_lfIBCaK@P@U0b~=+$7Y)#cHKArSe4Q?5{|bDT_B6xh zQce(UbH~NKe>$BIjt@KI8$GZE4yi6q!e?nj0k&6eJ?1mOz4yiul<#k%OO4{+%XrA= zeiEK$ZSy61->mT-UfFW;(6o=ku0yiyR(l-MXfh4`t#{jv1y|ZLXG$;{9_q?0>-#>h zifXkVuW=5XW*@rInDPNmsWsh258&o3>}L!wfsWBfy-Q8;36t9~rD;1+(n8L034*d< zI-JBcgn}xKrsM4TbmBg-)5HzXeoEyrZ4BIT5pbb;@eG_^Q9HkpSd-@2MrU!8jSf=* zXO3J)h{KX9n2wB)p?tQWrBDFc{Anh6_cLn&lo;pfEEKfpIRq>SOXzmlYr*L^y6!%X zfS*34Do991S$)48nlxS`P&o0ExRW1S6{Ea|~hnA25Ww0{1&a z%weX)%D`DT3s#30fntk=)VM7cQscH*021>-uUMpDY;Unt`V){~;oK<_+&}3USuB64 zBk{6?1jqdgeZazHPMOL} z;Rrmf7XOMPobvL^0gm7?_M>O9BERaqm zC`~DbeJFDR7ae80 z%ry~W9MRm*LL`zvLXi&;FT_MTxLyKS1!(g7P^5s@4SmrF+a~U^ge(c7E<{H0n`|{n zdjpCXG4XtFFCVB=sMe@>TW{_{2=q9B50L6ccrc3!jtxOTpMw0ra=6Zp&Jiy8Px9Ci ze~)rT179El1O_v*Ri^U=fsooHUCOAY@94NbSgeW zDhKIQfDU4(dj-@5yozWqKaeh}f?5!V%n0xmki}pf5YPEa5Ktw2$r10Bi(CjI69DG0 z+krUngPa9Y6wV8X!4d6DP23U)DUL`m2x7v+gVTNEpobA15qw4N8ys$R#0D?3M#m;* zCI*Y7v{92NBKSQ90;Xt&-zke<-b<*$GOjT3Z&3x0ox_Me;BB+HwKD%PAA-~-cn|Xh zrOb-$=Y4eCC6n19|Fie<2e{=XNYlc9q)Tjq(kdzwIf4FT0VK%@n+GR(LnXJCSrC~ zprm+nT}$%Im7sGJ=2kNfug06S>v1-g3sW<&plG`fmI7Zu)B3_ahX!VoU*I0=v7_O) z!H;6Fd!);^(Lj;q{OpPEl&e*NKf93LWDE3(ObkHgfI2K)jmQZ#?chi54oXKJj+n-uZ`B}gbi z(~;jG8oLMmh|_Ab#*(K~aZhk`xTGRK)Pz!f*Nack=Yl>QrhZo`ONr!CMNZ)o2RtK~z!X;}? zPdQCg>(n7!ML9pTEYOLeHRTp42nrDoe-Isp-=Ib;s#Y4kqxI{KHQmZ&*f#2j!Kcwm z#a3$@+7%RFqCw`(V61oS>BjH`YxBDBf7BN9$pMS(>-2{O=){Js#ZOrNl_^uP#3|7Q zvLQ;L`V)AndWCeLG`2-Z3J{IR;t-M(mZ=YLP-$5dp9Z(O5llPQH*yhL#eC2L1f9|&fp2(-a`dl(IvMe2PR($f2%Lyj>H zCJ0!lKU30yvAM2XAevjZ9Hp+*zLqt?Jl_|NvGH&w>?iHP0(j6P)*yjW%MZ`BPDNk_ zhFoSor=W1hOg>vwk{52mt_tdgNXX0f#qY+6MMrRGR_;C;siv+q^z5+lblYR1sL*m+WmFH5NvLQF)M@15>XL z;aBVG2L!`v=z3Ger5#)CjRP3dNnes(nI-oK(-t>6?|O(n?1{UsOfO9I7rJ}9jQ43& zU`5|v0sInnY_==B{!Ebji)KLyD~J2z2t?26;Rnh1XnlZ!T{-if!m%;z?I;&mH`NqWl3{`joAVV+U&kB$qu~dNVsa60j5FRC~8J z_Eq;>O3f0LUZ42{+Y#Yfo*rgh8z~opF20}~-QX;il#N<%cPgOmY}~XYT=TBCooS-> zc))h_uX*jRGf!Y+r;w-f1~F01NIbH;#+FktbvRB73&HAEh8 zn!i#Nd&wHaHh;?|#c%ZQC1K0I5q$V#4ugd(!IwlW3Cbp%AS1wUBya-MF=J&=EJ6HZ z&H{-$etQv*g(w}&r|DlQLtFvToPQb15rlGM&(N3fNN^i2)<1+lr2gSFPqPc}lIO3V zuZm^I7`};U;nN!t1wncL4R~ssDUhixxJmxWIHKOGg9qYCl4e$*kvg;nEml|aE@B$K z>(65p06T!IJeK@4mN*mR^=>E*V7xt??*B9guK>cp#PwtC0=T4R!W$rruUdv-Qgb?= zCMW}g@Bpf1W5NaNjPazm^5yN_82@U-IvK4vJq>GxwiN}aT;u}(B65LJDW7~1%WXUc zX7@~-NQ#ls7AYm2hHL6g9MjlB@o2rzLwF=*H9Uw$wb^J~b`@NU#>LaM#7v+jZfT9l zk<}0XiPOWh;oaOq2LpAijz;kf3(&#l+#BTG8M%ij8^GMJ5M-^qGnm4}`oUC8-6YUp zARCcVH_D167Ye4?Z;;dW(4_> zO2H^B?%Lh@`!J8PS5E=D7tKBoPvT9@_>h)QNgPT;;Z{|2v(l8XYw0~wxMV)#&jaj~fF0XnP^{`hdysEEKhJya?8`zh94@3;QLe&3isc=kq=5VCb ziJ%LdL;p*6q0j{g;tjbFx}-nTZq2XZ`t^)jbj{!DwA;~zKoedqfoH(z5{5(#|M@t% z`QAEgXXJv~Cn$4{VBSB3Iq>W%9ju`h`(}yN}l-k0S zkIDKEECLR-wLl@@Tw2CKT+k;e*yeA=jA^#VzaW&%2pao)Isum%H01>z!Sj5Am%w66 z(3(HM#m^`Fm)w6(S_J;p{r|?xRm#gvBiQZfP8e`$5fG`{5dl`bD`9{lya=o#Djp9J zNa!tsmrn8r$oP*%wTB2e*(spkqi|Vtw2Qs(CI-L_gzzMMKX1MjmU?~_z(DXNA{>#iaTUK01kWES`!TV$W?an>($@qv z9y$vgi8CT9jtU%cuKFC$P(lN+0;)#D*xq-E1jHl4kHa}4~nm_szUUyu0V}1z~ zAAvF0fvuoIkR!NpU=#=n(0{a7-^{~D6Ki`$wfQyBe0uYa-;88pdBvk|8 z0Px?r%?RnE82}<2avxwR5KD-Rr2-&6+%yrKj~bk8jf)SCVFRki1fswRNCUBPUSGNp z9$XdfaV!)f!t+rA#DOdVTp)0mbae3VML29N`0Zd@K-3fY9Cq7v7F+*FAd)|#ASxQg z*CO?bKq6c~fHT$>%FhUd%0VQsod{bW?url_8Og=_f;9pbNA)HWG$bH7iF0zG61Z|i zfUiI(6Z#Jrz{f0pXJ2yqmvDuP{~u0&C2t$)Q5FeJ(#IE+CM*6~Y4W}N&nOw-{t&n8 z4G;q_0w2+_%OLI;wkQnieQ&yxm>0KW|1CVrVkv;r4-vzoTi zKVPA_&C=NA{MP;w{;s#W@4U4>W=-Yfk8l#risi{8XP=JThd0Asj-vNUV+3;rQ5)+d zGr|ZCM#N2&BH9+`;KGzxXT@K7#qeKXcNj}+-Nan_*~xpf{iCrKxF_sPHit!0UzS6W zkVe7{ECE$((+X|y6^U}7_j>O!mfDZ^(eG@5i|{`!F$eo-l`oTh6(v#tUs*VXa`BD+ zGstMvGk;o3e?5#1;8H~6-km`D^85Lq5Q}UWUkUBN2& z%NW=N2vAifkbsr@aSOHX2%wKJ?X`zTsE3T?SJ4)|!AF!t7m)(%RA9+_WeHS-@TZ)& zU>-OQC_q2=6(s{oVXecNuxF2af8Eq2wk_I!Gh#<*}(V4C1fxPx;;fcA{c9IaFe8Y=}42*{KHdVW+cME zFlzV5O8V;c2b=;iuOrSd!RXxL*-rUWnLCJC)d{pzR(sg@LQu4+GfHzN#2h!4qIsK}zs4*^YE#5t`_mk2`Y(rNchL z4z5i~#Ut=k#>h5{zXrTOD`WM6dgtJI$%3${QZ7zrSlZ6T7%kCBMn6`lz1gX#dog9QbrgVMfvH{yXcRVmXYxVyQh`2iHwcjQyy^9@dN;Un^iIo)LHnw#`#RyRm2xxYB_SmHTd}2rGx$EKE=|Mh( z{um=%RVHfA!_U%!3w#Q)&THTYrC-^r7%%M1F3e+EYyxH*{Xq;~mE8&rEr=N6xvuje zzG1(R0xWp%eAaW$@LNA)FBba?9yTMXKOOq&I38oF*CI@8+IK@}SPp85?@h5fpaJ$} zr5juZAjdZ`>6=p$>o1nZ&)iz>f6bvN{50x4*1Q(+BaqudNW8|T(yhu%V=I{xE-m3(!BhBIw zW&@?nlNETNv=TM&GdcF?xspjT`ew2Z`O$ZX?QMKo3W4lTj>Ee@nMA-xPl_xXyQ|W{ z0w~GIwBEsw!5;yAsNN5?WZ#w|b!R9Ty)*!ENlfck=7Pzq;N z*(przqo$D~NMU>lVxaekFlkhdK8K|#c`~hZH$6Z)#07W9I%S4^go{uGI+8Z8Kl#I3 zF36Z-^dZDZK_wi+c&jYOQr8Tju^u;Sl7{C4*_+B~sj7IL~ z?VVYIStSiqEer~Lua?fH$@i8O*Cr9?KNl>DEjTheRt{^Bx@avOG^iOMs)klT?t1$s z*D*Dl9WTmI9X*wv0ttzI=w|(=Eoh*cIRXvT+qozM?QUT#7`IBIBg{_6aTc{pGc;VE zPofKYrxc8cpC}$+jzo156l2dT;QAx;;yexRWGCiXsmx3ahocYBaP>fWY(91n_Gh8J z@v4=ri&rxl`Iv&1>rJDs-Pmw%Yxf6E^w5(_nE9m3pN?iI zuWZChtWE||3W_oS zGXL*0eFf%X{xiNPx9hK%|D?iOG}FJ~WdAVHcVf@!T<$5G^<+S5@%dxS^l6`@;M1qQ zP~Nl;`)!{89MxN&&+}=Ft5Vp6)%)W_&sX3lzcAJFztLC(42`{zyO}3ENb86EgJSphKxKDtzH{&ON+i zlx%=FKwn>1y~-FaU2w$5d({bUBmohLLwO2&tk*Lx$r>BaC3%A|0iMNjt_m^{kk{bS ziL~`c(F;;)0LFj>dqm*-d-J{Qap|W5WwLG@5)~b#L$Abj_RJc#eptD0fY!190cijj|{CEH5^5U;N_u{n* zek&2f&vtw9hAW0|w6A$d!E-0=-}^IJUqj(Q2%_25i)=CNi9mieI~xQxx);JNr2&C^ zBaktMd}Xae3knKILKHFPkk7dnZ~Ci?^XRWy0!91H+7VRcFc5k=M*4Fp&aE}cg7 zUNo;)X0+kOPCVYE*Dm|u&3LPHIlQThy!`N{-(KN?H}lQQ54jdtggq=|1HQJQG;O&o z1$1VSJ%GBQwKMzUDuk1b*LDFvUw7dHay$|kZHvVX3jLu_A(^$~% z?sUR|+tQm1!9~?QaQW)FG#pUsotKzn^_}i)CrG0Cd$!&3?NR7Vz+FkKXtlQX~#El&}r8BcO>-?S1_Ftosf zaRRYH_RATsV27ZbW#Ni7eIqOsR-+EmfD2p5rl9yumUFRpHo_9xhp>9_JUs?vhV;`M zSwIl(*(6~1;T0?{w!w+>YATY@!DewLPcGY4|2H9Pfp8W zg7WP~WU!3q_R&ZjGLI50vZG9S$3c6=IqBcCLEZh8$StTdzzOhPS(!@V)W z7Qp6zZ*{oCx^n@#(TJHe*MZVw3&}?I+<6@E2YXC97~1Ji=vI!Ih`uui{X)ZN&hDgK z!Tco-_ggFc^&tpH#&Ih_2%2DV<_glT_Hqxw>`=j(hInQ&PO0Ct!2bRvE-6z`3vS4& zD0Q|yg#)1Xxi>dOWQ9o;f-%S*B&D_!ji_~~DFe##2Xir~7uKspx4X@0CvNw)D^3iD zAKqAw9y=NgHjiM=d>c4{_8uuwX<^6bqUXnc?F)=!`{x!1Ideo}L*KJiqdMUbNElFTsF+!UFa@&jmmt0L694UewF` zjR2%P$GsS3c>TFVrEviQ9{KF18LnOnlbhG ze&p)Muf2l3)JKrx#f-FV4tW+kNwv+$*iVCR#+*xd8jaX=!Y2DCV1!DC1x%q@s!QFy z${;+x=EY0&+LmPAjMmTKXy{XiVjH&GllQO2Zh8)P@$RP!hq!j4d9(?*;-Wgg^DI17 zQg+ZW&bz3Pf^=vEao_X@J+U?l(u`G@$)xO!Xp-8Kr(=JZ032D_zW~mVb$A?~0Z|K- z)`b+s+i0pWQ$G%Ob=gh~Gp!Nya-l-%%8B<|fYk{Z23**4Ho)iI=}B8Z341ARQ*HuA zFpdV{4|U2`^af-rTqO@iwnCtG$Vr+~Lq1F}yc*d2g&F%z%xC!rFkPDm zf5f#aM>mt-bb#W?dL454wO^yC53=9H_vWiN;hTA%!2$P81+->-bO$Sg+9MJ7A+IHV zdes9z?F_RiECO?oYKQwOYW4Q#a~X(K52R~%OhUh^6Ouu=Saa6tjq19$&f$v8lTXnD zW-&X0x_U?KE1ARKvndtcz$I!=*O0?sHxg@-bS4SkOJgZVUm4LoJi|JyE}n8pgZhKO zc3eS!sisIR#=3_yy?@;nW{m_ckCmp5oPg!l1M{2OzY8{0?jxEYC=wVuqOoVgQaR0f z_-j4``G39_xm-c%)6Cgll*SJv=9%8h4-=a9?PV<1%Dl(}nDn*u#z+R4Ihop%L^=1y zZIW1IKR1R2B4vYp4*CF?@eXLNF!ZNX)5RxAkD)eJuSg9@-;3S!PjA8{RVo}M8CW)d zIgQ$n{BcyR!600k-t;657ys%vVaq73y<8UC`FTWA(4RIWpvQciihU$Tw~^)Baq)Wg z2H-AQ9Rfi#?-ICrt;#o81JtnnG?}JuNXime(js)tuF_bfyLZN(ipN}lL9Fn78j8_K zwGgF6pP!~>==1jA)DV{7w2MmLhC4C1*}zcPe<&+~=m@AJ#c&=Z1JH1ctH7HW^dabc zqvbMcOW(CJZb#r~T(C5(3?Le%&SSctJ1qEBc?MBVv~D*#LK~*jk~o<-6Z)|5G*KOS zFON$D%-xsz^*qUXYPU6vvl6%Qg*kz86r>y<97a3)Ee^x7D&Vuht){V%Nr%+?X38xD zWhyOXX0PegwZViNX`d6>QQ96%P3ScMCp1nbhKcOR=!;w?svPW=am8(r!~cHKaM8g$1-G_< zCx=zTvnW4+PWT(V;Kq+VJ;!HwPVf|pY8`tPVaS{={A;D-0YXuNz;Cp$=ZnTm3;}@_ zl79smzH~DL+@&SAdnORbFu1Mpp-Tu+&*K0FKzc9CErmc83s9gj zCWa4#+@XskfM|IPnh*^~l`0E>RS$_jzAA|D141HPO!zp2#d#eF#Y!m_uChy4fX@X> zfFD>55q#h(gmIK&)jg&7NL&zP6(aZ_f;e&FIvY1hnMnI~7XfXhdzShW&!O2`- z?`TTtw~Yq1K8_oWslE$NG844}fQv*&BMQGJcyOP1Bm~4DG9MX3-8R5gBohI16v+fb zKi1Yf_zZ~;LZAUkhq2Y`2fszt3lPS~0l>ho%e4%N_`Nv68Jlkix(Kij(2y8zmwe9} z4@pN6>Hw%q!TSJ2aLEzBJ$ z9|LVf+&Kt8qX@-L79IR*AVeE#IFNtgb;24M8El4uhJlfQJdemy!Q;5X5PT-C1c5&_2=IsmPRjfrhK!IcjZ4`E2i5kg4;1NgreNg!3h ze@_eejUnLUZ0YO#1GeygR~m4!0)R0PTL<k*nnBE{2rNV z)y_Skzedd`tpV-Alrr?!{EdJC1h(k|TAg;J-o=V2tvp4capT^B;@C|Y(U;tJwy(;0 z`m%jnxQECwct{XFTd}7Ec2JWw01VKpMh$M!>=uJir>LbBqos=fiflT??@O0&>D`Y) z{94ARz%~TdcqLg0dp{w?LA5snHX>vdM=VNIHm|&oH{-#NKu<)~ZE3;+n!pvtljOloGoDQ(M4Ecy!{+QEPhc3uidW@j1FbRyv4hM1Z zEWP^){NQr{{PTVW92FLK7#u^jE377FkqC1E>)>LD*%!!3(q4sEvnz&f!!@=o{2D8jgWcR z*tq-MWo)c|dK;kxZH5o%_MT1AM)UntG8-FS!dfo%%p|;^MFk{IF8e@E6P1!pC=*i( zI18S^x=YKX+x+p*Hi_lPxZqPYFhukpyy=V`zLjB0ByWTf z9q5BEq_>K}JC*iBmsm8?kDccdL{mc=u>f(d)^yhuRJqh4tuPY}lKc?V7nBdT@M)sH zf7fj^#q2SFZsX4DN!}oJ6mu3piYdXFDd@E-BS}GxYJUv1=e*vP9|-Iy=gbhLWB0lG z{-~+(&RTkwdX?RS7Pkb?80j5-NnuQz*a6-&%A=hi*G8{l$__zMY!u^L@FWQq=bO!e zIcbMGZ>NsP{ys6mn&9Nq1m&BywruOLHqQPi#D>aS5C?28XW>qLfl%j1RTDF;Y0YJH zz?rs5xR9iku)EBrGjLed2eCUacGrTj`|XBA1fnjWyUZ0oID3Gc`3Bvrw9`xc~dx_-fqIlAFY~v>8 z(gk2eJb(Jm%?mj6XI=n2eqzf?{R?Si6BU5Q)>?3dMb?d>x6B{vz&mJi9uH8jy70d=`vLg<5HCxGt25yP@Zi7L25a3| zHx{>4oBHMj8m8SV({ujxBIx5Ci&1ux%AJI{ZWezBB=WXHvAyzzg->~2Cb55+8<+&N zCEt)?A36+!*$hzm7APpFU>;GH0fr89#q%+YT*VZ%|mxFp@89Gc_#8HTx(*8BU*lNYuSc6yT6#bUUItnqmc-)JL1!3ISflzNx%3oIe z^TWf0bK|e^Ev#jS<2QCa1u$bh3x3nXtD#HZ{Ejy3waS(t_}k9`GZ@XI~lUxRl54FpW=I_4MfwlhrxU{3ir0c3}W_q1IvO|oO0czcOKwZy*#Aq zL6HlmYuS_4y*F}E+aRtFBJqns8o4{2*du&30@MTY28 zNiLBQg@(bN|igf9Hj&0SQwjb;b3a5D%4S8Z9WUC70qRTLA%S*`BHN6jW(ne zJo+h==%M7b#T2R)qcWzF*G4`~WQPim1mgBw!9EdW>}=bo~T<1lBbGM}9QcZheSXebU=J zE^Ej!R~vR?&!-7wB&?v4J*?V#tVw2>hSXc77T_CATY`Jn6?6|ls=EOTzwWyS2iJWU z;Heqjnznd7KHuEQ&<-VByTdiVWYo}kxmOXDe`1(<8h zHf}o}X=M~q6wS{!U%=C0TtI0gROzr$TW=i1O_kP+q~lF`jgAEFpJZ2>1-RUF5dbA@hsuWifA?T8YXmfa6n3cG!D|Fb-a!I%R3#ujz$XNS3lVmXi9#uYskI~A;`315 zL$*Ek0ZM?9i8bs9ugBZEaM^I_;rTgYktSdZ1EpZJtAJlT>L$i}wL&^NRpLXYe>C=v zw^g22l~wwjX2*<&wLc>Nx%f_~Pi6IFRn2BL&FDuMtCz zJqaR$#vc<)PH&6wRzwwuaKyr|ZQ()?93-X)xBxXXx&*%}p|&CsBBG+@?QoEfgy6~m zi-2%%m$%n;yXsH@L|MVO*yvKh+k-hNHV&)`!b#*X>=A~NiXcS*_=rT3zlzcd;5k75 zFnk987zan_J%Z>Iy?GxAbtQ=yfCPpn{N<2HNC<#(0P+8dmnABZh(rvusZMw(S4X6T zgv3t#G{G)-(U|{ zhW=M&Lu^FNe;(Hdjo(GxFY>_i0{j-k1E1=SpcIIt^`~4NeM7;!F=5hCOkmqD6Z_sg zHRlB0*z(;Z)bmyXSx!dHs|)ca1ExO#;g7$^n>KyS8v4>KT<(sz zyffP1ysIfY8*>!FRhr!(*01qwDNHa?yQq_kEPY-dQ5r$N*02dJSMxWCHV4Vnx@#P43Bh1Vsx}EmZeoCNM7D@1#mB;II z$r?ZM0TP6d^t^-5QdJ_yuhe(rGvk`T^jA+zL=aOnR-|pgNt7wI32!hg%Mrg9^jrf&LnbFfTI84;)-ymg0t=ps{*r#3qpCMx1;W^lyBT*Lz ze&N~u_(MNmhSvq@=qHGqDq9+DC8zvA7KMe?r)?fn(=%2gkdJ!zZJp@At36;(rDqU- zUAepvF;fIm@-1L@s`?2^A27zo$PPhEjDSsHR&FX6g8A0}A@$(0F}JZb>v`}JHF$gv z#7NrkGR&-gE*fT|voNZd&tkv@TA9`4BeSa$@s*yknpl60EEFczUk`-o3F)4bFh10$ zeXw4#r?f_zS*yu#nd1tc`F#TWQyFsmECLrsm-AS3r78803)pkHQ%5#OC)ik`Dpr8c zjTrPineKN*nR&Z%JBO>ycdl{dhd0F&}NK1XCVChkGc zEA`reUVrDi9k@%<-c_!U$%lDlg}v5-ESkgHWHjW=lyJ#<_O>$&G|t=LUogRugjRNF zmy`*;#v!W!XBa{L&Mf%K31sRxE#R-S8DZye1~wXIo2Z68Mo3aLUh}?1eHV9K&V+t< z)zmbBMGZ%tD<=dNRwD#jzCvIbn@0_>;lfS?-p&WT5m7)H^6Fys1 z?i_doQ>c&AnJqGXYNh%aBKz#!Ky;E`u6AX-nL}F~g1e#AUk}%z+bM8EA6=1qK&a>x z28aIj6*#MGSD5S&jqw3TaF^6B6!lhfgXp$ynxATi;@)F~tF(?HY)57GwnRZ_b>S+u zRD=ouF!b9;J-9SMOP26Zu$JLTxnO?omU9rWJ1w_^FxNsd><$)l_7GWZYiXc)%E!J` zge|@m1>w3+^g~aW(Nl2OCl>~wbJQw%&$#~3Fr1T=AefJC;cl)0mS3X#{hN(t>6<3=5HMMs9(>*=FEQ#UbV8NupwLa z1dpt;_aj~klafBXLCAq|>I1Y)nmhrAGtQ5PJ+Cg9Mf-Vxc!C1<9+=(rN9!>ayW+75 zc<`8tW_*VesMQfM6!mAf3_QhJ(*=;r7?X`w8|g^L_ZL~fBI3f4Q;#E+ssNmpTzeVM zD!KO18#{2A`bJ+uQCXI`9%KV+-(Lw&^c_j`1nt)mIOLw;;fhsUff-l2(}3dix=lcD zsMqUtr`|YCE1tRabv_Mw+cF+|vu7(*$b~lR0~t?UUVWTfUA=%Jr*RE%^;&`q-`PA> z6MCdadjhpo8dcA*UY`zp)-3)uIW_w}gDnzGMejA?Eu6`$G~gVU;!1GH7L8N&z)wKB zOlSNqC6ITh)xLzNtvWp(h)2}dwlr(cI4qAWESF{i>Do|uUzUZk!nyU-%_NfbRbtyv zM{R0rVhK@?QXx6kDGL*hQn4ClYo?7pfGd^kGx$tFyI38bD6296k!<$;;G_7#I8q$6 zqN4%0r}~i_ye{ZHe#Q0dYDl+i%}2@p)+X8T1yyJOIpFMez>qjbQUE5%`5B@botF;= zzv;brFEYZUR#2YRypYZg3E+AK=sLaoyEI3CU&>h^NG-zXPR~VZo5&JdU&MTA46KZk zH@bz3HeP|gxS&l*N5`r^Pr^4^JAxVvPjYUhBSV~;pcT?^GOtG97O0b~vJS3ODB8(( z9RQ>>Y8;(vT!*A2@Sl=5BhvwrbAK2ub@w_goL ztN1i@uo-y-on=hQ#~Q3;HGx!#b)TFj=wCjtrC7HN#r&$SqBym*@M}Ui7XE-&^~_R0 zWYUU7(=Z`Rw}?YvPJbXP(5S@I1^UNwJ_Ctcjg#_3WwKW`@ON{l&j}7^?mtz>IA0q| zLv2$#T&B4jz=T!#4Dy9ivGg1)l%&b0^$Ea|`b{_FzbO6(c47fFub5abR86PTf7XV_ z>U25@%a1Yk3mi+$qlMLs3Wg_teexMj5sWv=J99)ct=w^p@~Mz|u$!e$@26*8y_|LV zKUd`AAgssPxIffjanY{abA9pR97jNF@fT{Z6fa&ps(5iX=L(;JwHB{aw;osgMb1_6 z|7q{r$Y{CYDvO|KX3pFE%LhdA9>Ta@|3+7HBB=xenK>~rqKnT#|}%e`Fa0(^MPc~ z**WLAopa_q=eZp99V}53E25$*nbTF28!e&`nq`QhW7jBycu8MW{PZT&i?(!nLXOA^ zTJNKxg0EWdsjn!llRmga3w@CJoVg_Hw@{i2%5%)aAL-F zTrUUZ7RG8M!824Lj2aimQwsRVD%|J>11cqDON7%nTSwT^d~@!9JqWuQfaX<1^hrk2rdyhHJSA!Sm4k;SQc;5|Ai=g$+sQl2A%cyPmH8 zOGfN_^tEENKniL7I3-9MU|0d;`R&6KDcYP|z!Osqm$>Q?{e~bbAG@N@gs64H(>9zJ zz#xvB@i6l?BJ3T$(8=l7AI8-Kh)aOEcT5W04Wct_I0Hz=&2*G)9#1_y1itl1N}rk< zpN->%&k*kpH6KcDM&!=;MkxJ2BQ-rSHF6`4G7!9gB>V^)NJhB+5qycRa0_7SU8%9s zrFOSHOkw;KC67A`kiPIS!?)&?q%_BMxE9l8M!Y?F38W%YA{~MJ=_3vd?H7@eV%TWT zNKP}&7|}EYwrHF%BqRY`!O(dFk%tiI8{EL`_cnGKkPiE~>G!4$IDi0<3?xh(F%N+Q zeMsVAdclK3-g%Hz zbMvyBy33QNGKd?@?LR;pH%v?jQpOD<^SjZ-y@RZKu!TBrWan20`?A}O{J&W6rX9B% z^}X#pUIn?^$$!!P-Xv^TExs$aLHD%Subdz~WnAAvJtPA{i37$3CU-c6-G3XxKJA zZ_fD?J#hEG32TqpfABjT3)pAh+6P)Bcj&Kw1rpvz+~mFQe}^Z#zI#eGwq3}a{tL2m z|7Q3lBJRGYX~*W?@D+tA_+Jv(xyRTOnT}9YGdJcEcyRGn-@jkOJ?jS7H?lbgy{OtnL+*b9u07b{$%SfjhzS$R< zo;`6*Ua|SM8)2@3-}FRK?SJv~0U%_rehlXlNMm~TK`SI#frJVAt= z-HEtD^Sf`s^8l8FWv=07?*3h1oqx!d_*{$q%jN$9yZuA*@sNGpORi0@t2m+C`Cob* zdq8gbHVS$Ba3$W(!@0^GW_Ctnd(*TOuKMTS0>|tleoGe?y**|(A@TM{BihYJ&Qp>G z_tSgm*asnJI0Q2LUM|Gu$@_oK(A9$e4 zYT98E@W=g4UL;n3wQe?iX6NF7CdKhGP_;eyB-HbvU9{VH|8qKSvJbrgwH~q516|D#c)$I%L0SYE_-+qP;~yx;8OaWacIX7X!wXVm8vM?8zf z0||a>!TWZ+^L-E9cR(&u)Mc|YHcN(4Cc~YiAEWz` zviZVf?OZ9^FTxox(1H@siP`5kc9}6(jmjFXwvK~#OkwQ!nZj|*`%v63h3u6$PPA0h zqwMDiPDx6Hm`2H5&Ha%JWG6O_$d`9boD{@PEy=TKkoC-feCtJVE%#$BzuqwX;Ip4F z%keyc#2VEK0 z70?afocDg%sbMjkMC(Wm*%od4kQv0{?)TjnkfnP$9fG8HgX!s=>cD{WA{ksR z%)4Je&G5bHiA=u<)OzsWU-A{2*;^B!@cq>Qs{HTWgx~JZzJ;EJSoDRG?b?42`9=AD z7LQkodrICvNmEE46`vd7c1M0__FjNfam1{{P*Z%<&!Lg$FHfRd@1hNGRr(~~6cfW) zKArluVMRp0jCilbUA^^PxX!z|hGXb7H~MLC$2(#f8B#C7qsi>e{}$MCPpl<;rq$Dg zdFw&KYWLgtY%_GhS)^zq^d^5t1AX~=5$1v??)g&&H*P)q5}J|i*-D~%%?J4GGt<3g z{FcsClS2765p3g98Z1(l=FnVd=N#ukW_iJ#Ly9q8YW<;AK zj@aD`*;VX(71la?KJmi+t>0CQi1Ty!>>E1|2;0^r(aRzw8bJN8W})8u;CDdv1`Cdg znU#7rPOeUn4WFAi7grUI7*3aG;HE)*@5%WX-g0Jd|2#0jSN{!`A`jDn?fIMHXCtTI z-%RyLB$$q?@&?C)oY~*t_}G*E!3TIf-yB5);NX4G9=X|b;(^Z-t7$oLdZ97e-+Svg zEz@&%;7YoRXo!fb{v4L!_1Bq}!U5b07*{F(jhJ~VsYdjtxa%{>zR z*jIi9(Rg3|jHsST$9evrya4vN?>&gmw)5?z!R|Rh`+!&P_zG`U_eQ!W#e*B!o6Ww< zf5S@T`*=2D9Qf8Z~on{pi@wST{!vELGexZEnzC8GrElJWRZ1 zj@IYS1*FgdOL={!Q$F$@f_0hW$RWI&i$w60k}95aQ<4#`4waKQtj;*QrCtM(=bV%`l(c zieQ^<^AN1i-1qo_?r?*3m^z(m|8(h%W;oD`>viK`YPzf+i#orbHU3qfV$mm=bfh#~ zJO_{P^kit91Jjw0IK==%F-t_u`L)O<$K0(cEE&1qQ(!qH#S;$J=?R9rpby@K6mC$E z=&HEH$XXO(ksgK1#BmE6^j~CMLrQTtL7VOnbE&Zl-o~IS_<}Qqm$YSQ!>Q?}+nELo zPi9yx;b4q_>Vb6IJgzIlW$6Pi>t4)9f<7#RKwAnF+n#gM@a2@{9 zl)?NCxGx*dBG(-}!(m5Yt z8SeDY41x1Kw8V^L(=$-{&zParM_+50c~c6R#hDIo+T?)GI~m4VO7=4m>Gu!aJOokX z@PJPm6M3^}{D%h3^0#Lg9s@~M`G0*4T>+(dqdVwCb2Ku&54$GveHf*kB~rY3>wSY3ASYa1#kz)pgZq56 z7pdY~pZRRgi3<54lr}Ft#u%U_t{cyn`nph76o2gxU^qT zXt}%a(GB?HA2$r9=UctL4~(SE_~!R#zS6G_hqelXz**?P?#^lC^yhJoCl_<~Q@=!T zvw2M`xnX-oUm@GJ?~w@Fve^ek)4t4C+|Ep*gPwQ|FP62fI4xdhq;%%?Up-7lZ(p{X zjJux4HlTB_C7IL*-wiwWQ4gOq(fV$~#>mi)JI2O`Qydz5 zmm}}1**0x8UPZo4oQYzy_Q5fziM~@`(+-hKYoL<=&!jQXx^O(b-h|iSa1Jj||NaMF zfuiR5{Bs;-BSmQ)`th$Q#c%Ep*TJAZ^5QnU%@)7#3BL8^y^Ujb@7l%K4Ep;W*o=1E zU;7^cQRn-|ufVls{gKKBQPCgaEWu(=Tf$uE?>^B*kXiJ)gDQJ@OH{m*;Cgyy?yE;hy-35x$hjix$t0wdX;z?XLH+ zp|IU{h<3I~8^~$W^KC7T7~FlTJ8@L|brCcc@8547!9_g$A+!_!zX#wI>wWEAqUzRv zn-;=o{?{wC>!{7eM#R(F2XA@bbx(mT+tIDCV#9mv4OjzCVIzR3!)Y$CbIKpFPqug? zo8L#>AKKp~3bz|!KR0`N#nbEcaojZ!W8t<(!ftGy^a`m?_VusRwmH3o1|4TzatMul zQBSjTm*kyv(%~zqW1uuE7)Wb7bnn-2%ty0_(rO1mAV8V*l&-*8UT4%FG?8 zjX!1PdVlFkFnfmF9p7%|9vkbzp5~V?#(UsAI3^xjHGZaPsm0b5w-FvFo2(r`v_gwOUO;u zwy?xy$56Q!jorgX;U$eerPYetd6mw2ODX zYC2{1J-ORuhI#G8PD3;7&1dRP;e03=(EzvrF4DEs?AdhX(M`Bxp}+vG+VlAUlCb?Z zUA-VJ-|c4d{qXcV2Bh6MYn+Y1zQ+O4GkDme!_DrP6q7H(|G}nz*lC%0Y42H5Z?E*S z&JR*=zc+Nq>TO~mu{zzsW(-QS%PwJ)^6VnRt-;v&j${N@E@3koM~yZjRwy~eXrvvK zF~ex=#sM2$l;A(hvd)xTlkf=T6PHn#r7oVBC?*9a9h4*d>;&nf2#a^58sJB~eQ#$^LS?|6y z4^{S*KVjpI<7YGSUJpZsKkm2*>f=-OyA25uTzT|t^M&IE_SS~lsg^B#kSHa z&i!^ebSw|C!H!hy?+Pm@w@|H)rW3oZ8VFCRrq|1~#~KIX1k6OVOi{co^3aVK7Z zHpHzfe-DGuw=b8uiR46?Fg307n1c^_U4u|tqG=)Spb$o+n|F0=#}aJMkAbTd5?Yo< zx`%h>t$Q16w?9>JmR=4I{{ss)_tbRI;w!_NYxXxW2j|)@aKJNswrPdg9f$M22-}?_ zusD=Ig|*)O&Nq16-wrJq$A=?6!(}?2<+#++|C|$N1pfWA{pi_!@f!r&94!EQypN}2 zC9t3PH)f*$yKDmW9Gy&gzo#fA&(H3~Y_;8Zw+RbY{xhacxZY|r^yasnrrOovS{y9eJ)YSrj-SkP_1NWl>kEVkPsa<_o3 z@R|N6v`zn%i-6+(Y9lc5dX8cY_+#1*L$KWKU%K#i=C*j_&m$hM^4yM|--^T5R(@hny#Ps@v7mOpE@sRI(*LMs98D}_Qh z@gl5@N8xyEu`NEi4hxO#&|oa!y+;Bsca?)~)!^p+5|@wvwuW8<_D%o8R_IfEpbWad zDgeTs_Ex-wybscw#kLcdejvU34jklpS2z9xFDdR17jUHc&FViIE?WGry|f#z+q;KB z5}tYgd z1jLMwOr8jf6>PS>gH4Os{=sI@Vc(9NBxcWb>+#!O7)e?0o{i2Oj^XIRf8Q->wT9dX zZV)nx+Nx?F^_$(dkOw$d{|wm6y}ctILR+vY(tT^+kD2eYJ@1J%WMf7C^58?m`NqJi zdWXEKM&NGC-bQ244Q6zK*&zAS3R+c{N;jd47gzL#a%wb=yw%9uYm7!Lt*OSeZtu9n z5?F-)ER{JsJTz9~rc0yoK3W_N_dkG@6)05KpcEYI(lP^8Y7NzBMBH-kN9I$z-*Jx` zOdTq(=-(J*KN}?hCe~il+UJbxjFL+^lN1+w zV?|lED=*ubqyI#rwrAn$dX9^|A$-T$eg}l~8y6cH=tBE+gn`5o8$oaUknhfYVW95{ zADtZfog_s16VguVlm2MGGo#Kk|C1-|aadun30bvnnO*x#?~=rn%)HdN*xn^+>DkWI zANqY%R(@{c0|iCn$GPHSEn;V4QQK2QR^!Z?xL8xcoTh0Z)T7npRjb}RV zmhf3H@SD5!o}soq_47lYnfT5cM^CV>;u&wmx6k&}&(%ERZtK6cn||EO-tK{i{%Kp^ zlX&Q~M%YbU)Voy)K_^kB{6eJ>z|7q#;v}F7LQIW>J-WcB`;7P7(tpVPL_YI>bf5WwJfz2U=Y@OEu&qB5EP2fYq|OkWxwzO6 z_q}@~(lhe<>wmWBpCRxx&#*3a=TGmyRY~K%+h=UEPc`@SjQy*Rd+f)4 z%@^hJ9CL4+ri-&JYfF~&4Ev~uGcl;gchBMXTI?bZy*q23)?I_p%QJ5W_&hcQpNM;I zW?P$%C81+S-h&b@S{(aVGq*i>d*N_7DI+5;w*MTK*cIVjIK)7P5^W2Ov^=l&D%D*% zJo~TRBw=hnxIJ_gmp5a28z&Jfgpc6}9+$7A$Hm4ltXLKooX}&}+yh$P$*p7b(aK-p zlhCsL@|X@7(^dkN!soEgD-u zi~eXy9{{5Yg<&SaQUqgHMvB5O1VYk1#z^d=ZKOero4-}iMU35YFU|+t^{s=LNkokP zXko-u2VW|z!b`sLw3k_D3 zd{Y-IN~$Meg+y#RSW!pd7X8t}0Jjp@@CszA3g8vUETwIu!HaT!=;8%%@~}tJ1s%L7 zd>MGrA1w@dHp-#JgcTWb(*tp-+7?=@5V@s`75Vr}+@dg%(02eiZv!jl!>w7mFy@0C zesPW0irmSdjB2oZru8(I z$k3*X2Av&B-0|S_HwcX({8@u_UN4^bGlbt~7C*=F%MU>3AHpxRSoaw4WgOpWr1J8? z)>B4SUbmP%uy}-Av2h`*IGrX}Y|fz;i*C0rryl6@sk_AQ=<`Lp^`}zx2}j`L${g#H zGBRCbtsW8f!9mnwM}Ba5WuaVdzm>i}UL==ST|?ys_0~NR5{M(s3goT@2CG;8V$HJ# z<*DWEh5#meHW-v9$6r#u*tbdfeED5f>n)$D3YX>^m41C|R0Z$bs=}pxM(aEomy3Tl zT6f9RBb~3RgN416!j>m`1+ZL$e6Rr`&-qk^Wk-5hFUy^MdQSDtk;fyfn`M|s)~X82 zd=W}-pMIn&EV-yE%=<1PfWXFuCWQe1VpHIY#Vb@_TwbRt_+C{N=I>DzIu5A{hyJN5 zw0Eis@JO~kNu!XYyyhDP=F&^b=PQ?055bo&fY>Ha@4)Bf4~w61`bd3U4lbUar#!i4 zVQ=eF8Rn^9_qMK=dAnw1Z-oO-uIX)^FMqRWLvKZ%?VItK{LQgfm7Y7cDxWXy?yU%5 z{`;!J`G2Vj{?kg6!~f}R?G&fvf}au*JAU0q>0{gTs>0fheFBv4+SbQEG{9{oH zl4sAU3db%e&5qCOD|2$i-6Vi{EBh+Vw!f?@v~TSjfadoFnr&s!R(_~@^2}GN!iVRT zW|yz@m6zqycM!CFPg;~kV9^T}g+J$CvRJdF$+h%Ni!1=&oz!gML5p>R%!MuglKZem z#9f|~%Ek7cQBz+xt;*VI!22xT7#msII(<~$^xC@FoYjJIFO=iCd~$DLs-;||ZYkGYqcEqWwQBmzhMC|8Au~|W<%5TQQ1{BGn-n(zGGyhM&Uza z0J#CKY0V8S4K-Db!S&Y$_f*&fq@|7sHl#GEp|NgMR#S`Azu7el<|d3X@u}#7su?pz z1=qz$!&g&1h&n85nh6xfHB6q4Kbdutnp&ie_>gZMlV;Y*KugO;jhhLJmI$;DE8>PC z#`lQq@?1%neTs7cp}A1}A`+#7s@eJ3C1N>>jUUwm7O_J8%(d#OQRAmKU`mOt2LyTx z=HS4f7C}tEF6b+(L}6#+g*Rbz_P1Pyf7n|7qL-n2tqYAg1}U+fh(B<}KTfg6JJgjB9~42=GP zJ($&q@A+d9{HX}xEUq*gB067)o)|ngoVj9%r2zxDxLYY;z-pwR_Za-Sb42er=Apsy zmtKN{I)CzWi#44iP!tp%jy@h>dp)+Dg8aMpEa?H?k=jhoBL=STwrx|ep z?3ZndwhrT0pSD;p8iLT5ccUT+T?XD`6c$>9{e6i9Lw+o$+jpl?>3R#gw(-l)Sgf}M z^{m=2=GBVb&yVFd_ZOBA7WPL|_dU6d#9pljiY|^gtWl6W%;@(4$t}V3hiM+jGj5UM>mqQqXMM~g0^I7Ctq?P7?Y|I%XJq(L-fuP-8cpdWuCS~#61oF7Su zD()_^q24gM;5X+e&{w=nvRwO>#d(D}p*~;Ex-Gm4(8N0sq6B4DBqS1j}B((QlMHA?@BUm^ZoM*p|7{^fB3ZCmVo z)lK}_>x2dM!tr8pbTIEPah#A#m^3;xwR&)sNxlIVpRv0dW1`5CJFi!t%!r5(mf=j$y#u<75s5*M`TSi(#;&ON#*x zNJO?z;-?F+00<}lBmt$RjblLRgGT~NpH;QtfiB%b!afoLv{!=+)z^pru(tqfgK)TA zCYIdw7+eqe@X5pm*M^7N4!DE))fcqHs>CfLKxD(dA#8Z*$0K_eBl~0sc(t_E@L^LC zkcdN+wT8j}4cm_~_!}>3$=5m35@mn9kF!(qoaT7CqM>qOv-Z{qh}FTivqT>L@;&Ri@*xS**G&xLgi z_<~DX;F`lhH3~482|Ipel;%Epg8uJN@G%q)grE?76e(hGc^K~>BEU)~%>R>w0rMdZ z!9Y_Ro(abo2Ft(IG9mQfQ^aEX0DeVZ0p>yB)7=sl>UjazRh@Z(+VEJMXIPvF!9w?# zRYc@?Uw%iF0Mn#!`GAB7bA@H>VE(ZZBAVLph%DJk19IJEEjvOEbwwmL4CB`i7GM$; z-Z&~D!F+8)WTL4Jk3>5|;%o>Kp-0Ff7W-|yH%{;^>?M5qZ&@bf%^QLR7hD@2i(L$h zt>0-`p?6>{;z27mjKISDCwl#8E9P-v5zAi*!6HU`I35tl`N0CL&%!ww3FeR-!U|1o zcvhTetk`=+%Zk8Jya-&}AHdozoNSjkz&xGBAxZAf(vZ~Dh6ldnH5!sjzSjZ|KKK_g zI1tBwI8cCzUD*0(2?ORw9YVgQHarIH41*&f7=)M^L?p0Uue@G>X?`)}a=u>w2`g!T)vNXQ|a;ljMcWswBehR5YN!{uZM zF5Q?=0;qW6gd=MsgoR5Zq&EopoikLJGrEKd^F~){!=uv0P}%sfmMv!4U?T#@&^&OR z06z+0;qwx3=FrZ-FfVrrxTZEd@TJ>mXm*7Fm(4=~*oUqY;I<(g*(1Sbj`AXj?0@LBo> z4U@f(X&ED%nMK&E2Jnme3veV8_8pO6vyc{%{S@aS2}M&IUMTAs>?I4eu*s+`!aW|t zAL%E+XH7W#F9|LSlVNaK?2H6gQyU)c9tQVF2waT`T}0tT1m6)Mz*A0Ge_ke?qHq`r zEHpU2U)z;nTVd*F53eMOo;yFe~F;o(;jZ;h|pybeNq&pzApY zC|JNLQ1E~A<6*J%O~PU$?nxF;cjXOI7)OMFNcKbs@Jkd9TnZ5hi(m>739Ajyly;zl zy+H^%-MKv|jDb_6ue}%9 zIL5G8uvo@IwoQh0=Md2$BL_S}g|k2>jT_E&WANjY1LSi6b_0I^z=j7MPzMg+nM;V$ zI~+`f!w+9=?@PB+?_Gi3<&oB%TZzI{c&-X>%=__}x)GSf@~e@TEO^Z8xUh&wEHv|r z`Ur5E71|$>&|m>>Aq#+}HoR>20*%4^$q+QO4l^PSha!2uS%9yuuz8UlD+1fIpz+0d z!sFm)IBZ;^WrfN;M+Cp$!Y}J9z&lu2_S+EfUJBS#)<9`^v)b_BFEQ|4A>buvAQALo zW1vaoh_2xt}u7y_Erh6nxRTg3exzYd{XaXk{j9!Zs!iuemApWqj$UAh4G^}SCSYu9^@Hv7egKQ*&jx_W?@!r@ zPlU8DhF=#gAof65{RMlSX=7t!%YGGTK@jWQ+~=6coWP z9?I{yPC%rCu;-#AR2FR;@_NzK>LH<6W>>yVBWuy`v?EL8GxM+#!Jo15m*ND(RtWQ+ z>?7`6SRgM0&!T&!F{P;u4}J>+e<%Q6EoR9%Oc66;IfTnE0{DOFB5?q~V)>QJ_dB^kYHm;&PqVC9*unGU5cDf0`f5a5Fk$qk+b65Cc@u7 zjNb-Z%=>+W4R1<}X5q^ra@N%9A)&~5p^xOe?I}GuCyHKvBKTFq__Kor1j7iQejtHo zkdPVZ?u5m9%0+R)pAy%wD|2@t)u7$yxETl^8vg zUw55=SR&zy2X2Yval_)lL*%Tf)k8v&a~EUuNnjAXYo+-t`Sgn5x7+wraRQ>3gte#BcT2Ic353~q> z!;O4roPgjjVcQ;w(Ja6|M9!L8JtP!4f65sB?F14JM>;kc&ISBLs^OseU-UQgg_~U>*C1mAReAGn@R@wND!2;s- zg!7L?O3FQDEC^vW%VVI_>LH;>`VcU{vEOPvNlPB_BKYGs@LOU9L+iX_?W~h6jI!fnV|m8N6E3lK;ITX+$Inom&Asf-)_Lze&9 zQ&{{DS zXM$d^Mo-WbdLcsE8p9um77(K<9KOH=t<8TyGg^}*Lk}*$T_xzndq~hb06J9AN`!}q zz^WVg^RWVAVudx2Mu{_;<MzMn*^4{ki_7TBfzJWg-D7! z`K&}oi3ngmUx^hEbuM%~+E<#-l=US<&@2~>QmcoABIreXNzn7!WlpQ-vlNRZg2#M* zV~~J2cVX{p2|PxIh{q+KC0H8q$NypT0wx(0c%S7~ciZ z!G|T9z(Ns$%h&NM1_{XQAbk3;Mbe@vHBpGDS;8WvRu2nB)F&CQk8jY5S{=qH!e2Fn z@8AU_lMpVikl?elMSs#XAs?DUmvW?}!$V9z%FzlSP@-O0K4EY=^!(71?eE zsA2rtjnUTZpk1~m%u@t-YB0Z<7m$8Kn72dXEz9?$NKu|glm$wu4NvW1#@o|CA$Xgu z4k{JlZw7p;fQ%o)mctT!mP?93VhN@s_?p`A@Xs>%n-NZ$%kkU3?vMCX!OWld9Jj|0 ziM2RNON+{H7gLJF?stx+pD~U~hr>~V|MYW@!_nr*ob1SUI3_!?CbPQCOoyX@K4m!^ zdGr@$`LDx~OAlqba?nFo=2VBHu&n~0nsQKEgN_`|$tXKhvfCVv*325TESZSs3#ja( za*?AP&(Fxlqji~h)YXQvV=|R9GRHd{`E3*My(=62ms2^5%FYBJ=$Ms>$~*@uGYMgb zlgfo9Wq7E@h5jotfp(SyW#?2E`g<@FXy>$z!=r6f9-Zj|WhJF}D9?qaSsZMm&1YQFl;_VD7r#ohV-pToR$d!e!CQv!cfwHrSWYK~azy~tQWU|SmazWcz zJTyKF{Z~1_f2RXwXF6o%m<<^^#!d#&nUkrUPvzp0TzsFGiT4v1!b<*@kxcVYNm~MG`F^l9!)(>cGhUx1Dl}s z3{;@~#0mA)(@UFcb7{P{JUDtZ#sP456-^iWD;ZBnIf${!)M8u!J(Y9vr?_V4Pi;hF z{J5OWXrG=oNy5LL)rQ4?TzTr$%88R5`7%5Qjb;!nmrDxt;S;SQ{I>kY!YS3sV;dbg zEntF(f0L#?q=6sS75hYET4|r1SW%vuP&KhM6_nMbVJX447~N$=4?UPo13?lM`$$Dv zS5TQ#(~vT|AS-n&Ek5{hrOiV7B1s-4c|GGlwXwA_XF`gjnDLMLpxKR~RVK;9<s9*PnIJ`(;lM}KPvn&hXd`^Jiz>Johyx}tO`aC9?ZmQf*(vI6zG@u z!-fWpr=oGh11F=utta{e{GZw?j{!%%Q=(U*zgUC6I8{{m2k1{x=yxjgXO&6gLE>Nc z^rL++{duj)68)JK(s<~Zel`ZOT=e|pA`Ai=qut3rK>uWg{#>VouS9>o2LJBqPgdy9 zY8@lazbr?QrhWJHqkS;_DFON&71DU>k^aItB>zkoJzr8Jjh`OruTkiCI%kOUO`<=y zOe*&{{*x5?Gh4^d{G<7MkEVV1^rL++{Y|Z7B>6k9p8f{52Dljii=^?>BmET${lyyk zon%GWs(sr18`<{nGrW=O-6Q?&tqph5oG8bb0+Rx@!8-KA8TL0R5Q%B0qbizd)Y9-TS7822qen)FMsAlV5j;4M0^rL++{S~wFCHk`}r18|V{H6I% z&$nGQ{Vs+6e5XWjVE$h%{mLHD;Z*3)Dw`d|zwYTr`(XO>W)TtK;^fQ%7h>F@v8{M2tFnA{LIwNA`Cz&@{<9oe&N)H+)E|#ol@kjS@~1*K zn3|Xd1gbLR^(b4@K13eSF`;i(m4hBvP3!n^spS>rvlAPyXCsdP4A_wJ5WsW?Duz9g`*g%JgXW*E!Ul@xwKNBvPIsuWzoo*kq~RZ~F2m zDV>vAn%`JiU!6Ol5t!u!+UIK8>(lS7%E@l6o;CrzRQOmoYoaWVHVyt-d9YD9A$KhF z%)%KJ6H6N_v()%x%?aRBG$oiG@z6%u@6#EJJU+5Z3$f-k*XE3GElJ8~t(?|4wX!^Q zN@a<&HPByHS%SnLQGW}ekLf=u`BHxq<`Tcli!t63HSOtOL#;nCerJ|JZ*0t;nlYs! zc|sfX$SHN>QmM~|it@3|)j5p`Rpnxzj<+Wx#b)e=+7}FF=#x|!A%goOyA0_&LP^`TE}Sric4Vdn+UIN9hl~fd{wVYX z`oMWrfF9>m4L!7|sOLKyCF5zX7FI(Ep!u2Sa28jK{E*Hw*rZmSM=(;dmHFkEHAUi| zBSn&r%s(Ph4X>KYrAZT7D<>ATmX&9xl({M~-zT(IP0UWL9G6;JTb@0Goo%@CQ)GPV zH2APZN`()dK{{NujhOdyv5wc*xn}2JJy!an?{mil`kSfg4+nSnVJ{H&iOwV)*;tFa z>1$?yUgr!Ay}I+GTY547N6PP;tTKuJ-Rb`{Kr?f(ZZy`+NiD3HSYJ@uC{CZeSiNv%lbJIip&sYB_$h2jmB)vxSQ>v}$LrYfSc4O)lfjQ!(s|cp zN4muS?)b%yw#GM>w2n_Mt*@Cbj*-GZ`^*`d_O$4z`CU%svWW%QvzE@P&7pUEVRL0t zYJGK9YG&p1(#9H)Srh0ltEq?nCWh%RtFoNd%kh~1GJVden*OxolMz&sR9{~`EwvFi zW!DDYO$5m~ZKS+@XU>)Q-QDgn2&{chvR&C7CI5v*AhwIVfkG; zv9cLwjI9+(Y`Job3$)L2Xxi)2Bl0_Q4&EPlr?GeL9O5(fQ&}VB^*Mivh91TW)%%Fd z1DQoQtDT8`U2{!RHr|aHt@%?^XH`uEUHL6gwZ!!@y;wef7SDfm*Av%-nKe0$bE?X* z_r;zfu+9NWdVoGhlf-YCKf3gdSI)s(*=M}B>%^h?;AnY0$#JHM_{s9p%qKD==+akN zUy)ooOXOGPv_OAj=W6=X@{3rPiT%B+wPa#uV_lYJZ$5Smwq7E?5{sqrDb3fA^KR=z6*Hl6}FVCf08$NUd&ubuyF0FTcd+lc+voSLKz=ozV)qlxv{Yt5}J z7ll?6=nwNhxIeA@+5R-BzaU*O>%q~1_0-t|f8_n-gsB*l&>4{1cYGsTTayF$IL1r- zmd7I-L@IrZCW(Xasmy7dg8k@J*jL2$IWr%mi1Hp+ET6B6^Mk#wRqtD}Q8{uN$Ci~i z(nibcO|DZKFOq!Ocvag2NHm$$#!)c~q_XuTtD*;d8E!%NPHP+o!zS!?)d76xYVZvi zpY(ioCdOoGGv*5E2x1=&=RE=Z9ZtLoiT>{JXX{Hd-YuB_GX9PxNq#cFwfi-;3#2xV zOw1vPzvGML^IOsWl|%Tc_{&%)?T_f2N%Va36dAv((>JE#oh9i8Ez~~khqkYsQw^Pi z;3rf23{89e{js9&z;0L5=Ex)dW)@5QlGYFHddoJoOg@E)HPc~pq;mp{Tx=;I$_n}` z{$Tz~^2&6CvHxMb;N3l8R&8!$TUB|1BVUFu+yCUUbbg}G|I)^aq>NMoJW+mLYTqQ6 zrS@8S$fhoiw*Wot+(EWQO_SS8{Uyug?)oDng84&w^PEcQeVZt^m-@@WJB7_J$-Wwb zA1!0qg$Xs&8r!g5PsJXmv1a0g!25qZwNJnrAkGJAys@=U^}ZF~AJs{v&Cri&PL)-X zPQdhJ^q&VEcl1aHe$jcMe7?mbska^}>#bz(&1db~H0^cwr-A*D!&yVmCu!){%9pKQ z*<%xNrUfEO#Qh(T!a668w>C1svzHSin(&v#n|6I?tQ|jn0`?h_ofQvb(xd%kGUQlaLb4-DGB!%Bp{7C?y33z|Nb9v OfV0 Date: Fri, 17 Apr 2026 10:20:07 -0400 Subject: [PATCH 07/10] update manual files --- man/DIANNtoMSstatsFormat.Rd | 13 +++++++++++++ man/MSstatsClean.Rd | 15 ++++++++++++++- man/dot-cleanRawDIANN.Rd | 15 ++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/man/DIANNtoMSstatsFormat.Rd b/man/DIANNtoMSstatsFormat.Rd index 24cdc059..4d6588bf 100644 --- a/man/DIANNtoMSstatsFormat.Rd +++ b/man/DIANNtoMSstatsFormat.Rd @@ -15,6 +15,7 @@ DIANNtoMSstatsFormat( removeOxidationMpeptides = TRUE, removeProtein_with1Feature = TRUE, MBR = TRUE, + labeledAminoAcids = NULL, quantificationColumn = "FragmentQuantCorrected", calculateAnomalyScores = FALSE, anomalyModelFeatures = c(), @@ -61,6 +62,18 @@ the library created after the first MBR pass. Default is 0.01.} \item{MBR}{True if analysis was done with match between runs} +\item{labeledAminoAcids}{Character vector of single-letter amino acid codes +that carry the SILAC label in protein turnover experiments, e.g. +\code{c("K")} or \code{c("K", "R")}. When provided, each peptide is +classified as heavy (\code{IsotopeLabelType = "H"}), light +(\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). +If the input contains a \code{Channel} column (some DIANN protein turnover +exports), that column is mapped directly to \code{IsotopeLabelType} and the +\code{labeledAminoAcids} are used for documentation / validation only. +Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of +the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} +(default) all peptides receive \code{IsotopeLabelType = "Light"}.} + \item{quantificationColumn}{Use 'FragmentQuantCorrected'(default) column for quantified intensities for DIANN 1.8.x. Use 'FragmentQuantRaw' for quantified intensities for DIANN 1.9.x. Use 'auto' for quantified intensities for DIANN 2.x where each fragment intensity is a separate column, e.g. Fr0Quantity.} diff --git a/man/MSstatsClean.Rd b/man/MSstatsClean.Rd index 3a7e896f..31831895 100644 --- a/man/MSstatsClean.Rd +++ b/man/MSstatsClean.Rd @@ -73,7 +73,8 @@ MSstatsClean(msstats_object, ...) qvalue_cutoff = 0.01, pg_qvalue_cutoff = 0.01, calculateAnomalyScores = FALSE, - anomalyModelFeatures = c() + anomalyModelFeatures = c(), + labeledAminoAcids = NULL ) \S4method{MSstatsClean}{MSstatsMetamorpheusFiles}(msstats_object, MBR = TRUE, qvalue_cutoff = 0.05) @@ -170,6 +171,18 @@ Default is 0.01.} column, i.e. the global q-value for the protein group. If MBR is true, the qvalue cutoff for the Lib.PG.Q.Value column, i.e. the protein group q-value for the library created after the first MBR pass. Default is 0.01.} + +\item{labeledAminoAcids}{Character vector of single-letter amino acid codes +that carry the SILAC label in protein turnover experiments, e.g. +\code{c("K")} or \code{c("K", "R")}. When provided, each peptide is +classified as heavy (\code{IsotopeLabelType = "H"}), light +(\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). +If the input contains a \code{Channel} column (some DIANN protein turnover +exports), that column is mapped directly to \code{IsotopeLabelType} and the +\code{labeledAminoAcids} are used for documentation / validation only. +Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of +the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} +(default) all peptides receive \code{IsotopeLabelType = "Light"}.} } \value{ data.table diff --git a/man/dot-cleanRawDIANN.Rd b/man/dot-cleanRawDIANN.Rd index 51af8bc2..2d0e345b 100644 --- a/man/dot-cleanRawDIANN.Rd +++ b/man/dot-cleanRawDIANN.Rd @@ -12,7 +12,8 @@ qvalue_cutoff = 0.01, pg_qvalue_cutoff = 0.01, calculateAnomalyScores = FALSE, - anomalyModelFeatures = c() + anomalyModelFeatures = c(), + labeledAminoAcids = NULL ) } \arguments{ @@ -40,6 +41,18 @@ the library created after the first MBR pass. Default is 0.01.} \item{calculateAnomalyScores}{Default is FALSE. If TRUE, will run anomaly detection model and calculate anomaly scores for each feature. Used downstream to weigh measurements in differential analysis.} \item{anomalyModelFeatures}{character vector of quality metric column names to be used as features in the anomaly detection model. List must not be empty if calculateAnomalyScores=TRUE.} + +\item{labeledAminoAcids}{Character vector of single-letter amino acid codes +that carry the SILAC label in protein turnover experiments, e.g. +\code{c("K")} or \code{c("K", "R")}. When provided, each peptide is +classified as heavy (\code{IsotopeLabelType = "H"}), light +(\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). +If the input contains a \code{Channel} column (some DIANN protein turnover +exports), that column is mapped directly to \code{IsotopeLabelType} and the +\code{labeledAminoAcids} are used for documentation / validation only. +Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of +the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} +(default) all peptides receive \code{IsotopeLabelType = "Light"}.} } \value{ data.table From ed6e0909db963be3410c273478ec3c9325896557 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Fri, 17 Apr 2026 10:31:31 -0400 Subject: [PATCH 08/10] update docs reflecting lack of validation --- R/clean_DIANN.R | 33 +++++++++++++++++------------ R/converters_DIANNtoMSstatsFormat.R | 32 ++++++++++++++++++++-------- man/DIANNtoMSstatsFormat.Rd | 32 ++++++++++++++++++++-------- man/MSstatsClean.Rd | 32 ++++++++++++++++++++-------- man/dot-cleanRawDIANN.Rd | 32 ++++++++++++++++++++-------- 5 files changed, 111 insertions(+), 50 deletions(-) diff --git a/R/clean_DIANN.R b/R/clean_DIANN.R index fe47fcb3..d112f9fa 100644 --- a/R/clean_DIANN.R +++ b/R/clean_DIANN.R @@ -221,27 +221,32 @@ #' Assign IsotopeLabelType for DIANN protein turnover workflows. #' -#' When \code{labeledAminoAcids} is provided, each row is classified as heavy -#' (\code{"H"}), light (\code{"L"}), or unlabeled (\code{NA}). +#' Dispatches to one of two classification paths depending on \code{has_channel}: #' -#' If the input contains a \code{Channel} column (present in some DIANN protein -#' turnover exports), the column is mapped directly: \code{"H"} → \code{"H"}, -#' \code{"L"} → \code{"L"}, anything else → \code{NA}. +#' \strong{Channel-based path} (\code{has_channel = TRUE}): \code{Channel} +#' values are mapped directly to \code{IsotopeLabelType} (\code{"H"} → +#' \code{"H"}, \code{"L"} → \code{"L"}, anything else → \code{NA}), and the +#' \code{Channel} column is then dropped. \code{labeledAminoAcids} acts solely +#' as the opt-in flag that enables this path; the amino acid codes are +#' \strong{not} used to validate or filter \code{ModifiedSequence}. #' -#' Otherwise the \code{PeptideSequence} (i.e. the original ModifiedSequence) is -#' inspected for SILAC suffixes of the form \code{(SILAC--H)} or -#' \code{(SILAC--L)}, where \code{} is one of the supplied -#' \code{labeledAminoAcids}. Sequences carrying neither suffix are \code{NA}. -#' The SILAC suffix is stripped from \code{PeptideSequence} after classification. +#' \strong{ModifiedSequence-parsing path} (\code{has_channel = FALSE}): +#' \code{PeptideSequence} (the retained \code{ModifiedSequence}) is matched +#' against SILAC suffixes of the form \code{(SILAC--H)} or +#' \code{(SILAC--L)}, where \code{} is any code in +#' \code{labeledAminoAcids}. Sequences carrying neither suffix receive +#' \code{IsotopeLabelType = NA}. The SILAC suffix is stripped from +#' \code{PeptideSequence} after classification. #' #' @param dn_input \code{data.table} after column renaming. #' @param labeledAminoAcids Character vector of single-letter amino acid codes -#' that carry the SILAC label (e.g. \code{c("K")} or \code{c("K", "R")}), or -#' \code{NULL} to skip labeling (backwards-compatible default). +#' (e.g. \code{c("K")} or \code{c("K", "R")}), or \code{NULL} to skip +#' protein-turnover mode entirely (backwards-compatible default). #' @param has_channel Logical; \code{TRUE} when the raw input contained a -#' \code{Channel} column that was carried through to \code{dn_input}. +#' \code{Channel} column that was retained through +#' \code{.cleanDIANNSelectRequiredColumns}. #' @return \code{dn_input} with \code{IsotopeLabelType} column added (and -#' \code{Channel} removed when applicable). +#' \code{Channel} removed when \code{has_channel} is \code{TRUE}). #' @keywords internal #' @noRd .assignDIANNIsotopeLabelType <- function(dn_input, labeledAminoAcids, has_channel) { diff --git a/R/converters_DIANNtoMSstatsFormat.R b/R/converters_DIANNtoMSstatsFormat.R index fd31057e..78f3f163 100644 --- a/R/converters_DIANNtoMSstatsFormat.R +++ b/R/converters_DIANNtoMSstatsFormat.R @@ -21,15 +21,29 @@ #' @param removeProtein_with1Feature should proteins with a single feature be removed #' @param labeledAminoAcids Character vector of single-letter amino acid codes #' that carry the SILAC label in protein turnover experiments, e.g. -#' \code{c("K")} or \code{c("K", "R")}. When provided, each peptide is -#' classified as heavy (\code{IsotopeLabelType = "H"}), light -#' (\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). -#' If the input contains a \code{Channel} column (some DIANN protein turnover -#' exports), that column is mapped directly to \code{IsotopeLabelType} and the -#' \code{labeledAminoAcids} are used for documentation / validation only. -#' Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of -#' the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} -#' (default) all peptides receive \code{IsotopeLabelType = "Light"}. +#' \code{c("K")} or \code{c("K", "R")}. Supplying this vector opts in to +#' protein-turnover mode; the exact amino acids determine behaviour only in the +#' \code{ModifiedSequence}-parsing path described below. +#' +#' \strong{Channel-based path} (DIA-NN 2.x exports that include a +#' \code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +#' \emph{and} the input contains a \code{Channel} column, \code{Channel} values +#' are mapped directly to \code{IsotopeLabelType} (\code{"H"} → \code{"H"}, +#' \code{"L"} → \code{"L"}, anything else → \code{NA}). The amino acid codes +#' in \code{labeledAminoAcids} are \strong{not} used to validate or filter +#' \code{ModifiedSequence} in this path. +#' +#' \strong{ModifiedSequence-parsing path} (DIA-NN 1.x exports without a +#' \code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +#' and no \code{Channel} column is present, each \code{ModifiedSequence} is +#' inspected for SILAC suffixes of the form \code{(SILAC--H)} or +#' \code{(SILAC--L)}, where \code{} is one of the supplied amino acid +#' codes. Matching sequences are classified as \code{"H"} or \code{"L"}; +#' sequences carrying neither suffix receive \code{IsotopeLabelType = NA}. +#' The SILAC suffix is then stripped from \code{PeptideSequence}. +#' +#' When \code{NULL} (default), protein-turnover mode is disabled and all +#' peptides receive \code{IsotopeLabelType = "Light"}. #' @param quantificationColumn Use 'FragmentQuantCorrected'(default) column for quantified intensities for DIANN 1.8.x. #' Use 'FragmentQuantRaw' for quantified intensities for DIANN 1.9.x. #' Use 'auto' for quantified intensities for DIANN 2.x where each fragment intensity is a separate column, e.g. Fr0Quantity. diff --git a/man/DIANNtoMSstatsFormat.Rd b/man/DIANNtoMSstatsFormat.Rd index 4d6588bf..e89f9cdb 100644 --- a/man/DIANNtoMSstatsFormat.Rd +++ b/man/DIANNtoMSstatsFormat.Rd @@ -64,15 +64,29 @@ the library created after the first MBR pass. Default is 0.01.} \item{labeledAminoAcids}{Character vector of single-letter amino acid codes that carry the SILAC label in protein turnover experiments, e.g. -\code{c("K")} or \code{c("K", "R")}. When provided, each peptide is -classified as heavy (\code{IsotopeLabelType = "H"}), light -(\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). -If the input contains a \code{Channel} column (some DIANN protein turnover -exports), that column is mapped directly to \code{IsotopeLabelType} and the -\code{labeledAminoAcids} are used for documentation / validation only. -Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of -the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} -(default) all peptides receive \code{IsotopeLabelType = "Light"}.} +\code{c("K")} or \code{c("K", "R")}. Supplying this vector opts in to +protein-turnover mode; the exact amino acids determine behaviour only in the +\code{ModifiedSequence}-parsing path described below. + +\strong{Channel-based path} (DIA-NN 2.x exports that include a +\code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +\emph{and} the input contains a \code{Channel} column, \code{Channel} values +are mapped directly to \code{IsotopeLabelType} (\code{"H"} → \code{"H"}, +\code{"L"} → \code{"L"}, anything else → \code{NA}). The amino acid codes +in \code{labeledAminoAcids} are \strong{not} used to validate or filter +\code{ModifiedSequence} in this path. + +\strong{ModifiedSequence-parsing path} (DIA-NN 1.x exports without a +\code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +and no \code{Channel} column is present, each \code{ModifiedSequence} is +inspected for SILAC suffixes of the form \code{(SILAC--H)} or +\code{(SILAC--L)}, where \code{} is one of the supplied amino acid +codes. Matching sequences are classified as \code{"H"} or \code{"L"}; +sequences carrying neither suffix receive \code{IsotopeLabelType = NA}. +The SILAC suffix is then stripped from \code{PeptideSequence}. + +When \code{NULL} (default), protein-turnover mode is disabled and all +peptides receive \code{IsotopeLabelType = "Light"}.} \item{quantificationColumn}{Use 'FragmentQuantCorrected'(default) column for quantified intensities for DIANN 1.8.x. Use 'FragmentQuantRaw' for quantified intensities for DIANN 1.9.x. diff --git a/man/MSstatsClean.Rd b/man/MSstatsClean.Rd index 31831895..d5559610 100644 --- a/man/MSstatsClean.Rd +++ b/man/MSstatsClean.Rd @@ -174,15 +174,29 @@ the library created after the first MBR pass. Default is 0.01.} \item{labeledAminoAcids}{Character vector of single-letter amino acid codes that carry the SILAC label in protein turnover experiments, e.g. -\code{c("K")} or \code{c("K", "R")}. When provided, each peptide is -classified as heavy (\code{IsotopeLabelType = "H"}), light -(\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). -If the input contains a \code{Channel} column (some DIANN protein turnover -exports), that column is mapped directly to \code{IsotopeLabelType} and the -\code{labeledAminoAcids} are used for documentation / validation only. -Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of -the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} -(default) all peptides receive \code{IsotopeLabelType = "Light"}.} +\code{c("K")} or \code{c("K", "R")}. Supplying this vector opts in to +protein-turnover mode; the exact amino acids determine behaviour only in the +\code{ModifiedSequence}-parsing path described below. + +\strong{Channel-based path} (DIA-NN 2.x exports that include a +\code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +\emph{and} the input contains a \code{Channel} column, \code{Channel} values +are mapped directly to \code{IsotopeLabelType} (\code{"H"} → \code{"H"}, +\code{"L"} → \code{"L"}, anything else → \code{NA}). The amino acid codes +in \code{labeledAminoAcids} are \strong{not} used to validate or filter +\code{ModifiedSequence} in this path. + +\strong{ModifiedSequence-parsing path} (DIA-NN 1.x exports without a +\code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +and no \code{Channel} column is present, each \code{ModifiedSequence} is +inspected for SILAC suffixes of the form \code{(SILAC--H)} or +\code{(SILAC--L)}, where \code{} is one of the supplied amino acid +codes. Matching sequences are classified as \code{"H"} or \code{"L"}; +sequences carrying neither suffix receive \code{IsotopeLabelType = NA}. +The SILAC suffix is then stripped from \code{PeptideSequence}. + +When \code{NULL} (default), protein-turnover mode is disabled and all +peptides receive \code{IsotopeLabelType = "Light"}.} } \value{ data.table diff --git a/man/dot-cleanRawDIANN.Rd b/man/dot-cleanRawDIANN.Rd index 2d0e345b..da61ebc1 100644 --- a/man/dot-cleanRawDIANN.Rd +++ b/man/dot-cleanRawDIANN.Rd @@ -44,15 +44,29 @@ the library created after the first MBR pass. Default is 0.01.} \item{labeledAminoAcids}{Character vector of single-letter amino acid codes that carry the SILAC label in protein turnover experiments, e.g. -\code{c("K")} or \code{c("K", "R")}. When provided, each peptide is -classified as heavy (\code{IsotopeLabelType = "H"}), light -(\code{IsotopeLabelType = "L"}), or unlabeled (\code{IsotopeLabelType = NA}). -If the input contains a \code{Channel} column (some DIANN protein turnover -exports), that column is mapped directly to \code{IsotopeLabelType} and the -\code{labeledAminoAcids} are used for documentation / validation only. -Otherwise the \code{ModifiedSequence} column is parsed for SILAC suffixes of -the form \code{(SILAC--H)} / \code{(SILAC--L)}. When \code{NULL} -(default) all peptides receive \code{IsotopeLabelType = "Light"}.} +\code{c("K")} or \code{c("K", "R")}. Supplying this vector opts in to +protein-turnover mode; the exact amino acids determine behaviour only in the +\code{ModifiedSequence}-parsing path described below. + +\strong{Channel-based path} (DIA-NN 2.x exports that include a +\code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +\emph{and} the input contains a \code{Channel} column, \code{Channel} values +are mapped directly to \code{IsotopeLabelType} (\code{"H"} → \code{"H"}, +\code{"L"} → \code{"L"}, anything else → \code{NA}). The amino acid codes +in \code{labeledAminoAcids} are \strong{not} used to validate or filter +\code{ModifiedSequence} in this path. + +\strong{ModifiedSequence-parsing path} (DIA-NN 1.x exports without a +\code{Channel} column): when \code{labeledAminoAcids} is non-\code{NULL} +and no \code{Channel} column is present, each \code{ModifiedSequence} is +inspected for SILAC suffixes of the form \code{(SILAC--H)} or +\code{(SILAC--L)}, where \code{} is one of the supplied amino acid +codes. Matching sequences are classified as \code{"H"} or \code{"L"}; +sequences carrying neither suffix receive \code{IsotopeLabelType = NA}. +The SILAC suffix is then stripped from \code{PeptideSequence}. + +When \code{NULL} (default), protein-turnover mode is disabled and all +peptides receive \code{IsotopeLabelType = "Light"}.} } \value{ data.table From 19af6519a0c15c0e675b16dada943c9177d6db5b Mon Sep 17 00:00:00 2001 From: tonywu1999 Date: Fri, 17 Apr 2026 10:34:28 -0400 Subject: [PATCH 09/10] Update R/clean_DIANN.R Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- R/clean_DIANN.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/R/clean_DIANN.R b/R/clean_DIANN.R index d112f9fa..130066a9 100644 --- a/R/clean_DIANN.R +++ b/R/clean_DIANN.R @@ -273,6 +273,12 @@ dn_input[, PeptideSequence := gsub(strip_regex, "", PeptideSequence, perl = TRUE)] } + if (all(is.na(dn_input[["IsotopeLabelType"]]))) { + warning("labeledAminoAcids was provided but no rows were classified as H or L. ", + "Check that the input contains either a Channel column with H/L values ", + "or ModifiedSequence entries with (SILAC--H)/(SILAC--L) suffixes.") + } + dn_input } From 1819c1b89816a30de1568898f6f242b319beec86 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Fri, 17 Apr 2026 10:56:07 -0400 Subject: [PATCH 10/10] fix unit tests --- R/utils_clean_features.R | 13 +++--- inst/tinytest/test_clean_DIANN.R | 41 ------------------- ...cleaning.R => test_utils_clean_features.R} | 29 +++++++++++++ 3 files changed, 34 insertions(+), 49 deletions(-) rename inst/tinytest/{test_feature_cleaning.R => test_utils_clean_features.R} (89%) diff --git a/R/utils_clean_features.R b/R/utils_clean_features.R index cd49698a..c1c7094a 100644 --- a/R/utils_clean_features.R +++ b/R/utils_clean_features.R @@ -329,10 +329,12 @@ #' @param dt \code{data.table} with a \code{PeptideSequence} column. #' @param heavy_regex Perl-compatible regex matching heavy-labeled sequences. #' @param light_regex Perl-compatible regex explicitly matching light-labeled -#' sequences, or \code{NULL} (DIANN mode). +#' sequences. Required for DIANN mode; must be non-\code{NULL}. #' @param labeled_aa_regex Perl-compatible regex for bare labeled amino acids -#' applied to the bracket-stripped sequence to detect light peptides -#' (Spectronaut mode), or \code{NULL}. +#' applied to the bracket-stripped sequence to detect light peptides. +#' Required for Spectronaut mode; must be non-\code{NULL}. +#' Exactly one of \code{light_regex} and \code{labeled_aa_regex} must be +#' supplied. #' @return \code{dt} with \code{IsotopeLabelType} column added or updated. #' @keywords internal #' @noRd @@ -355,11 +357,6 @@ grepl(light_regex, PeptideSequence, perl = TRUE), "L", default = NA_character_ )] - } else { - dt[, IsotopeLabelType := data.table::fcase( - grepl(heavy_regex, PeptideSequence, perl = TRUE), "H", - default = NA_character_ - )] } dt diff --git a/inst/tinytest/test_clean_DIANN.R b/inst/tinytest/test_clean_DIANN.R index d9493638..9c69fcd8 100644 --- a/inst/tinytest/test_clean_DIANN.R +++ b/inst/tinytest/test_clean_DIANN.R @@ -55,47 +55,6 @@ expect_qvalue_cutoff(output, "GlobalQValue", 0.001) output <- MSstatsConvert:::.cleanRawDIANN(input, MBR = FALSE, pg_qvalue_cutoff = 0.0002) expect_qvalue_cutoff(output, "GlobalPGQValue", 0.0002) -# Test .classifyIsotopeLabelType --------------------------- -# DIANN mode: explicit SILAC-H / SILAC-L suffix tags -dt_diann = data.table::data.table(PeptideSequence = c( - "PEPTIDEK(SILAC-K-H)", # heavy - "PEPTIDEK(SILAC-K-L)", # light - "PEPTIDEAC" # neither -> NA -)) -result_diann = MSstatsConvert:::.classifyIsotopeLabelType( - dt_diann, - heavy_regex = "\\(SILAC-(?:K)-H\\)", - light_regex = "\\(SILAC-(?:K)-L\\)" -) -expect_equal(result_diann$IsotopeLabelType, c("H", "L", NA_character_)) - -# DIANN mode with multiple labeled amino acids (K and R) -dt_multi = data.table::data.table(PeptideSequence = c( - "PEPTIDEK(SILAC-K-H)", # heavy K - "PEPTIDER(SILAC-R-H)", # heavy R - "PEPTIDEK(SILAC-K-L)", # light K - "PEPTIDER(SILAC-R-L)", # light R - "PEPTIDEAC" # NA -)) -result_multi = MSstatsConvert:::.classifyIsotopeLabelType( - dt_multi, - heavy_regex = "\\(SILAC-(?:K|R)-H\\)", - light_regex = "\\(SILAC-(?:K|R)-L\\)" -) -expect_equal(result_multi$IsotopeLabelType, c("H", "H", "L", "L", NA_character_)) - -# Heavy-only mode: no light_regex -- non-heavy sequences get NA, not "L" -dt_heavy_only = data.table::data.table(PeptideSequence = c( - "PEPTIDEK(SILAC-K-H)", # heavy - "PEPTIDEK(SILAC-K-L)", # would be light, but no light_regex -> NA - "PEPTIDEAC" # NA -)) -result_heavy_only = MSstatsConvert:::.classifyIsotopeLabelType( - dt_heavy_only, - heavy_regex = "\\(SILAC-(?:K)-H\\)" -) -expect_equal(result_heavy_only$IsotopeLabelType, c("H", NA_character_, NA_character_)) - # Test .assignDIANNIsotopeLabelType --------------------------- # Channel path: Channel column is mapped to IsotopeLabelType, then dropped dt_channel = data.table::data.table( diff --git a/inst/tinytest/test_feature_cleaning.R b/inst/tinytest/test_utils_clean_features.R similarity index 89% rename from inst/tinytest/test_feature_cleaning.R rename to inst/tinytest/test_utils_clean_features.R index a3d0c6cc..aec83c3f 100644 --- a/inst/tinytest/test_feature_cleaning.R +++ b/inst/tinytest/test_utils_clean_features.R @@ -187,6 +187,35 @@ expect_equal( data.table::setkey(to_filter_channel2[!(ProteinName == "B"), ], NULL) ) +# Test .classifyIsotopeLabelType ---- +# DIANN mode: explicit SILAC-H / SILAC-L suffix tags +dt_diann = data.table::data.table(PeptideSequence = c( + "PEPTIDEK(SILAC-K-H)", # heavy + "PEPTIDEK(SILAC-K-L)", # light + "PEPTIDEAC" # neither -> NA +)) +result_diann = MSstatsConvert:::.classifyIsotopeLabelType( + dt_diann, + heavy_regex = "\\(SILAC-(?:K)-H\\)", + light_regex = "\\(SILAC-(?:K)-L\\)" +) +expect_equal(result_diann$IsotopeLabelType, c("H", "L", NA_character_)) + +# DIANN mode with multiple labeled amino acids (K and R) +dt_multi = data.table::data.table(PeptideSequence = c( + "PEPTIDEK(SILAC-K-H)", # heavy K + "PEPTIDER(SILAC-R-H)", # heavy R + "PEPTIDEK(SILAC-K-L)", # light K + "PEPTIDER(SILAC-R-L)", # light R + "PEPTIDEAC" # NA +)) +result_multi = MSstatsConvert:::.classifyIsotopeLabelType( + dt_multi, + heavy_regex = "\\(SILAC-(?:K|R)-H\\)", + light_regex = "\\(SILAC-(?:K|R)-L\\)" +) +expect_equal(result_multi$IsotopeLabelType, c("H", "H", "L", "L", NA_character_)) + # Utility function ---- expect_equal(MSstatsConvert:::.combine(c("A", "B"), c("A", "B")), c("A_A", "B_B"))