bioframe-0.4.1/0000755000175000017500000000000014420777331012636 5ustar nileshnileshbioframe-0.4.1/tests/0000755000175000017500000000000014420777331014000 5ustar nileshnileshbioframe-0.4.1/tests/test_ops_select.py0000644000175000017500000001516414420777331017560 0ustar nileshnileshimport pandas as pd import numpy as np import pytest import bioframe def test_select(): df = pd.DataFrame( [["chrX", 3, 8], ["chr1", 4, 5], ["chrX", 1, 5]], columns=["chrom", "start", "end"], ) result = pd.DataFrame( [["chr1", 4, 5]], columns=["chrom", "start", "end"] ) pd.testing.assert_frame_equal( result, bioframe.select(df, "chr1:4-10").reset_index(drop=True) ) result = pd.DataFrame( [["chrX", 3, 8], ["chrX", 1, 5]], columns=["chrom", "start", "end"] ) pd.testing.assert_frame_equal( result, bioframe.select(df, "chrX").reset_index(drop=True) ) result = pd.DataFrame( [["chrX", 3, 8], ["chrX", 1, 5]], columns=["chrom", "start", "end"] ) pd.testing.assert_frame_equal( result, bioframe.select(df, "chrX:4-6").reset_index(drop=True) ) # Query range not in the dataframe assert len(bioframe.select(df, "chrZ")) == 0 assert len(bioframe.select(df, "chr1:100-1000")) == 0 assert len(bioframe.select(df, "chr1:1-3")) == 0 # Invalid query range with pytest.raises(ValueError): bioframe.select(df, "chr1:1-0") def test_select__with_colnames(): ### select with non-standard column names new_names = ["chr", "chrstart", "chrend"] df = pd.DataFrame( [["chrX", 3, 8], ["chr1", 4, 5], ["chrX", 1, 5]], columns=new_names, ) result = pd.DataFrame( [["chrX", 3, 8], ["chrX", 1, 5]], columns=new_names, ) pd.testing.assert_frame_equal( result, bioframe.select(df, "chrX:4-6", cols=new_names).reset_index(drop=True) ) pd.testing.assert_frame_equal( result, bioframe.select(df, "chrX", cols=new_names).reset_index(drop=True) ) def test_select__with_nulls(): ### select from a DataFrame with NaNs colnames = ["chrom", "start", "end", "view_region"] df = pd.DataFrame( [ ["chr1", -6, 12, "chr1p"], [pd.NA, pd.NA, pd.NA, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=colnames, ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) result = pd.DataFrame( [["chr1", -6, 12, "chr1p"]], columns=colnames, ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) pd.testing.assert_frame_equal( result, bioframe.select(df, "chr1:0-1").reset_index(drop=True) ) def test_select__mask_indices_labels(): df = pd.DataFrame( [["chrX", 3, 8], ["chr1", 4, 5], ["chrX", 1, 5]], columns=["chrom", "start", "end"], ) region = "chr1:4-10" answer = pd.DataFrame( [["chr1", 4, 5]], columns=["chrom", "start", "end"] ) result = bioframe.select(df, region) pd.testing.assert_frame_equal( answer, result.reset_index(drop=True) ) mask = bioframe.select_mask(df, region) pd.testing.assert_frame_equal( answer, df.loc[mask].reset_index(drop=True) ) labels = bioframe.select_labels(df, region) pd.testing.assert_frame_equal( answer, df.loc[labels].reset_index(drop=True) ) idx = bioframe.select_indices(df, region) pd.testing.assert_frame_equal( answer, df.iloc[idx].reset_index(drop=True) ) def test_select__query_intervals_are_half_open(): df = pd.DataFrame({ "chrom": ["chr1", "chr1", "chr2", "chr2", "chr2", "chr2", "chr2", "chr2"], "start": [0, 10, 10, 20, 30, 40, 50, 60], "end": [10, 20, 20, 30, 40, 50, 60, 70], "name": ["a", "b", "A", "B", "C", "D", "E", "F"], }) result = bioframe.select(df, "chr1") assert (result["name"] == ["a", "b"]).all() result = bioframe.select(df, "chr2:20-70") assert (result["name"] == ["B", "C", "D", "E", "F"]).all() result = bioframe.select(df, "chr2:20-75") assert (result["name"] == ["B", "C", "D", "E", "F"]).all() result = bioframe.select(df, "chr2:20-") assert (result.index == [3, 4, 5, 6, 7]).all() result = bioframe.select(df, "chr2:20-30") assert (result["name"] == ["B"]).all() result = bioframe.select(df, "chr2:20-40") assert (result["name"] == ["B", "C"]).all() result = bioframe.select(df, "chr2:20-45") assert (result["name"] == ["B", "C", "D"]).all() result = bioframe.select(df, "chr2:19-45") assert (result["name"] == ["A", "B", "C", "D"]).all() result = bioframe.select(df, "chr2:25-45") assert (result["name"] == ["B", "C", "D"]).all() result = bioframe.select(df, "chr2:25-50") assert (result["name"] == ["B", "C", "D"]).all() result = bioframe.select(df, "chr2:25-51") assert (result["name"] == ["B", "C", "D", "E"]).all() def test_select__with_point_intervals(): # Dataframe containing "point intervals" df = pd.DataFrame({ "chrom": ["chr1", "chr1", "chr2", "chr2", "chr2", "chr2", "chr2", "chr2"], "start": [0, 10, 10, 20, 30, 40, 50, 60], "end": [10, 10, 20, 30, 40, 50, 50, 70], "name": ["a", "b", "A", "B", "C", "D", "E", "F"], }) result = bioframe.select(df, "chr1") assert (result["name"] == ["a", "b"]).all() result = bioframe.select(df, "chr1:4-10") assert (result["name"] == ["a"]).all() result = bioframe.select(df, "chr1:4-4") assert (result["name"] == ["a"]).all() result = bioframe.select(df, "chr1:10-15") assert (result["name"] == ["b"]).all() result = bioframe.select(df, "chr2:20-70") assert (result["name"] == ["B", "C", "D", "E", "F"]).all() result = bioframe.select(df, "chr2:49-70") assert (result["name"] == ["D", "E", "F"]).all() result = bioframe.select(df, "chr2:50-70") assert (result["name"] == ["E", "F"]).all() result = bioframe.select(df, "chr2:50-51") assert (result["name"] == ["E"]).all() result = bioframe.select(df, "chr2:50-50") assert (result["name"] == ["E"]).all() def test_select__with_points(): # Dataframe of points df = pd.DataFrame( [["chrX", 3, "A"], ["chr1", 4, "C"], ["chrX", 1, "B"]], columns=["chrom", "pos", "name"], ) result = bioframe.select(df, "chr1:4-10", cols=["chrom", "pos", "pos"]) assert (result["name"] == ["C"]).all() result = bioframe.select(df, "chr1:3-10", cols=["chrom", "pos", "pos"]) assert (result["name"] == ["C"]).all() result = bioframe.select(df, "chr1:4-4", cols=["chrom", "pos", "pos"]) assert (result["name"] == ["C"]).all() bioframe-0.4.1/tests/test_ops.py0000644000175000017500000015074014420777331016221 0ustar nileshnileshfrom io import StringIO import pandas as pd import numpy as np import pytest import bioframe import bioframe.core.checks as checks from bioframe.core.construction import make_viewframe # import pyranges as pr # def bioframe_to_pyranges(df): # pydf = df.copy() # pydf.rename( # {"chrom": "Chromosome", "start": "Start", "end": "End"}, # axis="columns", # inplace=True, # ) # return pr.PyRanges(pydf) # def pyranges_to_bioframe(pydf): # df = pydf.df # df.rename( # {"Chromosome": "chrom", "Start": "start", "End": "end", "Count": "n_intervals"}, # axis="columns", # inplace=True, # ) # return df # def pyranges_overlap_to_bioframe(pydf): # ## convert the df output by pyranges join into a bioframe-compatible format # df = pydf.df.copy() # df.rename( # { # "Chromosome": "chrom_1", # "Start": "start_1", # "End": "end_1", # "Start_b": "start_2", # "End_b": "end_2", # }, # axis="columns", # inplace=True, # ) # df["chrom_1"] = df["chrom_1"].values.astype("object") # to remove categories # df["chrom_2"] = df["chrom_1"].values # return df chroms = ["chr12", "chrX"] def mock_bioframe(num_entries=100): pos = np.random.randint(1, 1e7, size=(num_entries, 2)) df = pd.DataFrame() df["chrom"] = np.random.choice(chroms, num_entries) df["start"] = np.min(pos, axis=1) df["end"] = np.max(pos, axis=1) df.sort_values(["chrom", "start"], inplace=True) return df ############# tests ##################### def test_trim(): ### trim with view_df view_df = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr1", 13, 26, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "name"], ) df = pd.DataFrame( [ ["chr1", -6, 12, "chr1p"], ["chr1", 0, 12, "chr1p"], ["chr1", 32, 36, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "view_region"], ) df_trimmed = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr1", 0, 12, "chr1p"], ["chr1", 26, 26, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "view_region"], ) with pytest.raises(ValueError): bioframe.trim(df, view_df=view_df) # df_view_col already exists, so need to specify it: pd.testing.assert_frame_equal( df_trimmed, bioframe.trim(df, view_df=view_df, df_view_col="view_region") ) # non-default columns in view funky_view = view_df.rename(columns={"chrom": "chr"}) pd.testing.assert_frame_equal( df_trimmed, bioframe.trim( df, view_df=funky_view, df_view_col="view_region", cols_view=["chr", "start", "end"], ), ) ### trim with view_df interpreted from dictionary for chromsizes chromsizes = {"chr1": 20, "chrX_0": 5} df = pd.DataFrame( [ ["chr1", 0, 12], ["chr1", 13, 26], ["chrX_0", 1, 8], ], columns=["chrom", "startFunky", "end"], ) df_trimmed = pd.DataFrame( [ ["chr1", 0, 12], ["chr1", 13, 20], ["chrX_0", 1, 5], ], columns=["chrom", "startFunky", "end"], ).astype({"startFunky": pd.Int64Dtype(), "end": pd.Int64Dtype()}) pd.testing.assert_frame_equal( df_trimmed, bioframe.trim( df, view_df=chromsizes, cols=["chrom", "startFunky", "end"], return_view_columns=False, ), ) ### trim with default limits=None and negative values df = pd.DataFrame( [ ["chr1", -4, 12], ["chr1", 13, 26], ["chrX", -5, -1], ], columns=["chrom", "start", "end"], ) df_trimmed = pd.DataFrame( [ ["chr1", 0, 12], ["chr1", 13, 26], ["chrX", 0, 0], ], columns=["chrom", "start", "end"], ) pd.testing.assert_frame_equal(df_trimmed, bioframe.trim(df)) ### trim when there are NaN intervals df = pd.DataFrame( [ ["chr1", -4, 12, "chr1p"], [pd.NA, pd.NA, pd.NA, "chr1q"], ["chrX", -5, -1, "chrX_0"], ], columns=["chrom", "start", "end", "region"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) df_trimmed = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], [pd.NA, pd.NA, pd.NA, "chr1q"], ["chrX", 0, 0, "chrX_0"], ], columns=["chrom", "start", "end", "region"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) pd.testing.assert_frame_equal(df_trimmed, bioframe.trim(df)) ### trim with view_df and NA intervals view_df = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr1", 13, 26, "chr1q"], ["chrX", 1, 12, "chrX_0"], ], columns=["chrom", "start", "end", "name"], ) df = pd.DataFrame( [ ["chr1", -6, 12], ["chr1", 0, 12], [pd.NA, pd.NA, pd.NA], ["chrX", 1, 20], ], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) df_trimmed = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr1", 0, 12, "chr1p"], [pd.NA, pd.NA, pd.NA, pd.NA], ["chrX", 1, 12, "chrX_0"], ], columns=["chrom", "start", "end", "view_region"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) # infer df_view_col with assign_view and ignore NAs pd.testing.assert_frame_equal( df_trimmed, bioframe.trim(df, view_df=view_df, df_view_col=None, return_view_columns=True)[ ["chrom", "start", "end", "view_region"] ], ) def test_expand(): d = """chrom start end 0 chr1 1 5 1 chr1 50 55 2 chr2 100 200""" fake_bioframe = pd.read_csv(StringIO(d), sep=r"\s+") expand_bp = 10 fake_expanded = bioframe.expand(fake_bioframe, expand_bp) d = """chrom start end 0 chr1 -9 15 1 chr1 40 65 2 chr2 90 210""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, fake_expanded) # expand with negative pad expand_bp = -10 fake_expanded = bioframe.expand(fake_bioframe, expand_bp) d = """chrom start end 0 chr1 3 3 1 chr1 52 52 2 chr2 110 190""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, fake_expanded) expand_bp = -10 fake_expanded = bioframe.expand(fake_bioframe, expand_bp, side="left") d = """chrom start end 0 chr1 3 5 1 chr1 52 55 2 chr2 110 200""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, fake_expanded) # expand with multiplicative pad mult = 0 fake_expanded = bioframe.expand(fake_bioframe, pad=None, scale=mult) d = """chrom start end 0 chr1 3 3 1 chr1 52 52 2 chr2 150 150""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, fake_expanded) mult = 2.0 fake_expanded = bioframe.expand(fake_bioframe, pad=None, scale=mult) d = """chrom start end 0 chr1 -1 7 1 chr1 48 58 2 chr2 50 250""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, fake_expanded) # expand with NA and non-integer multiplicative pad d = """chrom start end 0 chr1 1 5 1 NA NA NA 2 chr2 100 200""" fake_bioframe = pd.read_csv(StringIO(d), sep=r"\s+").astype( {"start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) mult = 1.10 fake_expanded = bioframe.expand(fake_bioframe, pad=None, scale=mult) d = """chrom start end 0 chr1 1 5 1 NA NA NA 2 chr2 95 205""" df = pd.read_csv(StringIO(d), sep=r"\s+").astype( {"start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) pd.testing.assert_frame_equal(df, fake_expanded) def test_overlap(): ### test consistency of overlap(how='inner') with pyranges.join ### ### note does not test overlap_start or overlap_end columns of bioframe.overlap df1 = mock_bioframe() df2 = mock_bioframe() assert df1.equals(df2) == False # p1 = bioframe_to_pyranges(df1) # p2 = bioframe_to_pyranges(df2) # pp = pyranges_overlap_to_bioframe(p1.join(p2, how=None))[ # ["chrom_1", "start_1", "end_1", "chrom_2", "start_2", "end_2"] # ] # bb = bioframe.overlap(df1, df2, how="inner")[ # ["chrom_1", "start_1", "end_1", "chrom_2", "start_2", "end_2"] # ] # pp = pp.sort_values( # ["chrom_1", "start_1", "end_1", "chrom_2", "start_2", "end_2"], # ignore_index=True, # ) # bb = bb.sort_values( # ["chrom_1", "start_1", "end_1", "chrom_2", "start_2", "end_2"], # ignore_index=True, # ) # pd.testing.assert_frame_equal(bb, pp, check_dtype=False, check_exact=False) # print("overlap elements agree") ### test overlap on= [] ### df1 = pd.DataFrame( [ ["chr1", 8, 12, "+", "cat"], ["chr1", 8, 12, "-", "cat"], ["chrX", 1, 8, "+", "cat"], ], columns=["chrom1", "start", "end", "strand", "animal"], ) df2 = pd.DataFrame( [["chr1", 6, 10, "+", "dog"], ["chrX", 7, 10, "-", "dog"]], columns=["chrom2", "start2", "end2", "strand", "animal"], ) b = bioframe.overlap( df1, df2, on=["animal"], how="left", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), return_index=True, return_input=False, ) assert np.sum(pd.isna(b["index_"].values)) == 3 b = bioframe.overlap( df1, df2, on=["strand"], how="left", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), return_index=True, return_input=False, ) assert np.sum(pd.isna(b["index_"].values)) == 2 b = bioframe.overlap( df1, df2, on=None, how="left", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), return_index=True, return_input=False, ) assert np.sum(pd.isna(b["index_"].values)) == 0 ### test overlap 'left', 'outer', and 'right' b = bioframe.overlap( df1, df2, on=None, how="outer", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ) assert len(b) == 3 b = bioframe.overlap( df1, df2, on=["animal"], how="outer", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ) assert len(b) == 5 b = bioframe.overlap( df1, df2, on=["animal"], how="inner", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ) assert len(b) == 0 b = bioframe.overlap( df1, df2, on=["animal"], how="right", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ) assert len(b) == 2 b = bioframe.overlap( df1, df2, on=["animal"], how="left", cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ) assert len(b) == 3 ### test keep_order and NA handling df1 = pd.DataFrame( [ ["chr1", 8, 12, "+"], [pd.NA, pd.NA, pd.NA, "-"], ["chrX", 1, 8, "+"], ], columns=["chrom", "start", "end", "strand"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) df2 = pd.DataFrame( [["chr1", 6, 10, "+"], [pd.NA, pd.NA, pd.NA, "-"], ["chrX", 7, 10, "-"]], columns=["chrom2", "start2", "end2", "strand"], ).astype({"start2": pd.Int64Dtype(), "end2": pd.Int64Dtype()}) assert df1.equals( bioframe.overlap( df1, df2, how="left", keep_order=True, cols2=["chrom2", "start2", "end2"] )[["chrom", "start", "end", "strand"]] ) assert ~df1.equals( bioframe.overlap( df1, df2, how="left", keep_order=False, cols2=["chrom2", "start2", "end2"] )[["chrom", "start", "end", "strand"]] ) df1 = pd.DataFrame( [ ["chr1", 8, 12, "+", pd.NA], [pd.NA, pd.NA, pd.NA, "-", pd.NA], ["chrX", 1, 8, pd.NA, pd.NA], ], columns=["chrom", "start", "end", "strand", "animal"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) df2 = pd.DataFrame( [["chr1", 6, 10, pd.NA, "tiger"]], columns=["chrom2", "start2", "end2", "strand", "animal"], ).astype({"start2": pd.Int64Dtype(), "end2": pd.Int64Dtype()}) assert ( bioframe.overlap( df1, df2, how="outer", cols2=["chrom2", "start2", "end2"], return_index=True, keep_order=False, ).shape == (3, 12) ) ### result of overlap should still have bedframe-like properties overlap_df = bioframe.overlap( df1, df2, how="outer", cols2=["chrom2", "start2", "end2"], return_index=True, suffixes=("", ""), ) assert checks.is_bedframe( overlap_df[df1.columns], ) assert checks.is_bedframe( overlap_df[df2.columns], cols=["chrom2", "start2", "end2"] ) overlap_df = bioframe.overlap( df1, df2, how="innter", cols2=["chrom2", "start2", "end2"], return_index=True, suffixes=("", ""), ) assert checks.is_bedframe( overlap_df[df1.columns], ) assert checks.is_bedframe( overlap_df[df2.columns], cols=["chrom2", "start2", "end2"] ) # test keep_order incompatible if how!= 'left' with pytest.raises(ValueError): bioframe.overlap( df1, df2, how="outer", on=["animal"], cols2=["chrom2", "start2", "end2"], keep_order=True, ) def test_cluster(): df1 = pd.DataFrame( [ ["chr1", 1, 5], ["chr1", 3, 8], ["chr1", 8, 10], ["chr1", 12, 14], ], columns=["chrom", "start", "end"], ) df_annotated = bioframe.cluster(df1) assert ( df_annotated["cluster"].values == np.array([0, 0, 0, 1]) ).all() # the last interval does not overlap the first three df_annotated = bioframe.cluster(df1, min_dist=2) assert ( df_annotated["cluster"].values == np.array([0, 0, 0, 0]) ).all() # all intervals part of the same cluster df_annotated = bioframe.cluster(df1, min_dist=None) assert ( df_annotated["cluster"].values == np.array([0, 0, 1, 2]) ).all() # adjacent intervals not clustered df1.iloc[0, 0] = "chrX" df_annotated = bioframe.cluster(df1) assert ( df_annotated["cluster"].values == np.array([2, 0, 0, 1]) ).all() # do not cluster intervals across chromosomes # test consistency with pyranges (which automatically sorts df upon creation and uses 1-based indexing for clusters) # assert ( # (bioframe_to_pyranges(df1).cluster(count=True).df["Cluster"].values - 1) # == bioframe.cluster(df1.sort_values(["chrom", "start"]))["cluster"].values # ).all() # test on=[] argument df1 = pd.DataFrame( [ ["chr1", 3, 8, "+", "cat", 5.5], ["chr1", 3, 8, "-", "dog", 6.5], ["chr1", 6, 10, "-", "cat", 6.5], ["chrX", 6, 10, "-", "cat", 6.5], ], columns=["chrom", "start", "end", "strand", "animal", "location"], ) assert ( bioframe.cluster(df1, on=["animal"])["cluster"].values == np.array([0, 1, 0, 2]) ).all() assert ( bioframe.cluster(df1, on=["strand"])["cluster"].values == np.array([0, 1, 1, 2]) ).all() assert ( bioframe.cluster(df1, on=["location", "animal"])["cluster"].values == np.array([0, 2, 1, 3]) ).all() ### test cluster with NAs df1 = pd.DataFrame( [ ["chrX", 1, 8, pd.NA, pd.NA], [pd.NA, pd.NA, pd.NA, "-", pd.NA], ["chr1", 8, 12, "+", pd.NA], ["chr1", 1, 8, np.nan, pd.NA], [pd.NA, np.nan, pd.NA, "-", pd.NA], ], columns=["chrom", "start", "end", "strand", "animal"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) assert bioframe.cluster(df1)["cluster"].max() == 3 assert bioframe.cluster(df1, on=["strand"])["cluster"].max() == 4 pd.testing.assert_frame_equal(df1, bioframe.cluster(df1)[df1.columns]) assert checks.is_bedframe( bioframe.cluster(df1, on=["strand"]), cols=["chrom", "cluster_start", "cluster_end"], ) assert checks.is_bedframe( bioframe.cluster(df1), cols=["chrom", "cluster_start", "cluster_end"] ) assert checks.is_bedframe(bioframe.cluster(df1)) def test_merge(): df1 = pd.DataFrame( [ ["chr1", 1, 5], ["chr1", 3, 8], ["chr1", 8, 10], ["chr1", 12, 14], ], columns=["chrom", "start", "end"], ) # the last interval does not overlap the first three with default min_dist=0 assert (bioframe.merge(df1)["n_intervals"].values == np.array([3, 1])).all() # adjacent intervals are not clustered with min_dist=none assert ( bioframe.merge(df1, min_dist=None)["n_intervals"].values == np.array([2, 1, 1]) ).all() # all intervals part of one cluster assert ( bioframe.merge(df1, min_dist=2)["n_intervals"].values == np.array([4]) ).all() df1.iloc[0, 0] = "chrX" assert ( bioframe.merge(df1, min_dist=None)["n_intervals"].values == np.array([1, 1, 1, 1]) ).all() assert ( bioframe.merge(df1, min_dist=0)["n_intervals"].values == np.array([2, 1, 1]) ).all() # total number of intervals should equal length of original dataframe mock_df = mock_bioframe() assert np.sum(bioframe.merge(mock_df, min_dist=0)["n_intervals"].values) == len( mock_df ) # # test consistency with pyranges # pd.testing.assert_frame_equal( # pyranges_to_bioframe(bioframe_to_pyranges(df1).merge(count=True)), # bioframe.merge(df1), # check_dtype=False, # check_exact=False, # ) # test on=['chrom',...] argument df1 = pd.DataFrame( [ ["chr1", 3, 8, "+", "cat", 5.5], ["chr1", 3, 8, "-", "dog", 6.5], ["chr1", 6, 10, "-", "cat", 6.5], ["chrX", 6, 10, "-", "cat", 6.5], ], columns=["chrom", "start", "end", "strand", "animal", "location"], ) assert len(bioframe.merge(df1, on=None)) == 2 assert len(bioframe.merge(df1, on=["strand"])) == 3 assert len(bioframe.merge(df1, on=["strand", "location"])) == 3 assert len(bioframe.merge(df1, on=["strand", "location", "animal"])) == 4 d = """ chrom start end animal n_intervals 0 chr1 3 10 cat 2 1 chr1 3 8 dog 1 2 chrX 6 10 cat 1""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal( df, bioframe.merge(df1, on=["animal"]), check_dtype=False, ) # merge with repeated indices df = pd.DataFrame( {"chrom": ["chr1", "chr2"], "start": [100, 400], "end": [110, 410]} ) df.index = [0, 0] pd.testing.assert_frame_equal( df.reset_index(drop=True), bioframe.merge(df)[["chrom", "start", "end"]] ) # test merge with NAs df1 = pd.DataFrame( [ ["chrX", 1, 8, pd.NA, pd.NA], [pd.NA, pd.NA, pd.NA, "-", pd.NA], ["chr1", 8, 12, "+", pd.NA], ["chr1", 1, 8, np.nan, pd.NA], [pd.NA, np.nan, pd.NA, "-", pd.NA], ], columns=["chrom", "start", "end", "strand", "animal"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) assert bioframe.merge(df1).shape[0] == 4 assert bioframe.merge(df1)["start"].iloc[0] == 1 assert bioframe.merge(df1)["end"].iloc[0] == 12 assert bioframe.merge(df1, on=["strand"]).shape[0] == df1.shape[0] assert bioframe.merge(df1, on=["animal"]).shape[0] == df1.shape[0] assert bioframe.merge(df1, on=["animal"]).shape[1] == df1.shape[1] + 1 assert checks.is_bedframe(bioframe.merge(df1, on=["strand", "animal"])) def test_complement(): ### complementing a df with no intervals in chrX by a view with chrX should return entire chrX region df1 = pd.DataFrame( [["chr1", 1, 5], ["chr1", 3, 8], ["chr1", 8, 10], ["chr1", 12, 14]], columns=["chrom", "start", "end"], ) df1_chromsizes = {"chr1": 100, "chrX": 100} df1_complement = pd.DataFrame( [ ["chr1", 0, 1, "chr1"], ["chr1", 10, 12, "chr1"], ["chr1", 14, 100, "chr1"], ["chrX", 0, 100, "chrX"], ], columns=["chrom", "start", "end", "view_region"], ) pd.testing.assert_frame_equal( bioframe.complement(df1, view_df=df1_chromsizes), df1_complement ) # non-default columns in view funky_view = make_viewframe(df1_chromsizes, cols=["chr", "start", "end"]) pd.testing.assert_frame_equal( bioframe.complement( df1, view_df=funky_view, cols_view=["chr", "start", "end"], ), df1_complement, ) ### test complement with two chromosomes ### df1.iloc[0, 0] = "chrX" df1_complement = pd.DataFrame( [ ["chr1", 0, 3, "chr1"], ["chr1", 10, 12, "chr1"], ["chr1", 14, 100, "chr1"], ["chrX", 0, 1, "chrX"], ["chrX", 5, 100, "chrX"], ], columns=["chrom", "start", "end", "view_region"], ) pd.testing.assert_frame_equal( bioframe.complement(df1, view_df=df1_chromsizes), df1_complement ) ### test complement with no view_df and a negative interval df1 = pd.DataFrame( [["chr1", -5, 5], ["chr1", 10, 20]], columns=["chrom", "start", "end"] ) df1_complement = pd.DataFrame( [ ["chr1", 5, 10, "chr1"], ["chr1", 20, np.iinfo(np.int64).max, "chr1"], ], columns=["chrom", "start", "end", "view_region"], ) pd.testing.assert_frame_equal(bioframe.complement(df1), df1_complement) ### test complement with an overhanging interval df1 = pd.DataFrame( [["chr1", -5, 5], ["chr1", 10, 20]], columns=["chrom", "start", "end"] ) chromsizes = bioframe.make_viewframe( {"chr1": 15}, name_style="ucsc", view_name_col="VR" ) df1_complement = pd.DataFrame( [ ["chr1", 5, 10, "chr1:0-15"], ], columns=["chrom", "start", "end", "view_region"], ) pd.testing.assert_frame_equal( bioframe.complement(df1, view_df=chromsizes, view_name_col="VR"), df1_complement ) ### test complement where an interval from df overlaps two different regions from view ### test complement with no view_df and a negative interval df1 = pd.DataFrame([["chr1", 5, 15]], columns=["chrom", "start", "end"]) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] df1_complement = pd.DataFrame( [["chr1", 0, 5, "chr1p"], ["chr1", 15, 20, "chr1q"]], columns=["chrom", "start", "end", "view_region"], ) pd.testing.assert_frame_equal(bioframe.complement(df1, chromsizes), df1_complement) ### test complement with NAs df1 = pd.DataFrame( [[pd.NA, pd.NA, pd.NA], ["chr1", 5, 15], [pd.NA, pd.NA, pd.NA]], columns=["chrom", "start", "end"], ).astype( { "start": pd.Int64Dtype(), "end": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal(bioframe.complement(df1, chromsizes), df1_complement) with pytest.raises(ValueError): # no NAs allowed in chromsizes bioframe.complement( df1, [("chr1", pd.NA, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] ) assert checks.is_bedframe(bioframe.complement(df1, chromsizes)) def test_closest(): df1 = pd.DataFrame( [ ["chr1", 1, 5], ], columns=["chrom", "start", "end"], ) df2 = pd.DataFrame( [["chr1", 4, 8], ["chr1", 10, 11]], columns=["chrom", "start", "end"] ) ### closest(df1,df2,k=1) ### d = """chrom start end chrom_ start_ end_ distance 0 chr1 1 5 chr1 4 8 0""" df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_": pd.Int64Dtype(), "end_": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal(df, bioframe.closest(df1, df2, k=1)) ### closest(df1,df2, ignore_overlaps=True)) ### d = """chrom_1 start_1 end_1 chrom_2 start_2 end_2 distance 0 chr1 1 5 chr1 10 11 5""" df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_2": pd.Int64Dtype(), "end_2": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal( df, bioframe.closest(df1, df2, suffixes=("_1", "_2"), ignore_overlaps=True) ) ### closest(df1,df2,k=2) ### d = """chrom_1 start_1 end_1 chrom_2 start_2 end_2 distance 0 chr1 1 5 chr1 4 8 0 1 chr1 1 5 chr1 10 11 5""" df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_2": pd.Int64Dtype(), "end_2": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal( df, bioframe.closest(df1, df2, suffixes=("_1", "_2"), k=2) ) ### change first interval to new chrom ### df2.iloc[0, 0] = "chrA" d = """chrom start end chrom_ start_ end_ distance 0 chr1 1 5 chr1 10 11 5""" df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_": pd.Int64Dtype(), "end_": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal(df, bioframe.closest(df1, df2, k=1)) ### test other return arguments ### df2.iloc[0, 0] = "chr1" d = """ index index_ have_overlap overlap_start overlap_end distance 0 0 0 True 4 5 0 1 0 1 False 5 """ df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal( df, bioframe.closest( df1, df2, k=2, return_overlap=True, return_index=True, return_input=False, return_distance=True, ), check_dtype=False, ) # closest should ignore empty groups (e.g. from categorical chrom) df = pd.DataFrame( [ ["chrX", 1, 8], ["chrX", 2, 10], ], columns=["chrom", "start", "end"], ) d = """ chrom_1 start_1 end_1 chrom_2 start_2 end_2 distance 0 chrX 1 8 chrX 2 10 0 1 chrX 2 10 chrX 1 8 0""" df_closest = pd.read_csv(StringIO(d), sep=r"\s+") df_cat = pd.CategoricalDtype(categories=["chrX", "chr1"], ordered=True) df = df.astype({"chrom": df_cat}) pd.testing.assert_frame_equal( df_closest, bioframe.closest(df, suffixes=("_1", "_2")), check_dtype=False, check_categorical=False, ) # closest should ignore null rows: code will need to be modified # as for overlap if an on=[] option is added df1 = pd.DataFrame( [ [pd.NA, pd.NA, pd.NA], ["chr1", 1, 5], ], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) df2 = pd.DataFrame( [ [pd.NA, pd.NA, pd.NA], ["chr1", 4, 8], [pd.NA, pd.NA, pd.NA], ["chr1", 10, 11], ], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) d = """chrom_1 start_1 end_1 chrom_2 start_2 end_2 distance 0 chr1 1 5 chr1 10 11 5""" df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_1": pd.Int64Dtype(), "end_1": pd.Int64Dtype(), "start_2": pd.Int64Dtype(), "end_2": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal( df, bioframe.closest(df1, df2, suffixes=("_1", "_2"), ignore_overlaps=True, k=5) ) with pytest.raises(ValueError): # inputs must be valid bedFrames df1.iloc[0, 0] = "chr10" bioframe.closest(df1, df2) ### closest with direction ### df1 = pd.DataFrame( [ ["chr1", 3, 5, "+"], ["chr1", 3, 5, "-"], ], columns=["chrom", "start", "end", "strand"], ) df2 = pd.DataFrame( [["chr1", 1, 2], ["chr1", 2, 8], ["chr1", 10, 11]], columns=["chrom", "start", "end"] ) ### closest(df1, df2, k=1, direction_col="strand") ### d = """chrom start end strand chrom_ start_ end_ distance 0 chr1 3 5 + chr1 2 8 0 1 chr1 3 5 - chr1 2 8 0 """ df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_": pd.Int64Dtype(), "end_": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal(df, bioframe.closest(df1, df2, k=1, direction_col="strand")) ### closest(df1, df2, k=1, ignore_upstream=False, ignore_downstream=True, ignore_overlaps=True, direction_col="strand") ### d = """chrom start end strand chrom_ start_ end_ distance 0 chr1 3 5 + chr1 1 2 1 1 chr1 3 5 - chr1 10 11 5 """ df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_": pd.Int64Dtype(), "end_": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal(df, bioframe.closest(df1, df2, k=1, ignore_upstream=False, ignore_downstream=True, ignore_overlaps=True, direction_col="strand")) ### closest(df1, df2, k=1, ignore_upstream=True, ignore_downstream=False, ignore_overlaps=True, direction_col="strand") ### d = """chrom start end strand chrom_ start_ end_ distance 0 chr1 3 5 + chr1 10 11 5 1 chr1 3 5 - chr1 1 2 1 """ df = pd.read_csv(StringIO(d), sep=r"\s+").astype( { "start_": pd.Int64Dtype(), "end_": pd.Int64Dtype(), "distance": pd.Int64Dtype(), } ) pd.testing.assert_frame_equal(df, bioframe.closest(df1, df2, k=1, ignore_upstream=True, ignore_downstream=False, ignore_overlaps=True, direction_col="strand")) def test_coverage(): #### coverage does not exceed length of original interval df1 = pd.DataFrame([["chr1", 3, 8]], columns=["chrom", "start", "end"]) df2 = pd.DataFrame([["chr1", 2, 10]], columns=["chrom", "start", "end"]) d = """chrom start end coverage 0 chr1 3 8 5""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, bioframe.coverage(df1, df2)) ### coverage of interval on different chrom returns zero for coverage and n_overlaps df1 = pd.DataFrame([["chr1", 3, 8]], columns=["chrom", "start", "end"]) df2 = pd.DataFrame([["chrX", 3, 8]], columns=["chrom", "start", "end"]) d = """chrom start end coverage 0 chr1 3 8 0 """ df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, bioframe.coverage(df1, df2)) ### when a second overlap starts within the first df1 = pd.DataFrame([["chr1", 3, 8]], columns=["chrom", "start", "end"]) df2 = pd.DataFrame( [["chr1", 3, 6], ["chr1", 5, 8]], columns=["chrom", "start", "end"] ) d = """chrom start end coverage 0 chr1 3 8 5""" df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal(df, bioframe.coverage(df1, df2)) ### coverage of NA interval returns zero for coverage df1 = pd.DataFrame( [ ["chr1", 10, 20], [pd.NA, pd.NA, pd.NA], ["chr1", 3, 8], [pd.NA, pd.NA, pd.NA], ], columns=["chrom", "start", "end"], ) df2 = pd.DataFrame( [["chr1", 3, 6], ["chr1", 5, 8], [pd.NA, pd.NA, pd.NA]], columns=["chrom", "start", "end"], ) df1 = bioframe.sanitize_bedframe(df1) df2 = bioframe.sanitize_bedframe(df2) df_coverage = pd.DataFrame( [ ["chr1", 10, 20, 0], [pd.NA, pd.NA, pd.NA, 0], ["chr1", 3, 8, 5], [pd.NA, pd.NA, pd.NA, 0], ], columns=["chrom", "start", "end", "coverage"], ).astype( {"start": pd.Int64Dtype(), "end": pd.Int64Dtype(), "coverage": pd.Int64Dtype()} ) pd.testing.assert_frame_equal(df_coverage, bioframe.coverage(df1, df2)) ### coverage without return_input returns a single column dataFrame assert ( bioframe.coverage(df1, df2, return_input=False)["coverage"].values == np.array([0, 0, 5, 0]) ).all() def test_subtract(): ### no intervals should be left after self-subtraction df1 = pd.DataFrame( [["chrX", 3, 8], ["chr1", 4, 7], ["chrX", 1, 5]], columns=["chrom", "start", "end"], ) assert len(bioframe.subtract(df1, df1)) == 0 ### no intervals on chrX should remain after subtracting a longer interval ### interval on chr1 should be split. ### additional column should be propagated to children. df2 = pd.DataFrame( [ ["chrX", 0, 18], ["chr1", 5, 6], ], columns=["chrom", "start", "end"], ) df1["animal"] = "sea-creature" df_result = pd.DataFrame( [["chr1", 4, 5, "sea-creature"], ["chr1", 6, 7, "sea-creature"]], columns=["chrom", "start", "end", "animal"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) pd.testing.assert_frame_equal( df_result, bioframe.subtract(df1, df2) .sort_values(["chrom", "start", "end"]) .reset_index(drop=True), ) ### no intervals on chrX should remain after subtracting a longer interval df2 = pd.DataFrame( [["chrX", 0, 4], ["chr1", 6, 6], ["chrX", 4, 9]], columns=["chrom", "start", "end"], ) df1["animal"] = "sea-creature" df_result = pd.DataFrame( [["chr1", 4, 6, "sea-creature"], ["chr1", 6, 7, "sea-creature"]], columns=["chrom", "start", "end", "animal"], ) pd.testing.assert_frame_equal( df_result.astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}), bioframe.subtract(df1, df2) .sort_values(["chrom", "start", "end"]) .reset_index(drop=True), ) ### subtracting dataframes funny column names funny_cols = ["C", "chromStart", "chromStop"] df1 = pd.DataFrame( [["chrX", 3, 8], ["chr1", 4, 7], ["chrX", 1, 5]], columns=funny_cols, ) df1["strand"] = "+" assert len(bioframe.subtract(df1, df1, cols1=funny_cols, cols2=funny_cols)) == 0 funny_cols2 = ["chr", "st", "e"] df2 = pd.DataFrame( [ ["chrX", 0, 18], ["chr1", 5, 6], ], columns=funny_cols2, ) df_result = pd.DataFrame( [["chr1", 4, 5, "+"], ["chr1", 6, 7, "+"]], columns=funny_cols + ["strand"], ) df_result = df_result.astype( {funny_cols[1]: pd.Int64Dtype(), funny_cols[2]: pd.Int64Dtype()} ) pd.testing.assert_frame_equal( df_result, bioframe.subtract(df1, df2, cols1=funny_cols, cols2=funny_cols2) .sort_values(funny_cols) .reset_index(drop=True), ) # subtract should ignore empty groups df1 = pd.DataFrame( [ ["chrX", 1, 8], ["chrX", 2, 10], ], columns=["chrom", "start", "end"], ) df2 = pd.DataFrame( [ ["chrX", 1, 8], ], columns=["chrom", "start", "end"], ) df_cat = pd.CategoricalDtype(categories=["chrX", "chr1"], ordered=True) df1 = df1.astype({"chrom": df_cat}) df_subtracted = pd.DataFrame( [ ["chrX", 8, 10], ], columns=["chrom", "start", "end"], ) assert bioframe.subtract(df1, df1).empty pd.testing.assert_frame_equal( df_subtracted.astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}), bioframe.subtract(df1, df2), check_dtype=False, check_categorical=False, ) ## test transferred from deprecated bioframe.split df1 = pd.DataFrame( [["chrX", 3, 8], ["chr1", 4, 7], ["chrX", 1, 5]], columns=["chrom", "start", "end"], ) df2 = pd.DataFrame( [ ["chrX", 4], ["chr1", 5], ], columns=["chrom", "pos"], ) df2["start"] = df2["pos"] df2["end"] = df2["pos"] df_result = ( pd.DataFrame( [ ["chrX", 1, 4], ["chrX", 3, 4], ["chrX", 4, 5], ["chrX", 4, 8], ["chr1", 5, 7], ["chr1", 4, 5], ], columns=["chrom", "start", "end"], ) .sort_values(["chrom", "start", "end"]) .reset_index(drop=True) .astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) ) pd.testing.assert_frame_equal( df_result, bioframe.subtract(df1, df2) .sort_values(["chrom", "start", "end"]) .reset_index(drop=True), ) # Test the case when a chromosome should not be split (now implemented with subtract) df1 = pd.DataFrame( [ ["chrX", 3, 8], ["chr1", 4, 7], ], columns=["chrom", "start", "end"], ) df2 = pd.DataFrame([["chrX", 4]], columns=["chrom", "pos"]) df2["start"] = df2["pos"].values df2["end"] = df2["pos"].values df_result = ( pd.DataFrame( [ ["chrX", 3, 4], ["chrX", 4, 8], ["chr1", 4, 7], ], columns=["chrom", "start", "end"], ) .sort_values(["chrom", "start", "end"]) .reset_index(drop=True) ) pd.testing.assert_frame_equal( df_result.astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}), bioframe.subtract(df1, df2) .sort_values(["chrom", "start", "end"]) .reset_index(drop=True), ) # subtract should ignore null rows df1 = pd.DataFrame( [[pd.NA, pd.NA, pd.NA], ["chr1", 1, 5]], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) df2 = pd.DataFrame( [ ["chrX", 1, 5], [pd.NA, pd.NA, pd.NA], ["chr1", 4, 8], [pd.NA, pd.NA, pd.NA], ["chr1", 10, 11], ], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) df_subtracted = pd.DataFrame( [ ["chr1", 1, 4], ], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) pd.testing.assert_frame_equal(df_subtracted, bioframe.subtract(df1, df2)) df1 = pd.DataFrame( [ [pd.NA, pd.NA, pd.NA], ], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) assert len(bioframe.subtract(df1, df2)) == 0 # empty df1 but valid chroms in df2 with pytest.raises(ValueError): # no non-null chromosomes bioframe.subtract(df1, df1) df2 = pd.DataFrame( [ [pd.NA, pd.NA, pd.NA], [pd.NA, pd.NA, pd.NA], ], columns=["chrom", "start", "end"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) with pytest.raises(ValueError): # no non-null chromosomes bioframe.subtract(df1, df2) def test_setdiff(): cols1 = ["chrom1", "start", "end"] cols2 = ["chrom2", "start", "end"] df1 = pd.DataFrame( [ ["chr1", 8, 12, "+", "cat"], ["chr1", 8, 12, "-", "cat"], ["chrX", 1, 8, "+", "cat"], ], columns=cols1 + ["strand", "animal"], ) df2 = pd.DataFrame( [ ["chrX", 7, 10, "-", "dog"], ["chr1", 6, 10, "-", "cat"], ["chr1", 6, 10, "-", "cat"], ], columns=cols2 + ["strand", "animal"], ) assert ( len( bioframe.setdiff( df1, df2, cols1=cols1, cols2=cols2, on=None, ) ) == 0 ) # everything overlaps assert ( len( bioframe.setdiff( df1, df2, cols1=cols1, cols2=cols2, on=["animal"], ) ) == 1 ) # two overlap, one remains assert ( len( bioframe.setdiff( df1, df2, cols1=cols1, cols2=cols2, on=["strand"], ) ) == 2 ) # one overlaps, two remain # setdiff should ignore nan rows df1 = pd.concat([pd.DataFrame([pd.NA]), df1, pd.DataFrame([pd.NA])])[ ["chrom1", "start", "end", "strand", "animal"] ] df1 = df1.astype( { "start": pd.Int64Dtype(), "end": pd.Int64Dtype(), } ) df2 = pd.concat([pd.DataFrame([pd.NA]), df2, pd.DataFrame([pd.NA])])[ ["chrom2", "start", "end", "strand", "animal"] ] df2 = df2.astype( { "start": pd.Int64Dtype(), "end": pd.Int64Dtype(), } ) assert (2, 5) == np.shape(bioframe.setdiff(df1, df1, cols1=cols1, cols2=cols1)) assert (2, 5) == np.shape(bioframe.setdiff(df1, df2, cols1=cols1, cols2=cols2)) assert (4, 5) == np.shape( bioframe.setdiff(df1, df2, on=["strand"], cols1=cols1, cols2=cols2) ) def test_count_overlaps(): df1 = pd.DataFrame( [ ["chr1", 8, 12, "+", "cat"], ["chr1", 8, 12, "-", "cat"], ["chrX", 1, 8, "+", "cat"], ], columns=["chrom1", "start", "end", "strand", "animal"], ) df2 = pd.DataFrame( [ ["chr1", 6, 10, "+", "dog"], ["chr1", 6, 10, "+", "dog"], ["chrX", 7, 10, "+", "dog"], ["chrX", 7, 10, "+", "dog"], ], columns=["chrom2", "start2", "end2", "strand", "animal"], ) assert ( bioframe.count_overlaps( df1, df2, on=None, cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), )["count"].values == np.array([2, 2, 2]) ).all() assert ( bioframe.count_overlaps( df1, df2, on=["strand"], cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), )["count"].values == np.array([2, 0, 2]) ).all() assert ( bioframe.count_overlaps( df1, df2, on=["strand", "animal"], cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), )["count"].values == np.array([0, 0, 0]) ).all() # overlaps with pd.NA counts_no_nans = bioframe.count_overlaps( df1, df2, on=None, cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ) df1_na = (pd.concat([pd.DataFrame([pd.NA]), df1, pd.DataFrame([pd.NA])])).astype( { "start": pd.Int64Dtype(), "end": pd.Int64Dtype(), } )[["chrom1", "start", "end", "strand", "animal"]] df2_na = (pd.concat([pd.DataFrame([pd.NA]), df2, pd.DataFrame([pd.NA])])).astype( { "start2": pd.Int64Dtype(), "end2": pd.Int64Dtype(), } )[["chrom2", "start2", "end2", "strand", "animal"]] counts_nans_inserted_after = ( pd.concat([pd.DataFrame([pd.NA]), counts_no_nans, pd.DataFrame([pd.NA])]) ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype(),})[ ["chrom1", "start", "end", "strand", "animal", "count"] ] counts_nans = bioframe.count_overlaps( df1_na, df2_na, on=None, cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ) pd.testing.assert_frame_equal( counts_nans, bioframe.count_overlaps( df1_na, df2, on=None, cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), ), ) assert ( counts_nans["count"].values == counts_nans_inserted_after["count"].fillna(0).values ).all() ### coverage without return_input returns a single column dataFrame pd.testing.assert_frame_equal( bioframe.count_overlaps( df1_na, df2_na, cols1=("chrom1", "start", "end"), cols2=("chrom2", "start2", "end2"), return_input=False, ), pd.DataFrame(counts_nans["count"]), ) def test_assign_view(): ## default assignment case view_df = pd.DataFrame( [ ["chr11", 1, 8, "chr11p"], ], columns=["chrom", "start", "end", "name"], ) df = pd.DataFrame( [ ["chr11", 0, 10, "+"], ], columns=["chrom", "start", "end", "strand"], ) df_assigned = pd.DataFrame( [ ["chr11", 0, 10, "+", "chr11p"], ], columns=["chrom", "start", "end", "strand", "view_region"], ) df_assigned = df_assigned.astype( {"chrom": str, "start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) pd.testing.assert_frame_equal(df_assigned, bioframe.assign_view(df, view_df)) # non-default columns in view funky_view = view_df.rename(columns={"chrom": "chr"}) pd.testing.assert_frame_equal( df_assigned, bioframe.assign_view( df, view_df=funky_view, cols_view=["chr", "start", "end"], ), ) # assignment with funny view_name_col and an interval on chr2 not cataloged in the view_df view_df = pd.DataFrame( [ ["chrX", 1, 8, "oranges"], ["chrX", 8, 20, "grapefruit"], ["chr1", 0, 10, "apples"], ], columns=["chrom", "start", "end", "fruit"], ) df = pd.DataFrame( [ ["chr1", 0, 10, "+"], ["chrX", 5, 10, "+"], ["chrX", 0, 5, "+"], ["chr2", 5, 10, "+"], ], columns=["chrom", "start", "end", "strand"], ) df_assigned = pd.DataFrame( [ ["chr1", 0, 10, "+", "apples"], ["chrX", 5, 10, "+", "oranges"], ["chrX", 0, 5, "+", "oranges"], ], columns=["chrom", "start", "end", "strand", "funny_view_region"], ) df_assigned = df_assigned.astype( {"chrom": str, "start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) pd.testing.assert_frame_equal( df_assigned, bioframe.assign_view( df, view_df, view_name_col="fruit", df_view_col="funny_view_region", drop_unassigned=True, ), ) ### keep the interval with NA as its region if drop_unassigned is False df_assigned = pd.DataFrame( [ ["chr1", 0, 10, "+", "apples"], ["chrX", 5, 10, "+", "oranges"], ["chrX", 0, 5, "+", "oranges"], ["chr2", 5, 10, "+", pd.NA], ], columns=["chrom", "start", "end", "strand", "funny_view_region"], ) df_assigned = df_assigned.astype( {"chrom": str, "start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) pd.testing.assert_frame_equal( df_assigned, bioframe.assign_view( df, view_df, view_name_col="fruit", df_view_col="funny_view_region", drop_unassigned=False, ), ) ### assign_view with NA values assigns a view of none df = pd.DataFrame( [ ["chr1", 0, 10, "+"], ["chrX", 5, 10, "+"], [pd.NA, pd.NA, pd.NA, "+"], ["chrX", 0, 5, "+"], ["chr2", 5, 10, "+"], ], columns=["chrom", "start", "end", "strand"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) pd.testing.assert_frame_equal( df, bioframe.assign_view(df, view_df, view_name_col="fruit").iloc[:, :-1] ) assert ( bioframe.assign_view(df, view_df, view_name_col="fruit")["view_region"].values == np.array(["apples", "oranges", None, "oranges", None], dtype=object) ).all() def test_sort_bedframe(): view_df = pd.DataFrame( [ ["chrX", 1, 8, "oranges"], ["chrX", 8, 20, "grapefruit"], ["chr1", 0, 10, "apples"], ], columns=["chrom", "start", "end", "fruit"], ) df = pd.DataFrame( [ ["chr2", 5, 10, "+"], ["chr1", 0, 10, "+"], ["chrX", 5, 10, "+"], ["chrX", 0, 5, "+"], ], columns=["chrom", "start", "end", "strand"], ) # sorting just by chrom,start,end df_sorted = pd.DataFrame( [ ["chr1", 0, 10, "+"], ["chr2", 5, 10, "+"], ["chrX", 0, 5, "+"], ["chrX", 5, 10, "+"], ], columns=["chrom", "start", "end", "strand"], ) pd.testing.assert_frame_equal(df_sorted, bioframe.sort_bedframe(df)) # when a view_df is provided, regions without assigned views # are placed last df_sorted = pd.DataFrame( [ ["chrX", 0, 5, "+"], ["chrX", 5, 10, "+"], ["chr1", 0, 10, "+"], ["chr2", 5, 10, "+"], ], columns=["chrom", "start", "end", "strand"], ) # test if sorting after assiging view to df denovo works, pd.testing.assert_frame_equal( df_sorted, bioframe.sort_bedframe(df, view_df, view_name_col="fruit") ) # non-default columns in view funky_view = view_df.rename(columns={"chrom": "chr"}) pd.testing.assert_frame_equal( df_sorted, bioframe.sort_bedframe( df, view_df=funky_view, view_name_col="fruit", cols_view=["chr", "start", "end"], ), ) # also test if sorting after assigning view to df denovo works with default view_name_col pd.testing.assert_frame_equal( df_sorted, bioframe.sort_bedframe(df, view_df.rename(columns={"fruit": "name"})) ) # also test if sorting after assiging view to df from chromsizes-like dictionary works: pd.testing.assert_frame_equal( df_sorted, bioframe.sort_bedframe(df, view_df={"chrX": 20, "chr1": 10}) ) ### 'df' has no column 'view_region', so this should raise a ValueError assert pytest.raises( ValueError, bioframe.sort_bedframe, df, view_df, view_name_col="fruit", df_view_col="view_region", ) ### sort_bedframe with NA entries: df = pd.DataFrame( [ ["chr1", 0, 10, "+"], ["chrX", 5, 10, "+"], [pd.NA, pd.NA, pd.NA, "+"], ["chrX", 0, 5, "+"], ["chr2", 5, 10, "+"], ], columns=["chrom", "start", "end", "strand"], ).astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) # NA put at end assert pd.isna(bioframe.sort_bedframe(df)["chrom"].values[-1]) assert pd.isna( bioframe.sort_bedframe(df, view_df, view_name_col="fruit")["chrom"].values[-1] ) assert ( df.dtypes == bioframe.sort_bedframe(df, view_df, view_name_col="fruit").dtypes ).all() bioframe-0.4.1/tests/test_io.py0000644000175000017500000000320414420777331016017 0ustar nileshnileshfrom io import StringIO import pandas as pd import numpy as np import pytest import bioframe ############# tests ##################### def test_read_table(): d = """chr1\nchr2\nchr2""" assert bioframe.read_table(StringIO(d), schema="bed3").shape == (3, 3) # raise a value error if any columns are filled with all NA with pytest.raises(ValueError): bioframe.read_table(StringIO(d), schema="bed3", schema_is_strict=True) # fill with nans to appropriate size if schema_is_strict=False (aka the default) d = """chr1 5 10 chr1 10 20 chr2 30 40""" assert bioframe.read_table(StringIO(d), schema="bed3", sep="\s+").shape == (3, 3) assert bioframe.read_table(StringIO(d), schema="bed6", sep="\s+").shape == (3, 6) assert bioframe.read_table(StringIO(d), schema="bed12", sep="\s+").shape == (3, 12) # bedpe has 10 columns d = """chr1 5 10 chr2 5 10 interval1 . + - chr1 10 20 chr1 5 10 interval2 . + - chr2 30 40 chr2 5 10 interval3 12 + - """ assert bioframe.read_table( StringIO(d), schema="bedpe", sep="\s+", schema_is_strict=True ).shape == (3, 10) def test_read_chromsizes(): d = """chr1\nchr2\nchr2""" with pytest.raises(ValueError): bioframe.read_chromsizes(StringIO(d)) d = """chr1\t1\nchr3\t2\nchr2\t3\n """ chromsizes = bioframe.read_chromsizes(StringIO(d)) assert type(chromsizes) is pd.Series assert chromsizes.name == "length" assert list(chromsizes.index) == ["chr1", "chr2", "chr3"] assert list(chromsizes.values) == [1, 3, 2] bioframe-0.4.1/tests/test_extras.py0000644000175000017500000002032714420777331016723 0ustar nileshnileshfrom io import StringIO import os.path as op import pandas as pd import numpy as np import pytest import bioframe testdir = op.realpath(op.dirname(__file__)) def test_make_chromarms(): ### test the case where columns have different names df1 = pd.DataFrame( [["chrX", 0, 8]], columns=["chromosome", "lo", "hi"], ) df2 = pd.DataFrame([["chrX", 4]], columns=["chromosome", "loc"]) df_result = pd.DataFrame( [ ["chrX", 0, 4, "chrX_p"], ["chrX", 4, 8, "chrX_q"], ], columns=["chromosome", "lo", "hi", "name"], ) # test passing 3 columns pd.testing.assert_frame_equal( df_result.astype({"lo": pd.Int64Dtype(), "hi": pd.Int64Dtype()}), bioframe.make_chromarms( df1, df2, cols_chroms=["chromosome", "lo", "hi"], cols_mids=["chromosome", "loc"], ), ) # test passing 2 columns pd.testing.assert_frame_equal( df_result.astype({"lo": pd.Int64Dtype(), "hi": pd.Int64Dtype()}).rename( columns={"lo": "start", "hi": "end"} ), bioframe.make_chromarms( df1, df2, cols_chroms=["chromosome", "hi"], cols_mids=["chromosome", "loc"], ), ) # todo: test for passing pd.series ! def test_binnify(): chromsizes = bioframe.read_chromsizes( testdir + "/test_data/test.chrom.sizes", filter_chroms=False ) assert len(chromsizes) == 2 assert len(bioframe.binnify(chromsizes, int(np.max(chromsizes.values)))) == len( chromsizes ) assert len(bioframe.binnify(chromsizes, int(np.min(chromsizes.values)))) == ( len(chromsizes) + 1 ) assert len(bioframe.binnify(chromsizes, 1)) == np.sum(chromsizes.values) def test_digest(): pytest.importorskip("Bio") fasta_records = bioframe.load_fasta(testdir + "/test_data/test.fa") assert len(fasta_records) == 2 ### no HindIII sites in the test.fa fasta records, so shouldn't change shape[0] assert bioframe.digest(fasta_records, "HindIII").shape == (2, 3) ### one DpnII site on chrTEST2, shape[0] should increase by one assert bioframe.digest(fasta_records, "DpnII").shape == (3, 3) ### DpnII site is on chrTEST2 position 3, first interval of chrTEST2 should end at 3 assert bioframe.digest(fasta_records, "DpnII").iloc[1].end == 3 def test_frac_mapped(): pytest.importorskip("pysam") chromsizes = bioframe.read_chromsizes( testdir + "/test_data/test.chrom.sizes", filter_chroms=False ) fasta_records = bioframe.load_fasta(testdir + "/test_data/test.fa") unmapped = np.array([1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]) assert ( unmapped == bioframe.frac_mapped( bioframe.binnify(chromsizes, 1), fasta_records, return_input=False ).values ).all() unmapped = np.array([0.8, 0.8, 0]) assert ( unmapped == bioframe.frac_mapped( bioframe.binnify(chromsizes, 5), fasta_records, return_input=False ).values ).all() unmapped = np.array([0.8, 4 / 7]) assert ( unmapped == bioframe.frac_mapped( bioframe.binnify(chromsizes, 7), fasta_records, return_input=False ).values ).all() def test_frac_gc(): pytest.importorskip("pysam") chromsizes = bioframe.read_chromsizes( testdir + "/test_data/test.chrom.sizes", filter_chroms=False ) fasta_records = bioframe.load_fasta(testdir + "/test_data/test.fa") unmapped_bp = ( 0 == bioframe.frac_mapped( bioframe.binnify(chromsizes, 1), fasta_records, return_input=False ).values ) assert np.isnan( bioframe.frac_gc( bioframe.binnify(chromsizes, 1), fasta_records, return_input=False, mapped_only=True, ).values[unmapped_bp] ).all() ## mapped_only=True should ignore N or return np.nan if interval only contains N np.testing.assert_equal( np.array([0.5, 0.5, np.nan]), bioframe.frac_gc( bioframe.binnify(chromsizes, 5), fasta_records, return_input=False, mapped_only=True, ).values, ) assert ( np.array([0.5, 0.5]) == bioframe.frac_gc( bioframe.binnify(chromsizes, 7), fasta_records, return_input=False, mapped_only=True, ).values ).all() ## mapped_only=False should count N as zero assert ( np.array([0.4, 0.4, 0]) == bioframe.frac_gc( bioframe.binnify(chromsizes, 5), fasta_records, return_input=False, mapped_only=False, ).values ).all() assert ( np.array([0.4, 2 / 7]) == bioframe.frac_gc( bioframe.binnify(chromsizes, 7), fasta_records, return_input=False, mapped_only=False, ).values ).all() def test_seq_gc(): assert (0 == bioframe.seq_gc("AT")) assert (np.isnan( bioframe.seq_gc("NNN"))) assert (1 == bioframe.seq_gc("NGnC")) assert (0.5 == bioframe.seq_gc("GTCA")) assert (0.25 == bioframe.seq_gc("nnnNgTCa", mapped_only=False)) with pytest.raises(ValueError): bioframe.seq_gc(["A", "T"]) with pytest.raises(ValueError): bioframe.seq_gc(np.array("ATGC")) ### todo: test frac_gene_coverage(bintable, mrna): ### currently broken def test_pair_by_distance(): df = pd.DataFrame( [ ["chr1", 1, 3, "+", "cat"], ["chr1", 6, 8, "+", "skunk"], ["chr1", 9, 11, "-", "dog"], ], columns=["chrom", "start", "end", "strand", "animal"], ) # Distance between midpoints assert ( bioframe.pair_by_distance( df, min_sep=1, max_sep=4, min_intervening=None, max_intervening=None, relative_to="midpoints", )[["start_1", "end_1", "start_2", "end_2"]].values == np.array([[6, 8, 9, 11]]) ).all() # Distance between regions endpoints assert ( bioframe.pair_by_distance( df, min_sep=1, max_sep=4, min_intervening=None, max_intervening=None, relative_to="endpoints", )[["start_1", "end_1", "start_2", "end_2"]].values == np.array([[1, 3, 6, 8]]) ).all() # Distance between midpoints is large assert ( bioframe.pair_by_distance( df, min_sep=1, max_sep=6, min_intervening=None, max_intervening=None, relative_to="midpoints", )[["start_1", "end_1", "start_2", "end_2"]].values == np.array([[1, 3, 6, 8], [6, 8, 9, 11]]) ).all() # Distance between midpoints is large assert ( bioframe.pair_by_distance( df, min_sep=1, max_sep=9, min_intervening=None, max_intervening=None, )[["start_1", "end_1", "start_2", "end_2"]].values == np.array([[1, 3, 6, 8], [1, 3, 9, 11], [6, 8, 9, 11]]) ).all() # Do not allow intervening regions assert ( bioframe.pair_by_distance( df, min_sep=1, max_sep=9, min_intervening=None, max_intervening=0, )[["start_1", "end_1", "start_2", "end_2"]].values == np.array([[1, 3, 6, 8], [6, 8, 9, 11]]) ).all() # Strictly one intervening region assert ( bioframe.pair_by_distance( df, min_sep=1, max_sep=9, min_intervening=1, max_intervening=None, )[["start_1", "end_1", "start_2", "end_2"]].values == np.array([[1, 3, 9, 11]]) ).all() # no negative min_sep with pytest.raises(ValueError): bioframe.pair_by_distance(df, min_sep=-1, max_sep=9) # no min_sep > max_sep with pytest.raises(ValueError): bioframe.pair_by_distance(df, min_sep=12, max_sep=9) # no min_intervening > max_intervening with pytest.raises(ValueError): bioframe.pair_by_distance( df, min_sep=0, max_sep=9, min_intervening=10, max_intervening=9 ) bioframe-0.4.1/tests/test_data/0000755000175000017500000000000014420777331015750 5ustar nileshnileshbioframe-0.4.1/tests/test_data/test.fa.fai0000644000175000017500000000004414420777331017773 0ustar nileshnileshchrTESTX 5 10 5 6 chrTEST2 7 26 7 8 bioframe-0.4.1/tests/test_data/test.fa0000644000175000017500000000004214420777331017233 0ustar nileshnilesh>chrTESTX AtGcN >chrTEST2 NGATCNN bioframe-0.4.1/tests/test_data/test.chrom.sizes0000644000175000017500000000002514420777331021112 0ustar nileshnileshchrTESTX 5 chrTEST2 7bioframe-0.4.1/tests/test_core_stringops.py0000644000175000017500000000477714420777331020470 0ustar nileshnileshimport pandas as pd import numpy as np import pytest from bioframe.core import stringops from bioframe.core.stringops import parse_region def test_to_ucsc_string(): assert stringops.to_ucsc_string(("chr21", 1, 4)) == "chr21:1-4" def test_parse_region(): # UCSC-style names assert parse_region("chr21") == ("chr21", 0, None) assert parse_region("chr21:1000-2000") == ("chr21", 1000, 2000) assert parse_region("chr21:1,000-2,000") == ("chr21", 1000, 2000) # Ensembl style names assert parse_region("6") == ("6", 0, None) assert parse_region("6:1000-2000") == ("6", 1000, 2000) assert parse_region("6:1,000-2,000") == ("6", 1000, 2000) # FASTA style names assert parse_region("gb|accession|locus") == ("gb|accession|locus", 0, None) assert parse_region("gb|accession|locus:1000-2000") == ( "gb|accession|locus", 1000, 2000, ) assert parse_region("gb|accession|locus:1,000-2,000") == ( "gb|accession|locus", 1000, 2000, ) # Punctuation in names (aside from :) assert parse_region("name-with-hyphens-") == ("name-with-hyphens-", 0, None) assert parse_region("GL000207.1") == ("GL000207.1", 0, None) assert parse_region("GL000207.1:1000-2000") == ("GL000207.1", 1000, 2000) # Trailing dash assert parse_region("chr21:1000-") == ("chr21", 1000, None) # Humanized units assert parse_region("6:1kb-2kb") == ("6", 1000, 2000) assert parse_region("6:1k-2000") == ("6", 1000, 2000) assert parse_region("6:1kb-2M") == ("6", 1000, 2000000) assert parse_region("6:1Gb-") == ("6", 1000000000, None) with pytest.raises(ValueError): parse_region("chr1:2,000-1,000") # reverse selection with pytest.raises(ValueError): parse_region("chr1::1000-2000") # more than one colon def test_parse_region_string(): assert stringops.parse_region_string("6:1kb-2kb") == ("6", 1000, 2000) assert stringops.parse_region_string("6:1,000-2,000") == ("6", 1000, 2000) assert stringops.parse_region_string("c6:1000-2000") == ("c6", 1000, 2000) def test_is_complete_ucsc_string(): assert stringops.is_complete_ucsc_string("chrX:1M-2M") is True assert stringops.is_complete_ucsc_string("chrX") is False assert stringops.is_complete_ucsc_string("1M-2M") is False assert stringops.is_complete_ucsc_string(1000) is False assert stringops.is_complete_ucsc_string(np.array([100, 200])) is False assert stringops.is_complete_ucsc_string(np.array(["chr1:100-200"])) is False bioframe-0.4.1/tests/test_core_specs.py0000644000175000017500000000615514420777331017545 0ustar nileshnileshfrom io import StringIO import pandas as pd import numpy as np import pytest from bioframe.core import specs import bioframe def test_get_default_colnames(): assert specs._get_default_colnames() == ("chrom", "start", "end") def test_update_default_colnames(): new_names = ("C", "chromStart", "chromStop") specs.update_default_colnames(new_names) assert specs._get_default_colnames() == new_names # test that with updated default column names, bioframe.ops recognizes df1 df1 = pd.DataFrame( [["chr1", 1, 5], ["chr1", 3, 8], ["chr1", 8, 10], ["chr1", 12, 14]], columns=list(new_names), ) df1_chromsizes = {"chr1": 100, "chrX": 100} df1_complement = pd.DataFrame( [ ["chr1", 0, 1, "chr1"], ["chr1", 10, 12, "chr1"], ["chr1", 14, 100, "chr1"], ["chrX", 0, 100, "chrX"], ], columns=list(new_names) + ["view_region"], ) pd.testing.assert_frame_equal( bioframe.complement(df1, view_df=df1_chromsizes), df1_complement ) # cannot update with just two colujmns with pytest.raises(ValueError): specs.update_default_colnames(("chromosome", "position")) # extra stuff is not allowed with pytest.raises(ValueError): specs.update_default_colnames(["chromosome", "start", "end", "extrasuff"]) # reset to default specs.update_default_colnames(("chrom", "start", "end")) def test_verify_columns(): new_names = ("C", "chromStart", "chromStop") df1 = pd.DataFrame( [["chr1", 1, 5], ["chr1", 3, 8], ["chr1", 8, 10], ["chr1", 12, 14]], columns=list(new_names), ) with pytest.raises(ValueError): specs._verify_columns(df1, specs._get_default_colnames()) assert specs._verify_columns( df1, new_names, return_as_bool=True, ) # no repeated column names with pytest.raises(ValueError): specs._verify_columns(df1, ["chromStart", "chromStart"], unique_cols=True) def test_verify_column_dtypes(): new_names = ("C", "chromStart", "chromStop") df1 = pd.DataFrame( [["chr1", 1, 5], ["chr1", 3, 8], ["chr1", 8, 10], ["chr1", 12, 14]], columns=list(new_names), ) with pytest.raises(ValueError): specs._verify_column_dtypes(df1, specs._get_default_colnames()) assert specs._verify_column_dtypes(df1, new_names, return_as_bool=True) df1["chromStart"] = df1["chromStart"].astype(float) assert specs._verify_column_dtypes(df1, new_names, return_as_bool=True) is False df1["chromStart"] = df1["chromStart"].astype(pd.Int64Dtype()) assert specs._verify_column_dtypes(df1, new_names, return_as_bool=True) df1["C"] = df1["C"].str.replace("chr", "").astype(int) assert specs._verify_column_dtypes(df1, new_names, return_as_bool=True) is False def test_is_chrom_dtype(): assert specs.is_chrom_dtype(type("chrX")) fruit = pd.CategoricalDtype( categories=["oranges", "grapefruit", "apples"], ordered=True ) assert specs.is_chrom_dtype(fruit) assert not specs.is_chrom_dtype(type(1)) assert not specs.is_chrom_dtype(type(10.0)) bioframe-0.4.1/tests/test_core_construction.py0000644000175000017500000001646214420777331021164 0ustar nileshnileshfrom io import StringIO import pandas as pd import numpy as np import pytest from bioframe.core.construction import from_any from bioframe.core import construction def test_add_ucsc_name_column(): df = pd.DataFrame( {"chrom": [f"chr{i}" for i in range(3)], "start": [1, 2, 3], "end": [4, 5, 6]} ) pd.testing.assert_series_equal( construction.add_ucsc_name_column(df)["name"], pd.Series( data=["chr0:1-4", "chr1:2-5", "chr2:3-6"], index=[0, 1, 2], name="name" ), ) def test_any(): ### tests copied from old parse_regions # main functionality: convert to dataframe and create name df = pd.DataFrame( {"chrom": [f"chr{i}" for i in range(3)], "start": [1, 2, 3], "end": [4, 5, 6]} ) parsed = from_any(df) assert not "name" in parsed.columns assert parsed.iloc[0]["chrom"] == "chr0" # re-create dataframe from UCSC name alone df2 = pd.DataFrame( { "regions": construction.add_ucsc_name_column(parsed, name_col="regions")[ "regions" ].values } ) assert ( (from_any(df2, name_col="regions")[["chrom", "start", "end"]] == parsed) .all() .all() ) # re-parsing results yields the same assert (from_any(parsed) == parsed).all().all() # extra columns don't get overwritten df["name"] = "test-value" assert (from_any(df)["name"] == df["name"]).all() # None or False will be parsed assert from_any([("chr1", None, 5)], fill_null={"chr1": 10})["start"].values[0] == 0 # pull end from chromsizes p2 = from_any([("chr1", 5, None)], fill_null={"chr1": 40}) assert list(p2.values[0]) == ["chr1", 5, 40] # We could keep things as None if chromsizes were not proviced p3 = from_any(["chr1", "chr2"], fill_null=False) assert list(p3.values[0]) == ["chr1", None, None] # parse the strange name p8 = from_any(["chr1:1,000,000-4M"]) assert list(p8.values[0]) == ["chr1", 1000000, 4000000] p9 = from_any(["chr1"]) assert list(p9.values[0]) == ["chr1", None, None] with pytest.raises(ValueError): from_any([("ch1", 1, 2, "chr1:1-2", "puppies")]) # puppies are not allowed with pytest.raises(ValueError): from_any([("chr1", 5, None)], fill_null={"chr2": 40}) # input tuple of tuples p2 = from_any((("chr1", 5, 10), ("chrX", 10, 20))) assert list(p2.values[0]) == ["chr1", 5, 10] # input tuple of lists p2 = from_any((["chr1", 5, 10], ["chrX", 10, 20])) assert list(p2.values[0]) == ["chr1", 5, 10] # input tuple of ucsc strings p2 = from_any(("chr1:5-10",)) assert list(p2.values[0]) == ["chr1", 5, 10] # input single tuple p2 = from_any(("chr1", 5, 10)) assert list(p2.values[0]) == ["chr1", 5, 10] def test_sanitize_bedframe(): df1 = pd.DataFrame( [ ["chr1", 10, 20], ["chr1", 10, 20], ["chr1", 15, np.nan], ["chr1", pd.NA, 25], ], columns=["chrom", "start", "end"], ) # drop rows with null values sanitized_df1 = pd.DataFrame( [["chr1", 10, 20], ["chr1", 10, 20]], columns=["chrom", "start", "end"] ) sanitized_df1 = sanitized_df1.astype( {"chrom": str, "start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) pd.testing.assert_frame_equal( sanitized_df1, construction.sanitize_bedframe(df1, drop_null=True) ) # keep rows with null, but recast sanitized_df1 = pd.DataFrame( [ ["chr1", 10, 20], ["chr1", 10, 20], [pd.NA, pd.NA, pd.NA], [pd.NA, pd.NA, pd.NA], ], columns=["chrom", "start", "end"], ) sanitized_df1 = sanitized_df1.astype( {"chrom": object, "start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) pd.testing.assert_frame_equal( sanitized_df1.fillna(-1), construction.sanitize_bedframe(df1).fillna(-1) ) # flip intervals as well as drop NA df1 = pd.DataFrame( [ ["chr1", 20, 10], ["chr1", pd.NA, 25], ], columns=["chrom", "start", "end"], ) sanitized_df1 = pd.DataFrame([["chr1", 10, 20]], columns=["chrom", "start", "end"]) sanitized_df1 = sanitized_df1.astype( {"chrom": str, "start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) pd.testing.assert_frame_equal( sanitized_df1, construction.sanitize_bedframe( df1, start_exceed_end_action="fLiP", drop_null=True ), ) # flip intervals as well as drop NA df1 = pd.DataFrame( [ ["chr1", 20, 10], ["chr1", pd.NA, 25], ], columns=["chrom", "start", "end"], ) sanitized_df1 = pd.DataFrame([["chr1", 10, 20]], columns=["chrom", "start", "end"]) sanitized_df1 = sanitized_df1.astype( {"chrom": str, "start": pd.Int64Dtype(), "end": pd.Int64Dtype()} ) assert construction.sanitize_bedframe( df1, start_exceed_end_action="drop", drop_null=True ).empty def test_make_viewframe(): # test dict input view_df = pd.DataFrame( [ ["chrTESTX", 0, 10, "chrTESTX:0-10"], ["chrTESTX_p", 0, 12, "chrTESTX_p:0-12"], ], columns=["chrom", "start", "end", "name"], ) pd.testing.assert_frame_equal( view_df.copy(), construction.make_viewframe( {"chrTESTX": 10, "chrTESTX_p": 12}, name_style="ucsc" ), ) # test list input region_list = [("chrTESTX", 0, 10), ("chrTESTX_p", 0, 12)] pd.testing.assert_frame_equal( view_df.copy(), construction.make_viewframe(region_list, name_style="ucsc"), ) # test pd.Series input chromsizes = pd.Series(data=[5, 8], index=["chrTESTXq", "chrTEST_2p"]) d = """ chrom start end name 0 chrTESTXq 0 5 chrTESTXq 1 chrTEST_2p 0 8 chrTEST_2p""" view_df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal( view_df.copy(), construction.make_viewframe(chromsizes, name_style=None) ) d = """ chrom start end name 0 chrTESTXq 0 5 chrTESTXq:0-5 1 chrTEST_2p 0 8 chrTEST_2p:0-8""" view_df = pd.read_csv(StringIO(d), sep=r"\s+") pd.testing.assert_frame_equal( view_df.copy(), construction.make_viewframe(chromsizes, name_style="UCSC"), ) # test pd.DataFrame input pd.testing.assert_frame_equal(view_df.copy(), construction.make_viewframe(view_df)) # if you provide unique names, this is accepted unchanged by make_viewframe view_df = pd.DataFrame( [["chrTESTX", 0, 10, "chrTEST_1"], ["chrTESTY", 0, 12, "chrTEST_2"]], columns=["chrom", "start", "end", "name"], ) region_list = [("chrTESTX", 0, 10, "chrTEST_1"), ("chrTESTY", 0, 12, "chrTEST_2")] pd.testing.assert_frame_equal( view_df.copy(), construction.make_viewframe(region_list) ) pd.testing.assert_frame_equal(view_df.copy(), construction.make_viewframe(view_df)) pd.testing.assert_frame_equal( view_df.copy(), construction.make_viewframe( view_df, check_bounds={"chrTESTX": 11, "chrTESTY": 13} ), ) with pytest.raises(ValueError): construction.make_viewframe( view_df, check_bounds={"chrTESTX": 9, "chrTESTY": 13} ) bioframe-0.4.1/tests/test_core_checks.py0000644000175000017500000002461114420777331017665 0ustar nileshnileshfrom io import StringIO import pandas as pd import numpy as np import pytest from bioframe.core.checks import * from bioframe.ops import sort_bedframe def test_is_cataloged(): ### chr2q is not in view view_df = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr1", 13, 26, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "name"], ) df = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr1", 5, 15, "chr1p"], ["chr2", 13, 26, "chr2q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "view_region"], ) assert not is_cataloged(df, view_df) ### chr1q is in view, df_view_col and view_name_col have funny labels. view_df = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr1", 13, 26, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "funny_name"], ) df = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr2", 13, 26, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "funny_view_region"], ) assert is_cataloged( df, view_df, df_view_col="funny_view_region", view_name_col="funny_name" ) def test_is_contained(): view_df = pd.DataFrame( [ ["chr1", 0, 20, "chr1p"], ["chr1", 21, 30, "chr1q"], ["chrX", 1, 10, "chrX_0"], ], columns=["chrom", "start", "end", "name"], ) ### not contained because chr2q is not cataloged df = pd.DataFrame( [ ["chr1", 0, 12, "chr1p"], ["chr2", 13, 26, "chr2q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "view_region"], ) assert not is_contained(df, view_df, df_view_col="view_region") ### not contained because second interval falls outside the view regions df = pd.DataFrame( [ ["chr1", 14, 15, "chr1p"], ["chr1", -1, 1, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "view_region"], ) assert not is_contained(df, view_df) df = pd.DataFrame( [ ["chr1", 12, 12, "chr1p"], ["chr1", 13, 14, "chr1q"], ["chrX", 1, 8, "chrX_0"], ], columns=["chrom", "start", "end", "view_region"], ) # is contained, because assignments are inferred assert is_contained(df, view_df) # is not contained, because assignments are not inferred assert not is_contained(df, view_df, df_view_col="view_region") ### second interval falls completely out of the view df = pd.DataFrame( [ ["chr1", 12, 12, "chr1p"], ["chr1", 100, 101, "chr1q"], ], columns=["chrom", "start", "end", "view_region"], ) # fails due to NAs after overlap to infer the regions with pytest.raises(AssertionError): is_contained(df, view_df, raise_errors=True) # fails due to some of the intervals being trimmed with pytest.raises(ValueError): is_contained(df, view_df, df_view_col="view_region", raise_errors=True) def test_is_overlapping(): ### interval on chr1 overlaps d = """chrom start end 0 chr1 3 6 1 chr1 5 10 2 chr2 5 10""" df = pd.read_csv(StringIO(d), sep=r"\s+") assert is_overlapping(df) is True ### adjacent intervals do not overlap d = """chrom start end 0 chr1 3 6 1 chr1 6 10 2 chr2 5 10""" df = pd.read_csv(StringIO(d), sep=r"\s+") assert is_overlapping(df) is False def test_is_covering(): ### test is_covering where an interval from df completely overlaps ### two different regions from view df1 = pd.DataFrame( [ ["chr1", -5, 25], ], columns=["chrom", "start", "end"], ) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] assert is_covering(df1, chromsizes) is True ### test is_covering where two intervals from df overlap ### two different regions from view df1 = pd.DataFrame( [ ["chr1", -5, 10], ["chr1", 11, 12], ["chr1", 12, 20], ], columns=["chrom", "start", "end"], ) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] assert is_covering(df1, chromsizes) is True ### test is_covering where two intervals from df overlap ### two different regions from view df1 = pd.DataFrame( [ ["chr1", -5, 10, "chr1q"], ["chr1", 11, 12, "chr1q"], ["chr1", 12, 20, "chr1q"], ], columns=["chrom", "start", "end", "view_region"], ) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] assert is_covering(df1, chromsizes) is True def test_is_tiling(): ### view region chr1p is tiled by one interval, chr1q is tiled by two df1 = pd.DataFrame( [ ["chr1", 0, 9, "chr1p"], ["chr1", 11, 12, "chr1q"], ["chr1", 12, 20, "chr1q"], ], columns=["chrom", "start", "end", "view_region"], ) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] assert is_tiling(df1, chromsizes) is True ### not tiling, since (chr1,0,9) is associated with chr1q df1 = pd.DataFrame( [ ["chr1", 0, 9, "chr1q"], ["chr1", 11, 12, "chr1q"], ["chr1", 12, 20, "chr1q"], ], columns=["chrom", "start", "end", "view_region"], ) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] assert is_tiling(df1, chromsizes) is False ### not tiling, contains overlaps df1 = pd.DataFrame( [ ["chr1", 0, 9, "chr1p"], ["chr1", 11, 13, "chr1q"], ["chr1", 12, 20, "chr1q"], ], columns=["chrom", "start", "end", "view_region"], ) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] assert is_tiling(df1, chromsizes) is False ### not tiling, since it doesn't cover df1 = pd.DataFrame( [ ["chr1", 11, 12, "chr1q"], ["chr1", 12, 20, "chr1q"], ], columns=["chrom", "start", "end", "view_region"], ) chromsizes = [("chr1", 0, 9, "chr1p"), ("chr1", 11, 20, "chr1q")] assert is_tiling(df1, chromsizes) is False def test_is_bedframe(): ##missing a column df1 = pd.DataFrame( [ ["chr1", 11], ["chr1", 12], ], columns=["chrom", "start"], ) assert is_bedframe(df1) is False ### end column has invalid dtype df1 = pd.DataFrame( [ ["chr1", 10, "20"], ["chr1", 10, "12"], ], columns=["chrom", "start", "end"], ) assert is_bedframe(df1) is False ### second interval start > ends. df1 = pd.DataFrame( [ ["chr1", 10, 20], ["chr1", 15, 10], ], columns=["chrom", "start", "end"], ) assert is_bedframe(df1) is False ### third interval has a null in one column df1 = pd.DataFrame( [ ["chr1", 10, 20, "first"], ["chr1", 10, 15, "second"], ["chr1", pd.NA, 15, "third"], ], columns=["chrom", "start", "end", "name"], ) # should raise a TypeError if the second column is an object with pytest.raises(TypeError): is_bedframe(df1, raise_errors=True) # should raise a ValueError after recasting to pd.Int64Dtype df1 = df1.astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) with pytest.raises(ValueError): is_bedframe(df1, raise_errors=True) ### first interval is completely NA df1 = pd.DataFrame( [ [pd.NA, pd.NA, pd.NA, "first"], ["chr1", 10, 15, "second"], ["chr1", 10, 15, "third"], ], columns=["chrom", "start", "end", "name"], ) df1 = df1.astype({"start": pd.Int64Dtype(), "end": pd.Int64Dtype()}) assert is_bedframe(df1) is True def test_is_viewframe(): # not a bedframe df1 = pd.DataFrame( [ ["chr1", 10, 20, "chr1p"], ["chr1", 15, 10, "chr1q"], ], columns=["chrom", "start", "end", "name"], ) assert is_viewframe(df1) is False # no column for region name df1 = pd.DataFrame( [ ["chr1", 10, 20], ["chr1", 30, 40], ], columns=["chrom", "start", "end"], ) assert is_viewframe(df1) is False # contains null values df1 = pd.DataFrame( [ ["chr1", 10, 20, "chr1p"], ["chr1", pd.NA, np.nan, "chr1q"], ], columns=["chrom", "start", "end", "name"], ) assert is_viewframe(df1) is False # overlapping intervals df1 = pd.DataFrame( [ ["chr1", 10, 20, "chr1p"], ["chr1", 15, 25, "chr1q"], ], columns=["chrom", "start", "end", "name"], ) assert is_viewframe(df1) is False # valid view df1 = pd.DataFrame( [ ["chr1", 10, 20, "chr1p"], ["chr1", 20, 25, "chr1q"], ["chr2", 20, 25, "chrTEST_2p"], ], columns=["chrom", "start", "end", "name"], ) assert is_viewframe(df1) is True def test_is_sorted(): view_df = pd.DataFrame( [ ["chrX", 1, 8, "oranges"], ["chrX", 8, 20, "grapefruit"], ["chr1", 0, 10, "apples"], ], columns=["chrom", "start", "end", "fruit"], ) df_view_cat = pd.CategoricalDtype( categories=["oranges", "grapefruit", "apples"], ordered=True ) view_df = view_df.astype({"fruit": df_view_cat}) assert is_sorted( view_df, view_df=view_df, view_name_col="fruit", df_view_col="fruit" ) df = pd.DataFrame( [ ["chr1", 0, 10, "+"], ["chrX", 5, 10, "+"], ["chrX", 0, 5, "+"], ["chr2", 5, 10, "+"], ], columns=["chrom", "start", "end", "strand"], ) assert not is_sorted(df) bfs = sort_bedframe(df, view_df=view_df, view_name_col="fruit") assert is_sorted(bfs, view_df=view_df, view_name_col="fruit") # view_df specifies a different ordering, so should not be sorted assert not is_sorted(bfs) bioframe-0.4.1/setup.py0000644000175000017500000000414314420777331014352 0ustar nileshnilesh#!/usr/bin/env python # -*- coding: utf-8 -*- import io import os import re from setuptools import setup, find_packages PKG_NAME = "bioframe" README_PATH = "README.md" INSTALL_DEPS_PATH = "requirements.txt" CLASSIFIERS = [ "Development Status :: 4 - Beta", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", ] def _read(*parts, **kwargs): filepath = os.path.join(os.path.dirname(__file__), *parts) encoding = kwargs.pop("encoding", "utf-8") with io.open(filepath, encoding=encoding) as fh: text = fh.read() return text def get_version(pkg_name): version = re.search( r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', _read("{}/_version.py".format(pkg_name)), re.MULTILINE, ).group(1) return version def get_long_description(readme_path): return _read(readme_path) def get_requirements(path): content = _read(path) return [req for req in content.split("\n") if req != "" and not req.startswith("#")] # extras_require = { # 'docs': [ # 'Sphinx>=1.1', # 'numpydoc>=0.5' # ] # } setup( name=PKG_NAME, author="Open2C", author_email="nezar@mit.edu", version=get_version(PKG_NAME), license="MIT", description="Pandas utilities for tab-delimited and other genomic files", long_description=get_long_description(README_PATH), long_description_content_type="text/markdown", url="https://github.com/open2c/bioframe", keywords=[ "pandas", "dataframe", "genomics", "epigenomics", "bioinformatics", "intervals", ], packages=find_packages(), package_data={"bioframe": ["io/data/*"]}, zip_safe=False, classifiers=CLASSIFIERS, python_requires=">=3.7", install_requires=get_requirements(INSTALL_DEPS_PATH), tests_require=["pytest"], setup_requires=["wheel"], # extras_require=extras_require, # entry_points={ # } ) bioframe-0.4.1/setup.cfg0000644000175000017500000000003414420777331014454 0ustar nileshnilesh[bdist_wheel] universal = 1 bioframe-0.4.1/requirements.txt0000644000175000017500000000005414420777331016121 0ustar nileshnileshnumpy>=1.10 matplotlib pandas>=1.3 requests bioframe-0.4.1/requirements-dev.txt0000644000175000017500000000005314420777331016674 0ustar nileshnilesh-r requirements.txt biopython pysam pytest bioframe-0.4.1/readthedocs.yml0000644000175000017500000000656114420777331015656 0ustar nileshnilesh# .readthedocs.yml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/conf.py # Build documentation with MkDocs #mkdocs: # configuration: mkdocs.yml # Optionally build your docs in additional formats such as PDF and ePub formats: all # Optionally set the version of Python and requirements required to build your docs python: version: 3.7 install: - requirements: docs/requirements.txt # .readthedocs.yml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/conf.py # Build documentation with MkDocs #mkdocs: # configuration: mkdocs.yml # Optionally build your docs in additional formats such as PDF and ePub formats: all # Optionally set the version of Python and requirements required to build your docs # setup_py_install: true python: version: 3.8 install: - requirements: docs/requirements_rtd.txt - method: setuptools path: . bioframe-0.4.1/docs/0000755000175000017500000000000014420777331013566 5ustar nileshnileshbioframe-0.4.1/docs/tutorials/0000755000175000017500000000000014420777331015614 5ustar nileshnileshbioframe-0.4.1/docs/tutorials/tutorial_assign_peaks_to_genes.ipynb0000644000175000017500000021603214420777331025140 0ustar nileshnilesh{ "cells": [ { "cell_type": "markdown", "id": "57c80a2c", "metadata": {}, "source": [ "# How to: assign ChIP-seq peaks to genes\n", "\n", "This tutorial demonstrates one way to assign CTCF ChIP-seq peaks to the nearest genes using bioframe." ] }, { "cell_type": "code", "execution_count": 1, "id": "ad9ab941", "metadata": {}, "outputs": [], "source": [ "import bioframe\n", "import numpy as np\n", "import pandas as pd \n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 72, "id": "562865cc", "metadata": {}, "outputs": [], "source": [ "base_dir = '/tmp/bioframe_tutorial_data/'\n", "assembly = 'hg38'" ] }, { "cell_type": "markdown", "id": "d3dae5c3", "metadata": {}, "source": [ "## Load chromosome sizes\n" ] }, { "cell_type": "code", "execution_count": 74, "id": "6253803a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "chr21 46709983\n", "chr22 50818468\n", "chrX 156040895\n", "chrY 57227415\n", "chrM 16569\n", "Name: length, dtype: int64" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chromsizes = bioframe.fetch_chromsizes(assembly)\n", "chromsizes.tail()" ] }, { "cell_type": "code", "execution_count": 78, "id": "c74347d2", "metadata": {}, "outputs": [], "source": [ "chromosomes = bioframe.make_viewframe(chromsizes)" ] }, { "cell_type": "markdown", "id": "eb8e2724", "metadata": {}, "source": [ "## Load CTCF ChIP-seq peaks for HFF from ENCODE\n", "\n", "This approach makes use of the `narrowPeak` schema for bioframe.read_table . " ] }, { "cell_type": "code", "execution_count": 3, "id": "48616968", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendnamescorestrandfc-log10p-log10qrelSummit
0chr194830954148309911.1000.5.04924-1.00.00438185
1chr4130563716130564086.993.5.05052-1.00.00432185
2chr1200622507200622877.591.5.05489-1.00.00400185
3chr5112848447112848817.869.5.05841-1.00.00441185
4chr1145960616145960986.575.5.05955-1.00.00439185
\n", "
" ], "text/plain": [ " chrom start end name score strand fc -log10p -log10q \\\n", "0 chr19 48309541 48309911 . 1000 . 5.04924 -1.0 0.00438 \n", "1 chr4 130563716 130564086 . 993 . 5.05052 -1.0 0.00432 \n", "2 chr1 200622507 200622877 . 591 . 5.05489 -1.0 0.00400 \n", "3 chr5 112848447 112848817 . 869 . 5.05841 -1.0 0.00441 \n", "4 chr1 145960616 145960986 . 575 . 5.05955 -1.0 0.00439 \n", "\n", " relSummit \n", "0 185 \n", "1 185 \n", "2 185 \n", "3 185 \n", "4 185 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ctcf_peaks = bioframe.read_table(\"https://www.encodeproject.org/files/ENCFF401MQL/@@download/ENCFF401MQL.bed.gz\", schema='narrowPeak')\n", "ctcf_peaks.head()" ] }, { "cell_type": "code", "execution_count": 83, "id": "5a228b72", "metadata": {}, "outputs": [], "source": [ "# Filter for selected chromosomes:\n", "ctcf_peaks = bioframe.overlap(ctcf_peaks, chromosomes).dropna(subset=['name_'])[ctcf_peaks.columns]" ] }, { "cell_type": "markdown", "id": "e39fca85", "metadata": {}, "source": [ "## Get list of genes from UCSC\n", "\n", "UCSC genes are stored in .gtf format." ] }, { "cell_type": "code", "execution_count": 4, "id": "e75ffbb4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromsourcefeaturestartendscorestrandframeattributes
47chr1ensGeneCDS6909170005.+0gene_id \"ENSG00000186092\"; transcript_id \"ENST...
112chr1ensGeneCDS182709182746.+0gene_id \"ENSG00000279928\"; transcript_id \"ENST...
114chr1ensGeneCDS183114183240.+1gene_id \"ENSG00000279928\"; transcript_id \"ENST...
116chr1ensGeneCDS183922184155.+0gene_id \"ENSG00000279928\"; transcript_id \"ENST...
122chr1ensGeneCDS185220185350.-2gene_id \"ENSG00000279457\"; transcript_id \"ENST...
\n", "
" ], "text/plain": [ " chrom source feature start end score strand frame \\\n", "47 chr1 ensGene CDS 69091 70005 . + 0 \n", "112 chr1 ensGene CDS 182709 182746 . + 0 \n", "114 chr1 ensGene CDS 183114 183240 . + 1 \n", "116 chr1 ensGene CDS 183922 184155 . + 0 \n", "122 chr1 ensGene CDS 185220 185350 . - 2 \n", "\n", " attributes \n", "47 gene_id \"ENSG00000186092\"; transcript_id \"ENST... \n", "112 gene_id \"ENSG00000279928\"; transcript_id \"ENST... \n", "114 gene_id \"ENSG00000279928\"; transcript_id \"ENST... \n", "116 gene_id \"ENSG00000279928\"; transcript_id \"ENST... \n", "122 gene_id \"ENSG00000279457\"; transcript_id \"ENST... " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "genes_url = 'https://hgdownload.cse.ucsc.edu/goldenpath/hg38/bigZips/genes/hg38.ensGene.gtf.gz'\n", "genes = bioframe.read_table(genes_url, schema='gtf').query('feature==\"CDS\"')\n", "\n", "genes.head() \n", "\n", "## Note this functions to parse the attributes of the genes:\n", "# import bioframe.sandbox.gtf_io\n", "# genes_attr = bioframe.sandbox.gtf_io.parse_gtf_attributes(genes['attributes'])" ] }, { "cell_type": "code", "execution_count": 84, "id": "84b4226f", "metadata": {}, "outputs": [], "source": [ "# Filter for selected chromosomes:\n", "genes = bioframe.overlap(genes, chromosomes).dropna(subset=['name_'])[genes.columns]" ] }, { "cell_type": "markdown", "id": "111ff194", "metadata": {}, "source": [ "## Assign each peak to the gene\n", "\n", "![Setup](https://raw.githubusercontent.com/open2c/bioframe/main/docs/figs/closest0.png)\n", "\n", "![Default closests](https://raw.githubusercontent.com/open2c/bioframe/main/docs/figs/closest3.png)\n", "\n", "Here, we want to assign each peak (feature) to a gene (input table)." ] }, { "cell_type": "code", "execution_count": 85, "id": "4d78c70b", "metadata": {}, "outputs": [], "source": [ "peaks_closest = bioframe.closest(genes, ctcf_peaks)" ] }, { "cell_type": "code", "execution_count": 87, "id": "b55e2e12", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 1000.0)" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the distribution of distances from peaks to genes: \n", "plt.hist( peaks_closest['distance'], np.arange(0, 1e3, 10));\n", "plt.xlim( [0, 1e3] )" ] }, { "cell_type": "markdown", "id": "8cec3987", "metadata": {}, "source": [ "## Ignore upstream/downstream peaks from genes (strand-indifferent version)\n", "\n", "Sometimes you may want to ignore all the CTCFs upstream from the genes. \n", "\n", "By default, `bioframe.overlap` does not know the orintation of the genes, and thus assumes that the upstream/downstream is defined by the genomic coordinate (upstream is the direction towards the smaller coordinate):\n", "\n", "![Closests with ignoring](https://raw.githubusercontent.com/open2c/bioframe/main/docs/figs/closest2.png)\n" ] }, { "cell_type": "code", "execution_count": 88, "id": "e99e5213", "metadata": {}, "outputs": [], "source": [ "peaks_closest_upstream_nodir = bioframe.closest(genes, ctcf_peaks, \n", " ignore_overlaps=False,\n", " ignore_upstream=False,\n", " ignore_downstream=True,\n", " direction_col=None)\n", "\n", "peaks_closest_downstream_nodir = bioframe.closest(genes, ctcf_peaks, \n", " ignore_overlaps=False,\n", " ignore_upstream=True,\n", " ignore_downstream=False,\n", " direction_col=None)" ] }, { "cell_type": "markdown", "id": "2fa693c9", "metadata": {}, "source": [ "Note that distribution did not change much, and upstream and downstream distances are very similar:" ] }, { "cell_type": "code", "execution_count": 92, "id": "aa438234", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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jtxut/k5duxYXTcLAADAVO8jUI899pgef/xx3X///ZKkzp076+jRo0pLS9PYsWPldDolXRhBatu2rfm9oqIic1TK6XSqoqJCxcXFHqNQRUVF6t27t1lz4sSJGus/efJkjdGti+x2u+x2e63zAAAA6qreR6DOnj2rFi08F+vj42M+xiAmJkZOp1OZmZnm/IqKCmVlZZnhKD4+Xn5+fh41BQUF2r9/v1mTkJAgt9utXbt2mTU7d+6U2+02awAAABpCvY9AjRgxQk8//bTatWunW265RXv37tXixYv10EMPSbpw2i01NVXz589XbGysYmNjNX/+fAUGBio5OVmS5HA4NH78eM2YMUPh4eEKCwvTzJkz1blzZw0cOFCS1LFjRw0dOlQTJkzQihUrJEkTJ05UYmJine7AAwAA+L7qPUAtXbpUTz75pCZPnqyioiK5XC5NmjRJv/71r82aWbNmqaysTJMnT1ZxcbF69uypjRs3Kjg42KxZsmSJfH19NXLkSJWVlWnAgAFavXq1fHx8zJq1a9dq2rRp5t16SUlJWrZsWX1vEgAAgId6fw5Uc8JzoAAAaH6uyudAAQAAXO0IUAAAABYRoAAAACwiQAEAAFhEgAIAALCIAAUAAGARAQoAAMAiAhQAAIBFBCgAAACLCFAAAAAWEaAAAAAsIkABAABYRIACAACwiAAFAABgEQEKAADAIgIUAACARQQoAAAAiwhQAAAAFhGgAAAALCJAAQAAWESAAgAAsIgABQAAYBEBCgAAwCICFAAAgEUEKAAAAIsIUAAAABYRoAAAACwiQAEAAFhEgAIAALCIAAUAAGARAQoAAMAiAhQAAIBFBCgAAACLCFAAAAAWEaAAAAAsIkABAABYRIACAACwiAAFAABgEQEKAADAIgIUAACARQQoAAAAiwhQAAAAFjVIgPryyy/14IMPKjw8XIGBgeratatycnLM+YZhaO7cuXK5XAoICFC/fv104MABj2WUl5dr6tSpioiIUFBQkJKSkvTFF1941BQXFyslJUUOh0MOh0MpKSk6depUQ2wSAACAqd4DVHFxse644w75+fnp73//uw4ePKjnnntOrVu3NmsWLlyoxYsXa9myZdq9e7ecTqcGDRqk06dPmzWpqalat26d0tPTtW3bNpWWlioxMVFVVVVmTXJysnJzc5WRkaGMjAzl5uYqJSWlvjcJ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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist( peaks_closest_upstream_nodir['distance'], np.arange(0, 1e4, 100), alpha=0.5, label=\"upstream\");\n", "plt.hist( peaks_closest_downstream_nodir['distance'], np.arange(0, 1e4, 100), alpha=0.5, label=\"downstream\");\n", "plt.xlim( [0, 1e4] )\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "4f130a50", "metadata": {}, "source": [ "## Ignore upstream/downstream peaks from genes (strand-aware version)\n", "\n", "More biologically relevant approach will be to **define upstream/downstream by strand of the gene**.\n", "CTCF upstream of transcription start site might play different role than CTCF after transcription end site. \n", "\n", "`bioframe.closest` has the parameter `direction_col` to control for that: \n", "\n", "![Closests with smart ignoring](https://raw.githubusercontent.com/open2c/bioframe/main/docs/figs/closest1.png)\n" ] }, { "cell_type": "code", "execution_count": 90, "id": "b47d83fa", "metadata": {}, "outputs": [], "source": [ "# Note that \"strand\" here is the column name in genes table:\n", "peaks_closest_upstream_dir = bioframe.closest(genes, ctcf_peaks, \n", " ignore_overlaps=False,\n", " ignore_upstream=False,\n", " ignore_downstream=True,\n", " direction_col='strand')\n", "\n", "peaks_closest_downstream_dir = bioframe.closest(genes, ctcf_peaks, \n", " ignore_overlaps=False,\n", " ignore_upstream=True,\n", " ignore_downstream=False,\n", " direction_col='strand')" ] }, { "cell_type": "code", "execution_count": 96, "id": "f18e706a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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7e2t9957Ty1btlTfvn01cuRIjRgxQvPmzbM6JAAAPOqRRx7Rr371K3388ce65557dPfdd2vv3r2SpOeee05r167V3//+d33++edatWqVGZR27NghSVq+fLmKi4vN95L05Zdf6u9//7veeOMNcxJj2LBhKikp0bp165SXl6cePXpowIAB+v777yWdnfQYOnSoNmzYoF27dmnw4MEaPny4ioqK3Pq7YMEC9e3bV7t27dKwYcOUkpKiMWPG6J577tHOnTt13XXXacyYMTIMo4H33KXD8jVQ8fHxlnbg119/XautZcuWWrRo0QUfeBkSEqJVq1ZdcNsdOnTQu+++W+++/JD/+9eXahnYynzf3M6HAwAuLXfeead++9vfSpL+9Kc/KSsrS4sWLdLzzz+voqIiRUVFqV+/fvLy8lLHjh3N9dq2bStJatOmjRwOh9s2q6qqtHLlSrPmX//6lz799FOVlpaa1/fOmzdPb731lv7xj39o4sSJuvHGG3XjjTea2/jzn/+sNWvWaO3atZoyZYrZPnToUE2aNEmS9Oijj2rJkiW66aabdOedd0qSZs2apbi4OB0+fLhWv65UzfshCwAAXILi4uJqvT83AzVu3Djl5+erU6dOSk1N1fr16+u1zY4dO5rhSTp75/vx48cVGhqqVq1ama/CwkJ99dVXks7+esjMmTPVpUsXtWnTRq1atdJnn31Wawaqa9eu5n+fuxErJiamVltpaWl9d8Fljx8TBgDAghYtWtQ6E1Ofi7rPPWKnR48eKiws1Pvvv68NGzZo5MiRGjhwoP7xj39ccP3AwEC392fOnFG7du20cePGWrXnfjf23E1c8+bN03XXXSd/f3/9+te/VlVVlVu9r69vrX7W1XbmzJkfHeeVggAFAIAFbdu2dbsDvLy8XIWFhW41ubm5GjNmjNv7c9cOS1Lr1q01atQojRo1Sr/+9a81ZMgQff/99woJCZGvr69qamp+tB89evRQSUmJfHx8zGuozrd582aNGzdOv/zlLyWdvSaqrktrYB0BCgAAC2699VatWLFCw4cPV3BwsB555BG3m6Ak6fXXX1fPnj3Vr18/rV69Wtu3b9fLL78s6ewF2+3atVO3bt3UokULvf7663I4HOas0TXXXKMPPvhAffv2lc1mq/XLHecMHDhQcXFxGjFihJ566il16tRJ33zzjdatW6cRI0aoZ8+euu666/Tmm29q+PDh8vLy0iOPPMIskodwDRQAABbMnj1bN998sxITEzV06FCNGDFC//M//+NW89hjjykjI0Ndu3bVK6+8otWrV6tLly6SpFatWumpp55Sz549ddNNN+nrr7/WunXrzN9+e/bZZ5WVlaX27du7zVqdz8vLS+vWrdPNN9+se++9Vz/72c9011136euvvzavWVqwYIGCg4PVp08fDR8+XIMHD1aPHj0aaM9cWbyMK/iexPLyctntds1dk8ddeADQyE6dOqXCwkJFRkaqZcuWTd0dj+FJ4p5xob+Pc9/fLperyZ79yAwUAACARQQoAAAAi7iIHAAAD7qCr4y5ojADBQAAYBEBCgAAwCICFAAAgEUEKAAAAIsIUAAAABYRoAAAACwiQAEA4AHx8fFKS0tr6m6gkfAcKABA8/JheuN+3i2zG/fzGtnXX3+tyMhI7dq1S926dWvq7lw2mIECAACqqqpq6i5cUghQAABYdOLECY0ZM0atWrVSu3bt9Oyzz7otLysr05gxYxQcHKyAgADddttt+uKLLySdfVJ527Zt9cYbb5j13bp1U3h4uPk+JydHvr6+On78uKSzP1D80ksv6Ze//KUCAgIUFRWltWvXun3e6NGj1bZtW/n7+ysqKkrLly+XJEVGRkqSunfvLi8vL8XHx0uSxo0bpxEjRig9PV1Op1M/+9nPJEmHDh3SqFGjFBwcrNDQUN1+++36+uuvzc/asWOHBg0apLCwMNntdvXv3187d+50G7+Xl5eWLl2qxMREBQQEqHPnzsrJydGXX36p+Ph4BQYGKi4uTl999dXFHIYmRYACAMCiBx98UB9++KHWrFmj9evXa+PGjcrLyzOXjxs3Th999JHWrl2rnJwcGYahoUOHqrq6Wl5eXrr55pu1ceNGSWfDz549e1RdXa09e/ZIkjZu3KjY2Fi1atXK3OZjjz2mkSNH6pNPPtHQoUM1evRoff/995KkRx55RHv27NH777+vvXv3asmSJQoLC5Mkbd++XZK0YcMGFRcX68033zS3+cEHH2jv3r3KysrSu+++q5MnT+qWW25Rq1attGnTJm3ZskWtWrXSkCFDzBmqY8eOaezYsdq8ebNyc3MVFRWloUOH6tixY2776E9/+pPGjBmj/Px8XX/99UpOTtakSZM0e/ZsffTRR5KkKVOmePKwNCqugQIAwILjx4/r5Zdf1l//+lcNGjRIkvTKK6/o6quvliR98cUXWrt2rf7973+rT58+kqTVq1erffv2euutt3TnnXcqPj5ey5YtkyRt2rRJN954ozp06KCNGzeqS5cu2rhxozlTdM64ceN09913S5Lmzp2rRYsWafv27RoyZIiKiorUvXt39ezZU5J0zTXXmOu1bdtWkhQaGiqHw+G2zcDAQL300kvy8/OTJP3lL39RixYt9NJLL8nLy0uStHz5crVp00YbN25UQkKCbr31VrdtLF26VMHBwcrOzlZiYqLZ/pvf/EYjR46UJM2aNUtxcXF65JFHNHjwYEnSAw88oN/85jdWd3+zwQwUAAAWfPXVV6qqqlJcXJzZFhISok6dOkmS9u7dKx8fH/Xq1ctcHhoaqk6dOmnv3r2Szt6xt3v3bn377bfKzs5WfHy84uPjlZ2drdOnT2vr1q3q37+/2+d27drV/O/AwEAFBQWptLRUkvS73/1OGRkZ6tatm2bOnKmtW7fWaywxMTFmeJKkvLw8ffnllwoKClKrVq3UqlUrhYSE6NSpU+bpttLSUt1333362c9+JrvdLrvdruPHj6uoqOgH+xsREWF+3n+3nTp1SuXl5fXqa3PDDBQAABYYhvGTlhuGYc7qREdHKzQ0VNnZ2crOztbjjz+u9u3b64knntCOHTtUUVGhfv36ua3v6+vr9t7Ly0tnzpyRJN12223av3+/3nvvPW3YsEEDBgzQ/fffr3nz5l2wr4GBgW7vz5w5o9jYWK1evbpW7bmZrHHjxunIkSNauHChOnbsKJvNpri4uFoXof93f8+Nu662c2O41DADBQCABdddd518fX2Vm5trtpWVlWnfvn2SpC5duuj06dPatm2bufy7777Tvn371LlzZ0kyr4N6++23VVBQoF/84heKiYlRdXW1XnjhBfXo0UNBQUGW+tW2bVuNGzdOq1at0sKFC81ThOdmmGpqan50Gz169NAXX3yh8PBwXXfddW4vu90uSdq8ebNSU1M1dOhQ3XDDDbLZbPr2228t9fVyQIACAMCCVq1aafz48XrwwQf1wQcfqKCgQOPGjVOLFme/UqOionT77bdrwoQJ2rJliz7++GPdc889uuqqq3T77beb24mPj9err76qrl27qnXr1maoWr16da3rn37Mo48+qrfffltffvmldu/erXfffdcMa+Hh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0kUpKSl65pln9P3332vGjBmaMGECwQgAADQoywHqo48+0i233GK+nzZtmiRp7NixWrFihWbOnKmKigpNnjxZZWVl6tWrl9avX6+goCBznQULFsjHx0cjR45URUWFBgwYoBUrVsjb29usWb16tVJTU8279ZKSktyePeXt7a333ntPkydPVt++feXv76/k5GTNmzfP+l4AAACwwMswDKOpO9FUysvLZbfblbVoigL9bWZ73HhCGAAAzdW572+Xy9VkZ534LTwAAACLCFAAAAAWEaAAAAAsIkABAABYRIACAACwiAAFAABgEQEKAADAIgIUAACARQQoAAAAiwhQAAAAFhGgAAAALCJAAQAAWESAAgAAsIgABQAAYBEBCgAAwCICFAAAgEUEKAAAAIsIUAAAABYRoAAAACwiQAEAAFhEgAIAALCIAAUAAGARAQoAAMAiAhQAAIBFBCgAAACLCFAAAAAWEaAAAAAsIkABAABYRIACAACwiAAFAABgEQEKAADAIgIUAACARQQoAAAAiwhQAAAAFhGgAAAALCJAAQAAWESAAgAAsIgABQAAYBEBCgAAwCICFAAAgEUEKAAAAIs8HqBOnz6tP/zhD4qMjJS/v7+uvfZaPf744zpz5oxZYxiG5syZI6fTKX9/f8XHx2v37t1u26msrNTUqVMVFhamwMBAJSUl6eDBg241ZWVlSklJkd1ul91uV0pKio4ePerpIQEAALjxeIB66qmn9MILL2jx4sXau3evnn76aT3zzDNatGiRWfP0009r/vz5Wrx4sXbs2CGHw6FBgwbp2LFjZk1aWprWrFmjjIwMbdmyRcePH1diYqJqamrMmuTkZOXn5yszM1OZmZnKz89XSkqKp4cEAADgxsswDMOTG0xMTFRERIRefvlls+1Xv/qVAgICtHLlShmGIafTqbS0NM2aNUvS2dmmiIgIPfXUU5o0aZJcLpfatm2rlStXatSoUZKkb775Ru3bt9e6des0ePBg7d27V126dFFubq569eolScrNzVVcXJw+++wzderU6Uf7Wl5eLrvdrqxFUxTobzPb48bP8+QuAQAAHnTu+9vlcql169ZN0gePz0D169dPH3zwgfbt2ydJ+vjjj7VlyxYNHTpUklRYWKiSkhIlJCSY69hsNvXv319bt26VJOXl5am6utqtxul0Kjo62qzJycmR3W43w5Mk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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist( peaks_closest_upstream_dir['distance'], np.arange(0, 1e4, 100), alpha=0.5, label=\"upstream\");\n", "plt.hist( peaks_closest_downstream_dir['distance'], np.arange(0, 1e4, 100), alpha=0.5, label=\"downstream\");\n", "plt.xlim( [0, 1e4] )\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "65b4a264", "metadata": {}, "source": [ "CTCF peaks upstream of the genes are more enriched at short distances to TSS, if we take the strand into account." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.4" } }, "nbformat": 4, "nbformat_minor": 5 } bioframe-0.4.1/docs/tutorials/tutorial_assign_motifs_to_peaks.ipynb0000644000175000017500000102443014420777331025340 0ustar nileshnilesh{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# How to: assign TF Motifs to ChIP-seq peaks\n", "\n", "This tutorial demonstrates one way to assign CTCF motifs to CTCF ChIP-seq peaks using bioframe.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import bioframe\n", "import numpy as np\n", "import pandas as pd \n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "base_dir = '/tmp/bioframe_tutorial_data/'\n", "assembly = 'GRCh38'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load CTCF ChIP-seq peaks for HFF from ENCODE\n", "\n", "This approach makes use of the `narrowPeak` schema for bioframe.read_table . " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendnamescorestrandfc-log10p-log10qrelSummit
0chr194830954148309911.1000.5.04924-1.00.00438185
1chr4130563716130564086.993.5.05052-1.00.00432185
2chr1200622507200622877.591.5.05489-1.00.00400185
3chr5112848447112848817.869.5.05841-1.00.00441185
4chr1145960616145960986.575.5.05955-1.00.00439185
\n", "
" ], "text/plain": [ " chrom start end name score strand fc -log10p -log10q \\\n", "0 chr19 48309541 48309911 . 1000 . 5.04924 -1.0 0.00438 \n", "1 chr4 130563716 130564086 . 993 . 5.05052 -1.0 0.00432 \n", "2 chr1 200622507 200622877 . 591 . 5.05489 -1.0 0.00400 \n", "3 chr5 112848447 112848817 . 869 . 5.05841 -1.0 0.00441 \n", "4 chr1 145960616 145960986 . 575 . 5.05955 -1.0 0.00439 \n", "\n", " relSummit \n", "0 185 \n", "1 185 \n", "2 185 \n", "3 185 \n", "4 185 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ctcf_peaks = bioframe.read_table(\"https://www.encodeproject.org/files/ENCFF401MQL/@@download/ENCFF401MQL.bed.gz\", schema='narrowPeak')\n", "ctcf_peaks[0:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get CTCF motifs from JASPAR" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendnamescorepvalstrand
0chr11116311182CTCF811406-
1chr11122211241CTCF959804-
2chr11128011299CTCF939728-
3chr11133911358CTCF837455-
\n", "
" ], "text/plain": [ " chrom start end name score pval strand\n", "0 chr1 11163 11182 CTCF 811 406 -\n", "1 chr1 11222 11241 CTCF 959 804 -\n", "2 chr1 11280 11299 CTCF 939 728 -\n", "3 chr1 11339 11358 CTCF 837 455 -" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "### CTCF motif: http://jaspar.genereg.net/matrix/MA0139.1/\n", "jaspar_url = 'http://expdata.cmmt.ubc.ca/JASPAR/downloads/UCSC_tracks/2022/hg38/'\n", "jaspar_motif_file = 'MA0139.1.tsv.gz'\n", "ctcf_motifs = bioframe.read_table(jaspar_url+jaspar_motif_file,schema='jaspar',skiprows=1) \n", "ctcf_motifs[0:4]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overlap peaks & motifs" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df_peaks_motifs = bioframe.overlap(ctcf_peaks,ctcf_motifs, suffixes=('_1','_2'), return_index=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are often multiple motifs overlapping one ChIP-seq peak, and a substantial number of peaks without motifs:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fraction of peaks without motifs 0.14\n" ] }, { "data": { "image/png": "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DBjgdAHdunW765ANI0aM0IgRI5xu+06Sk5OVnJysvLw8l7YLAABKD5txcmCoa9euycfH55bLzp49W+aGX8jJyVFgYKAuXLiggIAAl7Zd0mcf4Hqc0QGA0qmwf7+d7oz8u9/9Tvn5+QXm/+c//1G3bt2cbQ4AAMBtnA46p0+f1tChQx3mnTlzRt26dVOzZs1cVhgAAEBxOR10UlNTtXPnTvvdVqdOnVLXrl3VqlUrvffeey4v0F14jg4AANbndGfkGjVqaMOGDercubMkaf369WrXrp1WrFihChVK9dBZDhITE5WYmGi/xgcAAKynSGNd1atXT2lpaercubN69Oihv//97wWGaQAAAPC0QgWd6tWr3zLIXLp0SWvXrrXfYi5J586dc111AAAAxVCooLNgwQI3lwEAAOB6hQo6Q4YMcXcdJY4HBgIAYH3F6j18+fJl5eTkOLzKCgb1BADA+pwOOhcvXtTIkSNVq1YtVa1aVdWrV3d4AQAAlBZOB50JEybo448/1qJFi+Tr66ulS5dq+vTpCgkJ0ZtvvumOGgEAAIrE6dvL165dqzfffFPdunXTk08+qS5duqhRo0YKDw/XihUrNGjQIHfUCQAA4DSnz+icO3dODRo0kCQFBATYbyfv3Lmztm3b5trqAAAAisHpoNOwYUMdP35ckhQREWEf9mHt2rWqVq2aK2tzK4aAAADA+pwOOv/93/+tL7/8UpI0efJke1+dcePGafz48S4v0F246woAAOtzuo/OzcE8Jal79+765ptvlJ6erl/96leKjIx0aXEAAADFUaSxrm66cuWKwsLCFBYW5qp6AAAAXMbpS1d5eXl68cUXVbduXVWtWlXffvutJOn555/X66+/7vICAQAAisrpoPPSSy9p+fLlmjt3rnx8fOzzW7VqpaVLl7q0OAAAgOJwOui8+eabSklJ0aBBg+Tl5WWf37p1a33zzTcuLQ4AAKA4nA46p06dUqNGjQrMz8/P1/Xr111SVEng9nIAAKzP6aDTokULbd++vcD8999/X23btnVJUSWB28sBALA+p++6mjp1qhISEnTq1Cnl5+dr9erVOnTokN58802tW7fOHTUCAAAUidNndPr06aOVK1cqNTVVNptNL7zwgg4ePKi1a9eqR48e7qgRAACgSIr0HJ1evXqpV69erq4FAADApYr8wMD09HQdPHhQNptN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crLy8vJc2i4AACg9SnUfHXeijw4AANZXboMOAACwPoIOAACwLI/30fEU+ugAUv1J60t0e8fn9C7R7QFAuT2jQx8dAACsr9wGHQAAYH0EHQAAYFkEHQAAYFnlNugwqCcAANZXboMOnZEBALC+cht0AACA9RF0AACAZRF0AACAZRF0AACAZTEEBENAAJbGMBdA+VZuz+hw1xUAANZXboMOAACwPoIOAACwLIIOAACwLIIOAACwLIIOAACwLG4v5/ZyoMSU9K3eAFBuz+hwezkAANZXboMOAACwPoIOAACwLIIOAACwLIIOAACwLIIOAACwLIIOAACwLIIOAACwLIIOAACwLJ6MzJORAQA/U9JP8D4+p3eJbq+8KbdndHgyMgAA1ldugw4AALA+gg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsBvVkUE8AZRgDUAJ3Vm7P6DCoJwAA1ldugw4AALA+gg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsSwSddevWqWnTpmrcuLGWLl3q6XIAAEAp4e3pAorrxo0bSkpK0ubNmxUQEKB27dqpX79+CgoK8nRpAADAw8r8GZ2dO3eqRYsWqlu3rvz9/fXggw9qw4YNni4LAACUAh4POtu2bVOfPn0UEhIim82mNWvWFFhn0aJFatCggfz8/BQVFaXt27fbl33//feqW7eufbpevXo6depUSZQOAABKOY8HnYsXLyoyMlILFy685fKVK1dq7NixmjJlivbs2aMuXbooPj5eJ06ckCQZYwq8x2az3XZ7V69eVU5OjsMLAABYk8f76MTHxys+Pv62y+fPn6+hQ4dq2LBhkqQFCxZow4YNWrx4sWbPnq26des6nME5efKkOnTocNv2Zs+erenTp7tuBwDgZ+pPWu/pEtzK6vvnCVb/TI/P6e3R7Xv8jM6dXLt2TRkZGerZs6fD/J49e2rHjh2SpPbt2+vrr7/WqVOn9OOPPyo1NVW9evW6bZuTJ0/WhQsX7K/MzEy37gMAAPAcj5/RuZOzZ88qLy9PwcHBDvODg4N15swZSZK3t7fmzZun7t27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FAAAQMmjjw4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg5QDN26ddPYsWM9XYadMUZPP/20goKCZLPZtHfvXk+X5GD58uWqVq1aiW/3+PHjpfLzKK5ffv8uXbqk3/72twoICJDNZtP58+c9VltpUr9+fS1YsMDTZcBDGOsKsJAPP/xQy5cv15YtW9SwYUPVrFnT0yWVCqGhoTp9+nSZ/Ty2bNmi7t2764cffnAIiqtXr1bFihXt02+88Ya2b9+uHTt2qGbNmgoMDPRAtUDpQtABSpm8vDzZbLYCI3AXxtGjR1WnTp1SOWr19evXPbZtLy8v1a5d22Pbd5egoCCH6aNHj6p58+albgDa69evOwQyoCRx6QplXrdu3TR69GhNmDBBQUFBql27tqZNm2ZffqvLFufPn5fNZrOPnLtlyxbZbDZt2LBBbdu2VaVKlXTfffcpKytL//rXv9S8eXMFBARowIABunTpksP2b9y4oZEjR6patWqqUaOGnnvuOf18CLlr165pwoQJqlu3rqpUqaIOHTo4jNh783LOunXrFBERIV9fX3333Xe33NetW7eqffv28vX1VZ06dTRp0iTduHFDkvTEE09o1KhROnHihGw2m+rXr3/bz2zVqlVq0aKFfH19Vb9+fc2bN8++bPLkyerYsWOB97Ru3VpTp061Ty9btkzNmzeXn5+fmjVrpkWLFhX4zN977z1169ZNfn5+euuttwq0efToUf3mN79RcHCwqlatqpiYGG3atMlhnfr16+vFF1/UwIEDVbVqVYWEhOjVV191WMdms2nx4sWKj49XpUqV1KBBA73//vsF6rn5Hbh5vD/66CNFR0ercuXKiouL06FDhxzanTlzpmrVqiV/f38NGzZMkyZNUps2bW77uRb1e3T16lWNHj1atWrVkp+fnzp37qxdu3bZa+/evbskqXr16rLZbHriiSckOV666tatm+bNm6dt27bJZrOpW7dukqRFixapcePG8vPzU3BwsB555JHb1n/zu7hmzRo1adJEfn5+6tGjhzIzMx3WW7t2raKiouTn56eGDRtq+vTp9u/hzeOxZMkS/eY3v1GVKlU0c+bMW26vMMf2woULevrpp1WrVi0FBATovvvu05dffmlfXpjv0C8tW7ZMgYGBSktLu+N6sIgSGToUcKOu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h2vo0KFOh7Z27drpvffe07vvvquWLVvqhRde0IwZM+y3LN/06KOPKjs7W5cuXdJDDz3ksGzYsGFaunSpli9frlatWqlr165avny5GjRo4FQtL7/8sqpXr664uDj16dNHvXr1Urt27Qqs98wzzygjI0Nt27bViy++qHnz5qlXr14O60yfPl3vvvuuWrdurTfeeEMrVqxQRESEU/X83KBBgzR58mQ9++yzateunY4dO6YnnnjC4fKMq8yZM0e//e1vlZCQoHbt2unIkSPasGGDqlevLumnYz99+nRNmjRJwcHBGjlyZKHarVatmlavXq377rtPzZs315IlS/TOO++oRYsWt31P5cqVNXHiRA0cOFCxsbGqVKmS3n33XfvyXr16ad26dUpLS1NMTIw6duyo+fPnKzw8vEj7fqdja7PZlJqaqnvvvVdPPvmkmjRposcee0zHjx+3n2Es7Hfopk6dOmn9+vV6/vnn9corrxSpZpQtNlPYi84A4AH169fX2LFj7zjUhs1m0wcffFAgkLlajx49VLt2bf39739363Y8Zfny5Ro7dmyJDR1RmGMLFBeXrgDgFi5duqQlS5bY+3S888472rRpEw+ZA8oYgg4A3MLNyyYzZ87U1atX1bRpU61atUr333+/p0sD4AQuXQEAAMuiMzIAALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALAsgg4AALCs/wM2yc43oc2ldQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# note that counting motifs per peak can also be handled directly with bioframe.count_overlaps\n", "# but since we re-use df_peaks_motifs below we instead use the pandas operations directly\n", "motifs_per_peak = df_peaks_motifs.groupby([\"index_1\"])[\"index_2\"].count().values\n", "\n", "plt.hist(motifs_per_peak,np.arange(0,np.max(motifs_per_peak)))\n", "plt.xlabel('number of overlapping motifs per peak')\n", "plt.ylabel('number of peaks')\n", "plt.semilogy();\n", "\n", "print(f'fraction of peaks without motifs {np.round(np.sum(motifs_per_peak==0)/len(motifs_per_peak),2)}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Assign the strongest motif to each peak" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# since idxmax does not currently take NA, fill with -1\n", "df_peaks_motifs['pval_2'] = df_peaks_motifs['pval_2'].fillna(-1) \n", "idxmax_peaks_motifs = df_peaks_motifs.groupby([\"chrom_1\", \"start_1\",\"end_1\"])[\"pval_2\"].idxmax().values\n", "df_peaks_maxmotif = df_peaks_motifs.loc[idxmax_peaks_motifs]\n", "df_peaks_maxmotif['pval_2'].replace(-1,np.nan,inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "stronger peaks tend to have stronger motifs:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.rcParams['font.size']=12\n", "df_peaks_maxmotif['fc_1'] = df_peaks_maxmotif['fc_1'].values.astype('float')\n", "plt.scatter(df_peaks_maxmotif['fc_1'].values, \n", " df_peaks_maxmotif['pval_2'].values, 5, alpha=0.5,lw=0)\n", "plt.xlabel('ENCODE CTCF peak strength, fc')\n", "plt.ylabel('JASPAR CTCF motif strength \\n (-log10 pval *100)')\n", "plt.title('corr: '+str(np.round(df_peaks_maxmotif['fc_1'].corr(df_peaks_maxmotif['pval_2']),2)));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also ask the reverse question: how many motifs overlap a ChIP-seq peak?" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "df_motifs_peaks = bioframe.overlap(ctcf_motifs,ctcf_peaks,how='left', suffixes=('_1','_2'))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "m = df_motifs_peaks.sort_values('pval_1')\n", "plt.plot( m['pval_1'].values[::-1] ,\n", " np.cumsum(pd.isnull(m['chrom_2'].values[::-1])==0)/np.arange(1,len(m)+1))\n", "plt.xlabel('pval')\n", "plt.ylabel('probability motif overlaps a peak');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### filter peaks overlapping blacklisted regions\n", "\n", "do any of our peaks overlap blacklisted genomic regions?" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartend
0chr1628903635104
1chr158500875850571
2chr189096108910014
\n", "
" ], "text/plain": [ " chrom start end\n", "0 chr1 628903 635104\n", "1 chr1 5850087 5850571\n", "2 chr1 8909610 8910014" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "blacklist = bioframe.read_table('https://www.encodeproject.org/files/ENCFF356LFX/@@download/ENCFF356LFX.bed.gz',\n", " schema='bed3')\n", "blacklist[0:3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "there appears to be a small spike in the number of peaks close to blacklist regions" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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AgBkJ0AAgOwECACQnQABALITIABAdgIEAMhOgAAA2QkQACA7AQIAZCdAAIDsBAgAkJ0AAQCyEyAAQHYCBADIToAAANkJEAAgOwECAGQnQACA7AQIAJCdAAEAshMgAEB2AgQAyE6AAADZCRAAIDsBAgBkJ0AAgOwECACQXVEB8rOf/SzOOOOMGDlyZPTp0yeGDBkSJ510UqxZs6ar5gcAlKHKYgbv3r07RowYEV/60pfi6KOPjr1798batWvjK1/5Smzbti2uvfbarponAFBGigqQqVOnxtSpU1ttmz17drzyyiuxatUqAQIAHJCSvAdk2LBhUVlZVMsAAD1Yh6qhubk5mpub4+23345169bFww8/HP/4j/+43/FNTU3R1NTUcr6hoaEjuwUAykSHAuTSSy+N7373uxER0bt37/iHf/iHuPjii/c7ftmyZVFbW9uxGfYQxy5a32bbtuVndMNMSq+7j+1A9p9zjge6r4+OK5fHQ3t60rF+VO5/HwfbWnfl8bd32121L4rXoZdgrr766vjJT34S69evjwsuuCAuu+yy+Na3vrXf8TU1NVFfX99yqqur6/CEAYBDX4eeARk5cmSMHDkyIiJmzZoVEb+KjHPPPTeGDx/eZnyhUIhCodCJaQIA5aQkb0KdPHlyfPDBB/Hyyy+X4uYAgDJXkgDZsmVL9OrVK37nd36nFDcHAJS5ol6Cueiii2LAgAExefLkOPLII2Pnzp2xbt26uOeee+KKK65o9+UXAICPKipATjrppPjnf/7n+P73vx+7d++O/v37x6c//em444474k//9E+7ao4AQJkpKkDOP//8OP/887tqLgBAD+HbcAGA7AQIAJCdAAEAshMgAEB2AgQAyE6AAADZCRAAIDsBAgBkJ0AAgOwECACQnQABALITIABAdgIEAMhOgAAA2QkQACA7AQIAZCdAAIDsBAgAkJ0AAQCyEyAAQHYCBADIToAAANkJEAAgOwECAGQnQACA7AQIAJCdAAEAshMgAEB2AgQAyE6AAADZCRAAIDsBAgBkJ0AAgOwECACQnQABALITIABAdgIEAMiuqADZvHlzXHDBBTFmzJjo169fHH300TF37tz46U9/2lXzAwDKUFEBcsstt8S2bdvi8ssvjw0bNsRNN90UO3bsiClTpsTmzZu7ao4AQJmpLGbwt7/97TjiiCNabTvttNPi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PvromDt3bvz0pz9tM/bpp5+OU089Nfr37x+DBg2Kz3/+8/Hyyy+3e7s333xzjBkzJgqFQnzyk5+M2traeP/999uM27FjR5x33nkxbNiw6Nu3b5x00kmxadOmkh/nwerWW2+NioqK6N+/f5vLrHfnPf744zFr1qwYPHhw9OnTJ0aNGhXXX399qzHWufOeeeaZOPPMM6O6ujr69u0bY8aMieuuuy7eeaf1x4Nb6+Ls2bMnrrzyypgxY0YMHz48KioqYsmSJe2O7e61ffTRR+Okk06Kvn37xrBhw+K8886LHTt2FHfAnf4s1YPE9OnT06BBg9J3vvOdtHnz5nThhRemiEhr167t7qkdVP74j/84TZs2La1cuTJt3bo1rVu3Lk2ZMiVVVlamTZs2tYx74YUX0uGHH55+//d/P61fvz7dd999ady4cam6ujrt2LGj1W3ecMMNqaKiItXU1KQtW7akv/3bv029e/dOX/va11qN27dvXxo/fnw65phj0po1a9IjjzyS5s6dmyorK9PWrVuzHH93eu2119LAgQNTdXV16tevX6vLrHfnrV27NvXq1Sudc8456T/+4z/S5s2b0z/90z+l2traljHWufOef/75VFVVlT796U+ne+65J23atCktXrw4HXbYYemP/uiPWsZZ6+K98soraeDAgenkk09u+R22ePHiNuO6e223bt2aKisr09y5c9MjjzyS1qxZk44++ug0fvz4tG/fvgM+3rIIkPXr16eISHfeeWer7dOnT0/V1dXpgw8+6KaZHXzeeOONNtv27NmTjjzyyHTKKae0bJs3b14aNmxYqq+vb9m2bdu29Fu/9VvpyiuvbNm2c+fOVFVVlS666KJWt7l06dJUUVGRnn/++ZZt3/72t1NEpP/6r/9q2fb++++nsWPHpsmTJ5fk+A5ms2fPTnPmzEnnnntumwCx3p3z2muvpX79+qX58+d/7Djr3HnXXHNNioj04osvttp+0UUXpYhIu3btSilZ645obm5Ozc3NKaWU3nzzzf0GSHev7YknnpjGjh2b3n///ZZtP/rRj1JEpJUrVx7w8ZZFgFx44YWpf//+rRYjpZTuvPPOFBHpRz/6UTfN7NAxbdq0NHr06JTSrx50ffr0SRdffHGbcTNmzEijRo1qOb9mzZoUEemJJ55oNe7DLyhcunRpy7ZTTz01nXDCCW1u88Ybb0wRkV577bVSHc5B54477kiHH354qquraxMg1rvzlixZkiIibdu2bb9jrHNpfLjWb775ZqvtV155ZerVq1dqbGy01iWwvwDp7rV97bXXUkSkZcuWtRk7evToNH369AM+xrJ4D8hzzz0Xn/rUp6KysvXnqk2cOLHlcvavvr4+nn766Rg3blxERLz00kvx7rvvtqzfr5s4cWK8+OKLsW/fvoj4v7WdMGFCq3G//du/HcOGDWu19s8999x+bzMi4vnnny/NAR1kduzYEQsXLozly5fHMccc0+Zy6915P/zhD2PIkCHxi1/8IiZNmhSVlZVxxBFHxCWXXNLy9eHWuTTOPffcGDRoUMyfPz9efvnl2LNnT/zgBz+I7373u7FgwYLo16+fte5C3b22H15nf2OL+X1bFgHy1ltvtftFeB9ua+8L9Pg/CxYsiL1798Y111wTEf+3Xvtb05RSvP322y1jC4VC9OvXr92xv772PfV+uvTSS+OEE06I+fPnt3u59e68119/Pd55552YN29enH322fHoo4/GFVdcEbfffnvMmjUrUkrWuUSOPfbYeOKJJ+K5556L4447LgYMGBBz5syJc889N2666aaI8JjuSt29tr9p/8XcB0V9FPvBrKKiokOX9XTf+MY3Yu3atXHzzTfHZz7zmVaXHeiaFrP2Pe1+uu++++KBBx6IZ5555jcen/XuuObm5ti3b18sXrw4Fi1aFBERU6dOjd69e8fChQtj06ZN0bdv34iwzp21bdu2mDNnThx55JFx7733xvDhw+PHP/5x3HDDDdHY2BirV69uGWutu053r+3+xhZzH5TFMyBDhw5tt7p27doVEe2XGhG1tbVxww03xNKlS+Oyyy5r2T506NCIaP//Jnbt2hUVFRUxaNCglrH79u1r8+d3H4799bXvafdTY2NjLFiwIL7+9a9HdXV17N69O3bv3h3vvfdeRETs3r079u7da71L4MM1nDlzZqvtp59+ekT86k8WrXNpLFq0KBoaGuLhhx+OL3zhC3HyySfHFVdcEX//938f3/ve9+Kxxx6z1l2ou9f2N+2/mPugLAJkwoQJ8cILL8QHH3zQavuzzz4bERHjx4/vjmkd1Gpra2PJkiWxZMmSuPrqq1tddtxxx0WfPn1a1u/XPfvss3H88cdHVVVVRPzfa4sfHfvLX/4ydu7c2WrtJ0yYsN/bjCi/+2nnzp3xxhtvxIoVK2Lw4MEtp7vuuiv27t0bgwcPjj/5kz+x3iXQ3uvRERHp/3/TRK9evaxzifzsZz+LsWPHtnla/8QTT4yIaHlpxlp3je5e2w//u7+xRd0HB/x21YPYhg0bUkSku+++u9X20047zZ/htuO6665LEZGuvfba/Y754he/mI444ojU0NDQsu3VV19NvXv3TldddVXLtrfeeitVVVWlSy65pNX1ly1b1ubPvFauXJkiIj355JMt295///00bty49NnPfrYUh3ZQeffdd9OWLVvanGbOnJmqqqrSli1b0rPPPptSst6d9fDDD7d5V39KKf3d3/1dioj0n//5nykl61wK06ZNS8OHD0979uxptX3VqlUpItL999+fUrLWnfVxf4bb3Ws7efLkNH78+Fa/W5944okUEemWW2454GMsiwBJ6Vef+TF48OC0atWqtHnz5vS1r30tRURas2ZNd0/toPKtb30rRUQ67bTT0hNPPNHm9KEXXngh9e/fP5188slpw4YN6V//9V/T+PHjP/aDbq6++uq0devW9M1vfjMVCoV2P+hm3LhxacSIEWnt2rVp48aN6ayzziqbDxE6UO19Doj17rw5c+akQqGQrr/++rRx48a0bNmyVFVVlWbPnt0yxjp33r//+7+nioqKNGXKlJYPIlu6dGnq379/Gjt2bGpqakopWeuO2rBhQ1q3bl363ve+lyIizZs3L61bty6tW7cu7d27N6XU/Wu7ZcuWVFlZmc4666y0cePGtHbt2jRixIie+UFkKf3qw7T+/M//PB111FGpd+/eaeLEiemuu+7q7mkddP7gD/4gRcR+T7/uqaeeSqecckrq27dvGjBgQDrzzDPbfPjQh2666aY0evTo1Lt37zRy5Mi0ePHi9N5777UZ98tf/jJ99atfTUOGDElVVVVpypQpaePGjV1yrAer9gIkJevdWe+880666qqr0ogRI1JlZWUaOXJkqqmpafMD0Tp33ubNm9OMGTPSUUcdlfr06ZNGjx6d/uqv/irt3Lmz1ThrXbxPfOIT+/35/Morr7SM6+61feSRR9KUKVNSVVVVGjJkSPrqV7/a7gddfpyKlP7/i6QAAJmUxZtQAYBDiwABALITIABAdgIEAMhOgAAA2QkQACA7AQIAZCdAAIDsBAgAkJ0AAQCyEyAAQHYCBADI7v8B5af2nsavP4AAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "closest_to_blacklist = bioframe.closest(ctcf_peaks,blacklist)\n", "plt.hist(closest_to_blacklist['distance'].astype('Float64').astype('float'),np.arange(0,1e4,100));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "to be safe, let's remove anything +/- 1kb from a blacklisted region" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# first let's select the columns we want for our final dataframe of peaks with motifs\n", "df_peaks_maxmotif = df_peaks_maxmotif[\n", " ['chrom_1','start_1','end_1','fc_1',\n", " 'chrom_2','start_2','end_2','pval_2','strand_2']]\n", "# then rename columns for convenience when subtracting\n", "for i in df_peaks_maxmotif.keys():\n", " if '_1' in i: df_peaks_maxmotif.rename(columns={i:i.split('_')[0]},inplace=True)\n", "\n", "# now subtract, expanding the blacklist by 1kb \n", "df_peaks_maxmotif_clean = bioframe.subtract(df_peaks_maxmotif,bioframe.expand(blacklist,1000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "there it is! we now have a dataframe containing positions of CTCF ChIP peaks, \n", "including the strongest motif underlying that peak, and after conservative\n", "filtering for proximity to blacklisted regions" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendfcchrom_2start_2end_2pval_2strand_2
7chr91247774131247777835.06479chr9124777400124777419450.0+
8chr167701045677014155.06708None<NA><NA>NaNNone
9chr101198595861198599565.08015chr10119859591119859610611.0-
10chr366816327668166975.08233chr36681633266816351741.0-
11chr1650248791502491615.08249None<NA><NA>NaNNone
12chr1941431677414320475.11060chr194143180241431821477.0+
13chr41316448391316452095.11204None<NA><NA>NaNNone
14chr22032395192032398895.11817None<NA><NA>NaNNone
\n", "
" ], "text/plain": [ " chrom start end fc chrom_2 start_2 end_2 \\\n", "7 chr9 124777413 124777783 5.06479 chr9 124777400 124777419 \n", "8 chr1 67701045 67701415 5.06708 None \n", "9 chr10 119859586 119859956 5.08015 chr10 119859591 119859610 \n", "10 chr3 66816327 66816697 5.08233 chr3 66816332 66816351 \n", "11 chr16 50248791 50249161 5.08249 None \n", "12 chr19 41431677 41432047 5.11060 chr19 41431802 41431821 \n", "13 chr4 131644839 131645209 5.11204 None \n", "14 chr2 203239519 203239889 5.11817 None \n", "\n", " pval_2 strand_2 \n", "7 450.0 + \n", "8 NaN None \n", "9 611.0 - \n", "10 741.0 - \n", "11 NaN None \n", "12 477.0 + \n", "13 NaN None \n", "14 NaN None " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_peaks_maxmotif_clean.iloc[7:15]" ] } ], "metadata": { "jupytext": { "formats": "ipynb,md:myst" }, "kernelspec": { "display_name": "Python 3.10", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.4" } }, "nbformat": 4, "nbformat_minor": 4 } bioframe-0.4.1/docs/requirements_rtd.txt0000644000175000017500000000016314420777331017723 0ustar nileshnilesh# Pip's new dependency resolver is causing issues on RTD, so we downgrade pip pip<=21.1.1 -r ./requirements_doc.txtbioframe-0.4.1/docs/requirements_doc.txt0000644000175000017500000000006314420777331017676 0ustar nileshnileshautodocsumm myst_nb sphinx<4,>=2.1 sphinx_rtd_themebioframe-0.4.1/docs/make.bat0000644000175000017500000000143314420777331015174 0ustar nileshnilesh@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=. set BUILDDIR=_build if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% :end popd bioframe-0.4.1/docs/lowlevel/0000755000175000017500000000000014420777331015417 5ustar nileshnileshbioframe-0.4.1/docs/lowlevel/stringops.rst0000644000175000017500000000015414420777331020201 0ustar nileshnileshString operations ================= .. automodule:: bioframe.core.stringops :autosummary: :members: bioframe-0.4.1/docs/lowlevel/specs.rst0000644000175000017500000000044714420777331017273 0ustar nileshnileshSpecifications ================= .. automodule:: bioframe.core.specs :autosummary: :members: **Unexposed functions:** .. automethod:: bioframe.core.specs._verify_column_dtypes .. automethod:: bioframe.core.specs._verify_columns .. automethod:: bioframe.core.specs._get_default_colnamesbioframe-0.4.1/docs/lowlevel/arrops.rst0000644000175000017500000000027314420777331017461 0ustar nileshnileshArray operations ================= Low level operations that are used to implement the genomic interval operations. .. automodule:: bioframe.core.arrops :autosummary: :members: bioframe-0.4.1/docs/index.rst0000644000175000017500000000233014420777331015425 0ustar nileshnilesh.. bioframe documentation master file, created by sphinx-quickstart on Sat Apr 11 11:44:26 2020. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. bioframe ======== `Bioframe `_ is a library to enable flexible and scalable operations on genomic interval dataframes in python. Building bioframe directly on top of `pandas `_ enables immediate access to a rich set of dataframe operations. Working in python enables rapid visualization and iteration of genomic analyses. .. toctree:: :maxdepth: 1 :caption: Guide guide-quickstart guide-intervalops.md guide-io.ipynb guide-performance.ipynb guide-recipes.md guide-definitions guide-specifications .. toctree:: :maxdepth: 1 :caption: Tutorials tutorials/tutorial_assign_motifs_to_peaks.ipynb tutorials/tutorial_assign_peaks_to_genes.ipynb .. toctree:: :maxdepth: 3 :caption: API api-construction api-validation api-intervalops api-fileops api-resources api-extras api-vis api-lowlevel.md Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` bioframe-0.4.1/docs/guide-specifications.rst0000644000175000017500000000443114420777331020420 0ustar nileshnilesh.. _Specifications: Specifications =========== BedFrame (i.e. genomic intervals stored in a pandas dataframe): - In a BedFrame, three required columns specify the set of genomic intervals (default column names = (â€chrom’, â€start’, â€end’)). - Other reserved but not required column names: (â€strand’, â€name’, â€view_region’). - entries in column â€name’ are expected to be unique - â€view_region’ is expected to point to an associated region in a view with a matching name - â€strand’ is expected to be encoded with strings (â€+’, â€-’, â€.’). - Additional columns are allowed: â€zodiac_sign’, â€soundcloud’, â€twitter_name’, etc. - Repeated intervals are allowed. - The native pandas DataFrame index is not intended to be used as an immutable lookup table for genomic intervals in BedFrame. This is because many common genomic interval operations change the number of intervals stored in a BedFrame. - Two useful sorting schemes for BedFrames are: - scaffold-sorted: on (chrom, start, end), where chrom is sorted lexicographically. - view-sorted: on (view_region, start, end) where view_region is sorted by order in the view. - Null values are allowed, but only as pd.NA (using np.nan is discouraged as it results in unwanted type re-casting). - Note if no â€view_region’ is assigned to a genomic interval, then â€chrom’ implicitly defines an associated region - Note the BedFrame specification is a natural extension of the BED format ( ​​https://samtools.github.io/hts-specs/BEDv1.pdf ) for pandas DataFrames. ViewFrames (a genomic view stored in a pandas dataframe) - BedFrame where: - intervals are non-overlapping - “name” column is mandatory and contains a set of unique strings. - Note that a ViewFrame can potentially be indexed by the name column to serve as a lookup table. This functionality is currently not implemented, because within the current Pandas implementation indexing by a column removes the column from the table. - Note that views can be defined by: - dictionary of string:ints (start=0 assumed) or string:tuples (start,end) - pandas series of chromsizes (start=0, name=chrom) bioframe-0.4.1/docs/guide-recipes.md0000644000175000017500000000323014420777331016633 0ustar nileshnilesh--- jupytext: formats: md:myst text_representation: extension: .md format_name: myst format_version: 0.13 jupytext_version: 1.11.3 kernelspec: display_name: Python 3 language: python name: python3 --- # How do I ## Obtain overlapping intervals with matching strandedness? Use overlap with the ``on`` argument: ``` df = bf.overlap(df1, df2, on=[â€strand’]) ``` ## Obtain overlapping intervals with opposite strandedness? Overlap then filter pairs of opposite strandedness: ``` df = bf.overlap(df1, df2) df = df.loc[df["strand"]!=df["strand_"]] ``` ## Obtain intervals that exceed 50% coverage by another set of intervals? Coverage, then filter pairs by fractional coverage: ``` df = bf.coverage(df1, df2) df = df[ ( df["coverage"] / (df["end"]-df["start"]) ) >=0.50] ``` ## Shift all intervals on the positive strand by 10bp? Use pandas indexing: ``` df.loc[df.strand=="+",["start", "end"]] += 10 ``` ## Obtain intervals overlapped by at least 2 intervals from another set? Count overlaps, then filter: ``` df = bf.count_overlaps(df1, df2) df = df[ df["count"] >= 2] ``` ## Find strand-specific downstream genomic features? Use closest after filtering by strand, and passing the `ignore_upsream=True` argument. ``` bioframe.closest(df1.loc[df1['strand']=='+'], df2, ignore_upstream=True) ``` For gener, the upstream/downstream direction might be defined by the direction of transcription. Use `direction_col='strand'` to set up the direction: ``` bioframe.closest(df1, df2, ignore_upstream=True, direction_col='strand') ``` ## Drop non-autosomes from a bedframe? Use pandas DataFrame.isin(values): ``` df[ ~df.chrom.isin(['chrX','chrY'])] ``` bioframe-0.4.1/docs/guide-quickstart.rst0000644000175000017500000000144414420777331017610 0ustar nileshnileshQuickstart ========== Requirements ------------ The following are required before installing `bioframe `_ : - Python 3.7+ - :py:mod:`numpy` - :py:mod:`pandas 1.3+` Installation ------------ :: $ pip install bioframe To install the latest development version of `bioframe` from github, first make a local clone of the github repository: .. code-block:: bash $ git clone https://github.com/open2c/bioframe Then, compile and install `bioframe` in `development mode `_. This installs the package without moving it to a system folder, and thus allows for testing changes to the python code on the fly. .. code-block:: bash $ cd bioframe $ pip install -e ./ bioframe-0.4.1/docs/guide-performance.ipynb0000644000175000017500000071000614420777331020231 0ustar nileshnilesh{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook illustrates performance of typical use cases for bioframe on sets of randomly generated intervals." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import platform\n", "import psutil\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "plt.rcParams['figure.facecolor']='white'\n", "plt.rcParams['font.size']=16\n", "\n", "import bioframe\n", "import pyranges" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bioframe v.0.3.2\n", "PyRanges v.0.0.115\n", "System Platform: Linux-3.10.0-1160.45.1.el7.x86_64-x86_64-with-centos-7.7.1908-Core\n", "44 CPUs at 3192 GHz\n" ] } ], "source": [ "print(f\"Bioframe v.{bioframe.__version__}\")\n", "print(f\"PyRanges v.{pyranges.__version__}\")\n", "print(f\"System Platform: {platform.platform()}\")\n", "print(f\"{psutil.cpu_count()} CPUs at {psutil.cpu_freq().current:.0f} GHz\") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we define a function to generate random intervals with various properties, returning a dataframe of intervals." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def make_random_intervals(\n", " n=1e5, \n", " n_chroms=1, \n", " max_coord=None, \n", " max_length=10, \n", " sort=False,\n", " categorical_chroms=False,\n", " \n", " ):\n", " n = int(n)\n", " n_chroms = int(n_chroms)\n", " max_coord = (n // n_chroms) if max_coord is None else int(max_coord)\n", " max_length = int(max_length)\n", " \n", " chroms = np.array(['chr'+str(i+1) for i in range(n_chroms)])[\n", " np.random.randint(0, n_chroms, n)]\n", " starts = np.random.randint(0, max_coord, n)\n", " ends = starts + np.random.randint(0, max_length, n)\n", "\n", " df = pd.DataFrame({\n", " 'chrom':chroms,\n", " 'start':starts,\n", " 'end':ends\n", " })\n", " \n", " if categorical_chroms:\n", " df['chrom'] = df['chrom'].astype('category')\n", "\n", " if sort:\n", " df = df.sort_values(['chrom','start','end']).reset_index(drop=True)\n", " \n", " return df\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overlap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this chapter we characterize the performance of the key function, `bioframe.overlap`. We show that the speed depends on:\n", "- the number of intervals\n", "- number of intersections (or density of intervals)\n", "- type of overlap (inner, outer, left)\n", "- dtype of chromosomes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### vs number of intervals" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11.8 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "15.4 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "65.9 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "862 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "15.8 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "timings = {}\n", "for n in [1e2, 1e3, 1e4, 1e5, 1e6]:\n", " df = make_random_intervals(n=n, n_chroms=1)\n", " df2 = make_random_intervals(n=n, n_chroms=1)\n", " timings[n] = %timeit -o -r 1 bioframe.overlap(df, df2)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.loglog(\n", " list(timings.keys()),\n", " list([r.average for r in timings.values()]),\n", " 'o-',\n", ")\n", "plt.xlabel('N intervals')\n", "plt.ylabel('time, seconds')\n", "plt.gca().set_aspect(1.0)\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### vs total number of intersections" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that not only the number of intervals, but also the density of intervals determines the performance of overlap. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "37.9 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "105 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "383 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "1.57 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "6.66 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "timings = {}\n", "n_intersections = {}\n", "n = 1e4\n", "for avg_interval_len in [3, 1e1, 3e1, 1e2, 3e2]:\n", " df = make_random_intervals(n=n, n_chroms=1, max_length=avg_interval_len*2)\n", " df2 = make_random_intervals(n=n, n_chroms=1, max_length=avg_interval_len*2)\n", " timings[avg_interval_len] = %timeit -o -r 1 bioframe.overlap(df, df2)\n", " n_intersections[avg_interval_len] = bioframe.overlap(df, df2).shape[0]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.loglog(\n", " list(n_intersections.values()),\n", " list([r.average for r in timings.values()]),\n", " 'o-',\n", ")\n", "plt.xlabel('N intersections')\n", "plt.ylabel('time, seconds')\n", "plt.gca().set_aspect(1.0)\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### vs number of chromosomes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we consider a genome of the same length, divided into more chromosomes, the timing is relatively unaffected." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "845 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "827 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "825 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "817 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "775 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "804 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "876 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "timings = {}\n", "n_intersections = {}\n", "n = 1e5\n", "for n_chroms in [1, 3, 10, 30, 100, 300, 1000]:\n", " df = make_random_intervals(n, n_chroms)\n", " df2 = make_random_intervals(n, n_chroms)\n", " timings[n_chroms] = %timeit -o -r 1 bioframe.overlap(df, df2)\n", " n_intersections[n_chroms] = bioframe.overlap(df, df2).shape[0]\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note this test preserves the number of intersections, which is likely why performance remains similar over the considered range." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1: 809891,\n", " 3: 808730,\n", " 10: 811683,\n", " 30: 807469,\n", " 100: 806720,\n", " 300: 803166,\n", " 1000: 786771}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_intersections" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ0AAAEcCAYAAAAcM2nfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAApsUlEQVR4nO3deVxU9d4H8M+ZYRdBUNxFQBaX3BINcgGl3HohXa9m9yrprUDt0XsfNR81l0dvPK1mdq+VApVGltc0t8yblCKp4VWvS8plKUNEc0mQlEWY4ff8AYyMM6NHmHMYhs/79eLFnN/5nTPf4afzmbPMOZIQQoCIiEgFmsYugIiImg+GDhERqYahQ0REqmHoEBGRahg6RESkGoYOERGphqFDRESqaTah88orryAkJAQajQbbt29v7HKIiJqlZhM6UVFR+OqrrzBs2LDGLoWIqNmy2dApKCjA7NmzER4eDjc3N0iShLy8PLN9L1y4gAkTJsDT0xMeHh4YP3488vPzjfo88sgj6NatmwqVExGRJTYbOj/++CM2b94MLy8vDB061GK/0tJSjBgxAllZWdiwYQNSUlKQm5uL4cOHo6SkRMWKiYjofhwauwBLhg0bhitXrgAAkpOTsXfvXrP9kpKScO7cOWRnZyMwMBAA0KdPHwQFBWHdunWYO3euajUTEdG92eyWjkYjr7SdO3ciLCzMEDgA4O/vj8GDB2PHjh1KlUdERPVgs6Ej19mzZ/HQQw+ZtPfq1QuZmZmNUBEREVlis7vX5CosLISXl5dJu7e3N4qKigzTCQkJWLt2La5du4YzZ85g1qxZOHbsGNq3b2+0XGJiIhITEwEAmZmZ6NKlS73qqqqqkr21RurhuNgejoltasi4XL9+Hb/++qvZeU0+dABAkiSTtrtvE7RkyRIsWbLkvuuKj49HfHw8ACA0NBTHjh2rV01paWmIjIys17KkHI6L7eGY2KaGjEtoaKjFeU3+44WXlxcKCwtN2ouKisxuARERUeNp8qHTq1cvnD171qQ9MzMTPXv2bISKiIjIkiYfOuPGjUNGRgbOnTtnaMvLy8OhQ4cwbty4RqyMiIjuZtPHdLZs2QIAOH78OABgz5498PHxgY+PDyIiIgAAcXFxWLNmDWJiYpCQkABJkrB06VJ06dIF06dPr9fz7tq1C7t27UJxcbF1XggREQGw8dCZOHGi0fQLL7wAAIiIiEBaWhoAoEWLFti3bx/mzJmD2NhYCCEQFRWF1atXw93dvV7PGx0djejo6HseDCMiogdn06Fz9xlolvj6+mLr1q0KV0NERA3V5I/pEBFR08HQISIi1dj07rXGwhMJiIiUwS0dM6Kjo5GYmAhPT8/GLoWIyK4wdIiISDUMHSIiUg1Dh4iIVMPQISIi1TB0iIhINTxl2gyeMk1EpAxu6ZjBU6aJiJTB0CEiItUwdIiISDUMHSIiUg1Dh4iIVMPQISIi1fCUaTN4yjQRkTK4pWMGT5kmIlIGQ4eIiFTD0CEiItUwdIiISDUMHSIiUg1Dh4iIVMPQISIi1fB7OmbwezpERMrglo4Z/J4OEZEyGDpERKQahg4REamGoUNERKph6BARkWoYOkREpBqGDhERqYahQ0REqmHoEBGRahg6RESkGl4GxwxeBoeISBnc0jGDl8EhIlIGQ4eIiFTD0CEiItUwdIiISDUMHSIiUg1Dh4iIVMPQISIi1TB0iIhINQwdIiJSDUOHiIhU06DQuX79urXqICKiZkBW6CQlJeHNN980TP/www/o3Lkz2rZti9DQUFy+fFmxAomIyH7ICp2///3vcHV1NUzPnTsXrVq1wurVq1FcXIxly5YpViAREdkPWVeZzs/PR/fu3QEAxcXFOHDgALZv346xY8eidevWWLRokaJFqo1XmSYiUoasLR29Xg+NprrrwYMHIUkSIiMjAQBdunTB1atXFSuwMfAq00REypAVOkFBQdi9ezcAYNOmTXj00Ufh5uYGALh06RK8vb2Vq5CIiOyGrN1rL774ImJjY7FhwwYUFRXh888/N8zbv38/+vTpo1iBRERkP2SFzh//+Ef4+vriyJEjGDhwIIYNG2aY165dO4wbN06xAomIyH7Ivl31kCFDMGTIEJP2FStWWLUgIiKyXxZDJz8//4FW5Ovr2+BiiIjIvlkMHT8/P0iSJHtFer3eKgUREZH9shg6H374oSF0bt++jYSEBHh4eOCpp55Cu3btcPnyZWzevBk3b97E0qVLVSuYiIiaLouhM23aNMPj//7v/8bDDz+Mbdu2GW39LFu2DE8++SQyMzMVLZKIiOyDrO/pfPbZZ5g+fbrJ7jZJkjBjxgx8+umnihRHRET2RVbo3Lp1C9euXTM77+rVqygpKbFqUUREZJ9khU5kZCReeuklHD161Kj9X//6FxYvXmy4JA4REdG9yAqdNWvWwNnZGWFhYfDz88MjjzwCPz8/hIeHw8XFBWvWrFG6TiIisgOyvhzq7++PrKwsrF+/HhkZGfjll1/w0EMPITw8HFOnToWjo6PSdRIRkR2QfUUCR0dHxMXFIS4uTsl6iIjIjjXodtVEREQPQlboVFRUYMWKFejevTvc3Nyg1WqNfhwcZG8wERFRMyYrLebPn493330XY8aMwfjx4+Hs7Kx0XUREZIdkhc6WLVuwYsUKLF68WOl6bAJvV01EpAzZXw4NDw9XuhabwdtVExEpQ1boREdHIz09XelaiIjIzsnavTZ79mw888wz0Gg0GDt2LLy9vU36BAQEWL04IiKyL7JCp3bX2vLlyy3eKZT30yEiovuRFTp1761DRERUX7JCp+69dYiIiOrrgb7VKYRAZmYmCgsL0bp1a/To0YNbQEREJJvsy+AkJyejQ4cO6NOnDyIjI9G7d2907NgRH3zwgZL1ERGRHZG1pbNx40bEx8cjKioKU6ZMQfv27XH58mVDu5ubG/7whz8oXSsRETVxskLnjTfewOTJk5GSkmLUPnXqVMTGxuL1119n6BAR0X3J2r2WnZ2NKVOmmJ03ZcoUZGdnW7UoIiKyT7JCp2XLligoKDA7r6CgAC1btrRqUUREZJ9khc6YMWPw0ksv4bvvvjNq//7777FkyRKMGTNGkeKIiMi+yD6mk5GRgcjISHTq1AkdOnTA5cuXUVBQgMDAQLzxxhtK10lERHZAVui0b98eJ0+exIcffojvvvsOhYWF8PPzQ0REBKZNmwY3Nzel6yQiIjsg+8uhbm5umDVrFmbNmqVkPUREZMdkHdPJyMjA5s2bzc77/PPPceTIEasWRURE9klW6CxatAhnz541O+8///kPFi1aZNWiiIjIPskKnVOnTiEsLMzsvEGDBuH06dNWLYqIiOyTrNApLy9HVVWV2Xl6vR4lJSVWLYqIiOyTrNDp0aMHdu7caXbezp07ERISYtWiiIjIPsk6e23GjBmYPn06PDw8EBcXh86dO+PixYtITEzEBx98gPfee0/pOomIyA7ICp24uDhkZ2fj7bffxqpVqwztkiRhzpw5iI+PV6xAIiKyH7K/p7Ny5UrMnDkTqampKCwsRJs2bfDYY48hICBAyfqIiMiOPNCdQ7t164Zu3bopVQsREdk52XcOLSkpwd/+9jdMmDABI0aMQG5uLgBg06ZNyMrKUqxAa/jpp58wZMgQBAcHo3///jh27Fhjl0RE1CzJCp0LFy6gT58+mD9/PnJzc3HgwAHcvHkTALB//36sXLlS0SIbasaMGZg2bRpycnIMN6QTQjR2WUREzY6s0Jk3bx6cnZ2Rm5uL48ePG71hR0REID093apFFRQUYPbs2QgPD4ebmxskSUJeXp7ZvhcuXMCECRPg6ekJDw8PjB8/Hvn5+Yb5165dQ0ZGBqZOnQoAePzxxwEAx48ft2rNRER0f7JCJzU1FStWrICvry8kSTKa16lTJ1y8eNGqRf3444/YvHkzvLy8MHToUIv9SktLMWLECGRlZWHDhg1ISUlBbm4uhg8fbvjCan5+Pjp27AhHR0fDcl27djUKJiIiUoesEwkqKios3h20uLjY6A3dGoYNG4YrV64AAJKTk7F3716z/ZKSknDu3DlkZ2cjMDAQANCnTx8EBQVh3bp1mDt3rtnluGuNiKhxyNrS6dOnD7Zu3Wp23p49ezBgwADrFqWRd37Dzp07ERYWZggcAPD398fgwYOxY8cOAICvry8uXbqEyspKQ5/z58/D19fXqjUTEdH9ydrSmT9/PiZMmAAA+OMf/wgAyMzMxI4dO/DBBx9YvESO0s6ePYuYmBiT9l69euHzzz8HAPj4+GDQoEFYv3494uLikJqaCiGExaBMTExEYmIigOpjS2lpafWq7datW/VelpTDcbE9HBPbpNi4CJnef/994enpKTQajZAkSUiSJDw8PMS6devkrqJekpKSBADx888/m8xzdHQUCxYsMGlfvHix0Gq1humcnBwRHh4ugoKCRN++fcWRI0dkPfeAAQPqXff+/fvrvSwph+Niezgmtqkh43Kv907ZXw6dMWMGYmNj8f333+Pq1ato3bo1Hn30UYvHetRy94kNgOkxm6CgIBw+fFitkoiIyIIHuiJBixYt8NhjjylVywPz8vJCYWGhSXtRURG8vLwaoSIiIroXWUfsd+zYgY8++sgwff78eYSHh6Nly5aYMGECbt26pViB99KrVy+zdzTNzMxEz549G6EiIqKmbfuJixj82j5M+2cJBr+2D9tPWPcrMbJCJyEhAdeuXTNMz507FwUFBYiPj0d6ejqWL19u1aLkGjduHDIyMnDu3DlDW15eHg4dOoRx48bVe727du1CfHw8iouLH3hZpQeMiEgp2/5dgIVfnMbFG2UAgIs3yrDoix+s+j4mibsPgJjh7e2NTz/9FKNHj0ZZWRm8vb3x8ccfY+LEiUhOTsarr76Kn376yWpFAcCWLVsAAN9++y3Wrl2L9957Dz4+PvDx8UFERASA6uvB9e3bF66urkhISIAkSVi6dClu3ryJ06dPw93dvUE1hIaGPtB12rafuIhFX/yAskq9oc3VUYtXx/fGk/07NagWNW0/cRFvfp2NSzfK0LGVK+aPCmlS9ZtT+5ou3ihDJzt5TfYiLS0NkZGRjV2G3RFCoKRCj6KSChSVVqCw5ndRSWX175rHhvbSClz57bbZdXVq5YpDC0fIfu57vXfKOqZTXl4OV1dXAMDhw4eh0+kwcuRIAEBISAguXbokuxi5Jk6caDT9wgsvAKi+7E7taXwtWrTAvn37MGfOHMTGxkIIgaioKKxevbrBgVMfb36dbRQ4AFBWqceKXWfh7KCBg1YDR60ER60GDhoJjg4aOGo0cHSQ4KCpM08r1bTX9NNqoNWYnjChhLuDs/aTDoAm+yZtD6/JHj8IkHxCCNy8rcONkkoUllYYBcmN0uq2G7XBUidUKvXmtykkCfByc0IrN0d4uzmhs5cb+nT2xOZjBWb7X6rZ8rEGWaHj5+eHgwcPIiIiAjt27MCAAQPg6ekJALh69arhsTXJ2AADUP3lT0tfXFWbpYEpKq3EzI3/btC6NRLgoNXAqSaUHDQaOGkl4yCr+e2oqfPYME8DR81d/WqX19zps/bAj2aDc/nOs6jQVQE12VcbgbVnD0qo/oeMur8h4e6TC832r1mbJNVdr2EJM/Pu/Zy1M2v7v/xlptnXlLA7E529XKHRSNBIErRSdb0aSYJWI0EjwTBPU9OuqWmv7nunX93H1f1r+mkks2dYPgh7CE17VZ8PA0II/FauMwRHdXhU3gmN0koUlVTUCZLqeboq8++JmpoA8WrhBC83R3Rt7YZ+XVrBq4UTvFs4opWbE7zdnODVwhFebk7wbuEEDxdHaMx8kD3043XDrrW6OrZyrd8fyAxZoTN9+nS8+OKL2LZtG06ePIn333/fMO/777/nQfsaHVu5mh2wti2dseHZQdDpBSr0VdDpq6Crqn0soNNX3XlcVYWKmrZKfRUq9QI6vah+XFV153HNb52+CpVVApW66nVW1ixXoatCyW1d9fJVdfvf6XOn//0D/kZZJf5n62kl/myN5tdbFZiw9ntVnssonCTTQKsNp9p5dUOsoKjM5A2nrFKPhV+cxsEff0ULJy3cnB2qfzs5oIXzXb+dHODmrDX8dnPUwkEr+64mijHa5Zmxr8ltvW07XoBF239AeWUVgOoPA/+z5TSO/Hwd/m1aGMLDsBurJkSKSiuhtxAgWo0ELzdHQ4j4t2mBAV2d6gRHdbBU/65ua+niYDZA6mP+qBCzhwjmjwqxyvoBmaHzl7/8BW3atEFGRgb+/Oc/45lnnjHMu3nzJv70pz9ZraCmzNKAvTS2B3p08GjEyu5NCAFdVXW4jXgrDb8Ul5v0aefhjK0zH63pf/fygIAwmidwZ2tV1OlXO7duP4vrMPQRsp+z9vXUXe/0lOP49Zbpvuo27k5Y9VQ/VAlR/VOFO48FoK+qfizqPK6dV93fTD/Dukz7VQkB/V3rM1l3lWm/vOulJrUDQHllFb7/6TpKKnQova1Hhb7KbD9znB00aOHsADcnrXEoOWnh7lx32lyI1Qm5OmHn5CA/yJTYehNCoFIvUK7To7xCj/LKKpTr9Cir0KO8Uo9yXRXKKvS4rauZrqxCWeWdx+WGx/qa9rpt1esqr6xZn676g93dKvRV+OxfFwAADhrpTki4OSGorXt1eNRscdRudbRyc6z57QQPF4cGbxk3RO3fXsnjn7JOJGhudu3ahV27dmH//v2Gm9XJ1dQPWNvLyRB1NfXXNPi1fWa3oO8+uFtR86Z6q0KH0ts6lFTo7/yu0KHk9l2/a8KqpEKH0go9Sm7X/K7TXvspXg5HrWQaShZCa/3hPPxWrjNZh6erA+KGBtx5w9fpUVZR/YZ/+64wKKvU43adx+WVeljYgLgvJ60GLo4auDhqa340cHXUwrl22kEDVyctXByq57k4abHuwDmz65IAnF4+Eu7OjRsgDdWQEzwafCJBcxMdHY3o6GiEhoY+8LJP9u+EJ/t3arJn5NT9pGMvB63V+PSmJLm7PJwcNHBy0MDTzXpXfddXCZTeHUpmwule838pLjdpt/RRt7hMh5V7c6CRABdHLVxr3vSda0KgNhBauTrCpU4I1J13JzhM5zk7aKvDo06QODto63WizpenfrF4/KOli3WvvG9PGDpkojY47UlT/jDQmB8EtBoJLV0crfomKoTA4Nf24ZKZ3bgdPF1wYP5wOGobfgKG0tQ4/mGPGDpETYA9fRCQJAn/M7q72TfsBaO7P9CxocZkj3sF1MDQISLVNfVdnrXs6cOAWhg6RNQomvIuT6o/ho4ZtWev1efaa0REZFmDd56OGDECkydPxvHjx61Rj02Ijo5GYmKiIldaICJqzhocOufOnUNqaioGDhyI0aNHW6MmIiKyUw3evZaXlwcAyMnJQXp6ekNXR0REdsxqx3SCg4MRHBxsrdUREZEdeqDQ+fXXX5GRkYHr168jOjoa3t7eKC8vh5OTEzSapnFuPRERNR5ZSSGEwPz589G5c2eMGzcOzz77rGG3WkxMDP7v//5PyRqJiMhOyAqdV199FWvWrMGyZctw5MgRo3vdREdH48svv1SswMbQkNtVExGRZbJ2ryUnJ2PZsmVYtGgR9Hrjm2EFBgZa/VbVja0hF/wkIiLLZG3pXLx4EWFhYWbnOTk5oaSkxKpFERGRfZIVOp06dcKZM2fMzjt16hT8/f2tWhQREdknWaEzceJE/PWvf8WhQ4cMbZIkIScnB2+99RaefvppxQokIiL7ISt0li9fju7du2PYsGEICgoCUB1EvXv3RlBQEBYuXKhokUREZB9knUjg6uqKtLQ0fPrpp/j6668RGBiI1q1bY+nSpZg8eTIcHHjdUCIiuj/ZaaHVahEbG4vY2Fgl6yEiIjtWr02UqqoqkzZekYCIiO5HVlKUlZVh4cKF6NatG5ydneHo6Gj04+TkpHSdquKXQ4mIlCFrS+eFF17Axo0bER0djaefftruQuZu/HIoEZEyZIXOzp07sXLlSvz5z39Wuh4iIrJjsnavOTs7o0ePHkrXQkREdk5W6EybNg2bNm1SuhYiIrJzsnavvfzyy5g5cyZGjhyJUaNGwcvLy6TPs88+a/XiiIjIvsgKnePHj2Pnzp24evUqvvnmG5P5kiQxdIiI6L5khc6MGTPQunVrJCUloXv37nZ/9hoRESlDVuhkZWVhy5YtGDt2rNL1EBGRHZN1IkFISAjvmUNERA0mK3Ree+01JCQk4Pz580rXQ0REdkzW7rWEhARcvXoVwcHBCA4ONjl7TZIkHDhwQJECG8OuXbuwa9cuXgaHiMjKZIWOVqtF9+7dla7FZvAyOEREypAVOmlpaQqXQUREzQHvR0BERKqxuKWTnp6Ohx9+GO7u7khPT7/vioYNG2bVwoiIyP5YDJ3IyEhkZGRg0KBBiIyMhCRJZvsJISBJEvR6vWJFEhGRfbAYOvv370fPnj0BAPv27bMYOkRERHJZDJ2IiAjD48jISDVqISIiOyfrRIKAgACcOnXK7LwzZ84gICDAqkUREZF9khU6eXl5uH37ttl55eXlvFIBERHJIvuUaUvHdI4dO4ZWrVpZqx4iIrJjFo/pvP3223j77bcBVAdOdHS0yS0NysrKUFhYiKefflrZKomIyC5YDJ2AgABERUUBADZs2IDQ0FD4+PgY9XF2dkbPnj3x/PPPK1slERHZBYuhExMTg5iYGMP0smXL4O/vr0pRjY0X/CQiUoasa6999NFHStdhU3jBTyIiZfDaa0REpBqGDhERqYahQ0REqmHoEBGRahg6RESkGoYOERGphqFDRESqYegQEZFqGDpERKQahg4REamGoUNERKph6BARkWoYOkREpBqGDhERqYahQ0REqmHoEBGRahg6RESkGll3Dm1ueLtqIiJlcEvHjOjoaCQmJsLT07OxSyEisisMHSIiUg1Dh4iIVMPQISIi1TB0iIhINQwdIiJSDUOHiIhUw9AhIiLVMHSIiEg1DB0iIlINQ4eIiFTD0CEiItUwdIiISDUMHSIiUg1Dh4iIVMPQISIi1TB0iIhINQwdIiJSDUOHiIhUw9AhIiLVMHSIiEg1DB0iIlINQ4eIiFTD0CEiItUwdIiISDXNInReeeUVhISEQKPRYPv27Y1dDhFRs9UsQicqKgpfffUVhg0b1tilEBE1a6qHTkFBAWbPno3w8HC4ublBkiTk5eWZ7XvhwgVMmDABnp6e8PDwwPjx45Gfn//Az/nII4+gW7duDayciIgaSvXQ+fHHH7F582Z4eXlh6NChFvuVlpZixIgRyMrKwoYNG5CSkoLc3FwMHz4cJSUlKlZMRETW4qD2Ew4bNgxXrlwBACQnJ2Pv3r1m+yUlJeHcuXPIzs5GYGAgAKBPnz4ICgrCunXrMHfuXADAww8/bHHr58SJE+jSpYsCr4KIiOpD9dDRaORtXO3cuRNhYWGGwAEAf39/DB48GDt27DCEzr///W9F6iQiIuuz2RMJzp49i4ceesikvVevXsjMzGyEioiIqKFU39KRq7CwEF5eXibt3t7eKCoqeqB1JSQkYO3atbh27RrOnDmDWbNm4dixY2jfvr1J38TERCQmJgIAsrKyEBoaatKnuLgYnp6e92y7du0afHx8HqhOazFXn1rrkbPM/frca76leXLGBGi8cbH1MZHTT6lxaY7/V2x9TICGjYulk8MAAKIRJSUlCQDi559/Npnn6OgoFi5caNL+0ksvCa1Wq0J1lsXFxd23bcCAAWqVY8JcfWqtR84y9+tzr/mW5skZEyEab1xsfUzk9FNqXJrj/xVbHxMhlBsXm9295uXlhcLCQpP2oqIis1tAaoqOjpbV1lisVUt91iNnmfv1udd8S/M4Jg1fhuOi3nqa85hIQgih2rPdJTk5GXFxcfj555/h5+dnNG/EiBGoqKjAwYMHjdojIyMhhMCBAwdUrPTBhYaG4tixY41dBt2F42J7OCa2SalxsdktnXHjxiEjIwPnzp0ztOXl5eHQoUMYN25cI1YmT3x8fGOXQGZwXGwPx8Q2KTUujbKls2XLFgDAt99+i7Vr1+K9996Dj48PfHx8EBERAQAoKSlB37594erqioSEBEiShKVLl+LmzZs4ffo03N3d1S6biIgaqFFCR5Iks+0RERFIS0szTOfn52POnDlITU2FEAJRUVFYvXq1ya44IiJqGhr1mA4RETUvNntMx9799NNPGDJkCIKDg9G/f38eSLURvA2GbSkvL8eTTz6JHj16oF+/fhg1apTRcV5qHFFRUejbty/69euHoUOH4uTJk7KXZeg0khkzZmDatGnIycnBG2+8gcmTJ4MbnY2Pt8GwPTNnzsR//vMfnDx5EtHR0Xj++ecbu6Rm74svvsCpU6dw8uRJzJ07F9OmTZO9LENHJmvekuHatWvIyMjA1KlTAQCPP/44AOD48eOKvw57Y+1bZfA2GA1nzTFxcXHBqFGjDNNhYWHc0qkHa/8/qXv1gt9+++2BamHoyGTNWzLk5+ejY8eOcHR0NCzXtWvXet0rqLnjrTJsj5Jj8ve//x0xMTFKlW63lBiTyZMno3Pnzli6dCk++eQT+cUocp0DO6TX6w2P73X5ntWrVwuNRiNyc3MNbefOnRNarVa89dZbQgghjh07JoKDg42We+yxx8TWrVuVKd6OWXNc6oqIiBDbtm1TomS7p9SYvPLKKyIsLEyUlJQoUrc9U2pMatc3duxY2bVwS0cma92SAQB8fX1x6dIlVFZWGvqcP38evr6+1i26GbDmuJB1KDEmK1euxNatW7Fnzx64ublZtd7mQMn/J8899xxSU1Nx/fp1ebXI6kWyybklg4+PDwYNGoT169cDgOF7SAMGDFCz1GaFt8qwPXLHZNWqVfjss8+QmpqKVq1aqVhh8yNnTIqKivDLL78Y5m3duhVt27aFt7e3rOew2VsbNFVyb8mwdu1aTJ06FW+++Sbc3NywceNGi1+apYaTOy4PchsMahg5Y1JQUIB58+YhICAAw4cPBwA4ODjwKwYKkTMmRUVFmDRpEsrLy6HRaNC2bVt8+eWXst+/GDoKMPfHF3edDh0UFITDhw+rVRJB3rgsWbIES5YsUaukZu9+Y9K5c2d+lUBl9xuTgIAAHD16tN7r5+41K7PlWzI0ZxwX28MxsT1qjAlDx8p69eqFs2fPmrRnZmaiZ8+ejVARARwXW8QxsT1qjAlDx8qa+i0Z7BXHxfZwTGyPGmPCC34+AN6SwTZxXGwPx8T22MyYyP5GDwkAZn8iIiKM+p0/f16MHz9etGzZUri7u4uYmBizX8Qi6+C42B6Oie2xlTHhlg4REamGx3SIiEg1DB0iIlINQ4eIiFTD0CEiItUwdIiISDUMHSIiUg1Dh4iIVMPQIbvw8ccfo2vXrobpHj164P3337fKutPS0iBJEr755hurrI+oOWPokF04fvy44SZ4t27dQk5ODm+KR2SDGDpkF+qGzvHjx6HRaNCnT59GrgrQ6/XQ6XSNXQaRzWDoUJNXVVWFkydP4uGHHwZQHTo9e/aEi4uLrOV1Oh1ef/11wzI+Pj4YPXo0srKyjPqVlpZi1qxZaNOmDXx8fDBlyhTcuHHDqI8kSVi8eDFee+01+Pv7w8nJCT/88AMA4JNPPkHfvn3h4uKCNm3aIDY21ui2vwDg5+eHKVOmICUlBSEhIXB1dcXQoUORm5uLkpISTJ8+Ha1bt0a7du0wb948k0DLzs7G7373O7Rq1Qqurq4ICwvDP//5T6M+OTk5+N3vfoe2bdvCxcUFvr6+mDhxotG65Kxn+fLlkCQJWVlZGDVqFFq0aAFfX1989NFHAICUlBR0794d7u7uGD58OH766SeTv31SUpLR3+S5554zuZ/LO++8gx49esDV1RVeXl4IDQ3Ftm3bLA0n2TqrXcWNSGVdu3a1eBHDuj/3u1jh73//e6HVasW8efPEnj17xLZt28ScOXPEvn37hBBC7N+/XwAQfn5+YtasWeLrr78Wf/vb34SLi4t45plnjNYFQHTs2FEMGTJEbNmyRezZs0dcvnxZrFu3TgAQkyZNErt37xZJSUnCx8dHBAUFiZs3bxq9pi5duoiwsDCxbds28Y9//EN06NBB9O7dW8TExIh58+aJvXv3iiVLlggA4t133zUse/HiRdGmTRvh7+8vUlJSxM6dO8WoUaOERqMRX331laFfUFCQGDhwoNiyZYtIS0sTGzduFJMnTxa3b99+oPX87//+rwAgHnroIfHOO++IvXv3iieffFIAEIsWLRLh4eFi27ZtYvPmzaJDhw5i0KBBRn+rBQsWCAcHBzF37lzx9ddfiw8//FB07NhRDBo0SOh0OiGEEJ988onQarVixYoVYt++fWL37t3i1VdfFcnJyQ/wL4VsCUOHmqyzZ8+KEydOiDlz5oiePXuKEydOiBMnToiWLVuKVatWGaZr30zN+fbbbwUA8c4771jsUxs6dwfMf/3XfwlnZ2dRVVVlaAMgOnToIEpLSw1tOp1OtG3bVkRGRhot/91335k8d9euXYWXl5e4ceOGoe2dd94RAMRzzz1ntHz//v2N1jlv3jyh1WpFbm6u0XMHBweL/v37CyGEuHbtmgAgduzYYfH1ylmPEHdCZ8OGDYa2wsJCodVqhbe3tyguLjZ5DXl5eUIIIX7++Weh0WjEihUrjJ774MGDAoDYtm2bEKL6b1z3Oanp4+41arJ69uyJfv364cKFC4iMjES/fv3QokUL3Lx5ExMnTkS/fv3Qr18/ODk5WVzH3r17IUkS4uLi7vt8TzzxhNF07969cfv2bVy5csWoffTo0XB1dTVMZ2dn4+rVq5g8ebJRvyFDhqBr1644cOCAUXt4eDg8PT0N0927dwcAjBo1yqhf9+7dceHCBcN0eno6wsLCEBgYaGjTarX4wx/+gJMnT+K3335D69atERAQgIULFyIpKQm5ubkmr1POeuoaM2aM4bGXlxfatm2LsLAweHh4mLyG2npTU1NRVVWFyZMnQ6fTGX4eeeQReHh4ID09HQAwcOBAnDx5ErNnz8Y333yD0tJSk3qpaWHoUJNUe4Bep9Ph0KFDCA8Ph06nw3fffYdOnTqhffv20Ol0EPe5c8f169fh7e1tFBKWeHt7G007OzsDAMrLy43aO3ToYDRde4zi7nYAaN++vckxjLvvRV8bmuba6z53YWGhxecQQqCoqAiSJCE1NRWhoaFYtGgRgoODERAQYHR6uZz13K9eS6+htt6rV68CAAIDA+Ho6Gj089tvv+H69esAgGeeeQbvv/8+jhw5glGjRsHb2xvjx49HXl6eSX3UNDg0dgFE9REVFWW0hRAbG4vY2FjDtKOjIwBg//79iIyMtLieNm3aoLCwEGVlZbKCRw5Jkoyma8Pq8uXLJn0vX76M0NBQqzyvt7e3xeeQJMlQR0BAAD7++GMIIXDq1CmsWbMGL7zwAvz8/DBmzBjZ62mI1q1bA6je0rw7oOrOlyQJ06dPx/Tp01FUVIS9e/di3rx5mDRpEo4cOdLgOkh93NKhJmndunU4evQoXnzxRQQGBuLo0aM4evQofHx8kJCQYJi+33d1Ro4cCSEEkpOTFas1JCQE7dq1w6ZNm4zaDx8+jPPnzxtuFdxQERERyMjIMNoK0Ov1+Mc//oH+/fujZcuWRv0lSUK/fv2watUqAMCZM2fqtZ76ePzxx6HRaJCfn4/Q0FCTH39/f5NlvLy8MGnSJDz11FOGWqnp4ZYONUkhISEAgJdffhlPPPEEQkNDkZ2djV9//RXPPfcc2rdvL2s9w4cPx+9//3vMnTsXFy5cwIgRI1BZWYn09HQ88cQT99xKkkur1eKvf/0rpk+fjilTpmDKlCm4ePEiFi9ejKCgIPzpT39q8HMAwJw5c7B+/Xo8/vjjWLFiBTw8PPDee+8hJycHu3fvBgCcPn0af/nLXzBp0iQEBgZCr9dj/fr1cHBwwIgRI2Svp6G6deuGBQsWYNasWcjOzkZERARcXFxw4cIFpKam4vnnn8fw4cMRHx+Pli1bIjw8HG3btkVOTg5SUlIwcuRIq9RB6mPoUJNVUVGBb7/9Flu2bAEA7NmzB/3795cdOLU2bdqE119/HRs2bMDq1avh6emJgQMH4vnnn7darfHx8XBzc8Obb76JmJgYuLu7Y+zYsXjjjTfg7u5ulefo2LEjDh48iAULFmDmzJm4ffs2+vXrh927d2P06NEAqo/L+Pr6YtWqVSgoKICLiwt69+6NL7/80rBVKGc91vDKK6+gR48eePfdd/Huu+9CkiR06dIFUVFRCAoKAgAMHjwYH330EVJSUlBcXIyOHTtiypQpWLFihdXqIHVJ4n5HWomIiKyEx3SIiEg1DB0iIlINQ4eIiFTD0CEiItUwdIiISDUMHSIiUg1Dh4iIVMPQISIi1TB0iIhINf8PiVvou4zTE2kAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.loglog(\n", " list(timings.keys()),\n", " list([r.average for r in timings.values()]),\n", " 'o-',\n", ")\n", "plt.ylim([1e-1, 10])\n", "plt.xlabel('# chromosomes')\n", "plt.ylabel('time, seconds')\n", "# plt.gca().set_aspect(1.0)\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### vs other parameters: join type, sorted or categorical inputs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that default for overlap: `how='left', keep_order=True`, and the returned dataframe is sorted after the overlaps have been ascertained. Also note that `keep_order=True` is only a valid argument for `how='left'` as the order is not well-defined for inner or outer overlaps. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "839 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "449 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "df = make_random_intervals()\n", "df2 = make_random_intervals()\n", "%timeit -r 1 bioframe.overlap(df, df2)\n", "%timeit -r 1 bioframe.overlap(df, df2, how='left', keep_order=False)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "456 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "390 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "449 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "df = make_random_intervals()\n", "df2 = make_random_intervals()\n", "\n", "%timeit -r 1 bioframe.overlap(df, df2, how='outer')\n", "%timeit -r 1 bioframe.overlap(df, df2, how='inner')\n", "%timeit -r 1 bioframe.overlap(df, df2, how='left', keep_order=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note below that detection of overlaps takes a relatively small fraction of the execution time. The majority of the time the user-facing function spends on formatting the output table." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "805 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "386 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "114 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "110 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n" ] } ], "source": [ "df = make_random_intervals()\n", "df2 = make_random_intervals()\n", "\n", "%timeit -r 1 bioframe.overlap(df, df2)\n", "%timeit -r 1 bioframe.overlap(df, df2, how='inner')\n", "%timeit -r 1 bioframe.ops._overlap_intidxs(df, df2)\n", "%timeit -r 1 bioframe.ops._overlap_intidxs(df, df2, how='inner')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that sorting inputs provides a moderate speedup, as well as storing chromosomes as categoricals " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Default inputs (outer/inner joins):\n", "842 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "386 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "Sorted inputs (outer/inner joins):\n", "694 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "383 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "Categorical chromosomes (outer/inner joins):\n", "607 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "244 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "print('Default inputs (outer/inner joins):')\n", "df = make_random_intervals()\n", "df2 = make_random_intervals()\n", "\n", "%timeit -r 1 bioframe.overlap(df, df2)\n", "%timeit -r 1 bioframe.overlap(df, df2, how='inner')\n", "\n", "print('Sorted inputs (outer/inner joins):')\n", "df_sorted = make_random_intervals(sort=True)\n", "df2_sorted = make_random_intervals(sort=True)\n", "\n", "%timeit -r 1 bioframe.overlap(df_sorted, df2_sorted)\n", "%timeit -r 1 bioframe.overlap(df_sorted, df2_sorted, how='inner')\n", "\n", "print('Categorical chromosomes (outer/inner joins):')\n", "df_cat = make_random_intervals(categorical_chroms=True)\n", "df2_cat = make_random_intervals(categorical_chroms=True)\n", "\n", "%timeit -r 1 bioframe.overlap(df_cat, df2_cat)\n", "%timeit -r 1 bioframe.overlap(df_cat, df2_cat, how='inner')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Vs Pyranges" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Default arguments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The core intersection function of PyRanges is faster, since PyRanges object splits intervals by chromosomes at the object construction stage" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def df2pr(df):\n", " return pyranges.PyRanges(\n", " chromosomes=df.chrom,\n", " starts=df.start,\n", " ends=df.end,\n", " )" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6.01 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "3.16 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "7.64 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "3.78 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "24.5 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "10.9 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "389 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "104 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "6 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "2.26 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "20.1 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "7.79 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "timings_bf = {}\n", "timings_pr = {}\n", "for n in [1e2, 1e3, 1e4, 1e5, 1e6, 3e6]:\n", " df = make_random_intervals(n=n, n_chroms=1)\n", " df2 = make_random_intervals(n=n, n_chroms=1)\n", " pr = df2pr(df)\n", " pr2 = df2pr(df2)\n", " timings_bf[n] = %timeit -o -r 1 bioframe.overlap(df, df2,how='inner')\n", " timings_pr[n] = %timeit -o -r 1 pr.join(pr2)\n", " " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.loglog(\n", " list(timings_bf.keys()),\n", " list([r.average for r in timings_bf.values()]),\n", " 'o-',\n", " label='bioframe'\n", ")\n", "plt.loglog(\n", " list(timings_pr.keys()),\n", " list([r.average for r in timings_pr.values()]),\n", " 'o-',\n", " label='pyranges'\n", ")\n", "\n", "plt.gca().set(\n", " xlabel='N intervals',\n", " ylabel='time, seconds',\n", " aspect=1.0,\n", " xticks=10**np.arange(2,6.1)\n", ")\n", "plt.grid()\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### With roundtrips to dataframes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that pyranges performs useful calculations at the stage of creating a PyRanges object. Thus a direct comparison for one-off operations on pandas DataFrames between bioframe and pyranges should take this step into account. This roundrip is handled by `pyranges_intersect_dfs` below." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def pyranges_intersect_dfs(df, df2):\n", " return df2pr(df).intersect(df2pr(df2)).as_df()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6.08 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "9.06 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "7.57 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "10.1 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "24.8 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "19.9 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "297 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "146 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "5.73 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "2.56 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "20.1 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "8.9 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "timings_bf = {}\n", "timings_pr = {}\n", "for n in [1e2, 1e3, 1e4, 1e5, 1e6, 3e6]:\n", " df = make_random_intervals(n=n, n_chroms=1)\n", " df2 = make_random_intervals(n=n, n_chroms=1)\n", " timings_bf[n] = %timeit -o -r 1 bioframe.overlap(df, df2, how='inner')\n", " timings_pr[n] = %timeit -o -r 1 pyranges_intersect_dfs(df, df2)\n", " " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.loglog(\n", " list(timings_bf.keys()),\n", " list([r.average for r in timings_bf.values()]),\n", " 'o-',\n", " label='bioframe'\n", ")\n", "plt.loglog(\n", " list(timings_pr.keys()),\n", " list([r.average for r in timings_pr.values()]),\n", " 'o-',\n", " label='pyranges'\n", ")\n", "plt.gca().set(\n", " xlabel='N intervals',\n", " ylabel='time, seconds',\n", " aspect=1.0\n", ")\n", "plt.grid()\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Memory usage" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "from memory_profiler import memory_usage\n", "import time\n", "\n", "def sleep_before_after(func, sleep_sec=0.5):\n", " def _f(*args, **kwargs):\n", " time.sleep(sleep_sec)\n", " func(*args, **kwargs)\n", " time.sleep(sleep_sec)\n", " return _f\n", "\n", "mem_usage_bf = {}\n", "mem_usage_pr = {}\n", "\n", "for n in [1e2, 1e3, 1e4, 1e5, 1e6, 3e6]:\n", " df = make_random_intervals(n=n, n_chroms=1)\n", " df2 = make_random_intervals(n=n, n_chroms=1)\n", " mem_usage_bf[n] = memory_usage(\n", " (sleep_before_after(bioframe.overlap), (df, df2), dict( how='inner')), \n", " backend='psutil_pss', \n", " include_children=True,\n", " interval=0.1)\n", " mem_usage_pr[n] = memory_usage(\n", " (sleep_before_after(pyranges_intersect_dfs), (df, df2), dict()), \n", " backend='psutil_pss', \n", " include_children=True,\n", " interval=0.1)\n", " " ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(8,6))\n", "plt.loglog(\n", " list(mem_usage_bf.keys()),\n", " list([max(r) - r[4] for r in mem_usage_bf.values()]),\n", " 'o-',\n", " label='bioframe'\n", ")\n", "\n", "plt.loglog(\n", " list(mem_usage_pr.keys()),\n", " list([max(r) - r[4] for r in mem_usage_pr.values()]),\n", " 'o-',\n", " label='pyranges'\n", ")\n", "\n", "plt.gca().set(\n", " xlabel='N intervals',\n", " ylabel='Memory usage, Mb',\n", " aspect=1.0\n", ")\n", "plt.grid()\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 2x memory consumption of bioframe is due to the fact that bioframe store genomic coordinates as int64 by default, while pyranges uses int32:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bioframe dtypes:\n" ] }, { "data": { "text/plain": [ "chrom object\n", "start int64\n", "end int64\n", "dtype: object" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Pyranges dtypes:\n" ] }, { "data": { "text/plain": [ "Chromosome category\n", "Start int32\n", "End int32\n", "dtype: object" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Bioframe dtypes:')\n", "display(df.dtypes)\n", "print()\n", "print('Pyranges dtypes:')\n", "display(df2pr(df).dtypes)\n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "### Combined performance figure.\n", "\n", "fig, axs = plt.subplot_mosaic(\n", " 'AAA.BBB',\n", " figsize=(9.0,4))\n", "\n", "plt.sca(axs['A']) \n", "\n", "plt.text(-0.25, 1.0, 'A', horizontalalignment='center',\n", " verticalalignment='center', transform=plt.gca().transAxes,\n", " fontsize=19)\n", "\n", "plt.loglog(\n", " list(timings_bf.keys()),\n", " list([r.average for r in timings_bf.values()]),\n", " 'o-',\n", " color='k',\n", " label='bioframe'\n", ")\n", "plt.loglog(\n", " list(timings_pr.keys()),\n", " list([r.average for r in timings_pr.values()]),\n", " 'o-',\n", " color='gray',\n", " label='pyranges'\n", ")\n", "plt.gca().set(\n", " xlabel='N intervals',\n", " ylabel='time, s',\n", " aspect=1.0,\n", " xticks=10**np.arange(2,6.1),\n", " yticks=10**np.arange(-3,0.1),\n", "\n", ")\n", "\n", "plt.grid()\n", "plt.legend()\n", "\n", "plt.sca(axs['B'])\n", "plt.text(-0.33, 1.0, 'B', horizontalalignment='center',\n", " verticalalignment='center', transform=plt.gca().transAxes,\n", " fontsize=19)\n", "plt.loglog(\n", " list(mem_usage_bf.keys()),\n", " list([max(r) - r[4] for r in mem_usage_bf.values()]),\n", " 'o-',\n", " color='k',\n", " label='bioframe'\n", ")\n", "\n", "plt.loglog(\n", " list(mem_usage_pr.keys()),\n", " list([max(r) - r[4] for r in mem_usage_pr.values()]),\n", " 'o-',\n", " color='gray',\n", " label='pyranges'\n", ")\n", "plt.gca().set(\n", " xlabel='N intervals',\n", " ylabel='Memory usage, Mb',\n", " aspect=1.0,\n", " xticks=10**np.arange(2,6.1),\n", ")\n", "\n", "plt.grid()\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Slicing " ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.92 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "859 µs ± 0 ns per loop (mean ± std. dev. of 1 run, 1000 loops each)\n", "2.05 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "1.02 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1000 loops each)\n", "3.27 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "2.93 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "12.1 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 100 loops each)\n", "25.2 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "121 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)\n", "306 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "350 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n", "1.04 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n" ] } ], "source": [ "timings_slicing_bf = {}\n", "timings_slicing_pr = {}\n", "\n", "\n", "for n in [1e2, 1e3, 1e4, 1e5, 1e6, 3e6]:\n", " df = make_random_intervals(n=n, n_chroms=1)\n", " timings_slicing_bf[n] = %timeit -o -r 1 bioframe.select(df, ('chr1', n//2, n//4*3))\n", " pr = df2pr(df)\n", " timings_slicing_pr[n] = %timeit -o -r 1 pr['chr1', n//2:n//4*3]\n", " \n" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.loglog(\n", " list(timings_slicing_bf.keys()),\n", " list([r.average for r in timings_bf.values()]),\n", " 'o-',\n", " label='bioframe'\n", ")\n", "\n", "plt.loglog(\n", " list(timings_slicing_pr.keys()),\n", " list([r.average for r in timings_pr.values()]),\n", " 'o-',\n", " label='pyranges'\n", ")\n", "plt.gca().set(\n", " xlabel='N intervals',\n", " ylabel='time, s',\n", " aspect=1.0\n", ")\n", "plt.grid()\n", "plt.legend()" ] } ], "metadata": { "kernelspec": { "display_name": "aquarium_kernel", "language": "python", "name": "aquarium_kernel" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.8" } }, "nbformat": 4, "nbformat_minor": 4 } bioframe-0.4.1/docs/guide-io.ipynb0000644000175000017500000007545314420777331016351 0ustar nileshnilesh{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Reading genomic dataframes" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import bioframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bioframe provides multiple methods to convert data stored in common genomic file formats to pandas dataFrames in `bioframe.io`.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Reading tabular text data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The most common need is to read tablular data, which can be accomplished with `bioframe.read_table`. This function wraps pandas `pandas.read_csv`/`pandas.read_table` (tab-delimited by default), but allows the user to easily pass a **schema** (i.e. list of pre-defined column names) for common genomic interval-based file formats. \n", "\n", "For example, " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendnamescorestrandthickStartthickEndrgb
0chr1193500194500.400+..179,45,0
1chr1618500619500.700+..179,45,0
2chr1974500975500.1000+..179,45,0
\n", "
" ], "text/plain": [ " chrom start end name score strand thickStart thickEnd rgb\n", "0 chr1 193500 194500 . 400 + . . 179,45,0\n", "1 chr1 618500 619500 . 700 + . . 179,45,0\n", "2 chr1 974500 975500 . 1000 + . . 179,45,0" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = bioframe.read_table(\n", " 'https://www.encodeproject.org/files/ENCFF001XKR/@@download/ENCFF001XKR.bed.gz', \n", " schema='bed9'\n", ")\n", "display(df[0:3])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendnamescorestrandfc-log10p-log10qrelSummit
0chr194830954148309911.1000.5.04924-1.00.00438185
1chr4130563716130564086.993.5.05052-1.00.00432185
2chr1200622507200622877.591.5.05489-1.00.00400185
\n", "
" ], "text/plain": [ " chrom start end name score strand fc -log10p -log10q \\\n", "0 chr19 48309541 48309911 . 1000 . 5.04924 -1.0 0.00438 \n", "1 chr4 130563716 130564086 . 993 . 5.05052 -1.0 0.00432 \n", "2 chr1 200622507 200622877 . 591 . 5.05489 -1.0 0.00400 \n", "\n", " relSummit \n", "0 185 \n", "1 185 \n", "2 185 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = bioframe.read_table(\n", " \"https://www.encodeproject.org/files/ENCFF401MQL/@@download/ENCFF401MQL.bed.gz\", \n", " schema='narrowPeak')\n", "display(df[0:3])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "df = bioframe.read_table(\n", " 'https://www.encodeproject.org/files/ENCFF001VRS/@@download/ENCFF001VRS.bed.gz', \n", " schema='bed12'\n", ")\n", "display(df[0:3])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `schema` argument looks up file type from a registry of schemas stored in the `bioframe.SCHEMAS` dictionary:" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['chrom', 'start', 'end', 'name', 'score', 'strand']" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bioframe.SCHEMAS['bed6']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### UCSC Big Binary Indexed files (BigWig, BigBed)\n", "\n", "Bioframe also has convenience functions for reading and writing bigWig and bigBed binary files to and from pandas DataFrames." ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendvalue
0chr21100000001000000540.0
1chr21100000051000001040.0
2chr21100000101000001560.0
3chr21100000151000002080.0
4chr21100000201000002540.0
...............
1995chr21100099751000998040.0
1996chr21100099801000998560.0
1997chr21100099851000999060.0
1998chr21100099901000999520.0
1999chr21100099951001000060.0
\n", "

2000 rows Ă— 4 columns

\n", "
" ], "text/plain": [ " chrom start end value\n", "0 chr21 10000000 10000005 40.0\n", "1 chr21 10000005 10000010 40.0\n", "2 chr21 10000010 10000015 60.0\n", "3 chr21 10000015 10000020 80.0\n", "4 chr21 10000020 10000025 40.0\n", "... ... ... ... ...\n", "1995 chr21 10009975 10009980 40.0\n", "1996 chr21 10009980 10009985 60.0\n", "1997 chr21 10009985 10009990 60.0\n", "1998 chr21 10009990 10009995 20.0\n", "1999 chr21 10009995 10010000 60.0\n", "\n", "[2000 rows x 4 columns]" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bw_url = 'http://genome.ucsc.edu/goldenPath/help/examples/bigWigExample.bw'\n", "df = bioframe.read_bigwig(bw_url, \"chr21\", start=10_000_000, end=10_010_000)\n", "df.head(5)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendvalue
0chr211000000010000005400000.0
1chr211000000510000010400000.0
2chr211000001010000015600000.0
3chr211000001510000020800000.0
4chr211000002010000025400000.0
\n", "
" ], "text/plain": [ " chrom start end value\n", "0 chr21 10000000 10000005 400000.0\n", "1 chr21 10000005 10000010 400000.0\n", "2 chr21 10000010 10000015 600000.0\n", "3 chr21 10000015 10000020 800000.0\n", "4 chr21 10000020 10000025 400000.0" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['value'] *= 100\n", "df.head(5)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "CompletedProcess(args=['bedGraphToBigWig', '/var/folders/4s/d866wm3s4zbc9m41334fxfwr0000gp/T/tmpdvz4xpzu.bg', '/var/folders/4s/d866wm3s4zbc9m41334fxfwr0000gp/T/tmp00_9n7bj.chrom.sizes', 'times100.bw'], returncode=0, stdout=b'', stderr=b'')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chromsizes = bioframe.fetch_chromsizes('hg19')\n", "bioframe.to_bigwig(df, chromsizes, 'times100.bw') \n", "# note: requires UCSC bedGraphToBigWig binary, which can be installed as\n", "# !conda install -y -c bioconda ucsc-bedgraphtobigwig" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartend
0chr214800345348003785
1chr214800354548003672
2chr214801811448019432
3chr214801824448018550
4chr214801884348019099
\n", "
" ], "text/plain": [ " chrom start end\n", "0 chr21 48003453 48003785\n", "1 chr21 48003545 48003672\n", "2 chr21 48018114 48019432\n", "3 chr21 48018244 48018550\n", "4 chr21 48018843 48019099" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bb_url = 'http://genome.ucsc.edu/goldenPath/help/examples/bigBedExample.bb'\n", "bioframe.read_bigbed(bb_url, \"chr21\", start=48000000).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Reading genome assembly information" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The most fundamental information about a genome assembly is its set of chromosome sizes.\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bioframe provides functions to read chromosome sizes file as `pandas.Series`, with some useful filtering and sorting options:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "chr1 248956422\n", "chr2 242193529\n", "chr3 198295559\n", "chr4 190214555\n", "chr5 181538259\n", "chr6 170805979\n", "chr7 159345973\n", "chr8 145138636\n", "chr9 138394717\n", "chr10 133797422\n", "chr11 135086622\n", "chr12 133275309\n", "chr13 114364328\n", "chr14 107043718\n", "chr15 101991189\n", "chr16 90338345\n", "chr17 83257441\n", "chr18 80373285\n", "chr19 58617616\n", "chr20 64444167\n", "chr21 46709983\n", "chr22 50818468\n", "chrX 156040895\n", "chrY 57227415\n", "chrM 16569\n", "Name: length, dtype: int64" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bioframe.read_chromsizes(\n", " 'https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.chrom.sizes'\n", ")" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "chr1 248956422\n", "chr2 242193529\n", "chr3 198295559\n", "chr4 190214555\n", "chr5 181538259\n", " ... \n", "chrUn_KI270539v1 993\n", "chrUn_KI270385v1 990\n", "chrUn_KI270423v1 981\n", "chrUn_KI270392v1 971\n", "chrUn_KI270394v1 970\n", "Name: length, Length: 455, dtype: int64" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bioframe.read_chromsizes('https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.chrom.sizes',\n", " filter_chroms=False)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "dm6_url = 'https://hgdownload.soe.ucsc.edu/goldenPath/dm6/database/chromInfo.txt.gz'" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "chr2L 23513712\n", "chr2R 25286936\n", "chr3L 28110227\n", "chr3R 32079331\n", "chr4 1348131\n", "chrX 23542271\n", "Name: length, dtype: int64" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bioframe.read_chromsizes(dm6_url,\n", " filter_chroms=True, \n", " chrom_patterns=(\"^chr2L$\", \"^chr2R$\", \"^chr3L$\", \"^chr3R$\", \"^chr4$\", \"^chrX$\")\n", ")" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "chr2L 23513712\n", "chr3L 28110227\n", "chr2R 25286936\n", "chr3R 32079331\n", "chr4 1348131\n", "chrX 23542271\n", "chrM 19524\n", "Name: length, dtype: int64" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bioframe.read_chromsizes(dm6_url, chrom_patterns=[\"^chr\\d+L$\", \"^chr\\d+R$\", \"^chr4$\", \"^chrX$\", \"^chrM$\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bioframe provides a convenience function to fetch chromosome sizes from UCSC given an assembly name:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "chr21 46709983\n", "chr22 50818468\n", "chrX 156040895\n", "chrY 57227415\n", "chrM 16569\n", "Name: length, dtype: int64" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chromsizes = bioframe.fetch_chromsizes('hg38')\n", "chromsizes[-5:]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# # bioframe also has locally stored information for certain assemblies that can be \n", "# # read as follows \n", "# bioframe.get_seqinfo()\n", "# bioframe.get_chromsizes('hg38', unit='primary', type=('chromosome', 'non-nuclear'), )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bioframe can also generate a list of centromere positions using information from some UCSC assemblies:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendmid
0chr1122026459124932724123479591
1chr10396866824159352140640101
2chr11510783485442507452751711
\n", "
" ], "text/plain": [ " chrom start end mid\n", "0 chr1 122026459 124932724 123479591\n", "1 chr10 39686682 41593521 40640101\n", "2 chr11 51078348 54425074 52751711" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(\n", " bioframe.fetch_centromeres('hg38')[:3]\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These functions are just wrappers for a UCSC client. Users can also use `UCSCClient` directly:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
chromstartendnamegieStain
0chr102300000p36.33gneg
1chr123000005300000p36.32gpos25
2chr153000007100000p36.31gneg
3chr171000009100000p36.23gpos25
4chr1910000012500000p36.22gneg
..................
1473chr9_ML143353v1_fix025408NaNgneg
1474chrX_ML143385v1_fix017435NaNgneg
1475chrX_ML143384v1_fix014678NaNgneg
1476chr22_ML143379v1_fix012295NaNgneg
1477chr13_ML143363v1_fix07309NaNgneg
\n", "

1478 rows Ă— 5 columns

\n", "
" ], "text/plain": [ " chrom start end name gieStain\n", "0 chr1 0 2300000 p36.33 gneg\n", "1 chr1 2300000 5300000 p36.32 gpos25\n", "2 chr1 5300000 7100000 p36.31 gneg\n", "3 chr1 7100000 9100000 p36.23 gpos25\n", "4 chr1 9100000 12500000 p36.22 gneg\n", "... ... ... ... ... ...\n", "1473 chr9_ML143353v1_fix 0 25408 NaN gneg\n", "1474 chrX_ML143385v1_fix 0 17435 NaN gneg\n", "1475 chrX_ML143384v1_fix 0 14678 NaN gneg\n", "1476 chr22_ML143379v1_fix 0 12295 NaN gneg\n", "1477 chr13_ML143363v1_fix 0 7309 NaN gneg\n", "\n", "[1478 rows x 5 columns]" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "client = bioframe.UCSCClient('hg38')\n", "client.fetch_cytoband()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Reading other genomic formats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See the [docs for File I/O](https://bioframe.readthedocs.io/en/latest/api-fileops.html) for other supported file formats." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 } bioframe-0.4.1/docs/guide-intervalops.md0000644000175000017500000003745514420777331017567 0ustar nileshnilesh--- jupytext: formats: md:myst text_representation: extension: .md format_name: myst format_version: 0.13 jupytext_version: 1.11.3 kernelspec: display_name: Python 3 language: python name: python3 --- # Genomic interval operations ```{eval-rst} This guide provides an introdution into how to use bioframe to perform genomic interval operations. For the full list of genomic interval operations, see the :ref:`API reference`. The following modules are used in this guide: ``` ```{code-cell} ipython3 import itertools import numpy as np import matplotlib import matplotlib.pyplot as plt import pandas as pd import bioframe as bf import bioframe.vis ``` ## DataFrames & BedFrames ```{eval-rst} The core objects in bioframe are pandas DatFrames of genomic intervals, or BedFrames. These can either be defined directly with :py:class:`pandas.DataFrame`: ``` ```{code-cell} ipython3 df1 = pd.DataFrame([ ['chr1', 1, 5], ['chr1', 3, 8], ['chr1', 8, 10], ['chr1', 12, 14]], columns=['chrom', 'start', 'end'] ) ``` ```{eval-rst} Or via functions in :mod:`bioframe.core.construction`, e.g.: ``` ```{code-cell} ipython3 df2 = bioframe.from_any( [['chr1', 4, 8], ['chr1', 10, 11]], name_col='chrom') ``` ```{eval-rst} Or ingested from datasets and databases with functions in :mod:`bioframe.io.fileops` and :mod:`bioframe.io.resources`. ``` ```{eval-rst} BedFrames satisfy the following properties: - chrom, start, end columns - columns have valid dtypes (object/string/categorical, int/pd.Int64Dtype(), int/pd.Int64Dtype()) - for each interval, if any of chrom, start, end are null, then all are null - all starts < ends. Whether a dataframe satisfies these properties can be checked with :func:`bioframe.core.checks.is_bedframe`: ``` ```{code-cell} ipython3 bioframe.is_bedframe(df2) ``` ```{eval-rst} See :mod:`bioframe.core.checks` for other functions that test properties of BedFrames and :ref:`Technical Notes` for detailed definitions. :func:`bioframe.core.construction.sanitize_bedframe` attempts to modfiy a DataFrame such that it satisfies bedFrame requirements. ``` ```{eval-rst} :py:mod:`bioframe.vis` provides plotting utilities for intervals: ``` ```{code-cell} ipython3 bf.vis.plot_intervals(df1, show_coords=True, xlim=(0,16)) plt.title('bedFrame1 intervals'); bf.vis.plot_intervals(df2, show_coords=True, xlim=(0,16), colors='lightpink') plt.title('bedFrame2 intervals'); ``` ## Overlap ```{eval-rst} Calculating the overlap between two sets of genomic intervals is a crucial genomic interval operation. Using :func:`bioframe.overlap`, we can see the two dataframes defined above, ``df1`` and ``df2``, contain two pairs of overlapping intervals: ``` ```{code-cell} ipython3 overlapping_intervals = bf.overlap(df1, df2, how='inner', suffixes=('_1','_2')) display(overlapping_intervals) ``` ```{code-cell} ipython3 for i, reg_pair in overlapping_intervals.iterrows(): bf.vis.plot_intervals_arr( starts = [reg_pair.start_1,reg_pair.start_2], ends = [reg_pair.end_1,reg_pair.end_2], colors = ['skyblue', 'lightpink'], levels = [2,1], xlim = (0,16), show_coords = True) plt.title(f'overlapping pair #{i}') ``` Note that we passed custom suffixes for the outputs (defaults are ``suffixes=("","_")``), as well as a custom overlap mode (``how='inner'``). The default overlap mode, ``how='left'`` returns each interval in ``df1`` whether or not it overlaps an interval in ``df2``. ```{code-cell} ipython3 overlapping_intervals = bf.overlap(df1, df2) display(overlapping_intervals) ``` ## Cluster ```{eval-rst} It is often useful to find overlapping intervals within a single set of genomic intervals. In `bioframe`, this is achieved with :func:`bioframe.cluster`. This function returns a DataFrame where subsets of overlapping intervals are assigned to the same group, reported in a new column. To demonstrate the usage of :func:`bioframe.cluster`, we use the same ``df1`` as above: ``` ```{code-cell} ipython3 df1 = pd.DataFrame([ ['chr1', 1, 5], ['chr1', 3, 8], ['chr1', 8, 10], ['chr1', 12, 14], ], columns=['chrom', 'start', 'end'] ) bf.vis.plot_intervals(df1, show_coords=True, xlim=(0,16)) ``` Cluster returns a DataFrame where each interval is assigned to a group: ```{code-cell} ipython3 df_annotated = bf.cluster(df1, min_dist=0) display(df_annotated) bf.vis.plot_intervals(df_annotated, labels=df_annotated['cluster'], show_coords=True, xlim=(0,16)) ``` Note that using ``min_dist=0`` and ``min_dist=None`` give different results, as the latter only clusters overlapping intervals and not adjacent intervals: ```{code-cell} ipython3 df_annotated = bf.cluster(df1, min_dist=None) display(df_annotated) bf.vis.plot_intervals(df_annotated, labels=df_annotated['cluster'], show_coords=True, xlim=(0,16)) ``` Extending the minimum distance to two (``min_dist=2``) makes all intervals part of the same cluster "0": ```{code-cell} ipython3 df_annotated = bf.cluster(df1, min_dist=2) display(df_annotated) bf.vis.plot_intervals(df_annotated, labels=df_annotated['cluster'], show_coords=True, xlim=(0,16)) ``` ## Merge ```{eval-rst} Instead of returning cluster assignments, :func:`bioframe.merge` returns a new dataframe of merged genomic intervals. As with :func:`bioframe.cluster`, using ``min_dist=0`` and ``min_dist=None`` gives different results. If ``min_dist=0``, this returns a dataframe of two intervals: ``` ```{code-cell} ipython3 df_merged = bf.merge(df1, min_dist=0) display(df_merged) bf.vis.plot_intervals(df_merged, show_coords=True, xlim=(0,16)) ``` If ``min_dist=None``, this returns a dataframe of three intervals: ```{code-cell} ipython3 df_merged = bf.merge(df1, min_dist=None) display(df_merged) bf.vis.plot_intervals(df_merged, show_coords=True, xlim=(0,16)) ``` ## Closest ```{eval-rst} In genomics, it is often useful not only to find features that overlap, but also features that are nearby along the genome. In bioframe, this is achieved using :func:`bioframe.closest`. ``` ```{code-cell} ipython3 closest_intervals = bf.closest(df1, df2, suffixes=('_1','_2')) display(closest_intervals) ``` ```{code-cell} ipython3 for i, reg_pair in closest_intervals.iterrows(): bf.vis.plot_intervals_arr( starts = [reg_pair.start_1,reg_pair.start_2], ends = [reg_pair.end_1,reg_pair.end_2], colors = ['skyblue', 'lightpink'], levels = [2,1], xlim = (0,16), show_coords = True) plt.title(f'closest pair #{i}') ``` ```{eval-rst} By default, :func:`bioframe.closest` reports overlapping intervals. This can be modified by passing ``ignore_overlap=True``. Note the closest pair #2 and #3, which did not overlap, remain the same: ``` ```{code-cell} ipython3 closest_intervals = bf.closest(df1, df2, ignore_overlaps=True, suffixes=('_1','_2')) for i, reg_pair in closest_intervals.iterrows(): bf.vis.plot_intervals_arr( starts = [reg_pair.start_1,reg_pair.start_2], ends = [reg_pair.end_1,reg_pair.end_2], colors = ['skyblue', 'lightpink'], levels = [2,1], xlim = (0,16), show_coords = True) plt.title(f'closest pair #{i}') ``` ```{eval-rst} Closest intervals within a single DataFrame can be found simply by passing a single dataframe to :func:`bioframe.closest`. The number of closest intervals to report per query interval can be adjusted with ``k``. ``` ```{code-cell} ipython3 bf.closest(df1, k=2) ``` ```{eval-rst} Closest intervals upstream of the features in df1 can be found by ignoring downstream and overlaps. Upstream/downstream direction is defined by genomic coordinates by default (smaller coordinate is upstream). ``` ```{code-cell} ipython3 bf.closest(df1, df2, ignore_overlaps=True, ignore_downstream=True) ``` ```{eval-rst} If the features in df1 have direction (e.g., genes have transcription direction), then the definition of upstream/downstream direction can be changed to the direction of the features by `direction_col`: ``` ```{code-cell} ipython3 bf.closest(df1, df2, ignore_overlaps=True, ignore_downstream=True, direction_col='strand') ``` ## Coverage & Count Overlaps ```{eval-rst} For two sets of genomic features, it is often useful to calculate the number of basepairs covered and the number of overlapping intervals. While these are fairly straightforward to compute from the output of :func:`bioframe.overlap` with :func:`pandas.groupby` and column renaming, since these are very frequently used, they are provided as core bioframe functions. ``` ```{code-cell} ipython3 df1_coverage = bf.coverage(df1, df2) display(df1_coverage) ``` ```{code-cell} ipython3 df1_coverage_and_count = bf.count_overlaps(df1_coverage, df2) display(df1_coverage_and_count) ``` This plot shows the coverage and number of overlaps for intervals in ``df1`` by ``df2``: ```{code-cell} ipython3 bf.vis.plot_intervals( df1_coverage_and_count, show_coords=True, xlim=(0,16), labels = [f'{cov} bp, {n} intervals' for cov, n in zip(df1_coverage_and_count.coverage, df1_coverage_and_count['count'])]) bf.vis.plot_intervals(df2, show_coords=True, xlim=(0,16), colors='lightpink') ``` ## Subtract & Set Difference ```{eval-rst} Bioframe has two functions for computing differences between sets of intervals: at the level of basepairs and at the level of whole intervals. Basepair-level subtraction is performed with :func:`bioframe.subtract`: ``` ```{code-cell} ipython3 subtracted_intervals = bf.subtract(df1, df2) display(subtracted_intervals) ``` ```{code-cell} ipython3 bf.vis.plot_intervals(subtracted_intervals, show_coords=True, xlim=(0,16)) ``` ```{eval-rst} Interval-level differences are calculated with :func:`bioframe.setdiff`: ``` ```{code-cell} ipython3 setdiff_intervals = bf.setdiff(df1, df2) display(setdiff_intervals) ``` ```{code-cell} ipython3 bf.vis.plot_intervals(setdiff_intervals, show_coords=True, xlim=(0,16)) ``` ## Expand ```{eval-rst} :func:`bioframe.expand` enables quick resizing of intervals. Expand supports additive resizing, with ``pad``. Note that unless subsequently trimmed (with :func:`bioframe.trim`), expanded intervals can have negative values: ``` ```{code-cell} ipython3 expanded_intervals = bf.expand(df1, pad=2) display(expanded_intervals) ``` ```{code-cell} ipython3 bf.vis.plot_intervals(expanded_intervals, show_coords=True, xlim=(0,16)) ``` ```{eval-rst} Expand also supports multiplicative resizing, with ``scale``. Note that ``scale=0`` resizes all intervals to their midpoints: ``` ```{code-cell} ipython3 expanded_intervals = bf.expand(df1, scale=0) display(expanded_intervals) ``` ```{code-cell} ipython3 bf.vis.plot_intervals(expanded_intervals, show_coords=True, xlim=(0,16)) ``` ## Genomic Views ```{eval-rst} Certain interval operations are often used relative to a set of reference intervals, whether those are chromosomes, scaffolds, or sub-intervals of either. Bioframe formalizes this with the concept of a `genomic view`, implemented as pandas dataframes, termed viewFrames, that satisfy the following: - all requirements for bedFrames, including columns for ('chrom', 'start', 'end') - it has an additional column, ``view_name_col``, with default 'name' - entries in the view_name_col are unique - intervals are non-overlapping - it does not contain null values Importanly a `genomic view` specifies a global coordinate axis, i.e. a conversion from a genomic coordinate system to a single axis. See :ref:`Technical Notes` for more details. Bioframe provides a function to assign intervals to corresponding intervals in a view, :func:`bioframe.assign_view`, a function to construct views from various input formats, :func:`bioframe.core.construction.make_viewframe`, and a function check that viewframe requirements are met, :func:`bioframe.core.checks.is_viewframe`. The following genomic interval operations make use of views, though also have useful default behavior if no view is provided: :func:`bioframe.complement`, :func:`bioframe.trim`, :func:`bioframe.sort_bedframe`. ``` ## Complement ```{eval-rst} Equally important to finding which genomic features overlap is finding those that do not. :func:`bioframe.complement` returns a BedFrame of intervals not covered by any intervals in an input BedFrame. Complments are defined relative to a `genomic view`. Here this is provided as a dictionary with a single chromosome of length 15: ``` ```{code-cell} ipython3 df_complemented = bf.complement(df1, view_df={'chr1':15}) display(df_complemented) ``` ```{code-cell} ipython3 bf.vis.plot_intervals(df_complemented, show_coords=True, xlim=(0,16), colors='lightpink') ``` If no view is provided, complement is calculated per unique chromosome in the input with right limits of ``np.iinfo(np.int64).max``. ```{code-cell} ipython3 df_complemented = bf.complement(df1) display(df_complemented) ``` ## Trim ```{eval-rst} Certain regions are often best avoided for genomic analyses. :func:`bioframe.trim` trims intervals to a specified view. Intervals falling outside of view regions have their filled with null values. ``` ```{code-cell} ipython3 view_df = pd.DataFrame( [ ["chr1", 0, 4, "chr1p"], ["chr1", 5, 9, "chr1q"], ["chrX", 0, 50, "chrX"], ["chrM", 0, 10, "chrM"]], columns=["chrom", "start", "end", "name"], ) trimmed_intervals = bf.trim(df1, view_df) display(trimmed_intervals) ``` Note that the last interval of ``df1`` fell beyond 'chr1q' and is now null, and the last interval now ends at 9 instead of 10. ```{code-cell} ipython3 bf.vis.plot_intervals(trimmed_intervals, show_coords=True, xlim=(0,16)) ``` If no view is provided, this function trims intervals at zero to avoid negative values. ## Sorting ```{eval-rst} If no view is provided, :func:`bioframe.sort_bedframe` sorts by ("chrom", "start", "end") columns: ``` ```{code-cell} ipython3 df_unsorted = pd.DataFrame([ ['chrM', 3, 8], ['chrM', 1, 5], ['chrX', 12, 14], ['chrX', 8, 10]], columns=['chrom', 'start', 'end'] ) display( bf.sort_bedframe(df_unsorted) ) ``` Views enable a specifying a sort order on a set of intervals. This flexibility is useful when the desired sorting order is non-lexicographical, e.g. with chrM after autosomes and chrX: ```{code-cell} ipython3 display( bf.sort_bedframe(df_unsorted, view_df) ) ``` ## Selecting & Slicing Since bioFrame operates directly with [pandas](https://pandas.pydata.org/) *DataFrames*, all typical selection and slicing operations are directly relevant. ```{eval-rst} Bioframe also provides a function :func:`bioframe.select` that enables selecting interval subsets using UCSC string format: ``` ```{code-cell} ipython3 display( bioframe.select(df_unsorted,'chrX:8-14') ) ``` ## Flexible column naming +++ Genomic analyses often deal with dataframes with inhomogeneously named columns. Bioframe offers a way to set the default column names that are most convenient for your analyses. Default bedframe column names are stored in ``bioframe.core.specs_rc``. ```{code-cell} ipython3 bf.core.specs._rc ``` If the dataframes we wish to work with have `['CHROMOSOME', 'LEFT', 'RIGHT']`, we can either pass cols to operations in ``bioframe.ops``: ```{code-cell} ipython3 df1_diff_colnames = pd.DataFrame([ ['chr1', 1, 5], ['chr1', 3, 8]], columns=['CHROMOSOME', 'LEFT', 'RIGHT'] ) df2_diff_colnames = pd.DataFrame([ ['chr1', 4, 8], ['chr1', 10, 11]], columns=['CHROMOSOME', 'LEFT', 'RIGHT'] ) ``` ```{code-cell} ipython3 bf.overlap( df1_diff_colnames, df2_diff_colnames, cols1=['CHROMOSOME', 'LEFT', 'RIGHT'], cols2=['CHROMOSOME', 'LEFT', 'RIGHT'], ) ``` Or, we can update the default column names: ```{code-cell} ipython3 with bf.core.specs.update_default_colnames(['CHROMOSOME', 'LEFT', 'RIGHT']): display(bf.overlap( df1_diff_colnames, df2_diff_colnames, )) ``` ```{code-cell} ipython3 # setting colnames back to default. bf.core.specs.update_default_colnames(['chrom', 'start', 'end']) bf.core.specs._rc ``` bioframe-0.4.1/docs/guide-definitions.rst0000644000175000017500000001135714420777331017735 0ustar nileshnilesh.. _Definitions: Definitions =========== Interval: - An *interval* is a tuple of integers (start, end) with start <= end. - Coordinates are assumed to be 0-based and intervals half-open (1-based ends) i.e. [start, end). - An interval has a *length* equal to (end - start). - A special case where start and end are the same, i.e. [X, X), is interpreted as a *point* (aka an *empty interval*, i.e. an edge between 1-bp bins). A point has zero length. - Negative coordinates are permissible for both ends of an interval. Properties of a pair of intervals: - Two intervals can either *overlap*, or not. The overlap length = max(0, min(end1, end2) - max(start1, start2)). Empty intervals can have overlap length = 0. - When two intervals overlap, the shorter of the two intervals is said to be *contained* in the longer one if the length of their overlap equals the length of the shorter interval. This property is often referred to as nestedness, but we use the term “contained” as it is less ambiguous when describing the relationship of sets of intervals to one interval. - If two intervals do not overlap, they have a *distance* = max(0, max(start1, start2) - min(end1, end2)). - If two intervals have overlap=0 and distance=0, they are said to be *abutting*. Scaffold: - A chromosome, contig or, more generally, a *scaffold* is an interval defined by a unique string and has a length>=0, with start=0 and end=length, implicitly defining an interval [0, length). Genome assembly: - The complete set of scaffolds associated with a genome is called an *assembly* (e.g. defined by the reference sequence from NCBI, etc.). Genomic interval: - A *genomic interval* is an interval with an associated scaffold, or chromosome, defined by a string, i.e. a triple (chrom, start, end). - Genomic intervals on different scaffolds never overlap and do not have a defined distance. - Genomic intervals can extend beyond their associated scaffold (e.g. with negative values or values greater than the scaffold length), as this can be useful in downstream applications. If they do, they are not contained by their associated scaffold. - A *base-pair* is a special case of a genomic interval with length=1, i.e. (chrom, start, start+1) - *strand* is an (optional) property of a genomic interval which specifies an interval’s orientation on its scaffold. Note start and end are still defined with respect to the scaffold’s reference orientation (positive strand), even if the interval lies on the negative strand. Intervals on different strands can either be allowed to overlap or not. View (i.e. a set of Genomic Regions): - A genomic *view* is an ordered set of non-overlapping genomic intervals each having a unique name defined by a string. Individual named intervals in a view are *regions*, defined by a quadruple, e.g. (chrom, start, end, name). - A view thus specifies a unified 1D coordinate system, i.e. a projection of multiple genomic regions onto a single axis. - We define views separately from the scaffolds that make up a genome assembly, as a set of more constrained and ordered genomic regions are often useful for downstream analysis and visualization. - An assembly is a special case of a view, where the individual regions correspond to the assembly’s entire scaffolds. Associating genomic intervals with views - Similarly to how genomic intervals are associated with a scaffold, they can also be associated with a region from a view with an additional string, making a quadruple (chrom, start, end, view_region). This string must be *cataloged* in the view, i.e. it must match the name of a region in the view. Typically the interval would be contained in its associated view region, or, at the minimum, have a greater overlap with that region than other view regions. - If each interval in a set is contained in their associated view region, the set is *contained* in the view. - A set of intervals *covers* a view if each region in the view is contained by the union of its associated intervals. Conversely, if a set does not cover all of view regions, the interval set will have *gaps* relative to that view (stretches of bases not covered by an interval). Properties of sets of genomic intervals: - A set of genomic intervals may have overlaps or not. If it does not, it is said to be *overlap-free*. - A set of genomic intervals is *tiling* if it: (i) covers the associated view, (ii) is contained in that view, and (iii) is overlap-free. Equivalently, a tiling set of intervals (a) has an initial interval that begins at the start of each region and (b) a final interval that terminates at the end of each region, and (c) every base pair is associated with a unique interval. bioframe-0.4.1/docs/figs/0000755000175000017500000000000014420777331014516 5ustar nileshnileshbioframe-0.4.1/docs/figs/overlap_inner_1.png0000644000175000017500000000624414420777331020315 0ustar nileshnilesh‰PNG  IHDR<i>Óů÷sBIT|d pHYs  ŇÝ~ü8tEXtSoftwarematplotlib version3.2.1, http://matplotlib.org/Łň:Ú IDATxśíÝL•őÇńĎ„#ç`h–EÄsNE”˛LŁE©´¦–.ŤR—ć?„z»ÔőG?tsˆµ» L§«?lά**$‡râJ:jsřcÝÂÂa(ßűÇgQ ëÜÓýŢ÷k;Ű9Ďó}žçsž?ŘgĎ÷ 8Ś1F u€`ŁđëQx€ő(<Ŕz`= °…°ŘK/˝¤‘#Gţׯ{âÄ 9ŐŐŐýׯ}#ĘĘĘäv»C@Qxüé’’’ÔÜܬѣG‡:JŻäççë»ďľűĂçY˛d‰V®\)IZ·nťžzę©€ýÍÍÍš={¶ŇŇŇ®ůóç˙ákč `ˇŽŽ]ąr%d××Ŕ˛ żGßľ}Ýý—/_VoţFkMMŤ&Mš$IŞ®®öżďtéŇ%ĹĹĹ©¨¨H™™™,4€ß…ÂŮĄK—ôüóĎ+!!AN§S&LĐŢ˝{%ý§$%%iÓ¦MÇ|óÍ7r8:|ř°$©ĄĄEŠŹŹWLLŚ&Ož0]Ô9%ł{÷nŤ9R‘‘‘jllě’Ą¶¶V÷ßżâââÔŻ_?egg«¦¦&`ŚĂáĐ›oľ©ÜÜ\EGGkđŕÁ*//÷ďںu«˛łłĺt:•––¦O?ý´ËÎŚźţą‡ŞŞŞ”™™©ččhŤ;Ö˙ý:•––ęöŰoWtt´~řa•””Čápt{{Ę+IEEE>|¸úöí+ŹÇŁÂÂBµµµuąť:§ËĘĘ4tčPEEE©µµµŰ­­­:rä&Nś¨ŽŽŽ€ňÓÉăńčŤ7ŢĐüůó5`Ŕ€nĎŕĎEႬ°°PŰ·oWii©ęëë•‘‘ˇx@ÍÍÍ ÓăŹ?®ŠŠŠ€c***4bÄŤ3FĆĺććęôéÓúřăŹU__Ż»ďľ[S¦LQssł˙¶¶6­^˝Zożý¶Ž=ŞÁwÉňóĎ?ë‰'žPuuµ:¤ŃŁGëÁÔ?ü0®¸¸XÓ§O—×ëUAAž|ňÉ.ëq µtéRy˝^M›6M3fĚĐéÓ§»˝+V¬Đ«ŻľŞĂ‡ëć›oÖś9süONjjj´páB-Y˛D^ŻWÓ§OWqqqŻîqOy].—JKKŐŘب’’m۶Mk×®íöś>źO[·nŐŽ;ÔĐĐ §ÓyÍq‹/Vll¬n˝őVµ··+99Yýű÷WKK‹&L ŘŘXť:uŞWß@AóË/ż>}úwß}׿íňĺËfČ!fŐŞUĆcŚ$süřq˙””łvíZcŚ1UUUĆĺr™‹/śűÎ;ď4Ż˝öš1Ć-[¶I¦®®.`Lqq±IOOżnľŽŽ3pŕ@óţűďű·I2 . wß}÷™9sćcŚńů|F’YłfŤ˙•+W̰aĂüß©sLmm­1ĆĎ>űĚH2{öěńłwď^#É|˙ý÷ĆcfÍšerrr®űôÓO›ž~Lő”÷Z6oŢl†ę˙ĽeËărąüź‹‹‹MDD„9sćL·×6ĆóçĎźĎg,X`,X`|>źY±b…ÉËË3>źĎř|>ÓŢŢŢĺ¸ÜÜ\3oŢĽĎŕĎÁ šššÔŢŢ0µ®¬¬,=zT’4jÔ(eddřźňwîśžy楦¦ę¦›nRLLŚÎť;×ĺ DVVV—ĎťyŻ5&,,L™™™]Ć\mÔ¨Qţ÷·Ýv›?“$;vLăÇŹßŰu.=ĺÝąs§˛łł5pŕ@ąÝn-_ľĽÇ§.‰‰‰JHHčńÚqqqňx<ÚżżňóóĺńxT[[«GyDŹGŹçf-`3 "ż]›2wî\ᩨ¨Pvv¶JŞŁŁC ňz˝ŻcÇŽiőęŐţsDEE)<<ĽŰkΛ7OµµµÚ¸qŁöďß/Ż×«ÄÄDýúëŻAř†]őéÓÇ˙ľóűwttőšЬYł”““Ł]»v©ľľ^kÖ¬Q{{{·Çą\®Ď]QQá/ ŤŤŤš9s¦Ün·ŞŞŞTPP ·ŰÝeş@hPx€ :t¨"##µoß>˙¶+W®¨¦¦FwÜq‡ŰěŮłuüřq8p@Ű·o×ÜąsýűĆŚŁłgĎ*,,L)))Żî~łčZöîÝ«çž{NąąąJOOWLLLŔ: NčňyÄ×cŚŃˇC‡şŚů=ŇŇŇT[[°íСC˝:¶»ĽűöíÓ Aôâ‹/jܸq6lNž­ŠŠ eeeé“O>Ń|pĂ9+&&F111úöŰo5uęTĄ¤¤hëÖ­ş÷Ţ{•’’rÍcĽ^Ż$éÂ… “×ëUddd@ˇ^DŘ®­­Í,[¶ĚÄÇÇ›ČČH“™™iŞ««»Ś{çťwŚ$“——×eß… ĚŇĄKÍ ALź>}Lbb˘ÉĎĎ÷/tľzŃm§«-{˝^3~üxăt:Í!CĚ{ď˝gŇÓÓMqq±Ś$łiÓ&“““cśN§IJJ2eeeţýť ’ËËËMVV–‰ŠŠ2©©©f÷îÝ]Ć\˝hůüůó×ÓyŤÓé4=ôٰaq:ťÝŢßžňcLQQ‘‰‹‹3.—Ëäĺĺ™’’’€ĹĐ×Z´ÜÝbď« >ÜTVVcŚ™2eŠ)//ď6ďŐŻÁ÷úZnŚĂ^ü5-˙7‡věءG}ôšűOś8ˇäädŐÖÖjěرAͲ|ůrUVVę믿ľîžň€Ä”€żőë×kÚ´ir»Ýެ¬Ô[o˝ĄuëÖ…: PxüeÔŐŐiÆ jiiQrr˛^yĺ-[¶,Ô±X€)-`=~-XŹÂ¬GáÖŁđëQx€ő(<Ŕz`= °…XŹ-­ZĄ ?ţę@Pőëß_Ż®]ę‚„Â]řńGÝţô?BŞS˙ü{¨#"¦´€ő(<Ŕz`= °…XŹÂ¬GáÖŁđëQx€ő(<Ŕz`= °…XŹÂ¬GáÖŁđëQx€ő(<Ŕz`= °^D¨௯_˙ţ:őĎż‡:Týú÷uAä0ĆP‡&¦´€ő(<Ŕz`= °…XŹÂ¬GáÖŁđëQx€ő(<Ŕz`= °…X/"Ô€ő·•+őŻź~ u Xb@l¬Ö¬[ę‚„Â˙Y˙úé'•<<+Ô1`‰Ĺ»¶…:€ bJ XŹÂ¬GáÖŁđëQx€ő(<Ŕz`= °…XŹÂ¬GáÖŁđëQx€ő(<Ŕz`= °…XŹÂ¬GáÖŁđëE„:pŁÄĆjń®mˇŽK Ť uAä0ĆP‡&¦´€ő(<Ŕz`= °…XŹÂ¬GáÖŁđëQx€ő(<Ŕz`= °…XďßŰrtđ 5LIEND®B`‚bioframe-0.4.1/docs/figs/overlap_inner_0.png0000644000175000017500000000643014420777331020311 0ustar nileshnilesh‰PNG  IHDR<i>Óů÷sBIT|d pHYs  ŇÝ~ü8tEXtSoftwarematplotlib version3.2.1, http://matplotlib.org/Łň:Ú vIDATxśíÝkP•ŐÇńßÄ­€a‘b‚ j^2SĄ,Ci´Ľ45ZZÎä]ÇŰňr:äńŇEg|ˇ6MJ¦ŁŐ ÇR&Í *$XŽ:Ąmµ!E§SX:Ę˙Ľ8Ăž¶(p(Î>gőýĚě™˝÷óÖú?Ď ć7ĎZ€ÇĚL vÍŤŔśGŕÎ#đçx€ó<ŔyŔaŻĽňŠzöěů_ź÷ěŮłňx<*))ůŻĎÝyyyŠŚŚ všŔź®cÇŽşpá‚úôéěVeܸqúöŰo˙đ8łgĎÖâĹ‹%I+W®Ô‹/ľX§fďŢ˝zđÁĺőzŐąsg­_żţĎ  aŔA555şqăFĐć U\\śÂ‚ÖâU«Vj×®ÝmŹ_ż~]Ťů­EEEźFڎA©´´T‹-Ňś9sôÁü± Đ ĐĚ~ýőWÍź?_±±±ňz˝8p öďß/éßÁ¤cÇŽZ»vmŔ9_ýµ<ŹŽ=*Iެ¬Ô´iÓÔ®];EEEiČ!ËEµK2;věPĎž=®“'OÖ饸¸XÇWLLŚÚ´iŁôôtÔx<­[·N#GŽTëÖ­Ő©S'ĺççűŹ×.WmÚ´Iéééňz˝ęÖ­›>ýôÓ:5µ=îŮłGŹG………JMMUëÖ­ŐŻ_?˙őŐÚ°aî˝÷^µnÝZO>ů¤rrräńx꽿 ő+I .T×®]ŐŞU+%$$(++KUUUuî_­ÚĄŔĽĽ<%%%©eË–şzőj˝}\˝zUǏנATSS~j­_ż^íŰ·×ÚµkŐ˝{wMť:U“&MŇęŐ«ëŔGŕšYVV–¶l٢ 6¨´´T˝zőŇăŹ?® .($$DĎ>ű¬ Î)((P÷îÝŐ·o_™™FŽ©ňňr}üńÇ*--ŐĂ?¬ˇC‡ęÂ… ţsŞŞŞ´lŮ2˝ůć›:qâ„:uęT§—źţYĎ?˙Ľöíۧ#GލOź>1b„~řᇀşěělŤ5Jeeeš6mš^xá…:űq˛˛˛4wî\•••iذa=z´ĘËË뽋-ŇkŻ˝¦ŁGŹę®»îŇ„ üONŠŠŠ4eĘÍž=[eee5j”˛łłuŹę7""B6lĐÉ“'•““ŁÍ›7kĹŠőŽéóů´iÓ&mÝşUÇŽ“×ë˝eݬYł­{îąGŐŐŐJLLT۶mUYY©*::ZçĎź÷_ăđáĂÎĎĚĚTII‰Ş««u­šČ4›_~ůĹZ´haďĽóŽ˙»ëׯ[çÎťmÉ’%ffvěŘ1“d§Oźö×$''ŰŠ+Ě̬°°Đ"""ěÚµkcß˙ýöú믛™ŮĆŤM’•””Ôdgg[Ź=nŰ_MMŤĹĹĹŮ{ď˝ç˙N’M™2% î±Çł &™™Ďç3I¶|ůr˙ń7nX—.]ü×T[S\\lffź}ö™I˛ť;wúĎŮżżI˛ďľűÎĚĚĆŹo™™™óNť:Őú1ŐPż·’››kIIIţĎ7n´˙çěěl ł‹/Ö;·™ŮĺË—ÍçóŮäÉ“mňäÉćóůlѢE6věXóů|ćóů¬şşÚĚĚştébK—. 8ďŢ˝&Éľ˙ţűçĐt<ášŃ™3gT]]°´Ş´´4ť8qB’Ô»woőęŐË˙”çđáĂ:sćŚ&L Iúâ‹/tíÚ5Ý}÷ÝŠŚŚôżŽ?®3gÎřÇ kp“đĄK—4}útĄ¤¤čŽ;îPTT”.]şäQ+--­ÎçÚ~oU˘ÔÔÔ:57ëÝ»·˙}űöíý=IŇ©S§4`Ŕ€€úÔÔÔzÇklżŰ¶mSzzşâââ© Ôąć›ĹÇÇ+66¶Áącbb” jܸqJHHPqq±žzę)%$$(!!á˙f/ŕ2$żß›2qâDŕ)((PzzşIަ¦F±±±*++ xť:uJË–-óŹŃ˛eK…††Ö;ç¤I“T\\¬5kÖčŕÁ*++S||Ľ~űí·f¸ÂşZ´há_{ý555Í:çˇC‡4~üxeffjűöí*--ŐňĺË\BŠhpě‚‚=yň¤ĆŚŁČČHjÚ´iŠŚŚ X®Ś‹‹SEEEŔ SLLLÓ.@Łx€f”””¤đđp8pŔ˙ÝŤ7TTT¤űî»Ď˙ÝsĎ=§Ó§OëСCÚ˛e‹&Nśč?Ö·o_UTT($$DÉÉÉŻú~łčVöď߯9sćhäČ‘ęŃŁ‡˘˘˘öŐ:tčPťĎÝ»wżmŤ™éČ‘#ujţÝşuSqqqŔwGŽiÔąőő{ŕŔučĐA/żü˛ú÷ďŻ.]şčÜąsMîó÷j÷ -]şT ұcÇ”““Łääd}ůĺ—ţ˝HµŇŇŇ´k×®€1víÚĄ~ýú„A>žłÍ(""B3gÎÔK/˝¤%&&jÍš5ި¨Đ¬Yłüuńńń2df̡ĘĘJ=óĚ3ţcúčŁFť[_ż)))*//WAAŇŇŇôÉ'źčý÷ßorźżĄ¨¨(}óÍ7ĘČČPrr˛6mÚ¤G}TÉÉÉuęg̡uëÖiţüůš>}ş8 ĽĽĽ?­őö&"ŔuUUU6oŢ>ŢĽ^Ż=ńĶzőjóz˝őŢ߆ú53[¸pˇĹÄÄXDD„Ť;Örrr6CßjÓr}›˝oÖµkWŰ˝{·™™ :Ôňóóo[»gĎ{ŕ,<<Ü,77·Ńóh:ŹY#ţš€ż ŹÇŁ­[·ęé§źľĺńłgĎ*11QĹĹĹęׯ_łö˛`ÁíŢ˝[_}őŐmkę$–´üYµj•† ¦ČČHíŢ˝[ëׯ×Ę•+ÝxüĎ())ŃęŐ«UYY©ÄÄD˝ú꫚7o^°Űŕ–´€óřµtŕ<p8ŹŔśGŕÎ#đçx€ó<Ŕy༿ôż–X¸d‰®üřc°Ű€CÚ´m«×V¬v€›üĄĎ•Ô˝S˙ě6ŕóoý=Ř-n%-ŕ<p8ŹŔśGŕÎ#đçx€ó<Ŕyŕ<p8ŹŔśGŕÎ#đçx€ó<Ŕyŕ<p8ŹŔśě‚©M۶:˙ÖßÝҦmŰ`·¸Ź™Y°›hN,içx€ó<Ŕyŕ<p8ŹŔśGŕÎ#đçx€ó<Ŕyŕ<p^X°šęo‹ëź?ýě6ŕ;ŁŁµ|ĺĘ`· ™xđëź?ý¤ś'Ç» 8bÖöÍÁn@3bI 8ŹŔśGŕÎ#đçx€ó<Ŕyŕ<p8ŹŔśGŕÎ#đçx€ó<Ŕyŕ<p8ŹŔśGŕÎ#đç…» ©îŚŽÖ¬í›Ýqgtt°[ĐŚç}>÷n÷Ĺ9ç^,†a01—‘.`¸x€éx€éx€éx€éx€éxÜŇöíŰĺçç÷—Ć´µµÉb±čäÉ“ĂRÓź}üńÇňőő•‹‹‹222ţ•}¸·xÜVŻ^­čččż<®˝˝]ńńńZ»v­ZZZ”’’2 Őýóş»»µzőjËŐŐU‘‘‘#]`jŕ×ŰŰ«űů÷C›››ŐŰŰ«ččhMž|XµµµĘĚĚÔ;CěělIRJJŠ–-[¦Ĺ‹«µµU­­­š?ľ¤˙˝{÷޶¶V;wîTnn®233%IË—/Waaˇ$©¬¬L­­­zřá‡oşFnnnęěěTbb˘ĘĘĘtňäIM0A111‚IzzşRSSućĚyxxčůçź×믿®ĚĚL•••©»»[oĽń†ł˙×_­U«V)!!AçÎťÓŢ˝{•źźŻ·ŢzkďĂÎ0,"""Ś'žxÂąíp8ډ'111ζ«WŻ®®®Ć‘#G Ă0ŚO?ýÔ1c†áp8ś}z{{ OOO#//Ď0 ĂHOO7¬V«qéŇ%gźÂÂBă0~ýőWg[qq±!ÉČÎÎňÜáááF\\\żăX´h‘1uęÔAŹs÷îÝĆ„ ŚË—/;ŰöďßoH2Nś81č¸ÔÔTcѢEÎíŘŘX#**jĐţ×íÚµË>}şsűôéÓ†$ٱ±ŃŮvł5ş™ŽŽĂĹĹĹřć›o Ă0ŚĆĆFC’‘••ĺěsôčQC’ńŮgź9۲łł ›ÍćÜ^°`±yóć~s6›­ßz&>>޸m?wÎ:˘i 0ąŕŕ`çc‹Ĺ˘|PŹ>ú¨łÍŐŐUv»]żýö›$©˘˘BŤŤŤ7n\żyşşştţüyç¶ŹŹŹ&MšäÜ®««Ó”)Säíííl›7ož\\ţw(s×ÖÖ*..®ßóááájhhôkkkÜďŢ™đđđý˛˛˛ôÉ'ź¨ąąYW®\ѵk×4uęÔAç˝.??_|đÔŃѡľľ>őőőÝvÜź×H’Îź?Ż 6¨´´Tż˙ţ»‡‡.\¸ĐŻßŤŻŰő9n|Ý&Mš¤ÎÎNuuuiěŘ±Ş¨¨PYY™Ţ{ď=g‡Ăˇ+W®čŇĄKšc†îßxOÝ×ç?ííň}ióH—÷” {6Žt ÷>c†îßxOqI žu¤ Iăív]Řłq¤Ë€{Ęx»}¤K¸'đ3t˙Ć{Ęb†1ě{A\ҦGŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦Gŕ¦÷_¶,Ó{gŘIEND®B`‚bioframe-0.4.1/docs/figs/df@.png0000644000175000017500000000617114420777331015722 0ustar nileshnilesh‰PNG  IHDRĐ!\ŮsBIT|d pHYs  ŇÝ~ü8tEXtSoftwarematplotlib version3.2.1, http://matplotlib.org/Łň:Ú ×IDATxśíÝ}h×użÇń×lI™Ö˛4mK¬4[f™Q&QPˇVtŚRÂXŃ-Ý\ÝP!uţ:ĄI÷YD”$vă?ó˛˛R!ÁŇ»ˇ$‘rŃě[w–©íüqÎép‘ĺ>pĺ÷7}<ţŰóµ÷>ýí§«ëěěě Đ%=Ş݉€€ h(   €€€ h(   €€€ h(   €€€ h(   €€€ h(   €€€ h(   €€€ h(   €€€ h(   €€€ h(   €€č¦ÚÚÚRWW—-[¶üéŰĚž=;Ç{löŢ{ď455ĺ–[nůË·`ű4ŔNlăĆŤyŕňÍ7ßdĹŠYĽxqîąçžŞgtk Ü}÷ÝillLź>}2lذ,^Ľ8IňŰożeúôé9ôĐCłß~űĺĽóΈ ’$'ź|r’¤ˇˇ!˝{÷ÎoĽń‡÷{őŐW礓NJĎž=ÓŘŘ–––,[¶lÇ}`;! P±5kÖdćĚ™yë­·ňĂ?äĺ—_ÎŕÁ“$?üpćÍ›—×^{-ź}öYöÝwß\sÍ5I’ĄK—&I:::ňăŹ?fĚ1Űýµ–.]šáÇ˙m Ŕ® ľę»şÝvŰ-›6mĘęŐ«ÓŻ_żßă9I{ě±Ěś93MMMI’©S§fĐ A™3gNńŻ3kÖ¬¬\ą2O<ńÄżk:Ŕ.©®łłłłę»şgź}6Ź>úh>řŕŚ?>÷Ýw_<đŔôęŐ+őőőéŃă˙żařË/żäŁŹ>ĘćÍ›sđÁgóćÍ©Ż˙ëÇCćÍ›—+ŻĽ2‹-Ę#ţî`§& jČ÷ßź+ŻĽ2őőő™3gN† –YłfĺÄOüĂŰ~ňÉ'ů$Iňő×_§µµ5IŇŻ_żôčŃ#üńźľď%K–¤ĄĄ%Ď?˙Ľxř7ĐŰ´iS¦L™’ý÷ß? ČW_}•iÓ¦%I®»îşL0!ăĆŤKź>}r 'dĹŠI’^˝zĺ¶Űnˉ'ž†††,_ľüďűŽ;îČwß}—3Ď<3˝{÷NďŢ˝sĆgěĐŹ`gă)PŔ#ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4¨ŻzP­˙ĽőÖlčč¨z;‘ľ ůŻ»îŞzF·P‹_>°}vq::ňčL®z;‘üsnŐşŤZüúóůíó(   €€€ h(   €€€ h(   €€€ h(   €€€ h(   €€€ h(P_ő Z}ňŹέz;‘ľ UOč6jńëĎç¶Ż®łłłłęĐ]x ĐP@@@ 4ĐÝĐăŹ?^ő„nÁťşĆťşÎ­şĆťşÎ­şĆťşĆťvÝ ůéwęwę:·ęwę:·ęwęwÚq4ĐP`·©S§N­zĺŽ=öŘŞ't îÔ5îÔunŐ5îÔunŐ5îÔ5î´cřQŢPŔS8 €€îF.\aÆeČ!™>}zŐsjÖ§ź~šSN9%GqD†ž|°ęI5mëÖ­9ćcrÖYgU=ĄfuttdҤI9üđĂÓÜÜś7ŢxŁęI5ëţűďĎđáĂsä‘GćüóĎĎ/żüRő¤šp饗¦˙ţ9ňČ#݆ 2věŘ :4cÇŽÍ·ß~[áÂÚ±­[Ý|óÍ9üđĂsÔQGĺśsÎIGGG… köîôî˝÷ŢÔŐŐĺ›oľ©`Ů®A@w[·nÍ5×\“—^z)«WŻÎsĎ=—Ő«WW=«&Ő××çŢ{ďÍęŐ«ł|ůň<ňČ#nő|đÁ477W=٦]wÝu9ýôÓóá‡ćÝwßuŻ?±~ýú<ôĐCYąreŢ˙ýlÝş5sçέzVM¸ř⋳páÂyÝôéÓsÚi§eíÚµ9í´Ó<0ňż¶u«±cÇćý÷ßĎ{ď˝—Ă;,Ó¦M«h]íŘÖť’˙yé•W^É A*XµëĐÝÄ›oľ™!C†äCIĎž=3yňä´¶¶V=«& 80ŁFŤJ’ôéÓ'ÍÍÍYż~}Ĺ«jS{{{^xá…\~ůĺUO©Yß}÷]–.]šË.»,IŇłgĎ444TĽŞvmٲ%?˙üs¶lŮ’Ť7ćŔ¬zRM8ůä“Ó·oßy]kkk.şč˘$ÉE]”yóćU1­ćlëVăĆŤK}}}’ä„NH{{{Ójʶî”$7ÜpCfĚ‘şşş Ví:t7±~ýútĐAżżÜÔÔ$ » ­­-ożývFŹ]ő”štýő×gĆŚéŃĂofÝşuéׯ_.ąä’sĚ1ąüňËóÓO?U=«&566榛nĘ A2pŕŔěłĎ>7n\ŐłjÖ—_~™&I /żü˛âEÝìYłrĆgT=Ł&µ¶¶¦±±1G}tŐSvzţÔd§őăŹ?fâĉyŕ˛÷Ţ{W=§ć,X° ýű÷÷_mÇ–-[˛jŐŞ\}őŐyűí·ł×^{ůVűźřöŰoÓÚÚšuëÖĺłĎ>ËO?ý”§ź~şęYÝB]]ťG »ŕÎ;ďL}}}ZZZŞžRs6nÜ»îş+·ß~{ŐSv ş›hlļź~úűËíííill¬pQmŰĽys&Nś–––ś{îąUĎ©IË–-Ëüůó3xđŕLž<9K–,É\Pő¬šÓÔÔ”¦¦¦ßż‹1iҤ¬ZµŞâUµiѢE9řŕÓŻ_żěľűî9÷ÜsóúëŻW=«fpŔůüóĎ“$źţyú÷ď_ń˘ÚöÔSOeÁ‚yć™güec>ú裬[·.G}tśöööŚ5*_|ńEŐÓvJş›8î¸ă˛víÚ¬[·.żţúkćÎť› &T=«&uvvć˛Ë.KsssnĽńĆŞçÔ¬iÓ¦Ą˝˝=mmm™;wnN=őTŹnĂ€rĐAeÍš5I’Ĺ‹ç#ލxUm4hP–/_žŤ7¦łł3‹/ö.˙„ 2{öě$ÉěŮłsöŮgWĽ¨v-\¸03fĚČüůóÓ«WŻŞçÔ¤#F䫯ľJ[[[ÚÚÚŇÔÔ”U«VeŔ€UOŰ) čn˘ľľ>3gÎĚřńăÓÜÜśóÎ;/ÇŻzVMZ¶lYćĚ™“%K–däČ‘9rd^|ńĹŞgŃŤ=üđĂiiiÉQG•wŢy'·ŢzkŐ“jŇčŃŁ3iҤŚ5*#FŚČożý–+®¸˘ęY5áüóĎĎ1c˛fÍš455ĺÉ'źĚ”)SňꫯfčСY´hQ¦L™RőĚš°­[]{íµůá‡2věŘŚ92W]uUŐ3+·­;±ăřI„PŔ#ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4ĐP@@@ 4ĐP@@@˙ü)ëäͱoĆIEND®B`‚bioframe-0.4.1/docs/figs/df2.png0000644000175000017500000000444414420777331015705 0ustar nileshnilesh‰PNG  IHDR<D…áďsBIT|d pHYs  ŇÝ~ü8tEXtSoftwarematplotlib version3.2.1, http://matplotlib.org/Łň:Ú‚IDATxśíÜ{HŐ÷Çń×W4/§çä…°¬T\¨ED *ç˘ËÉöGtc(+čNÁ¶ć(·ßüĂY Ś@"ÚČQJ0… djŇe›Ž¶i˛ŐŚ…©©±ąv>ż?˘‡.6»ýđ|€ŕ÷ë÷ň>~9đôűUcŚ€ĹB‚=ŔËFđë<Ŕz°Á¬Gđë<€ĺ–-[¦‚‚‚Wr®öövÍť;Wš:uę+9'< ‚@€úúz9ŽŁžžž˙ĽoQQ‘˘˘˘ÔŢŢ®~řá%L÷âÝľ}[Ű·o×ôéÓ©É“'kóćÍęíí öh^ ‚Ŕ sĺĘÍ›7OS§NU||üc·ůçź^ńTOwăĆ uvvŞ´´Tżüň‹*++ŐŘب5kÖ{4/ÁXäŢ˝{*((ËĺRbb˘JJJ٦˛˛RoĽń†˘ŁŁ• •+WŞłłS’tíÚ5ĺääH’âăăĺ8Ž˙qŘ©S§4ţ|ąÝny<-Z´H—/_ö×q]ştIź~ú©ÇŃŢ˝{uíÚ59ŽŁŁGŹęťwŢQdd¤***ÔŰŰ«5kÖhҤIŠŚŚTff¦>0çŰoż­Í›7«°°PŹGńńń*//×ß˙­­[·*66VÉÉÉ:räHŔ~ťťťZ˝zµÜn·Ün·–.]Şß˙ý‰ßł¬¬,UWWkůňĺJKKSvv¶ľřâ ť9sFwďŢŃu0ú<€EvíÚĄÓ§O«ŞŞJuuuúé§źÔŘذÍĐĐŠ‹‹uéŇ%ŐÔÔ¨§§Ç7cňäÉŞŞŞ’$µ¶¶Ş««Kĺĺĺ’¤ÁÁAíÜąSß˙˝ęëë#Ż×«ˇˇ!IRWW—^ýuŞ««K»víňźóŁŹ>Ň–-[ÔÖÖ¦+V诿ţŇěŮłUSSŁÖÖVíرC7nT]]]Ŕ¬ß|󍢣ŁuńâE}řá‡Úąs§V¬XˇôôtýřăŹĘĎĎ׆ ÔŐŐ%éAđĺää(""B :ţĽ&Nś¨ÜÜ\Ý»wŹwďŢUxx¸˘˘˘ţă0jVčďď7ăĆŤ3•••ëbbbL~~ţ÷»|ů˛‘d®_żnŚ1ć»ďľ3’Lww÷SĎ700`BBBĚŮłgýë233Íž={üËF’)++vţU«V™őë×ű—łłłÍ[o˝ĺ_öů|&..Îx˝^˙şˇˇ!fNś8aŚ1ćСC&--Íř|>˙6÷ďß7ŹÇ?~|ŘŚ1¦ŻŻĎ¤ĄĄ™íŰ·?ÓöĆîđ–¸zőކ††4wî\˙:—ËĄ3fl×ŇҢĽĽ>^_ýµNž<©ŚŚ k˙ţýÇHJJRqq±>ţřc%&&j۶m ŃńăÇőóĎ?+++K[·nŐgź}¦đđđÍYTT¤7ß|S‹/Ö‚ 4~üx­[·îą^»$EEE©±±Q)))ZąrĄ¦Oź®üü|őőőÉív?vźććf]¸pAmmmJOO×ĉýçÎť{Ž1Ć{€—‰;<Ŕz°Á¬Gđë<Ŕz°Á¬Gđë<Ŕz°Á¬Gđë…{`¤ŠvďÖí;w‚=,ቍŐ˙JJ‚=Ć0ß{\? ‡ŕÁuűÎđ®ö°Ä–oŹ{„1c4ľ÷¸~Ź´€ő`=‚XŹŕÖ#x€ő`=‚XŹŕÖ#x€ő`=‚XŹŕÖ#x€ő`=‚XŹŕÖ#x€ő`=‚XŹŕÖ öŔHybcµĺŰcÁ–đÄĆ{„1c4ľ÷¸~ŽcŚ1Áŕeâ‘°Á¬Gđë<Ŕz°Á¬Gđë<Ŕz°Á¬Gđë<Ŕz°Ţ˙ç|Ůođd_ćIEND®B`‚bioframe-0.4.1/docs/figs/df1.png0000644000175000017500000000472314420777331015704 0ustar nileshnilesh‰PNG  IHDR<i>Óů÷sBIT|d pHYs  ŇÝ~ü8tEXtSoftwarematplotlib version3.2.1, http://matplotlib.org/Łň:Ú 1IDATxśíÜihTg‡ń˙ ‰ëd9iDŤÖ7ŞT©ŕ6E*EúAÜ(mQ«Đ@„jŁÖ(‘~B@D Ą-VŠ"˘ HĐDA[—j1Ü&D$EŁVCuž÷80Ř6iěäčý^żOžăYî†Ë9&žsÎ Ŕ°” H6‚Gđó`ÁĚ#x€y`ÜŚ3´hѢ.ąWCCĆŹŻ=zhŕŔ]rOč‚@‚'NČó<µ´´üës×®]«^˝z©ˇˇAgĎžMÂtɱk×.…ĂaeeeÉó<566=€˙Áŕ?săĆ M0ATnnî_óäÉ“.žŞ}­­­úđõaÆ G$`Hkk«-Z¤P(¤üü|mŢĽůĄcöěŮŁ±cÇ*==]yyyš3gŽîÜą#IjllT8–$ĺććĘóĽřă°ŁGŹjâĉň}_ŮŮŮš6mš®^˝ż®çyşté’6nÜ(Ďó´aĂ566Ęó<íÝ»W|đzö쩝;węţýűš?ľúőë§ž={jřđáúöŰoćś2eŠ–/_®ŇŇRegg+77WUUUúóĎ?µbĹ eee©  @»wďN8ďÎť;š7ož|ß—ďűš>}ş®_żţŹď[II‰Ö¬YŁ &üë÷Ŕ›ŕ Yµj•Ž;¦ýű÷«¦¦Fżüň‹ęęęŽikkSyyą.]ş¤Ă‡«ĄĄEóçĎ—$őďß_ű÷ď—$Ő×׫ąąYUUU’¤ÇŹ«¤¤D?˙üłNś8ˇĚĚL©­­M’ÔÜܬˇC‡Ş´´TÍÍÍZµjUüžkÖ¬Ńgź}¦+W®hÖ¬YúăŹ?4fĚ>|XőőőúüóϵtéRŐÔÔ$Ěúý÷ß+==]?ýô“VŻ^­’’Íš5KC† ŃąsçT\\¬O>ůDÍÍÍ’ž_8VŹ=T[[«Ó§O«Oź>š:uŞZ[[“ó¦x38&üţűď®[·nnĎž= ű233]qqńßžwőęU'ÉÝľ}Ű9çÜńăÇť$wďŢ˝ĽßŁGŹ\JJŠ;yňd|ßđáĂÝW_}ߎD"N’«¬¬lwţąsçş%K–Ä·'OžěŢ˙ýřv,s999®¨¨(ľŻ­­ÍĄĄĄąüŃ9çÜ7ß|ăěb±Xü§Oźşěěl·oßľvg8{ö¬“ä"‘H»Çxłđ `ÄÍ›7ŐÖÖ¦ńăÇÇ÷…B!Ť92Ḡ.hćĚ™0`€ŇÓÓőŢ{ďI’šššÚ˝ţ‚ TXX¨ŚŚ ĺçç+‹µ{ž¤ř=^xöě™***4jÔ(˝őÖ[ …B:pŕŔK×5jTüĎžç)///áő¤ĄĄÉ÷}Ý˝{W’tţüyE"Ą§§+ ) )33SŃhT7oŢlwNvĄ=€®óřńcM›6MS§NŐîÝ»•——§––Mś81ţhęďĚ1CýúőÓÎť;Ő·o_Ą¦¦jذaíž'I˝{÷NŘ®¬¬Ô–-[TUUĄ‘#G* éË/żŚ‡Ë iii ŰžçýĺľX,&IŠĹbz÷ÝwőĂ?Ľ4Cvvv»s°‹ŕŚ(,,TZZšÎś9ŁAIz8—/_Vaaˇ¤çż'§ĄĄE›7oÖŰoż-I:pŕ@Âuşuë&éů·0/Üż_ Úľ}{ü?5_¸pAOź>íÔ¬§NťRQQ‘>ţřcI’sN×®]SVVV§®÷Â1c´wď^ĺääĽňµŘÂ#-ŔP(¤%K–č‹/ľĐ±cÇT__ŻĹ‹'„KAAşwď®m۶éÖ­[:räÖ­[—pťČó<9rD÷îÝÓŁGŹäűľrrrT]]­7n¨¶¶VË–-SjjçţÍ4dČŐÔÔčÔ©SjhhĐĘ•+‰D^éőKŇÂ… •źźŻ™3g޶¶V‘HDuuu*--ýÇźÔúí·ßtńâE]»vM’tĺĘ]ĽxQ]ŁGŹÖˇC‡^y&ŻĎ9ç‚ ™ř†Gđó`ÁĚ#x€y0Źŕć<Ŕ<‚Gđó`ÁĚK zĽţV—•éa4ô@Reřľľ®¨z IBđ ]ŁQ|ş1č1€¤jŞ^ô’GZŔ<‚Gđó`ÁĚ#x€y0Źŕć<Ŕ<‚Gđó`ÁĚ#x€y0Źŕć<Ŕ<‚Gđó`^jĐŕő—áűjŞ^ô@Reř~Đ#H"Ď9ç‚ ™x¤Ě#x€y0Źŕć<Ŕ<‚Gđó`ÁĚ#x€y0Źŕć<ŔĽÔ Ňę˛2=ŚF†dřľľ®¨z tźÇ:ďÖTÇuĹšúżž‡Ń¨ >Ýô0¤©z}Đ# “ř<č8Öyǰ¦:®+ÖŹ´€y0Źŕć<Ŕ<‚Gđó`ÁĚ#x€y0Źŕć<Ŕ<‚Gđó`ÁĚ#x€y0Źŕć<ŔĽÔ R†ď«©z}ĐcŔ ßztźÇ:ďÖTÇuĹšňśs.éwŹ´€y0Źŕć<Ŕ<‚Gđó`ÁĚ#x€y0Źŕć<Ŕ<‚÷?1÷ĆFíŰÂIEND®B`‚bioframe-0.4.1/docs/figs/closest3.png0000644000175000017500000012726614420777331017001 0ustar nileshnilesh‰PNG  IHDR)Iw´¨ZsRGB®ÎéDeXIfMM*‡i  ) Iv´AP@IDATxěť |TŐه'+dW!A)nX•%lˇÁE@K] JݵT\?7EŔ±¨(Z­Zk«"Q aUDAE%€,5 ! ůžw›N†d&Ëd˙źßďpö÷Ľçą3áćźsîuąD@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D N¸˛NŻN‹¨3BëĚJ´_±ľ*‹€€€€€@M$ ‘˛&^ůTŁtďŢ=ˇk×®ź™S¤S‰ůsţgwéŇĄźż>jřđ˙e•D A3˛łł üőËĎĎ2×_µ‰€€€€€€€€üŹ€DĘ˙±PN °r(…‰G:thŽÓ€@yYhhhĺÝşuYPP0™ŘňG111×eee §|±íááásrssź |}zú]•śśśĹŽĚʍ•şűŤ“Ö¬Yó,©Ëvo2ďÚă(ÎĹöíŚÉĆf_꟢.!tľ\·rĺĘ Ł " " " " " " " µ•€Ž{×Ö+'ż+Ť@Ź=L|ř " ‰•ýťÉ¨k‰pŘ"111 ±đYÚ‡GFFžHűŃűöí»1""âźä?ˇţˇččč7+śz„Ę-é^M[{b—´´´ź-"¦n ßń={ö<Öé«TD@D@D@D@D@D@D@j#‰”µńŞÉçJ%€(ąŤ ~ă5Éń^ůÂ,G±?`dG*•ł =„ÉY‰ íG_{ľäRbÓˇń“÷J÷?Á)óĘÖ<Łň|ěüB\ÄĎŁśŘ¸qă¶ěŢÜîôU*" " " " " " " µ‘€DĘÚxŐäsĄ@P\ĘŽĹ^<ň8ž=N~ď„&ćää¤Ůs"m×ăQž~űc/ÓqQ×–ä=ŽnoęŐ«—=ĎňĘ^X•Lż®ŘvvfŢÂŽĚęĎĆ/Fíĺ:ĂxVĺJóŃĘ " " " " " " " "P[ H¤¬­WN~W+V¬A¨śŔ.Č5€ß1Ń" ˘ă 'Ó–‚¸†tcě‘.ŇOIŁţ.Ňiô›Ä›Ľ“y‰Î[”ߣěÉ=ż¤á~âzl¬Ł˙o‰O˛{ňsęĆă×gÔŻeć˝ ×ňěK{۸‚€€€€€€€€@]#€Ń»wď@ëJHHháŰÇŢţ=bÄ÷ł'C°ŐÜ·O ˛ÍO<Ú·źŮeĺ1ľő*‹€@1(¦NU" " " " " " " " " "Pe$RVjM$" " " " "P:î]z+" " " " " " " " "Pa)+ŚPD@D@D@D@D@D@D@D@D@*B@"eEči¬€€€€€€€€@… H¤¬0B¨‰”ˇ§±ő™@Dl{AvOćD@D@D@D@D@D@D@D ňH¤¬<¶˛\7 Äł¬eĉA^žŮ3»f_AD@D@D@D@D@D@D@ꉔőęrk± ĐŽ±ŻS‰qÄ Ä`†Ż1fvÍľÍcó)€€€€€€€€€€+“‰űى•̮ٷyl>›×ćWňx Ľ5ND@D@D@D@D@D@D ú „áÂuÄ˙_!G¬Š`óŘ|6ŻÍo~?Uš ťŰ¤J&Ň$" UA@"eUPÖ" " " " " " "P úcóKbńbbu›×ć7?Ěó«ŇCáó>Źúö GŤxűÄJźL€T6‰”•MXöE@D@D@D@D@‚B $(VdDęSXĆcÄÄ<âłÄ·Ő†ăŔŤÄpâBâÄ`?“‡CÔyëŃEOq…¸ňůńďĐ‚Gö˝=ÔDRÚGŔDʉµĎmy," " " " "PßH¤¬oW\ë-‰@ ”ÔˇŐçŕËyÄ%•áSˇHYh<¤€ó‘H'3tEaµ2" µ€DĘÚp•䣀€€€€{g–0€ü΄ł“2—Ľí¤ś[ŕ Ç›U˛“ňČő„pŢü"ö–^5tޢđЇłŢ˛řČ~ŞňĐNĘňqÓ¨şMŔžýř8ń4â§ÄŰkUě™”Oűż"ŢNü áŕůíBCň†¸Bż =dojČwą^.(pµ÷g4$Ä•6y˙Ü‹řë§6j' ť”Ő~ 䀀€€€@iŘÎ,˘> xńjâÄUÄ×ă‰Ű•ěíŢ“‰#‰éÄë‰/Ń].(yXä“öňďClq¬Ž€Ůł  ~Ł!ó^9䪤¤·oŐá‹ć¨ý$RÖţk¨TÝž'ţ“x7ńVâĹDŰa9•ôŚŘŚ&ŢE´“ˇÄ)ÄG™ÄÂ`;(M  +pÝęú˘°!Hx'Ą+dyHhčö“2)HóĘŚ€€€€€€@ý% ‘˛ţ^{­ĽtL ´”ł&ŢKĽ†řÄ×Á Ł0dâgkâÄqÄ­Ä#‚ń¶”&PfÍ–|D‡ Vđâضh†„,  ťś5÷˘Ź+8Ť†‹€€€€€€€@!‰”…(”żL0Ľś8hω<…Ěp2ĆŇö’śömŢîâZŕ s=¬·{ó’Ë–€€€€€€€C@"ĄCB©”Ž€ ˝‰Ąë^ę^ĐÓŢ(^sB+y2‰sç“÷ÍúeÍqLž€€€€€€€Ô5)ëÚŐzŞŠ@°Ĺ`Ű+7vMäą—/FF¸¦ěMÂó/D@D@D@D@D@D@D@D r H¤¬\ľ˛.µŽ@WAż_ç ý5»Öy.‡E@D@D@D@D@D@D@j+{p•†.]ş]Ţ BâăăŹ*ďxŤLŕ×yĂ~ ÜK=D@D@D@D@D@D@D@D xŞd'Ą‰‹Ýşu»·/'߸k×®9¤ó;tčpçŽ;dggď-nI!!!ź®^˝úw˝zőjyđŕÁg°Ń‡qůť[i{†¶Wmĺ·Hě…#EBxxřń+V¬ŘćT2ľă_eÜIN]mHYß“ř™±fÍšIäw°ö~¬áŰÚŕ»|@ŞD¤DśŤ####ű§¤¤léŢ˝ű1ůůů˙NKK›ŠŘvë#Ü~Pî8ń˛Ť9~ę©§„……µĘÉÉYúă˙´lٲLĆweüŘݲjŐŞO­/ÂÝ]qqqŹ[Ţ IIIůN^i˝!Đ›•ţ® «µĎĎŇ2ôWW ¨t‘˛wďŢ1ŚW6lذí’%Kv™˙+W®Ě`GŕH˛gXŮ9Ęťź——WX¦Ţ…y!]~DŚ|ĐúZ`üję!`ţr¸Ć-Rrě8uĹĄ áěä|Št$ÂćźÄŢFëKýÔŹ#ŰŽř-öŻ·ąđ«#~Ů®ÍÓ¬žšf‡ćrň…ˇ5 ‘őyĆ_LĺŻŘ~öQÖŮ™ň픳H/%®bΛ:ôůŹÓĎvJ–8żµ`Đ;OŃ‹ýEŘ˝ÎĂö.ę"¨»ŢbćŘâĆ×Áş(Öôbű2¬m;}mg­]j Pé"%e„˛íŽ@é¬ál'y‹~"\W:|ćŰ Ń2Ĺ»Ž9ş"ÚŤvęě>CH\ç”˝R3ؕٙ#äSŮ‘9…ňpÄİń ăú1gźµ=Dۤ“Iß=ćcÎŮ˝{÷u”źĄ|&±0lŢĽŮÄÉNŤ5ęxŕŔVŘJíŮłç\ÄÍ(썢í>lv'?—ń+@­.ň đlzzúq%Í_8‰W›Ó>ţŽ%~„ÍG&°ŢÉ<-IGŻgáęK¸“…¶źĎ?=K±âĎésžËu,ÉâDj P/ÎiÍşö”wmn­‰Ąy‘‡ €W9ÁνKły÷±sqbjjęvÄ=ŰÍx˘ő‰‰‰É Üńsć>ć\CµűŘ9b`ĺS322Ž4hĐŚ^6Ć;0ŻukŤ@yFăĆŤżAĐlÍß[Ćć0çdLo"˙Ulx\ůŰĄÉĚftö7ż÷;×ćććnŁíOŘ ł¶ ÜIąŮőóçĎ˙ŚÝ‘¬Ţ;đÍ·čo›řŢĚĚĚÜńË/żÜ‡áÖ‡±ŢsîŁęk«·Ŕb¸żů÷,ú/6Ű»pÄüg‹˛°s<\L¬s!bţXtDť/MmŕrEO*ă2 3—Ë®Ó3eZíÝ,˝o1N(ŠAř Tű÷I€€€€€€T/·V™.°Ëď›M›6Ůs »#®tćB ŚČöož÷Ř’cŮ{ťzß”>_Pw G˘,\¸0Çiç¨öS‰1”‡8uĄIň×qňr꯵cŘŮ^µ˙~;ć=Őúrd}"d˙m۶µF Ľ13©Oź>Í—.]ú‹cË^ňłgĎž{ńëî}űö ˇĎăYYYß1ß:bžÓĎRĘ&, ţć/ŇŃSŔ†Í˝¦…»'M´EěĚ‚µ ŁőéĄA=`qůÍüc-K@ tŮĂNǸ\ $WK·iŞ/íÚËîsµ?®•«Ó€Á5Ă)y!ĺ đÝK\߯[ZŽ‘"" " " " " "P×TşHÉËl"šŮł_ĺ­Üpü8 ňTD<ŰôöŠ?Ň`ÇĹĹÍEäĽy×®]3x Ďťµ>€€8ń— Ä ´>Á쎣ŻÓćîŔË«Č ĄĎ Ň1Ţ^ĚĂćľŇ…óa„µ/">d/őáw°Ć·ńďtü;˘®am38—rk9iop2eýQ’wĄyĽÝŞ'ü:oŰ?(/Ľb|ő8ˇYE Ţ{e˛DĘ p” ¨ B«běö{’yć±3ńCËťkď ŕ˝ĎłíY€~˝±;**ęR:µÉÎÎţ!n'vneühÁü.[ăkŘ<˙V 0®!żŃćäřtCvWŢCy,mź!ÚQí‡RRRŇ}Ě˙ť>‡čó ń[Ú"˘ŁŁ_÷éăŻXâüĹ ‚éçÔŹggçgř»&÷2˙µě¤,˛kł¸±u¬Î^@Ô}"˙D—sa¦r>AäË`/z¸śf4LD@D@D@D@D@D@D@D śLź©ŇŔŽżcŘ­QžI'LŠw±Ňvş™^xá/ĚuıpŽx7 Ďô'˛“1Š—çDÚ!ZŇúýÍ_Ü#F„mٲĄIy™głŐŮ3I7ňú÷6ö6˘Š~ďÂĆ,—Ë®»˝SÇ^śT“CÁ€Qwk'eMľBň- ŰIąđŐG¬_EżľçŞÇěŃ»ëńúµtZB@żÖ’ UÝ<źÎ¨fż®aţ‘‹řˇ˛ÂÁŚjv~rąľ!ą‘xÄłC©«)!Y"eMąňŁĽĽDĘÄňÚ¨găÖ˛Ţ=e\łDĘ2Swę!PéϤ¬žeiÖ* `erĚăwŠö´vńŰŁôŤGŃŐTOÎ{źD˛¸ô#ŐSD ‚’+8ľľ OdˇźÔ—Ĺjť" " " " " ő‹€DĘúu˝ąZŰŃ“Lĺ°uΗëľ1ĐZZѰ/6ň=ÉuÄ#Žün®˙&×/䄇@bpĚÔy+ösWAD@D@D@D@D@ę$‰”uň˛VɢěČauďčů.xĐĺę6”LT—=•ńŰńľ‚ljÍi¸@é T÷Ď’Ň{Şž" " " " " " •B€׿ŔŰ·§މ+çĹ9 řö™ůVQ?»uëÖšxSM\g|˛gFŢŽ°čzş‚í!”#+˛‚<5\D@D@D@D@D@D@D@ĘB ^Š” 4QPPPQ]«,śËŐ·˘~˛Ć~‡P®ÉkĎ %¸:o:˙ü\źoglžËµ›Ä^ň­ " " " " " " " "P…Şä¸7»‡ĺççŰF›‡††>‰xvţęŐ«Ď# a§ßݤ¶Ű/„¶™+W®śRŔ.ÂŹ¨•úűŤ“Ö¬Yó,©Ëv"ľÝB{?Šź ć]ź’’’Ž­;¬ť¶!$ťO„……}EŮDÉ]äoĹ~jvvöeĚ…&ĺšŃĄK{Kőlb"q}îĄĎä‹úÝ…_×a'“±3V­ZőŇ„ BçĎź=ő×Rߊłü0ő‡z÷îÝ–ynĄm$mé´Ý‚˙‹ńý·°¸…ú–ԝЬYł.ç‘çÔ˛ë(|ťCęŢ~úăAŰĚ1ŽAí߲†ë#""v0ţ1ĘGŃţ*ĽGÁ§/öź˘.–ů±ŽëXkőݨź…Áz STi¸+ÓĺôËţx9¦µgZ.=<Îf”ĂDµ ůî‹%.{;˛‚ÔVöV#Pé"%˘\˘Üób72ß7a'mf“Óv9âÚhD5{¤`ý^D/[D~%ő'2fqc:R÷Báë’M<¸€öŰÉß–““ó(eł9€ş–Äkß2¦u‘~LÝ@ň#Č˙…4›Ö/—Ľ‹ĽďÍAÔ;3//ď÷ř0“r‚µ9‘ďRú_ŤÝ‘ŘČ4›˝zőúřÝwß5»c¨żšöę˙¶`Á;}ü7üú¶¤>žöA´˝ĂÚ:R×8’>Si›˝wďŢ”_ |é÷Ô™0ëřVč'őĹň osÚžaŰ5™†Ť©¬áˇ ř7‘ş‹i;ë7ź~c‰Ń碉rwÂm…â(uµ-lÄáY/q-n c–Ň{°ć˝‡;Ż ±ëPkÂ÷ë–ş,*€€€€€€€@m'PéÇ˝É.D8ű‚ť|oż{7¤CMň\űöí×ןEÝ Rw ?Ť‹ëŮá7ŹŠL„Ķ’èß@Ý ěžÜb;)_ĐÂ1×;ŚI±]‹äM0|•ü7ô{‡~=­Źî"¨LŰC©©©ŰřWĆ<šXDĽĄĎpę˙a»0m |C)çR˙Gl˝`őĚů)ů—‰WŘ.JÚéssoĄíę7‡mÝ9ÔÝGŰ<„Âţ”ż6>Ô­%ŹÖV| í111řÓ‡±«"##÷1§qlc»9éĎC×AćŮC›{}llěëíÚµKgÍwSľčZľ|ůfćŻí[ň&ć»\{mŰmYÂĂtf›+C]&˘Ű3.kKÁQE1¨+źÚň˝“ź" " " " " " •D ŇEJü¶€«˝ü·kî€KćÁ´´´ź-Ňď!ʽݍüö““'͢ż‰Š±ôKqę7RÎŕhó±VGű§Ťt?m_[10‡|ń‘rb6"ť»Ź {uď$''çyٰl'úúŤ˛lٲćKxxxˇ/ô[Fݱ©ćăŹôűѱC9ĹÚ¬L~;Ń-!âÚîĘB>‰Ëť1ľiq<đőWlśŹŕş677wsü {aľc©oOěâ°†ÇúßłgO·Oľýkaůg|žĽJ»·ĐÎôĎ>ĽP‘??śŐż" " " " " " " " UM ŇEJŕÇ:; Ł|šW~7˘ÜźŹ˛Ř‚ŔÎŔóťv„´CNŢ+ÍŔž=oŇ8vmG˘›qô{‹U`ĎW`<ܱý~elLŹ=ěůîŔŃîß÷ďß?Ú){Ň=ô;Á©‹ŹŹďA?ó!ăÔ3÷ɬo3˘ˇ˝€Ą ;*cś6Rksű­BłŤ¶BäŹ÷S$[ÄÉËét-ką±qăĆ­°7ű¶»ŞH`î_‹Ö–Ňż­í -ұvfŕţÖAüsL)âďčĂĚ„đ˛nŔd‚€€€€€€€@°TşHő˘Y/{9‹=ÇŻđrŢ^ŽsĄ# îڵ륬¬¬‰^íGdá!¶őEXڵFžý8’äűĄK—ţb岄+V@ő5˘âĹ6˙ÎÂźIź|ě,¦~0ÇŔŁě(8báËř`Ď–\DýŘŤŘúĆäíHő „V{¶ä6vwţŃě jv$éNÝ*+{Öł”ú^ô9Îl“ćÝ(Ďř¶ôYgGÎm(ľ]F9Â3n?©[pĹ®ůz¶Ç{č°ĚĚĚ•6§‰©ÔwńŚ©ÍI6ÎŹf‹ędTŕ€ŃúŃß®‘=šRAD@D@D@D@D@D@D@D š9ţ\>,Y˛d»Ç!ľ‰};âü1â^›‹Ýö’—WwďŢ˝•>;ŃҨ¶Ç–ě¨5}§p´ů+DĹťŘĘfÜE%Üđ'|ł—ňüĹl!úÝbÇľ˝‡!´>†ŕřOÔ4沉îçGöéÓg őŻsĽ{31źú丸¸“’’ň°7 ˙ ˝Ť5EŰX|˙1°‡·m„Ň5č·xiĎDC;žnĎ”,KxŤ1—Ŕdľ…“·go^dÂ)éŘ=ť¶vNö—ń”?#ýźĚßkMŘdţł`°€I˝w~–ŇšÔw1ÎXTĂěíŢ`ç8<Č˙Ń,Ů)[j»ťÝ”ŢőţňmضS˝A Řł]ž~}Ž1bD¤o'„ÇŁLô­·˛ç8úÇŻ}űÚz|އűvń[6«G쌵:oßđ?,Üü:ĄFę&đ@u; ůE@D@D@D@D@D 4ŠgĄ1âŻâ[#vě}KźvŚúv+ŢĚńdŰą§ " " "PyL¤ôű•Ę›Z–E@D@D@D@D@D ôŽŘyWúˇĄëąfÍ;ÂÜŤŢiDË–@Y:vę%" " " " " " " " " " " " µ™€Ž{×ć«'ßE@D@D@D@D ¨ôť”őĄ–*" " " " " " " " "P)ËMCD@D@D@D@D@D@D@D@D@‚G@"eđXĘ’€€€€€€€€@9H¤,4 (J`Ŕ€ ŠÖ”ľTPPŇż˙čŇŹPĎÚJŔ>']şt‰¨­ţËoĘ# ‘˛ňŘʲ€€ÔzJˉżZHzzúÚ®]»ţ_ ~ľíŚą“¸v÷îÝvďŢ}o{m({Ö°“ôĎ5Ĺß &ř˝ÇëÖ­Űąřűq@i}61ą´}}ű%&&F1×Ű|N–…„„,ł˛oźŞ(ăĂSöy&í]óiŇ/}Wő¨oÖ¬YÓAçç@ë ľ5P?ďö>}ú4ÍÎÎţKLLL‡äää<ď¶Ú”_˝zőŁ0:ş¦řŚ/§-X°`ţ\XśO´ßŠŕHĽ†ë[ękƸµ\łÄĄK—ţRś]uYYY`ľźoż~•ÝƵş™u´Żěyd_D@D@D@D ě$R–ť™F€€@˝"€¸†°ó8‹îG~;;á’{^1ÔϤ®k~~~ éÍT-˛z ě–k’™™9“lwb&ă>‰‹‹—””tqă8p)uÖg)»Ű\ť×Ż\ąň ÚĆ`k$cv—ŇçĘ­3{!fţĘ.@Ľn&†Ó–‡8zíňĺËż¦~,u±ÄˇÔ/& %íK|pŐŞU/÷ěŮłáÁ§`ó,bsęż ĎUgű)ű řw%ý煉UŢ˸…ŚďwŤřÔŤľĆ 1›8vo’şě;;H_ Ű>Ř˙%22ň†”””-|Ĺcm>ĺ0ÔÖů(vçPő ¶#żśÔE[mçZľGŹ±ąąą×Ŕň·ľÂ°ů“‘‘ń(ÝLH4öy\“{°źyčС'(wâš}]· ŚÝ›±»’zu%ňáz~„Ť“̞ǧźaçw×,ý†Ň"ńYâĺĶÄĹřó(ź‘Ťř0ç_™ł>†1îňvťsÉ ńńń§äĺĺMÇîĺŘÍ`7oWÖúť ‘ÄTÖh¬+XO<.#vÁ'[Ëzě^dFi;‰şÇń1†b[ňÓi{š5̢܉ř&m¶K· m/Ńvy—?ţ>[6VAD@D@D@j"żGj˘ĂňID@D@D Ę D3ăŹ#&îŤD0ą»WŻ^-Í ęĆ ţô@<1ÁĎú†}űö]Cáç–-[vâzˇw€Çë·@iăXď=$S×›u›¸ţĽŐW$ „vdíďÁóř”Ŕg÷7|Ěć#ÂhK˘m‰€€@Í"°aĺŻćBĘ•·ŮŤwa W.ˇďě… ćđŚÄCôźNÝŔ@ăĽŰj޶2Í$„§5–G°Úť––v"Óµm§Y «÷„Ĺžąö2·‰”{ÎK}1˙鄳çĎź˙yŰuyş3°¤Ô|ĆĆD«µÖçÜsĎÝC2Ľ¤ţN=bRc#€}luË–-ŰAb‚Ôůž>Ki? ^"^‰8ř«í2ő´•č+ŁíČü¨ďÂŕ„¶8Ű}éç7aľŽĚż©„NvmžZ±bĹOÖŽ ř/DÉ€"]yů”ŕCa5~ đ"kK·Ďźç(›PnˇD>ÖČőĘEč» >˘Ř[nQÝÚ?«Ě×8ß1ÄçřDÚŽCcźKđmąřo˘¬­#1úꛩZAŚ#ZđÇŔßgëđhý+" " " 5Ś€Ž{×° "wD@D@D ¦@(ÉóVU"‰Gň“>í–Ü;­/vblĘušú˝3ß®]»> żű)¤Ç’ć8mR;Şm;Úľtú‘řR ü6ź·9c<"čV§\RĘZŰ3¶pýÖĎĂŔŽ ›ŕ»•]‘żÝżODŞssrrV ¬]‚0k;ýúJźKm‡ĺ9¬˙EĆ- ÎŽGŰnI;:^çFřĺˇÖÝ;„ł s»Sa‚´“wRĆš_EByů1Rrˇđ6Âx3ćÚďéZ"ăËô{6Ć?ż}?#ą´5 ĆŇîźI횼Îs7"žMŰĄ›6mšÂnÇ.ŢźëWĆ`;9pĆ`7„ëbeň‘¬É|›MjGĚ-<Źżi‡ł<'!3ÓűzŮŽOç”Č ŔgË1­TD@D@D@jí¤¬Q—C΀€@Í&Ŕsđš!¬\Ä®żŹJáébޤ޶~{ˇ/¶ł2ŮĘĺ  0aé·-Z´¸ßłËr?âŽ[đ d“nÉô‰ŹŽŽţÜvµ5mÚt FŢăŘA×—tżő®#ď>vLŰńN="So'ďIMĐkgy„ÇĆ–bűs’Ó`v˘•©oBݰűÄĘŘë€Ő„ť–K•€Íkřčě K¦K±ľÚa|ěĘŽÇď7 ańjëKtĘ[§bť[H¶”ąŁ<Íß3GGOŢ7ů±ô~ěGZ;űáă^ťŇ˙ÎuĘ ÎÖŇđq†•5u_ü7Ńőâ»fŔßµäsv&]>çóń\\\ÜűäŁa[ä:S÷uçcÇ˝c’˛;×6mÚěeěŘŽ¦2dË–-M·ţ—kź›ÎŢuţň\‹/g€Ă¦¶ ×Öăâ÷·´çÓŢĚ>“(ďĄÉc­[±Áź-Ç}ŽgCť˛R¨n)«ű h~¨ů~@ĚŘ@üÝl‹wĆ#m0·lfQżaĺŠÓ-oÇd­ŤăŮ·!¤ ˇĎ'Żţ|+ĆN¶6úÝÇŽż7G¶Ë‹Ž F:ÖĘôoâŐö;gÇ~IžIOO˙ »‹éc/ěI$˙gk÷ű^úĆ" îŔîÇ<·/Aëdď1”B¨»Ő»ÁęCĆŮńđµĚcóÚqé1&:ý°ý6íŁhKĆľ˝\&‘˄˫`¶€úy¦¦ „3`ç>¶N˙Δ—Ҷţ˙fîß4oŢüułéĎ×;v´ÂGc˝ÜÑꄭ‰Ž/ö|EěN†ďwŘ~Źö÷yáŤ[`µůč7”ţľ˘ť]Żq´7c÷ŕŹŘ]MţK|˛gş>ÝGfmcw%» ZC >ô˙”n&¤ŢE~ cm'liĂôviřÓŞqăĆîçŹúăřlB¦ pËYËBňöâśyiP‘kŤř#vŔg&sL7‡ČŹâözĘö˘·hŐy^Ąµ[ŔÖ“řň·ĂĄŔ˙zřĽ/ďc7™ńd|ľŤd‡ćA渌şçiű’¸‚ü3ŮÍYöÇ%~¶»ôE~®˝LÉ©S*" " " " " " " •Aŕ`E°‰čÝ»wLyěŮB˘{wayĆ7ĆvšOŵŞłu0¶MqýěŤÉž]{G4ŰnPv%ÇX;ľ{D°±´ąwSú6"Ľ¶¶ľőVĆź¶Î.;ßvľ2×ŃMnę;Ć)ŰJ›×);)ăLd,"Ä:m–Ú:lťĹůËŘl_\[ >Ţs”&Ď<“7Sb±Ěýń±¶ŇĚăŰÇ®…]ßz§ »Nř3×)—65>°mf×…ń;|Çٵ˛6ßú@ĺ Jül™?ř±Äßg(ĐÜj`8âŻčÁ4.[" " " ŐJŔDĘÂvŐę‰&Ż1L(cw§‰l?s4ü>gWlU;ČâŰăÇŮľó˛Cpťí65‘’ťśŰíH»oźę,#ěMd§ăl|ÜVZ?óëÚÄz~eĚĺäże'§{Whim»bëĹě¦Ě†Żű}°íËž€€€”•€űy8e¤ţ" " " " µ“/!ÚŤ8•ȱüsXAá‹iŞz5G·ç‹6÷ť!/Úę8ý6/^ÚçŰ^ÝeD˝2ďPFÔ|›őţŽ5µ%>Çň˙VëRěą›Őę€&¨7Ę,¦Ô2Z¨€€€€@Ť" çÔ¨Ë!gD@D@D@D@D@D@D@D@D ţHY˙®ąV," " "P xżŤĽ._K¨áôLĘ~䞀€€@zzúZ^–ňĎ"ś {őÁĽîdť·‚ŰÓŐ˝fü™Ĺs<˙Ŕó,˝źŐyľ}îĎ7Ɲɸ0.ťľ‰ţúŞMD@D@D@Ş‹€DĘę"ŻyE@D@D@D  đ&ďQĽŔekNYë§BĐ{ďčš´Ţ >Ž7?_źLÄŚŹŹż4??˙©˛ŚS_¨J)«’¶ć*&€Č6“]t]¨bHofúEŽ ]ştiĂîş‘”űO =1ójŇ“xËö=Ô=NĽÁÚč·122rxJJJzbbb“ĚĚĚ™Ôw'fŇöI\\ܸ¤¤¤Ě7†ńfsq)mPnÓ+99ůWć<‰şÇ©‹ˇÝŢv=-ŕ.Ĺ’ćĆkÓ¦M)$Ăyó¶[„í֭۩ػZ;>]Fňg˘˝Q<±öú+V¬éŃŁÇÉąąą/áC4őŹ‘^Bz2ýĆ`ë]Ňë8ĆŚiFE|šů^¤~(ů‰Äg‰—ŰĂőQŢ꽑Ľ‹>v®dló…’šŻslŤűöíh}Ľ×b9ţüŕ]ç›/Éß~Ĺ•KňÇúŇV®ëUÜ<ŞôLJtÔ&" " " µśâ— n=Âľ@‹ö^uóL$kѢĹ0úu˘í±¶ěÔűů%ÄŰôLt‹%ţtđŕÁkI]i×üܲeËÎîFľÍćÍ›o·6ěĚ´ůČÚśßPîGş*++«ç#ÂČ'±p<}úFEEŮ1ä±6·ßPŇś&ŚbólŢäŔćőÄ…Vfa›#""â<|éFß;l_°¶ĺË—mľŇľ„úľ­¶Ö1Äß[»ż€čş6Wcłd"6&O0!{ó÷!ń† üF§’˙®n!!2Šąîg|o óWŰ\đŤÄN¬oÄ~ck·€ť‹á5Í"â#‡k]®’üqÚKJýůS‘ëUŇ|Ş’h'eIdT/" " " u@BBB‹ýű÷źŠ@–¸páÂĎRóś%#¤eg˛ăđ'«C{‡r‚ĺŃ.Amă¶Sq:uOĐT(šY?D¸·-E śÄŘ˝iii'Ňď8DÂ1Řsegg[s.m&ä}k…’‚ż9 ˙ĘŽČnrrrBű† ţťf¶ňňňDP÷”͉óŮ®Q’g>Ęď›ŕŮ»wďOń+ŕ±xv…fcďÖ>áĐřE°Ë´!é>Ř îEŰujöٱů~\gyǏ؉ú.;>R˙Ś×Yľ§ý–÷řć}]6ŃgąµSČéçϧOq©?*r˝Š›Ku" " " "ŕŹ€DJtÔ&" " " u”Ą j;SSS8KDü*D]ÖáQ˙ű—±…¶ČÎN×·ţ×z8W |‡–Kňß"™Ż\׫и2" " " "PJ…7˘ĄěŻn" " " " u€Çw°ŚŁ·Ü;íyRç—ri‹äF[_;âŚČh;+“­ě/tčĐá[ćČGřj†Đć”÷2¦PŔó3>ĐśO2ö/Řľ±Ďž—é„Ĺdzsôú{Ż9óđ»p˘Ó±„tőí¬ F…Ç®­Č\OsĽ;‰5|E9ŠcóŢ÷Ö&‚ÚoŻ!şźqiG¨»wďޕݓß1v–=”¶x˘ 1w7>ÎöŤÎł,­Źźŕ×ćŮźím<>D"Gxň%úSšëeëá3tëlâÇ75‰€€€@@%ţĹ;ŕHu¨ńf!Nu#Ć!ŞĹ#N=€`5žcľ˙ˇm4 °g†rü¸5ůMĄY"ŕmě|ťńCćĎźß»ë)ď°±a‹hyuM°»Ćęh» áí;NMűeřňcMüŰO>‹ăÚWZŢú–üÍicŘ ¸ ›ąŘËpvnZ=BŕbüxńŔ[I?Ç/{ŃŤ=3ŇŢx} ;_%ok¸€öqřúľŢGť;P~›ăéÉŘŽ‡QúôŦQ–uΤţ/Ěą™ňŽG'1hgč´ bwçé´­lܸ±‰‘®;v´ÂŢtěH¸•Ľ˝ĚÇ^´SˇČvnĹź4ć]ŤźQ¬ËŽź§řó§4×kË–-vtţ¬sö¦Uh," " " " " " "P' XÓËŽ€€@" ăŢučbj)" " " "P<§1•gK¶bĚ™ŢĚ‘ä^Ő!PšĎ»¶cĎÍ}ýGě‹ö­«éeXľÍ‹…öŐt?áB¬˝@é~Ň`“ :H@Ç˝ëŕEŐ’D@D@D@D@D .đ~a]\źÖ$" " " " " " " " "PĂ H¤¬áH€€@0 0 A0ěȆ€€€€T‰”•AU6E@D@D@D †HOO_Ë‹rţ݆ąU#Üá…/µâžë7‹Őě&ýŃ+ž"}ĎdÜŇä@}Ő." " " ŐE@/Ω.ňšWD@D@D@Ş@XXبđđđ­U8e­ áî´ LĂŮ kĂĽí|ÜŞU«ž/‹Ż«WŻţ<>>ţŇüüü§Ę2N}E@D@D@D * H¤¬JÚšKD@D îÝ»'đ6ßüR}âÁTä’ż·¤ô?›_Ľ xłěâ’ú¨^ę3ľG3ykvWľ'1¤7Ăb‘ĂÝumxőHĘý'Đž‰y5éI|ďˇîqâ ÖFżŤ‘‘‘ĂSRRŇ›dffΤľ;1“¶OâââĆ%%%dľ1Ś7›»Ki»€r«{sřŻĚyuŹSC{[ňÓůŽ?MľÄ€Í4NŁďtouëÖ­/㟦< ?Ň6‘ř,ńrb[âbÖńčĘ•+7’w1§­űJúç0.”ôQćśCý}Ô˙ŘŽürRmY´ťŰŁGŹ“sss_˘ÍÇH/!=™.cřyónĎž=ňfô)”Ď"6§ý ÚŻ˘m?¶N nuÍHŁOcóERků;‰˝ÉĽ'íÓI/¦|âcßčččĚ}űö ´~Ţ5.ÇîŢuľysúöő-3¶X>ÖŹ¶2_/_ű*‹€€€@iÔŠŁ-ĄYú€€Ô= 4Á/đ~Ĺ „—1ü˘\Ý[˝V$Á!€8f˘ZŹím•şy|ÇB[´h1Ś~ťhűA¬-BŕżČ/!ŢĆîˡ¤±Äźĺ®%u!¤]CňsË–-;<¸ů6›7oľÝÚ°3Óć#ks~Cą骬¬¬ž#FŚ#ź„ 7ž>}Ł˘˘Îdţ±w6w‰ é·ßLŘtáß§$ )…ťyä?$ŢŔĎŚßăÓ©ä¦ÍýłA5Š9ďG$퍝^Ěybëjú¸; 1s4ŮUćłEúśKٵ|ůňŻ­ĚĽKßÖ8Ś!ţŢÚaqëČ O lÎ]”ÇZsm‡ŰŐ6ö±1Ů9RNŢ„Ý$l^Iţ† ^Dţ?äű`3’4Ö7bŁ±ŮµŔş.†×4‹Ź®ő?§Ó§¸Ôźň^ŻâćQť€€€" ť”©]D@D Ň đ‹¶ýň˙ ń(~źăLťť}żôçQžÁΩ‘üâ>™hż¬„p˘ÇpĘç{Đ^€(0‡ťOOPľ> =ý®b÷VżĐDý«ÔŮΩFÄI ¶óĘĺŮ˝9…ö8Šs±};c˛m·ţŘńČXD„Eřr;ł2lŚ‚Ôv -öďß*‚]âÂ… s<ë±ď›;đ™Ď&Î\±bĹOVÁ÷ôĘ –ç»r ߇Ń6Žh»mGŕ4ŠfÖ‘îmK#""&1voZZÚ‰ô;Îţ¸€=ßqkÎĄÍDľo­Pž€/ř®ľh»¨," " " F@"Ą>" " ŐJ1!–_Ö_Ŕ‰řĹű{~é6!1ל˘Ü’r®íôA`x–ÝDý›ŘmôOvrÝČ/úO’Ž@ńÇ$ߤŹíb˛Y],›bwBć%”_ÄΉŘE‚hĐ‘ş7^§_ýć`ăÄš·±÷2v®ł6Ḉ~,ń#D•Găw'QAj=JÍv¦¦¦pĂ÷Łđ” ź v”Úřě¦iŇö|˙vnqWcř^•x_Éß[_ľW­ĂD»Ů¤žńĎ36Í“÷—ä1&Ěé€!NŢ“şnXž?V4ŁoˇŘ‡Xz)ĎděČwýĆ˝(¸€ş‰Ö—şú–č»őq²eË2Éé)Gľ§ě"˙«µaߎĽŰQě!¶ÎP~¶8B°uq‚ĂŔ]ćgĐ!üÉrť˙ ×Fţs;ňî´9ićt†¦%ńÁ˙Hć+ďő*´ŻŚ€€€”†@áŤhb ‰~@IDATi:«Ź€€›Â_~ţš_’ßäďµä_ňťă&"„!dÄ#Rđ‹üĐNő+“i»¨źčx;$M<É`Ě7´µq쑟Ćëi·ăˇ™,mú’ßEýlŰ……Ť™#±a8őëccc_o×®]:uwS®/ÖŔOH€Ă;čt4âÖiÖ™?4á;r~Ŕ‡;,FtmY;ĆĚwÓvV&[Ů_čС÷̑Ďwłß9w Ľ—1…‚bIă±˙_úžhíć+Éě4đęď-i3Áńâ»ÖfG–Ů-ݕݓßńÝźĹwůjŞă­Íĺ-Ří†y”•-ņ=GŇo`îd:Äó W5mÚtvá4‘ö§™/‰şŻčĹ‘ú€÷ÝüLŰŤ©ŮľŃy¶¦_‡ŔâoNÖi»5Ű› D"›Čę—Oi®—ńĺ3t™çšI(»‰Sj#€¸Ń‘_¬W; D,çé‘NŮR;RĘ/ÁٍźrŕŔéô_řţűďŰ®ÉÍÖîle":Nĺ—ď~¤vlŇâ§ť_ŇÝÇV=ĺ,ěŮ/éťčłÂéPą…üćF{Ž;ţě´ŃĎĹË2ŽEHŘîÔ)šN€Ďň,>ËÝq|†ăů~<Ŕwa<ÂţhŤ˙ölĂPvŰqĺMĄYbţměV|ťńC8ęÜ»ëřîŢac9R=–ďâÔ5Á®űűGŰmoźŘ‘iÚ/Ă—×»‡îűÉgńÇ…+-oăK Řü7mź`ł ľÚ±ęWűŘ[éó 6±{útć^ٸqc#];věhĹC¦3Ěľď[ÉŰKkÜ»(­ÝáŔ¸ÉüĚřŽt íMř9s%beu¶łŰÖwăDZŽ÷X‡=2ÂvMŢKß×ńem_eddŘËs¬m#éłř;{a®Í”7đł$‰¶!6¶2B 9ŮşŇđu5ľDῇOńǧ4×kË–-öÂĄŔÝvšO«ŚµÉ¦€€€€€€T:4řĹŮ˝ăÉ&Ł| ĺĎ,O:•řĺy\ŚĄü‚OÝ{¤ď{ĘoQĺÉĎ%˙ 6:X™ü߉ą‚_ß`×ĐUž~¶Ë-R×–şéětÚÔ«WŻ–Ś9‡ş—}íů”“?Űí°˝•¶[Ř•G:‡ú‡đ«ŁEÄĆŽ©‡ůĺţtv Y»‚Ôz|—.ćs~ q=y{yM[Žîl´@ľ îg0ęW\;ßÓ˙z×óťmĎîĚł˝ë,ĎĎu|Ý;2ůŽÚł‹Śsúó˝=äů;UERÚlçf‰9ěŘąĹ2Ďs*íY•E?{ ¨8˘ľH§ Íéi·źsG„@||Ż—cŔZ>?Q zť>NµR(3‰”eF¦" " Á$`â"ä„Ę5€űů%Ú-FxĎażó‹đdęRHí—ţ¦´>¤ź˘MŘQN{žÜ4~Yž‚ŘrĎËł˙ăŢŁÜŃú•řĹüKĆŢOűzŇ4úo'Ž˘ţgĘăńë3Ň8ÖiĎŃ»VeI$U_ 4hĐ •ďJ+|?“Ď÷fŽH÷â3ž]ká»fǰíw‘Ŕ÷;şHE1|›gĚşßś]LłŞ*‘?+wbţ~ŇJśE¦E@D@D@D@D@D@D Š F”ćhdBBB _—ě袽ĽÁę9ěČęB‡ď߲ÍO<Ú·ŢóŇŤc|ëkIYÇ˝kÉ…’›" " " " " " " " "PW H¤¬«WVë:F ´Ž­GË(†Ŕ€S­*¨ôLĘqä„€€€T.ôôôµ<ŻőĄŐ«WO«Ü™*ß:븊G;Lb¦§xâÔĘź±řěń{ANŤ<÷÷žíů.ľîrĹ÷ç`÷S.)…őť´ÝF|ĎÎÓ%őS˝€€€T”€DĘŠÔx¨ÂÂÂF…‡‡űfçZŕ~ËţĆ3d[©¬†ŢÚ>}ú$.]şô—jľLS"P.ŰyeDgĆ<Ę:Źx^oYí¨ż€€€" ‘2!µ‹€€€@-&€Ŕ4“]s]yA} éÍ,e‘ł„ľ6W#)÷#ž@{&bćŐ¤'±óîę'Ţ`môŰ9<%%%ť—U5ÉĚĚśI}wb&mźÄĹĹŤKJJ:Č|co6m×ŢRÚ. Ü*&&ĆŢţ+sžDÝăÔĹĐŢ–üôŇěĐëßżtFFĆĂô?—qűé ˘«$věŘŃ<''çěµ~NŹŹ?ť·‰_Ť-;߉ř&öţLjdMyä]Ś˝™ö•”çRlGy>vcI».açâMÖF—‘Ř|öFóÄăëW¬Xá~=6¶˙@ÝÍÄpĆĺŃvíňĺËż¦~,u±ÄˇÔ/& %íK|pŐŞU/Ó>{G >î`ÎĹ…%dđçŻŘë†-{Ů7äŻb\n Ý «KâczöěŮ7ÇO!{±9¶żđŘÝoí " " " "ŕK@Ϥô%˘˛€«áŕůí„Aj űl{AvOćD xÍĆ 8őđDŃŢ–©›gbW‹-†ŃĎÄş¶Ú"zý‹üâmd&đĹBtş–ÔµoßľkH~nٲeçÁw#ßfóćÍ·[vfÚ|dmÎo(÷#]•••ŐsÄaä“BCCÇÓ§oTTÔ™Ě?‘ĚćövďŢýc#˘öÂfwňĎ9Jňgٲe;°ß՞ljhv,âá˝6Á¶+>ü;7Đ~ ń7:tčq&ÍW ľýĆÓĎ„Ú)ôë dź·zň)¦Ű6lxžĺ-ŇoĄµ“Frv˙Hz?© uC.R,Ç2×yô7ađüyÁÚ,Ŕ ‚ďŮfŹâLÄÔqžúcHŰŔŰÄäřż±×Ň˙"Oű±Ô›Yioem¨ďçiNÄŹS· ľFF>ćńß®e#b§Í_ŠßĹň±1|VîĂÇ ě&ŕó©Tí˘<Öź=µ‰€€€Ôo)ë÷ő×ęE Xaů_7:ď›Ć#Ţ9»ŘŞŞ#ĎTË<ĄŮ3»f_Aę%„„„W§"P=µpáÂ÷Ž@Ë#pe#*Íd‡ßOM¶sńŞă¬Ťü%´Í¶q&L8DŐtęZ›w@„{ŰĘr“gMZZÚ‰ô;qk ‚áěěělŰŤË\&bů ŚÂśĹź˝Ö‘˛ăs ÖîÚµë·f#™çvv`řŚ_mv¨Ëa—çěÍgÇâfŞVÝë$M˘ßTĆLA¸<ńp#uĄŘ^ »­Ä\|aDŕĎSĆű&dšđbíż»átsš lâm «÷„ĹŢ{±g"ĺbkŁśMb» #u…ڍ·ľËťżPçÔĺ"^^Ćś˘˘!ăZzš%ţř bM§ŰçĎź˙ůX+2¨vúK@"eý˝öZą”Lŕ+,¤  SŢÁC5:7­áEo /ąłZD RŘnŢ׉©D 6ľĆŮ5ű6ŹvAˇ~ŘżCVĽ355ő€łrÄŞÂ{CĄvétÚ®v“Ź´2MíŮaąÓicś%/ń1BĚń˝§O$}sł±÷Ľ'ŽfžO[%ĄŚ‰nҤÉ÷N;cݢž•řł‚öxĆ_Lz/ń âŚ˙̱ĹŃőÂuR—Aڰ6ÄĹ×Ů)Ů‹ţ«đńŇM›6­´Ý ÖćęÝ}ťrI©íľô´ĂoĽÖ˙<ľť3qâD÷zT? =‘9ÓIůďřb¬g|IÉ~ědyGĆz_Űt|xˉ¬Í}ýŘQŮ‘#ńv$ü(úŰÚĂY“·¸YŇ|ř—÷ĽÖů »`ď/ŃD@D@D@ę=ÂŃzOBD@Š!PŔ/G®Ř‚Đ7Ł.š·3ęâ·®*¦“ŞD b06™ř-ŃŽF>DěH|ŤĚđ*Ć̮ٷyl>›×ćWzA€Ý;XčŃě ;ÍlĎuD¤:ż”‹_ĚNŔŃÖ—ť}ˇZ¶ł2ŮĘţGŞżeŽ|„´feî@ŮvFÚî?ż~ëx&Ą}_M” a΋ÉÚŃd ţü±ť‘W·_`ě%¤GŻ\ąŇ9żÁžąŘ¦M›˝ěť¨7šÎ![¶liâ5( ď\§l»SťĽźÔÁŢ 4řŢ‹Aٱtüű-Çďď÷ěB5á±PŚőcÓŽ ˙›8Ű'ľďoڵÁŃŽ¸Î|ϱSÔúGs-}çÜC˝űŹ9|N“w|p;™NńŃŃŃźŰ:›6mşÁ®Űᑇ˙ĺł—ČNËÎŢuĘ‹€€€Ô_)ëďµ×ĘE  řĄ"¤ µ+/äŨˇó2˘‡Í»µ ŐUJCŔv&]GüŽhĎ_K"v"Ú®›}ÄĘf×ěŰ<6źÍkó›EvJQVZK!hBТ XÄtËŰŃe^b“‡4šşiÔ˝ĎnÂdň›G·ocělÂQŢČ·BŘ2ˇßĹ‘á±6uM,µHÝď¬Í^¬CżËđĺyĆ~I´]ŽĎ°+ł™µci˙˝ůŠ˝•äßcŽë)őç;!WŃ÷tćý;BŁy^O,Ő±mŽĄŹâčőzüśĂ€h/ëx–ř±ş=őF˘ ő&ŘÜA ö311Y%A"e•`®˝“ ŮsOAd[ŹXv*+Á1đîŽŮU˝Ş^˝zµĎÍÍ=Űw^|[‡Y¸đuEĺ @ŕťČ.ÚŮ\ßmA6-s" " " µ@ ťRµpIrYęu¬rXhÁˇą!®ĐO‚˝âŇí¤ a'e¨{'Ą~s ö¨öXĺ‡ÄžŐÚ˙GńDOUŤHL@5Ńä<â’ᑜ ŕą©<[˛&ĎdgâćĆŤ÷ŞŇ–ÄۦíyŚÍ}—‡xí[§rÝ ŔJťĆ¨—R« ĐNĘ `”¨ZŃÍ‹řdXë–}ď ›ěŮyIN6Ď tÄŁ˘ćCBv‡…„=Ľoî`;« !ནŇvâÚNĘą1¤±¶Ků&˘vR ¨Ě€€€€€@ U¶“ŇžÄ_K÷r¨¸vţŞÂĂ»cĘú̢âl©ND <ěą_!?ąÂóďÉž3L¸/BŤ)Ž€ˇľč<“ňfňgőLJ (€€€€€@}"P©"Ą‰‹<ý~€^Nľ1Ď=Ę!ťßˇC‡;yy˘˝·8Ř7ú”˘˙ŽgµäŇ3Řčø|„έ´=CŰ«6ޞ=»ěçňńl›ă˝źmĂřnŚ•q'7_EęXSol?‹{zEěh¬ÔL!ĽÖ»`««ŕĐmŢnß7¨ ör'Ż&>H\E|Ť8ž¸ŤXŮá8&°·Ź$¦Ż'ľH,ő 0č« µšŔ€xŢ,]#ÖQÓü©Pä„€€€Ôqˇ•ą>´ÁŮŘ?;22˛?"ޱ<řĽĺÓŇŇҦÚŰ+Ă-"<öˇ~—S4hPżřřřV999Ki[Çó’:Úř°°°ż ÎŔ®˝yŐhżËç¤ŢĄÓO©@„şň BBľ Ź =÷ŔŰĂb%P–ťş–—€ ‚Ď;§Gż%šhYYĎŁ3»fßć±ůl^›ßü@ …şG€?®ţ“¸ź·yÇyŻ.==}-ő˙ç]W™ů &ř˝­jĘłVxťÉĚ7&—e<÷±÷3f‚÷Ę˙µ·d{×;ĎIÄÇítS°mËž€€€@Ąí¤ěÝ»w "ă• 6l»dÉ’]ćěĘ•+3¸1˛ť*¶cĆ•””äţ%A2ź‡Ą–©wqgG\µj•ýéŚ_Mý ÄĘ_ś:DĘCާ®¸q3śł§HG2ćÓ?boŁőĄţ ęÇ‘mGüű×Ű\řŐżl×ćiVĎÍ?#€.'_lčŮłgCŢJů¶.˘CCâGĽ!ó*@źĹ‹©źąo%ަm=ĺY¤=óvĂ8Ýž_™ËC⟢KßEřzť‡Ý]ÔEPw=cßB¸KYA‚N $?ěäěů·ćݲ Š@@™ô°”öóŃDĂ{‰×M<±Ý•Á Ł04•Řšřqq+QAę4î3.ă^ě÷ťqď3Šűś*ůpOtÚ‚ ¦ÚîőŠ UéO±”˘–źsŻxi~~ľÝł•)pw÷{ďrźk;Ç«$ÄĹĹ]ĘFÜG~Č}úP6 쨒‰5‰€€€”’@Ą‰””]¸Ű?k;É[ôéşŇá3ßNÜËĄx×1GWnňF;uzź!$®sĘ^é ä3ŘŐŮ™#äSąˇ´_~‡sŁ~6ža\?ćLăĆÍÚ˘íR;ţ÷î1ÇsÎîÝ»ŻŁl/u8“XlŔîÍ4t"vĺFż)缬¬¬K(żH<Űç1× ¤kIí—âŻČßŔĽöËńUÜOÁźć´ÍÇź±ÄŹó˘µßIß–¤Ł‰×Ów;©‚T ”•bXFE ôě3x9qń â)Ä`†“1–F´G†¬¦aŮšF€ű¤Są·F<Ž{‰C¤¶cŘ gRîĘ˝F ©ÝÇ,ň4Ůcuć’oÇů´ŮNíŢn ÷r7Ůfąď±{©łÍiű‚¶«hŰoă{%uw“Ť îĄm!m㩿ŹňíČ/'uŃ/ Áď\Ëűó'11±IffćLşu'f2î„·q›7oĆ˝Ô=Ô=NĽxmąçž’’’NŮo0Ń˙f0Ć~Îl#ţqIjjęnŘŮ#lÎFÄlâT|}“Ôo`Ř`:ĺÝ wŔ`±Ő1×?(ż Ç®ĚsŔ»_Isâç,úŮ}ć›řôgŇ6Řy nłń®‰çŹúo`'„űôGrĄŤSšB ´iŤí=ĺµĎMWk⯥ßť›Ľ«śČM¶{—f1ăöq7‘Áí/Ń~˘őa§cĺ>ö—lnf÷1§í.hcmÜrâ5äÔŚŚŚă9‚>Ö^V_R`üÄÉ+¸56±ß`ÂmËĆźNŰ<ěŘ/}™÷¦ý‘ݦ¶Sčőˇn8ÉúŘŘŘ×۵k—Ži7řZ›ĆÍ·›cvV¦®Ńż" "P§ €Ř›ř@WiöĚ®Ę •ąšE!°÷ ńęo>“űŽł¸?IsĽäžb ÷&=¨3‘ŃP¨7˙ę˙Hz?© ’C¬ĺ}ÜłdĐ'»§Rµ‹˛ű„"}·&cóRěźu6ĺţDý'qo3šě*ň=,ŇÇ-PRçňçĎľ}ű®ˇËĎ-[¶ěĚśöˇ6”·ł¦‘_BĽŤű°ˇ¤±ÄźđńZRżÁsÄú|ŁE‹±ĚovC¸ź<ڲ晴ÝM}g?4„ňc0=ÉŻQą/=–ľ±Ţ­ĽĆ}CţCNŕLóŞsgKšn íâoxÄQgî'ĎdŔÝ˙Ť ôwM܆=˙pOű/l täŢ{Śň" " " "PÂ+kn@7°“Đv/ Ü…p3uś‰sE| ÜČmŕĎ-$z7ńWâfÜ$´#ÔVO?{‘ÎcŢ}JČďpęńa7ů†VĆÎŻÜlžO|™Ĺă©Ú„Í0kcž;ůKóßČ®ź?ţ—ܤ>Hţ-k+.ŕo&kžŠ­~¤‡°c±đH7Îî5ęÓě·ŮYşté/ÜĐgy|kOěÂqśź­lľö×ńcńĎDLżÜŹĐż" "PçäyEµg"ĚďĘŕÓ§ô]Z†ţę*A!Ŕ=„ Y¸WšCt!LŮ.Çe1ŽŤµŚÝjcŘĺgĎoµ0ű•ŤŘšÍ=’•íŹÓÍ-Cý@ĆĚá^o­•Ď=÷Ü=ô±?ÂV(`÷îFŰ ~¶ër:uO`ôćË&Îä4ÍO6 ~˝C9!Đ„ś&ú5@¸{6î?#ţ]É=ŕOöÜNÄĘĆÜŻ}lvěx4v“đá|Š&2–蓍]÷®R§u9NŢRNęÜĂÂż€éąôu7š“5ĺ4nÜřĎ®ČÍ0°?´ŘóE7KĽ&năžlťŚű‰krUîëęÝ®Ľ€€€TJ)ŮřͦM›ě9Ýą±]é,ĐŽżp#öožáÓ’É˝N˝oJź/¨»Ä÷íŽü•ř)ÄşÚÜÉ÷WR™›:÷Ť§o;7›vśđZDŐQŤ5Zµ˙~;ć=Őú!PÚË|úo۶­5ÂâŐI}úôin˘˘Ż+ÓgóŘńŁ~Üobí§:Ä«ožĺ™çKŽ·ÁQĆl—Ý`š i¶Á¬p÷$Ç›{žki7ţůÖOAD@D ÚD1ó?íËŕÁvúÚî+÷ŘĘ0N]E B¸oćŢâo#”˝ďMĽ›ćążIńt˛cÜď!Ľ}é "ď>y»żÜćÔ{ÄżB1Śű%;©Rć{PÖŇŃN«¸6b¸7sۡÍBˇřŠ/»)G:}ý¤¶ŽťŽ@iýěÔŤĄÜǵgŽÂů¬Î3§űŹŮVööÓ×lü)r¬ű>؇(ykx–6÷ĎňçäČ{á:1nđvć±´ŘkRč„'ăaŐČ·^e¨Nˇ•59á=ČÍŮ8ěżj¶y(í™H“ČľâO ´ľqqqsIţ»k×®ö„şpě Ăć%ŘxÚú#pŰ;ëěř4B`ĺe”ť›˝ą­#íf5::ú)ćÎáćŃi;bzÚÍÖ{&PöęŐ«%~žCů›piKĺ&ý&aés#Ń}#Mý"âŮöŇę\¶fnFWÚú­¬ " "PíîÄö¶w̶ĽŠv÷X’ ‡łúWŞŽ§860[÷„„„6+Â['’ӹר@Ĺ=O2vâą?úśűžUM›6Ý€MGü´Źý Ü÷Ů w`^Ű}ěüax }»Ůk­ÂRîsLüóÇęŃÖ Q1”{2ŰY™lĺňř|ĹŘ6řZ¸Ó“Ó+'zîă>§í4+›}|l‚ß0ć+[`-{¨s˙ÁÂŽŽó‡g÷}"HţMśíß?<ę˙Ú.MĆ›˝¬–|Ŕ9˙7şh.Ŕ5)ÚŮĺęŔ±ů4ßJ•E@D@D@D : TšHi‹b7ŕ“$óţ>äćt'7^vôć}žÝ86Тí Ď0ş”~m˛łłżG¨Ű‰÷›±y~ŃĆ—ˇý5|:˙Vpcą†üF›“҆ÜxŢCy,mź±óńkę đöi¬qý“ą‰¶cáďQv‹ŤĹřs ¶‡§§§ŰÎ{ĆÓĎ”ÂĚnNÇ#`~†?kYó˝Ô_kj16T%" "PµLlĽËz×—hjD hořM$Ř˙}§ąsúGŞŢĆTwqRÄ^b÷OOroňßżíŹŔÔͲűę. mşĺůéůćů$ĎŃv®Ő—[˝ÄÁ{©ŹĺţĚŽ@̱ĺTlžlmÜË|H›Ť[k÷PÄMTŹńüaÖeŹ»áŢf2÷:ßŃö÷:ď8pŔ-húó‡űÇŰ7„>źpTůň­đc˛ÍYŢ`/­ÁÎđÝ׳Ű_qbçźÄ¶ÜoîÁîUäP˙!÷‚ßÓwL ĺĂp»ŹKcějŐóţt+«/žw0f»Ť+Íś%Ů÷wMĽÇ ČžĂ:6Ú±yďzĺE@D@D@D Ţŕ†÷ň.ÖţZn˝.ďřŇŚ3˙lžâúrÄ»)ó‡×ć[Ç y7ŞÍ}ë˝Ëž>W:6ű÷ďÍ}öW{§Ť«3ÇŽŇşI ú˘ącنĚ-k~š=ÄJQ ęÂg ¶|Y_cű{ç[ P/JŮ®TĐŚČ"?­â…>PĹóişLŔîg‚íž ťÜĂ´)ήÝW±Kň8ڋݵi;(ĚZ7Ö_ťÝűëSž6»łXÜXóÓîÍŠkóÜ׵çŇě-ÎD±uţć,v€§Ňß5±µ®_:B´?;jŞ&ŕË©ęyëý|Ü ľ „pţ’˝„›[;b´…ťW×{0P* Ďow0őî-íŹkĺęÔŮöi)@í$đÝK\߯[jÎ׆˙Źzŕg g˝Cî-nűˇ?ćđ¸+I^)‡‰ň 1‘rbyjŚÔÜs%rżç»v0ľÍNĘÝľőuµ ‡1ÜsÚIžÉÜsţ­®®S먽Jµ;°ö.ŻćzΛŻĺ”ť<ă9Ź^xá…rĂXs–g5ŠŔůíx™«Ó€Á® Ż_Ł|“3"Pď˝2Ů)Ë2¬:úš:íb!·–sö‘Ś3erĄËő(É;D÷KFHD@*‘˘\ âÜ;$©ŻW÷Á¬w¸ßÜY‰¸eZD@D@D@ĘM ^Ýś•›R% ä“ٵgCY´ç3Y˘ " "P3 ŚÂ­î¶%1şśţ™Ęů‘żNµ<är=LöĎĺ4Ąa" e ŔËkě=Wëu€=/]AD@D@D@j,Đ뙚AŔž}7Ą+˙üˇ‚ţtfüu‡mÜ@ŇĄ‚ć4\D@D@D@D@D@ę zµ“’gńLĺĘĺrĚĄ<Ź«Ô‹ÎĚxłä |;«˘~zB?śż?SINŤÝ3*ɶ̊€ÔOżű˙öň\üř v°eq—MŃŰk+Ę*´ TPé­-(Öşuqą­µjE\ŞÖ¶ÚÚÖ¶V±Vk/.TPÔJEŮds«Š[Ů7Ѱ…-˙ßsȤ'á$$@rň›ĎgśwŢmŢůÎ$šÇwfjńi‡±í˙‰Ů;ş\FńqäR©ż<—µ¨}ľ@ťřҰ‹ ( € ( € (“ő*H٤I“[Ö­[W™?wéĹŢŃqňľˇţ¬8‰š RF€rĘ.Eňŕ (kSjó udpŐ5í±5}EÔ“ç˝˙‹ÍS¬•YúQééĘT´Ž ( € ( € (Pj4HÉěŔa›6mşv|ćfgÇ0SpŰőţDĽl2éŮä@›‘¬ChÓ•ĽűŢK@ň3ëׯźHůI˙oaaáĎŘŹ>‘·;ë™ߎŁMňždűOňŽ#=śôŘΤϨ·tŠôl ę}yăĆŤ'3†[ŮďeÉBďÔ?~GĐGAôŮ»wď>ňČ#Ńď÷É?ň|ňď8qâRňî`\÷Đ÷Űä÷ üxĘćÜş’׌5>îzeüôÓOŰł;űç°}‹ĽĚ&c+'ůY=¨ŰޞßrŚţc!}ÜŔ9\ĂWÂżĆř®"ď$ĘżŹ]Ô›@˝óYź¤ÎOY#°yţË(+ Ž’WŮ%9|ş˛•­§€ TB 6˙Ny†ńË˙Q:<ţĄŐ´'SQ•(ä_1«˙TÖ™ŐµLP@P@¨/ jęD ’}ŤŔŮ‹Ě仟őeŽ“ž Ç#06ŠÍď;věřë<Ň·‘w<ŰôBúFf,ľÂ żńdHÜ›€ä0ň_%ďvfO.Ž™ŹěŰ·oßöŃc=L›1k‘t ď&ýő¦^ݍ“,îňÉLŮ53gÎ\zÜqÇýš6?ëׯ_© -uN$˙ž…ç@o(űČ˙}Ýů3ţxËzj̢¤¬u.ăŘK(‹Ç­°žČç]HŢ”Ť'P8ýůáCŢ ¤ďŚ:ŮʶňhŐŞŐrĆsmç4nÜx5Ç Ç˝b6'ő HŻç8źP'ŽýJ§NťîíСÇśóĄěŤ5őěłĎ.âř×EÚEP \(ţ0ţĹň›r«T®ŕµ˙ô˙ŁĚeĺجĄ€ ( € ( €ő@ Ć‚”ŘĹ Ŕą†ł’4A´N¤Ç,\¸đŁX©w ű}’ri$i¶«¨AĹNÔ›‘ä |ýĺ<ÚĽOäQţnRĆv eócź``!éRÁGö»°®#H—®=‚uO™2ecF‘} +)¬D‚ö{3ţ—â‘ó¨Î9śÂ&ż¸é¶-"ͱc¬×ÄX8ď7yč0Ćx-çôEf`6c ’ŹŠ»ÔA·^š–ŠŐEvŠŔĺ6ţ…őýsHt­Â!ăEľ—o©łóoŻBS«* € ( € ( €őB Ć÷ž:uę2z—H»Éx¬ů=öׇ*ł˙bĆß§+V¬XB€ńe‚h­XŻŤ˛ň–xÔš˛ë ¬˝L@îMú:ťýĘ«_‰üÓŰE¬¤Ż?1¦ â±ďĚvZob?‚“ ě˝D:ýţHňÇЦ!Źw/"?ţhý°sçÎcŠÉţĄôűĘ©Ô;źYŚĎ“Wj‰Ŕ ĆŃ çŃÇ›V5`üúŢżYkéÇ^N›ń(ú‹ě‘˛ĹÇţ1ÇyŽz/0¦Ë);3ĆĘř%J©ąS—ň¬«ąrÔ•ź˝«ö˙éUmü îC`s.kQ›[]P@P@P`{âëŢ̢<:iOúëͦ$ű±ŤÇŽ™M™žń—™_Qš@[>}·­¨NUĘčŻÝ¶ęSg·áÇ7.[ŹŮ‰­#(X6?öăqtŻ<¨p‰ó‰ÇĂ+¬TAaX\Ý*Řy™ccü «Ó­‚!Y¤€ äş@ĽO˛čVfHnsĺëjEü’ŽŔäŻvĚ•»ŕRP@P@¨˛Ŕ6hUÁ·ćĚŘ{ťÝx¬m-ë9Ě<ŹÇ“'WqŁ€ ( @]hĘ _ç_ Vbô1}’ĺlbŤ'żwćAĘ«vć=– ( € ( € (°=U}ĸŇÇ7oŢšx%ł ăă0­ X&@ůJĄ;°˘ ( €µS`ĂEŕń«+?ľRug(+?şzV3žŽx˙ý÷w‹WÓÔłS÷t«Q K—~fĆŚĽÍÁEP@P@P@P 9—Ő¬ó«süq\úËzr¬›XsjftuŰmëşUĄ<ó^ŘŃqîęßyU9oë* € (°+¶z—ᮌÇV@P@Üŕ)‹ţ|ĽnĐ.<ÓűÉ]xü­͇íľĎS'űnUPK2řĐŢ|>Ě7´ş†“yľMš4ą…{â7ŐŃwuŹłĽ11ŢaĽĆčžú\uŽżĽăĺj~]±ŰŃqÖ‚ßyąz y^ ( €9&PcŹ{ç“§Ł€ ( @Î Ä×¶ž5kVĽCłÔÂL˘§ ĘŚâŐ- Ł€]SůĂ}DaaaĽŇĺRţ/$űxŇÓ›5kvfo"`uív'o˙6mÚtűř㏻1ŽřĐP'ň'Sç,Ž»<Ć·aÆ_p¬(‹×=ŮŞU«oO™2e}EĐńŻ”]N›BÚśN'ł?’ý'ëŮÓ§O/ N,Ý[¶lyv$h÷s6ߤޛ¬Q÷ÝČçŁv{3Î ŮA~<Î{©§¨˙(éËćÎťű<ý)˙EçÎť7nܦâYďSŢ–co¦ěÚÂöŃüüü3fÎśą–:Ńßu¬-©ă?kŐŞU'˛?€µ'ĺE4݇˛|ÚťMŢë‚č›tĚ>ÍăÜnĹăzĘ‹zöěů9ŚKţˇ”Ż$ď—Ôż™±}Ľ˛żŠí7XçĐî»ô}'éýYőŘ–Z8Î~ôó{2»łý kúhÓ¶3ljë6ľăăQ•uwŁîYű±Îjذá匡ý–ś/Î{ĐĽ=á–ňÜă|8—Ńîc¶#©»„ô©\“‘.Y2Ç™íţăŢ~¶¤rq‚ľ#ř:†µ5c{ )§˙ĽlîÜ˙ʞ˙ˇŢ:Ň-˙‡ÉřŮ’˛¸çŻ`mÎz5cüŰ}I˙[Ý×QF»¬÷a”e.ś{WĆ;—ĽŽ¤ď8ţřă/ť0aÂWIźĹő<9ęňaĘFÜS3Ó řąIÚÇůpśź±˙Mę/e}Śń¬d|?§ĎřäXŹb]Ěú=ň§±Ť±•{N1Ű>. ďütüśĹăďśëŹ˘-eCŘÄűxÁµ™ýH/#}!c›‰Ý)‰cŘę^ˇÎ‹ŃOćB˝‹ă|é§€¶·Ě™3çÎř`$g“&ů{P˙¶Á_Kţćňî)ĆţĄ˛ż{–/_˙c«{!sśyPv*Çż„>:°ľÎyžÍĎţ»´/ůťÇuYŢ˝PŮ{–ľ]P@ČI9yVž” ( € TI€?Ž[Ż_ż~¨ĹńtŮĆüáÝ•Că$ź`@WţŔoL )e§°ż‚˛Ď±~´fÍšv¤(żŽÍ#m۶Ýňż°˙»ĽO›xduíbö`3Öě?Ü$hĆvun& ůyň×Đ.ţčO1ľó(‹€Ça”Áö‚1,J‘›SD°dm"°ÁĘněw$¸ůU¶)˛Y@`s#ÁŽsI÷çř_Ą^ŚůxÖôBđőň÷ Ź”EĐîa\öd»üŁ·ÔJ dű…E‹E@0Ć0śMśÇîÔů1í"0ąî8Á٦ţŽü7năÝmőęŐç2ćż’Ž đ5-Z´¸ź¶ŃţBň.$ČqcŽ ę(ŇCYO¦ŹrNyŠ~#ř8ůűŃţ"˛n"ۆt|ŕ)‚yďŇW÷Ćdů?eFţ j¶ÔBßwQw!롴kEaű¨PÜ_—HWe|Ô˝u#çűeúx’1Üší|9^ú8ĺąÇń©3‚mçú%ŇsJÜ_Ą–Ěqr¬­îżR•Ů!ČđŰYÇĐ6‚•qMÓKţ$Ćp3Áî«Iźí쏤ŻÎEPů—|cmGYÖűş˘űpËHţóOú8óż–c $=ě‘G9•@wü,Ĺăç{EMî©~l6d(#ź[&ĆÓź±  ýĎhAěřźqM˙Äşšët0ĺ·’56ňcˇ^ÖsęÝ»wGî—‰”O"8ůeŞnŕgô®â6»Sv}]Ě~üŚ^ËţůÔ=Žô#¤őâř䥯=é­î•¨“ąŚ€űô;‚ú#čç†ç˙ňżÇz éÓ&Nś8ŠmŞĽ{ŠöĄ~÷|úé§íÉËz/_2Îň<đßź˛ßrüÓ8lÜW/p^Söw^E÷BeîŮ8'P@rUŔ e®^YĎKP@*đÇ~wŞGŔ"W1›¨Ň Śo"pr3Ż>âôŮ?>>*ÂěE¤&đ¸3ľn!8Ő;f6‘3×S˙“8ű…̆ş‚ýń´?‘¬W:uęto‡>¤ßKŮ˙ZÔ#€ňÁÉ=÷»Ëéű5Ú¦3QNŰ›ź}öŮEäÝGYcę^OżoS4…óëuŘĆ ľu’Áx'u^aý Yó"?f^‘ߏňË8ÖĘb¦âÖ¨˙8}|%ęQÁÜńäő)<ě‘1ók<鉴˙7u§n'f†GCÚ÷༊8źˇÇwÜ 1Ă’:ëé§€ŕé:Ňa2W÷ÓÇLŇŁČú}ÇŽ_bŤ1ŢF^: J示‰óŽŕÝżČ_Kŕ2 úŇÇuŚőâśénöă¬s©ÇeYţňJ–#Ž8âłěD+f˙-ˇÍč’Â2 Úos|äSo0㺆s\ĘąFpďg´6Đ]©óŤî+r/>|c˙ ł!ߡź{Y;çgÝpě­îż˛ E°o~Xăôéiš^HŹ"±•;6k([ÇńWĹ,Ţ-µ˙óOĘn¤ŻW¨7žÜîű˝+şŻé'ë}řźKĄžÂŕ!Ćű|p¬áĹcx”ZdŤ{ç$ÖűJµÚ˛3śqü>ĆĆúÔ™ŮqÝIÇ,č+÷ÝwßeüěÝEz)Ářźé…ň­Î‰€ä0ň_ĺ˙’>2ëVf|ôß…uÔôq#XC`éáĹšŮW’®Č=ęĐ׬i_ŽÁÁRăOúI¶•ą˙¸gşŇgÉ=@żé{ ú¨Č=9F¶-÷Ôů«č'‚µYłŢ×äg˝3ú(I2Ö™Éíć°îűŚ;ó'bÜ€ĽĹyR/Ů’őŇřČ#=;¶\÷Žlň(!ąÇŘŹ™‘ýXÓK9ç?'3’:ńłĎţrmNʉţ2ďť5”Ąď~¦·ş÷(«ě˝rug%ÇäťÁkŢĺXť¸ďKĆBůtňö©Ä=Uň»§˘{!9^˛ÍćÁ}˝’>Žá÷Ó ülżĂńOg¬%żź’¶äwdÍz/TćžMúq«€ ( @. ¤ĚĹ«ę9) € (PE @ęŃąsçNĚv*őžżâ®6ó‡y̲LBbÖ]˛tĽŘ‰`"€· `¶”ŕDz.]ş dVQ"ňü¸âŮzI»ô–ú%A+ţ¨ŹwNf,­“•Gj÷Ž™xôyetŐ ?cŚYtÓXó’Î2űIň2·ĚÁ1›+ňék)“3ęěiĆŹ®ďĹ,¬VeźŁţâ|˛ťO`đLĘf1;ňŽŰ›őhĆ5)©Oť$X™dĄ·!žŕř]ŮéËšO0ă¶RŠwčoS’O_+čű{‰G{fmE0$Ţá7ňxä» ›žlc¦jÚ„ü×諼1%Çá:EŔfĎxô?ň¸–ÍŘ´KĘ3·•÷ËJęµâ‘ęć¦fçť–Ľ×ąÇb¶q©…üyü •ĚŽÄűŕ¨ŔLĎŹŮllÚ´iÇäăݰ{‘ŽÇľÓK¶s˘`9×÷ â*)»ŽG˘ŰpŹ/ޏW{rOĹ–gţ,sěřy]´­{ŠľJĆXŃ˝/Ůfóŕçń›”źÉąśËď¬xĎęUô_ňű)i˸ʽ*sĎ&ý¸U@P  RćâUőśP@ŘNřL¶¦üa˝ŚGĚ®J=účŁńřuăŚzź!o@ě3sélf$YĂöˇ Ś#A”_ŃG!AŃeYUüQ?™ő¨ř€uâ’Ă fÇcź´ß›¬G Ć-(Í~…łé˘ŹdYĽxqwúž“ě“~š>OŠw3÷÷•(#řeď0#ě[±_<–Ě¶Ź“ýż!ž‰‘Ž™›C Îü#ę—·0ŰqO‚ f´Ă'fĹě·¦ĹőŁŹ–ĺ´Ť÷kž–÷–-[v'AŇ«.}–ö â=–ô÷ ÁšAלşa\ĺĄxFÚB0ĂŁ1Ôč/ó:—×gÖńĐŤ…óąć'ECÎűPĆv5ÖkŮÝę|+áÝTe)ďţ+ék8Ť1őćď÷éa%…|Řý­Ü3Ę+ť¤źrďkʲއĺt~TŹă^ŕÚˇmÜ‹)fń­cóű?eý[¶¶äO˘Íx;®uúE=úz›ü…Ü›gÄ~üŹ„+Vü»¸Nde]°›L»#㽞Qö#ŘĽ5mÚ´zViŮĆ˝’Ů×SśÇ`®UÓ¸^Ü«cCĽ[2|ż6äÇ,çxmĬŞÜS۸2Ç5MűřýôReOłľą­ŕ ÁŐ÷iwMfĐoĺGs];'űÔ˝źő{É~l㾌ź±ĚĽmĄc<Űsż”×/ýmóç;¬°l\¶fĶ.ď÷Jeď©8źňî…˛Ç˶Éë/2ËËţΫč^¨Ě=›Ů·iP@rE J˙’+'íy( € (PO"HyUMž+ŹĂ jÜÍě ˙ŞÉăŘ· d "?†7°ŤGśG1rZ¶šÔĚlÉk)ű#ëţ¬_ăGÄěćlőÍS@P@v¶€Ź{ďlqʧ€ ( @ ôXČé\–C§ä©(P§x¬¸żÇcëg— Śâńě ¸ń>˝ý ěu#ýzuťť8Š~űGô{ë5ŐŐwyýÄGH8ć›|Ĺ{.ŹÂȬ—9žĚü]•®¬wć¸kŇ‘ăôĄ˙ ż˝«¬x㞬߭©ăsĎ\ž|Ľ%Ó»¦Žgż ( € ( @® ¤Ěő+ěů) € (P7nśß¨QَŐu…ß'P¸oôÇG=nác ż©®ľËëgőęŐ‡qĚu|üg?ÖG3ëeŽ'3WĄ+ëť9îťĺ¸«LĘ;.÷NŢ™:¨ĽňÉŹ/3ÓţęeË–Ą˙[:Ó{Gúµ­ ( € (PźâĹŮ. ( € ( @ŞWŻ^Íę´ž5kÖe9‘¶Aźß“ßťí_XÓÁ>ÖŃ™ŔŮMäbfŮĹló řťMůü. ÝĄ¤c6[uoť={öő”Qw7ňâ+ĂýXgńŹË9v7ę`íI»˘uëÖíA›Ť”ßҧOź˝Ůż¶#(ŹŻ_ŔGBž˘ź/÷#ň>f;’ü%¤OĄě_¤K-1ëŹc\@yĚÔ|šŕÝŮŚ}/ňîdż-}˝H»/%Ť!řmę–Ś‡zűPVr~Ť7ľdÆ ż Î ä7c}˛U«Vßž2eĘ*Ú>IţÝä]ÁÚśőjúţ]·.\řĘN"o%cţ N?#ť*ßő”uf÷!úúáš5k"vőv'o¶'%ŢýĽćŚë„(§ÝXŽń“˛ă®nGś"(=†µ5Ç~€mz=zt &śÍXÎd,{yŰŕÁŻ%3mÚ±˙ÖŁXł~ʱN«Č:%KyžQ!Űue Ť8ď¸/[Ó6ľ>÷FÉý±óWĆy9u ąĎNç\Nf?>,ódÜÓ§O/čŮłççđţ-uĄ,®×/éëć ü5:[µjŐ ôu#e%÷ ÷ř=ĺÝ÷Ô}ŠşŹŃOÜËŁřÍcŃŹ‹ ( € ( @*•ţCP@¨ßh%K¶ńdžíĎŁżhpłIŹ`{A«˙‰Č?€ş#×v#HűKu»-Z´(‚“qÜ®”O˝ź> އ‰ÁäŤe|‡°í\PPpŰf¬#hó‚ʬěĆ~G‚Ď_e›bůÇą7öŁ,î“›¸^mŘ?7ĘitYďŠî{šÄyD@3¬^>\P@P@¶¤ôNP@P@Á®î0Äl˝&¬ĄŢËxÄG|–Ľţib6ŕ‚,ŁŮĎş|™ŔLłű™M6“ô(*ýľcÇŽ/±Î#}yǬËg;@Ď53gÎ\zÜqÇýš>FpnuÖSVŔlÄu¤ÓK̢$Żu.‹ă3ű,f¶-`=qKŤTÇű 3@ߡν¬1±ÔB@q}ĽJűŰg̱c_Îţ±§âÜ>%˝‘>–g6blkŮ/5ꕜ·NƬÍ÷¨·śăľFů^I¤od¬ŻP>žĽ‚Y{ăLvŃžk×®=¤eË–ŻµmŰvOŽóÁá /Łţ߇ô}.cś}Qżü+Šű‰¬’…c>Cţ#¬ŻĹąSpR¶qGępÄk ă™×1˝@:fˇ¦Ňß"q{\{Ęž!=–őÔ¸(;žń]ąďľű.ëÔ©Ó]¤—Pý|y´ŰjˇŹ­<Ë»®“'OnKý:YŹÍ'[uF÷óÍĎ>űě"ęÝÇxs-ŻgÜoS4…qőŚ6äźÇŚÖ›¨AđQw-ËöÜĎ+Łś{vyYoꌢh«ű>ęÇBů/ăZr¬÷·äřOP@P@0Hé} € ( €©víÚM% 3›ő4˙—IÂ,Ću¶4 ŞrŢͬ“¤ üD'˝ŚéDb Ź7+}_Ă~¶]X×ř™ăq`‚^ÜűeQť¨˙vńqÓĹěÇ ąxü:I°EšăŻbÓ(Ň™KŚ%Ú$yŇŢ`9ʧűHň·µÍýOŕâ‘ď.É{˛Ť©°%×x«A’Aý¬÷}FÝŠ®gF5“ ( € ( @ý0HYż®·g«€ ( @…ăĆŤ+ 2&ů€Č»f$y<îďYlś”W°Ť÷üť–ůňťä®*ţ0Ď|‚f'E[‚AńQ’« ĆăŐ1«­efź6ß"ďf=ĆăÄ)‚Ą]Ůt'/Ţ?Y©…€Ůd‚GGĆ;ŁłűF°ykÚ´i@«hŮj_}Ď]P@J đęIg.%°ôMÎ#xłÍGV™1yu?% µ„ĎË´oĹzmń!ăkĘŃß|úúu/Çľ :=CůMä_\\/UüřHöÓÇ'XʦźĎLĽç“:ŰÚŚG‚Ż'Ŕú2}żIűÓŮŹŻrW¸dOFřŞó՜ۥ~üGŮŹjEË]{3m^c}ťŠůÁî-ž˝úö_a|/ŃO|čćŠ:*.ű€c˙‹>ăť”ďđ5ít›lă®GĚóč{4łHçń¸ú›Śˇ$(ËLÉ1ڎ!ăYDYÜ'23wL\WŇ#ąŢçpnolŽ÷•ŢĚ9?Gţ]´ŮĘüJ-]WîŮéű‹8ǵŻň﫤џ ¬ĎĄŹéôuëlÎă€âΞ"˝0ľžé˝ŤűľĘă° ( € ( € ( € (P×®¬îŕä¶Uí3fŐ%ł)˶%hµŐcăÔo:|řđ†eëĆ~ńŚĹ ·ÍÖ.ÉăxůU=‡ŠĆC°-/Ű9$Ç+o}&ŹĎgÖ‰ń±î–™W^šŔŮŤ<~5VŤË< źnRѸ«Ă1Ű1ăŔq^ĹŻŘjč}űömfe Ęó([ŻĽýň®+Ň卥ĽľĘćÇ˝K˙ÍËćÇ~ć}]Ö›ýrďűl}™§€ ( € ( € ( € äŞ@µ)sŞ.žW¤¬‹cwĚ ( € ( € ”(yD§lű ( € ( €µW€GŹÇń¸ńVď­˝#vd ( € ( € ( € ( €őQŔ™”őńŞ{Î ( € ( € ÔA?śS/šCV@P@P@P@P — RćŇŐô\P@P@P@P@¨)ëŕEsČ ( € ( € ( € ( € ä’€AĘ\şšž‹ ( € ( € ( € ( €uPŔ eĽhYP@P@P@P@\0H™KWÓsQ@P@P@P@P  ¤¬Í!+ € ( € ( € ( € (K)séjz. ( € ( € ( € ( € ÔA”uđ˘9dP@P@P@P@rIŔ e.]MĎEP@P@P@P@:(`˛^4‡¬€ ( € ( € ( € ( @. ¤ĚĄ«éą( € ( € ( € ( € (P RÖÁ‹ćP@P@P@P@Č%”ąt5=P@P@P@P@ę €AĘ:xѲ ( € ( € ( € ( €ą$Đ(—NĆsQ@ú!Đ˝{÷ľ›7oľeîÜą‡vŘa7pÖH_^ŢŮS˙¨M›6Í›7ď©ňęÔ–ü#Ž8âłk×®ý=ăéť——÷qÆ GÍš5k^mźăP@P@P@P &śIYŞö©€;M I“&·ý¦˘ ü>ż}+ŞS[ĘÖ­[÷;ĆňV«V­:5hĐŕŇŤ7>ÜŻ_ż¦µe|ŽCP@P@P@šp&eM¨Ú§ T»@·n݆ŇéÖÖ̢| 9A˝Sćmd˙–Ă?|ËëX[˛˙$ľłV­Zu"űX{R^Ô¨QŁ6lŘđ öO Nłâzßž2eĘ*fe>IţÝä]ÁÚśőjf_FĐ0U<{ózĘ;łű}˙6ëčóHĆó+ň:ťĚXΚ={öňh“,Ô9śvßOö3¶żačěŚýH~Ťµ }Ç9MäĽßçú’ţ«‹ ( € ( € ( €9)ŕLĘśĽ¬ž”ą%ĐłgĎŢÎ:† `+&gHŢîŰÇlC‚…żŁüÄĆŤ@ůn«WŻ>7??˙ݤź&˙š-ZÜż~ýúó¨y‡°<‚í!˙‡mŠüčo$u‡°ű]Ö_$Ü­GŹ{0óĘĆ2só¶ť ΢¬m&P˙fúú<ő×Pď¶ĄĆU@˝ůeWÚdVä>Cť&F?Jň9Öű¬»'űnP@P@P@ČEgRćâUőśŘAĎ }č3+Ç[ąÝT[s#ŔGđîţč”ŕŕťîFd YłfEěAň߬CŹ9ćÂŃŁGo¦ţzÚÄĚÇ^˝z=@ť{xĎă{7ÓĎk”í•ôEúFf7ľÂţ+´+ Čą73/#ąlÎś9Śz˝{÷>—ǰŰS7fiľŇ©S§{#É’%ńxöă$/ŠýdaÜŻ‘ľ>Ů/o[XXŘŽ˛Ő™ĺôű-3óL+ € ( € ( € (k)síŠz> T@a*辶C˙>Żq~ęúOÇ y«şÜˇ.*v%87é„™‹ĎĽ+¤ś4iR!ŹkŹ$˙z><óKęOzě±ÇΧ͢¤]lcV#Ä@ögAĘXK>LÇj>ȨżŠţňŮ?:ł’ü3f,&˝ă ŁĽŰÂ… ?Jʨ—"şĎĚ™3—&yëň/Mö“-çq=ʆOMö9öręµJö‹·­ŮľW&Ď]P@P@P@rJŔÇ˝sęrz2 TŹ@QQŞqŞhóë7l~­ŮЇîm1düާçíë…`Ţ;´<0Łő~é’$Źb?Á¬Ĺ®dÄ;ó™y[Iaq‚Ŕämé˛AęĆű%§±ć%őµą9Igl?!˝˛Ď+&÷ä•ÇĐĎǬ“™yŮ:Y[¶ląwf€2Ú|\J˝ńeWś%̨7mÚ´ŹÉ[OPłdf'ŮXߎrP@P@P@rUŔ e®^YĎKę(J5$`yʦTęĹfCĆ˙˝ŮIă{TG·Uí€â4‚w˝y<{_ŢŰŘô°˛}DŕÇĄŕkGđ1f=ŢGP0ů*öÚ¤™&ooĘĺŃí<¶ďł<šýmÍ*źB˝Ăč;†±\ŔŚĚľäMf=ŠqE`4>®3ŚwUÎŽ1Ć~˛0[ra<*že]ÔI¶Śď~ŇçńzŽďŢĚoßľý«Ią[P@P@P@rQŔ e.^UĎIj(Ę+JťP´±č٦CÇ?ŮňÄż÷ŻöCTĐ!G r4ł ç|“ŞĄ‚€Ń”ŕű Ż#9ŕ^<ľ=š6éG¬Ů>ĂţMä_ĚöFę]ÍŁÚSřÎě?Ę~:ČH:ëBĐó_ü„5ŢSůőżÄz3ł'ź'ďÇŚë9ň_`ćĺĎ,ţ2wÖľ¶•Iű«¨3d„ ˙fű[ÖłâQömµł\P@P@P@ş,Pňc]> Ç®@}h6xB‡y‡ĄĽŐ ÁćRZ© fNŽeeÇŠúâŐ‹3óň^·ćˇ&VTŻ:Ëć7e™>}z©Żb—=Fßľ}ŰOť:uYf~|ý›‰ĆŤ·‰cAʶKŢ%™Y·Ľtź˛ć´‹ÇżK–áÇ7\Ľxńg1ąĽ$sŮÎa»´yý¸’ÓŽŔ·‹ ( € ( € (P« RÖęËăŕČ.ĐℇÎß”—ş9{éÎÍmĘűóqŤ‡|{ܸ04ľśí˘€ ( € ( € ( € T›€AĘjŁ´#rP /µ‰đ丩Ôu«ÇŤ/\»( € ( € ( € ( €Ő.`˛ÚIíPş/Ŕ¬ÉőĽ÷ňOŤóS×:nďżtQ@P@P@P@jN€ R;wéÖ­ŰnŰ{Ģ˘˘Ľ=z´ŢŢö¶S@Ę 4Iő_7~Čw PVÎËZ ( € ( € ( € (°c;e&e?üđź0Ôo’nyŘa‡˛ťĐĄK—‹Ţ}÷Ý&ëÖ­ű4Űiäĺĺ=3wîÜŻôîÝ{÷őë×˙–>Ž Ý&ťK(ű-ewG;öd3¬lŤ5ÚoÖ¬Yď$ů8»mÚ´é^Ú”äąU@­V޶rë\sP@P@P@P@šŘ)AJ‚‹dř]7n<=ö{„|ŕĺ^qş|pQÆ ÷(,,śÚ AżĐţôéÓ§Đţ0Ú?Aż‹çĚ™óLÔ%hyqçÎťéd7nܦ$ŰŤ7ÎĎĎĎš™gZ¨E}ËWŞ0žřý7­ ő­Ş€ ( € ( € ( @­¨ń eź>}Zd<­Yłf{Oť:uY(Ěž={9łG<$ö“`"37H,Ů'?E ňkTy›`ä¨ íç’<ĚŹ·ä¤”›“~’Ľ˛[ťťé˙&ňŃţG›Ynž@`ô¶ŹŔűŹoذa8EŽrP`' \Äń:Nŕ˝*qŕç©3 •Ú‡ÍhÖ±ş( € ( € ( € (PgjőâC:ń(wU–÷“Ę´_M:?Ůw«€ ěDš¤R-®®âݤţĂ©TŁ©ÔoIV6ľYĹŁX]P@P@P@šhPÓ‡čСĂkŁ_ôމ?% Źf&řř&ďˇl]’™%A0óE˛ű 4żá˙łđµď_­Zµęž˙äT=E`˛¨ę­lˇ@íX;튧MÜÇ®uŰŕ[çq;TńÖjCýâ—őöÍ{ ŠgouP@P@P@\¨ń™”|Ěf=ĘK@»›™“ÇňxőB” ŚIC潑źVĘ»Z°`ÁyË–-»…Źđ\ÄÇmÖ®Ył&ś˙Có¸ŠÚZ¦@® đűÂÚéW¤:î»Gę Aső4sţĽř–š9é®TóĺďĄ.ÜÎłŤ/Ĺ‹t_hÚ!@ů3ζĹvžqí~Ázäş5©Â5«RCľS<·r;űŰŮÍýóu)w6şÇS@P@P@jˇ@ü}»SfS¶e6ĺňí9ččŃŁđĘÖ¬éÍöôarH hĐČK RÖŃ Z¸vUj̨CR®ř ő$ç°ŁżŚ/¦ŹßçĺĄ~tëÓ©~ąÎ¨DrŇÝ?Ťńî(Ať9çť<Đ+9ŢU;ůNP@P@¨˛@ĚJÜ©Ëö(c)7 Ü©—Ë) @ <ńן§>%@yýWGtî2úŮťÇÇ˙vË)^‡QCٶ[P@P@P@jF`§<î]3C·×],°Ç?dŹÁĂ+Pg^śöpŞ#ŁďVMg_ űëµo<—ză…§S˙uh˙jęy§uó•ťv¤ş{ ú'uwřŽ\P@P@(_Ŕ eů6–T,Ę)W±TĘ8vÄ%©»~úíÔߨđŤň*U!5uDzîÓĺó©żtdZÖšŞSjÍHjď@ú1´§kďđ™ ( € ( € (°ý)·ß®ľ·Ś=ýę;Â.>˙)»řř~şő?9őÔ·¦Ć0óq(ýěč7ąă±ńĄ¬˙{ţÍ© îŔČvYÓ~»ěČuçŔń{×EP@P@ČIť¤ěÖ­Űĺ]ştą‘/uŻ'˝ÉÁóćÍűW]ĺ«äÝů*ůXĆýß;2núyź~úĐĎżw¤źZĐ69tFO-¸ˇn äń‘›aç\—şĺŹMý†SřáśĆk´Ť>z{jŞó÷ŘžviSźěR~®€ ( € ( € ěZ˙pÎđáĂcJĎŐË–-«ńcíZJŹ®€ TMŕ€/ôI}±÷ń©_Ň죪5-U;śŤ[}65äĚ1ĄňÝQ@P@P@P ®ÔřLĘ ü50V­Zőł(Ź43N"ý0Ű`Žž;wî‘řá‡ÉWiE˛e“4hpV¶ŻwďŢ}ئM›®¤^;ęÜĚĚÄcčcŰ<ú¸”íw)ËŁěVÚ_O_EĚ`|’ü»Éż‚µ9ëŐĚfüŰJ—ŞŤéçúFźsš4i2júôéďňŐń&L8›Ľ3)Űz· <řÚř9ăŮŹĽß“31˙šÖŇĎ/HżĘn§,Ĺ~?6§s§‘žÎŘ/aěSŁĚErW ‹×>;)őÓÍ›R?ߎӌwZNcýĆWĄZ´n»=ŘDP@P@P@]/PăAʆ žK@qx~~ţŃ3fĚXN.Epî(ňŹ" AË; tχ~ŘŠü çÎg}’6?e˝„ň‹2™Pv&˙Ď%˙5ú¸‹m›¨CŮ7éc}Ç+Ţň©÷'‚„“IĎ&˙ÚŚdB›®äÝG ôިW™ăR/–ý©;‘ń}‘>~ZXXřGňŽ{ä‘GÎaű}ňĎ <ź˛;&Nś݇»tŚo>ë9űJĘŰ“Že6kSÓAJ¶§PţŰXţÎ9Ľ·%é?(_ŕͧ¦ýóuĺW°¤NěŰőÔťŻĎKĹ/’řĺTŮ%Ţąp9ëníöN­üčÝ:y/Ä=좀 ( € ( € ( @^MÄăŢ̦ÜŘŞU«fS¦LYG`pÁ¸ď2cđQv1óqŰ#đÉvTçÎťűĹ–,Y˛űĆŤg¦áÁ™c$Čů=ö‡Ńţ«‘Oßaső:SöúxŚ÷_ţ:Ę8nüÍߎ˛źÄqIźEú ¶ŃnÓ# dö­äq»Ól:ł'Ű0{˛€qLň_m۶mµbĹŠ'čăúţEqß—sŽ_mÚ´é°µk×®ŕÜöš3gÎű1«’6K¨síާÝ{#»včĐᣅ ľCßÝbffôá˘@%Š*QÇ*uH`c˝Ż ăýÔŤiÚ9˛ÔřżŹrĩާO\UŐFÖW@P@P@v¶Ŕ.yO$A»eŹ}Ű+ZɶŰŽ¬ÝÖEŔî#‚‡Ż’ż_Ż^˝ö)3"çfäÍJŇ´ďDzLŇő®ażORN@đ$ÍvőceGÖĘ7šľĘHđ(ö«lÖ¬\ąrÚwjԨьČ/^¦“·3-`i(#źíŰlŇAČ'žxb5éGZaĽ}Iża€—ŞDPÇ5w .™ÄťVÉ;ŕEęĹTn–řź2ąp¤OĆ( € ( € ( € ÔOF»â´ @n.{\Š“7™’_KĘúőë×’Ů—«’ýŘF€’ŕ7“<ö?Ď~z—ô Ök ŽŤ #oÂLĆMéBţ±#Ç-îcĎ¤Żž={Fđ´}Fŕs9ŰŮ>ĺa?Ç5nÜx)Ę={ôčŃzÖ¬Yźpm¶~ýúvQ§xąŹzg±ľI›ż%™nP ^ ÜÂY÷řTŞCĂJś~übă7_üţą˘Ő­˘€ ( € ( € ( @­¨ń™”ăĆŤ‹żĄ×ŻYł¦EEę&łE@/ýJ¶ř8NAAÁl•Ą©Ë~>ŹxG02EŕtĚşuëîe–ä"Ö÷”Îť;ʎďuN✤ÍĹTý˛·W4KMš4©üxGćľ|TčĂt&˙ üqfVFđő±$Ď­ Ô §8ËX]P@P@P@P &’ŮŤŰę;>´Ă,ʶĺŐ‹Ż{3‰ň褜ô× HNIöcł+{Ľ¤Ý¶Ž›Ô‹mßľ}“/tgf§â±îMY*łx§ĽsběćFdkcž ( €;(pĺ¶·ą ( € ( € (°Sâc ujaćasf#ľÎ og]ËzłĎăC6ë҉<„“ßaĚxěű‹1«˛.Ťß±* € Ô RVřÚ“:qRP@P@r^ ĆßIYÝ‚Ľr AĘĂéw!k¤×µe±Ér¶Kxü”Ĺ"nP@P@P@P@P@P@rJŔÇ˝sęrz2 ( € ( € ä®@ť›I™»—Â3S@P@P@P@P ~ ¤¬ź×ÝłV@P@P@P@P Ö¤¬5—Â( € ( € ( € ( € (P? RÖĎëîY+ € ( € ( € ( € (Pk RÖšKá@P@P@P@P@¨ź)ëçu÷¬P@P@P@P@¨5)kÍĄp ( € ( € ( € ( € ÔO”őóş{Ö ( € ( € ( € ( € Ô”µćR8P@Ş]`Qµ÷h‡ ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € (°Kţ?­=—k•Çţ´IEND®B`‚bioframe-0.4.1/docs/figs/closest2.png0000644000175000017500000014326714420777331016777 0ustar nileshnilesh‰PNG  IHDR)Iw´¨ZsRGB®ÎéDeXIfMM*‡i  ) Iv´AP@IDATxěť|TUÚ‡'P‚H/ d-€«Ň«Á‚˘ ‚˘ŕ*`±÷O¬(ö‚‹‚ « +ë."* 6$ „.ذŔ ˇ$@ŕ{Ţaî82“6ÉĚdţçÇáś{Ę{ŢóÜÉÜ™˙śsŻËĄ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "KÚ·oß­m۶źŮśI'>lţ´?­M›6=‚µQť€@tĐ5 :ΓĽ(żâËďÔ43(>ÄÄıŮŮŮYČÍÍ˝!..nf°6Ş>şDß9“Ç" " " " ŃO@"eôźCÍ X yÝ"V?pŕŔ ÇĺŔ *ěçxl»ví.;xđŕb5Ž?JNN¶sçÎ~źIěHýÁřřřűöí{†ăóhSŮÓîĘ´´´ť¬Čüň©”ÝO¬B˝rĺĘń¤.[ąĂ¸ŹQߔÙؾť>ŮŘěNůó”Ą „ÎĂ—aË–-Ë´> " " ˇ! k@h8ĘŠ€€€€„‚@…P‘ F;v4đeâC€&VötćAY]„Ă:©©©I…ă©ďW©RĄc¨?b×®]×&$$ü›ü'”?\µjŐ7öîÝ{폥¬-‚eWŇ“2/!uQ~ ö.§íů^G|–/ĆGtčС«1gP÷*«vN"mš••5ŚşÚô™Eűç°ŐŠö»i7‚TAD@D Dt H™H"2}ţz"~łbĹŠ7–/_ľšü+ţł¨\ąňAÄĂŠ•*V¬xˇň‚sĎ=÷ńĹ‹ďˇí^údŮĘGĘg (b…ä/”gŇç[ę8öČ?Á_S˙eYś ÷ďßßťüĘ'Ą§§oĆõڑn‚(ĺ_§¤¤LkܸńfĘîćř˘‚€@č"2#" E'0¸č]ÔCD@D H¤Ś…ł¬9ćKá±bâ §qp‰“wŇąsçćż‘ń–={öüĆ–î×ß{ď˝ĆN˝“b+ ŃńaVA®'5;-MÜtęsň¤;±—@z,m–:ĺ•ëŮŇ˝‚ş&Ä6[-ňEz íŽîÔ©S#§­R’Đ5 düÔ[D@J@ Ą}ŐUD@D HYŽO®¦ś˘ä˙hńźVGűä˝Y¶bŔ Čt#& TNđVz2“1Yˇmíţ’ ‰qN;„ĆNŢ'ýť|sçűPÖç•gag;q+<«;±Zµj Y˝ąŃi«TD@D dt (?őPHj˘˛5ř‚ş‹ťą7äQÜ{2ž|_çM8ĚÉÉɰűD">ÚŞÇד<ívÓǦ㢬!É»lÝ^Űąsg»źĺéô`Ş4ڵŶł2óVötŁlń4ü2aÔ®Ó—{U.3íXAD@D ät (9CYPHJš˛U–.]ş’/©˛ r%"ŕ8čř+‚áęŇW’>H»G¤‹ôS’§(ż‹ô ÚŤćIŢiŁ|5«0ďCĘ˝/íiă " " !  k@ Ę„€€€€€@č &téŇ%ą ‹Ýşu«ăßĆžţÝż÷˝'ă°UŰżMAÇ6>ń˙vf—U”µüËu," ":ş„ŽĄ,‰€@! Ś,d;5R! ‘˛T°Ę¨€D?m÷Žţs¨€€€€€€€€@THŐ§O΋€€€€€€€€@ôHýçP3¨& ‘2ŞOźśč' ‘2úϡfPşBl>ÔöBěžĚ‰€€řő{v¨íů¸Ş¬€€€€D7‰”Ń}ţä}éč€éEÄQ!Âě™]łŻ " "™t Ěó"ŻD@D@D@D@Ę1‰”ĺřäjjĹ"Đ^Ó‹‰M‰kˇ ß`Ěěš}ÇĆS Ą} °kŠ®‘q®ĺ…€€€€€D$dĽCÜCÜE|X•XÁěš}ÇĆłqm|đĐ5 <Ü5Ş@l›ÓÖ¬E@D@D@D 8ŠT#ţJ<@śB<ŠXÁƱńl\ßü0D@D@ʆ€®eĂYŁ€€/‰”ľ4”ô$~I Řg‚HđG>”{)Ëý)ÖE@D x*Ż›z‰@ą%°™]JěDĚ ž@ e8cf×ěŰ86^XĂÁ+Ż:pŕŔ·|9™öŇK/µ«C\D@ÂG ć®áC­‘#€]óíÚoź쳀}&żä€€@lĐÓ˝cóĽkÖXJ“.Ä„‚›©…ýrlOʏŔ»7ŰŔ¸¸¸|a™Ĺńk®ąĆ8(€@¬ąk@¬ťŕXź/âd®÷÷Ŕˇ×ű¸Xçˇů‹€€€D‰”‘qäEäµ j{!'çů˛r†ĎăKĚ<ŇG+ç‡| Č'ę÷ěPŰ‹|‚ň0˘p]ďC÷OçzQľÉĐ/§z @„2eJă˝{÷öĹÍůBaŰ iŔć«Ä&]ĚŠ‹1Æ ›]@;U‹€€€DvHôĆĄ{ąŢw ć×úőÄ!ÁÚ§›öĐŔc*UŞ4sĐ AażŐMqć >!%`;‹F…Ô˘Ś‰€€” ZIY.NŁ&Qž @™››ű\ç؉/6łř’3ĄFŤW^|ńĹąaöGĂ‹€€€@ŕż˙ýoĹ;vükř šş«íGKb©ížŕ3ŤŤ3¶0ľ¨Ť€€@ěH{ç\3Ž>?šË+VĽ…/ź‡Ú}l¸’’K÷­¤ 5}ŮŇ#ŕůQq0?2Ng”p®¤ü«çW÷gšŇ›±,‹€€€D3‰”Ń|öä{L@Dtoń6rčСiˇž4÷§ ¶…|^… Ć0îǡWöD@D@D@ʆ€çGĆŮ“&M:Ť'yŰsNĎodűĚAŰ´üęJRƸîîÎgš’ŘR_ňK@"eů=·š™‹«&ůqĐî=iĚŃÓ˝‹EQťD@D@D ňx~tüŘžîŤw÷rÍďÍ5_÷¨ŹĽS%ŹD@D@D & H¤ŚÉÓ®I‹Ŕář˘b÷™śÎ—•1“_ŢB%" " " ĺ€çGČó+[sý·••ýąţW,sÓD@D@D@˘—€DĘč=wň\BB€/'vűÉlë~ěꫯֽ˘BBUFD@D@D ň x~”řňË/ßĎ6đxÜ&ň˝–‡" " " ĺ•@Ä”mÚ´9bĺĘ•ż´mSéرcňŇĄK˙(NőX&ĐăŠ+®ŘË 4wež)Ż~ĺ•WjÄ2Í]D@D@D ĽÂ*Rš¸Ř®]»@p)ůjm۶Í!ťŐ¬Ył;7mÚ”ťťťŻčČĘŻOW¬XqjçÎťëîÝ»÷EltĄ_.Bçę^¤nŞaĺřM’ľ–÷ ńńńG#hţĎ)Ł;úOĄßqNY4¤Ěď9üĚDÜM~sďÁľ‹ßĺcä@9çBž€€@8 č3A8ékl áD€6hŹú;­RĄJ=ڱݴǭ222_´hQbeĽEÄ·®”oqŽ{÷îÝŁC‡őrrrR÷Ebbb ë_±bĹÇb·»3/ęďrú9©Ż@é´S*" " " " " " " " "a[IŮĄK—dDĆÁ•+Wn¸`Á‚-6ýeË–e˛"đ2˛'ŮńôéÓíA.ÉÜýű÷{Ź)w!DžCŐĎË—/ČÚX ˙ Ę{#Vn?Târ!Rpě8eůĄ›ń¬ä|žô2úü„`ú7ě}om)DąÝ§§1ń;ě_ccáW ü˛U›­¬śš×#€.!ď ýű÷Żč:‘ţR¸Ű/°ÚńIćŮšăŰ9ŢI:€¸ś1Żă~@ŻoN|šv¶R2ŕřV—_0‘;ĎS—‚ýyŘća{e ”]?o"ěŢś_˙(+낿§ÁçOi»°íŐTD@D r čąçFž‰€€€€@‘„M¤D lP¶Ń(ŻÎ~!o1h@„kKĎü!Z¦ű–1F[D»!N‚Ýg‰_8Ç>© ™¬ęlÍňÇsssă¸bbslĽHżŚ™ŔguSw6éŇ9µjŐ:}۶mĂ8ĎńÉDoX·nť‰“ÇV©RĄĹž={ęakq§Nťf"n&aďręîÇf{ň3éżÔĘ29~żWŻ^ă7oŢ|T ń˝řdđ·6ígáďÍÄŹ°ů(ŃÖ;§.éâ5Śł‘4ÚCxŤŘ¤±y۶~‡D@D@˘—€®Ń{î乀€€€F śŰ˝ëăM±”cł@p«OÜqŘŚ/0đJ'"ŘąWiŢ̵‹•‹Ł/^ĽqĎV3cm’““39îŠřąsc®¤¸Ő!ä¸effćŃlAËH:[ąo`\kVň¤jŐŞ}‹ Yź1ÜOP¦ocŽÁôZňŃŹŹËŢ·UšôÁlfë`ăűŽăäńµůŻSRR¦5nÜx3bäÝŰŞSwŔî,Ć|1;eQśŢ‰ďMfńßÖBÄM´ɇ˛ú_D@D Š čĹ'O®‹€€€€€?°‰”gkpĆV/ć hö0ťŁóćs€¨·†¶n!Ń·šUŠ5SSS«9e´{‘ՙݝ@7Ĺ©óK79ÇŘÝFľ˛§ĄĄí@h<‹Š«÷íŰ÷?ę®ŔfE«ă^wr\‡ě׳fÍúŚŐ‘˝¬Ü7pĚ7io:ÚYYY›¶oß~?ţĹ[úúŽą‹˘o¬Ü}rńÁĆ?Ô2ď˙ŘlBlĂó­e×`çh¸8çBÄü9oʍ=˛ůÜu˙Ů H ŰÓf‘`ŰÜm‹ľ‚€@tĐ5 :Ď›Ľ€Â&R˛Ęď[Ľ˛ű@švä ”}ŕ~ŹŐ˝…ůdâ>§¸ [˘}«ŮŞýüÎť;m p‘BŢü: N^JůPDŐkY Y‘ocÇY[¶¬ŰĂ|z˛Â˛1ĺoâ÷ô®]»ék§eË–kÖ¬yź§ďŤ´ą ˙[ĆÜďŰ–ăľÇ–6ľ[;ĆĆvâ<ÄŘęNd솶BÔęńÝ}źOËGyxś_ut'1’ö5yÝ‘ĽXÄ®aoţÔSOÍÇ {Ť(ŠA´żÂţ÷$˘ž@¬]˘ýo^ţÇřuËóĆĺ¤Q˙¤ €€€” ÷ŠľR±\€QfłŇî•8µ}űögłý8˛%"žéNS¸oäÁL4mÚtćÚµkoÚ˛eËXÂs'[­÷ěŢ˝ŰÎKâÎ Ö·(uŹ ±ů…ł=Ńp ýmážóa«4˙ÉęHGGĐÖ©s7`…ĺ•d. MoŇ˙ĐßĚ“GXu7 đ_ăÖ‹ąĎ#>lőá°íË ÎGđďDü;¬}”tÄďKoâ?{’QQĄë!â .W7’AÄ@+k©ŠŚŔ™V?öŘc®řęŤ\˝.·Ýü "ť~ř|ëÇ/F§óň:’ÄÔ5Ŕ̉]]-ţj—.> ń\ŻżőëçźËˆžč;ňXD@D@˘@ŘDJĂJżç*°%ůCŇŞk»đŢ@p|° xöÄnÄɬfźťťý#ŃV…~¨7»Ôżő˙§Kđo)ţĹ“‡ô<¶OWĆď{%'Rw3 Ý§ňáôôôÍ~¶˙Iźóhc+Găč›QµjŐi»víjá×.ĐaŔńY5zXćľ !ô¶žFú>ć2ţP¶ŤďLJĂÚGa­b ě¸[‹éĽ=>Ţ”Ée.ד$ď soSš…'\qĹn˙L ř`D¸ęÄR›ĚżsÎ9g;c¶-ܶxłÚ-‹ńólßöu—•ŚI<<§RA+D}űřćŤďŰÎÉ÷ďßżâúőëk—©c'S[ýřωüwI śű’ľÝ‰śLŰö}} L•U×˝.ż[_PËŠ¶Ć)öuîÔGÍvÄ\{Je˘2Zšt (Mş˛-ĄH@×€R„}¦Gâň¨čs[‹€€”6°®¤ôť\IÄ4ŹpXjĄůiţ}]öć.\¸Ý{ €™M•Ĺb…`ăçgĐVšR^,Ń7?{RfDzĚÖ^\B‡ZÓq‚Ë5śäÄ•DČ% k@äžy&" " " " %&1"e‰g"ĄMŕ8©´)ŔţŐÔ7xś˙B± ë^ěĚäçżą\˙"{-ŃněŻ "PúN-ý!ĘĹ«™Ĺď2]"äDČ (t (ÜIڤk@á§§_ŰNâ}źâČňŕśn”ňztЧOźGě)ä]ştiČ8·Rwu›©»˙çăű_aq ĺu)k^łfÍ6™™™g’gá «:ľÎ u_?ń ncŚ ScâwĚáš„„„MôŠăęÔO…÷ĺđéŽýç)KaüyĚc=Mśňv”OŔżPÝ’!J`á­g]® “©]Ls·ÓŹ˝Ťä®bšP7˛' k@Ů3×" " " " "P&Â&R"Ę5E”›(v-3ý1쟤5mÖÔ]Џ6QÍvő&Đn2zŮ<ňË(?†>—ϧO Ę^G(ś† YcďŢ˝ł©żťüm999Orl6{QV—8ńí\ú$RöéÇ”ťKľ?ůIcÓÚí#ď"o+ěrőNŢż˙Eř0ŽănVçDľ´ż »—a#ËlvîÜůă9sćÝ(żŠúĘ˙1{öl[řüz Ű?SŢúŢÔ˝ĂÜZPV™xm§nŇüQ‡ă—9Nú#e&Ě:ľyý¤<_´­MÝ‹Śa«&3°ń8sxřţŤ˘ěBęo€ťµ›E»›‰ŃćQ˘ ›w u^q”˛H weą\˝uąâź.†G˙ˇĎÂCýlž™Ĺ0–.?|ľŔőî”1a[Š@(ŘkXAB@@×€@” (kş”5qŤ'" " ŃG l"%"Ů9gźł’ď ÆXf«!ďµ<ÂŘ’—š4iň…Ż]»ve˝É.łcňOĐďk˛_Ó/ !±!‚äY”ŻaŐź {&tއŘö]·nÝęěŮłÇDÇwXĺnu‹&NĄí·´{‡vWZą°™€­>ńńń'-^Ľx#+ ˙ŽČ‘ššź––¶ßiG›~Ř}ÍVaZbăďŁüoľě”cďUޱŠň=V1¦"6Ć˙ź){‘şkHű?Ł_ĺ÷că ¶luć7řčđy…ňËhwX Ýa<’’’~ٵkWW漺S§N•ZWŇ®­­ćdţh|®˝ŘţÝ3Î×)))ÓĚđ† î¦íűdď\˛dÉ:ŇHTžǯ Ż 'cJuaÝTíľCŤ—’¸_+…íîv?~±ĐeQAD@bś€®1ţĐôE@D@D@D@Ę'pŢ“ŇV®đÁj˘‘; ¦Ąy(##c«EÚ=Ěqw%˙±Âď7'Oş“ö&*ÚVe·iu„ßsś‰(ŘČŽ©ßd©'ě¦îË#PćĎ#ÖrÜŚŤHçncÂâá;ľĄÇα´óúm"č˘E‹6™/ś^_h»˛F©ćăĎ´3Ň8N·:; ż‘h÷ܲ­é¶şŇËas‰•çňăŻ;°q"čę}űöýŹ1®Ŕ^E˙ţ”7!¶qXĂc íŽFŘtűäß>‚ŽGĺş\Řž˙˘„GhĚ{şş®%şYĄŰĆ1¶˘”—×@˙”4t9! k€ŢËËűa,ÎŁśĽ i" " " ˇ&6‘Ň8ıÖ΄8nĺ“߆(w=Â`u‹uÉÉÉg9őiśĽOš‰˝cťc¶]Ű–čšlý^oeŘó®€tÚJývĐ7ącÇŽvHw`őáE={ö¬ę{Ňßi×Ü)ëСCGÚ™™řř§ś±Źg~ë í XQ™ěÔ‘ZťŰGly}¤Ď˙¨óÚ ´Oź<Ůüx N^JَĚĺÚjŐŞŐĂŢ(ěŰá<±·ç9¬-Ą}C[Aš§aälĹĄ1sůݰk 톢“ÍĂžjľęPV˙‹€€D!]˘đ¤ÉeF l"%Ű‘?@4ëĚvăvjöü“A>ŽÚĂq;˘ŕ–-[^Ůąsç(źúòpóŰş#,¦X%÷~ĽŚäÇ… n·ă˘„ĄK—ÚJÍo/´~řw ţŚFřÜăgg>ĺ}Řžd[Á _Ĺ»·ä<Ę/¶mÖ”W#oŰą—"´Ú˝%˙ÇęÎż™DM۩ܞ˛ĺvěĎBĘ;Óć(łMľŻo}Ayú7¤Í¶ĺÜV€âŰ@Ž<ýv“şW욯§y|±mň}ł˛˛–Ů&¦RŢĆÓ'“±8µˇ7˙Ő*D<•6¨Űvn‹ş“. " " F@×€;!rGD@D@D@D@JB Ď6ç’*jß laŐá„Ŕ7čkŰn?FÜkfvXýgy™şm۶ ´ů-bŰ©0ŘVkÚ>ĆÖćŻÁV6ýΠءŕŠ+đÍĘsŁŮBô»Ĺ¶}űvCh} ÁńߨŚe+ß°{@víÚu=ĺÓŘŢ˝ŽKyZÓ¦Mš>}ú~ě]ŽŤ×HocŽŐ©»™>«;úÚF(]‰~ű ÝKŃж§Żô­/Dţ_ôą&Kń-žü;ĆĂ„SŇϱ{"u鬜ěŚ/÷püéOřdţ5a“ńOÁlĆň]ůYˇË¬I6# áĹs†w jÁCL“ß n¦" " N@×€?ArOD@D@D@D@˘‚+öš"‚ťî8KţbDł4çŘR[…謦ô-–GhKŔ¶-¬ IŔž­ň hsD˙ţý+ů7Bx¬n˘ ą{¶Ł¶ýÚż­ÍÇo{¸“ ÇĆqő°łVćëţW %· N©RD@D@D@D@D V ŚŚŐ‰kŢ" " Á (’ď^üZÄ·*¬Řű /mőpV+ŢÄöd[ą§ " " " "PÎŘ»+W®,ÖŽv‚Äq[źdv›üQΰh:"kL¤ z+ŻX˘ůŠ€€"6‘҆gőd}>pö$kŰžçłíůëCnéň@ŔÄE>ó=Ŕ\.%_ŤĎ|9¤łš5kvç¦M›ąENľ˘#í>ĺ¶4§Úînźc˝ëJż\Ň Ô˝HÝTăđů&I_Ëű†řřřŁ4íA„î`÷Ůć®6Óčç}ТSW©}îeś~|޵ą(@,HËg_s ÂvOJó‰iż’L ⟪D@D@D@D@˘âÜ$ÜoQ©RĄžéééëíö2…˙ÍČČxÁđVn9ăţ<ĘqGDČ™— lş-[¶<Č}Ęëń0Äě¶ůýŻX´hQýŰŇ˙ě®çłä§ÖŃň.î˙ý´ĺťŔ˝ŔMĐôîżýMBBÂŢ‚2Î0·Ä^ +‘˛ŚŮk8č V‘2:ÉKâĐ–ľâPS(_ěľÚŚ+W®ÜĐšhłăÖ>™\#.#{’;b"+s˝Ç”Ű®›shň3bäCÖÖýWPŢsűˇ·HyŔ±ă”ů§ťM±˙彫y[‰ŮŠř«.ŻgŐĺß>řx âçH„Ôó­Ü#ŽŢËvőľÔµ¦înDÇŞz“_ćÚółŤý ¬µ±«sö©řňBë-ô«KYóš5k¶Ůľ}{Xř<Ç)”ĎŁÍ0ce÷çÁĎ0–=ŇîuţQrrň•<äp'¶>âřßÔÝGźúŘ/âřrŽ?JLLĽĆ„]Ú(@ĚčŐ«WâÜąsíoµČżĄ¸łÎ:«Ę|°«ČťŐ!ŞŘëdóćÍxŹßUŽËY(g$R–łŞé@8 Ř9ľ8z·ôńĺ©X[ú°áŢŇÇ—@mé ç ŐŘ" "PB”m¸6ltJÇ_!o1h@pkKĎü!Z¦ű–1F[®Cś2ĺϿpŽ-Ą, a°™ĺIÇĚ©U«Öé۶mĆńxŽO¶:' ňUĆnSç´2e)vl¶đm Ç&OŃc»wďžHÚ7?Ű|ům3gÎśQôąö7Đďx˘ µŹs<)33ÓlĎÂîÍÄŹ°ń(qőw˛Őý&RۢޱóHÄŐ·vîÜy Ç“é{ ý˛B´ĺ7ÓÇD˱Ř0îŻ#nžÁńL˘‚”;|N´Žăý¤F°É!<­ć3é+üŕđD°vţuôą“xc»ř‘bL4>;ÁćŔĽn#>Ěü_đźc8Ží®ÄĆć˝ü ŢżţŹúgńyn vľĺ´ç4Ĺô-+lž‡ő&ńžú^'Ť°q€ăîü”]ŘţˇjÇązžy ‡s™÷˘PŮ•6˘Íaů+"ąřPa[úNł-}|`lÄ—¤v·˛-}¶’-|ńąřvĄ|‹sÜ»wď¬<±-} ©ű‚•-¬?«dnäb=»ÝťYS—ÓĎI}ď9fíř˘ö _äÂşĄŹ/˘¶ĄOAD@bť€Ý‡±XĘ1pĽç×'î(ÄöĽď^éDÄ:÷*Í@ý¸¶Ř7Ú–Gs ‹Č×9PŰ@ĺôĎĺ:5ŠëŐV®wOpÜ›­ë•ňłm_Č)·Ť{iďćÁqbëýżE˙~Ô}ť’’2­qăĆ›±{7ǶŠÔĹ5u×´A´3Q7“qľĄŻ{KĽŐÓ÷ą%K–¬Łěuę*Ńö1ěţLU<:Z(Źř›čČk~AsăďérţŽ^-¨ťo}×®]ŹäřFV-·A0ꍥÍßź$™lůHq­fůBý­Ľ—Ůç˙« +Pš-ú­öśł@¦–#P^ĚxżńzjËíĂ!PšsŚ}ŻçO:Ş ZI#'ZÓŇ& -}‡¶ ňĺP[úJűĹ&ű" QCq` ?5÷w/„q¬L:Ę#¦ůW{Źů¶ˇío'Ăčšü µ×¶<[íěA:¶ťşPľwňĂŘ?hüő¬YłľDčłíäöž€Á|ö­äřk~$űĂĘ0ľçKňž 64)¬m|ŢHtŻüÁVb~ÔŰęŚAť‹y6bţY0|śUc¶ZňĺW:í¨ßčÉďĆĆFÇ'ÚŘnŰ® ĺ–ŻńŠüíŮýh힯ö75ť÷‚)6aĘÇQf÷°M&µÉó¬Ü«ĺjdeeŤ#ŰžEżOš6m:‚ŰFěĄß={öě@™µYČßž‹÷˛kř;˙śş°e« íööăúŮ×CĚěĚűŃ~X7Áë&˘ý(żźĎ…CůáĘo¦,…xĺóI+v'>Äűŕ«v[VM?†ÍSµ)˙ś6W"śíć8hŔżÁ´·6Đo.ýî Ú‰J|jG[cP…h+í>ÁoşzöěY•Uć/“mFűQg;Bďp»ŻpAľâʱ6źě=Čćů$vgP~?ĺ“wß^şťÔŮŠoWÇŽSXý}5,˙ Ë<âłůĂŹJ&¸Úí7Śý~ÎÉ˝ŘĎâ=đŽŹĺś}]w?ěŢ„Ýe”ŰĂŐňá|~„Ťă̞ǧ­°ëmýÚŮBQD[)±!q>ţV¤źýčdçů°-ć,ŕ8÷üg±{)v3í–#ĚőyúŘuŁq1s4Ö% ̧Űŕ“ÍĺkěžgF©;ޞ§ń1™Ă†ämuë ĚaǶÂ˙ ę®'m@ť­VľŤĽ]»ľž˝¶¬Ż‚h%Ą^" !!lK¬·jpŃm‹#źů;Ă·tűpç”s!toéăsŐ‹\ŔOtęś”/›Iä›Ů1Lť-}ő¸xţ‹cű@‘'PtKcÚ–ľmt˛-}[=[úňµ}ć™gţĘřöÁ%ť~¶ĄĎ¶đهŮUʰ-}¤¶Ąď9>¸¶˘|7>Ť uŮ–>ęś-}]):ÉłĄĎEą}Iwoé#ťKűPe÷kĂqĎ–>˛ " "9Xř-ŢÄó…Ć„oŕý»ďű?đ^Ý[O†÷ąĎ)îb÷ ó­ćýňyŢ_ó-+Jžk–­ćďÉ—îĆĽŹľ‰/ÓýWáPnb }tňµđÇW¨llŰ­’/dŤ¨«ĘĘŤ…±m}hďýŽííÄy\/«;±Zµj /^Ľ›¨Ăť =ř"Ű”® ‰^?|í]1U™ďĎüݸwwwîÜą®1 ěţflµĄ ~ÖÎvíÚu5[ëÖ­ŰşOź>¶ó§Áşuën·ôĂg4űěö™ő·hĄ§nś“7»ßҶérŢŹ:Y=ď% ;Oó´Ç߯ű3嵨nŔXÍńĺ\ţžçŇo(ĺçY?ŢÓî§,“~ÝhÓ’˘-ßluÁď­]¨­řŇ<))é4Ž{ëăÔáÇ8Ƹ›~­ůqĺ|Žź2QĘęůĽjbŕ~ę:Ř\Ě—FŤŮjî ľÚÖi|yˇ± };ăĎ™ĽĎ®°~ŘŤŕ6„ěrłi‘6n’2Ű Ő—äuŇęđç’Úś—SčwţLäłđIö=Áě0ćFî |¦Ź]·@YźľŻźôô *Pš/´{‹äCâp¸]ÄkČÎ×VÎĄ{;}AçOŮXŚmŻ;;_\#›Ác«üo1’6ö˝ă^’Çč×…yŰ5u˘•—$p nÁÜß…çkřÔŤ×î_xt3›ě ¨HÝtę;çňdęn†é±ř0śü Äżp-mŤź'ÓeBę_¬o0Á^[ÖWA$Rę5 "*ő1ô{qŤq¬OÔ–>mé+îKHýD@"€­Jâ˝Ýľ¤OĺË‹ l¶z§%_lF“ťâ¬úłňü_ě~Šżnٲe¬­Řç pŘm1š±B|)ďAí=ö‚úĘűŮŘÇÖNŢË&Óo¤§ź­–´­Ę8WˇĎ^§­_Ź/ť2üű}áÂ…ŰťcKék~ĺ Ĺĺ“ÇHŕďm„ńš4ł˘,äc?DÁr>mŞóÚ°’ńří˙ŮG]"ĺ)Ô{sž†0Ű™şĺÔ ŕ‡¶e¶ÚŃŰ x[Éů“ÓŰöČý=|%řĺ'ůĽ.‡0ö§N{®ÉľçËć㜀 xm9¦•Ć0‰”1|ň5u%méË» 1ć"Ż-}ˇ|±É–@ÔŕKë]|19†/:­Č7·cľŘŰJo`…ĚÚřŻ(qŻđˇýůllŔ—f{°Zw}Ľćtä¸ÇO9ÇRěŻÄαVĎę!˛+NA=ťmŐG““_?ĘóެNť:%;cťäÓnÇ'"¶v ®•g%I@ŰVĎCzę"fžî™«{5Šc[ϰm®_ÄO'oëXdu¤3¶ď"Ň®Ô #^bu¤)Ä/=ů/íŘň`ňío;t¤˙E ü°¶ů;9ěŁBĚv>˘˙k‡°WáĹVV¦ŮqqÝ–‚ń˙ĘűĹüíŮ*ËÝ:+čŇh’ŻŻ&šác[Ţă~ ßŢĎ®˛¶Dwŕx=ă´snőa)>Ůmš,ŘC-eű˙CĎěádVĂŹ9UđŃ÷ý8ńď §—łžăÂđqş5uźü7Ńőjâ3ě\ň:;™&«x}ĽÔ´iÓ÷ČW…mžóLŮG”ť…÷ŠIŽÝÁ¸6hĐŕú΀í ăÖŻ__ăPíˇ˙9÷©°ií[,Ďą°Ďz9\aj«pm>.®GßQźK}M{MZŕřŞ1Öšĺ‚1öÚrŚŃćhćqs¬4¶H¤Ś­ó­ŮŠ@©ŕWlméűs» ]Ľ«ć›‹»¶ôĺFe" 1AŔą·Vq&k+„XY¸Ł8}ő±•8ůÝ˙Ě·=_·í|ľeľyÄÖmľÇN>?Ű6qÖio©­ËŹ_řâGž•śľý”&đbĆâǬf›‡¸sŮă`3ň•|ö:›Ăg-oŰd­Žnăďę|Ú|ÂN›źČףŻűÇ ÚÝĎŠż×éG¶ÍJ‹Ž FzłÓľ†OÝ©fÓó>ńâćÍ›?Ăî|ÚŘęĚTň×[}°ŔŘ÷Ń6apv?ćľ}‹´ě^čŢŔńĂu·z Č X}H?Űľšql\Ű.}ď}|±ý6ő—S—†}{¸L‚˝ŻŃîJͦüCV”›@8Ö~Ě1ű´oÍńBęćŇţżŚý—ÚµkOłş`ľnÚ´©>ë%ÖŹühlŤ˛~ěý »cŕű¶ßĄţ=V«»w\Ůx4ą€öţ˘ťťŻÔ×dőŕĎŘ]AţK|ęč6Ęřt?ÉÔ}ŚÝe¬Ľ?×ę âC{[hBę]äWŇ·(+ô˘ýŘeŕO=~đacăřlB¦ pKË\ňöŕś‡xhPžsŤř3vzÁgc°ýD´_(í „‹đáBĆyŚăŤ”Ç“·ŮGĐ÷ú¬#߇ü—äíŇYäSHí×îh[fWAD@D ” đ>lOß=•÷ÝĄ<”Ě‹@y$0’IŮç ţXťÄ}łŠjUp¶m??Vě,jß@íme b`.źÓĽŰµő/·{ď"°UŁož­ŘÖŽUŹ•ąŤŃľü~X±Ő ¤ ůĚąŤľöů;O°ľ¬­C݆<đ9˛~JJĘű‘ÄżÎ>›¶š`•O]@_9'G°5ą‚˙–ldž­ äóy>Ó˙ę”YJżŹyoťĹ{«[󭳼Í~µŘÁő‹żżö:ŕ{Íe“]A|üÇ)čfŁió ľĚ&µ'‚Ć<Řą´şâĽ^mĹ#BpmĎ=Ds“ďÇÚw üé{Xeăóţűď×`>Ľ„öK˙†ľÍí5ŰÝض’˛Đˇ_[ć?|ÂkčĽ@ݎB;ˇ†QG@"eÔť29,ŃAŻ–˙Ż{…őÜ.L|«N ŮŠ{j+âbV~ěżě7<Ďö]1ĂEŮDĘ©|X:ŽF5ó[1“źmĎĹ>ŃWśuƱԶĂŘ FŚÇŚZ|8ŘęŰ^y('B*R–&šěł6«;g’ÝĘý÷;«bË)k‚§ůŹ‹P÷…­65‘Ao#ź×'ř· ç1ßeFń}g>ţݰ~ĐçQćµ–ůŘ÷®Kɇxě^ZXˇnçY¸‘ _÷úPŰ—˝Č& ‘2˛ĎŹĽ3_‘2Ě®hx($R–‡łXJs°ěYěp:bŮzĶJi f˙/vçű7b•çRĽOm7ţíbgŐ7ţm˘íŘłĂíTć–dócĹű¤ŁmňWD@D@b‚ż.Ö¶_óbb˛š¤€€€”>)D@D@D@D@D@D@D@D@D@D l$R† ˝Č&`¦P2'ŕű4ň2\Š€DřňF΀€€€€€€Ä Í›7ŻćöJŻđ Ę'bfŇ%ś(ĽîÄÄmćáöB Í•¸;ţLŕ~˘s?Ë]>ĆÎĂ·U>LJeéw2ý^ŁßfÚ¦Ö@1G@"eĚťrMXD@D@D@D@D@D@"Oňľś§Ro o˘Ă ˝'řŽ$oyĐ,4±(>™ÉĂ{äćć>_”~j[~ H¤,żçV3$€Č6ŽUtm¨’IoÂÉyŽŁ<Ľ˛«ë.㸱9őY™W‘Ç“·ďĄěiâp«ŁÝ÷•*Uę—žžľ955µFVVÖ8ĘŰł¨ű¤iÓ¦#¦Oźľ—ńn żŮÜB\HÝŮ×KNNîś––¶1ŹŁěiĘ’©oHţYD´W)®µkצ“ô[ąrĄ[„m×®]Kě?‰Ýs¬ź’\OL¤<±öžjľ˛cÇŽÇďŰ·ď|¨JůS¤—O»°5‡4``Í©Kźš¤IÄo2ĺEOĽ”Ř8®OňTďďÉ»hcça0}sŻ©ů:Ăć¸k×®s­Ťoŕ\,Áźź|Ëüóüńo—ßq ¬-uĹ:_ůŤŁ˛Č! {RFÎą'" " " " " " "żLpëö9‚XUßISö–‰duęÔéK»c©ű A¬!+őţC~ń6=ÝRżíÝ»w(© !íj’­uëÖmݧOźvä¬[·îv«ĂÎ8ʬŤů-Ç=H—ďÜąłS˙ţý+’źÎjŔ{hÓ=))ɶ!ߌhc Ć4a›ź`ó:Ç6Ż!εcV‡Oô@IDAT¶±1ÎÄ—v´˝Áöe«[˛dÉ7ć+ő (ďŽĐjs˝x‘Ő ®as6;#@¦bcĚ>X{oŃďCâđÄÄÄ‹`Ô’üV¸ş…X„Č$Ćz€ţ]¬/ ÎDü]acÁ·vRü#ö«Y˝ě\Ż'," >z¨Ôĺ äŹS( ćOIÎW ńT´’22ÎĽ'Đ­[·:»wďn‰@–:wîÜý„´lâ8VţfebďpÜÍňh— ±~D[©ř,eĎPĺͬ"ÜŰ–"ަďÇĐî(D°çĘÎζę}Ô™÷ť ÁĆD,ü;+"—"¸=““‡Řw>â_+łµ˙ţ^$ ”=ocbÇĹx¶j”$î 3Çď™ŕŮĄK—Oń«Ŕmń¬ ÍĆŢ Ě˝7¡ńK`•ieŇ]°ŮCŮd[ujöY±ů~ łĽőŁĎG¬DťĂŠĎą”ă/¬ßŕÓnËű|ó=/kiłÄę)?ŕ´ ćŹÓ&ż4?%9_ůŤĄ˛Č! ‘2rÎ…<&€@i‚Ú/‹/Ţă€@üňîEł°×©CxŰĆq%;&m‚đř‹SGżdDą€şcühmőęŃÖ˝I¤Ž@8‘ľŽ­@i°1YąáďSVk^J»\lĚ\´hQ–Ç–ůü-ţOô±=qÔ¨Qq;>x«<ýľôČ0žmkďG´mÝf§B¨#öZŻ}öźÔšĚ×+>"Ţ`…g ĘÓé?[ł)…`|€˛ť‡zýů?}˝¶ČŻbĄë›ÖĘÂ˙.Ţă@ţŕ[%Ć+ÖůňW&" x˙Đ#Ň;9%" " " " " " "3ŘĽ‰É¸ĺ^qh÷CD”:«ć#Č ±¶¶Ĺ‘ŃVV¦Ůq°Đ¬Yłď#á«&B›;pü}Ľ^ţŤů}oÄö5}vżL'Ě'Ó…­×?úŚąż˝«ť†Ňß)olu0ňn»¶CĆzíÝÓ™ĂW'±mŢWű1Ôúx{5Ń}ŹKŰBÝľ}ű¶¬žüľě Ôu şs·áă$˙čÜËŇÚ Aýaśßńł‰őLJJĆ ž|@ sľl>Ľ†2ĎA|SU„ř‹B„ů)wD@D@D@D@D@D@D@Ę ¤ SíMŐ: NŤD°ş‡mľďS7„iÚ˝ +°ý¸>ůµ…™6"ŕm¬śF˙ógÍšŐ»_ RŢa}ŮÂ|3˘ĺ Ęj`wĄ•QwÂŰ'¶ťšúřň/úšř·›üN¶k¶Ľµ ‚Ťi}X ¸›ű°—é¬Ü´r„Ŕůř1yĎž=HWá—=čĆîiOĽ>•‹SÉŰΦ~ľľ‹Ż÷SćżÍöô4lw€Q"mşcÓ¶¨Źgžă(ż‘1×qĽ†íŃÓétľ§ëCÔőfuç‰Ô-«V­š‰‘®M›6ŐĂŢłŘ1‘py{Ź=h§Dˇ X!ş2w~&1/Ű~ž̟œŻőë×ŰÖů×çě=Q˘I¨ł€€€€€€@ą#0˛ÜÍH*5¬ě«…Ї€ő±ka˛ŐsDßŐ……íjbf}DÂę…îŕiXÜ1éĎG{ÄÁ" Ű©S§Ęôsݦôíh̸‡Ą=Ą†Ę/ÄÍŘş–§ĽłľĐ[čC5Ľě“€¶{śş‰€€€€€€€„ž÷i\Ě˝%ëaůd¶ ŻcKrçp”63¶]۶çÚţłDě«ę_éǰ|› íŠt?CáB¬=@éŇP“ rF@Ű˝ËŮ ŐtD@D T|źđ*›˛#" " " " " " " " " …& ‘˛Đ¨ÔPD@D@D@D@D@D@D ”zőę•J{˛%"˝$RFďą“ç" " " " " " "Ő6oŢĽšĺü_TO˘”śç/QˇŮpţ&đ šm¤?űÄ“ ÂBۓ鷆4­ ¶ŞŹ zpNlśgÍRD@D@D@D@D@D@"Ž@ĹŠ/ŹŹŹßqŽ…Ů!„»VłgĎ~7Î ł+…ž§ťŹXľ|ůÄB5ö4Z±bĹŞ: ČÍÍ}ľ(ýÔ¶üHY~Ď­f&" " " " " " InOÍn‹@•LzNÎseu]žD}Ç=Í©ĎBĚĽŠô8žŞ}/eO‡[íľŻT©RżôôôÍ©©©5˛˛˛ĆQŢžEÝ'M›61}úô˝ŚwýÍćâBęÎć¸^rr˛=9|cGŮÓ”%Sßüłh/°Ů‹Ę'h;îÍvíÚu§˙ ŹĆϽԍ"Ž'^JlHśĎ<ž\¶lŮ÷ä]ŚióLűúU }’1gP~?ĺ“_Bę˘n'ugtěŘńř}űö˝ÂqUú ń±{ŐŞUłvíÚu®µó Ěq vň-óĎÓż­˙1}óĺcí¨+ňůň·ŻăČ#K‡#›<(.Ä1Ő:zD´Şľv({ ‘¬Bť:uúŇîXę~Bkřň ·±úňŇâorCI]iW“l­[·në>}ú´#ß`Ýşu·[vĆŮxdmĚo9îAş|çÎťťú÷ď_‘ütą{hÓ=))édĆżáÎư1—vóđÍ„Mţ}J2—ăęŘy‹ü‡Ä቉‰áSKň[©s źŞIŚů"iětfĚ3[WĐĆEßŃ™CČ.7ź-Ňć Ž]K–,ůĆŽwý»#‡Y=,îg™´és Ç7[cm„ŰU6öS±1ĆŮRNŢ„ÝéŘL~dĺĘ•Ď#˙>ů®Ř¬Dšâ±QÍěZ`^Âë ‹Ź* >¦Ó&ż4źâžŻüĆQYdHYçCŢ€€€€€€@ĚčÖ­[İ–vĎĎť;7Çbżá,ŃmÜŇĄKCŰMŰw¨kjőä/ˇn’őC|;@‘­!!a4ă¬ĚČČ8†vG±Şó¶IŮŮŮĎP˝Ź±Lä+vŔ—=tžl«<Í'Ć{‰c[áčbőf6ÉG¬üśĂ Ě;öďßß”vë­®°źßłU˘ś&ŽšĎzS~˘ÍcÖ¬Y/‘7qńD«°1§BâUŠçQ”Ŕ•­ÎţÍgÎ;Č.[¸pávŇßé[)''ÇXîöŹÔůž—µô]b‘vK‰îPĐN;˙4źŇ:_ţ>č¸ě h»wŮ3×" " " " " " " ůŘ˝{·‰fż,^ĽŘ>w@řň.°Bł`[©Ý!pǕ쀴 BŰ/‡jÜ[¤“ăęŚńٵEĐ«Ç&N"=čé?‘ľž|°d?}*: đ!ÎÉ{Ň}Î1Ű´kŇÖÄ>w@,Ŕ=[ žNżÉ‡ł)e•”¤m@ßY8ô˙˘E‹˛Č}é)K }.α‹Ľ ʶĄŰ¶Ľ÷#Út›gVI:B°5q‚ĂŔ}Ś{v:•NŠŢą‘_e[Ţť:'-ÂNoţWbĽâž/Ż}e"Ź€÷=ň\“G" " " " " " " ±D€-É›ď[­lŢvźID©ł É`>˘ŰkkŰmeeš Íš5űŽ1rľj"´ąÇĐÇ+(ęŹý_i{ŚŐ›Ż$ý±“čÓŢ-ZRg‚ăŐÄ9Vg[–Ű·oß–ˇ?°"t[§Ż˘¸ŐYŕx=vŰ!bV·cK±a÷‘ ;Ť¸Ź¤‰†ËŹ<ňČ5Řq„ÓTę_`Ľé”}E»$¶Ô¨ !ćnĂÔ$˙čÜ[3¨C` 6&ó´ŐšMĚL*!›Č”OaΗńĺ54ĐsN̤B°?(3HL„#6EÄę€85Áę¶ůľOݱ{V`;t}ňk ă+ţncµâ4úźĎVçĆŘýńëË–ę›-QV»+­ŚşŰŢ>±-ÓÔÄ—Ń÷wŞlůNîß8ŘňÖ6PŔć©ű›mđµ6ů)ôý?ě-óôy›˝ą÷剌˝¬Zµj&Fş6mÚTŹíĺĎŇÍDą äíˇ5îU”VŹIż1¬`üt%ő5öěŮ3±2˛©4±ůťM˙Ěă]ća۱9ÝGŰiř˛‰şŻ233íá9V÷=éxü‡˝kÇkŘ:=ťşó­oi„‚ĆdčüÉŔ×ř’„˙Ăđ#=źÂśŻőë×Ű—^űěŮSŇD@D@D@D@D@D@D@DŔK`¤7§Ś@€•†µšâ°Ţ#v- ą·ÚVĎ˝uńV"¸XßY˝Xćî&ř–`ýüŰS6šxőö”î*ţővLů]»v=2ż:+3_ňł¨˝SŢĄK—dl7pŽťÔxZťs\iAczÎqăüVŠÄÇŘ:_ź÷PYYĚQc„†€łä74ÖdED@D@D@D@D@D@0‘Ň»Z,p3ŐÄ2ÄĄ ®N`UÝ׬üł‡×ôgx{ĎĂTĘMçÎť›°:ó4˙Ańí ¶j»Wdú×9ÇdŁńŁmçvĘ”– Ź@{-O8gçżű!Je3°F)m÷.>u(kŻ»\Íş\î'2öŢžűúřú1Ťz~…kneÜd'ó—ëSßzĺE@D@˘“€®ŃyŢ䵕@bbâbî-YŹ~'ł]x[¤;‡C 4żŮZm۰mwž€řX5OA>řţ6ňŮ•O•ŠJ™Â°=@éŇRIćCI@+)CIS¶D@D@ŠBŔn,~q5qGa;ňČŔş{\®5´Że}¸]z©Ëőo§˙L—«7úŽăşůŐ;í ‘ËżBŘUŢ«pq5qGačPXRÝN+)#úôČ9źâ>×4˛€@9'`_Nç--tčçrmćâu«O‡gMtŽł]®1ärŽŻ€é´)dZ,˙ i[ÍD@D Ö ë=V×€XŮhţ" " 噀DĘň|v57(§Řâ=•”ďŮôŘú]Ź••ŹYžm€í¸\×XžúťÜÓä:Ë+€€”ş”źs©™€°Ł„€Ý“Rݍ$Ŕěšý.××”öäĆa܇ň_ą.×XňÎp÷\ěrmĘÉÉi t ŠG•"5x@ÎůÜďq&Bĺhîh·ęŔ<ř˝ÜÇCu^ľ|ůýáš ě9)>>~ËâĹ‹7†Ë‡‚Ć…ž\Żĺ×ß;ńP˘%ůŐ©¬|pľČ•ďYjv" " 厀 ”wŰÄHíËs‰§Ř1a +m^8”Ő˙" " 區®ĺíŚj>±J€Ë,eî÷ß( OßpĎá÷L곊'’;š ·KÁĆß[±bĹłi°v_M¸TaZIĂ'_S!P¤{Rúú<ŘĺúęE—ëK­ŘˇŇVTZŘÇO˛/ýÍĺę~č°Ř˙ŰŻbʍŽ" "{Šý^«k@ě˝X4ăňC€•~ÝŇ&Ý“B¨úŽĚ—Î ÚÚłÂŇnçcďŻ~&^OŮ)ÄaäP~€üEä÷^ÍJĚ:věÂÓ¸źă¸;ĺ{Iíö@wP·••{ď“?šř;qő·Rż˘Yłf§OźžŰľ}űżâĎSÔu ś» ą&ŻX±â^Úń13pŔ×VÔ>C궤9ľ-ůĂJÁ†řÉťŠ\·ßN||”ńq\{MČO"ů6¤«ŕtÁ˛eË2á7_ďŁĚćł•řnRRŇm999ÓöŽ-Ľ„˝ť–aeçâgŚů†c׸ŘÝHÇ VŽÝ+°{'őM9ü‰ú»¨›ă©ͱ‰°ő‰öäě˙Ď\ć?…ň,úśNY&ńCŽŻ%ť@ߑԿÍq"ÇŢ@Űuř3ž±e>ďă§ťĂíĚa6sCůĆ`ç+##ă}Ú7ÄΞüţAVVÖgfś'©_¸dÉ’oŠ{.˝*6)Æ^‹€€x<[\l÷výť8ÂÇŔ<>źĽër˝âS¤¬€@äĐ5 rĎŤ<R#€Ř¶‘i"4$˝“XĂ ˇ¬>"• Ў®'¶ŕxicâ2ĘŃ~é«?A:Š8ćÁühÖ¬YoSV—x e!˝ť´&ńe<;ďv?SűJ°Šx)ç"‰sYŁ8ç’ţ @@"eśą " 1NŔ>$­..\®§éëlóvĄş\ŰŮ74äk—ëŹâÚôôł_î‹ýĺą„c«»€Ä ]bĺLkž"ŕC€Őnë8|‘ďD„Ą;}Ş\Ogr\Qí<„¬´ic"Ąµá>Źé¬ĚűžěQgWXÇÝ­:#Đ5çж8Ű ż)žşăH/@¸JJKK{á ób{đ9çśóŮěŮł§łŞq+ńşĐÎV.¦ľ·ő%ŘŞHűŚP¤¤mwęmEßEř6ŁgĎžU333Ý"e0˛űKú˙••—aăiÄŔ埀(ů<¶^ăx2ĺ˙$˙ţWCx3q5…ąí¦nůT¸ě%5‘ônDѤ+©«Ej"ĺ[¶Ň‘Ô7</ă›D]?xÔgĚăq”_HąÍą v{3§}äauéb8˝zyW·¶&:áKü~™~`ËÄŢ âÝVIŰ­$ –wí¶9ů@)óxľ`6›~î×çu?ľŰĘĘKÍVqĎe ?T^¶$R–-oŤ&" "p8(Ó/.¸äß.×P>ŤyJëQŃĺ:ň~Iý›Ë5 ` j!" "fş„ůhx4M5<>űÁŮVĎąíMđŞŔ*AgK±‰kN°mÄ*UŞÄGÄ?ÂŮ^ʍ—fĄu‰g&¨™čçlďOţ«łşŐ!Đ™¸ç ت̸Aýˇ~ ăťN'ŰÖťĹńmä«‘_î5th•  !n'âă^ęÜĎINNNE´´­ÝçRf+GQ ÂíDĹ,ü˛ąĺcÇ?ëf„ř+żŇÖÄŢ$ňľó·•¬Ďak]—.]fggEý*Ęf1Ćvo%·ĽDĚ6®ń;@˝»śÔDßĘî?˙ű‘ě„?ç°™ç|ák#łOąůś'p.Šu.óŃAŘH¤ z ," "P|::*ŰĺzʱÇŻµ|Bźt%/yÝĺú/*ĺ›N˝RňC@×€ňs.5“Ř$ŔęČz¬ ě„×Ä 8ťŚČ¶iůĄ&@Q÷âácdĂ C‰>ßŃζEßÂ= ż #ŽĎ#.úŕv!lŮVo÷ŹŰŘ<Ťńš1Ţv„şOh“N4Ńí÷5|UŽ&jžÁý s˱•ËXw3ćnVQžęiÜš±öčăŰ<‡#´ĺ’ŢEŰ'‰;xŞő”yĚž°Ş2žŐ‚üVďš 9‚á’žŘh"ĺw”ĺ`óZĆŘDY3bâőÄ”×'­Fݤ.ÜŻx ¸mÉ~źyđ\2××Ěë=ň Č·bĹĺ/ś‡ÎäkĐf5ý $±2sîÄXdúw T‹µ©ëJ¬B¬e>áĎűřł'Řůb%ęo¦öşąß~%µUůRy]˝Éy-đ\2Öí´ßаűOwOýÜ*|Dx"'D@ÂF`Ę”)vAS¨"ŔĎŐ/á°ű×k>Ć˝w)7ýć˘v·3 VXľBiŰ]D@D@ I Z>čPČŞf"ˇ¶ÚŕÚL„°çĚED¦íôZD­ea÷q|ővJ·°H4 6íCśęOßlěĎĂÖâ7” ötśŕÇĆł[úŘxvOKŰFţ+ÉŽOe5ŕ¤ßofµbŠŐ &(RwmŰÚŚ=€FYOŇÔü±'››™†(Čsma`ÜJ"ż»x¶BóⳌą–öʧ0+]|Ű÷j˛¶Ĺz6Ńš“ŹÇźI4ž =ů™zn±’­őŻbÇĽHŮϰ_BźľÄ8ęS÷&ůH'?ˇ] ĆIZ쀝Vt6źL¬´mĺ3á_‡ÔBŔóĹ˝+M|ý/ţŘ–÷éŘů/ÇŰ9~¦J•*űČ=—vżPúďŻ"rMŞ!ěBAD Ć Lś8qoč?sńşnčСÇ8Mżě¤2Ô|bb±ĐašËuźŢ¦Z.d;ů¤ÖЛ謧,îß.×BRűµ×ęţŤxÉżb…TzËżbŤ¦N" "F“&M:Ť/z/ňĄíčaÆU-WRŁXﱺ”ÁŮ)Ý!Fb~Té!ëŃNŔVZV®\9Ó9V'^Î|ĆłBđtIJB}WAxŞĎűŮ>Úg•E§Nťń˝č G+TwúTFŘkpîąç®ól#ĎÓŻ$ţä1äsŔ÷·8žŢNżÚ}}ŞĽYŕj×®˝™űcňŰNá+ ˙Ń\2>÷íĺą·'›™"#ŘüŞV­ş…ůçëS°siu˘é¬Ęl—žžľ92f$/řţ¦ "ë^zé%{SOäBεî mI¸}řđáÚ&ë/ŚŇźżÝoč$âjâŽÂÇ—Óz´]YÓú°zň懶¸¸M°ÍűxVQ®¦ľ’pˇë‹Jů–»˛h˙Ő ůIÄŐÄEëŞÖ" "&LĐŹë˙ÓÄ&\˙í»AÎ5×\“TŢë=V×€283Ą?„DĘŇgő#°Ő÷3&Q›÷%ű Öšř9÷aěHŚ*Í ›Éöo[y™'ŕŰsxßć)ÔATŕ‰ęM(ÇrWpŽ §cÄIm÷Ž‘­iŠ@axľś¤đËŮ—żŚ?ţĘÂôS(&űĐ™F,Şř‚#PŇwÉ—k©7pü ߲Çx řĺťýnAÓ§¬0ŮâúWŰj#" a%`×x»ÖŰ5GR<źĘҧâľÇęP–gIc‰@đŢtˇý€Bú6ń VTv ‡@iÓG5ݤľd‹¶űqkŁ]Xőş“××(#ďĽi%eäťy$eNŔYI`ŕm”?ĚŞŠĂ~= Đ^Ĺ" " " J€kľ=\ŔîőčÇ›˛ZIˇ„äVĐJĘ2€¬!D@D  H¤ŚĆł&źcŽŔäÉ“í©iwňkĎÄíˇ€m»Ar|vłűYîSe,D@D@D@˘÷ź…»·˛b2ą·÷sß·; hSäjĆ=’x"¶źĽęŞ«Ů€:”')ËÓŮÔ\D@D „ %B8”L‰€—€ ”|°·'«ő-®ŤôKfüXń7lĎĘJ{jš‚€€@ŕşmOwý†kxóBşĎçŽç ٶČͰm}úąŁ:€Ä$^˝z%ĺˇ/Ą )Ňü)íůĘľ”5‰”eM\ă‰@1Ř J(IgrO–OŠa"h—¬¤dě,Śh%eP’ŞČ"ŕůQńpݤä)±§z>Ë|Y„äŤ@$ŕA9˙ĆŹóů®Ó’'rg8>mŢĽy5uݬX±â §¬4SžĚ]!ż§s;c–µ?θEIáu2ď·Żńým3ÜR Ű—'e?@ż ôyĐé­_›6mÚxúôé{ť˛P§Ś1›ű!˙§‰‡z,Ů‹|)#˙ÉCpqqoń6ňꫯj$¬˛x›Ţ¶1ţ#ló~&ÔăĘž€€@ŮđÜ®e$bĺm|Ľ—QÝ“2·4>kĽüňË.~µ\C~Űš˛!¨QD@J“ÂŘŔ6mÚ¬ô[D\Îj6ř——Ć1bY«Ůłg›zN űeéO  *‡ĺŞ: ŕ=÷ů‚Úú×s}¸±rÎr‚]i#‚ČČČčĎőáĂ.]ş\°hѢMĄ5–ěF>@˘Dä{.E@JŤ®OcŐĂ˝×^{í?Jm (Sžź±§{óăç#\óëqÍ×}ęËô,h0#€Ö’÷ź'Gń^t€´…CÁpÇmÚě–S7Q>Ď©CĚśIľ1}fQ—BÚ†t«đ®ëÔ©Sĺ˝{÷>Fý)ÄÚÔ}NÝ•Ôí¶ţôLŮÝdíVP7—ş{(żźă‹‰ŤÉ/!µ…";üΰ|0RSSkdeeŤŁY{˘ÝÇ˙„·ëÖ­ëkß§({š8śŘśşďyRyżôôôÍ &šâßXúś@Ă˙w$$$\˛xńâm°kGťŤY…M|_ß čÖ‡Ő}áă&Ě·2ĆzŤăWáŘ–qöř¶ 4&~N Ý±Ä7đézŇرկ·Y˙‚Î «4í> Żc'.''çQň­źBl¨›ÓÖ¬E@ň#ŔĹä q=¦‹ŘÖ@e~”T&" " ŃOŔ®ńv­·kľ]űí3@ôĎJ3UL ÄßôéÓçdîťÂűw›7× g)3‘±ŞďĽ(·űôßAąÝ+ß¶(› yľµA Ľź`2iÓ »-)ÚÂńÍV‡Ö…d 6`żyRRŇi÷´:ÚŹf•ä˛ËÉw´H·@I™+?»víşš&[ëÖ­Űš1Ű‘o€@y;súůÄŰX zi ń7|J4ôďßż ŢÁ÷×ëÔ©“Âřf7ŃöëČśÇQw7ĺ­Ďçř)guÁďůŤh›âáQϧϷä?Ü·oß>eîl 1ńa8u'˙ҬYłÖ©'ÓaPűöí˙bť·aĎ˝{÷ţ6zŮ–{ßrĺc‹@ŘN>@î?®âŕć…Çňĺ<ęq쨏Ŕ!\ě׫ďHĎ`…EĘđáĂßňOŔ®ůví·ĎĚÖ> Řg(UĽ×µk†Ý’cľć,Ň}éł1qq‚]ŹĂ˝±s"zäYłf˝DŢą­Žô\úĚ@<\mÇgśqĆď$ý,_’€ÝK’=ŕÇs?Ëgm,łÉxŮÔŤ[ştéořą›ňw(nZĐxś&ú%ž{îą“ť!ţ ®RĄĘĎM©«Ć˝;?6;žíŃÓ笂ěŇĆV]ÚŞRo¤,Ç·_­ZµîĹ~/VNzEÚ‚Ćdž9ÉÉÉ#mUä’%KÖao)Ń™gŔsâ;®çuđçí(ßrĺc‹@|YN—z/ôóRűŁâ—ŚŇY¨íwnÚ´)1;;űŹüüá˙)o^§vîÜą.*ü‹ŘčJż\Ţx6P÷"uS­Ç&¬ŘŻ*yżZÍ›Â˙śBĎ2ĺ©ô+đ—§OaSűußĆóä~#,l?µpŕWÄă ´!ś>hlđ:t¨}Ů=nĘ”)ŤĂç…F|g®Ęwůź|çËq±o=đî±e۸ßExűұM~‡ĺ1oú‡WđŠŢď@ű÷ď·]eEÖHKÄ_śń°‘ĚŠE·ę,xĹW|ŮƱ­’,(Ř<~ńřčnËö덖AshÂŢń¬Ě3fEËvÓÖl{ţäŮÖýÁěB”ĆĆS·Ó’/pL¶Ľ{çI—L˘3ŽĄůžĘó+Ű®ŁĘt%%âŕ$8źĆ=z"â5âÔ–,·â&©ŹŁţg!VĆ[䏦+ĺ[śc–ýö`ĺd=îO°ş/XÎÜÂúłűF^Äc±ŰÝ9ÔßĺôsR_Ňi§TDŕO(˙dˇś€€Ä2}&峯ą‹@Ů`!ŃFkß­[·:6*Â۱$'ňýľDz@v:T­ZuÂĺň#Ź_Ń·ľzWzroÇclá>®˘®•›}»'&egÓç;¶Ŕ\~§¬‰ĺmë8 şÜ‚!HţKśäßłvľÁViŇßě5·ňÂŚéŰß7_Ŕ9ńmjůfl›÷nű÷Żü˙öÎLŞ"űŰM2¨$É3°®f2‚.(*(¦%]]Ĺ]ý›Pe\* Š˘»`XI‚˛ 9‹AA†A!Çď=MßöNOwOžî™ţÝç©©tęÔ©÷ŢéŰ÷tU]ĺ ?,˙J]$ĽĄ©ćPţ}?HčMÝňc›>!ŘrřĚöüŽ1¶ćîEň ČÎĆÖľ>vŹPGY?Ú~„ăöň:D@D@D@D@D@D@D j ŘD"ž‰9xđ ˝0Ŷ™8aĎ´„˙ŕ;h†ďŕ9ŇörDžw›â7xšçňÇyžIz*ň ® i{#ř1ž…í9ÚĂłňömśČ¬ľmÔ}—’’b/Ďy’Şy¶ţś˛×HݦĎdâ3 K;tč°Â–TŰ36ĺĂxć_OĽ=g:t¨2–Ę&aýŤçţ‰Č\ÇRe{ˇĎ7Řńí˛}ŘKkĐw~€ńŘ<ťGéăqĆjößA~*ń–ýű÷_BůP ďÁ$°ÍÔ%Ńv“ÂJ™ g¶©O*|„żă!XĆöěü-Ł>Ci wNÜmđ{\ ăťĺíî:Ąc‡@ľ9)ů±7nmu”b.v›¦śfŞ˛SçŽůçlD~•»ĚŇ8-ÓüŁŃG#.îŢŽ˙«řgýĆÉ»bűE …” řŐc@ĂÉwĺźřtĽB»¶ô™Ä?»Ő ˇîjâaÄÓŘŁáĘÝ»w÷%˙*yŰK#čŢű©°_„ń~˙ŕźđr3ů7 őĐÝŽľî&^Müeß‘ľ›~ÍAzÂñ§2uS°çÂôů‚Ő?ŚlUâŢ„~Čn%Ö!" "7ěWöËł z˛ ˛ /Qč% {@ôžYV€ ŕ4´çâ7[¶lyÖ‚ üŹ|Cş;ÔĐđ!t UgŽFꮲIRl'WÎçođ‹“ÁlÇçp„Őŕů|7yŰ›Ń`ÓP&'ý‹gň2ř¶;”‡´Ç· űr›Ńüq›”ä´Cg%:§Pg!Ă>"Tßç0Gá.§uÓIOÇ÷Q-!!agŕD-|¸N]‰c±vąrĺv`Óa§m¨Ř=!ĚdđŁŘv|µč×Ű$\źÔĄŮ*„|Oo#ţdtNLÎfÔâ…Ď# /G‡âŘ!oNJV#ŘĆ´Ů:ř'łöéś”A”5᥆SÎ?ćIŇÁś”řÇdrücŹŁÍ –f¦c oçjÉ?čj› É×JtÔ¦8Ű ř5¦6oí=sćĚ1VęŔú!zßăźű>čl3ŕu¨¨îČ“~ři6e'nkŤ7Ř?0Ňřő~ňOÚą5|đL´v›7o~ ›f’|ŘňÔMAÇdKëČĄĐúÁ»d&“=ŘG$řż¤f˛ťÄD@D@˘‹€îŃu>dM!$ÄA™ăQÚvr(±îđíóřsş _Ď9gş,8÷fĄÄ6řŰ0Áéż8>w;ĺnç¤SćÄćH%8Ů41şOQ°9Ma.dÂőN}¨s‡űQŰ{‡á1_‡Ž&oNJpßă\óîgŕ捓­›˛ÖâBßâ.LsÁ~ŹĂŻ^`9ŽÄŠěQyÔůµ9{‘ÎČ@ą ůmN6Ř€-ÇöŘ żT\EĎôéÚmDg1«Łź‡q&ľEr Ó¸żĹhKĎ?˛ş`ö¦2ćčjKlNJ ţ)Ř|řxÇl\(OňýÂŕ±iţQ×›Nl‹'4dж˙Wd=Ś»&öŮtö°Ü‚ŮĄ2,°…âí'ďć™hö2í<žšD ú5:D@D Đ= ź<™.ŃL€çúň<ëW´‘ň|óÓö‰<ă݇Vřq2\a űÔgţ(š_ÝŐ©Sg}Ů>MÜ}2‹±3ÎĽőĚ4¬ŕ.LsŃ~MŮeěQŇ]Ç’ęYBm3\˛tđŹ`3,Ó8oٰNŐ{}6NŔAô]ÄqPÚË|Ú3C˛ĺa÷$›šžN‰ŻçăúA´h[~ý°_HĽş‹Ë”)ó-Qu‡6”ˇOď/*´ßCÍ?l'`W çÍ^ČťđéR$" "űĚŮřČőüiMËD°›\o‡í|ľ7Ą?" " ‘€îń¬Éf( ¨5…güçâE‹v!䊙p°÷kČA™+4 ľ’|sR˛GÂQśmŹ‚l3'˝8” p˛=CŮ;ľ)Ő!‰&&&~Lĺöť;w޶ý%Řďˇ8zş óftĽ˛a+p(ÚRńoŐ¸Y•ÇŮ˙ńVňö\jÇÇ7něnBŢö"}ÁQéÔť–pýĄŢtMçźnŁď-\W’O÷«Íe ‹qjţĹç„˝ą¦ŠňŮ„+p`Ö·ĽŤ™M€—Ůř-Ż#¶<÷ÜsٱMŰW‚~ ”Ţü2VÖnTY9žF¸âéĎűW˛ŇN˛"†@A˙ź—ý1~ßşë®»Főë×Ďcqë<ÚŞt¶3"{D@D@ 5|utń Á(fRVÇń÷9qYśoqäMŽ‹‹eŰçä-Ěf|• p7ĚÁş§boôÎʨ}ęß5Ç'ö-Ĺľâ¤?%ľÖö§Äî'pJľNÝĚެŽÎ!üĘń,m‡#73>Ťőtň^gc{l†7wěŘń u_v‘?ĘŘľafĺă80W˙„ '(ďcTôQŁ˘ÂH€Ů»:tTń 5=zt-ŚCÔb„ŔúŻç{6|ł  Ś¶†Ţv?ędŃb”Űä>ö'ęIx‡ CrD Ţ…-=ő/˛KJ‡LşĚó&«E@D@D ż¸—çWźŢ~XÉŮ1«łŃmQśtYÚ6+ý};vÜăŰT7MS[âÍ~’©ć(LS$S˛ÎÄJá6»őÉôäĄ=ď™ÎöíŰ—ĺĺ<;Ř3Ńq‚vëÖ­Xrrň™ŮeÄ4<§:ôxĚÓ±çăĎrY,>Óßć™1á–‹Řý'“'Ăě[ÂŻQMl#Კläłicí Ë<[˛s.!ĎîYčÖQř čPřĎqˇˇî…ţgv€¶ŕ`Pf…%'" ";ňu&ĄkNśm>Çaž>ě™}·ÉţtVŢ>ƬG{NőżôĆŻÄ•0™bvćŐ,źż{÷î®”}ŕ8(MÔf’Ą¸š))" "wz ş‰=AeÇAif™—óy{YV=éń %y/A‡€@ôĐ= úĎ‘,(„ňmOĘBČ.W‡ÄËpú0ŁrˇKŘźëÔ©Sź\í@ĘD@D@2K ‚ĂmCŤ›2Ű"„Ü”÷=]w7QĂb*şDĎą%" " 1F b3)cŚs†Ăe™÷a„loMďţšˇfqf¨(oÎ@íĹyŁZZE@b”ŔĺQ<î»°­úţŘlČśO €7żýŐăy—¤˝ÍfŘgt¬Fŕ·Ś„ň©^÷€|­nD †čţdGÓ= ĽĄŞ\$ 'e.Â,ÄŞĚA9·ŹOCČsóżËĚ÷ŹhnM{¬€.óz˛ŢűŹDs™9Ú ôefóAF÷€|€¬.D ĆĚŤćńęÍgG¶‰€€f1í¤dH›(sŚ7h¶“Ě‹{Zń&ńŃŘviNídźËjŚŻëňĺË_Éć8í×Ü6Ůl«fąG`nî©’&86· ´W&{•!Ą äÔNöąlKčŔ0˛ë¤´%‡Ń2Ł'ÂgCÝ‹€ähţL™ÇŻěń4ľžD©Ř~ Űzz‰wO’‹s¨.Íuuő)…›€î…űüjt" " "-ůę¤dv`—'N<ŤĄ•y9Ě(gW1S°qfű=FüęŠP÷{2÷˝őú Ę'Pţ$ˇ ᙕ+WľJěńÍ6ěO}[˛_âĚëgoÄF×CVĎLÄëÎ%<_¬X±ďlf"˛;I?ţĹ8(oĄŻăÔŹnذˇíąőˇ a)2ůštšąG°«/zRi;šŮ‰ăxŰxŃ)S¦ôŁÜ^~s6 ĆtîÜy¨˝…ü˛Ë.«A?RםşÔőÇţ9Ř~,úS^•˛s*V¬Ř0%%Ąiž‹=°őCbďá¶“Y•!yPד>ĄQÂڎ_\\Ü6ÚŹ$_ú đîźÖ葲úźÍ8ú2ÖĘS>űrk•#]čGŔ~Ľú;ŽĹy/["毣­éŕx‹P”^ăőGD@b€î1t˛5Tč"P4żĚÁ)—SîuśbCWă »‡Z=ëźşŰH÷Ć©v=áFęĚ‘ÖŘęLů8ŇĚáhNĚ̡آE‹xä¦R?çä%”;zôčŰÄÖ¦*uOĐć˛7†’€ňkHO#ýWbz«RVĹ—~‹üń%J\B»/°ő%+w8ůlĺßťÔwG¶;zFÓ¦Mł·¶ţ•ň{ ·’î5uęÔŢÄž#GŽĽ‡ěŮôÓ”ş×(ú”ˇU٬´é ˙uŹîŰ·Ż ů±„ÁČŮäťöďA™ßNdň€É9Ô˝BŰ^42çăjĆ0¤]»vŰ)DŮ"ęďC®2ńĘF/^ü|Ę"gŽMěwŇÎďµ2" "Łć3îO^ŕĎ®0'ż„í&˛ű‘‚A@÷€‚qždĄ€@!#o3)qčuÄö53ů&CśeŻŮKOͩ؛čµřřřo,żqăĆ1”u"ąĚň¤źĄÝ’kh—ĘěŔ8$Ż˘ü{fýŤ5ťp¶ýĐŞU«*‡2ä§Ěr\du8™㙀ě:ä>Eî+wtơ«3N»‹/^Ľ•˙ÂÉÔ¦M›âĽu›çËÓ2]ŃűžÍ´śŤ×“?FůźÉŽuĘŃ7ž|OfQ~Ć,Ć68ë`˙Ę^ˇ®qWÂ*ÚˇüItśB—ÍÎ\‹Ťźq”wG.Ý\:ĄJ•úĺŔ-óęćÍ›—>~üřJäŮlNĆźŠ’ŁčţÍ×Ďš„„„‰¦xóćÍŹ!;“äĂK–,ŮD<Ś #J ¬˙zľgú;:EQzzdV&Ř5\€ŽGřđěôʧř?ła´íiąŕt;ű!(%*ÔDŇĐ= e Ý ŕI“É" " "ŹňÍIÉlŕ ×Ř–:iśi ¤'%%ŮRps0šcrąĄí`†ßݧSŢżű©3§˘Íô:!­áŹ8ăRp Ö´<őŰ,ö‘]ki”GH§7ůşTĆI·–´Ç{ä?5ů€ă\ęmÉž÷pś 8ppúmˇr!ý÷‘j6nAΔ޼Íh4W‘ŢJ°%%¶4˝>i?›K ę¤ Ćgę^ě¸Ę¤ÇŽ«ŤĘŤč+fşÝ:ă a˝Ë)GÎcł¦9hť2ĹŃI`Ă7 <t€ä éeĚ8Źç>›._? ]Ú&ŽNËŰ˝nlšJTBĐ= $U@^Đ= /¨J§€€„!o˽͇sěÇňç»Ň»qĘÝˬ Şp”/_ţ*§Ǣ9 Źôťë˛ěÚ–DWdéw˛•ˇď¸S—QŚÓo/mË7kÖĚö‡ô8r0{1ÝC+ŽŇ•8Ú^’čXO›4KŇÉgtĽ‹îÚđ[J_+I›ŐÍqĘRôŻÉ_HÝ"_ߏÓĎ*äěĺ:¨ëc¶b˙Ą”Ďͨ#Ő‹€@ŚÍx7wâOĄL„Ë‘aúżýř•Ő 4Ń!" "et˛’_ć0·¦Á^Ü‘íąşň®…týóL÷/ěz,F1Áĺ ž!ŰF˘ďp}Âd;vťcnH˙N6+uîń˘waHVÚ‡’Í©ťŘŐ [V…Ňď”sť\Íű>ö0ˇëËÜ´ßôŁ/čuČyI;áĚ±Ż ÄąÍ.7Çíľrjg¤?ó.Yu„9í˛/ÇăśdńÖ7‘·˝ =8čö]gły»ö©Yłf°r;xŮK‚7áűC>ŃÉŁk˙ĎáP¬Ŕ B˙K (˙?GĆbňtň´_Gş¶ŻüWůR҉諌ü.§Ü/\¸w(x:!sFÝşuMš4ÉëdőÍŢěŔ‡MŤÇX:}ަôg“oâí× Ú›ŁÖ»ěŹ1/ˇĽWČ÷‡çhtż‚Ół”Ż/o şÜv&¸Ű¸yPŢΕ:vě¸Çç`u>6‘Ż:sćĚ’Ö–6Ďó‹Ęčäää3ÝÜč˙KŞÝKÓM\‡€Ä:Ăč͇÷źü{tdLäü–±$D@D@˘ś€îQ~‚ňĘ<žUŰ: ßVFDâhG§oE˘ăP}2Áĺ>žg?Uér&ܬĺ%»×ç–îń˛­ÜhVHzźĺsŞ?·í e×oü#xÎĚŞÉąe¨ţ kynžűĽd”S;Łŕ3Ď‹'ßś”ü˙ĘÚ<Ľ»céůîćć~÷Ib6ß~w>3inÇó;(3Ó&ś ú‚:(ÝmůŤŕ.ň¦}ÎÖtĺV°hѢŚ?hť»Đ7S¶s:ҵő9-ýË×q°Ú^iąĆ-]‡*ÂE`ñ CD@D öčEçÜVб®Ď^¶j!ÍÁłć—{}ě]AY<é·:uęôŘ”)SţDş/çóF“µí渦aSűżqÚŰxčç9ň·!o/ţ {öbß?ŃiŰľN¸‚L¸—r›f¶…“Í6DGt·EôKű?3˙ c}ČÚRw‘˝käyÎýwäG#»“ôضv·:ě°!ݵ‚Śíö”ć@î/zRi;Gń8|2EáĐŹň>”źM1ť;wjľšP×¶_řŮ“’’b?`¤»Üv†ăA]Oúu?0Î~üďoŁ˝˙3ŹóÔ#ÔµŮkÝŮ:Šf«U6qńضÓÔn–îĚÉśš Uj"" " " " " "clĺšm±…#*ŮŹX›Ű@IDAT ‡Ďw} %śrž9ëó€_'A)ęn%ż›şó»Ŕfs˘ö&}=áFt“Ăž˙=č5GâLĘkÓţaŠFâĚ­HşisćmC—9kŔd)ĺ˙ tˇüÉ:”$Ns űmd“—Ň®<•ULŔ§Ż®Ąłb˛oŽ3ŢKĐń6ĽlĽôçí'wë™îÄ©Śő"Ňö. »ľŇn;é+Ýő—FŚ˝‡űĆÓÖś•vN˝Gî˙B~6ŚÂŮý 骎ýÄőČ÷@—9çĚ©ü‚9ß•© z]‡»O[ňű_t\Ëř‡ŇG{Ň]¦M›ÖG·ý/]Ťžę&É5Ő†čŰAiĺ\2fO[lkGűçhcNlűqŔÎ雄ś§ÔżDŃx+·ą cbEk<×ËTęgඥŃcüŹľíkS•ş'ĐőyűJţdŻ!=Ťô_MÎú§Ě{îI§»VLĆ}ŕ4‡űťčíŽ|wôŚ0;ŕp7ĺĄü^­¤{Mť:µ7±˝c%č˙2íÓ|öěŰ·Ż eAŻĘýv†â˙s¨{…ţ{Ń­]W¶ŕŔĎĽp×Bf®YSvŹ|sRšxŹ·ă‘}‡đé5Ů5ZíD@D@D@D@D@D@b‹űM±9,Ěqeł‰2}đ0~ÇÉ &ĎěâýYňťěĄ"<°ź"ÝÇcmf|ŤĆ9ŐÂf6Ql[}Eţ7ë„üžaź$˙ í»R´&!!abť:uv ÷1ňMʇ8'möÜ/dSĐ˝Ž¶^ÇŚŐÓvÔ’%K6Qöu%ŽŢ-TÍe|ÍL†Řfđ٬KsŘ ĆqöüLx—˘•Vn3Ż(oCýôµ™:›©¸‘`ň3ŃqąÉQoÎÜO(»Ěçx8Ű5óë›8Dűꙉl3LŤG1Ú7e\§Ďő×\sÍ›a‰ĚQô¤â<=LÚLáŮ~2:“îMŃkńńńßĚĆ1”yŞč»'ŐHĆmλo)?„ăŇqúAÇ0ěßśŤuËfV ÇiIą€2˙ѲeËłČËf˙m¦Í@e@‚öÚ“8ä:c×Ƹ•±šsď9Z¶ş1ÍxM}8îľîS±ý)fCţŚž‰„D_yĐľÓ]‚8…ĚŮ·ÖXĂi5i›ię=H÷&‘Ž;lRwţ÷Ű,ŢÓŇż˙ĄîYt­AîJSąîk„»®Ńô:ü]cšÔ|Ś˝_úęćła:RćdµkçÂiZťÎtĂŽ×Ě6™oĹvŢIŰ,č§kŐŞµ“˙˝·IoĹ!h?xęÓŤ ‡dĘżgśc™=™Ěy@ţjçĄTčř”~Q?ÇôˇhéuČ}Š\sźjoęZ±Yˇn9ÚuE×{0X ďĎőäŹQţgäĆZ9}Î#=žĐ3ŁkŠvţĎžp׺ҴKÇ˙ĂěiI˙Ëůß>€]öżZ=đ3/ܵ€Ţ ŻŮ4†d1“ŻNĘ,Ú&qđ¨\ą˛˝tágśh˙É ž«×8Űsá$ř‘¶‡6oŢŹ3ęaęĚa¶†Ą«ĄŮ!^úÜJ8euČÇňr›]p|O]mfÖÄ®Tt Áˇ‘LĽńÔstRoŽ;̉´Ő± ™#”ĹykN;`?·42őq¬đ•›ÓŃtÚŚÍŇ[đ5Ó{·Ůj5q|ţŹ‚¦8OĘ‘7§®Í‚Ľ ÇĂÄłóŽôv‚÷ ě‰¸3f=hן÷üŠ3ńĎ>ű¬Îi©´Ńçďůj;LĐ7„üeÖ‚şĚ&ýŚYr»`2ž:L,îőEP·Ídě m6¬őfřÜ“uň3ă¬ŃVĆíµÝ7~ż·lfěC]Âa¨Ţ~ÍYcéS›ĹęÖĺ¤Ăq7tŮ6w^ľôoÎÁ4ö;zś83××L}túŻôzŻÓŽ»ÓG°kęWWů~ôł6žôş¦<čučŇáObëb'C»ĺ„š–ÇnsĚw…qQĘlçdGΉ)݇ś×oe¤—YĚyŹ'*Býjç#o3#ŰĽG1Ů˙É"GĆţ÷ɧ°´ŮkúÜ׎­řő^üO§»ö¨Ëěµr.˛Kť>ąF±ŤĂ6úJŕş÷ŰBýBĘjfâšňö„»śţś8®ë˝č¸ŠĎ§Őüo˙L˙·c«˙óÉiKyěl:ÓáÉÉÉMĐ˝ÜÉ“ţť7ŘŢŚ>}—[Ŕ ÔýĚŚ°?[Ţg‹»íLŠ˙†bž˝ ´ÍÜĽçĚç&ę`¶c5śI|®W†ŹÍłŮoĄ|ň¦Ł\¶¶żf/Çą·sçÎq8Iá\:‹öEmKôý†łĆfĐ•AÖgůđÍHKÂÓÍă@5}îóJgPűpčڌµśó¬!ăľŰžő!˛éĆ› î¦&+G¨ëĎŻs¸›ZpŽkŮ5Fş‹ż’‘OÇÝUźé$zB^×Ô˝C(żÂśÇv-p­]‹fń&šFţ„kKů Út·ĺŘv.icrčÚBy×ćť–·vďŢý“OĆŠ‚°›M»Ö¶Ż§ Đľ;ц Ó3KG׊[×ĆŃ™sUĘÎ×ęxl°˝%ŤďMƆr›ĺlŰF,ÍĘ5•Áµŕ¶!hšööůôŤ-9·ŮÂŘv+yçŃ˙™‡m!Żä3ĽfvžÉÂLXfRźÄD@b€Zöą§ęm¤Ëńeăń~…~x۶m%ů˛´/>çńk×ĺö‹/‡Ż Ł%íNps±ýd^ˇn‚µ#˙‘űćëUÇôřÚÜě—DďÁŤş!¬iç˙uĚ©ËLĚJ{ÓŰhÚŰ 0ßĆ9fĎňEűhľw®E@D ‡t/Č!@_sÝ r‡Ł´€ŕsiß)Çňő|Gü˘ď2”˙JŮsÔ˝Dúß+;Y3Šžŕűŕë|ź}§ZuІ°wÝś_ăđĽňE”ýÍdťďŽöÖěÇ©_EüzO łŹ=ô#˙,v 'ľ›ď»öĽ=ťĽ×™é´#ŰGÂŽ ߲ĽuňŽ;~¤¬ý|euÖ}÷ ůńß0ÁŢ`ţÎQo=㚉}Cç|“§îK˘ 2rÎĐ~;ú†!»Řöĺ< {ĽŽPây°˛—¬xg1Rç?čo6LŔq´™±˙Â8’¨Ę2ęäßí âĘ6–ˇÇ^t˛ŮŻ Ćtcű;ˇ™˝í| ý…ŐĘ>_#{Ëúčű+ş3ÎţĚş=ÉłJşń†ăŽ|ă°F© uýąEyţY‰ęŚy%Îp[’ě_ťÁ¸Üj2L‡»®™áô: ¦”s± çńW\ gRż'ÜË.ą÷±˙Vf÷~č*ó'y•]C-Řjŕäě:2‡ý1;\?=8O9O}y޴ٸŁp|Żň7’ŕz^D»áŘóí~±óK»kf¶(čµânĚlĎ‘Ř÷>×|}ŮŚDď^˘8V“)źČçÂ&‚}fĚMLLĚł`Č˙ežw›ąu‡»ÜraŇďŇďÍ0YŠmöŁŠí˝y­9N‰ýźy\ -ŕô3Žgč ź™aúT•€ä->ÔĆľÄŮo=ńAU‰±Ů”˝`y[¦bĽmĐ˝ĂÉŰ>hϦěGn´O9ËSh߲ݔµ¶ö¤?˘í˙9íśŘęÜreřyž»,+isRŇOŘôeEÖĆ„ý§ě¶¬´“¬€D >?u/ČáÉĐ˝ ‡ŐĽ x:/ çűU\ŕrmľc6ć3kťőËĂxĹ`ý[›ő䮳ď®öđî.s§íŘľ»Ë,ÍĂ~ěş9P60Ź©Ő‚˝Ń}gÚç´őͰL·dÓ©ĎněĽ\ÄÝŢľ»Ú¸Ýeî4őĺśŮ”îr+c eÜe9Mcź‘ÎPöY»`ç,Üxs“{°ë/p,ŘçW2{MŮxB] ˇlv— ű|s—Y:đ3/ܵ™k6PfňY:±™Q(ÂMŔ> ™&ż›_żjř–ŽxĚeu~‰ą_]üűÜŘ/?üâ÷)żpUu¨pă±_źşSvĄSf1ĺ-ř%pŹmZŤ®Źřsż|Ťt˦iÓ€ÔHúě@_őéËfbÚ&?đ ë˝üŇäßTÚi‹n{ŁÜ`‚ýÚlżŕµĄ˝w&%Ö6ł˛?:ŰRţ%ËaúˇóLĘŢ@ćrĘ<Ü$GP_űöĺż$ ş&[˙Oě ˝qđUű`ç×ďשł%${‘{]ö+ţČw#˙u-‰'Fü ˇ7}® ţu„d½č[@l6ôDöQ’u?Ŕ­SöWŔă!«§íuD6»ôyęľ#?ůť¤´©ý&ŁCD@rB@÷Ý rrý¨mĚ0'ĺ ü¤Ŕw¤Ć|šŔw°?ćgżęKDŕ4ţ˙l%ž=GuĄ¤·ó\Č™Î<» Ąü Â9„Ž<“µ´ŮͲĘNé<§…s•@nŔAŮ›ËV·ŇtsŁů…/~~e¨ţ¸é4˘.ÝěE›ŠďĽUĎÚŇG#nR˝ť€ňÂ@ť82mb]+gy‰-K™Ćłqň˝KţU+w¶ uc ikÎĘöN˝Í Ŷ©ô;ˇíetŚiřoăč\OŮyVvě—řzÔŐ°±Ű’•č5á_¶ćŚM›6™sňÜ2eĘŘ[ů:!÷”µĂaxĺ¶ ô•płĄ/Öľőw“^MúMÂ6o€Î—(O°_/ĎAćĘz‘µń¬f¬C¬ŽňŞŚá ęléËÍ„ˇä üŇÓH˙•X‡€ä€îŢű€î9ľ’¤@ň‡ß’čé‰üéM˝€ŕ™ĺeżđśŇ/”ŇÚđL8…ç¤Č۬će¤›ËAidbç“2vεF*ąE Š~Ë®2n8Ő{3Ńľ _(ďpޏ‹ĂµÁw ˝ RRRjwęÔi4ÎżňčhŹŘZś‚Ţ}AHŹsdpHv!˙=7ͱÜ“ą! uëÖ­m*˙çÔ_Î̡¤mě%l*>{›\Iź~Ç,ňĎrc]ŽOIņŘOń©jě«r1oP[‡µłoŹŹ÷2Ŕ!š‚»i›“ńkK™íńىň§kŐŞµ3!!ámŇ[™Ay>{ş¤psoI?Ëq` |%Mm˙$ďAţSŞˇg޵ˇpéuŚÇöiîS$" 9% {î9˝†Ô^ňŤß…vńýĎVĐčţ_ŕ9evFÝłňëk“ĺ˙v"i›Ěˇ#†ČIC'[CÜ €łË6 ·©÷i`6…żvšÂ gß#[/°ŠŮ…m/§ąW¸1µv7Şwśş`1Ž˝‡Ń[…ş5S¦LYĹ2ír8 m6Ł-Łö8űüËÁikł9uÜ$źÂćĆ5‰gR~93‡Z#7Źübô_FŮź~'%l~uÚďG6ŽÍÎ?B~ ůÉlt˝mĎž=O2Nűe0ÝÁő-VH?ńDEhżšĄâ»,·Ůťmج{/㸊•«q’ţŚĚíč/Fť÷ żÍIŰĆÚk-Źöé ýşä•LĐ˝@÷‚L](Ču¬.˛ýÝăr]±Š€@“2 N‚L‚D Nť:¶éxqfő5qŰíŰ?d=_ś*¸ËÓ8Ńľ¦ě˛Ŕ Á™©ř"o@{/P>ły{;q¶gvaśŹáČ›¸i:ĺ?Łď.ťn§j ¶ůßîŰ´¸"ÎĎdś{ł¨keô|‚˝éĎňÍ™-9×ч#đ¤“vâ śŞX±âfQžM˙Ą]wĆŮË©Ź[ť{Žóf¸xśł, Ł:ńK|)˝Ťş>8îńé„ţý…éĂ«ĂôčĽ" {îyumIŻä&ľŻÚ›ŞĎáűiCŇ?ä–nö1ż˝¶‡ąwżrtÉ-ݡôŘKHčs=ß7Wđ]´ť[ÎmŹ»·ôňýë>ľ«Ő2}ü m/(ĚÉwŘL™uŕŔFôy­k¦»ąíq—G*ťYŢn»ó‹c¤„ę—k§-Ď,éV€…’ĎJą˝Ŕůgxîňú}ÜĽł˘G˛"ź´ô/?i«/($řb4Š_#«sŁűś¸,7W[V<™€3˘9çpNŢ‚îU–Ro ŘMs-ηŢčť•QűPőĚ,|‚üëŘó3«#7$p“e¨+q¨ä‹ÓJ–^›Í¶źŁ÷°}i;ś%Ôßá üĹľ2®kťzň3Éw˛}Qw#{›ýK˝ą ńŰ´˝y›jK¸“p˘NôÉÍÁć$ŁM±ÉßtŕŔ'‘ďAÝDlé #ŰŘrKßWa˙6ôÝLýRĘŠ“¶˝&Żeą|il÷ëPBD@ňš€îşäő5&ý"Ś€}çá;Rľ×ą·ŮńŠň=©6ß‹^#Ó„ř]‚×9Ăw¶DľkŤ¤Ľß­!Žă;T?ę?ⳬ?í#młŮŠ űß÷†S Ů3(ł· ·!,ĺűćú¶—HÚË›ŃîßÓlµŚ}‘łŕk¶Ý©··÷çűŰô\@ŮC”í!îAůfŇ=©ű–tšĂfýŃGęm¦ć—8ďúa{uĘÑ݄®Żiw‘Óď„w ë·ąšÔůÇÇ*ŁGůŽř<2ö˝¶4á ö8ż»÷Óö Ę'Pö$ˇ átżjÎ-¶zť:{ä^l~NĎ‘öřěNťMVř]çG÷sy.čŹ\UĘÎ!ľÁá Ł‡(+]×Z=íĆÓÇSvç6G8™Sz0ˇ}ű÷#ĺ{vQ&ôĂ–>Řr6őc:wî<ÔľÓĆö˘ťp!™p/¶.Ç˙Ч ;ŻŘPśqŰuY¶ööy»6ü‡é#ó>v@ö×ŮíŚĺFňöb™/ěÚX¸pa*ĎçÁűd/ĄÎÎ× vŹfÇű¦ŚgŁŐčz–:˙uÂ5ţ^¨ëŮ9Č~†»–{óśô™éŃ!ůA H~t˘>D@ /n¸•Ěq—ťÚ—ľ U x_"“mlÖ!ż”§Ú,ĂŔ:'Ď8–R—˛›şSćÄVÇĐ Ů“Ł'0fćf)^žS"p¦)ł&ËΚ5ë@ Ľ“oŐŞU•yóćíâ Â)§ĚbăޱcÇ=ö…Ę]®´€D‚€î™Ł®{Ać8IŞĐxšĘÎ(m[!ś1ëi{›ö8Oćąőđ=îä×FđÝéi-w®ÇwĂ3q˘MÄqs.RÖ›Đ[‘©‹ăçiľ˙Ů–:qČ˝iŽd—!kέ#ü˙0ýŢh"ś~í٦hm§óĂó[8€l,Ç`ÎŇ[Đ9€úNČŹ ®OYmŇKH#Ľ†®§(«Ž¬3±˙`»ˇxtCűżă€úśőźĂ–ňlńÓ™~nDđ~ÚwvO5§m€=C‘ëMđŽŹń´&}áĎp8‹ľ?Açě}^›Ho <€}fçsş^… ÷—.]ş ß_Ď&˝q_‚L*íżĄţ ü—~ÇS÷z—ŃĎ|ÚŽ ż‚üosŽ™řfÂO„éoí? °;×8ÚĘ(ě´}čď¶ńŃż9bí]Šcî/Śă>Î÷ť”Ç‘~ ™aÔ˝Ĺůű/rű°íQÚw¤îÎQ=ÚÜ„l:ö2LäýG(žśË3ťW^öyÍ´iÓî˘sßD_żů•‘pôÁó.ěyúR<ţŻ’ţ€x$×ÂÇČ­¤|rŻ ëję&2†Şś"„]ś»ZÔďvóffî Ȇşî· ˙z^˘Ź%üźm'ŻCň…@Ń|éEť€Zî/IY¤9ŘrÓAiýŰňěpJ“á Ŕ±`J§.'c2Ál:č 4ąpJ«ź?ţNľ8ĄqPZąŮ(Ą‘Đ!" rňą©{îŃp ˆ‚A§Ší‰nłőJÚą­öíEާŠÍÜĚ÷§îzwçËśR“ůěZLş7uŻĹÇÇC0gĎĘ:ář‰#îŚ3km'tÍ5×ü ťĎáp˛Ą+G©łĹ“ö6‹’˛6ČÄyeł6AG ý®ŁŢVyŇĎbëę?ˇ çV 8S|ŞĘ‹q®«T©R5sČá(3‡çNäß°Kčľ™"äŹPţ¤OŹůúśGů4Â:;7łŰäGxµÇžµvޱi5éqŽ1¤˙Lz¬ť{ęĚÉ=žĐÓ®ę:aßÓµjŐÚ™đ6é­8.ĎĹvét¤ăęĽÎž=»ň6iâ(lŇ8(Ĺ\ĎŁ–,Y˛ ą°§çr8v›q.v539ĘďgFëHäR9ß"{ŮłU¸ž˝A¸fSy#Ó›¦é®{ÓgőövíOčKĘÓHô7źČI™O ŐŤ€€€€€@ö T®\Ů^`¸Śđ3š˙¸51ë°ů­ŽSĹçČŮć–qŇ8~ĚÉă=pĆ$Ěňć]Đm/ÁąŚ¸.á0Ž›™é±Tpz}ęÇpQ ČońőkMĚy´ý¶üÚŇżĽ?<Ó˙~ŠŇm˝f¶X“·GÚŹäSXěŐqş4ăżîńÁÉf?ÁéšLĽ„Ö ĐYĚŃ‚SË˝l~?6Äń2ĘŹ™‚Ěd¶HÚ¶gĎž'm?wňçRľÔikŽTl´‹6ľ­„t?¬űd:m°m}Řą zäGĆ\[ĽvY'ôiăöĆGźź1… )«ÉőOÚ¶fZí\ ä/!´ Ăę´G0žÖ'öřűĚĘye,[}=DĎVgŇúŽPgu”—`¦ígĚřÜĹ9OC,Ö×c6Ń4Ýuoúě ˝˙ät‰ţŠ@ţ{áćŹ ęED@D@D@D@D@D@Â1cĆ…Mĺő­[šY}ć$«fK­ܖAŮé4'śBÚěƉu/z+X¨ÂÁ¬´«p6íE®ŰpĚ$á$ęfu,w˝Ž¨D \Ľ˝<¦—ă|äMČălźIf¬Ů õ8Ílż@sŮKIžÁqx¬Íj+gĺÎcÓö>ü™YʶśŘł´>QĘ–;2Ĺ8ĚfăR›qđ|Gűň„ˇ>ímĘŁo-şŢD¶ż-űĆé4Źú‘”?â“óř–÷ ďíg©-M€™x_92Ĺ8mIđp¬ßˇ{=ío'ooĺ{łÇŐŔ^\ó c›ËRęŹ(źNިᎷéű$mÖ~@0'ŘDßěŐ§ČŻÁ>{ÁĎE„Qáůę~ĄďoŃi{RţĚŰ´˝m‚Ůťq0ŻD÷@f‘®dąúzlđ;e™)9ŠaĎ&ęě:ŮÁĚÜÁv^I÷ŕ|ßÍŘ~ÄŮlű•ŽbĚ«(›6éxPž©#ÜyĺšýÝÂŮÎ}–ŰŻ’FďŕX_Ž…čş°ŚqÔó)›C:ÉŢîćťÁuźe;Ô@D@D@D@D@D@D@D@ §óÚ`– WĘj6«Î™MاUşeăČ—ęÖ­[±@YËűf,†]n¬ťSFqYC8{p¶ 6§żP±ét–Ď»eĚ>Âî˛Pigϲ,üX•X ďmÎîÜŕ¬OëŘĆĺŰ ťé­ZµŞbĚ+Bń” •u^q eK(]ĺví˘żL`ąĺÝ×u oň!Żű`şT&" " " " " " " ……@ž;) ¨Â0ÇIYƢ1€ä=˙´çĽďJ=€€€€€€€Ä –Obąqş=Dceü§€€€€€€€@tĐLĘč˙˝€€€€€€€€Dś€ś”?2@D@D@D@D@D@D@D@D@b›€ś”±}ţ5z89)#~ d€€€€€€€€€Ä69)cűükô" " " " " " " " "qrRFüČmrRĆöů×čE@D@D@D@D@D@D@D@D â䤌ř)" " " " " " " " "ŰŠÇöđ5z‚@ I“&­Nž<9zĹŠ—6jÔh6#= ”íČ_qâĉS+W®śJ&ZĘ[¶lyÖˇC‡^ĂžEŠŮS¬X±ŢK—.]-öÉ4Ý"}Ôż€€€äͤĚÎęED —”,Yrô©S§^§ĺ}8üj…“‰–şĂ‡żŠ-Ę—/źP´hŃÇŽ?ţi›6mJE‹}˛CD@˘‰€îŃt6d‹€€€ä.ͤĚ]žŇ&"K6lx=Ş*0‹ňCG-N˝[qć'?şqăĆÝqX#”#˙Žľľű÷ďďJľˇő§Š/ţá±cÇž'-2Ą}rwĚť;w?ł2ż |eOĘžaöĄ9 =ľ™;Ă©O$ű1ş˙N›ĂčlŤ=/R–€#t6¶ô]¶lYеqdÓî>'ďŠ_fč2WŢ’ uŃmcšĘ¸·3†V¤?'č$ {€î1yákĐ" " "ă4“2Ć/ _˘‘@łfÍĚ8–0' 9+Ű;vRV`›młđUę»–(Q˘őg8pྸ¸¸÷IIů˛eËN>zôčýČźKY#–-‰/Ć x3±‡ňzčëěud˙Bxă3š6mz6ł1?¤n<łv.&NLMMíK]eÚLA~şÎGţ rʧ9°+ąµ6©nAĆp&2%qŚîrĘék;ˇŞ“W," ±F@÷Ýbíš×xE@D@D@NĐLJ] " žqăĆťyűí·ďŤ8ţÚ›çÝdł çŕ8wÝÝö•.]úÎĆb8›â¤ü‰pýUW]udŕŔ'‘?JűT›ůŘĽyó‘yŹ}Áůx=먫îč"ý,ł×_C»Tśś5yiȝ˗/ĂäZ´hq˰« kł4×$$$L´ňÍ›7Űňě™$¶Ľs`÷:ŇĂť|¨řČ‘#•©;ŕ®Gżĺ˹˔X" {@dďŃöť –®}ŤUD@D@bť€ś”±~hü"śrs^ýő•Ě~×]wm4śŠőq&®pěŔ®%8ďŇ8)gĚq„ĺÚ=(΋g^@~Ćgź}öm69í,¶YŤ8Gŕ€lKlNJ ţÓđ˘š_]ňűŃGţ\d–:ĺ‹-J&ťL]¨o””´Ë©CÎ#´ćâĹ‹·:eôŐ’ňÇśĽ_–†Ďwňôť‚\y'ď‹+˙P¦¬€Ä Ý"s;vl=Ř?Ęw‚†\l—ÄĚ§Š€€€D -÷ŽšS!CD rpĽ• ÜÉĂÉ:ś•_{íµ "gŤÇ3ďgú˙ˆڮ´?ÉRěYĚZ¬OíáÇŐĄ/cr Ž@Tm‹¬í/ą€PÄ‘cĆÎI'íŠ#}Ž“g‹ÉjěQyzöf3ó˛‚Ę•+WĂí ´68·"÷I`€±ß‘ir ,ŘCŮQśšţ™ť×!l±z" "‹tČß{€ÝóíŢoß컡D,^wł€€@ä h&eäĎ,¨!ŔI1ŚąçÚ-<°L!?¬_ż~ţ…ůe(¨ p.dyv-–uŰ‹dşömŽC–K‡ďŹ8—2ËńěľĂ'wŰ˝K¦)«AŮ ,ÝŢČ˛íŞ´ą’˛ńúňsi?ÝuĐ˝™şţ<Ľ'ţň!ŘUźĺăëq\vaŻĘˇě-yˇďĹ7^5Ě–L"á]*î-ó[&Łó~–©?1eĘ”?!WĄJ•ďĂ4Q•€jşäĎ=çdSîAŹs1uć>ä˙ń®P_\ś€€@T“2ŞOŹŚČđ=¬Ř۰Żĺ!f6ńPś•sňË€+qBÄQą'ŕA˘üËłp:nlj8Śü"b{!ÍY<ŘţŮę‰çáT´—ŕŘŇégĎpśwóűĚ›NŢf_†|x_°sŔ©y+V¬¸ĽE‹Uyëń+čhI»8:7S÷ u¬ůŹě­ČiŽâĹ‹×^ştéĎN!Άě“3‘vç:eŠE Vđ?s”±ľÉ˛îálfŻ˝˘bĺÄkś" " 1OGĺ·@¸•—ô=É2đGI7Śy( " " "wRâ\´ ję—(Q˘ý˘E‹’›4iR gá’’’Fŕ0|°[·n^É7Ă ů1ÎËęFŞA§x‰ČŮGŽ™Źcĺ]ÚßľpáÂTÚ7˘ý,ô&/_ľ|žÉâ€y$11ńź–vŽI“&Ąůµřřńăkăââ®wę‹@,ŕÚo{űí·ďŤĄ1k¬" " " żđýHy׸qăÎü˝T)Č?uR^vŮeĺq2ö*]ştŤůóçď´a/[¶,…ŮŹÝI^lyÇ™ČLÇ8ýyĘ=8";"˛gä`“µö+(ď„sĎ鯓ň¤ŁÇ) Śqt&˘$ĺh˙ż$źÄąiK`.&žŽçÎĹ‹ l§ĽrP†ł¨1€€@Î č;AÎJ€€@öDÔI‰˛!NŔ­ŽŇÂĘ•+!m!챫…pZ.r—ŃG#Ź˝ť2’«XęýŤ“·˛RĚŔ¬kiä«âĽ˛Ţ”­%?óرcݨzÇęu€@.¸ =—gA—Í_y‰Š€€D/ݢ÷ÜČ2¨“’ńV#ü–ÝqăH´öéś”Aô5ÁˇYĂ)Çéx’t'ĄSçŠ?aV¦˝ÝŘöµśI_ –Ö!" ąD zŢ#ÄgAßVd˙HŘź…6>şDß9‘E" " " &Q'%K˛żg‰ő9 p"aoÉZĚÜXçÎă8üçc=w™Ą›7o^±dÉ’GçÎťë}GÎ^¤cKąłrlw„i€tś“W," ą@ŕatÄOáOóL(ű ™vOM˘„‡:D@D@ .Ý îą“ĺ" " " yD héÍ”Ú:uę¬C°8oônânŔŇěÎ8׳ewy`gć×”]ÖˇC‡’î:Ţöýâţýűm†R¶“§˛ÝX E@D <s6>boęjM°_@2 ö!Ů›Ŕńá|oJD@D@ "Ý âY“Í" " " yN ˘NJ^fsg࣌r3'm´8(ŕ||†ä;ěąĎĘBĽ±űcę¶ďÜąs´˝„§M›6ĹŃÓť7ŁăĺPíT." &0‚_VĘÚ]Vާ®Č;DŻdĄťdE@D@˘Š€îQu:dŚ€€@´¨“Ň ° {Ń'Ľ ćsfTţ‚sńSśŚź•(QÂf …=ěŤÝĄJ•şˇę‡Ţššú z¤}o^ľ3+lcUŠ@$0räČ9mł| 6?ßĎI¬“ĹkĄgđé6­ ú5ĹŃK\bž@A˙ź—ýżnÇä=Ŕ÷ĆăÄ1˙-" " " éIWÁfAVâe5)Ů1aŕŔEٲaovÚ«ŤD3qăĆť9|řđ=Ĺ+ÔôÔůcÓh6U¶…!ŔŹ0žĹ3Ţö”IůĹłą˛adCUŮS~{ÂęRe<­Żëç‰+aď^(8ÇúŻç{6|łŔ ŽŞűOÁ!(KcŔ©z¶ôÔżČ~ŁĐQ Äú= ®xQOęöužĄ_ÎđŃóĘçč3;J3Őžęž'´>|Đsäŕ~ĎuwůćVZe8¦ż3ĚqRke˘DsPę]ç$+ÖčŕńŘ=ŕŕÁł‚M˛" " " 1D âË˝cµ†*"ĂŽÚďůtěSžF0¸)‡. }_‚©c=›´÷~ëfşDóŮ‘m" " " ŃB@NĘh9˛CD Pőţ?=űv˙ęÁ(scŤŰč©ĘňńŹîď9yŇ&’ëVşD뙑]" " " ŃD Ş–{GŮ’ŽŔ”\ś®T" ™"đő‚O=ńH6Ě”tĆBą‹0ôÇUžWéůăĄm3n]—G—9QiÍj¬ú-J,Ó= JN„Ě(tHwŢtH‡$]A4ÝŇ§Č wR6lŘp@ÝşuźĺMÝGIobťy3÷·y1ŘĽŇÉ[É›°úxěţ9é=ŰŃsz~ʉžÔťŤÜÎť;µ·‘cOmĘ^ŁĚfbľKđçIŹ c©óoCt;ăčEz!¶?Šíó­.[r¨_só¸ş*\ř đtą{gôß®öĽĚĐţžá­Ł­éh~uOOâ˙kšMmŞĎ“âĎrçşd™Ŕďtřť…/Ą{@:$*č‹sŠ+vŹť‚¸¸¸+qŔĄXçÜ”_AŇŢ ńZ‡Jâ´¬Lůs:/^ü|Ęâ|”8Í2‘ň×ů"8„p5NÍ[iWĎ„¨»Ťtot_O¸‘ş8 [ťÉ ßýב5'ć ôyFfű5ç g:.$ŢqäČ‘7¬pÚ´iwý•ň{ ·’î5uęÔŢÄö˛‹·‘M"\J˙ĺ)ŞbĺË=˝©ÓnĄ~•/˙_ě˙ĹU§¤@!Pď‚Ë<¶čäy{wĺŔfsp–(–çş>s EME@D@ň“€îůI[}‰€€€DuRĆÇÇď5hĚ:LÁ wĘŇÄĂ™%´|ůňwÉţ¶cÇŽDś{]IŻIHHX§Nť8é#ß‘ćŔéבö_ăđśLřŽJďlHÂŘ›č5úü†°’ôĘ:{ŇĎŇçf/~BA*ŽÓ™í×ĐďńRĄJ=‰Ž-´űú:´oßľ,ńź©ËS7ŹôxBĎ–-[žEÜY›µą™öÉ{ŹŠ+N!qÓ¦M϶%ń^[˘D‰IVɸž]ĽxńŻ ţ€8ćXE@D@D@ .÷ §ťmłfNżSĚdÜK\G_<ˇaRR’ňĺžćÍ›×Äaç•÷鲑+\z—:iÚ'Ś[ núÍqąÜŇvŕřüőtĘűw?uq„xBfúµFß±Ľ;Ő8$żgYöÁ˝{÷Ö¤}ł?YąďXHY/fZÚ Ď­8.·[ą97ď6KĎš5ëí§át˝{¤čG[:nu:b›ŔúŻç{¦ż3,¶!‚Ńת±gÜ+=6Íş~ĆcëmΨ\Ăłw×¶y-Ř5¬CD {tČ·hkĄ{@´ťŮ#" " "-˘ÎIÉrí“pp(îˇl6łýł'Ű´iSnîÜąűݲć Äx›SFţ|ňŢ,éÝ„ˇ8Ç[-#?tčĐ o%rŇŻOG5GWłfÍj’.‹Ns|¦˙x‰Őă„=›613r+ŽĘjĚ–¬°téŇ}8\K=z´˛ÉřŽëKXO›<ĄC<ľYŕ BQ8Ř&¸da(C‘Ýaň8(?{wxZJTD 0Đ= 0śĹßÇ {Ŕď,”#ŃĺŢ“&M2'áŃ– w:pÔÍ&\CĎ;éČ^Ž“ššş Ge'+Ë­g!×Âöš´ý$ŃéŢ×Ń^ŽÓË–`[_ĽQ|/ě”ýšt›Ă±ˇĄŹ?nKĽ—˛Śű7ŁfűMć„4Ç*i[şľÔfF’NÂŮÍÚ;vĚöĂ,ai;ŞT©ňőÓţj–žO>]ę}‰Î%Śí 'Ż8¦a´ …‡ÁŁ38ˇ 2y ŤśwŁ[Źç_…ä:ČäČ%&"ŕ# Ď˙ÂóůoçR÷ýk‹€€€@:)}¶ĚaYsłĎ °ÍźeĺWdÇů· Ýj{pŢőa&ĺqż‰ůóçď¤üQô™SĎ–}˙Bţ¨É°ś{Ѿݻwof)őw8ËlbRČ#łýú¬Ă®aßZň}XâÝ×ĘqśƆbĚ’Ü„cŐ–nďHLLluČÜ€ ŹŃĆĘďGn‹•Ű1cĆŚ#Dł[-Z䝌b/‘INN>“=˝o”··{ăī˒îŮVDŽʛČ˙gcGÖf3˛ÔúTfúsÚdÔŻ#gq«V­ŞłÔ]fi[ÖŤsń{h ¬ĂîJÁĆ„3ő—łĎ»m”(Ú2Š?ea$˙CÖűů–…6NşDçy‘UyOŔŢ0(ď»Q" " Ť@T8)s 3ËŕÔű}c ć ĽÇŕý8§ćVůˇçęĹ8Wv,űľĐ7«2?şV" " " " " "—ä¤ĚKşŇ-" @4,÷Î5|ěy'ec&,Ýą 9(}0l¦čf–_%ĄŹ"Č!›I©CD@D@Ň(T3)ÓŤN" " " " " " " " " QO@Nʨ?E2PD@D@D@D@D@D@D@D@ 79) ÷ůŐčD@D@D@D@D@D@D@D@D ę ČIő§HŠ€€€€€€€€@á& 'eá>żť€€€€€€€€D=9)ŁţÉ`5LýIDAT@(Üä¤,ÜçWٍ' 'eÔź"(" " " " " " " " …›€ś”…űüjt" " " " " " " " "ő䤌úS$E@D@D@D@D@D ĐŘThF˘€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€@”ř˙źž5ä}QIEND®B`‚bioframe-0.4.1/docs/figs/closest1.png0000644000175000017500000015540514420777331016773 0ustar nileshnilesh‰PNG  IHDR)Iw´¨ZsRGB®ÎéDeXIfMM*‡i  ) Iv´AP@IDATxěť|TUÚ‡oIDDš°ę˘.JŻé(«¸ ¬k]żE¬˛XVÄEEYׂme)*,Q tĹb#€‚ Ô„„„”ďy‡ąq2$“dRf’üĎŹĂéďyĎ3“;çľ÷śsGND@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@ŠG sçν:věř‘Ő&|˙@ –Ô?»C‡}ŐQ™€€€€€€€@ńÔ,^5ŐęC &&fÚÁsŤ8;;{\DDÄÜ@uT&" " " " " " " "P<2RŹ“jUA¬„ʰîÇ×ÍÉÉ™ăĺČČČČ,ŇÓ:uę4*77w2ľé%qqqcSSS‡“î‹ďJynÍš5ç:tč1Ň©ë­wEBBB*+2—?‹Ľ»ńGá'mذáiBÇVoŇďĘ[‘ś‹ěŰhs™˝É‚Ľ–B—˘Ëصk×&[9¨Š"«â 4&(Š@×®]Íř/üýÍXŮĎmC^# ‡ ăăăka,|šňáŃŃŃm(?úŔ×EEE˝Füň¨]»ö333o¤ţIäuÄ`Ů“°=†Ě‹ ňŰ o4u‡Ľ?ăčŃ]ştiĚjĚ9”˝ŔĘÍö„­RRRĆRv,mćS˙qdťJý4ęŤ'”*K@FĘ*űŃj``řë‡1đ‹őë×˙wÝşu‰?ď_?666ăa •]jÔ¨‘‹ˇrč€ZµjU:u3i“b+ÉźAń2VHţ@~2m¶PÖÄ•GüaúŘDů<ňR0r6ÍĘĘęM|ů3w#ă:úH4(ů›Z¶lůjóćÍw“wé đr" " " " " " " "Pe ČHYe?Z , Źm1&®wë`\íĆÝpѢEÄGcdĽ9==ý'¶tżľxńâćną"+Łă¬‚ÜNhrÚ™qÓ-ÇĐř“'LE^áIÔYăćc¨ÜΖîő”µŔwHJJÚkcęfęťĐ­[·ăÝş E@D@D@D@D@D@D@D Ş‘˛Ş}˘O±`”üžŠżó©|‚OVAnŔř5 Ž0btüádĘ1&n ĽŹ6vF¤Cř!ÁŁä˙ŤđaęMâMŢ ĽDçMŇ I{ŚŚÄ t=?Łŕü&d|Jý?ŕgőäÇäM@ŻŹČßČ*Ě»0‚^ÍŮ—ö¶q9ŞFC`TŹ=âŠWŻ^˝ú×±·Ź1Âsö$Ćdë_§¨´őŹ?ÚżžÉee˙|ĄE@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D ’¸Ľ’é+uE@D@*€Ţî]A ŐŤ€€€€€€ÓR D@D@D  2RDEy"p@T(kye¬žÄ‰€€€€€€€@hČHîę5Ľ tA˝•ř‰e¬¦É3ą&_ND@D@D@D@D@D@D@DŔK@FJ}Dŕ7͉ľŠ_…o…ߌ/K÷ÂL®É·~¬?9pâ`0źŽ?€ż__Îäš|ëÇúł~­9¨î­ÔE@D@D@D $jPy,ţG|ţ%|3|E8ëÇúł~­ÓĂô‘ŞL@FĘŞüéjl" " " %&ĐŹźásńŕ;ŕCá¬_ëßô0}L/9¨Şd¤¬Şź¬Ć%" Ą$QĘöj.•ŤŔďQřQ||ţiü›řP»á(pľ&~ţŻř˛>‘r" " ÁxÝqNäiŇé޶™#gżśW)gbu˘ĺG:NňĹŽóˇĄE@D@3RNk:t8:Xsss#ştéR7ŘöjW-ôb”ń¶j1Ü˝éiúʉ€€”-z‹Ç[XlÇÓ¬FŻ8Î^|®y ’Ř)ss‘GţO…•˙VłČXPú)UD@D |‘RND@D@Ž ň•”f\ěÔ©Ó=hv)ń:„ó[·n}ű®]»b<řëZ“A˝ׯ_V÷îÝeff>EVOÚeî ě)ĘfY; ź¶JnĹ}]Íš5OXłfÍ÷ľyegLÇ!ořşuëL7ąđ!ŕ»’ňjŮJJî-Cîě;z=^+)CţQH*N žń-Ă÷Á'ŕ‹í^sśŃ$lç ;L ~Šuś“ąx˙liĘž˘ĚVÄ[Ů‚Kg Ĺpń´ Jż úR3RN EÇęSD@D Ľ A$¤cŢLhÝ/11q{çÎťdggż‘””ô†Ć[FŚáŃ‘tWŚs1^61…۵k—[ŁFŤĆË###_¦ýźW®\™BűŽ´ąŰ1z¶Ya´ü[«V­ţá;ĐŮłg›AłÜşöÁŰ–b)ËŤrP‚m őx;űŃľ7âŰăoĹoŔW´ł3)Ă÷ĆŽż ˙^ND@D ̰tr+(/ÍuśóńŤÓg *^ËVđNL*®1u1P¦2q±‡Nr" " " " " % R#eŹ=â02^Űtůňĺ{Lďµk×&łúqQ39®1‘­ÜŮYYYyiň ‘flúcäýV×íד?ćţĂ9Ü0DDä¸rÜ<˙>Ϥ޽F‡X™×Řyç† †Qvew`tĚ h ń•č|µéŚ^mŃËVmžŠ˙’š7ŕw°ÔÎ=¬Ű±cÇYQĹpz3í‘wbýúő;ěßżżCNNΤ[’ż”:cměÝşu‹=tčĐcô52i8Kâââ®HHHHEÖŇŻQvm2hógd\Dz4é%111ס–:rE0C }Ç®ÄŰ÷gţeüü÷řňvövďÉxű®ďĆŰÍísřr5ž#_ND@D 8]“ĺ8›0RÖAĚXŚ–/sážF<Ň+vÂŮŐQŠ.ÔTD@D@D@D@Ş%wB’Ác ě€m§k t•Ŕ0řĆB{yH@‡®#>ňŻ„Ń2qőęŐ_¸ůôŃĂĺ×cX<Ý-sCŚ|±Ôkĺ¦ cÉkiiڵ(IzÉSđ{ÓŇŇžµ2ŚŹfhZĐ AĆ”żLúéľ}űţHŰÂH»q&oƨŹIŹONN¶ľćSçq šfÜLŁÝxB‡­ë7RvŃŽ”ő$lźššz±•‘߆`dTTTÂE´YBž+m5^ Ś›çĘź€ísl‹·Ő0#đ_âÍhY_Îäš|ëÇúł~­ÓŁÂ ”ő†Î­Gżr" " Ĺ$`H ”wXuÂ›ŻśiiÜꑎóäá¨ţĘE@s‚ĘőyI[¨ŠXRgç6ţ¬ţ¬ýFĘäuĆ ŮÔÍǰDZQΧnş8!}eł:s"çXţĘ*ˇ‘·‰­čŃ[·nÍĄ¬†Ç 4íÝwßťqß}÷ĺ°ęŃV4fbpýٍ30ĽŢMÝ\ŚĄcIojٲ% 0¸ŰٱăVcľKôv¶­ĎAö+ôóír¨ż…şM¬ž93lb€ÝĆęÎ×)‡NSL'úK ]WŞ„ĂůŠ]+ŃöYMŔĎŔ›Ńđ.üUř˙ĂżŚ/+7Aáí{Ëî@g<>¤«m2śeµ†ľµ!:Ę™ňëě!ß Źś€TžÁ örŽçxĘq>ă©ÓiŢ•&ć/ÍyćO‡ŹďF¬Ű&h˝\ E $ęŽx«Mć!g|†“k˝Ď(I[Ő˛$R#%¶ÍçNôFą ÍXůť™o#Ýf sm|ó,Ζéúl}δ-Ň–¦ž˝HǶ_Ű™ľ•ͨhĆ@Ëc[öWÓ1.¶ źŰYúo˛7Íź?˙3ڶJîM«çëĐa'ž{ĎŠČČëŔ9›{Ý:”™ŢÇ3ž<„˛ˇ)Íçť•HůNo›4dětu˘Ž˝pȶ‡ËOŔ †—âmŰŢcřßăËŇŮ*Ü$ü0ü𞬬Ü\'Úqr®äćdLěĐąoDćFüýŔ[C? VžÚ‰€@%"05X]łhřOĽ=irÝRljZč8Ď»i…"îj™wZNDrţȲŕąNÄćp×Yú‰€€€Tm!5R6oŢ| +kbđëŚq­‹š•†0¸˝ÁJÂF®Î-ó ©ó é‹ű÷ďłhѢ ·Ś-ÓO°ő9Ž´ç|I7?Pqű_›ĂŁ_Ňľ†Ę欌´U’fL¤ŹÚwâ^ćÓďűďż?Žř•´™ÝłgĎc9“Ňĺ ŃŐîi<Ůű‰,eĚv¦¦ÇĹÇÇ×1Ł*ĆÉą”§ŕű`¤Ý ›©§‡ŻoSeOŔ =đQe,ú^äŮĹĂĎynNś‘ě7ż$vČĽůĽc|rúśˇaaH ?XŇHD Š¸…ql v,ăż|ÍÝćíÄ;Î~.šc69Žçf°rig+)6 –˘_5­&b/ś×ĹÉr&đ›?ădŢłš _Ăc!5Rň2›LŚp¶a+'Ďg…bĘvú&‘÷R Ą1mŐŞŐ\Śś7îŮłg/áąťłÓ9+rí/Ć7Ŕę×±Şsg<6ëŐ«WC;#CýÚÖ[¸pa_ňŢĹ@y áZ¶r§aT|^%ţ"†Ć'8?réŘŽ‹9př ¬”GűRmi aGŕ¨aoĚÍÉą3+Űsvyˇúq*Qí:CçĆZ!Č‚śśČÚNN›śÜšsÓ粣uäD@D@D@D @aµĹ… XM™\ ¦EdÚVlŚ|uń?Q5`1FĂŁ5jtĐwű8«;;a(ś…qńd;ďć>!lń>ĂeŠÝ2Ó‰éÄP?ÝÍó yńNŤíŰ·×ó3}E`¤lŔęĚĽ3+}Ű)^}Ô<÷¦ěçńpq¤ńŇ€č!WĚžÁ19¨´âŃÜV÷Á'ŕKä^ĺ!&FIĎq-L˘_ę8ýYYy++§› ň~Şĺ8í†;NPóDÄăÖŹ¶r"ŕ!0bDnŤ™oý;ÇÉ˝,pčĺÍŢfç~ˉŔ˝ ( " " "ŕO€ą´\Q|Ť”EŐUą”%Łż5 '"ç›ŘGD:vk™:¬Ť/°’˛E ˇNÄęČȵ’2%•‰€T"ńč”ĺ¨\ލ±±2JŤqśS/tśíäE`¨\AŘÝ[öĆKţĺâi”~Aő¦FUž€»’2×Éíh°ĽĂq;ÇŚ T'˛ÜçöŔ527r`ÚŰCňíT FžÚT ÷2 )«ÄG©A€@Ůůvď˛NůHc;w۱ď,é’*…°-Ţ9v÷‹2uް„ÂkWRkČ<¶ÓAA."biÍČÉ©s˙Ż b剀@%%`gQöÁ[Xl‡˛1•óVa¤ĽÓ ”&€x.ŰĽŻb5ĺF®¨Ńř‘Ô+ĺĽbwđ[Ĺ ôű­ąb"ź€÷!ă;u†˝}vVn·ă\ň×8śb#ĎÔ·†&TVš<¶{¦ĺqlMiôR[đ#`g8ĘAŔ¶]łŐ{NŐT,U€@D.ůů5#şś7ô\(«ŔGŞ!€řř™ŚĽ…%qOb|¬ďm°šs'=Ű»]¤żŔX9ŮM>ýĆoő}˛‹Ś«_‘‚Uˇz°ßtűm·ßxű­ÇĽ^ČSĘęÍIٰXIÉ[­ë:t({ĺĘ•)ˇCˇžE p˛1OÎć©Ĺäó†~VŤIhč" "P VE^ä[Ŕ[ĽŹp#o_śxD2D Ś¤Ďşu×2ď´'bBnDî6U°Ó[ND@D@D@BK ä+)yQÍS)))ŰxC÷ˇEˇŢE úŕü©Lö’?yrú[CGxKĘę÷-ĐE@D@Ş#űÍ·ß~›Ř\Ŕ3'¨Ž 4f°!+)/‰ŠŠę¶zőę/†ŠjB ĆÉíóóĽˇ?¬&ăŐ0E@D@D@ňřuöoČąŞŢĐąőŇó)%" " " J ¤FĘŽ;.ËÍ͵­Ţoł˘r,çăÜCz1á-ř1řĽ´ćfňú@ĺkwS÷4Ň·QžJČ1PÎşČČČë©ű<ńń˙ŕ ÉÇ ó9ŢŇ}˛fŮ?4ţ>ę~NYoÚ?Aş%r—"oěÚµk“É˙+ů9ä ¦m{Â…UŻ\µjU:zKýgńgă·ăoŕüĘ„r"P)üFCŰvťčÖÁHřŔd ”Ç{ËwąeÔ=@<ďLK3`âóŤ Łă‰ä%™ŇÚ™y_[śö-đ02îµ´9ę:Ýşu;žU“–üŃţ3Gľő…Áł…%i·‘vVäşx"2Rş4Ę/´Ő´Żŕís(®ŰIĹ“ń©Ĺm z" " aI@żaů±H)ž@H·{˘v–7?ŕIn[ Iş>[żíěG3şőΚyë-ˇĚlcreOŕ!ŢŠT{R ĺŢKýúŽc†ç§JŘ4äŐÓWÜ˝ %lEŻĽTöď@Č˙ž¤@Ą'PÝ~*ű߼ôŻćż[Ţ9Śă†•ţ ¤€€€”r“\F‚1Fń˛›şîY’ÁŠĹ€Á”—ĹĹĹ˝bĆGVBÖćĺ:»Ů>Ţ*11q·É1bDŤíŰ·×+i_ö2ź?üĐ ž6÷8úşť>çc´Üâć),]‘’Č>ż»‚7‹6ă·»śŕĄ DTh“zCçÖKYq÷ţÍ;'ť&›w…ÂWgeJŕëO–;ß|şÂd†ýďN™\ÂĘš@µú đÂËmszO§íz•5KÉ !•[ĂŮňŐ7Î÷ĎwrĐo@…PűNîEÉaŻĄ¨pŐj˘€áĐlT51&.Ç€8śřvVQ^YÔéëJd?W˛«±Lűľ®nÂŽü Dj¬ČýđkÇ ÓvćéĎřpwąýGßá\pŮ„p×Sú‰@ˇľ4ŮY4ëďV^­~w ˘‚`č7 jj#a@@żađ!„— 2R†×ç!mD@D l„ívďň ÄËp®Ć8ů<ľg^>2pŕŔ«ËŁ“)eąŤÔÎů/Ąidw¸Źáůâ7"x/'" "P9č7 r|NŇRD@D@D@D@‚"Pč‹a‚’ćŤŘć}ßóz‡mÝa®±Ôó!P‡ř”Žü÷GźĚ`˘§Ńh,~†ă\KđoĽ-Ě”_ú ßĎFš‰€€€€@™¨VFĘ2!V=…ͰۇxčWŃ“‡řŻ,öŠŢ‰śą,¨üÉq^&joz·ťŕr" ĺOŕ¬ňď˘Jô°‘Qü&#Ńo@|RCŞýďC §ß€âi¬Z" " "PBj¤ě„cëő,¶Fź\c©0ĽĚgçZöˇĂcŃ˙i^Žsz…ušŽĚ@™š®ëµŃż%K«Kkłz˛ßŰľ{ËJ%LŤE@JB ˇ$•«qÝxĆţAŚ_żaňAH ¨ŞŔ*bńt.ż1^ő!" " !5Rę3¨4ěin|µ=g»ăÜý”¸¤ 9€ŚËů†ŔvçN†ĺ˙ a©•”ŕÄ׬ڵ˛ën¸8ý„ö“Hm÷ę]Ę”@|™J«şÂÂé7 ęRÖČD@D@ÂŽ@ČŤ”¬D¬É›°ź ĹęÄoyˇÍź8+ň«nÝşĹ:tč1ňC-ż$..î ΕLeć(ň'ăíŚ*ËKţĎľt»téŇ6++ËŢć}*ţËš5kްfÍšŐ´ý«ŐËÉÉB`ow~¬FŤź“ž†Ľ=Äoˇ˙Uú·öţ޶ČľđzĘ"ÇtäLaLąŚoů‹‰ß‚łnÝşĹţíĂĎPÍđč`€śqň2Î{üd2Fľ-ůšÄĆĆ毰 ĆŔ\ę 0`€-ŚËç¨kőÚ%''ź0pŕŔiQQQÝÝ äżÍjĆDd/#nvŻYÄ· ďmšułz…őďĘđi7†ĽgZ´hń)ŢŢ=Ľn=âSécýţčć),1ĺ´7•˙ö–¸éo n#šĺ8űĚP-'" "P9č7 r|NŇRD@D@D@D@‚"ňíŢh˝ËŐCžŽlk·mÇNa»öCĽ¤¦aĆDó-Z”ÁöéŃÔť’žž>•ĽE‹/ľ‰&۬ťëbbbnĎČȰ•r›ćĎź˙Pv ;oZ9móú$™†Ś/,źŐ–Ä=L ëßęäŮ’üű“’’îµräX?ë,nëw‡cúż”ţ–â8˙Ň!č?´Yq¸Ýx‚ä D„¤Éן,wľd‹ĺD r°ď°ś”ý”D‰Š& ß€Š&®ţD@D@D rą‘c^NAč0LΠ,߇Շ[1LľH˝«‹ň˝•+WÎÁ€Ů…作]9đ|+sĘ=­[·î÷ý÷߇¬+1:ÎîŮłç±t0X˛.° ÔA-ŃsţAt}ÁĘű÷ď5ۧn‘}úÔU´p_Q4%·ălď|ŰÂëQb‡ŞÝu8w ÁżŽ¨Ćß|şÂ1/'" Őś€~Şů@èşÂa»wt1ř5Ą`ˇ(»wďŢU‰ç®É1ŹÇa€LÂ@y,ۧÍŘô:uk dîÖ­[GŮ6ňÚµk?Ať •QÔ+0«°ţ ¬|8s :^ŢŻ_żÚ–ÜłgĎóśˇ91@}O`"Öß_ď.aű©ż›ł×áí|łĘâĚ8//Uĺ;PYţî¤gřĐo€®‡UĺzXÇľWi&" " "rak¤„ĚĂý&±‚2—čŘ6í…¤ŰÚ™Ž„¶ď5CĄťýx+#ď Ěç8_ňN Ť7Ńţ#Ś…¶ťűÄÄDlTĹvö_Xkú{˛_÷íŰ·>?GÇ8ĽŮĹäĘž€I9y˙wmá'ÔťyXʧ>>Ő˙" " •€~*á‡&•E@D@D@D@D RŔČa+& DŻ^˝VććłĹűŢÔ¶ö˘úwűđ 髎»šŇ7_ń2'`«g·ł!—·Hoő¨˙#ţč2×DE@D@*š€~*š¸ú˛#ŕ9ĂżěÄI’€@U!`ŰLäD ˛čâç–@ů˙Qwi ꫪ€@řĐo@ř~6ŇLD@0#ĺÄ@T&" " " " " " " " " ĺI@+)Ë“®d‹€@%&ÎgRVb¬R]D@D@D@D@D@D@D@D@D ¸d¤,.)Ő(g}泝ޥK—ş V¦€€€@µ! 3)ý>jŢĚmoé>´~ýú»üŠBžěÜąsŻśśśičvfiőěÔ©Óq h8oK··]ˉ€€€@‰q‘ůÄ=4ş”xť Âů­[·ľ}×®]1üµ ÔűąĚYÝ»wo”™™ióž´Ë&ÜAŮS”Ͳv>ß$fq_WłfÍÖ¬Y󽛇łCvvö«´;ÉÍ+Ič;ż*I»˛ŞË8ď‚ŮĂłgĎÎ,+™’#aN@gR†ů$őD@D T´’ŇŹ|LLĚ4&ĘOúe‡]˛´z2Ć><ű‡ÝŔ¤€€@Ą €r&ŠžÝoÆ ÇGFFv"}jRRŇC+W®LÁđVÓ<†ÇžäďqÓěa±qFFĆ Ę>eNÓÖÚרQă/ĚO¦!·· €ňżąíÜĐ×@iő˛˛˛ľŔp9ÔmS™Â#FÔ@ßI{öěŃśĽ2}pŇUD@D@D \Ô,©%ĘÓëa<ý¶§iÇ2ą}śÉéy< ďKhOçď Ľž˛ʦŻ]»v “Ő\V.!ßž˛ßŤ? ?‰ÉíÓ„Ž÷iřÍ”Ű[??`â{MbbândýŐĘ1Ě !°'íŹ1ţÜV&Rwń[żŠ§ţ#é+‹ňiŢ­K6ŹÇݎÎ]Ôů„x>G˝żˇ×Xä¤Đv«źżďľű"çĎź ůW“ß3 ô ů9=zôhJ?·P6Š˛Ý”ÝŚţËĐý°¸™üFäťXż~ýÉÉÉ}‰ßŹŻ‹®s=ÎWĎ@<(»Ś>ĆÓ¨9ţKĆpMTTÔ.Ú?Jş.ĺłŕ=Ún˙y-é)ăËX“ÉďDţ ôë@™śŘĘ–Łů>ü ľ‹]»vŤăłŔŐ5ÁČTŠ'Ŕ\&#ăĺ±±±M—/_ľÇ4°yżٶ·4+mu¤A2Cb^š|‡éĹ}ÇśÉć8Gűőäd®˛ßÍcN’ăĘqóüCć,­oóšţôŐ–¸ÍOʼnńň~sVű·AO3j1ż˛zÍ%‘YŹůĐLćLgYćOń›ÉďáíŢô¤/AßY„GĚQ͉ńöYĘ.¤ţĎÔ{YŹlÝşő5kźššşťz’?›:‹ mž8†>×Sü,ţlüvü ôą‚Đt8bŽçeX¬9ŻÉp"R#%“ŔVĺževP¶0{‘°ľ˘Ě¶Ťa˘j“Č(ę=ÇÄu)ńµä·ˇÍhüÚ´%ďu&vŻb¬Ç¶ˇw(żŤř­Lž!m2ű“×5Ů´‰!o á˙Č@|ńż®B¦Ő;DÜ!ţo‚ Śzg09˝¦“îee®c‚x őŻDî(d¤L¶/ýoÁ‚&wůWREţżßyçťťäý˝^Aöwäwˇ| eo3¶¶äĹâmroß™żţúkCŇ˙"}-á7ä٤×Ő-OOň äAÝc){Š>lŐd2b \€Cż‰ä]Hů8ŘY˝ůÔ» ż„:Ç›aóvřďˇ,Ď8Jž\5$Ŕw ß–>ľ÷Améă{îŮŇÇw.$[úJűѡżŽI(-Dµ¨Ëtŕ·a§k t…íâć:ć ©đ‘%Ś–‰ľyôŃ‘kď7ŹyĘG?uÓ’W‹yKk‹N&XĐ AsöíŰ7–´=Ä>ĂĘ\Çò–Ěë ś_1‡kQĐ\˝.ŕ·ď+çá· m~‰ż˝[·nmhÓÔĆÎď[s˛m۶ťGÝ“Ž:ꨶéééŤ×*ÚÍEżëđ#kž\{8líía˝Íý6⟣ݯ”·Cç ŕöé6ôs"uŽăQv>ůĹšóRWND@D@D@Š€M®Bćh]Ŕäëž$˙˙9ŠxVCšBL°Ć<Ó˘E‹OńĎ o ˇÇ ă&&„óČHaňÖ” â0ň7“÷/›@b`»‹ôů˝zőjhŤčëm›üRľŚ¸ gßB˝·©×Í긎É_y({`ŐŞU; đOÚ<źĎ°KťáäżÂ“ëU6&ĘCI"˙OČú—ĺÓç‡Ä_Ŕ_f«()‹§Îťô˝2;‹i+~8ŢĆťAŢÝ”ÍcŇÚŹôƇĽŤÄź·:9ĘŽŕ—Ś>=i»Ž­XčÓ86±ŐśÔO!žI?żPÇúŢÔ˛eËW›7oľ›1ßAÚV88«WŻŢF˙6ᗫƸišÉđ«ý–>ţntLB5ţ;ĐĐE@ň°‡6A­Ş7)ĚIŽĂ˙śObÁ‰ÎĚŻp=sŁöW;śËu:ąí؉rŰʧ1?ěî_?ĐüްądďŢ˝ŹEÎű”źes9â6öh;WóСCçĐç"·T8bN†ţ¦Úq(ŰשSg FÔă_~Ă×Ă€‡ëÉČČ5Ô›jó@ňěŕ@ňďmÖ¬Ůći/߉±ôÔÂćx®Ô+öś×mŁPD@D@D@BM źÁ-ĘŘÓbŰĆâş5n„IYKâ÷ł5ƶ‚ŰdÖ&më,nCÚO‡cž˙S)3ŁbKęĺ=Ç@řąd¶6oµ(ßĺÓ&Ťş_XšÉjń|,HŰůéľ îaŹôŰVßĎťDą­¸ô8ěžţ1r¶d‹Qž.®¤˙Ë™ÜšŽ¶˝é;o["e¦ăGÄwâ=“T&´¶ş2ŹĆÄŐÔł•–G¸‚x$$$üŚçá_`}Ť¶"݆cd¶Ŕw€ő^·ŚzOřŹ7­›§°z¨Ě[úřîźÉwů^ ívĚ­ĐîČß»= FŮi”Ů‘ŮMŕJ¶-^m«‚ Ú.Čßóßcř{|YůŽgŘżţnź@žýťç›ŔßR,ŹŃ×`ĘbńK¸ÁĽ‚żŃT®QKHżFŮ]´É@îź‘qi[-ľ„›Ôkěl7ęȉ€@Ř`ޱ™•}'ú+ĵ+‚km3ßyŽKs}Ű̵®Ť×Ëú\÷2íúč­g/ŇyÔż^aiÚŢÎ*O›—mâ؝ϸ¦ŢOÜ^Ŕ“çÍŻĐß®ßyó7ßą$ůď"ä,ägRďCŇÍ`ĐĽsńysÁ‚ćdś§ů&ó,3ţ7%%Ĺ®ő˙ćÁ÷]¤=s>Â<ÇďŤgŽH?-ČŚ ŻŤ´Í+'źéćx´)öś×W°â" " " "J!]IÉän=“¨Ó\¤Oő‰ďcwÓşć⸩·­2‡qŔچţ.y'ą™öt›´Mvm[ŽmĘrËŠ ™`ţLŰ8¶Ůů‡1á˘~ýúŐvÓŢđęĺMŇ1ntĄžéŚŽżsëŇ÷)Śoă}ä51ĂŹ[Fhe‘•§#mľ§,Oq34č âÁäőR*_ÍX®ă©}cäMD~„żúŢŹ_겶úMe ô'U=Ó¶ôń]É[9Rľó…n鳇n;ľ›ž-}¶­Ď<K§»enČw¸q{€ŕ»ĄŻ1ßß—ůxÚ­ç†äÇ"·•›&´#ZZÚdQ6’´ýMž‚ß›––ö¬•!k2m̓ݷoßío|{¨0ÎdăG‘ţôxVíX_vlÂăÜ`Úµ, 9vl‚ĂÉ)łëBGĘz¶çü±‹­Ś|»IÉjź>„‹hł„<»µs`[`Ü´›_9+ěĽŘ‚B5™ótöUŚë÷ ®ű_s Żë›ďç:÷ y=ú÷ďă[Ćőň ®ŹŻřć•$Îo–˝ §;Hšs}]f÷ěŮó_äš_:—äš˙z÷2O|9ţCä[ş×đ·®ăGĚQ۵k—ËYăwyçcˇÝ(ĆyąŰĆ/ôĚ‘igsfŐŞU«…;GCFâf  8ÇcŚyóI?ŮJŠ€€€@Ř©‘’I—Möş3ˇíÄd˶Ń\ćCĘnÔ/wŤ‚Ľőđy&sf (Ô1![Ę„±·ť5d•¨šá›+VäŔnůĹqśwd+5ż`iśŰËBÎDźI>ÓýÚ/#OĂkŮVp&¦/ /–’˙G[AE~â¶Ąz †ÖoĎŠ¬?™[±EĐ™ĽĽU˘–oŽń¬ ż;uš™lâĂ—ďÚ7Ąć§¶ĺś'îYč6’t”·uˇÇŕŠ\ÓőlŻ.¶ÚlOů×ZźfL%ߌ%rŐ—@ĄÝŇWÔGĆßi6Fü‰¬¬ÜËßËäňrhţŽŘ.čL‚ɦZŢń ´/ôŘn–ç`śĽŚ~~ ™méŰBŰ&®~´}ÜŽV ďuʢ©;Ĺ» )kPW·žBĽĚ&“ë•=™ĹĽˇ•éĹt®×±ID_*ęi­ZµšK˝™ßMłą†Í9lţĚ‹‘ń¤É ŇÍĺe4ŁěAkíÚµź@^×QwîăÉ5·Đůe…Î%ą.˙<;>gÉ@Řx34~NţóCO_î¬ęĽ‚‡Y˙a>v9˙!˙cäÄx_ ”ÉC2˙‡ŕsŕ﨓Ä|öJ“cĆVÎŮüÖć¤ôhŽçv«PD@D@D@*)m[%“ŻńL˙ µőřHgA üĘdlOé?g‡ĐĘ sLú)›ÂĘŁĎ™Ŕ}Ť¬?“\Xýbä۶ËŰ‘e[ľźC§›˝Űľóšbh}”DÔ$ {ź÷śIţý´©ÁŠ€mäEţn&ä÷›±řhüČý á=‰ż‰§â“—Ď1ÁßŔ$ô>¶m@Ć×ÖĚWˇčÄËČ>~kčkqÓŁ‰N1‚|BútĘ˝}O źŹ¨·ťlŰéŐ¦+úźI~BŃ]©FU%Ŕ÷~3cË[-쎓żG{™Nˇ«{Ýz|—6S·Ť›vCľ‡ő̀囹÷FĽŢ®ç{ů’[VPh[úkçÍÚ–ľŹřžö/¨žožéě—ŢäŢHŰ–>ĘŇwěŘѢ¸˛Ń9ďxd·Ŕ{ŽM°Łř;ÚLů Śóx®#)č÷_Ű í-łí(«áęBůNo< ;]ť¨“A~ľ›k·ŤB5®ÓŹŁťˇý>ó‰¸~˝Íuk1fn*J73Î1Wş„zMxpű óśăyŁ5żďŐľ°r~łîD‡›Đç#ćf_PďÎ)ßí[?Đüިą$˛ßEÖŻüf$ăí÷-‡ąÚ"_ů…Ä_¤mzmÁIť(ڍŻzë.ăw ‰‡ě§ř¶őÎ9GSv­Íá´Šţ‡ĎGÔ+tŽç+Cqb°'ď9Îq«˙#·7mˇ1ÜŐ”ľůâLä˘Ý Pť’”!ĎVytÔ9ÚV`ůWbb]3 úç[Ú»=źŃ¤ z6żíáU+4ĎX0Ń= myľşˇŤ˛äV¨B*¨Tě{Íwđ ›ů¶ô‘lůöwDĽ+yůn©wy_ůoé#ďeĘ޲¶Äßäď˙Ż®śÂB[ŐK»ął6GŮwÖŚ€´˝‡t¶˙–>ľĎݨżĹ•GÚ΢ÜhiÚŘ îýî߆É1řŁĚ$Y#)›oí˝cÝdqs¦?ĺ §˙ďai3—˛—¨ÓÚJżżĎâ”mĂ{Ž˝°ĐŇ–oŽú÷Pď±Ă)ý/" áK 4ó»s˝¬W–Łłßd|¸Ëő¶Đů•••fL…ŤťjůţnşőŠšëÚK 1P1g4Ýß1W–B¨î­:JE8y+o}xbţO•?ä&ü_ô•ÎäëZžFßčŰ/«ůR}Óʼnó„ůő’‹S·8u··¨zÔůD5wEÔdŘ“}Ć_PQľ<ďxlLA9ďÓţ#Ú2©µ3“ň¶'y·•·#:TFĄ$`[úřu·ôťĎ÷) ăY;VvLb@ĹÚŇÇÖ»˝[ún猭t¶µŮ™e¶Ąo@) Ř–ľWůűx‘›>;ĂĚVeç[uČŠš=\gšŮÍť­Ü¦|¨_ő.\Ř—ĽwY5l+zÖ"/Ť›Ów ‘ťwL‚źŰúmÇ&<ŔÍg[ţîż6(+D·ÓŃ­)ő§˛Bg«=ś`ëž˝ öJ‹€@e%`sŤ`u÷ÎG~¶}AíŠsÔO ů•·,č1¤“ĺ1Ż=H`>ź{ď˝÷äËđKxwůĺňŁuxEçůĘřŤ€=(_´h‘íN)±cnqŢyçUÔßh‰«AذďÉîÝ»sĽ×˙°ÓO ‰@u!pÄ꺊¸¸QďDźöĘB‹b˛őNEę ľD@Š&PY·ôqFŘ7\W椧§Űöş-Ś4ßĘ~ÂůFIĎńPGŤÂ¶ ú“ŕO-б Ô}Iî$tHŔú&é…¤ŰúËPZD@D@D@D xż­Ćů€ĂÓFć`˙W<©żŐ˘ÍířŤ?ö>źţVRybŢ1ü@xC¸h]ÔęoCś‹ľďá‹<ĘÉ““ÝxIC[áN_oń=YÉ˝ÁJK—TFYÔG‡'ěűLŘŁ,äI†€€T ĄŮţf“~řC±Ąďh˙íćL€:1 0ĂĄĂVďú}xm´1ř“ŕß®°clňÄÄăX˙úJ‹€€€@5#PfŰ˝™Ëĺ{]Gć®m'KAe…ĺŮŮ;·†tçaaú•$źq<€ #%zśŠĎw<’ďX(»˙sććľůEĹ©˙‰˙±OEµqËéď2Ú?ë¦CÚŘń2R†ňCPß!'ô‡k.D@D ĚH‰áp+ O.…5(3RN,Y“‚kc\ÚĎę·SÚ‡yť˝Đp6s;ĎË1öL'Ż#eqv¤Çî,uĄŘCsŽĺ™Nş3>…vđ’ÓńŢcŽ&ĐîňZn¶6첹†ź syŁČÚ_AťóI7Ž‹‹ëÎq?3˝ü#éń5)ËbÎŐ«WŻţ‚ü›Č3yCÉ_FIŘ?z˝`ŔŮm3™gâŹ%˙ę\a;It0¸śúwPÉŽ=ú•v‹h7Ám„Î˙.OşyzçÂĆŕ(ĽCńuţKčŘ9ଠµ#ŮZ#/ůűy)ÚµW¶˝(]ŃÇŽo3ť2hjă|ąsČż›ř)kNľ˝ŘĚ!ťJŮąçĺa-yîXţ–ö˛ŮŹđůŞ(>ôůOú섎öÍ-ÄísöíF™ť×˙0şŻä©ßóÂͩȽԎö0c;c}‚ň\Ľ˝ cőň•G^‰ăéB#ŰMÖťl,›;ŘQv2y˙@Ç8’M‰OĄěIôśAú$ü)3xĘž§ěVⶤĐďs ď–µ•n÷~~äí‰;CŐżú(5ÚHřă÷Fa0ąĂ]5IŢ8Ś?]1žÁĎęĺą\EboŁFŤN4h?Öd۶m·YÚMƸ8ŠčGÖŢĽ(˝eÓ-MÜänˇnÂuś?ŢÍĘ™_.ÇŘy¶·ÎtŚLă˝ůöR×&ôu"ş ŔhşvWSßc Â@y7yÉ´ëEťvÔÝCú&kČa,˛Uw“‘u şśX«V­łI÷ ÔĆ-CŹéôqíN‹‰‰BúQ3JY9A3fQÖĹĆbşüń?XY ]m«4şÜˇ±m»ŁO_Ś›ë­r&apCtťÉ4OŹ’<VĂ^÷7PZúĎrdS{ Ľ‰&‡>wĆĆĆöő‘ë1PĹÇú§í řGĽm(MęÍ#x-Ü.â;dź×^>KŹ8ę9đxÔú˘oűŢ™řĎ rkxĽĘQT7›ŇÚ1^»o™B»ŚŰŚëĎZ~iśťĄĎŘÂótęĹw÷w|z™LŰFŮlĘ&PÖ›Ďň Ęn‚éIčp-ńßă׺uëÓĐó š\†!őwÖ6@ß-k+'2Rę; "P- đc»—Ř9Őrđ´€€€T iVţiCan÷ •·XŤwAQCør1ugÚ uĽ/ďšJŢ€˘Úů–3Ź´UošIž6XŐľ¤¤¤s02]MŇVš5´|Ż[ćíëWú6#ĺ/řoŮ@ú?#áĚůóç?CÜV]žî6,,4ť‘1ŁŐF«sîąçţB0Ľ°ún>ƤV´­ě–·rĺĘ]f:Ď[gĺg˘ĎóřË1ţl«L˝e…ęę}9ŘV©.€Á_1´µ˛Ő—ŢvúkK˙[ ©dźÍĽśň'+Ç řŚ’Eé‚ĺSyŮči/ź}ޱí¶ďßgH›ˇÜ\ˇ|¬Ď놾‘đů3ÉXd5˛|×˝ç?ĆVáúäĎ&˙!ÚMáó;ŹďýW>eAEáŘ™Křţ¬3Ţézdń=nCY3ŚŁăě{HM„ľ@IDATyđŕÁÇ(8„ţf”µqd`Śľ×Ú ç6˛Öŕ[áÍbč»u¸µţŻÖjVëŃkđ" " " " " " •’†’,_Ă F•h|ݢCť–<+­.râ0Řuol/jtűŰłgĎ{ÄW#?‘đx ·¬Đ¶jŰŠ¶ĎÜzÄvă……čm:ď–{Ť ;Üta!cmAŰĽń[=/Ű‚l_;ŹóiiiÝ0Rť›‘‘±ĂÚĹfm…b@]©s‰­ĐĂ@yăŽvďgŰŁmµ¤m/ŚóQčĺB­şŻ«É*Ěťn†¤Ý¸ŇÖôĘç‚ĺ“OHá‰Cn†ńúôĺnÍ/”Źqĺ;´{ 6Ćż&zűGQoIąÇřLhźÉ«ś»ącáŮ”]˛uëÖ)¬věŕűý·z%t¶’ó[· r#řĽ",M<š1™n3 m‹ąągŃ×vŁyĆhßĎËV|şźAˇ Šřny%+¨Î´’˛:ú»€€€€€TśWĂĘ`Vý-)Ćp–±%uŚŐð‰áĹVV&X:Xg/i¤˙?4lŘđď*Ë4Ś;OQ2©–@ť.µk×ţŘVµsĚ1›Í`äŰŽt˝YA÷ß<âžmÇ”ťŕćcdęáĆ˝ˇôš[Ăc ‘ý1Á©0kciňë‘w>ě>°4ňZc€ŞÇJËĺ•î…ÍËčč® K Jşz_ Ů‘Ź_Ón†Ĺ+­.ŢăHo§źNë<†d é»–·řúhëŤűďc,˝ůŃVŔĘľŁĐ±˝OĄ$Śçşé^˝zą+X‹ĂÇmVŇĐóů ż]ŻÂ/0>KľggPĺcľĎ´jŐj1ńÚ°Í÷9“·„ĽóăY1IÚăřě;6iŇäWÚÎí2#¶oß^ďpéá˙ůěăasšo^ 8źĹ'ôÓßĺ S[…kăqŘĆý%ĺŮ”×·ď¤9ŇżRäc­Z.@ß-WuN`CÝ´ÂęE@FĘęőyk´" " " " " "PU|‹1c3ţ¬f[Šqg˛Í68 63Č߀aĺ|’S-nŰd­ŚíŮ·bHBťŘ^ý-ńĆ´ťleÔ»›ŻÓŽh‡ ć]áM–¦~=ź˛ł¬ťmű%xj÷îÝ!wuâOü+äčű.ę¶Ä0¸ ą˙ăÜľU´NńmCú u·řća°zźv¶=|#ýXż¶]zśLÝzČ~‹ňŃ”% ˙}äGaä2Ăĺ0{‡ü÷9SÓ „Ó`çٶNýÓHŻ lőß ďß{챯šĚ@şîÚµ«1:ëŐÖŽř$dMtu±ó‘;ľ_#{!ĺ‹ÓÓÓ=VëŹzC©ďo´łĎk<ĺőY=řr×˙ ťělPŹC§»‰Ô˙jfHýń ´µ•°Ĺu÷Sě’Чqť:u<çŹâńŮ ™f€[ÍX·çÜĎKň}ÖŘżCNřL§Ź©¦ńŃlÁŢDÚ^Bô&ĺłÜó*­Ü˛G—Nýż—ĎŰ貹 ´˙íł­%+43éc$yĎRö~ ń§0d×/Jr Č(ô»ĺĘĄÎhâsíeJnžB(k÷–Ą@ 6Q=zô F¦­ Ä{VÓľ 6¶2Đt*¨¬¨<m›TĎŢě]µwD±­eUb3ÚÚöÝ#śµĄĚłšŇżĂëq¶Ň?ßŇčÓÔ]eç_HWú:š­ÉÇř·qÓ¶‚ŇúuÓnH;32ć3ÄşeÚ8lśéKŰ(džPPYQ||ű(Nś~&áŻ7¦ř™âceĹéÇżŽ}ö™řç»iŘť„>sÝtqCăŰúöąĐ~—;ű¬¬Ě?ż¨t ýn™>č±<Đw¨¨ľU^y ń”˘ňEš‹€€€€€€„93Rć­® s]Ą^0C«;Íȶ—­áw»«b+POWĽ!ľzśíß/+?µŐ¦f¤d%çNŰŇî_'”i {Yé8ż/®´ů;ăÚĘx~¦ÍĄÄżd%§gUhqe”u=Ś­˛šň |=[čËZľä…7Ďyá­˘´¨Ęx Ń>ŚSńlË?‡q潦˘ÇĚvt;_ôX˙~1äŐ¶<¶DżĹ‹—ř—‡:ŤQŻÄ«”1jľĹxĎbLMńϰ…ü]ÂĹÎÝ ©ę\D@D@D@D@D@D@D Z(±!ĄZPŃ E@D@˝8G_‘2¤řŐą€€€€€€T_ľo#Żľ4r# 3)ő=¨pś;׋3ަqţŘ™Ľ(á!8Dü®ÂˇţŮŮŮŮąś»¶¬°:ʨ|vďŢ˝‘kŔóüý?\ů´ŤĆđşťžoĹ?·'CŁĹo˝˘Ď Îńü#çYúžŐ9Ý>ţ­Ö‘1ÚťA»Wh·›şńGÖPNu# #euűÄ5^3111Ó<H- ”㸑µ7˙ʉ€T!ĽÉ{4/pŮQ…†TîCÁ ÷ľŁË˝ŁtŔ›ÁÇófđgKĐÄ1#f—.].áúţDIÚ©nŐ% #eŐýl52+:tŠB÷ă벊2ď ®(Gr›Eţ´Nť:ŤbeÍd|ŇKâââƦ¦¦'Ýß•ň\ s:ôéÁÔ‰őÖ»"!!!•÷%äĎ"ďnüQřI¬ľ|šĐń®ŢśBy+’s‘}m"ł7úŘMrK ˇKŃe,oąM¶6r" ĺC€żŐéü-vÄ@Gx#˝,u{âZŃ„żĹQ¤űŕO¤<cć•„'ó·z'y˙Ŕ_keÔű*::zxbbâîřřřz)))ÓÉďŚOˇěV­ZŤź={v&ýŤŁ˝ÉÜ_AŮů¤sčÎuŕgú<™ĽGą˝íz*F´"W)Ö'2ś­[·& çä1Âr­i‡üG{•ŁÓH‚đöFń®m׬YłfC×®]Oá÷<:Ô&˙Q‹ OˇŢ8d- ,Ô1Ž)śF›ú„µđOŇßsŢëďDŇv=Ľßż ®Źp˝űЏCű.§mýEš®slŚ`u|źĹjôůÖ7Ď?^>ţő J¦ŹŐĄ,¨Ď« ~”>t&eř|ŇDD@D@D@D@Ş,nşÍř/üýÍXŮĎ,yŤ¸!nČŤp-nzź¦|8F‡6”ÍŤńuQQQŻ˙€üj×®ýßĚĚĚ©yą©ďIŘCćĹ„ům7šşCH^ŹźĘÍěѬÖiŚ1de/°rł=a+Śc);–6ó©˙8˛NĄ~őĆʉ€”#Ś_fpëĘßâ'ü Öö튼yäE6lŘpőěoý[® MY©÷âËń·ň÷jב–řź¸&\Mčp˝¸Š`oŁFŤN4hP'âM¶mŰv›•!gşőGÔúÜBşá:®ÝFŚQřl®¨Ó»V­Z¶ ů&ŚÖw@WXźfE¦]·ě:äqČĽżČ\“:X\ßú˘K'ęţ•kĎż¬lőęŐ_®”/'ż7†Vë8üEVČatÝ ›+‘Ůd<2&ßwß}‘Č›G»÷ń×r ĽFíď…«Çk×_úş‡ö=¬- úr^o}Á79-ý=ňía’Ç!çBx=lžëęßÝüÂôqË éSšĎ«°ţ”d¤ ŹĎAZ€€€€@•&ŔÍw?npżŕć÷ż6ŢŔ±±±ąÜ$×ŕf· 7żąÜ 0`ŔC«V­J§n&mRlĺ#ůs¸ żŚ›îČO¦ÍĘš¸ň?L›Ľ7ĺ)šfeeő¦|ů3mĹ2®ŁŹD ĂÉßÔ˛eËW›7oľ›Ľ;H{V9ąňŠ€T^˝z5äo¸ŁO,Z´(ĂŰs–«ďů»ťÎŠĂźřOŁîŰ”Ůęh{Hq1e3­†ą˛¦’wÄ @®CoY}® “čgCRRRę5ă:5ŰLVw?Fń!ú2C^@¨O®S˙äzög3¸uëÖ-–şC0ţ˝`ą&ő'Âř„őIŮźHŰŞŃ+wéĹfđ¤Ý‡ä™^ť]#‘}<ĆÂ+é{0•ُćŮŠs6v-}ήĆń?CúL+łvKxxł€źEF+ęm·˛ŚŚ c™ćďŃÍ÷sŮ ŻŐć©·ďqôqëҧ4źWA})/|h»wř|ŇDD@D@D@D@Ş,n–ŰróęY•cäfy57¸Ł|l7ÍÜXŹ&JzzúTę/ZĽxńMÔŮć[Y)Ü@?ÄŤ}Âę™ßŕÖÁĐř“'LE^áIÔÉ»qöŢ|o§ża”wŕ¦wŻŰ†z…ă1ŽîtóŠ€T ´´43¨ýŕ}8á锿ɼVü˝šËtµáZ˛Źt´Ą [`xł‡G»8®…Ú=čă«Čµ¤1uÍ :“Đ=÷YÚ&yř/Pź¬ÜĆ5ćCVk^J˝lÄĚ]ąreŠWśéĽýźő˙ěĉÍHéęWäm÷Y^F!úłmívDĆÓ^9‘B]cݵ:ä6eKy}ĆkĆGŹĂx{ +<Űr]=‡öĎ!ëň&bČÍ!/խ熴͓Eüc˝é–ąa1ôq«¦şEÓ_Pź×ť(#¬äýˇ‡•VRFD@D@D@D@D JŕFü{ô;źAťŕĎ‹˛ ń=VGµ%Ł>Š›čy…Ţ7Ë3¸AEddęÚ ŞřĽŐG¬†˛U?ţî2ě¬6ŹcĄĐqśQyröă—r3\×őuęÔi*ĄKJˇT,¶ď˘ÇŁ1nťj=ł ±F©óŠ©Ĺ2 rc¬®mqĆČh++,ȵnÝúKúČćZPC›Ç‘ţ•6yĽí‹ęóqÚţŮ×`ěłó2]·ŚH®yßřô™ĺ]ęÖ Ú5­ąU€Q޶kKŇד\g3†ĎI×bŰĽŻíÇs­¤ŤoŻÂ{θ´-Ô\;˛BőkÚÎŕaĎ•”uÁ;\÷ˇăLďžeiu¸€úĐĎ/čŮÂÚŁC4c{¨dńBő)ÎçeíůŤ´ďŹÉ“«|ż¨•Cci)" " " " "Pé`(XÁŤhwVé4ł›câĂüa†C¶&q“z,7ɶęńun¶íĹćl[§çFś<{áĂBn·vďŢÝÎł<‡´Ýpr ÔëlĎM=oƀыĽĄřłmő5ć&}Ű×zoŕÉS™@)`@šÁßăţţÎGŚť»Á°Í7‹żń1äŮن‹ů{L ľ_¤Ăx+m‡ űůóçKĽ1מÉÖëËMÖyő,4OŢYVfŰ©©7]žĄígř5Äźb»v}+äőiíxř±’ŕň’Ý•›–Ď5ÎŚ”ϱj|ş|HźfPĽĚʸýŢô#:}mŐ¸é:ÉĘ\‡ľo!s4í`ô>u<Ć=ę?Mţ–OÝń¤7łR|¶ŰŽđ~ʰş3‰˛Ć<”ńśÁ»k×.;·×>‡Őř7OBÎDźvAE‹Ň‡˘;l×ýőčů㲳Dť@úçóÚľ}»mť…qŽ Jq5 Ľ§Ť!é]ťŠ€€€€€Tf$Ŕ08§qăj7ŕ­ą?“ć‡"~7Ş·żooć=†Ö?±ZgmÇŇv*ů÷“˙ 7źSw’6çfÂŁąéżöŰ"îŮI: CĂV}JÜ^ qŢnÎwŇn4őözű´›q{K­­¦şŃkX )WĆîE^© e¬“Ä…)Ś– řŰÝÇ5b*>ŔßëŠâ¨ę]=—…Á3µ8ő}ëp­9ŽëNýÚJĘb»`ű´"Ľ|§ ×·_Ţöéâtlç\˛r´!íĚЗ縶EôěŮłŽĎÖrO™×Đů}˝CĆ^Ú±R”ëáŃśąbĹŠýyK)LW¬•óźŔ*ÚÝŢł(Ý"ŰŠPź@ź2'p=ßÁ­—ó*Öd¤ ëŹGʉ€€€€@Ő"Ŕ g/€¨ĺóě?J{yĆňĺË÷řćs3o۱Š&Ű{SŰ€›ěĽł$}ë·ţ);Šv¶U2ĎŮÖ@VŢÔĂ šś—©Hy‘˛<¨V1™—.äoü÷ 7aPł—׌Ŕ€ŐŮ߀UĂfµv Žť8Űż/tűCfŢY¸ţĺá6#%żĽ¨ĆŢÂţťŹ?Ł(°Ô=v› ŠŞ«ňęA fő¦F)" "PĽî8'ć:ÎéޱdŽtśţăz•rŢ w˘ĺ3«KľŘq>ôŻŁ´€@ذ7o*CíĘZ^Ş&Q" F FŤŁkÖ¬ąC4ňŔpwę;ďĽó0ąä/ Ď/äĎ‹„ž-‰vëׯ˙¸K—.—dgg?Q’vŞ[u ČHYu?[ŤLD@™@=”kŹß˙ą¸ŠF;NJşă̤~kAňŇKç5·ý\Ç©—ć8ďcČldy„ĺ‚Ň/¨žÔHD@DŔtÁ?†˙?_Vn"‚ÎÂߊ_SVB%GD ô0ÂMçÍÝ1PĹŢÄĄ®TV×5áíŮŁH÷ÁźHy ĆĚ+ OćMŰw’÷üµVF˝Ż˘ŁŁ‡'&&îŽŹŹŻ—’’2ťüÎřĘ>hŐŞŐřŮłggŇß8Ú›Ě=ř”ťOşq\\\wŢţ3}žLŢ?Č‹ŁĽ)ń©Ńž$^¨Cf ¦î˝čŢěÔ©SoÚ?IzzfRf× §ń6'mŠ_Ć8Y»víWÄú´q_Ný ÚE>BźsČż›ü?â›_MčP–JŮą]»v=ĺСCĎ“®M›G /&<…*ă6lذ [·n±Ľ} é3ńÇRţ ĺWP–†,{?ŤĽú„µđO"ó9B‡±ĽHCÝn”O%Ľt3ŚŹ˝k×®ťrŕŔVĎ×1ĆŐČýÖ7Ď?¨O˙şţiÚČÇęQVâĎË_ľŇáG R,?lŇHD@D ”Ě@ą oa±ÝpÇŮÍ×-> ¦šaŇMtśÉÄ=ĘVY2Ě3`şuŠĄ_1e«š€Ŕoš噓ł ß ż_–Îä™\“oýXr" a@ăŐşzŤhµ}U"oF˛Č† ŁŢI”}‹A¬)†Ŕ˙_Žż•Ő—C [âÂ(w5ˇ!í*‚˝Ť5:mĐ Ať7ٶmŰmV†śéÖQës é>„ëRSS»Ť1˘ńŮä&P§w­ZµÎ ˙›0ÜYß…:d,˘ŢRt3æ~¶géşČ™Gü}üµ111ˇS;â{)ó>1¨Ö˘Ď{0’ö@Nwú싱u=uÚNÂ9†č:ÓŮD_fä Úˇ SUç9[ĺi:Ńß3¤m…ŁĂęMžŻ;KXůą€ÍĘĘjE˝íVV\‡Î‹m•(N3ŽšÎć’şŤcţüůĎ7ăâéV`}ŇĎńŻÄ¨8¬(úڵ2sč·Ś1˙LtíŠ+öţBŰ茌 c™ćď)óý\¶Ňvµyę­Á{\Q}şőüĂ@|Ęëóň×AéŠ'Płâ»TŹ" " "P:üx]ĂŚhFJ{z;–Ą1/głu…¸űđmÂgGézQkr P™WâďÇ7›qţ{|yąľ˙,Ţ ”ăńWŕ-϶9ň"'".ŇŇŇĚhöĂŞU«ĚŔçqľÜ9ž"Íeşe÷‘޶4a m?¸e´‹ĂW¨Ý>ľ±şôS× ˘3 ™bzÜł´MňĆY´±k›ÇˇĎËóąĽsv٦]źşfěó8ŚĄ—p&c[ ‡çĐî9ڇď7Ń ÉËĄnˇş–př˙•+W¦űĚ›ggń.„‹›v›áѶtŰ–÷áxŰ‚năŚd•¤k¶*®sxŇrsĐ'Ő-tCôËńŹmË»[ć†%čÓm’ĆýŁé/ŘĎ+Oľ"áG ď=üT“F" " "P03@2sşĂJ m"¸ďy*M¸z$çëʉ€€„~¨ł˙ ţKĽmĹĽ _žJÄç9ëÇúł~­ÓĂô1˝äD@„[’wˇĘŃ·N5•ěśIŚRçS˝eÝĆX]VRFbd´•• –äZ·ný%}dcřŞŹˇÍăH˙J›ő=FKĘj’w~•Ů–ĺÎť;wdEč׬ťÁÖi{€ÓĹĘ̑ގÜN1ëZÚBdŘ9’}'Pˇ çHšŃpÝ1Çł9®á4žň'éo6yźSŻ[ę‹´ aĚ݇¨™ţŢ=[3 B` Ô'ă´Őš-LL˘1›‘5 źâ|^Ć—ďĐHďgb"ĺ*ű#‘PhlÇ—;ÎçOńĸ¶ăś†ˇŇ=çĐ+ÜtţÉqz+×Ű.h˝JŮŻš‹€@U$đ{ő(ľ?޶ţo«mlËu<>î^:Žż˙.Ţvýż/'"P0 Í0#ľF¬.§îĹ`5mľďR6ělĂH¶CG|kqTbĹß­¬V|•öCŘęÜąźbD´żm‡-Ő7a´ĽŚĽzČÝ`y”ÝŠáíŰ2MůHty™¶żPdŰČS9ż‘)g`C%2ß ÎČ쀮lj¶˙‡ĽµÄÍÝŹĚś}y:}Ż­S§Ž#ť]»v5f{ůTš™Qnq{iŤgĄ•cL¦ÝdV0~M¸ňzééé—c¬Ś"oUl|çÓ~<ăXČ8î¶vÄď˘î«č˛‹˛Ď“““íĺ9VöáÓč;yˇŻm¤7łuz6evFą¸˘údčôIB×őčR ýǢHb >ĹůĽ¶oßn/\zî¶zţárś„Š€€€T ńŚŰbéüi´Ç(™çŻ(ĄĽô1=ĺD@D@‚'Đ‹¦vîZ©Żů Ăô4}ĺĘ—€ĺD XXiŘCS¬ĹřžĹjD%[=‡wb·™§ĆĹăÜŐ‹ĹmnQÖÎż>y“đ×Snoé>ĘżÜŇäÝłgĎc *ł<ÓĄ Ů…Őwó{ôč‡ě&nÚ Ť§•ąéŠ‹ęÓű7ç3;bĄhQ|ŚMaźĆĎ ”ŹŞ1ŞŹ˛!ŕ.ů-ie Ĺľ€,=¶'%vöĹîÚµkËĄmY¶ś€@řGµeř[đ¶Ő.(Ç>˝0űt·yۡbűrś1›§´ż¶’r*ľ>/'" "<ßÓÔ]Iiç—=ŤźĽ¸2k9 I×ămw™VR–Ö"™‘2oµX‘µUˇZŔ¸t!÷÷żgUÝ&VţŮËkF° Ľł÷e*ʤ{÷î-Xťy¶§čö)¶ĎŠL˙27Ťlúď´íÜnžÂŠ!ŕ5Đ^ÇÎŮůďy‰RĹt¬^JE ,¶{›q‘?Ţ{ÉĄÄëpAĘ śĎ9·łÄ7†7kxłÉ˛á9Hő,.Ť8wâ)dô¤]6_Ć”=E™-¶'¶ťÄ&!ůK·Oŕ˘ň}ľĚ2L Ź=Iβkv$ʉ€€@Ŕ ” ä™őšă\ťăc ´5çŢľp)Ű˝/)R€*€€TŰB}ľţřńö0čV|Ŕ|ĘËĂu@čcx;ÄÎd» ˙^ND LÄÄĬâż1ęśÁ˝ý6¶Hw…Ňp°µÚ¶aŰ6î|ă#§včţ/ň9¸–Jˆá{ay—Ěr"FJŚy3_[Ώ藸ݖts†ÂśGđ†Ć[8đÔŁ'é®\ćbĽô,Yn×®].gV4ÎČČXÎSŚ—i˙g{«•>Kű÷»á‡ĆŽ‹ĂßZµje“˘<Ç9,ş)?‡®}đvöŽŚ”ĺ‡Y’E@Ş!9ŽÓěŕáU9žŃł-ŕöbźôśovńëŽóVJ{@%'" ">ĚhĆI;Źí~ü:üËx»~—ŰÂd»®‘ÉxŰú· ţ9|ąŢ _ND „¸ŻßE“°¸Źöľć‘ÁSť¶ëi§6"P] „ÜHig!`dĽ<66¶éňĺË÷ŘaIJúŃ&6‰q\c"ç dó#/Mľ~kOeżĂiŹł ů1`îwó0Rć¸rÜ<˙>Ϥ޽F=‡ĆzŤťwbyFŮi”ÝŃ1v‰ŻDç«Mgôjë=¸öTĘľd…ć ř¬µm-uY: #ęŁNo¦]#ňN¬_ż~‡ýű÷wŕéˤ[’ż”:cměÝşu‹e9ůcô5˛Xü–¶_Á“ŁTd-!ýewŃ&6FĆE¤G“^§kĚPK9(ŘAó›§Ď´ŁX•UI„bvz;uM ”‹/uś)¬¬LaeĺtË#| ĺĂ'ŮŇr" " E¨ 9źĹsŮvîŔ۱âm1'v8ĺ±âČV;ý o+&#ńSđÇkÎ 9ö#R‡˛¶ť®ŇUĆ–ćb,´ła: t©đ‘%Ś–‰«WŻţÂÍ§ŹŽ.ǸĂâén™b䋥^+7MK^KKc ¬EŮHŇűHž‚ß›––f,ăŁ=‘]Đ AĆ”żLúéľ}űţH›‰ä'ŇnśÉĆ›áőcŇăyĂ–ő5ź:ŹcĐ4ăfíĆ:,kż‘˛“v¤¬'a{ŢHu±•‘߆`$KĆű.˘ÍňĚXŮ´ť•q.ˇś›@nŤě/b†ÎŰRgÄŰg»‘*Š@ ĽĘ VMÚ*3P¦Ć8εgĺäS¤-NycVZţÓâr" "  ŘŔć6'\łLKÍ@h+(mÎűţ.ü×x›/—ĄŤ0“kň­ëĎú•r"Xtt8č!D@BO äFJ‡˙%XţŽĂ˙\Śöť1h^ázŚ{žUšĹh—W…~˛Yť9ę^Ś‚“ČVôhŚ„ąÄŰaxPÄý›<“kň„€3x†µ˙ćÝıq¦ZÔa<˝ Ô°ař=›Ág¬˛Ěłz´»)*QYŘ„ÎFŘF°űŠh/“Ę11ß“/ÂďV®\Y?RK ‡KÜc˛;¸˙bAŻëáÜ:o Ď”/ěÚµkĄiÓ¦™‘Î ,™~†?eu Îţ’~rÄEţËŮ]&ţ µ){'mŤđL4/I3&ŇGUŚë>>ćÓeíÚµőČ_I›1íŰ·ŻĂž”®('E×˝.Ů[ÉĎfĚŽ÷¤ŃͨjűNbśś@ývbg<$W‚ÍëTôđʱv B hŕA%ç˝ Ż¤ôšřxR‚ďáťz=]´}Hš(ĚZÎ÷¶ü?oÁźżČçLÖ˘‚B@x¨Ú{â-űrXöĽ7§–o˙{sOmÜd÷±&E-ŻŐ“8!P>ŕyż#ĎÍ#‰Şľ'󥋆ŮxîµýcO$&ňlü3ńzh'’ź ÝV/žO~7éßpHšŮşuëTžÉ‡Sî=‹t:|·Q·‰çěäÍĘV:ľMý-Ô/ĺYţ"ű~ߤ8}ě»­ ď&}…çő{ŕsŤ(‡ čjŰ·Ů7%l+ş€MÂĂéĂjČúčů.,7›ŢĆkĄżĂÉ‚ĽĆä_"ß‹|sŇĎŔ©—}Çü «mcaăŮDśš’’r+Űé]ďý”-üy;,­cŃŞc0r ëŁéPti|ȵo^ÜN}Ĺź¨żş÷ýuQ6#l=˘­úü'řLcüَ›ýâth¶ü”Ż%IۨŹr%Ęď*ôyľe<3ĐÓŽáVĆ0…1 ľ.ŇńÂŃküő‘s'_~źą}űvg @VµžgŰţôXT&fÄÜHÉĹ ‹“öNxélNĐtţÇpR>mt$Ąˇ–––6#çŤ7nÁGxnç¤ÜÍ^‘Ýi!'íąĆm࿏Ć:t8ÄöČDFŻ ¶5§Nťz&´(ű‘.áO·Ëţ<čđ6ů×14>Ăţ‘wŇÖ<wmŁî<Ýf¶Źî0Ć{oţXŹĐţxÚ×§ÁÓf l۶m]ţ¤§óç•Gĺ ÝĆ·©s;·–ĺXŞÍ¸]¤a_BNŔK7ŹŕśśZ<Ě<•ŇsÂŕD_ŇÓ»ŢëQÔŢ yşA! „€(ZŞôś48Ű—}Ëľě{>0'¨ÚcÂMá VĂÓýÁŘŽĎĘNx|ď”> &E­„€(Kđ콆çáS}R[™XÓö€z ­Ęɶ‹“n,ÇAÂČŢx`śě‡!ď<Wm ű·ü‘ 7đFâ@r¬~áÂ…+čÜîÝ»ż#µ/Ť;o ܶčô:>ÎźÔ.™ĽýčfuüŮďáĎü"mnâĎp¤‡,X°·&_đ'9úh·ŻĐí3äÜMý§¤?!w2ŻÂ“r/üŹÁPŇk¸XŮ1˛‹L3·­Ňň…€(ł{3j‹± Őł}űîŻÜsÂ˙ýumŻŁ—-KWB¬Ž„úB@!%lő•üM‰ßr?"Ę&ö%ř†GÉ›O¶D_ĹÄl{’ÔŢ×ůDNěB ,"`ßX`\Ă1ňĎ31ž}Í1¨&ĎŮ=0dÍ…§ą)ŤGž<'˙@¶†łËŤFąĎŇm1ĐٵΖ8›‡źł˝uGQî…á*…gí×0|!>ç"d_vÎ9ç|:eĘ”1<ׯÁa¨|ć!¸zç9ź|&ńdbX#%Ľ©7ŹľóŃm\—.]Şň­ ÇHI¶ŚËaĺç—´?[Fd<‰]ŕĘĹ–ń ˛Ţ˘ü ô×É?ţŐ°5q5•±™ŁÔRňťŔ%‹ÔڤwŮŠOŇeÔŐ&5#ĺDxÍë f{1|S¨ëőčó(bôó Ű« ·c˛gľJ`őWŇ…ŕ4űDňf\5{ÉqD7|‰Ţ/Óî~d™±7ťx—U»‰Äś¸ľ-B ă{ĽŔl ÍśsÂoC1ĎĘ‹MTAŹe5D.aâÂHicćrÉxÖćBd.Ây‡‹ Ö ®ŔÚţ ´žö¦‚´q›—‡‹WÔ“!ô¸Ś?őAuëÖÍđ.÷Ëۆ¬ămżK š?úÚâd–xĚw»ýIŚß.ĽčTwĆŚ•ŕß éŁ»YOń᝼ą©é3:Śă6ž‹Dmxě”SÝů/ÉĘü‰të”–)–3šŢ‰9Ů|‰őČxy™¸$lOô%:ž”ËŠZÉB@! ŠçĄâ2_Sד’˝'#{R⍒”ă»­¨•Éńeźęájs! „@Dxv˝*˙Ŕčl ¶-\uć”ĺ«^˝z'Ś–¶´ű\hćů8ú“±¬Á¨¸˝l, ‡—Ł5Ď`żĂą¤a†ąOµŹľî˘Ď]xQžęg>ŽľĚVú·q^Ăł˙>Ň;ŕ}ś¸Í¶ć“7Á«˛Ţ‚ďPó>É;é~ůgŤf¤üZ&2ŻĄsčjBlEĽžŘşyŚVŁ®©îWŘ8lIö Ćq¤Ż×tň‡‘?'Ş_9mÉׄçsÚ˙Hţ`beĆ܆ľČ†´o®ęPמX…XŰtBźćäéxá‰ú›}].F·ő¤·řűčÄy5žăzŔcI_˙ Í&ě?ŻűŰ*‰+|č÷*đMGÉ{â^Q)( Ť€˝ůJ\ď«seĆÄ^µe ,4  „€B .°{şÝŰíďÜëăřë9q”B ŘŔ°ŐáxÎnť`dú»•IŻĹ¨µcŘ˝”ϡŢö t ‹¤Ʀ=§úŇ6ůö ŃDŰ î2Ă‘ţ~¬ż§ˇY¶§Ą-#7ŹÂ~”OĹđGŇď¶ť[ŞŐ‡ fP¤î6xO±>é»q´.¤ť Ź}Ůܬ‘s0 ľeyÂ2"ĎcáF<óĐü•ř4}®„˙âhĆoĆJŰĆn ýţŤ¬-±žB´Źć¤ŁcSňöÖČđ¬ďĎOŔ¨ç+q…[e÷<´źÁ~mz¨[HÝxň7ľB4ĂnMú€´Ŕ9ÇŇŘt2cĄ-+źţ‡Z{Ľü«i˙‹>¶ä} rţ ˙VĘOU©ReůÇg2ű“é> #gCR…8A Ľy>N”B Ľ#`ŘŰţP,żşą<)3xFáF—Ŕg˝sÖpÇľu÷¤>ăË;îżB@˛Ž@ĺăűđHü ćđľ±i@BfƤ^y–·âžËV?µ/qĚ00¸Ä{U‡Ą ó´¬\ąňf3Čáťx Ęż€‡ŕéËţÍ@0<Őõ§ +5ŮŢípŚz9~CX4ÝůhSĂŢaçž{î*˙jĘ\í ŁO.Až‚ůĆáŕ´ŢÝrÎSídÍW§Nť !¶˛ f ”ń0Lfü 1ţmĆđů{ ‚ŚoĎ /-–y_ŐŞU72ţ:E:–V‡At^™-ě›"±‡úţ fc›ăd݉Kő>˙לb«Śzĺ DđNř>99ńşczDuÓ/Ođh¬B@! Ę*ţ—’ă«őťtÚž=ŮĎłşPŢ$eő`k\B ”!€‡Ţ4Ľë`łíÜŽ#~‡ś-ÉŽ*ř=#Łâ fÂqť—fHlćy™+ ŰpŚxßŃ–'“¬¤ß\ŹJ! „@ěŔ“ď<Ś€=°Ř2ŕ§XýźXČřHMâ–-[lÇ\ť*ć"¨PjŔëuçÖ ¶řĽÔ(]NŤ #%X÷csÚ6| űŰr‚»†)âÝ(ăF)"„€B@Ä Í b˝:B –i§C2O·űčJ8ű6Ć\)P$ř·Čóă".!…B ćFJľŘô!oHl©÷$<*bÍľźňtŇ[;Ů áfhťéGěpµąăÂk.ß˙ ŢľÚÔŹř o[®÷5ňGźÄ*>ś4W°= 5bkâDâADł E]GÚŰW±R‘;yíä…~ôlh=h{"éTŚŞWšK7zŘ›ť‰§WŻÇ=z©‚B@! „€B@! „€Q s#eJJJźÝ»wŻĹčףaÆ?Ą§§7Ĺx&ĆŔkŘ$÷[ö XNţ'oÍĚĚ|śň댫+Ä솶î}đ·$?}+ł™®Ń6SžŃµkׂ7EÖÔE›kŕą“ü´jĆFę&#÷&â,d=J´úׅۡ˙ č }KyFŐľÔŤ†ţ éč .Ăöő±Q”›„€B l ĐŽaśšŹˇ| Ż^Vĺ0± ! âÝâřŕHµ˛ŹĎéĽ%–ŁŽ7}b‰…úĹ@ĚŤ”óćÍŰĘ»_Ζ1cĆdáYÉÇ…sžćBô>yó ü†üË6ř–-[Ţ‹‘đű:’‘Á‰2ń€buđ΂÷H<gX™|lły[.µ˛6G­‹ˇł#FÉóĚC˛}űö÷b ˝Ćę0@öˇýש©©o[yÍš5wat4Y·[™0‘6S,ěôťJűiߍ¶Í4h°‘Ş×1˛öG—cÍ3Óx„€B T#`_ą}‹Ř8ٰÍÖŹ"š§ż‚B@”^t(˝ÇNš—"x~¶ý'ÇšĘěóxÂâĹ‹—[zOčxţ~›ŔF+Î`_®Ţąsg;>Ć2;T?%­O(˘ˇ—­.@Ü nµ˘iăĺa%éuŕ~6Ť†^z¤ü°‹Ô¶°uáÎłíÚµkçTΩEŢ~h3†ňĆů ĺú‚ą—Oů’G ±ä»Źl–xoEŹ˝čÓŘ žÖ®K—.Uýëşb” ! „@éDŔŚŤwŘ.éŁÔż%|Ł|ľ›ö'>yŐ„‚B " {@)âą} ß“°•.¶:łI¶óDân«ÇĐŰŔ)źI¬BţR7tdĺä_Ń%¤>ĆÔşuëTtNź‘—EjzÝFľ?yűîĆ\ĘŮäĎ'ż›ôoč:ÓÚF ŚőPäŁÍY´©FúX\†-ă0ęíAâ_±ŽşçÇp“Gúc8tyűó÷hSÉKŁí*Ú\ăĄÁłĘ[¶<}‡{Éš‡Ą˝żźŠ-äVśČ^!;ĐęF:^Č<›ľî#¦ˇÇ>伍.w ˙QäÇÍćó uöŇč0â VOjž¶!Ď«ó[}»žö’ĎÇ*^ëë]d$ŘůBţ˛\ *Ä ¸ô¤tŃŕb0›“©ŁýéŤĆÉÓźd…k4Z~‚9ůň'ąŽý*íŹy-±˘É€>›x‚fVćâŐ›·K0T†5äbüýŇŃëJkcËż·lŮň¨“­l©D-Ż  ‹@Ć‚űě¦cĆrEaPÚĎÂţJŞý0nUĘgoŔĎş»w<źĎ¦bá(í˙yé_Îď[;'őžń^oźĄáNň8¤ë‡E*•0uĺůűuFôńrň¶Őš0Ä­á9űE˘m·v4u5ýU>ę6Yť•ˇßB¬Jö'h˙4ĎćĎ‘ôŁlŮ˝Śüń|O⫳g} ”f@¬­Áęm±L«#?ä;â^ňÖ·)ϠA‘˙|­hs3éˤ_%.!f ă@b ůǨŻCB<`@×ń´ąĆ‘č{+2NÁ–Ń€qO~C]şŐcŘléü× ,őŢIćnÚŰ<$dčÖ­ŰŮŐŽcHK°¸×$D‡ě±€“o(z{đ+'—ýÁ{„`Íéf伲aÆ[h4‹hš,¬ëËéănţôź’ţÄaô«0lîE‡ň9‘łíBŔëmÚ ä ‚˝Î[‘Oý fQgëGAěś ö,¸kxă‡úŽěÚ˝@2ÔHÄ?~1×·bůĽxP%ZĂtńŤü4ІŰĂc˙7ş@X°`Á Ăy7Ď˝žăűжĎáG™ˇiňäÉ}›NŮY‘I~yljů=iSďľ mßKä/‚ö­ GÎ;<ÓźFöXňÁ/TVA©ę=‚şă‰˙¤ť3çC7óěUµjŐ XÉůůŘ.'5ďżčÔÖň‘«Hcpm ď#ČŚnÉäíľ+0U\Ä*đqáౚş)Đ7AëĚ\ĆĹŕ>ŚZ˛—[Ľeú[â-[ýwŃĎR˛ťŕĎ"5Łň]f!Ť„Ý.ęC/ôMčÜąóRö­Ź9‹9{CBŻ3wîÜe`ő>4ĂíVtšCůęFÓcĆöüß ¦3™§üʼnߦóçMÖ„d±D #%'O5wÔś| ÝĽĄ”‡đgxk} w/IŁcŔü„ÄţüN@ĆýnŢRÚŮGsrűpbźĚ…°­mi6×Ů€ěőĆŚ§úöí;bőęŐ5˝}!ëź^AŢ2yű7µMY?ţřc3x¬ôäĺ´ÖŰVy!_vOîî\,Í@yÎĄwç·ąř…@Ü 0uôŇb¤´ő #XO’`oł úÓČf©Ü '™DÜFTFŔ ”ş>5Śt „@|!pęěaőâ>ŻZ%+{ËČď±zLö<żžç|ło$óÜźĺy.ź…ן6}<›;˛)›ńĘg†J‹N ÍvÚVỵXžËpçň§ ÝĄÓŽ.ţz[ŇťX±bĹ$yŻŰşÉMtËáҬ¬¬«C'ó4[…ÉÄňŘGÜŐ ŽÜ&MšěĺVlß©j+CÍöaí,Đ7’`ŚW@iő‘BőęŐ;at˝çš­hĆÓ“ŃÍ<_ŁÁ.×ń˘ŤmÇŃçÉČ|‚˛SĎq2ďĘ@ Îď˘7[@IDATŃźÔ9&ż$ňEqţ8} ËŚ®U*S‚Oâ*®s˙ŇůŘM8žhčśô9ü ÎŕŹu6o[ć˛4Ű޲ĽëăđďMďľ°ôo´?YPŘ‚îć2® „€ĄKPµĺ`~lýPA‚Ý ěµmGźŻ.Ż—mBy}A䨍B@”8ş”8äę°<"€ah!ăîÉ3ô03TQľÔpŔuÖI'ťô3iKó3u'a Ű m´tHťˇŐ#­˝—ń`ü cÜ dͦxrÇŔ»‡¤ă1$:/‹ˇÍ Ý`Vjކď!Ę(źŚă‘MűĚ ¸śr"¡l˙ö®y,B›‹ŚOŰ„Ńçkš®¦ÝÍ´YĎá”{çŰ·*č‡lţCZZÚŠ•+Wţ„ĽŰ‘aËşÓÉ·fÍ˙˘˙Lú»=źfüOb ěGą˝ĚôôdĆ×Ë0ßíĂp›ŤmâwĆÚÎĂuÖŚťČz‡ďÇť`3Źü3ÄFD3R†Ä˝l)|Čă…!xő'P˙ ă[JţňNĄżĹŘmö—BüÂöüˇí2Ża6Dó`R“şuëÚyĄĐ‚:© Ľ]ąŠú5b5ţŹłÁUEÚG€W”·bA°3/MÓ#”ĽéWóÇÚbĐüĆŕŰ8f¶Ç¦B #e„8WáTô›ç:– őd¤,‡ąLŇó€×ălŚv_‹ęů˛l˝w>B'x?Ęq˛ęPśčćC¶îůK¬q‰€îQ–NpĆË= jĄóÉřüóŮFěB Ě!€±=FÇţAŰ…§ä­A4‹–Đ߀ÁŐ>Ş<Ľ_-bńW‹u!Úş)oZprĽÁ‰qTˇ… ŕO?ŇfŢ€<TĄbôGO§čŮĹYLĚ)&ą+b@§Xteź§ŻöůîűĚý˘l‰Ív:µźÁ6$·ĺGlQyŔ`×Ýx şÄÇ‘jH !P$t*)Ĺ#D÷€âÁUR…€2[Ňl{kzĂvoAůâAěÁŐ;”-aW#bn¤Ś#,¤JhĚý˝¬żÍ =rQ…€(.âůšň1>űAźŻE/2Îg Â0ڮۿÄŰ6_XQ±jŞ{@¬WżB ě" {@Ů=¶™ů@ٰ[T(aŘ^`| w©î˘D .Ś”X°+ŕnű i,Ú?±'Ŕ˙±'ŔmÚ´©Ě†©OA·ŻcŮ[†Yě§p{ěŔł?ô!DŰŕÚčˇo 7nöM8šMfm#YűĽý6úyš‹ÂpľŔużš›o]ꎨU«Vóm۶ufËę ËpřĎ‚÷LŇú˝‹ô:ę¨{=‡ŇÖľţ!ôéäo!टŹ‚B@”.rP÷?~Î2…Đý;Úš ‚-!)ŤJGyý! Ęş”Ł­ˇ ! „@ü!'*Ůź6łáëqúľÇ@8ÔôĘĘĘş‘ň‘dO©PˇB{Ňů ý…l¬šÂƱ/`$ěC›¦ĐÚąs絤aĆÎ7‘5Ż}5¤Ýí0>´ĹĘDŰâ3ęďÄ@Y—ţ_„ö0ńlúąşőáĂ y1ůČčE<źşKląşŐšÂo†ĚkČÇÓR=G9ý! „@ÔĚ…sâÓülŠşI^F3pîőů¶Ü‘·V! „€StÓ#µ„€B ě#ž”ŔĽOĹÁ76ż×0ţŮłˇä8ňo-^Ľř×V­Zecü#ŕa|I*ceu­ŕů‰Ř묳ÎĘÄ{Ńš… ´˝±Zµj‹?üđĂ}'żÄhą›xĆF23é˙>xĚ#ňzŇ/(Ź5AěkůÉ=–7%Éż7nĽÜĘ|ńk$´nd—X™üÓěůľĺ„@Q#đăs}¶éĽ‚(­Ř9\ŠÂlÔíQźŻÂ“Pú?´™·żÝť$› BM„@.tȇ ĄÝJáA“ĘB@! Jx1RţâŽCźyťŘŇnFČí,цˇ°3©)-.›6mZ&ĆÄKŕĘ'㟆6múôé7Ńd•µ ŕ­as:FĐ“¨_Aś3+$B÷‘_G´ĺĚ#réţ¬ó»ŘÍĂ›JţÁôôt[ níĚ0°Ś"ďgŁ+â@`Ĺňy>‹ B@”?ĐËČ×|ľĚ=ľY>ş´MďÝĎo÷Ź—óŃT¬B ,ş„…FB 8Đ= 8P•L! „€@ .–{cě ůµS “#©cuvbg<Ó‹YhlL•*Uš Íž;“ńŠiôP#çAĐ'#Ë–|7Áă˛5i6Ń‘EĘŠĽýžĄ”Źó”Źőä· ËőxYÖ°x˝0ĎrëIr<4e…@Q `窢0(+ç@Qü'JBĆŕ}>ß÷ĺł§GŕßŕóŃÔw-Ń}–O)bą(+˙}ŤC÷1;JKĐ= ´)é)„€e¸0R†Ca}ę¦bT\ٶmŰşO§\oČz™™™éë`¨4O•wá űÖäää©O¬ZµęXřÇ ł'mŞ /™4WHII™ ˝-}´0ůTÚYÝ0‹şËştéRŐ7n| ďĚÁnĄR! „€(Slb4C¦ń­óđľ´űPŰgűłúB@R€îĄđ Ie! „€(Ýĵ‘hĂ(řFĹ9|Dg<ĺ©”›a´\Oj›ó-Ŕ¸ŚtŽw‘† ‹-ZEĹh ŠK‘5ĺyÄ%,'oÜ`îÜą©»“ş±Ô-%ţJ9ËřŘżrÉ[¶lYśŻĐˇ:Ńśf„€B l"0‚a­éĆOí(â©đ°4ŕ7’ü:`ŇDA! â Ýâě€H! „€(ŰÄý’ Ś€ kăio3ó„:b†Ĺ<!ćąyóćdí Qíř‚w}Ú’đŮFŔˇňĘ×±Ľ»“ĂŔ_ŻĆÇzrfÎśąÓĄ)B@2‹@gFvF>F÷?xť{H>ÚU! âÝŠţ¸ŘţţZŤVô¸J˘B Ô#÷FĘ’FĎĚ*xN~Ożö±ÝÄkđŇĽqÉ’%SJZő'„€B@! „€(cČHYƨ†#„€(*â}ąwQŤ3j9će‰‘˛ ҉–ď.eÔđ‰Q! „€B@! „€B@! „€B@! „€q‹€yR*! „€Č€<)ó@"‚B@! „@Q"Ŕv:TžíOŢŞU«mŻvB@! „€ĄíIâ8ńˇűŠ÷>–soę’ř°Oľ<>ÝN.¬ž|¨éĂG‚žŹé Ôy©DŔ8Ůá÷‚(oś­[·®ľxńâ? Ň^m„€B ţ°k=sŤűŃôbňŐŘB'“tr“&Mn˙ĺ—_*edd„ĽŔ÷1óśS۶m[7++Ëć(íi·Źt uĎS÷†ŤžűĐx’Ţ–÷† *4äţ˛ÖĄaŕlľoßľ·iw¤K+ÉTó­’D[}•´'e)9PRS!PŇT(éKC•*UÁÄ9'Ţu-¬žLř;»2N)ăý`lj~ś/ą81”č“6ç“ĚýšS§PŽŕTĐg!Ź?ĺI+W®|hăĆŤö˙SB@”IçTÇČxYĺĘ•ëĎť;wŁ ŇćĚ—ú“=ŃĘ®1OÇ}eč>î7çŔň3ó)›˙8öKˇwcłŐĄ1_Év帴ŕ”ůLňíšŰ•ľš‘·ůă±ÄďńşĽŻËEŢ6čx2r`ndóE›WšqôćA˝©;Ž:››fRŐŤü|Ćx•Ť1”läŻńηĐĺ‰ŕyŢÖ­[›‡šµiÓ¦ňž={ž˘ŻôU™8«zőęWĚ™3g‡Íű(żCÝ˝č‰ÜË‘q>ĺK(ϲąŻváQB ”"Ŕś±âúőërݎĄtR;ĆŘy´nÝşšf‰±*ę>JĘű1‹ą‘’‰_“µ™P]Ë1űŽ Ö뤵ěřQgË0µ·ßÉđ˝Âät6ů%Đ›ŇĆ&b=iÓ Ú»LßfRV“ĄAS¨˙ů[™ ?NŮdv…V—xąsiS Ú,Ň˙A;—|_ň']LăŰCŢŢĐżJ’‰Qď$&µçŁĂł”;Xť(ö˙JäöGĆv“ÉĄ˙˝˙ţű&÷čWRź ýŐ)S¦¬ö*z˝…쟡·˘ľu“[3h•‰6FÝKüńÇ!”_¦| é h6±vu č =$đÖˇîyúčLéČĆ>‡€~ˇťGý `g|“ỉ8 žG‰fŘĽü7R0ŽBS(‡”ćN;\śăvÉcě·:®5¶ŤB®üßkB{‰‡ÔSŤ‡˙ąý'yH˝Ý_ţr?ţSoćyabĆHĽ^¤î<ř·Á÷˛Ç@ů޵߱cÇçčÔúx¦“ÚK‹ôą”ꉧWݧĎy¤¦Cžţ‡ö¨^Ŕ ! „@I Ŕ<§9×¶uÁ×\Ď~Ą‹×ÂS`ř4 Łĺ/Ť>Naţ4ŔĄ1‡ůŁăr·l)´ć4M,O:„äýÚµkźľeË–”í÷IVç®Ĺ•‘›ć–Imn–je“…nQ6ăáцîڵˮŮöÂ=Źě®]»6÷ηhw410ĎăE´É9˙bţz#rŹ$ž‚±ó`îKąw\Hůú¶yßEĚO;Cż‰ľÍh9ý ÷w1nžAyQA"Ŕµ%¦[c1Źěęv ěóÁń˙˙…ëáŁ^zIä™3źĆő&‡ků‡%Ń_´}€Éz®}í¸VÖDż"ŰŢĂ;^{@ź"Ů®°Űřź]ś-ŕ"aÄ9|6Ďöżý'•ţÖg¸óç{)¸“sÄśĐňĽ˙;ň-8®ćPuTľEŃ]‹uu[8Ś"©ć=fť:u:Ž“{]~ŻľäWAďÎ_şőe%MŚő@čťĂEö NĽ±ÄŻĐÇń†4˝8!ü»qăĆˉËČŹ„ÖŤÔ äăâü5f"„íLÔę3ˇë ýh/ŰŇ" l÷R>»C‡‡X#úšd\ę?$oĂ7Čß$řÚŹ8đÉĐşS÷đÂ… ם{îąvCxś“%—qž>ĐßÂX°ĐĆŔ±ĺ=Đ˙Y/ť>?&?Šx©yQR× {+ż†:[n˝’h7"w&´ű¨›ČE¶ ĺo hź“ÍxBęňŕÁ÷ÍčÓž¶ź°\j'}އ™7'üö†=‹~~‡Çúţ:55őíFŤm`ĚwQ6/ߢE‹VŃżMĽĘ1‘89?¦šHśścßşí9/ťN.Đ,r?Ţ­sSÎ×ňÁś‡r~żÉ&p qůŮ˙2•ş—‰ŇÖŚ•]Ü:^(4F7{±1Ťö şÇ^lđű#´Ł­ŢĎkí,úđniJ]}ţ;ż’:/k7ןćÚqĐŞU«Ě8yd•*UěĺC7řî·vü·ě…ŚŹëŐéŕ¶™¬µ7ĎńkČNţâNţŻÇ óYhŁfd={ápEĎçŚőa«^—1ÜCÝ/$>Bů&čö˘ä}ň'UB@”$öp˙{A;äWʏ-Šö-ąĆ]áF®‹'FjĂu1ąÇ`lŘ­[·\‹ŰFâUGű}\ËsŘÄu÷1ĘÝĚë!”ěŕů–É/0ĎŁ}Řů÷qW AAŤŠZĎ ń"úöć^1ŚűČŃE© bČ”Ô˙ÎJPßV·ĹÜ&ć…Ń{ĚĽĘxŐ׫{QĺsŰŠJh>ĺŘşyąa±›áĄ’·HŽ>›Ř}âÖ3AüÍÍ“î ÎŚŠöđľŔĄc ü öf–Ún4ęqëHwÁëG¸e’Ď…e3‚d…ĽĎ&š”í Dp8’zó¸tD§Ś ©\$şP9źţ/Ăb:Ú&›H:ňęLÇOÉŻ#ćX7F3pđá"łľţNŁ źPxpboCŹłŁx«Ţ&+‘gČ\™Ť‰ÍÁz“[źc7­KSZ®(ô'čĺńŠ ¨=pÖwéś—öż[î–Sęśl§0bĆŚ#yř;Ć~nĐc­Ž˙ĂkśßÎ˙ČűbĂęx3y/üßwěرŨ?• ł0ŇÚĂöˇţ9śNűiĆoĂŕř5ŮŻ‘íĽ0á˙f˙áz»wď>±Zµjň°YoćĚ™;íĂM{ŕ´­+¬ýÓčö~űö톿˙óf 4ŘHű×ůOö‡çXd¬Ýąs§˝přś˙ee&7Ëhw ĄB ¬!`ó Î˙śóŢgAgĚ>â=€˙fşř˙ĚĺżŮź˙} ţĄm«†–Ě˙®¶q0®'Il•ˇ˝DßÄXśgZs~á97ĎbđO…˙®ŹźŮ5ţ§ŇŇŇN±í1p0g”őÄÚŕhוČ<‘t*/n®äŮo7<¶%Ůb5řl«‰xr÷ˇl/Ö[SźCS{vM¦ÝŐĐĆÓ×Í&›Ľ˝´ĎµUGs3Çś“©·FOĂ?ÝŽöĘvMďGü„ăw˛_#o÷'ŤŹ4W ź†Čů7Ä–¤oCmŰ{ Ű^ŢGĄĽÁű±ŃŮâ Ě3=0^p>ů{©wcąŤv[I/w y{Ů”ËŰÍ«g¨­B8·Ń6W@¶_íž•k 8äŰ7ňŕÎ9đOęĚy!|UôßŕęOyuoPw± 1°u˛:2ög ™Í"°ĺ°çˇŐy횡ďRhŤÉżĘKÁ»¸çžA~ Çó|ă5Ç/ΩčÔ•˙ëfŁůqµ{şł%é3čY}-íOűźŕ˙?»÷R9nx;ŠÉł`Ď^V¤Ű.FŰŻW‡PyçĎŞ˘¤hş”a''P>Ö“ßÂIx=`×°x äYn=ŢfĽ›‘w¤K4e›Đ®6š˙ŹéVGL91·Ń¶:Őş.#'Ýů]şt©ę–ýéďđ&â\hZĂg:lFÇż¸ĽômK|Vń§ßí0ţ„ŐÝ:R«stD–]üś@›µd2Č›ˇ1d…'íĹ0_ĹX®ĺ&gÖÁČĎ5Ů6aômŇŮ.Ö–Â__ĘP—K˘=p2đŔyî‚`礰çĄËÇůő Ľ!8ąIŮČ đ=ĎŤĽŁ9G»uˇR{(D®yJŰç§ÜLşóńźËcěwyhk7ŕŔË»éQv^l΀ďT&¶áűňBä·vqš+lĽ“dç… €˙dxĆnßľýö»/Ř ŰmĎËŚź-O?ŤIčës{aŕi`Ţťťě…ă°źc] ĎĺČ·’(;“U1â ?Ź! „@±!ŔŞŚďn-˝ťpżčεěGćJ5Ľôŕ<×´/ µcąt%o/Žžáˇć-/-?y®łą>wáĹQ#ćDăŃeŚ˝ ňĘ€ní]ůÚčăť;5˛ «·—ąÔUĺް.ŮÖţŔ<Ůaç_ČI=ę$vćžFÓyÄ€^9&WA”ěÚÁu`˙ŹŐö@ÍQ¤7Űž\ŠÇţKg#ç0ăçśęD˛Ç5P-řg4‚=nćŘGűďÁk¨#ŚŰŞˇ «Ű"ťłčňG‹x\‚ç<¸žxůËŘpi®cF9ŔÓ®ŢŐxv=9 úiď!ţŰţ+‘ގµwřąŰ.>Ěq:›˙ÔEČł˙{DlŤţKĐ;×*ÂhűuűŹ”:¬H Ĺ]—’’2“¶µ Śţ.őôiíË\Ł ®¸Żq·›EŘXł­Łý‘Ť‰ ÝLVĚ›7o«•óüoçľĺ€Ů˛M{go~Âđą;H·лŰÝŚüqFˇÝČfCżŔŢöAŻFľíó]A~-o3ţĎäŘŰ»(ĽDŤnńĚŢž&›Ľ]¬Ł´7Ź´ĺüůÚMÝěOě°‹Ô1¸"×t=ÍŻ‹ť˝1¬,±>Í Ýnś ĺRţŔą–Cg“=7xŤŞa_lđ¶ëS‹äç?ćz`ĺ6L\ć¸Âř_ĺyab_§ĺĂW÷ú_üťvýą~]ć¶ JťVdÚuj/×ĹĆî dFţY®?_8đ_wdÉUQ!đÖÉâšiěoŘDŘ”`Şw ×χȎv˝ţŚ*¤ĄĄM€ľžąźy¬T·ůÍMy!2ž Ő&JÚĽúŰKX˛źA^&×gw^ä`Âo{q7p· ˘>xé`Í©S§žiĚ#ú‘,ÁhsŞp˛ó-kă ôvţ…n6‡›Š×éJ˙Kw38Tđ¶W^”7ř?Ú‹ŹşD{áüŁĹ€˙T©ŮŞqšß,z÷!˙ׂ݉oBZftó:މú<[AźŚSŤŹz3ćN„ÖÎoH8”gĂ/¬Ž0‘ü®a?‘źo*łUJI´oĹő0ăP/¶=f–đd!g;Ď•Öüdć©cíY“üH!·jCŢŤ<?Á E3Ţ} ďnŚ@ŽÁŹşLd ±ky3â–Ě š3öŕÍŽqşü/–:3÷5ďż5´äŻĘ“DŁ$Ă—g‹7!ö 0×x­H¸űŘŽî÷sź[‹noť{ ż.OBßUaá¶!áYĂŚ}!·€>ˇyp·űuôżăĺ¬>đvN]ž­âŔÔě!·€CNČóĐ+Ó“˙ &p\?3 諯_‡©đ8÷Thçßő´qV®BŰÍŮ’Î_·9íľŤ~ŻAs iđ źgÜţ6„óÖwuŰwë!kŰ n3&ŽłłşÍňđŮ궉ś‹ëŃ;ě9 kČc-Fôcv <ŰF:fˇôĄżˇŕśîż.üľaÆ´HÇĐĆčp)ŇmŁí×í?Rs#Ąm¨¸wŇX]Jü•r–)ÍlÉlln˝~ĹÁ¬N|ÄęÂĐę†rŃűŠ ÎŹČşśrŹpüQĐík‰·#Ë–|ż‚N7ű—}šbP°·O{1@¤cŘ[NŢŮ?ú´I˛·}Đ€ľI÷f,$ooŚîBî\tĚřq“ý‰ˇĺ \Ü–qŔń¶p2~¤2ż“Ó7‘ÝüÓ×2ň¦Çaf8ĺÍŢ”ʧnżď»éçSřlŻ»{©»ĘtE˙“ˇĎÉĄ ĺŇüŔÉ(¬±źş°/6ü7(Ű˵»Éŕ D4CăWţ‰ZŘóŻÎ+Tý‡˙PrţŁÝ¤+ůżB›ĹŰű`Źl/d~†'ť—+Wš`›„qýű‰˙äÉô_R¸Ć® „€+[ G!Ű_ű涇Ż-IšÎďMRÔ®•ĚŁĚx/uW0ú9¶¤q“ř™j®žyÜ=ȸ }>eŢö-|ńÔ^ŕÇößÁ÷<›Ľň¨ű ]çÚěĚ3yÁd/€mŢR¶wľĺ•cůHó/Şł‡Đas±ń”§Rnfí„@yE Nť:öÜ´„¸–g´˙ćţ?ą¶j m`«ęĚ`vUŽőCźë9–‡ż1ŃŮŞÁVľpMř†ş†Bânú„ śSżyęś•`ŕßňĽ†ň<ôČd˙B·@»O‡[`ś­'¤±._„4plicžĐ•Ť—|*ÉÇ]Őm~ůaĎŮpÇť˘ÂČtçü7»•ćCs0r Ѥŕé\Kě|#Ř6 ćáÝňÉ4ŹČŔu…şĹn=íSɇĹ6żçŽ+7Ú4â&Z!…᳷뀰‚ Ac“Ă…ëĘM,ďËŢÓ.®Lhsl?7Ł[`‚šędü?”o(5„›Âă€WËňf—ú?ÝĽĄ”ŹrË´·I¨ă]ýÝVňę@ßäŇ˝éüůóÍÚß žřě6cŽŐű˝7»â…XhŹ5á4ĄżydŰ›qÚ›ˇÖą1f»éă0ů¸đŽ@öóLÖSü}95Az¦zŰxń€ŢśkóAď­vŃĄ<ŘĎ»Šr]öđł7‘†éSěŮ0bőęŐ5˝¸ŃżfĚŤ^ˇś#Ŕ97ś‡ĄĂüśUůŻÚ˛â±<  :4öŔÉ›Ç~L,^°N˘MLľĺż1ą…zŕd˛÷"zÝÄäç0dćyŕ4c?××Řo:;o MgÎď´u_lŘK’ Ćx±Ayĺnöź Ýo6:Oł¶ŻÓ¶üvm±;G:^;oűŰ|Îéx|·b˘c˙Oř/ˇîmţóÁČ^ý çżů)úŰ2 ©_ ­ůI¤=ě…“Ç€ e„€ń„€®r‡ÍCĽs ŻŽţąŹ=Dç ĚyěÁ¤'×ĆDkŻ—‰kŁy|0Ř=¦#Ťl"v˛˝âÁĽţĽ? ÷e6Ż«[·n†˙Ý­˛t}Ďő·s;{`rB8ŮöqwľesAsÍóÂÍżĐa×ůń\÷kĂ“kJ9uŻÎüíKň2÷µÝ:ĄB ¬!ŕ˙?¶˛}ćü/~‡Í3 ólc×^ěap¶j€žmĆDŚMÎV 6łm Ö®][Źü•ĚĂl:ĚĂ˙Ľ+A9fkKO[Çnae𠉻‡7d–sĘ칲ž×`ň<Ě%ŕĎB˝?ł>ű~Ç+ó,4•sň%–6ź í{Î…_=|!łđĺŃÓˇG5n[ÝöűďżßË9rKĚ{rüžD‡ŮIpTťsń@ç,íBctŠ#w[@łýńöhŽď*Ëç'ä÷zeŁ«y*_ěŇ(KŮ)ŰÂôëö)Ťą‘’Ú›†Ź9é_FŃÝs éFŻŇv±÷–ŁÉsQ·§öĽW•h‡ŕ ž†`1#ßďÄüą´ŕ”kőďÁ4oŮk ôŇCÉžoyů-nţĺżä2P·UY”GÂ(m®¶ÓI`˛śmĚ€XŃŹ»UĂ ý ;[5`Á6oóźťy›í{k«üĚŁq1ĎĘ“Ç3«mŐđ°m•ĹďGŰŽŹďGh<íëĂň4s7g«ŚP§Ł×(kMŔa¤%˛?qyÉDűó0ú˝‹±ĺ äťJy™m!Fźîb#Mž­­í-ţ¶3HoĺŮú![˝Č8Ísł~/ÎĽÖ•śňbĽ}ŘŞÄŁŔd1Ďéćýv…źĎdT nă/»[µŤ±9®mŐ=g†—8&‰¶ŹĄ=×#Żô*Č1Śó캥3Öľ4~ŞyäyŹs8™!őcî}ňÜ-Ţž'ďnń6#wžńFÂś b_±­BBťqp çá Žq Îë9Çz*ů°XÚyąp§ţOTYä„=Ż9×>b|yÎĂ0‚O3ă1X%˛*¬'r'Çß>âó>ĺG)ľ¦mŘ˙]Tă¶Őm´ëŹ܍ô?_űŹłşŤĽ»ş-Ă+›söŕ‚śłŚ+*Śčßp¶mÇđB ‰ăi/]ĄWoŢ®yáôőň!7ě1˙Ŕ ®3yqń,˙÷\ďŇ‘q©GNTŘzř#^˝ýzۄ˛'SL'‹y5µ@ ĆňÝ™ČN‰©Rę\"PŘN.VEţŔy  ×›=ž7ÍąĆhu…S.až:ex ”n•×3ÜĄyS˙VŽŇK7ý»^˛ňB@!Př'ňů~đ+ŐÔ… Ŕúž'źáaţkŚXfśřĆz©ŘŞ1ś‰Qj–«7^ž,Ď~s?`<ü”q|fe˙Ľ÷˛!·ĂŁÔV5 ťkü´űřc¨)Vď{1n8R^Žć3}î˛zŇŹIž€nN ąý g«6ó&‡>CĚR TóŃá<â®§Ms ČGOxŰĎĐ7ÍnD^`Ůy81áôóó‡Üâ-Ôx„{¸ţĂŃŃ+äV!^~ž%Ânw€qyĹ0ŹÁÖέ[Ŕ…;C ĺجÂxü™m[Eý&Ś•ĎyřŢáxýµJ•*ă<´@–cŘ’.@ ‘ÉǸ_§?[­f[¸|ʍä«ŰŽövQĐs6ZŚ0†ÜĐ«CĽ»/—ľ^ŢHÇĐËWÔŰ.FŰŻWĺ…€B@! „€B@ÄŠS hÉţŹ«ş1o!3RďĄZ OĆÚŕ ™ËŽÉććaË•µĄŮ¶ťE."Ś4 čr r0opUëŮRé`:ň ÖĎĺń\ëŔËóÜQ¦îÄĽěčbăöŇĽy꫹ľőŇŤĆŞxi…͇Âţ@2ĂégíBłHă-JÜCťÁcAżdű\0ÝʑƊ?-Üymm"ť‡^™¦+:ŐôŇ,ĎůÝť˙â{Átoů@˙;/o´ă†/Ŷđ¶µ|¨sŐĺ)č9-F¦O¤ë‹«‡7Ť¤Ż—/Ň14>ţ;i‹ÓÝ6ä/ŕ¸ĚqË–F‹­·Íúőň†Ëů…,\G˘ ! „€B@! „@ąGŔŚ”KŔ[`8|oźŁJ˛_ő%„Ŕ~ĚpĎßp©-mŔ*¶yÂ&v`H­‚‡©y–:Ű.’:Ű.ĆĂŞć/÷ŽÝaQĎB@! „€B@!PÖĐV eýk|ńŽ1ŰĆęW–Đ_-eěŹÇ@Ű.Ćţ0H! „€B@! „€1ĹşÜ;ĆcS÷B@!PäIYđÔT! „€B@! JŰł1xßÉ’Ő äzcʷж÷aÉőXzzbůp˝ŇŁ­4B d¤Ś%ń! „€B@! „@\ °qăĆGł˛˛ŽV†?ü Ă•ó%jňĂó´Ěn÷šÁĐÚ#w%ž8ˇ ˛˘mÇXÎ^ąrĺVľęý±ČőQŻ>ŃĘ+Nľhńöę]XYĆ2N*ÎqI¶%‹€Ś”%‹·zB@! „€B@"Ŕq˙JÓ:|ŕai$•*UÁG:ž‹Ämť}±އ0Ž:ĎĎIIIÝ?DŰľ |čß›=ü†±ÜŃsćĚŮëĘ ÖÇĄÇ2Ťď`˝ ‹cĹŠŃĐXŽ[} !P´äzS´˘%M! „€B@! „@Ń!°o߾Ǒ0>âI÷$ĺ‹1VýHÜÄ:~±Ţ222.ÂŔg†˝đ|HÝtęn!€¶ /ĽgHS)φo FĎÍ”}xHv n(üi'TŻ^ýx3޶ş;v|Ž'`{tAĽŇ÷~ţ›áďLů#ŚuW/X°`^·!'ů=¨;‘tjrrň• .Üm˛Ü0hĐ ÄÉ“'_MýUđ }d÷îÝv;ĺ )g UľL~‡Ű}ޱĽ«mÇŔĆżŐ{÷î}–“ˇoŁţiÚG÷ăČßm+é%ÔŻ!)FĐ/1ţ6ŁÍĐŽ%~_ˇB…ë/^ĽĽŹvwŔ?Ţí`5â“O>yÍhT%Cżúxđ^ăÁ{uS·R·}îßÁzG°Ü6Ďg|céOARŽ€<)Ků”úB@! „€B@r„@Ś}Úx1”]KŇCŮČ^$ßÍč ŐĹ@vČţ’Ż)ĺ3)_CůsŇÉđÇgą]Ëî4> u‡’ď(ŚŤfXLŰľ}ű@ŚlÖŹŹ~OÇfĆĚ#hźÂ^‘Ť±CNAŢ4řmŮń–ˇżnĽĐęŇţnřž ŘśrË={öôµ:ox˙ý÷M§żĂw=ń"ň—M™2eéżh?ŤvĂ«U«öĺ@ˇO®ńŃĎ›´›_CdŢNĂ'Ú´iS‹| ôţ¤Ű©;ü'Ô 1ÁŚŰŇ÷k×®}(ýľIůŁcěGr%múCďĎx‡Ů¸ÉŰřnˇîd˝keä9x“6%öÖ‰úaČzÓ° ˇwˇq¤;:„€(ČHY˘† „€B@! „€(ë`”<Ś1îq˝1PőÁöž}_ߤnY8 ŕ{ŹÁ‰Ô÷ ~ťššúvŁFŤĚËĎö°<ÇÚáIhĆ®ŤČzÉĽ!YN|-ő 7nĽÍę1Dn¦ĎË[Ŕ Ůąß ÷eřWĂ{/ĺł;tčŕG'âA8…úź`źAŰTŇ\ţ˙đ2| é÷cňŁćݸ‹ş Úě`©÷hJxťń!c=mnÄô‰E‹™1ňKęvc¸tuÚN_÷ă%ąľ·‰ć1jFŐňÇlŢĽąa·nÝF`më§÷ţ–é‡ö+Ś•˝(ďń×M6F«ł˛7Ŕ7]V2Ž1ĐÁ¸Ů)”ŢÖ¦08˘öZâ‘Ţľ•B ô" #eé=vŇ\! „€B@!PnŔđ•†Aj;`ňÍ0Â-uËĎśĺÉnŮ›â5ůł•iÓŘ<==}“EĽüľˇ]C< §úHň‹ÝvfxÄďŇÝ9¶\|[†÷Ę›Yúl˛,¬ßź8žť;É'»e75č}>4·˝ËvŔÔź1Ňľ"KÁ§łä|†×QčDuçŮźüoDÇĐ žfüt¶€ĂkËËÍů5KÍ?Ą]W“EČ… †ÇóçĎ˙Ĺ*hď`jůŕ@1‘_Šě¦Á–AŰ’çZüV/ýĽ.C´uI›˝cŔđw4íVą•ůHťńámzm&#Ă–|7Á¨Řš4›ŕ—R'ľ ľ±I“&]đm„ăÁzLűöí¦Íď´ `²íÖ,wĆ }_ýĽ†ĂŁŕ[·Ŕ8‚ÝˇČ k,ŤĐ§Ş„€Cd¤ŚĂ"•„€B@! „€B 7,6CW†¸:V‘ě#ŚqçuíÚµ’ß@xjîyK´™M<Í>cµ!{łďä’Nť:™GáęNA~#Ë›1Öu3fŚă˛víÚUŐOwŚyłéżcëÖ­SŤ€ˇŻ?ÉŠyóćmµr4ö¦ĎxrVF‡jäűĐ.ŕÍJF8}Ś—eÚ#3±jŐŞcÁëw Š=!WAn/Î Ůř°M3ÖŇödd2vkó!m»Ł[Ša„QĐ<3+µÍS„ď<ű(XAűăŃka8˝ ‰ă_Đç‹< „@©D@FĘRyؤ´B@! „€B ü!€Aj9F­żÚČńüdé† ~Ŕ@ř)uźY9RŔ{Ňxîf9ó§Đ>Çv/í®bßÇ˝őľ¤î~â×Ô-Ǹf—î—÷!F»t ’GűË>[úL~(ű=~˙ŹČąś˛íyuHIIyvIě˸ cé4Ü––ö`ňčcm؇rÉh–{/Ĺ@9Ůç— {ŘĺÖÖŽeÓ÷Ŕwm>Ąí·¶}9ŃĎ>üłZ:ú-'?–qNz pZĚyÄë0~®đ7ČŁwapäřŘąŤ>ŇWőB@! „€B@! „€ĺ 3VŚcHí•í ż'¤—1ß·oß$Ľ(k‡bB^˛É ®ëŇĄK.OJ·ŢřĂÉry”âŮYĂĽ)Äç­§ŹńXzUńňG“·%ޡ°4<Ŕ¬b42ŕ]E<95 çŕ6áô¦Mľp4ůś ?™nÁ}¨,„€B@! „€B@! "!P(#%žs ¦>bżČHűOFę_uĹŚ€k¤,ćn|ôs'çÁŔâîGň…€(9´Ü»ä°VOB@! „€B@!PX:śĂŇäżc¬t÷Ť,„45-XŽ˙ĎĘ•+ŰGŽŠ5ĐĎ–ÔÔÔWе B@! „€B@! „€(“Ę“˛L"˘A ! „€€<)u"! „€B@! „€B@!Sd¤Ś)üę\! „€B@! „€B@)u! „€B@! „€B@!Sd¤Ś)üę\! „€B@! „€B@)u! „€B@! „€B@!Sd¤Ś)üę\! „€B@! „€B@)u! „€B@! „€B@!Sd¤Ś)üę\! „€B@! „€B@ ‚@!Ď´lٲCvvöĄK—ž|Ę)§ C×=äď §3ü§íŰ·/gٲe†ă‰zűöíŢ˝{÷żŃ§mBBÂÖ¤¤¤‹/^/úI! „@¬Đ= ÖG@ý ! „€B ä'eÉa­ž„€($•*U‘““ó\$1(oŔŕ× OĽÔeddĽ€.+ŞWŻžšx×Ţ˝{'uęÔ)%^ô“B@xB@÷€x:ŇE! „€EŹ€<)‹SIB 4oŢĽ"$ÖŔ‹rś+ŁŢEóöRѢE‹ţ,‡«Qž…ˇoŕŽ;úP>“Řšúś *ŚŰłgĎS”{ŔSŮĎwĹś9svŕ•9 úĐî#V!>„÷Ą }~ĎťˇÔ§Qś€ěĐ&™Ńçh©BgŁËŔ%K–l¶6n€§ínpËžô9<@—xĘ–=‡ŘŮ6¦)Ś{=cč@ţ˘‚B \" {€îĺňÄ× …€B@ź<)u!W´nÝÚ €/ÄhĆĘ.®‚Đęb<ÄĽ 1ľ@}źŠ+6Ąţ ť;w^›śśüůŹ ?\µjŐ±YYY7Â$´S0X¶'=#ŕ…¤>čM‘w Ľ=)^G|šăZµju(Ţă¨…×Ή¤iŰ·oH]ÚL†8˛Ž…|w’ć 赾o#m¶{CMx*aÝäŇék=±®[V*„€(oč {@y;ç5^! „€BŕOäIů'Ę r‰@Í^jn›Ř{[Ľ Ă_3đaĽk:a| Ă]Ż~•+WÎÁŘ„A°FĘź˝Î:ë¬ĚAeĂźEűíćůئM›qđĽĹ>Źżb|ĚFÎwÔćĘ"˙ŢŤ_SţšvŰ1rÖÇóŇ ?ůä“—ŚŻm۶ײ űxÍKóëÔÔÔ·ŤľfÍ[ž=ěíVvzG~¨[—fffÖˇn§·ůV®ćĄ)/„€(OčŰ{@ĽÍ ĘÓąŻ± ! „€>źŚ”: „@9G Ó—đaJŻ÷–ULö ýcLϱ†Łb3ډK]=đ\\„ń.—‘rÚ´i™,׾úP><ó4üÓ¦Oź~mVąí,5ŻF ‰Ă0@v&5#ĄĹŔ‡iřPÍoţČK¦|$<‹]ú‚ V“_M˝©ožžžľÉ­Ď‡!ôđ… ®siôŐú]nŮMÇP–†ĎuËô˝ľęnŮźÖ ý5¦˘B Ü  {@lî5úľ×4kŹďÎL_NsN¶“ĘÍ § ! „€q…€–{ÇŐá2B äČÉńUôĺd_™µ'ű»Ę˝&Ľ]µçÄăJ^‹?{Ä·–Ň_ţ¤řzň,K±gâµŘ ‚íáŚäČ@Ą?ar$†@D&v†×ö—śGLpůđŘÉvóžôwňG¸e¶¬Ç•g!g+q6ž—5ÜX­Zµú^ĄµÁř¸ľ‰ÁgŔi|óćÍŰ - ŁfŔłr#âĎVŻ „€(ŹčP˛÷»çŰ˝ßć6pćĺńÄÓ…€B@¸@@ž”qq¤„r|I9>ßEű|ľ~•{NśŚźőÝăz< KJCPça\Äňě,ë¶ÉôîŰ ‡,—ţ ßQăĺř.FÁ+ü|»0ţ9K¦ˇŐ‡ö4K·W˛l».mN‡6*X^Pyí‡"»˛×Pw3ž={IÇA˝š±|üG —˝Ů«ňö–<Ţ˙áG Ţ’édśĄâ!ÂşŚEćŤ,SżgňäÉgŔš|Č!‡|ˇ‰Ş„€eÝJćPůĽ‰­|{}wsĎďîËůóĺ]™>ą48! „€B î'eÜ")(Jś„_NŹś˝9‹RzMśU­Ď{ťKR €ËxH„ˇrFŔé;ĎËŚŽë1î ˇnĆD[ľ=6ÎkŇŹ)?ýŇÇŕ{#ć>˘3žňő.°KIDATňTĘć}6`ü’Ęű‰¶OĺrřO Ç{ň3hwŁ×§Đ?Ç ó^ŚŚWy ”a…†© ý`Şzb ü‰ôyâ@[ʆ]d! „@™G@÷€â˝Ř=ÝîívŹ·{=ź‘ ¬.(ó'—(„€B@Ä=šÄý!’‚ĺĘÝ'7JLŘŰ;Ç—¸"11;ׇVŠĽ(F±Ľ«q$Yl˝¸0!!iČ® =¦Dâ+Ę: É)„ůóççú*vp:t8dîÜą˝tűú7‰{ĆŚłcFĘÚ{IzyĂĺ­ęŞĐΖBßľ}“VŻ^]ŹÉÍb!3ˇĆPH‘j.„€(ŐčP´‡ŻJďIÝr˛łďÁ0Ů:’dî÷«“|ľ‘x R—ťťX5Á—Ý4;§Â„Ý“»Ű*…ňŤŔ ß^Ô*! „€Č…€Ś”ąŕPAÄU{L¸i_‚ox ‰2t†Čs`ůů“O>yĐx-Đ~)ôn+·î§°%!!Ű•ăŇ‚SŚŁiČzWÚß–M ] ž'’NMNNľráÂ…»Ű©,J3•|9ť·Měµ-Ł4Bş ! „€FŕŹ1=ůHźďo5{M¨©‰naTC! „€B ÄÜH‰˛9FŔu®Ň‘ż’·1`G<†O™0Z.đŇčă Ź\ÉOń¤\î–-…–Ârď&–‡ż.†É+  €ö-ĺ{öěéKŐh«Wem{o++cŃ8„€B@‚# 9AÁ±SK! „€B đÄÜHÉę/čP0$Zűf“…1đN†řž“i6T ”Ç`||ěhöŤüĂháBZZÚęÖoܸq„}„§S§NÓ™"ăąpíDB@Ä36ŢŃ‹źŽDsĎ>P´78„›Ç:9ý! „@iD@÷€ŇxÔ¤łB@!P"ÄÜHiŁdöp’‰| ć<*Ÿ8 #ăôŠ+ÚyÄ`_ěNIIéÓa+¶oßţ+rnˇý>ľ33bcU ! Ja¸}Wµ·0ů Ŕ\ Żs’çóÓNĽB@!WčW‡CĘ! „€B xAÖŽP±jĐ A‰xR֌ȤJ!PʨÖkB§”žr’ękŰ(– Xç—Ă×Âňź-c÷źĂĄě_(u…@Ěеżě\˙rĘă=Ŕć0žąLĚ˙PR ćŘ»W! „€yHČCA¸B fŻ 5·Ď»okă‡úŽ<.×Ö­qĄ§”‰Śâľ…Ó^÷UŮü«o¬U#ł‡¬5+Eâç)U|{^íK®hß^(=áÇ/ćúV,źg ëŢSz›4ŤršßŢ×ě„ńˇŤ´Č7ĺý°7'É÷Ý+|k?›ěËŮłS÷€|źAe®)—ąQi@B@!Phlé ‚qŚŔ¶‰˝·™zGvíî;çŇ»ăXS© ĹĽíűĺă0Ä@i˛í©î)bÇŚ]ľĚ];|=˙ö ‘KM:zk¤,5:KQ!/R÷€x9ů×C÷ö+áđó’ťůO-„€B@r@\ěIYnĐÖ@…€(—dîŢá›ôňýľSý…Dŕ8Ú$Λň˛oÍźRšš ! „@q# {@q#,ůB@! „@YA@Fʲr$5! â™ď<éűcËoľahXkÜîAN]–Ź˙gÄÍľěě츷B@źO÷ťB@! „€¸XîÝĽyó{›4iň_ęÎ"ż Ő»óeî/ŁB|pńUň–ě74 ˝˙ZŤł9íóSaäqŰwbË”8!PnřbŢ$_cFŰĽF\9#>ňçľ>˙ČwÔÉť‹Hr‰‰9µÄz*˝}Žę|_).‚îqq¤DiE@÷€űj\x†ă™x2Î$M@Ć]¤×Q—@Ýł´Ь<gAú}Ä*ćđf|4ę~a­śW‘Ó™źTŞTiŔüůó4hPâäɓ݆vu‡Â7˛{÷îŹ@ĎFź†Đţ Í<1ß$:Kđ‘óůoĐáeę|”;‘\Î8.#?ÝďD÷ąVWÁŢćv*~ÔEx愯RMĽ#ĐĽóůľÇ=ë{ĎÇ^([Řor۲ńuÄ[oîKL˛Ëd© ťJťĆ%ݰ]wă%čű#1'ö*H‚" {@ä:塌@<Ý‚uSY! „@±!s#eRRҵű&''źľ`Á‚Íŕ|çN~I3ZľÚµk×·6lŘPúdŚs7gŃćQâťÔßîEeô1^ ý;dĽNZËx¨»mv‚dř^ÁH8›üčMis ±'mšA{CéŰĆMżđY8Ţ)čw<2ÍĚĚ| Úąďż˙ţ5¤7@ż’údę^ť2eŠŮ^%oú}KĽ†ľ ţ˙oďţc˝¬ę8€ vĂ(ś$ËIq/KÚlĹhÎ ®"s&«¦[٨­pţĺőŹ–­d˘ć?­Y­–Mç\ł]˙¨őe#™Xx#,8×%ś?" «Wˇ.×č}ľÜŻ\@ä^.ă>ßďóz¶sĎóă<ĎsÎë|ą|8çűd˝,N*ÁÔf2ůrüńäeůuÚđâáŐ3ňłL9ôżąg„ÚM:Q vź˝îÖĆľ~YăGiŕ7&ĐȧrnąĆâËV6ć~há®4©§ú}2©üăľągŔ¸Éś@ŕ€gŔ‹‘5Ď€ăHě @€ŠŔ¤ż8§»»{ T$Ł÷ć/q‡ĘzňŰ3J°óćÍ÷eóĺ(ç&Ŕ÷ą¬oďééůĹś9sv'Hwc¶/O:jIĐďňśż5#HÚ–ÍŃĄP€_IöÓÜó‰¤-Y˙Iö]‘ĽądýŽÜs{F/ţ*;8=¬÷-Č}‡§M›öí\ăąśw[®÷éĺË—OO~Mß•6mʱG˛~OŇĘ%K–ś“üŇ”-Ł6wĺüďf»ąĚś9ó7Ů^°páÂ÷–)ńŮyeWWWo9vݱiÓ¦g›ý @ -.řČ%Ťů»˘ńýÔvĎj\ś]ď>§±bŐę \Ĺ© p&<Τ¶{ @€í*0éAĘ7KĐ®Ś2,AżÄ÷ $?+ywŇEýýý{JĘ(Č'ł˙ý‹/ž}Ě5ĘČżŚÚ××ZĎů=Y_ÝşFĘÝ’íKZÇřügk=ů«)_FQv'ŤĺľĺÔm™Ţ=XV|2ŮţŮ9żgęÔ©*űG–?fß쌴Ľ ŰĎ'půRŮ_‚›É^(ëëÖ­{-Ůďt]‘ú.Íú3eęx9f!@ =J`ńµ·OiÜvŠŐ˙eÎ{4éĘŻŢÜ>ă=§x§ @€ŔdxL†ş{ @€í$0µŠ•MňÇÖ+ĹgßúŚ"|côä˛eË޵aÆWG—-ĘżŘÚ—íg»ą™ő}Ik Ľ§ěČ4ňw8pŕőćÁüČ}G®q^ëZ‹-*ÁÓéąf |îMţÁ䏕ă Â^:íĚČČç¨ĺĘ”ďć˛víÚ˙fe]Ňsy©P3>Q¤üCYą¸¬[j#đ¶´TęÖ¦CÇrŢš˛?;üQżłC>‡[ă'cđűżs~˙—ľô ë'_9 @€Ŕd”ĚŚĺľĺ%2EyÂ/c+o÷Î ĘŹ·®•ő«ÜĐÚ.y™&>ÖűµÎ;Ů}[ĺJľtéŇYŁ·[ëeZw™ŇÝÚťź¨M©ű˝iĂ—F—µN€@Ű LK ţ‘©Ępö“¦R.ĺ_J:»í[® ŕŕ3PwďÔ@ű  @ŕÍĘ˙ćvÔ’‰ďĚhħӨ»’$]—Q‡×çE6żm§†&0ą #&ż–:2Ӿ珌Şl§&¨+o-piâ­‹uôŮZÔ Đ®žíÚsę}:JňćÓq!× @€ÎČ žÎZň=Ťűŕ»8ľĺiŮŚ,?“ĺö6lĺŢÔyW¦J€˛ {O• ś\ŕá)ÉB€őđ ¨_źk1 @€ @€TD Ś¤´ @€ăŞňâśă*f @€ @€ő¤¬G?k% @€ @€Ę RV¶kTŚ @€ @€@=)ëŃĎZI€ @€ @ ˛‚”•í#@€ @€ PAĘzôłV @€ @€¨¬€ ee»FĹ @€ @€ÔC@˛ý¬• @€ @€*+ HYŮ®Q1 @€ @€ő¤¬G?k% @€ @€Ę RV¶kTŚ @€ @€@=)ëŃĎZI€ @€ @ ˛‚”•í#@€ @€ PAĘzôłV @€ @€¨¬€ ee»FĹ @€ @€ÔC@˛ý¬• @€ @€*+ HYŮ®Q1 @€ @€ő¤¬G?k% @€ @€Ę RV¶kTŚ @€ @€@=)ëŃĎZI€ @€*ě¬B%Ô @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€Ŕiř?A• h‘ŐŃIEND®B`‚bioframe-0.4.1/docs/figs/closest0.png0000644000175000017500000005212314420777331016763 0ustar nileshnilesh‰PNG  IHDR)Ôp;¦ssRGB®ÎéDeXIfMM*‡i  ) Ô”~qT@IDATxíÝ śUeÝŔń;Ă ;‚€ lâ–Z)űfh‰ˇ bˇY.¤ŻiYšĄojšŻ&ją¤eš©ifáBš$&‚¬.‰ą›[‰ŕ2ěĚňţţ×9Óef`–ßů|çśg;Ďó=ă\ďžsN*墀 ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( @]hRW:b?P@Ú;vlÓvíÚuxë­·ÖÔćyl[P@P@P@Ş/]ý*ÖP@†"0pŕŔö˝{÷.ĘXóŘźÇzl2Ć>}úL`ýżäx[·´}I ŁÚ]ÜŻ_żĎmk›•ŐďŰ·ď—/^üᆠž6lXNfůĚţd¦ď¨ýŞzgö{{9î(Ď«€ ( € ( € (Đđ R6ükě¨T I“&{öě™Ó˛eËžYYY?c˝•Ŕި¨Ř¬Ył‹ŠŠn©´‘* 8ł·ŻX±bEúwçÉúFŞnSú?&;;{Âüůó÷ź>}z~ŇXéţ$é;r[ďŇýŢ^Ž;ŇĹs+ € ( € ( € 4lÍf5ěˇ::(O    âĉäŻ`}™yűŘűű“ÖŻ_"ľ|fĎvJnnîéłfÍZm%Ëřńăł'Mšt&ůgPn7Ňo5jÔ•¤]Ŕń Żg\­ćÍ›ăJ/ô珱“ô‡ş)ű¶ç±Ž#ř·,??˙W9„ôŹH»žú7Đ÷Ř?ź´ŮžLţröO!úŹţýűďMť{H;őőśśśłgĎžý<ű)ęýňߢlV7Îť;÷ÎH#+—ô3IďĺáMÚŤô÷)¶“Y@ŢűôçÇř>Qşß5éČą\P@P@P@ŘîΤÜîäžPz!°€ ŘŢŃS‚g»˛ż ۬'‘ôÇ®\ą˛ŰIÔn ąµË.Ś:ęvc˙AĘßE°1‹=ňňňľEíŰ‘Oń‹ű"ąő›4¨qČÉ´7•ň“ľiăĆŤwGYŇvĄţĹ”»ŽĂŢ÷Ű´iÓŘČË\üńł8ţĺÎf=‘ýS'Ož<Ží/©?•z7´nÝú ŽK–2úÓ‹˛GP6Úz‘óÜËţ”Ű“6/ íş¸Ežý椟Ä6ŹĽĎ±?—Ľ«˘aĆŰÇ;tč°mÝËńŻ#ť€ă×ŘśNť“H?‰ńNqłă;ŹĽóhëţ8¦˝]˘Ű^¬_#m‡hëް-Łß5ćçuQ@P@P@P`{ ¤ÜŢâžOz @ í]ceev—ă Ěţ»”ŹPć8ňvďŢýľ®]»Ć,ż‹8>*Ę3“đP6+({{̆lÚ´é·ÉźŮ­[·Ź"ź@äJÚ/ŠýXHގíWi÷·”_FŮK8ţňСCÓÁ:Š< ÂÉä˙‹ý'¨Űťíf ĺżAÂo)7‹óţťý»XcvăZňÖSg5·zŻ&­d)«?”˝>ĆG˙¦Î9Ě˝îů矏`ä?Č[Gŕ2éSçú ł$ߦÜ}¬=˘aʱAÜ=GŽy#ŮAĹéÇ‘ţ‡čÚWđ;–ăMĹy“H{ ňâ8sˇÜ­ôe1}šHú»7‡•Őď¨SŽ™çv_P@P@P@í%`r{I{ę—ŔžÄÚŢ!VHŚîs\’F~7ÖŢK–,ů Vfů˝JţžĚ4ܢű˛?;r ŔÍKŽKoi§;ĺg&é”}ă•ÜúmĹňďO7é>¬a?79N¶Ń3:KÚ ý9Ň’úI±J·´ńVRúMąü/Ürţ×»čŮ9éß›ě˙‡5íC 1‚źéÇg€ŤŰË#ą[ÍPoDq{›™xśůÜsĎ˝yÔ/9gqŮ’ ç(űóh»WIf©ň¶Ů±T“* € ( € ( € (°] RnfO˘@ý`¶Ţ‘Äć”î5A°’—ÎĎcśĆ Ŕť’•Ű©;ó¬Čw¨÷1ë^I}‚|»óĚÉ#“ă2¶+i{ß$ťŰ ă–çöü–EçŮ,Xš”+µ]I tź$ŤŔßţÔ[šWc›#ĎŠlKťI´·|÷$¨8€m!k2»´Ě>ńńĽ„h8łG»Ň‡‡°ś8dČťiëcę–pŰönOŹ™ôxhyKz†fqć~l——Wôšp¬ yłP@P@P@¨”µăj« Ô+neΉ7FGpŔŮ)ÍNc7T4ĘLc=<^ĺBŽáą“s† 3 §“ׇ@_×â6ľO°nhńËy6®]»¶UqzzC0oÁŔC Đ=ôĹł/Í1ăĂ8®ĘBýčĎńĚälAZł·Ł—Ěć,«ŤňúeąM{gÚĚnŐŞŐÜjý1.ŁInI»[Ěâ,ŐöĂĽŘć¤ÖR÷&ÚŘŔŘŁÎÓÔEßš‡ՙ٢TÝ-)÷•x)–{Q˙łôkVyý® Ç-:`‚ ( € ( € ( €ŰAŔ ĺv@ö ÔuaXË'8Ď|<›ŕى̎|®˘~“˙ůs;óh/ŇĆ%Ô;ç>ćÔűy?a]HŢË×âĺ2IĐói‚vKHîź´·>ł5Ď{|…ňoŇÎ79>&ɯʶyóć?Ą^žË¸”`éÔyżGŹ?­BÝ-úuxĺR6żçvďy(źŁíŻ°ÎˇďĺŢnőřţrçRgu˙IŇ˙Ĺs9é_Ľř'ź´%ôďeö`Ü/˛­lŮ‹-˘Í¬ß!řą¨¸Âý® ÇĘ:cľ ( € ( € ( € ( €uN f`2‹˛CY#ŕËÚ¶tŢđáĂ7›I™äGůňÚJĘT¶efçN1›˛˛r™ůĺő'ĘDýj™Yľ*űq‹wń¬ŇÍŠ‡fM7K,瀲KY˘ťvá\şXyý¦Î6;–>—Ç ( € ( € ( € ( € (Đ’ e#şCV@P@P@hdé·Ń6˛1;\P ^đŚÉ˙ĺĺAo׋ÎÚIP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P ^ ´5©k˝ě¸ťV@P@P@P@z+]o{nÇP VŠšüłŮ±ŹĽÖzěc‡×Ę lTP@P@P@(%`˛‡ 4zÂT“¬˘˘}ó7>Őâ؇—´8ćˇă˝‰ ( € ( € ( € (P«)k•×ƨĎEÄ*SÝ‹˛˛h~Ě#ď5˙ĘC§ŐçŃŘwP@P@P@¨»)ëîµ±g Ô˘¬TVŃî©ü¬;šűČĘVc9ŻŽtĚn( € ( € ( € ( @Čj ăp 4ś‘ lš]tA*•ý2˙XÓ/ČJ]G›9•´›—ťjrýÚGŹą¬’rf+ € ( € ( € ( €• ¤¬”Č Ô-–Ç<řPaVöşĐ+~üë3o»˙üůY›ęBě ( € ( € ( € ÔOĘfKŐĎQŮk¶ŔË oLvQáĂY©ěgjz¨U›I™ĹLĘěôLĘů5ÝŰS@P@P@P@F'`˛Ń]r\ßL¦ońŽĺšÇĆÜXÓăá%9xeŮż˛˛V5Éjr嚇Gý˘¦Ďk{ ( @uú÷ďż[~~ţŞůóç;“»:p[YvŕŔí»té˛zâĉ·˛‰Z©VWűU+µQP@P  řâś~žŰ.UÄó/˙ťĘ):}ý#Çv0@ąí˘¶ @Cčׯßá˝{÷>¬6Ć9lذv´ýfAAÁĽ¬¬¬#2Ď‘yŢ>}ú\Ó·oß+2óëű~ćř* >Ë˙ĄË6ĽŤ_­eÄÍ6mÚtĎâĹ‹ů<¨[ ę–,Yň“şŐ+{Ł€ ( € (°5)·FÍ: 4 ,^ëťZ–UTřŐőŹŽî´ţÁă~×(†í P`› ~—b—mn¨ŚÖ¬YÓ‡¶×Ď›7oOÖ)™EjóĽ™çŮQű;j|+V¬8?;;ű·uqÖęÜąsź)**Ú‡€tĎu]<Ż ( € ( @Í”}KgÍ´m+ŤD€™cřâoyîČ—ř˛p$_Ź`›Ĺ—†‹Ř~‡Ľ,ňnž3gÎŐ|ą,b6ÇS¤ßCúĄ¬-YŻŕËϯ٦hohaaá÷ÉŹY8Ď4kÖěĚ™3gľO[çG>yŁŮěËú‹&MšĽÂńŤ”]Áţy´?‹ýrĎő]*ČNĄ˛^ĎÍÍţÎę‰Çü­’Ňf+ @ŕwďˇüž˝‰avç÷÷4~—‹ßµ+ăw2é…¤ĂďÝĎłť’››{:3îNä8>P¦"{P7—ü3I{íˇüľ5{öě·Ž2W“ţźŚăd)변YsťhďNĘt`FŕK|n|.)ĎçĘi™çe?ĹÚŤôb}–óNjÝşőiÓ§OϧnGęÝĆz8ë2ÖłikŰÍú¶'uo%që#¬mYÇÓ×WČ;”ľTŮeÖ¬YëĘ;ďرc›0đ6ÎőÚ˙ľŢÂ9®eżd)=ľśśś±ţuގP Ö§Ú´iă[]\édÎw2mĺq|ímĐĄ^•>+‡şËşuëÎâsľÎů™|€kń3Ćyץ/ű·r={;¸Q@P@¨')ëÉ…Ş«ÝäKdľ¸ÜĆ— oÓÇ×řbp7ŰöŃ_ňľÎ— q|=–Ă\ĘÝÁw‡iěĎ!˝uâËÓhęěMÚý|™şŹ€d»Ť7N&˙‡ě˙`Æ ×rmŽ mWÖ3ř2r4uš‘öŰż‘v4űcŮ˙ŰYť—|—J˛ šěż~Ҩĺ*)g¶ 4|Şń;vżwĎe}Šßă?c˝‘_ż“ů~éăHű'ÇO4K ňŹüŢ>Žô)­Zµz`őęŐWR~ë™|ĽĂďę.ÇpüËÎq ń7 ¸mP4hP·˛> 2Ž˘˝ ¨{N:Ů–,eś÷łdK?ŽĄo˙ἏS÷«¤ÝOżď`ű u /G‘wÇ˝X7[¨L{…ňgQ&Ć}ç˝zk\¨űűňλtéŇNî۲eË˝ îĆygń¬Ĺ‡ l."=˝”_^^ŢądÄěúŕ·3ăx„ńťŔqŚ-–řCßá´ŐźíDúÜ-“ĄŞź•ëׯďM/ô+yö'mE›'˛öfLťŮ.$ÁŇÁÔH?›µő˛čŰ™¤ç“ÁŢčď¤G~'ęŢI˝°źbĽ-¸ćWł{kGň^˘ÜiśwíđáĂ[­Zµę·¤÷$­Ľ›6mzŔŚsüńňo¤ĄźŃĚőYA‘#ÝEP@P ~ x»wýş^u®·|18*ľHđ%ăÖWč`z6dt”/ ăŘü¦[·n/łĆK o%m$ŰôÂţ5ܦµ/ 1;%Ź/`ťů‚2†ôWIűm|ůŕËĆ%9frD%Îőuf’˙4űďtűŻQî1Ę Ś2lDZ)÷ĽQĆĄ|u(ËĎ5G“ľăďÂîÝ»ß×µk×÷ů]{ÇGe<¬ĘÉüţiOđ{ą{Ěd#ż‹óŐ·>ʲ?)>'Šg»G0ÚM-[¶ě lŢHfUFZ,ĺ} Ý™ěOh/?fs¦ ˙SÎy¤ÜßⳆsţ…z{2dg¶#9ľŚÁ¬`lwł˙A´ÍžáH 4ţ0v(—Q˙­-Z\© ăt[ăRŃyů,ĺTE» ü<Ř×:tč°{f€2ÎYz|é$x öď‘˝’1ĽFť˘lńrs|>˛Ćú"Đ+Y(;ŽŞ|Vî>IE^X´7ÇS0řmíŃŁÇ>´54ňÉ‹€ćą|žÁőîKąóąfżŤ<ŽĎ"ď3¬űôěŮó ĘLň)K÷‰|®ůĄ´ą2Ú5jÔ$­ŕ8±©•+WŽf“OýÉé{ě±GŚ;˝öíîĚůwzţůç—RîŞ$Ď­ ( € ( @ýp&eýąVuµ§1#r^Fçf'ű|ačÎţOą…-nŹc|Qťű±đe÷?źîĄ˙]M^nÔˇÜĚ$ť/—ođĹq%39âvÁ¨˙n’Çv-e˙Ç| ÚŔ~úç9Ú ©ÜóFyP@Ęř}ÚŤµ7żÇ?HJÇďrf˝íÁ¬ÉHúwFúös“ăĚ-AĄ·’c‚k“ HÝłůÝýUÚűS’—lă÷8éĺ~$ĺ*ŰŇFIpŤ6?¤| fčÇŚÂ,Ž_d\™M ă ţŘ–^™¸ő—$ÁĐ3f|ČçŃ›‘IÝn¬Őr©čĽí~M_ŃôĚÜ€×ďxAĐ%qkzş3eüC`3Ź>NŔń0¶qŰ}¬ńÁôB°ÄŹ„9äua»čÓÜôşł_ég%çéAą’ĎkŽăVţ§¦?ĎyŰw}H7K?F°“Ëő˝)Ň(źý{±eĂsŽł˛6„˝,ęPn)žłŮFűo°Ž¤ÜÔ»}ҤI¦vgí;,3Čű1yw˛?ťŕěÔŇo§í÷)m˝\P@P@Ꟁ3)ëß5«S=ćKÁ<ľ”tŠă’™(ěŻâ‹ÖŮ|‘Ů)Ö]Xx^Ö‘IYľś¦g¤$ÇĹŰ•´·Ą—â™,íąő;fÄě•rż°}Z# ­đĽI9· ( € đ{üCÖiÉďńŘdę̬ľt𬥢Š[ř4—ßë”J/Ĺ3'óűţvňK‚áé ˙Q@P@¨W)ëŐĺŞ{ťĺKŢ“|AŞç \Ěx8%Ł—ńrśSăYR‘ĆŰAďäK×ĺů[ěňĺd_h0`@÷Čä‹ČIlĹ –8®âRíóV±]‹) €ŤJ€ßáÓXŹ[|cŕÜš;† ÓfůUv'ĆZęµ.‹`ŇýâÎŁĚ›Üę˝Yđ,ęlĂgA…獶ůLŠ Ű>_NŹă¸ ›çţ‹Ď°xbÉ/ ˇł~gÄÍČř6káb†`µ]*:/3Oă–ć?ĹíńÜZţ'Nń}Śs–^JĆG~< r ĺ˙Aď‹—\ GF帝š˛źăřoqś±Téł’z13qź¤c‰öFđ<Ń´˙që~rާŮĚŃŻôBů|‚…Iýň¶´9ťĽţ<Çô…¨¸óÎ;żJÝtp“sôä箳Zź%`y}ş—ň$m=ůä“{˛˙đUn·ť'ynP@P@ꏀAĘús­ędOź}öŮ|Q¸/›ĐÁy¬ďqśž%Á—Đ —żĺĚxx…/mXݬh |/™IţŐÜFř _ߤ­orś~Eő2ó¶ćĽ™őÝW@řT€Ů…/°w1şüN~‘đ—đ{ůŚŠnCŽš‘ţÎć:ęü(ŽK/<§řIŇö¤\ä¶X¶öł ˛óƉŠf'óąuý{ljĚâłé‚_ ¶čH*ő}Ć{ÜűďżżśĽb~źq[ăRÉyď¦ÝB>+_c}ťó䬻ŻtJŤďú}ĺ§3kň!ĘNá8LŽzŚŻG\3¶qÇĂ0]śŮ^U?+ůcd)÷ŁŤtŔ±˙•ýÇxáŃ_âÜěľ§gĘbAĘ;x¶ćrÎýwňăöůĚ?^fvał}ĆĎ îN0ň]ęţŤ í,úľ"ý Î1ö¦’÷gŇ÷éرc‰ă?€2éŰĽŮ?„ź×é›5î ( € ( € 4|fhô`†CĚŢH/ě_ZŠÓfÜ´NfSf¦W´Ď—\ÚîPQ™Ęň¶ćĽ•µYň[óđąÍG?\ŰşĐű € _ ŢÂ]ÝßÉünőĘ҉79ó{ţíĹXV~’¶5źť7i7ŮĆKŮnĄoIZ˛ŤtÎ*íĄg ĆçÇkbÖbRfk\˘ny獾'·—'ç(˝Í_q“ç6–.š˘l»dĆă™Ĺ ”©ô3šq?Ěçű¨Ě6şfsŰGÉ73Ź6s(ż'éq wµ– I˝Ě•Ô'ŻsYăˇüCüżGµţ YҨ; ( € ( €uF Ě˙1Ż3˝ł#u^€/-™Ýł>~Ëot=‹ŮçpKÖä:ßůzÚÁNdĄnŘôÜĄ©‚b’Š‹ő^ŔϢz «>‚W'1îd>;^eVŢyUŻąýKřş‡łćĐ×g ĆmÍËčóéŰż';öŚ|ÖÇK„~ĂŘż=ářg|Ö/ć:~Äá×Ůť™šî^ĆŁ9o2?rGśßs* € ( € Ôś@ň ˇškŃ–•_ Öň…ł/_ކ3đťř3ŠĺÂF…°ť[X”óđ¦™ÝĐ­Ën©}Gl6±e;÷ÄÓ)°moľôljŃË3¶­k×;[ďÓé‡ů܏ٮwžŮśÁíLJŇĎĎ»ö¨ŁŽú+şşŢíďźőńĚÎßŬIž!ú o×~”ŔŕřĚďÁK>÷ź`[ăç­JôŁ ĺĽł *X–Q@P@ę¸ŔŽů?Ę:Žb÷¨E#Nľ(uÔ)×®ÚEĘňű«RSďůYdúYT6‘© ( € ( € ( @ŁđĹ9ŤćR;PP@P@P@P@ꦀAĘşy]ě• ( € ( € ( € ( €ŤFŔ eŁąÔTP@P@P@P@ş)ŕ‹sęću©/˝jKG?__:k?P Î |ˇÎö¬îuěEşôqÝë–=R@P@P@¶MŔ ĺ¶ů5öÚ śŢŘż lłŔômnˇń40ڎ>Óx†ëHP@P@P ±¤l,WşvĆ3z†ŐNÓ¶Z‰ŔôJňÍV > «OťÝÁ}Ťß». ( € ( € ( @0HŮŕ.évPÜr茞íJîÉhţi—ŐA) € ( € ( €UđĹ9U·˛¤ ( € ( € ( € ( € Ô‚@V-´i“ (PűE˝>;$µ÷ç†Öţ™<µ$đćKϦ˝<#Z÷ł¨–ŚmVP@P@¨/~1¬/WĘ~*°ą@Ńć‡)PŻü,Ş×—ĎÎ+ € ( € ( € ( € ( €;X Oź>3z÷î˝bwŁĆO?~üřZy,Nmµ[“\ÓÓ¸¦ď°ţ¨&Ű-Ż­iÂX˙Čş¶_ż~=Ęëźé ( € ( €µ/P+˙ó]űÝö ( € (PWćÍ›7¤®ôĄ¦úAĐęŔÉ,5Ő^ŇAżKüń˙IŽëę–kú;úöËíŃżÚ˛®jßë‰EEE˙¬jyË) € ( € ÔŽ€·ŘŐŽ«­* € (Đŕ"D0çƬ¬¬Ď0¸·Y?ĘÍÍ=aÖ¬Y«ľ­ĘÎÎľĄ°°p0é])óW‚?ßň.N›Dýîäőfűěüůóż3lذvyyy7“ߏ5ŹĽgzôčqáĉ7rľ»IkF٤_Ďö+wá<‡Îť;÷-ö·iać\ú{ŤÄ#4š˛Î˘ĎçĐßK9ßńwĺśéŕÇ«Éűi1ž˝Ř„C{¶ÍYo!ď¶Ž•ńL§˝˝©·íűQž±<ĘX~ű5µĐżý8ÇĎ9GÚěĚţőôďÎ+Çű˛>@ŢŮl;‘w'y?`?5|řđV+W®Ľ’´çZĘta{#×iBäo˲ Öĺţě”w ´ëĆŤ'Ó˙żĐç˝Oňçłë”Gßľ} ˙š#ů…l÷nҤÉAsćĚY˛-ă´® ( € ( ŔÖ 8“rëí¬©€ ( @Ł;vlń#¨v˙.»ěŇť`O_Žł Ú#ěĚv1­ĂŰ´iÁĚ/öďß?‚™)Ňư9ź´o°ý ŰCŘŽfM­Ył&f~°ë®»4jÔ¨hłÓŇĄKy”‹ŔĺD‚H§˛Y‹-Ža˙ ökdć&}˙1í_ÍX(ŚsÝĆý˝‚€Ő8vç˛? Vʤ”¤Ąß;999§“6rĂčĎUÉíĘŤ•ňĂđ»‡&&$íÖt€’ëÔىśçbÎqhóćͦç Ü—óźĹţgX÷éŮłçA¦/§@Ü'ƵjŐŞë¨Űš1 ˘l?öé5±l­uEžĺ]‡™3gFřce w1–®ěŹgÜé`0ÁÍ–ěO%íwüĚĚ58„r'qQ@P@v¤€AĘ©ďąP@¨'#¸Őě裏ľcęÔ©˘ŰąNmٲe2ŁńC‚=wFúôéÓ×ôY@ů=ă8YH{‘ ÓrÖMŃĆF:eN`˙öh“@_!I1cňč¤çxšzq äŇŮ÷Љé~s›÷;Šň‹QPj0ô‰:e.4gFÁˇnĚJ|/)DŔ¨ i9ÉqĆ6nɮх`é}ĚÎÄůćlüÚâĹ‹çÄLÄ8 AČ8_YýHśü.y×QďÖőěgs{qą˝d¬”KqžrŰŤüm]čOS 7°ŢNŔń¶âuçý{Ň6·×gäV’žľNÔiŐ®]»EI9ęÖŘc¶Ö:éKć6ń¬ě:`Q2N~NW'mŢŠý%DZeě56ÖĚvÝW@P@¨ş€AĘŞ[YRP@F+@ ń߉Y‡Ç%ěĎ˙KŽ·rű4ľqQ—h6Á´Y9=Žk{‰ç$vęÔé“QGmçËZ¶lY»8/·eŰ­[·îT˛Ţ¤ŹżĆáfŇżG˝ĄżJ;É]ŃXŁ]ĘÇ3)żAą…l˙M€ö?lżÎZ#KĽp@rĽ­:Ćő1ŤĆ pV‹ľW¨<—2—Đ·ShŁűSŰ™żŔőz„ă­^¶Öş"ĎŠ®CEĺvö·±ůŃÚµkďg3€ 0zőĎđÜsĎĺUTß<P@P@P@P@: @ŕ¨c¬5Ů•xË7këšlł*mĹ Lu.ŻlĚ $`·{é|ZYÔ‹·goŐ‚_§Úoô;™ ZťNŇ·¶1ľęÔ©JŮ­µ®¨ím˝C† Ůą˘öÍS@P@P@¨†Ŕ¸çATî­.]ş´ŕËjĎj4iQę„Á’\n)n_':c'P@P@P@jM Ć˙J^k=µaˇš¸…2ý̬ŇĂçÖ˝¸Ýpë/ÉK^N·ő}uÁ‚‰ň$˙9vwc-âÖ¸Xoă!e߉|jK€[(§ňłřĺ˛ÚoÖ¬Ůn6l[\ËZöç¶Ň×"0É-ŔwQŕÖ¸E5ŢN|>?»÷˛ď˘€ ( € ( € (ĐŔ|&e» §a đ„NĽm6ý24ky^ÚŹx®W%Sm۶múÁü—;\K ňR’Zz€rʞß,Ęp<•ÍG¬‡řyďCGţď^N'Řóç(㲥/xóeätÄüŹäĹG°ÍÂî"¶äŤç×ÝĚsëâŮ|Eĺž"=ž5—ľlŻŔü×l#X|(×č&v»Svőľ•<÷.ňâ2räČŁ.\ţCĎę[ĘOíÖ­Ű31Ö+V´ H»ťůŹ@|ÉÂóôâůp)”×âůźćÍ›ďχ÷ÇĎ`ů ?»/–TpGP@P@P A¤l—ŃA4Tâ€M:hC&Eŕ,źŔצ/ł,[đŠ Đââ´Ź{őę5˛]»vç°m¶hѢµd}?”lS̰Ľ‹v xÄëq첥Ę8ßí·É}ŤŕâÝlÓ·“÷ueă KZ.ĺî h6Ťý9¤÷˘Îɬ٩ł7i÷sŤî‹räM"Hw.ëSÔůë…¤_ŔÚ`ŢŇ\ .~v1(H<‡/ťŐ˛eËü$-)›±m‹ĺ[É ,ĎÁ(vĺÍŔ̨ę® ( € ( € ( @}0HYß®ýU X€ŔăÇÁž!hs+Ű+HžĆ-ŕ?ç­Ą×&HĹĆ“;ůqř\Ňď$ŘsW’ďvKŚG{ §"» ůăŘÇp›ß0#đĺ8f–ë­¤ŤdwNł ő⍽ ©——››Ű˙ˇ¤/ěŢ˝{,SË—/ż ńě6č eڵ˛…7%ŹĂiuRŽź×UĚ’üSľ»'É?śĂGą&“™}švNĘ»U@P@P@h8éŰHÎp‰ŤK€@ĺaoÎfÔ+YŹ'ř5—YkLéÜAţŽg°íĂz'ůďí·ß~’2n·‘ó2Rg'ű»ł˙Sn_ţ VĘýÇ“|k™łüVS>fQvcíťÔ!đö*őö䙋{$őë—Ś}t˛ ţbbA°ýyś`ý3ë(ĘÎćg÷Q‚–1;ŘEP@P@P  8“˛]P‡Ó¸â­Ý*c¦ßŻ âdÄąží9rn#ýéČŹŰdÉ2|đf«=Ěm¶÷r"—RÄćařő$™ă9N˛żŠőJfűÝ #FŚhĆlŔôířqL˛äç8Ž…ň˛™Ću8*ťŔ?ÜîÜzúôé%3“ôƶĺçđ„gź}vEYăćg8ç·Č»2VŽ÷ă:<Čţ9¬Włş( € ( € ( € 4 gR6 ‹éP—ÉkvŰm·’™{ĂŠL~…5ěqđŕÁmČ_Cą~‰Ě /Ľ/ŇyŠü}“4·› đ˘–' † âY“} Śu$÷”ŚńrśS‡Ţ*ŇxĚť«WŻľ<#‹]ĘOc=Ľ˙ţńśĘTĽ”'//oJ˙H´…Ö§ üĺgôc.ÁžI~¶_#í.ŽLŇÜ* € ( € ( € 4” çZ:’F&@Ŕ&ž‡Řš@Úź“ oď>†VÜv|_ń GާĚc¤÷ ‚>°Ć:‹ŐĄ هí…ÜzϤŚŰľßăxcĹu›OV­Zµśŕď+ضaŤ™~ĺ.Ě |Ě‹ą×ęEf[^B{g0“2żÜJŤ$cíÚµ9cÇŽm’ąâ™5uęÔ l˙Ć5řAÝôŁ ňîFÚ ĐĚh$<SP@P@hTÎäiT—ŰÁ6$n…]ĚíŰ˙ĂíŰ·¬\ą2ŹXÜ“\HěRžç÷jŚuÆ }›5kĎö{@e2vłćôěŮóf¦5$Ž A±Ă\ěŤŘ=žăž±Źë'lFÇíÚM›6-zňÉ'×Dz,xvOď˙ĂqŹäý_»qٲeíxNhsŢĽyS’sdž·Oź>×PfĂÜąs/Mň·fK t8í\VTTÔ‹m!ŰYŮŮŮ—ŇîBÎ1•ă/—ŐnłfÍv›9sćűŐ'čŮdńâĹůeÔ»™é}űöÝťăă8ďŻ2ÓKďsľëH[CýËĘČ{—1†ŮëĄó*:fśż`Ě÷Í™3g^Eĺj"Ϭ#Ź<˛ĺ“O>ą¦&ÚŰžmđłŮ|őęŐ¶nÝzôôéÓËş®Űł;žKP@¨wŮő®ÇvXP@ę´Ęď ëRť\łfMÚ^O mĎĚeś«¦ĎKĐs$ÍţŔŮ%={öěÜŁGŹnśűyŽ$ ŐzäČ‘G“ž+éo7iŇä‹Éq(+«źřÜ+©ŰQŁF Nň’-ç<¬°°pDrĽ˝¶ĚXý çęXŐĺřńă·ú˙- †^ŔúâŞU«ţZl·˝†Yr‚ÁŁô.a˝ˇ$±Š;&×Sô~~FĎ®b‹) € ( € d8“2Ă]P@Ř\€ ÍˇÇn"µ;¸iÔľEŔj%éç“^HÚ1Đ>ĎvJnnîé›6m:‘ă)źGŮ˙ĄČěç’&é±=”`ިٳgżg˘ť«I‰€ăă8YR Ąî÷É;Ś´g™xf~~~'Ň&sÜô7™-řą¤<Á­ÓH+9/űź%/fv‹}Î;‰n§Ĺ 7PIżŤőpÖe¬gÓÖ ¶›-´9…şŹ‘wkf}>®U«VŁ­Ź’tĘľĹ9Nb¦ă3iÖße—]ňŠgRvăË“zĄ·îĽ~ýúą¤ďÄ9ÁędÎw }»´®¬Żczfc&%e:“·éTýÁÔ‹’W2“˛ĽëJťÍÎó8 ·”oV¨ř€˛˛{ eŹ*+ż˘´¸ťś1ľÄ5깣g!bó ~ÎúrMľ_QźËĘ>|x«•+WľIŢţÔ˙“çřďŕB®Íłe•7MP@Pŕż9˙ÝuOP@řŻ@óvM"Čr.ëSĚTükĆ. }W`§‘>Ž´rüʱ*˙¸qăĆăHźB ďn˝’ňăXĎ$öÁź.ÇpüËâŰťż™““Ó›ă’eĐ AÝhc2mţŕä6lŘp-ÇwŔE{Pđśt–T`§ŚóFňXúq,íü‡ó>NÝŻ’v?ýľí'Ô9€ľEŢ]÷bÝlˇ^ęoqŰ4ȇ6+XÎAeőcüĹUÇ[™4Ă9"űIr|ÄGüűńÇżś~~…6żËuŮ‹íŻ(ł+—0ž \˙Ł|úÖsňŽÁçdň–˛˙'ęţ“Ľ»’ö*ş®I™ŚíPśÂ-˝D ’6oäś1ĂňmÖŹČ?볏gíJűĎłMQf5Ë/Ĺ~qđîZvGł®`ͧŹ?&x÷m^ĽnÝşŻQ>nĺźAýyt}‰rĺ.”‹ t?ÖűXÇQżYŚ—Ů¨&Nś¸‘üýHű9imČďĚţőôçöSäíĹ&ĆŃžm<: ±ńs±ŮĎ!]˛dÉ(÷®űS‘IÝsŘśJÚÚÎf{-uŚĽ¸MťńĽÎµ‰źżL>ĘXŢ‹<P@P@жú–śŠ›5WP@ę»–ăĂÂîÝ»ß×µk×÷ ¶\Äqć,ąG$MfĆŘżH‚`M÷Yłf­c#Á›ĽâŰ_SěO"óeg±AÂh7µlٲ/°y#™Ui±đCąWi÷·Ü6˝Śó^Âń— ÄíLö'ěçÓVIP/ę”sŢ)÷7‚K 9ç_¨·wĚŘc;’ăËşt鲂±ÝÍţ;|‹v’%‚Sěw ďă$­:ŰęÔçÇP<-cm›y®IźóHŰłóÚ´ił’k3„qÍmÚ´éęĎ'ŻSFť§÷Ăż@Ţ}Ô›‘—ŞÂuM'mn*¶MŹé1ęßĎ,Đî´ß—ü,®K[úu×iÇsŮ+ůé%i)fF°ş#éCČűü\ĹěÜ)Üţý:}‰@c{fB¦Ž?á,áË0ňnaŚIŹq5çö’˙/&í ^8t*é9!KŘq 8çéĂĎmĽ¸éVĆ?GýYKÚÝ›ôôíęÔŤYĂmK2ÝQ@P@(W ˛/ĺV4Ch ń…ú¬ÝŞ1ľ´ëęjÔ±¨u^€c/`ąr Řţ‹ S}ÎŔÁ—rűOíď‹®§N:XUş`·nÝžäVÚßS.ý“ŇůD”fŇţŐĚX|…6Ţăśë Ĺ-ą.•ť7*Ç,@ÚŽ—ĘÜGŰßâ6ŕxŢă ś”nśńżNŮx‹öE“'Oľ•üř˙¦'9> J˙{ݬ~ĽJźłĽc„/q>Kâ6řă09ýŮô%‡ýÇŘIfFr)v/|mGŮçx~âfÎ]×Ňç§í—Y?Cúßc,çŚçgŢ…ÝŐ¤oä<ëŘžAţűMW’ý|“í|~\ÚńBśô˝ÉmţRöN®ű[ÔŤ@ńδs-y/r|)u"Đş'űń|ÍÄžÎĎÁ‹±_ŮÂyţmŇ^Ú˝’zÓXăÍńń¦ů{éËÇ´ěŐ8FÖRî×”ż™Ľď…ÇŻr‹xĚęťś/~V¸F§’ţ'Ú_Hŕóŕwß}7S?Ű^Î~Ľ¬çň¤N\SĆŘ«m۶˙4ňž`,§°ű—¤Ś[P@P@P@Ş"3§Š&±~P…őŻ”‰ň¬×UĄqË(PŠgŹu¨Nßc]yA¸¦äy;f1VÔf‚bv\EeJçUtŢŇe‡ş A¤Ínĺ-]&9¦ÝÖ#FŚh–Ww»­őă|ͲĂ.9wŘDZrśą ;ÎAĘr—Ş\WÚů:Ľß—n„ôޱ–NŹăAI€0nyŢb‰ţ“ߥĽźŤ-*T’@ß^ç\ÜěZžEô%™Ý™Ů\\űÁ·ÉL«ę>çk[ÖĎ/ý9‘őžŞ¶c9P@P@˙ TéĚ˙[Ü=P A ÄË%^?–[*ď®Ć0ĎĄě]<ŽŤÍÁ¬Ż°ş( @9ŚNbŰÉ1sŤ}ç•SĚä:"<®Ůt®×IĚN|k{w‹€_Ü–ÝŁôy™ů(3;WE’™Šbgé2;âŕĺłôíÄŇo¬ß}ńś ( € ( @}(óŻďőmöW¨! L“juE5»ŚňĽ©!n-yl5›°¸ŤF€eĽÄĺa‚_˙Űh]ŹJ€°ç+Ć-Ń]wÄ08ÎݱôJzú‘El/íСCĄ·ŢoŹľĎ,DČhŤ±IDATŤ7ż˝=Îç9P@P@P@¦Ŕ†Ux·nóđ˛jŻ7˙÷¶ďxö‹ ( € ( € ( € TCŔŰ˝«eQh°ń»đůNĽĽ8ŢŘ~}n5‡ĄÎ:‡—G°Ů—ő#VP@P@P@¨‚€·{WÉ" (ĐŕNf„ý.çź­ P†ND9ÁĘ/Ő]Ů\Éꢀ ( € ( € ( €Up&eˇ,V¦@[R?_fމ ÔxSî˝}R©O±ł­żD·rŰ8›łXß`uQ &^¤1žHࢀ ( € ( € 4,mý>ް4Muľ@…éŐ­dyę˘Ŕ4:E r›—OŠŰůĎ6·d ”)0ŚÔgĘĚ1QP@P@¨Ç)ëńĹ«]w&e¸va›îî–Ju{‰fjęâ5´U|ż÷ŮŤÇ\ş(PSΤ¬)IŰQ@P@P@:%PSßÉëÔ ěŚ (P ){ßořçkŐ¨T^Ń5dôe}'•ЏgoÖVP@P@P@¨@ŔçT€c– 4 űĺÜźňĎúîÚ @/űţ6«Ę0µ P@P@P@†/`˛á_cG¨€ D@ń‡S·T\®ŇÜ×ţŰĆďŘťUi ( € ( € ( € ( @ZŔŰ˝ýAP@>x¸M*ul<đŻăVŠM˝©Ô*6ű°®ÜĘf¬¦€ ( € ( € ( @Łp&eŁ»äXĘřQ^*•˙łr2+KţPĆr!«Ę4…˙4>}úĚčÝ»÷І6ŢńăÇ×Ę˙'ŐV»5éĎ5=ŤkúëŹj˛]ŰR@P@P@P@Ę~Ů„çIÎcý¸ërĘîĘJóĎł:C˝rgK4@†¤$Hw 딚ľT8]Ň·oßoŐt»µŃ}˝Đ emČÚ¦ ( € ( @Y~™.KĹ4h¬q§÷żF¤R;ĹŰtŞşü/y;xĽ$'^ěýBUëYNú&»˘˘˘ł˛˛>Cßßfý(77÷„Yłf­"µ*;;ű–ÂÂÂÁ¤wĄĚ_çÍ›/J‘÷pqÚ$ęw'Ż7ŰgçĎź˙ťaƵËËË»™ü~¬yä=ÓŁGŹ 'Nś¸‘óÝMZ3Ę$ýz¶_Ḡç9tîÜąo±żMKż~ýúĐß›h$ţČĐ”u}>‡ţ^ĘůŽç¸+çü'ŰÇ«ÉűR쓿›ph϶9ë-äÝÁ¶Â±2žé´·7ő6°}?Ę3–GËÖNâŽ&¶Xčß~śăçś§X¤:ł=ý»…óßĘńľ¬w6ŰNäÝIŢŘO >ĽŐĘ•+Ż$-Ćą–2]ŘŢČušů. ( € ( € Ô¦@­ÜĆT›¶mP > í«¦ňOń­Ű•žę%JÜţi©_±1@Y©ę«Ŕرc#÷AµűwŮe—î¶"(źUPPжxL;ł]L@ëđ6mÚD0ó‹ýű÷Ź`fŠ´1lÎ'ílÂö¶ŁYSkÖ¬ů6ěşë®Ť5*Úě´téŇFĺ"p9‘ Ů©ě_Ö˘E‹cŘ‚ý!‘ż­ }˙1m\ÍX(ŚsÝmŇß+š4i2ŽÝąě•2é%i)Ć÷NNNÎé¤ ˘Ü0úsUr wEcĄü0ü I»5 ä:5Áh"çąsÚĽyóéßą(÷ĺüg±˙Ö}zöěyćéË)kă9ş©U«V]GÝÖŚieű±Ďß_\P@P@Ř>)·ŹłgQ@ú#p#]]>’:Taýe S©˙°ą”ŐE+@ŕ0‚[ÍŽ>úč;¦Nťş!JëÔ–-[&3?$ŕvg¤Oź>}=®”ß3Ž“…´ ś-gÝDml¤SćöoŹ6 ôńźS*fLĆ{¨Ň çxšzq0gĆŚ˛ýüÖÄ2‘¶&pűőŐęŽdçUi4Ć—źźżżÓ™‰y urgÎśŮ"łnYcÍĚŻ­ý%K–ôbL]Ŕ~—•·Ż_żţśký9 ÎÉvAÖË©ZđüóĎ/%i6kÖ¸Łążś={ö'ĹÇéëű. ( € ( € Ô¶@NmźŔöP@z&°žţŽăŢĎ/ĺW˝ăŁčÇU/nIęĄ@.˝~Ż8·yż“1’xäA沑¨SćB@sfdëF ň˝¤A´6ţĘú˙“¸%»F‚Ą÷ 2d*ĽĂéÇ×/^|53{GŹ d})«)‚“ߥüq¬ż¦CŃŻěŤ7–ĐKĆťglĺ¶ůۺЧ¦¤ťŰŮ&f·qŢ%IŰÜ^×&YâE_éëDůVíÚµ[”d°ĚŠţ&ÇnP@P@¨MgRÖ¦®m+ @}xšŽÇm U]§Ő×ÚoŞ*ŔíÍŻP¶łŹKę 8°× AvMŽ·rű4ľqQ7n™&(3+§Çqm/ńLĘNť:}­Í°Çů˛–-[Ö.ÎË-ĎËřőĺ–őťâ8¶eŰ­[·îT˛Ţ¤ŹżĆáfŇżG˝ĄżJ;É]ŃXŁ]ĘÇ3)żAą…l˙M€6ńuÖYâ…C’Oä<1®á/ŔYM9ú^Y ň\Ę\BßNˇŤxâĹĆv&Ç/p˝áŘEP@P@P@P@ş!@ĐŞc¬5Ů›xË7këšlł*mĹ ÜąĽ˛1’€ÝîĄó üeQ/Ţž˝U ~ťj{ĽŃďd&hu:IßÚĆřŞSDz ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( €Ä‹¶"^±5/›ŘÚóYOP@P@P@Ć.ŕ›űO€ăW  Dp‘·Ůţ„!}ťýÖYYYŘNęŮłçďľűnłőë×RÖp)÷÷yóć}aĐ A»nܸńW”B˝¶ËÉűy÷D=ź±ű™KNNΞłgĎ~;3­¦÷űôéł8;;{Ěś9s^Şé¶mOP@P@P@-˝Ł;ŕůP@š @y;mŢ´iÓáóçĎß ^_Ž\˛dÉ„çž{.Ź`eN¬‡ľ"99räaĚśÜmÆ 3Č{ąYłf{Gý&Mš|Ź`却{hŇGň”ÔK¶µ LÎíVP@P@P@†*ÓPć¸P q <¸ AĆS[´hŃůŮgź]ŁgÖáJf?žÄîçăxâĉ1;2E@˛ ??żäôČŁČzkîÜą?Ť2±Pé# V~řiJ*E˛0i'I+˝ĺśQî"śČÉţsô댤_ô,,,Ľ‰ĽîäM#ú­čëŔ[lÚ´éÔ;†Ľ¬OµiÓć´éÓ§ŻfżdaVĺÍl`†çKÝQ@P@P@P  ¤¬ÇĎ®+ ŔPö&¸÷NLrůű±V¸4ěCĄ ´ś™™Ć9úd—¤`\ŔLĘ—“ăŘ’ÖśöN$ÇýIşzíÚµ·±Cł#i“(s.ëS?c˝Ľ ¸Őü¶ű˛öáňť ¤>˛zőę8ľ5˝ ĽŚťiăâ$7 ( € ( € ( € Ô{o÷®÷—Đ( @±Ŕîl?ŢZ Š»ł~T…úý@ž–¬Ół4Kף­f`^Nô‚‘×pćĽ ™a™~Q·rżÁ ČuË—/ďFz¬˝yNćIÚŚóěÁůóĂf[ƶôXçg”‹gŰuëÖíƶäô$ß­ ( € ( € ( €őUŔ™”őőĘŮoŘL€Y‰Ż‘C0°_f·fŹ"ř÷&ϡÜ)3˝ô>Ăxköŕ#F4ËĚă웸ĺú™iUÜď:~üřôďŘ@Ň~+ŹďtüuÎť’µuëÖťgÍšőů·’ÇdËěĂ)ŮóĚ`ÍJÎGŢɬ7qo wQ@P@P@P Á¤l0—Ň(иx™ÍFxńlÇ{9ľxÎŻ`÷÷ɬĆH/kéŃŁÇä˙{ĹŠ7ĆKx† –C;chóÚ¸Ą¬:•¤µ›2eJúą‘:żFŮ9q‹6mMc=ś éŢQ?Α——7'ÎÇą:“4…Yź‹ ´+ĺľČqÉŚwň?âvđ«HëÉŘâ…@. ( € ( € ( € 4” â2:f&ŢŔćžÝřWfTľGď1{áYŹçV&oěćYŹLě´~ýúEߣťó¨?Žŕâ“•Ő/ťO˝˙P˙ZnÝ~“ýoćććžečă l.fÖäň^¤Ě%äźÁíäů¤_CźŻ ďÓ l>ÄńŽÓÁLöÓ 3.×±ó}f‡ţ|Č!;'»Q@P@P@P@P@ş&Ŕ Ĺ[ۧ¸M›™Ťí¶¶>łűhŚŰĎÓĎ´,«^˘Ó¤¬>”ĚŠ7€—UÇ4P@P@P@P@P J™AĘ*U° ( € ( € ( €Ť\ŔŰ˝ů€ĂW@šŕVě%´úăšoŮP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@¶Mŕ˙‰Ű­…·Ď¨IEND®B`‚bioframe-0.4.1/docs/figs/bioframe_closest.pdf0000644000175000017500000017742114420777331020545 0ustar nileshnilesh%PDF-1.3 %Äĺňĺë§ó ĐÄĆ 3 0 obj << /Filter /FlateDecode /Length 7477 >> stream xí][Ź7r~ď_Ńo{Řăľ_ř%ÚŐĂ>04@ġŹl%3’=#g±?h˙gľş’Íf÷és4›`Í"Vwv‘¬"ëNÎŻĺwĺŻeUÖmÝ”Źř§©ĺůAž«ňżŇ.˙íźĘŹe}Ó—.›ňŹeu3”Ęo^?×ĺë·eUPł·Ż­ć/ľ˘®/§z,ďѸç˙,ŰnŇç‡ň-zĎ÷_lőßtu95-ĆÚa¨ôô O5 ’ĺ'î7oëâ÷ź6zÁ<㣳,ޛޭŰvF̦­«aś["ÄÔ÷ő4$ÓçÁ´Mżn1o§&HłgňÝ=Ç.â绲ş›zĆręꛆ05ăŔbj{ Ćě˝I3ߌ¤śÚN]Eë÷p>Š á”ni!Ľgç¸=OłN¤˘1¦Ü^¬Ž®¬›v2úű «bw=U7ő<7SŹUy!WCčGÂř/·Ť®\ú·®ËŰÇň›Ű[¬ăňö}ůĺé§Wĺ×ŐMSžîíáŁ=|˛‡ÇűWĹ–·,˙pË‹.l†y.ëŞíişúúQ§†ůůó+L ˝ż3÷~‡e;m«rjé˛87˝×†÷V;rŔ”úďĎŻ !„ĺŮ~z~tŘáó§Űšë€ NĄxŔK~`yžăGqrŠ~8ýîlwţŁ?<)ąK#w„Ęçcô÷YüłObÉę;lčŰ'ű#»Sű7#ń/öŕ«äɇéxŚĆ[DD†ăeAu`eúŞËDWCşLśô—Ś·ë;oĽHšˇ/[{ă-d×fĆ«Űřđx‹ÓĹôŤÇ; ]ŮôŐßĎzŔZhˇgŹIŞ }Żßvľ˙l Y·rq:ş˘cŠ7Đ“MÇşh˝BŠTŽdfpp…§ó3(Î`)›a.űˇąŽĹɧt~ŤďÎ@9y H˘lÎŕď„e?ż< ~¶%î‚ŮĺŁkJ˙éé'ú.Ď#ĺ™čýĹhédyÁDůü Ă‚Íë{Ʊ٧GŘ ű«8YĎľ,•1ĺÉwŢŞďO‘Ů+ŁĂÚ{€SI^–/ĎF–Őé§űŹ÷ĎŻĘĚÚÜÁ5L \`´ş#ßż:łtŠ#=÷\O-ťK‡±třq Gi0LđX·–Ζ«•_:čaM˛¬ĂĺĽŘ]:*†ÖKGöŐöŇq%y««îµÉÚTk^ąnňž S|µhÝT4˙jĺÜ}ľ{˙Ă/÷ďţű9+Ú¶Q6U— Ôt˘ĺăbň¬ĽaĎřČ ÄH^x°×żďË~)Nw??}zÄFĎmq€;ăNŰľ{ţüîés^) đ8ăą˙řŁŤfi­Q\ć0–çĎOď˘ň»Řë§¶ŐÚ6MkE(wŠÂ!ôÖyŽâQňäČĚäžÝ kă‰Čł4LZ(ŘşÁxVX!Ç´9‰Ë,óŰ ä®űFGu[´‰˛H›óhšnwŞAúšĚxűvC=Ľ8>ŘÓu3µÇ÷{ł2݆ ;‘gQpɰKZÓŻţË–|}Re…LžďžĽW÷śM†ú/Ž}fŁW±ůrŽüaÁ‘•d+8Ö˝ůmşŞśg ]vŤ–/7ĺËÄ— Š˘ď‡—áuL]U@ fě0Šţ^`n%Ŕ\WŔ„ÍJć^"ĚčfÔł7Şj ) ˘ˇ i9üśL@ C˘ ß„(+0\{—@óŠ{ËěP-łSsČ[N7Ý8’A\ĎÝMŰÁ6vz«Şp°IŰ=ˇÝh°˛v| Xéła¤ÜCha=>f&˝ylŻXm3Čęš;ť`Ć!Ú%s0zn»Nć9O&[-j×;,ŕĆiúL&±ę¨Â$şíIU>%‡ČÇŕ˙QŁ™n¦–áőxSw­1ä*şą Ŕ°~Ć}7X@ŁvőMÝwCćb軉`˛ĽŁVŐ|3Zl0|¸EłN«öfd!ZU´Ä­ŮŘ© ëŇ C±ˇɨ`ĺŚ-Ť,@°„;,péwşśö‹ń†ž—vU%]Úhë9ŔlVő<űˇźlîÖŠ¨ć Ř%ĄSúPr„±Ő=sC`4B×c-1=|¦čAö(%…“â>:*ÍÂwJ[ÁEÜŽYŕĂ 4RH&z‘WĘRÎŐ]WNóLzŹźĎĺś×[¦}XžwőAEęžş+.ʆąůчe&ćŚôaŇ‹†sŐcżSnOhŔYNu@CĘ|ňSŘšýöÖÄ´5'Hz DŹ6éÝŰ©<Ô:Łz=çU4”%MI,Xârn\óHnłś±`D?húsĆj”ť(3-vn"ąÍő»«F”KÄ9w aF‹ň:¦±Á1­Vĺ6śe–EĚ4ŘW3-X(Ól#{á ÓĐ,Ă´â ¦9¦$ćÁÍ”G+€1 „Ę2팕‡ěQÝ <[ «±×řÖ†Á řńç‚ `鍗2.­—(˘z‰‹,=MżŘn& Ďo·”sPâ˛Âę‚AF–žŮu"ę†óF˝ď8\˝q݉[(řóo–2íą÷˙KN˙ŕ q>0 ý˙‹ÝĐ«­DmuüٶşÁ°+§–í\HT·Ë˝Ýäö{éř° :ÓĚ\kQĚ{ĐĄókŃötlćv,7>$aĺv$fzxdŇÎ bĂ# 0łÁ`dőíů× µą$!ŮŤ`­u<92Â0rf}’-Ü·á­\Ň™bä 6őŤ ;žĚş&+RŘlă č`Uł‰›¸r€¨›Y‡@S„1Čî¬#ĄaA˙*,Ě` ×§ mČ”†„Ěú4R HF†yý&Ě[­ÓYbúä”ÂGT:€úsbE_9Mr€bn×HeŇ)[i[aťÂ·ÉFýVąŇc©¦°É"•b@9—ň­…vŞ8îr™ŮS´đ%ŮÓžšŃvo;˘(Žřôń‡»Oßţë§Ź÷ßżŠKůČŘ’Â×=_r %Ě6ocó0,VŻŠC¬…c{Ú ÷Ś"‰~ÔşNřTĽ×żćëzeµ­ČťÝw–(w1ş{±wqşfße•'$Ôesoł»Ľ€ÝQѩ¶|ő8cĽ‰łÓ8s~ßE«ĂůkűKÖ)řŽPeöť•A^ľÜJłĚqqZ-'—S'đwßé°lžNٶý`+zoß).gÇšA†Í‡ëýůG^hĺ_{a±}WzQ–µpl´ďŠĚQ ”¶“–×§ŰnĄî˘"Yöx“Ôš]¸7ÖÂöŕVKˇ< Ł ťLTîÂ"ŕ$ü*Ě šb“Pnĺ۲ŚJětýŁňÚĆrńˇŽ¤ü‡‘3ËáŕĄĹŘ;óDrőý{\V…/şlM]dŞ#&Üä‹l32ß×Ú­rĘçßuuďŰC„#Ą´I‰«_qZ/ľ„뛄J_ÇĎ%“ __|^™é?ˇ&ZÍ'çšŐDŻĘ·)r`íEĆXĽö,˛bŰă~‰Pů n„§X ·—w,}í%…šľV­aßó{ŚO9čý%ďţ˝Ś7ŕ‹Ç|ăşašô˘=Ĺ)ĘŽÎrÖvŞ%tôżŻů_Ä+DˇŘ†Néťţ=§°źöâl52˘= ±â€Y‘6ö.,Şu€w9Úz®q^âč=—Tn±çjBXOŔč RLč@ű´©8m0VŤ%‰Ę‘$ŃHĹu’$jZ… (Ň$JK%I4ĚşˇCŁÎ’DŽl’$‘ő žY’@ś$fŠ’I%ĺŕ!: ¤I"*˘˘$Ń€ťÇłzF¤ …P(¨¦Ž“DńW€q*&BucCŔĘo$!d#Ą}‰As’đkÚKw8 B¦5ÚÄČŚ†@FCŁ>ťÔ⑍4DX$â H“Da–´K•ÓÁ!čÇÄŠľršFČnëşX§A€Ŕő!ť&OÓ-( ±Q•ź"ť¶S˝GÔ˘JŔ¨ÚDjÂŚd—íčžôöĚ,ްLĺ`Ś8ç0µ-˘ůš2,G”¦)DR†ˇ‰Ą Ň!%¨)C ‰ÔĆú]3„ú [ÔKŔÉÝŞI âšŰ¤ěbswu·Nŕö!_k¨‘†d˙h)ţ1?±ĚżŹÉóĂ×”H9·‰ä—ĺ‡cnOäięü±Ľ ’.ŕ6I8MA3·aQ·ĹS±ĆˇQ:ČăhMĚAąéj˙Ž(+·“w8Ěj;„ď–ĹĹ™jăuńvĎĺaj™3 2ŔR_:Č@ÝcÜ Ś í‚3đE04S™0Ą=.–dÂĺ¦JXEě O»L]ÁsWßÝ!žpŽ‚8`łľ‡örB)}w‡Öľ7‡×ŢqډM}ďOhďŢ^Ćđ-Ćź8Č`eę O°ó8ČtÚ;q‹…(¸ uWĂ­€ČpXâÎÓ‰Rw·ł.zéβŘk¶ľOqŻíĽ†™EU”ćÜa‚„3™a¨ŁĂBě)bĹFŤÜťtdćv҇Úgäť(v @©<@(-dPá Ă1é—2íIŔ™@‰ÜCč3\ů"já 6‘ÁAŽąěČ"ZźFęxdÁ‡ő D®nĄî’@0SŮiĺm`FZŘąO÷\Puß– Ĺ& ;ČlÂŕILq‹ůWrŁ#zŔxąsĄFšĄ«úMĎŤžr&ĚŇŰ‚.:l¤JMMó¶Š`¨‡Ě óÝ"1ŮLĺ;ü5enř` Ą{ČżŇôŘPóYćU·ŹĚŮ_[/ÂX\#‹ýµ|đćĂÉŕ-ް^qb¨_qg˛+‹Ų̊ćš4ÄӞwď󱜠łĹÁ >ăS&ńH‹Đ.xź_C,x¤ˇ…cŹ·ÍŃČ8ÖAđdŻľsmž÷HýnŁ‹µŹHcOˇú)"ľ @şDl”V¸÷I¬Ě+ŹtěátŇQäČ#ővć}‚„Žok"ŹÔZŔss?6Zu«@ŕqşs±ńλ{éŁPHľž8;i2l}˙gđQ4v¶#Îá‘Rb¬Ć!ÎáńĹ;ůH0ýĘOŃ4ó±3ĚuGklN3sH‹ÜüuŻ Í棝ńQěşW [ß#ËŃ3MŃ5`&¬\D<-‹Çár¬OôŐ3çę‚€:ßDŃ2úeőΡz‰xJ/Śćs·jĹn°› ôw]R7&7áhô~I=´˙Ĺ·:z¶Úóî^Ąô…u-aÄEZw ŽĄĺë˘ĎŤ{ĹkZ‡ő7)l FvěĂQOÓ-Jü"Z×;§Ľ~ĺlAËŮ/ŞčX_ăŤwy§íőD·LťŐ1©č8T1x¶˘gf;÷łYѱ,Ý ·Üe+:bŚ v2y–wł©čHKm|Őâ¦ăĄŢ<_ŃÁEçamp(bi†3A3ky"m€'ąú~íčÜ[¤ .>kŮ%Q+˝Ś6 #|C`4r@Ú0oö†˝i ŰĐzľ…S‰ŕi=ĺĐ"-!˘Üšŕ\ĄćżÂ1oȵtŹŢ “4 ©ű` BŹÄĄ.ŮĘ@^‡¬jWŮrmÉ4µš=çé08tĐblQěťCř€MÖ®Óos|1 —(€xfÜB{\®‰ťĐ<}śdDĹl+a˛â#}‰ëƉ˘TÓÁúNYyGť)Ţá4HÝđ;Feďň=˝'ßë;îaYűŐ;1ŚđYĘ@·ďé#őźĽ[˙‹šŽLČ ç(ËÖu4‚ěäńżqMÇu!+˘k€^΢¨gd,Şłi¬ Y5äS1A‹ú =řKµ˛j±–˝¦Ăa¨ýŔÁ_Ú|(áŕU;aC—MëŤPˇ 2l«é°>)fŤż„ YŃéKÄ’@…!×t` ¦Łťty˘†CV.5Ýmc_™ź˛Rä´g˘U†@&(‡§Ú0RŞß:¤6Ůá4‘cQ#§M@hč}*©#Ç*5ÔJ&ŔN,ü ł41‡#¬BXá«@SGN ·×„>ů8tŰłř8ôDr€n gVŇŻôűŢů¬ŰŽ+k5RY‹Ő®ňYúxĚ5=‘†r“°C…Ů"Ű"Ě!Ž˘9 űŹĘ9((±`%ˇťÚ'´O_ ků3±E¬ –S°OQ"™źŚ`6BşíüĄ5_cW­¦Op¤®'˘­ĘŢťŇÍ"Ç3uQůă…'ô[Ü=ĂĆ# m5[äć‰a¸±Oa¨Í@p„†”1ĚÚÁb 0ÇÁŕ4Đg°uŹľzP×zů„aG,`č’± f$˙ͤLXĄ§ë»ĺO¶ß@›ôˢhý”ˇž…¤¦ü>ĹÓN¤'ŽťńŻI ćśćľHyű"1ÎLW„Ń‚ăD«^=˛8×ďa4Ďő“i@^Źçú%ŚćëKĂhšëOß=jfąţ‡Tş…m–őżĎ†Ń.ô“Řââ'cŕüDüĆűÉükâ'c¤çř˝¦®›TĐ„ŠĂ]ſʂ‘ui&Ĺ—:Ę#2 \ŰáŽňú…šŁ,ĂP;x˙(yŽrř@µUŔůŽrŹ›~RGą‡Ö`ĺ9Ę=] JĘ)r”C»ŕ|¬ÇźÎqG9´Č9ʰ•Ô‹‘‡8Ęaé᪠#8ď*»*ĐAĚF!Vř*Đ4 Oą˝vąŘ˝d¨ŁLĆ‹8ĘüÄŽ2˙š8Ę8‚pąsµv…Łś1/ć)»Ť".+YrجÖĚç MĚçr«ÄÍĽö#ĎíČŕQÝA]#ö±?řŕ0†’Ác~]Ŕî;ëćŻmśĹšĂ_ǤŕLfÍEn>pç×öŕÂ/ĄŇGVýî%Ruoxlżŕ9N0fżŐÖ.ř _C~žÜYqsB ÇE°éĎO¤XLbĺ—Â.\{¨0ĘĹFüŇ——źőK=y±ţYf©^¨şCŞ”Ş;ě’öŕ—Ž˝]ŇKBĎ„vÁqµ6&"_u„łüRk`«cŠ «ŕşb8“cÚ÷ĂfxVďěZşëŻżŰěĺKŻżŰDüâ×ßíô”^§×ěeţÖÍ&˘_c@Y]ÔÂpŢe}iŢíÓo¸0—,ŢÄŚŁ»ăąŰů˛7ćEˇŠ]HŘ˙y Ëŕ$"Xĺî~“€ý7ľ0o±ôŕUwűűFëţúŹËÎčî4MÔG©{µÜ]–Zĺçđý˛ł¤F ýŘľqóßţLT±ęŔk]Ţk‘ťaIú‰ţʲµŘ© Ůú«ËtEVKNPÁ$HKttµđ˝\čŁ÷ŁmofRňZ!a4iČXTÚ”.šô& Ű‘;•ôî¸ŐE)$ Zhś˝ŘđËôl//!Ňł˙&"}٧ËDzÉ‹ô,ćµHß×8Y$4<ľK5Ö8KEđ;ůűfżŰT8YÄtž§«Ą?R—GĄŃâƆEńa˘4Šďţšb[ endstream endobj 1 0 obj << /Type /Page /Parent 2 0 R /Resources 4 0 R /Contents 3 0 R /MediaBox [0 0 1321 1312] >> endobj 4 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 5 0 R >> /Font << /TT1 8 0 R /TT2 9 0 R /TT3 34 0 R /TT4 85 0 R >> /XObject << /Fm1 6 0 R /Fm2 10 0 R /Fm3 12 0 R /Fm4 14 0 R /Fm5 16 0 R /Fm6 18 0 R /Fm7 20 0 R /Fm8 22 0 R /Fm9 24 0 R /Fm10 26 0 R /Fm11 28 0 R /Fm12 30 0 R /Fm13 32 0 R /Fm14 35 0 R /Fm15 37 0 R /Fm16 39 0 R /Fm17 41 0 R /Fm18 43 0 R /Fm19 45 0 R /Fm20 47 0 R /Fm21 49 0 R /Fm22 51 0 R /Fm23 53 0 R /Fm24 55 0 R /Fm25 57 0 R /Fm26 59 0 R /Fm27 61 0 R /Fm28 63 0 R /Fm29 65 0 R /Fm30 67 0 R /Fm31 69 0 R /Fm32 71 0 R /Fm33 73 0 R /Fm34 75 0 R /Fm35 77 0 R /Fm36 79 0 R /Fm37 81 0 R /Fm38 83 0 R >> >> endobj 6 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [233 802 429 831] /Resources 7 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-ŹA Â@ ď}Ĺ|@M˛»ÝőÜł‡Ň(J…­P{đű†­„Ŕ$d˛1˛aQ)*hń |Üy#çž—aWćÝ«”“•Ü;ĺTúětMj"Ć>w…b‘•hÖ¨$WŞźđiŁ…'/‰Ű±|Óŕ.Ú𤇔…n^[gmvâ«ţ–ŐŰ.[Yü‹ń3˘*• endstream endobj 7 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 10 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [232 974 428 1003] /Resources 11 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 141 >> stream x-Ź;@ {N1Hbﲿš:˘ČP""-‘׏µDnĆĎŇÓxcdĂőBÉÍ‚zľO|käÍmŘ•y·-¤ŕrŠFÉ•ŚJP'âŘçÎůB)‘•ŢiŁzRV*íÚhá…ç p?ˇ i3 ć˘ /zJ•ĐÍkKÖf'Vő·¬›lea˛/ĆKů*Ë endstream endobj 11 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 12 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [169 970 208 1006] /Resources 13 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 166 >> stream x=ʱÂ0 D÷~ĹýÁIś8™33Tř€ T¤©tŕ÷q]TeąÓ‹ďě=VxT)ŚŕńyŕŽ7ČeĽpm›Ç¸©«Ě™Aú¶Qg2<aA `˛›MVM›ŤjÂ_$ÜŽ¸6Xah{ą™‹?¶¨Ĺ±tă‚ärŠľňEˇ‹ś$ŞŃ–č8P.ÚjMvwN™#TWse]îDűż ŢŢ˙o 5‘ endstream endobj 13 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 14 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [313 1150 352 1186] /Resources 15 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 166 >> stream xMŹ˝Â0 „÷>Ĺ˝ÁŽťźÎ™Ş<@*R‹T:đú8ĘňťÎwv6 Ř žÁ2ĽÂđqÁw‹¸áXvĆ´›ęU“FŮŰ' ‘…2a…hě.kU‚ah8ă Á§wa[ a,¶ź›8đ甝¦ÜM+‚‹A8'óWpr˘!‰‰^śzŠ\Őײ•Ë/Őˇw™4öÚýYunĆhß^ęż5÷ endstream endobj 15 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 16 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [233 884 429 913] /Resources 17 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 144 >> stream x-Ź;Â@ Dűśb.ŘŢő~ę­)˘`)A )r}Ü> >> endobj 20 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [230 1224 426 1253] /Resources 21 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 145 >> stream x-Ź1Â@ űĽb>ŘľÜ]¨SSD)x@ Ň)¤ŕűKäfĽ˛v×++:Ô‚ˇť Ď;oäśxqé7eÚ|‹9Z—“SQ%e§kT1¶©±ÝĄM,´zݱ”â1˙Š3O_"·= ‘:cĎÚhĹ“ÍÚČ´Ti©ĹÍŽŞĹeo\ý—á.»+Á endstream endobj 21 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 22 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [230 1224 426 1253] /Resources 23 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 145 >> stream x-Ź1Â@ űĽb>ŘľÜ]¨SSD)x@ Ň)¤ŕűKäfĽ˛v×++:Ô‚ˇť Ď;oäśxqé7eÚ|‹9Z—“SQ%e§kT1¶©±ÝĄM,´zݱ”â1˙Š3O_"·= ‘:cĎÚhĹ“ÍÚČ´Ti©ĹÍŽŞĹeo\ý—á.»+Á endstream endobj 23 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 24 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [452 880 491 916] /Resources 25 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 166 >> stream xEʱÂ0 D÷~ĹýÁIśŘ™;3Tř€ T¤©tŕ÷qR©ČË=]|çl°3AUÁăóŔoËxáÚďÓnT…3lö ś Š'¬`MUuKSŞSćjĆ_$ÜŽ°~l„±·jßŕâŰ …Ô±tÓŠärŠŢÂj…9I4X˘ă@YaíËß •έF„â”8¶ăN«ľ›1Úχ$¨5R endstream endobj 25 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 26 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [345 799 384 835] /Resources 27 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 164 >> stream x=Ź=0 …÷žâ] ©c;q™; †µ˘T˘ ˝~ť !/ďÓóĎó†$ XÁß'ř€BĆ·~Źv§NŐ4+Čkź|†Q¸Ă ±RŐe9e¸ŞnS3^üp?–őc[A{?\ă‘-¨™]¦)ä$±ű+˘Ńdâ°€%(S.•N‹+ťSŤ](¤ąSwZµoĆčźí5= endstream endobj 27 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 28 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [227 480 423 509] /Resources 29 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 143 >> stream x-Ź11 ű{Ĺ~°“8 ujŠS @JŽ|źAnĆ[¬ÇVlp^rg{Ľo¸â:F> >> endobj 30 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [226 652 422 681] /Resources 31 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 143 >> stream x-Ź1 Ă0 E÷śâ_ ­dYv2{î<ô¦%»fČő+ě"OHO;VěpâgKÁ÷‰> kŔ·t0Ęa•Fus FQ”)DŁEŮ9er"ŃŁÁłvŞtAµ6í´áÁ Ĺ},OÔ#'sáŽRQ¦Ňz§u;˛UËjm“­Ří‹ő@»*ł endstream endobj 31 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 32 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [163 648 202 684] /Resources 33 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 163 >> stream x=Ź10 EwNń/Đ4N;™™; †µ˘T˘ \żN—˙ôm{Ă€ ¤I‚Ŕ„ß O|áťŕ{ż¦Ý¨0+ Ă[í“Íxf¬ "UuË©R‚©ę65㍠ŹsY?¶c_ŁÜčĽAűŞvÓŠä$EĘjľE¨‹ś4,Ńqđ’A•.+Tş¦y—=Ka;î˛jߌŃ>ţ·5= endstream endobj 33 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 35 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [227 562 423 591] /Resources 36 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-ŹA Â@ ď}Ĺ|@Mv›ÝőÜł‡Ň(J…­P{đű†­„Ŕ$d˛1˛˘aYĐâů<¸óFΉ—aWćÝ+ËJNN9šJĘNWÓ Řç.Ä+=+˝¦Fő tĄú ź6ZxůbÜŽĺĂ„´wц'=¤JěćµuÖf'ľęoY˝í˛•…ÉżCb*ą endstream endobj 36 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 37 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [227 562 423 591] /Resources 38 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-ŹA Â@ ď}Ĺ|@Mv›ÝőÜł‡Ň(J…­P{đű†­„Ŕ$d˛1˛˘aYĐâů<¸óFΉ—aWćÝ+ËJNN9šJĘNWÓ Řç.Ä+=+˝¦Fő tĄú ź6ZxůbÜŽĺĂ„´wц'=¤JěćµuÖf'ľęoY˝í˛•…ÉżCb*ą endstream endobj 38 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 39 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [446 558 485 594] /Resources 40 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 163 >> stream x=Ź;0D{N1ăĎ~ěš:˘ČP""A$BÁőł6Úfžf?łl &°"!ü^xâ ďÜű=`ÚŤ ‘’ĽŐ>ŮL猤ĄŞn9•0LU·©o$`<ÎeýŘVxŚ˝ť náĚĹ‘ŞvÓ vÂ)d5EP—5,ÉQô’*]V¬tM5ň(.{’Bî˛jߌŃ>ţ%±5U endstream endobj 40 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 41 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [339 477 378 513] /Resources 42 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 165 >> stream x=Ź=0 …÷žâ] ©Űq™; †µ˘T˘ ˝~ť !/ďÓóĎó†X RI"ľO<đ…Ś7ný1íNťI×>ůL†’a[Şę˛4%EŕĘÝCÍxńâ~,ëǶ‚0ö~:6¸Ć–AIŮeZˇ!+ÇbîŻXÔŘaAâ ‰rA¬tZ©Ň9ŐĐ…B’;ńp§UűfŚţůđ 5. endstream endobj 42 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 43 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [612 480 808 509] /Resources 44 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 141 >> stream x-Ź;Â@ űśb.Ř›ě'ujŠ(@AÚ …\ă 7ăgéiĽ1˛‘‚Đ•‚A[ŢwnĽsâÉeŘ•y·-ćJNFąŤ*)őQH`ꛤ=ŃpĄ:U§®d*żëA Z>D®Gů0!>Ó`.ęxR—Š˘ÍĽz˛şťXŐ߲Zl˛•…Éľż@S*§ endstream endobj 44 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 45 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [611 652 807 681] /Resources 46 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-ŹA Â@ ď}Ĺ|@Mşnv{Ţł‡Ň(J…­P{đű†­„Ŕ$d˛1˛a:`&hö |Üy#găĹĄěĘĽ{Sěs2§˘Š%§!j/ҳϝiĆŇ••,ҨŞźđiŁ…'/‘۱ĽLH‹©¸‹6<é!•B7Ż­ł6;ńUËęm—­,LţĹřKÎ*Ë endstream endobj 46 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 47 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [548 648 587 684] /Resources 48 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 165 >> stream xEŹ1 Ă0 E÷śâ_ ®eË’3{î2ôˇ%…¤fčő+;" ˙ůŁ/iĂ€ ) Ä^`Âç;ŢđNđµě„i7ꙕ…á­öÉzD3V¤LUuˡěßTu›šńDÄ ·#¬Ś-Âc,6š\čŘAűŞv“Ą:I‘˛šż‚ÔEN „č8xÉ J§*ť]Ťü%Ë5U endstream endobj 48 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 49 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [612 562 808 591] /Resources 50 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 141 >> stream x-ŹA Â@ E÷=Ĺ»€šĚ™éşkĄ P” Sˇváő S —/#)–-Ţ‘Ď;oäśxqveŢ}˛lˇä䔣©¤ěÔ›‘Ŕ>wI{¬\Y)˘ŤęA©§Ň¶ŤžDľ·ăř0!­¦Á]´áI©»ymÉÚěÄOý-«Ç.[Yü‹ńEţ*ż endstream endobj 50 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 51 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [612 562 808 591] /Resources 52 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 141 >> stream x-ŹA Â@ E÷=Ĺ»€šĚ™éşkĄ P” Sˇváő S —/#)–-Ţ‘Ď;oäśxqveŢ}˛lˇä䔣©¤ěÔ›‘Ŕ>wI{¬\Y)˘ŤęA©§Ň¶ŤžDľ·ăř0!­¦Á]´áI©»ymÉÚěÄOý-«Ç.[Yü‹ńEţ*ż endstream endobj 52 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 53 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [831 558 870 594] /Resources 54 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 164 >> stream x=Ź;@ D{N1Čf?^Ű[S§@9JD$D(¸~Ľ‹„ÜĚóř»aŔM™‘~/<ń…wŚîý0íF…H Ţbź¬G‘U±B-iŞ[NŦŞŰÔŚ7d<ÎaýŘFxŚ˝­ náĽAŮ‘tÓŠě8§ bţŠ .Q–d° &GŃł"Tş¬XéęjäQśzâBvÜeŐşŁ}>ü6Ĺ5m endstream endobj 54 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 55 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [724 477 763 513] /Resources 56 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 165 >> stream x=Ź=0 …÷žâ] ©ťŘq™; †µ˘T˘ ˝~ť !/ďÓóĎó†,EHQDAd|źxŕ oÜúť1íNťI×>ů CɰÂÔŞş,MI¸r÷P3^HřAq?–őc[A{?Í ®Ü2(i3»L+4dM\Ěýl!‰ZrXSHą€+ťV¬tN5"tˇäN<ÜiŐľŁ>ü|54 endstream endobj 56 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 57 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [226 166 422 195] /Resources 58 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-ŹA! E÷sеĄĹ5k€hĆLF^ß !yý$żŹ8YÁj7XđyŕŽ7čđÂ%uFé6yő.j0RńLAŤ®ž‘C/‹±‚†•ý :IŐVŘë Oľđ¸Íň”Aăäd.<đÄS*ęRÚHÚ°#«ú[V‹M¶bG¶_l?9µ*ˇ endstream endobj 58 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 59 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [225 338 421 367] /Resources 60 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-Ź;Â@ űśb.Řëý„:5E”‚D  mB ®ŹµAnƶô<ŢŮfXĚh/¨ńyp獜3/.î̻w©¤Đ—ěT,©äâtMDűÜ XV˘ĆFő ¨~·Ťž_·#|VÓŕ.Úđ¤‡TşvóÚ&kłŹú[V»leaň/Ć1k*Ź endstream endobj 60 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 61 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [162 334 201 370] /Resources 62 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 163 >> stream x=Ź1Â0 EwNń/@ÇnćÎ UPŠÔ"•\;•*/˙éŰţö†H#2'$F"|źxŕoÜúť0íF•YYŃjź@R‘ WP-®.ˡ`ĘݦfĽńCÁýXÖŹmEÄŘ{t+7H ¬Ş—iE R2ujľEhČ\4,H9pŠŇśN+9ťSŤ"jč"KőăNËűfŚöůđűÚ5 endstream endobj 62 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 63 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [226 248 422 277] /Resources 64 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-Ź10 EwNń.ĐÖNp3sÄĐ VT •(ׯ*/϶ôýĽ1˛bK°„v‚FľO|kâÍmŘ•y÷β….'§M%e§Ţ4öą 1˛°ŇŞU*'™Qü„o+-Ľ÷3|ZÓŕ.Zń˘§Tę›y­“µÚ‰Gý-‹Ź]¶°0ůă4*• endstream endobj 64 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 65 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [226 248 422 277] /Resources 66 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-Ź10 EwNń.ĐÖNp3sÄĐ VT •(ׯ*/϶ôýĽ1˛bK°„v‚FľO|kâÍmŘ•y÷β….'§M%e§Ţ4öą 1˛°ŇŞU*'™Qü„o+-Ľ÷3|ZÓŕ.Zń˘§Tę›y­“µÚ‰Gý-‹Ź]¶°0ůă4*• endstream endobj 66 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 67 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [445 244 484 280] /Resources 68 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 163 >> stream x=Ź=0 …÷žâ] iěŘq™; †µ˘T˘ ˝~ť !/ďÓóĎó†DX,`Â÷‰>!ăŤ[ż¦Ý©1É‚čµO>ăý&X!VŞş,‡R‚«ę65ă…„÷cY?¶cď§©Á•Ž ĆAĚě2­Đ5Q1÷W…$jÉa§ sU:-®tN5ŠčB‰’»î´jߌŃ?ţ=5 endstream endobj 68 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 69 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [338 163 377 199] /Resources 70 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 164 >> stream x=ʱÂ0 Dwľâ~€`ÇNÜĚťŞ|@*R‹T:đű8©Tyą§ó]ś 6f°1˘"2ľO<đ…Ś7nýÎv§˘jšäłOžIŕ"X!žtuYeWŐmjĆ ‚îGY?¶ ÂŘűÓÜŕĘÇ …šŮeZ‘BNÂťążzUđF‡Q‚FʸŇiĹJgŞˇ„Ž4őăN«îÍýçĂ÷°5 endstream endobj 70 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 71 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [611 166 807 195] /Resources 72 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 141 >> stream x-Ź11 ű{Ĺ~°űęÔ§< R‚t¤ŕűX r3^K«ń "Ż`ą‚•ŔźîxÎ/\Rg”n[ŕT˘‘řŔĹh ězY"«(”¬Ć¨No4®v<áńEŔm–§ ““ąđŔO)•Ą´‘´aGVő·¬›lĹŽl_l?DČ*ą endstream endobj 72 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 73 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [610 338 806 367] /Resources 74 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 142 >> stream x-Ź10 EwNń.ĐÖ&8!3sÄĐ VT •(ׯ*/϶ôýĽ1˛µ'tí |ź<ř ×ț۰+óîť%kűťR0•ś˛i+ҲĎMÔDÂJĘąR9©3ŠźđmĄ…ă~†RkÜE+^ô”˛ÜĚkť¬ŐN<ęoY|첅…ÉżL(*Ë endstream endobj 74 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 75 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [547 334 586 370] /Resources 76 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 163 >> stream xEŹ; Ă@ D{źb.Íęł×[§0.r“ŕ€p\äúŃ®ÁAÍ<ŤFl!@”Á &|¸ă ď"^¸–ť0íF˝jҨđ6űd; 1\˛ŻŞ[ĄSŐmjĆ‚/nGX[„ÇXě45¸ĐŃ!˛Ó”R7YŞ‹A('óWPr˘!‰Á§ěcU:-®tn5ňč]öűVî¸`Ćhź?W5 endstream endobj 76 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 77 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [611 248 807 277] /Resources 78 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 141 >> stream x-Ź1Â0 EwNń.Ř©ě¤sg†Ş¨@EJ‘J®Ź•"/϶ôýĽ1˛áÚ“ĚŃ"hÇçÁť7rq^\‡]™÷č,[*Ůrg*žzÓ$’Řç“k!eaĄ4Ş™QăDl-<éřbÜŽđaBZMC¸hĂłRŢźćµMÖf'ő·¬1ŮĘÂ_Ś??%*­ endstream endobj 78 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 79 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [611 248 807 277] /Resources 80 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 141 >> stream x-Ź1Â0 EwNń.Ř©ě¤sg†Ş¨@EJ‘J®Ź•"/϶ôýĽ1˛áÚ“ĚŃ"hÇçÁť7rq^\‡]™÷č,[*Ůrg*žzÓ$’Řç“k!eaĄ4Ş™QăDl-<éřbÜŽđaBZMC¸hĂłRŢźćµMÖf'ő·¬1ŮĘÂ_Ś??%*­ endstream endobj 80 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 81 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [830 244 869 280] /Resources 82 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 163 >> stream x=Ź;Â0D{N1Ŕx?ö:ujŠ(@AJB ®ĎÚ‘˘mćiö3»aŔ†"ś¬`Â÷‰>!ăŤ[ż¦Ý©S5ÍŠčµO>c`S¬(YŞş,‡JWŐmjĆ ‚îDz~l+"ĆŢOS+ŚšŮeZ‘BNBĹÜ_AD“‰Ă– sU:-®tN5ŠčB‰š»î´jߌŃ?ţQ57 endstream endobj 82 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 83 0 obj << /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [723 163 762 199] /Resources 84 0 R /Group << /S /Transparency /CS 86 0 R /I true /K false >> /Length 164 >> stream x=Ź1Â0 EwNń/@°c'nćÎ UPŠÔ"•\'•*/˙éŰßö†LlڍŚď|@!ăŤ[ż3¦Ý©¨šfyí“ϸVXĘU]–CÁUu›šń‚ŕ‡„űÖŹ-‚0öľš\ů¸ˇpP3»L+RČI¸3÷WŹ ˘ÉÄaA” ‘r®tZ±Ň9ŐPBGš‹úq§UűfŚţůđü 5 endstream endobj 84 0 obj << /ProcSet [ /PDF ] /ColorSpace << /Cs1 5 0 R >> >> endobj 87 0 obj << /N 3 /Alternate /DeviceRGB /Length 2612 /Filter /FlateDecode >> stream xť–wTSهϽ7˝Đ" %ôz Ň;HQ‰I€P†„&vDF)VdTŔG‡"cE ‚b× ňPĆÁQDEĺÝŚk ď­5óŢšýÇYßŮç·×Ůgď}׺Pü‚ÂtX€4ˇXîëÁ\ËÄ÷XŔáffGřDÔü˝=™™¨HĆłöî.€d»Ű,żP&sÖ˙‘"7C$ EŐ6<~&ĺ”SłĹ2˙Ęô•)2†12ˇ ˘¬"ăÄŻlö§ć+»É—&äˇYÎĽ4žŚ»PŢš%ᣌˇ\%ŕgŁ|e˝TIšĺ÷(ÓÓřśL0™_Ěç&ˇl‰2Eî‰ň”Ä9Ľr‹ů9hžx¦g䊉Ib¦×iĺčČfúńłSůb1+”ĂMáxLĎô´ Ž0€Żo–E%Ym™h‘í­ííYÖćhůżŮß~Sý=ČzűUń&ěĎžAŚžYßlě¬/˝ö$Z›łľ•U´m@ĺá¬Oď ň´Ţśó†l^’Äâ ' ‹ěělsźk.+č7űź‚oĘż†9÷™ËîűV;¦?#I3eE妧¦KDĚĚ —Ďdý÷˙ăŔ9iÍÉĂ,śźŔń…čUQč” „‰h»…Ř A1ŘvjpÔzĐN‚6p\WŔ p €G@ †ÁK0Ţi‚đ˘Aޤ™BÖZyCAP8ĹC‰’@ůĐ&¨*ŞˇCP=ô#tş]ú Đ 4ý}„Óa ض€Ů°;GÂËŕDxśŔŰáJ¸>·Âáđ,…_“@ČŃFXńDBX$!k‘"¤©Eš¤ąŤH‘q䇡aĆă‡YŚábVaÖbJ0ŐcVLć6f3ů‚ĄbŐ±¦X'¬?v 6›Ť-ÄV`Ź`[°—±Řaě;ÇŔâp~¸\2n5®·׌»€ëĂ á&ńxĽ*Ţď‚Ásđb|!ľ ߏĆż' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽŘAĽI&N“I†$R$)™´TIj"]&=&˝!“É:dGrY@^O®$ź _%’?P”(&OJEBŮN9Ją@y@yCĄR ¨nÔXŞşťZO˝D}J}/G“3—ó—ăÉ­“«‘k•ë—{%O”×—w—_.ź'_!Jţ¦ü¸QÁ@ÁSٰVˇFá´Â=…IEš˘•bbšb‰bâ5ĹQ%Ľ’’·O©@é°Ň%Ą!BÓĄyҸ´M´:ÚeÚ0G7¤űÓ“éĹôč˝ô e%e[ĺ(ĺĺĺłĘRÂ0`ř3RĄŚ“Ś»ŚŹó4ćąĎăĎŰ6Żi^˙Ľ)•ů*n*|•"•f••ŹŞLUoŐŐťŞmŞOÔ0j&jajŮjűŐ.«ŤĎ§ĎwžĎť_4˙äü‡ę°ş‰z¸újőĂę=ꓚľU—4Ć5šnšÉšĺšç4Ç´hZ µZĺZçµ^0•™îĚTf%ł‹9ˇ­®í§-Ń>¤Ý«=­c¨łXgŁNłÎ]’.[7A·\·SwBOK/X/_ŻQďˇ>Qź­ź¤żGż[ĘŔĐ Ú`‹A›Á¨ˇŠˇżažaŁác#Ş‘«Ń*ŁZŁ;Ć8c¶qŠń>ă[&°‰ťI’IŤÉMSŘÔŢT`şĎ´Ď kćh&4«5»Ç˘°ÜYY¬FÖ 9Ă<Č|Ły›ů+ =‹X‹ťÝ_,í,S-ë,Y)YXm´ę°úĂÚÄšk]c}džjăcłÎ¦Ýćµ­©-ßvżí};š]°Ý»N»Ďöö"ű&ű1=‡x‡˝÷Řtv(»„}Őëčá¸ÎńŚă'{'±ÓI§ßťYÎ)Î ÎŁ đÔ-rŃqá¸r‘.d.Ś_xpˇÔUŰ•ăZëúĚM׍çvÄmÄÝŘ=Ůý¸ű+K‘G‹Ç”§“çĎ ^—ŻW‘WŻ·’÷bďjď§>:>‰>Ť>ľvľ«}/řaýývúÝó×đçú×űO8¬ č ¤FV> 2 uĂÁÁ»‚/Ň_$\ÔBüCv…< 5 ]ús.,4¬&ěy¸Ux~xw-bEDCÄ»HŹČŇČG‹ŤKwFÉGĹEŐGME{E—EK—X,YłäFŚZŚ ¦={$vr©÷ŇÝK‡ăěâ ăî.3\–łěÚrµĺ©ËĎ®_ÁYq*ß˙‰©ĺL®ô_ąwĺד»‡ű’çĆ+çŤń]řeü‘—„˛„ŃD—Ä]‰cI®IIăOAµŕu˛_ňä©””Ł)3©Ń©Íi„´ř´ÓB%aа+]3='˝/Ă4Ł0CşĘiŐîU˘@Ń‘L(sYf»ŽţLőHŚ$›%Y łj˛ŢgGeźĘQĚćôäšänËÉóÉű~5f5wugľvţ†üÁ5îk­…Ö®\ŰąNw]ÁşáőľëŹm mHŮđËFËŤeßnŠŢÔQ Q°ľ`hłďćĆBąBQá˝-Î[lĹllíÝfł­jŰ—"^ŃőbËâŠâO%Ü’ëßY}WůÝĚö„í˝ĄöĄűwŕvwÜÝéşóX™bY^ŮĐ®ŕ]­ĺĚň˘ň·»WěľVa[q`iŹdŹ´2¨˛˝JŻjGŐ§ę¤ęŹšć˝ę{·íťÚÇŰ׿ßmÓŤĹ>ĽČ÷Pk­AmĹaÜá¬ĂĎë˘ęşżg_DíHń‘ĎG…GĄÇÂŹuŐ;Ô×7¨7”6ÂŤ’ƱăqÇoýŕőC{«éP3Łąř8!9ńâÇřďž <ŮyŠ}Şé'ýźö¶ĐZŠZˇÖÜÖ‰¶¤6i{L{ßé€ÓťÎ-?›˙|ôŚö™šłĘgKϑΜ›9źw~ňBĆ…ń‹‰‡:Wt>ş´äŇť®°®ŢË—Ż^ńąr©Ű˝űüU—«g®9];}ť}˝í†ýŤÖ»ž–_ě~iéµďm˝épłý–ă­Žľ}çú]ű/Ţöş}ĺŽ˙ť‹úî.ľ{˙^Ü=é}ŢýŃ©^?Ěz8ýhýcěă˘' O*žŞ?­ýŐř×f©˝ôě ×`Ďłgʆ¸C/˙•ůŻOĂĎ©Ď+F´FęG­GĎŚůŚÝz±ôĹđËŚ—Óă…ż)ţ¶÷•Ń«ź~wű˝gbÉÄđkŃë™?Jިľ9úÖömçdčäÓwi獵ŠŢ«ľ?öýˇűcôÇ‘éěOřO•źŤ?w| üňx&mfćß÷„óű endstream endobj 5 0 obj [ /ICCBased 87 0 R ] endobj 88 0 obj << /N 3 /Alternate /DeviceRGB /Length 1072 /Filter /FlateDecode >> stream x…U[hUţ7svWČ:b›šJ:xk(I٤˘ µŃ˝$›măvŮ\´AÍěŮťi&;ăĚlzˇřPAŁ‚O‚÷·Bź„x©¶/¶ŇB‰ ˘ŕCëŤBĄ/ÖďĚěÎî†`gŮ3ßü˙ľ˙üßÎ QôJѲŚ.…h©ęÚ…LRyţŘĽ]§.z€ş©—ş‹Şc%ňů)Â%bĹ˝óşó…„ĺúŕöţÎč-OÝ%î¨Dˇ{`7KŽş|’(üšjŮ.Q”Á>rµ~ ř~ Î \ńqIŕc.bf )ÄĽ,«Zţč»Ŕ möJö×€ĚÍđ*·uUZämł¬ÜsřĂ]Üm‘˙—Śjö®=cÎâôÜűQű+ĄbZŕG€Ď©Ĺńéľ¶¬ĎĺřËM€#ęÚU[śMď+ŰłŔŕéŇ´ÚdŻśÖfžý>ŘWÍ#bîNŕo« ąŁŔ‚çŐIAWzHŠh<+úÝÜo›őH%ž>®»Ů`ä’Ţq–§…Ýă9­ĄÄ:‘Kúęxń°čS/đ5ndD^Á˙»ĺćyY¬jäD.đ°aîxő‚‡Ĺ\mfväeó.ęĎe/—ő‰l#ţ}Ížv1÷Šex{kc·ěZAÔŽ\áyuVhÎđXŃĎ4p‰ćBEâdŇF•Ş´I (CIÜ-˛á)“N,^ ÇS3f°#&ďůýřf„Boć ĚÔ‘!Ő÷ Ő0_Ł?Á§L ĄđT­BŰóř+¸Ůŕ1Y‹łřdSěa٤°§Ů3lŚĄaeî|[b=7‘Ĺçy ą7‡Š/ˇ2—ŠE„INŔСĹJo­ß×č¬ý˘®^}ăÖĺ3_îjĹ®±Ő®Ç.źiÓL×bŃ©ÚŃ»iţ-|#Ľ†q=Ľp(áźÂř­C­V—¶Ş.ú%TO &ĂëÄęŐQo«n°ŁťĎlĺkô±Éh–«+˝ľ BţjîNŽÎ´âă?Ć˙ŠŻĹ?˙Cz[úTş }&}.}GŠtQş$}-}#ť—ľâ·ďążw‚ž{u›¨BěÇf˝íŠbĘIy·ü°ś–÷ČŹĘSA”"÷ČCň¤ĽžÝAwZ»YéĐA§cЬ©ÖöąÄÉĐ&hş}Ö[;ÎÇ,V¬Ó pÚP_ěł*ťBlű9kTÄúŘËnŮŐ#bŻÜţyhöŁ©Dg <2IG¤DöEF#C‘Ă7Ďwd/|ŁńÖrůI|[R¦uĘÖ+š« ÇăO* |긒­Şű”˘a(žËQlîp{™—ö“řNŠyD· Ţ÷/´ójËć>KtčońŢkŮćkD碞Ç[¶~ĽwĽG´ú„Zł—}> …ľ'rʆ˝çP,‰w×ĎőúmĽĂ˘omľYŻ˙űa˝ľůř7.˙˙%x endstream endobj 86 0 obj [ /ICCBased 88 0 R ] endobj 2 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 1 0 R ] >> endobj 89 0 obj << /Type /Catalog /Pages 2 0 R /Version /1.4 >> endobj 8 0 obj << /Type /Font /Subtype /TrueType /BaseFont /AAAAAB+ArialMT /FontDescriptor 90 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 165 /Widths [ 278 0 0 0 0 0 0 0 333 333 0 0 278 0 0 278 556 0 0 0 0 0 0 0 0 0 278 0 0 584 0 0 0 0 0 722 722 667 611 0 0 0 0 0 0 0 0 0 0 0 0 667 611 0 0 0 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 556 556 222 0 500 222 833 556 556 556 0 333 500 278 556 0 722 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350 ] >> endobj 90 0 obj << /Type /FontDescriptor /FontName /AAAAAB+ArialMT /Flags 32 /FontBBox [-665 -325 2000 1006] /ItalicAngle 0 /Ascent 905 /Descent -212 /CapHeight 716 /StemV 0 /Leading 33 /XHeight 519 /AvgWidth 441 /MaxWidth 2000 /FontFile2 91 0 R >> endobj 91 0 obj << /Length1 20800 /Length 14674 /Filter /FlateDecode >> stream xµ|y`TEşoUťÓ§÷îÓKzOş“NwB:H!É@";Á ›˛Ę@QÔp•Ÿ1Ž»3‚Ë(¸ MądÔqfTî¸Ě••QŃ1Âő"*’î÷«ęqfî}ďźwNŞę«:uęT}[}őUuVŻZł€XH‘6oŮśD\ţÓ„ĐüykWG2y«ŹeĆŐ+®Y–É»–˘űňšĄë®Îä-„ ™±pÁśů™<9ŹtčBdň´iţÂe«ŻĎäýMHď[ş|^ßó ůË—Íąľďűä/ČG®ťłlA¦ţÔĎŻXŢş:“źŇ‰téŠU úęÓBĚ˙žyvQLÇČ0ÂD#*)!3 ‘Ę٢„?×±{îýęÎłłíU_‚QüÄGExE^±őÜ®ŢkTb° k$Ľ>żęG¦&‘1*9·ëÜ Ş(É<ę‹cűÉ ©pOÜ>zP@Ž#0i@G";Ľ_*˛;F„µ.)şÇ™Uj5PŠ ĹG/GŘ…pA&łĄ §»%Úau”Ž2±4;Eś$Ěľd=™'¬gŹÍQşmÔö7˛ á‚Äţ†űŻěŻävśăq5Â6„CGN!(ě8îqŔ> vö>)A¨FŤ° áÂ)={±ĘţÂ9FÄ®F`ě/Uög ëĎíě cěXş›˝ŐQQYş_‰’> ëĽÁ>Ŕé)íběřn8*JŁ^’ňČHR&ĺuć»$_GŐ˘pűhO$Ţ>j{›$zň6ľü6‰ LAhAX zĐ»¤ a+Âv„$¸ ±ŠaŻ#Ľ‰đ.„ !LA0°ŁřL;Ňĺa`ż%^`ü0űťHßd݉ô ö‘ţižżÎ^ëČ “Qf<'xGEŞ"-Ásűőž|g8=ĘÁaÄ%Ő“f#Ü °C,Żc~؉F^"ŻC†Ă¬|&ҧɢ-kń1`ŔŹâĂ/„h[d[śińF–Gń»ďÄŁřmwâQü† €x_şŹâóâQ|Öl@<ŠOžQ{ěĹü‚pĹä%42Ęή–®–®–®#2»Žßä;™÷ńŃŽ˘"`ě-1 (Üv€¶¤mÓhŰ´mm»™¶m mU´í*Ú– m!Ú–CŰ4ÚöT´Q­óGŮJÍGŰ^§m/жVÚ§m1Ú–OŰ"´Bëbą—AęÔŠdĎ(.t,wĎĄ#ˇ}ě,ÍĎçB'B|!-r*Eň2•ý9<ÍŰSTťÉ_2Ľtů¨ńěĽř Čđ ůA^˝‚F^AsvÄŐłşN!¤ÔÎĂ8î±q B5Âl„[N!(˘;§ĐF–#ć]Ü%:V‚¸a2ϱWpçáÎeąZ¶RęxéžµçĐÉ9éVA<¨e§Ăŕč˘Ö}ßXżýĆJŚŁŚěnvÉ!¶öĄ÷t|—î˘uÄ_ ŹĘ˘’\G+IśĆ#­"?„„ ĽĽś„ŘsHK;B3ńš˝#^>@mü­}áďB'Âź…şŔ“ˇ—ŠtÉ´#üJžŰ~;t{ř÷%]”ŚwQ$"˘ęţа𠯋Şđŕ‘ŽđÍ<Ůľ)4.Ľ$$,Č<¸Ş9ÍžźŹöjBsĂZ+ÚÜ®]®ĘÔÂßŮ„.$2`:; $>Í ÖWtŃ…Z±ţ}~˛~¨ľT_¬ĎŐ‡őŮú ŢmpTÍ`1 b Ě@ î®ôq-Ág=·"&? M‰,`†r50j`dIş¤:V7}4­KvĎ#us#ÉłÓŁ]Ô4uVRM“Î:R7ctrX˘®Kźž–¬HÔ%őS®lŘMéÝŤ(M˛-]”Ěhč˘i^´1tŽiŘO(ulĽ+ČÓÂŤw56źgmµŻÚ9ŇQ9¶ć_D-˘°Ą&ńĂĺűLřŮÉę¦7$źÍnL–r ťÝX—üéôHSĂ~ú=][łźţOöK#éWµÓxą4˛¦±±®‹ÎőH„ţęc ž3ŻG"†śL˝G2őbxőňy‚zF#‰‰z1ŁQÔ“)Ż·»5ż¶fw>"ÔńFH«¨ÓęŤ\\çőęĎާŤĽ.ęĽîiău’#E3ˇŞä B !Q%D˘ŠčůnQĄ¤ŻĘíŞÜ.ľ$ez#ęđÍXŹ÷×±Gť‹ůż F'tĎĆyMµ ˘µ-ŃÚ-É;Ö.ô%ŰćF"»ç5ň‘¤o™;o!Oç,H6FÔ$çEk"»G÷ţáq<"Zł›4ŐÎhŘݤ-¨éˇŤ¨ŤÎ©iÜ3nJyĹŹľuű…o•OůßšÂ+çß'Ţű‡oUđÇăř·*ř·*ř·ĆiăÄ·ŕń) » dtăĐŹ§{Ů~m ć6Žö¨+F ć‘ë»9xÖĘbN4&-ŃŃI+ç룎⏠Sü‘ ĹöľGľ›GäĐ}ŹT;˘ŁIbőšÖ5ÄW»¨&ó׊ E«×pRdâ/ű—ŞÔ&µ95ܶ®KMŻKVOťŐ°[ŻGiKM#ʆ÷—™Íµ]éîLá%(Î+JŇ…ŠĽ¬Š—Ť}˙™DźP ě쇡ńŇŞĺĐŐ¤µQJćÔÍ`P3f MłŔ–â“Dk#ŘJ´µż5>“L Á°[űĂę5}P.V÷Ą˘jk‚$ZűQŇß\‚#KDW«PmşÄŹĐ=Cürś`ý“ţá$OS‹Ň'ůsž˛Ďˇčşú!;Č ty"/ÓÓxkŮO: 7jČĎČzrŮŚimJn'ÓpëP~ő§;±2yćăä0ę^An&‡úŇź‘[ČFé-Ľµ‘XIE¦ĺä.zyz i"Ę·’ r9ą–¬ mé†ôÝé{ÓO‘_ýŇďŇ˝ÄLdîĂé/u˙™ţ 7î'“é˝Ć˝DĂWÚPóçdyDj–iúšô9ô —\‡>Čd"9L»Y­/ źR]/ŤA+O¦“éWQ+DšÉBň9@‡Đq,W×”ž>L<řĆőhőaŇAöáî"ż"ǨEw:ýTú4ń“brĆÓIţ@»ĄTď†T5đ¦–Jy§üGýŚú*˛ŚÜEž#ßP'F§Ň+éBşžn¦?ˇÓĂô(=ÉF±l ;%-”VJż’Găž.·Ę·ę6éîPN¦Rݦţ#őMş4˝‰L?l@ďď'ŹadűÉňîÉß¨Žš© w„ćŇzz#î›é]ô şî¤ťřĘQú7ú¦¤Żé÷ 3-SXĆ7˘l,ĚűŘĎŘÜGŮě;É+ĺI iT%5JËŃ«ÍŇVÜ{ĄżĘůśžKuč¶évčžÓ˝¬;­Xô˙†9ţÍóOöő~"©-©R©Îô_IhŮK°*ô~îĹ ÷ŕ¸]ä-jî´Ž¤—3łébş’^LŢFˇż}˙%=,ý‰žBź­,$ú| ÂFłÉ¸Żb ŘJc÷˛Nö.;'é%łd—˛¤"iśÔ,-VK뤤¤ô¦ôľô7é¬twZ6Éa9OŽË yś<[^#?&*ŞkŇ˝ˇűX1)Ë”MJ—ň_°jFę§č§ę›ő÷č÷éß6´€;_!{É‹ŕŔ =.mjĄ˝änV&ű±„ůřy6™/MdŕT¶na7ŃN–Ż»^ÁFĐIä´®_cŰŘY6BšHëčt˛ Î4¨¸ĺgUÉŻů Ćö´|˝bˇ7łSŠ…tŔFŞ„ŤôiśŢ Ǥ©^~śüY6Q/íaĎHSŔż’GęH®ô3ňKi%˝‰ěeµ„ľ7Ü >žDź…^AKé·Rfđ$pQ…ôą•,a˙Iz Ç[Čtľ| ą›”ŃőäSň4¤b€îZĄHɢżg‹äv條„É;1şJšO%ť›ÜF›ĄG”Sě=˛†‘MäéyôţűĄ4Q>­›FBn"›ČĘô˛N× ˙‘^C$:“ÄäăĐnëĄR9é-Đ*MĐiű Ý FIQâç\ľ¨‡†x÷CĐ28hdü h±?Neë"×člZžš7RÓȬôÓäáô5äÚô˝d ôÁćôz´¸|Lî!;čĆÔŤd–’ďA¶/׍eGtcÓY;{ŹMgüľŔvŚúČç¸ ĘŚÔ˝DÚĺ?‘é¤:}gúpw!4ěĂd. Öĺ—řÂx©›”Ą&±Ýé±Ň Ś÷C25ýL:LMdaz)™L’_čudŽ>'é1ŢÉ6-˝ZZZ<Ü,hŔÖčźŰµ1ő3FiŐ#/­1ĽrXĹň˛ŇÁJ.Xś(PXŹĺGór#áśěP0ŕ÷y=Yn—ÓˇÚmV‹Ůd4čť,1JŠkŁc["ÉxKRŽGÇŹČóŃ9(sQAK2‚˘±?®“Śđ÷ćŕŃŹjj¨yő?ÔÔ25µ 5©©"U‹#µŃHňpM4ŇEgMm|WM´1’ěđDo°pn.^ÔúÖD’´%R›»va{mKÍŔbşŰlłŔ4°ě6™š%˝Ń»©w$óÖßÍÁŠ!&ŃšÚ¤?ŠWŃŚ«ť3?9ejCmM07·q`q’Ž™ť›$ÜRJ*dŚřLR“Ô‹ĎDÁĆI’;"»‹»ŰďěRÉÜ–„e~tţś¦†¤4mÔ& |·&é˝á„ď‡,‡M¶ůâ§A©˝Ö·(Â+··oŽ$·Om¸čÝ`.oˇ±mŕ]ŰŇ>źľ”Şă¶x’mllHŇŤř$ ËUf|«7Ö˛8’4FGG¶/niíI2m]nG  íO'ÚHűچhn˛:mśSÚí&íÓÖíńk˙Źź ,Ţ­:2Ýmł÷ëĹŔ =óL@˘:‡ę¦]Ŕ,ĺ}Ś^K0™AO˘Ó0-FÚç p5RĽ•śŠ,JÇ´´«Ăy9†H“şŤ´MŔŃž/~\2§ŻD‰©_ţóÉVKŇ9ýp2‘HqŃŹMŃÇ‘"?d`ńÚ.Ť®P±~ć‹2¸ťÓ8ĽčĎÍ徣K#s‘I¶MmČä#dn°h%°­Y ŇÝ˙$«ž?iëráő–(8ą“ŻgIVŇżđgW=®Ú…Ă“Ôóż<^y^7=ZÓ8RŰŢŇǵu3~”Ë<çŢđ¬JşĆ4HA†2± $žf,äţ*0—,I9†?E0őü.˝\)JhdlRmź‰Mąą}2ó{©+}šż%’^ëFrx˘ŻŁ™n'Gü(˙ŁîYÚĄşP9 –}{»éGĎŔj™^^Ö—€ă±ĐĎŤŚI’zHf Xr ăˇ1Ô€2<™)ĹŤÁľěŹ*ű^jÄĹąs`ńXčĚöö±ŃČŘö–ö9]é¶ąŃmßĎ^f/·Ż¨…¶Ë0NWúŔÁäŘ;±…t8đѻŁtËÔÝÝ2}VĂ~¸8"[f4t0ĘĆ´Śnädacf4ôˇE„ł>hp źăŮłd˝•äYž—[I=Ňýňód•î·äj„Çt3ÉňGdŇ&¤PgÂ&¬ô¦ ‹P‡w\HG#l¦ż%[đl Ň[ŘĽ ˇ†§řÖF<«Fý|äoEűÜA“ËcV#čgd‚]…rÇXóS¦D‹ÁĆç^ĂĄĂPţůŇ‹˘Ě–Ić©‘°ęŕ{%˙ú˛Â^˙ź.;vgÄI\°˛°’đ˘˘OŘ›AXś|żîbô5PBá˙Ç•/ÍBęacś !zޞÖ+=.KňUş=ŠIßjk¬2yL_›·Y´.˛~d/±ż ţƱĂy»k‰ëˬ—=3ĽQCŕ¶Ŕłđ€ˇAn`Ëuä:bŕ-#ç#R÷yMGľ'ą›Óe}j*kŃ˝L\Ş™ ěŘ‚pę ŞÚEËöm6R͡ßf»ŠHŞ‘$éyÇĎďô%Գͽg{Ôł=¤şŞşjđ ÚLăĚQ^1´˘LŃăÎR)ýđţ?LśupĂş‚KŁ šHM=HżĄ¶/Źő~´±ý—~• §"?úţÍRČ Uf4©”8ŤĽ¦mEÚ‰=˘«lĐ ťŞĘę|Űi· ŕD§Ő*€/4»ÉÄęí¶°ŤŮžwöő‘ݶ˙ˇź®(q”Äq—y`館wM$ň.-¸aĂÁYʤ¦ŇăôŻ÷?Đ>ëŹß÷ű2őUĘ€^>›ú€ŢŠ5މLÚkRźSşč-NĄ*ƨ‰V6€¤*˘ Óź ű}9¬Ńí Ŕvóă[gšĎśP{ŞÔ*RÍcµGííˇgĺŕAeCʲ܊ľ`čĐŠ}‡§\QZ9T:|xĺń‰ţ9Wr IĘ*A‰LßO¤ôîJÖ•ţ@‹¸+”(“¶I»°ő´–PlfR]"&é$a'µť{!J{nŔ׫Ô3=j†R›u—$šoR_ĺK$˛hĄ;·¦üş/ΡFęÓźĘ]7¸!›Öďf\Íh¦@ެsçX­^cWú¤Ŕ<4?G˝ŃA,śÄc± ¶đ2R´FtĂ­î<(¸[ůç–Π%Ą-} ŕKÍo6r•—Őbá1/»Đämv*żSt°ůßa¦xśv8ŠçĘĘf¶ĹĽĹţ{›Î¨7űX­ëň¬ ţ1Á®¦¬&˙´ŕýó<×Ҭ%ţ–ŕ:vť˛Ö|}łňţő÷ľcě]ĺ]óźí o5jąŃňAFJŚŞ‘·†­ÓfCiĆ6#[s~{‡‹¤˘yečC§Í+á¶Ć/ŠĐŘčRťCËJ='XO‰ćÄ]ާ¬t¨CŤGóôJý’·¶ŻíX=zń[Źż˝î'űw®_żsçÍë'4ł·¨L/}~öžTúX*•zĺ…‡^¤?O=xę4|‹ż\´‰Ón?X`üF\ć‡iTodJ•,UQE6±ŞRM—ąÇ }\ąݬop^¬ÄßŕA.𣄰˙đáĂRăáĂçź9|mŻ˘ŹËĂeE´=N+Đ)TÖĂ},ŃÄô1YVb݆%c‡t$`¤~Ăł|‰Ię őR2±§y%řľG­ߪ¬tđOŃÜ!PJCrĺáç‡IżăAşjGďŁ;0 ruúSÝZđ}6ykď<¶8›QÎz‚8ëÍćP„”Zça¶:»ŤÜ–˝•<˘{Nú…użÔiý­ő(9‘ýßŮ›3Ű‘ť-)…Ž˘P$<Î:Ó}EÖL˙BÝ’ěťw8‘¶=ÚAźb;ďŘř,PÝj@ć"ÖQX‰ovk +U;ˇrĐ•c‘‚9˛QŤŰ'x„R{ă5Xxo ţśyM|ÄgÍ{& &öśÉpĂËG›H4s^€'ző*r4/ź )wć—•Ę^}ÄWX–ŰÉYAî|ůŇÔ+÷¤ţôč.:ćĺżĐâ‡Ę^ţéÎŹš–}˛éÉż16řÔ÷ż¦×ţńcHčń7nż÷‰Ô©źĽ”ú¬ý ç‚Ç ůgÁShî>ÖJ"a:ĆĘÎíŕPsěÄ€.iX˛áęÔhâňkô‰’®ô-‹‹ť1ÎV#”s‹¨v?+D_BĘ»Ňç:…ĐwĄż!…bÖLBt›sFęŮŚ»łąŞ·ŞnJăađ 1ë´ˇRPŹ=vydĹď řb6YLV“¤dyÜ—GR‚’7—:m|†P.őąđÁźE¸6Đć2Gn©şÜ™ĺf6Ťĺ–­:tH9t|4÷1úÝsłnn\Ý:醟ŢÚM+ň‹Áµ\:é…Ô›şYŮ—ĎMyő™TjçśŇ†®ýěéOľ)â§ž€öäW3ą_ËRt9^O$™#ŇdĚ1žsG¶ę,×Ď&DL+3¬˛ń˙gyg§űqfqe†Öš«&öV >:s"qiÎĘ’*•ăŁÎ‚řđ„śţ1)qţé6ÝRŐϧ¬/p)‚(É1#ąKK1ÜŁ§†!ü,ÝÉXŔü˙ĐoÍśŃđ}Bú§î›8É9˙÷˝ż˙' d@ot˝ůűľCz˙üÇ,Ů;…÷{ř ˝WŁ×MţŮIJ´‚yŇ<ąUZ-˱‚!RehŚt™ţňěÚpMţŘ‚éRŁľ)űŠÂŰ]¶hWú+aä÷0Ő3%ń~  @ĺłťVp>*gTΨśPů¬6–W*´ĆóYľTjÇţL¬¶dVdf´>¶ÔĽŘşÄvµ{oťůë ö›Ô5ů­±MR»ůvk»ý.ucţ­±{­ŘČĘé›üćĆťÁxŔ@ă„ 8ĺŇÁq8ş±\Ľ=Č‚1Źu`NAŚĆtD g]Î@cNŽGóIzşˇ/i†ŢöV–ôdî 60–ołšuą÷ ś7đÝ(4–ź‡2?80€Yý=č×\h7'/Qi„NÁ"xÝJXIÍ5’=ž`Ś“t@WúóN›ŤŐ8ŁYů{ĄŤ;»Ň_G€>XľŐ켎sW!ţÁó2¬Ý<ń¸ł ń‚ŠT{›'xt†Ź “OH`ăŕAÓé… ó©«"‡AMf$<ż R>TL©}z4ËíőČ^|Y &ŘüxÓ‹ÖŮż»iůłÓ§4ŤH-ťşčš›żşďÉď6éŘ_Ř™|Ľr}ݎí†Mß˙ü·©˙~ţI˝ö®+F·ÖÔ^őÎIT<ą`ůŻç/zs펻7\9ą¬lIá˝k×i]ý—ŻAŻ/=ülVËÂ!Tpš»XëžLeěyż¨D(+ux/•Oaf®{‰AŘNś39˛ @˙&đŕ|ż|Ą„yDx‹†}_¬TaVBžN4 –eF§Š)ZąRŮr{*¨łľđÂą˙ć3Ă„ôI9$Ź„Ç±‚ ÔŠŤVc‘ß(`-*Ş´ÍŞ/ş¬¨ŮÚ\´Řş¨¨eP»uÓ€G<ŹvZł ű'_ě>®žö?[¸Ď˙Rá«ţ#…ĚzżĐPăˇ9ś3śiťŕ+°®`ŕ!|ăľžçĂް/Q\T^)W_&Ź/žihL\mX”XkŮlů˝ĺ;ëw GEąŤĘjI~ą·4×í›=`ů6 Tb«¶ÝcŰfKŰtŰl»l§l’MŘśX|Ţż"Ŕ´ĄŞJ˝ (b…›–6[Hňv±g÷ůîw‡BzŕôŚŕý µ¦Ňd0GťC1—Ĺrˇ ľčW!_hf^š/s˘ŕÁ X8#L”ü…ÓO©ĎB>C­ü.vĄf+ĐH\ŤGââ»âşJĚB6 ZŢÝÇĺ'>—iÖ”•Ý•l{%­ôňľŤâ-zcľĽ’üCĘ……•j…)6Î!а«ďŹs#+őŠŤW†˛2xX˙|›€ąu¦'ˇBp¸”őô«äDUoâ㏹&9‘¨îé=!ă¦:ެěY™Q+•BĄpˇăĺt%˛2ĆIx¸‡`E_0‚čá˨,·ÇŤKŠŢ+†1¨$UÍßżx×Áq­ă‡,9v -«ÝrËşě¤ďÚŁ·oyvŠjôć yçľşĽ©t٢…OÄło­űÜĆI&ąmÖ@~ĚtíŔKWúVŢQ§Í™pÉő§żßxé0ú~aH-śX2ľĺĘÉ—^ŽŢŽCţřjĄM{”ę,ö|Ý]­NWN†Y8ś* Ť­o +Ă]UžŞŔĺžË͆fk˝ŮsU`±a©uˇýZϵîđ{–cŢcţżąľđ~á˙(űx8öGt%ö÷ ]µ]Ó]nź˘»Zw,űkůśjQłl˛ÂH0¤č©)+d3űňŹš©jÖĚ-ć6łś±®Ě‚GÍ®2sĹȉŕ´ŕ!™€ăBÔy‰VÂéi^MeD0‘…9U&Ĺë¦ĐĎŰi’ž¦rVc׋ătJ0-€óZ6g/*X…‚%;9«Paź˘Ć·¨ŞÔ‹Ş. ü„ŘÍ?Aý9ă*.žľW¬Şš¨ö‚{ š9;đ ¬Â®¤9§@'Ż"+sŁŽ2ôpËR 6Ô0vX…|¦sŐîą»Vj©Ż~up +Ż˙ÉÚç±fíóş˝_ß3ůž×[S§Rďţś>p¨ţŽĂo}í0´ë”ôI©ú*@gő­DËm·Ř©ÝL5ěHŻŔZDv†Ěz_HĆÎe–ŢŔGŻŁ×CńĆʱŕđĂoż&&PőŐćR°&ŐĆ-4ăăťîšîmqµxeŹJŹXźRź X Vżi1[$-Ö­±¬°¶Yź¶ě5î3íµX<–M–ŹdË›m_nżĹ.Ů)TڶnVSH şµ ˙ăä4Ś.»ÝŚ ˘żŹ!t=ßfŕȶĺ1ľ|s"LáŁTă•j‚:ăM‚&—…˛ňŹčiX_­gzݤ7ńJzˇ^őĺŻöÍ JFř›WőąqD‰ű/{VťIô¬c‡°;*KÔćřł*čÖĄd.±*˝0rĘIU»łOýňXę›UźÝţÂ_»ü·ĚÚňěS·-ľ›nôľx„fSÓó”mŘőxpÉŇWŢz÷ĺăsĚXĐěCH¤ű´§LL¶Ć¬ĺÖ«n{Hč 6Ă4Í==t ›Ż[`śçn u‡ßÖ˝ăzß˙±ëc÷)ďßý Éó„É׺—]ý%,ßz‰g8b­cµÖ±îËBWfZݱ~¬|ę9GĎŘTš%ŮĚX¦Á‘”Ěľ2Jb{LUŹ:¨ęĐ-Ž6D“óDF@N>;¸Ř9¸’u(śB`QúŞăÇ8ň_ )đ­6šSDZڙHD˙ˇ>­—9‰&ë%}Ž`9ˇ§őđp†dÓ’^Ě>zNů”‹$­yĺÄž ŇĹĺK¸‡Ş`4÷Ŕ·†đś­l† áşĘ8C0Č 7#gҰŻŢňΚĹoßÚň@ÉžŢČókÖţbÇŤ×?ľé±;żr•Ú§Žb¶sc™óÍ×ýÚ±7_ĺ4«ÍśefÓ5o„˛X˝Ô¬k6Ö›HKtËŤ ̆,> ŠaЦq(;Äăç{şsîły°s¸ph”sb`ThŞ>–Đç˛ŔśĐőĘőYgŮYźŠĂ%v«×;ĹÓâYcÖ!űVu»ĘTU†Lzrdplż6ë†4ďp#Ňű]pŻfŬ+Ś#_Š®ř\@·f,(*OZ©5FnO,^ÎSmźfĂ4ě)SóőZ~Qy?Ą"Q Ą2âň§÷đˇqJ]¬›{OLRaŤžéD® ał&NT÷ĹMďĘŞ>O ÷݉)”®ä«}!b*)+%·>×ĂĄ‹ćňőiž"]u řËýźĄNQ÷_ŢÁů‹ó'MçÝŮ{ŚMµ ›yűúťt¦÷ÉN†˛·ĐÂÔ©ďÔČ® éý›Ć,|ZĶaµäĄV-Çm¤v‰_óŻđ?jů™u§Ő°Z“ţnżěçř( „Ëł VÉb™hK¸]2N´›¶ą©;íŇdoLĆ®ţ˝PK‰‡•óTK„Âĺ[ ők\LüšbBÜÂ~-ökR,,)!8\ý7ç|ĽĎm4|"<~(9÷˘0ĂžôůŇ$—śĹŢ6ŽEöy 2ÓL"·%ěZ¬zšąq[ĹÝ=p ż[u(F˝b€…¤ťAâPěAśOHm€;r˛ŞĚR6iLIPkŔtVVYVÔѱm›+pëÚË›‚ĂJ§Ő9"=rçĘ%ĺcŻpţÜ4¶eîťç݆DŚNM•>‡Dä"ş\k1›uîbsĚ}ąąÖ­łýŮĹ渻8Zięž`ëž©o0/4ź3}ťe»$Z\02:˛ŕň‚­ĹŰ‹őCs‡¨.k›[;`Fôórç h)n+>Vp2÷Ë詇ףdu±Ýť…!—^Ě$jË >Ź´‘nrK‹.v“VŞ …ě¦ÚĽĹäÉ*‹•™b>ßQ/U˝š·ĹŰć•‹±8gőĹ«ăjMX”B­y…Zó‚ŁY=J?Ϩ5^ ÖfżZp^›Ŕ™Ţ»ÚNc$/śČ~Äţˇ=m—ĂöjűdLtBběĐapłçńÖě!Na»ĐmĽ°?QĽ:—«·Ä¤>Ł“«7¸ź˙AĂőž8Ë}áśŢfD'2{pŹ­ôrWŽ0 5ÜEĆ 8¤Ě!Vsq×EĘîę]ćŇ1«oÚâłŃµÉ?źľö?î:xĂÓ ţĽýß?řé›Öďxá†ëw4¦ĆJçĎŞHŢA«ŢŇ;j;żřŰ#×?'ýG÷ˇ7_yíľŽŰŚŤîëqÓ9űáFîŢ“ĺ-—ř˛E×1yNč°Ę˘h¸×_î58,·¤ŁÄŇéÝpXĹŚZŮĐň´‘v©fő(0¸Ő EěćW÷š#Î(l;c€×CéŮ IŚ)á˙–/?Á1'ňg÷qÜ'y¸,zˇ–'=§=l…g»'éI{dsÇ„Ľj*úpă!pÎqěöpťSšWHiƬ4đOąOBĎiÂ$L%ă'“˛ĆŚV—°z¨âKŠ «‰Ś9Č]Ý|žÂ4…{F:mŠMł)– µ —„{ë6D3Ň˛Ś•ĺą#궡’ĺŘÜys÷Ú_Öu®Y2ĺ®*„_ÝŰüÔĎzgłÇ7ß8ýî›z_‚LnˇđHx kW‡ňL6n5n7&ŤÝĆŤ§Ťzb WŰŚŰúŠŽÓFS^{śrb’Q‘n¦DŃÁ®čc:"o“·ËIą[>.+Ýňi™9"EN–3¶2«Ї7YŕM6ńŻĘBłáYFłȬŃś×L‡ň$Ă?bo°ÇŐXuĆŮÎý|’Xµ2!\îŔĘ–ÎÎNůďGŽ|ź%Çż?Ćůc–ľĹÍlŽäk@ĚIĘLe–Q˛[˙[wV‘ŚN]…Ż%¸Xšú0U¦,{R»)őŇu&ćT"®Ür!{śĺ¨uş©Ţ&äŠí6”(˛¬“• ă8YSšL×IkLǤŹýÓ Ť*q}ĚP© 3V['[ĺFĄAßhĽI^§{ŘřšňGů]ĺ„ň™ţĺ;C–ÓdŇI’ĚěD Č †^qëőŠ—žÎäÖéL&F6P _§č ŕLb‚ßÄ®uŔ9ĽyŘ„´kąa‹Ą®>°˝9FX k"B«q*ŠŮSÚ`Áă0¸[, ÁB<-Ěfśîáüí·X˙š;îę‹47˝&b“ľ©•g…oJ°6w®đMN8ĄřÝ3¤ľ„ €^5TŞ$÷ąů¬upŻo“<ęŽrđüĘFЇ%4“±8»ŇhČήÁ>čČ®DňvGD$»s+Ĺ´× Ż™®„[śUVŇÝą• bw‡‡'t¨Ľ:ODÎ"’ÝćĚˉFQsľ/SŰŻąÝU"Â[g;|üĺ/v3Őiscf•źŔB@Č%ߌR=8‘>űYj1=ôAęń[tΤÉÔÚŢů,|CęJΗ·"Ş˛řŃ>ťDpP÷žŠaĺ"-’I Τy1‘j1¨U».ŚcźęäÉN뤰n…®M—ÖáW.|5ŁČxK g·–…|ˇÝXN±‹µ_É‚Â\:Ţ·o±śˇuĆîŔ¶0:úÝgé´0ńNźŚ’IňŹe¤Z«C)Mžă×X·vęśËÇŽąB‰Ă6Ňßî'Vç&HT€Hý§6Ńl-ŹÉ'äĆżz?ŽčŢŃťŤ0Ż!5ú‚Ł$EsBJź:őT‰üŞéhŚnŤmʱװŶ:¨CćĂsřÄŞ„ĎfÎÖ7—q,@Nj^®†Ś3µ*±pDáYfWŻRú¬uÚ¬Y|±­AÍ/4Í!˙ĄćŕÍĹl L”¦2“P^ Ąůڇ+Ř…öđëȲhŚ%˝í„…±­8z™ż“ˇĆĹň'ĽUÄÓ7Óśď·ĎhnŢ0ę’y–řóc]ôú=ąś,ě”Ŕ^ȉ ; (ůÁĄ…Lď¤Ú5źŔÁŤD¨X!ÄWn‹÷OH·+î¶8‚ÔiÍęźúLtĐ7K8˝°4ú¦%a/^a[…UaVÜF}V…YLQćŰüCÁg$¸_O[ĆéşéĆąşąF™ĎMüM—Zˇ$™­r±ń_óÔíżů3őÜř÷;>LőěďŘĽ©cĎĆÍ8\^p÷ÚÔ_{˙ýßhµľůĆ›˙ń›7^G‡6§Éą  “äĐąÚÝu z©Z§ĘŐ‘d„…#,ŃěҬŇěŃŮ+"[#†áŢáÁ Ţ ÁFĂ•–&oSp±a‰e‘şĚ»$ŘyËýľďýŔ[9'Ü'rŽGŇOTN¨‰¬!ňpu¬uęťé‡žL}ÇĺĂ{ż—ž:üęďĽńúź¸.Ý_Çk ˇü^Q⢪LŁrą<?wąZ^-+F‡Áh0Z]Ł•HjČ'&cáVśŇČ‹¸¨‹ĺ9ţçµŇ«â[ÍqŃZI,ĎgŔ>“âLßrI<ź1''9ÇőűbÇCmUaĘj>łŠď~sěđC/Â;DÔßo¶Ý„#X¤y?˝™}2> śśsl|bä˘ę+Ż9zô«Ü9rüń•ă‡?S0®şeUďŰ Őđ±îI^íF9Ďť7Ü8ÁX“?3oAŢzăÝĆŰňźv=Wü˛d5z>ď şâw˝ş «gL-Ą&_“ˇÉŘdj27Y𬋠‹Ť‹M‹Í‹-‹­ťńÎ{A<ż ŔĐüY¦FóüřüÂŐŃŐůmů?5ýĚroáĹ÷zĘ´ÓňdÁSřż‰{°)±yňúh?ß:K˘D:Ȇ=«9s*g b“Äłdó%ŮîVĎósä‡ýŐţÉţŮţ]ţ#~Ĺîű—ű?ôËa˙=~ć˙ÔQřBx5Ř~|?[ŁLĹ/–ˇ*NĹA©íq{ĘyŞ©6G9Ą—4e/Íf١,=ć_ľ©'–zźŁäÍĹeM]bc·<߯ą|ĺĄüőá–×őđ†‰soţg „żĺKżđ ú±!ءĎ/«{C•G‹( OÄR @ć(ť8|ľŹK^Q@|*ţĚ–ŇîRV]ÚVĘJą'4źoöŹ‹d°ĚęŔ;ŔÍĎ;É· Q·‹îŮ#Ľ«¦Îič"?%É?Řç¸Éű°ĺÜçî„Ϧo‘ßfV±ażjRßfb"±2‡Žŕq‰˝¤Ő=+Ĺf"·šůF>O`~áŻoCg}´‚9Q¸ŇâŐ©şTIÉłF‚ÄX¨RÝ@D9ndsmŃ É‹Z-†¦ -,0š”„$a5›Ďčü0cU&âkťDQbĂ8úŻć•|EÝěŞ.VľMY€ßz•c7’›vž ŰÜÇäĹFUƧTÝażýĆő׉ýôµ‡'ŹVô“é7ýj–#ii]´~±ÇSĽíĐ3˝vÓ‘÷襡%«Ô\őĹJ/Ű0iÜşÂpbüŤ×ř¦5M«†˛]¦ü˛Që›fm»ây.§ůéŻX‘îaś*ţĎýÄŚĆů >im~x%,V•G5&ě&L’Ů®ć‘:t7VĂ?8|`3‰C«púś8Ăťuü|Wňޞ2ő÷|”HÄĽ\µÇ‡p_«Łš,ępsÔ35pyŐܥŷݶgď^W˘0çńmęČO°ywRýŇÔ]wöţtbq€ăčVč˛ăü·®tň~nŚX#˛ËSn=­•9Ýĺ Í7¸<ęňá©vM¤ĚóyąáV±WŘĂ^'WÚđdömß{…=Śü™ŚÍëćX@ľĎżćKäĎňă,J}ÚK»˝Ô;)Ŕi”ĹŤŕŔé[ŘHŇ9'"ślü$hÄxÔxÜłbcUxňú&Ž>˙láŚ˙.3_…lî5ă$˙Źź.zţŮÜĹ Âń^]•™9„ă; «6«ÝĘŕ*áÇć`ňĘ– ±AÂÝl8‡ YČCß>Qß©WÄPKŐëßąęÉÉŞąÓě¸vęÔ»Gtţ¬sü˛ÉCZŮ˝˝{î—SĐdłËNâ0čá\łÇlÜ$´é%+µÄ°3ö®VÁůĐ _Yđ{c·K1™qSÂ1Cžfjr,u¬w´;L“,¬ť°(„ůŐü Y%ΊśÁG=ŽőâÎčwÄA ÎpXRŻ3šL4©$¸nŹŽ81+]¦]m˛Ű"Ż8ô†Ţát&ŕ5×éô6Đ9fµą­V›ë„ÉŕĆëř<č+śńp 1ŞwĘ»ĂbłŠî9!©ü$&NÝ+N»Ýf#&÷YŐJ[¬|“^˛vŃg4Sd˛‰.7Ýbb¦.VŻ';črÇ-ćŕ9łŞŁ-Âç$éPy/=ë: µ‡c‹ţ‰gš›}ąđđ÷ţ…Ś÷ŹÇüĆĐ&€ Xs7OĽ$±ů¦W7ĂřO ¸rł >B›ZŇy¨K†§7tZ#–;ÓęÁ–>ÚIŮ#86wśźţ‘FůtüżCúčný Ł ˙ě  żčâĄÇwë#™R'JsD)Ú‡ÉmĂ#u´C?·ŘA†±™/]h\´ĆßóŠ÷éă{L9ÂŞ7öů+÷Ł[oďsV’břnw6 ‘ËřƸřÁ[ŮÜKË\ޡ.Äh˙nŚÖĄ^:°łZ.ŰąŰK÷íJuľ´sŔźäxďŁ'Żłk{ză0»úűclýŢóG ir±ăö%4M€~ÓwÖ#Űä¶ăÇŘ!żÝ©—ćÄţ“f‰Ř…í…MÎDŕý€ď0Üg<&¶P Á=vünR. UşgÚw™$ÍŞŮ™=R8¨\ĺ‘Ţbtz¬>gąŔR`jjb{Řa.tşĆ{ťŤ®Ć¬EÎE®EY딵ÖuŽÜ7dm´¶;îtŢéşÝýi‡ů ú’ă€űsӧ˝ęwît(§_=.s((Űkě·aĂ̡ű™%În î jv»E…äw»\1§ÉŤŚÝFŹ™M0bM.~„άđń“b%ˇC!†˙äS˝×\hî.6C3W;5'›í<ädÎ.:zźťć‘Ú ~F[ZÄ2Č2Ů"M±¤-Ě‚{Jpmt#ëÁô@^ďĘ3ŕv_Ŕźzć„_=Ł$źÚ# âăÓ>ç|îú6\ěú&{°sU•m'ůŔI/ ţ]…9}’3ć>r§?ŘWQiĘ«¨Ä‰˝“{ł*yYÂÝČť;pxĂÝč*€ÝC 7¸É#؉B ÁŔ¸Ĺ=˘¸jĽ××™SË^~?‘N|Ô™Z:*Đú™ĺ©kvŞ…ůÁ%ölą°÷á5ÖŻeKľ˙ݮэӹ}±Śe ńKw3 ă÷38Ţ`3*oňVFÖX®xFx(zH ~Łâ*ç&",B4Ëî_¸čţű-ĽźýaŃ}÷- MDÄ•.Ŕ˙řWt.| ü—hvń‹˛llÂĹIN[ Cń3jH-KĆ‘ńřŻHţÇĹ$xM§ŕLĂŻÁëń?Ż ř/MÜĂŚž;řĄđ߯Ťâ×čĨU‹ć,ť8ă˙bĘç· endstream endobj 9 0 obj << /Type /Font /Subtype /TrueType /BaseFont /AAAAAC+PTMono-Regular /FontDescriptor 92 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 119 /Widths [ 600 0 0 0 0 0 0 0 600 600 0 0 600 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 600 600 600 600 600 ] >> endobj 92 0 obj << /Type /FontDescriptor /FontName /AAAAAC+PTMono-Regular /Flags 33 /FontBBox [-35 -235 728 915] /ItalicAngle 0 /Ascent 885 /Descent -235 /CapHeight 700 /StemV 83 /XHeight 500 /StemH 74 /AvgWidth 600 /MaxWidth 600 /FontFile2 93 0 R >> endobj 93 0 obj << /Length1 10004 /Length 6583 /Filter /FlateDecode >> stream x}z p\×uĺ»ëţ˝ţFwŁŃ zAÝػƠ±‰ (B"H¤Z%‚‹H‰‹¸ĘÉ3’H‰šť‘%Ë’\Lą&“ĚRáGá5*SĺŘNR©a&‰OÁ%;5q٧TSdR©ČążMAN¦wßď˙ţ˙Ýóî˝ďÜ÷űÂů‹óÂ%® Y =óÜ‘łÂú¨í¨ţŕ™K’ĺ¶´„şűŘŮăϕ۲"ýÖńÓWŹ•ŰÚ&!’S'ćŹ-·Ĺߣî;Žr›zP7žxî•r[ůŹ¨Żź>óL强‚öŽçŽ\©<_,Łť|ţČsóĺë3żDÝ|öĚ *íWQ={~ľr=Í`<•{—ݰ$A&Eź„…[şâPúžŐć/˝w˙O.önűk–Ć—üŃľ®oqý§_šű­µ­Ą?—ßDSÇwĘ|Oľ¸Äťfpţşôç•{WNŁJŢζűB´‰pNR} TüáŕŞaŃŹs áǵö¶Bű•ŰŻôŘĹôu‹Ćę·tŃŠVT„„ÇşŹx€‡í˘ †gÝZ»ľĐ#ák0Ŕ'qŐVôוoôp›°± ɱ_?Y7úČ:záJąNr}áqçţŰ•úAµ6¬óźŠrý‰¨µ®ŰĂ5ľw­R?¨ÔźVę×?ąJ}¸Rß®ÔÖő8˙qĄíĺĎżkŐ˘FŚ‹IqCl{Ĺ´n@%ďÚ&á˘!aŁsÂI+Â+ą…KúPxyơdű®űBźšY zcö>­˝r_ś¨˙f\>üTÇ}AíÉäŘÉQ“ćĐÚŃњ‘ܞ7ĺ¦ń'fŇłÉ[É[;ŹŢJŽ'O9j*MVŤó·fsISěť9 9=“2‡fŁŐĂůŮŮ-¸ŹÂ÷ÁWpů­YÜáŮĘP[]ąĎp‘Úľ+iĘ™©™ÇgĚëŁQsht6šJ%ÇĚŹ¦fĚŹFŁ©ŮY\ĄUGŠóĽ•ÇlõVś·—ď˛wĆŠšböÖ-ľçŢ™tĘĽ~ëVôô¨´ď‹ŹľĐAâ‹C• {‰±űt} 7C•NEą#ťJ§0ÎŮQ<[oßµwf #MńHRÝśŚ}Í3ćÜ«÷óâŕĚ·ŘGٍäźAÇJÝI”f„…ëçQnŁüĺç(Ł(QĆQ6ˇěB‘P¶UÚ¨gPĆP”“(u(—QZPjP6ŁQv LŁ$PÂ(m(üÜQ đÇ<öÔI1S鱺-!!–ň1žţ˙űhżrŇö…űÚżÚÔŃĺNŚČ ÇóÂŮ|đ@¨Elś","1Q/âÖ-^/Šżˇóômú©””ž—“ň€˘)o¨Ťę÷µçµŰnŮ űďčÇôď8ţŤ3ăü†kĘőnÓ“ôÜ÷f —ŃŚ{HxŞÉxęÝ!r´Í”$źá«ŮlJą’!Q±$>nĘą’[’ůČť+é˛ÄGz®äqë8*Ůu7WŞÇÎý¶%Ó–+9ín¸ Ó»dzsłC@}lƹ肨ŕ&ZZ’­°Ç©:ěŞÓéŇTÍĺrIBŇHÓ?)W\b‰RţçVľËźňĄČ–µ…lˇţP¶ß!Ť~ö!ýĺďý^÷÷ľ× ůýďK~6*]úá»——»- ťI<żÖNťÂ´4ţ¦ˇŞJ›©¦sątÖIE3¸´>ZĆ税Ö» ŁUAátKĆRľ«m†JŚÔAbŔń‚ âUnL Ä?ÄŰ*.HĹŇMĎĄŽč+šĐKşŕ§÷]tĘE·\tĹE32m’H~ÔNą·g@ęyä` .…Čąx Đ3sq8Ľőé‰ln÷áüźřFNżęŮ;gF<ľţC7玼v¨€i&qz˙ÂŇ»ôy˝ Ăt,—®9 ·¨ęí„ŢÎŞŢA´‚¬·âp8ĹşÖ‹ŻŇ;Ef Jť®H8ne Nčď°ř‹cp“Ĺ4QłCé™zŮM_×é”N/ę·t)+ÓĽD$ÚOôŃË´AóĐ4ýqhî‘l·ó‡wç˛Oo _śé)¸8rŰQ8ôÚ‘ą›‡ú}ž‘3wž=őţéôţÉÚ)ú|Ĺ/öYzĂ4}ņéZ2]ąa'̧s!¸¬5rµZ45Řîňş)ř‚ŹMUNĂ)9}˛Ľb,ó]ý=}…îZkTŮęŐŇ ™żĚ&2­‘l‡?ÜŘă±×§úăM˝ůěÖ–°–őô4É)Ëľ¶Bg0.§h(χ¦ Ąmýq:§óă$<çáCřî?oŚ'“ńĆţd:ť¬Ďdp»µ5ĶIXvśd/iwîźžÚzĆF†J*Í)ôe…Lĺ#EĘ+4„–Lgeú±L·eňĘô‰Lwd:,S^¦!™ć`ń|ńÜůóç‹çĎĎá¸xţüą|ž‰S?4Ř”.ÎZO*‘ŰJCóŚoK9ŘFih/ČÚJI%ç5Őś)ĺ@±®đĆŔ`‡úvVßc“rĘ ") ř c_Ď?´ţ|é‹ô«ßˇÖŐě•>śütrő÷ËcÇŘj06/eĘcó¨ŰQŤE])‘˘ânĄ×y’Şđ±­Üőş®y î°ČCcÁ‰/éNŽkĄ—Ů´'{ËŐ{^¶ěrÓ0~­ę@.´\Ő–‚–ÂşY!Đ–‡[A‡ĂăzAIS—Ťţ%˝O2i<¨b˘hŢaPݞdqbń$]e7śd-úxÜY»XĽ±8nßoÇůxŔŁ,ć![Ľ›˝č=dŤYţOł?›ůŇľ… Y_Á—ţnźâx¬Ź"=ŞŐ˝ůůŐIéĂŐGçćhń3^HńťMk)ąvëGŞŚ1¬µjÂVpç°!aÂB®MôłŐş›¬=»Öţź”˘żYŃ+ţ¦üm{3äŤěhO]śg…T4í†éY†\H¨+fç’é[Â% mep0Ę5렆РU!ö˘ĺĺV›ăZžÎäénžryj¦P6ŰHňÝ8ĺât-Ngâä Éňć)®´Y¦‹/+K9cQfĎŃŢ*),2,"uNEg8¦íaGb­1»blľ[]ďvI¶ebTWGřZ9Şű¨Đ—‚Í‚élÚ#ĂÁ9Ƈú:Ątfów#Ţ÷f< Ôžn;ÝSnr+¤ŤĽ˘«Z]vSfrÇôĺIŐîHu<‘|1–o¬Ózf†;迆k“…áTf[wÇđ.= <şŁ0Ú¨9;·7zĂîŐß®‰ĄĽăşż9™ęÂ|Hk+%ŕ/†H‰W™ŻÜfzŤ‚Ýçye3 ĐaË&f`‰g¤ţá$XV_ť„Ťm-)< nG9}¤űʱÂel'<ĺ,Űî<Űî®Čˇ„*y( 0wĄLýŠŤö)4ŞX ú ľŁ \Ö—VZ0Žž‰W é7ŐČůĺ7^8ÚKýŰ&}ˇˇtópgŘHo‚5ŻĄW˙ůku†4űáčŔO]žPף=™ŃB=l{ŰÚŠTŹt±Q|»Ś†7 4ÂĆ‚†86ż)ĺY,ŇŢ01ÓąŇŮ4ŐŞ]Ća{ń*$´ ‚בNÇO î”2ĹÜ9N®ŚÄ8#1Áö6#?ÍNŰ«ŹéŔ!ĂÇ7őŻâĚé+nšĐéý-]łďłK‡TšTigćÔI°$& …î>ćé†N`3€fmČLÓőFžž‹őělĎÍĆÓžÖţ‘ěđ3;Ň;žÚ2YLŇ#ôŰvç“GŰÇň‘dd‹+ň4ŤŮ:řôŽtÄ_·|y°Ú ۉ‹ń ŚŐ-‰ťMeˇn›^2ťKĄH€YońełĆXhyh<ÍĹňŕ*nU¶Bfum¬qd(” ośD,äuzCvbń˙y›š÷X|ÖxŃ€%Ťg÷gŕ#Í€t_;Ä8Äěý@;M6l–ŕ—Tđ1·*»#łÜ‘Ý4Ô›–`oN*~C’iä‡R{`óąSŤ#Om ¦baďô¶íăîÚţŽ©'˝é-`ˇźęŃx˝sxw¦píĆŕ‘áI±)o|öíÁÁźy=ĹŁ-=qřß 0 ĂŢęEFüYĂ€ń0˘Xšb‘I+‰€ú!4šc!¨Y°ŚĎ›śV:&§˛ÉŐ8ŇÇđÖ׫Ţ:RAŐËÖV¶»‡8ďĂC.ł¸Ätí8‹t˘‡Ĺ‹ń$ÄÁ Ä.١Ä#™™Śt0E;SôH’&B4]KÇj.ŐHÇ}tÉW vlŠMź7ľ¸dKjŮQűĺpşT'íwmLn{r ÉÖ×úÄ`şúëGŹö曋©­ő ő«»ŤXŔŮ46·ŤŤ°vű©}gÝ5µ:Ť{R˝Ů;Ëk˛LZ“ľ¬é- Ío†T<ĽCI.ńfI÷˛˛‚dí˛®˛`‹÷VüGr†Őpć#‡”k)…«•őÔ •ťWçe÷M 9;¤i:u†¤Đ‹5¶·ĐkŃÇ­lU°:_!8sůňĺ§Ązâ5‘|`GţăŹ?ˇçGbOMŰ]ĂNŰđäČęż±ünl­]ra Ma«ĺŹĘ6“ŠÂfQ<ĐM±ĄŘsfĘXČŔýK¦?gFŤ…¶‡^·1>ŐÁXęX+ËĎ,ÓáÜëh¦xŐęâŇŐ8nË~öĐhžĺ}Ő€8ĹâKXK§Yڶ@ěc1ÓĘGťŚAx´µŇdíÁZiżN %ĎÚé¤íŞŤÝĎú¨ŕřÎA÷Ů>¶SÚSöD¦Ú!Ë 3•&ą§»¶Î$3z}¦-ŘľµŃPBŹl>ęŐ?Ů>îiß3ő¤‘ŢÎMt†ęüvŻŰn4ôe7ĄŻÝ¸ţ’Ď˝:;8üWÁ§Ž´MôpÜGÎ/ąËb˘ś'•\ĚJ΀•,ŢŽÜÁrÄĚ# 8aC”3]Ć‚ –X5WŘĘ6®Ša@fťŽ ?inIăĹm¦Ľ.f•~A*ͦÓ±¨éµ÷_cŻ|ŚâEˇ©ŮkíRFˇŢőhżľ‚T€ĘaýKłgá0­ĽŻ&žŘžźč¨}ĚQßťŤö´%´Ý{°ţ]:č>0˛úcňµ µŐúSąŘęw¤«–}ť>é»ŕ÷Ań‹˛ŮTIIăŚ÷„)&-›ĘRéŰ€´YQŇX2ŤÜ˘i|„Đ[JtŽS͜Πű±źéŔöž{ŹqĺĘm”;(wQ čĐTBâ–ĂVeŚUg´f·šnşë¦„›Üţ„źÎřé?yýtÇ×/íńöKű鮟>őSÎOütŰOv¨µjůޱ´„̦xîxrcINľ«âšđDŞ$wL.Nţîď®ţűŐ˙Ý«ĎfëcŤě’«{F¤ÍfŁ‘ĆFćĂا‘:™CŃHŮ5GđJúŔv"-•ŽjęM{ymH›ŇdÎ4dp¬g9}~’Ĺë‹[äIY*ŢÓĺ°Ü"ă*€ü:ł‚wYLBp†Ş˘“YÖ|X wb ĆŽ˙Ü˝=öĂö3vąXş ;âç\2KĄ6N÷=ĚăÖůóF“Ýv5Eٸúć pvŇ5—äR>–>‘¤ś4(IźJk’tX˘ŰŇ „’Ľřx8×Ęq"‰$rcô8ĘCż±xL»¤1©‘/j‘lĚý[y)F`L×}Ł˙{OýčŢđńôďŢÓ}úőÝ‘żř 6V—×ţ/H,ďë”sŃoJŞńö©/›~Ă ţşVµÓA*Gp‹ ëHLb eĘ<ŠRD§»s”V”-(Jqĺ…ě!ąňĄ/˙Ű–ćX!Ńhdš›}M[˛đ€_nďÔő{j˝vëXţ;|ŚD l&‡uż-›1ťąĹ!ç”.cíF ¸ ň<Ói,8`#sfΧ;Đ wXů4ö2Ň¸ŚągĂCîiĄťU—±¸gµCŠU[Uw˛fŘZ骫@®lŕ–ŰŃB±pĚáu4 XĽÁZĘ|K}qQ C·ĹćA— §˘4ˇô˘(X8cşÇi'NÇq:ŽÓqśŽî8¶^Jó8[Úż~I—$pI—$pI‚/Ůźŕ@hż§yßE/©rŔÓ8ŢB…¬`m•k=â,i˛3čkČąíń*¸!âMFrhswŞ%¤?Ş8ýF:ď˘ÝÁl˘fSëęďĐĘvo4ŕÔýÉP¶˝¶esző=š6ĹŚM=«%k±[‹5C`ţͲßSđűkČW°öšÚ2ŻŔIxżľTúrťAcˇöá<Ů€°­:é[ç’ŚľË‘ĽµI‡7©‘ÍźiFű+Xjg‡b'ÂWÂŻ†ĺ÷ęčVŐúHµ˛¬Ś‹z\9ź·ŃŔ;Öń±Ö ,¦Ö2Q$I–FnčŞ#ŐŢďśČŐ=Ö7éjŽŰvÓ^ź;‡÷Ą˘F €ă'děť6t„WżőĹfđ×0đ…Ż”Q°ónĐ—yăı4Ĺ"ĎÖ[ęŠě1ňŠlLáÝPÜÍŠkŽɡŞ[–Ć™ OĹŇ8‹ťlLYě¬ç#;Ůz¦™Ą2UE8ŮÖFgŰĚ-:ĄţrBÄI"¨ÄćvqđжúäŔˇ-On«ßëËloźzÜ—…śú»«˙Şe|®Ű‘Ń&®Ó㛞™kŰÔđ4ë\Ű$µBďŢţϲŢF zO!ő7cÖěÇŚ…(f  ŕ:3$Ĺ„ilH‚,­«¦°Ń0˘@$ĘtĚrR‹ś2>’ `˝äŽÝş;¸n–g®ŰÇQŢÄz™E…±Ř’Ý̙лYtěl¸Ęâ 8í‹mt ŤŢÉ’Íň”YŮçěɵµßÉ(fi?ŰŽ•r÷őödć,zšF÷n;uşit)Q4âÝýÓxoKDć¤hndÝ–ĆÓąK7çÇ3˛j×ţ‡t­¶±˝öy}'ç÷áVŤ;p;­ŰŻU•x=}Č;ÝÁć%Řđµ-•ňH}h‚’E«1ăŠfmFTa¶b!C‰Č†­ §ÍSH•˘*o­TË §ÝGÝ2 Ňuęţ<ʇ?•7sl=o*wÜĽů_ µazKCKČ>N%ş›"ÚGL†í‘î‰ÚV‰č«?d:}§áC l©‹ĆĘú&lȢĆ‚@¬÷&lů˝9¬…:tdm îČV_®l řź ÜÔu5řÉ%7¸,˰„<_UŢa¶ŮB˛řşöÖßŇ6>vč&ť! şxÂwŇă÷€~ L¸4ă.˝Éľö ‹ ‹Ë, ězGY4A,ľ+Ž´[IxÇŢŚţ·98Îâ&ÄěĐŘ[­4ßJZ_n•”ć@łôŐ8ŹÓŤ8eëéFýŰőұzşPOÇbôZ”đô×}ô¬Ź˘˝¦Q‹F D Dë™C%¨TM=ťJu§3,Ü?®X›Eĺ· ś^Đ˝îɓݩľG˛ăóńdj÷–Ú¶tĐę{îąÔЦNoł«9ß‹ć7“é`MĽĐ™éńÖ¤ôšú`$ć÷%ű:Çşa÷°+péţĎgś¤Fzďîľ\žO/•wE„µ+‚MhSy¶öJꪩ§µG\5Đx~ hŔQgôÇSŁ8©ĆFЬ‚uZÎă‹ëyçMN9Ź‚ć-^tĽâö0m6[{€°u ´ü…Ţ~k}ťąťNδ—#çę_Oěč‰FŇG Í}ÉË´ňLíŐ‘_îolŤ5„ň»zţ–ő Ă^wŕ]|Rü·˛~äîá­č3Ľ˙ý°˙Ă۶öĄĹ3ľk°#ÓgţeH^aÝf˛ę¦©ę˝‘˛XÖÍ(XńĎĘŞĘN›$%—źvĽ¶±v€Žőŕ—Ą(ďŇąXĽĚié[,.Y«¦÷fŢÓĹ0msxqŮxčá… ŇőĘš/M§ŢŔ¬¬Döoďn Śü†­¶­±gw`VV˙CWÇđľ¶ľ`Ďáĺ‘Ő˙Ó2Ü-żO&¬Bę^6±háőMņwŹ%/ú)^¦ÂS,DůMDů›ĽTz•S>ÉËá ŚŇ g›Y„Y\ańÄ‚ÍzČ9ŮM­úµŠďĆĚ´ú^Âű˛ yA—˝…1+‚űSľ«©ŕ/Čią@ťÎŻřă™?{ň˝ąę‚>¬›ő.™—AŻ•uv/tĂ/G XTuąÔĚĘ]gRĹ Łlć1“ĘĎ)Iç ¬›˛tď¤rUyM‘‹ ˛˝˛ĺjí¶Úď\•ě^‹űb;Y%ďŤ-^s܆©/čÇÁ©Né^ç–n@,¸/Ý:oťAóKëuD6˛ŽŤ µhT-®şírD‘nęNżŤľn#›Wőzť*©üz˙Ľ‡k˝˛`x]°xL\ÂŚŇیΞ±™EbŃ®Ôqč}@Ü۬îTgU™9ńfü2a'Ę,ĘI”«( Ľď2LžQjqLßÇńů-8úbFďĂńâ1ýw}•-ţk0öYň—g,Íł†cÚ{Ô6±óéŮ9ůčěÉÝŹkGčĆę/čeĚa`ő—°Ý‰i@b”:ń.ńŢëÔ[s‰÷˙‹B6Ťš|U‘y›¤­ün”–VótéćBÖgí?áN|—/~’č­ß9`ć3ZDVřQúq1!Γř ÓŁâ1l L‰ÇĹřőĎ>±żšĹ§Ö żŤ(ß[CZ †ů3Ň65˝űĚóg:ž?~ńô‘óâwQ˘ß endstream endobj 34 0 obj << /Type /Font /Subtype /TrueType /BaseFont /AAAAAD+Arial-BoldMT /FontDescriptor 94 0 R /Encoding /MacRomanEncoding /FirstChar 88 /LastChar 88 /Widths [ 667 ] >> endobj 94 0 obj << /Type /FontDescriptor /FontName /AAAAAD+Arial-BoldMT /Flags 32 /FontBBox [-628 -376 2000 1011] /ItalicAngle 0 /Ascent 905 /Descent -212 /CapHeight 716 /StemV 0 /Leading 33 /XHeight 519 /AvgWidth 479 /MaxWidth 2000 /FontFile2 95 0 R >> endobj 95 0 obj << /Length1 8792 /Length 5814 /Filter /FlateDecode >> stream xťY xTŐµ^{ď3ŹL^!đś0L™’„G$gňR›*˘ť© -ř"J@Ĺ rÁÁGPkUZ (HEĺä bÂŁD©˝ÖÖ‚Ő*öeľVo«…OnëŁaćţ{Ďđ˛~÷~÷žÉÚkí˝×ż×Úk?ÎŮ;]·,ë  ZM‚Ě7¶w’zôS`… –wÉüĐr"לďt~÷Ćdľp=‘ăúďŢpűw’yz쯋:Ú&ó$ń“ˇ ™gŔG/ş±ë¶d^˙Ü}Ă’©z#yçŤí·ĄěÓď‘7njż±#©?Ş|Lç’Ą]©Ľ[ĺoéHéłQÎŻ“uçĄ 2Gď¸*ăäĄńt ťäݍYďŕ®yĹ8pmvígîŮ,ŃÖ?׎”üÖůĐÉ“§N{É=ŚĄ’¸kzüJjđŇÉ“'WxŃůTÍĆ{ŰV3Ĺs´ ĂH PĎĹ\™Őfř\ĹíĽ@ub@ŇĹJđ‹Ŕ€Źź/R¦ňÓŚe{«WĂ^ÔëÄ0‹ę ČŁjđFQHEJm™ť•´łĚSVŤ7|Ą’-2iTÝÂeWëĆ>aŞŕŻŹĄĄK˙ÖŰŢaŐÄZá˘\h­†Öp=ű€đ`Ś=Ş'm±´Ěęî`†hC7Ű>2DY¦¦¸ÉFCÁŃ$FPę®#ixł¸HńgÄjFţG±’úŔ>ń°B=$…ůéÉ©5=–™U=LÓQk‰0(ăݱ’ÉŐ,c¨ÄăUVAňŠ(¤(F-Š‘Šb¤˘p*ŠŮGâ^ÔÜ ťńbuŠ[©´˛śVĂlT.†aöč1Őý˘@ä#0Ţ}%Cia,-Kz–oŞÔňcYŐuÄRšâčrWlx~ő’}˘LuĄ<–_$ť6¦ë1<94h)OÉ1).˛‡éVPG^Ndťť‘AâońßČá懑—ü)ţFŠ˙*ÉüHrQđ_K>Á?Dc×ň?ĐfHśď㇨ ü–÷ÉŃçďń~Ş?ŠüBđ~đ‹Á÷ÚĹŻé}Ľ/ß7Ů™y˛łüźtJ^”†äUýüţ2Ť@™Đ(đŕů་^‘O¤iŕ»Sü§|żśâü%ľ‡&Çě,é‚e»$Űe;%{Á¦d®uĽľźżŔwR!Tź·K Qą#V2ZĎއößĆ»ě‘ú ‡oa!ö)”zč¨ä4„oµkd#Ýö~CďçÝĽŰĚŻ1ýf…ą]Tú++*· ĂoT5Ćv#čĺ`Ů̱~ů¤5dpĚ ęć÷ÚZŤ<Ť>É~qZŤ´GI¤ťJ"¤^%ÉÚJŞăkiŁŤ• U Ő »HCştč{ ;UI¤e [±›tŃ D'ť Ń D'ť@t*„´Ü D§BD€"˘ "@D€(„ô7DD!Zh˘V…h˘V Z˘V ZÂÂÂÂTS!L L L…¨˘J *˘J *¨TJ *¨TC! …0€0€0 „/^…đá „W!Ľ@xđ*Ä @ 1¨@ 1Ä B 1Ä żµW ľ Č@ŽrDAŽr#€Q#€äHŞë2r ;ě° ;ě°Ŕ(ě4€PX   K!, , , ,…°€°€°˘ z€čQ z€č˘G!z€č˘G!şč˘n…č˘n ş˘n şâ˙<4ü.ră]ËWł±ŠŻ˘cŠŻ¤ŁŠßI˝Šʶ+~­Q|Ő(~+•(ގVĽ‹t7łőšě`¶€ kAK@›A»@A.%†ô>(Á'šŁ´l× ×f×.×A—c—kĐĹłť3ś›ť»śťŽ]ÎA'7‚E»´¬Ď.ťö’]:_¦±=T*żŠŘ‹XT;ÁwŮú¨~>Éžłő}Čí°ő `óěŇq`síŇ7ô`&»ŠtMBŰR|6\ćgŮúŐP›iëcÁvi‰Ô.!?jÇâ‹úpČ =:iÉgëÓ =ĘÖ§Hm7•ĘgNŞPî9 ËĽÁˇOúYHcfş~\X?˙†ŔbzĽgôi`‡ý}ějÓŁďŻxĘAÝz¤>Ţ˝)nIţ˘ľÝŻľ m1˙ýq}śţ@EźĹ÷Ăď{• [_côńťćP}µ^©wU| /Őżˇ·ëłôy~”Űú5ú~é&…YďÜŁ·˘ÁËŃ ż­_ę‡/p±Yż]7őR}б_Ć—&KÓÉűe¨:i˝ń-óĂş­_UÓÇrĚ2× W·k®«Ţ5ÍĺsŤr]äéĘuq{ÝYî ·Çív;Ýš›»ÉťŰ—4ňśëTǧ&3š’˝8ź0Ěc™gnNß k¨há-łëY‹5°€ZćÖçł}}Ě3sŽĺđŐ3kH µ´Ő[“-}®Ä,«&ĐbąZç†z{ ŚR‹ŻďcÔęc Y´¶ČŇ€JZ{Q?1V°öţpňó–×ĺ× ™ž3Ąąńk’*Ś4Î=ůç‹#­G[f‡¬gG†­j)$F†[¬»fׄúy6ĎljěçY’…CýZ'Ďnš%˵ÎĆ0Ô>PjÍYPŁRÉ ć®'CŞa?©—j٤^ ŕĐ+– zžL*Qz%žLĄ§1©×{Ôhjě5@ÇOtTéőÓy:1Ŕ6ö– –Ď`!©ĹB>C96V5¤ëP©@†ď=ŐΔ1kü9JeâY•‰Ę–HúŁš‘ šÉsF'w tÎň˙'uÔX¬jŮĘCMľ¦Ż©±6,_”o­žo˝+—É Ă%‘ů IŢŢa-óu4Z+}ŤFo•Â}Ąú¬®ň5öҡ¦¶Pď!łŁŃ®2«š|íŤáX]m(x­{ĎÚ Ő~Ť­ZŮXHÚŞS¸ŻŘ Ęę:i+(mĄ­:łNŮjZ,ç}k¨×Mőጫä1žîÁއëóĽťÓĺ„îźVśż˛hŻFlĄÂV†ŻŢĘÉŞŠ`EPVaťÉŞ,g§ŞňWN+.ÚËv¤ŞĽ(ÎńŐÓ™ ‰o±&Îl±ŠgĎ É©b™Á׍ŮRů¨ę|jZÜ?ä»u-í:Ó˘ä$5˙őéúşgٲeK», ,%j±Ęf·X“f— ¦"Ťa”Ť;S&„*ëMKkęK  2'X—4'Ą ‚¦‡śäâ=Η§®XáČę%đݰ „ă0żŐĆU‚¬ş56ĘŹÓTĆOLrWeŢ.,®†…X  ’ű“ÜĚ©€Đíď®č®éń÷TôÔ8Q»g; őíňUjŹß.¨+°ôL0 v…l¸%ím±GŚT†{¤„K™Š×ýs\•#{.°čŁz–ŞćeĽU„‘JA—µʤőe2'ꤠ°łˇZÉś*’Éą9\íĄŠžˇZ ÎX”řŕ Ĺ'>u’󏱓ăIRę±é9z—ŤaĹŘIN˙d¬Š.Çěüç‰]tšľŹă}=ʆĐhśFŻ˘Ë™ťÝÇ6%–'>˘Kč!Úšx‰­I<‹úégôOxđGĽ1kčJč_Eô‘ř‰'ČMë(ť¦Ń,–Gíô~źÁʇéú ű^âź°šKkĐ^-)x9qŠĘč>­Űq4íEÚHű3± ±_HŁ(ʉwďS …é)z>Ř€vÓő´–câgľOOSśeđy˘Áq–.§«é&ş•˘ô,˝Î†°VÇQljĉż`Ą1đi1}Ä&˛+ř6-#1=ń[šKýôú+Ú\íÇÜx]âG‰Wpú~‰yŘ~ö˛ŁÚńŔé»[/ŕFŻ„Ş‘+ag>ÝM/ÓĎé?éď|Ub]FłaůU6’¬‡đ•|Ąx‹Ćˇ·óŕí2ÚLŮ´—öŃÄćw4H˛\VÄľÁ泍ěď˙2qeâ3śą é›´‚V!¶OQŚvÓŻč7ôwú}ÎĽl2[Ķ0‹ ˛c<ŤŹâ3x'§ççĹ•bŁxY›¨Ők×kohżuü›c«Ý?µ=ţpüůř›‰—obîdˇý\ŕ,¦»0+¶ŃAz ­żG ?Éůö§±9ě۰˛”­gʰçŮ«ěMö1z‰/üFńiĽV—đ[§5üaţ¬–7¸¤ř˙˙L8Ä(1IÜ,¶Kô‰#â?4ŻV˘ŤÓŞ´Ú-‘©v\ęíŘáŘéxĹqÂYë\čětţŐµĆuŹű—§ËN˙1NńEq+ĂÜuc&­@$ž$\"űčuDôWđx>Ĺ(˛bV ż§°fÖ®`ßb×°¶†­c±ÇŘ&¶•˝€ Üß<ČgóvŢÁďáëřý¸ËŘÍ÷ňźówpˇrž>Uâr1GĚ7ˇ]¸Ę»‘Ý(ž‡Ĺ[â/âŻâ8Fm¸v‘¶L[ˇ=®=ŁíÖŢt|Óq#~[Ž7§§śÜYčáďĽÎąĂů'—Ó5ÉŐęş×ő¶ëîN6‚•Áss˙ěĂ °/âĎň\m;Žâ‘8udŁçŚĂl¬ŠPťc\˛d=|Ć ´ˇî45 ‚]lMdŻŇ*'ř0ÔÉfżçÚ!~ ý†EXöڏÉń:/¦ťŘŤşů~ľŹŐÓn^ËŻć?Ä>Ä[ńCĚ÷Űčv=[J;Ůq6•ÝÉjŘ*z›ç‰ŮěŞMlĺKc—łč.m!}űlľV`Sp;˙QüI-Sűö§>z#ú˝Ď~L'™#q »›ŔnÔŽ]ć>Ě÷µ$w˝yXg«° °ÜŕÄ,9€ĽĚ]•îÁ^‚ËGjĄ9¸<»»ŢĆ„•řaâîÄí‰%ô `O˛rv’ő`EôQ‹{Ż×°JŢc°/ýÚîýŻ…ń…4@ł|ćgŐXÇËÝŽg»?qĽá¬B´ďˇMŃÂlö  čMúľ`nŚM•Óř;ľ‡č¨R'Öěěăő©ž,E+k˝b=ŔÚ8}âú îĎ8Ž-€}7ÚiAśŻĄĄ´#x7‹ˇd!ví2úúťĹ&ăz śL´ô(v­řô{úD;ˇü*ÇľĐČ®F[_Đ·h!,L˘VÖ‹ŘCS°ł6Š_"ŢŁ™—ęŮ(ö4p¬Đ,\~Oqü™q*Ź_™Ě‹xÇ$PŢ·W]Ân†ŮčÇiĆfĐÄř,řđšĹ~­Ľxśw$Ö‰[ă7Đ/čÇS[îj$2mfÝôKj§Mť2ąfâ„‹««*ÇŹ«(”ŤSZâíUlčŤQTX?/ÍŹ2ú¶_˛D;Úh˛r°Űh _ńAţą,Çwňşók‹D´)±!•ŁŃu†503t¶¨X¶Ł `ąż9m†éű0R-ňHeńµáĹÖÂ$ ~Ő«d˙’'ä:ĂJóŐűEŻ‹`h ŁÍş˝Ř.,4űTŘdDŰBľb«®ČnoŃ›KŃY·Ç LŁŕšŠň^oN2°˝YŮ)!#ó|ˇAOÖ)I©K©eÖŮČ2éŁďr|Ź[Ćž„|čÓd™tL¦č‚É> endobj 96 0 obj << /Type /FontDescriptor /FontName /AAAAAE+PTMono-Bold /Flags 33 /FontBBox [-51 -235 754 945] /ItalicAngle 0 /Ascent 885 /Descent -235 /CapHeight 700 /StemV 137 /XHeight 500 /StemH 122 /AvgWidth 600 /MaxWidth 600 /FontFile2 97 0 R >> endobj 97 0 obj << /Length1 6600 /Length 4122 /Filter /FlateDecode >> stream xĺYës×użw» ,^»x-X€x’  J¤%=l‰–Ôő˛ĄÔ˘–\ŰőCU5Ą3•§í´ţĐ©›ŽŰťéx°YÖŚ<“Ä™L_hOk‡3N:éÄ“~Hjł­'SýÝĹ”lç/čçž=÷Ţ˝{ĎűÜĺ•ËWĎąFxR;uţÄEb^ÂBč[§žşďĐü6ŕ©Ç.>~ޢ1ŹţůăO<óX‡–N˘ţüě™ŔćőżhÇϢŁCRö|ęěů+Owh! üčNYă/ž?ń´ő~˛:ľ|âü™Îüž×€S/<‰}±«ça4ó/ź±ćÓ:öóľ9toCAhd’p$`Żěö}“f=€Ő}ü…ăŢ©˙"=ü‡lĘß>»w…áw}鵍żßrń Ěsŕ™Î…gř«A¬TÇřcÜGÖÚÖ0v‹8ó·É“Űł.Ooěć.n˛$A˘ÄOśkĎßĹŔg{¤ĎőŘ?×ă EôéŕÎm­#“¤@ŇX[1{Č]ĽľŚmč„ÇšÄ}®‡·Úšc#2L’¤Çz |8!‰1ź{ţ\xö6‰ăµôÉŰx¶ŻYŘěżr›ĽĹhŕ%†Ż˛y^ëD5ń]†ńĽÁ0ćU!F/Yř¦…u4çW-|ÜÂ/ZřU ßµ°»fëĽná,|aĽçE ßµđĎ,¬3Ś},|ÜÂ7-lÎż !úÉ2y’3_¨n\›ŤµŮ…h"ź3ŢšŻoÍF %vwŠ3‹čěYžĹAŚŰ;«®µ¨AVVŘš‡ëÉ„qme%ş>,úyë3”|¶Łfu@X’»EŻÍc1 d"Ę:’‰dű\Ĺ»Cű×ç°ÓŰ©Ś-őÍáĆÉdŻŞK_»U$Gëo>BfŁ@ü‡ŕŃÂĂP%W'2ŕcŔ›€I@p0¨‚€ `㏠ȪŔÖâlŢ;XžâŹ]."Ň&p–|ßęa˝›q†ÝńĹq÷/éµ}aż€^ ;¬ŹŔâŰlÎĘ.ÎéĹ0é˙ź b˝u…Lü,y…üöŇŻĐëÜiîŰ|ť˙ŰŁ¶ł¶żN 'fÄŻKqé†ô‰ý)űŞýč˛ĺ đęë5*çëMNUTßv+4Ž.6yEe$_hş9žÝą Mϱ;Gˇéq;p×´;Ü ;ë—Z†Th:íF¸ĂŰ2Ľ……,k®nB´Az¦ ŠĹ9Aőxś‚lśN—(.—‹#¶šHE$&,RXl±Đů1Ş8ęO¨ *e%MŇ*Z%[‘ąŮOďĐ˙Ö·JßůN íŰosw>ťĺžzď˝ŇÚZÉl!#J>¦×č“ç~“cl©A…őĎo_ĂKĘ|ňăË)Ȩým<űćĆ}…¬  ďŮ|Ö×VçĹ%‘[\%˘dĹpµV‰KqC]Ű\[»*c×ćrŞüš˛†7T¶Ť—Kˇ`ŔĂIŮiľ"Žpď÷W&’sýŃđh.ĘĹŁ®ZnĎŘđľń~±"†Cѡ%?N’Ű\ý)ô'‘ůŽţD‰Ď7‘šŻćZME­¤|kˇ“¨ŤŘhŃF_¶Ń%Ľť'<-ňt‰§ĽŤ'ůĹĹEe Z&ŕ ů7I˙­3á§çYeCI/ź† ˝äśůÖoş°rľ©SĽ‹*Yc­°fŘÖšş }.ŰŻŽ5văîŠC„8Ä®-x@ypśNŢ!<©›®·”ue­Ą´ ¨˛š &Ç€¤Z&žşĽ´ĚĄ–Ź_j˙Á2ýá3?ůÉ3íř2öv`#ÎÉ/A&ÁŽD8žĎCä`ÖFňĹQ L wÚłWĽpdbă®HŰ(FvĐXç {2ôF°ńiÁB »b(khiaÝ(¶  cŤ ±k7<¶Ď7 [Ą1fL3ďę}»\+Ď——Ę|Ľ\,se}jŐ<˝™5ĎĺóĽ–Łü?ęč\AŻęÜMýUťÓuŤhĽB×;¦_XĽti—\@áô"ŕ&ŕU€í’Â&┵˗v9‘řËä"ŕŕeŔź„ĹâhľN›˘ĎŔFš=a4NłéadÍBÍ#ö…ú8ŚŰĂó ł ˙4-—b\0 ZH+“٤‡&ű3cۦ9X±6ľ“nË$űEÉ_ŻŚŤ`ČŮˇŁąs{¶íHGwý…[ě«îŻë“‡Ëľ\7”/ęýz±č”sš?ó%č?ű"=#µ\yOo0âq/ĎęĂó3;ł~'ËţL"ân˙O20Ĺ ’7¬öęĚkqýGúI˝ŁAbg^@ŔM‘5*1#“Z0|¦#[zsCSî®ŢL-2˝ŮuŽrnź[YHá iĆč·É)¬Ś2îbŕ|ĽÂő,Oí:3—Ü˙ŘÔÄÉȲ®÷VňŃPn2µ}ŻŻ¨ë™ą““Ő“łÉËxTRÓŮřxN‹Łěg6Äţ€?éd„|ŁĂ 2„C­h•"’ŔŁ$ćWŤ,PnÁ ĽC: ¨l‹FJ1b-C_3‚Jch‹ÉűŁn,Gş,+ ”®©ÚAŮĺÉŇHś*:%N%"™öÇÁDAËj@ Xęçď•ĘX’żOń´ôOvZű†Ű&÷–z ‡§SŮącz%p0š™txFŁŃrV«!¸Îďß+Ë5_oĐ«ž©ťžKKöŶ/ťüľÓéËN×09• § ô¬“ąÜ‘S@fš@É^ Čp汲ŇĐ ©tË(ŤĚV€÷‚Co—{”ŔřőϧiڦũWďŐz© i‚—ą”éXŚořNÚs·Ě¤DŚgÚça Ry[† ą*3éÚ™ÝéÁ˝'·gšÍËíWhĎŔXlęÁđ_EFŇaîż+c.-ŕJÍťž95“ŚŞćKńˇ^wo€*žh®gt»iůŤ!·’+MĆÉ –UGÁk•´ESEcD!v*řhˇ«QÚŇ}Ćďç×˝B 1î˝Ă4žˇ!_(îô„ěđ#?AäE5óMNPmyS{šEÄĄ*†ż›€îw‹ne?%gÚ:ÂĺŞěŤx9„D^ö"úaý!¦tŤYCfLM>ňnfPĎFŐţĚpď±c‡aĎĄ§Ü®ŁNż[ZŞSö•€˛:•›Ą¨©liÓ m MĂ©4d¨ÎLŁ4˛Âz3%¦+pĺfA§‹ŤŘ–ű 4_WˇaPá.ĺĺęR&]×–1&w©¨ŁÜr’†aâńÉ"őm)ŢJ~šŔÜ+ÄI±©±Ćă[¨ůBQŚP[„”P’c™bq±¬nŃ’Šl­•YćiVţ@W'M¨˙iwűeµOxú¸‡÷îČ&¦śŢéT4Wźî ú"-ĹŇA)¤¶˙®WúŇń\2íÍě*·˙’Ö†SŞżýű+űrÂbB|µ#WWĎ!Ą„HY„¤YěT! 7úBŠYÜ/°.„‚LDN9Lq^Ýś„^XM‚0Č2©`Çâ!4 5A´‡ěłŹ·[|&Ő¤ëuŻM;2•Ţ5˝^Lďt^ßC×gâĹŔČÁíďŃŢťăůxű˝Áâ\v<žüřÔ±·Ă•LřüŞ‘Ϭ0I@iônůąÉş{7ŁŰ» Sˇ‡š®YšĹ­Ž;W:ąkŚé=™Ý'¦Ş§f»ř†Żż¨ďŘ;[í-&ż`ąk3‡1śÔöÍĎ}YÍě€yCYlĽű“ßčř^P@M¸Uň,)b‹µîµ¦â†U{ ˇ®:lą­Ë„i±]Ę´tĆ’$*/{—Kąú\)Ťş >ęóąR|ĘeńBnëδµU§#ęŕ›ľ~ś€)쀻Ą·ŤŘ:e "±4‚ „ň,fC•†đ„Í2ý˝Ń=GöŚ&¶ÝWÉz*Ţlľ  n3{/ś?ň|fĘťß‹Ź¬Â`zű0*”€'Đ#/8üŠŇ|!(91ôŔ#ĺţcÎhČË".|r*s/á»ŢŻutîtŽ]c-ßÂÉŃpjÍv ¸7›'Ŕ®Šď÷Ć®ÂÝ>_ÎDâ ˘‚CŠ2§€CJr¬Ä‘Î9UWLŐŢ2|lóhYtŮ<Ö Ű@—3čv)“#¦wó `ÚŁ9FIçňÓ€ÝEĆřaqĹŠ,«.o/K:¬Ö‚áZ…ö‡Ü;¶™€Ć’tßíţDłiŹNdŞCáíofÓ“® şŢ~-\Ţ—)FL~oąýăťăCńwˇ/”Üđ¨’ŰrĘŽD`¦‡ŁCěŘ*µšŃ„ ¶VSu l‚]e©©é4)d.V}°S] ő—#›Bąż®îćUöĘn»dŁn‰Ř$I¶ąśîđ\÷× ¬!ót‚łkł‡…Ř r÷ŞŇ„‰D+W)Îĺ٤”äË~­\ˇÇ÷ Ž«g~sB¨ţöąëŁva}îG>m»Ţ~ÂřŹé€włfďr¨c«8ŐÜfĺ[MÝ:8Kż$"9 jS $âä܉<Ý€“`ÇŇIĂ Ą7ÚAUÚĎ"š0?y‡+ÓÜwńëhGîxÇeäţŐ 8ČÁ«ńÁm±9Źfˇ–qxyZŕéMžę<Ýŕéž~ŔÓ×yZ5;ĆÓ8Żśö.]ĆuéŇ-űVa}I`n˙ÎČŔ`©480Â=§ éńěĂú~·ńפdîŠííŢK!ăTÇGö2Kv“/‘=dy€$óä!r|™!Ź:9JţĹü_Ĺ7¸ÎCwd»ćňó?xaůÂđĚ…'N˙•/"á endstream endobj 98 0 obj << /Producer (macOS Version 12.6 \(Build 21G115\) Quartz PDFContext) /CreationDate (D:20230201235828Z00'00') /ModDate (D:20230201235828Z00'00') >> endobj xref 0 99 0000000000 65535 f 0000007572 00000 n 0000028821 00000 n 0000000022 00000 n 0000007678 00000 n 0000027575 00000 n 0000008309 00000 n 0000008664 00000 n 0000028968 00000 n 0000044490 00000 n 0000008732 00000 n 0000009089 00000 n 0000009158 00000 n 0000009540 00000 n 0000009609 00000 n 0000009992 00000 n 0000010061 00000 n 0000010420 00000 n 0000010489 00000 n 0000010848 00000 n 0000010917 00000 n 0000011279 00000 n 0000011348 00000 n 0000011710 00000 n 0000011779 00000 n 0000012160 00000 n 0000012229 00000 n 0000012608 00000 n 0000012677 00000 n 0000013035 00000 n 0000013104 00000 n 0000013462 00000 n 0000013531 00000 n 0000013909 00000 n 0000051825 00000 n 0000013978 00000 n 0000014335 00000 n 0000014404 00000 n 0000014761 00000 n 0000014830 00000 n 0000015208 00000 n 0000015277 00000 n 0000015657 00000 n 0000015726 00000 n 0000016082 00000 n 0000016151 00000 n 0000016508 00000 n 0000016577 00000 n 0000016957 00000 n 0000017026 00000 n 0000017382 00000 n 0000017451 00000 n 0000017807 00000 n 0000017876 00000 n 0000018255 00000 n 0000018324 00000 n 0000018704 00000 n 0000018773 00000 n 0000019130 00000 n 0000019199 00000 n 0000019556 00000 n 0000019625 00000 n 0000020003 00000 n 0000020072 00000 n 0000020429 00000 n 0000020498 00000 n 0000020855 00000 n 0000020924 00000 n 0000021302 00000 n 0000021371 00000 n 0000021750 00000 n 0000021819 00000 n 0000022175 00000 n 0000022244 00000 n 0000022601 00000 n 0000022670 00000 n 0000023048 00000 n 0000023117 00000 n 0000023473 00000 n 0000023542 00000 n 0000023898 00000 n 0000023967 00000 n 0000024345 00000 n 0000024414 00000 n 0000024793 00000 n 0000058159 00000 n 0000028784 00000 n 0000024862 00000 n 0000027611 00000 n 0000028904 00000 n 0000029477 00000 n 0000029726 00000 n 0000044902 00000 n 0000045153 00000 n 0000052003 00000 n 0000052257 00000 n 0000058535 00000 n 0000058785 00000 n 0000062995 00000 n trailer << /Size 99 /Root 89 0 R /Info 98 0 R /ID [ <532807e1f403b4fd534de7ff5bd4d3ff> <532807e1f403b4fd534de7ff5bd4d3ff> ] >> startxref 63158 %%EOF bioframe-0.4.1/docs/figs/bioframe-logo.png0000644000175000017500000020622714420777331017757 0ustar nileshnilesh‰PNG  IHDRŇw„˘ pHYs.#.#xĄ?v IDATxÚěÝy|Sç™/đG:ÚWËH–±16Ř8€c704,iX4H?Li&i¦3˝™6“™ćŢ6i¦·™&ťvÚ¦CÚÜÉ˝mÓN&!!˛‘„˛„°Â’ŘĆ/€°‘ŮŘZ,ëČ’u˙xAqĽË‹tŽôű~ćó™FŮÇď{ôę=Ďyßç‘„ĂaH%R4¤űˇPmÉM"‘HĄRŠQHAŚ@ĘA`RŽlčKŹ' ˘iĆĂd2ˇ=ŃžhĎ”Ce2˝^ůĎ®®.´ Úí‰ö´'ÚSěÔjŤJĄd˙; z<´ Úí‰ö´'ÚSěôz˝L68:L`4 ňÚk˘ =ŃžhĎÔĆD{˘=Ńž€öD{&…BAtýF4ÜF{˘=ŃžhO@{˘=“€®?<ôElĄ€”Ŕ(¤F ĺ 0 )QH9Ś@ĘA`RŁr€”Ŕ(¤F ĺ 0 )QH9Ś@ĘA`RŁr€”Ŕ(¤F ĺ 0 )QH9Ś@ĘA`RŁr€”Ŕ(¤F ĺ 0 )QH9Ś@ĘA`RŁr€”Ŕ(¤F ĺ 0 )QH9Ś@ĘA`RŁr€”Ŕ(¤F ĺ 0 )QH9Ś@ĘA`RŁr€”Ŕ(¤F ĺ 0 )QH9Ś@ĘA`RŁr€”Ŕ(Ŕ0d§T(Đ VŞd‡vH>Ś C.“ ´č Q€d„Ŕ(Ŕ0J…BˇPČdhŠT¦T(är™JĄBS$F†ˇP(H§×Ł)R[5ŚŁI Q€aČĺ2"R«ŐČ/™˛2‹ŹËdr´@ňA`’'‘¦›Lh•Śă$’ë·ĚZ­ ’š"ë…Y”’ ŁĚtzťZ­ć$¸÷ŘČer"ňy"Ňj5¸„RŚăÔjuä2@¶Y€ä‘’'‘jµ"Ňéuh ‰B© ˘jgmłÇ&‘H•*%Ú$Őčt:"ŞrÖ\ń´Ç!0 l€¤ĄV«Ůnh¬řX±Ě’ťľ«5Ž‹t٤N"ŐhÔDTí¨ďěqIĐ*É3HZlˇ¨?ČcĹÄŠU!ďěąVëhęć]Ç) 4KJŤ‰´Ůcku;ľ«DÔßňőxŃ2ÉQHNµšă¸nŢuřĘqŠ?'‘˛Ŕ¨Óç&˘rű9"â8ÜA§–]ôdK9uúş‰H*•\<_–H&Ö 9±HčÉÖŇČŠ?µR…fŃÉeDÔě±±˙¬q\ňy“)˝/ŔŁqRAä±J«ŰIDŢGDééćÖ¶6"ÂşQ€¤Ŕ($!µRĹⵎ&":ŮZJDjŤ-َR©ČÁ2KB}ŐÎZ"ňőxĎU–ˇ}’^ä±Jä%ç¤ŇÇŹ^<_Ř(@r¦¤š^Ż×ő‡Ń4í‰öD{&1‰ô اŇŃ&hO´'ÚĐžhO`%ĹŮh"j¸ÖęźÎ«Őj Çő‡úŁĽ‘m ľ~ż$—ˇ=ÇI¤í©ĽyĄÜ~~~fÉܢâ7ŢxcJú”y_ş홬×'ÇI>VaÜĽ›ô¤V+Ďť;§V©tZÍW} ëí)"l+Ŕŕ‡yI&CcMd»Ł=ŃžhĎ”!WČŃhO´'ÚĐžhO!H$R©Ôäk—Ř+P_™˝rÉ´…~ŻV«ýĎA{NlżĄ=Ąś”:{®E^ńđľ*gM±ąhö-‡ľeN‘N§G{&ĺő)ĺ8"Şv\řŻť=×ČLŤ¦éJ‹ZĄšžc[Ş{˝ž„_řĽŁ=a\Ł=š’íR*%˘2{e Ôy±ĆŮHD‘Ľ^Z nŠU^ЍvÔцM›«Ď_|ďť7Oź<†&JÂŃC"‘ůüűŁľ«D”73źzýţ+-­÷ď9[YŽÁ@Ô€d3l\­ř#˘ÎNűKţ#Z FĽ~$Py)˘ŐílöŘt:ý‚’yg*Ď˝żgoeE)š+){Đc"rô¸hÖ¬Ůě?Űí'Nť>~ü“ł•ĺh4ńf­ßχBA4ÍxhµZ´'Úí™ 8N¦R)#˙ŮÓÓ6A{˘=Ńž€öD{&śZ­ć8®ľ»aP\N¶ś-6 Ćęóu5Ugóf }»BˇËŻoW …úýţ^\că!ĆöTŞTJ…"Ryi ÇĹ\}Ζűřá? ‡ĂűöČĘÎŃjőhĎä¸>^§ÓŃŤćB}ţ ŻÓéÓŚ†n—›ýźZĄššY[É‚žOWQQQůŕCßF»Á@,1°$ý@ŐŽ K¦-\łjĺď˙ôŐśżĐpé˛RˇĽen1šNÔ$R©Ô4Âc"˛ąÚrő9ł .7]‰ĽŘép**J•Ě_fFĆ“Hĺ2ąT*eÓ( QvVÖMßĺň˝ťŁůůF…!MiĽ1K“˛• lŹÝ™†BˇP(ä÷űCˇP0Bď@Ę~;łĹłĺí5#Óęvvó.kfÖ‚’y»Ţ|‡đ¶ćË9ą3Đzđů…ÄqěRö_ĎŘ/ĚĎĽmńťËßŘőŰO‡?9y2'w Š»ße2"jöŘFz¬âxČb± |Ńăńz<^•R™5µ­„hč"t2Fb¸×R( ĄBˇPČĺ2‰dúu>‡?äwô8ýÁ °…|00¨¤i¬śÜ˘5‘Q©3(ô*™Â˘5«8•Uc3eŃR* >Bá~ô¤ť^'‘H›=¶č߼'[K×Í\ůµő÷–Vüś^Ýţú°{ę!5) 6©é€@¨Żľ»ˇŘ\tď=k·m߇‰¨®ľńĐÁńÜSN&“ŃÉ–‹)±ě 3óg ý'?Ď·µ·ź8~{ęDöÁGD%9NˇP¨T*…B1h;<[űéčqşxo§ďŞ›÷Ťôlyüˇ>¶fˇ•Ż\`1Ó ÍŁRgŃš­ę •L©P( éBˇP đűý@‹I ‰q©V«ˇ¨q ¦ÖŃ´|:_0köŚĽé—›®¸\.쩇ąŚíŁŹ¶Ĺ‡UńZ´ä®ťoíćyž˝=ő˘ĆŠŃwř#­¦‹ n¦{ęDyË/ö?@ŁV¬$“}}}ě!aŰZË^d_«)XDWŃ(/žn— ] ŔŰ*…BˇÖ¨‡C›=6›«Íá»Úé랼0hLXĚtŕNŻÔdhŇ,š)9Ƭ\}ÇqjµZ­VŰnĎűů^ŢŹŽNúáH"‘J\Ŕł-,´YÓˇXjŽˇŻłÔĆL°/Őč @J•’-Ť×(łWL‰=őÁ[ť=עăá}u]Ť…¦üĺ_]ĽďĂĂěEě©5v_n?ý°źĂޱLÍ´¶Ű;_©˝§žÍj8Ž‹Ě?J ćźă˝3ťĐöDüaX˘ŚĘĺňAy÷đĹ9 °'NĆ4ăŕ(F @¨ ‚«8 rśJ©bńĐĎAţЧĹćnłąŰÇą>n<ĽĎĂű»ÚN·V‘YcČ1LÍ1dM×OSÉ”Z­–bü~oo/ďçÝH‘ᾀĆ)’Úř‹3ě`8Ü™Ţř@¸aSHVv©Ćqq4JÉxş±§ľ§Ç#Ŕ‡ż9ˇ,ZĺĄr{Uˇ)ĺŞ5‘Ŕ(öÔ‹»yďć]µŽ¦čGşx·UcIO3 Ś^ż}HŐ=őCg5©óωĽJŃž“4ć'ÇźQ嬩vÔ'ę·çč§űşQĄ3( ěłT€ĂŢšĽÍ¨ ’"WQ†fĘŠÜĄhvAڧRŞ4Z­\ţůŘě±5\kQ04 §Ďíôą+ě‰Č¬1rgĄĎ´j,*•JĄR"¤řRKy …Öăš)JniwŽńóúrąúśwA˛/LoÜý±i čëë …Bx “MŁVs7š¸Ćő‰÷ÓD^y¸\Őç*Îť;÷ż~đš4e±‘í¦ëŽ[ÝÎźUń*­87đź°§^t$R)ťl-˝é‘ť=ÎBSţôéÓj.ÔŤxL ď©Ç<Ó]ń’ăĎpů˝ŁŮ/3IbýŐŮ3©8…E3%r›Án0PA%eŻ"?N"UŞ”:ť>rWďňőÝ 6w{õÖ@¨/)˙j§ĎíôUťn­Ň+59†ŚÓŚBSţŔ©ŻÇ‡]öŽ Ĺ{|¤“a‹Đ1k J™‚n<'ÎĐš•2KvĚF×Ďűú‚ˇP0 Ü•0QŘrŃŃÄ5"XšČŐkÖLÉöÔ_j¬¶ľ $˝›V^¨Ü~öFŻ/F±§^\$‰„Č䮵Ţô`‡ď*Í˝µ8˛Rx¨TŢSŹy,Š/%ň~ٱ«mŕm« ÂJN糆VPéë |oo/Ö\Śsľ«ŐjYÎMşm¸ÖĚ>’)ÂĂűjMµŽ&÷IAzöŔi8Üďóőz˝^,Z€›Š,«z”m0łÇŔZłQi°j,rąŚEKŻ?&˘đuhI˙—{LËE#߆CÓD˛=ő˙ůź/üöwĎ{˝ĄB…ćM)Ł©Ľ1¨ŠWäuě©¶\´Ě^9šµťľn"Ęšš}Ó#Q§@ëTČI7˘Ą*¨°Ű ­V÷űý|ŻŻ »Ä®éRýŢ}ű6ă~4Ep©Z­Öéu‘zJu]Ť ]—“x}č(GžH„´Č2óVËl«ĆÂňŻÇ‹q0 ĂذPéŔgNfŤ!C›žˇ™bŃšső9b«t$D”aÉx”†1cËE«b}#KąaÓćA‹ż®uw—}zâä©Sß{äűhŢ”2šĘK±*^Kß100=őÂ'•J%DDtĆ>Ş„Ő_µffŤć`Ô©Lw…QATA%Ű`žeĘÍ1Lłj,¬Ć4‹öôô` ©Hőôú:::Ń“>ŇqśÁ`P©”‰”şyWµăBŤłQ eĺ"ę«°_¬°_4k ·O-š•V R(Ó§¤‡B!ŻÇŰŰŰ‹l€ƉĄ<®Ą&öźŮsŽ~ęЧż<@âc ŰcĺňŁŚk Ôęv6{ląúśˇi"˙ôŇ+~žżt©ÎhBUĺTš7Ž®ňRÄű…%Ó®^łţý=űş]sÓcO˝Ą’Şś5Ł_*ÁŤAË„‡żŁOí:ő€é®(HŃ"Ňęvm.µę˝?Vľ~¨ůx‡Ď!‘HŐjµŮlδZu-'A‡ŠO§ĂůćÎ×Ń“w§4%=ÝjµŞŐj‰DÚě±˝[·÷Ď•ožn­BT4Jäâ@ă©+wj>ŢÍ»8Ž3¦­™F `@†‰ťŘśn­złöŔ|úç7Îď.łW°ąŤJĄ2™L™S3§¤§«•ŘĹ 7Ç’3ŚrěP¬Šý–űôşźç‰čx‘|=^´sŠ`?=®QőU9khŲ;‡ţëŔ=ők«ĐĽB#ă8ą\ND'[ÎŽţ]nŢMDfSÚ(ŹŹě©żxľmî n@‘‡÷±…]zĄ¦Čś«evšŇhL3Śzd>¨Ş®íčřťŐš5íH©P †HŃŹ*gÍÉ–ł†Ž^diľ)ëËS‹ső9:ťN«ŐôôřĽ/–qdX­ng«ŰIT®Wj L9,­G$ń±ßĎ{=ž@0†‚aă¬„ŕ–‹2µŽ¦EŮ.kfÖ°ëż®uwW꫍¨¨|đˇoٵSaIDÝĽ+¦ ;«âµęîŻíŮw0RĹkšóş]nl¨­VËîbşMpů˝D4=wú ećQ°=őyyą%htŔtWh 4¨yxßéÖŞÓ­U‘ČË ŘŰŰëęv!r!˘±ÉÖÚ†vŔm$$ęňeöĘ3ö ©śEtś»Ú»Ú˛ ćEÓnGx0 Cć6‘§ż‘)Ë zzz|˝˝h%eŤiěPĺös+r—Ţwߦ­Ď=?ô_Yťz[óĺśÜhđäĆ2Ńwúb«©íá}loőÂů%ÇNśön—»«Űĺtt-V´łPş["Őj5DTí¨ŹéŤ6O;ĺÍĚŹá"ńx=/K6 €é® `SdňD.ެ=đrŐ.¶ŹC­Vcß«č`Műř) ‹Ůl6›Y˘±OZ>}±rÇéÖ*DEÇŻŐí|łöŔ+_ŻrÖH$RťN‡A0 äbŇW«Ţ{ąjW™˝Âä …ÉdĘ´Z5j5`d§V«)Ćm°CŐ8.ů|IÉ‚©™Öáî!y"zu;†…äÇž¬wö8c}ăÉ–r"Ú°ńľ‘`{ęŹ>„FŽH®-V-pôX¦…YłfŹa‚fLw…sʤÂ2ţ±ňőş®Fą°dXśK,ŘšöţĎď0<Ťíľ(ÝdBH4qŠŤ§Ţ8ż»Ůc‹ 2µ-aR§7G›Ë_¬Ü±÷ŇG,ń±ÉdÂł`XvŃX·Áő•Ů+‰hŐŠ»F:ĆĺrŮš/ŁÍ“K7ÉÖƤŐíěć]Ö̬%ó˘v®şůj4€čuDt¦˝j #†?ČëtzV¸)†ą´˝î f“IČĂűŢŻ;Â"ÇĄOI·Í2ŽCËbl˛µ¶ˇN\L8‰Ôh0°ňJD„h°ŐŁ‘AĆd2eX2” ě  Č0‰ˇľZGÓź+ß|·n/žÍ@d Ń¨)öm°ĂŞq6Ńę5ëÓŚ†‘ŽŮąkš=ą±ŁŁŻĽ4ĐÉÖR"şsٲhCY pęÄq´łhÔjŽăşyWc×XöwôvQÖÔ# `ş+4Ś&-ąŘ{é#¶ő,wâ5íŁ§VŞ,–Čj‘?VľŽhü™nŢ%—ËĚfsşÉ„Ő[€&K„g3@D:˝nlŰ`‡ĺá},'Ő çŹtŚÓy Ëý’B&ŁŘ+/EÔ:šXB†yÓŁvęłR4µ°ôÄ,ś=Ž'Í.,őŤÎ«WŃř€é® ŕ6ÉŐ:š^¬ÜÁvÖ›L¦)éé[ִʆŚă,fsú”tŽăš=¶7Îď>Đx Eç2Čl«ÚýI˧ţ ϲë4Z4 `@†É†g3@D¬j Ëí8!ĘŰkhæÍ#mŹ SřőíŻˇĺ“vz)—Sě•—b –.ľ#Ę1Ź÷ÄńŁhíÄR*Çů|­Łil?ˇÓw•,K¬olkCŃŔtWX0}L~PßűuGŘŇQ•J5ĹlfĎBAŕcÖ´GÁöÎłt˘{/}ôfí Y*cdN·V˝Rý6ŰÜjL3"}`@†ř`›ë>›AjőÔˇQ«%i‡Ď1s§ĎÝě±étú…óKF:¦ńŇŚ&­1W^ŠMB"ި¨Dk'[.ĘŮcăâ˝Dd±fĆúFĚ(Ó]ˇA`4…î^©~»ĂçËef‹· ˘€5íĂLXe˛ KFdďü‹•;Ćü&–‡÷˝Y{ŕÝş˝,}‡Őj5 hH¦ůŤíŰĐÂ4đŮLú”t,M,®Qn?;±?–•a‰R[Ľ?~÷mdMNc®Ľ4p:tÓ„ DdkmC˘ÉÄŢP°gěĆüCŘ#™’’±ľ±…éńÁ¬1…xxßÎÚ˝UÎvŰ€”ŁÂ‡5í KF†\.ëć]lď<҉ McWŰ‹•;ĘěD¤Óé°t’i@®żăü{“TjˇŘY»—U«7›ÍHâ!>#O$6ŠZLâY.ĘÖrĆAą˝ŠV®Z3Ňa ďy˙=tM2ĚB• š ĘKŢÇ2ܱp~”Ăl­mX<jĄŠă¸nŢ5±·.ż—¦çĆĽb´µ »éÓ]ˇ@ ®;ŇTĆ–qĄĹţĽ ⏒졍F­¶dd°lčŰŞvOHBt&V­ţ“–O‰Čd2!H!"±QV‹ "F,»h]WcÜrě´şť>‡53kAÉĽ‘Ž©t1‰NGDeöĘ _~őůĽN§ŹRĄmř[oBáB»Př‚Ć®¶H˛Q´L6N"ť’ž)µ„¤˘)-ŕęć]¬(ŠD"A›Ŕ¤Şu4j>ND¦ô4<‘ŮEP•±Úqî»oÓHřz{KO}‚>ŻÉ¨Ľ4pĚąilť>-EĹŃÉ"ă8•JE7ĘaM8vĺdMµĆúĆ‹µHÄ ŚÂ`GšĘXÂh0 5`ňpéłYĄRů‡D"•rRÄF`˛EjNÓŚh ácqŤ“­Ą‰ú’ŞvÖŃ˝÷¬ék]](,.^¬ň’;ŕ™¤ź_ă¸tÓŘ:ůřúb2n:n¬7?;Iż˘Ów•,K¬oěęęBŁ0ŚV·łĘYŁÓéŰŰmh Ś ‹Švř/Vî@TčFl´®«‘€8Ś9űʰBLH6*p‘ĺ˘ Ü\Rn?OD«×¬ŹŘzëťwĐYbťšruö\›Ľ禱u"ňxĽŘ[=áX1úş®ĆIZ.JD.ŢKDkf¬oljjF2+ÁđŽ4•ÍJ+¸í¶ůżú÷{đo˙ 6őÝY»7ą Đë•R“ˇ™˘ä*™Â˘5ł×ső97}o7ďrÜDÄť=N"rř®úCGŹ+Y-ę{żîČÝůţbs‘”“ö‡úńy€ÉăôąO´~¶"w©Áh8ˇ0ĆŇjµ”¸ĺ˘Ś‡÷U9kŠÍEw,śżďĂĂĂÓaďôőx5ZşLtSSťÔGőĺöóó3KVŻYżó­Ý<ĎŹtŘÁŹÝ2·ť2ť«Őj¨Ü>‰g–⣤dA¬oě@aza@`†ő±»…o˙Ýß˙đ‰ýęWżF›Ŕ„ĚN’8*ŞWj24iÍ” ­Ů¨4X5–ńü´4Ą1My}gˇ)ŕ?ů|Go§ŁÇé⽝ľ« I¸6y4ž""UČd`$ö‹éyąúµFííéARˇP(ţ ßp­5±gRí¨/6mŘ´ůđÇ'† l…)üúö׾óđwŃk"»–˨Ů3ąűä<ĽŻ®«±Đ”żü«‹GŠ­‘­µÍéč0[¬č—‰@TJ‰DÚě±Mölą›wĄ)ŤiFC·+†đz ŔÓA|  ĘÝÂí™ó¬™YK-|ňIÄFaĽ’2*jÖr Ss Ys$ŽŃaokkoutŘGOŹĎÖz=©˙ĺ¦+7ýÉiFÉ”FD•júôiD4÷Öb"*)Y ’)ső9—ťvř6w‹ÍÝns;’ a#±QłĹět8€ÉłżńřC·~Ýh4v]»*ÇžzáaŮEËě• ˙vku;›=¶\}ÎĽą·”VśöĆËMč2ŃaőĘYýśIUnŻ*4ĺoŘ´9J`”öíÝűŕCßFżLŕRă¸8ŮżČp§)ŤŮS3c Ś‘­ů2Ö$Łcˇŕäml©úů`@ډ÷]:ňÍ9ďŕˇOË*…ńH¦¨¨‚“¤gfL×OSÉ”‘×˝^O}ý…ÚęŞ+WZ®u»Úíăů-Ý.wdjUsˇŽ"ÓhĄR™5Őš“ť•——;3VÁ¬ŮVŤĹޱĚĎ,ˇAŇú®fQŻ$ElâĂĂűصZÝb»’™ť6Đ®LĆ–‹ž±_ÂůśiŻĘŐçlą˙ŇŠ'†= żż˙Ý·wmúú_ŁďÄt?,“ŃŤú9“ŞŐíěđ9¬:Ë‚’y#ĹÖ‰¨şö ‰óqďH®o¨ĎĚůčŕ>ąB9Ĺ’aA tz=U;k2shějëć]Ö̬˘Ů…#…?ÎTžC`T\är9MfĺĄĘíg×Í\ůµő÷F ŚŃáCďąwşfĽNOńJOěđ]%˘ĽÜĽXßŘÖnGOa‹énÂ!0:vluŘh?®:}Á¬ŮDÄöŔŇ«Ż4{l6W[CWło3N¶”çÎɉ$TBlb%ö¨([ZdąeŕgöıĂ5µµçŞkă ŤŽĹIŮ’ŇyÓż|ŰĽE‹ď´ff›‹ŠÍE,BZŢ^#ş@ĆĆSĄ!Wźc¶;ěť(Ť2I JÍ’i Ńčń1`Ź{YŤ8>čô]i¸ČlçÉ'ôđ˙x±QAÜĄpśZ­¦á…r©´–®›ąrÍşµ#F@é©Oܱ=(–ij*/EÔ:še» fÍž‘7=JbĄĘsUŚŽ“RˇËeqKOĚ Ó[§fĹüF— ť…y,$~Ę&łúú [ź{>ć1Z©ĚšjeIóró g[3łXşŔ%Ó 0~1hŃh8FlbšnŠ7*jÖnźZ4+­ ˛_ţĂý”—W4\nŽRN4áXôíÝ{ŇŚ†y·Î]ľbeÁ¬Ů,BÚás”ŰĎ6\kQGĽwńđ7殳j,SĚć«N'bŁ“§ĂŢöŃÁý©ÜÎ+kŹł4ÇĚĐÇ˝kıh©ÍŐfó´‹%NÚęv˛šă÷Ţłö7[·>ú˝ďNËťa!Á÷şU9k<ĽO8gŐp­Ő?ť/)Y%°µ˙ŕ!FEs3—ĘKU;.,™¶pÍŞ•ż˙ÓK#ăńxO?şxé]č q qKOĚnŢŮ7cL"óXLwů]€&3¶–n$ $"ĄRY0#wöěÂ+ĽXü"ůPF-ŁXąj [ʆŘ(Śž1ÍČžÖî®;(˘`Ü\KŢŔ%˘ĄÇŽ9W{QČńСş]îc'N;qzj¦uŃW¬şűkVťeÝĚ•ţé|µł¶Ü~^P·š# „úvÖîEl4ÚÚ[Ł—€ďńafeâŘă^‹Ĺb±f-×ásÔ_»$Ěm1_śíś-6­^łţý=ű^řżü‡?ÄşŃâ$R¶\ôdËYˇ}+•Ů+—L[¸tń#F˝==¶ćË9­‹AÜ*/Eś±_źyŰâ;—ż±ë­(ŹNťţѱÇ88.ţé‰;|«Ć}-𰜎łĹŠ^Ă<9h  Žçůš u5ęŢŢ˝gPübQ¶ëdkiÂĂŁ­n'K¨É‡˙ĺÉý±Q*ÝdR«Őţ żăü{˘ÁŃ\Kޢ쬾Ľ×ë9xŕ/‡ŽČ~ů1k·wĽ˝{ĎŰ»÷,(™wç˛e%% ćg–ĚĎ,©rÖśl9+ü®a±ŃooLSŤiĆk]]řpD¤LÜŔmĹiFCöÔĚŮł ófćG/™¶°›w5t]ŞvÔ 3Bęá}‘EŁŰ¶ď|ö?ţă ÄFG§×QłÇ&Ŕ/©gă’i Y }¤ÂÎ]»~řřŹĐŹ"¸ŽW女šúî†ČP3ŇaçŐ‹µU(Ë36ląh}wC<—etú:­‹Ů”k`ÔÖÜ„Ŕ(@bIŃŚ_|÷{ß{ţąg;ěmiJăş™+,Ţm0'öÄXÖ꯭ż7ňJ8ü/ObÂ#ßŇh´‘¨¨(R[εä}ç¶Íëf®LS;ěmĎ?÷ě÷{ěíÝ{Ĩ´âÜÖçžôŃG>Ü˙›‹ţá¶űďÎżCŻÔü̡ľÝuüA^­V§›Lř|Y·ËÍ÷n}îů|ŕ—żřŮ»oď`łšů™%[ü×okÉSprˇť9[ś¸zÍú4Ł~łukKóethüq©V«!˘“-ĺ<=C'˘Ëîé‡óŞŻÇ‹®>Vy‰%ŚóPłhÉ]JĄ2Ęa?ŽHzâ8Ż7wů˝Dd¶Ä|ŰŢÚ†Ýô †Ŕ¨pă?xü µj,ßśłń®ÜŰx>µŽ&/5{jć珳úĂá˙Ë“č,JŁVÓŚDtřĘqáGE‡†DđřĄçĵq>¦Ĺ¶í;EuúÜ;ÎżGDjµZŁVăS ,HúÇźxüńĽűöŻ×cŐXÖÍ\ůđm[ľ’],¨đč €W8~á÷¸ęčD'Ć™Z­–H¤Í[«[ ©ĐXŔeŐÝ_‹Řz}űkčJ‹T^Šó•ćá}u]Ť:ť~ůWG9¬ńR“ÓŃnŠ•N§ŁD¤'¶yÚé‹ů¸G©­˝˝XŚ  Źnő%"šźYň`ń†F.ŞťµD´jĹ]_ ő÷?őÔOĐS0B&KK3ѡćăÉ“;’lyóÜ»‡†DSˇ›††GşőëB R âôą÷^úL&“RˇŔg @\n‹©¨(UÉ”K¦-ZxtPŔ+˙fëVÄFăŚíŁ?Ó^%Ř3ôđľfŹ-z`«ˇËŤ…ŽU^ęđ9â˙«ËíUD´rŐšč‡íŰ»ÝN"ŐhÔDTí¨ŹóŻvó>"š{ý%·ŰŽH,FE`߇‡üléčC·~ݬ1$ä4Ęíçi¸M@ŕç?˙ş "ÓłĹ,‘H«ś5ö‹‚=O'ż;˙ŽoÎŮ«Ďńz=)(=qě0 R|«xcľ)K°'\ëh*łWŃ”)é2ŽĂ'@ŚXZʧžúq$<*ś‘'đš7÷öJ8ţÄFăHŁVs×Í»»˝˝”móŹŘ Sx×ŰѡB&—ɉ¨Ó—€O÷ŔQ«khDN†čôşD­7÷đ>×éôŃ3$ ĺp^EÇ$ŁâĐnďřńOžb÷[ćlHHltč­Âç˙äńnýÍłč& ˘)fłD"íđ94žěI曲ľmK±ą¶żúŇ÷{,C˘u»Üż˙ÓKO=őă†ú iJă¦Âu÷.ěŇŃŁÍĺu]Ť‰4=} 'Á·€X]nşÂÂŁByjiH^őßţîwOÄ«šÂ˛Ű Ůh[•çŞĐˇB¦P*¨łçZB~;»Čď\¶,Ę1@ŕđˇč©Ń»‘]41é‰;z;‰(kjĚ•”.Öb¬H$ÜRŠĎó[ź{ţĂý$06ĘnćĎź?ôź:ťÎ7wŕ©xŞK7™ärY7ďÚY+ĐŤ?zĄfóÜ»7®SÉ”ĄŹ>úČľ'k.Ń1)žţŮĎ_üĂ ^Ż§Đ”˙đm[»ttă'>‡\.c©l iFžooLÔÎaóŞ÷żúŐŻťljĄŠ-x*fhmŇABýýŔVhá’]_1šőzl¨))Y0#oz”Ă^˝ČzóDĄ'vô8‰(';ćůłó*Ť$Ł"łműÎHl4ţůF®µŃâ;—łj­”Uś=zčCôQ*ĎEŘCÚÝuˇ>žaľ)ëˇ[żŮ;żőąç“©âüD9vâô“Oţ­OěŇŃ@¨o_ăV¤^§Ń˘×’cäaKG·ĚŮ0×’—ŘóayŐ}eÁŔůżuëVÄF'Ë.ZnÇ6ŽZGS7ď*5;J`ëÄ©OŃ­‚%—Ë(î•—ľp÷dŻ$˘Ą‹ďrŚÇă=qü(:k4ľŢÜĹ{‰(//7Ö7vuuˇűQńٶ}'‹Yl,\˙`D]W#Íš9üËţ‡lÍČ4źŠ"—ö^úH€ečYFQ¶PôıĂŘ;]·Ë˝őąçźîŮČŇŃlYh'éôą_9NDĆ4ŁB&CŻ$ÁČóôĎ~Ξţ®›ą2±±QVµcŃâ;˝îíéٶítÖ$Q* …Âäk—ÄrÎŐŽ D´fŐĘ‘đőöVť=ÎćőF ŞĽqĆ~VŻY?ě˘“ŠŠJô×h:4áëÍŮęc‹53Ö7655ŁQQzá˙ţŐbş+÷ö8˙ꆮË4Ânz" ‡Ăúóa1EŞá$Ň4S:+¸$Ŕ˝ofŤá[Ĺ‹ÍElˇčď˙ôöÎŹFiĹąČŇŃoÎŮř•ěbˇťa¤S8B˛Q€ä°műÎ˙đ%66ęôąYúČ»é™ËMÍŻm{=5ŘjŻ2{Ą0÷ť ëŚý‚?ČŹ´›Š9đ!rD Q+/EB}UÎ"Z±ěÎ(‡ŮZŰr”{V‘(lőqIÉ‚XßŘáp˘w’˘ÄóülÝJDó3K⼒+˛›~¤r{| đňż„>J)Ć4Ł\.ëđ9Ž4• íÜćZň¶Ě٦46Ô_xňÉaˇhLŘŇŃíŻľDDK¦-Ü<÷nˇm«?Ú\ŢásdX§ÖÖ`=@’8vâôóĎ=K‰ŽŤ6t]˘!»é™ŞšZělťp2ŽcËEŮ:±„úę»čŢ{ÖŽtŚĂyŞ(±•—"N¶ś%˘Uw-z)óĎJËĐeQDÖ›'|éć]D} đ0#I €ĄE „Ŕ¨XµŰ;X´byîâ8Ď˙š=6"*1bň”f[ nR‡Z©R«Őţ żŻńĐ–xܝǺ™+U2ĺ‡ű?xúg?GFѱŮ÷áá§žú±×ëÉŐçˇ.ĘŕÓk<âňËW®{ăŐ—ŃYɡ´â[7ş|úŇDŤ9ő]ÍDT<ď¶a˙uĎ_ö!Ô5±ŘjŻúî-eX`kőšőQ[ůË_ĐĹB“ŘĘKŢ×ě±étú…óK˘V]{Ţéč@ŻŤD«ŐQµł6á+ŕ&˘ě©1ď¦Çw @!0*b‡?>Á6ÔÇy=…ÍŐFDłgF9ć/űŕË;%ć”gJO#˘­ź *µ¨‚“ož{wdűü¶í;ŃYăqąéĘŔş(‚ŞVI6úÝü§ßný : 9;qšĺÝXµę­n'«M?ěÂźţpřż_~ |&p:Áę7˛ ُxxKÁżü«#.Vhj¶ájš„W^Š8ŮRND6Ţý°#‡ˇ×˘ ĺöó ?v§<}ú´XßŘŇŇ‚®HFEŚçůŻżFD‹˛Äó÷Ú<í4ň & mßľ}”ôL&“D"­ëj¬°_ÎY™5†oĚ]ÇŞĎ?óĚÓŘ>?!ş]î_ţú7,N±©p]ÂkFTëhŞëjÔéôóŔý?ý×§ĐYÉaŰöťěyĚšü% 9+žąŕdŹĎ÷ć®č¦ Á–‹V9k<ĽOŚç_nŻ"˘ ›6Źt@»vâjVy‰ízN¸V·“%5^P2/ĘaçŞk^ţâđ]%˘ĽÜçÉmívt%@˘ 0*nĄç:ěmiJc<p±'«łfGO…ÓÖndžúä¦ÓhY6źýŤźç¬ĚĂ–9¬KCý…ď?öX»+—' Ďó۶ďdI<ÖÍ\˙âoQěoüÄäKJüŐü’§úŻč,€äđ»ç˙Ź×ë)4ĺÇ9Ł:cs·ŃśąsF: öBÝąJ$ţ/N"U©”DTŢ^#Ň?ˇŐíd»ˇŁ¶ęęĐ×ÂqŁň’P*Ţśl-%˘;—-‹rL 8uâ8ún¤D ëÍ]Ľ—¬Scľ7wą\čM€D‘ˇ Äî˝Ýď<üÝG‹,·4vµĹí—6{ląúś¬©ÖËMW˘¶o˙‡%_žŻŃęĐMI8vpśÁ¨'˘}— 'X¶ÁĽiÖZ•LyâŘá—¶mOŽęóz˝.Í`°Z3ÔjµZĄš6íúŢś[ćŢĽLĽÓŃqŐŃID>źŻµ­ŤÚÚŰ| Ăá c;ź}v:śß˙_OĚĎ,QĘO ˇ•ˇľ}—m*\w˙ť«®ýůżýě'O!< zÝ.÷믽ňđw];sŮź+ߌóo·ąŰ‰čK·ÝN#çcyó­w fÍĆTggvaAôŔh_0ř—=ďoţĆýč¦äŮDĎ|ts-yëf®$˘÷ ޤ˘z˝.ĂbΚ:5;+ËlÉČÉť1žźf¶XÍ+űßRúűzĽ¶ćË---׺ş:::cšŤ•Vśűĺ/~öOß˙źĹć""Hl´±«­®«±Đ”˙÷˙í­Ď=˙«_ţâÉůßř¨ݱ§7lĽĎš™5×’WëhŠ˙ý­53K©TŽô¤-Đ×÷úëŰżó?ţ=56śDŞŐjčFšEńŞu4-ĘvY3łŠfÖ\¨öĘłUŚ „\.§ůÁ„ ę+łW.™¶pŐŠ»˘Lb=oE٧%ó˘#8€třVŤeFŢôčwĘĂ|é8:"óv'lĄ=žçO;LD¦ś¸ýŇŃ'O);S‰*LÉG­T m˝¨Ł˘ó”ů_ľmËćŻ?ţĂüä'˙úđ?ň˝Ő+–ĺĎĚS(7}{Í…şgžyÚëő›‹îÎżC -ŮP_4»°«Űőj1$…„dTgš=6"ĘšíNµľˇęÇL©R˛Ő^B¨3NĺösD´fÝ úü<_zętş°©ŽŁG@›—kśŤD´zÍúa ľEś8y Ý÷ůlV­–H¤>‡ N_'™Mi±ľ‘mó€řĂŠŃD~[-±%ĚňóĽĂyučëeee‹ď\žcČŠ[–<Ą pT{vĽńĆŁ˙üzzj XŐ”ÇĹ$ř[j—g˙UôÝĐűZpÇô{‚ç`2uó.á$""ď«rÖ›‹îX8?ĘlÖÖÚfkľ<·¨ý@ĘíguV.ż—Ě–Sc×74Ś&SL8FĆj1Ź9\ČöŔ˛Ńł««»˝ĂAD…¦|˘#ń9ůČć˛Ńlkm»X[…Q>ič z¶¸#Îw§#‰DEźîYá ×ëu·Ě*řĘWîÔŐ ăw=Hşz­ŻÇ[q¦¬¦¶¶ńŇ0Ý-ŔŘh…ýbAz^®>çžµ«ŢŢ˝§ľńňkŰţűo}źÜÉľ°o›—ü<'•(¬§öů?ß[m2™Đă7ŐÔÔůß#=ëÉŽ×_űţ˙z˘ČrKśżz:}W‰Čb±D?ĚŰÓłűí]±K:Fµšă¸nŢ%Ĺ8Ťf7´·§ÇÖ|Yŕs€äż– «ňRDy{M±ąhæ͇?>%QţŃŁGňÂR4Ě˝µ8ÖĺmííčVĚc‡’Ë8ąězŕ.ÔßĎöD'‰§»ŚŠók@«cqĆH´±Ż/(—˲ ć¸í#)yĘÁŹ!0š2™V«%˘#M‚ŘČ#–¨([úW ć‹î Ńę/˝kńŇ»X„ôÔéOĹ2=Ňtęo‹s6}}ˡ#Çş]óö~p÷şőřüNž4áž{7%ýź©T(Îíčńń·§×ëi¨żĐÓÓsţü…ŢŢŢŽŽÎa«Ăť«˝čőzrő9zĄ&ž6Ř‹5ó¦G~VvŃX±Ő^¬wr¨q6.™¶pőšőďďŮ×íľ–ÔÎ]»~řřŹĐű‰ť•‘*/E8}nVávŢÜ[˘Lk«kĎwtŘgÎĚOń~d·$,…… ¸yÍŠ˝ţ’ŰíÁÇóءô:»Ú‰¨/ĐwµëşlÂ!0š$‚Á>ą\–ˇ™·Ŕ¨?äýÁX4š4ŚiiDTfŻBéŘl9˛^°QQ‹yĘ_YXňĺůbŻY‰Úš/=z´®ˇ1ąZlÔés—Ů+ćg–°*LDtřăăSĚćůu>ÂBŁÓéo+Y@DůłćD^d;cęšššYś”çů“ź]˝f})'n‰čF Â’’›§7 ő÷oőĺżyđoѧ٤T(’ią(Ů ˝bŮťoďŢ3ü—”óšŻÇ+öY¨ ­ňŇ@gÚ«rő9[î ´â‰(‡˙řpŠF• +xPă¸$Ŕq€}»E)Ü7ü7N,)`ˇřR’đ"ĘЦÇí7Ú\mD4»°`”ÇüčşIě"5—N¶$> iÖ6ÍZKDî˙@yEoť;çď EÁý IDATzđ‡Ź˙hńŇ»’éţ''wĆ}ű_ž|rőŠezýőż«ÝŢńë_˙’ŠÍEs-y ?É“-çX¦yÓŮ+oľýn}]->ŢŔvĆÜsď¦G˙ů±ű·ź?úČ÷–.ľăRă%"*HŹëIA¨T*ozpuÍyôÝč±ĺ˘ŐŽ Iöw•·×ŃŞ»ż6Ň5¦đëŰ_Ă@¬ĽŃŘŐÖÍ»¬™YEł ŁvâÔg^oJŻ.ÔétDTfŻT˘ŘŃîţ»ů2>ˇń‡Ŕh’č ö‘AiěÚZŰPž^ěŚiFFÍ%˝RłeΕL)Ěô·ÎťóřđŕCßNâUŇ­nĹęµ?ůÉżŢ{Ď:˝Ütĺůçž%˘u3W&<6ĘŞ0ŃŁ˙řhäĹ?˙×Ë…Ä('wĆ=÷nÚxß7(Wź#ŘűŰţpxű«/ŁżF#˛ÚëŚ=ŮŁl7´N§_8żd¤c/!ö‘0¬Ľ4K.±fÝÚ(ÇđŔ©O>NŮN”qśJĄ""Á Ž'ĺdgĹúĆ+Wšń!?F“D°/织ď*ĺĺćŤţ-űöîEO‰—NŁČ–7'ßX¸J%SVT” -* ‰š-Öą0/˝‹…GuZmiĹą˙đ-źľÔ¬Iđsš űE¶ćbAÉĽČ‹Ď=÷[_Źg1 …űűú‚D”m0 ö$±ht´“ aŻö§“-ĺD´aă}#Đżűö.\ !ŘĘK ×ZŮ®—©™Ń&“{öHŮNdëÍ«ś5‚@®ç§Ž˝0}WW>¤ řjú’Z­Q (ş*prńśę R©TŻńîZ(@D˝>†»…ÚóRIX«ŐŹç÷NĆő)Ň«hB.ˇQ¶§D*ŃiuD´ďŇ‘„˙ánYnŐXę/Ľđ˙ śî¸ý¶âżŢrż^oLÍď’5kďYłöžŁ‡?Ü{ŕŁ÷°zÍú-s6ĽXą#±Ö#Í'6®Űr˙çjźb9žBýýżzö׿Ýú[|©ám 8î ł¦ ů“SąÇÇĐžáp?ĺč§Ć-Ł:9zśąúśŮ…Ł©6ŮďyďťoţÍ·’ăúśĽëG૽ƩŐíŚ<™)ziyĹ·ú»Ô™' śmJ9.×'»öXy)"ę«vÖÎĎ,Yµâ®(+ş]îź]Ľä®Ä¶gBµZMD'[Î ö$;٢ŘóŔ^ąbuob›Üăg˛Ě繡/ʆű¶P)Et‹vL—DŠ‹M łĆ „Ş8#9őɱ ÷Ť«fëd\ź"˝Š&äe{JĄR‰DŇě±Ĺó^tXwĺŢž«Ďńz=żüőobJg>yfäćlܸá¶Q”ćHz_[żé«ËVľ˙î[gĎžůŇ—ľüŤąë^­z/çÓŘŐÖě±ĺfć,˙ęâH"ZŢĎ˙â?ű÷˙5ľÔ„˙Ť&pň'ŁÇcjO‰DBDÚ¸®ő1úł˛ď<ü˝ä¸>'u ňjŻń;ŮZşnćĘ;—-)0 …J?ýä®ĺw§äM©4×§”ăčĆÖ7Á*·źźźY˛zÍúťoíŽ2Ý=xđŁĹKîJl{&j©ëjd5Ž„iô…űqąÝ˘îMĚj’{üLćM4ÂDD¤” ú)ÍáŹŹŁ§ÄÝ‹˛­a 4×’7?ł„žyći!DE•Jĺ[6?ýĚĎŤĐéô÷?ř파Ěk×®Z5–»ó\ţú~ĆM›Áhmł˙é/ łDJŕSťľ`đôÉcč¦QL*Î&ńßXëhTp¨]oďĆŀˏ:}ÝB>Iď«rÖŃňŻ.ŽrŘĺf›ÝŢ–šHą˝JČ'őuó."J3Ć–ZŞŰĺNń˛Z Ŕ(ÄU·Ë]YQŠvŮ0!•Q—‹š5†ĺÓ—ŃóĎ=ŰnO| ť9·ĚznëÖUkîÁ2TF†5Íh  /Rßęv˛"n->9]zčŁýč)q ‡Ă÷úKcHŞţţ$UżÉ¤˘ĘY#äŐ^˘Ě^IDkV­逞_őą \ńçňÂżüŞőD´aÓćč‡íÚńzJő‹Š aŰMąn"2™Ňb}cCý|Hâl­ôÁ`0ÜÍ —Éd2‘NîűąHˇ”Hâ¸vť}ŤaŔÇGŹÝÓ[ä ů¤^ź"˝ŠĆ| ĹÔž )U*JôrQ'_›żŚ•ˇiWZÜ ú‡|`Ţ—ng 8đâ™ŘµŘ±.˧/íěą–Ŕ'[ĘsçälŘ´9˛›žyműެ©ŮłfăKM€ßh˝“J&üóžĘ=>¶öäÔ\ś˙Ř1$UomkďşvM§Ó‹ýúś„ ĆőI úÄy"çťűgě–L[¸řÎĺoěz«Ű5ü—ŕ¶×¶˙â緦Ȕ@ĘI#+›Ór×ŃŰ)ücOvső9Q2ŐQye•ÇăV)Ő)2·TŞ”Dt¦˝Jř§jsµŤ>?ő@—b˝YĆ<6ąç±?“†L.cŹXľđâĐă<ĺŻ2 :qfź …úŻv]›Ŕh1›EQ5«ú|]¬x¦Ő:©×§HŻ˘1_B1µ§Ń`P ŕÁ첼ů¬ŕŇηĽď,fŢ|KŁŐ±ĆW*&“)ňŻűˇNé&“Z­^›ż,ÉFGşµč‡ź˙Ďžxâ ŤV@˙TŽDv?6 ź÷Tîń±µg¦ÂĘqśŔ3ŞŃ[oîXżńëbż>'cKÔ¤bMţ’÷ëâZ@2ę«rÖ›‹î˝gíH%t::••ĺ9ą3’~üÔët‘ĽxÁľ`˘®OŁÁ W(l.ql?Żq\ĚŐçlą˙ŇŠ'˘¶űť7Sd“F­V©UÝĽ«±K=čx(ĆÝ×'®ívńΩ0ŹMâń3iL1Ą\(Ć`+=Ä[ ¨(űí 7Ę>&rąhľ)«Ř\äőzţřâźZTˇPÜ{Ďş‡˙áAĹŃÎŐí …BVŤĺ+Ůʼn˝µ ˘-÷?0čő^żŰ+/Ł›Du÷"Á§%˘ŠłU謡´ZMB&fŤˇĐ”˙Ô.,Źę˘%w Ěs=ČpaÄs.G‚ŻĽQëhęć]Ö̬(™j‰čř‰Ó)Ň}lţÉVq¤eëěąFDÖ©Y±ľ±ŁŁU€8C`Ć(Ű`&˘Š1% ­®©EŠ‚F­ć8®›w%pą¨‚“Żťą‚^핦µ§|˙ź˙ińŇ»pUÄ$îżvő*-™¶ ‰˝µXP2oĐ?]nľ˛˙/`bőř|NGÚaФB"‘vřńźTÜ>µeÇ»R˘‡÷Őu5Ís=PCăe_Ź—G|Čĺ2|ĺĄĘíçčľű6E9†N?šô}§T(är™?Č×:šDqÂl[ĂR6ŮZŰđQ3F!ęѢ`0(Ńf×ä/QÉ”ĄÇ÷<üÖąsyäÍ+.‰1^Ż—ÖÎ\–ŔÓ`—ńťË†9‡#Ç>±5_FOŔÄ*ű űc†™T”Űă]Ś^ŻÔ›‹(MiŚ˙#:V;;J ť0…÷Ľ˙.Ź8qśD"EĺĄÇ%/)Y˝¸ů‘ŹŹĄČÂjš‰E‡ĎADS3cľŔs5€8C` \¬Ĺ3ˇS*ląhĚ曲 Mů^Żçżţëżu÷ŢłîÁ‡ľŤíóăár»űú‚iJc7Ô7\ke·ĂNO_yeěŔÄŞŞĆţĎEö ÄRq{ć"ňz=Dt{fĽż†ZÝÎźC§ÓݲQyłâxËäD$ŠĘKźß4…úę»čŢ{ÖF9Ěăń&÷˝•B&S(ţ Ć.¦Ší.ŢMDӦƽęŔnz€¸B`ŁľˇŤ p,Çsµ#aó'_–»^í•‘ĘąNî (÷ĐŘ>?1SCW7-™¶PŻÔ$ęÖ˘ÚYKD«V Óˇžžžť;w ›`9Ż]Ă—D%Tpň[Ís‰č™gž&˘BS~üż†Ř"١y®#Býý{?ŘŤ‹dŇ/Ą‚ÄRy)‚eŞ]˝f}”LµDtđŁCÉ<€čőDTßÝő‰č´;{śDd¶ÄĽPwĘq†Ŕh}Ůłlâ=®řü:ŁRGDŽűŘŢŢÔÔŚ.2DZ˛K5΄ĺ=X4m^šŇ¨Mô󔇿ó÷·Ě-ĆĹ0!ř@ §§‡Öä/MÔ9”ŰĎÓČE0.\¬C]8XĎ× (ˇÉżś9›%äi·w|¸˙"Z4íKq>‡Ń”Đ)-ŻŔu§{%‘T^Š`™j‰(J¦Z"˛µ¶%ëţëČ] ‹‹ÍÓNDsoŤůn˘­˝X€xB`4ŮÄí1šAˇ'"‡Ă1Ćď d•6¶\´®«1QiôJÍüĚ"zýő¬ăł§<ňČ?ćäÎŔ•0‘3{·'îĎŐç䛲s7Š`,ś_2ěo˝ó–wŔjhDRu˘„&ĽŐ2›Ţyç]":xč(ÍJ+Ppň8źĆMKčřz{KO}‚KeR±ĘK.^|_ô,SíĘUk˘¶oďޤě8ťNGDUÎ%‡eÜĽŹ˛¦fÇüF·X€xB`4I(d2"ęć]qűŤ*™bś?iF…ěúrQÇĹDť[WřîŰ;â_‰>';ë‘GţIE'\(ÜďvyeHHvI/_±rŘ †‚Ű^y= d,´áÉíq}Ă%t™RˇHTrŔą–Ľ4Ą±ˇţÂĺ¦+DÔn﨨(UÉ”E–™q˙öąy ťĂÇŐ2y8‰T"‘ŇŤZáâÂ2ŐZ3ł˘dŞ%˘ş†Ćä{ľËI¤ŤšĘŰĹ·źEr­™YŃÓ ĺp^Ĺg žM–ď NFD®@üľé-Z3]¨{$Oň= «ĐŘ•…˝Ůs®>ÇëőěŮw0ÎżúÖąsýçÇť$^_O(J`¦Ć®6/5{¤ ˇ—›Ż`C=€±ĐF<× eh¦QÓĄ±¬ýtąÝč2¶ĄĚ^˙䀋˛Ń_>x?ňĘţ˝űčöĚyq>“Hžë˙ĎŢ›‡·q]w˙_Ŕ b!(@€HA¤ĹĹI”ÄČZlk·$k±äÚqĽÄŤŰ¦mę6iÓ´}űKŢćmúô×öý5}óÖmgk۱ěŘ’,[«µ‹ZBR”D‘¦ER"Ĺ ‘Xr@‚üýqMZ‘E ;x>Źź<63;sďť™sĎ=ç{”йÝÓÓÖz&LŚP©UZ}m zýL©öń­ŰÂMł`đŘŃ#I6p:˝NˇHiőµ%˘G{lĘeF^‰ŢÁrŚ& üŐÄŤ‚ŔŔ€4é_ ń”8_Ă4őČç˛&{€˝»ß‘$‰g»%Eó^xń+4bJOO€%¶…ü3lişüˇňńřőnJ¨'8E©Áp•€@`’®Řiž#Łdy®)3]4:ť•5WĆţX×pÍéčLŤüE]Îő†Ť[ĂŤţú˝÷č1ŹŤ€«Ďť ×Ď”jóň Ă(Ő¸t%Ů^8Łę˘Ő zýlĘŮł"~áÜĽI9‚äM»SĄŕ ň“#IŤ¦’ćLâ)ql;Šc<Š,9V­Ĺéčc4IYĨ·›OsY3€¦Ć)iE‘xJ|’*jŠgŔ%—Ŕ9K|{ëÍ×y6J^Qžx˝^Č4ęxYuŕâ‚ńŽ©şx‰D "Q*•¤ˇ ĎFg¦™¸]“\–wv9¦íxÉXKzL“çBŐÝŐŢ/TŐřýľl˝Ý¬5pľ*¶3·}ÇSă Ž`äÍ7^§'=¨ŐjÝ}·÷.:†¤ʬ t ŕÜůäQb;+g;*÷/>gnn¤'¶´PÄ(AđŁÉ€ R))˝’‡›'‹ém]onśâďxJ’ŞMĹč¦4Xť„»ßb yE9#{Đ(“‰XĽ¸,Ě1ďďűFŠ âÎŕÝ|“aE•ŔÝÓ;ąÓ=Ď´/¦Ě#K¸h‰%ăhňH’täЇĎ*ć|U^w«ŻM§ÓĎ/zpĽcšo´Đ“u”ж­’ :•Ś`h°±· a•j¸Ü·’cs7UÔ°pŃzW?®>€˛˛ňHOě%‰j‚ŕ9F“cť hóńËŐš™–hldQşPÂňč›zäIT\l[ľá˘ö¬LňŠňg,hT–Ö?ͦ_ą*Ě1îŰ·Ź>@#Eq‹ůjóqŐ(ź˘¨z—ł{z–R‘’–¦{ĺňD/jKÍĹŽť¬¸çGŹźPj.柸p±«Ŕ3Ď>?ŢĂĂĂ»ß}›öč’č•—Ć`Á×ËW® _ĺüäéÓI0j:˝@µăJBßE04Ř+y„Źóý<>-“ ‚äM´¬TÎm~ńövýlŤÍSŤ÷¤Âôń†ĽyôY3Sĺ.j1Ďxé÷~źĆť?R0888¤Q‰E–ţ­łlzťNľ‚Áń“§ió† â 1Ęp¸1EQőˇˇˇé9Xcµ¤ů‹.ź˝ŔáűĆ+áŘëńVś:€âBsO'“s)/›?Ţ1Ő/ŃĂ]˝ňŇ>)Ŕ‚Ž×<ş"Ü4»Ţâv9úNEAa`HŞs]OôQó˝L¦ôHO$Y'‚ŕ9F•R©V«†¤ćN%éő˘6]4úýľ©T^"â–Gßx[d±­ŔGGršÉzÝ׾ö'Ú4Ť»,řý>ŚJĘň‡eÓ/Z8?Ě1T…‰ âlť ŔpCÜe2”NÇ”L¬éą¸•«–´ Tç§çx˙pQ˙Ź|™`â#«W‡ůúTž;CŹ|4—K‰_yéłůÓ^ `ÝúŤá;°Bß&â¨r\âůÂŹmžN…y‘ž8Ík÷OČ1šđčt:Lq†vĂL—/FA»ł«‹F0®`Á8M=2¨}ëEm)ă'ľEýN_|áňŠĘH ż? Ą‹FVĚŤ3÷­MϨşx)Ńc."i`޶6/×…"íěę ţŹkI/˛jTbĹ©c˝žp }7Zn656Č’¸Đt»c`H*++“µ°˙ĐšEQ$ */ŤŃáuß7čŔµ¦ćÄÍz«ŰVçnN‚!ó}r˛#~ŐܦÂôÁ rŚ&6JEŠV›  ş«Ž[Ły¦TUUMý§‚R1~T*¶Ś‘E™~±mÂ&ľE—çżôE{ö4čňŇßߏŃśqĽC’Ő–y_ɧ÷Ţ{—FŠ â– ËY°Ň®ź ţę”B>§aÔŹ\µ¤Ąš˛€Đđ|¸ď}ŚŠ›ó$¬r\đđŠeăčď§ ĄQ\.%AĺĄ;ąoĐ1€`0x®âtBż@d©Ű <’€uVf¤':§«D5Ađ‡ىÍ~·/˝ Tł°ľ+őźP˙'ü«xÝI‰ąŔ‘Ł'8´µaíę‹JiÄe§ŻŻ2•żŔh ýü’˘đ‡5_o!Ť'‚QdŮş›™fŕvM)ě±``Z ÖX¸(˙ZŇyY•XSSyŁĺć}®¬ąâ÷ű¬Z ˙Ä…‹Ž6n ł9·ëm*ÁXĺ%gŔ•4wTďjąoĐ1€sż©LÄ»S*RF…8.'Çx±ŔůĽüŤť.7=żÁrŚ&0cĺ>yę7ĺed¨8uŚOXÁ&0Úć•Aß ×”©Q‰MŤ „kKŠć­Ý°‰†; …[ćňoťMő⢢űy䣣4X!/LoŽ©ód¦Ö  ˝‹$5",ţá˘Ő­>uüřŹß»űŚJśó$¬u×ضe\ÄĺľEŁ‚ZĄĐHŞŕ»űđůü§O$Ü­±bô­ľ¶äe0żü,›5˛E0H‚NÁrŚ&0zžąĎ(ćŃńƧŁ·ePR+¶<ŕŘŃŹbÝĹ<ăÉßyŠĆ:~ͦ/äßt›·Ŕ‚E÷ŻţÔÖŃIAŁ!#czsŐŽŹą~•ę¨T›śVŠęcµ¤ů›E–śtŃčttVÖ\™ŕ)ç.T(0ĺęE-ç«eŃpËW®EqĽcŢ|ăuzüŁđ ‹’E`tډ¨©ą”X÷%KÜ<’@Fş1Ňoą(›ž x@ŽŃ¶;نüń–sÜ+Ź­<ú¶ŽNĘř™Qŕ^íwlĺÉćŐ…ŞšŘ6$_|úi*¸WúűGF†­Z ˙E©O 8.ťN?‘ | %a˝9»Á ±±aŠż3­Ő™8 ,µ¤Ů&ë[oFŕLěőx܇QˇsÎß V_›N§_óčŠńŽij&™Ń( ú4bôV2ÝÔXĐńÚŐŹ„_j%Öή¨ůÇýp »Ď `ΜّžŘŘÔDŹ0AđřRP$"JEŠÉdp¦ýO±­bs.8–Ç!xŠZp®öËŕ¦Ď°qĂ:*¸‡ H©©©y&{Ť·rq›·Ý޵äç>pßp0¶´HniÚĚYY›6¬™Üą3ŚC‚Ţřŕŕ` żźžÄř5U•J@Äąě»! •—¦‚JĹÂEY8O˛ ćl˝Ýď÷M<\”qäč‰ ·–‹Î¶_áěĚ=Ű^ť=ĎľnýƇŹÝ󀌼ý«7žţŇs4µ¦‚Z­Â¨Îc2q¶ýr©ąxýcŹpŕHú7•U d˝°ť•:W˛•˛pn(*)ďaŹžž^z„ÉŽU BJʧŤ*µjr—Jćî}¬Mę‚D$cF†R©t\ç;¸ë¬ĐçéŠs4I¸Č$0ĘGź!wnΊ‡WŃ@Ç!ýţÔÔÔK!Ç(‹).*:Uqţľ'ÖŇbXm™Ď˝đŇ4śÁ`,Ĺ8_'+)µî:ţ~ »a6€†k°3Qtz=€«îzţá˘L'”i†FD—ĂYSSYVVž—‘ĹąZT‡×Ý+y¬¶Ěň˛ůăůs/]©}úK4ł&ĎXFTňÝ :ÎÖŰ—.) cĆ\­˙Řírš-Öřż#ë¶ĹŢŕě9++ҝݔJOvěoˇR©tşÉ¤?’ą{źŽĄ.H82L&¶żçÚžíYrXyś‰úśč’#+“4N`ŰéěłÍ™čę3ÜAžţË4ĘńIż40–MĎ9Oö™ŃźÝ÷ŕZZDŠW śiż0 çžQŁ+5Ó3Ď‚šš:0$ń/O¬µV­Ĺď÷EŃěIňE…LR°Őzňű}ÇNVLâôSÇŹ—••/Ď*çďŽ9ŰQąyîşÇ·nĎ1ţčĐţuŹm¦ 6Iű6+/Ťq±«6[oßţÄÎđű»ÇŹ}ę‹ĎĆ˙íČX·-Ö0űÖj‹xĺërߢ§ěX2wyŘ0Ô‰E†ÉÄVo}Ľ—łúüpßű4 ɇ R))˝’‡ýÇ\S&€¦Ć†ćŃďÜľ•¤EăI j4ţŮô>)Đ+yŇuĆtَ×sY’ű÷żđâW’Ň^çś'dĚd)Ć3cÂAUŽKü?OvĂL—/VŇ@L–Ë_ ŔňŮ ś=sbr¶DeͧŁÓjËĚ5e6÷p•żŻwµ,Ďňäĺ>3g<|Ĺą 䝼‰›Ś•—ĆhîédAÇĹ…u ×Ć;ěĘŐúÇ·řăÜ–±nXxo'}<ÚZoٱdîĆ*ľ”HËc^QžŇ˘TˇO"P©Ůvş ęKyŮq=úÜą9eK–Ň(Ç3¬6˝Ý C9›öůss&rđµ¦ć@źźĆ‹ řnJ—E8čÓĎ™—d2SY¸¨,±˝lÉ÷ţ&ý#{÷Ľ`Ń,ôR®şěÜącĽýýµ—/Ň›¤‰›Ś•—î„ĹWnÜĽ)Ě1Á`°ćbĽżĘd¬ŰĆŻäŤŇ%ÝTž b9FAĄša6k4YĽ˘ Ť¨Đ'‘HL`Űé28FíúŮcVwU„ť;ź¤!Žs‚Á FE8óiťĐě9ĽÎs§iĽ’Śn—łâô ę‡x#Ýhdfgá OżJ5™—dB§×¸ÖÓĚ?\t¬4čD˙ÇăBUŤßďËÖŰő˘–óő_t4 IeeĺéĆqëiě?pćŘäHÖĘKc4Ýî`óg–-śÔĎń“§âů.TJ%[ŚđŻŰĆŃ༠Ŕb1GzbGg'=Č™»±†Ł €Ń`°Ěś©V«ś—,^Ń2Ű1 5Ť4ľńa5Ş´ůxW^Ň‹ÚtŃč÷űî[|ҬzxERŠB&CˇĐŕŕ€,™sÓlÚçĚť¨OöÜo(Ż6Ůpu;jj.Q?ÄÚÔT&6·»ńG€ĽŚ,§ŽĹTć%iP*RŇŇ´ŞĽc{Ą:*ĄA%I:{ćFłňy 6ö6ضeÜ żŰ==m­7h¦EJW^şsţT9.XżvUĂ|>MUüŠ0Ž q$k¸(FĂ–'npŽŃŇŇJĎ2Aćn¬!ÇhĽ/ lV+«;Vĺ¨ŮUżźżWTPŞWd}Ŕ+˙ńJÔÜdJ§QŽŘvş7éÜôzÝÚ ›h|òJěúYĽ­„>€üü çK brôz˝´‹WĆ“Ýý#ąâĽŠ-‚ňč'LjjŞB‘Ňękă?^Ĺ–ą•XSS9őY,żÔ\,(Őśď‚élظUĹńŽŮłw/Í´í[î•—˛ ć"Kç۬s/ČŮ IDAT7łů&č@ĹŮsń9LcuŰř q”ŮŚ[óN…že‚ĚÝXCŽŃxD©Ha.Q“ɤT*{%ĎŻ>Ţs˘µZ–=´Ő9K˘eqŢĂ’Öhh¸ăaľ))-Č»a€şúúýţSă+vń†4 °yËŚCC’N§żś¸“ĘęjŻ$Ăçó?yę÷w“˝(;FaĚ+ĘżD8C/jłővżßGyô„ĺŃ_ě’A v±m>€÷ŢŰ…ŁÇ[SS `‘­ó]ř¤@­»ŔšGWŚwLGG‰\GŠJ­ŕŕ×oFQ·Ř¶@®ůłlé’0‡µutĆgÜ1Ëŕ_·M/j×f?Ďç‰BĎ2Aćn¬!Çh|‘*j2L&«mćKt˙őŹ~réą"&X 3żß÷Óźţ<ż?{ölô8±[}mü›ž©ť‰ ŚÚł2,*ĄńMĚh¶ŢÎżig7" `oľŢB«Ó¤4OWśŁ$#Q*R2L&–%#ŁWŔbŰ 3,3iČo5ŞÔ-•Čy‚Yµ1Ýľ}; n…Bś-T†«Ď  ° oâ§P ¦d…’ŚäBĹ ł955u`HÚ}mżŚĆ€s€#GŁ6X–h˛ÂÄYilΰм(–˝ŃrÓéčLŤüłˇ;ĽîV_›N§ź_4nnďµĆ&zWDfj FSů`I3Xlă˝1ďxď;\­˙ŘírĆŐÉ%Ä!(ŐěU/ŞnŤ¶y:#58íííô8dîĆrŚr%Ýhx gNqaÁ¦ k¶oßb1›ł23-3gÓŤŤFˇHq\UŽš]zóťúCň® ¬ÎY’.›>Ł&¨*N< T)Á7ĎhÔv4`ikŃ_ÖÍłg?@›X ™–Áą]Źä ŐFP‰¸ćňݤ„’Śä1FSRR”)cE&ůŢI‘%‡)Ĺ®*`2‘*jX¸(«5Ë`¶j-Q/ ĘܬLd–3u®O<óěóăŢýîŰ4ë& Rč•<<µČ¬©3rő˘6Ţćăüąłq5Lr q,˛jT"řŞŰ{>‹%Ňo÷ôĐMąSTÔ“&?żđ›ńőű¦×éóÂŞ,÷Jž6_{›·«ÍŰ-KéŐ{’kĘdIô?zőÇ1jž•Ił(. G¶ť¸Ĺą]f´\oŽĹŹoÚĽ™F6á0S;Ł\Ř“¨ęrßr»ś´µ“¬ĆâéŠsö¬ĚŻ˘Ţ5 …"%ĺÓMú*GÍŮö+˛—$^žUŕÔńăQṳ̈ͬ5xSŁÚ!Ă^ŃňŮ‹|tä`töJý'~ż/[oĎ29‡°Ő»Z–gy¬¶Ě₺†k÷<ćŇĺÚO>MŻŽ ­rŐ¬ňżA”jćk°|ö‚CÍçâmţ¸PY˝fízmš.ĆHF!Ž1Ĺ Ł†_W°ťřąąů‘žčtvÓMąŰOuÁämAťľ¬¬<˘S†$¦-Ňćé”BÁîŔ-WźGö5Ŕç1k ›ć®đćëż]ÄDrKn%Ôş4Ŕ@(Čą]fÜlŤ~QŻ’˘yä±JDt:KCă‰W Čś•ŃY—k.®Ý°‰F-YaIFd,ĆQŚĆtćí•<®—KNýNĆ4+Ł„Q@zb ˘ CRťë:ç¦Ç d;YÝ_–$iďîwž{áĄK>˙9y¶ŁróÜu7oϱ5 I•çΔ/[IďűÂ6ţ»űř "Ë…r::­¶ĚüôĽăĘ*ΫĽjÇ•µŮ‡™?‚Á`ÍĹŞ8ůşÉ%ÄÁ^őź^ČOÁ‰˝Rň"/Lďtąé‰&ČÜŤ)äť ®>ĎŻ>ŢéK0aĚĄzSîjŤJ<|pß©Šó±k(3“"FăµZ%Ë,e†»§7꿼j˝Ü¦1ĘŇĐxÂBő­¶ČŢH5—Żc4‰aIF===&“‰ěĹ(˘T¤Q§ÓłOĎŔTŃń›GĽgá˘QÔ¬d$«˘:sjT9.ńßă_>{€#‡>ŚV¬;9wˇęą^*5źmżĚ9—«évÇŔ©¬¬|–Í:^hÂÁ#GÉ1:1ű–wĺ%– u¶âTÎÜܲ˛ňE¶Âó\3Äë\×Wd}ˇ¬¬<ÝhSâřÉSńđ]A.!öŞő‡Ż|őŹ^ć\öÓpYµ–0ř= ”¨DąSHct2C^÷Ä˙I¬»Ű»Ň޵456ěúőž6ô`á<šKÓfD«’ěgViV&©‹&(CˇŤJ”jÎM÷JéƢX6=ŤZr‹T¸3Š*U†ÉdµÍ4™LjµŞWňśiżđꥷâÇ+ŁpQ$©˘şJ©dᢠś›Ö‹ÚRs1€ŁÇOĹä‹ŕń^onPlÎĺ|kÁĐ`•ă€őkÇ] úűúÚZoĐ+ĺţďî•—ĆrˇŢ{o7îHÖć9®şël۲)ü×-Şśłť•«.Ţ/,™˝ęOUś÷ű}ě•­uŹä‘nŚôÄ[.ʦ'ČÜŤ!ä%~‹Çr—r™´h,6á?3jő:ÚőŠXIzgŔĹŰZUŞ0s$ş¬XľŚ†5qÂh2O€˝»ßa™‘.— |÷ă»˝Ľŕ'ŹÇCĎ5Aćn ßK4ü¶W4ę±÷4V(¬/^^*gĂńÓ5• ĐŇÚÝź]¶âaÓ„†9F™JWB?Ą]‰XÓëőž:ytűż“4w”9+kÓ†5‘Y ŁA.sć<0cĆ˝WűC’łż»ÍÓŮćërőyâ*Y~<6ć®Ô¨ÄŠSǢ.{ +éJM*)Ť9ÂE1ŞŰČ4cAA^®6M`p0šŞIŤY3ç‚Ő×–­·/]R6^Ô¦f’ ˙ĘKĚąćěęd˙)IŇŢÝď<÷ÂK‹mĄŢă<ď˝Ăëfó§Ľl~eÝŐúŹ}~6ŰyŻdÚY“'>v˛‚ýĄáZK?çőä ~hëč¤çšŕcîNĎ:őä%x{E™ŃIÝNDťÜą9˛wD …Dçv˝A‹Ĺé‰×Żß Çč4ÁçótěDźĎg±XÖoÜ’wdµe>÷ÂKSügŔ5pőą†‚mľ.ŻĎĐpßS&SW˙ŐŰżŽĹďŰłs’ěYĐéu EJ«ŻŤ˙XłYMŤ ±pa36mŢ<öď### …‚żc ŔŮöęěyöíOěĎ1:‚‘Ýďľ˝ăɧéĺ|OÔj/Ç)jŃÎŔooůź»PőÜ /rőâÎKťë“l˝ý™gźŻ¬ů«0‡;zd˶ś‡flg…EFódůěÜ7VHĺ§[SgňĽ ć¶~ gN¤ď±¶ÖT`–ŕ`îNĎ:őäťîŚyE›Ż·đi”ňč »1Łű´Ń˘|ńbęXbrx$?‹Ő±uŰÖF˝7}đz}‡Žžx ŰžčŽQŻ8Ó~a'Ž…_ICAwŔ›c*(Ő«łWxóő_Ä"5[„$+5©T¤¤ĄiśmŻćß:Kl˙pßű±2P‹ćÝ9^ĂĂĂJĄRÇV‡×Ý+y¬¶Ě0A•UÉ1zďő­R©P¤ I÷«~q¦ýűĆÎ=Ęj}ÓEŤ0Ňg ¦‚«Ď ?żpçvţvx1čőx=AuęłÖ°fÎĂ~úęŨľ9€‚ “©Ó´©©JĄ˛WňÔ»Z87ťe0gëí~żďBUMŚšX±|Ů=˙>ČâŘPĺ¸`ăúuăčďoĽVOŹó]°’ô<ÓˇXéy{x÷°Ř6źs'CŤ˝M¶mŮć0źĎ˙I}-·«b;+ŐŢuŰŠ,9•XSSůůĄ“…eUaăÜćěvąéé&x2­ęÔ“c”ř­/čůŽÚW/˝u—{4üNcD”ÍŁň8D, <ú$C/j9żýčt“1‹IftÚ2Ý’Ś’ A©Ţ”»ZŁÜ»Ľl˝^—dzpĚ©ÁRĽ9Sbɰw÷;cUS˘>Xă#ĂĂñ…Ń żʬ cŠďÝ»Źžč»`•—ş˝ÜZś©ťŔĺĽÇFi]Ă5§Ł3]4Yr8÷ĂŮöË–Ż\%ŠbĂNž>ÍçzREŤ\;+LžřÔń{TQc˛°L"–›Í90$étúH—Ř>źźžn‚ĚÝAŽQâ/ë»ÜŁŻĽňź›6¬ ˙Mť wÖú$h‘;7‡:!i`ąôľŽŃ©ŕóůÝ.' Ü4ÄçóSĐh‚˛:g‰UkijlŘőë=±k%ŰnO¦NA.§†^Ô–š‹;Y«)ńč#ă~•FFFFFdqlM$čĎĺľER×w"Kĺ%–ÝŇŇzĎ˙÷­7_Ply÷GJ \ëiÖéôk]ć°ćë-|Ěť^ Úq…s?äš2ĂČßîő`T"–L×dJŹôDžá˝1­Ě]rŚăšbĚ=Ę´Gź{áĄü‡ďM1łţ®Zź-Š‹(Źž“¶Öę‚HĘ*-5űýľ˝úă…~jö$—Ć e]8Ăj>¸/vá˘ákď AÇ&ôwčĐ!z®ÇĄň’%Í  ­ăŢŞ¦Wę?ńű}Ůz;˸çIµŁŔşőĂv`˙ţX_‰(‚ Iu®ëś;aѬRŚş§?O—ÉQ‰Xn¸úÜ ň"=Ń}ë=ă Č1J„#<Ô|îWďq\V[ć÷ľ÷ŹO>±eŇżFá˘DŚx°pu!#T'” …"KÎĘŮKüó?˙żl=#AH&Ť—1§ĆEoǨ Tç§çx˙1jâľuA‡‡C##ĂŮz»Ykŕ|ű úkjľčŁŰŃ #Gĺ%&ťßŮuďWŠ$I{wżQE®ö‰×Íqĺeá´ ®55Çz ét:UŽKLĽcňÄWęÇ-×ÔŘ€QˇX>tn°X,‘žŘI'AÄrŚú¦ţ˛vď™ö v<ůĚw˙ç·gŮ"ü\˛h!…‹Ć!L†)ˇŃëu4µy/{Ž ¸"Ë`ŢŚ[Ľe˘N’‰¸‰“ę„DÜcÖväo°űÝ·bWpiŚ/”/Iš®sjđ°Ä¶ŔÁ#Ĺč÷ç—M¤.¨ßď‡LŽ-ô§ÓéĂýŐŐ7Đ3Îŕ_y‰©˘wvu„9¦×ă=|p€Ĺ6ŢINő®¶| /‰véJ Ĺ+™G­»ÎÇwĹ1Ayâú«µ,Ú<jeeĺdpDś@ŽQ"Üďkµ{jÝu:ťţü?˙sÓ†5žI B7źgîÜh y ”ĆHńŚYkxfŢvV†ţÝ=Ä|5®×=XTšŢ;0$•••˙ŹżţÖxľŃŤÖQa"vX-fę"¸ÝÓCť@ńF‘%çwKźćě-)š—4ňAJEŠV›  şK†hÄbËŢzóőýľ=+3Ň˝Użß`±m˙ިs]gVwÜŰ#ÇONóG^ĄbŁ·x6Ęj]Žű;F+k®8ťé˘1הɹgXÄ÷ň•«Â„łřMeUtŰ5˘B‘ŇękcŞš<‰HžŘéč`Öň eőÁr˛s"=±§§ADrŚ“Çđľőń^gŔ•—_xOßhîÜJ˘'bJNĺŃqŐ %xŁĚö «AĎÓ+ `ÓćÍIÓ‡:˝Ž95Ü/禳 ćl˝Ýď÷]©˙$FM¬_·6ŇSýý##ĂV­%ËŔ{_6Ľę®°~í¸¦µÇă™ći¶jµ@wßmž@SăD‹_íÝó€Ełxkű¤@«ŻM§Ó/]Rć°«ő»]Î(¶ËŠë\źpľßHĺ‰Yí,QĹ»0}^AaÄ'z<ô}'¨CŽQbJ¸Ţ]őűďéµg<˙ü—©‹b2™¨x ×ëĄN 8APŞË]¶6űa?řţżđôŠF¤Y˙°ŘłíŐü›^l+°w÷;᫦LšIČęë Ś]gŞذqkĄČ]oOßLJE ÓĺéÇ7Š:×›'xü…Şżß—­·ó Nd°yű;ĂvüŘŃhµ¨MMU*•˝’§ŢŐÂůf#•'nąŢŚŃ:ZÜѬ¶c‡Ű::é+OQGE]@L‘`hpWýţ/—>‘—_řňźüŃż~˙AřâÓOS%z"ÖgĚ NH2i(X—íó%p‘PA©¶¤§ád›©ĄH˘µO¬·j-~żďßđou ×x¶žLá˘ÚÔT…"ĹpńĎŐ‹ÚS®ßď;v˛"FM¬~ô‘Éťč÷ůu:])W/^଻ꓵîşRsń˛ĄK>vĎcÜîŰ>˙ô´ŔUj¸W^2z.—k‚ÇK’täЇ;ž|fń¬âCÍçx^j‡×ÍJx•—ÍŁŰ{ĺjýă[˘3…t:=€ł•śgÂ$ä‰].7نëÓękËÖŰČ™3Á°Ö1ÚZoP‰˛cÉÜŤň„ş€:ÁĐŕžk‡ž™·˝¬¬üËĎ}ńµ7víÜľ•Ţ×Dz%OşhśełND’) “ ÷ âţi›Q¸f—3A#Ĺ,iĆ/Í{‚f‘äš27Í]«Q‰MŤ ?zőÇSüÄDJ’…‹˛Řj‡Ĺčg/pö̉؅‹NZë)42ÜßßźššşŘ6ďD+ďXÚꮺRsńöO;YqĎÎÁČ›oĽţű_ýŁiřřËRyÉnĚĐp-‚z8GŹźÚńä3Ąćâłí—9űÖĎvTnž»î‘Ő«Ăx Á๊Ók7lšb[˘ ¨ŐŞ!‰¸č$ä‰Y¦oazŻä…fSz¤ŽQ·«›ÚdÇŃ…ŁDÔĽo}Ľ÷™yŰ7lÜj6Ď´fÚ©OÉ”T ś[ô˝é˘Q٧ň#‚ ĐŘQAPŞ1ZUcŇÜru'´OÄď÷5NX%-™` tD<Ĺ«s–”š‹Tś:öł×Ţ‘O- I.*W¬ Tłq|˙1jbŮʧô¶ôůRSSKĚEgŰŻCśíme¶tIŮ©Šó÷<¦ůFËô| ČSy)u&"¬‡Óëń>¸oĂĆ­ĹćÜó\kµ×»ZÖĚ‘ĘĘĘĂG)žűMĺÔŁlgĄĘq‰ó4śizUĆXA©^b[ŕtE¬ä—–/žş~˘ßç°Ř6_c{L)rĽcŞ/^šnŻY*/MzWőFËÍššJŤJĚËČâÜQĚSľ„€šš)M!.ÚŘŰÄŮí;yb6Ž<Ą*]}ůů¦ďvąADT!Ç(eÎwÔ^ëiV(R22Hĺ—–­śĐÇ;EČ č´´¶LĺG<Ť AÄzÝ[dÉůý…Omž»ŽĹ~ç;űÚ»ř×Yúě’açÎ'“©“ÓŇŇT9.qÎPdÉIŤNGg]õ5ĹYýýý##ĂŮz»^ä˝Ë ˛xއW,ď@[ëŤéór`yô<FÇěgVĐ||tä äđ­ł^:ť~é’p%|®Öěv9#EŠV› ફ‘ó}MQž¸áZK×®>7€Â‚W4î[·@DˇÔ“@/j‹ÍSrčHˇŕ]5Ąˇ OMśXÓáuźiż°röRŤ65äë Ť Ó´!îń(éôÔ Äť¤¤(Ř’ş‚ Ď›^Kl 5*€ÓŃůĘĽ»l뉳sűÖdŞą4–[ç–ˇ|íbŰo˝ůzŚ~ßž•ĹÁ Ť  H©©©Ëg/8Ô|Žs_]t4¬ś˝tĂĆ­ďp`<7Đ®·ßţËoýőtYÓŞÔŕ^’ž1źô‹čŘÉŠí;žbľuÎÁ•÷-áĹ8îě–m;"úeť^§P¤´úÚ:Ľ\7ą§.OĚň~¬©3y^6›±‹%ň«í!Ă€ ˘ůˇ.Q»rv s¦>Ž«Ď=0tn „‚ś?-Qá|Gm~Ć\«ÎŇrăzĆ M›ř$4âo`S:/rąq"ąIIQń_Ř™fŕ&1{‚?rM™yŮ,A@MMĺÁýbQ%Eó’)‰Łę˘üs`dĚV­Ĺé謬ąŁ&ÖŻ[Ýôz˝©©©Ąćâă-Uśl™Rd©ąxŰ–MŻ˝±ëžÇ¸Ü·nąşgXfN‡…Z­3/ů`Ö8“Ż»(IŇŮ3'6lÜĘß·>V«¸° ĚëôBeőšµë#PU­ć<ň2˛¦(OĚ6ŘŢ7<’€Ĺj‹ôÄ––V2"Šctň8ť,bhµÚ»’ő:ý“m?˛˙ýěe-y|pßéŠsń%ʰg<ů;O%ŐXľ’)–Ď^ŚŃäâX`ĎĘŚşŮ0 h4šE¶ÂóĽ%˙ζ_.5/_ąjׯ÷ڧ&±{÷{ż˙Ő?Jú×…(śĎF™eÓµ)Ińľ˙Á ·Ęâ[?ŰQąy›7…qŚÁš‹U+^5ŃnjŞR©ě•<üczX«)Ę756äĺfĚÜ®ź5TVq .˛9 "Ę&н֥‰ä-e‚2˛ĐŮŐqŕđ±čÚE‘ 0Űł2ÓŇ´9Ů9ÖY™yů…é˘1]4ŽyKťW›·˝ÍŰŐÜÓ·Łăx«5KlesrrNź<şný¦hřMTÉ4‹¦„BÁ Á)öçČȰB‘Â?‹ÇŮßť­·›Lé“vŚNýöŁ>!ăá’…BˇP¤ŕ©d ¦$S §>őu4ŤgíťFü.rM™vì;ýˇNGçŢ=ď]ąZ/WĹůń>@Ď?ű%“)#Žlú)Źş¨,á˘zQ›­·űýľc'+bÔDyůâúD©ü¬?)ă>éŇ€¤ŃhJ,28F}R Ő×–­·ŻytĹxK’¦ćCÁ´4ťěós‚ý99XĺĄî@7Ď;˛°’ôSS'ďőx+N[ńČţľő¦Űs¤˛˛ňY6k—c\-Ń'OŻY»a˘Ö”ÁŕlG%çŮ-ybgWg^~ˇQÔu€źŰ±Wň¤‹ĆđŁpO›3Nm˛jČÜMĽ»IQÜĂş‡i˘O$Őż””d«%I‹†¸+&b–Íš‘nś3gvQIiYYąUk±j-KleCŇM_{SĎŤzWKŢÎŮö+%梲˛ňSÇŹW˙¦bÝc[¦j:Ç`~&č,R)SL&SúS‘ŔŔÝ1ęęsgëí…y“˙™úíGť8Ľ¤„úć*0Ş%Â悉Č$ŤŃHľŹZr3ő÷0Ť8€,Ů®źe7fŢ™+ăttž­8uö|ĺÔĚXđÔÎí •ÇsŻNbf˛-˙’)–Ď^ŕȡcTG+ÝhŘţÄďLţIW©Â÷gşh,˛äđ7Ĺ϶WgĎłŻ[żq<ÇčF|đţüŃźÄ×›ó~ý9ą)çĘKL„çćÍö)ţÎÁ#­xdÍŰBÎŽQVÂkĺěĄë×®OŤ€×端»Ľb媉Xq)))˝’‡˙PlyŃ'nimY1Z“ž 7]4f¤#ýŘą]ŽŮłăî3DV ™»‰zŹ4̉B—ĂŮĺpÖ5\c¦Ď9s ň–>´uybćć¶3y:©Ű<ťŮzűś9ł# wm˝qcaY9‚ŠD] Ühąyŕđ±ďţý?Ľüň×^ýá+MŤ •¸ÄVö‡ źÝV°:Ë`ŽźK­wµ0Łí‘íŰč˝ďŇđĹ!śwG1*7>77ź:ź]×(Ŕ=â€AÔhll ! ţ4÷tV9jřýľ—_ţÚw˙ţŢÝóA<{E/,}ö…Ż$ëÉ‹mó>¸/Fj ˘(.[ůhě®dd€Uk‘Ĺü®v\đ̳Ϗw@(Úýî®$·đ­Ľ„čĺšřpßűUÉä‰O Ôşë,[ş$ÜŞłµ­é~6’BˇPCŇEG÷H)€˝»ß™úO177“Wâ†+p @NvN¤'¶ŢĽ ‚ ˘9Fž^Ź÷TĹůďţý?|ë[ß<|pźßď+0ĺ~iŢŰ Vł0¨xŕXk€gźQĹwvż˙ѡhŕâfĐ5ĽEj¨0=ńył˛”¤×Îŕr:hBζ_q\:ť~íęGâüRȶ˙Ů7ţ2ßľ ˛”L”ęs€#GOĨ‰U+—ét±Ýýe¦T‰E†˝ŢzW +/ţ@ÎśńŽ9rěDż@Řěĺ\y‰9Ákj˘#¦YYsĹŐíLŤü}ëL:cűާD1\!Öý~0‘Q¨r\â\BJ/j LąŃ’'fnî1…k>°H‘Ľ‚D·§V2” ;ąG*}OOŹ &Ę  ťNGÉ^寽±kׯ÷¬ytĹöO±üú3íř‹ÁžŻ›ÉĂ/]RvŞâü/őN—Ł{ýĆÇ'xşÍjŤéüLĐY44r8'łM}W0›ÍŃŔ˙جx gÎädF'wűŃE„;%Wâá’Ą"Ĺ6ËîDĄŔĺŠÂšję€>jÓä=L#~'ÁĐŕćăż[úôŽ'źih¸6Ĺę±Ăbžńĺż·ďů©|ŹaŔżd €E¶BŤJ¬©‰ˇxÂC+™Ä¨éu:VŤ Ŕ`pđVO¸l•RiµZKÍĹgŰ/ó—´şęjX9{éÎť;ţőű?¸ç}}#‡”.X$ăüڍ?#B§M3¦9W^b%飸ĄZUy~ÓăŰ—Ď^üNý!YÖhó‹ “Š^}©öęŐ+f‹5ĚüPçnć<Ż<ńŮ3'˘%OěttZm™f­Áŕ¤ěIJÚ2#=ńFk[~ŹČŞ!s7ţ™aĘP ę»ţHŁÉ†$Iűú7ľqřŕ>+g/}ˇt{<„ޞä¬íOěd˙ůŃń“'ަńŠ‹7Ýŕ€;K^pĂŐçPXGŁ@‚™*/ŮŤ™®5Ń(ÓłÖđTŃcwýSf{PĆKrĽG[OřÓŻ˙yşŃ‡ťf1ĎřÚ×ţD›–„ë=mjŞR©”Ąd €K!€÷ŢŰ«ß/šÇaÔ†Bˇţţ~ŚĘp梣a`H*++óěě?pIŠ ŕ_y‰ĺš¸˘¦ęp8™5ÎŐVçúaŐçĎťď˙2 jÝuśwĄšÉż˙ÁhýfgWFßÜ`ńÎa‚ľÇýtş( ˘9F“I’^{c×wľó·NG§Uky±äIŮUG;Ľn–éS^6źýĺŔáŹ*Îś¤Á’ťĐČđČČ0FKĐđ¤ÍŰ ¨¤”F5"€6O'˙¦™Te$ÓçqS Ůzű]˙¬Í~X^SˇĆńɵžfťN˙{żw žIěŔâřd -˛ä¤‹Ć¦Ć†É%ŽL„M›7óą—ľľ>%ć"A©ćÜŤÁĐŕUw=€m[6ŤwĚížž¶ÖI9•J%¸ëđXŇĚę–ŞĹbaľuÉ“‰¨1¸PyobĄ"EŁśmżĚůĘŮ myâú«µ,Ú°aăÖ0J‘{öîMRűAŕęóđlÔš:@gWÔâőĚ–™^Ż@©ą˙{¸ÚqŔÎť; +NźřüßuzťB‘Ňękă.şÄ¶ŔéŠsQüY·Ë `f×mBĎ€€ŮqŁťť "c4É‘$éż~ü3¶ŕٸŮzóëńW›ç®>’ECŠqŐ]żÄV¶üˇňw÷|VÜđý}Š‚°ä Ëh¤d[‹iiiśwG?5ĽíV­Ą° /vitDüĂňčee2a-×›iiÎŹ^ýńßýÝwKÍĹM·[›{d BéđşĎ´_X9{éËňňß~ű;Qô;L‚%‹>őĹg“xĐ•Š…‹^t4đo}ůěŬ¶Ě×ůzśw”2U™•:ŃŇ(¬¶8˙}ľ«®ĆRsńöO;YqĎg#oďzëw_úý¤ZĘŞŐş\{›ĄX56Fí©±g}:»Ľ^ŻŮl.±r®ťËÔ–ŘʶmŮôÚ»Ć;ĚçóR_ű`Ńgţ;mjŞB‘â ¸řOx¶qp˙čţ,[ŹXµž÷â•ňó#v{˝>˛^"*PÄčtˇ˛ćĘľ˙/;nôŞ«ŔúÇî®G˙λ»Ż^©ˇa’‹P( &3şôˇĺ4 ÓŤF év ˙¦g¦e¸ŮJ~ybşÓĺpľůú/lš»VŢ„úóµÎ€ËjË|éËĎÉu ‚ l۲9ą˝˘tz=€«îzYÂEe©úČćóĺ +/®ÓéçŤ[Hí“Ćd+3Čňč»ű¸zĺXŠŁŚ FŁ‘ý‹ †BˇtŃȱ65G>:zç˛ójouQ&OěttÖ5\‹úŹűý>đ-˝ŕ“C’N§ßůźÇĺľ‚ ˘EŚN#*k®ĽńËź=÷ÂKkć<ÜÝwŰAPĎđ:.«ÎR\Xp×—ě—oüęecş=ű)ţHÁ «Ö"(ŐśWGÍ=ťCR^~aşŃ@"ŹÓ&ŰßÔ#GIzýlí]TÖsŞKS«Ĺśü÷©P¨”źí( …¬Ö™Ét§*Η/]ZVVľ1wĺű׎Ëx%{®y±äÉʬ©«Ż?Uqžsëz˝îĹ^HzDĄT¦¦¦bÔ!™Żű˙»đzyF—:×'Ůzű3Ď>_YóW÷<`xxx÷»oďxň餹eµZ îĺFŤŁb”QÁtGŐŻ×k2™ŰpÎđcj Ąćâ5Ź®8přŘx‡µutş]N&Ý«MMU*•˝’‡2âbŰo˝“`óĆƆ˛˛r¨ĺ©šęěďÎÖŰ3gY#Mˇ»+†—HJ;6%%%%EÁţ}dd$ć|IfîŢŰ(˘Ç`Zqŕđ1‹Ĺ˛aăÖ' {­v˙W] ÖlËâĹeźßâűŻţčŰßţv+yĹ3Á`PKš‘.ĚM_{)w~IQ¤«ß1ËŚHhREŤB‘Ň+y8ËöăŽĘK]rŚNÍ`˛_ţło$ýmŠ‚`2™ĆţÓáLÂióĘüđ˙§°Ŕ”[fë¬q|"×eř¤ŔëGwl~öů›ođ|Bsçć<˙ü—§)ÂB˝jÝuüß˝Dڍwµ,ĎňXm™źŹ?ăâĄ+É䕥ňŇLíLŚŠQF…üĽĽ±ô÷§§­Z A†15†0ŽQöďáĹŻHKKĂhq]ždĚV­%vňÄ-×›ËĘĘíúY<űßŐçÎÖŰíY™‘:FÝ·n=Hďľd·cő:{Ü oőܦ!‹:”J?íxíŤ]¬ŔÂĆÜ•˛\ [ľrŐç˙ŻĐđđ?ýÓ?%ź0|B Wý%M=7¬Y».Ňoąşiŕ’€Tm*€¦žëü›¶,^ĺ%¶<#„F’¤˙ÁżX‘őž‰„ź§ą§łÖ]§Óé˙đ«ivá¤ám[6őż6Ľ˘JE =Ű~™¦}2ÁĽT7oď€`0XyîLrܬ,•—0*@Eqü»âÓűúŰx‡vxÝ΀K§Ó——ÍsŘŐúŹ}~QBqÓíÎ×ɤ*>:r0Fżďrą1Ě Źä““é‰===ôŢ#©CŽŃéČ˙ůÁ˙őű}¦Ü2› ;L>)Ŕ>ş÷,8+˙ůź˙AcÄVÓnĚäß4ł¨X6= Ä4„ĺŃ3bÎŘ Ń” ›ąäÄ4 ®áZĹ©c•řDÁzyŻäxK•3ŕĘË/ܲ)ćW’;7çëö§+^5MFY§×¸ÖÓLá˘IFÓíV^üžf6ăŕ‘ŁÉqł˛T^2k š˘WyI„»6cü>?€S.˙Ý)¦ú̳χ?ěŘŃ#:ť@•ăgŻ´^Ôfëí~żďŘÉŠ5ŃÖŃ ŔŔ·ôBwŕ‹Őé‰--­ôŢ#©CŽŃéHŻÇ;"K…6o;€E ď˝érßzg×›4LśaŽQkŞ "ÁĐ`­»Ŕü’˘Ntß"Ĺń„‡ĺŃ;.YTŹí†Ů®5Ń@Äťüěµ7śŽN«ÖňP–śĘeÁĐŕćăv<ůLqaA¬–ŮzÝ3O=ůŐ?üÚôŃfQ*RŇŇ´Şµ4ۓ͜ V9.xxŲńŽń÷őµµŢH‚›•Ąň«ŮčěęŚÖ~~W542Üßß`ůěś»´ŢŐŇ+y¬¶Ě0Žuź\kde3/:8_!ë“#‡>”$)FM°]ÎŐáXÚ~YYy¤':]n1eČ1:M©k¸VSS©Q‰«s–đo˝±§@éü…ăPuńRMŐ&ž …BˇPHŁŮN8gšn·ŘţÄÎ΢ä‘$@›¦pŐŐŔżiA©Žz6A$’$˝ňŻX9{©,…1ÜďŃÖÓţôëő¬A^±ě/ţü/Ę–,ťVă«Ó는V_Uq‚‡‘ďn°aăÖ0ŹĚ®·ßN‚;•Ąň’AĐhim‰ÖŢłŞ‰×ëźžÇ?„…™dׇS¸Ú¸a-€Zw˙pŃRs1€ŁÇOĹ®•µ«3yŢ]Żäé—. ’ ALrŚN_~úÓź(5óOÓ`†x^~aŐ°·ßÝívQ9®|šMoAf´ą§“mPϲQ1Ąi„J©du®„`4iL‰¤áFËÍÝďľŕ‰‚ÇdI.ŁĆńɵžfťN˙{ż÷•(ţlIŃĽ˙ń7łeŰŽiXň‘©‹^ě˘pŃä„•°vő#ăărßJgŠ,•—ęTsM23ď!c5 AŤJ\d+äÜ« CŇŠGÖŚçˇK76lÜ 9Š‹ÍąÜ×ë‰Uš‘(Šk×mbk"KW»ÎôČšq6}r€„ĽctúŇëń˛5˙4 ­ľ6™łĆő‚ żö‹×hx200ŔnČ”ĄuV{gýÚU?…TuV`ńZO3çF^F6€Ę Q N7™ŇiL‰dâÝ=°jŤËgĎ—÷J6źa˛‰›6¬™âO ‚PR4ď[ůÍ^üĘ4t‰Ц¦*•Ę^ÉÓÜÓI“)ĐękËÖŰ×<şâŔác÷<¦)Á?j•€łż›gŁ‚Rť.D1bńÁ˘{ŻűĄP(”.‹,9ő®ž·y¶ýr©ąxůĘUź·ÉEQÜľă)YŚ·bË\ŤJ¬©©ěrÄ*§PĹm;~ŁŽQŁČőcá Ü“ť鉝]zéÄ!Ǩl¤ 1uů}R_  ˝˝˝` ł«+(Y‰˝;‘$éđÁ}6n]l›w˘µšçí·y»–ŘĘîűę?]qnÁ‚…6+ĄWó`(R«UY3Ý1ź¸ÖÓ\`Ę cÄß=‹:(Ú%‹Z’Eäά5¤‹F§Ł3ŠćuVf& +‘dt9śŻţđ•ŻţŃË›ć®}őŇ[˛w3:Ľî3íVÎ^úňźĽü·ßţNDűgąssЋЦOĹů0¤Šöâĺěg!řs¶˝:{ž}ÝúŤăŮT#ŮýîŰ;ž|:AoPŚŮqĺVGQ„Çb“čőzM&ÓbŰÎl›|é’2ťN/‹BńbŰ|ď˝·;vM”Ě+ĐéôÁÁťNgI3óĽAŹä`ť±1éńx@ÄÔ ÇhҶďÚ„t»ś·\ÝŤMM--­N—; 9zbĂĆ­%ć"ÎŽŃî@/€Ľ‚ű§‡ĽőÖ®ň/ĺćď‹NŻPí¸B]‘ôtxÝL˝˝Ľl~eÍ˝GĽ˛ęb;F™ŔhŕĎFYnuËőćhý Á ó˙JŇČȰUká˛0žMÎ ĄňW(.˛ä°ýěĚ|ú™gŮż°QkęLž÷čxäĺG,ž@‘"1uHctza¶X,*ݲmÇËöŤď}ď^ţÚ—u¶·iTb®‰k¬ËÜ·Úîߨűöí˝ď˝McLJ@_€<Ó\ąŚxgŔĹŚř‰š$7ž‚ ÂŔÔt»C– `˘]ŐŐ5QüÍ–™4˛DRňÓźţÜď÷r‹,9ň^ÉžkGXU0ź‰Üą9Ö®ţÖ_~ó/żő×k7l"Żčç_Ľ˛Ô»#řößşmĽBĂĂgNKĐ»S«UŤ´ŕË­vą˘ćŁĚś®äihd¸Ż/ Ä’6yyŮ|«-S…âŶŢz3†Â¸‹–ÚFW¦CˇŤJä|›Î€ Ŕ9s"=‘JÄ!Çč´ĆžýŔÚ ›ŇtŚÖ!á «ż4‘W˙ľ‡ý~Ť‚CC##Ăé˘Ń¬5ČrŐŽËžyöů Oră ą«r\’%3W©rwĆ IDAT/j­Z‹ßď«k¸Ĺź%˙ ‘¬ôzĽ˙ţ°fÎĂzQÎČhź8pý(€ßűęϲ}öÄŮł2^±ěĄ_řçţ—Żţá×ȇ/^‚?ő®–!)/ż0ڱ}ôřÉDĽ5•R©P¤ Iśk$°Üę(čÝW„§ŻŻ@©ą˙»—Ůäw:ÖŮżóĎőÉ2­Z‹ÓŃ9^ěsTxäŃGďüĎÁÁ!Ö4Ď;ít0G^Ěó–«ALrŚ%ŚÖ!á‰4 Őhî{äŕŕŕĎ~ň#)> HM4–ĹËüšČń$7žŚE-]t4Čry&;€łgNDń7őz’t ’™ş†k§ŽiTâĆ܇归ćžÎZwťN§˙ĂŻţű‹BˇŘľ}ű–m;Ć«aBP)•ňľx Y¨r\°qýşńô÷×^ľp÷%Kĺ%Ůz;€Î®¨EçŮďWna(ęďď°Ř6ŹżM~§cýś9yů…C…âĺłřčČÁެ}ö²ň;˙ {ý%Ď€€Ů±7¶±©‰^w1Č1J|$Čy+˛»Ď `Îś 9d«/Ő65’)Ďţ@?FŤemDO0h”äĆŮŁ–b‘Gźn0ĐČÉÍĎ^{Ăď÷eëíeÉě<ŢRĺ ¸ňň ź|b €‘‘‘ź˙÷ÓMäĹŰŘŰDá˘ÓЋަ>‘n÷#učđ‘„»/Y*/±…’ÓŃQń·đL$¶Ýďó(1 J5ç~ľÓ±ľs玱żpîöl˝Ýď÷;Y»VVŻ~䮿 0zž7ŰćëPTńG¶ł«‹^w1Č1J€$Ř˙öŢ<°©ëL˙lÉ÷J˛ËH–Ľa/€ŤŚ!„-aIĐ,4K›­M;i§Í4餝´ůMgŇN;ťv~Ó™´™iCš4MB’I€°†Ą ĆŽń6^°‘°¬Ĺ˛¶+}˙8Áu;–­»Č~?%Fş÷蜣Łsźóľďc”´@^P!»’×_ťFJúVč]®|ɸ‚F©ÜxŇ!{¸¨Hyô6%ĆýV!ř‹_üŔÂĽąr•[a„„đ¶ć˝ÖÜ}ů´R}ţţ?ţá÷4FCˇV©´Z-€CíźPoL(BB¸±· Ŕ·­ę5獫Ř.“óR€Îó «Ťžź;"‡P$ …4jľÜ*µŰŞ-¸qiů´ŇĘĘ9˛lŢćç]`׎÷¨G_ľ34诟»đňngOÇ&IM8Ż@•ýZ‰ű9$„kśµ~ř˙ý€SÎ:‰7o^Wa)°{ď~ńî˛ä¦Żüăg©ôś¤§€l‰Öë #yŚĂyAŚF üLllÚ´™KdϦovu¶zŰôzĂŇ›|î‹É)‰Điµ*•Ş7č>Ü!›ś]lž`×î}‰˝lIq1Ť/1xoŰ®¦Ćz›Î:?ďZy[RÝušýR<ţío˛żĽůöFźŹĆč2T)©  ť¨xţW3€aöT-­mIôÝ‘Ëy)+ÝŕÜą„m;s˛í#Ý™‚ dđ¦2kˇÄ˝=xÝ8Ţő©ÄwgQ;·oéu{DşÇq -ľňďˇH@o’ř#3wâśě¸ý“.î›  ŁÄ_Ш4RŢŽ% ädçŽü-g[Ű.tS ŃŘ~É,y¨ý8€ztŞXŚćł´Hš‡óŚ .EËB‘9'7uwužďęNě•'Y)•žÁÖľ`¶˝Rb»Ţ+Ů|zO ¬¬śłrůRŃhô7żů5ŤŃeč ú””ÔVo…‹NXŽwŐ¸sÍ=C˝ †Ř›Ö'ÍvBĄ‚ÎK&Ţ §7aŐíóňâpľőx<Ę­S%ţÔŢ źIu҇śsŞ´Ůö™á0{0sçT őO‚ řiČŃçÄË, ćÜąVZëbÔ0J@0`ÓY%ţˇ`łÇ·îż·e Ť—° âŞěrąĐáq˛äťŻ}í«Ăż˛­ťĘŚ&Ł=ś7»d2öD±yÓ; Ţ»sÜHüb|pľ«{Űű›¬)Y)oB}HolÜŕ‡ͶŰô¸z7ľý&ŤŃŞ”Ôôt.7“Ź“…WS˝˝ˇ1i\­5 .éGR”x°š_pMk`,-0äK"ĹVŹăçk%ľď,ű4ŤšŻ®>šđĂěÁű·ĄËnę_™0*µ1}Đ °° Ţ7ş\.ZëbÔ0J$'kë(QN|>€’Śbz÷¶cˇ@Ě[cČăP’G”Ďqéééö¶|$W Ľ®Ô\ŕȱęÄ^ŮfµĐŠýdf +ŠĘŰ’ŹóXW5€ď=ő+ĘvřĎÇčGa­VËN¤:7€ĘĘ9ńľ±×ăAŁ…„Q"ů¨ţä$u‚ôőő¨˛_'ď>ž% <î^*3ŞpLFcZšş7čţ¸KN ›…|x0ń›űśśeb˘„Ţ^7€•S–I˙”~›v"Á7.e™ÂáHäĺ—_˘1đ»«s´PoÇ»NX±jĺP/đ÷÷ýč€Â?…*%•Ő•řśŐČ8ŽD]pąŇAčďďÇĄŢńÍüÜ9ÖżńşŰ²éĂ×Aş”J/iŤŃî ş|®ËÂex˝>:$QCÂ(‘|8ś)KNüýý±XÔ¦łĘkݱ˝ůCö¸;LŚCó™Ú (N­Öëő¶ťŮÂr5…45Ö‹z0uÚthbbţLŤš_Q´HŢ–x~–ađµÇţ–mkďŘ·g× ŁŃŕPÇQš«€ZÇVˇ}G®Ę®˝Rř§P§©qÉą[JňM9ęV‰Ől6Źâ],ja¶}¦ĽőťĹ&×haá˘G«EچYĽxńđ/Ĺ„€;ä›w6== Ĩ!a”HJţ:AúúüŁŃeŹ»;ţ ŕďžřî0g§§?­ĄńR Ş”Ô s&€c]ŐňV¸cˇďoy7áW&ç%b"Óëęe~ •ö©ň¶¤ÎŃRă¬Őë ßxěoŘ_¶ďü`"?%ňGá˘Ä`BBř”łŔ-Ëő·Ű­đoŤlÎKÚ,.Wo˘.8yrÁ(Ţ …d/u%Ĺž-Ż "Xe&?7g$ćW±X€ÄYmîN“'çĹűĆöövZčbt0J$%§“Ç:3©açҲ3Lu×éWł^oxň‰ď őšSµu4^ Ä”aJKSwű‡Ú嬀!jčA~ĺŃ!uőôXV°Č˘3ĘŰ˝-Çzîâ’iwŻľ @,űĂ+ś°CĂÂEO9¨7ńŽw} `ůŠŰ‡9iŢđ¦˘-dq^âTi5ďóy{Ý Ëߏ˒ţĘÍ9;î—XtĆCľĎçM¸Uć`nąyŮH^GĄ}ň„Ľ ă}cÓÄh!a”HJĽ^% HŔ@1Ł*»Ě™ÂŰ› ~Ü˝’†¦f/ĄˇÓjµZ-€mÍr&ŃCäТk®ˇ±&&2ýÁ{P_Y´DŢ–„„đ¦†ÖÜ}?«ľŇç÷˙ńżź€’’’Âq\ ”·˛3ˇ¸ýsĐ_ă¬0oîěˇ^ătö(ą<‘,ÎKÖt€ĆÄYŇ[-Ł7:÷÷÷ ‚Á›d7ľ‰Şěr›7ľ•p«Ě ýÔ˛Š‘Ľ’ů/岥ě6˝mŮqŹow÷Zĺbt0JĎqşýŽ$j3‘KÇă0ĂR&o1ŁÁŹ»Ě[ăň„B?ÜGăĄ8µ:#Ă`wë‡2:ŃČ5ZD =(ť:Ť†›ŕx=^Al:ëâ‚*y[âô{v·~ŕďžř.Ďóęꪏ™h#’’’ŕX× yĄrü|-€;×ÜĂľ WCěŤuŻ+łńr9/1]¬ĺLÂÎŕmYYcy»Ďë0+»büÍOŻ«°”řčČ1ńî˛ä¦GřĘH8Ŕ¤ŃKüC ¸$îíe[G'-q1:H%ţB@$Qk?­?MC&A`ĹŚfŮeVwĽ5.ٶޞéôč’aÎLII­qÖVwÉüUý,\TśĐŽăFť Gă!íąxŔl{ĄĽ~}Ş»N·zŰôzĂăßţ&űË›oośh}LĄpQ⪻)ö™;»r¨×4źQhV–\ÎKL;ך0óFł9c,oďďďŹĹb†|Ů $–ٶsű–V-¸ Aż`Ńâľ8 0ňR÷3 WĆ'mČ/¸Ł›V9‚$ŚŔĄBć¬Ňs˛@gb’Á‚F•ŕ€YÝušyk|ď©§®Śth>ÓB»…aÎ`ĄE÷¶“·%á˘{ţtPŚëSQ‚`„"źĎ`ĺ”%˛˙Xl>˝‡ąoŻ\ľ@4ýÍo~=6÷©©jśµ.J\•ŹĎ׸ső]C˝ ‹m|[‰•Fĺr^bş3qÎK%ĹĹcy»‹˛o–u>nŕTi3,eŢ}o›xw™ym‘¶,b”YoI‰;č—·0zŃAŮô1Ş˝uK…ĚYĄgÉ`‡śMc¨×sş®†ĆN0e°·ĺX·ßałçüđéď_©Ť~Rý1Ť—ěŚFŤFe/- ‘ĂE”—•ŃÄgrO8ÉŕM+ŠĘŰ’Ţظ Ŕ=Ę"nz\˝ĘzÄ€…‹j˙„ć$qUš]ť˝A·ÍžsŐÚDŚŁÇ”¸ˇbyô;/(0ä8Ű’°ŃIÖ± mˇP đGM,łěÓ4jľşú¨xá˘Ç-]vËČ_/Ģ4j^âż }NkÜŤMdPLŁ„Q©9Żćx}ŁWcŰŰŰiě¤A9AŁ!!Ľˇn+3bşď‹«/ű׏ţ|”K^tZ­^ݰ±q›ĽĄE™sD 0uÚtt‚ §çb,-5Éî ŇáqëŞ0apřĎÇ&‚mă@¸¨7č§ I ĹˇŽŁn\2¤ašŤýč€Ňš­V§p%­ŚÁ"9ş»–©ĆqśĹjăE˘Ńh,Pn)7Ór†u€wŢŮ(Ţ-®ťQ¦KŹŻ`(Ó ™—d´yĎ(›wŮÎóçi}#Ńlź¨ N­V©THPv#^šĎ’1˝D(*h”1"Áĺ+nřű˙“×뛀&Ęç8łŮ `ë™:‘ąWŮ.]ď[AĄ›$eox‚~9ŮąqżŃăAńCÂ(Žă4öJxĎëNŤ>ţ‚ĂIĂ'îŢ^ óć*!gÇé÷¬˙tóUµŃ‡>˘Á’g%Q«'MĘP㬭s´ČŢžJűÔ ŢÔÝŐy´ú¤H·(śOăN—áó÷Ťš_Q´HöĆljŘܸ”Ą ‡#‘—_~i.,äßfĎą˛nŘđ8śAÄ(vPÔ„.=@SOkҵÜëőŃđIF(éďď0?ď:%´Çé÷ě9÷!€ĺ+n\$«­Łs"$K* N­¶X-̆~GłüÚ4§J[{=€—_ú˝xwąá†y4ôq%˝®ŢX,Z`ČŻ´O•yźôł_ŠŻ=ö·&#€¶öŽ}{vŤËnOIIąT]ô8MBâsů¸«Ŕ‚—˛ŻĆUŮđ¦‚*ó¦©Ó\đKí-“oĘpî\ÂęwešÍ‰şT,Ĺ%I1©É5ZÄ>̰xńâQĽ+°¦[$î“Vo€śřý—č9 Fšş`˘Ď•*-M›]R›Ľł}F}Ă"UO×ŐL-« q”ŹÇŁŐj+,ĺ§ŤJH”®s´¬šró˙Ďýę—{©}űö=ôČ54^’ˇJIeŞh«·M Ş(€ůyײúýµő "ÝÂ`ĐçĐ4#« Ģ®žŢĚI™ rŻoóś—7z±ÎŃ’o¬­°”?ůÄwžýÉOlßůAQQńřűţrÇžĄeů6đ:%Ä')źŻ‘~Â5ÎÚ Ků·­|u݆«ľĆáĽxŃqaěNA‰™á<É8#€ž^w˘.———¨K±lú Ţ”k´(ag>†m[€Í›ŢńÁ37gtËţgŁśQâ>qô9 ůůą9ńÖ8w®•6¨/$ŚNtŚF#äČŁř ĆTűĎď'oé‚ĎçÓëőóóŞŢŞŰˇ„& ÖF×ţîůý8U÷©ÓŃMĹĄA•’:ÉbIIIíö;6źŢŁ„&YtĆŮöJ/˝ôńî2µ¤Fź †˘?čďď×jµ+‹–ĽVłYŢĆěm9–oČ+.™v÷ęŰŢŢô^,űĂ+ü§~vśőyş.@­ă´,wźźwsî&F‡ôÂ(€CíźTXĘç/\Ľá˙6 UŚ{ăĆwľţŘ7ńÔúYĨԙÂĽ Ŕů®î„íŇ‹ĹRRR”ł3ݶŤYe9V-Ţ]nąyŮčŢ„i %ĚdĚEZ—ËE+*AÄýC]0Á Ť†g#éďž}FGgg% ¤„řĽ>­V[`Č/ł*ˇŽ$iŁŹ}óńÂÂő°mëÖ‡ů*Ť—č?!*Uf椴4u·ß±ˇnkH+ˇUK çŘřöú^·qj”GOźóP×ëć8ΦłŢ[q¸ŁFĆ–0ËľŻTÜ»ćîű?>qňlËą>ż˙Źřý#_ýú¸émťV›ŞJí şeůi6đş K9€ź˙ě'ţ@€&\<ýô ůťQúŘjoĐßŕj.5-˝iÁ¶ťW?Úlj>ëďóĹkä-˛8/ĺ-Ş«Ź&ěËbHpOFŁQ•JU`Č7đ:V2é¨Ę.°yă["Ye˛n‹GŇŇÔ‡ĺ˛3€Â)Eńľ±ĄĄAÄűTK]0‘Ńô,űUúßQ¶Ďhj«Ă#«zIH†‹ş{Ý™“2—N^ÔÔÓˇ!l@]ľâvŻ®Ű@AŁ0PWTQŞhĄ}j!ż»«ó˝m"–¤7€Ęʸ ČözČ|Ź â†Ě—&.j•JŻ×C¦"ýlźq¦ąqŚ×éîľ@C)1ýÁ@(Ҩů%…ł•ÓŞ:GËƆ­>ő<ĎżóÎŰ4XâˇLUÔŔë<—Ä‹;0ďú94âs †B>źŔĘ)K8UšĽŤ©î:ÝęmÓë ŹűłĽŕW^[çď.Ž<DZzń˛„‹rŞ´–2ďľ·Ťćü(Ř˝w?€ Ką,ß‘ŹłŰďĐë },/ăÄÉŮ{I.ç%ćEžŔĽśěě„72‰Č8…ĆČŔ±ŠxY>~Á˘Ĺcďa#g˛gBB¸7č0Ś=ÚU!wb‚$ŚN\L&€g­,AYé™ P˙¤…Ż©°”łČ_…Đěę\˙éf¦Ťţđéď·wś?]WC%ŇCř€Ű’rTQK ćjÔüÁý{ÄŽZş®rM‚ nŹ'Ždđ&%śĄm>˝' VVÎąqÁ ˘Ńč?˙ü8čdV/ţX× Yî>Ë>Ť™Ý‰Z˝dÓëöÜż‡ő¤, 8Ţő €űżüŕP/˘Ń­[6ÉŰKr9/1/ň¶Ž„U€ÍÍÉIx#cŃsN—k Ť~X%9V™yíX3BÁ.ůKúň0›3â}#=DĽ0:AŃňŤF÷¶“Ąů†<ŤÍgÇş›¤d9`.LPFĐ`ś~ÓF‹K¦ýđéď\ý1 VÂŃiµ‹%%%µĆYűVÝ娢EćśRs‘Ďç}ůŐuâŢhJ!Ui 8~©]=±X´ÂR^dΑ·%!!ĽíĚnŹ}óńl» €ł§gűűď&u÷ňÇq\ ü¸«^–̰NđÎ;iŞŹší»>0Ű>S–»×9Zzn›=çšÂÉC˝ćčńjy»H.ç%›6 @çů„9/Y¬Yb´“mËĺšBŁF‚cŽă–.»eŚ‰Ć˘4*ŤÄýÓćî0­4n·ĎöövZW ".Hť¨U*sf€–EÔ0đş ŢäóyÇîđHÉr14?ďZE5Ěé÷¬=±ľŰď(.™öÍż}Ľ±ţ VÉ0™Ěf3€c]ŐŠ*eeŕu+§,đ›çţSÔ$zsŞŞh&ÄČ E"·ŔĘ)Ëd?KkvuëŞđ˝§žâyŔŢýÚZĎ&o÷¦§§8ÖuB–]™µ0755Öźm9GS}Ôśm9×ÔXŻQóeÖBYpĘQŕ®»Ö ő˙ŃŹČŘE˛8/xťFÍű|Ţî+D*P …ÂáŚSht0%WÔc•ąsŞĆn …ŘtV‰űÇň(,{L{Čž ℄щHf椔”ÔWsu×iYoĚđÉÇGi,’š^W€ŮöJE%Ô á u[\Íz˝ańŇĺ\Z ÖŘQĄ¤NĘĚdOŕ[Ď|°Żő¸˘š·˘h‘4Iôľrö\š>+N}çÔĄ˛7f_ëńnżĂfĎąď‹«Ů_^xń÷IZlT­RiµZµÎfY0?w€÷·ĽK“|ڰ>¬˛_'ËÝ?îŞgU&†©f¸çOĘŐ9śZ €Ő[”#ŻĐذXěü\Łć}>ďŔW2)(ł˛pQQŹUn7?!×€Eg”˛‹ÜA[vÜÓ†L8"^HťpdšÍiięŢ {{łlżůĆlµuu4IM(QfB=€~·aďö#¬Vë¤ĚLU -wcz&±fYYýŤ˙ýt“,ţĂŔśč%H˘G"*UÄĤçbO,-0äWÚ§ĘŢmÍ{YAjf8‡_ýŐděUV]´ĆYë úĄż{‘9'7uwu­>I3|Ś­>éóym:«,‡Í!!|ĘYŕŽŰVůvąäŠ­V§±LĐč¦Í›eiÇ1ç%©·YéÎÄiLŁpщ‹ľ>?€ůyIPđGšc••«V%ęRˇP€U7IâŽęö;°˘ŘqµÖéčA#†„Ń SEl;łŰé—Íł¨ČśŁQóMŤőä^:>čéą‹EKÍEʬjĬę»ýŽ´4µ5+KŻK§!9,}Ţl63«Ą u[e JîaI•¶şôVß^/A…»†Ä¤?5żşôŮSçhaWž|â;ě/Űw~\O’¬¶‰\ᢹF Ő?YwšćvBřčČ1–rYNĽAŤłŔĽął‡zMGÇyYŠN¤ĄĄhóž—řľ&Ţ =qÎK%ĹŢ6Řçő(0äË~řôąHp¬’ꛓŔ=[8Ć%­\JÜA€Ľě¸?ČEeÓD0:QPE·žů ŮŐ)cKŠ3 ěŮý Ęř "˝˝nK'/’¸ňÎqú=ę¶2· S†Éj±¨U*¸Ď…ç¸ôů­g>ŘŃü‘r čXQ´ů~Ľ˝é= n—ŔĐ‚wŔ IDATôşzA°é¬7äĘ_•b{óŢ »¸dÚÝ«o‹Ĺţç~›,=©JIMO×8ĺh”Ą,°qóĆ·$Őź(ß·gçö-Ę-E˛4€ÍĄ;×ÜĂ|É®$†Ř›ÖKß01ę蓺Ć(3Ű»Uě"9/ Ģýýýćç]§ä©.ͱĘ-7/Kdß ^ÍIÜW,PÚbŤ[mlj˘E• F Ł‚ÁިěĹ)Ź~üáďďďďďרů•EŠ+6Ę á}­ÇYZ=ÇqYYV ţy;Ăd˛Xţ’>Ż´˘˘ŚJűÔRs‘ĎçýŻç~-Áíz@!uą\ćÍ•ý,-$„75ě°ćîűŻ)ś  ĎďýŐ?$EOę ú””ÔVo›,ĺM Ľ®ÂR`ĎźҬN ü—¬şĄ§Ăălő¶éő†kˆ,|şQjµeŔyIâÓY¶@5%Îy‰ă¸±ŰŁ.ʇ=m)sCÎŕXĹj™4µ,‘Ço‘p@!_âľrř/(›÷gqąziE%‘CÂč8G­ReYłX]ŃŤ [eW7˙ ĺŃŹ?Ü˝îp8bÓY•Yl”Ńěę\{b}«9%%•BG‡BËk¬YV–ˇy ýČk5›•–>ĎČ5ZXiŃß<÷źŇ¬'‰ = K0ęëë°şôVŮÝť~łé{úé˛(ąšÚOO×Ő(żY¸čˇöă˛ÜťĹŁíÜľ…ÂEËŮ–sMŤő5/Wy˘ŹĎ׸˙Ëő‚h4şńí7%}–‘Éy)+=@÷ů„ĄŮ٬RdaG! iÔü,ű4eNriŽUćÝ07±bŃX,ĘÚ/ew]đ÷ČÉÎŤ÷ŤÝ(•ž  ŃńŚ^—ž•eeôë?Ý,o=ŁÜ:Ŕű[ŢĄŃg±hŻ«‡UB‚äP0·úĐQ›Íf2ɰţłg•Ęj±dNĘT©T­Ţ¶WjŢ<ܡPuŔŔëÖ”¬°îµ—kë$¸c~nNbCb"Óëv3ăľůy×ĘŢĂ5,Jîńo“ýĺ•×ÖÉRHqäč´Ú””ÔnżC–pQN•ĆtŤwßŰF“9á°Mr•]žTčfWgoĐmłçĚ©ň»ůń‰“’Î7™ś—Śś@KkK˘.XXX MËYĐč «B…Q ŽU ý‚E‹~Ůp8Ŕ(­0ʢlöśˇ \ …Ăy‘–S‚9$ŚOxŽłZ,¦ SJJj«ůŐšM2ş- Ö2¨N˙8&‰0Çá…ys‹Ě9Jn* e&z˝ŢšeŐňš‰éóym:k®Ń"Kupă’%Cî÷BˇŁ¬=r9/ĺ›rÔ7$¬t€Ůl–¦ĺÁPH„ ޤ@[TN•ĆŠŞ‰z¬2ďú9b\–ů/ĺ˛%î´Vo€śřý—ÚZĎŇŠJ#„„Ńń“D- Çq˝A÷Ɔ­ď6ěUe ;!iľr9/qŞ4Ťš@ýNĘV,•1îx(رĘö]w‹ąsŞD2ą GÂŚĽÔ‘úzXăŻQŰŃŮ ‚ F ŁIĎq™fsN¶Ýl6H˘kO¬?ÜQŁ(C¤BMśőV `FLĽéľ˛UĘ×FÔ9ZÖžX ýČ‘GY”([4X9Ń˙ýt“’sç(łζWřńŹź=ßŐ-ÍM‹¦R¸(ADT”š‹*íSeoĚľÖăÝ~‡ÍžsßWłżĽđâď•Vl”ç8¶ŮkęéĄósçŘľ•Ş‹ŠH0Üą} €*űtYPël°|Ĺí¦!5  oJaÁ¤R©¸CRďO¬é&ŐŐ ;~>’ŁŻĎů⎇ÚĹIp¬rĂĽů"]Y\ %–’ ţ‹ §ĹűĆ––VZN b„0š”¨U*ťVËôP‹Ĺ˘˝Të™(‰bP╨'„„BbŃ‹N§ňMę‡;j®”GuZí8[:2Íf–8ϢD™$*‹}Ç(öÓ«¦Ü ŕą_ýR2UŔ]wÝM_j‚Źh4 `Aîő˛Ç]ƶć˝HpůŠŰ™óL8~ýőWŐ]¬şč±®˛ěôʬ…Ľ©»«S×»‰Ě®Ýṵ̋”ÉrŔě úYöeKnę5çE Ž 8žĐć–:đ-K7 @Ë™ćÄ}s ź×ů⎯ ;VŮżwŻx·Q6Ýbµ‰tń Шy‰ż•¬ŽDIIÜnZ˝*M#…„Ńä€S«µĽĆd4NĘĚĚɶŰl6łŮĚôĐŢ űXWő+5oľVłąÎѢĚ4X.*Ć ˇdŹD\ 6©żµh^˛4űJyÔl6Űm6“ѨV©’zDX© ›ÍĆÖŤä’DXtĆĄ“Xű»çŹVKç‡;{ÖLńvŘAĹb±XLŁćW-’˝1NżgĎą|í±że±rÍgZöíŮĄśÝ ý¸«^–°’…ëßxťć­Řśďę®®>ŞQóĹ™ą˛4ŕPű'nąő Ăxaż±Nô™đYQżÔţÚY陎„í‘r˛ĄvěbŃţţ~\ňxť"s;Vu·rŐ*qźB!\ (–ňń$ ęő†a"¸ŻŠ×«¬Ś‚P2ję%lsSR˙˘P§¦¤˛ÓQŐ .{K <çmoót6ąÚĽAżÂ? ×±pŃ7ŢXOĂ=qE"N‡ÓbµTXĘěhN—&Źî¨)łÎĎť“Á›ôz˝^ŻýýýÁ@PE“ĺłhyŤV§Őhř””T¶t4ö6j˙DůëĆ`,:ăýÓďÔ¨ůťŰ·ě?xXşĹ™ăľpŰô]&±‰FŁ*•ŞŔCnĹáŽySçh)67—š‹ž|â;Ďţä§¶ďü`FŵJ8#Ń N9ëd9Ď5Zl:«Řş1Ŕţ˝{++çĚĎť#‹Ë–7čoő¶ň—Ţ´`ŰÎ=W}MSłčeFÓŇÔ.ř{%ţř¬Žd[GÂ"UKŠ‹ĄDź×«ŐjK2Š÷ŞŽÉ:3+»"«äçć˝Płlú,Ý$‰ şű/ňÍćŚxKŇť®«ˇzP1H=••s^M˘3óŢ Űň´ą;=!o›çBr‰óó®cІŮݞě3ŠD.^ě±X’Ox<®s´ä-3¬%–rŤFŁŃh(\!UĄ¤r7XĐíwďú¤©§CáŢJW2X}uÝ)o˝xŃ‘ę÷qŃh455uaŢÜ&W«ěőŽ·7ČŞ°—L[ą|é¶ť{b±Ř˙üĎo˙éźź•yË®RiµZÇ»>•i;Wŕ]ŰEşľÁ żç®5Ę™“Ť†×|,)DźO†Ř«@†Ö”k´Č’Ţq¨ýxÁôü›oY1”0CěÍ˙]wď—oΧ¤¤"Aé| ůč6Éš%ý†"‘P(¤ářYöiňž9ĺ-†|źĎ{˛î´xw‘Ŕ*“ Ł&^ęÍa›»łŔ?­´8Ţ9ŮŢŢ>q„Q)Ĺ9ô´Ş\mÎV†PČát‚¸ě‡ş@vč9đżÁHčBź€'äu}ÁHHůŽ(Ă˙VXĘ}>obÍčĺÝg#' ą\.łŮ\a)oóś—%ęaŚtxśçŢ–cĹ™ąĺÖ©†ü…4 …Bˇ¤Ä“˝ť<Çi4Žă¸A¶Q˝A÷)G}­ł9ąNSQµZ&-[ľ’ľÂ! ±X¬ŻŻ/==}eŃ’ u[ĺ= áM ;ľRqď=ZßĐt¶ĺ\źß˙ú«xđáŻĘŘ*V]´ĆY+ËznŕuL×`†éb°ä¦őoĐëÓÓÓهCá‹®éŰŔjVŮ+:<{Ąż{‡ÇŮtŰě9s*Ż*LřÄÉš{ż$VŇÔişű/H?Űtw%˛°©\!ç>Ż/sRć «ĚÂč k €Íß âmŰ$X@€^Ż·¦[$î@OČ ŔjµĆűĆ—‹61HĺFá˙?ň{ꇑ°´`ű!L¬˝ěű bäřűűÍćUSn>HFm”='łRŻ+6ççsJÍEUČ€XŚç¸H8"M$©ZĄJS§q̢x  Űď8ĺ¨oóśOęc•U´©±~Ă˙m’řî·a}y BJĽ/Çń6ťu~޵űZŹËۧßs ýČÂĽąO?ýĂ'ž|2 ÖÔ~*cN˘*%•…‹˛ĘŹŇĂĘîÚńľHş†Á _°h1} .ĂçőéőúRs‘?"‹ ~¨ăčŞ)7áö;†F…hô[oľU”_Lůś—2tžďHÔóssäšBýÁ€ Ľ©ĚZ(×ÜŔëXęxÇ*ćÝ0W‚Ď‹F8ŁÄ}čúL)*‰÷ŤÝÝ0 qf„ä-_šľšúáęOÖÔ„xÜ[ÁĘQ •“Ľű ".Ƈ6úŮŁ{Đ_Ýuşşë4§:o´gäň2xS €”‹Ĺ@ABˇ‘° ,čc,ŹÄę45+@Ěę_¦„č şŰĽíM=­mGŇĺË_É`UôçżřwńB ®ĘěY3©$AH síłfeͶW6şZe·†;ÜQ“oĘ)0ä?úđż}ńeŻĽ¶îG˙řʞTŘĐô\Ír…‹2]c÷Ţýb‰×ϡŻŔUżýýýZ­v~Ţu˛Ô#Şs´ĚĎu—L»¦pňP9Ľ?:"–0*“ó’U7 @Ý©„…XÚlrć·y<łŮ\nť*×ö›«ěÜľEĽ˝śd'+ˇH@o’¸ŮbqüĆôÝĘ&AÂ(!˘®±0o.€ç˙űy‘n!ď>‹ÁÚhľ±6éęŤ^eo$„›]ťÍ®NöĐĄËČ7f[Ó-†ü«j—±X4ް˙‡Ă±ŘŮ÷)))iiiěżÓŇÔuB/# v÷_hsw:üLJ:xőQ5ôäąDň¬«‘ĎçÓëőkJV®=±^öemóé=ŹÍĽÁŤKkëęö<ŤF_XűÂwżű”ÄÍPĄ¤¦§ëď’'¶Ę>ťé"e˙p7oÁ"š˙WEv˙śSŽú…ysďşkÍü깡6x5ź|\qݬ„ßZ.祬t €sçÚuÁLłYĆ) c±h!_–bµś*­$Ł€HEŐRž¬„Ă‘´4µôťŮíwŘtÖl»-.ÓŽP(ättS†%A|.$Śb±˛h €ŤoŻO`ĺňËČɡŃdb@MR/¦ađýŢ ź‰¤,:ى×[u“L˝‘7Ú´Y5ź’’: •^ďůą´zŰ´ą;Bč‚˙˘ŁĎ=ž”ĐÁČ«ŠřŠ[És‰ äÂíńp§ářE ßmŘ+ocBBxŰ™ÝkJW=öÍǛϞďęîęęŢţţ»+ľ éىޠOIImő¶ÉEË©ŇfXĘDŐ5ćΩ˘UwČIxÉ?§Ü:Ąşë´ô ř¸«~¶}feĺś “q(e|ÇÎ] Fet^ĘŇYôôşuÁĽĽ<§‹öőůőzý k‰ôkČ,ű4Ťš?¸ŹHÇ*üdE"iijŻď€¤ťézl:kf†)^7㋎ $Ś©­ýäÍ o=ţť'©+ţęG‡ş€ĹU6ťµ©±ţ˝m»Ä»ËÔiÓ©«“‹q¬ŤĆé÷8ýžťtŕŮŇšţYęMľ!{ř+´yĎł˙đýIę›4:TŃęęŁĎ˙÷ď¤WE‹¦VΞK_U‚—Ë••e-5•YĎĘ^zĄŮŐy¬«z¶˝ňŹý ;ŞŮ»˙@ůŚŠü‚k$kĂĄę˘ňÔ]eşFuőQńtŤćͧi? Ě?§Ę~­,ÂhH7ö6UXĘď¸mĺP.çŶֳ‰ýRČ弄K‰ŇńĘOĂ ĺrqUúúúôz}…ĄüPű'Rî*9UÚlűLŰw} Ţ]$>Y‰D"ŚśAâAĽĐç,5MžśW[ß×›š¨<A|.WFͲFűÇKjj*Ť˘Ň(2ç̶Wxaí‹âé&ăŚ×NäY¤V«ě¶±Ęň}Ź ŃTUj…ĄÜČ7źŢ3^#Ż|´8¨—˝vž2‘Ń~`Uůűż˙ž^o±&ňr”t$ä#Ó_µ?c1¤¤`éäEmž ˛ík=žoĚ+.™vßWłĄéŻüń—żüĄ4kEJJJjjjoĐ-×Ó5ŢygŁHׯšY‘¨íśx¤qi˛/qĽ©ČśsŮ™«4j˙¤ÂRľ|ĹíţoÓPű;¶˙㏞M`˛µQzçĄ\Ł@Sc}·S¦É>?c±XJJJ•}ş”ÖvĹ™ąěXEĽôA÷éÄ®ĆĂ÷gJJ €|SÎáIk›°b»e3*âµîđ÷ů¤\ľHśI Ú::÷?żyöÇ?Ą®řËÔĄ. .m¬ś˛ ŔÚß=źŔłÖ+)ş¦€z;I‰!˘ ů÷•­âTiÔ'D™µđ+÷ʨŠřęW–W%bŕ>‹iÔüŠ"E”žÜÖĽ7 ._q{ů´R}~˙o~ýźR>dę8*×ĘĚ ›§kÜ{˙—iÂ.ŃhŔ¬lyÂľĽA«ŔŇ› őš¦ćźĎ›đ[{B^‰?¬‰×8Óܨ š3LJB±h Ŕ K™”»îůąslß*buŃŞ™˛ěÜ4*ŤÄwdĹvs˛să}cŹ«qg[ŰůĘ#Ďţó?RW|¶Ý˘. §J[Y´„Iűő^Ó§MŁOâ‡^ĢB4ŘtÖ‡+V[tF꓉L™µpŐ”›ȨŠ.š7wf%Ů"„R`JP!żŇ>UöĆ8ýžđwO|7ĂdPßĐĽçmbß—…&őݲŮIçÎđţ–wĹÚËM-±Ű©^üvM±ű:xť, `Ć_w®ąg}Ýď_řź„Oţ }=Ň,Ý$‡#Q,-.RÄB,hÔ|ąuŠd[» ŢÔÝŐoęw\H˛ÂľŚ6ťUâű˛ä [ü ćŮÖ6ZB âs!a”H$wN]ĘJ‹nřżMbßkŢ›¨Ă“{—ŹXTb@oşúťEfz4š ÜZ4Ź©˘Ďýę—r©˘ö,ë׿ń- ‚PL]V°H ‡gŐ]§\Íz˝áÉ'ľĂţňÚş ]]âćů¦¤¦8ŢuR–Ź\dÎaşĆŃj±°bĹ­4ĎGşkŠĹĚĎ»N–»wxś­Ţ6˝Ţ0§rČş'ë_Őé÷HüI­éő M‰ş`Á5×(e EŁŞěU®(·N°ţŤ×Ĺ»…Ľ'+Ň˙01#Ök 'ÇűĆ–† Ćg[Ű(h”q•Ł^Ż—N ŇÓÓYMzBvn-šW`Č÷ůĽI—M ‡#.—k"Ϣ] ®+Ş„ď»Á ×đš5Ą«v·~(‹±!ś*mEŃÂRs‘Ďç}iíoĹ{öžă}ôŃD­'´Ťç=“Zm0ü%e/!y"ŹřHúSź®×h5+‹–ĽVłYöO˝˝ů@V…Ą¸dÚĘĺK·íÜŤĹ~úÓźýËżU˘+MťfĘ0"ÁZÇY>/KÜO×ČĎË-(,VěҡŐę4ţł ‰x˝^yŰ“ššš™™Y’QĽWuL–â쵎Ó†üűżüŕŃę¸ę AXű»˙ľçľ/Ź˝?Ůäg2ÄŘ´Y:Ď'¬Xş.]ŚI>şů™iÎĚŕMeÖB±ĐsŤöT(ęÖná‰ę۸úÓdĘ`Ćô ÷ž äçćÄ[Űäě™ćI‰ĘŚ’8“t°śúüĽÜ§žúţůČA­ľ\˝Š0‰D‚ˇP˛|*ŤFCłY ÜZ4ŻÂRîóyüăg%0’ž>}Zgi˛Î˘Xlěť „ď{đbŹÉhÔëőË eĄgîm96Aě&8^·şô›ÎĘÖ QKĎš;o7™')ä‡o"/GIGB>2Ťřđý ÷Z9«Mg]\P%ĄgČU ámgö~iúęz´ľˇélË9ŻĎ÷úkŻ ĄŤŁŃŕX× Y~t 1•3ŻSňşÁqđ™P‹*b‰ …BŽ/·N‘ĺąÎŃ2?×młç”O+*9úxő'w¬ůâŘű“-ŚŽ>© Ç8UšFÍű|Ţ>ËŘs'‹1yF7?˝^Ż)ĂTnť*¶0Zeݰyă[âÝ"?7§¸´,Q}W´4˝U7Ib34wŔŔjµÄűĆÖsm3%ZÁHśIV&ŇN^Ť]ůGJĄ'@™µ°ÂRŕżřą4ęFĺ¬ŮÔíă ·ÇÓs±'‹VXĘď+[%W -BĘGîGfÜÍ*oüŕO˨ŠÎž5łrö\‚P&B,Úsń"€ŮöJć-/çö#ž~ú‡<Ď8öń‰Óu‰÷&V«TÇ"ÁŹ»äIĐ5D:í6ô -¦>ݦB_ «ę°bŐʡ^Ź~t ó_­pÁQâhM7hL\ޱŐ2IQS¨żż?‹ňEM7đ:– ´çOE|¬ś)W7†ĂaYéR˙$µyĎ(śwŐÚÎóçiý$>gvut>˙ë˙šČ=@Â(1V\SžűŐ/Ĺ3-ĚŚ˛éşt=őü8Ł?p:śápĦł>2ăn*9:Ž©´OýŇôŐ5p˙žź˙âß{ÝąZ’ź›#R¨A‰"‰ř|>+§,‘ŇOy(wÔ°b‹Ź>üűË+Ż­ó÷ů{.ÚŘŰ$K¸(Ó5§k,ąéFšŰŁŘ) ‚ŔRˇei@­ăL ¬¬ś“m2-wű®ÝcżQZZäp^Ę7dh9Óś¨ Ú˛˛5…„XÔďďP•].Ţ]X%ÜCö‰—D(ďÉŠ x5'ń}}n%%qű_p8AźG[GçÓO˙Ă„•GI%ĆÄ`UT˛ú€×ϡpŃqűô{Ńé 5ż¦tŐ ąÔ'ă N•vGé’e‹¬{íĺßľř˛•7†ŮU?úµŻÓ „ňq{<áp$7­(Z¨„öloţ0 .¸qéŤ nŤF_XűBŻŻV©XŤ¶CíźČň™®±sű‘–hŽă(\tt° Qfk#Ă>Më:ŕ–eCźŻŻŻ­őěXî˘JIU©TĂyɤŃ8ך°8ł9CqSČçPa))=‹SĄ±<ÂwßŰ&ާ÷d%Ž(0äK˙ D‚z˝!Ă_ŔŻ×ëAĂBÂ(1zdQEŤĂÔ2ŇËĆ-B,z±§ÇÝë°0oîCwRZý¸Á˘3>\±šeWýüg?ٶsŹŚŤá8˘Řs‚Hzz.ĆbŃRs‘ň ĽA˙¶3»<öÍÇYč\WW÷ö÷ßMŘVÇhPă¬őý2,ŹâësçTŃ”ҤBC­łŔň·#ÍlxóͱÜBť¦Ć%n‰ÉŇepşzuÁ’âbĄMˇ ô÷÷(·‰qýYöivnß"^>ÇqňUbŃX, @ú‡”îţ •ŕ.FÉb\2asęI%FÉ­Eó¤WEÜ<ô51nđůűśNgw×yJ«7TÚ§~ĄâŢ ŢÄŠŠĺŰ wÝy{~Á54.‘,DÁăöX9e™Ěš]ťÇşŞ|㱿aĹF÷î?0Ć@9†*%•™#Ë.*¶®ÁqÜŇe·Đ”ҤB7čŻqÖX¶dČ=§łg,Ĺ%är^`ÓY$°22w}}}fŰg&Ľ8 §J›mź ŕÉ×ţąsŞd?؇#Ś’˙±ďŴҸwçĹ‹ ‘11sęI%Fó ‡äŞ(ĎóUd“21†B±XʡűXZý­Eó”PZŽÝ.ůž˛[YúüĆ·×?ű“źĘXT”±|Ů2\"¤ĂçďcµVV-RB{µźěö;ŠK¦Ý÷ĹŐě//˙ᕱŐô))©­Ţ6ąÂEĹÖ5J‹‹(ZL_„K©Đr틎źŻpË­_`GWCěŤuŻŹúúr9/± ܦÄ9/q§Ě© …BˇFÍgć&öĘĹ™ą5_]}TTŰ %ś¬0˙%V”VJŘ÷ÂjµĆűĆÎÎNZ< bH%âŢ1ßSvk…ĄÜçóţčGĎH©ŠXĽp^:m¦' B,Z0Ąô÷/ü·Ďç­°”?\±Z –ÄD\™s›y!źĄĎż˝é=Ů›4Łlú˛ĺ+ih"éuő˛<âJűTŮÂŰš÷"Áĺ+n/źV Ŕßß˙ú믎Đo.“ IDAT嚪”Ôôt€CíÇeůPĺÖ)bë+W­˘™<"‚p)¶Wzś~ó›;»r¨×4ź}ô´JĄ†ÎK&^ ű|Âô#›Uą»V4:?wNb/Ë.¸}«ŐEâÁËĘŚ˛˘´RâúL)*‰÷ŤÝÝhń$âb˘ĺÔ“0JÄ×ÝW¶Ši?ţńłŇxĐŔóükľHŁ0ŃXyűšźüř٦Ćú ŢôĄé«TQčhRŔ|–Ö”®bîóO<ů¤ěéól?ýĐ#_ĄŃ!$EE]=˝ä^/WŤĹÁ8ýžđwO|—•\l>Ór䣣ľ V«eá˘yL„«ě×BL]cFŮt‹ŐF3yڰ ŃÖir5€ ÷w®ľk¨Dc±ŤoʞŇhZšr8/Yu“´´¶$ę‚6[–b§żż_„ Ţ”ŔrUeÖ ŢÔÝŐ)ę~O!'+áH€‘—úgý4ÇoLßMĆôDüL¨śzF‰‘RdÎydĆÝ6ť••<ßŐ-q/ś§×h & O|÷©˙ËĎÖ˝ö2€ŮöJ MŠĺâ±™÷3źĄµż{^^÷ůż<óX&ÝýĹ{ht"©éúúú4j~eŃ%´§şët«YŻ7<ůÄwŘ_6nŢâtŚrʤ7č||^— tŤĹ‹Ó;ÁP©ZeÖBYĐáqöÝ6{ÎśĘk‡zÍŃcŹâĘ<Çčö;¤˙Pů¦çε'ę‚99Š.‘ďóúĚĘNĄmąu*€őoĽ.^›‹¦*ädE6­ ÚwoĐ €ůţŤśP(4öJ/1Ž!a”7äV D~ýü˙.}‰Ŕ “‘ÂE'2˙öożŘ±kď÷ż˙Ô@ččĄK(tTxÝ=e·˛ĺ˘şúč~đôţ‡•Đ0«eŇ·ľőm*lGăŻÇ+‚Mg˝!·B íŮŢ| 7č..™¶růR±XěwżýÝ(®ŁÓjU*UoĐÝě’§\•ý:©käçćë]˘đx<¸$EÉÂˇŽŁľpűC˝@FŹĆ=ť¦NpÁ/CÚŻ‰3č8ß•¨ Z&MRňęďďg•I}źk´°śBQˬݴh‘Bz/"4j^ú‡‘ ~'€Ě SĽoL= 1™ 9ő$Śź×=TqçÂĽądŚüşmĺ­.:ÁůůżýâÂÇł?ůéÚß=ďóyKÍEŹÍĽ_ ećnČ­xdĆÝlgüÜŻ~ůżzNvź%©˘1žbQ—Ë`aŢ\%$„„đ¶3{<đĐŁ×Nŕíë{kĂń^Çh4â’Ţ$=ąF‹MgíîęO׸ĺće4{E0L Ş5 ę-H°¸d›óWeëŽ]ń^–ă9ČQ`”SĄeđ& Ü·L-«PňbŃ@  *»|ěW«˛WŘĽń-ńśź›Ł¨. …B¬é&‰ď{ˇĎ `ňäĽxßŘŘÔD+'1:&BN= ŁÄpTÚ§˛ôůî®Îýčą"ż®)ČżeĹm4ÄżţüßT*őţ‡đ§îߣQóË =Tq'eÖËN®Ńňő™÷,Ě›«Qó;·oyâÉ'%vfRE bü …X™Ĺ•S‘=Đáqh?ŕé§ȬşŹ}|ât]ń<DZpŃ:G‹,a~^€vméú^á:Qr!Ģ~?¤jŤŽc]'¬¸ĺćˇ^ŕďďol¨‹ëšęĎ"FĄ¶¤gňVuőŃNxĺĎ"w\a)7đş1}X^ÇŞ'íůÓAK+g*ë;(˛tRÇ;üĆűF—«—VN‚ F‰!áî)»uYÁ"–>˙Ě?ţHb«ĄÁ<řŕ4"ă_˙ő_µZmŻŰóŰ_ţůĎ~ŇÝŐiÓYYfýwuÄč°čŚ÷”ÝúĄé«3xSScýŹ~ôĚ«ë6(ˇ˘čgŹ:¤ŠÄ8Ĺíń„Ă‘ Ţ´¤p¶Ús¸Ł†Yu?úđě/ŻĽ¶nä5ÝX¸č)G˝\+9 öO×XrÓŤ4i ;»Ş5j>ŕĆĄĚyěŞlŢĽ%®k2ç%éÍÇĽĺčNX}–5 Îě#‚”[ŠĆrťůy×8t`źxŰ?Aż`ŃbEőFy'őo_Đ ¸4n˙%·ŰMË&1ĆwN= ŁÄĺpŞ´r+ľ1óËl‹üóźýD^ă”E ćŤÂzŹÇ<űěŹÓÓÓÔÖ7<őýX÷ÚË,łţ3żLžőRbŕu·ÍűJĹ˝l­Xű»çźýÉOeźŔüÜŃś^pŞ4¦ËďÚ˝OĽÎťSĄŔ](Ŕ<»$Ćô°3â}ŁÓqA\ F‰ż’D»»:™—´ňa—/[’_p 1_yôëłgý%J˘×íůŹ_=÷Ł=Cň¨°Äy&‰2‡ĄÇ˙Ö«ë6(Äw~0¤ŠÄ„˘çbłç®´OUB{µźěö;ŠK¦Ý¶ňö——˙đĘ0«.Z㬕%\”SĄÍ°”AĚ4XeŠă¦jUŮŻ“«Ç»jܹ枡^Cě˝w7ŹäRr9/±"­Ý]ť <ĺµXmÉ2…üýý‚ dđ¦Qx™–[§hÔ|uőŃó]Ý"5Źă¸ĄËnQf×…ĂŇ{Ŕş>“ âŽíč¤lz‚âş`Âbŕuĺ–˘Öi줫»«sýŻ+ÇHşhJá˛ĺ+iáąçľ/çŘíďný‹‹îŮ–s˙ń«ç®)ś|×]k*+ç,Ě›;Ű>ó”łîx×§Ţ źzl4›{ť±*»ś%ZŘą}Ë»ďmS Ę U” &B,ęęéÍś”ą ÷ú&W›ěK}HokŢ{˙ô;×Ü}}}Cm}żż˙­7×?ňŐŻ_e#®RiµZ\JI–žYöiL×oUW¬¨1>đ÷÷gdl:k®Ń"˝g€ŹłŰď°é­s*Żę9âÄÉš‘\J.ç%#ŻĐyľ#QĚĎÍI®YÔß߯×ëççU˝U·#®7VŮŻđÎ;Ĺk[iq‘b7u‚IKS›x}$ť´mŢó §Ä]\¸óüyZ3 âŞ0:)ł›Ż)5¶65Öżżĺ]ĺH˘LÚxđÁ‡i¤‘°ŕ¦ĄYŮö—^úc ±?^&ŹÎ¶WζWÖ8kO9eylH޵˘Ü:•ĺ—Ań’(€eÓzä«4p1ŃčúűűµZíęŇ[^«Ů,{{ś~ĎÁŽ?/+XôwO|÷?xş×í©«o8ňŃąó^öJV]´ĆY+—žËŇ`ĹÓ5f”M§“*±éëóëőúÖąv8Ç»>Y5ĺćűżüŕŃę¸ę „hôť˙[˙Đ#_ć"śZ ™ś—ň ŮęNŐ$ę‚&“)ą¦ĎëKO×ň ĽnäkQ™µĄŠšh¸rŐ*Ĺö[$`ä ß×ŃçPż;ń=ÄŐ!at˘`ŕuůƬ|cvIF±FÍČüHQ.Ň8Ž»ďŢ{iMŚś’Ҳď}ďď˙ëżž G"˙ÎäŃ “ńŽŰV._q{…ĄĽÂRŢíwďú¤©§C–¤ĹdY.Ę-Ełí3ŮZáóy7o|ëŁ#Ç”,‰‚TQ‚ظ{ÝÇŮtÖr+wÔČŢžę®ÓůĆśRsŃ׾öŐ˙řŐs6mŢRT\28ÁV•’ŞÓi?_+K#ˬ…5ßÔX/ŢVPɢƸˇŻŻOŻ×WXʵ"‹Â^çh™źë¶Ůs®)ś<Ô\účȱá…QuZwP†ťFVş€3qšQN¶=ঋA­V;?ďşÍŤđ]¬€Ăú7^uk§ä˘ápx`ţHIH"A˝ŢŔó|\őĽ^‚¸ęouÁ8Ƣ3fĄgćłłtY6ťuŕďMŤő{vpäXµŇüR~é>*-JÄ=Ű­¶gžyć7żůuŹ«÷˛bÖLţoÓŇ›Ü|Ë ›=gŐ”›“Ť˝M@:N•Vś™;8D”…“ź¬;­Ěµb0wܶjÁ˘Ĺ41abQ—Ëe±XćÍmrµ:ýňälo>0yf^e圕˗nŰą'‹˝ôŇKO˙ŕ™č ú””ÔVo›\­ev+ďoyW¤ëM)L˘J‹ÉKDXÄtąĄH®Să]'—,şë®5ěŕJúüţ}{v,^z뛎9/ɰ+3ńFí‰s^ĘËËKşYäńx´Zm…Ą|o˱‘„ä-6ťµ»«SÔ¤ĂëçĚVr§ ‚00$¦»˙B!?'Űď±Öéşš©e´lÄe0:®Č5ZLĽŢČňM96mÖ@d(źĎűÉÇGkëęNžŞSrŘ×·­˘ĹšştýÓ?xćĺßżpş±ůĘ ŰvîٶsĎśĘko\˛¤˛r í ş›\g&xŇ"sNqfÁ@8ąĎç=t`ß®ÝűÄ+Ąź@8Ž»ëÎŰ+gĎĄŻALp‚ˇP___zzúęŇ[_­Ů${Z@HolÜöĄé«xčŃú†¦ł-çz\˝omxăžűľ @•’šž®p¨ý¸\+?KO׸i™ŃKD__źV«ťmź)—0Zë8ł ÷úĘĘ9ŮvŰP›‡÷¶'ڦĄĄáRńD‰aá# Üó$c„GD€FŁ™eź6’Y4?Ż Ŕ»¶‹×¤üÜ…?Cˇů#1Ž>g!ZiqĽÂ¨óâĹ© ârHMV˙]ľ![Łć¬égdJéîęlj¨Ż­«kl>›Ĺ|cçŃŻcßîťŰwî\rt0G«O­>™a2Λ;›˛ ¤Ý~Ç)G}›çĽâŚ$€SĄĺ­őPŐŐG÷ďÝ›!˘ A˙ČCQŚ9AŚ^·›ăř Ţ4?ďÚ}­ÇeoO‡Çy ýČÂĽąŹűńgţńGÁ`đŘÇ'®­¨ZVÁkx.*WâÂ¬ě ™«|Qc< …Âá&Ť/łÖ9Z¤o@HźrÖͶW޲lń«ë6\ő5çĹ3ÍŤSŠJ®ľ-á8\*ž(ý#USc}ÂöW—¤Á|>źFىĽnŕu†|źĎ»çOĹkĎ‚ůó”ßi‚ ¨T*‹Î(ńăĂ˙EVkÜš¬Ë墓 ®„„QĹaŃy5Çţ[Łâ¬şIźí/M94*Í0§RMŤőÝç;[Z[ęš:Ďw'‹´ÁQ6ťTQ"!,^¶Ľ¨¸ä…µ/^VrôŻž=,€ôšÂɋ̛żp±MoµX°Ň6ĎůfWç¸\aňŤŮ¬ňÝŕĄcĎîN~Ő§îGżöuŞGLÄ_-ď®kVÖl{ĄB–ńĂ5%™SlöśG~ŕ·/ľ ŕµu˙űĚ3×Řm6µŽÓ˛´*×haşĆÉ:±˘ĆxÂçóšÍćůąsdFďút¶˝růŠŰ‡ńi|饗~öŻ˙vĺß™óRoĐ-} ·‰×č>ź°µÂfµ$é †B‚ hÔź/ŻĎĎ»Ŕ®ď‹÷°i0č“" Ł&^/±0ęúXmqWłmiiĄŐ’ ®dśŁ óć.Ě›Xy”ŐŐGqÉ?±ľˇ)&ELčP(Á5e΢qL~Á5Ď<óĚ‹/®í<ß5ü+϶ś;ŰrîŐuʧ•VUUÎ_¸8Cob1¤\ÍmžÎd#đ^Ë7ä -Ż®>zôČ‘¤ÓCłgÍdé¨ăZŽ&4â $‰¸{ݦ ÓšReŮţ,¸qim]Ýţ‡Ă‘Čá–””X5ĺćUSdkŇćŤo‰¤k$‹¨1žđ÷÷gd2xÓ÷ć~]Ţ–Ě›ű˙Ú»óŕ(Ď;OŕŻ$ÔBR·„ „#N™KĚeĚ)o`Y0¶ńcâ©;ńf2YĎdău9S©­™­ÂI¶jk=žÚ#Îd<ÎÎd*c{&łY;ëŘ ±ńµńAŚńA„¸ŘťHčŘ?š( `›C­~»ßĎçŻV I/ż÷yß~űŰĎďyçý䙟ť÷[nkk- ?űi~~iÜř=M{ëWM0>sGQKKËgĆ뉂˘™ĺWAđěsżHÝ–¬XvmfĽâtwÇb±t˝ÜÔ×ĎżŘi’Ó»Ş!ă1:Ľż«µ­őô%NkëŔëô®÷>‚ ÓĐór/iRˇ¨8ţ‡_˝ďÉýpű+Ż]Čż{×{oďzďŻ˙Ű1Ł+/ś?sÖśI“§M)«Mά<ŮÓµ·u˙‘öcűZeÄýšŞKĘGŤ¬)©UT~fÚ|řŕ›oüżwvľ“Aýňg±¨(đéÚ:Ú ‹ “ťąˇrű[’«-Z˛$ýUJel¦„Y¦˝˝#OņŤ›~öóÎ{ŤŃô˙ůý/÷ýŃ×Ď}eOď6'ßg О˛˛ĚBńzuIů']î^Y^Á3˙çS÷±z,Ë”>ÂŢžŢônŔ§¬ę{^ÝÝÝímÚ­ŕ,Śžhi9Ńň»“ňŹ˙á‰m/l·_3HRQŁ(‹]ăÍsçÍ˙˙ó»ÉőŃ/ġĂÍ?zňÇ?zňÇłę¦NŻ›>{ÎÜĘŃU!iÍGŹt9q˛m_롖®Ž´ß¸)QPTRPT“3޸Ľ´ ä¬7î˝–)Ë ŠŠň‘_ř²ř6ÇNGQcʧČŃc§ßŇ;ÚüťďüçľţţPmŢ7˙ăźćääüŰ/}q`‰äÇľ˙˝_ď|';ŠźAˇFźOö55>üČ_„p#wťď™ź8ńń‰ß­.zěhó·ľýť Ý ăĆŤĎčQ”Ś×玞y ĺąóÝyůóFĎ ‚ŕ§Ď>źşmX0n¦”«­Ł˝­Ł}ŕË˙ţßŮý›=!ßć}MŤ©[:yJÄăĹĹĹAüŕ±ď=ťĘˇ%ŰfŚ®[żqÝúŤŢWdŠpŢmiÝúŤABYŁfü÷ß˙_~ďѦ}ű/껺ş’wj ˙ŰĄ%ŐcFO›6eÂÄÚúúů•Eg…ŹM­űşzşŹ´ëęí>ŇńaWOw*şďcyůĹĄAÔ$ĆAPSZőIëđţ®o˝±·iďţCÍY3Í<»Ű睎°ÇSˇĽ˘rőĘĺĎ<ű\Ř6¬żż˙Ńďýĺ׾öµäĚťÍ[îzwçŽGż˙XÔÁ7ľń`÷°žĘgôČikm‹ÇăSĘj/źűÁ˙•‡+xýőWSwm‹ĹV®jČĐęÝ}Ď˝A|ű[[Źű0´ą˙ţ!»3Ţí›ďęíëűż©\u…VzŇĆ=č2EĹń{żü•¶=˙O?yş·÷Rz^>>Ńňń‰–·w˝—ürĚčʱc*ÇŤ7abíäÉÓâńÄřDMgŢŃčôvť8ŃýŰé'.ni˙ä-ׂϺëZ͇=M:v´9ăRŃŠň‘™>lzűű:;; Źťýôîł?Ą›;zV˙÷O¤n¦LŞÍôFď’’DŃĎĽDPvŁ&\„˙˘9䇩ÇYiÉŇĺS§M˙ëÇ;Ô|ä2ŐˇĂ͇7żúú[É/ ŞĆT–—Ť(Ż(ݍ¨¨¨ť'&MžÁ‚Ň%>“áéĺhkk}˙ý]Á7^ ‚ qĎŢěŢqµ'ÜqÇť‘]ÉéČçňÝ}Ď˝áě©ßąë˝—·˙rÁ˘k‚ H®,”é=őłfÔY˝.$’ó.CŘSާçŐíżśżčšĎÜţŻýńeVO}II" FNKKKaaá䓞Ë{­»÷ÔŔóuF”6>Ň+Ď5k×fzďľçŢ0÷Ôź8cŮŠ!pëmw6|nť«B.kgŚz_Z‰D|ËćÍŃf"aĎĘ7 _˝ďŹź}ć'?{~[OoĎ`ýÚ®®®äÝíĎýÖŇ’˛˛ÉÇÓ¦Lş¨_»wďţŽ“'“Źł>ýg~,v±?ŹÇÓ5>§LťŢĐĐÎQTZ’¸zÁÂKřÁ4Ö3<ŠŠă .*/+y÷˝÷űúúžˇ2˘´äK_üý›6ÝÖŐ}J5˛űt”Y†ĺĺ|ŮÖŢnŹgP=“ćΛ_?gÖKŰ_ UG}çÉ“tôʧ—š=§ľˇˇáđÁýGŽˬcäćM›JG”eÇń^‹Ĺ~{ÉÚ×Ű×y˛3ŁŻy¦M™ŞĚ˝±±qń’k.pűëçĚzńĹ k¶şˇah>ĐMőřěíí-.**Ę/ü¸űŁŁAđąÚĄ# Jźzâď>Řݢ˙TMuŐÚu˛éxź;o~ăoŢ?~üă° ÔqŐUcŞĆq=Ă|UC¤.ř‹ óňň’Źsrrrrr‚ ČÍúť·nýĆ­[Zşd‘qśF‰DüË÷~)9…>CG‘!”•ęç-xŕć]5G)Âă_®ZţgöźćÔĎW §#ěńTHöÔ‡m«^űŐďîÜqć3›·Üő{[6gPakŞ«2ý~ÜŮ-ŮSží9zěĂŽö¶ ?l·n}hëÖ‡b?ÁbČÄb±lš…×ŇŇü¶}>QP4>QÓÖÖúłźżşż¸dqľŘÝ}Ď˝[·>¶»r8x0]ÚU ᔫ¤ÚĽ«ćÜ÷ďîs­L8Ç7Ýrű—ďýRMu•j¤ýMő÷ýöÍwĹă ŐRgŐukj'NŰV=öř˙:+'ʬžú†ŐV »°ÝÖćŹ_Üj•!﩯¬(ϦŃŇu˛«żżŻ˛¨˘ş¤|ńŘŮAüôéęęęJŃźK$âYĽ¦|ŘîĘuđĐ!çC8S–·ŇĐSź‰DüŽŰnąvĹęüËűt7 ­ß!śüŻ•~0‹9˘ěę ËËJö4íí>Ą}{¨U”ŹĽuÓMk×m(-1ô­µ™řŠ–5§ŁĚ’–Öď,ŢăéŞgR{ęűúúŢ}wעE‹žÉ žúŠň‘믿!›Ž÷ljĄ¶žúăÇ?^ÝĐpQŰćžú)“kÄČ‚ńŮôçććĆb±QĹ#'–N‚ŕĎyädĘ‚ŃĎ]·zÜř ŮzĽ‡­§~X^Ţ.d‘Šzę©Ďŕ·ĚŮŰJ•`Ô8Äb±Řâ…W˙›ß˙â t”„'Č UÂ.tcŞĆ.[¶<·żgßĘ24‰řç®[}ëmw$Ďé J2îE- NG™%˝ă3űöxÚŹ÷˘âxN_ĎîĆ=ácmmí˝Ýť“¦L=óÉŮsęÇUŹ~ýÍ·Â|t¬^ą"ŤˇF&%é<~G”…'m?~ěČ•3g]ÔaŰĐĐĐĐĐđ‹_üř'K–.W ]'ü°őÔ?żí…}MgßŰ$ä=ő‰DÜ™<ł„§§ţŤ·v\ÂO…ł§~ěرY6Nzz{;;OGZ…ʼnšęŞŃ•ŁRń‡ćĚš‘C/<=őg­j ˇŁI>šH©uÓ·lٲhń5{CĆPÍp ĎÔc3FS'?›2uúÂW÷őtn>˘D+9ŁüÎ;·\9söYß2c4j§ŁĚ’öń™e{<$Ç{{ęß~űíůóçźą QČ{ę—/]2dĺ†LĎ ÂÔSß›šrŇ éIDATßßźÓwjâ¤É»ý!쩿őö;˛o|ööôwwwçäćŤ]YWW7čc&‹Ýyç–ü´NG˛z†§§ľ¦flę¦ů_`=uôf­ôŢIňR‰&…0Č CÂ.M5ńč K6ÎoÚtó•3gź÷ X0µÓQf ÉřĚš=žă=l=ő§Nőm>4§ţŞłžgO},»íöĎçg]ŹEv٧äpôÔ>ÜĽ|ůŠK8lCŐSźHÄŻ˝vYöŤĎŢľľá---˝˝˝Ą#ĘJG”íxëŤööŽAüőłgΩźťă=$=őŁ*ʧLť†zš¸–IŻŮŚłwąĚ‹€9łf.\´xPÖ…0ž:‹ăëÖo\ąŞaű ۶żňjkk›š\‚Šň‘‹.Đk „ÓŞëÖěnlÜý›=!Ůžť»Ţ{yű/,:űć!ě©_0n*>gh¬Y»ö×;ßIď6ttvîxóW3g_u ?žžú%%Ů:HŽ?ŢsFôĽé¦›žzę©S==‡›Ź Ęď_±rU˝’’ÄŃc¦qöěir„Qś1šäىË4ŁnúĘĺËnąőóS¦NOőq8g8¦}걣C)?›X;ůÚk— ĎďhooimU“ ?W¬[»fýő7\HĂŽŁQ;e–đŚĎěŘăa;ŢĂÖS˙î{ď/^´đ¬™!쩿ë®ßËĎĆ%ąŁ0c4MOýţý®ąféĄmHzęgĎš‘şůwéź}ý˙ě¤X:˘l{ęgÔM_´řšďiď©?ŮŐµrĺĘÔSGo¦0c4;­[żqÝúŤ?ţ‡'¶˝°Ý(ż‰D||MÍĉWÔ_5Ďě€Q!K–._˛tůľ¦Ćçźţ˝v‡pí˙đś.ćĚšąrUs…Óöx¦(ݍ\˝rů3Ď>†Ťéëë{řá‡˙ý×ď?÷[›·ÜőîÎŹ~˙±´o䌺éNňY fü3ꦧqęčGÇŹďkj¬ĹĄ¶[·>Á7ľń`ŻĘŞ«Ş"5`‚ ¨UŃ|äčeţŞĺË—Gö¸»űž{ řö·¶¦eęhwwwG{[¨Nŕ®jH#­ô|†Šň‘•ŁFMśxŸqă/íz˛ňŠpó–+:ÚŰvĽőú믿ŃŘ´OM’b±Ř”IµWĎź7µn¦j'T=ő~ôŃ?úáĆo>÷[!é©ĎÍÍąü]™Ţžú'źzęľňŐKţń´÷Ô—WŚŠÚąüžúšę*ď.ÓŘSżŻ©Ńĺ:$E·•~€žús_˘ĆŐŚť:eňę•+Öo¸~Ůň•łçÔŹ?ˇtDYş6)ä­ßéšüŻ•>íňc±ÚÚÉkÖü«E ” ?t¸ůdWWd«Q;qÂŇ%‹7mşyŢü—Ľč°Vú¨ťŽ2KÇgFďńĐď§{ę_ząż?ý]őűś6eŇą×`a詯ť8aéµ+˛őxŹH+ý€´÷Ô·¶¶-^Ľč’—eH{OýŤ7ݵńyů=ő7Ýp}HnS‘Ćz¦±§ľ˘|äÄÚÉˇŞ§žúÓJźĺ"ŰS_S]Á„ ă ‡;věČŠQîˇt9Ł(0ů?ŞFŹ®ÚpĂÍn¸ůŐW^zéĄíM{÷Ąw=ő!‹ĹjĆV]YWgy §#ěńlR^QązŲôÔżůćź4©*˝=őË–.5T˛í­Aúzęűţí/l[uÝšË9lÓŐSź|KÍ\jO}"7]1)]=ővUI‚ŃěTQ>rxAAňq¬ V5fLňńäI“‚ (*Žk[€] &®cG›ß|ýWˇşÇńŕžaĆŹ«™T[[?oťdĄđôÔo{aűěŮs>éĘ-]óűjŞ«„Y)Ť=őŰ_yőr‚Ѥ´ôÔ—––FyĚ\ZOýŠe×:ÜÎ4ô=ő'NśPvHĘIv ťŮK{üřń.·ą<Ł++ŐS=Ő3 b±˛˛ßu8nn>÷߼ţÚËěŢťéÓHî˝6uÚôÔM-żz˘žę©ž¨gĘ_őâńâââäăSݧ><ţ‘š¨§z~’}MŤA<üČ_\řUĺţ‰zź¨çĐYö/ňcůÉÇ999ąąąŁ©V?oArfeG{Ű»ďĽ}ŕŕÁ={šö8ţ-Ż©®Ş¬5©¶¶füëlpž+Ƌ쩟3Ë|s DŁC¤¨8^?oAýożÜ×Ô¸woÓńăÇ÷ěiú¸ĄĄµµ-˝›—HÄG””L0ľşŞŞĽb”7¸@ŘS‹ĹV®jP. <Łé1° é€wwîččč8pđ`gggsó‘“]]©čľŹĹb•ĺAL0>‚É“&Yw€ËĽ˛Ý°aCđY=őłfÔąc'*‚Q€°HŢȢţśçŹmţđčéĎŢß˙ŕ‹úťÉ[®îş@*]HOýŠ•« Á(@Ř•WT,ńé.Ŕ„Ö§ôÔϨ›nŮz lr•¸|Éžú›nĽńÜo-_ľ\}€°1cçí©Ż©®˛¬BfŚiÓM7ŐTWUWŤI~ٰÚę˘@ F€Á”ě©ßxýőA$q ĺᤕdÉŢůšęŞúú9Ş„“`H‰ 6X]-­ô@JHE0Ś‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"'§żż?‚ŢŢާzzzúűú•ćräÇňŐS=Ő3çĐÜśaÆ |yŞű”š¨§zŞ'꩞™.///7ďô ’ţţţžS=j˘žę©ž¨§zfşaůĂrrrN_;ĺääććç F˛Ň@0Ş•Á(9ĂÎ}ęäÉ®Ţ^Ë\–ââbőTOőŚ‚ĽĽaÇ |ŮŢŢ®&꩞ę‰zŞg¦‹Ĺbůů§×dďíí;y˛SMÔS=ŐőTĎLW8Ľp`ÍÖç F;;;şş»Őërś<©§zŞg+ĹÎ|#ÚÚÖ¦&꩞ę‰zŞg¦KÄăoDűz{ŐS=ŐS=QOő̱üŘąÁ¨Vz rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 DŽ`Á(9‚Q rŁ@äF€ČŚ‘#"G0 Dΰsź*^‹Ĺ”f°©§zŞg¶ĘËűggŃD<®&꩞ę‰zŞg¦;óę(7/O=ŐS=ŐőTĎ,›—wî“9ýýýAôöö*Ýrrrrss­ô@ F€Č9˝QNNŽZŮm =˝Ć(@thĄ"ç˙ĆX®dÇ[&ŰIEND®B`‚bioframe-0.4.1/docs/figs/._bioframe-logo.png0000644000175000017500000001000014420777331020152 0ustar nileshnileshMac OS X  2°âATTRDâŕ@ŕcom.dropbox.attrsúcom.apple.lastuseddate#PS com.apple.quarantine  µ‚§m#qTvbîŕÚ•&fĹ^I=Â0082;5ec56627;Preview;This resource fork intentionally left blank ˙˙bioframe-0.4.1/docs/conf.py0000644000175000017500000000623114420777331015067 0ustar nileshnilesh# Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import sys sys.path.insert(0, os.path.abspath("../")) autodoc_mock_imports = ["numpy", "pandas", "matplotlib", "requests"] # -- Project information ----------------------------------------------------- project = "bioframe" copyright = "2020, Open2C" author = "Open2C" # The full version, including alpha/beta/rc tags def _read(*parts, **kwargs): import os, io filepath = os.path.join(os.path.dirname(__file__), *parts) encoding = kwargs.pop("encoding", "utf-8") with io.open(filepath, encoding=encoding) as fh: text = fh.read() return text def get_version(): import re version = re.search( r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', _read("..", "bioframe", "_version.py"), re.MULTILINE, ).group(1) return version version = get_version() # The full version, including alpha/beta/rc tags. release = version # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ # "sphinx.ext.autodoc", # 'sphinx.ext.doctest', # 'sphinx.ext.todo', # 'sphinx.ext.coverage', # 'sphinx.ext.mathjax', # 'sphinx.ext.ifconfig', "autodocsumm", "sphinx.ext.viewcode", "sphinx.ext.autosummary", "sphinx.ext.napoleon", # 'numpydoc' "myst_nb", ] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", '**.ipynb_checkpoints'] # nbsphinx_custom_formats = { # '.md': ['jupytext.reads', {'fmt': 'MyST'}], # } # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = "sphinx_rtd_theme" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] master_doc = "index" autosummary_generate = True # Don't include fully qualified name prefixes in autodoc add_module_names = False # Cache MyST (.md or .ipynb) notebook outputs if unmodified jupyter_execute_notebooks = "cache" execution_excludepatterns = ['guide-performance.ipynb'] bioframe-0.4.1/docs/api-vis.rst0000644000175000017500000000012514420777331015666 0ustar nileshnileshPlotting =============== .. automodule:: bioframe.vis :autosummary: :members: bioframe-0.4.1/docs/api-validation.rst0000644000175000017500000000013214420777331017215 0ustar nileshnileshValidation ========== .. automodule:: bioframe.core.checks :autosummary: :members: bioframe-0.4.1/docs/api-resources.rst0000644000175000017500000000013014420777331017073 0ustar nileshnileshResources ========= .. automodule:: bioframe.io.resources :autosummary: :members:bioframe-0.4.1/docs/api-lowlevel.md0000644000175000017500000000330614420777331016512 0ustar nileshnilesh--- jupytext: formats: ipynb,md:myst text_representation: extension: .md format_name: myst format_version: 0.13 jupytext_version: 1.11.3 kernelspec: display_name: Python 3 language: python name: python3 --- # Low-level API ```{eval-rst} .. toctree:: :maxdepth: 2 :caption: Contents: lowlevel/arrops lowlevel/specs lowlevel/stringops ``` Low level array-based operations are used to implement the genomic interval operations on dataframes. ```{code-cell} ipython3 import itertools import numpy as np import matplotlib import matplotlib.pyplot as plt import pandas as pd import bioframe as bf import bioframe.vis from bioframe.core import arrops ``` ```{code-cell} ipython3 starts1, ends1 = np.array([ [1,5], [3,8], [8,10], [12,14] ]).T starts2, ends2 = np.array([ [4,8], [10,11], ]).T ``` ```{code-cell} ipython3 bf.vis.plot_intervals_arr( starts = starts1, ends = ends1, xlim = (-0.5,14.5), labels = np.arange(0,starts1.shape[0]), show_coords = True) bf.vis.plot_intervals_arr( starts = starts2, ends = ends2, colors = 'lightpink', xlim = (-0.5,14.5), labels = np.arange(0,starts2.shape[0]), show_coords = True) ``` ```{code-cell} ipython3 arrops.overlap_intervals(starts1, ends1, starts2, ends2) ``` ```{code-cell} ipython3 arrops.overlap_intervals_outer(starts1, ends1, starts2, ends2) ``` ```{code-cell} ipython3 arrops.merge_intervals(starts1, ends1, min_dist=0) ``` ```{code-cell} ipython3 arrops.merge_intervals(starts1, ends1, min_dist=None) ``` ```{code-cell} ipython3 arrops.merge_intervals(starts1, ends1, min_dist=2) ``` ```{code-cell} ipython3 arrops.complement_intervals(starts1, ends1) ``` bioframe-0.4.1/docs/api-intervalops.rst0000644000175000017500000000016414420777331017436 0ustar nileshnilesh.. _API_ops: Interval operations =================== .. automodule:: bioframe.ops :autosummary: :members: bioframe-0.4.1/docs/api-fileops.rst0000644000175000017500000000012714420777331016530 0ustar nileshnileshFile I/O ======== .. automodule:: bioframe.io.fileops :autosummary: :members: bioframe-0.4.1/docs/api-extras.rst0000644000175000017500000000014414420777331016374 0ustar nileshnileshAdditional tools ================ .. automodule:: bioframe.extras :autosummary: :members: bioframe-0.4.1/docs/api-construction.rst0000644000175000017500000000014414420777331017620 0ustar nileshnileshConstruction ============ .. automodule:: bioframe.core.construction :autosummary: :members: bioframe-0.4.1/docs/Makefile0000644000175000017500000000117214420777331015227 0ustar nileshnilesh# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) bioframe-0.4.1/bioframe/0000755000175000017500000000000014420777331014422 5ustar nileshnileshbioframe-0.4.1/bioframe/vis.py0000644000175000017500000001166214420777331015603 0ustar nileshnileshimport itertools import numpy as np import pandas as pd import matplotlib import matplotlib.pyplot as plt from .core import arrops DEFAULT_FACECOLOR = "skyblue" DEFAULT_EDGECOLOR = "dimgray" __all__ = ["plot_intervals"] def _plot_interval( start, end, level, facecolor=None, edgecolor=None, height=0.6, ax=None ): facecolor = DEFAULT_FACECOLOR if facecolor is None else facecolor edgecolor = DEFAULT_EDGECOLOR if edgecolor is None else edgecolor ax = plt.gca() if ax is None else ax ax.add_patch( matplotlib.patches.Rectangle( (start, level - height / 2), end - start, height, facecolor=facecolor, edgecolor=edgecolor, ) ) def plot_intervals_arr( starts, ends, levels=None, labels=None, colors=None, xlim=None, show_coords=False, figsize=(10, 2), ): """ Plot a collection of intervals. Parameters ---------- starts, ends : np.ndarray A collection of intervals. levels : iterable or None The level of each interval, i.e. the y-coordinate at which the interval must be plotted. If None, it will be determined automatically. labels : str or iterable or None The label of each interval. colors : str or iterable or None. The color of each interval. xlim : (float, float) or None The x-span of the plot. show_coords : bool If True, plot x-ticks. figsize : (float, float) or None. The size of the figure. If None, plot within the current figure. """ starts = np.asarray(starts) ends = np.asarray(ends) if figsize is not None: plt.figure(figsize=figsize) if levels is None: levels = arrops.stack_intervals(starts, ends) else: levels = np.asarray(levels) if isinstance(colors, str) or (colors is None): colors = itertools.cycle([colors]) else: colors = itertools.cycle(colors) if isinstance(labels, str) or (labels is None): labels = itertools.cycle([labels]) else: labels = itertools.cycle(labels) for i, (start, end, level, color, label) in enumerate( zip(starts, ends, levels, colors, labels) ): _plot_interval(start, end, level, facecolor=color) if label is not None: plt.text( (start + end) / 2, level, label, horizontalalignment="center", verticalalignment="center", ) plt.ylim(-0.5, np.max(levels) + 0.5) if xlim is None: plt.xlim(-0.5, np.max(ends) + 0.5) else: plt.xlim(xlim[0], xlim[1]) plt.gca().set_aspect(1) plt.gca().set_frame_on(False) plt.yticks([]) if show_coords: pass else: plt.xticks([]) def plot_intervals( df, levels=None, labels=None, colors=None, xlim=None, show_coords=False, figsize=(10, 2), ): """ Plot a collection of intervals, one plot per chromosome. Parameters ---------- df : pandas.DataFrame A collection of intervals. levels : iterable or None The level of each interval, i.e. the y-coordinate at which the interval must be plotted. If None, it will be determined automatically. labels : str or iterable or None The label of each interval. colors : str or iterable or None. The color of each interval. xlim : (float, float) or None The x-span of the plot. show_coords : bool If True, plot x-ticks. figsize : (float, float) or None. The size of the figure. If None, plot within the current figure. """ chrom_gb = df.groupby("chrom") for chrom, chrom_df in chrom_gb: if isinstance(levels, (list, pd.core.series.Series, np.ndarray)): chrom_levels = np.asarray(levels)[chrom_gb.groups[chrom].values] elif levels is None: chrom_levels = None else: raise ValueError(f"Unknown type of levels: {type(levels)}") if isinstance(labels, (list, pd.core.series.Series, np.ndarray)): chrom_labels = np.asarray(labels)[chrom_gb.groups[chrom].values] elif labels is None: chrom_labels = None else: raise ValueError(f"Unknown type of labels: {type(levels)}") if isinstance(colors, (list, pd.core.series.Series, np.ndarray)): chrom_colors = np.asarray(colors)[chrom_gb.groups[chrom].values] elif colors is None or isinstance(colors, str): chrom_colors = colors else: raise ValueError(f"Unknown type of colors: {type(colors)}") plot_intervals_arr( chrom_df.start, chrom_df.end, levels=chrom_levels, labels=chrom_labels, colors=chrom_colors, xlim=xlim, show_coords=show_coords, figsize=figsize, ) plt.title(chrom) bioframe-0.4.1/bioframe/sandbox/0000755000175000017500000000000014420777331016060 5ustar nileshnileshbioframe-0.4.1/bioframe/sandbox/parquet_io.py0000644000175000017500000000756514420777331020617 0ustar nileshnileshimport pandas as pd def to_parquet( pieces, outpath, row_group_size=None, compression="snappy", use_dictionary=True, version=2.0, **kwargs ): """ Save an iterable of dataframe chunks to a single Apache Parquet file. For more info about Parquet, see https://arrow.apache.org/docs/python/parquet.html. Parameters ---------- pieces : DataFrame or iterable of DataFrame Chunks to write outpath : str Path to output file row_group_size : int Number of rows per row group compression : {'snappy', 'gzip', 'brotli', 'none'}, optional Compression algorithm. Can be set on a per-column basis with a dictionary of column names to compression lib. use_dictionary : bool, optional Use dictionary encoding. Can be set on a per-column basis with a list of column names. See also -------- pyarrow.parquet.write_table pyarrow.parquet.ParquetFile fastparquet """ try: import pyarrow.parquet import pyarrow as pa except ImportError: raise ImportError("Saving to parquet requires the `pyarrow` package") if isinstance(pieces, pd.DataFrame): pieces = (pieces,) try: for i, piece in enumerate(pieces): table = pa.Table.from_pandas(piece, preserve_index=False) if i == 0: writer = pa.parquet.ParquetWriter( outpath, table.schema, compression=compression, use_dictionary=use_dictionary, version=version, **kwargs ) writer.write_table(table, row_group_size=row_group_size) finally: writer.close() def read_parquet(filepath, columns=None, iterator=False, **kwargs): """ Load DataFrames from Parquet files, optionally in pieces. Parameters ---------- filepath : str, pathlib.Path, pyarrow.NativeFile, or file-like object Readable source. For passing bytes or buffer-like file containing a Parquet file, use pyarorw.BufferReader columns: list If not None, only these columns will be read from the row groups. A column name may be a prefix of a nested field, e.g. 'a' will select 'a.b', 'a.c', and 'a.d.e' iterator : boolean, default False Return an iterator object that yields row group DataFrames and provides the ParquetFile interface. use_threads : boolean, default True Perform multi-threaded column reads memory_map : boolean, default True If the source is a file path, use a memory map to read file, which can improve performance in some environments Returns ------- DataFrame or ParquetFileIterator """ use_threads = kwargs.pop("use_threads", True) if not iterator: return pd.read_parquet( filepath, columns=columns, use_threads=use_threads, **kwargs ) else: try: from pyarrow.parquet import ParquetFile except ImportError: raise ImportError( "Iterating over Parquet data requires the `pyarrow` package." ) class ParquetFileIterator(ParquetFile): def __iter__(self): return self def __next__(self): if not hasattr(self, "_rgid"): self._rgid = 0 if self._rgid < self.num_row_groups: rg = self.read_row_group( self._rgid, columns=columns, use_threads=use_threads, use_pandas_metadata=True, ) self._rgid += 1 else: raise StopIteration return rg.to_pandas() return ParquetFileIterator(filepath, **kwargs) bioframe-0.4.1/bioframe/sandbox/gtf_io.py0000644000175000017500000000105314420777331017700 0ustar nileshnileshimport pandas as pd def parse_gtf_attributes(attrs, kv_sep="=", item_sep=";", quotechar='"', **kwargs): item_lists = attrs.str.split(item_sep) item_lists = item_lists.apply( lambda items: [item.strip().split(kv_sep) for item in items] ) stripchars = quotechar + " " item_lists = item_lists.apply( lambda items: [ map(lambda x: x.strip(stripchars), item) for item in items if len(item) == 2 ] ) kv_records = item_lists.apply(dict) return pd.DataFrame.from_records(kv_records, **kwargs) bioframe-0.4.1/bioframe/sandbox/clients.py0000644000175000017500000001342714420777331020102 0ustar nileshnileshfrom urllib.parse import urljoin, urlencode import os import posixpath as pp import os.path as op import pandas as pd import requests import socket import base64 import glob from ..io.fileops import read_table class EncodeClient: BASE_URL = "http://www.encodeproject.org/" # 2020-05-15 compatible with ENCODE Metadata at: METADATA_URL = "https://www.encodeproject.org/metadata/type=Experiment&status=released/metadata.tsv" KNOWN_ASSEMBLIES = [ "GRCh38", "GRCh38-minimal", "ce10", "ce11", "dm3", "dm6", "hg19", "mm10", "mm10-minimal", "mm9", ] def __init__(self, cachedir, assembly, metadata=None): if assembly not in self.KNOWN_ASSEMBLIES: raise ValueError("assembly must be in:", self.KNOWN_ASSEMBLIES) self.cachedir = op.join(cachedir, assembly) if not op.isdir(self.cachedir): os.makedirs(self.cachedir, exist_ok=True) if metadata is None: metadata_path = op.join(cachedir, "metadata.tsv") if not op.exists(metadata_path): print( "getting metadata from ENCODE, please wait while (~240Mb) file downloads" ) with requests.get(self.METADATA_URL, stream=True) as r: r.raise_for_status() with open(metadata_path, "wb") as f: for chunk in r.iter_content(chunk_size=8192): f.write(chunk) self._meta = pd.read_table(metadata_path, low_memory=False) table_assemblies = sorted( self._meta["File assembly"].dropna().unique().tolist() ) if not set(table_assemblies).issubset(set(self.KNOWN_ASSEMBLIES)): raise ValueError( "Table assemblies do not match known assemblies, " "check ENCODE metadata version" ) self._meta = self._meta[self._meta["File assembly"] == assembly].copy() self._meta = self._meta.set_index("File accession") else: self._meta = metadata def _batch_download(self, args): params = urlencode(args) url = pp.join("batch_download", params) url = urljoin(self.BASE_URL, url) r = requests.get(url) r.raise_for_status() return r def _metadata(self, args): params = urlencode(args) url = pp.join("metadata", params, "metadata.tsv") url = urljoin(self.BASE_URL, url) r = requests.get(url) r.raise_for_status() return r @property def meta(self): return self._meta.copy() def info(self, accession, width=850, height=450): from IPython.display import HTML url = urljoin(self.BASE_URL, pp.join("experiments", accession)) return HTML( ''.format( width, height, url ) ) def fetch(self, accession): url = self.meta.loc[accession, "File download URL"] # sig = self.meta.loc[accession, 'md5sum'] filename = op.split(url)[1] path = op.join(self.cachedir, filename) if op.exists(path): pass # print('File "{}" available'.format(filename)) else: print('Downloading "{}"'.format(filename)) r = requests.get(url) r.raise_for_status() with open(path, "wb") as f: f.write(r.content) return path def fetch_all(self, accessions): return list(map(self.fetch, accessions)) class FDNClient: BASE_URL = "https://data.4dnucleome.org/" def __init__(self, cachedir, assembly, metadata=None, key_id=None, key_secret=None): self.cachedir = op.join(cachedir, assembly) if not op.isdir(self.cachedir): raise OSError("Directory doesn't exist: '{}'".format(cachedir)) if metadata is None: metadata_paths = sorted(glob.glob(op.join(cachedir, "metadata*.tsv"))) metadata_path = metadata_paths[-1] self._meta = pd.read_table(metadata_path, low_memory=False, comment="#") if assembly == "GRCh38": self._meta = self._meta[self._meta["Organism"] == "human"].copy() self._meta = self._meta.set_index("File Accession") else: self._meta = metadata if key_id is not None: credential = (key_id + ":" + key_secret).encode("utf-8") self._token = base64.b64encode(credential) else: self._token = None @property def meta(self): return self._meta.copy() def info(self, accession, width=850, height=450): from IPython.display import HTML url = urljoin(self.BASE_URL, pp.join("experiments", accession)) return HTML( ''.format( width, height, url ) ) def fetch(self, accession): url = self.meta.loc[accession, "File Download URL"] # sig = self.meta.loc[accession, 'md5sum'] filename = op.split(url)[1] path = op.join(self.cachedir, filename) if op.exists(path): pass # print('File "{}" available'.format(filename)) else: print('Downloading "{}"'.format(filename)) if self._token: headers = {"Authorization": b"Basic " + self._token} else: headers = None r = requests.get(url, headers=headers) r.raise_for_status() with open(path, "wb") as f: f.write(r.content) return path def fetch_all(self, accessions): return list(map(self.fetch, accessions)) bioframe-0.4.1/bioframe/ops.py0000644000175000017500000017052014420777331015602 0ustar nileshnileshimport numpy as np import pandas as pd from .core.specs import _get_default_colnames, _verify_columns from .core.stringops import parse_region from .core import arrops from .core import specs from .core import construction from .core import checks __all__ = [ "select", "select_mask", "select_indices", "select_labels", "expand", "overlap", "cluster", "merge", "coverage", "closest", "subtract", "setdiff", "count_overlaps", "trim", "complement", "sort_bedframe", "assign_view", ] def select_mask(df, region, cols=None): """ Return boolean mask for all genomic intervals that overlap a query range. Parameters ---------- df : pandas.DataFrame region : str or tuple The genomic region to select from the dataframe in UCSC-style genomic region string, or triple (chrom, start, end). cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. Returns ------- Boolean array of shape (len(df),) """ ck, sk, ek = _get_default_colnames() if cols is None else cols _verify_columns(df, [ck, sk, ek]) chrom, start, end = parse_region(region) if chrom is None: raise ValueError("no chromosome detected, check region input") if start is None: mask = df[ck] == chrom else: if end is None: end = np.inf mask = (df[ck] == chrom) & ( ((df[sk] < end) & (df[ek] > start)) | ((df[sk] == df[ek]) & (df[sk] == start)) # include points at query start ) return mask.to_numpy() def select_indices(df, region, cols=None): """ Return integer indices of all genomic intervals that overlap a query range. Parameters ---------- df : pandas.DataFrame region : str or tuple The genomic region to select from the dataframe in UCSC-style genomic region string, or triple (chrom, start, end). cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. Returns ------- 1D array of int """ return np.nonzero(select_mask(df, region, cols))[0] def select_labels(df, region, cols=None): """ Return pandas Index labels of all genomic intervals that overlap a query range. Parameters ---------- df : pandas.DataFrame region : str or tuple The genomic region to select from the dataframe in UCSC-style genomic region string, or triple (chrom, start, end). cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. Returns ------- pandas.Index """ return df.index[select_mask(df, region, cols)] def select(df, region, cols=None): """ Return all genomic intervals in a dataframe that overlap a genomic region. Parameters ---------- df : pandas.DataFrame region : str or tuple The genomic region to select from the dataframe in UCSC-style genomic region string, or triple (chrom, start, end). cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. Returns ------- df : pandas.DataFrame Notes ----- See :func:`.core.stringops.parse_region()` for more information on region formatting. See also -------- :func:`select_mask` :func:`select_indices` :func:`select_labels` """ return df.loc[select_mask(df, region, cols)] def expand(df, pad=None, scale=None, side="both", cols=None): """ Expand each interval by an amount specified with `pad`. Negative values for pad shrink the interval, up to the midpoint. Multiplicative rescaling of intervals enabled with scale. Only one of pad or scale can be provided. Often followed by :func:`trim()`. Parameters ---------- df : pandas.DataFrame pad : int, optional The amount by which the intervals are additively expanded *on each side*. Negative values for pad shrink intervals, but not beyond the interval midpoint. Either `pad` or `scale` must be supplied. scale : float, optional The factor by which to scale intervals multiplicatively on each side, e.g ``scale=2`` doubles each interval, ``scale=0`` returns midpoints, and ``scale=1`` returns original intervals. Default False. Either `pad` or `scale` must be supplied. side : str, optional Which side to expand, possible values are 'left', 'right' and 'both'. Default 'both'. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. Default values are 'chrom', 'start', 'end'. Returns ------- df_expanded : pandas.DataFrame Notes ----- See :func:`bioframe.trim` for trimming interals after expansion. """ ck, sk, ek = _get_default_colnames() if cols is None else cols checks.is_bedframe(df, raise_errors=True, cols=[ck, sk, ek]) if scale is not None: if scale < 0: raise ValueError("multiplicative scale must be >=0") pads = 0.5 * (scale - 1) * (df[ek].values - df[sk].values) types = df.dtypes[[sk, ek]] elif pad is not None: if not isinstance(pad, int): raise ValueError("additive pad must be integer") pads = pad else: raise ValueError("either pad or scale must be supplied") df_expanded = df.copy() if side == "both" or side == "left": df_expanded[sk] = df[sk].values - pads if side == "both" or side == "right": df_expanded[ek] = df[ek] + pads if pad is not None: if pad < 0: mids = df[sk].values + (0.5 * (df[ek].values - df[sk].values)).astype(int) df_expanded[sk] = np.minimum(df_expanded[sk].values, mids) df_expanded[ek] = np.maximum(df_expanded[ek].values, mids) if scale is not None: df_expanded[[sk, ek]] = df_expanded[[sk, ek]].round() df_expanded[[sk, ek]] = df_expanded[[sk, ek]].astype(types) return df_expanded def _overlap_intidxs(df1, df2, how="left", cols1=None, cols2=None, on=None): """ Find pairs of overlapping genomic intervals and return the integer indices of the overlapping intervals. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as a DataFrame. how : {'left', 'right', 'outer', 'inner'}, default 'left' How to handle the overlaps on the two dataframes. left: use the set of intervals in df1 right: use the set of intervals in df2 outer: use the union of the set of intervals from df1 and df2 inner: use intersection of the set of intervals from df1 and df2 cols1, cols2 : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. on : list or None Additional shared columns to consider as separate groups. Returns ------- overlap_ids : numpy.ndarray The indices of the overlapping genomic intervals in the original dataframes. The 1st column contains the indices of intervals from the 1st set, the 2nd column - the indicies from the 2nd set. """ # Allow users to specify the names of columns containing the interval coordinates. ck1, sk1, ek1 = _get_default_colnames() if cols1 is None else cols1 ck2, sk2, ek2 = _get_default_colnames() if cols2 is None else cols2 _verify_columns(df1, [ck1, sk1, ek1]) _verify_columns(df2, [ck2, sk2, ek2]) # Switch to integer indices. df1 = df1.reset_index(drop=True) df2 = df2.reset_index(drop=True) # Calculate groups, determined by chrom and on. group_list1 = [ck1] group_list2 = [ck2] if on is not None: group_list1 += on group_list2 += on df1_groups = df1.groupby(group_list1, observed=True, dropna=False).indices df2_groups = df2.groupby(group_list2, observed=True, dropna=False).indices all_groups = set.union(set(df1_groups), set(df2_groups)) # Find overlapping intervals per group (determined by chrom and on). overlap_intidxs = [] for group_keys in all_groups: df1_group_idxs = ( df1_groups[group_keys] if (group_keys in df1_groups) else np.array([]) ) df2_group_idxs = ( df2_groups[group_keys] if (group_keys in df2_groups) else np.array([]) ) overlap_intidxs_sub = [] both_groups_nonempty = (df1_group_idxs.size > 0) and (df2_group_idxs.size > 0) if both_groups_nonempty: overlap_idxs_loc = arrops.overlap_intervals( df1[sk1].values[df1_group_idxs], df1[ek1].values[df1_group_idxs], df2[sk2].values[df2_group_idxs], df2[ek2].values[df2_group_idxs], ) # Convert local per-chromosome indices into the # indices of the original table. overlap_intidxs_sub += [ [ df1_group_idxs[overlap_idxs_loc[:, 0]], df2_group_idxs[overlap_idxs_loc[:, 1]], ] ] if how in ["outer", "left"] and df1_group_idxs.size > 0: if both_groups_nonempty: no_overlap_ids1 = df1_group_idxs[ np.where( np.bincount( overlap_idxs_loc[:, 0], minlength=len(df1_group_idxs) ) == 0 )[0] ] else: no_overlap_ids1 = df1_group_idxs overlap_intidxs_sub += [ [ no_overlap_ids1, -1 * np.ones_like(no_overlap_ids1), ] ] if how in ["outer", "right"] and df2_group_idxs.size > 0: if both_groups_nonempty: no_overlap_ids2 = df2_group_idxs[ np.where( np.bincount( overlap_idxs_loc[:, 1], minlength=len(df2_group_idxs) ) == 0 )[0] ] else: no_overlap_ids2 = df2_group_idxs overlap_intidxs_sub += [ [ -1 * np.ones_like(no_overlap_ids2), no_overlap_ids2, ] ] if overlap_intidxs_sub: overlap_intidxs.append( np.block( [ [idxs[:, None] for idxs in idxs_pair] for idxs_pair in overlap_intidxs_sub ] ) ) if len(overlap_intidxs) == 0: return np.ndarray(shape=(0, 2), dtype=int) overlap_intidxs = np.vstack(overlap_intidxs) return overlap_intidxs def overlap( df1, df2, how="left", return_input=True, return_index=False, return_overlap=False, suffixes=("", "_"), keep_order=None, cols1=None, cols2=None, on=None, ): """ Find pairs of overlapping genomic intervals. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as a DataFrame. how : {'left', 'right', 'outer', 'inner'}, default 'left' How to handle the overlaps on the two dataframes. left: use the set of intervals in df1 right: use the set of intervals in df2 outer: use the union of the set of intervals from df1 and df2 inner: use intersection of the set of intervals from df1 and df2 return_input : bool If True, return columns from input dfs. Default True. return_index : bool If True, return indicies of overlapping pairs as two new columns ('index'+suffixes[0] and 'index'+suffixes[1]). Default False. return_overlap : bool If True, return overlapping intervals for the overlapping pairs as two additional columns (`overlap_start`, `overlap_end`). Default False. suffixes : (str, str) The suffixes for the columns of the two overlapped sets. keep_order : bool, optional If True and how='left', sort the output dataframe to preserve the order of the intervals in df1. Cannot be used with how='right'/'outer'/'inner'. Default True for how='left', and None otherwise. cols1, cols2 : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. on : list or None List of additional shared columns to consider as separate groups when considering overlaps. A common use would be passing on=['strand']. Default is None. Returns ------- df_overlap : pandas.DataFrame """ ck1, sk1, ek1 = _get_default_colnames() if cols1 is None else cols1 ck2, sk2, ek2 = _get_default_colnames() if cols2 is None else cols2 checks.is_bedframe(df1, raise_errors=True, cols=[ck1, sk1, ek1]) checks.is_bedframe(df2, raise_errors=True, cols=[ck2, sk2, ek2]) if (how == "left") and (keep_order is None): keep_order = True if (how != "left") and (keep_order is True): raise ValueError("keep_order=True only allowed for how='left'") if on is None: on_list = [] else: if not isinstance(on, list): raise ValueError("on=[] must be None or list") if (ck1 in on) or (ck2 in on): raise ValueError("on=[] should not contain chromosome colnames") _verify_columns(df1, on) _verify_columns(df2, on) on_list = on overlap_df_idxs = _overlap_intidxs( df1, df2, how=how, cols1=cols1, cols2=cols2, on=on, ) # Generate output tables. index_col = return_index if isinstance(return_index, str) else "index" index_col_1 = index_col + suffixes[0] index_col_2 = index_col + suffixes[1] df_index_1 = pd.DataFrame({index_col_1: df1.index[overlap_df_idxs[:, 0]]}) df_index_2 = pd.DataFrame({index_col_2: df2.index[overlap_df_idxs[:, 1]]}) df_overlap = None if return_overlap: overlap_col = return_overlap if isinstance(return_overlap, str) else "overlap" overlap_col_sk1 = overlap_col + "_" + sk1 overlap_col_ek1 = overlap_col + "_" + ek1 overlap_start = np.maximum( df1[sk1].values[overlap_df_idxs[:, 0]], df2[sk2].values[overlap_df_idxs[:, 1]], ) overlap_end = np.minimum( df1[ek1].values[overlap_df_idxs[:, 0]], df2[ek2].values[overlap_df_idxs[:, 1]], ) df_overlap = pd.DataFrame( {overlap_col_sk1: overlap_start, overlap_col_ek1: overlap_end} ) df_input_1 = None df_input_2 = None if return_input is True or str(return_input) == "1" or return_input == "left": df_input_1 = df1.iloc[overlap_df_idxs[:, 0]].reset_index(drop=True) df_input_1.columns = [c + suffixes[0] for c in df_input_1.columns] if return_input is True or str(return_input) == "2" or return_input == "right": df_input_2 = df2.iloc[overlap_df_idxs[:, 1]].reset_index(drop=True) df_input_2.columns = [c + suffixes[1] for c in df_input_2.columns] # Masking non-overlapping regions if using non-inner joins. if how != "inner": df_index_1[overlap_df_idxs[:, 0] == -1] = None df_index_1 = df_index_1.astype({index_col_1: pd.Int64Dtype()}) df_index_2[overlap_df_idxs[:, 1] == -1] = None df_index_2 = df_index_2.astype({index_col_2: pd.Int64Dtype()}) if df_input_1 is not None: df_input_1[overlap_df_idxs[:, 0] == -1] = None df_input_1 = df_input_1.astype( { (sk1 + suffixes[0]): pd.Int64Dtype(), (ek1 + suffixes[0]): pd.Int64Dtype(), } ) if df_input_2 is not None: df_input_2[overlap_df_idxs[:, 1] == -1] = None df_input_2 = df_input_2.astype( { (sk2 + suffixes[1]): pd.Int64Dtype(), (ek2 + suffixes[1]): pd.Int64Dtype(), } ) if df_overlap is not None: df_overlap[ (overlap_df_idxs[:, 0] == -1) | (overlap_df_idxs[:, 1] == -1) ] = None df_overlap = df_overlap.astype( {overlap_col_sk1: pd.Int64Dtype(), (overlap_col_ek1): pd.Int64Dtype()} ) out_df = pd.concat( [df_index_1, df_input_1, df_index_2, df_input_2, df_overlap], axis="columns" ) if keep_order: out_df = out_df.sort_values([index_col_1, index_col_2]) if not return_index: out_df.drop([index_col_1, index_col_2], axis=1, inplace=True) out_df.reset_index(drop=True, inplace=True) return out_df def cluster( df, min_dist=0, cols=None, on=None, return_input=True, return_cluster_ids=True, return_cluster_intervals=True, ): """ Cluster overlapping intervals into groups. Can return numeric ids for these groups (with `return_cluster_ids`=True) and/or their genomic coordinates (with `return_cluster_intervals`=True). Also see :func:`merge()`, which discards original intervals and returns a new set. Parameters ---------- df : pandas.DataFrame min_dist : float or None If provided, cluster intervals separated by this distance or less. If ``None``, do not cluster non-overlapping intervals. Since bioframe uses semi-open intervals, interval pairs [0,1) and [1,2) do not overlap, but are separated by a distance of 0. Such adjacent intervals are not clustered when ``min_dist=None``, but are clustered when ``min_dist=0``. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. on : None or list List of column names to perform clustering on independently, passed as an argument to df.groupby before clustering. Default is ``None``. An example useage would be to pass ``on=['strand']``. return_input : bool If True, return input return_cluster_ids : bool If True, return ids for clusters return_cluster_invervals : bool If True, return clustered interval the original interval belongs to Returns ------- df_clustered : pd.DataFrame """ if min_dist is not None: if min_dist < 0: raise ValueError("min_dist>=0 currently required") # Allow users to specify the names of columns containing the interval coordinates. ck, sk, ek = _get_default_colnames() if cols is None else cols _verify_columns(df, [ck, sk, ek]) # Switch to integer indices. df_index = df.index df = df.reset_index(drop=True) # Find overlapping intervals for groups specified by ck1 and on=[] (default on=None) group_list = [ck] if on is not None: if not isinstance(on, list): raise ValueError("on=[] must be None or list") if ck in on: raise ValueError("on=[] should not contain chromosome colnames") _verify_columns(df, on) group_list += on df_groups = df.groupby(group_list, observed=True).groups cluster_ids = np.full(df.shape[0], -1) clusters = [] max_cluster_id = -1 for group_keys, df_group_idxs in df_groups.items(): if pd.isna(pd.Series(group_keys)).any(): continue if df_group_idxs.empty: continue df_group = df.loc[df_group_idxs] ( cluster_ids_group, cluster_starts_group, cluster_ends_group, ) = arrops.merge_intervals( df_group[sk].values.astype(int), df_group[ek].values.astype(int), min_dist=min_dist, ) interval_counts = np.bincount(cluster_ids_group) cluster_ids_group += max_cluster_id + 1 n_clusters = cluster_starts_group.shape[0] max_cluster_id += n_clusters cluster_ids[df_group_idxs.values] = cluster_ids_group ## Storing chromosome names causes a 2x slowdown. :( if isinstance(group_keys, str): group_keys = tuple((group_keys,)) clusters_group = {} for col in group_list: clusters_group[col] = pd.Series( data=np.full(n_clusters, group_keys[group_list.index(col)]), dtype=df[col].dtype, ) clusters_group[sk] = cluster_starts_group clusters_group[ek] = cluster_ends_group clusters_group["n_intervals"] = interval_counts clusters_group = pd.DataFrame(clusters_group) clusters.append(clusters_group) df_nans = pd.isnull(df[[sk, ek] + group_list]).any(axis=1) if df_nans.sum() > 0: cluster_ids[df_nans.values] = ( max_cluster_id + 1 + np.arange(np.sum(df_nans.values)) ) clusters.append(df.loc[df_nans]) clusters = pd.concat(clusters).reset_index(drop=True) if df_nans.sum() > 0: clusters = clusters.astype({sk: pd.Int64Dtype(), ek: pd.Int64Dtype()}) assert np.all(cluster_ids >= 0) # reorder cluster columns to have chrom,start,end first clusters_names = list(clusters.keys()) clusters = clusters[ [ck, sk, ek] + [col for col in clusters_names if col not in [ck, sk, ek]] ] out_df = {} if return_cluster_ids: out_df["cluster"] = cluster_ids if return_cluster_intervals: out_df["cluster_start"] = clusters[sk].values[cluster_ids] out_df["cluster_end"] = clusters[ek].values[cluster_ids] out_df = pd.DataFrame(out_df) if return_input: out_df = pd.concat([df, out_df], axis="columns") out_df.set_index(df_index) return out_df def merge(df, min_dist=0, cols=None, on=None): """ Merge overlapping intervals. This returns a new dataframe of genomic intervals, which have the genomic coordinates of the interval cluster groups from the input dataframe. Also :func:`cluster()`, which returns the assignment of intervals to clusters prior to merging. Parameters ---------- df : pandas.DataFrame min_dist : float or None If provided, merge intervals separated by this distance or less. If None, do not merge non-overlapping intervals. Using ``min_dist=0`` and ``min_dist=None`` will bring different results. bioframe uses semi-open intervals, so interval pairs [0,1) and [1,2) do not overlap, but are separated by a distance of 0. Adjacent intervals are not merged when ``min_dist=None``, but are merged when ``min_dist=0``. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. on : None or list List of column names to perform clustering on independently, passed as an argument to df.groupby before clustering. Default is None. An example useage would be to pass ``on=['strand']``. Returns ------- df_merged : pandas.DataFrame A pandas dataframe with coordinates of merged clusters. Notes ------- Resets index. """ if min_dist is not None: if min_dist < 0: raise ValueError("min_dist>=0 currently required") # Allow users to specify the names of columns containing the interval coordinates. ck, sk, ek = _get_default_colnames() if cols is None else cols checks.is_bedframe(df, raise_errors=True, cols=[ck, sk, ek]) df = df.copy() df.reset_index(inplace=True, drop=True) # Find overlapping intervals for groups specified by on=[] (default on=None) group_list = [ck] if on is not None: if not isinstance(on, list): raise ValueError("on=[] must be None or list") if ck in on: raise ValueError("on=[] should not contain chromosome colnames") _verify_columns(df, on) group_list += on df_groups = df.groupby(group_list, observed=True).groups clusters = [] for group_keys, df_group_idxs in df_groups.items(): if pd.isna(pd.Series(group_keys)).any(): continue if df_group_idxs.empty: continue df_group = df.loc[df_group_idxs] ( cluster_ids_group, cluster_starts_group, cluster_ends_group, ) = arrops.merge_intervals( df_group[sk].values.astype(int), df_group[ek].values.astype(int), min_dist=min_dist # df_group[sk].values, df_group[ek].values, min_dist=min_dist ) interval_counts = np.bincount(cluster_ids_group) n_clusters = cluster_starts_group.shape[0] ## Storing chromosome names causes a 2x slowdown. :( if isinstance(group_keys, str): group_keys = tuple((group_keys,)) clusters_group = {} for col in group_list: clusters_group[col] = pd.Series( data=np.full(n_clusters, group_keys[group_list.index(col)]), dtype=df[col].dtype, ) clusters_group[sk] = cluster_starts_group clusters_group[ek] = cluster_ends_group clusters_group["n_intervals"] = interval_counts clusters_group = pd.DataFrame(clusters_group) clusters.append(clusters_group) df_nans = pd.isnull(df[[sk, ek] + group_list]).any(axis=1) df_has_nans = df_nans.sum() if df_has_nans: nan_intervals = pd.DataFrame( [pd.NA] * df_has_nans, columns=["n_intervals"], index=df.loc[df_nans].index, ) clusters.append( pd.concat( [df.loc[df_nans], nan_intervals], axis=1, ) ) clusters = pd.concat(clusters).reset_index(drop=True) if df_has_nans: clusters = clusters.astype( {sk: pd.Int64Dtype(), ek: pd.Int64Dtype(), "n_intervals": pd.Int64Dtype()} ) # reorder cluster columns to have chrom,start,end first clusters_names = list(clusters.keys()) clusters = clusters[ [ck, sk, ek] + [col for col in clusters_names if col not in [ck, sk, ek]] ] return clusters def coverage( df1, df2, suffixes=("", "_"), return_input=True, cols1=None, cols2=None, ): """ Quantify the coverage of intervals from 'df1' by intervals from 'df2'. For every interval in 'df1' find the number of base pairs covered by intervals in 'df2'. Note this only quantifies whether a basepair in 'df1' was covered, as 'df2' is merged before calculating coverage. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as a DataFrame. suffixes : (str, str) The suffixes for the columns of the two overlapped sets. return_input : bool If True, return input as well as computed coverage cols1, cols2 : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- df_coverage : pandas.DataFrame Notes ------ Resets index. """ ck1, sk1, ek1 = _get_default_colnames() if cols1 is None else cols1 ck2, sk2, ek2 = _get_default_colnames() if cols2 is None else cols2 df1.reset_index(inplace=True, drop=True) df2_merged = merge(df2, cols=cols2) df_overlap = overlap( df1, df2_merged, how="left", suffixes=suffixes, keep_order=True, return_index=True, return_overlap=True, cols1=cols1, cols2=cols2, ) df_overlap["overlap"] = df_overlap["overlap_end"] - df_overlap["overlap_start"] out_df = ( pd.DataFrame( df_overlap.groupby("index" + suffixes[0]) .agg({"overlap": "sum"})["overlap"] .astype(df1[sk1].dtype) ) .rename(columns={"overlap": "coverage"}) .reset_index(drop=True) ) if return_input: out_df = pd.concat([df1, out_df], axis="columns") return out_df def _closest_intidxs( df1, df2=None, k=1, ignore_overlaps=False, ignore_upstream=False, ignore_downstream=False, direction_col=None, tie_breaking_col=None, cols1=None, cols2=None, ): """ For every interval in set 1 find k closest genomic intervals in set2 and return their integer indices. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as a DataFrame. If df2 is None or same object as df1, find closest intervals within the same set. k_closest : int The number of closest intervals to report. cols1, cols2 : (str, str, str) The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- closest_ids : numpy.ndarray The indices of the overlapping genomic intervals in the original dataframes. The 1st column contains the indices of intervals from the 1st set, the 2nd column - the indicies from the 2nd set. The second column is filled with -1 for those intervals in the 1st set with no closest 2nd set interval. """ # Allow users to specify the names of columns containing the interval coordinates. ck1, sk1, ek1 = _get_default_colnames() if cols1 is None else cols1 ck2, sk2, ek2 = _get_default_colnames() if cols2 is None else cols2 self_closest = False if (df2 is None) or (df2 is df1): if len(df1) == 1: raise ValueError( "df1 must have more than one interval to find closest non-identical interval" ) df2 = df1 self_closest = True # Switch to integer indices. df1 = df1.reset_index(drop=True) df2 = df2.reset_index(drop=True) # Find overlapping intervals per chromosome. df1_groups = df1.groupby(ck1, observed=True).groups df2_groups = df2.groupby(ck2, observed=True).groups closest_intidxs = [] for group_keys, df1_group_idxs in df1_groups.items(): if group_keys not in df2_groups: # closest_idxs_group = np.vstack( [ df1_group_idxs, -1 * np.ones_like(df1_group_idxs), ] ).T closest_intidxs.append(closest_idxs_group) continue df2_group_idxs = df2_groups[group_keys] df1_group = df1.loc[df1_group_idxs] df2_group = df2.loc[df2_group_idxs] tie_arr = None if isinstance(tie_breaking_col, str): tie_arr = df2_group[tie_breaking_col].values elif callable(tie_breaking_col): tie_arr = tie_breaking_col(df2_group).values else: ValueError( "tie_breaking_col must be either a column label or " "f(DataFrame) -> Series" ) # Verify and construct the direction_arr (convert from pandas string column to bool array) # TODO: should we add checks that it's valid "strand"? direction_arr = None if direction_col is None: direction_arr = np.ones(len(df1_group), dtype=np.bool_) else: direction_arr = (df1_group[direction_col].values != "-") # both "+" and "." keep orientation by genomic coordinate # Calculate closest intervals with arrops: closest_idxs_group = arrops.closest_intervals( df1_group[sk1].values, df1_group[ek1].values, None if self_closest else df2_group[sk2].values, None if self_closest else df2_group[ek2].values, k=k, tie_arr=tie_arr, ignore_overlaps=ignore_overlaps, ignore_upstream=ignore_upstream, ignore_downstream=ignore_downstream, direction=direction_arr ) # Convert local per-chromosome indices into the # indices of the original table. closest_idxs_group = np.vstack( [ df1_group_idxs.values[closest_idxs_group[:, 0]], df2_group_idxs.values[closest_idxs_group[:, 1]], ] ).T closest_intidxs.append(closest_idxs_group) if len(closest_intidxs) == 0: return np.ndarray(shape=(0, 2), dtype=np.int) closest_intidxs = np.vstack(closest_intidxs) return closest_intidxs def closest( df1, df2=None, k=1, ignore_overlaps=False, ignore_upstream=False, ignore_downstream=False, direction_col=None, tie_breaking_col=None, return_input=True, return_index=False, return_distance=True, return_overlap=False, suffixes=("", "_"), cols1=None, cols2=None, ): """ For every interval in dataframe `df1` find k closest genomic intervals in dataframe `df2`. Currently, we are not taking the feature strands into account for filtering. However, the strand can be used for definition of upstream/downstream of the feature (direction). Note that, unless specified otherwise, overlapping intervals are considered as closest. When multiple intervals are located at the same distance, the ones with the lowest index in `df2` are returned. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as a DataFrame. If `df2` is None, find closest non-identical intervals within the same set. k : int The number of the closest intervals to report. ignore_overlaps : bool If True, ignore overlapping intervals and return the closest non-overlapping interval. ignore_upstream : bool If True, ignore intervals in `df2` that are upstream of intervals in `df1`, relative to the reference strand or the strand specified by direction_col. ignore_downstream : bool If True, ignore intervals in `df2` that are downstream of intervals in `df1`, relative to the reference strand or the strand specified by direction_col. direction_col : str Name of direction column that will set upstream/downstream orientation for each feature. The column should contain bioframe-compliant strand values ("+", "-", "."). tie_breaking_col : str A column in `df2` to use for breaking ties when multiple intervals are located at the same distance. Intervals with *lower* values will be selected. return_input : bool If True, return input return_index : bool If True, return indices return_distance : bool If True, return distances. Returns zero for overlaps. return_overlap : bool If True, return columns: 'have_overlap', 'overlap_start', and 'overlap_end'. Fills df_closest['overlap_start'] and df['overlap_end'] with None if non-overlapping. Default False. suffixes : (str, str) The suffixes for the columns of the two sets. cols1, cols2 : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- df_closest : pandas.DataFrame If no intervals found, returns none. Notes ----- By default, direction is defined by the reference genome: everything with smaller coordinate is considered upstream, everything with larger coordinate is considered downstream. If ``direction_col`` is provided, upstream/downstream are relative to the direction column in ``df1``, i.e. features marked "+" and "." strand will define upstream and downstream as above, while features marked "-" have upstream and downstream reversed: smaller coordinates are downstream and larger coordinates are upstream. """ if k < 1: raise ValueError("k>=1 required") if df2 is df1: raise ValueError( "pass df2=None to find closest non-identical intervals within the same set." ) # If finding closest within the same set, df2 now has to be set # to df1, so that the rest of the logic works. if df2 is None: df2 = df1 ck1, sk1, ek1 = _get_default_colnames() if cols1 is None else cols1 ck2, sk2, ek2 = _get_default_colnames() if cols2 is None else cols2 checks.is_bedframe(df1, raise_errors=True, cols=[ck1, sk1, ek1]) checks.is_bedframe(df2, raise_errors=True, cols=[ck2, sk2, ek2]) closest_df_idxs = _closest_intidxs( df1, df2, k=k, ignore_overlaps=ignore_overlaps, ignore_upstream=ignore_upstream, ignore_downstream=ignore_downstream, direction_col=direction_col, tie_breaking_col=tie_breaking_col, cols1=cols1, cols2=cols2, ) na_mask = closest_df_idxs[:, 1] == -1 if len(closest_df_idxs) == 0: return # case of no closest intervals # Generate output tables. df_index_1 = None df_index_2 = None if return_index: index_col = return_index if isinstance(return_index, str) else "index" df_index_1 = pd.DataFrame( {index_col + suffixes[0]: df1.index[closest_df_idxs[:, 0]]} ) df_index_2 = pd.DataFrame( {index_col + suffixes[1]: df2.index[closest_df_idxs[:, 1]]} ) df_index_2[na_mask] = pd.NA df_overlap = None if return_overlap: overlap_start = np.amax( np.vstack( [ df1[sk1].values[closest_df_idxs[:, 0]], df2[sk2].values[closest_df_idxs[:, 1]], ] ), axis=0, ) overlap_end = np.amin( np.vstack( [ df1[ek1].values[closest_df_idxs[:, 0]], df2[ek2].values[closest_df_idxs[:, 1]], ] ), axis=0, ) have_overlap = overlap_start < overlap_end df_overlap = pd.DataFrame( { "have_overlap": have_overlap, "overlap_start": np.where(have_overlap, overlap_start, None), "overlap_end": np.where(have_overlap, overlap_end, None), }, ) df_overlap = df_overlap.astype( { "have_overlap": pd.BooleanDtype(), "overlap_start": pd.Int64Dtype(), "overlap_end": pd.Int64Dtype(), } ) df_overlap[na_mask] = pd.NA df_distance = None if return_distance: distance_left = np.maximum( 0, df1[sk1].values[closest_df_idxs[:, 0]] - df2[ek2].values[closest_df_idxs[:, 1]], ) distance_right = np.maximum( 0, df2[sk2].values[closest_df_idxs[:, 1]] - df1[ek1].values[closest_df_idxs[:, 0]], ) distance = np.amax(np.vstack([distance_left, distance_right]), axis=0) df_distance = pd.DataFrame({"distance": distance}, dtype=pd.Int64Dtype()) df_distance[na_mask] = pd.NA df_input_1 = None df_input_2 = None if return_input is True or str(return_input) == "1" or return_input == "left": df_input_1 = df1.iloc[closest_df_idxs[:, 0]].reset_index(drop=True) df_input_1.columns = [c + suffixes[0] for c in df_input_1.columns] if return_input is True or str(return_input) == "2" or return_input == "right": df_input_2 = df2.iloc[closest_df_idxs[:, 1]].reset_index(drop=True) df_input_2.columns = [c + suffixes[1] for c in df_input_2.columns] df_input_2 = df_input_2.astype( {sk2 + suffixes[1]: pd.Int64Dtype(), ek2 + suffixes[1]: pd.Int64Dtype()} ) df_input_2[na_mask] = pd.NA out_df = pd.concat( [df_index_1, df_input_1, df_index_2, df_input_2, df_overlap, df_distance], axis="columns", ) return out_df def subtract( df1, df2, return_index=False, suffixes=("", "_"), cols1=None, cols2=None, ): """ Generate a new set of genomic intervals by subtracting the second set of genomic intervals from the first. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as a DataFrame. return_index : bool Whether to return the indices of the original intervals ('index'+suffixes[0]), and the indices of any sub-intervals split by subtraction ('sub_index'+suffixes[1]). Default False. suffixes : (str,str) Suffixes for returned indices. Only alters output if return_index is True. Default ("","_"). cols1, cols2 : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- df_subtracted : pandas.DataFrame Notes ----- Resets index, drops completely subtracted (null) intervals, and casts to pd.Int64Dtype(). """ ck1, sk1, ek1 = _get_default_colnames() if cols1 is None else cols1 ck2, sk2, ek2 = _get_default_colnames() if cols2 is None else cols2 name_updates = { ck1 + suffixes[0]: ck1, "overlap_" + sk1: sk1, "overlap_" + ek1: ek1, } extra_columns_1 = [i for i in list(df1.columns) if i not in [ck1, sk1, ek1]] for i in extra_columns_1: name_updates[i + suffixes[0]] = i if return_index: name_updates["index" + suffixes[0]] = "index" + suffixes[0] name_updates["index" + suffixes[1]] = "complement_index" + suffixes[1] all_chroms = np.unique( list(pd.unique(df1[ck1].dropna())) + list(pd.unique(df2[ck2].dropna())) ) if len(all_chroms) == 0: raise ValueError("No chromosomes remain after dropping nulls") df_subtracted = overlap( df1, complement( df2, view_df={i: np.iinfo(np.int64).max for i in all_chroms}, cols=cols2 ).astype({sk2: pd.Int64Dtype(), ek2: pd.Int64Dtype()}), how="left", suffixes=suffixes, return_index=return_index, return_overlap=True, keep_order=True, cols1=cols1, cols2=cols2, )[list(name_updates)] df_subtracted.rename(columns=name_updates, inplace=True) df_subtracted = df_subtracted.iloc[~pd.isna(df_subtracted[sk1].values)] df_subtracted.reset_index(drop=True, inplace=True) if return_index: inds = df_subtracted["index" + suffixes[0]].values comp_inds = df_subtracted["complement_index" + suffixes[1]].copy() # .values for i in np.unique(inds): comp_inds[inds == i] -= comp_inds[inds == i].min() df_subtracted["sub_index" + suffixes[1]] = comp_inds.copy() df_subtracted.drop(columns=["complement_index" + suffixes[1]], inplace=True) return df_subtracted def setdiff(df1, df2, cols1=None, cols2=None, on=None): """ Generate a new dataframe of genomic intervals by removing any interval from the first dataframe that overlaps an interval from the second dataframe. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as DataFrames. cols1, cols2 : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each dataframe. The default values are 'chrom', 'start', 'end'. on : None or list Additional column names to perform clustering on independently, passed as an argument to df.groupby when considering overlaps and must be present in both dataframes. Examples for additional columns include 'strand'. Returns ------- df_setdiff : pandas.DataFrame """ ck1, sk1, ek1 = _get_default_colnames() if cols1 is None else cols1 ck2, sk2, ek2 = _get_default_colnames() if cols2 is None else cols2 df_overlapped = _overlap_intidxs( df1, df2, how="inner", cols1=cols1, cols2=cols2, on=on ) inds_non_overlapped = np.setdiff1d(np.arange(len(df1)), df_overlapped[:, 0]) df_setdiff = df1.iloc[inds_non_overlapped] return df_setdiff def count_overlaps( df1, df2, suffixes=("", "_"), return_input=True, cols1=None, cols2=None, on=None, ): """ Count number of overlapping genomic intervals. Parameters ---------- df1, df2 : pandas.DataFrame Two sets of genomic intervals stored as a DataFrame. suffixes : (str, str) The suffixes for the columns of the two overlapped sets. return_input : bool If True, return columns from input dfs. Default True. cols1, cols2 : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. on : list List of additional shared columns to consider as separate groups when considering overlaps. A common use would be passing on=['strand']. Default is None. Returns ------- df_counts : pandas.DataFrame Notes ------- Resets index. """ df1.reset_index(inplace=True, drop=True) df_counts = overlap( df1, df2, how="left", return_input=False, keep_order=True, suffixes=suffixes, return_index=True, on=on, cols1=cols1, cols2=cols2, ) out_df = pd.DataFrame( df_counts.groupby(["index" + suffixes[0]])["index" + suffixes[1]] .count() .values, columns=["count"], ) if return_input: out_df = pd.concat([df1, out_df], axis="columns") return out_df def trim( df, view_df=None, df_view_col=None, view_name_col="name", return_view_columns=False, cols=None, cols_view=None, ): """ Trim each interval to fall within regions specified in the viewframe 'view_df'. Intervals that fall outside of view regions are replaced with nulls. If no 'view_df' is provided, intervals are truncated at zero to avoid negative values. Parameters ---------- df : pandas.DataFrame view_df : None or pandas.DataFrame View specifying region start and ends for trimming. Attempts to convert dictionary and pd.Series formats to viewFrames. df_view_col : str or None The column of 'df' used to specify view regions. The associated region in 'view_df' is then used for trimming. If None, :func:'bioframe.ops.assign_view' will be used to assign view regions. If no 'view_df' is provided, uses the 'chrom' column, df[cols[0]]. Default None. view_name_col : str Column of df with region names. Default 'name'. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. cols_view : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals in the view. The default values are 'chrom', 'start', 'end'. Returns ------- df_trimmed : pandas.DataFrame """ ck, sk, ek = _get_default_colnames() if cols is None else cols _verify_columns(df, [ck, sk, ek]) df_columns = list(df.columns) df_trimmed = df.copy() inferred_view = False if view_df is None: df_view_col = ck view_df = { i: np.iinfo(np.int64).max for i in set(df[df_view_col].copy().dropna().values) } inferred_view = True ckv, skv, ekv = _get_default_colnames() if cols_view is None else cols_view view_df = construction.make_viewframe( view_df, view_name_col=view_name_col, cols=[ckv, skv, ekv] ).rename(columns=dict(zip([ckv, skv, ekv], [ck, sk, ek]))) if inferred_view: view_name_col = ck elif df_view_col is None: if _verify_columns(df_trimmed, ["view_region"], return_as_bool=True): raise ValueError("column view_region already exists in input df") df_view_col = "view_region" df_trimmed = assign_view( df_trimmed, view_df, drop_unassigned=False, df_view_col=df_view_col, view_name_col=view_name_col, cols=cols, cols_view=cols, ) else: _verify_columns(df_trimmed, [df_view_col]) checks.is_cataloged( df_trimmed, view_df, raise_errors=True, df_view_col=df_view_col, view_name_col=view_name_col, ) df_trimmed = df_trimmed.merge( view_df, how="left", left_on=df_view_col, right_on=view_name_col, suffixes=("", "_view"), ) unassigned_intervals = pd.isnull(df_trimmed[df_view_col].values) if unassigned_intervals.any(): df_trimmed.loc[unassigned_intervals, [ck, sk, ek]] = pd.NA df_trimmed.astype({sk: pd.Int64Dtype(), ek: pd.Int64Dtype()}) lower_vector = df_trimmed[sk + "_view"].values upper_vector = df_trimmed[ek + "_view"].values df_trimmed[sk].clip(lower=lower_vector, upper=upper_vector, inplace=True) df_trimmed[ek].clip(lower=lower_vector, upper=upper_vector, inplace=True) if return_view_columns: return df_trimmed else: return df_trimmed[df_columns] def complement(df, view_df=None, view_name_col="name", cols=None, cols_view=None): """ Find genomic regions in a viewFrame 'view_df' that are not covered by any interval in the dataFrame 'df'. First assigns intervals in 'df' to region in 'view_df', splitting intervals in 'df' as necessary. Parameters ---------- df : pandas.DataFrame view_df : pandas.Dataframe If none, attempts to infer the view from chroms (i.e. df[cols[0]]). view_name_col : str Name of column in view_df with unique reigon names. Default 'name'. cols : (str, str, str) The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. cols_view : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals in the view. The default values are 'chrom', 'start', 'end'. Returns ------- df_complement : pandas.DataFrame Notes ------ Discards null intervals in input, and df_complement has regular int dtype. """ ### TODO add on=, so can do strand-specific complements... # Allow users to specify the names of columns containing the interval coordinates. ck, sk, ek = _get_default_colnames() if cols is None else cols _verify_columns(df, [ck, sk, ek]) if view_df is None: view_df = {i: np.iinfo(np.int64).max for i in set(df[ck].dropna().values)} ckv, skv, ekv = _get_default_colnames() if cols_view is None else cols_view view_df = construction.make_viewframe( view_df, view_name_col=view_name_col, cols=[ckv, skv, ekv] ).rename(columns=dict(zip([ckv, skv, ekv], [ck, sk, ek]))) # associate intervals to regions, required to enable single interval from df to # overlap multiple intervals in view_df. note this differs from the goal of assign_view. new_intervals = overlap( view_df, df, return_overlap=True, how="inner", suffixes=("", "_df"), cols1=cols, cols2=cols, ) new_intervals = new_intervals[ [ck, "overlap_" + sk, "overlap_" + ek, view_name_col] ].copy() new_intervals.rename( columns={ "overlap_" + sk: sk, "overlap_" + ek: ek, view_name_col: "view_region", }, inplace=True, ) df = new_intervals checks.is_cataloged( df, view_df, raise_errors=True, df_view_col="view_region", view_name_col=view_name_col, ) # Find overlapping intervals per region. df_groups = df.groupby("view_region").groups all_groups = sorted(set(view_df[view_name_col])) complements = [] for group_key in all_groups: region_interval = view_df.loc[view_df[view_name_col] == group_key] region_chrom, region_start, region_end = region_interval[[ck, sk, ek]].values[0] if group_key not in df_groups: complement_group = region_interval.copy().rename( columns={view_name_col: "view_region"} ) complements.append(pd.DataFrame(complement_group)) continue df_group_idxs = df_groups[group_key].values df_group = df.loc[df_group_idxs] (complement_starts_group, complement_ends_group,) = arrops.complement_intervals( df_group[sk].values.astype(int), df_group[ek].values.astype(int), bounds=(region_start, region_end), ) # Storing chromosome names causes a 2x slowdown. :( complement_group = { ck: pd.Series( data=np.full(complement_starts_group.shape[0], region_chrom), dtype=df[ck].dtype, ), sk: complement_starts_group, ek: complement_ends_group, "view_region": group_key, } complement_group = pd.DataFrame(complement_group) complements.append(complement_group) complements = pd.concat(complements).reset_index(drop=True) return complements def sort_bedframe( df, view_df=None, reset_index=True, df_view_col=None, view_name_col="name", cols=None, cols_view=None, ): """ Sorts a bedframe 'df'. If 'view_df' is not provided, sorts by ``cols`` (e.g. "chrom", "start", "end"). If 'view_df' is provided and 'df_view_col' is not provided, uses :func:`bioframe.ops.assign_view` with ``df_view_col='view_region'`` to assign intervals to the view regions with the largest overlap and then sorts. If 'view_df' and 'df_view_col' are both provided, checks if the latter are cataloged in 'view_name_col', and then sorts. df : pandas.DataFrame Valid bedframe. view_df : pandas.DataFrame | dict-like Valid input to make a viewframe. When it is dict-like :func:'bioframe.make_viewframe' will be used to convert to viewframe. If view_df is not provided df is sorted by chrom and start. reset_index : bool Default True. df_view_col: None | str Column from 'df' used to associate intervals with view regions. The associated region in 'view_df' is then used for sorting. If None, :func:'bioframe.assign_view' will be used to assign view regions. Default None. view_name_col: str Column from view_df with names of regions. Default `name`. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. cols_view : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals in the view. The default values are 'chrom', 'start', 'end'. Returns ------- out_df : sorted bedframe Notes ------- df_view_col is currently returned as an ordered categorical """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols if not checks.is_bedframe(df, cols=cols): raise ValueError("not a valid bedframe, cannot sort") out_df = df.copy() if view_df is None: out_df.sort_values([ck1, sk1, ek1], inplace=True) else: ckv, skv, ekv = _get_default_colnames() if cols_view is None else cols_view view_df = construction.make_viewframe( view_df, view_name_col=view_name_col, cols=[ckv, skv, ekv] ).rename(columns=dict(zip([ckv, skv, ekv], [ck1, sk1, ek1]))) if df_view_col is None: if _verify_columns(out_df, ["view_region"], return_as_bool=True): raise ValueError("column view_region already exists in input df") df_view_col = "view_region" out_df = assign_view( out_df, view_df, df_view_col=df_view_col, view_name_col=view_name_col, cols=cols, cols_view=cols, ) else: if not _verify_columns(out_df, [df_view_col], return_as_bool=True): raise ValueError( "column 'df_view_col' not in input df, cannot sort by view" ) if not checks.is_cataloged( out_df[pd.isna(out_df[df_view_col].values) == False], view_df, df_view_col=df_view_col, view_name_col=view_name_col, ): raise ValueError( "intervals in df not cataloged in view_df, cannot sort by view" ) view_cat = pd.CategoricalDtype( categories=view_df[view_name_col].values, ordered=True ) out_df[df_view_col] = out_df[df_view_col].astype({df_view_col: view_cat}) out_df.sort_values([df_view_col, ck1, sk1, ek1], inplace=True) # make sure no columns get appended and dtypes are preserved out_df = out_df[df.columns].astype(df.dtypes) if reset_index: out_df.reset_index(inplace=True, drop=True) return out_df def assign_view( df, view_df, drop_unassigned=False, df_view_col="view_region", view_name_col="name", cols=None, cols_view=None, ): """ Associates genomic intervals in bedframe ``df`` with regions in viewframe ``view_df``, based on their largest overlap. Parameters ---------- df : pandas.DataFrame view_df : pandas.DataFrame ViewFrame specifying region start and ends for assignment. Attempts to convert dictionary and pd.Series formats to viewFrames. drop_unassigned : bool If True, drop intervals in df that do not overlap a region in the view. Default False. df_view_col : str The column of ``df`` used to specify view regions. The associated region in view_df is then used for trimming. If no view_df is provided, uses the chrom column, ``df[cols[0]]``. Default "view_region". view_name_col : str Column of ``view_df`` with region names. Default 'name'. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals. The default values are 'chrom', 'start', 'end'. cols_view : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals in the view. The default values are 'chrom', 'start', 'end'. Returns ------- out_df : dataframe with an associated view region for each interval in ``out_df[view_name_col]``. Notes ------- Resets index. """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols df = df.copy() df.reset_index(inplace=True, drop=True) checks.is_bedframe(df, raise_errors=True, cols=cols) view_df = construction.make_viewframe( view_df, view_name_col=view_name_col, cols=cols_view ) overlap_view = overlap( df, view_df, how="left", suffixes=("", "_view"), return_overlap=True, keep_order=False, return_index=True, cols1=cols, cols2=cols_view, ) overlap_columns = overlap_view.columns overlap_view["overlap_length"] = ( overlap_view["overlap_" + ek1] - overlap_view["overlap_" + sk1] ) out_df = ( overlap_view.sort_values("overlap_length", ascending=False) .drop_duplicates("index", keep="first") .sort_values("index") ) out_df.rename(columns={view_name_col + "_view": df_view_col}, inplace=True) if drop_unassigned: out_df = out_df.iloc[pd.isna(out_df).any(axis=1).values == 0, :] out_df.reset_index(inplace=True, drop=True) return_cols = list(df.columns) + [df_view_col] return out_df[return_cols] bioframe-0.4.1/bioframe/io/0000755000175000017500000000000014420777331015031 5ustar nileshnileshbioframe-0.4.1/bioframe/io/schemas.py0000644000175000017500000001220314420777331017024 0ustar nileshnilesh""" Field names for various genomic tabular files """ __all__ = ["SCHEMAS"] # UCSC File Formats # https://genome.ucsc.edu/FAQ/FAQformat.html BED12_FIELDS = [ "chrom", "start", "end", "name", "score", "strand", "thickStart", "thickEnd", "rgb", "blockCount", "blockSizes", "blockStarts", ] BED_FIELDS = BED12_FIELDS[:6] BEDGRAPH_FIELDS = ["chrom", "start", "end", "value"] BEDPE_FIELDS = [ "chrom1", "start1", "end1", "chrom2", "start2", "end2", "name", "score", "strand1", "strand2", ] GFF_FIELDS = [ "chrom", "source", "feature", "start", "end", "score", "strand", "frame", "attributes", ] PGSNP_FIELDS = [ "chrom", "start", "end", "name", "alleleCount", "alleleFreq", "alleleScores", ] BEDRNAELEMENTS_FIELDS = [ "chrom", "start", "end", "name", "score", "strand", "level", "signif", "score2", ] NARROWPEAK_FIELDS = [ "chrom", "start", "end", "name", "score", "strand", "fc", "-log10p", "-log10q", "relSummit", ] BROADPEAK_FIELDS = [ "chrom", "start", "end", "name", "score", "strand", "fc", "-log10p", "-log10q", ] GAPPEDPEAK_FIELDS = [ "chrom", "start", "end", "name", "score", "strand", "thickStart", "thickEnd", "rgb", "blockCount", "blockSizes", "blockStarts", "fc", "-log10p", "-log10q", ] JASPAR_FIELDS = ["chrom", "start", "end", "name", "score", "pval", "strand"] GAP_FIELDS = ["bin", "chrom", "start", "end", "ix", "n", "length", "type", "bridge"] CENTROMERES_FIELDS = ["bin", "chrom", "start", "end", "name"] UCSC_MRNA_FIELDS = [ "bin", "matches", "misMatches", "repMatches", "nCount", "qNumInsert", "qBaseInsert", "tNumInsert", "tBaseInsert", "strand", "qName", "qSize", "qStart", "qEnd", "tName", "tSize", "tStart", "tEnd", "blockCount", "blockSizes", "qStarts", "tStarts", ] CYTOBAND_FIELDS = ["chrom", "start", "end", "name", "gieStain"] # GA4GH File Formats # http://ga4gh.org/#/fileformats-team BAM_FIELDS = [ "QNAME", "FLAG", "RNAME", "POS", "MAPQ", "CIGAR", "RNEXT", "PNEXT", "TLEN", "SEQ", "QUAL", "TAGs", ] VCF_FIELDS = ["CHROM", "POS", "ID", "REF", "ALT", "QUAL", "FILTER", "INFO"] SCHEMAS = { "bed": BED_FIELDS, "bed3": BED_FIELDS[:3], "bed4": BED_FIELDS[:4], "bedGraph": BEDGRAPH_FIELDS, "bed5": BED_FIELDS[:5], "bed6": BED_FIELDS, "bed9": BED12_FIELDS[:9], "bed12": BED12_FIELDS, "bedpe": BEDPE_FIELDS, "gff": GFF_FIELDS, "gtf": GFF_FIELDS, "bedRnaElements": BEDRNAELEMENTS_FIELDS, "narrowPeak": NARROWPEAK_FIELDS, "broadPeak": BROADPEAK_FIELDS, "gappedPeak": GAPPEDPEAK_FIELDS, "centromeres": CENTROMERES_FIELDS, "cytoband": CYTOBAND_FIELDS, "sam": BAM_FIELDS, "vcf": VCF_FIELDS, "jaspar": JASPAR_FIELDS, "gap": GAP_FIELDS, "UCSCmRNA": UCSC_MRNA_FIELDS, "pgsnp": PGSNP_FIELDS, } CHROM_NAME_PATTERNS = { "hg19": ( r"^chr[0-9]+$", r"^chr[XY]$", r"^chrM$", r"^chr(?!Un).+_.*_random$", r"^chrUn_.*$", r"^chr(?!Un).+_.*_hap\d+$", ), "hg38": ( r"^chr[0-9]+$", r"^chr[XY]$", r"^chrM$", r"^chrEBV$", r"^chr(?!Un).+_.*_random$", r"^chrUn_.*$", r"^chr(?!Un).+_.*_alt$", ), "mm9": ( r"^chr[0-9]+$", r"^chr[XY]$", r"^chrM$", r"^chr(?!Un).+_random$", r"^chrUn_random$", ), "mm10": ( r"^chr[0-9]+$", r"^chr[XY]$", r"^chrM$", r"^chr(?!Un).+_random$", r"^chrUn_.*$", ), "galGal4": ( r"^chr[0-9]+$", r"^chr[ZW]$", r"^chrM$", r"^chrLGE64|chrLGE22C19W28_E50C23$", r"^chr(?!Un).+_random$", r"^chrUn_.*$", ), "galGal5": ( r"^chr[0-9]+$", r"^chr[ZW]$", r"^chrM$", r"^chrLGE64$", r"^chr(?!Un).+_random$", r"^chrUn_.*$", ), "dm3": ( r"^chr[234][LR[Het]*]*$", r"^chr[XY][Het]*$", r"^chrM$", r"^chr[U][extra]*$", ), "dm6": ( r"^chr[234][LR]*", r"^chr[XY]$", r"^chrM$", r"^chr(?!Un).+_random$", r"^chrUn_.*$", ), "ce10": (r"chr[IV]+$", r"^chrX$", r"^chrM$"), "ce11": (r"chr[IV]+$", r"^chrX$", r"^chrM$"), "sacCer3": (r"chr[IXV]+$", r"^chrM$"), "TAIR10": (r"^\d+", r"^MT|Pltd$"), } UCSC_AUTOSOMES = r"^chr[0-9]+[A-Za-z]*$" UCSC_SEXCHROMS = r"^chr[XYZW][A-Za-z]*$" UCSC_NONNUCLEAR = r"^chrM$" UCSC_OTHER = r"^chrLGE.*$" UCSC_UNLOCALIZED = r"^chr(?!Un).+.*_random$" UCSC_UNPLACED = r"^chrUn_.*$|^chrU[A-Za-z]*$" UCSC_ALTCHROMS = r"^chr(?!Un).+_.*_hap\d+$|^chr(?!Un).+_.*_alt$" NCBI_AUTOSOMES = r"^[0-9]+$" NCBI_SEXCHROMS = r"^[XYZW]$" NCBI_NONNUCLEAR = r"^MT$|^Pltd$" ROMAN_LT10 = [r"^chrI+$", r"^chrIV$", r"^chrVI*$", r"^chrIX$"] ROMAN_LT20 = ROMAN_LT10 + [ r"^chrX$", r"^chrXI*$", r"^chrXIV$", r"^chrXVI*$", r"^chrXIX$", ] bioframe-0.4.1/bioframe/io/resources.py0000644000175000017500000001336514420777331017425 0ustar nileshnileshfrom functools import partial from urllib.parse import urljoin, urlencode import urllib import os import posixpath as pp import os.path as op import pandas as pd import requests import socket import base64 import glob import pkg_resources from .schemas import SCHEMAS, UCSC_MRNA_FIELDS from .fileops import ( read_table, read_chromsizes, extract_centromeres, ) __all__ = [ "fetch_chromsizes", "fetch_centromeres", "UCSCClient", ] def _check_connectivity(reference="http://www.google.com"): try: urllib.request.urlopen(reference, timeout=5) return True except urllib.request.URLError: return False except socket.timeout: return False def fetch_chromsizes( db, provider=None, filter_chroms=True, chrom_patterns=(r"^chr[0-9]+$", r"^chr[XY]$", r"^chrM$"), natsort=True, as_bed=False, **kwargs, ): """ Fetch chromsizes from the UCSC database or local storage. Parameters ---------- provider : str The provider of chromsizes. Currently, only 'ucsc' is implemented. filter_chroms : bool, optional Filter for chromosome names given in ``chrom_patterns``. chrom_patterns : sequence, optional Sequence of regular expressions to capture desired sequence names. natsort : bool, optional Sort each captured group of names in natural order. Default is True. as_bed : bool, optional If True, return chromsizes as an interval dataframe (chrom, start, end). **kwargs : Passed to :func:`pandas.read_csv` Returns ------- Series of integer bp lengths indexed by sequence name or an interval dataframe. """ if provider == "local": fpath = f"data/{db}.chrom.sizes" if pkg_resources.resource_exists("bioframe.io", fpath): return read_chromsizes( pkg_resources.resource_filename("bioframe.io", fpath) ) else: raise LookupError(f"Assembly '{db}' not found in local storage") if provider == "ucsc" or provider is None: return UCSCClient(db).fetch_chromsizes( filter_chroms=filter_chroms, chrom_patterns=chrom_patterns, natsort=natsort, as_bed=as_bed, **kwargs, ) else: raise ValueError("Unknown provider '{}'".format(provider)) def fetch_centromeres(db, provider=None, merge=True, verbose=False): """ Extract centromere locations for a given assembly 'db' from a variety of file formats in UCSC (centromeres, cytoband, gap) depending on availability, returning a DataFrame. Parameters ---------- db : str merge : bool Whether to merge all centromere intervals per chromosome into one consolidated centromere interval. Default True. Returns ------- DataFrame with centromere 'chrom', 'start', 'end', 'mid'. Notes ----- The priority goes as - Local (not implemented) - centromeres.txt - cytoBandIdeo - cytoBand - gap.txt Currently only works for human assemblies. """ if provider == "local": raise NotImplementedError("local method not currently implemented") fpath = f"data/{db}.centromeres" if pkg_resources.resource_exists("bioframe.io", fpath): return read_chromsizes( pkg_resources.resource_filename("bioframe.io", fpath) ) else: raise LookupError(f"Centromeres for '{db}' not found in local storage") if provider == "ucsc" or provider is None: client = UCSCClient(db) fetchers = [ ("centromeres", client.fetch_centromeres), ("cytoband", client.fetch_cytoband), ("cytoband", partial(client.fetch_cytoband, ideo=True)), ("gap", client.fetch_gaps), ] for schema, fetcher in fetchers: try: df = fetcher() break except urllib.error.HTTPError: pass else: raise ValueError("No source for centromere data found.") else: raise NotImplementedError("currently UCSC is only implemented provider") return extract_centromeres(df, schema=schema, merge=merge) class UCSCClient: BASE_URL = "http://hgdownload.cse.ucsc.edu/" def __init__(self, db): self._db = db self._db_url = urljoin(self.BASE_URL, "goldenPath/{}/database/".format(db)) def fetch_chromsizes( self, filter_chroms=True, chrom_patterns=(r"^chr[0-9]+$", r"^chr[XY]$", r"^chrM$"), natsort=True, as_bed=False, **kwargs, ): url = urljoin(self._db_url, "chromInfo.txt.gz") return read_chromsizes( url, filter_chroms=filter_chroms, chrom_patterns=chrom_patterns, natsort=natsort, as_bed=as_bed, **kwargs, ) def fetch_centromeres(self, **kwargs): url = urljoin(self._db_url, "centromeres.txt.gz") return read_table(url, schema="centromeres") def fetch_gaps(self, **kwargs): url = urljoin(self._db_url, "gap.txt.gz") return read_table( url, schema="gap", usecols=["chrom", "start", "end", "length", "type", "bridge"], **kwargs, ) def fetch_cytoband(self, ideo=False, **kwargs): if ideo: url = urljoin(self._db_url, "cytoBandIdeo.txt.gz") else: url = urljoin(self._db_url, "cytoBand.txt.gz") return read_table(url, schema="cytoband") def fetch_mrna(self, **kwargs): url = urljoin(self._db_url, "all_mrna.txt.gz") return read_table( url, schema=UCSC_MRNA_FIELDS, **kwargs, ) bioframe-0.4.1/bioframe/io/fileops.py0000644000175000017500000004615014420777331017052 0ustar nileshnileshfrom collections import OrderedDict from contextlib import closing import subprocess import tempfile import json import io import os import shutil import numpy as np import pandas as pd try: import bbi except ImportError: bbi = None try: import pyBigWig except ImportError: pyBigWig = None from ..core.stringops import parse_region from ..core.arrops import argnatsort from .schemas import SCHEMAS, BAM_FIELDS __all__ = [ "read_table", "read_chromsizes", "read_tabix", "read_pairix", "read_bam", "load_fasta", "read_bigwig", "to_bigwig", "read_bigbed", "to_bigbed", ] def read_table(filepath_or, schema=None, schema_is_strict=False, **kwargs): """ Read a tab-delimited file into a data frame. Equivalent to :func:`pandas.read_table` but supports an additional `schema` argument to populate column names for common genomic formats. Parameters ---------- filepath_or : str, path object or file-like object Any valid string path is acceptable. The string could be a URL schema : str Schema to use for table column names. schema_is_strict : bool Whether to check if columns are filled with NAs. Returns ------- df : pandas.DataFrame of intervals """ kwargs.setdefault("sep", "\t") kwargs.setdefault("header", None) kwargs.setdefault("index_col", False) if isinstance(filepath_or, str) and filepath_or.endswith(".gz"): kwargs.setdefault("compression", "gzip") if schema is not None: try: kwargs.setdefault("names", SCHEMAS[schema]) except (KeyError, TypeError): if isinstance(schema, str): raise ValueError("TSV schema not found: '{}'".format(schema)) kwargs.setdefault("names", schema) df = pd.read_csv(filepath_or, **kwargs) if schema_is_strict: if (df.notna().sum(axis=0) == 0).any(): raise ValueError( "one or more columns are all NA," + " check agreement between number of fields in schema" + " and number of columns in input file" ) return df def read_chromsizes( filepath_or, filter_chroms=True, chrom_patterns=(r"^chr[0-9]+$", r"^chr[XY]$", r"^chrM$"), natsort=True, as_bed=False, **kwargs ): """ Read a ``.chrom.sizes`` or ``.chromInfo.txt`` file from the UCSC database, where ``db`` is a genome assembly name, as a `pandas.Series`. Parameters ---------- filepath_or : str or file-like Path or url to text file, or buffer. filter_chroms : bool, optional Filter for chromosome names given in ``chrom_patterns``. chrom_patterns : sequence, optional Sequence of regular expressions to capture desired sequence names. natsort : bool, optional Sort each captured group of names in natural order. Default is True. as_bed : bool, optional If True, return chromsizes as an interval dataframe (chrom, start, end). **kwargs : Passed to :func:`pandas.read_csv` Returns ------- Series of integer bp lengths indexed by sequence name or an interval dataframe. Notes ----- Mention name patterns See also -------- * UCSC assembly terminology: * NCBI assembly terminology: """ if isinstance(filepath_or, str) and filepath_or.endswith(".gz"): kwargs.setdefault("compression", "gzip") chromtable = pd.read_csv( filepath_or, sep="\t", usecols=[0, 1], names=["name", "length"], dtype={"name": str}, **kwargs ) if filter_chroms: parts = [] for pattern in chrom_patterns: if not len(pattern): continue part = chromtable[chromtable["name"].str.contains(pattern)] if natsort: part = part.iloc[argnatsort(part["name"])] parts.append(part) chromtable = pd.concat(parts, axis=0) if as_bed: chromtable["start"] = 0 chromtable = ( chromtable[["name", "start", "length"]] .rename({"name": "chrom", "length": "end"}, axis="columns") .reset_index(drop=True) ) else: chromtable.index = chromtable["name"].values chromtable = chromtable["length"] return chromtable def read_tabix(fp, chrom=None, start=None, end=None): """ Read a tabix-indexed file into dataFrame. """ import pysam with closing(pysam.TabixFile(fp)) as f: names = list(f.header) or None df = pd.read_csv( io.StringIO("\n".join(f.fetch(chrom, start, end))), sep="\t", header=None, names=names, ) return df def read_pairix( fp, region1, region2=None, chromsizes=None, columns=None, usecols=None, dtypes=None, **kwargs ): """ Read a pairix-indexed file into DataFrame. """ import pypairix import cytoolz as toolz if dtypes is None: dtypes = {} f = pypairix.open(fp, "r") header = f.get_header() if len(header): header_groups = toolz.groupby(lambda x: x.split(":")[0], header) if "#chromsize" in header_groups and chromsizes is None: items = [line.split()[1:] for line in header_groups["#chromsize"]] if len(items) and chromsizes is None: names, lengths = zip(*((item[0], int(item[1])) for item in items)) chromsizes = pd.Series(index=names, data=lengths) if "#columns" in header_groups and columns is None: columns = header_groups["#columns"][0].split()[1:] chrom1, start1, end1 = parse_region(region1, chromsizes) if region2 is not None: chrom2, start2, end2 = parse_region(region2, chromsizes) else: chrom2, start2, end2 = chrom1, start1, end1 it = f.query2D(chrom1, start1, end1, chrom2, start2, end2) if usecols is not None: argusecols = [columns.index(col) for col in usecols] records = [(record[i] for i in argusecols) for record in it] columns = usecols else: records = it df = pd.DataFrame.from_records(records, columns=columns) if columns is not None: for col in columns: if col in dtypes: df[col] = df[col].astype(dtypes[col]) else: df[col] = pd.to_numeric(df[col], "ignore") return df def read_bam(fp, chrom=None, start=None, end=None): """ Read bam records into a DataFrame. """ import pysam with closing(pysam.AlignmentFile(fp, "rb")) as f: bam_iter = f.fetch(chrom, start, end) records = [ ( s.qname, s.flag, s.rname, s.pos, s.mapq, s.cigarstring if s.mapq != 0 else np.nan, s.rnext, s.pnext, s.tlen, s.seq, s.qual, json.dumps(OrderedDict(s.tags)), ) for s in bam_iter ] df = pd.DataFrame(records, columns=BAM_FIELDS) return df def extract_centromeres(df, schema=None, merge=True): """ Attempts to extract centromere locations from a variety of file formats, returning 'chrom', 'start', 'end', 'mid' in a pandas.DataFrame. """ if schema == "centromeres": cens = df elif schema == "cytoband": cens = df[df["gieStain"] == "acen"] elif schema == "gap": cens = df[df["type"] == "centromere"] else: raise ValueError('`schema` must be one of {"centromeres", "cytoband", "gap"}.') if merge: cens = cens.groupby("chrom").agg({"start": np.min, "end": np.max}).reset_index() cens["mid"] = (cens["start"] + cens["end"]) // 2 cens = ( cens[["chrom", "start", "end", "mid"]] .sort_values("chrom") .reset_index(drop=True) ) return cens class PysamFastaRecord(object): def __init__(self, ff, ref): self.ff = ff if ref not in ff.references: raise KeyError("Reference name '{}' not found in '{}'".format(ref, ff)) self.ref = ref def __getitem__(self, key): if isinstance(key, slice): start, stop = key.start, key.stop else: start = key stop = key + 1 return self.ff.fetch(self.ref, start, stop) def load_fasta(filepath_or, engine="pysam", **kwargs): """ Load lazy fasta sequences from an indexed fasta file (optionally compressed) or from a collection of uncompressed fasta files. Parameters ---------- filepath_or : str or iterable If a string, a filepath to a single `.fa` or `.fa.gz` file. Assumed to be accompanied by a `.fai` index file. Depending on the engine, the index may be created on the fly, and some compression formats may not be supported. If not a string, an iterable of fasta file paths each assumed to contain a single sequence. engine : {'pysam', 'pyfaidx'}, optional Module to use for loading sequences. kwargs : optional Options to pass to ``pysam.FastaFile`` or ``pyfaidx.Fasta``. Returns ------- OrderedDict of (lazy) fasta records. Notes ----- * pysam/samtools can read .fai and .gzi indexed files, I think. * pyfaidx can handle uncompressed and bgzf compressed files. """ is_multifile = not isinstance(filepath_or, str) records = OrderedDict() engine = engine.lower() if engine == "pysam": try: import pysam except ImportError: raise ImportError("pysam is required to use engine='pysam'") if is_multifile: for onefile in filepath_or: ff = pysam.FastaFile(onefile, **kwargs) name = ff.references[0] records[name] = PysamFastaRecord(ff, name) else: ff = pysam.FastaFile(filepath_or, **kwargs) for name in ff.references: records[name] = PysamFastaRecord(ff, name) elif engine == "pyfaidx": try: import pyfaidx except ImportError: raise ImportError("pyfaidx is required to use engine='pyfaidx'") if is_multifile: for onefile in filepath_or: ff = pyfaidx.Fasta(onefile, **kwargs) name = next(iter(ff.keys())) records[name] = ff[name] else: ff = pyfaidx.Fasta(filepath_or, **kwargs) for name in ff.keys(): records[name] = ff[name] else: raise ValueError("engine must be 'pysam' or 'pyfaidx'") return records def read_bigwig(path, chrom, start=None, end=None, engine="auto"): """ Read intervals from a bigWig file. Parameters ---------- path : str Path or URL to a bigWig file chrom : str start, end : int, optional Start and end coordinates. Defaults to 0 and chromosome length. engine : {"auto", "pybbi", "pybigwig"} Library to use for querying the bigWig file. Returns ------- DataFrame """ engine = engine.lower() if engine == "auto": if bbi is None and pyBigWig is None: raise ImportError( "read_bigwig requires either the pybbi or pyBigWig package" ) elif bbi is not None: engine = "pybbi" else: engine = "pybigwig" if engine in ("pybbi", "bbi"): if start is None: start = 0 if end is None: end = -1 with bbi.open(path) as f: df = f.fetch_intervals(chrom, start=start, end=end) elif engine == "pybigwig": f = pyBigWig.open(path) if start is None: start = 0 if end is None: end = f.chroms()[chrom] ivals = f.intervals(chrom, start, end) df = pd.DataFrame(ivals, columns=["start", "end", "value"]) df.insert(0, "chrom", chrom) else: raise ValueError( "engine must be 'auto', 'pybbi' or 'pybigwig'; got {}".format(engine) ) return df def read_bigbed(path, chrom, start=None, end=None, engine="auto"): """ Read intervals from a bigBed file. Parameters ---------- path : str Path or URL to a bigBed file chrom : str start, end : int, optional Start and end coordinates. Defaults to 0 and chromosome length. engine : {"auto", "pybbi", "pybigwig"} Library to use for querying the bigBed file. Returns ------- DataFrame """ engine = engine.lower() if engine == "auto": if bbi is None and pyBigWig is None: raise ImportError( "read_bigbed requires either the pybbi or pyBigWig package" ) elif bbi is not None: engine = "pybbi" else: engine = "pybigwig" if engine in ("pybbi", "bbi"): if start is None: start = 0 if end is None: end = -1 with bbi.open(path) as f: df = f.fetch_intervals(chrom, start=start, end=end) elif engine == "pybigwig": f = pyBigWig.open(path) if start is None: start = 0 if end is None: end = f.chroms()[chrom] ivals = f.entries(chrom, start, end) df = pd.DataFrame(ivals, columns=["start", "end", "rest"]) df.insert(0, "chrom", chrom) else: raise ValueError( "engine must be 'auto', 'pybbi' or 'pybigwig'; got {}".format(engine) ) return df def to_bigwig(df, chromsizes, outpath, value_field=None, path_to_binary=None): """ Save a bedGraph-like dataframe as a binary BigWig track. Parameters ---------- df : pandas.DataFrame Data frame with columns 'chrom', 'start', 'end' and one or more value columns chromsizes : pandas.Series Series indexed by chromosome name mapping to their lengths in bp outpath : str The output BigWig file path value_field : str, optional Select the column label of the data frame to generate the track. Default is to use the fourth column. path_to_binary : str, optional Provide system path to the bedGraphToBigWig binary. """ if path_to_binary is None: cmd = "bedGraphToBigWig" try: assert shutil.which(cmd) is not None except Exception as e: raise ValueError( "bedGraphToBigWig is not present in the current environment. " "Pass it as 'path_to_binary' parameter to bioframe.to_bigwig or " "install it with, for example, conda install -y -c bioconda ucsc-bedgraphtobigwig " ) elif path_to_binary.endswith("bedGraphToBigWig"): if not os.path.isfile(path_to_binary) and os.access(path_to_binary, os.X_OK): raise ValueError( f"bedGraphToBigWig is absent in the provided path or cannot be executed: {path_to_binary}. " ) cmd = path_to_binary else: cmd = os.path.join(path_to_binary, "bedGraphToBigWig") if not os.path.isfile(cmd) and os.access(cmd, os.X_OK): raise ValueError( f"bedGraphToBigWig is absent in the provided path or cannot be executed: {path_to_binary}. " ) is_bedgraph = True for col in ["chrom", "start", "end"]: if col not in df.columns: is_bedgraph = False if len(df.columns) < 4: is_bedgraph = False if not is_bedgraph: raise ValueError( "A bedGraph-like DataFrame is required, got {}".format(df.columns) ) if value_field is None: value_field = df.columns[3] columns = ["chrom", "start", "end", value_field] bg = df[columns].copy() bg["chrom"] = bg["chrom"].astype(str) bg = bg.sort_values(["chrom", "start", "end"]) with tempfile.NamedTemporaryFile(suffix=".bg") as f, tempfile.NamedTemporaryFile( "wt", suffix=".chrom.sizes" ) as cs: chromsizes.to_csv(cs, sep="\t", header=False) cs.flush() bg.to_csv( f.name, sep="\t", columns=columns, index=False, header=False, na_rep="nan" ) p = subprocess.run( [cmd, f.name, cs.name, outpath], stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) return p def to_bigbed(df, chromsizes, outpath, schema="bed6", path_to_binary=None): """ Save a bedGraph-like dataframe as a binary BigWig track. Parameters ---------- df : pandas.DataFrame Data frame with columns 'chrom', 'start', 'end' and one or more value columns chromsizes : pandas.Series Series indexed by chromosome name mapping to their lengths in bp outpath : str The output BigWig file path value_field : str, optional Select the column label of the data frame to generate the track. Default is to use the fourth column. path_to_binary : str, optional Provide system path to the bedGraphToBigWig binary. """ if path_to_binary is None: cmd = "bedToBigBed" try: assert shutil.which(cmd) is not None except Exception as e: raise ValueError( "bedToBigBed is not present in the current environment. " "Pass it as 'path_to_binary' parameter to bioframe.to_bigbed or " "install it with, for example, conda install -y -c bioconda ucsc-bedtobigbed " ) elif path_to_binary.endswith("bedToBigBed"): if not os.path.isfile(path_to_binary) and os.access(path_to_binary, os.X_OK): raise ValueError( f"bedToBigBed is absent in the provided path or cannot be executed: {path_to_binary}. " ) cmd = path_to_binary else: cmd = os.path.join(path_to_binary, "bedGraphToBigWig") if not os.path.isfile(cmd) and os.access(cmd, os.X_OK): raise ValueError( f"bedToBigBed is absent in the provided path or cannot be executed: {path_to_binary}. " ) is_bed6 = True for col in ["chrom", "start", "end", "name", "score", "strand"]: if col not in df.columns: is_bed6 = False if len(df.columns) < 6: is_bed6 = False if not is_bed6: raise ValueError("A bed6-like DataFrame is required, got {}".format(df.columns)) columns = ["chrom", "start", "end", "name", "score", "strand"] bed = df[columns].copy() bed["chrom"] = bed["chrom"].astype(str) bed = bed.sort_values(["chrom", "start", "end"]) with tempfile.NamedTemporaryFile(suffix=".bed") as f, tempfile.NamedTemporaryFile( "wt", suffix=".chrom.sizes" ) as cs: chromsizes.to_csv(cs, sep="\t", header=False) cs.flush() bed.to_csv( f.name, sep="\t", columns=columns, index=False, header=False, na_rep="nan" ) p = subprocess.run( [cmd, "-type={}".format(schema), f.name, cs.name, outpath], stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) return p bioframe-0.4.1/bioframe/io/data/0000755000175000017500000000000014420777331015742 5ustar nileshnileshbioframe-0.4.1/bioframe/io/data/wuhCor1.seqinfo.tsv0000644000175000017500000000015414420777331021473 0ustar nileshnileshname length type molecule unit aliases NC_045512v2 29903 assembled NC_045512 primary NC_045512.2,MN908947.3 bioframe-0.4.1/bioframe/io/data/t2t-chm13-v1.1.seqinfo.tsv0000644000175000017500000000241714420777331022254 0ustar nileshnileshname length type molecule unit aliases chr1 248387328 assembled chr1 primary 1,CP068277.2 chr2 242696752 assembled chr2 primary 2,CP068276.2 chr3 201105948 assembled chr3 primary 3,CP068275.2 chr4 193574945 assembled chr4 primary 4,CP068274.2 chr5 182045439 assembled chr5 primary 5,CP068273.2 chr6 172126628 assembled chr6 primary 6,CP068272.2 chr7 160567428 assembled chr7 primary 7,CP068271.2 chr8 146259331 assembled chr8 primary 8,CP068270.2 chr9 150617247 assembled chr9 primary 9,CP068269.2 chr10 134758134 assembled chr10 primary 10,CP068268.2 chr11 135127769 assembled chr11 primary 11,CP068267.2 chr12 133324548 assembled chr12 primary 12,CP068266.2 chr13 113566686 assembled chr13 primary 13,CP068265.2 chr14 101161492 assembled chr14 primary 14,CP068264.2 chr15 99753195 assembled chr15 primary 15,CP068263.2 chr16 96330374 assembled chr16 primary 16,CP068262.2 chr17 84276897 assembled chr17 primary 17,CP068261.2 chr18 80542538 assembled chr18 primary 18,CP068260.2 chr19 61707364 assembled chr19 primary 19,CP068259.2 chr20 66210255 assembled chr20 primary 20,CP068258.2 chr21 45090682 assembled chr21 primary 21,CP068257.2 chr22 51324926 assembled chr22 primary 22,CP068256.2 chrX 154259566 assembled chrX primary X,CP068255.2 chrM 16569 assembled chrM non-nuclear MT,CP068254.1 bioframe-0.4.1/bioframe/io/data/t2t-chm13-v1.0.seqinfo.tsv0000644000175000017500000000242014420777331022245 0ustar nileshnileshname length type molecule unit aliases chr1 248387497 assembled chr1 primary 1,CP068277.1 chr2 242696747 assembled chr2 primary 2,CP068276.1 chr3 201106605 assembled chr3 primary 3,CP068275.1 chr4 193575430 assembled chr4 primary 4,CP068274.1 chr5 182045437 assembled chr5 primary 5,CP068273.1 chr6 172126870 assembled chr6 primary 6,CP068272.1 chr7 160567423 assembled chr7 primary 7,CP068271.1 chr8 146259322 assembled chr8 primary 8,CP068270.1 chr9 150617274 assembled chr9 primary 9,CP068269.1 chr10 134758122 assembled chr10 primary 10,CP068268.1 chr11 135127772 assembled chr11 primary 11,CP068267.1 chr12 133324781 assembled chr12 primary 12,CP068266.1 chr13 114240146 assembled chr13 primary 13,CP068265.1 chr14 101219177 assembled chr14 primary 14,CP068264.1 chr15 100338308 assembled chr15 primary 15,CP068263.1 chr16 96330493 assembled chr16 primary 16,CP068262.1 chr17 84277185 assembled chr17 primary 17,CP068261.1 chr18 80542536 assembled chr18 primary 18,CP068260.1 chr19 61707359 assembled chr19 primary 19,CP068259.1 chr20 66210247 assembled chr20 primary 20,CP068258.1 chr21 45827691 assembled chr21 primary 21,CP068257.1 chr22 51353906 assembled chr22 primary 22,CP068256.1 chrX 154259625 assembled chrX primary X,CP068255.1 chrM 16569 assembled chrM non-nuclear MT,CP068254.1 bioframe-0.4.1/bioframe/io/data/sacCer3.seqinfo.tsv0000644000175000017500000000216314420777331021430 0ustar nileshnileshname length type molecule unit aliases chrI 230218 assembled chrI primary I,BK006935.2,NC_001133.9 chrII 813184 assembled chrII primary II,BK006936.2,NC_001134.8 chrIII 316620 assembled chrIII primary III,BK006937.2,NC_001135.5 chrIV 1531933 assembled chrIV primary IV,BK006938.2,NC_001136.10 chrV 576874 assembled chrV primary V,BK006939.2,NC_001137.3 chrVI 270161 assembled chrVI primary VI,BK006940.2,NC_001138.5 chrVII 1090940 assembled chrVII primary VII,BK006941.2,NC_001139.9 chrVIII 562643 assembled chrVIII primary VIII,BK006934.2,NC_001140.6 chrIX 439888 assembled chrIX primary IX,BK006942.2,NC_001141.2 chrX 745751 assembled chrX primary X,BK006943.2,NC_001142.9 chrXI 666816 assembled chrXI primary XI,BK006944.2,NC_001143.9 chrXII 1078177 assembled chrXII primary XII,BK006945.2,NC_001144.5 chrXIII 924431 assembled chrXIII primary XIII,BK006946.2,NC_001145.3 chrXIV 784333 assembled chrXIV primary XIV,BK006947.3,NC_001146.8 chrXV 1091291 assembled chrXV primary XV,BK006948.2,NC_001147.6 chrXVI 948066 assembled chrXVI primary XVI,BK006949.2,NC_001148.4 chrM 85779 assembled chrM non-nuclear MT,Mito,AJ011856.1,NC_001224.1 bioframe-0.4.1/bioframe/io/data/mm9.seqinfo.tsv0000644000175000017500000000376614420777331020661 0ustar nileshnileshname length type molecule unit aliases chr1 197195432 assembled chr1 primary 1,CM000994.1,NC_000067.5 chr2 181748087 assembled chr2 primary 2,CM000995.1,NC_000068.6 chr3 159599783 assembled chr3 primary 3,CM000996.1,NC_000069.5 chr4 155630120 assembled chr4 primary 4,CM000997.1,NC_000070.5 chr5 152537259 assembled chr5 primary 5,CM000998.1,NC_000071.5 chr6 149517037 assembled chr6 primary 6,CM000999.1,NC_000072.5 chr7 152524553 assembled chr7 primary 7,CM001000.1,NC_000073.5 chr8 131738871 assembled chr8 primary 8,CM001001.1,NC_000074.5 chr9 124076172 assembled chr9 primary 9,CM001002.1,NC_000075.5 chr10 129993255 assembled chr10 primary 10,CM001003.1,NC_000076.5 chr11 121843856 assembled chr11 primary 11,CM001004.1,NC_000077.5 chr12 121257530 assembled chr12 primary 12,CM001005.1,NC_000078.5 chr13 120284312 assembled chr13 primary 13,CM001006.1,NC_000079.5 chr14 125194864 assembled chr14 primary 14,CM001007.1,NC_000080.5 chr15 103494974 assembled chr15 primary 15,CM001008.1,NC_000081.5 chr16 98319150 assembled chr16 primary 16,CM001009.1,NC_000082.5 chr17 95272651 assembled chr17 primary 17,CM001010.1,NC_000083.5 chr18 90772031 assembled chr18 primary 18,CM001011.1,NC_000084.5 chr19 61342430 assembled chr19 primary 19,CM001012.1,NC_000085.5 chrX 166650296 assembled chrX primary X,CM001013.1,NC_000086.6 chrY 15902555 assembled chrY primary Y,CM001014.1,NC_000087.6 chrM 16299 assembled chrM non-nuclear MT,AY172335.1,NC_005089.1 chr1_random 1231697 unlocalized chr1 primary chr3_random 41899 unlocalized chr3 primary chr4_random 160594 unlocalized chr4 primary chr5_random 357350 unlocalized chr5 primary chr7_random 362490 unlocalized chr7 primary chr8_random 849593 unlocalized chr8 primary chr9_random 449403 unlocalized chr9 primary chr13_random 400311 unlocalized chr13 primary chr16_random 3994 unlocalized chr16 primary chr17_random 628739 unlocalized chr17 primary chrX_random 1785075 unlocalized chrX primary chrY_random 58682461 unlocalized chrY primary chrUn_random 5900358 unplaced primary bioframe-0.4.1/bioframe/io/data/mm39.seqinfo.tsv0000644000175000017500000001130214420777331020725 0ustar nileshnileshname length type molecule unit aliases chr1 195154279 assembled chr1 primary 1,CM000994.3,NC_000067.7 chr2 181755017 assembled chr2 primary 2,CM000995.3,NC_000068.8 chr3 159745316 assembled chr3 primary 3,CM000996.3,NC_000069.7 chr4 156860686 assembled chr4 primary 4,CM000997.3,NC_000070.7 chr5 151758149 assembled chr5 primary 5,CM000998.3,NC_000071.7 chr6 149588044 assembled chr6 primary 6,CM000999.3,NC_000072.7 chr7 144995196 assembled chr7 primary 7,CM001000.3,NC_000073.7 chr8 130127694 assembled chr8 primary 8,CM001001.3,NC_000074.7 chr9 124359700 assembled chr9 primary 9,CM001002.3,NC_000075.7 chr10 130530862 assembled chr10 primary 10,CM001003.3,NC_000076.7 chr11 121973369 assembled chr11 primary 11,CM001004.3,NC_000077.7 chr12 120092757 assembled chr12 primary 12,CM001005.3,NC_000078.7 chr13 120883175 assembled chr13 primary 13,CM001006.3,NC_000079.7 chr14 125139656 assembled chr14 primary 14,CM001007.3,NC_000080.7 chr15 104073951 assembled chr15 primary 15,CM001008.3,NC_000081.7 chr16 98008968 assembled chr16 primary 16,CM001009.3,NC_000082.7 chr17 95294699 assembled chr17 primary 17,CM001010.3,NC_000083.7 chr18 90720763 assembled chr18 primary 18,CM001011.3,NC_000084.7 chr19 61420004 assembled chr19 primary 19,CM001012.3,NC_000085.7 chrX 169476592 assembled chrX primary X,CM001013.3,NC_000086.8 chrY 91455967 assembled chrY primary Y,CM001014.3,NC_000087.8 chrM 16299 assembled chrM non-nuclear MT,AY172335.1,NC_005089.1 chr1_GL456210v1_random 169725 unlocalized chr1 primary GL456210.1,MMCHR1_RANDOM_CTG1,NT_166280.1 chr1_GL456211v1_random 241735 unlocalized chr1 primary GL456211.1,MMCHR1_RANDOM_CTG2,NT_166281.1 chr1_GL456212v1_random 153618 unlocalized chr1 primary GL456212.1,MMCHR1_RANDOM_CTG3,NT_166282.1 chr1_GL456221v1_random 206961 unlocalized chr1 primary GL456221.1,MMCHR1_RANDOM_CTG5,NT_162750.1 chr1_GL456239v1_random 40056 unlocalized chr1 primary GL456239.1,MMCHR1_RANDOM_CTG7,NT_166338.1 chr1_MU069434v1_random 8412 unlocalized chr1 primary MMCHR1_RANDOM_CTG6,MU069434.1,NW_023337853.1 chr4_JH584295v1_random 1976 unlocalized chr4 primary JH584295.1,MMCHR4UN_CTG6,NT_187055.1 chr5_GL456354v1_random 195993 unlocalized chr5 primary GL456354.1,MMCHR5_RANDOM_CTG4,NT_166438.1 chr5_JH584296v1_random 199368 unlocalized chr5 primary JH584296.1,MMCHR5_RANDOM_CTG1,NT_187056.1 chr5_JH584297v1_random 205776 unlocalized chr5 primary JH584297.1,MMCHR5_RANDOM_CTG2,NT_187057.1 chr5_JH584298v1_random 184189 unlocalized chr5 primary JH584298.1,MMCHR5_RANDOM_CTG3,NT_187058.1 chr5_JH584299v1_random 953012 unlocalized chr5 primary JH584299.1,MMCHR5_RANDOM_CTG5,NT_187059.1 chr7_GL456219v1_random 175968 unlocalized chr7 primary GL456219.1,MMCHR7_RANDOM_CTG1,NT_166307.1 chrX_GL456233v2_random 559103 unlocalized chrX primary GL456233.2,MMCHRX_RANDOM_CTG2,NT_165789.3 chrY_JH584300v1_random 182347 unlocalized chrY primary JH584300.1,MMCHRY_CTGU1,NT_187060.1 chrY_JH584301v1_random 259875 unlocalized chrY primary JH584301.1,MMCHRY_CTGU2,NT_187061.1 chrY_JH584302v1_random 155838 unlocalized chrY primary JH584302.1,MMCHRY_CTGU3,NT_187062.1 chrY_JH584303v1_random 158099 unlocalized chrY primary JH584303.1,MMCHRY_CTGU4,NT_187063.1 chrUn_GL456359v1 22974 unplaced primary GL456359.1,MSCHRUN_CTG13,NT_166443.1 chrUn_GL456360v1 31704 unplaced primary GL456360.1,MSCHRUN_CTG14,NT_166444.1 chrUn_GL456366v1 47073 unplaced primary GL456366.1,MSCHRUN_CTG21,NT_166450.1 chrUn_GL456367v1 42057 unplaced primary GL456367.1,MSCHRUN_CTG2,NT_166451.1 chrUn_GL456368v1 20208 unplaced primary GL456368.1,MSCHRUN_CTG22,NT_166452.1 chrUn_GL456370v1 26764 unplaced primary GL456370.1,MSCHRUN_CTG19,NT_166454.1 chrUn_GL456372v1 28664 unplaced primary GL456372.1,MSCHRUN_CTG16,NT_166456.1 chrUn_GL456378v1 31602 unplaced primary GL456378.1,MSCHRUN_CTG3,NT_166462.1 chrUn_GL456379v1 72385 unplaced primary GL456379.1,MSCHRUN_CTG20,NT_166463.1 chrUn_GL456381v1 25871 unplaced primary GL456381.1,MSCHRUN_CTG4,NT_166465.1 chrUn_GL456382v1 23158 unplaced primary GL456382.1,MSCHRUN_CTG5,NT_166466.1 chrUn_GL456383v1 38659 unplaced primary GL456383.1,MSCHRUN_CTG6,NT_166467.1 chrUn_GL456385v1 35240 unplaced primary GL456385.1,MSCHRUN_CTG7,NT_166469.1 chrUn_GL456387v1 24685 unplaced primary GL456387.1,MSCHRUN_CTG17,NT_166471.1 chrUn_GL456389v1 28772 unplaced primary GL456389.1,MSCHRUN_CTG18,NT_166473.1 chrUn_GL456390v1 24668 unplaced primary GL456390.1,MSCHRUN_CTG9,NT_166474.1 chrUn_GL456392v1 23629 unplaced primary GL456392.1,MSCHRUN_CTG10,NT_166476.1 chrUn_GL456394v1 24323 unplaced primary GL456394.1,MSCHRUN_CTG12,NT_166478.1 chrUn_GL456396v1 21240 unplaced primary GL456396.1,MSCHRUN_CTG15,NT_166480.1 chrUn_JH584304v1 114452 unplaced primary JH584304.1,MSCHRUN_CTG23,NT_187064.1 chrUn_MU069435v1 31129 unplaced primary MU069435.1,MSCHRUN_CTG24,NW_023337853.1 bioframe-0.4.1/bioframe/io/data/mm10.seqinfo.tsv0000644000175000017500000001203314420777331020714 0ustar nileshnileshname length type molecule unit aliases chr1 195471971 assembled chr1 primary 1,CM000994.2,NC_000067.6 chr2 182113224 assembled chr2 primary 2,CM000995.2,NC_000068.7 chr3 160039680 assembled chr3 primary 3,CM000996.2,NC_000069.6 chr4 156508116 assembled chr4 primary 4,CM000997.2,NC_000070.6 chr5 151834684 assembled chr5 primary 5,CM000998.2,NC_000071.6 chr6 149736546 assembled chr6 primary 6,CM000999.2,NC_000072.6 chr7 145441459 assembled chr7 primary 7,CM001000.2,NC_000073.6 chr8 129401213 assembled chr8 primary 8,CM001001.2,NC_000074.6 chr9 124595110 assembled chr9 primary 9,CM001002.2,NC_000075.6 chr10 130694993 assembled chr10 primary 10,CM001003.2,NC_000076.6 chr11 122082543 assembled chr11 primary 11,CM001004.2,NC_000077.6 chr12 120129022 assembled chr12 primary 12,CM001005.2,NC_000078.6 chr13 120421639 assembled chr13 primary 13,CM001006.2,NC_000079.6 chr14 124902244 assembled chr14 primary 14,CM001007.2,NC_000080.6 chr15 104043685 assembled chr15 primary 15,CM001008.2,NC_000081.6 chr16 98207768 assembled chr16 primary 16,CM001009.2,NC_000082.6 chr17 94987271 assembled chr17 primary 17,CM001010.2,NC_000083.6 chr18 90702639 assembled chr18 primary 18,CM001011.2,NC_000084.6 chr19 61431566 assembled chr19 primary 19,CM001012.2,NC_000085.6 chrX 171031299 assembled chrX primary X,CM001013.2,NC_000086.7 chrY 91744698 assembled chrY primary Y,CM001014.2,NC_000087.7 chrM 16299 assembled chrM non-nuclear MT,AY172335.1,NC_005089.1 chr1_GL456210_random 169725 unlocalized chr1 primary GL456210.1,MMCHR1_RANDOM_CTG1,NT_166280.1 chr1_GL456211_random 241735 unlocalized chr1 primary GL456211.1,MMCHR1_RANDOM_CTG2,NT_166281.1 chr1_GL456212_random 153618 unlocalized chr1 primary GL456212.1,MMCHR1_RANDOM_CTG3,NT_166282.1 chr1_GL456213_random 39340 unlocalized chr1 primary GL456213.1,MMCHR1_RANDOM_CTG4,NT_166283.1 chr1_GL456221_random 206961 unlocalized chr1 primary GL456221.1,MMCHR1_RANDOM_CTG5,NT_162750.1 chr4_GL456216_random 66673 unlocalized chr4 primary GL456216.1,MMCHR4UN_CTG1,NT_166291.1 chr4_GL456350_random 227966 unlocalized chr4 primary GL456350.1,MMCHR4UN_CTG3,NT_166434.1 chr4_JH584292_random 14945 unlocalized chr4 primary JH584292.1,MMCHR4UN_CTG2,NT_187052.1 chr4_JH584293_random 207968 unlocalized chr4 primary JH584293.1,MMCHR4UN_CTG4,NT_187053.1 chr4_JH584294_random 191905 unlocalized chr4 primary JH584294.1,MMCHR4UN_CTG5,NT_187054.1 chr4_JH584295_random 1976 unlocalized chr4 primary JH584295.1,MMCHR4UN_CTG6,NT_187055.1 chr5_GL456354_random 195993 unlocalized chr5 primary GL456354.1,MMCHR5_RANDOM_CTG4,NT_166438.1 chr5_JH584296_random 199368 unlocalized chr5 primary JH584296.1,MMCHR5_RANDOM_CTG1,NT_187056.1 chr5_JH584297_random 205776 unlocalized chr5 primary JH584297.1,MMCHR5_RANDOM_CTG2,NT_187057.1 chr5_JH584298_random 184189 unlocalized chr5 primary JH584298.1,MMCHR5_RANDOM_CTG3,NT_187058.1 chr5_JH584299_random 953012 unlocalized chr5 primary JH584299.1,MMCHR5_RANDOM_CTG5,NT_187059.1 chr7_GL456219_random 175968 unlocalized chr7 primary GL456219.1,MMCHR7_RANDOM_CTG1,NT_166307.1 chrX_GL456233_random 336933 unlocalized chrX primary GL456233.1,MMCHRX_RANDOM_CTG2,NT_165789.2 chrY_JH584300_random 182347 unlocalized chrY primary JH584300.1,MMCHRY_CTGU1,NT_187060.1 chrY_JH584301_random 259875 unlocalized chrY primary JH584301.1,MMCHRY_CTGU2,NT_187061.1 chrY_JH584302_random 155838 unlocalized chrY primary JH584302.1,MMCHRY_CTGU3,NT_187062.1 chrY_JH584303_random 158099 unlocalized chrY primary JH584303.1,MMCHRY_CTGU4,NT_187063.1 chrUn_GL456239 40056 unplaced primary GL456239.1,MSCHRUN_CTG1,NT_166338.1 chrUn_GL456359 22974 unplaced primary GL456359.1,MSCHRUN_CTG13,NT_166443.1 chrUn_GL456360 31704 unplaced primary GL456360.1,MSCHRUN_CTG14,NT_166444.1 chrUn_GL456366 47073 unplaced primary GL456366.1,MSCHRUN_CTG21,NT_166450.1 chrUn_GL456367 42057 unplaced primary GL456367.1,MSCHRUN_CTG2,NT_166451.1 chrUn_GL456368 20208 unplaced primary GL456368.1,MSCHRUN_CTG22,NT_166452.1 chrUn_GL456370 26764 unplaced primary GL456370.1,MSCHRUN_CTG19,NT_166454.1 chrUn_GL456372 28664 unplaced primary GL456372.1,MSCHRUN_CTG16,NT_166456.1 chrUn_GL456378 31602 unplaced primary GL456378.1,MSCHRUN_CTG3,NT_166462.1 chrUn_GL456379 72385 unplaced primary GL456379.1,MSCHRUN_CTG20,NT_166463.1 chrUn_GL456381 25871 unplaced primary GL456381.1,MSCHRUN_CTG4,NT_166465.1 chrUn_GL456382 23158 unplaced primary GL456382.1,MSCHRUN_CTG5,NT_166466.1 chrUn_GL456383 38659 unplaced primary GL456383.1,MSCHRUN_CTG6,NT_166467.1 chrUn_GL456385 35240 unplaced primary GL456385.1,MSCHRUN_CTG7,NT_166469.1 chrUn_GL456387 24685 unplaced primary GL456387.1,MSCHRUN_CTG17,NT_166471.1 chrUn_GL456389 28772 unplaced primary GL456389.1,MSCHRUN_CTG18,NT_166473.1 chrUn_GL456390 24668 unplaced primary GL456390.1,MSCHRUN_CTG9,NT_166474.1 chrUn_GL456392 23629 unplaced primary GL456392.1,MSCHRUN_CTG10,NT_166476.1 chrUn_GL456393 55711 unplaced primary GL456393.1,MSCHRUN_CTG11,NT_166477.1 chrUn_GL456394 24323 unplaced primary GL456394.1,MSCHRUN_CTG12,NT_166478.1 chrUn_GL456396 21240 unplaced primary GL456396.1,MSCHRUN_CTG15,NT_166480.1 chrUn_JH584304 114452 unplaced primary JH584304.1,MSCHRUN_CTG23,NT_187064.1 bioframe-0.4.1/bioframe/io/data/hg38.seqinfo.tsv0000644000175000017500000004016514420777331020722 0ustar nileshnileshname length type molecule unit aliases chr1 248956422 assembled chr1 primary 1,CM000663.2,NC_000001.11 chr2 242193529 assembled chr2 primary 2,CM000664.2,NC_000002.12 chr3 198295559 assembled chr3 primary 3,CM000665.2,NC_000003.12 chr4 190214555 assembled chr4 primary 4,CM000666.2,NC_000004.12 chr5 181538259 assembled chr5 primary 5,CM000667.2,NC_000005.10 chr6 170805979 assembled chr6 primary 6,CM000668.2,NC_000006.12 chr7 159345973 assembled chr7 primary 7,CM000669.2,NC_000007.14 chr8 145138636 assembled chr8 primary 8,CM000670.2,NC_000008.11 chr9 138394717 assembled chr9 primary 9,CM000671.2,NC_000009.12 chr10 133797422 assembled chr10 primary 10,CM000672.2,NC_000010.11 chr11 135086622 assembled chr11 primary 11,CM000673.2,NC_000011.10 chr12 133275309 assembled chr12 primary 12,CM000674.2,NC_000012.12 chr13 114364328 assembled chr13 primary 13,CM000675.2,NC_000013.11 chr14 107043718 assembled chr14 primary 14,CM000676.2,NC_000014.9 chr15 101991189 assembled chr15 primary 15,CM000677.2,NC_000015.10 chr16 90338345 assembled chr16 primary 16,CM000678.2,NC_000016.10 chr17 83257441 assembled chr17 primary 17,CM000679.2,NC_000017.11 chr18 80373285 assembled chr18 primary 18,CM000680.2,NC_000018.10 chr19 58617616 assembled chr19 primary 19,CM000681.2,NC_000019.10 chr20 64444167 assembled chr20 primary 20,CM000682.2,NC_000020.11 chr21 46709983 assembled chr21 primary 21,CM000683.2,NC_000021.9 chr22 50818468 assembled chr22 primary 22,CM000684.2,NC_000022.11 chrX 156040895 assembled chrX primary X,CM000685.2,NC_000023.11 chrY 57227415 assembled chrY primary Y,CM000686.2,NC_000024.10 chrM 16569 assembled chrM non-nuclear MT,J01415.2,NC_012920.1 chr1_KI270706v1_random 175055 unlocalized chr1 primary HSCHR1_CTG1_UNLOCALIZED,KI270706.1,NT_187361.1 chr1_KI270707v1_random 32032 unlocalized chr1 primary HSCHR1_CTG2_UNLOCALIZED,KI270707.1,NT_187362.1 chr1_KI270708v1_random 127682 unlocalized chr1 primary HSCHR1_CTG3_UNLOCALIZED,KI270708.1,NT_187363.1 chr1_KI270709v1_random 66860 unlocalized chr1 primary HSCHR1_CTG4_UNLOCALIZED,KI270709.1,NT_187364.1 chr1_KI270710v1_random 40176 unlocalized chr1 primary HSCHR1_CTG5_UNLOCALIZED,KI270710.1,NT_187365.1 chr1_KI270711v1_random 42210 unlocalized chr1 primary HSCHR1_CTG6_UNLOCALIZED,KI270711.1,NT_187366.1 chr1_KI270712v1_random 176043 unlocalized chr1 primary HSCHR1_CTG7_UNLOCALIZED,KI270712.1,NT_187367.1 chr1_KI270713v1_random 40745 unlocalized chr1 primary HSCHR1_CTG8_UNLOCALIZED,KI270713.1,NT_187368.1 chr1_KI270714v1_random 41717 unlocalized chr1 primary HSCHR1_CTG9_UNLOCALIZED,KI270714.1,NT_187369.1 chr2_KI270715v1_random 161471 unlocalized chr2 primary HSCHR2_RANDOM_CTG1,KI270715.1,NT_187370.1 chr2_KI270716v1_random 153799 unlocalized chr2 primary HSCHR2_RANDOM_CTG2,KI270716.1,NT_187371.1 chr3_GL000221v1_random 155397 unlocalized chr3 primary GL000221.1,HSCHR3UN_CTG2,NT_167215.1 chr4_GL000008v2_random 209709 unlocalized chr4 primary GL000008.2,HSCHR4_RANDOM_CTG4,NT_113793.3 chr5_GL000208v1_random 92689 unlocalized chr5 primary GL000208.1,HSCHR5_RANDOM_CTG1,NT_113948.1 chr9_KI270717v1_random 40062 unlocalized chr9 primary HSCHR9_UNLOCALIZED_CTG1,KI270717.1,NT_187372.1 chr9_KI270718v1_random 38054 unlocalized chr9 primary HSCHR9_UNLOCALIZED_CTG2,KI270718.1,NT_187373.1 chr9_KI270719v1_random 176845 unlocalized chr9 primary HSCHR9_UNLOCALIZED_CTG3,KI270719.1,NT_187374.1 chr9_KI270720v1_random 39050 unlocalized chr9 primary HSCHR9_UNLOCALIZED_CTG4,KI270720.1,NT_187375.1 chr11_KI270721v1_random 100316 unlocalized chr11 primary HSCHR11_CTG1_UNLOCALIZED,KI270721.1,NT_187376.1 chr14_GL000009v2_random 201709 unlocalized chr14 primary GL000009.2,HSCHR14_CTG1_UNLOCALIZED,NT_113796.3 chr14_GL000194v1_random 191469 unlocalized chr14 primary GL000194.1,HSCHR14_CTG4_UNLOCALIZED,NT_113888.1 chr14_GL000225v1_random 211173 unlocalized chr14 primary GL000225.1,HSCHR14_CTG2_UNLOCALIZED,NT_167219.1 chr14_KI270722v1_random 194050 unlocalized chr14 primary HSCHR14_CTG3_UNLOCALIZED,KI270722.1,NT_187377.1 chr14_KI270723v1_random 38115 unlocalized chr14 primary HSCHR14_CTG5_UNLOCALIZED,KI270723.1,NT_187378.1 chr14_KI270724v1_random 39555 unlocalized chr14 primary HSCHR14_CTG6_UNLOCALIZED,KI270724.1,NT_187379.1 chr14_KI270725v1_random 172810 unlocalized chr14 primary HSCHR14_CTG7_UNLOCALIZED,KI270725.1,NT_187380.1 chr14_KI270726v1_random 43739 unlocalized chr14 primary HSCHR14_CTG8_UNLOCALIZED,KI270726.1,NT_187381.1 chr15_KI270727v1_random 448248 unlocalized chr15 primary HSCHR15_RANDOM_CTG1,KI270727.1,NT_187382.1 chr16_KI270728v1_random 1872759 unlocalized chr16 primary HSCHR16_RANDOM_CTG1,KI270728.1,NT_187383.1 chr17_GL000205v2_random 185591 unlocalized chr17 primary GL000205.2,HSCHR17_RANDOM_CTG3,NT_113930.2 chr17_KI270729v1_random 280839 unlocalized chr17 primary HSCHR17_RANDOM_CTG4,KI270729.1,NT_187384.1 chr17_KI270730v1_random 112551 unlocalized chr17 primary HSCHR17_RANDOM_CTG5,KI270730.1,NT_187385.1 chr22_KI270731v1_random 150754 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG1,KI270731.1,NT_187386.1 chr22_KI270732v1_random 41543 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG2,KI270732.1,NT_187387.1 chr22_KI270733v1_random 179772 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG3,KI270733.1,NT_187388.1 chr22_KI270734v1_random 165050 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG4,KI270734.1,NT_187389.1 chr22_KI270735v1_random 42811 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG5,KI270735.1,NT_187390.1 chr22_KI270736v1_random 181920 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG6,KI270736.1,NT_187391.1 chr22_KI270737v1_random 103838 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG7,KI270737.1,NT_187392.1 chr22_KI270738v1_random 99375 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG8,KI270738.1,NT_187393.1 chr22_KI270739v1_random 73985 unlocalized chr22 primary HSCHR22_UNLOCALIZED_CTG9,KI270739.1,NT_187394.1 chrY_KI270740v1_random 37240 unlocalized chrY primary HSCHRY_RANDOM_CTG1,KI270740.1,NT_187395.1 chrUn_GL000195v1 182896 unplaced primary GL000195.1,HSCHRUN_RANDOM_CTG1,NT_113901.1 chrUn_GL000213v1 164239 unplaced primary GL000213.1,HSCHRUN_RANDOM_CTG2,NT_167208.1 chrUn_GL000214v1 137718 unplaced primary GL000214.1,HSCHRUN_RANDOM_CTG4,NT_167209.1 chrUn_GL000216v2 176608 unplaced primary GL000216.2,HSCHRUN_RANDOM_CTG6,NT_167211.2 chrUn_GL000218v1 161147 unplaced primary GL000218.1,HSCHRUN_RANDOM_CTG9,NT_113889.1 chrUn_GL000219v1 179198 unplaced primary GL000219.1,HSCHRUN_RANDOM_CTG10,NT_167213.1 chrUn_GL000220v1 161802 unplaced primary GL000220.1,HSCHRUN_RANDOM_CTG11,NT_167214.1 chrUn_GL000224v1 179693 unplaced primary GL000224.1,HSCHRUN_RANDOM_CTG16,NT_167218.1 chrUn_GL000226v1 15008 unplaced primary GL000226.1,HSCHRUN_RANDOM_CTG19,NT_167220.1 chrUn_KI270302v1 2274 unplaced primary HSCHRUN_RANDOM_100,KI270302.1,NT_187396.1 chrUn_KI270303v1 1942 unplaced primary HSCHRUN_RANDOM_102,KI270303.1,NT_187398.1 chrUn_KI270304v1 2165 unplaced primary HSCHRUN_RANDOM_101,KI270304.1,NT_187397.1 chrUn_KI270305v1 1472 unplaced primary HSCHRUN_RANDOM_103,KI270305.1,NT_187399.1 chrUn_KI270310v1 1201 unplaced primary HSCHRUN_RANDOM_106,KI270310.1,NT_187402.1 chrUn_KI270311v1 12399 unplaced primary HSCHRUN_RANDOM_110,KI270311.1,NT_187406.1 chrUn_KI270312v1 998 unplaced primary HSCHRUN_RANDOM_109,KI270312.1,NT_187405.1 chrUn_KI270315v1 2276 unplaced primary HSCHRUN_RANDOM_108,KI270315.1,NT_187404.1 chrUn_KI270316v1 1444 unplaced primary HSCHRUN_RANDOM_107,KI270316.1,NT_187403.1 chrUn_KI270317v1 37690 unplaced primary HSCHRUN_RANDOM_111,KI270317.1,NT_187407.1 chrUn_KI270320v1 4416 unplaced primary HSCHRUN_RANDOM_105,KI270320.1,NT_187401.1 chrUn_KI270322v1 21476 unplaced primary HSCHRUN_RANDOM_104,KI270322.1,NT_187400.1 chrUn_KI270329v1 1040 unplaced primary HSCHRUN_RANDOM_167,KI270329.1,NT_187459.1 chrUn_KI270330v1 1652 unplaced primary HSCHRUN_RANDOM_166,KI270330.1,NT_187458.1 chrUn_KI270333v1 2699 unplaced primary HSCHRUN_RANDOM_169,KI270333.1,NT_187461.1 chrUn_KI270334v1 1368 unplaced primary HSCHRUN_RANDOM_168,KI270334.1,NT_187460.1 chrUn_KI270335v1 1048 unplaced primary HSCHRUN_RANDOM_170,KI270335.1,NT_187462.1 chrUn_KI270336v1 1026 unplaced primary HSCHRUN_RANDOM_173,KI270336.1,NT_187465.1 chrUn_KI270337v1 1121 unplaced primary HSCHRUN_RANDOM_174,KI270337.1,NT_187466.1 chrUn_KI270338v1 1428 unplaced primary HSCHRUN_RANDOM_171,KI270338.1,NT_187463.1 chrUn_KI270340v1 1428 unplaced primary HSCHRUN_RANDOM_172,KI270340.1,NT_187464.1 chrUn_KI270362v1 3530 unplaced primary HSCHRUN_RANDOM_177,KI270362.1,NT_187469.1 chrUn_KI270363v1 1803 unplaced primary HSCHRUN_RANDOM_175,KI270363.1,NT_187467.1 chrUn_KI270364v1 2855 unplaced primary HSCHRUN_RANDOM_176,KI270364.1,NT_187468.1 chrUn_KI270366v1 8320 unplaced primary HSCHRUN_RANDOM_178,KI270366.1,NT_187470.1 chrUn_KI270371v1 2805 unplaced primary HSCHRUN_RANDOM_202,KI270371.1,NT_187494.1 chrUn_KI270372v1 1650 unplaced primary HSCHRUN_RANDOM_199,KI270372.1,NT_187491.1 chrUn_KI270373v1 1451 unplaced primary HSCHRUN_RANDOM_200,KI270373.1,NT_187492.1 chrUn_KI270374v1 2656 unplaced primary HSCHRUN_RANDOM_198,KI270374.1,NT_187490.1 chrUn_KI270375v1 2378 unplaced primary HSCHRUN_RANDOM_201,KI270375.1,NT_187493.1 chrUn_KI270376v1 1136 unplaced primary HSCHRUN_RANDOM_197,KI270376.1,NT_187489.1 chrUn_KI270378v1 1048 unplaced primary HSCHRUN_RANDOM_179,KI270378.1,NT_187471.1 chrUn_KI270379v1 1045 unplaced primary HSCHRUN_RANDOM_180,KI270379.1,NT_187472.1 chrUn_KI270381v1 1930 unplaced primary HSCHRUN_RANDOM_194,KI270381.1,NT_187486.1 chrUn_KI270382v1 4215 unplaced primary HSCHRUN_RANDOM_196,KI270382.1,NT_187488.1 chrUn_KI270383v1 1750 unplaced primary HSCHRUN_RANDOM_190,KI270383.1,NT_187482.1 chrUn_KI270384v1 1658 unplaced primary HSCHRUN_RANDOM_192,KI270384.1,NT_187484.1 chrUn_KI270385v1 990 unplaced primary HSCHRUN_RANDOM_195,KI270385.1,NT_187487.1 chrUn_KI270386v1 1788 unplaced primary HSCHRUN_RANDOM_188,KI270386.1,NT_187480.1 chrUn_KI270387v1 1537 unplaced primary HSCHRUN_RANDOM_183,KI270387.1,NT_187475.1 chrUn_KI270388v1 1216 unplaced primary HSCHRUN_RANDOM_186,KI270388.1,NT_187478.1 chrUn_KI270389v1 1298 unplaced primary HSCHRUN_RANDOM_181,KI270389.1,NT_187473.1 chrUn_KI270390v1 2387 unplaced primary HSCHRUN_RANDOM_182,KI270390.1,NT_187474.1 chrUn_KI270391v1 1484 unplaced primary HSCHRUN_RANDOM_189,KI270391.1,NT_187481.1 chrUn_KI270392v1 971 unplaced primary HSCHRUN_RANDOM_193,KI270392.1,NT_187485.1 chrUn_KI270393v1 1308 unplaced primary HSCHRUN_RANDOM_191,KI270393.1,NT_187483.1 chrUn_KI270394v1 970 unplaced primary HSCHRUN_RANDOM_187,KI270394.1,NT_187479.1 chrUn_KI270395v1 1143 unplaced primary HSCHRUN_RANDOM_184,KI270395.1,NT_187476.1 chrUn_KI270396v1 1880 unplaced primary HSCHRUN_RANDOM_185,KI270396.1,NT_187477.1 chrUn_KI270411v1 2646 unplaced primary HSCHRUN_RANDOM_113,KI270411.1,NT_187409.1 chrUn_KI270412v1 1179 unplaced primary HSCHRUN_RANDOM_112,KI270412.1,NT_187408.1 chrUn_KI270414v1 2489 unplaced primary HSCHRUN_RANDOM_114,KI270414.1,NT_187410.1 chrUn_KI270417v1 2043 unplaced primary HSCHRUN_RANDOM_119,KI270417.1,NT_187415.1 chrUn_KI270418v1 2145 unplaced primary HSCHRUN_RANDOM_116,KI270418.1,NT_187412.1 chrUn_KI270419v1 1029 unplaced primary HSCHRUN_RANDOM_115,KI270419.1,NT_187411.1 chrUn_KI270420v1 2321 unplaced primary HSCHRUN_RANDOM_117,KI270420.1,NT_187413.1 chrUn_KI270422v1 1445 unplaced primary HSCHRUN_RANDOM_120,KI270422.1,NT_187416.1 chrUn_KI270423v1 981 unplaced primary HSCHRUN_RANDOM_121,KI270423.1,NT_187417.1 chrUn_KI270424v1 2140 unplaced primary HSCHRUN_RANDOM_118,KI270424.1,NT_187414.1 chrUn_KI270425v1 1884 unplaced primary HSCHRUN_RANDOM_122,KI270425.1,NT_187418.1 chrUn_KI270429v1 1361 unplaced primary HSCHRUN_RANDOM_123,KI270429.1,NT_187419.1 chrUn_KI270435v1 92983 unplaced primary HSCHRUN_RANDOM_128,KI270435.1,NT_187424.1 chrUn_KI270438v1 112505 unplaced primary HSCHRUN_RANDOM_129,KI270438.1,NT_187425.1 chrUn_KI270442v1 392061 unplaced primary HSCHRUN_RANDOM_124,KI270442.1,NT_187420.1 chrUn_KI270448v1 7992 unplaced primary HSCHRUN_RANDOM_203,KI270448.1,NT_187495.1 chrUn_KI270465v1 1774 unplaced primary HSCHRUN_RANDOM_126,KI270465.1,NT_187422.1 chrUn_KI270466v1 1233 unplaced primary HSCHRUN_RANDOM_125,KI270466.1,NT_187421.1 chrUn_KI270467v1 3920 unplaced primary HSCHRUN_RANDOM_127,KI270467.1,NT_187423.1 chrUn_KI270468v1 4055 unplaced primary HSCHRUN_RANDOM_130,KI270468.1,NT_187426.1 chrUn_KI270507v1 5353 unplaced primary HSCHRUN_RANDOM_141,KI270507.1,NT_187437.1 chrUn_KI270508v1 1951 unplaced primary HSCHRUN_RANDOM_134,KI270508.1,NT_187430.1 chrUn_KI270509v1 2318 unplaced primary HSCHRUN_RANDOM_132,KI270509.1,NT_187428.1 chrUn_KI270510v1 2415 unplaced primary HSCHRUN_RANDOM_131,KI270510.1,NT_187427.1 chrUn_KI270511v1 8127 unplaced primary HSCHRUN_RANDOM_139,KI270511.1,NT_187435.1 chrUn_KI270512v1 22689 unplaced primary HSCHRUN_RANDOM_136,KI270512.1,NT_187432.1 chrUn_KI270515v1 6361 unplaced primary HSCHRUN_RANDOM_140,KI270515.1,NT_187436.1 chrUn_KI270516v1 1300 unplaced primary HSCHRUN_RANDOM_135,KI270516.1,NT_187431.1 chrUn_KI270517v1 3253 unplaced primary HSCHRUN_RANDOM_142,KI270517.1,NT_187438.1 chrUn_KI270518v1 2186 unplaced primary HSCHRUN_RANDOM_133,KI270518.1,NT_187429.1 chrUn_KI270519v1 138126 unplaced primary HSCHRUN_RANDOM_137,KI270519.1,NT_187433.1 chrUn_KI270521v1 7642 unplaced primary HSCHRUN_RANDOM_204,KI270521.1,NT_187496.1 chrUn_KI270522v1 5674 unplaced primary HSCHRUN_RANDOM_138,KI270522.1,NT_187434.1 chrUn_KI270528v1 2983 unplaced primary HSCHRUN_RANDOM_144,KI270528.1,NT_187440.1 chrUn_KI270529v1 1899 unplaced primary HSCHRUN_RANDOM_143,KI270529.1,NT_187439.1 chrUn_KI270530v1 2168 unplaced primary HSCHRUN_RANDOM_145,KI270530.1,NT_187441.1 chrUn_KI270538v1 91309 unplaced primary HSCHRUN_RANDOM_147,KI270538.1,NT_187443.1 chrUn_KI270539v1 993 unplaced primary HSCHRUN_RANDOM_146,KI270539.1,NT_187442.1 chrUn_KI270544v1 1202 unplaced primary HSCHRUN_RANDOM_148,KI270544.1,NT_187444.1 chrUn_KI270548v1 1599 unplaced primary HSCHRUN_RANDOM_149,KI270548.1,NT_187445.1 chrUn_KI270579v1 31033 unplaced primary HSCHRUN_RANDOM_158,KI270579.1,NT_187450.1 chrUn_KI270580v1 1553 unplaced primary HSCHRUN_RANDOM_156,KI270580.1,NT_187448.1 chrUn_KI270581v1 7046 unplaced primary HSCHRUN_RANDOM_157,KI270581.1,NT_187449.1 chrUn_KI270582v1 6504 unplaced primary HSCHRUN_RANDOM_162,KI270582.1,NT_187454.1 chrUn_KI270583v1 1400 unplaced primary HSCHRUN_RANDOM_154,KI270583.1,NT_187446.1 chrUn_KI270584v1 4513 unplaced primary HSCHRUN_RANDOM_161,KI270584.1,NT_187453.1 chrUn_KI270587v1 2969 unplaced primary HSCHRUN_RANDOM_155,KI270587.1,NT_187447.1 chrUn_KI270588v1 6158 unplaced primary HSCHRUN_RANDOM_163,KI270588.1,NT_187455.1 chrUn_KI270589v1 44474 unplaced primary HSCHRUN_RANDOM_159,KI270589.1,NT_187451.1 chrUn_KI270590v1 4685 unplaced primary HSCHRUN_RANDOM_160,KI270590.1,NT_187452.1 chrUn_KI270591v1 5796 unplaced primary HSCHRUN_RANDOM_165,KI270591.1,NT_187457.1 chrUn_KI270593v1 3041 unplaced primary HSCHRUN_RANDOM_164,KI270593.1,NT_187456.1 chrUn_KI270741v1 157432 unplaced primary HSCHRUN_RANDOM_CTG17,KI270741.1,NT_187497.1 chrUn_KI270742v1 186739 unplaced primary HSCHRUN_RANDOM_CTG42,KI270742.1,NT_187513.1 chrUn_KI270743v1 210658 unplaced primary HSCHRUN_RANDOM_CTG20,KI270743.1,NT_187498.1 chrUn_KI270744v1 168472 unplaced primary HSCHRUN_RANDOM_CTG21,KI270744.1,NT_187499.1 chrUn_KI270745v1 41891 unplaced primary HSCHRUN_RANDOM_CTG22,KI270745.1,NT_187500.1 chrUn_KI270746v1 66486 unplaced primary HSCHRUN_RANDOM_CTG23,KI270746.1,NT_187501.1 chrUn_KI270747v1 198735 unplaced primary HSCHRUN_RANDOM_CTG24,KI270747.1,NT_187502.1 chrUn_KI270748v1 93321 unplaced primary HSCHRUN_RANDOM_CTG25,KI270748.1,NT_187503.1 chrUn_KI270749v1 158759 unplaced primary HSCHRUN_RANDOM_CTG26,KI270749.1,NT_187504.1 chrUn_KI270750v1 148850 unplaced primary HSCHRUN_RANDOM_CTG27,KI270750.1,NT_187505.1 chrUn_KI270751v1 150742 unplaced primary HSCHRUN_RANDOM_CTG28,KI270751.1,NT_187506.1 chrUn_KI270752v1 27745 unplaced primary HSCHRUN_RANDOM_CTG29,KI270752.1 chrUn_KI270753v1 62944 unplaced primary HSCHRUN_RANDOM_CTG30,KI270753.1,NT_187508.1 chrUn_KI270754v1 40191 unplaced primary HSCHRUN_RANDOM_CTG33,KI270754.1,NT_187509.1 chrUn_KI270755v1 36723 unplaced primary HSCHRUN_RANDOM_CTG34,KI270755.1,NT_187510.1 chrUn_KI270756v1 79590 unplaced primary HSCHRUN_RANDOM_CTG35,KI270756.1,NT_187511.1 chrUn_KI270757v1 71251 unplaced primary HSCHRUN_RANDOM_CTG36,KI270757.1,NT_187512.1 chrEBV 171823 assembled chrEBV decoy AJ507799.2,NC_007605.1 bioframe-0.4.1/bioframe/io/data/hg19.seqinfo.tsv0000644000175000017500000001534114420777331020717 0ustar nileshnileshname length type molecule unit aliases chr1 249250621 assembled chr1 primary 1,CM000663.1,NC_000001.10 chr2 243199373 assembled chr2 primary 2,CM000664.1,NC_000002.11 chr3 198022430 assembled chr3 primary 3,CM000665.1,NC_000003.11 chr4 191154276 assembled chr4 primary 4,CM000666.1,NC_000004.11 chr5 180915260 assembled chr5 primary 5,CM000667.1,NC_000005.9 chr6 171115067 assembled chr6 primary 6,CM000668.1,NC_000006.11 chr7 159138663 assembled chr7 primary 7,CM000669.1,NC_000007.13 chr8 146364022 assembled chr8 primary 8,CM000670.1,NC_000008.10 chr9 141213431 assembled chr9 primary 9,CM000671.1,NC_000009.11 chr10 135534747 assembled chr10 primary 10,CM000672.1,NC_000010.10 chr11 135006516 assembled chr11 primary 11,CM000673.1,NC_000011.9 chr12 133851895 assembled chr12 primary 12,CM000674.1,NC_000012.11 chr13 115169878 assembled chr13 primary 13,CM000675.1,NC_000013.10 chr14 107349540 assembled chr14 primary 14,CM000676.1,NC_000014.8 chr15 102531392 assembled chr15 primary 15,CM000677.1,NC_000015.9 chr16 90354753 assembled chr16 primary 16,CM000678.1,NC_000016.9 chr17 81195210 assembled chr17 primary 17,CM000679.1,NC_000017.10 chr18 78077248 assembled chr18 primary 18,CM000680.1,NC_000018.9 chr19 59128983 assembled chr19 primary 19,CM000681.1,NC_000019.9 chr20 63025520 assembled chr20 primary 20,CM000682.1,NC_000020.10 chr21 48129895 assembled chr21 primary 21,CM000683.1,NC_000021.8 chr22 51304566 assembled chr22 primary 22,CM000684.1,NC_000022.10 chrX 155270560 assembled chrX primary X,CM000685.1,NC_000023.10 chrY 59373566 assembled chrY primary Y,CM000686.1,NC_000024.9 chrM 16571 assembled chrM non-nuclear NC_001807.4 chrMT 16569 assembled chrMT non-nuclear-revised MT,J01415.2,NC_012920.1 chr1_gl000191_random 106433 unlocalized chr1 primary GL000191.1,HSCHR1_RANDOM_CTG5,NT_113878.1 chr1_gl000192_random 547496 unlocalized chr1 primary GL000192.1,HSCHR1_RANDOM_CTG12,NT_167207.1 chr4_gl000193_random 189789 unlocalized chr4 primary GL000193.1,HSCHR4_RANDOM_CTG2,NT_113885.1 chr4_gl000194_random 191469 unlocalized chr4 primary GL000194.1,HSCHR4_RANDOM_CTG3,NT_113888.1 chr7_gl000195_random 182896 unlocalized chr7 primary GL000195.1,HSCHR7_RANDOM_CTG1,NT_113901.1 chr8_gl000196_random 38914 unlocalized chr8 primary GL000196.1,HSCHR8_RANDOM_CTG1,NT_113909.1 chr8_gl000197_random 37175 unlocalized chr8 primary GL000197.1,HSCHR8_RANDOM_CTG4,NT_113907.1 chr9_gl000198_random 90085 unlocalized chr9 primary GL000198.1,HSCHR9_RANDOM_CTG1,NT_113914.1 chr9_gl000199_random 169874 unlocalized chr9 primary GL000199.1,HSCHR9_RANDOM_CTG2,NT_113916.2 chr9_gl000200_random 187035 unlocalized chr9 primary GL000200.1,HSCHR9_RANDOM_CTG4,NT_113915.1 chr9_gl000201_random 36148 unlocalized chr9 primary GL000201.1,HSCHR9_RANDOM_CTG5,NT_113911.1 chr11_gl000202_random 40103 unlocalized chr11 primary GL000202.1,HSCHR11_RANDOM_CTG2,NT_113921.2 chr17_gl000203_random 37498 unlocalized chr17 primary GL000203.1,HSCHR17_RANDOM_CTG1,NT_113941.1 chr17_gl000204_random 81310 unlocalized chr17 primary GL000204.1,HSCHR17_RANDOM_CTG2,NT_113943.1 chr17_gl000205_random 174588 unlocalized chr17 primary GL000205.1,HSCHR17_RANDOM_CTG3,NT_113930.1 chr17_gl000206_random 41001 unlocalized chr17 primary GL000206.1,HSCHR17_RANDOM_CTG4,NT_113945.1 chr18_gl000207_random 4262 unlocalized chr18 primary GL000207.1,HSCHR18_RANDOM_CTG1,NT_113947.1 chr19_gl000208_random 92689 unlocalized chr19 primary GL000208.1,HSCHR19_RANDOM_CTG1,NT_113948.1 chr19_gl000209_random 159169 unlocalized chr19 primary GL000209.1,HSCHR19_RANDOM_CTG2,NT_113949.1 chr21_gl000210_random 27682 unlocalized chr21 primary GL000210.1,HSCHR21_RANDOM_CTG9,NT_113950.2 chrUn_gl000211 166566 unplaced primary GL000211.1,HSCHRUN_RANDOM_CTG1,NT_113961.1 chrUn_gl000212 186858 unplaced primary GL000212.1,HSCHRUN_RANDOM_CTG2,NT_113923.1 chrUn_gl000213 164239 unplaced primary GL000213.1,HSCHRUN_RANDOM_CTG3,NT_167208.1 chrUn_gl000214 137718 unplaced primary GL000214.1,HSCHRUN_RANDOM_CTG4,NT_167209.1 chrUn_gl000215 172545 unplaced primary GL000215.1,HSCHRUN_RANDOM_CTG5,NT_167210.1 chrUn_gl000216 172294 unplaced primary GL000216.1,HSCHRUN_RANDOM_CTG6,NT_167211.1 chrUn_gl000217 172149 unplaced primary GL000217.1,HSCHRUN_RANDOM_CTG7,NT_167212.1 chrUn_gl000218 161147 unplaced primary GL000218.1,HSCHRUN_RANDOM_CTG9,NT_113889.1 chrUn_gl000219 179198 unplaced primary GL000219.1,HSCHRUN_RANDOM_CTG10,NT_167213.1 chrUn_gl000220 161802 unplaced primary GL000220.1,HSCHRUN_RANDOM_CTG11,NT_167214.1 chrUn_gl000221 155397 unplaced primary GL000221.1,HSCHRUN_RANDOM_CTG13,NT_167215.1 chrUn_gl000222 186861 unplaced primary GL000222.1,HSCHRUN_RANDOM_CTG14,NT_167216.1 chrUn_gl000223 180455 unplaced primary GL000223.1,HSCHRUN_RANDOM_CTG15,NT_167217.1 chrUn_gl000224 179693 unplaced primary GL000224.1,HSCHRUN_RANDOM_CTG16,NT_167218.1 chrUn_gl000225 211173 unplaced primary GL000225.1,HSCHRUN_RANDOM_CTG17,NT_167219.1 chrUn_gl000226 15008 unplaced primary GL000226.1,HSCHRUN_RANDOM_CTG19,NT_167220.1 chrUn_gl000227 128374 unplaced primary GL000227.1,HSCHRUN_RANDOM_CTG20,NT_167221.1 chrUn_gl000228 129120 unplaced primary GL000228.1,HSCHRUN_RANDOM_CTG21,NT_167222.1 chrUn_gl000229 19913 unplaced primary GL000229.1,HSCHRUN_RANDOM_CTG22,NT_167223.1 chrUn_gl000230 43691 unplaced primary GL000230.1,HSCHRUN_RANDOM_CTG23,NT_167224.1 chrUn_gl000231 27386 unplaced primary GL000231.1,HSCHRUN_RANDOM_CTG24,NT_167225.1 chrUn_gl000232 40652 unplaced primary GL000232.1,HSCHRUN_RANDOM_CTG25,NT_167226.1 chrUn_gl000233 45941 unplaced primary GL000233.1,HSCHRUN_RANDOM_CTG26,NT_167227.1 chrUn_gl000234 40531 unplaced primary GL000234.1,HSCHRUN_RANDOM_CTG27,NT_167228.1 chrUn_gl000235 34474 unplaced primary GL000235.1,HSCHRUN_RANDOM_CTG28,NT_167229.1 chrUn_gl000236 41934 unplaced primary GL000236.1,HSCHRUN_RANDOM_CTG29,NT_167230.1 chrUn_gl000237 45867 unplaced primary GL000237.1,HSCHRUN_RANDOM_CTG30,NT_167231.1 chrUn_gl000238 39939 unplaced primary GL000238.1,HSCHRUN_RANDOM_CTG31,NT_167232.1 chrUn_gl000239 33824 unplaced primary GL000239.1,HSCHRUN_RANDOM_CTG32,NT_167233.1 chrUn_gl000240 41933 unplaced primary GL000240.1,HSCHRUN_RANDOM_CTG33,NT_167234.1 chrUn_gl000241 42152 unplaced primary GL000241.1,HSCHRUN_RANDOM_CTG34,NT_167235.1 chrUn_gl000242 43523 unplaced primary GL000242.1,HSCHRUN_RANDOM_CTG35,NT_167236.1 chrUn_gl000243 43341 unplaced primary GL000243.1,HSCHRUN_RANDOM_CTG36,NT_167237.1 chrUn_gl000244 39929 unplaced primary GL000244.1,HSCHRUN_RANDOM_CTG37,NT_167238.1 chrUn_gl000245 36651 unplaced primary GL000245.1,HSCHRUN_RANDOM_CTG38,NT_167239.1 chrUn_gl000246 38154 unplaced primary GL000246.1,HSCHRUN_RANDOM_CTG39,NT_167240.1 chrUn_gl000247 36422 unplaced primary GL000247.1,HSCHRUN_RANDOM_CTG40,NT_167241.1 chrUn_gl000248 39786 unplaced primary GL000248.1,HSCHRUN_RANDOM_CTG41,NT_167242.1 chrUn_gl000249 38502 unplaced primary GL000249.1,HSCHRUN_RANDOM_CTG42,NT_167243.1 bioframe-0.4.1/bioframe/io/data/dm6.seqinfo.tsv0000644000175000017500000047426514420777331020653 0ustar nileshnileshname length type molecule unit aliases chr2L 23513712 assembled chr2 primary 2L,NT_033779.5,AE014134.6 chr2R 25286936 assembled chr2 primary 2R,NT_033778.4,AE013599.5 chr3L 28110227 assembled chr3 primary 3L,NT_037436.4,AE014296.5 chr3R 32079331 assembled chr3 primary 3R,NT_033777.3,AE014297.3 chr4 1348131 assembled chr4 primary 4,NC_004353.4,AE014135.4 chrX 23542271 assembled chrX primary X,NC_004354.4,AE014298.5 chrY 3667352 assembled chrY primary Y,NC_024512.1,CP007106.1 chrM 19524 assembled chrM non-nuclear MT,NC_024511.2,KJ947872.2 chrX_CP007103v1_random 33320 unlocalized chrX primary NW_007931105.1,CP007103.1,X3X4_mapped_Scaffold_6 chrX_CP007104v1_random 27447 unlocalized chrX primary NW_007931106.1,CP007104.1,X3X4_mapped_Scaffold_14 chrX_DS483648v1_random 13940 unlocalized chrX primary NW_001844937.1,DS483648.1,211000022278498 chrX_DS483655v1_random 13549 unlocalized chrX primary NW_001844944.1,DS483655.1,211000022279009 chrX_DS483660v1_random 13394 unlocalized chrX primary NW_001844949.1,DS483660.1,211000022280042 chrX_DS483665v1_random 13234 unlocalized chrX primary NW_001844954.1,DS483665.1,211000022279446 chrX_DS483666v1_random 13108 unlocalized chrX primary NW_001844955.1,DS483666.1,211000022280270 chrX_DS483669v1_random 12848 unlocalized chrX primary NW_001844958.1,DS483669.1,211000022279008 chrX_DS483685v1_random 12187 unlocalized chrX primary NW_001844974.1,DS483685.1,211000022279676 chrX_DS483698v1_random 11522 unlocalized chrX primary NW_001844987.1,DS483698.1,211000022279836 chrX_DS483745v1_random 9368 unlocalized chrX primary NW_001845034.1,DS483745.1,211000022280526 chrX_DS483784v1_random 5832 unlocalized chrX primary NW_001845073.1,DS483784.1,211000022279563 chrX_DS483789v1_random 5555 unlocalized chrX primary NW_001845078.1,DS483789.1,211000022279955 chrX_DS483795v1_random 5387 unlocalized chrX primary NW_001845084.1,DS483795.1,211000022280241 chrX_DS483803v1_random 5232 unlocalized chrX primary NW_001845092.1,DS483803.1,211000022280466 chrX_DS483809v1_random 5057 unlocalized chrX primary NW_001845098.1,DS483809.1,211000022279883 chrX_DS483818v1_random 4917 unlocalized chrX primary NW_001845107.1,DS483818.1,211000022280649 chrX_DS483821v1_random 4879 unlocalized chrX primary NW_001845110.1,DS483821.1,211000022280645 chrX_DS483843v1_random 4515 unlocalized chrX primary NW_001845132.1,DS483843.1,211000022279705 chrX_DS483851v1_random 4395 unlocalized chrX primary NW_001845140.1,DS483851.1,211000022280624 chrX_DS483885v1_random 4085 unlocalized chrX primary NW_001845174.1,DS483885.1,211000022280479 chrX_DS483888v1_random 4072 unlocalized chrX primary NW_001845177.1,DS483888.1,211000022280016 chrX_DS483892v1_random 4013 unlocalized chrX primary NW_001845181.1,DS483892.1,211000022280529 chrX_DS483893v1_random 4012 unlocalized chrX primary NW_001845182.1,DS483893.1,211000022280539 chrX_DS483897v1_random 3984 unlocalized chrX primary NW_001845186.1,DS483897.1,211000022279731 chrX_DS483903v1_random 3941 unlocalized chrX primary NW_001845192.1,DS483903.1,211000022280603 chrX_DS483905v1_random 3926 unlocalized chrX primary NW_001845194.1,DS483905.1,211000022279673 chrX_DS483907v1_random 3921 unlocalized chrX primary NW_001845196.1,DS483907.1,211000022280439 chrX_DS483909v1_random 3913 unlocalized chrX primary NW_001845198.1,DS483909.1,211000022280593 chrX_DS483923v1_random 3775 unlocalized chrX primary NW_001845212.1,DS483923.1,211000022280629 chrX_DS483926v1_random 3745 unlocalized chrX primary NW_001845215.1,DS483926.1,211000022280625 chrX_DS483928v1_random 3730 unlocalized chrX primary NW_001845217.1,DS483928.1,211000022280495 chrX_DS483946v1_random 3603 unlocalized chrX primary NW_001845235.1,DS483946.1,211000022280620 chrX_DS483948v1_random 3602 unlocalized chrX primary NW_001845237.1,DS483948.1,211000022280578 chrX_DS483950v1_random 3582 unlocalized chrX primary NW_001845239.1,DS483950.1,211000022280470 chrX_DS483955v1_random 3553 unlocalized chrX primary NW_001845244.1,DS483955.1,211000022279730 chrX_DS483963v1_random 3523 unlocalized chrX primary NW_001845252.1,DS483963.1,211000022278896 chrX_DS483969v1_random 3498 unlocalized chrX primary NW_001845258.1,DS483969.1,211000022280668 chrX_DS483971v1_random 3478 unlocalized chrX primary NW_001845260.1,DS483971.1,211000022279499 chrX_DS483974v1_random 3473 unlocalized chrX primary NW_001845263.1,DS483974.1,211000022280597 chrX_DS483995v1_random 3347 unlocalized chrX primary NW_001845284.1,DS483995.1,211000022279188 chrX_DS484002v1_random 3290 unlocalized chrX primary NW_001845291.1,DS484002.1,211000022279772 chrX_DS484005v1_random 3275 unlocalized chrX primary NW_001845294.1,DS484005.1,211000022279497 chrX_DS484012v1_random 3254 unlocalized chrX primary NW_001845301.1,DS484012.1,211000022278361 chrX_DS484023v1_random 3206 unlocalized chrX primary NW_001845312.1,DS484023.1,211000022278544 chrX_DS484026v1_random 3201 unlocalized chrX primary NW_001845315.1,DS484026.1,211000022280669 chrX_DS484046v1_random 3123 unlocalized chrX primary NW_001845335.1,DS484046.1,211000022280587 chrX_DS484051v1_random 3100 unlocalized chrX primary NW_001845340.1,DS484051.1,211000022280538 chrX_DS484057v1_random 3076 unlocalized chrX primary NW_001845346.1,DS484057.1,211000022279109 chrX_DS484060v1_random 3065 unlocalized chrX primary NW_001845349.1,DS484060.1,211000022280641 chrX_DS484061v1_random 3059 unlocalized chrX primary NW_001845350.1,DS484061.1,211000022280532 chrX_DS484067v1_random 3024 unlocalized chrX primary NW_001845356.1,DS484067.1,211000022279460 chrX_DS484072v1_random 3002 unlocalized chrX primary NW_001845361.1,DS484072.1,211000022279081 chrX_DS484074v1_random 2999 unlocalized chrX primary NW_001845363.1,DS484074.1,211000022278235 chrX_DS484075v1_random 2996 unlocalized chrX primary NW_001845364.1,DS484075.1,211000022280542 chrX_DS484081v1_random 2964 unlocalized chrX primary NW_001845370.1,DS484081.1,211000022280584 chrX_DS484084v1_random 2956 unlocalized chrX primary NW_001845373.1,DS484084.1,211000022278208 chrX_DS484085v1_random 2945 unlocalized chrX primary NW_001845374.1,DS484085.1,211000022279277 chrX_DS484088v1_random 2937 unlocalized chrX primary NW_001845377.1,DS484088.1,211000022279608 chrX_DS484099v1_random 2910 unlocalized chrX primary NW_001845388.1,DS484099.1,211000022280639 chrX_DS484101v1_random 2904 unlocalized chrX primary NW_001845390.1,DS484101.1,211000022278724 chrX_DS484112v1_random 2877 unlocalized chrX primary NW_001845401.1,DS484112.1,211000022278846 chrX_DS484114v1_random 2871 unlocalized chrX primary NW_001845403.1,DS484114.1,211000022278868 chrX_DS484124v1_random 2846 unlocalized chrX primary NW_001845413.1,DS484124.1,211000022279968 chrX_DS484125v1_random 2844 unlocalized chrX primary NW_001845414.1,DS484125.1,211000022279698 chrX_DS484126v1_random 2841 unlocalized chrX primary NW_001845415.1,DS484126.1,211000022278463 chrX_DS484130v1_random 2834 unlocalized chrX primary NW_001845419.1,DS484130.1,211000022279552 chrX_DS484131v1_random 2833 unlocalized chrX primary NW_001845420.1,DS484131.1,211000022279703 chrX_DS484132v1_random 2830 unlocalized chrX primary NW_001845421.1,DS484132.1,211000022280642 chrX_DS484133v1_random 2829 unlocalized chrX primary NW_001845422.1,DS484133.1,211000022280592 chrX_DS484135v1_random 2825 unlocalized chrX primary NW_001845424.1,DS484135.1,211000022279408 chrX_DS484136v1_random 2823 unlocalized chrX primary NW_001845425.1,DS484136.1,211000022278821 chrX_DS484137v1_random 2822 unlocalized chrX primary NW_001845426.1,DS484137.1,211000022279082 chrX_DS484140v1_random 2819 unlocalized chrX primary NW_001845429.1,DS484140.1,211000022280537 chrX_DS484143v1_random 2814 unlocalized chrX primary NW_001845432.1,DS484143.1,211000022279502 chrX_DS484161v1_random 2781 unlocalized chrX primary NW_001845450.1,DS484161.1,211000022278209 chrX_DS484162v1_random 2765 unlocalized chrX primary NW_001845451.1,DS484162.1,211000022279298 chrX_DS484165v1_random 2751 unlocalized chrX primary NW_001845454.1,DS484165.1,211000022279287 chrX_DS484166v1_random 2750 unlocalized chrX primary NW_001845455.1,DS484166.1,211000022280632 chrX_DS484178v1_random 2698 unlocalized chrX primary NW_001845467.1,DS484178.1,211000022278921 chrX_DS484182v1_random 2689 unlocalized chrX primary NW_001845471.1,DS484182.1,211000022278645 chrX_DS484185v1_random 2686 unlocalized chrX primary NW_001845474.1,DS484185.1,211000022280148 chrX_DS484187v1_random 2671 unlocalized chrX primary NW_001845476.1,DS484187.1,211000022280095 chrX_DS484198v1_random 2641 unlocalized chrX primary NW_001845487.1,DS484198.1,211000022278630 chrX_DS484200v1_random 2639 unlocalized chrX primary NW_001845489.1,DS484200.1,211000022278316 chrX_DS484201v1_random 2637 unlocalized chrX primary NW_001845490.1,DS484201.1,211000022278615 chrX_DS484203v1_random 2635 unlocalized chrX primary NW_001845492.1,DS484203.1,211000022279917 chrX_DS484215v1_random 2605 unlocalized chrX primary NW_001845504.1,DS484215.1,211000022278648 chrX_DS484216v1_random 2603 unlocalized chrX primary NW_001845505.1,DS484216.1,211000022280062 chrX_DS484219v1_random 2591 unlocalized chrX primary NW_001845508.1,DS484219.1,211000022278299 chrX_DS484235v1_random 2557 unlocalized chrX primary NW_001845524.1,DS484235.1,211000022278489 chrX_DS484252v1_random 2520 unlocalized chrX primary NW_001845541.1,DS484252.1,211000022278831 chrX_DS484260v1_random 2505 unlocalized chrX primary NW_001845549.1,DS484260.1,211000022279062 chrX_DS484261v1_random 2500 unlocalized chrX primary NW_001845550.1,DS484261.1,211000022278622 chrX_DS484268v1_random 2475 unlocalized chrX primary NW_001845557.1,DS484268.1,211000022279902 chrX_DS484272v1_random 2464 unlocalized chrX primary NW_001845561.1,DS484272.1,211000022278172 chrX_DS484273v1_random 2463 unlocalized chrX primary NW_001845562.1,DS484273.1,211000022279994 chrX_DS484278v1_random 2439 unlocalized chrX primary NW_001845567.1,DS484278.1,211000022280586 chrX_DS484284v1_random 2432 unlocalized chrX primary NW_001845573.1,DS484284.1,211000022278225 chrX_DS484288v1_random 2425 unlocalized chrX primary NW_001845577.1,DS484288.1,211000022278828 chrX_DS484293v1_random 2420 unlocalized chrX primary NW_001845582.1,DS484293.1,211000022279537 chrX_DS484297v1_random 2413 unlocalized chrX primary NW_001845586.1,DS484297.1,211000022279967 chrX_DS484298v1_random 2412 unlocalized chrX primary NW_001845587.1,DS484298.1,211000022278578 chrX_DS484305v1_random 2389 unlocalized chrX primary NW_001845594.1,DS484305.1,211000022278908 chrX_DS484316v1_random 2379 unlocalized chrX primary NW_001845605.1,DS484316.1,211000022280453 chrX_DS484319v1_random 2372 unlocalized chrX primary NW_001845608.1,DS484319.1,211000022279530 chrX_DS484322v1_random 2366 unlocalized chrX primary NW_001845611.1,DS484322.1,211000022279340 chrX_DS484323v1_random 2363 unlocalized chrX primary NW_001845612.1,DS484323.1,211000022278844 chrX_DS484326v1_random 2357 unlocalized chrX primary NW_001845615.1,DS484326.1,211000022280507 chrX_DS484328v1_random 2355 unlocalized chrX primary NW_001845617.1,DS484328.1,211000022279704 chrX_DS484330v1_random 2353 unlocalized chrX primary NW_001845619.1,DS484330.1,211000022280534 chrX_DS484337v1_random 2335 unlocalized chrX primary NW_001845626.1,DS484337.1,211000022278649 chrX_DS484341v1_random 2328 unlocalized chrX primary NW_001845630.1,DS484341.1,211000022280633 chrX_DS484344v1_random 2322 unlocalized chrX primary NW_001845633.1,DS484344.1,211000022279092 chrX_DS484345v1_random 2318 unlocalized chrX primary NW_001845634.1,DS484345.1,211000022279774 chrX_DS484346v1_random 2317 unlocalized chrX primary NW_001845635.1,DS484346.1,211000022279504 chrX_DS484349v1_random 2307 unlocalized chrX primary NW_001845638.1,DS484349.1,211000022278810 chrX_DS484354v1_random 2293 unlocalized chrX primary NW_001845643.1,DS484354.1,211000022278557 chrX_DS484356v1_random 2289 unlocalized chrX primary NW_001845645.1,DS484356.1,211000022279689 chrX_DS484357v1_random 2287 unlocalized chrX primary NW_001845646.1,DS484357.1,211000022279085 chrX_DS484358v1_random 2286 unlocalized chrX primary NW_001845647.1,DS484358.1,211000022278341 chrX_DS484359v1_random 2284 unlocalized chrX primary NW_001845648.1,DS484359.1,211000022279553 chrX_DS484360v1_random 2283 unlocalized chrX primary NW_001845649.1,DS484360.1,211000022278823 chrX_DS484361v1_random 2282 unlocalized chrX primary NW_001845650.1,DS484361.1,211000022279732 chrX_DS484362v1_random 2273 unlocalized chrX primary NW_001845651.1,DS484362.1,211000022278612 chrX_DS484364v1_random 2269 unlocalized chrX primary NW_001845653.1,DS484364.1,211000022278639 chrX_DS484367v1_random 2259 unlocalized chrX primary NW_001845656.1,DS484367.1,211000022278249 chrX_DS484368v1_random 2259 unlocalized chrX primary NW_001845657.1,DS484368.1,211000022278629 chrX_DS484371v1_random 2247 unlocalized chrX primary NW_001845660.1,DS484371.1,211000022280330 chrX_DS484374v1_random 2237 unlocalized chrX primary NW_001845663.1,DS484374.1,211000022279299 chrX_DS484379v1_random 2228 unlocalized chrX primary NW_001845668.1,DS484379.1,211000022278513 chrX_DS484382v1_random 2223 unlocalized chrX primary NW_001845671.1,DS484382.1,211000022280088 chrX_DS484384v1_random 2220 unlocalized chrX primary NW_001845673.1,DS484384.1,211000022279514 chrX_DS484387v1_random 2210 unlocalized chrX primary NW_001845676.1,DS484387.1,211000022280442 chrX_DS484388v1_random 2209 unlocalized chrX primary NW_001845677.1,DS484388.1,211000022278461 chrX_DS484393v1_random 2201 unlocalized chrX primary NW_001845682.1,DS484393.1,211000022278608 chrX_DS484397v1_random 2196 unlocalized chrX primary NW_001845686.1,DS484397.1,211000022278628 chrX_DS484399v1_random 2192 unlocalized chrX primary NW_001845688.1,DS484399.1,211000022278359 chrX_DS484401v1_random 2189 unlocalized chrX primary NW_001845690.1,DS484401.1,211000022278555 chrX_DS484402v1_random 2189 unlocalized chrX primary NW_001845691.1,DS484402.1,211000022278467 chrX_DS484406v1_random 2177 unlocalized chrX primary NW_001845695.1,DS484406.1,211000022278775 chrX_DS484409v1_random 2166 unlocalized chrX primary NW_001845698.1,DS484409.1,211000022278853 chrX_DS484411v1_random 2161 unlocalized chrX primary NW_001845700.1,DS484411.1,211000022278616 chrX_DS484415v1_random 2147 unlocalized chrX primary NW_001845704.1,DS484415.1,211000022278825 chrX_DS484417v1_random 2139 unlocalized chrX primary NW_001845706.1,DS484417.1,211000022279834 chrX_DS484419v1_random 2132 unlocalized chrX primary NW_001845708.1,DS484419.1,211000022279084 chrX_DS484423v1_random 2126 unlocalized chrX primary NW_001845712.1,DS484423.1,211000022279307 chrX_DS484428v1_random 2114 unlocalized chrX primary NW_001845717.1,DS484428.1,211000022278353 chrX_DS484429v1_random 2113 unlocalized chrX primary NW_001845718.1,DS484429.1,211000022278320 chrX_DS484430v1_random 2113 unlocalized chrX primary NW_001845719.1,DS484430.1,211000022278343 chrX_DS484431v1_random 2113 unlocalized chrX primary NW_001845720.1,DS484431.1,211000022278490 chrX_DS484433v1_random 2109 unlocalized chrX primary NW_001845722.1,DS484433.1,211000022279305 chrX_DS484442v1_random 2096 unlocalized chrX primary NW_001845731.1,DS484442.1,211000022278840 chrX_DS484444v1_random 2094 unlocalized chrX primary NW_001845733.1,DS484444.1,211000022279063 chrX_DS484447v1_random 2089 unlocalized chrX primary NW_001845736.1,DS484447.1,211000022278431 chrX_DS484450v1_random 2087 unlocalized chrX primary NW_001845739.1,DS484450.1,211000022278464 chrX_DS484457v1_random 2079 unlocalized chrX primary NW_001845746.1,DS484457.1,211000022278845 chrX_DS484459v1_random 2078 unlocalized chrX primary NW_001845748.1,DS484459.1,211000022278226 chrX_DS484462v1_random 2068 unlocalized chrX primary NW_001845751.1,DS484462.1,211000022279601 chrX_DS484468v1_random 2060 unlocalized chrX primary NW_001845757.1,DS484468.1,211000022279715 chrX_DS484474v1_random 2044 unlocalized chrX primary NW_001845763.1,DS484474.1,211000022279332 chrX_DS484477v1_random 2035 unlocalized chrX primary NW_001845766.1,DS484477.1,211000022278695 chrX_DS484483v1_random 2021 unlocalized chrX primary NW_001845772.1,DS484483.1,211000022278817 chrX_DS484488v1_random 2009 unlocalized chrX primary NW_001845777.1,DS484488.1,211000022280594 chrX_DS484497v1_random 1998 unlocalized chrX primary NW_001845786.1,DS484497.1,211000022278482 chrX_DS484500v1_random 1993 unlocalized chrX primary NW_001845789.1,DS484500.1,211000022278820 chrX_DS484504v1_random 1986 unlocalized chrX primary NW_001845793.1,DS484504.1,211000022278619 chrX_DS484506v1_random 1980 unlocalized chrX primary NW_001845795.1,DS484506.1,211000022278976 chrX_DS484507v1_random 1978 unlocalized chrX primary NW_001845796.1,DS484507.1,211000022278233 chrX_DS484512v1_random 1970 unlocalized chrX primary NW_001845801.1,DS484512.1,211000022278317 chrX_DS484518v1_random 1964 unlocalized chrX primary NW_001845807.1,DS484518.1,211000022278321 chrX_DS484519v1_random 1963 unlocalized chrX primary NW_001845808.1,DS484519.1,211000022278879 chrX_DS484526v1_random 1956 unlocalized chrX primary NW_001845815.1,DS484526.1,211000022278229 chrX_DS484529v1_random 1947 unlocalized chrX primary NW_001845818.1,DS484529.1,211000022278319 chrX_DS484533v1_random 1944 unlocalized chrX primary NW_001845822.1,DS484533.1,211000022278460 chrX_DS484535v1_random 1939 unlocalized chrX primary NW_001845824.1,DS484535.1,211000022279075 chrX_DS484538v1_random 1936 unlocalized chrX primary NW_001845827.1,DS484538.1,211000022280612 chrX_DS484540v1_random 1935 unlocalized chrX primary NW_001845829.1,DS484540.1,211000022278643 chrX_DS484541v1_random 1933 unlocalized chrX primary NW_001845830.1,DS484541.1,211000022279245 chrX_DS484545v1_random 1928 unlocalized chrX primary NW_001845834.1,DS484545.1,211000022278627 chrX_DS484547v1_random 1927 unlocalized chrX primary NW_001845836.1,DS484547.1,211000022278480 chrX_DS484552v1_random 1920 unlocalized chrX primary NW_001845841.1,DS484552.1,211000022278365 chrX_DS484555v1_random 1916 unlocalized chrX primary NW_001845844.1,DS484555.1,211000022278812 chrX_DS484556v1_random 1916 unlocalized chrX primary NW_001845845.1,DS484556.1,211000022280622 chrX_DS484558v1_random 1906 unlocalized chrX primary NW_001845847.1,DS484558.1,211000022278468 chrX_DS484560v1_random 1904 unlocalized chrX primary NW_001845849.1,DS484560.1,211000022279072 chrX_DS484562v1_random 1903 unlocalized chrX primary NW_001845851.1,DS484562.1,211000022280657 chrX_DS484563v1_random 1903 unlocalized chrX primary NW_001845852.1,DS484563.1,211000022280628 chrX_DS484564v1_random 1902 unlocalized chrX primary NW_001845853.1,DS484564.1,211000022278462 chrX_DS484568v1_random 1899 unlocalized chrX primary NW_001845857.1,DS484568.1,211000022278346 chrX_DS484569v1_random 1895 unlocalized chrX primary NW_001845858.1,DS484569.1,211000022278815 chrX_DS484570v1_random 1895 unlocalized chrX primary NW_001845859.1,DS484570.1,211000022278826 chrX_DS484572v1_random 1891 unlocalized chrX primary NW_001845861.1,DS484572.1,211000022278694 chrX_DS484576v1_random 1888 unlocalized chrX primary NW_001845865.1,DS484576.1,211000022278411 chrX_DS484580v1_random 1871 unlocalized chrX primary NW_001845869.1,DS484580.1,211000022279303 chrX_DS484582v1_random 1870 unlocalized chrX primary NW_001845871.1,DS484582.1,211000022278318 chrX_DS484583v1_random 1869 unlocalized chrX primary NW_001845872.1,DS484583.1,211000022278352 chrX_DS484585v1_random 1869 unlocalized chrX primary NW_001845874.1,DS484585.1,211000022278277 chrX_DS484586v1_random 1868 unlocalized chrX primary NW_001845875.1,DS484586.1,211000022280585 chrX_DS484587v1_random 1865 unlocalized chrX primary NW_001845876.1,DS484587.1,211000022278636 chrX_DS484590v1_random 1856 unlocalized chrX primary NW_001845879.1,DS484590.1,211000022278854 chrX_DS484594v1_random 1843 unlocalized chrX primary NW_001845883.1,DS484594.1,211000022278325 chrX_DS484596v1_random 1843 unlocalized chrX primary NW_001845885.1,DS484596.1,211000022278481 chrX_DS484597v1_random 1843 unlocalized chrX primary NW_001845886.1,DS484597.1,211000022278911 chrX_DS484598v1_random 1842 unlocalized chrX primary NW_001845887.1,DS484598.1,211000022278774 chrX_DS484599v1_random 1841 unlocalized chrX primary NW_001845888.1,DS484599.1,211000022279080 chrX_DS484600v1_random 1841 unlocalized chrX primary NW_001845889.1,DS484600.1,211000022278502 chrX_DS484603v1_random 1830 unlocalized chrX primary NW_001845892.1,DS484603.1,211000022279301 chrX_DS484604v1_random 1829 unlocalized chrX primary NW_001845893.1,DS484604.1,211000022278614 chrX_DS484605v1_random 1829 unlocalized chrX primary NW_001845894.1,DS484605.1,211000022278905 chrX_DS484608v1_random 1818 unlocalized chrX primary NW_001845897.1,DS484608.1,211000022278475 chrX_DS484609v1_random 1818 unlocalized chrX primary NW_001845898.1,DS484609.1,211000022278625 chrX_DS484610v1_random 1813 unlocalized chrX primary NW_001845899.1,DS484610.1,211000022278465 chrX_DS484611v1_random 1813 unlocalized chrX primary NW_001845900.1,DS484611.1,211000022278876 chrX_DS484615v1_random 1803 unlocalized chrX primary NW_001845904.1,DS484615.1,211000022280060 chrX_DS484618v1_random 1800 unlocalized chrX primary NW_001845907.1,DS484618.1,211000022279078 chrX_DS484620v1_random 1798 unlocalized chrX primary NW_001845909.1,DS484620.1,211000022279846 chrX_DS484622v1_random 1793 unlocalized chrX primary NW_001845911.1,DS484622.1,211000022278228 chrX_DS484623v1_random 1792 unlocalized chrX primary NW_001845912.1,DS484623.1,211000022279093 chrX_DS484625v1_random 1787 unlocalized chrX primary NW_001845914.1,DS484625.1,211000022278633 chrX_DS484626v1_random 1786 unlocalized chrX primary NW_001845915.1,DS484626.1,211000022278634 chrX_DS484628v1_random 1785 unlocalized chrX primary NW_001845917.1,DS484628.1,211000022278613 chrX_DS484633v1_random 1775 unlocalized chrX primary NW_001845922.1,DS484633.1,211000022278819 chrX_DS484636v1_random 1769 unlocalized chrX primary NW_001845925.1,DS484636.1,211000022279322 chrX_DS484644v1_random 1747 unlocalized chrX primary NW_001845933.1,DS484644.1,211000022278842 chrX_DS484645v1_random 1747 unlocalized chrX primary NW_001845934.1,DS484645.1,211000022279296 chrX_DS484647v1_random 1743 unlocalized chrX primary NW_001845936.1,DS484647.1,211000022278473 chrX_DS484648v1_random 1741 unlocalized chrX primary NW_001845937.1,DS484648.1,211000022278816 chrX_DS484650v1_random 1737 unlocalized chrX primary NW_001845939.1,DS484650.1,211000022278314 chrX_DS484657v1_random 1724 unlocalized chrX primary NW_001845946.1,DS484657.1,211000022278907 chrX_DS484660v1_random 1716 unlocalized chrX primary NW_001845949.1,DS484660.1,211000022278677 chrX_DS484664v1_random 1713 unlocalized chrX primary NW_001845953.1,DS484664.1,211000022278165 chrX_DS484666v1_random 1710 unlocalized chrX primary NW_001845955.1,DS484666.1,211000022280243 chrX_DS484668v1_random 1709 unlocalized chrX primary NW_001845957.1,DS484668.1,211000022278125 chrX_DS484669v1_random 1708 unlocalized chrX primary NW_001845958.1,DS484669.1,211000022279297 chrX_DS484670v1_random 1704 unlocalized chrX primary NW_001845959.1,DS484670.1,211000022278621 chrX_DS484672v1_random 1703 unlocalized chrX primary NW_001845961.1,DS484672.1,211000022278491 chrX_DS484677v1_random 1687 unlocalized chrX primary NW_001845966.1,DS484677.1,211000022279065 chrX_DS484679v1_random 1683 unlocalized chrX primary NW_001845968.1,DS484679.1,211000022278471 chrX_DS484682v1_random 1680 unlocalized chrX primary NW_001845971.1,DS484682.1,211000022279077 chrX_DS484683v1_random 1679 unlocalized chrX primary NW_001845972.1,DS484683.1,211000022278938 chrX_DS484684v1_random 1678 unlocalized chrX primary NW_001845973.1,DS484684.1,211000022278469 chrX_DS484688v1_random 1657 unlocalized chrX primary NW_001845977.1,DS484688.1,211000022278484 chrX_DS484690v1_random 1645 unlocalized chrX primary NW_001845979.1,DS484690.1,211000022278726 chrX_DS484691v1_random 1643 unlocalized chrX primary NW_001845980.1,DS484691.1,211000022278472 chrX_DS484694v1_random 1637 unlocalized chrX primary NW_001845983.1,DS484694.1,211000022279064 chrX_DS484695v1_random 1637 unlocalized chrX primary NW_001845984.1,DS484695.1,211000022278620 chrX_DS484697v1_random 1636 unlocalized chrX primary NW_001845986.1,DS484697.1,211000022280061 chrX_DS484698v1_random 1630 unlocalized chrX primary NW_001845987.1,DS484698.1,211000022278839 chrX_DS484701v1_random 1625 unlocalized chrX primary NW_001845990.1,DS484701.1,211000022278099 chrX_DS484702v1_random 1623 unlocalized chrX primary NW_001845991.1,DS484702.1,211000022279316 chrX_DS484703v1_random 1622 unlocalized chrX primary NW_001845992.1,DS484703.1,211000022278670 chrX_DS484715v1_random 1595 unlocalized chrX primary NW_001846004.1,DS484715.1,211000022279542 chrX_DS484719v1_random 1586 unlocalized chrX primary NW_001846008.1,DS484719.1,211000022279957 chrX_DS484723v1_random 1577 unlocalized chrX primary NW_001846012.1,DS484723.1,211000022278584 chrX_DS484724v1_random 1575 unlocalized chrX primary NW_001846013.1,DS484724.1,211000022278323 chrX_DS484725v1_random 1573 unlocalized chrX primary NW_001846014.1,DS484725.1,211000022279076 chrX_DS484730v1_random 1560 unlocalized chrX primary NW_001846019.1,DS484730.1,211000022278315 chrX_DS484731v1_random 1558 unlocalized chrX primary NW_001846020.1,DS484731.1,211000022278857 chrX_DS484732v1_random 1556 unlocalized chrX primary NW_001846021.1,DS484732.1,211000022280029 chrX_DS484733v1_random 1556 unlocalized chrX primary NW_001846022.1,DS484733.1,211000022279244 chrX_DS484737v1_random 1550 unlocalized chrX primary NW_001846026.1,DS484737.1,211000022278655 chrX_DS484740v1_random 1546 unlocalized chrX primary NW_001846029.1,DS484740.1,211000022278671 chrX_DS484741v1_random 1544 unlocalized chrX primary NW_001846030.1,DS484741.1,211000022278850 chrX_DS484745v1_random 1541 unlocalized chrX primary NW_001846034.1,DS484745.1,211000022278232 chrX_DS484749v1_random 1534 unlocalized chrX primary NW_001846038.1,DS484749.1,211000022279686 chrX_DS484753v1_random 1529 unlocalized chrX primary NW_001846042.1,DS484753.1,211000022279295 chrX_DS484758v1_random 1525 unlocalized chrX primary NW_001846047.1,DS484758.1,211000022278692 chrX_DS484763v1_random 1519 unlocalized chrX primary NW_001846052.1,DS484763.1,211000022278693 chrX_DS484765v1_random 1516 unlocalized chrX primary NW_001846054.1,DS484765.1,211000022278227 chrX_DS484767v1_random 1510 unlocalized chrX primary NW_001846056.1,DS484767.1,211000022279515 chrX_DS484768v1_random 1509 unlocalized chrX primary NW_001846057.1,DS484768.1,211000022278861 chrX_DS484775v1_random 1492 unlocalized chrX primary NW_001846064.1,DS484775.1,211000022279074 chrX_DS484777v1_random 1489 unlocalized chrX primary NW_001846066.1,DS484777.1,211000022279066 chrX_DS484778v1_random 1488 unlocalized chrX primary NW_001846067.1,DS484778.1,211000022278829 chrX_DS484783v1_random 1482 unlocalized chrX primary NW_001846072.1,DS484783.1,211000022278827 chrX_DS484785v1_random 1478 unlocalized chrX primary NW_001846074.1,DS484785.1,211000022278512 chrX_DS484786v1_random 1476 unlocalized chrX primary NW_001846075.1,DS484786.1,211000022278851 chrX_DS484803v1_random 1461 unlocalized chrX primary NW_001846092.1,DS484803.1,211000022278414 chrX_DS484809v1_random 1453 unlocalized chrX primary NW_001846098.1,DS484809.1,211000022278252 chrX_DS484810v1_random 1452 unlocalized chrX primary NW_001846099.1,DS484810.1,211000022278690 chrX_DS484811v1_random 1452 unlocalized chrX primary NW_001846100.1,DS484811.1,211000022278618 chrX_DS484819v1_random 1441 unlocalized chrX primary NW_001846108.1,DS484819.1,211000022278340 chrX_DS484826v1_random 1432 unlocalized chrX primary NW_001846115.1,DS484826.1,211000022279437 chrX_DS484832v1_random 1425 unlocalized chrX primary NW_001846121.1,DS484832.1,211000022279112 chrX_DS484833v1_random 1424 unlocalized chrX primary NW_001846122.1,DS484833.1,211000022278322 chrX_DS484837v1_random 1423 unlocalized chrX primary NW_001846126.1,DS484837.1,211000022278838 chrX_DS484839v1_random 1421 unlocalized chrX primary NW_001846128.1,DS484839.1,211000022279068 chrX_DS484840v1_random 1419 unlocalized chrX primary NW_001846129.1,DS484840.1,211000022278837 chrX_DS484845v1_random 1412 unlocalized chrX primary NW_001846134.1,DS484845.1,211000022278342 chrX_DS484850v1_random 1408 unlocalized chrX primary NW_001846139.1,DS484850.1,211000022278646 chrX_DS484857v1_random 1402 unlocalized chrX primary NW_001846146.1,DS484857.1,211000022279888 chrX_DS484871v1_random 1386 unlocalized chrX primary NW_001846160.1,DS484871.1,211000022278822 chrX_DS484879v1_random 1381 unlocalized chrX primary NW_001846168.1,DS484879.1,211000022278644 chrX_DS484880v1_random 1380 unlocalized chrX primary NW_001846169.1,DS484880.1,211000022278836 chrX_DS484890v1_random 1376 unlocalized chrX primary NW_001846179.1,DS484890.1,211000022278855 chrX_DS484907v1_random 1361 unlocalized chrX primary NW_001846196.1,DS484907.1,211000022280022 chrX_DS484911v1_random 1355 unlocalized chrX primary NW_001846200.1,DS484911.1,211000022278609 chrX_DS484913v1_random 1355 unlocalized chrX primary NW_001846202.1,DS484913.1,211000022278476 chrX_DS484928v1_random 1340 unlocalized chrX primary NW_001846217.1,DS484928.1,211000022279073 chrX_DS484935v1_random 1336 unlocalized chrX primary NW_001846224.1,DS484935.1,211000022278832 chrX_DS484951v1_random 1327 unlocalized chrX primary NW_001846240.1,DS484951.1,211000022278470 chrX_DS484952v1_random 1326 unlocalized chrX primary NW_001846241.1,DS484952.1,211000022279079 chrX_DS484953v1_random 1326 unlocalized chrX primary NW_001846242.1,DS484953.1,211000022280034 chrX_DS484955v1_random 1323 unlocalized chrX primary NW_001846244.1,DS484955.1,211000022278830 chrX_DS484961v1_random 1315 unlocalized chrX primary NW_001846250.1,DS484961.1,211000022278492 chrX_DS484963v1_random 1315 unlocalized chrX primary NW_001846252.1,DS484963.1,211000022279674 chrX_DS484965v1_random 1312 unlocalized chrX primary NW_001846254.1,DS484965.1,211000022278268 chrX_DS484968v1_random 1311 unlocalized chrX primary NW_001846257.1,DS484968.1,211000022278122 chrX_DS484970v1_random 1310 unlocalized chrX primary NW_001846259.1,DS484970.1,211000022279944 chrX_DS484974v1_random 1309 unlocalized chrX primary NW_001846263.1,DS484974.1,211000022279388 chrX_DS484978v1_random 1306 unlocalized chrX primary NW_001846267.1,DS484978.1,211000022279767 chrX_DS484990v1_random 1301 unlocalized chrX primary NW_001846279.1,DS484990.1,211000022279984 chrX_DS484995v1_random 1296 unlocalized chrX primary NW_001846284.1,DS484995.1,211000022278607 chrX_DS484996v1_random 1295 unlocalized chrX primary NW_001846285.1,DS484996.1,211000022278487 chrX_DS484997v1_random 1294 unlocalized chrX primary NW_001846286.1,DS484997.1,211000022280007 chrX_DS485012v1_random 1284 unlocalized chrX primary NW_001846301.1,DS485012.1,211000022279328 chrX_DS485015v1_random 1283 unlocalized chrX primary NW_001846304.1,DS485015.1,211000022278324 chrX_DS485017v1_random 1281 unlocalized chrX primary NW_001846306.1,DS485017.1,211000022279998 chrX_DS485043v1_random 1271 unlocalized chrX primary NW_001846332.1,DS485043.1,211000022278856 chrX_DS485044v1_random 1271 unlocalized chrX primary NW_001846333.1,DS485044.1,211000022279978 chrX_DS485049v1_random 1269 unlocalized chrX primary NW_001846338.1,DS485049.1,211000022279764 chrX_DS485050v1_random 1268 unlocalized chrX primary NW_001846339.1,DS485050.1,211000022279045 chrX_DS485054v1_random 1265 unlocalized chrX primary NW_001846343.1,DS485054.1,211000022279721 chrX_DS485072v1_random 1260 unlocalized chrX primary NW_001846361.1,DS485072.1,211000022279528 chrX_DS485074v1_random 1258 unlocalized chrX primary NW_001846363.1,DS485074.1,211000022278382 chrX_DS485077v1_random 1258 unlocalized chrX primary NW_001846366.1,DS485077.1,211000022278187 chrX_DS485078v1_random 1257 unlocalized chrX primary NW_001846367.1,DS485078.1,211000022279610 chrX_DS485080v1_random 1253 unlocalized chrX primary NW_001846369.1,DS485080.1,211000022279071 chrX_DS485081v1_random 1252 unlocalized chrX primary NW_001846370.1,DS485081.1,211000022278691 chrX_DS485084v1_random 1251 unlocalized chrX primary NW_001846373.1,DS485084.1,211000022278843 chrX_DS485096v1_random 1244 unlocalized chrX primary NW_001846385.1,DS485096.1,211000022278478 chrX_DS485101v1_random 1241 unlocalized chrX primary NW_001846390.1,DS485101.1,211000022278631 chrX_DS485104v1_random 1240 unlocalized chrX primary NW_001846393.1,DS485104.1,211000022278505 chrX_DS485109v1_random 1238 unlocalized chrX primary NW_001846398.1,DS485109.1,211000022278814 chrX_DS485110v1_random 1238 unlocalized chrX primary NW_001846399.1,DS485110.1,211000022278640 chrX_DS485111v1_random 1238 unlocalized chrX primary NW_001846400.1,DS485111.1,211000022278882 chrX_DS485112v1_random 1238 unlocalized chrX primary NW_001846401.1,DS485112.1,211000022278971 chrX_DS485119v1_random 1235 unlocalized chrX primary NW_001846408.1,DS485119.1,211000022279570 chrX_DS485126v1_random 1233 unlocalized chrX primary NW_001846415.1,DS485126.1,211000022278654 chrX_DS485141v1_random 1228 unlocalized chrX primary NW_001846430.1,DS485141.1,211000022278632 chrX_DS485164v1_random 1223 unlocalized chrX primary NW_001846453.1,DS485164.1,211000022278624 chrX_DS485167v1_random 1221 unlocalized chrX primary NW_001846456.1,DS485167.1,211000022278637 chrX_DS485172v1_random 1220 unlocalized chrX primary NW_001846461.1,DS485172.1,211000022278297 chrX_DS485186v1_random 1212 unlocalized chrX primary NW_001846475.1,DS485186.1,211000022279860 chrX_DS485189v1_random 1211 unlocalized chrX primary NW_001846478.1,DS485189.1,211000022279300 chrX_DS485195v1_random 1209 unlocalized chrX primary NW_001846484.1,DS485195.1,211000022279302 chrX_DS485201v1_random 1208 unlocalized chrX primary NW_001846490.1,DS485201.1,211000022279862 chrX_DS485225v1_random 1200 unlocalized chrX primary NW_001846514.1,DS485225.1,211000022279531 chrX_DS485235v1_random 1195 unlocalized chrX primary NW_001846524.1,DS485235.1,211000022278231 chrX_DS485238v1_random 1195 unlocalized chrX primary NW_001846527.1,DS485238.1,211000022278466 chrX_DS485257v1_random 1189 unlocalized chrX primary NW_001846546.1,DS485257.1,211000022278479 chrX_DS485262v1_random 1189 unlocalized chrX primary NW_001846551.1,DS485262.1,211000022278925 chrX_DS485266v1_random 1186 unlocalized chrX primary NW_001846555.1,DS485266.1,211000022278355 chrX_DS485268v1_random 1186 unlocalized chrX primary NW_001846557.1,DS485268.1,211000022279536 chrX_DS485271v1_random 1185 unlocalized chrX primary NW_001846560.1,DS485271.1,211000022279290 chrX_DS485277v1_random 1184 unlocalized chrX primary NW_001846566.1,DS485277.1,211000022278910 chrX_DS485278v1_random 1184 unlocalized chrX primary NW_001846567.1,DS485278.1,211000022279339 chrX_DS485281v1_random 1184 unlocalized chrX primary NW_001846570.1,DS485281.1,211000022279830 chrX_DS485287v1_random 1181 unlocalized chrX primary NW_001846576.1,DS485287.1,211000022280077 chrX_DS485299v1_random 1178 unlocalized chrX primary NW_001846588.1,DS485299.1,211000022279505 chrX_DS485300v1_random 1178 unlocalized chrX primary NW_001846589.1,DS485300.1,211000022279012 chrX_DS485303v1_random 1175 unlocalized chrX primary NW_001846592.1,DS485303.1,211000022279501 chrX_DS485305v1_random 1174 unlocalized chrX primary NW_001846594.1,DS485305.1,211000022278610 chrX_DS485310v1_random 1173 unlocalized chrX primary NW_001846599.1,DS485310.1,211000022279803 chrX_DS485334v1_random 1164 unlocalized chrX primary NW_001846623.1,DS485334.1,211000022278950 chrX_DS485336v1_random 1163 unlocalized chrX primary NW_001846625.1,DS485336.1,211000022279006 chrX_DS485345v1_random 1161 unlocalized chrX primary NW_001846634.1,DS485345.1,211000022279833 chrX_DS485351v1_random 1161 unlocalized chrX primary NW_001846640.1,DS485351.1,211000022279304 chrX_DS485358v1_random 1159 unlocalized chrX primary NW_001846647.1,DS485358.1,211000022278477 chrX_DS485360v1_random 1159 unlocalized chrX primary NW_001846649.1,DS485360.1,211000022279857 chrX_DS485364v1_random 1158 unlocalized chrX primary NW_001846653.1,DS485364.1,211000022279773 chrX_DS485378v1_random 1155 unlocalized chrX primary NW_001846667.1,DS485378.1,211000022278892 chrX_DS485384v1_random 1153 unlocalized chrX primary NW_001846673.1,DS485384.1,211000022279881 chrX_DS485418v1_random 1145 unlocalized chrX primary NW_001846707.1,DS485418.1,211000022279690 chrX_DS485454v1_random 1135 unlocalized chrX primary NW_001846743.1,DS485454.1,211000022279543 chrX_DS485459v1_random 1134 unlocalized chrX primary NW_001846748.1,DS485459.1,211000022280017 chrX_DS485465v1_random 1133 unlocalized chrX primary NW_001846754.1,DS485465.1,211000022278516 chrX_DS485471v1_random 1131 unlocalized chrX primary NW_001846760.1,DS485471.1,211000022278906 chrX_DS485476v1_random 1130 unlocalized chrX primary NW_001846765.1,DS485476.1,211000022278485 chrX_DS485478v1_random 1129 unlocalized chrX primary NW_001846767.1,DS485478.1,211000022278933 chrX_DS485514v1_random 1121 unlocalized chrX primary NW_001846803.1,DS485514.1,211000022278360 chrX_DS485537v1_random 1115 unlocalized chrX primary NW_001846826.1,DS485537.1,211000022279108 chrX_DS485549v1_random 1112 unlocalized chrX primary NW_001846838.1,DS485549.1,211000022280023 chrX_DS485550v1_random 1112 unlocalized chrX primary NW_001846839.1,DS485550.1,211000022280173 chrX_DS485562v1_random 1109 unlocalized chrX primary NW_001846851.1,DS485562.1,211000022279859 chrX_DS485573v1_random 1107 unlocalized chrX primary NW_001846862.1,DS485573.1,211000022278725 chrX_DS485592v1_random 1102 unlocalized chrX primary NW_001846881.1,DS485592.1,211000022279604 chrX_DS485597v1_random 1100 unlocalized chrX primary NW_001846886.1,DS485597.1,211000022279832 chrX_DS485599v1_random 1100 unlocalized chrX primary NW_001846888.1,DS485599.1,211000022278880 chrX_DS485603v1_random 1098 unlocalized chrX primary NW_001846892.1,DS485603.1,211000022279227 chrX_DS485606v1_random 1097 unlocalized chrX primary NW_001846895.1,DS485606.1,211000022278326 chrX_DS485617v1_random 1093 unlocalized chrX primary NW_001846906.1,DS485617.1,211000022279067 chrX_DS485618v1_random 1092 unlocalized chrX primary NW_001846907.1,DS485618.1,211000022278236 chrX_DS485620v1_random 1091 unlocalized chrX primary NW_001846909.1,DS485620.1,211000022278833 chrX_DS485635v1_random 1088 unlocalized chrX primary NW_001846924.1,DS485635.1,211000022278909 chrX_DS485647v1_random 1086 unlocalized chrX primary NW_001846936.1,DS485647.1,211000022279605 chrX_DS485649v1_random 1084 unlocalized chrX primary NW_001846938.1,DS485649.1,211000022278486 chrX_DS485651v1_random 1084 unlocalized chrX primary NW_001846940.1,DS485651.1,211000022280019 chrX_DS485660v1_random 1082 unlocalized chrX primary NW_001846949.1,DS485660.1,211000022278623 chrX_DS485672v1_random 1078 unlocalized chrX primary NW_001846961.1,DS485672.1,211000022279467 chrX_DS485676v1_random 1078 unlocalized chrX primary NW_001846965.1,DS485676.1,211000022278524 chrX_DS485687v1_random 1075 unlocalized chrX primary NW_001846976.1,DS485687.1,211000022278813 chrX_DS485691v1_random 1074 unlocalized chrX primary NW_001846980.1,DS485691.1,211000022278704 chrX_DS485707v1_random 1071 unlocalized chrX primary NW_001846996.1,DS485707.1,211000022279882 chrX_DS485723v1_random 1067 unlocalized chrX primary NW_001847012.1,DS485723.1,211000022278635 chrX_DS485735v1_random 1063 unlocalized chrX primary NW_001847024.1,DS485735.1,211000022278534 chrX_DS485738v1_random 1063 unlocalized chrX primary NW_001847027.1,DS485738.1,211000022279306 chrX_DS485745v1_random 1062 unlocalized chrX primary NW_001847034.1,DS485745.1,211000022278852 chrX_DS485756v1_random 1058 unlocalized chrX primary NW_001847045.1,DS485756.1,211000022280125 chrX_DS485762v1_random 1057 unlocalized chrX primary NW_001847051.1,DS485762.1,211000022279327 chrX_DS485765v1_random 1056 unlocalized chrX primary NW_001847054.1,DS485765.1,211000022278417 chrX_DS485769v1_random 1055 unlocalized chrX primary NW_001847058.1,DS485769.1,211000022278459 chrX_DS485771v1_random 1055 unlocalized chrX primary NW_001847060.1,DS485771.1,211000022278841 chrX_DS485778v1_random 1053 unlocalized chrX primary NW_001847067.1,DS485778.1,211000022279861 chrX_DS485782v1_random 1052 unlocalized chrX primary NW_001847071.1,DS485782.1,211000022278835 chrX_DS485785v1_random 1051 unlocalized chrX primary NW_001847074.1,DS485785.1,211000022278647 chrX_DS485790v1_random 1051 unlocalized chrX primary NW_001847079.1,DS485790.1,211000022279291 chrX_DS485797v1_random 1049 unlocalized chrX primary NW_001847086.1,DS485797.1,211000022278237 chrX_DS485798v1_random 1049 unlocalized chrX primary NW_001847087.1,DS485798.1,211000022279086 chrX_DS485801v1_random 1048 unlocalized chrX primary NW_001847090.1,DS485801.1,211000022278705 chrX_DS485813v1_random 1047 unlocalized chrX primary NW_001847102.1,DS485813.1,211000022278504 chrX_DS485816v1_random 1046 unlocalized chrX primary NW_001847105.1,DS485816.1,211000022279438 chrX_DS485836v1_random 1042 unlocalized chrX primary NW_001847125.1,DS485836.1,211000022279083 chrX_DS485845v1_random 1040 unlocalized chrX primary NW_001847134.1,DS485845.1,211000022278715 chrX_DS485852v1_random 1038 unlocalized chrX primary NW_001847141.1,DS485852.1,211000022278824 chrX_DS485855v1_random 1037 unlocalized chrX primary NW_001847144.1,DS485855.1,211000022278617 chrX_DS485856v1_random 1037 unlocalized chrX primary NW_001847145.1,DS485856.1,211000022278818 chrX_DS485857v1_random 1037 unlocalized chrX primary NW_001847146.1,DS485857.1,211000022279518 chrX_DS485860v1_random 1036 unlocalized chrX primary NW_001847149.1,DS485860.1,211000022278596 chrX_DS485879v1_random 1031 unlocalized chrX primary NW_001847168.1,DS485879.1,211000022279315 chrX_DS485898v1_random 1028 unlocalized chrX primary NW_001847187.1,DS485898.1,211000022278834 chrX_DS485899v1_random 1027 unlocalized chrX primary NW_001847188.1,DS485899.1,211000022279111 chrX_DS485909v1_random 1023 unlocalized chrX primary NW_001847198.1,DS485909.1,211000022278669 chrX_DS485913v1_random 1022 unlocalized chrX primary NW_001847202.1,DS485913.1,211000022278474 chrX_DS485934v1_random 1019 unlocalized chrX primary NW_001847223.1,DS485934.1,211000022278638 chrX_DS485941v1_random 1018 unlocalized chrX primary NW_001847230.1,DS485941.1,211000022278626 chrX_DS485942v1_random 1018 unlocalized chrX primary NW_001847231.1,DS485942.1,211000022278350 chrX_DS485950v1_random 1015 unlocalized chrX primary NW_001847239.1,DS485950.1,211000022279113 chrX_DS485959v1_random 1013 unlocalized chrX primary NW_001847248.1,DS485959.1,211000022279010 chrX_DS485962v1_random 1012 unlocalized chrX primary NW_001847251.1,DS485962.1,211000022278458 chrX_DS485967v1_random 1011 unlocalized chrX primary NW_001847256.1,DS485967.1,211000022278483 chrX_DS485978v1_random 1008 unlocalized chrX primary NW_001847267.1,DS485978.1,211000022279720 chrX_DS485981v1_random 1007 unlocalized chrX primary NW_001847270.1,DS485981.1,211000022278488 chrX_DS485987v1_random 1005 unlocalized chrX primary NW_001847276.1,DS485987.1,211000022278811 chrX_DS485994v1_random 1004 unlocalized chrX primary NW_001847283.1,DS485994.1,211000022278230 chrY_CP007107v1_random 73091 unlocalized chrY primary NW_007931108.1,CP007107.1,Y_mapped_Scaffold_5 chrY_CP007108v1_random 66731 unlocalized chrY primary NW_007931109.1,CP007108.1,Y_mapped_Scaffold_9 chrY_CP007109v1_random 66439 unlocalized chrY primary NW_007931110.1,CP007109.1,Y_mapped_Scaffold_12 chrY_CP007110v1_random 33316 unlocalized chrY primary NW_007931111.1,CP007110.1,Y_mapped_Scaffold_15 chrY_CP007111v1_random 34521 unlocalized chrY primary NW_007931112.1,CP007111.1,Y_mapped_Scaffold_18 chrY_CP007112v1_random 39041 unlocalized chrY primary NW_007931113.1,CP007112.1,Y_mapped_Scaffold_20 chrY_CP007113v1_random 34359 unlocalized chrY primary NW_007931114.1,CP007113.1,Y_mapped_Scaffold_21 chrY_CP007114v1_random 31460 unlocalized chrY primary NW_007931115.1,CP007114.1,Y_mapped_Scaffold_23 chrY_CP007115v1_random 21921 unlocalized chrY primary NW_007931116.1,CP007115.1,Y_mapped_Scaffold_26 chrY_CP007116v1_random 25805 unlocalized chrY primary NW_007931117.1,CP007116.1,Y_mapped_Scaffold_30 chrY_CP007117v1_random 24380 unlocalized chrY primary NW_007931118.1,CP007117.1,Y_mapped_Scaffold_34 chrY_CP007118v1_random 44104 unlocalized chrY primary NW_007931119.1,CP007118.1,Y_mapped_Scaffold_53 chrY_CP007119v1_random 11498 unlocalized chrY primary NW_007931120.1,CP007119.1,211000022279762 chrY_DS483677v1_random 12513 unlocalized chrY primary NW_001844966.1,DS483677.1,211000022280742 chrY_DS483690v1_random 12001 unlocalized chrY primary NW_001844979.1,DS483690.1,211000022280763 chrY_DS483725v1_random 13079 unlocalized chrY primary NW_001845014.1,DS483725.1,211000022280187 chrY_DS483742v1_random 11763 unlocalized chrY primary NW_001845031.1,DS483742.1,211000022279681 chrY_DS483778v1_random 5984 unlocalized chrY primary NW_001845067.1,DS483778.1,211000022278684 chrY_DS483788v1_random 5564 unlocalized chrY primary NW_001845077.1,DS483788.1,211000022280748 chrY_DS483790v1_random 5520 unlocalized chrY primary NW_001845079.1,DS483790.1,211000022279688 chrY_DS483875v1_random 4197 unlocalized chrY primary NW_001845164.1,DS483875.1,211000022280494 chrY_DS483889v1_random 4059 unlocalized chrY primary NW_001845178.1,DS483889.1,211000022280504 chrY_DS483931v1_random 3713 unlocalized chrY primary NW_001845220.1,DS483931.1,211000022280481 chrY_DS483959v1_random 3537 unlocalized chrY primary NW_001845248.1,DS483959.1,211000022278601 chrY_DS483966v1_random 3502 unlocalized chrY primary NW_001845255.1,DS483966.1,211000022279030 chrY_DS483967v1_random 3499 unlocalized chrY primary NW_001845256.1,DS483967.1,211000022279468 chrY_DS483987v1_random 3375 unlocalized chrY primary NW_001845276.1,DS483987.1,211000022278795 chrY_DS483988v1_random 3374 unlocalized chrY primary NW_001845277.1,DS483988.1,211000022279951 chrY_DS483996v1_random 3341 unlocalized chrY primary NW_001845285.1,DS483996.1,211000022280483 chrY_DS484021v1_random 3213 unlocalized chrY primary NW_001845310.1,DS484021.1,211000022278218 chrY_DS484029v1_random 3195 unlocalized chrY primary NW_001845318.1,DS484029.1,211000022280619 chrY_DS484037v1_random 3173 unlocalized chrY primary NW_001845326.1,DS484037.1,211000022279224 chrY_DS484043v1_random 3154 unlocalized chrY primary NW_001845332.1,DS484043.1,211000022279649 chrY_DS484049v1_random 3102 unlocalized chrY primary NW_001845338.1,DS484049.1,211000022279186 chrY_DS484056v1_random 3077 unlocalized chrY primary NW_001845345.1,DS484056.1,211000022278895 chrY_DS484063v1_random 3046 unlocalized chrY primary NW_001845352.1,DS484063.1,211000022279642 chrY_DS484094v1_random 2922 unlocalized chrY primary NW_001845383.1,DS484094.1,211000022280686 chrY_DS484103v1_random 2899 unlocalized chrY primary NW_001845392.1,DS484103.1,211000022279532 chrY_DS484128v1_random 2836 unlocalized chrY primary NW_001845417.1,DS484128.1,211000022279382 chrY_DS484142v1_random 2815 unlocalized chrY primary NW_001845431.1,DS484142.1,211000022278436 chrY_DS484146v1_random 2799 unlocalized chrY primary NW_001845435.1,DS484146.1,211000022278586 chrY_DS484164v1_random 2762 unlocalized chrY primary NW_001845453.1,DS484164.1,211000022278734 chrY_DS484171v1_random 2728 unlocalized chrY primary NW_001845460.1,DS484171.1,211000022279709 chrY_DS484175v1_random 2709 unlocalized chrY primary NW_001845464.1,DS484175.1,211000022280138 chrY_DS484181v1_random 2694 unlocalized chrY primary NW_001845470.1,DS484181.1,211000022279755 chrY_DS484184v1_random 2688 unlocalized chrY primary NW_001845473.1,DS484184.1,211000022278278 chrY_DS484197v1_random 2642 unlocalized chrY primary NW_001845486.1,DS484197.1,211000022279046 chrY_DS484233v1_random 2565 unlocalized chrY primary NW_001845522.1,DS484233.1,211000022278509 chrY_DS484249v1_random 2522 unlocalized chrY primary NW_001845538.1,DS484249.1,211000022279261 chrY_DS484250v1_random 2521 unlocalized chrY primary NW_001845539.1,DS484250.1,211000022278743 chrY_DS484259v1_random 2508 unlocalized chrY primary NW_001845548.1,DS484259.1,211000022278683 chrY_DS484266v1_random 2477 unlocalized chrY primary NW_001845555.1,DS484266.1,211000022278802 chrY_DS484270v1_random 2473 unlocalized chrY primary NW_001845559.1,DS484270.1,211000022278510 chrY_DS484336v1_random 2342 unlocalized chrY primary NW_001845625.1,DS484336.1,211000022279334 chrY_DS484351v1_random 2303 unlocalized chrY primary NW_001845640.1,DS484351.1,211000022278577 chrY_DS484377v1_random 2232 unlocalized chrY primary NW_001845666.1,DS484377.1,211000022280024 chrY_DS484390v1_random 2206 unlocalized chrY primary NW_001845679.1,DS484390.1,211000022279932 chrY_DS484441v1_random 2096 unlocalized chrY primary NW_001845730.1,DS484441.1,211000022279583 chrY_DS484465v1_random 2063 unlocalized chrY primary NW_001845754.1,DS484465.1,211000022279937 chrY_DS484492v1_random 2005 unlocalized chrY primary NW_001845781.1,DS484492.1,211000022278984 chrY_DS484523v1_random 1961 unlocalized chrY primary NW_001845812.1,DS484523.1,211000022279268 chrY_DS484530v1_random 1947 unlocalized chrY primary NW_001845819.1,DS484530.1,211000022278449 chrY_DS484531v1_random 1946 unlocalized chrY primary NW_001845820.1,DS484531.1,211000022279795 chrY_DS484574v1_random 1890 unlocalized chrY primary NW_001845863.1,DS484574.1,211000022279104 chrY_DS484589v1_random 1863 unlocalized chrY primary NW_001845878.1,DS484589.1,211000022279494 chrY_DS484631v1_random 1775 unlocalized chrY primary NW_001845920.1,DS484631.1,211000022278941 chrY_DS484637v1_random 1766 unlocalized chrY primary NW_001845926.1,DS484637.1,211000022279123 chrY_DS484641v1_random 1756 unlocalized chrY primary NW_001845930.1,DS484641.1,211000022279989 chrY_DS484643v1_random 1751 unlocalized chrY primary NW_001845932.1,DS484643.1,211000022278565 chrY_DS484665v1_random 1712 unlocalized chrY primary NW_001845954.1,DS484665.1,211000022279026 chrY_DS484674v1_random 1690 unlocalized chrY primary NW_001845963.1,DS484674.1,211000022279936 chrY_DS484675v1_random 1690 unlocalized chrY primary NW_001845964.1,DS484675.1,211000022279025 chrY_DS484680v1_random 1683 unlocalized chrY primary NW_001845969.1,DS484680.1,211000022279582 chrY_DS484681v1_random 1683 unlocalized chrY primary NW_001845970.1,DS484681.1,211000022278709 chrY_DS484696v1_random 1637 unlocalized chrY primary NW_001845985.1,DS484696.1,211000022279680 chrY_DS484706v1_random 1619 unlocalized chrY primary NW_001845995.1,DS484706.1,211000022279090 chrY_DS484757v1_random 1525 unlocalized chrY primary NW_001846046.1,DS484757.1,211000022279870 chrY_DS484781v1_random 1485 unlocalized chrY primary NW_001846070.1,DS484781.1,211000022278872 chrY_DS484805v1_random 1459 unlocalized chrY primary NW_001846094.1,DS484805.1,211000022278214 chrY_DS484807v1_random 1456 unlocalized chrY primary NW_001846096.1,DS484807.1,211000022279963 chrY_DS484818v1_random 1443 unlocalized chrY primary NW_001846107.1,DS484818.1,211000022278997 chrY_DS484820v1_random 1440 unlocalized chrY primary NW_001846109.1,DS484820.1,211000022279876 chrY_DS484830v1_random 1429 unlocalized chrY primary NW_001846119.1,DS484830.1,211000022279950 chrY_DS484863v1_random 1393 unlocalized chrY primary NW_001846152.1,DS484863.1,211000022279279 chrY_DS484875v1_random 1383 unlocalized chrY primary NW_001846164.1,DS484875.1,211000022280116 chrY_DS484876v1_random 1382 unlocalized chrY primary NW_001846165.1,DS484876.1,211000022279907 chrY_DS484908v1_random 1360 unlocalized chrY primary NW_001846197.1,DS484908.1,211000022279484 chrY_DS484909v1_random 1356 unlocalized chrY primary NW_001846198.1,DS484909.1,211000022279392 chrY_DS484924v1_random 1341 unlocalized chrY primary NW_001846213.1,DS484924.1,211000022280044 chrY_DS484942v1_random 1333 unlocalized chrY primary NW_001846231.1,DS484942.1,211000022279550 chrY_DS484945v1_random 1330 unlocalized chrY primary NW_001846234.1,DS484945.1,211000022279485 chrY_DS484956v1_random 1322 unlocalized chrY primary NW_001846245.1,DS484956.1,211000022279404 chrY_DS484983v1_random 1304 unlocalized chrY primary NW_001846272.1,DS484983.1,211000022279560 chrY_DS484986v1_random 1303 unlocalized chrY primary NW_001846275.1,DS484986.1,211000022278722 chrY_DS484992v1_random 1297 unlocalized chrY primary NW_001846281.1,DS484992.1,211000022278153 chrY_DS484994v1_random 1297 unlocalized chrY primary NW_001846283.1,DS484994.1,211000022279319 chrY_DS485013v1_random 1284 unlocalized chrY primary NW_001846302.1,DS485013.1,211000022278405 chrY_DS485014v1_random 1283 unlocalized chrY primary NW_001846303.1,DS485014.1,211000022279835 chrY_DS485016v1_random 1282 unlocalized chrY primary NW_001846305.1,DS485016.1,211000022278418 chrY_DS485028v1_random 1277 unlocalized chrY primary NW_001846317.1,DS485028.1,211000022280157 chrY_DS485042v1_random 1271 unlocalized chrY primary NW_001846331.1,DS485042.1,211000022279269 chrY_DS485048v1_random 1270 unlocalized chrY primary NW_001846337.1,DS485048.1,211000022279496 chrY_DS485051v1_random 1268 unlocalized chrY primary NW_001846340.1,DS485051.1,211000022278791 chrY_DS485070v1_random 1260 unlocalized chrY primary NW_001846359.1,DS485070.1,211000022278756 chrY_DS485097v1_random 1243 unlocalized chrY primary NW_001846386.1,DS485097.1,211000022279725 chrY_DS485099v1_random 1241 unlocalized chrY primary NW_001846388.1,DS485099.1,211000022279491 chrY_DS485113v1_random 1237 unlocalized chrY primary NW_001846402.1,DS485113.1,211000022278135 chrY_DS485137v1_random 1230 unlocalized chrY primary NW_001846426.1,DS485137.1,211000022279678 chrY_DS485143v1_random 1227 unlocalized chrY primary NW_001846432.1,DS485143.1,211000022279918 chrY_DS485158v1_random 1224 unlocalized chrY primary NW_001846447.1,DS485158.1,211000022279047 chrY_DS485159v1_random 1224 unlocalized chrY primary NW_001846448.1,DS485159.1,211000022278798 chrY_DS485166v1_random 1222 unlocalized chrY primary NW_001846455.1,DS485166.1,211000022278935 chrY_DS485178v1_random 1218 unlocalized chrY primary NW_001846467.1,DS485178.1,211000022279335 chrY_DS485219v1_random 1202 unlocalized chrY primary NW_001846508.1,DS485219.1,211000022280090 chrY_DS485236v1_random 1195 unlocalized chrY primary NW_001846525.1,DS485236.1,211000022279174 chrY_DS485250v1_random 1192 unlocalized chrY primary NW_001846539.1,DS485250.1,211000022278990 chrY_DS485267v1_random 1186 unlocalized chrY primary NW_001846556.1,DS485267.1,211000022278142 chrY_DS485283v1_random 1182 unlocalized chrY primary NW_001846572.1,DS485283.1,211000022279974 chrY_DS485288v1_random 1181 unlocalized chrY primary NW_001846577.1,DS485288.1,211000022279831 chrY_DS485302v1_random 1176 unlocalized chrY primary NW_001846591.1,DS485302.1,211000022279452 chrY_DS485315v1_random 1171 unlocalized chrY primary NW_001846604.1,DS485315.1,211000022279679 chrY_DS485316v1_random 1171 unlocalized chrY primary NW_001846605.1,DS485316.1,211000022279999 chrY_DS485318v1_random 1170 unlocalized chrY primary NW_001846607.1,DS485318.1,211000022279669 chrY_DS485320v1_random 1169 unlocalized chrY primary NW_001846609.1,DS485320.1,211000022279410 chrY_DS485328v1_random 1166 unlocalized chrY primary NW_001846617.1,DS485328.1,211000022279333 chrY_DS485329v1_random 1166 unlocalized chrY primary NW_001846618.1,DS485329.1,211000022279266 chrY_DS485335v1_random 1163 unlocalized chrY primary NW_001846624.1,DS485335.1,211000022279986 chrY_DS485343v1_random 1162 unlocalized chrY primary NW_001846632.1,DS485343.1,211000022279280 chrY_DS485359v1_random 1159 unlocalized chrY primary NW_001846648.1,DS485359.1,211000022279164 chrY_DS485363v1_random 1158 unlocalized chrY primary NW_001846652.1,DS485363.1,211000022279511 chrY_DS485374v1_random 1155 unlocalized chrY primary NW_001846663.1,DS485374.1,211000022279153 chrY_DS485375v1_random 1155 unlocalized chrY primary NW_001846664.1,DS485375.1,211000022278499 chrY_DS485388v1_random 1152 unlocalized chrY primary NW_001846677.1,DS485388.1,211000022278995 chrY_DS485399v1_random 1148 unlocalized chrY primary NW_001846688.1,DS485399.1,211000022279181 chrY_DS485409v1_random 1147 unlocalized chrY primary NW_001846698.1,DS485409.1,211000022279352 chrY_DS485416v1_random 1146 unlocalized chrY primary NW_001846705.1,DS485416.1,211000022279935 chrY_DS485422v1_random 1144 unlocalized chrY primary NW_001846711.1,DS485422.1,211000022279901 chrY_DS485423v1_random 1144 unlocalized chrY primary NW_001846712.1,DS485423.1,211000022278760 chrY_DS485427v1_random 1142 unlocalized chrY primary NW_001846716.1,DS485427.1,211000022278936 chrY_DS485430v1_random 1141 unlocalized chrY primary NW_001846719.1,DS485430.1,211000022279995 chrY_DS485436v1_random 1140 unlocalized chrY primary NW_001846725.1,DS485436.1,211000022279938 chrY_DS485440v1_random 1139 unlocalized chrY primary NW_001846729.1,DS485440.1,211000022279458 chrY_DS485450v1_random 1136 unlocalized chrY primary NW_001846739.1,DS485450.1,211000022279941 chrY_DS485452v1_random 1136 unlocalized chrY primary NW_001846741.1,DS485452.1,211000022279391 chrY_DS485460v1_random 1134 unlocalized chrY primary NW_001846749.1,DS485460.1,211000022278450 chrY_DS485470v1_random 1132 unlocalized chrY primary NW_001846759.1,DS485470.1,211000022279799 chrY_DS485473v1_random 1131 unlocalized chrY primary NW_001846762.1,DS485473.1,211000022279800 chrY_DS485483v1_random 1129 unlocalized chrY primary NW_001846772.1,DS485483.1,211000022278987 chrY_DS485492v1_random 1126 unlocalized chrY primary NW_001846781.1,DS485492.1,211000022278959 chrY_DS485512v1_random 1122 unlocalized chrY primary NW_001846801.1,DS485512.1,211000022279910 chrY_DS485523v1_random 1118 unlocalized chrY primary NW_001846812.1,DS485523.1,211000022279165 chrY_DS485532v1_random 1116 unlocalized chrY primary NW_001846821.1,DS485532.1,211000022279546 chrY_DS485534v1_random 1116 unlocalized chrY primary NW_001846823.1,DS485534.1,211000022278736 chrY_DS485552v1_random 1111 unlocalized chrY primary NW_001846841.1,DS485552.1,211000022279813 chrY_DS485560v1_random 1110 unlocalized chrY primary NW_001846849.1,DS485560.1,211000022279236 chrY_DS485561v1_random 1109 unlocalized chrY primary NW_001846850.1,DS485561.1,211000022278873 chrY_DS485575v1_random 1106 unlocalized chrY primary NW_001846864.1,DS485575.1,211000022279005 chrY_DS485594v1_random 1101 unlocalized chrY primary NW_001846883.1,DS485594.1,211000022278201 chrY_DS485604v1_random 1098 unlocalized chrY primary NW_001846893.1,DS485604.1,211000022279586 chrY_DS485625v1_random 1090 unlocalized chrY primary NW_001846914.1,DS485625.1,211000022279661 chrY_DS485641v1_random 1087 unlocalized chrY primary NW_001846930.1,DS485641.1,211000022279403 chrY_DS485646v1_random 1086 unlocalized chrY primary NW_001846935.1,DS485646.1,211000022278803 chrY_DS485685v1_random 1075 unlocalized chrY primary NW_001846974.1,DS485685.1,211000022279459 chrY_DS485696v1_random 1073 unlocalized chrY primary NW_001846985.1,DS485696.1,211000022279007 chrY_DS485698v1_random 1072 unlocalized chrY primary NW_001846987.1,DS485698.1,211000022279988 chrY_DS485718v1_random 1068 unlocalized chrY primary NW_001847007.1,DS485718.1,211000022279486 chrY_DS485732v1_random 1064 unlocalized chrY primary NW_001847021.1,DS485732.1,211000022279137 chrY_DS485736v1_random 1063 unlocalized chrY primary NW_001847025.1,DS485736.1,211000022278787 chrY_DS485739v1_random 1063 unlocalized chrY primary NW_001847028.1,DS485739.1,211000022279385 chrY_DS485749v1_random 1060 unlocalized chrY primary NW_001847038.1,DS485749.1,211000022279031 chrY_DS485752v1_random 1059 unlocalized chrY primary NW_001847041.1,DS485752.1,211000022279034 chrY_DS485755v1_random 1058 unlocalized chrY primary NW_001847044.1,DS485755.1,211000022279801 chrY_DS485764v1_random 1056 unlocalized chrY primary NW_001847053.1,DS485764.1,211000022279377 chrY_DS485767v1_random 1056 unlocalized chrY primary NW_001847056.1,DS485767.1,211000022279211 chrY_DS485772v1_random 1054 unlocalized chrY primary NW_001847061.1,DS485772.1,211000022279314 chrY_DS485776v1_random 1053 unlocalized chrY primary NW_001847065.1,DS485776.1,211000022279677 chrY_DS485786v1_random 1051 unlocalized chrY primary NW_001847075.1,DS485786.1,211000022280040 chrY_DS485795v1_random 1049 unlocalized chrY primary NW_001847084.1,DS485795.1,211000022278682 chrY_DS485839v1_random 1042 unlocalized chrY primary NW_001847128.1,DS485839.1,211000022279492 chrY_DS485840v1_random 1041 unlocalized chrY primary NW_001847129.1,DS485840.1,211000022278956 chrY_DS485849v1_random 1039 unlocalized chrY primary NW_001847138.1,DS485849.1,211000022280072 chrY_DS485858v1_random 1037 unlocalized chrY primary NW_001847147.1,DS485858.1,211000022279908 chrY_DS485865v1_random 1035 unlocalized chrY primary NW_001847154.1,DS485865.1,211000022278538 chrY_DS485873v1_random 1033 unlocalized chrY primary NW_001847162.1,DS485873.1,211000022278772 chrY_DS485875v1_random 1032 unlocalized chrY primary NW_001847164.1,DS485875.1,211000022278965 chrY_DS485885v1_random 1030 unlocalized chrY primary NW_001847174.1,DS485885.1,211000022280057 chrY_DS485888v1_random 1029 unlocalized chrY primary NW_001847177.1,DS485888.1,211000022279791 chrY_DS485892v1_random 1029 unlocalized chrY primary NW_001847181.1,DS485892.1,211000022279802 chrY_DS485894v1_random 1029 unlocalized chrY primary NW_001847183.1,DS485894.1,211000022278939 chrY_DS485901v1_random 1027 unlocalized chrY primary NW_001847190.1,DS485901.1,211000022279272 chrY_DS485927v1_random 1020 unlocalized chrY primary NW_001847216.1,DS485927.1,211000022278710 chrY_DS485938v1_random 1019 unlocalized chrY primary NW_001847227.1,DS485938.1,211000022279264 chrY_DS485956v1_random 1014 unlocalized chrY primary NW_001847245.1,DS485956.1,211000022279972 chrY_DS485960v1_random 1012 unlocalized chrY primary NW_001847249.1,DS485960.1,211000022279589 chrY_DS485963v1_random 1012 unlocalized chrY primary NW_001847252.1,DS485963.1,211000022279670 chrY_DS485972v1_random 1010 unlocalized chrY primary NW_001847261.1,DS485972.1,211000022279646 chrY_DS485974v1_random 1010 unlocalized chrY primary NW_001847263.1,DS485974.1,211000022279639 chrY_DS485975v1_random 1010 unlocalized chrY primary NW_001847264.1,DS485975.1,211000022279235 chrY_DS486003v1_random 1001 unlocalized chrY primary NW_001847292.1,DS486003.1,211000022278495 chrUn_CP007071v1 19956 unplaced primary NW_007931073.1,CP007071.1,2Cen_mapped_Scaffold_10 chrUn_CP007072v1 44411 unplaced primary NW_007931074.1,CP007072.1,2Cen_mapped_Scaffold_43 chrUn_CP007073v1 13157 unplaced primary NW_007931075.1,CP007073.1,2R2_mapped_Scaffold_56 chrUn_CP007074v1 76224 unplaced primary NW_007931076.1,CP007074.1,3Cen_mapped_Scaffold_1 chrUn_CP007075v1 11983 unplaced primary NW_007931077.1,CP007075.1,3Cen_mapped_Scaffold_27 chrUn_CP007076v1 87365 unplaced primary NW_007931078.1,CP007076.1,3Cen_mapped_Scaffold_31 chrUn_CP007077v1 36913 unplaced primary NW_007931079.1,CP007077.1,3Cen_mapped_Scaffold_36 chrUn_CP007078v1 22604 unplaced primary NW_007931080.1,CP007078.1,3Cen_mapped_Scaffold_41 chrUn_CP007079v1 23238 unplaced primary NW_007931081.1,CP007079.1,3Cen_mapped_Scaffold_50 chrUn_CP007080v1 86267 unplaced primary NW_007931082.1,CP007080.1,Unmapped_Scaffold_4 chrUn_CP007081v1 88768 unplaced primary NW_007931083.1,CP007081.1,Unmapped_Scaffold_8 chrUn_CP007082v1 36482 unplaced primary NW_007931084.1,CP007082.1,Unmapped_Scaffold_11 chrUn_CP007083v1 25537 unplaced primary NW_007931085.1,CP007083.1,Unmapped_Scaffold_13 chrUn_CP007084v1 62570 unplaced primary NW_007931086.1,CP007084.1,Unmapped_Scaffold_17 chrUn_CP007085v1 45120 unplaced primary NW_007931087.1,CP007085.1,Unmapped_Scaffold_22 chrUn_CP007086v1 22882 unplaced primary NW_007931088.1,CP007086.1,Unmapped_Scaffold_24 chrUn_CP007087v1 46986 unplaced primary NW_007931089.1,CP007087.1,Unmapped_Scaffold_28 chrUn_CP007088v1 37106 unplaced primary NW_007931090.1,CP007088.1,Unmapped_Scaffold_29 chrUn_CP007089v1 16157 unplaced primary NW_007931091.1,CP007089.1,Unmapped_Scaffold_32 chrUn_CP007090v1 57785 unplaced primary NW_007931092.1,CP007090.1,Unmapped_Scaffold_35 chrUn_CP007091v1 20763 unplaced primary NW_007931093.1,CP007091.1,Unmapped_Scaffold_37 chrUn_CP007092v1 28305 unplaced primary NW_007931094.1,CP007092.1,Unmapped_Scaffold_38 chrUn_CP007093v1 25698 unplaced primary NW_007931095.1,CP007093.1,Unmapped_Scaffold_44 chrUn_CP007094v1 29583 unplaced primary NW_007931096.1,CP007094.1,Unmapped_Scaffold_45 chrUn_CP007095v1 25560 unplaced primary NW_007931097.1,CP007095.1,Unmapped_Scaffold_46 chrUn_CP007096v1 26115 unplaced primary NW_007931098.1,CP007096.1,Unmapped_Scaffold_48 chrUn_CP007097v1 13455 unplaced primary NW_007931099.1,CP007097.1,Unmapped_Scaffold_51 chrUn_CP007098v1 43383 unplaced primary NW_007931100.1,CP007098.1,Unmapped_Scaffold_52 chrUn_CP007099v1 12632 unplaced primary NW_007931101.1,CP007099.1,Unmapped_Scaffold_54 chrUn_CP007100v1 10091 unplaced primary NW_007931102.1,CP007100.1,Unmapped_Scaffold_58 chrUn_CP007101v1 24503 unplaced primary NW_007931103.1,CP007101.1,Unmapped_Scaffold_60 chrUn_CP007102v1 12714 unplaced primary NW_007931104.1,CP007102.1,211000022278279 chrUn_CP007105v1 47411 unplaced primary NW_007931107.1,CP007105.1,XY_mapped_Scaffold_42 chrUn_CP007120v1 76973 unplaced primary NW_007931121.1,CP007120.1,rDNA chrUn_DS483562v1 50625 unplaced primary NW_001844851.1,DS483562.1,XY_mapped_Scaffold_7 chrUn_DS483629v1 15417 unplaced primary NW_001844918.1,DS483629.1,211000022280772 chrUn_DS483641v1 14503 unplaced primary NW_001844930.1,DS483641.1,211000022280659 chrUn_DS483646v1 14098 unplaced primary NW_001844935.1,DS483646.1,211000022280328 chrUn_DS483647v1 14028 unplaced primary NW_001844936.1,DS483647.1,211000022280541 chrUn_DS483649v1 13935 unplaced primary NW_001844938.1,DS483649.1,211000022280259 chrUn_DS483650v1 13906 unplaced primary NW_001844939.1,DS483650.1,211000022278875 chrUn_DS483658v1 13455 unplaced primary NW_001844947.1,DS483658.1,211000022279719 chrUn_DS483659v1 13416 unplaced primary NW_001844948.1,DS483659.1,211000022279579 chrUn_DS483662v1 13317 unplaced primary NW_001844951.1,DS483662.1,211000022279094 chrUn_DS483663v1 13256 unplaced primary NW_001844952.1,DS483663.1,211000022279556 chrUn_DS483670v1 12827 unplaced primary NW_001844959.1,DS483670.1,211000022279754 chrUn_DS483673v1 12654 unplaced primary NW_001844962.1,DS483673.1,211000022279420 chrUn_DS483674v1 12632 unplaced primary NW_001844963.1,DS483674.1,211000022279022 chrUn_DS483675v1 12536 unplaced primary NW_001844964.1,DS483675.1,211000022279503 chrUn_DS483678v1 12424 unplaced primary NW_001844967.1,DS483678.1,211000022278978 chrUn_DS483679v1 12424 unplaced primary NW_001844968.1,DS483679.1,211000022279829 chrUn_DS483680v1 12399 unplaced primary NW_001844969.1,DS483680.1,211000022278916 chrUn_DS483681v1 12368 unplaced primary NW_001844970.1,DS483681.1,211000022279098 chrUn_DS483682v1 12354 unplaced primary NW_001844971.1,DS483682.1,211000022278777 chrUn_DS483686v1 12148 unplaced primary NW_001844975.1,DS483686.1,211000022279594 chrUn_DS483687v1 12142 unplaced primary NW_001844976.1,DS483687.1,211000022279637 chrUn_DS483688v1 12095 unplaced primary NW_001844977.1,DS483688.1,211000022279456 chrUn_DS483689v1 12034 unplaced primary NW_001844978.1,DS483689.1,211000022279893 chrUn_DS483692v1 11985 unplaced primary NW_001844981.1,DS483692.1,211000022278390 chrUn_DS483693v1 11958 unplaced primary NW_001844982.1,DS483693.1,211000022279189 chrUn_DS483694v1 11951 unplaced primary NW_001844983.1,DS483694.1,211000022278399 chrUn_DS483695v1 11743 unplaced primary NW_001844984.1,DS483695.1,211000022278549 chrUn_DS483700v1 11430 unplaced primary NW_001844989.1,DS483700.1,211000022278269 chrUn_DS483701v1 11220 unplaced primary NW_001844990.1,DS483701.1,211000022279423 chrUn_DS483702v1 11148 unplaced primary NW_001844991.1,DS483702.1,211000022280064 chrUn_DS483703v1 11126 unplaced primary NW_001844992.1,DS483703.1,211000022278686 chrUn_DS483705v1 27456 unplaced primary NW_001844994.1,DS483705.1,211000022278049 chrUn_DS483707v1 25840 unplaced primary NW_001844996.1,DS483707.1,211000022278415 chrUn_DS483709v1 18299 unplaced primary NW_001844998.1,DS483709.1,211000022280761 chrUn_DS483711v1 14687 unplaced primary NW_001845000.1,DS483711.1,211000022278217 chrUn_DS483712v1 14199 unplaced primary NW_001845001.1,DS483712.1,211000022278974 chrUn_DS483719v1 12027 unplaced primary NW_001845008.1,DS483719.1,211000022278273 chrUn_DS483723v1 21074 unplaced primary NW_001845012.1,DS483723.1,211000022278354 chrUn_DS483724v1 13501 unplaced primary NW_001845013.1,DS483724.1,211000022280596 chrUn_DS483726v1 14983 unplaced primary NW_001845015.1,DS483726.1,211000022279114 chrUn_DS483728v1 12681 unplaced primary NW_001845017.1,DS483728.1,211000022278185 chrUn_DS483734v1 15522 unplaced primary NW_001845023.1,DS483734.1,211000022279276 chrUn_DS483735v1 15068 unplaced primary NW_001845024.1,DS483735.1,211000022280237 chrUn_DS483736v1 14006 unplaced primary NW_001845025.1,DS483736.1,211000022278653 chrUn_DS483737v1 13553 unplaced primary NW_001845026.1,DS483737.1,211000022279892 chrUn_DS483738v1 12856 unplaced primary NW_001845027.1,DS483738.1,211000022279146 chrUn_DS483739v1 12459 unplaced primary NW_001845028.1,DS483739.1,211000022279345 chrUn_DS483740v1 12002 unplaced primary NW_001845029.1,DS483740.1,211000022279001 chrUn_DS483741v1 11807 unplaced primary NW_001845030.1,DS483741.1,211000022279523 chrUn_DS483743v1 11569 unplaced primary NW_001845032.1,DS483743.1,211000022278849 chrUn_DS483744v1 9865 unplaced primary NW_001845033.1,DS483744.1,211000022280750 chrUn_DS483746v1 9341 unplaced primary NW_001845035.1,DS483746.1,211000022279869 chrUn_DS483748v1 8346 unplaced primary NW_001845037.1,DS483748.1,211000022278215 chrUn_DS483749v1 8007 unplaced primary NW_001845038.1,DS483749.1,211000022279695 chrUn_DS483750v1 7722 unplaced primary NW_001845039.1,DS483750.1,211000022279735 chrUn_DS483751v1 7314 unplaced primary NW_001845040.1,DS483751.1,211000022280490 chrUn_DS483753v1 7123 unplaced primary NW_001845042.1,DS483753.1,211000022280465 chrUn_DS483754v1 7003 unplaced primary NW_001845043.1,DS483754.1,211000022280734 chrUn_DS483755v1 6936 unplaced primary NW_001845044.1,DS483755.1,211000022278032 chrUn_DS483757v1 6900 unplaced primary NW_001845046.1,DS483757.1,211000022280476 chrUn_DS483758v1 6860 unplaced primary NW_001845047.1,DS483758.1,211000022280735 chrUn_DS483759v1 6860 unplaced primary NW_001845048.1,DS483759.1,211000022279018 chrUn_DS483760v1 6825 unplaced primary NW_001845049.1,DS483760.1,211000022280699 chrUn_DS483762v1 6698 unplaced primary NW_001845051.1,DS483762.1,211000022280447 chrUn_DS483763v1 6546 unplaced primary NW_001845052.1,DS483763.1,211000022280640 chrUn_DS483767v1 6396 unplaced primary NW_001845056.1,DS483767.1,211000022279879 chrUn_DS483768v1 6294 unplaced primary NW_001845057.1,DS483768.1,211000022280236 chrUn_DS483769v1 6237 unplaced primary NW_001845058.1,DS483769.1,211000022279539 chrUn_DS483770v1 6193 unplaced primary NW_001845059.1,DS483770.1,211000022280519 chrUn_DS483772v1 6076 unplaced primary NW_001845061.1,DS483772.1,211000022279177 chrUn_DS483773v1 6062 unplaced primary NW_001845062.1,DS483773.1,211000022280046 chrUn_DS483774v1 6041 unplaced primary NW_001845063.1,DS483774.1,211000022280518 chrUn_DS483776v1 6000 unplaced primary NW_001845065.1,DS483776.1,211000022280545 chrUn_DS483780v1 5968 unplaced primary NW_001845069.1,DS483780.1,211000022280437 chrUn_DS483781v1 5952 unplaced primary NW_001845070.1,DS483781.1,211000022280655 chrUn_DS483782v1 5915 unplaced primary NW_001845071.1,DS483782.1,211000022279884 chrUn_DS483783v1 5891 unplaced primary NW_001845072.1,DS483783.1,211000022279147 chrUn_DS483785v1 5772 unplaced primary NW_001845074.1,DS483785.1,211000022280462 chrUn_DS483787v1 5698 unplaced primary NW_001845076.1,DS483787.1,211000022280472 chrUn_DS483792v1 5465 unplaced primary NW_001845081.1,DS483792.1,211000022279380 chrUn_DS483793v1 5463 unplaced primary NW_001845082.1,DS483793.1,211000022280517 chrUn_DS483796v1 5383 unplaced primary NW_001845085.1,DS483796.1,211000022280727 chrUn_DS483797v1 5360 unplaced primary NW_001845086.1,DS483797.1,211000022279257 chrUn_DS483798v1 5324 unplaced primary NW_001845087.1,DS483798.1,211000022280656 chrUn_DS483799v1 5323 unplaced primary NW_001845088.1,DS483799.1,211000022278556 chrUn_DS483800v1 5316 unplaced primary NW_001845089.1,DS483800.1,211000022280637 chrUn_DS483801v1 5281 unplaced primary NW_001845090.1,DS483801.1,211000022279634 chrUn_DS483804v1 5189 unplaced primary NW_001845093.1,DS483804.1,211000022279559 chrUn_DS483805v1 5182 unplaced primary NW_001845094.1,DS483805.1,211000022278960 chrUn_DS483806v1 5098 unplaced primary NW_001845095.1,DS483806.1,211000022280459 chrUn_DS483807v1 5061 unplaced primary NW_001845096.1,DS483807.1,211000022280720 chrUn_DS483808v1 5060 unplaced primary NW_001845097.1,DS483808.1,211000022278712 chrUn_DS483810v1 5026 unplaced primary NW_001845099.1,DS483810.1,211000022280583 chrUn_DS483811v1 5000 unplaced primary NW_001845100.1,DS483811.1,211000022280615 chrUn_DS483812v1 4996 unplaced primary NW_001845101.1,DS483812.1,211000022280461 chrUn_DS483813v1 4994 unplaced primary NW_001845102.1,DS483813.1,211000022280558 chrUn_DS483814v1 4986 unplaced primary NW_001845103.1,DS483814.1,211000022280087 chrUn_DS483815v1 4967 unplaced primary NW_001845104.1,DS483815.1,211000022279928 chrUn_DS483816v1 4939 unplaced primary NW_001845105.1,DS483816.1,211000022279913 chrUn_DS483817v1 4933 unplaced primary NW_001845106.1,DS483817.1,211000022280589 chrUn_DS483819v1 4903 unplaced primary NW_001845108.1,DS483819.1,211000022280445 chrUn_DS483820v1 4888 unplaced primary NW_001845109.1,DS483820.1,211000022279453 chrUn_DS483822v1 4865 unplaced primary NW_001845111.1,DS483822.1,211000022280233 chrUn_DS483824v1 4820 unplaced primary NW_001845113.1,DS483824.1,211000022280015 chrUn_DS483825v1 4815 unplaced primary NW_001845114.1,DS483825.1,211000022279449 chrUn_DS483828v1 4785 unplaced primary NW_001845117.1,DS483828.1,211000022280607 chrUn_DS483832v1 4705 unplaced primary NW_001845121.1,DS483832.1,211000022280618 chrUn_DS483833v1 4701 unplaced primary NW_001845122.1,DS483833.1,211000022280503 chrUn_DS483837v1 4608 unplaced primary NW_001845126.1,DS483837.1,211000022280050 chrUn_DS483839v1 4581 unplaced primary NW_001845128.1,DS483839.1,211000022280652 chrUn_DS483840v1 4573 unplaced primary NW_001845129.1,DS483840.1,211000022279344 chrUn_DS483841v1 4553 unplaced primary NW_001845130.1,DS483841.1,211000022279701 chrUn_DS483844v1 4471 unplaced primary NW_001845133.1,DS483844.1,211000022280457 chrUn_DS483845v1 4465 unplaced primary NW_001845134.1,DS483845.1,211000022278926 chrUn_DS483846v1 4452 unplaced primary NW_001845135.1,DS483846.1,211000022280743 chrUn_DS483848v1 4436 unplaced primary NW_001845137.1,DS483848.1,211000022279389 chrUn_DS483849v1 4400 unplaced primary NW_001845138.1,DS483849.1,211000022278765 chrUn_DS483853v1 4381 unplaced primary NW_001845142.1,DS483853.1,211000022279463 chrUn_DS483854v1 4378 unplaced primary NW_001845143.1,DS483854.1,211000022280128 chrUn_DS483855v1 4377 unplaced primary NW_001845144.1,DS483855.1,211000022279091 chrUn_DS483856v1 4370 unplaced primary NW_001845145.1,DS483856.1,211000022279396 chrUn_DS483858v1 4361 unplaced primary NW_001845147.1,DS483858.1,211000022279940 chrUn_DS483859v1 4336 unplaced primary NW_001845148.1,DS483859.1,211000022280516 chrUn_DS483861v1 4310 unplaced primary NW_001845150.1,DS483861.1,211000022280671 chrUn_DS483862v1 4310 unplaced primary NW_001845151.1,DS483862.1,211000022279887 chrUn_DS483863v1 4305 unplaced primary NW_001845152.1,DS483863.1,211000022280283 chrUn_DS483864v1 4295 unplaced primary NW_001845153.1,DS483864.1,211000022278723 chrUn_DS483865v1 4289 unplaced primary NW_001845154.1,DS483865.1,211000022280473 chrUn_DS483866v1 4273 unplaced primary NW_001845155.1,DS483866.1,211000022280202 chrUn_DS483867v1 4272 unplaced primary NW_001845156.1,DS483867.1,211000022279855 chrUn_DS483868v1 4256 unplaced primary NW_001845157.1,DS483868.1,211000022280068 chrUn_DS483870v1 4231 unplaced primary NW_001845159.1,DS483870.1,211000022280002 chrUn_DS483871v1 4225 unplaced primary NW_001845160.1,DS483871.1,211000022278966 chrUn_DS483872v1 4222 unplaced primary NW_001845161.1,DS483872.1,211000022279667 chrUn_DS483873v1 4222 unplaced primary NW_001845162.1,DS483873.1,211000022278089 chrUn_DS483874v1 4202 unplaced primary NW_001845163.1,DS483874.1,211000022280762 chrUn_DS483876v1 4188 unplaced primary NW_001845165.1,DS483876.1,211000022279052 chrUn_DS483877v1 4183 unplaced primary NW_001845166.1,DS483877.1,211000022278351 chrUn_DS483878v1 4182 unplaced primary NW_001845167.1,DS483878.1,211000022280508 chrUn_DS483879v1 4163 unplaced primary NW_001845168.1,DS483879.1,211000022278372 chrUn_DS483880v1 4150 unplaced primary NW_001845169.1,DS483880.1,211000022280653 chrUn_DS483881v1 4135 unplaced primary NW_001845170.1,DS483881.1,211000022280560 chrUn_DS483886v1 4081 unplaced primary NW_001845175.1,DS483886.1,211000022280098 chrUn_DS483891v1 4030 unplaced primary NW_001845180.1,DS483891.1,211000022280110 chrUn_DS483895v1 4006 unplaced primary NW_001845184.1,DS483895.1,211000022280448 chrUn_DS483896v1 3991 unplaced primary NW_001845185.1,DS483896.1,211000022280623 chrUn_DS483898v1 3970 unplaced primary NW_001845187.1,DS483898.1,211000022280446 chrUn_DS483899v1 3964 unplaced primary NW_001845188.1,DS483899.1,211000022280305 chrUn_DS483900v1 3960 unplaced primary NW_001845189.1,DS483900.1,211000022280684 chrUn_DS483901v1 3950 unplaced primary NW_001845190.1,DS483901.1,211000022278675 chrUn_DS483904v1 3932 unplaced primary NW_001845193.1,DS483904.1,211000022280032 chrUn_DS483906v1 3924 unplaced primary NW_001845195.1,DS483906.1,211000022278100 chrUn_DS483908v1 3913 unplaced primary NW_001845197.1,DS483908.1,211000022279372 chrUn_DS483910v1 3906 unplaced primary NW_001845199.1,DS483910.1,211000022280703 chrUn_DS483913v1 3871 unplaced primary NW_001845202.1,DS483913.1,211000022279750 chrUn_DS483914v1 3864 unplaced primary NW_001845203.1,DS483914.1,211000022278945 chrUn_DS483915v1 3858 unplaced primary NW_001845204.1,DS483915.1,211000022279675 chrUn_DS483918v1 3818 unplaced primary NW_001845207.1,DS483918.1,211000022280498 chrUn_DS483919v1 3807 unplaced primary NW_001845208.1,DS483919.1,211000022279243 chrUn_DS483920v1 3806 unplaced primary NW_001845209.1,DS483920.1,211000022279743 chrUn_DS483921v1 3806 unplaced primary NW_001845210.1,DS483921.1,211000022278195 chrUn_DS483925v1 3755 unplaced primary NW_001845214.1,DS483925.1,211000022280471 chrUn_DS483927v1 3737 unplaced primary NW_001845216.1,DS483927.1,211000022280551 chrUn_DS483929v1 3717 unplaced primary NW_001845218.1,DS483929.1,211000022280455 chrUn_DS483930v1 3716 unplaced primary NW_001845219.1,DS483930.1,211000022279477 chrUn_DS483933v1 3708 unplaced primary NW_001845222.1,DS483933.1,211000022278697 chrUn_DS483936v1 3681 unplaced primary NW_001845225.1,DS483936.1,211000022278602 chrUn_DS483937v1 3660 unplaced primary NW_001845226.1,DS483937.1,211000022280606 chrUn_DS483938v1 3650 unplaced primary NW_001845227.1,DS483938.1,211000022278392 chrUn_DS483939v1 3649 unplaced primary NW_001845228.1,DS483939.1,211000022279844 chrUn_DS483940v1 3648 unplaced primary NW_001845229.1,DS483940.1,211000022278611 chrUn_DS483941v1 3646 unplaced primary NW_001845230.1,DS483941.1,211000022280565 chrUn_DS483943v1 3638 unplaced primary NW_001845232.1,DS483943.1,211000022280463 chrUn_DS483944v1 3622 unplaced primary NW_001845233.1,DS483944.1,211000022279370 chrUn_DS483945v1 3622 unplaced primary NW_001845234.1,DS483945.1,211000022280026 chrUn_DS483947v1 3603 unplaced primary NW_001845236.1,DS483947.1,211000022280522 chrUn_DS483949v1 3593 unplaced primary NW_001845238.1,DS483949.1,211000022280562 chrUn_DS483951v1 3574 unplaced primary NW_001845240.1,DS483951.1,211000022280654 chrUn_DS483953v1 3557 unplaced primary NW_001845242.1,DS483953.1,211000022279961 chrUn_DS483954v1 3554 unplaced primary NW_001845243.1,DS483954.1,211000022280525 chrUn_DS483956v1 3553 unplaced primary NW_001845245.1,DS483956.1,211000022280127 chrUn_DS483957v1 3553 unplaced primary NW_001845246.1,DS483957.1,211000022278396 chrUn_DS483960v1 3527 unplaced primary NW_001845249.1,DS483960.1,211000022280692 chrUn_DS483961v1 3527 unplaced primary NW_001845250.1,DS483961.1,211000022279945 chrUn_DS483964v1 3519 unplaced primary NW_001845253.1,DS483964.1,211000022280156 chrUn_DS483965v1 3503 unplaced primary NW_001845254.1,DS483965.1,211000022279613 chrUn_DS483970v1 3490 unplaced primary NW_001845259.1,DS483970.1,211000022279229 chrUn_DS483972v1 3477 unplaced primary NW_001845261.1,DS483972.1,211000022278768 chrUn_DS483975v1 3466 unplaced primary NW_001845264.1,DS483975.1,211000022279812 chrUn_DS483976v1 3463 unplaced primary NW_001845265.1,DS483976.1,211000022278203 chrUn_DS483977v1 3458 unplaced primary NW_001845266.1,DS483977.1,211000022278312 chrUn_DS483979v1 3434 unplaced primary NW_001845268.1,DS483979.1,211000022279431 chrUn_DS483982v1 3402 unplaced primary NW_001845271.1,DS483982.1,211000022280533 chrUn_DS483983v1 3396 unplaced primary NW_001845272.1,DS483983.1,211000022280335 chrUn_DS483985v1 3389 unplaced primary NW_001845274.1,DS483985.1,211000022280566 chrUn_DS483986v1 3386 unplaced primary NW_001845275.1,DS483986.1,211000022280556 chrUn_DS483989v1 3373 unplaced primary NW_001845278.1,DS483989.1,211000022279877 chrUn_DS483992v1 3365 unplaced primary NW_001845281.1,DS483992.1,211000022280554 chrUn_DS483994v1 3348 unplaced primary NW_001845283.1,DS483994.1,211000022280295 chrUn_DS483998v1 3313 unplaced primary NW_001845287.1,DS483998.1,211000022280570 chrUn_DS483999v1 3308 unplaced primary NW_001845288.1,DS483999.1,211000022280595 chrUn_DS484000v1 3302 unplaced primary NW_001845289.1,DS484000.1,211000022280564 chrUn_DS484001v1 3299 unplaced primary NW_001845290.1,DS484001.1,211000022280255 chrUn_DS484003v1 3284 unplaced primary NW_001845292.1,DS484003.1,211000022279606 chrUn_DS484004v1 3277 unplaced primary NW_001845293.1,DS484004.1,211000022280105 chrUn_DS484006v1 3268 unplaced primary NW_001845295.1,DS484006.1,211000022280524 chrUn_DS484007v1 3262 unplaced primary NW_001845296.1,DS484007.1,211000022280440 chrUn_DS484009v1 3259 unplaced primary NW_001845298.1,DS484009.1,211000022280687 chrUn_DS484010v1 3259 unplaced primary NW_001845299.1,DS484010.1,211000022280480 chrUn_DS484013v1 3252 unplaced primary NW_001845302.1,DS484013.1,211000022280296 chrUn_DS484015v1 3234 unplaced primary NW_001845304.1,DS484015.1,211000022280115 chrUn_DS484017v1 3227 unplaced primary NW_001845306.1,DS484017.1,211000022279953 chrUn_DS484018v1 3223 unplaced primary NW_001845307.1,DS484018.1,211000022280588 chrUn_DS484020v1 3218 unplaced primary NW_001845309.1,DS484020.1,211000022279982 chrUn_DS484022v1 3209 unplaced primary NW_001845311.1,DS484022.1,211000022280008 chrUn_DS484025v1 3201 unplaced primary NW_001845314.1,DS484025.1,211000022279394 chrUn_DS484027v1 3197 unplaced primary NW_001845316.1,DS484027.1,211000022279265 chrUn_DS484028v1 3196 unplaced primary NW_001845317.1,DS484028.1,211000022279284 chrUn_DS484031v1 3190 unplaced primary NW_001845320.1,DS484031.1,211000022280557 chrUn_DS484036v1 3174 unplaced primary NW_001845325.1,DS484036.1,211000022280555 chrUn_DS484038v1 3171 unplaced primary NW_001845327.1,DS484038.1,211000022280456 chrUn_DS484039v1 3162 unplaced primary NW_001845328.1,DS484039.1,211000022278219 chrUn_DS484040v1 3159 unplaced primary NW_001845329.1,DS484040.1,211000022278438 chrUn_DS484041v1 3157 unplaced primary NW_001845330.1,DS484041.1,211000022279700 chrUn_DS484042v1 3156 unplaced primary NW_001845331.1,DS484042.1,211000022279868 chrUn_DS484044v1 3144 unplaced primary NW_001845333.1,DS484044.1,211000022280211 chrUn_DS484045v1 3129 unplaced primary NW_001845334.1,DS484045.1,211000022280467 chrUn_DS484047v1 3123 unplaced primary NW_001845336.1,DS484047.1,211000022279777 chrUn_DS484048v1 3120 unplaced primary NW_001845337.1,DS484048.1,211000022279169 chrUn_DS484050v1 3100 unplaced primary NW_001845339.1,DS484050.1,211000022278398 chrUn_DS484052v1 3089 unplaced primary NW_001845341.1,DS484052.1,211000022278280 chrUn_DS484053v1 3085 unplaced primary NW_001845342.1,DS484053.1,211000022280511 chrUn_DS484054v1 3080 unplaced primary NW_001845343.1,DS484054.1,211000022278785 chrUn_DS484055v1 3080 unplaced primary NW_001845344.1,DS484055.1,211000022280114 chrUn_DS484058v1 3073 unplaced primary NW_001845347.1,DS484058.1,211000022278164 chrUn_DS484059v1 3073 unplaced primary NW_001845348.1,DS484059.1,211000022279179 chrUn_DS484062v1 3058 unplaced primary NW_001845351.1,DS484062.1,211000022279784 chrUn_DS484064v1 3044 unplaced primary NW_001845353.1,DS484064.1,211000022280080 chrUn_DS484065v1 3043 unplaced primary NW_001845354.1,DS484065.1,211000022280261 chrUn_DS484066v1 3025 unplaced primary NW_001845355.1,DS484066.1,211000022280212 chrUn_DS484068v1 3013 unplaced primary NW_001845357.1,DS484068.1,211000022280577 chrUn_DS484069v1 3010 unplaced primary NW_001845358.1,DS484069.1,211000022278581 chrUn_DS484070v1 3009 unplaced primary NW_001845359.1,DS484070.1,211000022280093 chrUn_DS484073v1 2999 unplaced primary NW_001845362.1,DS484073.1,211000022278395 chrUn_DS484076v1 2991 unplaced primary NW_001845365.1,DS484076.1,211000022278744 chrUn_DS484077v1 2984 unplaced primary NW_001845366.1,DS484077.1,211000022278883 chrUn_DS484078v1 2982 unplaced primary NW_001845367.1,DS484078.1,211000022280086 chrUn_DS484079v1 2982 unplaced primary NW_001845368.1,DS484079.1,211000022280260 chrUn_DS484080v1 2971 unplaced primary NW_001845369.1,DS484080.1,211000022279837 chrUn_DS484083v1 2957 unplaced primary NW_001845372.1,DS484083.1,211000022279761 chrUn_DS484086v1 2943 unplaced primary NW_001845375.1,DS484086.1,211000022280035 chrUn_DS484087v1 2937 unplaced primary NW_001845376.1,DS484087.1,211000022279239 chrUn_DS484089v1 2928 unplaced primary NW_001845378.1,DS484089.1,211000022280037 chrUn_DS484090v1 2927 unplaced primary NW_001845379.1,DS484090.1,211000022280474 chrUn_DS484091v1 2926 unplaced primary NW_001845380.1,DS484091.1,211000022280316 chrUn_DS484092v1 2924 unplaced primary NW_001845381.1,DS484092.1,211000022280536 chrUn_DS484093v1 2922 unplaced primary NW_001845382.1,DS484093.1,211000022279442 chrUn_DS484095v1 2919 unplaced primary NW_001845384.1,DS484095.1,211000022280544 chrUn_DS484096v1 2916 unplaced primary NW_001845385.1,DS484096.1,211000022278554 chrUn_DS484097v1 2914 unplaced primary NW_001845386.1,DS484097.1,211000022280251 chrUn_DS484098v1 2911 unplaced primary NW_001845387.1,DS484098.1,211000022279488 chrUn_DS484100v1 2905 unplaced primary NW_001845389.1,DS484100.1,211000022278378 chrUn_DS484102v1 2903 unplaced primary NW_001845391.1,DS484102.1,211000022278952 chrUn_DS484104v1 2893 unplaced primary NW_001845393.1,DS484104.1,211000022280272 chrUn_DS484105v1 2889 unplaced primary NW_001845394.1,DS484105.1,211000022280010 chrUn_DS484106v1 2884 unplaced primary NW_001845395.1,DS484106.1,211000022279061 chrUn_DS484107v1 2882 unplaced primary NW_001845396.1,DS484107.1,211000022280205 chrUn_DS484108v1 2882 unplaced primary NW_001845397.1,DS484108.1,211000022280311 chrUn_DS484109v1 2882 unplaced primary NW_001845398.1,DS484109.1,211000022280012 chrUn_DS484111v1 2881 unplaced primary NW_001845400.1,DS484111.1,211000022279021 chrUn_DS484113v1 2876 unplaced primary NW_001845402.1,DS484113.1,211000022280610 chrUn_DS484116v1 2860 unplaced primary NW_001845405.1,DS484116.1,211000022280227 chrUn_DS484117v1 2860 unplaced primary NW_001845406.1,DS484117.1,211000022279867 chrUn_DS484118v1 2858 unplaced primary NW_001845407.1,DS484118.1,211000022279288 chrUn_DS484120v1 2855 unplaced primary NW_001845409.1,DS484120.1,211000022280333 chrUn_DS484122v1 2849 unplaced primary NW_001845411.1,DS484122.1,211000022278404 chrUn_DS484123v1 2848 unplaced primary NW_001845412.1,DS484123.1,211000022280436 chrUn_DS484134v1 2828 unplaced primary NW_001845423.1,DS484134.1,211000022280501 chrUn_DS484138v1 2822 unplaced primary NW_001845427.1,DS484138.1,211000022279964 chrUn_DS484139v1 2820 unplaced primary NW_001845428.1,DS484139.1,211000022278098 chrUn_DS484144v1 2811 unplaced primary NW_001845433.1,DS484144.1,211000022280469 chrUn_DS484145v1 2804 unplaced primary NW_001845434.1,DS484145.1,211000022280340 chrUn_DS484147v1 2796 unplaced primary NW_001845436.1,DS484147.1,211000022279948 chrUn_DS484148v1 2795 unplaced primary NW_001845437.1,DS484148.1,211000022279521 chrUn_DS484149v1 2795 unplaced primary NW_001845438.1,DS484149.1,211000022279416 chrUn_DS484151v1 2794 unplaced primary NW_001845440.1,DS484151.1,211000022280214 chrUn_DS484152v1 2793 unplaced primary NW_001845441.1,DS484152.1,211000022278975 chrUn_DS484153v1 2793 unplaced primary NW_001845442.1,DS484153.1,211000022279746 chrUn_DS484154v1 2791 unplaced primary NW_001845443.1,DS484154.1,211000022278923 chrUn_DS484155v1 2790 unplaced primary NW_001845444.1,DS484155.1,211000022279311 chrUn_DS484156v1 2788 unplaced primary NW_001845445.1,DS484156.1,211000022279623 chrUn_DS484157v1 2787 unplaced primary NW_001845446.1,DS484157.1,211000022279527 chrUn_DS484159v1 2784 unplaced primary NW_001845448.1,DS484159.1,211000022280171 chrUn_DS484160v1 2783 unplaced primary NW_001845449.1,DS484160.1,211000022278794 chrUn_DS484167v1 2745 unplaced primary NW_001845456.1,DS484167.1,211000022280497 chrUn_DS484168v1 2744 unplaced primary NW_001845457.1,DS484168.1,211000022278440 chrUn_DS484169v1 2736 unplaced primary NW_001845458.1,DS484169.1,211000022279562 chrUn_DS484170v1 2733 unplaced primary NW_001845459.1,DS484170.1,211000022278790 chrUn_DS484176v1 2708 unplaced primary NW_001845465.1,DS484176.1,211000022280707 chrUn_DS484177v1 2703 unplaced primary NW_001845466.1,DS484177.1,211000022279911 chrUn_DS484180v1 2697 unplaced primary NW_001845469.1,DS484180.1,211000022278421 chrUn_DS484183v1 2688 unplaced primary NW_001845472.1,DS484183.1,211000022279653 chrUn_DS484188v1 2670 unplaced primary NW_001845477.1,DS484188.1,211000022279157 chrUn_DS484189v1 2669 unplaced primary NW_001845478.1,DS484189.1,211000022279973 chrUn_DS484190v1 2668 unplaced primary NW_001845479.1,DS484190.1,211000022278546 chrUn_DS484191v1 2665 unplaced primary NW_001845480.1,DS484191.1,211000022278114 chrUn_DS484192v1 2664 unplaced primary NW_001845481.1,DS484192.1,211000022280108 chrUn_DS484193v1 2647 unplaced primary NW_001845482.1,DS484193.1,211000022279233 chrUn_DS484196v1 2644 unplaced primary NW_001845485.1,DS484196.1,211000022280284 chrUn_DS484202v1 2636 unplaced primary NW_001845491.1,DS484202.1,211000022278426 chrUn_DS484205v1 2629 unplaced primary NW_001845494.1,DS484205.1,211000022279602 chrUn_DS484206v1 2628 unplaced primary NW_001845495.1,DS484206.1,211000022280089 chrUn_DS484207v1 2626 unplaced primary NW_001845496.1,DS484207.1,211000022278937 chrUn_DS484209v1 2618 unplaced primary NW_001845498.1,DS484209.1,211000022280548 chrUn_DS484210v1 2617 unplaced primary NW_001845499.1,DS484210.1,211000022278732 chrUn_DS484212v1 2612 unplaced primary NW_001845501.1,DS484212.1,211000022280198 chrUn_DS484213v1 2611 unplaced primary NW_001845502.1,DS484213.1,211000022280137 chrUn_DS484217v1 2603 unplaced primary NW_001845506.1,DS484217.1,211000022280112 chrUn_DS484220v1 2588 unplaced primary NW_001845509.1,DS484220.1,211000022279003 chrUn_DS484221v1 2584 unplaced primary NW_001845510.1,DS484221.1,211000022280141 chrUn_DS484222v1 2583 unplaced primary NW_001845511.1,DS484222.1,211000022280535 chrUn_DS484224v1 2577 unplaced primary NW_001845513.1,DS484224.1,211000022280696 chrUn_DS484225v1 2577 unplaced primary NW_001845514.1,DS484225.1,211000022280520 chrUn_DS484226v1 2576 unplaced primary NW_001845515.1,DS484226.1,211000022278327 chrUn_DS484228v1 2575 unplaced primary NW_001845517.1,DS484228.1,211000022279190 chrUn_DS484229v1 2575 unplaced primary NW_001845518.1,DS484229.1,211000022278452 chrUn_DS484230v1 2575 unplaced primary NW_001845519.1,DS484230.1,211000022280443 chrUn_DS484231v1 2574 unplaced primary NW_001845520.1,DS484231.1,211000022279483 chrUn_DS484232v1 2570 unplaced primary NW_001845521.1,DS484232.1,211000022278738 chrUn_DS484234v1 2561 unplaced primary NW_001845523.1,DS484234.1,211000022280553 chrUn_DS484236v1 2556 unplaced primary NW_001845525.1,DS484236.1,211000022279513 chrUn_DS484238v1 2555 unplaced primary NW_001845527.1,DS484238.1,211000022279214 chrUn_DS484239v1 2549 unplaced primary NW_001845528.1,DS484239.1,211000022279191 chrUn_DS484241v1 2547 unplaced primary NW_001845530.1,DS484241.1,211000022279056 chrUn_DS484242v1 2541 unplaced primary NW_001845531.1,DS484242.1,211000022280218 chrUn_DS484243v1 2541 unplaced primary NW_001845532.1,DS484243.1,211000022278963 chrUn_DS484244v1 2536 unplaced primary NW_001845533.1,DS484244.1,211000022279373 chrUn_DS484246v1 2529 unplaced primary NW_001845535.1,DS484246.1,211000022279116 chrUn_DS484247v1 2529 unplaced primary NW_001845536.1,DS484247.1,211000022280485 chrUn_DS484251v1 2521 unplaced primary NW_001845540.1,DS484251.1,211000022278927 chrUn_DS484253v1 2520 unplaced primary NW_001845542.1,DS484253.1,211000022279573 chrUn_DS484254v1 2517 unplaced primary NW_001845543.1,DS484254.1,211000022279710 chrUn_DS484255v1 2516 unplaced primary NW_001845544.1,DS484255.1,211000022279898 chrUn_DS484256v1 2511 unplaced primary NW_001845545.1,DS484256.1,211000022280598 chrUn_DS484257v1 2511 unplaced primary NW_001845546.1,DS484257.1,211000022278282 chrUn_DS484258v1 2510 unplaced primary NW_001845547.1,DS484258.1,211000022279849 chrUn_DS484262v1 2491 unplaced primary NW_001845551.1,DS484262.1,211000022278740 chrUn_DS484263v1 2487 unplaced primary NW_001845552.1,DS484263.1,211000022279126 chrUn_DS484264v1 2479 unplaced primary NW_001845553.1,DS484264.1,211000022280033 chrUn_DS484267v1 2476 unplaced primary NW_001845556.1,DS484267.1,211000022279980 chrUn_DS484271v1 2470 unplaced primary NW_001845560.1,DS484271.1,211000022279866 chrUn_DS484274v1 2462 unplaced primary NW_001845563.1,DS484274.1,211000022279193 chrUn_DS484275v1 2451 unplaced primary NW_001845564.1,DS484275.1,211000022278664 chrUn_DS484276v1 2447 unplaced primary NW_001845565.1,DS484276.1,211000022279070 chrUn_DS484277v1 2442 unplaced primary NW_001845566.1,DS484277.1,211000022278493 chrUn_DS484279v1 2438 unplaced primary NW_001845568.1,DS484279.1,211000022279711 chrUn_DS484280v1 2438 unplaced primary NW_001845569.1,DS484280.1,211000022280492 chrUn_DS484281v1 2438 unplaced primary NW_001845570.1,DS484281.1,211000022279178 chrUn_DS484282v1 2435 unplaced primary NW_001845571.1,DS484282.1,211000022278858 chrUn_DS484283v1 2434 unplaced primary NW_001845572.1,DS484283.1,211000022279651 chrUn_DS484285v1 2431 unplaced primary NW_001845574.1,DS484285.1,211000022279850 chrUn_DS484286v1 2429 unplaced primary NW_001845575.1,DS484286.1,211000022279909 chrUn_DS484287v1 2428 unplaced primary NW_001845576.1,DS484287.1,211000022279780 chrUn_DS484289v1 2425 unplaced primary NW_001845578.1,DS484289.1,211000022280643 chrUn_DS484291v1 2421 unplaced primary NW_001845580.1,DS484291.1,211000022279436 chrUn_DS484292v1 2421 unplaced primary NW_001845581.1,DS484292.1,211000022280679 chrUn_DS484294v1 2419 unplaced primary NW_001845583.1,DS484294.1,211000022280626 chrUn_DS484296v1 2417 unplaced primary NW_001845585.1,DS484296.1,211000022280561 chrUn_DS484300v1 2400 unplaced primary NW_001845589.1,DS484300.1,211000022279960 chrUn_DS484301v1 2394 unplaced primary NW_001845590.1,DS484301.1,211000022279000 chrUn_DS484303v1 2390 unplaced primary NW_001845592.1,DS484303.1,211000022278507 chrUn_DS484304v1 2390 unplaced primary NW_001845593.1,DS484304.1,211000022278335 chrUn_DS484306v1 2385 unplaced primary NW_001845595.1,DS484306.1,211000022280144 chrUn_DS484307v1 2385 unplaced primary NW_001845596.1,DS484307.1,211000022279635 chrUn_DS484308v1 2385 unplaced primary NW_001845597.1,DS484308.1,211000022280302 chrUn_DS484309v1 2384 unplaced primary NW_001845598.1,DS484309.1,211000022278942 chrUn_DS484310v1 2383 unplaced primary NW_001845599.1,DS484310.1,211000022279122 chrUn_DS484311v1 2383 unplaced primary NW_001845600.1,DS484311.1,211000022278716 chrUn_DS484312v1 2382 unplaced primary NW_001845601.1,DS484312.1,211000022279247 chrUn_DS484313v1 2381 unplaced primary NW_001845602.1,DS484313.1,211000022278869 chrUn_DS484314v1 2381 unplaced primary NW_001845603.1,DS484314.1,211000022279810 chrUn_DS484315v1 2379 unplaced primary NW_001845604.1,DS484315.1,211000022279259 chrUn_DS484317v1 2378 unplaced primary NW_001845606.1,DS484317.1,211000022280747 chrUn_DS484318v1 2375 unplaced primary NW_001845607.1,DS484318.1,211000022280289 chrUn_DS484320v1 2369 unplaced primary NW_001845609.1,DS484320.1,211000022279197 chrUn_DS484321v1 2368 unplaced primary NW_001845610.1,DS484321.1,211000022280208 chrUn_DS484329v1 2354 unplaced primary NW_001845618.1,DS484329.1,211000022278387 chrUn_DS484331v1 2352 unplaced primary NW_001845620.1,DS484331.1,211000022279058 chrUn_DS484333v1 2344 unplaced primary NW_001845622.1,DS484333.1,211000022278934 chrUn_DS484335v1 2342 unplaced primary NW_001845624.1,DS484335.1,211000022280228 chrUn_DS484339v1 2330 unplaced primary NW_001845628.1,DS484339.1,211000022278220 chrUn_DS484340v1 2328 unplaced primary NW_001845629.1,DS484340.1,211000022279612 chrUn_DS484342v1 2326 unplaced primary NW_001845631.1,DS484342.1,211000022279966 chrUn_DS484343v1 2325 unplaced primary NW_001845632.1,DS484343.1,211000022280058 chrUn_DS484348v1 2308 unplaced primary NW_001845637.1,DS484348.1,211000022279787 chrUn_DS484350v1 2304 unplaced primary NW_001845639.1,DS484350.1,211000022278536 chrUn_DS484353v1 2295 unplaced primary NW_001845642.1,DS484353.1,211000022280580 chrUn_DS484355v1 2291 unplaced primary NW_001845644.1,DS484355.1,211000022279011 chrUn_DS484363v1 2270 unplaced primary NW_001845652.1,DS484363.1,211000022280698 chrUn_DS484366v1 2266 unplaced primary NW_001845655.1,DS484366.1,211000022278178 chrUn_DS484369v1 2253 unplaced primary NW_001845658.1,DS484369.1,211000022278860 chrUn_DS484370v1 2248 unplaced primary NW_001845659.1,DS484370.1,211000022279479 chrUn_DS484375v1 2234 unplaced primary NW_001845664.1,DS484375.1,211000022280568 chrUn_DS484378v1 2232 unplaced primary NW_001845667.1,DS484378.1,211000022279949 chrUn_DS484380v1 2227 unplaced primary NW_001845669.1,DS484380.1,211000022278953 chrUn_DS484383v1 2221 unplaced primary NW_001845672.1,DS484383.1,211000022278672 chrUn_DS484385v1 2217 unplaced primary NW_001845674.1,DS484385.1,211000022279101 chrUn_DS484386v1 2216 unplaced primary NW_001845675.1,DS484386.1,211000022280621 chrUn_DS484389v1 2207 unplaced primary NW_001845678.1,DS484389.1,211000022279929 chrUn_DS484391v1 2205 unplaced primary NW_001845680.1,DS484391.1,211000022280599 chrUn_DS484394v1 2200 unplaced primary NW_001845683.1,DS484394.1,211000022278888 chrUn_DS484395v1 2198 unplaced primary NW_001845684.1,DS484395.1,211000022280153 chrUn_DS484396v1 2198 unplaced primary NW_001845685.1,DS484396.1,211000022279118 chrUn_DS484400v1 2190 unplaced primary NW_001845689.1,DS484400.1,211000022279039 chrUn_DS484403v1 2187 unplaced primary NW_001845692.1,DS484403.1,211000022279476 chrUn_DS484404v1 2185 unplaced primary NW_001845693.1,DS484404.1,211000022278652 chrUn_DS484407v1 2176 unplaced primary NW_001845696.1,DS484407.1,211000022278205 chrUn_DS484408v1 2173 unplaced primary NW_001845697.1,DS484408.1,211000022280223 chrUn_DS484412v1 2161 unplaced primary NW_001845701.1,DS484412.1,211000022280133 chrUn_DS484414v1 2157 unplaced primary NW_001845703.1,DS484414.1,211000022280500 chrUn_DS484421v1 2129 unplaced primary NW_001845710.1,DS484421.1,211000022280176 chrUn_DS484424v1 2124 unplaced primary NW_001845713.1,DS484424.1,211000022280135 chrUn_DS484425v1 2124 unplaced primary NW_001845714.1,DS484425.1,211000022279663 chrUn_DS484426v1 2119 unplaced primary NW_001845715.1,DS484426.1,211000022280631 chrUn_DS484427v1 2117 unplaced primary NW_001845716.1,DS484427.1,211000022279756 chrUn_DS484432v1 2112 unplaced primary NW_001845721.1,DS484432.1,211000022280617 chrUn_DS484434v1 2108 unplaced primary NW_001845723.1,DS484434.1,211000022280070 chrUn_DS484435v1 2105 unplaced primary NW_001845724.1,DS484435.1,211000022279470 chrUn_DS484436v1 2105 unplaced primary NW_001845725.1,DS484436.1,211000022278968 chrUn_DS484437v1 2103 unplaced primary NW_001845726.1,DS484437.1,211000022279310 chrUn_DS484438v1 2102 unplaced primary NW_001845727.1,DS484438.1,211000022279807 chrUn_DS484443v1 2094 unplaced primary NW_001845732.1,DS484443.1,211000022278874 chrUn_DS484445v1 2092 unplaced primary NW_001845734.1,DS484445.1,211000022279044 chrUn_DS484446v1 2090 unplaced primary NW_001845735.1,DS484446.1,211000022278206 chrUn_DS484448v1 2088 unplaced primary NW_001845737.1,DS484448.1,211000022278138 chrUn_DS484449v1 2087 unplaced primary NW_001845738.1,DS484449.1,211000022279804 chrUn_DS484452v1 2086 unplaced primary NW_001845741.1,DS484452.1,211000022278522 chrUn_DS484454v1 2084 unplaced primary NW_001845743.1,DS484454.1,211000022278711 chrUn_DS484456v1 2081 unplaced primary NW_001845745.1,DS484456.1,211000022278919 chrUn_DS484458v1 2079 unplaced primary NW_001845747.1,DS484458.1,211000022279942 chrUn_DS484460v1 2076 unplaced primary NW_001845749.1,DS484460.1,211000022278216 chrUn_DS484463v1 2064 unplaced primary NW_001845752.1,DS484463.1,211000022279641 chrUn_DS484464v1 2063 unplaced primary NW_001845753.1,DS484464.1,211000022280294 chrUn_DS484466v1 2062 unplaced primary NW_001845755.1,DS484466.1,211000022280143 chrUn_DS484467v1 2060 unplaced primary NW_001845756.1,DS484467.1,211000022279517 chrUn_DS484469v1 2060 unplaced primary NW_001845758.1,DS484469.1,211000022279096 chrUn_DS484470v1 2059 unplaced primary NW_001845759.1,DS484470.1,211000022278506 chrUn_DS484471v1 2050 unplaced primary NW_001845760.1,DS484471.1,211000022279733 chrUn_DS484472v1 2046 unplaced primary NW_001845761.1,DS484472.1,211000022279376 chrUn_DS484475v1 2043 unplaced primary NW_001845764.1,DS484475.1,211000022278439 chrUn_DS484478v1 2033 unplaced primary NW_001845767.1,DS484478.1,211000022278780 chrUn_DS484479v1 2033 unplaced primary NW_001845768.1,DS484479.1,211000022278922 chrUn_DS484480v1 2030 unplaced primary NW_001845769.1,DS484480.1,211000022279198 chrUn_DS484481v1 2027 unplaced primary NW_001845770.1,DS484481.1,211000022278707 chrUn_DS484484v1 2020 unplaced primary NW_001845773.1,DS484484.1,211000022278047 chrUn_DS484485v1 2017 unplaced primary NW_001845774.1,DS484485.1,211000022278284 chrUn_DS484486v1 2014 unplaced primary NW_001845775.1,DS484486.1,211000022280151 chrUn_DS484487v1 2010 unplaced primary NW_001845776.1,DS484487.1,211000022279237 chrUn_DS484489v1 2008 unplaced primary NW_001845778.1,DS484489.1,211000022278120 chrUn_DS484490v1 2006 unplaced primary NW_001845779.1,DS484490.1,211000022278254 chrUn_DS484491v1 2006 unplaced primary NW_001845780.1,DS484491.1,211000022280192 chrUn_DS484493v1 2005 unplaced primary NW_001845782.1,DS484493.1,211000022278589 chrUn_DS484496v1 1998 unplaced primary NW_001845785.1,DS484496.1,211000022278362 chrUn_DS484498v1 1998 unplaced primary NW_001845787.1,DS484498.1,211000022279162 chrUn_DS484499v1 1995 unplaced primary NW_001845788.1,DS484499.1,211000022279654 chrUn_DS484501v1 1990 unplaced primary NW_001845790.1,DS484501.1,211000022279130 chrUn_DS484502v1 1990 unplaced primary NW_001845791.1,DS484502.1,211000022279820 chrUn_DS484503v1 1988 unplaced primary NW_001845792.1,DS484503.1,211000022279712 chrUn_DS484505v1 1986 unplaced primary NW_001845794.1,DS484505.1,211000022278515 chrUn_DS484508v1 1976 unplaced primary NW_001845797.1,DS484508.1,211000022278982 chrUn_DS484509v1 1976 unplaced primary NW_001845798.1,DS484509.1,211000022279851 chrUn_DS484510v1 1975 unplaced primary NW_001845799.1,DS484510.1,211000022279282 chrUn_DS484511v1 1974 unplaced primary NW_001845800.1,DS484511.1,211000022278271 chrUn_DS484513v1 1966 unplaced primary NW_001845802.1,DS484513.1,211000022279889 chrUn_DS484514v1 1966 unplaced primary NW_001845803.1,DS484514.1,211000022279217 chrUn_DS484515v1 1966 unplaced primary NW_001845804.1,DS484515.1,211000022278678 chrUn_DS484520v1 1962 unplaced primary NW_001845809.1,DS484520.1,211000022279571 chrUn_DS484521v1 1962 unplaced primary NW_001845810.1,DS484521.1,211000022280269 chrUn_DS484522v1 1962 unplaced primary NW_001845811.1,DS484522.1,211000022278528 chrUn_DS484524v1 1961 unplaced primary NW_001845813.1,DS484524.1,211000022279628 chrUn_DS484525v1 1961 unplaced primary NW_001845814.1,DS484525.1,211000022280195 chrUn_DS484527v1 1956 unplaced primary NW_001845816.1,DS484527.1,211000022278211 chrUn_DS484528v1 1947 unplaced primary NW_001845817.1,DS484528.1,211000022279900 chrUn_DS484532v1 1945 unplaced primary NW_001845821.1,DS484532.1,211000022278446 chrUn_DS484534v1 1943 unplaced primary NW_001845823.1,DS484534.1,211000022280028 chrUn_DS484539v1 1936 unplaced primary NW_001845828.1,DS484539.1,211000022280605 chrUn_DS484542v1 1933 unplaced primary NW_001845831.1,DS484542.1,211000022279228 chrUn_DS484543v1 1931 unplaced primary NW_001845832.1,DS484543.1,211000022280301 chrUn_DS484544v1 1929 unplaced primary NW_001845833.1,DS484544.1,211000022279627 chrUn_DS484546v1 1928 unplaced primary NW_001845835.1,DS484546.1,211000022278304 chrUn_DS484548v1 1926 unplaced primary NW_001845837.1,DS484548.1,211000022278406 chrUn_DS484549v1 1926 unplaced primary NW_001845838.1,DS484549.1,211000022278890 chrUn_DS484550v1 1924 unplaced primary NW_001845839.1,DS484550.1,211000022279366 chrUn_DS484553v1 1917 unplaced primary NW_001845842.1,DS484553.1,211000022279657 chrUn_DS484557v1 1907 unplaced primary NW_001845846.1,DS484557.1,211000022279969 chrUn_DS484559v1 1905 unplaced primary NW_001845848.1,DS484559.1,211000022278929 chrUn_DS484561v1 1903 unplaced primary NW_001845850.1,DS484561.1,211000022279285 chrUn_DS484565v1 1901 unplaced primary NW_001845854.1,DS484565.1,211000022279473 chrUn_DS484566v1 1900 unplaced primary NW_001845855.1,DS484566.1,211000022279158 chrUn_DS484567v1 1900 unplaced primary NW_001845856.1,DS484567.1,211000022278435 chrUn_DS484571v1 1893 unplaced primary NW_001845860.1,DS484571.1,211000022278274 chrUn_DS484573v1 1890 unplaced primary NW_001845862.1,DS484573.1,211000022280293 chrUn_DS484577v1 1882 unplaced primary NW_001845866.1,DS484577.1,211000022279029 chrUn_DS484578v1 1872 unplaced primary NW_001845867.1,DS484578.1,211000022278988 chrUn_DS484579v1 1872 unplaced primary NW_001845868.1,DS484579.1,211000022279199 chrUn_DS484581v1 1870 unplaced primary NW_001845870.1,DS484581.1,211000022280347 chrUn_DS484584v1 1869 unplaced primary NW_001845873.1,DS484584.1,211000022279921 chrUn_DS484588v1 1863 unplaced primary NW_001845877.1,DS484588.1,211000022279538 chrUn_DS484591v1 1854 unplaced primary NW_001845880.1,DS484591.1,211000022279574 chrUn_DS484592v1 1851 unplaced primary NW_001845881.1,DS484592.1,211000022280344 chrUn_DS484593v1 1849 unplaced primary NW_001845882.1,DS484593.1,211000022279139 chrUn_DS484595v1 1843 unplaced primary NW_001845884.1,DS484595.1,211000022279192 chrUn_DS484601v1 1832 unplaced primary NW_001845890.1,DS484601.1,211000022279097 chrUn_DS484602v1 1832 unplaced primary NW_001845891.1,DS484602.1,211000022280220 chrUn_DS484606v1 1826 unplaced primary NW_001845895.1,DS484606.1,211000022279002 chrUn_DS484607v1 1819 unplaced primary NW_001845896.1,DS484607.1,211000022279971 chrUn_DS484614v1 1806 unplaced primary NW_001845903.1,DS484614.1,211000022279745 chrUn_DS484616v1 1802 unplaced primary NW_001845905.1,DS484616.1,211000022280320 chrUn_DS484617v1 1801 unplaced primary NW_001845906.1,DS484617.1,211000022280326 chrUn_DS484619v1 1800 unplaced primary NW_001845908.1,DS484619.1,211000022279633 chrUn_DS484621v1 1797 unplaced primary NW_001845910.1,DS484621.1,211000022280161 chrUn_DS484629v1 1785 unplaced primary NW_001845918.1,DS484629.1,211000022279121 chrUn_DS484630v1 1776 unplaced primary NW_001845919.1,DS484630.1,211000022279858 chrUn_DS484632v1 1775 unplaced primary NW_001845921.1,DS484632.1,211000022279230 chrUn_DS484635v1 1770 unplaced primary NW_001845924.1,DS484635.1,211000022279481 chrUn_DS484639v1 1761 unplaced primary NW_001845928.1,DS484639.1,211000022279208 chrUn_DS484642v1 1754 unplaced primary NW_001845931.1,DS484642.1,211000022279049 chrUn_DS484646v1 1747 unplaced primary NW_001845935.1,DS484646.1,211000022279159 chrUn_DS484649v1 1738 unplaced primary NW_001845938.1,DS484649.1,211000022280298 chrUn_DS484651v1 1734 unplaced primary NW_001845940.1,DS484651.1,211000022279337 chrUn_DS484652v1 1733 unplaced primary NW_001845941.1,DS484652.1,211000022280700 chrUn_DS484653v1 1732 unplaced primary NW_001845942.1,DS484653.1,211000022278388 chrUn_DS484654v1 1728 unplaced primary NW_001845943.1,DS484654.1,211000022278992 chrUn_DS484656v1 1724 unplaced primary NW_001845945.1,DS484656.1,211000022279931 chrUn_DS484658v1 1719 unplaced primary NW_001845947.1,DS484658.1,211000022279450 chrUn_DS484659v1 1719 unplaced primary NW_001845948.1,DS484659.1,211000022278559 chrUn_DS484661v1 1716 unplaced primary NW_001845950.1,DS484661.1,211000022280160 chrUn_DS484662v1 1715 unplaced primary NW_001845951.1,DS484662.1,211000022280247 chrUn_DS484663v1 1714 unplaced primary NW_001845952.1,DS484663.1,211000022278132 chrUn_DS484667v1 1710 unplaced primary NW_001845956.1,DS484667.1,211000022278306 chrUn_DS484671v1 1703 unplaced primary NW_001845960.1,DS484671.1,211000022279896 chrUn_DS484673v1 1696 unplaced primary NW_001845962.1,DS484673.1,211000022279575 chrUn_DS484678v1 1685 unplaced primary NW_001845967.1,DS484678.1,211000022279490 chrUn_DS484685v1 1675 unplaced primary NW_001845974.1,DS484685.1,211000022279970 chrUn_DS484686v1 1667 unplaced primary NW_001845975.1,DS484686.1,211000022279788 chrUn_DS484689v1 1650 unplaced primary NW_001845978.1,DS484689.1,211000022278224 chrUn_DS484692v1 1643 unplaced primary NW_001845981.1,DS484692.1,211000022279934 chrUn_DS484693v1 1641 unplaced primary NW_001845982.1,DS484693.1,211000022280074 chrUn_DS484699v1 1629 unplaced primary NW_001845988.1,DS484699.1,211000022280315 chrUn_DS484700v1 1625 unplaced primary NW_001845989.1,DS484700.1,211000022280226 chrUn_DS484707v1 1614 unplaced primary NW_001845996.1,DS484707.1,211000022278298 chrUn_DS484709v1 1611 unplaced primary NW_001845998.1,DS484709.1,211000022278979 chrUn_DS484710v1 1610 unplaced primary NW_001845999.1,DS484710.1,211000022278754 chrUn_DS484712v1 1610 unplaced primary NW_001846001.1,DS484712.1,211000022279839 chrUn_DS484713v1 1608 unplaced primary NW_001846002.1,DS484713.1,211000022278969 chrUn_DS484714v1 1597 unplaced primary NW_001846003.1,DS484714.1,211000022280297 chrUn_DS484716v1 1594 unplaced primary NW_001846005.1,DS484716.1,211000022278376 chrUn_DS484718v1 1586 unplaced primary NW_001846007.1,DS484718.1,211000022280131 chrUn_DS484720v1 1586 unplaced primary NW_001846009.1,DS484720.1,211000022278525 chrUn_DS484721v1 1581 unplaced primary NW_001846010.1,DS484721.1,211000022279040 chrUn_DS484722v1 1577 unplaced primary NW_001846011.1,DS484722.1,211000022279691 chrUn_DS484726v1 1571 unplaced primary NW_001846015.1,DS484726.1,211000022278176 chrUn_DS484727v1 1567 unplaced primary NW_001846016.1,DS484727.1,211000022278597 chrUn_DS484728v1 1566 unplaced primary NW_001846017.1,DS484728.1,211000022278866 chrUn_DS484729v1 1560 unplaced primary NW_001846018.1,DS484729.1,211000022280292 chrUn_DS484734v1 1555 unplaced primary NW_001846023.1,DS484734.1,211000022280196 chrUn_DS484735v1 1553 unplaced primary NW_001846024.1,DS484735.1,211000022280694 chrUn_DS484736v1 1552 unplaced primary NW_001846025.1,DS484736.1,211000022278334 chrUn_DS484738v1 1550 unplaced primary NW_001846027.1,DS484738.1,211000022278891 chrUn_DS484739v1 1549 unplaced primary NW_001846028.1,DS484739.1,211000022278521 chrUn_DS484742v1 1543 unplaced primary NW_001846031.1,DS484742.1,211000022279842 chrUn_DS484746v1 1540 unplaced primary NW_001846035.1,DS484746.1,211000022278244 chrUn_DS484748v1 1538 unplaced primary NW_001846037.1,DS484748.1,211000022279246 chrUn_DS484750v1 1533 unplaced primary NW_001846039.1,DS484750.1,211000022280159 chrUn_DS484751v1 1533 unplaced primary NW_001846040.1,DS484751.1,211000022278451 chrUn_DS484752v1 1532 unplaced primary NW_001846041.1,DS484752.1,211000022279671 chrUn_DS484754v1 1527 unplaced primary NW_001846043.1,DS484754.1,211000022280325 chrUn_DS484756v1 1525 unplaced primary NW_001846045.1,DS484756.1,211000022278307 chrUn_DS484760v1 1521 unplaced primary NW_001846049.1,DS484760.1,211000022278947 chrUn_DS484762v1 1520 unplaced primary NW_001846051.1,DS484762.1,211000022280221 chrUn_DS484764v1 1518 unplaced primary NW_001846053.1,DS484764.1,211000022278733 chrUn_DS484769v1 1508 unplaced primary NW_001846058.1,DS484769.1,211000022278210 chrUn_DS484770v1 1504 unplaced primary NW_001846059.1,DS484770.1,211000022278182 chrUn_DS484771v1 1504 unplaced primary NW_001846060.1,DS484771.1,211000022278786 chrUn_DS484772v1 1502 unplaced primary NW_001846061.1,DS484772.1,211000022278594 chrUn_DS484773v1 1494 unplaced primary NW_001846062.1,DS484773.1,211000022280102 chrUn_DS484774v1 1492 unplaced primary NW_001846063.1,DS484774.1,211000022279619 chrUn_DS484776v1 1490 unplaced primary NW_001846065.1,DS484776.1,211000022278721 chrUn_DS484779v1 1487 unplaced primary NW_001846068.1,DS484779.1,211000022279540 chrUn_DS484780v1 1487 unplaced primary NW_001846069.1,DS484780.1,211000022280338 chrUn_DS484782v1 1484 unplaced primary NW_001846071.1,DS484782.1,211000022279207 chrUn_DS484787v1 1475 unplaced primary NW_001846076.1,DS484787.1,211000022278456 chrUn_DS484789v1 1473 unplaced primary NW_001846078.1,DS484789.1,211000022280031 chrUn_DS484792v1 1471 unplaced primary NW_001846081.1,DS484792.1,211000022280235 chrUn_DS484796v1 1468 unplaced primary NW_001846085.1,DS484796.1,211000022279152 chrUn_DS484797v1 1467 unplaced primary NW_001846086.1,DS484797.1,211000022279904 chrUn_DS484798v1 1466 unplaced primary NW_001846087.1,DS484798.1,211000022278550 chrUn_DS484799v1 1464 unplaced primary NW_001846088.1,DS484799.1,211000022279696 chrUn_DS484802v1 1462 unplaced primary NW_001846091.1,DS484802.1,211000022279664 chrUn_DS484804v1 1461 unplaced primary NW_001846093.1,DS484804.1,211000022279509 chrUn_DS484806v1 1458 unplaced primary NW_001846095.1,DS484806.1,211000022279204 chrUn_DS484812v1 1451 unplaced primary NW_001846101.1,DS484812.1,211000022279793 chrUn_DS484815v1 1446 unplaced primary NW_001846104.1,DS484815.1,211000022279875 chrUn_DS484816v1 1446 unplaced primary NW_001846105.1,DS484816.1,211000022278286 chrUn_DS484817v1 1445 unplaced primary NW_001846106.1,DS484817.1,211000022279522 chrUn_DS484822v1 1436 unplaced primary NW_001846111.1,DS484822.1,211000022278262 chrUn_DS484825v1 1432 unplaced primary NW_001846114.1,DS484825.1,211000022278568 chrUn_DS484827v1 1432 unplaced primary NW_001846116.1,DS484827.1,211000022278139 chrUn_DS484828v1 1430 unplaced primary NW_001846117.1,DS484828.1,211000022279748 chrUn_DS484831v1 1429 unplaced primary NW_001846120.1,DS484831.1,211000022279600 chrUn_DS484834v1 1424 unplaced primary NW_001846123.1,DS484834.1,211000022279749 chrUn_DS484836v1 1424 unplaced primary NW_001846125.1,DS484836.1,211000022280009 chrUn_DS484838v1 1422 unplaced primary NW_001846127.1,DS484838.1,211000022279507 chrUn_DS484841v1 1416 unplaced primary NW_001846130.1,DS484841.1,211000022278366 chrUn_DS484842v1 1416 unplaced primary NW_001846131.1,DS484842.1,211000022278420 chrUn_DS484843v1 1416 unplaced primary NW_001846132.1,DS484843.1,211000022278558 chrUn_DS484844v1 1415 unplaced primary NW_001846133.1,DS484844.1,211000022278548 chrUn_DS484846v1 1412 unplaced primary NW_001846135.1,DS484846.1,211000022278949 chrUn_DS484847v1 1411 unplaced primary NW_001846136.1,DS484847.1,211000022279464 chrUn_DS484848v1 1410 unplaced primary NW_001846137.1,DS484848.1,211000022280706 chrUn_DS484851v1 1408 unplaced primary NW_001846140.1,DS484851.1,211000022279454 chrUn_DS484852v1 1407 unplaced primary NW_001846141.1,DS484852.1,211000022279529 chrUn_DS484853v1 1406 unplaced primary NW_001846142.1,DS484853.1,211000022280336 chrUn_DS484855v1 1404 unplaced primary NW_001846144.1,DS484855.1,211000022278167 chrUn_DS484861v1 1395 unplaced primary NW_001846150.1,DS484861.1,211000022278038 chrUn_DS484862v1 1394 unplaced primary NW_001846151.1,DS484862.1,211000022280322 chrUn_DS484865v1 1391 unplaced primary NW_001846154.1,DS484865.1,211000022280644 chrUn_DS484866v1 1391 unplaced primary NW_001846155.1,DS484866.1,211000022278593 chrUn_DS484869v1 1391 unplaced primary NW_001846158.1,DS484869.1,211000022279694 chrUn_DS484870v1 1386 unplaced primary NW_001846159.1,DS484870.1,211000022280346 chrUn_DS484872v1 1385 unplaced primary NW_001846161.1,DS484872.1,211000022280676 chrUn_DS484874v1 1384 unplaced primary NW_001846163.1,DS484874.1,211000022279737 chrUn_DS484878v1 1381 unplaced primary NW_001846167.1,DS484878.1,211000022279890 chrUn_DS484881v1 1380 unplaced primary NW_001846170.1,DS484881.1,211000022278256 chrUn_DS484882v1 1379 unplaced primary NW_001846171.1,DS484882.1,211000022279593 chrUn_DS484884v1 1378 unplaced primary NW_001846173.1,DS484884.1,211000022278676 chrUn_DS484886v1 1377 unplaced primary NW_001846175.1,DS484886.1,211000022279393 chrUn_DS484887v1 1377 unplaced primary NW_001846176.1,DS484887.1,211000022280181 chrUn_DS484888v1 1377 unplaced primary NW_001846177.1,DS484888.1,211000022280071 chrUn_DS484889v1 1377 unplaced primary NW_001846178.1,DS484889.1,211000022279433 chrUn_DS484894v1 1375 unplaced primary NW_001846183.1,DS484894.1,211000022279371 chrUn_DS484895v1 1374 unplaced primary NW_001846184.1,DS484895.1,211000022279023 chrUn_DS484896v1 1374 unplaced primary NW_001846185.1,DS484896.1,211000022278575 chrUn_DS484897v1 1373 unplaced primary NW_001846186.1,DS484897.1,211000022278689 chrUn_DS484898v1 1371 unplaced primary NW_001846187.1,DS484898.1,211000022280341 chrUn_DS484899v1 1369 unplaced primary NW_001846188.1,DS484899.1,211000022279324 chrUn_DS484901v1 1368 unplaced primary NW_001846190.1,DS484901.1,211000022280030 chrUn_DS484904v1 1366 unplaced primary NW_001846193.1,DS484904.1,211000022278413 chrUn_DS484910v1 1356 unplaced primary NW_001846199.1,DS484910.1,211000022279365 chrUn_DS484916v1 1352 unplaced primary NW_001846205.1,DS484916.1,211000022279100 chrUn_DS484917v1 1351 unplaced primary NW_001846206.1,DS484917.1,211000022280327 chrUn_DS484919v1 1347 unplaced primary NW_001846208.1,DS484919.1,211000022279415 chrUn_DS484920v1 1347 unplaced primary NW_001846209.1,DS484920.1,211000022278757 chrUn_DS484921v1 1346 unplaced primary NW_001846210.1,DS484921.1,211000022278157 chrUn_DS484922v1 1344 unplaced primary NW_001846211.1,DS484922.1,211000022278793 chrUn_DS484923v1 1343 unplaced primary NW_001846212.1,DS484923.1,211000022278127 chrUn_DS484926v1 1340 unplaced primary NW_001846215.1,DS484926.1,211000022280343 chrUn_DS484927v1 1340 unplaced primary NW_001846216.1,DS484927.1,211000022280162 chrUn_DS484929v1 1339 unplaced primary NW_001846218.1,DS484929.1,211000022279421 chrUn_DS484930v1 1339 unplaced primary NW_001846219.1,DS484930.1,211000022280206 chrUn_DS484932v1 1337 unplaced primary NW_001846221.1,DS484932.1,211000022279871 chrUn_DS484933v1 1337 unplaced primary NW_001846222.1,DS484933.1,211000022278212 chrUn_DS484938v1 1334 unplaced primary NW_001846227.1,DS484938.1,211000022278151 chrUn_DS484940v1 1333 unplaced primary NW_001846229.1,DS484940.1,211000022280140 chrUn_DS484941v1 1333 unplaced primary NW_001846230.1,DS484941.1,211000022279274 chrUn_DS484943v1 1332 unplaced primary NW_001846232.1,DS484943.1,211000022279685 chrUn_DS484944v1 1330 unplaced primary NW_001846233.1,DS484944.1,211000022278144 chrUn_DS484948v1 1328 unplaced primary NW_001846237.1,DS484948.1,211000022278865 chrUn_DS484954v1 1323 unplaced primary NW_001846243.1,DS484954.1,211000022279516 chrUn_DS484960v1 1316 unplaced primary NW_001846249.1,DS484960.1,211000022279106 chrUn_DS484962v1 1315 unplaced primary NW_001846251.1,DS484962.1,211000022279343 chrUn_DS484964v1 1315 unplaced primary NW_001846253.1,DS484964.1,211000022278194 chrUn_DS484967v1 1311 unplaced primary NW_001846256.1,DS484967.1,211000022279362 chrUn_DS484972v1 1310 unplaced primary NW_001846261.1,DS484972.1,211000022278204 chrUn_DS484976v1 1308 unplaced primary NW_001846265.1,DS484976.1,211000022278714 chrUn_DS484979v1 1304 unplaced primary NW_001846268.1,DS484979.1,211000022278899 chrUn_DS484982v1 1304 unplaced primary NW_001846271.1,DS484982.1,211000022279143 chrUn_DS484984v1 1304 unplaced primary NW_001846273.1,DS484984.1,211000022279354 chrUn_DS484985v1 1303 unplaced primary NW_001846274.1,DS484985.1,211000022278894 chrUn_DS484987v1 1302 unplaced primary NW_001846276.1,DS484987.1,211000022278915 chrUn_DS484988v1 1301 unplaced primary NW_001846277.1,DS484988.1,211000022278408 chrUn_DS484991v1 1299 unplaced primary NW_001846280.1,DS484991.1,211000022279048 chrUn_DS484993v1 1297 unplaced primary NW_001846282.1,DS484993.1,211000022278574 chrUn_DS484998v1 1294 unplaced primary NW_001846287.1,DS484998.1,211000022279699 chrUn_DS484999v1 1294 unplaced primary NW_001846288.1,DS484999.1,211000022278735 chrUn_DS485000v1 1293 unplaced primary NW_001846289.1,DS485000.1,211000022278962 chrUn_DS485002v1 1291 unplaced primary NW_001846291.1,DS485002.1,211000022280191 chrUn_DS485004v1 1290 unplaced primary NW_001846293.1,DS485004.1,211000022279723 chrUn_DS485005v1 1289 unplaced primary NW_001846294.1,DS485005.1,211000022279087 chrUn_DS485007v1 1287 unplaced primary NW_001846296.1,DS485007.1,211000022279318 chrUn_DS485010v1 1286 unplaced primary NW_001846299.1,DS485010.1,211000022279692 chrUn_DS485011v1 1285 unplaced primary NW_001846300.1,DS485011.1,211000022279580 chrUn_DS485019v1 1280 unplaced primary NW_001846308.1,DS485019.1,211000022278604 chrUn_DS485020v1 1280 unplaced primary NW_001846309.1,DS485020.1,211000022279770 chrUn_DS485022v1 1279 unplaced primary NW_001846311.1,DS485022.1,211000022279926 chrUn_DS485024v1 1278 unplaced primary NW_001846313.1,DS485024.1,211000022278338 chrUn_DS485025v1 1278 unplaced primary NW_001846314.1,DS485025.1,211000022279411 chrUn_DS485026v1 1278 unplaced primary NW_001846315.1,DS485026.1,211000022278980 chrUn_DS485027v1 1277 unplaced primary NW_001846316.1,DS485027.1,211000022279182 chrUn_DS485029v1 1277 unplaced primary NW_001846318.1,DS485029.1,211000022278348 chrUn_DS485030v1 1276 unplaced primary NW_001846319.1,DS485030.1,211000022280152 chrUn_DS485031v1 1275 unplaced primary NW_001846320.1,DS485031.1,211000022279708 chrUn_DS485032v1 1275 unplaced primary NW_001846321.1,DS485032.1,211000022279805 chrUn_DS485035v1 1274 unplaced primary NW_001846324.1,DS485035.1,211000022280262 chrUn_DS485036v1 1274 unplaced primary NW_001846325.1,DS485036.1,211000022279656 chrUn_DS485038v1 1272 unplaced primary NW_001846327.1,DS485038.1,211000022278356 chrUn_DS485041v1 1271 unplaced primary NW_001846330.1,DS485041.1,211000022280174 chrUn_DS485045v1 1271 unplaced primary NW_001846334.1,DS485045.1,211000022279378 chrUn_DS485046v1 1270 unplaced primary NW_001846335.1,DS485046.1,211000022279724 chrUn_DS485047v1 1270 unplaced primary NW_001846336.1,DS485047.1,211000022278580 chrUn_DS485053v1 1266 unplaced primary NW_001846342.1,DS485053.1,211000022279441 chrUn_DS485055v1 1264 unplaced primary NW_001846344.1,DS485055.1,211000022278973 chrUn_DS485056v1 1263 unplaced primary NW_001846345.1,DS485056.1,211000022278773 chrUn_DS485058v1 1263 unplaced primary NW_001846347.1,DS485058.1,211000022278993 chrUn_DS485059v1 1263 unplaced primary NW_001846348.1,DS485059.1,211000022279015 chrUn_DS485062v1 1262 unplaced primary NW_001846351.1,DS485062.1,211000022278932 chrUn_DS485064v1 1262 unplaced primary NW_001846353.1,DS485064.1,211000022278889 chrUn_DS485065v1 1262 unplaced primary NW_001846354.1,DS485065.1,211000022278302 chrUn_DS485066v1 1261 unplaced primary NW_001846355.1,DS485066.1,211000022279856 chrUn_DS485067v1 1261 unplaced primary NW_001846356.1,DS485067.1,211000022280224 chrUn_DS485068v1 1260 unplaced primary NW_001846357.1,DS485068.1,211000022279615 chrUn_DS485071v1 1260 unplaced primary NW_001846360.1,DS485071.1,211000022280091 chrUn_DS485073v1 1259 unplaced primary NW_001846362.1,DS485073.1,211000022278281 chrUn_DS485076v1 1258 unplaced primary NW_001846365.1,DS485076.1,211000022278887 chrUn_DS485079v1 1253 unplaced primary NW_001846368.1,DS485079.1,211000022279172 chrUn_DS485082v1 1251 unplaced primary NW_001846371.1,DS485082.1,211000022278848 chrUn_DS485083v1 1251 unplaced primary NW_001846372.1,DS485083.1,211000022280020 chrUn_DS485085v1 1251 unplaced primary NW_001846374.1,DS485085.1,211000022280045 chrUn_DS485086v1 1250 unplaced primary NW_001846375.1,DS485086.1,211000022278161 chrUn_DS485087v1 1249 unplaced primary NW_001846376.1,DS485087.1,211000022279432 chrUn_DS485088v1 1248 unplaced primary NW_001846377.1,DS485088.1,211000022279990 chrUn_DS485089v1 1247 unplaced primary NW_001846378.1,DS485089.1,211000022278717 chrUn_DS485091v1 1246 unplaced primary NW_001846380.1,DS485091.1,211000022280177 chrUn_DS485092v1 1246 unplaced primary NW_001846381.1,DS485092.1,211000022279218 chrUn_DS485098v1 1242 unplaced primary NW_001846387.1,DS485098.1,211000022280678 chrUn_DS485100v1 1241 unplaced primary NW_001846389.1,DS485100.1,211000022278943 chrUn_DS485102v1 1240 unplaced primary NW_001846391.1,DS485102.1,211000022278808 chrUn_DS485105v1 1240 unplaced primary NW_001846394.1,DS485105.1,211000022280053 chrUn_DS485107v1 1239 unplaced primary NW_001846396.1,DS485107.1,211000022280304 chrUn_DS485117v1 1236 unplaced primary NW_001846406.1,DS485117.1,211000022279124 chrUn_DS485118v1 1235 unplaced primary NW_001846407.1,DS485118.1,211000022279412 chrUn_DS485122v1 1234 unplaced primary NW_001846411.1,DS485122.1,211000022279267 chrUn_DS485123v1 1234 unplaced primary NW_001846412.1,DS485123.1,211000022278369 chrUn_DS485125v1 1234 unplaced primary NW_001846414.1,DS485125.1,211000022279728 chrUn_DS485127v1 1233 unplaced primary NW_001846416.1,DS485127.1,211000022279417 chrUn_DS485130v1 1232 unplaced primary NW_001846419.1,DS485130.1,211000022278136 chrUn_DS485132v1 1231 unplaced primary NW_001846421.1,DS485132.1,211000022278727 chrUn_DS485133v1 1231 unplaced primary NW_001846422.1,DS485133.1,211000022279183 chrUn_DS485134v1 1231 unplaced primary NW_001846423.1,DS485134.1,211000022280210 chrUn_DS485136v1 1231 unplaced primary NW_001846425.1,DS485136.1,211000022279144 chrUn_DS485138v1 1229 unplaced primary NW_001846427.1,DS485138.1,211000022278582 chrUn_DS485140v1 1229 unplaced primary NW_001846429.1,DS485140.1,211000022280179 chrUn_DS485144v1 1227 unplaced primary NW_001846433.1,DS485144.1,211000022280318 chrUn_DS485146v1 1227 unplaced primary NW_001846435.1,DS485146.1,211000022279645 chrUn_DS485148v1 1227 unplaced primary NW_001846437.1,DS485148.1,211000022279156 chrUn_DS485149v1 1226 unplaced primary NW_001846438.1,DS485149.1,211000022279778 chrUn_DS485150v1 1226 unplaced primary NW_001846439.1,DS485150.1,211000022278242 chrUn_DS485151v1 1226 unplaced primary NW_001846440.1,DS485151.1,211000022279979 chrUn_DS485152v1 1225 unplaced primary NW_001846441.1,DS485152.1,211000022280085 chrUn_DS485153v1 1225 unplaced primary NW_001846442.1,DS485153.1,211000022278755 chrUn_DS485154v1 1225 unplaced primary NW_001846443.1,DS485154.1,211000022280126 chrUn_DS485155v1 1225 unplaced primary NW_001846444.1,DS485155.1,211000022280303 chrUn_DS485156v1 1225 unplaced primary NW_001846445.1,DS485156.1,211000022279128 chrUn_DS485157v1 1225 unplaced primary NW_001846446.1,DS485157.1,211000022280139 chrUn_DS485160v1 1224 unplaced primary NW_001846449.1,DS485160.1,211000022279590 chrUn_DS485161v1 1224 unplaced primary NW_001846450.1,DS485161.1,211000022279682 chrUn_DS485162v1 1223 unplaced primary NW_001846451.1,DS485162.1,211000022280308 chrUn_DS485163v1 1223 unplaced primary NW_001846452.1,DS485163.1,211000022278758 chrUn_DS485165v1 1222 unplaced primary NW_001846454.1,DS485165.1,211000022278651 chrUn_DS485169v1 1220 unplaced primary NW_001846458.1,DS485169.1,211000022280230 chrUn_DS485173v1 1219 unplaced primary NW_001846462.1,DS485173.1,211000022279017 chrUn_DS485174v1 1219 unplaced primary NW_001846463.1,DS485174.1,211000022279647 chrUn_DS485176v1 1219 unplaced primary NW_001846465.1,DS485176.1,211000022280081 chrUn_DS485177v1 1218 unplaced primary NW_001846466.1,DS485177.1,211000022279872 chrUn_DS485181v1 1214 unplaced primary NW_001846470.1,DS485181.1,211000022278196 chrUn_DS485182v1 1213 unplaced primary NW_001846471.1,DS485182.1,211000022280691 chrUn_DS485184v1 1212 unplaced primary NW_001846473.1,DS485184.1,211000022279554 chrUn_DS485190v1 1211 unplaced primary NW_001846479.1,DS485190.1,211000022279991 chrUn_DS485192v1 1210 unplaced primary NW_001846481.1,DS485192.1,211000022279185 chrUn_DS485194v1 1209 unplaced primary NW_001846483.1,DS485194.1,211000022279648 chrUn_DS485198v1 1209 unplaced primary NW_001846487.1,DS485198.1,211000022280314 chrUn_DS485199v1 1208 unplaced primary NW_001846488.1,DS485199.1,211000022278748 chrUn_DS485200v1 1208 unplaced primary NW_001846489.1,DS485200.1,211000022279729 chrUn_DS485203v1 1208 unplaced primary NW_001846492.1,DS485203.1,211000022279480 chrUn_DS485204v1 1207 unplaced primary NW_001846493.1,DS485204.1,211000022279819 chrUn_DS485205v1 1206 unplaced primary NW_001846494.1,DS485205.1,211000022278409 chrUn_DS485208v1 1205 unplaced primary NW_001846497.1,DS485208.1,211000022279591 chrUn_DS485209v1 1205 unplaced primary NW_001846498.1,DS485209.1,211000022278729 chrUn_DS485211v1 1205 unplaced primary NW_001846500.1,DS485211.1,211000022279853 chrUn_DS485215v1 1203 unplaced primary NW_001846504.1,DS485215.1,211000022279445 chrUn_DS485216v1 1203 unplaced primary NW_001846505.1,DS485216.1,211000022280154 chrUn_DS485218v1 1203 unplaced primary NW_001846507.1,DS485218.1,211000022279425 chrUn_DS485220v1 1202 unplaced primary NW_001846509.1,DS485220.1,211000022279413 chrUn_DS485221v1 1201 unplaced primary NW_001846510.1,DS485221.1,211000022280120 chrUn_DS485223v1 1200 unplaced primary NW_001846512.1,DS485223.1,211000022278430 chrUn_DS485224v1 1200 unplaced primary NW_001846513.1,DS485224.1,211000022279127 chrUn_DS485226v1 1199 unplaced primary NW_001846515.1,DS485226.1,211000022278503 chrUn_DS485227v1 1199 unplaced primary NW_001846516.1,DS485227.1,211000022280121 chrUn_DS485228v1 1198 unplaced primary NW_001846517.1,DS485228.1,211000022279555 chrUn_DS485229v1 1198 unplaced primary NW_001846518.1,DS485229.1,211000022278569 chrUn_DS485230v1 1197 unplaced primary NW_001846519.1,DS485230.1,211000022280345 chrUn_DS485233v1 1197 unplaced primary NW_001846522.1,DS485233.1,211000022279462 chrUn_DS485239v1 1195 unplaced primary NW_001846528.1,DS485239.1,211000022278290 chrUn_DS485240v1 1195 unplaced primary NW_001846529.1,DS485240.1,211000022278547 chrUn_DS485242v1 1194 unplaced primary NW_001846531.1,DS485242.1,211000022278769 chrUn_DS485243v1 1193 unplaced primary NW_001846532.1,DS485243.1,211000022279444 chrUn_DS485245v1 1193 unplaced primary NW_001846534.1,DS485245.1,211000022280076 chrUn_DS485246v1 1193 unplaced primary NW_001846535.1,DS485246.1,211000022278171 chrUn_DS485247v1 1193 unplaced primary NW_001846536.1,DS485247.1,211000022279758 chrUn_DS485249v1 1192 unplaced primary NW_001846538.1,DS485249.1,211000022278951 chrUn_DS485251v1 1192 unplaced primary NW_001846540.1,DS485251.1,211000022279498 chrUn_DS485252v1 1191 unplaced primary NW_001846541.1,DS485252.1,211000022280083 chrUn_DS485253v1 1191 unplaced primary NW_001846542.1,DS485253.1,211000022279789 chrUn_DS485254v1 1190 unplaced primary NW_001846543.1,DS485254.1,211000022278407 chrUn_DS485255v1 1190 unplaced primary NW_001846544.1,DS485255.1,211000022278668 chrUn_DS485256v1 1190 unplaced primary NW_001846545.1,DS485256.1,211000022280319 chrUn_DS485258v1 1189 unplaced primary NW_001846547.1,DS485258.1,211000022279738 chrUn_DS485259v1 1189 unplaced primary NW_001846548.1,DS485259.1,211000022280689 chrUn_DS485260v1 1189 unplaced primary NW_001846549.1,DS485260.1,211000022279095 chrUn_DS485261v1 1189 unplaced primary NW_001846550.1,DS485261.1,211000022278370 chrUn_DS485263v1 1188 unplaced primary NW_001846552.1,DS485263.1,211000022279508 chrUn_DS485264v1 1186 unplaced primary NW_001846553.1,DS485264.1,211000022279406 chrUn_DS485265v1 1186 unplaced primary NW_001846554.1,DS485265.1,211000022279660 chrUn_DS485270v1 1185 unplaced primary NW_001846559.1,DS485270.1,211000022278091 chrUn_DS485273v1 1185 unplaced primary NW_001846562.1,DS485273.1,211000022279358 chrUn_DS485275v1 1185 unplaced primary NW_001846564.1,DS485275.1,211000022279631 chrUn_DS485280v1 1184 unplaced primary NW_001846569.1,DS485280.1,211000022278202 chrUn_DS485284v1 1182 unplaced primary NW_001846573.1,DS485284.1,211000022280194 chrUn_DS485285v1 1181 unplaced primary NW_001846574.1,DS485285.1,211000022278429 chrUn_DS485290v1 1179 unplaced primary NW_001846579.1,DS485290.1,211000022278702 chrUn_DS485291v1 1179 unplaced primary NW_001846580.1,DS485291.1,211000022279375 chrUn_DS485292v1 1179 unplaced primary NW_001846581.1,DS485292.1,211000022279622 chrUn_DS485294v1 1178 unplaced primary NW_001846583.1,DS485294.1,211000022278166 chrUn_DS485296v1 1178 unplaced primary NW_001846585.1,DS485296.1,211000022278265 chrUn_DS485297v1 1178 unplaced primary NW_001846586.1,DS485297.1,211000022280225 chrUn_DS485298v1 1178 unplaced primary NW_001846587.1,DS485298.1,211000022279317 chrUn_DS485301v1 1177 unplaced primary NW_001846590.1,DS485301.1,211000022280183 chrUn_DS485304v1 1175 unplaced primary NW_001846593.1,DS485304.1,211000022278497 chrUn_DS485306v1 1174 unplaced primary NW_001846595.1,DS485306.1,211000022279811 chrUn_DS485309v1 1173 unplaced primary NW_001846598.1,DS485309.1,211000022279360 chrUn_DS485311v1 1173 unplaced primary NW_001846600.1,DS485311.1,211000022278688 chrUn_DS485313v1 1171 unplaced primary NW_001846602.1,DS485313.1,211000022278432 chrUn_DS485314v1 1171 unplaced primary NW_001846603.1,DS485314.1,211000022279956 chrUn_DS485319v1 1169 unplaced primary NW_001846608.1,DS485319.1,211000022279668 chrUn_DS485322v1 1168 unplaced primary NW_001846611.1,DS485322.1,211000022278940 chrUn_DS485323v1 1167 unplaced primary NW_001846612.1,DS485323.1,211000022280257 chrUn_DS485324v1 1167 unplaced primary NW_001846613.1,DS485324.1,211000022278897 chrUn_DS485325v1 1167 unplaced primary NW_001846614.1,DS485325.1,211000022278781 chrUn_DS485326v1 1166 unplaced primary NW_001846615.1,DS485326.1,211000022279549 chrUn_DS485330v1 1166 unplaced primary NW_001846619.1,DS485330.1,211000022280164 chrUn_DS485331v1 1165 unplaced primary NW_001846620.1,DS485331.1,211000022278673 chrUn_DS485333v1 1165 unplaced primary NW_001846622.1,DS485333.1,211000022278423 chrUn_DS485337v1 1163 unplaced primary NW_001846626.1,DS485337.1,211000022278267 chrUn_DS485338v1 1163 unplaced primary NW_001846627.1,DS485338.1,211000022279655 chrUn_DS485339v1 1163 unplaced primary NW_001846628.1,DS485339.1,211000022278296 chrUn_DS485340v1 1163 unplaced primary NW_001846629.1,DS485340.1,211000022278119 chrUn_DS485341v1 1162 unplaced primary NW_001846630.1,DS485341.1,211000022278313 chrUn_DS485342v1 1162 unplaced primary NW_001846631.1,DS485342.1,211000022278520 chrUn_DS485349v1 1161 unplaced primary NW_001846638.1,DS485349.1,211000022278708 chrUn_DS485353v1 1160 unplaced primary NW_001846642.1,DS485353.1,211000022278901 chrUn_DS485354v1 1160 unplaced primary NW_001846643.1,DS485354.1,211000022278184 chrUn_DS485356v1 1160 unplaced primary NW_001846645.1,DS485356.1,211000022278170 chrUn_DS485357v1 1159 unplaced primary NW_001846646.1,DS485357.1,211000022278403 chrUn_DS485361v1 1159 unplaced primary NW_001846650.1,DS485361.1,211000022279135 chrUn_DS485362v1 1158 unplaced primary NW_001846651.1,DS485362.1,211000022278946 chrUn_DS485365v1 1157 unplaced primary NW_001846654.1,DS485365.1,211000022278416 chrUn_DS485368v1 1157 unplaced primary NW_001846657.1,DS485368.1,211000022279069 chrUn_DS485370v1 1156 unplaced primary NW_001846659.1,DS485370.1,211000022279448 chrUn_DS485371v1 1156 unplaced primary NW_001846660.1,DS485371.1,211000022279309 chrUn_DS485376v1 1155 unplaced primary NW_001846665.1,DS485376.1,211000022278283 chrUn_DS485379v1 1154 unplaced primary NW_001846668.1,DS485379.1,211000022279474 chrUn_DS485381v1 1154 unplaced primary NW_001846670.1,DS485381.1,211000022278295 chrUn_DS485382v1 1154 unplaced primary NW_001846671.1,DS485382.1,211000022279726 chrUn_DS485383v1 1154 unplaced primary NW_001846672.1,DS485383.1,211000022279469 chrUn_DS485385v1 1153 unplaced primary NW_001846674.1,DS485385.1,211000022280688 chrUn_DS485386v1 1153 unplaced primary NW_001846675.1,DS485386.1,211000022278174 chrUn_DS485387v1 1152 unplaced primary NW_001846676.1,DS485387.1,211000022278391 chrUn_DS485389v1 1152 unplaced primary NW_001846678.1,DS485389.1,211000022280056 chrUn_DS485390v1 1152 unplaced primary NW_001846679.1,DS485390.1,211000022278134 chrUn_DS485392v1 1151 unplaced primary NW_001846681.1,DS485392.1,211000022279487 chrUn_DS485393v1 1150 unplaced primary NW_001846682.1,DS485393.1,211000022280106 chrUn_DS485395v1 1150 unplaced primary NW_001846684.1,DS485395.1,211000022278870 chrUn_DS485397v1 1148 unplaced primary NW_001846686.1,DS485397.1,211000022279722 chrUn_DS485398v1 1148 unplaced primary NW_001846687.1,DS485398.1,211000022278096 chrUn_DS485400v1 1148 unplaced primary NW_001846689.1,DS485400.1,211000022280124 chrUn_DS485401v1 1148 unplaced primary NW_001846690.1,DS485401.1,211000022279232 chrUn_DS485403v1 1148 unplaced primary NW_001846692.1,DS485403.1,211000022278191 chrUn_DS485407v1 1147 unplaced primary NW_001846696.1,DS485407.1,211000022278401 chrUn_DS485410v1 1147 unplaced primary NW_001846699.1,DS485410.1,211000022280130 chrUn_DS485411v1 1146 unplaced primary NW_001846700.1,DS485411.1,211000022279148 chrUn_DS485415v1 1146 unplaced primary NW_001846704.1,DS485415.1,211000022278663 chrUn_DS485419v1 1144 unplaced primary NW_001846708.1,DS485419.1,211000022280180 chrUn_DS485420v1 1144 unplaced primary NW_001846709.1,DS485420.1,211000022279175 chrUn_DS485421v1 1144 unplaced primary NW_001846710.1,DS485421.1,211000022278263 chrUn_DS485424v1 1143 unplaced primary NW_001846713.1,DS485424.1,211000022280704 chrUn_DS485425v1 1143 unplaced primary NW_001846714.1,DS485425.1,211000022278033 chrUn_DS485426v1 1142 unplaced primary NW_001846715.1,DS485426.1,211000022280018 chrUn_DS485428v1 1142 unplaced primary NW_001846717.1,DS485428.1,211000022279361 chrUn_DS485429v1 1141 unplaced primary NW_001846718.1,DS485429.1,211000022279987 chrUn_DS485433v1 1140 unplaced primary NW_001846722.1,DS485433.1,211000022278143 chrUn_DS485434v1 1140 unplaced primary NW_001846723.1,DS485434.1,211000022279603 chrUn_DS485437v1 1140 unplaced primary NW_001846726.1,DS485437.1,211000022278745 chrUn_DS485438v1 1139 unplaced primary NW_001846727.1,DS485438.1,211000022278807 chrUn_DS485439v1 1139 unplaced primary NW_001846728.1,DS485439.1,211000022279418 chrUn_DS485441v1 1139 unplaced primary NW_001846730.1,DS485441.1,211000022279422 chrUn_DS485442v1 1139 unplaced primary NW_001846731.1,DS485442.1,211000022278928 chrUn_DS485443v1 1138 unplaced primary NW_001846732.1,DS485443.1,211000022278294 chrUn_DS485448v1 1137 unplaced primary NW_001846737.1,DS485448.1,211000022280232 chrUn_DS485451v1 1136 unplaced primary NW_001846740.1,DS485451.1,211000022278333 chrUn_DS485453v1 1136 unplaced primary NW_001846742.1,DS485453.1,211000022279222 chrUn_DS485456v1 1135 unplaced primary NW_001846745.1,DS485456.1,211000022279115 chrUn_DS485457v1 1135 unplaced primary NW_001846746.1,DS485457.1,211000022278221 chrUn_DS485461v1 1134 unplaced primary NW_001846750.1,DS485461.1,211000022279747 chrUn_DS485462v1 1134 unplaced primary NW_001846751.1,DS485462.1,211000022278750 chrUn_DS485464v1 1133 unplaced primary NW_001846753.1,DS485464.1,211000022279744 chrUn_DS485466v1 1133 unplaced primary NW_001846755.1,DS485466.1,211000022278958 chrUn_DS485467v1 1132 unplaced primary NW_001846756.1,DS485467.1,211000022278140 chrUn_DS485468v1 1132 unplaced primary NW_001846757.1,DS485468.1,211000022279125 chrUn_DS485469v1 1132 unplaced primary NW_001846758.1,DS485469.1,211000022279088 chrUn_DS485472v1 1131 unplaced primary NW_001846761.1,DS485472.1,211000022278977 chrUn_DS485475v1 1130 unplaced primary NW_001846764.1,DS485475.1,211000022278445 chrUn_DS485477v1 1130 unplaced primary NW_001846766.1,DS485477.1,211000022278788 chrUn_DS485481v1 1129 unplaced primary NW_001846770.1,DS485481.1,211000022279899 chrUn_DS485482v1 1129 unplaced primary NW_001846771.1,DS485482.1,211000022279684 chrUn_DS485488v1 1127 unplaced primary NW_001846777.1,DS485488.1,211000022278920 chrUn_DS485490v1 1127 unplaced primary NW_001846779.1,DS485490.1,211000022278072 chrUn_DS485491v1 1126 unplaced primary NW_001846780.1,DS485491.1,211000022279564 chrUn_DS485494v1 1126 unplaced primary NW_001846783.1,DS485494.1,211000022279212 chrUn_DS485495v1 1126 unplaced primary NW_001846784.1,DS485495.1,211000022278123 chrUn_DS485496v1 1126 unplaced primary NW_001846785.1,DS485496.1,211000022278412 chrUn_DS485497v1 1125 unplaced primary NW_001846786.1,DS485497.1,211000022279407 chrUn_DS485498v1 1125 unplaced primary NW_001846787.1,DS485498.1,211000022278877 chrUn_DS485500v1 1124 unplaced primary NW_001846789.1,DS485500.1,211000022279652 chrUn_DS485501v1 1124 unplaced primary NW_001846790.1,DS485501.1,211000022278751 chrUn_DS485503v1 1123 unplaced primary NW_001846792.1,DS485503.1,211000022280268 chrUn_DS485504v1 1123 unplaced primary NW_001846793.1,DS485504.1,211000022278145 chrUn_DS485505v1 1123 unplaced primary NW_001846794.1,DS485505.1,211000022278328 chrUn_DS485506v1 1123 unplaced primary NW_001846795.1,DS485506.1,211000022278511 chrUn_DS485509v1 1123 unplaced primary NW_001846798.1,DS485509.1,211000022279055 chrUn_DS485515v1 1120 unplaced primary NW_001846804.1,DS485515.1,211000022278747 chrUn_DS485517v1 1119 unplaced primary NW_001846806.1,DS485517.1,211000022279240 chrUn_DS485518v1 1119 unplaced primary NW_001846807.1,DS485518.1,211000022279221 chrUn_DS485520v1 1118 unplaced primary NW_001846809.1,DS485520.1,211000022279400 chrUn_DS485521v1 1118 unplaced primary NW_001846810.1,DS485521.1,211000022279493 chrUn_DS485522v1 1118 unplaced primary NW_001846811.1,DS485522.1,211000022278514 chrUn_DS485525v1 1117 unplaced primary NW_001846814.1,DS485525.1,211000022279985 chrUn_DS485526v1 1117 unplaced primary NW_001846815.1,DS485526.1,211000022278944 chrUn_DS485527v1 1117 unplaced primary NW_001846816.1,DS485527.1,211000022279632 chrUn_DS485528v1 1117 unplaced primary NW_001846817.1,DS485528.1,211000022279576 chrUn_DS485529v1 1117 unplaced primary NW_001846818.1,DS485529.1,211000022279042 chrUn_DS485530v1 1117 unplaced primary NW_001846819.1,DS485530.1,211000022279769 chrUn_DS485531v1 1116 unplaced primary NW_001846820.1,DS485531.1,211000022279203 chrUn_DS485533v1 1116 unplaced primary NW_001846822.1,DS485533.1,211000022279618 chrUn_DS485535v1 1116 unplaced primary NW_001846824.1,DS485535.1,211000022279845 chrUn_DS485536v1 1116 unplaced primary NW_001846825.1,DS485536.1,211000022280312 chrUn_DS485538v1 1115 unplaced primary NW_001846827.1,DS485538.1,211000022279666 chrUn_DS485539v1 1115 unplaced primary NW_001846828.1,DS485539.1,211000022278257 chrUn_DS485540v1 1114 unplaced primary NW_001846829.1,DS485540.1,211000022279874 chrUn_DS485541v1 1114 unplaced primary NW_001846830.1,DS485541.1,211000022278248 chrUn_DS485542v1 1114 unplaced primary NW_001846831.1,DS485542.1,211000022278533 chrUn_DS485543v1 1114 unplaced primary NW_001846832.1,DS485543.1,211000022279399 chrUn_DS485544v1 1114 unplaced primary NW_001846833.1,DS485544.1,211000022279325 chrUn_DS485545v1 1114 unplaced primary NW_001846834.1,DS485545.1,211000022278886 chrUn_DS485547v1 1112 unplaced primary NW_001846836.1,DS485547.1,211000022278200 chrUn_DS485548v1 1112 unplaced primary NW_001846837.1,DS485548.1,211000022280702 chrUn_DS485557v1 1110 unplaced primary NW_001846846.1,DS485557.1,211000022279102 chrUn_DS485558v1 1110 unplaced primary NW_001846847.1,DS485558.1,211000022278309 chrUn_DS485559v1 1110 unplaced primary NW_001846848.1,DS485559.1,211000022280331 chrUn_DS485563v1 1109 unplaced primary NW_001846852.1,DS485563.1,211000022279014 chrUn_DS485565v1 1109 unplaced primary NW_001846854.1,DS485565.1,211000022280000 chrUn_DS485566v2 544 unplaced primary NW_001846855.2,DS485566.2,211000022279089 chrUn_DS485567v1 1108 unplaced primary NW_001846856.1,DS485567.1,211000022279933 chrUn_DS485569v1 1108 unplaced primary NW_001846858.1,DS485569.1,211000022279414 chrUn_DS485571v1 1107 unplaced primary NW_001846860.1,DS485571.1,211000022279510 chrUn_DS485572v1 1107 unplaced primary NW_001846861.1,DS485572.1,211000022278285 chrUn_DS485574v1 1106 unplaced primary NW_001846863.1,DS485574.1,211000022279923 chrUn_DS485578v1 1105 unplaced primary NW_001846867.1,DS485578.1,211000022278345 chrUn_DS485579v1 1105 unplaced primary NW_001846868.1,DS485579.1,211000022280123 chrUn_DS485581v1 1105 unplaced primary NW_001846870.1,DS485581.1,211000022278603 chrUn_DS485582v1 1105 unplaced primary NW_001846871.1,DS485582.1,211000022279355 chrUn_DS485583v1 1105 unplaced primary NW_001846872.1,DS485583.1,211000022279359 chrUn_DS485584v1 1105 unplaced primary NW_001846873.1,DS485584.1,211000022280097 chrUn_DS485585v1 1103 unplaced primary NW_001846874.1,DS485585.1,211000022278862 chrUn_DS485587v1 1103 unplaced primary NW_001846876.1,DS485587.1,211000022279659 chrUn_DS485588v1 1103 unplaced primary NW_001846877.1,DS485588.1,211000022279160 chrUn_DS485589v1 1102 unplaced primary NW_001846878.1,DS485589.1,211000022280193 chrUn_DS485591v1 1102 unplaced primary NW_001846880.1,DS485591.1,211000022280150 chrUn_DS485593v1 1101 unplaced primary NW_001846882.1,DS485593.1,211000022279965 chrUn_DS485595v1 1101 unplaced primary NW_001846884.1,DS485595.1,211000022280079 chrUn_DS485601v1 1099 unplaced primary NW_001846890.1,DS485601.1,211000022280685 chrUn_DS485602v1 1099 unplaced primary NW_001846891.1,DS485602.1,211000022278197 chrUn_DS485605v1 1098 unplaced primary NW_001846894.1,DS485605.1,211000022279057 chrUn_DS485607v1 1097 unplaced primary NW_001846896.1,DS485607.1,211000022279051 chrUn_DS485608v1 1097 unplaced primary NW_001846897.1,DS485608.1,211000022278090 chrUn_DS485609v1 1096 unplaced primary NW_001846898.1,DS485609.1,211000022280256 chrUn_DS485610v1 1096 unplaced primary NW_001846899.1,DS485610.1,211000022279975 chrUn_DS485614v1 1094 unplaced primary NW_001846903.1,DS485614.1,211000022279336 chrUn_DS485621v1 1091 unplaced primary NW_001846910.1,DS485621.1,211000022279880 chrUn_DS485622v1 1090 unplaced primary NW_001846911.1,DS485622.1,211000022279151 chrUn_DS485623v1 1090 unplaced primary NW_001846912.1,DS485623.1,211000022278537 chrUn_DS485624v1 1090 unplaced primary NW_001846913.1,DS485624.1,211000022280291 chrUn_DS485627v1 1090 unplaced primary NW_001846916.1,DS485627.1,211000022280075 chrUn_DS485628v1 1089 unplaced primary NW_001846917.1,DS485628.1,211000022279943 chrUn_DS485630v1 1089 unplaced primary NW_001846919.1,DS485630.1,211000022279672 chrUn_DS485632v1 1088 unplaced primary NW_001846921.1,DS485632.1,211000022279374 chrUn_DS485634v1 1088 unplaced primary NW_001846923.1,DS485634.1,211000022278349 chrUn_DS485636v1 1088 unplaced primary NW_001846925.1,DS485636.1,211000022279533 chrUn_DS485640v1 1087 unplaced primary NW_001846929.1,DS485640.1,211000022280065 chrUn_DS485642v1 1087 unplaced primary NW_001846931.1,DS485642.1,211000022279551 chrUn_DS485643v1 1086 unplaced primary NW_001846932.1,DS485643.1,211000022278223 chrUn_DS485648v1 1086 unplaced primary NW_001846937.1,DS485648.1,211000022280051 chrUn_DS485650v1 1084 unplaced primary NW_001846939.1,DS485650.1,211000022278761 chrUn_DS485653v1 1084 unplaced primary NW_001846942.1,DS485653.1,211000022280240 chrUn_DS485654v1 1084 unplaced primary NW_001846943.1,DS485654.1,211000022278660 chrUn_DS485655v1 1083 unplaced primary NW_001846944.1,DS485655.1,211000022279781 chrUn_DS485656v1 1083 unplaced primary NW_001846945.1,DS485656.1,211000022279578 chrUn_DS485657v1 1083 unplaced primary NW_001846946.1,DS485657.1,211000022279569 chrUn_DS485659v1 1082 unplaced primary NW_001846948.1,DS485659.1,211000022278573 chrUn_DS485661v1 1081 unplaced primary NW_001846950.1,DS485661.1,211000022278592 chrUn_DS485664v1 1081 unplaced primary NW_001846953.1,DS485664.1,211000022278859 chrUn_DS485666v1 1080 unplaced primary NW_001846955.1,DS485666.1,211000022279369 chrUn_DS485667v1 1080 unplaced primary NW_001846956.1,DS485667.1,211000022279824 chrUn_DS485668v1 1080 unplaced primary NW_001846957.1,DS485668.1,211000022278878 chrUn_DS485670v1 1079 unplaced primary NW_001846959.1,DS485670.1,211000022280084 chrUn_DS485671v1 1079 unplaced primary NW_001846960.1,DS485671.1,211000022279154 chrUn_DS485673v1 1078 unplaced primary NW_001846962.1,DS485673.1,211000022278371 chrUn_DS485675v1 1078 unplaced primary NW_001846964.1,DS485675.1,211000022278301 chrUn_DS485678v1 1077 unplaced primary NW_001846967.1,DS485678.1,211000022278241 chrUn_DS485679v1 1077 unplaced primary NW_001846968.1,DS485679.1,211000022279252 chrUn_DS485681v1 1076 unplaced primary NW_001846970.1,DS485681.1,211000022279141 chrUn_DS485682v1 1076 unplaced primary NW_001846971.1,DS485682.1,211000022279013 chrUn_DS485683v1 1076 unplaced primary NW_001846972.1,DS485683.1,211000022278776 chrUn_DS485684v1 1076 unplaced primary NW_001846973.1,DS485684.1,211000022279155 chrUn_DS485686v1 1075 unplaced primary NW_001846975.1,DS485686.1,211000022278917 chrUn_DS485688v1 1075 unplaced primary NW_001846977.1,DS485688.1,211000022278903 chrUn_DS485692v1 1074 unplaced primary NW_001846981.1,DS485692.1,211000022279959 chrUn_DS485693v1 1074 unplaced primary NW_001846982.1,DS485693.1,211000022278730 chrUn_DS485694v1 1074 unplaced primary NW_001846983.1,DS485694.1,211000022280054 chrUn_DS485695v2 564 unplaced primary NW_001846984.2,DS485695.2,211000022280427 chrUn_DS485701v1 1072 unplaced primary NW_001846990.1,DS485701.1,211000022278600 chrUn_DS485703v1 1071 unplaced primary NW_001846992.1,DS485703.1,211000022278311 chrUn_DS485709v1 1070 unplaced primary NW_001846998.1,DS485709.1,211000022279624 chrUn_DS485711v1 1070 unplaced primary NW_001847000.1,DS485711.1,211000022278441 chrUn_DS485712v1 1070 unplaced primary NW_001847001.1,DS485712.1,211000022279430 chrUn_DS485714v1 1069 unplaced primary NW_001847003.1,DS485714.1,211000022279742 chrUn_DS485717v1 1069 unplaced primary NW_001847006.1,DS485717.1,211000022279592 chrUn_DS485722v1 1067 unplaced primary NW_001847011.1,DS485722.1,211000022278526 chrUn_DS485724v1 1067 unplaced primary NW_001847013.1,DS485724.1,211000022280350 chrUn_DS485725v1 1066 unplaced primary NW_001847014.1,DS485725.1,211000022279405 chrUn_DS485728v1 1064 unplaced primary NW_001847017.1,DS485728.1,211000022279727 chrUn_DS485729v1 1064 unplaced primary NW_001847018.1,DS485729.1,211000022279149 chrUn_DS485733v1 1063 unplaced primary NW_001847022.1,DS485733.1,211000022278276 chrUn_DS485737v1 1063 unplaced primary NW_001847026.1,DS485737.1,211000022279584 chrUn_DS485740v1 1063 unplaced primary NW_001847029.1,DS485740.1,211000022278699 chrUn_DS485741v1 1063 unplaced primary NW_001847030.1,DS485741.1,211000022278253 chrUn_DS485742v1 1062 unplaced primary NW_001847031.1,DS485742.1,211000022279242 chrUn_DS485743v1 1062 unplaced primary NW_001847032.1,DS485743.1,211000022278540 chrUn_DS485746v1 1062 unplaced primary NW_001847035.1,DS485746.1,211000022280142 chrUn_DS485747v1 1062 unplaced primary NW_001847036.1,DS485747.1,211000022278385 chrUn_DS485748v1 1061 unplaced primary NW_001847037.1,DS485748.1,211000022278260 chrUn_DS485750v1 1060 unplaced primary NW_001847039.1,DS485750.1,211000022279927 chrUn_DS485751v1 1060 unplaced primary NW_001847040.1,DS485751.1,211000022278881 chrUn_DS485753v1 1059 unplaced primary NW_001847042.1,DS485753.1,211000022278720 chrUn_DS485754v1 1059 unplaced primary NW_001847043.1,DS485754.1,211000022279952 chrUn_DS485757v1 1058 unplaced primary NW_001847046.1,DS485757.1,211000022279782 chrUn_DS485760v1 1058 unplaced primary NW_001847049.1,DS485760.1,211000022278106 chrUn_DS485766v1 1056 unplaced primary NW_001847055.1,DS485766.1,211000022278989 chrUn_DS485770v1 1055 unplaced primary NW_001847059.1,DS485770.1,211000022279814 chrUn_DS485773v1 1054 unplaced primary NW_001847062.1,DS485773.1,211000022278571 chrUn_DS485774v1 1053 unplaced primary NW_001847063.1,DS485774.1,211000022279885 chrUn_DS485775v1 1053 unplaced primary NW_001847064.1,DS485775.1,211000022279506 chrUn_DS485780v1 1053 unplaced primary NW_001847069.1,DS485780.1,211000022279572 chrUn_DS485781v1 1052 unplaced primary NW_001847070.1,DS485781.1,211000022278530 chrUn_DS485783v1 1052 unplaced primary NW_001847072.1,DS485783.1,211000022278199 chrUn_DS485788v1 1051 unplaced primary NW_001847077.1,DS485788.1,211000022278357 chrUn_DS485789v1 1051 unplaced primary NW_001847078.1,DS485789.1,211000022278419 chrUn_DS485792v1 1050 unplaced primary NW_001847081.1,DS485792.1,211000022280043 chrUn_DS485793v1 1050 unplaced primary NW_001847082.1,DS485793.1,211000022278410 chrUn_DS485794v1 1049 unplaced primary NW_001847083.1,DS485794.1,211000022278501 chrUn_DS485796v1 1049 unplaced primary NW_001847085.1,DS485796.1,211000022279424 chrUn_DS485802v1 1048 unplaced primary NW_001847091.1,DS485802.1,211000022279286 chrUn_DS485803v1 1048 unplaced primary NW_001847092.1,DS485803.1,211000022279258 chrUn_DS485806v1 1048 unplaced primary NW_001847095.1,DS485806.1,211000022280069 chrUn_DS485807v1 1048 unplaced primary NW_001847096.1,DS485807.1,211000022280149 chrUn_DS485808v1 1047 unplaced primary NW_001847097.1,DS485808.1,211000022278339 chrUn_DS485810v1 1047 unplaced primary NW_001847099.1,DS485810.1,211000022278641 chrUn_DS485812v1 1047 unplaced primary NW_001847101.1,DS485812.1,211000022278804 chrUn_DS485818v1 1045 unplaced primary NW_001847107.1,DS485818.1,211000022279465 chrUn_DS485820v1 1045 unplaced primary NW_001847109.1,DS485820.1,211000022279168 chrUn_DS485821v1 1045 unplaced primary NW_001847110.1,DS485821.1,211000022278535 chrUn_DS485822v1 1045 unplaced primary NW_001847111.1,DS485822.1,211000022278240 chrUn_DS485823v1 1044 unplaced primary NW_001847112.1,DS485823.1,211000022279387 chrUn_DS485825v1 1044 unplaced primary NW_001847114.1,DS485825.1,211000022278427 chrUn_DS485826v1 1044 unplaced primary NW_001847115.1,DS485826.1,211000022278985 chrUn_DS485827v1 1043 unplaced primary NW_001847116.1,DS485827.1,211000022279771 chrUn_DS485828v1 1043 unplaced primary NW_001847117.1,DS485828.1,211000022278996 chrUn_DS485832v1 1042 unplaced primary NW_001847121.1,DS485832.1,211000022280168 chrUn_DS485833v1 1042 unplaced primary NW_001847122.1,DS485833.1,211000022279740 chrUn_DS485838v1 1042 unplaced primary NW_001847127.1,DS485838.1,211000022278599 chrUn_DS485841v1 1041 unplaced primary NW_001847130.1,DS485841.1,211000022279329 chrUn_DS485842v1 1041 unplaced primary NW_001847131.1,DS485842.1,211000022278983 chrUn_DS485846v1 1040 unplaced primary NW_001847135.1,DS485846.1,211000022278305 chrUn_DS485847v1 1040 unplaced primary NW_001847136.1,DS485847.1,211000022279271 chrUn_DS485848v1 1040 unplaced primary NW_001847137.1,DS485848.1,211000022280117 chrUn_DS485850v1 1039 unplaced primary NW_001847139.1,DS485850.1,211000022279443 chrUn_DS485851v1 1039 unplaced primary NW_001847140.1,DS485851.1,211000022280025 chrUn_DS485853v1 1038 unplaced primary NW_001847142.1,DS485853.1,211000022278291 chrUn_DS485854v1 1038 unplaced primary NW_001847143.1,DS485854.1,211000022278517 chrUn_DS485859v1 1036 unplaced primary NW_001847148.1,DS485859.1,211000022278158 chrUn_DS485863v1 1035 unplaced primary NW_001847152.1,DS485863.1,211000022278970 chrUn_DS485864v1 1035 unplaced primary NW_001847153.1,DS485864.1,211000022278562 chrUn_DS485867v1 1035 unplaced primary NW_001847156.1,DS485867.1,211000022279053 chrUn_DS485868v1 1035 unplaced primary NW_001847157.1,DS485868.1,211000022279050 chrUn_DS485870v1 1033 unplaced primary NW_001847159.1,DS485870.1,211000022278453 chrUn_DS485872v1 1033 unplaced primary NW_001847161.1,DS485872.1,211000022278541 chrUn_DS485874v1 1033 unplaced primary NW_001847163.1,DS485874.1,211000022279906 chrUn_DS485876v1 1032 unplaced primary NW_001847165.1,DS485876.1,211000022279599 chrUn_DS485878v1 1032 unplaced primary NW_001847167.1,DS485878.1,211000022280178 chrUn_DS485880v1 1031 unplaced primary NW_001847169.1,DS485880.1,211000022279356 chrUn_DS485882v1 1031 unplaced primary NW_001847171.1,DS485882.1,211000022280014 chrUn_DS485883v1 1030 unplaced primary NW_001847172.1,DS485883.1,211000022278680 chrUn_DS485886v1 1030 unplaced primary NW_001847175.1,DS485886.1,211000022278588 chrUn_DS485887v1 1029 unplaced primary NW_001847176.1,DS485887.1,211000022279117 chrUn_DS485889v1 1029 unplaced primary NW_001847178.1,DS485889.1,211000022280011 chrUn_DS485891v1 1029 unplaced primary NW_001847180.1,DS485891.1,211000022278386 chrUn_DS485893v1 1029 unplaced primary NW_001847182.1,DS485893.1,211000022278948 chrUn_DS485897v1 1028 unplaced primary NW_001847186.1,DS485897.1,211000022280266 chrUn_DS485900v1 1027 unplaced primary NW_001847189.1,DS485900.1,211000022278884 chrUn_DS485902v1 1026 unplaced primary NW_001847191.1,DS485902.1,211000022279120 chrUn_DS485903v1 1026 unplaced primary NW_001847192.1,DS485903.1,211000022279351 chrUn_DS485904v1 1025 unplaced primary NW_001847193.1,DS485904.1,211000022278898 chrUn_DS485905v1 1025 unplaced primary NW_001847194.1,DS485905.1,211000022278972 chrUn_DS485906v1 1025 unplaced primary NW_001847195.1,DS485906.1,211000022278207 chrUn_DS485907v1 1025 unplaced primary NW_001847196.1,DS485907.1,211000022278377 chrUn_DS485911v1 1023 unplaced primary NW_001847200.1,DS485911.1,211000022279526 chrUn_DS485912v1 1022 unplaced primary NW_001847201.1,DS485912.1,211000022279262 chrUn_DS485915v1 1022 unplaced primary NW_001847204.1,DS485915.1,211000022279289 chrUn_DS485917v1 1022 unplaced primary NW_001847206.1,DS485917.1,211000022279195 chrUn_DS485918v1 1021 unplaced primary NW_001847207.1,DS485918.1,211000022279954 chrUn_DS485919v1 1021 unplaced primary NW_001847208.1,DS485919.1,211000022278031 chrUn_DS485923v1 1021 unplaced primary NW_001847212.1,DS485923.1,211000022279809 chrUn_DS485925v1 1020 unplaced primary NW_001847214.1,DS485925.1,211000022278287 chrUn_DS485929v1 1020 unplaced primary NW_001847218.1,DS485929.1,211000022278585 chrUn_DS485932v1 1019 unplaced primary NW_001847221.1,DS485932.1,211000022279785 chrUn_DS485933v1 1019 unplaced primary NW_001847222.1,DS485933.1,211000022279308 chrUn_DS485935v1 1019 unplaced primary NW_001847224.1,DS485935.1,211000022280681 chrUn_DS485939v1 1018 unplaced primary NW_001847228.1,DS485939.1,211000022279644 chrUn_DS485940v1 1018 unplaced primary NW_001847229.1,DS485940.1,211000022278759 chrUn_DS485944v1 1016 unplaced primary NW_001847233.1,DS485944.1,211000022279741 chrUn_DS485946v1 1016 unplaced primary NW_001847235.1,DS485946.1,211000022279736 chrUn_DS485947v1 1016 unplaced primary NW_001847236.1,DS485947.1,211000022279626 chrUn_DS485948v1 1015 unplaced primary NW_001847237.1,DS485948.1,211000022279609 chrUn_DS485952v1 1014 unplaced primary NW_001847241.1,DS485952.1,211000022279693 chrUn_DS485953v1 1014 unplaced primary NW_001847242.1,DS485953.1,211000022279792 chrUn_DS485954v1 1014 unplaced primary NW_001847243.1,DS485954.1,211000022278424 chrUn_DS485955v1 1014 unplaced primary NW_001847244.1,DS485955.1,211000022280290 chrUn_DS485957v1 1013 unplaced primary NW_001847246.1,DS485957.1,211000022278247 chrUn_DS485958v1 1013 unplaced primary NW_001847247.1,DS485958.1,211000022278258 chrUn_DS485964v1 1012 unplaced primary NW_001847253.1,DS485964.1,211000022279134 chrUn_DS485965v1 1012 unplaced primary NW_001847254.1,DS485965.1,211000022279215 chrUn_DS485966v1 1011 unplaced primary NW_001847255.1,DS485966.1,211000022279946 chrUn_DS485968v1 1011 unplaced primary NW_001847257.1,DS485968.1,211000022279342 chrUn_DS485969v1 1011 unplaced primary NW_001847258.1,DS485969.1,211000022279180 chrUn_DS485973v1 1010 unplaced primary NW_001847262.1,DS485973.1,211000022278272 chrUn_DS485979v1 1008 unplaced primary NW_001847268.1,DS485979.1,211000022278095 chrUn_DS485980v1 1008 unplaced primary NW_001847269.1,DS485980.1,211000022279200 chrUn_DS485982v1 1007 unplaced primary NW_001847271.1,DS485982.1,211000022278650 chrUn_DS485983v1 1006 unplaced primary NW_001847272.1,DS485983.1,211000022279353 chrUn_DS485984v1 1006 unplaced primary NW_001847273.1,DS485984.1,211000022278152 chrUn_DS485985v1 1006 unplaced primary NW_001847274.1,DS485985.1,211000022278718 chrUn_DS485986v1 1005 unplaced primary NW_001847275.1,DS485986.1,211000022279384 chrUn_DS485988v1 1005 unplaced primary NW_001847277.1,DS485988.1,211000022280165 chrUn_DS485989v1 1005 unplaced primary NW_001847278.1,DS485989.1,211000022278539 chrUn_DS485991v1 1005 unplaced primary NW_001847280.1,DS485991.1,211000022279132 chrUn_DS485995v1 1004 unplaced primary NW_001847284.1,DS485995.1,211000022278137 chrUn_DS485996v1 1004 unplaced primary NW_001847285.1,DS485996.1,211000022279409 chrUn_DS485997v1 1004 unplaced primary NW_001847286.1,DS485997.1,211000022279103 chrUn_DS485998v1 1003 unplaced primary NW_001847287.1,DS485998.1,211000022278074 chrUn_DS486002v1 1001 unplaced primary NW_001847291.1,DS486002.1,211000022278179 chrUn_DS486004v1 1001 unplaced primary NW_001847293.1,DS486004.1,211000022279016 chrUn_DS486005v1 1001 unplaced primary NW_001847294.1,DS486005.1,211000022278576 chrUn_DS486008v1 1001 unplaced primary NW_001847297.1,DS486008.1,211000022278384 bioframe-0.4.1/bioframe/io/data/dm3.seqinfo.tsv0000644000175000017500000000175314420777331020634 0ustar nileshnileshname length type molecule unit aliases chr2L 23011544 assembled chr2 primary 2L,NT_033779.4,AE014134.5 chr2R 21146708 assembled chr2 primary 2R,NT_033778.3,AE013599.4 chr3L 24543557 assembled chr3 primary 3L,NT_037436.3,AE014296.4 chr3R 27905053 assembled chr3 primary 3R,NT_033777.2,AE014297.2 chr4 1351857 assembled chr4 primary 4,NC_004353.3,AE014135.3 chrX 22422827 assembled chrX primary X,NC_004354.3,AE014298.4 chrM 19517 assembled chrM non-nuclear MT,NS_000188.1,FA000001.1 chr2LHet 368872 unlocalized chr2 primary 2LHet,NW_001848855.1,CM000456.1 chr2RHet 3288761 unlocalized chr2 primary 2RHet,NW_001848856.1,CM000457.1 chr3LHet 2555491 unlocalized chr3 primary 3LHet,NW_001848857.1,CM000458.1 chr3RHet 2517507 unlocalized chr3 primary 3RHet,NW_001848858.1,CM000459.1 chrXHet 204112 unlocalized chrX primary XHet,NW_001848859.1,CM000460.1 chrYHet 347038 unlocalized chrY primary YHet,NW_001848860.1,CM000461.1 chrU 10049037 unplaced primary Un,NC_001709.1 chrUextra 29004656 unplaced primary bioframe-0.4.1/bioframe/io/data/danRer11.seqinfo.tsv0000644000175000017500000020144314420777331021524 0ustar nileshnileshname length type molecule unit aliases chr1 59578282 assembled chr1 primary 1,CM002885.2,NC_007112.7 chr2 59640629 assembled chr2 primary 2,CM002886.2,NC_007113.7 chr3 62628489 assembled chr3 primary 3,CM002887.2,NC_007114.7 chr4 78093715 assembled chr4 primary 4,CM002888.2,NC_007115.7 chr5 72500376 assembled chr5 primary 5,CM002889.2,NC_007116.7 chr6 60270059 assembled chr6 primary 6,CM002890.2,NC_007117.7 chr7 74282399 assembled chr7 primary 7,CM002891.2,NC_007118.7 chr8 54304671 assembled chr8 primary 8,CM002892.2,NC_007119.7 chr9 56459846 assembled chr9 primary 9,CM002893.2,NC_007120.7 chr10 45420867 assembled chr10 primary 10,CM002894.2,NC_007121.7 chr11 45484837 assembled chr11 primary 11,CM002895.2,NC_007122.7 chr12 49182954 assembled chr12 primary 12,CM002896.2,NC_007123.7 chr13 52186027 assembled chr13 primary 13,CM002897.2,NC_007124.7 chr14 52660232 assembled chr14 primary 14,CM002898.2,NC_007125.7 chr15 48040578 assembled chr15 primary 15,CM002899.2,NC_007126.7 chr16 55266484 assembled chr16 primary 16,CM002900.2,NC_007127.7 chr17 53461100 assembled chr17 primary 17,CM002901.2,NC_007128.7 chr18 51023478 assembled chr18 primary 18,CM002902.2,NC_007129.7 chr19 48449771 assembled chr19 primary 19,CM002903.2,NC_007130.7 chr20 55201332 assembled chr20 primary 20,CM002904.2,NC_007131.7 chr21 45934066 assembled chr21 primary 21,CM002905.2,NC_007132.7 chr22 39133080 assembled chr22 primary 22,CM002906.2,NC_007133.7 chr23 46223584 assembled chr23 primary 23,CM002907.2,NC_007134.7 chr24 42172926 assembled chr24 primary 24,CM002908.2,NC_007135.7 chr25 37502051 assembled chr25 primary 25,CM002909.2,NC_007136.7 chrM 16596 assembled chrM non-nuclear MT,AC024175.3,NC_002333.2 chrUn_KN147552v2 24373 unplaced primary KN147552.2,NW_003334243.2 chrUn_KN147632v2 184438 unplaced primary KN147632.2,NW_003336270.3 chrUn_KN147636v1 203829 unplaced primary KN147636.1,NW_001884452.4 chrUn_KN147637v2 171924 unplaced primary KN147637.2,NW_001884473.4 chrUn_KN147642v2 204646 unplaced primary KN147642.2,NW_001878780.5 chrUn_KN147651v2 351968 unplaced primary KN147651.2,NW_003040715.4 chrUn_KN147652v2 252640 unplaced primary KN147652.2,NW_001884533.5 chrUn_KN148038v2 17585 unplaced primary KN148038.2,NW_003334681.2 chrUn_KN148828v2 13322 unplaced primary KN148828.2,NW_003335484.2 chrUn_KN148869v2 18523 unplaced primary KN148869.2,NW_003335528.3 chrUn_KN149680v1 38724 unplaced primary KN149680.1,NW_003336264.2 chrUn_KN149682v1 137468 unplaced primary KN149682.1,NW_001878251.4 chrUn_KN149683v1 152860 unplaced primary KN149683.1,NW_001884381.4 chrUn_KN149684v1 159057 unplaced primary KN149684.1,NW_001878128.4 chrUn_KN149685v1 164780 unplaced primary KN149685.1,NW_001884386.4 chrUn_KN149686v1 260365 unplaced primary KN149686.1,NW_003044888.3 chrUn_KN149687v1 165668 unplaced primary KN149687.1,NW_001884400.4 chrUn_KN149688v2 252035 unplaced primary KN149688.2,NW_001878118.5 chrUn_KN149689v2 201817 unplaced primary KN149689.2,NW_001879289.5 chrUn_KN149690v1 343018 unplaced primary KN149690.1,NW_001884413.3 chrUn_KN149691v1 233193 unplaced primary KN149691.1,NW_001884427.4 chrUn_KN149692v1 36911 unplaced primary KN149692.1,NW_001884442.4 chrUn_KN149693v1 49295 unplaced primary KN149693.1,NW_001884441.4 chrUn_KN149694v1 162759 unplaced primary KN149694.1,NW_001884444.4 chrUn_KN149695v1 190731 unplaced primary KN149695.1,NW_003039389.3 chrUn_KN149696v2 368252 unplaced primary KN149696.2,NW_003039384.4 chrUn_KN149697v1 40969 unplaced primary KN149697.1,NW_008805346.1 chrUn_KN149698v1 108577 unplaced primary KN149698.1,NW_008805347.1 chrUn_KN149700v1 40050 unplaced primary KN149700.1,NW_003337144.1 chrUn_KN149701v1 3760 unplaced primary KN149701.1,NW_008805348.1 chrUn_KN149702v1 100325 unplaced primary KN149702.1,NW_008805349.1 chrUn_KN149703v1 13902 unplaced primary KN149703.1,NW_003336866.1 chrUn_KN149705v1 27926 unplaced primary KN149705.1,NW_003336598.1 chrUn_KN149706v1 33279 unplaced primary KN149706.1,NW_003336851.1 chrUn_KN149707v2 7455 unplaced primary KN149707.2,NW_008805351.2 chrUn_KN149708v1 20567 unplaced primary KN149708.1,NW_003337018.1 chrUn_KN149709v1 27814 unplaced primary KN149709.1,NW_003336433.1 chrUn_KN149710v1 50974 unplaced primary KN149710.1,NW_003335779.1 chrUn_KN149711v1 11473 unplaced primary KN149711.1,NW_003336950.1 chrUn_KN149713v1 10094 unplaced primary KN149713.1,NW_008805353.1 chrUn_KN149714v1 74622 unplaced primary KN149714.1,NW_003337205.1 chrUn_KN149715v1 19020 unplaced primary KN149715.1,NW_003336714.2 chrUn_KN149716v1 42229 unplaced primary KN149716.1,NW_003334619.1 chrUn_KN149717v1 47589 unplaced primary KN149717.1,NW_003337229.1 chrUn_KN149718v1 65247 unplaced primary KN149718.1,NW_003336716.1 chrUn_KN149719v1 47531 unplaced primary KN149719.1,NW_003337263.1 chrUn_KN149720v1 10211 unplaced primary KN149720.1,NW_008805354.1 chrUn_KN149721v1 25462 unplaced primary KN149721.1,NW_003336827.1 chrUn_KN149722v1 13397 unplaced primary KN149722.1,NW_003336457.1 chrUn_KN149723v1 55784 unplaced primary KN149723.1,NW_003337194.1 chrUn_KN149724v1 11849 unplaced primary KN149724.1,NW_003336519.1 chrUn_KN149725v1 69829 unplaced primary KN149725.1,NW_003336869.1 chrUn_KN149727v1 24871 unplaced primary KN149727.1,NW_003336152.2 chrUn_KN149728v1 9442 unplaced primary KN149728.1,NW_003336547.1 chrUn_KN149729v1 5608 unplaced primary KN149729.1,NW_008805356.1 chrUn_KN149730v1 14804 unplaced primary KN149730.1,NW_003336623.1 chrUn_KN149732v1 16041 unplaced primary KN149732.1,NW_003336490.1 chrUn_KN149733v1 21637 unplaced primary KN149733.1,NW_003336868.1 chrUn_KN149735v1 5747 unplaced primary KN149735.1,NW_008805358.1 chrUn_KN149737v1 27700 unplaced primary KN149737.1,NW_003336345.1 chrUn_KN149738v1 10603 unplaced primary KN149738.1,NW_003337254.2 chrUn_KN149739v1 51610 unplaced primary KN149739.1,NW_003336823.1 chrUn_KN149740v1 1265 unplaced primary KN149740.1,NW_003334432.1 chrUn_KN149741v1 21941 unplaced primary KN149741.1,NW_003337078.1 chrUn_KN149742v1 2671 unplaced primary KN149742.1,NW_003336474.1 chrUn_KN149743v1 21023 unplaced primary KN149743.1,NW_003336724.1 chrUn_KN149745v1 8150 unplaced primary KN149745.1,NW_003337249.1 chrUn_KN149746v1 10900 unplaced primary KN149746.1,NW_008805361.1 chrUn_KN149747v1 16275 unplaced primary KN149747.1,NW_003336980.1 chrUn_KN149748v1 96570 unplaced primary KN149748.1,NW_003336540.1 chrUn_KN149749v1 40089 unplaced primary KN149749.1,NW_003336941.1 chrUn_KN149750v1 13928 unplaced primary KN149750.1,NW_003336571.1 chrUn_KN149751v1 15848 unplaced primary KN149751.1,NW_003336649.1 chrUn_KN149753v1 30249 unplaced primary KN149753.1,NW_003336977.1 chrUn_KN149754v1 40214 unplaced primary KN149754.1,NW_003336969.1 chrUn_KN149755v1 11941 unplaced primary KN149755.1,NW_003337240.1 chrUn_KN149756v1 11785 unplaced primary KN149756.1,NW_003337114.1 chrUn_KN149757v1 16145 unplaced primary KN149757.1,NW_003334832.2 chrUn_KN149758v1 9515 unplaced primary KN149758.1,NW_003336859.1 chrUn_KN149760v1 46605 unplaced primary KN149760.1,NW_003336744.1 chrUn_KN149761v1 14795 unplaced primary KN149761.1,NW_003336095.2 chrUn_KN149762v1 17936 unplaced primary KN149762.1,NW_008805363.1 chrUn_KN149763v1 19644 unplaced primary KN149763.1,NW_003336711.1 chrUn_KN149764v1 19831 unplaced primary KN149764.1,NW_003337091.2 chrUn_KN149765v1 29197 unplaced primary KN149765.1,NW_003336801.1 chrUn_KN149766v1 14664 unplaced primary KN149766.1,NW_003336970.1 chrUn_KN149767v1 30874 unplaced primary KN149767.1,NW_003337044.1 chrUn_KN149768v1 17671 unplaced primary KN149768.1,NW_003336765.1 chrUn_KN149769v1 53048 unplaced primary KN149769.1,NW_003337010.1 chrUn_KN149770v1 12046 unplaced primary KN149770.1,NW_003337047.1 chrUn_KN149771v1 14151 unplaced primary KN149771.1,NW_003336986.1 chrUn_KN149772v1 13273 unplaced primary KN149772.1,NW_003337052.1 chrUn_KN149774v1 12337 unplaced primary KN149774.1,NW_003336170.1 chrUn_KN149775v2 26074 unplaced primary KN149775.2,NW_003334589.2 chrUn_KN149777v1 1553 unplaced primary KN149777.1,NW_008805364.1 chrUn_KN149778v1 111598 unplaced primary KN149778.1,NW_003337175.1 chrUn_KN149779v1 21664 unplaced primary KN149779.1,NW_003334443.1 chrUn_KN149780v1 19718 unplaced primary KN149780.1,NW_003334404.1 chrUn_KN149782v1 36097 unplaced primary KN149782.1,NW_003337232.1 chrUn_KN149783v1 11892 unplaced primary KN149783.1,NW_003336802.1 chrUn_KN149784v1 73829 unplaced primary KN149784.1,NW_003337109.1 chrUn_KN149785v1 1577 unplaced primary KN149785.1,NW_003336582.1 chrUn_KN149786v1 1745 unplaced primary KN149786.1,NW_008805365.1 chrUn_KN149787v1 39794 unplaced primary KN149787.1,NW_003335933.1 chrUn_KN149788v1 8794 unplaced primary KN149788.1,NW_008805366.1 chrUn_KN149789v1 12990 unplaced primary KN149789.1,NW_003337184.1 chrUn_KN149790v1 115850 unplaced primary KN149790.1,NW_003336877.1 chrUn_KN149791v1 17273 unplaced primary KN149791.1,NW_003336635.1 chrUn_KN149792v1 11232 unplaced primary KN149792.1,NW_003337069.1 chrUn_KN149793v1 13298 unplaced primary KN149793.1,NW_008805367.1 chrUn_KN149794v1 25440 unplaced primary KN149794.1,NW_008805368.1 chrUn_KN149795v1 34615 unplaced primary KN149795.1,NW_003336860.1 chrUn_KN149796v1 25635 unplaced primary KN149796.1,NW_003336550.1 chrUn_KN149797v1 102101 unplaced primary KN149797.1,NW_003334026.1 chrUn_KN149798v1 1990 unplaced primary KN149798.1,NW_003336837.1 chrUn_KN149800v1 42049 unplaced primary KN149800.1,NW_008805369.1 chrUn_KN149801v1 4454 unplaced primary KN149801.1,NW_003336889.1 chrUn_KN149803v1 16018 unplaced primary KN149803.1,NW_003337090.1 chrUn_KN149804v1 10148 unplaced primary KN149804.1,NW_003337095.1 chrUn_KN149805v1 12432 unplaced primary KN149805.1,NW_003336290.1 chrUn_KN149806v1 15157 unplaced primary KN149806.1,NW_008805370.1 chrUn_KN149807v1 12512 unplaced primary KN149807.1,NW_003334875.1 chrUn_KN149809v1 2001 unplaced primary KN149809.1,NW_003336915.1 chrUn_KN149810v1 15043 unplaced primary KN149810.1,NW_003336919.1 chrUn_KN149811v1 8720 unplaced primary KN149811.1,NW_003336886.1 chrUn_KN149812v1 51419 unplaced primary KN149812.1,NW_003336288.1 chrUn_KN149813v1 59009 unplaced primary KN149813.1,NW_003336509.1 chrUn_KN149814v1 25878 unplaced primary KN149814.1,NW_003334686.1 chrUn_KN149815v1 33337 unplaced primary KN149815.1,NW_003334684.1 chrUn_KN149816v1 10128 unplaced primary KN149816.1,NW_003335521.2 chrUn_KN149817v1 11116 unplaced primary KN149817.1,NW_003337049.1 chrUn_KN149818v1 25942 unplaced primary KN149818.1,NW_003335384.1 chrUn_KN149819v1 10210 unplaced primary KN149819.1,NW_008805371.1 chrUn_KN149822v1 2460 unplaced primary KN149822.1,NW_003336643.1 chrUn_KN149823v1 14034 unplaced primary KN149823.1,NW_003335161.1 chrUn_KN149824v1 2357 unplaced primary KN149824.1,NW_003336698.1 chrUn_KN149825v1 22128 unplaced primary KN149825.1,NW_003336761.1 chrUn_KN149826v1 90482 unplaced primary KN149826.1,NW_003336654.1 chrUn_KN149827v1 13555 unplaced primary KN149827.1,NW_008805373.1 chrUn_KN149828v1 11414 unplaced primary KN149828.1,NW_003336660.1 chrUn_KN149829v1 27323 unplaced primary KN149829.1,NW_003335757.1 chrUn_KN149832v1 12483 unplaced primary KN149832.1,NW_003336959.1 chrUn_KN149834v1 17343 unplaced primary KN149834.1,NW_003337098.1 chrUn_KN149835v1 25861 unplaced primary KN149835.1,NW_003334814.2 chrUn_KN149836v1 34954 unplaced primary KN149836.1,NW_003335691.1 chrUn_KN149837v1 8007 unplaced primary KN149837.1,NW_003336667.1 chrUn_KN149838v1 29025 unplaced primary KN149838.1,NW_003337138.1 chrUn_KN149839v1 12998 unplaced primary KN149839.1,NW_003336838.1 chrUn_KN149840v1 46864 unplaced primary KN149840.1,NW_003336831.1 chrUn_KN149841v1 10085 unplaced primary KN149841.1,NW_003336073.1 chrUn_KN149843v1 33258 unplaced primary KN149843.1,NW_003336867.1 chrUn_KN149844v1 10201 unplaced primary KN149844.1,NW_003336430.1 chrUn_KN149846v1 28664 unplaced primary KN149846.1,NW_003336483.1 chrUn_KN149847v1 130903 unplaced primary KN149847.1,NW_003337258.1 chrUn_KN149848v1 10341 unplaced primary KN149848.1,NW_003336432.1 chrUn_KN149849v1 20421 unplaced primary KN149849.1,NW_008805378.1 chrUn_KN149850v1 33401 unplaced primary KN149850.1,NW_003337014.1 chrUn_KN149851v1 12094 unplaced primary KN149851.1,NW_003336419.1 chrUn_KN149852v1 30223 unplaced primary KN149852.1,NW_008805379.1 chrUn_KN149853v1 12817 unplaced primary KN149853.1,NW_003336917.1 chrUn_KN149854v1 6367 unplaced primary KN149854.1,NW_008805380.1 chrUn_KN149855v1 23165 unplaced primary KN149855.1,NW_003334236.1 chrUn_KN149856v1 35330 unplaced primary KN149856.1,NW_003334447.1 chrUn_KN149857v1 10132 unplaced primary KN149857.1,NW_008805381.1 chrUn_KN149859v1 53306 unplaced primary KN149859.1,NW_003336720.1 chrUn_KN149860v1 17408 unplaced primary KN149860.1,NW_003336315.1 chrUn_KN149861v1 14336 unplaced primary KN149861.1,NW_003336809.1 chrUn_KN149862v1 11987 unplaced primary KN149862.1,NW_003336301.1 chrUn_KN149863v1 11955 unplaced primary KN149863.1,NW_008805382.1 chrUn_KN149864v1 12929 unplaced primary KN149864.1,NW_008805383.1 chrUn_KN149865v1 49167 unplaced primary KN149865.1,NW_008805384.1 chrUn_KN149866v1 14752 unplaced primary KN149866.1,NW_003337099.1 chrUn_KN149867v1 1514 unplaced primary KN149867.1,NW_008805385.1 chrUn_KN149871v1 22553 unplaced primary KN149871.1,NW_003336239.1 chrUn_KN149872v1 12222 unplaced primary KN149872.1,NW_008805387.1 chrUn_KN149873v1 1146 unplaced primary KN149873.1,NW_008805388.1 chrUn_KN149874v1 5295 unplaced primary KN149874.1,NW_003335638.2 chrUn_KN149876v1 11298 unplaced primary KN149876.1,NW_003336849.1 chrUn_KN149878v1 7547 unplaced primary KN149878.1,NW_008805390.1 chrUn_KN149879v1 11893 unplaced primary KN149879.1,NW_003335459.1 chrUn_KN149880v1 64889 unplaced primary KN149880.1,NW_008805391.1 chrUn_KN149881v1 10736 unplaced primary KN149881.1,NW_008805392.1 chrUn_KN149882v1 7649 unplaced primary KN149882.1,NW_008805393.1 chrUn_KN149883v1 12434 unplaced primary KN149883.1,NW_003334215.1 chrUn_KN149884v1 51715 unplaced primary KN149884.1,NW_008805394.1 chrUn_KN149885v1 1347 unplaced primary KN149885.1,NW_003337168.1 chrUn_KN149887v1 11971 unplaced primary KN149887.1,NW_003336454.2 chrUn_KN149888v1 17117 unplaced primary KN149888.1,NW_003336349.1 chrUn_KN149889v1 10166 unplaced primary KN149889.1,NW_003336465.1 chrUn_KN149890v1 12029 unplaced primary KN149890.1,NW_003336424.1 chrUn_KN149892v1 24638 unplaced primary KN149892.1,NW_003336629.1 chrUn_KN149893v1 27995 unplaced primary KN149893.1,NW_003337247.1 chrUn_KN149895v1 92930 unplaced primary KN149895.1,NW_003334263.2 chrUn_KN149896v1 13102 unplaced primary KN149896.1,NW_003336289.1 chrUn_KN149897v1 14044 unplaced primary KN149897.1,NW_003336689.1 chrUn_KN149899v1 13632 unplaced primary KN149899.1,NW_003336497.1 chrUn_KN149900v1 11016 unplaced primary KN149900.1,NW_008805397.1 chrUn_KN149901v1 10512 unplaced primary KN149901.1,NW_003337164.1 chrUn_KN149903v1 11318 unplaced primary KN149903.1,NW_008805398.1 chrUn_KN149904v1 89156 unplaced primary KN149904.1,NW_003336333.2 chrUn_KN149905v1 14056 unplaced primary KN149905.1,NW_003336852.1 chrUn_KN149906v1 38987 unplaced primary KN149906.1,NW_003336751.1 chrUn_KN149907v1 9870 unplaced primary KN149907.1,NW_003337174.1 chrUn_KN149908v1 12800 unplaced primary KN149908.1,NW_003336848.1 chrUn_KN149909v1 40056 unplaced primary KN149909.1,NW_003336633.1 chrUn_KN149912v1 77979 unplaced primary KN149912.1,NW_003334245.1 chrUn_KN149913v1 16487 unplaced primary KN149913.1,NW_003337199.1 chrUn_KN149914v1 18241 unplaced primary KN149914.1,NW_003336354.1 chrUn_KN149915v1 10395 unplaced primary KN149915.1,NW_003336864.1 chrUn_KN149916v1 4293 unplaced primary KN149916.1,NW_003334505.1 chrUn_KN149917v1 3831 unplaced primary KN149917.1,NW_003335158.1 chrUn_KN149919v1 21073 unplaced primary KN149919.1,NW_003336948.1 chrUn_KN149921v1 28254 unplaced primary KN149921.1,NW_003336310.1 chrUn_KN149922v1 12529 unplaced primary KN149922.1,NW_008805400.1 chrUn_KN149923v1 36729 unplaced primary KN149923.1,NW_008805401.1 chrUn_KN149924v1 23395 unplaced primary KN149924.1,NW_003336874.1 chrUn_KN149925v1 29860 unplaced primary KN149925.1,NW_003336561.2 chrUn_KN149926v1 3688 unplaced primary KN149926.1,NW_003335249.1 chrUn_KN149927v1 11950 unplaced primary KN149927.1,NW_003335051.1 chrUn_KN149928v1 14297 unplaced primary KN149928.1,NW_003336610.1 chrUn_KN149931v1 6703 unplaced primary KN149931.1,NW_003335250.1 chrUn_KN149932v1 89521 unplaced primary KN149932.1,NW_003334672.2 chrUn_KN149933v1 13433 unplaced primary KN149933.1,NW_003336909.1 chrUn_KN149935v1 9230 unplaced primary KN149935.1,NW_003336782.1 chrUn_KN149936v1 16058 unplaced primary KN149936.1,NW_003337066.1 chrUn_KN149937v1 14110 unplaced primary KN149937.1,NW_003335043.1 chrUn_KN149938v1 12455 unplaced primary KN149938.1,NW_003335831.2 chrUn_KN149939v1 76611 unplaced primary KN149939.1,NW_003336586.1 chrUn_KN149940v1 11887 unplaced primary KN149940.1,NW_003336458.1 chrUn_KN149941v1 13607 unplaced primary KN149941.1,NW_003336575.1 chrUn_KN149943v1 29608 unplaced primary KN149943.1,NW_003334256.1 chrUn_KN149944v1 24909 unplaced primary KN149944.1,NW_003336415.1 chrUn_KN149946v1 33071 unplaced primary KN149946.1,NW_003336936.1 chrUn_KN149948v1 117499 unplaced primary KN149948.1,NW_003336703.1 chrUn_KN149949v1 64126 unplaced primary KN149949.1,NW_003336421.1 chrUn_KN149950v1 5952 unplaced primary KN149950.1,NW_003336979.1 chrUn_KN149951v1 5000 unplaced primary KN149951.1,NW_008805406.1 chrUn_KN149953v1 46218 unplaced primary KN149953.1,NW_003337062.1 chrUn_KN149955v1 19758 unplaced primary KN149955.1,NW_003336646.1 chrUn_KN149956v1 1889 unplaced primary KN149956.1,NW_008805408.1 chrUn_KN149957v1 1094 unplaced primary KN149957.1,NW_008805409.1 chrUn_KN149958v1 43073 unplaced primary KN149958.1,NW_003336942.1 chrUn_KN149959v1 59274 unplaced primary KN149959.1,NW_003336480.1 chrUn_KN149960v1 9235 unplaced primary KN149960.1,NW_003336389.1 chrUn_KN149961v1 20600 unplaced primary KN149961.1,NW_003337190.1 chrUn_KN149965v1 14790 unplaced primary KN149965.1,NW_003336066.1 chrUn_KN149967v1 8612 unplaced primary KN149967.1,NW_003335242.1 chrUn_KN149968v1 82990 unplaced primary KN149968.1,NW_003336650.1 chrUn_KN149969v1 13714 unplaced primary KN149969.1,NW_003336580.1 chrUn_KN149970v1 17511 unplaced primary KN149970.1,NW_003336817.2 chrUn_KN149971v1 11275 unplaced primary KN149971.1,NW_008805412.1 chrUn_KN149973v1 35555 unplaced primary KN149973.1,NW_003336937.1 chrUn_KN149974v1 19596 unplaced primary KN149974.1,NW_003336967.1 chrUn_KN149976v1 11858 unplaced primary KN149976.1,NW_003336371.1 chrUn_KN149977v2 11023 unplaced primary KN149977.2,NW_003337153.3 chrUn_KN149978v1 16801 unplaced primary KN149978.1,NW_003337086.1 chrUn_KN149979v1 22834 unplaced primary KN149979.1,NW_003336097.2 chrUn_KN149980v1 7980 unplaced primary KN149980.1,NW_008805415.1 chrUn_KN149981v1 12811 unplaced primary KN149981.1,NW_003337160.1 chrUn_KN149982v1 31814 unplaced primary KN149982.1,NW_003337139.1 chrUn_KN149983v1 17884 unplaced primary KN149983.1,NW_003336330.2 chrUn_KN149984v1 96477 unplaced primary KN149984.1,NW_003337241.1 chrUn_KN149988v1 9944 unplaced primary KN149988.1,NW_003336685.1 chrUn_KN149989v1 34480 unplaced primary KN149989.1,NW_003336748.2 chrUn_KN149990v1 57651 unplaced primary KN149990.1,NW_003337093.1 chrUn_KN149991v1 9871 unplaced primary KN149991.1,NW_003337156.1 chrUn_KN149992v1 57912 unplaced primary KN149992.1,NW_003336600.1 chrUn_KN149993v1 16921 unplaced primary KN149993.1,NW_003336466.1 chrUn_KN149995v1 12015 unplaced primary KN149995.1,NW_008805417.1 chrUn_KN149996v1 33528 unplaced primary KN149996.1,NW_003337137.1 chrUn_KN149997v1 6296 unplaced primary KN149997.1,NW_003336787.1 chrUn_KN149998v1 74724 unplaced primary KN149998.1,NW_003336316.1 chrUn_KN149999v1 14071 unplaced primary KN149999.1,NW_003336567.1 chrUn_KN150000v1 69737 unplaced primary KN150000.1,NW_003334656.2 chrUn_KN150002v1 17430 unplaced primary KN150002.1,NW_003336323.1 chrUn_KN150004v2 13059 unplaced primary KN150004.2,NW_003334666.3 chrUn_KN150005v1 34409 unplaced primary KN150005.1,NW_003336945.1 chrUn_KN150006v1 10518 unplaced primary KN150006.1,NW_003336825.1 chrUn_KN150007v1 13072 unplaced primary KN150007.1,NW_003336659.1 chrUn_KN150008v1 15572 unplaced primary KN150008.1,NW_003337256.1 chrUn_KN150009v1 17727 unplaced primary KN150009.1,NW_003336489.1 chrUn_KN150011v1 12995 unplaced primary KN150011.1,NW_003336777.1 chrUn_KN150012v1 11998 unplaced primary KN150012.1,NW_008805419.1 chrUn_KN150013v1 8488 unplaced primary KN150013.1,NW_003334233.2 chrUn_KN150014v1 13588 unplaced primary KN150014.1,NW_003337111.1 chrUn_KN150015v1 33441 unplaced primary KN150015.1,NW_003337220.1 chrUn_KN150016v1 21592 unplaced primary KN150016.1,NW_003335387.1 chrUn_KN150017v1 25636 unplaced primary KN150017.1,NW_003337217.1 chrUn_KN150018v1 1063 unplaced primary KN150018.1,NW_008805420.1 chrUn_KN150019v2 19834 unplaced primary KN150019.2,NW_003337129.2 chrUn_KN150020v1 11925 unplaced primary KN150020.1,NW_003336607.1 chrUn_KN150021v1 103967 unplaced primary KN150021.1,NW_003337037.1 chrUn_KN150022v1 76538 unplaced primary KN150022.1,NW_003336365.1 chrUn_KN150023v1 22153 unplaced primary KN150023.1,NW_003336353.1 chrUn_KN150024v1 1714 unplaced primary KN150024.1,NW_003336344.1 chrUn_KN150025v1 26343 unplaced primary KN150025.1,NW_003337067.1 chrUn_KN150028v1 19517 unplaced primary KN150028.1,NW_008805422.1 chrUn_KN150029v1 12415 unplaced primary KN150029.1,NW_008805423.1 chrUn_KN150030v1 57074 unplaced primary KN150030.1,NW_003336951.2 chrUn_KN150031v1 60899 unplaced primary KN150031.1,NW_003337200.1 chrUn_KN150032v1 29546 unplaced primary KN150032.1,NW_003336336.1 chrUn_KN150033v1 56448 unplaced primary KN150033.1,NW_003336670.1 chrUn_KN150034v1 1919 unplaced primary KN150034.1,NW_008805424.1 chrUn_KN150035v1 38086 unplaced primary KN150035.1,NW_003334265.1 chrUn_KN150037v1 2866 unplaced primary KN150037.1,NW_003336693.1 chrUn_KN150038v1 71326 unplaced primary KN150038.1,NW_003336974.1 chrUn_KN150039v1 3463 unplaced primary KN150039.1,NW_003335647.1 chrUn_KN150040v1 19896 unplaced primary KN150040.1,NW_008805426.1 chrUn_KN150041v2 66431 unplaced primary KN150041.2,NW_003334673.3 chrUn_KN150042v1 30789 unplaced primary KN150042.1,NW_003335185.2 chrUn_KN150043v1 31984 unplaced primary KN150043.1,NW_008805427.1 chrUn_KN150044v1 9097 unplaced primary KN150044.1,NW_003334669.1 chrUn_KN150045v2 10364 unplaced primary KN150045.2,NW_008805428.2 chrUn_KN150047v1 20749 unplaced primary KN150047.1,NW_003337234.1 chrUn_KN150048v1 128109 unplaced primary KN150048.1,NW_003336792.1 chrUn_KN150049v1 45008 unplaced primary KN150049.1,NW_003336830.1 chrUn_KN150051v1 1995 unplaced primary KN150051.1,NW_008805430.1 chrUn_KN150052v1 15943 unplaced primary KN150052.1,NW_003335153.1 chrUn_KN150054v1 16143 unplaced primary KN150054.1,NW_003336990.1 chrUn_KN150055v1 32561 unplaced primary KN150055.1,NW_003335922.2 chrUn_KN150056v1 29449 unplaced primary KN150056.1,NW_008805431.1 chrUn_KN150057v1 10736 unplaced primary KN150057.1,NW_003336282.1 chrUn_KN150058v1 21348 unplaced primary KN150058.1,NW_003336625.1 chrUn_KN150059v1 16588 unplaced primary KN150059.1,NW_003334628.1 chrUn_KN150060v1 80234 unplaced primary KN150060.1,NW_003336912.2 chrUn_KN150061v1 24048 unplaced primary KN150061.1,NW_003336820.1 chrUn_KN150062v1 35038 unplaced primary KN150062.1,NW_003336370.1 chrUn_KN150063v1 20846 unplaced primary KN150063.1,NW_003335276.1 chrUn_KN150064v1 14598 unplaced primary KN150064.1,NW_003337176.1 chrUn_KN150065v1 9859 unplaced primary KN150065.1,NW_008805432.1 chrUn_KN150066v1 29537 unplaced primary KN150066.1,NW_003336574.1 chrUn_KN150067v1 27325 unplaced primary KN150067.1,NW_003336420.1 chrUn_KN150068v1 62725 unplaced primary KN150068.1,NW_003336525.1 chrUn_KN150070v1 14070 unplaced primary KN150070.1,NW_008805433.1 chrUn_KN150071v1 14960 unplaced primary KN150071.1,NW_003336739.1 chrUn_KN150072v1 13309 unplaced primary KN150072.1,NW_003335332.2 chrUn_KN150073v1 14052 unplaced primary KN150073.1,NW_008805434.1 chrUn_KN150074v1 28653 unplaced primary KN150074.1,NW_003335891.1 chrUn_KN150076v1 14425 unplaced primary KN150076.1,NW_003336326.1 chrUn_KN150077v1 51360 unplaced primary KN150077.1,NW_003336780.1 chrUn_KN150078v1 12098 unplaced primary KN150078.1,NW_003334214.1 chrUn_KN150079v1 46800 unplaced primary KN150079.1,NW_003336064.1 chrUn_KN150080v1 37662 unplaced primary KN150080.1,NW_003336501.1 chrUn_KN150081v1 12836 unplaced primary KN150081.1,NW_003336620.1 chrUn_KN150082v1 8788 unplaced primary KN150082.1,NW_003336755.1 chrUn_KN150083v1 49514 unplaced primary KN150083.1,NW_003337125.1 chrUn_KN150084v1 24192 unplaced primary KN150084.1,NW_003336468.1 chrUn_KN150085v1 29177 unplaced primary KN150085.1,NW_003334395.2 chrUn_KN150086v1 1639 unplaced primary KN150086.1,NW_003337228.1 chrUn_KN150089v1 13104 unplaced primary KN150089.1,NW_008805435.1 chrUn_KN150090v1 12028 unplaced primary KN150090.1,NW_003336362.1 chrUn_KN150092v1 14544 unplaced primary KN150092.1,NW_003337253.1 chrUn_KN150093v1 14738 unplaced primary KN150093.1,NW_008805436.1 chrUn_KN150094v1 7824 unplaced primary KN150094.1,NW_008805437.1 chrUn_KN150095v1 9204 unplaced primary KN150095.1,NW_008805438.1 chrUn_KN150097v1 11690 unplaced primary KN150097.1,NW_003336961.1 chrUn_KN150098v1 68279 unplaced primary KN150098.1,NW_003335654.1 chrUn_KN150100v1 9237 unplaced primary KN150100.1,NW_003334852.2 chrUn_KN150102v1 34431 unplaced primary KN150102.1,NW_003337197.1 chrUn_KN150103v1 4090 unplaced primary KN150103.1,NW_008805440.1 chrUn_KN150104v1 53188 unplaced primary KN150104.1,NW_003335567.1 chrUn_KN150105v1 58062 unplaced primary KN150105.1,NW_003337145.1 chrUn_KN150106v1 56524 unplaced primary KN150106.1,NW_003334032.1 chrUn_KN150110v1 9804 unplaced primary KN150110.1,NW_003336548.1 chrUn_KN150111v1 29931 unplaced primary KN150111.1,NW_003335663.1 chrUn_KN150112v1 3423 unplaced primary KN150112.1,NW_003334114.1 chrUn_KN150113v1 19310 unplaced primary KN150113.1,NW_003336808.1 chrUn_KN150114v1 24178 unplaced primary KN150114.1,NW_003336645.1 chrUn_KN150115v1 18676 unplaced primary KN150115.1,NW_008805441.1 chrUn_KN150117v1 48543 unplaced primary KN150117.1,NW_003336299.1 chrUn_KN150118v1 54494 unplaced primary KN150118.1,NW_003337121.1 chrUn_KN150119v1 1143 unplaced primary KN150119.1,NW_008805442.1 chrUn_KN150120v1 27511 unplaced primary KN150120.1,NW_008805443.1 chrUn_KN150121v1 8447 unplaced primary KN150121.1,NW_003337032.1 chrUn_KN150122v1 67534 unplaced primary KN150122.1,NW_003337033.1 chrUn_KN150123v1 51978 unplaced primary KN150123.1,NW_003334680.2 chrUn_KN150125v1 83315 unplaced primary KN150125.1,NW_003337013.1 chrUn_KN150126v1 24847 unplaced primary KN150126.1,NW_003336385.1 chrUn_KN150127v1 33302 unplaced primary KN150127.1,NW_003336678.1 chrUn_KN150128v1 12262 unplaced primary KN150128.1,NW_003336812.1 chrUn_KN150130v1 9925 unplaced primary KN150130.1,NW_008805444.1 chrUn_KN150131v1 70868 unplaced primary KN150131.1,NW_008805445.1 chrUn_KN150132v1 13999 unplaced primary KN150132.1,NW_003336900.1 chrUn_KN150133v2 53456 unplaced primary KN150133.2,NW_003334034.2 chrUn_KN150134v1 29067 unplaced primary KN150134.1,NW_003336226.1 chrUn_KN150136v1 49373 unplaced primary KN150136.1,NW_003336484.1 chrUn_KN150137v1 36779 unplaced primary KN150137.1,NW_003336679.1 chrUn_KN150140v2 19733 unplaced primary KN150140.2,NW_003336878.3 chrUn_KN150141v1 17117 unplaced primary KN150141.1,NW_003335166.2 chrUn_KN150144v1 14974 unplaced primary KN150144.1,NW_003336479.1 chrUn_KN150145v1 9970 unplaced primary KN150145.1,NW_008805448.1 chrUn_KN150146v1 9714 unplaced primary KN150146.1,NW_003337126.1 chrUn_KN150147v1 7977 unplaced primary KN150147.1,NW_003335184.2 chrUn_KN150148v1 44589 unplaced primary KN150148.1,NW_003337040.2 chrUn_KN150150v1 9780 unplaced primary KN150150.1,NW_008805449.1 chrUn_KN150152v1 9348 unplaced primary KN150152.1,NW_008805450.1 chrUn_KN150154v1 21695 unplaced primary KN150154.1,NW_003335322.1 chrUn_KN150155v1 10282 unplaced primary KN150155.1,NW_008805451.1 chrUn_KN150156v1 33247 unplaced primary KN150156.1,NW_003337259.1 chrUn_KN150157v1 18756 unplaced primary KN150157.1,NW_003337224.1 chrUn_KN150158v1 106536 unplaced primary KN150158.1,NW_003335383.2 chrUn_KN150159v1 35229 unplaced primary KN150159.1,NW_003337196.1 chrUn_KN150160v1 17824 unplaced primary KN150160.1,NW_003336286.1 chrUn_KN150161v1 12647 unplaced primary KN150161.1,NW_008805452.1 chrUn_KN150162v1 10930 unplaced primary KN150162.1,NW_003336381.1 chrUn_KN150164v1 11300 unplaced primary KN150164.1,NW_003335796.1 chrUn_KN150165v1 32739 unplaced primary KN150165.1,NW_003336925.1 chrUn_KN150166v1 49457 unplaced primary KN150166.1,NW_003336541.1 chrUn_KN150167v1 13466 unplaced primary KN150167.1,NW_003336392.1 chrUn_KN150168v1 28382 unplaced primary KN150168.1,NW_003336254.1 chrUn_KN150170v1 55716 unplaced primary KN150170.1,NW_003336404.2 chrUn_KN150171v1 140649 unplaced primary KN150171.1,NW_003336964.1 chrUn_KN150172v1 40634 unplaced primary KN150172.1,NW_008805454.1 chrUn_KN150173v1 50946 unplaced primary KN150173.1,NW_003336455.2 chrUn_KN150174v1 13450 unplaced primary KN150174.1,NW_008805455.1 chrUn_KN150175v1 24612 unplaced primary KN150175.1,NW_003337250.1 chrUn_KN150176v1 69061 unplaced primary KN150176.1,NW_003334499.2 chrUn_KN150177v1 21670 unplaced primary KN150177.1,NW_003336928.1 chrUn_KN150179v1 47473 unplaced primary KN150179.1,NW_003336461.1 chrUn_KN150180v1 1872 unplaced primary KN150180.1,NW_003337031.1 chrUn_KN150181v1 32761 unplaced primary KN150181.1,NW_003335920.1 chrUn_KN150182v1 11735 unplaced primary KN150182.1,NW_003337162.1 chrUn_KN150183v1 22266 unplaced primary KN150183.1,NW_003334281.1 chrUn_KN150184v1 16312 unplaced primary KN150184.1,NW_003336327.1 chrUn_KN150185v1 8651 unplaced primary KN150185.1,NW_003336293.1 chrUn_KN150186v1 23923 unplaced primary KN150186.1,NW_003334071.2 chrUn_KN150187v1 19179 unplaced primary KN150187.1,NW_003336328.1 chrUn_KN150189v1 38868 unplaced primary KN150189.1,NW_003336699.1 chrUn_KN150190v1 11399 unplaced primary KN150190.1,NW_003336858.1 chrUn_KN150191v1 42303 unplaced primary KN150191.1,NW_003334899.1 chrUn_KN150193v1 12580 unplaced primary KN150193.1,NW_003336332.1 chrUn_KN150194v1 13629 unplaced primary KN150194.1,NW_003336375.1 chrUn_KN150195v1 18921 unplaced primary KN150195.1,NW_003336913.1 chrUn_KN150196v1 89077 unplaced primary KN150196.1,NW_008805458.1 chrUn_KN150197v1 14532 unplaced primary KN150197.1,NW_003337171.1 chrUn_KN150199v1 16564 unplaced primary KN150199.1,NW_003336871.1 chrUn_KN150200v1 31861 unplaced primary KN150200.1,NW_008805459.1 chrUn_KN150201v1 9480 unplaced primary KN150201.1,NW_003336661.1 chrUn_KN150202v1 15451 unplaced primary KN150202.1,NW_003337002.1 chrUn_KN150203v1 24004 unplaced primary KN150203.1,NW_003337189.1 chrUn_KN150204v1 95149 unplaced primary KN150204.1,NW_003337204.1 chrUn_KN150205v1 2620 unplaced primary KN150205.1,NW_003337172.1 chrUn_KN150206v1 2052 unplaced primary KN150206.1,NW_003336388.1 chrUn_KN150210v1 12550 unplaced primary KN150210.1,NW_003337136.1 chrUn_KN150211v1 16386 unplaced primary KN150211.1,NW_003336376.1 chrUn_KN150212v1 18932 unplaced primary KN150212.1,NW_003335408.1 chrUn_KN150213v1 16101 unplaced primary KN150213.1,NW_008805461.1 chrUn_KN150214v1 162877 unplaced primary KN150214.1,NW_003336732.1 chrUn_KN150215v1 1237 unplaced primary KN150215.1,NW_003334517.2 chrUn_KN150216v1 1020 unplaced primary KN150216.1,NW_008805462.1 chrUn_KN150217v1 13840 unplaced primary KN150217.1,NW_008805463.1 chrUn_KN150218v1 15354 unplaced primary KN150218.1,NW_003336601.1 chrUn_KN150219v1 16672 unplaced primary KN150219.1,NW_003336553.1 chrUn_KN150220v1 29625 unplaced primary KN150220.1,NW_003335052.1 chrUn_KN150221v1 28122 unplaced primary KN150221.1,NW_003336895.1 chrUn_KN150222v1 110669 unplaced primary KN150222.1,NW_003336730.1 chrUn_KN150224v1 24154 unplaced primary KN150224.1,NW_003335355.2 chrUn_KN150225v1 20429 unplaced primary KN150225.1,NW_008805465.1 chrUn_KN150226v1 25293 unplaced primary KN150226.1,NW_003334453.1 chrUn_KN150227v1 31979 unplaced primary KN150227.1,NW_003336903.1 chrUn_KN150228v1 17061 unplaced primary KN150228.1,NW_003337202.1 chrUn_KN150229v1 1251 unplaced primary KN150229.1,NW_003336632.1 chrUn_KN150230v1 149710 unplaced primary KN150230.1,NW_003335764.1 chrUn_KN150231v1 2322 unplaced primary KN150231.1,NW_008805466.1 chrUn_KN150232v1 53540 unplaced primary KN150232.1,NW_003336350.1 chrUn_KN150233v1 2246 unplaced primary KN150233.1,NW_003336429.1 chrUn_KN150234v1 18511 unplaced primary KN150234.1,NW_003336769.1 chrUn_KN150236v1 19315 unplaced primary KN150236.1,NW_008805468.1 chrUn_KN150237v1 1732 unplaced primary KN150237.1,NW_003336914.1 chrUn_KN150238v1 9450 unplaced primary KN150238.1,NW_003336515.1 chrUn_KN150240v1 31723 unplaced primary KN150240.1,NW_003335884.2 chrUn_KN150241v1 60821 unplaced primary KN150241.1,NW_003336647.1 chrUn_KN150242v1 20063 unplaced primary KN150242.1,NW_003334219.2 chrUn_KN150243v2 45964 unplaced primary KN150243.2,NW_003336949.3 chrUn_KN150244v1 42860 unplaced primary KN150244.1,NW_003336894.1 chrUn_KN150246v1 15365 unplaced primary KN150246.1,NW_008805470.1 chrUn_KN150248v1 18273 unplaced primary KN150248.1,NW_003337198.1 chrUn_KN150249v1 12261 unplaced primary KN150249.1,NW_003336377.1 chrUn_KN150250v1 13560 unplaced primary KN150250.1,NW_008805472.1 chrUn_KN150251v1 26988 unplaced primary KN150251.1,NW_008805473.1 chrUn_KN150252v1 43133 unplaced primary KN150252.1,NW_003334150.2 chrUn_KN150253v1 3149 unplaced primary KN150253.1,NW_003336972.2 chrUn_KN150254v1 12144 unplaced primary KN150254.1,NW_003336921.1 chrUn_KN150255v2 29368 unplaced primary KN150255.2,NW_003336517.2 chrUn_KN150257v1 12735 unplaced primary KN150257.1,NW_003336819.1 chrUn_KN150258v1 95885 unplaced primary KN150258.1,NW_003337070.1 chrUn_KN150259v1 50098 unplaced primary KN150259.1,NW_003336396.1 chrUn_KN150260v1 12318 unplaced primary KN150260.1,NW_003337096.1 chrUn_KN150263v1 31336 unplaced primary KN150263.1,NW_003336283.1 chrUn_KN150264v1 16955 unplaced primary KN150264.1,NW_003334519.2 chrUn_KN150265v1 51555 unplaced primary KN150265.1,NW_003335278.1 chrUn_KN150267v1 77778 unplaced primary KN150267.1,NW_003337203.1 chrUn_KN150268v1 15280 unplaced primary KN150268.1,NW_008805476.1 chrUn_KN150269v1 48062 unplaced primary KN150269.1,NW_003336662.1 chrUn_KN150270v1 22285 unplaced primary KN150270.1,NW_003337159.1 chrUn_KN150271v1 12637 unplaced primary KN150271.1,NW_003336846.1 chrUn_KN150272v1 34295 unplaced primary KN150272.1,NW_003336573.1 chrUn_KN150274v1 12247 unplaced primary KN150274.1,NW_003336884.1 chrUn_KN150275v1 13800 unplaced primary KN150275.1,NW_003336488.1 chrUn_KN150276v1 12942 unplaced primary KN150276.1,NW_003336666.1 chrUn_KN150278v1 30978 unplaced primary KN150278.1,NW_003337101.1 chrUn_KN150279v1 11402 unplaced primary KN150279.1,NW_003337080.1 chrUn_KN150280v1 10487 unplaced primary KN150280.1,NW_008805478.1 chrUn_KN150282v1 23758 unplaced primary KN150282.1,NW_003336036.1 chrUn_KN150283v1 13933 unplaced primary KN150283.1,NW_008805480.1 chrUn_KN150284v1 18131 unplaced primary KN150284.1,NW_003336443.1 chrUn_KN150285v1 25361 unplaced primary KN150285.1,NW_003334203.1 chrUn_KN150286v1 9068 unplaced primary KN150286.1,NW_008805481.1 chrUn_KN150287v1 11856 unplaced primary KN150287.1,NW_003337239.1 chrUn_KN150289v1 22206 unplaced primary KN150289.1,NW_003336437.1 chrUn_KN150290v1 18248 unplaced primary KN150290.1,NW_003337065.1 chrUn_KN150291v1 25796 unplaced primary KN150291.1,NW_003336764.1 chrUn_KN150292v1 9984 unplaced primary KN150292.1,NW_003337025.1 chrUn_KN150293v1 40764 unplaced primary KN150293.1,NW_008805483.1 chrUn_KN150296v1 10238 unplaced primary KN150296.1,NW_003336834.1 chrUn_KN150297v1 23472 unplaced primary KN150297.1,NW_003337028.1 chrUn_KN150299v1 23511 unplaced primary KN150299.1,NW_003337154.1 chrUn_KN150300v1 9489 unplaced primary KN150300.1,NW_003336674.1 chrUn_KN150301v1 18664 unplaced primary KN150301.1,NW_003336572.2 chrUn_KN150302v1 13538 unplaced primary KN150302.1,NW_008805487.1 chrUn_KN150303v1 39288 unplaced primary KN150303.1,NW_008805488.1 chrUn_KN150306v1 36728 unplaced primary KN150306.1,NW_003336603.1 chrUn_KN150307v1 9167 unplaced primary KN150307.1,NW_003336554.1 chrUn_KN150308v1 18907 unplaced primary KN150308.1,NW_003337131.2 chrUn_KN150309v1 20999 unplaced primary KN150309.1,NW_003336529.1 chrUn_KN150310v1 20509 unplaced primary KN150310.1,NW_008805490.1 chrUn_KN150311v1 15747 unplaced primary KN150311.1,NW_003337042.1 chrUn_KN150312v1 17282 unplaced primary KN150312.1,NW_008805491.1 chrUn_KN150313v1 20655 unplaced primary KN150313.1,NW_003336176.2 chrUn_KN150314v1 12455 unplaced primary KN150314.1,NW_003337059.1 chrUn_KN150315v1 20424 unplaced primary KN150315.1,NW_003337219.1 chrUn_KN150317v1 14866 unplaced primary KN150317.1,NW_008805493.1 chrUn_KN150318v1 2580 unplaced primary KN150318.1,NW_008805494.1 chrUn_KN150319v1 15807 unplaced primary KN150319.1,NW_003336810.1 chrUn_KN150320v1 1241 unplaced primary KN150320.1,NW_008805495.1 chrUn_KN150322v1 19644 unplaced primary KN150322.1,NW_008805497.1 chrUn_KN150323v1 18137 unplaced primary KN150323.1,NW_003336675.1 chrUn_KN150324v1 24032 unplaced primary KN150324.1,NW_003334033.1 chrUn_KN150325v1 19525 unplaced primary KN150325.1,NW_003336599.1 chrUn_KN150326v1 109565 unplaced primary KN150326.1,NW_003336663.1 chrUn_KN150327v1 19949 unplaced primary KN150327.1,NW_008805498.1 chrUn_KN150328v1 17410 unplaced primary KN150328.1,NW_003336978.1 chrUn_KN150329v1 13297 unplaced primary KN150329.1,NW_003337127.1 chrUn_KN150330v1 28440 unplaced primary KN150330.1,NW_003334988.2 chrUn_KN150331v1 44968 unplaced primary KN150331.1,NW_003336940.1 chrUn_KN150332v1 22862 unplaced primary KN150332.1,NW_003336784.1 chrUn_KN150333v1 12275 unplaced primary KN150333.1,NW_003335050.1 chrUn_KN150334v1 22542 unplaced primary KN150334.1,NW_003336876.1 chrUn_KN150335v1 44504 unplaced primary KN150335.1,NW_003337117.1 chrUn_KN150336v1 48672 unplaced primary KN150336.1,NW_003334683.1 chrUn_KN150337v1 20260 unplaced primary KN150337.1,NW_003336442.1 chrUn_KN150338v1 1142 unplaced primary KN150338.1,NW_003336815.1 chrUn_KN150340v1 28741 unplaced primary KN150340.1,NW_003334670.1 chrUn_KN150341v1 31147 unplaced primary KN150341.1,NW_003337182.1 chrUn_KN150342v1 82590 unplaced primary KN150342.1,NW_003335650.1 chrUn_KN150343v1 26928 unplaced primary KN150343.1,NW_003336806.1 chrUn_KN150344v1 19681 unplaced primary KN150344.1,NW_008805499.1 chrUn_KN150345v1 17012 unplaced primary KN150345.1,NW_003337008.2 chrUn_KN150347v1 51528 unplaced primary KN150347.1,NW_003336513.1 chrUn_KN150349v1 29114 unplaced primary KN150349.1,NW_003336956.1 chrUn_KN150350v1 9245 unplaced primary KN150350.1,NW_003336410.1 chrUn_KN150351v1 49608 unplaced primary KN150351.1,NW_003336758.1 chrUn_KN150352v2 25352 unplaced primary KN150352.2,NW_003336681.2 chrUn_KN150353v1 19631 unplaced primary KN150353.1,NW_003336715.1 chrUn_KN150354v1 1452 unplaced primary KN150354.1,NW_003336475.1 chrUn_KN150355v1 6731 unplaced primary KN150355.1,NW_003337006.1 chrUn_KN150357v1 27326 unplaced primary KN150357.1,NW_003337192.1 chrUn_KN150358v1 9951 unplaced primary KN150358.1,NW_008805501.1 chrUn_KN150360v1 15639 unplaced primary KN150360.1,NW_003336934.1 chrUn_KN150361v1 53624 unplaced primary KN150361.1,NW_008805502.1 chrUn_KN150362v1 17145 unplaced primary KN150362.1,NW_003336636.1 chrUn_KN150363v1 22766 unplaced primary KN150363.1,NW_003336387.2 chrUn_KN150364v1 15084 unplaced primary KN150364.1,NW_003336746.1 chrUn_KN150365v1 10769 unplaced primary KN150365.1,NW_008805503.1 chrUn_KN150366v1 10057 unplaced primary KN150366.1,NW_003336766.1 chrUn_KN150368v1 18491 unplaced primary KN150368.1,NW_003336088.1 chrUn_KN150369v1 11460 unplaced primary KN150369.1,NW_003336929.1 chrUn_KN150371v1 13836 unplaced primary KN150371.1,NW_003336374.1 chrUn_KN150372v1 29560 unplaced primary KN150372.1,NW_003337097.1 chrUn_KN150374v1 9775 unplaced primary KN150374.1,NW_003336772.2 chrUn_KN150375v1 111208 unplaced primary KN150375.1,NW_008805506.1 chrUn_KN150379v1 29907 unplaced primary KN150379.1,NW_003336918.1 chrUn_KN150380v1 12144 unplaced primary KN150380.1,NW_003337115.1 chrUn_KN150382v1 14074 unplaced primary KN150382.1,NW_003336287.1 chrUn_KN150383v1 7777 unplaced primary KN150383.1,NW_003335266.1 chrUn_KN150384v1 22969 unplaced primary KN150384.1,NW_003337193.1 chrUn_KN150385v1 37055 unplaced primary KN150385.1,NW_003335289.1 chrUn_KN150386v1 35900 unplaced primary KN150386.1,NW_003337183.1 chrUn_KN150387v1 15215 unplaced primary KN150387.1,NW_003336845.1 chrUn_KN150388v1 22284 unplaced primary KN150388.1,NW_008805508.1 chrUn_KN150389v1 10334 unplaced primary KN150389.1,NW_008805509.1 chrUn_KN150390v1 19066 unplaced primary KN150390.1,NW_003336331.2 chrUn_KN150392v1 12069 unplaced primary KN150392.1,NW_003336185.1 chrUn_KN150393v1 12073 unplaced primary KN150393.1,NW_008805510.1 chrUn_KN150394v1 17139 unplaced primary KN150394.1,NW_003337222.1 chrUn_KN150395v1 9792 unplaced primary KN150395.1,NW_003336361.1 chrUn_KN150396v1 8176 unplaced primary KN150396.1,NW_003337207.1 chrUn_KN150397v1 17295 unplaced primary KN150397.1,NW_003336593.1 chrUn_KN150398v1 39557 unplaced primary KN150398.1,NW_003336425.1 chrUn_KN150399v1 19362 unplaced primary KN150399.1,NW_003337242.1 chrUn_KN150400v1 34930 unplaced primary KN150400.1,NW_003337146.1 chrUn_KN150401v1 10081 unplaced primary KN150401.1,NW_003336665.1 chrUn_KN150403v1 34697 unplaced primary KN150403.1,NW_003336855.1 chrUn_KN150404v1 18160 unplaced primary KN150404.1,NW_008805511.1 chrUn_KN150405v1 76919 unplaced primary KN150405.1,NW_003335907.1 chrUn_KN150406v1 17215 unplaced primary KN150406.1,NW_003334182.1 chrUn_KN150407v1 31814 unplaced primary KN150407.1,NW_003336727.1 chrUn_KN150408v1 37191 unplaced primary KN150408.1,NW_003337083.1 chrUn_KN150411v1 20886 unplaced primary KN150411.1,NW_003336533.1 chrUn_KN150412v1 9605 unplaced primary KN150412.1,NW_008805514.1 chrUn_KN150413v1 15078 unplaced primary KN150413.1,NW_003337251.1 chrUn_KN150414v1 35871 unplaced primary KN150414.1,NW_003337046.1 chrUn_KN150416v1 33835 unplaced primary KN150416.1,NW_003337161.1 chrUn_KN150418v1 14930 unplaced primary KN150418.1,NW_008805516.1 chrUn_KN150419v1 14114 unplaced primary KN150419.1,NW_003337233.1 chrUn_KN150420v1 14290 unplaced primary KN150420.1,NW_008805517.1 chrUn_KN150421v1 14951 unplaced primary KN150421.1,NW_003336994.1 chrUn_KN150422v1 15053 unplaced primary KN150422.1,NW_003336621.1 chrUn_KN150425v1 110593 unplaced primary KN150425.1,NW_003336436.1 chrUn_KN150426v1 21499 unplaced primary KN150426.1,NW_003334448.1 chrUn_KN150428v1 29216 unplaced primary KN150428.1,NW_003336422.1 chrUn_KN150429v1 17683 unplaced primary KN150429.1,NW_003337045.1 chrUn_KN150430v1 16452 unplaced primary KN150430.1,NW_003336966.1 chrUn_KN150431v1 89659 unplaced primary KN150431.1,NW_003336510.1 chrUn_KN150432v1 91010 unplaced primary KN150432.1,NW_003336612.1 chrUn_KN150434v1 12053 unplaced primary KN150434.1,NW_003336824.1 chrUn_KN150436v1 17739 unplaced primary KN150436.1,NW_003336998.2 chrUn_KN150437v1 1262 unplaced primary KN150437.1,NW_003335163.1 chrUn_KN150439v1 10343 unplaced primary KN150439.1,NW_003337068.1 chrUn_KN150440v1 1193 unplaced primary KN150440.1,NW_003334844.1 chrUn_KN150441v1 12439 unplaced primary KN150441.1,NW_003336324.1 chrUn_KN150443v1 11834 unplaced primary KN150443.1,NW_003337088.1 chrUn_KN150444v1 11830 unplaced primary KN150444.1,NW_003336989.1 chrUn_KN150445v1 12072 unplaced primary KN150445.1,NW_008805522.1 chrUn_KN150446v1 12446 unplaced primary KN150446.1,NW_008805523.1 chrUn_KN150449v1 62607 unplaced primary KN150449.1,NW_008805526.1 chrUn_KN150450v1 25362 unplaced primary KN150450.1,NW_008805527.1 chrUn_KN150451v1 14920 unplaced primary KN150451.1,NW_008805528.1 chrUn_KN150452v1 8345 unplaced primary KN150452.1,NW_003336441.1 chrUn_KN150453v1 13591 unplaced primary KN150453.1,NW_008805529.1 chrUn_KN150454v1 18479 unplaced primary KN150454.1,NW_003337265.1 chrUn_KN150455v1 73536 unplaced primary KN150455.1,NW_003337116.1 chrUn_KN150458v1 17481 unplaced primary KN150458.1,NW_003337124.1 chrUn_KN150459v1 45603 unplaced primary KN150459.1,NW_003337132.1 chrUn_KN150462v1 24623 unplaced primary KN150462.1,NW_003334810.2 chrUn_KN150464v1 24865 unplaced primary KN150464.1,NW_003337179.1 chrUn_KN150465v1 1765 unplaced primary KN150465.1,NW_008805532.1 chrUn_KN150466v1 41319 unplaced primary KN150466.1,NW_003336897.1 chrUn_KN150467v1 11202 unplaced primary KN150467.1,NW_008805533.1 chrUn_KN150468v1 25381 unplaced primary KN150468.1,NW_003336414.1 chrUn_KN150469v1 14614 unplaced primary KN150469.1,NW_003336514.1 chrUn_KN150470v1 2027 unplaced primary KN150470.1,NW_003335559.1 chrUn_KN150471v1 76663 unplaced primary KN150471.1,NW_003335375.1 chrUn_KN150472v1 14586 unplaced primary KN150472.1,NW_003337034.1 chrUn_KN150473v1 1285 unplaced primary KN150473.1,NW_008805534.1 chrUn_KN150475v1 17517 unplaced primary KN150475.1,NW_003335148.1 chrUn_KN150476v1 59211 unplaced primary KN150476.1,NW_003336445.1 chrUn_KN150477v1 61693 unplaced primary KN150477.1,NW_003337143.1 chrUn_KN150478v1 25813 unplaced primary KN150478.1,NW_003336671.1 chrUn_KN150479v1 48186 unplaced primary KN150479.1,NW_008805535.1 chrUn_KN150481v1 1008 unplaced primary KN150481.1,NW_003334506.1 chrUn_KN150483v1 17332 unplaced primary KN150483.1,NW_003337177.1 chrUn_KN150484v1 14965 unplaced primary KN150484.1,NW_003334956.2 chrUn_KN150485v1 7348 unplaced primary KN150485.1,NW_003337187.1 chrUn_KN150486v1 8572 unplaced primary KN150486.1,NW_008805538.1 chrUn_KN150487v1 123701 unplaced primary KN150487.1,NW_003336534.1 chrUn_KN150488v1 17582 unplaced primary KN150488.1,NW_003336507.1 chrUn_KN150489v1 26739 unplaced primary KN150489.1,NW_003336591.1 chrUn_KN150490v1 23057 unplaced primary KN150490.1,NW_008805539.1 chrUn_KN150491v1 13001 unplaced primary KN150491.1,NW_008805540.1 chrUn_KN150492v2 30275 unplaced primary KN150492.2,NW_003337261.2 chrUn_KN150493v1 35575 unplaced primary KN150493.1,NW_003336563.1 chrUn_KN150494v1 10108 unplaced primary KN150494.1,NW_003336347.1 chrUn_KN150495v1 28160 unplaced primary KN150495.1,NW_003336321.1 chrUn_KN150499v1 11840 unplaced primary KN150499.1,NW_003336729.1 chrUn_KN150500v1 19866 unplaced primary KN150500.1,NW_003336968.1 chrUn_KN150501v1 22392 unplaced primary KN150501.1,NW_003334575.1 chrUn_KN150502v1 13027 unplaced primary KN150502.1,NW_008805541.1 chrUn_KN150503v1 1834 unplaced primary KN150503.1,NW_003336687.2 chrUn_KN150504v1 12094 unplaced primary KN150504.1,NW_003337122.1 chrUn_KN150505v1 39265 unplaced primary KN150505.1,NW_008805542.1 chrUn_KN150506v1 14319 unplaced primary KN150506.1,NW_008805543.1 chrUn_KN150508v1 26814 unplaced primary KN150508.1,NW_003337071.1 chrUn_KN150509v1 11846 unplaced primary KN150509.1,NW_008805544.1 chrUn_KN150510v1 13237 unplaced primary KN150510.1,NW_003336872.1 chrUn_KN150511v1 38183 unplaced primary KN150511.1,NW_003337218.1 chrUn_KN150513v1 10220 unplaced primary KN150513.1,NW_003336451.1 chrUn_KN150514v1 19391 unplaced primary KN150514.1,NW_003336893.1 chrUn_KN150515v1 1813 unplaced primary KN150515.1,NW_003336686.1 chrUn_KN150516v1 49339 unplaced primary KN150516.1,NW_003335321.1 chrUn_KN150517v1 16171 unplaced primary KN150517.1,NW_003336995.1 chrUn_KN150518v1 40394 unplaced primary KN150518.1,NW_008805545.1 chrUn_KN150519v1 11974 unplaced primary KN150519.1,NW_003336494.1 chrUn_KN150520v1 103159 unplaced primary KN150520.1,NW_003334254.1 chrUn_KN150521v1 20896 unplaced primary KN150521.1,NW_003337266.1 chrUn_KN150522v1 12046 unplaced primary KN150522.1,NW_003336169.1 chrUn_KN150523v1 19004 unplaced primary KN150523.1,NW_003336403.1 chrUn_KN150525v1 650 unplaced primary KN150525.1,NW_003336558.1 chrUn_KN150526v1 15513 unplaced primary KN150526.1,NW_003336311.1 chrUn_KN150527v1 20880 unplaced primary KN150527.1,NW_003336627.1 chrUn_KN150528v1 13138 unplaced primary KN150528.1,NW_003336655.1 chrUn_KN150529v1 81946 unplaced primary KN150529.1,NW_003335906.1 chrUn_KN150530v1 7299 unplaced primary KN150530.1,NW_003336511.1 chrUn_KN150532v1 21602 unplaced primary KN150532.1,NW_003336781.2 chrUn_KN150534v1 17661 unplaced primary KN150534.1,NW_003337106.1 chrUn_KN150535v1 2315 unplaced primary KN150535.1,NW_008805549.1 chrUn_KN150536v1 17908 unplaced primary KN150536.1,NW_003336520.1 chrUn_KN150537v1 27568 unplaced primary KN150537.1,NW_003336426.1 chrUn_KN150538v1 12119 unplaced primary KN150538.1,NW_003337019.1 chrUn_KN150540v1 15288 unplaced primary KN150540.1,NW_003336701.2 chrUn_KN150541v1 12323 unplaced primary KN150541.1,NW_003336946.1 chrUn_KN150542v1 12167 unplaced primary KN150542.1,NW_003336583.1 chrUn_KN150543v1 2343 unplaced primary KN150543.1,NW_003335154.1 chrUn_KN150544v1 1198 unplaced primary KN150544.1,NW_003337120.1 chrUn_KN150545v1 17546 unplaced primary KN150545.1,NW_003336473.1 chrUn_KN150546v1 10851 unplaced primary KN150546.1,NW_008805550.1 chrUn_KN150547v1 37420 unplaced primary KN150547.1,NW_003337043.1 chrUn_KN150548v1 46061 unplaced primary KN150548.1,NW_003336435.2 chrUn_KN150549v1 17599 unplaced primary KN150549.1,NW_008805551.1 chrUn_KN150550v1 14915 unplaced primary KN150550.1,NW_008805552.1 chrUn_KN150551v1 9435 unplaced primary KN150551.1,NW_003336399.1 chrUn_KN150552v1 74050 unplaced primary KN150552.1,NW_003334318.1 chrUn_KN150553v1 14032 unplaced primary KN150553.1,NW_003336237.1 chrUn_KN150554v1 9251 unplaced primary KN150554.1,NW_003336448.1 chrUn_KN150555v1 9941 unplaced primary KN150555.1,NW_008805553.1 chrUn_KN150556v1 9286 unplaced primary KN150556.1,NW_003336975.1 chrUn_KN150557v1 41459 unplaced primary KN150557.1,NW_003336471.1 chrUn_KN150558v1 12115 unplaced primary KN150558.1,NW_003336684.1 chrUn_KN150559v1 26580 unplaced primary KN150559.1,NW_003336341.1 chrUn_KN150560v1 2301 unplaced primary KN150560.1,NW_003336300.2 chrUn_KN150561v1 22238 unplaced primary KN150561.1,NW_003335113.1 chrUn_KN150562v1 22875 unplaced primary KN150562.1,NW_003336996.1 chrUn_KN150564v1 17709 unplaced primary KN150564.1,NW_003336398.1 chrUn_KN150565v1 20464 unplaced primary KN150565.1,NW_003336308.1 chrUn_KN150567v1 49566 unplaced primary KN150567.1,NW_003336976.1 chrUn_KN150568v1 108195 unplaced primary KN150568.1,NW_003336276.1 chrUn_KN150570v1 42279 unplaced primary KN150570.1,NW_003335350.1 chrUn_KN150571v1 16505 unplaced primary KN150571.1,NW_003336924.1 chrUn_KN150572v1 28871 unplaced primary KN150572.1,NW_003336559.1 chrUn_KN150573v1 26604 unplaced primary KN150573.1,NW_003336747.1 chrUn_KN150574v1 18499 unplaced primary KN150574.1,NW_003337151.1 chrUn_KN150575v1 11084 unplaced primary KN150575.1,NW_003336892.1 chrUn_KN150576v1 36129 unplaced primary KN150576.1,NW_003337260.1 chrUn_KN150577v1 13719 unplaced primary KN150577.1,NW_003336742.1 chrUn_KN150578v1 103698 unplaced primary KN150578.1,NW_003336492.1 chrUn_KN150579v1 23586 unplaced primary KN150579.1,NW_003336493.1 chrUn_KN150580v1 32349 unplaced primary KN150580.1,NW_003336274.1 chrUn_KN150581v1 12355 unplaced primary KN150581.1,NW_003337107.1 chrUn_KN150582v1 12396 unplaced primary KN150582.1,NW_003336907.1 chrUn_KN150583v1 1918 unplaced primary KN150583.1,NW_008805555.1 chrUn_KN150585v1 12430 unplaced primary KN150585.1,NW_003336630.1 chrUn_KN150586v1 17388 unplaced primary KN150586.1,NW_008805557.1 chrUn_KN150587v1 8461 unplaced primary KN150587.1,NW_008805558.1 chrUn_KN150588v1 14103 unplaced primary KN150588.1,NW_003336773.1 chrUn_KN150589v1 18957 unplaced primary KN150589.1,NW_003334902.1 chrUn_KN150591v1 8817 unplaced primary KN150591.1,NW_003336888.1 chrUn_KN150592v1 50000 unplaced primary KN150592.1,NW_003335319.1 chrUn_KN150593v1 14353 unplaced primary KN150593.1,NW_003334536.1 chrUn_KN150594v1 19382 unplaced primary KN150594.1,NW_003336521.1 chrUn_KN150595v1 12507 unplaced primary KN150595.1,NW_008805559.1 chrUn_KN150596v1 60847 unplaced primary KN150596.1,NW_003336991.1 chrUn_KN150598v1 12499 unplaced primary KN150598.1,NW_003336762.1 chrUn_KN150599v1 19019 unplaced primary KN150599.1,NW_003336836.1 chrUn_KN150601v1 11167 unplaced primary KN150601.1,NW_008805561.1 chrUn_KN150602v1 22730 unplaced primary KN150602.1,NW_003336682.1 chrUn_KN150603v1 98280 unplaced primary KN150603.1,NW_003336757.1 chrUn_KN150605v1 102574 unplaced primary KN150605.1,NW_003336579.1 chrUn_KN150606v1 51696 unplaced primary KN150606.1,NW_003336826.1 chrUn_KN150607v1 9531 unplaced primary KN150607.1,NW_003336325.1 chrUn_KN150608v1 149650 unplaced primary KN150608.1,NW_003335359.2 chrUn_KN150609v1 37413 unplaced primary KN150609.1,NW_003336840.1 chrUn_KN150610v1 10565 unplaced primary KN150610.1,NW_003336302.1 chrUn_KN150613v1 15739 unplaced primary KN150613.1,NW_003336721.1 chrUn_KN150614v1 9019 unplaced primary KN150614.1,NW_008805563.1 chrUn_KN150615v1 9878 unplaced primary KN150615.1,NW_008805564.1 chrUn_KN150616v1 88699 unplaced primary KN150616.1,NW_003336543.1 chrUn_KN150617v1 90208 unplaced primary KN150617.1,NW_003335385.1 chrUn_KN150619v1 41925 unplaced primary KN150619.1,NW_003336277.2 chrUn_KN150620v1 30729 unplaced primary KN150620.1,NW_003336997.1 chrUn_KN150621v1 1204 unplaced primary KN150621.1,NW_003335146.1 chrUn_KN150622v1 15811 unplaced primary KN150622.1,NW_003336614.1 chrUn_KN150623v1 1126 unplaced primary KN150623.1,NW_003337225.1 chrUn_KN150625v1 22486 unplaced primary KN150625.1,NW_003336372.1 chrUn_KN150626v1 32850 unplaced primary KN150626.1,NW_003336568.1 chrUn_KN150628v1 33906 unplaced primary KN150628.1,NW_008805566.1 chrUn_KN150629v1 19604 unplaced primary KN150629.1,NW_003334261.1 chrUn_KN150630v1 86421 unplaced primary KN150630.1,NW_003336337.1 chrUn_KN150631v1 36324 unplaced primary KN150631.1,NW_003335149.2 chrUn_KN150632v1 11627 unplaced primary KN150632.1,NW_003336725.1 chrUn_KN150633v1 19558 unplaced primary KN150633.1,NW_003335143.1 chrUn_KN150634v1 16020 unplaced primary KN150634.1,NW_003334668.1 chrUn_KN150635v1 27947 unplaced primary KN150635.1,NW_008805567.1 chrUn_KN150636v1 20513 unplaced primary KN150636.1,NW_008805568.1 chrUn_KN150639v1 27620 unplaced primary KN150639.1,NW_003336281.1 chrUn_KN150640v1 20890 unplaced primary KN150640.1,NW_003337057.1 chrUn_KN150641v1 14778 unplaced primary KN150641.1,NW_003335935.1 chrUn_KN150642v1 55536 unplaced primary KN150642.1,NW_003335314.1 chrUn_KN150643v1 28088 unplaced primary KN150643.1,NW_003336958.1 chrUn_KN150644v1 20534 unplaced primary KN150644.1,NW_008805570.1 chrUn_KN150645v1 22839 unplaced primary KN150645.1,NW_003336613.1 chrUn_KN150646v1 78076 unplaced primary KN150646.1,NW_003336358.1 chrUn_KN150647v1 14938 unplaced primary KN150647.1,NW_008805571.1 chrUn_KN150649v1 81249 unplaced primary KN150649.1,NW_003336843.1 chrUn_KN150650v1 3012 unplaced primary KN150650.1,NW_003336973.1 chrUn_KN150651v1 28018 unplaced primary KN150651.1,NW_003337123.1 chrUn_KN150652v1 18075 unplaced primary KN150652.1,NW_003336743.1 chrUn_KN150653v1 55997 unplaced primary KN150653.1,NW_008805573.1 chrUn_KN150654v1 18414 unplaced primary KN150654.1,NW_008805574.1 chrUn_KN150655v1 8089 unplaced primary KN150655.1,NW_008805575.1 chrUn_KN150656v2 29322 unplaced primary KN150656.2,NW_003336774.3 chrUn_KN150659v1 11827 unplaced primary KN150659.1,NW_003334429.1 chrUn_KN150661v1 26250 unplaced primary KN150661.1,NW_003334452.1 chrUn_KN150662v1 17820 unplaced primary KN150662.1,NW_003336355.1 chrUn_KN150663v1 88608 unplaced primary KN150663.1,NW_003337060.1 chrUn_KN150664v1 9590 unplaced primary KN150664.1,NW_003336740.1 chrUn_KN150665v1 11944 unplaced primary KN150665.1,NW_003337186.1 chrUn_KN150666v1 63484 unplaced primary KN150666.1,NW_003336407.1 chrUn_KN150667v1 54201 unplaced primary KN150667.1,NW_003336566.1 chrUn_KN150668v1 21856 unplaced primary KN150668.1,NW_003336756.1 chrUn_KN150669v1 15325 unplaced primary KN150669.1,NW_003336850.1 chrUn_KN150670v1 77993 unplaced primary KN150670.1,NW_003335386.2 chrUn_KN150671v1 13526 unplaced primary KN150671.1,NW_003337038.1 chrUn_KN150675v1 41858 unplaced primary KN150675.1,NW_003337029.1 chrUn_KN150676v1 51674 unplaced primary KN150676.1,NW_003336294.1 chrUn_KN150677v1 66956 unplaced primary KN150677.1,NW_008805579.1 chrUn_KN150678v1 7552 unplaced primary KN150678.1,NW_003337026.1 chrUn_KN150679v1 14065 unplaced primary KN150679.1,NW_003336847.1 chrUn_KN150680v1 13379 unplaced primary KN150680.1,NW_003334441.1 chrUn_KN150682v1 15190 unplaced primary KN150682.1,NW_003337188.1 chrUn_KN150683v1 16822 unplaced primary KN150683.1,NW_003334692.2 chrUn_KN150684v1 24053 unplaced primary KN150684.1,NW_003337255.1 chrUn_KN150685v1 13309 unplaced primary KN150685.1,NW_003336523.1 chrUn_KN150687v1 13294 unplaced primary KN150687.1,NW_008805580.1 chrUn_KN150689v1 19550 unplaced primary KN150689.1,NW_003336343.1 chrUn_KN150690v1 26145 unplaced primary KN150690.1,NW_003337041.1 chrUn_KN150691v1 184625 unplaced primary KN150691.1,NW_003336957.1 chrUn_KN150697v1 12709 unplaced primary KN150697.1,NW_003336278.1 chrUn_KN150698v1 31983 unplaced primary KN150698.1,NW_003335800.1 chrUn_KN150699v1 26100 unplaced primary KN150699.1,NW_003334027.1 chrUn_KN150700v2 71715 unplaced primary KN150700.2,NW_008805582.2 chrUn_KN150701v1 1133 unplaced primary KN150701.1,NW_003335530.1 chrUn_KN150703v1 48009 unplaced primary KN150703.1,NW_003336712.1 chrUn_KN150708v1 42677 unplaced primary KN150708.1,NW_008805585.1 chrUn_KN150709v1 65370 unplaced primary KN150709.1,NW_003337165.1 chrUn_KN150710v1 19629 unplaced primary KN150710.1,NW_003337075.1 chrUn_KN150711v1 11940 unplaced primary KN150711.1,NW_003336651.1 chrUn_KN150713v1 14579 unplaced primary KN150713.1,NW_003336760.1 chrUn_KZ115948v1 7895 unplaced primary KZ115948.1,NW_018394340.1 chrUn_KZ115949v1 19487 unplaced primary KZ115949.1,NW_018394341.1 chrUn_KZ115950v1 11151 unplaced primary KZ115950.1,NW_018394342.1 chrUn_KZ115951v1 1460 unplaced primary KZ115951.1,NW_018394343.1 chrUn_KZ115952v1 6745 unplaced primary KZ115952.1,NW_018394344.1 chrUn_KZ115953v1 1282 unplaced primary KZ115953.1,NW_018394345.1 chrUn_KZ115954v1 7681 unplaced primary KZ115954.1,NW_018394346.1 chrUn_KZ115955v1 2649 unplaced primary KZ115955.1,NW_018394347.1 chrUn_KZ115956v1 11017 unplaced primary KZ115956.1,NW_018394348.1 chrUn_KZ115957v1 3033 unplaced primary KZ115957.1,NW_018394349.1 chrUn_KZ115958v1 16150 unplaced primary KZ115958.1,NW_018394350.1 chrUn_KZ115959v1 2076 unplaced primary KZ115959.1,NW_018394351.1 chrUn_KZ115960v1 10408 unplaced primary KZ115960.1,NW_018394352.1 chrUn_KZ115961v1 1814 unplaced primary KZ115961.1,NW_018394353.1 chrUn_KZ115962v1 9328 unplaced primary KZ115962.1,NW_018394354.1 chrUn_KZ115963v1 5511 unplaced primary KZ115963.1,NW_018394355.1 chrUn_KZ115964v1 21985 unplaced primary KZ115964.1,NW_018394356.1 chrUn_KZ115965v1 8631 unplaced primary KZ115965.1,NW_018394357.1 chrUn_KZ115966v1 10700 unplaced primary KZ115966.1,NW_018394358.1 chrUn_KZ115967v1 2223 unplaced primary KZ115967.1,NW_018394359.1 chrUn_KZ115968v1 7463 unplaced primary KZ115968.1,NW_018394360.1 chrUn_KZ115969v1 11096 unplaced primary KZ115969.1,NW_018394361.1 chrUn_KZ115970v1 4964 unplaced primary KZ115970.1,NW_018394362.1 chrUn_KZ115971v1 10999 unplaced primary KZ115971.1,NW_018394363.1 chrUn_KZ115972v1 18193 unplaced primary KZ115972.1,NW_018394364.1 chrUn_KZ115973v1 7329 unplaced primary KZ115973.1,NW_018394365.1 chrUn_KZ115974v1 33679 unplaced primary KZ115974.1,NW_018394366.1 chrUn_KZ115975v1 1668 unplaced primary KZ115975.1,NW_018394367.1 chrUn_KZ115976v1 3381 unplaced primary KZ115976.1,NW_018394368.1 chrUn_KZ115977v1 1917 unplaced primary KZ115977.1,NW_018394369.1 chrUn_KZ115978v1 4867 unplaced primary KZ115978.1,NW_018394370.1 chrUn_KZ115979v1 12653 unplaced primary KZ115979.1,NW_018394371.1 chrUn_KZ115980v1 11444 unplaced primary KZ115980.1,NW_018394372.1 chrUn_KZ115981v1 12102 unplaced primary KZ115981.1,NW_018394373.1 chrUn_KZ115982v1 21678 unplaced primary KZ115982.1,NW_018394374.1 chrUn_KZ115983v1 10690 unplaced primary KZ115983.1,NW_018394375.1 chrUn_KZ115984v1 2298 unplaced primary KZ115984.1,NW_018394376.1 chrUn_KZ115985v1 14091 unplaced primary KZ115985.1,NW_018394377.1 chrUn_KZ115986v1 14146 unplaced primary KZ115986.1,NW_018394378.1 chrUn_KZ115987v1 34728 unplaced primary KZ115987.1,NW_018394379.1 chrUn_KZ115988v1 2311 unplaced primary KZ115988.1,NW_018394380.1 chrUn_KZ115989v1 11382 unplaced primary KZ115989.1,NW_018394381.1 chrUn_KZ115990v1 8014 unplaced primary KZ115990.1,NW_018394382.1 chrUn_KZ115991v1 3745 unplaced primary KZ115991.1,NW_018394383.1 chrUn_KZ115992v1 1250 unplaced primary KZ115992.1,NW_018394384.1 chrUn_KZ115993v1 17707 unplaced primary KZ115993.1,NW_018394385.1 chrUn_KZ115994v1 17825 unplaced primary KZ115994.1,NW_018394386.1 chrUn_KZ115995v1 5114 unplaced primary KZ115995.1,NW_018394387.1 chrUn_KZ115996v1 5023 unplaced primary KZ115996.1,NW_018394388.1 chrUn_KZ115997v1 3918 unplaced primary KZ115997.1,NW_018394389.1 chrUn_KZ115998v1 9069 unplaced primary KZ115998.1,NW_018394390.1 chrUn_KZ115999v1 8942 unplaced primary KZ115999.1,NW_018394391.1 chrUn_KZ116000v1 15093 unplaced primary KZ116000.1,NW_018394392.1 chrUn_KZ116001v1 13723 unplaced primary KZ116001.1,NW_018394393.1 chrUn_KZ116002v1 9522 unplaced primary KZ116002.1,NW_018394394.1 chrUn_KZ116003v1 15105 unplaced primary KZ116003.1,NW_018394395.1 chrUn_KZ116004v1 19050 unplaced primary KZ116004.1,NW_018394396.1 chrUn_KZ116005v1 1920 unplaced primary KZ116005.1,NW_018394397.1 chrUn_KZ116006v1 13138 unplaced primary KZ116006.1,NW_018394398.1 chrUn_KZ116007v1 11049 unplaced primary KZ116007.1,NW_018394399.1 chrUn_KZ116008v1 17226 unplaced primary KZ116008.1,NW_018394400.1 chrUn_KZ116009v1 1395 unplaced primary KZ116009.1,NW_018394401.1 chrUn_KZ116010v1 6942 unplaced primary KZ116010.1,NW_018394402.1 chrUn_KZ116011v1 51615 unplaced primary KZ116011.1,NW_018394403.1 chrUn_KZ116012v1 9499 unplaced primary KZ116012.1,NW_018394404.1 chrUn_KZ116013v1 7022 unplaced primary KZ116013.1,NW_018394405.1 chrUn_KZ116014v1 1536 unplaced primary KZ116014.1,NW_018394406.1 chrUn_KZ116015v1 9998 unplaced primary KZ116015.1,NW_018394407.1 chrUn_KZ116016v1 5168 unplaced primary KZ116016.1,NW_018394408.1 chrUn_KZ116017v1 2865 unplaced primary KZ116017.1,NW_018394409.1 chrUn_KZ116018v1 11006 unplaced primary KZ116018.1,NW_018394410.1 chrUn_KZ116019v1 34606 unplaced primary KZ116019.1,NW_018394411.1 chrUn_KZ116020v1 14934 unplaced primary KZ116020.1,NW_018394412.1 chrUn_KZ116021v1 17216 unplaced primary KZ116021.1,NW_018394413.1 chrUn_KZ116022v1 1919 unplaced primary KZ116022.1,NW_018394414.1 chrUn_KZ116023v1 7875 unplaced primary KZ116023.1,NW_018394415.1 chrUn_KZ116024v1 31767 unplaced primary KZ116024.1,NW_018394416.1 chrUn_KZ116025v1 3864 unplaced primary KZ116025.1,NW_018394417.1 chrUn_KZ116026v1 14318 unplaced primary KZ116026.1,NW_018394418.1 chrUn_KZ116027v1 4074 unplaced primary KZ116027.1,NW_018394419.1 chrUn_KZ116028v1 3289 unplaced primary KZ116028.1,NW_018394420.1 chrUn_KZ116029v1 32560 unplaced primary KZ116029.1,NW_018394421.1 chrUn_KZ116030v1 3552 unplaced primary KZ116030.1,NW_018394422.1 chrUn_KZ116031v1 19707 unplaced primary KZ116031.1,NW_018394423.1 chrUn_KZ116032v1 5873 unplaced primary KZ116032.1,NW_018394424.1 chrUn_KZ116033v1 27103 unplaced primary KZ116033.1,NW_018394425.1 chrUn_KZ116034v1 33615 unplaced primary KZ116034.1,NW_018394426.1 chrUn_KZ116035v1 1766 unplaced primary KZ116035.1,NW_018394427.1 chrUn_KZ116036v1 1919 unplaced primary KZ116036.1,NW_018394428.1 chrUn_KZ116037v1 13248 unplaced primary KZ116037.1,NW_018394429.1 chrUn_KZ116038v1 1428 unplaced primary KZ116038.1,NW_018394430.1 chrUn_KZ116039v1 12461 unplaced primary KZ116039.1,NW_018394431.1 chrUn_KZ116040v1 3054 unplaced primary KZ116040.1,NW_018394432.1 chrUn_KZ116041v1 12997 unplaced primary KZ116041.1,NW_018394433.1 chrUn_KZ116042v1 13126 unplaced primary KZ116042.1,NW_018394434.1 chrUn_KZ116043v1 19339 unplaced primary KZ116043.1,NW_018394435.1 chrUn_KZ116044v1 37221 unplaced primary KZ116044.1,NW_018394436.1 chrUn_KZ116045v1 2029 unplaced primary KZ116045.1,NW_018394437.1 chrUn_KZ116046v1 5807 unplaced primary KZ116046.1,NW_018394438.1 chrUn_KZ116047v1 14251 unplaced primary KZ116047.1,NW_018394439.1 chrUn_KZ116048v1 1356 unplaced primary KZ116048.1,NW_018394440.1 chrUn_KZ116049v1 8498 unplaced primary KZ116049.1,NW_018394441.1 chrUn_KZ116050v1 6653 unplaced primary KZ116050.1,NW_018394442.1 chrUn_KZ116051v1 2418 unplaced primary KZ116051.1,NW_018394443.1 chrUn_KZ116052v1 2026 unplaced primary KZ116052.1,NW_018394444.1 chrUn_KZ116053v1 16466 unplaced primary KZ116053.1,NW_018394445.1 chrUn_KZ116054v1 14656 unplaced primary KZ116054.1,NW_018394446.1 chrUn_KZ116055v1 7229 unplaced primary KZ116055.1,NW_018394447.1 chrUn_KZ116056v1 10581 unplaced primary KZ116056.1,NW_018394448.1 chrUn_KZ116057v1 4882 unplaced primary KZ116057.1,NW_018394449.1 chrUn_KZ116058v1 4138 unplaced primary KZ116058.1,NW_018394450.1 chrUn_KZ116059v1 34033 unplaced primary KZ116059.1,NW_018394451.1 chrUn_KZ116060v1 7854 unplaced primary KZ116060.1,NW_018394452.1 chrUn_KZ116061v1 1669 unplaced primary KZ116061.1,NW_018394453.1 chrUn_KZ116062v1 6923 unplaced primary KZ116062.1,NW_018394454.1 chrUn_KZ116063v1 2601 unplaced primary KZ116063.1,NW_018394455.1 chrUn_KZ116064v1 153879 unplaced primary KZ116064.1,NW_018394456.1 chrUn_KZ116065v1 37354 unplaced primary KZ116065.1,NW_018394457.1 chrUn_KZ116066v1 161442 unplaced primary KZ116066.1,NW_018394458.1 chrUn_KZ116067v1 159186 unplaced primary KZ116067.1,NW_018394459.1 bioframe-0.4.1/bioframe/io/data/danRer10.seqinfo.tsv0000644000175000017500000021233614420777331021526 0ustar nileshnileshname length type molecule unit aliases chr1 58871917 assembled chr1 primary 1,NC_007112.6,CM002885.1 chr2 59543403 assembled chr2 primary 2,NC_007113.6,CM002886.1 chr3 62385949 assembled chr3 primary 3,NC_007114.6,CM002887.1 chr4 76625712 assembled chr4 primary 4,NC_007115.6,CM002888.1 chr5 71715914 assembled chr5 primary 5,NC_007116.6,CM002889.1 chr6 60272633 assembled chr6 primary 6,NC_007117.6,CM002890.1 chr7 74082188 assembled chr7 primary 7,NC_007118.6,CM002891.1 chr8 54191831 assembled chr8 primary 8,NC_007119.6,CM002892.1 chr9 56892771 assembled chr9 primary 9,NC_007120.6,CM002893.1 chr10 45574255 assembled chr10 primary 10,NC_007121.6,CM002894.1 chr11 45107271 assembled chr11 primary 11,NC_007122.6,CM002895.1 chr12 49229541 assembled chr12 primary 12,NC_007123.6,CM002896.1 chr13 51780250 assembled chr13 primary 13,NC_007124.6,CM002897.1 chr14 51944548 assembled chr14 primary 14,NC_007125.6,CM002898.1 chr15 47771147 assembled chr15 primary 15,NC_007126.6,CM002899.1 chr16 55381981 assembled chr16 primary 16,NC_007127.6,CM002900.1 chr17 53345113 assembled chr17 primary 17,NC_007128.6,CM002901.1 chr18 51008593 assembled chr18 primary 18,NC_007129.6,CM002902.1 chr19 48790377 assembled chr19 primary 19,NC_007130.6,CM002903.1 chr20 55370968 assembled chr20 primary 20,NC_007131.6,CM002904.1 chr21 45895719 assembled chr21 primary 21,NC_007132.6,CM002905.1 chr22 39226288 assembled chr22 primary 22,NC_007133.6,CM002906.1 chr23 46272358 assembled chr23 primary 23,NC_007134.6,CM002907.1 chr24 42251103 assembled chr24 primary 24,NC_007135.6,CM002908.1 chr25 36898761 assembled chr25 primary 25,NC_007136.6,CM002909.1 chrM 16596 assembled chrM non-nuclear MT,NC_002333.2 chrUn_KN149679v1 35552 unplaced primary NW_003043344.3,KN149679.1 chrUn_KN149680v1 38724 unplaced primary NW_003336264.2,KN149680.1 chrUn_KN149681v1 107758 unplaced primary NW_003051371.3,KN149681.1 chrUn_KN149682v1 137468 unplaced primary NW_001878251.4,KN149682.1 chrUn_KN149683v1 152860 unplaced primary NW_001884381.4,KN149683.1 chrUn_KN149684v1 159057 unplaced primary NW_001878128.4,KN149684.1 chrUn_KN149685v1 164780 unplaced primary NW_001884386.4,KN149685.1 chrUn_KN149686v1 260365 unplaced primary NW_003044888.3,KN149686.1 chrUn_KN149687v1 165668 unplaced primary NW_001884400.4,KN149687.1 chrUn_KN149688v1 252705 unplaced primary NW_001878118.4,KN149688.1 chrUn_KN149689v1 196689 unplaced primary NW_001879289.4,KN149689.1 chrUn_KN149690v1 343018 unplaced primary NW_001884413.3,KN149690.1 chrUn_KN149691v1 233193 unplaced primary NW_001884427.4,KN149691.1 chrUn_KN149692v1 36911 unplaced primary NW_001884442.4,KN149692.1 chrUn_KN149693v1 49295 unplaced primary NW_001884441.4,KN149693.1 chrUn_KN149694v1 162759 unplaced primary NW_001884444.4,KN149694.1 chrUn_KN149695v1 190731 unplaced primary NW_003039389.3,KN149695.1 chrUn_KN149696v1 368637 unplaced primary NW_003039384.3,KN149696.1 chrUn_KN149697v1 40969 unplaced primary NW_008805346.1,KN149697.1 chrUn_KN149698v1 108577 unplaced primary NW_008805347.1,KN149698.1 chrUn_KN149699v1 33146 unplaced primary NW_003336805.1,KN149699.1 chrUn_KN149700v1 40050 unplaced primary NW_003337144.1,KN149700.1 chrUn_KN149701v1 3760 unplaced primary NW_008805348.1,KN149701.1 chrUn_KN149702v1 100325 unplaced primary NW_008805349.1,KN149702.1 chrUn_KN149703v1 13902 unplaced primary NW_003336866.1,KN149703.1 chrUn_KN149704v1 48089 unplaced primary NW_008805350.1,KN149704.1 chrUn_KN149705v1 27926 unplaced primary NW_003336598.1,KN149705.1 chrUn_KN149706v1 33279 unplaced primary NW_003336851.1,KN149706.1 chrUn_KN149707v1 6001 unplaced primary NW_008805351.1,KN149707.1 chrUn_KN149708v1 20567 unplaced primary NW_003337018.1,KN149708.1 chrUn_KN149709v1 27814 unplaced primary NW_003336433.1,KN149709.1 chrUn_KN149710v1 50974 unplaced primary NW_003335779.1,KN149710.1 chrUn_KN149711v1 11473 unplaced primary NW_003336950.1,KN149711.1 chrUn_KN149712v1 1115 unplaced primary NW_008805352.1,KN149712.1 chrUn_KN149713v1 10094 unplaced primary NW_008805353.1,KN149713.1 chrUn_KN149714v1 74622 unplaced primary NW_003337205.1,KN149714.1 chrUn_KN149715v1 19020 unplaced primary NW_003336714.2,KN149715.1 chrUn_KN149716v1 42229 unplaced primary NW_003334619.1,KN149716.1 chrUn_KN149717v1 47589 unplaced primary NW_003337229.1,KN149717.1 chrUn_KN149718v1 65247 unplaced primary NW_003336716.1,KN149718.1 chrUn_KN149719v1 47531 unplaced primary NW_003337263.1,KN149719.1 chrUn_KN149720v1 10211 unplaced primary NW_008805354.1,KN149720.1 chrUn_KN149721v1 25462 unplaced primary NW_003336827.1,KN149721.1 chrUn_KN149722v1 13397 unplaced primary NW_003336457.1,KN149722.1 chrUn_KN149723v1 55784 unplaced primary NW_003337194.1,KN149723.1 chrUn_KN149724v1 11849 unplaced primary NW_003336519.1,KN149724.1 chrUn_KN149725v1 69829 unplaced primary NW_003336869.1,KN149725.1 chrUn_KN149726v1 2146 unplaced primary NW_008805355.1,KN149726.1 chrUn_KN149727v1 24871 unplaced primary NW_003336152.2,KN149727.1 chrUn_KN149728v1 9442 unplaced primary NW_003336547.1,KN149728.1 chrUn_KN149729v1 5608 unplaced primary NW_008805356.1,KN149729.1 chrUn_KN149730v1 14804 unplaced primary NW_003336623.1,KN149730.1 chrUn_KN149731v1 19431 unplaced primary NW_008805357.1,KN149731.1 chrUn_KN149732v1 16041 unplaced primary NW_003336490.1,KN149732.1 chrUn_KN149733v1 21637 unplaced primary NW_003336868.1,KN149733.1 chrUn_KN149734v1 6288 unplaced primary NW_003337155.1,KN149734.1 chrUn_KN149735v1 5747 unplaced primary NW_008805358.1,KN149735.1 chrUn_KN149736v1 1649 unplaced primary NW_008805359.1,KN149736.1 chrUn_KN149737v1 27700 unplaced primary NW_003336345.1,KN149737.1 chrUn_KN149738v1 10603 unplaced primary NW_003337254.2,KN149738.1 chrUn_KN149739v1 51610 unplaced primary NW_003336823.1,KN149739.1 chrUn_KN149740v1 1265 unplaced primary NW_003334432.1,KN149740.1 chrUn_KN149741v1 21941 unplaced primary NW_003337078.1,KN149741.1 chrUn_KN149742v1 2671 unplaced primary NW_003336474.1,KN149742.1 chrUn_KN149743v1 21023 unplaced primary NW_003336724.1,KN149743.1 chrUn_KN149744v1 19164 unplaced primary NW_008805360.1,KN149744.1 chrUn_KN149745v1 8150 unplaced primary NW_003337249.1,KN149745.1 chrUn_KN149746v1 10900 unplaced primary NW_008805361.1,KN149746.1 chrUn_KN149747v1 16275 unplaced primary NW_003336980.1,KN149747.1 chrUn_KN149748v1 96570 unplaced primary NW_003336540.1,KN149748.1 chrUn_KN149749v1 40089 unplaced primary NW_003336941.1,KN149749.1 chrUn_KN149750v1 13928 unplaced primary NW_003336571.1,KN149750.1 chrUn_KN149751v1 15848 unplaced primary NW_003336649.1,KN149751.1 chrUn_KN149752v1 16628 unplaced primary NW_003335206.1,KN149752.1 chrUn_KN149753v1 30249 unplaced primary NW_003336977.1,KN149753.1 chrUn_KN149754v1 40214 unplaced primary NW_003336969.1,KN149754.1 chrUn_KN149755v1 11941 unplaced primary NW_003337240.1,KN149755.1 chrUn_KN149756v1 11785 unplaced primary NW_003337114.1,KN149756.1 chrUn_KN149757v1 16145 unplaced primary NW_003334832.2,KN149757.1 chrUn_KN149758v1 9515 unplaced primary NW_003336859.1,KN149758.1 chrUn_KN149759v1 38290 unplaced primary NW_008805362.1,KN149759.1 chrUn_KN149760v1 46605 unplaced primary NW_003336744.1,KN149760.1 chrUn_KN149761v1 14795 unplaced primary NW_003336095.2,KN149761.1 chrUn_KN149762v1 17936 unplaced primary NW_008805363.1,KN149762.1 chrUn_KN149763v1 19644 unplaced primary NW_003336711.1,KN149763.1 chrUn_KN149764v1 19831 unplaced primary NW_003337091.2,KN149764.1 chrUn_KN149765v1 29197 unplaced primary NW_003336801.1,KN149765.1 chrUn_KN149766v1 14664 unplaced primary NW_003336970.1,KN149766.1 chrUn_KN149767v1 30874 unplaced primary NW_003337044.1,KN149767.1 chrUn_KN149768v1 17671 unplaced primary NW_003336765.1,KN149768.1 chrUn_KN149769v1 53048 unplaced primary NW_003337010.1,KN149769.1 chrUn_KN149770v1 12046 unplaced primary NW_003337047.1,KN149770.1 chrUn_KN149771v1 14151 unplaced primary NW_003336986.1,KN149771.1 chrUn_KN149772v1 13273 unplaced primary NW_003337052.1,KN149772.1 chrUn_KN149773v1 1302 unplaced primary NW_003335749.1,KN149773.1 chrUn_KN149774v1 12337 unplaced primary NW_003336170.1,KN149774.1 chrUn_KN149775v1 18776 unplaced primary NW_003334589.1,KN149775.1 chrUn_KN149776v1 2919 unplaced primary NW_003335549.1,KN149776.1 chrUn_KN149777v1 1553 unplaced primary NW_008805364.1,KN149777.1 chrUn_KN149778v1 111598 unplaced primary NW_003337175.1,KN149778.1 chrUn_KN149779v1 21664 unplaced primary NW_003334443.1,KN149779.1 chrUn_KN149780v1 19718 unplaced primary NW_003334404.1,KN149780.1 chrUn_KN149781v1 9962 unplaced primary NW_003334099.1,KN149781.1 chrUn_KN149782v1 36097 unplaced primary NW_003337232.1,KN149782.1 chrUn_KN149783v1 11892 unplaced primary NW_003336802.1,KN149783.1 chrUn_KN149784v1 73829 unplaced primary NW_003337109.1,KN149784.1 chrUn_KN149785v1 1577 unplaced primary NW_003336582.1,KN149785.1 chrUn_KN149786v1 1745 unplaced primary NW_008805365.1,KN149786.1 chrUn_KN149787v1 39794 unplaced primary NW_003335933.1,KN149787.1 chrUn_KN149788v1 8794 unplaced primary NW_008805366.1,KN149788.1 chrUn_KN149789v1 12990 unplaced primary NW_003337184.1,KN149789.1 chrUn_KN149790v1 115850 unplaced primary NW_003336877.1,KN149790.1 chrUn_KN149791v1 17273 unplaced primary NW_003336635.1,KN149791.1 chrUn_KN149792v1 11232 unplaced primary NW_003337069.1,KN149792.1 chrUn_KN149793v1 13298 unplaced primary NW_008805367.1,KN149793.1 chrUn_KN149794v1 25440 unplaced primary NW_008805368.1,KN149794.1 chrUn_KN149795v1 34615 unplaced primary NW_003336860.1,KN149795.1 chrUn_KN149796v1 25635 unplaced primary NW_003336550.1,KN149796.1 chrUn_KN149797v1 102101 unplaced primary NW_003334026.1,KN149797.1 chrUn_KN149798v1 1990 unplaced primary NW_003336837.1,KN149798.1 chrUn_KN149799v1 27060 unplaced primary NW_003335558.1,KN149799.1 chrUn_KN149800v1 42049 unplaced primary NW_008805369.1,KN149800.1 chrUn_KN149801v1 4454 unplaced primary NW_003336889.1,KN149801.1 chrUn_KN149802v1 3818 unplaced primary NW_003334854.1,KN149802.1 chrUn_KN149803v1 16018 unplaced primary NW_003337090.1,KN149803.1 chrUn_KN149804v1 10148 unplaced primary NW_003337095.1,KN149804.1 chrUn_KN149805v1 12432 unplaced primary NW_003336290.1,KN149805.1 chrUn_KN149806v1 15157 unplaced primary NW_008805370.1,KN149806.1 chrUn_KN149807v1 12512 unplaced primary NW_003334875.1,KN149807.1 chrUn_KN149808v1 15454 unplaced primary NW_003336495.1,KN149808.1 chrUn_KN149809v1 2001 unplaced primary NW_003336915.1,KN149809.1 chrUn_KN149810v1 15043 unplaced primary NW_003336919.1,KN149810.1 chrUn_KN149811v1 8720 unplaced primary NW_003336886.1,KN149811.1 chrUn_KN149812v1 51419 unplaced primary NW_003336288.1,KN149812.1 chrUn_KN149813v1 59009 unplaced primary NW_003336509.1,KN149813.1 chrUn_KN149814v1 25878 unplaced primary NW_003334686.1,KN149814.1 chrUn_KN149815v1 33337 unplaced primary NW_003334684.1,KN149815.1 chrUn_KN149816v1 10128 unplaced primary NW_003335521.2,KN149816.1 chrUn_KN149817v1 11116 unplaced primary NW_003337049.1,KN149817.1 chrUn_KN149818v1 25942 unplaced primary NW_003335384.1,KN149818.1 chrUn_KN149819v1 10210 unplaced primary NW_008805371.1,KN149819.1 chrUn_KN149820v1 1281 unplaced primary NW_008805372.1,KN149820.1 chrUn_KN149821v1 31785 unplaced primary NW_003336346.1,KN149821.1 chrUn_KN149822v1 2460 unplaced primary NW_003336643.1,KN149822.1 chrUn_KN149823v1 14034 unplaced primary NW_003335161.1,KN149823.1 chrUn_KN149824v1 2357 unplaced primary NW_003336698.1,KN149824.1 chrUn_KN149825v1 22128 unplaced primary NW_003336761.1,KN149825.1 chrUn_KN149826v1 90482 unplaced primary NW_003336654.1,KN149826.1 chrUn_KN149827v1 13555 unplaced primary NW_008805373.1,KN149827.1 chrUn_KN149828v1 11414 unplaced primary NW_003336660.1,KN149828.1 chrUn_KN149829v1 27323 unplaced primary NW_003335757.1,KN149829.1 chrUn_KN149830v1 32768 unplaced primary NW_008805374.1,KN149830.1 chrUn_KN149831v1 50343 unplaced primary NW_008805375.1,KN149831.1 chrUn_KN149832v1 12483 unplaced primary NW_003336959.1,KN149832.1 chrUn_KN149833v1 2778 unplaced primary NW_008805376.1,KN149833.1 chrUn_KN149834v1 17343 unplaced primary NW_003337098.1,KN149834.1 chrUn_KN149835v1 25861 unplaced primary NW_003334814.2,KN149835.1 chrUn_KN149836v1 34954 unplaced primary NW_003335691.1,KN149836.1 chrUn_KN149837v1 8007 unplaced primary NW_003336667.1,KN149837.1 chrUn_KN149838v1 29025 unplaced primary NW_003337138.1,KN149838.1 chrUn_KN149839v1 12998 unplaced primary NW_003336838.1,KN149839.1 chrUn_KN149840v1 46864 unplaced primary NW_003336831.1,KN149840.1 chrUn_KN149841v1 10085 unplaced primary NW_003336073.1,KN149841.1 chrUn_KN149842v1 17614 unplaced primary NW_003335960.1,KN149842.1 chrUn_KN149843v1 33258 unplaced primary NW_003336867.1,KN149843.1 chrUn_KN149844v1 10201 unplaced primary NW_003336430.1,KN149844.1 chrUn_KN149845v1 3367 unplaced primary NW_008805377.1,KN149845.1 chrUn_KN149846v1 28664 unplaced primary NW_003336483.1,KN149846.1 chrUn_KN149847v1 130903 unplaced primary NW_003337258.1,KN149847.1 chrUn_KN149848v1 10341 unplaced primary NW_003336432.1,KN149848.1 chrUn_KN149849v1 20421 unplaced primary NW_008805378.1,KN149849.1 chrUn_KN149850v1 33401 unplaced primary NW_003337014.1,KN149850.1 chrUn_KN149851v1 12094 unplaced primary NW_003336419.1,KN149851.1 chrUn_KN149852v1 30223 unplaced primary NW_008805379.1,KN149852.1 chrUn_KN149853v1 12817 unplaced primary NW_003336917.1,KN149853.1 chrUn_KN149854v1 6367 unplaced primary NW_008805380.1,KN149854.1 chrUn_KN149855v1 23165 unplaced primary NW_003334236.1,KN149855.1 chrUn_KN149856v1 35330 unplaced primary NW_003334447.1,KN149856.1 chrUn_KN149857v1 10132 unplaced primary NW_008805381.1,KN149857.1 chrUn_KN149858v1 44054 unplaced primary NW_003334458.2,KN149858.1 chrUn_KN149859v1 53306 unplaced primary NW_003336720.1,KN149859.1 chrUn_KN149860v1 17408 unplaced primary NW_003336315.1,KN149860.1 chrUn_KN149861v1 14336 unplaced primary NW_003336809.1,KN149861.1 chrUn_KN149862v1 11987 unplaced primary NW_003336301.1,KN149862.1 chrUn_KN149863v1 11955 unplaced primary NW_008805382.1,KN149863.1 chrUn_KN149864v1 12929 unplaced primary NW_008805383.1,KN149864.1 chrUn_KN149865v1 49167 unplaced primary NW_008805384.1,KN149865.1 chrUn_KN149866v1 14752 unplaced primary NW_003337099.1,KN149866.1 chrUn_KN149867v1 1514 unplaced primary NW_008805385.1,KN149867.1 chrUn_KN149868v1 50629 unplaced primary NW_003336470.1,KN149868.1 chrUn_KN149869v1 21474 unplaced primary NW_008805386.1,KN149869.1 chrUn_KN149870v1 44680 unplaced primary NW_003336738.1,KN149870.1 chrUn_KN149871v1 22553 unplaced primary NW_003336239.1,KN149871.1 chrUn_KN149872v1 12222 unplaced primary NW_008805387.1,KN149872.1 chrUn_KN149873v1 1146 unplaced primary NW_008805388.1,KN149873.1 chrUn_KN149874v1 5295 unplaced primary NW_003335638.2,KN149874.1 chrUn_KN149875v1 13354 unplaced primary NW_008805389.1,KN149875.1 chrUn_KN149876v1 11298 unplaced primary NW_003336849.1,KN149876.1 chrUn_KN149877v1 30410 unplaced primary NW_003336883.1,KN149877.1 chrUn_KN149878v1 7547 unplaced primary NW_008805390.1,KN149878.1 chrUn_KN149879v1 11893 unplaced primary NW_003335459.1,KN149879.1 chrUn_KN149880v1 64889 unplaced primary NW_008805391.1,KN149880.1 chrUn_KN149881v1 10736 unplaced primary NW_008805392.1,KN149881.1 chrUn_KN149882v1 7649 unplaced primary NW_008805393.1,KN149882.1 chrUn_KN149883v1 12434 unplaced primary NW_003334215.1,KN149883.1 chrUn_KN149884v1 51715 unplaced primary NW_008805394.1,KN149884.1 chrUn_KN149885v1 1347 unplaced primary NW_003337168.1,KN149885.1 chrUn_KN149886v1 1633 unplaced primary NW_003336535.1,KN149886.1 chrUn_KN149887v1 11971 unplaced primary NW_003336454.2,KN149887.1 chrUn_KN149888v1 17117 unplaced primary NW_003336349.1,KN149888.1 chrUn_KN149889v1 10166 unplaced primary NW_003336465.1,KN149889.1 chrUn_KN149890v1 12029 unplaced primary NW_003336424.1,KN149890.1 chrUn_KN149891v1 10762 unplaced primary NW_003336702.1,KN149891.1 chrUn_KN149892v1 24638 unplaced primary NW_003336629.1,KN149892.1 chrUn_KN149893v1 27995 unplaced primary NW_003337247.1,KN149893.1 chrUn_KN149894v1 15058 unplaced primary NW_008805395.1,KN149894.1 chrUn_KN149895v1 92930 unplaced primary NW_003334263.2,KN149895.1 chrUn_KN149896v1 13102 unplaced primary NW_003336289.1,KN149896.1 chrUn_KN149897v1 14044 unplaced primary NW_003336689.1,KN149897.1 chrUn_KN149898v1 4537 unplaced primary NW_008805396.1,KN149898.1 chrUn_KN149899v1 13632 unplaced primary NW_003336497.1,KN149899.1 chrUn_KN149900v1 11016 unplaced primary NW_008805397.1,KN149900.1 chrUn_KN149901v1 10512 unplaced primary NW_003337164.1,KN149901.1 chrUn_KN149902v1 16044 unplaced primary NW_003336449.1,KN149902.1 chrUn_KN149903v1 11318 unplaced primary NW_008805398.1,KN149903.1 chrUn_KN149904v1 89156 unplaced primary NW_003336333.2,KN149904.1 chrUn_KN149905v1 14056 unplaced primary NW_003336852.1,KN149905.1 chrUn_KN149906v1 38987 unplaced primary NW_003336751.1,KN149906.1 chrUn_KN149907v1 9870 unplaced primary NW_003337174.1,KN149907.1 chrUn_KN149908v1 12800 unplaced primary NW_003336848.1,KN149908.1 chrUn_KN149909v1 40056 unplaced primary NW_003336633.1,KN149909.1 chrUn_KN149910v1 142061 unplaced primary NW_003335139.1,KN149910.1 chrUn_KN149911v1 11128 unplaced primary NW_003336186.1,KN149911.1 chrUn_KN149912v1 77979 unplaced primary NW_003334245.1,KN149912.1 chrUn_KN149913v1 16487 unplaced primary NW_003337199.1,KN149913.1 chrUn_KN149914v1 18241 unplaced primary NW_003336354.1,KN149914.1 chrUn_KN149915v1 10395 unplaced primary NW_003336864.1,KN149915.1 chrUn_KN149916v1 4293 unplaced primary NW_003334505.1,KN149916.1 chrUn_KN149917v1 3831 unplaced primary NW_003335158.1,KN149917.1 chrUn_KN149918v1 6170 unplaced primary NW_008805399.1,KN149918.1 chrUn_KN149919v1 21073 unplaced primary NW_003336948.1,KN149919.1 chrUn_KN149920v1 18168 unplaced primary NW_003334756.2,KN149920.1 chrUn_KN149921v1 28254 unplaced primary NW_003336310.1,KN149921.1 chrUn_KN149922v1 12529 unplaced primary NW_008805400.1,KN149922.1 chrUn_KN149923v1 36729 unplaced primary NW_008805401.1,KN149923.1 chrUn_KN149924v1 23395 unplaced primary NW_003336874.1,KN149924.1 chrUn_KN149925v1 29860 unplaced primary NW_003336561.2,KN149925.1 chrUn_KN149926v1 3688 unplaced primary NW_003335249.1,KN149926.1 chrUn_KN149927v1 11950 unplaced primary NW_003335051.1,KN149927.1 chrUn_KN149928v1 14297 unplaced primary NW_003336610.1,KN149928.1 chrUn_KN149929v1 38097 unplaced primary NW_008805402.1,KN149929.1 chrUn_KN149930v1 98773 unplaced primary NW_003335313.1,KN149930.1 chrUn_KN149931v1 6703 unplaced primary NW_003335250.1,KN149931.1 chrUn_KN149932v1 89521 unplaced primary NW_003334672.2,KN149932.1 chrUn_KN149933v1 13433 unplaced primary NW_003336909.1,KN149933.1 chrUn_KN149934v1 12451 unplaced primary NW_003337169.1,KN149934.1 chrUn_KN149935v1 9230 unplaced primary NW_003336782.1,KN149935.1 chrUn_KN149936v1 16058 unplaced primary NW_003337066.1,KN149936.1 chrUn_KN149937v1 14110 unplaced primary NW_003335043.1,KN149937.1 chrUn_KN149938v1 12455 unplaced primary NW_003335831.2,KN149938.1 chrUn_KN149939v1 76611 unplaced primary NW_003336586.1,KN149939.1 chrUn_KN149940v1 11887 unplaced primary NW_003336458.1,KN149940.1 chrUn_KN149941v1 13607 unplaced primary NW_003336575.1,KN149941.1 chrUn_KN149942v1 9522 unplaced primary NW_008805403.1,KN149942.1 chrUn_KN149943v1 29608 unplaced primary NW_003334256.1,KN149943.1 chrUn_KN149944v1 24909 unplaced primary NW_003336415.1,KN149944.1 chrUn_KN149945v1 9994 unplaced primary NW_008805404.1,KN149945.1 chrUn_KN149946v1 33071 unplaced primary NW_003336936.1,KN149946.1 chrUn_KN149947v1 23293 unplaced primary NW_008805405.1,KN149947.1 chrUn_KN149948v1 117499 unplaced primary NW_003336703.1,KN149948.1 chrUn_KN149949v1 64126 unplaced primary NW_003336421.1,KN149949.1 chrUn_KN149950v1 5952 unplaced primary NW_003336979.1,KN149950.1 chrUn_KN149951v1 5000 unplaced primary NW_008805406.1,KN149951.1 chrUn_KN149952v1 66365 unplaced primary NW_003336406.1,KN149952.1 chrUn_KN149953v1 46218 unplaced primary NW_003337062.1,KN149953.1 chrUn_KN149954v1 1953 unplaced primary NW_008805407.1,KN149954.1 chrUn_KN149955v1 19758 unplaced primary NW_003336646.1,KN149955.1 chrUn_KN149956v1 1889 unplaced primary NW_008805408.1,KN149956.1 chrUn_KN149957v1 1094 unplaced primary NW_008805409.1,KN149957.1 chrUn_KN149958v1 43073 unplaced primary NW_003336942.1,KN149958.1 chrUn_KN149959v1 59274 unplaced primary NW_003336480.1,KN149959.1 chrUn_KN149960v1 9235 unplaced primary NW_003336389.1,KN149960.1 chrUn_KN149961v1 20600 unplaced primary NW_003337190.1,KN149961.1 chrUn_KN149962v1 136181 unplaced primary NW_003335337.2,KN149962.1 chrUn_KN149963v1 83881 unplaced primary NW_003336881.1,KN149963.1 chrUn_KN149964v1 11592 unplaced primary NW_008805410.1,KN149964.1 chrUn_KN149965v1 14790 unplaced primary NW_003336066.1,KN149965.1 chrUn_KN149966v1 131566 unplaced primary NW_008805411.1,KN149966.1 chrUn_KN149967v1 8612 unplaced primary NW_003335242.1,KN149967.1 chrUn_KN149968v1 82990 unplaced primary NW_003336650.1,KN149968.1 chrUn_KN149969v1 13714 unplaced primary NW_003336580.1,KN149969.1 chrUn_KN149970v1 17511 unplaced primary NW_003336817.2,KN149970.1 chrUn_KN149971v1 11275 unplaced primary NW_008805412.1,KN149971.1 chrUn_KN149972v1 1358 unplaced primary NW_008805413.1,KN149972.1 chrUn_KN149973v1 35555 unplaced primary NW_003336937.1,KN149973.1 chrUn_KN149974v1 19596 unplaced primary NW_003336967.1,KN149974.1 chrUn_KN149975v1 2035 unplaced primary NW_008805414.1,KN149975.1 chrUn_KN149976v1 11858 unplaced primary NW_003336371.1,KN149976.1 chrUn_KN149977v1 20138 unplaced primary NW_003337153.2,KN149977.1 chrUn_KN149978v1 16801 unplaced primary NW_003337086.1,KN149978.1 chrUn_KN149979v1 22834 unplaced primary NW_003336097.2,KN149979.1 chrUn_KN149980v1 7980 unplaced primary NW_008805415.1,KN149980.1 chrUn_KN149981v1 12811 unplaced primary NW_003337160.1,KN149981.1 chrUn_KN149982v1 31814 unplaced primary NW_003337139.1,KN149982.1 chrUn_KN149983v1 17884 unplaced primary NW_003336330.2,KN149983.1 chrUn_KN149984v1 96477 unplaced primary NW_003337241.1,KN149984.1 chrUn_KN149985v1 1354 unplaced primary NW_008805416.1,KN149985.1 chrUn_KN149986v1 8801 unplaced primary NW_003334166.1,KN149986.1 chrUn_KN149987v1 38433 unplaced primary NW_003336196.1,KN149987.1 chrUn_KN149988v1 9944 unplaced primary NW_003336685.1,KN149988.1 chrUn_KN149989v1 34480 unplaced primary NW_003336748.2,KN149989.1 chrUn_KN149990v1 57651 unplaced primary NW_003337093.1,KN149990.1 chrUn_KN149991v1 9871 unplaced primary NW_003337156.1,KN149991.1 chrUn_KN149992v1 57912 unplaced primary NW_003336600.1,KN149992.1 chrUn_KN149993v1 16921 unplaced primary NW_003336466.1,KN149993.1 chrUn_KN149994v1 1137 unplaced primary NW_003336317.1,KN149994.1 chrUn_KN149995v1 12015 unplaced primary NW_008805417.1,KN149995.1 chrUn_KN149996v1 33528 unplaced primary NW_003337137.1,KN149996.1 chrUn_KN149997v1 6296 unplaced primary NW_003336787.1,KN149997.1 chrUn_KN149998v1 74724 unplaced primary NW_003336316.1,KN149998.1 chrUn_KN149999v1 14071 unplaced primary NW_003336567.1,KN149999.1 chrUn_KN150000v1 69737 unplaced primary NW_003334656.2,KN150000.1 chrUn_KN150001v1 28767 unplaced primary NW_003334035.2,KN150001.1 chrUn_KN150002v1 17430 unplaced primary NW_003336323.1,KN150002.1 chrUn_KN150003v1 19572 unplaced primary NW_008805418.1,KN150003.1 chrUn_KN150004v1 11444 unplaced primary NW_003334666.2,KN150004.1 chrUn_KN150005v1 34409 unplaced primary NW_003336945.1,KN150005.1 chrUn_KN150006v1 10518 unplaced primary NW_003336825.1,KN150006.1 chrUn_KN150007v1 13072 unplaced primary NW_003336659.1,KN150007.1 chrUn_KN150008v1 15572 unplaced primary NW_003337256.1,KN150008.1 chrUn_KN150009v1 17727 unplaced primary NW_003336489.1,KN150009.1 chrUn_KN150010v1 14703 unplaced primary NW_003337119.1,KN150010.1 chrUn_KN150011v1 12995 unplaced primary NW_003336777.1,KN150011.1 chrUn_KN150012v1 11998 unplaced primary NW_008805419.1,KN150012.1 chrUn_KN150013v1 8488 unplaced primary NW_003334233.2,KN150013.1 chrUn_KN150014v1 13588 unplaced primary NW_003337111.1,KN150014.1 chrUn_KN150015v1 33441 unplaced primary NW_003337220.1,KN150015.1 chrUn_KN150016v1 21592 unplaced primary NW_003335387.1,KN150016.1 chrUn_KN150017v1 25636 unplaced primary NW_003337217.1,KN150017.1 chrUn_KN150018v1 1063 unplaced primary NW_008805420.1,KN150018.1 chrUn_KN150019v1 28998 unplaced primary NW_003337129.1,KN150019.1 chrUn_KN150020v1 11925 unplaced primary NW_003336607.1,KN150020.1 chrUn_KN150021v1 103967 unplaced primary NW_003337037.1,KN150021.1 chrUn_KN150022v1 76538 unplaced primary NW_003336365.1,KN150022.1 chrUn_KN150023v1 22153 unplaced primary NW_003336353.1,KN150023.1 chrUn_KN150024v1 1714 unplaced primary NW_003336344.1,KN150024.1 chrUn_KN150025v1 26343 unplaced primary NW_003337067.1,KN150025.1 chrUn_KN150026v1 1755 unplaced primary NW_003337185.1,KN150026.1 chrUn_KN150027v1 2148 unplaced primary NW_008805421.1,KN150027.1 chrUn_KN150028v1 19517 unplaced primary NW_008805422.1,KN150028.1 chrUn_KN150029v1 12415 unplaced primary NW_008805423.1,KN150029.1 chrUn_KN150030v1 57074 unplaced primary NW_003336951.2,KN150030.1 chrUn_KN150031v1 60899 unplaced primary NW_003337200.1,KN150031.1 chrUn_KN150032v1 29546 unplaced primary NW_003336336.1,KN150032.1 chrUn_KN150033v1 56448 unplaced primary NW_003336670.1,KN150033.1 chrUn_KN150034v1 1919 unplaced primary NW_008805424.1,KN150034.1 chrUn_KN150035v1 38086 unplaced primary NW_003334265.1,KN150035.1 chrUn_KN150036v1 4412 unplaced primary NW_008805425.1,KN150036.1 chrUn_KN150037v1 2866 unplaced primary NW_003336693.1,KN150037.1 chrUn_KN150038v1 71326 unplaced primary NW_003336974.1,KN150038.1 chrUn_KN150039v1 3463 unplaced primary NW_003335647.1,KN150039.1 chrUn_KN150040v1 19896 unplaced primary NW_008805426.1,KN150040.1 chrUn_KN150041v1 58003 unplaced primary NW_003334673.2,KN150041.1 chrUn_KN150042v1 30789 unplaced primary NW_003335185.2,KN150042.1 chrUn_KN150043v1 31984 unplaced primary NW_008805427.1,KN150043.1 chrUn_KN150044v1 9097 unplaced primary NW_003334669.1,KN150044.1 chrUn_KN150045v1 23207 unplaced primary NW_008805428.1,KN150045.1 chrUn_KN150046v1 148772 unplaced primary NW_003336786.1,KN150046.1 chrUn_KN150047v1 20749 unplaced primary NW_003337234.1,KN150047.1 chrUn_KN150048v1 128109 unplaced primary NW_003336792.1,KN150048.1 chrUn_KN150049v1 45008 unplaced primary NW_003336830.1,KN150049.1 chrUn_KN150050v1 8203 unplaced primary NW_008805429.1,KN150050.1 chrUn_KN150051v1 1995 unplaced primary NW_008805430.1,KN150051.1 chrUn_KN150052v1 15943 unplaced primary NW_003335153.1,KN150052.1 chrUn_KN150053v1 32328 unplaced primary NW_003335494.1,KN150053.1 chrUn_KN150054v1 16143 unplaced primary NW_003336990.1,KN150054.1 chrUn_KN150055v1 32561 unplaced primary NW_003335922.2,KN150055.1 chrUn_KN150056v1 29449 unplaced primary NW_008805431.1,KN150056.1 chrUn_KN150057v1 10736 unplaced primary NW_003336282.1,KN150057.1 chrUn_KN150058v1 21348 unplaced primary NW_003336625.1,KN150058.1 chrUn_KN150059v1 16588 unplaced primary NW_003334628.1,KN150059.1 chrUn_KN150060v1 80234 unplaced primary NW_003336912.2,KN150060.1 chrUn_KN150061v1 24048 unplaced primary NW_003336820.1,KN150061.1 chrUn_KN150062v1 35038 unplaced primary NW_003336370.1,KN150062.1 chrUn_KN150063v1 20846 unplaced primary NW_003335276.1,KN150063.1 chrUn_KN150064v1 14598 unplaced primary NW_003337176.1,KN150064.1 chrUn_KN150065v1 9859 unplaced primary NW_008805432.1,KN150065.1 chrUn_KN150066v1 29537 unplaced primary NW_003336574.1,KN150066.1 chrUn_KN150067v1 27325 unplaced primary NW_003336420.1,KN150067.1 chrUn_KN150068v1 62725 unplaced primary NW_003336525.1,KN150068.1 chrUn_KN150069v1 12799 unplaced primary NW_003336668.1,KN150069.1 chrUn_KN150070v1 14070 unplaced primary NW_008805433.1,KN150070.1 chrUn_KN150071v1 14960 unplaced primary NW_003336739.1,KN150071.1 chrUn_KN150072v1 13309 unplaced primary NW_003335332.2,KN150072.1 chrUn_KN150073v1 14052 unplaced primary NW_008805434.1,KN150073.1 chrUn_KN150074v1 28653 unplaced primary NW_003335891.1,KN150074.1 chrUn_KN150075v1 13883 unplaced primary NW_003335005.1,KN150075.1 chrUn_KN150076v1 14425 unplaced primary NW_003336326.1,KN150076.1 chrUn_KN150077v1 51360 unplaced primary NW_003336780.1,KN150077.1 chrUn_KN150078v1 12098 unplaced primary NW_003334214.1,KN150078.1 chrUn_KN150079v1 46800 unplaced primary NW_003336064.1,KN150079.1 chrUn_KN150080v1 37662 unplaced primary NW_003336501.1,KN150080.1 chrUn_KN150081v1 12836 unplaced primary NW_003336620.1,KN150081.1 chrUn_KN150082v1 8788 unplaced primary NW_003336755.1,KN150082.1 chrUn_KN150083v1 49514 unplaced primary NW_003337125.1,KN150083.1 chrUn_KN150084v1 24192 unplaced primary NW_003336468.1,KN150084.1 chrUn_KN150085v1 29177 unplaced primary NW_003334395.2,KN150085.1 chrUn_KN150086v1 1639 unplaced primary NW_003337228.1,KN150086.1 chrUn_KN150087v1 11020 unplaced primary NW_003337163.1,KN150087.1 chrUn_KN150088v1 24203 unplaced primary NW_003336639.1,KN150088.1 chrUn_KN150089v1 13104 unplaced primary NW_008805435.1,KN150089.1 chrUn_KN150090v1 12028 unplaced primary NW_003336362.1,KN150090.1 chrUn_KN150091v1 36410 unplaced primary NW_003334767.1,KN150091.1 chrUn_KN150092v1 14544 unplaced primary NW_003337253.1,KN150092.1 chrUn_KN150093v1 14738 unplaced primary NW_008805436.1,KN150093.1 chrUn_KN150094v1 7824 unplaced primary NW_008805437.1,KN150094.1 chrUn_KN150095v1 9204 unplaced primary NW_008805438.1,KN150095.1 chrUn_KN150096v1 11550 unplaced primary NW_008805439.1,KN150096.1 chrUn_KN150097v1 11690 unplaced primary NW_003336961.1,KN150097.1 chrUn_KN150098v1 68279 unplaced primary NW_003335654.1,KN150098.1 chrUn_KN150099v1 79937 unplaced primary NW_003337130.1,KN150099.1 chrUn_KN150100v1 9237 unplaced primary NW_003334852.2,KN150100.1 chrUn_KN150101v1 25174 unplaced primary NW_003335231.1,KN150101.1 chrUn_KN150102v1 34431 unplaced primary NW_003337197.1,KN150102.1 chrUn_KN150103v1 4090 unplaced primary NW_008805440.1,KN150103.1 chrUn_KN150104v1 53188 unplaced primary NW_003335567.1,KN150104.1 chrUn_KN150105v1 58062 unplaced primary NW_003337145.1,KN150105.1 chrUn_KN150106v1 56524 unplaced primary NW_003334032.1,KN150106.1 chrUn_KN150107v1 78223 unplaced primary NW_003336664.1,KN150107.1 chrUn_KN150108v1 19459 unplaced primary NW_003336241.2,KN150108.1 chrUn_KN150109v1 5564 unplaced primary NW_003335000.1,KN150109.1 chrUn_KN150110v1 9804 unplaced primary NW_003336548.1,KN150110.1 chrUn_KN150111v1 29931 unplaced primary NW_003335663.1,KN150111.1 chrUn_KN150112v1 3423 unplaced primary NW_003334114.1,KN150112.1 chrUn_KN150113v1 19310 unplaced primary NW_003336808.1,KN150113.1 chrUn_KN150114v1 24178 unplaced primary NW_003336645.1,KN150114.1 chrUn_KN150115v1 18676 unplaced primary NW_008805441.1,KN150115.1 chrUn_KN150116v1 15497 unplaced primary NW_003336506.1,KN150116.1 chrUn_KN150117v1 48543 unplaced primary NW_003336299.1,KN150117.1 chrUn_KN150118v1 54494 unplaced primary NW_003337121.1,KN150118.1 chrUn_KN150119v1 1143 unplaced primary NW_008805442.1,KN150119.1 chrUn_KN150120v1 27511 unplaced primary NW_008805443.1,KN150120.1 chrUn_KN150121v1 8447 unplaced primary NW_003337032.1,KN150121.1 chrUn_KN150122v1 67534 unplaced primary NW_003337033.1,KN150122.1 chrUn_KN150123v1 51978 unplaced primary NW_003334680.2,KN150123.1 chrUn_KN150124v1 27208 unplaced primary NW_003335791.1,KN150124.1 chrUn_KN150125v1 83315 unplaced primary NW_003337013.1,KN150125.1 chrUn_KN150126v1 24847 unplaced primary NW_003336385.1,KN150126.1 chrUn_KN150127v1 33302 unplaced primary NW_003336678.1,KN150127.1 chrUn_KN150128v1 12262 unplaced primary NW_003336812.1,KN150128.1 chrUn_KN150129v1 107891 unplaced primary NW_003337085.1,KN150129.1 chrUn_KN150130v1 9925 unplaced primary NW_008805444.1,KN150130.1 chrUn_KN150131v1 70868 unplaced primary NW_008805445.1,KN150131.1 chrUn_KN150132v1 13999 unplaced primary NW_003336900.1,KN150132.1 chrUn_KN150133v1 82225 unplaced primary NW_003334034.1,KN150133.1 chrUn_KN150134v1 29067 unplaced primary NW_003336226.1,KN150134.1 chrUn_KN150135v1 6944 unplaced primary NW_003334912.1,KN150135.1 chrUn_KN150136v1 49373 unplaced primary NW_003336484.1,KN150136.1 chrUn_KN150137v1 36779 unplaced primary NW_003336679.1,KN150137.1 chrUn_KN150138v1 14383 unplaced primary NW_003336688.1,KN150138.1 chrUn_KN150139v1 16647 unplaced primary NW_008805446.1,KN150139.1 chrUn_KN150140v1 32180 unplaced primary NW_003336878.2,KN150140.1 chrUn_KN150141v1 17117 unplaced primary NW_003335166.2,KN150141.1 chrUn_KN150142v1 16050 unplaced primary NW_003336182.2,KN150142.1 chrUn_KN150143v1 4977 unplaced primary NW_008805447.1,KN150143.1 chrUn_KN150144v1 14974 unplaced primary NW_003336479.1,KN150144.1 chrUn_KN150145v1 9970 unplaced primary NW_008805448.1,KN150145.1 chrUn_KN150146v1 9714 unplaced primary NW_003337126.1,KN150146.1 chrUn_KN150147v1 7977 unplaced primary NW_003335184.2,KN150147.1 chrUn_KN150148v1 44589 unplaced primary NW_003337040.2,KN150148.1 chrUn_KN150149v1 3784 unplaced primary NW_003336789.1,KN150149.1 chrUn_KN150150v1 9780 unplaced primary NW_008805449.1,KN150150.1 chrUn_KN150151v1 27317 unplaced primary NW_003336908.1,KN150151.1 chrUn_KN150152v1 9348 unplaced primary NW_008805450.1,KN150152.1 chrUn_KN150153v1 1545 unplaced primary NW_003334841.1,KN150153.1 chrUn_KN150154v1 21695 unplaced primary NW_003335322.1,KN150154.1 chrUn_KN150155v1 10282 unplaced primary NW_008805451.1,KN150155.1 chrUn_KN150156v1 33247 unplaced primary NW_003337259.1,KN150156.1 chrUn_KN150157v1 18756 unplaced primary NW_003337224.1,KN150157.1 chrUn_KN150158v1 106536 unplaced primary NW_003335383.2,KN150158.1 chrUn_KN150159v1 35229 unplaced primary NW_003337196.1,KN150159.1 chrUn_KN150160v1 17824 unplaced primary NW_003336286.1,KN150160.1 chrUn_KN150161v1 12647 unplaced primary NW_008805452.1,KN150161.1 chrUn_KN150162v1 10930 unplaced primary NW_003336381.1,KN150162.1 chrUn_KN150163v1 1082 unplaced primary NW_008805453.1,KN150163.1 chrUn_KN150164v1 11300 unplaced primary NW_003335796.1,KN150164.1 chrUn_KN150165v1 32739 unplaced primary NW_003336925.1,KN150165.1 chrUn_KN150166v1 49457 unplaced primary NW_003336541.1,KN150166.1 chrUn_KN150167v1 13466 unplaced primary NW_003336392.1,KN150167.1 chrUn_KN150168v1 28382 unplaced primary NW_003336254.1,KN150168.1 chrUn_KN150169v1 7260 unplaced primary NW_003334119.1,KN150169.1 chrUn_KN150170v1 55716 unplaced primary NW_003336404.2,KN150170.1 chrUn_KN150171v1 140649 unplaced primary NW_003336964.1,KN150171.1 chrUn_KN150172v1 40634 unplaced primary NW_008805454.1,KN150172.1 chrUn_KN150173v1 50946 unplaced primary NW_003336455.2,KN150173.1 chrUn_KN150174v1 13450 unplaced primary NW_008805455.1,KN150174.1 chrUn_KN150175v1 24612 unplaced primary NW_003337250.1,KN150175.1 chrUn_KN150176v1 69061 unplaced primary NW_003334499.2,KN150176.1 chrUn_KN150177v1 21670 unplaced primary NW_003336928.1,KN150177.1 chrUn_KN150178v1 28040 unplaced primary NW_003336606.2,KN150178.1 chrUn_KN150179v1 47473 unplaced primary NW_003336461.1,KN150179.1 chrUn_KN150180v1 1872 unplaced primary NW_003337031.1,KN150180.1 chrUn_KN150181v1 32761 unplaced primary NW_003335920.1,KN150181.1 chrUn_KN150182v1 11735 unplaced primary NW_003337162.1,KN150182.1 chrUn_KN150183v1 22266 unplaced primary NW_003334281.1,KN150183.1 chrUn_KN150184v1 16312 unplaced primary NW_003336327.1,KN150184.1 chrUn_KN150185v1 8651 unplaced primary NW_003336293.1,KN150185.1 chrUn_KN150186v1 23923 unplaced primary NW_003334071.2,KN150186.1 chrUn_KN150187v1 19179 unplaced primary NW_003336328.1,KN150187.1 chrUn_KN150188v1 9856 unplaced primary NW_008805456.1,KN150188.1 chrUn_KN150189v1 38868 unplaced primary NW_003336699.1,KN150189.1 chrUn_KN150190v1 11399 unplaced primary NW_003336858.1,KN150190.1 chrUn_KN150191v1 42303 unplaced primary NW_003334899.1,KN150191.1 chrUn_KN150192v1 1918 unplaced primary NW_008805457.1,KN150192.1 chrUn_KN150193v1 12580 unplaced primary NW_003336332.1,KN150193.1 chrUn_KN150194v1 13629 unplaced primary NW_003336375.1,KN150194.1 chrUn_KN150195v1 18921 unplaced primary NW_003336913.1,KN150195.1 chrUn_KN150196v1 89077 unplaced primary NW_008805458.1,KN150196.1 chrUn_KN150197v1 14532 unplaced primary NW_003337171.1,KN150197.1 chrUn_KN150198v1 18196 unplaced primary NW_003336446.1,KN150198.1 chrUn_KN150199v1 16564 unplaced primary NW_003336871.1,KN150199.1 chrUn_KN150200v1 31861 unplaced primary NW_008805459.1,KN150200.1 chrUn_KN150201v1 9480 unplaced primary NW_003336661.1,KN150201.1 chrUn_KN150202v1 15451 unplaced primary NW_003337002.1,KN150202.1 chrUn_KN150203v1 24004 unplaced primary NW_003337189.1,KN150203.1 chrUn_KN150204v1 95149 unplaced primary NW_003337204.1,KN150204.1 chrUn_KN150205v1 2620 unplaced primary NW_003337172.1,KN150205.1 chrUn_KN150206v1 2052 unplaced primary NW_003336388.1,KN150206.1 chrUn_KN150207v1 117821 unplaced primary NW_003335281.1,KN150207.1 chrUn_KN150208v1 33163 unplaced primary NW_003336930.1,KN150208.1 chrUn_KN150209v1 4398 unplaced primary NW_008805460.1,KN150209.1 chrUn_KN150210v1 12550 unplaced primary NW_003337136.1,KN150210.1 chrUn_KN150211v1 16386 unplaced primary NW_003336376.1,KN150211.1 chrUn_KN150212v1 18932 unplaced primary NW_003335408.1,KN150212.1 chrUn_KN150213v1 16101 unplaced primary NW_008805461.1,KN150213.1 chrUn_KN150214v1 162877 unplaced primary NW_003336732.1,KN150214.1 chrUn_KN150215v1 1237 unplaced primary NW_003334517.2,KN150215.1 chrUn_KN150216v1 1020 unplaced primary NW_008805462.1,KN150216.1 chrUn_KN150217v1 13840 unplaced primary NW_008805463.1,KN150217.1 chrUn_KN150218v1 15354 unplaced primary NW_003336601.1,KN150218.1 chrUn_KN150219v1 16672 unplaced primary NW_003336553.1,KN150219.1 chrUn_KN150220v1 29625 unplaced primary NW_003335052.1,KN150220.1 chrUn_KN150221v1 28122 unplaced primary NW_003336895.1,KN150221.1 chrUn_KN150222v1 110669 unplaced primary NW_003336730.1,KN150222.1 chrUn_KN150223v1 1141 unplaced primary NW_008805464.1,KN150223.1 chrUn_KN150224v1 24154 unplaced primary NW_003335355.2,KN150224.1 chrUn_KN150225v1 20429 unplaced primary NW_008805465.1,KN150225.1 chrUn_KN150226v1 25293 unplaced primary NW_003334453.1,KN150226.1 chrUn_KN150227v1 31979 unplaced primary NW_003336903.1,KN150227.1 chrUn_KN150228v1 17061 unplaced primary NW_003337202.1,KN150228.1 chrUn_KN150229v1 1251 unplaced primary NW_003336632.1,KN150229.1 chrUn_KN150230v1 149710 unplaced primary NW_003335764.1,KN150230.1 chrUn_KN150231v1 2322 unplaced primary NW_008805466.1,KN150231.1 chrUn_KN150232v1 53540 unplaced primary NW_003336350.1,KN150232.1 chrUn_KN150233v1 2246 unplaced primary NW_003336429.1,KN150233.1 chrUn_KN150234v1 18511 unplaced primary NW_003336769.1,KN150234.1 chrUn_KN150235v1 13664 unplaced primary NW_008805467.1,KN150235.1 chrUn_KN150236v1 19315 unplaced primary NW_008805468.1,KN150236.1 chrUn_KN150237v1 1732 unplaced primary NW_003336914.1,KN150237.1 chrUn_KN150238v1 9450 unplaced primary NW_003336515.1,KN150238.1 chrUn_KN150239v1 33607 unplaced primary NW_003337230.1,KN150239.1 chrUn_KN150240v1 31723 unplaced primary NW_003335884.2,KN150240.1 chrUn_KN150241v1 60821 unplaced primary NW_003336647.1,KN150241.1 chrUn_KN150242v1 20063 unplaced primary NW_003334219.2,KN150242.1 chrUn_KN150243v1 44953 unplaced primary NW_003336949.2,KN150243.1 chrUn_KN150244v1 42860 unplaced primary NW_003336894.1,KN150244.1 chrUn_KN150245v1 8814 unplaced primary NW_008805469.1,KN150245.1 chrUn_KN150246v1 15365 unplaced primary NW_008805470.1,KN150246.1 chrUn_KN150247v1 728 unplaced primary NW_008805471.1,KN150247.1 chrUn_KN150248v1 18273 unplaced primary NW_003337198.1,KN150248.1 chrUn_KN150249v1 12261 unplaced primary NW_003336377.1,KN150249.1 chrUn_KN150250v1 13560 unplaced primary NW_008805472.1,KN150250.1 chrUn_KN150251v1 26988 unplaced primary NW_008805473.1,KN150251.1 chrUn_KN150252v1 43133 unplaced primary NW_003334150.2,KN150252.1 chrUn_KN150253v1 3149 unplaced primary NW_003336972.2,KN150253.1 chrUn_KN150254v1 12144 unplaced primary NW_003336921.1,KN150254.1 chrUn_KN150255v1 36661 unplaced primary NW_003336517.1,KN150255.1 chrUn_KN150256v1 17390 unplaced primary NW_003336356.1,KN150256.1 chrUn_KN150257v1 12735 unplaced primary NW_003336819.1,KN150257.1 chrUn_KN150258v1 95885 unplaced primary NW_003337070.1,KN150258.1 chrUn_KN150259v1 50098 unplaced primary NW_003336396.1,KN150259.1 chrUn_KN150260v1 12318 unplaced primary NW_003337096.1,KN150260.1 chrUn_KN150261v1 5601 unplaced primary NW_008805474.1,KN150261.1 chrUn_KN150262v1 81659 unplaced primary NW_008805475.1,KN150262.1 chrUn_KN150263v1 31336 unplaced primary NW_003336283.1,KN150263.1 chrUn_KN150264v1 16955 unplaced primary NW_003334519.2,KN150264.1 chrUn_KN150265v1 51555 unplaced primary NW_003335278.1,KN150265.1 chrUn_KN150266v1 78263 unplaced primary NW_003336232.1,KN150266.1 chrUn_KN150267v1 77778 unplaced primary NW_003337203.1,KN150267.1 chrUn_KN150268v1 15280 unplaced primary NW_008805476.1,KN150268.1 chrUn_KN150269v1 48062 unplaced primary NW_003336662.1,KN150269.1 chrUn_KN150270v1 22285 unplaced primary NW_003337159.1,KN150270.1 chrUn_KN150271v1 12637 unplaced primary NW_003336846.1,KN150271.1 chrUn_KN150272v1 34295 unplaced primary NW_003336573.1,KN150272.1 chrUn_KN150273v1 81940 unplaced primary NW_003335280.1,KN150273.1 chrUn_KN150274v1 12247 unplaced primary NW_003336884.1,KN150274.1 chrUn_KN150275v1 13800 unplaced primary NW_003336488.1,KN150275.1 chrUn_KN150276v1 12942 unplaced primary NW_003336666.1,KN150276.1 chrUn_KN150277v1 1954 unplaced primary NW_008805477.1,KN150277.1 chrUn_KN150278v1 30978 unplaced primary NW_003337101.1,KN150278.1 chrUn_KN150279v1 11402 unplaced primary NW_003337080.1,KN150279.1 chrUn_KN150280v1 10487 unplaced primary NW_008805478.1,KN150280.1 chrUn_KN150281v1 3763 unplaced primary NW_008805479.1,KN150281.1 chrUn_KN150282v1 23758 unplaced primary NW_003336036.1,KN150282.1 chrUn_KN150283v1 13933 unplaced primary NW_008805480.1,KN150283.1 chrUn_KN150284v1 18131 unplaced primary NW_003336443.1,KN150284.1 chrUn_KN150285v1 25361 unplaced primary NW_003334203.1,KN150285.1 chrUn_KN150286v1 9068 unplaced primary NW_008805481.1,KN150286.1 chrUn_KN150287v1 11856 unplaced primary NW_003337239.1,KN150287.1 chrUn_KN150288v1 12496 unplaced primary NW_008805482.1,KN150288.1 chrUn_KN150289v1 22206 unplaced primary NW_003336437.1,KN150289.1 chrUn_KN150290v1 18248 unplaced primary NW_003337065.1,KN150290.1 chrUn_KN150291v1 25796 unplaced primary NW_003336764.1,KN150291.1 chrUn_KN150292v1 9984 unplaced primary NW_003337025.1,KN150292.1 chrUn_KN150293v1 40764 unplaced primary NW_008805483.1,KN150293.1 chrUn_KN150294v1 1627 unplaced primary NW_008805484.1,KN150294.1 chrUn_KN150295v1 5486 unplaced primary NW_008805485.1,KN150295.1 chrUn_KN150296v1 10238 unplaced primary NW_003336834.1,KN150296.1 chrUn_KN150297v1 23472 unplaced primary NW_003337028.1,KN150297.1 chrUn_KN150298v1 1322 unplaced primary NW_008805486.1,KN150298.1 chrUn_KN150299v1 23511 unplaced primary NW_003337154.1,KN150299.1 chrUn_KN150300v1 9489 unplaced primary NW_003336674.1,KN150300.1 chrUn_KN150301v1 18664 unplaced primary NW_003336572.2,KN150301.1 chrUn_KN150302v1 13538 unplaced primary NW_008805487.1,KN150302.1 chrUn_KN150303v1 39288 unplaced primary NW_008805488.1,KN150303.1 chrUn_KN150304v1 10004 unplaced primary NW_008805489.1,KN150304.1 chrUn_KN150305v1 23261 unplaced primary NW_003336298.1,KN150305.1 chrUn_KN150306v1 36728 unplaced primary NW_003336603.1,KN150306.1 chrUn_KN150307v1 9167 unplaced primary NW_003336554.1,KN150307.1 chrUn_KN150308v1 18907 unplaced primary NW_003337131.2,KN150308.1 chrUn_KN150309v1 20999 unplaced primary NW_003336529.1,KN150309.1 chrUn_KN150310v1 20509 unplaced primary NW_008805490.1,KN150310.1 chrUn_KN150311v1 15747 unplaced primary NW_003337042.1,KN150311.1 chrUn_KN150312v1 17282 unplaced primary NW_008805491.1,KN150312.1 chrUn_KN150313v1 20655 unplaced primary NW_003336176.2,KN150313.1 chrUn_KN150314v1 12455 unplaced primary NW_003337059.1,KN150314.1 chrUn_KN150315v1 20424 unplaced primary NW_003337219.1,KN150315.1 chrUn_KN150316v1 11489 unplaced primary NW_008805492.1,KN150316.1 chrUn_KN150317v1 14866 unplaced primary NW_008805493.1,KN150317.1 chrUn_KN150318v1 2580 unplaced primary NW_008805494.1,KN150318.1 chrUn_KN150319v1 15807 unplaced primary NW_003336810.1,KN150319.1 chrUn_KN150320v1 1241 unplaced primary NW_008805495.1,KN150320.1 chrUn_KN150321v1 3079 unplaced primary NW_008805496.1,KN150321.1 chrUn_KN150322v1 19644 unplaced primary NW_008805497.1,KN150322.1 chrUn_KN150323v1 18137 unplaced primary NW_003336675.1,KN150323.1 chrUn_KN150324v1 24032 unplaced primary NW_003334033.1,KN150324.1 chrUn_KN150325v1 19525 unplaced primary NW_003336599.1,KN150325.1 chrUn_KN150326v1 109565 unplaced primary NW_003336663.1,KN150326.1 chrUn_KN150327v1 19949 unplaced primary NW_008805498.1,KN150327.1 chrUn_KN150328v1 17410 unplaced primary NW_003336978.1,KN150328.1 chrUn_KN150329v1 13297 unplaced primary NW_003337127.1,KN150329.1 chrUn_KN150330v1 28440 unplaced primary NW_003334988.2,KN150330.1 chrUn_KN150331v1 44968 unplaced primary NW_003336940.1,KN150331.1 chrUn_KN150332v1 22862 unplaced primary NW_003336784.1,KN150332.1 chrUn_KN150333v1 12275 unplaced primary NW_003335050.1,KN150333.1 chrUn_KN150334v1 22542 unplaced primary NW_003336876.1,KN150334.1 chrUn_KN150335v1 44504 unplaced primary NW_003337117.1,KN150335.1 chrUn_KN150336v1 48672 unplaced primary NW_003334683.1,KN150336.1 chrUn_KN150337v1 20260 unplaced primary NW_003336442.1,KN150337.1 chrUn_KN150338v1 1142 unplaced primary NW_003336815.1,KN150338.1 chrUn_KN150339v1 75108 unplaced primary NW_003334369.1,KN150339.1 chrUn_KN150340v1 28741 unplaced primary NW_003334670.1,KN150340.1 chrUn_KN150341v1 31147 unplaced primary NW_003337182.1,KN150341.1 chrUn_KN150342v1 82590 unplaced primary NW_003335650.1,KN150342.1 chrUn_KN150343v1 26928 unplaced primary NW_003336806.1,KN150343.1 chrUn_KN150344v1 19681 unplaced primary NW_008805499.1,KN150344.1 chrUn_KN150345v1 17012 unplaced primary NW_003337008.2,KN150345.1 chrUn_KN150346v1 70538 unplaced primary NW_003336813.1,KN150346.1 chrUn_KN150347v1 51528 unplaced primary NW_003336513.1,KN150347.1 chrUn_KN150348v1 42704 unplaced primary NW_003336418.1,KN150348.1 chrUn_KN150349v1 29114 unplaced primary NW_003336956.1,KN150349.1 chrUn_KN150350v1 9245 unplaced primary NW_003336410.1,KN150350.1 chrUn_KN150351v1 49608 unplaced primary NW_003336758.1,KN150351.1 chrUn_KN150352v1 15907 unplaced primary NW_003336681.1,KN150352.1 chrUn_KN150353v1 19631 unplaced primary NW_003336715.1,KN150353.1 chrUn_KN150354v1 1452 unplaced primary NW_003336475.1,KN150354.1 chrUn_KN150355v1 6731 unplaced primary NW_003337006.1,KN150355.1 chrUn_KN150356v1 1177 unplaced primary NW_008805500.1,KN150356.1 chrUn_KN150357v1 27326 unplaced primary NW_003337192.1,KN150357.1 chrUn_KN150358v1 9951 unplaced primary NW_008805501.1,KN150358.1 chrUn_KN150359v1 71383 unplaced primary NW_003337027.1,KN150359.1 chrUn_KN150360v1 15639 unplaced primary NW_003336934.1,KN150360.1 chrUn_KN150361v1 53624 unplaced primary NW_008805502.1,KN150361.1 chrUn_KN150362v1 17145 unplaced primary NW_003336636.1,KN150362.1 chrUn_KN150363v1 22766 unplaced primary NW_003336387.2,KN150363.1 chrUn_KN150364v1 15084 unplaced primary NW_003336746.1,KN150364.1 chrUn_KN150365v1 10769 unplaced primary NW_008805503.1,KN150365.1 chrUn_KN150366v1 10057 unplaced primary NW_003336766.1,KN150366.1 chrUn_KN150367v1 1114 unplaced primary NW_008805504.1,KN150367.1 chrUn_KN150368v1 18491 unplaced primary NW_003336088.1,KN150368.1 chrUn_KN150369v1 11460 unplaced primary NW_003336929.1,KN150369.1 chrUn_KN150370v1 1323 unplaced primary NW_008805505.1,KN150370.1 chrUn_KN150371v1 13836 unplaced primary NW_003336374.1,KN150371.1 chrUn_KN150372v1 29560 unplaced primary NW_003337097.1,KN150372.1 chrUn_KN150373v1 13130 unplaced primary NW_003336391.1,KN150373.1 chrUn_KN150374v1 9775 unplaced primary NW_003336772.2,KN150374.1 chrUn_KN150375v1 111208 unplaced primary NW_008805506.1,KN150375.1 chrUn_KN150376v1 39971 unplaced primary NW_008805507.1,KN150376.1 chrUn_KN150377v1 5727 unplaced primary NW_003334718.1,KN150377.1 chrUn_KN150378v1 4206 unplaced primary NW_003337102.1,KN150378.1 chrUn_KN150379v1 29907 unplaced primary NW_003336918.1,KN150379.1 chrUn_KN150380v1 12144 unplaced primary NW_003337115.1,KN150380.1 chrUn_KN150381v1 8595 unplaced primary NW_003336129.1,KN150381.1 chrUn_KN150382v1 14074 unplaced primary NW_003336287.1,KN150382.1 chrUn_KN150383v1 7777 unplaced primary NW_003335266.1,KN150383.1 chrUn_KN150384v1 22969 unplaced primary NW_003337193.1,KN150384.1 chrUn_KN150385v1 37055 unplaced primary NW_003335289.1,KN150385.1 chrUn_KN150386v1 35900 unplaced primary NW_003337183.1,KN150386.1 chrUn_KN150387v1 15215 unplaced primary NW_003336845.1,KN150387.1 chrUn_KN150388v1 22284 unplaced primary NW_008805508.1,KN150388.1 chrUn_KN150389v1 10334 unplaced primary NW_008805509.1,KN150389.1 chrUn_KN150390v1 19066 unplaced primary NW_003336331.2,KN150390.1 chrUn_KN150391v1 26543 unplaced primary NW_003335573.1,KN150391.1 chrUn_KN150392v1 12069 unplaced primary NW_003336185.1,KN150392.1 chrUn_KN150393v1 12073 unplaced primary NW_008805510.1,KN150393.1 chrUn_KN150394v1 17139 unplaced primary NW_003337222.1,KN150394.1 chrUn_KN150395v1 9792 unplaced primary NW_003336361.1,KN150395.1 chrUn_KN150396v1 8176 unplaced primary NW_003337207.1,KN150396.1 chrUn_KN150397v1 17295 unplaced primary NW_003336593.1,KN150397.1 chrUn_KN150398v1 39557 unplaced primary NW_003336425.1,KN150398.1 chrUn_KN150399v1 19362 unplaced primary NW_003337242.1,KN150399.1 chrUn_KN150400v1 34930 unplaced primary NW_003337146.1,KN150400.1 chrUn_KN150401v1 10081 unplaced primary NW_003336665.1,KN150401.1 chrUn_KN150402v1 47971 unplaced primary NW_003336537.1,KN150402.1 chrUn_KN150403v1 34697 unplaced primary NW_003336855.1,KN150403.1 chrUn_KN150404v1 18160 unplaced primary NW_008805511.1,KN150404.1 chrUn_KN150405v1 76919 unplaced primary NW_003335907.1,KN150405.1 chrUn_KN150406v1 17215 unplaced primary NW_003334182.1,KN150406.1 chrUn_KN150407v1 31814 unplaced primary NW_003336727.1,KN150407.1 chrUn_KN150408v1 37191 unplaced primary NW_003337083.1,KN150408.1 chrUn_KN150409v1 1729 unplaced primary NW_008805512.1,KN150409.1 chrUn_KN150410v1 14841 unplaced primary NW_008805513.1,KN150410.1 chrUn_KN150411v1 20886 unplaced primary NW_003336533.1,KN150411.1 chrUn_KN150412v1 9605 unplaced primary NW_008805514.1,KN150412.1 chrUn_KN150413v1 15078 unplaced primary NW_003337251.1,KN150413.1 chrUn_KN150414v1 35871 unplaced primary NW_003337046.1,KN150414.1 chrUn_KN150415v1 70574 unplaced primary NW_003336416.1,KN150415.1 chrUn_KN150416v1 33835 unplaced primary NW_003337161.1,KN150416.1 chrUn_KN150417v1 2254 unplaced primary NW_008805515.1,KN150417.1 chrUn_KN150418v1 14930 unplaced primary NW_008805516.1,KN150418.1 chrUn_KN150419v1 14114 unplaced primary NW_003337233.1,KN150419.1 chrUn_KN150420v1 14290 unplaced primary NW_008805517.1,KN150420.1 chrUn_KN150421v1 14951 unplaced primary NW_003336994.1,KN150421.1 chrUn_KN150422v1 15053 unplaced primary NW_003336621.1,KN150422.1 chrUn_KN150423v1 15221 unplaced primary NW_003336672.2,KN150423.1 chrUn_KN150424v1 11928 unplaced primary NW_008805518.1,KN150424.1 chrUn_KN150425v1 110593 unplaced primary NW_003336436.1,KN150425.1 chrUn_KN150426v1 21499 unplaced primary NW_003334448.1,KN150426.1 chrUn_KN150427v1 45580 unplaced primary NW_008805519.1,KN150427.1 chrUn_KN150428v1 29216 unplaced primary NW_003336422.1,KN150428.1 chrUn_KN150429v1 17683 unplaced primary NW_003337045.1,KN150429.1 chrUn_KN150430v1 16452 unplaced primary NW_003336966.1,KN150430.1 chrUn_KN150431v1 89659 unplaced primary NW_003336510.1,KN150431.1 chrUn_KN150432v1 91010 unplaced primary NW_003336612.1,KN150432.1 chrUn_KN150433v1 8322 unplaced primary NW_008805520.1,KN150433.1 chrUn_KN150434v1 12053 unplaced primary NW_003336824.1,KN150434.1 chrUn_KN150435v1 123991 unplaced primary NW_003334548.2,KN150435.1 chrUn_KN150436v1 17739 unplaced primary NW_003336998.2,KN150436.1 chrUn_KN150437v1 1262 unplaced primary NW_003335163.1,KN150437.1 chrUn_KN150438v1 7619 unplaced primary NW_008805521.1,KN150438.1 chrUn_KN150439v1 10343 unplaced primary NW_003337068.1,KN150439.1 chrUn_KN150440v1 1193 unplaced primary NW_003334844.1,KN150440.1 chrUn_KN150441v1 12439 unplaced primary NW_003336324.1,KN150441.1 chrUn_KN150442v1 67738 unplaced primary NW_003336589.1,KN150442.1 chrUn_KN150443v1 11834 unplaced primary NW_003337088.1,KN150443.1 chrUn_KN150444v1 11830 unplaced primary NW_003336989.1,KN150444.1 chrUn_KN150445v1 12072 unplaced primary NW_008805522.1,KN150445.1 chrUn_KN150446v1 12446 unplaced primary NW_008805523.1,KN150446.1 chrUn_KN150447v1 6779 unplaced primary NW_008805524.1,KN150447.1 chrUn_KN150448v1 3709 unplaced primary NW_008805525.1,KN150448.1 chrUn_KN150449v1 62607 unplaced primary NW_008805526.1,KN150449.1 chrUn_KN150450v1 25362 unplaced primary NW_008805527.1,KN150450.1 chrUn_KN150451v1 14920 unplaced primary NW_008805528.1,KN150451.1 chrUn_KN150452v1 8345 unplaced primary NW_003336441.1,KN150452.1 chrUn_KN150453v1 13591 unplaced primary NW_008805529.1,KN150453.1 chrUn_KN150454v1 18479 unplaced primary NW_003337265.1,KN150454.1 chrUn_KN150455v1 73536 unplaced primary NW_003337116.1,KN150455.1 chrUn_KN150456v1 76246 unplaced primary NW_003336453.1,KN150456.1 chrUn_KN150457v1 1076 unplaced primary NW_008805530.1,KN150457.1 chrUn_KN150458v1 17481 unplaced primary NW_003337124.1,KN150458.1 chrUn_KN150459v1 45603 unplaced primary NW_003337132.1,KN150459.1 chrUn_KN150460v1 266772 unplaced primary NW_003335395.1,KN150460.1 chrUn_KN150461v1 1000 unplaced primary NW_008805531.1,KN150461.1 chrUn_KN150462v1 24623 unplaced primary NW_003334810.2,KN150462.1 chrUn_KN150463v1 29963 unplaced primary NW_003336512.1,KN150463.1 chrUn_KN150464v1 24865 unplaced primary NW_003337179.1,KN150464.1 chrUn_KN150465v1 1765 unplaced primary NW_008805532.1,KN150465.1 chrUn_KN150466v1 41319 unplaced primary NW_003336897.1,KN150466.1 chrUn_KN150467v1 11202 unplaced primary NW_008805533.1,KN150467.1 chrUn_KN150468v1 25381 unplaced primary NW_003336414.1,KN150468.1 chrUn_KN150469v1 14614 unplaced primary NW_003336514.1,KN150469.1 chrUn_KN150470v1 2027 unplaced primary NW_003335559.1,KN150470.1 chrUn_KN150471v1 76663 unplaced primary NW_003335375.1,KN150471.1 chrUn_KN150472v1 14586 unplaced primary NW_003337034.1,KN150472.1 chrUn_KN150473v1 1285 unplaced primary NW_008805534.1,KN150473.1 chrUn_KN150474v1 312116 unplaced primary NW_003337016.1,KN150474.1 chrUn_KN150475v1 17517 unplaced primary NW_003335148.1,KN150475.1 chrUn_KN150476v1 59211 unplaced primary NW_003336445.1,KN150476.1 chrUn_KN150477v1 61693 unplaced primary NW_003337143.1,KN150477.1 chrUn_KN150478v1 25813 unplaced primary NW_003336671.1,KN150478.1 chrUn_KN150479v1 48186 unplaced primary NW_008805535.1,KN150479.1 chrUn_KN150480v1 1422 unplaced primary NW_008805536.1,KN150480.1 chrUn_KN150481v1 1008 unplaced primary NW_003334506.1,KN150481.1 chrUn_KN150482v1 14895 unplaced primary NW_008805537.1,KN150482.1 chrUn_KN150483v1 17332 unplaced primary NW_003337177.1,KN150483.1 chrUn_KN150484v1 14965 unplaced primary NW_003334956.2,KN150484.1 chrUn_KN150485v1 7348 unplaced primary NW_003337187.1,KN150485.1 chrUn_KN150486v1 8572 unplaced primary NW_008805538.1,KN150486.1 chrUn_KN150487v1 123701 unplaced primary NW_003336534.1,KN150487.1 chrUn_KN150488v1 17582 unplaced primary NW_003336507.1,KN150488.1 chrUn_KN150489v1 26739 unplaced primary NW_003336591.1,KN150489.1 chrUn_KN150490v1 23057 unplaced primary NW_008805539.1,KN150490.1 chrUn_KN150491v1 13001 unplaced primary NW_008805540.1,KN150491.1 chrUn_KN150492v1 31617 unplaced primary NW_003337261.1,KN150492.1 chrUn_KN150493v1 35575 unplaced primary NW_003336563.1,KN150493.1 chrUn_KN150494v1 10108 unplaced primary NW_003336347.1,KN150494.1 chrUn_KN150495v1 28160 unplaced primary NW_003336321.1,KN150495.1 chrUn_KN150496v1 21062 unplaced primary NW_003337150.1,KN150496.1 chrUn_KN150497v1 46188 unplaced primary NW_003336641.1,KN150497.1 chrUn_KN150498v1 34205 unplaced primary NW_003335577.1,KN150498.1 chrUn_KN150499v1 11840 unplaced primary NW_003336729.1,KN150499.1 chrUn_KN150500v1 19866 unplaced primary NW_003336968.1,KN150500.1 chrUn_KN150501v1 22392 unplaced primary NW_003334575.1,KN150501.1 chrUn_KN150502v1 13027 unplaced primary NW_008805541.1,KN150502.1 chrUn_KN150503v1 1834 unplaced primary NW_003336687.2,KN150503.1 chrUn_KN150504v1 12094 unplaced primary NW_003337122.1,KN150504.1 chrUn_KN150505v1 39265 unplaced primary NW_008805542.1,KN150505.1 chrUn_KN150506v1 14319 unplaced primary NW_008805543.1,KN150506.1 chrUn_KN150507v1 12629 unplaced primary NW_003336962.2,KN150507.1 chrUn_KN150508v1 26814 unplaced primary NW_003337071.1,KN150508.1 chrUn_KN150509v1 11846 unplaced primary NW_008805544.1,KN150509.1 chrUn_KN150510v1 13237 unplaced primary NW_003336872.1,KN150510.1 chrUn_KN150511v1 38183 unplaced primary NW_003337218.1,KN150511.1 chrUn_KN150512v1 14003 unplaced primary NW_003336733.1,KN150512.1 chrUn_KN150513v1 10220 unplaced primary NW_003336451.1,KN150513.1 chrUn_KN150514v1 19391 unplaced primary NW_003336893.1,KN150514.1 chrUn_KN150515v1 1813 unplaced primary NW_003336686.1,KN150515.1 chrUn_KN150516v1 49339 unplaced primary NW_003335321.1,KN150516.1 chrUn_KN150517v1 16171 unplaced primary NW_003336995.1,KN150517.1 chrUn_KN150518v1 40394 unplaced primary NW_008805545.1,KN150518.1 chrUn_KN150519v1 11974 unplaced primary NW_003336494.1,KN150519.1 chrUn_KN150520v1 103159 unplaced primary NW_003334254.1,KN150520.1 chrUn_KN150521v1 20896 unplaced primary NW_003337266.1,KN150521.1 chrUn_KN150522v1 12046 unplaced primary NW_003336169.1,KN150522.1 chrUn_KN150523v1 19004 unplaced primary NW_003336403.1,KN150523.1 chrUn_KN150524v1 9948 unplaced primary NW_008805546.1,KN150524.1 chrUn_KN150525v1 650 unplaced primary NW_003336558.1,KN150525.1 chrUn_KN150526v1 15513 unplaced primary NW_003336311.1,KN150526.1 chrUn_KN150527v1 20880 unplaced primary NW_003336627.1,KN150527.1 chrUn_KN150528v1 13138 unplaced primary NW_003336655.1,KN150528.1 chrUn_KN150529v1 81946 unplaced primary NW_003335906.1,KN150529.1 chrUn_KN150530v1 7299 unplaced primary NW_003336511.1,KN150530.1 chrUn_KN150531v1 15090 unplaced primary NW_008805547.1,KN150531.1 chrUn_KN150532v1 21602 unplaced primary NW_003336781.2,KN150532.1 chrUn_KN150533v1 1222 unplaced primary NW_008805548.1,KN150533.1 chrUn_KN150534v1 17661 unplaced primary NW_003337106.1,KN150534.1 chrUn_KN150535v1 2315 unplaced primary NW_008805549.1,KN150535.1 chrUn_KN150536v1 17908 unplaced primary NW_003336520.1,KN150536.1 chrUn_KN150537v1 27568 unplaced primary NW_003336426.1,KN150537.1 chrUn_KN150538v1 12119 unplaced primary NW_003337019.1,KN150538.1 chrUn_KN150539v1 23246 unplaced primary NW_003336783.1,KN150539.1 chrUn_KN150540v1 15288 unplaced primary NW_003336701.2,KN150540.1 chrUn_KN150541v1 12323 unplaced primary NW_003336946.1,KN150541.1 chrUn_KN150542v1 12167 unplaced primary NW_003336583.1,KN150542.1 chrUn_KN150543v1 2343 unplaced primary NW_003335154.1,KN150543.1 chrUn_KN150544v1 1198 unplaced primary NW_003337120.1,KN150544.1 chrUn_KN150545v1 17546 unplaced primary NW_003336473.1,KN150545.1 chrUn_KN150546v1 10851 unplaced primary NW_008805550.1,KN150546.1 chrUn_KN150547v1 37420 unplaced primary NW_003337043.1,KN150547.1 chrUn_KN150548v1 46061 unplaced primary NW_003336435.2,KN150548.1 chrUn_KN150549v1 17599 unplaced primary NW_008805551.1,KN150549.1 chrUn_KN150550v1 14915 unplaced primary NW_008805552.1,KN150550.1 chrUn_KN150551v1 9435 unplaced primary NW_003336399.1,KN150551.1 chrUn_KN150552v1 74050 unplaced primary NW_003334318.1,KN150552.1 chrUn_KN150553v1 14032 unplaced primary NW_003336237.1,KN150553.1 chrUn_KN150554v1 9251 unplaced primary NW_003336448.1,KN150554.1 chrUn_KN150555v1 9941 unplaced primary NW_008805553.1,KN150555.1 chrUn_KN150556v1 9286 unplaced primary NW_003336975.1,KN150556.1 chrUn_KN150557v1 41459 unplaced primary NW_003336471.1,KN150557.1 chrUn_KN150558v1 12115 unplaced primary NW_003336684.1,KN150558.1 chrUn_KN150559v1 26580 unplaced primary NW_003336341.1,KN150559.1 chrUn_KN150560v1 2301 unplaced primary NW_003336300.2,KN150560.1 chrUn_KN150561v1 22238 unplaced primary NW_003335113.1,KN150561.1 chrUn_KN150562v1 22875 unplaced primary NW_003336996.1,KN150562.1 chrUn_KN150563v1 11540 unplaced primary NW_008805554.1,KN150563.1 chrUn_KN150564v1 17709 unplaced primary NW_003336398.1,KN150564.1 chrUn_KN150565v1 20464 unplaced primary NW_003336308.1,KN150565.1 chrUn_KN150566v1 39318 unplaced primary NW_003334077.1,KN150566.1 chrUn_KN150567v1 49566 unplaced primary NW_003336976.1,KN150567.1 chrUn_KN150568v1 108195 unplaced primary NW_003336276.1,KN150568.1 chrUn_KN150569v1 24359 unplaced primary NW_003336754.1,KN150569.1 chrUn_KN150570v1 42279 unplaced primary NW_003335350.1,KN150570.1 chrUn_KN150571v1 16505 unplaced primary NW_003336924.1,KN150571.1 chrUn_KN150572v1 28871 unplaced primary NW_003336559.1,KN150572.1 chrUn_KN150573v1 26604 unplaced primary NW_003336747.1,KN150573.1 chrUn_KN150574v1 18499 unplaced primary NW_003337151.1,KN150574.1 chrUn_KN150575v1 11084 unplaced primary NW_003336892.1,KN150575.1 chrUn_KN150576v1 36129 unplaced primary NW_003337260.1,KN150576.1 chrUn_KN150577v1 13719 unplaced primary NW_003336742.1,KN150577.1 chrUn_KN150578v1 103698 unplaced primary NW_003336492.1,KN150578.1 chrUn_KN150579v1 23586 unplaced primary NW_003336493.1,KN150579.1 chrUn_KN150580v1 32349 unplaced primary NW_003336274.1,KN150580.1 chrUn_KN150581v1 12355 unplaced primary NW_003337107.1,KN150581.1 chrUn_KN150582v1 12396 unplaced primary NW_003336907.1,KN150582.1 chrUn_KN150583v1 1918 unplaced primary NW_008805555.1,KN150583.1 chrUn_KN150584v1 51535 unplaced primary NW_008805556.1,KN150584.1 chrUn_KN150585v1 12430 unplaced primary NW_003336630.1,KN150585.1 chrUn_KN150586v1 17388 unplaced primary NW_008805557.1,KN150586.1 chrUn_KN150587v1 8461 unplaced primary NW_008805558.1,KN150587.1 chrUn_KN150588v1 14103 unplaced primary NW_003336773.1,KN150588.1 chrUn_KN150589v1 18957 unplaced primary NW_003334902.1,KN150589.1 chrUn_KN150590v1 5798 unplaced primary NW_003336166.1,KN150590.1 chrUn_KN150591v1 8817 unplaced primary NW_003336888.1,KN150591.1 chrUn_KN150592v1 50000 unplaced primary NW_003335319.1,KN150592.1 chrUn_KN150593v1 14353 unplaced primary NW_003334536.1,KN150593.1 chrUn_KN150594v1 19382 unplaced primary NW_003336521.1,KN150594.1 chrUn_KN150595v1 12507 unplaced primary NW_008805559.1,KN150595.1 chrUn_KN150596v1 60847 unplaced primary NW_003336991.1,KN150596.1 chrUn_KN150597v1 2137 unplaced primary NW_008805560.1,KN150597.1 chrUn_KN150598v1 12499 unplaced primary NW_003336762.1,KN150598.1 chrUn_KN150599v1 19019 unplaced primary NW_003336836.1,KN150599.1 chrUn_KN150600v1 32636 unplaced primary NW_003335880.2,KN150600.1 chrUn_KN150601v1 11167 unplaced primary NW_008805561.1,KN150601.1 chrUn_KN150602v1 22730 unplaced primary NW_003336682.1,KN150602.1 chrUn_KN150603v1 98280 unplaced primary NW_003336757.1,KN150603.1 chrUn_KN150604v1 25236 unplaced primary NW_003335007.1,KN150604.1 chrUn_KN150605v1 102574 unplaced primary NW_003336579.1,KN150605.1 chrUn_KN150606v1 51696 unplaced primary NW_003336826.1,KN150606.1 chrUn_KN150607v1 9531 unplaced primary NW_003336325.1,KN150607.1 chrUn_KN150608v1 149650 unplaced primary NW_003335359.2,KN150608.1 chrUn_KN150609v1 37413 unplaced primary NW_003336840.1,KN150609.1 chrUn_KN150610v1 10565 unplaced primary NW_003336302.1,KN150610.1 chrUn_KN150611v1 1697 unplaced primary NW_008805562.1,KN150611.1 chrUn_KN150612v1 2865 unplaced primary NW_003336939.1,KN150612.1 chrUn_KN150613v1 15739 unplaced primary NW_003336721.1,KN150613.1 chrUn_KN150614v1 9019 unplaced primary NW_008805563.1,KN150614.1 chrUn_KN150615v1 9878 unplaced primary NW_008805564.1,KN150615.1 chrUn_KN150616v1 88699 unplaced primary NW_003336543.1,KN150616.1 chrUn_KN150617v1 90208 unplaced primary NW_003335385.1,KN150617.1 chrUn_KN150618v1 64127 unplaced primary NW_003334455.1,KN150618.1 chrUn_KN150619v1 41925 unplaced primary NW_003336277.2,KN150619.1 chrUn_KN150620v1 30729 unplaced primary NW_003336997.1,KN150620.1 chrUn_KN150621v1 1204 unplaced primary NW_003335146.1,KN150621.1 chrUn_KN150622v1 15811 unplaced primary NW_003336614.1,KN150622.1 chrUn_KN150623v1 1126 unplaced primary NW_003337225.1,KN150623.1 chrUn_KN150624v1 18713 unplaced primary NW_003335889.1,KN150624.1 chrUn_KN150625v1 22486 unplaced primary NW_003336372.1,KN150625.1 chrUn_KN150626v1 32850 unplaced primary NW_003336568.1,KN150626.1 chrUn_KN150627v1 26060 unplaced primary NW_008805565.1,KN150627.1 chrUn_KN150628v1 33906 unplaced primary NW_008805566.1,KN150628.1 chrUn_KN150629v1 19604 unplaced primary NW_003334261.1,KN150629.1 chrUn_KN150630v1 86421 unplaced primary NW_003336337.1,KN150630.1 chrUn_KN150631v1 36324 unplaced primary NW_003335149.2,KN150631.1 chrUn_KN150632v1 11627 unplaced primary NW_003336725.1,KN150632.1 chrUn_KN150633v1 19558 unplaced primary NW_003335143.1,KN150633.1 chrUn_KN150634v1 16020 unplaced primary NW_003334668.1,KN150634.1 chrUn_KN150635v1 27947 unplaced primary NW_008805567.1,KN150635.1 chrUn_KN150636v1 20513 unplaced primary NW_008805568.1,KN150636.1 chrUn_KN150637v1 39689 unplaced primary NW_008805569.1,KN150637.1 chrUn_KN150638v1 39727 unplaced primary NW_003336706.1,KN150638.1 chrUn_KN150639v1 27620 unplaced primary NW_003336281.1,KN150639.1 chrUn_KN150640v1 20890 unplaced primary NW_003337057.1,KN150640.1 chrUn_KN150641v1 14778 unplaced primary NW_003335935.1,KN150641.1 chrUn_KN150642v1 55536 unplaced primary NW_003335314.1,KN150642.1 chrUn_KN150643v1 28088 unplaced primary NW_003336958.1,KN150643.1 chrUn_KN150644v1 20534 unplaced primary NW_008805570.1,KN150644.1 chrUn_KN150645v1 22839 unplaced primary NW_003336613.1,KN150645.1 chrUn_KN150646v1 78076 unplaced primary NW_003336358.1,KN150646.1 chrUn_KN150647v1 14938 unplaced primary NW_008805571.1,KN150647.1 chrUn_KN150648v1 2077 unplaced primary NW_008805572.1,KN150648.1 chrUn_KN150649v1 81249 unplaced primary NW_003336843.1,KN150649.1 chrUn_KN150650v1 3012 unplaced primary NW_003336973.1,KN150650.1 chrUn_KN150651v1 28018 unplaced primary NW_003337123.1,KN150651.1 chrUn_KN150652v1 18075 unplaced primary NW_003336743.1,KN150652.1 chrUn_KN150653v1 55997 unplaced primary NW_008805573.1,KN150653.1 chrUn_KN150654v1 18414 unplaced primary NW_008805574.1,KN150654.1 chrUn_KN150655v1 8089 unplaced primary NW_008805575.1,KN150655.1 chrUn_KN150656v1 28006 unplaced primary NW_003336774.2,KN150656.1 chrUn_KN150657v1 1007 unplaced primary NW_008805576.1,KN150657.1 chrUn_KN150658v1 90387 unplaced primary NW_003336386.1,KN150658.1 chrUn_KN150659v1 11827 unplaced primary NW_003334429.1,KN150659.1 chrUn_KN150660v1 13470 unplaced primary NW_008805577.1,KN150660.1 chrUn_KN150661v1 26250 unplaced primary NW_003334452.1,KN150661.1 chrUn_KN150662v1 17820 unplaced primary NW_003336355.1,KN150662.1 chrUn_KN150663v1 88608 unplaced primary NW_003337060.1,KN150663.1 chrUn_KN150664v1 9590 unplaced primary NW_003336740.1,KN150664.1 chrUn_KN150665v1 11944 unplaced primary NW_003337186.1,KN150665.1 chrUn_KN150666v1 63484 unplaced primary NW_003336407.1,KN150666.1 chrUn_KN150667v1 54201 unplaced primary NW_003336566.1,KN150667.1 chrUn_KN150668v1 21856 unplaced primary NW_003336756.1,KN150668.1 chrUn_KN150669v1 15325 unplaced primary NW_003336850.1,KN150669.1 chrUn_KN150670v1 77993 unplaced primary NW_003335386.2,KN150670.1 chrUn_KN150671v1 13526 unplaced primary NW_003337038.1,KN150671.1 chrUn_KN150672v1 107610 unplaced primary NW_003334334.2,KN150672.1 chrUn_KN150673v1 3357 unplaced primary NW_008805578.1,KN150673.1 chrUn_KN150674v1 13959 unplaced primary NW_003337135.1,KN150674.1 chrUn_KN150675v1 41858 unplaced primary NW_003337029.1,KN150675.1 chrUn_KN150676v1 51674 unplaced primary NW_003336294.1,KN150676.1 chrUn_KN150677v1 66956 unplaced primary NW_008805579.1,KN150677.1 chrUn_KN150678v1 7552 unplaced primary NW_003337026.1,KN150678.1 chrUn_KN150679v1 14065 unplaced primary NW_003336847.1,KN150679.1 chrUn_KN150680v1 13379 unplaced primary NW_003334441.1,KN150680.1 chrUn_KN150681v1 279222 unplaced primary NW_003335315.1,KN150681.1 chrUn_KN150682v1 15190 unplaced primary NW_003337188.1,KN150682.1 chrUn_KN150683v1 16822 unplaced primary NW_003334692.2,KN150683.1 chrUn_KN150684v1 24053 unplaced primary NW_003337255.1,KN150684.1 chrUn_KN150685v1 13309 unplaced primary NW_003336523.1,KN150685.1 chrUn_KN150686v1 11947 unplaced primary NW_003336791.1,KN150686.1 chrUn_KN150687v1 13294 unplaced primary NW_008805580.1,KN150687.1 chrUn_KN150688v1 1917 unplaced primary NW_003334086.1,KN150688.1 chrUn_KN150689v1 19550 unplaced primary NW_003336343.1,KN150689.1 chrUn_KN150690v1 26145 unplaced primary NW_003337041.1,KN150690.1 chrUn_KN150691v1 184625 unplaced primary NW_003336957.1,KN150691.1 chrUn_KN150692v1 12590 unplaced primary NW_003336157.1,KN150692.1 chrUn_KN150693v1 2190 unplaced primary NW_008805581.1,KN150693.1 chrUn_KN150694v1 13510 unplaced primary NW_003336798.1,KN150694.1 chrUn_KN150695v1 14840 unplaced primary NW_003335605.1,KN150695.1 chrUn_KN150696v1 29565 unplaced primary NW_003334029.1,KN150696.1 chrUn_KN150697v1 12709 unplaced primary NW_003336278.1,KN150697.1 chrUn_KN150698v1 31983 unplaced primary NW_003335800.1,KN150698.1 chrUn_KN150699v1 26100 unplaced primary NW_003334027.1,KN150699.1 chrUn_KN150700v1 79542 unplaced primary NW_008805582.1,KN150700.1 chrUn_KN150701v1 1133 unplaced primary NW_003335530.1,KN150701.1 chrUn_KN150702v1 212296 unplaced primary NW_003334319.1,KN150702.1 chrUn_KN150703v1 48009 unplaced primary NW_003336712.1,KN150703.1 chrUn_KN150704v1 1233 unplaced primary NW_008805583.1,KN150704.1 chrUn_KN150705v1 16373 unplaced primary NW_003336478.1,KN150705.1 chrUn_KN150706v1 8278 unplaced primary NW_008805584.1,KN150706.1 chrUn_KN150707v1 16938 unplaced primary NW_003336556.1,KN150707.1 chrUn_KN150708v1 42677 unplaced primary NW_008805585.1,KN150708.1 chrUn_KN150709v1 65370 unplaced primary NW_003337165.1,KN150709.1 chrUn_KN150710v1 19629 unplaced primary NW_003337075.1,KN150710.1 chrUn_KN150711v1 11940 unplaced primary NW_003336651.1,KN150711.1 chrUn_KN150712v1 79012 unplaced primary NW_003336549.2,KN150712.1 chrUn_KN150713v1 14579 unplaced primary NW_003336760.1,KN150713.1 bioframe-0.4.1/bioframe/io/data/ce11.seqinfo.tsv0000644000175000017500000000064314420777331020677 0ustar nileshnileshname length type molecule unit aliases chrI 15072434 assembled chrI primary NC_003279.8,I chrII 15279421 assembled chrII primary NC_003280.10,II chrIII 13783801 assembled chrIII primary NC_003281.10,III chrIV 17493829 assembled chrIV primary NC_003282.8,IV chrV 20924180 assembled chrV primary NC_003283.11,V chrX 17718942 assembled chrX primary NC_003284.9,X chrM 13794 assembled chrM non-nuclear NC_001328.1,MT,MtDNA bioframe-0.4.1/bioframe/io/data/ce10.seqinfo.tsv0000644000175000017500000000064114420777331020674 0ustar nileshnileshname length type molecule unit aliases chrI 15072423 assembled chrI primary NC_003279.7,I chrII 15279345 assembled chrII primary NC_003280.9,II chrIII 13783700 assembled chrIII primary NC_003281.9,III chrIV 17493793 assembled chrIV primary NC_003282.7,IV chrV 20924149 assembled chrV primary NC_003283.10,V chrX 17718866 assembled chrX primary NC_003284.8,X chrM 13794 assembled chrM non-nuclear NC_001328.1,MT,MtDNA bioframe-0.4.1/bioframe/io/data/GRCh37.seqinfo.tsv0000644000175000017500000001524714420777331021111 0ustar nileshnileshname length type molecule unit aliases chr1 249250621 assembled chr1 primary 1,CM000663.1,NC_000001.10 chr2 243199373 assembled chr2 primary 2,CM000664.1,NC_000002.11 chr3 198022430 assembled chr3 primary 3,CM000665.1,NC_000003.11 chr4 191154276 assembled chr4 primary 4,CM000666.1,NC_000004.11 chr5 180915260 assembled chr5 primary 5,CM000667.1,NC_000005.9 chr6 171115067 assembled chr6 primary 6,CM000668.1,NC_000006.11 chr7 159138663 assembled chr7 primary 7,CM000669.1,NC_000007.13 chr8 146364022 assembled chr8 primary 8,CM000670.1,NC_000008.10 chr9 141213431 assembled chr9 primary 9,CM000671.1,NC_000009.11 chr10 135534747 assembled chr10 primary 10,CM000672.1,NC_000010.10 chr11 135006516 assembled chr11 primary 11,CM000673.1,NC_000011.9 chr12 133851895 assembled chr12 primary 12,CM000674.1,NC_000012.11 chr13 115169878 assembled chr13 primary 13,CM000675.1,NC_000013.10 chr14 107349540 assembled chr14 primary 14,CM000676.1,NC_000014.8 chr15 102531392 assembled chr15 primary 15,CM000677.1,NC_000015.9 chr16 90354753 assembled chr16 primary 16,CM000678.1,NC_000016.9 chr17 81195210 assembled chr17 primary 17,CM000679.1,NC_000017.10 chr18 78077248 assembled chr18 primary 18,CM000680.1,NC_000018.9 chr19 59128983 assembled chr19 primary 19,CM000681.1,NC_000019.9 chr20 63025520 assembled chr20 primary 20,CM000682.1,NC_000020.10 chr21 48129895 assembled chr21 primary 21,CM000683.1,NC_000021.8 chr22 51304566 assembled chr22 primary 22,CM000684.1,NC_000022.10 chrX 155270560 assembled chrX primary X,CM000685.1,NC_000023.10 chrY 59373566 assembled chrY primary Y,CM000686.1,NC_000024.9 chrMT 16569 assembled chrMT non-nuclear MT,J01415.2,NC_012920.1 chr1_gl000191_random 106433 unlocalized chr1 primary GL000191.1,HSCHR1_RANDOM_CTG5,NT_113878.1 chr1_gl000192_random 547496 unlocalized chr1 primary GL000192.1,HSCHR1_RANDOM_CTG12,NT_167207.1 chr4_gl000193_random 189789 unlocalized chr4 primary GL000193.1,HSCHR4_RANDOM_CTG2,NT_113885.1 chr4_gl000194_random 191469 unlocalized chr4 primary GL000194.1,HSCHR4_RANDOM_CTG3,NT_113888.1 chr7_gl000195_random 182896 unlocalized chr7 primary GL000195.1,HSCHR7_RANDOM_CTG1,NT_113901.1 chr8_gl000196_random 38914 unlocalized chr8 primary GL000196.1,HSCHR8_RANDOM_CTG1,NT_113909.1 chr8_gl000197_random 37175 unlocalized chr8 primary GL000197.1,HSCHR8_RANDOM_CTG4,NT_113907.1 chr9_gl000198_random 90085 unlocalized chr9 primary GL000198.1,HSCHR9_RANDOM_CTG1,NT_113914.1 chr9_gl000199_random 169874 unlocalized chr9 primary GL000199.1,HSCHR9_RANDOM_CTG2,NT_113916.2 chr9_gl000200_random 187035 unlocalized chr9 primary GL000200.1,HSCHR9_RANDOM_CTG4,NT_113915.1 chr9_gl000201_random 36148 unlocalized chr9 primary GL000201.1,HSCHR9_RANDOM_CTG5,NT_113911.1 chr11_gl000202_random 40103 unlocalized chr11 primary GL000202.1,HSCHR11_RANDOM_CTG2,NT_113921.2 chr17_gl000203_random 37498 unlocalized chr17 primary GL000203.1,HSCHR17_RANDOM_CTG1,NT_113941.1 chr17_gl000204_random 81310 unlocalized chr17 primary GL000204.1,HSCHR17_RANDOM_CTG2,NT_113943.1 chr17_gl000205_random 174588 unlocalized chr17 primary GL000205.1,HSCHR17_RANDOM_CTG3,NT_113930.1 chr17_gl000206_random 41001 unlocalized chr17 primary GL000206.1,HSCHR17_RANDOM_CTG4,NT_113945.1 chr18_gl000207_random 4262 unlocalized chr18 primary GL000207.1,HSCHR18_RANDOM_CTG1,NT_113947.1 chr19_gl000208_random 92689 unlocalized chr19 primary GL000208.1,HSCHR19_RANDOM_CTG1,NT_113948.1 chr19_gl000209_random 159169 unlocalized chr19 primary GL000209.1,HSCHR19_RANDOM_CTG2,NT_113949.1 chr21_gl000210_random 27682 unlocalized chr21 primary GL000210.1,HSCHR21_RANDOM_CTG9,NT_113950.2 chrUn_gl000211 166566 unplaced primary GL000211.1,HSCHRUN_RANDOM_CTG1,NT_113961.1 chrUn_gl000212 186858 unplaced primary GL000212.1,HSCHRUN_RANDOM_CTG2,NT_113923.1 chrUn_gl000213 164239 unplaced primary GL000213.1,HSCHRUN_RANDOM_CTG3,NT_167208.1 chrUn_gl000214 137718 unplaced primary GL000214.1,HSCHRUN_RANDOM_CTG4,NT_167209.1 chrUn_gl000215 172545 unplaced primary GL000215.1,HSCHRUN_RANDOM_CTG5,NT_167210.1 chrUn_gl000216 172294 unplaced primary GL000216.1,HSCHRUN_RANDOM_CTG6,NT_167211.1 chrUn_gl000217 172149 unplaced primary GL000217.1,HSCHRUN_RANDOM_CTG7,NT_167212.1 chrUn_gl000218 161147 unplaced primary GL000218.1,HSCHRUN_RANDOM_CTG9,NT_113889.1 chrUn_gl000219 179198 unplaced primary GL000219.1,HSCHRUN_RANDOM_CTG10,NT_167213.1 chrUn_gl000220 161802 unplaced primary GL000220.1,HSCHRUN_RANDOM_CTG11,NT_167214.1 chrUn_gl000221 155397 unplaced primary GL000221.1,HSCHRUN_RANDOM_CTG13,NT_167215.1 chrUn_gl000222 186861 unplaced primary GL000222.1,HSCHRUN_RANDOM_CTG14,NT_167216.1 chrUn_gl000223 180455 unplaced primary GL000223.1,HSCHRUN_RANDOM_CTG15,NT_167217.1 chrUn_gl000224 179693 unplaced primary GL000224.1,HSCHRUN_RANDOM_CTG16,NT_167218.1 chrUn_gl000225 211173 unplaced primary GL000225.1,HSCHRUN_RANDOM_CTG17,NT_167219.1 chrUn_gl000226 15008 unplaced primary GL000226.1,HSCHRUN_RANDOM_CTG19,NT_167220.1 chrUn_gl000227 128374 unplaced primary GL000227.1,HSCHRUN_RANDOM_CTG20,NT_167221.1 chrUn_gl000228 129120 unplaced primary GL000228.1,HSCHRUN_RANDOM_CTG21,NT_167222.1 chrUn_gl000229 19913 unplaced primary GL000229.1,HSCHRUN_RANDOM_CTG22,NT_167223.1 chrUn_gl000230 43691 unplaced primary GL000230.1,HSCHRUN_RANDOM_CTG23,NT_167224.1 chrUn_gl000231 27386 unplaced primary GL000231.1,HSCHRUN_RANDOM_CTG24,NT_167225.1 chrUn_gl000232 40652 unplaced primary GL000232.1,HSCHRUN_RANDOM_CTG25,NT_167226.1 chrUn_gl000233 45941 unplaced primary GL000233.1,HSCHRUN_RANDOM_CTG26,NT_167227.1 chrUn_gl000234 40531 unplaced primary GL000234.1,HSCHRUN_RANDOM_CTG27,NT_167228.1 chrUn_gl000235 34474 unplaced primary GL000235.1,HSCHRUN_RANDOM_CTG28,NT_167229.1 chrUn_gl000236 41934 unplaced primary GL000236.1,HSCHRUN_RANDOM_CTG29,NT_167230.1 chrUn_gl000237 45867 unplaced primary GL000237.1,HSCHRUN_RANDOM_CTG30,NT_167231.1 chrUn_gl000238 39939 unplaced primary GL000238.1,HSCHRUN_RANDOM_CTG31,NT_167232.1 chrUn_gl000239 33824 unplaced primary GL000239.1,HSCHRUN_RANDOM_CTG32,NT_167233.1 chrUn_gl000240 41933 unplaced primary GL000240.1,HSCHRUN_RANDOM_CTG33,NT_167234.1 chrUn_gl000241 42152 unplaced primary GL000241.1,HSCHRUN_RANDOM_CTG34,NT_167235.1 chrUn_gl000242 43523 unplaced primary GL000242.1,HSCHRUN_RANDOM_CTG35,NT_167236.1 chrUn_gl000243 43341 unplaced primary GL000243.1,HSCHRUN_RANDOM_CTG36,NT_167237.1 chrUn_gl000244 39929 unplaced primary GL000244.1,HSCHRUN_RANDOM_CTG37,NT_167238.1 chrUn_gl000245 36651 unplaced primary GL000245.1,HSCHRUN_RANDOM_CTG38,NT_167239.1 chrUn_gl000246 38154 unplaced primary GL000246.1,HSCHRUN_RANDOM_CTG39,NT_167240.1 chrUn_gl000247 36422 unplaced primary GL000247.1,HSCHRUN_RANDOM_CTG40,NT_167241.1 chrUn_gl000248 39786 unplaced primary GL000248.1,HSCHRUN_RANDOM_CTG41,NT_167242.1 chrUn_gl000249 38502 unplaced primary GL000249.1,HSCHRUN_RANDOM_CTG42,NT_167243.1 bioframe-0.4.1/bioframe/io/__init__.py0000644000175000017500000000031114420777331017135 0ustar nileshnileshfrom .schemas import SCHEMAS from . import fileops from .fileops import * from . import resources from .resources import * __all__ = [ "SCHEMAS", *fileops.__all__, *resources.__all__, ] bioframe-0.4.1/bioframe/extras.py0000644000175000017500000003552214420777331016311 0ustar nileshnileshimport numpy as np import pandas as pd import collections from . import ops from .core.specs import _get_default_colnames, _verify_columns __all__ = [ "make_chromarms", "binnify", "digest", "frac_mapped", "frac_gc", "seq_gc", "frac_gene_coverage", "pair_by_distance", ] def make_chromarms( chromsizes, midpoints, cols_chroms=("chrom", "length"), cols_mids=("chrom", "mid"), suffixes=("_p", "_q"), ): """ Split chromosomes into chromosome arms. Parameters ---------- chromsizes : pandas.Dataframe or pandas.Series If pandas.Series, a map from chromosomes to lengths in bp. If pandas.Dataframe, a dataframe with columns defined by cols_chroms. If cols_chroms is a triplet (e.g. 'chrom','start','end'), then values in chromsizes[cols_chroms[1]].values must all be zero. midpoints : pandas.Dataframe or dict-like Mapping of chromosomes to midpoint (aka centromere) locations. If pandas.Series, a map from chromosomes to midpoints in bp. If pandas.Dataframe, a dataframe with columns defined by cols_mids. cols_chroms : (str, str) or (str, str, str) Two columns suffixes : tuple, optional Suffixes to name chromosome arms. Defaults to p and q. Returns ------- df_chromarms 4-column BED-like DataFrame (chrom, start, end, name). Arm names are chromosome names + suffix. Any chromosome not included in ``mids`` will be not be split. """ columns_to_drop = ["index", "sub_index_"] if len(cols_chroms) == 2: ck1, sk1 = cols_chroms elif len(cols_chroms) == 3: ck1, sk1, ek1 = cols_chroms if isinstance(chromsizes, pd.Series): df_chroms = ( pd.DataFrame(chromsizes).reset_index().rename(columns={"index": ck1}) ) elif isinstance(chromsizes, pd.DataFrame): df_chroms = chromsizes.copy() else: raise ValueError("unknown input type for chromsizes") if len(cols_chroms) == 2: _verify_columns(df_chroms, [ck1, sk1]) columns_to_drop += [sk1] df_chroms["end"] = df_chroms[sk1].values df_chroms["start"] = 0 sk1, ek1 = "start", "end" elif len(cols_chroms) == 3: ck1, sk1, ek1 = cols_chroms _verify_columns(df_chroms, [ck1, sk1, ek1], unique_cols=True) if any((df_chroms[sk1].values != 0)): raise ValueError("all values in starts column must be zero") else: raise ValueError("invalid number of cols_chroms") ck2, sk2 = cols_mids if isinstance(midpoints, dict): df_mids = pd.DataFrame.from_dict(midpoints, orient="index", columns=[sk2]) df_mids.reset_index(inplace=True) df_mids.rename(columns={"index": ck2}, inplace=True) elif isinstance(midpoints, pd.DataFrame): df_mids = midpoints.copy() else: raise ValueError("unknown input type for midpoints") _verify_columns(df_mids, [ck2, sk2]) df_mids["start"] = df_mids[sk2] df_mids["end"] = df_mids[sk2] df_chromarms = ops.subtract( df_chroms, df_mids, cols1=(ck1, sk1, ek1), cols2=(ck2, "start", "end"), return_index=True, ) if df_chromarms["sub_index_"].max() > 1: raise ValueError( "chromosome split into more than two arms, double-check midpoints" ) df_chromarms["name"] = df_chromarms[ck1] + [ suffixes[i] for i in df_chromarms["sub_index_"].values ] # df_chromarms.drop(columns=columns_to_drop, inplace=True) return df_chromarms[[ck1, sk1, ek1, "name"]] def binnify(chromsizes, binsize, rel_ids=False): """ Divide a genome into evenly sized bins. Parameters ---------- chromsizes : Series pandas Series indexed by chromosome name with chromosome lengths in bp. binsize : int size of bins in bp Returns ------- bintable : pandas.DataFrame with columns: 'chrom', 'start', 'end'. """ if not isinstance(binsize, int): raise ValueError("binsize must be int") def _each(chrom): clen = chromsizes[chrom] n_bins = int(np.ceil(clen / binsize)) binedges = np.arange(0, (n_bins + 1)) * binsize binedges[-1] = clen return pd.DataFrame( {"chrom": [chrom] * n_bins, "start": binedges[:-1], "end": binedges[1:]}, columns=["chrom", "start", "end"], ) bintable = pd.concat(map(_each, chromsizes.keys()), axis=0, ignore_index=True) if rel_ids: bintable["rel_id"] = bintable.groupby("chrom").cumcount() # if as_cat: # bintable['chrom'] = pd.Categorical( # bintable['chrom'], # categories=list(chromsizes.keys()), # ordered=True) return bintable def digest(fasta_records, enzyme): """ Divide a genome into restriction fragments. Parameters ---------- fasta_records : OrderedDict Dictionary of chromosome names to sequence records. Created by: bioframe.load_fasta('/path/to/fasta.fa') enzyme: str Name of restriction enzyme. Returns ------- Dataframe with columns: 'chrom', 'start', 'end'. """ try: import Bio.Restriction as biorst import Bio.Seq as bioseq except ImportError: raise ImportError("Biopython is required to use digest") # http://biopython.org/DIST/docs/cookbook/Restriction.html#mozTocId447698 if not isinstance(fasta_records, dict): raise ValueError( "fasta records must be provided as an OrderedDict, can be created by bioframe.load_fasta" ) chroms = fasta_records.keys() try: cut_finder = getattr(biorst, enzyme).search except AttributeError: raise ValueError("Unknown enzyme name: {}".format(enzyme)) def _each(chrom): seq = bioseq.Seq(str(fasta_records[chrom][:])) cuts = np.r_[0, np.array(cut_finder(seq)) + 1, len(seq)].astype(int) n_frags = len(cuts) - 1 frags = pd.DataFrame( {"chrom": [chrom] * n_frags, "start": cuts[:-1], "end": cuts[1:]}, columns=["chrom", "start", "end"], ) return frags return pd.concat(map(_each, chroms), axis=0, ignore_index=True) def frac_mapped(df, fasta_records, return_input=True): """ Calculate the fraction of mapped base-pairs for each interval in a dataframe. Parameters ---------- df : pandas.DataFrame A sets of genomic intervals stored as a DataFrame. fasta_records : OrderedDict Dictionary of chromosome names to sequence records. Created by: bioframe.load_fasta('/path/to/fasta.fa') return_input: bool if False, only return Series named frac_mapped. Returns ------- df_mapped : pd.DataFrame Original dataframe with new column 'frac_mapped' appended. """ if not set(df["chrom"].values).issubset(set(fasta_records.keys())): raise ValueError( "chrom from intervals not in fasta_records: double-check genome agreement" ) if not isinstance(fasta_records, dict): raise ValueError( "fasta records must be provided as an OrderedDict, can be created by bioframe.load_fasta" ) def _each(bin): s = str(fasta_records[bin.chrom][bin.start : bin.end]) nbases = len(s) n = s.count("N") n += s.count("n") return (nbases - n) / nbases if nbases > 0 else 0 if return_input: return pd.concat( [df, df.apply(_each, axis=1).rename("frac_mapped", inplace=True)], axis="columns", ) else: return df.apply(_each, axis=1).rename("frac_mapped", inplace=True) def frac_gc(df, fasta_records, mapped_only=True, return_input=True): """ Calculate the fraction of GC basepairs for each interval in a dataframe. Parameters ---------- df : pandas.DataFrame A sets of genomic intervals stored as a DataFrame. fasta_records : OrderedDict Dictionary of chromosome names to sequence records. Created by: bioframe.load_fasta('/path/to/fasta.fa') mapped_only: bool if True, ignore 'N' in the fasta_records for calculation. if True and there are no mapped base-pairs in an interval, return np.nan. return_input: bool if False, only return Series named frac_mapped. Returns ------- df_mapped : pd.DataFrame Original dataframe with new column 'GC' appended. """ if not set(df["chrom"].values).issubset(set(fasta_records.keys())): raise ValueError( "chrom from intervals not in fasta_records: double-check genome agreement" ) if not isinstance(fasta_records, dict): raise ValueError( "fasta records must be provided as an OrderedDict, can be created by bioframe.load_fasta" ) def _each(chrom_group): chrom = chrom_group.name seq = fasta_records[chrom] seq = str(seq[:]) gc = [] for _, bin in chrom_group.iterrows(): s = seq[bin.start : bin.end] gc.append(seq_gc(s, mapped_only=mapped_only)) return gc out = df.groupby("chrom", sort=False).apply(_each) if return_input: return pd.concat( [df, pd.Series(data=np.concatenate(out), index=df.index).rename("GC")], axis="columns", ) else: return pd.Series(data=np.concatenate(out), index=df.index).rename("GC") def seq_gc(seq, mapped_only=True): """ Calculate the fraction of GC basepairs for a string of nucleotides. Parameters ---------- seq : str Basepair input mapped_only: bool if True, ignore 'N' in the sequence for calculation. if True and there are no mapped base-pairs, return np.nan. Returns ------- gc : float calculated gc content. """ if not type(seq) == str: raise ValueError("reformat input sequence as a str") g = seq.count("G") g += seq.count("g") c = seq.count("C") c += seq.count("c") nbases = len(seq) if mapped_only: n = seq.count("N") n += seq.count("n") nbases -= n return (g + c) / nbases if nbases > 0 else np.nan def frac_gene_coverage(df, ucsc_mrna): """ Calculate number and fraction of overlaps by predicted and verified RNA isoforms for a set of intervals stored in a dataframe. Parameters ---------- df : pd.DataFrame Set of genomic intervals stored as a dataframe. ucsc_mrna: str or DataFrame Name of UCSC genome or all_mrna.txt dataframe from UCSC or similar. Returns ------- df_gene_coverage : pd.DataFrame """ if isinstance(ucsc_mrna, str): from .io.resources import UCSCClient mrna = UCSCClient(ucsc_mrna).fetch_mrna() else: mrna = ucsc_mrna mrna = mrna.rename(columns={"tName": "chrom", "tStart": "start", "tEnd": "end"}) df_gene_coverage = ops.coverage(df, mrna) df_gene_coverage = ops.count_overlaps(df_gene_coverage, mrna) return df_gene_coverage def pair_by_distance( df, min_sep, max_sep, min_intervening=None, max_intervening=None, relative_to="midpoints", cols=None, suffixes=("_1", "_2"), ): """ From a dataframe of genomic intervals, find all unique pairs of intervals that are between ``min_sep`` and ``max_sep`` bp separated from each other. Parameters ---------- df : pandas.DataFrame A BED-like dataframe. min_sep, max_sep : int Minimum and maximum separation between intervals in bp. Min > 0 and Max >= Min. min_intervening, max_intervening : int Minimum and maximum number of intervening intervals separating pairs. Min > 0 and Max >= Min. relative_to : str, Whether to calculate distances between interval "midpoints" or "endpoints". Default "midpoints". cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. suffixes : (str, str), optional The column name suffixes for the two interval sets in the output. The first interval of each output pair is always upstream of the second. Returns ------- pandas.DataFrame A BEDPE-like dataframe of paired intervals from ``df``. """ ck, sk, ek = _get_default_colnames() if cols is None else cols # Sort intervals by genomic coordinates df = df.sort_values([ck, sk, ek]).reset_index(drop=True) if min_sep >= max_sep: raise ValueError("min_sep must be less than max_sep") if min_sep < 0: raise ValueError("min_sep must be >=0") if min_intervening is None: min_intervening = 0 if max_intervening is None: max_intervening = df.index.max() if min_intervening > max_intervening: raise ValueError("min_intervening must be less or equal to max_intervening") if min_intervening < 0: raise ValueError("min_intervening must be >=0") mids = (df[sk] + df[ek]) // 2 # For each interval, generate a probe interval on its right if relative_to == "endpoints": print("endpoint") ref = df[ek] elif relative_to == "midpoints": ref = mids else: raise ValueError("relative_to must either specify 'midpoints' or 'endpoints' ") right_probe = df[[ck]].copy() right_probe[sk] = ref + min_sep // 2 right_probe[ek] = ref + (max_sep + 1) // 2 # For each interval, also generate a probe interval on its left if relative_to == "endpoints": ref = df[sk] elif relative_to == "midpoints": ref = mids else: raise ValueError("relative_to must either specify 'midpoints' or 'endpoints' ") left_probe = df[[ck]].copy() left_probe[sk] = ref - max_sep // 2 left_probe[ek] = ref - (min_sep + 1) // 2 # Intersect right-handed probes (from intervals on the left) # with left-handed probes (from intervals on the right) idxs = ops.overlap( right_probe, left_probe, suffixes=suffixes, how="inner", return_index=True, return_input=False, ) # Select only the pairs that are separated by # at least min_intervening intervals and no more than max_intervening intervals idxs["intervening"] = ( np.abs(idxs[f"index{suffixes[0]}"] - idxs[f"index{suffixes[1]}"]) - 1 ) idxs = idxs.query( f"intervening<={max_intervening} and intervening>={min_intervening}" ) left_ivals = ( df.iloc[idxs[f"index{suffixes[0]}"].values] .rename(columns=lambda x: x + suffixes[0]) .reset_index(drop=True) ) right_ivals = ( df.iloc[idxs[f"index{suffixes[1]}"].values] .rename(columns=lambda x: x + suffixes[1]) .reset_index(drop=True) ) return pd.concat([left_ivals, right_ivals], axis=1) bioframe-0.4.1/bioframe/core/0000755000175000017500000000000014420777331015352 5ustar nileshnileshbioframe-0.4.1/bioframe/core/stringops.py0000644000175000017500000001227714420777331017765 0ustar nileshnileshimport re import pandas as pd import numpy as np from .specs import _get_default_colnames __all__ = [ "parse_region", "parse_region_string", "is_complete_ucsc_string", "to_ucsc_string", ] ### functions for manipulating UCSC strings ### def to_ucsc_string(triplet): """ Convert a triplet to a UCSC string. Parameters ---------- triplet : (chrom, start, end) Returns ------- ucsc_string : str UCSC-style string, 'chrom:start-end' """ return "{0}:{1}-{2}".format(*triplet) def _parse_humanized(s): _NUMERIC_RE = re.compile("([0-9,.]+)") _, value, unit = _NUMERIC_RE.split(s.replace(",", "")) if not len(unit): return int(value) value = float(value) unit = unit.upper().strip() if unit in ("K", "KB"): value *= 1000 elif unit in ("M", "MB"): value *= 1000000 elif unit in ("G", "GB"): value *= 1000000000 else: raise ValueError("Unknown unit '{}'".format(unit)) return int(value) def parse_region_string(s): """ Parse a UCSC-style genomic region string into a triple. Parameters ---------- s : str UCSC-style string, e.g. "chr5:10,100,000-30,000,000". Ensembl and FASTA style sequence names are allowed. Start coordinate must >0 and end coordinate must be greater than or equal to start. Returns ------- triple : (str, int or None, int or None) """ def _tokenize(s): token_spec = [ ("HYPHEN", r"-"), ("COORD", r"[0-9,]+(\.[0-9]*)?(?:[a-z]+)?"), ("OTHER", r".+"), ] tok_regex = r"\s*" + r"|\s*".join(r"(?P<%s>%s)" % pair for pair in token_spec) tok_regex = re.compile(tok_regex, re.IGNORECASE) for match in tok_regex.finditer(s): typ = match.lastgroup yield typ, match.group(typ) def _check_token(typ, token, expected): if typ is None: raise ValueError("Expected {} token missing".format(" or ".join(expected))) else: if typ not in expected: raise ValueError('Unexpected token "{}"'.format(token)) def _expect(tokens): typ, token = next(tokens, (None, None)) _check_token(typ, token, ["COORD"]) start = _parse_humanized(token) typ, token = next(tokens, (None, None)) _check_token(typ, token, ["HYPHEN"]) typ, token = next(tokens, (None, None)) if typ is None: return start, None _check_token(typ, token, ["COORD"]) end = _parse_humanized(token) if end < start: raise ValueError("End coordinate less than start") return start, end parts = s.split(":") chrom = parts[0].strip() if not len(chrom): raise ValueError("Chromosome name cannot be empty") if len(parts) < 2: return (chrom, None, None) start, end = _expect(_tokenize(parts[1])) return (chrom, start, end) def is_complete_ucsc_string(mystring): """ Check if a string can be parsed into (`chrom`, `start`, `end`) format. Parameters ---------- mystring : str Returns ------- is_complete : bool True if able to be parsed into (`chrom`, `start`, `end`) format. """ if type(mystring) is not str: return False if len(parse_region_string(mystring)) != 3: return False if parse_region_string(mystring)[2] is None: return False return True def parse_region(reg, chromsizes=None): """ Coerce a genomic region string or sequence into a triple (chrom, start, end). Genomic regions are represented as half-open intervals (0-based starts, 1-based ends) along the length coordinate of a contig/scaffold/chromosome. Start must be >= 0, and end coordinate must be >= start. Parameters ---------- reg : str or tuple UCSC-style genomic region string, or Triple (chrom, start, end), where ``start`` or ``end`` may be ``None``. Quadriple (chrom, start, end, name) (name is ignored). chromsizes : mapping, optional Lookup table of scaffold lengths to check against ``chrom`` and the ``end`` coordinate. Required if ``end`` is not supplied. Returns ------- triple : (str, int, int) A well-formed genomic region triple (str, int, int) """ if isinstance(reg, str): chrom, start, end = parse_region_string(reg) else: if len(reg) not in [3, 4]: raise ValueError("length of a region should be 3 or 4") chrom, start, end = reg[:3] start = int(start) if start is not None else start end = int(end) if end is not None else end try: clen = chromsizes[chrom] if chromsizes is not None else None except KeyError: raise ValueError("Unknown sequence label: {}".format(chrom)) start = 0 if start is None else start if end is None: end = clen # if clen is None, end is None too! if (end is not None) and (end < start): raise ValueError("End cannot be less than start") if start < 0 or (clen is not None and end > clen): raise ValueError("Genomic region out of bounds: [{}, {})".format(start, end)) return chrom, start, end bioframe-0.4.1/bioframe/core/specs.py0000644000175000017500000001050514420777331017042 0ustar nileshnileshimport collections import pandas as pd import numpy as np __all__ = [ "update_default_colnames", "is_chrom_dtype", ] _rc = {"colnames": {"chrom": "chrom", "start": "start", "end": "end"}} def _get_default_colnames(): """ Returns default column names. These defaults be updated with :func:`update_default_colnames`. Returns ------- colnames : triplet (str, str, str) """ return _rc["colnames"]["chrom"], _rc["colnames"]["start"], _rc["colnames"]["end"] class update_default_colnames: def __init__(self, new_colnames): self._old_colnames = dict(_rc["colnames"]) if isinstance(new_colnames, collections.abc.Iterable): if len(new_colnames) != 3: raise ValueError( "Please, specify new columns using a list of " "3 strings or a dict!" ) ( _rc["colnames"]["chrom"], _rc["colnames"]["start"], _rc["colnames"]["end"], ) = new_colnames elif isinstance(new_colnames, collections.abc.Mapping): _rc["colnames"].update( { k: v for k, v in new_colnames.items() if k in ["chrom", "start", "end"] } ) else: raise ValueError( "Please, specify new columns using a list of " "3 strings or a dict!" ) def __enter__(self): return self def __exit__(self, *args): _rc["colnames"] = self._old_colnames def _verify_columns(df, colnames, unique_cols=False, return_as_bool=False): """ Raises ValueError if columns with colnames are not present in dataframe df. Parameters ---------- df: pandas.DataFrame colnames: list of column names return_as_bool : bool If True, returns as a boolean instead of raising errors. Default False. """ if not type(df) is pd.core.frame.DataFrame: if return_as_bool: return False raise ValueError("df is not a dataframe") if unique_cols: if len(set(colnames)) < len(colnames): raise ValueError("column names must be unique") if not set(colnames).issubset(df.columns): if return_as_bool: return False raise ValueError( ", ".join(set(colnames).difference(set(df.columns))) + " not in keys of df.columns" ) if return_as_bool: return True def _verify_column_dtypes(df, cols=None, return_as_bool=False): """ Checks that dataframe `df` has chrom, start, end columns with valid dtypes. Raises TypeErrors if cols have invalid dtypes. Parameters ---------- df : pandas.DataFrame cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. return_as_bool : bool If true, returns as a boolean instead of raising errors. Default False. """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols if not _verify_columns(df, [ck1, sk1, ek1], return_as_bool=True): if return_as_bool: return False raise ValueError("could not verify columns") chrom_dtype, start_dtype, end_dtype = df.dtypes[[ck1, sk1, ek1]] if not is_chrom_dtype(chrom_dtype): if return_as_bool: return False raise TypeError( "invalid df['chrom'] dtype, must be object, string, or categorical" ) if not pd.api.types.is_integer_dtype(start_dtype): if return_as_bool: return False raise TypeError("invalid df['start'] dtype, must be integer") if not pd.api.types.is_integer_dtype(end_dtype): if return_as_bool: return False raise TypeError("invalid df['end'] dtype, must be integer") if return_as_bool: return True def is_chrom_dtype(chrom_dtype): """ Returns True if dtype is any of the allowed bioframe chrom dtypes, False otherwise. """ return np.any( [ pd.api.types.is_string_dtype(chrom_dtype), pd.api.types.is_object_dtype(chrom_dtype), pd.api.types.is_categorical_dtype(chrom_dtype), ] ) bioframe-0.4.1/bioframe/core/construction.py0000644000175000017500000002626414420777331020470 0ustar nileshnileshimport pandas as pd import numpy as np from .specs import _get_default_colnames, _verify_columns, is_chrom_dtype from .stringops import parse_region_string, to_ucsc_string, is_complete_ucsc_string from . import checks __all__ = [ "from_dict", "from_series", "from_list", "from_any", "make_viewframe", "sanitize_bedframe", ] ### conversions from various input formats into dataframes ### def from_dict(regions, cols=None): """ Makes a dataframe from a dictionary of {str,int} pairs, interpreted as chromosome names. Note that {str,(int,int)} dictionaries of tuples are no longer supported! Parameters ---------- regions : dict name_col : str Default 'name'. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- df : pandas.DataFrame """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols data = [] for k, v in dict(regions).items(): chrom = k if np.isscalar(v): start = 0 end = v else: raise ValueError("Unsupported dict format: {type(v)}") data.append([chrom, start, end]) return pd.DataFrame(data, columns=[ck1, sk1, ek1]) def from_series(regions, cols=None): ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols chroms = regions.index.values data = {ck1: chroms, sk1: 0, ek1: regions.values} return pd.DataFrame(data) def from_list(regions, name_col="name", cols=None): ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols df = pd.DataFrame(regions) if df.shape[1] == 3: df.columns = [ck1, sk1, ek1] elif df.shape[1] == 4: df.columns = [ck1, sk1, ek1, name_col] else: raise ValueError("wrong number of columns for list input format") return df def from_ucsc_string_list(region_list, cols=None): ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols parsed = [parse_region_string(i) for i in region_list] df = pd.DataFrame(parsed, columns=[ck1, sk1, ek1]) return df def from_any(regions, fill_null=False, name_col="name", cols=None): """ Attempts to make a genomic interval dataframe with columns [chr, start, end, name_col] from a variety of input types. Parameters ---------- regions : supported input Currently supported inputs: - dataframe - series of UCSC strings - dictionary of {str:int} key value pairs - pandas series where the index is interpreted as chromosomes and values are interpreted as end - list of tuples or lists, either [(chrom,start,end)] or [(chrom,start,end,name)] - tuple of tuples or lists, either [(chrom,start,end)] or [(chrom,start,end,name)] fill_null : False or dictionary Accepts a dictionary of {str:int} pairs, interpreted as chromosome sizes. Kept or backwards compatibility. Default False. name_col : str Column name. Only used if 4 column list is provided. Default "name". cols : (str,str,str) Names for dataframe columns. Default None sets them with get_default_colnames(). Returns ------- out_df:dataframe """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols if type(regions) is pd.core.frame.DataFrame: if set([ck1, sk1, ek1]).issubset(regions.columns): out_df = regions.copy() elif (len(regions[name_col].values.shape) == 1) and is_complete_ucsc_string( regions[name_col].values[0] ): out_df = from_ucsc_string_list( regions[name_col].values, cols=[ck1, sk1, ek1] ) else: raise ValueError("Unknown dataFrame format: check column names") elif type(regions) is dict: out_df = from_dict(regions, cols=[ck1, sk1, ek1]) elif type(regions) is pd.core.series.Series: out_df = from_series(regions, cols=[ck1, sk1, ek1]) elif type(regions) is tuple: if np.shape(regions) == (3,): out_df = from_list([regions], name_col=name_col, cols=[ck1, sk1, ek1]) elif len(np.shape(regions)) == 1 and type(regions[0]) is str: out_df = from_ucsc_string_list(regions, cols=[ck1, sk1, ek1]) else: out_df = from_list(list(regions), name_col=name_col, cols=[ck1, sk1, ek1]) elif type(regions) is list: if np.shape(regions) == (3,): out_df = from_list([regions], name_col=name_col, cols=[ck1, sk1, ek1]) elif len(np.shape(regions)) == 1 and type(regions[0]) is str: out_df = from_ucsc_string_list(regions, cols=[ck1, sk1, ek1]) else: out_df = from_list(regions, name_col=name_col, cols=[ck1, sk1, ek1]) else: raise ValueError(f"Unknown input format: {type(regions)}") if fill_null: try: out_df[sk1].fillna(0, inplace=True) ends = [] for i in range(len(out_df)): if out_df[ek1].values[i] is None: ends.append(fill_null[out_df[ck1].values[i]]) else: ends.append(out_df[ek1].values[i]) out_df[ek1] = ends except: raise ValueError("could not fill ends with provided chromsizes") return out_df def add_ucsc_name_column(reg_df, name_col="name", cols=None): """ Auto-creates a UCSC name 'chrom:start-end' for each region (chrom,start,end) in reg_df. Replaces name_col if it exists. """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols df = reg_df.copy() _verify_columns(df, [ck1, sk1, ek1]) data = zip(df[ck1], df[sk1], df[ek1]) df[name_col] = [to_ucsc_string(i) for i in data] return df def make_viewframe( regions, check_bounds=None, name_style=None, view_name_col="name", cols=None, ): """ Makes and validates a dataframe `view_df` out of regions. Parameters ---------- regions : supported input type Currently supported input types: - a dictionary where keys are strings and values are integers {str:int}, specifying regions (chrom, 0, end, chrom) - a pandas series of chromosomes lengths with index specifying region names - a list of tuples [(chrom,start,end), ...] or [(chrom,start,end,name), ...] - a pandas DataFrame, skips to validation step name_style : None or "ucsc" If None and no column view_name_col, propagate values from cols[0] If "ucsc" and no column view_name_col, create UCSC style names check_bounds : None, or chromosome sizes provided as any of valid formats above Optional, if provided checks if regions in the view are contained by regions supplied in check_bounds, typically provided as a series of chromosome sizes. Default None. view_name_col : str Specifies column name of the view regions. Default 'name'. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- view_df:dataframe satisfying properties of a view """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols view_df = from_any(regions, name_col=view_name_col, cols=cols) if check_bounds is not None: bounds_df = from_any(check_bounds, name_col="bounds", cols=cols) if not checks.is_contained( view_df, bounds_df, df_view_col=None, view_name_col="bounds", cols=cols, ): raise ValueError( "Invalid input to make a viewFrame, regions not contained by bounds" ) if not view_name_col in view_df.columns: if name_style is None: view_df[view_name_col] = view_df[ck1].values elif name_style.lower() == "ucsc": view_df = add_ucsc_name_column(view_df, name_col=view_name_col, cols=cols) else: raise ValueError("unknown value for name_style") if checks.is_viewframe( view_df, view_name_col=view_name_col, cols=cols, raise_errors=True ): return view_df else: raise ValueError("could not make valid viewFrame, retry with new input") def sanitize_bedframe( df1, recast_dtypes=True, drop_null=False, start_exceed_end_action=None, cols=None, ): """ Attempts to clean a genomic interval dataframe to be a valid bedframe. Parameters ---------- df1 : pandas.DataFrame recast_dtypes : bool Whether to attempt to recast column dtypes to pandas nullable dtypes. drop_null : bool Drops rows with pd.NA. Default False. start_exceed_end_action : str or None Options: 'flip' or 'drop' or None. Default None. - If 'flip', attempts to sanitize by flipping intervals with start>end. - If 'drop' attempts to sanitize dropping intervals with start>end. - If None, does not alter these intervals if present. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- out_df : pandas.DataFrame Sanitized dataframe satisfying the properties of a bedframe. Notes ------ The option ``start_exceed_end_action='flip'`` may be useful for gff files with strand information but starts > ends. """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols out_df = df1.copy() _verify_columns(out_df, [ck1, sk1, ek1]) if recast_dtypes: chrom_dtype, start_dtype, end_dtype = out_df.dtypes[[ck1, sk1, ek1]] if not is_chrom_dtype(chrom_dtype): out_df[ck1] = out_df[ck1].astype(str) if not ((start_dtype is pd.Int64Dtype()) and (end_dtype is pd.Int64Dtype())): out_df[sk1] = out_df[sk1].astype(pd.Int64Dtype()) out_df[ek1] = out_df[ek1].astype(pd.Int64Dtype()) nan_intervals = pd.isnull(out_df[[ck1, sk1, ek1]]).any(axis=1) out_df.loc[nan_intervals, [ck1, sk1, ek1]] = pd.NA if drop_null: out_df.dropna(axis=0, inplace=True) out_df.reset_index(drop=True, inplace=True) if start_exceed_end_action is not None: start_exceed_end_action = start_exceed_end_action.lower() if ((out_df[ek1] - out_df[sk1]) < 0).any(): inds = ((out_df[ek1] - out_df[sk1]) < 0).values if start_exceed_end_action == "drop": out_df = out_df.loc[inds == 0] elif start_exceed_end_action == "flip": out_df.loc[inds, [sk1, ek1]] = out_df.loc[inds, [ek1, sk1]].values else: raise ValueError("unknown action for intervals with start>end") out_df.reset_index(drop=True, inplace=True) if checks.is_bedframe(out_df, cols=cols): return out_df else: raise ValueError("could not sanitize") bioframe-0.4.1/bioframe/core/checks.py0000644000175000017500000003214714420777331017173 0ustar nileshnileshimport pandas as pd import numpy as np from . import construction from .specs import _get_default_colnames, _verify_columns, _verify_column_dtypes from .. import ops __all__ = [ "is_bedframe", "is_cataloged", "is_overlapping", "is_viewframe", "is_contained", "is_covering", "is_tiling", "is_sorted", ] def is_bedframe( df, raise_errors=False, cols=None, ): """ Checks that required bedframe properties are satisfied for dataframe `df`. This includes: - chrom, start, end columns - columns have valid dtypes (object/string/categorical, int/pd.Int64Dtype, int/pd.Int64Dtype) - for each interval, if any of chrom, start, end are null, then all are null - all starts < ends. Parameters ---------- df : pandas.DataFrame raise_errors : bool If True, raises errors instead of returning a boolean False for invalid properties. Default False. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- is_bedframe:bool """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols if not _verify_columns(df, [ck1, sk1, ek1], return_as_bool=True): if raise_errors: raise TypeError("Invalid bedFrame: Invalid column names") return False if not _verify_column_dtypes(df, cols=[ck1, sk1, ek1], return_as_bool=True): if raise_errors: raise TypeError("Invalid bedFrame: Invalid column dtypes") return False nan_intervals = pd.isnull(df[[ck1, sk1, ek1]]) if (~(~nan_intervals.any(axis=1) | nan_intervals.all(axis=1))).any(): if raise_errors: raise ValueError( "Invalid bedFrame: Invalid null values (if any of chrom, start, end are null, then each must be null)" ) return False if ((df[ek1] - df[sk1]) < 0).any(): if raise_errors: raise ValueError( "Invalid bedFrame: starts exceed ends for " + str(np.sum(((df[ek1] - df[sk1]) < 0))) + " intervals" ) return False return True def is_cataloged( df, view_df, raise_errors=False, df_view_col="view_region", view_name_col="name" ): """ Tests if all region names in `df[df_view_col]` are present in `view_df[view_name_col]`. Parameters ---------- df : pandas.DataFrame view_df : pandas.DataFrame raise_errors : bool If True, raises errors instead of returning a boolean False for invalid properties. Default False. df_view_col: str Name of column from df that indicates region in view. view_name_col: str Name of column from view that specifies region name. Returns ------- is_cataloged:bool Notes ----- Does not check if names in `view_df[view_name_col]` are unique. """ if not _verify_columns(df, [df_view_col], return_as_bool=True): if raise_errors is True: raise ValueError(f"Could not find â€{df_view_col}’ column in df") return False if not _verify_columns(view_df, [view_name_col], return_as_bool=True): if raise_errors is True: raise ValueError(f"Could not find â€{view_name_col}’ column in view_df") return False if not set(df[df_view_col].copy().dropna().values).issubset( set(view_df[view_name_col].values) ): if raise_errors is True: raise ValueError( "The following regions in df[df_view_col] not in view_df[view_name_col]: \n" + "{}".format( set(df[df_view_col].values).difference( set(view_df[view_name_col].values) ) ) ) return False return True def is_overlapping(df, cols=None): """ Tests if any genomic intervals in a bioframe `df` overlap. Also see :func:`bioframe.ops.merge()`. Parameters ---------- df : pandas.DataFrame cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- is_overlapping:bool """ from ..ops import merge ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols df_merged = merge(df, cols=cols) total_interval_len = np.sum((df[ek1] - df[sk1]).values) total_interval_len_merged = np.sum((df_merged[ek1] - df_merged[sk1]).values) if total_interval_len > total_interval_len_merged: return True else: return False def is_viewframe(region_df, raise_errors=False, view_name_col="name", cols=None): """ Checks that `region_df` is a valid viewFrame. This includes: - it satisfies requirements for a bedframe, including columns for ('chrom', 'start', 'end') - it has an additional column, view_name_col, with default 'name' - it does not contain null values - entries in the view_name_col are unique. - intervals are non-overlapping Parameters ---------- region_df : pandas.DataFrame Dataframe of genomic intervals to be tested. raise_errors : bool If True, raises errors instead of returning a boolean False for invalid properties. Default False. view_name_col : str Specifies column name of the view regions. Default 'name'. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- is_viewframe:bool """ ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols if not _verify_columns( region_df, [ck1, sk1, ek1, view_name_col], return_as_bool=True ): if raise_errors: raise TypeError("Invalid view: invalid column names") return False if not is_bedframe(region_df, cols=cols): if raise_errors: raise ValueError("Invalid view: not a bedframe") return False if pd.isna(region_df).values.any(): if raise_errors: raise ValueError("Invalid view: cannot contain NAs") return False if len(set(region_df[view_name_col])) < len(region_df[view_name_col].values): if raise_errors: raise ValueError( "Invalid view: entries in region_df[view_name_col] must be unique" ) return False if is_overlapping(region_df, cols=cols): if raise_errors: raise ValueError("Invalid view: entries must be non-overlapping") return False return True def is_contained( df, view_df, raise_errors=False, df_view_col=None, view_name_col="name", cols=None, ): """ Tests if all genomic intervals in a bioframe `df` are cataloged and do not extend beyond their associated region in the view `view_df`. Parameters ---------- df : pandas.DataFrame view_df : pandas.DataFrame Valid viewframe. raise_errors : bool If True, raises errors instead of returning a boolean False for invalid properties. Default False. df_view_col: Column from df used to associate interviews with view regions. Default `view_region`. cols: (str, str, str) Column names for chrom, start, end in df. Returns ------- is_contained:bool """ from ..ops import trim ck1, sk1, ek1 = _get_default_colnames() if cols is None else cols if df_view_col is None: try: df_view_assigned = ops.overlap(df, view_df) assert (df_view_assigned["end_"].isna()).sum() == 0 assert (df_view_assigned["start_"].isna()).sum() == 0 assert (df_view_assigned["end"] <= df_view_assigned["end_"]).all() assert (df_view_assigned["start"] >= df_view_assigned["start_"]).all() except AssertionError: if raise_errors: raise AssertionError("df not contained in view_df") else: return False return True if not is_cataloged( df, view_df, df_view_col=df_view_col, view_name_col=view_name_col ): if raise_errors: raise ValueError("df not cataloged in view_df") return False df_trim = trim( df, view_df=view_df, df_view_col=df_view_col, view_name_col=view_name_col ) is_start_trimmed = np.any(df[sk1].values != df_trim[sk1].values) is_end_trimmed = np.any(df[ek1].values != df_trim[ek1].values) if is_start_trimmed or is_end_trimmed: if raise_errors: raise ValueError("df not contained in view_df") return False else: return True def is_covering(df, view_df, view_name_col="name", cols=None): """ Tests if a view `view_df` is covered by the set of genomic intervals in the bedframe `df`. This test is true if ``complement(df,view_df)`` is empty. Also note this test ignores regions assigned to intervals in `df` since regions are re-assigned in :func:`bioframe.ops.complement`. Parameters ---------- df : pandas.DataFrame view_df : pandas.DataFrame Valid viewFrame. view_name_col: Column from view_df with view region names. Default `name`. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- is_covering:bool """ from ..ops import complement if complement( df, view_df=view_df, view_name_col=view_name_col, cols=cols, ).empty: return True else: return False def is_tiling( df, view_df, raise_errors=False, df_view_col="view_region", view_name_col="name", cols=None, ): """ Tests if a view `view_df` is tiled by the set of genomic intervals in the bedframe `df`. This is true if: - df is not overlapping - df is covering view_df - df is contained in view_df Parameters ---------- df : pandas.DataFrame view_df : pandas.DataFrame valid viewFrame raise_errors : bool If True, raises errors instead of returning a boolean False for invalid properties. Default False. df_view_col: str Name of column from df that indicates region in view. view_name_col: str Name of column from view that specifies unique region name. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- is_tiling:bool """ view_df = construction.make_viewframe( view_df, view_name_col=view_name_col, cols=cols ) if is_overlapping(df): if raise_errors: raise ValueError("overlaps") return False if not is_covering(df, view_df, view_name_col=view_name_col, cols=None): if raise_errors: raise ValueError("not covered") return False if not is_contained( df, view_df, df_view_col=df_view_col, view_name_col=view_name_col, cols=None ): if raise_errors: raise ValueError("not contained") return False return True def is_sorted( df, view_df=None, reset_index=True, df_view_col=None, view_name_col="name", cols=None, ): """ Tests if a bedframe is changed by sorting. Also see :func:`bioframe.ops.sort_bedframe`. Parameters ---------- df : pandas.DataFrame view_df : pandas.DataFrame | dict-like Optional view to pass to ``sort_bedframe``. When it is dict-like :func:'bioframe.make_viewframe' will be used to convert to viewframe. If view_df is not provided df is assumed to be sorted by chrom and start. reset_index : bool Optional argument to pass to ``sort_bedframe``. df_view_col: None | str Name of column from df that indicates region in view. If None, :func:'bioframe.assign_view' will be used to assign view regions. Default None. view_name_col: str Name of column from view that specifies unique region name. cols : (str, str, str) or None The names of columns containing the chromosome, start and end of the genomic intervals, provided separately for each set. The default values are 'chrom', 'start', 'end'. Returns ------- is_sorted : bool """ from ..ops import sort_bedframe df_sorted = sort_bedframe( df.copy(), view_df=view_df, reset_index=reset_index, df_view_col=df_view_col, view_name_col=view_name_col, cols=cols, ) if df.equals(df_sorted): return True else: return False bioframe-0.4.1/bioframe/core/arrops.py0000644000175000017500000006067114420777331017244 0ustar nileshnileshimport re import warnings import numpy as np import pandas as pd def natsort_key(s, _NS_REGEX=re.compile(r"(\d+)", re.U)): return tuple([int(x) if x.isdigit() else x for x in _NS_REGEX.split(s) if x]) def natsorted(iterable): return sorted(iterable, key=natsort_key) def argnatsort(array): array = np.asarray(array) if not len(array): return np.array([], dtype=int) cols = tuple(zip(*(natsort_key(x) for x in array))) return np.lexsort(cols[::-1]) # numpy's lexsort is ass-backwards def _find_block_span(arr, val): """Find the first and the last occurence + 1 of the value in the array.""" # it can be done via bisection, but for now BRUTE FORCE block_idxs = np.where(arr == val)[0] lo, hi = block_idxs[0], block_idxs[-1] + 1 return lo, hi def interweave(a, b): """ Interweave two arrays. Parameters ---------- a, b : numpy.ndarray Arrays to interweave, must have the same length/ Returns ------- out : numpy.ndarray Array of interweaved values from a and b. Notes ----- From https://stackoverflow.com/questions/5347065/interweaving-two-numpy-arrays """ out = np.empty((a.size + b.size,), dtype=a.dtype) out[0::2] = a out[1::2] = b return out def sum_slices(arr, starts, ends): """ Calculate sums of slices of an array. Parameters ---------- arr : numpy.ndarray starts : numpy.ndarray Starts for each slice ends : numpy.ndarray Stops for each slice Returns ------- sums : numpy.ndarray Sums of the slices. """ sums = np.add.reduceat(arr, interweave(starts, ends))[::2] sums[starts == ends] = 0 return sums def arange_multi(starts, stops=None, lengths=None): """ Create concatenated ranges of integers for multiple start/length. Parameters ---------- starts : numpy.ndarray Starts for each range stops : numpy.ndarray Stops for each range lengths : numpy.ndarray Lengths for each range. Either stops or lengths must be provided. Returns ------- concat_ranges : numpy.ndarray Concatenated ranges. Notes ----- See the following illustrative example: starts = np.array([1, 3, 4, 6]) stops = np.array([1, 5, 7, 6]) print arange_multi(starts, lengths) >>> [3 4 4 5 6] From: https://codereview.stackexchange.com/questions/83018/vectorized-numpy-version-of-arange-with-multiple-start-stop """ if (stops is None) == (lengths is None): raise ValueError("Either stops or lengths must be provided!") if lengths is None: lengths = stops - starts if np.isscalar(starts): starts = np.full(len(stops), starts) # Repeat start position index length times and concatenate cat_start = np.repeat(starts, lengths) # Create group counter that resets for each start/length cat_counter = np.arange(lengths.sum()) - np.repeat( lengths.cumsum() - lengths, lengths ) # Add group counter to group specific starts cat_range = cat_start + cat_counter return cat_range def _check_overlap(starts1, ends1, starts2, ends2, closed=False): """ Take pairs of intervals and test if each pair has an overlap. Parameters ---------- starts1, ends1, starts2, ends2 : numpy.ndarray Interval coordinates. All four arrays must have the same size. Warning: if provided as pandas.Series, indices will be ignored. closed : bool If True then treat intervals as closed and accept single-point overlaps. Returns ------- have_overlap : numpy.ndarray A boolean array where the i-th element says if the i-th interval in set 1 overlaps the i-th interval in set 2. """ if not (starts1.size == ends1.size == starts2.size == ends2.size): raise ValueError("All four input arrays must have the same size.") if closed: return (starts1 <= ends2) & (starts2 <= ends1) else: return (starts1 < ends2) & (starts2 < ends1) def _size_overlap(starts1, ends1, starts2, ends2): """ Take pairs of intervals and return the length of an overlap in each pair. Parameters ---------- starts1, ends1, starts2, ends2 : numpy.ndarray Interval coordinates. All four arrays must have the same size. Warning: if provided as pandas.Series, indices will be ignored. Returns ------- overlap_size : numpy.ndarray An array where the i-th element contains the length of an overlap between the i-th interval in set 1 and the i-th interval in set 2. 0 if the intervals overlap by a single point, -1 if they do not overlap. """ overlap_size = np.minimum(ends1, ends2) - np.maximum(starts1, starts2) overlap_size[overlap_size < 0] = -1 return overlap_size def _overlap_intervals_legacy(starts1, ends1, starts2, ends2, closed=False, sort=False): """ Take two sets of intervals and return the indices of pairs of overlapping intervals. Parameters ---------- starts1, ends1, starts2, ends2 : numpy.ndarray Interval coordinates. Warning: if provided as pandas.Series, indices will be ignored. closed : bool If True, then treat intervals as closed and report single-point overlaps. Returns ------- overlap_ids : numpy.ndarray An Nx2 array containing the indices of pairs of overlapping intervals. The 1st column contains ids from the 1st set, the 2nd column has ids from the 2nd set. """ for vec in [starts1, ends1, starts2, ends2]: if issubclass(type(vec), pd.core.series.Series): warnings.warn( "One of the inputs is provided as pandas.Series and its index " "will be ignored.", SyntaxWarning, ) starts1 = np.asarray(starts1) ends1 = np.asarray(ends1) starts2 = np.asarray(starts2) ends2 = np.asarray(ends2) # Concatenate intervals lists n1 = len(starts1) n2 = len(starts2) starts = np.concatenate([starts1, starts2]) ends = np.concatenate([ends1, ends2]) # Encode interval ids as 1-based, # negative ids for the 1st set, positive ids for 2nd set ids = np.concatenate([-np.arange(1, n1 + 1), np.arange(1, n2 + 1)]) # Sort all intervals together order = np.lexsort([ends, starts]) starts, ends, ids = starts[order], ends[order], ids[order] # Find interval overlaps match_starts = np.arange(0, n1 + n2) match_ends = np.searchsorted(starts, ends, "right" if closed else "left") # Ignore self-overlaps match_mask = match_ends > match_starts + 1 match_starts, match_ends = match_starts[match_mask], match_ends[match_mask] # Restore overlap_ids = np.vstack( [ np.repeat(ids[match_starts], match_ends - match_starts - 1), ids[arange_multi(match_starts + 1, match_ends)], ] ).T # Drop same-set overlaps overlap_ids = overlap_ids[overlap_ids[:, 0] * overlap_ids[:, 1] <= 0] # Flip overlaps, such that the 1st column contains ids from the 1st set, # the 2nd column contains ids from the 2nd set. overlap_ids.sort(axis=-1) # Restore original indexes, overlap_ids[:, 0] = overlap_ids[:, 0] * (-1) - 1 overlap_ids[:, 1] = overlap_ids[:, 1] - 1 # Sort overlaps according to the 1st if sort: overlap_ids = overlap_ids[np.lexsort([overlap_ids[:, 1], overlap_ids[:, 0]])] return overlap_ids def overlap_intervals(starts1, ends1, starts2, ends2, closed=False, sort=False): """ Take two sets of intervals and return the indices of pairs of overlapping intervals. Parameters ---------- starts1, ends1, starts2, ends2 : numpy.ndarray Interval coordinates. Warning: if provided as pandas.Series, indices will be ignored. closed : bool If True, then treat intervals as closed and report single-point overlaps. Returns ------- overlap_ids : numpy.ndarray An Nx2 array containing the indices of pairs of overlapping intervals. The 1st column contains ids from the 1st set, the 2nd column has ids from the 2nd set. """ for vec in [starts1, ends1, starts2, ends2]: if issubclass(type(vec), pd.core.series.Series): warnings.warn( "One of the inputs is provided as pandas.Series and its index " "will be ignored.", SyntaxWarning, ) starts1 = np.asarray(starts1) ends1 = np.asarray(ends1) starts2 = np.asarray(starts2) ends2 = np.asarray(ends2) # Concatenate intervals lists n1 = len(starts1) n2 = len(starts2) ids1 = np.arange(0, n1) ids2 = np.arange(0, n2) # Sort all intervals together order1 = np.lexsort([ends1, starts1]) order2 = np.lexsort([ends2, starts2]) starts1, ends1, ids1 = starts1[order1], ends1[order1], ids1[order1] starts2, ends2, ids2 = starts2[order2], ends2[order2], ids2[order2] # Find interval overlaps match_2in1_starts = np.searchsorted(starts2, starts1, "left") match_2in1_ends = np.searchsorted(starts2, ends1, "right" if closed else "left") # "right" is intentional here to avoid duplication match_1in2_starts = np.searchsorted(starts1, starts2, "right") match_1in2_ends = np.searchsorted(starts1, ends2, "right" if closed else "left") # Ignore self-overlaps match_2in1_mask = match_2in1_ends > match_2in1_starts match_1in2_mask = match_1in2_ends > match_1in2_starts match_2in1_starts, match_2in1_ends = ( match_2in1_starts[match_2in1_mask], match_2in1_ends[match_2in1_mask], ) match_1in2_starts, match_1in2_ends = ( match_1in2_starts[match_1in2_mask], match_1in2_ends[match_1in2_mask], ) # Generate IDs of pairs of overlapping intervals overlap_ids = np.block( [ [ np.repeat(ids1[match_2in1_mask], match_2in1_ends - match_2in1_starts)[ :, None ], ids2[arange_multi(match_2in1_starts, match_2in1_ends)][:, None], ], [ ids1[arange_multi(match_1in2_starts, match_1in2_ends)][:, None], np.repeat(ids2[match_1in2_mask], match_1in2_ends - match_1in2_starts)[ :, None ], ], ] ) if sort: # Sort overlaps according to the 1st overlap_ids = overlap_ids[np.lexsort([overlap_ids[:, 1], overlap_ids[:, 0]])] return overlap_ids def overlap_intervals_outer(starts1, ends1, starts2, ends2, closed=False): """ Take two sets of intervals and return the indices of pairs of overlapping intervals, as well as the indices of the intervals that do not overlap any other interval. Parameters ---------- starts1, ends1, starts2, ends2 : numpy.ndarray Interval coordinates. Warning: if provided as pandas.Series, indices will be ignored. closed : bool If True, then treat intervals as closed and report single-point overlaps. Returns ------- overlap_ids : numpy.ndarray An Nx2 array containing the indices of pairs of overlapping intervals. The 1st column contains ids from the 1st set, the 2nd column has ids from the 2nd set. no_overlap_ids1, no_overlap_ids2 : numpy.ndarray Two 1D arrays containing the indices of intervals in sets 1 and 2 respectively that do not overlap with any interval in the other set. """ ovids = overlap_intervals(starts1, ends1, starts2, ends2, closed=closed) no_overlap_ids1 = np.where( np.bincount(ovids[:, 0], minlength=starts1.shape[0]) == 0 )[0] no_overlap_ids2 = np.where( np.bincount(ovids[:, 1], minlength=starts2.shape[0]) == 0 )[0] return ovids, no_overlap_ids1, no_overlap_ids2 def merge_intervals(starts, ends, min_dist=0): """ Merge overlapping intervals. Parameters ---------- starts, ends : numpy.ndarray Interval coordinates. Warning: if provided as pandas.Series, indices will be ignored. min_dist : float or None If provided, merge intervals separated by this distance or less. If None, do not merge non-overlapping intervals. Using min_dist=0 and min_dist=None will bring different results. bioframe uses semi-open intervals, so interval pairs [0,1) and [1,2) do not overlap, but are separated by a distance of 0. Such intervals are not merged when min_dist=None, but are merged when min_dist=0. Returns ------- cluster_ids : numpy.ndarray The indices of interval clusters that each interval belongs to. cluster_starts : numpy.ndarray cluster_ends : numpy.ndarray The spans of the merged intervals. Notes ----- From https://stackoverflow.com/questions/43600878/merging-overlapping-intervals/58976449#58976449 """ for vec in [starts, ends]: if issubclass(type(vec), pd.core.series.Series): warnings.warn( "One of the inputs is provided as pandas.Series and its index " "will be ignored.", SyntaxWarning, ) starts = np.asarray(starts) ends = np.asarray(ends) order = np.lexsort([ends, starts]) starts, ends = starts[order], ends[order] ends = np.maximum.accumulate(ends) cluster_borders = np.zeros(len(starts) + 1, dtype=bool) cluster_borders[0] = True cluster_borders[-1] = True if min_dist is not None: cluster_borders[1:-1] = starts[1:] > ends[:-1] + min_dist else: cluster_borders[1:-1] = starts[1:] >= ends[:-1] cluster_ids_sorted = np.cumsum(cluster_borders)[:-1] - 1 cluster_ids = np.full(starts.shape[0], -1) cluster_ids[order] = cluster_ids_sorted cluster_starts = starts[:][cluster_borders[:-1]] cluster_ends = ends[:][cluster_borders[1:]] return cluster_ids, cluster_starts, cluster_ends def complement_intervals( starts, ends, bounds=(0, np.iinfo(np.int64).max), ): _, merged_starts, merged_ends = merge_intervals(starts, ends, min_dist=0) lo = np.searchsorted(merged_ends, bounds[0], "right") hi = np.searchsorted(merged_starts, bounds[1], "left") merged_starts = merged_starts[lo:hi] merged_ends = merged_ends[lo:hi] # Trim the complement to the bounds. complement_starts = np.r_[bounds[0], merged_ends] complement_ends = np.r_[merged_starts, bounds[1]] lo = 1 if (complement_starts[0] >= complement_ends[0]) else 0 hi = -1 if (complement_starts[-1] >= complement_ends[-1]) else None complement_starts = complement_starts[lo:hi] complement_ends = complement_ends[lo:hi] return complement_starts, complement_ends def _closest_intervals_nooverlap( starts1, ends1, starts2, ends2, direction, tie_arr=None, k=1 ): """ For every interval in set 1, return the indices of k closest intervals from set 2 to the left from the interval (with smaller coordinate). Overlapping intervals from set 2 are not reported, unless they overlap by a single point. Parameters ---------- starts1, ends1, starts2, ends2 : numpy.ndarray Interval coordinates. Warning: if provided as pandas.Series, indices will be ignored. direction : str ("left" or "right") Orientation of closest interval search tie_arr : numpy.ndarray or None Extra data describing intervals in set 2 to break ties when multiple intervals are located at the same distance. An interval with the *lowest* value is selected. k : int The number of neighbors to report. Returns ------- ids: numpy.ndarray One Nx2 array containing the indices of pairs of closest intervals, reported for the neighbors in specified direction (by genomic coordinate). The two columns are the inteval ids from set 1, ids of the closest intevals from set 2. """ for vec in [starts1, ends1, starts2, ends2]: if issubclass(type(vec), pd.core.series.Series): warnings.warn( "One of the inputs is provided as pandas.Series " "and its index will be ignored.", SyntaxWarning, ) starts1 = np.asarray(starts1) ends1 = np.asarray(ends1) starts2 = np.asarray(starts2) ends2 = np.asarray(ends2) n1 = starts1.shape[0] n2 = starts2.shape[0] ids = np.zeros((0, 2), dtype=int) if k > 0 and direction=="left": if tie_arr is None: ends2_sort_order = np.argsort(ends2) else: ends2_sort_order = np.lexsort([-tie_arr, ends2]) ids2_endsorted = np.arange(0, n2)[ends2_sort_order] ends2_sorted = ends2[ends2_sort_order] left_closest_endidx = np.searchsorted(ends2_sorted, starts1, "right") left_closest_startidx = np.maximum(left_closest_endidx - k, 0) int1_ids = np.repeat( np.arange(n1), left_closest_endidx - left_closest_startidx ) int2_sorted_ids = arange_multi( left_closest_startidx, left_closest_endidx ) ids = np.vstack( [ int1_ids, ids2_endsorted[int2_sorted_ids], # ends2_sorted[int2_sorted_ids] - starts1[int1_ids], # arange_multi(left_closest_startidx - left_closest_endidx, 0) ] ).T elif k > 0 and direction=="right": if tie_arr is None: starts2_sort_order = np.argsort(starts2) else: starts2_sort_order = np.lexsort([tie_arr, starts2]) ids2_startsorted = np.arange(0, n2)[starts2_sort_order] starts2_sorted = starts2[starts2_sort_order] right_closest_startidx = np.searchsorted(starts2_sorted, ends1, "left") right_closest_endidx = np.minimum( right_closest_startidx + k, n2 ) int1_ids = np.repeat( np.arange(n1), right_closest_endidx - right_closest_startidx ) int2_sorted_ids = arange_multi( right_closest_startidx, right_closest_endidx ) ids = np.vstack( [ int1_ids, ids2_startsorted[int2_sorted_ids], # starts2_sorted[int2_sorted_ids] - ends1[int1_ids], # arange_multi(1, right_closest_endidx - # right_closest_startidx + 1) ] ).T return ids def closest_intervals( starts1, ends1, starts2=None, ends2=None, k=1, tie_arr=None, ignore_overlaps=False, ignore_upstream=False, ignore_downstream=False, direction=None ): """ For every interval in set 1, return the indices of k closest intervals from set 2. Parameters ---------- starts1, ends1, starts2, ends2 : numpy.ndarray Interval coordinates. Warning: if provided as pandas.Series, indices will be ignored. If start2 and ends2 are None, find closest intervals within the same set. k : int The number of neighbors to report. tie_arr : numpy.ndarray or None Extra data describing intervals in set 2 to break ties when multiple intervals are located at the same distance. Intervals with *lower* tie_arr values will be given priority. ignore_overlaps : bool If True, ignore set 2 intervals that overlap with set 1 intervals. ignore_upstream, ignore_downstream : bool If True, ignore set 2 intervals upstream/downstream of set 1 intervals. direction : numpy.ndarray with dtype bool or None Strand vector to define the upstream/downstream orientation of the intervals. Returns ------- closest_ids : numpy.ndarray An Nx2 array containing the indices of pairs of closest intervals. The 1st column contains ids from the 1st set, the 2nd column has ids from the 2nd set. """ # Get overlapping intervals: if ignore_overlaps: overlap_ids = np.zeros((0, 2), dtype=int) elif (starts2 is None) and (ends2 is None): starts2, ends2 = starts1, ends1 overlap_ids = overlap_intervals(starts1, ends1, starts2, ends2) overlap_ids = overlap_ids[overlap_ids[:, 0] != overlap_ids[:, 1]] else: overlap_ids = overlap_intervals(starts1, ends1, starts2, ends2) # Get non-overlapping intervals: n = len(starts1) all_ids = np.arange(n) # + directed intervals ids_left_upstream = _closest_intervals_nooverlap( starts1[direction], ends1[direction], starts2, ends2, direction="left", tie_arr=tie_arr, k=0 if ignore_upstream else k ) ids_right_downstream = _closest_intervals_nooverlap( starts1[direction], ends1[direction], starts2, ends2, direction="right", tie_arr=tie_arr, k=0 if ignore_downstream else k ) # - directed intervals ids_right_upstream = _closest_intervals_nooverlap( starts1[~direction], ends1[~direction], starts2, ends2, direction="right", tie_arr=tie_arr, k=0 if ignore_upstream else k ) ids_left_downstream = _closest_intervals_nooverlap( starts1[~direction], ends1[~direction], starts2, ends2, direction="left", tie_arr=tie_arr, k=0 if ignore_downstream else k ) # Reconstruct original indexes (b/c we split regions by direction above) ids_left_upstream[:, 0] = all_ids[direction][ids_left_upstream[:, 0]] ids_right_downstream[:, 0] = all_ids[direction][ids_right_downstream[:, 0]] ids_left_downstream[:, 0] = all_ids[~direction][ids_left_downstream[:, 0]] ids_right_upstream[:, 0] = all_ids[~direction][ids_right_upstream[:, 0]] left_ids = np.concatenate([ids_left_upstream, ids_left_downstream]) right_ids = np.concatenate([ids_right_upstream, ids_right_downstream]) # Increase the distance by 1 to distinguish between overlapping # and non-overlapping set 2 intervals. left_dists = starts1[left_ids[:, 0]] - ends2[left_ids[:, 1]] + 1 right_dists = starts2[right_ids[:, 1]] - ends1[right_ids[:, 0]] + 1 closest_ids = np.vstack([left_ids, right_ids, overlap_ids]) closest_dists = np.concatenate( [left_dists, right_dists, np.zeros(overlap_ids.shape[0])] ) # Sort by distance to set 1 intervals and, if present, by the tie-breaking # data array. if tie_arr is None: order = np.lexsort([closest_ids[:, 1], closest_dists, closest_ids[:, 0]]) else: order = np.lexsort( [closest_ids[:, 1], tie_arr, closest_dists, closest_ids[:, 0]] ) closest_ids = closest_ids[order, :2] # For each set 1 interval, select up to k closest neighbours. interval1_run_border_mask = closest_ids[:-1, 0] != closest_ids[1:, 0] interval1_run_borders = np.where(np.r_[True, interval1_run_border_mask, True])[0] interval1_run_starts = interval1_run_borders[:-1] interval1_run_ends = interval1_run_borders[1:] closest_ids = closest_ids[ arange_multi( interval1_run_starts, lengths=np.minimum(k, interval1_run_ends - interval1_run_starts), ) ] return closest_ids def coverage_intervals_rle(starts, ends, weights=None): n = starts.shape[0] if weights is None: weights = np.ones(n, dtype=np.int64) borders = np.r_[starts, ends] coverage_change = np.r_[weights, -1 * weights] borders_order = np.argsort(borders) borders = borders[borders_order] coverage = np.cumsum(coverage_change[borders_order]) return borders, coverage def stack_intervals(starts, ends): n = starts.shape[0] borders = np.r_[starts, ends] lens = np.r_[ends - starts, ends - starts] border_types = np.r_[np.ones_like(starts), -1 * np.ones_like(ends)] border_ids = np.r_[np.arange(1, n + 1), -1 * np.arange(1, n + 1)] border_order = np.lexsort([-lens, border_types, borders]) borders, border_ids = borders[border_order], border_ids[border_order] occupancy = np.zeros(2, dtype=bool) levels = -1 * np.ones(n, dtype=np.int64) for border, border_id in zip(borders, border_ids): interval_id = np.abs(border_id) - 1 if border_id > 0: if occupancy.sum() == occupancy.shape[0]: occupancy = np.r_[occupancy, np.zeros_like(occupancy)] new_level = np.where(occupancy == False)[0][0] levels[interval_id] = new_level occupancy[new_level] = True if border_id < 0: occupancy[levels[interval_id]] = False return levels bioframe-0.4.1/bioframe/core/__init__.py0000644000175000017500000000051614420777331017465 0ustar nileshnileshfrom . import arrops from . import specs from .specs import * from . import stringops from .stringops import * from . import checks from .checks import * from . import construction from .construction import * __all__ = [ "arrops", *specs.__all__, *stringops.__all__, *checks.__all__, *construction.__all__, ] bioframe-0.4.1/bioframe/_version.py0000644000175000017500000000002614420777331016616 0ustar nileshnilesh__version__ = "0.4.1" bioframe-0.4.1/bioframe/__init__.py0000644000175000017500000000020414420777331016527 0ustar nileshnileshfrom ._version import __version__ from .core import * from .io import * from .ops import * from .extras import * from .vis import * bioframe-0.4.1/README.md0000644000175000017500000001056114420777331014120 0ustar nileshnilesh# Bioframe: Operations on Genomic Interval Dataframes ![Python package](https://github.com/open2c/bioframe/workflows/Python%20package/badge.svg) [![DOI](https://zenodo.org/badge/69901992.svg)](https://zenodo.org/badge/latestdoi/69901992) [![Docs status](https://readthedocs.org/projects/bioframe/badge/)](https://bioframe.readthedocs.io/en/latest/) Bioframe is a library to enable flexible and scalable operations on genomic interval dataframes in python. Building bioframe directly on top of [pandas](https://pandas.pydata.org/) enables immediate access to a rich set of dataframe operations. Working in python enables rapid visualization (e.g. matplotlib, seaborn) and iteration of genomic analyses. The philosophy underlying bioframe is to enable flexible operations: instead of creating a function for every possible use-case, we instead encourage users to compose functions to achieve their goals. Bioframe implements a variety of genomic interval operations directly on dataframes. Bioframe also includes functions for loading diverse genomic data formats, and performing operations on special classes of genomic intervals, including chromosome arms and fixed size bins. Read the [docs](https://bioframe.readthedocs.io/en/latest/), including the [guide](https://bioframe.readthedocs.io/en/latest/guide-intervalops.html), as well as the [bioframe preprint](https://doi.org/10.1101/2022.02.16.480748) for more information. If you use ***bioframe*** in your work, please cite: *Bioframe: Operations on Genomic Intervals in Pandas Dataframes*. Open2C, Nezar Abdennur, Geoffrey Fudenberg, Ilya Flyamer, Aleksandra A. Galitsyna, Anton Goloborodko, Maxim Imakaev, Sergey V. Venev. bioRxiv 2022.02.16.480748; doi: https://doi.org/10.1101/2022.02.16.480748 ## Installation The following are required before installing bioframe: * Python 3.7+ * `numpy` * `pandas>=1.3` ```sh pip install bioframe ``` ## Interval operations Key genomic interval operations in bioframe include: - `closest`: For every interval in a dataframe, find the closest intervals in a second dataframe. - `cluster`: Group overlapping intervals in a dataframe into clusters. - `complement`: Find genomic intervals that are not covered by any interval from a dataframe. - `overlap`: Find pairs of overlapping genomic intervals between two dataframes. Bioframe additionally has functions that are frequently used for genomic interval operations and can be expressed as combinations of these core operations and dataframe operations, including: `coverage`, `expand`, `merge`, `select`, and `subtract`. To `overlap` two dataframes, call: ```python import bioframe as bf bf.overlap(df1, df2) ``` For these two input dataframes, with intervals all on the same chromosome: `overlap` will return the following interval pairs as overlaps: To `merge` all overlapping intervals in a dataframe, call: ```python import bioframe as bf bf.merge(df1) ``` For this input dataframe, with intervals all on the same chromosome: `merge` will return a new dataframe with these merged intervals: See the [guide](https://bioframe.readthedocs.io/en/latest/guide-intervalops.html) for visualizations of other interval operations in bioframe. ## File I/O Bioframe includes utilities for reading genomic file formats into dataframes and vice versa. One handy function is `read_table` which mirrors pandas’s read_csv/read_table but provides a [`schema`](https://github.com/open2c/bioframe/blob/main/bioframe/io/schemas.py) argument to populate column names for common tabular file formats. ```python jaspar_url = 'http://expdata.cmmt.ubc.ca/JASPAR/downloads/UCSC_tracks/2018/hg38/tsv/MA0139.1.tsv.gz' ctcf_motif_calls = bioframe.read_table(jaspar_url, schema='jaspar', skiprows=1) ``` ## Tutorials See this [jupyter notebook](https://github.com/open2c/bioframe/tree/master/docs/tutorials/tutorial_assign_motifs_to_peaks.ipynb) for an example of how to assign TF motifs to ChIP-seq peaks using bioframe. ## Projects currently using bioframe: * [cooler](https://github.com/open2c/cooler) * [cooltools](https://github.com/open2c/cooltools) * yours? :) bioframe-0.4.1/Makefile0000644000175000017500000000116314420777331014277 0ustar nileshnilesh.PHONY: install clean-pyc clean-build build test publish docs-init docs install: pip install -r requirements-dev.txt pip install -e . test: pytest clean-pyc: find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} + find . -name '*~' -exec rm -f {} + clean-build: rm -rf build/ rm -rf dist/ clean: clean-pyc clean-build build: clean-build python setup.py sdist python setup.py bdist_wheel docs-init: pip install -r docs/requirements_doc.txt docs: cd docs && make html publish: build twine upload dist/* publish-test: twine upload --repository-url https://test.pypi.org/legacy/ dist/* bioframe-0.4.1/MANIFEST.in0000644000175000017500000000030214420777331014367 0ustar nileshnileshinclude README.md include LICENSE global-exclude __pycache__/* global-exclude *.so global-exclude *.pyd global-exclude *.pyc global-exclude .git* global-exclude .deps/* global-exclude .DS_Storebioframe-0.4.1/LICENSE0000644000175000017500000000206114420777331013642 0ustar nileshnileshThe MIT License (MIT) Copyright (c) 2016 Open2C Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. bioframe-0.4.1/CHANGES.md0000644000175000017500000001013614420777331014231 0ustar nileshnilesh# Release notes ## [v0.4.1](https://github.com/open2c/bioframe/compare/v0.4.0...v0.4.1) Date 2023-04-22 Bug fixes: * Fix bug introduced in the last release in `select` and `select_*` query interval semantics. Results of select are now consistent with the query interval being interpreted as half-open, closed on the left. ## [v0.4.0](https://github.com/open2c/bioframe/compare/v0.3.3...v0.4.0) Date 2023-03-23 API changes: * New strand-aware directionality options for `closest()` via `direction_col` #129. * New index-based range query selectors on single bioframes to complement `select()` #128: * `select_mask()` returns boolean indices corresponding to intervals that overlap the query region * `select_indices()` returns integer indices corresponding to intervals that overlap the query region * `select_labels()` returns pandas label indices corresponding to intervals that overlap the query region Bug fixes: * Import fixes in sandbox * Relax bioframe validator to permit using same column as start and end (e.g. point variants). ## [v0.3.3](https://github.com/open2c/bioframe/compare/v0.3.2...v0.3.3) Date: 2022-02-28 Bug fixes: * fixed a couple functions returning an error instance instead of raising * fetch_mrna link fixed ## [v0.3.2](https://github.com/open2c/bioframe/compare/v0.3.1...v0.3.2) Date: 2022-02-01 Bug fixes: * fixed error in is_contained * tutorial updates ## [v0.3.1](https://github.com/open2c/bioframe/compare/v0.3.0...v0.3.1) Date : 2021-11-15 API changes: * `bioframe.sort_bedframe` does not append columns or modify their dtypes. ## [v0.3.0](https://github.com/open2c/bioframe/compare/v0.2.0...v0.3.0) Date : 2021-08-31 Conceptual changes: * we formulated strict definitions for genomic intervals, dataframes, and their various properties. All bioframe functions are expected to follow to these definitions tightly. API changes: * reorganize modules: * ops - operations on genomic interval dataframes * extras - miscellaneous operations, most involving genomic sequences and gene annotations * vis - visualizations of genomic interval dataframes * core.arrops - operations on genomic interval arrays * core.checks - tests for definitions of genomic interval dataframes * core.construction - construction and sanitation of genomic interval dataframes * core.specs - specifications for the implementation of genomic intervals in pandas.dataframes (i.e. column names, datatypes, etc) * core.stringops - operations on genomic interval strings * io.fileops - I/O on common file formats for genomic data * io.schemas - schemas for standard tabular formats for genomic data storage * io.resources - interfaces to popular online genomic data resources * new functions: extras.pair_by_distance, ops.sort_bedframe, ops.assign_view, dataframe constructors * existing functions: * expand: take negative values and fractional values * overlap: change default suffixes, keep_order=True * subtract: add return_index and keep_order * enable pd.NA for missing values, typecasting New data: * add schemas for bedpe, gap, UCSCmRNA, pgsnp * add tables with curated detailed genome assembly information Bugfixes: * None?.. Miscellaneous: * speed up frac_gc is faster now * drop support for Python 3.6, add support for 3.9 ## [v0.2.0](https://github.com/open2c/bioframe/compare/v0.1.0...v0.2.0) Date : 2020-12-02 API changes * `read_chromsizes` and `fetch_chromsizes`: add new `as_bed` parameter. * `read_chromsizes` and `fetch_chromsizes`: revert to filtering chromosome names by default, but clearly expose `filter_chroms` kwarg. Bug fixes * Fixed `bioframe.split` * Restored `frac_genome_coverage` ## [v0.1.0](https://github.com/open2c/bioframe/compare/v0.0.12...v0.1.0) Date : 2020-09-23 First beta release. ### What's new * New extensive dataframe genomic interval arithmetic toolsuite. * Improved region handling and region querying functions. * [Documentation!](https://bioframe.readthedocs.io/) ### Maintenance * Dropped Python 2 support * Refactoring of various genome operations and resources. * Improved testing and linting bioframe-0.4.1/.gitignore0000644000175000017500000000047514420777331014634 0ustar nileshnilesh*.swp *.swo *~ *.py[cod] __pycache__ .cache .pytest_cache .ipynb_checkpoints/ .venv/* # setup and build docs/_* *.egg-info/ dist/ build/ MANIFEST # OS-generated files .DS_Store .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db tmp/ docs/notebooks/.ipynb_checkpoints .vscode .spyproject docs/notebooks/cgranges-test/*