Repository: cogent3/cogent3
Pull request #1497 (2023-07-01 08:53:30)

MAINT: more consistent behaviour on serialisation annotated seqs


Patch:
diff --git a/src/cogent3/core/alignment.py b/src/cogent3/core/alignment.py
index b3a71c796..7153ac414 100644
--- a/src/cogent3/core/alignment.py
+++ b/src/cogent3/core/alignment.py
@@ -562,7 +562,11 @@ class _SequenceCollectionBase:
         self._set_additional_attributes(curr_seqs)
 
         self._repr_policy = dict(num_seqs=10, num_pos=60, ref_name="longest", wrap=60)
-        self._annotation_db = anno_db or DEFAULT_ANNOTATION_DB()
+
+        self._annotation_db = None
+
+        if not isinstance(self, ArrayAlignment):
+            self.annotation_db = anno_db or DEFAULT_ANNOTATION_DB()
 
     @property
     def annotation_db(self):
@@ -2422,13 +2426,23 @@ class Aligned:
         coords = self.map.get_covering_span().get_coordinates()
         if len(coords) != 1:
             raise NotImplementedError
-        start, end = coords[0]
-        data = self.data[start:end]
-        data = data.to_rich_dict(exclude_annotations=True)
-        data["seq"] = str(self)
-        data["version"] = __version__
+        data = dict(version=__version__, type=get_object_provenance(self))
+        # we are resetting the stored data to begin at 0
+        data["map_init"] = self.map.zeroed().to_rich_dict()
+        data["seq_init"] = self.data.to_rich_dict(exclude_annotations=True)
         return data
 
+    @classmethod
+    def from_rich_dict(cls, data: dict):
+        from cogent3.util.deserialise import (
+            deserialise_map_spans,
+            deserialise_seq,
+        )
+
+        map_ = deserialise_map_spans(data["map_init"])
+        seq = deserialise_seq(data["seq_init"])
+        return cls(map_, seq)
+
     def to_json(self):
         """returns a json formatted string"""
         return json.dumps(self.to_rich_dict())
@@ -4698,9 +4712,11 @@ class Alignment(AlignmentI, SequenceCollection):
 
     def _seq_to_aligned(self, seq, key):
         """Converts seq to Aligned object -- override in subclasses"""
+        db = getattr(seq, "annotation_db", None)
         (map, seq) = self.moltype.make_seq(
             seq, key, preserve_case=True
         ).parse_out_gaps()
+        seq.annotation_db = db
         return Aligned(map, seq)
 
     def __getitem__(self, index):
@@ -4756,7 +4772,8 @@ class Alignment(AlignmentI, SequenceCollection):
 
         self._annotation_db = value
         for seq in self.seqs:
-            seq.data.replace_annotation_db(value, check=False)
+            seq = getattr(seq, "data", seq)
+            seq.replace_annotation_db(value, check=False)
 
     def _mapped(self, slicemap):
         align = []
diff --git a/src/cogent3/core/annotation_db.py b/src/cogent3/core/annotation_db.py
index 8d57eb1cc..2d21319fa 100644
--- a/src/cogent3/core/annotation_db.py
+++ b/src/cogent3/core/annotation_db.py
@@ -1407,7 +1407,7 @@ def convert_annotation_to_annotation_db(data: dict) -> SupportsFeatures:
 
     db = BasicAnnotationDb()
 
-    seqid = data.pop("name", None)
+    seqid = data.pop("name", data.pop("seqid", None))
     anns = data.pop("data")
     for ann in anns:
         ann = ann.pop("annotation_construction")
diff --git a/src/cogent3/core/sequence.py b/src/cogent3/core/sequence.py
index 24fadb557..1bfc94301 100644
--- a/src/cogent3/core/sequence.py
+++ b/src/cogent3/core/sequence.py
@@ -46,7 +46,6 @@ from cogent3.core.annotation_db import (
     BasicAnnotationDb,
     FeatureDataType,
     GenbankAnnotationDb,
-    GffAnnotationDb,
     SupportsFeatures,
     load_annotations,
 )
@@ -123,9 +122,10 @@ class SequenceI(object):
             info.pop("Refs")
 
         info = info or None
+        seq = self._seq.to_rich_dict() if hasattr(self, "_seq") else str(self)
         data = dict(
             name=self.name,
-            seq=str(self),
+            seq=seq,
             moltype=self.moltype.label,
             info=info,
             type=get_object_provenance(self),
@@ -1835,12 +1835,13 @@ class SeqView:
         return self.step < 0
 
     def absolute_position(self, rel_index: int, include_boundary=False):
-        """Converts an index relative to the current view to be with respect to the coordinates of the sequence's annotations
+        """Converts an index relative to the current view to be with respect
+        to the coordinates of the sequence's annotations
 
         Parameters
         ----------
-        rel_index    int
-                relative position with respect to the current view
+        rel_index
+            relative position with respect to the current view
 
         Returns
         -------
@@ -2129,6 +2130,32 @@ class SeqView:
         seq = f"{self.seq[:10]}...{self.seq[-5:]}" if len(self.seq) > 15 else self.seq
         return f"{self.__class__.__name__}(seq={seq!r}, start={self.start}, stop={self.stop}, step={self.step})"
 
+    def to_rich_dict(self):
+        # get the current state
+        data = {"type": get_object_provenance(self), "version": __version__}
+        # since we will truncate the seq, we don't need start, stop,
+        # step is sufficient
+        data["init_args"] = {"step": self.step}
+        if self.reverse:
+            adj = len(self.seq) + 1
+            start, stop = self.stop + adj, self.start + adj
+            offset = self.offset + start
+        else:
+            start, stop = self.start, self.stop
+            offset = self.offset + self.start
+
+        data["offset"] = offset
+        data["init_args"]["seq"] = self.seq[start:stop]
+        return data
+
+    @classmethod
+    def from_rich_dict(cls, data: dict):
+        init_args = data.pop("init_args")
+        offset = data.pop("offset", 0)
+        sv = cls(**init_args)
+        sv.offset = offset
+        return sv
+
 
 _zero_slice = SeqView(seq="")
 
diff --git a/src/cogent3/util/deserialise.py b/src/cogent3/util/deserialise.py
index 4ea437751..2f915fa85 100644
--- a/src/cogent3/util/deserialise.py
+++ b/src/cogent3/util/deserialise.py
@@ -95,6 +95,13 @@ def deserialise_tabular(data):
     return result
 
 
+@register_deserialiser("cogent3.core.sequence.SeqView")
+def deserialise_seqview(data):
+    """deserialising SeqView"""
+    klass = _get_class(data["type"])
+    return klass.from_rich_dict(data)
+
+
 @register_deserialiser("cogent3.app.composable.NotCompleted")
 def deserialise_not_completed(data):
     """deserialising NotCompletedResult"""
@@ -193,6 +200,17 @@ def deserialise_alphabet(data):
     return result
 
 
+def _from_seqview(data):
+    data["seq"] = deserialise_seqview(data["seq"])
+    return data
+
+
+@register_deserialiser("cogent3.core.alignment.Aligned")
+def deserialise_aligned(data):
+    klass = _get_class(data.pop("type"))
+    return klass.from_rich_dict(data)
+
+
 @register_deserialiser("cogent3.core.sequence")
 def deserialise_seq(data, aligned=False):
     """deserialises sequence and any annotations
@@ -215,24 +233,29 @@ def deserialise_seq(data, aligned=False):
     data["moltype"] = get_moltype(data.pop("moltype"))
     annotations = data.pop("annotations", None)
     if annotations:
-        annotation_db = {"type": "annotation_to_annotation_db", "data": annotations}
+        annotation_db = {
+            "type": "annotation_to_annotation_db",
+            "data": annotations,
+            "seqid": data.get("name", None),
+        }
     else:
         annotation_db = data.pop("annotation_db", None)
 
-    make_seq = data["moltype"].make_seq
+    make_seq = data.pop("moltype").make_seq
     _ = data.pop("type")
     if "-" in data["seq"]:
         aligned = True
 
-    data.pop("moltype")
+    if isinstance(data["seq"], dict):
+        data = _from_seqview(data)
+
     result = make_seq(**data)
-    if aligned:
-        map_, result = result.parse_out_gaps()
 
     if annotation_db:
         annotation_db = deserialise_object(annotation_db)
 
     if aligned:
+        map_, result = result.parse_out_gaps()
         result = Aligned(map_, result)
         result.data.annotation_db = annotation_db
     else:
@@ -251,7 +274,10 @@ def deserialise_seq_collections(data):
     data["moltype"] = get_moltype(data.pop("moltype"))
     annotations = data.pop("annotations", None)
     if annotations:
-        annotation_db = {"type": "annotation_to_annotation_db", "data": annotations}
+        annotation_db = {
+            "type": "annotation_to_annotation_db",
+            "data": annotations,
+        }
     else:
         annotation_db = data.pop("annotation_db", None)
 
@@ -262,7 +288,10 @@ def deserialise_seq_collections(data):
     seqs = []
     for v in data.pop("seqs").values():
         v["moltype"] = data["moltype"]
-        seq = deserialise_seq(v, aligned=aligned)
+        if v["type"].endswith("Aligned"):
+            seq = deserialise_aligned(v)
+        else:
+            seq = deserialise_seq(v, aligned=aligned)
         seqs.append(seq)
 
     result = klass(seqs, **data)
@@ -370,8 +399,8 @@ def deserialise_object(data):
         with open_(data) as infile:
             data = json.load(infile)
 
-    if type(data) is str:
-        data = json.loads(data)
+    if isinstance(data, str):
+        data = json.loads(str(data))
 
     type_ = data.get("type", None) if hasattr(data, "get") else None
     if type_ is None:


Test patch:
diff --git a/tests/data/old_annotation_style.json b/tests/data/old_annotation_style.json
new file mode 100644
index 000000000..8fc1ccfd4
--- /dev/null
+++ b/tests/data/old_annotation_style.json
@@ -0,0 +1,1 @@
+{"identifier": "tp53.json", "data": "{\"seqs\": {\"Orangutan\": {\"name\": \"Orangutan\", \"seq\": \"AGGGCTGGGAGCGTGCTTTCCACGACGGTGACACGCTTCCCTGGATTGGGTAAGCTCCTGACTGAACTTTGATGAGTCCTCTCTGAGTCACGGGCTCTCGGCTCCGTGTATTTTCAGCTCGGGAGAATCGCTGGGGCTGGGGGTGGGGCCAGTGGGGGACTTAGACGAGTTTGGGGGGTGAGATGGGATGGAAGGTTGGCTAGAGGGATCAAACATAGGAGTTGCATTGTTGGGAGACCTGAGGTGTAGATGATGGGGATGTTAGGGACTATCCGAACTCAAAGTTGAAGCGCCTAGGCAGAGGAGTGGAGCTTTGGGGAACCTTGAGCCGGCCTAAAGGGTACTTCTTTGCACATCCACCCGGTGCTGGGCGTAGGGAATCCCTGGAGTAAAAGATGCACAAAGCATTGAGGTCTCAGACTTTTGGATCTCGAAACATTGAGAACTCAGAGCTGTATATTTTAGAGCCCATGGCATCCTAGTGAAAACTCGGGCTCCATTCCGAAATGATCATTTGGGGGTGATCCGGGGAGCCCAAGCTGCTAAGGTCCCACCAACTTCCAGGACCTTTGTCCTTCCTGGAGCGATCTTTCCAGCCAGCCCCCGGCTCCGCTAGATGGAGAAAATCCAATTGAATGGCTGTCAGTCGTGGAAGTGAGAAGTGCTAAACAAGGGGTTTGCCCGCCAGGCCGAGGATGGACCGTCTCAGTCTGAGAGGCCCGGCAGCCCTGTTATTGTTTGGCTCCACATTTACATTTCTGCCCTCTTGCAGCAGCATTTCCCGGTTTCTTTTTGCCGGAGCAGGCTTACTATTCACCCCGATGAGAGGGGAGGAGAGAGAGAGAAAATGTCCCTTTTAGGCCGGTTCCTCTTACTTGGACAGAGGGAGGCTGCTAGTTCTCCGCCCGCATTTCTTTTTCTGGATTACTTAGTTATGGCCCTTTCGCAGAGGCAGGGGTATTTGTTTTGATGCAAACCTCATATCCCCGTCCCCTTCTTTGAATGGTGTGCCCCACCCCGCGGGTCGGCTGCAACCTAGACGGACGCTACCATGGCGTGAGACAGGGAGGGAAAGAAAGTGTGCAGAAGGCAAGCCCGGGGGTATTTTCAAGAATGAGTACATCTCATCTTCCCGGAGGAAAAAAAAAAGAAATGAGTACATCTGAGAATCAAATTTCGAAAGAGTGCAATGATGGGTCGTTTGATAATATTTGTCGGAAAAAACAATCTACCTGTTATCTGGCTTTGGGCTAGGCCATTCCAGTTTCCAGACGCAGGCTGAACGTCGTGAAGCGGAAGGGGCGGGCCCGCAGGCATCCGTGTGGTCCTCCGTGCAGCCCTCCGGNCCCGAGCCGGTTCTTCCCGGTAGGAAGGCAGAACTCGAATTCATTTCTCCCGCTGCCCCATCTCTTAGCTCGACGGTTTTTTCATTCCGCAGTTTCTTCCCATGCACCTGCCGCGTTACCGGGGCACTTTGTGCCGTACTTACGTCATCTTTTTCCTAAATCGAGGTGGCCATTTACACACAGCGCCAGTGCACACACCCAAGTGCACAGGAAGATGAGTTTTGGCCCCTNAACCGCNTCCATGATGCCTACCAAGTCACAGACCCTTTTCATCGTCCCAGNAAACGTTTCATCACGCCTCTTCCCAGTCGATTCCCGACCCCCATCTTTATTCTGATCTCCATAATCCATTTTGCCTGTTGGAGAAACTTCATATAAAATGGAATCAGGCTGGGCGCTGTGGCTCACTAGGCCTGCACTTTGGGAGGCCGAGGCGGGCGGATTACTTGAGGATAGGAGTTCCCAGACCAGCCTGGTCCAACATGGGTGAATCCCCCGTCTCTACTAAAAAATACAAAAATTTGCTGGGCGTGGTGGGGTGCCTGTAATCCCCAGCTATTCGGGGAGGCTGAGGCAGGAAGAATCGCTTGAACCCCAGGAAGGCAGAGGATCGCAGTGAGCCAAGATCGTGCCACTACACTCCAAGCCCTGGGCGAACAAGAACGAAACTCCGTCTCAAAAAAAAAAAGGGGGGAATCATACATTATGTTGCTCATTTTTGTCGGGCTTCTGTCCTTTCAATGTACTGTCTGACATTCGTTTCATGTTGTTGTATATATCAGTATTTTGCTCCTTTTCATTTAATATAGTNCCATCGATTGTATATCCCGTTCTTTTGATGGTTCCTTTTGAGTTGTTTTCCCATTTGGGGTTAATGAAATAAAGGCTGGCTTATAAACCAATTCTTCGTACAAATTTCTTTTTGTGATCATGTGTTTTTCGTGGTTTCTTTGGAGGAAATACTTACGAGGGGGAATTGCGAGTTTGGAAGTAAAAAAGTAGATGTATTTTGAACTTTATCAGAAGCTCTGAGTTTTCCAGAGCTGTTGTACCATTTTACACTCCAACTAGGCAAGGTATGGGAGTTATTATGGTTGTGCCACAGCCTTCCGGACCATTAGGGTATTGTCAGTCTTTCTAATGTGGGTATATTCCTTGTAGTTGTAATTTTACAGTTCTCCTGTTGACTAAAGGATGTTCAAGCATTATTTTCATGTGCCTTATTGGGCCAATTCGTATTTTTGTTTGTAAAGTAGCTCTTCGAGTCTTTTGCCCTGTTATTTTGGTCTTTTGTTTGTTTTTATTGTTCAGTTTGTGGGACTGCTTGTATACATTCTGGATACAAGTCCTTTATCAGGATCCATGTGTCGTGGGAATGTTTTCTTCTGATCTGTTGCTTGCCGCTATTTGTTTGCTTGTACAGAGTTTACAGTATGCTTAAGAGGAGTGGATTTATCTTTTTTTATGTTCAGTATTTGCCTTGTCCTGCTTAGGACATCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAACCCCCAAGGGTCATGAATATATTATCTTATATTTTCTTTTTAGGACCTTTATGGTTGTAAGTTTTACAGTAAGGTCCTTGAGCCATTAATTAATTCTTAAAATTAATTGATTTATGGTGTGAGGTGTAAGGAGTCAGTCTCTGGTACCTTACCTGTNATGGAAATCCAGTTATTCTGTCTCCACTTGTTGAAACAGGCTTCCTTTCTCTACTGAATGCTTTTAATTTTAATTAATTGTACAGTTGGAGTAAAGGGCTACCATTTTTAGTGCTATTTTCTTTTTTTCTTTTTTAATTTTTGAGACAGGGGACTCACACTGTTGCCTGGGCTAGAGTACAATGGCACAATCAAGGCTCACTGCAGCCTCGAACCCCTGGGCTCAAGCAGTCCTCTAGTCTCTGCCTCACGAGTAGCTGGGATTACTCCACCACACCCAAGCGTAACTATTTTATTTTTTTGTATTGACAGGATCTCACTATGTTGCCCCAGGCTAGTCTCAAACTGCTGGCCCTCCAGCTTTCATCCCATCTCGGCCTGGCCAGAGTGCTGGGATTACAGGGTGTGAGCCCACCATGCCTGACCTCTTTAGTGCTATTTTCTATTTATCTCGCTGTTCTTTGCTCTCTTTAAACGTTGGAGGAAGAAACAGTACCCATCTTACACAACTCTTCAGAAAACAGAGGAACAGACTGGGTGCGGTGGCTCATACCTGTAATCCCAGCACTTTGGTACGCCGAGGTGGGAGATCACTTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACACAACGAAACACCATCTCTACTAAAAATACAAAAATTAGCTAGGCGTGGTGGCACATACCTGTAATCCCAGTTACTCAGGAGGCTGAGGCACAAGAATCCCTTGAACCTGGGAAGCGGAGGTTGCAGTGAGCCGAGATTGCGCCACTGCACTGCAGCCTGGGCAATAGAGTGAGACCCTGTCTCAGAAAAAAAAGAAAGAAAGAAAGAAAAAATAGAGGAACATTTCCCAACTTGTTTTTGAAGCCAGCATAATCCTGGTACCAAAACCAAACAAGGACATTAAAAGAAAAGAAAATTTAGACCAATATTCCTGTTAGTATATACATGCAAGAGCTAACAAATTTTAGCAAAACAAACCTGGTAATATAGAAAGAAAGGATAAATAGGCCAGGCGCGGTGGCTCATGCCTGTAATCCCAGGAGGGCCGAGGCAGGCAGATCACTTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATGGTGAAACCCCGTTTCTAATAAAAATACAAAAATTAGGCTGGGCGCGATGGCTCCTGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGTGGGCAGATCAGCTGAGGTCAGGAGTTCAAGAACCAGCCTGACCAATGTGGTGAAACCCCATCTCTACTAAAAAATACAAAAAATTTAGCCGAATGTGGTGGACGCCTGCCTGTAATCCCAGCCTACTCAGGAGGGCTGAGGCAGAAATTGCTTGAACCCGGGAGGCAGAGGTTTGCAGTGAGCCCAAGATTGTGCCACTGCACTCCCAGCCTGGGGCAACAGAGCAAGACTTTTATCTCAAAAAAAAAAAAAAAAAATTAAGCTGGGGCATGGTGGTAAAAGGTGCACCTGAAATCCCAGCTACTCGGGAGTCTGAGGCAGGAGAAAAAGAGTCGCTTGAACCCAGGAGGCAGAAGTTGCAGTGAGCTGGGATCATGCCGTTGCACTCCAGCCTGGGCAACAGAGTGAGACTCCATCTCAAAAAAAGAAAAAGAAAAAGGATAAATACATTCTAACCGAATAAATATTTTATCTCATGATTGTAGCTGATTTAACATTCAAAAATTGGCCTGGTGCAGTAGCTCAGGCCTGTAATCCCAACACTTTAGGAGGCTGAGGCAGGAAGATCTCTTGAGCCCAGGATTTCGAGACCAGCCTGGGCAATATAGTCAGACTGGTCTTTACTGGAGGGGGGGCGGAAATCAGTCTGTGTAATTCACCACATTAACAAATGGAAACATAAAAACCCTATGATCATTTCAAAAGATGTAGTAAAAGCAGTTAAGGATATTCAACACATATGCATGATTACAAACAAACCAACCTCCTGGCAAACTAGGGAAAGGAAACTTACCTAGTTTGATAACAGGGCATCCACAGTCGGAGTTCCACTAGCAGCATACATAGTGGTAGAAAACTCAATGCTGCCAGGGCGCAGTGGCTGACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACAAGGTCAGGAGATCAAGACTGTCCTGACTAACATGCTGAAACCCCGTCTCTACTAAAAATACAAAAACAAAAAATTAGCCCGAGCGTGGTGGCGGGCGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCGAGAGAATGCCGTAAACCCGGGAGGCGGAGCTTGCAGAGCCTAAATCGTGCCACTGCACTCCAGCCTGGGCGACAGAGTGAGAGTTCGTCTCAAAAAAAAAAAAAAAAAAAGGAAANNNNNNNNNNNCGAGGCGGGTGGATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACACAGTGAAACCCTGTCTCTACTAAAAATACAAAAAATTAGCCGGGCGTAGTGGCGGGCGCCTGTAGTCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATGGCATGATCTCAGGGGGCGGAGCTTGCAGTGAGCTGAGATGGAGCCACTGCACTCCAGCCTGGGAGACAGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAGAAAAAGAAATAATGATTAGTGGCCCGATGGCTCACGCCTATAATCCCAGCACTTTGGGAGGCCGAGGTGGGCAGATCACCTGGGGTCTGGAGTTGGAGACCAGCCTGACAAAAATGGTGAAACCTCGTCTCTATTAAAATATTAAAAAATTAGCCAGGAGTTGCCCGGGTACAGTGGCTCATGCCTGTAATCCCAGAACTTTGGGAGGCCGAGGTGGGTGGATCACCTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACACGGTGAAACCCCATCTCTACTAAAAATACAAAAATTAGCTGGGCATGGTGGCGCGTGCCTGTAATCCCAGCTACTTGGGAGGCTAAGGCAGGAGAATCGCTTGAACCTGGGAGGTGGAGGTTGTAGTGAGCCAGGATTGCACCATTGCACTCCAGCCTGGGTGACAAAAGCAAAAACTCCGTCTCAAAAAAAAAAAATTAGCCAGGCGTAGTGGTGCACGCCTGTAGTCCCAGCTACTCAGGAGGCAGAGGCAGGAGAATCACTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCCGAGATTGTCCCATTGCACTCCAGCCTAGGCGACAAGAGCAAAACTCCATCTCAAAAAAAAAAGGAAAGAAAAAAGAAATAACGATTAAAAAGGAAGAAATAAAACTTATATTCACAGCCAGTATGATTCTATACATACATGTCCTAATGGGGCCGGGCGTGGTGGCTCATGCCTGTGATCCTAGCACTTTAGGAGGCTGAGGCAGGTGGCTCCCCTGGGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAATAAAAATACAAAAAATTAGCCAGGCATGGTGACGGGCACCTCTAATCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATTGCCTGGACCTGGGAGGCAGAGGTTGCAGTGAGCCGAGATCGCGCTATTGTACTCCAGCCTGGGCAACAAGAGTGAAACTCTGGCAGGGTGTGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACCTGAGGTCAGGAGTTCAAGACCAGCCTGACTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAGAATTAGCTGGGTGTAGTGGTGGGCGCCTGTAATCCCAGCTACTTGGGAGGCTGAGACAGAAGAATTGCTTGAACCCGGGAGGTGGAGGTTGCAGTGAGCTGAGATCATGCCATTGCACTCCACGCTGGGCAACAGAGCGAGATTCCGTCTCAAAAAAAAAAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAGTCCTAATGGAAAATCCATAAAAAGCTACCAAAACTAATCAATAAATATAGCAGGGTTGCAGGTTACAGGGCAATATAGTTATCCCTCTATCTGTAGGGGCTTGGTTCTCGGACTCCTCACACACTAAACCCACAGATGTCTAAGTCCCATATATAAGATGGTATAGTATTTGCATTTAACCTACACATATCCTCCCATATAGTTTAAATTATCTCTAGATTACTTACATTACCCCCATACAATGAAAATGCTAATGTACATACAAGTATGTATGTAAATACTTGTCGTACTATATTGTTTAGGGAATCACTGGGCATATAGGCCTTCAAGACTGATACCAGCAGCCACTGTTAAGATTCTGGTCAGGCCTGCCCCTGTTTGGGGTCTCAGTTGAGCTCATTGCCTTCCAACCCAGCCAAGGGTGCCTGCATTTCTCTTGGCTCCCTGACCGTTTGGAAGGCCTAGTTCAGCTTGGCACATTTGTATCCTGGCCCACTGATGCTGGTACCCCTGGGAAGGTCCTGCTCTGAAAAACACTGAGATTTTAGTTGCTACTGAAGATTTGAGAGATGAAGACAGGGAGACCTGTCTGTAGAGCTGTGTCCCTCCAAGTGGGATTGAGACTTTGGGCCCCCCATTTCAGGACAGCACCTCCTGACCTGTTGACTGGATAGTTCCCTGAAGGAGGTGTACTTGCATTAATGGAGTGGGGGTGGGGGCAGTACCACAGATCCGCACTAACAATCACACAGTTCTCTCTAGAATAATAATATAGAACAAGTGAAATAGAACAATTGCAGAAACAGCTAACCTTTGTTGAGCTCTTACTGTGTGCCCAGCACTTTCCTCAACTCTACATTTCCCATAATACACAGTGTACTAGGCCAGGCTTGGTGGCTCACGCCTGTAATCCCAGCACTTTAGGAGGCCAAGGTAGGCAGATCACCTGAGGTCGGGAGTTCGAGACCAGCCTGACCAACATGGTGACACCCCGTCTCTACTAGAAGTACAAAATTAGCCAGGCGTGGTGGCACGCGCCTGTAGTCCTAGCTACTCAGGAGGCTGAGGCAGGAGAATCATTTGAATCCGGGAGGCAGAGGTTGCAGTAAGCAGAGATCGTGCCACTGCACTCCAGCCTGGGCAACAGGAGCTGAGACTCCATCTCAAAATAAAATGAAATAAAATAAAGAAAAAAAGAAGAGCCTGCCATTGAAGGAGCTGTTTGGTAGGGGATGTTTTGTCAGTGCAAAAAACAGAAAAGTGGGCTGGGCACAGTGGTTCATGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGCGGGCGGATCACCTGAGGTTGGGAGTTCAAGACCAGCCTGACCAATATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCCAGGCGCAGTGGCGCATGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCTGGGAGGCAGAGGTTGCGGTGAGCCGAGATCGCACCATTGCACTCCAGCCTGGACAAGAGCAAAACTCTGTCTCAAAAAAAAAAACAGAAAAGTGTAACGAACACTTACAGTAGGCATGTTTCTTAGCAAATCTGATGACAAATTTGGCATAAAGGAAGAGAGCATCCCTAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAGAGAGCATCCTGCCTGGGCAACATAGTGAAACCCTGCCTCTACAAAAAAACTCAAAAATTGGCCGGTTGCAGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGTCGGAGGTGGGAGGATCACCTGAGGTCAGGAGTTCGAAACCAGCCAGGCCAACATGGCAAAACCCCGTCTCTACTAAAAATACAAAAAATTAATCAGGCACATTGGTGGGCGCCTGTAATCCCAGCTACTCAGGAAGCTGAGGCAAGAGGATCGCTTGAACCCGGGAGGTGGAGGTTACAGTGAGTCGAGATCACACCACTGCAACTCTAGCCTGGGTGACAGGGTGAGACTCCGTCTCCAAAAAAAAAAAGAAAGAAAAAGACTAAAAAATTAGCCAGGCAGGCCTCTGTGGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCACTGAGCCCAGGAGTCCGAGGCTGTAGTGAGCCATGATTGCACCACTGTACCCTAGCCTGGGCAACAAAGCAAGACCCTGCCTCAAAAATAAAGAAAAGAAAGAAAGAACATGGCGGGCCGGGCGCAGTGGCTCACACCTGTAATCCCAGCGCTTTGGGAGGCCGAGGCAGGCGGATCACAAGGTCAGGAGTTCCACACCAGCCTGGCCAATATGGTGAAACCCTGTCTCTACTAAAAAGACAAAAAATCAGCCAGGCATGGTGGCAGGTGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATTGCTTGAAACCAGAAGGCAGAGGTTGCAGTGAGCCTAGACTGCACCACTGCACTCCAGCCTGGGCGAAAAGAGCCAAACTCCATCTCAAAAAAAAAAAAAAAAAAACATGGCAAAGCCTTTGAAAGCTTGTCTGGGAGAATTTGCAATGATAGTTGCATAACTTCGCTGGCCCACACAGCGAAGATGTGCTCCACACAGGGGCTGCCCCTTGCTCTTTCTTGCTCTCTTGACCTCTCATATAACAGGCTCATGTGTTATTCACATTTATTGAGCCCAAGCAGGTGCAAGGCATTGTGATCTAATACTTTCGTCAGCAAGACAACAAGATAGATCACTGCCCTGCCCTTAGGAAGTGTATATGCTATTAGAGAAAACAGATTAAATAAACAAGGATAAGTATCAGACAATGTAAGTGCTATGAGAATGCAAATGAGGTGATGTGAATTAAAATAGGATGACTTGAAGTCTGCGCGGGAAGGAGCCTACCCCAGTGTTCCTGGCTAGCCAAGGAACCACCAGTTGATTATCAGAGAAGGGCAGCCAGTCTAGCTAGAGTTTTTGGGGAAGAGGGAGTGGTTTATAAGAGATGAGATTAAAGAAGCCGAGAAGGGCCAATTCGTGAGGGGTTTGTAACGCAGGGCTGAGGAGTGTCCCAAGAGAATGGGCAGGTGAGTGGTGAGACAGTTGTTCTTCCAGAAGCTTTGCAGTGAAAGGAATCAAAGAAATGGAGCCATGTATCAGGTGGGGAAGGGTGGGGGCCAAGGGGGTGTCCTTCCCCATACAGAGATTGCAGGCTGAGAACGACTGTATCCTTGTTAACAGGAGGTGGGAGCAGGGTGCAGTAGCTCACACCTGTAATCCTGGCACTTTAGGAGGCTGAGGCGGGCCGATCACCTGAGGTCAGGAGTTCGAGACCAACCTGGCCTACATGGCGAAGCCCCGTCTCTACTAAAAATACAAAAATTAGCTGGGTGTGGTGGTACTCGTCTGTAATCCCAGCTACTCGGGAGACTGAGGCAGGAGAATGGCTTGAACCCGGAAGGTAGAGGTTGCAGTGAGCTGAGATCATGCCACTGCACTCCAGCCTAGGTGACAGAGCGAGACTCCATCTCAAAAAAAAAAAAAAAAAAAAATACAGGAAGGGAGTTGAGAATAGGGTGCACCTTTAGGAAGTCTTGGGGATTTAGTGGTGGGAAGGTTGGAAGTCCCTCTCTGATTATCTTTTCCTCAAAGAAGTGCATGGCTGGTGAGGGGTGGGGCAGGAGTGCTTGGGTTGTGGTGAAAGATTGGAAGAGAGAATGTGAAGCAGCCATTCTTTTCCTGCTCCACGGGAAGCCGAGCTGTCTCAGACCCTGGCATGGTGTTGGGGGAGGGGGTACCTTCTCCGCAGTCCCAGGTGACCCAGGGTTGGAAGTGTCTCATGCTGGATCCCCACTTTTCCTCTTGCAGCAGCCAGACTGCCTTCCAGGTGACTGCCATGGAGGAGCCACAGTCAGATCCTAGCGTCGAGCCCCCACTGAGCCAGGAAACATTTTCAGACCTATGGAAACTGTGAGTGGATTCATTGGAAGGGCAGGTCCACCGTCCGCATCCCAACCCCAGCCCCCTAGCAGAGGCCTGTGGGAAGCAAAAAAATCCTTGGGACTGACTTTCTGCTCTTGTCTTTCAGACTTCCTGAAAACAACGTTCTGGTAAGGACAAGGGTTGGGCTGGGGACCTGGCGGGCTAGGGGCCTGGGGGGCTGGGGGGGCTGAGGACCTGCTCCTCTGACTGCTCTTTTCACCCATCTACAGTCCCCCTTGCCGTCCCAAGCGGTGGATGATTTGCTGCTGTCCCCGGACGATATTGCACAATGGTTCATTGAAGACCCAGGTCCAGATGAAGCTCCCAGAATGTCAGAGGCTGCTTCCCCTGTGGGCCCCGCACCAGCAGCTCCTATACCGGCGGCCCCTGCACCAGCCCCCTCCTGGCCCCTGTCATCCTCTGTCCCTTCCCAGAAAACCTACCAGGGCAGCTACGGTTTCCGTCTGGGCTTCTTGCATTCTGGGACAGCCAAGTCTGTGACTTGCACGGTCAGTGGCCCTGAGGGGCTGGCTTCCATGAGACTAAATTGCCTGGCCGTATACCCCTGCATTTCTTCTGTTTGGAACTTTGGGATTCCTCTTCACCCTTTGGCTTCCTGTCAGTGTTTTTTTATGGTTTACCCACTTAATGTGTGATCTCTGACCCCTGTCCCAAAGTTGAATATTCCCCCTTGAATTTGGGCTTTTATCCATCCCATCACACCCTCAGCATCTCTCCTGGGGATGCAGAACTTTTCTTTTTCTTCACCCACTTTTATTCCTTGGCTTTTGAAAATAAGCTCCTGACCAGGCTTGGTGGATCACGCCTGCAATCCCAGCTTTCTCAAAGAGGCCAAGGCGGGCAGATCACCTAAGCCCAGGAGTTCAAGACCAGCCTGGGTAACATGGTGAAACCTCGTCTCTACAAAAAGTACAAAAAATTAGCCAGGCATGGTGGCGCACACCTACAGTCCCAGCCACTCAGGAGGCTGAGGTGGGAAGATCACTTGAGCCCAGGAGATGGAGGCTGCAGTGAGCTGTGATCACACCACTGCGCTCCAGCCTGGGTGACAGAGCACGACCCTATCTCAAAAAAAAAAAAAAAGAAAAGAAAAGCTCCTGAGGTGTAGACGCCAGCTCTCTCTAGCTCGCTAGTGGGTTGCAGGAGGTGCTTACGCATATTTGTTTCTTTGCTGCCCTCTTCCGTTTGCTTTATTTGTTCACTTGTGCCCTGACTTTCAACTCTGTCTCCTTCCTCTTCCTACAGTACTCCCCTGCCCTCAACAAGATGTTTTGCCAGCTGGCCAAGACCTGCCCTGTGCAGCTGTGGGTTGATTCCACACCCCCACCTGGCACCCGCGTCCGCGCCATGGCCATCTACAAGCAGTCACAGCACATGACGGAGGTCGTGAGGCGCTGTCCCCACCATGAGCGCTGCTCAGATAGTGATGGTGAGCAGCTGGGGCTGGAGAGATGACAGGGCTGGTTGCCCAGGGTCCCCAGGCCTCTGATTCCTCACTGATTGCTCTTAGGTCTGGCCCCTCCTCAGCATCTTATCCGAGTGGAAGGAAATTTGCGTGTGGAGTATTTGGATGACAGAAACACTTTTCGACATAGTGTGGTGGTGCCCTATGAGCCGCCTGAGGTCTGGTTTGCAACTGGGGTCTCTGGGAGGAGGGGGTAAGGGCGGTTGTCAGTGGCCCTCCAGGTGAGCAGTAGGGAGGCTTTCTCCTGCTGCTTATTTGACCTCCCCATAACCCCATGAGATGTGCAAAGTAAATGGGTTTACCTATTGCACAGTTGAAAAAACTGAAGCTTACAGAGGCTAAGGGGCTCCCCTGCTTGGCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGCGGATCACGAGGTTGGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCGTCTCTACTGAAAAATACAAAAAAAAATTAGCCGGGCGAGGTGGCGGGCACCTGTAGTCCCAGCTACTCGGGAGGCTGAGGAAGGAGAATGGCGTGAACCTGGGAGGTAGAGCTTGCAGTGAGCCGAGATCACGCCACTGCACTCCAGCCTGGGCGACAGAGCAAGACTCTGTCTCAGGAAAAAAAAAAAAAAAAAAGGCCTCCCCTGCTTGCCACAGGTCTCCCCAAGGCCCCCTGGCCTCATCTTGGGCCTGTGTTCTCTCCTAGGTTGGCTCTGACTGTACCACCATCCACTACAACTACATGTGTAACAGTTCCTGCATGGGCGGCATGAACCGGAGGCCCATCCTCACCATCATCACACTGGAAGACTCCAGGTCAGGAGCCACTTGCCACCCTGCACACTGACCTGCTGTGCCCGAGCCTCTGCTTGCCTCTGACCCCTGGGCCCACCTCTTACTGATTTCTTCCATACTACTACCCATCCACCTCTCATCACATCCCCAGTGGGGAATCTCCTTACTGCTCCCACTCGGTTTTCTTTTCTCTGGCTTTGGGACCTCTTACCTGTGACTTCTCCTCCACTTACCTGGAGCTGGAGCTTAGGCTCCAGAAAGGACAGGGGTAGTTGGGAGTAGATGGAGCCTGGTTTTTGAAACGGGACAGGTAGGACCTGATTTCCTTACTGTCTCCTATCCTGAGTAGTGGTAATCTACTGGGACGGAACAGCTTTGAGGTGCGCGTTTGTGCCTGTCCTGGGAGAGACCGGCGCACAGAGGAAGAGAATTTCCGCAAGAAAGGGGAGCCTCACCATGAGCTGCCCCCTGGGAGCACTAAGCGAGGTAAGCAAGCAGGACAAGCAGCGGTGGAGGAGACCAAGGGTGCAGTTATGCCTCAGATTCACTTTTATCACCTTTCCTTGCCTCTTTCCTAGCACTGCCCAACAACACCAGCTCCTCTCCCCAGCCAAAGAAGAAACCACTGGATGGAGAATATTTCACCCTTCAGGTACTAAGTCTTGGGACCTCTTATCAAGTGGAAAGTTTCCAGTCTAACACTCAAAATGCCATTTTCTTCTTGACTGTTTTACCTGCAATTGGGGCATTTGCCATCAGGGGGCAGTGATGCCTCAAAGACAATGGCTCCTGGTTGTACCTAACTAACTTCAGAACACCAACTTATACCATAATATATATTTTAAAGGACCAGACCAGCTTTCAAAAAGAAAATTGTTAAAGAGAGCATGAAAATGGTTCTATGACTTTGCCTGATACAGATGCTACTTGACTTACGATGGTGTTACTTCCTGATAAACTCGTCGTAAGTTGAAAATATTGTAAGTTGAAAATGGATTTAATACACCTAATCTAAGGAACATCATAGCTTAGCCTAGCCTGCTTTTTTTTTTTTTTTTTTTGAGACAGAGTCTCACTCTGTCACTCAGGCTGGAGTGCAGTGGCAGGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCCACTGAGTAGCTGGGATTACAGGCACCCGCCCCGACGCCCAGCTAACTTTTTGTATTTTTTTTTTTTTTAGTAGAGATGAGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTTATGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACTGCACCTGGCCTGCCTAGCCTACTTTTATTTTATTTTTAATGGAGACAGCATCTTGCTCTGTTGCCCAGGCTGGATTACAGTGATGTGATCATAGCTCATTATACCCTCGAACTCCTGGGCTCAAGCAATCCCCCTACCTCTGCCTCCCGAGTAGCTAGGACCACAGGCGTACACCACCACACCCAGCTAATTTTTAAAATTTTTTGTAGGTAGATAGAGTCTCACTATGTTGCCCAGGCTGGTCTCTAGCCTACTTTTTTGAGACAAGGTCTTGCTCTGTCACCCAGGCTGGTGCAGTAGTGCAGTCACAGCTCACTGCAGCCTCCACCTCCTGGGCTCCATCCATCCTCCCAGCTTAGCCTCCCAAGTCCCTGGAACTACAGGCCCGCACCACCATGCCTGGCTAATTTTTATTTATTTATTTTATTTTATTTATTTATTTATTTTTTTGAGACTGAGTCTCGCTCTGTCACCCAGGCTGGAGTGCAGTGGCACGATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGCAGCTAGGACTACAAGCGCCTGCTACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTTCTGACCATGTGATCCGCCCGCCTTGGCCTCCCAAACTGCTGGGATTACAGGCGTGAGCCACCACACCCGGCTAATTTTTATTATGTATTTATTTAAAGACAGAGTCTCACTCTGTCACTCAGGCTAGAGTGCAGTGGCGCGATCTCAGCTCACTGCAGCCTTGACCTCTCTGAGCTCCGGTGATTTCACCCTCCCAAGTAGCTAGGACTACAGGCACGTGCCACGACACCCAGCTAATTTTTTATTTTCTGTGAAGTCAAGGTCTTGCTATGTTGCCCATGCTGGTATCAAACCCCTGGGCTCAATCAATCCTTCCACCTCAGCCTCCCCAAGTACTAGGGTTACAGGCATGAGCTACCACACTCAGCCCTAGCCTACTTGAAACGTGTTCAGAGCATTTCAGTTACCCTACAGTTGGGCAAAGTCATCTAACACAAAGCCTATTTTATAGTAATAAAATGTTGTATATCTCATGTGATTGATTGAATATTGTTACTGAAAGTAAGAAACAGCATGGTTGCATGAAAGGAGGCACAGTCGGGCCGGGCGCAGCCTGGGCGCAGAGCGAGACTCAAAAAAAGAAAAGGCCAGGCGCACTGGCTCACGCCTGTAATCCCAGCATTTCGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGGAACCCCGTCTCTACTAAAATACAAAAATTAACCGGGCATGATGGCAGGTGCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCGCTTGAACCGGGAGGCGGAGGTTGCAGTGAGCCAAGATGGCGCCACTGCACTCCAGCCTGGGTGATAGAGTGAGACTCCGTCTCAAAAAAAAAAGAAAAGAAACGAGGCACAGTCGCATGCACATGTAGTCCCAGTTACTTGAGAGGCTAAGGCAGGAGGATCACTTGAGCCCAAGAGTTTGAGTCCAGCCTGAACAACATAGCAAGACATCATCTCTAAAATTTAAAAAAGATCTGGGCACAGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGTGGAGGTGGGTGGATCACCTGACGTCAGGAGTTAGAAACCAGCCTGGCTAACATGGTGAAGCCCCATCTCTACTAAAAACACAAAAATTAGCCAGGTGTGGTAGCACATGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCACAAGAATCACTTGAACCCCAGAGACGGAGATGGCAATCAGCCAAGATTGCACCACTGCACTCCAGCCTGGGCAACAGAGCAAGACTCCATCTCAAAATAAATAAATAAATATTTTTAAAAGTCAGCTGTATAGGTACTTGAAGTACAGTTTCTACTAAATGCATGTTGCTTTTGTACCATCATAAAGTCAAACAATTGTAACTTGAACCATCTTTTAACTCAGGTACTGTGTATACTTATTTCTCCCGCTCCTCTGTTGCTGCAGATCCGTGGGCGTGAGCGCTTCGAGATGTTCCGAGAGCTGAATGAGGCCTTGGAACTCAAGGATGCCCAGGCTGGGAAGGAGCCAGGGGGGAGCAGGGCTCACTCCAGGTGAGTGACGTCAGCCCCTTCCTGGCCCTACTCCCCCTGCCTTCCTAGGTTGGAAAGCCATAGGATTCCATTCTCATCCGGCCTTCATTGTCAAAGGCAGCTGACCCCATCTCATTGGGTCCCAGCCCTGCACAGACATTTTTTTAGTCTTCCTCCAGTTGAATCCTATAACCACATTCTTGCCTCAGTGTATCCACAGAACATCCAAACCCAGGGACGAGTGTGGATACTTCTTTTACTTCCTTGCCATTCTCGGCCAACTCCCAGCACAGAGCTGGAGGGTCTCAAGGAGGGGCCTAATAATTGTGTAATATTGAATAGAGCCAGAGTTTCAGCTCATATACTCAGCCCTGCCATGCAGCGGCAGGTCCTAGGTGACCCCCGTCAGACTCAGTTTCCTTATATATAAAATGGGGTAAGGGGGCCGGGCGCAGTGGCTCACGAATCCCACACTCTGGGAGGCCAAGGCAAGTGGAGTCGGGAGTTTGAGCCCAGCCTGACCAACATGGAGAAACCCCATCACTACTAAAAATACAAAATTAGCCGGGCGTGGTGGCGCATGCCTGTAATCCCAGCTACCTACCCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCAGAGGTTGTGGTGAGCCGAGATCTCGCCATTACACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAATAAATAAAGTAAAATGGGGTATGGGAAGATGACGAGACTAATACACACTAATACTCTGAGGTGCTCAGTAAACATATTTGCATGGGGTGTAGCCACCATCTTGATTTGAATTCCTGTTGTCCCAGCCTTAGGCCCTTCAAAGCATTGGTCAGAAAAGGGGCACAGACCCTCTCACTCATGTGATGTCATCTCTCCTCCCTGCTTCTGTCTCCTACAGCCACCTGAAGTCCAAGAAGGGTCAGTCTACCTCCCGCCATAAAAAACTCATGTTCAAGACAGAAGGGCCTGACTCAGACTGACATTCTCCGCTTCTTGTTCCCCACTGACAGCCTCCCACCCCCATCTCTCCCTCCCCTGCCATTTTGGGTTTTGGGTCTTTGAACCCTTGCTTGCAATAGGTGTGCGTCAGAAGCACCCAGGACTTCCATTGGCTTTGTCCCGGGGCTCGACTGAACAAGTTGGCCTGCACTGGTGTTTTGTTGTGGGGAGGAGGATGGGGAGTAGGACATACCAGCTTAGATTTTAAGGTTTTTACTGTGAGGGATGTTTGGGAGATGTAAGAAATGTTCTTGCAGGTAAGGGTTCGTTTACAATCAGCCACATTCTAGGTAGGGGCCAACTTCACCGTACTAACCAGGGAAGCTGTCCCTCACTGTTGAATTTTCTCTAACTTCAAGGCCCATATCTATGAAATGCTGGCATTTGCACCTACCTCACAGAGTGCGTTGTGAGGGTTAATGAAATAATGTACGTCTGGCCTTGAAACCACCTTTTATTACATGGGGTCTAGAACTTGACCCCCTTGAGGGTGCTTGTTCCCTCTCCCTGTTGGTCGGTGGGTTGGTAGTTTCTACAGCTGGGCAGCTGGTTAGGTAGAGGGAGTTGCCAAGTCTCTGCTGGCCCAGCCAAACCCTGTCTGACAACCTCTTGGTGAACCTTAGTACCTAAAAGGAAATCTCACCCCATCCCACACCCTGGAGGATTTCATCTCTTGTATATGATGATCTGGATCCACCAAGACTTGTTTTATGCTCAGGGTCAATTTCTTTTTTCTTTTTTCTTTTTTTTTCTTTGTCTTTGAGACTGGGTCTCGCTTTGTTGCCCAGGCTGGAGTGGAGTGGCGTGATCTTGGCTCACTGCAGCCTTTGCCTCCCCGGCTCAAGCAGTCCTGCTTCAGCCTCCGGAGTAGCTGGGACCACAGGTTCACGCCGCCATGGCCAGCCAACTTTTGCATGTTTTGTAGAGATGGGGTCTCACAGTGTTGCCCAGGCTGGTCTCAAACTCCTGGGCTCAGGCGATCCGCCTGTCTCAGCCTCCCAGAGTGCTGGGATTACAAGTGTGAGCCCCCACGTCCAGCTGGAAGAGTCAACATCTTTTACATTCTGCAAGCACGTCTGCATTTTCACCCCACCCTTCCCCTCCTCCTCCCTTTTTATATCCCATTTTTATATCAATCTCTTATTTTACAATAAAACTTTGCTGCCAC\", \"moltype\": \"dna\", \"info\": null, \"type\": \"cogent3.core.sequence.DnaSequence\", \"annotations\": [{\"annotation_construction\": {\"type\": \"CDS\", \"name\": \"ENSPPYT00000009288\", \"map\": {\"spans\": [{\"start\": 10855, \"end\": 10929, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 11047, \"end\": 11069, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 11171, \"end\": 11450, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 12207, \"end\": 12391, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 12472, \"end\": 12585, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 13160, \"end\": 13270, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 13598, \"end\": 13735, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 13827, \"end\": 13901, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 16715, \"end\": 16822, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 17740, \"end\": 17822, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}], \"tidy\": false, \"parent_length\": 19009, \"termini_unknown\": false, \"type\": \"cogent3.core.location.Map\"}}, \"type\": \"cogent3.core.annotation.AnnotatableFeature\"}]}, \"Macaque\": {\"name\": \"Macaque\", \"seq\": \"ATGGAGGAGCCGCAGTCAGATCCTAGCATCGAGCCCCCTCTGAGTCAGGAAACATTTTCAGACCTATGGAAACTGTGAGTAGATCCATGGGAGGGGCAGACCCACTGTCCCCACCCCAACCCCAGCCCCCTAGCAGAGGCCTGTGGGAAGCAAAAAATCCGTGGGACTGACTTTTTGCTCTTGTCTTTCAGACTTCCTGAAAACAACGTTCTGGTAAGGACAAGGGTTGGGCTGGGGACCTGGCGGGCCGGGGGGCTGGGGACCTGGTCCTCTGACTACTCCTTTCACCCATCTACAGTCCCCCTTGCCGTCCCAAGCAGTGGATGATTTGATGCTGTCTCCAGACGATCTTGCACAATGGTTAACTGAAGACCCAGGTCCAGATGAAGCTCCGAGAATGTCAGAGGCTGCTCCCCCCATGGCCCCCACACCAGCAGCTCCTACACCGGCGGCCCCTGCACCAGCCCCCTCCTGGCCCCTGTCATCCTCTGTCCCTTCCCAGAAAACCTACCATGGCAGCTACGGTTTCCGTCTGGGCTTCCTGCATTCTGGAACAGCCAAGTCTGTGACTTGCACGGTCAGTGGCCTTGGGGGCTGGCTTCCATGAGACTTCAGTGCCTGGCCCTATACCCCTGCATTTCTTCTGTTCGGAACTTTGGGATTCCTCTTCACCCTTTGGCTTCCTGTCAGTGTTTTTTATAGTTTACCCACTTAACCTGTGATCTCTGACCCCTGTCCCAAAGTTGAATATTCCCCCTTGAATTTGGGCTTTTATCCATCCCATCACACCCTCAGCCTCTCTCCTGGGGATGCAGAACTTTTCTTTTTCTTCACCCACGCTTATTCCTTGGCTTTTGAAAATAACCTCCTGACCAGGCATGGTGGCTCATGCCTGCAATCCCAGCACTCTCAAAGAGGCCAAGGCGGGCAGATCACCTGAGCCCAGGAGTTCAAGACCAGCCTGGGTAACATGGTGAAACCTCGTCTCTACAAAAAAATACAAAAAATTAGCCAGGCATGGTGGTGCATACCTATAGTCCCAGCCACTCAGGAGGCTGAGGTGGGAAGATCACTTGAGCCTAGGAGATGGAGGCTGCAGTGAGCCATGATCATGCCACTGTGCTCTAGCCTGGGTGACAGAGCAAGATCCTATCTCAAAAAAAAAAAAACAGAAAAGCTCCTGAGGTGTAGACGCCAACTCTCTCTAGCTGCCTAGTGGGTTGCAGGAGGTGCTTACGCATATTTGTTTCTTTGCTGCCCTCTTCCGGTTGCTTTATTTGTTCACTTGTGCCCTGACTTTCAACTCTGTGTCCTTCCTCTTCCTACAGTACTCCCCTGACCTCAACAAGATGTTTTGCCAGCTGGCCAAGACCTGCCCCGTGCAGCTATGGGTTGATTCCACACCCCCACCCGGCAGCCGCGTCCGCGCCATGGCCATCTACAAGCAGTCACAGCACATGACGGAGGTCGTGAGGCGCTGCCCCCACCATGAGCGCTGCTCAGACAGCGATGGTGAGCAGCTGGGACTGGAGAGACGACAGGGCTGGTTGCCCAGGGTCCCCAGACCTCTGATTCCTCACTGATTTCTCTTAGGACTGGCCCCTCCTCAGCACCTTATCCGAGTGGAAGGAAATTTGCGTGTGGAGTATTCGGATGACAGAAACACTTTTCGACATAGTGTGGTGGTGCCCTATGAGCCGCCTGAGGTCTGGTTTGCAACTGGGGTCTCCGGGAGGAGGGGGTAAGGGCGGTTGTAGTGGCCCTCCGGGTGAGCAGCAGGGGGGCTTTCTCCTGCTTATTTGACCTCCCCATAACCCCATGAGATGTGCAGAGTAAATGGGTTCACCCATTGCACAGTTGAAAAGACTGAAGCTTACAGAGGCTAAGGGCCTCCCCTGCTCAGCCGGGCGCGGTGGCTCGTGCCTGTAATCCCAGCACTCTGGGAGGCCGAGGCGGGCGGATCACGAGGTCAGGAGATCAAGACCATCCTGGCTAACACGGTGAAACCCCGTCTCTACTAAAAAATACAAAAAACTAGCCGGGCGAGGTGGCGGGCGCCTGTAGTCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCGGGAGGCGGAGCTTGCAGTGAGCTGAGATCGTGCCACTACACTCCAGCCTGGGCGACGCAGCGAGACCCTGTCTCAAAAAAAAAAAAAAAGGCCTCCCCTGCTTGCCACAGGTCTCCCCAGGGCCCACTGGCCTCATCTTGGGCCTATGTTCTCTCCTAGGTTGGCTCTGACTGTACCACCATCCACTACAACTACATGTGTAACAGTTCCTGCATGGGCGGCATGAACCGGAGGCCCATCCTTACCATTATCACACTGGAAGACTCCAGGTCAGAAGCCATGTGCCACCCTGCACACTGGCCTGCTGTGCCCCAGCCTCTGCTTGCCTCTGACCCCTGGGCCCACCTCTTACTGATTTCTACCATACTACTACCCATCCGCCTCTCATCACATCCCCAGTGGGGAATCTCCTTACTGTTCCCACTCGGTTTTCTTTTCTCTGGCTTTGGGACCCGTTACCTGTGACTTCTCGTCCACCTACCTAGAGCTGGAGCTTAGGCTCCAGAAAGGACAAGGGTGGTTGGGAGTAGATGGAGCCTGTTTTTTTAAATGGGACAGGTAGGACGTGATTTCCTTACTGCCTCCTGCTTCTCTCTTCCTATCCTGAGTAGTGGTAATCTACTGGGACGGAACAGCTTTGAGGTGCGAGTTTGTGCCTGTCCTGGGAGAGACCGGCGCACAGAGGAAGAGAATTTCCGCAAGAAAGGGGAGCCTTGCCACCAGCTGCCCCCTGGGAGCACTAAGCGAGGTAAGCAAGCAGGACAAGAAGCGGTGGAGGAGACCAAGGGTGCAGTTATGCCCCAGATTCACTTTTATCACCTTTCCTTGCCTCTTTCCTAGCACTGCCCAACAACACCAGCTCCTCTCCCCAGCCAAAGAAGAAACCACTGGATGGAGAATATTTCACCCTTCAGGTACTAAAGTCTTGGGACCTCTTATCAAGTGGAAAGTTTCTAGTCTAACACTCAAAATGCCATTTTCTTTTTGACTGCTGTACCTGCAATTGGGGCATTTGCCATCAGGGGGCAGTGATGCCTCAAAGACAATGGCTCCTGGTTGTACCTAACTAACATCAGAACACCAACTTATACCATAATATATATTTTAAAGGACCAGACCACCTTTCAAAAAGAAAATTGTTAAAGAGAGCATGAAAATGGTTCTATGACTTTGCCTGATACAGATGCTACTTGACTTACGATGGTGTTACTTCCTGATAAACTCGTCGTAAGTTGAAAATATTGTAAGTTGAAAATGGATTTAATACACCTAATCTAAGGAACATCATAGCTTAGCCTAGCCTACTTTTTTTTTTTTTTTTTTTTGAGATGAAGTCTCACTCTGTCGCCCGGGCTGGAGTGCAGTGGCGGGATCTCGGCTCACTGCAACCTCTGCCTCCCAGGTTCAAGCGATTCTCCTGCCTCAGCCTACTGAGTAGCTGGGATTACAGGCACCCGCCACCACGCCCAGCTGATTTTTGGGTTTTTTTTTTGTTTTTTGGGTTTTTTTTAGTAGAGATGAGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTTGTGATCCACCTGCCTCGGCCTCCCAAAGTGCTGAGATTGCAGGCGTGAGCCACTGTACCCGGCCTGCTTTTTTTAGTCTACTTTTACTTTATTTTTAATGGAGACAGCATCTTGCTCTGTTGCCCAGGCTGGATTACAGTGATGTGATCATAGCTCATTATACCCTCGAATTCCTGGGCTCAAGCAATCCTGCCACCTCTGCCTCCCCAGTAGCTAGGACCACAGGCGTACACCACCACACCCAGCTAATTTTTTAAATTTTTTGTAGAGATAGGGTCTCACTGTAGTGCCCAGGCTGGTCTCTAGCCTACTTTTTTGAGACAAGGTCTTGCTCAGTCACCCAGACTGGATAGAGTGCAGTAGTGCAGTCACAGCTCACTGTAGCCTCCACCTCCCAGGCTCCATCCATCCTCCCAGCTCAGCCTCCCAAGTCGCTGGAACTATAGGCCCACACCACCATGCCTGCCTAATTTTTTTTTTTTTTTAATTATTATTATTTTTTTTTTGAGACGGAGTCTCACTCTGTTGCCCAGGCTGGAGTGCAGTGGCACAATCTCAGCTCACTGCAACCTCTGCCTCCCGGGTTCAAGCGATTCTCGTGCCTCACCCTACTGAGTAGCTGGGACTACAAGCGCCTGCCGCCACACCCGGCTAATTTTTGTATTTTTAGTAGAGATGGGGTTTCACTATGTTGGCCAGGCTGGTCTCAAACTCCTGACCATGTGATCCGCCCGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCATGCCCAGCTAATTTTTATTATTTATTTATTTATTTATTTTAAGACAGAGTCTGTCTCTCTCATTCAGGCTAGAGTGCAGTGGCACGATCTCAGCTCACTGCAGCCTTGACCTCCCCGGGCTTCAGTGATTTCAGCCCCCCAAGTAGCTAGGACTACAGGCACATGCCACGACACCCAGCTAATTTTTTATTTTCTGTGAAGTTAAGGTCTTGCTATGTTGCCCATGCTGGTATCAAACCCCTGGGCTCAATCAATCCTTCCACCTCAGCCTCCCCAAGTACTGGGATTACAGGCACGAGCTACCACACTCAGCCCTAGCTTAGTTGAAACATGTTCAGAACATTTAAGTTACCCTACAGTTGGGCAAAGTCATCTAACACAAAGCCTATTTTATAGTAGTGTTGTATATCTCATGTGATTTATTGAATATTGTTACTGAAAGTGGGAAACAGCATGGTTGCATGAAAGGAGGCACAGTCGGGCCGGGCACAGCCTGGGCACAGAGCGAGACTCAGAAAAGGCCAGGCACGGTGGCTCACACCTGTAATCCTAGCACTTTGGGAGGCCGAGGCGGGTGGATCACGAGTCCAGGAGATCGAGACCAGTCTGGCCAACATGGTGAAACCCCATCTCTACTAAAATACAAAAATTAACCAGGCATGATGGCGGGTGCCTGTAATCTCAGCTACTTGAGAGGCTGAGGCAGGAGAATCGCTTGAACCAGGAGGTGGAGTAGCAGTGAGCTGAGATGGCTCCACTGCACTCCAGCCTAGGCAATAGAGTGAGACTCTGTCTCAAAAAAAAAAAAAAGAAAAGAAACGAGGCACAGTTGCTTGCACCTCTAGTCCCAGTTACTTGAGAGGCTAAGGCAGGAGGATCACTTGAGCCCAAGAGTTTGAGTCCAGCCTGAACAACATAGCAAGACATCATCTCTAAAATCTAAAAAAGGGCCGGGTGGCCAGGCGCGGTGGCTCAAGCCTGTAATCCCAGCACTTTGGGAGGCCAAGATGGGCGGATCACGAGGTCAGGAGATCAAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTACTAAAAAATACAAAAAACTAGCCGGGCGTGATGGCGGGCGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGTGTGAACCCGGGAGGCGGAGCTTGCAGTGAGCTGAGATCCGGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAAAAATTTAAAAAAAAATTTAAAAAAAAAAAAAAAAAAAGGGCCGGGCACGGTGGCTCCCATCTGTAATCCCACCACTCTGGGAGGCGGAGGTGGGTGGATCACCTGACATCAGGAGTTGGAAACCAGCCTGGCTAACATGGTGAAGCCCCGTCTACTAAAAACACAAAAATTAGCCGGGTGTGGTGGCACACACCTGTAGTCCCAGCTACTCGGGAGGCTGAGGTACAAGAATCACTTGAACCCAGGAGGCGGAGATTGCAATGAGCTGAGATTGCGTCATTGCACTCCAGCCTGGGCGGCAGAGCAAGACTCCATCTCAAAAATAGAATCNNNNNNNNNNNNNNNNNNNNTTTTTTTTTTTGGAGACGGAGTCTCGCTGCGTCCCCCAGGCTGGAGTACAGTGGCGCGATCTCGGCTCACTGCGAGCTTCGCCTCCCGGGTTCACGCCATTATCCTGCCTCAGCCTCCTAAGTAGCTGGGACTACAGGCGCCCACTACCGCGACTGGCTAATTTTTTGTATTTTTAGTAGAGACGGGGTTTCACCGTGGTCTCGATCTTCTGACCTTATGATCCGCCCGCCTCGGCCTCCCAAAGTTCTGGGATTACAGGCATGAGCCACCGCGCCCGGCCAATAAATAAAGTTTTTAAAAGTCAGCTGTATAGATACTTGAAGTACAGTTTCTACTAAATGCATGTTGCTTTTGTACCATCATAAAGTCAAACAATTGTAGGTTGAACCATCTTTTAGCTCAGGTACTGTGTGTATATTTATTTCTCCCCCTCCTCTCTGGCTGCAGATCCGTGGGCGTGAGCGCTTCGAGATGTTCCGAGAGCTGAATGAGGCCTTGGAACTCAAGGATGCCCAGGCTGGGAAAGAGCCAGCGGGGAGCAGGGCTCACTCCAGGTGAGTGACCTCAGCCCGTTCCTGGCCCTACTCCCCTGCCCCCCTATGTTGGAAGCCATAGGATTCCATTCTCATCCTGCCTTCATGGTCAAAGGCAGCTGACCCCATCTCACTGGGTCCCAGCCCTGCACAGTTTTTTAGTCTTCCTCCAGTTGAATCCTATAACCACATTCTTGCTTCAGTGTATCCACAGAACCTCCAAACCCAGGGACAAGTGTGGATGTGTGGATAGTTCTTTGCCATTCTCAGCATCTCCGAGCCCAGAGCTGGAGGGTCTCAAGGAGGGGCCTCATAATTGTGTAATGTTGAGTAGAGCCAGAGTTTCAGGTCATATACTCAGCCCTGCCATGCACCGGCAGGTCCTAGGTGACCCCCGTCAGACTCAGTTTCCTTATCTATAAAATGGGGTAAAGGGGCCAGGCGCAGTGACTCACGCCTGTAATCCCAGCTCTCTGGGAGGCCGAGGCGGGTGGATCACCTGAGGTCTGGAGTTTGAGCCCAGCCTGACCAACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGTCGAGCGTGGTGGCGCATGCTTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCACTTGAACCCGGGAGGCGGAGGTTGCGGTGAGCCGAGACCCCGCCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAACTAAAAAAATAAAATAAAATGGGGTAAGGGAAGATGATGAGTCTAATACACGCCAATACTCTGAGGTGCTCAGTAAACATTTGCCTGGGGTGTGGCCATCATCTTGATTTGAATTCCCCTTGTCCCAGCCTTAGGCCCTTCAACGCATTGGTCAGGGAAAAGGGGCACAGACCCTCTCACTCATGTGATGTCGTCTCTCCTCCCTGCTTCTGTCTCCTACAGCCACCTGAAGTCCAAGAAGGGGCAATCTACCTCCCGCCATAAAAAATTCATGTTCAAGACAGAGGGGCCTGACTCAGACTGA\", \"moltype\": \"dna\", \"info\": null, \"type\": \"cogent3.core.sequence.DnaSequence\", \"annotations\": [{\"annotation_construction\": {\"type\": \"CDS\", \"name\": \"ENSMMUT00000042272\", \"map\": {\"spans\": [{\"start\": 0, \"end\": 43, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 218, \"end\": 577, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 1328, \"end\": 1512, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 1593, \"end\": 1706, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 2268, \"end\": 2378, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 2720, \"end\": 2857, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 2949, \"end\": 3023, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 6495, \"end\": 6602, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 7527, \"end\": 7609, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}], \"tidy\": false, \"parent_length\": 7609, \"termini_unknown\": false, \"type\": \"cogent3.core.location.Map\"}}, \"type\": \"cogent3.core.annotation.AnnotatableFeature\"}]}, \"Marmoset\": {\"name\": \"Marmoset\", \"seq\": \"ATGGAGGAGCCGCAGTCAGATCTCAGCATCGAGCCCCCGCTGAGTCAGGAAACATTTTCAGACCTATGGAAACTGTGAGTGGATCCAGGAGAAGGGCAGGCCCACCATCCCCACCCCAACCCCAGCCCCCTAGCAGGGTTCCCTGTGGGAAGCAAAAAAAAACAAATCCACTGACTTTCTGCTCTTGTCTTTCAGACTTCCTGAAAACAACATTCTGGTAAGGACAAGGGTTGGGCTGGGGACCTGGCAGGTTGTGGGGTTTGGTGGGTACCTGGTCCTCTGACTGCTCTTTTCACTCATCTGCAGTCCTCCTCGCTGTCCCAACCGGTGGATGATTTGATGCTATCCCCAGATGACATTGACATTGCACAATGGTTGAGTCAAGACCCGGTTCCAGATGAAGCTCCCACAGTTTCAGAGGCTCCTCCCGCCATGGCCCAGGCACCGGCAGCTCCTACATTAGTGGCCCCCACACCAGCCCCCTCCTGGCCCCTGTCATCCTCTGTCCCTTCCCAGAAAACCTACCATGGTGACTACGGTTTCCGTCTGGGCTTCTTGCATTCTGGGACAGCCAAGTCTGTGACTTGCACGGTCAGTGGCCCTAAGGGTCTGGCTTCCATGGACTCCCAATGCCTGGCCATACCCCCTGCATTTCCTTTGTTTGGAACTTCGGGATTCCTCTTCACCCTTTGGCTTCCTGTCAGTGTTTTTACAGCTTACCCATTTAATCTGTGATCTCTGACCCCTGTTTCAAAGTTGAATTTTTTCCCCTTGATTTTGAGCTTTTATCCATTCCGTCACACCCACAGCATCTCTCCTGTAGATGCAGAACTTTTTTTTTTCTTCACCCACATTCATTCCGTGGCTTTTGAAAATATGCTCCTGACCAGGCTCGGTGGCTCACTCCGGTAATCCCAGCACTTTGAGACGCCAAGGCAGGCAAATCACCTGAGCCCAGGAATGCAAGACTAGCCTGGGTAACATAGTGAAACTCCAACTCTGTCTCTACAAAAAACTTGGTTGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGTGGGAGTTCGAGCCAGCCTGGCTAACATGCTGAAACTCCGTCTCTACTAAAAATACAAACATTAACTGGGCGTGGAGGCAGGCACCTGTAATCCTGGCTACTCGGGAGTTTGAGGCTGGAGAATCGCTTGAACCCAGGAGGTTGCAGAGAGCCAAGTCCAGGCCATTGCACTCTAGCGTGTGACAGAGCGAGACTCCATCTCAAAATATACATATATAAAATTAGCCAGGCATGGTGGTGCACACCTATAGTCCCAGCCACTCAGATGACTGAGGTGGGAAGATCGCTTGAGCCTGGGAGGTGGAGGCTGCAGTGAACTGTGATCATACCACTGTGCTCCAGCCTGGGTCACAGAGCAAGACCCTATCTCCAAAAAAATAAGCTCCTGAGGTGTAGATGCCAACCCTCTCTAGCTCCCTAGTGGCTTGCAGGAGGTGCTTACGCGTATTTGTTTCTTTGCTGCCCTCTTCCGGTTGCTTTGTTTGTTCACTTGTGCCCTGACCTTCAACTCTCTCTCCTTCTTCCTACAGTACTCCCCTGCCCTCAACAAGATGTTTTGCCAGCTGGCCAAAACCTGCCCCGTGCAGCTGTGGGTTGATTCCACACCCCCACGTGGCACCCGCGTCCGCGCCATGGCCATCTACAAGCAGTCACAGCACATGACGGAGGTCGTGAGGCGCTGCCCCCACCATGAGCGCTGCTCAGATAGCGATGGTGAGCAGTTGGGTCTGGAGAGCAGATGGGGCTGGCTACCCAGTGTCCCCAGTCCTCTGACTCCTCACTGATTGCTTTTAGGTCTGGCCCCTCCTCAGCATCTTATCCGAGTGGAAGGAAATTTACATGTGGAATATTTGGATGACAAAAACACTTTTCGACATAGTGTGGTGGTGCCCTATGAGCCGCCTGAGGTCTGGTTTGGCAACTGGGGTCTCTGGAAGGGGGGGTAAGGGTGGTTGTCAGTGGCCATCCAGGTGACCAGTAGGGGGGATTTCTCCTGCTTCTTATTTGACCTCCCCATAATTCCACAAGATGTGCAGAGTAAATGGGTCTACCCATTGCACAGTTGAAAAAACTGAAGCTTACAGAGGCTAAAGTCATCCCCTGTTCGCCACACATCTCCCCAAGACCCTCACCTTGGGCCTACGTTCTCTCCCAGGTCGGCTCTGATTGTACCACCATTCACTACAACTACATGTGTAACAGTTCCTGCATGGGCGGCATGAACCGGAGGCCCATCCTCACCATCATCACTCTGGAAGACTCCAGGTCGGGAGCCACATGCTGCCCTGCACACTGGCCTACTCCTCCCCAGTCTCTGCCTGCCTCTGACCCTTGGACCCACTTCTTACTGATTTCTTCCATACTACTACCCATCCTCCTCTCATCACATTCCCAGAGGGGAATCTCCTTACTGCTCCCGCTCTGTTTGCTTTTCTCTCACTTTGGGACCTCTCTTACCTGTGGTTTCTCCTCCACCTACCTGGAGCTGGAGCTTAGGCTCCAGAAAGGACGAGGGTGGTTGGGAGTAGATGGAGGCTGGTTTTTTTCAACAGGACAGGTAGGACGTGATTTCTTTATTGCCTCCTGCTTCTCTCTTCCTATCCTGAGTAGTGGTAATCTGCTGGGACGGAACAGCTTTGAGGTGCGCGTTTGTGCCTGTCCTGGGAGAGACCGGCGCACAGAGGAAGAGAATTTCCGTAAGAAAGGGGAGCCTTGCCTCGATCTGCCCCCTGGGAGCACTAAGCGAGGTAAGCAAGCAGGACAAGAGGTGATGGAGGAGACCAAGGGTGCAGTCCTGCCCTGGATTCACTCTTTTATCACCTTTCCTTGCCTCTTTCCCAGCAATGCCCAATAGCACGAGCTCCTCTCCCCAGCCAAAGAAGAAGCCACTGGATGGAGAATATTTCACCCTTCAGGTACCAAGTCTTGAGACCTCTTATCAGGTTGAAAGTTTCCAGTCTAACACTAAAAATGCCATTTTCTTCTTGACTGCTTTGCCTGCAATTGGGGCATTTGCCATCAGGGGGCAATGATGCCTCAAAGACAATGGCTCCTGGTTGTACCTAACTAACTTCAGAATACCAACTTATACCATAATATATATTTTAAAGGACCAGACCACCTTTCAAAAAGAAAATTGTTAAAGAAAGCATGAAAATGATTCTATGACTTTGCCTGATACAGATGCTACTTGACTTACGATGGTGTTACTTCCTGATAAACTCATTGTAAGTTGAAAATATTGTAAGTTGAAAATGGATTTGATACACCTAACCTAAAAGGAACATCATAGCTTAGCGTAGCCTACATTTATTTTTAATGGAGACAGCATCTTGTTCTGTTAACCCAGACTGGATTACAGTGACATGATCATAGCTCATTATACCCTTGAATTCCTGGGCTCAAGCAATCTTCTCACCTCTGTCTCCCTAGTAGCTAGGACCATTAGTATATGGCACCACTCCCAGCTAATTTTTAAAATTTTTGTAGAGATAGGGTCTCACTATGTTGCCCAGGCTGGTCTCTAGCCTACTTTTTTGAGACAAGGTCTTGCTCTGTCACCCAGGCTGGATAGAGTGCAGTAGTAGTGCAGTCACAGCTCACTGCAGCCTCCACCTCCCAGGCTCAGACCATCCTCCCAGCTCAGCCTCCCAAGTCTCTGGATCTATAGGCCCACACCACCATGCCTGGCTAATTTTTATTTTGTAATCATTTTATTTATTTATTTATTTTTAAGACAGTCTCACTCTGTTGCTCAGGCTAAAGTGGCACAATCTCAGCTCACTGCAGCCTTGACTTCCCTGGGCTCAGGTAATTTCAGCCTGCCAAGTAGCTAGGACTATAGGCACATGCCACCACACCCGGCTAACTTTTTTATTTTCTATGAAGTTGAGGTCTTGCTATGTTGTCCATGCTGCTATCAAATCCCTGGGCTCAATCAGTCCTTCCACCTCAGCCTCCCCAAGTATTGGGATTACAGGCATGAGCTACCACACTCAGCCCTAGCCTACTTTAAACATGCTCAGAACATTTAAGTTACCTTTACCCTACAGTTGGGCAAAGTCATCTAACACAGAGCCTATTTTATTGTAATAAAGTGTTGGATATCGTGATTTATTGAATATTGTACGGAAAGTAGGAAACAGTACGGTTACGTGAAAGGAGACACAGTCGGGCTGGGCACAGCGAGGCTCAAAAAAAAGAAAAGGCCAGGCGTGGTGGCTCATGCCTGTAATTTTAGCACTTTGGGAGGCCAATGCAGGCAGATCACCTGAAGTCAGCAGTTCAAGACCAGCCTGGCCAACATGGTAAAACCTGTCTCTACTAAAAAATACAAAAAGTAGCCGGGCGCGTTGGCTCACGCCTGTAATCCCAGCACTTTAGGAGGCCAAGGCGGGTGGATCACAAGGTCAAGAGATCGAGACCATCCTGGTCAACATGGTGAAACCCCGTTTCTACTAAAAATGCAAAAAATTAGCTGGGCATGGTGGCAGGTGCCTGTAATCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATTGCCTGAACCCAGGAGGCAGAGGTTGCAGTGAGCCGAGATCGCGCCATTGCTCTCCGGCCTGGGTAACAAGAGCGAAACTCCGTCTCAAGAAAAAAAAAAGAAAGAAAAATACAAAAAGTAGCTGGGCATGGTGGTGTGTGCCTGTAGTCTCAGCTACTCAGGAGGCTGAGGCAGGAGAATCACTTAAACCCAGGAGGCTGAGGTTCCGGTGAGCTGAGATCACATCATTGCACTCCAGCCTGGGTGACTGACGAGACTCTGTCTAAAAAAAAAGGGAGGGGGCGGGGCTAGTGGCTCACGCCTGTAATTCTAGCATTCTGGGAGACCGATGTGGGTGGATCACCTGAGGTCAGGAGTTCAAAACCAGCCTGGCCATCATGGTGAAACCCCATCTTTAAACAAAATAATTAAAAAAAAAAAAAAAGAAAGAAACGAAACGAAGCACAGTCACATGCATCTGTAATCCCAGCTACTCGAGAGGCTAAGGCAGGAAGATCACTTGAGCCCAGGAGTTTGAGTCCAGCCTGGACAACATAGTAAGACATCATCTCTAAAATTTAAAGAAGGGCCAGGCACAGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGTAGAGGTGGGTGGATCACCTGATGTCAGGAGTTCGAAACCAGTCTGACTAACATGGTGAAACCCCGTCTCTATTAAAACACAAAAATTAGCCAGTATGGTGGATTACGCCTGTAGTCTCAGCTACTCAGGAGGCTGAGGCACAAGAATCATTTGAACCCTGGAGGCAGAGATTGCAATGAGCCAAGATCGCACCAATACACTCCAGCCTGGGCAACAGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAAAAATAGAATTTTTTAAAAAAGTCAGTTGTATGGTTACTTGAAGTACAGTTTCTACTAAATGCATGTTGCTTTTGTACTATCATTAAGTCAAAAAAAATTGTAAATTGAACTATCTTAACTCAGTGACTGTGTATACGTATTTCTCCCCCTCCTCTCTTGCTGCAGATCCATGGGCGTGAGCGCTTTGAGATGTTCCGAGAGCTGAATGAGGCCTTGGAACTCAAGGATGCCCAGGCTGGGAAGGAGCCAGGGGGGAGCAGGGCCCACTCCAAGTAAGTGACCACAGCCCCTTCCTGGCCCCACTCTCCTGCCTTCCTATGTTACAAAGCCATAGGATTCCATCCTCATCCTGCCTTTATGGTAAAAGGCAGCTGATCCTGTCTCATTGGGTCCTAGCCAGGCACAAACTTTTTTTTTAGTCTTCCTCCAGTTGAATCATAACCACATTCTTGGCCGGGCACAGTAACTCATGCCTTTAATCCCAGCACTTTGGGAGGCCAAGGCGGGCGGATTACGAGGTCAGGAGATTGAGACCATCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCTGGGCGTGGTGGCACGCACCTGTAGTCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCGCTTGAATCCAAGAGACAGAGGTTACTGTGAGCTGAGATTGTGCCACTGCATTCTAGCCTGGCAACAGAGCAAGACTCCATCTCAAAAAAAAAAAAATGTGGTAAGGGAAGATGACGATACACTCTGAGGTGCTCAGTAAAAGTAAACATTTGCATGTGGTGTGGCTCAAATTCCCCTTGTACCAGCCTTAGGCCCTTCAAAGCCTCAGTCAGGGAAAAGCGGCACAGATCCTCTGACTCATGTGATGTATCTCTTCTCCCTGCTTCTGTTTGCTACAGCCACCTGAAGTCCAAGAAGGGGCAGTGTACCTCCCGCCATAAAAAACTAATGGTCAAGAGAGAGGGACCTGACTCAGACTGA\", \"moltype\": \"dna\", \"info\": null, \"type\": \"cogent3.core.sequence.DnaSequence\", \"annotations\": [{\"annotation_construction\": {\"type\": \"CDS\", \"name\": \"ENSCJAT00000029236\", \"map\": {\"spans\": [{\"start\": 0, \"end\": 74, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 195, \"end\": 217, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 306, \"end\": 591, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 1600, \"end\": 1784, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 1865, \"end\": 1978, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 2226, \"end\": 2336, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 2681, \"end\": 2818, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 2912, \"end\": 2986, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 5634, \"end\": 5741, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 6394, \"end\": 6476, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}], \"tidy\": false, \"parent_length\": 6476, \"termini_unknown\": false, \"type\": \"cogent3.core.location.Map\"}}, \"type\": \"cogent3.core.annotation.AnnotatableFeature\"}]}, \"Human\": {\"name\": \"Human\", \"seq\": \"GTTTTCCCCTCCCATGTGCTCAAGACTGGCGCTAAAAGTTTTGAGCTTCTCAAAAGTCTAGAGCCACCGTCCAGGGAGCAGGTAGCTGCTGGGCTCCGGGGACACTTTGCGTTCGGGCTGGGAGCGTGCTTTCCACGACGGTGACACGCTTCCCTGGATTGGGTAAGCTCCTGACTGAACTTGATGAGTCCTCTCTGAGTCACGGGCTCTCGGCTCCGTGTATTTTCAGCTCGGGAAAATCGCTGGGGCTGGGGGTGGGGCAGTGGGGACTTAGCGAGTTTGGGGGTGAGTGGGATGGAAGCTTGGCTAGAGGGATCATCATAGGAGTTGCATTGTTGGGAGACCTGGGTGTAGATGATGGGGATGTTAGGACCATCCGAACTCAAAGTTGAACGCCTAGGCAGAGGAGTGGAGCTTTGGGGAACCTTGAGCCGGCCTAAAGCGTACTTCTTTGCACATCCACCCGGTGCTGGGCGTAGGGAATCCCTGAAATAAAAGATGCACAAAGCATTGAGGTCTGAGACTTTTGGATCTCGAAACATTGAGAACTCATAGCTGTATATTTTAGAGCCCATGGCATCCTAGTGAAAACTGGGGCTCCATTCCGAAATGATCATTTGGGGGTGATCCGGGGAGCCCAAGCTGCTAAGGTCCCACAACTTCCGGACCTTTGTCCTTCCTGGAGCGATCTTTCCAGGCAGCCCCCGGCTCCGCTAGATGGAGAAAATCCAATTGAAGGCTGTCAGTCGTGGAAGTGAGAAGTGCTAAACCAGGGGTTTGCCCGCCAGGCCGAGGAGGACCGTCGCAATCTGAGAGGCCCGGCAGCCCTGTTATTGTTTGGCTCCACATTTACATTTCTGCCTCTTGCAGCAGCATTTCCGGTTTCTTTTTGCCGGAGCAGCTCACTATTCACCCGATGAGAGGGGAGGAGAGAGAGAGAAAATGTCCTTTAGGCCGGTTCCTCTTACTTGGCAGAGGGAGGCTGCTATTCTCCGCCTGCATTTCTTTTTCTGGATTACTTAGTTATGGCCTTTGCAAAGGCAGGGGTATTTGTTTTGATGCAAACCTCAATCCCTCCCCTTCTTTGAATGGTGTGCCCCACCCCGCGGGTCGCCTGCAACCTAGGCGGACGCTACCATGGCGTGAGACAGGGAGGGAAAGAAGTGTGCAGAAGGCAAGCCCGGAGGTATTTTCAAGAATGAGTATATCTCATCTTCCCGGAGGAAAAAAAAAAAGAATGGGTACGTCTGAGAATCAAATTTTGAAAGAGTGCAATGATGGGTCGTTTGATAATTTGTCGGAAAAACAATCTACCTGTTATCTAGCTTTGGGCTAGGCCATTCCAGTTCCAGACGCAGGCTGAACGTCGTGAAGCGGAAGGGGCGGGCCCGCAGGCGTCCGTGTGGTCCTCCGTGCAGCCCTCCGGCCCGAGCCGGTTCTTCCTGGTAGGAGGCGGAACTCGAATTCATTTCTCCCGCTGCCCCATCTCTTAGCTCGCGGTTGTTTCATTCCGCAGTTTCTTCCCATGCACCTGCCGCGTACCGGCCACTTTGTGCCGTACTTACGTCATCTTTTTCCTAAATCGAGGTGGCATTTACACACAGCGCCAGTGCACACAGCAAGTGCACAGGAAGATGAGTTTTGGCCCCTAACCGCTCCGTGATGCCTACCAAGTCACAGACCCTTTTCATCGTCCCAGAAACGTTTCATCACGTCTCTTCCCAGTCGATTCCCGACCCCACCTTTATTTTGATCTCCATAACCATTTTGCCTGTTGGAGAACTTCATATAGAATGGAATCAGGCTGGGCGCTGTGGCTCACGCCTGCACTTTGGGAGGCCGAGGCGGGCGGATTACTTGAGGATAGGAGTTCCAGACCAGCGTGGCCAACGTGGTGAATCCCCGTCTCTACTAAAAAATACAAAAATTAGCTGGGCGTGGTGGGTGCCTGTAATCCCAGCTATTCGGGAGGGTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCAGAGGTTGCAGTGAGCCAAGATCGTGCCACTACACTCCAGCCTGGGCGACAAGAACGAAACTCCGTCTCAAAAAAAAGGGGGGAATCATACATTATGTGCTCATTTTTGTCGGGCTTCTGTCCTTCAATGTACTGTCTGACATTCGTTCATGTTGTATATATCAGTATTTTGCTCCTTTTCATTTAGTATAGTCCATCGATTGTATATCCGTCCTTTTGATGGCCTTTTGAGTTGTTTCCCATTTGCGGTTATGAAATAAAGCTGCTATAAACATTCTTGTACAATTCTTTTTGTGATCATATGTTTTCGTGTTTCTTGGAGAAATACTTAGGAGGGGAATTGCGAGTTTGGAAGTAAAAAGTAGCTGTATTTTGAACTTTTTCAGAAGCTCTGAGTTTTCCAGAGCGGTTGTACCATTTTACACTCCAACTAGCAAGGTATGGGAGTTATTATGGTTGTGCCACAGCCTTCCGGACATTAGGTATTGTCAGTCTTTCTAATGTGGTATATCCTTGTGGTTGTAATTTACAGTTCTCTATTGACTAAGGATGTTCAGCATTTTTTCATGTGCCTATTGGCCATTCGTATTTTGTTTGTAAAGTAGCTCTTCGAGTCTTTTACCTGTTATTTTGGTTTTTTGTTTGTTTTTATTGTTCAGTTGTGGGACTGCTTTATACATTCTGGATACAAGTCCTTTATCAGATCCATGTGTCGTGAATGTTTTCTTCTGATCTGTTGCTTGCCTATTTGTTTGCTTTACAGAGTTTACAGTATCTTAAGAGGAGTGGATTTATCTTTTTTATGTTCAGTATTTGCCTTGTCCTGTTTAGGACATCTTTTTTTTTTTTTTTAACCCCAGGGTCATGAAGATATTATCTTACATTTTCTTTTAGGACCTTTATGGTTGTAAGTTTTACAGTAAGGTCCTTGAGCCATTAATTAATTCTTAAAATTAATTGTTTATGGTGTGAGGTGTAGGAGTCAGTCTCTGGTATCTTTCCTGTATGGAAATCCAGTTATTCTGTCTCCACTTGTTGAAATAGGCTTCCTTTCTCTACTGAATGCTTTTAATTTTAATTATTTTACAGTTGGAGTATAGGGCTACCATTTTAGTGCTATTTTCTTTTTTTCTTTGTTAATTTTTGAGACAGGGACTCACACTGTTGCCCAGGCTAGAGTACAATGGCACAATCAAGGCTTACTGCAGCCTCGAACCCCTGGGCTCAAGCAGTCCTCTAGCAGCCTCACGAGTAGCTGGGATTACTCCACCACACCCAGCTAACTATTTTATTTTTTTGTATTGACAGGATCTCACTATGTTGCCCAGGCTGGTCTCAAACTGCTGGCCTCAAGCTTTCATCCCATCTCGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCATGCCTGACCTCTTAGTGCTATTTTCTATTTATCTCCTCTGTTCTCTGCTCTCTTTAAACGTTGGAGGAAGAAACAGTACCCATCTTACACAAACTCTTCAGAAAACAGAGGAACAGACTGGGCGCGGTGGCTCATACCTGTAATCTCAGCACTTTGGTACGCTGAGGCAGGGGATCATTTGAGGTCGGGAGTTCGAGACCAGCCTGGCCAACACGGCGAAACCCCATCTCTACTAAAAATACAAAAAGTAGCTAGGCGTGGTGACACATACCTGTAATGCCAGTTACTCAGGAGGCTGAGGCACAAGAATCCCTTGAACCTGGGAAGCGGAGGTTGCAGTGAGCCGAGATTGCGCCACTGCACTCCAGCCTGGGCAACAGAGTGAGACCCTGTCTCAGAAAAAAAAAGAAAGAAAGAAAAAATAGAGGAATATTTCCCAACTTGTTTTCGAAGCCAGCATAATCCTGGTACCAAAACCAAACAAGGACATTATAAGAAAAGAAAATATAGACCAATATTCCTGTTAGCATAGACATGCAACAGCTAACCAATTTTAGCAAACCAAACCTGGTAATATAGAAAAAAGGATAAATAGGCCAGTCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGCAGGCAGATCACTTGAGGTCAGGAGTTTGAGACCAGCCTGACCAACATGGTGAAACCCCGTTTCTAATAAAAATACAAAAATCAGGCTGGGCACGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGCAGATCACGAGGTCAGGAGTTCAAGACCAGCCTGACCAATGTGGTGAAACGCCATCTCTACTAAAAATACAAAAATCAGCCGGTGTGGTGGCACCTGCCTGTAATCCCAGCTACTCAGGAGGCTGAGGCAGAATTGCTTGAACCCGGGAGGCAGAGGTTGCAGTGAGCCAAGATCGTGCCACTGCACTCCAGCCTGGGCGACAGAGCAAGACTTCATCTCAAAAAAAAAAAAAAATTAGCTGGGCATGGTGGTGGGCACCTGAAATCCCAGCTACTCGGGAGTCTGAGGCAGGAGAATCGCTTGAACCCAGGAGGCAGAAGTTGCACTGAGCTGGGATCACACCATTGCACTCCAGCCTGGGCAACAGAGTGAGACTCCATCTCAAAAAAAGAAAAAGAAAAAGGATAAATACATTCTAACCAAATAATGTTTATCTCATGATTGTAGCTGATTCAACATTCAAAAATTGGCCTGGTGCAGTAGCTCAGGCCTGTAATCCCAACATTTTAGGAGGCTGAGGCAGGAAGATCTCTTGAGCCCAGGATTTCAAGACCAGCCTGGGCAACATAGTCAGACTGGTCTTTACTGGGGGGAAAAAAATCAGTCTGTGTAATTCACCACATTAACAAAGGGAAACATAAAAACCCTATGATCATTTCAACAGATGTAGCAAAAGCAGTTAATGATATTCAACACATATGCATGATTACAAACCAACCAACCTCCTAGCAAACTAGGGAAAGGAAACTTAACCTAGTTTGATAACAGGGCGTCCACAGTCGGAGTTCCACTAGCAGCATACATAATGGTAGAAAACTCAGTGCTGCCGGGCGCGGTGGCTCACGCCTGTAATGCCAGCACTTTGGGAGGCCTAGGCGGGCGGATCACGAGGTCAGGAGATCGAGACTGTCCTGACTAGCATGCTGAAACCCCGTCTCTACTAAAAATACAAAAACAAAAAATTAGCCGGGCATGGTGGCGGGCGCCTATAGTCCCAGCTACTCGGGAGGCTGAGGCGAGAGAATGGCGTGAACCCGGGAGGCGGAGCTTGCAGAGCCTAGATCGTGCCACTGCACTCCAGCCTGGGTGACAGAGTGAGACTTCGTCTCAAAAAAAAAAAAAAAAAAAAAAGAAAAGAAAACTCAACGCTTTTTCCTCTAAGATCAGGAACTAGAAAAGGATTTGACTCTCACAACGTTGATACCATACTGGAGGTTTTAACCAGGCAAGAAAAAGAAATAATGAGGGCCGGGTGCGGTGGCTCAGGCCTGTAATCCCAGCACTTTGGGAAGCCGAGACGGGTGGATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCTGTCTCTACTAAATATACAAAAAATTAGCCGGGCGTAGTGGCGGGCGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACTCAGGGGGCGGAGCTTGCAGTGAGCTGAGATCGAGCCACTGCACTCCAGCCTGGGCGACAGAGCAAGACTGTGTCTCAAAAAAAAAAAAAGAAAAAGAAATAATGATTAGTGGCCCGATGTCTCACGCCTATAATCCCAGCACTTTGGGAGGCCGAGGTGGGCAGATCACCTGAGGTCTGGAGTTGGAGACCAGCCTGACAAAGATGGTGAAACCTCGTCTCTATTAAAATATTAAAAAAATAGCCAGGCGTTGGCCGGGTACAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGTGGATCACCTGAGGTCAGGAGTTCAACACCAGCCTGGCCAACATGGTGAAACCCCATCTCTACTAAAAATACAAAAATTAGCCGGGCGTAGTGGCGGGCGCCTGTAATCCCAGCTACTTGGGAGGCTTAGGCAGGAGAATCGCTTGAACCTGGGAGGCGGAGGTTGTAGTGAGCCGAGATTGCACCATTGCACTCCAGCCTGGGTGACAAAAGCAAAAACTCCGTCTCAAAAAAAAAAGAATTAGCCAGGGGTAGTGGTGAACGCCTGTAGTCCCAGCTACTCAGGAGGCAGAGGCAGGAGAATCACTTGAACCCAGGAGGCAGAGGTTGCAGTGAGCCGAGATTGTCCCATTGCACTCCAGCCTAGGCGACAAGAGCAAAATTCCATGTCAAAAAAAAAAAAAAAAAAGGAAAGAAAAAAAATAACGATTAGAAAGGAAGAAATAAAACACATTCACAGCCAGTATGATTCTATACATACATGTCCTAATGGGGCCAGGCGTGGTGGCTCATGCCTGTAATCCTAGCACTTTTAGGAGGCTGAGGCAGGTGGCTTCCCTGGGACCAGCCTGGCCAACATGGTGAAACCCCAACTCTAATAAAAATACAAAAAATCAGCCAGGCGTGGTGACGGGCACCTCTAATCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATTGCTTGGACCTGGGAGGCAGAGGTTGCAGTGAGCCGAGATCGCGCTATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCGGCAGGGTGTGGTGGCTTACGCCTGTAATCCCAGCACTTCGGGAGGCTGAGGCAGGCCGATCACCTGAGGTCAGGAGTTTGAGACCAACCTAACATGGTGAAACCCCGTCTCTACTAAAAATACAAGAATTAGCTGGGTGTAGTGGTGGGCGCCTGTAATCCCAGCTACTTGGGAGGCTGAGACAGAAGAATTGCTTGAACCCAGGAGGTGGAGGTTGCAGTGAGCTGAGATCATGCCATTGCACACCACGCCGGGCAACAGAGCGAGATTCCGTCTCAAAAAAAAAAAAAAAGAGTGAAACTCTATCTCAAAAAAAAAAAAAAGTCCTAATGGAAAATCCATAAAAAGCTACCAAAACTAATAAATAAATATAGCAGGGTTGCAGGTTACAGGGCAATATAGTTATCCCTCTATCTGTAGGGGCTTGGTTCTGGGACTCCTCACACACCAAACCCACAGATGTCTAAGTCCCATATATAAGACGGTATAGTATTTGGATTTAACCTACACATATCCTCCCATATAGTTTAAATTATCTCTAGATTACTTACATTACCCCCATACAATGAAAATGCTAATGTACATGCAAGTATGTATGTAAGTACTTGTACTATATTGTTTAGGGAATCACTGGACATATAGGCCTTCAAGACTGATACCAGCAGCCACTGTTAAGATTCTGGTCAGGCCTGCCCCTGTTTGGGGTCTCAGTTGATCTCATTGCCTTCCCACCCAGCCAAGGGCACCTGCATTTCTCTTGGCTCCCTGGCCATTTGGAAGGCCTAGTTCAGCCTGGCACATTTGTATCCTGGCCCACTGATGCTGGTACCCCTGGGAAGGTCCTGCTCTGAAAAACACGGAGATTTTAGTTGCTACTGAAGATTTGAGAGATAAAGACAGGGAGACCTGTCTGTAGACCTGTGTCCCTCCAAGTGGGATTGAGACTTTGGGCCCCCCATTTCAGGACAGCACCTCCTGGCCTGTTGACTGAATAGATCCCTGAAGGAGGTGTACTTGCATTAATGGAGTGGGGGTGGGAGCAGTACCACAGATCCGCACTAACAATCACACAGTTCTCTCTAGAATAATAATATAGAACAAGTGAAATAGAACAATTGCAGAAAGAGCTAACCTTTGTTGAGCTCTTACTGTGTGCCCAGCACTTTCCTCAACTCTACATTTCCCATAATACACAGAGTACTAGGTAGGCCAGGCTTGGTGGCTCACGCCTGTAATCCCAGCACTTTAGGAGGCCAAGGGGGGTGGATCACCTGAGGTCGGGAGTTCAAGACCAGCCTGACCAACATGGTGAAACCCCGTCTCTACTAGAAGTACAAAATTAGCCAGGTGTGGTGGCACATGCTTGTAGTCCTAGCTACTCAGCAGGCTGAGGCAGGAGAATCATTTGAATCCGGGAGGAGGTTGCAGTAAGCGGAGATAGTGCCACTGTACTCCAGCCTGGGCAATAAGAGCTGAGACTCCGTCTCAAAATAAAATAAAATAAAATAAAATAAAATAAAATAAAATAAAAAAAGAAAAGAGCCTGCCATTAAAGGAGCTGTTTGGTAGGGGATGTTTTGTCAGTGCAAACAACAGAAAAGTGGGCTGGGCACAGTGGTTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGCGGGCGGATCACCTGAAGTTGGGAGTTCAAGACCAGCCTGACCAATATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCCGGGCGCAGTGGCGCATGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCTGGGAGGCAGAGGTTGCGGTGAGCCGAGATCGCACCATTGCACTCCAGCCTGGACGAGAGCAAAACTCTGTCTCAAAAAAAAAAAAAAACAGAAAAGTGTAACAAACACTTACAGTAGGCATGTTTCTTAGCAAATCTGATGACAAATTTGGCATAAAGAAAGAGAGCATCCCTGAAAAAAAAAAAAAGAAAAAGAAAGAGAGCATCCTGCCTGGGCAACATAGTGAAACCCTGCCTCTACAAAAAAACTCAAAAATTGGCCGGGTGCAGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGTCGGAGGCGGGAGGATCACCTGAGGTCAGGAGTTCGAAACCAGCCTGGCCAACATGGCAAAACCCCATCTCTACTAAAAATACAAAAAATTAATCAGGCGCATTGGTGGGCGCCTGTAATCCCAGCTACTCAGGAAGTTGAGGCAAGAGGATCGCTTGAATCTGGGAGGTGGAGGTTACAGTGAGTCGAGATCACACCACTGCACTCTAGCCTGGGTGACAGGGCGAGACTCCGTCTCCAAAAAAAAAAAGAAAAAGAAAAAGACTAAAAAATTAGCCAGGCAGGCCTCTGTGGTCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCACTGAGCCCAGGAGTCCGAGGCTGTAGTGAGCCATGATTGCACCACTGTACCCTAGCTTGGGCAACAAAGCAAGACCCTGCCTCAAAAGAAAAAAGAAAGAAAGAAAGAACATGGCGGGCCAGGCACAGTGGCTCACACCTGTAATCCCAGCGCTTTGAGAGGCCGAGGCAGGTGGATCACAAGGTCAGGAGTTCCACACCAGCCTGGCCAACATGGTGAAACCCTGTCTCTACTAAAAATACAAAAAATCAGCCAGGCATGGTGGCAGGGGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATTGCTTGAAACCAGAAGGCAGAGGTTGCAGTGAGCCTAGACTGCACCACTGCACTCCAGCCTGGGCGAAAAGAGCCAAACTCCATCTCAAAAAACAAACAAAAAAACAAAACAAAAGAAAACATGGCAAAGCCTTTGAAAGCTTGTCTGGGAGAAGGTGCGATGATAGTTGCATAACTTCGTGCAAGATGCTGGTCCACACAGGGGCTGCCCCTTGCTCTTTCTCGCTCTCTTAACCTCTCATATAACAGGCTTGTGTGTTATTCACATTTATTGAGCCCAAGCAGGTGCAAGGCATTGTGATCTAATACTTTGGTCAGCAAGACAACAAGATAGATCACTGCCCTGCCCTTAGGAAGTGTATATGCTATTAGAGGAAACAGATAAAATAAACAAGGAAAAGTATCAGACAATGTAAGTGCTATGAGAATGCAAATGAGGTGATGTGAATTAAAATAGGATGACTTAAAGTCTGCACGGGAAGGAGCCTACCCCCATGTTCCTGGCTAGCCAAGGAACCACCAGTTGATTAGCAGAGAAGGGCAGCCAGTCTAGCTAGAGCTTTTGGGGAAGAGGGAGTGGTTGTTAAGAGATGAGATTAAAGAAGCCGAGACGGGCCATTCGTGAGGGGTTTGTAATGCAGGGCTGAGGAGTGTCCGAAGAGAATGGGCAGGTGAGCGGTGAGACAGTTGTTCTTCCAGAAGCTTTGCAGTGAAAGGAATCAAAGAAATGGAGCCGTGTATCAGGTGGGGAAGGGTGGGGGCCAAGGGGGTGTCCTTCCCCATACAGAGATTGCAGGCTGAGAATGACTATATCCTTGTTAACAGGAGGTGGGAGCAGGGCACGGTAGCTCACACCTGTAATCTTGGCACTTTAGGAGGCTGAGGCGGGCCGATCACCTGAAGTAAGGAGTTCGAGACCAGCCTGGCCAACATGCAAAGCCCTGTCTCTACTAAAAATACAAAAATTAGCTGGGTGTGGTGGTACTCGCCTGTAATCCCAGCTACTCGGGAGACTGAGGCAGGAGAATGGCTTGAACCCGGAAGGTAGAGGTTGCAGTGAGCTGAGATCATGCCACTGTGCTCCAGCCTAGGTGACAGAGAGAGACTCCATCTCAAAAAAAAAAAAAAAATACAGGAAGGGAGTTGGGAATAGGGTGCACATTTAGGAAGTCTTGGGGATTTAGTGGTGGGAAGGTTGGAAGTCCCTCTCTGATTGTCTTTTCCTCAAAGAAGTGCATGGCTGGTGAGGGGTGGGGCAGGAGTGCTTGGGTTGTGGTGAAACATTGGAAGAGAGAATGTGAAGCAGCCATTCTTTTCCTGCTCCACAGGAAGCCGAGCTGTCTCAGACACTGGCATGGTGTTGGGGGAGGGGGTTCCTTCTCTGCAGGCCCAGGTGACCCAGGGTTGGAAGTGTCTCATGCTGGATCCCCACTTTTCCTCTTGCAGCAGCCAGACTGCCTTCCGGGTCACTGCCATGGAGGAGCCGCAGTCAGATCCTAGCGTCGAGCCCCCTCTGAGTCAGGAAACATTTTCAGACCTATGGAAACTGTGAGTGGATCCATTGGAAGGGCAGGCCCACCACCCCCACCCCAACCCCAGCCCCCTAGCAGAGACCTGTGGGAAGCGAAAATTCCATGGGACTGACTTTCTGCTCTTGTCTTTCAGACTTCCTGAAAACAACGTTCTGGTAAGGACAAGGGTTGGGCTGGGGACCTGGAGGGCTGGGGACCTGGAGGGCTGGGGGGCTGGGGGGCTGAGGACCTGGTCCTCTGACTGCTCTTTTCACCCATCTACAGTCCCCCTTGCCGTCCCAAGCAATGGATGATTTGATGCTGTCCCCGGACGATATTGAACAATGGTTCACTGAAGACCCAGGTCCAGATGAAGCTCCCAGAATGCCAGAGGCTGCTCCCCCCGTGGCCCCTGCACCAGCAGCTCCTACACCGGCGGCCCCTGCACCAGCCCCCTCCTGGCCCCTGTCATCTTCTGTCCCTTCCCAGAAAACCTACCAGGGCAGCTACGGTTTCCGTCTGGGCTTCTTGCATTCTGGGACAGCCAAGTCTGTGACTTGCACGGTCAGTTGCCCTGAGGGGCTGGCTTCCATGAGACTTCAATGCCTGGCCGTATCCCCCTGCATTTCTTTTGTTTGGAACTTTGGGATTCCTCTTCACCCTTTGGCTTCCTGTCAGTGTTTTTTTATAGTTTACCCACTTAATGTGTGATCTCTGACTCCTGTCCCAAAGTTGAATATTCCCCCCTTGAATTTGGGCTTTTATCCATCCCATCACACCCTCAGCATCTCTCCTGGGGATGCAGAACTTTTCTTTTTCTTCATCCACGTGTATTCCTTGGCTTTTGAAAATAAGCTCCTGACCAGGCTTGGTGGCTCACACCTGCAATCCCAGCACTCTCAAAGAGGCCAAGGCAGGCAGATCACCTGAGCCCAGGAGTTCAAGACCAGCCTGGGTAACATGATGAAACCTCGTCTCTACAAAAAAATACAAAAAATTAGCCAGGCATGGTGGTGCACACCTATAGTCCCAGCCACTTAGGAGGCTGAGGTGGGAAGATCACTTGAGGCCAGGAGATGGAGGCTGCAGTGAGCTGTGATCACACCACTGTGCTCCAGCCTGAGTGACAGAGCAAGACCCTATCTCAAAAAAAAAAAAAAAAAAGAAAAGCTCCTGAGGTGTAGACGCCAACTCTCTCTAGCTCGCTAGTGGGTTGCAGGAGGTGCTTACGCATGTTTGTTTCTTTGCTGCCGTCTTCCAGTTGCTTTATCTGTTCACTTGTGCCCTGACTTTCAACTCTGTCTCCTTCCTCTTCCTACAGTACTCCCCTGCCCTCAACAAGATGTTTTGCCAACTGGCCAAGACCTGCCCTGTGCAGCTGTGGGTTGATTCCACACCCCCGCCCGGCACCCGCGTCCGCGCCATGGCCATCTACAAGCAGTCACAGCACATGACGGAGGTTGTGAGGCGCTGCCCCCACCATGAGCGCTGCTCAGATAGCGATGGTGAGCAGCTGGGGCTGGAGAGACGACAGGGCTGGTTGCCCAGGGTCCCCAGGCCTCTGATTCCTCACTGATTGCTCTTAGGTCTGGCCCCTCCTCAGCATCTTATCCGAGTGGAAGGAAATTTGCGTGTGGAGTATTTGGATGACAGAAACACTTTTCGACATAGTGTGGTGGTGCCCTATGAGCCGCCTGAGGTCTGGTTTGCAACTGGGGTCTCTGGGAGGAGGGGTTAAGGGTGGTTGTCAGTGGCCCTCCAGGTGAGCAGTAGGGGGGCTTTCTCCTGCTGCTTATTTGACCTCCCTATAACCCCATGAGATGTGCAAAGTAAATGGGTTTAACTATTGCACAGTTGAAAAAACTGAAGCTTACAGAGGCTAAGGGCCTCCCCTGCTTGGCTGGGCGCAGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACGAGGTTGGGAGATCGAGACCATCCTGGCTAACGGTGAAACCCCGTCTCTACTGAAAAATACAAAAAAAAATTAGCCGGGCGTGGTGCTGGGCACCTGTAGTCCCAGCTACTCGGGAGGCTGAGGAAGGAGAATGGCGTGAACCTGGGCGGTGGAGCTTGCAGTGAGCTGAGATCACGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGATTCCATCTCAAAAAAAAAAAAAAAAGGCCTCCCCTGCTTGCCACAGGTCTCCCCAAGGCGCACTGGCCTCATCTTGGGCCTGTGTTATCTCCTAGGTTGGCTCTGACTGTACCACCATCCACTACAACTACATGTGTAACAGTTCCTGCATGGGCGGCATGAACCGGAGGCCCATCCTCACCATCATCACACTGGAAGACTCCAGGTCAGGAGCCACTTGCCACCCTGCACACTGGCCTGCTGTGCCCCAGCCTCTGCTTGCCTCTGACCCCTGGGCCCACCTCTTACCGATTTCTTCCATACTACTACCCATCCACCTCTCATCACATCCCCGGCGGGGAATCTCCTTACTGCTCCCACTCAGTTTTCTTTTCTCTGGCTTTGGGACCTCTTAACCTGTGGCTTCTCCTCCACCTACCTGGAGCTGGAGCTTAGGCTCCAGAAAGGACAAGGGTGGTTGGGAGTAGATGGAGCCTGGTTTTTTAAATGGGACAGGTAGGACCTGATTTCCTTACTGCCTCTTGCTTCTCTTTTCCTATCCTGAGTAGTGGTAATCTACTGGGACGGAACAGCTTTGAGGTGCGTGTTTGTGCCTGTCCTGGGAGAGACCGGCGCACAGAGGAAGAGAATCTCCGCAAGAAAGGGGAGCCTCACCACGAGCTGCCCCCAGGGAGCACTAAGCGAGGTAAGCAAGCAGGACAAGAAGCGGTGGAGGAGACCAAGGGTGCAGTTATGCCTCAGATTCACTTTTATCACCTTTCCTTGCCTCTTTCCTAGCACTGCCCAACAACACCAGCTCCTCTCCCCAGCCAAAGAAGAAACCACTGGATGGAGAATATTTCACCCTTCAGGTACTAAGTCTTGGGACCTCTTATCAAGTGGAAAGTTTCCAGTCTAACACTCAAAATGCCGTTTTCTTCTTGACTGTTTTACCTGCAATTGGGGCATTTGCCATCAGGGGGCAGTGATGCCTCAAAGACAATGGCTCCTGGTTGTAGCTAACTAACTTCAGAACACCAACTTATACCATAATATATATTTTAAAGGACCAGACCAGCTTTCAAAAAGAAAATTGTTAAAGAGAGCATGAAAATGGTTCTATGACTTTGCCTGATACAGATGCTACTTGACTTACGATGGTGTTACTTCCTGATAAACTCGTCGTAAGTTGAAAATATTGTAAGTTGAAAATGGATTTAATACACCTAATCTAAGGAACATCATAGCTTAGCCTAGCCTGCTTTTTTTTTTTTTTTTTTTGGAGACAGAGTCTCACTCTGTCACCCAGGCTGGAGTGCAGTGGCGGGATCTCGGCTCACTGCAACCTCCGCCTTCTGGGTTCAAGCGATTCTCCTGCCTCAGCCCACTGAGTAGCTGGGATTACAGGCACCTGCCCCGACGCCCAGCTAATTTTTTGTTATTTATTTATTTTTTTTTTTAGTAGAGATGAGGTTTCACCATGTTGGCCAGGCTAGTCTCGAACTCCTGACCTTGTGATCTGCCTGCCTTGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCACCCGGCCTGCCTAGCCTACTTTTATTTTATTTTTAATGGAGACAGCATCTTGCTCTGTTGCCCAGGCTGGATTACAGTGATGTGATCATAGCTCATTATACCCTCCTGGGCTCAAGCAATCCCCCTAACTCTGCCTCCCCAGTAGCTAGGACCACAGGCATACACCACCATACCCAGCTAATTTTTAAAATTTTTTGTAGATAGATAGAGTCTCACTATGTTGCCCAGGCTGGTCTCTAGCCTACTTTTTTGAGACAAGGTCTTGCTCTGTCACCCAGGCTGGATAGAGTGCAGTAGTGCAGTCACAGCTCACTGCAGCCTCCACCTCCCAGGCTCCATCCATCCTCCCAGCTCAGCCTCCCAAGTTGCTTCAACTACAGGCCTGCACCACCATGCCTGGCTAATTTTTATTTATTTATTTTTATTTTATTTTATTTTATTTTTTTGAGACTCAGTCTCACTCTGTCGCCCAGGCTGGAGTGCAGTGGCATGATCTCGGCTCACTGCAACCTCTGCCTCCTGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCGAATAGCTAGGACTACAAGCGCCTGCTACCACGCCCAGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTTCTGACCATGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCACGCCCGGCTAATTTTTATTTATTTATTTAAAGACAGAGTCTCACTCTGTCACTCAGGCTAGAGTGCAGTGGCACCATCTCAGCTCACTGCAGCCTTGACCTCCCTGGGCTCCGGTGATTTCACCCTCCCAAGTAGCTAGGACTACAGGCACATGCCACGACACCCAGCTAATTTTTTATTTTCTGTGAAGTCAAGGTCTTGCTACGTTGCCCATGCTGGTATCAAACCCCTGGGCTCAATCAATCCTTCCACCTCAGCCTCCCCAAGTATTGGGGTTACAGGCATGAGCTACCACACTCAGCCCTAGCCTACTTGAAACGTGTTCAGAGCATTTAAGTTACCCTACAGTTGGGCAAAGTCATCTAACACAAAGCCCTTTTTATAGTAATAAAATGTTGTATATCTCATGTGATTTATTGAATATTGTTACTGAAAGTGAGAAACAGCATGGTTGCATGAAAGGAGGCACAGTCGAGCCAGGCACAGCCTGGGCGCAGAGCGAGACTCAAAAAAAGAAAAGGCCAGGCGCACTGGCTCACGCCTGTAATCCCAGCATTTCGGGAGGCTGAGGCGGGTGGATCACCTGAGGTCAGGAGTTCAAGACCAGCCTAGCCAACATGGTGAAACCCCGTCTCTACTAAAATACAAAAATTAACCGGGCGTGATGGCAGGTGCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCGCTTGAACCAGGAGGCGGAGGTTGCAGGGAGCCAAGATGGCGCCACTGCACTCCAGCCTGGGCGATAGAGTGAGACTCCGTCTCAGAAAAAAAAGAAAAGAAACGAGGCACAGTCGCATGCACATGTAGTCCCAGTTACTTGAGAGGCTAAGGCAGGAGGATCTCTTGAGCCCAAGAGTTTGAGTCCAGCCTGAACAACATAGCAAGACATCATCTCTAAAATTTAAAAAAGGGCCGGGCACAGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGTGGAGGTGGGTAGATCACCTGACGTCAGGAGTTGGAAACCAGCCTGGCTAACATGGTGAAGCCCCATCTCTACTAAAAACACAAAAATTAGCCAGGTGTGGTAGCACACGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCACAAGAATCACTTGAACCCCAGAGGCGGAGATTGCAATCAGCCAAGATTGCACCATTGCACTCCCGCCTGGGCAACAGAGTGAGACCCCATCTCAAAATAAATAAATAAATATTTTTAAAAGTCAGCTGTATAGGTACTTGAAGTGCAGTTTCTACTAAATGCATGTTGCTTTTGTACCGTCATAAAGTCAAACAATTGTAACTTGAACCATCTTTTAACTCAGGTACTGTGTATATACTTACTTCTCCCCCTCCTCTGTTGCTGCAGATCCGTGGGCGTGAGCGCTTCGAGATGTTCCGAGAGCTGAATGAGGCCTTGGAACTCAAGGATGCCCAGGCTGGGAAGGAGCCAGGGGGGAGCAGGGCTCACTCCAGGTGAGTGACCTCAGCCCCTTCCTGGCCCTACTCCCCTGCCTTCCTAGGTTGGAAAGCCATAGGATTCCATTCTCATCCTGCCTTCATGGTCAAAGGCAGCTGACCCCATCTCATTGGGTCCCAGCCCTGCACAGACATTTTTTTAGTCTTCCTCCGGTTGAATCCTATAACCACATTCTTGCCTCAGTGTATCCACAGAACATCCAAACCCAGGGACGAGTGTGGATACTTCTTTGCCATTCTCCGCAACTCCCAGCCCAGAGCTGGAGGGTCTCAAGGAGGGGCCTAATAATTGTGTAATACTGAATACAGCCAGAGTTTCAGGTCATATACTCAGCCCTGCCATGCACCGGCAGGTCCTAGGTGACCCCCGTCAAACTCAGTTTCCTTATATATAAAATGGGGTAAGGGGGCCGGGCGCAGTGGCTCACGAATCCCACACTCTGGGAGGCCAAGGCGAGTGGATCACCTGAGGTCGGGAGTTTGAGCCCAGCCTGACCAACATGGAGAAACCCCATCTCTACTAAAAATACAAAAGTAGCCGGGCGTGGTGATGCATGCCTGTAATCCCAGCTACCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCAGAGGTTGCGGTGAGCTGAGATCTCACCATTACACTCCAGCCTGGGCAACAAGAGTGAAACTCCGTCTCAAAAAAGATAAATAAAGTAAAATGGGGTAAGGGAAGATTACGAGACTAATACACACTAATACTCTGAGGTGCTCAGTAAACATATTTGCATGGGGTGTGGCCACCATCTTGATTTGAATTCCCGTTGTCCCAGCCTTAGGCCCTTCAAAGCATTGGTCAGGGAAAAGGGGCACAGACCCTCTCACTCATGTGATGTCATCTCTCCTCCCTGCTTCTGTCTCCTACAGCCACCTGAAGTCCAAAAAGGGTCAGTCTACCTCCCGCCATAAAAAACTCATGTTCAAGACAGAAGGGCCTGACTCAGACTGACATTCTCCACTTCTTGTTCCCCACTGACAGCCTCCCACCCCCATCTCTCCCTCCCCTGCCATTTTGGGTTTTGGGTCTTTGAACCCTTGCTTGCAATAGGTGTGCGTCAGAAGCACCCAGGACTTCCATTTGCTTTGTCCCGGGGCTCCACTGAACAAGTTGGCCTGCACTGGTGTTTTGTTGTGGGGAGGAGGATGGGGAGTAGGACATACCAGCTTAGATTTTAAGGTTTTTACTGTGAGGGATGTTTGGGAGATGTAAGAAATGTTCTTGCAGTTAAGGGTTAGTTTACAATCAGCCACATTCTAGGTAGGGGCCCACTTCACCGTACTAACCAGGGAAGCTGTCCCTCACTGTTGAATTTTCTCTAACTTCAAGGCCCATATCTGTGAAATGCTGGCATTTGCACCTACCTCACAGAGTGCATTGTGAGGGTTAATGAAATAATGTACATCTGGCCTTGAAACCACCTTTTATTACATGGGGTCTAGAACTTGACCCCCTTGAGGGTGCTTGTTCCCTCTCCCTGTTGGTCGGTGGGTTGGTAGTTTCTACAGTTGGGCAGCTGGTTAGGTAGAGGGAGTTGTCAAGTCTCTGCTGGCCCAGCCAAACCCTGTCTGACAACCTCTTGGTGAACCTTAGTACCTAAAAGGAAATCTCACCCCATCCCACACCCTGGAGGATTTCATCTCTTGTATATGATGATCTGGATCCACCAAGACTTGTTTTATGCTCAGGGTCAATTTCTTTTTTCTTTTTTTTTTTTTTTTTTCTTTTTCTTTGAGACTGGGTCTCGCTTTGTTGCCCAGGCTGGAGTGGAGTGGCGTGATCTTGGCTTACTGCAGCCTTTGCCTCCCCGGCTCGAGCAGTCCTGCCTCAGCCTCCGGAGTAGCTGGGACCACAGGTTCATGCCACCATGGCCAGCCAACTTTTGCATGTTTTGTAGAGATGGGGTCTCACAGTGTTGCCCAGGCTGGTCTCAAACTCCTGGGCTCAGGCGATCCACCTGTCTCAGCCTCCCAGAGTGCTGGGATTACAATTGTGAGCCACCACGTCCAGCTGGAAGGGTCAACATCTTTTACATTCTGCAAGCACATCTGCATTTTCACCCCACCCTTCCCCTCCTTCTCCCTTTTTATATCCCATTTTTATATCGATCTCTTATTTTACAATAAAACTTTGCTGCCACCTGTGTGTCTGAGGGGTG\", \"moltype\": \"dna\", \"info\": null, \"type\": \"cogent3.core.sequence.DnaSequence\", \"annotations\": [{\"annotation_construction\": {\"type\": \"CDS\", \"name\": \"ENST00000269305\", \"map\": {\"spans\": [{\"start\": 10944, \"end\": 11018, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 11135, \"end\": 11157, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 11266, \"end\": 11545, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 12302, \"end\": 12486, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 12567, \"end\": 12680, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 13248, \"end\": 13358, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 13701, \"end\": 13838, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 13930, \"end\": 14004, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 16823, \"end\": 16930, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}, {\"start\": 17848, \"end\": 17930, \"tidy_start\": false, \"tidy_end\": false, \"value\": null, \"reverse\": false, \"type\": \"cogent3.core.location.Span\"}], \"tidy\": false, \"parent_length\": 19137, \"termini_unknown\": false, \"type\": \"cogent3.core.location.Map\"}}, \"type\": \"cogent3.core.annotation.AnnotatableFeature\"}]}}, \"moltype\": \"dna\", \"info\": {\"source\": \"unknown\"}, \"type\": \"cogent3.core.alignment.SequenceCollection\"}", "completed": true}
\ No newline at end of file
diff --git a/tests/test_core/test_alignment.py b/tests/test_core/test_alignment.py
index ee5f281d2..1909da254 100644
--- a/tests/test_core/test_alignment.py
+++ b/tests/test_core/test_alignment.py
@@ -52,7 +52,7 @@ from cogent3.core.alignment import (
 from cogent3.core.alphabet import AlphabetError
 from cogent3.core.annotation_db import GffAnnotationDb
 from cogent3.core.moltype import AB, ASCII, BYTES, DNA, PROTEIN, RNA
-from cogent3.core.sequence import ArraySequence, RnaSequence, Sequence
+from cogent3.core.sequence import ArraySequence, RnaSequence, Sequence, SeqView
 from cogent3.maths.util import safe_p_log_p
 from cogent3.parse.fasta import MinimalFastaParser
 from cogent3.util.misc import get_object_provenance
@@ -3215,6 +3215,44 @@ def test_copy_annotations(cls, gff_db):
     assert seq_coll.annotation_db.num_matches() == expect
 
 
+def _make_seq(name):
+    raw_seq = "AACCCAAAATTTTTTGGGGGGGGGGCCCC"
+    cds = (15, 25)
+    utr = (12, 15)
+    # name is required for creating annotations
+    seq = DNA.make_seq(raw_seq, name=name)
+    seq.add_feature(biotype="CDS", name="CDS", spans=[cds])
+    seq.add_feature(biotype="5'UTR", name="5' UTR", spans=[utr])
+    return seq
+
+
+@pytest.mark.parametrize("cls", (SequenceCollection, Alignment))
+def test_init_seqs_have_annotations(cls, gff_db):
+    """annotations on input seqs correctly merged and propagated"""
+
+    seq_coll = cls({"seq1": _make_seq("seq1"), "seq2": _make_seq("seq2")})
+    coll_db = seq_coll.annotation_db
+    assert len(coll_db) == 4
+    for seq in seq_coll.seqs:
+        if cls == Alignment:
+            db = seq.data.annotation_db
+        else:
+            db = seq.annotation_db
+        assert db is coll_db
+
+
+@pytest.mark.parametrize("cls", (SequenceCollection, Alignment))
+def test_add_to_seq_updates_coll(cls, gff_db):
+    """annotating a seq updates the db of the propagated"""
+    seq_coll = cls(
+        {"x": "AACCCAAAATTTTTTGGGGGGGGGGCCCC", "y": "AACCCAAAATTTTTTGGGGGGGGGGCCCC"}
+    )
+    x = seq_coll.get_seq("x")
+    assert len(seq_coll.annotation_db) == len(x.annotation_db) == 0
+    x.add_feature(biotype="exon", name="E1", spans=[(3, 8)])
+    assert len(seq_coll.annotation_db) == len(x.annotation_db) == 1
+
+
 @pytest.mark.parametrize("cls", (SequenceCollection, Alignment))
 def test_assign_none(cls, gff_db):
     """assigning None to annotation_db breaks conection"""
@@ -3302,23 +3340,27 @@ def test_seq_rename_drops_annotations(cls):
 
 
 @pytest.mark.parametrize(
-    "cls,with_offset",
-    ((SequenceCollection, True), (Alignment, True), (ArrayAlignment, False)),
+    "cls",
+    (SequenceCollection, ArrayAlignment),
 )
-def test_to_rich_dict(cls, with_offset):
+def test_to_rich_dict_not_alignment(cls):
     """to_rich_dict produces correct dict"""
-    aln = cls({"seq1": "ACGG", "seq2": "CGCA", "seq3": "CCG-"})
+    data = {"seq1": "ACGG", "seq2": "CGCA", "seq3": "CCG-"}
+    aln = cls(data, moltype="dna")
     try:
         seq_type = get_object_provenance(aln.seqs[0].data)
     except AttributeError:
         seq_type = get_object_provenance(aln.seqs[0])
 
     got = aln.to_rich_dict()
+
+    data = {k: SeqView(s).to_rich_dict() for k, s in data.items()}
+
     expect = {
         "seqs": {
             "seq1": {
                 "name": "seq1",
-                "seq": "ACGG",
+                "seq": data["seq1"],
                 "info": None,
                 "type": seq_type,
                 "moltype": aln.moltype.label,
@@ -3327,7 +3369,7 @@ def test_to_rich_dict(cls, with_offset):
             },
             "seq2": {
                 "name": "seq2",
-                "seq": "CGCA",
+                "seq": data["seq2"],
                 "info": None,
                 "type": seq_type,
                 "moltype": aln.moltype.label,
@@ -3336,7 +3378,7 @@ def test_to_rich_dict(cls, with_offset):
             },
             "seq3": {
                 "name": "seq3",
-                "seq": "CCG-",
+                "seq": data["seq3"],
                 "info": None,
                 "type": seq_type,
                 "moltype": aln.moltype.label,
@@ -3352,6 +3394,31 @@ def test_to_rich_dict(cls, with_offset):
     assert got == expect
 
 
+def test_to_rich_dict_alignment():
+    """to_rich_dict produces correct dict"""
+    data = {"seq1": "ACGG", "seq2": "CGCA", "seq3": "CCG-"}
+    aln = Alignment(data, moltype="dna")
+    got = aln.to_rich_dict()
+
+    data = {
+        k: Aligned(*make_seq(s, name=k, moltype="dna").parse_out_gaps()).to_rich_dict()
+        for k, s in data.items()
+    }
+
+    expect = {
+        "seqs": {
+            "seq1": data["seq1"],
+            "seq2": data["seq2"],
+            "seq3": data["seq3"],
+        },
+        "moltype": aln.moltype.label,
+        "info": None,
+        "type": get_object_provenance(aln),
+        "version": __version__,
+    }
+    assert got == expect
+
+
 @pytest.mark.parametrize("cls", (SequenceCollection, Alignment))
 def test_dotplot_annotated(cls):
     """exercising dotplot method with annotated sequences"""
@@ -3513,3 +3580,17 @@ def test_get_gap_array_equivalence():
     array_aln = make_aligned_seqs(data, moltype="dna", array_align=True)
     aln = make_aligned_seqs(data, moltype="dna", array_align=False)
     assert_allclose(array_aln.get_gap_array(), aln.get_gap_array())
+
+
+@pytest.mark.parametrize("reverse", (False, True))
+def test_aligned_rich_dict(reverse):
+    map_, s = make_seq(
+        "TTGAAGAATATGT------GAAAGAG", name="s1", moltype="dna"
+    ).parse_out_gaps()
+    seq = Aligned(map_, s)
+    if reverse:
+        seq = seq.rc()
+
+    rd = seq.to_rich_dict()
+    got = Aligned.from_rich_dict(rd)
+    assert str(seq) == str(got)
diff --git a/tests/test_core/test_features.py b/tests/test_core/test_features.py
index dcff7f553..6c0359c2d 100755
--- a/tests/test_core/test_features.py
+++ b/tests/test_core/test_features.py
@@ -115,8 +115,7 @@ def test_feature_residue():
         moltype=DNA,
         array_align=False,
     )
-    db = GffAnnotationDb()
-    aln.annotation_db = db
+    db = aln.annotation_db
     assert str(aln), ">x\nC-CCCAAAAA\n>y\n-T----TTTT\n"
     db.add_feature(seqid="x", biotype="exon", name="ex1", spans=[(0, 4)])
     aln_exons = list(aln.get_features(seqid="x", biotype="exon"))
@@ -463,11 +462,11 @@ def test_roundtrip_rc_annotated_align():
     )
     aln.get_seq("x").add_feature(biotype="exon", name="E1", spans=[(3, 8)])
     aln.get_seq("x").add_feature(biotype="exon", name="E2", spans=[(10, 13)])
-
     raln = aln.rc()
+    assert len(aln.annotation_db) == len(raln.annotation_db)
     json = raln.to_json()
     got = deserialise_object(json)
-    assert got.to_dict() == raln.to_dict()
+    assert got.to_rich_dict() == raln.to_rich_dict()
     orig_annots = {a.name: a.get_slice() for a in raln.get_features()}
     got_annots = {a.name: a.get_slice() for a in got.get_features()}
     assert got_annots == orig_annots
diff --git a/tests/test_core/test_sequence.py b/tests/test_core/test_sequence.py
index 4e44c1d36..53d2460be 100644
--- a/tests/test_core/test_sequence.py
+++ b/tests/test_core/test_sequence.py
@@ -2270,9 +2270,14 @@ def test_to_rich_dict(cls, with_offset):
     """Sequence to_dict works"""
     r = cls("AAGGCC", name="seq1")
     got = r.to_rich_dict()
+    seq = "AAGGCC"
+
+    if cls == Sequence:
+        seq = SeqView(seq).to_rich_dict()
+
     expect = {
         "name": "seq1",
-        "seq": "AAGGCC",
+        "seq": seq,
         "moltype": r.moltype.label,
         "info": None,
         "type": get_object_provenance(r),
@@ -2289,9 +2294,14 @@ def test_to_json(cls, with_offset):
     """to_json roundtrip recreates to_dict"""
     r = cls("AAGGCC", name="seq1")
     got = json.loads(r.to_json())
+
+    seq = "AAGGCC"
+    if cls == Sequence:
+        seq = SeqView(seq).to_rich_dict()
+
     expect = {
         "name": "seq1",
-        "seq": "AAGGCC",
+        "seq": seq,
         "moltype": r.moltype.label,
         "info": None,
         "type": get_object_provenance(r),
@@ -2318,3 +2328,47 @@ def test_offset_with_multiple_slices():
     expect = {(f.seqid, f.biotype, f.name) for f in seq.get_features(start=5)}
     got = {(f.seqid, f.biotype, f.name) for f in s2.get_features()}
     assert got == expect
+
+
+def test_seqview_to_rich_dict():
+    parent = "ACCCCGGAAAATTTTTTTTTAAGGGGGAAAAAAAAACCCCCCC"
+    sv = SeqView(seq=parent)
+    plus = sv.to_rich_dict()
+    minus = sv[::-1].to_rich_dict()
+    for attr in ("type", "offset", "version"):
+        assert plus.pop(attr) == minus.pop(attr)
+
+    plus = plus.pop("init_args")
+    minus = minus.pop("init_args")
+    assert plus.pop("seq") == minus.pop("seq")
+    assert plus["step"] == -minus["step"]
+    for coord in ("start", "stop"):
+        assert coord not in plus
+        assert coord not in minus
+
+
+@pytest.mark.parametrize("reverse", (False, True))
+def test_seqview_round_trip(reverse):
+    from cogent3.util.deserialise import deserialise_object
+
+    parent = "ACCCCGGAAAATTTTTTTTTAAGGGGGAAAAAAAAACCCCCCC"
+    sv = SeqView(seq=parent)
+    if reverse:
+        sv = sv[::-1]
+
+    rd = sv.to_rich_dict()
+    got = deserialise_object(rd)
+    assert isinstance(got, SeqView)
+    assert got.to_rich_dict() == sv.to_rich_dict()
+
+
+@pytest.mark.parametrize("reverse", (False, True))
+def test_sliced_seqview_rich_dict(reverse):
+    parent = "ACCCCGGAAAATTTTTTTTTAAGGGGGAAAAAAAAACCCCCCC"
+    sl = slice(2, 13)
+    sv = SeqView(seq=parent)[sl]
+    if reverse:
+        sv = sv[::-1]
+    rd = sv.to_rich_dict()
+    assert rd["init_args"]["seq"] == parent[sl]
+    assert rd["offset"] == 2
diff --git a/tests/test_util/test_deserialise.py b/tests/test_util/test_deserialise.py
index 9efd88a56..040571bd5 100644
--- a/tests/test_util/test_deserialise.py
+++ b/tests/test_util/test_deserialise.py
@@ -1,5 +1,6 @@
 import json
 import os
+import pathlib
 
 from tempfile import TemporaryDirectory
 from unittest import TestCase
@@ -31,6 +32,9 @@ from cogent3.util.deserialise import (
 )
 
 
+DATA_DIR = pathlib.Path(__file__).parent.parent / "data"
+
+
 class TestDeserialising(TestCase):
     def test_roundtrip_codon_alphabet(self):
         """codon alphabet to_json enables roundtrip"""
@@ -56,17 +60,6 @@ class TestDeserialising(TestCase):
         self.assertEqual(list(got), list(dna))
         self.assertEqual(dna, got)
 
-    def test_roundtrip_seq(self):
-        """seq to_json enables roundtrip"""
-        for mtype in ("dna", "protein"):
-            mtype = moltype.get_moltype(mtype)
-            seq = mtype.make_seq("ACGGTCGG", "label", info={"something": 3})
-            got = deserialise_object(seq.to_json())
-            self.assertEqual(got.info.something, 3)
-            self.assertEqual(got.name, "label")
-            self.assertEqual(got.moltype, seq.moltype)
-            self.assertEqual(str(got), str(seq))
-
     def test_roundtrip_seqcoll(self):
         """SequenceCollection to_json enables roundtrip"""
         data = dict(A="TTGT", B="GGCT")
@@ -580,6 +573,20 @@ def test_convert_annotation_to_annotation_db():
     assert db.num_matches() == 1
 
 
+def test_deserialise_old_style_annotated():
+    from cogent3.core.alignment import SequenceCollection
+
+    data = (DATA_DIR / "old_annotation_style.json").read_text()
+    data = json.loads(data)["data"]
+    got = deserialise_object(data)
+    assert isinstance(got, SequenceCollection)
+    raw_seqs = json.loads(data)["seqs"]
+    num_anns = sum(len(v["annotations"]) for v in raw_seqs.values())
+    assert len(got.annotation_db) == num_anns
+    for feature in got.annotation_db.get_features_matching():
+        assert feature["seqid"] is not None
+
+
 def test_deser_annotated_aln():
     data = {
         "seqs": {
@@ -681,3 +688,15 @@ def test_roundtrip_TN93_model_result():
 
     got = deserialise_object(result.to_rich_dict())
     assert_allclose(got.lnL, result.lnL)
+
+
+@pytest.mark.parametrize("mtype", ("dna", "protein"))
+def test_roundtrip_seq(mtype):
+    """seq to_json enables roundtrip"""
+    mtype = moltype.get_moltype(mtype)
+    seq = mtype.make_seq("ACGGTCGG", "label", info={"something": 3})
+    got = deserialise_object(seq.to_json())
+    assert got.info.something == 3
+    assert got.name == "label"
+    assert got.moltype == seq.moltype
+    assert str(got) == str(seq)