{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# CStreet: a computed Cell State trajectory inference method for time-series single-cell RNA-seq data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## This is a tutorial written using Jupyter Notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 1. CStreet installation following the [tutorial](https://github.com/yw-Hua/CStreet)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 2. Input preparation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"CStreet utilizes time-series expression levels in tab-delimited format or AnnData format as input. \n",
"\n",
"The cell state information can be generated using the built-in clustering function of CStreet or input by the user. \n",
"\n",
"We provided a small [test dataset](https://github.com/yw-Hua/CStreet/tree/master/test/test_data) containing normalized expression levels and the state information at three time points. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step 3. Operation of CStreet"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.1 Load required packages"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from cstreet import *\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.2 Read expression matrix and cell state information"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Expression data: Expression matrix containing the time-series expression level as reads counts or normalized values in tab delimited format, and anndata format are accepted as the input of CStreet. (For example: ExpressionMatrix_t1.txt ExpressionMatrix_t2.txt ExpressionMatrix_t3.txt)\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"data_t1=pd.read_table('ExpressionMatrix_t1.txt',header=0, sep=\"\\t\",index_col=0) \n",
"data_t2=pd.read_table('ExpressionMatrix_t2.txt',header=0, sep=\"\\t\",index_col=0)\n",
"data_t3=pd.read_table('ExpressionMatrix_t3.txt',header=0, sep=\"\\t\",index_col=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cell states info: The cell states information can be inputted by the user or generated using the internal clustering function of CStreet. (For example: CellStates_t1.txt CellStates_t2.txt CellStates_t3.txt)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"state_t1=pd.read_table('CellStates_t1.txt',header=None, sep=\"\\t\",index_col=0) \n",
"state_t2=pd.read_table('CellStates_t2.txt',header=None, sep=\"\\t\",index_col=0)\n",
"state_t3=pd.read_table('CellStates_t3.txt',header=None, sep=\"\\t\",index_col=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.3 Create a new CStreet object"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"cdata=CStreetData()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.4 Add data into CStreet object"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"cdata.add_new_timepoint_scdata(data_t1,list(state_t1[1]))\n",
"cdata.add_new_timepoint_scdata(data_t2,list(state_t2[1]))\n",
"cdata.add_new_timepoint_scdata(data_t3,list(state_t3[1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"AnnData object can be inputted as well. \n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"#cdata.timepoint_scdata_dict[1]=anndata_t1\n",
"#cdata.timepoint_scdata_dict[2]=anndata_t2\n",
"#cdata.timepoint_scdata_dict[3]=anndata_t3"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"AnnData object with n_obs × n_vars = 200 × 2000\n",
" obs: 'scdata_cluster'\n",
" uns: 'cluster_flag'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cdata.timepoint_scdata_dict[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.5 Custom parameters"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"#Step0:basic params# \n",
"Output_Dir=./\n",
"Output_Name=CStreet\n",
"\n",
"#Step1:cell_cluster# \n",
"CellClusterParam_PCAn=10\n",
"CellClusterParam_k=15\n",
"CellClusterParam_Resolution=0.1\n",
"\n",
"#Step2:gene and cell filter#\n",
"Switch_DeadCellFilter=True\n",
"Threshold_MitoPercent=0.2\n",
"Switch_LowCellNumGeneFilter=True\n",
"Threshold_LowCellNum=3\n",
"Switch_LowGeneCellsFilter=True\n",
"Threshold_LowGeneNum=200\n",
"\n",
"#Step3:normalize#\n",
"Switch_Normalize=True\n",
"Threshold_NormalizeBase=1000000\n",
"Switch_LogTransform=True\n",
"\n",
"#Step4:get_graph#\n",
"WithinTimePointParam_PCAn=10\n",
"WithinTimePointParam_k=15\n",
"BetweenTimePointParam_PCAn=10\n",
"BetweenTimePointParam_k=15\n",
"\n",
"#Step5: calculate probability#\n",
"ProbParam_RandomSeed=0\n",
"ProbParam_SamplingSize=5\n",
"\n",
"#Step6:plot graph#\n",
"FigureParam_FigureSize=(6, 7)\n",
"FigureParam_LabelBoxWidth=10\n",
"Threshold_MaxOutDegree=10\n",
"Threshold_MinCellNumofStates=0"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cdata.params"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"cdata.params.FigureParam_LabelBoxWidth=8"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.6 Run CStreet"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 3.6.1 step by step"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: cell_clusters start...]\n",
"\n",
"timepoint:1\n",
"clusters have been given\n",
"timepoint:2\n",
"clusters have been given\n",
"timepoint:3\n",
"clusters have been given\n",
"\n",
"[Function: cell_clusters finished, spent time: 0.02s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.cell_clusters(CellClusterParam_PCAn=10,CellClusterParam_k=15,CellClusterParam_Resolution=1,Switch_Normalize=True,Switch_LogTransform=True)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: filter_dead_cell start...]\n",
"\n",
"timepoint:1\n",
"filtered out 0 cells that are detected in more than 0.2 mito percent\n",
"\n",
"timepoint:2\n",
"filtered out 0 cells that are detected in more than 0.2 mito percent\n",
"\n",
"timepoint:3\n",
"filtered out 0 cells that are detected in more than 0.2 mito percent\n",
"\n",
"\n",
"[Function: filter_dead_cell finished, spent time: 0.02s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.filter_dead_cell(Threshold_MitoPercent=0.2)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Trying to set attribute `.var` of view, copying.\n",
"Trying to set attribute `.var` of view, copying.\n",
"Trying to set attribute `.var` of view, copying.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: filter_lowcell_gene start...]\n",
"\n",
"timepoint:1\n",
"filtered out 31 genes that are detected in less than 3 cells\n",
"\n",
"timepoint:2\n",
"filtered out 30 genes that are detected in less than 3 cells\n",
"\n",
"timepoint:3\n",
"filtered out 37 genes that are detected in less than 3 cells\n",
"\n",
"\n",
"[Function: filter_lowcell_gene finished, spent time: 0.04s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.filter_lowcell_gene(Threshold_LowCellNum=3)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: filter_lowgene_cells start...]\n",
"\n",
"timepoint:1\n",
"filtered out 0 cells that are detected in less than 200 genes\n",
"\n",
"timepoint:2\n",
"filtered out 0 cells that are detected in less than 200 genes\n",
"\n",
"timepoint:3\n",
"filtered out 0 cells that are detected in less than 200 genes\n",
"\n",
"\n",
"[Function: filter_lowgene_cells finished, spent time: 0.02s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.filter_lowgene_cells(Threshold_LowGeneNum=200)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: normalize_data start...]\n",
"\n",
"Normalize data to 1000000 count ...\n",
"\n",
"[Function: normalize_data finished, spent time: 0.00s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.normalize_data(Threshold_NormalizeBase=1000000)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: log_transform start...]\n",
"\n",
"\n",
"[Function: log_transform finished, spent time: 0.02s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.log_transform()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: get_knn_within start...]\n",
"\n",
"timepoint:1\n",
"\n",
"timepoint:2\n",
"\n",
"timepoint:3\n",
"\n",
"\n",
"[Function: get_knn_within finished, spent time: 2.61s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.get_knn_within(WithinTimePointParam_PCAn=10,WithinTimePointParam_k=15)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: get_knn_between start...]\n",
"\n",
"timepoint between 1 and 2 \n",
"timepoint between 2 and 3 \n",
"\n",
"[Function: get_knn_between finished, spent time: 3.15s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.get_knn_between(BetweenTimePointParam_PCAn=10,BetweenTimePointParam_k=15)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: get_knn_graph start...]\n",
"\n",
"timepoint:1\n",
"timepoint:2\n",
"timepoint:3\n",
"timepoint between 1 and 2 \n",
"timepoint between 2 and 3 \n",
"\n",
"[Function: get_knn_graph finished, spent time: 0.02s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.get_knn_graph()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: filter_knn_graph start...]\n",
"\n",
"timepoint:1\n",
"timepoint:2\n",
"timepoint:3\n",
"timepoint between 1 and 2 \n",
"timepoint between 2 and 3 \n",
"\n",
"[Function: filter_knn_graph finished, spent time: 0.05s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.filter_knn_graph()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: get_state_trajectory start...]\n",
"\n",
"timepoint:1\n",
"timepoint:2\n",
"timepoint:3\n",
"\n",
"[Function: get_state_trajectory finished, spent time: 10.76s]\n",
"\n",
"================================================================================\n"
]
}
],
"source": [
"cdata.get_state_trajectory(ProbParam_SamplingSize=5,ProbParam_RandomSeed=0)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[Function: get_knn_nxG start...]\n",
"\n",
"timepoint:1\n"
]
},
{
"data": {
"image/png": "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isAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBl06f6BgAA4Olo+fJkyZLxz4mJZPLk8U8AAOAXBGYAAEgyGiW33JLMm5dcf30yf/44Lg/DeN/ERDJzZrL33sn++yczZoz3AQDAxkxgBgBgozYaJdddl1xySfKDH4xD8pQpyY47rjljefnyZNGi5PLLk0svTXbbLTnyyGSffYRmAAA2XgIzAAAbrXvuST7zmeRrX0umTk122eXhY/HERLLttuPXaDSOzWedlfz6ryevf/04SgMAwMZGYAYAYKO0cOE4EC9ZMl76YpPH8fjrYUi2334cpVcuqXHSScnOO6+vuwUAgKenx/HPaAAAflldddVVGYYhp5566lN9KxvEwoXJ+943nol8xRWzc8YZ3RoXm2ySTJ8+vs773je+LgAAbEwEZgCAjcT8+fMzDEOOO+64p/pWnlL33DOeubzZZuNZyE+G7bdPrr321Oyyy5DLL79qncfceuutOfPMM/Oa17wme+yxRzbZZJMMw5CbbrrpybmJJEuWLMnZZ5+dl73sZXnWs56VzTbbLFOnTs0BBxyQP/mTP8kPfvCDNY6//vrr8973vjdHHnlkdt555wzDkGEY8sADDzym8S666KJV53zxi1980j4HAADPHJbIAAAgBxxwQK6//vpMmzbtqb6V9Wo0Si66aLwsxvTp422vfvUns2zZz57wtbfccvzzyiuTww5bey3nefPm5ZRTTskwDNl1112z7bbbZvHixU943JWuueaaHH300fnhD3+Y6dOn57DDDstOO+2UJUuW5Nprr80HP/jBfOhDH8o111yTF77whUmSL3zhCzn99NMzMTGR5z73udliiy2ydOnSxzzmueeem2EYMhqNcu655+YVr3jFk/Z5AAB4ZhCYAQDIVlttlVmzZj3Vt7HeXXdd8vWvj9dcXmnbbZ/chZO/853xOPvuu+b2/fffP1/+8pez7777ZsqUKZk9e3bmzp37pIx5ww035Dd/8zdz77335gMf+EBOOumkbLrpmv/Uv/nmmzNnzpzcc889q7b91m/9Vg466KDss88+2XLLLTNz5swsWLDgMY353e9+N1/+8pfz8pe/PHfddVcuvfTS3HHHHXn2s5/9pHwmAACeGSyRAQCwETj11FOz6667JkkuvPDCVcsaDMOQCy644GHXYJ49e3aGYciyZcty+umnZ/fdd88WW2yRvfbaK+edd96q4/7iL/4iz3/+87Pllltm+vTpee9735sHH3xwnffyjW98I0cffXR23HHHbLbZZpkxY0ZOOOGE3HbbbWsdu3L8++67L6ecckp23XXXbL755tl9991z2mmn5f7771/nGFdeeWUOPfTQbL/99tl8882z5557Zs6cd+Wv//ruTJ265gP9Lrhgdk47bc3pxvPnX5XTThty1VWn5vbbv53PfOaV+cAHpubMM7fKBRe8JLfc8rU1jj/77JmZO/e0JMk//MNLs99+v/h+V5o+fXpe/OIXZ8qUKeu85yfiD/7gD3LPPfdkzpw5mTNnzlpxOUl23XXXfPazn81BBx20attee+2VAw88MFuunH79OKz8+7/pTW/Kcccdl2XLluWCCy6oPwMAAM9MZjADAGwEZs+encWLF+ecc87Jvvvum6OOOmrVvv322+9Rl2o45phj8o1vfCOHHXZYJk2alL/5m7/J8ccfn0mTJuW6667LhRdemFe96lU55JBDcumll+b000/PVlttlTlz5qxxnU984hM5/vjjs/nmm+eII47IjBkz8r3vfS/nn39+LrvsslxzzTXZeee1ZxS/9rWvzTe/+c0cffTRmTRpUi655JKceuqpmTdvXi699NI1Qu7HP/7x/N7v/V4mT56c17zmNXnWs56Vq666Kn/2Zx/MtttelhNO+GqSqY/pe7vttnn56lf/LDNmHJQXvvCtufvuhbn++ovzyU8ekhNO+HamTdsrSfKiF/1xbrjh81mwYG723fd3kszMS1+abLvtYxrmCbn55ptzxRVXZIsttsg73/nORz1+8803f8Jj3n///bnwwguz7bbb5tWvfnV+/vOf56STTsr555+fd77znWv8PQAA+OUmMAMAbARmz56dmTNn5pxzzsl+++231kzlq6666hHPX7hwYb7zne9k6tSpSZKTTjops2bNyoknnpipU6fmuuuuy3Oe85wk49nSe+yxRz784Q+vsVTDjTfemN/93d/NzJkzM3fu3FXHJ+MZx694xSvyR3/0R/nbv/3btca//vrr86//+q/ZbrvtkiRnnnlmXvrSl+bv/u7v8ulPfzrHHntskmTBggX5wz/8w2y99db5p3/6pzWW/Tj00LflC1/4WK644p05/PBzH9P39r3vXZ4jj/zL7Lffcau2zZv38Vx++e/mG984J6985Z8nGQfmpUsXZ8GCudlvv+MyMTE7L35x8p/+02Ma5gn5yle+kiT5tV/7tVV/n/Xtc5/7XBYtWpTjjz8+W265Zbbccsscfvjhufjii/OP//iPOeSQQzbIfQAA8NSzRAYAAI/qAx/4wBrxcrfddsvBBx+cxYsX5z3vec8asXjq1Kk5/PDDs2jRovzwhz9ctf1jH/tYli1blnPOOWeN45PkkEMOyRFHHJHLLrssP/3pT9ca/z3vec+quJwkW2yxRd7//vcnGc+KXunTn/507r///rz97W9fa03p/fc/M5tttk2uu+5TeeCB+x7T554x4z+sEZeT5AUveHM22WTT/PCH//Sw522zTXL99Y9piCfsRz/6UZLxEhwbysrlMY477rhV21a+P/fcxxbvAQD45WAGMwAAj2r//fdfa9tOO+2UZDxz9qFWBuRbb701u+yyS5Lk61//epJk7ty5+eY3v7nWOXfeeWeWL1+eG2+8ca1rvuQlL1nr+IMPPjgTExO59tprV23753/+5yTJy172sjWOXb48ueOO7bLjji/IwoVfzqJFN2THHR/yFL512GmntT/3xMSkTJ787CxdetfDnrfNNsn8+eNxJyYedZhnlJtuuilf+tKXstdee62xnvOhhx6aHXfcMZ///OezaNGiTJs27Sm8SwAANhSBGQCAR7XtOhYTXrn0xSPtW7Zs2aptP/7xj5MkH/rQhx5xrHvvvXetbc9+9rPXOca0adNy5513rtp29913J0l+5Vd+ZY1jlywZx95tthlvX7p08SPew0pbbDF1nds32WTTPPjg8oc9b2JiPN6SJcl6eKbfGlZ+1tVni69P5513Xkaj0Rqzl5Px3+MNb3hDzjrrrFxwwQV5xzvesUHuBwCAp5YlMgAA2CBWhui77747o9HoYV/rmq18xx13rLXtgQceyKJFizJltYK7cozbb799jWOXL0+GIbn33vFyEltssQGevrdi3PXt4IMPTpLMmzdvVWBfX5YtW5YLLrggSfLud787wzCs8TrrrLOS/GIJDQAAfvkJzAAAG4mJFWs1LN8Q1XMdXvSiFyVJrr766sd97ty5c9fa9pWvfCXLly/PC17wglXbVr5/6EMLJybGs5Zvv/3b2XTTLTJt2t6P+x4ezTCMv9/VZzZviOUxdt1117z85S/P0qVLH3V2eJLcd99jW396XS655JLceeed2WuvvfKWt7xlna/ddtstN9544zr/ZgAA/PIRmAEANhLbbbddhmHIwoULn5Lx3/72t2fSpEk58cQTc+ONN661//7773/Y+HzGGWfkrrt+sebx0qVL8+53vztJ8qY3vWnV9je+8Y2ZNGlSPvrRj+amm25atX3y5OTb335P7rvvnjz/+W/Mpptu/mR9rFW22urfJUnuvnthHnhgHJcnT37Sh1mnj3zkI5kyZUre//7356yzzsoDDzyw1jELFy7MMcccs2ot7MbKB/idfvrpOf/889f5Ovnkk9c4FgCAX27WYAYA2EhsvfXWOfDAA3P11VfnDW94Q/bcc89MTEzkiCOO2CDjz5o1K5/4xCfy5je/Oc973vNy6KGHZs8998yyZcuycOHCXH311dlhhx1yww03rHXu3nvvnec973k5+uijM2nSpFxyySX5/ve/n1e+8pU59thjVx03c+bMnH322fn93//9vPCFL8xrX/va7LDDDpk7d27+z//5erbbblb+43/84Hr5fDNnvjTDsEmuvPLdueWW72T77bfL+9+fnHLKKauOWX3d4pWfc86cOdlmm22SJG9961tXLXnxeOy99975whe+kKOPPjrveMc7cs455+SQQw7JTjvtlCVLluRf/uVf8tWvfjXDMGTOnDmrzlu0aNEaayUvWrQoSfKWt7wlwzAkSd71rndl1qxZufnmm3PFFVdk2rRpOeqoox72Xl73utflj//4j3PxxRfnox/9aLbffvvH/XkAAHjmEJgBADYin/rUp3LiiSfm7//+7/NXf/VXGY1GmT59embOnLlBxn/jG9+YfffdN2eddVa+9KUv5Ytf/GImT56cnXbaKUcffXRe97rXrfO8z372sznjjDNy0UUX5bbbbstznvOcnHrqqXnXu961KoSu9La3vS177LFHPvzhD+fiiy/Oz372s8yYMSNHHvlfsvXWJ2fLLaeul8+2ww5756ijLszXvvbhXHfdn2f58qW58so1A/OFF1641nmf+9znVr2fPXt2FZiT8RIkN9xwQ84777xceumlufzyy3PXXXdlq622yh577JGTTjopxx9/fHbddddV59x7773rvKdPfvKTq94fd9xxmTVrVs4///yMRqMce+yx2WyzzR72Prbeeuv89m//ds4777xceOGFOfHEE6vPAwDAM8MwGo0eduf+++8/mjdv3ga8HQAA+IXZs2dn7ty5eaR/sz5WCxcmf/qnyS67jB/4t76MRsmCBcnppyc777z+xgEAgA1pGIZvjUaj/R+63RrMAABsFGbMSHbbLVltKef14q67kt13H48HAAC/7ARmAAA2CsOQHHlksnhx8uCD62eMBx8cX/+II9bvLGkAAHi6sAYzAAAbjX32SX7915N585Lp05/869922/j6++zzxK5z9tlnZ/HixY963OzZszN79uwnNhgAADwBAjMAAE9bV1111ZN6vWFIXv/65Prrk5/8JNl++yfv2j/5STJ58vj6T3T28tlnn50FCxY8pmMFZgAAnkoCMwAAG5UpU5KTTkre974nLzL/5CfJ/fcnJ588vv4TNX/+/Cd+EQAA2ACswQwAwEZn553HMXgYkltv7ddkfvDB5JZbxtc5+eTxdQEAYGMiMAMAsFHaeefkjDOS/fdP5s8fz0IejR7buaPR+Pj585MDDhhfR1wGAGBjZIkMAAA2WlOmJCeckBx0UHLJJckPfpBMTCTbbDN+TUz84tjly5Of/nT8Wr482W235C1vGT/Q74muuQwAAM9UAjMAABu1YUj23Xccim+5JZk3b/wQwPnzxyF5pYmJZObM5Dd+YzzrecYMYRkAAARmAADIOBbvvPMvlrpYvjxZsmT8c2IimTx5zRnNAACAwAwAAOs0MTFeQgMAAHh4HvIHAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKgIzAAAAAAAVARmAAAAAAAqAjMAAAAAABWBGQAAAACAyjAajR5+5zD8W5IFG+52AAAAAAB4GtplNBrt8NCNjxiYAQAAAADg4VgiAwAAAACAisAMAAAAAEBFYAYAAAAAoCIwAwAAAABQEZgBAAAAAKj8X+Fw54Wfxjr5AAAAAElFTkSuQmCC\n",
"text/plain": [
"