From 1780be8f022959b7c9a68a7f176d64560e971f96 Mon Sep 17 00:00:00 2001 From: KP Date: Thu, 27 Oct 2016 22:30:33 -0500 Subject: [PATCH 001/245] for #39129: catch empty files before uploading() and raise exception It was possible to attempt to upload a zero-byte file which can cause all sorts of issues but most notably it generates a ServerError which is misleading to the user. We now check the file exists and is not empty before calling upload(). If the file is empty, and exception is now raised stating the issue. --- HISTORY.rst | 2 ++ shotgun_api3/shotgun.py | 5 ++++- tests/empty.txt | 0 tests/test_api.py | 21 +++++++++++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/empty.txt diff --git a/HISTORY.rst b/HISTORY.rst index d7171eaee..2134d2631 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,6 +7,8 @@ Here you can see the full list of changes between each Python API release. v3.0.33.dev (TBD) ================= +- Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` + or :meth:`upload_filmstrip_thumbnail` before calling out to the server. - TBD v3.0.32 (2016 Sep 22) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 921ebf5ac..7319cae84 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2137,7 +2137,7 @@ def upload(self, entity_type, entity_id, path, field_name=None, display_name=Non :param str entity_type: Entity type to link the upload to. :param int entity_id: Id of the entity to link the upload to. - :param str path: Full path to file on disk to upload. + :param str path: Full path to an existing non-empty file on disk to upload. :param str field_name: The internal Shotgun field name on the entity to store the file in. This field must be a File/Link field type. :param str display_name: The display name to use for the file. Defaults to the file name. @@ -2145,9 +2145,12 @@ def upload(self, entity_type, entity_id, path, field_name=None, display_name=Non :returns: Id of the Attachment entity that was created for the image. :rtype: int """ + # Basic validations of the file to upload. path = os.path.abspath(os.path.expanduser(path or "")) if not os.path.isfile(path): raise ShotgunError("Path must be a valid file, got '%s'" % path) + if os.path.getsize(path) == 0: + raise ShotgunError("Path cannot be an empty file: '%s'" % path) is_thumbnail = (field_name in ["thumb_image", "filmstrip_thumb_image", "image", "filmstrip_image"]) diff --git a/tests/empty.txt b/tests/empty.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_api.py b/tests/test_api.py index 68b681d7b..78870bb60 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1629,6 +1629,27 @@ def test_sanitized_auth_params(self, mock_open): # except above wasn't properly run self.assertTrue(False) + def test_upload_empty_file(self): + """ + Test uploading an empty file raises an error. + """ + this_dir, _ = os.path.split(__file__) + path = os.path.abspath(os.path.expanduser(os.path.join(this_dir,"empty.txt"))) + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload, 'Version', 123, path) + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_thumbnail, 'Version', 123, path) + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, 'Version', + 123, path) + + def test_upload_missing_file(self): + """ + Test uploading an missing file raises an error. + """ + path = "/path/to/nowhere/foo.txt" + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload, 'Version', 123, path) + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_thumbnail, 'Version', 123, path) + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, 'Version', + 123, path) + # def test_malformed_response(self): # #TODO ResponseError # pass From 9bdfbd0787676f5a42e674675468a01d8e762404 Mon Sep 17 00:00:00 2001 From: KP Date: Mon, 5 Dec 2016 17:05:55 -0600 Subject: [PATCH 002/245] [docs] Add index of Shotgun() methods - fix Task menu tree * [docs] Fix menu tree for Tasks so it doesn't overflow * [docs] Add index of Shotgun() methods using auto summary --- docs/cookbook/tasks/updating_tasks.rst | 143 ++++++++++++++----------- docs/reference.rst | 79 +++++++++++++- 2 files changed, 156 insertions(+), 66 deletions(-) diff --git a/docs/cookbook/tasks/updating_tasks.rst b/docs/cookbook/tasks/updating_tasks.rst index b7c57a051..445ecdfc6 100644 --- a/docs/cookbook/tasks/updating_tasks.rst +++ b/docs/cookbook/tasks/updating_tasks.rst @@ -45,14 +45,17 @@ will vary. .. note:: The ``duration`` field stores ``duration`` values in minutes -Universal -========= + +---- + +.. rubric:: Universal + Regardless of current values on the Task, this behavior rules:: Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} -Update start_date and due_date -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**Update start_date and due_date** + ``duration`` is ignored if also provided. It is instead set automatically as (``due_date`` - ``start_date``) @@ -67,8 +70,7 @@ Update start_date and due_date .. note:: The value provided in the update() is ignored (and in this case was also incorrect). -Update start_date and duration -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**Update start_date and duration** :: @@ -79,8 +81,7 @@ Update start_date and duration - ``duration`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). -Update due_date and duration -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**Update due_date and duration** :: @@ -93,15 +94,19 @@ Update due_date and duration .. note:: This means the ``duration`` provided is overwritten. -Task has start_date only -======================== + +---- + +.. rubric:: Task has start_date only + +If the Task only has a ``start_date`` value and has no other date values, this is how updates +will behave. :: Task = {'start_date': '2011-05-20', 'due_date': None, 'duration': None, 'id':123} -Update start_date -~~~~~~~~~~~~~~~~~ +**Update start_date** :: @@ -110,8 +115,7 @@ Update start_date - Only ``start_date`` is updated. -Update due_date -~~~~~~~~~~~~~~~ +**Update due_date** :: @@ -121,8 +125,7 @@ Update due_date - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). -Update duration -~~~~~~~~~~~~~~~ +**Update duration** :: @@ -132,15 +135,19 @@ Update duration - ``duration`` is updated. - ``due_date`` is set to (``start_date`` + ``duration``) -Task has due_date only -====================== + +---- + +.. rubric:: Task has due_date only + +If the Task only has a ``due_date`` value and has no other date values, this is how updates +will behave. :: # Task = {'start_date': None, 'due_date': '2011-05-25', 'duration': None, 'id':123} -Update start_date -~~~~~~~~~~~~~~~~~ +**Update start_date** :: @@ -150,8 +157,7 @@ Update start_date - ``start_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). -Update due_date -~~~~~~~~~~~~~~~ +**Update due_date** :: @@ -160,8 +166,7 @@ Update due_date - only ``due_date`` is updated. -Update duration -~~~~~~~~~~~~~~~ +**Update duration** :: @@ -171,15 +176,19 @@ Update duration - ``duration`` is updated. - ``start_date`` is set to (``due_date`` - ``duration``) -Task has duration only -====================== + +---- + +.. rubric:: Task has duration only + +If the Task only has a ``duration`` value and has no other date values, this is how updates +will behave. :: # Task = {'start_date': None, 'due_date': None, 'duration': 2400, 'id':123} -Update start_date -~~~~~~~~~~~~~~~~~ +**Update start_date** :: @@ -189,8 +198,7 @@ Update start_date - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). -Update due_date -~~~~~~~~~~~~~~~ +**Update due_date** :: @@ -200,8 +208,7 @@ Update due_date - ``due_date`` is updated. - ``start_date`` is updated to (``due_date`` - ``duration``) -Update duration -~~~~~~~~~~~~~~~ +**Update duration** :: @@ -210,15 +217,19 @@ Update duration - only ``duration`` is updated. -Task has start_date and due_date (no duration) -============================================== + +---- + +.. rubric:: Task has start_date and due_date + +If the Task has ``start_date`` and ``due_date`` values but has no ``duration``, this is how updates +will behave. :: # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': None, 'id':123} -Update start_date -~~~~~~~~~~~~~~~~~ +**Update start_date** :: @@ -228,8 +239,7 @@ Update start_date - ``start_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). -Update due_date -~~~~~~~~~~~~~~~ +**Update due_date** :: @@ -239,8 +249,7 @@ Update due_date - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``) -Update duration -~~~~~~~~~~~~~~~ +**Update duration** :: @@ -250,15 +259,19 @@ Update duration - ``duration`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``) -Task has start_date and duration (no due_date) -============================================== + +---- + +.. rubric:: Task has start_date and duration + +If the Task has ``start_date`` and ``duration`` values but has no ``due_date``, this is how updates +will behave. :: # Task = {'start_date': '2011-05-20', 'due_date': None, 'duration': 2400, 'id':123} -Update start_date -~~~~~~~~~~~~~~~~~ +**Update start_date** :: @@ -268,8 +281,7 @@ Update start_date - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` +``duration``). -Update due_date -~~~~~~~~~~~~~~~ +**Update due_date** :: @@ -279,8 +291,7 @@ Update due_date - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``). -Update duration -~~~~~~~~~~~~~~~ +**Update duration** :: @@ -290,15 +301,19 @@ Update duration - ``duration`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``) -Task has due_date and duration (no start_date) -============================================== + +---- + +.. rubric:: Task has due_date and duration + +If the Task has ``due_date`` and ``duration`` values but has no ``start_date``, this is how updates +will behave. :: # Task = {'start_date': None, 'due_date': '2011-05-25', 'duration': 2400, 'id':123} -Update start_date -~~~~~~~~~~~~~~~~~ +**Update start_date** :: @@ -308,8 +323,7 @@ Update start_date - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). -Update due_date -~~~~~~~~~~~~~~~ +**Update due_date** :: @@ -319,8 +333,7 @@ Update due_date - ``due_date`` is updated. - ``start_date`` is updated to (``due_date`` - ``duration``). -Update duration -~~~~~~~~~~~~~~~ +**Update duration** :: @@ -330,15 +343,19 @@ Update duration - ``duration`` is updated. - ``start_date`` is updated to (``due_date`` - ``duration``) -Task has start_date ,due_date, and duration -=========================================== + +---- + +.. rubric:: Task has start_date ,due_date, and duration + +If the Task has ``start_date``, ``due_date``, and ``duration``, this is how updates +will behave. :: # Task = {'start_date': '2011-05-20', 'due_date': '2011-05-25', 'duration': 2400, 'id':123} -Update start_date -~~~~~~~~~~~~~~~~~ +**Update start_date** :: @@ -348,8 +365,7 @@ Update start_date - ``start_date`` is updated. - ``due_date`` is updated to (``start_date`` + ``duration``). -Update due_date -~~~~~~~~~~~~~~~ +**Update due_date** :: @@ -359,8 +375,7 @@ Update due_date - ``due_date`` is updated. - ``duration`` is updated to (``due_date`` - ``start_date``) -Update duration -~~~~~~~~~~~~~~~ +**Update duration** :: diff --git a/docs/reference.rst b/docs/reference.rst index d6456af2e..39a97abce 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -19,6 +19,13 @@ class. There are a couple of useful attributes to note. :private-members: :special-members: +*************** +Shotgun() +*************** + +.. autoclass:: Shotgun + :show-inheritance: + *************** Shotgun Methods *************** @@ -26,8 +33,76 @@ Shotgun Methods The majority of functionality is contained within the :class:`~shotgun_api3.Shotgun` class. The documentation for all of the methods you'll need in your scripts lives in here. -.. autoclass:: Shotgun - :show-inheritance: +.. rubric:: Connection & Authentication + +.. autosummary:: + :nosignatures: + + Shotgun.connect + Shotgun.close + Shotgun.authenticate_human_user + Shotgun.get_session_token + Shotgun.set_up_auth_cookie + Shotgun.add_user_agent + Shotgun.reset_user_agent + Shotgun.set_session_uuid + Shotgun.info + +.. rubric:: CRUD Methods + +.. autosummary:: + :nosignatures: + + Shotgun.create + Shotgun.find + Shotgun.find_one + Shotgun.update + Shotgun.delete + Shotgun.revive + Shotgun.batch + Shotgun.summarize + Shotgun.note_thread_read + Shotgun.text_search + Shotgun.update_project_last_accessed + Shotgun.work_schedule_read + Shotgun.work_schedule_update + +.. rubric:: Working With Files + +.. autosummary:: + :nosignatures: + + Shotgun.upload + Shotgun.upload_thumbnail + Shotgun.upload_filmstrip_thumbnail + Shotgun.download_attachment + Shotgun.get_attachment_download_url + Shotgun.share_thumbnail + +.. rubric:: Activity Stream + +.. autosummary:: + :nosignatures: + + Shotgun.activity_stream_read + Shotgun.follow + Shotgun.unfollow + Shotgun.followers + +.. rubric:: Working with the Shotgun Schema + +.. autosummary:: + :nosignatures: + + Shotgun.schema_entity_read + Shotgun.schema_field_read + Shotgun.schema_field_create + Shotgun.schema_field_update + Shotgun.schema_field_delete + Shotgun.schema_read + Shotgun.schema + Shotgun.entity_types + Connection & Authentication =========================== From 1f7b5413d5169cdb1afa9df2310f9626853babb3 Mon Sep 17 00:00:00 2001 From: dallum Date: Wed, 11 Jan 2017 16:52:26 +0000 Subject: [PATCH 003/245] Copyright update Updated year --- shotgun_api3/shotgun.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 7319cae84..3442e8c29 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -1,7 +1,7 @@ #!/usr/bin/env python """ ----------------------------------------------------------------------------- - Copyright (c) 2009-2016, Shotgun Software Inc. + Copyright (c) 2009-2017, Shotgun Software Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From 33985c6603690371822a5670c3fed060ed34e8c4 Mon Sep 17 00:00:00 2001 From: Jordi Riera Date: Thu, 12 Jan 2017 12:27:46 -0500 Subject: [PATCH 004/245] Adds support for list and status_list fields. Thanks for the fine people of RodeoFX for this contribution. --- shotgun_api3/lib/mockgun.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shotgun_api3/lib/mockgun.py b/shotgun_api3/lib/mockgun.py index 5197b19fc..37bed9e0f 100644 --- a/shotgun_api3/lib/mockgun.py +++ b/shotgun_api3/lib/mockgun.py @@ -526,6 +526,8 @@ def _validate_entity_data(self, entity_type, data): "serializable": dict, "date": datetime.date, "date_time": datetime.datetime, + "list": basestring, + "status_list": basestring, "url": dict}[sg_type] except KeyError: raise ShotgunError("Field %s.%s: Handling for Shotgun type %s is not implemented" % (entity_type, field, sg_type)) @@ -587,7 +589,7 @@ def _compare(self, field_type, lval, operator, rval): return lval < rval[0] or lval > rval[1] elif operator == "in": return lval in rval - elif field_type == "list": + elif field_type in ("list", "status_list"): if operator == "is": return lval == rval elif operator == "is_not": From a347a3b385953d93f361519ca707774f903e0c73 Mon Sep 17 00:00:00 2001 From: KP Date: Fri, 20 Jan 2017 09:34:00 -0600 Subject: [PATCH 005/245] Update README.md fix typo in Tutorial url. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a55c42bad..18d631150 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Tutorials and detailed documentation about the Python API are available at http: Some useful direct links: * [Installing](http://developer.shotgunsoftware.com/python-api/installation.html) -* [Tutorials](http://developer.shotgunsoftware.com/python-api/cookbok/tutorials.html) +* [Tutorials](http://developer.shotgunsoftware.com/python-api/cookbook/tutorials.html) * [API Reference](http://developer.shotgunsoftware.com/python-api/reference.html) * [Data Types](http://developer.shotgunsoftware.com/python-api/reference.html#data-types) * [Filter Syntax](http://developer.shotgunsoftware.com/python-api/reference.html#filter-syntax) From 4afcdd6cfb597b6a8d4bf6f184c00139c6e9d382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 7 Feb 2017 14:45:43 -0500 Subject: [PATCH 006/245] For #40713, add support for filter_operator syntax in Mockgun. find queries in Mockgun can now use the filter_operator syntax to specify boolean operations. Closes https://github.com/shotgunsoftware/python-api/pull/130/ --- shotgun_api3/lib/mockgun.py | 122 +- tests/mockgun/schema.pickle | 98684 +++++++++++++++++++++++++++ tests/mockgun/schema_entity.pickle | 1003 + tests/test_mockgun.py | 264 + 4 files changed, 100035 insertions(+), 38 deletions(-) create mode 100644 tests/mockgun/schema.pickle create mode 100644 tests/mockgun/schema_entity.pickle create mode 100644 tests/test_mockgun.py diff --git a/shotgun_api3/lib/mockgun.py b/shotgun_api3/lib/mockgun.py index 37bed9e0f..ae404bc79 100644 --- a/shotgun_api3/lib/mockgun.py +++ b/shotgun_api3/lib/mockgun.py @@ -1,6 +1,6 @@ """ ----------------------------------------------------------------------------- - Copyright (c) 2009-2015, Shotgun Software Inc + Copyright (c) 2009-2017, Shotgun Software Inc Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -305,6 +305,8 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No # do not validate custom fields - this makes it hard to mock up a field quickly #self._validate_entity_fields(entity_type, fields) + # FIXME: This should be refactored so that we can use the complex filer + # style in nested filter operations. if isinstance(filters, dict): # complex filter style! # {'conditions': [{'path': 'id', 'relation': 'is', 'values': [1]}], 'logical_operator': 'and'} @@ -328,24 +330,13 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No # traditiona style sg filters resolved_filters = filters - # now translate ["field", "in", 2,3,4] --> ["field", "in", [2, 3, 4]] - resolved_filters_2 = [] - for f in resolved_filters: - - if len(f) > 3: - # ["field", "in", 2,3,4] --> ["field", "in", [2, 3, 4]] - new_filter = [ f[0], f[1], f[2:] ] - - elif f[1] == "in" and not isinstance(f[2], list): - # ["field", "in", 2] --> ["field", "in", [2]] - new_filter = [ f[0], f[1], [ f[2] ] ] - - else: - new_filter = f - - resolved_filters_2.append(new_filter) - - results = [row for row in self._db[entity_type].values() if self._row_matches_filters(entity_type, row, resolved_filters_2, filter_operator, retired_only)] + results = [ + # Apply the filters for every single entities for the given entity type. + row for row in self._db[entity_type].values() + if self._row_matches_filters( + entity_type, row, resolved_filters, filter_operator, retired_only + ) + ] # handle the ordering of the recordset if order: @@ -690,36 +681,91 @@ def _get_field_type(self, entity_type, field): except ValueError: return self._schema[entity_type][field]["data_type"]["value"] - def _row_matches_filter(self, entity_type, row, filter): - - + def _row_matches_filter(self, entity_type, row, sg_filter, retired_only): + try: - field, operator, rval = filter + field, operator, rval = sg_filter except ValueError: raise ShotgunError("Filters must be in the form [lval, operator, rval]") - lval = self._get_field_from_row(entity_type, row, field) - - field_type = self._get_field_type(entity_type, field) - - # if we're operating on an entity, we'll need to grab the name from the lval's row - if field_type == "entity": - lval_row = self._db[lval["type"]][lval["id"]] - if "name" in lval_row: - lval["name"] = lval_row["name"] - elif "code" in lval_row: - lval["name"] = lval_row["code"] - return self._compare(field_type, lval, operator, rval) + + # Special case, field is None when we have a filter operator. + if field is None: + if operator in ["any", "all"]: + return self._row_matches_filters(entity_type, row, rval, operator, retired_only) + else: + raise ShotgunError("Unknown filter_operator type: %s" % operator) + else: + lval = self._get_field_from_row(entity_type, row, field) + + field_type = self._get_field_type(entity_type, field) + + # if we're operating on an entity, we'll need to grab the name from the lval's row + if field_type == "entity": + lval_row = self._db[lval["type"]][lval["id"]] + if "name" in lval_row: + lval["name"] = lval_row["name"] + elif "code" in lval_row: + lval["name"] = lval_row["code"] + return self._compare(field_type, lval, operator, rval) + + def _rearrange_filters(self, filters): + """ + Modifies the filter syntax to turn it into a list of three items regardless + of the actual filter. Most of the filters are list of three elements, so this doesn't change much. + + The filter_operator syntax uses a dictionary with two keys, "filters" and + "filter_operator". Filters using this syntax will be turned into + [None, filter["filter_operator"], filter["filters"]] + + Filters of the form [field, operator, values....] will be turned into + [field, operator, [values...]]. + + :param list filters: List of filters to rearrange. + + :returns: A list of three items. + """ + rearranged_filters = [] + + # now translate ["field", "in", 2,3,4] --> ["field", "in", [2, 3, 4]] + for f in filters: + if isinstance(f, list): + if len(f) > 3: + # ["field", "in", 2,3,4] --> ["field", "in", [2, 3, 4]] + new_filter = [f[0], f[1], f[2:]] + + elif f[1] == "in" and not isinstance(f[2], list): + # ["field", "in", 2] --> ["field", "in", [2]] + new_filter = [f[0], f[1], [f[2]]] + + else: + new_filter = f + elif isinstance(f, dict): + if "filter_operator" not in f or "filters" not in f: + raise ShotgunError( + "Bad filter operator, requires keys 'filter_operator' and 'filters', " + "found %s" % ", ".join(f.keys()) + ) + new_filter = [None, f["filter_operator"], f["filters"]] + else: + raise ShotgunError( + "Filters can only be lists or dictionaries, not %s." % type(f).__name__ + ) + + rearranged_filters.append(new_filter) + + return rearranged_filters def _row_matches_filters(self, entity_type, row, filters, filter_operator, retired_only): - + filters = self._rearrange_filters(filters) + if retired_only and not row["__retired"] or not retired_only and row["__retired"]: # ignore retired rows unless the retired_only flag is set # ignore live rows if the retired_only flag is set return False elif filter_operator in ("all", None): - return all(self._row_matches_filter(entity_type, row, filter) for filter in filters) + return all(self._row_matches_filter(entity_type, row, filter, retired_only) for filter in filters) elif filter_operator == "any": - return any(self._row_matches_filter(entity_type, row, filter) for filter in filters) + return any(self._row_matches_filter(entity_type, row, filter, retired_only) for filter in filters) else: raise ShotgunError("%s is not a valid filter operator" % filter_operator) diff --git a/tests/mockgun/schema.pickle b/tests/mockgun/schema.pickle new file mode 100644 index 000000000..ad15f4854 --- /dev/null +++ b/tests/mockgun/schema.pickle @@ -0,0 +1,98684 @@ +(dp0 +S'Playlist' +p1 +(dp2 +S'open_notes_count' +p3 +(dp4 +S'mandatory' +p5 +(dp6 +S'editable' +p7 +I00 +sS'value' +p8 +I00 +ssS'name' +p9 +(dp10 +S'editable' +p11 +I01 +sS'value' +p12 +S'Open Notes Count' +p13 +ssS'data_type' +p14 +(dp15 +S'editable' +p16 +I00 +sS'value' +p17 +S'text' +p18 +ssS'entity_type' +p19 +(dp20 +S'editable' +p21 +I00 +sS'value' +p22 +S'Playlist' +p23 +ssS'editable' +p24 +(dp25 +S'editable' +p26 +I00 +sS'value' +p27 +I00 +ssS'unique' +p28 +(dp29 +S'editable' +p30 +I00 +sS'value' +p31 +I00 +ssS'properties' +p32 +(dp33 +S'default_value' +p34 +(dp35 +S'editable' +p36 +I00 +sS'value' +p37 +NssS'summary_default' +p38 +(dp39 +S'editable' +p40 +I01 +sS'value' +p41 +S'none' +p42 +sssS'description' +p43 +(dp44 +S'editable' +p45 +I01 +sS'value' +p46 +S'' +p47 +sssS'code' +p48 +(dp49 +S'mandatory' +p50 +(dp51 +S'editable' +p52 +I00 +sS'value' +p53 +I01 +ssS'name' +p54 +(dp55 +S'editable' +p56 +I01 +sS'value' +p57 +S'Playlist Name' +p58 +ssS'data_type' +p59 +(dp60 +S'editable' +p61 +I00 +sS'value' +p62 +S'text' +p63 +ssS'entity_type' +p64 +(dp65 +S'editable' +p66 +I00 +sS'value' +p67 +S'Playlist' +p68 +ssS'editable' +p69 +(dp70 +S'editable' +p71 +I00 +sS'value' +p72 +I01 +ssS'unique' +p73 +(dp74 +S'editable' +p75 +I00 +sS'value' +p76 +I00 +ssS'properties' +p77 +(dp78 +S'default_value' +p79 +(dp80 +S'editable' +p81 +I00 +sS'value' +p82 +NssS'summary_default' +p83 +(dp84 +S'editable' +p85 +I01 +sS'value' +p86 +S'none' +p87 +sssS'description' +p88 +(dp89 +S'editable' +p90 +I01 +sS'value' +p91 +g47 +sssS'open_notes' +p92 +(dp93 +S'mandatory' +p94 +(dp95 +S'editable' +p96 +I00 +sS'value' +p97 +I00 +ssS'name' +p98 +(dp99 +S'editable' +p100 +I01 +sS'value' +p101 +S'Open Notes' +p102 +ssS'data_type' +p103 +(dp104 +S'editable' +p105 +I00 +sS'value' +p106 +S'multi_entity' +p107 +ssS'entity_type' +p108 +(dp109 +S'editable' +p110 +I00 +sS'value' +p111 +S'Playlist' +p112 +ssS'editable' +p113 +(dp114 +S'editable' +p115 +I00 +sS'value' +p116 +I00 +ssS'unique' +p117 +(dp118 +S'editable' +p119 +I00 +sS'value' +p120 +I00 +ssS'properties' +p121 +(dp122 +S'default_value' +p123 +(dp124 +S'editable' +p125 +I00 +sS'value' +p126 +NssS'summary_default' +p127 +(dp128 +S'editable' +p129 +I01 +sS'value' +p130 +S'none' +p131 +ssS'valid_types' +p132 +(dp133 +S'editable' +p134 +I01 +sS'value' +p135 +(lp136 +S'Note' +p137 +asssS'description' +p138 +(dp139 +S'editable' +p140 +I01 +sS'value' +p141 +g47 +sssS'description' +p142 +(dp143 +S'mandatory' +p144 +(dp145 +S'editable' +p146 +I00 +sS'value' +p147 +I00 +ssS'name' +p148 +(dp149 +S'editable' +p150 +I01 +sS'value' +p151 +S'Description' +p152 +ssS'data_type' +p153 +(dp154 +S'editable' +p155 +I00 +sS'value' +p156 +S'text' +p157 +ssS'entity_type' +p158 +(dp159 +S'editable' +p160 +I00 +sS'value' +p161 +S'Playlist' +p162 +ssS'editable' +p163 +(dp164 +S'editable' +p165 +I00 +sS'value' +p166 +I01 +ssS'unique' +p167 +(dp168 +S'editable' +p169 +I00 +sS'value' +p170 +I00 +ssS'properties' +p171 +(dp172 +S'default_value' +p173 +(dp174 +S'editable' +p175 +I00 +sS'value' +p176 +NssS'summary_default' +p177 +(dp178 +S'editable' +p179 +I01 +sS'value' +p180 +S'none' +p181 +sssS'description' +p182 +(dp183 +S'editable' +p184 +I01 +sS'value' +p185 +g47 +sssS'versions' +p186 +(dp187 +S'mandatory' +p188 +(dp189 +S'editable' +p190 +I00 +sS'value' +p191 +I00 +ssS'name' +p192 +(dp193 +S'editable' +p194 +I01 +sS'value' +p195 +S'Versions' +p196 +ssS'data_type' +p197 +(dp198 +S'editable' +p199 +I00 +sS'value' +p200 +S'multi_entity' +p201 +ssS'entity_type' +p202 +(dp203 +S'editable' +p204 +I00 +sS'value' +p205 +S'Playlist' +p206 +ssS'editable' +p207 +(dp208 +S'editable' +p209 +I00 +sS'value' +p210 +I01 +ssS'unique' +p211 +(dp212 +S'editable' +p213 +I00 +sS'value' +p214 +I00 +ssS'properties' +p215 +(dp216 +S'default_value' +p217 +(dp218 +S'editable' +p219 +I00 +sS'value' +p220 +NssS'summary_default' +p221 +(dp222 +S'editable' +p223 +I01 +sS'value' +p224 +S'none' +p225 +ssS'valid_types' +p226 +(dp227 +S'editable' +p228 +I01 +sS'value' +p229 +(lp230 +S'Version' +p231 +asssS'description' +p232 +(dp233 +S'editable' +p234 +I01 +sS'value' +p235 +g47 +sssS'notes' +p236 +(dp237 +S'mandatory' +p238 +(dp239 +S'editable' +p240 +I00 +sS'value' +p241 +I00 +ssS'name' +p242 +(dp243 +S'editable' +p244 +I01 +sS'value' +p245 +S'Notes' +p246 +ssS'data_type' +p247 +(dp248 +S'editable' +p249 +I00 +sS'value' +p250 +S'multi_entity' +p251 +ssS'entity_type' +p252 +(dp253 +S'editable' +p254 +I00 +sS'value' +p255 +S'Playlist' +p256 +ssS'editable' +p257 +(dp258 +S'editable' +p259 +I00 +sS'value' +p260 +I01 +ssS'unique' +p261 +(dp262 +S'editable' +p263 +I00 +sS'value' +p264 +I00 +ssS'properties' +p265 +(dp266 +S'default_value' +p267 +(dp268 +S'editable' +p269 +I00 +sS'value' +p270 +NssS'summary_default' +p271 +(dp272 +S'editable' +p273 +I01 +sS'value' +p274 +S'none' +p275 +ssS'valid_types' +p276 +(dp277 +S'editable' +p278 +I01 +sS'value' +p279 +(lp280 +S'Note' +p281 +asssS'description' +p282 +(dp283 +S'editable' +p284 +I01 +sS'value' +p285 +g47 +sssS'media_center_viewed_by_current_user_at' +p286 +(dp287 +S'mandatory' +p288 +(dp289 +S'editable' +p290 +I00 +sS'value' +p291 +I00 +ssS'name' +p292 +(dp293 +S'editable' +p294 +I01 +sS'value' +p295 +S'Media Center Date Viewed' +p296 +ssS'data_type' +p297 +(dp298 +S'editable' +p299 +I00 +sS'value' +p300 +S'date_time' +p301 +ssS'entity_type' +p302 +(dp303 +S'editable' +p304 +I00 +sS'value' +p305 +S'Playlist' +p306 +ssS'editable' +p307 +(dp308 +S'editable' +p309 +I00 +sS'value' +p310 +I00 +ssS'unique' +p311 +(dp312 +S'editable' +p313 +I00 +sS'value' +p314 +I00 +ssS'properties' +p315 +(dp316 +S'default_value' +p317 +(dp318 +S'editable' +p319 +I00 +sS'value' +p320 +NssS'summary_default' +p321 +(dp322 +S'editable' +p323 +I00 +sS'value' +p324 +S'none' +p325 +sssS'description' +p326 +(dp327 +S'editable' +p328 +I01 +sS'value' +p329 +g47 +sssS'sg_status' +p330 +(dp331 +S'mandatory' +p332 +(dp333 +S'editable' +p334 +I00 +sS'value' +p335 +I00 +ssS'name' +p336 +(dp337 +S'editable' +p338 +I01 +sS'value' +p339 +S'Status' +p340 +ssS'data_type' +p341 +(dp342 +S'editable' +p343 +I00 +sS'value' +p344 +S'status_list' +p345 +ssS'entity_type' +p346 +(dp347 +S'editable' +p348 +I00 +sS'value' +p349 +S'Playlist' +p350 +ssS'editable' +p351 +(dp352 +S'editable' +p353 +I00 +sS'value' +p354 +I01 +ssS'unique' +p355 +(dp356 +S'editable' +p357 +I00 +sS'value' +p358 +I00 +ssS'properties' +p359 +(dp360 +S'default_value' +p361 +(dp362 +S'editable' +p363 +I01 +sS'value' +p364 +S'opn' +p365 +ssS'valid_values' +p366 +(dp367 +S'editable' +p368 +I01 +sS'value' +p369 +(lp370 +S'clsd' +p371 +aS'ip' +p372 +aS'opn' +p373 +assS'summary_default' +p374 +(dp375 +S'editable' +p376 +I01 +sS'value' +p377 +S'none' +p378 +sssS'description' +p379 +(dp380 +S'editable' +p381 +I01 +sS'value' +p382 +g47 +sssS'updated_at' +p383 +(dp384 +S'mandatory' +p385 +(dp386 +S'editable' +p387 +I00 +sS'value' +p388 +I00 +ssS'name' +p389 +(dp390 +S'editable' +p391 +I01 +sS'value' +p392 +S'Date Updated' +p393 +ssS'data_type' +p394 +(dp395 +S'editable' +p396 +I00 +sS'value' +p397 +S'date_time' +p398 +ssS'entity_type' +p399 +(dp400 +S'editable' +p401 +I00 +sS'value' +p402 +S'Playlist' +p403 +ssS'editable' +p404 +(dp405 +S'editable' +p406 +I00 +sS'value' +p407 +I00 +ssS'unique' +p408 +(dp409 +S'editable' +p410 +I00 +sS'value' +p411 +I00 +ssS'properties' +p412 +(dp413 +S'default_value' +p414 +(dp415 +S'editable' +p416 +I00 +sS'value' +p417 +NssS'summary_default' +p418 +(dp419 +S'editable' +p420 +I01 +sS'value' +p421 +S'none' +p422 +sssS'description' +p423 +(dp424 +S'editable' +p425 +I01 +sS'value' +p426 +g47 +sssS'created_by' +p427 +(dp428 +S'mandatory' +p429 +(dp430 +S'editable' +p431 +I00 +sS'value' +p432 +I00 +ssS'name' +p433 +(dp434 +S'editable' +p435 +I01 +sS'value' +p436 +S'Created by' +p437 +ssS'data_type' +p438 +(dp439 +S'editable' +p440 +I00 +sS'value' +p441 +S'entity' +p442 +ssS'entity_type' +p443 +(dp444 +S'editable' +p445 +I00 +sS'value' +p446 +S'Playlist' +p447 +ssS'editable' +p448 +(dp449 +S'editable' +p450 +I00 +sS'value' +p451 +I00 +ssS'unique' +p452 +(dp453 +S'editable' +p454 +I00 +sS'value' +p455 +I00 +ssS'properties' +p456 +(dp457 +S'default_value' +p458 +(dp459 +S'editable' +p460 +I00 +sS'value' +p461 +NssS'summary_default' +p462 +(dp463 +S'editable' +p464 +I01 +sS'value' +p465 +S'none' +p466 +ssS'valid_types' +p467 +(dp468 +S'editable' +p469 +I01 +sS'value' +p470 +(lp471 +S'HumanUser' +p472 +aS'ApiUser' +p473 +asssS'description' +p474 +(dp475 +S'editable' +p476 +I01 +sS'value' +p477 +g47 +sssS'id' +p478 +(dp479 +S'mandatory' +p480 +(dp481 +S'editable' +p482 +I00 +sS'value' +p483 +I00 +ssS'name' +p484 +(dp485 +S'editable' +p486 +I01 +sS'value' +p487 +S'Id' +p488 +ssS'data_type' +p489 +(dp490 +S'editable' +p491 +I00 +sS'value' +p492 +S'number' +p493 +ssS'entity_type' +p494 +(dp495 +S'editable' +p496 +I00 +sS'value' +p497 +S'Playlist' +p498 +ssS'editable' +p499 +(dp500 +S'editable' +p501 +I00 +sS'value' +p502 +I00 +ssS'unique' +p503 +(dp504 +S'editable' +p505 +I00 +sS'value' +p506 +I00 +ssS'properties' +p507 +(dp508 +S'default_value' +p509 +(dp510 +S'editable' +p511 +I00 +sS'value' +p512 +NssS'summary_default' +p513 +(dp514 +S'editable' +p515 +I01 +sS'value' +p516 +S'none' +p517 +sssS'description' +p518 +(dp519 +S'editable' +p520 +I01 +sS'value' +p521 +g47 +sssS'project' +p522 +(dp523 +S'mandatory' +p524 +(dp525 +S'editable' +p526 +I00 +sS'value' +p527 +I00 +ssS'name' +p528 +(dp529 +S'editable' +p530 +I01 +sS'value' +p531 +S'Project' +p532 +ssS'data_type' +p533 +(dp534 +S'editable' +p535 +I00 +sS'value' +p536 +S'entity' +p537 +ssS'entity_type' +p538 +(dp539 +S'editable' +p540 +I00 +sS'value' +p541 +S'Playlist' +p542 +ssS'editable' +p543 +(dp544 +S'editable' +p545 +I00 +sS'value' +p546 +I01 +ssS'unique' +p547 +(dp548 +S'editable' +p549 +I00 +sS'value' +p550 +I00 +ssS'properties' +p551 +(dp552 +S'default_value' +p553 +(dp554 +S'editable' +p555 +I00 +sS'value' +p556 +NssS'summary_default' +p557 +(dp558 +S'editable' +p559 +I01 +sS'value' +p560 +S'none' +p561 +ssS'valid_types' +p562 +(dp563 +S'editable' +p564 +I01 +sS'value' +p565 +(lp566 +S'Project' +p567 +asssS'description' +p568 +(dp569 +S'editable' +p570 +I01 +sS'value' +p571 +g47 +sssS'filmstrip_image' +p572 +(dp573 +S'mandatory' +p574 +(dp575 +S'editable' +p576 +I00 +sS'value' +p577 +I00 +ssS'name' +p578 +(dp579 +S'editable' +p580 +I01 +sS'value' +p581 +S'Filmstrip Thumbnail' +p582 +ssS'data_type' +p583 +(dp584 +S'editable' +p585 +I00 +sS'value' +p586 +S'image' +p587 +ssS'entity_type' +p588 +(dp589 +S'editable' +p590 +I00 +sS'value' +p591 +S'Playlist' +p592 +ssS'editable' +p593 +(dp594 +S'editable' +p595 +I00 +sS'value' +p596 +I01 +ssS'unique' +p597 +(dp598 +S'editable' +p599 +I00 +sS'value' +p600 +I00 +ssS'properties' +p601 +(dp602 +S'default_value' +p603 +(dp604 +S'editable' +p605 +I00 +sS'value' +p606 +NssS'summary_default' +p607 +(dp608 +S'editable' +p609 +I01 +sS'value' +p610 +S'none' +p611 +sssS'description' +p612 +(dp613 +S'editable' +p614 +I01 +sS'value' +p615 +g47 +sssS'sg_date_and_time' +p616 +(dp617 +S'mandatory' +p618 +(dp619 +S'editable' +p620 +I00 +sS'value' +p621 +I00 +ssS'name' +p622 +(dp623 +S'editable' +p624 +I01 +sS'value' +p625 +S'Date and Time' +p626 +ssS'data_type' +p627 +(dp628 +S'editable' +p629 +I00 +sS'value' +p630 +S'date_time' +p631 +ssS'entity_type' +p632 +(dp633 +S'editable' +p634 +I00 +sS'value' +p635 +S'Playlist' +p636 +ssS'editable' +p637 +(dp638 +S'editable' +p639 +I00 +sS'value' +p640 +I01 +ssS'unique' +p641 +(dp642 +S'editable' +p643 +I00 +sS'value' +p644 +I00 +ssS'properties' +p645 +(dp646 +S'default_value' +p647 +(dp648 +S'editable' +p649 +I00 +sS'value' +p650 +NssS'summary_default' +p651 +(dp652 +S'editable' +p653 +I01 +sS'value' +p654 +S'none' +p655 +sssS'description' +p656 +(dp657 +S'editable' +p658 +I01 +sS'value' +p659 +g47 +sssS'image' +p660 +(dp661 +S'mandatory' +p662 +(dp663 +S'editable' +p664 +I00 +sS'value' +p665 +I00 +ssS'name' +p666 +(dp667 +S'editable' +p668 +I01 +sS'value' +p669 +S'Thumbnail' +p670 +ssS'data_type' +p671 +(dp672 +S'editable' +p673 +I00 +sS'value' +p674 +S'image' +p675 +ssS'entity_type' +p676 +(dp677 +S'editable' +p678 +I00 +sS'value' +p679 +S'Playlist' +p680 +ssS'editable' +p681 +(dp682 +S'editable' +p683 +I00 +sS'value' +p684 +I01 +ssS'unique' +p685 +(dp686 +S'editable' +p687 +I00 +sS'value' +p688 +I00 +ssS'properties' +p689 +(dp690 +S'default_value' +p691 +(dp692 +S'editable' +p693 +I00 +sS'value' +p694 +NssS'summary_default' +p695 +(dp696 +S'editable' +p697 +I01 +sS'value' +p698 +S'none' +p699 +sssS'description' +p700 +(dp701 +S'editable' +p702 +I01 +sS'value' +p703 +g47 +sssS'current_user_favorite' +p704 +(dp705 +S'mandatory' +p706 +(dp707 +S'editable' +p708 +I00 +sS'value' +p709 +I00 +ssS'name' +p710 +(dp711 +S'editable' +p712 +I01 +sS'value' +p713 +S'Favorite' +p714 +ssS'data_type' +p715 +(dp716 +S'editable' +p717 +I00 +sS'value' +p718 +S'checkbox' +p719 +ssS'entity_type' +p720 +(dp721 +S'editable' +p722 +I00 +sS'value' +p723 +S'Playlist' +p724 +ssS'editable' +p725 +(dp726 +S'editable' +p727 +I00 +sS'value' +p728 +I01 +ssS'unique' +p729 +(dp730 +S'editable' +p731 +I00 +sS'value' +p732 +I00 +ssS'properties' +p733 +(dp734 +S'default_value' +p735 +(dp736 +S'editable' +p737 +I00 +sS'value' +p738 +NssS'summary_default' +p739 +(dp740 +S'editable' +p741 +I01 +sS'value' +p742 +S'none' +p743 +sssS'description' +p744 +(dp745 +S'editable' +p746 +I01 +sS'value' +p747 +g47 +sssS'cached_display_name' +p748 +(dp749 +S'mandatory' +p750 +(dp751 +S'editable' +p752 +I00 +sS'value' +p753 +I00 +ssS'name' +p754 +(dp755 +S'editable' +p756 +I01 +sS'value' +p757 +S'Cached Display Name' +p758 +ssS'data_type' +p759 +(dp760 +S'editable' +p761 +I00 +sS'value' +p762 +S'text' +p763 +ssS'entity_type' +p764 +(dp765 +S'editable' +p766 +I00 +sS'value' +p767 +S'Playlist' +p768 +ssS'editable' +p769 +(dp770 +S'editable' +p771 +I00 +sS'value' +p772 +I01 +ssS'unique' +p773 +(dp774 +S'editable' +p775 +I00 +sS'value' +p776 +I00 +ssS'properties' +p777 +(dp778 +S'default_value' +p779 +(dp780 +S'editable' +p781 +I00 +sS'value' +p782 +NssS'summary_default' +p783 +(dp784 +S'editable' +p785 +I00 +sS'value' +p786 +S'none' +p787 +sssS'description' +p788 +(dp789 +S'editable' +p790 +I01 +sS'value' +p791 +g47 +sssS'tag_list' +p792 +(dp793 +S'mandatory' +p794 +(dp795 +S'editable' +p796 +I00 +sS'value' +p797 +I00 +ssS'name' +p798 +(dp799 +S'editable' +p800 +I01 +sS'value' +p801 +S'Tags' +p802 +ssS'data_type' +p803 +(dp804 +S'editable' +p805 +I00 +sS'value' +p806 +S'tag_list' +p807 +ssS'entity_type' +p808 +(dp809 +S'editable' +p810 +I00 +sS'value' +p811 +S'Playlist' +p812 +ssS'editable' +p813 +(dp814 +S'editable' +p815 +I00 +sS'value' +p816 +I01 +ssS'unique' +p817 +(dp818 +S'editable' +p819 +I00 +sS'value' +p820 +I00 +ssS'properties' +p821 +(dp822 +S'default_value' +p823 +(dp824 +S'editable' +p825 +I00 +sS'value' +p826 +NssS'summary_default' +p827 +(dp828 +S'editable' +p829 +I01 +sS'value' +p830 +S'none' +p831 +ssS'valid_types' +p832 +(dp833 +S'editable' +p834 +I01 +sS'value' +p835 +(lp836 +S'Tag' +p837 +asssS'description' +p838 +(dp839 +S'editable' +p840 +I01 +sS'value' +p841 +g47 +sssS'media_center_viewed_by_current_user' +p842 +(dp843 +S'mandatory' +p844 +(dp845 +S'editable' +p846 +I00 +sS'value' +p847 +I00 +ssS'name' +p848 +(dp849 +S'editable' +p850 +I01 +sS'value' +p851 +S'Media Center Viewed/Unviewed' +p852 +ssS'data_type' +p853 +(dp854 +S'editable' +p855 +I00 +sS'value' +p856 +S'list' +p857 +ssS'entity_type' +p858 +(dp859 +S'editable' +p860 +I00 +sS'value' +p861 +S'Playlist' +p862 +ssS'editable' +p863 +(dp864 +S'editable' +p865 +I00 +sS'value' +p866 +I01 +ssS'unique' +p867 +(dp868 +S'editable' +p869 +I00 +sS'value' +p870 +I00 +ssS'properties' +p871 +(dp872 +S'default_value' +p873 +(dp874 +S'editable' +p875 +I00 +sS'value' +p876 +NssS'valid_values' +p877 +(dp878 +S'editable' +p879 +I00 +sS'value' +p880 +(lp881 +S'read' +p882 +aS'unread' +p883 +assS'summary_default' +p884 +(dp885 +S'editable' +p886 +I00 +sS'value' +p887 +S'none' +p888 +sssS'description' +p889 +(dp890 +S'editable' +p891 +I01 +sS'value' +p892 +g47 +sssS'created_at' +p893 +(dp894 +S'mandatory' +p895 +(dp896 +S'editable' +p897 +I00 +sS'value' +p898 +I00 +ssS'name' +p899 +(dp900 +S'editable' +p901 +I01 +sS'value' +p902 +S'Date Created' +p903 +ssS'data_type' +p904 +(dp905 +S'editable' +p906 +I00 +sS'value' +p907 +S'date_time' +p908 +ssS'entity_type' +p909 +(dp910 +S'editable' +p911 +I00 +sS'value' +p912 +S'Playlist' +p913 +ssS'editable' +p914 +(dp915 +S'editable' +p916 +I00 +sS'value' +p917 +I00 +ssS'unique' +p918 +(dp919 +S'editable' +p920 +I00 +sS'value' +p921 +I00 +ssS'properties' +p922 +(dp923 +S'default_value' +p924 +(dp925 +S'editable' +p926 +I00 +sS'value' +p927 +NssS'summary_default' +p928 +(dp929 +S'editable' +p930 +I01 +sS'value' +p931 +S'none' +p932 +sssS'description' +p933 +(dp934 +S'editable' +p935 +I01 +sS'value' +p936 +g47 +sssS'updated_by' +p937 +(dp938 +S'mandatory' +p939 +(dp940 +S'editable' +p941 +I00 +sS'value' +p942 +I00 +ssS'name' +p943 +(dp944 +S'editable' +p945 +I01 +sS'value' +p946 +S'Updated by' +p947 +ssS'data_type' +p948 +(dp949 +S'editable' +p950 +I00 +sS'value' +p951 +S'entity' +p952 +ssS'entity_type' +p953 +(dp954 +S'editable' +p955 +I00 +sS'value' +p956 +S'Playlist' +p957 +ssS'editable' +p958 +(dp959 +S'editable' +p960 +I00 +sS'value' +p961 +I00 +ssS'unique' +p962 +(dp963 +S'editable' +p964 +I00 +sS'value' +p965 +I00 +ssS'properties' +p966 +(dp967 +S'default_value' +p968 +(dp969 +S'editable' +p970 +I00 +sS'value' +p971 +NssS'summary_default' +p972 +(dp973 +S'editable' +p974 +I01 +sS'value' +p975 +S'none' +p976 +ssS'valid_types' +p977 +(dp978 +S'editable' +p979 +I01 +sS'value' +p980 +(lp981 +S'HumanUser' +p982 +aS'ApiUser' +p983 +asssS'description' +p984 +(dp985 +S'editable' +p986 +I01 +sS'value' +p987 +g47 +ssssS'AppWelcomeUserConnection' +p988 +(dp989 +S'cached_display_name' +p990 +(dp991 +S'mandatory' +p992 +(dp993 +S'editable' +p994 +I00 +sS'value' +p995 +I00 +ssS'name' +p996 +(dp997 +S'editable' +p998 +I01 +sS'value' +p999 +S'Cached Display Name' +p1000 +ssS'data_type' +p1001 +(dp1002 +S'editable' +p1003 +I00 +sS'value' +p1004 +S'text' +p1005 +ssS'entity_type' +p1006 +(dp1007 +S'editable' +p1008 +I00 +sS'value' +p1009 +S'AppWelcomeUserConnection' +p1010 +ssS'editable' +p1011 +(dp1012 +S'editable' +p1013 +I00 +sS'value' +p1014 +I01 +ssS'unique' +p1015 +(dp1016 +S'editable' +p1017 +I00 +sS'value' +p1018 +I00 +ssS'properties' +p1019 +(dp1020 +S'default_value' +p1021 +(dp1022 +S'editable' +p1023 +I00 +sS'value' +p1024 +NssS'summary_default' +p1025 +(dp1026 +S'editable' +p1027 +I00 +sS'value' +p1028 +S'none' +p1029 +sssS'description' +p1030 +(dp1031 +S'editable' +p1032 +I01 +sS'value' +p1033 +g47 +sssS'app_welcome' +p1034 +(dp1035 +S'mandatory' +p1036 +(dp1037 +S'editable' +p1038 +I00 +sS'value' +p1039 +I00 +ssS'name' +p1040 +(dp1041 +S'editable' +p1042 +I01 +sS'value' +p1043 +S'App Welcome' +p1044 +ssS'data_type' +p1045 +(dp1046 +S'editable' +p1047 +I00 +sS'value' +p1048 +S'entity' +p1049 +ssS'entity_type' +p1050 +(dp1051 +S'editable' +p1052 +I00 +sS'value' +p1053 +S'AppWelcomeUserConnection' +p1054 +ssS'editable' +p1055 +(dp1056 +S'editable' +p1057 +I00 +sS'value' +p1058 +I01 +ssS'unique' +p1059 +(dp1060 +S'editable' +p1061 +I00 +sS'value' +p1062 +I00 +ssS'properties' +p1063 +(dp1064 +S'default_value' +p1065 +(dp1066 +S'editable' +p1067 +I00 +sS'value' +p1068 +NssS'summary_default' +p1069 +(dp1070 +S'editable' +p1071 +I00 +sS'value' +p1072 +S'none' +p1073 +ssS'valid_types' +p1074 +(dp1075 +S'editable' +p1076 +I00 +sS'value' +p1077 +(lp1078 +S'AppWelcome' +p1079 +asssS'description' +p1080 +(dp1081 +S'editable' +p1082 +I01 +sS'value' +p1083 +g47 +sssS'id' +p1084 +(dp1085 +S'mandatory' +p1086 +(dp1087 +S'editable' +p1088 +I00 +sS'value' +p1089 +I00 +ssS'name' +p1090 +(dp1091 +S'editable' +p1092 +I01 +sS'value' +p1093 +S'Id' +p1094 +ssS'data_type' +p1095 +(dp1096 +S'editable' +p1097 +I00 +sS'value' +p1098 +S'number' +p1099 +ssS'entity_type' +p1100 +(dp1101 +S'editable' +p1102 +I00 +sS'value' +p1103 +S'AppWelcomeUserConnection' +p1104 +ssS'editable' +p1105 +(dp1106 +S'editable' +p1107 +I00 +sS'value' +p1108 +I00 +ssS'unique' +p1109 +(dp1110 +S'editable' +p1111 +I00 +sS'value' +p1112 +I00 +ssS'properties' +p1113 +(dp1114 +S'default_value' +p1115 +(dp1116 +S'editable' +p1117 +I00 +sS'value' +p1118 +NssS'summary_default' +p1119 +(dp1120 +S'editable' +p1121 +I00 +sS'value' +p1122 +S'none' +p1123 +sssS'description' +p1124 +(dp1125 +S'editable' +p1126 +I01 +sS'value' +p1127 +g47 +sssS'user' +p1128 +(dp1129 +S'mandatory' +p1130 +(dp1131 +S'editable' +p1132 +I00 +sS'value' +p1133 +I00 +ssS'name' +p1134 +(dp1135 +S'editable' +p1136 +I01 +sS'value' +p1137 +S'User' +p1138 +ssS'data_type' +p1139 +(dp1140 +S'editable' +p1141 +I00 +sS'value' +p1142 +S'entity' +p1143 +ssS'entity_type' +p1144 +(dp1145 +S'editable' +p1146 +I00 +sS'value' +p1147 +S'AppWelcomeUserConnection' +p1148 +ssS'editable' +p1149 +(dp1150 +S'editable' +p1151 +I00 +sS'value' +p1152 +I01 +ssS'unique' +p1153 +(dp1154 +S'editable' +p1155 +I00 +sS'value' +p1156 +I00 +ssS'properties' +p1157 +(dp1158 +S'default_value' +p1159 +(dp1160 +S'editable' +p1161 +I00 +sS'value' +p1162 +NssS'summary_default' +p1163 +(dp1164 +S'editable' +p1165 +I00 +sS'value' +p1166 +S'none' +p1167 +ssS'valid_types' +p1168 +(dp1169 +S'editable' +p1170 +I00 +sS'value' +p1171 +(lp1172 +S'HumanUser' +p1173 +asssS'description' +p1174 +(dp1175 +S'editable' +p1176 +I01 +sS'value' +p1177 +g47 +ssssS'Group' +p1178 +(dp1179 +S'open_notes_count' +p1180 +(dp1181 +S'mandatory' +p1182 +(dp1183 +S'editable' +p1184 +I00 +sS'value' +p1185 +I00 +ssS'name' +p1186 +(dp1187 +S'editable' +p1188 +I01 +sS'value' +p1189 +S'Open Notes Count' +p1190 +ssS'data_type' +p1191 +(dp1192 +S'editable' +p1193 +I00 +sS'value' +p1194 +S'text' +p1195 +ssS'entity_type' +p1196 +(dp1197 +S'editable' +p1198 +I00 +sS'value' +p1199 +S'Group' +p1200 +ssS'editable' +p1201 +(dp1202 +S'editable' +p1203 +I00 +sS'value' +p1204 +I00 +ssS'unique' +p1205 +(dp1206 +S'editable' +p1207 +I00 +sS'value' +p1208 +I00 +ssS'properties' +p1209 +(dp1210 +S'default_value' +p1211 +(dp1212 +S'editable' +p1213 +I00 +sS'value' +p1214 +NssS'summary_default' +p1215 +(dp1216 +S'editable' +p1217 +I01 +sS'value' +p1218 +S'none' +p1219 +sssS'description' +p1220 +(dp1221 +S'editable' +p1222 +I01 +sS'value' +p1223 +g47 +sssS'code' +p1224 +(dp1225 +S'mandatory' +p1226 +(dp1227 +S'editable' +p1228 +I00 +sS'value' +p1229 +I01 +ssS'name' +p1230 +(dp1231 +S'editable' +p1232 +I01 +sS'value' +p1233 +S'Group Name' +p1234 +ssS'data_type' +p1235 +(dp1236 +S'editable' +p1237 +I00 +sS'value' +p1238 +S'text' +p1239 +ssS'entity_type' +p1240 +(dp1241 +S'editable' +p1242 +I00 +sS'value' +p1243 +S'Group' +p1244 +ssS'editable' +p1245 +(dp1246 +S'editable' +p1247 +I00 +sS'value' +p1248 +I01 +ssS'unique' +p1249 +(dp1250 +S'editable' +p1251 +I00 +sS'value' +p1252 +I00 +ssS'properties' +p1253 +(dp1254 +S'default_value' +p1255 +(dp1256 +S'editable' +p1257 +I00 +sS'value' +p1258 +NssS'summary_default' +p1259 +(dp1260 +S'editable' +p1261 +I01 +sS'value' +p1262 +S'none' +p1263 +sssS'description' +p1264 +(dp1265 +S'editable' +p1266 +I01 +sS'value' +p1267 +g47 +sssS'open_notes' +p1268 +(dp1269 +S'mandatory' +p1270 +(dp1271 +S'editable' +p1272 +I00 +sS'value' +p1273 +I00 +ssS'name' +p1274 +(dp1275 +S'editable' +p1276 +I01 +sS'value' +p1277 +S'Open Notes' +p1278 +ssS'data_type' +p1279 +(dp1280 +S'editable' +p1281 +I00 +sS'value' +p1282 +S'multi_entity' +p1283 +ssS'entity_type' +p1284 +(dp1285 +S'editable' +p1286 +I00 +sS'value' +p1287 +S'Group' +p1288 +ssS'editable' +p1289 +(dp1290 +S'editable' +p1291 +I00 +sS'value' +p1292 +I00 +ssS'unique' +p1293 +(dp1294 +S'editable' +p1295 +I00 +sS'value' +p1296 +I00 +ssS'properties' +p1297 +(dp1298 +S'default_value' +p1299 +(dp1300 +S'editable' +p1301 +I00 +sS'value' +p1302 +NssS'summary_default' +p1303 +(dp1304 +S'editable' +p1305 +I01 +sS'value' +p1306 +S'none' +p1307 +ssS'valid_types' +p1308 +(dp1309 +S'editable' +p1310 +I01 +sS'value' +p1311 +(lp1312 +S'Note' +p1313 +asssS'description' +p1314 +(dp1315 +S'editable' +p1316 +I01 +sS'value' +p1317 +g47 +sssS'users' +p1318 +(dp1319 +S'mandatory' +p1320 +(dp1321 +S'editable' +p1322 +I00 +sS'value' +p1323 +I00 +ssS'name' +p1324 +(dp1325 +S'editable' +p1326 +I01 +sS'value' +p1327 +S'Users' +p1328 +ssS'data_type' +p1329 +(dp1330 +S'editable' +p1331 +I00 +sS'value' +p1332 +S'multi_entity' +p1333 +ssS'entity_type' +p1334 +(dp1335 +S'editable' +p1336 +I00 +sS'value' +p1337 +S'Group' +p1338 +ssS'editable' +p1339 +(dp1340 +S'editable' +p1341 +I00 +sS'value' +p1342 +I01 +ssS'unique' +p1343 +(dp1344 +S'editable' +p1345 +I00 +sS'value' +p1346 +I00 +ssS'properties' +p1347 +(dp1348 +S'default_value' +p1349 +(dp1350 +S'editable' +p1351 +I00 +sS'value' +p1352 +NssS'summary_default' +p1353 +(dp1354 +S'editable' +p1355 +I01 +sS'value' +p1356 +S'none' +p1357 +ssS'valid_types' +p1358 +(dp1359 +S'editable' +p1360 +I01 +sS'value' +p1361 +(lp1362 +S'HumanUser' +p1363 +asssS'description' +p1364 +(dp1365 +S'editable' +p1366 +I01 +sS'value' +p1367 +g47 +sssS'created_at' +p1368 +(dp1369 +S'mandatory' +p1370 +(dp1371 +S'editable' +p1372 +I00 +sS'value' +p1373 +I00 +ssS'name' +p1374 +(dp1375 +S'editable' +p1376 +I01 +sS'value' +p1377 +S'Date Created' +p1378 +ssS'data_type' +p1379 +(dp1380 +S'editable' +p1381 +I00 +sS'value' +p1382 +S'date_time' +p1383 +ssS'entity_type' +p1384 +(dp1385 +S'editable' +p1386 +I00 +sS'value' +p1387 +S'Group' +p1388 +ssS'editable' +p1389 +(dp1390 +S'editable' +p1391 +I00 +sS'value' +p1392 +I00 +ssS'unique' +p1393 +(dp1394 +S'editable' +p1395 +I00 +sS'value' +p1396 +I00 +ssS'properties' +p1397 +(dp1398 +S'default_value' +p1399 +(dp1400 +S'editable' +p1401 +I00 +sS'value' +p1402 +NssS'summary_default' +p1403 +(dp1404 +S'editable' +p1405 +I01 +sS'value' +p1406 +S'none' +p1407 +sssS'description' +p1408 +(dp1409 +S'editable' +p1410 +I01 +sS'value' +p1411 +g47 +sssS'updated_at' +p1412 +(dp1413 +S'mandatory' +p1414 +(dp1415 +S'editable' +p1416 +I00 +sS'value' +p1417 +I00 +ssS'name' +p1418 +(dp1419 +S'editable' +p1420 +I01 +sS'value' +p1421 +S'Date Updated' +p1422 +ssS'data_type' +p1423 +(dp1424 +S'editable' +p1425 +I00 +sS'value' +p1426 +S'date_time' +p1427 +ssS'entity_type' +p1428 +(dp1429 +S'editable' +p1430 +I00 +sS'value' +p1431 +S'Group' +p1432 +ssS'editable' +p1433 +(dp1434 +S'editable' +p1435 +I00 +sS'value' +p1436 +I00 +ssS'unique' +p1437 +(dp1438 +S'editable' +p1439 +I00 +sS'value' +p1440 +I00 +ssS'properties' +p1441 +(dp1442 +S'default_value' +p1443 +(dp1444 +S'editable' +p1445 +I00 +sS'value' +p1446 +NssS'summary_default' +p1447 +(dp1448 +S'editable' +p1449 +I01 +sS'value' +p1450 +S'none' +p1451 +sssS'description' +p1452 +(dp1453 +S'editable' +p1454 +I01 +sS'value' +p1455 +g47 +sssS'created_by' +p1456 +(dp1457 +S'mandatory' +p1458 +(dp1459 +S'editable' +p1460 +I00 +sS'value' +p1461 +I00 +ssS'name' +p1462 +(dp1463 +S'editable' +p1464 +I01 +sS'value' +p1465 +S'Created by' +p1466 +ssS'data_type' +p1467 +(dp1468 +S'editable' +p1469 +I00 +sS'value' +p1470 +S'entity' +p1471 +ssS'entity_type' +p1472 +(dp1473 +S'editable' +p1474 +I00 +sS'value' +p1475 +S'Group' +p1476 +ssS'editable' +p1477 +(dp1478 +S'editable' +p1479 +I00 +sS'value' +p1480 +I00 +ssS'unique' +p1481 +(dp1482 +S'editable' +p1483 +I00 +sS'value' +p1484 +I00 +ssS'properties' +p1485 +(dp1486 +S'default_value' +p1487 +(dp1488 +S'editable' +p1489 +I00 +sS'value' +p1490 +NssS'summary_default' +p1491 +(dp1492 +S'editable' +p1493 +I01 +sS'value' +p1494 +S'none' +p1495 +ssS'valid_types' +p1496 +(dp1497 +S'editable' +p1498 +I01 +sS'value' +p1499 +(lp1500 +S'HumanUser' +p1501 +aS'ApiUser' +p1502 +asssS'description' +p1503 +(dp1504 +S'editable' +p1505 +I01 +sS'value' +p1506 +g47 +sssS'id' +p1507 +(dp1508 +S'mandatory' +p1509 +(dp1510 +S'editable' +p1511 +I00 +sS'value' +p1512 +I00 +ssS'name' +p1513 +(dp1514 +S'editable' +p1515 +I01 +sS'value' +p1516 +S'Id' +p1517 +ssS'data_type' +p1518 +(dp1519 +S'editable' +p1520 +I00 +sS'value' +p1521 +S'number' +p1522 +ssS'entity_type' +p1523 +(dp1524 +S'editable' +p1525 +I00 +sS'value' +p1526 +S'Group' +p1527 +ssS'editable' +p1528 +(dp1529 +S'editable' +p1530 +I00 +sS'value' +p1531 +I00 +ssS'unique' +p1532 +(dp1533 +S'editable' +p1534 +I00 +sS'value' +p1535 +I00 +ssS'properties' +p1536 +(dp1537 +S'default_value' +p1538 +(dp1539 +S'editable' +p1540 +I00 +sS'value' +p1541 +NssS'summary_default' +p1542 +(dp1543 +S'editable' +p1544 +I01 +sS'value' +p1545 +S'none' +p1546 +sssS'description' +p1547 +(dp1548 +S'editable' +p1549 +I01 +sS'value' +p1550 +g47 +sssS'cached_display_name' +p1551 +(dp1552 +S'mandatory' +p1553 +(dp1554 +S'editable' +p1555 +I00 +sS'value' +p1556 +I00 +ssS'name' +p1557 +(dp1558 +S'editable' +p1559 +I01 +sS'value' +p1560 +S'Cached Display Name' +p1561 +ssS'data_type' +p1562 +(dp1563 +S'editable' +p1564 +I00 +sS'value' +p1565 +S'text' +p1566 +ssS'entity_type' +p1567 +(dp1568 +S'editable' +p1569 +I00 +sS'value' +p1570 +S'Group' +p1571 +ssS'editable' +p1572 +(dp1573 +S'editable' +p1574 +I00 +sS'value' +p1575 +I01 +ssS'unique' +p1576 +(dp1577 +S'editable' +p1578 +I00 +sS'value' +p1579 +I00 +ssS'properties' +p1580 +(dp1581 +S'default_value' +p1582 +(dp1583 +S'editable' +p1584 +I00 +sS'value' +p1585 +NssS'summary_default' +p1586 +(dp1587 +S'editable' +p1588 +I00 +sS'value' +p1589 +S'none' +p1590 +sssS'description' +p1591 +(dp1592 +S'editable' +p1593 +I01 +sS'value' +p1594 +g47 +sssS'tag_list' +p1595 +(dp1596 +S'mandatory' +p1597 +(dp1598 +S'editable' +p1599 +I00 +sS'value' +p1600 +I00 +ssS'name' +p1601 +(dp1602 +S'editable' +p1603 +I01 +sS'value' +p1604 +S'Tags' +p1605 +ssS'data_type' +p1606 +(dp1607 +S'editable' +p1608 +I00 +sS'value' +p1609 +S'tag_list' +p1610 +ssS'entity_type' +p1611 +(dp1612 +S'editable' +p1613 +I00 +sS'value' +p1614 +S'Group' +p1615 +ssS'editable' +p1616 +(dp1617 +S'editable' +p1618 +I00 +sS'value' +p1619 +I01 +ssS'unique' +p1620 +(dp1621 +S'editable' +p1622 +I00 +sS'value' +p1623 +I00 +ssS'properties' +p1624 +(dp1625 +S'default_value' +p1626 +(dp1627 +S'editable' +p1628 +I00 +sS'value' +p1629 +NssS'summary_default' +p1630 +(dp1631 +S'editable' +p1632 +I01 +sS'value' +p1633 +S'none' +p1634 +ssS'valid_types' +p1635 +(dp1636 +S'editable' +p1637 +I01 +sS'value' +p1638 +(lp1639 +S'Tag' +p1640 +asssS'description' +p1641 +(dp1642 +S'editable' +p1643 +I01 +sS'value' +p1644 +g47 +sssS'notes' +p1645 +(dp1646 +S'mandatory' +p1647 +(dp1648 +S'editable' +p1649 +I00 +sS'value' +p1650 +I00 +ssS'name' +p1651 +(dp1652 +S'editable' +p1653 +I01 +sS'value' +p1654 +S'Notes' +p1655 +ssS'data_type' +p1656 +(dp1657 +S'editable' +p1658 +I00 +sS'value' +p1659 +S'multi_entity' +p1660 +ssS'entity_type' +p1661 +(dp1662 +S'editable' +p1663 +I00 +sS'value' +p1664 +S'Group' +p1665 +ssS'editable' +p1666 +(dp1667 +S'editable' +p1668 +I00 +sS'value' +p1669 +I01 +ssS'unique' +p1670 +(dp1671 +S'editable' +p1672 +I00 +sS'value' +p1673 +I00 +ssS'properties' +p1674 +(dp1675 +S'default_value' +p1676 +(dp1677 +S'editable' +p1678 +I00 +sS'value' +p1679 +NssS'summary_default' +p1680 +(dp1681 +S'editable' +p1682 +I01 +sS'value' +p1683 +S'none' +p1684 +ssS'valid_types' +p1685 +(dp1686 +S'editable' +p1687 +I01 +sS'value' +p1688 +(lp1689 +S'Note' +p1690 +asssS'description' +p1691 +(dp1692 +S'editable' +p1693 +I01 +sS'value' +p1694 +g47 +sssS'updated_by' +p1695 +(dp1696 +S'mandatory' +p1697 +(dp1698 +S'editable' +p1699 +I00 +sS'value' +p1700 +I00 +ssS'name' +p1701 +(dp1702 +S'editable' +p1703 +I01 +sS'value' +p1704 +S'Updated by' +p1705 +ssS'data_type' +p1706 +(dp1707 +S'editable' +p1708 +I00 +sS'value' +p1709 +S'entity' +p1710 +ssS'entity_type' +p1711 +(dp1712 +S'editable' +p1713 +I00 +sS'value' +p1714 +S'Group' +p1715 +ssS'editable' +p1716 +(dp1717 +S'editable' +p1718 +I00 +sS'value' +p1719 +I00 +ssS'unique' +p1720 +(dp1721 +S'editable' +p1722 +I00 +sS'value' +p1723 +I00 +ssS'properties' +p1724 +(dp1725 +S'default_value' +p1726 +(dp1727 +S'editable' +p1728 +I00 +sS'value' +p1729 +NssS'summary_default' +p1730 +(dp1731 +S'editable' +p1732 +I01 +sS'value' +p1733 +S'none' +p1734 +ssS'valid_types' +p1735 +(dp1736 +S'editable' +p1737 +I01 +sS'value' +p1738 +(lp1739 +S'HumanUser' +p1740 +aS'ApiUser' +p1741 +asssS'description' +p1742 +(dp1743 +S'editable' +p1744 +I01 +sS'value' +p1745 +g47 +ssssS'PhysicalAssetMocapTakeConnection' +p1746 +(dp1747 +S'physical_asset' +p1748 +(dp1749 +S'mandatory' +p1750 +(dp1751 +S'editable' +p1752 +I00 +sS'value' +p1753 +I00 +ssS'name' +p1754 +(dp1755 +S'editable' +p1756 +I01 +sS'value' +p1757 +S'Physical Asset' +p1758 +ssS'data_type' +p1759 +(dp1760 +S'editable' +p1761 +I00 +sS'value' +p1762 +S'entity' +p1763 +ssS'entity_type' +p1764 +(dp1765 +S'editable' +p1766 +I00 +sS'value' +p1767 +S'PhysicalAssetMocapTakeConnection' +p1768 +ssS'editable' +p1769 +(dp1770 +S'editable' +p1771 +I00 +sS'value' +p1772 +I00 +ssS'unique' +p1773 +(dp1774 +S'editable' +p1775 +I00 +sS'value' +p1776 +I00 +ssS'properties' +p1777 +(dp1778 +S'default_value' +p1779 +(dp1780 +S'editable' +p1781 +I00 +sS'value' +p1782 +NssS'summary_default' +p1783 +(dp1784 +S'editable' +p1785 +I00 +sS'value' +p1786 +S'none' +p1787 +ssS'valid_types' +p1788 +(dp1789 +S'editable' +p1790 +I00 +sS'value' +p1791 +(lp1792 +S'PhysicalAsset' +p1793 +asssS'description' +p1794 +(dp1795 +S'editable' +p1796 +I01 +sS'value' +p1797 +g47 +sssS'mocap_take' +p1798 +(dp1799 +S'mandatory' +p1800 +(dp1801 +S'editable' +p1802 +I00 +sS'value' +p1803 +I00 +ssS'name' +p1804 +(dp1805 +S'editable' +p1806 +I01 +sS'value' +p1807 +S'Mocap Take' +p1808 +ssS'data_type' +p1809 +(dp1810 +S'editable' +p1811 +I00 +sS'value' +p1812 +S'entity' +p1813 +ssS'entity_type' +p1814 +(dp1815 +S'editable' +p1816 +I00 +sS'value' +p1817 +S'PhysicalAssetMocapTakeConnection' +p1818 +ssS'editable' +p1819 +(dp1820 +S'editable' +p1821 +I00 +sS'value' +p1822 +I00 +ssS'unique' +p1823 +(dp1824 +S'editable' +p1825 +I00 +sS'value' +p1826 +I00 +ssS'properties' +p1827 +(dp1828 +S'default_value' +p1829 +(dp1830 +S'editable' +p1831 +I00 +sS'value' +p1832 +NssS'summary_default' +p1833 +(dp1834 +S'editable' +p1835 +I00 +sS'value' +p1836 +S'none' +p1837 +ssS'valid_types' +p1838 +(dp1839 +S'editable' +p1840 +I00 +sS'value' +p1841 +(lp1842 +S'MocapTake' +p1843 +asssS'description' +p1844 +(dp1845 +S'editable' +p1846 +I01 +sS'value' +p1847 +g47 +sssS'cached_display_name' +p1848 +(dp1849 +S'mandatory' +p1850 +(dp1851 +S'editable' +p1852 +I00 +sS'value' +p1853 +I00 +ssS'name' +p1854 +(dp1855 +S'editable' +p1856 +I01 +sS'value' +p1857 +S'Cached Display Name' +p1858 +ssS'data_type' +p1859 +(dp1860 +S'editable' +p1861 +I00 +sS'value' +p1862 +S'text' +p1863 +ssS'entity_type' +p1864 +(dp1865 +S'editable' +p1866 +I00 +sS'value' +p1867 +S'PhysicalAssetMocapTakeConnection' +p1868 +ssS'editable' +p1869 +(dp1870 +S'editable' +p1871 +I00 +sS'value' +p1872 +I01 +ssS'unique' +p1873 +(dp1874 +S'editable' +p1875 +I00 +sS'value' +p1876 +I00 +ssS'properties' +p1877 +(dp1878 +S'default_value' +p1879 +(dp1880 +S'editable' +p1881 +I00 +sS'value' +p1882 +NssS'summary_default' +p1883 +(dp1884 +S'editable' +p1885 +I00 +sS'value' +p1886 +S'none' +p1887 +sssS'description' +p1888 +(dp1889 +S'editable' +p1890 +I01 +sS'value' +p1891 +g47 +sssS'id' +p1892 +(dp1893 +S'mandatory' +p1894 +(dp1895 +S'editable' +p1896 +I00 +sS'value' +p1897 +I01 +ssS'name' +p1898 +(dp1899 +S'editable' +p1900 +I01 +sS'value' +p1901 +S'Id' +p1902 +ssS'data_type' +p1903 +(dp1904 +S'editable' +p1905 +I00 +sS'value' +p1906 +S'number' +p1907 +ssS'entity_type' +p1908 +(dp1909 +S'editable' +p1910 +I00 +sS'value' +p1911 +S'PhysicalAssetMocapTakeConnection' +p1912 +ssS'editable' +p1913 +(dp1914 +S'editable' +p1915 +I00 +sS'value' +p1916 +I00 +ssS'unique' +p1917 +(dp1918 +S'editable' +p1919 +I00 +sS'value' +p1920 +I00 +ssS'properties' +p1921 +(dp1922 +S'default_value' +p1923 +(dp1924 +S'editable' +p1925 +I00 +sS'value' +p1926 +NssS'summary_default' +p1927 +(dp1928 +S'editable' +p1929 +I00 +sS'value' +p1930 +S'none' +p1931 +sssS'description' +p1932 +(dp1933 +S'editable' +p1934 +I01 +sS'value' +p1935 +g47 +ssssS'CustomEntity05' +p1936 +(dp1937 +S'open_notes_count' +p1938 +(dp1939 +S'mandatory' +p1940 +(dp1941 +S'editable' +p1942 +I00 +sS'value' +p1943 +I00 +ssS'name' +p1944 +(dp1945 +S'editable' +p1946 +I01 +sS'value' +p1947 +S'Open Notes Count' +p1948 +ssS'data_type' +p1949 +(dp1950 +S'editable' +p1951 +I00 +sS'value' +p1952 +S'text' +p1953 +ssS'entity_type' +p1954 +(dp1955 +S'editable' +p1956 +I00 +sS'value' +p1957 +S'CustomEntity05' +p1958 +ssS'editable' +p1959 +(dp1960 +S'editable' +p1961 +I00 +sS'value' +p1962 +I00 +ssS'unique' +p1963 +(dp1964 +S'editable' +p1965 +I00 +sS'value' +p1966 +I00 +ssS'properties' +p1967 +(dp1968 +S'default_value' +p1969 +(dp1970 +S'editable' +p1971 +I00 +sS'value' +p1972 +NssS'summary_default' +p1973 +(dp1974 +S'editable' +p1975 +I01 +sS'value' +p1976 +S'none' +p1977 +sssS'description' +p1978 +(dp1979 +S'editable' +p1980 +I01 +sS'value' +p1981 +g47 +sssS'code' +p1982 +(dp1983 +S'mandatory' +p1984 +(dp1985 +S'editable' +p1986 +I00 +sS'value' +p1987 +I01 +ssS'name' +p1988 +(dp1989 +S'editable' +p1990 +I01 +sS'value' +p1991 +S'Custom Entity05 Name' +p1992 +ssS'data_type' +p1993 +(dp1994 +S'editable' +p1995 +I00 +sS'value' +p1996 +S'text' +p1997 +ssS'entity_type' +p1998 +(dp1999 +S'editable' +p2000 +I00 +sS'value' +p2001 +S'CustomEntity05' +p2002 +ssS'editable' +p2003 +(dp2004 +S'editable' +p2005 +I00 +sS'value' +p2006 +I01 +ssS'unique' +p2007 +(dp2008 +S'editable' +p2009 +I00 +sS'value' +p2010 +I00 +ssS'properties' +p2011 +(dp2012 +S'default_value' +p2013 +(dp2014 +S'editable' +p2015 +I00 +sS'value' +p2016 +NssS'summary_default' +p2017 +(dp2018 +S'editable' +p2019 +I01 +sS'value' +p2020 +S'none' +p2021 +sssS'description' +p2022 +(dp2023 +S'editable' +p2024 +I01 +sS'value' +p2025 +g47 +sssS'open_notes' +p2026 +(dp2027 +S'mandatory' +p2028 +(dp2029 +S'editable' +p2030 +I00 +sS'value' +p2031 +I00 +ssS'name' +p2032 +(dp2033 +S'editable' +p2034 +I01 +sS'value' +p2035 +S'Open Notes' +p2036 +ssS'data_type' +p2037 +(dp2038 +S'editable' +p2039 +I00 +sS'value' +p2040 +S'multi_entity' +p2041 +ssS'entity_type' +p2042 +(dp2043 +S'editable' +p2044 +I00 +sS'value' +p2045 +S'CustomEntity05' +p2046 +ssS'editable' +p2047 +(dp2048 +S'editable' +p2049 +I00 +sS'value' +p2050 +I00 +ssS'unique' +p2051 +(dp2052 +S'editable' +p2053 +I00 +sS'value' +p2054 +I00 +ssS'properties' +p2055 +(dp2056 +S'default_value' +p2057 +(dp2058 +S'editable' +p2059 +I00 +sS'value' +p2060 +NssS'summary_default' +p2061 +(dp2062 +S'editable' +p2063 +I01 +sS'value' +p2064 +S'none' +p2065 +ssS'valid_types' +p2066 +(dp2067 +S'editable' +p2068 +I01 +sS'value' +p2069 +(lp2070 +S'Note' +p2071 +asssS'description' +p2072 +(dp2073 +S'editable' +p2074 +I01 +sS'value' +p2075 +g47 +sssS'description' +p2076 +(dp2077 +S'mandatory' +p2078 +(dp2079 +S'editable' +p2080 +I00 +sS'value' +p2081 +I00 +ssS'name' +p2082 +(dp2083 +S'editable' +p2084 +I01 +sS'value' +p2085 +S'Description' +p2086 +ssS'data_type' +p2087 +(dp2088 +S'editable' +p2089 +I00 +sS'value' +p2090 +S'text' +p2091 +ssS'entity_type' +p2092 +(dp2093 +S'editable' +p2094 +I00 +sS'value' +p2095 +S'CustomEntity05' +p2096 +ssS'editable' +p2097 +(dp2098 +S'editable' +p2099 +I00 +sS'value' +p2100 +I01 +ssS'unique' +p2101 +(dp2102 +S'editable' +p2103 +I00 +sS'value' +p2104 +I00 +ssS'properties' +p2105 +(dp2106 +S'default_value' +p2107 +(dp2108 +S'editable' +p2109 +I00 +sS'value' +p2110 +NssS'summary_default' +p2111 +(dp2112 +S'editable' +p2113 +I01 +sS'value' +p2114 +S'none' +p2115 +sssS'description' +p2116 +(dp2117 +S'editable' +p2118 +I01 +sS'value' +p2119 +g47 +sssS'created_at' +p2120 +(dp2121 +S'mandatory' +p2122 +(dp2123 +S'editable' +p2124 +I00 +sS'value' +p2125 +I00 +ssS'name' +p2126 +(dp2127 +S'editable' +p2128 +I01 +sS'value' +p2129 +S'Date Created' +p2130 +ssS'data_type' +p2131 +(dp2132 +S'editable' +p2133 +I00 +sS'value' +p2134 +S'date_time' +p2135 +ssS'entity_type' +p2136 +(dp2137 +S'editable' +p2138 +I00 +sS'value' +p2139 +S'CustomEntity05' +p2140 +ssS'editable' +p2141 +(dp2142 +S'editable' +p2143 +I00 +sS'value' +p2144 +I00 +ssS'unique' +p2145 +(dp2146 +S'editable' +p2147 +I00 +sS'value' +p2148 +I00 +ssS'properties' +p2149 +(dp2150 +S'default_value' +p2151 +(dp2152 +S'editable' +p2153 +I00 +sS'value' +p2154 +NssS'summary_default' +p2155 +(dp2156 +S'editable' +p2157 +I01 +sS'value' +p2158 +S'none' +p2159 +sssS'description' +p2160 +(dp2161 +S'editable' +p2162 +I01 +sS'value' +p2163 +g47 +sssS'updated_at' +p2164 +(dp2165 +S'mandatory' +p2166 +(dp2167 +S'editable' +p2168 +I00 +sS'value' +p2169 +I00 +ssS'name' +p2170 +(dp2171 +S'editable' +p2172 +I01 +sS'value' +p2173 +S'Date Updated' +p2174 +ssS'data_type' +p2175 +(dp2176 +S'editable' +p2177 +I00 +sS'value' +p2178 +S'date_time' +p2179 +ssS'entity_type' +p2180 +(dp2181 +S'editable' +p2182 +I00 +sS'value' +p2183 +S'CustomEntity05' +p2184 +ssS'editable' +p2185 +(dp2186 +S'editable' +p2187 +I00 +sS'value' +p2188 +I00 +ssS'unique' +p2189 +(dp2190 +S'editable' +p2191 +I00 +sS'value' +p2192 +I00 +ssS'properties' +p2193 +(dp2194 +S'default_value' +p2195 +(dp2196 +S'editable' +p2197 +I00 +sS'value' +p2198 +NssS'summary_default' +p2199 +(dp2200 +S'editable' +p2201 +I01 +sS'value' +p2202 +S'none' +p2203 +sssS'description' +p2204 +(dp2205 +S'editable' +p2206 +I01 +sS'value' +p2207 +g47 +sssS'created_by' +p2208 +(dp2209 +S'mandatory' +p2210 +(dp2211 +S'editable' +p2212 +I00 +sS'value' +p2213 +I00 +ssS'name' +p2214 +(dp2215 +S'editable' +p2216 +I01 +sS'value' +p2217 +S'Created by' +p2218 +ssS'data_type' +p2219 +(dp2220 +S'editable' +p2221 +I00 +sS'value' +p2222 +S'entity' +p2223 +ssS'entity_type' +p2224 +(dp2225 +S'editable' +p2226 +I00 +sS'value' +p2227 +S'CustomEntity05' +p2228 +ssS'editable' +p2229 +(dp2230 +S'editable' +p2231 +I00 +sS'value' +p2232 +I00 +ssS'unique' +p2233 +(dp2234 +S'editable' +p2235 +I00 +sS'value' +p2236 +I00 +ssS'properties' +p2237 +(dp2238 +S'default_value' +p2239 +(dp2240 +S'editable' +p2241 +I00 +sS'value' +p2242 +NssS'summary_default' +p2243 +(dp2244 +S'editable' +p2245 +I01 +sS'value' +p2246 +S'none' +p2247 +ssS'valid_types' +p2248 +(dp2249 +S'editable' +p2250 +I01 +sS'value' +p2251 +(lp2252 +S'HumanUser' +p2253 +aS'ApiUser' +p2254 +asssS'description' +p2255 +(dp2256 +S'editable' +p2257 +I01 +sS'value' +p2258 +g47 +sssS'project' +p2259 +(dp2260 +S'mandatory' +p2261 +(dp2262 +S'editable' +p2263 +I00 +sS'value' +p2264 +I00 +ssS'name' +p2265 +(dp2266 +S'editable' +p2267 +I01 +sS'value' +p2268 +S'Project' +p2269 +ssS'data_type' +p2270 +(dp2271 +S'editable' +p2272 +I00 +sS'value' +p2273 +S'entity' +p2274 +ssS'entity_type' +p2275 +(dp2276 +S'editable' +p2277 +I00 +sS'value' +p2278 +S'CustomEntity05' +p2279 +ssS'editable' +p2280 +(dp2281 +S'editable' +p2282 +I00 +sS'value' +p2283 +I01 +ssS'unique' +p2284 +(dp2285 +S'editable' +p2286 +I00 +sS'value' +p2287 +I00 +ssS'properties' +p2288 +(dp2289 +S'default_value' +p2290 +(dp2291 +S'editable' +p2292 +I00 +sS'value' +p2293 +NssS'summary_default' +p2294 +(dp2295 +S'editable' +p2296 +I01 +sS'value' +p2297 +S'none' +p2298 +ssS'valid_types' +p2299 +(dp2300 +S'editable' +p2301 +I01 +sS'value' +p2302 +(lp2303 +S'Project' +p2304 +asssS'description' +p2305 +(dp2306 +S'editable' +p2307 +I01 +sS'value' +p2308 +g47 +sssS'filmstrip_image' +p2309 +(dp2310 +S'mandatory' +p2311 +(dp2312 +S'editable' +p2313 +I00 +sS'value' +p2314 +I00 +ssS'name' +p2315 +(dp2316 +S'editable' +p2317 +I01 +sS'value' +p2318 +S'Filmstrip Thumbnail' +p2319 +ssS'data_type' +p2320 +(dp2321 +S'editable' +p2322 +I00 +sS'value' +p2323 +S'image' +p2324 +ssS'entity_type' +p2325 +(dp2326 +S'editable' +p2327 +I00 +sS'value' +p2328 +S'CustomEntity05' +p2329 +ssS'editable' +p2330 +(dp2331 +S'editable' +p2332 +I00 +sS'value' +p2333 +I01 +ssS'unique' +p2334 +(dp2335 +S'editable' +p2336 +I00 +sS'value' +p2337 +I00 +ssS'properties' +p2338 +(dp2339 +S'default_value' +p2340 +(dp2341 +S'editable' +p2342 +I00 +sS'value' +p2343 +NssS'summary_default' +p2344 +(dp2345 +S'editable' +p2346 +I01 +sS'value' +p2347 +S'none' +p2348 +sssS'description' +p2349 +(dp2350 +S'editable' +p2351 +I01 +sS'value' +p2352 +g47 +sssS'sg_status_list' +p2353 +(dp2354 +S'mandatory' +p2355 +(dp2356 +S'editable' +p2357 +I00 +sS'value' +p2358 +I00 +ssS'name' +p2359 +(dp2360 +S'editable' +p2361 +I01 +sS'value' +p2362 +S'Status' +p2363 +ssS'data_type' +p2364 +(dp2365 +S'editable' +p2366 +I00 +sS'value' +p2367 +S'status_list' +p2368 +ssS'entity_type' +p2369 +(dp2370 +S'editable' +p2371 +I00 +sS'value' +p2372 +S'CustomEntity05' +p2373 +ssS'editable' +p2374 +(dp2375 +S'editable' +p2376 +I00 +sS'value' +p2377 +I01 +ssS'unique' +p2378 +(dp2379 +S'editable' +p2380 +I00 +sS'value' +p2381 +I00 +ssS'properties' +p2382 +(dp2383 +S'default_value' +p2384 +(dp2385 +S'editable' +p2386 +I01 +sS'value' +p2387 +S'wtg' +p2388 +ssS'valid_values' +p2389 +(dp2390 +S'editable' +p2391 +I01 +sS'value' +p2392 +(lp2393 +S'cmpt' +p2394 +aS'ip' +p2395 +aS'wtg' +p2396 +assS'summary_default' +p2397 +(dp2398 +S'editable' +p2399 +I01 +sS'value' +p2400 +S'none' +p2401 +sssS'description' +p2402 +(dp2403 +S'editable' +p2404 +I01 +sS'value' +p2405 +g47 +sssS'notes' +p2406 +(dp2407 +S'mandatory' +p2408 +(dp2409 +S'editable' +p2410 +I00 +sS'value' +p2411 +I00 +ssS'name' +p2412 +(dp2413 +S'editable' +p2414 +I01 +sS'value' +p2415 +S'Notes' +p2416 +ssS'data_type' +p2417 +(dp2418 +S'editable' +p2419 +I00 +sS'value' +p2420 +S'multi_entity' +p2421 +ssS'entity_type' +p2422 +(dp2423 +S'editable' +p2424 +I00 +sS'value' +p2425 +S'CustomEntity05' +p2426 +ssS'editable' +p2427 +(dp2428 +S'editable' +p2429 +I00 +sS'value' +p2430 +I01 +ssS'unique' +p2431 +(dp2432 +S'editable' +p2433 +I00 +sS'value' +p2434 +I00 +ssS'properties' +p2435 +(dp2436 +S'default_value' +p2437 +(dp2438 +S'editable' +p2439 +I00 +sS'value' +p2440 +NssS'summary_default' +p2441 +(dp2442 +S'editable' +p2443 +I01 +sS'value' +p2444 +S'none' +p2445 +ssS'valid_types' +p2446 +(dp2447 +S'editable' +p2448 +I01 +sS'value' +p2449 +(lp2450 +S'Note' +p2451 +asssS'description' +p2452 +(dp2453 +S'editable' +p2454 +I01 +sS'value' +p2455 +g47 +sssS'image' +p2456 +(dp2457 +S'mandatory' +p2458 +(dp2459 +S'editable' +p2460 +I00 +sS'value' +p2461 +I00 +ssS'name' +p2462 +(dp2463 +S'editable' +p2464 +I01 +sS'value' +p2465 +S'Thumbnail' +p2466 +ssS'data_type' +p2467 +(dp2468 +S'editable' +p2469 +I00 +sS'value' +p2470 +S'image' +p2471 +ssS'entity_type' +p2472 +(dp2473 +S'editable' +p2474 +I00 +sS'value' +p2475 +S'CustomEntity05' +p2476 +ssS'editable' +p2477 +(dp2478 +S'editable' +p2479 +I00 +sS'value' +p2480 +I01 +ssS'unique' +p2481 +(dp2482 +S'editable' +p2483 +I00 +sS'value' +p2484 +I00 +ssS'properties' +p2485 +(dp2486 +S'default_value' +p2487 +(dp2488 +S'editable' +p2489 +I00 +sS'value' +p2490 +NssS'summary_default' +p2491 +(dp2492 +S'editable' +p2493 +I01 +sS'value' +p2494 +S'none' +p2495 +sssS'description' +p2496 +(dp2497 +S'editable' +p2498 +I01 +sS'value' +p2499 +g47 +sssS'cached_display_name' +p2500 +(dp2501 +S'mandatory' +p2502 +(dp2503 +S'editable' +p2504 +I00 +sS'value' +p2505 +I00 +ssS'name' +p2506 +(dp2507 +S'editable' +p2508 +I01 +sS'value' +p2509 +S'Cached Display Name' +p2510 +ssS'data_type' +p2511 +(dp2512 +S'editable' +p2513 +I00 +sS'value' +p2514 +S'text' +p2515 +ssS'entity_type' +p2516 +(dp2517 +S'editable' +p2518 +I00 +sS'value' +p2519 +S'CustomEntity05' +p2520 +ssS'editable' +p2521 +(dp2522 +S'editable' +p2523 +I00 +sS'value' +p2524 +I01 +ssS'unique' +p2525 +(dp2526 +S'editable' +p2527 +I00 +sS'value' +p2528 +I00 +ssS'properties' +p2529 +(dp2530 +S'default_value' +p2531 +(dp2532 +S'editable' +p2533 +I00 +sS'value' +p2534 +NssS'summary_default' +p2535 +(dp2536 +S'editable' +p2537 +I00 +sS'value' +p2538 +S'none' +p2539 +sssS'description' +p2540 +(dp2541 +S'editable' +p2542 +I01 +sS'value' +p2543 +g47 +sssS'tag_list' +p2544 +(dp2545 +S'mandatory' +p2546 +(dp2547 +S'editable' +p2548 +I00 +sS'value' +p2549 +I00 +ssS'name' +p2550 +(dp2551 +S'editable' +p2552 +I01 +sS'value' +p2553 +S'Tags' +p2554 +ssS'data_type' +p2555 +(dp2556 +S'editable' +p2557 +I00 +sS'value' +p2558 +S'tag_list' +p2559 +ssS'entity_type' +p2560 +(dp2561 +S'editable' +p2562 +I00 +sS'value' +p2563 +S'CustomEntity05' +p2564 +ssS'editable' +p2565 +(dp2566 +S'editable' +p2567 +I00 +sS'value' +p2568 +I01 +ssS'unique' +p2569 +(dp2570 +S'editable' +p2571 +I00 +sS'value' +p2572 +I00 +ssS'properties' +p2573 +(dp2574 +S'default_value' +p2575 +(dp2576 +S'editable' +p2577 +I00 +sS'value' +p2578 +NssS'summary_default' +p2579 +(dp2580 +S'editable' +p2581 +I01 +sS'value' +p2582 +S'none' +p2583 +ssS'valid_types' +p2584 +(dp2585 +S'editable' +p2586 +I01 +sS'value' +p2587 +(lp2588 +S'Tag' +p2589 +asssS'description' +p2590 +(dp2591 +S'editable' +p2592 +I01 +sS'value' +p2593 +g47 +sssS'id' +p2594 +(dp2595 +S'mandatory' +p2596 +(dp2597 +S'editable' +p2598 +I00 +sS'value' +p2599 +I00 +ssS'name' +p2600 +(dp2601 +S'editable' +p2602 +I01 +sS'value' +p2603 +S'Id' +p2604 +ssS'data_type' +p2605 +(dp2606 +S'editable' +p2607 +I00 +sS'value' +p2608 +S'number' +p2609 +ssS'entity_type' +p2610 +(dp2611 +S'editable' +p2612 +I00 +sS'value' +p2613 +S'CustomEntity05' +p2614 +ssS'editable' +p2615 +(dp2616 +S'editable' +p2617 +I00 +sS'value' +p2618 +I00 +ssS'unique' +p2619 +(dp2620 +S'editable' +p2621 +I00 +sS'value' +p2622 +I00 +ssS'properties' +p2623 +(dp2624 +S'default_value' +p2625 +(dp2626 +S'editable' +p2627 +I00 +sS'value' +p2628 +NssS'summary_default' +p2629 +(dp2630 +S'editable' +p2631 +I01 +sS'value' +p2632 +S'none' +p2633 +sssS'description' +p2634 +(dp2635 +S'editable' +p2636 +I01 +sS'value' +p2637 +g47 +sssS'updated_by' +p2638 +(dp2639 +S'mandatory' +p2640 +(dp2641 +S'editable' +p2642 +I00 +sS'value' +p2643 +I00 +ssS'name' +p2644 +(dp2645 +S'editable' +p2646 +I01 +sS'value' +p2647 +S'Updated by' +p2648 +ssS'data_type' +p2649 +(dp2650 +S'editable' +p2651 +I00 +sS'value' +p2652 +S'entity' +p2653 +ssS'entity_type' +p2654 +(dp2655 +S'editable' +p2656 +I00 +sS'value' +p2657 +S'CustomEntity05' +p2658 +ssS'editable' +p2659 +(dp2660 +S'editable' +p2661 +I00 +sS'value' +p2662 +I00 +ssS'unique' +p2663 +(dp2664 +S'editable' +p2665 +I00 +sS'value' +p2666 +I00 +ssS'properties' +p2667 +(dp2668 +S'default_value' +p2669 +(dp2670 +S'editable' +p2671 +I00 +sS'value' +p2672 +NssS'summary_default' +p2673 +(dp2674 +S'editable' +p2675 +I01 +sS'value' +p2676 +S'none' +p2677 +ssS'valid_types' +p2678 +(dp2679 +S'editable' +p2680 +I01 +sS'value' +p2681 +(lp2682 +S'HumanUser' +p2683 +aS'ApiUser' +p2684 +asssS'description' +p2685 +(dp2686 +S'editable' +p2687 +I01 +sS'value' +p2688 +g47 +ssssS'Note' +p2689 +(dp2690 +S'project' +p2691 +(dp2692 +S'mandatory' +p2693 +(dp2694 +S'editable' +p2695 +I00 +sS'value' +p2696 +I00 +ssS'name' +p2697 +(dp2698 +S'editable' +p2699 +I01 +sS'value' +p2700 +S'Project' +p2701 +ssS'data_type' +p2702 +(dp2703 +S'editable' +p2704 +I00 +sS'value' +p2705 +S'entity' +p2706 +ssS'entity_type' +p2707 +(dp2708 +S'editable' +p2709 +I00 +sS'value' +p2710 +S'Note' +p2711 +ssS'editable' +p2712 +(dp2713 +S'editable' +p2714 +I00 +sS'value' +p2715 +I01 +ssS'unique' +p2716 +(dp2717 +S'editable' +p2718 +I00 +sS'value' +p2719 +I00 +ssS'properties' +p2720 +(dp2721 +S'default_value' +p2722 +(dp2723 +S'editable' +p2724 +I00 +sS'value' +p2725 +NssS'summary_default' +p2726 +(dp2727 +S'editable' +p2728 +I01 +sS'value' +p2729 +S'none' +p2730 +ssS'valid_types' +p2731 +(dp2732 +S'editable' +p2733 +I01 +sS'value' +p2734 +(lp2735 +S'Project' +p2736 +asssS'description' +p2737 +(dp2738 +S'editable' +p2739 +I01 +sS'value' +p2740 +g47 +sssS'playlist' +p2741 +(dp2742 +S'mandatory' +p2743 +(dp2744 +S'editable' +p2745 +I00 +sS'value' +p2746 +I00 +ssS'name' +p2747 +(dp2748 +S'editable' +p2749 +I01 +sS'value' +p2750 +S'Playlist' +p2751 +ssS'data_type' +p2752 +(dp2753 +S'editable' +p2754 +I00 +sS'value' +p2755 +S'entity' +p2756 +ssS'entity_type' +p2757 +(dp2758 +S'editable' +p2759 +I00 +sS'value' +p2760 +S'Note' +p2761 +ssS'editable' +p2762 +(dp2763 +S'editable' +p2764 +I00 +sS'value' +p2765 +I01 +ssS'unique' +p2766 +(dp2767 +S'editable' +p2768 +I00 +sS'value' +p2769 +I00 +ssS'properties' +p2770 +(dp2771 +S'default_value' +p2772 +(dp2773 +S'editable' +p2774 +I00 +sS'value' +p2775 +NssS'summary_default' +p2776 +(dp2777 +S'editable' +p2778 +I00 +sS'value' +p2779 +S'none' +p2780 +ssS'valid_types' +p2781 +(dp2782 +S'editable' +p2783 +I00 +sS'value' +p2784 +(lp2785 +S'Playlist' +p2786 +asssS'description' +p2787 +(dp2788 +S'editable' +p2789 +I01 +sS'value' +p2790 +g47 +sssS'tasks' +p2791 +(dp2792 +S'mandatory' +p2793 +(dp2794 +S'editable' +p2795 +I00 +sS'value' +p2796 +I00 +ssS'name' +p2797 +(dp2798 +S'editable' +p2799 +I01 +sS'value' +p2800 +S'Tasks' +p2801 +ssS'data_type' +p2802 +(dp2803 +S'editable' +p2804 +I00 +sS'value' +p2805 +S'multi_entity' +p2806 +ssS'entity_type' +p2807 +(dp2808 +S'editable' +p2809 +I00 +sS'value' +p2810 +S'Note' +p2811 +ssS'editable' +p2812 +(dp2813 +S'editable' +p2814 +I00 +sS'value' +p2815 +I01 +ssS'unique' +p2816 +(dp2817 +S'editable' +p2818 +I00 +sS'value' +p2819 +I00 +ssS'properties' +p2820 +(dp2821 +S'default_value' +p2822 +(dp2823 +S'editable' +p2824 +I00 +sS'value' +p2825 +NssS'summary_default' +p2826 +(dp2827 +S'editable' +p2828 +I01 +sS'value' +p2829 +S'none' +p2830 +ssS'valid_types' +p2831 +(dp2832 +S'editable' +p2833 +I01 +sS'value' +p2834 +(lp2835 +S'Task' +p2836 +asssS'description' +p2837 +(dp2838 +S'editable' +p2839 +I01 +sS'value' +p2840 +g47 +sssS'note_links' +p2841 +(dp2842 +S'mandatory' +p2843 +(dp2844 +S'editable' +p2845 +I00 +sS'value' +p2846 +I00 +ssS'name' +p2847 +(dp2848 +S'editable' +p2849 +I01 +sS'value' +p2850 +S'Links' +p2851 +ssS'data_type' +p2852 +(dp2853 +S'editable' +p2854 +I00 +sS'value' +p2855 +S'multi_entity' +p2856 +ssS'entity_type' +p2857 +(dp2858 +S'editable' +p2859 +I00 +sS'value' +p2860 +S'Note' +p2861 +ssS'editable' +p2862 +(dp2863 +S'editable' +p2864 +I00 +sS'value' +p2865 +I01 +ssS'unique' +p2866 +(dp2867 +S'editable' +p2868 +I00 +sS'value' +p2869 +I00 +ssS'properties' +p2870 +(dp2871 +S'default_value' +p2872 +(dp2873 +S'editable' +p2874 +I00 +sS'value' +p2875 +NssS'summary_default' +p2876 +(dp2877 +S'editable' +p2878 +I01 +sS'value' +p2879 +S'none' +p2880 +ssS'valid_types' +p2881 +(dp2882 +S'editable' +p2883 +I01 +sS'value' +p2884 +(lp2885 +S'Asset' +p2886 +aS'Shot' +p2887 +aS'Version' +p2888 +aS'Group' +p2889 +aS'TaskTemplate' +p2890 +aS'Playlist' +p2891 +aS'Booking' +p2892 +aS'Department' +p2893 +aS'Phase' +p2894 +aS'Sequence' +p2895 +aS'PublishedFile' +p2896 +aS'TankPublishedFile' +p2897 +aS'CustomEntity01' +p2898 +aS'Scene' +p2899 +aS'CustomEntity02' +p2900 +aS'CustomEntity03' +p2901 +aS'CustomEntity04' +p2902 +aS'CustomEntity05' +p2903 +aS'CustomNonProjectEntity01' +p2904 +aS'CustomNonProjectEntity02' +p2905 +aS'CustomNonProjectEntity03' +p2906 +aS'Element' +p2907 +aS'AssetLibrary' +p2908 +asssS'description' +p2909 +(dp2910 +S'editable' +p2911 +I01 +sS'value' +p2912 +g47 +sssS'attachments' +p2913 +(dp2914 +S'mandatory' +p2915 +(dp2916 +S'editable' +p2917 +I00 +sS'value' +p2918 +I00 +ssS'name' +p2919 +(dp2920 +S'editable' +p2921 +I01 +sS'value' +p2922 +S'Attachments' +p2923 +ssS'data_type' +p2924 +(dp2925 +S'editable' +p2926 +I00 +sS'value' +p2927 +S'multi_entity' +p2928 +ssS'entity_type' +p2929 +(dp2930 +S'editable' +p2931 +I00 +sS'value' +p2932 +S'Note' +p2933 +ssS'editable' +p2934 +(dp2935 +S'editable' +p2936 +I00 +sS'value' +p2937 +I01 +ssS'unique' +p2938 +(dp2939 +S'editable' +p2940 +I00 +sS'value' +p2941 +I00 +ssS'properties' +p2942 +(dp2943 +S'default_value' +p2944 +(dp2945 +S'editable' +p2946 +I00 +sS'value' +p2947 +NssS'summary_default' +p2948 +(dp2949 +S'editable' +p2950 +I01 +sS'value' +p2951 +S'none' +p2952 +ssS'valid_types' +p2953 +(dp2954 +S'editable' +p2955 +I01 +sS'value' +p2956 +(lp2957 +S'Attachment' +p2958 +asssS'description' +p2959 +(dp2960 +S'editable' +p2961 +I01 +sS'value' +p2962 +g47 +sssS'addressings_cc' +p2963 +(dp2964 +S'mandatory' +p2965 +(dp2966 +S'editable' +p2967 +I00 +sS'value' +p2968 +I00 +ssS'name' +p2969 +(dp2970 +S'editable' +p2971 +I01 +sS'value' +p2972 +S'Cc' +p2973 +ssS'data_type' +p2974 +(dp2975 +S'editable' +p2976 +I00 +sS'value' +p2977 +S'multi_entity' +p2978 +ssS'entity_type' +p2979 +(dp2980 +S'editable' +p2981 +I00 +sS'value' +p2982 +S'Note' +p2983 +ssS'editable' +p2984 +(dp2985 +S'editable' +p2986 +I00 +sS'value' +p2987 +I01 +ssS'unique' +p2988 +(dp2989 +S'editable' +p2990 +I00 +sS'value' +p2991 +I00 +ssS'properties' +p2992 +(dp2993 +S'default_value' +p2994 +(dp2995 +S'editable' +p2996 +I00 +sS'value' +p2997 +NssS'summary_default' +p2998 +(dp2999 +S'editable' +p3000 +I01 +sS'value' +p3001 +S'none' +p3002 +ssS'valid_types' +p3003 +(dp3004 +S'editable' +p3005 +I01 +sS'value' +p3006 +(lp3007 +S'Group' +p3008 +aS'HumanUser' +p3009 +asssS'description' +p3010 +(dp3011 +S'editable' +p3012 +I01 +sS'value' +p3013 +g47 +sssS'tag_list' +p3014 +(dp3015 +S'mandatory' +p3016 +(dp3017 +S'editable' +p3018 +I00 +sS'value' +p3019 +I00 +ssS'name' +p3020 +(dp3021 +S'editable' +p3022 +I01 +sS'value' +p3023 +S'Tags' +p3024 +ssS'data_type' +p3025 +(dp3026 +S'editable' +p3027 +I00 +sS'value' +p3028 +S'tag_list' +p3029 +ssS'entity_type' +p3030 +(dp3031 +S'editable' +p3032 +I00 +sS'value' +p3033 +S'Note' +p3034 +ssS'editable' +p3035 +(dp3036 +S'editable' +p3037 +I00 +sS'value' +p3038 +I01 +ssS'unique' +p3039 +(dp3040 +S'editable' +p3041 +I00 +sS'value' +p3042 +I00 +ssS'properties' +p3043 +(dp3044 +S'default_value' +p3045 +(dp3046 +S'editable' +p3047 +I00 +sS'value' +p3048 +NssS'summary_default' +p3049 +(dp3050 +S'editable' +p3051 +I01 +sS'value' +p3052 +S'none' +p3053 +ssS'valid_types' +p3054 +(dp3055 +S'editable' +p3056 +I01 +sS'value' +p3057 +(lp3058 +S'Tag' +p3059 +asssS'description' +p3060 +(dp3061 +S'editable' +p3062 +I01 +sS'value' +p3063 +g47 +sssS'created_at' +p3064 +(dp3065 +S'mandatory' +p3066 +(dp3067 +S'editable' +p3068 +I00 +sS'value' +p3069 +I00 +ssS'name' +p3070 +(dp3071 +S'editable' +p3072 +I01 +sS'value' +p3073 +S'Date Created' +p3074 +ssS'data_type' +p3075 +(dp3076 +S'editable' +p3077 +I00 +sS'value' +p3078 +S'date_time' +p3079 +ssS'entity_type' +p3080 +(dp3081 +S'editable' +p3082 +I00 +sS'value' +p3083 +S'Note' +p3084 +ssS'editable' +p3085 +(dp3086 +S'editable' +p3087 +I00 +sS'value' +p3088 +I00 +ssS'unique' +p3089 +(dp3090 +S'editable' +p3091 +I00 +sS'value' +p3092 +I00 +ssS'properties' +p3093 +(dp3094 +S'default_value' +p3095 +(dp3096 +S'editable' +p3097 +I00 +sS'value' +p3098 +NssS'summary_default' +p3099 +(dp3100 +S'editable' +p3101 +I01 +sS'value' +p3102 +S'none' +p3103 +sssS'description' +p3104 +(dp3105 +S'editable' +p3106 +I01 +sS'value' +p3107 +g47 +sssS'addressings_to' +p3108 +(dp3109 +S'mandatory' +p3110 +(dp3111 +S'editable' +p3112 +I00 +sS'value' +p3113 +I00 +ssS'name' +p3114 +(dp3115 +S'editable' +p3116 +I01 +sS'value' +p3117 +S'To' +p3118 +ssS'data_type' +p3119 +(dp3120 +S'editable' +p3121 +I00 +sS'value' +p3122 +S'multi_entity' +p3123 +ssS'entity_type' +p3124 +(dp3125 +S'editable' +p3126 +I00 +sS'value' +p3127 +S'Note' +p3128 +ssS'editable' +p3129 +(dp3130 +S'editable' +p3131 +I00 +sS'value' +p3132 +I01 +ssS'unique' +p3133 +(dp3134 +S'editable' +p3135 +I00 +sS'value' +p3136 +I00 +ssS'properties' +p3137 +(dp3138 +S'default_value' +p3139 +(dp3140 +S'editable' +p3141 +I00 +sS'value' +p3142 +NssS'summary_default' +p3143 +(dp3144 +S'editable' +p3145 +I01 +sS'value' +p3146 +S'none' +p3147 +ssS'valid_types' +p3148 +(dp3149 +S'editable' +p3150 +I01 +sS'value' +p3151 +(lp3152 +S'Group' +p3153 +aS'HumanUser' +p3154 +asssS'description' +p3155 +(dp3156 +S'editable' +p3157 +I01 +sS'value' +p3158 +g47 +sssS'updated_at' +p3159 +(dp3160 +S'mandatory' +p3161 +(dp3162 +S'editable' +p3163 +I00 +sS'value' +p3164 +I00 +ssS'name' +p3165 +(dp3166 +S'editable' +p3167 +I01 +sS'value' +p3168 +S'Date Updated' +p3169 +ssS'data_type' +p3170 +(dp3171 +S'editable' +p3172 +I00 +sS'value' +p3173 +S'date_time' +p3174 +ssS'entity_type' +p3175 +(dp3176 +S'editable' +p3177 +I00 +sS'value' +p3178 +S'Note' +p3179 +ssS'editable' +p3180 +(dp3181 +S'editable' +p3182 +I00 +sS'value' +p3183 +I00 +ssS'unique' +p3184 +(dp3185 +S'editable' +p3186 +I00 +sS'value' +p3187 +I00 +ssS'properties' +p3188 +(dp3189 +S'default_value' +p3190 +(dp3191 +S'editable' +p3192 +I00 +sS'value' +p3193 +NssS'summary_default' +p3194 +(dp3195 +S'editable' +p3196 +I01 +sS'value' +p3197 +S'none' +p3198 +sssS'description' +p3199 +(dp3200 +S'editable' +p3201 +I01 +sS'value' +p3202 +g47 +sssS'created_by' +p3203 +(dp3204 +S'mandatory' +p3205 +(dp3206 +S'editable' +p3207 +I00 +sS'value' +p3208 +I00 +ssS'name' +p3209 +(dp3210 +S'editable' +p3211 +I01 +sS'value' +p3212 +S'Created by' +p3213 +ssS'data_type' +p3214 +(dp3215 +S'editable' +p3216 +I00 +sS'value' +p3217 +S'entity' +p3218 +ssS'entity_type' +p3219 +(dp3220 +S'editable' +p3221 +I00 +sS'value' +p3222 +S'Note' +p3223 +ssS'editable' +p3224 +(dp3225 +S'editable' +p3226 +I00 +sS'value' +p3227 +I00 +ssS'unique' +p3228 +(dp3229 +S'editable' +p3230 +I00 +sS'value' +p3231 +I00 +ssS'properties' +p3232 +(dp3233 +S'default_value' +p3234 +(dp3235 +S'editable' +p3236 +I00 +sS'value' +p3237 +NssS'summary_default' +p3238 +(dp3239 +S'editable' +p3240 +I01 +sS'value' +p3241 +S'none' +p3242 +ssS'valid_types' +p3243 +(dp3244 +S'editable' +p3245 +I01 +sS'value' +p3246 +(lp3247 +S'HumanUser' +p3248 +aS'ApiUser' +p3249 +asssS'description' +p3250 +(dp3251 +S'editable' +p3252 +I01 +sS'value' +p3253 +g47 +sssS'content' +p3254 +(dp3255 +S'mandatory' +p3256 +(dp3257 +S'editable' +p3258 +I00 +sS'value' +p3259 +I00 +ssS'name' +p3260 +(dp3261 +S'editable' +p3262 +I01 +sS'value' +p3263 +S'Body' +p3264 +ssS'data_type' +p3265 +(dp3266 +S'editable' +p3267 +I00 +sS'value' +p3268 +S'text' +p3269 +ssS'entity_type' +p3270 +(dp3271 +S'editable' +p3272 +I00 +sS'value' +p3273 +S'Note' +p3274 +ssS'editable' +p3275 +(dp3276 +S'editable' +p3277 +I00 +sS'value' +p3278 +I01 +ssS'unique' +p3279 +(dp3280 +S'editable' +p3281 +I00 +sS'value' +p3282 +I00 +ssS'properties' +p3283 +(dp3284 +S'default_value' +p3285 +(dp3286 +S'editable' +p3287 +I00 +sS'value' +p3288 +NssS'summary_default' +p3289 +(dp3290 +S'editable' +p3291 +I01 +sS'value' +p3292 +S'none' +p3293 +sssS'description' +p3294 +(dp3295 +S'editable' +p3296 +I01 +sS'value' +p3297 +g47 +sssS'updated_by' +p3298 +(dp3299 +S'mandatory' +p3300 +(dp3301 +S'editable' +p3302 +I00 +sS'value' +p3303 +I00 +ssS'name' +p3304 +(dp3305 +S'editable' +p3306 +I01 +sS'value' +p3307 +S'Updated by' +p3308 +ssS'data_type' +p3309 +(dp3310 +S'editable' +p3311 +I00 +sS'value' +p3312 +S'entity' +p3313 +ssS'entity_type' +p3314 +(dp3315 +S'editable' +p3316 +I00 +sS'value' +p3317 +S'Note' +p3318 +ssS'editable' +p3319 +(dp3320 +S'editable' +p3321 +I00 +sS'value' +p3322 +I00 +ssS'unique' +p3323 +(dp3324 +S'editable' +p3325 +I00 +sS'value' +p3326 +I00 +ssS'properties' +p3327 +(dp3328 +S'default_value' +p3329 +(dp3330 +S'editable' +p3331 +I00 +sS'value' +p3332 +NssS'summary_default' +p3333 +(dp3334 +S'editable' +p3335 +I01 +sS'value' +p3336 +S'none' +p3337 +ssS'valid_types' +p3338 +(dp3339 +S'editable' +p3340 +I01 +sS'value' +p3341 +(lp3342 +S'HumanUser' +p3343 +aS'ApiUser' +p3344 +asssS'description' +p3345 +(dp3346 +S'editable' +p3347 +I01 +sS'value' +p3348 +g47 +sssS'sg_status_list' +p3349 +(dp3350 +S'mandatory' +p3351 +(dp3352 +S'editable' +p3353 +I00 +sS'value' +p3354 +I00 +ssS'name' +p3355 +(dp3356 +S'editable' +p3357 +I01 +sS'value' +p3358 +S'Status' +p3359 +ssS'data_type' +p3360 +(dp3361 +S'editable' +p3362 +I00 +sS'value' +p3363 +S'status_list' +p3364 +ssS'entity_type' +p3365 +(dp3366 +S'editable' +p3367 +I00 +sS'value' +p3368 +S'Note' +p3369 +ssS'editable' +p3370 +(dp3371 +S'editable' +p3372 +I00 +sS'value' +p3373 +I01 +ssS'unique' +p3374 +(dp3375 +S'editable' +p3376 +I00 +sS'value' +p3377 +I00 +ssS'properties' +p3378 +(dp3379 +S'default_value' +p3380 +(dp3381 +S'editable' +p3382 +I01 +sS'value' +p3383 +S'opn' +p3384 +ssS'valid_values' +p3385 +(dp3386 +S'editable' +p3387 +I01 +sS'value' +p3388 +(lp3389 +S'clsd' +p3390 +aS'ip' +p3391 +aS'opn' +p3392 +assS'summary_default' +p3393 +(dp3394 +S'editable' +p3395 +I01 +sS'value' +p3396 +S'none' +p3397 +sssS'description' +p3398 +(dp3399 +S'editable' +p3400 +I01 +sS'value' +p3401 +g47 +sssS'user' +p3402 +(dp3403 +S'mandatory' +p3404 +(dp3405 +S'editable' +p3406 +I00 +sS'value' +p3407 +I00 +ssS'name' +p3408 +(dp3409 +S'editable' +p3410 +I01 +sS'value' +p3411 +S'Author' +p3412 +ssS'data_type' +p3413 +(dp3414 +S'editable' +p3415 +I00 +sS'value' +p3416 +S'entity' +p3417 +ssS'entity_type' +p3418 +(dp3419 +S'editable' +p3420 +I00 +sS'value' +p3421 +S'Note' +p3422 +ssS'editable' +p3423 +(dp3424 +S'editable' +p3425 +I00 +sS'value' +p3426 +I01 +ssS'unique' +p3427 +(dp3428 +S'editable' +p3429 +I00 +sS'value' +p3430 +I00 +ssS'properties' +p3431 +(dp3432 +S'default_value' +p3433 +(dp3434 +S'editable' +p3435 +I00 +sS'value' +p3436 +NssS'summary_default' +p3437 +(dp3438 +S'editable' +p3439 +I01 +sS'value' +p3440 +S'none' +p3441 +ssS'valid_types' +p3442 +(dp3443 +S'editable' +p3444 +I01 +sS'value' +p3445 +(lp3446 +S'HumanUser' +p3447 +aS'ApiUser' +p3448 +asssS'description' +p3449 +(dp3450 +S'editable' +p3451 +I01 +sS'value' +p3452 +g47 +sssS'replies' +p3453 +(dp3454 +S'mandatory' +p3455 +(dp3456 +S'editable' +p3457 +I00 +sS'value' +p3458 +I00 +ssS'name' +p3459 +(dp3460 +S'editable' +p3461 +I01 +sS'value' +p3462 +S'Replies' +p3463 +ssS'data_type' +p3464 +(dp3465 +S'editable' +p3466 +I00 +sS'value' +p3467 +S'multi_entity' +p3468 +ssS'entity_type' +p3469 +(dp3470 +S'editable' +p3471 +I00 +sS'value' +p3472 +S'Note' +p3473 +ssS'editable' +p3474 +(dp3475 +S'editable' +p3476 +I00 +sS'value' +p3477 +I01 +ssS'unique' +p3478 +(dp3479 +S'editable' +p3480 +I00 +sS'value' +p3481 +I00 +ssS'properties' +p3482 +(dp3483 +S'default_value' +p3484 +(dp3485 +S'editable' +p3486 +I00 +sS'value' +p3487 +NssS'summary_default' +p3488 +(dp3489 +S'editable' +p3490 +I01 +sS'value' +p3491 +S'none' +p3492 +ssS'valid_types' +p3493 +(dp3494 +S'editable' +p3495 +I01 +sS'value' +p3496 +(lp3497 +S'Reply' +p3498 +asssS'description' +p3499 +(dp3500 +S'editable' +p3501 +I01 +sS'value' +p3502 +g47 +sssS'sg_note_type' +p3503 +(dp3504 +S'mandatory' +p3505 +(dp3506 +S'editable' +p3507 +I00 +sS'value' +p3508 +I00 +ssS'name' +p3509 +(dp3510 +S'editable' +p3511 +I01 +sS'value' +p3512 +S'Type' +p3513 +ssS'data_type' +p3514 +(dp3515 +S'editable' +p3516 +I00 +sS'value' +p3517 +S'list' +p3518 +ssS'entity_type' +p3519 +(dp3520 +S'editable' +p3521 +I00 +sS'value' +p3522 +S'Note' +p3523 +ssS'editable' +p3524 +(dp3525 +S'editable' +p3526 +I00 +sS'value' +p3527 +I01 +ssS'unique' +p3528 +(dp3529 +S'editable' +p3530 +I00 +sS'value' +p3531 +I00 +ssS'properties' +p3532 +(dp3533 +S'default_value' +p3534 +(dp3535 +S'editable' +p3536 +I00 +sS'value' +p3537 +NssS'valid_values' +p3538 +(dp3539 +S'editable' +p3540 +I01 +sS'value' +p3541 +(lp3542 +S'Internal' +p3543 +aS'Client' +p3544 +aS'this list can be edited...' +p3545 +assS'summary_default' +p3546 +(dp3547 +S'editable' +p3548 +I01 +sS'value' +p3549 +S'none' +p3550 +sssS'description' +p3551 +(dp3552 +S'editable' +p3553 +I01 +sS'value' +p3554 +g47 +sssS'cached_display_name' +p3555 +(dp3556 +S'mandatory' +p3557 +(dp3558 +S'editable' +p3559 +I00 +sS'value' +p3560 +I00 +ssS'name' +p3561 +(dp3562 +S'editable' +p3563 +I01 +sS'value' +p3564 +S'Cached Display Name' +p3565 +ssS'data_type' +p3566 +(dp3567 +S'editable' +p3568 +I00 +sS'value' +p3569 +S'text' +p3570 +ssS'entity_type' +p3571 +(dp3572 +S'editable' +p3573 +I00 +sS'value' +p3574 +S'Note' +p3575 +ssS'editable' +p3576 +(dp3577 +S'editable' +p3578 +I00 +sS'value' +p3579 +I01 +ssS'unique' +p3580 +(dp3581 +S'editable' +p3582 +I00 +sS'value' +p3583 +I00 +ssS'properties' +p3584 +(dp3585 +S'default_value' +p3586 +(dp3587 +S'editable' +p3588 +I00 +sS'value' +p3589 +NssS'summary_default' +p3590 +(dp3591 +S'editable' +p3592 +I00 +sS'value' +p3593 +S'none' +p3594 +sssS'description' +p3595 +(dp3596 +S'editable' +p3597 +I01 +sS'value' +p3598 +g47 +sssS'reply_content' +p3599 +(dp3600 +S'mandatory' +p3601 +(dp3602 +S'editable' +p3603 +I00 +sS'value' +p3604 +I00 +ssS'name' +p3605 +(dp3606 +S'editable' +p3607 +I01 +sS'value' +p3608 +S'Reply Content' +p3609 +ssS'data_type' +p3610 +(dp3611 +S'editable' +p3612 +I00 +sS'value' +p3613 +S'text' +p3614 +ssS'entity_type' +p3615 +(dp3616 +S'editable' +p3617 +I00 +sS'value' +p3618 +S'Note' +p3619 +ssS'editable' +p3620 +(dp3621 +S'editable' +p3622 +I00 +sS'value' +p3623 +I01 +ssS'unique' +p3624 +(dp3625 +S'editable' +p3626 +I00 +sS'value' +p3627 +I00 +ssS'properties' +p3628 +(dp3629 +S'default_value' +p3630 +(dp3631 +S'editable' +p3632 +I00 +sS'value' +p3633 +NssS'summary_default' +p3634 +(dp3635 +S'editable' +p3636 +I01 +sS'value' +p3637 +S'none' +p3638 +sssS'description' +p3639 +(dp3640 +S'editable' +p3641 +I01 +sS'value' +p3642 +g47 +sssS'id' +p3643 +(dp3644 +S'mandatory' +p3645 +(dp3646 +S'editable' +p3647 +I00 +sS'value' +p3648 +I00 +ssS'name' +p3649 +(dp3650 +S'editable' +p3651 +I01 +sS'value' +p3652 +S'Id' +p3653 +ssS'data_type' +p3654 +(dp3655 +S'editable' +p3656 +I00 +sS'value' +p3657 +S'number' +p3658 +ssS'entity_type' +p3659 +(dp3660 +S'editable' +p3661 +I00 +sS'value' +p3662 +S'Note' +p3663 +ssS'editable' +p3664 +(dp3665 +S'editable' +p3666 +I00 +sS'value' +p3667 +I00 +ssS'unique' +p3668 +(dp3669 +S'editable' +p3670 +I00 +sS'value' +p3671 +I00 +ssS'properties' +p3672 +(dp3673 +S'default_value' +p3674 +(dp3675 +S'editable' +p3676 +I00 +sS'value' +p3677 +NssS'summary_default' +p3678 +(dp3679 +S'editable' +p3680 +I01 +sS'value' +p3681 +S'none' +p3682 +sssS'description' +p3683 +(dp3684 +S'editable' +p3685 +I01 +sS'value' +p3686 +g47 +sssS'subject' +p3687 +(dp3688 +S'mandatory' +p3689 +(dp3690 +S'editable' +p3691 +I00 +sS'value' +p3692 +I01 +ssS'name' +p3693 +(dp3694 +S'editable' +p3695 +I01 +sS'value' +p3696 +S'Subject' +p3697 +ssS'data_type' +p3698 +(dp3699 +S'editable' +p3700 +I00 +sS'value' +p3701 +S'text' +p3702 +ssS'entity_type' +p3703 +(dp3704 +S'editable' +p3705 +I00 +sS'value' +p3706 +S'Note' +p3707 +ssS'editable' +p3708 +(dp3709 +S'editable' +p3710 +I00 +sS'value' +p3711 +I01 +ssS'unique' +p3712 +(dp3713 +S'editable' +p3714 +I00 +sS'value' +p3715 +I00 +ssS'properties' +p3716 +(dp3717 +S'default_value' +p3718 +(dp3719 +S'editable' +p3720 +I00 +sS'value' +p3721 +NssS'summary_default' +p3722 +(dp3723 +S'editable' +p3724 +I01 +sS'value' +p3725 +S'none' +p3726 +sssS'description' +p3727 +(dp3728 +S'editable' +p3729 +I01 +sS'value' +p3730 +g47 +ssssS'TaskDependency' +p3731 +(dp3732 +S'task' +p3733 +(dp3734 +S'mandatory' +p3735 +(dp3736 +S'editable' +p3737 +I00 +sS'value' +p3738 +I00 +ssS'name' +p3739 +(dp3740 +S'editable' +p3741 +I01 +sS'value' +p3742 +S'Task' +p3743 +ssS'data_type' +p3744 +(dp3745 +S'editable' +p3746 +I00 +sS'value' +p3747 +S'entity' +p3748 +ssS'entity_type' +p3749 +(dp3750 +S'editable' +p3751 +I00 +sS'value' +p3752 +S'TaskDependency' +p3753 +ssS'editable' +p3754 +(dp3755 +S'editable' +p3756 +I00 +sS'value' +p3757 +I01 +ssS'unique' +p3758 +(dp3759 +S'editable' +p3760 +I00 +sS'value' +p3761 +I00 +ssS'properties' +p3762 +(dp3763 +S'default_value' +p3764 +(dp3765 +S'editable' +p3766 +I00 +sS'value' +p3767 +NssS'summary_default' +p3768 +(dp3769 +S'editable' +p3770 +I00 +sS'value' +p3771 +S'none' +p3772 +ssS'valid_types' +p3773 +(dp3774 +S'editable' +p3775 +I00 +sS'value' +p3776 +(lp3777 +S'Task' +p3778 +asssS'description' +p3779 +(dp3780 +S'editable' +p3781 +I01 +sS'value' +p3782 +g47 +sssS'task_id' +p3783 +(dp3784 +S'mandatory' +p3785 +(dp3786 +S'editable' +p3787 +I00 +sS'value' +p3788 +I00 +ssS'name' +p3789 +(dp3790 +S'editable' +p3791 +I01 +sS'value' +p3792 +S'Task Id' +p3793 +ssS'data_type' +p3794 +(dp3795 +S'editable' +p3796 +I00 +sS'value' +p3797 +S'number' +p3798 +ssS'entity_type' +p3799 +(dp3800 +S'editable' +p3801 +I00 +sS'value' +p3802 +S'TaskDependency' +p3803 +ssS'editable' +p3804 +(dp3805 +S'editable' +p3806 +I00 +sS'value' +p3807 +I00 +ssS'unique' +p3808 +(dp3809 +S'editable' +p3810 +I00 +sS'value' +p3811 +I00 +ssS'properties' +p3812 +(dp3813 +S'default_value' +p3814 +(dp3815 +S'editable' +p3816 +I00 +sS'value' +p3817 +NssS'summary_default' +p3818 +(dp3819 +S'editable' +p3820 +I00 +sS'value' +p3821 +S'none' +p3822 +sssS'description' +p3823 +(dp3824 +S'editable' +p3825 +I01 +sS'value' +p3826 +g47 +sssS'dependent_task' +p3827 +(dp3828 +S'mandatory' +p3829 +(dp3830 +S'editable' +p3831 +I00 +sS'value' +p3832 +I00 +ssS'name' +p3833 +(dp3834 +S'editable' +p3835 +I01 +sS'value' +p3836 +S'Dependent Task' +p3837 +ssS'data_type' +p3838 +(dp3839 +S'editable' +p3840 +I00 +sS'value' +p3841 +S'entity' +p3842 +ssS'entity_type' +p3843 +(dp3844 +S'editable' +p3845 +I00 +sS'value' +p3846 +S'TaskDependency' +p3847 +ssS'editable' +p3848 +(dp3849 +S'editable' +p3850 +I00 +sS'value' +p3851 +I01 +ssS'unique' +p3852 +(dp3853 +S'editable' +p3854 +I00 +sS'value' +p3855 +I00 +ssS'properties' +p3856 +(dp3857 +S'default_value' +p3858 +(dp3859 +S'editable' +p3860 +I00 +sS'value' +p3861 +NssS'summary_default' +p3862 +(dp3863 +S'editable' +p3864 +I00 +sS'value' +p3865 +S'none' +p3866 +ssS'valid_types' +p3867 +(dp3868 +S'editable' +p3869 +I00 +sS'value' +p3870 +(lp3871 +S'Task' +p3872 +asssS'description' +p3873 +(dp3874 +S'editable' +p3875 +I01 +sS'value' +p3876 +g47 +sssS'offset_days' +p3877 +(dp3878 +S'mandatory' +p3879 +(dp3880 +S'editable' +p3881 +I00 +sS'value' +p3882 +I00 +ssS'name' +p3883 +(dp3884 +S'editable' +p3885 +I01 +sS'value' +p3886 +S'Offset Days' +p3887 +ssS'data_type' +p3888 +(dp3889 +S'editable' +p3890 +I00 +sS'value' +p3891 +S'number' +p3892 +ssS'entity_type' +p3893 +(dp3894 +S'editable' +p3895 +I00 +sS'value' +p3896 +S'TaskDependency' +p3897 +ssS'editable' +p3898 +(dp3899 +S'editable' +p3900 +I00 +sS'value' +p3901 +I01 +ssS'unique' +p3902 +(dp3903 +S'editable' +p3904 +I00 +sS'value' +p3905 +I00 +ssS'properties' +p3906 +(dp3907 +S'default_value' +p3908 +(dp3909 +S'editable' +p3910 +I00 +sS'value' +p3911 +NssS'summary_default' +p3912 +(dp3913 +S'editable' +p3914 +I00 +sS'value' +p3915 +S'none' +p3916 +sssS'description' +p3917 +(dp3918 +S'editable' +p3919 +I01 +sS'value' +p3920 +g47 +sssS'cached_display_name' +p3921 +(dp3922 +S'mandatory' +p3923 +(dp3924 +S'editable' +p3925 +I00 +sS'value' +p3926 +I00 +ssS'name' +p3927 +(dp3928 +S'editable' +p3929 +I01 +sS'value' +p3930 +S'Cached Display Name' +p3931 +ssS'data_type' +p3932 +(dp3933 +S'editable' +p3934 +I00 +sS'value' +p3935 +S'text' +p3936 +ssS'entity_type' +p3937 +(dp3938 +S'editable' +p3939 +I00 +sS'value' +p3940 +S'TaskDependency' +p3941 +ssS'editable' +p3942 +(dp3943 +S'editable' +p3944 +I00 +sS'value' +p3945 +I01 +ssS'unique' +p3946 +(dp3947 +S'editable' +p3948 +I00 +sS'value' +p3949 +I00 +ssS'properties' +p3950 +(dp3951 +S'default_value' +p3952 +(dp3953 +S'editable' +p3954 +I00 +sS'value' +p3955 +NssS'summary_default' +p3956 +(dp3957 +S'editable' +p3958 +I00 +sS'value' +p3959 +S'none' +p3960 +sssS'description' +p3961 +(dp3962 +S'editable' +p3963 +I01 +sS'value' +p3964 +g47 +sssS'dependent_task_id' +p3965 +(dp3966 +S'mandatory' +p3967 +(dp3968 +S'editable' +p3969 +I00 +sS'value' +p3970 +I00 +ssS'name' +p3971 +(dp3972 +S'editable' +p3973 +I01 +sS'value' +p3974 +S'Dependent Task Id' +p3975 +ssS'data_type' +p3976 +(dp3977 +S'editable' +p3978 +I00 +sS'value' +p3979 +S'number' +p3980 +ssS'entity_type' +p3981 +(dp3982 +S'editable' +p3983 +I00 +sS'value' +p3984 +S'TaskDependency' +p3985 +ssS'editable' +p3986 +(dp3987 +S'editable' +p3988 +I00 +sS'value' +p3989 +I00 +ssS'unique' +p3990 +(dp3991 +S'editable' +p3992 +I00 +sS'value' +p3993 +I00 +ssS'properties' +p3994 +(dp3995 +S'default_value' +p3996 +(dp3997 +S'editable' +p3998 +I00 +sS'value' +p3999 +NssS'summary_default' +p4000 +(dp4001 +S'editable' +p4002 +I00 +sS'value' +p4003 +S'none' +p4004 +sssS'description' +p4005 +(dp4006 +S'editable' +p4007 +I01 +sS'value' +p4008 +g47 +sssS'id' +p4009 +(dp4010 +S'mandatory' +p4011 +(dp4012 +S'editable' +p4013 +I00 +sS'value' +p4014 +I00 +ssS'name' +p4015 +(dp4016 +S'editable' +p4017 +I01 +sS'value' +p4018 +S'Id' +p4019 +ssS'data_type' +p4020 +(dp4021 +S'editable' +p4022 +I00 +sS'value' +p4023 +S'number' +p4024 +ssS'entity_type' +p4025 +(dp4026 +S'editable' +p4027 +I00 +sS'value' +p4028 +S'TaskDependency' +p4029 +ssS'editable' +p4030 +(dp4031 +S'editable' +p4032 +I00 +sS'value' +p4033 +I00 +ssS'unique' +p4034 +(dp4035 +S'editable' +p4036 +I00 +sS'value' +p4037 +I00 +ssS'properties' +p4038 +(dp4039 +S'default_value' +p4040 +(dp4041 +S'editable' +p4042 +I00 +sS'value' +p4043 +NssS'summary_default' +p4044 +(dp4045 +S'editable' +p4046 +I00 +sS'value' +p4047 +S'none' +p4048 +sssS'description' +p4049 +(dp4050 +S'editable' +p4051 +I01 +sS'value' +p4052 +g47 +ssssS'PageHit' +p4053 +(dp4054 +S'user' +p4055 +(dp4056 +S'mandatory' +p4057 +(dp4058 +S'editable' +p4059 +I00 +sS'value' +p4060 +I00 +ssS'name' +p4061 +(dp4062 +S'editable' +p4063 +I01 +sS'value' +p4064 +S'User' +p4065 +ssS'data_type' +p4066 +(dp4067 +S'editable' +p4068 +I00 +sS'value' +p4069 +S'entity' +p4070 +ssS'entity_type' +p4071 +(dp4072 +S'editable' +p4073 +I00 +sS'value' +p4074 +S'PageHit' +p4075 +ssS'editable' +p4076 +(dp4077 +S'editable' +p4078 +I00 +sS'value' +p4079 +I00 +ssS'unique' +p4080 +(dp4081 +S'editable' +p4082 +I00 +sS'value' +p4083 +I00 +ssS'properties' +p4084 +(dp4085 +S'default_value' +p4086 +(dp4087 +S'editable' +p4088 +I00 +sS'value' +p4089 +NssS'summary_default' +p4090 +(dp4091 +S'editable' +p4092 +I00 +sS'value' +p4093 +S'none' +p4094 +ssS'valid_types' +p4095 +(dp4096 +S'editable' +p4097 +I00 +sS'value' +p4098 +(lp4099 +S'HumanUser' +p4100 +asssS'description' +p4101 +(dp4102 +S'editable' +p4103 +I01 +sS'value' +p4104 +g47 +sssS'created_at' +p4105 +(dp4106 +S'mandatory' +p4107 +(dp4108 +S'editable' +p4109 +I00 +sS'value' +p4110 +I00 +ssS'name' +p4111 +(dp4112 +S'editable' +p4113 +I01 +sS'value' +p4114 +S'Date Created' +p4115 +ssS'data_type' +p4116 +(dp4117 +S'editable' +p4118 +I00 +sS'value' +p4119 +S'date_time' +p4120 +ssS'entity_type' +p4121 +(dp4122 +S'editable' +p4123 +I00 +sS'value' +p4124 +S'PageHit' +p4125 +ssS'editable' +p4126 +(dp4127 +S'editable' +p4128 +I00 +sS'value' +p4129 +I00 +ssS'unique' +p4130 +(dp4131 +S'editable' +p4132 +I00 +sS'value' +p4133 +I00 +ssS'properties' +p4134 +(dp4135 +S'default_value' +p4136 +(dp4137 +S'editable' +p4138 +I00 +sS'value' +p4139 +NssS'summary_default' +p4140 +(dp4141 +S'editable' +p4142 +I00 +sS'value' +p4143 +S'none' +p4144 +sssS'description' +p4145 +(dp4146 +S'editable' +p4147 +I01 +sS'value' +p4148 +g47 +sssS'id' +p4149 +(dp4150 +S'mandatory' +p4151 +(dp4152 +S'editable' +p4153 +I00 +sS'value' +p4154 +I01 +ssS'name' +p4155 +(dp4156 +S'editable' +p4157 +I01 +sS'value' +p4158 +S'Id' +p4159 +ssS'data_type' +p4160 +(dp4161 +S'editable' +p4162 +I00 +sS'value' +p4163 +S'number' +p4164 +ssS'entity_type' +p4165 +(dp4166 +S'editable' +p4167 +I00 +sS'value' +p4168 +S'PageHit' +p4169 +ssS'editable' +p4170 +(dp4171 +S'editable' +p4172 +I00 +sS'value' +p4173 +I00 +ssS'unique' +p4174 +(dp4175 +S'editable' +p4176 +I00 +sS'value' +p4177 +I00 +ssS'properties' +p4178 +(dp4179 +S'default_value' +p4180 +(dp4181 +S'editable' +p4182 +I00 +sS'value' +p4183 +NssS'summary_default' +p4184 +(dp4185 +S'editable' +p4186 +I00 +sS'value' +p4187 +S'none' +p4188 +sssS'description' +p4189 +(dp4190 +S'editable' +p4191 +I01 +sS'value' +p4192 +g47 +sssS'cached_display_name' +p4193 +(dp4194 +S'mandatory' +p4195 +(dp4196 +S'editable' +p4197 +I00 +sS'value' +p4198 +I00 +ssS'name' +p4199 +(dp4200 +S'editable' +p4201 +I01 +sS'value' +p4202 +S'Cached Display Name' +p4203 +ssS'data_type' +p4204 +(dp4205 +S'editable' +p4206 +I00 +sS'value' +p4207 +S'text' +p4208 +ssS'entity_type' +p4209 +(dp4210 +S'editable' +p4211 +I00 +sS'value' +p4212 +S'PageHit' +p4213 +ssS'editable' +p4214 +(dp4215 +S'editable' +p4216 +I00 +sS'value' +p4217 +I01 +ssS'unique' +p4218 +(dp4219 +S'editable' +p4220 +I00 +sS'value' +p4221 +I00 +ssS'properties' +p4222 +(dp4223 +S'default_value' +p4224 +(dp4225 +S'editable' +p4226 +I00 +sS'value' +p4227 +NssS'summary_default' +p4228 +(dp4229 +S'editable' +p4230 +I00 +sS'value' +p4231 +S'none' +p4232 +sssS'description' +p4233 +(dp4234 +S'editable' +p4235 +I01 +sS'value' +p4236 +g47 +sssS'page' +p4237 +(dp4238 +S'mandatory' +p4239 +(dp4240 +S'editable' +p4241 +I00 +sS'value' +p4242 +I00 +ssS'name' +p4243 +(dp4244 +S'editable' +p4245 +I01 +sS'value' +p4246 +S'Page' +p4247 +ssS'data_type' +p4248 +(dp4249 +S'editable' +p4250 +I00 +sS'value' +p4251 +S'entity' +p4252 +ssS'entity_type' +p4253 +(dp4254 +S'editable' +p4255 +I00 +sS'value' +p4256 +S'PageHit' +p4257 +ssS'editable' +p4258 +(dp4259 +S'editable' +p4260 +I00 +sS'value' +p4261 +I00 +ssS'unique' +p4262 +(dp4263 +S'editable' +p4264 +I00 +sS'value' +p4265 +I00 +ssS'properties' +p4266 +(dp4267 +S'default_value' +p4268 +(dp4269 +S'editable' +p4270 +I00 +sS'value' +p4271 +NssS'summary_default' +p4272 +(dp4273 +S'editable' +p4274 +I00 +sS'value' +p4275 +S'none' +p4276 +ssS'valid_types' +p4277 +(dp4278 +S'editable' +p4279 +I00 +sS'value' +p4280 +(lp4281 +S'Page' +p4282 +asssS'description' +p4283 +(dp4284 +S'editable' +p4285 +I01 +sS'value' +p4286 +g47 +ssssS'ActionMenuItem' +p4287 +(dp4288 +S'updated_by' +p4289 +(dp4290 +S'mandatory' +p4291 +(dp4292 +S'editable' +p4293 +I00 +sS'value' +p4294 +I00 +ssS'name' +p4295 +(dp4296 +S'editable' +p4297 +I01 +sS'value' +p4298 +S'Updated by' +p4299 +ssS'data_type' +p4300 +(dp4301 +S'editable' +p4302 +I00 +sS'value' +p4303 +S'entity' +p4304 +ssS'entity_type' +p4305 +(dp4306 +S'editable' +p4307 +I00 +sS'value' +p4308 +S'ActionMenuItem' +p4309 +ssS'editable' +p4310 +(dp4311 +S'editable' +p4312 +I00 +sS'value' +p4313 +I00 +ssS'unique' +p4314 +(dp4315 +S'editable' +p4316 +I00 +sS'value' +p4317 +I00 +ssS'properties' +p4318 +(dp4319 +S'default_value' +p4320 +(dp4321 +S'editable' +p4322 +I00 +sS'value' +p4323 +NssS'summary_default' +p4324 +(dp4325 +S'editable' +p4326 +I01 +sS'value' +p4327 +S'none' +p4328 +ssS'valid_types' +p4329 +(dp4330 +S'editable' +p4331 +I01 +sS'value' +p4332 +(lp4333 +S'HumanUser' +p4334 +aS'ApiUser' +p4335 +asssS'description' +p4336 +(dp4337 +S'editable' +p4338 +I01 +sS'value' +p4339 +g47 +sssS'list_order' +p4340 +(dp4341 +S'mandatory' +p4342 +(dp4343 +S'editable' +p4344 +I00 +sS'value' +p4345 +I00 +ssS'name' +p4346 +(dp4347 +S'editable' +p4348 +I01 +sS'value' +p4349 +S'Order' +p4350 +ssS'data_type' +p4351 +(dp4352 +S'editable' +p4353 +I00 +sS'value' +p4354 +S'number' +p4355 +ssS'entity_type' +p4356 +(dp4357 +S'editable' +p4358 +I00 +sS'value' +p4359 +S'ActionMenuItem' +p4360 +ssS'editable' +p4361 +(dp4362 +S'editable' +p4363 +I00 +sS'value' +p4364 +I01 +ssS'unique' +p4365 +(dp4366 +S'editable' +p4367 +I00 +sS'value' +p4368 +I00 +ssS'properties' +p4369 +(dp4370 +S'default_value' +p4371 +(dp4372 +S'editable' +p4373 +I00 +sS'value' +p4374 +NssS'summary_default' +p4375 +(dp4376 +S'editable' +p4377 +I00 +sS'value' +p4378 +S'none' +p4379 +sssS'description' +p4380 +(dp4381 +S'editable' +p4382 +I01 +sS'value' +p4383 +g47 +sssS'url' +p4384 +(dp4385 +S'mandatory' +p4386 +(dp4387 +S'editable' +p4388 +I00 +sS'value' +p4389 +I00 +ssS'name' +p4390 +(dp4391 +S'editable' +p4392 +I01 +sS'value' +p4393 +S'URL' +p4394 +ssS'data_type' +p4395 +(dp4396 +S'editable' +p4397 +I00 +sS'value' +p4398 +S'text' +p4399 +ssS'entity_type' +p4400 +(dp4401 +S'editable' +p4402 +I00 +sS'value' +p4403 +S'ActionMenuItem' +p4404 +ssS'editable' +p4405 +(dp4406 +S'editable' +p4407 +I00 +sS'value' +p4408 +I01 +ssS'unique' +p4409 +(dp4410 +S'editable' +p4411 +I00 +sS'value' +p4412 +I00 +ssS'properties' +p4413 +(dp4414 +S'default_value' +p4415 +(dp4416 +S'editable' +p4417 +I00 +sS'value' +p4418 +NssS'summary_default' +p4419 +(dp4420 +S'editable' +p4421 +I00 +sS'value' +p4422 +S'none' +p4423 +sssS'description' +p4424 +(dp4425 +S'editable' +p4426 +I01 +sS'value' +p4427 +g47 +sssS'created_at' +p4428 +(dp4429 +S'mandatory' +p4430 +(dp4431 +S'editable' +p4432 +I00 +sS'value' +p4433 +I00 +ssS'name' +p4434 +(dp4435 +S'editable' +p4436 +I01 +sS'value' +p4437 +S'Date Created' +p4438 +ssS'data_type' +p4439 +(dp4440 +S'editable' +p4441 +I00 +sS'value' +p4442 +S'date_time' +p4443 +ssS'entity_type' +p4444 +(dp4445 +S'editable' +p4446 +I00 +sS'value' +p4447 +S'ActionMenuItem' +p4448 +ssS'editable' +p4449 +(dp4450 +S'editable' +p4451 +I00 +sS'value' +p4452 +I00 +ssS'unique' +p4453 +(dp4454 +S'editable' +p4455 +I00 +sS'value' +p4456 +I00 +ssS'properties' +p4457 +(dp4458 +S'default_value' +p4459 +(dp4460 +S'editable' +p4461 +I00 +sS'value' +p4462 +NssS'summary_default' +p4463 +(dp4464 +S'editable' +p4465 +I01 +sS'value' +p4466 +S'none' +p4467 +sssS'description' +p4468 +(dp4469 +S'editable' +p4470 +I01 +sS'value' +p4471 +g47 +sssS'title' +p4472 +(dp4473 +S'mandatory' +p4474 +(dp4475 +S'editable' +p4476 +I00 +sS'value' +p4477 +I01 +ssS'name' +p4478 +(dp4479 +S'editable' +p4480 +I01 +sS'value' +p4481 +S'Title' +p4482 +ssS'data_type' +p4483 +(dp4484 +S'editable' +p4485 +I00 +sS'value' +p4486 +S'text' +p4487 +ssS'entity_type' +p4488 +(dp4489 +S'editable' +p4490 +I00 +sS'value' +p4491 +S'ActionMenuItem' +p4492 +ssS'editable' +p4493 +(dp4494 +S'editable' +p4495 +I00 +sS'value' +p4496 +I01 +ssS'unique' +p4497 +(dp4498 +S'editable' +p4499 +I00 +sS'value' +p4500 +I00 +ssS'properties' +p4501 +(dp4502 +S'default_value' +p4503 +(dp4504 +S'editable' +p4505 +I00 +sS'value' +p4506 +NssS'summary_default' +p4507 +(dp4508 +S'editable' +p4509 +I00 +sS'value' +p4510 +S'none' +p4511 +sssS'description' +p4512 +(dp4513 +S'editable' +p4514 +I01 +sS'value' +p4515 +g47 +sssS'poll_for_data_updates' +p4516 +(dp4517 +S'mandatory' +p4518 +(dp4519 +S'editable' +p4520 +I00 +sS'value' +p4521 +I00 +ssS'name' +p4522 +(dp4523 +S'editable' +p4524 +I01 +sS'value' +p4525 +S'Poll For Data Updates' +p4526 +ssS'data_type' +p4527 +(dp4528 +S'editable' +p4529 +I00 +sS'value' +p4530 +S'checkbox' +p4531 +ssS'entity_type' +p4532 +(dp4533 +S'editable' +p4534 +I00 +sS'value' +p4535 +S'ActionMenuItem' +p4536 +ssS'editable' +p4537 +(dp4538 +S'editable' +p4539 +I00 +sS'value' +p4540 +I01 +ssS'unique' +p4541 +(dp4542 +S'editable' +p4543 +I00 +sS'value' +p4544 +I00 +ssS'properties' +p4545 +(dp4546 +S'default_value' +p4547 +(dp4548 +S'editable' +p4549 +I00 +sS'value' +p4550 +I00 +ssS'summary_default' +p4551 +(dp4552 +S'editable' +p4553 +I00 +sS'value' +p4554 +S'none' +p4555 +sssS'description' +p4556 +(dp4557 +S'editable' +p4558 +I01 +sS'value' +p4559 +g47 +sssS'updated_at' +p4560 +(dp4561 +S'mandatory' +p4562 +(dp4563 +S'editable' +p4564 +I00 +sS'value' +p4565 +I00 +ssS'name' +p4566 +(dp4567 +S'editable' +p4568 +I01 +sS'value' +p4569 +S'Date Updated' +p4570 +ssS'data_type' +p4571 +(dp4572 +S'editable' +p4573 +I00 +sS'value' +p4574 +S'date_time' +p4575 +ssS'entity_type' +p4576 +(dp4577 +S'editable' +p4578 +I00 +sS'value' +p4579 +S'ActionMenuItem' +p4580 +ssS'editable' +p4581 +(dp4582 +S'editable' +p4583 +I00 +sS'value' +p4584 +I00 +ssS'unique' +p4585 +(dp4586 +S'editable' +p4587 +I00 +sS'value' +p4588 +I00 +ssS'properties' +p4589 +(dp4590 +S'default_value' +p4591 +(dp4592 +S'editable' +p4593 +I00 +sS'value' +p4594 +NssS'summary_default' +p4595 +(dp4596 +S'editable' +p4597 +I01 +sS'value' +p4598 +S'none' +p4599 +sssS'description' +p4600 +(dp4601 +S'editable' +p4602 +I01 +sS'value' +p4603 +g47 +sssS'created_by' +p4604 +(dp4605 +S'mandatory' +p4606 +(dp4607 +S'editable' +p4608 +I00 +sS'value' +p4609 +I00 +ssS'name' +p4610 +(dp4611 +S'editable' +p4612 +I01 +sS'value' +p4613 +S'Created by' +p4614 +ssS'data_type' +p4615 +(dp4616 +S'editable' +p4617 +I00 +sS'value' +p4618 +S'entity' +p4619 +ssS'entity_type' +p4620 +(dp4621 +S'editable' +p4622 +I00 +sS'value' +p4623 +S'ActionMenuItem' +p4624 +ssS'editable' +p4625 +(dp4626 +S'editable' +p4627 +I00 +sS'value' +p4628 +I00 +ssS'unique' +p4629 +(dp4630 +S'editable' +p4631 +I00 +sS'value' +p4632 +I00 +ssS'properties' +p4633 +(dp4634 +S'default_value' +p4635 +(dp4636 +S'editable' +p4637 +I00 +sS'value' +p4638 +NssS'summary_default' +p4639 +(dp4640 +S'editable' +p4641 +I01 +sS'value' +p4642 +S'none' +p4643 +ssS'valid_types' +p4644 +(dp4645 +S'editable' +p4646 +I01 +sS'value' +p4647 +(lp4648 +S'HumanUser' +p4649 +aS'ApiUser' +p4650 +asssS'description' +p4651 +(dp4652 +S'editable' +p4653 +I01 +sS'value' +p4654 +g47 +sssS'permissions_groups' +p4655 +(dp4656 +S'mandatory' +p4657 +(dp4658 +S'editable' +p4659 +I00 +sS'value' +p4660 +I00 +ssS'name' +p4661 +(dp4662 +S'editable' +p4663 +I01 +sS'value' +p4664 +S'Restrict to Permission Groups' +p4665 +ssS'data_type' +p4666 +(dp4667 +S'editable' +p4668 +I00 +sS'value' +p4669 +S'multi_entity' +p4670 +ssS'entity_type' +p4671 +(dp4672 +S'editable' +p4673 +I00 +sS'value' +p4674 +S'ActionMenuItem' +p4675 +ssS'editable' +p4676 +(dp4677 +S'editable' +p4678 +I00 +sS'value' +p4679 +I01 +ssS'unique' +p4680 +(dp4681 +S'editable' +p4682 +I00 +sS'value' +p4683 +I00 +ssS'properties' +p4684 +(dp4685 +S'default_value' +p4686 +(dp4687 +S'editable' +p4688 +I00 +sS'value' +p4689 +NssS'summary_default' +p4690 +(dp4691 +S'editable' +p4692 +I01 +sS'value' +p4693 +S'none' +p4694 +ssS'valid_types' +p4695 +(dp4696 +S'editable' +p4697 +I01 +sS'value' +p4698 +(lp4699 +S'PermissionRuleSet' +p4700 +asssS'description' +p4701 +(dp4702 +S'editable' +p4703 +I01 +sS'value' +p4704 +g47 +sssS'entity_type' +p4705 +(dp4706 +S'mandatory' +p4707 +(dp4708 +S'editable' +p4709 +I00 +sS'value' +p4710 +I00 +ssS'name' +p4711 +(dp4712 +S'editable' +p4713 +I01 +sS'value' +p4714 +S'Entity Type' +p4715 +ssS'data_type' +p4716 +(dp4717 +S'editable' +p4718 +I00 +sS'value' +p4719 +S'entity_type' +p4720 +ssS'entity_type' +p4721 +(dp4722 +S'editable' +p4723 +I00 +sS'value' +p4724 +S'ActionMenuItem' +p4725 +ssS'editable' +p4726 +(dp4727 +S'editable' +p4728 +I00 +sS'value' +p4729 +I01 +ssS'unique' +p4730 +(dp4731 +S'editable' +p4732 +I00 +sS'value' +p4733 +I00 +ssS'properties' +p4734 +(dp4735 +S'default_value' +p4736 +(dp4737 +S'editable' +p4738 +I00 +sS'value' +p4739 +NssS'summary_default' +p4740 +(dp4741 +S'editable' +p4742 +I00 +sS'value' +p4743 +S'none' +p4744 +sssS'description' +p4745 +(dp4746 +S'editable' +p4747 +I01 +sS'value' +p4748 +g47 +sssS'selection_required' +p4749 +(dp4750 +S'mandatory' +p4751 +(dp4752 +S'editable' +p4753 +I00 +sS'value' +p4754 +I00 +ssS'name' +p4755 +(dp4756 +S'editable' +p4757 +I01 +sS'value' +p4758 +S'Selection Required' +p4759 +ssS'data_type' +p4760 +(dp4761 +S'editable' +p4762 +I00 +sS'value' +p4763 +S'checkbox' +p4764 +ssS'entity_type' +p4765 +(dp4766 +S'editable' +p4767 +I00 +sS'value' +p4768 +S'ActionMenuItem' +p4769 +ssS'editable' +p4770 +(dp4771 +S'editable' +p4772 +I00 +sS'value' +p4773 +I01 +ssS'unique' +p4774 +(dp4775 +S'editable' +p4776 +I00 +sS'value' +p4777 +I00 +ssS'properties' +p4778 +(dp4779 +S'default_value' +p4780 +(dp4781 +S'editable' +p4782 +I00 +sS'value' +p4783 +I00 +ssS'summary_default' +p4784 +(dp4785 +S'editable' +p4786 +I00 +sS'value' +p4787 +S'none' +p4788 +sssS'description' +p4789 +(dp4790 +S'editable' +p4791 +I01 +sS'value' +p4792 +g47 +sssS'folder' +p4793 +(dp4794 +S'mandatory' +p4795 +(dp4796 +S'editable' +p4797 +I00 +sS'value' +p4798 +I00 +ssS'name' +p4799 +(dp4800 +S'editable' +p4801 +I01 +sS'value' +p4802 +S'Folder' +p4803 +ssS'data_type' +p4804 +(dp4805 +S'editable' +p4806 +I00 +sS'value' +p4807 +S'text' +p4808 +ssS'entity_type' +p4809 +(dp4810 +S'editable' +p4811 +I00 +sS'value' +p4812 +S'ActionMenuItem' +p4813 +ssS'editable' +p4814 +(dp4815 +S'editable' +p4816 +I00 +sS'value' +p4817 +I01 +ssS'unique' +p4818 +(dp4819 +S'editable' +p4820 +I00 +sS'value' +p4821 +I00 +ssS'properties' +p4822 +(dp4823 +S'default_value' +p4824 +(dp4825 +S'editable' +p4826 +I00 +sS'value' +p4827 +NssS'summary_default' +p4828 +(dp4829 +S'editable' +p4830 +I00 +sS'value' +p4831 +S'none' +p4832 +sssS'description' +p4833 +(dp4834 +S'editable' +p4835 +I01 +sS'value' +p4836 +g47 +sssS'id' +p4837 +(dp4838 +S'mandatory' +p4839 +(dp4840 +S'editable' +p4841 +I00 +sS'value' +p4842 +I00 +ssS'name' +p4843 +(dp4844 +S'editable' +p4845 +I01 +sS'value' +p4846 +S'Id' +p4847 +ssS'data_type' +p4848 +(dp4849 +S'editable' +p4850 +I00 +sS'value' +p4851 +S'number' +p4852 +ssS'entity_type' +p4853 +(dp4854 +S'editable' +p4855 +I00 +sS'value' +p4856 +S'ActionMenuItem' +p4857 +ssS'editable' +p4858 +(dp4859 +S'editable' +p4860 +I00 +sS'value' +p4861 +I00 +ssS'unique' +p4862 +(dp4863 +S'editable' +p4864 +I00 +sS'value' +p4865 +I00 +ssS'properties' +p4866 +(dp4867 +S'default_value' +p4868 +(dp4869 +S'editable' +p4870 +I00 +sS'value' +p4871 +NssS'summary_default' +p4872 +(dp4873 +S'editable' +p4874 +I00 +sS'value' +p4875 +S'none' +p4876 +sssS'description' +p4877 +(dp4878 +S'editable' +p4879 +I01 +sS'value' +p4880 +g47 +sssS'projects' +p4881 +(dp4882 +S'mandatory' +p4883 +(dp4884 +S'editable' +p4885 +I00 +sS'value' +p4886 +I00 +ssS'name' +p4887 +(dp4888 +S'editable' +p4889 +I01 +sS'value' +p4890 +S'Restrict to Projects' +p4891 +ssS'data_type' +p4892 +(dp4893 +S'editable' +p4894 +I00 +sS'value' +p4895 +S'multi_entity' +p4896 +ssS'entity_type' +p4897 +(dp4898 +S'editable' +p4899 +I00 +sS'value' +p4900 +S'ActionMenuItem' +p4901 +ssS'editable' +p4902 +(dp4903 +S'editable' +p4904 +I00 +sS'value' +p4905 +I01 +ssS'unique' +p4906 +(dp4907 +S'editable' +p4908 +I00 +sS'value' +p4909 +I00 +ssS'properties' +p4910 +(dp4911 +S'default_value' +p4912 +(dp4913 +S'editable' +p4914 +I00 +sS'value' +p4915 +NssS'summary_default' +p4916 +(dp4917 +S'editable' +p4918 +I01 +sS'value' +p4919 +S'none' +p4920 +ssS'valid_types' +p4921 +(dp4922 +S'editable' +p4923 +I01 +sS'value' +p4924 +(lp4925 +S'Project' +p4926 +asssS'description' +p4927 +(dp4928 +S'editable' +p4929 +I01 +sS'value' +p4930 +g47 +sssS'cached_display_name' +p4931 +(dp4932 +S'mandatory' +p4933 +(dp4934 +S'editable' +p4935 +I00 +sS'value' +p4936 +I00 +ssS'name' +p4937 +(dp4938 +S'editable' +p4939 +I01 +sS'value' +p4940 +S'Cached Display Name' +p4941 +ssS'data_type' +p4942 +(dp4943 +S'editable' +p4944 +I00 +sS'value' +p4945 +S'text' +p4946 +ssS'entity_type' +p4947 +(dp4948 +S'editable' +p4949 +I00 +sS'value' +p4950 +S'ActionMenuItem' +p4951 +ssS'editable' +p4952 +(dp4953 +S'editable' +p4954 +I00 +sS'value' +p4955 +I01 +ssS'unique' +p4956 +(dp4957 +S'editable' +p4958 +I00 +sS'value' +p4959 +I00 +ssS'properties' +p4960 +(dp4961 +S'default_value' +p4962 +(dp4963 +S'editable' +p4964 +I00 +sS'value' +p4965 +NssS'summary_default' +p4966 +(dp4967 +S'editable' +p4968 +I00 +sS'value' +p4969 +S'none' +p4970 +sssS'description' +p4971 +(dp4972 +S'editable' +p4973 +I01 +sS'value' +p4974 +g47 +ssssS'Attachment' +p4975 +(dp4976 +S'open_notes_count' +p4977 +(dp4978 +S'mandatory' +p4979 +(dp4980 +S'editable' +p4981 +I00 +sS'value' +p4982 +I00 +ssS'name' +p4983 +(dp4984 +S'editable' +p4985 +I01 +sS'value' +p4986 +S'Open Notes Count' +p4987 +ssS'data_type' +p4988 +(dp4989 +S'editable' +p4990 +I00 +sS'value' +p4991 +S'text' +p4992 +ssS'entity_type' +p4993 +(dp4994 +S'editable' +p4995 +I00 +sS'value' +p4996 +S'Attachment' +p4997 +ssS'editable' +p4998 +(dp4999 +S'editable' +p5000 +I00 +sS'value' +p5001 +I00 +ssS'unique' +p5002 +(dp5003 +S'editable' +p5004 +I00 +sS'value' +p5005 +I00 +ssS'properties' +p5006 +(dp5007 +S'default_value' +p5008 +(dp5009 +S'editable' +p5010 +I00 +sS'value' +p5011 +NssS'summary_default' +p5012 +(dp5013 +S'editable' +p5014 +I01 +sS'value' +p5015 +S'none' +p5016 +sssS'description' +p5017 +(dp5018 +S'editable' +p5019 +I01 +sS'value' +p5020 +g47 +sssS'tasks' +p5021 +(dp5022 +S'mandatory' +p5023 +(dp5024 +S'editable' +p5025 +I00 +sS'value' +p5026 +I00 +ssS'name' +p5027 +(dp5028 +S'editable' +p5029 +I01 +sS'value' +p5030 +S'Tasks' +p5031 +ssS'data_type' +p5032 +(dp5033 +S'editable' +p5034 +I00 +sS'value' +p5035 +S'multi_entity' +p5036 +ssS'entity_type' +p5037 +(dp5038 +S'editable' +p5039 +I00 +sS'value' +p5040 +S'Attachment' +p5041 +ssS'editable' +p5042 +(dp5043 +S'editable' +p5044 +I00 +sS'value' +p5045 +I01 +ssS'unique' +p5046 +(dp5047 +S'editable' +p5048 +I00 +sS'value' +p5049 +I00 +ssS'properties' +p5050 +(dp5051 +S'default_value' +p5052 +(dp5053 +S'editable' +p5054 +I00 +sS'value' +p5055 +NssS'summary_default' +p5056 +(dp5057 +S'editable' +p5058 +I01 +sS'value' +p5059 +S'none' +p5060 +ssS'valid_types' +p5061 +(dp5062 +S'editable' +p5063 +I01 +sS'value' +p5064 +(lp5065 +S'Task' +p5066 +asssS'description' +p5067 +(dp5068 +S'editable' +p5069 +I01 +sS'value' +p5070 +g47 +sssS'file_extension' +p5071 +(dp5072 +S'mandatory' +p5073 +(dp5074 +S'editable' +p5075 +I00 +sS'value' +p5076 +I00 +ssS'name' +p5077 +(dp5078 +S'editable' +p5079 +I01 +sS'value' +p5080 +S'File Type' +p5081 +ssS'data_type' +p5082 +(dp5083 +S'editable' +p5084 +I00 +sS'value' +p5085 +S'text' +p5086 +ssS'entity_type' +p5087 +(dp5088 +S'editable' +p5089 +I00 +sS'value' +p5090 +S'Attachment' +p5091 +ssS'editable' +p5092 +(dp5093 +S'editable' +p5094 +I00 +sS'value' +p5095 +I00 +ssS'unique' +p5096 +(dp5097 +S'editable' +p5098 +I00 +sS'value' +p5099 +I00 +ssS'properties' +p5100 +(dp5101 +S'default_value' +p5102 +(dp5103 +S'editable' +p5104 +I00 +sS'value' +p5105 +NssS'summary_default' +p5106 +(dp5107 +S'editable' +p5108 +I01 +sS'value' +p5109 +S'none' +p5110 +sssS'description' +p5111 +(dp5112 +S'editable' +p5113 +I01 +sS'value' +p5114 +g47 +sssS'updated_at' +p5115 +(dp5116 +S'mandatory' +p5117 +(dp5118 +S'editable' +p5119 +I00 +sS'value' +p5120 +I00 +ssS'name' +p5121 +(dp5122 +S'editable' +p5123 +I01 +sS'value' +p5124 +S'Date Updated' +p5125 +ssS'data_type' +p5126 +(dp5127 +S'editable' +p5128 +I00 +sS'value' +p5129 +S'date_time' +p5130 +ssS'entity_type' +p5131 +(dp5132 +S'editable' +p5133 +I00 +sS'value' +p5134 +S'Attachment' +p5135 +ssS'editable' +p5136 +(dp5137 +S'editable' +p5138 +I00 +sS'value' +p5139 +I00 +ssS'unique' +p5140 +(dp5141 +S'editable' +p5142 +I00 +sS'value' +p5143 +I00 +ssS'properties' +p5144 +(dp5145 +S'default_value' +p5146 +(dp5147 +S'editable' +p5148 +I00 +sS'value' +p5149 +NssS'summary_default' +p5150 +(dp5151 +S'editable' +p5152 +I01 +sS'value' +p5153 +S'none' +p5154 +sssS'description' +p5155 +(dp5156 +S'editable' +p5157 +I01 +sS'value' +p5158 +g47 +sssS'attachment_reference_links' +p5159 +(dp5160 +S'mandatory' +p5161 +(dp5162 +S'editable' +p5163 +I00 +sS'value' +p5164 +I00 +ssS'name' +p5165 +(dp5166 +S'editable' +p5167 +I01 +sS'value' +p5168 +S'Reference For' +p5169 +ssS'data_type' +p5170 +(dp5171 +S'editable' +p5172 +I00 +sS'value' +p5173 +S'multi_entity' +p5174 +ssS'entity_type' +p5175 +(dp5176 +S'editable' +p5177 +I00 +sS'value' +p5178 +S'Attachment' +p5179 +ssS'editable' +p5180 +(dp5181 +S'editable' +p5182 +I00 +sS'value' +p5183 +I01 +ssS'unique' +p5184 +(dp5185 +S'editable' +p5186 +I00 +sS'value' +p5187 +I00 +ssS'properties' +p5188 +(dp5189 +S'default_value' +p5190 +(dp5191 +S'editable' +p5192 +I00 +sS'value' +p5193 +NssS'summary_default' +p5194 +(dp5195 +S'editable' +p5196 +I01 +sS'value' +p5197 +S'none' +p5198 +ssS'valid_types' +p5199 +(dp5200 +S'editable' +p5201 +I00 +sS'value' +p5202 +(lp5203 +S'Asset' +p5204 +aS'Scene' +p5205 +aS'Sequence' +p5206 +aS'Shot' +p5207 +aS'Version' +p5208 +asssS'description' +p5209 +(dp5210 +S'editable' +p5211 +I01 +sS'value' +p5212 +g47 +sssS'file_size' +p5213 +(dp5214 +S'mandatory' +p5215 +(dp5216 +S'editable' +p5217 +I00 +sS'value' +p5218 +I00 +ssS'name' +p5219 +(dp5220 +S'editable' +p5221 +I01 +sS'value' +p5222 +S'File Size' +p5223 +ssS'data_type' +p5224 +(dp5225 +S'editable' +p5226 +I00 +sS'value' +p5227 +S'number' +p5228 +ssS'entity_type' +p5229 +(dp5230 +S'editable' +p5231 +I00 +sS'value' +p5232 +S'Attachment' +p5233 +ssS'editable' +p5234 +(dp5235 +S'editable' +p5236 +I00 +sS'value' +p5237 +I00 +ssS'unique' +p5238 +(dp5239 +S'editable' +p5240 +I00 +sS'value' +p5241 +I00 +ssS'properties' +p5242 +(dp5243 +S'default_value' +p5244 +(dp5245 +S'editable' +p5246 +I00 +sS'value' +p5247 +NssS'summary_default' +p5248 +(dp5249 +S'editable' +p5250 +I01 +sS'value' +p5251 +S'none' +p5252 +sssS'description' +p5253 +(dp5254 +S'editable' +p5255 +I01 +sS'value' +p5256 +g47 +sssS'cached_display_name' +p5257 +(dp5258 +S'mandatory' +p5259 +(dp5260 +S'editable' +p5261 +I00 +sS'value' +p5262 +I00 +ssS'name' +p5263 +(dp5264 +S'editable' +p5265 +I01 +sS'value' +p5266 +S'Cached Display Name' +p5267 +ssS'data_type' +p5268 +(dp5269 +S'editable' +p5270 +I00 +sS'value' +p5271 +S'text' +p5272 +ssS'entity_type' +p5273 +(dp5274 +S'editable' +p5275 +I00 +sS'value' +p5276 +S'Attachment' +p5277 +ssS'editable' +p5278 +(dp5279 +S'editable' +p5280 +I00 +sS'value' +p5281 +I01 +ssS'unique' +p5282 +(dp5283 +S'editable' +p5284 +I00 +sS'value' +p5285 +I00 +ssS'properties' +p5286 +(dp5287 +S'default_value' +p5288 +(dp5289 +S'editable' +p5290 +I00 +sS'value' +p5291 +NssS'summary_default' +p5292 +(dp5293 +S'editable' +p5294 +I00 +sS'value' +p5295 +S'none' +p5296 +sssS'description' +p5297 +(dp5298 +S'editable' +p5299 +I01 +sS'value' +p5300 +g47 +sssS'id' +p5301 +(dp5302 +S'mandatory' +p5303 +(dp5304 +S'editable' +p5305 +I00 +sS'value' +p5306 +I00 +ssS'name' +p5307 +(dp5308 +S'editable' +p5309 +I01 +sS'value' +p5310 +S'Id' +p5311 +ssS'data_type' +p5312 +(dp5313 +S'editable' +p5314 +I00 +sS'value' +p5315 +S'number' +p5316 +ssS'entity_type' +p5317 +(dp5318 +S'editable' +p5319 +I00 +sS'value' +p5320 +S'Attachment' +p5321 +ssS'editable' +p5322 +(dp5323 +S'editable' +p5324 +I00 +sS'value' +p5325 +I00 +ssS'unique' +p5326 +(dp5327 +S'editable' +p5328 +I00 +sS'value' +p5329 +I00 +ssS'properties' +p5330 +(dp5331 +S'default_value' +p5332 +(dp5333 +S'editable' +p5334 +I00 +sS'value' +p5335 +NssS'summary_default' +p5336 +(dp5337 +S'editable' +p5338 +I01 +sS'value' +p5339 +S'none' +p5340 +sssS'description' +p5341 +(dp5342 +S'editable' +p5343 +I01 +sS'value' +p5344 +g47 +sssS'updated_by' +p5345 +(dp5346 +S'mandatory' +p5347 +(dp5348 +S'editable' +p5349 +I00 +sS'value' +p5350 +I00 +ssS'name' +p5351 +(dp5352 +S'editable' +p5353 +I01 +sS'value' +p5354 +S'Updated by' +p5355 +ssS'data_type' +p5356 +(dp5357 +S'editable' +p5358 +I00 +sS'value' +p5359 +S'entity' +p5360 +ssS'entity_type' +p5361 +(dp5362 +S'editable' +p5363 +I00 +sS'value' +p5364 +S'Attachment' +p5365 +ssS'editable' +p5366 +(dp5367 +S'editable' +p5368 +I00 +sS'value' +p5369 +I00 +ssS'unique' +p5370 +(dp5371 +S'editable' +p5372 +I00 +sS'value' +p5373 +I00 +ssS'properties' +p5374 +(dp5375 +S'default_value' +p5376 +(dp5377 +S'editable' +p5378 +I00 +sS'value' +p5379 +NssS'summary_default' +p5380 +(dp5381 +S'editable' +p5382 +I01 +sS'value' +p5383 +S'none' +p5384 +ssS'valid_types' +p5385 +(dp5386 +S'editable' +p5387 +I01 +sS'value' +p5388 +(lp5389 +S'HumanUser' +p5390 +aS'ApiUser' +p5391 +asssS'description' +p5392 +(dp5393 +S'editable' +p5394 +I01 +sS'value' +p5395 +g47 +sssS'queue_for_s3_upload' +p5396 +(dp5397 +S'mandatory' +p5398 +(dp5399 +S'editable' +p5400 +I00 +sS'value' +p5401 +I00 +ssS'name' +p5402 +(dp5403 +S'editable' +p5404 +I01 +sS'value' +p5405 +S'Queue for S3 Upload' +p5406 +ssS'data_type' +p5407 +(dp5408 +S'editable' +p5409 +I00 +sS'value' +p5410 +S'checkbox' +p5411 +ssS'entity_type' +p5412 +(dp5413 +S'editable' +p5414 +I00 +sS'value' +p5415 +S'Attachment' +p5416 +ssS'editable' +p5417 +(dp5418 +S'editable' +p5419 +I00 +sS'value' +p5420 +I00 +ssS'unique' +p5421 +(dp5422 +S'editable' +p5423 +I00 +sS'value' +p5424 +I00 +ssS'properties' +p5425 +(dp5426 +S'default_value' +p5427 +(dp5428 +S'editable' +p5429 +I00 +sS'value' +p5430 +I0 +ssS'summary_default' +p5431 +(dp5432 +S'editable' +p5433 +I01 +sS'value' +p5434 +S'none' +p5435 +sssS'description' +p5436 +(dp5437 +S'editable' +p5438 +I01 +sS'value' +p5439 +g47 +sssS'display_name' +p5440 +(dp5441 +S'mandatory' +p5442 +(dp5443 +S'editable' +p5444 +I00 +sS'value' +p5445 +I00 +ssS'name' +p5446 +(dp5447 +S'editable' +p5448 +I01 +sS'value' +p5449 +S'File Display Name' +p5450 +ssS'data_type' +p5451 +(dp5452 +S'editable' +p5453 +I00 +sS'value' +p5454 +S'text' +p5455 +ssS'entity_type' +p5456 +(dp5457 +S'editable' +p5458 +I00 +sS'value' +p5459 +S'Attachment' +p5460 +ssS'editable' +p5461 +(dp5462 +S'editable' +p5463 +I00 +sS'value' +p5464 +I01 +ssS'unique' +p5465 +(dp5466 +S'editable' +p5467 +I00 +sS'value' +p5468 +I00 +ssS'properties' +p5469 +(dp5470 +S'default_value' +p5471 +(dp5472 +S'editable' +p5473 +I00 +sS'value' +p5474 +NssS'summary_default' +p5475 +(dp5476 +S'editable' +p5477 +I01 +sS'value' +p5478 +S'none' +p5479 +sssS'description' +p5480 +(dp5481 +S'editable' +p5482 +I01 +sS'value' +p5483 +g47 +sssS'image' +p5484 +(dp5485 +S'mandatory' +p5486 +(dp5487 +S'editable' +p5488 +I00 +sS'value' +p5489 +I00 +ssS'name' +p5490 +(dp5491 +S'editable' +p5492 +I01 +sS'value' +p5493 +S'Thumbnail' +p5494 +ssS'data_type' +p5495 +(dp5496 +S'editable' +p5497 +I00 +sS'value' +p5498 +S'image' +p5499 +ssS'entity_type' +p5500 +(dp5501 +S'editable' +p5502 +I00 +sS'value' +p5503 +S'Attachment' +p5504 +ssS'editable' +p5505 +(dp5506 +S'editable' +p5507 +I00 +sS'value' +p5508 +I01 +ssS'unique' +p5509 +(dp5510 +S'editable' +p5511 +I00 +sS'value' +p5512 +I00 +ssS'properties' +p5513 +(dp5514 +S'default_value' +p5515 +(dp5516 +S'editable' +p5517 +I00 +sS'value' +p5518 +NssS'summary_default' +p5519 +(dp5520 +S'editable' +p5521 +I01 +sS'value' +p5522 +S'none' +p5523 +sssS'description' +p5524 +(dp5525 +S'editable' +p5526 +I01 +sS'value' +p5527 +g47 +sssS'task_template' +p5528 +(dp5529 +S'mandatory' +p5530 +(dp5531 +S'editable' +p5532 +I00 +sS'value' +p5533 +I00 +ssS'name' +p5534 +(dp5535 +S'editable' +p5536 +I01 +sS'value' +p5537 +S'Task Template' +p5538 +ssS'data_type' +p5539 +(dp5540 +S'editable' +p5541 +I00 +sS'value' +p5542 +S'entity' +p5543 +ssS'entity_type' +p5544 +(dp5545 +S'editable' +p5546 +I00 +sS'value' +p5547 +S'Attachment' +p5548 +ssS'editable' +p5549 +(dp5550 +S'editable' +p5551 +I00 +sS'value' +p5552 +I01 +ssS'unique' +p5553 +(dp5554 +S'editable' +p5555 +I00 +sS'value' +p5556 +I00 +ssS'properties' +p5557 +(dp5558 +S'default_value' +p5559 +(dp5560 +S'editable' +p5561 +I00 +sS'value' +p5562 +NssS'summary_default' +p5563 +(dp5564 +S'editable' +p5565 +I01 +sS'value' +p5566 +S'none' +p5567 +ssS'valid_types' +p5568 +(dp5569 +S'editable' +p5570 +I01 +sS'value' +p5571 +(lp5572 +S'TaskTemplate' +p5573 +asssS'description' +p5574 +(dp5575 +S'editable' +p5576 +I01 +sS'value' +p5577 +g47 +sssS'created_by' +p5578 +(dp5579 +S'mandatory' +p5580 +(dp5581 +S'editable' +p5582 +I00 +sS'value' +p5583 +I00 +ssS'name' +p5584 +(dp5585 +S'editable' +p5586 +I01 +sS'value' +p5587 +S'Created by' +p5588 +ssS'data_type' +p5589 +(dp5590 +S'editable' +p5591 +I00 +sS'value' +p5592 +S'entity' +p5593 +ssS'entity_type' +p5594 +(dp5595 +S'editable' +p5596 +I00 +sS'value' +p5597 +S'Attachment' +p5598 +ssS'editable' +p5599 +(dp5600 +S'editable' +p5601 +I00 +sS'value' +p5602 +I00 +ssS'unique' +p5603 +(dp5604 +S'editable' +p5605 +I00 +sS'value' +p5606 +I00 +ssS'properties' +p5607 +(dp5608 +S'default_value' +p5609 +(dp5610 +S'editable' +p5611 +I00 +sS'value' +p5612 +NssS'summary_default' +p5613 +(dp5614 +S'editable' +p5615 +I01 +sS'value' +p5616 +S'none' +p5617 +ssS'valid_types' +p5618 +(dp5619 +S'editable' +p5620 +I01 +sS'value' +p5621 +(lp5622 +S'HumanUser' +p5623 +aS'ApiUser' +p5624 +asssS'description' +p5625 +(dp5626 +S'editable' +p5627 +I01 +sS'value' +p5628 +g47 +sssS'filename' +p5629 +(dp5630 +S'mandatory' +p5631 +(dp5632 +S'editable' +p5633 +I00 +sS'value' +p5634 +I00 +ssS'name' +p5635 +(dp5636 +S'editable' +p5637 +I01 +sS'value' +p5638 +S'File Name' +p5639 +ssS'data_type' +p5640 +(dp5641 +S'editable' +p5642 +I00 +sS'value' +p5643 +S'text' +p5644 +ssS'entity_type' +p5645 +(dp5646 +S'editable' +p5647 +I00 +sS'value' +p5648 +S'Attachment' +p5649 +ssS'editable' +p5650 +(dp5651 +S'editable' +p5652 +I00 +sS'value' +p5653 +I00 +ssS'unique' +p5654 +(dp5655 +S'editable' +p5656 +I00 +sS'value' +p5657 +I00 +ssS'properties' +p5658 +(dp5659 +S'default_value' +p5660 +(dp5661 +S'editable' +p5662 +I00 +sS'value' +p5663 +NssS'summary_default' +p5664 +(dp5665 +S'editable' +p5666 +I01 +sS'value' +p5667 +S'none' +p5668 +sssS'description' +p5669 +(dp5670 +S'editable' +p5671 +I01 +sS'value' +p5672 +g47 +sssS'sg_status_list' +p5673 +(dp5674 +S'mandatory' +p5675 +(dp5676 +S'editable' +p5677 +I00 +sS'value' +p5678 +I00 +ssS'name' +p5679 +(dp5680 +S'editable' +p5681 +I01 +sS'value' +p5682 +S'Status' +p5683 +ssS'data_type' +p5684 +(dp5685 +S'editable' +p5686 +I00 +sS'value' +p5687 +S'status_list' +p5688 +ssS'entity_type' +p5689 +(dp5690 +S'editable' +p5691 +I00 +sS'value' +p5692 +S'Attachment' +p5693 +ssS'editable' +p5694 +(dp5695 +S'editable' +p5696 +I00 +sS'value' +p5697 +I01 +ssS'unique' +p5698 +(dp5699 +S'editable' +p5700 +I00 +sS'value' +p5701 +I00 +ssS'properties' +p5702 +(dp5703 +S'default_value' +p5704 +(dp5705 +S'editable' +p5706 +I01 +sS'value' +p5707 +S'na' +p5708 +ssS'valid_values' +p5709 +(dp5710 +S'editable' +p5711 +I01 +sS'value' +p5712 +(lp5713 +S'fin' +p5714 +aS'na' +p5715 +assS'summary_default' +p5716 +(dp5717 +S'editable' +p5718 +I01 +sS'value' +p5719 +S'status_list' +p5720 +sssS'description' +p5721 +(dp5722 +S'editable' +p5723 +I01 +sS'value' +p5724 +g47 +sssS'attachment_links' +p5725 +(dp5726 +S'mandatory' +p5727 +(dp5728 +S'editable' +p5729 +I00 +sS'value' +p5730 +I00 +ssS'name' +p5731 +(dp5732 +S'editable' +p5733 +I01 +sS'value' +p5734 +S'Links' +p5735 +ssS'data_type' +p5736 +(dp5737 +S'editable' +p5738 +I00 +sS'value' +p5739 +S'multi_entity' +p5740 +ssS'entity_type' +p5741 +(dp5742 +S'editable' +p5743 +I00 +sS'value' +p5744 +S'Attachment' +p5745 +ssS'editable' +p5746 +(dp5747 +S'editable' +p5748 +I00 +sS'value' +p5749 +I01 +ssS'unique' +p5750 +(dp5751 +S'editable' +p5752 +I00 +sS'value' +p5753 +I00 +ssS'properties' +p5754 +(dp5755 +S'default_value' +p5756 +(dp5757 +S'editable' +p5758 +I00 +sS'value' +p5759 +NssS'summary_default' +p5760 +(dp5761 +S'editable' +p5762 +I01 +sS'value' +p5763 +S'none' +p5764 +ssS'valid_types' +p5765 +(dp5766 +S'editable' +p5767 +I00 +sS'value' +p5768 +(lp5769 +S'Asset' +p5770 +aS'Scene' +p5771 +aS'Sequence' +p5772 +aS'Shot' +p5773 +aS'Version' +p5774 +asssS'description' +p5775 +(dp5776 +S'editable' +p5777 +I01 +sS'value' +p5778 +g47 +sssS'description' +p5779 +(dp5780 +S'mandatory' +p5781 +(dp5782 +S'editable' +p5783 +I00 +sS'value' +p5784 +I00 +ssS'name' +p5785 +(dp5786 +S'editable' +p5787 +I01 +sS'value' +p5788 +S'Description' +p5789 +ssS'data_type' +p5790 +(dp5791 +S'editable' +p5792 +I00 +sS'value' +p5793 +S'text' +p5794 +ssS'entity_type' +p5795 +(dp5796 +S'editable' +p5797 +I00 +sS'value' +p5798 +S'Attachment' +p5799 +ssS'editable' +p5800 +(dp5801 +S'editable' +p5802 +I00 +sS'value' +p5803 +I01 +ssS'unique' +p5804 +(dp5805 +S'editable' +p5806 +I00 +sS'value' +p5807 +I00 +ssS'properties' +p5808 +(dp5809 +S'default_value' +p5810 +(dp5811 +S'editable' +p5812 +I00 +sS'value' +p5813 +NssS'summary_default' +p5814 +(dp5815 +S'editable' +p5816 +I01 +sS'value' +p5817 +S'none' +p5818 +sssS'description' +p5819 +(dp5820 +S'editable' +p5821 +I01 +sS'value' +p5822 +g47 +sssS'local_storage' +p5823 +(dp5824 +S'mandatory' +p5825 +(dp5826 +S'editable' +p5827 +I00 +sS'value' +p5828 +I00 +ssS'name' +p5829 +(dp5830 +S'editable' +p5831 +I01 +sS'value' +p5832 +S'Local File Storage' +p5833 +ssS'data_type' +p5834 +(dp5835 +S'editable' +p5836 +I00 +sS'value' +p5837 +S'entity' +p5838 +ssS'entity_type' +p5839 +(dp5840 +S'editable' +p5841 +I00 +sS'value' +p5842 +S'Attachment' +p5843 +ssS'editable' +p5844 +(dp5845 +S'editable' +p5846 +I00 +sS'value' +p5847 +I00 +ssS'unique' +p5848 +(dp5849 +S'editable' +p5850 +I00 +sS'value' +p5851 +I00 +ssS'properties' +p5852 +(dp5853 +S'default_value' +p5854 +(dp5855 +S'editable' +p5856 +I00 +sS'value' +p5857 +NssS'summary_default' +p5858 +(dp5859 +S'editable' +p5860 +I00 +sS'value' +p5861 +S'none' +p5862 +ssS'valid_types' +p5863 +(dp5864 +S'editable' +p5865 +I00 +sS'value' +p5866 +(lp5867 +S'LocalStorage' +p5868 +asssS'description' +p5869 +(dp5870 +S'editable' +p5871 +I01 +sS'value' +p5872 +g47 +sssS'open_notes' +p5873 +(dp5874 +S'mandatory' +p5875 +(dp5876 +S'editable' +p5877 +I00 +sS'value' +p5878 +I00 +ssS'name' +p5879 +(dp5880 +S'editable' +p5881 +I01 +sS'value' +p5882 +S'Open Notes' +p5883 +ssS'data_type' +p5884 +(dp5885 +S'editable' +p5886 +I00 +sS'value' +p5887 +S'multi_entity' +p5888 +ssS'entity_type' +p5889 +(dp5890 +S'editable' +p5891 +I00 +sS'value' +p5892 +S'Attachment' +p5893 +ssS'editable' +p5894 +(dp5895 +S'editable' +p5896 +I00 +sS'value' +p5897 +I00 +ssS'unique' +p5898 +(dp5899 +S'editable' +p5900 +I00 +sS'value' +p5901 +I00 +ssS'properties' +p5902 +(dp5903 +S'default_value' +p5904 +(dp5905 +S'editable' +p5906 +I00 +sS'value' +p5907 +NssS'summary_default' +p5908 +(dp5909 +S'editable' +p5910 +I01 +sS'value' +p5911 +S'none' +p5912 +ssS'valid_types' +p5913 +(dp5914 +S'editable' +p5915 +I01 +sS'value' +p5916 +(lp5917 +S'Note' +p5918 +asssS'description' +p5919 +(dp5920 +S'editable' +p5921 +I01 +sS'value' +p5922 +g47 +sssS'step_0' +p5923 +(dp5924 +S'mandatory' +p5925 +(dp5926 +S'editable' +p5927 +I00 +sS'value' +p5928 +I00 +ssS'name' +p5929 +(dp5930 +S'editable' +p5931 +I01 +sS'value' +p5932 +S'ALL TASKS' +p5933 +ssS'data_type' +p5934 +(dp5935 +S'editable' +p5936 +I00 +sS'value' +p5937 +S'pivot_column' +p5938 +ssS'entity_type' +p5939 +(dp5940 +S'editable' +p5941 +I00 +sS'value' +p5942 +S'Attachment' +p5943 +ssS'editable' +p5944 +(dp5945 +S'editable' +p5946 +I00 +sS'value' +p5947 +I00 +ssS'unique' +p5948 +(dp5949 +S'editable' +p5950 +I00 +sS'value' +p5951 +I00 +ssS'properties' +p5952 +(dp5953 +S'default_value' +p5954 +(dp5955 +S'editable' +p5956 +I00 +sS'value' +p5957 +NssS'summary_default' +p5958 +(dp5959 +S'editable' +p5960 +I00 +sS'value' +p5961 +S'none' +p5962 +sssS'description' +p5963 +(dp5964 +S'editable' +p5965 +I01 +sS'value' +p5966 +g47 +sssS'created_at' +p5967 +(dp5968 +S'mandatory' +p5969 +(dp5970 +S'editable' +p5971 +I00 +sS'value' +p5972 +I00 +ssS'name' +p5973 +(dp5974 +S'editable' +p5975 +I01 +sS'value' +p5976 +S'Date Created' +p5977 +ssS'data_type' +p5978 +(dp5979 +S'editable' +p5980 +I00 +sS'value' +p5981 +S'date_time' +p5982 +ssS'entity_type' +p5983 +(dp5984 +S'editable' +p5985 +I00 +sS'value' +p5986 +S'Attachment' +p5987 +ssS'editable' +p5988 +(dp5989 +S'editable' +p5990 +I00 +sS'value' +p5991 +I00 +ssS'unique' +p5992 +(dp5993 +S'editable' +p5994 +I00 +sS'value' +p5995 +I00 +ssS'properties' +p5996 +(dp5997 +S'default_value' +p5998 +(dp5999 +S'editable' +p6000 +I00 +sS'value' +p6001 +NssS'summary_default' +p6002 +(dp6003 +S'editable' +p6004 +I01 +sS'value' +p6005 +S'none' +p6006 +sssS'description' +p6007 +(dp6008 +S'editable' +p6009 +I01 +sS'value' +p6010 +g47 +sssS'project' +p6011 +(dp6012 +S'mandatory' +p6013 +(dp6014 +S'editable' +p6015 +I00 +sS'value' +p6016 +I00 +ssS'name' +p6017 +(dp6018 +S'editable' +p6019 +I01 +sS'value' +p6020 +S'Project' +p6021 +ssS'data_type' +p6022 +(dp6023 +S'editable' +p6024 +I00 +sS'value' +p6025 +S'entity' +p6026 +ssS'entity_type' +p6027 +(dp6028 +S'editable' +p6029 +I00 +sS'value' +p6030 +S'Attachment' +p6031 +ssS'editable' +p6032 +(dp6033 +S'editable' +p6034 +I00 +sS'value' +p6035 +I01 +ssS'unique' +p6036 +(dp6037 +S'editable' +p6038 +I00 +sS'value' +p6039 +I00 +ssS'properties' +p6040 +(dp6041 +S'default_value' +p6042 +(dp6043 +S'editable' +p6044 +I00 +sS'value' +p6045 +NssS'summary_default' +p6046 +(dp6047 +S'editable' +p6048 +I01 +sS'value' +p6049 +S'none' +p6050 +ssS'valid_types' +p6051 +(dp6052 +S'editable' +p6053 +I01 +sS'value' +p6054 +(lp6055 +S'Project' +p6056 +asssS'description' +p6057 +(dp6058 +S'editable' +p6059 +I01 +sS'value' +p6060 +g47 +sssS'filmstrip_image' +p6061 +(dp6062 +S'mandatory' +p6063 +(dp6064 +S'editable' +p6065 +I00 +sS'value' +p6066 +I00 +ssS'name' +p6067 +(dp6068 +S'editable' +p6069 +I01 +sS'value' +p6070 +S'Filmstrip Thumbnail' +p6071 +ssS'data_type' +p6072 +(dp6073 +S'editable' +p6074 +I00 +sS'value' +p6075 +S'image' +p6076 +ssS'entity_type' +p6077 +(dp6078 +S'editable' +p6079 +I00 +sS'value' +p6080 +S'Attachment' +p6081 +ssS'editable' +p6082 +(dp6083 +S'editable' +p6084 +I00 +sS'value' +p6085 +I01 +ssS'unique' +p6086 +(dp6087 +S'editable' +p6088 +I00 +sS'value' +p6089 +I00 +ssS'properties' +p6090 +(dp6091 +S'default_value' +p6092 +(dp6093 +S'editable' +p6094 +I00 +sS'value' +p6095 +NssS'summary_default' +p6096 +(dp6097 +S'editable' +p6098 +I01 +sS'value' +p6099 +S'none' +p6100 +sssS'description' +p6101 +(dp6102 +S'editable' +p6103 +I01 +sS'value' +p6104 +g47 +sssS'this_file' +p6105 +(dp6106 +S'mandatory' +p6107 +(dp6108 +S'editable' +p6109 +I00 +sS'value' +p6110 +I01 +ssS'name' +p6111 +(dp6112 +S'editable' +p6113 +I01 +sS'value' +p6114 +S'File' +p6115 +ssS'data_type' +p6116 +(dp6117 +S'editable' +p6118 +I00 +sS'value' +p6119 +S'url' +p6120 +ssS'entity_type' +p6121 +(dp6122 +S'editable' +p6123 +I00 +sS'value' +p6124 +S'Attachment' +p6125 +ssS'editable' +p6126 +(dp6127 +S'editable' +p6128 +I00 +sS'value' +p6129 +I00 +ssS'unique' +p6130 +(dp6131 +S'editable' +p6132 +I00 +sS'value' +p6133 +I00 +ssS'properties' +p6134 +(dp6135 +S'default_value' +p6136 +(dp6137 +S'editable' +p6138 +I00 +sS'value' +p6139 +NssS'open_in_new_window' +p6140 +(dp6141 +S'editable' +p6142 +I01 +sS'value' +p6143 +I01 +ssS'summary_default' +p6144 +(dp6145 +S'editable' +p6146 +I01 +sS'value' +p6147 +S'none' +p6148 +sssS'description' +p6149 +(dp6150 +S'editable' +p6151 +I01 +sS'value' +p6152 +g47 +sssS'sg_type' +p6153 +(dp6154 +S'mandatory' +p6155 +(dp6156 +S'editable' +p6157 +I00 +sS'value' +p6158 +I00 +ssS'name' +p6159 +(dp6160 +S'editable' +p6161 +I01 +sS'value' +p6162 +S'Type' +p6163 +ssS'data_type' +p6164 +(dp6165 +S'editable' +p6166 +I00 +sS'value' +p6167 +S'text' +p6168 +ssS'entity_type' +p6169 +(dp6170 +S'editable' +p6171 +I00 +sS'value' +p6172 +S'Attachment' +p6173 +ssS'editable' +p6174 +(dp6175 +S'editable' +p6176 +I00 +sS'value' +p6177 +I01 +ssS'unique' +p6178 +(dp6179 +S'editable' +p6180 +I00 +sS'value' +p6181 +I00 +ssS'properties' +p6182 +(dp6183 +S'default_value' +p6184 +(dp6185 +S'editable' +p6186 +I00 +sS'value' +p6187 +NssS'summary_default' +p6188 +(dp6189 +S'editable' +p6190 +I01 +sS'value' +p6191 +S'none' +p6192 +sssS'description' +p6193 +(dp6194 +S'editable' +p6195 +I01 +sS'value' +p6196 +g47 +sssS'tag_list' +p6197 +(dp6198 +S'mandatory' +p6199 +(dp6200 +S'editable' +p6201 +I00 +sS'value' +p6202 +I00 +ssS'name' +p6203 +(dp6204 +S'editable' +p6205 +I01 +sS'value' +p6206 +S'Tags' +p6207 +ssS'data_type' +p6208 +(dp6209 +S'editable' +p6210 +I00 +sS'value' +p6211 +S'tag_list' +p6212 +ssS'entity_type' +p6213 +(dp6214 +S'editable' +p6215 +I00 +sS'value' +p6216 +S'Attachment' +p6217 +ssS'editable' +p6218 +(dp6219 +S'editable' +p6220 +I00 +sS'value' +p6221 +I01 +ssS'unique' +p6222 +(dp6223 +S'editable' +p6224 +I00 +sS'value' +p6225 +I00 +ssS'properties' +p6226 +(dp6227 +S'default_value' +p6228 +(dp6229 +S'editable' +p6230 +I00 +sS'value' +p6231 +NssS'summary_default' +p6232 +(dp6233 +S'editable' +p6234 +I01 +sS'value' +p6235 +S'none' +p6236 +ssS'valid_types' +p6237 +(dp6238 +S'editable' +p6239 +I01 +sS'value' +p6240 +(lp6241 +S'Tag' +p6242 +asssS'description' +p6243 +(dp6244 +S'editable' +p6245 +I01 +sS'value' +p6246 +g47 +sssS'notes' +p6247 +(dp6248 +S'mandatory' +p6249 +(dp6250 +S'editable' +p6251 +I00 +sS'value' +p6252 +I00 +ssS'name' +p6253 +(dp6254 +S'editable' +p6255 +I01 +sS'value' +p6256 +S'Notes' +p6257 +ssS'data_type' +p6258 +(dp6259 +S'editable' +p6260 +I00 +sS'value' +p6261 +S'multi_entity' +p6262 +ssS'entity_type' +p6263 +(dp6264 +S'editable' +p6265 +I00 +sS'value' +p6266 +S'Attachment' +p6267 +ssS'editable' +p6268 +(dp6269 +S'editable' +p6270 +I00 +sS'value' +p6271 +I01 +ssS'unique' +p6272 +(dp6273 +S'editable' +p6274 +I00 +sS'value' +p6275 +I00 +ssS'properties' +p6276 +(dp6277 +S'default_value' +p6278 +(dp6279 +S'editable' +p6280 +I00 +sS'value' +p6281 +NssS'summary_default' +p6282 +(dp6283 +S'editable' +p6284 +I01 +sS'value' +p6285 +S'none' +p6286 +ssS'valid_types' +p6287 +(dp6288 +S'editable' +p6289 +I01 +sS'value' +p6290 +(lp6291 +S'Note' +p6292 +asssS'description' +p6293 +(dp6294 +S'editable' +p6295 +I01 +sS'value' +p6296 +g47 +ssssS'AssetMocapTakeConnection' +p6297 +(dp6298 +S'mocap_take' +p6299 +(dp6300 +S'mandatory' +p6301 +(dp6302 +S'editable' +p6303 +I00 +sS'value' +p6304 +I00 +ssS'name' +p6305 +(dp6306 +S'editable' +p6307 +I01 +sS'value' +p6308 +S'Mocap Take' +p6309 +ssS'data_type' +p6310 +(dp6311 +S'editable' +p6312 +I00 +sS'value' +p6313 +S'entity' +p6314 +ssS'entity_type' +p6315 +(dp6316 +S'editable' +p6317 +I00 +sS'value' +p6318 +S'AssetMocapTakeConnection' +p6319 +ssS'editable' +p6320 +(dp6321 +S'editable' +p6322 +I00 +sS'value' +p6323 +I00 +ssS'unique' +p6324 +(dp6325 +S'editable' +p6326 +I00 +sS'value' +p6327 +I00 +ssS'properties' +p6328 +(dp6329 +S'default_value' +p6330 +(dp6331 +S'editable' +p6332 +I00 +sS'value' +p6333 +NssS'summary_default' +p6334 +(dp6335 +S'editable' +p6336 +I00 +sS'value' +p6337 +S'none' +p6338 +ssS'valid_types' +p6339 +(dp6340 +S'editable' +p6341 +I00 +sS'value' +p6342 +(lp6343 +S'MocapTake' +p6344 +asssS'description' +p6345 +(dp6346 +S'editable' +p6347 +I01 +sS'value' +p6348 +g47 +sssS'cached_display_name' +p6349 +(dp6350 +S'mandatory' +p6351 +(dp6352 +S'editable' +p6353 +I00 +sS'value' +p6354 +I00 +ssS'name' +p6355 +(dp6356 +S'editable' +p6357 +I01 +sS'value' +p6358 +S'Cached Display Name' +p6359 +ssS'data_type' +p6360 +(dp6361 +S'editable' +p6362 +I00 +sS'value' +p6363 +S'text' +p6364 +ssS'entity_type' +p6365 +(dp6366 +S'editable' +p6367 +I00 +sS'value' +p6368 +S'AssetMocapTakeConnection' +p6369 +ssS'editable' +p6370 +(dp6371 +S'editable' +p6372 +I00 +sS'value' +p6373 +I01 +ssS'unique' +p6374 +(dp6375 +S'editable' +p6376 +I00 +sS'value' +p6377 +I00 +ssS'properties' +p6378 +(dp6379 +S'default_value' +p6380 +(dp6381 +S'editable' +p6382 +I00 +sS'value' +p6383 +NssS'summary_default' +p6384 +(dp6385 +S'editable' +p6386 +I00 +sS'value' +p6387 +S'none' +p6388 +sssS'description' +p6389 +(dp6390 +S'editable' +p6391 +I01 +sS'value' +p6392 +g47 +sssS'asset' +p6393 +(dp6394 +S'mandatory' +p6395 +(dp6396 +S'editable' +p6397 +I00 +sS'value' +p6398 +I00 +ssS'name' +p6399 +(dp6400 +S'editable' +p6401 +I01 +sS'value' +p6402 +S'Asset' +p6403 +ssS'data_type' +p6404 +(dp6405 +S'editable' +p6406 +I00 +sS'value' +p6407 +S'entity' +p6408 +ssS'entity_type' +p6409 +(dp6410 +S'editable' +p6411 +I00 +sS'value' +p6412 +S'AssetMocapTakeConnection' +p6413 +ssS'editable' +p6414 +(dp6415 +S'editable' +p6416 +I00 +sS'value' +p6417 +I00 +ssS'unique' +p6418 +(dp6419 +S'editable' +p6420 +I00 +sS'value' +p6421 +I00 +ssS'properties' +p6422 +(dp6423 +S'default_value' +p6424 +(dp6425 +S'editable' +p6426 +I00 +sS'value' +p6427 +NssS'summary_default' +p6428 +(dp6429 +S'editable' +p6430 +I00 +sS'value' +p6431 +S'none' +p6432 +ssS'valid_types' +p6433 +(dp6434 +S'editable' +p6435 +I00 +sS'value' +p6436 +(lp6437 +S'Asset' +p6438 +asssS'description' +p6439 +(dp6440 +S'editable' +p6441 +I01 +sS'value' +p6442 +g47 +sssS'id' +p6443 +(dp6444 +S'mandatory' +p6445 +(dp6446 +S'editable' +p6447 +I00 +sS'value' +p6448 +I01 +ssS'name' +p6449 +(dp6450 +S'editable' +p6451 +I01 +sS'value' +p6452 +S'Id' +p6453 +ssS'data_type' +p6454 +(dp6455 +S'editable' +p6456 +I00 +sS'value' +p6457 +S'number' +p6458 +ssS'entity_type' +p6459 +(dp6460 +S'editable' +p6461 +I00 +sS'value' +p6462 +S'AssetMocapTakeConnection' +p6463 +ssS'editable' +p6464 +(dp6465 +S'editable' +p6466 +I00 +sS'value' +p6467 +I00 +ssS'unique' +p6468 +(dp6469 +S'editable' +p6470 +I00 +sS'value' +p6471 +I00 +ssS'properties' +p6472 +(dp6473 +S'default_value' +p6474 +(dp6475 +S'editable' +p6476 +I00 +sS'value' +p6477 +NssS'summary_default' +p6478 +(dp6479 +S'editable' +p6480 +I00 +sS'value' +p6481 +S'none' +p6482 +sssS'description' +p6483 +(dp6484 +S'editable' +p6485 +I01 +sS'value' +p6486 +g47 +ssssS'Department' +p6487 +(dp6488 +S'open_notes_count' +p6489 +(dp6490 +S'mandatory' +p6491 +(dp6492 +S'editable' +p6493 +I00 +sS'value' +p6494 +I00 +ssS'name' +p6495 +(dp6496 +S'editable' +p6497 +I01 +sS'value' +p6498 +S'Open Notes Count' +p6499 +ssS'data_type' +p6500 +(dp6501 +S'editable' +p6502 +I00 +sS'value' +p6503 +S'text' +p6504 +ssS'entity_type' +p6505 +(dp6506 +S'editable' +p6507 +I00 +sS'value' +p6508 +S'Department' +p6509 +ssS'editable' +p6510 +(dp6511 +S'editable' +p6512 +I00 +sS'value' +p6513 +I00 +ssS'unique' +p6514 +(dp6515 +S'editable' +p6516 +I00 +sS'value' +p6517 +I00 +ssS'properties' +p6518 +(dp6519 +S'default_value' +p6520 +(dp6521 +S'editable' +p6522 +I00 +sS'value' +p6523 +NssS'summary_default' +p6524 +(dp6525 +S'editable' +p6526 +I01 +sS'value' +p6527 +S'none' +p6528 +sssS'description' +p6529 +(dp6530 +S'editable' +p6531 +I01 +sS'value' +p6532 +g47 +sssS'code' +p6533 +(dp6534 +S'mandatory' +p6535 +(dp6536 +S'editable' +p6537 +I00 +sS'value' +p6538 +I00 +ssS'name' +p6539 +(dp6540 +S'editable' +p6541 +I01 +sS'value' +p6542 +S'Department Short Name' +p6543 +ssS'data_type' +p6544 +(dp6545 +S'editable' +p6546 +I00 +sS'value' +p6547 +S'text' +p6548 +ssS'entity_type' +p6549 +(dp6550 +S'editable' +p6551 +I00 +sS'value' +p6552 +S'Department' +p6553 +ssS'editable' +p6554 +(dp6555 +S'editable' +p6556 +I00 +sS'value' +p6557 +I01 +ssS'unique' +p6558 +(dp6559 +S'editable' +p6560 +I00 +sS'value' +p6561 +I00 +ssS'properties' +p6562 +(dp6563 +S'default_value' +p6564 +(dp6565 +S'editable' +p6566 +I00 +sS'value' +p6567 +NssS'summary_default' +p6568 +(dp6569 +S'editable' +p6570 +I01 +sS'value' +p6571 +S'none' +p6572 +sssS'description' +p6573 +(dp6574 +S'editable' +p6575 +I01 +sS'value' +p6576 +g47 +sssS'open_notes' +p6577 +(dp6578 +S'mandatory' +p6579 +(dp6580 +S'editable' +p6581 +I00 +sS'value' +p6582 +I00 +ssS'name' +p6583 +(dp6584 +S'editable' +p6585 +I01 +sS'value' +p6586 +S'Open Notes' +p6587 +ssS'data_type' +p6588 +(dp6589 +S'editable' +p6590 +I00 +sS'value' +p6591 +S'multi_entity' +p6592 +ssS'entity_type' +p6593 +(dp6594 +S'editable' +p6595 +I00 +sS'value' +p6596 +S'Department' +p6597 +ssS'editable' +p6598 +(dp6599 +S'editable' +p6600 +I00 +sS'value' +p6601 +I00 +ssS'unique' +p6602 +(dp6603 +S'editable' +p6604 +I00 +sS'value' +p6605 +I00 +ssS'properties' +p6606 +(dp6607 +S'default_value' +p6608 +(dp6609 +S'editable' +p6610 +I00 +sS'value' +p6611 +NssS'summary_default' +p6612 +(dp6613 +S'editable' +p6614 +I01 +sS'value' +p6615 +S'none' +p6616 +ssS'valid_types' +p6617 +(dp6618 +S'editable' +p6619 +I01 +sS'value' +p6620 +(lp6621 +S'Note' +p6622 +asssS'description' +p6623 +(dp6624 +S'editable' +p6625 +I01 +sS'value' +p6626 +g47 +sssS'users' +p6627 +(dp6628 +S'mandatory' +p6629 +(dp6630 +S'editable' +p6631 +I00 +sS'value' +p6632 +I00 +ssS'name' +p6633 +(dp6634 +S'editable' +p6635 +I01 +sS'value' +p6636 +S'People' +p6637 +ssS'data_type' +p6638 +(dp6639 +S'editable' +p6640 +I00 +sS'value' +p6641 +S'multi_entity' +p6642 +ssS'entity_type' +p6643 +(dp6644 +S'editable' +p6645 +I00 +sS'value' +p6646 +S'Department' +p6647 +ssS'editable' +p6648 +(dp6649 +S'editable' +p6650 +I00 +sS'value' +p6651 +I01 +ssS'unique' +p6652 +(dp6653 +S'editable' +p6654 +I00 +sS'value' +p6655 +I00 +ssS'properties' +p6656 +(dp6657 +S'default_value' +p6658 +(dp6659 +S'editable' +p6660 +I00 +sS'value' +p6661 +NssS'summary_default' +p6662 +(dp6663 +S'editable' +p6664 +I01 +sS'value' +p6665 +S'none' +p6666 +ssS'valid_types' +p6667 +(dp6668 +S'editable' +p6669 +I01 +sS'value' +p6670 +(lp6671 +S'HumanUser' +p6672 +asssS'description' +p6673 +(dp6674 +S'editable' +p6675 +I01 +sS'value' +p6676 +g47 +sssS'list_order' +p6677 +(dp6678 +S'mandatory' +p6679 +(dp6680 +S'editable' +p6681 +I00 +sS'value' +p6682 +I00 +ssS'name' +p6683 +(dp6684 +S'editable' +p6685 +I01 +sS'value' +p6686 +S'Order' +p6687 +ssS'data_type' +p6688 +(dp6689 +S'editable' +p6690 +I00 +sS'value' +p6691 +S'number' +p6692 +ssS'entity_type' +p6693 +(dp6694 +S'editable' +p6695 +I00 +sS'value' +p6696 +S'Department' +p6697 +ssS'editable' +p6698 +(dp6699 +S'editable' +p6700 +I00 +sS'value' +p6701 +I01 +ssS'unique' +p6702 +(dp6703 +S'editable' +p6704 +I00 +sS'value' +p6705 +I00 +ssS'properties' +p6706 +(dp6707 +S'default_value' +p6708 +(dp6709 +S'editable' +p6710 +I00 +sS'value' +p6711 +NssS'summary_default' +p6712 +(dp6713 +S'editable' +p6714 +I00 +sS'value' +p6715 +S'none' +p6716 +sssS'description' +p6717 +(dp6718 +S'editable' +p6719 +I01 +sS'value' +p6720 +g47 +sssS'color' +p6721 +(dp6722 +S'mandatory' +p6723 +(dp6724 +S'editable' +p6725 +I00 +sS'value' +p6726 +I00 +ssS'name' +p6727 +(dp6728 +S'editable' +p6729 +I01 +sS'value' +p6730 +S'Color' +p6731 +ssS'data_type' +p6732 +(dp6733 +S'editable' +p6734 +I00 +sS'value' +p6735 +S'color' +p6736 +ssS'entity_type' +p6737 +(dp6738 +S'editable' +p6739 +I00 +sS'value' +p6740 +S'Department' +p6741 +ssS'editable' +p6742 +(dp6743 +S'editable' +p6744 +I00 +sS'value' +p6745 +I01 +ssS'unique' +p6746 +(dp6747 +S'editable' +p6748 +I00 +sS'value' +p6749 +I00 +ssS'properties' +p6750 +(dp6751 +S'default_value' +p6752 +(dp6753 +S'editable' +p6754 +I00 +sS'value' +p6755 +NssS'summary_default' +p6756 +(dp6757 +S'editable' +p6758 +I01 +sS'value' +p6759 +S'none' +p6760 +sssS'description' +p6761 +(dp6762 +S'editable' +p6763 +I01 +sS'value' +p6764 +g47 +sssS'created_at' +p6765 +(dp6766 +S'mandatory' +p6767 +(dp6768 +S'editable' +p6769 +I00 +sS'value' +p6770 +I00 +ssS'name' +p6771 +(dp6772 +S'editable' +p6773 +I01 +sS'value' +p6774 +S'Date Created' +p6775 +ssS'data_type' +p6776 +(dp6777 +S'editable' +p6778 +I00 +sS'value' +p6779 +S'date_time' +p6780 +ssS'entity_type' +p6781 +(dp6782 +S'editable' +p6783 +I00 +sS'value' +p6784 +S'Department' +p6785 +ssS'editable' +p6786 +(dp6787 +S'editable' +p6788 +I00 +sS'value' +p6789 +I00 +ssS'unique' +p6790 +(dp6791 +S'editable' +p6792 +I00 +sS'value' +p6793 +I00 +ssS'properties' +p6794 +(dp6795 +S'default_value' +p6796 +(dp6797 +S'editable' +p6798 +I00 +sS'value' +p6799 +NssS'summary_default' +p6800 +(dp6801 +S'editable' +p6802 +I01 +sS'value' +p6803 +S'none' +p6804 +sssS'description' +p6805 +(dp6806 +S'editable' +p6807 +I01 +sS'value' +p6808 +g47 +sssS'updated_at' +p6809 +(dp6810 +S'mandatory' +p6811 +(dp6812 +S'editable' +p6813 +I00 +sS'value' +p6814 +I00 +ssS'name' +p6815 +(dp6816 +S'editable' +p6817 +I01 +sS'value' +p6818 +S'Date Updated' +p6819 +ssS'data_type' +p6820 +(dp6821 +S'editable' +p6822 +I00 +sS'value' +p6823 +S'date_time' +p6824 +ssS'entity_type' +p6825 +(dp6826 +S'editable' +p6827 +I00 +sS'value' +p6828 +S'Department' +p6829 +ssS'editable' +p6830 +(dp6831 +S'editable' +p6832 +I00 +sS'value' +p6833 +I00 +ssS'unique' +p6834 +(dp6835 +S'editable' +p6836 +I00 +sS'value' +p6837 +I00 +ssS'properties' +p6838 +(dp6839 +S'default_value' +p6840 +(dp6841 +S'editable' +p6842 +I00 +sS'value' +p6843 +NssS'summary_default' +p6844 +(dp6845 +S'editable' +p6846 +I01 +sS'value' +p6847 +S'none' +p6848 +sssS'description' +p6849 +(dp6850 +S'editable' +p6851 +I01 +sS'value' +p6852 +g47 +sssS'created_by' +p6853 +(dp6854 +S'mandatory' +p6855 +(dp6856 +S'editable' +p6857 +I00 +sS'value' +p6858 +I00 +ssS'name' +p6859 +(dp6860 +S'editable' +p6861 +I01 +sS'value' +p6862 +S'Created by' +p6863 +ssS'data_type' +p6864 +(dp6865 +S'editable' +p6866 +I00 +sS'value' +p6867 +S'entity' +p6868 +ssS'entity_type' +p6869 +(dp6870 +S'editable' +p6871 +I00 +sS'value' +p6872 +S'Department' +p6873 +ssS'editable' +p6874 +(dp6875 +S'editable' +p6876 +I00 +sS'value' +p6877 +I00 +ssS'unique' +p6878 +(dp6879 +S'editable' +p6880 +I00 +sS'value' +p6881 +I00 +ssS'properties' +p6882 +(dp6883 +S'default_value' +p6884 +(dp6885 +S'editable' +p6886 +I00 +sS'value' +p6887 +NssS'summary_default' +p6888 +(dp6889 +S'editable' +p6890 +I01 +sS'value' +p6891 +S'none' +p6892 +ssS'valid_types' +p6893 +(dp6894 +S'editable' +p6895 +I01 +sS'value' +p6896 +(lp6897 +S'HumanUser' +p6898 +aS'ApiUser' +p6899 +asssS'description' +p6900 +(dp6901 +S'editable' +p6902 +I01 +sS'value' +p6903 +g47 +sssS'sg_status_list' +p6904 +(dp6905 +S'mandatory' +p6906 +(dp6907 +S'editable' +p6908 +I00 +sS'value' +p6909 +I00 +ssS'name' +p6910 +(dp6911 +S'editable' +p6912 +I01 +sS'value' +p6913 +S'Status' +p6914 +ssS'data_type' +p6915 +(dp6916 +S'editable' +p6917 +I00 +sS'value' +p6918 +S'status_list' +p6919 +ssS'entity_type' +p6920 +(dp6921 +S'editable' +p6922 +I00 +sS'value' +p6923 +S'Department' +p6924 +ssS'editable' +p6925 +(dp6926 +S'editable' +p6927 +I00 +sS'value' +p6928 +I01 +ssS'unique' +p6929 +(dp6930 +S'editable' +p6931 +I00 +sS'value' +p6932 +I00 +ssS'properties' +p6933 +(dp6934 +S'default_value' +p6935 +(dp6936 +S'editable' +p6937 +I01 +sS'value' +p6938 +S'act' +p6939 +ssS'valid_values' +p6940 +(dp6941 +S'editable' +p6942 +I01 +sS'value' +p6943 +(lp6944 +S'act' +p6945 +aS'dis' +p6946 +assS'summary_default' +p6947 +(dp6948 +S'editable' +p6949 +I01 +sS'value' +p6950 +S'none' +p6951 +sssS'description' +p6952 +(dp6953 +S'editable' +p6954 +I01 +sS'value' +p6955 +g47 +sssS'department_type' +p6956 +(dp6957 +S'mandatory' +p6958 +(dp6959 +S'editable' +p6960 +I00 +sS'value' +p6961 +I00 +ssS'name' +p6962 +(dp6963 +S'editable' +p6964 +I01 +sS'value' +p6965 +S'Department Type' +p6966 +ssS'data_type' +p6967 +(dp6968 +S'editable' +p6969 +I00 +sS'value' +p6970 +S'list' +p6971 +ssS'entity_type' +p6972 +(dp6973 +S'editable' +p6974 +I00 +sS'value' +p6975 +S'Department' +p6976 +ssS'editable' +p6977 +(dp6978 +S'editable' +p6979 +I00 +sS'value' +p6980 +I01 +ssS'unique' +p6981 +(dp6982 +S'editable' +p6983 +I00 +sS'value' +p6984 +I00 +ssS'properties' +p6985 +(dp6986 +S'default_value' +p6987 +(dp6988 +S'editable' +p6989 +I00 +sS'value' +p6990 +NssS'valid_values' +p6991 +(dp6992 +S'editable' +p6993 +I01 +sS'value' +p6994 +(lp6995 +ssS'summary_default' +p6996 +(dp6997 +S'editable' +p6998 +I01 +sS'value' +p6999 +S'none' +p7000 +sssS'description' +p7001 +(dp7002 +S'editable' +p7003 +I01 +sS'value' +p7004 +g47 +sssS'image' +p7005 +(dp7006 +S'mandatory' +p7007 +(dp7008 +S'editable' +p7009 +I00 +sS'value' +p7010 +I00 +ssS'name' +p7011 +(dp7012 +S'editable' +p7013 +I01 +sS'value' +p7014 +S'Thumbnail' +p7015 +ssS'data_type' +p7016 +(dp7017 +S'editable' +p7018 +I00 +sS'value' +p7019 +S'image' +p7020 +ssS'entity_type' +p7021 +(dp7022 +S'editable' +p7023 +I00 +sS'value' +p7024 +S'Department' +p7025 +ssS'editable' +p7026 +(dp7027 +S'editable' +p7028 +I00 +sS'value' +p7029 +I01 +ssS'unique' +p7030 +(dp7031 +S'editable' +p7032 +I00 +sS'value' +p7033 +I00 +ssS'properties' +p7034 +(dp7035 +S'default_value' +p7036 +(dp7037 +S'editable' +p7038 +I00 +sS'value' +p7039 +NssS'summary_default' +p7040 +(dp7041 +S'editable' +p7042 +I01 +sS'value' +p7043 +S'none' +p7044 +sssS'description' +p7045 +(dp7046 +S'editable' +p7047 +I01 +sS'value' +p7048 +g47 +sssS'updated_by' +p7049 +(dp7050 +S'mandatory' +p7051 +(dp7052 +S'editable' +p7053 +I00 +sS'value' +p7054 +I00 +ssS'name' +p7055 +(dp7056 +S'editable' +p7057 +I01 +sS'value' +p7058 +S'Updated by' +p7059 +ssS'data_type' +p7060 +(dp7061 +S'editable' +p7062 +I00 +sS'value' +p7063 +S'entity' +p7064 +ssS'entity_type' +p7065 +(dp7066 +S'editable' +p7067 +I00 +sS'value' +p7068 +S'Department' +p7069 +ssS'editable' +p7070 +(dp7071 +S'editable' +p7072 +I00 +sS'value' +p7073 +I00 +ssS'unique' +p7074 +(dp7075 +S'editable' +p7076 +I00 +sS'value' +p7077 +I00 +ssS'properties' +p7078 +(dp7079 +S'default_value' +p7080 +(dp7081 +S'editable' +p7082 +I00 +sS'value' +p7083 +NssS'summary_default' +p7084 +(dp7085 +S'editable' +p7086 +I01 +sS'value' +p7087 +S'none' +p7088 +ssS'valid_types' +p7089 +(dp7090 +S'editable' +p7091 +I01 +sS'value' +p7092 +(lp7093 +S'HumanUser' +p7094 +aS'ApiUser' +p7095 +asssS'description' +p7096 +(dp7097 +S'editable' +p7098 +I01 +sS'value' +p7099 +g47 +sssS'notes' +p7100 +(dp7101 +S'mandatory' +p7102 +(dp7103 +S'editable' +p7104 +I00 +sS'value' +p7105 +I00 +ssS'name' +p7106 +(dp7107 +S'editable' +p7108 +I01 +sS'value' +p7109 +S'Notes' +p7110 +ssS'data_type' +p7111 +(dp7112 +S'editable' +p7113 +I00 +sS'value' +p7114 +S'multi_entity' +p7115 +ssS'entity_type' +p7116 +(dp7117 +S'editable' +p7118 +I00 +sS'value' +p7119 +S'Department' +p7120 +ssS'editable' +p7121 +(dp7122 +S'editable' +p7123 +I00 +sS'value' +p7124 +I01 +ssS'unique' +p7125 +(dp7126 +S'editable' +p7127 +I00 +sS'value' +p7128 +I00 +ssS'properties' +p7129 +(dp7130 +S'default_value' +p7131 +(dp7132 +S'editable' +p7133 +I00 +sS'value' +p7134 +NssS'summary_default' +p7135 +(dp7136 +S'editable' +p7137 +I01 +sS'value' +p7138 +S'none' +p7139 +ssS'valid_types' +p7140 +(dp7141 +S'editable' +p7142 +I01 +sS'value' +p7143 +(lp7144 +S'Note' +p7145 +asssS'description' +p7146 +(dp7147 +S'editable' +p7148 +I01 +sS'value' +p7149 +g47 +sssS'cached_display_name' +p7150 +(dp7151 +S'mandatory' +p7152 +(dp7153 +S'editable' +p7154 +I00 +sS'value' +p7155 +I00 +ssS'name' +p7156 +(dp7157 +S'editable' +p7158 +I01 +sS'value' +p7159 +S'Cached Display Name' +p7160 +ssS'data_type' +p7161 +(dp7162 +S'editable' +p7163 +I00 +sS'value' +p7164 +S'text' +p7165 +ssS'entity_type' +p7166 +(dp7167 +S'editable' +p7168 +I00 +sS'value' +p7169 +S'Department' +p7170 +ssS'editable' +p7171 +(dp7172 +S'editable' +p7173 +I00 +sS'value' +p7174 +I01 +ssS'unique' +p7175 +(dp7176 +S'editable' +p7177 +I00 +sS'value' +p7178 +I00 +ssS'properties' +p7179 +(dp7180 +S'default_value' +p7181 +(dp7182 +S'editable' +p7183 +I00 +sS'value' +p7184 +NssS'summary_default' +p7185 +(dp7186 +S'editable' +p7187 +I00 +sS'value' +p7188 +S'none' +p7189 +sssS'description' +p7190 +(dp7191 +S'editable' +p7192 +I01 +sS'value' +p7193 +g47 +sssS'tag_list' +p7194 +(dp7195 +S'mandatory' +p7196 +(dp7197 +S'editable' +p7198 +I00 +sS'value' +p7199 +I00 +ssS'name' +p7200 +(dp7201 +S'editable' +p7202 +I01 +sS'value' +p7203 +S'Tags' +p7204 +ssS'data_type' +p7205 +(dp7206 +S'editable' +p7207 +I00 +sS'value' +p7208 +S'tag_list' +p7209 +ssS'entity_type' +p7210 +(dp7211 +S'editable' +p7212 +I00 +sS'value' +p7213 +S'Department' +p7214 +ssS'editable' +p7215 +(dp7216 +S'editable' +p7217 +I00 +sS'value' +p7218 +I01 +ssS'unique' +p7219 +(dp7220 +S'editable' +p7221 +I00 +sS'value' +p7222 +I00 +ssS'properties' +p7223 +(dp7224 +S'default_value' +p7225 +(dp7226 +S'editable' +p7227 +I00 +sS'value' +p7228 +NssS'summary_default' +p7229 +(dp7230 +S'editable' +p7231 +I01 +sS'value' +p7232 +S'none' +p7233 +ssS'valid_types' +p7234 +(dp7235 +S'editable' +p7236 +I01 +sS'value' +p7237 +(lp7238 +S'Tag' +p7239 +asssS'description' +p7240 +(dp7241 +S'editable' +p7242 +I01 +sS'value' +p7243 +g47 +sssS'id' +p7244 +(dp7245 +S'mandatory' +p7246 +(dp7247 +S'editable' +p7248 +I00 +sS'value' +p7249 +I00 +ssS'name' +p7250 +(dp7251 +S'editable' +p7252 +I01 +sS'value' +p7253 +S'Id' +p7254 +ssS'data_type' +p7255 +(dp7256 +S'editable' +p7257 +I00 +sS'value' +p7258 +S'number' +p7259 +ssS'entity_type' +p7260 +(dp7261 +S'editable' +p7262 +I00 +sS'value' +p7263 +S'Department' +p7264 +ssS'editable' +p7265 +(dp7266 +S'editable' +p7267 +I00 +sS'value' +p7268 +I00 +ssS'unique' +p7269 +(dp7270 +S'editable' +p7271 +I00 +sS'value' +p7272 +I00 +ssS'properties' +p7273 +(dp7274 +S'default_value' +p7275 +(dp7276 +S'editable' +p7277 +I00 +sS'value' +p7278 +NssS'summary_default' +p7279 +(dp7280 +S'editable' +p7281 +I01 +sS'value' +p7282 +S'none' +p7283 +sssS'description' +p7284 +(dp7285 +S'editable' +p7286 +I01 +sS'value' +p7287 +g47 +sssS'name' +p7288 +(dp7289 +S'mandatory' +p7290 +(dp7291 +S'editable' +p7292 +I00 +sS'value' +p7293 +I01 +ssS'name' +p7294 +(dp7295 +S'editable' +p7296 +I01 +sS'value' +p7297 +S'Department Name' +p7298 +ssS'data_type' +p7299 +(dp7300 +S'editable' +p7301 +I00 +sS'value' +p7302 +S'text' +p7303 +ssS'entity_type' +p7304 +(dp7305 +S'editable' +p7306 +I00 +sS'value' +p7307 +S'Department' +p7308 +ssS'editable' +p7309 +(dp7310 +S'editable' +p7311 +I00 +sS'value' +p7312 +I01 +ssS'unique' +p7313 +(dp7314 +S'editable' +p7315 +I00 +sS'value' +p7316 +I00 +ssS'properties' +p7317 +(dp7318 +S'default_value' +p7319 +(dp7320 +S'editable' +p7321 +I00 +sS'value' +p7322 +NssS'summary_default' +p7323 +(dp7324 +S'editable' +p7325 +I01 +sS'value' +p7326 +S'none' +p7327 +sssS'description' +p7328 +(dp7329 +S'editable' +p7330 +I01 +sS'value' +p7331 +g47 +ssssS'AssetSceneConnection' +p7332 +(dp7333 +S'id' +p7334 +(dp7335 +S'mandatory' +p7336 +(dp7337 +S'editable' +p7338 +I00 +sS'value' +p7339 +I01 +ssS'name' +p7340 +(dp7341 +S'editable' +p7342 +I01 +sS'value' +p7343 +S'Id' +p7344 +ssS'data_type' +p7345 +(dp7346 +S'editable' +p7347 +I00 +sS'value' +p7348 +S'number' +p7349 +ssS'entity_type' +p7350 +(dp7351 +S'editable' +p7352 +I00 +sS'value' +p7353 +S'AssetSceneConnection' +p7354 +ssS'editable' +p7355 +(dp7356 +S'editable' +p7357 +I00 +sS'value' +p7358 +I00 +ssS'unique' +p7359 +(dp7360 +S'editable' +p7361 +I00 +sS'value' +p7362 +I00 +ssS'properties' +p7363 +(dp7364 +S'default_value' +p7365 +(dp7366 +S'editable' +p7367 +I00 +sS'value' +p7368 +NssS'summary_default' +p7369 +(dp7370 +S'editable' +p7371 +I00 +sS'value' +p7372 +S'none' +p7373 +sssS'description' +p7374 +(dp7375 +S'editable' +p7376 +I01 +sS'value' +p7377 +g47 +sssS'cached_display_name' +p7378 +(dp7379 +S'mandatory' +p7380 +(dp7381 +S'editable' +p7382 +I00 +sS'value' +p7383 +I00 +ssS'name' +p7384 +(dp7385 +S'editable' +p7386 +I01 +sS'value' +p7387 +S'Cached Display Name' +p7388 +ssS'data_type' +p7389 +(dp7390 +S'editable' +p7391 +I00 +sS'value' +p7392 +S'text' +p7393 +ssS'entity_type' +p7394 +(dp7395 +S'editable' +p7396 +I00 +sS'value' +p7397 +S'AssetSceneConnection' +p7398 +ssS'editable' +p7399 +(dp7400 +S'editable' +p7401 +I00 +sS'value' +p7402 +I01 +ssS'unique' +p7403 +(dp7404 +S'editable' +p7405 +I00 +sS'value' +p7406 +I00 +ssS'properties' +p7407 +(dp7408 +S'default_value' +p7409 +(dp7410 +S'editable' +p7411 +I00 +sS'value' +p7412 +NssS'summary_default' +p7413 +(dp7414 +S'editable' +p7415 +I00 +sS'value' +p7416 +S'none' +p7417 +sssS'description' +p7418 +(dp7419 +S'editable' +p7420 +I01 +sS'value' +p7421 +g47 +sssS'asset' +p7422 +(dp7423 +S'mandatory' +p7424 +(dp7425 +S'editable' +p7426 +I00 +sS'value' +p7427 +I00 +ssS'name' +p7428 +(dp7429 +S'editable' +p7430 +I01 +sS'value' +p7431 +S'Asset' +p7432 +ssS'data_type' +p7433 +(dp7434 +S'editable' +p7435 +I00 +sS'value' +p7436 +S'entity' +p7437 +ssS'entity_type' +p7438 +(dp7439 +S'editable' +p7440 +I00 +sS'value' +p7441 +S'AssetSceneConnection' +p7442 +ssS'editable' +p7443 +(dp7444 +S'editable' +p7445 +I00 +sS'value' +p7446 +I00 +ssS'unique' +p7447 +(dp7448 +S'editable' +p7449 +I00 +sS'value' +p7450 +I00 +ssS'properties' +p7451 +(dp7452 +S'default_value' +p7453 +(dp7454 +S'editable' +p7455 +I00 +sS'value' +p7456 +NssS'summary_default' +p7457 +(dp7458 +S'editable' +p7459 +I00 +sS'value' +p7460 +S'none' +p7461 +ssS'valid_types' +p7462 +(dp7463 +S'editable' +p7464 +I00 +sS'value' +p7465 +(lp7466 +S'Asset' +p7467 +asssS'description' +p7468 +(dp7469 +S'editable' +p7470 +I01 +sS'value' +p7471 +g47 +sssS'scene' +p7472 +(dp7473 +S'mandatory' +p7474 +(dp7475 +S'editable' +p7476 +I00 +sS'value' +p7477 +I00 +ssS'name' +p7478 +(dp7479 +S'editable' +p7480 +I01 +sS'value' +p7481 +S'Scene' +p7482 +ssS'data_type' +p7483 +(dp7484 +S'editable' +p7485 +I00 +sS'value' +p7486 +S'entity' +p7487 +ssS'entity_type' +p7488 +(dp7489 +S'editable' +p7490 +I00 +sS'value' +p7491 +S'AssetSceneConnection' +p7492 +ssS'editable' +p7493 +(dp7494 +S'editable' +p7495 +I00 +sS'value' +p7496 +I00 +ssS'unique' +p7497 +(dp7498 +S'editable' +p7499 +I00 +sS'value' +p7500 +I00 +ssS'properties' +p7501 +(dp7502 +S'default_value' +p7503 +(dp7504 +S'editable' +p7505 +I00 +sS'value' +p7506 +NssS'summary_default' +p7507 +(dp7508 +S'editable' +p7509 +I00 +sS'value' +p7510 +S'none' +p7511 +ssS'valid_types' +p7512 +(dp7513 +S'editable' +p7514 +I00 +sS'value' +p7515 +(lp7516 +S'Scene' +p7517 +asssS'description' +p7518 +(dp7519 +S'editable' +p7520 +I01 +sS'value' +p7521 +g47 +ssssS'CameraMocapTakeConnection' +p7522 +(dp7523 +S'mocap_take' +p7524 +(dp7525 +S'mandatory' +p7526 +(dp7527 +S'editable' +p7528 +I00 +sS'value' +p7529 +I00 +ssS'name' +p7530 +(dp7531 +S'editable' +p7532 +I01 +sS'value' +p7533 +S'Mocap Take' +p7534 +ssS'data_type' +p7535 +(dp7536 +S'editable' +p7537 +I00 +sS'value' +p7538 +S'entity' +p7539 +ssS'entity_type' +p7540 +(dp7541 +S'editable' +p7542 +I00 +sS'value' +p7543 +S'CameraMocapTakeConnection' +p7544 +ssS'editable' +p7545 +(dp7546 +S'editable' +p7547 +I00 +sS'value' +p7548 +I00 +ssS'unique' +p7549 +(dp7550 +S'editable' +p7551 +I00 +sS'value' +p7552 +I00 +ssS'properties' +p7553 +(dp7554 +S'default_value' +p7555 +(dp7556 +S'editable' +p7557 +I00 +sS'value' +p7558 +NssS'summary_default' +p7559 +(dp7560 +S'editable' +p7561 +I00 +sS'value' +p7562 +S'none' +p7563 +ssS'valid_types' +p7564 +(dp7565 +S'editable' +p7566 +I00 +sS'value' +p7567 +(lp7568 +S'MocapTake' +p7569 +asssS'description' +p7570 +(dp7571 +S'editable' +p7572 +I01 +sS'value' +p7573 +g47 +sssS'cached_display_name' +p7574 +(dp7575 +S'mandatory' +p7576 +(dp7577 +S'editable' +p7578 +I00 +sS'value' +p7579 +I00 +ssS'name' +p7580 +(dp7581 +S'editable' +p7582 +I01 +sS'value' +p7583 +S'Cached Display Name' +p7584 +ssS'data_type' +p7585 +(dp7586 +S'editable' +p7587 +I00 +sS'value' +p7588 +S'text' +p7589 +ssS'entity_type' +p7590 +(dp7591 +S'editable' +p7592 +I00 +sS'value' +p7593 +S'CameraMocapTakeConnection' +p7594 +ssS'editable' +p7595 +(dp7596 +S'editable' +p7597 +I00 +sS'value' +p7598 +I01 +ssS'unique' +p7599 +(dp7600 +S'editable' +p7601 +I00 +sS'value' +p7602 +I00 +ssS'properties' +p7603 +(dp7604 +S'default_value' +p7605 +(dp7606 +S'editable' +p7607 +I00 +sS'value' +p7608 +NssS'summary_default' +p7609 +(dp7610 +S'editable' +p7611 +I00 +sS'value' +p7612 +S'none' +p7613 +sssS'description' +p7614 +(dp7615 +S'editable' +p7616 +I01 +sS'value' +p7617 +g47 +sssS'camera' +p7618 +(dp7619 +S'mandatory' +p7620 +(dp7621 +S'editable' +p7622 +I00 +sS'value' +p7623 +I00 +ssS'name' +p7624 +(dp7625 +S'editable' +p7626 +I01 +sS'value' +p7627 +S'Camera' +p7628 +ssS'data_type' +p7629 +(dp7630 +S'editable' +p7631 +I00 +sS'value' +p7632 +S'entity' +p7633 +ssS'entity_type' +p7634 +(dp7635 +S'editable' +p7636 +I00 +sS'value' +p7637 +S'CameraMocapTakeConnection' +p7638 +ssS'editable' +p7639 +(dp7640 +S'editable' +p7641 +I00 +sS'value' +p7642 +I00 +ssS'unique' +p7643 +(dp7644 +S'editable' +p7645 +I00 +sS'value' +p7646 +I00 +ssS'properties' +p7647 +(dp7648 +S'default_value' +p7649 +(dp7650 +S'editable' +p7651 +I00 +sS'value' +p7652 +NssS'summary_default' +p7653 +(dp7654 +S'editable' +p7655 +I00 +sS'value' +p7656 +S'none' +p7657 +ssS'valid_types' +p7658 +(dp7659 +S'editable' +p7660 +I00 +sS'value' +p7661 +(lp7662 +S'Camera' +p7663 +asssS'description' +p7664 +(dp7665 +S'editable' +p7666 +I01 +sS'value' +p7667 +g47 +sssS'id' +p7668 +(dp7669 +S'mandatory' +p7670 +(dp7671 +S'editable' +p7672 +I00 +sS'value' +p7673 +I01 +ssS'name' +p7674 +(dp7675 +S'editable' +p7676 +I01 +sS'value' +p7677 +S'Id' +p7678 +ssS'data_type' +p7679 +(dp7680 +S'editable' +p7681 +I00 +sS'value' +p7682 +S'number' +p7683 +ssS'entity_type' +p7684 +(dp7685 +S'editable' +p7686 +I00 +sS'value' +p7687 +S'CameraMocapTakeConnection' +p7688 +ssS'editable' +p7689 +(dp7690 +S'editable' +p7691 +I00 +sS'value' +p7692 +I00 +ssS'unique' +p7693 +(dp7694 +S'editable' +p7695 +I00 +sS'value' +p7696 +I00 +ssS'properties' +p7697 +(dp7698 +S'default_value' +p7699 +(dp7700 +S'editable' +p7701 +I00 +sS'value' +p7702 +NssS'summary_default' +p7703 +(dp7704 +S'editable' +p7705 +I00 +sS'value' +p7706 +S'none' +p7707 +sssS'description' +p7708 +(dp7709 +S'editable' +p7710 +I01 +sS'value' +p7711 +g47 +ssssS'Booking' +p7712 +(dp7713 +S'project' +p7714 +(dp7715 +S'mandatory' +p7716 +(dp7717 +S'editable' +p7718 +I00 +sS'value' +p7719 +I00 +ssS'name' +p7720 +(dp7721 +S'editable' +p7722 +I01 +sS'value' +p7723 +S'Project' +p7724 +ssS'data_type' +p7725 +(dp7726 +S'editable' +p7727 +I00 +sS'value' +p7728 +S'entity' +p7729 +ssS'entity_type' +p7730 +(dp7731 +S'editable' +p7732 +I00 +sS'value' +p7733 +S'Booking' +p7734 +ssS'editable' +p7735 +(dp7736 +S'editable' +p7737 +I00 +sS'value' +p7738 +I01 +ssS'unique' +p7739 +(dp7740 +S'editable' +p7741 +I00 +sS'value' +p7742 +I00 +ssS'properties' +p7743 +(dp7744 +S'default_value' +p7745 +(dp7746 +S'editable' +p7747 +I00 +sS'value' +p7748 +NssS'summary_default' +p7749 +(dp7750 +S'editable' +p7751 +I01 +sS'value' +p7752 +S'none' +p7753 +ssS'valid_types' +p7754 +(dp7755 +S'editable' +p7756 +I01 +sS'value' +p7757 +(lp7758 +S'Project' +p7759 +asssS'description' +p7760 +(dp7761 +S'editable' +p7762 +I01 +sS'value' +p7763 +g47 +sssS'open_notes_count' +p7764 +(dp7765 +S'mandatory' +p7766 +(dp7767 +S'editable' +p7768 +I00 +sS'value' +p7769 +I00 +ssS'name' +p7770 +(dp7771 +S'editable' +p7772 +I01 +sS'value' +p7773 +S'Open Notes Count' +p7774 +ssS'data_type' +p7775 +(dp7776 +S'editable' +p7777 +I00 +sS'value' +p7778 +S'text' +p7779 +ssS'entity_type' +p7780 +(dp7781 +S'editable' +p7782 +I00 +sS'value' +p7783 +S'Booking' +p7784 +ssS'editable' +p7785 +(dp7786 +S'editable' +p7787 +I00 +sS'value' +p7788 +I00 +ssS'unique' +p7789 +(dp7790 +S'editable' +p7791 +I00 +sS'value' +p7792 +I00 +ssS'properties' +p7793 +(dp7794 +S'default_value' +p7795 +(dp7796 +S'editable' +p7797 +I00 +sS'value' +p7798 +NssS'summary_default' +p7799 +(dp7800 +S'editable' +p7801 +I01 +sS'value' +p7802 +S'none' +p7803 +sssS'description' +p7804 +(dp7805 +S'editable' +p7806 +I01 +sS'value' +p7807 +g47 +sssS'open_notes' +p7808 +(dp7809 +S'mandatory' +p7810 +(dp7811 +S'editable' +p7812 +I00 +sS'value' +p7813 +I00 +ssS'name' +p7814 +(dp7815 +S'editable' +p7816 +I01 +sS'value' +p7817 +S'Open Notes' +p7818 +ssS'data_type' +p7819 +(dp7820 +S'editable' +p7821 +I00 +sS'value' +p7822 +S'multi_entity' +p7823 +ssS'entity_type' +p7824 +(dp7825 +S'editable' +p7826 +I00 +sS'value' +p7827 +S'Booking' +p7828 +ssS'editable' +p7829 +(dp7830 +S'editable' +p7831 +I00 +sS'value' +p7832 +I00 +ssS'unique' +p7833 +(dp7834 +S'editable' +p7835 +I00 +sS'value' +p7836 +I00 +ssS'properties' +p7837 +(dp7838 +S'default_value' +p7839 +(dp7840 +S'editable' +p7841 +I00 +sS'value' +p7842 +NssS'summary_default' +p7843 +(dp7844 +S'editable' +p7845 +I01 +sS'value' +p7846 +S'none' +p7847 +ssS'valid_types' +p7848 +(dp7849 +S'editable' +p7850 +I01 +sS'value' +p7851 +(lp7852 +S'Note' +p7853 +asssS'description' +p7854 +(dp7855 +S'editable' +p7856 +I01 +sS'value' +p7857 +g47 +sssS'updated_by' +p7858 +(dp7859 +S'mandatory' +p7860 +(dp7861 +S'editable' +p7862 +I00 +sS'value' +p7863 +I00 +ssS'name' +p7864 +(dp7865 +S'editable' +p7866 +I01 +sS'value' +p7867 +S'Updated by' +p7868 +ssS'data_type' +p7869 +(dp7870 +S'editable' +p7871 +I00 +sS'value' +p7872 +S'entity' +p7873 +ssS'entity_type' +p7874 +(dp7875 +S'editable' +p7876 +I00 +sS'value' +p7877 +S'Booking' +p7878 +ssS'editable' +p7879 +(dp7880 +S'editable' +p7881 +I00 +sS'value' +p7882 +I00 +ssS'unique' +p7883 +(dp7884 +S'editable' +p7885 +I00 +sS'value' +p7886 +I00 +ssS'properties' +p7887 +(dp7888 +S'default_value' +p7889 +(dp7890 +S'editable' +p7891 +I00 +sS'value' +p7892 +NssS'summary_default' +p7893 +(dp7894 +S'editable' +p7895 +I01 +sS'value' +p7896 +S'none' +p7897 +ssS'valid_types' +p7898 +(dp7899 +S'editable' +p7900 +I01 +sS'value' +p7901 +(lp7902 +S'HumanUser' +p7903 +aS'ApiUser' +p7904 +asssS'description' +p7905 +(dp7906 +S'editable' +p7907 +I01 +sS'value' +p7908 +g47 +sssS'end_date' +p7909 +(dp7910 +S'mandatory' +p7911 +(dp7912 +S'editable' +p7913 +I00 +sS'value' +p7914 +I00 +ssS'name' +p7915 +(dp7916 +S'editable' +p7917 +I01 +sS'value' +p7918 +S'End Date' +p7919 +ssS'data_type' +p7920 +(dp7921 +S'editable' +p7922 +I00 +sS'value' +p7923 +S'date' +p7924 +ssS'entity_type' +p7925 +(dp7926 +S'editable' +p7927 +I00 +sS'value' +p7928 +S'Booking' +p7929 +ssS'editable' +p7930 +(dp7931 +S'editable' +p7932 +I00 +sS'value' +p7933 +I01 +ssS'unique' +p7934 +(dp7935 +S'editable' +p7936 +I00 +sS'value' +p7937 +I00 +ssS'properties' +p7938 +(dp7939 +S'default_value' +p7940 +(dp7941 +S'editable' +p7942 +I00 +sS'value' +p7943 +NssS'summary_default' +p7944 +(dp7945 +S'editable' +p7946 +I01 +sS'value' +p7947 +S'none' +p7948 +sssS'description' +p7949 +(dp7950 +S'editable' +p7951 +I01 +sS'value' +p7952 +g47 +sssS'created_at' +p7953 +(dp7954 +S'mandatory' +p7955 +(dp7956 +S'editable' +p7957 +I00 +sS'value' +p7958 +I00 +ssS'name' +p7959 +(dp7960 +S'editable' +p7961 +I01 +sS'value' +p7962 +S'Date Created' +p7963 +ssS'data_type' +p7964 +(dp7965 +S'editable' +p7966 +I00 +sS'value' +p7967 +S'date_time' +p7968 +ssS'entity_type' +p7969 +(dp7970 +S'editable' +p7971 +I00 +sS'value' +p7972 +S'Booking' +p7973 +ssS'editable' +p7974 +(dp7975 +S'editable' +p7976 +I00 +sS'value' +p7977 +I00 +ssS'unique' +p7978 +(dp7979 +S'editable' +p7980 +I00 +sS'value' +p7981 +I00 +ssS'properties' +p7982 +(dp7983 +S'default_value' +p7984 +(dp7985 +S'editable' +p7986 +I00 +sS'value' +p7987 +NssS'summary_default' +p7988 +(dp7989 +S'editable' +p7990 +I01 +sS'value' +p7991 +S'none' +p7992 +sssS'description' +p7993 +(dp7994 +S'editable' +p7995 +I01 +sS'value' +p7996 +g47 +sssS'notes' +p7997 +(dp7998 +S'mandatory' +p7999 +(dp8000 +S'editable' +p8001 +I00 +sS'value' +p8002 +I00 +ssS'name' +p8003 +(dp8004 +S'editable' +p8005 +I01 +sS'value' +p8006 +S'Notes' +p8007 +ssS'data_type' +p8008 +(dp8009 +S'editable' +p8010 +I00 +sS'value' +p8011 +S'multi_entity' +p8012 +ssS'entity_type' +p8013 +(dp8014 +S'editable' +p8015 +I00 +sS'value' +p8016 +S'Booking' +p8017 +ssS'editable' +p8018 +(dp8019 +S'editable' +p8020 +I00 +sS'value' +p8021 +I01 +ssS'unique' +p8022 +(dp8023 +S'editable' +p8024 +I00 +sS'value' +p8025 +I00 +ssS'properties' +p8026 +(dp8027 +S'default_value' +p8028 +(dp8029 +S'editable' +p8030 +I00 +sS'value' +p8031 +NssS'summary_default' +p8032 +(dp8033 +S'editable' +p8034 +I01 +sS'value' +p8035 +S'none' +p8036 +ssS'valid_types' +p8037 +(dp8038 +S'editable' +p8039 +I01 +sS'value' +p8040 +(lp8041 +S'Note' +p8042 +asssS'description' +p8043 +(dp8044 +S'editable' +p8045 +I01 +sS'value' +p8046 +g47 +sssS'vacation' +p8047 +(dp8048 +S'mandatory' +p8049 +(dp8050 +S'editable' +p8051 +I00 +sS'value' +p8052 +I00 +ssS'name' +p8053 +(dp8054 +S'editable' +p8055 +I01 +sS'value' +p8056 +S'Vacation' +p8057 +ssS'data_type' +p8058 +(dp8059 +S'editable' +p8060 +I00 +sS'value' +p8061 +S'checkbox' +p8062 +ssS'entity_type' +p8063 +(dp8064 +S'editable' +p8065 +I00 +sS'value' +p8066 +S'Booking' +p8067 +ssS'editable' +p8068 +(dp8069 +S'editable' +p8070 +I00 +sS'value' +p8071 +I01 +ssS'unique' +p8072 +(dp8073 +S'editable' +p8074 +I00 +sS'value' +p8075 +I00 +ssS'properties' +p8076 +(dp8077 +S'default_value' +p8078 +(dp8079 +S'editable' +p8080 +I00 +sS'value' +p8081 +NssS'summary_default' +p8082 +(dp8083 +S'editable' +p8084 +I01 +sS'value' +p8085 +S'none' +p8086 +sssS'description' +p8087 +(dp8088 +S'editable' +p8089 +I01 +sS'value' +p8090 +g47 +sssS'created_by' +p8091 +(dp8092 +S'mandatory' +p8093 +(dp8094 +S'editable' +p8095 +I00 +sS'value' +p8096 +I00 +ssS'name' +p8097 +(dp8098 +S'editable' +p8099 +I01 +sS'value' +p8100 +S'Created by' +p8101 +ssS'data_type' +p8102 +(dp8103 +S'editable' +p8104 +I00 +sS'value' +p8105 +S'entity' +p8106 +ssS'entity_type' +p8107 +(dp8108 +S'editable' +p8109 +I00 +sS'value' +p8110 +S'Booking' +p8111 +ssS'editable' +p8112 +(dp8113 +S'editable' +p8114 +I00 +sS'value' +p8115 +I00 +ssS'unique' +p8116 +(dp8117 +S'editable' +p8118 +I00 +sS'value' +p8119 +I00 +ssS'properties' +p8120 +(dp8121 +S'default_value' +p8122 +(dp8123 +S'editable' +p8124 +I00 +sS'value' +p8125 +NssS'summary_default' +p8126 +(dp8127 +S'editable' +p8128 +I01 +sS'value' +p8129 +S'none' +p8130 +ssS'valid_types' +p8131 +(dp8132 +S'editable' +p8133 +I01 +sS'value' +p8134 +(lp8135 +S'HumanUser' +p8136 +aS'ApiUser' +p8137 +asssS'description' +p8138 +(dp8139 +S'editable' +p8140 +I01 +sS'value' +p8141 +g47 +sssS'updated_at' +p8142 +(dp8143 +S'mandatory' +p8144 +(dp8145 +S'editable' +p8146 +I00 +sS'value' +p8147 +I00 +ssS'name' +p8148 +(dp8149 +S'editable' +p8150 +I01 +sS'value' +p8151 +S'Date Updated' +p8152 +ssS'data_type' +p8153 +(dp8154 +S'editable' +p8155 +I00 +sS'value' +p8156 +S'date_time' +p8157 +ssS'entity_type' +p8158 +(dp8159 +S'editable' +p8160 +I00 +sS'value' +p8161 +S'Booking' +p8162 +ssS'editable' +p8163 +(dp8164 +S'editable' +p8165 +I00 +sS'value' +p8166 +I00 +ssS'unique' +p8167 +(dp8168 +S'editable' +p8169 +I00 +sS'value' +p8170 +I00 +ssS'properties' +p8171 +(dp8172 +S'default_value' +p8173 +(dp8174 +S'editable' +p8175 +I00 +sS'value' +p8176 +NssS'summary_default' +p8177 +(dp8178 +S'editable' +p8179 +I01 +sS'value' +p8180 +S'none' +p8181 +sssS'description' +p8182 +(dp8183 +S'editable' +p8184 +I01 +sS'value' +p8185 +g47 +sssS'note' +p8186 +(dp8187 +S'mandatory' +p8188 +(dp8189 +S'editable' +p8190 +I00 +sS'value' +p8191 +I00 +ssS'name' +p8192 +(dp8193 +S'editable' +p8194 +I01 +sS'value' +p8195 +S'Note' +p8196 +ssS'data_type' +p8197 +(dp8198 +S'editable' +p8199 +I00 +sS'value' +p8200 +S'text' +p8201 +ssS'entity_type' +p8202 +(dp8203 +S'editable' +p8204 +I00 +sS'value' +p8205 +S'Booking' +p8206 +ssS'editable' +p8207 +(dp8208 +S'editable' +p8209 +I00 +sS'value' +p8210 +I01 +ssS'unique' +p8211 +(dp8212 +S'editable' +p8213 +I00 +sS'value' +p8214 +I00 +ssS'properties' +p8215 +(dp8216 +S'default_value' +p8217 +(dp8218 +S'editable' +p8219 +I00 +sS'value' +p8220 +NssS'summary_default' +p8221 +(dp8222 +S'editable' +p8223 +I01 +sS'value' +p8224 +S'none' +p8225 +sssS'description' +p8226 +(dp8227 +S'editable' +p8228 +I01 +sS'value' +p8229 +g47 +sssS'user' +p8230 +(dp8231 +S'mandatory' +p8232 +(dp8233 +S'editable' +p8234 +I00 +sS'value' +p8235 +I00 +ssS'name' +p8236 +(dp8237 +S'editable' +p8238 +I01 +sS'value' +p8239 +S'Assigned To' +p8240 +ssS'data_type' +p8241 +(dp8242 +S'editable' +p8243 +I00 +sS'value' +p8244 +S'entity' +p8245 +ssS'entity_type' +p8246 +(dp8247 +S'editable' +p8248 +I00 +sS'value' +p8249 +S'Booking' +p8250 +ssS'editable' +p8251 +(dp8252 +S'editable' +p8253 +I00 +sS'value' +p8254 +I01 +ssS'unique' +p8255 +(dp8256 +S'editable' +p8257 +I00 +sS'value' +p8258 +I00 +ssS'properties' +p8259 +(dp8260 +S'default_value' +p8261 +(dp8262 +S'editable' +p8263 +I00 +sS'value' +p8264 +NssS'summary_default' +p8265 +(dp8266 +S'editable' +p8267 +I01 +sS'value' +p8268 +S'none' +p8269 +ssS'valid_types' +p8270 +(dp8271 +S'editable' +p8272 +I01 +sS'value' +p8273 +(lp8274 +S'HumanUser' +p8275 +asssS'description' +p8276 +(dp8277 +S'editable' +p8278 +I01 +sS'value' +p8279 +g47 +sssS'id' +p8280 +(dp8281 +S'mandatory' +p8282 +(dp8283 +S'editable' +p8284 +I00 +sS'value' +p8285 +I01 +ssS'name' +p8286 +(dp8287 +S'editable' +p8288 +I01 +sS'value' +p8289 +S'Id' +p8290 +ssS'data_type' +p8291 +(dp8292 +S'editable' +p8293 +I00 +sS'value' +p8294 +S'number' +p8295 +ssS'entity_type' +p8296 +(dp8297 +S'editable' +p8298 +I00 +sS'value' +p8299 +S'Booking' +p8300 +ssS'editable' +p8301 +(dp8302 +S'editable' +p8303 +I00 +sS'value' +p8304 +I00 +ssS'unique' +p8305 +(dp8306 +S'editable' +p8307 +I00 +sS'value' +p8308 +I00 +ssS'properties' +p8309 +(dp8310 +S'default_value' +p8311 +(dp8312 +S'editable' +p8313 +I00 +sS'value' +p8314 +NssS'summary_default' +p8315 +(dp8316 +S'editable' +p8317 +I01 +sS'value' +p8318 +S'none' +p8319 +sssS'description' +p8320 +(dp8321 +S'editable' +p8322 +I01 +sS'value' +p8323 +g47 +sssS'cached_display_name' +p8324 +(dp8325 +S'mandatory' +p8326 +(dp8327 +S'editable' +p8328 +I00 +sS'value' +p8329 +I00 +ssS'name' +p8330 +(dp8331 +S'editable' +p8332 +I01 +sS'value' +p8333 +S'Cached Display Name' +p8334 +ssS'data_type' +p8335 +(dp8336 +S'editable' +p8337 +I00 +sS'value' +p8338 +S'text' +p8339 +ssS'entity_type' +p8340 +(dp8341 +S'editable' +p8342 +I00 +sS'value' +p8343 +S'Booking' +p8344 +ssS'editable' +p8345 +(dp8346 +S'editable' +p8347 +I00 +sS'value' +p8348 +I01 +ssS'unique' +p8349 +(dp8350 +S'editable' +p8351 +I00 +sS'value' +p8352 +I00 +ssS'properties' +p8353 +(dp8354 +S'default_value' +p8355 +(dp8356 +S'editable' +p8357 +I00 +sS'value' +p8358 +NssS'summary_default' +p8359 +(dp8360 +S'editable' +p8361 +I00 +sS'value' +p8362 +S'none' +p8363 +sssS'description' +p8364 +(dp8365 +S'editable' +p8366 +I01 +sS'value' +p8367 +g47 +sssS'start_date' +p8368 +(dp8369 +S'mandatory' +p8370 +(dp8371 +S'editable' +p8372 +I00 +sS'value' +p8373 +I00 +ssS'name' +p8374 +(dp8375 +S'editable' +p8376 +I01 +sS'value' +p8377 +S'Start Date' +p8378 +ssS'data_type' +p8379 +(dp8380 +S'editable' +p8381 +I00 +sS'value' +p8382 +S'date' +p8383 +ssS'entity_type' +p8384 +(dp8385 +S'editable' +p8386 +I00 +sS'value' +p8387 +S'Booking' +p8388 +ssS'editable' +p8389 +(dp8390 +S'editable' +p8391 +I00 +sS'value' +p8392 +I01 +ssS'unique' +p8393 +(dp8394 +S'editable' +p8395 +I00 +sS'value' +p8396 +I00 +ssS'properties' +p8397 +(dp8398 +S'default_value' +p8399 +(dp8400 +S'editable' +p8401 +I00 +sS'value' +p8402 +NssS'summary_default' +p8403 +(dp8404 +S'editable' +p8405 +I01 +sS'value' +p8406 +S'none' +p8407 +sssS'description' +p8408 +(dp8409 +S'editable' +p8410 +I01 +sS'value' +p8411 +g47 +ssssS'CutVersionConnection' +p8412 +(dp8413 +S'sg_cut_in' +p8414 +(dp8415 +S'mandatory' +p8416 +(dp8417 +S'editable' +p8418 +I00 +sS'value' +p8419 +I00 +ssS'name' +p8420 +(dp8421 +S'editable' +p8422 +I01 +sS'value' +p8423 +S'Cut In' +p8424 +ssS'data_type' +p8425 +(dp8426 +S'editable' +p8427 +I00 +sS'value' +p8428 +S'number' +p8429 +ssS'entity_type' +p8430 +(dp8431 +S'editable' +p8432 +I00 +sS'value' +p8433 +S'CutVersionConnection' +p8434 +ssS'editable' +p8435 +(dp8436 +S'editable' +p8437 +I00 +sS'value' +p8438 +I01 +ssS'unique' +p8439 +(dp8440 +S'editable' +p8441 +I00 +sS'value' +p8442 +I00 +ssS'properties' +p8443 +(dp8444 +S'default_value' +p8445 +(dp8446 +S'editable' +p8447 +I00 +sS'value' +p8448 +NssS'summary_default' +p8449 +(dp8450 +S'editable' +p8451 +I01 +sS'value' +p8452 +S'none' +p8453 +sssS'description' +p8454 +(dp8455 +S'editable' +p8456 +I01 +sS'value' +p8457 +g47 +sssS'cut' +p8458 +(dp8459 +S'mandatory' +p8460 +(dp8461 +S'editable' +p8462 +I00 +sS'value' +p8463 +I00 +ssS'name' +p8464 +(dp8465 +S'editable' +p8466 +I01 +sS'value' +p8467 +S'Cut' +p8468 +ssS'data_type' +p8469 +(dp8470 +S'editable' +p8471 +I00 +sS'value' +p8472 +S'entity' +p8473 +ssS'entity_type' +p8474 +(dp8475 +S'editable' +p8476 +I00 +sS'value' +p8477 +S'CutVersionConnection' +p8478 +ssS'editable' +p8479 +(dp8480 +S'editable' +p8481 +I00 +sS'value' +p8482 +I00 +ssS'unique' +p8483 +(dp8484 +S'editable' +p8485 +I00 +sS'value' +p8486 +I00 +ssS'properties' +p8487 +(dp8488 +S'default_value' +p8489 +(dp8490 +S'editable' +p8491 +I00 +sS'value' +p8492 +NssS'summary_default' +p8493 +(dp8494 +S'editable' +p8495 +I00 +sS'value' +p8496 +S'none' +p8497 +ssS'valid_types' +p8498 +(dp8499 +S'editable' +p8500 +I00 +sS'value' +p8501 +(lp8502 +S'Cut' +p8503 +asssS'description' +p8504 +(dp8505 +S'editable' +p8506 +I01 +sS'value' +p8507 +g47 +sssS'sg_cut_out' +p8508 +(dp8509 +S'mandatory' +p8510 +(dp8511 +S'editable' +p8512 +I00 +sS'value' +p8513 +I00 +ssS'name' +p8514 +(dp8515 +S'editable' +p8516 +I01 +sS'value' +p8517 +S'Cut Out' +p8518 +ssS'data_type' +p8519 +(dp8520 +S'editable' +p8521 +I00 +sS'value' +p8522 +S'number' +p8523 +ssS'entity_type' +p8524 +(dp8525 +S'editable' +p8526 +I00 +sS'value' +p8527 +S'CutVersionConnection' +p8528 +ssS'editable' +p8529 +(dp8530 +S'editable' +p8531 +I00 +sS'value' +p8532 +I01 +ssS'unique' +p8533 +(dp8534 +S'editable' +p8535 +I00 +sS'value' +p8536 +I00 +ssS'properties' +p8537 +(dp8538 +S'default_value' +p8539 +(dp8540 +S'editable' +p8541 +I00 +sS'value' +p8542 +NssS'summary_default' +p8543 +(dp8544 +S'editable' +p8545 +I01 +sS'value' +p8546 +S'none' +p8547 +sssS'description' +p8548 +(dp8549 +S'editable' +p8550 +I01 +sS'value' +p8551 +g47 +sssS'sg_cut_order' +p8552 +(dp8553 +S'mandatory' +p8554 +(dp8555 +S'editable' +p8556 +I00 +sS'value' +p8557 +I00 +ssS'name' +p8558 +(dp8559 +S'editable' +p8560 +I01 +sS'value' +p8561 +S'Cut Order' +p8562 +ssS'data_type' +p8563 +(dp8564 +S'editable' +p8565 +I00 +sS'value' +p8566 +S'number' +p8567 +ssS'entity_type' +p8568 +(dp8569 +S'editable' +p8570 +I00 +sS'value' +p8571 +S'CutVersionConnection' +p8572 +ssS'editable' +p8573 +(dp8574 +S'editable' +p8575 +I00 +sS'value' +p8576 +I01 +ssS'unique' +p8577 +(dp8578 +S'editable' +p8579 +I00 +sS'value' +p8580 +I00 +ssS'properties' +p8581 +(dp8582 +S'default_value' +p8583 +(dp8584 +S'editable' +p8585 +I00 +sS'value' +p8586 +NssS'summary_default' +p8587 +(dp8588 +S'editable' +p8589 +I01 +sS'value' +p8590 +S'none' +p8591 +sssS'description' +p8592 +(dp8593 +S'editable' +p8594 +I01 +sS'value' +p8595 +g47 +sssS'version' +p8596 +(dp8597 +S'mandatory' +p8598 +(dp8599 +S'editable' +p8600 +I00 +sS'value' +p8601 +I00 +ssS'name' +p8602 +(dp8603 +S'editable' +p8604 +I01 +sS'value' +p8605 +S'Version' +p8606 +ssS'data_type' +p8607 +(dp8608 +S'editable' +p8609 +I00 +sS'value' +p8610 +S'entity' +p8611 +ssS'entity_type' +p8612 +(dp8613 +S'editable' +p8614 +I00 +sS'value' +p8615 +S'CutVersionConnection' +p8616 +ssS'editable' +p8617 +(dp8618 +S'editable' +p8619 +I00 +sS'value' +p8620 +I00 +ssS'unique' +p8621 +(dp8622 +S'editable' +p8623 +I00 +sS'value' +p8624 +I00 +ssS'properties' +p8625 +(dp8626 +S'default_value' +p8627 +(dp8628 +S'editable' +p8629 +I00 +sS'value' +p8630 +NssS'summary_default' +p8631 +(dp8632 +S'editable' +p8633 +I00 +sS'value' +p8634 +S'none' +p8635 +ssS'valid_types' +p8636 +(dp8637 +S'editable' +p8638 +I00 +sS'value' +p8639 +(lp8640 +S'Version' +p8641 +asssS'description' +p8642 +(dp8643 +S'editable' +p8644 +I01 +sS'value' +p8645 +g47 +sssS'sg_cut_duration' +p8646 +(dp8647 +S'mandatory' +p8648 +(dp8649 +S'editable' +p8650 +I00 +sS'value' +p8651 +I00 +ssS'name' +p8652 +(dp8653 +S'editable' +p8654 +I01 +sS'value' +p8655 +S'Cut Duration' +p8656 +ssS'data_type' +p8657 +(dp8658 +S'editable' +p8659 +I00 +sS'value' +p8660 +S'number' +p8661 +ssS'entity_type' +p8662 +(dp8663 +S'editable' +p8664 +I00 +sS'value' +p8665 +S'CutVersionConnection' +p8666 +ssS'editable' +p8667 +(dp8668 +S'editable' +p8669 +I00 +sS'value' +p8670 +I01 +ssS'unique' +p8671 +(dp8672 +S'editable' +p8673 +I00 +sS'value' +p8674 +I00 +ssS'properties' +p8675 +(dp8676 +S'default_value' +p8677 +(dp8678 +S'editable' +p8679 +I00 +sS'value' +p8680 +NssS'summary_default' +p8681 +(dp8682 +S'editable' +p8683 +I01 +sS'value' +p8684 +S'none' +p8685 +sssS'description' +p8686 +(dp8687 +S'editable' +p8688 +I01 +sS'value' +p8689 +g47 +sssS'cached_display_name' +p8690 +(dp8691 +S'mandatory' +p8692 +(dp8693 +S'editable' +p8694 +I00 +sS'value' +p8695 +I00 +ssS'name' +p8696 +(dp8697 +S'editable' +p8698 +I01 +sS'value' +p8699 +S'Cached Display Name' +p8700 +ssS'data_type' +p8701 +(dp8702 +S'editable' +p8703 +I00 +sS'value' +p8704 +S'text' +p8705 +ssS'entity_type' +p8706 +(dp8707 +S'editable' +p8708 +I00 +sS'value' +p8709 +S'CutVersionConnection' +p8710 +ssS'editable' +p8711 +(dp8712 +S'editable' +p8713 +I00 +sS'value' +p8714 +I01 +ssS'unique' +p8715 +(dp8716 +S'editable' +p8717 +I00 +sS'value' +p8718 +I00 +ssS'properties' +p8719 +(dp8720 +S'default_value' +p8721 +(dp8722 +S'editable' +p8723 +I00 +sS'value' +p8724 +NssS'summary_default' +p8725 +(dp8726 +S'editable' +p8727 +I00 +sS'value' +p8728 +S'none' +p8729 +sssS'description' +p8730 +(dp8731 +S'editable' +p8732 +I01 +sS'value' +p8733 +g47 +sssS'id' +p8734 +(dp8735 +S'mandatory' +p8736 +(dp8737 +S'editable' +p8738 +I00 +sS'value' +p8739 +I01 +ssS'name' +p8740 +(dp8741 +S'editable' +p8742 +I01 +sS'value' +p8743 +S'Id' +p8744 +ssS'data_type' +p8745 +(dp8746 +S'editable' +p8747 +I00 +sS'value' +p8748 +S'number' +p8749 +ssS'entity_type' +p8750 +(dp8751 +S'editable' +p8752 +I00 +sS'value' +p8753 +S'CutVersionConnection' +p8754 +ssS'editable' +p8755 +(dp8756 +S'editable' +p8757 +I00 +sS'value' +p8758 +I00 +ssS'unique' +p8759 +(dp8760 +S'editable' +p8761 +I00 +sS'value' +p8762 +I00 +ssS'properties' +p8763 +(dp8764 +S'default_value' +p8765 +(dp8766 +S'editable' +p8767 +I00 +sS'value' +p8768 +NssS'summary_default' +p8769 +(dp8770 +S'editable' +p8771 +I00 +sS'value' +p8772 +S'none' +p8773 +sssS'description' +p8774 +(dp8775 +S'editable' +p8776 +I01 +sS'value' +p8777 +g47 +sssS'sg_cut_comments' +p8778 +(dp8779 +S'mandatory' +p8780 +(dp8781 +S'editable' +p8782 +I00 +sS'value' +p8783 +I00 +ssS'name' +p8784 +(dp8785 +S'editable' +p8786 +I01 +sS'value' +p8787 +S'Cut Comments' +p8788 +ssS'data_type' +p8789 +(dp8790 +S'editable' +p8791 +I00 +sS'value' +p8792 +S'text' +p8793 +ssS'entity_type' +p8794 +(dp8795 +S'editable' +p8796 +I00 +sS'value' +p8797 +S'CutVersionConnection' +p8798 +ssS'editable' +p8799 +(dp8800 +S'editable' +p8801 +I00 +sS'value' +p8802 +I01 +ssS'unique' +p8803 +(dp8804 +S'editable' +p8805 +I00 +sS'value' +p8806 +I00 +ssS'properties' +p8807 +(dp8808 +S'default_value' +p8809 +(dp8810 +S'editable' +p8811 +I00 +sS'value' +p8812 +NssS'summary_default' +p8813 +(dp8814 +S'editable' +p8815 +I01 +sS'value' +p8816 +S'none' +p8817 +sssS'description' +p8818 +(dp8819 +S'editable' +p8820 +I01 +sS'value' +p8821 +g47 +ssssS'TimeLog' +p8822 +(dp8823 +S'description' +p8824 +(dp8825 +S'mandatory' +p8826 +(dp8827 +S'editable' +p8828 +I00 +sS'value' +p8829 +I00 +ssS'name' +p8830 +(dp8831 +S'editable' +p8832 +I01 +sS'value' +p8833 +S'Description' +p8834 +ssS'data_type' +p8835 +(dp8836 +S'editable' +p8837 +I00 +sS'value' +p8838 +S'text' +p8839 +ssS'entity_type' +p8840 +(dp8841 +S'editable' +p8842 +I00 +sS'value' +p8843 +S'TimeLog' +p8844 +ssS'editable' +p8845 +(dp8846 +S'editable' +p8847 +I00 +sS'value' +p8848 +I01 +ssS'unique' +p8849 +(dp8850 +S'editable' +p8851 +I00 +sS'value' +p8852 +I00 +ssS'properties' +p8853 +(dp8854 +S'default_value' +p8855 +(dp8856 +S'editable' +p8857 +I00 +sS'value' +p8858 +NssS'summary_default' +p8859 +(dp8860 +S'editable' +p8861 +I01 +sS'value' +p8862 +S'none' +p8863 +sssS'description' +p8864 +(dp8865 +S'editable' +p8866 +I01 +sS'value' +p8867 +g47 +sssS'created_at' +p8868 +(dp8869 +S'mandatory' +p8870 +(dp8871 +S'editable' +p8872 +I00 +sS'value' +p8873 +I00 +ssS'name' +p8874 +(dp8875 +S'editable' +p8876 +I01 +sS'value' +p8877 +S'Date Created' +p8878 +ssS'data_type' +p8879 +(dp8880 +S'editable' +p8881 +I00 +sS'value' +p8882 +S'date_time' +p8883 +ssS'entity_type' +p8884 +(dp8885 +S'editable' +p8886 +I00 +sS'value' +p8887 +S'TimeLog' +p8888 +ssS'editable' +p8889 +(dp8890 +S'editable' +p8891 +I00 +sS'value' +p8892 +I00 +ssS'unique' +p8893 +(dp8894 +S'editable' +p8895 +I00 +sS'value' +p8896 +I00 +ssS'properties' +p8897 +(dp8898 +S'default_value' +p8899 +(dp8900 +S'editable' +p8901 +I00 +sS'value' +p8902 +NssS'summary_default' +p8903 +(dp8904 +S'editable' +p8905 +I01 +sS'value' +p8906 +S'none' +p8907 +sssS'description' +p8908 +(dp8909 +S'editable' +p8910 +I01 +sS'value' +p8911 +g47 +sssS'updated_at' +p8912 +(dp8913 +S'mandatory' +p8914 +(dp8915 +S'editable' +p8916 +I00 +sS'value' +p8917 +I00 +ssS'name' +p8918 +(dp8919 +S'editable' +p8920 +I01 +sS'value' +p8921 +S'Date Updated' +p8922 +ssS'data_type' +p8923 +(dp8924 +S'editable' +p8925 +I00 +sS'value' +p8926 +S'date_time' +p8927 +ssS'entity_type' +p8928 +(dp8929 +S'editable' +p8930 +I00 +sS'value' +p8931 +S'TimeLog' +p8932 +ssS'editable' +p8933 +(dp8934 +S'editable' +p8935 +I00 +sS'value' +p8936 +I00 +ssS'unique' +p8937 +(dp8938 +S'editable' +p8939 +I00 +sS'value' +p8940 +I00 +ssS'properties' +p8941 +(dp8942 +S'default_value' +p8943 +(dp8944 +S'editable' +p8945 +I00 +sS'value' +p8946 +NssS'summary_default' +p8947 +(dp8948 +S'editable' +p8949 +I01 +sS'value' +p8950 +S'none' +p8951 +sssS'description' +p8952 +(dp8953 +S'editable' +p8954 +I01 +sS'value' +p8955 +g47 +sssS'created_by' +p8956 +(dp8957 +S'mandatory' +p8958 +(dp8959 +S'editable' +p8960 +I00 +sS'value' +p8961 +I00 +ssS'name' +p8962 +(dp8963 +S'editable' +p8964 +I01 +sS'value' +p8965 +S'Created by' +p8966 +ssS'data_type' +p8967 +(dp8968 +S'editable' +p8969 +I00 +sS'value' +p8970 +S'entity' +p8971 +ssS'entity_type' +p8972 +(dp8973 +S'editable' +p8974 +I00 +sS'value' +p8975 +S'TimeLog' +p8976 +ssS'editable' +p8977 +(dp8978 +S'editable' +p8979 +I00 +sS'value' +p8980 +I00 +ssS'unique' +p8981 +(dp8982 +S'editable' +p8983 +I00 +sS'value' +p8984 +I00 +ssS'properties' +p8985 +(dp8986 +S'default_value' +p8987 +(dp8988 +S'editable' +p8989 +I00 +sS'value' +p8990 +NssS'summary_default' +p8991 +(dp8992 +S'editable' +p8993 +I01 +sS'value' +p8994 +S'none' +p8995 +ssS'valid_types' +p8996 +(dp8997 +S'editable' +p8998 +I01 +sS'value' +p8999 +(lp9000 +S'HumanUser' +p9001 +aS'ApiUser' +p9002 +asssS'description' +p9003 +(dp9004 +S'editable' +p9005 +I01 +sS'value' +p9006 +g47 +sssS'entity' +p9007 +(dp9008 +S'mandatory' +p9009 +(dp9010 +S'editable' +p9011 +I00 +sS'value' +p9012 +I00 +ssS'name' +p9013 +(dp9014 +S'editable' +p9015 +I01 +sS'value' +p9016 +S'Link' +p9017 +ssS'data_type' +p9018 +(dp9019 +S'editable' +p9020 +I00 +sS'value' +p9021 +S'entity' +p9022 +ssS'entity_type' +p9023 +(dp9024 +S'editable' +p9025 +I00 +sS'value' +p9026 +S'TimeLog' +p9027 +ssS'editable' +p9028 +(dp9029 +S'editable' +p9030 +I00 +sS'value' +p9031 +I01 +ssS'unique' +p9032 +(dp9033 +S'editable' +p9034 +I00 +sS'value' +p9035 +I00 +ssS'properties' +p9036 +(dp9037 +S'default_value' +p9038 +(dp9039 +S'editable' +p9040 +I00 +sS'value' +p9041 +NssS'summary_default' +p9042 +(dp9043 +S'editable' +p9044 +I01 +sS'value' +p9045 +S'none' +p9046 +ssS'valid_types' +p9047 +(dp9048 +S'editable' +p9049 +I01 +sS'value' +p9050 +(lp9051 +S'Task' +p9052 +aS'Ticket' +p9053 +asssS'description' +p9054 +(dp9055 +S'editable' +p9056 +I01 +sS'value' +p9057 +g47 +sssS'project' +p9058 +(dp9059 +S'mandatory' +p9060 +(dp9061 +S'editable' +p9062 +I00 +sS'value' +p9063 +I00 +ssS'name' +p9064 +(dp9065 +S'editable' +p9066 +I01 +sS'value' +p9067 +S'Project' +p9068 +ssS'data_type' +p9069 +(dp9070 +S'editable' +p9071 +I00 +sS'value' +p9072 +S'entity' +p9073 +ssS'entity_type' +p9074 +(dp9075 +S'editable' +p9076 +I00 +sS'value' +p9077 +S'TimeLog' +p9078 +ssS'editable' +p9079 +(dp9080 +S'editable' +p9081 +I00 +sS'value' +p9082 +I01 +ssS'unique' +p9083 +(dp9084 +S'editable' +p9085 +I00 +sS'value' +p9086 +I00 +ssS'properties' +p9087 +(dp9088 +S'default_value' +p9089 +(dp9090 +S'editable' +p9091 +I00 +sS'value' +p9092 +NssS'summary_default' +p9093 +(dp9094 +S'editable' +p9095 +I01 +sS'value' +p9096 +S'none' +p9097 +ssS'valid_types' +p9098 +(dp9099 +S'editable' +p9100 +I01 +sS'value' +p9101 +(lp9102 +S'Project' +p9103 +asssS'description' +p9104 +(dp9105 +S'editable' +p9106 +I01 +sS'value' +p9107 +g47 +sssS'duration' +p9108 +(dp9109 +S'mandatory' +p9110 +(dp9111 +S'editable' +p9112 +I00 +sS'value' +p9113 +I00 +ssS'name' +p9114 +(dp9115 +S'editable' +p9116 +I01 +sS'value' +p9117 +S'Duration' +p9118 +ssS'data_type' +p9119 +(dp9120 +S'editable' +p9121 +I00 +sS'value' +p9122 +S'duration' +p9123 +ssS'entity_type' +p9124 +(dp9125 +S'editable' +p9126 +I00 +sS'value' +p9127 +S'TimeLog' +p9128 +ssS'editable' +p9129 +(dp9130 +S'editable' +p9131 +I00 +sS'value' +p9132 +I01 +ssS'unique' +p9133 +(dp9134 +S'editable' +p9135 +I00 +sS'value' +p9136 +I00 +ssS'properties' +p9137 +(dp9138 +S'default_value' +p9139 +(dp9140 +S'editable' +p9141 +I00 +sS'value' +p9142 +I0 +ssS'summary_default' +p9143 +(dp9144 +S'editable' +p9145 +I01 +sS'value' +p9146 +S'sum' +p9147 +sssS'description' +p9148 +(dp9149 +S'editable' +p9150 +I01 +sS'value' +p9151 +g47 +sssS'user' +p9152 +(dp9153 +S'mandatory' +p9154 +(dp9155 +S'editable' +p9156 +I00 +sS'value' +p9157 +I00 +ssS'name' +p9158 +(dp9159 +S'editable' +p9160 +I01 +sS'value' +p9161 +S'Person' +p9162 +ssS'data_type' +p9163 +(dp9164 +S'editable' +p9165 +I00 +sS'value' +p9166 +S'entity' +p9167 +ssS'entity_type' +p9168 +(dp9169 +S'editable' +p9170 +I00 +sS'value' +p9171 +S'TimeLog' +p9172 +ssS'editable' +p9173 +(dp9174 +S'editable' +p9175 +I00 +sS'value' +p9176 +I01 +ssS'unique' +p9177 +(dp9178 +S'editable' +p9179 +I00 +sS'value' +p9180 +I00 +ssS'properties' +p9181 +(dp9182 +S'default_value' +p9183 +(dp9184 +S'editable' +p9185 +I00 +sS'value' +p9186 +NssS'summary_default' +p9187 +(dp9188 +S'editable' +p9189 +I01 +sS'value' +p9190 +S'none' +p9191 +ssS'valid_types' +p9192 +(dp9193 +S'editable' +p9194 +I01 +sS'value' +p9195 +(lp9196 +S'HumanUser' +p9197 +asssS'description' +p9198 +(dp9199 +S'editable' +p9200 +I01 +sS'value' +p9201 +g47 +sssS'date' +p9202 +(dp9203 +S'mandatory' +p9204 +(dp9205 +S'editable' +p9206 +I00 +sS'value' +p9207 +I00 +ssS'name' +p9208 +(dp9209 +S'editable' +p9210 +I01 +sS'value' +p9211 +S'Date' +p9212 +ssS'data_type' +p9213 +(dp9214 +S'editable' +p9215 +I00 +sS'value' +p9216 +S'date' +p9217 +ssS'entity_type' +p9218 +(dp9219 +S'editable' +p9220 +I00 +sS'value' +p9221 +S'TimeLog' +p9222 +ssS'editable' +p9223 +(dp9224 +S'editable' +p9225 +I00 +sS'value' +p9226 +I01 +ssS'unique' +p9227 +(dp9228 +S'editable' +p9229 +I00 +sS'value' +p9230 +I00 +ssS'properties' +p9231 +(dp9232 +S'default_value' +p9233 +(dp9234 +S'editable' +p9235 +I00 +sS'value' +p9236 +NssS'summary_default' +p9237 +(dp9238 +S'editable' +p9239 +I01 +sS'value' +p9240 +S'none' +p9241 +sssS'description' +p9242 +(dp9243 +S'editable' +p9244 +I01 +sS'value' +p9245 +g47 +sssS'cached_display_name' +p9246 +(dp9247 +S'mandatory' +p9248 +(dp9249 +S'editable' +p9250 +I00 +sS'value' +p9251 +I00 +ssS'name' +p9252 +(dp9253 +S'editable' +p9254 +I01 +sS'value' +p9255 +S'Cached Display Name' +p9256 +ssS'data_type' +p9257 +(dp9258 +S'editable' +p9259 +I00 +sS'value' +p9260 +S'text' +p9261 +ssS'entity_type' +p9262 +(dp9263 +S'editable' +p9264 +I00 +sS'value' +p9265 +S'TimeLog' +p9266 +ssS'editable' +p9267 +(dp9268 +S'editable' +p9269 +I00 +sS'value' +p9270 +I01 +ssS'unique' +p9271 +(dp9272 +S'editable' +p9273 +I00 +sS'value' +p9274 +I00 +ssS'properties' +p9275 +(dp9276 +S'default_value' +p9277 +(dp9278 +S'editable' +p9279 +I00 +sS'value' +p9280 +NssS'summary_default' +p9281 +(dp9282 +S'editable' +p9283 +I00 +sS'value' +p9284 +S'none' +p9285 +sssS'description' +p9286 +(dp9287 +S'editable' +p9288 +I01 +sS'value' +p9289 +g47 +sssS'id' +p9290 +(dp9291 +S'mandatory' +p9292 +(dp9293 +S'editable' +p9294 +I00 +sS'value' +p9295 +I01 +ssS'name' +p9296 +(dp9297 +S'editable' +p9298 +I01 +sS'value' +p9299 +S'Id' +p9300 +ssS'data_type' +p9301 +(dp9302 +S'editable' +p9303 +I00 +sS'value' +p9304 +S'number' +p9305 +ssS'entity_type' +p9306 +(dp9307 +S'editable' +p9308 +I00 +sS'value' +p9309 +S'TimeLog' +p9310 +ssS'editable' +p9311 +(dp9312 +S'editable' +p9313 +I00 +sS'value' +p9314 +I00 +ssS'unique' +p9315 +(dp9316 +S'editable' +p9317 +I00 +sS'value' +p9318 +I00 +ssS'properties' +p9319 +(dp9320 +S'default_value' +p9321 +(dp9322 +S'editable' +p9323 +I00 +sS'value' +p9324 +NssS'summary_default' +p9325 +(dp9326 +S'editable' +p9327 +I01 +sS'value' +p9328 +S'none' +p9329 +sssS'description' +p9330 +(dp9331 +S'editable' +p9332 +I01 +sS'value' +p9333 +g47 +sssS'updated_by' +p9334 +(dp9335 +S'mandatory' +p9336 +(dp9337 +S'editable' +p9338 +I00 +sS'value' +p9339 +I00 +ssS'name' +p9340 +(dp9341 +S'editable' +p9342 +I01 +sS'value' +p9343 +S'Updated by' +p9344 +ssS'data_type' +p9345 +(dp9346 +S'editable' +p9347 +I00 +sS'value' +p9348 +S'entity' +p9349 +ssS'entity_type' +p9350 +(dp9351 +S'editable' +p9352 +I00 +sS'value' +p9353 +S'TimeLog' +p9354 +ssS'editable' +p9355 +(dp9356 +S'editable' +p9357 +I00 +sS'value' +p9358 +I00 +ssS'unique' +p9359 +(dp9360 +S'editable' +p9361 +I00 +sS'value' +p9362 +I00 +ssS'properties' +p9363 +(dp9364 +S'default_value' +p9365 +(dp9366 +S'editable' +p9367 +I00 +sS'value' +p9368 +NssS'summary_default' +p9369 +(dp9370 +S'editable' +p9371 +I01 +sS'value' +p9372 +S'none' +p9373 +ssS'valid_types' +p9374 +(dp9375 +S'editable' +p9376 +I01 +sS'value' +p9377 +(lp9378 +S'HumanUser' +p9379 +aS'ApiUser' +p9380 +asssS'description' +p9381 +(dp9382 +S'editable' +p9383 +I01 +sS'value' +p9384 +g47 +ssssS'PlaylistVersionConnection' +p9385 +(dp9386 +S'cached_display_name' +p9387 +(dp9388 +S'mandatory' +p9389 +(dp9390 +S'editable' +p9391 +I00 +sS'value' +p9392 +I00 +ssS'name' +p9393 +(dp9394 +S'editable' +p9395 +I01 +sS'value' +p9396 +S'Cached Display Name' +p9397 +ssS'data_type' +p9398 +(dp9399 +S'editable' +p9400 +I00 +sS'value' +p9401 +S'text' +p9402 +ssS'entity_type' +p9403 +(dp9404 +S'editable' +p9405 +I00 +sS'value' +p9406 +S'PlaylistVersionConnection' +p9407 +ssS'editable' +p9408 +(dp9409 +S'editable' +p9410 +I00 +sS'value' +p9411 +I01 +ssS'unique' +p9412 +(dp9413 +S'editable' +p9414 +I00 +sS'value' +p9415 +I00 +ssS'properties' +p9416 +(dp9417 +S'default_value' +p9418 +(dp9419 +S'editable' +p9420 +I00 +sS'value' +p9421 +NssS'summary_default' +p9422 +(dp9423 +S'editable' +p9424 +I00 +sS'value' +p9425 +S'none' +p9426 +sssS'description' +p9427 +(dp9428 +S'editable' +p9429 +I01 +sS'value' +p9430 +g47 +sssS'version' +p9431 +(dp9432 +S'mandatory' +p9433 +(dp9434 +S'editable' +p9435 +I00 +sS'value' +p9436 +I00 +ssS'name' +p9437 +(dp9438 +S'editable' +p9439 +I01 +sS'value' +p9440 +S'Version' +p9441 +ssS'data_type' +p9442 +(dp9443 +S'editable' +p9444 +I00 +sS'value' +p9445 +S'entity' +p9446 +ssS'entity_type' +p9447 +(dp9448 +S'editable' +p9449 +I00 +sS'value' +p9450 +S'PlaylistVersionConnection' +p9451 +ssS'editable' +p9452 +(dp9453 +S'editable' +p9454 +I00 +sS'value' +p9455 +I00 +ssS'unique' +p9456 +(dp9457 +S'editable' +p9458 +I00 +sS'value' +p9459 +I00 +ssS'properties' +p9460 +(dp9461 +S'default_value' +p9462 +(dp9463 +S'editable' +p9464 +I00 +sS'value' +p9465 +NssS'summary_default' +p9466 +(dp9467 +S'editable' +p9468 +I00 +sS'value' +p9469 +S'none' +p9470 +ssS'valid_types' +p9471 +(dp9472 +S'editable' +p9473 +I00 +sS'value' +p9474 +(lp9475 +S'Version' +p9476 +asssS'description' +p9477 +(dp9478 +S'editable' +p9479 +I01 +sS'value' +p9480 +g47 +sssS'sg_sort_order' +p9481 +(dp9482 +S'mandatory' +p9483 +(dp9484 +S'editable' +p9485 +I00 +sS'value' +p9486 +I00 +ssS'name' +p9487 +(dp9488 +S'editable' +p9489 +I01 +sS'value' +p9490 +S'Sort Order' +p9491 +ssS'data_type' +p9492 +(dp9493 +S'editable' +p9494 +I00 +sS'value' +p9495 +S'number' +p9496 +ssS'entity_type' +p9497 +(dp9498 +S'editable' +p9499 +I00 +sS'value' +p9500 +S'PlaylistVersionConnection' +p9501 +ssS'editable' +p9502 +(dp9503 +S'editable' +p9504 +I00 +sS'value' +p9505 +I01 +ssS'unique' +p9506 +(dp9507 +S'editable' +p9508 +I00 +sS'value' +p9509 +I00 +ssS'properties' +p9510 +(dp9511 +S'default_value' +p9512 +(dp9513 +S'editable' +p9514 +I00 +sS'value' +p9515 +NssS'summary_default' +p9516 +(dp9517 +S'editable' +p9518 +I01 +sS'value' +p9519 +S'none' +p9520 +sssS'description' +p9521 +(dp9522 +S'editable' +p9523 +I01 +sS'value' +p9524 +g47 +sssS'playlist' +p9525 +(dp9526 +S'mandatory' +p9527 +(dp9528 +S'editable' +p9529 +I00 +sS'value' +p9530 +I00 +ssS'name' +p9531 +(dp9532 +S'editable' +p9533 +I01 +sS'value' +p9534 +S'Playlist' +p9535 +ssS'data_type' +p9536 +(dp9537 +S'editable' +p9538 +I00 +sS'value' +p9539 +S'entity' +p9540 +ssS'entity_type' +p9541 +(dp9542 +S'editable' +p9543 +I00 +sS'value' +p9544 +S'PlaylistVersionConnection' +p9545 +ssS'editable' +p9546 +(dp9547 +S'editable' +p9548 +I00 +sS'value' +p9549 +I00 +ssS'unique' +p9550 +(dp9551 +S'editable' +p9552 +I00 +sS'value' +p9553 +I00 +ssS'properties' +p9554 +(dp9555 +S'default_value' +p9556 +(dp9557 +S'editable' +p9558 +I00 +sS'value' +p9559 +NssS'summary_default' +p9560 +(dp9561 +S'editable' +p9562 +I00 +sS'value' +p9563 +S'none' +p9564 +ssS'valid_types' +p9565 +(dp9566 +S'editable' +p9567 +I00 +sS'value' +p9568 +(lp9569 +S'Playlist' +p9570 +asssS'description' +p9571 +(dp9572 +S'editable' +p9573 +I01 +sS'value' +p9574 +g47 +sssS'id' +p9575 +(dp9576 +S'mandatory' +p9577 +(dp9578 +S'editable' +p9579 +I00 +sS'value' +p9580 +I01 +ssS'name' +p9581 +(dp9582 +S'editable' +p9583 +I01 +sS'value' +p9584 +S'Id' +p9585 +ssS'data_type' +p9586 +(dp9587 +S'editable' +p9588 +I00 +sS'value' +p9589 +S'number' +p9590 +ssS'entity_type' +p9591 +(dp9592 +S'editable' +p9593 +I00 +sS'value' +p9594 +S'PlaylistVersionConnection' +p9595 +ssS'editable' +p9596 +(dp9597 +S'editable' +p9598 +I00 +sS'value' +p9599 +I00 +ssS'unique' +p9600 +(dp9601 +S'editable' +p9602 +I00 +sS'value' +p9603 +I00 +ssS'properties' +p9604 +(dp9605 +S'default_value' +p9606 +(dp9607 +S'editable' +p9608 +I00 +sS'value' +p9609 +NssS'summary_default' +p9610 +(dp9611 +S'editable' +p9612 +I00 +sS'value' +p9613 +S'none' +p9614 +sssS'description' +p9615 +(dp9616 +S'editable' +p9617 +I01 +sS'value' +p9618 +g47 +ssssS'CustomNonProjectEntity02' +p9619 +(dp9620 +S'open_notes_count' +p9621 +(dp9622 +S'mandatory' +p9623 +(dp9624 +S'editable' +p9625 +I00 +sS'value' +p9626 +I00 +ssS'name' +p9627 +(dp9628 +S'editable' +p9629 +I01 +sS'value' +p9630 +S'Open Notes Count' +p9631 +ssS'data_type' +p9632 +(dp9633 +S'editable' +p9634 +I00 +sS'value' +p9635 +S'text' +p9636 +ssS'entity_type' +p9637 +(dp9638 +S'editable' +p9639 +I00 +sS'value' +p9640 +S'CustomNonProjectEntity02' +p9641 +ssS'editable' +p9642 +(dp9643 +S'editable' +p9644 +I00 +sS'value' +p9645 +I00 +ssS'unique' +p9646 +(dp9647 +S'editable' +p9648 +I00 +sS'value' +p9649 +I00 +ssS'properties' +p9650 +(dp9651 +S'default_value' +p9652 +(dp9653 +S'editable' +p9654 +I00 +sS'value' +p9655 +NssS'summary_default' +p9656 +(dp9657 +S'editable' +p9658 +I01 +sS'value' +p9659 +S'none' +p9660 +sssS'description' +p9661 +(dp9662 +S'editable' +p9663 +I01 +sS'value' +p9664 +g47 +sssS'code' +p9665 +(dp9666 +S'mandatory' +p9667 +(dp9668 +S'editable' +p9669 +I00 +sS'value' +p9670 +I01 +ssS'name' +p9671 +(dp9672 +S'editable' +p9673 +I01 +sS'value' +p9674 +S'Custom Non Project Entity02 Name' +p9675 +ssS'data_type' +p9676 +(dp9677 +S'editable' +p9678 +I00 +sS'value' +p9679 +S'text' +p9680 +ssS'entity_type' +p9681 +(dp9682 +S'editable' +p9683 +I00 +sS'value' +p9684 +S'CustomNonProjectEntity02' +p9685 +ssS'editable' +p9686 +(dp9687 +S'editable' +p9688 +I00 +sS'value' +p9689 +I01 +ssS'unique' +p9690 +(dp9691 +S'editable' +p9692 +I00 +sS'value' +p9693 +I00 +ssS'properties' +p9694 +(dp9695 +S'default_value' +p9696 +(dp9697 +S'editable' +p9698 +I00 +sS'value' +p9699 +NssS'summary_default' +p9700 +(dp9701 +S'editable' +p9702 +I01 +sS'value' +p9703 +S'none' +p9704 +sssS'description' +p9705 +(dp9706 +S'editable' +p9707 +I01 +sS'value' +p9708 +g47 +sssS'open_notes' +p9709 +(dp9710 +S'mandatory' +p9711 +(dp9712 +S'editable' +p9713 +I00 +sS'value' +p9714 +I00 +ssS'name' +p9715 +(dp9716 +S'editable' +p9717 +I01 +sS'value' +p9718 +S'Open Notes' +p9719 +ssS'data_type' +p9720 +(dp9721 +S'editable' +p9722 +I00 +sS'value' +p9723 +S'multi_entity' +p9724 +ssS'entity_type' +p9725 +(dp9726 +S'editable' +p9727 +I00 +sS'value' +p9728 +S'CustomNonProjectEntity02' +p9729 +ssS'editable' +p9730 +(dp9731 +S'editable' +p9732 +I00 +sS'value' +p9733 +I00 +ssS'unique' +p9734 +(dp9735 +S'editable' +p9736 +I00 +sS'value' +p9737 +I00 +ssS'properties' +p9738 +(dp9739 +S'default_value' +p9740 +(dp9741 +S'editable' +p9742 +I00 +sS'value' +p9743 +NssS'summary_default' +p9744 +(dp9745 +S'editable' +p9746 +I01 +sS'value' +p9747 +S'none' +p9748 +ssS'valid_types' +p9749 +(dp9750 +S'editable' +p9751 +I01 +sS'value' +p9752 +(lp9753 +S'Note' +p9754 +asssS'description' +p9755 +(dp9756 +S'editable' +p9757 +I01 +sS'value' +p9758 +g47 +sssS'description' +p9759 +(dp9760 +S'mandatory' +p9761 +(dp9762 +S'editable' +p9763 +I00 +sS'value' +p9764 +I00 +ssS'name' +p9765 +(dp9766 +S'editable' +p9767 +I01 +sS'value' +p9768 +S'Description' +p9769 +ssS'data_type' +p9770 +(dp9771 +S'editable' +p9772 +I00 +sS'value' +p9773 +S'text' +p9774 +ssS'entity_type' +p9775 +(dp9776 +S'editable' +p9777 +I00 +sS'value' +p9778 +S'CustomNonProjectEntity02' +p9779 +ssS'editable' +p9780 +(dp9781 +S'editable' +p9782 +I00 +sS'value' +p9783 +I01 +ssS'unique' +p9784 +(dp9785 +S'editable' +p9786 +I00 +sS'value' +p9787 +I00 +ssS'properties' +p9788 +(dp9789 +S'default_value' +p9790 +(dp9791 +S'editable' +p9792 +I00 +sS'value' +p9793 +NssS'summary_default' +p9794 +(dp9795 +S'editable' +p9796 +I01 +sS'value' +p9797 +S'none' +p9798 +sssS'description' +p9799 +(dp9800 +S'editable' +p9801 +I01 +sS'value' +p9802 +g47 +sssS'created_at' +p9803 +(dp9804 +S'mandatory' +p9805 +(dp9806 +S'editable' +p9807 +I00 +sS'value' +p9808 +I00 +ssS'name' +p9809 +(dp9810 +S'editable' +p9811 +I01 +sS'value' +p9812 +S'Date Created' +p9813 +ssS'data_type' +p9814 +(dp9815 +S'editable' +p9816 +I00 +sS'value' +p9817 +S'date_time' +p9818 +ssS'entity_type' +p9819 +(dp9820 +S'editable' +p9821 +I00 +sS'value' +p9822 +S'CustomNonProjectEntity02' +p9823 +ssS'editable' +p9824 +(dp9825 +S'editable' +p9826 +I00 +sS'value' +p9827 +I00 +ssS'unique' +p9828 +(dp9829 +S'editable' +p9830 +I00 +sS'value' +p9831 +I00 +ssS'properties' +p9832 +(dp9833 +S'default_value' +p9834 +(dp9835 +S'editable' +p9836 +I00 +sS'value' +p9837 +NssS'summary_default' +p9838 +(dp9839 +S'editable' +p9840 +I01 +sS'value' +p9841 +S'none' +p9842 +sssS'description' +p9843 +(dp9844 +S'editable' +p9845 +I01 +sS'value' +p9846 +g47 +sssS'updated_at' +p9847 +(dp9848 +S'mandatory' +p9849 +(dp9850 +S'editable' +p9851 +I00 +sS'value' +p9852 +I00 +ssS'name' +p9853 +(dp9854 +S'editable' +p9855 +I01 +sS'value' +p9856 +S'Date Updated' +p9857 +ssS'data_type' +p9858 +(dp9859 +S'editable' +p9860 +I00 +sS'value' +p9861 +S'date_time' +p9862 +ssS'entity_type' +p9863 +(dp9864 +S'editable' +p9865 +I00 +sS'value' +p9866 +S'CustomNonProjectEntity02' +p9867 +ssS'editable' +p9868 +(dp9869 +S'editable' +p9870 +I00 +sS'value' +p9871 +I00 +ssS'unique' +p9872 +(dp9873 +S'editable' +p9874 +I00 +sS'value' +p9875 +I00 +ssS'properties' +p9876 +(dp9877 +S'default_value' +p9878 +(dp9879 +S'editable' +p9880 +I00 +sS'value' +p9881 +NssS'summary_default' +p9882 +(dp9883 +S'editable' +p9884 +I01 +sS'value' +p9885 +S'none' +p9886 +sssS'description' +p9887 +(dp9888 +S'editable' +p9889 +I01 +sS'value' +p9890 +g47 +sssS'created_by' +p9891 +(dp9892 +S'mandatory' +p9893 +(dp9894 +S'editable' +p9895 +I00 +sS'value' +p9896 +I00 +ssS'name' +p9897 +(dp9898 +S'editable' +p9899 +I01 +sS'value' +p9900 +S'Created by' +p9901 +ssS'data_type' +p9902 +(dp9903 +S'editable' +p9904 +I00 +sS'value' +p9905 +S'entity' +p9906 +ssS'entity_type' +p9907 +(dp9908 +S'editable' +p9909 +I00 +sS'value' +p9910 +S'CustomNonProjectEntity02' +p9911 +ssS'editable' +p9912 +(dp9913 +S'editable' +p9914 +I00 +sS'value' +p9915 +I00 +ssS'unique' +p9916 +(dp9917 +S'editable' +p9918 +I00 +sS'value' +p9919 +I00 +ssS'properties' +p9920 +(dp9921 +S'default_value' +p9922 +(dp9923 +S'editable' +p9924 +I00 +sS'value' +p9925 +NssS'summary_default' +p9926 +(dp9927 +S'editable' +p9928 +I01 +sS'value' +p9929 +S'none' +p9930 +ssS'valid_types' +p9931 +(dp9932 +S'editable' +p9933 +I01 +sS'value' +p9934 +(lp9935 +S'HumanUser' +p9936 +aS'ApiUser' +p9937 +asssS'description' +p9938 +(dp9939 +S'editable' +p9940 +I01 +sS'value' +p9941 +g47 +sssS'filmstrip_image' +p9942 +(dp9943 +S'mandatory' +p9944 +(dp9945 +S'editable' +p9946 +I00 +sS'value' +p9947 +I00 +ssS'name' +p9948 +(dp9949 +S'editable' +p9950 +I01 +sS'value' +p9951 +S'Filmstrip Thumbnail' +p9952 +ssS'data_type' +p9953 +(dp9954 +S'editable' +p9955 +I00 +sS'value' +p9956 +S'image' +p9957 +ssS'entity_type' +p9958 +(dp9959 +S'editable' +p9960 +I00 +sS'value' +p9961 +S'CustomNonProjectEntity02' +p9962 +ssS'editable' +p9963 +(dp9964 +S'editable' +p9965 +I00 +sS'value' +p9966 +I01 +ssS'unique' +p9967 +(dp9968 +S'editable' +p9969 +I00 +sS'value' +p9970 +I00 +ssS'properties' +p9971 +(dp9972 +S'default_value' +p9973 +(dp9974 +S'editable' +p9975 +I00 +sS'value' +p9976 +NssS'summary_default' +p9977 +(dp9978 +S'editable' +p9979 +I01 +sS'value' +p9980 +S'none' +p9981 +sssS'description' +p9982 +(dp9983 +S'editable' +p9984 +I01 +sS'value' +p9985 +g47 +sssS'sg_status_list' +p9986 +(dp9987 +S'mandatory' +p9988 +(dp9989 +S'editable' +p9990 +I00 +sS'value' +p9991 +I00 +ssS'name' +p9992 +(dp9993 +S'editable' +p9994 +I01 +sS'value' +p9995 +S'Status' +p9996 +ssS'data_type' +p9997 +(dp9998 +S'editable' +p9999 +I00 +sS'value' +p10000 +S'status_list' +p10001 +ssS'entity_type' +p10002 +(dp10003 +S'editable' +p10004 +I00 +sS'value' +p10005 +S'CustomNonProjectEntity02' +p10006 +ssS'editable' +p10007 +(dp10008 +S'editable' +p10009 +I00 +sS'value' +p10010 +I01 +ssS'unique' +p10011 +(dp10012 +S'editable' +p10013 +I00 +sS'value' +p10014 +I00 +ssS'properties' +p10015 +(dp10016 +S'default_value' +p10017 +(dp10018 +S'editable' +p10019 +I01 +sS'value' +p10020 +S'wtg' +p10021 +ssS'valid_values' +p10022 +(dp10023 +S'editable' +p10024 +I01 +sS'value' +p10025 +(lp10026 +S'cmpt' +p10027 +aS'ip' +p10028 +aS'wtg' +p10029 +assS'summary_default' +p10030 +(dp10031 +S'editable' +p10032 +I01 +sS'value' +p10033 +S'none' +p10034 +sssS'description' +p10035 +(dp10036 +S'editable' +p10037 +I01 +sS'value' +p10038 +g47 +sssS'notes' +p10039 +(dp10040 +S'mandatory' +p10041 +(dp10042 +S'editable' +p10043 +I00 +sS'value' +p10044 +I00 +ssS'name' +p10045 +(dp10046 +S'editable' +p10047 +I01 +sS'value' +p10048 +S'Notes' +p10049 +ssS'data_type' +p10050 +(dp10051 +S'editable' +p10052 +I00 +sS'value' +p10053 +S'multi_entity' +p10054 +ssS'entity_type' +p10055 +(dp10056 +S'editable' +p10057 +I00 +sS'value' +p10058 +S'CustomNonProjectEntity02' +p10059 +ssS'editable' +p10060 +(dp10061 +S'editable' +p10062 +I00 +sS'value' +p10063 +I01 +ssS'unique' +p10064 +(dp10065 +S'editable' +p10066 +I00 +sS'value' +p10067 +I00 +ssS'properties' +p10068 +(dp10069 +S'default_value' +p10070 +(dp10071 +S'editable' +p10072 +I00 +sS'value' +p10073 +NssS'summary_default' +p10074 +(dp10075 +S'editable' +p10076 +I01 +sS'value' +p10077 +S'none' +p10078 +ssS'valid_types' +p10079 +(dp10080 +S'editable' +p10081 +I01 +sS'value' +p10082 +(lp10083 +S'Note' +p10084 +asssS'description' +p10085 +(dp10086 +S'editable' +p10087 +I01 +sS'value' +p10088 +g47 +sssS'image' +p10089 +(dp10090 +S'mandatory' +p10091 +(dp10092 +S'editable' +p10093 +I00 +sS'value' +p10094 +I00 +ssS'name' +p10095 +(dp10096 +S'editable' +p10097 +I01 +sS'value' +p10098 +S'Thumbnail' +p10099 +ssS'data_type' +p10100 +(dp10101 +S'editable' +p10102 +I00 +sS'value' +p10103 +S'image' +p10104 +ssS'entity_type' +p10105 +(dp10106 +S'editable' +p10107 +I00 +sS'value' +p10108 +S'CustomNonProjectEntity02' +p10109 +ssS'editable' +p10110 +(dp10111 +S'editable' +p10112 +I00 +sS'value' +p10113 +I01 +ssS'unique' +p10114 +(dp10115 +S'editable' +p10116 +I00 +sS'value' +p10117 +I00 +ssS'properties' +p10118 +(dp10119 +S'default_value' +p10120 +(dp10121 +S'editable' +p10122 +I00 +sS'value' +p10123 +NssS'summary_default' +p10124 +(dp10125 +S'editable' +p10126 +I01 +sS'value' +p10127 +S'none' +p10128 +sssS'description' +p10129 +(dp10130 +S'editable' +p10131 +I01 +sS'value' +p10132 +g47 +sssS'cached_display_name' +p10133 +(dp10134 +S'mandatory' +p10135 +(dp10136 +S'editable' +p10137 +I00 +sS'value' +p10138 +I00 +ssS'name' +p10139 +(dp10140 +S'editable' +p10141 +I01 +sS'value' +p10142 +S'Cached Display Name' +p10143 +ssS'data_type' +p10144 +(dp10145 +S'editable' +p10146 +I00 +sS'value' +p10147 +S'text' +p10148 +ssS'entity_type' +p10149 +(dp10150 +S'editable' +p10151 +I00 +sS'value' +p10152 +S'CustomNonProjectEntity02' +p10153 +ssS'editable' +p10154 +(dp10155 +S'editable' +p10156 +I00 +sS'value' +p10157 +I01 +ssS'unique' +p10158 +(dp10159 +S'editable' +p10160 +I00 +sS'value' +p10161 +I00 +ssS'properties' +p10162 +(dp10163 +S'default_value' +p10164 +(dp10165 +S'editable' +p10166 +I00 +sS'value' +p10167 +NssS'summary_default' +p10168 +(dp10169 +S'editable' +p10170 +I00 +sS'value' +p10171 +S'none' +p10172 +sssS'description' +p10173 +(dp10174 +S'editable' +p10175 +I01 +sS'value' +p10176 +g47 +sssS'tag_list' +p10177 +(dp10178 +S'mandatory' +p10179 +(dp10180 +S'editable' +p10181 +I00 +sS'value' +p10182 +I00 +ssS'name' +p10183 +(dp10184 +S'editable' +p10185 +I01 +sS'value' +p10186 +S'Tags' +p10187 +ssS'data_type' +p10188 +(dp10189 +S'editable' +p10190 +I00 +sS'value' +p10191 +S'tag_list' +p10192 +ssS'entity_type' +p10193 +(dp10194 +S'editable' +p10195 +I00 +sS'value' +p10196 +S'CustomNonProjectEntity02' +p10197 +ssS'editable' +p10198 +(dp10199 +S'editable' +p10200 +I00 +sS'value' +p10201 +I01 +ssS'unique' +p10202 +(dp10203 +S'editable' +p10204 +I00 +sS'value' +p10205 +I00 +ssS'properties' +p10206 +(dp10207 +S'default_value' +p10208 +(dp10209 +S'editable' +p10210 +I00 +sS'value' +p10211 +NssS'summary_default' +p10212 +(dp10213 +S'editable' +p10214 +I01 +sS'value' +p10215 +S'none' +p10216 +ssS'valid_types' +p10217 +(dp10218 +S'editable' +p10219 +I01 +sS'value' +p10220 +(lp10221 +S'Tag' +p10222 +asssS'description' +p10223 +(dp10224 +S'editable' +p10225 +I01 +sS'value' +p10226 +g47 +sssS'id' +p10227 +(dp10228 +S'mandatory' +p10229 +(dp10230 +S'editable' +p10231 +I00 +sS'value' +p10232 +I00 +ssS'name' +p10233 +(dp10234 +S'editable' +p10235 +I01 +sS'value' +p10236 +S'Id' +p10237 +ssS'data_type' +p10238 +(dp10239 +S'editable' +p10240 +I00 +sS'value' +p10241 +S'number' +p10242 +ssS'entity_type' +p10243 +(dp10244 +S'editable' +p10245 +I00 +sS'value' +p10246 +S'CustomNonProjectEntity02' +p10247 +ssS'editable' +p10248 +(dp10249 +S'editable' +p10250 +I00 +sS'value' +p10251 +I00 +ssS'unique' +p10252 +(dp10253 +S'editable' +p10254 +I00 +sS'value' +p10255 +I00 +ssS'properties' +p10256 +(dp10257 +S'default_value' +p10258 +(dp10259 +S'editable' +p10260 +I00 +sS'value' +p10261 +NssS'summary_default' +p10262 +(dp10263 +S'editable' +p10264 +I01 +sS'value' +p10265 +S'none' +p10266 +sssS'description' +p10267 +(dp10268 +S'editable' +p10269 +I01 +sS'value' +p10270 +g47 +sssS'updated_by' +p10271 +(dp10272 +S'mandatory' +p10273 +(dp10274 +S'editable' +p10275 +I00 +sS'value' +p10276 +I00 +ssS'name' +p10277 +(dp10278 +S'editable' +p10279 +I01 +sS'value' +p10280 +S'Updated by' +p10281 +ssS'data_type' +p10282 +(dp10283 +S'editable' +p10284 +I00 +sS'value' +p10285 +S'entity' +p10286 +ssS'entity_type' +p10287 +(dp10288 +S'editable' +p10289 +I00 +sS'value' +p10290 +S'CustomNonProjectEntity02' +p10291 +ssS'editable' +p10292 +(dp10293 +S'editable' +p10294 +I00 +sS'value' +p10295 +I00 +ssS'unique' +p10296 +(dp10297 +S'editable' +p10298 +I00 +sS'value' +p10299 +I00 +ssS'properties' +p10300 +(dp10301 +S'default_value' +p10302 +(dp10303 +S'editable' +p10304 +I00 +sS'value' +p10305 +NssS'summary_default' +p10306 +(dp10307 +S'editable' +p10308 +I01 +sS'value' +p10309 +S'none' +p10310 +ssS'valid_types' +p10311 +(dp10312 +S'editable' +p10313 +I01 +sS'value' +p10314 +(lp10315 +S'HumanUser' +p10316 +aS'ApiUser' +p10317 +asssS'description' +p10318 +(dp10319 +S'editable' +p10320 +I01 +sS'value' +p10321 +g47 +ssssS'AssetElementConnection' +p10322 +(dp10323 +S'cached_display_name' +p10324 +(dp10325 +S'mandatory' +p10326 +(dp10327 +S'editable' +p10328 +I00 +sS'value' +p10329 +I00 +ssS'name' +p10330 +(dp10331 +S'editable' +p10332 +I01 +sS'value' +p10333 +S'Cached Display Name' +p10334 +ssS'data_type' +p10335 +(dp10336 +S'editable' +p10337 +I00 +sS'value' +p10338 +S'text' +p10339 +ssS'entity_type' +p10340 +(dp10341 +S'editable' +p10342 +I00 +sS'value' +p10343 +S'AssetElementConnection' +p10344 +ssS'editable' +p10345 +(dp10346 +S'editable' +p10347 +I00 +sS'value' +p10348 +I01 +ssS'unique' +p10349 +(dp10350 +S'editable' +p10351 +I00 +sS'value' +p10352 +I00 +ssS'properties' +p10353 +(dp10354 +S'default_value' +p10355 +(dp10356 +S'editable' +p10357 +I00 +sS'value' +p10358 +NssS'summary_default' +p10359 +(dp10360 +S'editable' +p10361 +I00 +sS'value' +p10362 +S'none' +p10363 +sssS'description' +p10364 +(dp10365 +S'editable' +p10366 +I01 +sS'value' +p10367 +g47 +sssS'element' +p10368 +(dp10369 +S'mandatory' +p10370 +(dp10371 +S'editable' +p10372 +I00 +sS'value' +p10373 +I00 +ssS'name' +p10374 +(dp10375 +S'editable' +p10376 +I01 +sS'value' +p10377 +S'Element' +p10378 +ssS'data_type' +p10379 +(dp10380 +S'editable' +p10381 +I00 +sS'value' +p10382 +S'entity' +p10383 +ssS'entity_type' +p10384 +(dp10385 +S'editable' +p10386 +I00 +sS'value' +p10387 +S'AssetElementConnection' +p10388 +ssS'editable' +p10389 +(dp10390 +S'editable' +p10391 +I00 +sS'value' +p10392 +I00 +ssS'unique' +p10393 +(dp10394 +S'editable' +p10395 +I00 +sS'value' +p10396 +I00 +ssS'properties' +p10397 +(dp10398 +S'default_value' +p10399 +(dp10400 +S'editable' +p10401 +I00 +sS'value' +p10402 +NssS'summary_default' +p10403 +(dp10404 +S'editable' +p10405 +I00 +sS'value' +p10406 +S'none' +p10407 +ssS'valid_types' +p10408 +(dp10409 +S'editable' +p10410 +I00 +sS'value' +p10411 +(lp10412 +S'Element' +p10413 +asssS'description' +p10414 +(dp10415 +S'editable' +p10416 +I01 +sS'value' +p10417 +g47 +sssS'asset' +p10418 +(dp10419 +S'mandatory' +p10420 +(dp10421 +S'editable' +p10422 +I00 +sS'value' +p10423 +I00 +ssS'name' +p10424 +(dp10425 +S'editable' +p10426 +I01 +sS'value' +p10427 +S'Asset' +p10428 +ssS'data_type' +p10429 +(dp10430 +S'editable' +p10431 +I00 +sS'value' +p10432 +S'entity' +p10433 +ssS'entity_type' +p10434 +(dp10435 +S'editable' +p10436 +I00 +sS'value' +p10437 +S'AssetElementConnection' +p10438 +ssS'editable' +p10439 +(dp10440 +S'editable' +p10441 +I00 +sS'value' +p10442 +I00 +ssS'unique' +p10443 +(dp10444 +S'editable' +p10445 +I00 +sS'value' +p10446 +I00 +ssS'properties' +p10447 +(dp10448 +S'default_value' +p10449 +(dp10450 +S'editable' +p10451 +I00 +sS'value' +p10452 +NssS'summary_default' +p10453 +(dp10454 +S'editable' +p10455 +I00 +sS'value' +p10456 +S'none' +p10457 +ssS'valid_types' +p10458 +(dp10459 +S'editable' +p10460 +I00 +sS'value' +p10461 +(lp10462 +S'Asset' +p10463 +asssS'description' +p10464 +(dp10465 +S'editable' +p10466 +I01 +sS'value' +p10467 +g47 +sssS'id' +p10468 +(dp10469 +S'mandatory' +p10470 +(dp10471 +S'editable' +p10472 +I00 +sS'value' +p10473 +I01 +ssS'name' +p10474 +(dp10475 +S'editable' +p10476 +I01 +sS'value' +p10477 +S'Id' +p10478 +ssS'data_type' +p10479 +(dp10480 +S'editable' +p10481 +I00 +sS'value' +p10482 +S'number' +p10483 +ssS'entity_type' +p10484 +(dp10485 +S'editable' +p10486 +I00 +sS'value' +p10487 +S'AssetElementConnection' +p10488 +ssS'editable' +p10489 +(dp10490 +S'editable' +p10491 +I00 +sS'value' +p10492 +I00 +ssS'unique' +p10493 +(dp10494 +S'editable' +p10495 +I00 +sS'value' +p10496 +I00 +ssS'properties' +p10497 +(dp10498 +S'default_value' +p10499 +(dp10500 +S'editable' +p10501 +I00 +sS'value' +p10502 +NssS'summary_default' +p10503 +(dp10504 +S'editable' +p10505 +I00 +sS'value' +p10506 +S'none' +p10507 +sssS'description' +p10508 +(dp10509 +S'editable' +p10510 +I01 +sS'value' +p10511 +g47 +ssssS'ReleaseTicketConnection' +p10512 +(dp10513 +S'release' +p10514 +(dp10515 +S'mandatory' +p10516 +(dp10517 +S'editable' +p10518 +I00 +sS'value' +p10519 +I00 +ssS'name' +p10520 +(dp10521 +S'editable' +p10522 +I01 +sS'value' +p10523 +S'Release' +p10524 +ssS'data_type' +p10525 +(dp10526 +S'editable' +p10527 +I00 +sS'value' +p10528 +S'entity' +p10529 +ssS'entity_type' +p10530 +(dp10531 +S'editable' +p10532 +I00 +sS'value' +p10533 +S'ReleaseTicketConnection' +p10534 +ssS'editable' +p10535 +(dp10536 +S'editable' +p10537 +I00 +sS'value' +p10538 +I00 +ssS'unique' +p10539 +(dp10540 +S'editable' +p10541 +I00 +sS'value' +p10542 +I00 +ssS'properties' +p10543 +(dp10544 +S'default_value' +p10545 +(dp10546 +S'editable' +p10547 +I00 +sS'value' +p10548 +NssS'summary_default' +p10549 +(dp10550 +S'editable' +p10551 +I00 +sS'value' +p10552 +S'none' +p10553 +ssS'valid_types' +p10554 +(dp10555 +S'editable' +p10556 +I00 +sS'value' +p10557 +(lp10558 +S'Release' +p10559 +asssS'description' +p10560 +(dp10561 +S'editable' +p10562 +I01 +sS'value' +p10563 +g47 +sssS'ticket' +p10564 +(dp10565 +S'mandatory' +p10566 +(dp10567 +S'editable' +p10568 +I00 +sS'value' +p10569 +I00 +ssS'name' +p10570 +(dp10571 +S'editable' +p10572 +I01 +sS'value' +p10573 +S'Ticket' +p10574 +ssS'data_type' +p10575 +(dp10576 +S'editable' +p10577 +I00 +sS'value' +p10578 +S'entity' +p10579 +ssS'entity_type' +p10580 +(dp10581 +S'editable' +p10582 +I00 +sS'value' +p10583 +S'ReleaseTicketConnection' +p10584 +ssS'editable' +p10585 +(dp10586 +S'editable' +p10587 +I00 +sS'value' +p10588 +I00 +ssS'unique' +p10589 +(dp10590 +S'editable' +p10591 +I00 +sS'value' +p10592 +I00 +ssS'properties' +p10593 +(dp10594 +S'default_value' +p10595 +(dp10596 +S'editable' +p10597 +I00 +sS'value' +p10598 +NssS'summary_default' +p10599 +(dp10600 +S'editable' +p10601 +I00 +sS'value' +p10602 +S'none' +p10603 +ssS'valid_types' +p10604 +(dp10605 +S'editable' +p10606 +I00 +sS'value' +p10607 +(lp10608 +S'Ticket' +p10609 +asssS'description' +p10610 +(dp10611 +S'editable' +p10612 +I01 +sS'value' +p10613 +g47 +sssS'id' +p10614 +(dp10615 +S'mandatory' +p10616 +(dp10617 +S'editable' +p10618 +I00 +sS'value' +p10619 +I01 +ssS'name' +p10620 +(dp10621 +S'editable' +p10622 +I01 +sS'value' +p10623 +S'Id' +p10624 +ssS'data_type' +p10625 +(dp10626 +S'editable' +p10627 +I00 +sS'value' +p10628 +S'number' +p10629 +ssS'entity_type' +p10630 +(dp10631 +S'editable' +p10632 +I00 +sS'value' +p10633 +S'ReleaseTicketConnection' +p10634 +ssS'editable' +p10635 +(dp10636 +S'editable' +p10637 +I00 +sS'value' +p10638 +I00 +ssS'unique' +p10639 +(dp10640 +S'editable' +p10641 +I00 +sS'value' +p10642 +I00 +ssS'properties' +p10643 +(dp10644 +S'default_value' +p10645 +(dp10646 +S'editable' +p10647 +I00 +sS'value' +p10648 +NssS'summary_default' +p10649 +(dp10650 +S'editable' +p10651 +I00 +sS'value' +p10652 +S'none' +p10653 +sssS'description' +p10654 +(dp10655 +S'editable' +p10656 +I01 +sS'value' +p10657 +g47 +sssS'cached_display_name' +p10658 +(dp10659 +S'mandatory' +p10660 +(dp10661 +S'editable' +p10662 +I00 +sS'value' +p10663 +I00 +ssS'name' +p10664 +(dp10665 +S'editable' +p10666 +I01 +sS'value' +p10667 +S'Cached Display Name' +p10668 +ssS'data_type' +p10669 +(dp10670 +S'editable' +p10671 +I00 +sS'value' +p10672 +S'text' +p10673 +ssS'entity_type' +p10674 +(dp10675 +S'editable' +p10676 +I00 +sS'value' +p10677 +S'ReleaseTicketConnection' +p10678 +ssS'editable' +p10679 +(dp10680 +S'editable' +p10681 +I00 +sS'value' +p10682 +I01 +ssS'unique' +p10683 +(dp10684 +S'editable' +p10685 +I00 +sS'value' +p10686 +I00 +ssS'properties' +p10687 +(dp10688 +S'default_value' +p10689 +(dp10690 +S'editable' +p10691 +I00 +sS'value' +p10692 +NssS'summary_default' +p10693 +(dp10694 +S'editable' +p10695 +I00 +sS'value' +p10696 +S'none' +p10697 +sssS'description' +p10698 +(dp10699 +S'editable' +p10700 +I01 +sS'value' +p10701 +g47 +ssssS'RevisionRevisionConnection' +p10702 +(dp10703 +S'dest_revision' +p10704 +(dp10705 +S'mandatory' +p10706 +(dp10707 +S'editable' +p10708 +I00 +sS'value' +p10709 +I00 +ssS'name' +p10710 +(dp10711 +S'editable' +p10712 +I01 +sS'value' +p10713 +S'Destination Revision' +p10714 +ssS'data_type' +p10715 +(dp10716 +S'editable' +p10717 +I00 +sS'value' +p10718 +S'entity' +p10719 +ssS'entity_type' +p10720 +(dp10721 +S'editable' +p10722 +I00 +sS'value' +p10723 +S'RevisionRevisionConnection' +p10724 +ssS'editable' +p10725 +(dp10726 +S'editable' +p10727 +I00 +sS'value' +p10728 +I00 +ssS'unique' +p10729 +(dp10730 +S'editable' +p10731 +I00 +sS'value' +p10732 +I00 +ssS'properties' +p10733 +(dp10734 +S'default_value' +p10735 +(dp10736 +S'editable' +p10737 +I00 +sS'value' +p10738 +NssS'summary_default' +p10739 +(dp10740 +S'editable' +p10741 +I00 +sS'value' +p10742 +S'none' +p10743 +ssS'valid_types' +p10744 +(dp10745 +S'editable' +p10746 +I00 +sS'value' +p10747 +(lp10748 +S'Revision' +p10749 +asssS'description' +p10750 +(dp10751 +S'editable' +p10752 +I01 +sS'value' +p10753 +g47 +sssS'source_revision' +p10754 +(dp10755 +S'mandatory' +p10756 +(dp10757 +S'editable' +p10758 +I00 +sS'value' +p10759 +I00 +ssS'name' +p10760 +(dp10761 +S'editable' +p10762 +I01 +sS'value' +p10763 +S'Source Revision' +p10764 +ssS'data_type' +p10765 +(dp10766 +S'editable' +p10767 +I00 +sS'value' +p10768 +S'entity' +p10769 +ssS'entity_type' +p10770 +(dp10771 +S'editable' +p10772 +I00 +sS'value' +p10773 +S'RevisionRevisionConnection' +p10774 +ssS'editable' +p10775 +(dp10776 +S'editable' +p10777 +I00 +sS'value' +p10778 +I00 +ssS'unique' +p10779 +(dp10780 +S'editable' +p10781 +I00 +sS'value' +p10782 +I00 +ssS'properties' +p10783 +(dp10784 +S'default_value' +p10785 +(dp10786 +S'editable' +p10787 +I00 +sS'value' +p10788 +NssS'summary_default' +p10789 +(dp10790 +S'editable' +p10791 +I00 +sS'value' +p10792 +S'none' +p10793 +ssS'valid_types' +p10794 +(dp10795 +S'editable' +p10796 +I00 +sS'value' +p10797 +(lp10798 +S'Revision' +p10799 +asssS'description' +p10800 +(dp10801 +S'editable' +p10802 +I01 +sS'value' +p10803 +g47 +sssS'id' +p10804 +(dp10805 +S'mandatory' +p10806 +(dp10807 +S'editable' +p10808 +I00 +sS'value' +p10809 +I01 +ssS'name' +p10810 +(dp10811 +S'editable' +p10812 +I01 +sS'value' +p10813 +S'Id' +p10814 +ssS'data_type' +p10815 +(dp10816 +S'editable' +p10817 +I00 +sS'value' +p10818 +S'number' +p10819 +ssS'entity_type' +p10820 +(dp10821 +S'editable' +p10822 +I00 +sS'value' +p10823 +S'RevisionRevisionConnection' +p10824 +ssS'editable' +p10825 +(dp10826 +S'editable' +p10827 +I00 +sS'value' +p10828 +I00 +ssS'unique' +p10829 +(dp10830 +S'editable' +p10831 +I00 +sS'value' +p10832 +I00 +ssS'properties' +p10833 +(dp10834 +S'default_value' +p10835 +(dp10836 +S'editable' +p10837 +I00 +sS'value' +p10838 +NssS'summary_default' +p10839 +(dp10840 +S'editable' +p10841 +I00 +sS'value' +p10842 +S'none' +p10843 +sssS'description' +p10844 +(dp10845 +S'editable' +p10846 +I01 +sS'value' +p10847 +g47 +sssS'cached_display_name' +p10848 +(dp10849 +S'mandatory' +p10850 +(dp10851 +S'editable' +p10852 +I00 +sS'value' +p10853 +I00 +ssS'name' +p10854 +(dp10855 +S'editable' +p10856 +I01 +sS'value' +p10857 +S'Cached Display Name' +p10858 +ssS'data_type' +p10859 +(dp10860 +S'editable' +p10861 +I00 +sS'value' +p10862 +S'text' +p10863 +ssS'entity_type' +p10864 +(dp10865 +S'editable' +p10866 +I00 +sS'value' +p10867 +S'RevisionRevisionConnection' +p10868 +ssS'editable' +p10869 +(dp10870 +S'editable' +p10871 +I00 +sS'value' +p10872 +I01 +ssS'unique' +p10873 +(dp10874 +S'editable' +p10875 +I00 +sS'value' +p10876 +I00 +ssS'properties' +p10877 +(dp10878 +S'default_value' +p10879 +(dp10880 +S'editable' +p10881 +I00 +sS'value' +p10882 +NssS'summary_default' +p10883 +(dp10884 +S'editable' +p10885 +I00 +sS'value' +p10886 +S'none' +p10887 +sssS'description' +p10888 +(dp10889 +S'editable' +p10890 +I01 +sS'value' +p10891 +g47 +ssssS'ProjectUserConnection' +p10892 +(dp10893 +S'project' +p10894 +(dp10895 +S'mandatory' +p10896 +(dp10897 +S'editable' +p10898 +I00 +sS'value' +p10899 +I00 +ssS'name' +p10900 +(dp10901 +S'editable' +p10902 +I01 +sS'value' +p10903 +S'Project' +p10904 +ssS'data_type' +p10905 +(dp10906 +S'editable' +p10907 +I00 +sS'value' +p10908 +S'entity' +p10909 +ssS'entity_type' +p10910 +(dp10911 +S'editable' +p10912 +I00 +sS'value' +p10913 +S'ProjectUserConnection' +p10914 +ssS'editable' +p10915 +(dp10916 +S'editable' +p10917 +I00 +sS'value' +p10918 +I00 +ssS'unique' +p10919 +(dp10920 +S'editable' +p10921 +I00 +sS'value' +p10922 +I00 +ssS'properties' +p10923 +(dp10924 +S'default_value' +p10925 +(dp10926 +S'editable' +p10927 +I00 +sS'value' +p10928 +NssS'summary_default' +p10929 +(dp10930 +S'editable' +p10931 +I00 +sS'value' +p10932 +S'none' +p10933 +ssS'valid_types' +p10934 +(dp10935 +S'editable' +p10936 +I00 +sS'value' +p10937 +(lp10938 +S'Project' +p10939 +asssS'description' +p10940 +(dp10941 +S'editable' +p10942 +I01 +sS'value' +p10943 +g47 +sssS'cached_display_name' +p10944 +(dp10945 +S'mandatory' +p10946 +(dp10947 +S'editable' +p10948 +I00 +sS'value' +p10949 +I00 +ssS'name' +p10950 +(dp10951 +S'editable' +p10952 +I01 +sS'value' +p10953 +S'Cached Display Name' +p10954 +ssS'data_type' +p10955 +(dp10956 +S'editable' +p10957 +I00 +sS'value' +p10958 +S'text' +p10959 +ssS'entity_type' +p10960 +(dp10961 +S'editable' +p10962 +I00 +sS'value' +p10963 +S'ProjectUserConnection' +p10964 +ssS'editable' +p10965 +(dp10966 +S'editable' +p10967 +I00 +sS'value' +p10968 +I01 +ssS'unique' +p10969 +(dp10970 +S'editable' +p10971 +I00 +sS'value' +p10972 +I00 +ssS'properties' +p10973 +(dp10974 +S'default_value' +p10975 +(dp10976 +S'editable' +p10977 +I00 +sS'value' +p10978 +NssS'summary_default' +p10979 +(dp10980 +S'editable' +p10981 +I00 +sS'value' +p10982 +S'none' +p10983 +sssS'description' +p10984 +(dp10985 +S'editable' +p10986 +I01 +sS'value' +p10987 +g47 +sssS'id' +p10988 +(dp10989 +S'mandatory' +p10990 +(dp10991 +S'editable' +p10992 +I00 +sS'value' +p10993 +I01 +ssS'name' +p10994 +(dp10995 +S'editable' +p10996 +I01 +sS'value' +p10997 +S'Id' +p10998 +ssS'data_type' +p10999 +(dp11000 +S'editable' +p11001 +I00 +sS'value' +p11002 +S'number' +p11003 +ssS'entity_type' +p11004 +(dp11005 +S'editable' +p11006 +I00 +sS'value' +p11007 +S'ProjectUserConnection' +p11008 +ssS'editable' +p11009 +(dp11010 +S'editable' +p11011 +I00 +sS'value' +p11012 +I00 +ssS'unique' +p11013 +(dp11014 +S'editable' +p11015 +I00 +sS'value' +p11016 +I00 +ssS'properties' +p11017 +(dp11018 +S'default_value' +p11019 +(dp11020 +S'editable' +p11021 +I00 +sS'value' +p11022 +NssS'summary_default' +p11023 +(dp11024 +S'editable' +p11025 +I00 +sS'value' +p11026 +S'none' +p11027 +sssS'description' +p11028 +(dp11029 +S'editable' +p11030 +I01 +sS'value' +p11031 +g47 +sssS'user' +p11032 +(dp11033 +S'mandatory' +p11034 +(dp11035 +S'editable' +p11036 +I00 +sS'value' +p11037 +I00 +ssS'name' +p11038 +(dp11039 +S'editable' +p11040 +I01 +sS'value' +p11041 +S'Person' +p11042 +ssS'data_type' +p11043 +(dp11044 +S'editable' +p11045 +I00 +sS'value' +p11046 +S'entity' +p11047 +ssS'entity_type' +p11048 +(dp11049 +S'editable' +p11050 +I00 +sS'value' +p11051 +S'ProjectUserConnection' +p11052 +ssS'editable' +p11053 +(dp11054 +S'editable' +p11055 +I00 +sS'value' +p11056 +I00 +ssS'unique' +p11057 +(dp11058 +S'editable' +p11059 +I00 +sS'value' +p11060 +I00 +ssS'properties' +p11061 +(dp11062 +S'default_value' +p11063 +(dp11064 +S'editable' +p11065 +I00 +sS'value' +p11066 +NssS'summary_default' +p11067 +(dp11068 +S'editable' +p11069 +I00 +sS'value' +p11070 +S'none' +p11071 +ssS'valid_types' +p11072 +(dp11073 +S'editable' +p11074 +I00 +sS'value' +p11075 +(lp11076 +S'HumanUser' +p11077 +asssS'description' +p11078 +(dp11079 +S'editable' +p11080 +I01 +sS'value' +p11081 +g47 +ssssS'MocapTakeRangeShotConnection' +p11082 +(dp11083 +S'mocap_take_range' +p11084 +(dp11085 +S'mandatory' +p11086 +(dp11087 +S'editable' +p11088 +I00 +sS'value' +p11089 +I00 +ssS'name' +p11090 +(dp11091 +S'editable' +p11092 +I01 +sS'value' +p11093 +S'Mocap Take Range' +p11094 +ssS'data_type' +p11095 +(dp11096 +S'editable' +p11097 +I00 +sS'value' +p11098 +S'entity' +p11099 +ssS'entity_type' +p11100 +(dp11101 +S'editable' +p11102 +I00 +sS'value' +p11103 +S'MocapTakeRangeShotConnection' +p11104 +ssS'editable' +p11105 +(dp11106 +S'editable' +p11107 +I00 +sS'value' +p11108 +I00 +ssS'unique' +p11109 +(dp11110 +S'editable' +p11111 +I00 +sS'value' +p11112 +I00 +ssS'properties' +p11113 +(dp11114 +S'default_value' +p11115 +(dp11116 +S'editable' +p11117 +I00 +sS'value' +p11118 +NssS'summary_default' +p11119 +(dp11120 +S'editable' +p11121 +I00 +sS'value' +p11122 +S'none' +p11123 +ssS'valid_types' +p11124 +(dp11125 +S'editable' +p11126 +I00 +sS'value' +p11127 +(lp11128 +S'MocapTakeRange' +p11129 +asssS'description' +p11130 +(dp11131 +S'editable' +p11132 +I01 +sS'value' +p11133 +g47 +sssS'cached_display_name' +p11134 +(dp11135 +S'mandatory' +p11136 +(dp11137 +S'editable' +p11138 +I00 +sS'value' +p11139 +I00 +ssS'name' +p11140 +(dp11141 +S'editable' +p11142 +I01 +sS'value' +p11143 +S'Cached Display Name' +p11144 +ssS'data_type' +p11145 +(dp11146 +S'editable' +p11147 +I00 +sS'value' +p11148 +S'text' +p11149 +ssS'entity_type' +p11150 +(dp11151 +S'editable' +p11152 +I00 +sS'value' +p11153 +S'MocapTakeRangeShotConnection' +p11154 +ssS'editable' +p11155 +(dp11156 +S'editable' +p11157 +I00 +sS'value' +p11158 +I01 +ssS'unique' +p11159 +(dp11160 +S'editable' +p11161 +I00 +sS'value' +p11162 +I00 +ssS'properties' +p11163 +(dp11164 +S'default_value' +p11165 +(dp11166 +S'editable' +p11167 +I00 +sS'value' +p11168 +NssS'summary_default' +p11169 +(dp11170 +S'editable' +p11171 +I00 +sS'value' +p11172 +S'none' +p11173 +sssS'description' +p11174 +(dp11175 +S'editable' +p11176 +I01 +sS'value' +p11177 +g47 +sssS'shot' +p11178 +(dp11179 +S'mandatory' +p11180 +(dp11181 +S'editable' +p11182 +I00 +sS'value' +p11183 +I00 +ssS'name' +p11184 +(dp11185 +S'editable' +p11186 +I01 +sS'value' +p11187 +S'Shot' +p11188 +ssS'data_type' +p11189 +(dp11190 +S'editable' +p11191 +I00 +sS'value' +p11192 +S'entity' +p11193 +ssS'entity_type' +p11194 +(dp11195 +S'editable' +p11196 +I00 +sS'value' +p11197 +S'MocapTakeRangeShotConnection' +p11198 +ssS'editable' +p11199 +(dp11200 +S'editable' +p11201 +I00 +sS'value' +p11202 +I00 +ssS'unique' +p11203 +(dp11204 +S'editable' +p11205 +I00 +sS'value' +p11206 +I00 +ssS'properties' +p11207 +(dp11208 +S'default_value' +p11209 +(dp11210 +S'editable' +p11211 +I00 +sS'value' +p11212 +NssS'summary_default' +p11213 +(dp11214 +S'editable' +p11215 +I00 +sS'value' +p11216 +S'none' +p11217 +ssS'valid_types' +p11218 +(dp11219 +S'editable' +p11220 +I00 +sS'value' +p11221 +(lp11222 +S'Shot' +p11223 +asssS'description' +p11224 +(dp11225 +S'editable' +p11226 +I01 +sS'value' +p11227 +g47 +sssS'id' +p11228 +(dp11229 +S'mandatory' +p11230 +(dp11231 +S'editable' +p11232 +I00 +sS'value' +p11233 +I01 +ssS'name' +p11234 +(dp11235 +S'editable' +p11236 +I01 +sS'value' +p11237 +S'Id' +p11238 +ssS'data_type' +p11239 +(dp11240 +S'editable' +p11241 +I00 +sS'value' +p11242 +S'number' +p11243 +ssS'entity_type' +p11244 +(dp11245 +S'editable' +p11246 +I00 +sS'value' +p11247 +S'MocapTakeRangeShotConnection' +p11248 +ssS'editable' +p11249 +(dp11250 +S'editable' +p11251 +I00 +sS'value' +p11252 +I00 +ssS'unique' +p11253 +(dp11254 +S'editable' +p11255 +I00 +sS'value' +p11256 +I00 +ssS'properties' +p11257 +(dp11258 +S'default_value' +p11259 +(dp11260 +S'editable' +p11261 +I00 +sS'value' +p11262 +NssS'summary_default' +p11263 +(dp11264 +S'editable' +p11265 +I00 +sS'value' +p11266 +S'none' +p11267 +sssS'description' +p11268 +(dp11269 +S'editable' +p11270 +I01 +sS'value' +p11271 +g47 +ssssS'PublishedFileDependency' +p11272 +(dp11273 +S'cached_display_name' +p11274 +(dp11275 +S'mandatory' +p11276 +(dp11277 +S'editable' +p11278 +I00 +sS'value' +p11279 +I00 +ssS'name' +p11280 +(dp11281 +S'editable' +p11282 +I01 +sS'value' +p11283 +S'Cached Display Name' +p11284 +ssS'data_type' +p11285 +(dp11286 +S'editable' +p11287 +I00 +sS'value' +p11288 +S'text' +p11289 +ssS'entity_type' +p11290 +(dp11291 +S'editable' +p11292 +I00 +sS'value' +p11293 +S'PublishedFileDependency' +p11294 +ssS'editable' +p11295 +(dp11296 +S'editable' +p11297 +I00 +sS'value' +p11298 +I01 +ssS'unique' +p11299 +(dp11300 +S'editable' +p11301 +I00 +sS'value' +p11302 +I00 +ssS'properties' +p11303 +(dp11304 +S'default_value' +p11305 +(dp11306 +S'editable' +p11307 +I00 +sS'value' +p11308 +NssS'summary_default' +p11309 +(dp11310 +S'editable' +p11311 +I00 +sS'value' +p11312 +S'none' +p11313 +sssS'description' +p11314 +(dp11315 +S'editable' +p11316 +I01 +sS'value' +p11317 +g47 +sssS'dependent_published_file' +p11318 +(dp11319 +S'mandatory' +p11320 +(dp11321 +S'editable' +p11322 +I00 +sS'value' +p11323 +I00 +ssS'name' +p11324 +(dp11325 +S'editable' +p11326 +I01 +sS'value' +p11327 +S'Dependent Published File' +p11328 +ssS'data_type' +p11329 +(dp11330 +S'editable' +p11331 +I00 +sS'value' +p11332 +S'entity' +p11333 +ssS'entity_type' +p11334 +(dp11335 +S'editable' +p11336 +I00 +sS'value' +p11337 +S'PublishedFileDependency' +p11338 +ssS'editable' +p11339 +(dp11340 +S'editable' +p11341 +I00 +sS'value' +p11342 +I01 +ssS'unique' +p11343 +(dp11344 +S'editable' +p11345 +I00 +sS'value' +p11346 +I00 +ssS'properties' +p11347 +(dp11348 +S'default_value' +p11349 +(dp11350 +S'editable' +p11351 +I00 +sS'value' +p11352 +NssS'summary_default' +p11353 +(dp11354 +S'editable' +p11355 +I00 +sS'value' +p11356 +S'none' +p11357 +ssS'valid_types' +p11358 +(dp11359 +S'editable' +p11360 +I00 +sS'value' +p11361 +(lp11362 +S'PublishedFile' +p11363 +asssS'description' +p11364 +(dp11365 +S'editable' +p11366 +I01 +sS'value' +p11367 +g47 +sssS'id' +p11368 +(dp11369 +S'mandatory' +p11370 +(dp11371 +S'editable' +p11372 +I00 +sS'value' +p11373 +I00 +ssS'name' +p11374 +(dp11375 +S'editable' +p11376 +I01 +sS'value' +p11377 +S'Id' +p11378 +ssS'data_type' +p11379 +(dp11380 +S'editable' +p11381 +I00 +sS'value' +p11382 +S'number' +p11383 +ssS'entity_type' +p11384 +(dp11385 +S'editable' +p11386 +I00 +sS'value' +p11387 +S'PublishedFileDependency' +p11388 +ssS'editable' +p11389 +(dp11390 +S'editable' +p11391 +I00 +sS'value' +p11392 +I00 +ssS'unique' +p11393 +(dp11394 +S'editable' +p11395 +I00 +sS'value' +p11396 +I00 +ssS'properties' +p11397 +(dp11398 +S'default_value' +p11399 +(dp11400 +S'editable' +p11401 +I00 +sS'value' +p11402 +NssS'summary_default' +p11403 +(dp11404 +S'editable' +p11405 +I00 +sS'value' +p11406 +S'none' +p11407 +sssS'description' +p11408 +(dp11409 +S'editable' +p11410 +I01 +sS'value' +p11411 +g47 +sssS'published_file' +p11412 +(dp11413 +S'mandatory' +p11414 +(dp11415 +S'editable' +p11416 +I00 +sS'value' +p11417 +I00 +ssS'name' +p11418 +(dp11419 +S'editable' +p11420 +I01 +sS'value' +p11421 +S'Published File' +p11422 +ssS'data_type' +p11423 +(dp11424 +S'editable' +p11425 +I00 +sS'value' +p11426 +S'entity' +p11427 +ssS'entity_type' +p11428 +(dp11429 +S'editable' +p11430 +I00 +sS'value' +p11431 +S'PublishedFileDependency' +p11432 +ssS'editable' +p11433 +(dp11434 +S'editable' +p11435 +I00 +sS'value' +p11436 +I01 +ssS'unique' +p11437 +(dp11438 +S'editable' +p11439 +I00 +sS'value' +p11440 +I00 +ssS'properties' +p11441 +(dp11442 +S'default_value' +p11443 +(dp11444 +S'editable' +p11445 +I00 +sS'value' +p11446 +NssS'summary_default' +p11447 +(dp11448 +S'editable' +p11449 +I00 +sS'value' +p11450 +S'none' +p11451 +ssS'valid_types' +p11452 +(dp11453 +S'editable' +p11454 +I00 +sS'value' +p11455 +(lp11456 +S'PublishedFile' +p11457 +asssS'description' +p11458 +(dp11459 +S'editable' +p11460 +I01 +sS'value' +p11461 +g47 +ssssS'Step' +p11462 +(dp11463 +S'code' +p11464 +(dp11465 +S'mandatory' +p11466 +(dp11467 +S'editable' +p11468 +I00 +sS'value' +p11469 +I01 +ssS'name' +p11470 +(dp11471 +S'editable' +p11472 +I01 +sS'value' +p11473 +S'Pipeline Step' +p11474 +ssS'data_type' +p11475 +(dp11476 +S'editable' +p11477 +I00 +sS'value' +p11478 +S'text' +p11479 +ssS'entity_type' +p11480 +(dp11481 +S'editable' +p11482 +I00 +sS'value' +p11483 +S'Step' +p11484 +ssS'editable' +p11485 +(dp11486 +S'editable' +p11487 +I00 +sS'value' +p11488 +I01 +ssS'unique' +p11489 +(dp11490 +S'editable' +p11491 +I00 +sS'value' +p11492 +I00 +ssS'properties' +p11493 +(dp11494 +S'default_value' +p11495 +(dp11496 +S'editable' +p11497 +I00 +sS'value' +p11498 +NssS'summary_default' +p11499 +(dp11500 +S'editable' +p11501 +I01 +sS'value' +p11502 +S'none' +p11503 +sssS'description' +p11504 +(dp11505 +S'editable' +p11506 +I01 +sS'value' +p11507 +g47 +sssS'description' +p11508 +(dp11509 +S'mandatory' +p11510 +(dp11511 +S'editable' +p11512 +I00 +sS'value' +p11513 +I00 +ssS'name' +p11514 +(dp11515 +S'editable' +p11516 +I01 +sS'value' +p11517 +S'Description' +p11518 +ssS'data_type' +p11519 +(dp11520 +S'editable' +p11521 +I00 +sS'value' +p11522 +S'text' +p11523 +ssS'entity_type' +p11524 +(dp11525 +S'editable' +p11526 +I00 +sS'value' +p11527 +S'Step' +p11528 +ssS'editable' +p11529 +(dp11530 +S'editable' +p11531 +I00 +sS'value' +p11532 +I01 +ssS'unique' +p11533 +(dp11534 +S'editable' +p11535 +I00 +sS'value' +p11536 +I00 +ssS'properties' +p11537 +(dp11538 +S'default_value' +p11539 +(dp11540 +S'editable' +p11541 +I00 +sS'value' +p11542 +NssS'summary_default' +p11543 +(dp11544 +S'editable' +p11545 +I01 +sS'value' +p11546 +S'none' +p11547 +sssS'description' +p11548 +(dp11549 +S'editable' +p11550 +I01 +sS'value' +p11551 +g47 +sssS'short_name' +p11552 +(dp11553 +S'mandatory' +p11554 +(dp11555 +S'editable' +p11556 +I00 +sS'value' +p11557 +I00 +ssS'name' +p11558 +(dp11559 +S'editable' +p11560 +I01 +sS'value' +p11561 +S'Short Code' +p11562 +ssS'data_type' +p11563 +(dp11564 +S'editable' +p11565 +I00 +sS'value' +p11566 +S'text' +p11567 +ssS'entity_type' +p11568 +(dp11569 +S'editable' +p11570 +I00 +sS'value' +p11571 +S'Step' +p11572 +ssS'editable' +p11573 +(dp11574 +S'editable' +p11575 +I00 +sS'value' +p11576 +I01 +ssS'unique' +p11577 +(dp11578 +S'editable' +p11579 +I00 +sS'value' +p11580 +I00 +ssS'properties' +p11581 +(dp11582 +S'default_value' +p11583 +(dp11584 +S'editable' +p11585 +I00 +sS'value' +p11586 +NssS'summary_default' +p11587 +(dp11588 +S'editable' +p11589 +I01 +sS'value' +p11590 +S'none' +p11591 +sssS'description' +p11592 +(dp11593 +S'editable' +p11594 +I01 +sS'value' +p11595 +g47 +sssS'list_order' +p11596 +(dp11597 +S'mandatory' +p11598 +(dp11599 +S'editable' +p11600 +I00 +sS'value' +p11601 +I00 +ssS'name' +p11602 +(dp11603 +S'editable' +p11604 +I01 +sS'value' +p11605 +S'Order' +p11606 +ssS'data_type' +p11607 +(dp11608 +S'editable' +p11609 +I00 +sS'value' +p11610 +S'number' +p11611 +ssS'entity_type' +p11612 +(dp11613 +S'editable' +p11614 +I00 +sS'value' +p11615 +S'Step' +p11616 +ssS'editable' +p11617 +(dp11618 +S'editable' +p11619 +I00 +sS'value' +p11620 +I01 +ssS'unique' +p11621 +(dp11622 +S'editable' +p11623 +I00 +sS'value' +p11624 +I00 +ssS'properties' +p11625 +(dp11626 +S'default_value' +p11627 +(dp11628 +S'editable' +p11629 +I00 +sS'value' +p11630 +NssS'summary_default' +p11631 +(dp11632 +S'editable' +p11633 +I01 +sS'value' +p11634 +S'none' +p11635 +sssS'description' +p11636 +(dp11637 +S'editable' +p11638 +I01 +sS'value' +p11639 +g47 +sssS'color' +p11640 +(dp11641 +S'mandatory' +p11642 +(dp11643 +S'editable' +p11644 +I00 +sS'value' +p11645 +I00 +ssS'name' +p11646 +(dp11647 +S'editable' +p11648 +I01 +sS'value' +p11649 +S'Color' +p11650 +ssS'data_type' +p11651 +(dp11652 +S'editable' +p11653 +I00 +sS'value' +p11654 +S'color' +p11655 +ssS'entity_type' +p11656 +(dp11657 +S'editable' +p11658 +I00 +sS'value' +p11659 +S'Step' +p11660 +ssS'editable' +p11661 +(dp11662 +S'editable' +p11663 +I00 +sS'value' +p11664 +I01 +ssS'unique' +p11665 +(dp11666 +S'editable' +p11667 +I00 +sS'value' +p11668 +I00 +ssS'properties' +p11669 +(dp11670 +S'default_value' +p11671 +(dp11672 +S'editable' +p11673 +I00 +sS'value' +p11674 +NssS'summary_default' +p11675 +(dp11676 +S'editable' +p11677 +I01 +sS'value' +p11678 +S'none' +p11679 +sssS'description' +p11680 +(dp11681 +S'editable' +p11682 +I01 +sS'value' +p11683 +g47 +sssS'created_at' +p11684 +(dp11685 +S'mandatory' +p11686 +(dp11687 +S'editable' +p11688 +I00 +sS'value' +p11689 +I00 +ssS'name' +p11690 +(dp11691 +S'editable' +p11692 +I01 +sS'value' +p11693 +S'Date Created' +p11694 +ssS'data_type' +p11695 +(dp11696 +S'editable' +p11697 +I00 +sS'value' +p11698 +S'date_time' +p11699 +ssS'entity_type' +p11700 +(dp11701 +S'editable' +p11702 +I00 +sS'value' +p11703 +S'Step' +p11704 +ssS'editable' +p11705 +(dp11706 +S'editable' +p11707 +I00 +sS'value' +p11708 +I00 +ssS'unique' +p11709 +(dp11710 +S'editable' +p11711 +I00 +sS'value' +p11712 +I00 +ssS'properties' +p11713 +(dp11714 +S'default_value' +p11715 +(dp11716 +S'editable' +p11717 +I00 +sS'value' +p11718 +NssS'summary_default' +p11719 +(dp11720 +S'editable' +p11721 +I01 +sS'value' +p11722 +S'none' +p11723 +sssS'description' +p11724 +(dp11725 +S'editable' +p11726 +I01 +sS'value' +p11727 +g47 +sssS'entity_type' +p11728 +(dp11729 +S'mandatory' +p11730 +(dp11731 +S'editable' +p11732 +I00 +sS'value' +p11733 +I00 +ssS'name' +p11734 +(dp11735 +S'editable' +p11736 +I01 +sS'value' +p11737 +S'Entity Type' +p11738 +ssS'data_type' +p11739 +(dp11740 +S'editable' +p11741 +I00 +sS'value' +p11742 +S'entity_type' +p11743 +ssS'entity_type' +p11744 +(dp11745 +S'editable' +p11746 +I00 +sS'value' +p11747 +S'Step' +p11748 +ssS'editable' +p11749 +(dp11750 +S'editable' +p11751 +I00 +sS'value' +p11752 +I01 +ssS'unique' +p11753 +(dp11754 +S'editable' +p11755 +I00 +sS'value' +p11756 +I00 +ssS'properties' +p11757 +(dp11758 +S'default_value' +p11759 +(dp11760 +S'editable' +p11761 +I00 +sS'value' +p11762 +NssS'summary_default' +p11763 +(dp11764 +S'editable' +p11765 +I01 +sS'value' +p11766 +S'none' +p11767 +sssS'description' +p11768 +(dp11769 +S'editable' +p11770 +I01 +sS'value' +p11771 +g47 +sssS'updated_at' +p11772 +(dp11773 +S'mandatory' +p11774 +(dp11775 +S'editable' +p11776 +I00 +sS'value' +p11777 +I00 +ssS'name' +p11778 +(dp11779 +S'editable' +p11780 +I01 +sS'value' +p11781 +S'Date Updated' +p11782 +ssS'data_type' +p11783 +(dp11784 +S'editable' +p11785 +I00 +sS'value' +p11786 +S'date_time' +p11787 +ssS'entity_type' +p11788 +(dp11789 +S'editable' +p11790 +I00 +sS'value' +p11791 +S'Step' +p11792 +ssS'editable' +p11793 +(dp11794 +S'editable' +p11795 +I00 +sS'value' +p11796 +I00 +ssS'unique' +p11797 +(dp11798 +S'editable' +p11799 +I00 +sS'value' +p11800 +I00 +ssS'properties' +p11801 +(dp11802 +S'default_value' +p11803 +(dp11804 +S'editable' +p11805 +I00 +sS'value' +p11806 +NssS'summary_default' +p11807 +(dp11808 +S'editable' +p11809 +I01 +sS'value' +p11810 +S'none' +p11811 +sssS'description' +p11812 +(dp11813 +S'editable' +p11814 +I01 +sS'value' +p11815 +g47 +sssS'created_by' +p11816 +(dp11817 +S'mandatory' +p11818 +(dp11819 +S'editable' +p11820 +I00 +sS'value' +p11821 +I00 +ssS'name' +p11822 +(dp11823 +S'editable' +p11824 +I01 +sS'value' +p11825 +S'Created by' +p11826 +ssS'data_type' +p11827 +(dp11828 +S'editable' +p11829 +I00 +sS'value' +p11830 +S'entity' +p11831 +ssS'entity_type' +p11832 +(dp11833 +S'editable' +p11834 +I00 +sS'value' +p11835 +S'Step' +p11836 +ssS'editable' +p11837 +(dp11838 +S'editable' +p11839 +I00 +sS'value' +p11840 +I00 +ssS'unique' +p11841 +(dp11842 +S'editable' +p11843 +I00 +sS'value' +p11844 +I00 +ssS'properties' +p11845 +(dp11846 +S'default_value' +p11847 +(dp11848 +S'editable' +p11849 +I00 +sS'value' +p11850 +NssS'summary_default' +p11851 +(dp11852 +S'editable' +p11853 +I01 +sS'value' +p11854 +S'none' +p11855 +ssS'valid_types' +p11856 +(dp11857 +S'editable' +p11858 +I01 +sS'value' +p11859 +(lp11860 +S'HumanUser' +p11861 +aS'ApiUser' +p11862 +asssS'description' +p11863 +(dp11864 +S'editable' +p11865 +I01 +sS'value' +p11866 +g47 +sssS'cached_display_name' +p11867 +(dp11868 +S'mandatory' +p11869 +(dp11870 +S'editable' +p11871 +I00 +sS'value' +p11872 +I00 +ssS'name' +p11873 +(dp11874 +S'editable' +p11875 +I01 +sS'value' +p11876 +S'Cached Display Name' +p11877 +ssS'data_type' +p11878 +(dp11879 +S'editable' +p11880 +I00 +sS'value' +p11881 +S'text' +p11882 +ssS'entity_type' +p11883 +(dp11884 +S'editable' +p11885 +I00 +sS'value' +p11886 +S'Step' +p11887 +ssS'editable' +p11888 +(dp11889 +S'editable' +p11890 +I00 +sS'value' +p11891 +I01 +ssS'unique' +p11892 +(dp11893 +S'editable' +p11894 +I00 +sS'value' +p11895 +I00 +ssS'properties' +p11896 +(dp11897 +S'default_value' +p11898 +(dp11899 +S'editable' +p11900 +I00 +sS'value' +p11901 +NssS'summary_default' +p11902 +(dp11903 +S'editable' +p11904 +I00 +sS'value' +p11905 +S'none' +p11906 +sssS'description' +p11907 +(dp11908 +S'editable' +p11909 +I01 +sS'value' +p11910 +g47 +sssS'id' +p11911 +(dp11912 +S'mandatory' +p11913 +(dp11914 +S'editable' +p11915 +I00 +sS'value' +p11916 +I00 +ssS'name' +p11917 +(dp11918 +S'editable' +p11919 +I01 +sS'value' +p11920 +S'Id' +p11921 +ssS'data_type' +p11922 +(dp11923 +S'editable' +p11924 +I00 +sS'value' +p11925 +S'number' +p11926 +ssS'entity_type' +p11927 +(dp11928 +S'editable' +p11929 +I00 +sS'value' +p11930 +S'Step' +p11931 +ssS'editable' +p11932 +(dp11933 +S'editable' +p11934 +I00 +sS'value' +p11935 +I00 +ssS'unique' +p11936 +(dp11937 +S'editable' +p11938 +I00 +sS'value' +p11939 +I00 +ssS'properties' +p11940 +(dp11941 +S'default_value' +p11942 +(dp11943 +S'editable' +p11944 +I00 +sS'value' +p11945 +NssS'summary_default' +p11946 +(dp11947 +S'editable' +p11948 +I00 +sS'value' +p11949 +S'none' +p11950 +sssS'description' +p11951 +(dp11952 +S'editable' +p11953 +I01 +sS'value' +p11954 +g47 +sssS'updated_by' +p11955 +(dp11956 +S'mandatory' +p11957 +(dp11958 +S'editable' +p11959 +I00 +sS'value' +p11960 +I00 +ssS'name' +p11961 +(dp11962 +S'editable' +p11963 +I01 +sS'value' +p11964 +S'Updated by' +p11965 +ssS'data_type' +p11966 +(dp11967 +S'editable' +p11968 +I00 +sS'value' +p11969 +S'entity' +p11970 +ssS'entity_type' +p11971 +(dp11972 +S'editable' +p11973 +I00 +sS'value' +p11974 +S'Step' +p11975 +ssS'editable' +p11976 +(dp11977 +S'editable' +p11978 +I00 +sS'value' +p11979 +I00 +ssS'unique' +p11980 +(dp11981 +S'editable' +p11982 +I00 +sS'value' +p11983 +I00 +ssS'properties' +p11984 +(dp11985 +S'default_value' +p11986 +(dp11987 +S'editable' +p11988 +I00 +sS'value' +p11989 +NssS'summary_default' +p11990 +(dp11991 +S'editable' +p11992 +I01 +sS'value' +p11993 +S'none' +p11994 +ssS'valid_types' +p11995 +(dp11996 +S'editable' +p11997 +I01 +sS'value' +p11998 +(lp11999 +S'HumanUser' +p12000 +aS'ApiUser' +p12001 +asssS'description' +p12002 +(dp12003 +S'editable' +p12004 +I01 +sS'value' +p12005 +g47 +ssssS'AssetLibrary' +p12006 +(dp12007 +S'open_notes_count' +p12008 +(dp12009 +S'mandatory' +p12010 +(dp12011 +S'editable' +p12012 +I00 +sS'value' +p12013 +I00 +ssS'name' +p12014 +(dp12015 +S'editable' +p12016 +I01 +sS'value' +p12017 +S'Open Notes Count' +p12018 +ssS'data_type' +p12019 +(dp12020 +S'editable' +p12021 +I00 +sS'value' +p12022 +S'text' +p12023 +ssS'entity_type' +p12024 +(dp12025 +S'editable' +p12026 +I00 +sS'value' +p12027 +S'AssetLibrary' +p12028 +ssS'editable' +p12029 +(dp12030 +S'editable' +p12031 +I00 +sS'value' +p12032 +I00 +ssS'unique' +p12033 +(dp12034 +S'editable' +p12035 +I00 +sS'value' +p12036 +I00 +ssS'properties' +p12037 +(dp12038 +S'default_value' +p12039 +(dp12040 +S'editable' +p12041 +I00 +sS'value' +p12042 +NssS'summary_default' +p12043 +(dp12044 +S'editable' +p12045 +I01 +sS'value' +p12046 +S'none' +p12047 +sssS'description' +p12048 +(dp12049 +S'editable' +p12050 +I01 +sS'value' +p12051 +g47 +sssS'code' +p12052 +(dp12053 +S'mandatory' +p12054 +(dp12055 +S'editable' +p12056 +I00 +sS'value' +p12057 +I01 +ssS'name' +p12058 +(dp12059 +S'editable' +p12060 +I01 +sS'value' +p12061 +S'Asset Library Name' +p12062 +ssS'data_type' +p12063 +(dp12064 +S'editable' +p12065 +I00 +sS'value' +p12066 +S'text' +p12067 +ssS'entity_type' +p12068 +(dp12069 +S'editable' +p12070 +I00 +sS'value' +p12071 +S'AssetLibrary' +p12072 +ssS'editable' +p12073 +(dp12074 +S'editable' +p12075 +I00 +sS'value' +p12076 +I01 +ssS'unique' +p12077 +(dp12078 +S'editable' +p12079 +I00 +sS'value' +p12080 +I00 +ssS'properties' +p12081 +(dp12082 +S'default_value' +p12083 +(dp12084 +S'editable' +p12085 +I00 +sS'value' +p12086 +NssS'summary_default' +p12087 +(dp12088 +S'editable' +p12089 +I01 +sS'value' +p12090 +S'none' +p12091 +sssS'description' +p12092 +(dp12093 +S'editable' +p12094 +I01 +sS'value' +p12095 +g47 +sssS'open_notes' +p12096 +(dp12097 +S'mandatory' +p12098 +(dp12099 +S'editable' +p12100 +I00 +sS'value' +p12101 +I00 +ssS'name' +p12102 +(dp12103 +S'editable' +p12104 +I01 +sS'value' +p12105 +S'Open Notes' +p12106 +ssS'data_type' +p12107 +(dp12108 +S'editable' +p12109 +I00 +sS'value' +p12110 +S'multi_entity' +p12111 +ssS'entity_type' +p12112 +(dp12113 +S'editable' +p12114 +I00 +sS'value' +p12115 +S'AssetLibrary' +p12116 +ssS'editable' +p12117 +(dp12118 +S'editable' +p12119 +I00 +sS'value' +p12120 +I00 +ssS'unique' +p12121 +(dp12122 +S'editable' +p12123 +I00 +sS'value' +p12124 +I00 +ssS'properties' +p12125 +(dp12126 +S'default_value' +p12127 +(dp12128 +S'editable' +p12129 +I00 +sS'value' +p12130 +NssS'summary_default' +p12131 +(dp12132 +S'editable' +p12133 +I01 +sS'value' +p12134 +S'none' +p12135 +ssS'valid_types' +p12136 +(dp12137 +S'editable' +p12138 +I01 +sS'value' +p12139 +(lp12140 +S'Note' +p12141 +asssS'description' +p12142 +(dp12143 +S'editable' +p12144 +I01 +sS'value' +p12145 +g47 +sssS'description' +p12146 +(dp12147 +S'mandatory' +p12148 +(dp12149 +S'editable' +p12150 +I00 +sS'value' +p12151 +I00 +ssS'name' +p12152 +(dp12153 +S'editable' +p12154 +I01 +sS'value' +p12155 +S'Description' +p12156 +ssS'data_type' +p12157 +(dp12158 +S'editable' +p12159 +I00 +sS'value' +p12160 +S'text' +p12161 +ssS'entity_type' +p12162 +(dp12163 +S'editable' +p12164 +I00 +sS'value' +p12165 +S'AssetLibrary' +p12166 +ssS'editable' +p12167 +(dp12168 +S'editable' +p12169 +I00 +sS'value' +p12170 +I01 +ssS'unique' +p12171 +(dp12172 +S'editable' +p12173 +I00 +sS'value' +p12174 +I00 +ssS'properties' +p12175 +(dp12176 +S'default_value' +p12177 +(dp12178 +S'editable' +p12179 +I00 +sS'value' +p12180 +NssS'summary_default' +p12181 +(dp12182 +S'editable' +p12183 +I01 +sS'value' +p12184 +S'none' +p12185 +sssS'description' +p12186 +(dp12187 +S'editable' +p12188 +I01 +sS'value' +p12189 +g47 +sssS'created_at' +p12190 +(dp12191 +S'mandatory' +p12192 +(dp12193 +S'editable' +p12194 +I00 +sS'value' +p12195 +I00 +ssS'name' +p12196 +(dp12197 +S'editable' +p12198 +I01 +sS'value' +p12199 +S'Date Created' +p12200 +ssS'data_type' +p12201 +(dp12202 +S'editable' +p12203 +I00 +sS'value' +p12204 +S'date_time' +p12205 +ssS'entity_type' +p12206 +(dp12207 +S'editable' +p12208 +I00 +sS'value' +p12209 +S'AssetLibrary' +p12210 +ssS'editable' +p12211 +(dp12212 +S'editable' +p12213 +I00 +sS'value' +p12214 +I00 +ssS'unique' +p12215 +(dp12216 +S'editable' +p12217 +I00 +sS'value' +p12218 +I00 +ssS'properties' +p12219 +(dp12220 +S'default_value' +p12221 +(dp12222 +S'editable' +p12223 +I00 +sS'value' +p12224 +NssS'summary_default' +p12225 +(dp12226 +S'editable' +p12227 +I01 +sS'value' +p12228 +S'none' +p12229 +sssS'description' +p12230 +(dp12231 +S'editable' +p12232 +I01 +sS'value' +p12233 +g47 +sssS'updated_at' +p12234 +(dp12235 +S'mandatory' +p12236 +(dp12237 +S'editable' +p12238 +I00 +sS'value' +p12239 +I00 +ssS'name' +p12240 +(dp12241 +S'editable' +p12242 +I01 +sS'value' +p12243 +S'Date Updated' +p12244 +ssS'data_type' +p12245 +(dp12246 +S'editable' +p12247 +I00 +sS'value' +p12248 +S'date_time' +p12249 +ssS'entity_type' +p12250 +(dp12251 +S'editable' +p12252 +I00 +sS'value' +p12253 +S'AssetLibrary' +p12254 +ssS'editable' +p12255 +(dp12256 +S'editable' +p12257 +I00 +sS'value' +p12258 +I00 +ssS'unique' +p12259 +(dp12260 +S'editable' +p12261 +I00 +sS'value' +p12262 +I00 +ssS'properties' +p12263 +(dp12264 +S'default_value' +p12265 +(dp12266 +S'editable' +p12267 +I00 +sS'value' +p12268 +NssS'summary_default' +p12269 +(dp12270 +S'editable' +p12271 +I01 +sS'value' +p12272 +S'none' +p12273 +sssS'description' +p12274 +(dp12275 +S'editable' +p12276 +I01 +sS'value' +p12277 +g47 +sssS'created_by' +p12278 +(dp12279 +S'mandatory' +p12280 +(dp12281 +S'editable' +p12282 +I00 +sS'value' +p12283 +I00 +ssS'name' +p12284 +(dp12285 +S'editable' +p12286 +I01 +sS'value' +p12287 +S'Created by' +p12288 +ssS'data_type' +p12289 +(dp12290 +S'editable' +p12291 +I00 +sS'value' +p12292 +S'entity' +p12293 +ssS'entity_type' +p12294 +(dp12295 +S'editable' +p12296 +I00 +sS'value' +p12297 +S'AssetLibrary' +p12298 +ssS'editable' +p12299 +(dp12300 +S'editable' +p12301 +I00 +sS'value' +p12302 +I00 +ssS'unique' +p12303 +(dp12304 +S'editable' +p12305 +I00 +sS'value' +p12306 +I00 +ssS'properties' +p12307 +(dp12308 +S'default_value' +p12309 +(dp12310 +S'editable' +p12311 +I00 +sS'value' +p12312 +NssS'summary_default' +p12313 +(dp12314 +S'editable' +p12315 +I01 +sS'value' +p12316 +S'none' +p12317 +ssS'valid_types' +p12318 +(dp12319 +S'editable' +p12320 +I01 +sS'value' +p12321 +(lp12322 +S'HumanUser' +p12323 +aS'ApiUser' +p12324 +asssS'description' +p12325 +(dp12326 +S'editable' +p12327 +I01 +sS'value' +p12328 +g47 +sssS'project' +p12329 +(dp12330 +S'mandatory' +p12331 +(dp12332 +S'editable' +p12333 +I00 +sS'value' +p12334 +I00 +ssS'name' +p12335 +(dp12336 +S'editable' +p12337 +I01 +sS'value' +p12338 +S'Project' +p12339 +ssS'data_type' +p12340 +(dp12341 +S'editable' +p12342 +I00 +sS'value' +p12343 +S'entity' +p12344 +ssS'entity_type' +p12345 +(dp12346 +S'editable' +p12347 +I00 +sS'value' +p12348 +S'AssetLibrary' +p12349 +ssS'editable' +p12350 +(dp12351 +S'editable' +p12352 +I00 +sS'value' +p12353 +I01 +ssS'unique' +p12354 +(dp12355 +S'editable' +p12356 +I00 +sS'value' +p12357 +I00 +ssS'properties' +p12358 +(dp12359 +S'default_value' +p12360 +(dp12361 +S'editable' +p12362 +I00 +sS'value' +p12363 +NssS'summary_default' +p12364 +(dp12365 +S'editable' +p12366 +I01 +sS'value' +p12367 +S'none' +p12368 +ssS'valid_types' +p12369 +(dp12370 +S'editable' +p12371 +I01 +sS'value' +p12372 +(lp12373 +S'Project' +p12374 +asssS'description' +p12375 +(dp12376 +S'editable' +p12377 +I01 +sS'value' +p12378 +g47 +sssS'filmstrip_image' +p12379 +(dp12380 +S'mandatory' +p12381 +(dp12382 +S'editable' +p12383 +I00 +sS'value' +p12384 +I00 +ssS'name' +p12385 +(dp12386 +S'editable' +p12387 +I01 +sS'value' +p12388 +S'Filmstrip Thumbnail' +p12389 +ssS'data_type' +p12390 +(dp12391 +S'editable' +p12392 +I00 +sS'value' +p12393 +S'image' +p12394 +ssS'entity_type' +p12395 +(dp12396 +S'editable' +p12397 +I00 +sS'value' +p12398 +S'AssetLibrary' +p12399 +ssS'editable' +p12400 +(dp12401 +S'editable' +p12402 +I00 +sS'value' +p12403 +I01 +ssS'unique' +p12404 +(dp12405 +S'editable' +p12406 +I00 +sS'value' +p12407 +I00 +ssS'properties' +p12408 +(dp12409 +S'default_value' +p12410 +(dp12411 +S'editable' +p12412 +I00 +sS'value' +p12413 +NssS'summary_default' +p12414 +(dp12415 +S'editable' +p12416 +I01 +sS'value' +p12417 +S'none' +p12418 +sssS'description' +p12419 +(dp12420 +S'editable' +p12421 +I01 +sS'value' +p12422 +g47 +sssS'sg_status_list' +p12423 +(dp12424 +S'mandatory' +p12425 +(dp12426 +S'editable' +p12427 +I00 +sS'value' +p12428 +I00 +ssS'name' +p12429 +(dp12430 +S'editable' +p12431 +I01 +sS'value' +p12432 +S'Status' +p12433 +ssS'data_type' +p12434 +(dp12435 +S'editable' +p12436 +I00 +sS'value' +p12437 +S'status_list' +p12438 +ssS'entity_type' +p12439 +(dp12440 +S'editable' +p12441 +I00 +sS'value' +p12442 +S'AssetLibrary' +p12443 +ssS'editable' +p12444 +(dp12445 +S'editable' +p12446 +I00 +sS'value' +p12447 +I01 +ssS'unique' +p12448 +(dp12449 +S'editable' +p12450 +I00 +sS'value' +p12451 +I00 +ssS'properties' +p12452 +(dp12453 +S'default_value' +p12454 +(dp12455 +S'editable' +p12456 +I01 +sS'value' +p12457 +S'wtg' +p12458 +ssS'valid_values' +p12459 +(dp12460 +S'editable' +p12461 +I01 +sS'value' +p12462 +(lp12463 +S'cmpt' +p12464 +aS'ip' +p12465 +aS'wtg' +p12466 +assS'summary_default' +p12467 +(dp12468 +S'editable' +p12469 +I01 +sS'value' +p12470 +S'none' +p12471 +sssS'description' +p12472 +(dp12473 +S'editable' +p12474 +I01 +sS'value' +p12475 +g47 +sssS'notes' +p12476 +(dp12477 +S'mandatory' +p12478 +(dp12479 +S'editable' +p12480 +I00 +sS'value' +p12481 +I00 +ssS'name' +p12482 +(dp12483 +S'editable' +p12484 +I01 +sS'value' +p12485 +S'Notes' +p12486 +ssS'data_type' +p12487 +(dp12488 +S'editable' +p12489 +I00 +sS'value' +p12490 +S'multi_entity' +p12491 +ssS'entity_type' +p12492 +(dp12493 +S'editable' +p12494 +I00 +sS'value' +p12495 +S'AssetLibrary' +p12496 +ssS'editable' +p12497 +(dp12498 +S'editable' +p12499 +I00 +sS'value' +p12500 +I01 +ssS'unique' +p12501 +(dp12502 +S'editable' +p12503 +I00 +sS'value' +p12504 +I00 +ssS'properties' +p12505 +(dp12506 +S'default_value' +p12507 +(dp12508 +S'editable' +p12509 +I00 +sS'value' +p12510 +NssS'summary_default' +p12511 +(dp12512 +S'editable' +p12513 +I01 +sS'value' +p12514 +S'none' +p12515 +ssS'valid_types' +p12516 +(dp12517 +S'editable' +p12518 +I01 +sS'value' +p12519 +(lp12520 +S'Note' +p12521 +asssS'description' +p12522 +(dp12523 +S'editable' +p12524 +I01 +sS'value' +p12525 +g47 +sssS'image' +p12526 +(dp12527 +S'mandatory' +p12528 +(dp12529 +S'editable' +p12530 +I00 +sS'value' +p12531 +I00 +ssS'name' +p12532 +(dp12533 +S'editable' +p12534 +I01 +sS'value' +p12535 +S'Thumbnail' +p12536 +ssS'data_type' +p12537 +(dp12538 +S'editable' +p12539 +I00 +sS'value' +p12540 +S'image' +p12541 +ssS'entity_type' +p12542 +(dp12543 +S'editable' +p12544 +I00 +sS'value' +p12545 +S'AssetLibrary' +p12546 +ssS'editable' +p12547 +(dp12548 +S'editable' +p12549 +I00 +sS'value' +p12550 +I01 +ssS'unique' +p12551 +(dp12552 +S'editable' +p12553 +I00 +sS'value' +p12554 +I00 +ssS'properties' +p12555 +(dp12556 +S'default_value' +p12557 +(dp12558 +S'editable' +p12559 +I00 +sS'value' +p12560 +NssS'summary_default' +p12561 +(dp12562 +S'editable' +p12563 +I01 +sS'value' +p12564 +S'none' +p12565 +sssS'description' +p12566 +(dp12567 +S'editable' +p12568 +I01 +sS'value' +p12569 +g47 +sssS'cached_display_name' +p12570 +(dp12571 +S'mandatory' +p12572 +(dp12573 +S'editable' +p12574 +I00 +sS'value' +p12575 +I00 +ssS'name' +p12576 +(dp12577 +S'editable' +p12578 +I01 +sS'value' +p12579 +S'Cached Display Name' +p12580 +ssS'data_type' +p12581 +(dp12582 +S'editable' +p12583 +I00 +sS'value' +p12584 +S'text' +p12585 +ssS'entity_type' +p12586 +(dp12587 +S'editable' +p12588 +I00 +sS'value' +p12589 +S'AssetLibrary' +p12590 +ssS'editable' +p12591 +(dp12592 +S'editable' +p12593 +I00 +sS'value' +p12594 +I01 +ssS'unique' +p12595 +(dp12596 +S'editable' +p12597 +I00 +sS'value' +p12598 +I00 +ssS'properties' +p12599 +(dp12600 +S'default_value' +p12601 +(dp12602 +S'editable' +p12603 +I00 +sS'value' +p12604 +NssS'summary_default' +p12605 +(dp12606 +S'editable' +p12607 +I00 +sS'value' +p12608 +S'none' +p12609 +sssS'description' +p12610 +(dp12611 +S'editable' +p12612 +I01 +sS'value' +p12613 +g47 +sssS'tag_list' +p12614 +(dp12615 +S'mandatory' +p12616 +(dp12617 +S'editable' +p12618 +I00 +sS'value' +p12619 +I00 +ssS'name' +p12620 +(dp12621 +S'editable' +p12622 +I01 +sS'value' +p12623 +S'Tags' +p12624 +ssS'data_type' +p12625 +(dp12626 +S'editable' +p12627 +I00 +sS'value' +p12628 +S'tag_list' +p12629 +ssS'entity_type' +p12630 +(dp12631 +S'editable' +p12632 +I00 +sS'value' +p12633 +S'AssetLibrary' +p12634 +ssS'editable' +p12635 +(dp12636 +S'editable' +p12637 +I00 +sS'value' +p12638 +I01 +ssS'unique' +p12639 +(dp12640 +S'editable' +p12641 +I00 +sS'value' +p12642 +I00 +ssS'properties' +p12643 +(dp12644 +S'default_value' +p12645 +(dp12646 +S'editable' +p12647 +I00 +sS'value' +p12648 +NssS'summary_default' +p12649 +(dp12650 +S'editable' +p12651 +I01 +sS'value' +p12652 +S'none' +p12653 +ssS'valid_types' +p12654 +(dp12655 +S'editable' +p12656 +I01 +sS'value' +p12657 +(lp12658 +S'Tag' +p12659 +asssS'description' +p12660 +(dp12661 +S'editable' +p12662 +I01 +sS'value' +p12663 +g47 +sssS'id' +p12664 +(dp12665 +S'mandatory' +p12666 +(dp12667 +S'editable' +p12668 +I00 +sS'value' +p12669 +I00 +ssS'name' +p12670 +(dp12671 +S'editable' +p12672 +I01 +sS'value' +p12673 +S'Id' +p12674 +ssS'data_type' +p12675 +(dp12676 +S'editable' +p12677 +I00 +sS'value' +p12678 +S'number' +p12679 +ssS'entity_type' +p12680 +(dp12681 +S'editable' +p12682 +I00 +sS'value' +p12683 +S'AssetLibrary' +p12684 +ssS'editable' +p12685 +(dp12686 +S'editable' +p12687 +I00 +sS'value' +p12688 +I00 +ssS'unique' +p12689 +(dp12690 +S'editable' +p12691 +I00 +sS'value' +p12692 +I00 +ssS'properties' +p12693 +(dp12694 +S'default_value' +p12695 +(dp12696 +S'editable' +p12697 +I00 +sS'value' +p12698 +NssS'summary_default' +p12699 +(dp12700 +S'editable' +p12701 +I01 +sS'value' +p12702 +S'none' +p12703 +sssS'description' +p12704 +(dp12705 +S'editable' +p12706 +I01 +sS'value' +p12707 +g47 +sssS'updated_by' +p12708 +(dp12709 +S'mandatory' +p12710 +(dp12711 +S'editable' +p12712 +I00 +sS'value' +p12713 +I00 +ssS'name' +p12714 +(dp12715 +S'editable' +p12716 +I01 +sS'value' +p12717 +S'Updated by' +p12718 +ssS'data_type' +p12719 +(dp12720 +S'editable' +p12721 +I00 +sS'value' +p12722 +S'entity' +p12723 +ssS'entity_type' +p12724 +(dp12725 +S'editable' +p12726 +I00 +sS'value' +p12727 +S'AssetLibrary' +p12728 +ssS'editable' +p12729 +(dp12730 +S'editable' +p12731 +I00 +sS'value' +p12732 +I00 +ssS'unique' +p12733 +(dp12734 +S'editable' +p12735 +I00 +sS'value' +p12736 +I00 +ssS'properties' +p12737 +(dp12738 +S'default_value' +p12739 +(dp12740 +S'editable' +p12741 +I00 +sS'value' +p12742 +NssS'summary_default' +p12743 +(dp12744 +S'editable' +p12745 +I01 +sS'value' +p12746 +S'none' +p12747 +ssS'valid_types' +p12748 +(dp12749 +S'editable' +p12750 +I01 +sS'value' +p12751 +(lp12752 +S'HumanUser' +p12753 +aS'ApiUser' +p12754 +asssS'description' +p12755 +(dp12756 +S'editable' +p12757 +I01 +sS'value' +p12758 +g47 +ssssS'PerformerMocapTakeConnection' +p12759 +(dp12760 +S'mocap_take' +p12761 +(dp12762 +S'mandatory' +p12763 +(dp12764 +S'editable' +p12765 +I00 +sS'value' +p12766 +I00 +ssS'name' +p12767 +(dp12768 +S'editable' +p12769 +I01 +sS'value' +p12770 +S'Mocap Take' +p12771 +ssS'data_type' +p12772 +(dp12773 +S'editable' +p12774 +I00 +sS'value' +p12775 +S'entity' +p12776 +ssS'entity_type' +p12777 +(dp12778 +S'editable' +p12779 +I00 +sS'value' +p12780 +S'PerformerMocapTakeConnection' +p12781 +ssS'editable' +p12782 +(dp12783 +S'editable' +p12784 +I00 +sS'value' +p12785 +I00 +ssS'unique' +p12786 +(dp12787 +S'editable' +p12788 +I00 +sS'value' +p12789 +I00 +ssS'properties' +p12790 +(dp12791 +S'default_value' +p12792 +(dp12793 +S'editable' +p12794 +I00 +sS'value' +p12795 +NssS'summary_default' +p12796 +(dp12797 +S'editable' +p12798 +I00 +sS'value' +p12799 +S'none' +p12800 +ssS'valid_types' +p12801 +(dp12802 +S'editable' +p12803 +I00 +sS'value' +p12804 +(lp12805 +S'MocapTake' +p12806 +asssS'description' +p12807 +(dp12808 +S'editable' +p12809 +I01 +sS'value' +p12810 +g47 +sssS'cached_display_name' +p12811 +(dp12812 +S'mandatory' +p12813 +(dp12814 +S'editable' +p12815 +I00 +sS'value' +p12816 +I00 +ssS'name' +p12817 +(dp12818 +S'editable' +p12819 +I01 +sS'value' +p12820 +S'Cached Display Name' +p12821 +ssS'data_type' +p12822 +(dp12823 +S'editable' +p12824 +I00 +sS'value' +p12825 +S'text' +p12826 +ssS'entity_type' +p12827 +(dp12828 +S'editable' +p12829 +I00 +sS'value' +p12830 +S'PerformerMocapTakeConnection' +p12831 +ssS'editable' +p12832 +(dp12833 +S'editable' +p12834 +I00 +sS'value' +p12835 +I01 +ssS'unique' +p12836 +(dp12837 +S'editable' +p12838 +I00 +sS'value' +p12839 +I00 +ssS'properties' +p12840 +(dp12841 +S'default_value' +p12842 +(dp12843 +S'editable' +p12844 +I00 +sS'value' +p12845 +NssS'summary_default' +p12846 +(dp12847 +S'editable' +p12848 +I00 +sS'value' +p12849 +S'none' +p12850 +sssS'description' +p12851 +(dp12852 +S'editable' +p12853 +I01 +sS'value' +p12854 +g47 +sssS'performer' +p12855 +(dp12856 +S'mandatory' +p12857 +(dp12858 +S'editable' +p12859 +I00 +sS'value' +p12860 +I00 +ssS'name' +p12861 +(dp12862 +S'editable' +p12863 +I01 +sS'value' +p12864 +S'Performer' +p12865 +ssS'data_type' +p12866 +(dp12867 +S'editable' +p12868 +I00 +sS'value' +p12869 +S'entity' +p12870 +ssS'entity_type' +p12871 +(dp12872 +S'editable' +p12873 +I00 +sS'value' +p12874 +S'PerformerMocapTakeConnection' +p12875 +ssS'editable' +p12876 +(dp12877 +S'editable' +p12878 +I00 +sS'value' +p12879 +I00 +ssS'unique' +p12880 +(dp12881 +S'editable' +p12882 +I00 +sS'value' +p12883 +I00 +ssS'properties' +p12884 +(dp12885 +S'default_value' +p12886 +(dp12887 +S'editable' +p12888 +I00 +sS'value' +p12889 +NssS'summary_default' +p12890 +(dp12891 +S'editable' +p12892 +I00 +sS'value' +p12893 +S'none' +p12894 +ssS'valid_types' +p12895 +(dp12896 +S'editable' +p12897 +I00 +sS'value' +p12898 +(lp12899 +S'Performer' +p12900 +asssS'description' +p12901 +(dp12902 +S'editable' +p12903 +I01 +sS'value' +p12904 +g47 +sssS'id' +p12905 +(dp12906 +S'mandatory' +p12907 +(dp12908 +S'editable' +p12909 +I00 +sS'value' +p12910 +I01 +ssS'name' +p12911 +(dp12912 +S'editable' +p12913 +I01 +sS'value' +p12914 +S'Id' +p12915 +ssS'data_type' +p12916 +(dp12917 +S'editable' +p12918 +I00 +sS'value' +p12919 +S'number' +p12920 +ssS'entity_type' +p12921 +(dp12922 +S'editable' +p12923 +I00 +sS'value' +p12924 +S'PerformerMocapTakeConnection' +p12925 +ssS'editable' +p12926 +(dp12927 +S'editable' +p12928 +I00 +sS'value' +p12929 +I00 +ssS'unique' +p12930 +(dp12931 +S'editable' +p12932 +I00 +sS'value' +p12933 +I00 +ssS'properties' +p12934 +(dp12935 +S'default_value' +p12936 +(dp12937 +S'editable' +p12938 +I00 +sS'value' +p12939 +NssS'summary_default' +p12940 +(dp12941 +S'editable' +p12942 +I00 +sS'value' +p12943 +S'none' +p12944 +sssS'description' +p12945 +(dp12946 +S'editable' +p12947 +I01 +sS'value' +p12948 +g47 +ssssS'Phase' +p12949 +(dp12950 +S'open_notes_count' +p12951 +(dp12952 +S'mandatory' +p12953 +(dp12954 +S'editable' +p12955 +I00 +sS'value' +p12956 +I00 +ssS'name' +p12957 +(dp12958 +S'editable' +p12959 +I01 +sS'value' +p12960 +S'Open Notes Count' +p12961 +ssS'data_type' +p12962 +(dp12963 +S'editable' +p12964 +I00 +sS'value' +p12965 +S'text' +p12966 +ssS'entity_type' +p12967 +(dp12968 +S'editable' +p12969 +I00 +sS'value' +p12970 +S'Phase' +p12971 +ssS'editable' +p12972 +(dp12973 +S'editable' +p12974 +I00 +sS'value' +p12975 +I00 +ssS'unique' +p12976 +(dp12977 +S'editable' +p12978 +I00 +sS'value' +p12979 +I00 +ssS'properties' +p12980 +(dp12981 +S'default_value' +p12982 +(dp12983 +S'editable' +p12984 +I00 +sS'value' +p12985 +NssS'summary_default' +p12986 +(dp12987 +S'editable' +p12988 +I01 +sS'value' +p12989 +S'none' +p12990 +sssS'description' +p12991 +(dp12992 +S'editable' +p12993 +I01 +sS'value' +p12994 +g47 +sssS'code' +p12995 +(dp12996 +S'mandatory' +p12997 +(dp12998 +S'editable' +p12999 +I00 +sS'value' +p13000 +I01 +ssS'name' +p13001 +(dp13002 +S'editable' +p13003 +I01 +sS'value' +p13004 +S'Phase Name' +p13005 +ssS'data_type' +p13006 +(dp13007 +S'editable' +p13008 +I00 +sS'value' +p13009 +S'text' +p13010 +ssS'entity_type' +p13011 +(dp13012 +S'editable' +p13013 +I00 +sS'value' +p13014 +S'Phase' +p13015 +ssS'editable' +p13016 +(dp13017 +S'editable' +p13018 +I00 +sS'value' +p13019 +I01 +ssS'unique' +p13020 +(dp13021 +S'editable' +p13022 +I00 +sS'value' +p13023 +I00 +ssS'properties' +p13024 +(dp13025 +S'default_value' +p13026 +(dp13027 +S'editable' +p13028 +I00 +sS'value' +p13029 +NssS'summary_default' +p13030 +(dp13031 +S'editable' +p13032 +I01 +sS'value' +p13033 +S'none' +p13034 +sssS'description' +p13035 +(dp13036 +S'editable' +p13037 +I01 +sS'value' +p13038 +g47 +sssS'open_notes' +p13039 +(dp13040 +S'mandatory' +p13041 +(dp13042 +S'editable' +p13043 +I00 +sS'value' +p13044 +I00 +ssS'name' +p13045 +(dp13046 +S'editable' +p13047 +I01 +sS'value' +p13048 +S'Open Notes' +p13049 +ssS'data_type' +p13050 +(dp13051 +S'editable' +p13052 +I00 +sS'value' +p13053 +S'multi_entity' +p13054 +ssS'entity_type' +p13055 +(dp13056 +S'editable' +p13057 +I00 +sS'value' +p13058 +S'Phase' +p13059 +ssS'editable' +p13060 +(dp13061 +S'editable' +p13062 +I00 +sS'value' +p13063 +I00 +ssS'unique' +p13064 +(dp13065 +S'editable' +p13066 +I00 +sS'value' +p13067 +I00 +ssS'properties' +p13068 +(dp13069 +S'default_value' +p13070 +(dp13071 +S'editable' +p13072 +I00 +sS'value' +p13073 +NssS'summary_default' +p13074 +(dp13075 +S'editable' +p13076 +I01 +sS'value' +p13077 +S'none' +p13078 +ssS'valid_types' +p13079 +(dp13080 +S'editable' +p13081 +I01 +sS'value' +p13082 +(lp13083 +S'Note' +p13084 +asssS'description' +p13085 +(dp13086 +S'editable' +p13087 +I01 +sS'value' +p13088 +g47 +sssS'description' +p13089 +(dp13090 +S'mandatory' +p13091 +(dp13092 +S'editable' +p13093 +I00 +sS'value' +p13094 +I00 +ssS'name' +p13095 +(dp13096 +S'editable' +p13097 +I01 +sS'value' +p13098 +S'Description' +p13099 +ssS'data_type' +p13100 +(dp13101 +S'editable' +p13102 +I00 +sS'value' +p13103 +S'text' +p13104 +ssS'entity_type' +p13105 +(dp13106 +S'editable' +p13107 +I00 +sS'value' +p13108 +S'Phase' +p13109 +ssS'editable' +p13110 +(dp13111 +S'editable' +p13112 +I00 +sS'value' +p13113 +I01 +ssS'unique' +p13114 +(dp13115 +S'editable' +p13116 +I00 +sS'value' +p13117 +I00 +ssS'properties' +p13118 +(dp13119 +S'default_value' +p13120 +(dp13121 +S'editable' +p13122 +I00 +sS'value' +p13123 +NssS'summary_default' +p13124 +(dp13125 +S'editable' +p13126 +I01 +sS'value' +p13127 +S'none' +p13128 +sssS'description' +p13129 +(dp13130 +S'editable' +p13131 +I01 +sS'value' +p13132 +g47 +sssS'end_date' +p13133 +(dp13134 +S'mandatory' +p13135 +(dp13136 +S'editable' +p13137 +I00 +sS'value' +p13138 +I00 +ssS'name' +p13139 +(dp13140 +S'editable' +p13141 +I01 +sS'value' +p13142 +S'End Date' +p13143 +ssS'data_type' +p13144 +(dp13145 +S'editable' +p13146 +I00 +sS'value' +p13147 +S'date' +p13148 +ssS'entity_type' +p13149 +(dp13150 +S'editable' +p13151 +I00 +sS'value' +p13152 +S'Phase' +p13153 +ssS'editable' +p13154 +(dp13155 +S'editable' +p13156 +I00 +sS'value' +p13157 +I01 +ssS'unique' +p13158 +(dp13159 +S'editable' +p13160 +I00 +sS'value' +p13161 +I00 +ssS'properties' +p13162 +(dp13163 +S'default_value' +p13164 +(dp13165 +S'editable' +p13166 +I00 +sS'value' +p13167 +NssS'summary_default' +p13168 +(dp13169 +S'editable' +p13170 +I01 +sS'value' +p13171 +S'none' +p13172 +sssS'description' +p13173 +(dp13174 +S'editable' +p13175 +I01 +sS'value' +p13176 +g47 +sssS'color' +p13177 +(dp13178 +S'mandatory' +p13179 +(dp13180 +S'editable' +p13181 +I00 +sS'value' +p13182 +I00 +ssS'name' +p13183 +(dp13184 +S'editable' +p13185 +I01 +sS'value' +p13186 +S'Color' +p13187 +ssS'data_type' +p13188 +(dp13189 +S'editable' +p13190 +I00 +sS'value' +p13191 +S'color' +p13192 +ssS'entity_type' +p13193 +(dp13194 +S'editable' +p13195 +I00 +sS'value' +p13196 +S'Phase' +p13197 +ssS'editable' +p13198 +(dp13199 +S'editable' +p13200 +I00 +sS'value' +p13201 +I01 +ssS'unique' +p13202 +(dp13203 +S'editable' +p13204 +I00 +sS'value' +p13205 +I00 +ssS'properties' +p13206 +(dp13207 +S'default_value' +p13208 +(dp13209 +S'editable' +p13210 +I00 +sS'value' +p13211 +NssS'summary_default' +p13212 +(dp13213 +S'editable' +p13214 +I01 +sS'value' +p13215 +S'none' +p13216 +sssS'description' +p13217 +(dp13218 +S'editable' +p13219 +I01 +sS'value' +p13220 +g47 +sssS'created_at' +p13221 +(dp13222 +S'mandatory' +p13223 +(dp13224 +S'editable' +p13225 +I00 +sS'value' +p13226 +I00 +ssS'name' +p13227 +(dp13228 +S'editable' +p13229 +I01 +sS'value' +p13230 +S'Date Created' +p13231 +ssS'data_type' +p13232 +(dp13233 +S'editable' +p13234 +I00 +sS'value' +p13235 +S'date_time' +p13236 +ssS'entity_type' +p13237 +(dp13238 +S'editable' +p13239 +I00 +sS'value' +p13240 +S'Phase' +p13241 +ssS'editable' +p13242 +(dp13243 +S'editable' +p13244 +I00 +sS'value' +p13245 +I00 +ssS'unique' +p13246 +(dp13247 +S'editable' +p13248 +I00 +sS'value' +p13249 +I00 +ssS'properties' +p13250 +(dp13251 +S'default_value' +p13252 +(dp13253 +S'editable' +p13254 +I00 +sS'value' +p13255 +NssS'summary_default' +p13256 +(dp13257 +S'editable' +p13258 +I01 +sS'value' +p13259 +S'none' +p13260 +sssS'description' +p13261 +(dp13262 +S'editable' +p13263 +I01 +sS'value' +p13264 +g47 +sssS'updated_at' +p13265 +(dp13266 +S'mandatory' +p13267 +(dp13268 +S'editable' +p13269 +I00 +sS'value' +p13270 +I00 +ssS'name' +p13271 +(dp13272 +S'editable' +p13273 +I01 +sS'value' +p13274 +S'Date Updated' +p13275 +ssS'data_type' +p13276 +(dp13277 +S'editable' +p13278 +I00 +sS'value' +p13279 +S'date_time' +p13280 +ssS'entity_type' +p13281 +(dp13282 +S'editable' +p13283 +I00 +sS'value' +p13284 +S'Phase' +p13285 +ssS'editable' +p13286 +(dp13287 +S'editable' +p13288 +I00 +sS'value' +p13289 +I00 +ssS'unique' +p13290 +(dp13291 +S'editable' +p13292 +I00 +sS'value' +p13293 +I00 +ssS'properties' +p13294 +(dp13295 +S'default_value' +p13296 +(dp13297 +S'editable' +p13298 +I00 +sS'value' +p13299 +NssS'summary_default' +p13300 +(dp13301 +S'editable' +p13302 +I01 +sS'value' +p13303 +S'none' +p13304 +sssS'description' +p13305 +(dp13306 +S'editable' +p13307 +I01 +sS'value' +p13308 +g47 +sssS'created_by' +p13309 +(dp13310 +S'mandatory' +p13311 +(dp13312 +S'editable' +p13313 +I00 +sS'value' +p13314 +I00 +ssS'name' +p13315 +(dp13316 +S'editable' +p13317 +I01 +sS'value' +p13318 +S'Created by' +p13319 +ssS'data_type' +p13320 +(dp13321 +S'editable' +p13322 +I00 +sS'value' +p13323 +S'entity' +p13324 +ssS'entity_type' +p13325 +(dp13326 +S'editable' +p13327 +I00 +sS'value' +p13328 +S'Phase' +p13329 +ssS'editable' +p13330 +(dp13331 +S'editable' +p13332 +I00 +sS'value' +p13333 +I00 +ssS'unique' +p13334 +(dp13335 +S'editable' +p13336 +I00 +sS'value' +p13337 +I00 +ssS'properties' +p13338 +(dp13339 +S'default_value' +p13340 +(dp13341 +S'editable' +p13342 +I00 +sS'value' +p13343 +NssS'summary_default' +p13344 +(dp13345 +S'editable' +p13346 +I01 +sS'value' +p13347 +S'none' +p13348 +ssS'valid_types' +p13349 +(dp13350 +S'editable' +p13351 +I01 +sS'value' +p13352 +(lp13353 +S'HumanUser' +p13354 +aS'ApiUser' +p13355 +asssS'description' +p13356 +(dp13357 +S'editable' +p13358 +I01 +sS'value' +p13359 +g47 +sssS'start_date' +p13360 +(dp13361 +S'mandatory' +p13362 +(dp13363 +S'editable' +p13364 +I00 +sS'value' +p13365 +I00 +ssS'name' +p13366 +(dp13367 +S'editable' +p13368 +I01 +sS'value' +p13369 +S'Start Date' +p13370 +ssS'data_type' +p13371 +(dp13372 +S'editable' +p13373 +I00 +sS'value' +p13374 +S'date' +p13375 +ssS'entity_type' +p13376 +(dp13377 +S'editable' +p13378 +I00 +sS'value' +p13379 +S'Phase' +p13380 +ssS'editable' +p13381 +(dp13382 +S'editable' +p13383 +I00 +sS'value' +p13384 +I01 +ssS'unique' +p13385 +(dp13386 +S'editable' +p13387 +I00 +sS'value' +p13388 +I00 +ssS'properties' +p13389 +(dp13390 +S'default_value' +p13391 +(dp13392 +S'editable' +p13393 +I00 +sS'value' +p13394 +NssS'summary_default' +p13395 +(dp13396 +S'editable' +p13397 +I01 +sS'value' +p13398 +S'none' +p13399 +sssS'description' +p13400 +(dp13401 +S'editable' +p13402 +I01 +sS'value' +p13403 +g47 +sssS'project' +p13404 +(dp13405 +S'mandatory' +p13406 +(dp13407 +S'editable' +p13408 +I00 +sS'value' +p13409 +I00 +ssS'name' +p13410 +(dp13411 +S'editable' +p13412 +I01 +sS'value' +p13413 +S'Project' +p13414 +ssS'data_type' +p13415 +(dp13416 +S'editable' +p13417 +I00 +sS'value' +p13418 +S'entity' +p13419 +ssS'entity_type' +p13420 +(dp13421 +S'editable' +p13422 +I00 +sS'value' +p13423 +S'Phase' +p13424 +ssS'editable' +p13425 +(dp13426 +S'editable' +p13427 +I00 +sS'value' +p13428 +I01 +ssS'unique' +p13429 +(dp13430 +S'editable' +p13431 +I00 +sS'value' +p13432 +I00 +ssS'properties' +p13433 +(dp13434 +S'default_value' +p13435 +(dp13436 +S'editable' +p13437 +I00 +sS'value' +p13438 +NssS'summary_default' +p13439 +(dp13440 +S'editable' +p13441 +I01 +sS'value' +p13442 +S'none' +p13443 +ssS'valid_types' +p13444 +(dp13445 +S'editable' +p13446 +I01 +sS'value' +p13447 +(lp13448 +S'Project' +p13449 +asssS'description' +p13450 +(dp13451 +S'editable' +p13452 +I01 +sS'value' +p13453 +g47 +sssS'notes' +p13454 +(dp13455 +S'mandatory' +p13456 +(dp13457 +S'editable' +p13458 +I00 +sS'value' +p13459 +I00 +ssS'name' +p13460 +(dp13461 +S'editable' +p13462 +I01 +sS'value' +p13463 +S'Notes' +p13464 +ssS'data_type' +p13465 +(dp13466 +S'editable' +p13467 +I00 +sS'value' +p13468 +S'multi_entity' +p13469 +ssS'entity_type' +p13470 +(dp13471 +S'editable' +p13472 +I00 +sS'value' +p13473 +S'Phase' +p13474 +ssS'editable' +p13475 +(dp13476 +S'editable' +p13477 +I00 +sS'value' +p13478 +I01 +ssS'unique' +p13479 +(dp13480 +S'editable' +p13481 +I00 +sS'value' +p13482 +I00 +ssS'properties' +p13483 +(dp13484 +S'default_value' +p13485 +(dp13486 +S'editable' +p13487 +I00 +sS'value' +p13488 +NssS'summary_default' +p13489 +(dp13490 +S'editable' +p13491 +I01 +sS'value' +p13492 +S'none' +p13493 +ssS'valid_types' +p13494 +(dp13495 +S'editable' +p13496 +I01 +sS'value' +p13497 +(lp13498 +S'Note' +p13499 +asssS'description' +p13500 +(dp13501 +S'editable' +p13502 +I01 +sS'value' +p13503 +g47 +sssS'milestone' +p13504 +(dp13505 +S'mandatory' +p13506 +(dp13507 +S'editable' +p13508 +I00 +sS'value' +p13509 +I00 +ssS'name' +p13510 +(dp13511 +S'editable' +p13512 +I01 +sS'value' +p13513 +S'Milestone' +p13514 +ssS'data_type' +p13515 +(dp13516 +S'editable' +p13517 +I00 +sS'value' +p13518 +S'checkbox' +p13519 +ssS'entity_type' +p13520 +(dp13521 +S'editable' +p13522 +I00 +sS'value' +p13523 +S'Phase' +p13524 +ssS'editable' +p13525 +(dp13526 +S'editable' +p13527 +I00 +sS'value' +p13528 +I01 +ssS'unique' +p13529 +(dp13530 +S'editable' +p13531 +I00 +sS'value' +p13532 +I00 +ssS'properties' +p13533 +(dp13534 +S'default_value' +p13535 +(dp13536 +S'editable' +p13537 +I00 +sS'value' +p13538 +NssS'summary_default' +p13539 +(dp13540 +S'editable' +p13541 +I01 +sS'value' +p13542 +S'none' +p13543 +sssS'description' +p13544 +(dp13545 +S'editable' +p13546 +I01 +sS'value' +p13547 +g47 +sssS'cached_display_name' +p13548 +(dp13549 +S'mandatory' +p13550 +(dp13551 +S'editable' +p13552 +I00 +sS'value' +p13553 +I00 +ssS'name' +p13554 +(dp13555 +S'editable' +p13556 +I01 +sS'value' +p13557 +S'Cached Display Name' +p13558 +ssS'data_type' +p13559 +(dp13560 +S'editable' +p13561 +I00 +sS'value' +p13562 +S'text' +p13563 +ssS'entity_type' +p13564 +(dp13565 +S'editable' +p13566 +I00 +sS'value' +p13567 +S'Phase' +p13568 +ssS'editable' +p13569 +(dp13570 +S'editable' +p13571 +I00 +sS'value' +p13572 +I01 +ssS'unique' +p13573 +(dp13574 +S'editable' +p13575 +I00 +sS'value' +p13576 +I00 +ssS'properties' +p13577 +(dp13578 +S'default_value' +p13579 +(dp13580 +S'editable' +p13581 +I00 +sS'value' +p13582 +NssS'summary_default' +p13583 +(dp13584 +S'editable' +p13585 +I00 +sS'value' +p13586 +S'none' +p13587 +sssS'description' +p13588 +(dp13589 +S'editable' +p13590 +I01 +sS'value' +p13591 +g47 +sssS'id' +p13592 +(dp13593 +S'mandatory' +p13594 +(dp13595 +S'editable' +p13596 +I00 +sS'value' +p13597 +I00 +ssS'name' +p13598 +(dp13599 +S'editable' +p13600 +I01 +sS'value' +p13601 +S'Id' +p13602 +ssS'data_type' +p13603 +(dp13604 +S'editable' +p13605 +I00 +sS'value' +p13606 +S'number' +p13607 +ssS'entity_type' +p13608 +(dp13609 +S'editable' +p13610 +I00 +sS'value' +p13611 +S'Phase' +p13612 +ssS'editable' +p13613 +(dp13614 +S'editable' +p13615 +I00 +sS'value' +p13616 +I00 +ssS'unique' +p13617 +(dp13618 +S'editable' +p13619 +I00 +sS'value' +p13620 +I00 +ssS'properties' +p13621 +(dp13622 +S'default_value' +p13623 +(dp13624 +S'editable' +p13625 +I00 +sS'value' +p13626 +NssS'summary_default' +p13627 +(dp13628 +S'editable' +p13629 +I01 +sS'value' +p13630 +S'none' +p13631 +sssS'description' +p13632 +(dp13633 +S'editable' +p13634 +I01 +sS'value' +p13635 +g47 +sssS'updated_by' +p13636 +(dp13637 +S'mandatory' +p13638 +(dp13639 +S'editable' +p13640 +I00 +sS'value' +p13641 +I00 +ssS'name' +p13642 +(dp13643 +S'editable' +p13644 +I01 +sS'value' +p13645 +S'Updated by' +p13646 +ssS'data_type' +p13647 +(dp13648 +S'editable' +p13649 +I00 +sS'value' +p13650 +S'entity' +p13651 +ssS'entity_type' +p13652 +(dp13653 +S'editable' +p13654 +I00 +sS'value' +p13655 +S'Phase' +p13656 +ssS'editable' +p13657 +(dp13658 +S'editable' +p13659 +I00 +sS'value' +p13660 +I00 +ssS'unique' +p13661 +(dp13662 +S'editable' +p13663 +I00 +sS'value' +p13664 +I00 +ssS'properties' +p13665 +(dp13666 +S'default_value' +p13667 +(dp13668 +S'editable' +p13669 +I00 +sS'value' +p13670 +NssS'summary_default' +p13671 +(dp13672 +S'editable' +p13673 +I01 +sS'value' +p13674 +S'none' +p13675 +ssS'valid_types' +p13676 +(dp13677 +S'editable' +p13678 +I01 +sS'value' +p13679 +(lp13680 +S'HumanUser' +p13681 +aS'ApiUser' +p13682 +asssS'description' +p13683 +(dp13684 +S'editable' +p13685 +I01 +sS'value' +p13686 +g47 +ssssS'PublishedFile' +p13687 +(dp13688 +S'open_notes_count' +p13689 +(dp13690 +S'mandatory' +p13691 +(dp13692 +S'editable' +p13693 +I00 +sS'value' +p13694 +I00 +ssS'name' +p13695 +(dp13696 +S'editable' +p13697 +I01 +sS'value' +p13698 +S'Open Notes Count' +p13699 +ssS'data_type' +p13700 +(dp13701 +S'editable' +p13702 +I00 +sS'value' +p13703 +S'text' +p13704 +ssS'entity_type' +p13705 +(dp13706 +S'editable' +p13707 +I00 +sS'value' +p13708 +S'PublishedFile' +p13709 +ssS'editable' +p13710 +(dp13711 +S'editable' +p13712 +I00 +sS'value' +p13713 +I00 +ssS'unique' +p13714 +(dp13715 +S'editable' +p13716 +I00 +sS'value' +p13717 +I00 +ssS'properties' +p13718 +(dp13719 +S'default_value' +p13720 +(dp13721 +S'editable' +p13722 +I00 +sS'value' +p13723 +NssS'summary_default' +p13724 +(dp13725 +S'editable' +p13726 +I01 +sS'value' +p13727 +S'none' +p13728 +sssS'description' +p13729 +(dp13730 +S'editable' +p13731 +I01 +sS'value' +p13732 +g47 +sssS'code' +p13733 +(dp13734 +S'mandatory' +p13735 +(dp13736 +S'editable' +p13737 +I00 +sS'value' +p13738 +I01 +ssS'name' +p13739 +(dp13740 +S'editable' +p13741 +I01 +sS'value' +p13742 +S'Published File Name' +p13743 +ssS'data_type' +p13744 +(dp13745 +S'editable' +p13746 +I00 +sS'value' +p13747 +S'text' +p13748 +ssS'entity_type' +p13749 +(dp13750 +S'editable' +p13751 +I00 +sS'value' +p13752 +S'PublishedFile' +p13753 +ssS'editable' +p13754 +(dp13755 +S'editable' +p13756 +I00 +sS'value' +p13757 +I01 +ssS'unique' +p13758 +(dp13759 +S'editable' +p13760 +I00 +sS'value' +p13761 +I00 +ssS'properties' +p13762 +(dp13763 +S'default_value' +p13764 +(dp13765 +S'editable' +p13766 +I00 +sS'value' +p13767 +NssS'summary_default' +p13768 +(dp13769 +S'editable' +p13770 +I01 +sS'value' +p13771 +S'none' +p13772 +sssS'description' +p13773 +(dp13774 +S'editable' +p13775 +I01 +sS'value' +p13776 +g47 +sssS'image' +p13777 +(dp13778 +S'mandatory' +p13779 +(dp13780 +S'editable' +p13781 +I00 +sS'value' +p13782 +I00 +ssS'name' +p13783 +(dp13784 +S'editable' +p13785 +I01 +sS'value' +p13786 +S'Thumbnail' +p13787 +ssS'data_type' +p13788 +(dp13789 +S'editable' +p13790 +I00 +sS'value' +p13791 +S'image' +p13792 +ssS'entity_type' +p13793 +(dp13794 +S'editable' +p13795 +I00 +sS'value' +p13796 +S'PublishedFile' +p13797 +ssS'editable' +p13798 +(dp13799 +S'editable' +p13800 +I00 +sS'value' +p13801 +I01 +ssS'unique' +p13802 +(dp13803 +S'editable' +p13804 +I00 +sS'value' +p13805 +I00 +ssS'properties' +p13806 +(dp13807 +S'default_value' +p13808 +(dp13809 +S'editable' +p13810 +I00 +sS'value' +p13811 +NssS'summary_default' +p13812 +(dp13813 +S'editable' +p13814 +I01 +sS'value' +p13815 +S'none' +p13816 +sssS'description' +p13817 +(dp13818 +S'editable' +p13819 +I01 +sS'value' +p13820 +g47 +sssS'updated_at' +p13821 +(dp13822 +S'mandatory' +p13823 +(dp13824 +S'editable' +p13825 +I00 +sS'value' +p13826 +I00 +ssS'name' +p13827 +(dp13828 +S'editable' +p13829 +I01 +sS'value' +p13830 +S'Date Updated' +p13831 +ssS'data_type' +p13832 +(dp13833 +S'editable' +p13834 +I00 +sS'value' +p13835 +S'date_time' +p13836 +ssS'entity_type' +p13837 +(dp13838 +S'editable' +p13839 +I00 +sS'value' +p13840 +S'PublishedFile' +p13841 +ssS'editable' +p13842 +(dp13843 +S'editable' +p13844 +I00 +sS'value' +p13845 +I00 +ssS'unique' +p13846 +(dp13847 +S'editable' +p13848 +I00 +sS'value' +p13849 +I00 +ssS'properties' +p13850 +(dp13851 +S'default_value' +p13852 +(dp13853 +S'editable' +p13854 +I00 +sS'value' +p13855 +NssS'summary_default' +p13856 +(dp13857 +S'editable' +p13858 +I01 +sS'value' +p13859 +S'none' +p13860 +sssS'description' +p13861 +(dp13862 +S'editable' +p13863 +I01 +sS'value' +p13864 +g47 +sssS'entity' +p13865 +(dp13866 +S'mandatory' +p13867 +(dp13868 +S'editable' +p13869 +I00 +sS'value' +p13870 +I00 +ssS'name' +p13871 +(dp13872 +S'editable' +p13873 +I01 +sS'value' +p13874 +S'Link' +p13875 +ssS'data_type' +p13876 +(dp13877 +S'editable' +p13878 +I00 +sS'value' +p13879 +S'entity' +p13880 +ssS'entity_type' +p13881 +(dp13882 +S'editable' +p13883 +I00 +sS'value' +p13884 +S'PublishedFile' +p13885 +ssS'editable' +p13886 +(dp13887 +S'editable' +p13888 +I00 +sS'value' +p13889 +I01 +ssS'unique' +p13890 +(dp13891 +S'editable' +p13892 +I00 +sS'value' +p13893 +I00 +ssS'properties' +p13894 +(dp13895 +S'default_value' +p13896 +(dp13897 +S'editable' +p13898 +I00 +sS'value' +p13899 +NssS'summary_default' +p13900 +(dp13901 +S'editable' +p13902 +I01 +sS'value' +p13903 +S'none' +p13904 +ssS'valid_types' +p13905 +(dp13906 +S'editable' +p13907 +I01 +sS'value' +p13908 +(lp13909 +S'Asset' +p13910 +aS'Shot' +p13911 +aS'Project' +p13912 +asssS'description' +p13913 +(dp13914 +S'editable' +p13915 +I01 +sS'value' +p13916 +g47 +sssS'cached_display_name' +p13917 +(dp13918 +S'mandatory' +p13919 +(dp13920 +S'editable' +p13921 +I00 +sS'value' +p13922 +I00 +ssS'name' +p13923 +(dp13924 +S'editable' +p13925 +I01 +sS'value' +p13926 +S'Cached Display Name' +p13927 +ssS'data_type' +p13928 +(dp13929 +S'editable' +p13930 +I00 +sS'value' +p13931 +S'text' +p13932 +ssS'entity_type' +p13933 +(dp13934 +S'editable' +p13935 +I00 +sS'value' +p13936 +S'PublishedFile' +p13937 +ssS'editable' +p13938 +(dp13939 +S'editable' +p13940 +I00 +sS'value' +p13941 +I01 +ssS'unique' +p13942 +(dp13943 +S'editable' +p13944 +I00 +sS'value' +p13945 +I00 +ssS'properties' +p13946 +(dp13947 +S'default_value' +p13948 +(dp13949 +S'editable' +p13950 +I00 +sS'value' +p13951 +NssS'summary_default' +p13952 +(dp13953 +S'editable' +p13954 +I00 +sS'value' +p13955 +S'none' +p13956 +sssS'description' +p13957 +(dp13958 +S'editable' +p13959 +I01 +sS'value' +p13960 +g47 +sssS'path_cache' +p13961 +(dp13962 +S'mandatory' +p13963 +(dp13964 +S'editable' +p13965 +I00 +sS'value' +p13966 +I00 +ssS'name' +p13967 +(dp13968 +S'editable' +p13969 +I01 +sS'value' +p13970 +S'Path Cache' +p13971 +ssS'data_type' +p13972 +(dp13973 +S'editable' +p13974 +I00 +sS'value' +p13975 +S'text' +p13976 +ssS'entity_type' +p13977 +(dp13978 +S'editable' +p13979 +I00 +sS'value' +p13980 +S'PublishedFile' +p13981 +ssS'editable' +p13982 +(dp13983 +S'editable' +p13984 +I00 +sS'value' +p13985 +I01 +ssS'unique' +p13986 +(dp13987 +S'editable' +p13988 +I00 +sS'value' +p13989 +I00 +ssS'properties' +p13990 +(dp13991 +S'default_value' +p13992 +(dp13993 +S'editable' +p13994 +I00 +sS'value' +p13995 +NssS'summary_default' +p13996 +(dp13997 +S'editable' +p13998 +I01 +sS'value' +p13999 +S'none' +p14000 +sssS'description' +p14001 +(dp14002 +S'editable' +p14003 +I01 +sS'value' +p14004 +g47 +sssS'id' +p14005 +(dp14006 +S'mandatory' +p14007 +(dp14008 +S'editable' +p14009 +I00 +sS'value' +p14010 +I00 +ssS'name' +p14011 +(dp14012 +S'editable' +p14013 +I01 +sS'value' +p14014 +S'Id' +p14015 +ssS'data_type' +p14016 +(dp14017 +S'editable' +p14018 +I00 +sS'value' +p14019 +S'number' +p14020 +ssS'entity_type' +p14021 +(dp14022 +S'editable' +p14023 +I00 +sS'value' +p14024 +S'PublishedFile' +p14025 +ssS'editable' +p14026 +(dp14027 +S'editable' +p14028 +I00 +sS'value' +p14029 +I00 +ssS'unique' +p14030 +(dp14031 +S'editable' +p14032 +I00 +sS'value' +p14033 +I00 +ssS'properties' +p14034 +(dp14035 +S'default_value' +p14036 +(dp14037 +S'editable' +p14038 +I00 +sS'value' +p14039 +NssS'summary_default' +p14040 +(dp14041 +S'editable' +p14042 +I01 +sS'value' +p14043 +S'none' +p14044 +sssS'description' +p14045 +(dp14046 +S'editable' +p14047 +I01 +sS'value' +p14048 +g47 +sssS'updated_by' +p14049 +(dp14050 +S'mandatory' +p14051 +(dp14052 +S'editable' +p14053 +I00 +sS'value' +p14054 +I00 +ssS'name' +p14055 +(dp14056 +S'editable' +p14057 +I01 +sS'value' +p14058 +S'Updated by' +p14059 +ssS'data_type' +p14060 +(dp14061 +S'editable' +p14062 +I00 +sS'value' +p14063 +S'entity' +p14064 +ssS'entity_type' +p14065 +(dp14066 +S'editable' +p14067 +I00 +sS'value' +p14068 +S'PublishedFile' +p14069 +ssS'editable' +p14070 +(dp14071 +S'editable' +p14072 +I00 +sS'value' +p14073 +I00 +ssS'unique' +p14074 +(dp14075 +S'editable' +p14076 +I00 +sS'value' +p14077 +I00 +ssS'properties' +p14078 +(dp14079 +S'default_value' +p14080 +(dp14081 +S'editable' +p14082 +I00 +sS'value' +p14083 +NssS'summary_default' +p14084 +(dp14085 +S'editable' +p14086 +I01 +sS'value' +p14087 +S'none' +p14088 +ssS'valid_types' +p14089 +(dp14090 +S'editable' +p14091 +I01 +sS'value' +p14092 +(lp14093 +S'HumanUser' +p14094 +aS'ApiUser' +p14095 +asssS'description' +p14096 +(dp14097 +S'editable' +p14098 +I01 +sS'value' +p14099 +g47 +sssS'open_notes' +p14100 +(dp14101 +S'mandatory' +p14102 +(dp14103 +S'editable' +p14104 +I00 +sS'value' +p14105 +I00 +ssS'name' +p14106 +(dp14107 +S'editable' +p14108 +I01 +sS'value' +p14109 +S'Open Notes' +p14110 +ssS'data_type' +p14111 +(dp14112 +S'editable' +p14113 +I00 +sS'value' +p14114 +S'multi_entity' +p14115 +ssS'entity_type' +p14116 +(dp14117 +S'editable' +p14118 +I00 +sS'value' +p14119 +S'PublishedFile' +p14120 +ssS'editable' +p14121 +(dp14122 +S'editable' +p14123 +I00 +sS'value' +p14124 +I00 +ssS'unique' +p14125 +(dp14126 +S'editable' +p14127 +I00 +sS'value' +p14128 +I00 +ssS'properties' +p14129 +(dp14130 +S'default_value' +p14131 +(dp14132 +S'editable' +p14133 +I00 +sS'value' +p14134 +NssS'summary_default' +p14135 +(dp14136 +S'editable' +p14137 +I01 +sS'value' +p14138 +S'none' +p14139 +ssS'valid_types' +p14140 +(dp14141 +S'editable' +p14142 +I01 +sS'value' +p14143 +(lp14144 +S'Note' +p14145 +asssS'description' +p14146 +(dp14147 +S'editable' +p14148 +I01 +sS'value' +p14149 +g47 +sssS'created_by' +p14150 +(dp14151 +S'mandatory' +p14152 +(dp14153 +S'editable' +p14154 +I00 +sS'value' +p14155 +I00 +ssS'name' +p14156 +(dp14157 +S'editable' +p14158 +I01 +sS'value' +p14159 +S'Created by' +p14160 +ssS'data_type' +p14161 +(dp14162 +S'editable' +p14163 +I00 +sS'value' +p14164 +S'entity' +p14165 +ssS'entity_type' +p14166 +(dp14167 +S'editable' +p14168 +I00 +sS'value' +p14169 +S'PublishedFile' +p14170 +ssS'editable' +p14171 +(dp14172 +S'editable' +p14173 +I00 +sS'value' +p14174 +I00 +ssS'unique' +p14175 +(dp14176 +S'editable' +p14177 +I00 +sS'value' +p14178 +I00 +ssS'properties' +p14179 +(dp14180 +S'default_value' +p14181 +(dp14182 +S'editable' +p14183 +I00 +sS'value' +p14184 +NssS'summary_default' +p14185 +(dp14186 +S'editable' +p14187 +I01 +sS'value' +p14188 +S'none' +p14189 +ssS'valid_types' +p14190 +(dp14191 +S'editable' +p14192 +I01 +sS'value' +p14193 +(lp14194 +S'HumanUser' +p14195 +aS'ApiUser' +p14196 +asssS'description' +p14197 +(dp14198 +S'editable' +p14199 +I01 +sS'value' +p14200 +g47 +sssS'version' +p14201 +(dp14202 +S'mandatory' +p14203 +(dp14204 +S'editable' +p14205 +I00 +sS'value' +p14206 +I00 +ssS'name' +p14207 +(dp14208 +S'editable' +p14209 +I01 +sS'value' +p14210 +S'Version' +p14211 +ssS'data_type' +p14212 +(dp14213 +S'editable' +p14214 +I00 +sS'value' +p14215 +S'entity' +p14216 +ssS'entity_type' +p14217 +(dp14218 +S'editable' +p14219 +I00 +sS'value' +p14220 +S'PublishedFile' +p14221 +ssS'editable' +p14222 +(dp14223 +S'editable' +p14224 +I00 +sS'value' +p14225 +I01 +ssS'unique' +p14226 +(dp14227 +S'editable' +p14228 +I00 +sS'value' +p14229 +I00 +ssS'properties' +p14230 +(dp14231 +S'default_value' +p14232 +(dp14233 +S'editable' +p14234 +I00 +sS'value' +p14235 +NssS'summary_default' +p14236 +(dp14237 +S'editable' +p14238 +I01 +sS'value' +p14239 +S'none' +p14240 +ssS'valid_types' +p14241 +(dp14242 +S'editable' +p14243 +I01 +sS'value' +p14244 +(lp14245 +S'Version' +p14246 +asssS'description' +p14247 +(dp14248 +S'editable' +p14249 +I01 +sS'value' +p14250 +g47 +sssS'upstream_published_files' +p14251 +(dp14252 +S'mandatory' +p14253 +(dp14254 +S'editable' +p14255 +I00 +sS'value' +p14256 +I00 +ssS'name' +p14257 +(dp14258 +S'editable' +p14259 +I01 +sS'value' +p14260 +S'Upstream Published Files' +p14261 +ssS'data_type' +p14262 +(dp14263 +S'editable' +p14264 +I00 +sS'value' +p14265 +S'multi_entity' +p14266 +ssS'entity_type' +p14267 +(dp14268 +S'editable' +p14269 +I00 +sS'value' +p14270 +S'PublishedFile' +p14271 +ssS'editable' +p14272 +(dp14273 +S'editable' +p14274 +I00 +sS'value' +p14275 +I01 +ssS'unique' +p14276 +(dp14277 +S'editable' +p14278 +I00 +sS'value' +p14279 +I00 +ssS'properties' +p14280 +(dp14281 +S'default_value' +p14282 +(dp14283 +S'editable' +p14284 +I00 +sS'value' +p14285 +NssS'summary_default' +p14286 +(dp14287 +S'editable' +p14288 +I00 +sS'value' +p14289 +S'none' +p14290 +ssS'valid_types' +p14291 +(dp14292 +S'editable' +p14293 +I00 +sS'value' +p14294 +(lp14295 +S'PublishedFile' +p14296 +asssS'description' +p14297 +(dp14298 +S'editable' +p14299 +I01 +sS'value' +p14300 +g47 +sssS'sg_status_list' +p14301 +(dp14302 +S'mandatory' +p14303 +(dp14304 +S'editable' +p14305 +I00 +sS'value' +p14306 +I00 +ssS'name' +p14307 +(dp14308 +S'editable' +p14309 +I01 +sS'value' +p14310 +S'Status' +p14311 +ssS'data_type' +p14312 +(dp14313 +S'editable' +p14314 +I00 +sS'value' +p14315 +S'status_list' +p14316 +ssS'entity_type' +p14317 +(dp14318 +S'editable' +p14319 +I00 +sS'value' +p14320 +S'PublishedFile' +p14321 +ssS'editable' +p14322 +(dp14323 +S'editable' +p14324 +I00 +sS'value' +p14325 +I01 +ssS'unique' +p14326 +(dp14327 +S'editable' +p14328 +I00 +sS'value' +p14329 +I00 +ssS'properties' +p14330 +(dp14331 +S'default_value' +p14332 +(dp14333 +S'editable' +p14334 +I01 +sS'value' +p14335 +S'wtg' +p14336 +ssS'valid_values' +p14337 +(dp14338 +S'editable' +p14339 +I01 +sS'value' +p14340 +(lp14341 +S'wtg' +p14342 +aS'ip' +p14343 +aS'cmpt' +p14344 +assS'summary_default' +p14345 +(dp14346 +S'editable' +p14347 +I01 +sS'value' +p14348 +S'none' +p14349 +sssS'description' +p14350 +(dp14351 +S'editable' +p14352 +I01 +sS'value' +p14353 +g47 +sssS'description' +p14354 +(dp14355 +S'mandatory' +p14356 +(dp14357 +S'editable' +p14358 +I00 +sS'value' +p14359 +I00 +ssS'name' +p14360 +(dp14361 +S'editable' +p14362 +I01 +sS'value' +p14363 +S'Description' +p14364 +ssS'data_type' +p14365 +(dp14366 +S'editable' +p14367 +I00 +sS'value' +p14368 +S'text' +p14369 +ssS'entity_type' +p14370 +(dp14371 +S'editable' +p14372 +I00 +sS'value' +p14373 +S'PublishedFile' +p14374 +ssS'editable' +p14375 +(dp14376 +S'editable' +p14377 +I00 +sS'value' +p14378 +I01 +ssS'unique' +p14379 +(dp14380 +S'editable' +p14381 +I00 +sS'value' +p14382 +I00 +ssS'properties' +p14383 +(dp14384 +S'default_value' +p14385 +(dp14386 +S'editable' +p14387 +I00 +sS'value' +p14388 +NssS'summary_default' +p14389 +(dp14390 +S'editable' +p14391 +I01 +sS'value' +p14392 +S'none' +p14393 +sssS'description' +p14394 +(dp14395 +S'editable' +p14396 +I01 +sS'value' +p14397 +g47 +sssS'path_cache_storage' +p14398 +(dp14399 +S'mandatory' +p14400 +(dp14401 +S'editable' +p14402 +I00 +sS'value' +p14403 +I00 +ssS'name' +p14404 +(dp14405 +S'editable' +p14406 +I01 +sS'value' +p14407 +S'Path Cache Storage' +p14408 +ssS'data_type' +p14409 +(dp14410 +S'editable' +p14411 +I00 +sS'value' +p14412 +S'entity' +p14413 +ssS'entity_type' +p14414 +(dp14415 +S'editable' +p14416 +I00 +sS'value' +p14417 +S'PublishedFile' +p14418 +ssS'editable' +p14419 +(dp14420 +S'editable' +p14421 +I00 +sS'value' +p14422 +I01 +ssS'unique' +p14423 +(dp14424 +S'editable' +p14425 +I00 +sS'value' +p14426 +I00 +ssS'properties' +p14427 +(dp14428 +S'default_value' +p14429 +(dp14430 +S'editable' +p14431 +I00 +sS'value' +p14432 +NssS'summary_default' +p14433 +(dp14434 +S'editable' +p14435 +I01 +sS'value' +p14436 +S'none' +p14437 +ssS'valid_types' +p14438 +(dp14439 +S'editable' +p14440 +I01 +sS'value' +p14441 +(lp14442 +S'LocalStorage' +p14443 +asssS'description' +p14444 +(dp14445 +S'editable' +p14446 +I01 +sS'value' +p14447 +g47 +sssS'downstream_published_files' +p14448 +(dp14449 +S'mandatory' +p14450 +(dp14451 +S'editable' +p14452 +I00 +sS'value' +p14453 +I00 +ssS'name' +p14454 +(dp14455 +S'editable' +p14456 +I01 +sS'value' +p14457 +S'Downstream Published Files' +p14458 +ssS'data_type' +p14459 +(dp14460 +S'editable' +p14461 +I00 +sS'value' +p14462 +S'multi_entity' +p14463 +ssS'entity_type' +p14464 +(dp14465 +S'editable' +p14466 +I00 +sS'value' +p14467 +S'PublishedFile' +p14468 +ssS'editable' +p14469 +(dp14470 +S'editable' +p14471 +I00 +sS'value' +p14472 +I01 +ssS'unique' +p14473 +(dp14474 +S'editable' +p14475 +I00 +sS'value' +p14476 +I00 +ssS'properties' +p14477 +(dp14478 +S'default_value' +p14479 +(dp14480 +S'editable' +p14481 +I00 +sS'value' +p14482 +NssS'summary_default' +p14483 +(dp14484 +S'editable' +p14485 +I00 +sS'value' +p14486 +S'none' +p14487 +ssS'valid_types' +p14488 +(dp14489 +S'editable' +p14490 +I00 +sS'value' +p14491 +(lp14492 +S'PublishedFile' +p14493 +asssS'description' +p14494 +(dp14495 +S'editable' +p14496 +I01 +sS'value' +p14497 +g47 +sssS'path' +p14498 +(dp14499 +S'mandatory' +p14500 +(dp14501 +S'editable' +p14502 +I00 +sS'value' +p14503 +I00 +ssS'name' +p14504 +(dp14505 +S'editable' +p14506 +I01 +sS'value' +p14507 +S'Path' +p14508 +ssS'data_type' +p14509 +(dp14510 +S'editable' +p14511 +I00 +sS'value' +p14512 +S'url' +p14513 +ssS'entity_type' +p14514 +(dp14515 +S'editable' +p14516 +I00 +sS'value' +p14517 +S'PublishedFile' +p14518 +ssS'editable' +p14519 +(dp14520 +S'editable' +p14521 +I00 +sS'value' +p14522 +I01 +ssS'unique' +p14523 +(dp14524 +S'editable' +p14525 +I00 +sS'value' +p14526 +I00 +ssS'properties' +p14527 +(dp14528 +S'default_value' +p14529 +(dp14530 +S'editable' +p14531 +I00 +sS'value' +p14532 +NssS'open_in_new_window' +p14533 +(dp14534 +S'editable' +p14535 +I01 +sS'value' +p14536 +I01 +ssS'summary_default' +p14537 +(dp14538 +S'editable' +p14539 +I01 +sS'value' +p14540 +S'none' +p14541 +sssS'description' +p14542 +(dp14543 +S'editable' +p14544 +I01 +sS'value' +p14545 +g47 +sssS'version_number' +p14546 +(dp14547 +S'mandatory' +p14548 +(dp14549 +S'editable' +p14550 +I00 +sS'value' +p14551 +I00 +ssS'name' +p14552 +(dp14553 +S'editable' +p14554 +I01 +sS'value' +p14555 +S'Version Number' +p14556 +ssS'data_type' +p14557 +(dp14558 +S'editable' +p14559 +I00 +sS'value' +p14560 +S'number' +p14561 +ssS'entity_type' +p14562 +(dp14563 +S'editable' +p14564 +I00 +sS'value' +p14565 +S'PublishedFile' +p14566 +ssS'editable' +p14567 +(dp14568 +S'editable' +p14569 +I00 +sS'value' +p14570 +I01 +ssS'unique' +p14571 +(dp14572 +S'editable' +p14573 +I00 +sS'value' +p14574 +I00 +ssS'properties' +p14575 +(dp14576 +S'default_value' +p14577 +(dp14578 +S'editable' +p14579 +I00 +sS'value' +p14580 +NssS'summary_default' +p14581 +(dp14582 +S'editable' +p14583 +I01 +sS'value' +p14584 +S'none' +p14585 +sssS'description' +p14586 +(dp14587 +S'editable' +p14588 +I01 +sS'value' +p14589 +g47 +sssS'task' +p14590 +(dp14591 +S'mandatory' +p14592 +(dp14593 +S'editable' +p14594 +I00 +sS'value' +p14595 +I00 +ssS'name' +p14596 +(dp14597 +S'editable' +p14598 +I01 +sS'value' +p14599 +S'Task' +p14600 +ssS'data_type' +p14601 +(dp14602 +S'editable' +p14603 +I00 +sS'value' +p14604 +S'entity' +p14605 +ssS'entity_type' +p14606 +(dp14607 +S'editable' +p14608 +I00 +sS'value' +p14609 +S'PublishedFile' +p14610 +ssS'editable' +p14611 +(dp14612 +S'editable' +p14613 +I00 +sS'value' +p14614 +I01 +ssS'unique' +p14615 +(dp14616 +S'editable' +p14617 +I00 +sS'value' +p14618 +I00 +ssS'properties' +p14619 +(dp14620 +S'default_value' +p14621 +(dp14622 +S'editable' +p14623 +I00 +sS'value' +p14624 +NssS'summary_default' +p14625 +(dp14626 +S'editable' +p14627 +I01 +sS'value' +p14628 +S'none' +p14629 +ssS'valid_types' +p14630 +(dp14631 +S'editable' +p14632 +I01 +sS'value' +p14633 +(lp14634 +S'Task' +p14635 +asssS'description' +p14636 +(dp14637 +S'editable' +p14638 +I01 +sS'value' +p14639 +g47 +sssS'name' +p14640 +(dp14641 +S'mandatory' +p14642 +(dp14643 +S'editable' +p14644 +I00 +sS'value' +p14645 +I00 +ssS'name' +p14646 +(dp14647 +S'editable' +p14648 +I01 +sS'value' +p14649 +S'Name' +p14650 +ssS'data_type' +p14651 +(dp14652 +S'editable' +p14653 +I00 +sS'value' +p14654 +S'text' +p14655 +ssS'entity_type' +p14656 +(dp14657 +S'editable' +p14658 +I00 +sS'value' +p14659 +S'PublishedFile' +p14660 +ssS'editable' +p14661 +(dp14662 +S'editable' +p14663 +I00 +sS'value' +p14664 +I01 +ssS'unique' +p14665 +(dp14666 +S'editable' +p14667 +I00 +sS'value' +p14668 +I00 +ssS'properties' +p14669 +(dp14670 +S'default_value' +p14671 +(dp14672 +S'editable' +p14673 +I00 +sS'value' +p14674 +NssS'summary_default' +p14675 +(dp14676 +S'editable' +p14677 +I01 +sS'value' +p14678 +S'none' +p14679 +sssS'description' +p14680 +(dp14681 +S'editable' +p14682 +I01 +sS'value' +p14683 +g47 +sssS'created_at' +p14684 +(dp14685 +S'mandatory' +p14686 +(dp14687 +S'editable' +p14688 +I00 +sS'value' +p14689 +I00 +ssS'name' +p14690 +(dp14691 +S'editable' +p14692 +I01 +sS'value' +p14693 +S'Date Created' +p14694 +ssS'data_type' +p14695 +(dp14696 +S'editable' +p14697 +I00 +sS'value' +p14698 +S'date_time' +p14699 +ssS'entity_type' +p14700 +(dp14701 +S'editable' +p14702 +I00 +sS'value' +p14703 +S'PublishedFile' +p14704 +ssS'editable' +p14705 +(dp14706 +S'editable' +p14707 +I00 +sS'value' +p14708 +I00 +ssS'unique' +p14709 +(dp14710 +S'editable' +p14711 +I00 +sS'value' +p14712 +I00 +ssS'properties' +p14713 +(dp14714 +S'default_value' +p14715 +(dp14716 +S'editable' +p14717 +I00 +sS'value' +p14718 +NssS'summary_default' +p14719 +(dp14720 +S'editable' +p14721 +I01 +sS'value' +p14722 +S'none' +p14723 +sssS'description' +p14724 +(dp14725 +S'editable' +p14726 +I01 +sS'value' +p14727 +g47 +sssS'published_file_type' +p14728 +(dp14729 +S'mandatory' +p14730 +(dp14731 +S'editable' +p14732 +I00 +sS'value' +p14733 +I00 +ssS'name' +p14734 +(dp14735 +S'editable' +p14736 +I01 +sS'value' +p14737 +S'Published File Type' +p14738 +ssS'data_type' +p14739 +(dp14740 +S'editable' +p14741 +I00 +sS'value' +p14742 +S'entity' +p14743 +ssS'entity_type' +p14744 +(dp14745 +S'editable' +p14746 +I00 +sS'value' +p14747 +S'PublishedFile' +p14748 +ssS'editable' +p14749 +(dp14750 +S'editable' +p14751 +I00 +sS'value' +p14752 +I01 +ssS'unique' +p14753 +(dp14754 +S'editable' +p14755 +I00 +sS'value' +p14756 +I00 +ssS'properties' +p14757 +(dp14758 +S'default_value' +p14759 +(dp14760 +S'editable' +p14761 +I00 +sS'value' +p14762 +NssS'summary_default' +p14763 +(dp14764 +S'editable' +p14765 +I01 +sS'value' +p14766 +S'none' +p14767 +ssS'valid_types' +p14768 +(dp14769 +S'editable' +p14770 +I01 +sS'value' +p14771 +(lp14772 +S'PublishedFileType' +p14773 +asssS'description' +p14774 +(dp14775 +S'editable' +p14776 +I01 +sS'value' +p14777 +g47 +sssS'project' +p14778 +(dp14779 +S'mandatory' +p14780 +(dp14781 +S'editable' +p14782 +I00 +sS'value' +p14783 +I00 +ssS'name' +p14784 +(dp14785 +S'editable' +p14786 +I01 +sS'value' +p14787 +S'Project' +p14788 +ssS'data_type' +p14789 +(dp14790 +S'editable' +p14791 +I00 +sS'value' +p14792 +S'entity' +p14793 +ssS'entity_type' +p14794 +(dp14795 +S'editable' +p14796 +I00 +sS'value' +p14797 +S'PublishedFile' +p14798 +ssS'editable' +p14799 +(dp14800 +S'editable' +p14801 +I00 +sS'value' +p14802 +I01 +ssS'unique' +p14803 +(dp14804 +S'editable' +p14805 +I00 +sS'value' +p14806 +I00 +ssS'properties' +p14807 +(dp14808 +S'default_value' +p14809 +(dp14810 +S'editable' +p14811 +I00 +sS'value' +p14812 +NssS'summary_default' +p14813 +(dp14814 +S'editable' +p14815 +I01 +sS'value' +p14816 +S'none' +p14817 +ssS'valid_types' +p14818 +(dp14819 +S'editable' +p14820 +I01 +sS'value' +p14821 +(lp14822 +S'Project' +p14823 +asssS'description' +p14824 +(dp14825 +S'editable' +p14826 +I01 +sS'value' +p14827 +g47 +sssS'tag_list' +p14828 +(dp14829 +S'mandatory' +p14830 +(dp14831 +S'editable' +p14832 +I00 +sS'value' +p14833 +I00 +ssS'name' +p14834 +(dp14835 +S'editable' +p14836 +I01 +sS'value' +p14837 +S'Tags' +p14838 +ssS'data_type' +p14839 +(dp14840 +S'editable' +p14841 +I00 +sS'value' +p14842 +S'tag_list' +p14843 +ssS'entity_type' +p14844 +(dp14845 +S'editable' +p14846 +I00 +sS'value' +p14847 +S'PublishedFile' +p14848 +ssS'editable' +p14849 +(dp14850 +S'editable' +p14851 +I00 +sS'value' +p14852 +I01 +ssS'unique' +p14853 +(dp14854 +S'editable' +p14855 +I00 +sS'value' +p14856 +I00 +ssS'properties' +p14857 +(dp14858 +S'default_value' +p14859 +(dp14860 +S'editable' +p14861 +I00 +sS'value' +p14862 +NssS'summary_default' +p14863 +(dp14864 +S'editable' +p14865 +I01 +sS'value' +p14866 +S'none' +p14867 +ssS'valid_types' +p14868 +(dp14869 +S'editable' +p14870 +I01 +sS'value' +p14871 +(lp14872 +S'Tag' +p14873 +asssS'description' +p14874 +(dp14875 +S'editable' +p14876 +I01 +sS'value' +p14877 +g47 +sssS'notes' +p14878 +(dp14879 +S'mandatory' +p14880 +(dp14881 +S'editable' +p14882 +I00 +sS'value' +p14883 +I00 +ssS'name' +p14884 +(dp14885 +S'editable' +p14886 +I01 +sS'value' +p14887 +S'Notes' +p14888 +ssS'data_type' +p14889 +(dp14890 +S'editable' +p14891 +I00 +sS'value' +p14892 +S'multi_entity' +p14893 +ssS'entity_type' +p14894 +(dp14895 +S'editable' +p14896 +I00 +sS'value' +p14897 +S'PublishedFile' +p14898 +ssS'editable' +p14899 +(dp14900 +S'editable' +p14901 +I00 +sS'value' +p14902 +I01 +ssS'unique' +p14903 +(dp14904 +S'editable' +p14905 +I00 +sS'value' +p14906 +I00 +ssS'properties' +p14907 +(dp14908 +S'default_value' +p14909 +(dp14910 +S'editable' +p14911 +I00 +sS'value' +p14912 +NssS'summary_default' +p14913 +(dp14914 +S'editable' +p14915 +I01 +sS'value' +p14916 +S'none' +p14917 +ssS'valid_types' +p14918 +(dp14919 +S'editable' +p14920 +I01 +sS'value' +p14921 +(lp14922 +S'Note' +p14923 +asssS'description' +p14924 +(dp14925 +S'editable' +p14926 +I01 +sS'value' +p14927 +g47 +ssssS'ShootDaySceneConnection' +p14928 +(dp14929 +S'cached_display_name' +p14930 +(dp14931 +S'mandatory' +p14932 +(dp14933 +S'editable' +p14934 +I00 +sS'value' +p14935 +I00 +ssS'name' +p14936 +(dp14937 +S'editable' +p14938 +I01 +sS'value' +p14939 +S'Cached Display Name' +p14940 +ssS'data_type' +p14941 +(dp14942 +S'editable' +p14943 +I00 +sS'value' +p14944 +S'text' +p14945 +ssS'entity_type' +p14946 +(dp14947 +S'editable' +p14948 +I00 +sS'value' +p14949 +S'ShootDaySceneConnection' +p14950 +ssS'editable' +p14951 +(dp14952 +S'editable' +p14953 +I00 +sS'value' +p14954 +I01 +ssS'unique' +p14955 +(dp14956 +S'editable' +p14957 +I00 +sS'value' +p14958 +I00 +ssS'properties' +p14959 +(dp14960 +S'default_value' +p14961 +(dp14962 +S'editable' +p14963 +I00 +sS'value' +p14964 +NssS'summary_default' +p14965 +(dp14966 +S'editable' +p14967 +I00 +sS'value' +p14968 +S'none' +p14969 +sssS'description' +p14970 +(dp14971 +S'editable' +p14972 +I01 +sS'value' +p14973 +g47 +sssS'scene' +p14974 +(dp14975 +S'mandatory' +p14976 +(dp14977 +S'editable' +p14978 +I00 +sS'value' +p14979 +I00 +ssS'name' +p14980 +(dp14981 +S'editable' +p14982 +I01 +sS'value' +p14983 +S'Scene' +p14984 +ssS'data_type' +p14985 +(dp14986 +S'editable' +p14987 +I00 +sS'value' +p14988 +S'entity' +p14989 +ssS'entity_type' +p14990 +(dp14991 +S'editable' +p14992 +I00 +sS'value' +p14993 +S'ShootDaySceneConnection' +p14994 +ssS'editable' +p14995 +(dp14996 +S'editable' +p14997 +I00 +sS'value' +p14998 +I00 +ssS'unique' +p14999 +(dp15000 +S'editable' +p15001 +I00 +sS'value' +p15002 +I00 +ssS'properties' +p15003 +(dp15004 +S'default_value' +p15005 +(dp15006 +S'editable' +p15007 +I00 +sS'value' +p15008 +NssS'summary_default' +p15009 +(dp15010 +S'editable' +p15011 +I00 +sS'value' +p15012 +S'none' +p15013 +ssS'valid_types' +p15014 +(dp15015 +S'editable' +p15016 +I00 +sS'value' +p15017 +(lp15018 +S'Scene' +p15019 +asssS'description' +p15020 +(dp15021 +S'editable' +p15022 +I01 +sS'value' +p15023 +g47 +sssS'id' +p15024 +(dp15025 +S'mandatory' +p15026 +(dp15027 +S'editable' +p15028 +I00 +sS'value' +p15029 +I01 +ssS'name' +p15030 +(dp15031 +S'editable' +p15032 +I01 +sS'value' +p15033 +S'Id' +p15034 +ssS'data_type' +p15035 +(dp15036 +S'editable' +p15037 +I00 +sS'value' +p15038 +S'number' +p15039 +ssS'entity_type' +p15040 +(dp15041 +S'editable' +p15042 +I00 +sS'value' +p15043 +S'ShootDaySceneConnection' +p15044 +ssS'editable' +p15045 +(dp15046 +S'editable' +p15047 +I00 +sS'value' +p15048 +I00 +ssS'unique' +p15049 +(dp15050 +S'editable' +p15051 +I00 +sS'value' +p15052 +I00 +ssS'properties' +p15053 +(dp15054 +S'default_value' +p15055 +(dp15056 +S'editable' +p15057 +I00 +sS'value' +p15058 +NssS'summary_default' +p15059 +(dp15060 +S'editable' +p15061 +I00 +sS'value' +p15062 +S'none' +p15063 +sssS'description' +p15064 +(dp15065 +S'editable' +p15066 +I01 +sS'value' +p15067 +g47 +sssS'shoot_day' +p15068 +(dp15069 +S'mandatory' +p15070 +(dp15071 +S'editable' +p15072 +I00 +sS'value' +p15073 +I00 +ssS'name' +p15074 +(dp15075 +S'editable' +p15076 +I01 +sS'value' +p15077 +S'Shoot Day' +p15078 +ssS'data_type' +p15079 +(dp15080 +S'editable' +p15081 +I00 +sS'value' +p15082 +S'entity' +p15083 +ssS'entity_type' +p15084 +(dp15085 +S'editable' +p15086 +I00 +sS'value' +p15087 +S'ShootDaySceneConnection' +p15088 +ssS'editable' +p15089 +(dp15090 +S'editable' +p15091 +I00 +sS'value' +p15092 +I00 +ssS'unique' +p15093 +(dp15094 +S'editable' +p15095 +I00 +sS'value' +p15096 +I00 +ssS'properties' +p15097 +(dp15098 +S'default_value' +p15099 +(dp15100 +S'editable' +p15101 +I00 +sS'value' +p15102 +NssS'summary_default' +p15103 +(dp15104 +S'editable' +p15105 +I00 +sS'value' +p15106 +S'none' +p15107 +ssS'valid_types' +p15108 +(dp15109 +S'editable' +p15110 +I00 +sS'value' +p15111 +(lp15112 +S'ShootDay' +p15113 +asssS'description' +p15114 +(dp15115 +S'editable' +p15116 +I01 +sS'value' +p15117 +g47 +ssssS'AssetShotConnection' +p15118 +(dp15119 +S'cached_display_name' +p15120 +(dp15121 +S'mandatory' +p15122 +(dp15123 +S'editable' +p15124 +I00 +sS'value' +p15125 +I00 +ssS'name' +p15126 +(dp15127 +S'editable' +p15128 +I01 +sS'value' +p15129 +S'Cached Display Name' +p15130 +ssS'data_type' +p15131 +(dp15132 +S'editable' +p15133 +I00 +sS'value' +p15134 +S'text' +p15135 +ssS'entity_type' +p15136 +(dp15137 +S'editable' +p15138 +I00 +sS'value' +p15139 +S'AssetShotConnection' +p15140 +ssS'editable' +p15141 +(dp15142 +S'editable' +p15143 +I00 +sS'value' +p15144 +I01 +ssS'unique' +p15145 +(dp15146 +S'editable' +p15147 +I00 +sS'value' +p15148 +I00 +ssS'properties' +p15149 +(dp15150 +S'default_value' +p15151 +(dp15152 +S'editable' +p15153 +I00 +sS'value' +p15154 +NssS'summary_default' +p15155 +(dp15156 +S'editable' +p15157 +I00 +sS'value' +p15158 +S'none' +p15159 +sssS'description' +p15160 +(dp15161 +S'editable' +p15162 +I01 +sS'value' +p15163 +g47 +sssS'shot' +p15164 +(dp15165 +S'mandatory' +p15166 +(dp15167 +S'editable' +p15168 +I00 +sS'value' +p15169 +I00 +ssS'name' +p15170 +(dp15171 +S'editable' +p15172 +I01 +sS'value' +p15173 +S'Shot' +p15174 +ssS'data_type' +p15175 +(dp15176 +S'editable' +p15177 +I00 +sS'value' +p15178 +S'entity' +p15179 +ssS'entity_type' +p15180 +(dp15181 +S'editable' +p15182 +I00 +sS'value' +p15183 +S'AssetShotConnection' +p15184 +ssS'editable' +p15185 +(dp15186 +S'editable' +p15187 +I00 +sS'value' +p15188 +I00 +ssS'unique' +p15189 +(dp15190 +S'editable' +p15191 +I00 +sS'value' +p15192 +I00 +ssS'properties' +p15193 +(dp15194 +S'default_value' +p15195 +(dp15196 +S'editable' +p15197 +I00 +sS'value' +p15198 +NssS'summary_default' +p15199 +(dp15200 +S'editable' +p15201 +I00 +sS'value' +p15202 +S'none' +p15203 +ssS'valid_types' +p15204 +(dp15205 +S'editable' +p15206 +I00 +sS'value' +p15207 +(lp15208 +S'Shot' +p15209 +asssS'description' +p15210 +(dp15211 +S'editable' +p15212 +I01 +sS'value' +p15213 +g47 +sssS'asset' +p15214 +(dp15215 +S'mandatory' +p15216 +(dp15217 +S'editable' +p15218 +I00 +sS'value' +p15219 +I00 +ssS'name' +p15220 +(dp15221 +S'editable' +p15222 +I01 +sS'value' +p15223 +S'Asset' +p15224 +ssS'data_type' +p15225 +(dp15226 +S'editable' +p15227 +I00 +sS'value' +p15228 +S'entity' +p15229 +ssS'entity_type' +p15230 +(dp15231 +S'editable' +p15232 +I00 +sS'value' +p15233 +S'AssetShotConnection' +p15234 +ssS'editable' +p15235 +(dp15236 +S'editable' +p15237 +I00 +sS'value' +p15238 +I00 +ssS'unique' +p15239 +(dp15240 +S'editable' +p15241 +I00 +sS'value' +p15242 +I00 +ssS'properties' +p15243 +(dp15244 +S'default_value' +p15245 +(dp15246 +S'editable' +p15247 +I00 +sS'value' +p15248 +NssS'summary_default' +p15249 +(dp15250 +S'editable' +p15251 +I00 +sS'value' +p15252 +S'none' +p15253 +ssS'valid_types' +p15254 +(dp15255 +S'editable' +p15256 +I00 +sS'value' +p15257 +(lp15258 +S'Asset' +p15259 +asssS'description' +p15260 +(dp15261 +S'editable' +p15262 +I01 +sS'value' +p15263 +g47 +sssS'id' +p15264 +(dp15265 +S'mandatory' +p15266 +(dp15267 +S'editable' +p15268 +I00 +sS'value' +p15269 +I01 +ssS'name' +p15270 +(dp15271 +S'editable' +p15272 +I01 +sS'value' +p15273 +S'Id' +p15274 +ssS'data_type' +p15275 +(dp15276 +S'editable' +p15277 +I00 +sS'value' +p15278 +S'number' +p15279 +ssS'entity_type' +p15280 +(dp15281 +S'editable' +p15282 +I00 +sS'value' +p15283 +S'AssetShotConnection' +p15284 +ssS'editable' +p15285 +(dp15286 +S'editable' +p15287 +I00 +sS'value' +p15288 +I00 +ssS'unique' +p15289 +(dp15290 +S'editable' +p15291 +I00 +sS'value' +p15292 +I00 +ssS'properties' +p15293 +(dp15294 +S'default_value' +p15295 +(dp15296 +S'editable' +p15297 +I00 +sS'value' +p15298 +NssS'summary_default' +p15299 +(dp15300 +S'editable' +p15301 +I00 +sS'value' +p15302 +S'none' +p15303 +sssS'description' +p15304 +(dp15305 +S'editable' +p15306 +I01 +sS'value' +p15307 +g47 +ssssS'TicketTicketConnection' +p15308 +(dp15309 +S'dest_ticket' +p15310 +(dp15311 +S'mandatory' +p15312 +(dp15313 +S'editable' +p15314 +I00 +sS'value' +p15315 +I00 +ssS'name' +p15316 +(dp15317 +S'editable' +p15318 +I01 +sS'value' +p15319 +S'Ticket' +p15320 +ssS'data_type' +p15321 +(dp15322 +S'editable' +p15323 +I00 +sS'value' +p15324 +S'entity' +p15325 +ssS'entity_type' +p15326 +(dp15327 +S'editable' +p15328 +I00 +sS'value' +p15329 +S'TicketTicketConnection' +p15330 +ssS'editable' +p15331 +(dp15332 +S'editable' +p15333 +I00 +sS'value' +p15334 +I00 +ssS'unique' +p15335 +(dp15336 +S'editable' +p15337 +I00 +sS'value' +p15338 +I00 +ssS'properties' +p15339 +(dp15340 +S'default_value' +p15341 +(dp15342 +S'editable' +p15343 +I00 +sS'value' +p15344 +NssS'summary_default' +p15345 +(dp15346 +S'editable' +p15347 +I00 +sS'value' +p15348 +S'none' +p15349 +ssS'valid_types' +p15350 +(dp15351 +S'editable' +p15352 +I00 +sS'value' +p15353 +(lp15354 +S'Ticket' +p15355 +asssS'description' +p15356 +(dp15357 +S'editable' +p15358 +I01 +sS'value' +p15359 +g47 +sssS'cached_display_name' +p15360 +(dp15361 +S'mandatory' +p15362 +(dp15363 +S'editable' +p15364 +I00 +sS'value' +p15365 +I00 +ssS'name' +p15366 +(dp15367 +S'editable' +p15368 +I01 +sS'value' +p15369 +S'Cached Display Name' +p15370 +ssS'data_type' +p15371 +(dp15372 +S'editable' +p15373 +I00 +sS'value' +p15374 +S'text' +p15375 +ssS'entity_type' +p15376 +(dp15377 +S'editable' +p15378 +I00 +sS'value' +p15379 +S'TicketTicketConnection' +p15380 +ssS'editable' +p15381 +(dp15382 +S'editable' +p15383 +I00 +sS'value' +p15384 +I01 +ssS'unique' +p15385 +(dp15386 +S'editable' +p15387 +I00 +sS'value' +p15388 +I00 +ssS'properties' +p15389 +(dp15390 +S'default_value' +p15391 +(dp15392 +S'editable' +p15393 +I00 +sS'value' +p15394 +NssS'summary_default' +p15395 +(dp15396 +S'editable' +p15397 +I00 +sS'value' +p15398 +S'none' +p15399 +sssS'description' +p15400 +(dp15401 +S'editable' +p15402 +I01 +sS'value' +p15403 +g47 +sssS'source_ticket' +p15404 +(dp15405 +S'mandatory' +p15406 +(dp15407 +S'editable' +p15408 +I00 +sS'value' +p15409 +I00 +ssS'name' +p15410 +(dp15411 +S'editable' +p15412 +I01 +sS'value' +p15413 +S'Ticket' +p15414 +ssS'data_type' +p15415 +(dp15416 +S'editable' +p15417 +I00 +sS'value' +p15418 +S'entity' +p15419 +ssS'entity_type' +p15420 +(dp15421 +S'editable' +p15422 +I00 +sS'value' +p15423 +S'TicketTicketConnection' +p15424 +ssS'editable' +p15425 +(dp15426 +S'editable' +p15427 +I00 +sS'value' +p15428 +I00 +ssS'unique' +p15429 +(dp15430 +S'editable' +p15431 +I00 +sS'value' +p15432 +I00 +ssS'properties' +p15433 +(dp15434 +S'default_value' +p15435 +(dp15436 +S'editable' +p15437 +I00 +sS'value' +p15438 +NssS'summary_default' +p15439 +(dp15440 +S'editable' +p15441 +I00 +sS'value' +p15442 +S'none' +p15443 +ssS'valid_types' +p15444 +(dp15445 +S'editable' +p15446 +I00 +sS'value' +p15447 +(lp15448 +S'Ticket' +p15449 +asssS'description' +p15450 +(dp15451 +S'editable' +p15452 +I01 +sS'value' +p15453 +g47 +sssS'id' +p15454 +(dp15455 +S'mandatory' +p15456 +(dp15457 +S'editable' +p15458 +I00 +sS'value' +p15459 +I01 +ssS'name' +p15460 +(dp15461 +S'editable' +p15462 +I01 +sS'value' +p15463 +S'Id' +p15464 +ssS'data_type' +p15465 +(dp15466 +S'editable' +p15467 +I00 +sS'value' +p15468 +S'number' +p15469 +ssS'entity_type' +p15470 +(dp15471 +S'editable' +p15472 +I00 +sS'value' +p15473 +S'TicketTicketConnection' +p15474 +ssS'editable' +p15475 +(dp15476 +S'editable' +p15477 +I00 +sS'value' +p15478 +I00 +ssS'unique' +p15479 +(dp15480 +S'editable' +p15481 +I00 +sS'value' +p15482 +I00 +ssS'properties' +p15483 +(dp15484 +S'default_value' +p15485 +(dp15486 +S'editable' +p15487 +I00 +sS'value' +p15488 +NssS'summary_default' +p15489 +(dp15490 +S'editable' +p15491 +I00 +sS'value' +p15492 +S'none' +p15493 +sssS'description' +p15494 +(dp15495 +S'editable' +p15496 +I01 +sS'value' +p15497 +g47 +ssssS'AssetBlendshapeConnection' +p15498 +(dp15499 +S'cached_display_name' +p15500 +(dp15501 +S'mandatory' +p15502 +(dp15503 +S'editable' +p15504 +I00 +sS'value' +p15505 +I00 +ssS'name' +p15506 +(dp15507 +S'editable' +p15508 +I01 +sS'value' +p15509 +S'Cached Display Name' +p15510 +ssS'data_type' +p15511 +(dp15512 +S'editable' +p15513 +I00 +sS'value' +p15514 +S'text' +p15515 +ssS'entity_type' +p15516 +(dp15517 +S'editable' +p15518 +I00 +sS'value' +p15519 +S'AssetBlendshapeConnection' +p15520 +ssS'editable' +p15521 +(dp15522 +S'editable' +p15523 +I00 +sS'value' +p15524 +I01 +ssS'unique' +p15525 +(dp15526 +S'editable' +p15527 +I00 +sS'value' +p15528 +I00 +ssS'properties' +p15529 +(dp15530 +S'default_value' +p15531 +(dp15532 +S'editable' +p15533 +I00 +sS'value' +p15534 +NssS'summary_default' +p15535 +(dp15536 +S'editable' +p15537 +I00 +sS'value' +p15538 +S'none' +p15539 +sssS'description' +p15540 +(dp15541 +S'editable' +p15542 +I01 +sS'value' +p15543 +g47 +sssS'asset' +p15544 +(dp15545 +S'mandatory' +p15546 +(dp15547 +S'editable' +p15548 +I00 +sS'value' +p15549 +I00 +ssS'name' +p15550 +(dp15551 +S'editable' +p15552 +I01 +sS'value' +p15553 +S'Asset' +p15554 +ssS'data_type' +p15555 +(dp15556 +S'editable' +p15557 +I00 +sS'value' +p15558 +S'entity' +p15559 +ssS'entity_type' +p15560 +(dp15561 +S'editable' +p15562 +I00 +sS'value' +p15563 +S'AssetBlendshapeConnection' +p15564 +ssS'editable' +p15565 +(dp15566 +S'editable' +p15567 +I00 +sS'value' +p15568 +I00 +ssS'unique' +p15569 +(dp15570 +S'editable' +p15571 +I00 +sS'value' +p15572 +I00 +ssS'properties' +p15573 +(dp15574 +S'default_value' +p15575 +(dp15576 +S'editable' +p15577 +I00 +sS'value' +p15578 +NssS'summary_default' +p15579 +(dp15580 +S'editable' +p15581 +I00 +sS'value' +p15582 +S'none' +p15583 +ssS'valid_types' +p15584 +(dp15585 +S'editable' +p15586 +I00 +sS'value' +p15587 +(lp15588 +S'Asset' +p15589 +asssS'description' +p15590 +(dp15591 +S'editable' +p15592 +I01 +sS'value' +p15593 +g47 +sssS'blendshape' +p15594 +(dp15595 +S'mandatory' +p15596 +(dp15597 +S'editable' +p15598 +I00 +sS'value' +p15599 +I00 +ssS'name' +p15600 +(dp15601 +S'editable' +p15602 +I01 +sS'value' +p15603 +S'Blendshape' +p15604 +ssS'data_type' +p15605 +(dp15606 +S'editable' +p15607 +I00 +sS'value' +p15608 +S'entity' +p15609 +ssS'entity_type' +p15610 +(dp15611 +S'editable' +p15612 +I00 +sS'value' +p15613 +S'AssetBlendshapeConnection' +p15614 +ssS'editable' +p15615 +(dp15616 +S'editable' +p15617 +I00 +sS'value' +p15618 +I00 +ssS'unique' +p15619 +(dp15620 +S'editable' +p15621 +I00 +sS'value' +p15622 +I00 +ssS'properties' +p15623 +(dp15624 +S'default_value' +p15625 +(dp15626 +S'editable' +p15627 +I00 +sS'value' +p15628 +NssS'summary_default' +p15629 +(dp15630 +S'editable' +p15631 +I00 +sS'value' +p15632 +S'none' +p15633 +ssS'valid_types' +p15634 +(dp15635 +S'editable' +p15636 +I00 +sS'value' +p15637 +(lp15638 +S'Blendshape' +p15639 +asssS'description' +p15640 +(dp15641 +S'editable' +p15642 +I01 +sS'value' +p15643 +g47 +sssS'id' +p15644 +(dp15645 +S'mandatory' +p15646 +(dp15647 +S'editable' +p15648 +I00 +sS'value' +p15649 +I01 +ssS'name' +p15650 +(dp15651 +S'editable' +p15652 +I01 +sS'value' +p15653 +S'Id' +p15654 +ssS'data_type' +p15655 +(dp15656 +S'editable' +p15657 +I00 +sS'value' +p15658 +S'number' +p15659 +ssS'entity_type' +p15660 +(dp15661 +S'editable' +p15662 +I00 +sS'value' +p15663 +S'AssetBlendshapeConnection' +p15664 +ssS'editable' +p15665 +(dp15666 +S'editable' +p15667 +I00 +sS'value' +p15668 +I00 +ssS'unique' +p15669 +(dp15670 +S'editable' +p15671 +I00 +sS'value' +p15672 +I00 +ssS'properties' +p15673 +(dp15674 +S'default_value' +p15675 +(dp15676 +S'editable' +p15677 +I00 +sS'value' +p15678 +NssS'summary_default' +p15679 +(dp15680 +S'editable' +p15681 +I00 +sS'value' +p15682 +S'none' +p15683 +sssS'description' +p15684 +(dp15685 +S'editable' +p15686 +I01 +sS'value' +p15687 +g47 +ssssS'PageSetting' +p15688 +(dp15689 +S'created_at' +p15690 +(dp15691 +S'mandatory' +p15692 +(dp15693 +S'editable' +p15694 +I00 +sS'value' +p15695 +I00 +ssS'name' +p15696 +(dp15697 +S'editable' +p15698 +I01 +sS'value' +p15699 +S'Date Created' +p15700 +ssS'data_type' +p15701 +(dp15702 +S'editable' +p15703 +I00 +sS'value' +p15704 +S'date_time' +p15705 +ssS'entity_type' +p15706 +(dp15707 +S'editable' +p15708 +I00 +sS'value' +p15709 +S'PageSetting' +p15710 +ssS'editable' +p15711 +(dp15712 +S'editable' +p15713 +I00 +sS'value' +p15714 +I00 +ssS'unique' +p15715 +(dp15716 +S'editable' +p15717 +I00 +sS'value' +p15718 +I00 +ssS'properties' +p15719 +(dp15720 +S'default_value' +p15721 +(dp15722 +S'editable' +p15723 +I00 +sS'value' +p15724 +NssS'summary_default' +p15725 +(dp15726 +S'editable' +p15727 +I01 +sS'value' +p15728 +S'none' +p15729 +sssS'description' +p15730 +(dp15731 +S'editable' +p15732 +I01 +sS'value' +p15733 +g47 +sssS'settings_json' +p15734 +(dp15735 +S'mandatory' +p15736 +(dp15737 +S'editable' +p15738 +I00 +sS'value' +p15739 +I00 +ssS'name' +p15740 +(dp15741 +S'editable' +p15742 +I01 +sS'value' +p15743 +S'Settings' +p15744 +ssS'data_type' +p15745 +(dp15746 +S'editable' +p15747 +I00 +sS'value' +p15748 +S'text' +p15749 +ssS'entity_type' +p15750 +(dp15751 +S'editable' +p15752 +I00 +sS'value' +p15753 +S'PageSetting' +p15754 +ssS'editable' +p15755 +(dp15756 +S'editable' +p15757 +I00 +sS'value' +p15758 +I01 +ssS'unique' +p15759 +(dp15760 +S'editable' +p15761 +I00 +sS'value' +p15762 +I00 +ssS'properties' +p15763 +(dp15764 +S'default_value' +p15765 +(dp15766 +S'editable' +p15767 +I00 +sS'value' +p15768 +NssS'summary_default' +p15769 +(dp15770 +S'editable' +p15771 +I01 +sS'value' +p15772 +S'none' +p15773 +sssS'description' +p15774 +(dp15775 +S'editable' +p15776 +I01 +sS'value' +p15777 +g47 +sssS'page' +p15778 +(dp15779 +S'mandatory' +p15780 +(dp15781 +S'editable' +p15782 +I00 +sS'value' +p15783 +I00 +ssS'name' +p15784 +(dp15785 +S'editable' +p15786 +I01 +sS'value' +p15787 +S'Page' +p15788 +ssS'data_type' +p15789 +(dp15790 +S'editable' +p15791 +I00 +sS'value' +p15792 +S'entity' +p15793 +ssS'entity_type' +p15794 +(dp15795 +S'editable' +p15796 +I00 +sS'value' +p15797 +S'PageSetting' +p15798 +ssS'editable' +p15799 +(dp15800 +S'editable' +p15801 +I00 +sS'value' +p15802 +I01 +ssS'unique' +p15803 +(dp15804 +S'editable' +p15805 +I00 +sS'value' +p15806 +I00 +ssS'properties' +p15807 +(dp15808 +S'default_value' +p15809 +(dp15810 +S'editable' +p15811 +I00 +sS'value' +p15812 +NssS'summary_default' +p15813 +(dp15814 +S'editable' +p15815 +I01 +sS'value' +p15816 +S'none' +p15817 +ssS'valid_types' +p15818 +(dp15819 +S'editable' +p15820 +I01 +sS'value' +p15821 +(lp15822 +S'Page' +p15823 +asssS'description' +p15824 +(dp15825 +S'editable' +p15826 +I01 +sS'value' +p15827 +g47 +sssS'user' +p15828 +(dp15829 +S'mandatory' +p15830 +(dp15831 +S'editable' +p15832 +I00 +sS'value' +p15833 +I00 +ssS'name' +p15834 +(dp15835 +S'editable' +p15836 +I01 +sS'value' +p15837 +S'User' +p15838 +ssS'data_type' +p15839 +(dp15840 +S'editable' +p15841 +I00 +sS'value' +p15842 +S'entity' +p15843 +ssS'entity_type' +p15844 +(dp15845 +S'editable' +p15846 +I00 +sS'value' +p15847 +S'PageSetting' +p15848 +ssS'editable' +p15849 +(dp15850 +S'editable' +p15851 +I00 +sS'value' +p15852 +I01 +ssS'unique' +p15853 +(dp15854 +S'editable' +p15855 +I00 +sS'value' +p15856 +I00 +ssS'properties' +p15857 +(dp15858 +S'default_value' +p15859 +(dp15860 +S'editable' +p15861 +I00 +sS'value' +p15862 +NssS'summary_default' +p15863 +(dp15864 +S'editable' +p15865 +I01 +sS'value' +p15866 +S'none' +p15867 +ssS'valid_types' +p15868 +(dp15869 +S'editable' +p15870 +I01 +sS'value' +p15871 +(lp15872 +S'HumanUser' +p15873 +asssS'description' +p15874 +(dp15875 +S'editable' +p15876 +I01 +sS'value' +p15877 +g47 +sssS'cached_display_name' +p15878 +(dp15879 +S'mandatory' +p15880 +(dp15881 +S'editable' +p15882 +I00 +sS'value' +p15883 +I00 +ssS'name' +p15884 +(dp15885 +S'editable' +p15886 +I01 +sS'value' +p15887 +S'Cached Display Name' +p15888 +ssS'data_type' +p15889 +(dp15890 +S'editable' +p15891 +I00 +sS'value' +p15892 +S'text' +p15893 +ssS'entity_type' +p15894 +(dp15895 +S'editable' +p15896 +I00 +sS'value' +p15897 +S'PageSetting' +p15898 +ssS'editable' +p15899 +(dp15900 +S'editable' +p15901 +I00 +sS'value' +p15902 +I01 +ssS'unique' +p15903 +(dp15904 +S'editable' +p15905 +I00 +sS'value' +p15906 +I00 +ssS'properties' +p15907 +(dp15908 +S'default_value' +p15909 +(dp15910 +S'editable' +p15911 +I00 +sS'value' +p15912 +NssS'summary_default' +p15913 +(dp15914 +S'editable' +p15915 +I00 +sS'value' +p15916 +S'none' +p15917 +sssS'description' +p15918 +(dp15919 +S'editable' +p15920 +I01 +sS'value' +p15921 +g47 +sssS'id' +p15922 +(dp15923 +S'mandatory' +p15924 +(dp15925 +S'editable' +p15926 +I00 +sS'value' +p15927 +I00 +ssS'name' +p15928 +(dp15929 +S'editable' +p15930 +I01 +sS'value' +p15931 +S'Id' +p15932 +ssS'data_type' +p15933 +(dp15934 +S'editable' +p15935 +I00 +sS'value' +p15936 +S'number' +p15937 +ssS'entity_type' +p15938 +(dp15939 +S'editable' +p15940 +I00 +sS'value' +p15941 +S'PageSetting' +p15942 +ssS'editable' +p15943 +(dp15944 +S'editable' +p15945 +I00 +sS'value' +p15946 +I00 +ssS'unique' +p15947 +(dp15948 +S'editable' +p15949 +I00 +sS'value' +p15950 +I00 +ssS'properties' +p15951 +(dp15952 +S'default_value' +p15953 +(dp15954 +S'editable' +p15955 +I00 +sS'value' +p15956 +NssS'summary_default' +p15957 +(dp15958 +S'editable' +p15959 +I01 +sS'value' +p15960 +S'none' +p15961 +sssS'description' +p15962 +(dp15963 +S'editable' +p15964 +I01 +sS'value' +p15965 +g47 +ssssS'Status' +p15966 +(dp15967 +S'code' +p15968 +(dp15969 +S'mandatory' +p15970 +(dp15971 +S'editable' +p15972 +I00 +sS'value' +p15973 +I00 +ssS'name' +p15974 +(dp15975 +S'editable' +p15976 +I01 +sS'value' +p15977 +S'Short Code' +p15978 +ssS'data_type' +p15979 +(dp15980 +S'editable' +p15981 +I00 +sS'value' +p15982 +S'text' +p15983 +ssS'entity_type' +p15984 +(dp15985 +S'editable' +p15986 +I00 +sS'value' +p15987 +S'Status' +p15988 +ssS'editable' +p15989 +(dp15990 +S'editable' +p15991 +I00 +sS'value' +p15992 +I00 +ssS'unique' +p15993 +(dp15994 +S'editable' +p15995 +I00 +sS'value' +p15996 +I00 +ssS'properties' +p15997 +(dp15998 +S'default_value' +p15999 +(dp16000 +S'editable' +p16001 +I00 +sS'value' +p16002 +NssS'summary_default' +p16003 +(dp16004 +S'editable' +p16005 +I01 +sS'value' +p16006 +S'none' +p16007 +sssS'description' +p16008 +(dp16009 +S'editable' +p16010 +I01 +sS'value' +p16011 +g47 +sssS'name' +p16012 +(dp16013 +S'mandatory' +p16014 +(dp16015 +S'editable' +p16016 +I00 +sS'value' +p16017 +I01 +ssS'name' +p16018 +(dp16019 +S'editable' +p16020 +I01 +sS'value' +p16021 +S'Status Name' +p16022 +ssS'data_type' +p16023 +(dp16024 +S'editable' +p16025 +I00 +sS'value' +p16026 +S'text' +p16027 +ssS'entity_type' +p16028 +(dp16029 +S'editable' +p16030 +I00 +sS'value' +p16031 +S'Status' +p16032 +ssS'editable' +p16033 +(dp16034 +S'editable' +p16035 +I00 +sS'value' +p16036 +I01 +ssS'unique' +p16037 +(dp16038 +S'editable' +p16039 +I00 +sS'value' +p16040 +I00 +ssS'properties' +p16041 +(dp16042 +S'default_value' +p16043 +(dp16044 +S'editable' +p16045 +I00 +sS'value' +p16046 +NssS'summary_default' +p16047 +(dp16048 +S'editable' +p16049 +I01 +sS'value' +p16050 +S'none' +p16051 +sssS'description' +p16052 +(dp16053 +S'editable' +p16054 +I01 +sS'value' +p16055 +g47 +sssS'created_at' +p16056 +(dp16057 +S'mandatory' +p16058 +(dp16059 +S'editable' +p16060 +I00 +sS'value' +p16061 +I00 +ssS'name' +p16062 +(dp16063 +S'editable' +p16064 +I01 +sS'value' +p16065 +S'Date Created' +p16066 +ssS'data_type' +p16067 +(dp16068 +S'editable' +p16069 +I00 +sS'value' +p16070 +S'date_time' +p16071 +ssS'entity_type' +p16072 +(dp16073 +S'editable' +p16074 +I00 +sS'value' +p16075 +S'Status' +p16076 +ssS'editable' +p16077 +(dp16078 +S'editable' +p16079 +I00 +sS'value' +p16080 +I00 +ssS'unique' +p16081 +(dp16082 +S'editable' +p16083 +I00 +sS'value' +p16084 +I00 +ssS'properties' +p16085 +(dp16086 +S'default_value' +p16087 +(dp16088 +S'editable' +p16089 +I00 +sS'value' +p16090 +NssS'summary_default' +p16091 +(dp16092 +S'editable' +p16093 +I00 +sS'value' +p16094 +S'none' +p16095 +sssS'description' +p16096 +(dp16097 +S'editable' +p16098 +I01 +sS'value' +p16099 +g47 +sssS'updated_at' +p16100 +(dp16101 +S'mandatory' +p16102 +(dp16103 +S'editable' +p16104 +I00 +sS'value' +p16105 +I00 +ssS'name' +p16106 +(dp16107 +S'editable' +p16108 +I01 +sS'value' +p16109 +S'Date Updated' +p16110 +ssS'data_type' +p16111 +(dp16112 +S'editable' +p16113 +I00 +sS'value' +p16114 +S'date_time' +p16115 +ssS'entity_type' +p16116 +(dp16117 +S'editable' +p16118 +I00 +sS'value' +p16119 +S'Status' +p16120 +ssS'editable' +p16121 +(dp16122 +S'editable' +p16123 +I00 +sS'value' +p16124 +I00 +ssS'unique' +p16125 +(dp16126 +S'editable' +p16127 +I00 +sS'value' +p16128 +I00 +ssS'properties' +p16129 +(dp16130 +S'default_value' +p16131 +(dp16132 +S'editable' +p16133 +I00 +sS'value' +p16134 +NssS'summary_default' +p16135 +(dp16136 +S'editable' +p16137 +I00 +sS'value' +p16138 +S'none' +p16139 +sssS'description' +p16140 +(dp16141 +S'editable' +p16142 +I01 +sS'value' +p16143 +g47 +sssS'created_by' +p16144 +(dp16145 +S'mandatory' +p16146 +(dp16147 +S'editable' +p16148 +I00 +sS'value' +p16149 +I00 +ssS'name' +p16150 +(dp16151 +S'editable' +p16152 +I01 +sS'value' +p16153 +S'Created by' +p16154 +ssS'data_type' +p16155 +(dp16156 +S'editable' +p16157 +I00 +sS'value' +p16158 +S'entity' +p16159 +ssS'entity_type' +p16160 +(dp16161 +S'editable' +p16162 +I00 +sS'value' +p16163 +S'Status' +p16164 +ssS'editable' +p16165 +(dp16166 +S'editable' +p16167 +I00 +sS'value' +p16168 +I00 +ssS'unique' +p16169 +(dp16170 +S'editable' +p16171 +I00 +sS'value' +p16172 +I00 +ssS'properties' +p16173 +(dp16174 +S'default_value' +p16175 +(dp16176 +S'editable' +p16177 +I00 +sS'value' +p16178 +NssS'summary_default' +p16179 +(dp16180 +S'editable' +p16181 +I00 +sS'value' +p16182 +S'none' +p16183 +ssS'valid_types' +p16184 +(dp16185 +S'editable' +p16186 +I00 +sS'value' +p16187 +(lp16188 +S'HumanUser' +p16189 +aS'ApiUser' +p16190 +asssS'description' +p16191 +(dp16192 +S'editable' +p16193 +I01 +sS'value' +p16194 +g47 +sssS'system' +p16195 +(dp16196 +S'mandatory' +p16197 +(dp16198 +S'editable' +p16199 +I00 +sS'value' +p16200 +I00 +ssS'name' +p16201 +(dp16202 +S'editable' +p16203 +I01 +sS'value' +p16204 +S'Locked by System' +p16205 +ssS'data_type' +p16206 +(dp16207 +S'editable' +p16208 +I00 +sS'value' +p16209 +S'checkbox' +p16210 +ssS'entity_type' +p16211 +(dp16212 +S'editable' +p16213 +I00 +sS'value' +p16214 +S'Status' +p16215 +ssS'editable' +p16216 +(dp16217 +S'editable' +p16218 +I00 +sS'value' +p16219 +I00 +ssS'unique' +p16220 +(dp16221 +S'editable' +p16222 +I00 +sS'value' +p16223 +I00 +ssS'properties' +p16224 +(dp16225 +S'default_value' +p16226 +(dp16227 +S'editable' +p16228 +I00 +sS'value' +p16229 +I00 +ssS'summary_default' +p16230 +(dp16231 +S'editable' +p16232 +I00 +sS'value' +p16233 +S'none' +p16234 +sssS'description' +p16235 +(dp16236 +S'editable' +p16237 +I01 +sS'value' +p16238 +g47 +sssS'bg_color' +p16239 +(dp16240 +S'mandatory' +p16241 +(dp16242 +S'editable' +p16243 +I00 +sS'value' +p16244 +I00 +ssS'name' +p16245 +(dp16246 +S'editable' +p16247 +I01 +sS'value' +p16248 +S'Background Color' +p16249 +ssS'data_type' +p16250 +(dp16251 +S'editable' +p16252 +I00 +sS'value' +p16253 +S'color' +p16254 +ssS'entity_type' +p16255 +(dp16256 +S'editable' +p16257 +I00 +sS'value' +p16258 +S'Status' +p16259 +ssS'editable' +p16260 +(dp16261 +S'editable' +p16262 +I00 +sS'value' +p16263 +I01 +ssS'unique' +p16264 +(dp16265 +S'editable' +p16266 +I00 +sS'value' +p16267 +I00 +ssS'properties' +p16268 +(dp16269 +S'default_value' +p16270 +(dp16271 +S'editable' +p16272 +I00 +sS'value' +p16273 +NssS'summary_default' +p16274 +(dp16275 +S'editable' +p16276 +I00 +sS'value' +p16277 +S'none' +p16278 +sssS'description' +p16279 +(dp16280 +S'editable' +p16281 +I01 +sS'value' +p16282 +g47 +sssS'updated_by' +p16283 +(dp16284 +S'mandatory' +p16285 +(dp16286 +S'editable' +p16287 +I00 +sS'value' +p16288 +I00 +ssS'name' +p16289 +(dp16290 +S'editable' +p16291 +I01 +sS'value' +p16292 +S'Updated by' +p16293 +ssS'data_type' +p16294 +(dp16295 +S'editable' +p16296 +I00 +sS'value' +p16297 +S'entity' +p16298 +ssS'entity_type' +p16299 +(dp16300 +S'editable' +p16301 +I00 +sS'value' +p16302 +S'Status' +p16303 +ssS'editable' +p16304 +(dp16305 +S'editable' +p16306 +I00 +sS'value' +p16307 +I00 +ssS'unique' +p16308 +(dp16309 +S'editable' +p16310 +I00 +sS'value' +p16311 +I00 +ssS'properties' +p16312 +(dp16313 +S'default_value' +p16314 +(dp16315 +S'editable' +p16316 +I00 +sS'value' +p16317 +NssS'summary_default' +p16318 +(dp16319 +S'editable' +p16320 +I00 +sS'value' +p16321 +S'none' +p16322 +ssS'valid_types' +p16323 +(dp16324 +S'editable' +p16325 +I00 +sS'value' +p16326 +(lp16327 +S'HumanUser' +p16328 +aS'ApiUser' +p16329 +asssS'description' +p16330 +(dp16331 +S'editable' +p16332 +I01 +sS'value' +p16333 +g47 +sssS'cached_display_name' +p16334 +(dp16335 +S'mandatory' +p16336 +(dp16337 +S'editable' +p16338 +I00 +sS'value' +p16339 +I00 +ssS'name' +p16340 +(dp16341 +S'editable' +p16342 +I01 +sS'value' +p16343 +S'Cached Display Name' +p16344 +ssS'data_type' +p16345 +(dp16346 +S'editable' +p16347 +I00 +sS'value' +p16348 +S'text' +p16349 +ssS'entity_type' +p16350 +(dp16351 +S'editable' +p16352 +I00 +sS'value' +p16353 +S'Status' +p16354 +ssS'editable' +p16355 +(dp16356 +S'editable' +p16357 +I00 +sS'value' +p16358 +I01 +ssS'unique' +p16359 +(dp16360 +S'editable' +p16361 +I00 +sS'value' +p16362 +I00 +ssS'properties' +p16363 +(dp16364 +S'default_value' +p16365 +(dp16366 +S'editable' +p16367 +I00 +sS'value' +p16368 +NssS'summary_default' +p16369 +(dp16370 +S'editable' +p16371 +I00 +sS'value' +p16372 +S'none' +p16373 +sssS'description' +p16374 +(dp16375 +S'editable' +p16376 +I01 +sS'value' +p16377 +g47 +sssS'id' +p16378 +(dp16379 +S'mandatory' +p16380 +(dp16381 +S'editable' +p16382 +I00 +sS'value' +p16383 +I00 +ssS'name' +p16384 +(dp16385 +S'editable' +p16386 +I01 +sS'value' +p16387 +S'Id' +p16388 +ssS'data_type' +p16389 +(dp16390 +S'editable' +p16391 +I00 +sS'value' +p16392 +S'number' +p16393 +ssS'entity_type' +p16394 +(dp16395 +S'editable' +p16396 +I00 +sS'value' +p16397 +S'Status' +p16398 +ssS'editable' +p16399 +(dp16400 +S'editable' +p16401 +I00 +sS'value' +p16402 +I00 +ssS'unique' +p16403 +(dp16404 +S'editable' +p16405 +I00 +sS'value' +p16406 +I00 +ssS'properties' +p16407 +(dp16408 +S'default_value' +p16409 +(dp16410 +S'editable' +p16411 +I00 +sS'value' +p16412 +NssS'summary_default' +p16413 +(dp16414 +S'editable' +p16415 +I00 +sS'value' +p16416 +S'none' +p16417 +sssS'description' +p16418 +(dp16419 +S'editable' +p16420 +I01 +sS'value' +p16421 +g47 +sssS'icon' +p16422 +(dp16423 +S'mandatory' +p16424 +(dp16425 +S'editable' +p16426 +I00 +sS'value' +p16427 +I01 +ssS'name' +p16428 +(dp16429 +S'editable' +p16430 +I01 +sS'value' +p16431 +S'Icon' +p16432 +ssS'data_type' +p16433 +(dp16434 +S'editable' +p16435 +I00 +sS'value' +p16436 +S'entity' +p16437 +ssS'entity_type' +p16438 +(dp16439 +S'editable' +p16440 +I00 +sS'value' +p16441 +S'Status' +p16442 +ssS'editable' +p16443 +(dp16444 +S'editable' +p16445 +I00 +sS'value' +p16446 +I01 +ssS'unique' +p16447 +(dp16448 +S'editable' +p16449 +I00 +sS'value' +p16450 +I00 +ssS'properties' +p16451 +(dp16452 +S'default_value' +p16453 +(dp16454 +S'editable' +p16455 +I00 +sS'value' +p16456 +NssS'summary_default' +p16457 +(dp16458 +S'editable' +p16459 +I00 +sS'value' +p16460 +S'none' +p16461 +ssS'valid_types' +p16462 +(dp16463 +S'editable' +p16464 +I00 +sS'value' +p16465 +(lp16466 +S'Icon' +p16467 +asssS'description' +p16468 +(dp16469 +S'editable' +p16470 +I01 +sS'value' +p16471 +g47 +ssssS'Reply' +p16472 +(dp16473 +S'created_at' +p16474 +(dp16475 +S'mandatory' +p16476 +(dp16477 +S'editable' +p16478 +I00 +sS'value' +p16479 +I00 +ssS'name' +p16480 +(dp16481 +S'editable' +p16482 +I01 +sS'value' +p16483 +S'Date Created' +p16484 +ssS'data_type' +p16485 +(dp16486 +S'editable' +p16487 +I00 +sS'value' +p16488 +S'date_time' +p16489 +ssS'entity_type' +p16490 +(dp16491 +S'editable' +p16492 +I00 +sS'value' +p16493 +S'Reply' +p16494 +ssS'editable' +p16495 +(dp16496 +S'editable' +p16497 +I00 +sS'value' +p16498 +I00 +ssS'unique' +p16499 +(dp16500 +S'editable' +p16501 +I00 +sS'value' +p16502 +I00 +ssS'properties' +p16503 +(dp16504 +S'default_value' +p16505 +(dp16506 +S'editable' +p16507 +I00 +sS'value' +p16508 +NssS'summary_default' +p16509 +(dp16510 +S'editable' +p16511 +I01 +sS'value' +p16512 +S'none' +p16513 +sssS'description' +p16514 +(dp16515 +S'editable' +p16516 +I01 +sS'value' +p16517 +g47 +sssS'entity' +p16518 +(dp16519 +S'mandatory' +p16520 +(dp16521 +S'editable' +p16522 +I00 +sS'value' +p16523 +I00 +ssS'name' +p16524 +(dp16525 +S'editable' +p16526 +I01 +sS'value' +p16527 +S'Link' +p16528 +ssS'data_type' +p16529 +(dp16530 +S'editable' +p16531 +I00 +sS'value' +p16532 +S'entity' +p16533 +ssS'entity_type' +p16534 +(dp16535 +S'editable' +p16536 +I00 +sS'value' +p16537 +S'Reply' +p16538 +ssS'editable' +p16539 +(dp16540 +S'editable' +p16541 +I00 +sS'value' +p16542 +I01 +ssS'unique' +p16543 +(dp16544 +S'editable' +p16545 +I00 +sS'value' +p16546 +I00 +ssS'properties' +p16547 +(dp16548 +S'default_value' +p16549 +(dp16550 +S'editable' +p16551 +I00 +sS'value' +p16552 +NssS'summary_default' +p16553 +(dp16554 +S'editable' +p16555 +I01 +sS'value' +p16556 +S'none' +p16557 +ssS'valid_types' +p16558 +(dp16559 +S'editable' +p16560 +I01 +sS'value' +p16561 +(lp16562 +S'ApiUser' +p16563 +aS'AppWelcome' +p16564 +aS'Asset' +p16565 +aS'AssetLibrary' +p16566 +aS'Attachment' +p16567 +aS'Banner' +p16568 +aS'Booking' +p16569 +aS'CustomEntity01' +p16570 +aS'CustomEntity02' +p16571 +aS'CustomEntity03' +p16572 +aS'CustomEntity04' +p16573 +aS'CustomEntity05' +p16574 +aS'CustomNonProjectEntity01' +p16575 +aS'CustomNonProjectEntity02' +p16576 +aS'CustomNonProjectEntity03' +p16577 +aS'Department' +p16578 +aS'Element' +p16579 +aS'Group' +p16580 +aS'HumanUser' +p16581 +aS'Icon' +p16582 +aS'LocalStorage' +p16583 +aS'Note' +p16584 +aS'Page' +p16585 +aS'PermissionRuleSet' +p16586 +aS'Phase' +p16587 +aS'PipelineConfiguration' +p16588 +aS'Playlist' +p16589 +aS'Project' +p16590 +aS'PublishedFile' +p16591 +aS'PublishedFileDependency' +p16592 +aS'PublishedFileType' +p16593 +aS'Scene' +p16594 +aS'Sequence' +p16595 +aS'Shot' +p16596 +aS'Status' +p16597 +aS'Step' +p16598 +aS'Tag' +p16599 +aS'TankDependency' +p16600 +aS'TankPublishedFile' +p16601 +aS'TankType' +p16602 +aS'Task' +p16603 +aS'TaskTemplate' +p16604 +aS'Version' +p16605 +asssS'description' +p16606 +(dp16607 +S'editable' +p16608 +I01 +sS'value' +p16609 +g47 +sssS'content' +p16610 +(dp16611 +S'mandatory' +p16612 +(dp16613 +S'editable' +p16614 +I00 +sS'value' +p16615 +I01 +ssS'name' +p16616 +(dp16617 +S'editable' +p16618 +I01 +sS'value' +p16619 +S'Reply Text' +p16620 +ssS'data_type' +p16621 +(dp16622 +S'editable' +p16623 +I00 +sS'value' +p16624 +S'text' +p16625 +ssS'entity_type' +p16626 +(dp16627 +S'editable' +p16628 +I00 +sS'value' +p16629 +S'Reply' +p16630 +ssS'editable' +p16631 +(dp16632 +S'editable' +p16633 +I00 +sS'value' +p16634 +I01 +ssS'unique' +p16635 +(dp16636 +S'editable' +p16637 +I00 +sS'value' +p16638 +I00 +ssS'properties' +p16639 +(dp16640 +S'default_value' +p16641 +(dp16642 +S'editable' +p16643 +I00 +sS'value' +p16644 +NssS'summary_default' +p16645 +(dp16646 +S'editable' +p16647 +I01 +sS'value' +p16648 +S'none' +p16649 +sssS'description' +p16650 +(dp16651 +S'editable' +p16652 +I01 +sS'value' +p16653 +g47 +sssS'user' +p16654 +(dp16655 +S'mandatory' +p16656 +(dp16657 +S'editable' +p16658 +I00 +sS'value' +p16659 +I00 +ssS'name' +p16660 +(dp16661 +S'editable' +p16662 +I01 +sS'value' +p16663 +S'User' +p16664 +ssS'data_type' +p16665 +(dp16666 +S'editable' +p16667 +I00 +sS'value' +p16668 +S'entity' +p16669 +ssS'entity_type' +p16670 +(dp16671 +S'editable' +p16672 +I00 +sS'value' +p16673 +S'Reply' +p16674 +ssS'editable' +p16675 +(dp16676 +S'editable' +p16677 +I00 +sS'value' +p16678 +I01 +ssS'unique' +p16679 +(dp16680 +S'editable' +p16681 +I00 +sS'value' +p16682 +I00 +ssS'properties' +p16683 +(dp16684 +S'default_value' +p16685 +(dp16686 +S'editable' +p16687 +I00 +sS'value' +p16688 +NssS'summary_default' +p16689 +(dp16690 +S'editable' +p16691 +I01 +sS'value' +p16692 +S'none' +p16693 +ssS'valid_types' +p16694 +(dp16695 +S'editable' +p16696 +I01 +sS'value' +p16697 +(lp16698 +S'HumanUser' +p16699 +aS'ApiUser' +p16700 +asssS'description' +p16701 +(dp16702 +S'editable' +p16703 +I01 +sS'value' +p16704 +g47 +sssS'cached_display_name' +p16705 +(dp16706 +S'mandatory' +p16707 +(dp16708 +S'editable' +p16709 +I00 +sS'value' +p16710 +I00 +ssS'name' +p16711 +(dp16712 +S'editable' +p16713 +I01 +sS'value' +p16714 +S'Cached Display Name' +p16715 +ssS'data_type' +p16716 +(dp16717 +S'editable' +p16718 +I00 +sS'value' +p16719 +S'text' +p16720 +ssS'entity_type' +p16721 +(dp16722 +S'editable' +p16723 +I00 +sS'value' +p16724 +S'Reply' +p16725 +ssS'editable' +p16726 +(dp16727 +S'editable' +p16728 +I00 +sS'value' +p16729 +I01 +ssS'unique' +p16730 +(dp16731 +S'editable' +p16732 +I00 +sS'value' +p16733 +I00 +ssS'properties' +p16734 +(dp16735 +S'default_value' +p16736 +(dp16737 +S'editable' +p16738 +I00 +sS'value' +p16739 +NssS'summary_default' +p16740 +(dp16741 +S'editable' +p16742 +I00 +sS'value' +p16743 +S'none' +p16744 +sssS'description' +p16745 +(dp16746 +S'editable' +p16747 +I01 +sS'value' +p16748 +g47 +sssS'id' +p16749 +(dp16750 +S'mandatory' +p16751 +(dp16752 +S'editable' +p16753 +I00 +sS'value' +p16754 +I00 +ssS'name' +p16755 +(dp16756 +S'editable' +p16757 +I01 +sS'value' +p16758 +S'Id' +p16759 +ssS'data_type' +p16760 +(dp16761 +S'editable' +p16762 +I00 +sS'value' +p16763 +S'number' +p16764 +ssS'entity_type' +p16765 +(dp16766 +S'editable' +p16767 +I00 +sS'value' +p16768 +S'Reply' +p16769 +ssS'editable' +p16770 +(dp16771 +S'editable' +p16772 +I00 +sS'value' +p16773 +I00 +ssS'unique' +p16774 +(dp16775 +S'editable' +p16776 +I00 +sS'value' +p16777 +I00 +ssS'properties' +p16778 +(dp16779 +S'default_value' +p16780 +(dp16781 +S'editable' +p16782 +I00 +sS'value' +p16783 +NssS'summary_default' +p16784 +(dp16785 +S'editable' +p16786 +I01 +sS'value' +p16787 +S'none' +p16788 +sssS'description' +p16789 +(dp16790 +S'editable' +p16791 +I01 +sS'value' +p16792 +g47 +ssssS'Task' +p16793 +(dp16794 +S'open_notes_count' +p16795 +(dp16796 +S'mandatory' +p16797 +(dp16798 +S'editable' +p16799 +I00 +sS'value' +p16800 +I00 +ssS'name' +p16801 +(dp16802 +S'editable' +p16803 +I01 +sS'value' +p16804 +S'Open Notes Count' +p16805 +ssS'data_type' +p16806 +(dp16807 +S'editable' +p16808 +I00 +sS'value' +p16809 +S'text' +p16810 +ssS'entity_type' +p16811 +(dp16812 +S'editable' +p16813 +I00 +sS'value' +p16814 +S'Task' +p16815 +ssS'editable' +p16816 +(dp16817 +S'editable' +p16818 +I00 +sS'value' +p16819 +I00 +ssS'unique' +p16820 +(dp16821 +S'editable' +p16822 +I00 +sS'value' +p16823 +I00 +ssS'properties' +p16824 +(dp16825 +S'default_value' +p16826 +(dp16827 +S'editable' +p16828 +I00 +sS'value' +p16829 +NssS'summary_default' +p16830 +(dp16831 +S'editable' +p16832 +I01 +sS'value' +p16833 +S'none' +p16834 +sssS'description' +p16835 +(dp16836 +S'editable' +p16837 +I01 +sS'value' +p16838 +g47 +sssS'color' +p16839 +(dp16840 +S'mandatory' +p16841 +(dp16842 +S'editable' +p16843 +I00 +sS'value' +p16844 +I00 +ssS'name' +p16845 +(dp16846 +S'editable' +p16847 +I01 +sS'value' +p16848 +S'Gantt Bar Color' +p16849 +ssS'data_type' +p16850 +(dp16851 +S'editable' +p16852 +I00 +sS'value' +p16853 +S'color' +p16854 +ssS'entity_type' +p16855 +(dp16856 +S'editable' +p16857 +I00 +sS'value' +p16858 +S'Task' +p16859 +ssS'editable' +p16860 +(dp16861 +S'editable' +p16862 +I00 +sS'value' +p16863 +I01 +ssS'unique' +p16864 +(dp16865 +S'editable' +p16866 +I00 +sS'value' +p16867 +I00 +ssS'properties' +p16868 +(dp16869 +S'default_value' +p16870 +(dp16871 +S'editable' +p16872 +I00 +sS'value' +p16873 +NssS'summary_default' +p16874 +(dp16875 +S'editable' +p16876 +I01 +sS'value' +p16877 +S'none' +p16878 +sssS'description' +p16879 +(dp16880 +S'editable' +p16881 +I01 +sS'value' +p16882 +g47 +sssS'split_durations' +p16883 +(dp16884 +S'mandatory' +p16885 +(dp16886 +S'editable' +p16887 +I00 +sS'value' +p16888 +I00 +ssS'name' +p16889 +(dp16890 +S'editable' +p16891 +I01 +sS'value' +p16892 +S'Split Durations' +p16893 +ssS'data_type' +p16894 +(dp16895 +S'editable' +p16896 +I00 +sS'value' +p16897 +S'serializable' +p16898 +ssS'entity_type' +p16899 +(dp16900 +S'editable' +p16901 +I00 +sS'value' +p16902 +S'Task' +p16903 +ssS'editable' +p16904 +(dp16905 +S'editable' +p16906 +I00 +sS'value' +p16907 +I00 +ssS'unique' +p16908 +(dp16909 +S'editable' +p16910 +I00 +sS'value' +p16911 +I00 +ssS'properties' +p16912 +(dp16913 +S'default_value' +p16914 +(dp16915 +S'editable' +p16916 +I00 +sS'value' +p16917 +NssS'summary_default' +p16918 +(dp16919 +S'editable' +p16920 +I00 +sS'value' +p16921 +S'none' +p16922 +sssS'description' +p16923 +(dp16924 +S'editable' +p16925 +I01 +sS'value' +p16926 +g47 +sssS'image' +p16927 +(dp16928 +S'mandatory' +p16929 +(dp16930 +S'editable' +p16931 +I00 +sS'value' +p16932 +I00 +ssS'name' +p16933 +(dp16934 +S'editable' +p16935 +I01 +sS'value' +p16936 +S'Thumbnail' +p16937 +ssS'data_type' +p16938 +(dp16939 +S'editable' +p16940 +I00 +sS'value' +p16941 +S'image' +p16942 +ssS'entity_type' +p16943 +(dp16944 +S'editable' +p16945 +I00 +sS'value' +p16946 +S'Task' +p16947 +ssS'editable' +p16948 +(dp16949 +S'editable' +p16950 +I00 +sS'value' +p16951 +I01 +ssS'unique' +p16952 +(dp16953 +S'editable' +p16954 +I00 +sS'value' +p16955 +I00 +ssS'properties' +p16956 +(dp16957 +S'default_value' +p16958 +(dp16959 +S'editable' +p16960 +I00 +sS'value' +p16961 +NssS'summary_default' +p16962 +(dp16963 +S'editable' +p16964 +I01 +sS'value' +p16965 +S'none' +p16966 +sssS'description' +p16967 +(dp16968 +S'editable' +p16969 +I01 +sS'value' +p16970 +g47 +sssS'updated_at' +p16971 +(dp16972 +S'mandatory' +p16973 +(dp16974 +S'editable' +p16975 +I00 +sS'value' +p16976 +I00 +ssS'name' +p16977 +(dp16978 +S'editable' +p16979 +I01 +sS'value' +p16980 +S'Date Updated' +p16981 +ssS'data_type' +p16982 +(dp16983 +S'editable' +p16984 +I00 +sS'value' +p16985 +S'date_time' +p16986 +ssS'entity_type' +p16987 +(dp16988 +S'editable' +p16989 +I00 +sS'value' +p16990 +S'Task' +p16991 +ssS'editable' +p16992 +(dp16993 +S'editable' +p16994 +I00 +sS'value' +p16995 +I00 +ssS'unique' +p16996 +(dp16997 +S'editable' +p16998 +I00 +sS'value' +p16999 +I00 +ssS'properties' +p17000 +(dp17001 +S'default_value' +p17002 +(dp17003 +S'editable' +p17004 +I00 +sS'value' +p17005 +NssS'summary_default' +p17006 +(dp17007 +S'editable' +p17008 +I01 +sS'value' +p17009 +S'none' +p17010 +sssS'description' +p17011 +(dp17012 +S'editable' +p17013 +I01 +sS'value' +p17014 +g47 +sssS'entity' +p17015 +(dp17016 +S'mandatory' +p17017 +(dp17018 +S'editable' +p17019 +I00 +sS'value' +p17020 +I00 +ssS'name' +p17021 +(dp17022 +S'editable' +p17023 +I01 +sS'value' +p17024 +S'Link' +p17025 +ssS'data_type' +p17026 +(dp17027 +S'editable' +p17028 +I00 +sS'value' +p17029 +S'entity' +p17030 +ssS'entity_type' +p17031 +(dp17032 +S'editable' +p17033 +I00 +sS'value' +p17034 +S'Task' +p17035 +ssS'editable' +p17036 +(dp17037 +S'editable' +p17038 +I00 +sS'value' +p17039 +I01 +ssS'unique' +p17040 +(dp17041 +S'editable' +p17042 +I00 +sS'value' +p17043 +I00 +ssS'properties' +p17044 +(dp17045 +S'default_value' +p17046 +(dp17047 +S'editable' +p17048 +I00 +sS'value' +p17049 +NssS'summary_default' +p17050 +(dp17051 +S'editable' +p17052 +I01 +sS'value' +p17053 +S'none' +p17054 +ssS'valid_types' +p17055 +(dp17056 +S'editable' +p17057 +I01 +sS'value' +p17058 +(lp17059 +S'Asset' +p17060 +aS'Element' +p17061 +aS'Scene' +p17062 +aS'Sequence' +p17063 +aS'Shot' +p17064 +aS'Project' +p17065 +asssS'description' +p17066 +(dp17067 +S'editable' +p17068 +I01 +sS'value' +p17069 +g47 +sssS'task_assignees' +p17070 +(dp17071 +S'mandatory' +p17072 +(dp17073 +S'editable' +p17074 +I00 +sS'value' +p17075 +I00 +ssS'name' +p17076 +(dp17077 +S'editable' +p17078 +I01 +sS'value' +p17079 +S'Assigned To' +p17080 +ssS'data_type' +p17081 +(dp17082 +S'editable' +p17083 +I00 +sS'value' +p17084 +S'multi_entity' +p17085 +ssS'entity_type' +p17086 +(dp17087 +S'editable' +p17088 +I00 +sS'value' +p17089 +S'Task' +p17090 +ssS'editable' +p17091 +(dp17092 +S'editable' +p17093 +I00 +sS'value' +p17094 +I01 +ssS'unique' +p17095 +(dp17096 +S'editable' +p17097 +I00 +sS'value' +p17098 +I00 +ssS'properties' +p17099 +(dp17100 +S'default_value' +p17101 +(dp17102 +S'editable' +p17103 +I00 +sS'value' +p17104 +NssS'summary_default' +p17105 +(dp17106 +S'editable' +p17107 +I01 +sS'value' +p17108 +S'none' +p17109 +ssS'valid_types' +p17110 +(dp17111 +S'editable' +p17112 +I01 +sS'value' +p17113 +(lp17114 +S'Group' +p17115 +aS'HumanUser' +p17116 +asssS'description' +p17117 +(dp17118 +S'editable' +p17119 +I01 +sS'value' +p17120 +g47 +sssS'duration' +p17121 +(dp17122 +S'mandatory' +p17123 +(dp17124 +S'editable' +p17125 +I00 +sS'value' +p17126 +I00 +ssS'name' +p17127 +(dp17128 +S'editable' +p17129 +I01 +sS'value' +p17130 +S'Duration' +p17131 +ssS'data_type' +p17132 +(dp17133 +S'editable' +p17134 +I00 +sS'value' +p17135 +S'duration' +p17136 +ssS'entity_type' +p17137 +(dp17138 +S'editable' +p17139 +I00 +sS'value' +p17140 +S'Task' +p17141 +ssS'editable' +p17142 +(dp17143 +S'editable' +p17144 +I00 +sS'value' +p17145 +I01 +ssS'unique' +p17146 +(dp17147 +S'editable' +p17148 +I00 +sS'value' +p17149 +I00 +ssS'properties' +p17150 +(dp17151 +S'default_value' +p17152 +(dp17153 +S'editable' +p17154 +I00 +sS'value' +p17155 +NssS'summary_default' +p17156 +(dp17157 +S'editable' +p17158 +I01 +sS'value' +p17159 +S'sum' +p17160 +sssS'description' +p17161 +(dp17162 +S'editable' +p17163 +I01 +sS'value' +p17164 +g47 +sssS'cached_display_name' +p17165 +(dp17166 +S'mandatory' +p17167 +(dp17168 +S'editable' +p17169 +I00 +sS'value' +p17170 +I00 +ssS'name' +p17171 +(dp17172 +S'editable' +p17173 +I01 +sS'value' +p17174 +S'Cached Display Name' +p17175 +ssS'data_type' +p17176 +(dp17177 +S'editable' +p17178 +I00 +sS'value' +p17179 +S'text' +p17180 +ssS'entity_type' +p17181 +(dp17182 +S'editable' +p17183 +I00 +sS'value' +p17184 +S'Task' +p17185 +ssS'editable' +p17186 +(dp17187 +S'editable' +p17188 +I00 +sS'value' +p17189 +I01 +ssS'unique' +p17190 +(dp17191 +S'editable' +p17192 +I00 +sS'value' +p17193 +I00 +ssS'properties' +p17194 +(dp17195 +S'default_value' +p17196 +(dp17197 +S'editable' +p17198 +I00 +sS'value' +p17199 +NssS'summary_default' +p17200 +(dp17201 +S'editable' +p17202 +I00 +sS'value' +p17203 +S'none' +p17204 +sssS'description' +p17205 +(dp17206 +S'editable' +p17207 +I01 +sS'value' +p17208 +g47 +sssS'id' +p17209 +(dp17210 +S'mandatory' +p17211 +(dp17212 +S'editable' +p17213 +I00 +sS'value' +p17214 +I00 +ssS'name' +p17215 +(dp17216 +S'editable' +p17217 +I01 +sS'value' +p17218 +S'Id' +p17219 +ssS'data_type' +p17220 +(dp17221 +S'editable' +p17222 +I00 +sS'value' +p17223 +S'number' +p17224 +ssS'entity_type' +p17225 +(dp17226 +S'editable' +p17227 +I00 +sS'value' +p17228 +S'Task' +p17229 +ssS'editable' +p17230 +(dp17231 +S'editable' +p17232 +I00 +sS'value' +p17233 +I00 +ssS'unique' +p17234 +(dp17235 +S'editable' +p17236 +I00 +sS'value' +p17237 +I00 +ssS'properties' +p17238 +(dp17239 +S'default_value' +p17240 +(dp17241 +S'editable' +p17242 +I00 +sS'value' +p17243 +NssS'summary_default' +p17244 +(dp17245 +S'editable' +p17246 +I01 +sS'value' +p17247 +S'none' +p17248 +sssS'description' +p17249 +(dp17250 +S'editable' +p17251 +I01 +sS'value' +p17252 +g47 +sssS'pinned' +p17253 +(dp17254 +S'mandatory' +p17255 +(dp17256 +S'editable' +p17257 +I00 +sS'value' +p17258 +I00 +ssS'name' +p17259 +(dp17260 +S'editable' +p17261 +I01 +sS'value' +p17262 +S'Pinned' +p17263 +ssS'data_type' +p17264 +(dp17265 +S'editable' +p17266 +I00 +sS'value' +p17267 +S'checkbox' +p17268 +ssS'entity_type' +p17269 +(dp17270 +S'editable' +p17271 +I00 +sS'value' +p17272 +S'Task' +p17273 +ssS'editable' +p17274 +(dp17275 +S'editable' +p17276 +I00 +sS'value' +p17277 +I01 +ssS'unique' +p17278 +(dp17279 +S'editable' +p17280 +I00 +sS'value' +p17281 +I00 +ssS'properties' +p17282 +(dp17283 +S'default_value' +p17284 +(dp17285 +S'editable' +p17286 +I00 +sS'value' +p17287 +I00 +ssS'summary_default' +p17288 +(dp17289 +S'editable' +p17290 +I01 +sS'value' +p17291 +S'none' +p17292 +sssS'description' +p17293 +(dp17294 +S'editable' +p17295 +I01 +sS'value' +p17296 +g47 +sssS'sg_task_order' +p17297 +(dp17298 +S'mandatory' +p17299 +(dp17300 +S'editable' +p17301 +I00 +sS'value' +p17302 +I00 +ssS'name' +p17303 +(dp17304 +S'editable' +p17305 +I01 +sS'value' +p17306 +S'Task Order' +p17307 +ssS'data_type' +p17308 +(dp17309 +S'editable' +p17310 +I00 +sS'value' +p17311 +S'number' +p17312 +ssS'entity_type' +p17313 +(dp17314 +S'editable' +p17315 +I00 +sS'value' +p17316 +S'Task' +p17317 +ssS'editable' +p17318 +(dp17319 +S'editable' +p17320 +I00 +sS'value' +p17321 +I01 +ssS'unique' +p17322 +(dp17323 +S'editable' +p17324 +I00 +sS'value' +p17325 +I00 +ssS'properties' +p17326 +(dp17327 +S'default_value' +p17328 +(dp17329 +S'editable' +p17330 +I00 +sS'value' +p17331 +NssS'summary_default' +p17332 +(dp17333 +S'editable' +p17334 +I01 +sS'value' +p17335 +S'none' +p17336 +sssS'description' +p17337 +(dp17338 +S'editable' +p17339 +I01 +sS'value' +p17340 +g47 +sssS'downstream_tasks' +p17341 +(dp17342 +S'mandatory' +p17343 +(dp17344 +S'editable' +p17345 +I00 +sS'value' +p17346 +I00 +ssS'name' +p17347 +(dp17348 +S'editable' +p17349 +I01 +sS'value' +p17350 +S'Downstream Dependency' +p17351 +ssS'data_type' +p17352 +(dp17353 +S'editable' +p17354 +I00 +sS'value' +p17355 +S'multi_entity' +p17356 +ssS'entity_type' +p17357 +(dp17358 +S'editable' +p17359 +I00 +sS'value' +p17360 +S'Task' +p17361 +ssS'editable' +p17362 +(dp17363 +S'editable' +p17364 +I00 +sS'value' +p17365 +I01 +ssS'unique' +p17366 +(dp17367 +S'editable' +p17368 +I00 +sS'value' +p17369 +I00 +ssS'properties' +p17370 +(dp17371 +S'default_value' +p17372 +(dp17373 +S'editable' +p17374 +I00 +sS'value' +p17375 +NssS'summary_default' +p17376 +(dp17377 +S'editable' +p17378 +I00 +sS'value' +p17379 +S'none' +p17380 +ssS'valid_types' +p17381 +(dp17382 +S'editable' +p17383 +I00 +sS'value' +p17384 +(lp17385 +S'Task' +p17386 +asssS'description' +p17387 +(dp17388 +S'editable' +p17389 +I01 +sS'value' +p17390 +g47 +sssS'open_notes' +p17391 +(dp17392 +S'mandatory' +p17393 +(dp17394 +S'editable' +p17395 +I00 +sS'value' +p17396 +I00 +ssS'name' +p17397 +(dp17398 +S'editable' +p17399 +I01 +sS'value' +p17400 +S'Open Notes' +p17401 +ssS'data_type' +p17402 +(dp17403 +S'editable' +p17404 +I00 +sS'value' +p17405 +S'multi_entity' +p17406 +ssS'entity_type' +p17407 +(dp17408 +S'editable' +p17409 +I00 +sS'value' +p17410 +S'Task' +p17411 +ssS'editable' +p17412 +(dp17413 +S'editable' +p17414 +I00 +sS'value' +p17415 +I00 +ssS'unique' +p17416 +(dp17417 +S'editable' +p17418 +I00 +sS'value' +p17419 +I00 +ssS'properties' +p17420 +(dp17421 +S'default_value' +p17422 +(dp17423 +S'editable' +p17424 +I00 +sS'value' +p17425 +NssS'summary_default' +p17426 +(dp17427 +S'editable' +p17428 +I01 +sS'value' +p17429 +S'none' +p17430 +ssS'valid_types' +p17431 +(dp17432 +S'editable' +p17433 +I01 +sS'value' +p17434 +(lp17435 +S'Note' +p17436 +asssS'description' +p17437 +(dp17438 +S'editable' +p17439 +I01 +sS'value' +p17440 +g47 +sssS'addressings_cc' +p17441 +(dp17442 +S'mandatory' +p17443 +(dp17444 +S'editable' +p17445 +I00 +sS'value' +p17446 +I00 +ssS'name' +p17447 +(dp17448 +S'editable' +p17449 +I01 +sS'value' +p17450 +S'Cc' +p17451 +ssS'data_type' +p17452 +(dp17453 +S'editable' +p17454 +I00 +sS'value' +p17455 +S'multi_entity' +p17456 +ssS'entity_type' +p17457 +(dp17458 +S'editable' +p17459 +I00 +sS'value' +p17460 +S'Task' +p17461 +ssS'editable' +p17462 +(dp17463 +S'editable' +p17464 +I00 +sS'value' +p17465 +I01 +ssS'unique' +p17466 +(dp17467 +S'editable' +p17468 +I00 +sS'value' +p17469 +I00 +ssS'properties' +p17470 +(dp17471 +S'default_value' +p17472 +(dp17473 +S'editable' +p17474 +I00 +sS'value' +p17475 +NssS'summary_default' +p17476 +(dp17477 +S'editable' +p17478 +I01 +sS'value' +p17479 +S'none' +p17480 +ssS'valid_types' +p17481 +(dp17482 +S'editable' +p17483 +I01 +sS'value' +p17484 +(lp17485 +S'Group' +p17486 +aS'HumanUser' +p17487 +asssS'description' +p17488 +(dp17489 +S'editable' +p17490 +I01 +sS'value' +p17491 +g47 +sssS'inventory_date' +p17492 +(dp17493 +S'mandatory' +p17494 +(dp17495 +S'editable' +p17496 +I00 +sS'value' +p17497 +I00 +ssS'name' +p17498 +(dp17499 +S'editable' +p17500 +I01 +sS'value' +p17501 +S'Inventory Date' +p17502 +ssS'data_type' +p17503 +(dp17504 +S'editable' +p17505 +I00 +sS'value' +p17506 +S'date' +p17507 +ssS'entity_type' +p17508 +(dp17509 +S'editable' +p17510 +I00 +sS'value' +p17511 +S'Task' +p17512 +ssS'editable' +p17513 +(dp17514 +S'editable' +p17515 +I00 +sS'value' +p17516 +I00 +ssS'unique' +p17517 +(dp17518 +S'editable' +p17519 +I00 +sS'value' +p17520 +I00 +ssS'properties' +p17521 +(dp17522 +S'default_value' +p17523 +(dp17524 +S'editable' +p17525 +I00 +sS'value' +p17526 +NssS'summary_default' +p17527 +(dp17528 +S'editable' +p17529 +I00 +sS'value' +p17530 +S'none' +p17531 +sssS'description' +p17532 +(dp17533 +S'editable' +p17534 +I01 +sS'value' +p17535 +g47 +sssS'task_template' +p17536 +(dp17537 +S'mandatory' +p17538 +(dp17539 +S'editable' +p17540 +I00 +sS'value' +p17541 +I00 +ssS'name' +p17542 +(dp17543 +S'editable' +p17544 +I01 +sS'value' +p17545 +S'Task Template' +p17546 +ssS'data_type' +p17547 +(dp17548 +S'editable' +p17549 +I00 +sS'value' +p17550 +S'entity' +p17551 +ssS'entity_type' +p17552 +(dp17553 +S'editable' +p17554 +I00 +sS'value' +p17555 +S'Task' +p17556 +ssS'editable' +p17557 +(dp17558 +S'editable' +p17559 +I00 +sS'value' +p17560 +I01 +ssS'unique' +p17561 +(dp17562 +S'editable' +p17563 +I00 +sS'value' +p17564 +I00 +ssS'properties' +p17565 +(dp17566 +S'default_value' +p17567 +(dp17568 +S'editable' +p17569 +I00 +sS'value' +p17570 +NssS'summary_default' +p17571 +(dp17572 +S'editable' +p17573 +I01 +sS'value' +p17574 +S'none' +p17575 +ssS'valid_types' +p17576 +(dp17577 +S'editable' +p17578 +I01 +sS'value' +p17579 +(lp17580 +S'TaskTemplate' +p17581 +asssS'description' +p17582 +(dp17583 +S'editable' +p17584 +I01 +sS'value' +p17585 +g47 +sssS'created_by' +p17586 +(dp17587 +S'mandatory' +p17588 +(dp17589 +S'editable' +p17590 +I00 +sS'value' +p17591 +I00 +ssS'name' +p17592 +(dp17593 +S'editable' +p17594 +I01 +sS'value' +p17595 +S'Created by' +p17596 +ssS'data_type' +p17597 +(dp17598 +S'editable' +p17599 +I00 +sS'value' +p17600 +S'entity' +p17601 +ssS'entity_type' +p17602 +(dp17603 +S'editable' +p17604 +I00 +sS'value' +p17605 +S'Task' +p17606 +ssS'editable' +p17607 +(dp17608 +S'editable' +p17609 +I00 +sS'value' +p17610 +I00 +ssS'unique' +p17611 +(dp17612 +S'editable' +p17613 +I00 +sS'value' +p17614 +I00 +ssS'properties' +p17615 +(dp17616 +S'default_value' +p17617 +(dp17618 +S'editable' +p17619 +I00 +sS'value' +p17620 +NssS'summary_default' +p17621 +(dp17622 +S'editable' +p17623 +I01 +sS'value' +p17624 +S'none' +p17625 +ssS'valid_types' +p17626 +(dp17627 +S'editable' +p17628 +I01 +sS'value' +p17629 +(lp17630 +S'HumanUser' +p17631 +aS'ApiUser' +p17632 +asssS'description' +p17633 +(dp17634 +S'editable' +p17635 +I01 +sS'value' +p17636 +g47 +sssS'content' +p17637 +(dp17638 +S'mandatory' +p17639 +(dp17640 +S'editable' +p17641 +I00 +sS'value' +p17642 +I01 +ssS'name' +p17643 +(dp17644 +S'editable' +p17645 +I01 +sS'value' +p17646 +S'Task Name' +p17647 +ssS'data_type' +p17648 +(dp17649 +S'editable' +p17650 +I00 +sS'value' +p17651 +S'text' +p17652 +ssS'entity_type' +p17653 +(dp17654 +S'editable' +p17655 +I00 +sS'value' +p17656 +S'Task' +p17657 +ssS'editable' +p17658 +(dp17659 +S'editable' +p17660 +I00 +sS'value' +p17661 +I01 +ssS'unique' +p17662 +(dp17663 +S'editable' +p17664 +I00 +sS'value' +p17665 +I00 +ssS'properties' +p17666 +(dp17667 +S'default_value' +p17668 +(dp17669 +S'editable' +p17670 +I00 +sS'value' +p17671 +NssS'summary_default' +p17672 +(dp17673 +S'editable' +p17674 +I01 +sS'value' +p17675 +S'record_count' +p17676 +sssS'description' +p17677 +(dp17678 +S'editable' +p17679 +I01 +sS'value' +p17680 +g47 +sssS'sg_status_list' +p17681 +(dp17682 +S'mandatory' +p17683 +(dp17684 +S'editable' +p17685 +I00 +sS'value' +p17686 +I00 +ssS'name' +p17687 +(dp17688 +S'editable' +p17689 +I01 +sS'value' +p17690 +S'Status' +p17691 +ssS'data_type' +p17692 +(dp17693 +S'editable' +p17694 +I00 +sS'value' +p17695 +S'status_list' +p17696 +ssS'entity_type' +p17697 +(dp17698 +S'editable' +p17699 +I00 +sS'value' +p17700 +S'Task' +p17701 +ssS'editable' +p17702 +(dp17703 +S'editable' +p17704 +I00 +sS'value' +p17705 +I01 +ssS'unique' +p17706 +(dp17707 +S'editable' +p17708 +I00 +sS'value' +p17709 +I00 +ssS'properties' +p17710 +(dp17711 +S'default_value' +p17712 +(dp17713 +S'editable' +p17714 +I01 +sS'value' +p17715 +S'wtg' +p17716 +ssS'valid_values' +p17717 +(dp17718 +S'editable' +p17719 +I01 +sS'value' +p17720 +(lp17721 +S'fin' +p17722 +aS'ip' +p17723 +aS'hld' +p17724 +aS'rdy' +p17725 +aS'wtg' +p17726 +assS'summary_default' +p17727 +(dp17728 +S'editable' +p17729 +I01 +sS'value' +p17730 +S'status_percentage' +p17731 +sssS'description' +p17732 +(dp17733 +S'editable' +p17734 +I01 +sS'value' +p17735 +g47 +sssS'time_logs_sum' +p17736 +(dp17737 +S'mandatory' +p17738 +(dp17739 +S'editable' +p17740 +I00 +sS'value' +p17741 +I00 +ssS'name' +p17742 +(dp17743 +S'editable' +p17744 +I01 +sS'value' +p17745 +S'Time Logged' +p17746 +ssS'data_type' +p17747 +(dp17748 +S'editable' +p17749 +I00 +sS'value' +p17750 +S'duration' +p17751 +ssS'entity_type' +p17752 +(dp17753 +S'editable' +p17754 +I00 +sS'value' +p17755 +S'Task' +p17756 +ssS'editable' +p17757 +(dp17758 +S'editable' +p17759 +I00 +sS'value' +p17760 +I00 +ssS'unique' +p17761 +(dp17762 +S'editable' +p17763 +I00 +sS'value' +p17764 +I00 +ssS'properties' +p17765 +(dp17766 +S'default_value' +p17767 +(dp17768 +S'editable' +p17769 +I00 +sS'value' +p17770 +I0 +ssS'summary_default' +p17771 +(dp17772 +S'editable' +p17773 +I01 +sS'value' +p17774 +S'sum' +p17775 +sssS'description' +p17776 +(dp17777 +S'editable' +p17778 +I01 +sS'value' +p17779 +g47 +sssS'start_date' +p17780 +(dp17781 +S'mandatory' +p17782 +(dp17783 +S'editable' +p17784 +I00 +sS'value' +p17785 +I00 +ssS'name' +p17786 +(dp17787 +S'editable' +p17788 +I01 +sS'value' +p17789 +S'Start Date' +p17790 +ssS'data_type' +p17791 +(dp17792 +S'editable' +p17793 +I00 +sS'value' +p17794 +S'date' +p17795 +ssS'entity_type' +p17796 +(dp17797 +S'editable' +p17798 +I00 +sS'value' +p17799 +S'Task' +p17800 +ssS'editable' +p17801 +(dp17802 +S'editable' +p17803 +I00 +sS'value' +p17804 +I01 +ssS'unique' +p17805 +(dp17806 +S'editable' +p17807 +I00 +sS'value' +p17808 +I00 +ssS'properties' +p17809 +(dp17810 +S'default_value' +p17811 +(dp17812 +S'editable' +p17813 +I00 +sS'value' +p17814 +NssS'summary_default' +p17815 +(dp17816 +S'editable' +p17817 +I01 +sS'value' +p17818 +S'earliest' +p17819 +sssS'description' +p17820 +(dp17821 +S'editable' +p17822 +I01 +sS'value' +p17823 +g47 +sssS'sibling_tasks' +p17824 +(dp17825 +S'mandatory' +p17826 +(dp17827 +S'editable' +p17828 +I00 +sS'value' +p17829 +I00 +ssS'name' +p17830 +(dp17831 +S'editable' +p17832 +I01 +sS'value' +p17833 +S'Sibling Tasks' +p17834 +ssS'data_type' +p17835 +(dp17836 +S'editable' +p17837 +I00 +sS'value' +p17838 +S'multi_entity' +p17839 +ssS'entity_type' +p17840 +(dp17841 +S'editable' +p17842 +I00 +sS'value' +p17843 +S'Task' +p17844 +ssS'editable' +p17845 +(dp17846 +S'editable' +p17847 +I00 +sS'value' +p17848 +I00 +ssS'unique' +p17849 +(dp17850 +S'editable' +p17851 +I00 +sS'value' +p17852 +I00 +ssS'properties' +p17853 +(dp17854 +S'default_value' +p17855 +(dp17856 +S'editable' +p17857 +I00 +sS'value' +p17858 +NssS'summary_default' +p17859 +(dp17860 +S'editable' +p17861 +I01 +sS'value' +p17862 +S'none' +p17863 +ssS'valid_types' +p17864 +(dp17865 +S'editable' +p17866 +I01 +sS'value' +p17867 +(lp17868 +S'Task' +p17869 +asssS'description' +p17870 +(dp17871 +S'editable' +p17872 +I01 +sS'value' +p17873 +g47 +sssS'due_date' +p17874 +(dp17875 +S'mandatory' +p17876 +(dp17877 +S'editable' +p17878 +I00 +sS'value' +p17879 +I00 +ssS'name' +p17880 +(dp17881 +S'editable' +p17882 +I01 +sS'value' +p17883 +S'Due Date' +p17884 +ssS'data_type' +p17885 +(dp17886 +S'editable' +p17887 +I00 +sS'value' +p17888 +S'date' +p17889 +ssS'entity_type' +p17890 +(dp17891 +S'editable' +p17892 +I00 +sS'value' +p17893 +S'Task' +p17894 +ssS'editable' +p17895 +(dp17896 +S'editable' +p17897 +I00 +sS'value' +p17898 +I01 +ssS'unique' +p17899 +(dp17900 +S'editable' +p17901 +I00 +sS'value' +p17902 +I00 +ssS'properties' +p17903 +(dp17904 +S'default_value' +p17905 +(dp17906 +S'editable' +p17907 +I00 +sS'value' +p17908 +NssS'summary_default' +p17909 +(dp17910 +S'editable' +p17911 +I01 +sS'value' +p17912 +S'latest' +p17913 +sssS'description' +p17914 +(dp17915 +S'editable' +p17916 +I01 +sS'value' +p17917 +g47 +sssS'updated_by' +p17918 +(dp17919 +S'mandatory' +p17920 +(dp17921 +S'editable' +p17922 +I00 +sS'value' +p17923 +I00 +ssS'name' +p17924 +(dp17925 +S'editable' +p17926 +I01 +sS'value' +p17927 +S'Updated by' +p17928 +ssS'data_type' +p17929 +(dp17930 +S'editable' +p17931 +I00 +sS'value' +p17932 +S'entity' +p17933 +ssS'entity_type' +p17934 +(dp17935 +S'editable' +p17936 +I00 +sS'value' +p17937 +S'Task' +p17938 +ssS'editable' +p17939 +(dp17940 +S'editable' +p17941 +I00 +sS'value' +p17942 +I00 +ssS'unique' +p17943 +(dp17944 +S'editable' +p17945 +I00 +sS'value' +p17946 +I00 +ssS'properties' +p17947 +(dp17948 +S'default_value' +p17949 +(dp17950 +S'editable' +p17951 +I00 +sS'value' +p17952 +NssS'summary_default' +p17953 +(dp17954 +S'editable' +p17955 +I01 +sS'value' +p17956 +S'none' +p17957 +ssS'valid_types' +p17958 +(dp17959 +S'editable' +p17960 +I01 +sS'value' +p17961 +(lp17962 +S'HumanUser' +p17963 +aS'ApiUser' +p17964 +asssS'description' +p17965 +(dp17966 +S'editable' +p17967 +I01 +sS'value' +p17968 +g47 +sssS'upstream_tasks' +p17969 +(dp17970 +S'mandatory' +p17971 +(dp17972 +S'editable' +p17973 +I00 +sS'value' +p17974 +I00 +ssS'name' +p17975 +(dp17976 +S'editable' +p17977 +I01 +sS'value' +p17978 +S'Upstream Dependency' +p17979 +ssS'data_type' +p17980 +(dp17981 +S'editable' +p17982 +I00 +sS'value' +p17983 +S'multi_entity' +p17984 +ssS'entity_type' +p17985 +(dp17986 +S'editable' +p17987 +I00 +sS'value' +p17988 +S'Task' +p17989 +ssS'editable' +p17990 +(dp17991 +S'editable' +p17992 +I00 +sS'value' +p17993 +I01 +ssS'unique' +p17994 +(dp17995 +S'editable' +p17996 +I00 +sS'value' +p17997 +I00 +ssS'properties' +p17998 +(dp17999 +S'default_value' +p18000 +(dp18001 +S'editable' +p18002 +I00 +sS'value' +p18003 +NssS'summary_default' +p18004 +(dp18005 +S'editable' +p18006 +I00 +sS'value' +p18007 +S'none' +p18008 +ssS'valid_types' +p18009 +(dp18010 +S'editable' +p18011 +I00 +sS'value' +p18012 +(lp18013 +S'Task' +p18014 +asssS'description' +p18015 +(dp18016 +S'editable' +p18017 +I01 +sS'value' +p18018 +g47 +sssS'dependency_violation' +p18019 +(dp18020 +S'mandatory' +p18021 +(dp18022 +S'editable' +p18023 +I00 +sS'value' +p18024 +I00 +ssS'name' +p18025 +(dp18026 +S'editable' +p18027 +I01 +sS'value' +p18028 +S'Dependency Violation' +p18029 +ssS'data_type' +p18030 +(dp18031 +S'editable' +p18032 +I00 +sS'value' +p18033 +S'checkbox' +p18034 +ssS'entity_type' +p18035 +(dp18036 +S'editable' +p18037 +I00 +sS'value' +p18038 +S'Task' +p18039 +ssS'editable' +p18040 +(dp18041 +S'editable' +p18042 +I00 +sS'value' +p18043 +I00 +ssS'unique' +p18044 +(dp18045 +S'editable' +p18046 +I00 +sS'value' +p18047 +I00 +ssS'properties' +p18048 +(dp18049 +S'default_value' +p18050 +(dp18051 +S'editable' +p18052 +I00 +sS'value' +p18053 +I00 +ssS'summary_default' +p18054 +(dp18055 +S'editable' +p18056 +I00 +sS'value' +p18057 +S'none' +p18058 +sssS'description' +p18059 +(dp18060 +S'editable' +p18061 +I01 +sS'value' +p18062 +g47 +sssS'time_vs_est' +p18063 +(dp18064 +S'mandatory' +p18065 +(dp18066 +S'editable' +p18067 +I00 +sS'value' +p18068 +I00 +ssS'name' +p18069 +(dp18070 +S'editable' +p18071 +I01 +sS'value' +p18072 +S'Time Logged - Over/Under Bid' +p18073 +ssS'data_type' +p18074 +(dp18075 +S'editable' +p18076 +I00 +sS'value' +p18077 +S'duration' +p18078 +ssS'entity_type' +p18079 +(dp18080 +S'editable' +p18081 +I00 +sS'value' +p18082 +S'Task' +p18083 +ssS'editable' +p18084 +(dp18085 +S'editable' +p18086 +I00 +sS'value' +p18087 +I00 +ssS'unique' +p18088 +(dp18089 +S'editable' +p18090 +I00 +sS'value' +p18091 +I00 +ssS'properties' +p18092 +(dp18093 +S'default_value' +p18094 +(dp18095 +S'editable' +p18096 +I00 +sS'value' +p18097 +NssS'summary_default' +p18098 +(dp18099 +S'editable' +p18100 +I01 +sS'value' +p18101 +S'sum' +p18102 +sssS'description' +p18103 +(dp18104 +S'editable' +p18105 +I01 +sS'value' +p18106 +g47 +sssS'template_task' +p18107 +(dp18108 +S'mandatory' +p18109 +(dp18110 +S'editable' +p18111 +I00 +sS'value' +p18112 +I00 +ssS'name' +p18113 +(dp18114 +S'editable' +p18115 +I01 +sS'value' +p18116 +S'Template Task' +p18117 +ssS'data_type' +p18118 +(dp18119 +S'editable' +p18120 +I00 +sS'value' +p18121 +S'entity' +p18122 +ssS'entity_type' +p18123 +(dp18124 +S'editable' +p18125 +I00 +sS'value' +p18126 +S'Task' +p18127 +ssS'editable' +p18128 +(dp18129 +S'editable' +p18130 +I00 +sS'value' +p18131 +I00 +ssS'unique' +p18132 +(dp18133 +S'editable' +p18134 +I00 +sS'value' +p18135 +I00 +ssS'properties' +p18136 +(dp18137 +S'default_value' +p18138 +(dp18139 +S'editable' +p18140 +I00 +sS'value' +p18141 +NssS'summary_default' +p18142 +(dp18143 +S'editable' +p18144 +I01 +sS'value' +p18145 +S'none' +p18146 +ssS'valid_types' +p18147 +(dp18148 +S'editable' +p18149 +I01 +sS'value' +p18150 +(lp18151 +S'Task' +p18152 +asssS'description' +p18153 +(dp18154 +S'editable' +p18155 +I01 +sS'value' +p18156 +g47 +sssS'step' +p18157 +(dp18158 +S'mandatory' +p18159 +(dp18160 +S'editable' +p18161 +I00 +sS'value' +p18162 +I00 +ssS'name' +p18163 +(dp18164 +S'editable' +p18165 +I01 +sS'value' +p18166 +S'Pipeline Step' +p18167 +ssS'data_type' +p18168 +(dp18169 +S'editable' +p18170 +I00 +sS'value' +p18171 +S'entity' +p18172 +ssS'entity_type' +p18173 +(dp18174 +S'editable' +p18175 +I00 +sS'value' +p18176 +S'Task' +p18177 +ssS'editable' +p18178 +(dp18179 +S'editable' +p18180 +I00 +sS'value' +p18181 +I01 +ssS'unique' +p18182 +(dp18183 +S'editable' +p18184 +I00 +sS'value' +p18185 +I00 +ssS'properties' +p18186 +(dp18187 +S'default_value' +p18188 +(dp18189 +S'editable' +p18190 +I00 +sS'value' +p18191 +NssS'summary_default' +p18192 +(dp18193 +S'editable' +p18194 +I01 +sS'value' +p18195 +S'none' +p18196 +ssS'valid_types' +p18197 +(dp18198 +S'editable' +p18199 +I01 +sS'value' +p18200 +(lp18201 +S'Step' +p18202 +asssS'description' +p18203 +(dp18204 +S'editable' +p18205 +I01 +sS'value' +p18206 +g47 +sssS'milestone' +p18207 +(dp18208 +S'mandatory' +p18209 +(dp18210 +S'editable' +p18211 +I00 +sS'value' +p18212 +I00 +ssS'name' +p18213 +(dp18214 +S'editable' +p18215 +I01 +sS'value' +p18216 +S'Milestone' +p18217 +ssS'data_type' +p18218 +(dp18219 +S'editable' +p18220 +I00 +sS'value' +p18221 +S'checkbox' +p18222 +ssS'entity_type' +p18223 +(dp18224 +S'editable' +p18225 +I00 +sS'value' +p18226 +S'Task' +p18227 +ssS'editable' +p18228 +(dp18229 +S'editable' +p18230 +I00 +sS'value' +p18231 +I01 +ssS'unique' +p18232 +(dp18233 +S'editable' +p18234 +I00 +sS'value' +p18235 +I00 +ssS'properties' +p18236 +(dp18237 +S'default_value' +p18238 +(dp18239 +S'editable' +p18240 +I00 +sS'value' +p18241 +I00 +ssS'summary_default' +p18242 +(dp18243 +S'editable' +p18244 +I01 +sS'value' +p18245 +S'none' +p18246 +sssS'description' +p18247 +(dp18248 +S'editable' +p18249 +I01 +sS'value' +p18250 +g47 +sssS'time_percent_of_est' +p18251 +(dp18252 +S'mandatory' +p18253 +(dp18254 +S'editable' +p18255 +I00 +sS'value' +p18256 +I00 +ssS'name' +p18257 +(dp18258 +S'editable' +p18259 +I01 +sS'value' +p18260 +S'Time Logged - % of Bid' +p18261 +ssS'data_type' +p18262 +(dp18263 +S'editable' +p18264 +I00 +sS'value' +p18265 +S'percent' +p18266 +ssS'entity_type' +p18267 +(dp18268 +S'editable' +p18269 +I00 +sS'value' +p18270 +S'Task' +p18271 +ssS'editable' +p18272 +(dp18273 +S'editable' +p18274 +I00 +sS'value' +p18275 +I00 +ssS'unique' +p18276 +(dp18277 +S'editable' +p18278 +I00 +sS'value' +p18279 +I00 +ssS'properties' +p18280 +(dp18281 +S'default_value' +p18282 +(dp18283 +S'editable' +p18284 +I00 +sS'value' +p18285 +NssS'summary_default' +p18286 +(dp18287 +S'editable' +p18288 +I01 +sS'value' +p18289 +S'none' +p18290 +sssS'description' +p18291 +(dp18292 +S'editable' +p18293 +I01 +sS'value' +p18294 +g47 +sssS'splits' +p18295 +(dp18296 +S'mandatory' +p18297 +(dp18298 +S'editable' +p18299 +I00 +sS'value' +p18300 +I00 +ssS'name' +p18301 +(dp18302 +S'editable' +p18303 +I01 +sS'value' +p18304 +S'Splits' +p18305 +ssS'data_type' +p18306 +(dp18307 +S'editable' +p18308 +I00 +sS'value' +p18309 +S'serializable' +p18310 +ssS'entity_type' +p18311 +(dp18312 +S'editable' +p18313 +I00 +sS'value' +p18314 +S'Task' +p18315 +ssS'editable' +p18316 +(dp18317 +S'editable' +p18318 +I00 +sS'value' +p18319 +I01 +ssS'unique' +p18320 +(dp18321 +S'editable' +p18322 +I00 +sS'value' +p18323 +I00 +ssS'properties' +p18324 +(dp18325 +S'default_value' +p18326 +(dp18327 +S'editable' +p18328 +I00 +sS'value' +p18329 +NssS'summary_default' +p18330 +(dp18331 +S'editable' +p18332 +I00 +sS'value' +p18333 +S'none' +p18334 +sssS'description' +p18335 +(dp18336 +S'editable' +p18337 +I01 +sS'value' +p18338 +g47 +sssS'created_at' +p18339 +(dp18340 +S'mandatory' +p18341 +(dp18342 +S'editable' +p18343 +I00 +sS'value' +p18344 +I00 +ssS'name' +p18345 +(dp18346 +S'editable' +p18347 +I01 +sS'value' +p18348 +S'Date Created' +p18349 +ssS'data_type' +p18350 +(dp18351 +S'editable' +p18352 +I00 +sS'value' +p18353 +S'date_time' +p18354 +ssS'entity_type' +p18355 +(dp18356 +S'editable' +p18357 +I00 +sS'value' +p18358 +S'Task' +p18359 +ssS'editable' +p18360 +(dp18361 +S'editable' +p18362 +I00 +sS'value' +p18363 +I00 +ssS'unique' +p18364 +(dp18365 +S'editable' +p18366 +I00 +sS'value' +p18367 +I00 +ssS'properties' +p18368 +(dp18369 +S'default_value' +p18370 +(dp18371 +S'editable' +p18372 +I00 +sS'value' +p18373 +NssS'summary_default' +p18374 +(dp18375 +S'editable' +p18376 +I01 +sS'value' +p18377 +S'none' +p18378 +sssS'description' +p18379 +(dp18380 +S'editable' +p18381 +I01 +sS'value' +p18382 +g47 +sssS'project' +p18383 +(dp18384 +S'mandatory' +p18385 +(dp18386 +S'editable' +p18387 +I00 +sS'value' +p18388 +I00 +ssS'name' +p18389 +(dp18390 +S'editable' +p18391 +I01 +sS'value' +p18392 +S'Project' +p18393 +ssS'data_type' +p18394 +(dp18395 +S'editable' +p18396 +I00 +sS'value' +p18397 +S'entity' +p18398 +ssS'entity_type' +p18399 +(dp18400 +S'editable' +p18401 +I00 +sS'value' +p18402 +S'Task' +p18403 +ssS'editable' +p18404 +(dp18405 +S'editable' +p18406 +I00 +sS'value' +p18407 +I01 +ssS'unique' +p18408 +(dp18409 +S'editable' +p18410 +I00 +sS'value' +p18411 +I00 +ssS'properties' +p18412 +(dp18413 +S'default_value' +p18414 +(dp18415 +S'editable' +p18416 +I00 +sS'value' +p18417 +NssS'summary_default' +p18418 +(dp18419 +S'editable' +p18420 +I01 +sS'value' +p18421 +S'none' +p18422 +ssS'valid_types' +p18423 +(dp18424 +S'editable' +p18425 +I01 +sS'value' +p18426 +(lp18427 +S'Project' +p18428 +asssS'description' +p18429 +(dp18430 +S'editable' +p18431 +I01 +sS'value' +p18432 +g47 +sssS'filmstrip_image' +p18433 +(dp18434 +S'mandatory' +p18435 +(dp18436 +S'editable' +p18437 +I00 +sS'value' +p18438 +I00 +ssS'name' +p18439 +(dp18440 +S'editable' +p18441 +I01 +sS'value' +p18442 +S'Filmstrip Thumbnail' +p18443 +ssS'data_type' +p18444 +(dp18445 +S'editable' +p18446 +I00 +sS'value' +p18447 +S'image' +p18448 +ssS'entity_type' +p18449 +(dp18450 +S'editable' +p18451 +I00 +sS'value' +p18452 +S'Task' +p18453 +ssS'editable' +p18454 +(dp18455 +S'editable' +p18456 +I00 +sS'value' +p18457 +I01 +ssS'unique' +p18458 +(dp18459 +S'editable' +p18460 +I00 +sS'value' +p18461 +I00 +ssS'properties' +p18462 +(dp18463 +S'default_value' +p18464 +(dp18465 +S'editable' +p18466 +I00 +sS'value' +p18467 +NssS'summary_default' +p18468 +(dp18469 +S'editable' +p18470 +I01 +sS'value' +p18471 +S'none' +p18472 +sssS'description' +p18473 +(dp18474 +S'editable' +p18475 +I01 +sS'value' +p18476 +g47 +sssS'est_in_mins' +p18477 +(dp18478 +S'mandatory' +p18479 +(dp18480 +S'editable' +p18481 +I00 +sS'value' +p18482 +I00 +ssS'name' +p18483 +(dp18484 +S'editable' +p18485 +I01 +sS'value' +p18486 +S'Bid' +p18487 +ssS'data_type' +p18488 +(dp18489 +S'editable' +p18490 +I00 +sS'value' +p18491 +S'duration' +p18492 +ssS'entity_type' +p18493 +(dp18494 +S'editable' +p18495 +I00 +sS'value' +p18496 +S'Task' +p18497 +ssS'editable' +p18498 +(dp18499 +S'editable' +p18500 +I00 +sS'value' +p18501 +I01 +ssS'unique' +p18502 +(dp18503 +S'editable' +p18504 +I00 +sS'value' +p18505 +I00 +ssS'properties' +p18506 +(dp18507 +S'default_value' +p18508 +(dp18509 +S'editable' +p18510 +I00 +sS'value' +p18511 +NssS'summary_default' +p18512 +(dp18513 +S'editable' +p18514 +I01 +sS'value' +p18515 +S'sum' +p18516 +sssS'description' +p18517 +(dp18518 +S'editable' +p18519 +I01 +sS'value' +p18520 +g47 +sssS'tag_list' +p18521 +(dp18522 +S'mandatory' +p18523 +(dp18524 +S'editable' +p18525 +I00 +sS'value' +p18526 +I00 +ssS'name' +p18527 +(dp18528 +S'editable' +p18529 +I01 +sS'value' +p18530 +S'Tags' +p18531 +ssS'data_type' +p18532 +(dp18533 +S'editable' +p18534 +I00 +sS'value' +p18535 +S'tag_list' +p18536 +ssS'entity_type' +p18537 +(dp18538 +S'editable' +p18539 +I00 +sS'value' +p18540 +S'Task' +p18541 +ssS'editable' +p18542 +(dp18543 +S'editable' +p18544 +I00 +sS'value' +p18545 +I01 +ssS'unique' +p18546 +(dp18547 +S'editable' +p18548 +I00 +sS'value' +p18549 +I00 +ssS'properties' +p18550 +(dp18551 +S'default_value' +p18552 +(dp18553 +S'editable' +p18554 +I00 +sS'value' +p18555 +NssS'summary_default' +p18556 +(dp18557 +S'editable' +p18558 +I01 +sS'value' +p18559 +S'none' +p18560 +ssS'valid_types' +p18561 +(dp18562 +S'editable' +p18563 +I01 +sS'value' +p18564 +(lp18565 +S'Tag' +p18566 +asssS'description' +p18567 +(dp18568 +S'editable' +p18569 +I01 +sS'value' +p18570 +g47 +sssS'notes' +p18571 +(dp18572 +S'mandatory' +p18573 +(dp18574 +S'editable' +p18575 +I00 +sS'value' +p18576 +I00 +ssS'name' +p18577 +(dp18578 +S'editable' +p18579 +I01 +sS'value' +p18580 +S'Notes' +p18581 +ssS'data_type' +p18582 +(dp18583 +S'editable' +p18584 +I00 +sS'value' +p18585 +S'multi_entity' +p18586 +ssS'entity_type' +p18587 +(dp18588 +S'editable' +p18589 +I00 +sS'value' +p18590 +S'Task' +p18591 +ssS'editable' +p18592 +(dp18593 +S'editable' +p18594 +I00 +sS'value' +p18595 +I01 +ssS'unique' +p18596 +(dp18597 +S'editable' +p18598 +I00 +sS'value' +p18599 +I00 +ssS'properties' +p18600 +(dp18601 +S'default_value' +p18602 +(dp18603 +S'editable' +p18604 +I00 +sS'value' +p18605 +NssS'summary_default' +p18606 +(dp18607 +S'editable' +p18608 +I01 +sS'value' +p18609 +S'none' +p18610 +ssS'valid_types' +p18611 +(dp18612 +S'editable' +p18613 +I01 +sS'value' +p18614 +(lp18615 +S'Note' +p18616 +asssS'description' +p18617 +(dp18618 +S'editable' +p18619 +I01 +sS'value' +p18620 +g47 +ssssS'CustomNonProjectEntity01' +p18621 +(dp18622 +S'created_at' +p18623 +(dp18624 +S'mandatory' +p18625 +(dp18626 +S'editable' +p18627 +I00 +sS'value' +p18628 +I00 +ssS'name' +p18629 +(dp18630 +S'editable' +p18631 +I01 +sS'value' +p18632 +S'Date Created' +p18633 +ssS'data_type' +p18634 +(dp18635 +S'editable' +p18636 +I00 +sS'value' +p18637 +S'date_time' +p18638 +ssS'entity_type' +p18639 +(dp18640 +S'editable' +p18641 +I00 +sS'value' +p18642 +S'CustomNonProjectEntity01' +p18643 +ssS'editable' +p18644 +(dp18645 +S'editable' +p18646 +I00 +sS'value' +p18647 +I00 +ssS'unique' +p18648 +(dp18649 +S'editable' +p18650 +I00 +sS'value' +p18651 +I00 +ssS'properties' +p18652 +(dp18653 +S'default_value' +p18654 +(dp18655 +S'editable' +p18656 +I00 +sS'value' +p18657 +NssS'summary_default' +p18658 +(dp18659 +S'editable' +p18660 +I01 +sS'value' +p18661 +S'none' +p18662 +sssS'description' +p18663 +(dp18664 +S'editable' +p18665 +I01 +sS'value' +p18666 +g47 +sssS'open_notes_count' +p18667 +(dp18668 +S'mandatory' +p18669 +(dp18670 +S'editable' +p18671 +I00 +sS'value' +p18672 +I00 +ssS'name' +p18673 +(dp18674 +S'editable' +p18675 +I01 +sS'value' +p18676 +S'Open Notes Count' +p18677 +ssS'data_type' +p18678 +(dp18679 +S'editable' +p18680 +I00 +sS'value' +p18681 +S'text' +p18682 +ssS'entity_type' +p18683 +(dp18684 +S'editable' +p18685 +I00 +sS'value' +p18686 +S'CustomNonProjectEntity01' +p18687 +ssS'editable' +p18688 +(dp18689 +S'editable' +p18690 +I00 +sS'value' +p18691 +I00 +ssS'unique' +p18692 +(dp18693 +S'editable' +p18694 +I00 +sS'value' +p18695 +I00 +ssS'properties' +p18696 +(dp18697 +S'default_value' +p18698 +(dp18699 +S'editable' +p18700 +I00 +sS'value' +p18701 +NssS'summary_default' +p18702 +(dp18703 +S'editable' +p18704 +I01 +sS'value' +p18705 +S'none' +p18706 +sssS'description' +p18707 +(dp18708 +S'editable' +p18709 +I01 +sS'value' +p18710 +g47 +sssS'code' +p18711 +(dp18712 +S'mandatory' +p18713 +(dp18714 +S'editable' +p18715 +I00 +sS'value' +p18716 +I01 +ssS'name' +p18717 +(dp18718 +S'editable' +p18719 +I01 +sS'value' +p18720 +S'Custom Non Project Entity01 Name' +p18721 +ssS'data_type' +p18722 +(dp18723 +S'editable' +p18724 +I00 +sS'value' +p18725 +S'text' +p18726 +ssS'entity_type' +p18727 +(dp18728 +S'editable' +p18729 +I00 +sS'value' +p18730 +S'CustomNonProjectEntity01' +p18731 +ssS'editable' +p18732 +(dp18733 +S'editable' +p18734 +I00 +sS'value' +p18735 +I01 +ssS'unique' +p18736 +(dp18737 +S'editable' +p18738 +I00 +sS'value' +p18739 +I00 +ssS'properties' +p18740 +(dp18741 +S'default_value' +p18742 +(dp18743 +S'editable' +p18744 +I00 +sS'value' +p18745 +NssS'summary_default' +p18746 +(dp18747 +S'editable' +p18748 +I01 +sS'value' +p18749 +S'none' +p18750 +sssS'description' +p18751 +(dp18752 +S'editable' +p18753 +I01 +sS'value' +p18754 +g47 +sssS'open_notes' +p18755 +(dp18756 +S'mandatory' +p18757 +(dp18758 +S'editable' +p18759 +I00 +sS'value' +p18760 +I00 +ssS'name' +p18761 +(dp18762 +S'editable' +p18763 +I01 +sS'value' +p18764 +S'Open Notes' +p18765 +ssS'data_type' +p18766 +(dp18767 +S'editable' +p18768 +I00 +sS'value' +p18769 +S'multi_entity' +p18770 +ssS'entity_type' +p18771 +(dp18772 +S'editable' +p18773 +I00 +sS'value' +p18774 +S'CustomNonProjectEntity01' +p18775 +ssS'editable' +p18776 +(dp18777 +S'editable' +p18778 +I00 +sS'value' +p18779 +I00 +ssS'unique' +p18780 +(dp18781 +S'editable' +p18782 +I00 +sS'value' +p18783 +I00 +ssS'properties' +p18784 +(dp18785 +S'default_value' +p18786 +(dp18787 +S'editable' +p18788 +I00 +sS'value' +p18789 +NssS'summary_default' +p18790 +(dp18791 +S'editable' +p18792 +I01 +sS'value' +p18793 +S'none' +p18794 +ssS'valid_types' +p18795 +(dp18796 +S'editable' +p18797 +I01 +sS'value' +p18798 +(lp18799 +S'Note' +p18800 +asssS'description' +p18801 +(dp18802 +S'editable' +p18803 +I01 +sS'value' +p18804 +g47 +sssS'description' +p18805 +(dp18806 +S'mandatory' +p18807 +(dp18808 +S'editable' +p18809 +I00 +sS'value' +p18810 +I00 +ssS'name' +p18811 +(dp18812 +S'editable' +p18813 +I01 +sS'value' +p18814 +S'Description' +p18815 +ssS'data_type' +p18816 +(dp18817 +S'editable' +p18818 +I00 +sS'value' +p18819 +S'text' +p18820 +ssS'entity_type' +p18821 +(dp18822 +S'editable' +p18823 +I00 +sS'value' +p18824 +S'CustomNonProjectEntity01' +p18825 +ssS'editable' +p18826 +(dp18827 +S'editable' +p18828 +I00 +sS'value' +p18829 +I01 +ssS'unique' +p18830 +(dp18831 +S'editable' +p18832 +I00 +sS'value' +p18833 +I00 +ssS'properties' +p18834 +(dp18835 +S'default_value' +p18836 +(dp18837 +S'editable' +p18838 +I00 +sS'value' +p18839 +NssS'summary_default' +p18840 +(dp18841 +S'editable' +p18842 +I01 +sS'value' +p18843 +S'none' +p18844 +sssS'description' +p18845 +(dp18846 +S'editable' +p18847 +I01 +sS'value' +p18848 +g47 +sssS'notes' +p18849 +(dp18850 +S'mandatory' +p18851 +(dp18852 +S'editable' +p18853 +I00 +sS'value' +p18854 +I00 +ssS'name' +p18855 +(dp18856 +S'editable' +p18857 +I01 +sS'value' +p18858 +S'Notes' +p18859 +ssS'data_type' +p18860 +(dp18861 +S'editable' +p18862 +I00 +sS'value' +p18863 +S'multi_entity' +p18864 +ssS'entity_type' +p18865 +(dp18866 +S'editable' +p18867 +I00 +sS'value' +p18868 +S'CustomNonProjectEntity01' +p18869 +ssS'editable' +p18870 +(dp18871 +S'editable' +p18872 +I00 +sS'value' +p18873 +I01 +ssS'unique' +p18874 +(dp18875 +S'editable' +p18876 +I00 +sS'value' +p18877 +I00 +ssS'properties' +p18878 +(dp18879 +S'default_value' +p18880 +(dp18881 +S'editable' +p18882 +I00 +sS'value' +p18883 +NssS'summary_default' +p18884 +(dp18885 +S'editable' +p18886 +I01 +sS'value' +p18887 +S'none' +p18888 +ssS'valid_types' +p18889 +(dp18890 +S'editable' +p18891 +I01 +sS'value' +p18892 +(lp18893 +S'Note' +p18894 +asssS'description' +p18895 +(dp18896 +S'editable' +p18897 +I01 +sS'value' +p18898 +g47 +sssS'updated_at' +p18899 +(dp18900 +S'mandatory' +p18901 +(dp18902 +S'editable' +p18903 +I00 +sS'value' +p18904 +I00 +ssS'name' +p18905 +(dp18906 +S'editable' +p18907 +I01 +sS'value' +p18908 +S'Date Updated' +p18909 +ssS'data_type' +p18910 +(dp18911 +S'editable' +p18912 +I00 +sS'value' +p18913 +S'date_time' +p18914 +ssS'entity_type' +p18915 +(dp18916 +S'editable' +p18917 +I00 +sS'value' +p18918 +S'CustomNonProjectEntity01' +p18919 +ssS'editable' +p18920 +(dp18921 +S'editable' +p18922 +I00 +sS'value' +p18923 +I00 +ssS'unique' +p18924 +(dp18925 +S'editable' +p18926 +I00 +sS'value' +p18927 +I00 +ssS'properties' +p18928 +(dp18929 +S'default_value' +p18930 +(dp18931 +S'editable' +p18932 +I00 +sS'value' +p18933 +NssS'summary_default' +p18934 +(dp18935 +S'editable' +p18936 +I01 +sS'value' +p18937 +S'none' +p18938 +sssS'description' +p18939 +(dp18940 +S'editable' +p18941 +I01 +sS'value' +p18942 +g47 +sssS'created_by' +p18943 +(dp18944 +S'mandatory' +p18945 +(dp18946 +S'editable' +p18947 +I00 +sS'value' +p18948 +I00 +ssS'name' +p18949 +(dp18950 +S'editable' +p18951 +I01 +sS'value' +p18952 +S'Created by' +p18953 +ssS'data_type' +p18954 +(dp18955 +S'editable' +p18956 +I00 +sS'value' +p18957 +S'entity' +p18958 +ssS'entity_type' +p18959 +(dp18960 +S'editable' +p18961 +I00 +sS'value' +p18962 +S'CustomNonProjectEntity01' +p18963 +ssS'editable' +p18964 +(dp18965 +S'editable' +p18966 +I00 +sS'value' +p18967 +I00 +ssS'unique' +p18968 +(dp18969 +S'editable' +p18970 +I00 +sS'value' +p18971 +I00 +ssS'properties' +p18972 +(dp18973 +S'default_value' +p18974 +(dp18975 +S'editable' +p18976 +I00 +sS'value' +p18977 +NssS'summary_default' +p18978 +(dp18979 +S'editable' +p18980 +I01 +sS'value' +p18981 +S'none' +p18982 +ssS'valid_types' +p18983 +(dp18984 +S'editable' +p18985 +I01 +sS'value' +p18986 +(lp18987 +S'HumanUser' +p18988 +aS'ApiUser' +p18989 +asssS'description' +p18990 +(dp18991 +S'editable' +p18992 +I01 +sS'value' +p18993 +g47 +sssS'filmstrip_image' +p18994 +(dp18995 +S'mandatory' +p18996 +(dp18997 +S'editable' +p18998 +I00 +sS'value' +p18999 +I00 +ssS'name' +p19000 +(dp19001 +S'editable' +p19002 +I01 +sS'value' +p19003 +S'Filmstrip Thumbnail' +p19004 +ssS'data_type' +p19005 +(dp19006 +S'editable' +p19007 +I00 +sS'value' +p19008 +S'image' +p19009 +ssS'entity_type' +p19010 +(dp19011 +S'editable' +p19012 +I00 +sS'value' +p19013 +S'CustomNonProjectEntity01' +p19014 +ssS'editable' +p19015 +(dp19016 +S'editable' +p19017 +I00 +sS'value' +p19018 +I01 +ssS'unique' +p19019 +(dp19020 +S'editable' +p19021 +I00 +sS'value' +p19022 +I00 +ssS'properties' +p19023 +(dp19024 +S'default_value' +p19025 +(dp19026 +S'editable' +p19027 +I00 +sS'value' +p19028 +NssS'summary_default' +p19029 +(dp19030 +S'editable' +p19031 +I01 +sS'value' +p19032 +S'none' +p19033 +sssS'description' +p19034 +(dp19035 +S'editable' +p19036 +I01 +sS'value' +p19037 +g47 +sssS'sg_status_list' +p19038 +(dp19039 +S'mandatory' +p19040 +(dp19041 +S'editable' +p19042 +I00 +sS'value' +p19043 +I00 +ssS'name' +p19044 +(dp19045 +S'editable' +p19046 +I01 +sS'value' +p19047 +S'Status' +p19048 +ssS'data_type' +p19049 +(dp19050 +S'editable' +p19051 +I00 +sS'value' +p19052 +S'status_list' +p19053 +ssS'entity_type' +p19054 +(dp19055 +S'editable' +p19056 +I00 +sS'value' +p19057 +S'CustomNonProjectEntity01' +p19058 +ssS'editable' +p19059 +(dp19060 +S'editable' +p19061 +I00 +sS'value' +p19062 +I01 +ssS'unique' +p19063 +(dp19064 +S'editable' +p19065 +I00 +sS'value' +p19066 +I00 +ssS'properties' +p19067 +(dp19068 +S'default_value' +p19069 +(dp19070 +S'editable' +p19071 +I01 +sS'value' +p19072 +S'wtg' +p19073 +ssS'valid_values' +p19074 +(dp19075 +S'editable' +p19076 +I01 +sS'value' +p19077 +(lp19078 +S'cmpt' +p19079 +aS'ip' +p19080 +aS'wtg' +p19081 +assS'summary_default' +p19082 +(dp19083 +S'editable' +p19084 +I01 +sS'value' +p19085 +S'none' +p19086 +sssS'description' +p19087 +(dp19088 +S'editable' +p19089 +I01 +sS'value' +p19090 +g47 +sssS'image' +p19091 +(dp19092 +S'mandatory' +p19093 +(dp19094 +S'editable' +p19095 +I00 +sS'value' +p19096 +I00 +ssS'name' +p19097 +(dp19098 +S'editable' +p19099 +I01 +sS'value' +p19100 +S'Thumbnail' +p19101 +ssS'data_type' +p19102 +(dp19103 +S'editable' +p19104 +I00 +sS'value' +p19105 +S'image' +p19106 +ssS'entity_type' +p19107 +(dp19108 +S'editable' +p19109 +I00 +sS'value' +p19110 +S'CustomNonProjectEntity01' +p19111 +ssS'editable' +p19112 +(dp19113 +S'editable' +p19114 +I00 +sS'value' +p19115 +I01 +ssS'unique' +p19116 +(dp19117 +S'editable' +p19118 +I00 +sS'value' +p19119 +I00 +ssS'properties' +p19120 +(dp19121 +S'default_value' +p19122 +(dp19123 +S'editable' +p19124 +I00 +sS'value' +p19125 +NssS'summary_default' +p19126 +(dp19127 +S'editable' +p19128 +I01 +sS'value' +p19129 +S'none' +p19130 +sssS'description' +p19131 +(dp19132 +S'editable' +p19133 +I01 +sS'value' +p19134 +g47 +sssS'cached_display_name' +p19135 +(dp19136 +S'mandatory' +p19137 +(dp19138 +S'editable' +p19139 +I00 +sS'value' +p19140 +I00 +ssS'name' +p19141 +(dp19142 +S'editable' +p19143 +I01 +sS'value' +p19144 +S'Cached Display Name' +p19145 +ssS'data_type' +p19146 +(dp19147 +S'editable' +p19148 +I00 +sS'value' +p19149 +S'text' +p19150 +ssS'entity_type' +p19151 +(dp19152 +S'editable' +p19153 +I00 +sS'value' +p19154 +S'CustomNonProjectEntity01' +p19155 +ssS'editable' +p19156 +(dp19157 +S'editable' +p19158 +I00 +sS'value' +p19159 +I01 +ssS'unique' +p19160 +(dp19161 +S'editable' +p19162 +I00 +sS'value' +p19163 +I00 +ssS'properties' +p19164 +(dp19165 +S'default_value' +p19166 +(dp19167 +S'editable' +p19168 +I00 +sS'value' +p19169 +NssS'summary_default' +p19170 +(dp19171 +S'editable' +p19172 +I00 +sS'value' +p19173 +S'none' +p19174 +sssS'description' +p19175 +(dp19176 +S'editable' +p19177 +I01 +sS'value' +p19178 +g47 +sssS'tag_list' +p19179 +(dp19180 +S'mandatory' +p19181 +(dp19182 +S'editable' +p19183 +I00 +sS'value' +p19184 +I00 +ssS'name' +p19185 +(dp19186 +S'editable' +p19187 +I01 +sS'value' +p19188 +S'Tags' +p19189 +ssS'data_type' +p19190 +(dp19191 +S'editable' +p19192 +I00 +sS'value' +p19193 +S'tag_list' +p19194 +ssS'entity_type' +p19195 +(dp19196 +S'editable' +p19197 +I00 +sS'value' +p19198 +S'CustomNonProjectEntity01' +p19199 +ssS'editable' +p19200 +(dp19201 +S'editable' +p19202 +I00 +sS'value' +p19203 +I01 +ssS'unique' +p19204 +(dp19205 +S'editable' +p19206 +I00 +sS'value' +p19207 +I00 +ssS'properties' +p19208 +(dp19209 +S'default_value' +p19210 +(dp19211 +S'editable' +p19212 +I00 +sS'value' +p19213 +NssS'summary_default' +p19214 +(dp19215 +S'editable' +p19216 +I01 +sS'value' +p19217 +S'none' +p19218 +ssS'valid_types' +p19219 +(dp19220 +S'editable' +p19221 +I01 +sS'value' +p19222 +(lp19223 +S'Tag' +p19224 +asssS'description' +p19225 +(dp19226 +S'editable' +p19227 +I01 +sS'value' +p19228 +g47 +sssS'id' +p19229 +(dp19230 +S'mandatory' +p19231 +(dp19232 +S'editable' +p19233 +I00 +sS'value' +p19234 +I00 +ssS'name' +p19235 +(dp19236 +S'editable' +p19237 +I01 +sS'value' +p19238 +S'Id' +p19239 +ssS'data_type' +p19240 +(dp19241 +S'editable' +p19242 +I00 +sS'value' +p19243 +S'number' +p19244 +ssS'entity_type' +p19245 +(dp19246 +S'editable' +p19247 +I00 +sS'value' +p19248 +S'CustomNonProjectEntity01' +p19249 +ssS'editable' +p19250 +(dp19251 +S'editable' +p19252 +I00 +sS'value' +p19253 +I00 +ssS'unique' +p19254 +(dp19255 +S'editable' +p19256 +I00 +sS'value' +p19257 +I00 +ssS'properties' +p19258 +(dp19259 +S'default_value' +p19260 +(dp19261 +S'editable' +p19262 +I00 +sS'value' +p19263 +NssS'summary_default' +p19264 +(dp19265 +S'editable' +p19266 +I01 +sS'value' +p19267 +S'none' +p19268 +sssS'description' +p19269 +(dp19270 +S'editable' +p19271 +I01 +sS'value' +p19272 +g47 +sssS'updated_by' +p19273 +(dp19274 +S'mandatory' +p19275 +(dp19276 +S'editable' +p19277 +I00 +sS'value' +p19278 +I00 +ssS'name' +p19279 +(dp19280 +S'editable' +p19281 +I01 +sS'value' +p19282 +S'Updated by' +p19283 +ssS'data_type' +p19284 +(dp19285 +S'editable' +p19286 +I00 +sS'value' +p19287 +S'entity' +p19288 +ssS'entity_type' +p19289 +(dp19290 +S'editable' +p19291 +I00 +sS'value' +p19292 +S'CustomNonProjectEntity01' +p19293 +ssS'editable' +p19294 +(dp19295 +S'editable' +p19296 +I00 +sS'value' +p19297 +I00 +ssS'unique' +p19298 +(dp19299 +S'editable' +p19300 +I00 +sS'value' +p19301 +I00 +ssS'properties' +p19302 +(dp19303 +S'default_value' +p19304 +(dp19305 +S'editable' +p19306 +I00 +sS'value' +p19307 +NssS'summary_default' +p19308 +(dp19309 +S'editable' +p19310 +I01 +sS'value' +p19311 +S'none' +p19312 +ssS'valid_types' +p19313 +(dp19314 +S'editable' +p19315 +I01 +sS'value' +p19316 +(lp19317 +S'HumanUser' +p19318 +aS'ApiUser' +p19319 +asssS'description' +p19320 +(dp19321 +S'editable' +p19322 +I01 +sS'value' +p19323 +g47 +ssssS'ApiUser' +p19324 +(dp19325 +S'description' +p19326 +(dp19327 +S'mandatory' +p19328 +(dp19329 +S'editable' +p19330 +I00 +sS'value' +p19331 +I00 +ssS'name' +p19332 +(dp19333 +S'editable' +p19334 +I01 +sS'value' +p19335 +S'Description' +p19336 +ssS'data_type' +p19337 +(dp19338 +S'editable' +p19339 +I00 +sS'value' +p19340 +S'text' +p19341 +ssS'entity_type' +p19342 +(dp19343 +S'editable' +p19344 +I00 +sS'value' +p19345 +S'ApiUser' +p19346 +ssS'editable' +p19347 +(dp19348 +S'editable' +p19349 +I00 +sS'value' +p19350 +I01 +ssS'unique' +p19351 +(dp19352 +S'editable' +p19353 +I00 +sS'value' +p19354 +I00 +ssS'properties' +p19355 +(dp19356 +S'default_value' +p19357 +(dp19358 +S'editable' +p19359 +I00 +sS'value' +p19360 +NssS'summary_default' +p19361 +(dp19362 +S'editable' +p19363 +I01 +sS'value' +p19364 +S'none' +p19365 +sssS'description' +p19366 +(dp19367 +S'editable' +p19368 +I01 +sS'value' +p19369 +g47 +sssS'firstname' +p19370 +(dp19371 +S'mandatory' +p19372 +(dp19373 +S'editable' +p19374 +I00 +sS'value' +p19375 +I01 +ssS'name' +p19376 +(dp19377 +S'editable' +p19378 +I01 +sS'value' +p19379 +S'Script Name' +p19380 +ssS'data_type' +p19381 +(dp19382 +S'editable' +p19383 +I00 +sS'value' +p19384 +S'text' +p19385 +ssS'entity_type' +p19386 +(dp19387 +S'editable' +p19388 +I00 +sS'value' +p19389 +S'ApiUser' +p19390 +ssS'editable' +p19391 +(dp19392 +S'editable' +p19393 +I00 +sS'value' +p19394 +I01 +ssS'unique' +p19395 +(dp19396 +S'editable' +p19397 +I00 +sS'value' +p19398 +I00 +ssS'properties' +p19399 +(dp19400 +S'default_value' +p19401 +(dp19402 +S'editable' +p19403 +I00 +sS'value' +p19404 +NssS'summary_default' +p19405 +(dp19406 +S'editable' +p19407 +I01 +sS'value' +p19408 +S'none' +p19409 +sssS'description' +p19410 +(dp19411 +S'editable' +p19412 +I01 +sS'value' +p19413 +g47 +sssS'lastname' +p19414 +(dp19415 +S'mandatory' +p19416 +(dp19417 +S'editable' +p19418 +I00 +sS'value' +p19419 +I00 +ssS'name' +p19420 +(dp19421 +S'editable' +p19422 +I01 +sS'value' +p19423 +S'Version' +p19424 +ssS'data_type' +p19425 +(dp19426 +S'editable' +p19427 +I00 +sS'value' +p19428 +S'text' +p19429 +ssS'entity_type' +p19430 +(dp19431 +S'editable' +p19432 +I00 +sS'value' +p19433 +S'ApiUser' +p19434 +ssS'editable' +p19435 +(dp19436 +S'editable' +p19437 +I00 +sS'value' +p19438 +I01 +ssS'unique' +p19439 +(dp19440 +S'editable' +p19441 +I00 +sS'value' +p19442 +I00 +ssS'properties' +p19443 +(dp19444 +S'default_value' +p19445 +(dp19446 +S'editable' +p19447 +I00 +sS'value' +p19448 +NssS'summary_default' +p19449 +(dp19450 +S'editable' +p19451 +I01 +sS'value' +p19452 +S'none' +p19453 +sssS'description' +p19454 +(dp19455 +S'editable' +p19456 +I01 +sS'value' +p19457 +g47 +sssS'created_at' +p19458 +(dp19459 +S'mandatory' +p19460 +(dp19461 +S'editable' +p19462 +I00 +sS'value' +p19463 +I00 +ssS'name' +p19464 +(dp19465 +S'editable' +p19466 +I01 +sS'value' +p19467 +S'Date Created' +p19468 +ssS'data_type' +p19469 +(dp19470 +S'editable' +p19471 +I00 +sS'value' +p19472 +S'date_time' +p19473 +ssS'entity_type' +p19474 +(dp19475 +S'editable' +p19476 +I00 +sS'value' +p19477 +S'ApiUser' +p19478 +ssS'editable' +p19479 +(dp19480 +S'editable' +p19481 +I00 +sS'value' +p19482 +I00 +ssS'unique' +p19483 +(dp19484 +S'editable' +p19485 +I00 +sS'value' +p19486 +I00 +ssS'properties' +p19487 +(dp19488 +S'default_value' +p19489 +(dp19490 +S'editable' +p19491 +I00 +sS'value' +p19492 +NssS'summary_default' +p19493 +(dp19494 +S'editable' +p19495 +I01 +sS'value' +p19496 +S'none' +p19497 +sssS'description' +p19498 +(dp19499 +S'editable' +p19500 +I01 +sS'value' +p19501 +g47 +sssS'generate_event_log_entries' +p19502 +(dp19503 +S'mandatory' +p19504 +(dp19505 +S'editable' +p19506 +I00 +sS'value' +p19507 +I00 +ssS'name' +p19508 +(dp19509 +S'editable' +p19510 +I01 +sS'value' +p19511 +S'Generate Events' +p19512 +ssS'data_type' +p19513 +(dp19514 +S'editable' +p19515 +I00 +sS'value' +p19516 +S'checkbox' +p19517 +ssS'entity_type' +p19518 +(dp19519 +S'editable' +p19520 +I00 +sS'value' +p19521 +S'ApiUser' +p19522 +ssS'editable' +p19523 +(dp19524 +S'editable' +p19525 +I00 +sS'value' +p19526 +I01 +ssS'unique' +p19527 +(dp19528 +S'editable' +p19529 +I00 +sS'value' +p19530 +I00 +ssS'properties' +p19531 +(dp19532 +S'default_value' +p19533 +(dp19534 +S'editable' +p19535 +I00 +sS'value' +p19536 +I01 +ssS'summary_default' +p19537 +(dp19538 +S'editable' +p19539 +I01 +sS'value' +p19540 +S'none' +p19541 +sssS'description' +p19542 +(dp19543 +S'editable' +p19544 +I01 +sS'value' +p19545 +g47 +sssS'updated_at' +p19546 +(dp19547 +S'mandatory' +p19548 +(dp19549 +S'editable' +p19550 +I00 +sS'value' +p19551 +I00 +ssS'name' +p19552 +(dp19553 +S'editable' +p19554 +I01 +sS'value' +p19555 +S'Date Updated' +p19556 +ssS'data_type' +p19557 +(dp19558 +S'editable' +p19559 +I00 +sS'value' +p19560 +S'date_time' +p19561 +ssS'entity_type' +p19562 +(dp19563 +S'editable' +p19564 +I00 +sS'value' +p19565 +S'ApiUser' +p19566 +ssS'editable' +p19567 +(dp19568 +S'editable' +p19569 +I00 +sS'value' +p19570 +I00 +ssS'unique' +p19571 +(dp19572 +S'editable' +p19573 +I00 +sS'value' +p19574 +I00 +ssS'properties' +p19575 +(dp19576 +S'default_value' +p19577 +(dp19578 +S'editable' +p19579 +I00 +sS'value' +p19580 +NssS'summary_default' +p19581 +(dp19582 +S'editable' +p19583 +I01 +sS'value' +p19584 +S'none' +p19585 +sssS'description' +p19586 +(dp19587 +S'editable' +p19588 +I01 +sS'value' +p19589 +g47 +sssS'created_by' +p19590 +(dp19591 +S'mandatory' +p19592 +(dp19593 +S'editable' +p19594 +I00 +sS'value' +p19595 +I00 +ssS'name' +p19596 +(dp19597 +S'editable' +p19598 +I01 +sS'value' +p19599 +S'Created by' +p19600 +ssS'data_type' +p19601 +(dp19602 +S'editable' +p19603 +I00 +sS'value' +p19604 +S'entity' +p19605 +ssS'entity_type' +p19606 +(dp19607 +S'editable' +p19608 +I00 +sS'value' +p19609 +S'ApiUser' +p19610 +ssS'editable' +p19611 +(dp19612 +S'editable' +p19613 +I00 +sS'value' +p19614 +I00 +ssS'unique' +p19615 +(dp19616 +S'editable' +p19617 +I00 +sS'value' +p19618 +I00 +ssS'properties' +p19619 +(dp19620 +S'default_value' +p19621 +(dp19622 +S'editable' +p19623 +I00 +sS'value' +p19624 +NssS'summary_default' +p19625 +(dp19626 +S'editable' +p19627 +I01 +sS'value' +p19628 +S'none' +p19629 +ssS'valid_types' +p19630 +(dp19631 +S'editable' +p19632 +I01 +sS'value' +p19633 +(lp19634 +S'HumanUser' +p19635 +aS'ApiUser' +p19636 +asssS'description' +p19637 +(dp19638 +S'editable' +p19639 +I01 +sS'value' +p19640 +g47 +sssS'email' +p19641 +(dp19642 +S'mandatory' +p19643 +(dp19644 +S'editable' +p19645 +I00 +sS'value' +p19646 +I00 +ssS'name' +p19647 +(dp19648 +S'editable' +p19649 +I01 +sS'value' +p19650 +S'Maintainer' +p19651 +ssS'data_type' +p19652 +(dp19653 +S'editable' +p19654 +I00 +sS'value' +p19655 +S'text' +p19656 +ssS'entity_type' +p19657 +(dp19658 +S'editable' +p19659 +I00 +sS'value' +p19660 +S'ApiUser' +p19661 +ssS'editable' +p19662 +(dp19663 +S'editable' +p19664 +I00 +sS'value' +p19665 +I01 +ssS'unique' +p19666 +(dp19667 +S'editable' +p19668 +I00 +sS'value' +p19669 +I00 +ssS'properties' +p19670 +(dp19671 +S'default_value' +p19672 +(dp19673 +S'editable' +p19674 +I00 +sS'value' +p19675 +g47 +ssS'summary_default' +p19676 +(dp19677 +S'editable' +p19678 +I01 +sS'value' +p19679 +S'none' +p19680 +sssS'description' +p19681 +(dp19682 +S'editable' +p19683 +I01 +sS'value' +p19684 +g47 +sssS'permission_rule_set' +p19685 +(dp19686 +S'mandatory' +p19687 +(dp19688 +S'editable' +p19689 +I00 +sS'value' +p19690 +I00 +ssS'name' +p19691 +(dp19692 +S'editable' +p19693 +I01 +sS'value' +p19694 +S'Permission Group' +p19695 +ssS'data_type' +p19696 +(dp19697 +S'editable' +p19698 +I00 +sS'value' +p19699 +S'entity' +p19700 +ssS'entity_type' +p19701 +(dp19702 +S'editable' +p19703 +I00 +sS'value' +p19704 +S'ApiUser' +p19705 +ssS'editable' +p19706 +(dp19707 +S'editable' +p19708 +I00 +sS'value' +p19709 +I00 +ssS'unique' +p19710 +(dp19711 +S'editable' +p19712 +I00 +sS'value' +p19713 +I00 +ssS'properties' +p19714 +(dp19715 +S'default_value' +p19716 +(dp19717 +S'editable' +p19718 +I00 +sS'value' +p19719 +NssS'summary_default' +p19720 +(dp19721 +S'editable' +p19722 +I01 +sS'value' +p19723 +S'none' +p19724 +ssS'valid_types' +p19725 +(dp19726 +S'editable' +p19727 +I01 +sS'value' +p19728 +(lp19729 +S'PermissionRuleSet' +p19730 +asssS'description' +p19731 +(dp19732 +S'editable' +p19733 +I01 +sS'value' +p19734 +g47 +sssS'filmstrip_image' +p19735 +(dp19736 +S'mandatory' +p19737 +(dp19738 +S'editable' +p19739 +I00 +sS'value' +p19740 +I00 +ssS'name' +p19741 +(dp19742 +S'editable' +p19743 +I01 +sS'value' +p19744 +S'Filmstrip Thumbnail' +p19745 +ssS'data_type' +p19746 +(dp19747 +S'editable' +p19748 +I00 +sS'value' +p19749 +S'image' +p19750 +ssS'entity_type' +p19751 +(dp19752 +S'editable' +p19753 +I00 +sS'value' +p19754 +S'ApiUser' +p19755 +ssS'editable' +p19756 +(dp19757 +S'editable' +p19758 +I00 +sS'value' +p19759 +I01 +ssS'unique' +p19760 +(dp19761 +S'editable' +p19762 +I00 +sS'value' +p19763 +I00 +ssS'properties' +p19764 +(dp19765 +S'default_value' +p19766 +(dp19767 +S'editable' +p19768 +I00 +sS'value' +p19769 +NssS'summary_default' +p19770 +(dp19771 +S'editable' +p19772 +I01 +sS'value' +p19773 +S'none' +p19774 +sssS'description' +p19775 +(dp19776 +S'editable' +p19777 +I01 +sS'value' +p19778 +g47 +sssS'image' +p19779 +(dp19780 +S'mandatory' +p19781 +(dp19782 +S'editable' +p19783 +I00 +sS'value' +p19784 +I00 +ssS'name' +p19785 +(dp19786 +S'editable' +p19787 +I01 +sS'value' +p19788 +S'Thumbnail' +p19789 +ssS'data_type' +p19790 +(dp19791 +S'editable' +p19792 +I00 +sS'value' +p19793 +S'image' +p19794 +ssS'entity_type' +p19795 +(dp19796 +S'editable' +p19797 +I00 +sS'value' +p19798 +S'ApiUser' +p19799 +ssS'editable' +p19800 +(dp19801 +S'editable' +p19802 +I00 +sS'value' +p19803 +I01 +ssS'unique' +p19804 +(dp19805 +S'editable' +p19806 +I00 +sS'value' +p19807 +I00 +ssS'properties' +p19808 +(dp19809 +S'default_value' +p19810 +(dp19811 +S'editable' +p19812 +I00 +sS'value' +p19813 +NssS'summary_default' +p19814 +(dp19815 +S'editable' +p19816 +I01 +sS'value' +p19817 +S'none' +p19818 +sssS'description' +p19819 +(dp19820 +S'editable' +p19821 +I01 +sS'value' +p19822 +g47 +sssS'cached_display_name' +p19823 +(dp19824 +S'mandatory' +p19825 +(dp19826 +S'editable' +p19827 +I00 +sS'value' +p19828 +I00 +ssS'name' +p19829 +(dp19830 +S'editable' +p19831 +I01 +sS'value' +p19832 +S'Cached Display Name' +p19833 +ssS'data_type' +p19834 +(dp19835 +S'editable' +p19836 +I00 +sS'value' +p19837 +S'text' +p19838 +ssS'entity_type' +p19839 +(dp19840 +S'editable' +p19841 +I00 +sS'value' +p19842 +S'ApiUser' +p19843 +ssS'editable' +p19844 +(dp19845 +S'editable' +p19846 +I00 +sS'value' +p19847 +I01 +ssS'unique' +p19848 +(dp19849 +S'editable' +p19850 +I00 +sS'value' +p19851 +I00 +ssS'properties' +p19852 +(dp19853 +S'default_value' +p19854 +(dp19855 +S'editable' +p19856 +I00 +sS'value' +p19857 +NssS'summary_default' +p19858 +(dp19859 +S'editable' +p19860 +I00 +sS'value' +p19861 +S'none' +p19862 +sssS'description' +p19863 +(dp19864 +S'editable' +p19865 +I01 +sS'value' +p19866 +g47 +sssS'tag_list' +p19867 +(dp19868 +S'mandatory' +p19869 +(dp19870 +S'editable' +p19871 +I00 +sS'value' +p19872 +I00 +ssS'name' +p19873 +(dp19874 +S'editable' +p19875 +I01 +sS'value' +p19876 +S'Tags' +p19877 +ssS'data_type' +p19878 +(dp19879 +S'editable' +p19880 +I00 +sS'value' +p19881 +S'tag_list' +p19882 +ssS'entity_type' +p19883 +(dp19884 +S'editable' +p19885 +I00 +sS'value' +p19886 +S'ApiUser' +p19887 +ssS'editable' +p19888 +(dp19889 +S'editable' +p19890 +I00 +sS'value' +p19891 +I01 +ssS'unique' +p19892 +(dp19893 +S'editable' +p19894 +I00 +sS'value' +p19895 +I00 +ssS'properties' +p19896 +(dp19897 +S'default_value' +p19898 +(dp19899 +S'editable' +p19900 +I00 +sS'value' +p19901 +NssS'summary_default' +p19902 +(dp19903 +S'editable' +p19904 +I01 +sS'value' +p19905 +S'none' +p19906 +ssS'valid_types' +p19907 +(dp19908 +S'editable' +p19909 +I01 +sS'value' +p19910 +(lp19911 +S'Tag' +p19912 +asssS'description' +p19913 +(dp19914 +S'editable' +p19915 +I01 +sS'value' +p19916 +g47 +sssS'id' +p19917 +(dp19918 +S'mandatory' +p19919 +(dp19920 +S'editable' +p19921 +I00 +sS'value' +p19922 +I00 +ssS'name' +p19923 +(dp19924 +S'editable' +p19925 +I01 +sS'value' +p19926 +S'Id' +p19927 +ssS'data_type' +p19928 +(dp19929 +S'editable' +p19930 +I00 +sS'value' +p19931 +S'number' +p19932 +ssS'entity_type' +p19933 +(dp19934 +S'editable' +p19935 +I00 +sS'value' +p19936 +S'ApiUser' +p19937 +ssS'editable' +p19938 +(dp19939 +S'editable' +p19940 +I00 +sS'value' +p19941 +I00 +ssS'unique' +p19942 +(dp19943 +S'editable' +p19944 +I00 +sS'value' +p19945 +I00 +ssS'properties' +p19946 +(dp19947 +S'default_value' +p19948 +(dp19949 +S'editable' +p19950 +I00 +sS'value' +p19951 +NssS'summary_default' +p19952 +(dp19953 +S'editable' +p19954 +I01 +sS'value' +p19955 +S'none' +p19956 +sssS'description' +p19957 +(dp19958 +S'editable' +p19959 +I01 +sS'value' +p19960 +g47 +sssS'salted_password' +p19961 +(dp19962 +S'mandatory' +p19963 +(dp19964 +S'editable' +p19965 +I00 +sS'value' +p19966 +I00 +ssS'name' +p19967 +(dp19968 +S'editable' +p19969 +I01 +sS'value' +p19970 +S'Application Key' +p19971 +ssS'data_type' +p19972 +(dp19973 +S'editable' +p19974 +I00 +sS'value' +p19975 +S'text' +p19976 +ssS'entity_type' +p19977 +(dp19978 +S'editable' +p19979 +I00 +sS'value' +p19980 +S'ApiUser' +p19981 +ssS'editable' +p19982 +(dp19983 +S'editable' +p19984 +I00 +sS'value' +p19985 +I00 +ssS'unique' +p19986 +(dp19987 +S'editable' +p19988 +I00 +sS'value' +p19989 +I00 +ssS'properties' +p19990 +(dp19991 +S'default_value' +p19992 +(dp19993 +S'editable' +p19994 +I00 +sS'value' +p19995 +g47 +ssS'summary_default' +p19996 +(dp19997 +S'editable' +p19998 +I01 +sS'value' +p19999 +S'none' +p20000 +sssS'description' +p20001 +(dp20002 +S'editable' +p20003 +I01 +sS'value' +p20004 +g47 +sssS'updated_by' +p20005 +(dp20006 +S'mandatory' +p20007 +(dp20008 +S'editable' +p20009 +I00 +sS'value' +p20010 +I00 +ssS'name' +p20011 +(dp20012 +S'editable' +p20013 +I01 +sS'value' +p20014 +S'Updated by' +p20015 +ssS'data_type' +p20016 +(dp20017 +S'editable' +p20018 +I00 +sS'value' +p20019 +S'entity' +p20020 +ssS'entity_type' +p20021 +(dp20022 +S'editable' +p20023 +I00 +sS'value' +p20024 +S'ApiUser' +p20025 +ssS'editable' +p20026 +(dp20027 +S'editable' +p20028 +I00 +sS'value' +p20029 +I00 +ssS'unique' +p20030 +(dp20031 +S'editable' +p20032 +I00 +sS'value' +p20033 +I00 +ssS'properties' +p20034 +(dp20035 +S'default_value' +p20036 +(dp20037 +S'editable' +p20038 +I00 +sS'value' +p20039 +NssS'summary_default' +p20040 +(dp20041 +S'editable' +p20042 +I01 +sS'value' +p20043 +S'none' +p20044 +ssS'valid_types' +p20045 +(dp20046 +S'editable' +p20047 +I01 +sS'value' +p20048 +(lp20049 +S'HumanUser' +p20050 +aS'ApiUser' +p20051 +asssS'description' +p20052 +(dp20053 +S'editable' +p20054 +I01 +sS'value' +p20055 +g47 +ssssS'CustomNonProjectEntity03' +p20056 +(dp20057 +S'open_notes_count' +p20058 +(dp20059 +S'mandatory' +p20060 +(dp20061 +S'editable' +p20062 +I00 +sS'value' +p20063 +I00 +ssS'name' +p20064 +(dp20065 +S'editable' +p20066 +I01 +sS'value' +p20067 +S'Open Notes Count' +p20068 +ssS'data_type' +p20069 +(dp20070 +S'editable' +p20071 +I00 +sS'value' +p20072 +S'text' +p20073 +ssS'entity_type' +p20074 +(dp20075 +S'editable' +p20076 +I00 +sS'value' +p20077 +S'CustomNonProjectEntity03' +p20078 +ssS'editable' +p20079 +(dp20080 +S'editable' +p20081 +I00 +sS'value' +p20082 +I00 +ssS'unique' +p20083 +(dp20084 +S'editable' +p20085 +I00 +sS'value' +p20086 +I00 +ssS'properties' +p20087 +(dp20088 +S'default_value' +p20089 +(dp20090 +S'editable' +p20091 +I00 +sS'value' +p20092 +NssS'summary_default' +p20093 +(dp20094 +S'editable' +p20095 +I01 +sS'value' +p20096 +S'none' +p20097 +sssS'description' +p20098 +(dp20099 +S'editable' +p20100 +I01 +sS'value' +p20101 +g47 +sssS'code' +p20102 +(dp20103 +S'mandatory' +p20104 +(dp20105 +S'editable' +p20106 +I00 +sS'value' +p20107 +I01 +ssS'name' +p20108 +(dp20109 +S'editable' +p20110 +I01 +sS'value' +p20111 +S'Custom Non Project Entity03 Name' +p20112 +ssS'data_type' +p20113 +(dp20114 +S'editable' +p20115 +I00 +sS'value' +p20116 +S'text' +p20117 +ssS'entity_type' +p20118 +(dp20119 +S'editable' +p20120 +I00 +sS'value' +p20121 +S'CustomNonProjectEntity03' +p20122 +ssS'editable' +p20123 +(dp20124 +S'editable' +p20125 +I00 +sS'value' +p20126 +I01 +ssS'unique' +p20127 +(dp20128 +S'editable' +p20129 +I00 +sS'value' +p20130 +I00 +ssS'properties' +p20131 +(dp20132 +S'default_value' +p20133 +(dp20134 +S'editable' +p20135 +I00 +sS'value' +p20136 +NssS'summary_default' +p20137 +(dp20138 +S'editable' +p20139 +I01 +sS'value' +p20140 +S'none' +p20141 +sssS'description' +p20142 +(dp20143 +S'editable' +p20144 +I01 +sS'value' +p20145 +g47 +sssS'open_notes' +p20146 +(dp20147 +S'mandatory' +p20148 +(dp20149 +S'editable' +p20150 +I00 +sS'value' +p20151 +I00 +ssS'name' +p20152 +(dp20153 +S'editable' +p20154 +I01 +sS'value' +p20155 +S'Open Notes' +p20156 +ssS'data_type' +p20157 +(dp20158 +S'editable' +p20159 +I00 +sS'value' +p20160 +S'multi_entity' +p20161 +ssS'entity_type' +p20162 +(dp20163 +S'editable' +p20164 +I00 +sS'value' +p20165 +S'CustomNonProjectEntity03' +p20166 +ssS'editable' +p20167 +(dp20168 +S'editable' +p20169 +I00 +sS'value' +p20170 +I00 +ssS'unique' +p20171 +(dp20172 +S'editable' +p20173 +I00 +sS'value' +p20174 +I00 +ssS'properties' +p20175 +(dp20176 +S'default_value' +p20177 +(dp20178 +S'editable' +p20179 +I00 +sS'value' +p20180 +NssS'summary_default' +p20181 +(dp20182 +S'editable' +p20183 +I01 +sS'value' +p20184 +S'none' +p20185 +ssS'valid_types' +p20186 +(dp20187 +S'editable' +p20188 +I01 +sS'value' +p20189 +(lp20190 +S'Note' +p20191 +asssS'description' +p20192 +(dp20193 +S'editable' +p20194 +I01 +sS'value' +p20195 +g47 +sssS'description' +p20196 +(dp20197 +S'mandatory' +p20198 +(dp20199 +S'editable' +p20200 +I00 +sS'value' +p20201 +I00 +ssS'name' +p20202 +(dp20203 +S'editable' +p20204 +I01 +sS'value' +p20205 +S'Description' +p20206 +ssS'data_type' +p20207 +(dp20208 +S'editable' +p20209 +I00 +sS'value' +p20210 +S'text' +p20211 +ssS'entity_type' +p20212 +(dp20213 +S'editable' +p20214 +I00 +sS'value' +p20215 +S'CustomNonProjectEntity03' +p20216 +ssS'editable' +p20217 +(dp20218 +S'editable' +p20219 +I00 +sS'value' +p20220 +I01 +ssS'unique' +p20221 +(dp20222 +S'editable' +p20223 +I00 +sS'value' +p20224 +I00 +ssS'properties' +p20225 +(dp20226 +S'default_value' +p20227 +(dp20228 +S'editable' +p20229 +I00 +sS'value' +p20230 +NssS'summary_default' +p20231 +(dp20232 +S'editable' +p20233 +I01 +sS'value' +p20234 +S'none' +p20235 +sssS'description' +p20236 +(dp20237 +S'editable' +p20238 +I01 +sS'value' +p20239 +g47 +sssS'created_at' +p20240 +(dp20241 +S'mandatory' +p20242 +(dp20243 +S'editable' +p20244 +I00 +sS'value' +p20245 +I00 +ssS'name' +p20246 +(dp20247 +S'editable' +p20248 +I01 +sS'value' +p20249 +S'Date Created' +p20250 +ssS'data_type' +p20251 +(dp20252 +S'editable' +p20253 +I00 +sS'value' +p20254 +S'date_time' +p20255 +ssS'entity_type' +p20256 +(dp20257 +S'editable' +p20258 +I00 +sS'value' +p20259 +S'CustomNonProjectEntity03' +p20260 +ssS'editable' +p20261 +(dp20262 +S'editable' +p20263 +I00 +sS'value' +p20264 +I00 +ssS'unique' +p20265 +(dp20266 +S'editable' +p20267 +I00 +sS'value' +p20268 +I00 +ssS'properties' +p20269 +(dp20270 +S'default_value' +p20271 +(dp20272 +S'editable' +p20273 +I00 +sS'value' +p20274 +NssS'summary_default' +p20275 +(dp20276 +S'editable' +p20277 +I01 +sS'value' +p20278 +S'none' +p20279 +sssS'description' +p20280 +(dp20281 +S'editable' +p20282 +I01 +sS'value' +p20283 +g47 +sssS'updated_at' +p20284 +(dp20285 +S'mandatory' +p20286 +(dp20287 +S'editable' +p20288 +I00 +sS'value' +p20289 +I00 +ssS'name' +p20290 +(dp20291 +S'editable' +p20292 +I01 +sS'value' +p20293 +S'Date Updated' +p20294 +ssS'data_type' +p20295 +(dp20296 +S'editable' +p20297 +I00 +sS'value' +p20298 +S'date_time' +p20299 +ssS'entity_type' +p20300 +(dp20301 +S'editable' +p20302 +I00 +sS'value' +p20303 +S'CustomNonProjectEntity03' +p20304 +ssS'editable' +p20305 +(dp20306 +S'editable' +p20307 +I00 +sS'value' +p20308 +I00 +ssS'unique' +p20309 +(dp20310 +S'editable' +p20311 +I00 +sS'value' +p20312 +I00 +ssS'properties' +p20313 +(dp20314 +S'default_value' +p20315 +(dp20316 +S'editable' +p20317 +I00 +sS'value' +p20318 +NssS'summary_default' +p20319 +(dp20320 +S'editable' +p20321 +I01 +sS'value' +p20322 +S'none' +p20323 +sssS'description' +p20324 +(dp20325 +S'editable' +p20326 +I01 +sS'value' +p20327 +g47 +sssS'created_by' +p20328 +(dp20329 +S'mandatory' +p20330 +(dp20331 +S'editable' +p20332 +I00 +sS'value' +p20333 +I00 +ssS'name' +p20334 +(dp20335 +S'editable' +p20336 +I01 +sS'value' +p20337 +S'Created by' +p20338 +ssS'data_type' +p20339 +(dp20340 +S'editable' +p20341 +I00 +sS'value' +p20342 +S'entity' +p20343 +ssS'entity_type' +p20344 +(dp20345 +S'editable' +p20346 +I00 +sS'value' +p20347 +S'CustomNonProjectEntity03' +p20348 +ssS'editable' +p20349 +(dp20350 +S'editable' +p20351 +I00 +sS'value' +p20352 +I00 +ssS'unique' +p20353 +(dp20354 +S'editable' +p20355 +I00 +sS'value' +p20356 +I00 +ssS'properties' +p20357 +(dp20358 +S'default_value' +p20359 +(dp20360 +S'editable' +p20361 +I00 +sS'value' +p20362 +NssS'summary_default' +p20363 +(dp20364 +S'editable' +p20365 +I01 +sS'value' +p20366 +S'none' +p20367 +ssS'valid_types' +p20368 +(dp20369 +S'editable' +p20370 +I01 +sS'value' +p20371 +(lp20372 +S'HumanUser' +p20373 +aS'ApiUser' +p20374 +asssS'description' +p20375 +(dp20376 +S'editable' +p20377 +I01 +sS'value' +p20378 +g47 +sssS'filmstrip_image' +p20379 +(dp20380 +S'mandatory' +p20381 +(dp20382 +S'editable' +p20383 +I00 +sS'value' +p20384 +I00 +ssS'name' +p20385 +(dp20386 +S'editable' +p20387 +I01 +sS'value' +p20388 +S'Filmstrip Thumbnail' +p20389 +ssS'data_type' +p20390 +(dp20391 +S'editable' +p20392 +I00 +sS'value' +p20393 +S'image' +p20394 +ssS'entity_type' +p20395 +(dp20396 +S'editable' +p20397 +I00 +sS'value' +p20398 +S'CustomNonProjectEntity03' +p20399 +ssS'editable' +p20400 +(dp20401 +S'editable' +p20402 +I00 +sS'value' +p20403 +I01 +ssS'unique' +p20404 +(dp20405 +S'editable' +p20406 +I00 +sS'value' +p20407 +I00 +ssS'properties' +p20408 +(dp20409 +S'default_value' +p20410 +(dp20411 +S'editable' +p20412 +I00 +sS'value' +p20413 +NssS'summary_default' +p20414 +(dp20415 +S'editable' +p20416 +I01 +sS'value' +p20417 +S'none' +p20418 +sssS'description' +p20419 +(dp20420 +S'editable' +p20421 +I01 +sS'value' +p20422 +g47 +sssS'sg_status_list' +p20423 +(dp20424 +S'mandatory' +p20425 +(dp20426 +S'editable' +p20427 +I00 +sS'value' +p20428 +I00 +ssS'name' +p20429 +(dp20430 +S'editable' +p20431 +I01 +sS'value' +p20432 +S'Status' +p20433 +ssS'data_type' +p20434 +(dp20435 +S'editable' +p20436 +I00 +sS'value' +p20437 +S'status_list' +p20438 +ssS'entity_type' +p20439 +(dp20440 +S'editable' +p20441 +I00 +sS'value' +p20442 +S'CustomNonProjectEntity03' +p20443 +ssS'editable' +p20444 +(dp20445 +S'editable' +p20446 +I00 +sS'value' +p20447 +I01 +ssS'unique' +p20448 +(dp20449 +S'editable' +p20450 +I00 +sS'value' +p20451 +I00 +ssS'properties' +p20452 +(dp20453 +S'default_value' +p20454 +(dp20455 +S'editable' +p20456 +I01 +sS'value' +p20457 +S'wtg' +p20458 +ssS'valid_values' +p20459 +(dp20460 +S'editable' +p20461 +I01 +sS'value' +p20462 +(lp20463 +S'cmpt' +p20464 +aS'ip' +p20465 +aS'wtg' +p20466 +assS'summary_default' +p20467 +(dp20468 +S'editable' +p20469 +I01 +sS'value' +p20470 +S'none' +p20471 +sssS'description' +p20472 +(dp20473 +S'editable' +p20474 +I01 +sS'value' +p20475 +g47 +sssS'notes' +p20476 +(dp20477 +S'mandatory' +p20478 +(dp20479 +S'editable' +p20480 +I00 +sS'value' +p20481 +I00 +ssS'name' +p20482 +(dp20483 +S'editable' +p20484 +I01 +sS'value' +p20485 +S'Notes' +p20486 +ssS'data_type' +p20487 +(dp20488 +S'editable' +p20489 +I00 +sS'value' +p20490 +S'multi_entity' +p20491 +ssS'entity_type' +p20492 +(dp20493 +S'editable' +p20494 +I00 +sS'value' +p20495 +S'CustomNonProjectEntity03' +p20496 +ssS'editable' +p20497 +(dp20498 +S'editable' +p20499 +I00 +sS'value' +p20500 +I01 +ssS'unique' +p20501 +(dp20502 +S'editable' +p20503 +I00 +sS'value' +p20504 +I00 +ssS'properties' +p20505 +(dp20506 +S'default_value' +p20507 +(dp20508 +S'editable' +p20509 +I00 +sS'value' +p20510 +NssS'summary_default' +p20511 +(dp20512 +S'editable' +p20513 +I01 +sS'value' +p20514 +S'none' +p20515 +ssS'valid_types' +p20516 +(dp20517 +S'editable' +p20518 +I01 +sS'value' +p20519 +(lp20520 +S'Note' +p20521 +asssS'description' +p20522 +(dp20523 +S'editable' +p20524 +I01 +sS'value' +p20525 +g47 +sssS'image' +p20526 +(dp20527 +S'mandatory' +p20528 +(dp20529 +S'editable' +p20530 +I00 +sS'value' +p20531 +I00 +ssS'name' +p20532 +(dp20533 +S'editable' +p20534 +I01 +sS'value' +p20535 +S'Thumbnail' +p20536 +ssS'data_type' +p20537 +(dp20538 +S'editable' +p20539 +I00 +sS'value' +p20540 +S'image' +p20541 +ssS'entity_type' +p20542 +(dp20543 +S'editable' +p20544 +I00 +sS'value' +p20545 +S'CustomNonProjectEntity03' +p20546 +ssS'editable' +p20547 +(dp20548 +S'editable' +p20549 +I00 +sS'value' +p20550 +I01 +ssS'unique' +p20551 +(dp20552 +S'editable' +p20553 +I00 +sS'value' +p20554 +I00 +ssS'properties' +p20555 +(dp20556 +S'default_value' +p20557 +(dp20558 +S'editable' +p20559 +I00 +sS'value' +p20560 +NssS'summary_default' +p20561 +(dp20562 +S'editable' +p20563 +I01 +sS'value' +p20564 +S'none' +p20565 +sssS'description' +p20566 +(dp20567 +S'editable' +p20568 +I01 +sS'value' +p20569 +g47 +sssS'cached_display_name' +p20570 +(dp20571 +S'mandatory' +p20572 +(dp20573 +S'editable' +p20574 +I00 +sS'value' +p20575 +I00 +ssS'name' +p20576 +(dp20577 +S'editable' +p20578 +I01 +sS'value' +p20579 +S'Cached Display Name' +p20580 +ssS'data_type' +p20581 +(dp20582 +S'editable' +p20583 +I00 +sS'value' +p20584 +S'text' +p20585 +ssS'entity_type' +p20586 +(dp20587 +S'editable' +p20588 +I00 +sS'value' +p20589 +S'CustomNonProjectEntity03' +p20590 +ssS'editable' +p20591 +(dp20592 +S'editable' +p20593 +I00 +sS'value' +p20594 +I01 +ssS'unique' +p20595 +(dp20596 +S'editable' +p20597 +I00 +sS'value' +p20598 +I00 +ssS'properties' +p20599 +(dp20600 +S'default_value' +p20601 +(dp20602 +S'editable' +p20603 +I00 +sS'value' +p20604 +NssS'summary_default' +p20605 +(dp20606 +S'editable' +p20607 +I00 +sS'value' +p20608 +S'none' +p20609 +sssS'description' +p20610 +(dp20611 +S'editable' +p20612 +I01 +sS'value' +p20613 +g47 +sssS'tag_list' +p20614 +(dp20615 +S'mandatory' +p20616 +(dp20617 +S'editable' +p20618 +I00 +sS'value' +p20619 +I00 +ssS'name' +p20620 +(dp20621 +S'editable' +p20622 +I01 +sS'value' +p20623 +S'Tags' +p20624 +ssS'data_type' +p20625 +(dp20626 +S'editable' +p20627 +I00 +sS'value' +p20628 +S'tag_list' +p20629 +ssS'entity_type' +p20630 +(dp20631 +S'editable' +p20632 +I00 +sS'value' +p20633 +S'CustomNonProjectEntity03' +p20634 +ssS'editable' +p20635 +(dp20636 +S'editable' +p20637 +I00 +sS'value' +p20638 +I01 +ssS'unique' +p20639 +(dp20640 +S'editable' +p20641 +I00 +sS'value' +p20642 +I00 +ssS'properties' +p20643 +(dp20644 +S'default_value' +p20645 +(dp20646 +S'editable' +p20647 +I00 +sS'value' +p20648 +NssS'summary_default' +p20649 +(dp20650 +S'editable' +p20651 +I01 +sS'value' +p20652 +S'none' +p20653 +ssS'valid_types' +p20654 +(dp20655 +S'editable' +p20656 +I01 +sS'value' +p20657 +(lp20658 +S'Tag' +p20659 +asssS'description' +p20660 +(dp20661 +S'editable' +p20662 +I01 +sS'value' +p20663 +g47 +sssS'id' +p20664 +(dp20665 +S'mandatory' +p20666 +(dp20667 +S'editable' +p20668 +I00 +sS'value' +p20669 +I00 +ssS'name' +p20670 +(dp20671 +S'editable' +p20672 +I01 +sS'value' +p20673 +S'Id' +p20674 +ssS'data_type' +p20675 +(dp20676 +S'editable' +p20677 +I00 +sS'value' +p20678 +S'number' +p20679 +ssS'entity_type' +p20680 +(dp20681 +S'editable' +p20682 +I00 +sS'value' +p20683 +S'CustomNonProjectEntity03' +p20684 +ssS'editable' +p20685 +(dp20686 +S'editable' +p20687 +I00 +sS'value' +p20688 +I00 +ssS'unique' +p20689 +(dp20690 +S'editable' +p20691 +I00 +sS'value' +p20692 +I00 +ssS'properties' +p20693 +(dp20694 +S'default_value' +p20695 +(dp20696 +S'editable' +p20697 +I00 +sS'value' +p20698 +NssS'summary_default' +p20699 +(dp20700 +S'editable' +p20701 +I01 +sS'value' +p20702 +S'none' +p20703 +sssS'description' +p20704 +(dp20705 +S'editable' +p20706 +I01 +sS'value' +p20707 +g47 +sssS'updated_by' +p20708 +(dp20709 +S'mandatory' +p20710 +(dp20711 +S'editable' +p20712 +I00 +sS'value' +p20713 +I00 +ssS'name' +p20714 +(dp20715 +S'editable' +p20716 +I01 +sS'value' +p20717 +S'Updated by' +p20718 +ssS'data_type' +p20719 +(dp20720 +S'editable' +p20721 +I00 +sS'value' +p20722 +S'entity' +p20723 +ssS'entity_type' +p20724 +(dp20725 +S'editable' +p20726 +I00 +sS'value' +p20727 +S'CustomNonProjectEntity03' +p20728 +ssS'editable' +p20729 +(dp20730 +S'editable' +p20731 +I00 +sS'value' +p20732 +I00 +ssS'unique' +p20733 +(dp20734 +S'editable' +p20735 +I00 +sS'value' +p20736 +I00 +ssS'properties' +p20737 +(dp20738 +S'default_value' +p20739 +(dp20740 +S'editable' +p20741 +I00 +sS'value' +p20742 +NssS'summary_default' +p20743 +(dp20744 +S'editable' +p20745 +I01 +sS'value' +p20746 +S'none' +p20747 +ssS'valid_types' +p20748 +(dp20749 +S'editable' +p20750 +I01 +sS'value' +p20751 +(lp20752 +S'HumanUser' +p20753 +aS'ApiUser' +p20754 +asssS'description' +p20755 +(dp20756 +S'editable' +p20757 +I01 +sS'value' +p20758 +g47 +ssssS'LaunchShotConnection' +p20759 +(dp20760 +S'cached_display_name' +p20761 +(dp20762 +S'mandatory' +p20763 +(dp20764 +S'editable' +p20765 +I00 +sS'value' +p20766 +I00 +ssS'name' +p20767 +(dp20768 +S'editable' +p20769 +I01 +sS'value' +p20770 +S'Cached Display Name' +p20771 +ssS'data_type' +p20772 +(dp20773 +S'editable' +p20774 +I00 +sS'value' +p20775 +S'text' +p20776 +ssS'entity_type' +p20777 +(dp20778 +S'editable' +p20779 +I00 +sS'value' +p20780 +S'LaunchShotConnection' +p20781 +ssS'editable' +p20782 +(dp20783 +S'editable' +p20784 +I00 +sS'value' +p20785 +I01 +ssS'unique' +p20786 +(dp20787 +S'editable' +p20788 +I00 +sS'value' +p20789 +I00 +ssS'properties' +p20790 +(dp20791 +S'default_value' +p20792 +(dp20793 +S'editable' +p20794 +I00 +sS'value' +p20795 +NssS'summary_default' +p20796 +(dp20797 +S'editable' +p20798 +I00 +sS'value' +p20799 +S'none' +p20800 +sssS'description' +p20801 +(dp20802 +S'editable' +p20803 +I01 +sS'value' +p20804 +g47 +sssS'shot' +p20805 +(dp20806 +S'mandatory' +p20807 +(dp20808 +S'editable' +p20809 +I00 +sS'value' +p20810 +I00 +ssS'name' +p20811 +(dp20812 +S'editable' +p20813 +I01 +sS'value' +p20814 +S'Shot' +p20815 +ssS'data_type' +p20816 +(dp20817 +S'editable' +p20818 +I00 +sS'value' +p20819 +S'entity' +p20820 +ssS'entity_type' +p20821 +(dp20822 +S'editable' +p20823 +I00 +sS'value' +p20824 +S'LaunchShotConnection' +p20825 +ssS'editable' +p20826 +(dp20827 +S'editable' +p20828 +I00 +sS'value' +p20829 +I00 +ssS'unique' +p20830 +(dp20831 +S'editable' +p20832 +I00 +sS'value' +p20833 +I00 +ssS'properties' +p20834 +(dp20835 +S'default_value' +p20836 +(dp20837 +S'editable' +p20838 +I00 +sS'value' +p20839 +NssS'summary_default' +p20840 +(dp20841 +S'editable' +p20842 +I00 +sS'value' +p20843 +S'none' +p20844 +ssS'valid_types' +p20845 +(dp20846 +S'editable' +p20847 +I00 +sS'value' +p20848 +(lp20849 +S'Shot' +p20850 +asssS'description' +p20851 +(dp20852 +S'editable' +p20853 +I01 +sS'value' +p20854 +g47 +sssS'id' +p20855 +(dp20856 +S'mandatory' +p20857 +(dp20858 +S'editable' +p20859 +I00 +sS'value' +p20860 +I01 +ssS'name' +p20861 +(dp20862 +S'editable' +p20863 +I01 +sS'value' +p20864 +S'Id' +p20865 +ssS'data_type' +p20866 +(dp20867 +S'editable' +p20868 +I00 +sS'value' +p20869 +S'number' +p20870 +ssS'entity_type' +p20871 +(dp20872 +S'editable' +p20873 +I00 +sS'value' +p20874 +S'LaunchShotConnection' +p20875 +ssS'editable' +p20876 +(dp20877 +S'editable' +p20878 +I00 +sS'value' +p20879 +I00 +ssS'unique' +p20880 +(dp20881 +S'editable' +p20882 +I00 +sS'value' +p20883 +I00 +ssS'properties' +p20884 +(dp20885 +S'default_value' +p20886 +(dp20887 +S'editable' +p20888 +I00 +sS'value' +p20889 +NssS'summary_default' +p20890 +(dp20891 +S'editable' +p20892 +I00 +sS'value' +p20893 +S'none' +p20894 +sssS'description' +p20895 +(dp20896 +S'editable' +p20897 +I01 +sS'value' +p20898 +g47 +sssS'launch' +p20899 +(dp20900 +S'mandatory' +p20901 +(dp20902 +S'editable' +p20903 +I00 +sS'value' +p20904 +I00 +ssS'name' +p20905 +(dp20906 +S'editable' +p20907 +I01 +sS'value' +p20908 +S'Launch' +p20909 +ssS'data_type' +p20910 +(dp20911 +S'editable' +p20912 +I00 +sS'value' +p20913 +S'entity' +p20914 +ssS'entity_type' +p20915 +(dp20916 +S'editable' +p20917 +I00 +sS'value' +p20918 +S'LaunchShotConnection' +p20919 +ssS'editable' +p20920 +(dp20921 +S'editable' +p20922 +I00 +sS'value' +p20923 +I00 +ssS'unique' +p20924 +(dp20925 +S'editable' +p20926 +I00 +sS'value' +p20927 +I00 +ssS'properties' +p20928 +(dp20929 +S'default_value' +p20930 +(dp20931 +S'editable' +p20932 +I00 +sS'value' +p20933 +NssS'summary_default' +p20934 +(dp20935 +S'editable' +p20936 +I00 +sS'value' +p20937 +S'none' +p20938 +ssS'valid_types' +p20939 +(dp20940 +S'editable' +p20941 +I00 +sS'value' +p20942 +(lp20943 +S'Launch' +p20944 +asssS'description' +p20945 +(dp20946 +S'editable' +p20947 +I01 +sS'value' +p20948 +g47 +ssssS'ShotShotConnection' +p20949 +(dp20950 +S'shot' +p20951 +(dp20952 +S'mandatory' +p20953 +(dp20954 +S'editable' +p20955 +I00 +sS'value' +p20956 +I00 +ssS'name' +p20957 +(dp20958 +S'editable' +p20959 +I01 +sS'value' +p20960 +S'Shot' +p20961 +ssS'data_type' +p20962 +(dp20963 +S'editable' +p20964 +I00 +sS'value' +p20965 +S'entity' +p20966 +ssS'entity_type' +p20967 +(dp20968 +S'editable' +p20969 +I00 +sS'value' +p20970 +S'ShotShotConnection' +p20971 +ssS'editable' +p20972 +(dp20973 +S'editable' +p20974 +I00 +sS'value' +p20975 +I00 +ssS'unique' +p20976 +(dp20977 +S'editable' +p20978 +I00 +sS'value' +p20979 +I00 +ssS'properties' +p20980 +(dp20981 +S'default_value' +p20982 +(dp20983 +S'editable' +p20984 +I00 +sS'value' +p20985 +NssS'summary_default' +p20986 +(dp20987 +S'editable' +p20988 +I00 +sS'value' +p20989 +S'none' +p20990 +ssS'valid_types' +p20991 +(dp20992 +S'editable' +p20993 +I00 +sS'value' +p20994 +(lp20995 +S'Shot' +p20996 +asssS'description' +p20997 +(dp20998 +S'editable' +p20999 +I01 +sS'value' +p21000 +g47 +sssS'cached_display_name' +p21001 +(dp21002 +S'mandatory' +p21003 +(dp21004 +S'editable' +p21005 +I00 +sS'value' +p21006 +I00 +ssS'name' +p21007 +(dp21008 +S'editable' +p21009 +I01 +sS'value' +p21010 +S'Cached Display Name' +p21011 +ssS'data_type' +p21012 +(dp21013 +S'editable' +p21014 +I00 +sS'value' +p21015 +S'text' +p21016 +ssS'entity_type' +p21017 +(dp21018 +S'editable' +p21019 +I00 +sS'value' +p21020 +S'ShotShotConnection' +p21021 +ssS'editable' +p21022 +(dp21023 +S'editable' +p21024 +I00 +sS'value' +p21025 +I01 +ssS'unique' +p21026 +(dp21027 +S'editable' +p21028 +I00 +sS'value' +p21029 +I00 +ssS'properties' +p21030 +(dp21031 +S'default_value' +p21032 +(dp21033 +S'editable' +p21034 +I00 +sS'value' +p21035 +NssS'summary_default' +p21036 +(dp21037 +S'editable' +p21038 +I00 +sS'value' +p21039 +S'none' +p21040 +sssS'description' +p21041 +(dp21042 +S'editable' +p21043 +I01 +sS'value' +p21044 +g47 +sssS'parent_shot' +p21045 +(dp21046 +S'mandatory' +p21047 +(dp21048 +S'editable' +p21049 +I00 +sS'value' +p21050 +I00 +ssS'name' +p21051 +(dp21052 +S'editable' +p21053 +I01 +sS'value' +p21054 +S'Shot' +p21055 +ssS'data_type' +p21056 +(dp21057 +S'editable' +p21058 +I00 +sS'value' +p21059 +S'entity' +p21060 +ssS'entity_type' +p21061 +(dp21062 +S'editable' +p21063 +I00 +sS'value' +p21064 +S'ShotShotConnection' +p21065 +ssS'editable' +p21066 +(dp21067 +S'editable' +p21068 +I00 +sS'value' +p21069 +I00 +ssS'unique' +p21070 +(dp21071 +S'editable' +p21072 +I00 +sS'value' +p21073 +I00 +ssS'properties' +p21074 +(dp21075 +S'default_value' +p21076 +(dp21077 +S'editable' +p21078 +I00 +sS'value' +p21079 +NssS'summary_default' +p21080 +(dp21081 +S'editable' +p21082 +I00 +sS'value' +p21083 +S'none' +p21084 +ssS'valid_types' +p21085 +(dp21086 +S'editable' +p21087 +I00 +sS'value' +p21088 +(lp21089 +S'Shot' +p21090 +asssS'description' +p21091 +(dp21092 +S'editable' +p21093 +I01 +sS'value' +p21094 +g47 +sssS'id' +p21095 +(dp21096 +S'mandatory' +p21097 +(dp21098 +S'editable' +p21099 +I00 +sS'value' +p21100 +I01 +ssS'name' +p21101 +(dp21102 +S'editable' +p21103 +I01 +sS'value' +p21104 +S'Id' +p21105 +ssS'data_type' +p21106 +(dp21107 +S'editable' +p21108 +I00 +sS'value' +p21109 +S'number' +p21110 +ssS'entity_type' +p21111 +(dp21112 +S'editable' +p21113 +I00 +sS'value' +p21114 +S'ShotShotConnection' +p21115 +ssS'editable' +p21116 +(dp21117 +S'editable' +p21118 +I00 +sS'value' +p21119 +I00 +ssS'unique' +p21120 +(dp21121 +S'editable' +p21122 +I00 +sS'value' +p21123 +I00 +ssS'properties' +p21124 +(dp21125 +S'default_value' +p21126 +(dp21127 +S'editable' +p21128 +I00 +sS'value' +p21129 +NssS'summary_default' +p21130 +(dp21131 +S'editable' +p21132 +I00 +sS'value' +p21133 +S'none' +p21134 +sssS'description' +p21135 +(dp21136 +S'editable' +p21137 +I01 +sS'value' +p21138 +g47 +ssssS'PerformerRoutineConnection' +p21139 +(dp21140 +S'cached_display_name' +p21141 +(dp21142 +S'mandatory' +p21143 +(dp21144 +S'editable' +p21145 +I00 +sS'value' +p21146 +I00 +ssS'name' +p21147 +(dp21148 +S'editable' +p21149 +I01 +sS'value' +p21150 +S'Cached Display Name' +p21151 +ssS'data_type' +p21152 +(dp21153 +S'editable' +p21154 +I00 +sS'value' +p21155 +S'text' +p21156 +ssS'entity_type' +p21157 +(dp21158 +S'editable' +p21159 +I00 +sS'value' +p21160 +S'PerformerRoutineConnection' +p21161 +ssS'editable' +p21162 +(dp21163 +S'editable' +p21164 +I00 +sS'value' +p21165 +I01 +ssS'unique' +p21166 +(dp21167 +S'editable' +p21168 +I00 +sS'value' +p21169 +I00 +ssS'properties' +p21170 +(dp21171 +S'default_value' +p21172 +(dp21173 +S'editable' +p21174 +I00 +sS'value' +p21175 +NssS'summary_default' +p21176 +(dp21177 +S'editable' +p21178 +I00 +sS'value' +p21179 +S'none' +p21180 +sssS'description' +p21181 +(dp21182 +S'editable' +p21183 +I01 +sS'value' +p21184 +g47 +sssS'performer' +p21185 +(dp21186 +S'mandatory' +p21187 +(dp21188 +S'editable' +p21189 +I00 +sS'value' +p21190 +I00 +ssS'name' +p21191 +(dp21192 +S'editable' +p21193 +I01 +sS'value' +p21194 +S'Performer' +p21195 +ssS'data_type' +p21196 +(dp21197 +S'editable' +p21198 +I00 +sS'value' +p21199 +S'entity' +p21200 +ssS'entity_type' +p21201 +(dp21202 +S'editable' +p21203 +I00 +sS'value' +p21204 +S'PerformerRoutineConnection' +p21205 +ssS'editable' +p21206 +(dp21207 +S'editable' +p21208 +I00 +sS'value' +p21209 +I00 +ssS'unique' +p21210 +(dp21211 +S'editable' +p21212 +I00 +sS'value' +p21213 +I00 +ssS'properties' +p21214 +(dp21215 +S'default_value' +p21216 +(dp21217 +S'editable' +p21218 +I00 +sS'value' +p21219 +NssS'summary_default' +p21220 +(dp21221 +S'editable' +p21222 +I00 +sS'value' +p21223 +S'none' +p21224 +ssS'valid_types' +p21225 +(dp21226 +S'editable' +p21227 +I00 +sS'value' +p21228 +(lp21229 +S'Performer' +p21230 +asssS'description' +p21231 +(dp21232 +S'editable' +p21233 +I01 +sS'value' +p21234 +g47 +sssS'id' +p21235 +(dp21236 +S'mandatory' +p21237 +(dp21238 +S'editable' +p21239 +I00 +sS'value' +p21240 +I01 +ssS'name' +p21241 +(dp21242 +S'editable' +p21243 +I01 +sS'value' +p21244 +S'Id' +p21245 +ssS'data_type' +p21246 +(dp21247 +S'editable' +p21248 +I00 +sS'value' +p21249 +S'number' +p21250 +ssS'entity_type' +p21251 +(dp21252 +S'editable' +p21253 +I00 +sS'value' +p21254 +S'PerformerRoutineConnection' +p21255 +ssS'editable' +p21256 +(dp21257 +S'editable' +p21258 +I00 +sS'value' +p21259 +I00 +ssS'unique' +p21260 +(dp21261 +S'editable' +p21262 +I00 +sS'value' +p21263 +I00 +ssS'properties' +p21264 +(dp21265 +S'default_value' +p21266 +(dp21267 +S'editable' +p21268 +I00 +sS'value' +p21269 +NssS'summary_default' +p21270 +(dp21271 +S'editable' +p21272 +I00 +sS'value' +p21273 +S'none' +p21274 +sssS'description' +p21275 +(dp21276 +S'editable' +p21277 +I01 +sS'value' +p21278 +g47 +sssS'routine' +p21279 +(dp21280 +S'mandatory' +p21281 +(dp21282 +S'editable' +p21283 +I00 +sS'value' +p21284 +I00 +ssS'name' +p21285 +(dp21286 +S'editable' +p21287 +I01 +sS'value' +p21288 +S'Mocap Routine' +p21289 +ssS'data_type' +p21290 +(dp21291 +S'editable' +p21292 +I00 +sS'value' +p21293 +S'entity' +p21294 +ssS'entity_type' +p21295 +(dp21296 +S'editable' +p21297 +I00 +sS'value' +p21298 +S'PerformerRoutineConnection' +p21299 +ssS'editable' +p21300 +(dp21301 +S'editable' +p21302 +I00 +sS'value' +p21303 +I00 +ssS'unique' +p21304 +(dp21305 +S'editable' +p21306 +I00 +sS'value' +p21307 +I00 +ssS'properties' +p21308 +(dp21309 +S'default_value' +p21310 +(dp21311 +S'editable' +p21312 +I00 +sS'value' +p21313 +NssS'summary_default' +p21314 +(dp21315 +S'editable' +p21316 +I00 +sS'value' +p21317 +S'none' +p21318 +ssS'valid_types' +p21319 +(dp21320 +S'editable' +p21321 +I00 +sS'value' +p21322 +(lp21323 +S'Routine' +p21324 +asssS'description' +p21325 +(dp21326 +S'editable' +p21327 +I01 +sS'value' +p21328 +g47 +ssssS'PublishedFileType' +p21329 +(dp21330 +S'code' +p21331 +(dp21332 +S'mandatory' +p21333 +(dp21334 +S'editable' +p21335 +I00 +sS'value' +p21336 +I01 +ssS'name' +p21337 +(dp21338 +S'editable' +p21339 +I01 +sS'value' +p21340 +S'Published File Type Name' +p21341 +ssS'data_type' +p21342 +(dp21343 +S'editable' +p21344 +I00 +sS'value' +p21345 +S'text' +p21346 +ssS'entity_type' +p21347 +(dp21348 +S'editable' +p21349 +I00 +sS'value' +p21350 +S'PublishedFileType' +p21351 +ssS'editable' +p21352 +(dp21353 +S'editable' +p21354 +I00 +sS'value' +p21355 +I01 +ssS'unique' +p21356 +(dp21357 +S'editable' +p21358 +I00 +sS'value' +p21359 +I00 +ssS'properties' +p21360 +(dp21361 +S'default_value' +p21362 +(dp21363 +S'editable' +p21364 +I00 +sS'value' +p21365 +NssS'summary_default' +p21366 +(dp21367 +S'editable' +p21368 +I01 +sS'value' +p21369 +S'none' +p21370 +sssS'description' +p21371 +(dp21372 +S'editable' +p21373 +I01 +sS'value' +p21374 +g47 +sssS'description' +p21375 +(dp21376 +S'mandatory' +p21377 +(dp21378 +S'editable' +p21379 +I00 +sS'value' +p21380 +I00 +ssS'name' +p21381 +(dp21382 +S'editable' +p21383 +I01 +sS'value' +p21384 +S'Description' +p21385 +ssS'data_type' +p21386 +(dp21387 +S'editable' +p21388 +I00 +sS'value' +p21389 +S'text' +p21390 +ssS'entity_type' +p21391 +(dp21392 +S'editable' +p21393 +I00 +sS'value' +p21394 +S'PublishedFileType' +p21395 +ssS'editable' +p21396 +(dp21397 +S'editable' +p21398 +I00 +sS'value' +p21399 +I01 +ssS'unique' +p21400 +(dp21401 +S'editable' +p21402 +I00 +sS'value' +p21403 +I00 +ssS'properties' +p21404 +(dp21405 +S'default_value' +p21406 +(dp21407 +S'editable' +p21408 +I00 +sS'value' +p21409 +NssS'summary_default' +p21410 +(dp21411 +S'editable' +p21412 +I01 +sS'value' +p21413 +S'none' +p21414 +sssS'description' +p21415 +(dp21416 +S'editable' +p21417 +I01 +sS'value' +p21418 +g47 +sssS'short_name' +p21419 +(dp21420 +S'mandatory' +p21421 +(dp21422 +S'editable' +p21423 +I00 +sS'value' +p21424 +I00 +ssS'name' +p21425 +(dp21426 +S'editable' +p21427 +I01 +sS'value' +p21428 +S'Short Name' +p21429 +ssS'data_type' +p21430 +(dp21431 +S'editable' +p21432 +I00 +sS'value' +p21433 +S'text' +p21434 +ssS'entity_type' +p21435 +(dp21436 +S'editable' +p21437 +I00 +sS'value' +p21438 +S'PublishedFileType' +p21439 +ssS'editable' +p21440 +(dp21441 +S'editable' +p21442 +I00 +sS'value' +p21443 +I01 +ssS'unique' +p21444 +(dp21445 +S'editable' +p21446 +I00 +sS'value' +p21447 +I00 +ssS'properties' +p21448 +(dp21449 +S'default_value' +p21450 +(dp21451 +S'editable' +p21452 +I00 +sS'value' +p21453 +NssS'summary_default' +p21454 +(dp21455 +S'editable' +p21456 +I01 +sS'value' +p21457 +S'none' +p21458 +sssS'description' +p21459 +(dp21460 +S'editable' +p21461 +I01 +sS'value' +p21462 +g47 +sssS'created_at' +p21463 +(dp21464 +S'mandatory' +p21465 +(dp21466 +S'editable' +p21467 +I00 +sS'value' +p21468 +I00 +ssS'name' +p21469 +(dp21470 +S'editable' +p21471 +I01 +sS'value' +p21472 +S'Date Created' +p21473 +ssS'data_type' +p21474 +(dp21475 +S'editable' +p21476 +I00 +sS'value' +p21477 +S'date_time' +p21478 +ssS'entity_type' +p21479 +(dp21480 +S'editable' +p21481 +I00 +sS'value' +p21482 +S'PublishedFileType' +p21483 +ssS'editable' +p21484 +(dp21485 +S'editable' +p21486 +I00 +sS'value' +p21487 +I00 +ssS'unique' +p21488 +(dp21489 +S'editable' +p21490 +I00 +sS'value' +p21491 +I00 +ssS'properties' +p21492 +(dp21493 +S'default_value' +p21494 +(dp21495 +S'editable' +p21496 +I00 +sS'value' +p21497 +NssS'summary_default' +p21498 +(dp21499 +S'editable' +p21500 +I01 +sS'value' +p21501 +S'none' +p21502 +sssS'description' +p21503 +(dp21504 +S'editable' +p21505 +I01 +sS'value' +p21506 +g47 +sssS'updated_at' +p21507 +(dp21508 +S'mandatory' +p21509 +(dp21510 +S'editable' +p21511 +I00 +sS'value' +p21512 +I00 +ssS'name' +p21513 +(dp21514 +S'editable' +p21515 +I01 +sS'value' +p21516 +S'Date Updated' +p21517 +ssS'data_type' +p21518 +(dp21519 +S'editable' +p21520 +I00 +sS'value' +p21521 +S'date_time' +p21522 +ssS'entity_type' +p21523 +(dp21524 +S'editable' +p21525 +I00 +sS'value' +p21526 +S'PublishedFileType' +p21527 +ssS'editable' +p21528 +(dp21529 +S'editable' +p21530 +I00 +sS'value' +p21531 +I00 +ssS'unique' +p21532 +(dp21533 +S'editable' +p21534 +I00 +sS'value' +p21535 +I00 +ssS'properties' +p21536 +(dp21537 +S'default_value' +p21538 +(dp21539 +S'editable' +p21540 +I00 +sS'value' +p21541 +NssS'summary_default' +p21542 +(dp21543 +S'editable' +p21544 +I01 +sS'value' +p21545 +S'none' +p21546 +sssS'description' +p21547 +(dp21548 +S'editable' +p21549 +I01 +sS'value' +p21550 +g47 +sssS'created_by' +p21551 +(dp21552 +S'mandatory' +p21553 +(dp21554 +S'editable' +p21555 +I00 +sS'value' +p21556 +I00 +ssS'name' +p21557 +(dp21558 +S'editable' +p21559 +I01 +sS'value' +p21560 +S'Created by' +p21561 +ssS'data_type' +p21562 +(dp21563 +S'editable' +p21564 +I00 +sS'value' +p21565 +S'entity' +p21566 +ssS'entity_type' +p21567 +(dp21568 +S'editable' +p21569 +I00 +sS'value' +p21570 +S'PublishedFileType' +p21571 +ssS'editable' +p21572 +(dp21573 +S'editable' +p21574 +I00 +sS'value' +p21575 +I00 +ssS'unique' +p21576 +(dp21577 +S'editable' +p21578 +I00 +sS'value' +p21579 +I00 +ssS'properties' +p21580 +(dp21581 +S'default_value' +p21582 +(dp21583 +S'editable' +p21584 +I00 +sS'value' +p21585 +NssS'summary_default' +p21586 +(dp21587 +S'editable' +p21588 +I01 +sS'value' +p21589 +S'none' +p21590 +ssS'valid_types' +p21591 +(dp21592 +S'editable' +p21593 +I01 +sS'value' +p21594 +(lp21595 +S'HumanUser' +p21596 +aS'ApiUser' +p21597 +asssS'description' +p21598 +(dp21599 +S'editable' +p21600 +I01 +sS'value' +p21601 +g47 +sssS'sg_status_list' +p21602 +(dp21603 +S'mandatory' +p21604 +(dp21605 +S'editable' +p21606 +I00 +sS'value' +p21607 +I00 +ssS'name' +p21608 +(dp21609 +S'editable' +p21610 +I01 +sS'value' +p21611 +S'Status' +p21612 +ssS'data_type' +p21613 +(dp21614 +S'editable' +p21615 +I00 +sS'value' +p21616 +S'status_list' +p21617 +ssS'entity_type' +p21618 +(dp21619 +S'editable' +p21620 +I00 +sS'value' +p21621 +S'PublishedFileType' +p21622 +ssS'editable' +p21623 +(dp21624 +S'editable' +p21625 +I00 +sS'value' +p21626 +I01 +ssS'unique' +p21627 +(dp21628 +S'editable' +p21629 +I00 +sS'value' +p21630 +I00 +ssS'properties' +p21631 +(dp21632 +S'default_value' +p21633 +(dp21634 +S'editable' +p21635 +I01 +sS'value' +p21636 +S'wtg' +p21637 +ssS'valid_values' +p21638 +(dp21639 +S'editable' +p21640 +I01 +sS'value' +p21641 +(lp21642 +S'wtg' +p21643 +aS'ip' +p21644 +aS'cmpt' +p21645 +assS'summary_default' +p21646 +(dp21647 +S'editable' +p21648 +I01 +sS'value' +p21649 +S'none' +p21650 +sssS'description' +p21651 +(dp21652 +S'editable' +p21653 +I01 +sS'value' +p21654 +g47 +sssS'image' +p21655 +(dp21656 +S'mandatory' +p21657 +(dp21658 +S'editable' +p21659 +I00 +sS'value' +p21660 +I00 +ssS'name' +p21661 +(dp21662 +S'editable' +p21663 +I01 +sS'value' +p21664 +S'Thumbnail' +p21665 +ssS'data_type' +p21666 +(dp21667 +S'editable' +p21668 +I00 +sS'value' +p21669 +S'image' +p21670 +ssS'entity_type' +p21671 +(dp21672 +S'editable' +p21673 +I00 +sS'value' +p21674 +S'PublishedFileType' +p21675 +ssS'editable' +p21676 +(dp21677 +S'editable' +p21678 +I00 +sS'value' +p21679 +I01 +ssS'unique' +p21680 +(dp21681 +S'editable' +p21682 +I00 +sS'value' +p21683 +I00 +ssS'properties' +p21684 +(dp21685 +S'default_value' +p21686 +(dp21687 +S'editable' +p21688 +I00 +sS'value' +p21689 +NssS'summary_default' +p21690 +(dp21691 +S'editable' +p21692 +I01 +sS'value' +p21693 +S'none' +p21694 +sssS'description' +p21695 +(dp21696 +S'editable' +p21697 +I01 +sS'value' +p21698 +g47 +sssS'cached_display_name' +p21699 +(dp21700 +S'mandatory' +p21701 +(dp21702 +S'editable' +p21703 +I00 +sS'value' +p21704 +I00 +ssS'name' +p21705 +(dp21706 +S'editable' +p21707 +I01 +sS'value' +p21708 +S'Cached Display Name' +p21709 +ssS'data_type' +p21710 +(dp21711 +S'editable' +p21712 +I00 +sS'value' +p21713 +S'text' +p21714 +ssS'entity_type' +p21715 +(dp21716 +S'editable' +p21717 +I00 +sS'value' +p21718 +S'PublishedFileType' +p21719 +ssS'editable' +p21720 +(dp21721 +S'editable' +p21722 +I00 +sS'value' +p21723 +I01 +ssS'unique' +p21724 +(dp21725 +S'editable' +p21726 +I00 +sS'value' +p21727 +I00 +ssS'properties' +p21728 +(dp21729 +S'default_value' +p21730 +(dp21731 +S'editable' +p21732 +I00 +sS'value' +p21733 +NssS'summary_default' +p21734 +(dp21735 +S'editable' +p21736 +I00 +sS'value' +p21737 +S'none' +p21738 +sssS'description' +p21739 +(dp21740 +S'editable' +p21741 +I01 +sS'value' +p21742 +g47 +sssS'tag_list' +p21743 +(dp21744 +S'mandatory' +p21745 +(dp21746 +S'editable' +p21747 +I00 +sS'value' +p21748 +I00 +ssS'name' +p21749 +(dp21750 +S'editable' +p21751 +I01 +sS'value' +p21752 +S'Tags' +p21753 +ssS'data_type' +p21754 +(dp21755 +S'editable' +p21756 +I00 +sS'value' +p21757 +S'tag_list' +p21758 +ssS'entity_type' +p21759 +(dp21760 +S'editable' +p21761 +I00 +sS'value' +p21762 +S'PublishedFileType' +p21763 +ssS'editable' +p21764 +(dp21765 +S'editable' +p21766 +I00 +sS'value' +p21767 +I01 +ssS'unique' +p21768 +(dp21769 +S'editable' +p21770 +I00 +sS'value' +p21771 +I00 +ssS'properties' +p21772 +(dp21773 +S'default_value' +p21774 +(dp21775 +S'editable' +p21776 +I00 +sS'value' +p21777 +NssS'summary_default' +p21778 +(dp21779 +S'editable' +p21780 +I01 +sS'value' +p21781 +S'none' +p21782 +ssS'valid_types' +p21783 +(dp21784 +S'editable' +p21785 +I01 +sS'value' +p21786 +(lp21787 +S'Tag' +p21788 +asssS'description' +p21789 +(dp21790 +S'editable' +p21791 +I01 +sS'value' +p21792 +g47 +sssS'id' +p21793 +(dp21794 +S'mandatory' +p21795 +(dp21796 +S'editable' +p21797 +I00 +sS'value' +p21798 +I00 +ssS'name' +p21799 +(dp21800 +S'editable' +p21801 +I01 +sS'value' +p21802 +S'Id' +p21803 +ssS'data_type' +p21804 +(dp21805 +S'editable' +p21806 +I00 +sS'value' +p21807 +S'number' +p21808 +ssS'entity_type' +p21809 +(dp21810 +S'editable' +p21811 +I00 +sS'value' +p21812 +S'PublishedFileType' +p21813 +ssS'editable' +p21814 +(dp21815 +S'editable' +p21816 +I00 +sS'value' +p21817 +I00 +ssS'unique' +p21818 +(dp21819 +S'editable' +p21820 +I00 +sS'value' +p21821 +I00 +ssS'properties' +p21822 +(dp21823 +S'default_value' +p21824 +(dp21825 +S'editable' +p21826 +I00 +sS'value' +p21827 +NssS'summary_default' +p21828 +(dp21829 +S'editable' +p21830 +I01 +sS'value' +p21831 +S'none' +p21832 +sssS'description' +p21833 +(dp21834 +S'editable' +p21835 +I01 +sS'value' +p21836 +g47 +sssS'updated_by' +p21837 +(dp21838 +S'mandatory' +p21839 +(dp21840 +S'editable' +p21841 +I00 +sS'value' +p21842 +I00 +ssS'name' +p21843 +(dp21844 +S'editable' +p21845 +I01 +sS'value' +p21846 +S'Updated by' +p21847 +ssS'data_type' +p21848 +(dp21849 +S'editable' +p21850 +I00 +sS'value' +p21851 +S'entity' +p21852 +ssS'entity_type' +p21853 +(dp21854 +S'editable' +p21855 +I00 +sS'value' +p21856 +S'PublishedFileType' +p21857 +ssS'editable' +p21858 +(dp21859 +S'editable' +p21860 +I00 +sS'value' +p21861 +I00 +ssS'unique' +p21862 +(dp21863 +S'editable' +p21864 +I00 +sS'value' +p21865 +I00 +ssS'properties' +p21866 +(dp21867 +S'default_value' +p21868 +(dp21869 +S'editable' +p21870 +I00 +sS'value' +p21871 +NssS'summary_default' +p21872 +(dp21873 +S'editable' +p21874 +I01 +sS'value' +p21875 +S'none' +p21876 +ssS'valid_types' +p21877 +(dp21878 +S'editable' +p21879 +I01 +sS'value' +p21880 +(lp21881 +S'HumanUser' +p21882 +aS'ApiUser' +p21883 +asssS'description' +p21884 +(dp21885 +S'editable' +p21886 +I01 +sS'value' +p21887 +g47 +ssssS'Element' +p21888 +(dp21889 +S'sg_element_type' +p21890 +(dp21891 +S'mandatory' +p21892 +(dp21893 +S'editable' +p21894 +I00 +sS'value' +p21895 +I00 +ssS'name' +p21896 +(dp21897 +S'editable' +p21898 +I01 +sS'value' +p21899 +S'Type' +p21900 +ssS'data_type' +p21901 +(dp21902 +S'editable' +p21903 +I00 +sS'value' +p21904 +S'list' +p21905 +ssS'entity_type' +p21906 +(dp21907 +S'editable' +p21908 +I00 +sS'value' +p21909 +S'Element' +p21910 +ssS'editable' +p21911 +(dp21912 +S'editable' +p21913 +I00 +sS'value' +p21914 +I01 +ssS'unique' +p21915 +(dp21916 +S'editable' +p21917 +I00 +sS'value' +p21918 +I00 +ssS'properties' +p21919 +(dp21920 +S'default_value' +p21921 +(dp21922 +S'editable' +p21923 +I00 +sS'value' +p21924 +NssS'valid_values' +p21925 +(dp21926 +S'editable' +p21927 +I01 +sS'value' +p21928 +(lp21929 +ssS'summary_default' +p21930 +(dp21931 +S'editable' +p21932 +I01 +sS'value' +p21933 +S'none' +p21934 +sssS'description' +p21935 +(dp21936 +S'editable' +p21937 +I01 +sS'value' +p21938 +g47 +sssS'open_notes_count' +p21939 +(dp21940 +S'mandatory' +p21941 +(dp21942 +S'editable' +p21943 +I00 +sS'value' +p21944 +I00 +ssS'name' +p21945 +(dp21946 +S'editable' +p21947 +I01 +sS'value' +p21948 +S'Open Notes Count' +p21949 +ssS'data_type' +p21950 +(dp21951 +S'editable' +p21952 +I00 +sS'value' +p21953 +S'text' +p21954 +ssS'entity_type' +p21955 +(dp21956 +S'editable' +p21957 +I00 +sS'value' +p21958 +S'Element' +p21959 +ssS'editable' +p21960 +(dp21961 +S'editable' +p21962 +I00 +sS'value' +p21963 +I00 +ssS'unique' +p21964 +(dp21965 +S'editable' +p21966 +I00 +sS'value' +p21967 +I00 +ssS'properties' +p21968 +(dp21969 +S'default_value' +p21970 +(dp21971 +S'editable' +p21972 +I00 +sS'value' +p21973 +NssS'summary_default' +p21974 +(dp21975 +S'editable' +p21976 +I01 +sS'value' +p21977 +S'none' +p21978 +sssS'description' +p21979 +(dp21980 +S'editable' +p21981 +I01 +sS'value' +p21982 +g47 +sssS'code' +p21983 +(dp21984 +S'mandatory' +p21985 +(dp21986 +S'editable' +p21987 +I00 +sS'value' +p21988 +I01 +ssS'name' +p21989 +(dp21990 +S'editable' +p21991 +I01 +sS'value' +p21992 +S'Element Name' +p21993 +ssS'data_type' +p21994 +(dp21995 +S'editable' +p21996 +I00 +sS'value' +p21997 +S'text' +p21998 +ssS'entity_type' +p21999 +(dp22000 +S'editable' +p22001 +I00 +sS'value' +p22002 +S'Element' +p22003 +ssS'editable' +p22004 +(dp22005 +S'editable' +p22006 +I00 +sS'value' +p22007 +I01 +ssS'unique' +p22008 +(dp22009 +S'editable' +p22010 +I00 +sS'value' +p22011 +I00 +ssS'properties' +p22012 +(dp22013 +S'default_value' +p22014 +(dp22015 +S'editable' +p22016 +I00 +sS'value' +p22017 +NssS'summary_default' +p22018 +(dp22019 +S'editable' +p22020 +I01 +sS'value' +p22021 +S'none' +p22022 +sssS'description' +p22023 +(dp22024 +S'editable' +p22025 +I01 +sS'value' +p22026 +g47 +sssS'image' +p22027 +(dp22028 +S'mandatory' +p22029 +(dp22030 +S'editable' +p22031 +I00 +sS'value' +p22032 +I00 +ssS'name' +p22033 +(dp22034 +S'editable' +p22035 +I01 +sS'value' +p22036 +S'Thumbnail' +p22037 +ssS'data_type' +p22038 +(dp22039 +S'editable' +p22040 +I00 +sS'value' +p22041 +S'image' +p22042 +ssS'entity_type' +p22043 +(dp22044 +S'editable' +p22045 +I00 +sS'value' +p22046 +S'Element' +p22047 +ssS'editable' +p22048 +(dp22049 +S'editable' +p22050 +I00 +sS'value' +p22051 +I01 +ssS'unique' +p22052 +(dp22053 +S'editable' +p22054 +I00 +sS'value' +p22055 +I00 +ssS'properties' +p22056 +(dp22057 +S'default_value' +p22058 +(dp22059 +S'editable' +p22060 +I00 +sS'value' +p22061 +NssS'summary_default' +p22062 +(dp22063 +S'editable' +p22064 +I01 +sS'value' +p22065 +S'none' +p22066 +sssS'description' +p22067 +(dp22068 +S'editable' +p22069 +I01 +sS'value' +p22070 +g47 +sssS'tag_list' +p22071 +(dp22072 +S'mandatory' +p22073 +(dp22074 +S'editable' +p22075 +I00 +sS'value' +p22076 +I00 +ssS'name' +p22077 +(dp22078 +S'editable' +p22079 +I01 +sS'value' +p22080 +S'Tags' +p22081 +ssS'data_type' +p22082 +(dp22083 +S'editable' +p22084 +I00 +sS'value' +p22085 +S'tag_list' +p22086 +ssS'entity_type' +p22087 +(dp22088 +S'editable' +p22089 +I00 +sS'value' +p22090 +S'Element' +p22091 +ssS'editable' +p22092 +(dp22093 +S'editable' +p22094 +I00 +sS'value' +p22095 +I01 +ssS'unique' +p22096 +(dp22097 +S'editable' +p22098 +I00 +sS'value' +p22099 +I00 +ssS'properties' +p22100 +(dp22101 +S'default_value' +p22102 +(dp22103 +S'editable' +p22104 +I00 +sS'value' +p22105 +NssS'summary_default' +p22106 +(dp22107 +S'editable' +p22108 +I01 +sS'value' +p22109 +S'none' +p22110 +ssS'valid_types' +p22111 +(dp22112 +S'editable' +p22113 +I01 +sS'value' +p22114 +(lp22115 +S'Tag' +p22116 +asssS'description' +p22117 +(dp22118 +S'editable' +p22119 +I01 +sS'value' +p22120 +g47 +sssS'head_duration' +p22121 +(dp22122 +S'mandatory' +p22123 +(dp22124 +S'editable' +p22125 +I00 +sS'value' +p22126 +I00 +ssS'name' +p22127 +(dp22128 +S'editable' +p22129 +I01 +sS'value' +p22130 +S'Raw Head Duration' +p22131 +ssS'data_type' +p22132 +(dp22133 +S'editable' +p22134 +I00 +sS'value' +p22135 +S'number' +p22136 +ssS'entity_type' +p22137 +(dp22138 +S'editable' +p22139 +I00 +sS'value' +p22140 +S'Element' +p22141 +ssS'editable' +p22142 +(dp22143 +S'editable' +p22144 +I00 +sS'value' +p22145 +I01 +ssS'unique' +p22146 +(dp22147 +S'editable' +p22148 +I00 +sS'value' +p22149 +I00 +ssS'properties' +p22150 +(dp22151 +S'default_value' +p22152 +(dp22153 +S'editable' +p22154 +I00 +sS'value' +p22155 +NssS'summary_default' +p22156 +(dp22157 +S'editable' +p22158 +I01 +sS'value' +p22159 +S'none' +p22160 +sssS'description' +p22161 +(dp22162 +S'editable' +p22163 +I01 +sS'value' +p22164 +g47 +sssS'updated_at' +p22165 +(dp22166 +S'mandatory' +p22167 +(dp22168 +S'editable' +p22169 +I00 +sS'value' +p22170 +I00 +ssS'name' +p22171 +(dp22172 +S'editable' +p22173 +I01 +sS'value' +p22174 +S'Date Updated' +p22175 +ssS'data_type' +p22176 +(dp22177 +S'editable' +p22178 +I00 +sS'value' +p22179 +S'date_time' +p22180 +ssS'entity_type' +p22181 +(dp22182 +S'editable' +p22183 +I00 +sS'value' +p22184 +S'Element' +p22185 +ssS'editable' +p22186 +(dp22187 +S'editable' +p22188 +I00 +sS'value' +p22189 +I00 +ssS'unique' +p22190 +(dp22191 +S'editable' +p22192 +I00 +sS'value' +p22193 +I00 +ssS'properties' +p22194 +(dp22195 +S'default_value' +p22196 +(dp22197 +S'editable' +p22198 +I00 +sS'value' +p22199 +NssS'summary_default' +p22200 +(dp22201 +S'editable' +p22202 +I01 +sS'value' +p22203 +S'none' +p22204 +sssS'description' +p22205 +(dp22206 +S'editable' +p22207 +I01 +sS'value' +p22208 +g47 +sssS'tasks' +p22209 +(dp22210 +S'mandatory' +p22211 +(dp22212 +S'editable' +p22213 +I00 +sS'value' +p22214 +I00 +ssS'name' +p22215 +(dp22216 +S'editable' +p22217 +I01 +sS'value' +p22218 +S'Tasks' +p22219 +ssS'data_type' +p22220 +(dp22221 +S'editable' +p22222 +I00 +sS'value' +p22223 +S'multi_entity' +p22224 +ssS'entity_type' +p22225 +(dp22226 +S'editable' +p22227 +I00 +sS'value' +p22228 +S'Element' +p22229 +ssS'editable' +p22230 +(dp22231 +S'editable' +p22232 +I00 +sS'value' +p22233 +I01 +ssS'unique' +p22234 +(dp22235 +S'editable' +p22236 +I00 +sS'value' +p22237 +I00 +ssS'properties' +p22238 +(dp22239 +S'default_value' +p22240 +(dp22241 +S'editable' +p22242 +I00 +sS'value' +p22243 +NssS'summary_default' +p22244 +(dp22245 +S'editable' +p22246 +I01 +sS'value' +p22247 +S'none' +p22248 +ssS'valid_types' +p22249 +(dp22250 +S'editable' +p22251 +I01 +sS'value' +p22252 +(lp22253 +S'Task' +p22254 +asssS'description' +p22255 +(dp22256 +S'editable' +p22257 +I01 +sS'value' +p22258 +g47 +sssS'cached_display_name' +p22259 +(dp22260 +S'mandatory' +p22261 +(dp22262 +S'editable' +p22263 +I00 +sS'value' +p22264 +I00 +ssS'name' +p22265 +(dp22266 +S'editable' +p22267 +I01 +sS'value' +p22268 +S'Cached Display Name' +p22269 +ssS'data_type' +p22270 +(dp22271 +S'editable' +p22272 +I00 +sS'value' +p22273 +S'text' +p22274 +ssS'entity_type' +p22275 +(dp22276 +S'editable' +p22277 +I00 +sS'value' +p22278 +S'Element' +p22279 +ssS'editable' +p22280 +(dp22281 +S'editable' +p22282 +I00 +sS'value' +p22283 +I01 +ssS'unique' +p22284 +(dp22285 +S'editable' +p22286 +I00 +sS'value' +p22287 +I00 +ssS'properties' +p22288 +(dp22289 +S'default_value' +p22290 +(dp22291 +S'editable' +p22292 +I00 +sS'value' +p22293 +NssS'summary_default' +p22294 +(dp22295 +S'editable' +p22296 +I00 +sS'value' +p22297 +S'none' +p22298 +sssS'description' +p22299 +(dp22300 +S'editable' +p22301 +I01 +sS'value' +p22302 +g47 +sssS'smart_cut_duration' +p22303 +(dp22304 +S'mandatory' +p22305 +(dp22306 +S'editable' +p22307 +I00 +sS'value' +p22308 +I00 +ssS'name' +p22309 +(dp22310 +S'editable' +p22311 +I01 +sS'value' +p22312 +S'Cut Duration' +p22313 +ssS'data_type' +p22314 +(dp22315 +S'editable' +p22316 +I00 +sS'value' +p22317 +S'number' +p22318 +ssS'entity_type' +p22319 +(dp22320 +S'editable' +p22321 +I00 +sS'value' +p22322 +S'Element' +p22323 +ssS'editable' +p22324 +(dp22325 +S'editable' +p22326 +I00 +sS'value' +p22327 +I01 +ssS'unique' +p22328 +(dp22329 +S'editable' +p22330 +I00 +sS'value' +p22331 +I00 +ssS'properties' +p22332 +(dp22333 +S'default_value' +p22334 +(dp22335 +S'editable' +p22336 +I00 +sS'value' +p22337 +NssS'summary_default' +p22338 +(dp22339 +S'editable' +p22340 +I01 +sS'value' +p22341 +S'none' +p22342 +sssS'description' +p22343 +(dp22344 +S'editable' +p22345 +I01 +sS'value' +p22346 +g47 +sssS'id' +p22347 +(dp22348 +S'mandatory' +p22349 +(dp22350 +S'editable' +p22351 +I00 +sS'value' +p22352 +I00 +ssS'name' +p22353 +(dp22354 +S'editable' +p22355 +I01 +sS'value' +p22356 +S'Id' +p22357 +ssS'data_type' +p22358 +(dp22359 +S'editable' +p22360 +I00 +sS'value' +p22361 +S'number' +p22362 +ssS'entity_type' +p22363 +(dp22364 +S'editable' +p22365 +I00 +sS'value' +p22366 +S'Element' +p22367 +ssS'editable' +p22368 +(dp22369 +S'editable' +p22370 +I00 +sS'value' +p22371 +I00 +ssS'unique' +p22372 +(dp22373 +S'editable' +p22374 +I00 +sS'value' +p22375 +I00 +ssS'properties' +p22376 +(dp22377 +S'default_value' +p22378 +(dp22379 +S'editable' +p22380 +I00 +sS'value' +p22381 +NssS'summary_default' +p22382 +(dp22383 +S'editable' +p22384 +I01 +sS'value' +p22385 +S'none' +p22386 +sssS'description' +p22387 +(dp22388 +S'editable' +p22389 +I01 +sS'value' +p22390 +g47 +sssS'updated_by' +p22391 +(dp22392 +S'mandatory' +p22393 +(dp22394 +S'editable' +p22395 +I00 +sS'value' +p22396 +I00 +ssS'name' +p22397 +(dp22398 +S'editable' +p22399 +I01 +sS'value' +p22400 +S'Updated by' +p22401 +ssS'data_type' +p22402 +(dp22403 +S'editable' +p22404 +I00 +sS'value' +p22405 +S'entity' +p22406 +ssS'entity_type' +p22407 +(dp22408 +S'editable' +p22409 +I00 +sS'value' +p22410 +S'Element' +p22411 +ssS'editable' +p22412 +(dp22413 +S'editable' +p22414 +I00 +sS'value' +p22415 +I00 +ssS'unique' +p22416 +(dp22417 +S'editable' +p22418 +I00 +sS'value' +p22419 +I00 +ssS'properties' +p22420 +(dp22421 +S'default_value' +p22422 +(dp22423 +S'editable' +p22424 +I00 +sS'value' +p22425 +NssS'summary_default' +p22426 +(dp22427 +S'editable' +p22428 +I01 +sS'value' +p22429 +S'none' +p22430 +ssS'valid_types' +p22431 +(dp22432 +S'editable' +p22433 +I01 +sS'value' +p22434 +(lp22435 +S'HumanUser' +p22436 +aS'ApiUser' +p22437 +asssS'description' +p22438 +(dp22439 +S'editable' +p22440 +I01 +sS'value' +p22441 +g47 +sssS'open_notes' +p22442 +(dp22443 +S'mandatory' +p22444 +(dp22445 +S'editable' +p22446 +I00 +sS'value' +p22447 +I00 +ssS'name' +p22448 +(dp22449 +S'editable' +p22450 +I01 +sS'value' +p22451 +S'Open Notes' +p22452 +ssS'data_type' +p22453 +(dp22454 +S'editable' +p22455 +I00 +sS'value' +p22456 +S'multi_entity' +p22457 +ssS'entity_type' +p22458 +(dp22459 +S'editable' +p22460 +I00 +sS'value' +p22461 +S'Element' +p22462 +ssS'editable' +p22463 +(dp22464 +S'editable' +p22465 +I00 +sS'value' +p22466 +I00 +ssS'unique' +p22467 +(dp22468 +S'editable' +p22469 +I00 +sS'value' +p22470 +I00 +ssS'properties' +p22471 +(dp22472 +S'default_value' +p22473 +(dp22474 +S'editable' +p22475 +I00 +sS'value' +p22476 +NssS'summary_default' +p22477 +(dp22478 +S'editable' +p22479 +I01 +sS'value' +p22480 +S'none' +p22481 +ssS'valid_types' +p22482 +(dp22483 +S'editable' +p22484 +I01 +sS'value' +p22485 +(lp22486 +S'Note' +p22487 +asssS'description' +p22488 +(dp22489 +S'editable' +p22490 +I01 +sS'value' +p22491 +g47 +sssS'task_template' +p22492 +(dp22493 +S'mandatory' +p22494 +(dp22495 +S'editable' +p22496 +I00 +sS'value' +p22497 +I00 +ssS'name' +p22498 +(dp22499 +S'editable' +p22500 +I01 +sS'value' +p22501 +S'Task Template' +p22502 +ssS'data_type' +p22503 +(dp22504 +S'editable' +p22505 +I00 +sS'value' +p22506 +S'entity' +p22507 +ssS'entity_type' +p22508 +(dp22509 +S'editable' +p22510 +I00 +sS'value' +p22511 +S'Element' +p22512 +ssS'editable' +p22513 +(dp22514 +S'editable' +p22515 +I00 +sS'value' +p22516 +I01 +ssS'unique' +p22517 +(dp22518 +S'editable' +p22519 +I00 +sS'value' +p22520 +I00 +ssS'properties' +p22521 +(dp22522 +S'default_value' +p22523 +(dp22524 +S'editable' +p22525 +I00 +sS'value' +p22526 +NssS'summary_default' +p22527 +(dp22528 +S'editable' +p22529 +I01 +sS'value' +p22530 +S'none' +p22531 +ssS'valid_types' +p22532 +(dp22533 +S'editable' +p22534 +I01 +sS'value' +p22535 +(lp22536 +S'TaskTemplate' +p22537 +asssS'description' +p22538 +(dp22539 +S'editable' +p22540 +I01 +sS'value' +p22541 +g47 +sssS'created_by' +p22542 +(dp22543 +S'mandatory' +p22544 +(dp22545 +S'editable' +p22546 +I00 +sS'value' +p22547 +I00 +ssS'name' +p22548 +(dp22549 +S'editable' +p22550 +I01 +sS'value' +p22551 +S'Created by' +p22552 +ssS'data_type' +p22553 +(dp22554 +S'editable' +p22555 +I00 +sS'value' +p22556 +S'entity' +p22557 +ssS'entity_type' +p22558 +(dp22559 +S'editable' +p22560 +I00 +sS'value' +p22561 +S'Element' +p22562 +ssS'editable' +p22563 +(dp22564 +S'editable' +p22565 +I00 +sS'value' +p22566 +I00 +ssS'unique' +p22567 +(dp22568 +S'editable' +p22569 +I00 +sS'value' +p22570 +I00 +ssS'properties' +p22571 +(dp22572 +S'default_value' +p22573 +(dp22574 +S'editable' +p22575 +I00 +sS'value' +p22576 +NssS'summary_default' +p22577 +(dp22578 +S'editable' +p22579 +I01 +sS'value' +p22580 +S'none' +p22581 +ssS'valid_types' +p22582 +(dp22583 +S'editable' +p22584 +I01 +sS'value' +p22585 +(lp22586 +S'HumanUser' +p22587 +aS'ApiUser' +p22588 +asssS'description' +p22589 +(dp22590 +S'editable' +p22591 +I01 +sS'value' +p22592 +g47 +sssS'smart_tail_duration' +p22593 +(dp22594 +S'mandatory' +p22595 +(dp22596 +S'editable' +p22597 +I00 +sS'value' +p22598 +I00 +ssS'name' +p22599 +(dp22600 +S'editable' +p22601 +I01 +sS'value' +p22602 +S'Tail Duration' +p22603 +ssS'data_type' +p22604 +(dp22605 +S'editable' +p22606 +I00 +sS'value' +p22607 +S'number' +p22608 +ssS'entity_type' +p22609 +(dp22610 +S'editable' +p22611 +I00 +sS'value' +p22612 +S'Element' +p22613 +ssS'editable' +p22614 +(dp22615 +S'editable' +p22616 +I00 +sS'value' +p22617 +I01 +ssS'unique' +p22618 +(dp22619 +S'editable' +p22620 +I00 +sS'value' +p22621 +I00 +ssS'properties' +p22622 +(dp22623 +S'default_value' +p22624 +(dp22625 +S'editable' +p22626 +I00 +sS'value' +p22627 +NssS'summary_default' +p22628 +(dp22629 +S'editable' +p22630 +I01 +sS'value' +p22631 +S'none' +p22632 +sssS'description' +p22633 +(dp22634 +S'editable' +p22635 +I01 +sS'value' +p22636 +g47 +sssS'sg_status_list' +p22637 +(dp22638 +S'mandatory' +p22639 +(dp22640 +S'editable' +p22641 +I00 +sS'value' +p22642 +I00 +ssS'name' +p22643 +(dp22644 +S'editable' +p22645 +I01 +sS'value' +p22646 +S'Status' +p22647 +ssS'data_type' +p22648 +(dp22649 +S'editable' +p22650 +I00 +sS'value' +p22651 +S'status_list' +p22652 +ssS'entity_type' +p22653 +(dp22654 +S'editable' +p22655 +I00 +sS'value' +p22656 +S'Element' +p22657 +ssS'editable' +p22658 +(dp22659 +S'editable' +p22660 +I00 +sS'value' +p22661 +I01 +ssS'unique' +p22662 +(dp22663 +S'editable' +p22664 +I00 +sS'value' +p22665 +I00 +ssS'properties' +p22666 +(dp22667 +S'default_value' +p22668 +(dp22669 +S'editable' +p22670 +I01 +sS'value' +p22671 +S'na' +p22672 +ssS'valid_values' +p22673 +(dp22674 +S'editable' +p22675 +I01 +sS'value' +p22676 +(lp22677 +S'na' +p22678 +assS'summary_default' +p22679 +(dp22680 +S'editable' +p22681 +I01 +sS'value' +p22682 +S'status_list' +p22683 +sssS'description' +p22684 +(dp22685 +S'editable' +p22686 +I01 +sS'value' +p22687 +g47 +sssS'smart_head_in' +p22688 +(dp22689 +S'mandatory' +p22690 +(dp22691 +S'editable' +p22692 +I00 +sS'value' +p22693 +I00 +ssS'name' +p22694 +(dp22695 +S'editable' +p22696 +I01 +sS'value' +p22697 +S'Head In' +p22698 +ssS'data_type' +p22699 +(dp22700 +S'editable' +p22701 +I00 +sS'value' +p22702 +S'number' +p22703 +ssS'entity_type' +p22704 +(dp22705 +S'editable' +p22706 +I00 +sS'value' +p22707 +S'Element' +p22708 +ssS'editable' +p22709 +(dp22710 +S'editable' +p22711 +I00 +sS'value' +p22712 +I01 +ssS'unique' +p22713 +(dp22714 +S'editable' +p22715 +I00 +sS'value' +p22716 +I00 +ssS'properties' +p22717 +(dp22718 +S'default_value' +p22719 +(dp22720 +S'editable' +p22721 +I00 +sS'value' +p22722 +NssS'summary_default' +p22723 +(dp22724 +S'editable' +p22725 +I01 +sS'value' +p22726 +S'none' +p22727 +sssS'description' +p22728 +(dp22729 +S'editable' +p22730 +I01 +sS'value' +p22731 +g47 +sssS'smart_working_duration' +p22732 +(dp22733 +S'mandatory' +p22734 +(dp22735 +S'editable' +p22736 +I00 +sS'value' +p22737 +I00 +ssS'name' +p22738 +(dp22739 +S'editable' +p22740 +I01 +sS'value' +p22741 +S'Working Duration' +p22742 +ssS'data_type' +p22743 +(dp22744 +S'editable' +p22745 +I00 +sS'value' +p22746 +S'number' +p22747 +ssS'entity_type' +p22748 +(dp22749 +S'editable' +p22750 +I00 +sS'value' +p22751 +S'Element' +p22752 +ssS'editable' +p22753 +(dp22754 +S'editable' +p22755 +I00 +sS'value' +p22756 +I00 +ssS'unique' +p22757 +(dp22758 +S'editable' +p22759 +I00 +sS'value' +p22760 +I00 +ssS'properties' +p22761 +(dp22762 +S'default_value' +p22763 +(dp22764 +S'editable' +p22765 +I00 +sS'value' +p22766 +NssS'summary_default' +p22767 +(dp22768 +S'editable' +p22769 +I01 +sS'value' +p22770 +S'none' +p22771 +sssS'description' +p22772 +(dp22773 +S'editable' +p22774 +I01 +sS'value' +p22775 +g47 +sssS'head_in' +p22776 +(dp22777 +S'mandatory' +p22778 +(dp22779 +S'editable' +p22780 +I00 +sS'value' +p22781 +I00 +ssS'name' +p22782 +(dp22783 +S'editable' +p22784 +I01 +sS'value' +p22785 +S'Raw Head In' +p22786 +ssS'data_type' +p22787 +(dp22788 +S'editable' +p22789 +I00 +sS'value' +p22790 +S'number' +p22791 +ssS'entity_type' +p22792 +(dp22793 +S'editable' +p22794 +I00 +sS'value' +p22795 +S'Element' +p22796 +ssS'editable' +p22797 +(dp22798 +S'editable' +p22799 +I00 +sS'value' +p22800 +I01 +ssS'unique' +p22801 +(dp22802 +S'editable' +p22803 +I00 +sS'value' +p22804 +I00 +ssS'properties' +p22805 +(dp22806 +S'default_value' +p22807 +(dp22808 +S'editable' +p22809 +I00 +sS'value' +p22810 +NssS'summary_default' +p22811 +(dp22812 +S'editable' +p22813 +I01 +sS'value' +p22814 +S'none' +p22815 +sssS'description' +p22816 +(dp22817 +S'editable' +p22818 +I01 +sS'value' +p22819 +g47 +sssS'description' +p22820 +(dp22821 +S'mandatory' +p22822 +(dp22823 +S'editable' +p22824 +I00 +sS'value' +p22825 +I00 +ssS'name' +p22826 +(dp22827 +S'editable' +p22828 +I01 +sS'value' +p22829 +S'Description' +p22830 +ssS'data_type' +p22831 +(dp22832 +S'editable' +p22833 +I00 +sS'value' +p22834 +S'text' +p22835 +ssS'entity_type' +p22836 +(dp22837 +S'editable' +p22838 +I00 +sS'value' +p22839 +S'Element' +p22840 +ssS'editable' +p22841 +(dp22842 +S'editable' +p22843 +I00 +sS'value' +p22844 +I01 +ssS'unique' +p22845 +(dp22846 +S'editable' +p22847 +I00 +sS'value' +p22848 +I00 +ssS'properties' +p22849 +(dp22850 +S'default_value' +p22851 +(dp22852 +S'editable' +p22853 +I00 +sS'value' +p22854 +NssS'summary_default' +p22855 +(dp22856 +S'editable' +p22857 +I01 +sS'value' +p22858 +S'none' +p22859 +sssS'description' +p22860 +(dp22861 +S'editable' +p22862 +I01 +sS'value' +p22863 +g47 +sssS'smart_cut_out' +p22864 +(dp22865 +S'mandatory' +p22866 +(dp22867 +S'editable' +p22868 +I00 +sS'value' +p22869 +I00 +ssS'name' +p22870 +(dp22871 +S'editable' +p22872 +I01 +sS'value' +p22873 +S'Cut Out' +p22874 +ssS'data_type' +p22875 +(dp22876 +S'editable' +p22877 +I00 +sS'value' +p22878 +S'number' +p22879 +ssS'entity_type' +p22880 +(dp22881 +S'editable' +p22882 +I00 +sS'value' +p22883 +S'Element' +p22884 +ssS'editable' +p22885 +(dp22886 +S'editable' +p22887 +I00 +sS'value' +p22888 +I01 +ssS'unique' +p22889 +(dp22890 +S'editable' +p22891 +I00 +sS'value' +p22892 +I00 +ssS'properties' +p22893 +(dp22894 +S'default_value' +p22895 +(dp22896 +S'editable' +p22897 +I00 +sS'value' +p22898 +NssS'summary_default' +p22899 +(dp22900 +S'editable' +p22901 +I01 +sS'value' +p22902 +S'none' +p22903 +sssS'description' +p22904 +(dp22905 +S'editable' +p22906 +I01 +sS'value' +p22907 +g47 +sssS'tail_out' +p22908 +(dp22909 +S'mandatory' +p22910 +(dp22911 +S'editable' +p22912 +I00 +sS'value' +p22913 +I00 +ssS'name' +p22914 +(dp22915 +S'editable' +p22916 +I01 +sS'value' +p22917 +S'Raw Tail Out' +p22918 +ssS'data_type' +p22919 +(dp22920 +S'editable' +p22921 +I00 +sS'value' +p22922 +S'number' +p22923 +ssS'entity_type' +p22924 +(dp22925 +S'editable' +p22926 +I00 +sS'value' +p22927 +S'Element' +p22928 +ssS'editable' +p22929 +(dp22930 +S'editable' +p22931 +I00 +sS'value' +p22932 +I01 +ssS'unique' +p22933 +(dp22934 +S'editable' +p22935 +I00 +sS'value' +p22936 +I00 +ssS'properties' +p22937 +(dp22938 +S'default_value' +p22939 +(dp22940 +S'editable' +p22941 +I00 +sS'value' +p22942 +NssS'summary_default' +p22943 +(dp22944 +S'editable' +p22945 +I01 +sS'value' +p22946 +S'none' +p22947 +sssS'description' +p22948 +(dp22949 +S'editable' +p22950 +I01 +sS'value' +p22951 +g47 +sssS'smart_cut_in' +p22952 +(dp22953 +S'mandatory' +p22954 +(dp22955 +S'editable' +p22956 +I00 +sS'value' +p22957 +I00 +ssS'name' +p22958 +(dp22959 +S'editable' +p22960 +I01 +sS'value' +p22961 +S'Cut In' +p22962 +ssS'data_type' +p22963 +(dp22964 +S'editable' +p22965 +I00 +sS'value' +p22966 +S'number' +p22967 +ssS'entity_type' +p22968 +(dp22969 +S'editable' +p22970 +I00 +sS'value' +p22971 +S'Element' +p22972 +ssS'editable' +p22973 +(dp22974 +S'editable' +p22975 +I00 +sS'value' +p22976 +I01 +ssS'unique' +p22977 +(dp22978 +S'editable' +p22979 +I00 +sS'value' +p22980 +I00 +ssS'properties' +p22981 +(dp22982 +S'default_value' +p22983 +(dp22984 +S'editable' +p22985 +I00 +sS'value' +p22986 +NssS'summary_default' +p22987 +(dp22988 +S'editable' +p22989 +I01 +sS'value' +p22990 +S'none' +p22991 +sssS'description' +p22992 +(dp22993 +S'editable' +p22994 +I01 +sS'value' +p22995 +g47 +sssS'smart_cut_summary_display' +p22996 +(dp22997 +S'mandatory' +p22998 +(dp22999 +S'editable' +p23000 +I00 +sS'value' +p23001 +I00 +ssS'name' +p23002 +(dp23003 +S'editable' +p23004 +I01 +sS'value' +p23005 +S'Cut Summary' +p23006 +ssS'data_type' +p23007 +(dp23008 +S'editable' +p23009 +I00 +sS'value' +p23010 +S'text' +p23011 +ssS'entity_type' +p23012 +(dp23013 +S'editable' +p23014 +I00 +sS'value' +p23015 +S'Element' +p23016 +ssS'editable' +p23017 +(dp23018 +S'editable' +p23019 +I00 +sS'value' +p23020 +I00 +ssS'unique' +p23021 +(dp23022 +S'editable' +p23023 +I00 +sS'value' +p23024 +I00 +ssS'properties' +p23025 +(dp23026 +S'default_value' +p23027 +(dp23028 +S'editable' +p23029 +I00 +sS'value' +p23030 +NssS'summary_default' +p23031 +(dp23032 +S'editable' +p23033 +I01 +sS'value' +p23034 +S'none' +p23035 +sssS'description' +p23036 +(dp23037 +S'editable' +p23038 +I01 +sS'value' +p23039 +g47 +sssS'cut_in' +p23040 +(dp23041 +S'mandatory' +p23042 +(dp23043 +S'editable' +p23044 +I00 +sS'value' +p23045 +I00 +ssS'name' +p23046 +(dp23047 +S'editable' +p23048 +I01 +sS'value' +p23049 +S'Raw Cut In' +p23050 +ssS'data_type' +p23051 +(dp23052 +S'editable' +p23053 +I00 +sS'value' +p23054 +S'number' +p23055 +ssS'entity_type' +p23056 +(dp23057 +S'editable' +p23058 +I00 +sS'value' +p23059 +S'Element' +p23060 +ssS'editable' +p23061 +(dp23062 +S'editable' +p23063 +I00 +sS'value' +p23064 +I01 +ssS'unique' +p23065 +(dp23066 +S'editable' +p23067 +I00 +sS'value' +p23068 +I00 +ssS'properties' +p23069 +(dp23070 +S'default_value' +p23071 +(dp23072 +S'editable' +p23073 +I00 +sS'value' +p23074 +NssS'summary_default' +p23075 +(dp23076 +S'editable' +p23077 +I01 +sS'value' +p23078 +S'none' +p23079 +sssS'description' +p23080 +(dp23081 +S'editable' +p23082 +I01 +sS'value' +p23083 +g47 +sssS'smart_duration_summary_display' +p23084 +(dp23085 +S'mandatory' +p23086 +(dp23087 +S'editable' +p23088 +I00 +sS'value' +p23089 +I00 +ssS'name' +p23090 +(dp23091 +S'editable' +p23092 +I01 +sS'value' +p23093 +S'Duration Summary' +p23094 +ssS'data_type' +p23095 +(dp23096 +S'editable' +p23097 +I00 +sS'value' +p23098 +S'text' +p23099 +ssS'entity_type' +p23100 +(dp23101 +S'editable' +p23102 +I00 +sS'value' +p23103 +S'Element' +p23104 +ssS'editable' +p23105 +(dp23106 +S'editable' +p23107 +I00 +sS'value' +p23108 +I00 +ssS'unique' +p23109 +(dp23110 +S'editable' +p23111 +I00 +sS'value' +p23112 +I00 +ssS'properties' +p23113 +(dp23114 +S'default_value' +p23115 +(dp23116 +S'editable' +p23117 +I00 +sS'value' +p23118 +NssS'summary_default' +p23119 +(dp23120 +S'editable' +p23121 +I01 +sS'value' +p23122 +S'none' +p23123 +sssS'description' +p23124 +(dp23125 +S'editable' +p23126 +I01 +sS'value' +p23127 +g47 +sssS'tail_duration' +p23128 +(dp23129 +S'mandatory' +p23130 +(dp23131 +S'editable' +p23132 +I00 +sS'value' +p23133 +I00 +ssS'name' +p23134 +(dp23135 +S'editable' +p23136 +I01 +sS'value' +p23137 +S'Raw Tail Duration' +p23138 +ssS'data_type' +p23139 +(dp23140 +S'editable' +p23141 +I00 +sS'value' +p23142 +S'number' +p23143 +ssS'entity_type' +p23144 +(dp23145 +S'editable' +p23146 +I00 +sS'value' +p23147 +S'Element' +p23148 +ssS'editable' +p23149 +(dp23150 +S'editable' +p23151 +I00 +sS'value' +p23152 +I01 +ssS'unique' +p23153 +(dp23154 +S'editable' +p23155 +I00 +sS'value' +p23156 +I00 +ssS'properties' +p23157 +(dp23158 +S'default_value' +p23159 +(dp23160 +S'editable' +p23161 +I00 +sS'value' +p23162 +NssS'summary_default' +p23163 +(dp23164 +S'editable' +p23165 +I01 +sS'value' +p23166 +S'none' +p23167 +sssS'description' +p23168 +(dp23169 +S'editable' +p23170 +I01 +sS'value' +p23171 +g47 +sssS'smart_tail_out' +p23172 +(dp23173 +S'mandatory' +p23174 +(dp23175 +S'editable' +p23176 +I00 +sS'value' +p23177 +I00 +ssS'name' +p23178 +(dp23179 +S'editable' +p23180 +I01 +sS'value' +p23181 +S'Tail Out' +p23182 +ssS'data_type' +p23183 +(dp23184 +S'editable' +p23185 +I00 +sS'value' +p23186 +S'number' +p23187 +ssS'entity_type' +p23188 +(dp23189 +S'editable' +p23190 +I00 +sS'value' +p23191 +S'Element' +p23192 +ssS'editable' +p23193 +(dp23194 +S'editable' +p23195 +I00 +sS'value' +p23196 +I01 +ssS'unique' +p23197 +(dp23198 +S'editable' +p23199 +I00 +sS'value' +p23200 +I00 +ssS'properties' +p23201 +(dp23202 +S'default_value' +p23203 +(dp23204 +S'editable' +p23205 +I00 +sS'value' +p23206 +NssS'summary_default' +p23207 +(dp23208 +S'editable' +p23209 +I01 +sS'value' +p23210 +S'none' +p23211 +sssS'description' +p23212 +(dp23213 +S'editable' +p23214 +I01 +sS'value' +p23215 +g47 +sssS'step_0' +p23216 +(dp23217 +S'mandatory' +p23218 +(dp23219 +S'editable' +p23220 +I00 +sS'value' +p23221 +I00 +ssS'name' +p23222 +(dp23223 +S'editable' +p23224 +I01 +sS'value' +p23225 +S'ALL TASKS' +p23226 +ssS'data_type' +p23227 +(dp23228 +S'editable' +p23229 +I00 +sS'value' +p23230 +S'pivot_column' +p23231 +ssS'entity_type' +p23232 +(dp23233 +S'editable' +p23234 +I00 +sS'value' +p23235 +S'Element' +p23236 +ssS'editable' +p23237 +(dp23238 +S'editable' +p23239 +I00 +sS'value' +p23240 +I00 +ssS'unique' +p23241 +(dp23242 +S'editable' +p23243 +I00 +sS'value' +p23244 +I00 +ssS'properties' +p23245 +(dp23246 +S'default_value' +p23247 +(dp23248 +S'editable' +p23249 +I00 +sS'value' +p23250 +NssS'summary_default' +p23251 +(dp23252 +S'editable' +p23253 +I00 +sS'value' +p23254 +S'none' +p23255 +sssS'description' +p23256 +(dp23257 +S'editable' +p23258 +I01 +sS'value' +p23259 +g47 +sssS'cut_duration' +p23260 +(dp23261 +S'mandatory' +p23262 +(dp23263 +S'editable' +p23264 +I00 +sS'value' +p23265 +I00 +ssS'name' +p23266 +(dp23267 +S'editable' +p23268 +I01 +sS'value' +p23269 +S'Raw Cut Duration' +p23270 +ssS'data_type' +p23271 +(dp23272 +S'editable' +p23273 +I00 +sS'value' +p23274 +S'number' +p23275 +ssS'entity_type' +p23276 +(dp23277 +S'editable' +p23278 +I00 +sS'value' +p23279 +S'Element' +p23280 +ssS'editable' +p23281 +(dp23282 +S'editable' +p23283 +I00 +sS'value' +p23284 +I01 +ssS'unique' +p23285 +(dp23286 +S'editable' +p23287 +I00 +sS'value' +p23288 +I00 +ssS'properties' +p23289 +(dp23290 +S'default_value' +p23291 +(dp23292 +S'editable' +p23293 +I00 +sS'value' +p23294 +NssS'summary_default' +p23295 +(dp23296 +S'editable' +p23297 +I01 +sS'value' +p23298 +S'none' +p23299 +sssS'description' +p23300 +(dp23301 +S'editable' +p23302 +I01 +sS'value' +p23303 +g47 +sssS'smart_tail_in' +p23304 +(dp23305 +S'mandatory' +p23306 +(dp23307 +S'editable' +p23308 +I00 +sS'value' +p23309 +I00 +ssS'name' +p23310 +(dp23311 +S'editable' +p23312 +I01 +sS'value' +p23313 +S'Tail In' +p23314 +ssS'data_type' +p23315 +(dp23316 +S'editable' +p23317 +I00 +sS'value' +p23318 +S'number' +p23319 +ssS'entity_type' +p23320 +(dp23321 +S'editable' +p23322 +I00 +sS'value' +p23323 +S'Element' +p23324 +ssS'editable' +p23325 +(dp23326 +S'editable' +p23327 +I00 +sS'value' +p23328 +I01 +ssS'unique' +p23329 +(dp23330 +S'editable' +p23331 +I00 +sS'value' +p23332 +I00 +ssS'properties' +p23333 +(dp23334 +S'default_value' +p23335 +(dp23336 +S'editable' +p23337 +I00 +sS'value' +p23338 +NssS'summary_default' +p23339 +(dp23340 +S'editable' +p23341 +I01 +sS'value' +p23342 +S'none' +p23343 +sssS'description' +p23344 +(dp23345 +S'editable' +p23346 +I01 +sS'value' +p23347 +g47 +sssS'assets' +p23348 +(dp23349 +S'mandatory' +p23350 +(dp23351 +S'editable' +p23352 +I00 +sS'value' +p23353 +I00 +ssS'name' +p23354 +(dp23355 +S'editable' +p23356 +I01 +sS'value' +p23357 +S'Assets' +p23358 +ssS'data_type' +p23359 +(dp23360 +S'editable' +p23361 +I00 +sS'value' +p23362 +S'multi_entity' +p23363 +ssS'entity_type' +p23364 +(dp23365 +S'editable' +p23366 +I00 +sS'value' +p23367 +S'Element' +p23368 +ssS'editable' +p23369 +(dp23370 +S'editable' +p23371 +I00 +sS'value' +p23372 +I01 +ssS'unique' +p23373 +(dp23374 +S'editable' +p23375 +I00 +sS'value' +p23376 +I00 +ssS'properties' +p23377 +(dp23378 +S'default_value' +p23379 +(dp23380 +S'editable' +p23381 +I00 +sS'value' +p23382 +NssS'summary_default' +p23383 +(dp23384 +S'editable' +p23385 +I01 +sS'value' +p23386 +S'none' +p23387 +ssS'valid_types' +p23388 +(dp23389 +S'editable' +p23390 +I01 +sS'value' +p23391 +(lp23392 +S'Asset' +p23393 +asssS'description' +p23394 +(dp23395 +S'editable' +p23396 +I01 +sS'value' +p23397 +g47 +sssS'smart_head_out' +p23398 +(dp23399 +S'mandatory' +p23400 +(dp23401 +S'editable' +p23402 +I00 +sS'value' +p23403 +I00 +ssS'name' +p23404 +(dp23405 +S'editable' +p23406 +I01 +sS'value' +p23407 +S'Head Out' +p23408 +ssS'data_type' +p23409 +(dp23410 +S'editable' +p23411 +I00 +sS'value' +p23412 +S'number' +p23413 +ssS'entity_type' +p23414 +(dp23415 +S'editable' +p23416 +I00 +sS'value' +p23417 +S'Element' +p23418 +ssS'editable' +p23419 +(dp23420 +S'editable' +p23421 +I00 +sS'value' +p23422 +I01 +ssS'unique' +p23423 +(dp23424 +S'editable' +p23425 +I00 +sS'value' +p23426 +I00 +ssS'properties' +p23427 +(dp23428 +S'default_value' +p23429 +(dp23430 +S'editable' +p23431 +I00 +sS'value' +p23432 +NssS'summary_default' +p23433 +(dp23434 +S'editable' +p23435 +I01 +sS'value' +p23436 +S'none' +p23437 +sssS'description' +p23438 +(dp23439 +S'editable' +p23440 +I01 +sS'value' +p23441 +g47 +sssS'created_at' +p23442 +(dp23443 +S'mandatory' +p23444 +(dp23445 +S'editable' +p23446 +I00 +sS'value' +p23447 +I00 +ssS'name' +p23448 +(dp23449 +S'editable' +p23450 +I01 +sS'value' +p23451 +S'Date Created' +p23452 +ssS'data_type' +p23453 +(dp23454 +S'editable' +p23455 +I00 +sS'value' +p23456 +S'date_time' +p23457 +ssS'entity_type' +p23458 +(dp23459 +S'editable' +p23460 +I00 +sS'value' +p23461 +S'Element' +p23462 +ssS'editable' +p23463 +(dp23464 +S'editable' +p23465 +I00 +sS'value' +p23466 +I00 +ssS'unique' +p23467 +(dp23468 +S'editable' +p23469 +I00 +sS'value' +p23470 +I00 +ssS'properties' +p23471 +(dp23472 +S'default_value' +p23473 +(dp23474 +S'editable' +p23475 +I00 +sS'value' +p23476 +NssS'summary_default' +p23477 +(dp23478 +S'editable' +p23479 +I01 +sS'value' +p23480 +S'none' +p23481 +sssS'description' +p23482 +(dp23483 +S'editable' +p23484 +I01 +sS'value' +p23485 +g47 +sssS'project' +p23486 +(dp23487 +S'mandatory' +p23488 +(dp23489 +S'editable' +p23490 +I00 +sS'value' +p23491 +I00 +ssS'name' +p23492 +(dp23493 +S'editable' +p23494 +I01 +sS'value' +p23495 +S'Project' +p23496 +ssS'data_type' +p23497 +(dp23498 +S'editable' +p23499 +I00 +sS'value' +p23500 +S'entity' +p23501 +ssS'entity_type' +p23502 +(dp23503 +S'editable' +p23504 +I00 +sS'value' +p23505 +S'Element' +p23506 +ssS'editable' +p23507 +(dp23508 +S'editable' +p23509 +I00 +sS'value' +p23510 +I01 +ssS'unique' +p23511 +(dp23512 +S'editable' +p23513 +I00 +sS'value' +p23514 +I00 +ssS'properties' +p23515 +(dp23516 +S'default_value' +p23517 +(dp23518 +S'editable' +p23519 +I00 +sS'value' +p23520 +NssS'summary_default' +p23521 +(dp23522 +S'editable' +p23523 +I01 +sS'value' +p23524 +S'none' +p23525 +ssS'valid_types' +p23526 +(dp23527 +S'editable' +p23528 +I01 +sS'value' +p23529 +(lp23530 +S'Project' +p23531 +asssS'description' +p23532 +(dp23533 +S'editable' +p23534 +I01 +sS'value' +p23535 +g47 +sssS'filmstrip_image' +p23536 +(dp23537 +S'mandatory' +p23538 +(dp23539 +S'editable' +p23540 +I00 +sS'value' +p23541 +I00 +ssS'name' +p23542 +(dp23543 +S'editable' +p23544 +I01 +sS'value' +p23545 +S'Filmstrip Thumbnail' +p23546 +ssS'data_type' +p23547 +(dp23548 +S'editable' +p23549 +I00 +sS'value' +p23550 +S'image' +p23551 +ssS'entity_type' +p23552 +(dp23553 +S'editable' +p23554 +I00 +sS'value' +p23555 +S'Element' +p23556 +ssS'editable' +p23557 +(dp23558 +S'editable' +p23559 +I00 +sS'value' +p23560 +I01 +ssS'unique' +p23561 +(dp23562 +S'editable' +p23563 +I00 +sS'value' +p23564 +I00 +ssS'properties' +p23565 +(dp23566 +S'default_value' +p23567 +(dp23568 +S'editable' +p23569 +I00 +sS'value' +p23570 +NssS'summary_default' +p23571 +(dp23572 +S'editable' +p23573 +I01 +sS'value' +p23574 +S'none' +p23575 +sssS'description' +p23576 +(dp23577 +S'editable' +p23578 +I01 +sS'value' +p23579 +g47 +sssS'tail_in' +p23580 +(dp23581 +S'mandatory' +p23582 +(dp23583 +S'editable' +p23584 +I00 +sS'value' +p23585 +I00 +ssS'name' +p23586 +(dp23587 +S'editable' +p23588 +I01 +sS'value' +p23589 +S'Raw Tail In' +p23590 +ssS'data_type' +p23591 +(dp23592 +S'editable' +p23593 +I00 +sS'value' +p23594 +S'number' +p23595 +ssS'entity_type' +p23596 +(dp23597 +S'editable' +p23598 +I00 +sS'value' +p23599 +S'Element' +p23600 +ssS'editable' +p23601 +(dp23602 +S'editable' +p23603 +I00 +sS'value' +p23604 +I01 +ssS'unique' +p23605 +(dp23606 +S'editable' +p23607 +I00 +sS'value' +p23608 +I00 +ssS'properties' +p23609 +(dp23610 +S'default_value' +p23611 +(dp23612 +S'editable' +p23613 +I00 +sS'value' +p23614 +NssS'summary_default' +p23615 +(dp23616 +S'editable' +p23617 +I01 +sS'value' +p23618 +S'none' +p23619 +sssS'description' +p23620 +(dp23621 +S'editable' +p23622 +I01 +sS'value' +p23623 +g47 +sssS'shots' +p23624 +(dp23625 +S'mandatory' +p23626 +(dp23627 +S'editable' +p23628 +I00 +sS'value' +p23629 +I00 +ssS'name' +p23630 +(dp23631 +S'editable' +p23632 +I01 +sS'value' +p23633 +S'Shots' +p23634 +ssS'data_type' +p23635 +(dp23636 +S'editable' +p23637 +I00 +sS'value' +p23638 +S'multi_entity' +p23639 +ssS'entity_type' +p23640 +(dp23641 +S'editable' +p23642 +I00 +sS'value' +p23643 +S'Element' +p23644 +ssS'editable' +p23645 +(dp23646 +S'editable' +p23647 +I00 +sS'value' +p23648 +I01 +ssS'unique' +p23649 +(dp23650 +S'editable' +p23651 +I00 +sS'value' +p23652 +I00 +ssS'properties' +p23653 +(dp23654 +S'default_value' +p23655 +(dp23656 +S'editable' +p23657 +I00 +sS'value' +p23658 +NssS'summary_default' +p23659 +(dp23660 +S'editable' +p23661 +I01 +sS'value' +p23662 +S'none' +p23663 +ssS'valid_types' +p23664 +(dp23665 +S'editable' +p23666 +I01 +sS'value' +p23667 +(lp23668 +S'Shot' +p23669 +asssS'description' +p23670 +(dp23671 +S'editable' +p23672 +I01 +sS'value' +p23673 +g47 +sssS'smart_head_duration' +p23674 +(dp23675 +S'mandatory' +p23676 +(dp23677 +S'editable' +p23678 +I00 +sS'value' +p23679 +I00 +ssS'name' +p23680 +(dp23681 +S'editable' +p23682 +I01 +sS'value' +p23683 +S'Head Duration' +p23684 +ssS'data_type' +p23685 +(dp23686 +S'editable' +p23687 +I00 +sS'value' +p23688 +S'number' +p23689 +ssS'entity_type' +p23690 +(dp23691 +S'editable' +p23692 +I00 +sS'value' +p23693 +S'Element' +p23694 +ssS'editable' +p23695 +(dp23696 +S'editable' +p23697 +I00 +sS'value' +p23698 +I01 +ssS'unique' +p23699 +(dp23700 +S'editable' +p23701 +I00 +sS'value' +p23702 +I00 +ssS'properties' +p23703 +(dp23704 +S'default_value' +p23705 +(dp23706 +S'editable' +p23707 +I00 +sS'value' +p23708 +NssS'summary_default' +p23709 +(dp23710 +S'editable' +p23711 +I01 +sS'value' +p23712 +S'none' +p23713 +sssS'description' +p23714 +(dp23715 +S'editable' +p23716 +I01 +sS'value' +p23717 +g47 +sssS'cut_out' +p23718 +(dp23719 +S'mandatory' +p23720 +(dp23721 +S'editable' +p23722 +I00 +sS'value' +p23723 +I00 +ssS'name' +p23724 +(dp23725 +S'editable' +p23726 +I01 +sS'value' +p23727 +S'Raw Cut Out' +p23728 +ssS'data_type' +p23729 +(dp23730 +S'editable' +p23731 +I00 +sS'value' +p23732 +S'number' +p23733 +ssS'entity_type' +p23734 +(dp23735 +S'editable' +p23736 +I00 +sS'value' +p23737 +S'Element' +p23738 +ssS'editable' +p23739 +(dp23740 +S'editable' +p23741 +I00 +sS'value' +p23742 +I01 +ssS'unique' +p23743 +(dp23744 +S'editable' +p23745 +I00 +sS'value' +p23746 +I00 +ssS'properties' +p23747 +(dp23748 +S'default_value' +p23749 +(dp23750 +S'editable' +p23751 +I00 +sS'value' +p23752 +NssS'summary_default' +p23753 +(dp23754 +S'editable' +p23755 +I01 +sS'value' +p23756 +S'none' +p23757 +sssS'description' +p23758 +(dp23759 +S'editable' +p23760 +I01 +sS'value' +p23761 +g47 +sssS'head_out' +p23762 +(dp23763 +S'mandatory' +p23764 +(dp23765 +S'editable' +p23766 +I00 +sS'value' +p23767 +I00 +ssS'name' +p23768 +(dp23769 +S'editable' +p23770 +I01 +sS'value' +p23771 +S'Raw Head Out' +p23772 +ssS'data_type' +p23773 +(dp23774 +S'editable' +p23775 +I00 +sS'value' +p23776 +S'number' +p23777 +ssS'entity_type' +p23778 +(dp23779 +S'editable' +p23780 +I00 +sS'value' +p23781 +S'Element' +p23782 +ssS'editable' +p23783 +(dp23784 +S'editable' +p23785 +I00 +sS'value' +p23786 +I01 +ssS'unique' +p23787 +(dp23788 +S'editable' +p23789 +I00 +sS'value' +p23790 +I00 +ssS'properties' +p23791 +(dp23792 +S'default_value' +p23793 +(dp23794 +S'editable' +p23795 +I00 +sS'value' +p23796 +NssS'summary_default' +p23797 +(dp23798 +S'editable' +p23799 +I01 +sS'value' +p23800 +S'none' +p23801 +sssS'description' +p23802 +(dp23803 +S'editable' +p23804 +I01 +sS'value' +p23805 +g47 +sssS'notes' +p23806 +(dp23807 +S'mandatory' +p23808 +(dp23809 +S'editable' +p23810 +I00 +sS'value' +p23811 +I00 +ssS'name' +p23812 +(dp23813 +S'editable' +p23814 +I01 +sS'value' +p23815 +S'Notes' +p23816 +ssS'data_type' +p23817 +(dp23818 +S'editable' +p23819 +I00 +sS'value' +p23820 +S'multi_entity' +p23821 +ssS'entity_type' +p23822 +(dp23823 +S'editable' +p23824 +I00 +sS'value' +p23825 +S'Element' +p23826 +ssS'editable' +p23827 +(dp23828 +S'editable' +p23829 +I00 +sS'value' +p23830 +I01 +ssS'unique' +p23831 +(dp23832 +S'editable' +p23833 +I00 +sS'value' +p23834 +I00 +ssS'properties' +p23835 +(dp23836 +S'default_value' +p23837 +(dp23838 +S'editable' +p23839 +I00 +sS'value' +p23840 +NssS'summary_default' +p23841 +(dp23842 +S'editable' +p23843 +I01 +sS'value' +p23844 +S'none' +p23845 +ssS'valid_types' +p23846 +(dp23847 +S'editable' +p23848 +I01 +sS'value' +p23849 +(lp23850 +S'Note' +p23851 +asssS'description' +p23852 +(dp23853 +S'editable' +p23854 +I01 +sS'value' +p23855 +g47 +ssssS'TankType' +p23856 +(dp23857 +S'code' +p23858 +(dp23859 +S'mandatory' +p23860 +(dp23861 +S'editable' +p23862 +I00 +sS'value' +p23863 +I01 +ssS'name' +p23864 +(dp23865 +S'editable' +p23866 +I01 +sS'value' +p23867 +S'Tank Type Name' +p23868 +ssS'data_type' +p23869 +(dp23870 +S'editable' +p23871 +I00 +sS'value' +p23872 +S'text' +p23873 +ssS'entity_type' +p23874 +(dp23875 +S'editable' +p23876 +I00 +sS'value' +p23877 +S'TankType' +p23878 +ssS'editable' +p23879 +(dp23880 +S'editable' +p23881 +I00 +sS'value' +p23882 +I01 +ssS'unique' +p23883 +(dp23884 +S'editable' +p23885 +I00 +sS'value' +p23886 +I01 +ssS'properties' +p23887 +(dp23888 +S'default_value' +p23889 +(dp23890 +S'editable' +p23891 +I00 +sS'value' +p23892 +NssS'summary_default' +p23893 +(dp23894 +S'editable' +p23895 +I01 +sS'value' +p23896 +S'none' +p23897 +sssS'description' +p23898 +(dp23899 +S'editable' +p23900 +I01 +sS'value' +p23901 +g47 +sssS'description' +p23902 +(dp23903 +S'mandatory' +p23904 +(dp23905 +S'editable' +p23906 +I00 +sS'value' +p23907 +I00 +ssS'name' +p23908 +(dp23909 +S'editable' +p23910 +I01 +sS'value' +p23911 +S'Description' +p23912 +ssS'data_type' +p23913 +(dp23914 +S'editable' +p23915 +I00 +sS'value' +p23916 +S'text' +p23917 +ssS'entity_type' +p23918 +(dp23919 +S'editable' +p23920 +I00 +sS'value' +p23921 +S'TankType' +p23922 +ssS'editable' +p23923 +(dp23924 +S'editable' +p23925 +I00 +sS'value' +p23926 +I01 +ssS'unique' +p23927 +(dp23928 +S'editable' +p23929 +I00 +sS'value' +p23930 +I00 +ssS'properties' +p23931 +(dp23932 +S'default_value' +p23933 +(dp23934 +S'editable' +p23935 +I00 +sS'value' +p23936 +NssS'summary_default' +p23937 +(dp23938 +S'editable' +p23939 +I01 +sS'value' +p23940 +S'none' +p23941 +sssS'description' +p23942 +(dp23943 +S'editable' +p23944 +I01 +sS'value' +p23945 +g47 +sssS'created_at' +p23946 +(dp23947 +S'mandatory' +p23948 +(dp23949 +S'editable' +p23950 +I00 +sS'value' +p23951 +I00 +ssS'name' +p23952 +(dp23953 +S'editable' +p23954 +I01 +sS'value' +p23955 +S'Date Created' +p23956 +ssS'data_type' +p23957 +(dp23958 +S'editable' +p23959 +I00 +sS'value' +p23960 +S'date_time' +p23961 +ssS'entity_type' +p23962 +(dp23963 +S'editable' +p23964 +I00 +sS'value' +p23965 +S'TankType' +p23966 +ssS'editable' +p23967 +(dp23968 +S'editable' +p23969 +I00 +sS'value' +p23970 +I00 +ssS'unique' +p23971 +(dp23972 +S'editable' +p23973 +I00 +sS'value' +p23974 +I00 +ssS'properties' +p23975 +(dp23976 +S'default_value' +p23977 +(dp23978 +S'editable' +p23979 +I00 +sS'value' +p23980 +NssS'summary_default' +p23981 +(dp23982 +S'editable' +p23983 +I01 +sS'value' +p23984 +S'none' +p23985 +sssS'description' +p23986 +(dp23987 +S'editable' +p23988 +I01 +sS'value' +p23989 +g47 +sssS'updated_at' +p23990 +(dp23991 +S'mandatory' +p23992 +(dp23993 +S'editable' +p23994 +I00 +sS'value' +p23995 +I00 +ssS'name' +p23996 +(dp23997 +S'editable' +p23998 +I01 +sS'value' +p23999 +S'Date Updated' +p24000 +ssS'data_type' +p24001 +(dp24002 +S'editable' +p24003 +I00 +sS'value' +p24004 +S'date_time' +p24005 +ssS'entity_type' +p24006 +(dp24007 +S'editable' +p24008 +I00 +sS'value' +p24009 +S'TankType' +p24010 +ssS'editable' +p24011 +(dp24012 +S'editable' +p24013 +I00 +sS'value' +p24014 +I00 +ssS'unique' +p24015 +(dp24016 +S'editable' +p24017 +I00 +sS'value' +p24018 +I00 +ssS'properties' +p24019 +(dp24020 +S'default_value' +p24021 +(dp24022 +S'editable' +p24023 +I00 +sS'value' +p24024 +NssS'summary_default' +p24025 +(dp24026 +S'editable' +p24027 +I01 +sS'value' +p24028 +S'none' +p24029 +sssS'description' +p24030 +(dp24031 +S'editable' +p24032 +I01 +sS'value' +p24033 +g47 +sssS'created_by' +p24034 +(dp24035 +S'mandatory' +p24036 +(dp24037 +S'editable' +p24038 +I00 +sS'value' +p24039 +I00 +ssS'name' +p24040 +(dp24041 +S'editable' +p24042 +I01 +sS'value' +p24043 +S'Created by' +p24044 +ssS'data_type' +p24045 +(dp24046 +S'editable' +p24047 +I00 +sS'value' +p24048 +S'entity' +p24049 +ssS'entity_type' +p24050 +(dp24051 +S'editable' +p24052 +I00 +sS'value' +p24053 +S'TankType' +p24054 +ssS'editable' +p24055 +(dp24056 +S'editable' +p24057 +I00 +sS'value' +p24058 +I00 +ssS'unique' +p24059 +(dp24060 +S'editable' +p24061 +I00 +sS'value' +p24062 +I00 +ssS'properties' +p24063 +(dp24064 +S'default_value' +p24065 +(dp24066 +S'editable' +p24067 +I00 +sS'value' +p24068 +NssS'summary_default' +p24069 +(dp24070 +S'editable' +p24071 +I01 +sS'value' +p24072 +S'none' +p24073 +ssS'valid_types' +p24074 +(dp24075 +S'editable' +p24076 +I01 +sS'value' +p24077 +(lp24078 +S'HumanUser' +p24079 +aS'ApiUser' +p24080 +asssS'description' +p24081 +(dp24082 +S'editable' +p24083 +I01 +sS'value' +p24084 +g47 +sssS'project' +p24085 +(dp24086 +S'mandatory' +p24087 +(dp24088 +S'editable' +p24089 +I00 +sS'value' +p24090 +I00 +ssS'name' +p24091 +(dp24092 +S'editable' +p24093 +I01 +sS'value' +p24094 +S'Project' +p24095 +ssS'data_type' +p24096 +(dp24097 +S'editable' +p24098 +I00 +sS'value' +p24099 +S'entity' +p24100 +ssS'entity_type' +p24101 +(dp24102 +S'editable' +p24103 +I00 +sS'value' +p24104 +S'TankType' +p24105 +ssS'editable' +p24106 +(dp24107 +S'editable' +p24108 +I00 +sS'value' +p24109 +I01 +ssS'unique' +p24110 +(dp24111 +S'editable' +p24112 +I00 +sS'value' +p24113 +I00 +ssS'properties' +p24114 +(dp24115 +S'default_value' +p24116 +(dp24117 +S'editable' +p24118 +I00 +sS'value' +p24119 +NssS'summary_default' +p24120 +(dp24121 +S'editable' +p24122 +I01 +sS'value' +p24123 +S'none' +p24124 +ssS'valid_types' +p24125 +(dp24126 +S'editable' +p24127 +I01 +sS'value' +p24128 +(lp24129 +S'Project' +p24130 +asssS'description' +p24131 +(dp24132 +S'editable' +p24133 +I01 +sS'value' +p24134 +g47 +sssS'sg_status_list' +p24135 +(dp24136 +S'mandatory' +p24137 +(dp24138 +S'editable' +p24139 +I00 +sS'value' +p24140 +I00 +ssS'name' +p24141 +(dp24142 +S'editable' +p24143 +I01 +sS'value' +p24144 +S'Status' +p24145 +ssS'data_type' +p24146 +(dp24147 +S'editable' +p24148 +I00 +sS'value' +p24149 +S'status_list' +p24150 +ssS'entity_type' +p24151 +(dp24152 +S'editable' +p24153 +I00 +sS'value' +p24154 +S'TankType' +p24155 +ssS'editable' +p24156 +(dp24157 +S'editable' +p24158 +I00 +sS'value' +p24159 +I01 +ssS'unique' +p24160 +(dp24161 +S'editable' +p24162 +I00 +sS'value' +p24163 +I00 +ssS'properties' +p24164 +(dp24165 +S'default_value' +p24166 +(dp24167 +S'editable' +p24168 +I01 +sS'value' +p24169 +S'wtg' +p24170 +ssS'valid_values' +p24171 +(dp24172 +S'editable' +p24173 +I01 +sS'value' +p24174 +(lp24175 +S'wtg' +p24176 +aS'ip' +p24177 +aS'cmpt' +p24178 +assS'summary_default' +p24179 +(dp24180 +S'editable' +p24181 +I01 +sS'value' +p24182 +S'none' +p24183 +sssS'description' +p24184 +(dp24185 +S'editable' +p24186 +I01 +sS'value' +p24187 +g47 +sssS'image' +p24188 +(dp24189 +S'mandatory' +p24190 +(dp24191 +S'editable' +p24192 +I00 +sS'value' +p24193 +I00 +ssS'name' +p24194 +(dp24195 +S'editable' +p24196 +I01 +sS'value' +p24197 +S'Thumbnail' +p24198 +ssS'data_type' +p24199 +(dp24200 +S'editable' +p24201 +I00 +sS'value' +p24202 +S'image' +p24203 +ssS'entity_type' +p24204 +(dp24205 +S'editable' +p24206 +I00 +sS'value' +p24207 +S'TankType' +p24208 +ssS'editable' +p24209 +(dp24210 +S'editable' +p24211 +I00 +sS'value' +p24212 +I01 +ssS'unique' +p24213 +(dp24214 +S'editable' +p24215 +I00 +sS'value' +p24216 +I00 +ssS'properties' +p24217 +(dp24218 +S'default_value' +p24219 +(dp24220 +S'editable' +p24221 +I00 +sS'value' +p24222 +NssS'summary_default' +p24223 +(dp24224 +S'editable' +p24225 +I01 +sS'value' +p24226 +S'none' +p24227 +sssS'description' +p24228 +(dp24229 +S'editable' +p24230 +I01 +sS'value' +p24231 +g47 +sssS'cached_display_name' +p24232 +(dp24233 +S'mandatory' +p24234 +(dp24235 +S'editable' +p24236 +I00 +sS'value' +p24237 +I00 +ssS'name' +p24238 +(dp24239 +S'editable' +p24240 +I01 +sS'value' +p24241 +S'Cached Display Name' +p24242 +ssS'data_type' +p24243 +(dp24244 +S'editable' +p24245 +I00 +sS'value' +p24246 +S'text' +p24247 +ssS'entity_type' +p24248 +(dp24249 +S'editable' +p24250 +I00 +sS'value' +p24251 +S'TankType' +p24252 +ssS'editable' +p24253 +(dp24254 +S'editable' +p24255 +I00 +sS'value' +p24256 +I01 +ssS'unique' +p24257 +(dp24258 +S'editable' +p24259 +I00 +sS'value' +p24260 +I00 +ssS'properties' +p24261 +(dp24262 +S'default_value' +p24263 +(dp24264 +S'editable' +p24265 +I00 +sS'value' +p24266 +NssS'summary_default' +p24267 +(dp24268 +S'editable' +p24269 +I00 +sS'value' +p24270 +S'none' +p24271 +sssS'description' +p24272 +(dp24273 +S'editable' +p24274 +I01 +sS'value' +p24275 +g47 +sssS'tag_list' +p24276 +(dp24277 +S'mandatory' +p24278 +(dp24279 +S'editable' +p24280 +I00 +sS'value' +p24281 +I00 +ssS'name' +p24282 +(dp24283 +S'editable' +p24284 +I01 +sS'value' +p24285 +S'Tags' +p24286 +ssS'data_type' +p24287 +(dp24288 +S'editable' +p24289 +I00 +sS'value' +p24290 +S'tag_list' +p24291 +ssS'entity_type' +p24292 +(dp24293 +S'editable' +p24294 +I00 +sS'value' +p24295 +S'TankType' +p24296 +ssS'editable' +p24297 +(dp24298 +S'editable' +p24299 +I00 +sS'value' +p24300 +I01 +ssS'unique' +p24301 +(dp24302 +S'editable' +p24303 +I00 +sS'value' +p24304 +I00 +ssS'properties' +p24305 +(dp24306 +S'default_value' +p24307 +(dp24308 +S'editable' +p24309 +I00 +sS'value' +p24310 +NssS'summary_default' +p24311 +(dp24312 +S'editable' +p24313 +I01 +sS'value' +p24314 +S'none' +p24315 +ssS'valid_types' +p24316 +(dp24317 +S'editable' +p24318 +I01 +sS'value' +p24319 +(lp24320 +S'Tag' +p24321 +asssS'description' +p24322 +(dp24323 +S'editable' +p24324 +I01 +sS'value' +p24325 +g47 +sssS'id' +p24326 +(dp24327 +S'mandatory' +p24328 +(dp24329 +S'editable' +p24330 +I00 +sS'value' +p24331 +I00 +ssS'name' +p24332 +(dp24333 +S'editable' +p24334 +I01 +sS'value' +p24335 +S'Id' +p24336 +ssS'data_type' +p24337 +(dp24338 +S'editable' +p24339 +I00 +sS'value' +p24340 +S'number' +p24341 +ssS'entity_type' +p24342 +(dp24343 +S'editable' +p24344 +I00 +sS'value' +p24345 +S'TankType' +p24346 +ssS'editable' +p24347 +(dp24348 +S'editable' +p24349 +I00 +sS'value' +p24350 +I00 +ssS'unique' +p24351 +(dp24352 +S'editable' +p24353 +I00 +sS'value' +p24354 +I00 +ssS'properties' +p24355 +(dp24356 +S'default_value' +p24357 +(dp24358 +S'editable' +p24359 +I00 +sS'value' +p24360 +NssS'summary_default' +p24361 +(dp24362 +S'editable' +p24363 +I01 +sS'value' +p24364 +S'none' +p24365 +sssS'description' +p24366 +(dp24367 +S'editable' +p24368 +I01 +sS'value' +p24369 +g47 +sssS'updated_by' +p24370 +(dp24371 +S'mandatory' +p24372 +(dp24373 +S'editable' +p24374 +I00 +sS'value' +p24375 +I00 +ssS'name' +p24376 +(dp24377 +S'editable' +p24378 +I01 +sS'value' +p24379 +S'Updated by' +p24380 +ssS'data_type' +p24381 +(dp24382 +S'editable' +p24383 +I00 +sS'value' +p24384 +S'entity' +p24385 +ssS'entity_type' +p24386 +(dp24387 +S'editable' +p24388 +I00 +sS'value' +p24389 +S'TankType' +p24390 +ssS'editable' +p24391 +(dp24392 +S'editable' +p24393 +I00 +sS'value' +p24394 +I00 +ssS'unique' +p24395 +(dp24396 +S'editable' +p24397 +I00 +sS'value' +p24398 +I00 +ssS'properties' +p24399 +(dp24400 +S'default_value' +p24401 +(dp24402 +S'editable' +p24403 +I00 +sS'value' +p24404 +NssS'summary_default' +p24405 +(dp24406 +S'editable' +p24407 +I01 +sS'value' +p24408 +S'none' +p24409 +ssS'valid_types' +p24410 +(dp24411 +S'editable' +p24412 +I01 +sS'value' +p24413 +(lp24414 +S'HumanUser' +p24415 +aS'ApiUser' +p24416 +asssS'description' +p24417 +(dp24418 +S'editable' +p24419 +I01 +sS'value' +p24420 +g47 +ssssS'Icon' +p24421 +(dp24422 +S'image_map_key' +p24423 +(dp24424 +S'mandatory' +p24425 +(dp24426 +S'editable' +p24427 +I00 +sS'value' +p24428 +I00 +ssS'name' +p24429 +(dp24430 +S'editable' +p24431 +I01 +sS'value' +p24432 +S'Image Map Key' +p24433 +ssS'data_type' +p24434 +(dp24435 +S'editable' +p24436 +I00 +sS'value' +p24437 +S'text' +p24438 +ssS'entity_type' +p24439 +(dp24440 +S'editable' +p24441 +I00 +sS'value' +p24442 +S'Icon' +p24443 +ssS'editable' +p24444 +(dp24445 +S'editable' +p24446 +I00 +sS'value' +p24447 +I00 +ssS'unique' +p24448 +(dp24449 +S'editable' +p24450 +I00 +sS'value' +p24451 +I00 +ssS'properties' +p24452 +(dp24453 +S'default_value' +p24454 +(dp24455 +S'editable' +p24456 +I00 +sS'value' +p24457 +NssS'summary_default' +p24458 +(dp24459 +S'editable' +p24460 +I01 +sS'value' +p24461 +S'none' +p24462 +sssS'description' +p24463 +(dp24464 +S'editable' +p24465 +I01 +sS'value' +p24466 +g47 +sssS'uuid' +p24467 +(dp24468 +S'mandatory' +p24469 +(dp24470 +S'editable' +p24471 +I00 +sS'value' +p24472 +I00 +ssS'name' +p24473 +(dp24474 +S'editable' +p24475 +I01 +sS'value' +p24476 +S'UUID' +p24477 +ssS'data_type' +p24478 +(dp24479 +S'editable' +p24480 +I00 +sS'value' +p24481 +S'uuid' +p24482 +ssS'entity_type' +p24483 +(dp24484 +S'editable' +p24485 +I00 +sS'value' +p24486 +S'Icon' +p24487 +ssS'editable' +p24488 +(dp24489 +S'editable' +p24490 +I00 +sS'value' +p24491 +I00 +ssS'unique' +p24492 +(dp24493 +S'editable' +p24494 +I00 +sS'value' +p24495 +I00 +ssS'properties' +p24496 +(dp24497 +S'default_value' +p24498 +(dp24499 +S'editable' +p24500 +I00 +sS'value' +p24501 +NssS'summary_default' +p24502 +(dp24503 +S'editable' +p24504 +I00 +sS'value' +p24505 +S'none' +p24506 +sssS'description' +p24507 +(dp24508 +S'editable' +p24509 +I01 +sS'value' +p24510 +g47 +sssS'icon_type' +p24511 +(dp24512 +S'mandatory' +p24513 +(dp24514 +S'editable' +p24515 +I00 +sS'value' +p24516 +I00 +ssS'name' +p24517 +(dp24518 +S'editable' +p24519 +I01 +sS'value' +p24520 +S'Icon Type' +p24521 +ssS'data_type' +p24522 +(dp24523 +S'editable' +p24524 +I00 +sS'value' +p24525 +S'list' +p24526 +ssS'entity_type' +p24527 +(dp24528 +S'editable' +p24529 +I00 +sS'value' +p24530 +S'Icon' +p24531 +ssS'editable' +p24532 +(dp24533 +S'editable' +p24534 +I00 +sS'value' +p24535 +I00 +ssS'unique' +p24536 +(dp24537 +S'editable' +p24538 +I00 +sS'value' +p24539 +I00 +ssS'properties' +p24540 +(dp24541 +S'default_value' +p24542 +(dp24543 +S'editable' +p24544 +I00 +sS'value' +p24545 +NssS'valid_values' +p24546 +(dp24547 +S'editable' +p24548 +I01 +sS'value' +p24549 +(lp24550 +S'permanent_status' +p24551 +aS'custom_status' +p24552 +assS'summary_default' +p24553 +(dp24554 +S'editable' +p24555 +I01 +sS'value' +p24556 +S'none' +p24557 +sssS'description' +p24558 +(dp24559 +S'editable' +p24560 +I01 +sS'value' +p24561 +g47 +sssS'url' +p24562 +(dp24563 +S'mandatory' +p24564 +(dp24565 +S'editable' +p24566 +I00 +sS'value' +p24567 +I00 +ssS'name' +p24568 +(dp24569 +S'editable' +p24570 +I01 +sS'value' +p24571 +S'Icon URL' +p24572 +ssS'data_type' +p24573 +(dp24574 +S'editable' +p24575 +I00 +sS'value' +p24576 +S'text' +p24577 +ssS'entity_type' +p24578 +(dp24579 +S'editable' +p24580 +I00 +sS'value' +p24581 +S'Icon' +p24582 +ssS'editable' +p24583 +(dp24584 +S'editable' +p24585 +I00 +sS'value' +p24586 +I00 +ssS'unique' +p24587 +(dp24588 +S'editable' +p24589 +I00 +sS'value' +p24590 +I00 +ssS'properties' +p24591 +(dp24592 +S'default_value' +p24593 +(dp24594 +S'editable' +p24595 +I00 +sS'value' +p24596 +NssS'summary_default' +p24597 +(dp24598 +S'editable' +p24599 +I00 +sS'value' +p24600 +S'none' +p24601 +sssS'description' +p24602 +(dp24603 +S'editable' +p24604 +I01 +sS'value' +p24605 +g47 +sssS'html' +p24606 +(dp24607 +S'mandatory' +p24608 +(dp24609 +S'editable' +p24610 +I00 +sS'value' +p24611 +I00 +ssS'name' +p24612 +(dp24613 +S'editable' +p24614 +I01 +sS'value' +p24615 +S'Icon HTML' +p24616 +ssS'data_type' +p24617 +(dp24618 +S'editable' +p24619 +I00 +sS'value' +p24620 +S'text' +p24621 +ssS'entity_type' +p24622 +(dp24623 +S'editable' +p24624 +I00 +sS'value' +p24625 +S'Icon' +p24626 +ssS'editable' +p24627 +(dp24628 +S'editable' +p24629 +I00 +sS'value' +p24630 +I00 +ssS'unique' +p24631 +(dp24632 +S'editable' +p24633 +I00 +sS'value' +p24634 +I00 +ssS'properties' +p24635 +(dp24636 +S'default_value' +p24637 +(dp24638 +S'editable' +p24639 +I00 +sS'value' +p24640 +NssS'summary_default' +p24641 +(dp24642 +S'editable' +p24643 +I01 +sS'value' +p24644 +S'none' +p24645 +sssS'description' +p24646 +(dp24647 +S'editable' +p24648 +I01 +sS'value' +p24649 +g47 +sssS'display_type' +p24650 +(dp24651 +S'mandatory' +p24652 +(dp24653 +S'editable' +p24654 +I00 +sS'value' +p24655 +I00 +ssS'name' +p24656 +(dp24657 +S'editable' +p24658 +I01 +sS'value' +p24659 +S'Display Type' +p24660 +ssS'data_type' +p24661 +(dp24662 +S'editable' +p24663 +I00 +sS'value' +p24664 +S'list' +p24665 +ssS'entity_type' +p24666 +(dp24667 +S'editable' +p24668 +I00 +sS'value' +p24669 +S'Icon' +p24670 +ssS'editable' +p24671 +(dp24672 +S'editable' +p24673 +I00 +sS'value' +p24674 +I00 +ssS'unique' +p24675 +(dp24676 +S'editable' +p24677 +I00 +sS'value' +p24678 +I00 +ssS'properties' +p24679 +(dp24680 +S'default_value' +p24681 +(dp24682 +S'editable' +p24683 +I00 +sS'value' +p24684 +NssS'valid_values' +p24685 +(dp24686 +S'editable' +p24687 +I01 +sS'value' +p24688 +(lp24689 +S'html' +p24690 +aS'image' +p24691 +aS'image_map' +p24692 +assS'summary_default' +p24693 +(dp24694 +S'editable' +p24695 +I01 +sS'value' +p24696 +S'none' +p24697 +sssS'description' +p24698 +(dp24699 +S'editable' +p24700 +I01 +sS'value' +p24701 +g47 +sssS'image_data' +p24702 +(dp24703 +S'mandatory' +p24704 +(dp24705 +S'editable' +p24706 +I00 +sS'value' +p24707 +I00 +ssS'name' +p24708 +(dp24709 +S'editable' +p24710 +I01 +sS'value' +p24711 +S'Image Data' +p24712 +ssS'data_type' +p24713 +(dp24714 +S'editable' +p24715 +I00 +sS'value' +p24716 +S'text' +p24717 +ssS'entity_type' +p24718 +(dp24719 +S'editable' +p24720 +I00 +sS'value' +p24721 +S'Icon' +p24722 +ssS'editable' +p24723 +(dp24724 +S'editable' +p24725 +I00 +sS'value' +p24726 +I00 +ssS'unique' +p24727 +(dp24728 +S'editable' +p24729 +I00 +sS'value' +p24730 +I00 +ssS'properties' +p24731 +(dp24732 +S'default_value' +p24733 +(dp24734 +S'editable' +p24735 +I00 +sS'value' +p24736 +NssS'summary_default' +p24737 +(dp24738 +S'editable' +p24739 +I01 +sS'value' +p24740 +S'none' +p24741 +sssS'description' +p24742 +(dp24743 +S'editable' +p24744 +I01 +sS'value' +p24745 +g47 +sssS'cached_display_name' +p24746 +(dp24747 +S'mandatory' +p24748 +(dp24749 +S'editable' +p24750 +I00 +sS'value' +p24751 +I00 +ssS'name' +p24752 +(dp24753 +S'editable' +p24754 +I01 +sS'value' +p24755 +S'Cached Display Name' +p24756 +ssS'data_type' +p24757 +(dp24758 +S'editable' +p24759 +I00 +sS'value' +p24760 +S'text' +p24761 +ssS'entity_type' +p24762 +(dp24763 +S'editable' +p24764 +I00 +sS'value' +p24765 +S'Icon' +p24766 +ssS'editable' +p24767 +(dp24768 +S'editable' +p24769 +I00 +sS'value' +p24770 +I00 +ssS'unique' +p24771 +(dp24772 +S'editable' +p24773 +I00 +sS'value' +p24774 +I00 +ssS'properties' +p24775 +(dp24776 +S'default_value' +p24777 +(dp24778 +S'editable' +p24779 +I00 +sS'value' +p24780 +NssS'summary_default' +p24781 +(dp24782 +S'editable' +p24783 +I00 +sS'value' +p24784 +S'none' +p24785 +sssS'description' +p24786 +(dp24787 +S'editable' +p24788 +I01 +sS'value' +p24789 +g47 +sssS'id' +p24790 +(dp24791 +S'mandatory' +p24792 +(dp24793 +S'editable' +p24794 +I00 +sS'value' +p24795 +I00 +ssS'name' +p24796 +(dp24797 +S'editable' +p24798 +I01 +sS'value' +p24799 +S'Id' +p24800 +ssS'data_type' +p24801 +(dp24802 +S'editable' +p24803 +I00 +sS'value' +p24804 +S'number' +p24805 +ssS'entity_type' +p24806 +(dp24807 +S'editable' +p24808 +I00 +sS'value' +p24809 +S'Icon' +p24810 +ssS'editable' +p24811 +(dp24812 +S'editable' +p24813 +I00 +sS'value' +p24814 +I00 +ssS'unique' +p24815 +(dp24816 +S'editable' +p24817 +I00 +sS'value' +p24818 +I00 +ssS'properties' +p24819 +(dp24820 +S'default_value' +p24821 +(dp24822 +S'editable' +p24823 +I00 +sS'value' +p24824 +NssS'summary_default' +p24825 +(dp24826 +S'editable' +p24827 +I00 +sS'value' +p24828 +S'none' +p24829 +sssS'description' +p24830 +(dp24831 +S'editable' +p24832 +I01 +sS'value' +p24833 +g47 +sssS'name' +p24834 +(dp24835 +S'mandatory' +p24836 +(dp24837 +S'editable' +p24838 +I00 +sS'value' +p24839 +I00 +ssS'name' +p24840 +(dp24841 +S'editable' +p24842 +I01 +sS'value' +p24843 +S'Status Name' +p24844 +ssS'data_type' +p24845 +(dp24846 +S'editable' +p24847 +I00 +sS'value' +p24848 +S'text' +p24849 +ssS'entity_type' +p24850 +(dp24851 +S'editable' +p24852 +I00 +sS'value' +p24853 +S'Icon' +p24854 +ssS'editable' +p24855 +(dp24856 +S'editable' +p24857 +I00 +sS'value' +p24858 +I00 +ssS'unique' +p24859 +(dp24860 +S'editable' +p24861 +I00 +sS'value' +p24862 +I00 +ssS'properties' +p24863 +(dp24864 +S'default_value' +p24865 +(dp24866 +S'editable' +p24867 +I00 +sS'value' +p24868 +NssS'summary_default' +p24869 +(dp24870 +S'editable' +p24871 +I01 +sS'value' +p24872 +S'none' +p24873 +sssS'description' +p24874 +(dp24875 +S'editable' +p24876 +I01 +sS'value' +p24877 +g47 +ssssS'LocalStorage' +p24878 +(dp24879 +S'code' +p24880 +(dp24881 +S'mandatory' +p24882 +(dp24883 +S'editable' +p24884 +I00 +sS'value' +p24885 +I01 +ssS'name' +p24886 +(dp24887 +S'editable' +p24888 +I01 +sS'value' +p24889 +S'Local Storage Name' +p24890 +ssS'data_type' +p24891 +(dp24892 +S'editable' +p24893 +I00 +sS'value' +p24894 +S'text' +p24895 +ssS'entity_type' +p24896 +(dp24897 +S'editable' +p24898 +I00 +sS'value' +p24899 +S'LocalStorage' +p24900 +ssS'editable' +p24901 +(dp24902 +S'editable' +p24903 +I00 +sS'value' +p24904 +I01 +ssS'unique' +p24905 +(dp24906 +S'editable' +p24907 +I00 +sS'value' +p24908 +I00 +ssS'properties' +p24909 +(dp24910 +S'default_value' +p24911 +(dp24912 +S'editable' +p24913 +I00 +sS'value' +p24914 +NssS'summary_default' +p24915 +(dp24916 +S'editable' +p24917 +I00 +sS'value' +p24918 +S'none' +p24919 +sssS'description' +p24920 +(dp24921 +S'editable' +p24922 +I01 +sS'value' +p24923 +g47 +sssS'uuid' +p24924 +(dp24925 +S'mandatory' +p24926 +(dp24927 +S'editable' +p24928 +I00 +sS'value' +p24929 +I00 +ssS'name' +p24930 +(dp24931 +S'editable' +p24932 +I01 +sS'value' +p24933 +S'UUID' +p24934 +ssS'data_type' +p24935 +(dp24936 +S'editable' +p24937 +I00 +sS'value' +p24938 +S'uuid' +p24939 +ssS'entity_type' +p24940 +(dp24941 +S'editable' +p24942 +I00 +sS'value' +p24943 +S'LocalStorage' +p24944 +ssS'editable' +p24945 +(dp24946 +S'editable' +p24947 +I00 +sS'value' +p24948 +I00 +ssS'unique' +p24949 +(dp24950 +S'editable' +p24951 +I00 +sS'value' +p24952 +I00 +ssS'properties' +p24953 +(dp24954 +S'default_value' +p24955 +(dp24956 +S'editable' +p24957 +I00 +sS'value' +p24958 +NssS'summary_default' +p24959 +(dp24960 +S'editable' +p24961 +I00 +sS'value' +p24962 +S'none' +p24963 +sssS'description' +p24964 +(dp24965 +S'editable' +p24966 +I01 +sS'value' +p24967 +g47 +sssS'mac_path' +p24968 +(dp24969 +S'mandatory' +p24970 +(dp24971 +S'editable' +p24972 +I00 +sS'value' +p24973 +I00 +ssS'name' +p24974 +(dp24975 +S'editable' +p24976 +I01 +sS'value' +p24977 +S'Mac Path' +p24978 +ssS'data_type' +p24979 +(dp24980 +S'editable' +p24981 +I00 +sS'value' +p24982 +S'text' +p24983 +ssS'entity_type' +p24984 +(dp24985 +S'editable' +p24986 +I00 +sS'value' +p24987 +S'LocalStorage' +p24988 +ssS'editable' +p24989 +(dp24990 +S'editable' +p24991 +I00 +sS'value' +p24992 +I01 +ssS'unique' +p24993 +(dp24994 +S'editable' +p24995 +I00 +sS'value' +p24996 +I00 +ssS'properties' +p24997 +(dp24998 +S'default_value' +p24999 +(dp25000 +S'editable' +p25001 +I00 +sS'value' +p25002 +NssS'summary_default' +p25003 +(dp25004 +S'editable' +p25005 +I00 +sS'value' +p25006 +S'none' +p25007 +sssS'description' +p25008 +(dp25009 +S'editable' +p25010 +I01 +sS'value' +p25011 +g47 +sssS'created_at' +p25012 +(dp25013 +S'mandatory' +p25014 +(dp25015 +S'editable' +p25016 +I00 +sS'value' +p25017 +I00 +ssS'name' +p25018 +(dp25019 +S'editable' +p25020 +I01 +sS'value' +p25021 +S'Date Created' +p25022 +ssS'data_type' +p25023 +(dp25024 +S'editable' +p25025 +I00 +sS'value' +p25026 +S'date_time' +p25027 +ssS'entity_type' +p25028 +(dp25029 +S'editable' +p25030 +I00 +sS'value' +p25031 +S'LocalStorage' +p25032 +ssS'editable' +p25033 +(dp25034 +S'editable' +p25035 +I00 +sS'value' +p25036 +I00 +ssS'unique' +p25037 +(dp25038 +S'editable' +p25039 +I00 +sS'value' +p25040 +I00 +ssS'properties' +p25041 +(dp25042 +S'default_value' +p25043 +(dp25044 +S'editable' +p25045 +I00 +sS'value' +p25046 +NssS'summary_default' +p25047 +(dp25048 +S'editable' +p25049 +I00 +sS'value' +p25050 +S'none' +p25051 +sssS'description' +p25052 +(dp25053 +S'editable' +p25054 +I01 +sS'value' +p25055 +g47 +sssS'updated_at' +p25056 +(dp25057 +S'mandatory' +p25058 +(dp25059 +S'editable' +p25060 +I00 +sS'value' +p25061 +I00 +ssS'name' +p25062 +(dp25063 +S'editable' +p25064 +I01 +sS'value' +p25065 +S'Date Updated' +p25066 +ssS'data_type' +p25067 +(dp25068 +S'editable' +p25069 +I00 +sS'value' +p25070 +S'date_time' +p25071 +ssS'entity_type' +p25072 +(dp25073 +S'editable' +p25074 +I00 +sS'value' +p25075 +S'LocalStorage' +p25076 +ssS'editable' +p25077 +(dp25078 +S'editable' +p25079 +I00 +sS'value' +p25080 +I00 +ssS'unique' +p25081 +(dp25082 +S'editable' +p25083 +I00 +sS'value' +p25084 +I00 +ssS'properties' +p25085 +(dp25086 +S'default_value' +p25087 +(dp25088 +S'editable' +p25089 +I00 +sS'value' +p25090 +NssS'summary_default' +p25091 +(dp25092 +S'editable' +p25093 +I00 +sS'value' +p25094 +S'none' +p25095 +sssS'description' +p25096 +(dp25097 +S'editable' +p25098 +I01 +sS'value' +p25099 +g47 +sssS'created_by' +p25100 +(dp25101 +S'mandatory' +p25102 +(dp25103 +S'editable' +p25104 +I00 +sS'value' +p25105 +I00 +ssS'name' +p25106 +(dp25107 +S'editable' +p25108 +I01 +sS'value' +p25109 +S'Created by' +p25110 +ssS'data_type' +p25111 +(dp25112 +S'editable' +p25113 +I00 +sS'value' +p25114 +S'entity' +p25115 +ssS'entity_type' +p25116 +(dp25117 +S'editable' +p25118 +I00 +sS'value' +p25119 +S'LocalStorage' +p25120 +ssS'editable' +p25121 +(dp25122 +S'editable' +p25123 +I00 +sS'value' +p25124 +I00 +ssS'unique' +p25125 +(dp25126 +S'editable' +p25127 +I00 +sS'value' +p25128 +I00 +ssS'properties' +p25129 +(dp25130 +S'default_value' +p25131 +(dp25132 +S'editable' +p25133 +I00 +sS'value' +p25134 +NssS'summary_default' +p25135 +(dp25136 +S'editable' +p25137 +I00 +sS'value' +p25138 +S'none' +p25139 +ssS'valid_types' +p25140 +(dp25141 +S'editable' +p25142 +I00 +sS'value' +p25143 +(lp25144 +S'HumanUser' +p25145 +aS'ApiUser' +p25146 +asssS'description' +p25147 +(dp25148 +S'editable' +p25149 +I01 +sS'value' +p25150 +g47 +sssS'windows_path' +p25151 +(dp25152 +S'mandatory' +p25153 +(dp25154 +S'editable' +p25155 +I00 +sS'value' +p25156 +I00 +ssS'name' +p25157 +(dp25158 +S'editable' +p25159 +I01 +sS'value' +p25160 +S'Windows Path' +p25161 +ssS'data_type' +p25162 +(dp25163 +S'editable' +p25164 +I00 +sS'value' +p25165 +S'text' +p25166 +ssS'entity_type' +p25167 +(dp25168 +S'editable' +p25169 +I00 +sS'value' +p25170 +S'LocalStorage' +p25171 +ssS'editable' +p25172 +(dp25173 +S'editable' +p25174 +I00 +sS'value' +p25175 +I01 +ssS'unique' +p25176 +(dp25177 +S'editable' +p25178 +I00 +sS'value' +p25179 +I00 +ssS'properties' +p25180 +(dp25181 +S'default_value' +p25182 +(dp25183 +S'editable' +p25184 +I00 +sS'value' +p25185 +NssS'summary_default' +p25186 +(dp25187 +S'editable' +p25188 +I00 +sS'value' +p25189 +S'none' +p25190 +sssS'description' +p25191 +(dp25192 +S'editable' +p25193 +I01 +sS'value' +p25194 +g47 +sssS'updated_by' +p25195 +(dp25196 +S'mandatory' +p25197 +(dp25198 +S'editable' +p25199 +I00 +sS'value' +p25200 +I00 +ssS'name' +p25201 +(dp25202 +S'editable' +p25203 +I01 +sS'value' +p25204 +S'Updated by' +p25205 +ssS'data_type' +p25206 +(dp25207 +S'editable' +p25208 +I00 +sS'value' +p25209 +S'entity' +p25210 +ssS'entity_type' +p25211 +(dp25212 +S'editable' +p25213 +I00 +sS'value' +p25214 +S'LocalStorage' +p25215 +ssS'editable' +p25216 +(dp25217 +S'editable' +p25218 +I00 +sS'value' +p25219 +I00 +ssS'unique' +p25220 +(dp25221 +S'editable' +p25222 +I00 +sS'value' +p25223 +I00 +ssS'properties' +p25224 +(dp25225 +S'default_value' +p25226 +(dp25227 +S'editable' +p25228 +I00 +sS'value' +p25229 +NssS'summary_default' +p25230 +(dp25231 +S'editable' +p25232 +I00 +sS'value' +p25233 +S'none' +p25234 +ssS'valid_types' +p25235 +(dp25236 +S'editable' +p25237 +I00 +sS'value' +p25238 +(lp25239 +S'HumanUser' +p25240 +aS'ApiUser' +p25241 +asssS'description' +p25242 +(dp25243 +S'editable' +p25244 +I01 +sS'value' +p25245 +g47 +sssS'cached_display_name' +p25246 +(dp25247 +S'mandatory' +p25248 +(dp25249 +S'editable' +p25250 +I00 +sS'value' +p25251 +I00 +ssS'name' +p25252 +(dp25253 +S'editable' +p25254 +I01 +sS'value' +p25255 +S'Cached Display Name' +p25256 +ssS'data_type' +p25257 +(dp25258 +S'editable' +p25259 +I00 +sS'value' +p25260 +S'text' +p25261 +ssS'entity_type' +p25262 +(dp25263 +S'editable' +p25264 +I00 +sS'value' +p25265 +S'LocalStorage' +p25266 +ssS'editable' +p25267 +(dp25268 +S'editable' +p25269 +I00 +sS'value' +p25270 +I01 +ssS'unique' +p25271 +(dp25272 +S'editable' +p25273 +I00 +sS'value' +p25274 +I00 +ssS'properties' +p25275 +(dp25276 +S'default_value' +p25277 +(dp25278 +S'editable' +p25279 +I00 +sS'value' +p25280 +NssS'summary_default' +p25281 +(dp25282 +S'editable' +p25283 +I00 +sS'value' +p25284 +S'none' +p25285 +sssS'description' +p25286 +(dp25287 +S'editable' +p25288 +I01 +sS'value' +p25289 +g47 +sssS'id' +p25290 +(dp25291 +S'mandatory' +p25292 +(dp25293 +S'editable' +p25294 +I00 +sS'value' +p25295 +I00 +ssS'name' +p25296 +(dp25297 +S'editable' +p25298 +I01 +sS'value' +p25299 +S'Id' +p25300 +ssS'data_type' +p25301 +(dp25302 +S'editable' +p25303 +I00 +sS'value' +p25304 +S'number' +p25305 +ssS'entity_type' +p25306 +(dp25307 +S'editable' +p25308 +I00 +sS'value' +p25309 +S'LocalStorage' +p25310 +ssS'editable' +p25311 +(dp25312 +S'editable' +p25313 +I00 +sS'value' +p25314 +I00 +ssS'unique' +p25315 +(dp25316 +S'editable' +p25317 +I00 +sS'value' +p25318 +I00 +ssS'properties' +p25319 +(dp25320 +S'default_value' +p25321 +(dp25322 +S'editable' +p25323 +I00 +sS'value' +p25324 +NssS'summary_default' +p25325 +(dp25326 +S'editable' +p25327 +I00 +sS'value' +p25328 +S'none' +p25329 +sssS'description' +p25330 +(dp25331 +S'editable' +p25332 +I01 +sS'value' +p25333 +g47 +sssS'linux_path' +p25334 +(dp25335 +S'mandatory' +p25336 +(dp25337 +S'editable' +p25338 +I00 +sS'value' +p25339 +I00 +ssS'name' +p25340 +(dp25341 +S'editable' +p25342 +I01 +sS'value' +p25343 +S'Linux Path' +p25344 +ssS'data_type' +p25345 +(dp25346 +S'editable' +p25347 +I00 +sS'value' +p25348 +S'text' +p25349 +ssS'entity_type' +p25350 +(dp25351 +S'editable' +p25352 +I00 +sS'value' +p25353 +S'LocalStorage' +p25354 +ssS'editable' +p25355 +(dp25356 +S'editable' +p25357 +I00 +sS'value' +p25358 +I01 +ssS'unique' +p25359 +(dp25360 +S'editable' +p25361 +I00 +sS'value' +p25362 +I00 +ssS'properties' +p25363 +(dp25364 +S'default_value' +p25365 +(dp25366 +S'editable' +p25367 +I00 +sS'value' +p25368 +NssS'summary_default' +p25369 +(dp25370 +S'editable' +p25371 +I00 +sS'value' +p25372 +S'none' +p25373 +sssS'description' +p25374 +(dp25375 +S'editable' +p25376 +I01 +sS'value' +p25377 +g47 +sssS'description' +p25378 +(dp25379 +S'mandatory' +p25380 +(dp25381 +S'editable' +p25382 +I00 +sS'value' +p25383 +I00 +ssS'name' +p25384 +(dp25385 +S'editable' +p25386 +I01 +sS'value' +p25387 +S'Description' +p25388 +ssS'data_type' +p25389 +(dp25390 +S'editable' +p25391 +I00 +sS'value' +p25392 +S'text' +p25393 +ssS'entity_type' +p25394 +(dp25395 +S'editable' +p25396 +I00 +sS'value' +p25397 +S'LocalStorage' +p25398 +ssS'editable' +p25399 +(dp25400 +S'editable' +p25401 +I00 +sS'value' +p25402 +I01 +ssS'unique' +p25403 +(dp25404 +S'editable' +p25405 +I00 +sS'value' +p25406 +I00 +ssS'properties' +p25407 +(dp25408 +S'default_value' +p25409 +(dp25410 +S'editable' +p25411 +I00 +sS'value' +p25412 +NssS'summary_default' +p25413 +(dp25414 +S'editable' +p25415 +I00 +sS'value' +p25416 +S'none' +p25417 +sssS'description' +p25418 +(dp25419 +S'editable' +p25420 +I01 +sS'value' +p25421 +g47 +ssssS'TaskTemplate' +p25422 +(dp25423 +S'open_notes_count' +p25424 +(dp25425 +S'mandatory' +p25426 +(dp25427 +S'editable' +p25428 +I00 +sS'value' +p25429 +I00 +ssS'name' +p25430 +(dp25431 +S'editable' +p25432 +I01 +sS'value' +p25433 +S'Open Notes Count' +p25434 +ssS'data_type' +p25435 +(dp25436 +S'editable' +p25437 +I00 +sS'value' +p25438 +S'text' +p25439 +ssS'entity_type' +p25440 +(dp25441 +S'editable' +p25442 +I00 +sS'value' +p25443 +S'TaskTemplate' +p25444 +ssS'editable' +p25445 +(dp25446 +S'editable' +p25447 +I00 +sS'value' +p25448 +I00 +ssS'unique' +p25449 +(dp25450 +S'editable' +p25451 +I00 +sS'value' +p25452 +I00 +ssS'properties' +p25453 +(dp25454 +S'default_value' +p25455 +(dp25456 +S'editable' +p25457 +I00 +sS'value' +p25458 +NssS'summary_default' +p25459 +(dp25460 +S'editable' +p25461 +I01 +sS'value' +p25462 +S'none' +p25463 +sssS'description' +p25464 +(dp25465 +S'editable' +p25466 +I01 +sS'value' +p25467 +g47 +sssS'code' +p25468 +(dp25469 +S'mandatory' +p25470 +(dp25471 +S'editable' +p25472 +I00 +sS'value' +p25473 +I01 +ssS'name' +p25474 +(dp25475 +S'editable' +p25476 +I01 +sS'value' +p25477 +S'Task Template Name' +p25478 +ssS'data_type' +p25479 +(dp25480 +S'editable' +p25481 +I00 +sS'value' +p25482 +S'text' +p25483 +ssS'entity_type' +p25484 +(dp25485 +S'editable' +p25486 +I00 +sS'value' +p25487 +S'TaskTemplate' +p25488 +ssS'editable' +p25489 +(dp25490 +S'editable' +p25491 +I00 +sS'value' +p25492 +I01 +ssS'unique' +p25493 +(dp25494 +S'editable' +p25495 +I00 +sS'value' +p25496 +I00 +ssS'properties' +p25497 +(dp25498 +S'default_value' +p25499 +(dp25500 +S'editable' +p25501 +I00 +sS'value' +p25502 +NssS'summary_default' +p25503 +(dp25504 +S'editable' +p25505 +I01 +sS'value' +p25506 +S'none' +p25507 +sssS'description' +p25508 +(dp25509 +S'editable' +p25510 +I01 +sS'value' +p25511 +g47 +sssS'open_notes' +p25512 +(dp25513 +S'mandatory' +p25514 +(dp25515 +S'editable' +p25516 +I00 +sS'value' +p25517 +I00 +ssS'name' +p25518 +(dp25519 +S'editable' +p25520 +I01 +sS'value' +p25521 +S'Open Notes' +p25522 +ssS'data_type' +p25523 +(dp25524 +S'editable' +p25525 +I00 +sS'value' +p25526 +S'multi_entity' +p25527 +ssS'entity_type' +p25528 +(dp25529 +S'editable' +p25530 +I00 +sS'value' +p25531 +S'TaskTemplate' +p25532 +ssS'editable' +p25533 +(dp25534 +S'editable' +p25535 +I00 +sS'value' +p25536 +I00 +ssS'unique' +p25537 +(dp25538 +S'editable' +p25539 +I00 +sS'value' +p25540 +I00 +ssS'properties' +p25541 +(dp25542 +S'default_value' +p25543 +(dp25544 +S'editable' +p25545 +I00 +sS'value' +p25546 +NssS'summary_default' +p25547 +(dp25548 +S'editable' +p25549 +I01 +sS'value' +p25550 +S'none' +p25551 +ssS'valid_types' +p25552 +(dp25553 +S'editable' +p25554 +I01 +sS'value' +p25555 +(lp25556 +S'Note' +p25557 +asssS'description' +p25558 +(dp25559 +S'editable' +p25560 +I01 +sS'value' +p25561 +g47 +sssS'description' +p25562 +(dp25563 +S'mandatory' +p25564 +(dp25565 +S'editable' +p25566 +I00 +sS'value' +p25567 +I00 +ssS'name' +p25568 +(dp25569 +S'editable' +p25570 +I01 +sS'value' +p25571 +S'Description' +p25572 +ssS'data_type' +p25573 +(dp25574 +S'editable' +p25575 +I00 +sS'value' +p25576 +S'text' +p25577 +ssS'entity_type' +p25578 +(dp25579 +S'editable' +p25580 +I00 +sS'value' +p25581 +S'TaskTemplate' +p25582 +ssS'editable' +p25583 +(dp25584 +S'editable' +p25585 +I00 +sS'value' +p25586 +I01 +ssS'unique' +p25587 +(dp25588 +S'editable' +p25589 +I00 +sS'value' +p25590 +I00 +ssS'properties' +p25591 +(dp25592 +S'default_value' +p25593 +(dp25594 +S'editable' +p25595 +I00 +sS'value' +p25596 +NssS'summary_default' +p25597 +(dp25598 +S'editable' +p25599 +I01 +sS'value' +p25600 +S'none' +p25601 +sssS'description' +p25602 +(dp25603 +S'editable' +p25604 +I01 +sS'value' +p25605 +g47 +sssS'entity_type' +p25606 +(dp25607 +S'mandatory' +p25608 +(dp25609 +S'editable' +p25610 +I00 +sS'value' +p25611 +I00 +ssS'name' +p25612 +(dp25613 +S'editable' +p25614 +I01 +sS'value' +p25615 +S'Entity Type' +p25616 +ssS'data_type' +p25617 +(dp25618 +S'editable' +p25619 +I00 +sS'value' +p25620 +S'entity_type' +p25621 +ssS'entity_type' +p25622 +(dp25623 +S'editable' +p25624 +I00 +sS'value' +p25625 +S'TaskTemplate' +p25626 +ssS'editable' +p25627 +(dp25628 +S'editable' +p25629 +I00 +sS'value' +p25630 +I00 +ssS'unique' +p25631 +(dp25632 +S'editable' +p25633 +I00 +sS'value' +p25634 +I00 +ssS'properties' +p25635 +(dp25636 +S'default_value' +p25637 +(dp25638 +S'editable' +p25639 +I00 +sS'value' +p25640 +NssS'summary_default' +p25641 +(dp25642 +S'editable' +p25643 +I01 +sS'value' +p25644 +S'none' +p25645 +sssS'description' +p25646 +(dp25647 +S'editable' +p25648 +I01 +sS'value' +p25649 +g47 +sssS'notes' +p25650 +(dp25651 +S'mandatory' +p25652 +(dp25653 +S'editable' +p25654 +I00 +sS'value' +p25655 +I00 +ssS'name' +p25656 +(dp25657 +S'editable' +p25658 +I01 +sS'value' +p25659 +S'Notes' +p25660 +ssS'data_type' +p25661 +(dp25662 +S'editable' +p25663 +I00 +sS'value' +p25664 +S'multi_entity' +p25665 +ssS'entity_type' +p25666 +(dp25667 +S'editable' +p25668 +I00 +sS'value' +p25669 +S'TaskTemplate' +p25670 +ssS'editable' +p25671 +(dp25672 +S'editable' +p25673 +I00 +sS'value' +p25674 +I01 +ssS'unique' +p25675 +(dp25676 +S'editable' +p25677 +I00 +sS'value' +p25678 +I00 +ssS'properties' +p25679 +(dp25680 +S'default_value' +p25681 +(dp25682 +S'editable' +p25683 +I00 +sS'value' +p25684 +NssS'summary_default' +p25685 +(dp25686 +S'editable' +p25687 +I01 +sS'value' +p25688 +S'none' +p25689 +ssS'valid_types' +p25690 +(dp25691 +S'editable' +p25692 +I01 +sS'value' +p25693 +(lp25694 +S'Note' +p25695 +asssS'description' +p25696 +(dp25697 +S'editable' +p25698 +I01 +sS'value' +p25699 +g47 +sssS'created_at' +p25700 +(dp25701 +S'mandatory' +p25702 +(dp25703 +S'editable' +p25704 +I00 +sS'value' +p25705 +I00 +ssS'name' +p25706 +(dp25707 +S'editable' +p25708 +I01 +sS'value' +p25709 +S'Date Created' +p25710 +ssS'data_type' +p25711 +(dp25712 +S'editable' +p25713 +I00 +sS'value' +p25714 +S'date_time' +p25715 +ssS'entity_type' +p25716 +(dp25717 +S'editable' +p25718 +I00 +sS'value' +p25719 +S'TaskTemplate' +p25720 +ssS'editable' +p25721 +(dp25722 +S'editable' +p25723 +I00 +sS'value' +p25724 +I00 +ssS'unique' +p25725 +(dp25726 +S'editable' +p25727 +I00 +sS'value' +p25728 +I00 +ssS'properties' +p25729 +(dp25730 +S'default_value' +p25731 +(dp25732 +S'editable' +p25733 +I00 +sS'value' +p25734 +NssS'summary_default' +p25735 +(dp25736 +S'editable' +p25737 +I01 +sS'value' +p25738 +S'none' +p25739 +sssS'description' +p25740 +(dp25741 +S'editable' +p25742 +I01 +sS'value' +p25743 +g47 +sssS'updated_at' +p25744 +(dp25745 +S'mandatory' +p25746 +(dp25747 +S'editable' +p25748 +I00 +sS'value' +p25749 +I00 +ssS'name' +p25750 +(dp25751 +S'editable' +p25752 +I01 +sS'value' +p25753 +S'Date Updated' +p25754 +ssS'data_type' +p25755 +(dp25756 +S'editable' +p25757 +I00 +sS'value' +p25758 +S'date_time' +p25759 +ssS'entity_type' +p25760 +(dp25761 +S'editable' +p25762 +I00 +sS'value' +p25763 +S'TaskTemplate' +p25764 +ssS'editable' +p25765 +(dp25766 +S'editable' +p25767 +I00 +sS'value' +p25768 +I00 +ssS'unique' +p25769 +(dp25770 +S'editable' +p25771 +I00 +sS'value' +p25772 +I00 +ssS'properties' +p25773 +(dp25774 +S'default_value' +p25775 +(dp25776 +S'editable' +p25777 +I00 +sS'value' +p25778 +NssS'summary_default' +p25779 +(dp25780 +S'editable' +p25781 +I01 +sS'value' +p25782 +S'none' +p25783 +sssS'description' +p25784 +(dp25785 +S'editable' +p25786 +I01 +sS'value' +p25787 +g47 +sssS'created_by' +p25788 +(dp25789 +S'mandatory' +p25790 +(dp25791 +S'editable' +p25792 +I00 +sS'value' +p25793 +I00 +ssS'name' +p25794 +(dp25795 +S'editable' +p25796 +I01 +sS'value' +p25797 +S'Created by' +p25798 +ssS'data_type' +p25799 +(dp25800 +S'editable' +p25801 +I00 +sS'value' +p25802 +S'entity' +p25803 +ssS'entity_type' +p25804 +(dp25805 +S'editable' +p25806 +I00 +sS'value' +p25807 +S'TaskTemplate' +p25808 +ssS'editable' +p25809 +(dp25810 +S'editable' +p25811 +I00 +sS'value' +p25812 +I00 +ssS'unique' +p25813 +(dp25814 +S'editable' +p25815 +I00 +sS'value' +p25816 +I00 +ssS'properties' +p25817 +(dp25818 +S'default_value' +p25819 +(dp25820 +S'editable' +p25821 +I00 +sS'value' +p25822 +NssS'summary_default' +p25823 +(dp25824 +S'editable' +p25825 +I01 +sS'value' +p25826 +S'none' +p25827 +ssS'valid_types' +p25828 +(dp25829 +S'editable' +p25830 +I01 +sS'value' +p25831 +(lp25832 +S'HumanUser' +p25833 +aS'ApiUser' +p25834 +asssS'description' +p25835 +(dp25836 +S'editable' +p25837 +I01 +sS'value' +p25838 +g47 +sssS'task_count' +p25839 +(dp25840 +S'mandatory' +p25841 +(dp25842 +S'editable' +p25843 +I00 +sS'value' +p25844 +I00 +ssS'name' +p25845 +(dp25846 +S'editable' +p25847 +I01 +sS'value' +p25848 +S'Tasks' +p25849 +ssS'data_type' +p25850 +(dp25851 +S'editable' +p25852 +I00 +sS'value' +p25853 +S'number' +p25854 +ssS'entity_type' +p25855 +(dp25856 +S'editable' +p25857 +I00 +sS'value' +p25858 +S'TaskTemplate' +p25859 +ssS'editable' +p25860 +(dp25861 +S'editable' +p25862 +I00 +sS'value' +p25863 +I00 +ssS'unique' +p25864 +(dp25865 +S'editable' +p25866 +I00 +sS'value' +p25867 +I00 +ssS'properties' +p25868 +(dp25869 +S'default_value' +p25870 +(dp25871 +S'editable' +p25872 +I00 +sS'value' +p25873 +NssS'summary_default' +p25874 +(dp25875 +S'editable' +p25876 +I01 +sS'value' +p25877 +S'none' +p25878 +sssS'description' +p25879 +(dp25880 +S'editable' +p25881 +I01 +sS'value' +p25882 +g47 +sssS'cached_display_name' +p25883 +(dp25884 +S'mandatory' +p25885 +(dp25886 +S'editable' +p25887 +I00 +sS'value' +p25888 +I00 +ssS'name' +p25889 +(dp25890 +S'editable' +p25891 +I01 +sS'value' +p25892 +S'Cached Display Name' +p25893 +ssS'data_type' +p25894 +(dp25895 +S'editable' +p25896 +I00 +sS'value' +p25897 +S'text' +p25898 +ssS'entity_type' +p25899 +(dp25900 +S'editable' +p25901 +I00 +sS'value' +p25902 +S'TaskTemplate' +p25903 +ssS'editable' +p25904 +(dp25905 +S'editable' +p25906 +I00 +sS'value' +p25907 +I01 +ssS'unique' +p25908 +(dp25909 +S'editable' +p25910 +I00 +sS'value' +p25911 +I00 +ssS'properties' +p25912 +(dp25913 +S'default_value' +p25914 +(dp25915 +S'editable' +p25916 +I00 +sS'value' +p25917 +NssS'summary_default' +p25918 +(dp25919 +S'editable' +p25920 +I00 +sS'value' +p25921 +S'none' +p25922 +sssS'description' +p25923 +(dp25924 +S'editable' +p25925 +I01 +sS'value' +p25926 +g47 +sssS'id' +p25927 +(dp25928 +S'mandatory' +p25929 +(dp25930 +S'editable' +p25931 +I00 +sS'value' +p25932 +I00 +ssS'name' +p25933 +(dp25934 +S'editable' +p25935 +I01 +sS'value' +p25936 +S'Id' +p25937 +ssS'data_type' +p25938 +(dp25939 +S'editable' +p25940 +I00 +sS'value' +p25941 +S'number' +p25942 +ssS'entity_type' +p25943 +(dp25944 +S'editable' +p25945 +I00 +sS'value' +p25946 +S'TaskTemplate' +p25947 +ssS'editable' +p25948 +(dp25949 +S'editable' +p25950 +I00 +sS'value' +p25951 +I00 +ssS'unique' +p25952 +(dp25953 +S'editable' +p25954 +I00 +sS'value' +p25955 +I00 +ssS'properties' +p25956 +(dp25957 +S'default_value' +p25958 +(dp25959 +S'editable' +p25960 +I00 +sS'value' +p25961 +NssS'summary_default' +p25962 +(dp25963 +S'editable' +p25964 +I01 +sS'value' +p25965 +S'none' +p25966 +sssS'description' +p25967 +(dp25968 +S'editable' +p25969 +I01 +sS'value' +p25970 +g47 +sssS'updated_by' +p25971 +(dp25972 +S'mandatory' +p25973 +(dp25974 +S'editable' +p25975 +I00 +sS'value' +p25976 +I00 +ssS'name' +p25977 +(dp25978 +S'editable' +p25979 +I01 +sS'value' +p25980 +S'Updated by' +p25981 +ssS'data_type' +p25982 +(dp25983 +S'editable' +p25984 +I00 +sS'value' +p25985 +S'entity' +p25986 +ssS'entity_type' +p25987 +(dp25988 +S'editable' +p25989 +I00 +sS'value' +p25990 +S'TaskTemplate' +p25991 +ssS'editable' +p25992 +(dp25993 +S'editable' +p25994 +I00 +sS'value' +p25995 +I00 +ssS'unique' +p25996 +(dp25997 +S'editable' +p25998 +I00 +sS'value' +p25999 +I00 +ssS'properties' +p26000 +(dp26001 +S'default_value' +p26002 +(dp26003 +S'editable' +p26004 +I00 +sS'value' +p26005 +NssS'summary_default' +p26006 +(dp26007 +S'editable' +p26008 +I01 +sS'value' +p26009 +S'none' +p26010 +ssS'valid_types' +p26011 +(dp26012 +S'editable' +p26013 +I01 +sS'value' +p26014 +(lp26015 +S'HumanUser' +p26016 +aS'ApiUser' +p26017 +asssS'description' +p26018 +(dp26019 +S'editable' +p26020 +I01 +sS'value' +p26021 +g47 +ssssS'RevisionTicketConnection' +p26022 +(dp26023 +S'id' +p26024 +(dp26025 +S'mandatory' +p26026 +(dp26027 +S'editable' +p26028 +I00 +sS'value' +p26029 +I01 +ssS'name' +p26030 +(dp26031 +S'editable' +p26032 +I01 +sS'value' +p26033 +S'Id' +p26034 +ssS'data_type' +p26035 +(dp26036 +S'editable' +p26037 +I00 +sS'value' +p26038 +S'number' +p26039 +ssS'entity_type' +p26040 +(dp26041 +S'editable' +p26042 +I00 +sS'value' +p26043 +S'RevisionTicketConnection' +p26044 +ssS'editable' +p26045 +(dp26046 +S'editable' +p26047 +I00 +sS'value' +p26048 +I00 +ssS'unique' +p26049 +(dp26050 +S'editable' +p26051 +I00 +sS'value' +p26052 +I00 +ssS'properties' +p26053 +(dp26054 +S'default_value' +p26055 +(dp26056 +S'editable' +p26057 +I00 +sS'value' +p26058 +NssS'summary_default' +p26059 +(dp26060 +S'editable' +p26061 +I00 +sS'value' +p26062 +S'none' +p26063 +sssS'description' +p26064 +(dp26065 +S'editable' +p26066 +I01 +sS'value' +p26067 +g47 +sssS'cached_display_name' +p26068 +(dp26069 +S'mandatory' +p26070 +(dp26071 +S'editable' +p26072 +I00 +sS'value' +p26073 +I00 +ssS'name' +p26074 +(dp26075 +S'editable' +p26076 +I01 +sS'value' +p26077 +S'Cached Display Name' +p26078 +ssS'data_type' +p26079 +(dp26080 +S'editable' +p26081 +I00 +sS'value' +p26082 +S'text' +p26083 +ssS'entity_type' +p26084 +(dp26085 +S'editable' +p26086 +I00 +sS'value' +p26087 +S'RevisionTicketConnection' +p26088 +ssS'editable' +p26089 +(dp26090 +S'editable' +p26091 +I00 +sS'value' +p26092 +I01 +ssS'unique' +p26093 +(dp26094 +S'editable' +p26095 +I00 +sS'value' +p26096 +I00 +ssS'properties' +p26097 +(dp26098 +S'default_value' +p26099 +(dp26100 +S'editable' +p26101 +I00 +sS'value' +p26102 +NssS'summary_default' +p26103 +(dp26104 +S'editable' +p26105 +I00 +sS'value' +p26106 +S'none' +p26107 +sssS'description' +p26108 +(dp26109 +S'editable' +p26110 +I01 +sS'value' +p26111 +g47 +sssS'ticket' +p26112 +(dp26113 +S'mandatory' +p26114 +(dp26115 +S'editable' +p26116 +I00 +sS'value' +p26117 +I00 +ssS'name' +p26118 +(dp26119 +S'editable' +p26120 +I01 +sS'value' +p26121 +S'Ticket' +p26122 +ssS'data_type' +p26123 +(dp26124 +S'editable' +p26125 +I00 +sS'value' +p26126 +S'entity' +p26127 +ssS'entity_type' +p26128 +(dp26129 +S'editable' +p26130 +I00 +sS'value' +p26131 +S'RevisionTicketConnection' +p26132 +ssS'editable' +p26133 +(dp26134 +S'editable' +p26135 +I00 +sS'value' +p26136 +I00 +ssS'unique' +p26137 +(dp26138 +S'editable' +p26139 +I00 +sS'value' +p26140 +I00 +ssS'properties' +p26141 +(dp26142 +S'default_value' +p26143 +(dp26144 +S'editable' +p26145 +I00 +sS'value' +p26146 +NssS'summary_default' +p26147 +(dp26148 +S'editable' +p26149 +I00 +sS'value' +p26150 +S'none' +p26151 +ssS'valid_types' +p26152 +(dp26153 +S'editable' +p26154 +I00 +sS'value' +p26155 +(lp26156 +S'Ticket' +p26157 +asssS'description' +p26158 +(dp26159 +S'editable' +p26160 +I01 +sS'value' +p26161 +g47 +sssS'revision' +p26162 +(dp26163 +S'mandatory' +p26164 +(dp26165 +S'editable' +p26166 +I00 +sS'value' +p26167 +I00 +ssS'name' +p26168 +(dp26169 +S'editable' +p26170 +I01 +sS'value' +p26171 +S'Revision' +p26172 +ssS'data_type' +p26173 +(dp26174 +S'editable' +p26175 +I00 +sS'value' +p26176 +S'entity' +p26177 +ssS'entity_type' +p26178 +(dp26179 +S'editable' +p26180 +I00 +sS'value' +p26181 +S'RevisionTicketConnection' +p26182 +ssS'editable' +p26183 +(dp26184 +S'editable' +p26185 +I00 +sS'value' +p26186 +I00 +ssS'unique' +p26187 +(dp26188 +S'editable' +p26189 +I00 +sS'value' +p26190 +I00 +ssS'properties' +p26191 +(dp26192 +S'default_value' +p26193 +(dp26194 +S'editable' +p26195 +I00 +sS'value' +p26196 +NssS'summary_default' +p26197 +(dp26198 +S'editable' +p26199 +I00 +sS'value' +p26200 +S'none' +p26201 +ssS'valid_types' +p26202 +(dp26203 +S'editable' +p26204 +I00 +sS'value' +p26205 +(lp26206 +S'Revision' +p26207 +asssS'description' +p26208 +(dp26209 +S'editable' +p26210 +I01 +sS'value' +p26211 +g47 +ssssS'PerformerShootDayConnection' +p26212 +(dp26213 +S'cached_display_name' +p26214 +(dp26215 +S'mandatory' +p26216 +(dp26217 +S'editable' +p26218 +I00 +sS'value' +p26219 +I00 +ssS'name' +p26220 +(dp26221 +S'editable' +p26222 +I01 +sS'value' +p26223 +S'Cached Display Name' +p26224 +ssS'data_type' +p26225 +(dp26226 +S'editable' +p26227 +I00 +sS'value' +p26228 +S'text' +p26229 +ssS'entity_type' +p26230 +(dp26231 +S'editable' +p26232 +I00 +sS'value' +p26233 +S'PerformerShootDayConnection' +p26234 +ssS'editable' +p26235 +(dp26236 +S'editable' +p26237 +I00 +sS'value' +p26238 +I01 +ssS'unique' +p26239 +(dp26240 +S'editable' +p26241 +I00 +sS'value' +p26242 +I00 +ssS'properties' +p26243 +(dp26244 +S'default_value' +p26245 +(dp26246 +S'editable' +p26247 +I00 +sS'value' +p26248 +NssS'summary_default' +p26249 +(dp26250 +S'editable' +p26251 +I00 +sS'value' +p26252 +S'none' +p26253 +sssS'description' +p26254 +(dp26255 +S'editable' +p26256 +I01 +sS'value' +p26257 +g47 +sssS'performer' +p26258 +(dp26259 +S'mandatory' +p26260 +(dp26261 +S'editable' +p26262 +I00 +sS'value' +p26263 +I00 +ssS'name' +p26264 +(dp26265 +S'editable' +p26266 +I01 +sS'value' +p26267 +S'Performer' +p26268 +ssS'data_type' +p26269 +(dp26270 +S'editable' +p26271 +I00 +sS'value' +p26272 +S'entity' +p26273 +ssS'entity_type' +p26274 +(dp26275 +S'editable' +p26276 +I00 +sS'value' +p26277 +S'PerformerShootDayConnection' +p26278 +ssS'editable' +p26279 +(dp26280 +S'editable' +p26281 +I00 +sS'value' +p26282 +I00 +ssS'unique' +p26283 +(dp26284 +S'editable' +p26285 +I00 +sS'value' +p26286 +I00 +ssS'properties' +p26287 +(dp26288 +S'default_value' +p26289 +(dp26290 +S'editable' +p26291 +I00 +sS'value' +p26292 +NssS'summary_default' +p26293 +(dp26294 +S'editable' +p26295 +I00 +sS'value' +p26296 +S'none' +p26297 +ssS'valid_types' +p26298 +(dp26299 +S'editable' +p26300 +I00 +sS'value' +p26301 +(lp26302 +S'Performer' +p26303 +asssS'description' +p26304 +(dp26305 +S'editable' +p26306 +I01 +sS'value' +p26307 +g47 +sssS'id' +p26308 +(dp26309 +S'mandatory' +p26310 +(dp26311 +S'editable' +p26312 +I00 +sS'value' +p26313 +I01 +ssS'name' +p26314 +(dp26315 +S'editable' +p26316 +I01 +sS'value' +p26317 +S'Id' +p26318 +ssS'data_type' +p26319 +(dp26320 +S'editable' +p26321 +I00 +sS'value' +p26322 +S'number' +p26323 +ssS'entity_type' +p26324 +(dp26325 +S'editable' +p26326 +I00 +sS'value' +p26327 +S'PerformerShootDayConnection' +p26328 +ssS'editable' +p26329 +(dp26330 +S'editable' +p26331 +I00 +sS'value' +p26332 +I00 +ssS'unique' +p26333 +(dp26334 +S'editable' +p26335 +I00 +sS'value' +p26336 +I00 +ssS'properties' +p26337 +(dp26338 +S'default_value' +p26339 +(dp26340 +S'editable' +p26341 +I00 +sS'value' +p26342 +NssS'summary_default' +p26343 +(dp26344 +S'editable' +p26345 +I00 +sS'value' +p26346 +S'none' +p26347 +sssS'description' +p26348 +(dp26349 +S'editable' +p26350 +I01 +sS'value' +p26351 +g47 +sssS'shoot_day' +p26352 +(dp26353 +S'mandatory' +p26354 +(dp26355 +S'editable' +p26356 +I00 +sS'value' +p26357 +I00 +ssS'name' +p26358 +(dp26359 +S'editable' +p26360 +I01 +sS'value' +p26361 +S'Shoot Day' +p26362 +ssS'data_type' +p26363 +(dp26364 +S'editable' +p26365 +I00 +sS'value' +p26366 +S'entity' +p26367 +ssS'entity_type' +p26368 +(dp26369 +S'editable' +p26370 +I00 +sS'value' +p26371 +S'PerformerShootDayConnection' +p26372 +ssS'editable' +p26373 +(dp26374 +S'editable' +p26375 +I00 +sS'value' +p26376 +I00 +ssS'unique' +p26377 +(dp26378 +S'editable' +p26379 +I00 +sS'value' +p26380 +I00 +ssS'properties' +p26381 +(dp26382 +S'default_value' +p26383 +(dp26384 +S'editable' +p26385 +I00 +sS'value' +p26386 +NssS'summary_default' +p26387 +(dp26388 +S'editable' +p26389 +I00 +sS'value' +p26390 +S'none' +p26391 +ssS'valid_types' +p26392 +(dp26393 +S'editable' +p26394 +I00 +sS'value' +p26395 +(lp26396 +S'ShootDay' +p26397 +asssS'description' +p26398 +(dp26399 +S'editable' +p26400 +I01 +sS'value' +p26401 +g47 +ssssS'PipelineConfiguration' +p26402 +(dp26403 +S'code' +p26404 +(dp26405 +S'mandatory' +p26406 +(dp26407 +S'editable' +p26408 +I00 +sS'value' +p26409 +I01 +ssS'name' +p26410 +(dp26411 +S'editable' +p26412 +I01 +sS'value' +p26413 +S'Config Name' +p26414 +ssS'data_type' +p26415 +(dp26416 +S'editable' +p26417 +I00 +sS'value' +p26418 +S'text' +p26419 +ssS'entity_type' +p26420 +(dp26421 +S'editable' +p26422 +I00 +sS'value' +p26423 +S'PipelineConfiguration' +p26424 +ssS'editable' +p26425 +(dp26426 +S'editable' +p26427 +I00 +sS'value' +p26428 +I01 +ssS'unique' +p26429 +(dp26430 +S'editable' +p26431 +I00 +sS'value' +p26432 +I00 +ssS'properties' +p26433 +(dp26434 +S'default_value' +p26435 +(dp26436 +S'editable' +p26437 +I00 +sS'value' +p26438 +NssS'summary_default' +p26439 +(dp26440 +S'editable' +p26441 +I00 +sS'value' +p26442 +S'none' +p26443 +sssS'description' +p26444 +(dp26445 +S'editable' +p26446 +I01 +sS'value' +p26447 +g47 +sssS'users' +p26448 +(dp26449 +S'mandatory' +p26450 +(dp26451 +S'editable' +p26452 +I00 +sS'value' +p26453 +I00 +ssS'name' +p26454 +(dp26455 +S'editable' +p26456 +I01 +sS'value' +p26457 +S'User Restrictions' +p26458 +ssS'data_type' +p26459 +(dp26460 +S'editable' +p26461 +I00 +sS'value' +p26462 +S'multi_entity' +p26463 +ssS'entity_type' +p26464 +(dp26465 +S'editable' +p26466 +I00 +sS'value' +p26467 +S'PipelineConfiguration' +p26468 +ssS'editable' +p26469 +(dp26470 +S'editable' +p26471 +I00 +sS'value' +p26472 +I01 +ssS'unique' +p26473 +(dp26474 +S'editable' +p26475 +I00 +sS'value' +p26476 +I00 +ssS'properties' +p26477 +(dp26478 +S'default_value' +p26479 +(dp26480 +S'editable' +p26481 +I00 +sS'value' +p26482 +NssS'summary_default' +p26483 +(dp26484 +S'editable' +p26485 +I00 +sS'value' +p26486 +S'none' +p26487 +ssS'valid_types' +p26488 +(dp26489 +S'editable' +p26490 +I00 +sS'value' +p26491 +(lp26492 +S'HumanUser' +p26493 +asssS'description' +p26494 +(dp26495 +S'editable' +p26496 +I01 +sS'value' +p26497 +g47 +sssS'mac_path' +p26498 +(dp26499 +S'mandatory' +p26500 +(dp26501 +S'editable' +p26502 +I00 +sS'value' +p26503 +I00 +ssS'name' +p26504 +(dp26505 +S'editable' +p26506 +I01 +sS'value' +p26507 +S'Mac Path' +p26508 +ssS'data_type' +p26509 +(dp26510 +S'editable' +p26511 +I00 +sS'value' +p26512 +S'text' +p26513 +ssS'entity_type' +p26514 +(dp26515 +S'editable' +p26516 +I00 +sS'value' +p26517 +S'PipelineConfiguration' +p26518 +ssS'editable' +p26519 +(dp26520 +S'editable' +p26521 +I00 +sS'value' +p26522 +I01 +ssS'unique' +p26523 +(dp26524 +S'editable' +p26525 +I00 +sS'value' +p26526 +I00 +ssS'properties' +p26527 +(dp26528 +S'default_value' +p26529 +(dp26530 +S'editable' +p26531 +I00 +sS'value' +p26532 +NssS'summary_default' +p26533 +(dp26534 +S'editable' +p26535 +I00 +sS'value' +p26536 +S'none' +p26537 +sssS'description' +p26538 +(dp26539 +S'editable' +p26540 +I01 +sS'value' +p26541 +g47 +sssS'created_at' +p26542 +(dp26543 +S'mandatory' +p26544 +(dp26545 +S'editable' +p26546 +I00 +sS'value' +p26547 +I00 +ssS'name' +p26548 +(dp26549 +S'editable' +p26550 +I01 +sS'value' +p26551 +S'Date Created' +p26552 +ssS'data_type' +p26553 +(dp26554 +S'editable' +p26555 +I00 +sS'value' +p26556 +S'date_time' +p26557 +ssS'entity_type' +p26558 +(dp26559 +S'editable' +p26560 +I00 +sS'value' +p26561 +S'PipelineConfiguration' +p26562 +ssS'editable' +p26563 +(dp26564 +S'editable' +p26565 +I00 +sS'value' +p26566 +I00 +ssS'unique' +p26567 +(dp26568 +S'editable' +p26569 +I00 +sS'value' +p26570 +I00 +ssS'properties' +p26571 +(dp26572 +S'default_value' +p26573 +(dp26574 +S'editable' +p26575 +I00 +sS'value' +p26576 +NssS'summary_default' +p26577 +(dp26578 +S'editable' +p26579 +I01 +sS'value' +p26580 +S'none' +p26581 +sssS'description' +p26582 +(dp26583 +S'editable' +p26584 +I01 +sS'value' +p26585 +g47 +sssS'updated_at' +p26586 +(dp26587 +S'mandatory' +p26588 +(dp26589 +S'editable' +p26590 +I00 +sS'value' +p26591 +I00 +ssS'name' +p26592 +(dp26593 +S'editable' +p26594 +I01 +sS'value' +p26595 +S'Date Updated' +p26596 +ssS'data_type' +p26597 +(dp26598 +S'editable' +p26599 +I00 +sS'value' +p26600 +S'date_time' +p26601 +ssS'entity_type' +p26602 +(dp26603 +S'editable' +p26604 +I00 +sS'value' +p26605 +S'PipelineConfiguration' +p26606 +ssS'editable' +p26607 +(dp26608 +S'editable' +p26609 +I00 +sS'value' +p26610 +I00 +ssS'unique' +p26611 +(dp26612 +S'editable' +p26613 +I00 +sS'value' +p26614 +I00 +ssS'properties' +p26615 +(dp26616 +S'default_value' +p26617 +(dp26618 +S'editable' +p26619 +I00 +sS'value' +p26620 +NssS'summary_default' +p26621 +(dp26622 +S'editable' +p26623 +I01 +sS'value' +p26624 +S'none' +p26625 +sssS'description' +p26626 +(dp26627 +S'editable' +p26628 +I01 +sS'value' +p26629 +g47 +sssS'created_by' +p26630 +(dp26631 +S'mandatory' +p26632 +(dp26633 +S'editable' +p26634 +I00 +sS'value' +p26635 +I00 +ssS'name' +p26636 +(dp26637 +S'editable' +p26638 +I01 +sS'value' +p26639 +S'Created by' +p26640 +ssS'data_type' +p26641 +(dp26642 +S'editable' +p26643 +I00 +sS'value' +p26644 +S'entity' +p26645 +ssS'entity_type' +p26646 +(dp26647 +S'editable' +p26648 +I00 +sS'value' +p26649 +S'PipelineConfiguration' +p26650 +ssS'editable' +p26651 +(dp26652 +S'editable' +p26653 +I00 +sS'value' +p26654 +I00 +ssS'unique' +p26655 +(dp26656 +S'editable' +p26657 +I00 +sS'value' +p26658 +I00 +ssS'properties' +p26659 +(dp26660 +S'default_value' +p26661 +(dp26662 +S'editable' +p26663 +I00 +sS'value' +p26664 +NssS'summary_default' +p26665 +(dp26666 +S'editable' +p26667 +I01 +sS'value' +p26668 +S'none' +p26669 +ssS'valid_types' +p26670 +(dp26671 +S'editable' +p26672 +I01 +sS'value' +p26673 +(lp26674 +S'HumanUser' +p26675 +aS'ApiUser' +p26676 +asssS'description' +p26677 +(dp26678 +S'editable' +p26679 +I01 +sS'value' +p26680 +g47 +sssS'project' +p26681 +(dp26682 +S'mandatory' +p26683 +(dp26684 +S'editable' +p26685 +I00 +sS'value' +p26686 +I00 +ssS'name' +p26687 +(dp26688 +S'editable' +p26689 +I01 +sS'value' +p26690 +S'Project' +p26691 +ssS'data_type' +p26692 +(dp26693 +S'editable' +p26694 +I00 +sS'value' +p26695 +S'entity' +p26696 +ssS'entity_type' +p26697 +(dp26698 +S'editable' +p26699 +I00 +sS'value' +p26700 +S'PipelineConfiguration' +p26701 +ssS'editable' +p26702 +(dp26703 +S'editable' +p26704 +I00 +sS'value' +p26705 +I01 +ssS'unique' +p26706 +(dp26707 +S'editable' +p26708 +I00 +sS'value' +p26709 +I00 +ssS'properties' +p26710 +(dp26711 +S'default_value' +p26712 +(dp26713 +S'editable' +p26714 +I00 +sS'value' +p26715 +NssS'summary_default' +p26716 +(dp26717 +S'editable' +p26718 +I00 +sS'value' +p26719 +S'none' +p26720 +ssS'valid_types' +p26721 +(dp26722 +S'editable' +p26723 +I00 +sS'value' +p26724 +(lp26725 +S'Project' +p26726 +asssS'description' +p26727 +(dp26728 +S'editable' +p26729 +I01 +sS'value' +p26730 +g47 +sssS'windows_path' +p26731 +(dp26732 +S'mandatory' +p26733 +(dp26734 +S'editable' +p26735 +I00 +sS'value' +p26736 +I00 +ssS'name' +p26737 +(dp26738 +S'editable' +p26739 +I01 +sS'value' +p26740 +S'Windows Path' +p26741 +ssS'data_type' +p26742 +(dp26743 +S'editable' +p26744 +I00 +sS'value' +p26745 +S'text' +p26746 +ssS'entity_type' +p26747 +(dp26748 +S'editable' +p26749 +I00 +sS'value' +p26750 +S'PipelineConfiguration' +p26751 +ssS'editable' +p26752 +(dp26753 +S'editable' +p26754 +I00 +sS'value' +p26755 +I01 +ssS'unique' +p26756 +(dp26757 +S'editable' +p26758 +I00 +sS'value' +p26759 +I00 +ssS'properties' +p26760 +(dp26761 +S'default_value' +p26762 +(dp26763 +S'editable' +p26764 +I00 +sS'value' +p26765 +NssS'summary_default' +p26766 +(dp26767 +S'editable' +p26768 +I00 +sS'value' +p26769 +S'none' +p26770 +sssS'description' +p26771 +(dp26772 +S'editable' +p26773 +I01 +sS'value' +p26774 +g47 +sssS'image' +p26775 +(dp26776 +S'mandatory' +p26777 +(dp26778 +S'editable' +p26779 +I00 +sS'value' +p26780 +I00 +ssS'name' +p26781 +(dp26782 +S'editable' +p26783 +I01 +sS'value' +p26784 +S'Thumbnail' +p26785 +ssS'data_type' +p26786 +(dp26787 +S'editable' +p26788 +I00 +sS'value' +p26789 +S'image' +p26790 +ssS'entity_type' +p26791 +(dp26792 +S'editable' +p26793 +I00 +sS'value' +p26794 +S'PipelineConfiguration' +p26795 +ssS'editable' +p26796 +(dp26797 +S'editable' +p26798 +I00 +sS'value' +p26799 +I01 +ssS'unique' +p26800 +(dp26801 +S'editable' +p26802 +I00 +sS'value' +p26803 +I00 +ssS'properties' +p26804 +(dp26805 +S'default_value' +p26806 +(dp26807 +S'editable' +p26808 +I00 +sS'value' +p26809 +NssS'summary_default' +p26810 +(dp26811 +S'editable' +p26812 +I01 +sS'value' +p26813 +S'none' +p26814 +sssS'description' +p26815 +(dp26816 +S'editable' +p26817 +I01 +sS'value' +p26818 +g47 +sssS'updated_by' +p26819 +(dp26820 +S'mandatory' +p26821 +(dp26822 +S'editable' +p26823 +I00 +sS'value' +p26824 +I00 +ssS'name' +p26825 +(dp26826 +S'editable' +p26827 +I01 +sS'value' +p26828 +S'Updated by' +p26829 +ssS'data_type' +p26830 +(dp26831 +S'editable' +p26832 +I00 +sS'value' +p26833 +S'entity' +p26834 +ssS'entity_type' +p26835 +(dp26836 +S'editable' +p26837 +I00 +sS'value' +p26838 +S'PipelineConfiguration' +p26839 +ssS'editable' +p26840 +(dp26841 +S'editable' +p26842 +I00 +sS'value' +p26843 +I00 +ssS'unique' +p26844 +(dp26845 +S'editable' +p26846 +I00 +sS'value' +p26847 +I00 +ssS'properties' +p26848 +(dp26849 +S'default_value' +p26850 +(dp26851 +S'editable' +p26852 +I00 +sS'value' +p26853 +NssS'summary_default' +p26854 +(dp26855 +S'editable' +p26856 +I01 +sS'value' +p26857 +S'none' +p26858 +ssS'valid_types' +p26859 +(dp26860 +S'editable' +p26861 +I01 +sS'value' +p26862 +(lp26863 +S'HumanUser' +p26864 +aS'ApiUser' +p26865 +asssS'description' +p26866 +(dp26867 +S'editable' +p26868 +I01 +sS'value' +p26869 +g47 +sssS'cached_display_name' +p26870 +(dp26871 +S'mandatory' +p26872 +(dp26873 +S'editable' +p26874 +I00 +sS'value' +p26875 +I00 +ssS'name' +p26876 +(dp26877 +S'editable' +p26878 +I01 +sS'value' +p26879 +S'Cached Display Name' +p26880 +ssS'data_type' +p26881 +(dp26882 +S'editable' +p26883 +I00 +sS'value' +p26884 +S'text' +p26885 +ssS'entity_type' +p26886 +(dp26887 +S'editable' +p26888 +I00 +sS'value' +p26889 +S'PipelineConfiguration' +p26890 +ssS'editable' +p26891 +(dp26892 +S'editable' +p26893 +I00 +sS'value' +p26894 +I01 +ssS'unique' +p26895 +(dp26896 +S'editable' +p26897 +I00 +sS'value' +p26898 +I00 +ssS'properties' +p26899 +(dp26900 +S'default_value' +p26901 +(dp26902 +S'editable' +p26903 +I00 +sS'value' +p26904 +NssS'summary_default' +p26905 +(dp26906 +S'editable' +p26907 +I00 +sS'value' +p26908 +S'none' +p26909 +sssS'description' +p26910 +(dp26911 +S'editable' +p26912 +I01 +sS'value' +p26913 +g47 +sssS'tag_list' +p26914 +(dp26915 +S'mandatory' +p26916 +(dp26917 +S'editable' +p26918 +I00 +sS'value' +p26919 +I00 +ssS'name' +p26920 +(dp26921 +S'editable' +p26922 +I01 +sS'value' +p26923 +S'Tags' +p26924 +ssS'data_type' +p26925 +(dp26926 +S'editable' +p26927 +I00 +sS'value' +p26928 +S'tag_list' +p26929 +ssS'entity_type' +p26930 +(dp26931 +S'editable' +p26932 +I00 +sS'value' +p26933 +S'PipelineConfiguration' +p26934 +ssS'editable' +p26935 +(dp26936 +S'editable' +p26937 +I00 +sS'value' +p26938 +I01 +ssS'unique' +p26939 +(dp26940 +S'editable' +p26941 +I00 +sS'value' +p26942 +I00 +ssS'properties' +p26943 +(dp26944 +S'default_value' +p26945 +(dp26946 +S'editable' +p26947 +I00 +sS'value' +p26948 +NssS'summary_default' +p26949 +(dp26950 +S'editable' +p26951 +I01 +sS'value' +p26952 +S'none' +p26953 +ssS'valid_types' +p26954 +(dp26955 +S'editable' +p26956 +I01 +sS'value' +p26957 +(lp26958 +S'Tag' +p26959 +asssS'description' +p26960 +(dp26961 +S'editable' +p26962 +I01 +sS'value' +p26963 +g47 +sssS'id' +p26964 +(dp26965 +S'mandatory' +p26966 +(dp26967 +S'editable' +p26968 +I00 +sS'value' +p26969 +I00 +ssS'name' +p26970 +(dp26971 +S'editable' +p26972 +I01 +sS'value' +p26973 +S'Id' +p26974 +ssS'data_type' +p26975 +(dp26976 +S'editable' +p26977 +I00 +sS'value' +p26978 +S'number' +p26979 +ssS'entity_type' +p26980 +(dp26981 +S'editable' +p26982 +I00 +sS'value' +p26983 +S'PipelineConfiguration' +p26984 +ssS'editable' +p26985 +(dp26986 +S'editable' +p26987 +I00 +sS'value' +p26988 +I00 +ssS'unique' +p26989 +(dp26990 +S'editable' +p26991 +I00 +sS'value' +p26992 +I00 +ssS'properties' +p26993 +(dp26994 +S'default_value' +p26995 +(dp26996 +S'editable' +p26997 +I00 +sS'value' +p26998 +NssS'summary_default' +p26999 +(dp27000 +S'editable' +p27001 +I01 +sS'value' +p27002 +S'none' +p27003 +sssS'description' +p27004 +(dp27005 +S'editable' +p27006 +I01 +sS'value' +p27007 +g47 +sssS'linux_path' +p27008 +(dp27009 +S'mandatory' +p27010 +(dp27011 +S'editable' +p27012 +I00 +sS'value' +p27013 +I00 +ssS'name' +p27014 +(dp27015 +S'editable' +p27016 +I01 +sS'value' +p27017 +S'Linux Path' +p27018 +ssS'data_type' +p27019 +(dp27020 +S'editable' +p27021 +I00 +sS'value' +p27022 +S'text' +p27023 +ssS'entity_type' +p27024 +(dp27025 +S'editable' +p27026 +I00 +sS'value' +p27027 +S'PipelineConfiguration' +p27028 +ssS'editable' +p27029 +(dp27030 +S'editable' +p27031 +I00 +sS'value' +p27032 +I01 +ssS'unique' +p27033 +(dp27034 +S'editable' +p27035 +I00 +sS'value' +p27036 +I00 +ssS'properties' +p27037 +(dp27038 +S'default_value' +p27039 +(dp27040 +S'editable' +p27041 +I00 +sS'value' +p27042 +NssS'summary_default' +p27043 +(dp27044 +S'editable' +p27045 +I00 +sS'value' +p27046 +S'none' +p27047 +sssS'description' +p27048 +(dp27049 +S'editable' +p27050 +I01 +sS'value' +p27051 +g47 +sssS'description' +p27052 +(dp27053 +S'mandatory' +p27054 +(dp27055 +S'editable' +p27056 +I00 +sS'value' +p27057 +I00 +ssS'name' +p27058 +(dp27059 +S'editable' +p27060 +I01 +sS'value' +p27061 +S'Description' +p27062 +ssS'data_type' +p27063 +(dp27064 +S'editable' +p27065 +I00 +sS'value' +p27066 +S'text' +p27067 +ssS'entity_type' +p27068 +(dp27069 +S'editable' +p27070 +I00 +sS'value' +p27071 +S'PipelineConfiguration' +p27072 +ssS'editable' +p27073 +(dp27074 +S'editable' +p27075 +I00 +sS'value' +p27076 +I01 +ssS'unique' +p27077 +(dp27078 +S'editable' +p27079 +I00 +sS'value' +p27080 +I00 +ssS'properties' +p27081 +(dp27082 +S'default_value' +p27083 +(dp27084 +S'editable' +p27085 +I00 +sS'value' +p27086 +NssS'summary_default' +p27087 +(dp27088 +S'editable' +p27089 +I00 +sS'value' +p27090 +S'none' +p27091 +sssS'description' +p27092 +(dp27093 +S'editable' +p27094 +I01 +sS'value' +p27095 +g47 +ssssS'LaunchSceneConnection' +p27096 +(dp27097 +S'id' +p27098 +(dp27099 +S'mandatory' +p27100 +(dp27101 +S'editable' +p27102 +I00 +sS'value' +p27103 +I01 +ssS'name' +p27104 +(dp27105 +S'editable' +p27106 +I01 +sS'value' +p27107 +S'Id' +p27108 +ssS'data_type' +p27109 +(dp27110 +S'editable' +p27111 +I00 +sS'value' +p27112 +S'number' +p27113 +ssS'entity_type' +p27114 +(dp27115 +S'editable' +p27116 +I00 +sS'value' +p27117 +S'LaunchSceneConnection' +p27118 +ssS'editable' +p27119 +(dp27120 +S'editable' +p27121 +I00 +sS'value' +p27122 +I00 +ssS'unique' +p27123 +(dp27124 +S'editable' +p27125 +I00 +sS'value' +p27126 +I00 +ssS'properties' +p27127 +(dp27128 +S'default_value' +p27129 +(dp27130 +S'editable' +p27131 +I00 +sS'value' +p27132 +NssS'summary_default' +p27133 +(dp27134 +S'editable' +p27135 +I00 +sS'value' +p27136 +S'none' +p27137 +sssS'description' +p27138 +(dp27139 +S'editable' +p27140 +I01 +sS'value' +p27141 +g47 +sssS'cached_display_name' +p27142 +(dp27143 +S'mandatory' +p27144 +(dp27145 +S'editable' +p27146 +I00 +sS'value' +p27147 +I00 +ssS'name' +p27148 +(dp27149 +S'editable' +p27150 +I01 +sS'value' +p27151 +S'Cached Display Name' +p27152 +ssS'data_type' +p27153 +(dp27154 +S'editable' +p27155 +I00 +sS'value' +p27156 +S'text' +p27157 +ssS'entity_type' +p27158 +(dp27159 +S'editable' +p27160 +I00 +sS'value' +p27161 +S'LaunchSceneConnection' +p27162 +ssS'editable' +p27163 +(dp27164 +S'editable' +p27165 +I00 +sS'value' +p27166 +I01 +ssS'unique' +p27167 +(dp27168 +S'editable' +p27169 +I00 +sS'value' +p27170 +I00 +ssS'properties' +p27171 +(dp27172 +S'default_value' +p27173 +(dp27174 +S'editable' +p27175 +I00 +sS'value' +p27176 +NssS'summary_default' +p27177 +(dp27178 +S'editable' +p27179 +I00 +sS'value' +p27180 +S'none' +p27181 +sssS'description' +p27182 +(dp27183 +S'editable' +p27184 +I01 +sS'value' +p27185 +g47 +sssS'scene' +p27186 +(dp27187 +S'mandatory' +p27188 +(dp27189 +S'editable' +p27190 +I00 +sS'value' +p27191 +I00 +ssS'name' +p27192 +(dp27193 +S'editable' +p27194 +I01 +sS'value' +p27195 +S'Scene' +p27196 +ssS'data_type' +p27197 +(dp27198 +S'editable' +p27199 +I00 +sS'value' +p27200 +S'entity' +p27201 +ssS'entity_type' +p27202 +(dp27203 +S'editable' +p27204 +I00 +sS'value' +p27205 +S'LaunchSceneConnection' +p27206 +ssS'editable' +p27207 +(dp27208 +S'editable' +p27209 +I00 +sS'value' +p27210 +I00 +ssS'unique' +p27211 +(dp27212 +S'editable' +p27213 +I00 +sS'value' +p27214 +I00 +ssS'properties' +p27215 +(dp27216 +S'default_value' +p27217 +(dp27218 +S'editable' +p27219 +I00 +sS'value' +p27220 +NssS'summary_default' +p27221 +(dp27222 +S'editable' +p27223 +I00 +sS'value' +p27224 +S'none' +p27225 +ssS'valid_types' +p27226 +(dp27227 +S'editable' +p27228 +I00 +sS'value' +p27229 +(lp27230 +S'Scene' +p27231 +asssS'description' +p27232 +(dp27233 +S'editable' +p27234 +I01 +sS'value' +p27235 +g47 +sssS'launch' +p27236 +(dp27237 +S'mandatory' +p27238 +(dp27239 +S'editable' +p27240 +I00 +sS'value' +p27241 +I00 +ssS'name' +p27242 +(dp27243 +S'editable' +p27244 +I01 +sS'value' +p27245 +S'Launch' +p27246 +ssS'data_type' +p27247 +(dp27248 +S'editable' +p27249 +I00 +sS'value' +p27250 +S'entity' +p27251 +ssS'entity_type' +p27252 +(dp27253 +S'editable' +p27254 +I00 +sS'value' +p27255 +S'LaunchSceneConnection' +p27256 +ssS'editable' +p27257 +(dp27258 +S'editable' +p27259 +I00 +sS'value' +p27260 +I00 +ssS'unique' +p27261 +(dp27262 +S'editable' +p27263 +I00 +sS'value' +p27264 +I00 +ssS'properties' +p27265 +(dp27266 +S'default_value' +p27267 +(dp27268 +S'editable' +p27269 +I00 +sS'value' +p27270 +NssS'summary_default' +p27271 +(dp27272 +S'editable' +p27273 +I00 +sS'value' +p27274 +S'none' +p27275 +ssS'valid_types' +p27276 +(dp27277 +S'editable' +p27278 +I00 +sS'value' +p27279 +(lp27280 +S'Launch' +p27281 +asssS'description' +p27282 +(dp27283 +S'editable' +p27284 +I01 +sS'value' +p27285 +g47 +ssssS'GroupUserConnection' +p27286 +(dp27287 +S'cached_display_name' +p27288 +(dp27289 +S'mandatory' +p27290 +(dp27291 +S'editable' +p27292 +I00 +sS'value' +p27293 +I00 +ssS'name' +p27294 +(dp27295 +S'editable' +p27296 +I01 +sS'value' +p27297 +S'Cached Display Name' +p27298 +ssS'data_type' +p27299 +(dp27300 +S'editable' +p27301 +I00 +sS'value' +p27302 +S'text' +p27303 +ssS'entity_type' +p27304 +(dp27305 +S'editable' +p27306 +I00 +sS'value' +p27307 +S'GroupUserConnection' +p27308 +ssS'editable' +p27309 +(dp27310 +S'editable' +p27311 +I00 +sS'value' +p27312 +I01 +ssS'unique' +p27313 +(dp27314 +S'editable' +p27315 +I00 +sS'value' +p27316 +I00 +ssS'properties' +p27317 +(dp27318 +S'default_value' +p27319 +(dp27320 +S'editable' +p27321 +I00 +sS'value' +p27322 +NssS'summary_default' +p27323 +(dp27324 +S'editable' +p27325 +I00 +sS'value' +p27326 +S'none' +p27327 +sssS'description' +p27328 +(dp27329 +S'editable' +p27330 +I01 +sS'value' +p27331 +g47 +sssS'group' +p27332 +(dp27333 +S'mandatory' +p27334 +(dp27335 +S'editable' +p27336 +I00 +sS'value' +p27337 +I00 +ssS'name' +p27338 +(dp27339 +S'editable' +p27340 +I01 +sS'value' +p27341 +S'Group' +p27342 +ssS'data_type' +p27343 +(dp27344 +S'editable' +p27345 +I00 +sS'value' +p27346 +S'entity' +p27347 +ssS'entity_type' +p27348 +(dp27349 +S'editable' +p27350 +I00 +sS'value' +p27351 +S'GroupUserConnection' +p27352 +ssS'editable' +p27353 +(dp27354 +S'editable' +p27355 +I00 +sS'value' +p27356 +I00 +ssS'unique' +p27357 +(dp27358 +S'editable' +p27359 +I00 +sS'value' +p27360 +I00 +ssS'properties' +p27361 +(dp27362 +S'default_value' +p27363 +(dp27364 +S'editable' +p27365 +I00 +sS'value' +p27366 +NssS'summary_default' +p27367 +(dp27368 +S'editable' +p27369 +I00 +sS'value' +p27370 +S'none' +p27371 +ssS'valid_types' +p27372 +(dp27373 +S'editable' +p27374 +I00 +sS'value' +p27375 +(lp27376 +S'Group' +p27377 +asssS'description' +p27378 +(dp27379 +S'editable' +p27380 +I01 +sS'value' +p27381 +g47 +sssS'id' +p27382 +(dp27383 +S'mandatory' +p27384 +(dp27385 +S'editable' +p27386 +I00 +sS'value' +p27387 +I01 +ssS'name' +p27388 +(dp27389 +S'editable' +p27390 +I01 +sS'value' +p27391 +S'Id' +p27392 +ssS'data_type' +p27393 +(dp27394 +S'editable' +p27395 +I00 +sS'value' +p27396 +S'number' +p27397 +ssS'entity_type' +p27398 +(dp27399 +S'editable' +p27400 +I00 +sS'value' +p27401 +S'GroupUserConnection' +p27402 +ssS'editable' +p27403 +(dp27404 +S'editable' +p27405 +I00 +sS'value' +p27406 +I00 +ssS'unique' +p27407 +(dp27408 +S'editable' +p27409 +I00 +sS'value' +p27410 +I00 +ssS'properties' +p27411 +(dp27412 +S'default_value' +p27413 +(dp27414 +S'editable' +p27415 +I00 +sS'value' +p27416 +NssS'summary_default' +p27417 +(dp27418 +S'editable' +p27419 +I00 +sS'value' +p27420 +S'none' +p27421 +sssS'description' +p27422 +(dp27423 +S'editable' +p27424 +I01 +sS'value' +p27425 +g47 +sssS'user' +p27426 +(dp27427 +S'mandatory' +p27428 +(dp27429 +S'editable' +p27430 +I00 +sS'value' +p27431 +I00 +ssS'name' +p27432 +(dp27433 +S'editable' +p27434 +I01 +sS'value' +p27435 +S'Person' +p27436 +ssS'data_type' +p27437 +(dp27438 +S'editable' +p27439 +I00 +sS'value' +p27440 +S'entity' +p27441 +ssS'entity_type' +p27442 +(dp27443 +S'editable' +p27444 +I00 +sS'value' +p27445 +S'GroupUserConnection' +p27446 +ssS'editable' +p27447 +(dp27448 +S'editable' +p27449 +I00 +sS'value' +p27450 +I00 +ssS'unique' +p27451 +(dp27452 +S'editable' +p27453 +I00 +sS'value' +p27454 +I00 +ssS'properties' +p27455 +(dp27456 +S'default_value' +p27457 +(dp27458 +S'editable' +p27459 +I00 +sS'value' +p27460 +NssS'summary_default' +p27461 +(dp27462 +S'editable' +p27463 +I00 +sS'value' +p27464 +S'none' +p27465 +ssS'valid_types' +p27466 +(dp27467 +S'editable' +p27468 +I00 +sS'value' +p27469 +(lp27470 +S'HumanUser' +p27471 +asssS'description' +p27472 +(dp27473 +S'editable' +p27474 +I01 +sS'value' +p27475 +g47 +ssssS'AssetSequenceConnection' +p27476 +(dp27477 +S'id' +p27478 +(dp27479 +S'mandatory' +p27480 +(dp27481 +S'editable' +p27482 +I00 +sS'value' +p27483 +I01 +ssS'name' +p27484 +(dp27485 +S'editable' +p27486 +I01 +sS'value' +p27487 +S'Id' +p27488 +ssS'data_type' +p27489 +(dp27490 +S'editable' +p27491 +I00 +sS'value' +p27492 +S'number' +p27493 +ssS'entity_type' +p27494 +(dp27495 +S'editable' +p27496 +I00 +sS'value' +p27497 +S'AssetSequenceConnection' +p27498 +ssS'editable' +p27499 +(dp27500 +S'editable' +p27501 +I00 +sS'value' +p27502 +I00 +ssS'unique' +p27503 +(dp27504 +S'editable' +p27505 +I00 +sS'value' +p27506 +I00 +ssS'properties' +p27507 +(dp27508 +S'default_value' +p27509 +(dp27510 +S'editable' +p27511 +I00 +sS'value' +p27512 +NssS'summary_default' +p27513 +(dp27514 +S'editable' +p27515 +I00 +sS'value' +p27516 +S'none' +p27517 +sssS'description' +p27518 +(dp27519 +S'editable' +p27520 +I01 +sS'value' +p27521 +g47 +sssS'cached_display_name' +p27522 +(dp27523 +S'mandatory' +p27524 +(dp27525 +S'editable' +p27526 +I00 +sS'value' +p27527 +I00 +ssS'name' +p27528 +(dp27529 +S'editable' +p27530 +I01 +sS'value' +p27531 +S'Cached Display Name' +p27532 +ssS'data_type' +p27533 +(dp27534 +S'editable' +p27535 +I00 +sS'value' +p27536 +S'text' +p27537 +ssS'entity_type' +p27538 +(dp27539 +S'editable' +p27540 +I00 +sS'value' +p27541 +S'AssetSequenceConnection' +p27542 +ssS'editable' +p27543 +(dp27544 +S'editable' +p27545 +I00 +sS'value' +p27546 +I01 +ssS'unique' +p27547 +(dp27548 +S'editable' +p27549 +I00 +sS'value' +p27550 +I00 +ssS'properties' +p27551 +(dp27552 +S'default_value' +p27553 +(dp27554 +S'editable' +p27555 +I00 +sS'value' +p27556 +NssS'summary_default' +p27557 +(dp27558 +S'editable' +p27559 +I00 +sS'value' +p27560 +S'none' +p27561 +sssS'description' +p27562 +(dp27563 +S'editable' +p27564 +I01 +sS'value' +p27565 +g47 +sssS'asset' +p27566 +(dp27567 +S'mandatory' +p27568 +(dp27569 +S'editable' +p27570 +I00 +sS'value' +p27571 +I00 +ssS'name' +p27572 +(dp27573 +S'editable' +p27574 +I01 +sS'value' +p27575 +S'Asset' +p27576 +ssS'data_type' +p27577 +(dp27578 +S'editable' +p27579 +I00 +sS'value' +p27580 +S'entity' +p27581 +ssS'entity_type' +p27582 +(dp27583 +S'editable' +p27584 +I00 +sS'value' +p27585 +S'AssetSequenceConnection' +p27586 +ssS'editable' +p27587 +(dp27588 +S'editable' +p27589 +I00 +sS'value' +p27590 +I00 +ssS'unique' +p27591 +(dp27592 +S'editable' +p27593 +I00 +sS'value' +p27594 +I00 +ssS'properties' +p27595 +(dp27596 +S'default_value' +p27597 +(dp27598 +S'editable' +p27599 +I00 +sS'value' +p27600 +NssS'summary_default' +p27601 +(dp27602 +S'editable' +p27603 +I00 +sS'value' +p27604 +S'none' +p27605 +ssS'valid_types' +p27606 +(dp27607 +S'editable' +p27608 +I00 +sS'value' +p27609 +(lp27610 +S'Asset' +p27611 +asssS'description' +p27612 +(dp27613 +S'editable' +p27614 +I01 +sS'value' +p27615 +g47 +sssS'sequence' +p27616 +(dp27617 +S'mandatory' +p27618 +(dp27619 +S'editable' +p27620 +I00 +sS'value' +p27621 +I00 +ssS'name' +p27622 +(dp27623 +S'editable' +p27624 +I01 +sS'value' +p27625 +S'Sequence' +p27626 +ssS'data_type' +p27627 +(dp27628 +S'editable' +p27629 +I00 +sS'value' +p27630 +S'entity' +p27631 +ssS'entity_type' +p27632 +(dp27633 +S'editable' +p27634 +I00 +sS'value' +p27635 +S'AssetSequenceConnection' +p27636 +ssS'editable' +p27637 +(dp27638 +S'editable' +p27639 +I00 +sS'value' +p27640 +I00 +ssS'unique' +p27641 +(dp27642 +S'editable' +p27643 +I00 +sS'value' +p27644 +I00 +ssS'properties' +p27645 +(dp27646 +S'default_value' +p27647 +(dp27648 +S'editable' +p27649 +I00 +sS'value' +p27650 +NssS'summary_default' +p27651 +(dp27652 +S'editable' +p27653 +I00 +sS'value' +p27654 +S'none' +p27655 +ssS'valid_types' +p27656 +(dp27657 +S'editable' +p27658 +I00 +sS'value' +p27659 +(lp27660 +S'Sequence' +p27661 +asssS'description' +p27662 +(dp27663 +S'editable' +p27664 +I01 +sS'value' +p27665 +g47 +ssssS'Page' +p27666 +(dp27667 +S'updated_at' +p27668 +(dp27669 +S'mandatory' +p27670 +(dp27671 +S'editable' +p27672 +I00 +sS'value' +p27673 +I00 +ssS'name' +p27674 +(dp27675 +S'editable' +p27676 +I01 +sS'value' +p27677 +S'Date Updated' +p27678 +ssS'data_type' +p27679 +(dp27680 +S'editable' +p27681 +I00 +sS'value' +p27682 +S'date_time' +p27683 +ssS'entity_type' +p27684 +(dp27685 +S'editable' +p27686 +I00 +sS'value' +p27687 +S'Page' +p27688 +ssS'editable' +p27689 +(dp27690 +S'editable' +p27691 +I00 +sS'value' +p27692 +I00 +ssS'unique' +p27693 +(dp27694 +S'editable' +p27695 +I00 +sS'value' +p27696 +I00 +ssS'properties' +p27697 +(dp27698 +S'default_value' +p27699 +(dp27700 +S'editable' +p27701 +I00 +sS'value' +p27702 +NssS'summary_default' +p27703 +(dp27704 +S'editable' +p27705 +I00 +sS'value' +p27706 +S'none' +p27707 +sssS'description' +p27708 +(dp27709 +S'editable' +p27710 +I01 +sS'value' +p27711 +g47 +sssS'cached_display_name' +p27712 +(dp27713 +S'mandatory' +p27714 +(dp27715 +S'editable' +p27716 +I00 +sS'value' +p27717 +I00 +ssS'name' +p27718 +(dp27719 +S'editable' +p27720 +I01 +sS'value' +p27721 +S'Cached Display Name' +p27722 +ssS'data_type' +p27723 +(dp27724 +S'editable' +p27725 +I00 +sS'value' +p27726 +S'text' +p27727 +ssS'entity_type' +p27728 +(dp27729 +S'editable' +p27730 +I00 +sS'value' +p27731 +S'Page' +p27732 +ssS'editable' +p27733 +(dp27734 +S'editable' +p27735 +I00 +sS'value' +p27736 +I01 +ssS'unique' +p27737 +(dp27738 +S'editable' +p27739 +I00 +sS'value' +p27740 +I00 +ssS'properties' +p27741 +(dp27742 +S'default_value' +p27743 +(dp27744 +S'editable' +p27745 +I00 +sS'value' +p27746 +NssS'summary_default' +p27747 +(dp27748 +S'editable' +p27749 +I00 +sS'value' +p27750 +S'none' +p27751 +sssS'description' +p27752 +(dp27753 +S'editable' +p27754 +I01 +sS'value' +p27755 +g47 +sssS'id' +p27756 +(dp27757 +S'mandatory' +p27758 +(dp27759 +S'editable' +p27760 +I00 +sS'value' +p27761 +I00 +ssS'name' +p27762 +(dp27763 +S'editable' +p27764 +I01 +sS'value' +p27765 +S'Id' +p27766 +ssS'data_type' +p27767 +(dp27768 +S'editable' +p27769 +I00 +sS'value' +p27770 +S'number' +p27771 +ssS'entity_type' +p27772 +(dp27773 +S'editable' +p27774 +I00 +sS'value' +p27775 +S'Page' +p27776 +ssS'editable' +p27777 +(dp27778 +S'editable' +p27779 +I00 +sS'value' +p27780 +I00 +ssS'unique' +p27781 +(dp27782 +S'editable' +p27783 +I00 +sS'value' +p27784 +I00 +ssS'properties' +p27785 +(dp27786 +S'default_value' +p27787 +(dp27788 +S'editable' +p27789 +I00 +sS'value' +p27790 +NssS'summary_default' +p27791 +(dp27792 +S'editable' +p27793 +I01 +sS'value' +p27794 +S'none' +p27795 +sssS'description' +p27796 +(dp27797 +S'editable' +p27798 +I01 +sS'value' +p27799 +g47 +sssS'accesses_by_current_user' +p27800 +(dp27801 +S'mandatory' +p27802 +(dp27803 +S'editable' +p27804 +I00 +sS'value' +p27805 +I00 +ssS'name' +p27806 +(dp27807 +S'editable' +p27808 +I01 +sS'value' +p27809 +S'Times Accessed' +p27810 +ssS'data_type' +p27811 +(dp27812 +S'editable' +p27813 +I00 +sS'value' +p27814 +S'number' +p27815 +ssS'entity_type' +p27816 +(dp27817 +S'editable' +p27818 +I00 +sS'value' +p27819 +S'Page' +p27820 +ssS'editable' +p27821 +(dp27822 +S'editable' +p27823 +I00 +sS'value' +p27824 +I00 +ssS'unique' +p27825 +(dp27826 +S'editable' +p27827 +I00 +sS'value' +p27828 +I00 +ssS'properties' +p27829 +(dp27830 +S'default_value' +p27831 +(dp27832 +S'editable' +p27833 +I00 +sS'value' +p27834 +NssS'summary_default' +p27835 +(dp27836 +S'editable' +p27837 +I01 +sS'value' +p27838 +S'none' +p27839 +sssS'description' +p27840 +(dp27841 +S'editable' +p27842 +I01 +sS'value' +p27843 +g47 +sssS'updated_by' +p27844 +(dp27845 +S'mandatory' +p27846 +(dp27847 +S'editable' +p27848 +I00 +sS'value' +p27849 +I00 +ssS'name' +p27850 +(dp27851 +S'editable' +p27852 +I01 +sS'value' +p27853 +S'Updated by' +p27854 +ssS'data_type' +p27855 +(dp27856 +S'editable' +p27857 +I00 +sS'value' +p27858 +S'entity' +p27859 +ssS'entity_type' +p27860 +(dp27861 +S'editable' +p27862 +I00 +sS'value' +p27863 +S'Page' +p27864 +ssS'editable' +p27865 +(dp27866 +S'editable' +p27867 +I00 +sS'value' +p27868 +I00 +ssS'unique' +p27869 +(dp27870 +S'editable' +p27871 +I00 +sS'value' +p27872 +I00 +ssS'properties' +p27873 +(dp27874 +S'default_value' +p27875 +(dp27876 +S'editable' +p27877 +I00 +sS'value' +p27878 +NssS'summary_default' +p27879 +(dp27880 +S'editable' +p27881 +I00 +sS'value' +p27882 +S'none' +p27883 +ssS'valid_types' +p27884 +(dp27885 +S'editable' +p27886 +I00 +sS'value' +p27887 +(lp27888 +S'HumanUser' +p27889 +aS'ApiUser' +p27890 +asssS'description' +p27891 +(dp27892 +S'editable' +p27893 +I01 +sS'value' +p27894 +g47 +sssS'entity_type' +p27895 +(dp27896 +S'mandatory' +p27897 +(dp27898 +S'editable' +p27899 +I00 +sS'value' +p27900 +I00 +ssS'name' +p27901 +(dp27902 +S'editable' +p27903 +I01 +sS'value' +p27904 +S'Entity Type' +p27905 +ssS'data_type' +p27906 +(dp27907 +S'editable' +p27908 +I00 +sS'value' +p27909 +S'entity_type' +p27910 +ssS'entity_type' +p27911 +(dp27912 +S'editable' +p27913 +I00 +sS'value' +p27914 +S'Page' +p27915 +ssS'editable' +p27916 +(dp27917 +S'editable' +p27918 +I00 +sS'value' +p27919 +I00 +ssS'unique' +p27920 +(dp27921 +S'editable' +p27922 +I00 +sS'value' +p27923 +I00 +ssS'properties' +p27924 +(dp27925 +S'default_value' +p27926 +(dp27927 +S'editable' +p27928 +I00 +sS'value' +p27929 +NssS'summary_default' +p27930 +(dp27931 +S'editable' +p27932 +I01 +sS'value' +p27933 +S'none' +p27934 +sssS'description' +p27935 +(dp27936 +S'editable' +p27937 +I01 +sS'value' +p27938 +g47 +sssS'created_by' +p27939 +(dp27940 +S'mandatory' +p27941 +(dp27942 +S'editable' +p27943 +I00 +sS'value' +p27944 +I00 +ssS'name' +p27945 +(dp27946 +S'editable' +p27947 +I01 +sS'value' +p27948 +S'Created by' +p27949 +ssS'data_type' +p27950 +(dp27951 +S'editable' +p27952 +I00 +sS'value' +p27953 +S'entity' +p27954 +ssS'entity_type' +p27955 +(dp27956 +S'editable' +p27957 +I00 +sS'value' +p27958 +S'Page' +p27959 +ssS'editable' +p27960 +(dp27961 +S'editable' +p27962 +I00 +sS'value' +p27963 +I00 +ssS'unique' +p27964 +(dp27965 +S'editable' +p27966 +I00 +sS'value' +p27967 +I00 +ssS'properties' +p27968 +(dp27969 +S'default_value' +p27970 +(dp27971 +S'editable' +p27972 +I00 +sS'value' +p27973 +NssS'summary_default' +p27974 +(dp27975 +S'editable' +p27976 +I00 +sS'value' +p27977 +S'none' +p27978 +ssS'valid_types' +p27979 +(dp27980 +S'editable' +p27981 +I00 +sS'value' +p27982 +(lp27983 +S'HumanUser' +p27984 +aS'ApiUser' +p27985 +asssS'description' +p27986 +(dp27987 +S'editable' +p27988 +I01 +sS'value' +p27989 +g47 +sssS'page_type' +p27990 +(dp27991 +S'mandatory' +p27992 +(dp27993 +S'editable' +p27994 +I00 +sS'value' +p27995 +I00 +ssS'name' +p27996 +(dp27997 +S'editable' +p27998 +I01 +sS'value' +p27999 +S'Page Type' +p28000 +ssS'data_type' +p28001 +(dp28002 +S'editable' +p28003 +I00 +sS'value' +p28004 +S'text' +p28005 +ssS'entity_type' +p28006 +(dp28007 +S'editable' +p28008 +I00 +sS'value' +p28009 +S'Page' +p28010 +ssS'editable' +p28011 +(dp28012 +S'editable' +p28013 +I00 +sS'value' +p28014 +I00 +ssS'unique' +p28015 +(dp28016 +S'editable' +p28017 +I00 +sS'value' +p28018 +I00 +ssS'properties' +p28019 +(dp28020 +S'default_value' +p28021 +(dp28022 +S'editable' +p28023 +I00 +sS'value' +p28024 +NssS'summary_default' +p28025 +(dp28026 +S'editable' +p28027 +I01 +sS'value' +p28028 +S'none' +p28029 +sssS'description' +p28030 +(dp28031 +S'editable' +p28032 +I01 +sS'value' +p28033 +g47 +sssS'current_user_favorite' +p28034 +(dp28035 +S'mandatory' +p28036 +(dp28037 +S'editable' +p28038 +I00 +sS'value' +p28039 +I00 +ssS'name' +p28040 +(dp28041 +S'editable' +p28042 +I01 +sS'value' +p28043 +S'Favorite' +p28044 +ssS'data_type' +p28045 +(dp28046 +S'editable' +p28047 +I00 +sS'value' +p28048 +S'checkbox' +p28049 +ssS'entity_type' +p28050 +(dp28051 +S'editable' +p28052 +I00 +sS'value' +p28053 +S'Page' +p28054 +ssS'editable' +p28055 +(dp28056 +S'editable' +p28057 +I00 +sS'value' +p28058 +I01 +ssS'unique' +p28059 +(dp28060 +S'editable' +p28061 +I00 +sS'value' +p28062 +I00 +ssS'properties' +p28063 +(dp28064 +S'default_value' +p28065 +(dp28066 +S'editable' +p28067 +I00 +sS'value' +p28068 +NssS'summary_default' +p28069 +(dp28070 +S'editable' +p28071 +I01 +sS'value' +p28072 +S'none' +p28073 +sssS'description' +p28074 +(dp28075 +S'editable' +p28076 +I01 +sS'value' +p28077 +g47 +sssS'shared' +p28078 +(dp28079 +S'mandatory' +p28080 +(dp28081 +S'editable' +p28082 +I00 +sS'value' +p28083 +I00 +ssS'name' +p28084 +(dp28085 +S'editable' +p28086 +I01 +sS'value' +p28087 +S'Shared' +p28088 +ssS'data_type' +p28089 +(dp28090 +S'editable' +p28091 +I00 +sS'value' +p28092 +S'checkbox' +p28093 +ssS'entity_type' +p28094 +(dp28095 +S'editable' +p28096 +I00 +sS'value' +p28097 +S'Page' +p28098 +ssS'editable' +p28099 +(dp28100 +S'editable' +p28101 +I00 +sS'value' +p28102 +I01 +ssS'unique' +p28103 +(dp28104 +S'editable' +p28105 +I00 +sS'value' +p28106 +I00 +ssS'properties' +p28107 +(dp28108 +S'default_value' +p28109 +(dp28110 +S'editable' +p28111 +I00 +sS'value' +p28112 +I00 +ssS'summary_default' +p28113 +(dp28114 +S'editable' +p28115 +I01 +sS'value' +p28116 +S'none' +p28117 +sssS'description' +p28118 +(dp28119 +S'editable' +p28120 +I01 +sS'value' +p28121 +g47 +sssS'folder' +p28122 +(dp28123 +S'mandatory' +p28124 +(dp28125 +S'editable' +p28126 +I00 +sS'value' +p28127 +I00 +ssS'name' +p28128 +(dp28129 +S'editable' +p28130 +I01 +sS'value' +p28131 +S'Folder' +p28132 +ssS'data_type' +p28133 +(dp28134 +S'editable' +p28135 +I00 +sS'value' +p28136 +S'text' +p28137 +ssS'entity_type' +p28138 +(dp28139 +S'editable' +p28140 +I00 +sS'value' +p28141 +S'Page' +p28142 +ssS'editable' +p28143 +(dp28144 +S'editable' +p28145 +I00 +sS'value' +p28146 +I01 +ssS'unique' +p28147 +(dp28148 +S'editable' +p28149 +I00 +sS'value' +p28150 +I00 +ssS'properties' +p28151 +(dp28152 +S'default_value' +p28153 +(dp28154 +S'editable' +p28155 +I00 +sS'value' +p28156 +NssS'summary_default' +p28157 +(dp28158 +S'editable' +p28159 +I01 +sS'value' +p28160 +S'none' +p28161 +sssS'description' +p28162 +(dp28163 +S'editable' +p28164 +I01 +sS'value' +p28165 +g47 +sssS'last_accessed_by_current_user' +p28166 +(dp28167 +S'mandatory' +p28168 +(dp28169 +S'editable' +p28170 +I00 +sS'value' +p28171 +I00 +ssS'name' +p28172 +(dp28173 +S'editable' +p28174 +I01 +sS'value' +p28175 +S'Last Accessed by Me' +p28176 +ssS'data_type' +p28177 +(dp28178 +S'editable' +p28179 +I00 +sS'value' +p28180 +S'date_time' +p28181 +ssS'entity_type' +p28182 +(dp28183 +S'editable' +p28184 +I00 +sS'value' +p28185 +S'Page' +p28186 +ssS'editable' +p28187 +(dp28188 +S'editable' +p28189 +I00 +sS'value' +p28190 +I00 +ssS'unique' +p28191 +(dp28192 +S'editable' +p28193 +I00 +sS'value' +p28194 +I00 +ssS'properties' +p28195 +(dp28196 +S'default_value' +p28197 +(dp28198 +S'editable' +p28199 +I00 +sS'value' +p28200 +NssS'summary_default' +p28201 +(dp28202 +S'editable' +p28203 +I01 +sS'value' +p28204 +S'none' +p28205 +sssS'description' +p28206 +(dp28207 +S'editable' +p28208 +I01 +sS'value' +p28209 +g47 +sssS'description' +p28210 +(dp28211 +S'mandatory' +p28212 +(dp28213 +S'editable' +p28214 +I00 +sS'value' +p28215 +I00 +ssS'name' +p28216 +(dp28217 +S'editable' +p28218 +I01 +sS'value' +p28219 +S'Description' +p28220 +ssS'data_type' +p28221 +(dp28222 +S'editable' +p28223 +I00 +sS'value' +p28224 +S'text' +p28225 +ssS'entity_type' +p28226 +(dp28227 +S'editable' +p28228 +I00 +sS'value' +p28229 +S'Page' +p28230 +ssS'editable' +p28231 +(dp28232 +S'editable' +p28233 +I00 +sS'value' +p28234 +I01 +ssS'unique' +p28235 +(dp28236 +S'editable' +p28237 +I00 +sS'value' +p28238 +I00 +ssS'properties' +p28239 +(dp28240 +S'default_value' +p28241 +(dp28242 +S'editable' +p28243 +I00 +sS'value' +p28244 +NssS'summary_default' +p28245 +(dp28246 +S'editable' +p28247 +I00 +sS'value' +p28248 +S'none' +p28249 +sssS'description' +p28250 +(dp28251 +S'editable' +p28252 +I01 +sS'value' +p28253 +g47 +sssS'last_accessed' +p28254 +(dp28255 +S'mandatory' +p28256 +(dp28257 +S'editable' +p28258 +I00 +sS'value' +p28259 +I00 +ssS'name' +p28260 +(dp28261 +S'editable' +p28262 +I01 +sS'value' +p28263 +S'Last Accessed' +p28264 +ssS'data_type' +p28265 +(dp28266 +S'editable' +p28267 +I00 +sS'value' +p28268 +S'date_time' +p28269 +ssS'entity_type' +p28270 +(dp28271 +S'editable' +p28272 +I00 +sS'value' +p28273 +S'Page' +p28274 +ssS'editable' +p28275 +(dp28276 +S'editable' +p28277 +I00 +sS'value' +p28278 +I00 +ssS'unique' +p28279 +(dp28280 +S'editable' +p28281 +I00 +sS'value' +p28282 +I00 +ssS'properties' +p28283 +(dp28284 +S'default_value' +p28285 +(dp28286 +S'editable' +p28287 +I00 +sS'value' +p28288 +NssS'summary_default' +p28289 +(dp28290 +S'editable' +p28291 +I01 +sS'value' +p28292 +S'none' +p28293 +sssS'description' +p28294 +(dp28295 +S'editable' +p28296 +I01 +sS'value' +p28297 +g47 +sssS'default_type' +p28298 +(dp28299 +S'mandatory' +p28300 +(dp28301 +S'editable' +p28302 +I00 +sS'value' +p28303 +I00 +ssS'name' +p28304 +(dp28305 +S'editable' +p28306 +I01 +sS'value' +p28307 +S'Default Type' +p28308 +ssS'data_type' +p28309 +(dp28310 +S'editable' +p28311 +I00 +sS'value' +p28312 +S'text' +p28313 +ssS'entity_type' +p28314 +(dp28315 +S'editable' +p28316 +I00 +sS'value' +p28317 +S'Page' +p28318 +ssS'editable' +p28319 +(dp28320 +S'editable' +p28321 +I00 +sS'value' +p28322 +I00 +ssS'unique' +p28323 +(dp28324 +S'editable' +p28325 +I00 +sS'value' +p28326 +I00 +ssS'properties' +p28327 +(dp28328 +S'default_value' +p28329 +(dp28330 +S'editable' +p28331 +I00 +sS'value' +p28332 +NssS'summary_default' +p28333 +(dp28334 +S'editable' +p28335 +I01 +sS'value' +p28336 +S'none' +p28337 +sssS'description' +p28338 +(dp28339 +S'editable' +p28340 +I01 +sS'value' +p28341 +g47 +sssS'current_user_can_see' +p28342 +(dp28343 +S'mandatory' +p28344 +(dp28345 +S'editable' +p28346 +I00 +sS'value' +p28347 +I00 +ssS'name' +p28348 +(dp28349 +S'editable' +p28350 +I01 +sS'value' +p28351 +S'Current User Can See' +p28352 +ssS'data_type' +p28353 +(dp28354 +S'editable' +p28355 +I00 +sS'value' +p28356 +S'checkbox' +p28357 +ssS'entity_type' +p28358 +(dp28359 +S'editable' +p28360 +I00 +sS'value' +p28361 +S'Page' +p28362 +ssS'editable' +p28363 +(dp28364 +S'editable' +p28365 +I00 +sS'value' +p28366 +I00 +ssS'unique' +p28367 +(dp28368 +S'editable' +p28369 +I00 +sS'value' +p28370 +I00 +ssS'properties' +p28371 +(dp28372 +S'default_value' +p28373 +(dp28374 +S'editable' +p28375 +I00 +sS'value' +p28376 +NssS'summary_default' +p28377 +(dp28378 +S'editable' +p28379 +I00 +sS'value' +p28380 +S'none' +p28381 +sssS'description' +p28382 +(dp28383 +S'editable' +p28384 +I01 +sS'value' +p28385 +g47 +sssS'name' +p28386 +(dp28387 +S'mandatory' +p28388 +(dp28389 +S'editable' +p28390 +I00 +sS'value' +p28391 +I01 +ssS'name' +p28392 +(dp28393 +S'editable' +p28394 +I01 +sS'value' +p28395 +S'Name' +p28396 +ssS'data_type' +p28397 +(dp28398 +S'editable' +p28399 +I00 +sS'value' +p28400 +S'text' +p28401 +ssS'entity_type' +p28402 +(dp28403 +S'editable' +p28404 +I00 +sS'value' +p28405 +S'Page' +p28406 +ssS'editable' +p28407 +(dp28408 +S'editable' +p28409 +I00 +sS'value' +p28410 +I01 +ssS'unique' +p28411 +(dp28412 +S'editable' +p28413 +I00 +sS'value' +p28414 +I00 +ssS'properties' +p28415 +(dp28416 +S'default_value' +p28417 +(dp28418 +S'editable' +p28419 +I00 +sS'value' +p28420 +NssS'summary_default' +p28421 +(dp28422 +S'editable' +p28423 +I01 +sS'value' +p28424 +S'none' +p28425 +sssS'description' +p28426 +(dp28427 +S'editable' +p28428 +I01 +sS'value' +p28429 +g47 +sssS'admin' +p28430 +(dp28431 +S'mandatory' +p28432 +(dp28433 +S'editable' +p28434 +I00 +sS'value' +p28435 +I00 +ssS'name' +p28436 +(dp28437 +S'editable' +p28438 +I01 +sS'value' +p28439 +S'Admin Only' +p28440 +ssS'data_type' +p28441 +(dp28442 +S'editable' +p28443 +I00 +sS'value' +p28444 +S'checkbox' +p28445 +ssS'entity_type' +p28446 +(dp28447 +S'editable' +p28448 +I00 +sS'value' +p28449 +S'Page' +p28450 +ssS'editable' +p28451 +(dp28452 +S'editable' +p28453 +I00 +sS'value' +p28454 +I00 +ssS'unique' +p28455 +(dp28456 +S'editable' +p28457 +I00 +sS'value' +p28458 +I00 +ssS'properties' +p28459 +(dp28460 +S'default_value' +p28461 +(dp28462 +S'editable' +p28463 +I00 +sS'value' +p28464 +I00 +ssS'summary_default' +p28465 +(dp28466 +S'editable' +p28467 +I01 +sS'value' +p28468 +S'none' +p28469 +sssS'description' +p28470 +(dp28471 +S'editable' +p28472 +I01 +sS'value' +p28473 +g47 +sssS'created_at' +p28474 +(dp28475 +S'mandatory' +p28476 +(dp28477 +S'editable' +p28478 +I00 +sS'value' +p28479 +I00 +ssS'name' +p28480 +(dp28481 +S'editable' +p28482 +I01 +sS'value' +p28483 +S'Date Created' +p28484 +ssS'data_type' +p28485 +(dp28486 +S'editable' +p28487 +I00 +sS'value' +p28488 +S'date_time' +p28489 +ssS'entity_type' +p28490 +(dp28491 +S'editable' +p28492 +I00 +sS'value' +p28493 +S'Page' +p28494 +ssS'editable' +p28495 +(dp28496 +S'editable' +p28497 +I00 +sS'value' +p28498 +I00 +ssS'unique' +p28499 +(dp28500 +S'editable' +p28501 +I00 +sS'value' +p28502 +I00 +ssS'properties' +p28503 +(dp28504 +S'default_value' +p28505 +(dp28506 +S'editable' +p28507 +I00 +sS'value' +p28508 +NssS'summary_default' +p28509 +(dp28510 +S'editable' +p28511 +I00 +sS'value' +p28512 +S'none' +p28513 +sssS'description' +p28514 +(dp28515 +S'editable' +p28516 +I01 +sS'value' +p28517 +g47 +sssS'project' +p28518 +(dp28519 +S'mandatory' +p28520 +(dp28521 +S'editable' +p28522 +I00 +sS'value' +p28523 +I00 +ssS'name' +p28524 +(dp28525 +S'editable' +p28526 +I01 +sS'value' +p28527 +S'Project' +p28528 +ssS'data_type' +p28529 +(dp28530 +S'editable' +p28531 +I00 +sS'value' +p28532 +S'entity' +p28533 +ssS'entity_type' +p28534 +(dp28535 +S'editable' +p28536 +I00 +sS'value' +p28537 +S'Page' +p28538 +ssS'editable' +p28539 +(dp28540 +S'editable' +p28541 +I00 +sS'value' +p28542 +I01 +ssS'unique' +p28543 +(dp28544 +S'editable' +p28545 +I00 +sS'value' +p28546 +I00 +ssS'properties' +p28547 +(dp28548 +S'default_value' +p28549 +(dp28550 +S'editable' +p28551 +I00 +sS'value' +p28552 +NssS'summary_default' +p28553 +(dp28554 +S'editable' +p28555 +I01 +sS'value' +p28556 +S'none' +p28557 +ssS'valid_types' +p28558 +(dp28559 +S'editable' +p28560 +I01 +sS'value' +p28561 +(lp28562 +S'Project' +p28563 +asssS'description' +p28564 +(dp28565 +S'editable' +p28566 +I01 +sS'value' +p28567 +g47 +sssS'ui_category' +p28568 +(dp28569 +S'mandatory' +p28570 +(dp28571 +S'editable' +p28572 +I00 +sS'value' +p28573 +I00 +ssS'name' +p28574 +(dp28575 +S'editable' +p28576 +I01 +sS'value' +p28577 +S'UI Category' +p28578 +ssS'data_type' +p28579 +(dp28580 +S'editable' +p28581 +I00 +sS'value' +p28582 +S'text' +p28583 +ssS'entity_type' +p28584 +(dp28585 +S'editable' +p28586 +I00 +sS'value' +p28587 +S'Page' +p28588 +ssS'editable' +p28589 +(dp28590 +S'editable' +p28591 +I00 +sS'value' +p28592 +I00 +ssS'unique' +p28593 +(dp28594 +S'editable' +p28595 +I00 +sS'value' +p28596 +I00 +ssS'properties' +p28597 +(dp28598 +S'default_value' +p28599 +(dp28600 +S'editable' +p28601 +I00 +sS'value' +p28602 +NssS'summary_default' +p28603 +(dp28604 +S'editable' +p28605 +I01 +sS'value' +p28606 +S'none' +p28607 +sssS'description' +p28608 +(dp28609 +S'editable' +p28610 +I01 +sS'value' +p28611 +g47 +sssS'tag_list' +p28612 +(dp28613 +S'mandatory' +p28614 +(dp28615 +S'editable' +p28616 +I00 +sS'value' +p28617 +I00 +ssS'name' +p28618 +(dp28619 +S'editable' +p28620 +I01 +sS'value' +p28621 +S'Tags' +p28622 +ssS'data_type' +p28623 +(dp28624 +S'editable' +p28625 +I00 +sS'value' +p28626 +S'tag_list' +p28627 +ssS'entity_type' +p28628 +(dp28629 +S'editable' +p28630 +I00 +sS'value' +p28631 +S'Page' +p28632 +ssS'editable' +p28633 +(dp28634 +S'editable' +p28635 +I00 +sS'value' +p28636 +I01 +ssS'unique' +p28637 +(dp28638 +S'editable' +p28639 +I00 +sS'value' +p28640 +I00 +ssS'properties' +p28641 +(dp28642 +S'default_value' +p28643 +(dp28644 +S'editable' +p28645 +I00 +sS'value' +p28646 +NssS'summary_default' +p28647 +(dp28648 +S'editable' +p28649 +I01 +sS'value' +p28650 +S'none' +p28651 +ssS'valid_types' +p28652 +(dp28653 +S'editable' +p28654 +I01 +sS'value' +p28655 +(lp28656 +S'Tag' +p28657 +asssS'description' +p28658 +(dp28659 +S'editable' +p28660 +I01 +sS'value' +p28661 +g47 +sssS'hits_last_month' +p28662 +(dp28663 +S'mandatory' +p28664 +(dp28665 +S'editable' +p28666 +I00 +sS'value' +p28667 +I00 +ssS'name' +p28668 +(dp28669 +S'editable' +p28670 +I01 +sS'value' +p28671 +S'Page Hits Last Month' +p28672 +ssS'data_type' +p28673 +(dp28674 +S'editable' +p28675 +I00 +sS'value' +p28676 +S'number' +p28677 +ssS'entity_type' +p28678 +(dp28679 +S'editable' +p28680 +I00 +sS'value' +p28681 +S'Page' +p28682 +ssS'editable' +p28683 +(dp28684 +S'editable' +p28685 +I00 +sS'value' +p28686 +I00 +ssS'unique' +p28687 +(dp28688 +S'editable' +p28689 +I00 +sS'value' +p28690 +I00 +ssS'properties' +p28691 +(dp28692 +S'default_value' +p28693 +(dp28694 +S'editable' +p28695 +I00 +sS'value' +p28696 +NssS'summary_default' +p28697 +(dp28698 +S'editable' +p28699 +I01 +sS'value' +p28700 +S'none' +p28701 +sssS'description' +p28702 +(dp28703 +S'editable' +p28704 +I01 +sS'value' +p28705 +g47 +ssssS'CustomEntity02' +p28706 +(dp28707 +S'open_notes_count' +p28708 +(dp28709 +S'mandatory' +p28710 +(dp28711 +S'editable' +p28712 +I00 +sS'value' +p28713 +I00 +ssS'name' +p28714 +(dp28715 +S'editable' +p28716 +I01 +sS'value' +p28717 +S'Open Notes Count' +p28718 +ssS'data_type' +p28719 +(dp28720 +S'editable' +p28721 +I00 +sS'value' +p28722 +S'text' +p28723 +ssS'entity_type' +p28724 +(dp28725 +S'editable' +p28726 +I00 +sS'value' +p28727 +S'CustomEntity02' +p28728 +ssS'editable' +p28729 +(dp28730 +S'editable' +p28731 +I00 +sS'value' +p28732 +I00 +ssS'unique' +p28733 +(dp28734 +S'editable' +p28735 +I00 +sS'value' +p28736 +I00 +ssS'properties' +p28737 +(dp28738 +S'default_value' +p28739 +(dp28740 +S'editable' +p28741 +I00 +sS'value' +p28742 +NssS'summary_default' +p28743 +(dp28744 +S'editable' +p28745 +I01 +sS'value' +p28746 +S'none' +p28747 +sssS'description' +p28748 +(dp28749 +S'editable' +p28750 +I01 +sS'value' +p28751 +g47 +sssS'code' +p28752 +(dp28753 +S'mandatory' +p28754 +(dp28755 +S'editable' +p28756 +I00 +sS'value' +p28757 +I01 +ssS'name' +p28758 +(dp28759 +S'editable' +p28760 +I01 +sS'value' +p28761 +S'Custom Entity02 Name' +p28762 +ssS'data_type' +p28763 +(dp28764 +S'editable' +p28765 +I00 +sS'value' +p28766 +S'text' +p28767 +ssS'entity_type' +p28768 +(dp28769 +S'editable' +p28770 +I00 +sS'value' +p28771 +S'CustomEntity02' +p28772 +ssS'editable' +p28773 +(dp28774 +S'editable' +p28775 +I00 +sS'value' +p28776 +I01 +ssS'unique' +p28777 +(dp28778 +S'editable' +p28779 +I00 +sS'value' +p28780 +I00 +ssS'properties' +p28781 +(dp28782 +S'default_value' +p28783 +(dp28784 +S'editable' +p28785 +I00 +sS'value' +p28786 +NssS'summary_default' +p28787 +(dp28788 +S'editable' +p28789 +I01 +sS'value' +p28790 +S'none' +p28791 +sssS'description' +p28792 +(dp28793 +S'editable' +p28794 +I01 +sS'value' +p28795 +g47 +sssS'open_notes' +p28796 +(dp28797 +S'mandatory' +p28798 +(dp28799 +S'editable' +p28800 +I00 +sS'value' +p28801 +I00 +ssS'name' +p28802 +(dp28803 +S'editable' +p28804 +I01 +sS'value' +p28805 +S'Open Notes' +p28806 +ssS'data_type' +p28807 +(dp28808 +S'editable' +p28809 +I00 +sS'value' +p28810 +S'multi_entity' +p28811 +ssS'entity_type' +p28812 +(dp28813 +S'editable' +p28814 +I00 +sS'value' +p28815 +S'CustomEntity02' +p28816 +ssS'editable' +p28817 +(dp28818 +S'editable' +p28819 +I00 +sS'value' +p28820 +I00 +ssS'unique' +p28821 +(dp28822 +S'editable' +p28823 +I00 +sS'value' +p28824 +I00 +ssS'properties' +p28825 +(dp28826 +S'default_value' +p28827 +(dp28828 +S'editable' +p28829 +I00 +sS'value' +p28830 +NssS'summary_default' +p28831 +(dp28832 +S'editable' +p28833 +I01 +sS'value' +p28834 +S'none' +p28835 +ssS'valid_types' +p28836 +(dp28837 +S'editable' +p28838 +I01 +sS'value' +p28839 +(lp28840 +S'Note' +p28841 +asssS'description' +p28842 +(dp28843 +S'editable' +p28844 +I01 +sS'value' +p28845 +g47 +sssS'description' +p28846 +(dp28847 +S'mandatory' +p28848 +(dp28849 +S'editable' +p28850 +I00 +sS'value' +p28851 +I00 +ssS'name' +p28852 +(dp28853 +S'editable' +p28854 +I01 +sS'value' +p28855 +S'Description' +p28856 +ssS'data_type' +p28857 +(dp28858 +S'editable' +p28859 +I00 +sS'value' +p28860 +S'text' +p28861 +ssS'entity_type' +p28862 +(dp28863 +S'editable' +p28864 +I00 +sS'value' +p28865 +S'CustomEntity02' +p28866 +ssS'editable' +p28867 +(dp28868 +S'editable' +p28869 +I00 +sS'value' +p28870 +I01 +ssS'unique' +p28871 +(dp28872 +S'editable' +p28873 +I00 +sS'value' +p28874 +I00 +ssS'properties' +p28875 +(dp28876 +S'default_value' +p28877 +(dp28878 +S'editable' +p28879 +I00 +sS'value' +p28880 +NssS'summary_default' +p28881 +(dp28882 +S'editable' +p28883 +I01 +sS'value' +p28884 +S'none' +p28885 +sssS'description' +p28886 +(dp28887 +S'editable' +p28888 +I01 +sS'value' +p28889 +g47 +sssS'created_at' +p28890 +(dp28891 +S'mandatory' +p28892 +(dp28893 +S'editable' +p28894 +I00 +sS'value' +p28895 +I00 +ssS'name' +p28896 +(dp28897 +S'editable' +p28898 +I01 +sS'value' +p28899 +S'Date Created' +p28900 +ssS'data_type' +p28901 +(dp28902 +S'editable' +p28903 +I00 +sS'value' +p28904 +S'date_time' +p28905 +ssS'entity_type' +p28906 +(dp28907 +S'editable' +p28908 +I00 +sS'value' +p28909 +S'CustomEntity02' +p28910 +ssS'editable' +p28911 +(dp28912 +S'editable' +p28913 +I00 +sS'value' +p28914 +I00 +ssS'unique' +p28915 +(dp28916 +S'editable' +p28917 +I00 +sS'value' +p28918 +I00 +ssS'properties' +p28919 +(dp28920 +S'default_value' +p28921 +(dp28922 +S'editable' +p28923 +I00 +sS'value' +p28924 +NssS'summary_default' +p28925 +(dp28926 +S'editable' +p28927 +I01 +sS'value' +p28928 +S'none' +p28929 +sssS'description' +p28930 +(dp28931 +S'editable' +p28932 +I01 +sS'value' +p28933 +g47 +sssS'updated_at' +p28934 +(dp28935 +S'mandatory' +p28936 +(dp28937 +S'editable' +p28938 +I00 +sS'value' +p28939 +I00 +ssS'name' +p28940 +(dp28941 +S'editable' +p28942 +I01 +sS'value' +p28943 +S'Date Updated' +p28944 +ssS'data_type' +p28945 +(dp28946 +S'editable' +p28947 +I00 +sS'value' +p28948 +S'date_time' +p28949 +ssS'entity_type' +p28950 +(dp28951 +S'editable' +p28952 +I00 +sS'value' +p28953 +S'CustomEntity02' +p28954 +ssS'editable' +p28955 +(dp28956 +S'editable' +p28957 +I00 +sS'value' +p28958 +I00 +ssS'unique' +p28959 +(dp28960 +S'editable' +p28961 +I00 +sS'value' +p28962 +I00 +ssS'properties' +p28963 +(dp28964 +S'default_value' +p28965 +(dp28966 +S'editable' +p28967 +I00 +sS'value' +p28968 +NssS'summary_default' +p28969 +(dp28970 +S'editable' +p28971 +I01 +sS'value' +p28972 +S'none' +p28973 +sssS'description' +p28974 +(dp28975 +S'editable' +p28976 +I01 +sS'value' +p28977 +g47 +sssS'created_by' +p28978 +(dp28979 +S'mandatory' +p28980 +(dp28981 +S'editable' +p28982 +I00 +sS'value' +p28983 +I00 +ssS'name' +p28984 +(dp28985 +S'editable' +p28986 +I01 +sS'value' +p28987 +S'Created by' +p28988 +ssS'data_type' +p28989 +(dp28990 +S'editable' +p28991 +I00 +sS'value' +p28992 +S'entity' +p28993 +ssS'entity_type' +p28994 +(dp28995 +S'editable' +p28996 +I00 +sS'value' +p28997 +S'CustomEntity02' +p28998 +ssS'editable' +p28999 +(dp29000 +S'editable' +p29001 +I00 +sS'value' +p29002 +I00 +ssS'unique' +p29003 +(dp29004 +S'editable' +p29005 +I00 +sS'value' +p29006 +I00 +ssS'properties' +p29007 +(dp29008 +S'default_value' +p29009 +(dp29010 +S'editable' +p29011 +I00 +sS'value' +p29012 +NssS'summary_default' +p29013 +(dp29014 +S'editable' +p29015 +I01 +sS'value' +p29016 +S'none' +p29017 +ssS'valid_types' +p29018 +(dp29019 +S'editable' +p29020 +I01 +sS'value' +p29021 +(lp29022 +S'HumanUser' +p29023 +aS'ApiUser' +p29024 +asssS'description' +p29025 +(dp29026 +S'editable' +p29027 +I01 +sS'value' +p29028 +g47 +sssS'id' +p29029 +(dp29030 +S'mandatory' +p29031 +(dp29032 +S'editable' +p29033 +I00 +sS'value' +p29034 +I00 +ssS'name' +p29035 +(dp29036 +S'editable' +p29037 +I01 +sS'value' +p29038 +S'Id' +p29039 +ssS'data_type' +p29040 +(dp29041 +S'editable' +p29042 +I00 +sS'value' +p29043 +S'number' +p29044 +ssS'entity_type' +p29045 +(dp29046 +S'editable' +p29047 +I00 +sS'value' +p29048 +S'CustomEntity02' +p29049 +ssS'editable' +p29050 +(dp29051 +S'editable' +p29052 +I00 +sS'value' +p29053 +I00 +ssS'unique' +p29054 +(dp29055 +S'editable' +p29056 +I00 +sS'value' +p29057 +I00 +ssS'properties' +p29058 +(dp29059 +S'default_value' +p29060 +(dp29061 +S'editable' +p29062 +I00 +sS'value' +p29063 +NssS'summary_default' +p29064 +(dp29065 +S'editable' +p29066 +I01 +sS'value' +p29067 +S'none' +p29068 +sssS'description' +p29069 +(dp29070 +S'editable' +p29071 +I01 +sS'value' +p29072 +g47 +sssS'project' +p29073 +(dp29074 +S'mandatory' +p29075 +(dp29076 +S'editable' +p29077 +I00 +sS'value' +p29078 +I00 +ssS'name' +p29079 +(dp29080 +S'editable' +p29081 +I01 +sS'value' +p29082 +S'Project' +p29083 +ssS'data_type' +p29084 +(dp29085 +S'editable' +p29086 +I00 +sS'value' +p29087 +S'entity' +p29088 +ssS'entity_type' +p29089 +(dp29090 +S'editable' +p29091 +I00 +sS'value' +p29092 +S'CustomEntity02' +p29093 +ssS'editable' +p29094 +(dp29095 +S'editable' +p29096 +I00 +sS'value' +p29097 +I01 +ssS'unique' +p29098 +(dp29099 +S'editable' +p29100 +I00 +sS'value' +p29101 +I00 +ssS'properties' +p29102 +(dp29103 +S'default_value' +p29104 +(dp29105 +S'editable' +p29106 +I00 +sS'value' +p29107 +NssS'summary_default' +p29108 +(dp29109 +S'editable' +p29110 +I01 +sS'value' +p29111 +S'none' +p29112 +ssS'valid_types' +p29113 +(dp29114 +S'editable' +p29115 +I01 +sS'value' +p29116 +(lp29117 +S'Project' +p29118 +asssS'description' +p29119 +(dp29120 +S'editable' +p29121 +I01 +sS'value' +p29122 +g47 +sssS'filmstrip_image' +p29123 +(dp29124 +S'mandatory' +p29125 +(dp29126 +S'editable' +p29127 +I00 +sS'value' +p29128 +I00 +ssS'name' +p29129 +(dp29130 +S'editable' +p29131 +I01 +sS'value' +p29132 +S'Filmstrip Thumbnail' +p29133 +ssS'data_type' +p29134 +(dp29135 +S'editable' +p29136 +I00 +sS'value' +p29137 +S'image' +p29138 +ssS'entity_type' +p29139 +(dp29140 +S'editable' +p29141 +I00 +sS'value' +p29142 +S'CustomEntity02' +p29143 +ssS'editable' +p29144 +(dp29145 +S'editable' +p29146 +I00 +sS'value' +p29147 +I01 +ssS'unique' +p29148 +(dp29149 +S'editable' +p29150 +I00 +sS'value' +p29151 +I00 +ssS'properties' +p29152 +(dp29153 +S'default_value' +p29154 +(dp29155 +S'editable' +p29156 +I00 +sS'value' +p29157 +NssS'summary_default' +p29158 +(dp29159 +S'editable' +p29160 +I01 +sS'value' +p29161 +S'none' +p29162 +sssS'description' +p29163 +(dp29164 +S'editable' +p29165 +I01 +sS'value' +p29166 +g47 +sssS'sg_status_list' +p29167 +(dp29168 +S'mandatory' +p29169 +(dp29170 +S'editable' +p29171 +I00 +sS'value' +p29172 +I00 +ssS'name' +p29173 +(dp29174 +S'editable' +p29175 +I01 +sS'value' +p29176 +S'Status' +p29177 +ssS'data_type' +p29178 +(dp29179 +S'editable' +p29180 +I00 +sS'value' +p29181 +S'status_list' +p29182 +ssS'entity_type' +p29183 +(dp29184 +S'editable' +p29185 +I00 +sS'value' +p29186 +S'CustomEntity02' +p29187 +ssS'editable' +p29188 +(dp29189 +S'editable' +p29190 +I00 +sS'value' +p29191 +I01 +ssS'unique' +p29192 +(dp29193 +S'editable' +p29194 +I00 +sS'value' +p29195 +I00 +ssS'properties' +p29196 +(dp29197 +S'default_value' +p29198 +(dp29199 +S'editable' +p29200 +I01 +sS'value' +p29201 +S'wtg' +p29202 +ssS'valid_values' +p29203 +(dp29204 +S'editable' +p29205 +I01 +sS'value' +p29206 +(lp29207 +S'cmpt' +p29208 +aS'ip' +p29209 +aS'wtg' +p29210 +assS'summary_default' +p29211 +(dp29212 +S'editable' +p29213 +I01 +sS'value' +p29214 +S'none' +p29215 +sssS'description' +p29216 +(dp29217 +S'editable' +p29218 +I01 +sS'value' +p29219 +g47 +sssS'image' +p29220 +(dp29221 +S'mandatory' +p29222 +(dp29223 +S'editable' +p29224 +I00 +sS'value' +p29225 +I00 +ssS'name' +p29226 +(dp29227 +S'editable' +p29228 +I01 +sS'value' +p29229 +S'Thumbnail' +p29230 +ssS'data_type' +p29231 +(dp29232 +S'editable' +p29233 +I00 +sS'value' +p29234 +S'image' +p29235 +ssS'entity_type' +p29236 +(dp29237 +S'editable' +p29238 +I00 +sS'value' +p29239 +S'CustomEntity02' +p29240 +ssS'editable' +p29241 +(dp29242 +S'editable' +p29243 +I00 +sS'value' +p29244 +I01 +ssS'unique' +p29245 +(dp29246 +S'editable' +p29247 +I00 +sS'value' +p29248 +I00 +ssS'properties' +p29249 +(dp29250 +S'default_value' +p29251 +(dp29252 +S'editable' +p29253 +I00 +sS'value' +p29254 +NssS'summary_default' +p29255 +(dp29256 +S'editable' +p29257 +I01 +sS'value' +p29258 +S'none' +p29259 +sssS'description' +p29260 +(dp29261 +S'editable' +p29262 +I01 +sS'value' +p29263 +g47 +sssS'cached_display_name' +p29264 +(dp29265 +S'mandatory' +p29266 +(dp29267 +S'editable' +p29268 +I00 +sS'value' +p29269 +I00 +ssS'name' +p29270 +(dp29271 +S'editable' +p29272 +I01 +sS'value' +p29273 +S'Cached Display Name' +p29274 +ssS'data_type' +p29275 +(dp29276 +S'editable' +p29277 +I00 +sS'value' +p29278 +S'text' +p29279 +ssS'entity_type' +p29280 +(dp29281 +S'editable' +p29282 +I00 +sS'value' +p29283 +S'CustomEntity02' +p29284 +ssS'editable' +p29285 +(dp29286 +S'editable' +p29287 +I00 +sS'value' +p29288 +I01 +ssS'unique' +p29289 +(dp29290 +S'editable' +p29291 +I00 +sS'value' +p29292 +I00 +ssS'properties' +p29293 +(dp29294 +S'default_value' +p29295 +(dp29296 +S'editable' +p29297 +I00 +sS'value' +p29298 +NssS'summary_default' +p29299 +(dp29300 +S'editable' +p29301 +I00 +sS'value' +p29302 +S'none' +p29303 +sssS'description' +p29304 +(dp29305 +S'editable' +p29306 +I01 +sS'value' +p29307 +g47 +sssS'tag_list' +p29308 +(dp29309 +S'mandatory' +p29310 +(dp29311 +S'editable' +p29312 +I00 +sS'value' +p29313 +I00 +ssS'name' +p29314 +(dp29315 +S'editable' +p29316 +I01 +sS'value' +p29317 +S'Tags' +p29318 +ssS'data_type' +p29319 +(dp29320 +S'editable' +p29321 +I00 +sS'value' +p29322 +S'tag_list' +p29323 +ssS'entity_type' +p29324 +(dp29325 +S'editable' +p29326 +I00 +sS'value' +p29327 +S'CustomEntity02' +p29328 +ssS'editable' +p29329 +(dp29330 +S'editable' +p29331 +I00 +sS'value' +p29332 +I01 +ssS'unique' +p29333 +(dp29334 +S'editable' +p29335 +I00 +sS'value' +p29336 +I00 +ssS'properties' +p29337 +(dp29338 +S'default_value' +p29339 +(dp29340 +S'editable' +p29341 +I00 +sS'value' +p29342 +NssS'summary_default' +p29343 +(dp29344 +S'editable' +p29345 +I01 +sS'value' +p29346 +S'none' +p29347 +ssS'valid_types' +p29348 +(dp29349 +S'editable' +p29350 +I01 +sS'value' +p29351 +(lp29352 +S'Tag' +p29353 +asssS'description' +p29354 +(dp29355 +S'editable' +p29356 +I01 +sS'value' +p29357 +g47 +sssS'notes' +p29358 +(dp29359 +S'mandatory' +p29360 +(dp29361 +S'editable' +p29362 +I00 +sS'value' +p29363 +I00 +ssS'name' +p29364 +(dp29365 +S'editable' +p29366 +I01 +sS'value' +p29367 +S'Notes' +p29368 +ssS'data_type' +p29369 +(dp29370 +S'editable' +p29371 +I00 +sS'value' +p29372 +S'multi_entity' +p29373 +ssS'entity_type' +p29374 +(dp29375 +S'editable' +p29376 +I00 +sS'value' +p29377 +S'CustomEntity02' +p29378 +ssS'editable' +p29379 +(dp29380 +S'editable' +p29381 +I00 +sS'value' +p29382 +I01 +ssS'unique' +p29383 +(dp29384 +S'editable' +p29385 +I00 +sS'value' +p29386 +I00 +ssS'properties' +p29387 +(dp29388 +S'default_value' +p29389 +(dp29390 +S'editable' +p29391 +I00 +sS'value' +p29392 +NssS'summary_default' +p29393 +(dp29394 +S'editable' +p29395 +I01 +sS'value' +p29396 +S'none' +p29397 +ssS'valid_types' +p29398 +(dp29399 +S'editable' +p29400 +I01 +sS'value' +p29401 +(lp29402 +S'Note' +p29403 +asssS'description' +p29404 +(dp29405 +S'editable' +p29406 +I01 +sS'value' +p29407 +g47 +sssS'updated_by' +p29408 +(dp29409 +S'mandatory' +p29410 +(dp29411 +S'editable' +p29412 +I00 +sS'value' +p29413 +I00 +ssS'name' +p29414 +(dp29415 +S'editable' +p29416 +I01 +sS'value' +p29417 +S'Updated by' +p29418 +ssS'data_type' +p29419 +(dp29420 +S'editable' +p29421 +I00 +sS'value' +p29422 +S'entity' +p29423 +ssS'entity_type' +p29424 +(dp29425 +S'editable' +p29426 +I00 +sS'value' +p29427 +S'CustomEntity02' +p29428 +ssS'editable' +p29429 +(dp29430 +S'editable' +p29431 +I00 +sS'value' +p29432 +I00 +ssS'unique' +p29433 +(dp29434 +S'editable' +p29435 +I00 +sS'value' +p29436 +I00 +ssS'properties' +p29437 +(dp29438 +S'default_value' +p29439 +(dp29440 +S'editable' +p29441 +I00 +sS'value' +p29442 +NssS'summary_default' +p29443 +(dp29444 +S'editable' +p29445 +I01 +sS'value' +p29446 +S'none' +p29447 +ssS'valid_types' +p29448 +(dp29449 +S'editable' +p29450 +I01 +sS'value' +p29451 +(lp29452 +S'HumanUser' +p29453 +aS'ApiUser' +p29454 +asssS'description' +p29455 +(dp29456 +S'editable' +p29457 +I01 +sS'value' +p29458 +g47 +ssssS'CustomEntity03' +p29459 +(dp29460 +S'open_notes_count' +p29461 +(dp29462 +S'mandatory' +p29463 +(dp29464 +S'editable' +p29465 +I00 +sS'value' +p29466 +I00 +ssS'name' +p29467 +(dp29468 +S'editable' +p29469 +I01 +sS'value' +p29470 +S'Open Notes Count' +p29471 +ssS'data_type' +p29472 +(dp29473 +S'editable' +p29474 +I00 +sS'value' +p29475 +S'text' +p29476 +ssS'entity_type' +p29477 +(dp29478 +S'editable' +p29479 +I00 +sS'value' +p29480 +S'CustomEntity03' +p29481 +ssS'editable' +p29482 +(dp29483 +S'editable' +p29484 +I00 +sS'value' +p29485 +I00 +ssS'unique' +p29486 +(dp29487 +S'editable' +p29488 +I00 +sS'value' +p29489 +I00 +ssS'properties' +p29490 +(dp29491 +S'default_value' +p29492 +(dp29493 +S'editable' +p29494 +I00 +sS'value' +p29495 +NssS'summary_default' +p29496 +(dp29497 +S'editable' +p29498 +I01 +sS'value' +p29499 +S'none' +p29500 +sssS'description' +p29501 +(dp29502 +S'editable' +p29503 +I01 +sS'value' +p29504 +g47 +sssS'code' +p29505 +(dp29506 +S'mandatory' +p29507 +(dp29508 +S'editable' +p29509 +I00 +sS'value' +p29510 +I01 +ssS'name' +p29511 +(dp29512 +S'editable' +p29513 +I01 +sS'value' +p29514 +S'Custom Entity03 Name' +p29515 +ssS'data_type' +p29516 +(dp29517 +S'editable' +p29518 +I00 +sS'value' +p29519 +S'text' +p29520 +ssS'entity_type' +p29521 +(dp29522 +S'editable' +p29523 +I00 +sS'value' +p29524 +S'CustomEntity03' +p29525 +ssS'editable' +p29526 +(dp29527 +S'editable' +p29528 +I00 +sS'value' +p29529 +I01 +ssS'unique' +p29530 +(dp29531 +S'editable' +p29532 +I00 +sS'value' +p29533 +I00 +ssS'properties' +p29534 +(dp29535 +S'default_value' +p29536 +(dp29537 +S'editable' +p29538 +I00 +sS'value' +p29539 +NssS'summary_default' +p29540 +(dp29541 +S'editable' +p29542 +I01 +sS'value' +p29543 +S'none' +p29544 +sssS'description' +p29545 +(dp29546 +S'editable' +p29547 +I01 +sS'value' +p29548 +g47 +sssS'open_notes' +p29549 +(dp29550 +S'mandatory' +p29551 +(dp29552 +S'editable' +p29553 +I00 +sS'value' +p29554 +I00 +ssS'name' +p29555 +(dp29556 +S'editable' +p29557 +I01 +sS'value' +p29558 +S'Open Notes' +p29559 +ssS'data_type' +p29560 +(dp29561 +S'editable' +p29562 +I00 +sS'value' +p29563 +S'multi_entity' +p29564 +ssS'entity_type' +p29565 +(dp29566 +S'editable' +p29567 +I00 +sS'value' +p29568 +S'CustomEntity03' +p29569 +ssS'editable' +p29570 +(dp29571 +S'editable' +p29572 +I00 +sS'value' +p29573 +I00 +ssS'unique' +p29574 +(dp29575 +S'editable' +p29576 +I00 +sS'value' +p29577 +I00 +ssS'properties' +p29578 +(dp29579 +S'default_value' +p29580 +(dp29581 +S'editable' +p29582 +I00 +sS'value' +p29583 +NssS'summary_default' +p29584 +(dp29585 +S'editable' +p29586 +I01 +sS'value' +p29587 +S'none' +p29588 +ssS'valid_types' +p29589 +(dp29590 +S'editable' +p29591 +I01 +sS'value' +p29592 +(lp29593 +S'Note' +p29594 +asssS'description' +p29595 +(dp29596 +S'editable' +p29597 +I01 +sS'value' +p29598 +g47 +sssS'description' +p29599 +(dp29600 +S'mandatory' +p29601 +(dp29602 +S'editable' +p29603 +I00 +sS'value' +p29604 +I00 +ssS'name' +p29605 +(dp29606 +S'editable' +p29607 +I01 +sS'value' +p29608 +S'Description' +p29609 +ssS'data_type' +p29610 +(dp29611 +S'editable' +p29612 +I00 +sS'value' +p29613 +S'text' +p29614 +ssS'entity_type' +p29615 +(dp29616 +S'editable' +p29617 +I00 +sS'value' +p29618 +S'CustomEntity03' +p29619 +ssS'editable' +p29620 +(dp29621 +S'editable' +p29622 +I00 +sS'value' +p29623 +I01 +ssS'unique' +p29624 +(dp29625 +S'editable' +p29626 +I00 +sS'value' +p29627 +I00 +ssS'properties' +p29628 +(dp29629 +S'default_value' +p29630 +(dp29631 +S'editable' +p29632 +I00 +sS'value' +p29633 +NssS'summary_default' +p29634 +(dp29635 +S'editable' +p29636 +I01 +sS'value' +p29637 +S'none' +p29638 +sssS'description' +p29639 +(dp29640 +S'editable' +p29641 +I01 +sS'value' +p29642 +g47 +sssS'created_at' +p29643 +(dp29644 +S'mandatory' +p29645 +(dp29646 +S'editable' +p29647 +I00 +sS'value' +p29648 +I00 +ssS'name' +p29649 +(dp29650 +S'editable' +p29651 +I01 +sS'value' +p29652 +S'Date Created' +p29653 +ssS'data_type' +p29654 +(dp29655 +S'editable' +p29656 +I00 +sS'value' +p29657 +S'date_time' +p29658 +ssS'entity_type' +p29659 +(dp29660 +S'editable' +p29661 +I00 +sS'value' +p29662 +S'CustomEntity03' +p29663 +ssS'editable' +p29664 +(dp29665 +S'editable' +p29666 +I00 +sS'value' +p29667 +I00 +ssS'unique' +p29668 +(dp29669 +S'editable' +p29670 +I00 +sS'value' +p29671 +I00 +ssS'properties' +p29672 +(dp29673 +S'default_value' +p29674 +(dp29675 +S'editable' +p29676 +I00 +sS'value' +p29677 +NssS'summary_default' +p29678 +(dp29679 +S'editable' +p29680 +I01 +sS'value' +p29681 +S'none' +p29682 +sssS'description' +p29683 +(dp29684 +S'editable' +p29685 +I01 +sS'value' +p29686 +g47 +sssS'updated_at' +p29687 +(dp29688 +S'mandatory' +p29689 +(dp29690 +S'editable' +p29691 +I00 +sS'value' +p29692 +I00 +ssS'name' +p29693 +(dp29694 +S'editable' +p29695 +I01 +sS'value' +p29696 +S'Date Updated' +p29697 +ssS'data_type' +p29698 +(dp29699 +S'editable' +p29700 +I00 +sS'value' +p29701 +S'date_time' +p29702 +ssS'entity_type' +p29703 +(dp29704 +S'editable' +p29705 +I00 +sS'value' +p29706 +S'CustomEntity03' +p29707 +ssS'editable' +p29708 +(dp29709 +S'editable' +p29710 +I00 +sS'value' +p29711 +I00 +ssS'unique' +p29712 +(dp29713 +S'editable' +p29714 +I00 +sS'value' +p29715 +I00 +ssS'properties' +p29716 +(dp29717 +S'default_value' +p29718 +(dp29719 +S'editable' +p29720 +I00 +sS'value' +p29721 +NssS'summary_default' +p29722 +(dp29723 +S'editable' +p29724 +I01 +sS'value' +p29725 +S'none' +p29726 +sssS'description' +p29727 +(dp29728 +S'editable' +p29729 +I01 +sS'value' +p29730 +g47 +sssS'created_by' +p29731 +(dp29732 +S'mandatory' +p29733 +(dp29734 +S'editable' +p29735 +I00 +sS'value' +p29736 +I00 +ssS'name' +p29737 +(dp29738 +S'editable' +p29739 +I01 +sS'value' +p29740 +S'Created by' +p29741 +ssS'data_type' +p29742 +(dp29743 +S'editable' +p29744 +I00 +sS'value' +p29745 +S'entity' +p29746 +ssS'entity_type' +p29747 +(dp29748 +S'editable' +p29749 +I00 +sS'value' +p29750 +S'CustomEntity03' +p29751 +ssS'editable' +p29752 +(dp29753 +S'editable' +p29754 +I00 +sS'value' +p29755 +I00 +ssS'unique' +p29756 +(dp29757 +S'editable' +p29758 +I00 +sS'value' +p29759 +I00 +ssS'properties' +p29760 +(dp29761 +S'default_value' +p29762 +(dp29763 +S'editable' +p29764 +I00 +sS'value' +p29765 +NssS'summary_default' +p29766 +(dp29767 +S'editable' +p29768 +I01 +sS'value' +p29769 +S'none' +p29770 +ssS'valid_types' +p29771 +(dp29772 +S'editable' +p29773 +I01 +sS'value' +p29774 +(lp29775 +S'HumanUser' +p29776 +aS'ApiUser' +p29777 +asssS'description' +p29778 +(dp29779 +S'editable' +p29780 +I01 +sS'value' +p29781 +g47 +sssS'project' +p29782 +(dp29783 +S'mandatory' +p29784 +(dp29785 +S'editable' +p29786 +I00 +sS'value' +p29787 +I00 +ssS'name' +p29788 +(dp29789 +S'editable' +p29790 +I01 +sS'value' +p29791 +S'Project' +p29792 +ssS'data_type' +p29793 +(dp29794 +S'editable' +p29795 +I00 +sS'value' +p29796 +S'entity' +p29797 +ssS'entity_type' +p29798 +(dp29799 +S'editable' +p29800 +I00 +sS'value' +p29801 +S'CustomEntity03' +p29802 +ssS'editable' +p29803 +(dp29804 +S'editable' +p29805 +I00 +sS'value' +p29806 +I01 +ssS'unique' +p29807 +(dp29808 +S'editable' +p29809 +I00 +sS'value' +p29810 +I00 +ssS'properties' +p29811 +(dp29812 +S'default_value' +p29813 +(dp29814 +S'editable' +p29815 +I00 +sS'value' +p29816 +NssS'summary_default' +p29817 +(dp29818 +S'editable' +p29819 +I01 +sS'value' +p29820 +S'none' +p29821 +ssS'valid_types' +p29822 +(dp29823 +S'editable' +p29824 +I01 +sS'value' +p29825 +(lp29826 +S'Project' +p29827 +asssS'description' +p29828 +(dp29829 +S'editable' +p29830 +I01 +sS'value' +p29831 +g47 +sssS'filmstrip_image' +p29832 +(dp29833 +S'mandatory' +p29834 +(dp29835 +S'editable' +p29836 +I00 +sS'value' +p29837 +I00 +ssS'name' +p29838 +(dp29839 +S'editable' +p29840 +I01 +sS'value' +p29841 +S'Filmstrip Thumbnail' +p29842 +ssS'data_type' +p29843 +(dp29844 +S'editable' +p29845 +I00 +sS'value' +p29846 +S'image' +p29847 +ssS'entity_type' +p29848 +(dp29849 +S'editable' +p29850 +I00 +sS'value' +p29851 +S'CustomEntity03' +p29852 +ssS'editable' +p29853 +(dp29854 +S'editable' +p29855 +I00 +sS'value' +p29856 +I01 +ssS'unique' +p29857 +(dp29858 +S'editable' +p29859 +I00 +sS'value' +p29860 +I00 +ssS'properties' +p29861 +(dp29862 +S'default_value' +p29863 +(dp29864 +S'editable' +p29865 +I00 +sS'value' +p29866 +NssS'summary_default' +p29867 +(dp29868 +S'editable' +p29869 +I01 +sS'value' +p29870 +S'none' +p29871 +sssS'description' +p29872 +(dp29873 +S'editable' +p29874 +I01 +sS'value' +p29875 +g47 +sssS'sg_status_list' +p29876 +(dp29877 +S'mandatory' +p29878 +(dp29879 +S'editable' +p29880 +I00 +sS'value' +p29881 +I00 +ssS'name' +p29882 +(dp29883 +S'editable' +p29884 +I01 +sS'value' +p29885 +S'Status' +p29886 +ssS'data_type' +p29887 +(dp29888 +S'editable' +p29889 +I00 +sS'value' +p29890 +S'status_list' +p29891 +ssS'entity_type' +p29892 +(dp29893 +S'editable' +p29894 +I00 +sS'value' +p29895 +S'CustomEntity03' +p29896 +ssS'editable' +p29897 +(dp29898 +S'editable' +p29899 +I00 +sS'value' +p29900 +I01 +ssS'unique' +p29901 +(dp29902 +S'editable' +p29903 +I00 +sS'value' +p29904 +I00 +ssS'properties' +p29905 +(dp29906 +S'default_value' +p29907 +(dp29908 +S'editable' +p29909 +I01 +sS'value' +p29910 +S'wtg' +p29911 +ssS'valid_values' +p29912 +(dp29913 +S'editable' +p29914 +I01 +sS'value' +p29915 +(lp29916 +S'cmpt' +p29917 +aS'ip' +p29918 +aS'wtg' +p29919 +assS'summary_default' +p29920 +(dp29921 +S'editable' +p29922 +I01 +sS'value' +p29923 +S'none' +p29924 +sssS'description' +p29925 +(dp29926 +S'editable' +p29927 +I01 +sS'value' +p29928 +g47 +sssS'notes' +p29929 +(dp29930 +S'mandatory' +p29931 +(dp29932 +S'editable' +p29933 +I00 +sS'value' +p29934 +I00 +ssS'name' +p29935 +(dp29936 +S'editable' +p29937 +I01 +sS'value' +p29938 +S'Notes' +p29939 +ssS'data_type' +p29940 +(dp29941 +S'editable' +p29942 +I00 +sS'value' +p29943 +S'multi_entity' +p29944 +ssS'entity_type' +p29945 +(dp29946 +S'editable' +p29947 +I00 +sS'value' +p29948 +S'CustomEntity03' +p29949 +ssS'editable' +p29950 +(dp29951 +S'editable' +p29952 +I00 +sS'value' +p29953 +I01 +ssS'unique' +p29954 +(dp29955 +S'editable' +p29956 +I00 +sS'value' +p29957 +I00 +ssS'properties' +p29958 +(dp29959 +S'default_value' +p29960 +(dp29961 +S'editable' +p29962 +I00 +sS'value' +p29963 +NssS'summary_default' +p29964 +(dp29965 +S'editable' +p29966 +I01 +sS'value' +p29967 +S'none' +p29968 +ssS'valid_types' +p29969 +(dp29970 +S'editable' +p29971 +I01 +sS'value' +p29972 +(lp29973 +S'Note' +p29974 +asssS'description' +p29975 +(dp29976 +S'editable' +p29977 +I01 +sS'value' +p29978 +g47 +sssS'image' +p29979 +(dp29980 +S'mandatory' +p29981 +(dp29982 +S'editable' +p29983 +I00 +sS'value' +p29984 +I00 +ssS'name' +p29985 +(dp29986 +S'editable' +p29987 +I01 +sS'value' +p29988 +S'Thumbnail' +p29989 +ssS'data_type' +p29990 +(dp29991 +S'editable' +p29992 +I00 +sS'value' +p29993 +S'image' +p29994 +ssS'entity_type' +p29995 +(dp29996 +S'editable' +p29997 +I00 +sS'value' +p29998 +S'CustomEntity03' +p29999 +ssS'editable' +p30000 +(dp30001 +S'editable' +p30002 +I00 +sS'value' +p30003 +I01 +ssS'unique' +p30004 +(dp30005 +S'editable' +p30006 +I00 +sS'value' +p30007 +I00 +ssS'properties' +p30008 +(dp30009 +S'default_value' +p30010 +(dp30011 +S'editable' +p30012 +I00 +sS'value' +p30013 +NssS'summary_default' +p30014 +(dp30015 +S'editable' +p30016 +I01 +sS'value' +p30017 +S'none' +p30018 +sssS'description' +p30019 +(dp30020 +S'editable' +p30021 +I01 +sS'value' +p30022 +g47 +sssS'cached_display_name' +p30023 +(dp30024 +S'mandatory' +p30025 +(dp30026 +S'editable' +p30027 +I00 +sS'value' +p30028 +I00 +ssS'name' +p30029 +(dp30030 +S'editable' +p30031 +I01 +sS'value' +p30032 +S'Cached Display Name' +p30033 +ssS'data_type' +p30034 +(dp30035 +S'editable' +p30036 +I00 +sS'value' +p30037 +S'text' +p30038 +ssS'entity_type' +p30039 +(dp30040 +S'editable' +p30041 +I00 +sS'value' +p30042 +S'CustomEntity03' +p30043 +ssS'editable' +p30044 +(dp30045 +S'editable' +p30046 +I00 +sS'value' +p30047 +I01 +ssS'unique' +p30048 +(dp30049 +S'editable' +p30050 +I00 +sS'value' +p30051 +I00 +ssS'properties' +p30052 +(dp30053 +S'default_value' +p30054 +(dp30055 +S'editable' +p30056 +I00 +sS'value' +p30057 +NssS'summary_default' +p30058 +(dp30059 +S'editable' +p30060 +I00 +sS'value' +p30061 +S'none' +p30062 +sssS'description' +p30063 +(dp30064 +S'editable' +p30065 +I01 +sS'value' +p30066 +g47 +sssS'tag_list' +p30067 +(dp30068 +S'mandatory' +p30069 +(dp30070 +S'editable' +p30071 +I00 +sS'value' +p30072 +I00 +ssS'name' +p30073 +(dp30074 +S'editable' +p30075 +I01 +sS'value' +p30076 +S'Tags' +p30077 +ssS'data_type' +p30078 +(dp30079 +S'editable' +p30080 +I00 +sS'value' +p30081 +S'tag_list' +p30082 +ssS'entity_type' +p30083 +(dp30084 +S'editable' +p30085 +I00 +sS'value' +p30086 +S'CustomEntity03' +p30087 +ssS'editable' +p30088 +(dp30089 +S'editable' +p30090 +I00 +sS'value' +p30091 +I01 +ssS'unique' +p30092 +(dp30093 +S'editable' +p30094 +I00 +sS'value' +p30095 +I00 +ssS'properties' +p30096 +(dp30097 +S'default_value' +p30098 +(dp30099 +S'editable' +p30100 +I00 +sS'value' +p30101 +NssS'summary_default' +p30102 +(dp30103 +S'editable' +p30104 +I01 +sS'value' +p30105 +S'none' +p30106 +ssS'valid_types' +p30107 +(dp30108 +S'editable' +p30109 +I01 +sS'value' +p30110 +(lp30111 +S'Tag' +p30112 +asssS'description' +p30113 +(dp30114 +S'editable' +p30115 +I01 +sS'value' +p30116 +g47 +sssS'id' +p30117 +(dp30118 +S'mandatory' +p30119 +(dp30120 +S'editable' +p30121 +I00 +sS'value' +p30122 +I00 +ssS'name' +p30123 +(dp30124 +S'editable' +p30125 +I01 +sS'value' +p30126 +S'Id' +p30127 +ssS'data_type' +p30128 +(dp30129 +S'editable' +p30130 +I00 +sS'value' +p30131 +S'number' +p30132 +ssS'entity_type' +p30133 +(dp30134 +S'editable' +p30135 +I00 +sS'value' +p30136 +S'CustomEntity03' +p30137 +ssS'editable' +p30138 +(dp30139 +S'editable' +p30140 +I00 +sS'value' +p30141 +I00 +ssS'unique' +p30142 +(dp30143 +S'editable' +p30144 +I00 +sS'value' +p30145 +I00 +ssS'properties' +p30146 +(dp30147 +S'default_value' +p30148 +(dp30149 +S'editable' +p30150 +I00 +sS'value' +p30151 +NssS'summary_default' +p30152 +(dp30153 +S'editable' +p30154 +I01 +sS'value' +p30155 +S'none' +p30156 +sssS'description' +p30157 +(dp30158 +S'editable' +p30159 +I01 +sS'value' +p30160 +g47 +sssS'updated_by' +p30161 +(dp30162 +S'mandatory' +p30163 +(dp30164 +S'editable' +p30165 +I00 +sS'value' +p30166 +I00 +ssS'name' +p30167 +(dp30168 +S'editable' +p30169 +I01 +sS'value' +p30170 +S'Updated by' +p30171 +ssS'data_type' +p30172 +(dp30173 +S'editable' +p30174 +I00 +sS'value' +p30175 +S'entity' +p30176 +ssS'entity_type' +p30177 +(dp30178 +S'editable' +p30179 +I00 +sS'value' +p30180 +S'CustomEntity03' +p30181 +ssS'editable' +p30182 +(dp30183 +S'editable' +p30184 +I00 +sS'value' +p30185 +I00 +ssS'unique' +p30186 +(dp30187 +S'editable' +p30188 +I00 +sS'value' +p30189 +I00 +ssS'properties' +p30190 +(dp30191 +S'default_value' +p30192 +(dp30193 +S'editable' +p30194 +I00 +sS'value' +p30195 +NssS'summary_default' +p30196 +(dp30197 +S'editable' +p30198 +I01 +sS'value' +p30199 +S'none' +p30200 +ssS'valid_types' +p30201 +(dp30202 +S'editable' +p30203 +I01 +sS'value' +p30204 +(lp30205 +S'HumanUser' +p30206 +aS'ApiUser' +p30207 +asssS'description' +p30208 +(dp30209 +S'editable' +p30210 +I01 +sS'value' +p30211 +g47 +ssssS'FilesystemLocation' +p30212 +(dp30213 +S'code' +p30214 +(dp30215 +S'mandatory' +p30216 +(dp30217 +S'editable' +p30218 +I00 +sS'value' +p30219 +I01 +ssS'name' +p30220 +(dp30221 +S'editable' +p30222 +I01 +sS'value' +p30223 +S'FilesystemLocation Name' +p30224 +ssS'data_type' +p30225 +(dp30226 +S'editable' +p30227 +I00 +sS'value' +p30228 +S'text' +p30229 +ssS'entity_type' +p30230 +(dp30231 +S'editable' +p30232 +I00 +sS'value' +p30233 +S'FilesystemLocation' +p30234 +ssS'editable' +p30235 +(dp30236 +S'editable' +p30237 +I00 +sS'value' +p30238 +I01 +ssS'unique' +p30239 +(dp30240 +S'editable' +p30241 +I00 +sS'value' +p30242 +I00 +ssS'properties' +p30243 +(dp30244 +S'default_value' +p30245 +(dp30246 +S'editable' +p30247 +I00 +sS'value' +p30248 +NssS'summary_default' +p30249 +(dp30250 +S'editable' +p30251 +I00 +sS'value' +p30252 +S'none' +p30253 +sssS'description' +p30254 +(dp30255 +S'editable' +p30256 +I01 +sS'value' +p30257 +g47 +sssS'linked_entity_type' +p30258 +(dp30259 +S'mandatory' +p30260 +(dp30261 +S'editable' +p30262 +I00 +sS'value' +p30263 +I00 +ssS'name' +p30264 +(dp30265 +S'editable' +p30266 +I01 +sS'value' +p30267 +S'Linked Entity Type' +p30268 +ssS'data_type' +p30269 +(dp30270 +S'editable' +p30271 +I00 +sS'value' +p30272 +S'text' +p30273 +ssS'entity_type' +p30274 +(dp30275 +S'editable' +p30276 +I00 +sS'value' +p30277 +S'FilesystemLocation' +p30278 +ssS'editable' +p30279 +(dp30280 +S'editable' +p30281 +I00 +sS'value' +p30282 +I01 +ssS'unique' +p30283 +(dp30284 +S'editable' +p30285 +I00 +sS'value' +p30286 +I00 +ssS'properties' +p30287 +(dp30288 +S'default_value' +p30289 +(dp30290 +S'editable' +p30291 +I00 +sS'value' +p30292 +NssS'summary_default' +p30293 +(dp30294 +S'editable' +p30295 +I01 +sS'value' +p30296 +S'none' +p30297 +sssS'description' +p30298 +(dp30299 +S'editable' +p30300 +I01 +sS'value' +p30301 +g47 +sssS'linked_entity_id' +p30302 +(dp30303 +S'mandatory' +p30304 +(dp30305 +S'editable' +p30306 +I00 +sS'value' +p30307 +I00 +ssS'name' +p30308 +(dp30309 +S'editable' +p30310 +I01 +sS'value' +p30311 +S'Linked Entity Id' +p30312 +ssS'data_type' +p30313 +(dp30314 +S'editable' +p30315 +I00 +sS'value' +p30316 +S'number' +p30317 +ssS'entity_type' +p30318 +(dp30319 +S'editable' +p30320 +I00 +sS'value' +p30321 +S'FilesystemLocation' +p30322 +ssS'editable' +p30323 +(dp30324 +S'editable' +p30325 +I00 +sS'value' +p30326 +I01 +ssS'unique' +p30327 +(dp30328 +S'editable' +p30329 +I00 +sS'value' +p30330 +I00 +ssS'properties' +p30331 +(dp30332 +S'default_value' +p30333 +(dp30334 +S'editable' +p30335 +I00 +sS'value' +p30336 +NssS'summary_default' +p30337 +(dp30338 +S'editable' +p30339 +I01 +sS'value' +p30340 +S'none' +p30341 +sssS'description' +p30342 +(dp30343 +S'editable' +p30344 +I01 +sS'value' +p30345 +g47 +sssS'is_primary' +p30346 +(dp30347 +S'mandatory' +p30348 +(dp30349 +S'editable' +p30350 +I00 +sS'value' +p30351 +I00 +ssS'name' +p30352 +(dp30353 +S'editable' +p30354 +I01 +sS'value' +p30355 +S'Primary' +p30356 +ssS'data_type' +p30357 +(dp30358 +S'editable' +p30359 +I00 +sS'value' +p30360 +S'checkbox' +p30361 +ssS'entity_type' +p30362 +(dp30363 +S'editable' +p30364 +I00 +sS'value' +p30365 +S'FilesystemLocation' +p30366 +ssS'editable' +p30367 +(dp30368 +S'editable' +p30369 +I00 +sS'value' +p30370 +I01 +ssS'unique' +p30371 +(dp30372 +S'editable' +p30373 +I00 +sS'value' +p30374 +I00 +ssS'properties' +p30375 +(dp30376 +S'default_value' +p30377 +(dp30378 +S'editable' +p30379 +I00 +sS'value' +p30380 +NssS'summary_default' +p30381 +(dp30382 +S'editable' +p30383 +I01 +sS'value' +p30384 +S'none' +p30385 +sssS'description' +p30386 +(dp30387 +S'editable' +p30388 +I01 +sS'value' +p30389 +g47 +sssS'created_at' +p30390 +(dp30391 +S'mandatory' +p30392 +(dp30393 +S'editable' +p30394 +I00 +sS'value' +p30395 +I00 +ssS'name' +p30396 +(dp30397 +S'editable' +p30398 +I01 +sS'value' +p30399 +S'Date Created' +p30400 +ssS'data_type' +p30401 +(dp30402 +S'editable' +p30403 +I00 +sS'value' +p30404 +S'date_time' +p30405 +ssS'entity_type' +p30406 +(dp30407 +S'editable' +p30408 +I00 +sS'value' +p30409 +S'FilesystemLocation' +p30410 +ssS'editable' +p30411 +(dp30412 +S'editable' +p30413 +I00 +sS'value' +p30414 +I00 +ssS'unique' +p30415 +(dp30416 +S'editable' +p30417 +I00 +sS'value' +p30418 +I00 +ssS'properties' +p30419 +(dp30420 +S'default_value' +p30421 +(dp30422 +S'editable' +p30423 +I00 +sS'value' +p30424 +NssS'summary_default' +p30425 +(dp30426 +S'editable' +p30427 +I01 +sS'value' +p30428 +S'none' +p30429 +sssS'description' +p30430 +(dp30431 +S'editable' +p30432 +I01 +sS'value' +p30433 +g47 +sssS'updated_at' +p30434 +(dp30435 +S'mandatory' +p30436 +(dp30437 +S'editable' +p30438 +I00 +sS'value' +p30439 +I00 +ssS'name' +p30440 +(dp30441 +S'editable' +p30442 +I01 +sS'value' +p30443 +S'Date Updated' +p30444 +ssS'data_type' +p30445 +(dp30446 +S'editable' +p30447 +I00 +sS'value' +p30448 +S'date_time' +p30449 +ssS'entity_type' +p30450 +(dp30451 +S'editable' +p30452 +I00 +sS'value' +p30453 +S'FilesystemLocation' +p30454 +ssS'editable' +p30455 +(dp30456 +S'editable' +p30457 +I00 +sS'value' +p30458 +I00 +ssS'unique' +p30459 +(dp30460 +S'editable' +p30461 +I00 +sS'value' +p30462 +I00 +ssS'properties' +p30463 +(dp30464 +S'default_value' +p30465 +(dp30466 +S'editable' +p30467 +I00 +sS'value' +p30468 +NssS'summary_default' +p30469 +(dp30470 +S'editable' +p30471 +I01 +sS'value' +p30472 +S'none' +p30473 +sssS'description' +p30474 +(dp30475 +S'editable' +p30476 +I01 +sS'value' +p30477 +g47 +sssS'created_by' +p30478 +(dp30479 +S'mandatory' +p30480 +(dp30481 +S'editable' +p30482 +I00 +sS'value' +p30483 +I00 +ssS'name' +p30484 +(dp30485 +S'editable' +p30486 +I01 +sS'value' +p30487 +S'Created by' +p30488 +ssS'data_type' +p30489 +(dp30490 +S'editable' +p30491 +I00 +sS'value' +p30492 +S'entity' +p30493 +ssS'entity_type' +p30494 +(dp30495 +S'editable' +p30496 +I00 +sS'value' +p30497 +S'FilesystemLocation' +p30498 +ssS'editable' +p30499 +(dp30500 +S'editable' +p30501 +I00 +sS'value' +p30502 +I00 +ssS'unique' +p30503 +(dp30504 +S'editable' +p30505 +I00 +sS'value' +p30506 +I00 +ssS'properties' +p30507 +(dp30508 +S'default_value' +p30509 +(dp30510 +S'editable' +p30511 +I00 +sS'value' +p30512 +NssS'summary_default' +p30513 +(dp30514 +S'editable' +p30515 +I01 +sS'value' +p30516 +S'none' +p30517 +ssS'valid_types' +p30518 +(dp30519 +S'editable' +p30520 +I01 +sS'value' +p30521 +(lp30522 +S'HumanUser' +p30523 +aS'ApiUser' +p30524 +asssS'description' +p30525 +(dp30526 +S'editable' +p30527 +I01 +sS'value' +p30528 +g47 +sssS'entity' +p30529 +(dp30530 +S'mandatory' +p30531 +(dp30532 +S'editable' +p30533 +I00 +sS'value' +p30534 +I00 +ssS'name' +p30535 +(dp30536 +S'editable' +p30537 +I01 +sS'value' +p30538 +S'Link' +p30539 +ssS'data_type' +p30540 +(dp30541 +S'editable' +p30542 +I00 +sS'value' +p30543 +S'entity' +p30544 +ssS'entity_type' +p30545 +(dp30546 +S'editable' +p30547 +I00 +sS'value' +p30548 +S'FilesystemLocation' +p30549 +ssS'editable' +p30550 +(dp30551 +S'editable' +p30552 +I00 +sS'value' +p30553 +I01 +ssS'unique' +p30554 +(dp30555 +S'editable' +p30556 +I00 +sS'value' +p30557 +I00 +ssS'properties' +p30558 +(dp30559 +S'default_value' +p30560 +(dp30561 +S'editable' +p30562 +I00 +sS'value' +p30563 +NssS'summary_default' +p30564 +(dp30565 +S'editable' +p30566 +I01 +sS'value' +p30567 +S'none' +p30568 +ssS'valid_types' +p30569 +(dp30570 +S'editable' +p30571 +I01 +sS'value' +p30572 +(lp30573 +S'Asset' +p30574 +aS'Shot' +p30575 +aS'Sequence' +p30576 +asssS'description' +p30577 +(dp30578 +S'editable' +p30579 +I01 +sS'value' +p30580 +g47 +sssS'project' +p30581 +(dp30582 +S'mandatory' +p30583 +(dp30584 +S'editable' +p30585 +I00 +sS'value' +p30586 +I00 +ssS'name' +p30587 +(dp30588 +S'editable' +p30589 +I01 +sS'value' +p30590 +S'Project' +p30591 +ssS'data_type' +p30592 +(dp30593 +S'editable' +p30594 +I00 +sS'value' +p30595 +S'entity' +p30596 +ssS'entity_type' +p30597 +(dp30598 +S'editable' +p30599 +I00 +sS'value' +p30600 +S'FilesystemLocation' +p30601 +ssS'editable' +p30602 +(dp30603 +S'editable' +p30604 +I00 +sS'value' +p30605 +I01 +ssS'unique' +p30606 +(dp30607 +S'editable' +p30608 +I00 +sS'value' +p30609 +I00 +ssS'properties' +p30610 +(dp30611 +S'default_value' +p30612 +(dp30613 +S'editable' +p30614 +I00 +sS'value' +p30615 +NssS'summary_default' +p30616 +(dp30617 +S'editable' +p30618 +I01 +sS'value' +p30619 +S'none' +p30620 +ssS'valid_types' +p30621 +(dp30622 +S'editable' +p30623 +I01 +sS'value' +p30624 +(lp30625 +S'Project' +p30626 +asssS'description' +p30627 +(dp30628 +S'editable' +p30629 +I01 +sS'value' +p30630 +g47 +sssS'updated_by' +p30631 +(dp30632 +S'mandatory' +p30633 +(dp30634 +S'editable' +p30635 +I00 +sS'value' +p30636 +I00 +ssS'name' +p30637 +(dp30638 +S'editable' +p30639 +I01 +sS'value' +p30640 +S'Updated by' +p30641 +ssS'data_type' +p30642 +(dp30643 +S'editable' +p30644 +I00 +sS'value' +p30645 +S'entity' +p30646 +ssS'entity_type' +p30647 +(dp30648 +S'editable' +p30649 +I00 +sS'value' +p30650 +S'FilesystemLocation' +p30651 +ssS'editable' +p30652 +(dp30653 +S'editable' +p30654 +I00 +sS'value' +p30655 +I00 +ssS'unique' +p30656 +(dp30657 +S'editable' +p30658 +I00 +sS'value' +p30659 +I00 +ssS'properties' +p30660 +(dp30661 +S'default_value' +p30662 +(dp30663 +S'editable' +p30664 +I00 +sS'value' +p30665 +NssS'summary_default' +p30666 +(dp30667 +S'editable' +p30668 +I01 +sS'value' +p30669 +S'none' +p30670 +ssS'valid_types' +p30671 +(dp30672 +S'editable' +p30673 +I01 +sS'value' +p30674 +(lp30675 +S'HumanUser' +p30676 +aS'ApiUser' +p30677 +asssS'description' +p30678 +(dp30679 +S'editable' +p30680 +I01 +sS'value' +p30681 +g47 +sssS'configuration_metadata' +p30682 +(dp30683 +S'mandatory' +p30684 +(dp30685 +S'editable' +p30686 +I00 +sS'value' +p30687 +I00 +ssS'name' +p30688 +(dp30689 +S'editable' +p30690 +I01 +sS'value' +p30691 +S'Configuration Metadata' +p30692 +ssS'data_type' +p30693 +(dp30694 +S'editable' +p30695 +I00 +sS'value' +p30696 +S'text' +p30697 +ssS'entity_type' +p30698 +(dp30699 +S'editable' +p30700 +I00 +sS'value' +p30701 +S'FilesystemLocation' +p30702 +ssS'editable' +p30703 +(dp30704 +S'editable' +p30705 +I00 +sS'value' +p30706 +I01 +ssS'unique' +p30707 +(dp30708 +S'editable' +p30709 +I00 +sS'value' +p30710 +I00 +ssS'properties' +p30711 +(dp30712 +S'default_value' +p30713 +(dp30714 +S'editable' +p30715 +I00 +sS'value' +p30716 +NssS'summary_default' +p30717 +(dp30718 +S'editable' +p30719 +I01 +sS'value' +p30720 +S'none' +p30721 +sssS'description' +p30722 +(dp30723 +S'editable' +p30724 +I01 +sS'value' +p30725 +g47 +sssS'path' +p30726 +(dp30727 +S'mandatory' +p30728 +(dp30729 +S'editable' +p30730 +I00 +sS'value' +p30731 +I00 +ssS'name' +p30732 +(dp30733 +S'editable' +p30734 +I01 +sS'value' +p30735 +S'Path' +p30736 +ssS'data_type' +p30737 +(dp30738 +S'editable' +p30739 +I00 +sS'value' +p30740 +S'url' +p30741 +ssS'entity_type' +p30742 +(dp30743 +S'editable' +p30744 +I00 +sS'value' +p30745 +S'FilesystemLocation' +p30746 +ssS'editable' +p30747 +(dp30748 +S'editable' +p30749 +I00 +sS'value' +p30750 +I01 +ssS'unique' +p30751 +(dp30752 +S'editable' +p30753 +I00 +sS'value' +p30754 +I00 +ssS'properties' +p30755 +(dp30756 +S'default_value' +p30757 +(dp30758 +S'editable' +p30759 +I00 +sS'value' +p30760 +NssS'open_in_new_window' +p30761 +(dp30762 +S'editable' +p30763 +I01 +sS'value' +p30764 +I01 +ssS'summary_default' +p30765 +(dp30766 +S'editable' +p30767 +I01 +sS'value' +p30768 +S'none' +p30769 +sssS'description' +p30770 +(dp30771 +S'editable' +p30772 +I01 +sS'value' +p30773 +g47 +sssS'id' +p30774 +(dp30775 +S'mandatory' +p30776 +(dp30777 +S'editable' +p30778 +I00 +sS'value' +p30779 +I00 +ssS'name' +p30780 +(dp30781 +S'editable' +p30782 +I01 +sS'value' +p30783 +S'Id' +p30784 +ssS'data_type' +p30785 +(dp30786 +S'editable' +p30787 +I00 +sS'value' +p30788 +S'number' +p30789 +ssS'entity_type' +p30790 +(dp30791 +S'editable' +p30792 +I00 +sS'value' +p30793 +S'FilesystemLocation' +p30794 +ssS'editable' +p30795 +(dp30796 +S'editable' +p30797 +I00 +sS'value' +p30798 +I00 +ssS'unique' +p30799 +(dp30800 +S'editable' +p30801 +I00 +sS'value' +p30802 +I00 +ssS'properties' +p30803 +(dp30804 +S'default_value' +p30805 +(dp30806 +S'editable' +p30807 +I00 +sS'value' +p30808 +NssS'summary_default' +p30809 +(dp30810 +S'editable' +p30811 +I00 +sS'value' +p30812 +S'none' +p30813 +sssS'description' +p30814 +(dp30815 +S'editable' +p30816 +I01 +sS'value' +p30817 +g47 +sssS'pipeline_configuration' +p30818 +(dp30819 +S'mandatory' +p30820 +(dp30821 +S'editable' +p30822 +I00 +sS'value' +p30823 +I00 +ssS'name' +p30824 +(dp30825 +S'editable' +p30826 +I01 +sS'value' +p30827 +S'Pipeline Configuration' +p30828 +ssS'data_type' +p30829 +(dp30830 +S'editable' +p30831 +I00 +sS'value' +p30832 +S'entity' +p30833 +ssS'entity_type' +p30834 +(dp30835 +S'editable' +p30836 +I00 +sS'value' +p30837 +S'FilesystemLocation' +p30838 +ssS'editable' +p30839 +(dp30840 +S'editable' +p30841 +I00 +sS'value' +p30842 +I01 +ssS'unique' +p30843 +(dp30844 +S'editable' +p30845 +I00 +sS'value' +p30846 +I00 +ssS'properties' +p30847 +(dp30848 +S'default_value' +p30849 +(dp30850 +S'editable' +p30851 +I00 +sS'value' +p30852 +NssS'summary_default' +p30853 +(dp30854 +S'editable' +p30855 +I01 +sS'value' +p30856 +S'none' +p30857 +ssS'valid_types' +p30858 +(dp30859 +S'editable' +p30860 +I01 +sS'value' +p30861 +(lp30862 +S'PipelineConfiguration' +p30863 +asssS'description' +p30864 +(dp30865 +S'editable' +p30866 +I01 +sS'value' +p30867 +g47 +ssssS'CustomEntity01' +p30868 +(dp30869 +S'open_notes_count' +p30870 +(dp30871 +S'mandatory' +p30872 +(dp30873 +S'editable' +p30874 +I00 +sS'value' +p30875 +I00 +ssS'name' +p30876 +(dp30877 +S'editable' +p30878 +I01 +sS'value' +p30879 +S'Open Notes Count' +p30880 +ssS'data_type' +p30881 +(dp30882 +S'editable' +p30883 +I00 +sS'value' +p30884 +S'text' +p30885 +ssS'entity_type' +p30886 +(dp30887 +S'editable' +p30888 +I00 +sS'value' +p30889 +S'CustomEntity01' +p30890 +ssS'editable' +p30891 +(dp30892 +S'editable' +p30893 +I00 +sS'value' +p30894 +I00 +ssS'unique' +p30895 +(dp30896 +S'editable' +p30897 +I00 +sS'value' +p30898 +I00 +ssS'properties' +p30899 +(dp30900 +S'default_value' +p30901 +(dp30902 +S'editable' +p30903 +I00 +sS'value' +p30904 +NssS'summary_default' +p30905 +(dp30906 +S'editable' +p30907 +I01 +sS'value' +p30908 +S'none' +p30909 +sssS'description' +p30910 +(dp30911 +S'editable' +p30912 +I01 +sS'value' +p30913 +g47 +sssS'code' +p30914 +(dp30915 +S'mandatory' +p30916 +(dp30917 +S'editable' +p30918 +I00 +sS'value' +p30919 +I01 +ssS'name' +p30920 +(dp30921 +S'editable' +p30922 +I01 +sS'value' +p30923 +S'Disk Location Name' +p30924 +ssS'data_type' +p30925 +(dp30926 +S'editable' +p30927 +I00 +sS'value' +p30928 +S'text' +p30929 +ssS'entity_type' +p30930 +(dp30931 +S'editable' +p30932 +I00 +sS'value' +p30933 +S'CustomEntity01' +p30934 +ssS'editable' +p30935 +(dp30936 +S'editable' +p30937 +I00 +sS'value' +p30938 +I01 +ssS'unique' +p30939 +(dp30940 +S'editable' +p30941 +I00 +sS'value' +p30942 +I00 +ssS'properties' +p30943 +(dp30944 +S'default_value' +p30945 +(dp30946 +S'editable' +p30947 +I00 +sS'value' +p30948 +NssS'summary_default' +p30949 +(dp30950 +S'editable' +p30951 +I01 +sS'value' +p30952 +S'none' +p30953 +sssS'description' +p30954 +(dp30955 +S'editable' +p30956 +I01 +sS'value' +p30957 +g47 +sssS'image' +p30958 +(dp30959 +S'mandatory' +p30960 +(dp30961 +S'editable' +p30962 +I00 +sS'value' +p30963 +I00 +ssS'name' +p30964 +(dp30965 +S'editable' +p30966 +I01 +sS'value' +p30967 +S'Thumbnail' +p30968 +ssS'data_type' +p30969 +(dp30970 +S'editable' +p30971 +I00 +sS'value' +p30972 +S'image' +p30973 +ssS'entity_type' +p30974 +(dp30975 +S'editable' +p30976 +I00 +sS'value' +p30977 +S'CustomEntity01' +p30978 +ssS'editable' +p30979 +(dp30980 +S'editable' +p30981 +I00 +sS'value' +p30982 +I01 +ssS'unique' +p30983 +(dp30984 +S'editable' +p30985 +I00 +sS'value' +p30986 +I00 +ssS'properties' +p30987 +(dp30988 +S'default_value' +p30989 +(dp30990 +S'editable' +p30991 +I00 +sS'value' +p30992 +NssS'summary_default' +p30993 +(dp30994 +S'editable' +p30995 +I01 +sS'value' +p30996 +S'none' +p30997 +sssS'description' +p30998 +(dp30999 +S'editable' +p31000 +I01 +sS'value' +p31001 +g47 +sssS'updated_at' +p31002 +(dp31003 +S'mandatory' +p31004 +(dp31005 +S'editable' +p31006 +I00 +sS'value' +p31007 +I00 +ssS'name' +p31008 +(dp31009 +S'editable' +p31010 +I01 +sS'value' +p31011 +S'Date Updated' +p31012 +ssS'data_type' +p31013 +(dp31014 +S'editable' +p31015 +I00 +sS'value' +p31016 +S'date_time' +p31017 +ssS'entity_type' +p31018 +(dp31019 +S'editable' +p31020 +I00 +sS'value' +p31021 +S'CustomEntity01' +p31022 +ssS'editable' +p31023 +(dp31024 +S'editable' +p31025 +I00 +sS'value' +p31026 +I00 +ssS'unique' +p31027 +(dp31028 +S'editable' +p31029 +I00 +sS'value' +p31030 +I00 +ssS'properties' +p31031 +(dp31032 +S'default_value' +p31033 +(dp31034 +S'editable' +p31035 +I00 +sS'value' +p31036 +NssS'summary_default' +p31037 +(dp31038 +S'editable' +p31039 +I01 +sS'value' +p31040 +S'none' +p31041 +sssS'description' +p31042 +(dp31043 +S'editable' +p31044 +I01 +sS'value' +p31045 +g47 +sssS'cached_display_name' +p31046 +(dp31047 +S'mandatory' +p31048 +(dp31049 +S'editable' +p31050 +I00 +sS'value' +p31051 +I00 +ssS'name' +p31052 +(dp31053 +S'editable' +p31054 +I01 +sS'value' +p31055 +S'Cached Display Name' +p31056 +ssS'data_type' +p31057 +(dp31058 +S'editable' +p31059 +I00 +sS'value' +p31060 +S'text' +p31061 +ssS'entity_type' +p31062 +(dp31063 +S'editable' +p31064 +I00 +sS'value' +p31065 +S'CustomEntity01' +p31066 +ssS'editable' +p31067 +(dp31068 +S'editable' +p31069 +I00 +sS'value' +p31070 +I01 +ssS'unique' +p31071 +(dp31072 +S'editable' +p31073 +I00 +sS'value' +p31074 +I00 +ssS'properties' +p31075 +(dp31076 +S'default_value' +p31077 +(dp31078 +S'editable' +p31079 +I00 +sS'value' +p31080 +NssS'summary_default' +p31081 +(dp31082 +S'editable' +p31083 +I00 +sS'value' +p31084 +S'none' +p31085 +sssS'description' +p31086 +(dp31087 +S'editable' +p31088 +I01 +sS'value' +p31089 +g47 +sssS'id' +p31090 +(dp31091 +S'mandatory' +p31092 +(dp31093 +S'editable' +p31094 +I00 +sS'value' +p31095 +I00 +ssS'name' +p31096 +(dp31097 +S'editable' +p31098 +I01 +sS'value' +p31099 +S'Id' +p31100 +ssS'data_type' +p31101 +(dp31102 +S'editable' +p31103 +I00 +sS'value' +p31104 +S'number' +p31105 +ssS'entity_type' +p31106 +(dp31107 +S'editable' +p31108 +I00 +sS'value' +p31109 +S'CustomEntity01' +p31110 +ssS'editable' +p31111 +(dp31112 +S'editable' +p31113 +I00 +sS'value' +p31114 +I00 +ssS'unique' +p31115 +(dp31116 +S'editable' +p31117 +I00 +sS'value' +p31118 +I00 +ssS'properties' +p31119 +(dp31120 +S'default_value' +p31121 +(dp31122 +S'editable' +p31123 +I00 +sS'value' +p31124 +NssS'summary_default' +p31125 +(dp31126 +S'editable' +p31127 +I01 +sS'value' +p31128 +S'none' +p31129 +sssS'description' +p31130 +(dp31131 +S'editable' +p31132 +I01 +sS'value' +p31133 +g47 +sssS'updated_by' +p31134 +(dp31135 +S'mandatory' +p31136 +(dp31137 +S'editable' +p31138 +I00 +sS'value' +p31139 +I00 +ssS'name' +p31140 +(dp31141 +S'editable' +p31142 +I01 +sS'value' +p31143 +S'Updated by' +p31144 +ssS'data_type' +p31145 +(dp31146 +S'editable' +p31147 +I00 +sS'value' +p31148 +S'entity' +p31149 +ssS'entity_type' +p31150 +(dp31151 +S'editable' +p31152 +I00 +sS'value' +p31153 +S'CustomEntity01' +p31154 +ssS'editable' +p31155 +(dp31156 +S'editable' +p31157 +I00 +sS'value' +p31158 +I00 +ssS'unique' +p31159 +(dp31160 +S'editable' +p31161 +I00 +sS'value' +p31162 +I00 +ssS'properties' +p31163 +(dp31164 +S'default_value' +p31165 +(dp31166 +S'editable' +p31167 +I00 +sS'value' +p31168 +NssS'summary_default' +p31169 +(dp31170 +S'editable' +p31171 +I01 +sS'value' +p31172 +S'none' +p31173 +ssS'valid_types' +p31174 +(dp31175 +S'editable' +p31176 +I01 +sS'value' +p31177 +(lp31178 +S'HumanUser' +p31179 +aS'ApiUser' +p31180 +asssS'description' +p31181 +(dp31182 +S'editable' +p31183 +I01 +sS'value' +p31184 +g47 +sssS'open_notes' +p31185 +(dp31186 +S'mandatory' +p31187 +(dp31188 +S'editable' +p31189 +I00 +sS'value' +p31190 +I00 +ssS'name' +p31191 +(dp31192 +S'editable' +p31193 +I01 +sS'value' +p31194 +S'Open Notes' +p31195 +ssS'data_type' +p31196 +(dp31197 +S'editable' +p31198 +I00 +sS'value' +p31199 +S'multi_entity' +p31200 +ssS'entity_type' +p31201 +(dp31202 +S'editable' +p31203 +I00 +sS'value' +p31204 +S'CustomEntity01' +p31205 +ssS'editable' +p31206 +(dp31207 +S'editable' +p31208 +I00 +sS'value' +p31209 +I00 +ssS'unique' +p31210 +(dp31211 +S'editable' +p31212 +I00 +sS'value' +p31213 +I00 +ssS'properties' +p31214 +(dp31215 +S'default_value' +p31216 +(dp31217 +S'editable' +p31218 +I00 +sS'value' +p31219 +NssS'summary_default' +p31220 +(dp31221 +S'editable' +p31222 +I01 +sS'value' +p31223 +S'none' +p31224 +ssS'valid_types' +p31225 +(dp31226 +S'editable' +p31227 +I01 +sS'value' +p31228 +(lp31229 +S'Note' +p31230 +asssS'description' +p31231 +(dp31232 +S'editable' +p31233 +I01 +sS'value' +p31234 +g47 +sssS'sg_metadata' +p31235 +(dp31236 +S'mandatory' +p31237 +(dp31238 +S'editable' +p31239 +I00 +sS'value' +p31240 +I00 +ssS'name' +p31241 +(dp31242 +S'editable' +p31243 +I01 +sS'value' +p31244 +S'metadata' +p31245 +ssS'data_type' +p31246 +(dp31247 +S'editable' +p31248 +I00 +sS'value' +p31249 +S'text' +p31250 +ssS'entity_type' +p31251 +(dp31252 +S'editable' +p31253 +I00 +sS'value' +p31254 +S'CustomEntity01' +p31255 +ssS'editable' +p31256 +(dp31257 +S'editable' +p31258 +I00 +sS'value' +p31259 +I01 +ssS'unique' +p31260 +(dp31261 +S'editable' +p31262 +I00 +sS'value' +p31263 +I00 +ssS'properties' +p31264 +(dp31265 +S'default_value' +p31266 +(dp31267 +S'editable' +p31268 +I00 +sS'value' +p31269 +NssS'summary_default' +p31270 +(dp31271 +S'editable' +p31272 +I01 +sS'value' +p31273 +S'none' +p31274 +sssS'description' +p31275 +(dp31276 +S'editable' +p31277 +I01 +sS'value' +p31278 +g47 +sssS'created_by' +p31279 +(dp31280 +S'mandatory' +p31281 +(dp31282 +S'editable' +p31283 +I00 +sS'value' +p31284 +I00 +ssS'name' +p31285 +(dp31286 +S'editable' +p31287 +I01 +sS'value' +p31288 +S'Created by' +p31289 +ssS'data_type' +p31290 +(dp31291 +S'editable' +p31292 +I00 +sS'value' +p31293 +S'entity' +p31294 +ssS'entity_type' +p31295 +(dp31296 +S'editable' +p31297 +I00 +sS'value' +p31298 +S'CustomEntity01' +p31299 +ssS'editable' +p31300 +(dp31301 +S'editable' +p31302 +I00 +sS'value' +p31303 +I00 +ssS'unique' +p31304 +(dp31305 +S'editable' +p31306 +I00 +sS'value' +p31307 +I00 +ssS'properties' +p31308 +(dp31309 +S'default_value' +p31310 +(dp31311 +S'editable' +p31312 +I00 +sS'value' +p31313 +NssS'summary_default' +p31314 +(dp31315 +S'editable' +p31316 +I01 +sS'value' +p31317 +S'none' +p31318 +ssS'valid_types' +p31319 +(dp31320 +S'editable' +p31321 +I01 +sS'value' +p31322 +(lp31323 +S'HumanUser' +p31324 +aS'ApiUser' +p31325 +asssS'description' +p31326 +(dp31327 +S'editable' +p31328 +I01 +sS'value' +p31329 +g47 +sssS'sg_path' +p31330 +(dp31331 +S'mandatory' +p31332 +(dp31333 +S'editable' +p31334 +I00 +sS'value' +p31335 +I00 +ssS'name' +p31336 +(dp31337 +S'editable' +p31338 +I01 +sS'value' +p31339 +S'Path' +p31340 +ssS'data_type' +p31341 +(dp31342 +S'editable' +p31343 +I00 +sS'value' +p31344 +S'url' +p31345 +ssS'entity_type' +p31346 +(dp31347 +S'editable' +p31348 +I00 +sS'value' +p31349 +S'CustomEntity01' +p31350 +ssS'editable' +p31351 +(dp31352 +S'editable' +p31353 +I00 +sS'value' +p31354 +I01 +ssS'unique' +p31355 +(dp31356 +S'editable' +p31357 +I00 +sS'value' +p31358 +I00 +ssS'properties' +p31359 +(dp31360 +S'default_value' +p31361 +(dp31362 +S'editable' +p31363 +I00 +sS'value' +p31364 +NssS'open_in_new_window' +p31365 +(dp31366 +S'editable' +p31367 +I01 +sS'value' +p31368 +I01 +ssS'summary_default' +p31369 +(dp31370 +S'editable' +p31371 +I01 +sS'value' +p31372 +S'none' +p31373 +sssS'description' +p31374 +(dp31375 +S'editable' +p31376 +I01 +sS'value' +p31377 +g47 +sssS'sg_status_list' +p31378 +(dp31379 +S'mandatory' +p31380 +(dp31381 +S'editable' +p31382 +I00 +sS'value' +p31383 +I00 +ssS'name' +p31384 +(dp31385 +S'editable' +p31386 +I01 +sS'value' +p31387 +S'Status' +p31388 +ssS'data_type' +p31389 +(dp31390 +S'editable' +p31391 +I00 +sS'value' +p31392 +S'status_list' +p31393 +ssS'entity_type' +p31394 +(dp31395 +S'editable' +p31396 +I00 +sS'value' +p31397 +S'CustomEntity01' +p31398 +ssS'editable' +p31399 +(dp31400 +S'editable' +p31401 +I00 +sS'value' +p31402 +I01 +ssS'unique' +p31403 +(dp31404 +S'editable' +p31405 +I00 +sS'value' +p31406 +I00 +ssS'properties' +p31407 +(dp31408 +S'default_value' +p31409 +(dp31410 +S'editable' +p31411 +I01 +sS'value' +p31412 +S'wtg' +p31413 +ssS'valid_values' +p31414 +(dp31415 +S'editable' +p31416 +I01 +sS'value' +p31417 +(lp31418 +S'cmpt' +p31419 +aS'ip' +p31420 +aS'wtg' +p31421 +assS'summary_default' +p31422 +(dp31423 +S'editable' +p31424 +I01 +sS'value' +p31425 +S'none' +p31426 +sssS'description' +p31427 +(dp31428 +S'editable' +p31429 +I01 +sS'value' +p31430 +g47 +sssS'sg_entity_name' +p31431 +(dp31432 +S'mandatory' +p31433 +(dp31434 +S'editable' +p31435 +I00 +sS'value' +p31436 +I00 +ssS'name' +p31437 +(dp31438 +S'editable' +p31439 +I01 +sS'value' +p31440 +S'Entity Name' +p31441 +ssS'data_type' +p31442 +(dp31443 +S'editable' +p31444 +I00 +sS'value' +p31445 +S'text' +p31446 +ssS'entity_type' +p31447 +(dp31448 +S'editable' +p31449 +I00 +sS'value' +p31450 +S'CustomEntity01' +p31451 +ssS'editable' +p31452 +(dp31453 +S'editable' +p31454 +I00 +sS'value' +p31455 +I01 +ssS'unique' +p31456 +(dp31457 +S'editable' +p31458 +I00 +sS'value' +p31459 +I00 +ssS'properties' +p31460 +(dp31461 +S'default_value' +p31462 +(dp31463 +S'editable' +p31464 +I00 +sS'value' +p31465 +NssS'summary_default' +p31466 +(dp31467 +S'editable' +p31468 +I01 +sS'value' +p31469 +S'none' +p31470 +sssS'description' +p31471 +(dp31472 +S'editable' +p31473 +I01 +sS'value' +p31474 +g47 +sssS'sg_secondary_entities' +p31475 +(dp31476 +S'mandatory' +p31477 +(dp31478 +S'editable' +p31479 +I00 +sS'value' +p31480 +I00 +ssS'name' +p31481 +(dp31482 +S'editable' +p31483 +I01 +sS'value' +p31484 +S'Secondary Entities' +p31485 +ssS'data_type' +p31486 +(dp31487 +S'editable' +p31488 +I00 +sS'value' +p31489 +S'text' +p31490 +ssS'entity_type' +p31491 +(dp31492 +S'editable' +p31493 +I00 +sS'value' +p31494 +S'CustomEntity01' +p31495 +ssS'editable' +p31496 +(dp31497 +S'editable' +p31498 +I00 +sS'value' +p31499 +I01 +ssS'unique' +p31500 +(dp31501 +S'editable' +p31502 +I00 +sS'value' +p31503 +I00 +ssS'properties' +p31504 +(dp31505 +S'default_value' +p31506 +(dp31507 +S'editable' +p31508 +I00 +sS'value' +p31509 +NssS'summary_default' +p31510 +(dp31511 +S'editable' +p31512 +I01 +sS'value' +p31513 +S'none' +p31514 +sssS'description' +p31515 +(dp31516 +S'editable' +p31517 +I01 +sS'value' +p31518 +g47 +sssS'sg_entity' +p31519 +(dp31520 +S'mandatory' +p31521 +(dp31522 +S'editable' +p31523 +I00 +sS'value' +p31524 +I00 +ssS'name' +p31525 +(dp31526 +S'editable' +p31527 +I01 +sS'value' +p31528 +S'Entity' +p31529 +ssS'data_type' +p31530 +(dp31531 +S'editable' +p31532 +I00 +sS'value' +p31533 +S'entity' +p31534 +ssS'entity_type' +p31535 +(dp31536 +S'editable' +p31537 +I00 +sS'value' +p31538 +S'CustomEntity01' +p31539 +ssS'editable' +p31540 +(dp31541 +S'editable' +p31542 +I00 +sS'value' +p31543 +I01 +ssS'unique' +p31544 +(dp31545 +S'editable' +p31546 +I00 +sS'value' +p31547 +I00 +ssS'properties' +p31548 +(dp31549 +S'default_value' +p31550 +(dp31551 +S'editable' +p31552 +I00 +sS'value' +p31553 +NssS'summary_default' +p31554 +(dp31555 +S'editable' +p31556 +I01 +sS'value' +p31557 +S'none' +p31558 +ssS'valid_types' +p31559 +(dp31560 +S'editable' +p31561 +I01 +sS'value' +p31562 +(lp31563 +S'Asset' +p31564 +aS'Booking' +p31565 +aS'Department' +p31566 +aS'CustomEntity01' +p31567 +aS'Attachment' +p31568 +aS'Group' +p31569 +aS'Note' +p31570 +aS'Page' +p31571 +aS'HumanUser' +p31572 +aS'Phase' +p31573 +aS'Playlist' +p31574 +aS'PipelineConfiguration' +p31575 +aS'Project' +p31576 +aS'PublishedFileDependency' +p31577 +aS'PublishedFile' +p31578 +aS'PublishedFileType' +p31579 +aS'ApiUser' +p31580 +aS'Sequence' +p31581 +aS'Shot' +p31582 +aS'Step' +p31583 +aS'TankDependency' +p31584 +aS'TankPublishedFile' +p31585 +aS'TankType' +p31586 +aS'Task' +p31587 +aS'TimeLog' +p31588 +aS'Version' +p31589 +aS'TaskTemplate' +p31590 +asssS'description' +p31591 +(dp31592 +S'editable' +p31593 +I01 +sS'value' +p31594 +g47 +sssS'description' +p31595 +(dp31596 +S'mandatory' +p31597 +(dp31598 +S'editable' +p31599 +I00 +sS'value' +p31600 +I00 +ssS'name' +p31601 +(dp31602 +S'editable' +p31603 +I01 +sS'value' +p31604 +S'Description' +p31605 +ssS'data_type' +p31606 +(dp31607 +S'editable' +p31608 +I00 +sS'value' +p31609 +S'text' +p31610 +ssS'entity_type' +p31611 +(dp31612 +S'editable' +p31613 +I00 +sS'value' +p31614 +S'CustomEntity01' +p31615 +ssS'editable' +p31616 +(dp31617 +S'editable' +p31618 +I00 +sS'value' +p31619 +I01 +ssS'unique' +p31620 +(dp31621 +S'editable' +p31622 +I00 +sS'value' +p31623 +I00 +ssS'properties' +p31624 +(dp31625 +S'default_value' +p31626 +(dp31627 +S'editable' +p31628 +I00 +sS'value' +p31629 +NssS'summary_default' +p31630 +(dp31631 +S'editable' +p31632 +I01 +sS'value' +p31633 +S'none' +p31634 +sssS'description' +p31635 +(dp31636 +S'editable' +p31637 +I01 +sS'value' +p31638 +g47 +sssS'sg_pipeline_configuration' +p31639 +(dp31640 +S'mandatory' +p31641 +(dp31642 +S'editable' +p31643 +I00 +sS'value' +p31644 +I00 +ssS'name' +p31645 +(dp31646 +S'editable' +p31647 +I01 +sS'value' +p31648 +S'Pipeline Configuration' +p31649 +ssS'data_type' +p31650 +(dp31651 +S'editable' +p31652 +I00 +sS'value' +p31653 +S'entity' +p31654 +ssS'entity_type' +p31655 +(dp31656 +S'editable' +p31657 +I00 +sS'value' +p31658 +S'CustomEntity01' +p31659 +ssS'editable' +p31660 +(dp31661 +S'editable' +p31662 +I00 +sS'value' +p31663 +I01 +ssS'unique' +p31664 +(dp31665 +S'editable' +p31666 +I00 +sS'value' +p31667 +I00 +ssS'properties' +p31668 +(dp31669 +S'default_value' +p31670 +(dp31671 +S'editable' +p31672 +I00 +sS'value' +p31673 +NssS'summary_default' +p31674 +(dp31675 +S'editable' +p31676 +I01 +sS'value' +p31677 +S'none' +p31678 +ssS'valid_types' +p31679 +(dp31680 +S'editable' +p31681 +I01 +sS'value' +p31682 +(lp31683 +S'PipelineConfiguration' +p31684 +asssS'description' +p31685 +(dp31686 +S'editable' +p31687 +I01 +sS'value' +p31688 +g47 +sssS'sg_primary' +p31689 +(dp31690 +S'mandatory' +p31691 +(dp31692 +S'editable' +p31693 +I00 +sS'value' +p31694 +I00 +ssS'name' +p31695 +(dp31696 +S'editable' +p31697 +I01 +sS'value' +p31698 +S'Primary' +p31699 +ssS'data_type' +p31700 +(dp31701 +S'editable' +p31702 +I00 +sS'value' +p31703 +S'checkbox' +p31704 +ssS'entity_type' +p31705 +(dp31706 +S'editable' +p31707 +I00 +sS'value' +p31708 +S'CustomEntity01' +p31709 +ssS'editable' +p31710 +(dp31711 +S'editable' +p31712 +I00 +sS'value' +p31713 +I01 +ssS'unique' +p31714 +(dp31715 +S'editable' +p31716 +I00 +sS'value' +p31717 +I00 +ssS'properties' +p31718 +(dp31719 +S'default_value' +p31720 +(dp31721 +S'editable' +p31722 +I00 +sS'value' +p31723 +I00 +ssS'summary_default' +p31724 +(dp31725 +S'editable' +p31726 +I01 +sS'value' +p31727 +S'none' +p31728 +sssS'description' +p31729 +(dp31730 +S'editable' +p31731 +I01 +sS'value' +p31732 +g47 +sssS'sg_id_at_creation' +p31733 +(dp31734 +S'mandatory' +p31735 +(dp31736 +S'editable' +p31737 +I00 +sS'value' +p31738 +I00 +ssS'name' +p31739 +(dp31740 +S'editable' +p31741 +I01 +sS'value' +p31742 +S'Id At Creation' +p31743 +ssS'data_type' +p31744 +(dp31745 +S'editable' +p31746 +I00 +sS'value' +p31747 +S'number' +p31748 +ssS'entity_type' +p31749 +(dp31750 +S'editable' +p31751 +I00 +sS'value' +p31752 +S'CustomEntity01' +p31753 +ssS'editable' +p31754 +(dp31755 +S'editable' +p31756 +I00 +sS'value' +p31757 +I01 +ssS'unique' +p31758 +(dp31759 +S'editable' +p31760 +I00 +sS'value' +p31761 +I00 +ssS'properties' +p31762 +(dp31763 +S'default_value' +p31764 +(dp31765 +S'editable' +p31766 +I00 +sS'value' +p31767 +NssS'summary_default' +p31768 +(dp31769 +S'editable' +p31770 +I01 +sS'value' +p31771 +S'none' +p31772 +sssS'description' +p31773 +(dp31774 +S'editable' +p31775 +I01 +sS'value' +p31776 +g47 +sssS'sg_name_at_creation' +p31777 +(dp31778 +S'mandatory' +p31779 +(dp31780 +S'editable' +p31781 +I00 +sS'value' +p31782 +I00 +ssS'name' +p31783 +(dp31784 +S'editable' +p31785 +I01 +sS'value' +p31786 +S'Name At Creation' +p31787 +ssS'data_type' +p31788 +(dp31789 +S'editable' +p31790 +I00 +sS'value' +p31791 +S'text' +p31792 +ssS'entity_type' +p31793 +(dp31794 +S'editable' +p31795 +I00 +sS'value' +p31796 +S'CustomEntity01' +p31797 +ssS'editable' +p31798 +(dp31799 +S'editable' +p31800 +I00 +sS'value' +p31801 +I01 +ssS'unique' +p31802 +(dp31803 +S'editable' +p31804 +I00 +sS'value' +p31805 +I00 +ssS'properties' +p31806 +(dp31807 +S'default_value' +p31808 +(dp31809 +S'editable' +p31810 +I00 +sS'value' +p31811 +NssS'summary_default' +p31812 +(dp31813 +S'editable' +p31814 +I01 +sS'value' +p31815 +S'none' +p31816 +sssS'description' +p31817 +(dp31818 +S'editable' +p31819 +I01 +sS'value' +p31820 +g47 +sssS'sg_root' +p31821 +(dp31822 +S'mandatory' +p31823 +(dp31824 +S'editable' +p31825 +I00 +sS'value' +p31826 +I00 +ssS'name' +p31827 +(dp31828 +S'editable' +p31829 +I01 +sS'value' +p31830 +S'Root' +p31831 +ssS'data_type' +p31832 +(dp31833 +S'editable' +p31834 +I00 +sS'value' +p31835 +S'text' +p31836 +ssS'entity_type' +p31837 +(dp31838 +S'editable' +p31839 +I00 +sS'value' +p31840 +S'CustomEntity01' +p31841 +ssS'editable' +p31842 +(dp31843 +S'editable' +p31844 +I00 +sS'value' +p31845 +I01 +ssS'unique' +p31846 +(dp31847 +S'editable' +p31848 +I00 +sS'value' +p31849 +I00 +ssS'properties' +p31850 +(dp31851 +S'default_value' +p31852 +(dp31853 +S'editable' +p31854 +I00 +sS'value' +p31855 +NssS'summary_default' +p31856 +(dp31857 +S'editable' +p31858 +I01 +sS'value' +p31859 +S'none' +p31860 +sssS'description' +p31861 +(dp31862 +S'editable' +p31863 +I01 +sS'value' +p31864 +g47 +sssS'sg_entity_type_1' +p31865 +(dp31866 +S'mandatory' +p31867 +(dp31868 +S'editable' +p31869 +I00 +sS'value' +p31870 +I00 +ssS'name' +p31871 +(dp31872 +S'editable' +p31873 +I01 +sS'value' +p31874 +S'Entity Type' +p31875 +ssS'data_type' +p31876 +(dp31877 +S'editable' +p31878 +I00 +sS'value' +p31879 +S'text' +p31880 +ssS'entity_type' +p31881 +(dp31882 +S'editable' +p31883 +I00 +sS'value' +p31884 +S'CustomEntity01' +p31885 +ssS'editable' +p31886 +(dp31887 +S'editable' +p31888 +I00 +sS'value' +p31889 +I01 +ssS'unique' +p31890 +(dp31891 +S'editable' +p31892 +I00 +sS'value' +p31893 +I00 +ssS'properties' +p31894 +(dp31895 +S'default_value' +p31896 +(dp31897 +S'editable' +p31898 +I00 +sS'value' +p31899 +NssS'summary_default' +p31900 +(dp31901 +S'editable' +p31902 +I01 +sS'value' +p31903 +S'none' +p31904 +sssS'description' +p31905 +(dp31906 +S'editable' +p31907 +I01 +sS'value' +p31908 +g47 +sssS'notes' +p31909 +(dp31910 +S'mandatory' +p31911 +(dp31912 +S'editable' +p31913 +I00 +sS'value' +p31914 +I00 +ssS'name' +p31915 +(dp31916 +S'editable' +p31917 +I01 +sS'value' +p31918 +S'Notes' +p31919 +ssS'data_type' +p31920 +(dp31921 +S'editable' +p31922 +I00 +sS'value' +p31923 +S'multi_entity' +p31924 +ssS'entity_type' +p31925 +(dp31926 +S'editable' +p31927 +I00 +sS'value' +p31928 +S'CustomEntity01' +p31929 +ssS'editable' +p31930 +(dp31931 +S'editable' +p31932 +I00 +sS'value' +p31933 +I01 +ssS'unique' +p31934 +(dp31935 +S'editable' +p31936 +I00 +sS'value' +p31937 +I00 +ssS'properties' +p31938 +(dp31939 +S'default_value' +p31940 +(dp31941 +S'editable' +p31942 +I00 +sS'value' +p31943 +NssS'summary_default' +p31944 +(dp31945 +S'editable' +p31946 +I01 +sS'value' +p31947 +S'none' +p31948 +ssS'valid_types' +p31949 +(dp31950 +S'editable' +p31951 +I01 +sS'value' +p31952 +(lp31953 +S'Note' +p31954 +asssS'description' +p31955 +(dp31956 +S'editable' +p31957 +I01 +sS'value' +p31958 +g47 +sssS'sg_relative_path' +p31959 +(dp31960 +S'mandatory' +p31961 +(dp31962 +S'editable' +p31963 +I00 +sS'value' +p31964 +I00 +ssS'name' +p31965 +(dp31966 +S'editable' +p31967 +I01 +sS'value' +p31968 +S'Relative Path' +p31969 +ssS'data_type' +p31970 +(dp31971 +S'editable' +p31972 +I00 +sS'value' +p31973 +S'text' +p31974 +ssS'entity_type' +p31975 +(dp31976 +S'editable' +p31977 +I00 +sS'value' +p31978 +S'CustomEntity01' +p31979 +ssS'editable' +p31980 +(dp31981 +S'editable' +p31982 +I00 +sS'value' +p31983 +I01 +ssS'unique' +p31984 +(dp31985 +S'editable' +p31986 +I00 +sS'value' +p31987 +I00 +ssS'properties' +p31988 +(dp31989 +S'default_value' +p31990 +(dp31991 +S'editable' +p31992 +I00 +sS'value' +p31993 +NssS'summary_default' +p31994 +(dp31995 +S'editable' +p31996 +I01 +sS'value' +p31997 +S'none' +p31998 +sssS'description' +p31999 +(dp32000 +S'editable' +p32001 +I01 +sS'value' +p32002 +g47 +sssS'project' +p32003 +(dp32004 +S'mandatory' +p32005 +(dp32006 +S'editable' +p32007 +I00 +sS'value' +p32008 +I00 +ssS'name' +p32009 +(dp32010 +S'editable' +p32011 +I01 +sS'value' +p32012 +S'Project' +p32013 +ssS'data_type' +p32014 +(dp32015 +S'editable' +p32016 +I00 +sS'value' +p32017 +S'entity' +p32018 +ssS'entity_type' +p32019 +(dp32020 +S'editable' +p32021 +I00 +sS'value' +p32022 +S'CustomEntity01' +p32023 +ssS'editable' +p32024 +(dp32025 +S'editable' +p32026 +I00 +sS'value' +p32027 +I01 +ssS'unique' +p32028 +(dp32029 +S'editable' +p32030 +I00 +sS'value' +p32031 +I00 +ssS'properties' +p32032 +(dp32033 +S'default_value' +p32034 +(dp32035 +S'editable' +p32036 +I00 +sS'value' +p32037 +NssS'summary_default' +p32038 +(dp32039 +S'editable' +p32040 +I01 +sS'value' +p32041 +S'none' +p32042 +ssS'valid_types' +p32043 +(dp32044 +S'editable' +p32045 +I01 +sS'value' +p32046 +(lp32047 +S'Project' +p32048 +asssS'description' +p32049 +(dp32050 +S'editable' +p32051 +I01 +sS'value' +p32052 +g47 +sssS'filmstrip_image' +p32053 +(dp32054 +S'mandatory' +p32055 +(dp32056 +S'editable' +p32057 +I00 +sS'value' +p32058 +I00 +ssS'name' +p32059 +(dp32060 +S'editable' +p32061 +I01 +sS'value' +p32062 +S'Filmstrip Thumbnail' +p32063 +ssS'data_type' +p32064 +(dp32065 +S'editable' +p32066 +I00 +sS'value' +p32067 +S'image' +p32068 +ssS'entity_type' +p32069 +(dp32070 +S'editable' +p32071 +I00 +sS'value' +p32072 +S'CustomEntity01' +p32073 +ssS'editable' +p32074 +(dp32075 +S'editable' +p32076 +I00 +sS'value' +p32077 +I01 +ssS'unique' +p32078 +(dp32079 +S'editable' +p32080 +I00 +sS'value' +p32081 +I00 +ssS'properties' +p32082 +(dp32083 +S'default_value' +p32084 +(dp32085 +S'editable' +p32086 +I00 +sS'value' +p32087 +NssS'summary_default' +p32088 +(dp32089 +S'editable' +p32090 +I01 +sS'value' +p32091 +S'none' +p32092 +sssS'description' +p32093 +(dp32094 +S'editable' +p32095 +I01 +sS'value' +p32096 +g47 +sssS'sg_type_at_creation' +p32097 +(dp32098 +S'mandatory' +p32099 +(dp32100 +S'editable' +p32101 +I00 +sS'value' +p32102 +I00 +ssS'name' +p32103 +(dp32104 +S'editable' +p32105 +I01 +sS'value' +p32106 +S'Type At Creation' +p32107 +ssS'data_type' +p32108 +(dp32109 +S'editable' +p32110 +I00 +sS'value' +p32111 +S'text' +p32112 +ssS'entity_type' +p32113 +(dp32114 +S'editable' +p32115 +I00 +sS'value' +p32116 +S'CustomEntity01' +p32117 +ssS'editable' +p32118 +(dp32119 +S'editable' +p32120 +I00 +sS'value' +p32121 +I01 +ssS'unique' +p32122 +(dp32123 +S'editable' +p32124 +I00 +sS'value' +p32125 +I00 +ssS'properties' +p32126 +(dp32127 +S'default_value' +p32128 +(dp32129 +S'editable' +p32130 +I00 +sS'value' +p32131 +NssS'summary_default' +p32132 +(dp32133 +S'editable' +p32134 +I01 +sS'value' +p32135 +S'none' +p32136 +sssS'description' +p32137 +(dp32138 +S'editable' +p32139 +I01 +sS'value' +p32140 +g47 +sssS'tag_list' +p32141 +(dp32142 +S'mandatory' +p32143 +(dp32144 +S'editable' +p32145 +I00 +sS'value' +p32146 +I00 +ssS'name' +p32147 +(dp32148 +S'editable' +p32149 +I01 +sS'value' +p32150 +S'Tags' +p32151 +ssS'data_type' +p32152 +(dp32153 +S'editable' +p32154 +I00 +sS'value' +p32155 +S'tag_list' +p32156 +ssS'entity_type' +p32157 +(dp32158 +S'editable' +p32159 +I00 +sS'value' +p32160 +S'CustomEntity01' +p32161 +ssS'editable' +p32162 +(dp32163 +S'editable' +p32164 +I00 +sS'value' +p32165 +I01 +ssS'unique' +p32166 +(dp32167 +S'editable' +p32168 +I00 +sS'value' +p32169 +I00 +ssS'properties' +p32170 +(dp32171 +S'default_value' +p32172 +(dp32173 +S'editable' +p32174 +I00 +sS'value' +p32175 +NssS'summary_default' +p32176 +(dp32177 +S'editable' +p32178 +I01 +sS'value' +p32179 +S'none' +p32180 +ssS'valid_types' +p32181 +(dp32182 +S'editable' +p32183 +I01 +sS'value' +p32184 +(lp32185 +S'Tag' +p32186 +asssS'description' +p32187 +(dp32188 +S'editable' +p32189 +I01 +sS'value' +p32190 +g47 +sssS'created_at' +p32191 +(dp32192 +S'mandatory' +p32193 +(dp32194 +S'editable' +p32195 +I00 +sS'value' +p32196 +I00 +ssS'name' +p32197 +(dp32198 +S'editable' +p32199 +I01 +sS'value' +p32200 +S'Date Created' +p32201 +ssS'data_type' +p32202 +(dp32203 +S'editable' +p32204 +I00 +sS'value' +p32205 +S'date_time' +p32206 +ssS'entity_type' +p32207 +(dp32208 +S'editable' +p32209 +I00 +sS'value' +p32210 +S'CustomEntity01' +p32211 +ssS'editable' +p32212 +(dp32213 +S'editable' +p32214 +I00 +sS'value' +p32215 +I00 +ssS'unique' +p32216 +(dp32217 +S'editable' +p32218 +I00 +sS'value' +p32219 +I00 +ssS'properties' +p32220 +(dp32221 +S'default_value' +p32222 +(dp32223 +S'editable' +p32224 +I00 +sS'value' +p32225 +NssS'summary_default' +p32226 +(dp32227 +S'editable' +p32228 +I01 +sS'value' +p32229 +S'none' +p32230 +sssS'description' +p32231 +(dp32232 +S'editable' +p32233 +I01 +sS'value' +p32234 +g47 +sssS'sg_configuration_metadata' +p32235 +(dp32236 +S'mandatory' +p32237 +(dp32238 +S'editable' +p32239 +I00 +sS'value' +p32240 +I00 +ssS'name' +p32241 +(dp32242 +S'editable' +p32243 +I01 +sS'value' +p32244 +S'Configuration Metadata' +p32245 +ssS'data_type' +p32246 +(dp32247 +S'editable' +p32248 +I00 +sS'value' +p32249 +S'text' +p32250 +ssS'entity_type' +p32251 +(dp32252 +S'editable' +p32253 +I00 +sS'value' +p32254 +S'CustomEntity01' +p32255 +ssS'editable' +p32256 +(dp32257 +S'editable' +p32258 +I00 +sS'value' +p32259 +I01 +ssS'unique' +p32260 +(dp32261 +S'editable' +p32262 +I00 +sS'value' +p32263 +I00 +ssS'properties' +p32264 +(dp32265 +S'default_value' +p32266 +(dp32267 +S'editable' +p32268 +I00 +sS'value' +p32269 +NssS'summary_default' +p32270 +(dp32271 +S'editable' +p32272 +I01 +sS'value' +p32273 +S'none' +p32274 +sssS'description' +p32275 +(dp32276 +S'editable' +p32277 +I01 +sS'value' +p32278 +g47 +ssssS'Shot' +p32279 +(dp32280 +S'open_notes_count' +p32281 +(dp32282 +S'mandatory' +p32283 +(dp32284 +S'editable' +p32285 +I00 +sS'value' +p32286 +I00 +ssS'name' +p32287 +(dp32288 +S'editable' +p32289 +I01 +sS'value' +p32290 +S'Open Notes Count' +p32291 +ssS'data_type' +p32292 +(dp32293 +S'editable' +p32294 +I00 +sS'value' +p32295 +S'text' +p32296 +ssS'entity_type' +p32297 +(dp32298 +S'editable' +p32299 +I00 +sS'value' +p32300 +S'Shot' +p32301 +ssS'editable' +p32302 +(dp32303 +S'editable' +p32304 +I00 +sS'value' +p32305 +I00 +ssS'unique' +p32306 +(dp32307 +S'editable' +p32308 +I00 +sS'value' +p32309 +I00 +ssS'properties' +p32310 +(dp32311 +S'default_value' +p32312 +(dp32313 +S'editable' +p32314 +I00 +sS'value' +p32315 +NssS'summary_default' +p32316 +(dp32317 +S'editable' +p32318 +I01 +sS'value' +p32319 +S'none' +p32320 +sssS'description' +p32321 +(dp32322 +S'editable' +p32323 +I01 +sS'value' +p32324 +g47 +sssS'code' +p32325 +(dp32326 +S'mandatory' +p32327 +(dp32328 +S'editable' +p32329 +I00 +sS'value' +p32330 +I01 +ssS'name' +p32331 +(dp32332 +S'editable' +p32333 +I01 +sS'value' +p32334 +S'Shot Code' +p32335 +ssS'data_type' +p32336 +(dp32337 +S'editable' +p32338 +I00 +sS'value' +p32339 +S'text' +p32340 +ssS'entity_type' +p32341 +(dp32342 +S'editable' +p32343 +I00 +sS'value' +p32344 +S'Shot' +p32345 +ssS'editable' +p32346 +(dp32347 +S'editable' +p32348 +I00 +sS'value' +p32349 +I01 +ssS'unique' +p32350 +(dp32351 +S'editable' +p32352 +I00 +sS'value' +p32353 +I00 +ssS'properties' +p32354 +(dp32355 +S'default_value' +p32356 +(dp32357 +S'editable' +p32358 +I00 +sS'value' +p32359 +NssS'summary_default' +p32360 +(dp32361 +S'editable' +p32362 +I01 +sS'value' +p32363 +S'none' +p32364 +sssS'description' +p32365 +(dp32366 +S'editable' +p32367 +I01 +sS'value' +p32368 +g47 +sssS'step_13' +p32369 +(dp32370 +S'mandatory' +p32371 +(dp32372 +S'editable' +p32373 +I00 +sS'value' +p32374 +I00 +ssS'name' +p32375 +(dp32376 +S'editable' +p32377 +I01 +sS'value' +p32378 +S'Layout' +p32379 +ssS'data_type' +p32380 +(dp32381 +S'editable' +p32382 +I00 +sS'value' +p32383 +S'pivot_column' +p32384 +ssS'entity_type' +p32385 +(dp32386 +S'editable' +p32387 +I00 +sS'value' +p32388 +S'Shot' +p32389 +ssS'editable' +p32390 +(dp32391 +S'editable' +p32392 +I00 +sS'value' +p32393 +I00 +ssS'unique' +p32394 +(dp32395 +S'editable' +p32396 +I00 +sS'value' +p32397 +I00 +ssS'properties' +p32398 +(dp32399 +S'default_value' +p32400 +(dp32401 +S'editable' +p32402 +I00 +sS'value' +p32403 +NssS'summary_default' +p32404 +(dp32405 +S'editable' +p32406 +I00 +sS'value' +p32407 +S'none' +p32408 +sssS'description' +p32409 +(dp32410 +S'editable' +p32411 +I01 +sS'value' +p32412 +g47 +sssS'smart_head_out' +p32413 +(dp32414 +S'mandatory' +p32415 +(dp32416 +S'editable' +p32417 +I00 +sS'value' +p32418 +I00 +ssS'name' +p32419 +(dp32420 +S'editable' +p32421 +I01 +sS'value' +p32422 +S'Head Out' +p32423 +ssS'data_type' +p32424 +(dp32425 +S'editable' +p32426 +I00 +sS'value' +p32427 +S'number' +p32428 +ssS'entity_type' +p32429 +(dp32430 +S'editable' +p32431 +I00 +sS'value' +p32432 +S'Shot' +p32433 +ssS'editable' +p32434 +(dp32435 +S'editable' +p32436 +I00 +sS'value' +p32437 +I01 +ssS'unique' +p32438 +(dp32439 +S'editable' +p32440 +I00 +sS'value' +p32441 +I00 +ssS'properties' +p32442 +(dp32443 +S'default_value' +p32444 +(dp32445 +S'editable' +p32446 +I00 +sS'value' +p32447 +NssS'summary_default' +p32448 +(dp32449 +S'editable' +p32450 +I01 +sS'value' +p32451 +S'none' +p32452 +sssS'description' +p32453 +(dp32454 +S'editable' +p32455 +I01 +sS'value' +p32456 +g47 +sssS'sg_sequence' +p32457 +(dp32458 +S'mandatory' +p32459 +(dp32460 +S'editable' +p32461 +I00 +sS'value' +p32462 +I00 +ssS'name' +p32463 +(dp32464 +S'editable' +p32465 +I01 +sS'value' +p32466 +S'Sequence' +p32467 +ssS'data_type' +p32468 +(dp32469 +S'editable' +p32470 +I00 +sS'value' +p32471 +S'entity' +p32472 +ssS'entity_type' +p32473 +(dp32474 +S'editable' +p32475 +I00 +sS'value' +p32476 +S'Shot' +p32477 +ssS'editable' +p32478 +(dp32479 +S'editable' +p32480 +I00 +sS'value' +p32481 +I01 +ssS'unique' +p32482 +(dp32483 +S'editable' +p32484 +I00 +sS'value' +p32485 +I00 +ssS'properties' +p32486 +(dp32487 +S'default_value' +p32488 +(dp32489 +S'editable' +p32490 +I00 +sS'value' +p32491 +NssS'summary_default' +p32492 +(dp32493 +S'editable' +p32494 +I01 +sS'value' +p32495 +S'none' +p32496 +ssS'valid_types' +p32497 +(dp32498 +S'editable' +p32499 +I01 +sS'value' +p32500 +(lp32501 +S'Sequence' +p32502 +asssS'description' +p32503 +(dp32504 +S'editable' +p32505 +I01 +sS'value' +p32506 +g47 +sssS'image' +p32507 +(dp32508 +S'mandatory' +p32509 +(dp32510 +S'editable' +p32511 +I00 +sS'value' +p32512 +I00 +ssS'name' +p32513 +(dp32514 +S'editable' +p32515 +I01 +sS'value' +p32516 +S'Thumbnail' +p32517 +ssS'data_type' +p32518 +(dp32519 +S'editable' +p32520 +I00 +sS'value' +p32521 +S'image' +p32522 +ssS'entity_type' +p32523 +(dp32524 +S'editable' +p32525 +I00 +sS'value' +p32526 +S'Shot' +p32527 +ssS'editable' +p32528 +(dp32529 +S'editable' +p32530 +I00 +sS'value' +p32531 +I01 +ssS'unique' +p32532 +(dp32533 +S'editable' +p32534 +I00 +sS'value' +p32535 +I00 +ssS'properties' +p32536 +(dp32537 +S'default_value' +p32538 +(dp32539 +S'editable' +p32540 +I00 +sS'value' +p32541 +NssS'summary_default' +p32542 +(dp32543 +S'editable' +p32544 +I01 +sS'value' +p32545 +S'none' +p32546 +sssS'description' +p32547 +(dp32548 +S'editable' +p32549 +I01 +sS'value' +p32550 +g47 +sssS'tag_list' +p32551 +(dp32552 +S'mandatory' +p32553 +(dp32554 +S'editable' +p32555 +I00 +sS'value' +p32556 +I00 +ssS'name' +p32557 +(dp32558 +S'editable' +p32559 +I01 +sS'value' +p32560 +S'Tags' +p32561 +ssS'data_type' +p32562 +(dp32563 +S'editable' +p32564 +I00 +sS'value' +p32565 +S'tag_list' +p32566 +ssS'entity_type' +p32567 +(dp32568 +S'editable' +p32569 +I00 +sS'value' +p32570 +S'Shot' +p32571 +ssS'editable' +p32572 +(dp32573 +S'editable' +p32574 +I00 +sS'value' +p32575 +I01 +ssS'unique' +p32576 +(dp32577 +S'editable' +p32578 +I00 +sS'value' +p32579 +I00 +ssS'properties' +p32580 +(dp32581 +S'default_value' +p32582 +(dp32583 +S'editable' +p32584 +I00 +sS'value' +p32585 +NssS'summary_default' +p32586 +(dp32587 +S'editable' +p32588 +I01 +sS'value' +p32589 +S'none' +p32590 +ssS'valid_types' +p32591 +(dp32592 +S'editable' +p32593 +I01 +sS'value' +p32594 +(lp32595 +S'Tag' +p32596 +asssS'description' +p32597 +(dp32598 +S'editable' +p32599 +I01 +sS'value' +p32600 +g47 +sssS'head_duration' +p32601 +(dp32602 +S'mandatory' +p32603 +(dp32604 +S'editable' +p32605 +I00 +sS'value' +p32606 +I00 +ssS'name' +p32607 +(dp32608 +S'editable' +p32609 +I01 +sS'value' +p32610 +S'Raw Head Duration' +p32611 +ssS'data_type' +p32612 +(dp32613 +S'editable' +p32614 +I00 +sS'value' +p32615 +S'number' +p32616 +ssS'entity_type' +p32617 +(dp32618 +S'editable' +p32619 +I00 +sS'value' +p32620 +S'Shot' +p32621 +ssS'editable' +p32622 +(dp32623 +S'editable' +p32624 +I00 +sS'value' +p32625 +I01 +ssS'unique' +p32626 +(dp32627 +S'editable' +p32628 +I00 +sS'value' +p32629 +I00 +ssS'properties' +p32630 +(dp32631 +S'default_value' +p32632 +(dp32633 +S'editable' +p32634 +I00 +sS'value' +p32635 +NssS'summary_default' +p32636 +(dp32637 +S'editable' +p32638 +I01 +sS'value' +p32639 +S'none' +p32640 +sssS'description' +p32641 +(dp32642 +S'editable' +p32643 +I01 +sS'value' +p32644 +g47 +sssS'updated_at' +p32645 +(dp32646 +S'mandatory' +p32647 +(dp32648 +S'editable' +p32649 +I00 +sS'value' +p32650 +I00 +ssS'name' +p32651 +(dp32652 +S'editable' +p32653 +I01 +sS'value' +p32654 +S'Date Updated' +p32655 +ssS'data_type' +p32656 +(dp32657 +S'editable' +p32658 +I00 +sS'value' +p32659 +S'date_time' +p32660 +ssS'entity_type' +p32661 +(dp32662 +S'editable' +p32663 +I00 +sS'value' +p32664 +S'Shot' +p32665 +ssS'editable' +p32666 +(dp32667 +S'editable' +p32668 +I00 +sS'value' +p32669 +I00 +ssS'unique' +p32670 +(dp32671 +S'editable' +p32672 +I00 +sS'value' +p32673 +I00 +ssS'properties' +p32674 +(dp32675 +S'default_value' +p32676 +(dp32677 +S'editable' +p32678 +I00 +sS'value' +p32679 +NssS'summary_default' +p32680 +(dp32681 +S'editable' +p32682 +I01 +sS'value' +p32683 +S'none' +p32684 +sssS'description' +p32685 +(dp32686 +S'editable' +p32687 +I01 +sS'value' +p32688 +g47 +sssS'head_in' +p32689 +(dp32690 +S'mandatory' +p32691 +(dp32692 +S'editable' +p32693 +I00 +sS'value' +p32694 +I00 +ssS'name' +p32695 +(dp32696 +S'editable' +p32697 +I01 +sS'value' +p32698 +S'Raw Head In' +p32699 +ssS'data_type' +p32700 +(dp32701 +S'editable' +p32702 +I00 +sS'value' +p32703 +S'number' +p32704 +ssS'entity_type' +p32705 +(dp32706 +S'editable' +p32707 +I00 +sS'value' +p32708 +S'Shot' +p32709 +ssS'editable' +p32710 +(dp32711 +S'editable' +p32712 +I00 +sS'value' +p32713 +I01 +ssS'unique' +p32714 +(dp32715 +S'editable' +p32716 +I00 +sS'value' +p32717 +I00 +ssS'properties' +p32718 +(dp32719 +S'default_value' +p32720 +(dp32721 +S'editable' +p32722 +I00 +sS'value' +p32723 +NssS'summary_default' +p32724 +(dp32725 +S'editable' +p32726 +I01 +sS'value' +p32727 +S'none' +p32728 +sssS'description' +p32729 +(dp32730 +S'editable' +p32731 +I01 +sS'value' +p32732 +g47 +sssS'tasks' +p32733 +(dp32734 +S'mandatory' +p32735 +(dp32736 +S'editable' +p32737 +I00 +sS'value' +p32738 +I00 +ssS'name' +p32739 +(dp32740 +S'editable' +p32741 +I01 +sS'value' +p32742 +S'Tasks' +p32743 +ssS'data_type' +p32744 +(dp32745 +S'editable' +p32746 +I00 +sS'value' +p32747 +S'multi_entity' +p32748 +ssS'entity_type' +p32749 +(dp32750 +S'editable' +p32751 +I00 +sS'value' +p32752 +S'Shot' +p32753 +ssS'editable' +p32754 +(dp32755 +S'editable' +p32756 +I00 +sS'value' +p32757 +I01 +ssS'unique' +p32758 +(dp32759 +S'editable' +p32760 +I00 +sS'value' +p32761 +I00 +ssS'properties' +p32762 +(dp32763 +S'default_value' +p32764 +(dp32765 +S'editable' +p32766 +I00 +sS'value' +p32767 +NssS'summary_default' +p32768 +(dp32769 +S'editable' +p32770 +I01 +sS'value' +p32771 +S'none' +p32772 +ssS'valid_types' +p32773 +(dp32774 +S'editable' +p32775 +I01 +sS'value' +p32776 +(lp32777 +S'Task' +p32778 +asssS'description' +p32779 +(dp32780 +S'editable' +p32781 +I01 +sS'value' +p32782 +g47 +sssS'filmstrip_image' +p32783 +(dp32784 +S'mandatory' +p32785 +(dp32786 +S'editable' +p32787 +I00 +sS'value' +p32788 +I00 +ssS'name' +p32789 +(dp32790 +S'editable' +p32791 +I01 +sS'value' +p32792 +S'Filmstrip Thumbnail' +p32793 +ssS'data_type' +p32794 +(dp32795 +S'editable' +p32796 +I00 +sS'value' +p32797 +S'image' +p32798 +ssS'entity_type' +p32799 +(dp32800 +S'editable' +p32801 +I00 +sS'value' +p32802 +S'Shot' +p32803 +ssS'editable' +p32804 +(dp32805 +S'editable' +p32806 +I00 +sS'value' +p32807 +I01 +ssS'unique' +p32808 +(dp32809 +S'editable' +p32810 +I00 +sS'value' +p32811 +I00 +ssS'properties' +p32812 +(dp32813 +S'default_value' +p32814 +(dp32815 +S'editable' +p32816 +I00 +sS'value' +p32817 +NssS'summary_default' +p32818 +(dp32819 +S'editable' +p32820 +I01 +sS'value' +p32821 +S'none' +p32822 +sssS'description' +p32823 +(dp32824 +S'editable' +p32825 +I01 +sS'value' +p32826 +g47 +sssS'sg_cut_duration' +p32827 +(dp32828 +S'mandatory' +p32829 +(dp32830 +S'editable' +p32831 +I00 +sS'value' +p32832 +I00 +ssS'name' +p32833 +(dp32834 +S'editable' +p32835 +I01 +sS'value' +p32836 +S'Cut Duration' +p32837 +ssS'data_type' +p32838 +(dp32839 +S'editable' +p32840 +I00 +sS'value' +p32841 +S'number' +p32842 +ssS'entity_type' +p32843 +(dp32844 +S'editable' +p32845 +I00 +sS'value' +p32846 +S'Shot' +p32847 +ssS'editable' +p32848 +(dp32849 +S'editable' +p32850 +I00 +sS'value' +p32851 +I01 +ssS'unique' +p32852 +(dp32853 +S'editable' +p32854 +I00 +sS'value' +p32855 +I00 +ssS'properties' +p32856 +(dp32857 +S'default_value' +p32858 +(dp32859 +S'editable' +p32860 +I00 +sS'value' +p32861 +NssS'summary_default' +p32862 +(dp32863 +S'editable' +p32864 +I01 +sS'value' +p32865 +S'sum' +p32866 +sssS'description' +p32867 +(dp32868 +S'editable' +p32869 +I01 +sS'value' +p32870 +S'Duration of this shot in the cut.' +p32871 +sssS'cached_display_name' +p32872 +(dp32873 +S'mandatory' +p32874 +(dp32875 +S'editable' +p32876 +I00 +sS'value' +p32877 +I00 +ssS'name' +p32878 +(dp32879 +S'editable' +p32880 +I01 +sS'value' +p32881 +S'Cached Display Name' +p32882 +ssS'data_type' +p32883 +(dp32884 +S'editable' +p32885 +I00 +sS'value' +p32886 +S'text' +p32887 +ssS'entity_type' +p32888 +(dp32889 +S'editable' +p32890 +I00 +sS'value' +p32891 +S'Shot' +p32892 +ssS'editable' +p32893 +(dp32894 +S'editable' +p32895 +I00 +sS'value' +p32896 +I01 +ssS'unique' +p32897 +(dp32898 +S'editable' +p32899 +I00 +sS'value' +p32900 +I00 +ssS'properties' +p32901 +(dp32902 +S'default_value' +p32903 +(dp32904 +S'editable' +p32905 +I00 +sS'value' +p32906 +NssS'summary_default' +p32907 +(dp32908 +S'editable' +p32909 +I00 +sS'value' +p32910 +S'none' +p32911 +sssS'description' +p32912 +(dp32913 +S'editable' +p32914 +I01 +sS'value' +p32915 +g47 +sssS'smart_cut_duration' +p32916 +(dp32917 +S'mandatory' +p32918 +(dp32919 +S'editable' +p32920 +I00 +sS'value' +p32921 +I00 +ssS'name' +p32922 +(dp32923 +S'editable' +p32924 +I01 +sS'value' +p32925 +S'Cut Duration' +p32926 +ssS'data_type' +p32927 +(dp32928 +S'editable' +p32929 +I00 +sS'value' +p32930 +S'number' +p32931 +ssS'entity_type' +p32932 +(dp32933 +S'editable' +p32934 +I00 +sS'value' +p32935 +S'Shot' +p32936 +ssS'editable' +p32937 +(dp32938 +S'editable' +p32939 +I00 +sS'value' +p32940 +I01 +ssS'unique' +p32941 +(dp32942 +S'editable' +p32943 +I00 +sS'value' +p32944 +I00 +ssS'properties' +p32945 +(dp32946 +S'default_value' +p32947 +(dp32948 +S'editable' +p32949 +I00 +sS'value' +p32950 +NssS'summary_default' +p32951 +(dp32952 +S'editable' +p32953 +I01 +sS'value' +p32954 +S'none' +p32955 +sssS'description' +p32956 +(dp32957 +S'editable' +p32958 +I01 +sS'value' +p32959 +g47 +sssS'id' +p32960 +(dp32961 +S'mandatory' +p32962 +(dp32963 +S'editable' +p32964 +I00 +sS'value' +p32965 +I00 +ssS'name' +p32966 +(dp32967 +S'editable' +p32968 +I01 +sS'value' +p32969 +S'Id' +p32970 +ssS'data_type' +p32971 +(dp32972 +S'editable' +p32973 +I00 +sS'value' +p32974 +S'number' +p32975 +ssS'entity_type' +p32976 +(dp32977 +S'editable' +p32978 +I00 +sS'value' +p32979 +S'Shot' +p32980 +ssS'editable' +p32981 +(dp32982 +S'editable' +p32983 +I00 +sS'value' +p32984 +I00 +ssS'unique' +p32985 +(dp32986 +S'editable' +p32987 +I00 +sS'value' +p32988 +I00 +ssS'properties' +p32989 +(dp32990 +S'default_value' +p32991 +(dp32992 +S'editable' +p32993 +I00 +sS'value' +p32994 +NssS'summary_default' +p32995 +(dp32996 +S'editable' +p32997 +I01 +sS'value' +p32998 +S'none' +p32999 +sssS'description' +p33000 +(dp33001 +S'editable' +p33002 +I01 +sS'value' +p33003 +g47 +sssS'updated_by' +p33004 +(dp33005 +S'mandatory' +p33006 +(dp33007 +S'editable' +p33008 +I00 +sS'value' +p33009 +I00 +ssS'name' +p33010 +(dp33011 +S'editable' +p33012 +I01 +sS'value' +p33013 +S'Updated by' +p33014 +ssS'data_type' +p33015 +(dp33016 +S'editable' +p33017 +I00 +sS'value' +p33018 +S'entity' +p33019 +ssS'entity_type' +p33020 +(dp33021 +S'editable' +p33022 +I00 +sS'value' +p33023 +S'Shot' +p33024 +ssS'editable' +p33025 +(dp33026 +S'editable' +p33027 +I00 +sS'value' +p33028 +I00 +ssS'unique' +p33029 +(dp33030 +S'editable' +p33031 +I00 +sS'value' +p33032 +I00 +ssS'properties' +p33033 +(dp33034 +S'default_value' +p33035 +(dp33036 +S'editable' +p33037 +I00 +sS'value' +p33038 +NssS'summary_default' +p33039 +(dp33040 +S'editable' +p33041 +I01 +sS'value' +p33042 +S'none' +p33043 +ssS'valid_types' +p33044 +(dp33045 +S'editable' +p33046 +I01 +sS'value' +p33047 +(lp33048 +S'HumanUser' +p33049 +aS'ApiUser' +p33050 +asssS'description' +p33051 +(dp33052 +S'editable' +p33053 +I01 +sS'value' +p33054 +g47 +sssS'open_notes' +p33055 +(dp33056 +S'mandatory' +p33057 +(dp33058 +S'editable' +p33059 +I00 +sS'value' +p33060 +I00 +ssS'name' +p33061 +(dp33062 +S'editable' +p33063 +I01 +sS'value' +p33064 +S'Open Notes' +p33065 +ssS'data_type' +p33066 +(dp33067 +S'editable' +p33068 +I00 +sS'value' +p33069 +S'multi_entity' +p33070 +ssS'entity_type' +p33071 +(dp33072 +S'editable' +p33073 +I00 +sS'value' +p33074 +S'Shot' +p33075 +ssS'editable' +p33076 +(dp33077 +S'editable' +p33078 +I00 +sS'value' +p33079 +I00 +ssS'unique' +p33080 +(dp33081 +S'editable' +p33082 +I00 +sS'value' +p33083 +I00 +ssS'properties' +p33084 +(dp33085 +S'default_value' +p33086 +(dp33087 +S'editable' +p33088 +I00 +sS'value' +p33089 +NssS'summary_default' +p33090 +(dp33091 +S'editable' +p33092 +I01 +sS'value' +p33093 +S'none' +p33094 +ssS'valid_types' +p33095 +(dp33096 +S'editable' +p33097 +I01 +sS'value' +p33098 +(lp33099 +S'Note' +p33100 +asssS'description' +p33101 +(dp33102 +S'editable' +p33103 +I01 +sS'value' +p33104 +g47 +sssS'addressings_cc' +p33105 +(dp33106 +S'mandatory' +p33107 +(dp33108 +S'editable' +p33109 +I00 +sS'value' +p33110 +I00 +ssS'name' +p33111 +(dp33112 +S'editable' +p33113 +I01 +sS'value' +p33114 +S'Cc' +p33115 +ssS'data_type' +p33116 +(dp33117 +S'editable' +p33118 +I00 +sS'value' +p33119 +S'multi_entity' +p33120 +ssS'entity_type' +p33121 +(dp33122 +S'editable' +p33123 +I00 +sS'value' +p33124 +S'Shot' +p33125 +ssS'editable' +p33126 +(dp33127 +S'editable' +p33128 +I00 +sS'value' +p33129 +I01 +ssS'unique' +p33130 +(dp33131 +S'editable' +p33132 +I00 +sS'value' +p33133 +I00 +ssS'properties' +p33134 +(dp33135 +S'default_value' +p33136 +(dp33137 +S'editable' +p33138 +I00 +sS'value' +p33139 +NssS'summary_default' +p33140 +(dp33141 +S'editable' +p33142 +I01 +sS'value' +p33143 +S'none' +p33144 +ssS'valid_types' +p33145 +(dp33146 +S'editable' +p33147 +I01 +sS'value' +p33148 +(lp33149 +S'Group' +p33150 +aS'HumanUser' +p33151 +asssS'description' +p33152 +(dp33153 +S'editable' +p33154 +I01 +sS'value' +p33155 +g47 +sssS'sg_working_duration' +p33156 +(dp33157 +S'mandatory' +p33158 +(dp33159 +S'editable' +p33160 +I00 +sS'value' +p33161 +I00 +ssS'name' +p33162 +(dp33163 +S'editable' +p33164 +I01 +sS'value' +p33165 +S'Working Duration' +p33166 +ssS'data_type' +p33167 +(dp33168 +S'editable' +p33169 +I00 +sS'value' +p33170 +S'number' +p33171 +ssS'entity_type' +p33172 +(dp33173 +S'editable' +p33174 +I00 +sS'value' +p33175 +S'Shot' +p33176 +ssS'editable' +p33177 +(dp33178 +S'editable' +p33179 +I00 +sS'value' +p33180 +I01 +ssS'unique' +p33181 +(dp33182 +S'editable' +p33183 +I00 +sS'value' +p33184 +I00 +ssS'properties' +p33185 +(dp33186 +S'default_value' +p33187 +(dp33188 +S'editable' +p33189 +I00 +sS'value' +p33190 +NssS'summary_default' +p33191 +(dp33192 +S'editable' +p33193 +I01 +sS'value' +p33194 +S'none' +p33195 +sssS'description' +p33196 +(dp33197 +S'editable' +p33198 +I01 +sS'value' +p33199 +S'The full duration of available frames in this Shot from Head In to Tail Out.' +p33200 +sssS'sg_shotnumber' +p33201 +(dp33202 +S'mandatory' +p33203 +(dp33204 +S'editable' +p33205 +I00 +sS'value' +p33206 +I00 +ssS'name' +p33207 +(dp33208 +S'editable' +p33209 +I01 +sS'value' +p33210 +S'shotnumber' +p33211 +ssS'data_type' +p33212 +(dp33213 +S'editable' +p33214 +I00 +sS'value' +p33215 +S'text' +p33216 +ssS'entity_type' +p33217 +(dp33218 +S'editable' +p33219 +I00 +sS'value' +p33220 +S'Shot' +p33221 +ssS'editable' +p33222 +(dp33223 +S'editable' +p33224 +I00 +sS'value' +p33225 +I01 +ssS'unique' +p33226 +(dp33227 +S'editable' +p33228 +I00 +sS'value' +p33229 +I00 +ssS'properties' +p33230 +(dp33231 +S'default_value' +p33232 +(dp33233 +S'editable' +p33234 +I00 +sS'value' +p33235 +NssS'summary_default' +p33236 +(dp33237 +S'editable' +p33238 +I01 +sS'value' +p33239 +S'none' +p33240 +sssS'description' +p33241 +(dp33242 +S'editable' +p33243 +I01 +sS'value' +p33244 +g47 +sssS'task_template' +p33245 +(dp33246 +S'mandatory' +p33247 +(dp33248 +S'editable' +p33249 +I00 +sS'value' +p33250 +I00 +ssS'name' +p33251 +(dp33252 +S'editable' +p33253 +I01 +sS'value' +p33254 +S'Task Template' +p33255 +ssS'data_type' +p33256 +(dp33257 +S'editable' +p33258 +I00 +sS'value' +p33259 +S'entity' +p33260 +ssS'entity_type' +p33261 +(dp33262 +S'editable' +p33263 +I00 +sS'value' +p33264 +S'Shot' +p33265 +ssS'editable' +p33266 +(dp33267 +S'editable' +p33268 +I00 +sS'value' +p33269 +I01 +ssS'unique' +p33270 +(dp33271 +S'editable' +p33272 +I00 +sS'value' +p33273 +I00 +ssS'properties' +p33274 +(dp33275 +S'default_value' +p33276 +(dp33277 +S'editable' +p33278 +I00 +sS'value' +p33279 +NssS'summary_default' +p33280 +(dp33281 +S'editable' +p33282 +I01 +sS'value' +p33283 +S'none' +p33284 +ssS'valid_types' +p33285 +(dp33286 +S'editable' +p33287 +I01 +sS'value' +p33288 +(lp33289 +S'TaskTemplate' +p33290 +asssS'description' +p33291 +(dp33292 +S'editable' +p33293 +I01 +sS'value' +p33294 +g47 +sssS'created_by' +p33295 +(dp33296 +S'mandatory' +p33297 +(dp33298 +S'editable' +p33299 +I00 +sS'value' +p33300 +I00 +ssS'name' +p33301 +(dp33302 +S'editable' +p33303 +I01 +sS'value' +p33304 +S'Created by' +p33305 +ssS'data_type' +p33306 +(dp33307 +S'editable' +p33308 +I00 +sS'value' +p33309 +S'entity' +p33310 +ssS'entity_type' +p33311 +(dp33312 +S'editable' +p33313 +I00 +sS'value' +p33314 +S'Shot' +p33315 +ssS'editable' +p33316 +(dp33317 +S'editable' +p33318 +I00 +sS'value' +p33319 +I00 +ssS'unique' +p33320 +(dp33321 +S'editable' +p33322 +I00 +sS'value' +p33323 +I00 +ssS'properties' +p33324 +(dp33325 +S'default_value' +p33326 +(dp33327 +S'editable' +p33328 +I00 +sS'value' +p33329 +NssS'summary_default' +p33330 +(dp33331 +S'editable' +p33332 +I01 +sS'value' +p33333 +S'none' +p33334 +ssS'valid_types' +p33335 +(dp33336 +S'editable' +p33337 +I01 +sS'value' +p33338 +(lp33339 +S'HumanUser' +p33340 +aS'ApiUser' +p33341 +asssS'description' +p33342 +(dp33343 +S'editable' +p33344 +I01 +sS'value' +p33345 +g47 +sssS'smart_tail_duration' +p33346 +(dp33347 +S'mandatory' +p33348 +(dp33349 +S'editable' +p33350 +I00 +sS'value' +p33351 +I00 +ssS'name' +p33352 +(dp33353 +S'editable' +p33354 +I01 +sS'value' +p33355 +S'Tail Duration' +p33356 +ssS'data_type' +p33357 +(dp33358 +S'editable' +p33359 +I00 +sS'value' +p33360 +S'number' +p33361 +ssS'entity_type' +p33362 +(dp33363 +S'editable' +p33364 +I00 +sS'value' +p33365 +S'Shot' +p33366 +ssS'editable' +p33367 +(dp33368 +S'editable' +p33369 +I00 +sS'value' +p33370 +I01 +ssS'unique' +p33371 +(dp33372 +S'editable' +p33373 +I00 +sS'value' +p33374 +I00 +ssS'properties' +p33375 +(dp33376 +S'default_value' +p33377 +(dp33378 +S'editable' +p33379 +I00 +sS'value' +p33380 +NssS'summary_default' +p33381 +(dp33382 +S'editable' +p33383 +I01 +sS'value' +p33384 +S'none' +p33385 +sssS'description' +p33386 +(dp33387 +S'editable' +p33388 +I01 +sS'value' +p33389 +g47 +sssS'parent_shots' +p33390 +(dp33391 +S'mandatory' +p33392 +(dp33393 +S'editable' +p33394 +I00 +sS'value' +p33395 +I00 +ssS'name' +p33396 +(dp33397 +S'editable' +p33398 +I01 +sS'value' +p33399 +S'Parent Shots' +p33400 +ssS'data_type' +p33401 +(dp33402 +S'editable' +p33403 +I00 +sS'value' +p33404 +S'multi_entity' +p33405 +ssS'entity_type' +p33406 +(dp33407 +S'editable' +p33408 +I00 +sS'value' +p33409 +S'Shot' +p33410 +ssS'editable' +p33411 +(dp33412 +S'editable' +p33413 +I00 +sS'value' +p33414 +I01 +ssS'unique' +p33415 +(dp33416 +S'editable' +p33417 +I00 +sS'value' +p33418 +I00 +ssS'properties' +p33419 +(dp33420 +S'default_value' +p33421 +(dp33422 +S'editable' +p33423 +I00 +sS'value' +p33424 +NssS'summary_default' +p33425 +(dp33426 +S'editable' +p33427 +I01 +sS'value' +p33428 +S'none' +p33429 +ssS'valid_types' +p33430 +(dp33431 +S'editable' +p33432 +I01 +sS'value' +p33433 +(lp33434 +S'Shot' +p33435 +asssS'description' +p33436 +(dp33437 +S'editable' +p33438 +I01 +sS'value' +p33439 +g47 +sssS'sg_status_list' +p33440 +(dp33441 +S'mandatory' +p33442 +(dp33443 +S'editable' +p33444 +I00 +sS'value' +p33445 +I00 +ssS'name' +p33446 +(dp33447 +S'editable' +p33448 +I01 +sS'value' +p33449 +S'Status' +p33450 +ssS'data_type' +p33451 +(dp33452 +S'editable' +p33453 +I00 +sS'value' +p33454 +S'status_list' +p33455 +ssS'entity_type' +p33456 +(dp33457 +S'editable' +p33458 +I00 +sS'value' +p33459 +S'Shot' +p33460 +ssS'editable' +p33461 +(dp33462 +S'editable' +p33463 +I00 +sS'value' +p33464 +I01 +ssS'unique' +p33465 +(dp33466 +S'editable' +p33467 +I00 +sS'value' +p33468 +I00 +ssS'properties' +p33469 +(dp33470 +S'default_value' +p33471 +(dp33472 +S'editable' +p33473 +I01 +sS'value' +p33474 +S'wtg' +p33475 +ssS'valid_values' +p33476 +(dp33477 +S'editable' +p33478 +I01 +sS'value' +p33479 +(lp33480 +S'cbb' +p33481 +aS'fin' +p33482 +aS'ip' +p33483 +aS'omt' +p33484 +aS'hld' +p33485 +aS'rdy' +p33486 +aS'wtg' +p33487 +assS'summary_default' +p33488 +(dp33489 +S'editable' +p33490 +I01 +sS'value' +p33491 +S'status_list' +p33492 +sssS'description' +p33493 +(dp33494 +S'editable' +p33495 +I01 +sS'value' +p33496 +g47 +sssS'smart_head_in' +p33497 +(dp33498 +S'mandatory' +p33499 +(dp33500 +S'editable' +p33501 +I00 +sS'value' +p33502 +I00 +ssS'name' +p33503 +(dp33504 +S'editable' +p33505 +I01 +sS'value' +p33506 +S'Head In' +p33507 +ssS'data_type' +p33508 +(dp33509 +S'editable' +p33510 +I00 +sS'value' +p33511 +S'number' +p33512 +ssS'entity_type' +p33513 +(dp33514 +S'editable' +p33515 +I00 +sS'value' +p33516 +S'Shot' +p33517 +ssS'editable' +p33518 +(dp33519 +S'editable' +p33520 +I00 +sS'value' +p33521 +I01 +ssS'unique' +p33522 +(dp33523 +S'editable' +p33524 +I00 +sS'value' +p33525 +I00 +ssS'properties' +p33526 +(dp33527 +S'default_value' +p33528 +(dp33529 +S'editable' +p33530 +I00 +sS'value' +p33531 +NssS'summary_default' +p33532 +(dp33533 +S'editable' +p33534 +I01 +sS'value' +p33535 +S'none' +p33536 +sssS'description' +p33537 +(dp33538 +S'editable' +p33539 +I01 +sS'value' +p33540 +g47 +sssS'smart_working_duration' +p33541 +(dp33542 +S'mandatory' +p33543 +(dp33544 +S'editable' +p33545 +I00 +sS'value' +p33546 +I00 +ssS'name' +p33547 +(dp33548 +S'editable' +p33549 +I01 +sS'value' +p33550 +S'Working Duration' +p33551 +ssS'data_type' +p33552 +(dp33553 +S'editable' +p33554 +I00 +sS'value' +p33555 +S'number' +p33556 +ssS'entity_type' +p33557 +(dp33558 +S'editable' +p33559 +I00 +sS'value' +p33560 +S'Shot' +p33561 +ssS'editable' +p33562 +(dp33563 +S'editable' +p33564 +I00 +sS'value' +p33565 +I00 +ssS'unique' +p33566 +(dp33567 +S'editable' +p33568 +I00 +sS'value' +p33569 +I00 +ssS'properties' +p33570 +(dp33571 +S'default_value' +p33572 +(dp33573 +S'editable' +p33574 +I00 +sS'value' +p33575 +NssS'summary_default' +p33576 +(dp33577 +S'editable' +p33578 +I01 +sS'value' +p33579 +S'none' +p33580 +sssS'description' +p33581 +(dp33582 +S'editable' +p33583 +I01 +sS'value' +p33584 +g47 +sssS'sg_cut_in' +p33585 +(dp33586 +S'mandatory' +p33587 +(dp33588 +S'editable' +p33589 +I00 +sS'value' +p33590 +I00 +ssS'name' +p33591 +(dp33592 +S'editable' +p33593 +I01 +sS'value' +p33594 +S'Cut In' +p33595 +ssS'data_type' +p33596 +(dp33597 +S'editable' +p33598 +I00 +sS'value' +p33599 +S'number' +p33600 +ssS'entity_type' +p33601 +(dp33602 +S'editable' +p33603 +I00 +sS'value' +p33604 +S'Shot' +p33605 +ssS'editable' +p33606 +(dp33607 +S'editable' +p33608 +I00 +sS'value' +p33609 +I01 +ssS'unique' +p33610 +(dp33611 +S'editable' +p33612 +I00 +sS'value' +p33613 +I00 +ssS'properties' +p33614 +(dp33615 +S'default_value' +p33616 +(dp33617 +S'editable' +p33618 +I00 +sS'value' +p33619 +NssS'summary_default' +p33620 +(dp33621 +S'editable' +p33622 +I01 +sS'value' +p33623 +S'sum' +p33624 +sssS'description' +p33625 +(dp33626 +S'editable' +p33627 +I01 +sS'value' +p33628 +S'The first frame used in the cut. This input comes from editorial and is used for playback of movie and frames.' +p33629 +sssS'elements' +p33630 +(dp33631 +S'mandatory' +p33632 +(dp33633 +S'editable' +p33634 +I00 +sS'value' +p33635 +I00 +ssS'name' +p33636 +(dp33637 +S'editable' +p33638 +I01 +sS'value' +p33639 +S'Elements' +p33640 +ssS'data_type' +p33641 +(dp33642 +S'editable' +p33643 +I00 +sS'value' +p33644 +S'multi_entity' +p33645 +ssS'entity_type' +p33646 +(dp33647 +S'editable' +p33648 +I00 +sS'value' +p33649 +S'Shot' +p33650 +ssS'editable' +p33651 +(dp33652 +S'editable' +p33653 +I00 +sS'value' +p33654 +I01 +ssS'unique' +p33655 +(dp33656 +S'editable' +p33657 +I00 +sS'value' +p33658 +I00 +ssS'properties' +p33659 +(dp33660 +S'default_value' +p33661 +(dp33662 +S'editable' +p33663 +I00 +sS'value' +p33664 +NssS'summary_default' +p33665 +(dp33666 +S'editable' +p33667 +I00 +sS'value' +p33668 +S'none' +p33669 +ssS'valid_types' +p33670 +(dp33671 +S'editable' +p33672 +I00 +sS'value' +p33673 +(lp33674 +S'Element' +p33675 +asssS'description' +p33676 +(dp33677 +S'editable' +p33678 +I01 +sS'value' +p33679 +g47 +sssS'sg_shot_type' +p33680 +(dp33681 +S'mandatory' +p33682 +(dp33683 +S'editable' +p33684 +I00 +sS'value' +p33685 +I00 +ssS'name' +p33686 +(dp33687 +S'editable' +p33688 +I01 +sS'value' +p33689 +S'Type' +p33690 +ssS'data_type' +p33691 +(dp33692 +S'editable' +p33693 +I00 +sS'value' +p33694 +S'list' +p33695 +ssS'entity_type' +p33696 +(dp33697 +S'editable' +p33698 +I00 +sS'value' +p33699 +S'Shot' +p33700 +ssS'editable' +p33701 +(dp33702 +S'editable' +p33703 +I00 +sS'value' +p33704 +I01 +ssS'unique' +p33705 +(dp33706 +S'editable' +p33707 +I00 +sS'value' +p33708 +I00 +ssS'properties' +p33709 +(dp33710 +S'default_value' +p33711 +(dp33712 +S'editable' +p33713 +I00 +sS'value' +p33714 +NssS'valid_values' +p33715 +(dp33716 +S'editable' +p33717 +I01 +sS'value' +p33718 +(lp33719 +ssS'summary_default' +p33720 +(dp33721 +S'editable' +p33722 +I01 +sS'value' +p33723 +S'none' +p33724 +sssS'description' +p33725 +(dp33726 +S'editable' +p33727 +I01 +sS'value' +p33728 +g47 +sssS'description' +p33729 +(dp33730 +S'mandatory' +p33731 +(dp33732 +S'editable' +p33733 +I00 +sS'value' +p33734 +I00 +ssS'name' +p33735 +(dp33736 +S'editable' +p33737 +I01 +sS'value' +p33738 +S'Description' +p33739 +ssS'data_type' +p33740 +(dp33741 +S'editable' +p33742 +I00 +sS'value' +p33743 +S'text' +p33744 +ssS'entity_type' +p33745 +(dp33746 +S'editable' +p33747 +I00 +sS'value' +p33748 +S'Shot' +p33749 +ssS'editable' +p33750 +(dp33751 +S'editable' +p33752 +I00 +sS'value' +p33753 +I01 +ssS'unique' +p33754 +(dp33755 +S'editable' +p33756 +I00 +sS'value' +p33757 +I00 +ssS'properties' +p33758 +(dp33759 +S'default_value' +p33760 +(dp33761 +S'editable' +p33762 +I00 +sS'value' +p33763 +NssS'summary_default' +p33764 +(dp33765 +S'editable' +p33766 +I01 +sS'value' +p33767 +S'none' +p33768 +sssS'description' +p33769 +(dp33770 +S'editable' +p33771 +I01 +sS'value' +p33772 +g47 +sssS'smart_cut_out' +p33773 +(dp33774 +S'mandatory' +p33775 +(dp33776 +S'editable' +p33777 +I00 +sS'value' +p33778 +I00 +ssS'name' +p33779 +(dp33780 +S'editable' +p33781 +I01 +sS'value' +p33782 +S'Cut Out' +p33783 +ssS'data_type' +p33784 +(dp33785 +S'editable' +p33786 +I00 +sS'value' +p33787 +S'number' +p33788 +ssS'entity_type' +p33789 +(dp33790 +S'editable' +p33791 +I00 +sS'value' +p33792 +S'Shot' +p33793 +ssS'editable' +p33794 +(dp33795 +S'editable' +p33796 +I00 +sS'value' +p33797 +I01 +ssS'unique' +p33798 +(dp33799 +S'editable' +p33800 +I00 +sS'value' +p33801 +I00 +ssS'properties' +p33802 +(dp33803 +S'default_value' +p33804 +(dp33805 +S'editable' +p33806 +I00 +sS'value' +p33807 +NssS'summary_default' +p33808 +(dp33809 +S'editable' +p33810 +I01 +sS'value' +p33811 +S'none' +p33812 +sssS'description' +p33813 +(dp33814 +S'editable' +p33815 +I01 +sS'value' +p33816 +g47 +sssS'tail_out' +p33817 +(dp33818 +S'mandatory' +p33819 +(dp33820 +S'editable' +p33821 +I00 +sS'value' +p33822 +I00 +ssS'name' +p33823 +(dp33824 +S'editable' +p33825 +I01 +sS'value' +p33826 +S'Raw Tail Out' +p33827 +ssS'data_type' +p33828 +(dp33829 +S'editable' +p33830 +I00 +sS'value' +p33831 +S'number' +p33832 +ssS'entity_type' +p33833 +(dp33834 +S'editable' +p33835 +I00 +sS'value' +p33836 +S'Shot' +p33837 +ssS'editable' +p33838 +(dp33839 +S'editable' +p33840 +I00 +sS'value' +p33841 +I01 +ssS'unique' +p33842 +(dp33843 +S'editable' +p33844 +I00 +sS'value' +p33845 +I00 +ssS'properties' +p33846 +(dp33847 +S'default_value' +p33848 +(dp33849 +S'editable' +p33850 +I00 +sS'value' +p33851 +NssS'summary_default' +p33852 +(dp33853 +S'editable' +p33854 +I01 +sS'value' +p33855 +S'none' +p33856 +sssS'description' +p33857 +(dp33858 +S'editable' +p33859 +I01 +sS'value' +p33860 +g47 +sssS'sg_cut_out' +p33861 +(dp33862 +S'mandatory' +p33863 +(dp33864 +S'editable' +p33865 +I00 +sS'value' +p33866 +I00 +ssS'name' +p33867 +(dp33868 +S'editable' +p33869 +I01 +sS'value' +p33870 +S'Cut Out' +p33871 +ssS'data_type' +p33872 +(dp33873 +S'editable' +p33874 +I00 +sS'value' +p33875 +S'number' +p33876 +ssS'entity_type' +p33877 +(dp33878 +S'editable' +p33879 +I00 +sS'value' +p33880 +S'Shot' +p33881 +ssS'editable' +p33882 +(dp33883 +S'editable' +p33884 +I00 +sS'value' +p33885 +I01 +ssS'unique' +p33886 +(dp33887 +S'editable' +p33888 +I00 +sS'value' +p33889 +I00 +ssS'properties' +p33890 +(dp33891 +S'default_value' +p33892 +(dp33893 +S'editable' +p33894 +I00 +sS'value' +p33895 +NssS'summary_default' +p33896 +(dp33897 +S'editable' +p33898 +I01 +sS'value' +p33899 +S'sum' +p33900 +sssS'description' +p33901 +(dp33902 +S'editable' +p33903 +I01 +sS'value' +p33904 +S'The last frame used in the cut. This input comes from editorial and is used for playback of movie and frames.' +p33905 +sssS'sg_tail_out' +p33906 +(dp33907 +S'mandatory' +p33908 +(dp33909 +S'editable' +p33910 +I00 +sS'value' +p33911 +I00 +ssS'name' +p33912 +(dp33913 +S'editable' +p33914 +I01 +sS'value' +p33915 +S'Tail Out' +p33916 +ssS'data_type' +p33917 +(dp33918 +S'editable' +p33919 +I00 +sS'value' +p33920 +S'number' +p33921 +ssS'entity_type' +p33922 +(dp33923 +S'editable' +p33924 +I00 +sS'value' +p33925 +S'Shot' +p33926 +ssS'editable' +p33927 +(dp33928 +S'editable' +p33929 +I00 +sS'value' +p33930 +I01 +ssS'unique' +p33931 +(dp33932 +S'editable' +p33933 +I00 +sS'value' +p33934 +I00 +ssS'properties' +p33935 +(dp33936 +S'default_value' +p33937 +(dp33938 +S'editable' +p33939 +I00 +sS'value' +p33940 +NssS'summary_default' +p33941 +(dp33942 +S'editable' +p33943 +I01 +sS'value' +p33944 +S'none' +p33945 +sssS'description' +p33946 +(dp33947 +S'editable' +p33948 +I01 +sS'value' +p33949 +S'The last frame number that footage is available for this Shot.' +p33950 +sssS'smart_cut_in' +p33951 +(dp33952 +S'mandatory' +p33953 +(dp33954 +S'editable' +p33955 +I00 +sS'value' +p33956 +I00 +ssS'name' +p33957 +(dp33958 +S'editable' +p33959 +I01 +sS'value' +p33960 +S'Cut In' +p33961 +ssS'data_type' +p33962 +(dp33963 +S'editable' +p33964 +I00 +sS'value' +p33965 +S'number' +p33966 +ssS'entity_type' +p33967 +(dp33968 +S'editable' +p33969 +I00 +sS'value' +p33970 +S'Shot' +p33971 +ssS'editable' +p33972 +(dp33973 +S'editable' +p33974 +I00 +sS'value' +p33975 +I01 +ssS'unique' +p33976 +(dp33977 +S'editable' +p33978 +I00 +sS'value' +p33979 +I00 +ssS'properties' +p33980 +(dp33981 +S'default_value' +p33982 +(dp33983 +S'editable' +p33984 +I00 +sS'value' +p33985 +NssS'summary_default' +p33986 +(dp33987 +S'editable' +p33988 +I01 +sS'value' +p33989 +S'none' +p33990 +sssS'description' +p33991 +(dp33992 +S'editable' +p33993 +I01 +sS'value' +p33994 +g47 +sssS'smart_cut_summary_display' +p33995 +(dp33996 +S'mandatory' +p33997 +(dp33998 +S'editable' +p33999 +I00 +sS'value' +p34000 +I00 +ssS'name' +p34001 +(dp34002 +S'editable' +p34003 +I01 +sS'value' +p34004 +S'Cut Summary' +p34005 +ssS'data_type' +p34006 +(dp34007 +S'editable' +p34008 +I00 +sS'value' +p34009 +S'text' +p34010 +ssS'entity_type' +p34011 +(dp34012 +S'editable' +p34013 +I00 +sS'value' +p34014 +S'Shot' +p34015 +ssS'editable' +p34016 +(dp34017 +S'editable' +p34018 +I00 +sS'value' +p34019 +I00 +ssS'unique' +p34020 +(dp34021 +S'editable' +p34022 +I00 +sS'value' +p34023 +I00 +ssS'properties' +p34024 +(dp34025 +S'default_value' +p34026 +(dp34027 +S'editable' +p34028 +I00 +sS'value' +p34029 +NssS'summary_default' +p34030 +(dp34031 +S'editable' +p34032 +I01 +sS'value' +p34033 +S'none' +p34034 +sssS'description' +p34035 +(dp34036 +S'editable' +p34037 +I01 +sS'value' +p34038 +g47 +sssS'cut_in' +p34039 +(dp34040 +S'mandatory' +p34041 +(dp34042 +S'editable' +p34043 +I00 +sS'value' +p34044 +I00 +ssS'name' +p34045 +(dp34046 +S'editable' +p34047 +I01 +sS'value' +p34048 +S'Raw Cut In' +p34049 +ssS'data_type' +p34050 +(dp34051 +S'editable' +p34052 +I00 +sS'value' +p34053 +S'number' +p34054 +ssS'entity_type' +p34055 +(dp34056 +S'editable' +p34057 +I00 +sS'value' +p34058 +S'Shot' +p34059 +ssS'editable' +p34060 +(dp34061 +S'editable' +p34062 +I00 +sS'value' +p34063 +I01 +ssS'unique' +p34064 +(dp34065 +S'editable' +p34066 +I00 +sS'value' +p34067 +I00 +ssS'properties' +p34068 +(dp34069 +S'default_value' +p34070 +(dp34071 +S'editable' +p34072 +I00 +sS'value' +p34073 +NssS'summary_default' +p34074 +(dp34075 +S'editable' +p34076 +I01 +sS'value' +p34077 +S'none' +p34078 +sssS'description' +p34079 +(dp34080 +S'editable' +p34081 +I01 +sS'value' +p34082 +g47 +sssS'smart_duration_summary_display' +p34083 +(dp34084 +S'mandatory' +p34085 +(dp34086 +S'editable' +p34087 +I00 +sS'value' +p34088 +I00 +ssS'name' +p34089 +(dp34090 +S'editable' +p34091 +I01 +sS'value' +p34092 +S'Duration Summary' +p34093 +ssS'data_type' +p34094 +(dp34095 +S'editable' +p34096 +I00 +sS'value' +p34097 +S'text' +p34098 +ssS'entity_type' +p34099 +(dp34100 +S'editable' +p34101 +I00 +sS'value' +p34102 +S'Shot' +p34103 +ssS'editable' +p34104 +(dp34105 +S'editable' +p34106 +I00 +sS'value' +p34107 +I00 +ssS'unique' +p34108 +(dp34109 +S'editable' +p34110 +I00 +sS'value' +p34111 +I00 +ssS'properties' +p34112 +(dp34113 +S'default_value' +p34114 +(dp34115 +S'editable' +p34116 +I00 +sS'value' +p34117 +NssS'summary_default' +p34118 +(dp34119 +S'editable' +p34120 +I01 +sS'value' +p34121 +S'none' +p34122 +sssS'description' +p34123 +(dp34124 +S'editable' +p34125 +I01 +sS'value' +p34126 +g47 +sssS'tail_duration' +p34127 +(dp34128 +S'mandatory' +p34129 +(dp34130 +S'editable' +p34131 +I00 +sS'value' +p34132 +I00 +ssS'name' +p34133 +(dp34134 +S'editable' +p34135 +I01 +sS'value' +p34136 +S'Raw Tail Duration' +p34137 +ssS'data_type' +p34138 +(dp34139 +S'editable' +p34140 +I00 +sS'value' +p34141 +S'number' +p34142 +ssS'entity_type' +p34143 +(dp34144 +S'editable' +p34145 +I00 +sS'value' +p34146 +S'Shot' +p34147 +ssS'editable' +p34148 +(dp34149 +S'editable' +p34150 +I00 +sS'value' +p34151 +I01 +ssS'unique' +p34152 +(dp34153 +S'editable' +p34154 +I00 +sS'value' +p34155 +I00 +ssS'properties' +p34156 +(dp34157 +S'default_value' +p34158 +(dp34159 +S'editable' +p34160 +I00 +sS'value' +p34161 +NssS'summary_default' +p34162 +(dp34163 +S'editable' +p34164 +I01 +sS'value' +p34165 +S'none' +p34166 +sssS'description' +p34167 +(dp34168 +S'editable' +p34169 +I01 +sS'value' +p34170 +g47 +sssS'smart_tail_out' +p34171 +(dp34172 +S'mandatory' +p34173 +(dp34174 +S'editable' +p34175 +I00 +sS'value' +p34176 +I00 +ssS'name' +p34177 +(dp34178 +S'editable' +p34179 +I01 +sS'value' +p34180 +S'Tail Out' +p34181 +ssS'data_type' +p34182 +(dp34183 +S'editable' +p34184 +I00 +sS'value' +p34185 +S'number' +p34186 +ssS'entity_type' +p34187 +(dp34188 +S'editable' +p34189 +I00 +sS'value' +p34190 +S'Shot' +p34191 +ssS'editable' +p34192 +(dp34193 +S'editable' +p34194 +I00 +sS'value' +p34195 +I01 +ssS'unique' +p34196 +(dp34197 +S'editable' +p34198 +I00 +sS'value' +p34199 +I00 +ssS'properties' +p34200 +(dp34201 +S'default_value' +p34202 +(dp34203 +S'editable' +p34204 +I00 +sS'value' +p34205 +NssS'summary_default' +p34206 +(dp34207 +S'editable' +p34208 +I01 +sS'value' +p34209 +S'none' +p34210 +sssS'description' +p34211 +(dp34212 +S'editable' +p34213 +I01 +sS'value' +p34214 +g47 +sssS'step_0' +p34215 +(dp34216 +S'mandatory' +p34217 +(dp34218 +S'editable' +p34219 +I00 +sS'value' +p34220 +I00 +ssS'name' +p34221 +(dp34222 +S'editable' +p34223 +I01 +sS'value' +p34224 +S'ALL TASKS' +p34225 +ssS'data_type' +p34226 +(dp34227 +S'editable' +p34228 +I00 +sS'value' +p34229 +S'pivot_column' +p34230 +ssS'entity_type' +p34231 +(dp34232 +S'editable' +p34233 +I00 +sS'value' +p34234 +S'Shot' +p34235 +ssS'editable' +p34236 +(dp34237 +S'editable' +p34238 +I00 +sS'value' +p34239 +I00 +ssS'unique' +p34240 +(dp34241 +S'editable' +p34242 +I00 +sS'value' +p34243 +I00 +ssS'properties' +p34244 +(dp34245 +S'default_value' +p34246 +(dp34247 +S'editable' +p34248 +I00 +sS'value' +p34249 +NssS'summary_default' +p34250 +(dp34251 +S'editable' +p34252 +I00 +sS'value' +p34253 +S'none' +p34254 +sssS'description' +p34255 +(dp34256 +S'editable' +p34257 +I01 +sS'value' +p34258 +g47 +sssS'cut_duration' +p34259 +(dp34260 +S'mandatory' +p34261 +(dp34262 +S'editable' +p34263 +I00 +sS'value' +p34264 +I00 +ssS'name' +p34265 +(dp34266 +S'editable' +p34267 +I01 +sS'value' +p34268 +S'Raw Cut Duration' +p34269 +ssS'data_type' +p34270 +(dp34271 +S'editable' +p34272 +I00 +sS'value' +p34273 +S'number' +p34274 +ssS'entity_type' +p34275 +(dp34276 +S'editable' +p34277 +I00 +sS'value' +p34278 +S'Shot' +p34279 +ssS'editable' +p34280 +(dp34281 +S'editable' +p34282 +I00 +sS'value' +p34283 +I01 +ssS'unique' +p34284 +(dp34285 +S'editable' +p34286 +I00 +sS'value' +p34287 +I00 +ssS'properties' +p34288 +(dp34289 +S'default_value' +p34290 +(dp34291 +S'editable' +p34292 +I00 +sS'value' +p34293 +NssS'summary_default' +p34294 +(dp34295 +S'editable' +p34296 +I01 +sS'value' +p34297 +S'none' +p34298 +sssS'description' +p34299 +(dp34300 +S'editable' +p34301 +I01 +sS'value' +p34302 +g47 +sssS'step_5' +p34303 +(dp34304 +S'mandatory' +p34305 +(dp34306 +S'editable' +p34307 +I00 +sS'value' +p34308 +I00 +ssS'name' +p34309 +(dp34310 +S'editable' +p34311 +I01 +sS'value' +p34312 +S'Anm' +p34313 +ssS'data_type' +p34314 +(dp34315 +S'editable' +p34316 +I00 +sS'value' +p34317 +S'pivot_column' +p34318 +ssS'entity_type' +p34319 +(dp34320 +S'editable' +p34321 +I00 +sS'value' +p34322 +S'Shot' +p34323 +ssS'editable' +p34324 +(dp34325 +S'editable' +p34326 +I00 +sS'value' +p34327 +I00 +ssS'unique' +p34328 +(dp34329 +S'editable' +p34330 +I00 +sS'value' +p34331 +I00 +ssS'properties' +p34332 +(dp34333 +S'default_value' +p34334 +(dp34335 +S'editable' +p34336 +I00 +sS'value' +p34337 +NssS'summary_default' +p34338 +(dp34339 +S'editable' +p34340 +I00 +sS'value' +p34341 +S'none' +p34342 +sssS'description' +p34343 +(dp34344 +S'editable' +p34345 +I01 +sS'value' +p34346 +g47 +sssS'assets' +p34347 +(dp34348 +S'mandatory' +p34349 +(dp34350 +S'editable' +p34351 +I00 +sS'value' +p34352 +I00 +ssS'name' +p34353 +(dp34354 +S'editable' +p34355 +I01 +sS'value' +p34356 +S'Assets' +p34357 +ssS'data_type' +p34358 +(dp34359 +S'editable' +p34360 +I00 +sS'value' +p34361 +S'multi_entity' +p34362 +ssS'entity_type' +p34363 +(dp34364 +S'editable' +p34365 +I00 +sS'value' +p34366 +S'Shot' +p34367 +ssS'editable' +p34368 +(dp34369 +S'editable' +p34370 +I00 +sS'value' +p34371 +I01 +ssS'unique' +p34372 +(dp34373 +S'editable' +p34374 +I00 +sS'value' +p34375 +I00 +ssS'properties' +p34376 +(dp34377 +S'default_value' +p34378 +(dp34379 +S'editable' +p34380 +I00 +sS'value' +p34381 +NssS'summary_default' +p34382 +(dp34383 +S'editable' +p34384 +I01 +sS'value' +p34385 +S'none' +p34386 +ssS'valid_types' +p34387 +(dp34388 +S'editable' +p34389 +I01 +sS'value' +p34390 +(lp34391 +S'Asset' +p34392 +asssS'description' +p34393 +(dp34394 +S'editable' +p34395 +I01 +sS'value' +p34396 +g47 +sssS'step_7' +p34397 +(dp34398 +S'mandatory' +p34399 +(dp34400 +S'editable' +p34401 +I00 +sS'value' +p34402 +I00 +ssS'name' +p34403 +(dp34404 +S'editable' +p34405 +I01 +sS'value' +p34406 +S'Light' +p34407 +ssS'data_type' +p34408 +(dp34409 +S'editable' +p34410 +I00 +sS'value' +p34411 +S'pivot_column' +p34412 +ssS'entity_type' +p34413 +(dp34414 +S'editable' +p34415 +I00 +sS'value' +p34416 +S'Shot' +p34417 +ssS'editable' +p34418 +(dp34419 +S'editable' +p34420 +I00 +sS'value' +p34421 +I00 +ssS'unique' +p34422 +(dp34423 +S'editable' +p34424 +I00 +sS'value' +p34425 +I00 +ssS'properties' +p34426 +(dp34427 +S'default_value' +p34428 +(dp34429 +S'editable' +p34430 +I00 +sS'value' +p34431 +NssS'summary_default' +p34432 +(dp34433 +S'editable' +p34434 +I00 +sS'value' +p34435 +S'none' +p34436 +sssS'description' +p34437 +(dp34438 +S'editable' +p34439 +I01 +sS'value' +p34440 +g47 +sssS'step_6' +p34441 +(dp34442 +S'mandatory' +p34443 +(dp34444 +S'editable' +p34445 +I00 +sS'value' +p34446 +I00 +ssS'name' +p34447 +(dp34448 +S'editable' +p34449 +I01 +sS'value' +p34450 +S'FX' +p34451 +ssS'data_type' +p34452 +(dp34453 +S'editable' +p34454 +I00 +sS'value' +p34455 +S'pivot_column' +p34456 +ssS'entity_type' +p34457 +(dp34458 +S'editable' +p34459 +I00 +sS'value' +p34460 +S'Shot' +p34461 +ssS'editable' +p34462 +(dp34463 +S'editable' +p34464 +I00 +sS'value' +p34465 +I00 +ssS'unique' +p34466 +(dp34467 +S'editable' +p34468 +I00 +sS'value' +p34469 +I00 +ssS'properties' +p34470 +(dp34471 +S'default_value' +p34472 +(dp34473 +S'editable' +p34474 +I00 +sS'value' +p34475 +NssS'summary_default' +p34476 +(dp34477 +S'editable' +p34478 +I00 +sS'value' +p34479 +S'none' +p34480 +sssS'description' +p34481 +(dp34482 +S'editable' +p34483 +I01 +sS'value' +p34484 +g47 +sssS'smart_tail_in' +p34485 +(dp34486 +S'mandatory' +p34487 +(dp34488 +S'editable' +p34489 +I00 +sS'value' +p34490 +I00 +ssS'name' +p34491 +(dp34492 +S'editable' +p34493 +I01 +sS'value' +p34494 +S'Tail In' +p34495 +ssS'data_type' +p34496 +(dp34497 +S'editable' +p34498 +I00 +sS'value' +p34499 +S'number' +p34500 +ssS'entity_type' +p34501 +(dp34502 +S'editable' +p34503 +I00 +sS'value' +p34504 +S'Shot' +p34505 +ssS'editable' +p34506 +(dp34507 +S'editable' +p34508 +I00 +sS'value' +p34509 +I01 +ssS'unique' +p34510 +(dp34511 +S'editable' +p34512 +I00 +sS'value' +p34513 +I00 +ssS'properties' +p34514 +(dp34515 +S'default_value' +p34516 +(dp34517 +S'editable' +p34518 +I00 +sS'value' +p34519 +NssS'summary_default' +p34520 +(dp34521 +S'editable' +p34522 +I01 +sS'value' +p34523 +S'none' +p34524 +sssS'description' +p34525 +(dp34526 +S'editable' +p34527 +I01 +sS'value' +p34528 +g47 +sssS'step_8' +p34529 +(dp34530 +S'mandatory' +p34531 +(dp34532 +S'editable' +p34533 +I00 +sS'value' +p34534 +I00 +ssS'name' +p34535 +(dp34536 +S'editable' +p34537 +I01 +sS'value' +p34538 +S'Comp' +p34539 +ssS'data_type' +p34540 +(dp34541 +S'editable' +p34542 +I00 +sS'value' +p34543 +S'pivot_column' +p34544 +ssS'entity_type' +p34545 +(dp34546 +S'editable' +p34547 +I00 +sS'value' +p34548 +S'Shot' +p34549 +ssS'editable' +p34550 +(dp34551 +S'editable' +p34552 +I00 +sS'value' +p34553 +I00 +ssS'unique' +p34554 +(dp34555 +S'editable' +p34556 +I00 +sS'value' +p34557 +I00 +ssS'properties' +p34558 +(dp34559 +S'default_value' +p34560 +(dp34561 +S'editable' +p34562 +I00 +sS'value' +p34563 +NssS'summary_default' +p34564 +(dp34565 +S'editable' +p34566 +I00 +sS'value' +p34567 +S'none' +p34568 +sssS'description' +p34569 +(dp34570 +S'editable' +p34571 +I01 +sS'value' +p34572 +g47 +sssS'created_at' +p34573 +(dp34574 +S'mandatory' +p34575 +(dp34576 +S'editable' +p34577 +I00 +sS'value' +p34578 +I00 +ssS'name' +p34579 +(dp34580 +S'editable' +p34581 +I01 +sS'value' +p34582 +S'Date Created' +p34583 +ssS'data_type' +p34584 +(dp34585 +S'editable' +p34586 +I00 +sS'value' +p34587 +S'date_time' +p34588 +ssS'entity_type' +p34589 +(dp34590 +S'editable' +p34591 +I00 +sS'value' +p34592 +S'Shot' +p34593 +ssS'editable' +p34594 +(dp34595 +S'editable' +p34596 +I00 +sS'value' +p34597 +I00 +ssS'unique' +p34598 +(dp34599 +S'editable' +p34600 +I00 +sS'value' +p34601 +I00 +ssS'properties' +p34602 +(dp34603 +S'default_value' +p34604 +(dp34605 +S'editable' +p34606 +I00 +sS'value' +p34607 +NssS'summary_default' +p34608 +(dp34609 +S'editable' +p34610 +I01 +sS'value' +p34611 +S'none' +p34612 +sssS'description' +p34613 +(dp34614 +S'editable' +p34615 +I01 +sS'value' +p34616 +g47 +sssS'sg_scene' +p34617 +(dp34618 +S'mandatory' +p34619 +(dp34620 +S'editable' +p34621 +I00 +sS'value' +p34622 +I00 +ssS'name' +p34623 +(dp34624 +S'editable' +p34625 +I01 +sS'value' +p34626 +S'Scene' +p34627 +ssS'data_type' +p34628 +(dp34629 +S'editable' +p34630 +I00 +sS'value' +p34631 +S'entity' +p34632 +ssS'entity_type' +p34633 +(dp34634 +S'editable' +p34635 +I00 +sS'value' +p34636 +S'Shot' +p34637 +ssS'editable' +p34638 +(dp34639 +S'editable' +p34640 +I00 +sS'value' +p34641 +I01 +ssS'unique' +p34642 +(dp34643 +S'editable' +p34644 +I00 +sS'value' +p34645 +I00 +ssS'properties' +p34646 +(dp34647 +S'default_value' +p34648 +(dp34649 +S'editable' +p34650 +I00 +sS'value' +p34651 +NssS'summary_default' +p34652 +(dp34653 +S'editable' +p34654 +I01 +sS'value' +p34655 +S'none' +p34656 +ssS'valid_types' +p34657 +(dp34658 +S'editable' +p34659 +I01 +sS'value' +p34660 +(lp34661 +S'Scene' +p34662 +asssS'description' +p34663 +(dp34664 +S'editable' +p34665 +I01 +sS'value' +p34666 +g47 +sssS'sg_cut_order' +p34667 +(dp34668 +S'mandatory' +p34669 +(dp34670 +S'editable' +p34671 +I00 +sS'value' +p34672 +I00 +ssS'name' +p34673 +(dp34674 +S'editable' +p34675 +I01 +sS'value' +p34676 +S'Cut Order' +p34677 +ssS'data_type' +p34678 +(dp34679 +S'editable' +p34680 +I00 +sS'value' +p34681 +S'number' +p34682 +ssS'entity_type' +p34683 +(dp34684 +S'editable' +p34685 +I00 +sS'value' +p34686 +S'Shot' +p34687 +ssS'editable' +p34688 +(dp34689 +S'editable' +p34690 +I00 +sS'value' +p34691 +I01 +ssS'unique' +p34692 +(dp34693 +S'editable' +p34694 +I00 +sS'value' +p34695 +I00 +ssS'properties' +p34696 +(dp34697 +S'default_value' +p34698 +(dp34699 +S'editable' +p34700 +I00 +sS'value' +p34701 +NssS'summary_default' +p34702 +(dp34703 +S'editable' +p34704 +I01 +sS'value' +p34705 +S'none' +p34706 +sssS'description' +p34707 +(dp34708 +S'editable' +p34709 +I01 +sS'value' +p34710 +S'Order that the Shot plays in the overall cut for the entire Project. Used for sorting Shots and Versions of Shots when playing in cut order and pulling in neighboring Shots of Versions to the current one being viewed.' +p34711 +sssS'project' +p34712 +(dp34713 +S'mandatory' +p34714 +(dp34715 +S'editable' +p34716 +I00 +sS'value' +p34717 +I00 +ssS'name' +p34718 +(dp34719 +S'editable' +p34720 +I01 +sS'value' +p34721 +S'Project' +p34722 +ssS'data_type' +p34723 +(dp34724 +S'editable' +p34725 +I00 +sS'value' +p34726 +S'entity' +p34727 +ssS'entity_type' +p34728 +(dp34729 +S'editable' +p34730 +I00 +sS'value' +p34731 +S'Shot' +p34732 +ssS'editable' +p34733 +(dp34734 +S'editable' +p34735 +I00 +sS'value' +p34736 +I01 +ssS'unique' +p34737 +(dp34738 +S'editable' +p34739 +I00 +sS'value' +p34740 +I00 +ssS'properties' +p34741 +(dp34742 +S'default_value' +p34743 +(dp34744 +S'editable' +p34745 +I00 +sS'value' +p34746 +NssS'summary_default' +p34747 +(dp34748 +S'editable' +p34749 +I01 +sS'value' +p34750 +S'none' +p34751 +ssS'valid_types' +p34752 +(dp34753 +S'editable' +p34754 +I01 +sS'value' +p34755 +(lp34756 +S'Project' +p34757 +asssS'description' +p34758 +(dp34759 +S'editable' +p34760 +I01 +sS'value' +p34761 +g47 +sssS'sg_head_in' +p34762 +(dp34763 +S'mandatory' +p34764 +(dp34765 +S'editable' +p34766 +I00 +sS'value' +p34767 +I00 +ssS'name' +p34768 +(dp34769 +S'editable' +p34770 +I01 +sS'value' +p34771 +S'Head In' +p34772 +ssS'data_type' +p34773 +(dp34774 +S'editable' +p34775 +I00 +sS'value' +p34776 +S'number' +p34777 +ssS'entity_type' +p34778 +(dp34779 +S'editable' +p34780 +I00 +sS'value' +p34781 +S'Shot' +p34782 +ssS'editable' +p34783 +(dp34784 +S'editable' +p34785 +I00 +sS'value' +p34786 +I01 +ssS'unique' +p34787 +(dp34788 +S'editable' +p34789 +I00 +sS'value' +p34790 +I00 +ssS'properties' +p34791 +(dp34792 +S'default_value' +p34793 +(dp34794 +S'editable' +p34795 +I00 +sS'value' +p34796 +NssS'summary_default' +p34797 +(dp34798 +S'editable' +p34799 +I01 +sS'value' +p34800 +S'none' +p34801 +sssS'description' +p34802 +(dp34803 +S'editable' +p34804 +I01 +sS'value' +p34805 +S'The first frame number that footage is available for this Shot.' +p34806 +sssS'tail_in' +p34807 +(dp34808 +S'mandatory' +p34809 +(dp34810 +S'editable' +p34811 +I00 +sS'value' +p34812 +I00 +ssS'name' +p34813 +(dp34814 +S'editable' +p34815 +I01 +sS'value' +p34816 +S'Raw Tail In' +p34817 +ssS'data_type' +p34818 +(dp34819 +S'editable' +p34820 +I00 +sS'value' +p34821 +S'number' +p34822 +ssS'entity_type' +p34823 +(dp34824 +S'editable' +p34825 +I00 +sS'value' +p34826 +S'Shot' +p34827 +ssS'editable' +p34828 +(dp34829 +S'editable' +p34830 +I00 +sS'value' +p34831 +I01 +ssS'unique' +p34832 +(dp34833 +S'editable' +p34834 +I00 +sS'value' +p34835 +I00 +ssS'properties' +p34836 +(dp34837 +S'default_value' +p34838 +(dp34839 +S'editable' +p34840 +I00 +sS'value' +p34841 +NssS'summary_default' +p34842 +(dp34843 +S'editable' +p34844 +I01 +sS'value' +p34845 +S'none' +p34846 +sssS'description' +p34847 +(dp34848 +S'editable' +p34849 +I01 +sS'value' +p34850 +g47 +sssS'shots' +p34851 +(dp34852 +S'mandatory' +p34853 +(dp34854 +S'editable' +p34855 +I00 +sS'value' +p34856 +I00 +ssS'name' +p34857 +(dp34858 +S'editable' +p34859 +I01 +sS'value' +p34860 +S'Sub Shots' +p34861 +ssS'data_type' +p34862 +(dp34863 +S'editable' +p34864 +I00 +sS'value' +p34865 +S'multi_entity' +p34866 +ssS'entity_type' +p34867 +(dp34868 +S'editable' +p34869 +I00 +sS'value' +p34870 +S'Shot' +p34871 +ssS'editable' +p34872 +(dp34873 +S'editable' +p34874 +I00 +sS'value' +p34875 +I01 +ssS'unique' +p34876 +(dp34877 +S'editable' +p34878 +I00 +sS'value' +p34879 +I00 +ssS'properties' +p34880 +(dp34881 +S'default_value' +p34882 +(dp34883 +S'editable' +p34884 +I00 +sS'value' +p34885 +NssS'summary_default' +p34886 +(dp34887 +S'editable' +p34888 +I01 +sS'value' +p34889 +S'none' +p34890 +ssS'valid_types' +p34891 +(dp34892 +S'editable' +p34893 +I01 +sS'value' +p34894 +(lp34895 +S'Shot' +p34896 +asssS'description' +p34897 +(dp34898 +S'editable' +p34899 +I01 +sS'value' +p34900 +g47 +sssS'smart_head_duration' +p34901 +(dp34902 +S'mandatory' +p34903 +(dp34904 +S'editable' +p34905 +I00 +sS'value' +p34906 +I00 +ssS'name' +p34907 +(dp34908 +S'editable' +p34909 +I01 +sS'value' +p34910 +S'Head Duration' +p34911 +ssS'data_type' +p34912 +(dp34913 +S'editable' +p34914 +I00 +sS'value' +p34915 +S'number' +p34916 +ssS'entity_type' +p34917 +(dp34918 +S'editable' +p34919 +I00 +sS'value' +p34920 +S'Shot' +p34921 +ssS'editable' +p34922 +(dp34923 +S'editable' +p34924 +I00 +sS'value' +p34925 +I01 +ssS'unique' +p34926 +(dp34927 +S'editable' +p34928 +I00 +sS'value' +p34929 +I00 +ssS'properties' +p34930 +(dp34931 +S'default_value' +p34932 +(dp34933 +S'editable' +p34934 +I00 +sS'value' +p34935 +NssS'summary_default' +p34936 +(dp34937 +S'editable' +p34938 +I01 +sS'value' +p34939 +S'none' +p34940 +sssS'description' +p34941 +(dp34942 +S'editable' +p34943 +I01 +sS'value' +p34944 +g47 +sssS'cut_out' +p34945 +(dp34946 +S'mandatory' +p34947 +(dp34948 +S'editable' +p34949 +I00 +sS'value' +p34950 +I00 +ssS'name' +p34951 +(dp34952 +S'editable' +p34953 +I01 +sS'value' +p34954 +S'Raw Cut Out' +p34955 +ssS'data_type' +p34956 +(dp34957 +S'editable' +p34958 +I00 +sS'value' +p34959 +S'number' +p34960 +ssS'entity_type' +p34961 +(dp34962 +S'editable' +p34963 +I00 +sS'value' +p34964 +S'Shot' +p34965 +ssS'editable' +p34966 +(dp34967 +S'editable' +p34968 +I00 +sS'value' +p34969 +I01 +ssS'unique' +p34970 +(dp34971 +S'editable' +p34972 +I00 +sS'value' +p34973 +I00 +ssS'properties' +p34974 +(dp34975 +S'default_value' +p34976 +(dp34977 +S'editable' +p34978 +I00 +sS'value' +p34979 +NssS'summary_default' +p34980 +(dp34981 +S'editable' +p34982 +I01 +sS'value' +p34983 +S'none' +p34984 +sssS'description' +p34985 +(dp34986 +S'editable' +p34987 +I01 +sS'value' +p34988 +g47 +sssS'head_out' +p34989 +(dp34990 +S'mandatory' +p34991 +(dp34992 +S'editable' +p34993 +I00 +sS'value' +p34994 +I00 +ssS'name' +p34995 +(dp34996 +S'editable' +p34997 +I01 +sS'value' +p34998 +S'Raw Head Out' +p34999 +ssS'data_type' +p35000 +(dp35001 +S'editable' +p35002 +I00 +sS'value' +p35003 +S'number' +p35004 +ssS'entity_type' +p35005 +(dp35006 +S'editable' +p35007 +I00 +sS'value' +p35008 +S'Shot' +p35009 +ssS'editable' +p35010 +(dp35011 +S'editable' +p35012 +I00 +sS'value' +p35013 +I01 +ssS'unique' +p35014 +(dp35015 +S'editable' +p35016 +I00 +sS'value' +p35017 +I00 +ssS'properties' +p35018 +(dp35019 +S'default_value' +p35020 +(dp35021 +S'editable' +p35022 +I00 +sS'value' +p35023 +NssS'summary_default' +p35024 +(dp35025 +S'editable' +p35026 +I01 +sS'value' +p35027 +S'none' +p35028 +sssS'description' +p35029 +(dp35030 +S'editable' +p35031 +I01 +sS'value' +p35032 +g47 +sssS'notes' +p35033 +(dp35034 +S'mandatory' +p35035 +(dp35036 +S'editable' +p35037 +I00 +sS'value' +p35038 +I00 +ssS'name' +p35039 +(dp35040 +S'editable' +p35041 +I01 +sS'value' +p35042 +S'Notes' +p35043 +ssS'data_type' +p35044 +(dp35045 +S'editable' +p35046 +I00 +sS'value' +p35047 +S'multi_entity' +p35048 +ssS'entity_type' +p35049 +(dp35050 +S'editable' +p35051 +I00 +sS'value' +p35052 +S'Shot' +p35053 +ssS'editable' +p35054 +(dp35055 +S'editable' +p35056 +I00 +sS'value' +p35057 +I01 +ssS'unique' +p35058 +(dp35059 +S'editable' +p35060 +I00 +sS'value' +p35061 +I00 +ssS'properties' +p35062 +(dp35063 +S'default_value' +p35064 +(dp35065 +S'editable' +p35066 +I00 +sS'value' +p35067 +NssS'summary_default' +p35068 +(dp35069 +S'editable' +p35070 +I01 +sS'value' +p35071 +S'none' +p35072 +ssS'valid_types' +p35073 +(dp35074 +S'editable' +p35075 +I01 +sS'value' +p35076 +(lp35077 +S'Note' +p35078 +asssS'description' +p35079 +(dp35080 +S'editable' +p35081 +I01 +sS'value' +p35082 +g47 +ssssS'TankPublishedFile' +p35083 +(dp35084 +S'open_notes_count' +p35085 +(dp35086 +S'mandatory' +p35087 +(dp35088 +S'editable' +p35089 +I00 +sS'value' +p35090 +I00 +ssS'name' +p35091 +(dp35092 +S'editable' +p35093 +I01 +sS'value' +p35094 +S'Open Notes Count' +p35095 +ssS'data_type' +p35096 +(dp35097 +S'editable' +p35098 +I00 +sS'value' +p35099 +S'text' +p35100 +ssS'entity_type' +p35101 +(dp35102 +S'editable' +p35103 +I00 +sS'value' +p35104 +S'TankPublishedFile' +p35105 +ssS'editable' +p35106 +(dp35107 +S'editable' +p35108 +I00 +sS'value' +p35109 +I00 +ssS'unique' +p35110 +(dp35111 +S'editable' +p35112 +I00 +sS'value' +p35113 +I00 +ssS'properties' +p35114 +(dp35115 +S'default_value' +p35116 +(dp35117 +S'editable' +p35118 +I00 +sS'value' +p35119 +NssS'summary_default' +p35120 +(dp35121 +S'editable' +p35122 +I01 +sS'value' +p35123 +S'none' +p35124 +sssS'description' +p35125 +(dp35126 +S'editable' +p35127 +I01 +sS'value' +p35128 +g47 +sssS'code' +p35129 +(dp35130 +S'mandatory' +p35131 +(dp35132 +S'editable' +p35133 +I00 +sS'value' +p35134 +I01 +ssS'name' +p35135 +(dp35136 +S'editable' +p35137 +I01 +sS'value' +p35138 +S'Tank Published File Name' +p35139 +ssS'data_type' +p35140 +(dp35141 +S'editable' +p35142 +I00 +sS'value' +p35143 +S'text' +p35144 +ssS'entity_type' +p35145 +(dp35146 +S'editable' +p35147 +I00 +sS'value' +p35148 +S'TankPublishedFile' +p35149 +ssS'editable' +p35150 +(dp35151 +S'editable' +p35152 +I00 +sS'value' +p35153 +I01 +ssS'unique' +p35154 +(dp35155 +S'editable' +p35156 +I00 +sS'value' +p35157 +I00 +ssS'properties' +p35158 +(dp35159 +S'default_value' +p35160 +(dp35161 +S'editable' +p35162 +I00 +sS'value' +p35163 +NssS'summary_default' +p35164 +(dp35165 +S'editable' +p35166 +I01 +sS'value' +p35167 +S'none' +p35168 +sssS'description' +p35169 +(dp35170 +S'editable' +p35171 +I01 +sS'value' +p35172 +g47 +sssS'image' +p35173 +(dp35174 +S'mandatory' +p35175 +(dp35176 +S'editable' +p35177 +I00 +sS'value' +p35178 +I00 +ssS'name' +p35179 +(dp35180 +S'editable' +p35181 +I01 +sS'value' +p35182 +S'Thumbnail' +p35183 +ssS'data_type' +p35184 +(dp35185 +S'editable' +p35186 +I00 +sS'value' +p35187 +S'image' +p35188 +ssS'entity_type' +p35189 +(dp35190 +S'editable' +p35191 +I00 +sS'value' +p35192 +S'TankPublishedFile' +p35193 +ssS'editable' +p35194 +(dp35195 +S'editable' +p35196 +I00 +sS'value' +p35197 +I01 +ssS'unique' +p35198 +(dp35199 +S'editable' +p35200 +I00 +sS'value' +p35201 +I00 +ssS'properties' +p35202 +(dp35203 +S'default_value' +p35204 +(dp35205 +S'editable' +p35206 +I00 +sS'value' +p35207 +NssS'summary_default' +p35208 +(dp35209 +S'editable' +p35210 +I01 +sS'value' +p35211 +S'none' +p35212 +sssS'description' +p35213 +(dp35214 +S'editable' +p35215 +I01 +sS'value' +p35216 +g47 +sssS'updated_at' +p35217 +(dp35218 +S'mandatory' +p35219 +(dp35220 +S'editable' +p35221 +I00 +sS'value' +p35222 +I00 +ssS'name' +p35223 +(dp35224 +S'editable' +p35225 +I01 +sS'value' +p35226 +S'Date Updated' +p35227 +ssS'data_type' +p35228 +(dp35229 +S'editable' +p35230 +I00 +sS'value' +p35231 +S'date_time' +p35232 +ssS'entity_type' +p35233 +(dp35234 +S'editable' +p35235 +I00 +sS'value' +p35236 +S'TankPublishedFile' +p35237 +ssS'editable' +p35238 +(dp35239 +S'editable' +p35240 +I00 +sS'value' +p35241 +I00 +ssS'unique' +p35242 +(dp35243 +S'editable' +p35244 +I00 +sS'value' +p35245 +I00 +ssS'properties' +p35246 +(dp35247 +S'default_value' +p35248 +(dp35249 +S'editable' +p35250 +I00 +sS'value' +p35251 +NssS'summary_default' +p35252 +(dp35253 +S'editable' +p35254 +I01 +sS'value' +p35255 +S'none' +p35256 +sssS'description' +p35257 +(dp35258 +S'editable' +p35259 +I01 +sS'value' +p35260 +g47 +sssS'entity' +p35261 +(dp35262 +S'mandatory' +p35263 +(dp35264 +S'editable' +p35265 +I00 +sS'value' +p35266 +I00 +ssS'name' +p35267 +(dp35268 +S'editable' +p35269 +I01 +sS'value' +p35270 +S'Link' +p35271 +ssS'data_type' +p35272 +(dp35273 +S'editable' +p35274 +I00 +sS'value' +p35275 +S'entity' +p35276 +ssS'entity_type' +p35277 +(dp35278 +S'editable' +p35279 +I00 +sS'value' +p35280 +S'TankPublishedFile' +p35281 +ssS'editable' +p35282 +(dp35283 +S'editable' +p35284 +I00 +sS'value' +p35285 +I00 +ssS'unique' +p35286 +(dp35287 +S'editable' +p35288 +I00 +sS'value' +p35289 +I00 +ssS'properties' +p35290 +(dp35291 +S'default_value' +p35292 +(dp35293 +S'editable' +p35294 +I00 +sS'value' +p35295 +NssS'summary_default' +p35296 +(dp35297 +S'editable' +p35298 +I01 +sS'value' +p35299 +S'none' +p35300 +ssS'valid_types' +p35301 +(dp35302 +S'editable' +p35303 +I01 +sS'value' +p35304 +(lp35305 +S'Asset' +p35306 +aS'Shot' +p35307 +aS'Project' +p35308 +asssS'description' +p35309 +(dp35310 +S'editable' +p35311 +I01 +sS'value' +p35312 +g47 +sssS'cached_display_name' +p35313 +(dp35314 +S'mandatory' +p35315 +(dp35316 +S'editable' +p35317 +I00 +sS'value' +p35318 +I00 +ssS'name' +p35319 +(dp35320 +S'editable' +p35321 +I01 +sS'value' +p35322 +S'Cached Display Name' +p35323 +ssS'data_type' +p35324 +(dp35325 +S'editable' +p35326 +I00 +sS'value' +p35327 +S'text' +p35328 +ssS'entity_type' +p35329 +(dp35330 +S'editable' +p35331 +I00 +sS'value' +p35332 +S'TankPublishedFile' +p35333 +ssS'editable' +p35334 +(dp35335 +S'editable' +p35336 +I00 +sS'value' +p35337 +I01 +ssS'unique' +p35338 +(dp35339 +S'editable' +p35340 +I00 +sS'value' +p35341 +I00 +ssS'properties' +p35342 +(dp35343 +S'default_value' +p35344 +(dp35345 +S'editable' +p35346 +I00 +sS'value' +p35347 +NssS'summary_default' +p35348 +(dp35349 +S'editable' +p35350 +I00 +sS'value' +p35351 +S'none' +p35352 +sssS'description' +p35353 +(dp35354 +S'editable' +p35355 +I01 +sS'value' +p35356 +g47 +sssS'downstream_tank_published_files' +p35357 +(dp35358 +S'mandatory' +p35359 +(dp35360 +S'editable' +p35361 +I00 +sS'value' +p35362 +I00 +ssS'name' +p35363 +(dp35364 +S'editable' +p35365 +I01 +sS'value' +p35366 +S'Downstream Tank Published Files' +p35367 +ssS'data_type' +p35368 +(dp35369 +S'editable' +p35370 +I00 +sS'value' +p35371 +S'multi_entity' +p35372 +ssS'entity_type' +p35373 +(dp35374 +S'editable' +p35375 +I00 +sS'value' +p35376 +S'TankPublishedFile' +p35377 +ssS'editable' +p35378 +(dp35379 +S'editable' +p35380 +I00 +sS'value' +p35381 +I01 +ssS'unique' +p35382 +(dp35383 +S'editable' +p35384 +I00 +sS'value' +p35385 +I00 +ssS'properties' +p35386 +(dp35387 +S'default_value' +p35388 +(dp35389 +S'editable' +p35390 +I00 +sS'value' +p35391 +NssS'summary_default' +p35392 +(dp35393 +S'editable' +p35394 +I00 +sS'value' +p35395 +S'none' +p35396 +ssS'valid_types' +p35397 +(dp35398 +S'editable' +p35399 +I00 +sS'value' +p35400 +(lp35401 +S'TankPublishedFile' +p35402 +asssS'description' +p35403 +(dp35404 +S'editable' +p35405 +I01 +sS'value' +p35406 +g47 +sssS'path_cache' +p35407 +(dp35408 +S'mandatory' +p35409 +(dp35410 +S'editable' +p35411 +I00 +sS'value' +p35412 +I00 +ssS'name' +p35413 +(dp35414 +S'editable' +p35415 +I01 +sS'value' +p35416 +S'Path Cache' +p35417 +ssS'data_type' +p35418 +(dp35419 +S'editable' +p35420 +I00 +sS'value' +p35421 +S'text' +p35422 +ssS'entity_type' +p35423 +(dp35424 +S'editable' +p35425 +I00 +sS'value' +p35426 +S'TankPublishedFile' +p35427 +ssS'editable' +p35428 +(dp35429 +S'editable' +p35430 +I00 +sS'value' +p35431 +I00 +ssS'unique' +p35432 +(dp35433 +S'editable' +p35434 +I00 +sS'value' +p35435 +I00 +ssS'properties' +p35436 +(dp35437 +S'default_value' +p35438 +(dp35439 +S'editable' +p35440 +I00 +sS'value' +p35441 +NssS'summary_default' +p35442 +(dp35443 +S'editable' +p35444 +I01 +sS'value' +p35445 +S'none' +p35446 +sssS'description' +p35447 +(dp35448 +S'editable' +p35449 +I01 +sS'value' +p35450 +g47 +sssS'id' +p35451 +(dp35452 +S'mandatory' +p35453 +(dp35454 +S'editable' +p35455 +I00 +sS'value' +p35456 +I00 +ssS'name' +p35457 +(dp35458 +S'editable' +p35459 +I01 +sS'value' +p35460 +S'Id' +p35461 +ssS'data_type' +p35462 +(dp35463 +S'editable' +p35464 +I00 +sS'value' +p35465 +S'number' +p35466 +ssS'entity_type' +p35467 +(dp35468 +S'editable' +p35469 +I00 +sS'value' +p35470 +S'TankPublishedFile' +p35471 +ssS'editable' +p35472 +(dp35473 +S'editable' +p35474 +I00 +sS'value' +p35475 +I00 +ssS'unique' +p35476 +(dp35477 +S'editable' +p35478 +I00 +sS'value' +p35479 +I00 +ssS'properties' +p35480 +(dp35481 +S'default_value' +p35482 +(dp35483 +S'editable' +p35484 +I00 +sS'value' +p35485 +NssS'summary_default' +p35486 +(dp35487 +S'editable' +p35488 +I01 +sS'value' +p35489 +S'none' +p35490 +sssS'description' +p35491 +(dp35492 +S'editable' +p35493 +I01 +sS'value' +p35494 +g47 +sssS'updated_by' +p35495 +(dp35496 +S'mandatory' +p35497 +(dp35498 +S'editable' +p35499 +I00 +sS'value' +p35500 +I00 +ssS'name' +p35501 +(dp35502 +S'editable' +p35503 +I01 +sS'value' +p35504 +S'Updated by' +p35505 +ssS'data_type' +p35506 +(dp35507 +S'editable' +p35508 +I00 +sS'value' +p35509 +S'entity' +p35510 +ssS'entity_type' +p35511 +(dp35512 +S'editable' +p35513 +I00 +sS'value' +p35514 +S'TankPublishedFile' +p35515 +ssS'editable' +p35516 +(dp35517 +S'editable' +p35518 +I00 +sS'value' +p35519 +I00 +ssS'unique' +p35520 +(dp35521 +S'editable' +p35522 +I00 +sS'value' +p35523 +I00 +ssS'properties' +p35524 +(dp35525 +S'default_value' +p35526 +(dp35527 +S'editable' +p35528 +I00 +sS'value' +p35529 +NssS'summary_default' +p35530 +(dp35531 +S'editable' +p35532 +I01 +sS'value' +p35533 +S'none' +p35534 +ssS'valid_types' +p35535 +(dp35536 +S'editable' +p35537 +I01 +sS'value' +p35538 +(lp35539 +S'HumanUser' +p35540 +aS'ApiUser' +p35541 +asssS'description' +p35542 +(dp35543 +S'editable' +p35544 +I01 +sS'value' +p35545 +g47 +sssS'open_notes' +p35546 +(dp35547 +S'mandatory' +p35548 +(dp35549 +S'editable' +p35550 +I00 +sS'value' +p35551 +I00 +ssS'name' +p35552 +(dp35553 +S'editable' +p35554 +I01 +sS'value' +p35555 +S'Open Notes' +p35556 +ssS'data_type' +p35557 +(dp35558 +S'editable' +p35559 +I00 +sS'value' +p35560 +S'multi_entity' +p35561 +ssS'entity_type' +p35562 +(dp35563 +S'editable' +p35564 +I00 +sS'value' +p35565 +S'TankPublishedFile' +p35566 +ssS'editable' +p35567 +(dp35568 +S'editable' +p35569 +I00 +sS'value' +p35570 +I00 +ssS'unique' +p35571 +(dp35572 +S'editable' +p35573 +I00 +sS'value' +p35574 +I00 +ssS'properties' +p35575 +(dp35576 +S'default_value' +p35577 +(dp35578 +S'editable' +p35579 +I00 +sS'value' +p35580 +NssS'summary_default' +p35581 +(dp35582 +S'editable' +p35583 +I01 +sS'value' +p35584 +S'none' +p35585 +ssS'valid_types' +p35586 +(dp35587 +S'editable' +p35588 +I01 +sS'value' +p35589 +(lp35590 +S'Note' +p35591 +asssS'description' +p35592 +(dp35593 +S'editable' +p35594 +I01 +sS'value' +p35595 +g47 +sssS'upstream_tank_published_files' +p35596 +(dp35597 +S'mandatory' +p35598 +(dp35599 +S'editable' +p35600 +I00 +sS'value' +p35601 +I00 +ssS'name' +p35602 +(dp35603 +S'editable' +p35604 +I01 +sS'value' +p35605 +S'Upstream Tank Published Files' +p35606 +ssS'data_type' +p35607 +(dp35608 +S'editable' +p35609 +I00 +sS'value' +p35610 +S'multi_entity' +p35611 +ssS'entity_type' +p35612 +(dp35613 +S'editable' +p35614 +I00 +sS'value' +p35615 +S'TankPublishedFile' +p35616 +ssS'editable' +p35617 +(dp35618 +S'editable' +p35619 +I00 +sS'value' +p35620 +I01 +ssS'unique' +p35621 +(dp35622 +S'editable' +p35623 +I00 +sS'value' +p35624 +I00 +ssS'properties' +p35625 +(dp35626 +S'default_value' +p35627 +(dp35628 +S'editable' +p35629 +I00 +sS'value' +p35630 +NssS'summary_default' +p35631 +(dp35632 +S'editable' +p35633 +I00 +sS'value' +p35634 +S'none' +p35635 +ssS'valid_types' +p35636 +(dp35637 +S'editable' +p35638 +I00 +sS'value' +p35639 +(lp35640 +S'TankPublishedFile' +p35641 +asssS'description' +p35642 +(dp35643 +S'editable' +p35644 +I01 +sS'value' +p35645 +g47 +sssS'created_by' +p35646 +(dp35647 +S'mandatory' +p35648 +(dp35649 +S'editable' +p35650 +I00 +sS'value' +p35651 +I00 +ssS'name' +p35652 +(dp35653 +S'editable' +p35654 +I01 +sS'value' +p35655 +S'Created by' +p35656 +ssS'data_type' +p35657 +(dp35658 +S'editable' +p35659 +I00 +sS'value' +p35660 +S'entity' +p35661 +ssS'entity_type' +p35662 +(dp35663 +S'editable' +p35664 +I00 +sS'value' +p35665 +S'TankPublishedFile' +p35666 +ssS'editable' +p35667 +(dp35668 +S'editable' +p35669 +I00 +sS'value' +p35670 +I00 +ssS'unique' +p35671 +(dp35672 +S'editable' +p35673 +I00 +sS'value' +p35674 +I00 +ssS'properties' +p35675 +(dp35676 +S'default_value' +p35677 +(dp35678 +S'editable' +p35679 +I00 +sS'value' +p35680 +NssS'summary_default' +p35681 +(dp35682 +S'editable' +p35683 +I01 +sS'value' +p35684 +S'none' +p35685 +ssS'valid_types' +p35686 +(dp35687 +S'editable' +p35688 +I01 +sS'value' +p35689 +(lp35690 +S'HumanUser' +p35691 +aS'ApiUser' +p35692 +asssS'description' +p35693 +(dp35694 +S'editable' +p35695 +I01 +sS'value' +p35696 +g47 +sssS'sg_status_list' +p35697 +(dp35698 +S'mandatory' +p35699 +(dp35700 +S'editable' +p35701 +I00 +sS'value' +p35702 +I00 +ssS'name' +p35703 +(dp35704 +S'editable' +p35705 +I01 +sS'value' +p35706 +S'Status' +p35707 +ssS'data_type' +p35708 +(dp35709 +S'editable' +p35710 +I00 +sS'value' +p35711 +S'status_list' +p35712 +ssS'entity_type' +p35713 +(dp35714 +S'editable' +p35715 +I00 +sS'value' +p35716 +S'TankPublishedFile' +p35717 +ssS'editable' +p35718 +(dp35719 +S'editable' +p35720 +I00 +sS'value' +p35721 +I01 +ssS'unique' +p35722 +(dp35723 +S'editable' +p35724 +I00 +sS'value' +p35725 +I00 +ssS'properties' +p35726 +(dp35727 +S'default_value' +p35728 +(dp35729 +S'editable' +p35730 +I01 +sS'value' +p35731 +S'wtg' +p35732 +ssS'valid_values' +p35733 +(dp35734 +S'editable' +p35735 +I01 +sS'value' +p35736 +(lp35737 +S'wtg' +p35738 +aS'ip' +p35739 +aS'cmpt' +p35740 +assS'summary_default' +p35741 +(dp35742 +S'editable' +p35743 +I01 +sS'value' +p35744 +S'none' +p35745 +sssS'description' +p35746 +(dp35747 +S'editable' +p35748 +I01 +sS'value' +p35749 +g47 +sssS'description' +p35750 +(dp35751 +S'mandatory' +p35752 +(dp35753 +S'editable' +p35754 +I00 +sS'value' +p35755 +I00 +ssS'name' +p35756 +(dp35757 +S'editable' +p35758 +I01 +sS'value' +p35759 +S'Description' +p35760 +ssS'data_type' +p35761 +(dp35762 +S'editable' +p35763 +I00 +sS'value' +p35764 +S'text' +p35765 +ssS'entity_type' +p35766 +(dp35767 +S'editable' +p35768 +I00 +sS'value' +p35769 +S'TankPublishedFile' +p35770 +ssS'editable' +p35771 +(dp35772 +S'editable' +p35773 +I00 +sS'value' +p35774 +I01 +ssS'unique' +p35775 +(dp35776 +S'editable' +p35777 +I00 +sS'value' +p35778 +I00 +ssS'properties' +p35779 +(dp35780 +S'default_value' +p35781 +(dp35782 +S'editable' +p35783 +I00 +sS'value' +p35784 +NssS'summary_default' +p35785 +(dp35786 +S'editable' +p35787 +I01 +sS'value' +p35788 +S'none' +p35789 +sssS'description' +p35790 +(dp35791 +S'editable' +p35792 +I01 +sS'value' +p35793 +g47 +sssS'path_cache_storage' +p35794 +(dp35795 +S'mandatory' +p35796 +(dp35797 +S'editable' +p35798 +I00 +sS'value' +p35799 +I00 +ssS'name' +p35800 +(dp35801 +S'editable' +p35802 +I01 +sS'value' +p35803 +S'Path Cache Storage' +p35804 +ssS'data_type' +p35805 +(dp35806 +S'editable' +p35807 +I00 +sS'value' +p35808 +S'entity' +p35809 +ssS'entity_type' +p35810 +(dp35811 +S'editable' +p35812 +I00 +sS'value' +p35813 +S'TankPublishedFile' +p35814 +ssS'editable' +p35815 +(dp35816 +S'editable' +p35817 +I00 +sS'value' +p35818 +I00 +ssS'unique' +p35819 +(dp35820 +S'editable' +p35821 +I00 +sS'value' +p35822 +I00 +ssS'properties' +p35823 +(dp35824 +S'default_value' +p35825 +(dp35826 +S'editable' +p35827 +I00 +sS'value' +p35828 +NssS'summary_default' +p35829 +(dp35830 +S'editable' +p35831 +I01 +sS'value' +p35832 +S'none' +p35833 +ssS'valid_types' +p35834 +(dp35835 +S'editable' +p35836 +I01 +sS'value' +p35837 +(lp35838 +S'LocalStorage' +p35839 +asssS'description' +p35840 +(dp35841 +S'editable' +p35842 +I01 +sS'value' +p35843 +g47 +sssS'path' +p35844 +(dp35845 +S'mandatory' +p35846 +(dp35847 +S'editable' +p35848 +I00 +sS'value' +p35849 +I00 +ssS'name' +p35850 +(dp35851 +S'editable' +p35852 +I01 +sS'value' +p35853 +S'Path' +p35854 +ssS'data_type' +p35855 +(dp35856 +S'editable' +p35857 +I00 +sS'value' +p35858 +S'url' +p35859 +ssS'entity_type' +p35860 +(dp35861 +S'editable' +p35862 +I00 +sS'value' +p35863 +S'TankPublishedFile' +p35864 +ssS'editable' +p35865 +(dp35866 +S'editable' +p35867 +I00 +sS'value' +p35868 +I00 +ssS'unique' +p35869 +(dp35870 +S'editable' +p35871 +I00 +sS'value' +p35872 +I00 +ssS'properties' +p35873 +(dp35874 +S'default_value' +p35875 +(dp35876 +S'editable' +p35877 +I00 +sS'value' +p35878 +NssS'open_in_new_window' +p35879 +(dp35880 +S'editable' +p35881 +I01 +sS'value' +p35882 +I01 +ssS'summary_default' +p35883 +(dp35884 +S'editable' +p35885 +I01 +sS'value' +p35886 +S'none' +p35887 +sssS'description' +p35888 +(dp35889 +S'editable' +p35890 +I01 +sS'value' +p35891 +g47 +sssS'version_number' +p35892 +(dp35893 +S'mandatory' +p35894 +(dp35895 +S'editable' +p35896 +I00 +sS'value' +p35897 +I00 +ssS'name' +p35898 +(dp35899 +S'editable' +p35900 +I01 +sS'value' +p35901 +S'Version Number' +p35902 +ssS'data_type' +p35903 +(dp35904 +S'editable' +p35905 +I00 +sS'value' +p35906 +S'number' +p35907 +ssS'entity_type' +p35908 +(dp35909 +S'editable' +p35910 +I00 +sS'value' +p35911 +S'TankPublishedFile' +p35912 +ssS'editable' +p35913 +(dp35914 +S'editable' +p35915 +I00 +sS'value' +p35916 +I00 +ssS'unique' +p35917 +(dp35918 +S'editable' +p35919 +I00 +sS'value' +p35920 +I00 +ssS'properties' +p35921 +(dp35922 +S'default_value' +p35923 +(dp35924 +S'editable' +p35925 +I00 +sS'value' +p35926 +NssS'summary_default' +p35927 +(dp35928 +S'editable' +p35929 +I01 +sS'value' +p35930 +S'none' +p35931 +sssS'description' +p35932 +(dp35933 +S'editable' +p35934 +I01 +sS'value' +p35935 +g47 +sssS'task' +p35936 +(dp35937 +S'mandatory' +p35938 +(dp35939 +S'editable' +p35940 +I00 +sS'value' +p35941 +I00 +ssS'name' +p35942 +(dp35943 +S'editable' +p35944 +I01 +sS'value' +p35945 +S'Task' +p35946 +ssS'data_type' +p35947 +(dp35948 +S'editable' +p35949 +I00 +sS'value' +p35950 +S'entity' +p35951 +ssS'entity_type' +p35952 +(dp35953 +S'editable' +p35954 +I00 +sS'value' +p35955 +S'TankPublishedFile' +p35956 +ssS'editable' +p35957 +(dp35958 +S'editable' +p35959 +I00 +sS'value' +p35960 +I00 +ssS'unique' +p35961 +(dp35962 +S'editable' +p35963 +I00 +sS'value' +p35964 +I00 +ssS'properties' +p35965 +(dp35966 +S'default_value' +p35967 +(dp35968 +S'editable' +p35969 +I00 +sS'value' +p35970 +NssS'summary_default' +p35971 +(dp35972 +S'editable' +p35973 +I01 +sS'value' +p35974 +S'none' +p35975 +ssS'valid_types' +p35976 +(dp35977 +S'editable' +p35978 +I01 +sS'value' +p35979 +(lp35980 +S'Task' +p35981 +asssS'description' +p35982 +(dp35983 +S'editable' +p35984 +I01 +sS'value' +p35985 +g47 +sssS'name' +p35986 +(dp35987 +S'mandatory' +p35988 +(dp35989 +S'editable' +p35990 +I00 +sS'value' +p35991 +I00 +ssS'name' +p35992 +(dp35993 +S'editable' +p35994 +I01 +sS'value' +p35995 +S'Name' +p35996 +ssS'data_type' +p35997 +(dp35998 +S'editable' +p35999 +I00 +sS'value' +p36000 +S'text' +p36001 +ssS'entity_type' +p36002 +(dp36003 +S'editable' +p36004 +I00 +sS'value' +p36005 +S'TankPublishedFile' +p36006 +ssS'editable' +p36007 +(dp36008 +S'editable' +p36009 +I00 +sS'value' +p36010 +I00 +ssS'unique' +p36011 +(dp36012 +S'editable' +p36013 +I00 +sS'value' +p36014 +I00 +ssS'properties' +p36015 +(dp36016 +S'default_value' +p36017 +(dp36018 +S'editable' +p36019 +I00 +sS'value' +p36020 +NssS'summary_default' +p36021 +(dp36022 +S'editable' +p36023 +I01 +sS'value' +p36024 +S'none' +p36025 +sssS'description' +p36026 +(dp36027 +S'editable' +p36028 +I01 +sS'value' +p36029 +g47 +sssS'created_at' +p36030 +(dp36031 +S'mandatory' +p36032 +(dp36033 +S'editable' +p36034 +I00 +sS'value' +p36035 +I00 +ssS'name' +p36036 +(dp36037 +S'editable' +p36038 +I01 +sS'value' +p36039 +S'Date Created' +p36040 +ssS'data_type' +p36041 +(dp36042 +S'editable' +p36043 +I00 +sS'value' +p36044 +S'date_time' +p36045 +ssS'entity_type' +p36046 +(dp36047 +S'editable' +p36048 +I00 +sS'value' +p36049 +S'TankPublishedFile' +p36050 +ssS'editable' +p36051 +(dp36052 +S'editable' +p36053 +I00 +sS'value' +p36054 +I00 +ssS'unique' +p36055 +(dp36056 +S'editable' +p36057 +I00 +sS'value' +p36058 +I00 +ssS'properties' +p36059 +(dp36060 +S'default_value' +p36061 +(dp36062 +S'editable' +p36063 +I00 +sS'value' +p36064 +NssS'summary_default' +p36065 +(dp36066 +S'editable' +p36067 +I01 +sS'value' +p36068 +S'none' +p36069 +sssS'description' +p36070 +(dp36071 +S'editable' +p36072 +I01 +sS'value' +p36073 +g47 +sssS'tank_type' +p36074 +(dp36075 +S'mandatory' +p36076 +(dp36077 +S'editable' +p36078 +I00 +sS'value' +p36079 +I00 +ssS'name' +p36080 +(dp36081 +S'editable' +p36082 +I01 +sS'value' +p36083 +S'Tank Type' +p36084 +ssS'data_type' +p36085 +(dp36086 +S'editable' +p36087 +I00 +sS'value' +p36088 +S'entity' +p36089 +ssS'entity_type' +p36090 +(dp36091 +S'editable' +p36092 +I00 +sS'value' +p36093 +S'TankPublishedFile' +p36094 +ssS'editable' +p36095 +(dp36096 +S'editable' +p36097 +I00 +sS'value' +p36098 +I00 +ssS'unique' +p36099 +(dp36100 +S'editable' +p36101 +I00 +sS'value' +p36102 +I00 +ssS'properties' +p36103 +(dp36104 +S'default_value' +p36105 +(dp36106 +S'editable' +p36107 +I00 +sS'value' +p36108 +NssS'summary_default' +p36109 +(dp36110 +S'editable' +p36111 +I01 +sS'value' +p36112 +S'none' +p36113 +ssS'valid_types' +p36114 +(dp36115 +S'editable' +p36116 +I01 +sS'value' +p36117 +(lp36118 +S'TankType' +p36119 +asssS'description' +p36120 +(dp36121 +S'editable' +p36122 +I01 +sS'value' +p36123 +g47 +sssS'project' +p36124 +(dp36125 +S'mandatory' +p36126 +(dp36127 +S'editable' +p36128 +I00 +sS'value' +p36129 +I00 +ssS'name' +p36130 +(dp36131 +S'editable' +p36132 +I01 +sS'value' +p36133 +S'Project' +p36134 +ssS'data_type' +p36135 +(dp36136 +S'editable' +p36137 +I00 +sS'value' +p36138 +S'entity' +p36139 +ssS'entity_type' +p36140 +(dp36141 +S'editable' +p36142 +I00 +sS'value' +p36143 +S'TankPublishedFile' +p36144 +ssS'editable' +p36145 +(dp36146 +S'editable' +p36147 +I00 +sS'value' +p36148 +I01 +ssS'unique' +p36149 +(dp36150 +S'editable' +p36151 +I00 +sS'value' +p36152 +I00 +ssS'properties' +p36153 +(dp36154 +S'default_value' +p36155 +(dp36156 +S'editable' +p36157 +I00 +sS'value' +p36158 +NssS'summary_default' +p36159 +(dp36160 +S'editable' +p36161 +I01 +sS'value' +p36162 +S'none' +p36163 +ssS'valid_types' +p36164 +(dp36165 +S'editable' +p36166 +I01 +sS'value' +p36167 +(lp36168 +S'Project' +p36169 +asssS'description' +p36170 +(dp36171 +S'editable' +p36172 +I01 +sS'value' +p36173 +g47 +sssS'tag_list' +p36174 +(dp36175 +S'mandatory' +p36176 +(dp36177 +S'editable' +p36178 +I00 +sS'value' +p36179 +I00 +ssS'name' +p36180 +(dp36181 +S'editable' +p36182 +I01 +sS'value' +p36183 +S'Tags' +p36184 +ssS'data_type' +p36185 +(dp36186 +S'editable' +p36187 +I00 +sS'value' +p36188 +S'tag_list' +p36189 +ssS'entity_type' +p36190 +(dp36191 +S'editable' +p36192 +I00 +sS'value' +p36193 +S'TankPublishedFile' +p36194 +ssS'editable' +p36195 +(dp36196 +S'editable' +p36197 +I00 +sS'value' +p36198 +I01 +ssS'unique' +p36199 +(dp36200 +S'editable' +p36201 +I00 +sS'value' +p36202 +I00 +ssS'properties' +p36203 +(dp36204 +S'default_value' +p36205 +(dp36206 +S'editable' +p36207 +I00 +sS'value' +p36208 +NssS'summary_default' +p36209 +(dp36210 +S'editable' +p36211 +I01 +sS'value' +p36212 +S'none' +p36213 +ssS'valid_types' +p36214 +(dp36215 +S'editable' +p36216 +I01 +sS'value' +p36217 +(lp36218 +S'Tag' +p36219 +asssS'description' +p36220 +(dp36221 +S'editable' +p36222 +I01 +sS'value' +p36223 +g47 +sssS'notes' +p36224 +(dp36225 +S'mandatory' +p36226 +(dp36227 +S'editable' +p36228 +I00 +sS'value' +p36229 +I00 +ssS'name' +p36230 +(dp36231 +S'editable' +p36232 +I01 +sS'value' +p36233 +S'Notes' +p36234 +ssS'data_type' +p36235 +(dp36236 +S'editable' +p36237 +I00 +sS'value' +p36238 +S'multi_entity' +p36239 +ssS'entity_type' +p36240 +(dp36241 +S'editable' +p36242 +I00 +sS'value' +p36243 +S'TankPublishedFile' +p36244 +ssS'editable' +p36245 +(dp36246 +S'editable' +p36247 +I00 +sS'value' +p36248 +I01 +ssS'unique' +p36249 +(dp36250 +S'editable' +p36251 +I00 +sS'value' +p36252 +I00 +ssS'properties' +p36253 +(dp36254 +S'default_value' +p36255 +(dp36256 +S'editable' +p36257 +I00 +sS'value' +p36258 +NssS'summary_default' +p36259 +(dp36260 +S'editable' +p36261 +I01 +sS'value' +p36262 +S'none' +p36263 +ssS'valid_types' +p36264 +(dp36265 +S'editable' +p36266 +I01 +sS'value' +p36267 +(lp36268 +S'Note' +p36269 +asssS'description' +p36270 +(dp36271 +S'editable' +p36272 +I01 +sS'value' +p36273 +g47 +ssssS'CustomEntity04' +p36274 +(dp36275 +S'open_notes_count' +p36276 +(dp36277 +S'mandatory' +p36278 +(dp36279 +S'editable' +p36280 +I00 +sS'value' +p36281 +I00 +ssS'name' +p36282 +(dp36283 +S'editable' +p36284 +I01 +sS'value' +p36285 +S'Open Notes Count' +p36286 +ssS'data_type' +p36287 +(dp36288 +S'editable' +p36289 +I00 +sS'value' +p36290 +S'text' +p36291 +ssS'entity_type' +p36292 +(dp36293 +S'editable' +p36294 +I00 +sS'value' +p36295 +S'CustomEntity04' +p36296 +ssS'editable' +p36297 +(dp36298 +S'editable' +p36299 +I00 +sS'value' +p36300 +I00 +ssS'unique' +p36301 +(dp36302 +S'editable' +p36303 +I00 +sS'value' +p36304 +I00 +ssS'properties' +p36305 +(dp36306 +S'default_value' +p36307 +(dp36308 +S'editable' +p36309 +I00 +sS'value' +p36310 +NssS'summary_default' +p36311 +(dp36312 +S'editable' +p36313 +I01 +sS'value' +p36314 +S'none' +p36315 +sssS'description' +p36316 +(dp36317 +S'editable' +p36318 +I01 +sS'value' +p36319 +g47 +sssS'code' +p36320 +(dp36321 +S'mandatory' +p36322 +(dp36323 +S'editable' +p36324 +I00 +sS'value' +p36325 +I01 +ssS'name' +p36326 +(dp36327 +S'editable' +p36328 +I01 +sS'value' +p36329 +S'Custom Entity04 Name' +p36330 +ssS'data_type' +p36331 +(dp36332 +S'editable' +p36333 +I00 +sS'value' +p36334 +S'text' +p36335 +ssS'entity_type' +p36336 +(dp36337 +S'editable' +p36338 +I00 +sS'value' +p36339 +S'CustomEntity04' +p36340 +ssS'editable' +p36341 +(dp36342 +S'editable' +p36343 +I00 +sS'value' +p36344 +I01 +ssS'unique' +p36345 +(dp36346 +S'editable' +p36347 +I00 +sS'value' +p36348 +I00 +ssS'properties' +p36349 +(dp36350 +S'default_value' +p36351 +(dp36352 +S'editable' +p36353 +I00 +sS'value' +p36354 +NssS'summary_default' +p36355 +(dp36356 +S'editable' +p36357 +I01 +sS'value' +p36358 +S'none' +p36359 +sssS'description' +p36360 +(dp36361 +S'editable' +p36362 +I01 +sS'value' +p36363 +g47 +sssS'open_notes' +p36364 +(dp36365 +S'mandatory' +p36366 +(dp36367 +S'editable' +p36368 +I00 +sS'value' +p36369 +I00 +ssS'name' +p36370 +(dp36371 +S'editable' +p36372 +I01 +sS'value' +p36373 +S'Open Notes' +p36374 +ssS'data_type' +p36375 +(dp36376 +S'editable' +p36377 +I00 +sS'value' +p36378 +S'multi_entity' +p36379 +ssS'entity_type' +p36380 +(dp36381 +S'editable' +p36382 +I00 +sS'value' +p36383 +S'CustomEntity04' +p36384 +ssS'editable' +p36385 +(dp36386 +S'editable' +p36387 +I00 +sS'value' +p36388 +I00 +ssS'unique' +p36389 +(dp36390 +S'editable' +p36391 +I00 +sS'value' +p36392 +I00 +ssS'properties' +p36393 +(dp36394 +S'default_value' +p36395 +(dp36396 +S'editable' +p36397 +I00 +sS'value' +p36398 +NssS'summary_default' +p36399 +(dp36400 +S'editable' +p36401 +I01 +sS'value' +p36402 +S'none' +p36403 +ssS'valid_types' +p36404 +(dp36405 +S'editable' +p36406 +I01 +sS'value' +p36407 +(lp36408 +S'Note' +p36409 +asssS'description' +p36410 +(dp36411 +S'editable' +p36412 +I01 +sS'value' +p36413 +g47 +sssS'description' +p36414 +(dp36415 +S'mandatory' +p36416 +(dp36417 +S'editable' +p36418 +I00 +sS'value' +p36419 +I00 +ssS'name' +p36420 +(dp36421 +S'editable' +p36422 +I01 +sS'value' +p36423 +S'Description' +p36424 +ssS'data_type' +p36425 +(dp36426 +S'editable' +p36427 +I00 +sS'value' +p36428 +S'text' +p36429 +ssS'entity_type' +p36430 +(dp36431 +S'editable' +p36432 +I00 +sS'value' +p36433 +S'CustomEntity04' +p36434 +ssS'editable' +p36435 +(dp36436 +S'editable' +p36437 +I00 +sS'value' +p36438 +I01 +ssS'unique' +p36439 +(dp36440 +S'editable' +p36441 +I00 +sS'value' +p36442 +I00 +ssS'properties' +p36443 +(dp36444 +S'default_value' +p36445 +(dp36446 +S'editable' +p36447 +I00 +sS'value' +p36448 +NssS'summary_default' +p36449 +(dp36450 +S'editable' +p36451 +I01 +sS'value' +p36452 +S'none' +p36453 +sssS'description' +p36454 +(dp36455 +S'editable' +p36456 +I01 +sS'value' +p36457 +g47 +sssS'created_at' +p36458 +(dp36459 +S'mandatory' +p36460 +(dp36461 +S'editable' +p36462 +I00 +sS'value' +p36463 +I00 +ssS'name' +p36464 +(dp36465 +S'editable' +p36466 +I01 +sS'value' +p36467 +S'Date Created' +p36468 +ssS'data_type' +p36469 +(dp36470 +S'editable' +p36471 +I00 +sS'value' +p36472 +S'date_time' +p36473 +ssS'entity_type' +p36474 +(dp36475 +S'editable' +p36476 +I00 +sS'value' +p36477 +S'CustomEntity04' +p36478 +ssS'editable' +p36479 +(dp36480 +S'editable' +p36481 +I00 +sS'value' +p36482 +I00 +ssS'unique' +p36483 +(dp36484 +S'editable' +p36485 +I00 +sS'value' +p36486 +I00 +ssS'properties' +p36487 +(dp36488 +S'default_value' +p36489 +(dp36490 +S'editable' +p36491 +I00 +sS'value' +p36492 +NssS'summary_default' +p36493 +(dp36494 +S'editable' +p36495 +I01 +sS'value' +p36496 +S'none' +p36497 +sssS'description' +p36498 +(dp36499 +S'editable' +p36500 +I01 +sS'value' +p36501 +g47 +sssS'updated_at' +p36502 +(dp36503 +S'mandatory' +p36504 +(dp36505 +S'editable' +p36506 +I00 +sS'value' +p36507 +I00 +ssS'name' +p36508 +(dp36509 +S'editable' +p36510 +I01 +sS'value' +p36511 +S'Date Updated' +p36512 +ssS'data_type' +p36513 +(dp36514 +S'editable' +p36515 +I00 +sS'value' +p36516 +S'date_time' +p36517 +ssS'entity_type' +p36518 +(dp36519 +S'editable' +p36520 +I00 +sS'value' +p36521 +S'CustomEntity04' +p36522 +ssS'editable' +p36523 +(dp36524 +S'editable' +p36525 +I00 +sS'value' +p36526 +I00 +ssS'unique' +p36527 +(dp36528 +S'editable' +p36529 +I00 +sS'value' +p36530 +I00 +ssS'properties' +p36531 +(dp36532 +S'default_value' +p36533 +(dp36534 +S'editable' +p36535 +I00 +sS'value' +p36536 +NssS'summary_default' +p36537 +(dp36538 +S'editable' +p36539 +I01 +sS'value' +p36540 +S'none' +p36541 +sssS'description' +p36542 +(dp36543 +S'editable' +p36544 +I01 +sS'value' +p36545 +g47 +sssS'created_by' +p36546 +(dp36547 +S'mandatory' +p36548 +(dp36549 +S'editable' +p36550 +I00 +sS'value' +p36551 +I00 +ssS'name' +p36552 +(dp36553 +S'editable' +p36554 +I01 +sS'value' +p36555 +S'Created by' +p36556 +ssS'data_type' +p36557 +(dp36558 +S'editable' +p36559 +I00 +sS'value' +p36560 +S'entity' +p36561 +ssS'entity_type' +p36562 +(dp36563 +S'editable' +p36564 +I00 +sS'value' +p36565 +S'CustomEntity04' +p36566 +ssS'editable' +p36567 +(dp36568 +S'editable' +p36569 +I00 +sS'value' +p36570 +I00 +ssS'unique' +p36571 +(dp36572 +S'editable' +p36573 +I00 +sS'value' +p36574 +I00 +ssS'properties' +p36575 +(dp36576 +S'default_value' +p36577 +(dp36578 +S'editable' +p36579 +I00 +sS'value' +p36580 +NssS'summary_default' +p36581 +(dp36582 +S'editable' +p36583 +I01 +sS'value' +p36584 +S'none' +p36585 +ssS'valid_types' +p36586 +(dp36587 +S'editable' +p36588 +I01 +sS'value' +p36589 +(lp36590 +S'HumanUser' +p36591 +aS'ApiUser' +p36592 +asssS'description' +p36593 +(dp36594 +S'editable' +p36595 +I01 +sS'value' +p36596 +g47 +sssS'id' +p36597 +(dp36598 +S'mandatory' +p36599 +(dp36600 +S'editable' +p36601 +I00 +sS'value' +p36602 +I00 +ssS'name' +p36603 +(dp36604 +S'editable' +p36605 +I01 +sS'value' +p36606 +S'Id' +p36607 +ssS'data_type' +p36608 +(dp36609 +S'editable' +p36610 +I00 +sS'value' +p36611 +S'number' +p36612 +ssS'entity_type' +p36613 +(dp36614 +S'editable' +p36615 +I00 +sS'value' +p36616 +S'CustomEntity04' +p36617 +ssS'editable' +p36618 +(dp36619 +S'editable' +p36620 +I00 +sS'value' +p36621 +I00 +ssS'unique' +p36622 +(dp36623 +S'editable' +p36624 +I00 +sS'value' +p36625 +I00 +ssS'properties' +p36626 +(dp36627 +S'default_value' +p36628 +(dp36629 +S'editable' +p36630 +I00 +sS'value' +p36631 +NssS'summary_default' +p36632 +(dp36633 +S'editable' +p36634 +I01 +sS'value' +p36635 +S'none' +p36636 +sssS'description' +p36637 +(dp36638 +S'editable' +p36639 +I01 +sS'value' +p36640 +g47 +sssS'project' +p36641 +(dp36642 +S'mandatory' +p36643 +(dp36644 +S'editable' +p36645 +I00 +sS'value' +p36646 +I00 +ssS'name' +p36647 +(dp36648 +S'editable' +p36649 +I01 +sS'value' +p36650 +S'Project' +p36651 +ssS'data_type' +p36652 +(dp36653 +S'editable' +p36654 +I00 +sS'value' +p36655 +S'entity' +p36656 +ssS'entity_type' +p36657 +(dp36658 +S'editable' +p36659 +I00 +sS'value' +p36660 +S'CustomEntity04' +p36661 +ssS'editable' +p36662 +(dp36663 +S'editable' +p36664 +I00 +sS'value' +p36665 +I01 +ssS'unique' +p36666 +(dp36667 +S'editable' +p36668 +I00 +sS'value' +p36669 +I00 +ssS'properties' +p36670 +(dp36671 +S'default_value' +p36672 +(dp36673 +S'editable' +p36674 +I00 +sS'value' +p36675 +NssS'summary_default' +p36676 +(dp36677 +S'editable' +p36678 +I01 +sS'value' +p36679 +S'none' +p36680 +ssS'valid_types' +p36681 +(dp36682 +S'editable' +p36683 +I01 +sS'value' +p36684 +(lp36685 +S'Project' +p36686 +asssS'description' +p36687 +(dp36688 +S'editable' +p36689 +I01 +sS'value' +p36690 +g47 +sssS'filmstrip_image' +p36691 +(dp36692 +S'mandatory' +p36693 +(dp36694 +S'editable' +p36695 +I00 +sS'value' +p36696 +I00 +ssS'name' +p36697 +(dp36698 +S'editable' +p36699 +I01 +sS'value' +p36700 +S'Filmstrip Thumbnail' +p36701 +ssS'data_type' +p36702 +(dp36703 +S'editable' +p36704 +I00 +sS'value' +p36705 +S'image' +p36706 +ssS'entity_type' +p36707 +(dp36708 +S'editable' +p36709 +I00 +sS'value' +p36710 +S'CustomEntity04' +p36711 +ssS'editable' +p36712 +(dp36713 +S'editable' +p36714 +I00 +sS'value' +p36715 +I01 +ssS'unique' +p36716 +(dp36717 +S'editable' +p36718 +I00 +sS'value' +p36719 +I00 +ssS'properties' +p36720 +(dp36721 +S'default_value' +p36722 +(dp36723 +S'editable' +p36724 +I00 +sS'value' +p36725 +NssS'summary_default' +p36726 +(dp36727 +S'editable' +p36728 +I01 +sS'value' +p36729 +S'none' +p36730 +sssS'description' +p36731 +(dp36732 +S'editable' +p36733 +I01 +sS'value' +p36734 +g47 +sssS'sg_status_list' +p36735 +(dp36736 +S'mandatory' +p36737 +(dp36738 +S'editable' +p36739 +I00 +sS'value' +p36740 +I00 +ssS'name' +p36741 +(dp36742 +S'editable' +p36743 +I01 +sS'value' +p36744 +S'Status' +p36745 +ssS'data_type' +p36746 +(dp36747 +S'editable' +p36748 +I00 +sS'value' +p36749 +S'status_list' +p36750 +ssS'entity_type' +p36751 +(dp36752 +S'editable' +p36753 +I00 +sS'value' +p36754 +S'CustomEntity04' +p36755 +ssS'editable' +p36756 +(dp36757 +S'editable' +p36758 +I00 +sS'value' +p36759 +I01 +ssS'unique' +p36760 +(dp36761 +S'editable' +p36762 +I00 +sS'value' +p36763 +I00 +ssS'properties' +p36764 +(dp36765 +S'default_value' +p36766 +(dp36767 +S'editable' +p36768 +I01 +sS'value' +p36769 +S'wtg' +p36770 +ssS'valid_values' +p36771 +(dp36772 +S'editable' +p36773 +I01 +sS'value' +p36774 +(lp36775 +S'cmpt' +p36776 +aS'ip' +p36777 +aS'wtg' +p36778 +assS'summary_default' +p36779 +(dp36780 +S'editable' +p36781 +I01 +sS'value' +p36782 +S'none' +p36783 +sssS'description' +p36784 +(dp36785 +S'editable' +p36786 +I01 +sS'value' +p36787 +g47 +sssS'image' +p36788 +(dp36789 +S'mandatory' +p36790 +(dp36791 +S'editable' +p36792 +I00 +sS'value' +p36793 +I00 +ssS'name' +p36794 +(dp36795 +S'editable' +p36796 +I01 +sS'value' +p36797 +S'Thumbnail' +p36798 +ssS'data_type' +p36799 +(dp36800 +S'editable' +p36801 +I00 +sS'value' +p36802 +S'image' +p36803 +ssS'entity_type' +p36804 +(dp36805 +S'editable' +p36806 +I00 +sS'value' +p36807 +S'CustomEntity04' +p36808 +ssS'editable' +p36809 +(dp36810 +S'editable' +p36811 +I00 +sS'value' +p36812 +I01 +ssS'unique' +p36813 +(dp36814 +S'editable' +p36815 +I00 +sS'value' +p36816 +I00 +ssS'properties' +p36817 +(dp36818 +S'default_value' +p36819 +(dp36820 +S'editable' +p36821 +I00 +sS'value' +p36822 +NssS'summary_default' +p36823 +(dp36824 +S'editable' +p36825 +I01 +sS'value' +p36826 +S'none' +p36827 +sssS'description' +p36828 +(dp36829 +S'editable' +p36830 +I01 +sS'value' +p36831 +g47 +sssS'cached_display_name' +p36832 +(dp36833 +S'mandatory' +p36834 +(dp36835 +S'editable' +p36836 +I00 +sS'value' +p36837 +I00 +ssS'name' +p36838 +(dp36839 +S'editable' +p36840 +I01 +sS'value' +p36841 +S'Cached Display Name' +p36842 +ssS'data_type' +p36843 +(dp36844 +S'editable' +p36845 +I00 +sS'value' +p36846 +S'text' +p36847 +ssS'entity_type' +p36848 +(dp36849 +S'editable' +p36850 +I00 +sS'value' +p36851 +S'CustomEntity04' +p36852 +ssS'editable' +p36853 +(dp36854 +S'editable' +p36855 +I00 +sS'value' +p36856 +I01 +ssS'unique' +p36857 +(dp36858 +S'editable' +p36859 +I00 +sS'value' +p36860 +I00 +ssS'properties' +p36861 +(dp36862 +S'default_value' +p36863 +(dp36864 +S'editable' +p36865 +I00 +sS'value' +p36866 +NssS'summary_default' +p36867 +(dp36868 +S'editable' +p36869 +I00 +sS'value' +p36870 +S'none' +p36871 +sssS'description' +p36872 +(dp36873 +S'editable' +p36874 +I01 +sS'value' +p36875 +g47 +sssS'tag_list' +p36876 +(dp36877 +S'mandatory' +p36878 +(dp36879 +S'editable' +p36880 +I00 +sS'value' +p36881 +I00 +ssS'name' +p36882 +(dp36883 +S'editable' +p36884 +I01 +sS'value' +p36885 +S'Tags' +p36886 +ssS'data_type' +p36887 +(dp36888 +S'editable' +p36889 +I00 +sS'value' +p36890 +S'tag_list' +p36891 +ssS'entity_type' +p36892 +(dp36893 +S'editable' +p36894 +I00 +sS'value' +p36895 +S'CustomEntity04' +p36896 +ssS'editable' +p36897 +(dp36898 +S'editable' +p36899 +I00 +sS'value' +p36900 +I01 +ssS'unique' +p36901 +(dp36902 +S'editable' +p36903 +I00 +sS'value' +p36904 +I00 +ssS'properties' +p36905 +(dp36906 +S'default_value' +p36907 +(dp36908 +S'editable' +p36909 +I00 +sS'value' +p36910 +NssS'summary_default' +p36911 +(dp36912 +S'editable' +p36913 +I01 +sS'value' +p36914 +S'none' +p36915 +ssS'valid_types' +p36916 +(dp36917 +S'editable' +p36918 +I01 +sS'value' +p36919 +(lp36920 +S'Tag' +p36921 +asssS'description' +p36922 +(dp36923 +S'editable' +p36924 +I01 +sS'value' +p36925 +g47 +sssS'notes' +p36926 +(dp36927 +S'mandatory' +p36928 +(dp36929 +S'editable' +p36930 +I00 +sS'value' +p36931 +I00 +ssS'name' +p36932 +(dp36933 +S'editable' +p36934 +I01 +sS'value' +p36935 +S'Notes' +p36936 +ssS'data_type' +p36937 +(dp36938 +S'editable' +p36939 +I00 +sS'value' +p36940 +S'multi_entity' +p36941 +ssS'entity_type' +p36942 +(dp36943 +S'editable' +p36944 +I00 +sS'value' +p36945 +S'CustomEntity04' +p36946 +ssS'editable' +p36947 +(dp36948 +S'editable' +p36949 +I00 +sS'value' +p36950 +I01 +ssS'unique' +p36951 +(dp36952 +S'editable' +p36953 +I00 +sS'value' +p36954 +I00 +ssS'properties' +p36955 +(dp36956 +S'default_value' +p36957 +(dp36958 +S'editable' +p36959 +I00 +sS'value' +p36960 +NssS'summary_default' +p36961 +(dp36962 +S'editable' +p36963 +I01 +sS'value' +p36964 +S'none' +p36965 +ssS'valid_types' +p36966 +(dp36967 +S'editable' +p36968 +I01 +sS'value' +p36969 +(lp36970 +S'Note' +p36971 +asssS'description' +p36972 +(dp36973 +S'editable' +p36974 +I01 +sS'value' +p36975 +g47 +sssS'updated_by' +p36976 +(dp36977 +S'mandatory' +p36978 +(dp36979 +S'editable' +p36980 +I00 +sS'value' +p36981 +I00 +ssS'name' +p36982 +(dp36983 +S'editable' +p36984 +I01 +sS'value' +p36985 +S'Updated by' +p36986 +ssS'data_type' +p36987 +(dp36988 +S'editable' +p36989 +I00 +sS'value' +p36990 +S'entity' +p36991 +ssS'entity_type' +p36992 +(dp36993 +S'editable' +p36994 +I00 +sS'value' +p36995 +S'CustomEntity04' +p36996 +ssS'editable' +p36997 +(dp36998 +S'editable' +p36999 +I00 +sS'value' +p37000 +I00 +ssS'unique' +p37001 +(dp37002 +S'editable' +p37003 +I00 +sS'value' +p37004 +I00 +ssS'properties' +p37005 +(dp37006 +S'default_value' +p37007 +(dp37008 +S'editable' +p37009 +I00 +sS'value' +p37010 +NssS'summary_default' +p37011 +(dp37012 +S'editable' +p37013 +I01 +sS'value' +p37014 +S'none' +p37015 +ssS'valid_types' +p37016 +(dp37017 +S'editable' +p37018 +I01 +sS'value' +p37019 +(lp37020 +S'HumanUser' +p37021 +aS'ApiUser' +p37022 +asssS'description' +p37023 +(dp37024 +S'editable' +p37025 +I01 +sS'value' +p37026 +g47 +ssssS'Sequence' +p37027 +(dp37028 +S'sg_sequence_type' +p37029 +(dp37030 +S'mandatory' +p37031 +(dp37032 +S'editable' +p37033 +I00 +sS'value' +p37034 +I00 +ssS'name' +p37035 +(dp37036 +S'editable' +p37037 +I01 +sS'value' +p37038 +S'Type' +p37039 +ssS'data_type' +p37040 +(dp37041 +S'editable' +p37042 +I00 +sS'value' +p37043 +S'list' +p37044 +ssS'entity_type' +p37045 +(dp37046 +S'editable' +p37047 +I00 +sS'value' +p37048 +S'Sequence' +p37049 +ssS'editable' +p37050 +(dp37051 +S'editable' +p37052 +I00 +sS'value' +p37053 +I01 +ssS'unique' +p37054 +(dp37055 +S'editable' +p37056 +I00 +sS'value' +p37057 +I00 +ssS'properties' +p37058 +(dp37059 +S'default_value' +p37060 +(dp37061 +S'editable' +p37062 +I00 +sS'value' +p37063 +NssS'valid_values' +p37064 +(dp37065 +S'editable' +p37066 +I01 +sS'value' +p37067 +(lp37068 +ssS'summary_default' +p37069 +(dp37070 +S'editable' +p37071 +I01 +sS'value' +p37072 +S'none' +p37073 +sssS'description' +p37074 +(dp37075 +S'editable' +p37076 +I01 +sS'value' +p37077 +g47 +sssS'open_notes_count' +p37078 +(dp37079 +S'mandatory' +p37080 +(dp37081 +S'editable' +p37082 +I00 +sS'value' +p37083 +I00 +ssS'name' +p37084 +(dp37085 +S'editable' +p37086 +I01 +sS'value' +p37087 +S'Open Notes Count' +p37088 +ssS'data_type' +p37089 +(dp37090 +S'editable' +p37091 +I00 +sS'value' +p37092 +S'text' +p37093 +ssS'entity_type' +p37094 +(dp37095 +S'editable' +p37096 +I00 +sS'value' +p37097 +S'Sequence' +p37098 +ssS'editable' +p37099 +(dp37100 +S'editable' +p37101 +I00 +sS'value' +p37102 +I00 +ssS'unique' +p37103 +(dp37104 +S'editable' +p37105 +I00 +sS'value' +p37106 +I00 +ssS'properties' +p37107 +(dp37108 +S'default_value' +p37109 +(dp37110 +S'editable' +p37111 +I00 +sS'value' +p37112 +NssS'summary_default' +p37113 +(dp37114 +S'editable' +p37115 +I01 +sS'value' +p37116 +S'none' +p37117 +sssS'description' +p37118 +(dp37119 +S'editable' +p37120 +I01 +sS'value' +p37121 +g47 +sssS'code' +p37122 +(dp37123 +S'mandatory' +p37124 +(dp37125 +S'editable' +p37126 +I00 +sS'value' +p37127 +I01 +ssS'name' +p37128 +(dp37129 +S'editable' +p37130 +I01 +sS'value' +p37131 +S'Sequence Name' +p37132 +ssS'data_type' +p37133 +(dp37134 +S'editable' +p37135 +I00 +sS'value' +p37136 +S'text' +p37137 +ssS'entity_type' +p37138 +(dp37139 +S'editable' +p37140 +I00 +sS'value' +p37141 +S'Sequence' +p37142 +ssS'editable' +p37143 +(dp37144 +S'editable' +p37145 +I00 +sS'value' +p37146 +I01 +ssS'unique' +p37147 +(dp37148 +S'editable' +p37149 +I00 +sS'value' +p37150 +I00 +ssS'properties' +p37151 +(dp37152 +S'default_value' +p37153 +(dp37154 +S'editable' +p37155 +I00 +sS'value' +p37156 +NssS'summary_default' +p37157 +(dp37158 +S'editable' +p37159 +I01 +sS'value' +p37160 +S'none' +p37161 +sssS'description' +p37162 +(dp37163 +S'editable' +p37164 +I01 +sS'value' +p37165 +g47 +sssS'image' +p37166 +(dp37167 +S'mandatory' +p37168 +(dp37169 +S'editable' +p37170 +I00 +sS'value' +p37171 +I00 +ssS'name' +p37172 +(dp37173 +S'editable' +p37174 +I01 +sS'value' +p37175 +S'Thumbnail' +p37176 +ssS'data_type' +p37177 +(dp37178 +S'editable' +p37179 +I00 +sS'value' +p37180 +S'image' +p37181 +ssS'entity_type' +p37182 +(dp37183 +S'editable' +p37184 +I00 +sS'value' +p37185 +S'Sequence' +p37186 +ssS'editable' +p37187 +(dp37188 +S'editable' +p37189 +I00 +sS'value' +p37190 +I01 +ssS'unique' +p37191 +(dp37192 +S'editable' +p37193 +I00 +sS'value' +p37194 +I00 +ssS'properties' +p37195 +(dp37196 +S'default_value' +p37197 +(dp37198 +S'editable' +p37199 +I00 +sS'value' +p37200 +NssS'summary_default' +p37201 +(dp37202 +S'editable' +p37203 +I01 +sS'value' +p37204 +S'none' +p37205 +sssS'description' +p37206 +(dp37207 +S'editable' +p37208 +I01 +sS'value' +p37209 +g47 +sssS'updated_at' +p37210 +(dp37211 +S'mandatory' +p37212 +(dp37213 +S'editable' +p37214 +I00 +sS'value' +p37215 +I00 +ssS'name' +p37216 +(dp37217 +S'editable' +p37218 +I01 +sS'value' +p37219 +S'Date Updated' +p37220 +ssS'data_type' +p37221 +(dp37222 +S'editable' +p37223 +I00 +sS'value' +p37224 +S'date_time' +p37225 +ssS'entity_type' +p37226 +(dp37227 +S'editable' +p37228 +I00 +sS'value' +p37229 +S'Sequence' +p37230 +ssS'editable' +p37231 +(dp37232 +S'editable' +p37233 +I00 +sS'value' +p37234 +I00 +ssS'unique' +p37235 +(dp37236 +S'editable' +p37237 +I00 +sS'value' +p37238 +I00 +ssS'properties' +p37239 +(dp37240 +S'default_value' +p37241 +(dp37242 +S'editable' +p37243 +I00 +sS'value' +p37244 +NssS'summary_default' +p37245 +(dp37246 +S'editable' +p37247 +I01 +sS'value' +p37248 +S'none' +p37249 +sssS'description' +p37250 +(dp37251 +S'editable' +p37252 +I01 +sS'value' +p37253 +g47 +sssS'tasks' +p37254 +(dp37255 +S'mandatory' +p37256 +(dp37257 +S'editable' +p37258 +I00 +sS'value' +p37259 +I00 +ssS'name' +p37260 +(dp37261 +S'editable' +p37262 +I01 +sS'value' +p37263 +S'Tasks' +p37264 +ssS'data_type' +p37265 +(dp37266 +S'editable' +p37267 +I00 +sS'value' +p37268 +S'multi_entity' +p37269 +ssS'entity_type' +p37270 +(dp37271 +S'editable' +p37272 +I00 +sS'value' +p37273 +S'Sequence' +p37274 +ssS'editable' +p37275 +(dp37276 +S'editable' +p37277 +I00 +sS'value' +p37278 +I01 +ssS'unique' +p37279 +(dp37280 +S'editable' +p37281 +I00 +sS'value' +p37282 +I00 +ssS'properties' +p37283 +(dp37284 +S'default_value' +p37285 +(dp37286 +S'editable' +p37287 +I00 +sS'value' +p37288 +NssS'summary_default' +p37289 +(dp37290 +S'editable' +p37291 +I01 +sS'value' +p37292 +S'none' +p37293 +ssS'valid_types' +p37294 +(dp37295 +S'editable' +p37296 +I01 +sS'value' +p37297 +(lp37298 +S'Task' +p37299 +asssS'description' +p37300 +(dp37301 +S'editable' +p37302 +I01 +sS'value' +p37303 +g47 +sssS'cached_display_name' +p37304 +(dp37305 +S'mandatory' +p37306 +(dp37307 +S'editable' +p37308 +I00 +sS'value' +p37309 +I00 +ssS'name' +p37310 +(dp37311 +S'editable' +p37312 +I01 +sS'value' +p37313 +S'Cached Display Name' +p37314 +ssS'data_type' +p37315 +(dp37316 +S'editable' +p37317 +I00 +sS'value' +p37318 +S'text' +p37319 +ssS'entity_type' +p37320 +(dp37321 +S'editable' +p37322 +I00 +sS'value' +p37323 +S'Sequence' +p37324 +ssS'editable' +p37325 +(dp37326 +S'editable' +p37327 +I00 +sS'value' +p37328 +I01 +ssS'unique' +p37329 +(dp37330 +S'editable' +p37331 +I00 +sS'value' +p37332 +I00 +ssS'properties' +p37333 +(dp37334 +S'default_value' +p37335 +(dp37336 +S'editable' +p37337 +I00 +sS'value' +p37338 +NssS'summary_default' +p37339 +(dp37340 +S'editable' +p37341 +I00 +sS'value' +p37342 +S'none' +p37343 +sssS'description' +p37344 +(dp37345 +S'editable' +p37346 +I01 +sS'value' +p37347 +g47 +sssS'id' +p37348 +(dp37349 +S'mandatory' +p37350 +(dp37351 +S'editable' +p37352 +I00 +sS'value' +p37353 +I00 +ssS'name' +p37354 +(dp37355 +S'editable' +p37356 +I01 +sS'value' +p37357 +S'Id' +p37358 +ssS'data_type' +p37359 +(dp37360 +S'editable' +p37361 +I00 +sS'value' +p37362 +S'number' +p37363 +ssS'entity_type' +p37364 +(dp37365 +S'editable' +p37366 +I00 +sS'value' +p37367 +S'Sequence' +p37368 +ssS'editable' +p37369 +(dp37370 +S'editable' +p37371 +I00 +sS'value' +p37372 +I00 +ssS'unique' +p37373 +(dp37374 +S'editable' +p37375 +I00 +sS'value' +p37376 +I00 +ssS'properties' +p37377 +(dp37378 +S'default_value' +p37379 +(dp37380 +S'editable' +p37381 +I00 +sS'value' +p37382 +NssS'summary_default' +p37383 +(dp37384 +S'editable' +p37385 +I01 +sS'value' +p37386 +S'none' +p37387 +sssS'description' +p37388 +(dp37389 +S'editable' +p37390 +I01 +sS'value' +p37391 +g47 +sssS'sg_due_1' +p37392 +(dp37393 +S'mandatory' +p37394 +(dp37395 +S'editable' +p37396 +I00 +sS'value' +p37397 +I00 +ssS'name' +p37398 +(dp37399 +S'editable' +p37400 +I01 +sS'value' +p37401 +S'Due' +p37402 +ssS'data_type' +p37403 +(dp37404 +S'editable' +p37405 +I00 +sS'value' +p37406 +S'date' +p37407 +ssS'entity_type' +p37408 +(dp37409 +S'editable' +p37410 +I00 +sS'value' +p37411 +S'Sequence' +p37412 +ssS'editable' +p37413 +(dp37414 +S'editable' +p37415 +I00 +sS'value' +p37416 +I01 +ssS'unique' +p37417 +(dp37418 +S'editable' +p37419 +I00 +sS'value' +p37420 +I00 +ssS'properties' +p37421 +(dp37422 +S'default_value' +p37423 +(dp37424 +S'editable' +p37425 +I00 +sS'value' +p37426 +NssS'summary_default' +p37427 +(dp37428 +S'editable' +p37429 +I01 +sS'value' +p37430 +S'none' +p37431 +sssS'description' +p37432 +(dp37433 +S'editable' +p37434 +I01 +sS'value' +p37435 +g47 +sssS'open_notes' +p37436 +(dp37437 +S'mandatory' +p37438 +(dp37439 +S'editable' +p37440 +I00 +sS'value' +p37441 +I00 +ssS'name' +p37442 +(dp37443 +S'editable' +p37444 +I01 +sS'value' +p37445 +S'Open Notes' +p37446 +ssS'data_type' +p37447 +(dp37448 +S'editable' +p37449 +I00 +sS'value' +p37450 +S'multi_entity' +p37451 +ssS'entity_type' +p37452 +(dp37453 +S'editable' +p37454 +I00 +sS'value' +p37455 +S'Sequence' +p37456 +ssS'editable' +p37457 +(dp37458 +S'editable' +p37459 +I00 +sS'value' +p37460 +I00 +ssS'unique' +p37461 +(dp37462 +S'editable' +p37463 +I00 +sS'value' +p37464 +I00 +ssS'properties' +p37465 +(dp37466 +S'default_value' +p37467 +(dp37468 +S'editable' +p37469 +I00 +sS'value' +p37470 +NssS'summary_default' +p37471 +(dp37472 +S'editable' +p37473 +I01 +sS'value' +p37474 +S'none' +p37475 +ssS'valid_types' +p37476 +(dp37477 +S'editable' +p37478 +I01 +sS'value' +p37479 +(lp37480 +S'Note' +p37481 +asssS'description' +p37482 +(dp37483 +S'editable' +p37484 +I01 +sS'value' +p37485 +g47 +sssS'description' +p37486 +(dp37487 +S'mandatory' +p37488 +(dp37489 +S'editable' +p37490 +I00 +sS'value' +p37491 +I00 +ssS'name' +p37492 +(dp37493 +S'editable' +p37494 +I01 +sS'value' +p37495 +S'Description' +p37496 +ssS'data_type' +p37497 +(dp37498 +S'editable' +p37499 +I00 +sS'value' +p37500 +S'text' +p37501 +ssS'entity_type' +p37502 +(dp37503 +S'editable' +p37504 +I00 +sS'value' +p37505 +S'Sequence' +p37506 +ssS'editable' +p37507 +(dp37508 +S'editable' +p37509 +I00 +sS'value' +p37510 +I01 +ssS'unique' +p37511 +(dp37512 +S'editable' +p37513 +I00 +sS'value' +p37514 +I00 +ssS'properties' +p37515 +(dp37516 +S'default_value' +p37517 +(dp37518 +S'editable' +p37519 +I00 +sS'value' +p37520 +NssS'summary_default' +p37521 +(dp37522 +S'editable' +p37523 +I01 +sS'value' +p37524 +S'none' +p37525 +sssS'description' +p37526 +(dp37527 +S'editable' +p37528 +I01 +sS'value' +p37529 +g47 +sssS'task_template' +p37530 +(dp37531 +S'mandatory' +p37532 +(dp37533 +S'editable' +p37534 +I00 +sS'value' +p37535 +I00 +ssS'name' +p37536 +(dp37537 +S'editable' +p37538 +I01 +sS'value' +p37539 +S'Task Template' +p37540 +ssS'data_type' +p37541 +(dp37542 +S'editable' +p37543 +I00 +sS'value' +p37544 +S'entity' +p37545 +ssS'entity_type' +p37546 +(dp37547 +S'editable' +p37548 +I00 +sS'value' +p37549 +S'Sequence' +p37550 +ssS'editable' +p37551 +(dp37552 +S'editable' +p37553 +I00 +sS'value' +p37554 +I01 +ssS'unique' +p37555 +(dp37556 +S'editable' +p37557 +I00 +sS'value' +p37558 +I00 +ssS'properties' +p37559 +(dp37560 +S'default_value' +p37561 +(dp37562 +S'editable' +p37563 +I00 +sS'value' +p37564 +NssS'summary_default' +p37565 +(dp37566 +S'editable' +p37567 +I01 +sS'value' +p37568 +S'none' +p37569 +ssS'valid_types' +p37570 +(dp37571 +S'editable' +p37572 +I01 +sS'value' +p37573 +(lp37574 +S'TaskTemplate' +p37575 +asssS'description' +p37576 +(dp37577 +S'editable' +p37578 +I01 +sS'value' +p37579 +g47 +sssS'created_by' +p37580 +(dp37581 +S'mandatory' +p37582 +(dp37583 +S'editable' +p37584 +I00 +sS'value' +p37585 +I00 +ssS'name' +p37586 +(dp37587 +S'editable' +p37588 +I01 +sS'value' +p37589 +S'Created by' +p37590 +ssS'data_type' +p37591 +(dp37592 +S'editable' +p37593 +I00 +sS'value' +p37594 +S'entity' +p37595 +ssS'entity_type' +p37596 +(dp37597 +S'editable' +p37598 +I00 +sS'value' +p37599 +S'Sequence' +p37600 +ssS'editable' +p37601 +(dp37602 +S'editable' +p37603 +I00 +sS'value' +p37604 +I00 +ssS'unique' +p37605 +(dp37606 +S'editable' +p37607 +I00 +sS'value' +p37608 +I00 +ssS'properties' +p37609 +(dp37610 +S'default_value' +p37611 +(dp37612 +S'editable' +p37613 +I00 +sS'value' +p37614 +NssS'summary_default' +p37615 +(dp37616 +S'editable' +p37617 +I01 +sS'value' +p37618 +S'none' +p37619 +ssS'valid_types' +p37620 +(dp37621 +S'editable' +p37622 +I01 +sS'value' +p37623 +(lp37624 +S'HumanUser' +p37625 +aS'ApiUser' +p37626 +asssS'description' +p37627 +(dp37628 +S'editable' +p37629 +I01 +sS'value' +p37630 +g47 +sssS'sg_status_list' +p37631 +(dp37632 +S'mandatory' +p37633 +(dp37634 +S'editable' +p37635 +I00 +sS'value' +p37636 +I00 +ssS'name' +p37637 +(dp37638 +S'editable' +p37639 +I01 +sS'value' +p37640 +S'Status' +p37641 +ssS'data_type' +p37642 +(dp37643 +S'editable' +p37644 +I00 +sS'value' +p37645 +S'status_list' +p37646 +ssS'entity_type' +p37647 +(dp37648 +S'editable' +p37649 +I00 +sS'value' +p37650 +S'Sequence' +p37651 +ssS'editable' +p37652 +(dp37653 +S'editable' +p37654 +I00 +sS'value' +p37655 +I01 +ssS'unique' +p37656 +(dp37657 +S'editable' +p37658 +I00 +sS'value' +p37659 +I00 +ssS'properties' +p37660 +(dp37661 +S'default_value' +p37662 +(dp37663 +S'editable' +p37664 +I01 +sS'value' +p37665 +S'ip' +p37666 +ssS'valid_values' +p37667 +(dp37668 +S'editable' +p37669 +I01 +sS'value' +p37670 +(lp37671 +S'fin' +p37672 +aS'ip' +p37673 +aS'omt' +p37674 +aS'hld' +p37675 +assS'summary_default' +p37676 +(dp37677 +S'editable' +p37678 +I01 +sS'value' +p37679 +S'status_list' +p37680 +sssS'description' +p37681 +(dp37682 +S'editable' +p37683 +I01 +sS'value' +p37684 +g47 +sssS'updated_by' +p37685 +(dp37686 +S'mandatory' +p37687 +(dp37688 +S'editable' +p37689 +I00 +sS'value' +p37690 +I00 +ssS'name' +p37691 +(dp37692 +S'editable' +p37693 +I01 +sS'value' +p37694 +S'Updated by' +p37695 +ssS'data_type' +p37696 +(dp37697 +S'editable' +p37698 +I00 +sS'value' +p37699 +S'entity' +p37700 +ssS'entity_type' +p37701 +(dp37702 +S'editable' +p37703 +I00 +sS'value' +p37704 +S'Sequence' +p37705 +ssS'editable' +p37706 +(dp37707 +S'editable' +p37708 +I00 +sS'value' +p37709 +I00 +ssS'unique' +p37710 +(dp37711 +S'editable' +p37712 +I00 +sS'value' +p37713 +I00 +ssS'properties' +p37714 +(dp37715 +S'default_value' +p37716 +(dp37717 +S'editable' +p37718 +I00 +sS'value' +p37719 +NssS'summary_default' +p37720 +(dp37721 +S'editable' +p37722 +I01 +sS'value' +p37723 +S'none' +p37724 +ssS'valid_types' +p37725 +(dp37726 +S'editable' +p37727 +I01 +sS'value' +p37728 +(lp37729 +S'HumanUser' +p37730 +aS'ApiUser' +p37731 +asssS'description' +p37732 +(dp37733 +S'editable' +p37734 +I01 +sS'value' +p37735 +g47 +sssS'addressings_cc' +p37736 +(dp37737 +S'mandatory' +p37738 +(dp37739 +S'editable' +p37740 +I00 +sS'value' +p37741 +I00 +ssS'name' +p37742 +(dp37743 +S'editable' +p37744 +I01 +sS'value' +p37745 +S'Cc' +p37746 +ssS'data_type' +p37747 +(dp37748 +S'editable' +p37749 +I00 +sS'value' +p37750 +S'multi_entity' +p37751 +ssS'entity_type' +p37752 +(dp37753 +S'editable' +p37754 +I00 +sS'value' +p37755 +S'Sequence' +p37756 +ssS'editable' +p37757 +(dp37758 +S'editable' +p37759 +I00 +sS'value' +p37760 +I01 +ssS'unique' +p37761 +(dp37762 +S'editable' +p37763 +I00 +sS'value' +p37764 +I00 +ssS'properties' +p37765 +(dp37766 +S'default_value' +p37767 +(dp37768 +S'editable' +p37769 +I00 +sS'value' +p37770 +NssS'summary_default' +p37771 +(dp37772 +S'editable' +p37773 +I01 +sS'value' +p37774 +S'none' +p37775 +ssS'valid_types' +p37776 +(dp37777 +S'editable' +p37778 +I01 +sS'value' +p37779 +(lp37780 +S'Group' +p37781 +aS'HumanUser' +p37782 +asssS'description' +p37783 +(dp37784 +S'editable' +p37785 +I01 +sS'value' +p37786 +g47 +sssS'sg_sequencenumber' +p37787 +(dp37788 +S'mandatory' +p37789 +(dp37790 +S'editable' +p37791 +I00 +sS'value' +p37792 +I00 +ssS'name' +p37793 +(dp37794 +S'editable' +p37795 +I01 +sS'value' +p37796 +S'sequencenumber' +p37797 +ssS'data_type' +p37798 +(dp37799 +S'editable' +p37800 +I00 +sS'value' +p37801 +S'text' +p37802 +ssS'entity_type' +p37803 +(dp37804 +S'editable' +p37805 +I00 +sS'value' +p37806 +S'Sequence' +p37807 +ssS'editable' +p37808 +(dp37809 +S'editable' +p37810 +I00 +sS'value' +p37811 +I01 +ssS'unique' +p37812 +(dp37813 +S'editable' +p37814 +I00 +sS'value' +p37815 +I00 +ssS'properties' +p37816 +(dp37817 +S'default_value' +p37818 +(dp37819 +S'editable' +p37820 +I00 +sS'value' +p37821 +NssS'summary_default' +p37822 +(dp37823 +S'editable' +p37824 +I01 +sS'value' +p37825 +S'none' +p37826 +sssS'description' +p37827 +(dp37828 +S'editable' +p37829 +I01 +sS'value' +p37830 +g47 +sssS'step_0' +p37831 +(dp37832 +S'mandatory' +p37833 +(dp37834 +S'editable' +p37835 +I00 +sS'value' +p37836 +I00 +ssS'name' +p37837 +(dp37838 +S'editable' +p37839 +I01 +sS'value' +p37840 +S'ALL TASKS' +p37841 +ssS'data_type' +p37842 +(dp37843 +S'editable' +p37844 +I00 +sS'value' +p37845 +S'pivot_column' +p37846 +ssS'entity_type' +p37847 +(dp37848 +S'editable' +p37849 +I00 +sS'value' +p37850 +S'Sequence' +p37851 +ssS'editable' +p37852 +(dp37853 +S'editable' +p37854 +I00 +sS'value' +p37855 +I00 +ssS'unique' +p37856 +(dp37857 +S'editable' +p37858 +I00 +sS'value' +p37859 +I00 +ssS'properties' +p37860 +(dp37861 +S'default_value' +p37862 +(dp37863 +S'editable' +p37864 +I00 +sS'value' +p37865 +NssS'summary_default' +p37866 +(dp37867 +S'editable' +p37868 +I00 +sS'value' +p37869 +S'none' +p37870 +sssS'description' +p37871 +(dp37872 +S'editable' +p37873 +I01 +sS'value' +p37874 +g47 +sssS'assets' +p37875 +(dp37876 +S'mandatory' +p37877 +(dp37878 +S'editable' +p37879 +I00 +sS'value' +p37880 +I00 +ssS'name' +p37881 +(dp37882 +S'editable' +p37883 +I01 +sS'value' +p37884 +S'Assets' +p37885 +ssS'data_type' +p37886 +(dp37887 +S'editable' +p37888 +I00 +sS'value' +p37889 +S'multi_entity' +p37890 +ssS'entity_type' +p37891 +(dp37892 +S'editable' +p37893 +I00 +sS'value' +p37894 +S'Sequence' +p37895 +ssS'editable' +p37896 +(dp37897 +S'editable' +p37898 +I00 +sS'value' +p37899 +I01 +ssS'unique' +p37900 +(dp37901 +S'editable' +p37902 +I00 +sS'value' +p37903 +I00 +ssS'properties' +p37904 +(dp37905 +S'default_value' +p37906 +(dp37907 +S'editable' +p37908 +I00 +sS'value' +p37909 +NssS'summary_default' +p37910 +(dp37911 +S'editable' +p37912 +I01 +sS'value' +p37913 +S'none' +p37914 +ssS'valid_types' +p37915 +(dp37916 +S'editable' +p37917 +I01 +sS'value' +p37918 +(lp37919 +S'Asset' +p37920 +asssS'description' +p37921 +(dp37922 +S'editable' +p37923 +I01 +sS'value' +p37924 +g47 +sssS'sg_scene' +p37925 +(dp37926 +S'mandatory' +p37927 +(dp37928 +S'editable' +p37929 +I00 +sS'value' +p37930 +I00 +ssS'name' +p37931 +(dp37932 +S'editable' +p37933 +I01 +sS'value' +p37934 +S'Scene' +p37935 +ssS'data_type' +p37936 +(dp37937 +S'editable' +p37938 +I00 +sS'value' +p37939 +S'entity' +p37940 +ssS'entity_type' +p37941 +(dp37942 +S'editable' +p37943 +I00 +sS'value' +p37944 +S'Sequence' +p37945 +ssS'editable' +p37946 +(dp37947 +S'editable' +p37948 +I00 +sS'value' +p37949 +I01 +ssS'unique' +p37950 +(dp37951 +S'editable' +p37952 +I00 +sS'value' +p37953 +I00 +ssS'properties' +p37954 +(dp37955 +S'default_value' +p37956 +(dp37957 +S'editable' +p37958 +I00 +sS'value' +p37959 +NssS'summary_default' +p37960 +(dp37961 +S'editable' +p37962 +I01 +sS'value' +p37963 +S'none' +p37964 +ssS'valid_types' +p37965 +(dp37966 +S'editable' +p37967 +I01 +sS'value' +p37968 +(lp37969 +S'Scene' +p37970 +asssS'description' +p37971 +(dp37972 +S'editable' +p37973 +I01 +sS'value' +p37974 +g47 +sssS'notes' +p37975 +(dp37976 +S'mandatory' +p37977 +(dp37978 +S'editable' +p37979 +I00 +sS'value' +p37980 +I00 +ssS'name' +p37981 +(dp37982 +S'editable' +p37983 +I01 +sS'value' +p37984 +S'Notes' +p37985 +ssS'data_type' +p37986 +(dp37987 +S'editable' +p37988 +I00 +sS'value' +p37989 +S'multi_entity' +p37990 +ssS'entity_type' +p37991 +(dp37992 +S'editable' +p37993 +I00 +sS'value' +p37994 +S'Sequence' +p37995 +ssS'editable' +p37996 +(dp37997 +S'editable' +p37998 +I00 +sS'value' +p37999 +I01 +ssS'unique' +p38000 +(dp38001 +S'editable' +p38002 +I00 +sS'value' +p38003 +I00 +ssS'properties' +p38004 +(dp38005 +S'default_value' +p38006 +(dp38007 +S'editable' +p38008 +I00 +sS'value' +p38009 +NssS'summary_default' +p38010 +(dp38011 +S'editable' +p38012 +I01 +sS'value' +p38013 +S'none' +p38014 +ssS'valid_types' +p38015 +(dp38016 +S'editable' +p38017 +I01 +sS'value' +p38018 +(lp38019 +S'Note' +p38020 +asssS'description' +p38021 +(dp38022 +S'editable' +p38023 +I01 +sS'value' +p38024 +g47 +sssS'project' +p38025 +(dp38026 +S'mandatory' +p38027 +(dp38028 +S'editable' +p38029 +I00 +sS'value' +p38030 +I00 +ssS'name' +p38031 +(dp38032 +S'editable' +p38033 +I01 +sS'value' +p38034 +S'Project' +p38035 +ssS'data_type' +p38036 +(dp38037 +S'editable' +p38038 +I00 +sS'value' +p38039 +S'entity' +p38040 +ssS'entity_type' +p38041 +(dp38042 +S'editable' +p38043 +I00 +sS'value' +p38044 +S'Sequence' +p38045 +ssS'editable' +p38046 +(dp38047 +S'editable' +p38048 +I00 +sS'value' +p38049 +I01 +ssS'unique' +p38050 +(dp38051 +S'editable' +p38052 +I00 +sS'value' +p38053 +I00 +ssS'properties' +p38054 +(dp38055 +S'default_value' +p38056 +(dp38057 +S'editable' +p38058 +I00 +sS'value' +p38059 +NssS'summary_default' +p38060 +(dp38061 +S'editable' +p38062 +I01 +sS'value' +p38063 +S'none' +p38064 +ssS'valid_types' +p38065 +(dp38066 +S'editable' +p38067 +I01 +sS'value' +p38068 +(lp38069 +S'Project' +p38070 +asssS'description' +p38071 +(dp38072 +S'editable' +p38073 +I01 +sS'value' +p38074 +g47 +sssS'filmstrip_image' +p38075 +(dp38076 +S'mandatory' +p38077 +(dp38078 +S'editable' +p38079 +I00 +sS'value' +p38080 +I00 +ssS'name' +p38081 +(dp38082 +S'editable' +p38083 +I01 +sS'value' +p38084 +S'Filmstrip Thumbnail' +p38085 +ssS'data_type' +p38086 +(dp38087 +S'editable' +p38088 +I00 +sS'value' +p38089 +S'image' +p38090 +ssS'entity_type' +p38091 +(dp38092 +S'editable' +p38093 +I00 +sS'value' +p38094 +S'Sequence' +p38095 +ssS'editable' +p38096 +(dp38097 +S'editable' +p38098 +I00 +sS'value' +p38099 +I01 +ssS'unique' +p38100 +(dp38101 +S'editable' +p38102 +I00 +sS'value' +p38103 +I00 +ssS'properties' +p38104 +(dp38105 +S'default_value' +p38106 +(dp38107 +S'editable' +p38108 +I00 +sS'value' +p38109 +NssS'summary_default' +p38110 +(dp38111 +S'editable' +p38112 +I01 +sS'value' +p38113 +S'none' +p38114 +sssS'description' +p38115 +(dp38116 +S'editable' +p38117 +I01 +sS'value' +p38118 +g47 +sssS'sg_assigned_to' +p38119 +(dp38120 +S'mandatory' +p38121 +(dp38122 +S'editable' +p38123 +I00 +sS'value' +p38124 +I00 +ssS'name' +p38125 +(dp38126 +S'editable' +p38127 +I01 +sS'value' +p38128 +S'Assigned To' +p38129 +ssS'data_type' +p38130 +(dp38131 +S'editable' +p38132 +I00 +sS'value' +p38133 +S'entity' +p38134 +ssS'entity_type' +p38135 +(dp38136 +S'editable' +p38137 +I00 +sS'value' +p38138 +S'Sequence' +p38139 +ssS'editable' +p38140 +(dp38141 +S'editable' +p38142 +I00 +sS'value' +p38143 +I01 +ssS'unique' +p38144 +(dp38145 +S'editable' +p38146 +I00 +sS'value' +p38147 +I00 +ssS'properties' +p38148 +(dp38149 +S'default_value' +p38150 +(dp38151 +S'editable' +p38152 +I00 +sS'value' +p38153 +NssS'summary_default' +p38154 +(dp38155 +S'editable' +p38156 +I01 +sS'value' +p38157 +S'none' +p38158 +ssS'valid_types' +p38159 +(dp38160 +S'editable' +p38161 +I01 +sS'value' +p38162 +(lp38163 +S'HumanUser' +p38164 +asssS'description' +p38165 +(dp38166 +S'editable' +p38167 +I01 +sS'value' +p38168 +g47 +sssS'shots' +p38169 +(dp38170 +S'mandatory' +p38171 +(dp38172 +S'editable' +p38173 +I00 +sS'value' +p38174 +I00 +ssS'name' +p38175 +(dp38176 +S'editable' +p38177 +I01 +sS'value' +p38178 +S'Shots' +p38179 +ssS'data_type' +p38180 +(dp38181 +S'editable' +p38182 +I00 +sS'value' +p38183 +S'multi_entity' +p38184 +ssS'entity_type' +p38185 +(dp38186 +S'editable' +p38187 +I00 +sS'value' +p38188 +S'Sequence' +p38189 +ssS'editable' +p38190 +(dp38191 +S'editable' +p38192 +I00 +sS'value' +p38193 +I01 +ssS'unique' +p38194 +(dp38195 +S'editable' +p38196 +I00 +sS'value' +p38197 +I00 +ssS'properties' +p38198 +(dp38199 +S'default_value' +p38200 +(dp38201 +S'editable' +p38202 +I00 +sS'value' +p38203 +NssS'summary_default' +p38204 +(dp38205 +S'editable' +p38206 +I01 +sS'value' +p38207 +S'none' +p38208 +ssS'valid_types' +p38209 +(dp38210 +S'editable' +p38211 +I01 +sS'value' +p38212 +(lp38213 +S'Shot' +p38214 +asssS'description' +p38215 +(dp38216 +S'editable' +p38217 +I01 +sS'value' +p38218 +g47 +sssS'tag_list' +p38219 +(dp38220 +S'mandatory' +p38221 +(dp38222 +S'editable' +p38223 +I00 +sS'value' +p38224 +I00 +ssS'name' +p38225 +(dp38226 +S'editable' +p38227 +I01 +sS'value' +p38228 +S'Tags' +p38229 +ssS'data_type' +p38230 +(dp38231 +S'editable' +p38232 +I00 +sS'value' +p38233 +S'tag_list' +p38234 +ssS'entity_type' +p38235 +(dp38236 +S'editable' +p38237 +I00 +sS'value' +p38238 +S'Sequence' +p38239 +ssS'editable' +p38240 +(dp38241 +S'editable' +p38242 +I00 +sS'value' +p38243 +I01 +ssS'unique' +p38244 +(dp38245 +S'editable' +p38246 +I00 +sS'value' +p38247 +I00 +ssS'properties' +p38248 +(dp38249 +S'default_value' +p38250 +(dp38251 +S'editable' +p38252 +I00 +sS'value' +p38253 +NssS'summary_default' +p38254 +(dp38255 +S'editable' +p38256 +I01 +sS'value' +p38257 +S'none' +p38258 +ssS'valid_types' +p38259 +(dp38260 +S'editable' +p38261 +I01 +sS'value' +p38262 +(lp38263 +S'Tag' +p38264 +asssS'description' +p38265 +(dp38266 +S'editable' +p38267 +I01 +sS'value' +p38268 +g47 +sssS'created_at' +p38269 +(dp38270 +S'mandatory' +p38271 +(dp38272 +S'editable' +p38273 +I00 +sS'value' +p38274 +I00 +ssS'name' +p38275 +(dp38276 +S'editable' +p38277 +I01 +sS'value' +p38278 +S'Date Created' +p38279 +ssS'data_type' +p38280 +(dp38281 +S'editable' +p38282 +I00 +sS'value' +p38283 +S'date_time' +p38284 +ssS'entity_type' +p38285 +(dp38286 +S'editable' +p38287 +I00 +sS'value' +p38288 +S'Sequence' +p38289 +ssS'editable' +p38290 +(dp38291 +S'editable' +p38292 +I00 +sS'value' +p38293 +I00 +ssS'unique' +p38294 +(dp38295 +S'editable' +p38296 +I00 +sS'value' +p38297 +I00 +ssS'properties' +p38298 +(dp38299 +S'default_value' +p38300 +(dp38301 +S'editable' +p38302 +I00 +sS'value' +p38303 +NssS'summary_default' +p38304 +(dp38305 +S'editable' +p38306 +I01 +sS'value' +p38307 +S'none' +p38308 +sssS'description' +p38309 +(dp38310 +S'editable' +p38311 +I01 +sS'value' +p38312 +g47 +ssssS'BannerUserConnection' +p38313 +(dp38314 +S'cached_display_name' +p38315 +(dp38316 +S'mandatory' +p38317 +(dp38318 +S'editable' +p38319 +I00 +sS'value' +p38320 +I00 +ssS'name' +p38321 +(dp38322 +S'editable' +p38323 +I01 +sS'value' +p38324 +S'Cached Display Name' +p38325 +ssS'data_type' +p38326 +(dp38327 +S'editable' +p38328 +I00 +sS'value' +p38329 +S'text' +p38330 +ssS'entity_type' +p38331 +(dp38332 +S'editable' +p38333 +I00 +sS'value' +p38334 +S'BannerUserConnection' +p38335 +ssS'editable' +p38336 +(dp38337 +S'editable' +p38338 +I00 +sS'value' +p38339 +I01 +ssS'unique' +p38340 +(dp38341 +S'editable' +p38342 +I00 +sS'value' +p38343 +I00 +ssS'properties' +p38344 +(dp38345 +S'default_value' +p38346 +(dp38347 +S'editable' +p38348 +I00 +sS'value' +p38349 +NssS'summary_default' +p38350 +(dp38351 +S'editable' +p38352 +I00 +sS'value' +p38353 +S'none' +p38354 +sssS'description' +p38355 +(dp38356 +S'editable' +p38357 +I01 +sS'value' +p38358 +g47 +sssS'banner' +p38359 +(dp38360 +S'mandatory' +p38361 +(dp38362 +S'editable' +p38363 +I00 +sS'value' +p38364 +I00 +ssS'name' +p38365 +(dp38366 +S'editable' +p38367 +I01 +sS'value' +p38368 +S'Banner' +p38369 +ssS'data_type' +p38370 +(dp38371 +S'editable' +p38372 +I00 +sS'value' +p38373 +S'entity' +p38374 +ssS'entity_type' +p38375 +(dp38376 +S'editable' +p38377 +I00 +sS'value' +p38378 +S'BannerUserConnection' +p38379 +ssS'editable' +p38380 +(dp38381 +S'editable' +p38382 +I00 +sS'value' +p38383 +I01 +ssS'unique' +p38384 +(dp38385 +S'editable' +p38386 +I00 +sS'value' +p38387 +I00 +ssS'properties' +p38388 +(dp38389 +S'default_value' +p38390 +(dp38391 +S'editable' +p38392 +I00 +sS'value' +p38393 +NssS'summary_default' +p38394 +(dp38395 +S'editable' +p38396 +I00 +sS'value' +p38397 +S'none' +p38398 +ssS'valid_types' +p38399 +(dp38400 +S'editable' +p38401 +I00 +sS'value' +p38402 +(lp38403 +S'Banner' +p38404 +asssS'description' +p38405 +(dp38406 +S'editable' +p38407 +I01 +sS'value' +p38408 +g47 +sssS'id' +p38409 +(dp38410 +S'mandatory' +p38411 +(dp38412 +S'editable' +p38413 +I00 +sS'value' +p38414 +I00 +ssS'name' +p38415 +(dp38416 +S'editable' +p38417 +I01 +sS'value' +p38418 +S'Id' +p38419 +ssS'data_type' +p38420 +(dp38421 +S'editable' +p38422 +I00 +sS'value' +p38423 +S'number' +p38424 +ssS'entity_type' +p38425 +(dp38426 +S'editable' +p38427 +I00 +sS'value' +p38428 +S'BannerUserConnection' +p38429 +ssS'editable' +p38430 +(dp38431 +S'editable' +p38432 +I00 +sS'value' +p38433 +I00 +ssS'unique' +p38434 +(dp38435 +S'editable' +p38436 +I00 +sS'value' +p38437 +I00 +ssS'properties' +p38438 +(dp38439 +S'default_value' +p38440 +(dp38441 +S'editable' +p38442 +I00 +sS'value' +p38443 +NssS'summary_default' +p38444 +(dp38445 +S'editable' +p38446 +I00 +sS'value' +p38447 +S'none' +p38448 +sssS'description' +p38449 +(dp38450 +S'editable' +p38451 +I01 +sS'value' +p38452 +g47 +sssS'user' +p38453 +(dp38454 +S'mandatory' +p38455 +(dp38456 +S'editable' +p38457 +I00 +sS'value' +p38458 +I00 +ssS'name' +p38459 +(dp38460 +S'editable' +p38461 +I01 +sS'value' +p38462 +S'User' +p38463 +ssS'data_type' +p38464 +(dp38465 +S'editable' +p38466 +I00 +sS'value' +p38467 +S'entity' +p38468 +ssS'entity_type' +p38469 +(dp38470 +S'editable' +p38471 +I00 +sS'value' +p38472 +S'BannerUserConnection' +p38473 +ssS'editable' +p38474 +(dp38475 +S'editable' +p38476 +I00 +sS'value' +p38477 +I01 +ssS'unique' +p38478 +(dp38479 +S'editable' +p38480 +I00 +sS'value' +p38481 +I00 +ssS'properties' +p38482 +(dp38483 +S'default_value' +p38484 +(dp38485 +S'editable' +p38486 +I00 +sS'value' +p38487 +NssS'summary_default' +p38488 +(dp38489 +S'editable' +p38490 +I00 +sS'value' +p38491 +S'none' +p38492 +ssS'valid_types' +p38493 +(dp38494 +S'editable' +p38495 +I00 +sS'value' +p38496 +(lp38497 +S'HumanUser' +p38498 +asssS'description' +p38499 +(dp38500 +S'editable' +p38501 +I01 +sS'value' +p38502 +g47 +ssssS'AssetAssetConnection' +p38503 +(dp38504 +S'cached_display_name' +p38505 +(dp38506 +S'mandatory' +p38507 +(dp38508 +S'editable' +p38509 +I00 +sS'value' +p38510 +I00 +ssS'name' +p38511 +(dp38512 +S'editable' +p38513 +I01 +sS'value' +p38514 +S'Cached Display Name' +p38515 +ssS'data_type' +p38516 +(dp38517 +S'editable' +p38518 +I00 +sS'value' +p38519 +S'text' +p38520 +ssS'entity_type' +p38521 +(dp38522 +S'editable' +p38523 +I00 +sS'value' +p38524 +S'AssetAssetConnection' +p38525 +ssS'editable' +p38526 +(dp38527 +S'editable' +p38528 +I00 +sS'value' +p38529 +I01 +ssS'unique' +p38530 +(dp38531 +S'editable' +p38532 +I00 +sS'value' +p38533 +I00 +ssS'properties' +p38534 +(dp38535 +S'default_value' +p38536 +(dp38537 +S'editable' +p38538 +I00 +sS'value' +p38539 +NssS'summary_default' +p38540 +(dp38541 +S'editable' +p38542 +I00 +sS'value' +p38543 +S'none' +p38544 +sssS'description' +p38545 +(dp38546 +S'editable' +p38547 +I01 +sS'value' +p38548 +g47 +sssS'asset' +p38549 +(dp38550 +S'mandatory' +p38551 +(dp38552 +S'editable' +p38553 +I00 +sS'value' +p38554 +I00 +ssS'name' +p38555 +(dp38556 +S'editable' +p38557 +I01 +sS'value' +p38558 +S'Asset' +p38559 +ssS'data_type' +p38560 +(dp38561 +S'editable' +p38562 +I00 +sS'value' +p38563 +S'entity' +p38564 +ssS'entity_type' +p38565 +(dp38566 +S'editable' +p38567 +I00 +sS'value' +p38568 +S'AssetAssetConnection' +p38569 +ssS'editable' +p38570 +(dp38571 +S'editable' +p38572 +I00 +sS'value' +p38573 +I00 +ssS'unique' +p38574 +(dp38575 +S'editable' +p38576 +I00 +sS'value' +p38577 +I00 +ssS'properties' +p38578 +(dp38579 +S'default_value' +p38580 +(dp38581 +S'editable' +p38582 +I00 +sS'value' +p38583 +NssS'summary_default' +p38584 +(dp38585 +S'editable' +p38586 +I00 +sS'value' +p38587 +S'none' +p38588 +ssS'valid_types' +p38589 +(dp38590 +S'editable' +p38591 +I00 +sS'value' +p38592 +(lp38593 +S'Asset' +p38594 +asssS'description' +p38595 +(dp38596 +S'editable' +p38597 +I01 +sS'value' +p38598 +g47 +sssS'parent' +p38599 +(dp38600 +S'mandatory' +p38601 +(dp38602 +S'editable' +p38603 +I00 +sS'value' +p38604 +I00 +ssS'name' +p38605 +(dp38606 +S'editable' +p38607 +I01 +sS'value' +p38608 +S'Asset' +p38609 +ssS'data_type' +p38610 +(dp38611 +S'editable' +p38612 +I00 +sS'value' +p38613 +S'entity' +p38614 +ssS'entity_type' +p38615 +(dp38616 +S'editable' +p38617 +I00 +sS'value' +p38618 +S'AssetAssetConnection' +p38619 +ssS'editable' +p38620 +(dp38621 +S'editable' +p38622 +I00 +sS'value' +p38623 +I00 +ssS'unique' +p38624 +(dp38625 +S'editable' +p38626 +I00 +sS'value' +p38627 +I00 +ssS'properties' +p38628 +(dp38629 +S'default_value' +p38630 +(dp38631 +S'editable' +p38632 +I00 +sS'value' +p38633 +NssS'summary_default' +p38634 +(dp38635 +S'editable' +p38636 +I00 +sS'value' +p38637 +S'none' +p38638 +ssS'valid_types' +p38639 +(dp38640 +S'editable' +p38641 +I00 +sS'value' +p38642 +(lp38643 +S'Asset' +p38644 +asssS'description' +p38645 +(dp38646 +S'editable' +p38647 +I01 +sS'value' +p38648 +g47 +sssS'id' +p38649 +(dp38650 +S'mandatory' +p38651 +(dp38652 +S'editable' +p38653 +I00 +sS'value' +p38654 +I01 +ssS'name' +p38655 +(dp38656 +S'editable' +p38657 +I01 +sS'value' +p38658 +S'Id' +p38659 +ssS'data_type' +p38660 +(dp38661 +S'editable' +p38662 +I00 +sS'value' +p38663 +S'number' +p38664 +ssS'entity_type' +p38665 +(dp38666 +S'editable' +p38667 +I00 +sS'value' +p38668 +S'AssetAssetConnection' +p38669 +ssS'editable' +p38670 +(dp38671 +S'editable' +p38672 +I00 +sS'value' +p38673 +I00 +ssS'unique' +p38674 +(dp38675 +S'editable' +p38676 +I00 +sS'value' +p38677 +I00 +ssS'properties' +p38678 +(dp38679 +S'default_value' +p38680 +(dp38681 +S'editable' +p38682 +I00 +sS'value' +p38683 +NssS'summary_default' +p38684 +(dp38685 +S'editable' +p38686 +I00 +sS'value' +p38687 +S'none' +p38688 +sssS'description' +p38689 +(dp38690 +S'editable' +p38691 +I01 +sS'value' +p38692 +g47 +ssssS'Scene' +p38693 +(dp38694 +S'open_notes_count' +p38695 +(dp38696 +S'mandatory' +p38697 +(dp38698 +S'editable' +p38699 +I00 +sS'value' +p38700 +I00 +ssS'name' +p38701 +(dp38702 +S'editable' +p38703 +I01 +sS'value' +p38704 +S'Open Notes Count' +p38705 +ssS'data_type' +p38706 +(dp38707 +S'editable' +p38708 +I00 +sS'value' +p38709 +S'text' +p38710 +ssS'entity_type' +p38711 +(dp38712 +S'editable' +p38713 +I00 +sS'value' +p38714 +S'Scene' +p38715 +ssS'editable' +p38716 +(dp38717 +S'editable' +p38718 +I00 +sS'value' +p38719 +I00 +ssS'unique' +p38720 +(dp38721 +S'editable' +p38722 +I00 +sS'value' +p38723 +I00 +ssS'properties' +p38724 +(dp38725 +S'default_value' +p38726 +(dp38727 +S'editable' +p38728 +I00 +sS'value' +p38729 +NssS'summary_default' +p38730 +(dp38731 +S'editable' +p38732 +I01 +sS'value' +p38733 +S'none' +p38734 +sssS'description' +p38735 +(dp38736 +S'editable' +p38737 +I01 +sS'value' +p38738 +g47 +sssS'code' +p38739 +(dp38740 +S'mandatory' +p38741 +(dp38742 +S'editable' +p38743 +I00 +sS'value' +p38744 +I01 +ssS'name' +p38745 +(dp38746 +S'editable' +p38747 +I01 +sS'value' +p38748 +S'Scene Code' +p38749 +ssS'data_type' +p38750 +(dp38751 +S'editable' +p38752 +I00 +sS'value' +p38753 +S'text' +p38754 +ssS'entity_type' +p38755 +(dp38756 +S'editable' +p38757 +I00 +sS'value' +p38758 +S'Scene' +p38759 +ssS'editable' +p38760 +(dp38761 +S'editable' +p38762 +I00 +sS'value' +p38763 +I01 +ssS'unique' +p38764 +(dp38765 +S'editable' +p38766 +I00 +sS'value' +p38767 +I00 +ssS'properties' +p38768 +(dp38769 +S'default_value' +p38770 +(dp38771 +S'editable' +p38772 +I00 +sS'value' +p38773 +NssS'summary_default' +p38774 +(dp38775 +S'editable' +p38776 +I01 +sS'value' +p38777 +S'none' +p38778 +sssS'description' +p38779 +(dp38780 +S'editable' +p38781 +I01 +sS'value' +p38782 +g47 +sssS'image' +p38783 +(dp38784 +S'mandatory' +p38785 +(dp38786 +S'editable' +p38787 +I00 +sS'value' +p38788 +I00 +ssS'name' +p38789 +(dp38790 +S'editable' +p38791 +I01 +sS'value' +p38792 +S'Thumbnail' +p38793 +ssS'data_type' +p38794 +(dp38795 +S'editable' +p38796 +I00 +sS'value' +p38797 +S'image' +p38798 +ssS'entity_type' +p38799 +(dp38800 +S'editable' +p38801 +I00 +sS'value' +p38802 +S'Scene' +p38803 +ssS'editable' +p38804 +(dp38805 +S'editable' +p38806 +I00 +sS'value' +p38807 +I01 +ssS'unique' +p38808 +(dp38809 +S'editable' +p38810 +I00 +sS'value' +p38811 +I00 +ssS'properties' +p38812 +(dp38813 +S'default_value' +p38814 +(dp38815 +S'editable' +p38816 +I00 +sS'value' +p38817 +NssS'summary_default' +p38818 +(dp38819 +S'editable' +p38820 +I01 +sS'value' +p38821 +S'none' +p38822 +sssS'description' +p38823 +(dp38824 +S'editable' +p38825 +I01 +sS'value' +p38826 +g47 +sssS'updated_at' +p38827 +(dp38828 +S'mandatory' +p38829 +(dp38830 +S'editable' +p38831 +I00 +sS'value' +p38832 +I00 +ssS'name' +p38833 +(dp38834 +S'editable' +p38835 +I01 +sS'value' +p38836 +S'Date Updated' +p38837 +ssS'data_type' +p38838 +(dp38839 +S'editable' +p38840 +I00 +sS'value' +p38841 +S'date_time' +p38842 +ssS'entity_type' +p38843 +(dp38844 +S'editable' +p38845 +I00 +sS'value' +p38846 +S'Scene' +p38847 +ssS'editable' +p38848 +(dp38849 +S'editable' +p38850 +I00 +sS'value' +p38851 +I00 +ssS'unique' +p38852 +(dp38853 +S'editable' +p38854 +I00 +sS'value' +p38855 +I00 +ssS'properties' +p38856 +(dp38857 +S'default_value' +p38858 +(dp38859 +S'editable' +p38860 +I00 +sS'value' +p38861 +NssS'summary_default' +p38862 +(dp38863 +S'editable' +p38864 +I01 +sS'value' +p38865 +S'none' +p38866 +sssS'description' +p38867 +(dp38868 +S'editable' +p38869 +I01 +sS'value' +p38870 +g47 +sssS'tasks' +p38871 +(dp38872 +S'mandatory' +p38873 +(dp38874 +S'editable' +p38875 +I00 +sS'value' +p38876 +I00 +ssS'name' +p38877 +(dp38878 +S'editable' +p38879 +I01 +sS'value' +p38880 +S'Tasks' +p38881 +ssS'data_type' +p38882 +(dp38883 +S'editable' +p38884 +I00 +sS'value' +p38885 +S'multi_entity' +p38886 +ssS'entity_type' +p38887 +(dp38888 +S'editable' +p38889 +I00 +sS'value' +p38890 +S'Scene' +p38891 +ssS'editable' +p38892 +(dp38893 +S'editable' +p38894 +I00 +sS'value' +p38895 +I01 +ssS'unique' +p38896 +(dp38897 +S'editable' +p38898 +I00 +sS'value' +p38899 +I00 +ssS'properties' +p38900 +(dp38901 +S'default_value' +p38902 +(dp38903 +S'editable' +p38904 +I00 +sS'value' +p38905 +NssS'summary_default' +p38906 +(dp38907 +S'editable' +p38908 +I01 +sS'value' +p38909 +S'none' +p38910 +ssS'valid_types' +p38911 +(dp38912 +S'editable' +p38913 +I01 +sS'value' +p38914 +(lp38915 +S'Task' +p38916 +asssS'description' +p38917 +(dp38918 +S'editable' +p38919 +I01 +sS'value' +p38920 +g47 +sssS'cached_display_name' +p38921 +(dp38922 +S'mandatory' +p38923 +(dp38924 +S'editable' +p38925 +I00 +sS'value' +p38926 +I00 +ssS'name' +p38927 +(dp38928 +S'editable' +p38929 +I01 +sS'value' +p38930 +S'Cached Display Name' +p38931 +ssS'data_type' +p38932 +(dp38933 +S'editable' +p38934 +I00 +sS'value' +p38935 +S'text' +p38936 +ssS'entity_type' +p38937 +(dp38938 +S'editable' +p38939 +I00 +sS'value' +p38940 +S'Scene' +p38941 +ssS'editable' +p38942 +(dp38943 +S'editable' +p38944 +I00 +sS'value' +p38945 +I01 +ssS'unique' +p38946 +(dp38947 +S'editable' +p38948 +I00 +sS'value' +p38949 +I00 +ssS'properties' +p38950 +(dp38951 +S'default_value' +p38952 +(dp38953 +S'editable' +p38954 +I00 +sS'value' +p38955 +NssS'summary_default' +p38956 +(dp38957 +S'editable' +p38958 +I00 +sS'value' +p38959 +S'none' +p38960 +sssS'description' +p38961 +(dp38962 +S'editable' +p38963 +I01 +sS'value' +p38964 +g47 +sssS'id' +p38965 +(dp38966 +S'mandatory' +p38967 +(dp38968 +S'editable' +p38969 +I00 +sS'value' +p38970 +I00 +ssS'name' +p38971 +(dp38972 +S'editable' +p38973 +I01 +sS'value' +p38974 +S'Id' +p38975 +ssS'data_type' +p38976 +(dp38977 +S'editable' +p38978 +I00 +sS'value' +p38979 +S'number' +p38980 +ssS'entity_type' +p38981 +(dp38982 +S'editable' +p38983 +I00 +sS'value' +p38984 +S'Scene' +p38985 +ssS'editable' +p38986 +(dp38987 +S'editable' +p38988 +I00 +sS'value' +p38989 +I00 +ssS'unique' +p38990 +(dp38991 +S'editable' +p38992 +I00 +sS'value' +p38993 +I00 +ssS'properties' +p38994 +(dp38995 +S'default_value' +p38996 +(dp38997 +S'editable' +p38998 +I00 +sS'value' +p38999 +NssS'summary_default' +p39000 +(dp39001 +S'editable' +p39002 +I01 +sS'value' +p39003 +S'none' +p39004 +sssS'description' +p39005 +(dp39006 +S'editable' +p39007 +I01 +sS'value' +p39008 +g47 +sssS'updated_by' +p39009 +(dp39010 +S'mandatory' +p39011 +(dp39012 +S'editable' +p39013 +I00 +sS'value' +p39014 +I00 +ssS'name' +p39015 +(dp39016 +S'editable' +p39017 +I01 +sS'value' +p39018 +S'Updated by' +p39019 +ssS'data_type' +p39020 +(dp39021 +S'editable' +p39022 +I00 +sS'value' +p39023 +S'entity' +p39024 +ssS'entity_type' +p39025 +(dp39026 +S'editable' +p39027 +I00 +sS'value' +p39028 +S'Scene' +p39029 +ssS'editable' +p39030 +(dp39031 +S'editable' +p39032 +I00 +sS'value' +p39033 +I00 +ssS'unique' +p39034 +(dp39035 +S'editable' +p39036 +I00 +sS'value' +p39037 +I00 +ssS'properties' +p39038 +(dp39039 +S'default_value' +p39040 +(dp39041 +S'editable' +p39042 +I00 +sS'value' +p39043 +NssS'summary_default' +p39044 +(dp39045 +S'editable' +p39046 +I01 +sS'value' +p39047 +S'none' +p39048 +ssS'valid_types' +p39049 +(dp39050 +S'editable' +p39051 +I01 +sS'value' +p39052 +(lp39053 +S'HumanUser' +p39054 +aS'ApiUser' +p39055 +asssS'description' +p39056 +(dp39057 +S'editable' +p39058 +I01 +sS'value' +p39059 +g47 +sssS'open_notes' +p39060 +(dp39061 +S'mandatory' +p39062 +(dp39063 +S'editable' +p39064 +I00 +sS'value' +p39065 +I00 +ssS'name' +p39066 +(dp39067 +S'editable' +p39068 +I01 +sS'value' +p39069 +S'Open Notes' +p39070 +ssS'data_type' +p39071 +(dp39072 +S'editable' +p39073 +I00 +sS'value' +p39074 +S'multi_entity' +p39075 +ssS'entity_type' +p39076 +(dp39077 +S'editable' +p39078 +I00 +sS'value' +p39079 +S'Scene' +p39080 +ssS'editable' +p39081 +(dp39082 +S'editable' +p39083 +I00 +sS'value' +p39084 +I00 +ssS'unique' +p39085 +(dp39086 +S'editable' +p39087 +I00 +sS'value' +p39088 +I00 +ssS'properties' +p39089 +(dp39090 +S'default_value' +p39091 +(dp39092 +S'editable' +p39093 +I00 +sS'value' +p39094 +NssS'summary_default' +p39095 +(dp39096 +S'editable' +p39097 +I01 +sS'value' +p39098 +S'none' +p39099 +ssS'valid_types' +p39100 +(dp39101 +S'editable' +p39102 +I01 +sS'value' +p39103 +(lp39104 +S'Note' +p39105 +asssS'description' +p39106 +(dp39107 +S'editable' +p39108 +I01 +sS'value' +p39109 +g47 +sssS'task_template' +p39110 +(dp39111 +S'mandatory' +p39112 +(dp39113 +S'editable' +p39114 +I00 +sS'value' +p39115 +I00 +ssS'name' +p39116 +(dp39117 +S'editable' +p39118 +I01 +sS'value' +p39119 +S'Task Template' +p39120 +ssS'data_type' +p39121 +(dp39122 +S'editable' +p39123 +I00 +sS'value' +p39124 +S'entity' +p39125 +ssS'entity_type' +p39126 +(dp39127 +S'editable' +p39128 +I00 +sS'value' +p39129 +S'Scene' +p39130 +ssS'editable' +p39131 +(dp39132 +S'editable' +p39133 +I00 +sS'value' +p39134 +I01 +ssS'unique' +p39135 +(dp39136 +S'editable' +p39137 +I00 +sS'value' +p39138 +I00 +ssS'properties' +p39139 +(dp39140 +S'default_value' +p39141 +(dp39142 +S'editable' +p39143 +I00 +sS'value' +p39144 +NssS'summary_default' +p39145 +(dp39146 +S'editable' +p39147 +I01 +sS'value' +p39148 +S'none' +p39149 +ssS'valid_types' +p39150 +(dp39151 +S'editable' +p39152 +I01 +sS'value' +p39153 +(lp39154 +S'TaskTemplate' +p39155 +asssS'description' +p39156 +(dp39157 +S'editable' +p39158 +I01 +sS'value' +p39159 +g47 +sssS'created_by' +p39160 +(dp39161 +S'mandatory' +p39162 +(dp39163 +S'editable' +p39164 +I00 +sS'value' +p39165 +I00 +ssS'name' +p39166 +(dp39167 +S'editable' +p39168 +I01 +sS'value' +p39169 +S'Created by' +p39170 +ssS'data_type' +p39171 +(dp39172 +S'editable' +p39173 +I00 +sS'value' +p39174 +S'entity' +p39175 +ssS'entity_type' +p39176 +(dp39177 +S'editable' +p39178 +I00 +sS'value' +p39179 +S'Scene' +p39180 +ssS'editable' +p39181 +(dp39182 +S'editable' +p39183 +I00 +sS'value' +p39184 +I00 +ssS'unique' +p39185 +(dp39186 +S'editable' +p39187 +I00 +sS'value' +p39188 +I00 +ssS'properties' +p39189 +(dp39190 +S'default_value' +p39191 +(dp39192 +S'editable' +p39193 +I00 +sS'value' +p39194 +NssS'summary_default' +p39195 +(dp39196 +S'editable' +p39197 +I01 +sS'value' +p39198 +S'none' +p39199 +ssS'valid_types' +p39200 +(dp39201 +S'editable' +p39202 +I01 +sS'value' +p39203 +(lp39204 +S'HumanUser' +p39205 +aS'ApiUser' +p39206 +asssS'description' +p39207 +(dp39208 +S'editable' +p39209 +I01 +sS'value' +p39210 +g47 +sssS'sg_status_list' +p39211 +(dp39212 +S'mandatory' +p39213 +(dp39214 +S'editable' +p39215 +I00 +sS'value' +p39216 +I00 +ssS'name' +p39217 +(dp39218 +S'editable' +p39219 +I01 +sS'value' +p39220 +S'Status' +p39221 +ssS'data_type' +p39222 +(dp39223 +S'editable' +p39224 +I00 +sS'value' +p39225 +S'status_list' +p39226 +ssS'entity_type' +p39227 +(dp39228 +S'editable' +p39229 +I00 +sS'value' +p39230 +S'Scene' +p39231 +ssS'editable' +p39232 +(dp39233 +S'editable' +p39234 +I00 +sS'value' +p39235 +I01 +ssS'unique' +p39236 +(dp39237 +S'editable' +p39238 +I00 +sS'value' +p39239 +I00 +ssS'properties' +p39240 +(dp39241 +S'default_value' +p39242 +(dp39243 +S'editable' +p39244 +I01 +sS'value' +p39245 +S'act' +p39246 +ssS'valid_values' +p39247 +(dp39248 +S'editable' +p39249 +I01 +sS'value' +p39250 +(lp39251 +S'act' +p39252 +aS'cbb' +p39253 +aS'cmpt' +p39254 +aS'omt' +p39255 +aS'hld' +p39256 +assS'summary_default' +p39257 +(dp39258 +S'editable' +p39259 +I01 +sS'value' +p39260 +S'status_list' +p39261 +sssS'description' +p39262 +(dp39263 +S'editable' +p39264 +I01 +sS'value' +p39265 +g47 +sssS'description' +p39266 +(dp39267 +S'mandatory' +p39268 +(dp39269 +S'editable' +p39270 +I00 +sS'value' +p39271 +I00 +ssS'name' +p39272 +(dp39273 +S'editable' +p39274 +I01 +sS'value' +p39275 +S'Description' +p39276 +ssS'data_type' +p39277 +(dp39278 +S'editable' +p39279 +I00 +sS'value' +p39280 +S'text' +p39281 +ssS'entity_type' +p39282 +(dp39283 +S'editable' +p39284 +I00 +sS'value' +p39285 +S'Scene' +p39286 +ssS'editable' +p39287 +(dp39288 +S'editable' +p39289 +I00 +sS'value' +p39290 +I01 +ssS'unique' +p39291 +(dp39292 +S'editable' +p39293 +I00 +sS'value' +p39294 +I00 +ssS'properties' +p39295 +(dp39296 +S'default_value' +p39297 +(dp39298 +S'editable' +p39299 +I00 +sS'value' +p39300 +NssS'summary_default' +p39301 +(dp39302 +S'editable' +p39303 +I01 +sS'value' +p39304 +S'none' +p39305 +sssS'description' +p39306 +(dp39307 +S'editable' +p39308 +I01 +sS'value' +p39309 +g47 +sssS'addressings_cc' +p39310 +(dp39311 +S'mandatory' +p39312 +(dp39313 +S'editable' +p39314 +I00 +sS'value' +p39315 +I00 +ssS'name' +p39316 +(dp39317 +S'editable' +p39318 +I01 +sS'value' +p39319 +S'Cc' +p39320 +ssS'data_type' +p39321 +(dp39322 +S'editable' +p39323 +I00 +sS'value' +p39324 +S'multi_entity' +p39325 +ssS'entity_type' +p39326 +(dp39327 +S'editable' +p39328 +I00 +sS'value' +p39329 +S'Scene' +p39330 +ssS'editable' +p39331 +(dp39332 +S'editable' +p39333 +I00 +sS'value' +p39334 +I01 +ssS'unique' +p39335 +(dp39336 +S'editable' +p39337 +I00 +sS'value' +p39338 +I00 +ssS'properties' +p39339 +(dp39340 +S'default_value' +p39341 +(dp39342 +S'editable' +p39343 +I00 +sS'value' +p39344 +NssS'summary_default' +p39345 +(dp39346 +S'editable' +p39347 +I01 +sS'value' +p39348 +S'none' +p39349 +ssS'valid_types' +p39350 +(dp39351 +S'editable' +p39352 +I01 +sS'value' +p39353 +(lp39354 +S'Group' +p39355 +aS'HumanUser' +p39356 +asssS'description' +p39357 +(dp39358 +S'editable' +p39359 +I01 +sS'value' +p39360 +g47 +sssS'sg_scene_type' +p39361 +(dp39362 +S'mandatory' +p39363 +(dp39364 +S'editable' +p39365 +I00 +sS'value' +p39366 +I00 +ssS'name' +p39367 +(dp39368 +S'editable' +p39369 +I01 +sS'value' +p39370 +S'Type' +p39371 +ssS'data_type' +p39372 +(dp39373 +S'editable' +p39374 +I00 +sS'value' +p39375 +S'list' +p39376 +ssS'entity_type' +p39377 +(dp39378 +S'editable' +p39379 +I00 +sS'value' +p39380 +S'Scene' +p39381 +ssS'editable' +p39382 +(dp39383 +S'editable' +p39384 +I00 +sS'value' +p39385 +I01 +ssS'unique' +p39386 +(dp39387 +S'editable' +p39388 +I00 +sS'value' +p39389 +I00 +ssS'properties' +p39390 +(dp39391 +S'default_value' +p39392 +(dp39393 +S'editable' +p39394 +I00 +sS'value' +p39395 +NssS'valid_values' +p39396 +(dp39397 +S'editable' +p39398 +I01 +sS'value' +p39399 +(lp39400 +ssS'summary_default' +p39401 +(dp39402 +S'editable' +p39403 +I01 +sS'value' +p39404 +S'none' +p39405 +sssS'description' +p39406 +(dp39407 +S'editable' +p39408 +I01 +sS'value' +p39409 +g47 +sssS'shoot_days' +p39410 +(dp39411 +S'mandatory' +p39412 +(dp39413 +S'editable' +p39414 +I00 +sS'value' +p39415 +I00 +ssS'name' +p39416 +(dp39417 +S'editable' +p39418 +I01 +sS'value' +p39419 +S'Shoot Days' +p39420 +ssS'data_type' +p39421 +(dp39422 +S'editable' +p39423 +I00 +sS'value' +p39424 +S'multi_entity' +p39425 +ssS'entity_type' +p39426 +(dp39427 +S'editable' +p39428 +I00 +sS'value' +p39429 +S'Scene' +p39430 +ssS'editable' +p39431 +(dp39432 +S'editable' +p39433 +I00 +sS'value' +p39434 +I01 +ssS'unique' +p39435 +(dp39436 +S'editable' +p39437 +I00 +sS'value' +p39438 +I00 +ssS'properties' +p39439 +(dp39440 +S'default_value' +p39441 +(dp39442 +S'editable' +p39443 +I00 +sS'value' +p39444 +NssS'summary_default' +p39445 +(dp39446 +S'editable' +p39447 +I01 +sS'value' +p39448 +S'none' +p39449 +ssS'valid_types' +p39450 +(dp39451 +S'editable' +p39452 +I01 +sS'value' +p39453 +(lp39454 +S'ShootDay' +p39455 +asssS'description' +p39456 +(dp39457 +S'editable' +p39458 +I01 +sS'value' +p39459 +g47 +sssS'step_0' +p39460 +(dp39461 +S'mandatory' +p39462 +(dp39463 +S'editable' +p39464 +I00 +sS'value' +p39465 +I00 +ssS'name' +p39466 +(dp39467 +S'editable' +p39468 +I01 +sS'value' +p39469 +S'ALL TASKS' +p39470 +ssS'data_type' +p39471 +(dp39472 +S'editable' +p39473 +I00 +sS'value' +p39474 +S'pivot_column' +p39475 +ssS'entity_type' +p39476 +(dp39477 +S'editable' +p39478 +I00 +sS'value' +p39479 +S'Scene' +p39480 +ssS'editable' +p39481 +(dp39482 +S'editable' +p39483 +I00 +sS'value' +p39484 +I00 +ssS'unique' +p39485 +(dp39486 +S'editable' +p39487 +I00 +sS'value' +p39488 +I00 +ssS'properties' +p39489 +(dp39490 +S'default_value' +p39491 +(dp39492 +S'editable' +p39493 +I00 +sS'value' +p39494 +NssS'summary_default' +p39495 +(dp39496 +S'editable' +p39497 +I00 +sS'value' +p39498 +S'none' +p39499 +sssS'description' +p39500 +(dp39501 +S'editable' +p39502 +I01 +sS'value' +p39503 +g47 +sssS'assets' +p39504 +(dp39505 +S'mandatory' +p39506 +(dp39507 +S'editable' +p39508 +I00 +sS'value' +p39509 +I00 +ssS'name' +p39510 +(dp39511 +S'editable' +p39512 +I01 +sS'value' +p39513 +S'Assets' +p39514 +ssS'data_type' +p39515 +(dp39516 +S'editable' +p39517 +I00 +sS'value' +p39518 +S'multi_entity' +p39519 +ssS'entity_type' +p39520 +(dp39521 +S'editable' +p39522 +I00 +sS'value' +p39523 +S'Scene' +p39524 +ssS'editable' +p39525 +(dp39526 +S'editable' +p39527 +I00 +sS'value' +p39528 +I01 +ssS'unique' +p39529 +(dp39530 +S'editable' +p39531 +I00 +sS'value' +p39532 +I00 +ssS'properties' +p39533 +(dp39534 +S'default_value' +p39535 +(dp39536 +S'editable' +p39537 +I00 +sS'value' +p39538 +NssS'summary_default' +p39539 +(dp39540 +S'editable' +p39541 +I01 +sS'value' +p39542 +S'none' +p39543 +ssS'valid_types' +p39544 +(dp39545 +S'editable' +p39546 +I01 +sS'value' +p39547 +(lp39548 +S'Asset' +p39549 +asssS'description' +p39550 +(dp39551 +S'editable' +p39552 +I01 +sS'value' +p39553 +g47 +sssS'created_at' +p39554 +(dp39555 +S'mandatory' +p39556 +(dp39557 +S'editable' +p39558 +I00 +sS'value' +p39559 +I00 +ssS'name' +p39560 +(dp39561 +S'editable' +p39562 +I01 +sS'value' +p39563 +S'Date Created' +p39564 +ssS'data_type' +p39565 +(dp39566 +S'editable' +p39567 +I00 +sS'value' +p39568 +S'date_time' +p39569 +ssS'entity_type' +p39570 +(dp39571 +S'editable' +p39572 +I00 +sS'value' +p39573 +S'Scene' +p39574 +ssS'editable' +p39575 +(dp39576 +S'editable' +p39577 +I00 +sS'value' +p39578 +I00 +ssS'unique' +p39579 +(dp39580 +S'editable' +p39581 +I00 +sS'value' +p39582 +I00 +ssS'properties' +p39583 +(dp39584 +S'default_value' +p39585 +(dp39586 +S'editable' +p39587 +I00 +sS'value' +p39588 +NssS'summary_default' +p39589 +(dp39590 +S'editable' +p39591 +I01 +sS'value' +p39592 +S'none' +p39593 +sssS'description' +p39594 +(dp39595 +S'editable' +p39596 +I01 +sS'value' +p39597 +g47 +sssS'project' +p39598 +(dp39599 +S'mandatory' +p39600 +(dp39601 +S'editable' +p39602 +I00 +sS'value' +p39603 +I00 +ssS'name' +p39604 +(dp39605 +S'editable' +p39606 +I01 +sS'value' +p39607 +S'Project' +p39608 +ssS'data_type' +p39609 +(dp39610 +S'editable' +p39611 +I00 +sS'value' +p39612 +S'entity' +p39613 +ssS'entity_type' +p39614 +(dp39615 +S'editable' +p39616 +I00 +sS'value' +p39617 +S'Scene' +p39618 +ssS'editable' +p39619 +(dp39620 +S'editable' +p39621 +I00 +sS'value' +p39622 +I01 +ssS'unique' +p39623 +(dp39624 +S'editable' +p39625 +I00 +sS'value' +p39626 +I00 +ssS'properties' +p39627 +(dp39628 +S'default_value' +p39629 +(dp39630 +S'editable' +p39631 +I00 +sS'value' +p39632 +NssS'summary_default' +p39633 +(dp39634 +S'editable' +p39635 +I01 +sS'value' +p39636 +S'none' +p39637 +ssS'valid_types' +p39638 +(dp39639 +S'editable' +p39640 +I01 +sS'value' +p39641 +(lp39642 +S'Project' +p39643 +asssS'description' +p39644 +(dp39645 +S'editable' +p39646 +I01 +sS'value' +p39647 +g47 +sssS'filmstrip_image' +p39648 +(dp39649 +S'mandatory' +p39650 +(dp39651 +S'editable' +p39652 +I00 +sS'value' +p39653 +I00 +ssS'name' +p39654 +(dp39655 +S'editable' +p39656 +I01 +sS'value' +p39657 +S'Filmstrip Thumbnail' +p39658 +ssS'data_type' +p39659 +(dp39660 +S'editable' +p39661 +I00 +sS'value' +p39662 +S'image' +p39663 +ssS'entity_type' +p39664 +(dp39665 +S'editable' +p39666 +I00 +sS'value' +p39667 +S'Scene' +p39668 +ssS'editable' +p39669 +(dp39670 +S'editable' +p39671 +I00 +sS'value' +p39672 +I01 +ssS'unique' +p39673 +(dp39674 +S'editable' +p39675 +I00 +sS'value' +p39676 +I00 +ssS'properties' +p39677 +(dp39678 +S'default_value' +p39679 +(dp39680 +S'editable' +p39681 +I00 +sS'value' +p39682 +NssS'summary_default' +p39683 +(dp39684 +S'editable' +p39685 +I01 +sS'value' +p39686 +S'none' +p39687 +sssS'description' +p39688 +(dp39689 +S'editable' +p39690 +I01 +sS'value' +p39691 +g47 +sssS'shots' +p39692 +(dp39693 +S'mandatory' +p39694 +(dp39695 +S'editable' +p39696 +I00 +sS'value' +p39697 +I00 +ssS'name' +p39698 +(dp39699 +S'editable' +p39700 +I01 +sS'value' +p39701 +S'Shots' +p39702 +ssS'data_type' +p39703 +(dp39704 +S'editable' +p39705 +I00 +sS'value' +p39706 +S'multi_entity' +p39707 +ssS'entity_type' +p39708 +(dp39709 +S'editable' +p39710 +I00 +sS'value' +p39711 +S'Scene' +p39712 +ssS'editable' +p39713 +(dp39714 +S'editable' +p39715 +I00 +sS'value' +p39716 +I01 +ssS'unique' +p39717 +(dp39718 +S'editable' +p39719 +I00 +sS'value' +p39720 +I00 +ssS'properties' +p39721 +(dp39722 +S'default_value' +p39723 +(dp39724 +S'editable' +p39725 +I00 +sS'value' +p39726 +NssS'summary_default' +p39727 +(dp39728 +S'editable' +p39729 +I01 +sS'value' +p39730 +S'none' +p39731 +ssS'valid_types' +p39732 +(dp39733 +S'editable' +p39734 +I01 +sS'value' +p39735 +(lp39736 +S'Shot' +p39737 +asssS'description' +p39738 +(dp39739 +S'editable' +p39740 +I01 +sS'value' +p39741 +g47 +sssS'tag_list' +p39742 +(dp39743 +S'mandatory' +p39744 +(dp39745 +S'editable' +p39746 +I00 +sS'value' +p39747 +I00 +ssS'name' +p39748 +(dp39749 +S'editable' +p39750 +I01 +sS'value' +p39751 +S'Tags' +p39752 +ssS'data_type' +p39753 +(dp39754 +S'editable' +p39755 +I00 +sS'value' +p39756 +S'tag_list' +p39757 +ssS'entity_type' +p39758 +(dp39759 +S'editable' +p39760 +I00 +sS'value' +p39761 +S'Scene' +p39762 +ssS'editable' +p39763 +(dp39764 +S'editable' +p39765 +I00 +sS'value' +p39766 +I01 +ssS'unique' +p39767 +(dp39768 +S'editable' +p39769 +I00 +sS'value' +p39770 +I00 +ssS'properties' +p39771 +(dp39772 +S'default_value' +p39773 +(dp39774 +S'editable' +p39775 +I00 +sS'value' +p39776 +NssS'summary_default' +p39777 +(dp39778 +S'editable' +p39779 +I01 +sS'value' +p39780 +S'none' +p39781 +ssS'valid_types' +p39782 +(dp39783 +S'editable' +p39784 +I01 +sS'value' +p39785 +(lp39786 +S'Tag' +p39787 +asssS'description' +p39788 +(dp39789 +S'editable' +p39790 +I01 +sS'value' +p39791 +g47 +sssS'notes' +p39792 +(dp39793 +S'mandatory' +p39794 +(dp39795 +S'editable' +p39796 +I00 +sS'value' +p39797 +I00 +ssS'name' +p39798 +(dp39799 +S'editable' +p39800 +I01 +sS'value' +p39801 +S'Notes' +p39802 +ssS'data_type' +p39803 +(dp39804 +S'editable' +p39805 +I00 +sS'value' +p39806 +S'multi_entity' +p39807 +ssS'entity_type' +p39808 +(dp39809 +S'editable' +p39810 +I00 +sS'value' +p39811 +S'Scene' +p39812 +ssS'editable' +p39813 +(dp39814 +S'editable' +p39815 +I00 +sS'value' +p39816 +I01 +ssS'unique' +p39817 +(dp39818 +S'editable' +p39819 +I00 +sS'value' +p39820 +I00 +ssS'properties' +p39821 +(dp39822 +S'default_value' +p39823 +(dp39824 +S'editable' +p39825 +I00 +sS'value' +p39826 +NssS'summary_default' +p39827 +(dp39828 +S'editable' +p39829 +I01 +sS'value' +p39830 +S'none' +p39831 +ssS'valid_types' +p39832 +(dp39833 +S'editable' +p39834 +I01 +sS'value' +p39835 +(lp39836 +S'Note' +p39837 +asssS'description' +p39838 +(dp39839 +S'editable' +p39840 +I01 +sS'value' +p39841 +g47 +ssssS'Project' +p39842 +(dp39843 +S'step_14' +p39844 +(dp39845 +S'mandatory' +p39846 +(dp39847 +S'editable' +p39848 +I00 +sS'value' +p39849 +I00 +ssS'name' +p39850 +(dp39851 +S'editable' +p39852 +I01 +sS'value' +p39853 +S'Editorial' +p39854 +ssS'data_type' +p39855 +(dp39856 +S'editable' +p39857 +I00 +sS'value' +p39858 +S'pivot_column' +p39859 +ssS'entity_type' +p39860 +(dp39861 +S'editable' +p39862 +I00 +sS'value' +p39863 +S'Project' +p39864 +ssS'editable' +p39865 +(dp39866 +S'editable' +p39867 +I00 +sS'value' +p39868 +I00 +ssS'unique' +p39869 +(dp39870 +S'editable' +p39871 +I00 +sS'value' +p39872 +I00 +ssS'properties' +p39873 +(dp39874 +S'default_value' +p39875 +(dp39876 +S'editable' +p39877 +I00 +sS'value' +p39878 +NssS'summary_default' +p39879 +(dp39880 +S'editable' +p39881 +I00 +sS'value' +p39882 +S'none' +p39883 +sssS'description' +p39884 +(dp39885 +S'editable' +p39886 +I01 +sS'value' +p39887 +g47 +sssS'tasks' +p39888 +(dp39889 +S'mandatory' +p39890 +(dp39891 +S'editable' +p39892 +I00 +sS'value' +p39893 +I00 +ssS'name' +p39894 +(dp39895 +S'editable' +p39896 +I01 +sS'value' +p39897 +S'Tasks' +p39898 +ssS'data_type' +p39899 +(dp39900 +S'editable' +p39901 +I00 +sS'value' +p39902 +S'multi_entity' +p39903 +ssS'entity_type' +p39904 +(dp39905 +S'editable' +p39906 +I00 +sS'value' +p39907 +S'Project' +p39908 +ssS'editable' +p39909 +(dp39910 +S'editable' +p39911 +I00 +sS'value' +p39912 +I01 +ssS'unique' +p39913 +(dp39914 +S'editable' +p39915 +I00 +sS'value' +p39916 +I00 +ssS'properties' +p39917 +(dp39918 +S'default_value' +p39919 +(dp39920 +S'editable' +p39921 +I00 +sS'value' +p39922 +NssS'summary_default' +p39923 +(dp39924 +S'editable' +p39925 +I01 +sS'value' +p39926 +S'none' +p39927 +ssS'valid_types' +p39928 +(dp39929 +S'editable' +p39930 +I01 +sS'value' +p39931 +(lp39932 +S'Task' +p39933 +asssS'description' +p39934 +(dp39935 +S'editable' +p39936 +I01 +sS'value' +p39937 +g47 +sssS'color' +p39938 +(dp39939 +S'mandatory' +p39940 +(dp39941 +S'editable' +p39942 +I00 +sS'value' +p39943 +I00 +ssS'name' +p39944 +(dp39945 +S'editable' +p39946 +I01 +sS'value' +p39947 +S'Color' +p39948 +ssS'data_type' +p39949 +(dp39950 +S'editable' +p39951 +I00 +sS'value' +p39952 +S'color' +p39953 +ssS'entity_type' +p39954 +(dp39955 +S'editable' +p39956 +I00 +sS'value' +p39957 +S'Project' +p39958 +ssS'editable' +p39959 +(dp39960 +S'editable' +p39961 +I00 +sS'value' +p39962 +I01 +ssS'unique' +p39963 +(dp39964 +S'editable' +p39965 +I00 +sS'value' +p39966 +I00 +ssS'properties' +p39967 +(dp39968 +S'default_value' +p39969 +(dp39970 +S'editable' +p39971 +I00 +sS'value' +p39972 +NssS'summary_default' +p39973 +(dp39974 +S'editable' +p39975 +I01 +sS'value' +p39976 +S'none' +p39977 +sssS'description' +p39978 +(dp39979 +S'editable' +p39980 +I01 +sS'value' +p39981 +g47 +sssS'image' +p39982 +(dp39983 +S'mandatory' +p39984 +(dp39985 +S'editable' +p39986 +I00 +sS'value' +p39987 +I00 +ssS'name' +p39988 +(dp39989 +S'editable' +p39990 +I01 +sS'value' +p39991 +S'Thumbnail' +p39992 +ssS'data_type' +p39993 +(dp39994 +S'editable' +p39995 +I00 +sS'value' +p39996 +S'image' +p39997 +ssS'entity_type' +p39998 +(dp39999 +S'editable' +p40000 +I00 +sS'value' +p40001 +S'Project' +p40002 +ssS'editable' +p40003 +(dp40004 +S'editable' +p40005 +I00 +sS'value' +p40006 +I01 +ssS'unique' +p40007 +(dp40008 +S'editable' +p40009 +I00 +sS'value' +p40010 +I00 +ssS'properties' +p40011 +(dp40012 +S'default_value' +p40013 +(dp40014 +S'editable' +p40015 +I00 +sS'value' +p40016 +NssS'summary_default' +p40017 +(dp40018 +S'editable' +p40019 +I01 +sS'value' +p40020 +S'none' +p40021 +sssS'description' +p40022 +(dp40023 +S'editable' +p40024 +I01 +sS'value' +p40025 +g47 +sssS'updated_at' +p40026 +(dp40027 +S'mandatory' +p40028 +(dp40029 +S'editable' +p40030 +I00 +sS'value' +p40031 +I00 +ssS'name' +p40032 +(dp40033 +S'editable' +p40034 +I01 +sS'value' +p40035 +S'Date Updated' +p40036 +ssS'data_type' +p40037 +(dp40038 +S'editable' +p40039 +I00 +sS'value' +p40040 +S'date_time' +p40041 +ssS'entity_type' +p40042 +(dp40043 +S'editable' +p40044 +I00 +sS'value' +p40045 +S'Project' +p40046 +ssS'editable' +p40047 +(dp40048 +S'editable' +p40049 +I00 +sS'value' +p40050 +I00 +ssS'unique' +p40051 +(dp40052 +S'editable' +p40053 +I00 +sS'value' +p40054 +I00 +ssS'properties' +p40055 +(dp40056 +S'default_value' +p40057 +(dp40058 +S'editable' +p40059 +I00 +sS'value' +p40060 +NssS'summary_default' +p40061 +(dp40062 +S'editable' +p40063 +I01 +sS'value' +p40064 +S'none' +p40065 +sssS'description' +p40066 +(dp40067 +S'editable' +p40068 +I01 +sS'value' +p40069 +g47 +sssS'sg_projectnumber' +p40070 +(dp40071 +S'mandatory' +p40072 +(dp40073 +S'editable' +p40074 +I00 +sS'value' +p40075 +I00 +ssS'name' +p40076 +(dp40077 +S'editable' +p40078 +I01 +sS'value' +p40079 +S'projectnumber' +p40080 +ssS'data_type' +p40081 +(dp40082 +S'editable' +p40083 +I00 +sS'value' +p40084 +S'text' +p40085 +ssS'entity_type' +p40086 +(dp40087 +S'editable' +p40088 +I00 +sS'value' +p40089 +S'Project' +p40090 +ssS'editable' +p40091 +(dp40092 +S'editable' +p40093 +I00 +sS'value' +p40094 +I01 +ssS'unique' +p40095 +(dp40096 +S'editable' +p40097 +I00 +sS'value' +p40098 +I00 +ssS'properties' +p40099 +(dp40100 +S'default_value' +p40101 +(dp40102 +S'editable' +p40103 +I00 +sS'value' +p40104 +NssS'summary_default' +p40105 +(dp40106 +S'editable' +p40107 +I01 +sS'value' +p40108 +S'none' +p40109 +sssS'description' +p40110 +(dp40111 +S'editable' +p40112 +I01 +sS'value' +p40113 +g47 +sssS'duration' +p40114 +(dp40115 +S'mandatory' +p40116 +(dp40117 +S'editable' +p40118 +I00 +sS'value' +p40119 +I00 +ssS'name' +p40120 +(dp40121 +S'editable' +p40122 +I01 +sS'value' +p40123 +S'Duration' +p40124 +ssS'data_type' +p40125 +(dp40126 +S'editable' +p40127 +I00 +sS'value' +p40128 +S'number' +p40129 +ssS'entity_type' +p40130 +(dp40131 +S'editable' +p40132 +I00 +sS'value' +p40133 +S'Project' +p40134 +ssS'editable' +p40135 +(dp40136 +S'editable' +p40137 +I00 +sS'value' +p40138 +I00 +ssS'unique' +p40139 +(dp40140 +S'editable' +p40141 +I00 +sS'value' +p40142 +I00 +ssS'properties' +p40143 +(dp40144 +S'default_value' +p40145 +(dp40146 +S'editable' +p40147 +I00 +sS'value' +p40148 +NssS'summary_default' +p40149 +(dp40150 +S'editable' +p40151 +I01 +sS'value' +p40152 +S'none' +p40153 +sssS'description' +p40154 +(dp40155 +S'editable' +p40156 +I01 +sS'value' +p40157 +g47 +sssS'tank_name' +p40158 +(dp40159 +S'mandatory' +p40160 +(dp40161 +S'editable' +p40162 +I00 +sS'value' +p40163 +I00 +ssS'name' +p40164 +(dp40165 +S'editable' +p40166 +I01 +sS'value' +p40167 +S'Tank Name' +p40168 +ssS'data_type' +p40169 +(dp40170 +S'editable' +p40171 +I00 +sS'value' +p40172 +S'text' +p40173 +ssS'entity_type' +p40174 +(dp40175 +S'editable' +p40176 +I00 +sS'value' +p40177 +S'Project' +p40178 +ssS'editable' +p40179 +(dp40180 +S'editable' +p40181 +I00 +sS'value' +p40182 +I01 +ssS'unique' +p40183 +(dp40184 +S'editable' +p40185 +I00 +sS'value' +p40186 +I00 +ssS'properties' +p40187 +(dp40188 +S'default_value' +p40189 +(dp40190 +S'editable' +p40191 +I00 +sS'value' +p40192 +NssS'summary_default' +p40193 +(dp40194 +S'editable' +p40195 +I01 +sS'value' +p40196 +S'none' +p40197 +sssS'description' +p40198 +(dp40199 +S'editable' +p40200 +I01 +sS'value' +p40201 +g47 +sssS'billboard' +p40202 +(dp40203 +S'mandatory' +p40204 +(dp40205 +S'editable' +p40206 +I00 +sS'value' +p40207 +I00 +ssS'name' +p40208 +(dp40209 +S'editable' +p40210 +I01 +sS'value' +p40211 +S'Billboard' +p40212 +ssS'data_type' +p40213 +(dp40214 +S'editable' +p40215 +I00 +sS'value' +p40216 +S'url' +p40217 +ssS'entity_type' +p40218 +(dp40219 +S'editable' +p40220 +I00 +sS'value' +p40221 +S'Project' +p40222 +ssS'editable' +p40223 +(dp40224 +S'editable' +p40225 +I00 +sS'value' +p40226 +I01 +ssS'unique' +p40227 +(dp40228 +S'editable' +p40229 +I00 +sS'value' +p40230 +I00 +ssS'properties' +p40231 +(dp40232 +S'default_value' +p40233 +(dp40234 +S'editable' +p40235 +I00 +sS'value' +p40236 +NssS'open_in_new_window' +p40237 +(dp40238 +S'editable' +p40239 +I00 +sS'value' +p40240 +I01 +ssS'summary_default' +p40241 +(dp40242 +S'editable' +p40243 +I00 +sS'value' +p40244 +S'none' +p40245 +sssS'description' +p40246 +(dp40247 +S'editable' +p40248 +I01 +sS'value' +p40249 +g47 +sssS'cached_display_name' +p40250 +(dp40251 +S'mandatory' +p40252 +(dp40253 +S'editable' +p40254 +I00 +sS'value' +p40255 +I00 +ssS'name' +p40256 +(dp40257 +S'editable' +p40258 +I01 +sS'value' +p40259 +S'Cached Display Name' +p40260 +ssS'data_type' +p40261 +(dp40262 +S'editable' +p40263 +I00 +sS'value' +p40264 +S'text' +p40265 +ssS'entity_type' +p40266 +(dp40267 +S'editable' +p40268 +I00 +sS'value' +p40269 +S'Project' +p40270 +ssS'editable' +p40271 +(dp40272 +S'editable' +p40273 +I00 +sS'value' +p40274 +I01 +ssS'unique' +p40275 +(dp40276 +S'editable' +p40277 +I00 +sS'value' +p40278 +I00 +ssS'properties' +p40279 +(dp40280 +S'default_value' +p40281 +(dp40282 +S'editable' +p40283 +I00 +sS'value' +p40284 +NssS'summary_default' +p40285 +(dp40286 +S'editable' +p40287 +I00 +sS'value' +p40288 +S'none' +p40289 +sssS'description' +p40290 +(dp40291 +S'editable' +p40292 +I01 +sS'value' +p40293 +g47 +sssS'id' +p40294 +(dp40295 +S'mandatory' +p40296 +(dp40297 +S'editable' +p40298 +I00 +sS'value' +p40299 +I00 +ssS'name' +p40300 +(dp40301 +S'editable' +p40302 +I01 +sS'value' +p40303 +S'Id' +p40304 +ssS'data_type' +p40305 +(dp40306 +S'editable' +p40307 +I00 +sS'value' +p40308 +S'number' +p40309 +ssS'entity_type' +p40310 +(dp40311 +S'editable' +p40312 +I00 +sS'value' +p40313 +S'Project' +p40314 +ssS'editable' +p40315 +(dp40316 +S'editable' +p40317 +I00 +sS'value' +p40318 +I00 +ssS'unique' +p40319 +(dp40320 +S'editable' +p40321 +I00 +sS'value' +p40322 +I00 +ssS'properties' +p40323 +(dp40324 +S'default_value' +p40325 +(dp40326 +S'editable' +p40327 +I00 +sS'value' +p40328 +NssS'summary_default' +p40329 +(dp40330 +S'editable' +p40331 +I01 +sS'value' +p40332 +S'none' +p40333 +sssS'description' +p40334 +(dp40335 +S'editable' +p40336 +I01 +sS'value' +p40337 +g47 +sssS'updated_by' +p40338 +(dp40339 +S'mandatory' +p40340 +(dp40341 +S'editable' +p40342 +I00 +sS'value' +p40343 +I00 +ssS'name' +p40344 +(dp40345 +S'editable' +p40346 +I01 +sS'value' +p40347 +S'Updated by' +p40348 +ssS'data_type' +p40349 +(dp40350 +S'editable' +p40351 +I00 +sS'value' +p40352 +S'entity' +p40353 +ssS'entity_type' +p40354 +(dp40355 +S'editable' +p40356 +I00 +sS'value' +p40357 +S'Project' +p40358 +ssS'editable' +p40359 +(dp40360 +S'editable' +p40361 +I00 +sS'value' +p40362 +I00 +ssS'unique' +p40363 +(dp40364 +S'editable' +p40365 +I00 +sS'value' +p40366 +I00 +ssS'properties' +p40367 +(dp40368 +S'default_value' +p40369 +(dp40370 +S'editable' +p40371 +I00 +sS'value' +p40372 +NssS'summary_default' +p40373 +(dp40374 +S'editable' +p40375 +I01 +sS'value' +p40376 +S'none' +p40377 +ssS'valid_types' +p40378 +(dp40379 +S'editable' +p40380 +I01 +sS'value' +p40381 +(lp40382 +S'HumanUser' +p40383 +aS'ApiUser' +p40384 +asssS'description' +p40385 +(dp40386 +S'editable' +p40387 +I01 +sS'value' +p40388 +g47 +sssS'phases' +p40389 +(dp40390 +S'mandatory' +p40391 +(dp40392 +S'editable' +p40393 +I00 +sS'value' +p40394 +I00 +ssS'name' +p40395 +(dp40396 +S'editable' +p40397 +I01 +sS'value' +p40398 +S'Phases' +p40399 +ssS'data_type' +p40400 +(dp40401 +S'editable' +p40402 +I00 +sS'value' +p40403 +S'multi_entity' +p40404 +ssS'entity_type' +p40405 +(dp40406 +S'editable' +p40407 +I00 +sS'value' +p40408 +S'Project' +p40409 +ssS'editable' +p40410 +(dp40411 +S'editable' +p40412 +I00 +sS'value' +p40413 +I01 +ssS'unique' +p40414 +(dp40415 +S'editable' +p40416 +I00 +sS'value' +p40417 +I00 +ssS'properties' +p40418 +(dp40419 +S'default_value' +p40420 +(dp40421 +S'editable' +p40422 +I00 +sS'value' +p40423 +NssS'summary_default' +p40424 +(dp40425 +S'editable' +p40426 +I00 +sS'value' +p40427 +S'none' +p40428 +ssS'valid_types' +p40429 +(dp40430 +S'editable' +p40431 +I00 +sS'value' +p40432 +(lp40433 +S'Phase' +p40434 +asssS'description' +p40435 +(dp40436 +S'editable' +p40437 +I01 +sS'value' +p40438 +g47 +sssS'task_template' +p40439 +(dp40440 +S'mandatory' +p40441 +(dp40442 +S'editable' +p40443 +I00 +sS'value' +p40444 +I00 +ssS'name' +p40445 +(dp40446 +S'editable' +p40447 +I01 +sS'value' +p40448 +S'Task Template' +p40449 +ssS'data_type' +p40450 +(dp40451 +S'editable' +p40452 +I00 +sS'value' +p40453 +S'entity' +p40454 +ssS'entity_type' +p40455 +(dp40456 +S'editable' +p40457 +I00 +sS'value' +p40458 +S'Project' +p40459 +ssS'editable' +p40460 +(dp40461 +S'editable' +p40462 +I00 +sS'value' +p40463 +I01 +ssS'unique' +p40464 +(dp40465 +S'editable' +p40466 +I00 +sS'value' +p40467 +I00 +ssS'properties' +p40468 +(dp40469 +S'default_value' +p40470 +(dp40471 +S'editable' +p40472 +I00 +sS'value' +p40473 +NssS'summary_default' +p40474 +(dp40475 +S'editable' +p40476 +I01 +sS'value' +p40477 +S'none' +p40478 +ssS'valid_types' +p40479 +(dp40480 +S'editable' +p40481 +I01 +sS'value' +p40482 +(lp40483 +S'TaskTemplate' +p40484 +asssS'description' +p40485 +(dp40486 +S'editable' +p40487 +I01 +sS'value' +p40488 +g47 +sssS'created_by' +p40489 +(dp40490 +S'mandatory' +p40491 +(dp40492 +S'editable' +p40493 +I00 +sS'value' +p40494 +I00 +ssS'name' +p40495 +(dp40496 +S'editable' +p40497 +I01 +sS'value' +p40498 +S'Created by' +p40499 +ssS'data_type' +p40500 +(dp40501 +S'editable' +p40502 +I00 +sS'value' +p40503 +S'entity' +p40504 +ssS'entity_type' +p40505 +(dp40506 +S'editable' +p40507 +I00 +sS'value' +p40508 +S'Project' +p40509 +ssS'editable' +p40510 +(dp40511 +S'editable' +p40512 +I00 +sS'value' +p40513 +I00 +ssS'unique' +p40514 +(dp40515 +S'editable' +p40516 +I00 +sS'value' +p40517 +I00 +ssS'properties' +p40518 +(dp40519 +S'default_value' +p40520 +(dp40521 +S'editable' +p40522 +I00 +sS'value' +p40523 +NssS'summary_default' +p40524 +(dp40525 +S'editable' +p40526 +I01 +sS'value' +p40527 +S'none' +p40528 +ssS'valid_types' +p40529 +(dp40530 +S'editable' +p40531 +I01 +sS'value' +p40532 +(lp40533 +S'HumanUser' +p40534 +aS'ApiUser' +p40535 +asssS'description' +p40536 +(dp40537 +S'editable' +p40538 +I01 +sS'value' +p40539 +g47 +sssS'sg_status' +p40540 +(dp40541 +S'mandatory' +p40542 +(dp40543 +S'editable' +p40544 +I00 +sS'value' +p40545 +I00 +ssS'name' +p40546 +(dp40547 +S'editable' +p40548 +I01 +sS'value' +p40549 +S'Status' +p40550 +ssS'data_type' +p40551 +(dp40552 +S'editable' +p40553 +I00 +sS'value' +p40554 +S'list' +p40555 +ssS'entity_type' +p40556 +(dp40557 +S'editable' +p40558 +I00 +sS'value' +p40559 +S'Project' +p40560 +ssS'editable' +p40561 +(dp40562 +S'editable' +p40563 +I00 +sS'value' +p40564 +I01 +ssS'unique' +p40565 +(dp40566 +S'editable' +p40567 +I00 +sS'value' +p40568 +I00 +ssS'properties' +p40569 +(dp40570 +S'default_value' +p40571 +(dp40572 +S'editable' +p40573 +I00 +sS'value' +p40574 +NssS'valid_values' +p40575 +(dp40576 +S'editable' +p40577 +I01 +sS'value' +p40578 +(lp40579 +S'Bidding' +p40580 +aS'Active' +p40581 +aS'Lost' +p40582 +aS'Hold' +p40583 +assS'summary_default' +p40584 +(dp40585 +S'editable' +p40586 +I01 +sS'value' +p40587 +S'none' +p40588 +sssS'description' +p40589 +(dp40590 +S'editable' +p40591 +I01 +sS'value' +p40592 +g47 +sssS'current_user_favorite' +p40593 +(dp40594 +S'mandatory' +p40595 +(dp40596 +S'editable' +p40597 +I00 +sS'value' +p40598 +I00 +ssS'name' +p40599 +(dp40600 +S'editable' +p40601 +I01 +sS'value' +p40602 +S'Favorite' +p40603 +ssS'data_type' +p40604 +(dp40605 +S'editable' +p40606 +I00 +sS'value' +p40607 +S'checkbox' +p40608 +ssS'entity_type' +p40609 +(dp40610 +S'editable' +p40611 +I00 +sS'value' +p40612 +S'Project' +p40613 +ssS'editable' +p40614 +(dp40615 +S'editable' +p40616 +I00 +sS'value' +p40617 +I01 +ssS'unique' +p40618 +(dp40619 +S'editable' +p40620 +I00 +sS'value' +p40621 +I00 +ssS'properties' +p40622 +(dp40623 +S'default_value' +p40624 +(dp40625 +S'editable' +p40626 +I00 +sS'value' +p40627 +NssS'summary_default' +p40628 +(dp40629 +S'editable' +p40630 +I01 +sS'value' +p40631 +S'none' +p40632 +sssS'description' +p40633 +(dp40634 +S'editable' +p40635 +I01 +sS'value' +p40636 +g47 +sssS'last_accessed_by_current_user' +p40637 +(dp40638 +S'mandatory' +p40639 +(dp40640 +S'editable' +p40641 +I00 +sS'value' +p40642 +I00 +ssS'name' +p40643 +(dp40644 +S'editable' +p40645 +I01 +sS'value' +p40646 +S'Last Accessed' +p40647 +ssS'data_type' +p40648 +(dp40649 +S'editable' +p40650 +I00 +sS'value' +p40651 +S'date_time' +p40652 +ssS'entity_type' +p40653 +(dp40654 +S'editable' +p40655 +I00 +sS'value' +p40656 +S'Project' +p40657 +ssS'editable' +p40658 +(dp40659 +S'editable' +p40660 +I00 +sS'value' +p40661 +I01 +ssS'unique' +p40662 +(dp40663 +S'editable' +p40664 +I00 +sS'value' +p40665 +I00 +ssS'properties' +p40666 +(dp40667 +S'default_value' +p40668 +(dp40669 +S'editable' +p40670 +I00 +sS'value' +p40671 +NssS'summary_default' +p40672 +(dp40673 +S'editable' +p40674 +I01 +sS'value' +p40675 +S'none' +p40676 +sssS'description' +p40677 +(dp40678 +S'editable' +p40679 +I01 +sS'value' +p40680 +g47 +sssS'start_date' +p40681 +(dp40682 +S'mandatory' +p40683 +(dp40684 +S'editable' +p40685 +I00 +sS'value' +p40686 +I00 +ssS'name' +p40687 +(dp40688 +S'editable' +p40689 +I01 +sS'value' +p40690 +S'Start Date' +p40691 +ssS'data_type' +p40692 +(dp40693 +S'editable' +p40694 +I00 +sS'value' +p40695 +S'date' +p40696 +ssS'entity_type' +p40697 +(dp40698 +S'editable' +p40699 +I00 +sS'value' +p40700 +S'Project' +p40701 +ssS'editable' +p40702 +(dp40703 +S'editable' +p40704 +I00 +sS'value' +p40705 +I00 +ssS'unique' +p40706 +(dp40707 +S'editable' +p40708 +I00 +sS'value' +p40709 +I00 +ssS'properties' +p40710 +(dp40711 +S'default_value' +p40712 +(dp40713 +S'editable' +p40714 +I00 +sS'value' +p40715 +NssS'summary_default' +p40716 +(dp40717 +S'editable' +p40718 +I01 +sS'value' +p40719 +S'none' +p40720 +sssS'description' +p40721 +(dp40722 +S'editable' +p40723 +I01 +sS'value' +p40724 +g47 +sssS'sg_description' +p40725 +(dp40726 +S'mandatory' +p40727 +(dp40728 +S'editable' +p40729 +I00 +sS'value' +p40730 +I00 +ssS'name' +p40731 +(dp40732 +S'editable' +p40733 +I01 +sS'value' +p40734 +S'Description' +p40735 +ssS'data_type' +p40736 +(dp40737 +S'editable' +p40738 +I00 +sS'value' +p40739 +S'text' +p40740 +ssS'entity_type' +p40741 +(dp40742 +S'editable' +p40743 +I00 +sS'value' +p40744 +S'Project' +p40745 +ssS'editable' +p40746 +(dp40747 +S'editable' +p40748 +I00 +sS'value' +p40749 +I01 +ssS'unique' +p40750 +(dp40751 +S'editable' +p40752 +I00 +sS'value' +p40753 +I00 +ssS'properties' +p40754 +(dp40755 +S'default_value' +p40756 +(dp40757 +S'editable' +p40758 +I00 +sS'value' +p40759 +NssS'summary_default' +p40760 +(dp40761 +S'editable' +p40762 +I01 +sS'value' +p40763 +S'none' +p40764 +sssS'description' +p40765 +(dp40766 +S'editable' +p40767 +I01 +sS'value' +p40768 +g47 +sssS'users' +p40769 +(dp40770 +S'mandatory' +p40771 +(dp40772 +S'editable' +p40773 +I00 +sS'value' +p40774 +I00 +ssS'name' +p40775 +(dp40776 +S'editable' +p40777 +I01 +sS'value' +p40778 +S'Users' +p40779 +ssS'data_type' +p40780 +(dp40781 +S'editable' +p40782 +I00 +sS'value' +p40783 +S'multi_entity' +p40784 +ssS'entity_type' +p40785 +(dp40786 +S'editable' +p40787 +I00 +sS'value' +p40788 +S'Project' +p40789 +ssS'editable' +p40790 +(dp40791 +S'editable' +p40792 +I00 +sS'value' +p40793 +I01 +ssS'unique' +p40794 +(dp40795 +S'editable' +p40796 +I00 +sS'value' +p40797 +I00 +ssS'properties' +p40798 +(dp40799 +S'default_value' +p40800 +(dp40801 +S'editable' +p40802 +I00 +sS'value' +p40803 +NssS'summary_default' +p40804 +(dp40805 +S'editable' +p40806 +I01 +sS'value' +p40807 +S'none' +p40808 +ssS'valid_types' +p40809 +(dp40810 +S'editable' +p40811 +I01 +sS'value' +p40812 +(lp40813 +S'HumanUser' +p40814 +asssS'description' +p40815 +(dp40816 +S'editable' +p40817 +I01 +sS'value' +p40818 +g47 +sssS'end_date' +p40819 +(dp40820 +S'mandatory' +p40821 +(dp40822 +S'editable' +p40823 +I00 +sS'value' +p40824 +I00 +ssS'name' +p40825 +(dp40826 +S'editable' +p40827 +I01 +sS'value' +p40828 +S'End Date' +p40829 +ssS'data_type' +p40830 +(dp40831 +S'editable' +p40832 +I00 +sS'value' +p40833 +S'date' +p40834 +ssS'entity_type' +p40835 +(dp40836 +S'editable' +p40837 +I00 +sS'value' +p40838 +S'Project' +p40839 +ssS'editable' +p40840 +(dp40841 +S'editable' +p40842 +I00 +sS'value' +p40843 +I00 +ssS'unique' +p40844 +(dp40845 +S'editable' +p40846 +I00 +sS'value' +p40847 +I00 +ssS'properties' +p40848 +(dp40849 +S'default_value' +p40850 +(dp40851 +S'editable' +p40852 +I00 +sS'value' +p40853 +NssS'summary_default' +p40854 +(dp40855 +S'editable' +p40856 +I01 +sS'value' +p40857 +S'none' +p40858 +sssS'description' +p40859 +(dp40860 +S'editable' +p40861 +I01 +sS'value' +p40862 +g47 +sssS'archived' +p40863 +(dp40864 +S'mandatory' +p40865 +(dp40866 +S'editable' +p40867 +I00 +sS'value' +p40868 +I00 +ssS'name' +p40869 +(dp40870 +S'editable' +p40871 +I01 +sS'value' +p40872 +S'Archived' +p40873 +ssS'data_type' +p40874 +(dp40875 +S'editable' +p40876 +I00 +sS'value' +p40877 +S'checkbox' +p40878 +ssS'entity_type' +p40879 +(dp40880 +S'editable' +p40881 +I00 +sS'value' +p40882 +S'Project' +p40883 +ssS'editable' +p40884 +(dp40885 +S'editable' +p40886 +I00 +sS'value' +p40887 +I01 +ssS'unique' +p40888 +(dp40889 +S'editable' +p40890 +I00 +sS'value' +p40891 +I00 +ssS'properties' +p40892 +(dp40893 +S'default_value' +p40894 +(dp40895 +S'editable' +p40896 +I00 +sS'value' +p40897 +I00 +ssS'summary_default' +p40898 +(dp40899 +S'editable' +p40900 +I00 +sS'value' +p40901 +S'none' +p40902 +sssS'description' +p40903 +(dp40904 +S'editable' +p40905 +I01 +sS'value' +p40906 +g47 +sssS'step_0' +p40907 +(dp40908 +S'mandatory' +p40909 +(dp40910 +S'editable' +p40911 +I00 +sS'value' +p40912 +I00 +ssS'name' +p40913 +(dp40914 +S'editable' +p40915 +I01 +sS'value' +p40916 +S'ALL TASKS' +p40917 +ssS'data_type' +p40918 +(dp40919 +S'editable' +p40920 +I00 +sS'value' +p40921 +S'pivot_column' +p40922 +ssS'entity_type' +p40923 +(dp40924 +S'editable' +p40925 +I00 +sS'value' +p40926 +S'Project' +p40927 +ssS'editable' +p40928 +(dp40929 +S'editable' +p40930 +I00 +sS'value' +p40931 +I00 +ssS'unique' +p40932 +(dp40933 +S'editable' +p40934 +I00 +sS'value' +p40935 +I00 +ssS'properties' +p40936 +(dp40937 +S'default_value' +p40938 +(dp40939 +S'editable' +p40940 +I00 +sS'value' +p40941 +NssS'summary_default' +p40942 +(dp40943 +S'editable' +p40944 +I00 +sS'value' +p40945 +S'none' +p40946 +sssS'description' +p40947 +(dp40948 +S'editable' +p40949 +I01 +sS'value' +p40950 +g47 +sssS'name' +p40951 +(dp40952 +S'mandatory' +p40953 +(dp40954 +S'editable' +p40955 +I00 +sS'value' +p40956 +I01 +ssS'name' +p40957 +(dp40958 +S'editable' +p40959 +I01 +sS'value' +p40960 +S'Project Name' +p40961 +ssS'data_type' +p40962 +(dp40963 +S'editable' +p40964 +I00 +sS'value' +p40965 +S'text' +p40966 +ssS'entity_type' +p40967 +(dp40968 +S'editable' +p40969 +I00 +sS'value' +p40970 +S'Project' +p40971 +ssS'editable' +p40972 +(dp40973 +S'editable' +p40974 +I00 +sS'value' +p40975 +I01 +ssS'unique' +p40976 +(dp40977 +S'editable' +p40978 +I00 +sS'value' +p40979 +I01 +ssS'properties' +p40980 +(dp40981 +S'default_value' +p40982 +(dp40983 +S'editable' +p40984 +I00 +sS'value' +p40985 +NssS'summary_default' +p40986 +(dp40987 +S'editable' +p40988 +I01 +sS'value' +p40989 +S'none' +p40990 +sssS'description' +p40991 +(dp40992 +S'editable' +p40993 +I01 +sS'value' +p40994 +g47 +sssS'created_at' +p40995 +(dp40996 +S'mandatory' +p40997 +(dp40998 +S'editable' +p40999 +I00 +sS'value' +p41000 +I00 +ssS'name' +p41001 +(dp41002 +S'editable' +p41003 +I01 +sS'value' +p41004 +S'Date Created' +p41005 +ssS'data_type' +p41006 +(dp41007 +S'editable' +p41008 +I00 +sS'value' +p41009 +S'date_time' +p41010 +ssS'entity_type' +p41011 +(dp41012 +S'editable' +p41013 +I00 +sS'value' +p41014 +S'Project' +p41015 +ssS'editable' +p41016 +(dp41017 +S'editable' +p41018 +I00 +sS'value' +p41019 +I00 +ssS'unique' +p41020 +(dp41021 +S'editable' +p41022 +I00 +sS'value' +p41023 +I00 +ssS'properties' +p41024 +(dp41025 +S'default_value' +p41026 +(dp41027 +S'editable' +p41028 +I00 +sS'value' +p41029 +NssS'summary_default' +p41030 +(dp41031 +S'editable' +p41032 +I01 +sS'value' +p41033 +S'none' +p41034 +sssS'description' +p41035 +(dp41036 +S'editable' +p41037 +I01 +sS'value' +p41038 +g47 +sssS'filmstrip_image' +p41039 +(dp41040 +S'mandatory' +p41041 +(dp41042 +S'editable' +p41043 +I00 +sS'value' +p41044 +I00 +ssS'name' +p41045 +(dp41046 +S'editable' +p41047 +I01 +sS'value' +p41048 +S'Filmstrip Thumbnail' +p41049 +ssS'data_type' +p41050 +(dp41051 +S'editable' +p41052 +I00 +sS'value' +p41053 +S'image' +p41054 +ssS'entity_type' +p41055 +(dp41056 +S'editable' +p41057 +I00 +sS'value' +p41058 +S'Project' +p41059 +ssS'editable' +p41060 +(dp41061 +S'editable' +p41062 +I00 +sS'value' +p41063 +I01 +ssS'unique' +p41064 +(dp41065 +S'editable' +p41066 +I00 +sS'value' +p41067 +I00 +ssS'properties' +p41068 +(dp41069 +S'default_value' +p41070 +(dp41071 +S'editable' +p41072 +I00 +sS'value' +p41073 +NssS'summary_default' +p41074 +(dp41075 +S'editable' +p41076 +I01 +sS'value' +p41077 +S'none' +p41078 +sssS'description' +p41079 +(dp41080 +S'editable' +p41081 +I01 +sS'value' +p41082 +g47 +sssS'layout_project' +p41083 +(dp41084 +S'mandatory' +p41085 +(dp41086 +S'editable' +p41087 +I00 +sS'value' +p41088 +I00 +ssS'name' +p41089 +(dp41090 +S'editable' +p41091 +I01 +sS'value' +p41092 +S'Layout Template' +p41093 +ssS'data_type' +p41094 +(dp41095 +S'editable' +p41096 +I00 +sS'value' +p41097 +S'entity' +p41098 +ssS'entity_type' +p41099 +(dp41100 +S'editable' +p41101 +I00 +sS'value' +p41102 +S'Project' +p41103 +ssS'editable' +p41104 +(dp41105 +S'editable' +p41106 +I00 +sS'value' +p41107 +I00 +ssS'unique' +p41108 +(dp41109 +S'editable' +p41110 +I00 +sS'value' +p41111 +I00 +ssS'properties' +p41112 +(dp41113 +S'default_value' +p41114 +(dp41115 +S'editable' +p41116 +I00 +sS'value' +p41117 +NssS'summary_default' +p41118 +(dp41119 +S'editable' +p41120 +I00 +sS'value' +p41121 +S'none' +p41122 +ssS'valid_types' +p41123 +(dp41124 +S'editable' +p41125 +I00 +sS'value' +p41126 +(lp41127 +S'Project' +p41128 +asssS'description' +p41129 +(dp41130 +S'editable' +p41131 +I01 +sS'value' +p41132 +g47 +sssS'sg_type' +p41133 +(dp41134 +S'mandatory' +p41135 +(dp41136 +S'editable' +p41137 +I00 +sS'value' +p41138 +I00 +ssS'name' +p41139 +(dp41140 +S'editable' +p41141 +I01 +sS'value' +p41142 +S'Type' +p41143 +ssS'data_type' +p41144 +(dp41145 +S'editable' +p41146 +I00 +sS'value' +p41147 +S'list' +p41148 +ssS'entity_type' +p41149 +(dp41150 +S'editable' +p41151 +I00 +sS'value' +p41152 +S'Project' +p41153 +ssS'editable' +p41154 +(dp41155 +S'editable' +p41156 +I00 +sS'value' +p41157 +I01 +ssS'unique' +p41158 +(dp41159 +S'editable' +p41160 +I00 +sS'value' +p41161 +I00 +ssS'properties' +p41162 +(dp41163 +S'default_value' +p41164 +(dp41165 +S'editable' +p41166 +I00 +sS'value' +p41167 +NssS'valid_values' +p41168 +(dp41169 +S'editable' +p41170 +I01 +sS'value' +p41171 +(lp41172 +S'Short Film' +p41173 +aS'Feature Film' +p41174 +aS'Commercial' +p41175 +aS'Effects' +p41176 +aS'Game Cinematic' +p41177 +aS'Other' +p41178 +aS'(this list can be customized)' +p41179 +assS'summary_default' +p41180 +(dp41181 +S'editable' +p41182 +I01 +sS'value' +p41183 +S'none' +p41184 +sssS'description' +p41185 +(dp41186 +S'editable' +p41187 +I01 +sS'value' +p41188 +g47 +sssS'tag_list' +p41189 +(dp41190 +S'mandatory' +p41191 +(dp41192 +S'editable' +p41193 +I00 +sS'value' +p41194 +I00 +ssS'name' +p41195 +(dp41196 +S'editable' +p41197 +I01 +sS'value' +p41198 +S'Tags' +p41199 +ssS'data_type' +p41200 +(dp41201 +S'editable' +p41202 +I00 +sS'value' +p41203 +S'tag_list' +p41204 +ssS'entity_type' +p41205 +(dp41206 +S'editable' +p41207 +I00 +sS'value' +p41208 +S'Project' +p41209 +ssS'editable' +p41210 +(dp41211 +S'editable' +p41212 +I00 +sS'value' +p41213 +I01 +ssS'unique' +p41214 +(dp41215 +S'editable' +p41216 +I00 +sS'value' +p41217 +I00 +ssS'properties' +p41218 +(dp41219 +S'default_value' +p41220 +(dp41221 +S'editable' +p41222 +I00 +sS'value' +p41223 +NssS'summary_default' +p41224 +(dp41225 +S'editable' +p41226 +I01 +sS'value' +p41227 +S'none' +p41228 +ssS'valid_types' +p41229 +(dp41230 +S'editable' +p41231 +I01 +sS'value' +p41232 +(lp41233 +S'Tag' +p41234 +asssS'description' +p41235 +(dp41236 +S'editable' +p41237 +I01 +sS'value' +p41238 +g47 +ssssS'Version' +p41239 +(dp41240 +S'sg_version_type' +p41241 +(dp41242 +S'mandatory' +p41243 +(dp41244 +S'editable' +p41245 +I00 +sS'value' +p41246 +I00 +ssS'name' +p41247 +(dp41248 +S'editable' +p41249 +I01 +sS'value' +p41250 +S'Type' +p41251 +ssS'data_type' +p41252 +(dp41253 +S'editable' +p41254 +I00 +sS'value' +p41255 +S'list' +p41256 +ssS'entity_type' +p41257 +(dp41258 +S'editable' +p41259 +I00 +sS'value' +p41260 +S'Version' +p41261 +ssS'editable' +p41262 +(dp41263 +S'editable' +p41264 +I00 +sS'value' +p41265 +I01 +ssS'unique' +p41266 +(dp41267 +S'editable' +p41268 +I00 +sS'value' +p41269 +I00 +ssS'properties' +p41270 +(dp41271 +S'default_value' +p41272 +(dp41273 +S'editable' +p41274 +I00 +sS'value' +p41275 +NssS'valid_values' +p41276 +(dp41277 +S'editable' +p41278 +I01 +sS'value' +p41279 +(lp41280 +ssS'summary_default' +p41281 +(dp41282 +S'editable' +p41283 +I01 +sS'value' +p41284 +S'none' +p41285 +sssS'description' +p41286 +(dp41287 +S'editable' +p41288 +I01 +sS'value' +p41289 +g47 +sssS'open_notes_count' +p41290 +(dp41291 +S'mandatory' +p41292 +(dp41293 +S'editable' +p41294 +I00 +sS'value' +p41295 +I00 +ssS'name' +p41296 +(dp41297 +S'editable' +p41298 +I01 +sS'value' +p41299 +S'Open Notes Count' +p41300 +ssS'data_type' +p41301 +(dp41302 +S'editable' +p41303 +I00 +sS'value' +p41304 +S'text' +p41305 +ssS'entity_type' +p41306 +(dp41307 +S'editable' +p41308 +I00 +sS'value' +p41309 +S'Version' +p41310 +ssS'editable' +p41311 +(dp41312 +S'editable' +p41313 +I00 +sS'value' +p41314 +I00 +ssS'unique' +p41315 +(dp41316 +S'editable' +p41317 +I00 +sS'value' +p41318 +I00 +ssS'properties' +p41319 +(dp41320 +S'default_value' +p41321 +(dp41322 +S'editable' +p41323 +I00 +sS'value' +p41324 +NssS'summary_default' +p41325 +(dp41326 +S'editable' +p41327 +I01 +sS'value' +p41328 +S'none' +p41329 +sssS'description' +p41330 +(dp41331 +S'editable' +p41332 +I01 +sS'value' +p41333 +g47 +sssS'code' +p41334 +(dp41335 +S'mandatory' +p41336 +(dp41337 +S'editable' +p41338 +I00 +sS'value' +p41339 +I01 +ssS'name' +p41340 +(dp41341 +S'editable' +p41342 +I01 +sS'value' +p41343 +S'Version Name' +p41344 +ssS'data_type' +p41345 +(dp41346 +S'editable' +p41347 +I00 +sS'value' +p41348 +S'text' +p41349 +ssS'entity_type' +p41350 +(dp41351 +S'editable' +p41352 +I00 +sS'value' +p41353 +S'Version' +p41354 +ssS'editable' +p41355 +(dp41356 +S'editable' +p41357 +I00 +sS'value' +p41358 +I01 +ssS'unique' +p41359 +(dp41360 +S'editable' +p41361 +I00 +sS'value' +p41362 +I00 +ssS'properties' +p41363 +(dp41364 +S'default_value' +p41365 +(dp41366 +S'editable' +p41367 +I00 +sS'value' +p41368 +NssS'summary_default' +p41369 +(dp41370 +S'editable' +p41371 +I01 +sS'value' +p41372 +S'none' +p41373 +sssS'description' +p41374 +(dp41375 +S'editable' +p41376 +I01 +sS'value' +p41377 +g47 +sssS'playlists' +p41378 +(dp41379 +S'mandatory' +p41380 +(dp41381 +S'editable' +p41382 +I00 +sS'value' +p41383 +I00 +ssS'name' +p41384 +(dp41385 +S'editable' +p41386 +I01 +sS'value' +p41387 +S'Playlists' +p41388 +ssS'data_type' +p41389 +(dp41390 +S'editable' +p41391 +I00 +sS'value' +p41392 +S'multi_entity' +p41393 +ssS'entity_type' +p41394 +(dp41395 +S'editable' +p41396 +I00 +sS'value' +p41397 +S'Version' +p41398 +ssS'editable' +p41399 +(dp41400 +S'editable' +p41401 +I00 +sS'value' +p41402 +I01 +ssS'unique' +p41403 +(dp41404 +S'editable' +p41405 +I00 +sS'value' +p41406 +I00 +ssS'properties' +p41407 +(dp41408 +S'default_value' +p41409 +(dp41410 +S'editable' +p41411 +I00 +sS'value' +p41412 +NssS'summary_default' +p41413 +(dp41414 +S'editable' +p41415 +I01 +sS'value' +p41416 +S'none' +p41417 +ssS'valid_types' +p41418 +(dp41419 +S'editable' +p41420 +I01 +sS'value' +p41421 +(lp41422 +S'Playlist' +p41423 +asssS'description' +p41424 +(dp41425 +S'editable' +p41426 +I01 +sS'value' +p41427 +g47 +sssS'sg_task' +p41428 +(dp41429 +S'mandatory' +p41430 +(dp41431 +S'editable' +p41432 +I00 +sS'value' +p41433 +I00 +ssS'name' +p41434 +(dp41435 +S'editable' +p41436 +I01 +sS'value' +p41437 +S'Task' +p41438 +ssS'data_type' +p41439 +(dp41440 +S'editable' +p41441 +I00 +sS'value' +p41442 +S'entity' +p41443 +ssS'entity_type' +p41444 +(dp41445 +S'editable' +p41446 +I00 +sS'value' +p41447 +S'Version' +p41448 +ssS'editable' +p41449 +(dp41450 +S'editable' +p41451 +I00 +sS'value' +p41452 +I01 +ssS'unique' +p41453 +(dp41454 +S'editable' +p41455 +I00 +sS'value' +p41456 +I00 +ssS'properties' +p41457 +(dp41458 +S'default_value' +p41459 +(dp41460 +S'editable' +p41461 +I00 +sS'value' +p41462 +NssS'summary_default' +p41463 +(dp41464 +S'editable' +p41465 +I01 +sS'value' +p41466 +S'none' +p41467 +ssS'valid_types' +p41468 +(dp41469 +S'editable' +p41470 +I01 +sS'value' +p41471 +(lp41472 +S'Task' +p41473 +asssS'description' +p41474 +(dp41475 +S'editable' +p41476 +I01 +sS'value' +p41477 +g47 +sssS'image' +p41478 +(dp41479 +S'mandatory' +p41480 +(dp41481 +S'editable' +p41482 +I00 +sS'value' +p41483 +I00 +ssS'name' +p41484 +(dp41485 +S'editable' +p41486 +I01 +sS'value' +p41487 +S'Thumbnail' +p41488 +ssS'data_type' +p41489 +(dp41490 +S'editable' +p41491 +I00 +sS'value' +p41492 +S'image' +p41493 +ssS'entity_type' +p41494 +(dp41495 +S'editable' +p41496 +I00 +sS'value' +p41497 +S'Version' +p41498 +ssS'editable' +p41499 +(dp41500 +S'editable' +p41501 +I00 +sS'value' +p41502 +I01 +ssS'unique' +p41503 +(dp41504 +S'editable' +p41505 +I00 +sS'value' +p41506 +I00 +ssS'properties' +p41507 +(dp41508 +S'default_value' +p41509 +(dp41510 +S'editable' +p41511 +I00 +sS'value' +p41512 +NssS'summary_default' +p41513 +(dp41514 +S'editable' +p41515 +I01 +sS'value' +p41516 +S'none' +p41517 +sssS'description' +p41518 +(dp41519 +S'editable' +p41520 +I01 +sS'value' +p41521 +g47 +sssS'updated_at' +p41522 +(dp41523 +S'mandatory' +p41524 +(dp41525 +S'editable' +p41526 +I00 +sS'value' +p41527 +I00 +ssS'name' +p41528 +(dp41529 +S'editable' +p41530 +I01 +sS'value' +p41531 +S'Date Updated' +p41532 +ssS'data_type' +p41533 +(dp41534 +S'editable' +p41535 +I00 +sS'value' +p41536 +S'date_time' +p41537 +ssS'entity_type' +p41538 +(dp41539 +S'editable' +p41540 +I00 +sS'value' +p41541 +S'Version' +p41542 +ssS'editable' +p41543 +(dp41544 +S'editable' +p41545 +I00 +sS'value' +p41546 +I00 +ssS'unique' +p41547 +(dp41548 +S'editable' +p41549 +I00 +sS'value' +p41550 +I00 +ssS'properties' +p41551 +(dp41552 +S'default_value' +p41553 +(dp41554 +S'editable' +p41555 +I00 +sS'value' +p41556 +NssS'summary_default' +p41557 +(dp41558 +S'editable' +p41559 +I01 +sS'value' +p41560 +S'none' +p41561 +sssS'description' +p41562 +(dp41563 +S'editable' +p41564 +I01 +sS'value' +p41565 +g47 +sssS'sg_uploaded_movie_frame_rate' +p41566 +(dp41567 +S'mandatory' +p41568 +(dp41569 +S'editable' +p41570 +I00 +sS'value' +p41571 +I00 +ssS'name' +p41572 +(dp41573 +S'editable' +p41574 +I01 +sS'value' +p41575 +S'Uploaded Movie Frame Rate' +p41576 +ssS'data_type' +p41577 +(dp41578 +S'editable' +p41579 +I00 +sS'value' +p41580 +S'float' +p41581 +ssS'entity_type' +p41582 +(dp41583 +S'editable' +p41584 +I00 +sS'value' +p41585 +S'Version' +p41586 +ssS'editable' +p41587 +(dp41588 +S'editable' +p41589 +I00 +sS'value' +p41590 +I01 +ssS'unique' +p41591 +(dp41592 +S'editable' +p41593 +I00 +sS'value' +p41594 +I00 +ssS'properties' +p41595 +(dp41596 +S'default_value' +p41597 +(dp41598 +S'editable' +p41599 +I00 +sS'value' +p41600 +NssS'summary_default' +p41601 +(dp41602 +S'editable' +p41603 +I00 +sS'value' +p41604 +S'none' +p41605 +sssS'description' +p41606 +(dp41607 +S'editable' +p41608 +I01 +sS'value' +p41609 +g47 +sssS'sg_path_to_frames' +p41610 +(dp41611 +S'mandatory' +p41612 +(dp41613 +S'editable' +p41614 +I00 +sS'value' +p41615 +I00 +ssS'name' +p41616 +(dp41617 +S'editable' +p41618 +I01 +sS'value' +p41619 +S'Path to Frames' +p41620 +ssS'data_type' +p41621 +(dp41622 +S'editable' +p41623 +I00 +sS'value' +p41624 +S'text' +p41625 +ssS'entity_type' +p41626 +(dp41627 +S'editable' +p41628 +I00 +sS'value' +p41629 +S'Version' +p41630 +ssS'editable' +p41631 +(dp41632 +S'editable' +p41633 +I00 +sS'value' +p41634 +I01 +ssS'unique' +p41635 +(dp41636 +S'editable' +p41637 +I00 +sS'value' +p41638 +I00 +ssS'properties' +p41639 +(dp41640 +S'default_value' +p41641 +(dp41642 +S'editable' +p41643 +I00 +sS'value' +p41644 +NssS'summary_default' +p41645 +(dp41646 +S'editable' +p41647 +I01 +sS'value' +p41648 +S'none' +p41649 +sssS'description' +p41650 +(dp41651 +S'editable' +p41652 +I01 +sS'value' +p41653 +S'Location of the high res frames on your local filesystem. Used for playback of high resolution frames.' +p41654 +sssS'tasks' +p41655 +(dp41656 +S'mandatory' +p41657 +(dp41658 +S'editable' +p41659 +I00 +sS'value' +p41660 +I00 +ssS'name' +p41661 +(dp41662 +S'editable' +p41663 +I01 +sS'value' +p41664 +S'Tasks' +p41665 +ssS'data_type' +p41666 +(dp41667 +S'editable' +p41668 +I00 +sS'value' +p41669 +S'multi_entity' +p41670 +ssS'entity_type' +p41671 +(dp41672 +S'editable' +p41673 +I00 +sS'value' +p41674 +S'Version' +p41675 +ssS'editable' +p41676 +(dp41677 +S'editable' +p41678 +I00 +sS'value' +p41679 +I01 +ssS'unique' +p41680 +(dp41681 +S'editable' +p41682 +I00 +sS'value' +p41683 +I00 +ssS'properties' +p41684 +(dp41685 +S'default_value' +p41686 +(dp41687 +S'editable' +p41688 +I00 +sS'value' +p41689 +NssS'summary_default' +p41690 +(dp41691 +S'editable' +p41692 +I01 +sS'value' +p41693 +S'none' +p41694 +ssS'valid_types' +p41695 +(dp41696 +S'editable' +p41697 +I01 +sS'value' +p41698 +(lp41699 +S'Task' +p41700 +asssS'description' +p41701 +(dp41702 +S'editable' +p41703 +I01 +sS'value' +p41704 +g47 +sssS'sg_department' +p41705 +(dp41706 +S'mandatory' +p41707 +(dp41708 +S'editable' +p41709 +I00 +sS'value' +p41710 +I00 +ssS'name' +p41711 +(dp41712 +S'editable' +p41713 +I01 +sS'value' +p41714 +S'Department' +p41715 +ssS'data_type' +p41716 +(dp41717 +S'editable' +p41718 +I00 +sS'value' +p41719 +S'text' +p41720 +ssS'entity_type' +p41721 +(dp41722 +S'editable' +p41723 +I00 +sS'value' +p41724 +S'Version' +p41725 +ssS'editable' +p41726 +(dp41727 +S'editable' +p41728 +I00 +sS'value' +p41729 +I01 +ssS'unique' +p41730 +(dp41731 +S'editable' +p41732 +I00 +sS'value' +p41733 +I00 +ssS'properties' +p41734 +(dp41735 +S'default_value' +p41736 +(dp41737 +S'editable' +p41738 +I00 +sS'value' +p41739 +NssS'summary_default' +p41740 +(dp41741 +S'editable' +p41742 +I01 +sS'value' +p41743 +S'none' +p41744 +sssS'description' +p41745 +(dp41746 +S'editable' +p41747 +I01 +sS'value' +p41748 +S'The department the Version was submitted from. This is used to find the latest Version from the same department.' +p41749 +sssS'cached_display_name' +p41750 +(dp41751 +S'mandatory' +p41752 +(dp41753 +S'editable' +p41754 +I00 +sS'value' +p41755 +I00 +ssS'name' +p41756 +(dp41757 +S'editable' +p41758 +I01 +sS'value' +p41759 +S'Cached Display Name' +p41760 +ssS'data_type' +p41761 +(dp41762 +S'editable' +p41763 +I00 +sS'value' +p41764 +S'text' +p41765 +ssS'entity_type' +p41766 +(dp41767 +S'editable' +p41768 +I00 +sS'value' +p41769 +S'Version' +p41770 +ssS'editable' +p41771 +(dp41772 +S'editable' +p41773 +I00 +sS'value' +p41774 +I01 +ssS'unique' +p41775 +(dp41776 +S'editable' +p41777 +I00 +sS'value' +p41778 +I00 +ssS'properties' +p41779 +(dp41780 +S'default_value' +p41781 +(dp41782 +S'editable' +p41783 +I00 +sS'value' +p41784 +NssS'summary_default' +p41785 +(dp41786 +S'editable' +p41787 +I00 +sS'value' +p41788 +S'none' +p41789 +sssS'description' +p41790 +(dp41791 +S'editable' +p41792 +I01 +sS'value' +p41793 +g47 +sssS'frame_range' +p41794 +(dp41795 +S'mandatory' +p41796 +(dp41797 +S'editable' +p41798 +I00 +sS'value' +p41799 +I00 +ssS'name' +p41800 +(dp41801 +S'editable' +p41802 +I01 +sS'value' +p41803 +S'Frame Range' +p41804 +ssS'data_type' +p41805 +(dp41806 +S'editable' +p41807 +I00 +sS'value' +p41808 +S'text' +p41809 +ssS'entity_type' +p41810 +(dp41811 +S'editable' +p41812 +I00 +sS'value' +p41813 +S'Version' +p41814 +ssS'editable' +p41815 +(dp41816 +S'editable' +p41817 +I00 +sS'value' +p41818 +I01 +ssS'unique' +p41819 +(dp41820 +S'editable' +p41821 +I00 +sS'value' +p41822 +I00 +ssS'properties' +p41823 +(dp41824 +S'default_value' +p41825 +(dp41826 +S'editable' +p41827 +I00 +sS'value' +p41828 +NssS'summary_default' +p41829 +(dp41830 +S'editable' +p41831 +I01 +sS'value' +p41832 +S'none' +p41833 +sssS'description' +p41834 +(dp41835 +S'editable' +p41836 +I01 +sS'value' +p41837 +g47 +sssS'updated_by' +p41838 +(dp41839 +S'mandatory' +p41840 +(dp41841 +S'editable' +p41842 +I00 +sS'value' +p41843 +I00 +ssS'name' +p41844 +(dp41845 +S'editable' +p41846 +I01 +sS'value' +p41847 +S'Updated by' +p41848 +ssS'data_type' +p41849 +(dp41850 +S'editable' +p41851 +I00 +sS'value' +p41852 +S'entity' +p41853 +ssS'entity_type' +p41854 +(dp41855 +S'editable' +p41856 +I00 +sS'value' +p41857 +S'Version' +p41858 +ssS'editable' +p41859 +(dp41860 +S'editable' +p41861 +I00 +sS'value' +p41862 +I00 +ssS'unique' +p41863 +(dp41864 +S'editable' +p41865 +I00 +sS'value' +p41866 +I00 +ssS'properties' +p41867 +(dp41868 +S'default_value' +p41869 +(dp41870 +S'editable' +p41871 +I00 +sS'value' +p41872 +NssS'summary_default' +p41873 +(dp41874 +S'editable' +p41875 +I01 +sS'value' +p41876 +S'none' +p41877 +ssS'valid_types' +p41878 +(dp41879 +S'editable' +p41880 +I01 +sS'value' +p41881 +(lp41882 +S'HumanUser' +p41883 +aS'ApiUser' +p41884 +asssS'description' +p41885 +(dp41886 +S'editable' +p41887 +I01 +sS'value' +p41888 +g47 +sssS'sg_path_to_movie' +p41889 +(dp41890 +S'mandatory' +p41891 +(dp41892 +S'editable' +p41893 +I00 +sS'value' +p41894 +I00 +ssS'name' +p41895 +(dp41896 +S'editable' +p41897 +I01 +sS'value' +p41898 +S'Path to Movie' +p41899 +ssS'data_type' +p41900 +(dp41901 +S'editable' +p41902 +I00 +sS'value' +p41903 +S'text' +p41904 +ssS'entity_type' +p41905 +(dp41906 +S'editable' +p41907 +I00 +sS'value' +p41908 +S'Version' +p41909 +ssS'editable' +p41910 +(dp41911 +S'editable' +p41912 +I00 +sS'value' +p41913 +I01 +ssS'unique' +p41914 +(dp41915 +S'editable' +p41916 +I00 +sS'value' +p41917 +I00 +ssS'properties' +p41918 +(dp41919 +S'default_value' +p41920 +(dp41921 +S'editable' +p41922 +I00 +sS'value' +p41923 +NssS'summary_default' +p41924 +(dp41925 +S'editable' +p41926 +I01 +sS'value' +p41927 +S'none' +p41928 +sssS'description' +p41929 +(dp41930 +S'editable' +p41931 +I01 +sS'value' +p41932 +S'Location of the movie on your local filesystem (not uploaded). Used for playback of lower resolution movie media stored locally.' +p41933 +sssS'sg_uploaded_movie_webm' +p41934 +(dp41935 +S'mandatory' +p41936 +(dp41937 +S'editable' +p41938 +I00 +sS'value' +p41939 +I00 +ssS'name' +p41940 +(dp41941 +S'editable' +p41942 +I01 +sS'value' +p41943 +S'Uploaded Movie WebM' +p41944 +ssS'data_type' +p41945 +(dp41946 +S'editable' +p41947 +I00 +sS'value' +p41948 +S'url' +p41949 +ssS'entity_type' +p41950 +(dp41951 +S'editable' +p41952 +I00 +sS'value' +p41953 +S'Version' +p41954 +ssS'editable' +p41955 +(dp41956 +S'editable' +p41957 +I00 +sS'value' +p41958 +I01 +ssS'unique' +p41959 +(dp41960 +S'editable' +p41961 +I00 +sS'value' +p41962 +I00 +ssS'properties' +p41963 +(dp41964 +S'default_value' +p41965 +(dp41966 +S'editable' +p41967 +I00 +sS'value' +p41968 +NssS'open_in_new_window' +p41969 +(dp41970 +S'editable' +p41971 +I00 +sS'value' +p41972 +I01 +ssS'summary_default' +p41973 +(dp41974 +S'editable' +p41975 +I00 +sS'value' +p41976 +S'none' +p41977 +sssS'description' +p41978 +(dp41979 +S'editable' +p41980 +I01 +sS'value' +p41981 +g47 +sssS'open_notes' +p41982 +(dp41983 +S'mandatory' +p41984 +(dp41985 +S'editable' +p41986 +I00 +sS'value' +p41987 +I00 +ssS'name' +p41988 +(dp41989 +S'editable' +p41990 +I01 +sS'value' +p41991 +S'Open Notes' +p41992 +ssS'data_type' +p41993 +(dp41994 +S'editable' +p41995 +I00 +sS'value' +p41996 +S'multi_entity' +p41997 +ssS'entity_type' +p41998 +(dp41999 +S'editable' +p42000 +I00 +sS'value' +p42001 +S'Version' +p42002 +ssS'editable' +p42003 +(dp42004 +S'editable' +p42005 +I00 +sS'value' +p42006 +I00 +ssS'unique' +p42007 +(dp42008 +S'editable' +p42009 +I00 +sS'value' +p42010 +I00 +ssS'properties' +p42011 +(dp42012 +S'default_value' +p42013 +(dp42014 +S'editable' +p42015 +I00 +sS'value' +p42016 +NssS'summary_default' +p42017 +(dp42018 +S'editable' +p42019 +I01 +sS'value' +p42020 +S'none' +p42021 +ssS'valid_types' +p42022 +(dp42023 +S'editable' +p42024 +I01 +sS'value' +p42025 +(lp42026 +S'Note' +p42027 +asssS'description' +p42028 +(dp42029 +S'editable' +p42030 +I01 +sS'value' +p42031 +g47 +sssS'tank_published_file' +p42032 +(dp42033 +S'mandatory' +p42034 +(dp42035 +S'editable' +p42036 +I00 +sS'value' +p42037 +I00 +ssS'name' +p42038 +(dp42039 +S'editable' +p42040 +I01 +sS'value' +p42041 +S'Tank Published File' +p42042 +ssS'data_type' +p42043 +(dp42044 +S'editable' +p42045 +I00 +sS'value' +p42046 +S'entity' +p42047 +ssS'entity_type' +p42048 +(dp42049 +S'editable' +p42050 +I00 +sS'value' +p42051 +S'Version' +p42052 +ssS'editable' +p42053 +(dp42054 +S'editable' +p42055 +I00 +sS'value' +p42056 +I01 +ssS'unique' +p42057 +(dp42058 +S'editable' +p42059 +I00 +sS'value' +p42060 +I00 +ssS'properties' +p42061 +(dp42062 +S'default_value' +p42063 +(dp42064 +S'editable' +p42065 +I00 +sS'value' +p42066 +NssS'summary_default' +p42067 +(dp42068 +S'editable' +p42069 +I01 +sS'value' +p42070 +S'none' +p42071 +ssS'valid_types' +p42072 +(dp42073 +S'editable' +p42074 +I01 +sS'value' +p42075 +(lp42076 +S'TankPublishedFile' +p42077 +asssS'description' +p42078 +(dp42079 +S'editable' +p42080 +I01 +sS'value' +p42081 +g47 +sssS'task_template' +p42082 +(dp42083 +S'mandatory' +p42084 +(dp42085 +S'editable' +p42086 +I00 +sS'value' +p42087 +I00 +ssS'name' +p42088 +(dp42089 +S'editable' +p42090 +I01 +sS'value' +p42091 +S'Task Template' +p42092 +ssS'data_type' +p42093 +(dp42094 +S'editable' +p42095 +I00 +sS'value' +p42096 +S'entity' +p42097 +ssS'entity_type' +p42098 +(dp42099 +S'editable' +p42100 +I00 +sS'value' +p42101 +S'Version' +p42102 +ssS'editable' +p42103 +(dp42104 +S'editable' +p42105 +I00 +sS'value' +p42106 +I01 +ssS'unique' +p42107 +(dp42108 +S'editable' +p42109 +I00 +sS'value' +p42110 +I00 +ssS'properties' +p42111 +(dp42112 +S'default_value' +p42113 +(dp42114 +S'editable' +p42115 +I00 +sS'value' +p42116 +NssS'summary_default' +p42117 +(dp42118 +S'editable' +p42119 +I01 +sS'value' +p42120 +S'none' +p42121 +ssS'valid_types' +p42122 +(dp42123 +S'editable' +p42124 +I01 +sS'value' +p42125 +(lp42126 +S'TaskTemplate' +p42127 +asssS'description' +p42128 +(dp42129 +S'editable' +p42130 +I01 +sS'value' +p42131 +g47 +sssS'created_by' +p42132 +(dp42133 +S'mandatory' +p42134 +(dp42135 +S'editable' +p42136 +I00 +sS'value' +p42137 +I00 +ssS'name' +p42138 +(dp42139 +S'editable' +p42140 +I01 +sS'value' +p42141 +S'Created by' +p42142 +ssS'data_type' +p42143 +(dp42144 +S'editable' +p42145 +I00 +sS'value' +p42146 +S'entity' +p42147 +ssS'entity_type' +p42148 +(dp42149 +S'editable' +p42150 +I00 +sS'value' +p42151 +S'Version' +p42152 +ssS'editable' +p42153 +(dp42154 +S'editable' +p42155 +I00 +sS'value' +p42156 +I00 +ssS'unique' +p42157 +(dp42158 +S'editable' +p42159 +I00 +sS'value' +p42160 +I00 +ssS'properties' +p42161 +(dp42162 +S'default_value' +p42163 +(dp42164 +S'editable' +p42165 +I00 +sS'value' +p42166 +NssS'summary_default' +p42167 +(dp42168 +S'editable' +p42169 +I01 +sS'value' +p42170 +S'none' +p42171 +ssS'valid_types' +p42172 +(dp42173 +S'editable' +p42174 +I01 +sS'value' +p42175 +(lp42176 +S'HumanUser' +p42177 +aS'ApiUser' +p42178 +asssS'description' +p42179 +(dp42180 +S'editable' +p42181 +I01 +sS'value' +p42182 +g47 +sssS'id' +p42183 +(dp42184 +S'mandatory' +p42185 +(dp42186 +S'editable' +p42187 +I00 +sS'value' +p42188 +I00 +ssS'name' +p42189 +(dp42190 +S'editable' +p42191 +I01 +sS'value' +p42192 +S'Id' +p42193 +ssS'data_type' +p42194 +(dp42195 +S'editable' +p42196 +I00 +sS'value' +p42197 +S'number' +p42198 +ssS'entity_type' +p42199 +(dp42200 +S'editable' +p42201 +I00 +sS'value' +p42202 +S'Version' +p42203 +ssS'editable' +p42204 +(dp42205 +S'editable' +p42206 +I00 +sS'value' +p42207 +I00 +ssS'unique' +p42208 +(dp42209 +S'editable' +p42210 +I00 +sS'value' +p42211 +I00 +ssS'properties' +p42212 +(dp42213 +S'default_value' +p42214 +(dp42215 +S'editable' +p42216 +I00 +sS'value' +p42217 +NssS'summary_default' +p42218 +(dp42219 +S'editable' +p42220 +I01 +sS'value' +p42221 +S'none' +p42222 +sssS'description' +p42223 +(dp42224 +S'editable' +p42225 +I01 +sS'value' +p42226 +g47 +sssS'sg_status_list' +p42227 +(dp42228 +S'mandatory' +p42229 +(dp42230 +S'editable' +p42231 +I00 +sS'value' +p42232 +I00 +ssS'name' +p42233 +(dp42234 +S'editable' +p42235 +I01 +sS'value' +p42236 +S'Status' +p42237 +ssS'data_type' +p42238 +(dp42239 +S'editable' +p42240 +I00 +sS'value' +p42241 +S'status_list' +p42242 +ssS'entity_type' +p42243 +(dp42244 +S'editable' +p42245 +I00 +sS'value' +p42246 +S'Version' +p42247 +ssS'editable' +p42248 +(dp42249 +S'editable' +p42250 +I00 +sS'value' +p42251 +I01 +ssS'unique' +p42252 +(dp42253 +S'editable' +p42254 +I00 +sS'value' +p42255 +I00 +ssS'properties' +p42256 +(dp42257 +S'default_value' +p42258 +(dp42259 +S'editable' +p42260 +I01 +sS'value' +p42261 +S'rev' +p42262 +ssS'valid_values' +p42263 +(dp42264 +S'editable' +p42265 +I01 +sS'value' +p42266 +(lp42267 +S'na' +p42268 +aS'rev' +p42269 +aS'vwd' +p42270 +assS'summary_default' +p42271 +(dp42272 +S'editable' +p42273 +I01 +sS'value' +p42274 +S'status_list' +p42275 +sssS'description' +p42276 +(dp42277 +S'editable' +p42278 +I01 +sS'value' +p42279 +g47 +sssS'created_at' +p42280 +(dp42281 +S'mandatory' +p42282 +(dp42283 +S'editable' +p42284 +I00 +sS'value' +p42285 +I00 +ssS'name' +p42286 +(dp42287 +S'editable' +p42288 +I01 +sS'value' +p42289 +S'Date Created' +p42290 +ssS'data_type' +p42291 +(dp42292 +S'editable' +p42293 +I00 +sS'value' +p42294 +S'date_time' +p42295 +ssS'entity_type' +p42296 +(dp42297 +S'editable' +p42298 +I00 +sS'value' +p42299 +S'Version' +p42300 +ssS'editable' +p42301 +(dp42302 +S'editable' +p42303 +I00 +sS'value' +p42304 +I00 +ssS'unique' +p42305 +(dp42306 +S'editable' +p42307 +I00 +sS'value' +p42308 +I00 +ssS'properties' +p42309 +(dp42310 +S'default_value' +p42311 +(dp42312 +S'editable' +p42313 +I00 +sS'value' +p42314 +NssS'summary_default' +p42315 +(dp42316 +S'editable' +p42317 +I01 +sS'value' +p42318 +S'none' +p42319 +sssS'description' +p42320 +(dp42321 +S'editable' +p42322 +I01 +sS'value' +p42323 +g47 +sssS'sg_frames_aspect_ratio' +p42324 +(dp42325 +S'mandatory' +p42326 +(dp42327 +S'editable' +p42328 +I00 +sS'value' +p42329 +I00 +ssS'name' +p42330 +(dp42331 +S'editable' +p42332 +I01 +sS'value' +p42333 +S'Frames Aspect Ratio' +p42334 +ssS'data_type' +p42335 +(dp42336 +S'editable' +p42337 +I00 +sS'value' +p42338 +S'float' +p42339 +ssS'entity_type' +p42340 +(dp42341 +S'editable' +p42342 +I00 +sS'value' +p42343 +S'Version' +p42344 +ssS'editable' +p42345 +(dp42346 +S'editable' +p42347 +I00 +sS'value' +p42348 +I01 +ssS'unique' +p42349 +(dp42350 +S'editable' +p42351 +I00 +sS'value' +p42352 +I00 +ssS'properties' +p42353 +(dp42354 +S'default_value' +p42355 +(dp42356 +S'editable' +p42357 +I00 +sS'value' +p42358 +NssS'summary_default' +p42359 +(dp42360 +S'editable' +p42361 +I01 +sS'value' +p42362 +S'none' +p42363 +sssS'description' +p42364 +(dp42365 +S'editable' +p42366 +I01 +sS'value' +p42367 +S'Aspect ratio of the high res frames. Used to format the image correctly for viewing.' +p42368 +sssS'sg_first_frame' +p42369 +(dp42370 +S'mandatory' +p42371 +(dp42372 +S'editable' +p42373 +I00 +sS'value' +p42374 +I00 +ssS'name' +p42375 +(dp42376 +S'editable' +p42377 +I01 +sS'value' +p42378 +S'First Frame' +p42379 +ssS'data_type' +p42380 +(dp42381 +S'editable' +p42382 +I00 +sS'value' +p42383 +S'number' +p42384 +ssS'entity_type' +p42385 +(dp42386 +S'editable' +p42387 +I00 +sS'value' +p42388 +S'Version' +p42389 +ssS'editable' +p42390 +(dp42391 +S'editable' +p42392 +I00 +sS'value' +p42393 +I01 +ssS'unique' +p42394 +(dp42395 +S'editable' +p42396 +I00 +sS'value' +p42397 +I00 +ssS'properties' +p42398 +(dp42399 +S'default_value' +p42400 +(dp42401 +S'editable' +p42402 +I00 +sS'value' +p42403 +NssS'summary_default' +p42404 +(dp42405 +S'editable' +p42406 +I01 +sS'value' +p42407 +S'none' +p42408 +sssS'description' +p42409 +(dp42410 +S'editable' +p42411 +I01 +sS'value' +p42412 +S'The first frame number contained in the Version. Used in playback of the movie or frames to calculate the first frame available in the Version.' +p42413 +sssS'sg_frames_have_slate' +p42414 +(dp42415 +S'mandatory' +p42416 +(dp42417 +S'editable' +p42418 +I00 +sS'value' +p42419 +I00 +ssS'name' +p42420 +(dp42421 +S'editable' +p42422 +I01 +sS'value' +p42423 +S'Frames Have Slate' +p42424 +ssS'data_type' +p42425 +(dp42426 +S'editable' +p42427 +I00 +sS'value' +p42428 +S'checkbox' +p42429 +ssS'entity_type' +p42430 +(dp42431 +S'editable' +p42432 +I00 +sS'value' +p42433 +S'Version' +p42434 +ssS'editable' +p42435 +(dp42436 +S'editable' +p42437 +I00 +sS'value' +p42438 +I01 +ssS'unique' +p42439 +(dp42440 +S'editable' +p42441 +I00 +sS'value' +p42442 +I00 +ssS'properties' +p42443 +(dp42444 +S'default_value' +p42445 +(dp42446 +S'editable' +p42447 +I00 +sS'value' +p42448 +I00 +ssS'summary_default' +p42449 +(dp42450 +S'editable' +p42451 +I01 +sS'value' +p42452 +S'none' +p42453 +sssS'description' +p42454 +(dp42455 +S'editable' +p42456 +I01 +sS'value' +p42457 +S'Indicates whether the frames have a slate or not. This is used to include or omit the slate from playback.' +p42458 +sssS'sg_uploaded_movie_mp4' +p42459 +(dp42460 +S'mandatory' +p42461 +(dp42462 +S'editable' +p42463 +I00 +sS'value' +p42464 +I00 +ssS'name' +p42465 +(dp42466 +S'editable' +p42467 +I01 +sS'value' +p42468 +S'Uploaded Movie MP4' +p42469 +ssS'data_type' +p42470 +(dp42471 +S'editable' +p42472 +I00 +sS'value' +p42473 +S'url' +p42474 +ssS'entity_type' +p42475 +(dp42476 +S'editable' +p42477 +I00 +sS'value' +p42478 +S'Version' +p42479 +ssS'editable' +p42480 +(dp42481 +S'editable' +p42482 +I00 +sS'value' +p42483 +I01 +ssS'unique' +p42484 +(dp42485 +S'editable' +p42486 +I00 +sS'value' +p42487 +I00 +ssS'properties' +p42488 +(dp42489 +S'default_value' +p42490 +(dp42491 +S'editable' +p42492 +I00 +sS'value' +p42493 +NssS'open_in_new_window' +p42494 +(dp42495 +S'editable' +p42496 +I00 +sS'value' +p42497 +I01 +ssS'summary_default' +p42498 +(dp42499 +S'editable' +p42500 +I00 +sS'value' +p42501 +S'none' +p42502 +sssS'description' +p42503 +(dp42504 +S'editable' +p42505 +I01 +sS'value' +p42506 +g47 +sssS'description' +p42507 +(dp42508 +S'mandatory' +p42509 +(dp42510 +S'editable' +p42511 +I00 +sS'value' +p42512 +I00 +ssS'name' +p42513 +(dp42514 +S'editable' +p42515 +I01 +sS'value' +p42516 +S'Description' +p42517 +ssS'data_type' +p42518 +(dp42519 +S'editable' +p42520 +I00 +sS'value' +p42521 +S'text' +p42522 +ssS'entity_type' +p42523 +(dp42524 +S'editable' +p42525 +I00 +sS'value' +p42526 +S'Version' +p42527 +ssS'editable' +p42528 +(dp42529 +S'editable' +p42530 +I00 +sS'value' +p42531 +I01 +ssS'unique' +p42532 +(dp42533 +S'editable' +p42534 +I00 +sS'value' +p42535 +I00 +ssS'properties' +p42536 +(dp42537 +S'default_value' +p42538 +(dp42539 +S'editable' +p42540 +I00 +sS'value' +p42541 +NssS'summary_default' +p42542 +(dp42543 +S'editable' +p42544 +I01 +sS'value' +p42545 +S'none' +p42546 +sssS'description' +p42547 +(dp42548 +S'editable' +p42549 +I01 +sS'value' +p42550 +g47 +sssS'media_center_import_time' +p42551 +(dp42552 +S'mandatory' +p42553 +(dp42554 +S'editable' +p42555 +I00 +sS'value' +p42556 +I00 +ssS'name' +p42557 +(dp42558 +S'editable' +p42559 +I01 +sS'value' +p42560 +S'Media Center Import Time' +p42561 +ssS'data_type' +p42562 +(dp42563 +S'editable' +p42564 +I00 +sS'value' +p42565 +S'date_time' +p42566 +ssS'entity_type' +p42567 +(dp42568 +S'editable' +p42569 +I00 +sS'value' +p42570 +S'Version' +p42571 +ssS'editable' +p42572 +(dp42573 +S'editable' +p42574 +I00 +sS'value' +p42575 +I01 +ssS'unique' +p42576 +(dp42577 +S'editable' +p42578 +I00 +sS'value' +p42579 +I00 +ssS'properties' +p42580 +(dp42581 +S'default_value' +p42582 +(dp42583 +S'editable' +p42584 +I00 +sS'value' +p42585 +NssS'summary_default' +p42586 +(dp42587 +S'editable' +p42588 +I00 +sS'value' +p42589 +S'none' +p42590 +sssS'description' +p42591 +(dp42592 +S'editable' +p42593 +I01 +sS'value' +p42594 +g47 +sssS'viewed_by_current_user_at' +p42595 +(dp42596 +S'mandatory' +p42597 +(dp42598 +S'editable' +p42599 +I00 +sS'value' +p42600 +I00 +ssS'name' +p42601 +(dp42602 +S'editable' +p42603 +I01 +sS'value' +p42604 +S'Date Viewed' +p42605 +ssS'data_type' +p42606 +(dp42607 +S'editable' +p42608 +I00 +sS'value' +p42609 +S'date_time' +p42610 +ssS'entity_type' +p42611 +(dp42612 +S'editable' +p42613 +I00 +sS'value' +p42614 +S'Version' +p42615 +ssS'editable' +p42616 +(dp42617 +S'editable' +p42618 +I00 +sS'value' +p42619 +I00 +ssS'unique' +p42620 +(dp42621 +S'editable' +p42622 +I00 +sS'value' +p42623 +I00 +ssS'properties' +p42624 +(dp42625 +S'default_value' +p42626 +(dp42627 +S'editable' +p42628 +I00 +sS'value' +p42629 +NssS'summary_default' +p42630 +(dp42631 +S'editable' +p42632 +I00 +sS'value' +p42633 +S'none' +p42634 +sssS'description' +p42635 +(dp42636 +S'editable' +p42637 +I01 +sS'value' +p42638 +g47 +sssS'sg_movie_has_slate' +p42639 +(dp42640 +S'mandatory' +p42641 +(dp42642 +S'editable' +p42643 +I00 +sS'value' +p42644 +I00 +ssS'name' +p42645 +(dp42646 +S'editable' +p42647 +I01 +sS'value' +p42648 +S'Movie Has Slate' +p42649 +ssS'data_type' +p42650 +(dp42651 +S'editable' +p42652 +I00 +sS'value' +p42653 +S'checkbox' +p42654 +ssS'entity_type' +p42655 +(dp42656 +S'editable' +p42657 +I00 +sS'value' +p42658 +S'Version' +p42659 +ssS'editable' +p42660 +(dp42661 +S'editable' +p42662 +I00 +sS'value' +p42663 +I01 +ssS'unique' +p42664 +(dp42665 +S'editable' +p42666 +I00 +sS'value' +p42667 +I00 +ssS'properties' +p42668 +(dp42669 +S'default_value' +p42670 +(dp42671 +S'editable' +p42672 +I00 +sS'value' +p42673 +I00 +ssS'summary_default' +p42674 +(dp42675 +S'editable' +p42676 +I01 +sS'value' +p42677 +S'none' +p42678 +sssS'description' +p42679 +(dp42680 +S'editable' +p42681 +I01 +sS'value' +p42682 +S'Indicates whether the movie file has a slate or not. This is used to include or omit the slate from playback.' +p42683 +sssS'sg_uploaded_movie' +p42684 +(dp42685 +S'mandatory' +p42686 +(dp42687 +S'editable' +p42688 +I00 +sS'value' +p42689 +I00 +ssS'name' +p42690 +(dp42691 +S'editable' +p42692 +I01 +sS'value' +p42693 +S'Uploaded Movie' +p42694 +ssS'data_type' +p42695 +(dp42696 +S'editable' +p42697 +I00 +sS'value' +p42698 +S'url' +p42699 +ssS'entity_type' +p42700 +(dp42701 +S'editable' +p42702 +I00 +sS'value' +p42703 +S'Version' +p42704 +ssS'editable' +p42705 +(dp42706 +S'editable' +p42707 +I00 +sS'value' +p42708 +I01 +ssS'unique' +p42709 +(dp42710 +S'editable' +p42711 +I00 +sS'value' +p42712 +I00 +ssS'properties' +p42713 +(dp42714 +S'default_value' +p42715 +(dp42716 +S'editable' +p42717 +I00 +sS'value' +p42718 +NssS'open_in_new_window' +p42719 +(dp42720 +S'editable' +p42721 +I01 +sS'value' +p42722 +I01 +ssS'summary_default' +p42723 +(dp42724 +S'editable' +p42725 +I01 +sS'value' +p42726 +S'none' +p42727 +sssS'description' +p42728 +(dp42729 +S'editable' +p42730 +I01 +sS'value' +p42731 +S'File field to contain the uploaded movie file. Used for playback of lower resolution movie media stored in Shotgun.' +p42732 +sssS'user' +p42733 +(dp42734 +S'mandatory' +p42735 +(dp42736 +S'editable' +p42737 +I00 +sS'value' +p42738 +I00 +ssS'name' +p42739 +(dp42740 +S'editable' +p42741 +I01 +sS'value' +p42742 +S'Artist' +p42743 +ssS'data_type' +p42744 +(dp42745 +S'editable' +p42746 +I00 +sS'value' +p42747 +S'entity' +p42748 +ssS'entity_type' +p42749 +(dp42750 +S'editable' +p42751 +I00 +sS'value' +p42752 +S'Version' +p42753 +ssS'editable' +p42754 +(dp42755 +S'editable' +p42756 +I00 +sS'value' +p42757 +I01 +ssS'unique' +p42758 +(dp42759 +S'editable' +p42760 +I00 +sS'value' +p42761 +I00 +ssS'properties' +p42762 +(dp42763 +S'default_value' +p42764 +(dp42765 +S'editable' +p42766 +I00 +sS'value' +p42767 +NssS'summary_default' +p42768 +(dp42769 +S'editable' +p42770 +I01 +sS'value' +p42771 +S'none' +p42772 +ssS'valid_types' +p42773 +(dp42774 +S'editable' +p42775 +I01 +sS'value' +p42776 +(lp42777 +S'HumanUser' +p42778 +aS'ApiUser' +p42779 +asssS'description' +p42780 +(dp42781 +S'editable' +p42782 +I01 +sS'value' +p42783 +g47 +sssS'entity' +p42784 +(dp42785 +S'mandatory' +p42786 +(dp42787 +S'editable' +p42788 +I00 +sS'value' +p42789 +I00 +ssS'name' +p42790 +(dp42791 +S'editable' +p42792 +I01 +sS'value' +p42793 +S'Link' +p42794 +ssS'data_type' +p42795 +(dp42796 +S'editable' +p42797 +I00 +sS'value' +p42798 +S'entity' +p42799 +ssS'entity_type' +p42800 +(dp42801 +S'editable' +p42802 +I00 +sS'value' +p42803 +S'Version' +p42804 +ssS'editable' +p42805 +(dp42806 +S'editable' +p42807 +I00 +sS'value' +p42808 +I01 +ssS'unique' +p42809 +(dp42810 +S'editable' +p42811 +I00 +sS'value' +p42812 +I00 +ssS'properties' +p42813 +(dp42814 +S'default_value' +p42815 +(dp42816 +S'editable' +p42817 +I00 +sS'value' +p42818 +NssS'summary_default' +p42819 +(dp42820 +S'editable' +p42821 +I01 +sS'value' +p42822 +S'none' +p42823 +ssS'valid_types' +p42824 +(dp42825 +S'editable' +p42826 +I01 +sS'value' +p42827 +(lp42828 +S'Asset' +p42829 +aS'Shot' +p42830 +aS'Sequence' +p42831 +aS'Scene' +p42832 +aS'Project' +p42833 +asssS'description' +p42834 +(dp42835 +S'editable' +p42836 +I01 +sS'value' +p42837 +g47 +sssS'published_files' +p42838 +(dp42839 +S'mandatory' +p42840 +(dp42841 +S'editable' +p42842 +I00 +sS'value' +p42843 +I00 +ssS'name' +p42844 +(dp42845 +S'editable' +p42846 +I01 +sS'value' +p42847 +S'Published Files' +p42848 +ssS'data_type' +p42849 +(dp42850 +S'editable' +p42851 +I00 +sS'value' +p42852 +S'multi_entity' +p42853 +ssS'entity_type' +p42854 +(dp42855 +S'editable' +p42856 +I00 +sS'value' +p42857 +S'Version' +p42858 +ssS'editable' +p42859 +(dp42860 +S'editable' +p42861 +I00 +sS'value' +p42862 +I01 +ssS'unique' +p42863 +(dp42864 +S'editable' +p42865 +I00 +sS'value' +p42866 +I00 +ssS'properties' +p42867 +(dp42868 +S'default_value' +p42869 +(dp42870 +S'editable' +p42871 +I00 +sS'value' +p42872 +NssS'summary_default' +p42873 +(dp42874 +S'editable' +p42875 +I01 +sS'value' +p42876 +S'none' +p42877 +ssS'valid_types' +p42878 +(dp42879 +S'editable' +p42880 +I01 +sS'value' +p42881 +(lp42882 +S'PublishedFile' +p42883 +asssS'description' +p42884 +(dp42885 +S'editable' +p42886 +I01 +sS'value' +p42887 +g47 +sssS'step_0' +p42888 +(dp42889 +S'mandatory' +p42890 +(dp42891 +S'editable' +p42892 +I00 +sS'value' +p42893 +I00 +ssS'name' +p42894 +(dp42895 +S'editable' +p42896 +I01 +sS'value' +p42897 +S'ALL TASKS' +p42898 +ssS'data_type' +p42899 +(dp42900 +S'editable' +p42901 +I00 +sS'value' +p42902 +S'pivot_column' +p42903 +ssS'entity_type' +p42904 +(dp42905 +S'editable' +p42906 +I00 +sS'value' +p42907 +S'Version' +p42908 +ssS'editable' +p42909 +(dp42910 +S'editable' +p42911 +I00 +sS'value' +p42912 +I00 +ssS'unique' +p42913 +(dp42914 +S'editable' +p42915 +I00 +sS'value' +p42916 +I00 +ssS'properties' +p42917 +(dp42918 +S'default_value' +p42919 +(dp42920 +S'editable' +p42921 +I00 +sS'value' +p42922 +NssS'summary_default' +p42923 +(dp42924 +S'editable' +p42925 +I00 +sS'value' +p42926 +S'none' +p42927 +sssS'description' +p42928 +(dp42929 +S'editable' +p42930 +I01 +sS'value' +p42931 +g47 +sssS'sg_last_frame' +p42932 +(dp42933 +S'mandatory' +p42934 +(dp42935 +S'editable' +p42936 +I00 +sS'value' +p42937 +I00 +ssS'name' +p42938 +(dp42939 +S'editable' +p42940 +I01 +sS'value' +p42941 +S'Last Frame' +p42942 +ssS'data_type' +p42943 +(dp42944 +S'editable' +p42945 +I00 +sS'value' +p42946 +S'number' +p42947 +ssS'entity_type' +p42948 +(dp42949 +S'editable' +p42950 +I00 +sS'value' +p42951 +S'Version' +p42952 +ssS'editable' +p42953 +(dp42954 +S'editable' +p42955 +I00 +sS'value' +p42956 +I01 +ssS'unique' +p42957 +(dp42958 +S'editable' +p42959 +I00 +sS'value' +p42960 +I00 +ssS'properties' +p42961 +(dp42962 +S'default_value' +p42963 +(dp42964 +S'editable' +p42965 +I00 +sS'value' +p42966 +NssS'summary_default' +p42967 +(dp42968 +S'editable' +p42969 +I01 +sS'value' +p42970 +S'none' +p42971 +sssS'description' +p42972 +(dp42973 +S'editable' +p42974 +I01 +sS'value' +p42975 +S'The last frame number contained in the Version. Used in playback of the movie or frames to calculate the last frame available in the Version.' +p42976 +sssS'viewed_by_current_user' +p42977 +(dp42978 +S'mandatory' +p42979 +(dp42980 +S'editable' +p42981 +I00 +sS'value' +p42982 +I00 +ssS'name' +p42983 +(dp42984 +S'editable' +p42985 +I01 +sS'value' +p42986 +S'Viewed/Unviewed' +p42987 +ssS'data_type' +p42988 +(dp42989 +S'editable' +p42990 +I00 +sS'value' +p42991 +S'list' +p42992 +ssS'entity_type' +p42993 +(dp42994 +S'editable' +p42995 +I00 +sS'value' +p42996 +S'Version' +p42997 +ssS'editable' +p42998 +(dp42999 +S'editable' +p43000 +I00 +sS'value' +p43001 +I01 +ssS'unique' +p43002 +(dp43003 +S'editable' +p43004 +I00 +sS'value' +p43005 +I00 +ssS'properties' +p43006 +(dp43007 +S'default_value' +p43008 +(dp43009 +S'editable' +p43010 +I00 +sS'value' +p43011 +NssS'valid_values' +p43012 +(dp43013 +S'editable' +p43014 +I00 +sS'value' +p43015 +(lp43016 +S'read' +p43017 +aS'unread' +p43018 +assS'summary_default' +p43019 +(dp43020 +S'editable' +p43021 +I00 +sS'value' +p43022 +S'none' +p43023 +sssS'description' +p43024 +(dp43025 +S'editable' +p43026 +I01 +sS'value' +p43027 +g47 +sssS'sg_uploaded_movie_transcoding_status' +p43028 +(dp43029 +S'mandatory' +p43030 +(dp43031 +S'editable' +p43032 +I00 +sS'value' +p43033 +I00 +ssS'name' +p43034 +(dp43035 +S'editable' +p43036 +I01 +sS'value' +p43037 +S'Uploaded Movie Transcoding Status' +p43038 +ssS'data_type' +p43039 +(dp43040 +S'editable' +p43041 +I00 +sS'value' +p43042 +S'number' +p43043 +ssS'entity_type' +p43044 +(dp43045 +S'editable' +p43046 +I00 +sS'value' +p43047 +S'Version' +p43048 +ssS'editable' +p43049 +(dp43050 +S'editable' +p43051 +I00 +sS'value' +p43052 +I01 +ssS'unique' +p43053 +(dp43054 +S'editable' +p43055 +I00 +sS'value' +p43056 +I00 +ssS'properties' +p43057 +(dp43058 +S'default_value' +p43059 +(dp43060 +S'editable' +p43061 +I00 +sS'value' +p43062 +NssS'summary_default' +p43063 +(dp43064 +S'editable' +p43065 +I00 +sS'value' +p43066 +S'none' +p43067 +sssS'description' +p43068 +(dp43069 +S'editable' +p43070 +I01 +sS'value' +p43071 +g47 +sssS'sg_movie_aspect_ratio' +p43072 +(dp43073 +S'mandatory' +p43074 +(dp43075 +S'editable' +p43076 +I00 +sS'value' +p43077 +I00 +ssS'name' +p43078 +(dp43079 +S'editable' +p43080 +I01 +sS'value' +p43081 +S'Movie Aspect Ratio' +p43082 +ssS'data_type' +p43083 +(dp43084 +S'editable' +p43085 +I00 +sS'value' +p43086 +S'float' +p43087 +ssS'entity_type' +p43088 +(dp43089 +S'editable' +p43090 +I00 +sS'value' +p43091 +S'Version' +p43092 +ssS'editable' +p43093 +(dp43094 +S'editable' +p43095 +I00 +sS'value' +p43096 +I01 +ssS'unique' +p43097 +(dp43098 +S'editable' +p43099 +I00 +sS'value' +p43100 +I00 +ssS'properties' +p43101 +(dp43102 +S'default_value' +p43103 +(dp43104 +S'editable' +p43105 +I00 +sS'value' +p43106 +NssS'summary_default' +p43107 +(dp43108 +S'editable' +p43109 +I01 +sS'value' +p43110 +S'none' +p43111 +sssS'description' +p43112 +(dp43113 +S'editable' +p43114 +I01 +sS'value' +p43115 +S'Aspect ratio of the the movie. Used to format the image correctly for viewing.' +p43116 +sssS'notes' +p43117 +(dp43118 +S'mandatory' +p43119 +(dp43120 +S'editable' +p43121 +I00 +sS'value' +p43122 +I00 +ssS'name' +p43123 +(dp43124 +S'editable' +p43125 +I01 +sS'value' +p43126 +S'Notes' +p43127 +ssS'data_type' +p43128 +(dp43129 +S'editable' +p43130 +I00 +sS'value' +p43131 +S'multi_entity' +p43132 +ssS'entity_type' +p43133 +(dp43134 +S'editable' +p43135 +I00 +sS'value' +p43136 +S'Version' +p43137 +ssS'editable' +p43138 +(dp43139 +S'editable' +p43140 +I00 +sS'value' +p43141 +I01 +ssS'unique' +p43142 +(dp43143 +S'editable' +p43144 +I00 +sS'value' +p43145 +I00 +ssS'properties' +p43146 +(dp43147 +S'default_value' +p43148 +(dp43149 +S'editable' +p43150 +I00 +sS'value' +p43151 +NssS'summary_default' +p43152 +(dp43153 +S'editable' +p43154 +I01 +sS'value' +p43155 +S'none' +p43156 +ssS'valid_types' +p43157 +(dp43158 +S'editable' +p43159 +I01 +sS'value' +p43160 +(lp43161 +S'Note' +p43162 +asssS'description' +p43163 +(dp43164 +S'editable' +p43165 +I01 +sS'value' +p43166 +g47 +sssS'project' +p43167 +(dp43168 +S'mandatory' +p43169 +(dp43170 +S'editable' +p43171 +I00 +sS'value' +p43172 +I00 +ssS'name' +p43173 +(dp43174 +S'editable' +p43175 +I01 +sS'value' +p43176 +S'Project' +p43177 +ssS'data_type' +p43178 +(dp43179 +S'editable' +p43180 +I00 +sS'value' +p43181 +S'entity' +p43182 +ssS'entity_type' +p43183 +(dp43184 +S'editable' +p43185 +I00 +sS'value' +p43186 +S'Version' +p43187 +ssS'editable' +p43188 +(dp43189 +S'editable' +p43190 +I00 +sS'value' +p43191 +I01 +ssS'unique' +p43192 +(dp43193 +S'editable' +p43194 +I00 +sS'value' +p43195 +I00 +ssS'properties' +p43196 +(dp43197 +S'default_value' +p43198 +(dp43199 +S'editable' +p43200 +I00 +sS'value' +p43201 +NssS'summary_default' +p43202 +(dp43203 +S'editable' +p43204 +I01 +sS'value' +p43205 +S'none' +p43206 +ssS'valid_types' +p43207 +(dp43208 +S'editable' +p43209 +I01 +sS'value' +p43210 +(lp43211 +S'Project' +p43212 +asssS'description' +p43213 +(dp43214 +S'editable' +p43215 +I01 +sS'value' +p43216 +g47 +sssS'filmstrip_image' +p43217 +(dp43218 +S'mandatory' +p43219 +(dp43220 +S'editable' +p43221 +I00 +sS'value' +p43222 +I00 +ssS'name' +p43223 +(dp43224 +S'editable' +p43225 +I01 +sS'value' +p43226 +S'Filmstrip Thumbnail' +p43227 +ssS'data_type' +p43228 +(dp43229 +S'editable' +p43230 +I00 +sS'value' +p43231 +S'image' +p43232 +ssS'entity_type' +p43233 +(dp43234 +S'editable' +p43235 +I00 +sS'value' +p43236 +S'Version' +p43237 +ssS'editable' +p43238 +(dp43239 +S'editable' +p43240 +I00 +sS'value' +p43241 +I01 +ssS'unique' +p43242 +(dp43243 +S'editable' +p43244 +I00 +sS'value' +p43245 +I00 +ssS'properties' +p43246 +(dp43247 +S'default_value' +p43248 +(dp43249 +S'editable' +p43250 +I00 +sS'value' +p43251 +NssS'summary_default' +p43252 +(dp43253 +S'editable' +p43254 +I01 +sS'value' +p43255 +S'none' +p43256 +sssS'description' +p43257 +(dp43258 +S'editable' +p43259 +I01 +sS'value' +p43260 +g47 +sssS'tag_list' +p43261 +(dp43262 +S'mandatory' +p43263 +(dp43264 +S'editable' +p43265 +I00 +sS'value' +p43266 +I00 +ssS'name' +p43267 +(dp43268 +S'editable' +p43269 +I01 +sS'value' +p43270 +S'Tags' +p43271 +ssS'data_type' +p43272 +(dp43273 +S'editable' +p43274 +I00 +sS'value' +p43275 +S'tag_list' +p43276 +ssS'entity_type' +p43277 +(dp43278 +S'editable' +p43279 +I00 +sS'value' +p43280 +S'Version' +p43281 +ssS'editable' +p43282 +(dp43283 +S'editable' +p43284 +I00 +sS'value' +p43285 +I01 +ssS'unique' +p43286 +(dp43287 +S'editable' +p43288 +I00 +sS'value' +p43289 +I00 +ssS'properties' +p43290 +(dp43291 +S'default_value' +p43292 +(dp43293 +S'editable' +p43294 +I00 +sS'value' +p43295 +NssS'summary_default' +p43296 +(dp43297 +S'editable' +p43298 +I01 +sS'value' +p43299 +S'none' +p43300 +ssS'valid_types' +p43301 +(dp43302 +S'editable' +p43303 +I01 +sS'value' +p43304 +(lp43305 +S'Tag' +p43306 +asssS'description' +p43307 +(dp43308 +S'editable' +p43309 +I01 +sS'value' +p43310 +g47 +sssS'frame_count' +p43311 +(dp43312 +S'mandatory' +p43313 +(dp43314 +S'editable' +p43315 +I00 +sS'value' +p43316 +I00 +ssS'name' +p43317 +(dp43318 +S'editable' +p43319 +I01 +sS'value' +p43320 +S'Frame Count' +p43321 +ssS'data_type' +p43322 +(dp43323 +S'editable' +p43324 +I00 +sS'value' +p43325 +S'number' +p43326 +ssS'entity_type' +p43327 +(dp43328 +S'editable' +p43329 +I00 +sS'value' +p43330 +S'Version' +p43331 +ssS'editable' +p43332 +(dp43333 +S'editable' +p43334 +I00 +sS'value' +p43335 +I01 +ssS'unique' +p43336 +(dp43337 +S'editable' +p43338 +I00 +sS'value' +p43339 +I00 +ssS'properties' +p43340 +(dp43341 +S'default_value' +p43342 +(dp43343 +S'editable' +p43344 +I00 +sS'value' +p43345 +NssS'summary_default' +p43346 +(dp43347 +S'editable' +p43348 +I01 +sS'value' +p43349 +S'none' +p43350 +sssS'description' +p43351 +(dp43352 +S'editable' +p43353 +I01 +sS'value' +p43354 +g47 +sssS'flagged' +p43355 +(dp43356 +S'mandatory' +p43357 +(dp43358 +S'editable' +p43359 +I00 +sS'value' +p43360 +I00 +ssS'name' +p43361 +(dp43362 +S'editable' +p43363 +I01 +sS'value' +p43364 +S'Flagged' +p43365 +ssS'data_type' +p43366 +(dp43367 +S'editable' +p43368 +I00 +sS'value' +p43369 +S'checkbox' +p43370 +ssS'entity_type' +p43371 +(dp43372 +S'editable' +p43373 +I00 +sS'value' +p43374 +S'Version' +p43375 +ssS'editable' +p43376 +(dp43377 +S'editable' +p43378 +I00 +sS'value' +p43379 +I01 +ssS'unique' +p43380 +(dp43381 +S'editable' +p43382 +I00 +sS'value' +p43383 +I00 +ssS'properties' +p43384 +(dp43385 +S'default_value' +p43386 +(dp43387 +S'editable' +p43388 +I00 +sS'value' +p43389 +I00 +ssS'summary_default' +p43390 +(dp43391 +S'editable' +p43392 +I00 +sS'value' +p43393 +S'none' +p43394 +sssS'description' +p43395 +(dp43396 +S'editable' +p43397 +I01 +sS'value' +p43398 +g47 +ssssS'ElementShotConnection' +p43399 +(dp43400 +S'cached_display_name' +p43401 +(dp43402 +S'mandatory' +p43403 +(dp43404 +S'editable' +p43405 +I00 +sS'value' +p43406 +I00 +ssS'name' +p43407 +(dp43408 +S'editable' +p43409 +I01 +sS'value' +p43410 +S'Cached Display Name' +p43411 +ssS'data_type' +p43412 +(dp43413 +S'editable' +p43414 +I00 +sS'value' +p43415 +S'text' +p43416 +ssS'entity_type' +p43417 +(dp43418 +S'editable' +p43419 +I00 +sS'value' +p43420 +S'ElementShotConnection' +p43421 +ssS'editable' +p43422 +(dp43423 +S'editable' +p43424 +I00 +sS'value' +p43425 +I01 +ssS'unique' +p43426 +(dp43427 +S'editable' +p43428 +I00 +sS'value' +p43429 +I00 +ssS'properties' +p43430 +(dp43431 +S'default_value' +p43432 +(dp43433 +S'editable' +p43434 +I00 +sS'value' +p43435 +NssS'summary_default' +p43436 +(dp43437 +S'editable' +p43438 +I00 +sS'value' +p43439 +S'none' +p43440 +sssS'description' +p43441 +(dp43442 +S'editable' +p43443 +I01 +sS'value' +p43444 +g47 +sssS'shot' +p43445 +(dp43446 +S'mandatory' +p43447 +(dp43448 +S'editable' +p43449 +I00 +sS'value' +p43450 +I00 +ssS'name' +p43451 +(dp43452 +S'editable' +p43453 +I01 +sS'value' +p43454 +S'Shot' +p43455 +ssS'data_type' +p43456 +(dp43457 +S'editable' +p43458 +I00 +sS'value' +p43459 +S'entity' +p43460 +ssS'entity_type' +p43461 +(dp43462 +S'editable' +p43463 +I00 +sS'value' +p43464 +S'ElementShotConnection' +p43465 +ssS'editable' +p43466 +(dp43467 +S'editable' +p43468 +I00 +sS'value' +p43469 +I00 +ssS'unique' +p43470 +(dp43471 +S'editable' +p43472 +I00 +sS'value' +p43473 +I00 +ssS'properties' +p43474 +(dp43475 +S'default_value' +p43476 +(dp43477 +S'editable' +p43478 +I00 +sS'value' +p43479 +NssS'summary_default' +p43480 +(dp43481 +S'editable' +p43482 +I00 +sS'value' +p43483 +S'none' +p43484 +ssS'valid_types' +p43485 +(dp43486 +S'editable' +p43487 +I00 +sS'value' +p43488 +(lp43489 +S'Shot' +p43490 +asssS'description' +p43491 +(dp43492 +S'editable' +p43493 +I01 +sS'value' +p43494 +g47 +sssS'id' +p43495 +(dp43496 +S'mandatory' +p43497 +(dp43498 +S'editable' +p43499 +I00 +sS'value' +p43500 +I01 +ssS'name' +p43501 +(dp43502 +S'editable' +p43503 +I01 +sS'value' +p43504 +S'Id' +p43505 +ssS'data_type' +p43506 +(dp43507 +S'editable' +p43508 +I00 +sS'value' +p43509 +S'number' +p43510 +ssS'entity_type' +p43511 +(dp43512 +S'editable' +p43513 +I00 +sS'value' +p43514 +S'ElementShotConnection' +p43515 +ssS'editable' +p43516 +(dp43517 +S'editable' +p43518 +I00 +sS'value' +p43519 +I00 +ssS'unique' +p43520 +(dp43521 +S'editable' +p43522 +I00 +sS'value' +p43523 +I00 +ssS'properties' +p43524 +(dp43525 +S'default_value' +p43526 +(dp43527 +S'editable' +p43528 +I00 +sS'value' +p43529 +NssS'summary_default' +p43530 +(dp43531 +S'editable' +p43532 +I00 +sS'value' +p43533 +S'none' +p43534 +sssS'description' +p43535 +(dp43536 +S'editable' +p43537 +I01 +sS'value' +p43538 +g47 +sssS'element' +p43539 +(dp43540 +S'mandatory' +p43541 +(dp43542 +S'editable' +p43543 +I00 +sS'value' +p43544 +I00 +ssS'name' +p43545 +(dp43546 +S'editable' +p43547 +I01 +sS'value' +p43548 +S'Element' +p43549 +ssS'data_type' +p43550 +(dp43551 +S'editable' +p43552 +I00 +sS'value' +p43553 +S'entity' +p43554 +ssS'entity_type' +p43555 +(dp43556 +S'editable' +p43557 +I00 +sS'value' +p43558 +S'ElementShotConnection' +p43559 +ssS'editable' +p43560 +(dp43561 +S'editable' +p43562 +I00 +sS'value' +p43563 +I00 +ssS'unique' +p43564 +(dp43565 +S'editable' +p43566 +I00 +sS'value' +p43567 +I00 +ssS'properties' +p43568 +(dp43569 +S'default_value' +p43570 +(dp43571 +S'editable' +p43572 +I00 +sS'value' +p43573 +NssS'summary_default' +p43574 +(dp43575 +S'editable' +p43576 +I00 +sS'value' +p43577 +S'none' +p43578 +ssS'valid_types' +p43579 +(dp43580 +S'editable' +p43581 +I00 +sS'value' +p43582 +(lp43583 +S'Element' +p43584 +asssS'description' +p43585 +(dp43586 +S'editable' +p43587 +I01 +sS'value' +p43588 +g47 +ssssS'HumanUser' +p43589 +(dp43590 +S'file_access' +p43591 +(dp43592 +S'mandatory' +p43593 +(dp43594 +S'editable' +p43595 +I00 +sS'value' +p43596 +I00 +ssS'name' +p43597 +(dp43598 +S'editable' +p43599 +I01 +sS'value' +p43600 +S'File Access' +p43601 +ssS'data_type' +p43602 +(dp43603 +S'editable' +p43604 +I00 +sS'value' +p43605 +S'checkbox' +p43606 +ssS'entity_type' +p43607 +(dp43608 +S'editable' +p43609 +I00 +sS'value' +p43610 +S'HumanUser' +p43611 +ssS'editable' +p43612 +(dp43613 +S'editable' +p43614 +I00 +sS'value' +p43615 +I01 +ssS'unique' +p43616 +(dp43617 +S'editable' +p43618 +I00 +sS'value' +p43619 +I00 +ssS'properties' +p43620 +(dp43621 +S'default_value' +p43622 +(dp43623 +S'editable' +p43624 +I00 +sS'value' +p43625 +I01 +ssS'summary_default' +p43626 +(dp43627 +S'editable' +p43628 +I01 +sS'value' +p43629 +S'none' +p43630 +sssS'description' +p43631 +(dp43632 +S'editable' +p43633 +I01 +sS'value' +p43634 +g47 +sssS'email_all_deliveries' +p43635 +(dp43636 +S'mandatory' +p43637 +(dp43638 +S'editable' +p43639 +I00 +sS'value' +p43640 +I00 +ssS'name' +p43641 +(dp43642 +S'editable' +p43643 +I01 +sS'value' +p43644 +S'Subscribe to All Delivery Emails' +p43645 +ssS'data_type' +p43646 +(dp43647 +S'editable' +p43648 +I00 +sS'value' +p43649 +S'checkbox' +p43650 +ssS'entity_type' +p43651 +(dp43652 +S'editable' +p43653 +I00 +sS'value' +p43654 +S'HumanUser' +p43655 +ssS'editable' +p43656 +(dp43657 +S'editable' +p43658 +I00 +sS'value' +p43659 +I01 +ssS'unique' +p43660 +(dp43661 +S'editable' +p43662 +I00 +sS'value' +p43663 +I00 +ssS'properties' +p43664 +(dp43665 +S'default_value' +p43666 +(dp43667 +S'editable' +p43668 +I00 +sS'value' +p43669 +I00 +ssS'summary_default' +p43670 +(dp43671 +S'editable' +p43672 +I01 +sS'value' +p43673 +S'none' +p43674 +sssS'description' +p43675 +(dp43676 +S'editable' +p43677 +I01 +sS'value' +p43678 +g47 +sssS'email_notes' +p43679 +(dp43680 +S'mandatory' +p43681 +(dp43682 +S'editable' +p43683 +I00 +sS'value' +p43684 +I00 +ssS'name' +p43685 +(dp43686 +S'editable' +p43687 +I01 +sS'value' +p43688 +S'Subscribe to My Notes Emails' +p43689 +ssS'data_type' +p43690 +(dp43691 +S'editable' +p43692 +I00 +sS'value' +p43693 +S'checkbox' +p43694 +ssS'entity_type' +p43695 +(dp43696 +S'editable' +p43697 +I00 +sS'value' +p43698 +S'HumanUser' +p43699 +ssS'editable' +p43700 +(dp43701 +S'editable' +p43702 +I00 +sS'value' +p43703 +I01 +ssS'unique' +p43704 +(dp43705 +S'editable' +p43706 +I00 +sS'value' +p43707 +I00 +ssS'properties' +p43708 +(dp43709 +S'default_value' +p43710 +(dp43711 +S'editable' +p43712 +I00 +sS'value' +p43713 +I00 +ssS'summary_default' +p43714 +(dp43715 +S'editable' +p43716 +I01 +sS'value' +p43717 +S'none' +p43718 +sssS'description' +p43719 +(dp43720 +S'editable' +p43721 +I01 +sS'value' +p43722 +g47 +sssS'image' +p43723 +(dp43724 +S'mandatory' +p43725 +(dp43726 +S'editable' +p43727 +I00 +sS'value' +p43728 +I00 +ssS'name' +p43729 +(dp43730 +S'editable' +p43731 +I01 +sS'value' +p43732 +S'Thumbnail' +p43733 +ssS'data_type' +p43734 +(dp43735 +S'editable' +p43736 +I00 +sS'value' +p43737 +S'image' +p43738 +ssS'entity_type' +p43739 +(dp43740 +S'editable' +p43741 +I00 +sS'value' +p43742 +S'HumanUser' +p43743 +ssS'editable' +p43744 +(dp43745 +S'editable' +p43746 +I00 +sS'value' +p43747 +I01 +ssS'unique' +p43748 +(dp43749 +S'editable' +p43750 +I00 +sS'value' +p43751 +I00 +ssS'properties' +p43752 +(dp43753 +S'default_value' +p43754 +(dp43755 +S'editable' +p43756 +I00 +sS'value' +p43757 +NssS'summary_default' +p43758 +(dp43759 +S'editable' +p43760 +I01 +sS'value' +p43761 +S'none' +p43762 +sssS'description' +p43763 +(dp43764 +S'editable' +p43765 +I01 +sS'value' +p43766 +g47 +sssS'updated_at' +p43767 +(dp43768 +S'mandatory' +p43769 +(dp43770 +S'editable' +p43771 +I00 +sS'value' +p43772 +I00 +ssS'name' +p43773 +(dp43774 +S'editable' +p43775 +I01 +sS'value' +p43776 +S'Date Updated' +p43777 +ssS'data_type' +p43778 +(dp43779 +S'editable' +p43780 +I00 +sS'value' +p43781 +S'date_time' +p43782 +ssS'entity_type' +p43783 +(dp43784 +S'editable' +p43785 +I00 +sS'value' +p43786 +S'HumanUser' +p43787 +ssS'editable' +p43788 +(dp43789 +S'editable' +p43790 +I00 +sS'value' +p43791 +I00 +ssS'unique' +p43792 +(dp43793 +S'editable' +p43794 +I00 +sS'value' +p43795 +I00 +ssS'properties' +p43796 +(dp43797 +S'default_value' +p43798 +(dp43799 +S'editable' +p43800 +I00 +sS'value' +p43801 +NssS'summary_default' +p43802 +(dp43803 +S'editable' +p43804 +I01 +sS'value' +p43805 +S'none' +p43806 +sssS'description' +p43807 +(dp43808 +S'editable' +p43809 +I01 +sS'value' +p43810 +g47 +sssS'password_change_next_login' +p43811 +(dp43812 +S'mandatory' +p43813 +(dp43814 +S'editable' +p43815 +I00 +sS'value' +p43816 +I00 +ssS'name' +p43817 +(dp43818 +S'editable' +p43819 +I01 +sS'value' +p43820 +S'Require a change of password at the next sign in' +p43821 +ssS'data_type' +p43822 +(dp43823 +S'editable' +p43824 +I00 +sS'value' +p43825 +S'checkbox' +p43826 +ssS'entity_type' +p43827 +(dp43828 +S'editable' +p43829 +I00 +sS'value' +p43830 +S'HumanUser' +p43831 +ssS'editable' +p43832 +(dp43833 +S'editable' +p43834 +I00 +sS'value' +p43835 +I01 +ssS'unique' +p43836 +(dp43837 +S'editable' +p43838 +I00 +sS'value' +p43839 +I00 +ssS'properties' +p43840 +(dp43841 +S'default_value' +p43842 +(dp43843 +S'editable' +p43844 +I00 +sS'value' +p43845 +I00 +ssS'summary_default' +p43846 +(dp43847 +S'editable' +p43848 +I00 +sS'value' +p43849 +S'none' +p43850 +sssS'description' +p43851 +(dp43852 +S'editable' +p43853 +I01 +sS'value' +p43854 +g47 +sssS'email_inbox_general' +p43855 +(dp43856 +S'mandatory' +p43857 +(dp43858 +S'editable' +p43859 +I00 +sS'value' +p43860 +I00 +ssS'name' +p43861 +(dp43862 +S'editable' +p43863 +I01 +sS'value' +p43864 +S'Subscribe to My Inbox Update Emails' +p43865 +ssS'data_type' +p43866 +(dp43867 +S'editable' +p43868 +I00 +sS'value' +p43869 +S'checkbox' +p43870 +ssS'entity_type' +p43871 +(dp43872 +S'editable' +p43873 +I00 +sS'value' +p43874 +S'HumanUser' +p43875 +ssS'editable' +p43876 +(dp43877 +S'editable' +p43878 +I00 +sS'value' +p43879 +I01 +ssS'unique' +p43880 +(dp43881 +S'editable' +p43882 +I00 +sS'value' +p43883 +I00 +ssS'properties' +p43884 +(dp43885 +S'default_value' +p43886 +(dp43887 +S'editable' +p43888 +I00 +sS'value' +p43889 +NssS'summary_default' +p43890 +(dp43891 +S'editable' +p43892 +I01 +sS'value' +p43893 +S'none' +p43894 +sssS'description' +p43895 +(dp43896 +S'editable' +p43897 +I01 +sS'value' +p43898 +g47 +sssS'bookings' +p43899 +(dp43900 +S'mandatory' +p43901 +(dp43902 +S'editable' +p43903 +I00 +sS'value' +p43904 +I00 +ssS'name' +p43905 +(dp43906 +S'editable' +p43907 +I01 +sS'value' +p43908 +S'Bookings' +p43909 +ssS'data_type' +p43910 +(dp43911 +S'editable' +p43912 +I00 +sS'value' +p43913 +S'multi_entity' +p43914 +ssS'entity_type' +p43915 +(dp43916 +S'editable' +p43917 +I00 +sS'value' +p43918 +S'HumanUser' +p43919 +ssS'editable' +p43920 +(dp43921 +S'editable' +p43922 +I00 +sS'value' +p43923 +I00 +ssS'unique' +p43924 +(dp43925 +S'editable' +p43926 +I00 +sS'value' +p43927 +I00 +ssS'properties' +p43928 +(dp43929 +S'default_value' +p43930 +(dp43931 +S'editable' +p43932 +I00 +sS'value' +p43933 +NssS'summary_default' +p43934 +(dp43935 +S'editable' +p43936 +I00 +sS'value' +p43937 +S'none' +p43938 +ssS'valid_types' +p43939 +(dp43940 +S'editable' +p43941 +I00 +sS'value' +p43942 +(lp43943 +S'Booking' +p43944 +asssS'description' +p43945 +(dp43946 +S'editable' +p43947 +I01 +sS'value' +p43948 +g47 +sssS'banners' +p43949 +(dp43950 +S'mandatory' +p43951 +(dp43952 +S'editable' +p43953 +I00 +sS'value' +p43954 +I00 +ssS'name' +p43955 +(dp43956 +S'editable' +p43957 +I01 +sS'value' +p43958 +S'Banners' +p43959 +ssS'data_type' +p43960 +(dp43961 +S'editable' +p43962 +I00 +sS'value' +p43963 +S'multi_entity' +p43964 +ssS'entity_type' +p43965 +(dp43966 +S'editable' +p43967 +I00 +sS'value' +p43968 +S'HumanUser' +p43969 +ssS'editable' +p43970 +(dp43971 +S'editable' +p43972 +I00 +sS'value' +p43973 +I01 +ssS'unique' +p43974 +(dp43975 +S'editable' +p43976 +I00 +sS'value' +p43977 +I00 +ssS'properties' +p43978 +(dp43979 +S'default_value' +p43980 +(dp43981 +S'editable' +p43982 +I00 +sS'value' +p43983 +NssS'summary_default' +p43984 +(dp43985 +S'editable' +p43986 +I00 +sS'value' +p43987 +S'none' +p43988 +ssS'valid_types' +p43989 +(dp43990 +S'editable' +p43991 +I00 +sS'value' +p43992 +(lp43993 +S'Banners' +p43994 +asssS'description' +p43995 +(dp43996 +S'editable' +p43997 +I01 +sS'value' +p43998 +g47 +sssS'locked_until' +p43999 +(dp44000 +S'mandatory' +p44001 +(dp44002 +S'editable' +p44003 +I00 +sS'value' +p44004 +I00 +ssS'name' +p44005 +(dp44006 +S'editable' +p44007 +I01 +sS'value' +p44008 +S'Locked Until' +p44009 +ssS'data_type' +p44010 +(dp44011 +S'editable' +p44012 +I00 +sS'value' +p44013 +S'date_time' +p44014 +ssS'entity_type' +p44015 +(dp44016 +S'editable' +p44017 +I00 +sS'value' +p44018 +S'HumanUser' +p44019 +ssS'editable' +p44020 +(dp44021 +S'editable' +p44022 +I00 +sS'value' +p44023 +I01 +ssS'unique' +p44024 +(dp44025 +S'editable' +p44026 +I00 +sS'value' +p44027 +I00 +ssS'properties' +p44028 +(dp44029 +S'default_value' +p44030 +(dp44031 +S'editable' +p44032 +I00 +sS'value' +p44033 +NssS'summary_default' +p44034 +(dp44035 +S'editable' +p44036 +I00 +sS'value' +p44037 +S'none' +p44038 +sssS'description' +p44039 +(dp44040 +S'editable' +p44041 +I01 +sS'value' +p44042 +g47 +sssS'password_proxy' +p44043 +(dp44044 +S'mandatory' +p44045 +(dp44046 +S'editable' +p44047 +I00 +sS'value' +p44048 +I00 +ssS'name' +p44049 +(dp44050 +S'editable' +p44051 +I01 +sS'value' +p44052 +S'Password' +p44053 +ssS'data_type' +p44054 +(dp44055 +S'editable' +p44056 +I00 +sS'value' +p44057 +S'password' +p44058 +ssS'entity_type' +p44059 +(dp44060 +S'editable' +p44061 +I00 +sS'value' +p44062 +S'HumanUser' +p44063 +ssS'editable' +p44064 +(dp44065 +S'editable' +p44066 +I00 +sS'value' +p44067 +I00 +ssS'unique' +p44068 +(dp44069 +S'editable' +p44070 +I00 +sS'value' +p44071 +I00 +ssS'properties' +p44072 +(dp44073 +S'default_value' +p44074 +(dp44075 +S'editable' +p44076 +I00 +sS'value' +p44077 +NssS'summary_default' +p44078 +(dp44079 +S'editable' +p44080 +I01 +sS'value' +p44081 +S'none' +p44082 +sssS'description' +p44083 +(dp44084 +S'editable' +p44085 +I01 +sS'value' +p44086 +g47 +sssS'cached_display_name' +p44087 +(dp44088 +S'mandatory' +p44089 +(dp44090 +S'editable' +p44091 +I00 +sS'value' +p44092 +I00 +ssS'name' +p44093 +(dp44094 +S'editable' +p44095 +I01 +sS'value' +p44096 +S'Cached Display Name' +p44097 +ssS'data_type' +p44098 +(dp44099 +S'editable' +p44100 +I00 +sS'value' +p44101 +S'text' +p44102 +ssS'entity_type' +p44103 +(dp44104 +S'editable' +p44105 +I00 +sS'value' +p44106 +S'HumanUser' +p44107 +ssS'editable' +p44108 +(dp44109 +S'editable' +p44110 +I00 +sS'value' +p44111 +I01 +ssS'unique' +p44112 +(dp44113 +S'editable' +p44114 +I00 +sS'value' +p44115 +I00 +ssS'properties' +p44116 +(dp44117 +S'default_value' +p44118 +(dp44119 +S'editable' +p44120 +I00 +sS'value' +p44121 +NssS'summary_default' +p44122 +(dp44123 +S'editable' +p44124 +I00 +sS'value' +p44125 +S'none' +p44126 +sssS'description' +p44127 +(dp44128 +S'editable' +p44129 +I01 +sS'value' +p44130 +g47 +sssS'id' +p44131 +(dp44132 +S'mandatory' +p44133 +(dp44134 +S'editable' +p44135 +I00 +sS'value' +p44136 +I00 +ssS'name' +p44137 +(dp44138 +S'editable' +p44139 +I01 +sS'value' +p44140 +S'Id' +p44141 +ssS'data_type' +p44142 +(dp44143 +S'editable' +p44144 +I00 +sS'value' +p44145 +S'number' +p44146 +ssS'entity_type' +p44147 +(dp44148 +S'editable' +p44149 +I00 +sS'value' +p44150 +S'HumanUser' +p44151 +ssS'editable' +p44152 +(dp44153 +S'editable' +p44154 +I00 +sS'value' +p44155 +I00 +ssS'unique' +p44156 +(dp44157 +S'editable' +p44158 +I00 +sS'value' +p44159 +I00 +ssS'properties' +p44160 +(dp44161 +S'default_value' +p44162 +(dp44163 +S'editable' +p44164 +I00 +sS'value' +p44165 +NssS'summary_default' +p44166 +(dp44167 +S'editable' +p44168 +I01 +sS'value' +p44169 +S'none' +p44170 +sssS'description' +p44171 +(dp44172 +S'editable' +p44173 +I01 +sS'value' +p44174 +g47 +sssS'email_version_link_cc' +p44175 +(dp44176 +S'mandatory' +p44177 +(dp44178 +S'editable' +p44179 +I00 +sS'value' +p44180 +I00 +ssS'name' +p44181 +(dp44182 +S'editable' +p44183 +I01 +sS'value' +p44184 +S"Subscribe to Version Emails for CC'd Link" +p44185 +ssS'data_type' +p44186 +(dp44187 +S'editable' +p44188 +I00 +sS'value' +p44189 +S'checkbox' +p44190 +ssS'entity_type' +p44191 +(dp44192 +S'editable' +p44193 +I00 +sS'value' +p44194 +S'HumanUser' +p44195 +ssS'editable' +p44196 +(dp44197 +S'editable' +p44198 +I00 +sS'value' +p44199 +I01 +ssS'unique' +p44200 +(dp44201 +S'editable' +p44202 +I00 +sS'value' +p44203 +I00 +ssS'properties' +p44204 +(dp44205 +S'default_value' +p44206 +(dp44207 +S'editable' +p44208 +I00 +sS'value' +p44209 +I00 +ssS'summary_default' +p44210 +(dp44211 +S'editable' +p44212 +I01 +sS'value' +p44213 +S'none' +p44214 +sssS'description' +p44215 +(dp44216 +S'editable' +p44217 +I01 +sS'value' +p44218 +g47 +sssS'home_page' +p44219 +(dp44220 +S'mandatory' +p44221 +(dp44222 +S'editable' +p44223 +I00 +sS'value' +p44224 +I00 +ssS'name' +p44225 +(dp44226 +S'editable' +p44227 +I01 +sS'value' +p44228 +S'Home Page' +p44229 +ssS'data_type' +p44230 +(dp44231 +S'editable' +p44232 +I00 +sS'value' +p44233 +S'list' +p44234 +ssS'entity_type' +p44235 +(dp44236 +S'editable' +p44237 +I00 +sS'value' +p44238 +S'HumanUser' +p44239 +ssS'editable' +p44240 +(dp44241 +S'editable' +p44242 +I00 +sS'value' +p44243 +I01 +ssS'unique' +p44244 +(dp44245 +S'editable' +p44246 +I00 +sS'value' +p44247 +I00 +ssS'properties' +p44248 +(dp44249 +S'default_value' +p44250 +(dp44251 +S'editable' +p44252 +I00 +sS'value' +p44253 +NssS'valid_values' +p44254 +(dp44255 +S'editable' +p44256 +I00 +sS'value' +p44257 +(lp44258 +S'home' +p44259 +aS'inbox' +p44260 +aS'my_tasks' +p44261 +aS'new_user_welcome' +p44262 +assS'summary_default' +p44263 +(dp44264 +S'editable' +p44265 +I00 +sS'value' +p44266 +S'none' +p44267 +sssS'description' +p44268 +(dp44269 +S'editable' +p44270 +I01 +sS'value' +p44271 +g47 +sssS'email_versions' +p44272 +(dp44273 +S'mandatory' +p44274 +(dp44275 +S'editable' +p44276 +I00 +sS'value' +p44277 +I00 +ssS'name' +p44278 +(dp44279 +S'editable' +p44280 +I01 +sS'value' +p44281 +S'Subscribe to My Version Emails' +p44282 +ssS'data_type' +p44283 +(dp44284 +S'editable' +p44285 +I00 +sS'value' +p44286 +S'checkbox' +p44287 +ssS'entity_type' +p44288 +(dp44289 +S'editable' +p44290 +I00 +sS'value' +p44291 +S'HumanUser' +p44292 +ssS'editable' +p44293 +(dp44294 +S'editable' +p44295 +I00 +sS'value' +p44296 +I01 +ssS'unique' +p44297 +(dp44298 +S'editable' +p44299 +I00 +sS'value' +p44300 +I00 +ssS'properties' +p44301 +(dp44302 +S'default_value' +p44303 +(dp44304 +S'editable' +p44305 +I00 +sS'value' +p44306 +I00 +ssS'summary_default' +p44307 +(dp44308 +S'editable' +p44309 +I01 +sS'value' +p44310 +S'none' +p44311 +sssS'description' +p44312 +(dp44313 +S'editable' +p44314 +I01 +sS'value' +p44315 +g47 +sssS'created_by' +p44316 +(dp44317 +S'mandatory' +p44318 +(dp44319 +S'editable' +p44320 +I00 +sS'value' +p44321 +I00 +ssS'name' +p44322 +(dp44323 +S'editable' +p44324 +I01 +sS'value' +p44325 +S'Created by' +p44326 +ssS'data_type' +p44327 +(dp44328 +S'editable' +p44329 +I00 +sS'value' +p44330 +S'entity' +p44331 +ssS'entity_type' +p44332 +(dp44333 +S'editable' +p44334 +I00 +sS'value' +p44335 +S'HumanUser' +p44336 +ssS'editable' +p44337 +(dp44338 +S'editable' +p44339 +I00 +sS'value' +p44340 +I00 +ssS'unique' +p44341 +(dp44342 +S'editable' +p44343 +I00 +sS'value' +p44344 +I00 +ssS'properties' +p44345 +(dp44346 +S'default_value' +p44347 +(dp44348 +S'editable' +p44349 +I00 +sS'value' +p44350 +NssS'summary_default' +p44351 +(dp44352 +S'editable' +p44353 +I01 +sS'value' +p44354 +S'none' +p44355 +ssS'valid_types' +p44356 +(dp44357 +S'editable' +p44358 +I01 +sS'value' +p44359 +(lp44360 +S'HumanUser' +p44361 +aS'ApiUser' +p44362 +asssS'description' +p44363 +(dp44364 +S'editable' +p44365 +I01 +sS'value' +p44366 +g47 +sssS'sg_status_list' +p44367 +(dp44368 +S'mandatory' +p44369 +(dp44370 +S'editable' +p44371 +I00 +sS'value' +p44372 +I00 +ssS'name' +p44373 +(dp44374 +S'editable' +p44375 +I01 +sS'value' +p44376 +S'Status' +p44377 +ssS'data_type' +p44378 +(dp44379 +S'editable' +p44380 +I00 +sS'value' +p44381 +S'status_list' +p44382 +ssS'entity_type' +p44383 +(dp44384 +S'editable' +p44385 +I00 +sS'value' +p44386 +S'HumanUser' +p44387 +ssS'editable' +p44388 +(dp44389 +S'editable' +p44390 +I00 +sS'value' +p44391 +I01 +ssS'unique' +p44392 +(dp44393 +S'editable' +p44394 +I00 +sS'value' +p44395 +I00 +ssS'properties' +p44396 +(dp44397 +S'default_value' +p44398 +(dp44399 +S'editable' +p44400 +I01 +sS'value' +p44401 +S'act' +p44402 +ssS'valid_values' +p44403 +(dp44404 +S'editable' +p44405 +I01 +sS'value' +p44406 +(lp44407 +S'act' +p44408 +aS'dis' +p44409 +assS'summary_default' +p44410 +(dp44411 +S'editable' +p44412 +I01 +sS'value' +p44413 +S'none' +p44414 +sssS'description' +p44415 +(dp44416 +S'editable' +p44417 +I01 +sS'value' +p44418 +g47 +sssS'department' +p44419 +(dp44420 +S'mandatory' +p44421 +(dp44422 +S'editable' +p44423 +I00 +sS'value' +p44424 +I00 +ssS'name' +p44425 +(dp44426 +S'editable' +p44427 +I01 +sS'value' +p44428 +S'Department' +p44429 +ssS'data_type' +p44430 +(dp44431 +S'editable' +p44432 +I00 +sS'value' +p44433 +S'entity' +p44434 +ssS'entity_type' +p44435 +(dp44436 +S'editable' +p44437 +I00 +sS'value' +p44438 +S'HumanUser' +p44439 +ssS'editable' +p44440 +(dp44441 +S'editable' +p44442 +I00 +sS'value' +p44443 +I01 +ssS'unique' +p44444 +(dp44445 +S'editable' +p44446 +I00 +sS'value' +p44447 +I00 +ssS'properties' +p44448 +(dp44449 +S'default_value' +p44450 +(dp44451 +S'editable' +p44452 +I00 +sS'value' +p44453 +NssS'summary_default' +p44454 +(dp44455 +S'editable' +p44456 +I01 +sS'value' +p44457 +S'none' +p44458 +ssS'valid_types' +p44459 +(dp44460 +S'editable' +p44461 +I01 +sS'value' +p44462 +(lp44463 +S'Department' +p44464 +asssS'description' +p44465 +(dp44466 +S'editable' +p44467 +I01 +sS'value' +p44468 +g47 +sssS'email_tickets' +p44469 +(dp44470 +S'mandatory' +p44471 +(dp44472 +S'editable' +p44473 +I00 +sS'value' +p44474 +I00 +ssS'name' +p44475 +(dp44476 +S'editable' +p44477 +I01 +sS'value' +p44478 +S'Subscribe to My Tickets Emails' +p44479 +ssS'data_type' +p44480 +(dp44481 +S'editable' +p44482 +I00 +sS'value' +p44483 +S'checkbox' +p44484 +ssS'entity_type' +p44485 +(dp44486 +S'editable' +p44487 +I00 +sS'value' +p44488 +S'HumanUser' +p44489 +ssS'editable' +p44490 +(dp44491 +S'editable' +p44492 +I00 +sS'value' +p44493 +I01 +ssS'unique' +p44494 +(dp44495 +S'editable' +p44496 +I00 +sS'value' +p44497 +I00 +ssS'properties' +p44498 +(dp44499 +S'default_value' +p44500 +(dp44501 +S'editable' +p44502 +I00 +sS'value' +p44503 +I00 +ssS'summary_default' +p44504 +(dp44505 +S'editable' +p44506 +I01 +sS'value' +p44507 +S'none' +p44508 +sssS'description' +p44509 +(dp44510 +S'editable' +p44511 +I01 +sS'value' +p44512 +g47 +sssS'email' +p44513 +(dp44514 +S'mandatory' +p44515 +(dp44516 +S'editable' +p44517 +I00 +sS'value' +p44518 +I00 +ssS'name' +p44519 +(dp44520 +S'editable' +p44521 +I01 +sS'value' +p44522 +S'Email' +p44523 +ssS'data_type' +p44524 +(dp44525 +S'editable' +p44526 +I00 +sS'value' +p44527 +S'text' +p44528 +ssS'entity_type' +p44529 +(dp44530 +S'editable' +p44531 +I00 +sS'value' +p44532 +S'HumanUser' +p44533 +ssS'editable' +p44534 +(dp44535 +S'editable' +p44536 +I00 +sS'value' +p44537 +I01 +ssS'unique' +p44538 +(dp44539 +S'editable' +p44540 +I00 +sS'value' +p44541 +I00 +ssS'properties' +p44542 +(dp44543 +S'default_value' +p44544 +(dp44545 +S'editable' +p44546 +I00 +sS'value' +p44547 +g47 +ssS'summary_default' +p44548 +(dp44549 +S'editable' +p44550 +I01 +sS'value' +p44551 +S'none' +p44552 +sssS'description' +p44553 +(dp44554 +S'editable' +p44555 +I01 +sS'value' +p44556 +g47 +sssS'pipeline_configurations' +p44557 +(dp44558 +S'mandatory' +p44559 +(dp44560 +S'editable' +p44561 +I00 +sS'value' +p44562 +I00 +ssS'name' +p44563 +(dp44564 +S'editable' +p44565 +I01 +sS'value' +p44566 +S'Pipeline Configurations' +p44567 +ssS'data_type' +p44568 +(dp44569 +S'editable' +p44570 +I00 +sS'value' +p44571 +S'multi_entity' +p44572 +ssS'entity_type' +p44573 +(dp44574 +S'editable' +p44575 +I00 +sS'value' +p44576 +S'HumanUser' +p44577 +ssS'editable' +p44578 +(dp44579 +S'editable' +p44580 +I00 +sS'value' +p44581 +I01 +ssS'unique' +p44582 +(dp44583 +S'editable' +p44584 +I00 +sS'value' +p44585 +I00 +ssS'properties' +p44586 +(dp44587 +S'default_value' +p44588 +(dp44589 +S'editable' +p44590 +I00 +sS'value' +p44591 +NssS'summary_default' +p44592 +(dp44593 +S'editable' +p44594 +I00 +sS'value' +p44595 +S'none' +p44596 +ssS'valid_types' +p44597 +(dp44598 +S'editable' +p44599 +I00 +sS'value' +p44600 +(lp44601 +S'PipelineConfiguration' +p44602 +asssS'description' +p44603 +(dp44604 +S'editable' +p44605 +I01 +sS'value' +p44606 +g47 +sssS'password_strength' +p44607 +(dp44608 +S'mandatory' +p44609 +(dp44610 +S'editable' +p44611 +I00 +sS'value' +p44612 +I00 +ssS'name' +p44613 +(dp44614 +S'editable' +p44615 +I01 +sS'value' +p44616 +S'Password Strength' +p44617 +ssS'data_type' +p44618 +(dp44619 +S'editable' +p44620 +I00 +sS'value' +p44621 +S'float' +p44622 +ssS'entity_type' +p44623 +(dp44624 +S'editable' +p44625 +I00 +sS'value' +p44626 +S'HumanUser' +p44627 +ssS'editable' +p44628 +(dp44629 +S'editable' +p44630 +I00 +sS'value' +p44631 +I01 +ssS'unique' +p44632 +(dp44633 +S'editable' +p44634 +I00 +sS'value' +p44635 +I00 +ssS'properties' +p44636 +(dp44637 +S'default_value' +p44638 +(dp44639 +S'editable' +p44640 +I00 +sS'value' +p44641 +NssS'summary_default' +p44642 +(dp44643 +S'editable' +p44644 +I00 +sS'value' +p44645 +S'none' +p44646 +sssS'description' +p44647 +(dp44648 +S'editable' +p44649 +I01 +sS'value' +p44650 +g47 +sssS'updated_by' +p44651 +(dp44652 +S'mandatory' +p44653 +(dp44654 +S'editable' +p44655 +I00 +sS'value' +p44656 +I00 +ssS'name' +p44657 +(dp44658 +S'editable' +p44659 +I01 +sS'value' +p44660 +S'Updated by' +p44661 +ssS'data_type' +p44662 +(dp44663 +S'editable' +p44664 +I00 +sS'value' +p44665 +S'entity' +p44666 +ssS'entity_type' +p44667 +(dp44668 +S'editable' +p44669 +I00 +sS'value' +p44670 +S'HumanUser' +p44671 +ssS'editable' +p44672 +(dp44673 +S'editable' +p44674 +I00 +sS'value' +p44675 +I00 +ssS'unique' +p44676 +(dp44677 +S'editable' +p44678 +I00 +sS'value' +p44679 +I00 +ssS'properties' +p44680 +(dp44681 +S'default_value' +p44682 +(dp44683 +S'editable' +p44684 +I00 +sS'value' +p44685 +NssS'summary_default' +p44686 +(dp44687 +S'editable' +p44688 +I01 +sS'value' +p44689 +S'none' +p44690 +ssS'valid_types' +p44691 +(dp44692 +S'editable' +p44693 +I01 +sS'value' +p44694 +(lp44695 +S'HumanUser' +p44696 +aS'ApiUser' +p44697 +asssS'description' +p44698 +(dp44699 +S'editable' +p44700 +I01 +sS'value' +p44701 +g47 +sssS'firstname' +p44702 +(dp44703 +S'mandatory' +p44704 +(dp44705 +S'editable' +p44706 +I00 +sS'value' +p44707 +I00 +ssS'name' +p44708 +(dp44709 +S'editable' +p44710 +I01 +sS'value' +p44711 +S'First Name' +p44712 +ssS'data_type' +p44713 +(dp44714 +S'editable' +p44715 +I00 +sS'value' +p44716 +S'text' +p44717 +ssS'entity_type' +p44718 +(dp44719 +S'editable' +p44720 +I00 +sS'value' +p44721 +S'HumanUser' +p44722 +ssS'editable' +p44723 +(dp44724 +S'editable' +p44725 +I00 +sS'value' +p44726 +I01 +ssS'unique' +p44727 +(dp44728 +S'editable' +p44729 +I00 +sS'value' +p44730 +I00 +ssS'properties' +p44731 +(dp44732 +S'default_value' +p44733 +(dp44734 +S'editable' +p44735 +I00 +sS'value' +p44736 +NssS'summary_default' +p44737 +(dp44738 +S'editable' +p44739 +I01 +sS'value' +p44740 +S'none' +p44741 +sssS'description' +p44742 +(dp44743 +S'editable' +p44744 +I01 +sS'value' +p44745 +g47 +sssS'app_welcomes' +p44746 +(dp44747 +S'mandatory' +p44748 +(dp44749 +S'editable' +p44750 +I00 +sS'value' +p44751 +I00 +ssS'name' +p44752 +(dp44753 +S'editable' +p44754 +I01 +sS'value' +p44755 +S'App Welcomes' +p44756 +ssS'data_type' +p44757 +(dp44758 +S'editable' +p44759 +I00 +sS'value' +p44760 +S'multi_entity' +p44761 +ssS'entity_type' +p44762 +(dp44763 +S'editable' +p44764 +I00 +sS'value' +p44765 +S'HumanUser' +p44766 +ssS'editable' +p44767 +(dp44768 +S'editable' +p44769 +I00 +sS'value' +p44770 +I01 +ssS'unique' +p44771 +(dp44772 +S'editable' +p44773 +I00 +sS'value' +p44774 +I00 +ssS'properties' +p44775 +(dp44776 +S'default_value' +p44777 +(dp44778 +S'editable' +p44779 +I00 +sS'value' +p44780 +NssS'summary_default' +p44781 +(dp44782 +S'editable' +p44783 +I00 +sS'value' +p44784 +S'none' +p44785 +ssS'valid_types' +p44786 +(dp44787 +S'editable' +p44788 +I00 +sS'value' +p44789 +(lp44790 +S'AppWelcome' +p44791 +asssS'description' +p44792 +(dp44793 +S'editable' +p44794 +I01 +sS'value' +p44795 +g47 +sssS'lastname' +p44796 +(dp44797 +S'mandatory' +p44798 +(dp44799 +S'editable' +p44800 +I00 +sS'value' +p44801 +I00 +ssS'name' +p44802 +(dp44803 +S'editable' +p44804 +I01 +sS'value' +p44805 +S'Last Name' +p44806 +ssS'data_type' +p44807 +(dp44808 +S'editable' +p44809 +I00 +sS'value' +p44810 +S'text' +p44811 +ssS'entity_type' +p44812 +(dp44813 +S'editable' +p44814 +I00 +sS'value' +p44815 +S'HumanUser' +p44816 +ssS'editable' +p44817 +(dp44818 +S'editable' +p44819 +I00 +sS'value' +p44820 +I01 +ssS'unique' +p44821 +(dp44822 +S'editable' +p44823 +I00 +sS'value' +p44824 +I00 +ssS'properties' +p44825 +(dp44826 +S'default_value' +p44827 +(dp44828 +S'editable' +p44829 +I00 +sS'value' +p44830 +NssS'summary_default' +p44831 +(dp44832 +S'editable' +p44833 +I01 +sS'value' +p44834 +S'none' +p44835 +sssS'description' +p44836 +(dp44837 +S'editable' +p44838 +I01 +sS'value' +p44839 +g47 +sssS'groups' +p44840 +(dp44841 +S'mandatory' +p44842 +(dp44843 +S'editable' +p44844 +I00 +sS'value' +p44845 +I00 +ssS'name' +p44846 +(dp44847 +S'editable' +p44848 +I01 +sS'value' +p44849 +S'Groups' +p44850 +ssS'data_type' +p44851 +(dp44852 +S'editable' +p44853 +I00 +sS'value' +p44854 +S'multi_entity' +p44855 +ssS'entity_type' +p44856 +(dp44857 +S'editable' +p44858 +I00 +sS'value' +p44859 +S'HumanUser' +p44860 +ssS'editable' +p44861 +(dp44862 +S'editable' +p44863 +I00 +sS'value' +p44864 +I01 +ssS'unique' +p44865 +(dp44866 +S'editable' +p44867 +I00 +sS'value' +p44868 +I00 +ssS'properties' +p44869 +(dp44870 +S'default_value' +p44871 +(dp44872 +S'editable' +p44873 +I00 +sS'value' +p44874 +NssS'summary_default' +p44875 +(dp44876 +S'editable' +p44877 +I01 +sS'value' +p44878 +S'none' +p44879 +ssS'valid_types' +p44880 +(dp44881 +S'editable' +p44882 +I01 +sS'value' +p44883 +(lp44884 +S'Group' +p44885 +asssS'description' +p44886 +(dp44887 +S'editable' +p44888 +I01 +sS'value' +p44889 +g47 +sssS'email_all_versions' +p44890 +(dp44891 +S'mandatory' +p44892 +(dp44893 +S'editable' +p44894 +I00 +sS'value' +p44895 +I00 +ssS'name' +p44896 +(dp44897 +S'editable' +p44898 +I01 +sS'value' +p44899 +S'Subscribe to All Version Emails' +p44900 +ssS'data_type' +p44901 +(dp44902 +S'editable' +p44903 +I00 +sS'value' +p44904 +S'checkbox' +p44905 +ssS'entity_type' +p44906 +(dp44907 +S'editable' +p44908 +I00 +sS'value' +p44909 +S'HumanUser' +p44910 +ssS'editable' +p44911 +(dp44912 +S'editable' +p44913 +I00 +sS'value' +p44914 +I01 +ssS'unique' +p44915 +(dp44916 +S'editable' +p44917 +I00 +sS'value' +p44918 +I00 +ssS'properties' +p44919 +(dp44920 +S'default_value' +p44921 +(dp44922 +S'editable' +p44923 +I00 +sS'value' +p44924 +I00 +ssS'summary_default' +p44925 +(dp44926 +S'editable' +p44927 +I01 +sS'value' +p44928 +S'none' +p44929 +sssS'description' +p44930 +(dp44931 +S'editable' +p44932 +I01 +sS'value' +p44933 +g47 +sssS'email_inbox_notes' +p44934 +(dp44935 +S'mandatory' +p44936 +(dp44937 +S'editable' +p44938 +I00 +sS'value' +p44939 +I00 +ssS'name' +p44940 +(dp44941 +S'editable' +p44942 +I01 +sS'value' +p44943 +S'Subscribe to My Inbox Note Emails' +p44944 +ssS'data_type' +p44945 +(dp44946 +S'editable' +p44947 +I00 +sS'value' +p44948 +S'checkbox' +p44949 +ssS'entity_type' +p44950 +(dp44951 +S'editable' +p44952 +I00 +sS'value' +p44953 +S'HumanUser' +p44954 +ssS'editable' +p44955 +(dp44956 +S'editable' +p44957 +I00 +sS'value' +p44958 +I01 +ssS'unique' +p44959 +(dp44960 +S'editable' +p44961 +I00 +sS'value' +p44962 +I00 +ssS'properties' +p44963 +(dp44964 +S'default_value' +p44965 +(dp44966 +S'editable' +p44967 +I00 +sS'value' +p44968 +NssS'summary_default' +p44969 +(dp44970 +S'editable' +p44971 +I01 +sS'value' +p44972 +S'none' +p44973 +sssS'description' +p44974 +(dp44975 +S'editable' +p44976 +I01 +sS'value' +p44977 +g47 +sssS'projects' +p44978 +(dp44979 +S'mandatory' +p44980 +(dp44981 +S'editable' +p44982 +I00 +sS'value' +p44983 +I00 +ssS'name' +p44984 +(dp44985 +S'editable' +p44986 +I01 +sS'value' +p44987 +S'Projects' +p44988 +ssS'data_type' +p44989 +(dp44990 +S'editable' +p44991 +I00 +sS'value' +p44992 +S'multi_entity' +p44993 +ssS'entity_type' +p44994 +(dp44995 +S'editable' +p44996 +I00 +sS'value' +p44997 +S'HumanUser' +p44998 +ssS'editable' +p44999 +(dp45000 +S'editable' +p45001 +I00 +sS'value' +p45002 +I01 +ssS'unique' +p45003 +(dp45004 +S'editable' +p45005 +I00 +sS'value' +p45006 +I00 +ssS'properties' +p45007 +(dp45008 +S'default_value' +p45009 +(dp45010 +S'editable' +p45011 +I00 +sS'value' +p45012 +NssS'summary_default' +p45013 +(dp45014 +S'editable' +p45015 +I01 +sS'value' +p45016 +S'none' +p45017 +ssS'valid_types' +p45018 +(dp45019 +S'editable' +p45020 +I01 +sS'value' +p45021 +(lp45022 +S'Project' +p45023 +asssS'description' +p45024 +(dp45025 +S'editable' +p45026 +I01 +sS'value' +p45027 +g47 +sssS'enable_tank_integration' +p45028 +(dp45029 +S'mandatory' +p45030 +(dp45031 +S'editable' +p45032 +I00 +sS'value' +p45033 +I00 +ssS'name' +p45034 +(dp45035 +S'editable' +p45036 +I01 +sS'value' +p45037 +S'Enable Tank Integration' +p45038 +ssS'data_type' +p45039 +(dp45040 +S'editable' +p45041 +I00 +sS'value' +p45042 +S'checkbox' +p45043 +ssS'entity_type' +p45044 +(dp45045 +S'editable' +p45046 +I00 +sS'value' +p45047 +S'HumanUser' +p45048 +ssS'editable' +p45049 +(dp45050 +S'editable' +p45051 +I00 +sS'value' +p45052 +I01 +ssS'unique' +p45053 +(dp45054 +S'editable' +p45055 +I00 +sS'value' +p45056 +I00 +ssS'properties' +p45057 +(dp45058 +S'default_value' +p45059 +(dp45060 +S'editable' +p45061 +I00 +sS'value' +p45062 +I01 +ssS'summary_default' +p45063 +(dp45064 +S'editable' +p45065 +I01 +sS'value' +p45066 +S'none' +p45067 +sssS'description' +p45068 +(dp45069 +S'editable' +p45070 +I01 +sS'value' +p45071 +g47 +sssS'email_deliveries' +p45072 +(dp45073 +S'mandatory' +p45074 +(dp45075 +S'editable' +p45076 +I00 +sS'value' +p45077 +I00 +ssS'name' +p45078 +(dp45079 +S'editable' +p45080 +I01 +sS'value' +p45081 +S'Subscribe to My Deliveries Emails' +p45082 +ssS'data_type' +p45083 +(dp45084 +S'editable' +p45085 +I00 +sS'value' +p45086 +S'checkbox' +p45087 +ssS'entity_type' +p45088 +(dp45089 +S'editable' +p45090 +I00 +sS'value' +p45091 +S'HumanUser' +p45092 +ssS'editable' +p45093 +(dp45094 +S'editable' +p45095 +I00 +sS'value' +p45096 +I01 +ssS'unique' +p45097 +(dp45098 +S'editable' +p45099 +I00 +sS'value' +p45100 +I00 +ssS'properties' +p45101 +(dp45102 +S'default_value' +p45103 +(dp45104 +S'editable' +p45105 +I00 +sS'value' +p45106 +I00 +ssS'summary_default' +p45107 +(dp45108 +S'editable' +p45109 +I01 +sS'value' +p45110 +S'none' +p45111 +sssS'description' +p45112 +(dp45113 +S'editable' +p45114 +I01 +sS'value' +p45115 +g47 +sssS'name' +p45116 +(dp45117 +S'mandatory' +p45118 +(dp45119 +S'editable' +p45120 +I00 +sS'value' +p45121 +I01 +ssS'name' +p45122 +(dp45123 +S'editable' +p45124 +I01 +sS'value' +p45125 +S'Name' +p45126 +ssS'data_type' +p45127 +(dp45128 +S'editable' +p45129 +I00 +sS'value' +p45130 +S'text' +p45131 +ssS'entity_type' +p45132 +(dp45133 +S'editable' +p45134 +I00 +sS'value' +p45135 +S'HumanUser' +p45136 +ssS'editable' +p45137 +(dp45138 +S'editable' +p45139 +I00 +sS'value' +p45140 +I01 +ssS'unique' +p45141 +(dp45142 +S'editable' +p45143 +I00 +sS'value' +p45144 +I00 +ssS'properties' +p45145 +(dp45146 +S'default_value' +p45147 +(dp45148 +S'editable' +p45149 +I00 +sS'value' +p45150 +NssS'summary_default' +p45151 +(dp45152 +S'editable' +p45153 +I01 +sS'value' +p45154 +S'none' +p45155 +sssS'description' +p45156 +(dp45157 +S'editable' +p45158 +I01 +sS'value' +p45159 +g47 +sssS'tag_list' +p45160 +(dp45161 +S'mandatory' +p45162 +(dp45163 +S'editable' +p45164 +I00 +sS'value' +p45165 +I00 +ssS'name' +p45166 +(dp45167 +S'editable' +p45168 +I01 +sS'value' +p45169 +S'Tags' +p45170 +ssS'data_type' +p45171 +(dp45172 +S'editable' +p45173 +I00 +sS'value' +p45174 +S'tag_list' +p45175 +ssS'entity_type' +p45176 +(dp45177 +S'editable' +p45178 +I00 +sS'value' +p45179 +S'HumanUser' +p45180 +ssS'editable' +p45181 +(dp45182 +S'editable' +p45183 +I00 +sS'value' +p45184 +I01 +ssS'unique' +p45185 +(dp45186 +S'editable' +p45187 +I00 +sS'value' +p45188 +I00 +ssS'properties' +p45189 +(dp45190 +S'default_value' +p45191 +(dp45192 +S'editable' +p45193 +I00 +sS'value' +p45194 +NssS'summary_default' +p45195 +(dp45196 +S'editable' +p45197 +I01 +sS'value' +p45198 +S'none' +p45199 +ssS'valid_types' +p45200 +(dp45201 +S'editable' +p45202 +I01 +sS'value' +p45203 +(lp45204 +S'Tag' +p45205 +asssS'description' +p45206 +(dp45207 +S'editable' +p45208 +I01 +sS'value' +p45209 +g47 +sssS'created_at' +p45210 +(dp45211 +S'mandatory' +p45212 +(dp45213 +S'editable' +p45214 +I00 +sS'value' +p45215 +I00 +ssS'name' +p45216 +(dp45217 +S'editable' +p45218 +I01 +sS'value' +p45219 +S'Date Created' +p45220 +ssS'data_type' +p45221 +(dp45222 +S'editable' +p45223 +I00 +sS'value' +p45224 +S'date_time' +p45225 +ssS'entity_type' +p45226 +(dp45227 +S'editable' +p45228 +I00 +sS'value' +p45229 +S'HumanUser' +p45230 +ssS'editable' +p45231 +(dp45232 +S'editable' +p45233 +I00 +sS'value' +p45234 +I00 +ssS'unique' +p45235 +(dp45236 +S'editable' +p45237 +I00 +sS'value' +p45238 +I00 +ssS'properties' +p45239 +(dp45240 +S'default_value' +p45241 +(dp45242 +S'editable' +p45243 +I00 +sS'value' +p45244 +NssS'summary_default' +p45245 +(dp45246 +S'editable' +p45247 +I01 +sS'value' +p45248 +S'none' +p45249 +sssS'description' +p45250 +(dp45251 +S'editable' +p45252 +I01 +sS'value' +p45253 +g47 +sssS'permission_rule_set' +p45254 +(dp45255 +S'mandatory' +p45256 +(dp45257 +S'editable' +p45258 +I00 +sS'value' +p45259 +I00 +ssS'name' +p45260 +(dp45261 +S'editable' +p45262 +I01 +sS'value' +p45263 +S'Permission Group' +p45264 +ssS'data_type' +p45265 +(dp45266 +S'editable' +p45267 +I00 +sS'value' +p45268 +S'entity' +p45269 +ssS'entity_type' +p45270 +(dp45271 +S'editable' +p45272 +I00 +sS'value' +p45273 +S'HumanUser' +p45274 +ssS'editable' +p45275 +(dp45276 +S'editable' +p45277 +I00 +sS'value' +p45278 +I00 +ssS'unique' +p45279 +(dp45280 +S'editable' +p45281 +I00 +sS'value' +p45282 +I00 +ssS'properties' +p45283 +(dp45284 +S'default_value' +p45285 +(dp45286 +S'editable' +p45287 +I00 +sS'value' +p45288 +NssS'summary_default' +p45289 +(dp45290 +S'editable' +p45291 +I01 +sS'value' +p45292 +S'none' +p45293 +ssS'valid_types' +p45294 +(dp45295 +S'editable' +p45296 +I01 +sS'value' +p45297 +(lp45298 +S'PermissionRuleSet' +p45299 +asssS'description' +p45300 +(dp45301 +S'editable' +p45302 +I01 +sS'value' +p45303 +g47 +sssS'filmstrip_image' +p45304 +(dp45305 +S'mandatory' +p45306 +(dp45307 +S'editable' +p45308 +I00 +sS'value' +p45309 +I00 +ssS'name' +p45310 +(dp45311 +S'editable' +p45312 +I01 +sS'value' +p45313 +S'Filmstrip Thumbnail' +p45314 +ssS'data_type' +p45315 +(dp45316 +S'editable' +p45317 +I00 +sS'value' +p45318 +S'image' +p45319 +ssS'entity_type' +p45320 +(dp45321 +S'editable' +p45322 +I00 +sS'value' +p45323 +S'HumanUser' +p45324 +ssS'editable' +p45325 +(dp45326 +S'editable' +p45327 +I00 +sS'value' +p45328 +I01 +ssS'unique' +p45329 +(dp45330 +S'editable' +p45331 +I00 +sS'value' +p45332 +I00 +ssS'properties' +p45333 +(dp45334 +S'default_value' +p45335 +(dp45336 +S'editable' +p45337 +I00 +sS'value' +p45338 +NssS'summary_default' +p45339 +(dp45340 +S'editable' +p45341 +I01 +sS'value' +p45342 +S'none' +p45343 +sssS'description' +p45344 +(dp45345 +S'editable' +p45346 +I01 +sS'value' +p45347 +g47 +sssS'email_all_notes' +p45348 +(dp45349 +S'mandatory' +p45350 +(dp45351 +S'editable' +p45352 +I00 +sS'value' +p45353 +I00 +ssS'name' +p45354 +(dp45355 +S'editable' +p45356 +I01 +sS'value' +p45357 +S'Subscribe to All Note Emails' +p45358 +ssS'data_type' +p45359 +(dp45360 +S'editable' +p45361 +I00 +sS'value' +p45362 +S'checkbox' +p45363 +ssS'entity_type' +p45364 +(dp45365 +S'editable' +p45366 +I00 +sS'value' +p45367 +S'HumanUser' +p45368 +ssS'editable' +p45369 +(dp45370 +S'editable' +p45371 +I00 +sS'value' +p45372 +I01 +ssS'unique' +p45373 +(dp45374 +S'editable' +p45375 +I00 +sS'value' +p45376 +I00 +ssS'properties' +p45377 +(dp45378 +S'default_value' +p45379 +(dp45380 +S'editable' +p45381 +I00 +sS'value' +p45382 +I00 +ssS'summary_default' +p45383 +(dp45384 +S'editable' +p45385 +I01 +sS'value' +p45386 +S'none' +p45387 +sssS'description' +p45388 +(dp45389 +S'editable' +p45390 +I01 +sS'value' +p45391 +g47 +sssS'email_tasks' +p45392 +(dp45393 +S'mandatory' +p45394 +(dp45395 +S'editable' +p45396 +I00 +sS'value' +p45397 +I00 +ssS'name' +p45398 +(dp45399 +S'editable' +p45400 +I01 +sS'value' +p45401 +S'Subscribe to My Task Emails' +p45402 +ssS'data_type' +p45403 +(dp45404 +S'editable' +p45405 +I00 +sS'value' +p45406 +S'checkbox' +p45407 +ssS'entity_type' +p45408 +(dp45409 +S'editable' +p45410 +I00 +sS'value' +p45411 +S'HumanUser' +p45412 +ssS'editable' +p45413 +(dp45414 +S'editable' +p45415 +I00 +sS'value' +p45416 +I01 +ssS'unique' +p45417 +(dp45418 +S'editable' +p45419 +I00 +sS'value' +p45420 +I00 +ssS'properties' +p45421 +(dp45422 +S'default_value' +p45423 +(dp45424 +S'editable' +p45425 +I00 +sS'value' +p45426 +I00 +ssS'summary_default' +p45427 +(dp45428 +S'editable' +p45429 +I00 +sS'value' +p45430 +S'none' +p45431 +sssS'description' +p45432 +(dp45433 +S'editable' +p45434 +I01 +sS'value' +p45435 +g47 +sssS'login' +p45436 +(dp45437 +S'mandatory' +p45438 +(dp45439 +S'editable' +p45440 +I00 +sS'value' +p45441 +I00 +ssS'name' +p45442 +(dp45443 +S'editable' +p45444 +I01 +sS'value' +p45445 +S'Login' +p45446 +ssS'data_type' +p45447 +(dp45448 +S'editable' +p45449 +I00 +sS'value' +p45450 +S'text' +p45451 +ssS'entity_type' +p45452 +(dp45453 +S'editable' +p45454 +I00 +sS'value' +p45455 +S'HumanUser' +p45456 +ssS'editable' +p45457 +(dp45458 +S'editable' +p45459 +I00 +sS'value' +p45460 +I01 +ssS'unique' +p45461 +(dp45462 +S'editable' +p45463 +I00 +sS'value' +p45464 +I01 +ssS'properties' +p45465 +(dp45466 +S'default_value' +p45467 +(dp45468 +S'editable' +p45469 +I00 +sS'value' +p45470 +g47 +ssS'summary_default' +p45471 +(dp45472 +S'editable' +p45473 +I01 +sS'value' +p45474 +S'none' +p45475 +sssS'description' +p45476 +(dp45477 +S'editable' +p45478 +I01 +sS'value' +p45479 +g47 +sssS'email_all_tickets' +p45480 +(dp45481 +S'mandatory' +p45482 +(dp45483 +S'editable' +p45484 +I00 +sS'value' +p45485 +I00 +ssS'name' +p45486 +(dp45487 +S'editable' +p45488 +I01 +sS'value' +p45489 +S'Subscribe to All Ticket Emails' +p45490 +ssS'data_type' +p45491 +(dp45492 +S'editable' +p45493 +I00 +sS'value' +p45494 +S'checkbox' +p45495 +ssS'entity_type' +p45496 +(dp45497 +S'editable' +p45498 +I00 +sS'value' +p45499 +S'HumanUser' +p45500 +ssS'editable' +p45501 +(dp45502 +S'editable' +p45503 +I00 +sS'value' +p45504 +I01 +ssS'unique' +p45505 +(dp45506 +S'editable' +p45507 +I00 +sS'value' +p45508 +I00 +ssS'properties' +p45509 +(dp45510 +S'default_value' +p45511 +(dp45512 +S'editable' +p45513 +I00 +sS'value' +p45514 +I00 +ssS'summary_default' +p45515 +(dp45516 +S'editable' +p45517 +I01 +sS'value' +p45518 +S'none' +p45519 +sssS'description' +p45520 +(dp45521 +S'editable' +p45522 +I01 +sS'value' +p45523 +g47 +sssS'email_all_tasks' +p45524 +(dp45525 +S'mandatory' +p45526 +(dp45527 +S'editable' +p45528 +I00 +sS'value' +p45529 +I00 +ssS'name' +p45530 +(dp45531 +S'editable' +p45532 +I01 +sS'value' +p45533 +S'Subscribe to All Task Emails' +p45534 +ssS'data_type' +p45535 +(dp45536 +S'editable' +p45537 +I00 +sS'value' +p45538 +S'checkbox' +p45539 +ssS'entity_type' +p45540 +(dp45541 +S'editable' +p45542 +I00 +sS'value' +p45543 +S'HumanUser' +p45544 +ssS'editable' +p45545 +(dp45546 +S'editable' +p45547 +I00 +sS'value' +p45548 +I01 +ssS'unique' +p45549 +(dp45550 +S'editable' +p45551 +I00 +sS'value' +p45552 +I00 +ssS'properties' +p45553 +(dp45554 +S'default_value' +p45555 +(dp45556 +S'editable' +p45557 +I00 +sS'value' +p45558 +I00 +ssS'summary_default' +p45559 +(dp45560 +S'editable' +p45561 +I00 +sS'value' +p45562 +S'none' +p45563 +sssS'description' +p45564 +(dp45565 +S'editable' +p45566 +I01 +sS'value' +p45567 +g47 +ssssS'PermissionRuleSet' +p45568 +(dp45569 +S'code' +p45570 +(dp45571 +S'mandatory' +p45572 +(dp45573 +S'editable' +p45574 +I00 +sS'value' +p45575 +I00 +ssS'name' +p45576 +(dp45577 +S'editable' +p45578 +I01 +sS'value' +p45579 +S'Code' +p45580 +ssS'data_type' +p45581 +(dp45582 +S'editable' +p45583 +I00 +sS'value' +p45584 +S'text' +p45585 +ssS'entity_type' +p45586 +(dp45587 +S'editable' +p45588 +I00 +sS'value' +p45589 +S'PermissionRuleSet' +p45590 +ssS'editable' +p45591 +(dp45592 +S'editable' +p45593 +I00 +sS'value' +p45594 +I00 +ssS'unique' +p45595 +(dp45596 +S'editable' +p45597 +I00 +sS'value' +p45598 +I00 +ssS'properties' +p45599 +(dp45600 +S'default_value' +p45601 +(dp45602 +S'editable' +p45603 +I00 +sS'value' +p45604 +NssS'summary_default' +p45605 +(dp45606 +S'editable' +p45607 +I01 +sS'value' +p45608 +S'none' +p45609 +sssS'description' +p45610 +(dp45611 +S'editable' +p45612 +I01 +sS'value' +p45613 +g47 +sssS'display_name' +p45614 +(dp45615 +S'mandatory' +p45616 +(dp45617 +S'editable' +p45618 +I00 +sS'value' +p45619 +I00 +ssS'name' +p45620 +(dp45621 +S'editable' +p45622 +I01 +sS'value' +p45623 +S'Display Name' +p45624 +ssS'data_type' +p45625 +(dp45626 +S'editable' +p45627 +I00 +sS'value' +p45628 +S'text' +p45629 +ssS'entity_type' +p45630 +(dp45631 +S'editable' +p45632 +I00 +sS'value' +p45633 +S'PermissionRuleSet' +p45634 +ssS'editable' +p45635 +(dp45636 +S'editable' +p45637 +I00 +sS'value' +p45638 +I00 +ssS'unique' +p45639 +(dp45640 +S'editable' +p45641 +I00 +sS'value' +p45642 +I00 +ssS'properties' +p45643 +(dp45644 +S'default_value' +p45645 +(dp45646 +S'editable' +p45647 +I00 +sS'value' +p45648 +NssS'summary_default' +p45649 +(dp45650 +S'editable' +p45651 +I01 +sS'value' +p45652 +S'none' +p45653 +sssS'description' +p45654 +(dp45655 +S'editable' +p45656 +I01 +sS'value' +p45657 +g47 +sssS'entity_type' +p45658 +(dp45659 +S'mandatory' +p45660 +(dp45661 +S'editable' +p45662 +I00 +sS'value' +p45663 +I00 +ssS'name' +p45664 +(dp45665 +S'editable' +p45666 +I01 +sS'value' +p45667 +S'Entity Type' +p45668 +ssS'data_type' +p45669 +(dp45670 +S'editable' +p45671 +I00 +sS'value' +p45672 +S'entity_type' +p45673 +ssS'entity_type' +p45674 +(dp45675 +S'editable' +p45676 +I00 +sS'value' +p45677 +S'PermissionRuleSet' +p45678 +ssS'editable' +p45679 +(dp45680 +S'editable' +p45681 +I00 +sS'value' +p45682 +I00 +ssS'unique' +p45683 +(dp45684 +S'editable' +p45685 +I00 +sS'value' +p45686 +I00 +ssS'properties' +p45687 +(dp45688 +S'default_value' +p45689 +(dp45690 +S'editable' +p45691 +I00 +sS'value' +p45692 +NssS'summary_default' +p45693 +(dp45694 +S'editable' +p45695 +I01 +sS'value' +p45696 +S'none' +p45697 +sssS'description' +p45698 +(dp45699 +S'editable' +p45700 +I01 +sS'value' +p45701 +g47 +sssS'parent_set' +p45702 +(dp45703 +S'mandatory' +p45704 +(dp45705 +S'editable' +p45706 +I00 +sS'value' +p45707 +I00 +ssS'name' +p45708 +(dp45709 +S'editable' +p45710 +I01 +sS'value' +p45711 +S'Parent Permission Role' +p45712 +ssS'data_type' +p45713 +(dp45714 +S'editable' +p45715 +I00 +sS'value' +p45716 +S'entity' +p45717 +ssS'entity_type' +p45718 +(dp45719 +S'editable' +p45720 +I00 +sS'value' +p45721 +S'PermissionRuleSet' +p45722 +ssS'editable' +p45723 +(dp45724 +S'editable' +p45725 +I00 +sS'value' +p45726 +I00 +ssS'unique' +p45727 +(dp45728 +S'editable' +p45729 +I00 +sS'value' +p45730 +I00 +ssS'properties' +p45731 +(dp45732 +S'default_value' +p45733 +(dp45734 +S'editable' +p45735 +I00 +sS'value' +p45736 +NssS'summary_default' +p45737 +(dp45738 +S'editable' +p45739 +I01 +sS'value' +p45740 +S'none' +p45741 +ssS'valid_types' +p45742 +(dp45743 +S'editable' +p45744 +I01 +sS'value' +p45745 +(lp45746 +S'PermissionRuleSet' +p45747 +asssS'description' +p45748 +(dp45749 +S'editable' +p45750 +I01 +sS'value' +p45751 +g47 +sssS'cached_display_name' +p45752 +(dp45753 +S'mandatory' +p45754 +(dp45755 +S'editable' +p45756 +I00 +sS'value' +p45757 +I00 +ssS'name' +p45758 +(dp45759 +S'editable' +p45760 +I01 +sS'value' +p45761 +S'Cached Display Name' +p45762 +ssS'data_type' +p45763 +(dp45764 +S'editable' +p45765 +I00 +sS'value' +p45766 +S'text' +p45767 +ssS'entity_type' +p45768 +(dp45769 +S'editable' +p45770 +I00 +sS'value' +p45771 +S'PermissionRuleSet' +p45772 +ssS'editable' +p45773 +(dp45774 +S'editable' +p45775 +I00 +sS'value' +p45776 +I00 +ssS'unique' +p45777 +(dp45778 +S'editable' +p45779 +I00 +sS'value' +p45780 +I00 +ssS'properties' +p45781 +(dp45782 +S'default_value' +p45783 +(dp45784 +S'editable' +p45785 +I00 +sS'value' +p45786 +NssS'summary_default' +p45787 +(dp45788 +S'editable' +p45789 +I00 +sS'value' +p45790 +S'none' +p45791 +sssS'description' +p45792 +(dp45793 +S'editable' +p45794 +I01 +sS'value' +p45795 +g47 +sssS'id' +p45796 +(dp45797 +S'mandatory' +p45798 +(dp45799 +S'editable' +p45800 +I00 +sS'value' +p45801 +I00 +ssS'name' +p45802 +(dp45803 +S'editable' +p45804 +I01 +sS'value' +p45805 +S'ID' +p45806 +ssS'data_type' +p45807 +(dp45808 +S'editable' +p45809 +I00 +sS'value' +p45810 +S'number' +p45811 +ssS'entity_type' +p45812 +(dp45813 +S'editable' +p45814 +I00 +sS'value' +p45815 +S'PermissionRuleSet' +p45816 +ssS'editable' +p45817 +(dp45818 +S'editable' +p45819 +I00 +sS'value' +p45820 +I00 +ssS'unique' +p45821 +(dp45822 +S'editable' +p45823 +I00 +sS'value' +p45824 +I00 +ssS'properties' +p45825 +(dp45826 +S'default_value' +p45827 +(dp45828 +S'editable' +p45829 +I00 +sS'value' +p45830 +NssS'summary_default' +p45831 +(dp45832 +S'editable' +p45833 +I00 +sS'value' +p45834 +S'none' +p45835 +sssS'description' +p45836 +(dp45837 +S'editable' +p45838 +I01 +sS'value' +p45839 +g47 +ssssS'EventLogEntry' +p45840 +(dp45841 +S'attribute_name' +p45842 +(dp45843 +S'mandatory' +p45844 +(dp45845 +S'editable' +p45846 +I00 +sS'value' +p45847 +I00 +ssS'name' +p45848 +(dp45849 +S'editable' +p45850 +I01 +sS'value' +p45851 +S'Attribute Name' +p45852 +ssS'data_type' +p45853 +(dp45854 +S'editable' +p45855 +I00 +sS'value' +p45856 +S'text' +p45857 +ssS'entity_type' +p45858 +(dp45859 +S'editable' +p45860 +I00 +sS'value' +p45861 +S'EventLogEntry' +p45862 +ssS'editable' +p45863 +(dp45864 +S'editable' +p45865 +I00 +sS'value' +p45866 +I00 +ssS'unique' +p45867 +(dp45868 +S'editable' +p45869 +I00 +sS'value' +p45870 +I00 +ssS'properties' +p45871 +(dp45872 +S'default_value' +p45873 +(dp45874 +S'editable' +p45875 +I00 +sS'value' +p45876 +NssS'summary_default' +p45877 +(dp45878 +S'editable' +p45879 +I01 +sS'value' +p45880 +S'none' +p45881 +sssS'description' +p45882 +(dp45883 +S'editable' +p45884 +I01 +sS'value' +p45885 +g47 +sssS'description' +p45886 +(dp45887 +S'mandatory' +p45888 +(dp45889 +S'editable' +p45890 +I00 +sS'value' +p45891 +I01 +ssS'name' +p45892 +(dp45893 +S'editable' +p45894 +I01 +sS'value' +p45895 +S'Event Summary' +p45896 +ssS'data_type' +p45897 +(dp45898 +S'editable' +p45899 +I00 +sS'value' +p45900 +S'text' +p45901 +ssS'entity_type' +p45902 +(dp45903 +S'editable' +p45904 +I00 +sS'value' +p45905 +S'EventLogEntry' +p45906 +ssS'editable' +p45907 +(dp45908 +S'editable' +p45909 +I00 +sS'value' +p45910 +I00 +ssS'unique' +p45911 +(dp45912 +S'editable' +p45913 +I00 +sS'value' +p45914 +I00 +ssS'properties' +p45915 +(dp45916 +S'default_value' +p45917 +(dp45918 +S'editable' +p45919 +I00 +sS'value' +p45920 +NssS'summary_default' +p45921 +(dp45922 +S'editable' +p45923 +I01 +sS'value' +p45924 +S'none' +p45925 +sssS'description' +p45926 +(dp45927 +S'editable' +p45928 +I01 +sS'value' +p45929 +g47 +sssS'created_at' +p45930 +(dp45931 +S'mandatory' +p45932 +(dp45933 +S'editable' +p45934 +I00 +sS'value' +p45935 +I00 +ssS'name' +p45936 +(dp45937 +S'editable' +p45938 +I01 +sS'value' +p45939 +S'Date Created' +p45940 +ssS'data_type' +p45941 +(dp45942 +S'editable' +p45943 +I00 +sS'value' +p45944 +S'date_time' +p45945 +ssS'entity_type' +p45946 +(dp45947 +S'editable' +p45948 +I00 +sS'value' +p45949 +S'EventLogEntry' +p45950 +ssS'editable' +p45951 +(dp45952 +S'editable' +p45953 +I00 +sS'value' +p45954 +I00 +ssS'unique' +p45955 +(dp45956 +S'editable' +p45957 +I00 +sS'value' +p45958 +I00 +ssS'properties' +p45959 +(dp45960 +S'default_value' +p45961 +(dp45962 +S'editable' +p45963 +I00 +sS'value' +p45964 +NssS'summary_default' +p45965 +(dp45966 +S'editable' +p45967 +I01 +sS'value' +p45968 +S'latest' +p45969 +sssS'description' +p45970 +(dp45971 +S'editable' +p45972 +I01 +sS'value' +p45973 +g47 +sssS'entity' +p45974 +(dp45975 +S'mandatory' +p45976 +(dp45977 +S'editable' +p45978 +I00 +sS'value' +p45979 +I00 +ssS'name' +p45980 +(dp45981 +S'editable' +p45982 +I01 +sS'value' +p45983 +S'Link' +p45984 +ssS'data_type' +p45985 +(dp45986 +S'editable' +p45987 +I00 +sS'value' +p45988 +S'entity' +p45989 +ssS'entity_type' +p45990 +(dp45991 +S'editable' +p45992 +I00 +sS'value' +p45993 +S'EventLogEntry' +p45994 +ssS'editable' +p45995 +(dp45996 +S'editable' +p45997 +I00 +sS'value' +p45998 +I00 +ssS'unique' +p45999 +(dp46000 +S'editable' +p46001 +I00 +sS'value' +p46002 +I00 +ssS'properties' +p46003 +(dp46004 +S'default_value' +p46005 +(dp46006 +S'editable' +p46007 +I00 +sS'value' +p46008 +NssS'summary_default' +p46009 +(dp46010 +S'editable' +p46011 +I01 +sS'value' +p46012 +S'none' +p46013 +ssS'valid_types' +p46014 +(dp46015 +S'editable' +p46016 +I01 +sS'value' +p46017 +(lp46018 +S'ApiUser' +p46019 +aS'AppWelcome' +p46020 +aS'Asset' +p46021 +aS'AssetLibrary' +p46022 +aS'Attachment' +p46023 +aS'Banner' +p46024 +aS'Booking' +p46025 +aS'CustomEntity01' +p46026 +aS'CustomEntity02' +p46027 +aS'CustomEntity03' +p46028 +aS'CustomEntity04' +p46029 +aS'CustomEntity05' +p46030 +aS'CustomNonProjectEntity01' +p46031 +aS'CustomNonProjectEntity02' +p46032 +aS'CustomNonProjectEntity03' +p46033 +aS'Department' +p46034 +aS'Element' +p46035 +aS'Group' +p46036 +aS'HumanUser' +p46037 +aS'Icon' +p46038 +aS'LocalStorage' +p46039 +aS'Note' +p46040 +aS'Page' +p46041 +aS'PermissionRuleSet' +p46042 +aS'Phase' +p46043 +aS'PipelineConfiguration' +p46044 +aS'Playlist' +p46045 +aS'Project' +p46046 +aS'PublishedFile' +p46047 +aS'PublishedFileDependency' +p46048 +aS'PublishedFileType' +p46049 +aS'Scene' +p46050 +aS'Sequence' +p46051 +aS'Shot' +p46052 +aS'Status' +p46053 +aS'Step' +p46054 +aS'Tag' +p46055 +aS'TankDependency' +p46056 +aS'TankPublishedFile' +p46057 +aS'TankType' +p46058 +aS'Task' +p46059 +aS'TaskTemplate' +p46060 +aS'Version' +p46061 +asssS'description' +p46062 +(dp46063 +S'editable' +p46064 +I01 +sS'value' +p46065 +g47 +sssS'project' +p46066 +(dp46067 +S'mandatory' +p46068 +(dp46069 +S'editable' +p46070 +I00 +sS'value' +p46071 +I00 +ssS'name' +p46072 +(dp46073 +S'editable' +p46074 +I01 +sS'value' +p46075 +S'Project' +p46076 +ssS'data_type' +p46077 +(dp46078 +S'editable' +p46079 +I00 +sS'value' +p46080 +S'entity' +p46081 +ssS'entity_type' +p46082 +(dp46083 +S'editable' +p46084 +I00 +sS'value' +p46085 +S'EventLogEntry' +p46086 +ssS'editable' +p46087 +(dp46088 +S'editable' +p46089 +I00 +sS'value' +p46090 +I00 +ssS'unique' +p46091 +(dp46092 +S'editable' +p46093 +I00 +sS'value' +p46094 +I00 +ssS'properties' +p46095 +(dp46096 +S'default_value' +p46097 +(dp46098 +S'editable' +p46099 +I00 +sS'value' +p46100 +NssS'summary_default' +p46101 +(dp46102 +S'editable' +p46103 +I01 +sS'value' +p46104 +S'none' +p46105 +ssS'valid_types' +p46106 +(dp46107 +S'editable' +p46108 +I01 +sS'value' +p46109 +(lp46110 +S'Project' +p46111 +asssS'description' +p46112 +(dp46113 +S'editable' +p46114 +I01 +sS'value' +p46115 +g47 +sssS'filmstrip_image' +p46116 +(dp46117 +S'mandatory' +p46118 +(dp46119 +S'editable' +p46120 +I00 +sS'value' +p46121 +I00 +ssS'name' +p46122 +(dp46123 +S'editable' +p46124 +I01 +sS'value' +p46125 +S'Filmstrip Thumbnail' +p46126 +ssS'data_type' +p46127 +(dp46128 +S'editable' +p46129 +I00 +sS'value' +p46130 +S'image' +p46131 +ssS'entity_type' +p46132 +(dp46133 +S'editable' +p46134 +I00 +sS'value' +p46135 +S'EventLogEntry' +p46136 +ssS'editable' +p46137 +(dp46138 +S'editable' +p46139 +I00 +sS'value' +p46140 +I01 +ssS'unique' +p46141 +(dp46142 +S'editable' +p46143 +I00 +sS'value' +p46144 +I00 +ssS'properties' +p46145 +(dp46146 +S'default_value' +p46147 +(dp46148 +S'editable' +p46149 +I00 +sS'value' +p46150 +NssS'summary_default' +p46151 +(dp46152 +S'editable' +p46153 +I01 +sS'value' +p46154 +S'none' +p46155 +sssS'description' +p46156 +(dp46157 +S'editable' +p46158 +I01 +sS'value' +p46159 +g47 +sssS'meta' +p46160 +(dp46161 +S'mandatory' +p46162 +(dp46163 +S'editable' +p46164 +I00 +sS'value' +p46165 +I00 +ssS'name' +p46166 +(dp46167 +S'editable' +p46168 +I01 +sS'value' +p46169 +S'Meta Data' +p46170 +ssS'data_type' +p46171 +(dp46172 +S'editable' +p46173 +I00 +sS'value' +p46174 +S'serializable' +p46175 +ssS'entity_type' +p46176 +(dp46177 +S'editable' +p46178 +I00 +sS'value' +p46179 +S'EventLogEntry' +p46180 +ssS'editable' +p46181 +(dp46182 +S'editable' +p46183 +I00 +sS'value' +p46184 +I00 +ssS'unique' +p46185 +(dp46186 +S'editable' +p46187 +I00 +sS'value' +p46188 +I00 +ssS'properties' +p46189 +(dp46190 +S'default_value' +p46191 +(dp46192 +S'editable' +p46193 +I00 +sS'value' +p46194 +NssS'summary_default' +p46195 +(dp46196 +S'editable' +p46197 +I01 +sS'value' +p46198 +S'none' +p46199 +sssS'description' +p46200 +(dp46201 +S'editable' +p46202 +I01 +sS'value' +p46203 +g47 +sssS'user' +p46204 +(dp46205 +S'mandatory' +p46206 +(dp46207 +S'editable' +p46208 +I00 +sS'value' +p46209 +I00 +ssS'name' +p46210 +(dp46211 +S'editable' +p46212 +I01 +sS'value' +p46213 +S'Who' +p46214 +ssS'data_type' +p46215 +(dp46216 +S'editable' +p46217 +I00 +sS'value' +p46218 +S'entity' +p46219 +ssS'entity_type' +p46220 +(dp46221 +S'editable' +p46222 +I00 +sS'value' +p46223 +S'EventLogEntry' +p46224 +ssS'editable' +p46225 +(dp46226 +S'editable' +p46227 +I00 +sS'value' +p46228 +I00 +ssS'unique' +p46229 +(dp46230 +S'editable' +p46231 +I00 +sS'value' +p46232 +I00 +ssS'properties' +p46233 +(dp46234 +S'default_value' +p46235 +(dp46236 +S'editable' +p46237 +I00 +sS'value' +p46238 +NssS'summary_default' +p46239 +(dp46240 +S'editable' +p46241 +I01 +sS'value' +p46242 +S'none' +p46243 +ssS'valid_types' +p46244 +(dp46245 +S'editable' +p46246 +I01 +sS'value' +p46247 +(lp46248 +S'HumanUser' +p46249 +aS'ApiUser' +p46250 +asssS'description' +p46251 +(dp46252 +S'editable' +p46253 +I01 +sS'value' +p46254 +g47 +sssS'session_uuid' +p46255 +(dp46256 +S'mandatory' +p46257 +(dp46258 +S'editable' +p46259 +I00 +sS'value' +p46260 +I00 +ssS'name' +p46261 +(dp46262 +S'editable' +p46263 +I01 +sS'value' +p46264 +S'Session UUID' +p46265 +ssS'data_type' +p46266 +(dp46267 +S'editable' +p46268 +I00 +sS'value' +p46269 +S'uuid' +p46270 +ssS'entity_type' +p46271 +(dp46272 +S'editable' +p46273 +I00 +sS'value' +p46274 +S'EventLogEntry' +p46275 +ssS'editable' +p46276 +(dp46277 +S'editable' +p46278 +I00 +sS'value' +p46279 +I00 +ssS'unique' +p46280 +(dp46281 +S'editable' +p46282 +I00 +sS'value' +p46283 +I00 +ssS'properties' +p46284 +(dp46285 +S'default_value' +p46286 +(dp46287 +S'editable' +p46288 +I00 +sS'value' +p46289 +NssS'summary_default' +p46290 +(dp46291 +S'editable' +p46292 +I00 +sS'value' +p46293 +S'none' +p46294 +sssS'description' +p46295 +(dp46296 +S'editable' +p46297 +I01 +sS'value' +p46298 +g47 +sssS'cached_display_name' +p46299 +(dp46300 +S'mandatory' +p46301 +(dp46302 +S'editable' +p46303 +I00 +sS'value' +p46304 +I00 +ssS'name' +p46305 +(dp46306 +S'editable' +p46307 +I01 +sS'value' +p46308 +S'Cached Display Name' +p46309 +ssS'data_type' +p46310 +(dp46311 +S'editable' +p46312 +I00 +sS'value' +p46313 +S'text' +p46314 +ssS'entity_type' +p46315 +(dp46316 +S'editable' +p46317 +I00 +sS'value' +p46318 +S'EventLogEntry' +p46319 +ssS'editable' +p46320 +(dp46321 +S'editable' +p46322 +I00 +sS'value' +p46323 +I01 +ssS'unique' +p46324 +(dp46325 +S'editable' +p46326 +I00 +sS'value' +p46327 +I00 +ssS'properties' +p46328 +(dp46329 +S'default_value' +p46330 +(dp46331 +S'editable' +p46332 +I00 +sS'value' +p46333 +NssS'summary_default' +p46334 +(dp46335 +S'editable' +p46336 +I00 +sS'value' +p46337 +S'none' +p46338 +sssS'description' +p46339 +(dp46340 +S'editable' +p46341 +I01 +sS'value' +p46342 +g47 +sssS'image' +p46343 +(dp46344 +S'mandatory' +p46345 +(dp46346 +S'editable' +p46347 +I00 +sS'value' +p46348 +I00 +ssS'name' +p46349 +(dp46350 +S'editable' +p46351 +I01 +sS'value' +p46352 +S'Thumbnail' +p46353 +ssS'data_type' +p46354 +(dp46355 +S'editable' +p46356 +I00 +sS'value' +p46357 +S'image' +p46358 +ssS'entity_type' +p46359 +(dp46360 +S'editable' +p46361 +I00 +sS'value' +p46362 +S'EventLogEntry' +p46363 +ssS'editable' +p46364 +(dp46365 +S'editable' +p46366 +I00 +sS'value' +p46367 +I01 +ssS'unique' +p46368 +(dp46369 +S'editable' +p46370 +I00 +sS'value' +p46371 +I00 +ssS'properties' +p46372 +(dp46373 +S'default_value' +p46374 +(dp46375 +S'editable' +p46376 +I00 +sS'value' +p46377 +NssS'summary_default' +p46378 +(dp46379 +S'editable' +p46380 +I01 +sS'value' +p46381 +S'none' +p46382 +sssS'description' +p46383 +(dp46384 +S'editable' +p46385 +I01 +sS'value' +p46386 +g47 +sssS'id' +p46387 +(dp46388 +S'mandatory' +p46389 +(dp46390 +S'editable' +p46391 +I00 +sS'value' +p46392 +I00 +ssS'name' +p46393 +(dp46394 +S'editable' +p46395 +I01 +sS'value' +p46396 +S'Id' +p46397 +ssS'data_type' +p46398 +(dp46399 +S'editable' +p46400 +I00 +sS'value' +p46401 +S'number' +p46402 +ssS'entity_type' +p46403 +(dp46404 +S'editable' +p46405 +I00 +sS'value' +p46406 +S'EventLogEntry' +p46407 +ssS'editable' +p46408 +(dp46409 +S'editable' +p46410 +I00 +sS'value' +p46411 +I00 +ssS'unique' +p46412 +(dp46413 +S'editable' +p46414 +I00 +sS'value' +p46415 +I00 +ssS'properties' +p46416 +(dp46417 +S'default_value' +p46418 +(dp46419 +S'editable' +p46420 +I00 +sS'value' +p46421 +NssS'summary_default' +p46422 +(dp46423 +S'editable' +p46424 +I01 +sS'value' +p46425 +S'none' +p46426 +sssS'description' +p46427 +(dp46428 +S'editable' +p46429 +I01 +sS'value' +p46430 +g47 +sssS'event_type' +p46431 +(dp46432 +S'mandatory' +p46433 +(dp46434 +S'editable' +p46435 +I00 +sS'value' +p46436 +I00 +ssS'name' +p46437 +(dp46438 +S'editable' +p46439 +I01 +sS'value' +p46440 +S'Event Type' +p46441 +ssS'data_type' +p46442 +(dp46443 +S'editable' +p46444 +I00 +sS'value' +p46445 +S'text' +p46446 +ssS'entity_type' +p46447 +(dp46448 +S'editable' +p46449 +I00 +sS'value' +p46450 +S'EventLogEntry' +p46451 +ssS'editable' +p46452 +(dp46453 +S'editable' +p46454 +I00 +sS'value' +p46455 +I00 +ssS'unique' +p46456 +(dp46457 +S'editable' +p46458 +I00 +sS'value' +p46459 +I00 +ssS'properties' +p46460 +(dp46461 +S'default_value' +p46462 +(dp46463 +S'editable' +p46464 +I00 +sS'value' +p46465 +NssS'summary_default' +p46466 +(dp46467 +S'editable' +p46468 +I01 +sS'value' +p46469 +S'none' +p46470 +sssS'description' +p46471 +(dp46472 +S'editable' +p46473 +I01 +sS'value' +p46474 +g47 +ssssS'TankDependency' +p46475 +(dp46476 +S'id' +p46477 +(dp46478 +S'mandatory' +p46479 +(dp46480 +S'editable' +p46481 +I00 +sS'value' +p46482 +I00 +ssS'name' +p46483 +(dp46484 +S'editable' +p46485 +I01 +sS'value' +p46486 +S'Id' +p46487 +ssS'data_type' +p46488 +(dp46489 +S'editable' +p46490 +I00 +sS'value' +p46491 +S'number' +p46492 +ssS'entity_type' +p46493 +(dp46494 +S'editable' +p46495 +I00 +sS'value' +p46496 +S'TankDependency' +p46497 +ssS'editable' +p46498 +(dp46499 +S'editable' +p46500 +I00 +sS'value' +p46501 +I00 +ssS'unique' +p46502 +(dp46503 +S'editable' +p46504 +I00 +sS'value' +p46505 +I00 +ssS'properties' +p46506 +(dp46507 +S'default_value' +p46508 +(dp46509 +S'editable' +p46510 +I00 +sS'value' +p46511 +NssS'summary_default' +p46512 +(dp46513 +S'editable' +p46514 +I00 +sS'value' +p46515 +S'none' +p46516 +sssS'description' +p46517 +(dp46518 +S'editable' +p46519 +I01 +sS'value' +p46520 +g47 +sssS'cached_display_name' +p46521 +(dp46522 +S'mandatory' +p46523 +(dp46524 +S'editable' +p46525 +I00 +sS'value' +p46526 +I00 +ssS'name' +p46527 +(dp46528 +S'editable' +p46529 +I01 +sS'value' +p46530 +S'Cached Display Name' +p46531 +ssS'data_type' +p46532 +(dp46533 +S'editable' +p46534 +I00 +sS'value' +p46535 +S'text' +p46536 +ssS'entity_type' +p46537 +(dp46538 +S'editable' +p46539 +I00 +sS'value' +p46540 +S'TankDependency' +p46541 +ssS'editable' +p46542 +(dp46543 +S'editable' +p46544 +I00 +sS'value' +p46545 +I01 +ssS'unique' +p46546 +(dp46547 +S'editable' +p46548 +I00 +sS'value' +p46549 +I00 +ssS'properties' +p46550 +(dp46551 +S'default_value' +p46552 +(dp46553 +S'editable' +p46554 +I00 +sS'value' +p46555 +NssS'summary_default' +p46556 +(dp46557 +S'editable' +p46558 +I00 +sS'value' +p46559 +S'none' +p46560 +sssS'description' +p46561 +(dp46562 +S'editable' +p46563 +I01 +sS'value' +p46564 +g47 +sssS'dependent_tank_published_file' +p46565 +(dp46566 +S'mandatory' +p46567 +(dp46568 +S'editable' +p46569 +I00 +sS'value' +p46570 +I00 +ssS'name' +p46571 +(dp46572 +S'editable' +p46573 +I01 +sS'value' +p46574 +S'Dependent Tank Published File' +p46575 +ssS'data_type' +p46576 +(dp46577 +S'editable' +p46578 +I00 +sS'value' +p46579 +S'entity' +p46580 +ssS'entity_type' +p46581 +(dp46582 +S'editable' +p46583 +I00 +sS'value' +p46584 +S'TankDependency' +p46585 +ssS'editable' +p46586 +(dp46587 +S'editable' +p46588 +I00 +sS'value' +p46589 +I00 +ssS'unique' +p46590 +(dp46591 +S'editable' +p46592 +I00 +sS'value' +p46593 +I00 +ssS'properties' +p46594 +(dp46595 +S'default_value' +p46596 +(dp46597 +S'editable' +p46598 +I00 +sS'value' +p46599 +NssS'summary_default' +p46600 +(dp46601 +S'editable' +p46602 +I00 +sS'value' +p46603 +S'none' +p46604 +ssS'valid_types' +p46605 +(dp46606 +S'editable' +p46607 +I00 +sS'value' +p46608 +(lp46609 +S'TankPublishedFile' +p46610 +asssS'description' +p46611 +(dp46612 +S'editable' +p46613 +I01 +sS'value' +p46614 +g47 +sssS'tank_published_file' +p46615 +(dp46616 +S'mandatory' +p46617 +(dp46618 +S'editable' +p46619 +I00 +sS'value' +p46620 +I00 +ssS'name' +p46621 +(dp46622 +S'editable' +p46623 +I01 +sS'value' +p46624 +S'Tank Published File' +p46625 +ssS'data_type' +p46626 +(dp46627 +S'editable' +p46628 +I00 +sS'value' +p46629 +S'entity' +p46630 +ssS'entity_type' +p46631 +(dp46632 +S'editable' +p46633 +I00 +sS'value' +p46634 +S'TankDependency' +p46635 +ssS'editable' +p46636 +(dp46637 +S'editable' +p46638 +I00 +sS'value' +p46639 +I00 +ssS'unique' +p46640 +(dp46641 +S'editable' +p46642 +I00 +sS'value' +p46643 +I00 +ssS'properties' +p46644 +(dp46645 +S'default_value' +p46646 +(dp46647 +S'editable' +p46648 +I00 +sS'value' +p46649 +NssS'summary_default' +p46650 +(dp46651 +S'editable' +p46652 +I00 +sS'value' +p46653 +S'none' +p46654 +ssS'valid_types' +p46655 +(dp46656 +S'editable' +p46657 +I00 +sS'value' +p46658 +(lp46659 +S'TankPublishedFile' +p46660 +asssS'description' +p46661 +(dp46662 +S'editable' +p46663 +I01 +sS'value' +p46664 +g47 +ssssS'AssetShootDayConnection' +p46665 +(dp46666 +S'cached_display_name' +p46667 +(dp46668 +S'mandatory' +p46669 +(dp46670 +S'editable' +p46671 +I00 +sS'value' +p46672 +I00 +ssS'name' +p46673 +(dp46674 +S'editable' +p46675 +I01 +sS'value' +p46676 +S'Cached Display Name' +p46677 +ssS'data_type' +p46678 +(dp46679 +S'editable' +p46680 +I00 +sS'value' +p46681 +S'text' +p46682 +ssS'entity_type' +p46683 +(dp46684 +S'editable' +p46685 +I00 +sS'value' +p46686 +S'AssetShootDayConnection' +p46687 +ssS'editable' +p46688 +(dp46689 +S'editable' +p46690 +I00 +sS'value' +p46691 +I01 +ssS'unique' +p46692 +(dp46693 +S'editable' +p46694 +I00 +sS'value' +p46695 +I00 +ssS'properties' +p46696 +(dp46697 +S'default_value' +p46698 +(dp46699 +S'editable' +p46700 +I00 +sS'value' +p46701 +NssS'summary_default' +p46702 +(dp46703 +S'editable' +p46704 +I00 +sS'value' +p46705 +S'none' +p46706 +sssS'description' +p46707 +(dp46708 +S'editable' +p46709 +I01 +sS'value' +p46710 +g47 +sssS'asset' +p46711 +(dp46712 +S'mandatory' +p46713 +(dp46714 +S'editable' +p46715 +I00 +sS'value' +p46716 +I00 +ssS'name' +p46717 +(dp46718 +S'editable' +p46719 +I01 +sS'value' +p46720 +S'Asset' +p46721 +ssS'data_type' +p46722 +(dp46723 +S'editable' +p46724 +I00 +sS'value' +p46725 +S'entity' +p46726 +ssS'entity_type' +p46727 +(dp46728 +S'editable' +p46729 +I00 +sS'value' +p46730 +S'AssetShootDayConnection' +p46731 +ssS'editable' +p46732 +(dp46733 +S'editable' +p46734 +I00 +sS'value' +p46735 +I00 +ssS'unique' +p46736 +(dp46737 +S'editable' +p46738 +I00 +sS'value' +p46739 +I00 +ssS'properties' +p46740 +(dp46741 +S'default_value' +p46742 +(dp46743 +S'editable' +p46744 +I00 +sS'value' +p46745 +NssS'summary_default' +p46746 +(dp46747 +S'editable' +p46748 +I00 +sS'value' +p46749 +S'none' +p46750 +ssS'valid_types' +p46751 +(dp46752 +S'editable' +p46753 +I00 +sS'value' +p46754 +(lp46755 +S'Asset' +p46756 +asssS'description' +p46757 +(dp46758 +S'editable' +p46759 +I01 +sS'value' +p46760 +g47 +sssS'id' +p46761 +(dp46762 +S'mandatory' +p46763 +(dp46764 +S'editable' +p46765 +I00 +sS'value' +p46766 +I01 +ssS'name' +p46767 +(dp46768 +S'editable' +p46769 +I01 +sS'value' +p46770 +S'Id' +p46771 +ssS'data_type' +p46772 +(dp46773 +S'editable' +p46774 +I00 +sS'value' +p46775 +S'number' +p46776 +ssS'entity_type' +p46777 +(dp46778 +S'editable' +p46779 +I00 +sS'value' +p46780 +S'AssetShootDayConnection' +p46781 +ssS'editable' +p46782 +(dp46783 +S'editable' +p46784 +I00 +sS'value' +p46785 +I00 +ssS'unique' +p46786 +(dp46787 +S'editable' +p46788 +I00 +sS'value' +p46789 +I00 +ssS'properties' +p46790 +(dp46791 +S'default_value' +p46792 +(dp46793 +S'editable' +p46794 +I00 +sS'value' +p46795 +NssS'summary_default' +p46796 +(dp46797 +S'editable' +p46798 +I00 +sS'value' +p46799 +S'none' +p46800 +sssS'description' +p46801 +(dp46802 +S'editable' +p46803 +I01 +sS'value' +p46804 +g47 +sssS'shoot_day' +p46805 +(dp46806 +S'mandatory' +p46807 +(dp46808 +S'editable' +p46809 +I00 +sS'value' +p46810 +I00 +ssS'name' +p46811 +(dp46812 +S'editable' +p46813 +I01 +sS'value' +p46814 +S'Shoot Day' +p46815 +ssS'data_type' +p46816 +(dp46817 +S'editable' +p46818 +I00 +sS'value' +p46819 +S'entity' +p46820 +ssS'entity_type' +p46821 +(dp46822 +S'editable' +p46823 +I00 +sS'value' +p46824 +S'AssetShootDayConnection' +p46825 +ssS'editable' +p46826 +(dp46827 +S'editable' +p46828 +I00 +sS'value' +p46829 +I00 +ssS'unique' +p46830 +(dp46831 +S'editable' +p46832 +I00 +sS'value' +p46833 +I00 +ssS'properties' +p46834 +(dp46835 +S'default_value' +p46836 +(dp46837 +S'editable' +p46838 +I00 +sS'value' +p46839 +NssS'summary_default' +p46840 +(dp46841 +S'editable' +p46842 +I00 +sS'value' +p46843 +S'none' +p46844 +ssS'valid_types' +p46845 +(dp46846 +S'editable' +p46847 +I00 +sS'value' +p46848 +(lp46849 +S'ShootDay' +p46850 +asssS'description' +p46851 +(dp46852 +S'editable' +p46853 +I01 +sS'value' +p46854 +g47 +ssssS'Asset' +p46855 +(dp46856 +S'open_notes_count' +p46857 +(dp46858 +S'mandatory' +p46859 +(dp46860 +S'editable' +p46861 +I00 +sS'value' +p46862 +I00 +ssS'name' +p46863 +(dp46864 +S'editable' +p46865 +I01 +sS'value' +p46866 +S'Open Notes Count' +p46867 +ssS'data_type' +p46868 +(dp46869 +S'editable' +p46870 +I00 +sS'value' +p46871 +S'text' +p46872 +ssS'entity_type' +p46873 +(dp46874 +S'editable' +p46875 +I00 +sS'value' +p46876 +S'Asset' +p46877 +ssS'editable' +p46878 +(dp46879 +S'editable' +p46880 +I00 +sS'value' +p46881 +I00 +ssS'unique' +p46882 +(dp46883 +S'editable' +p46884 +I00 +sS'value' +p46885 +I00 +ssS'properties' +p46886 +(dp46887 +S'default_value' +p46888 +(dp46889 +S'editable' +p46890 +I00 +sS'value' +p46891 +NssS'summary_default' +p46892 +(dp46893 +S'editable' +p46894 +I01 +sS'value' +p46895 +S'none' +p46896 +sssS'description' +p46897 +(dp46898 +S'editable' +p46899 +I01 +sS'value' +p46900 +g47 +sssS'code' +p46901 +(dp46902 +S'mandatory' +p46903 +(dp46904 +S'editable' +p46905 +I00 +sS'value' +p46906 +I01 +ssS'name' +p46907 +(dp46908 +S'editable' +p46909 +I01 +sS'value' +p46910 +S'Asset Name' +p46911 +ssS'data_type' +p46912 +(dp46913 +S'editable' +p46914 +I00 +sS'value' +p46915 +S'text' +p46916 +ssS'entity_type' +p46917 +(dp46918 +S'editable' +p46919 +I00 +sS'value' +p46920 +S'Asset' +p46921 +ssS'editable' +p46922 +(dp46923 +S'editable' +p46924 +I00 +sS'value' +p46925 +I01 +ssS'unique' +p46926 +(dp46927 +S'editable' +p46928 +I00 +sS'value' +p46929 +I00 +ssS'properties' +p46930 +(dp46931 +S'default_value' +p46932 +(dp46933 +S'editable' +p46934 +I00 +sS'value' +p46935 +NssS'summary_default' +p46936 +(dp46937 +S'editable' +p46938 +I01 +sS'value' +p46939 +S'none' +p46940 +sssS'description' +p46941 +(dp46942 +S'editable' +p46943 +I01 +sS'value' +p46944 +g47 +sssS'step_11' +p46945 +(dp46946 +S'mandatory' +p46947 +(dp46948 +S'editable' +p46949 +I00 +sS'value' +p46950 +I00 +ssS'name' +p46951 +(dp46952 +S'editable' +p46953 +I01 +sS'value' +p46954 +S'Rig' +p46955 +ssS'data_type' +p46956 +(dp46957 +S'editable' +p46958 +I00 +sS'value' +p46959 +S'pivot_column' +p46960 +ssS'entity_type' +p46961 +(dp46962 +S'editable' +p46963 +I00 +sS'value' +p46964 +S'Asset' +p46965 +ssS'editable' +p46966 +(dp46967 +S'editable' +p46968 +I00 +sS'value' +p46969 +I00 +ssS'unique' +p46970 +(dp46971 +S'editable' +p46972 +I00 +sS'value' +p46973 +I00 +ssS'properties' +p46974 +(dp46975 +S'default_value' +p46976 +(dp46977 +S'editable' +p46978 +I00 +sS'value' +p46979 +NssS'summary_default' +p46980 +(dp46981 +S'editable' +p46982 +I00 +sS'value' +p46983 +S'none' +p46984 +sssS'description' +p46985 +(dp46986 +S'editable' +p46987 +I01 +sS'value' +p46988 +g47 +sssS'step_10' +p46989 +(dp46990 +S'mandatory' +p46991 +(dp46992 +S'editable' +p46993 +I00 +sS'value' +p46994 +I00 +ssS'name' +p46995 +(dp46996 +S'editable' +p46997 +I01 +sS'value' +p46998 +S'Model' +p46999 +ssS'data_type' +p47000 +(dp47001 +S'editable' +p47002 +I00 +sS'value' +p47003 +S'pivot_column' +p47004 +ssS'entity_type' +p47005 +(dp47006 +S'editable' +p47007 +I00 +sS'value' +p47008 +S'Asset' +p47009 +ssS'editable' +p47010 +(dp47011 +S'editable' +p47012 +I00 +sS'value' +p47013 +I00 +ssS'unique' +p47014 +(dp47015 +S'editable' +p47016 +I00 +sS'value' +p47017 +I00 +ssS'properties' +p47018 +(dp47019 +S'default_value' +p47020 +(dp47021 +S'editable' +p47022 +I00 +sS'value' +p47023 +NssS'summary_default' +p47024 +(dp47025 +S'editable' +p47026 +I00 +sS'value' +p47027 +S'none' +p47028 +sssS'description' +p47029 +(dp47030 +S'editable' +p47031 +I01 +sS'value' +p47032 +g47 +sssS'mocap_takes' +p47033 +(dp47034 +S'mandatory' +p47035 +(dp47036 +S'editable' +p47037 +I00 +sS'value' +p47038 +I00 +ssS'name' +p47039 +(dp47040 +S'editable' +p47041 +I01 +sS'value' +p47042 +S'Mocap Takes' +p47043 +ssS'data_type' +p47044 +(dp47045 +S'editable' +p47046 +I00 +sS'value' +p47047 +S'multi_entity' +p47048 +ssS'entity_type' +p47049 +(dp47050 +S'editable' +p47051 +I00 +sS'value' +p47052 +S'Asset' +p47053 +ssS'editable' +p47054 +(dp47055 +S'editable' +p47056 +I00 +sS'value' +p47057 +I01 +ssS'unique' +p47058 +(dp47059 +S'editable' +p47060 +I00 +sS'value' +p47061 +I00 +ssS'properties' +p47062 +(dp47063 +S'default_value' +p47064 +(dp47065 +S'editable' +p47066 +I00 +sS'value' +p47067 +NssS'summary_default' +p47068 +(dp47069 +S'editable' +p47070 +I01 +sS'value' +p47071 +S'none' +p47072 +ssS'valid_types' +p47073 +(dp47074 +S'editable' +p47075 +I01 +sS'value' +p47076 +(lp47077 +S'MocapTake' +p47078 +asssS'description' +p47079 +(dp47080 +S'editable' +p47081 +I01 +sS'value' +p47082 +g47 +sssS'step_12' +p47083 +(dp47084 +S'mandatory' +p47085 +(dp47086 +S'editable' +p47087 +I00 +sS'value' +p47088 +I00 +ssS'name' +p47089 +(dp47090 +S'editable' +p47091 +I01 +sS'value' +p47092 +S'Surface' +p47093 +ssS'data_type' +p47094 +(dp47095 +S'editable' +p47096 +I00 +sS'value' +p47097 +S'pivot_column' +p47098 +ssS'entity_type' +p47099 +(dp47100 +S'editable' +p47101 +I00 +sS'value' +p47102 +S'Asset' +p47103 +ssS'editable' +p47104 +(dp47105 +S'editable' +p47106 +I00 +sS'value' +p47107 +I00 +ssS'unique' +p47108 +(dp47109 +S'editable' +p47110 +I00 +sS'value' +p47111 +I00 +ssS'properties' +p47112 +(dp47113 +S'default_value' +p47114 +(dp47115 +S'editable' +p47116 +I00 +sS'value' +p47117 +NssS'summary_default' +p47118 +(dp47119 +S'editable' +p47120 +I00 +sS'value' +p47121 +S'none' +p47122 +sssS'description' +p47123 +(dp47124 +S'editable' +p47125 +I01 +sS'value' +p47126 +g47 +sssS'image' +p47127 +(dp47128 +S'mandatory' +p47129 +(dp47130 +S'editable' +p47131 +I00 +sS'value' +p47132 +I00 +ssS'name' +p47133 +(dp47134 +S'editable' +p47135 +I01 +sS'value' +p47136 +S'Thumbnail' +p47137 +ssS'data_type' +p47138 +(dp47139 +S'editable' +p47140 +I00 +sS'value' +p47141 +S'image' +p47142 +ssS'entity_type' +p47143 +(dp47144 +S'editable' +p47145 +I00 +sS'value' +p47146 +S'Asset' +p47147 +ssS'editable' +p47148 +(dp47149 +S'editable' +p47150 +I00 +sS'value' +p47151 +I01 +ssS'unique' +p47152 +(dp47153 +S'editable' +p47154 +I00 +sS'value' +p47155 +I00 +ssS'properties' +p47156 +(dp47157 +S'default_value' +p47158 +(dp47159 +S'editable' +p47160 +I00 +sS'value' +p47161 +NssS'summary_default' +p47162 +(dp47163 +S'editable' +p47164 +I01 +sS'value' +p47165 +S'none' +p47166 +sssS'description' +p47167 +(dp47168 +S'editable' +p47169 +I01 +sS'value' +p47170 +g47 +sssS'updated_at' +p47171 +(dp47172 +S'mandatory' +p47173 +(dp47174 +S'editable' +p47175 +I00 +sS'value' +p47176 +I00 +ssS'name' +p47177 +(dp47178 +S'editable' +p47179 +I01 +sS'value' +p47180 +S'Date Updated' +p47181 +ssS'data_type' +p47182 +(dp47183 +S'editable' +p47184 +I00 +sS'value' +p47185 +S'date_time' +p47186 +ssS'entity_type' +p47187 +(dp47188 +S'editable' +p47189 +I00 +sS'value' +p47190 +S'Asset' +p47191 +ssS'editable' +p47192 +(dp47193 +S'editable' +p47194 +I00 +sS'value' +p47195 +I00 +ssS'unique' +p47196 +(dp47197 +S'editable' +p47198 +I00 +sS'value' +p47199 +I00 +ssS'properties' +p47200 +(dp47201 +S'default_value' +p47202 +(dp47203 +S'editable' +p47204 +I00 +sS'value' +p47205 +NssS'summary_default' +p47206 +(dp47207 +S'editable' +p47208 +I01 +sS'value' +p47209 +S'none' +p47210 +sssS'description' +p47211 +(dp47212 +S'editable' +p47213 +I01 +sS'value' +p47214 +g47 +sssS'tasks' +p47215 +(dp47216 +S'mandatory' +p47217 +(dp47218 +S'editable' +p47219 +I00 +sS'value' +p47220 +I00 +ssS'name' +p47221 +(dp47222 +S'editable' +p47223 +I01 +sS'value' +p47224 +S'Tasks' +p47225 +ssS'data_type' +p47226 +(dp47227 +S'editable' +p47228 +I00 +sS'value' +p47229 +S'multi_entity' +p47230 +ssS'entity_type' +p47231 +(dp47232 +S'editable' +p47233 +I00 +sS'value' +p47234 +S'Asset' +p47235 +ssS'editable' +p47236 +(dp47237 +S'editable' +p47238 +I00 +sS'value' +p47239 +I01 +ssS'unique' +p47240 +(dp47241 +S'editable' +p47242 +I00 +sS'value' +p47243 +I00 +ssS'properties' +p47244 +(dp47245 +S'default_value' +p47246 +(dp47247 +S'editable' +p47248 +I00 +sS'value' +p47249 +NssS'summary_default' +p47250 +(dp47251 +S'editable' +p47252 +I01 +sS'value' +p47253 +S'none' +p47254 +ssS'valid_types' +p47255 +(dp47256 +S'editable' +p47257 +I01 +sS'value' +p47258 +(lp47259 +S'Task' +p47260 +asssS'description' +p47261 +(dp47262 +S'editable' +p47263 +I01 +sS'value' +p47264 +g47 +sssS'sequences' +p47265 +(dp47266 +S'mandatory' +p47267 +(dp47268 +S'editable' +p47269 +I00 +sS'value' +p47270 +I00 +ssS'name' +p47271 +(dp47272 +S'editable' +p47273 +I01 +sS'value' +p47274 +S'Sequences' +p47275 +ssS'data_type' +p47276 +(dp47277 +S'editable' +p47278 +I00 +sS'value' +p47279 +S'multi_entity' +p47280 +ssS'entity_type' +p47281 +(dp47282 +S'editable' +p47283 +I00 +sS'value' +p47284 +S'Asset' +p47285 +ssS'editable' +p47286 +(dp47287 +S'editable' +p47288 +I00 +sS'value' +p47289 +I01 +ssS'unique' +p47290 +(dp47291 +S'editable' +p47292 +I00 +sS'value' +p47293 +I00 +ssS'properties' +p47294 +(dp47295 +S'default_value' +p47296 +(dp47297 +S'editable' +p47298 +I00 +sS'value' +p47299 +NssS'summary_default' +p47300 +(dp47301 +S'editable' +p47302 +I01 +sS'value' +p47303 +S'none' +p47304 +ssS'valid_types' +p47305 +(dp47306 +S'editable' +p47307 +I01 +sS'value' +p47308 +(lp47309 +S'Sequence' +p47310 +asssS'description' +p47311 +(dp47312 +S'editable' +p47313 +I01 +sS'value' +p47314 +g47 +sssS'cached_display_name' +p47315 +(dp47316 +S'mandatory' +p47317 +(dp47318 +S'editable' +p47319 +I00 +sS'value' +p47320 +I00 +ssS'name' +p47321 +(dp47322 +S'editable' +p47323 +I01 +sS'value' +p47324 +S'Cached Display Name' +p47325 +ssS'data_type' +p47326 +(dp47327 +S'editable' +p47328 +I00 +sS'value' +p47329 +S'text' +p47330 +ssS'entity_type' +p47331 +(dp47332 +S'editable' +p47333 +I00 +sS'value' +p47334 +S'Asset' +p47335 +ssS'editable' +p47336 +(dp47337 +S'editable' +p47338 +I00 +sS'value' +p47339 +I01 +ssS'unique' +p47340 +(dp47341 +S'editable' +p47342 +I00 +sS'value' +p47343 +I00 +ssS'properties' +p47344 +(dp47345 +S'default_value' +p47346 +(dp47347 +S'editable' +p47348 +I00 +sS'value' +p47349 +NssS'summary_default' +p47350 +(dp47351 +S'editable' +p47352 +I00 +sS'value' +p47353 +S'none' +p47354 +sssS'description' +p47355 +(dp47356 +S'editable' +p47357 +I01 +sS'value' +p47358 +g47 +sssS'id' +p47359 +(dp47360 +S'mandatory' +p47361 +(dp47362 +S'editable' +p47363 +I00 +sS'value' +p47364 +I00 +ssS'name' +p47365 +(dp47366 +S'editable' +p47367 +I01 +sS'value' +p47368 +S'Id' +p47369 +ssS'data_type' +p47370 +(dp47371 +S'editable' +p47372 +I00 +sS'value' +p47373 +S'number' +p47374 +ssS'entity_type' +p47375 +(dp47376 +S'editable' +p47377 +I00 +sS'value' +p47378 +S'Asset' +p47379 +ssS'editable' +p47380 +(dp47381 +S'editable' +p47382 +I00 +sS'value' +p47383 +I00 +ssS'unique' +p47384 +(dp47385 +S'editable' +p47386 +I00 +sS'value' +p47387 +I00 +ssS'properties' +p47388 +(dp47389 +S'default_value' +p47390 +(dp47391 +S'editable' +p47392 +I00 +sS'value' +p47393 +NssS'summary_default' +p47394 +(dp47395 +S'editable' +p47396 +I01 +sS'value' +p47397 +S'none' +p47398 +sssS'description' +p47399 +(dp47400 +S'editable' +p47401 +I01 +sS'value' +p47402 +g47 +sssS'updated_by' +p47403 +(dp47404 +S'mandatory' +p47405 +(dp47406 +S'editable' +p47407 +I00 +sS'value' +p47408 +I00 +ssS'name' +p47409 +(dp47410 +S'editable' +p47411 +I01 +sS'value' +p47412 +S'Updated by' +p47413 +ssS'data_type' +p47414 +(dp47415 +S'editable' +p47416 +I00 +sS'value' +p47417 +S'entity' +p47418 +ssS'entity_type' +p47419 +(dp47420 +S'editable' +p47421 +I00 +sS'value' +p47422 +S'Asset' +p47423 +ssS'editable' +p47424 +(dp47425 +S'editable' +p47426 +I00 +sS'value' +p47427 +I00 +ssS'unique' +p47428 +(dp47429 +S'editable' +p47430 +I00 +sS'value' +p47431 +I00 +ssS'properties' +p47432 +(dp47433 +S'default_value' +p47434 +(dp47435 +S'editable' +p47436 +I00 +sS'value' +p47437 +NssS'summary_default' +p47438 +(dp47439 +S'editable' +p47440 +I01 +sS'value' +p47441 +S'none' +p47442 +ssS'valid_types' +p47443 +(dp47444 +S'editable' +p47445 +I01 +sS'value' +p47446 +(lp47447 +S'HumanUser' +p47448 +aS'ApiUser' +p47449 +asssS'description' +p47450 +(dp47451 +S'editable' +p47452 +I01 +sS'value' +p47453 +g47 +sssS'open_notes' +p47454 +(dp47455 +S'mandatory' +p47456 +(dp47457 +S'editable' +p47458 +I00 +sS'value' +p47459 +I00 +ssS'name' +p47460 +(dp47461 +S'editable' +p47462 +I01 +sS'value' +p47463 +S'Open Notes' +p47464 +ssS'data_type' +p47465 +(dp47466 +S'editable' +p47467 +I00 +sS'value' +p47468 +S'multi_entity' +p47469 +ssS'entity_type' +p47470 +(dp47471 +S'editable' +p47472 +I00 +sS'value' +p47473 +S'Asset' +p47474 +ssS'editable' +p47475 +(dp47476 +S'editable' +p47477 +I00 +sS'value' +p47478 +I00 +ssS'unique' +p47479 +(dp47480 +S'editable' +p47481 +I00 +sS'value' +p47482 +I00 +ssS'properties' +p47483 +(dp47484 +S'default_value' +p47485 +(dp47486 +S'editable' +p47487 +I00 +sS'value' +p47488 +NssS'summary_default' +p47489 +(dp47490 +S'editable' +p47491 +I01 +sS'value' +p47492 +S'none' +p47493 +ssS'valid_types' +p47494 +(dp47495 +S'editable' +p47496 +I01 +sS'value' +p47497 +(lp47498 +S'Note' +p47499 +asssS'description' +p47500 +(dp47501 +S'editable' +p47502 +I01 +sS'value' +p47503 +g47 +sssS'task_template' +p47504 +(dp47505 +S'mandatory' +p47506 +(dp47507 +S'editable' +p47508 +I00 +sS'value' +p47509 +I00 +ssS'name' +p47510 +(dp47511 +S'editable' +p47512 +I01 +sS'value' +p47513 +S'Task Template' +p47514 +ssS'data_type' +p47515 +(dp47516 +S'editable' +p47517 +I00 +sS'value' +p47518 +S'entity' +p47519 +ssS'entity_type' +p47520 +(dp47521 +S'editable' +p47522 +I00 +sS'value' +p47523 +S'Asset' +p47524 +ssS'editable' +p47525 +(dp47526 +S'editable' +p47527 +I00 +sS'value' +p47528 +I01 +ssS'unique' +p47529 +(dp47530 +S'editable' +p47531 +I00 +sS'value' +p47532 +I00 +ssS'properties' +p47533 +(dp47534 +S'default_value' +p47535 +(dp47536 +S'editable' +p47537 +I00 +sS'value' +p47538 +NssS'summary_default' +p47539 +(dp47540 +S'editable' +p47541 +I01 +sS'value' +p47542 +S'none' +p47543 +ssS'valid_types' +p47544 +(dp47545 +S'editable' +p47546 +I01 +sS'value' +p47547 +(lp47548 +S'TaskTemplate' +p47549 +asssS'description' +p47550 +(dp47551 +S'editable' +p47552 +I01 +sS'value' +p47553 +g47 +sssS'created_by' +p47554 +(dp47555 +S'mandatory' +p47556 +(dp47557 +S'editable' +p47558 +I00 +sS'value' +p47559 +I00 +ssS'name' +p47560 +(dp47561 +S'editable' +p47562 +I01 +sS'value' +p47563 +S'Created by' +p47564 +ssS'data_type' +p47565 +(dp47566 +S'editable' +p47567 +I00 +sS'value' +p47568 +S'entity' +p47569 +ssS'entity_type' +p47570 +(dp47571 +S'editable' +p47572 +I00 +sS'value' +p47573 +S'Asset' +p47574 +ssS'editable' +p47575 +(dp47576 +S'editable' +p47577 +I00 +sS'value' +p47578 +I00 +ssS'unique' +p47579 +(dp47580 +S'editable' +p47581 +I00 +sS'value' +p47582 +I00 +ssS'properties' +p47583 +(dp47584 +S'default_value' +p47585 +(dp47586 +S'editable' +p47587 +I00 +sS'value' +p47588 +NssS'summary_default' +p47589 +(dp47590 +S'editable' +p47591 +I01 +sS'value' +p47592 +S'none' +p47593 +ssS'valid_types' +p47594 +(dp47595 +S'editable' +p47596 +I01 +sS'value' +p47597 +(lp47598 +S'HumanUser' +p47599 +aS'ApiUser' +p47600 +asssS'description' +p47601 +(dp47602 +S'editable' +p47603 +I01 +sS'value' +p47604 +g47 +sssS'parents' +p47605 +(dp47606 +S'mandatory' +p47607 +(dp47608 +S'editable' +p47609 +I00 +sS'value' +p47610 +I00 +ssS'name' +p47611 +(dp47612 +S'editable' +p47613 +I01 +sS'value' +p47614 +S'Parent Assets' +p47615 +ssS'data_type' +p47616 +(dp47617 +S'editable' +p47618 +I00 +sS'value' +p47619 +S'multi_entity' +p47620 +ssS'entity_type' +p47621 +(dp47622 +S'editable' +p47623 +I00 +sS'value' +p47624 +S'Asset' +p47625 +ssS'editable' +p47626 +(dp47627 +S'editable' +p47628 +I00 +sS'value' +p47629 +I01 +ssS'unique' +p47630 +(dp47631 +S'editable' +p47632 +I00 +sS'value' +p47633 +I00 +ssS'properties' +p47634 +(dp47635 +S'default_value' +p47636 +(dp47637 +S'editable' +p47638 +I00 +sS'value' +p47639 +NssS'summary_default' +p47640 +(dp47641 +S'editable' +p47642 +I01 +sS'value' +p47643 +S'none' +p47644 +ssS'valid_types' +p47645 +(dp47646 +S'editable' +p47647 +I01 +sS'value' +p47648 +(lp47649 +S'Asset' +p47650 +asssS'description' +p47651 +(dp47652 +S'editable' +p47653 +I01 +sS'value' +p47654 +g47 +sssS'sg_status_list' +p47655 +(dp47656 +S'mandatory' +p47657 +(dp47658 +S'editable' +p47659 +I00 +sS'value' +p47660 +I00 +ssS'name' +p47661 +(dp47662 +S'editable' +p47663 +I01 +sS'value' +p47664 +S'Status' +p47665 +ssS'data_type' +p47666 +(dp47667 +S'editable' +p47668 +I00 +sS'value' +p47669 +S'status_list' +p47670 +ssS'entity_type' +p47671 +(dp47672 +S'editable' +p47673 +I00 +sS'value' +p47674 +S'Asset' +p47675 +ssS'editable' +p47676 +(dp47677 +S'editable' +p47678 +I00 +sS'value' +p47679 +I01 +ssS'unique' +p47680 +(dp47681 +S'editable' +p47682 +I00 +sS'value' +p47683 +I00 +ssS'properties' +p47684 +(dp47685 +S'default_value' +p47686 +(dp47687 +S'editable' +p47688 +I01 +sS'value' +p47689 +S'wtg' +p47690 +ssS'valid_values' +p47691 +(dp47692 +S'editable' +p47693 +I01 +sS'value' +p47694 +(lp47695 +S'fin' +p47696 +aS'ip' +p47697 +aS'omt' +p47698 +aS'hld' +p47699 +aS'rdy' +p47700 +aS'wtg' +p47701 +assS'summary_default' +p47702 +(dp47703 +S'editable' +p47704 +I01 +sS'value' +p47705 +S'status_list' +p47706 +sssS'description' +p47707 +(dp47708 +S'editable' +p47709 +I01 +sS'value' +p47710 +g47 +sssS'elements' +p47711 +(dp47712 +S'mandatory' +p47713 +(dp47714 +S'editable' +p47715 +I00 +sS'value' +p47716 +I00 +ssS'name' +p47717 +(dp47718 +S'editable' +p47719 +I01 +sS'value' +p47720 +S'Elements' +p47721 +ssS'data_type' +p47722 +(dp47723 +S'editable' +p47724 +I00 +sS'value' +p47725 +S'multi_entity' +p47726 +ssS'entity_type' +p47727 +(dp47728 +S'editable' +p47729 +I00 +sS'value' +p47730 +S'Asset' +p47731 +ssS'editable' +p47732 +(dp47733 +S'editable' +p47734 +I00 +sS'value' +p47735 +I01 +ssS'unique' +p47736 +(dp47737 +S'editable' +p47738 +I00 +sS'value' +p47739 +I00 +ssS'properties' +p47740 +(dp47741 +S'default_value' +p47742 +(dp47743 +S'editable' +p47744 +I00 +sS'value' +p47745 +NssS'summary_default' +p47746 +(dp47747 +S'editable' +p47748 +I00 +sS'value' +p47749 +S'none' +p47750 +ssS'valid_types' +p47751 +(dp47752 +S'editable' +p47753 +I00 +sS'value' +p47754 +(lp47755 +S'Element' +p47756 +asssS'description' +p47757 +(dp47758 +S'editable' +p47759 +I01 +sS'value' +p47760 +g47 +sssS'description' +p47761 +(dp47762 +S'mandatory' +p47763 +(dp47764 +S'editable' +p47765 +I00 +sS'value' +p47766 +I00 +ssS'name' +p47767 +(dp47768 +S'editable' +p47769 +I01 +sS'value' +p47770 +S'Description' +p47771 +ssS'data_type' +p47772 +(dp47773 +S'editable' +p47774 +I00 +sS'value' +p47775 +S'text' +p47776 +ssS'entity_type' +p47777 +(dp47778 +S'editable' +p47779 +I00 +sS'value' +p47780 +S'Asset' +p47781 +ssS'editable' +p47782 +(dp47783 +S'editable' +p47784 +I00 +sS'value' +p47785 +I01 +ssS'unique' +p47786 +(dp47787 +S'editable' +p47788 +I00 +sS'value' +p47789 +I00 +ssS'properties' +p47790 +(dp47791 +S'default_value' +p47792 +(dp47793 +S'editable' +p47794 +I00 +sS'value' +p47795 +NssS'summary_default' +p47796 +(dp47797 +S'editable' +p47798 +I01 +sS'value' +p47799 +S'none' +p47800 +sssS'description' +p47801 +(dp47802 +S'editable' +p47803 +I01 +sS'value' +p47804 +g47 +sssS'addressings_cc' +p47805 +(dp47806 +S'mandatory' +p47807 +(dp47808 +S'editable' +p47809 +I00 +sS'value' +p47810 +I00 +ssS'name' +p47811 +(dp47812 +S'editable' +p47813 +I01 +sS'value' +p47814 +S'Cc' +p47815 +ssS'data_type' +p47816 +(dp47817 +S'editable' +p47818 +I00 +sS'value' +p47819 +S'multi_entity' +p47820 +ssS'entity_type' +p47821 +(dp47822 +S'editable' +p47823 +I00 +sS'value' +p47824 +S'Asset' +p47825 +ssS'editable' +p47826 +(dp47827 +S'editable' +p47828 +I00 +sS'value' +p47829 +I01 +ssS'unique' +p47830 +(dp47831 +S'editable' +p47832 +I00 +sS'value' +p47833 +I00 +ssS'properties' +p47834 +(dp47835 +S'default_value' +p47836 +(dp47837 +S'editable' +p47838 +I00 +sS'value' +p47839 +NssS'summary_default' +p47840 +(dp47841 +S'editable' +p47842 +I01 +sS'value' +p47843 +S'none' +p47844 +ssS'valid_types' +p47845 +(dp47846 +S'editable' +p47847 +I01 +sS'value' +p47848 +(lp47849 +S'Group' +p47850 +aS'HumanUser' +p47851 +asssS'description' +p47852 +(dp47853 +S'editable' +p47854 +I01 +sS'value' +p47855 +g47 +sssS'shoot_days' +p47856 +(dp47857 +S'mandatory' +p47858 +(dp47859 +S'editable' +p47860 +I00 +sS'value' +p47861 +I00 +ssS'name' +p47862 +(dp47863 +S'editable' +p47864 +I01 +sS'value' +p47865 +S'Shoot Days' +p47866 +ssS'data_type' +p47867 +(dp47868 +S'editable' +p47869 +I00 +sS'value' +p47870 +S'multi_entity' +p47871 +ssS'entity_type' +p47872 +(dp47873 +S'editable' +p47874 +I00 +sS'value' +p47875 +S'Asset' +p47876 +ssS'editable' +p47877 +(dp47878 +S'editable' +p47879 +I00 +sS'value' +p47880 +I01 +ssS'unique' +p47881 +(dp47882 +S'editable' +p47883 +I00 +sS'value' +p47884 +I00 +ssS'properties' +p47885 +(dp47886 +S'default_value' +p47887 +(dp47888 +S'editable' +p47889 +I00 +sS'value' +p47890 +NssS'summary_default' +p47891 +(dp47892 +S'editable' +p47893 +I01 +sS'value' +p47894 +S'none' +p47895 +ssS'valid_types' +p47896 +(dp47897 +S'editable' +p47898 +I01 +sS'value' +p47899 +(lp47900 +S'ShootDay' +p47901 +asssS'description' +p47902 +(dp47903 +S'editable' +p47904 +I01 +sS'value' +p47905 +g47 +sssS'step_0' +p47906 +(dp47907 +S'mandatory' +p47908 +(dp47909 +S'editable' +p47910 +I00 +sS'value' +p47911 +I00 +ssS'name' +p47912 +(dp47913 +S'editable' +p47914 +I01 +sS'value' +p47915 +S'ALL TASKS' +p47916 +ssS'data_type' +p47917 +(dp47918 +S'editable' +p47919 +I00 +sS'value' +p47920 +S'pivot_column' +p47921 +ssS'entity_type' +p47922 +(dp47923 +S'editable' +p47924 +I00 +sS'value' +p47925 +S'Asset' +p47926 +ssS'editable' +p47927 +(dp47928 +S'editable' +p47929 +I00 +sS'value' +p47930 +I00 +ssS'unique' +p47931 +(dp47932 +S'editable' +p47933 +I00 +sS'value' +p47934 +I00 +ssS'properties' +p47935 +(dp47936 +S'default_value' +p47937 +(dp47938 +S'editable' +p47939 +I00 +sS'value' +p47940 +NssS'summary_default' +p47941 +(dp47942 +S'editable' +p47943 +I00 +sS'value' +p47944 +S'none' +p47945 +sssS'description' +p47946 +(dp47947 +S'editable' +p47948 +I01 +sS'value' +p47949 +g47 +sssS'tag_list' +p47950 +(dp47951 +S'mandatory' +p47952 +(dp47953 +S'editable' +p47954 +I00 +sS'value' +p47955 +I00 +ssS'name' +p47956 +(dp47957 +S'editable' +p47958 +I01 +sS'value' +p47959 +S'Tags' +p47960 +ssS'data_type' +p47961 +(dp47962 +S'editable' +p47963 +I00 +sS'value' +p47964 +S'tag_list' +p47965 +ssS'entity_type' +p47966 +(dp47967 +S'editable' +p47968 +I00 +sS'value' +p47969 +S'Asset' +p47970 +ssS'editable' +p47971 +(dp47972 +S'editable' +p47973 +I00 +sS'value' +p47974 +I01 +ssS'unique' +p47975 +(dp47976 +S'editable' +p47977 +I00 +sS'value' +p47978 +I00 +ssS'properties' +p47979 +(dp47980 +S'default_value' +p47981 +(dp47982 +S'editable' +p47983 +I00 +sS'value' +p47984 +NssS'summary_default' +p47985 +(dp47986 +S'editable' +p47987 +I01 +sS'value' +p47988 +S'none' +p47989 +ssS'valid_types' +p47990 +(dp47991 +S'editable' +p47992 +I01 +sS'value' +p47993 +(lp47994 +S'Tag' +p47995 +asssS'description' +p47996 +(dp47997 +S'editable' +p47998 +I01 +sS'value' +p47999 +g47 +sssS'assets' +p48000 +(dp48001 +S'mandatory' +p48002 +(dp48003 +S'editable' +p48004 +I00 +sS'value' +p48005 +I00 +ssS'name' +p48006 +(dp48007 +S'editable' +p48008 +I01 +sS'value' +p48009 +S'Sub Assets' +p48010 +ssS'data_type' +p48011 +(dp48012 +S'editable' +p48013 +I00 +sS'value' +p48014 +S'multi_entity' +p48015 +ssS'entity_type' +p48016 +(dp48017 +S'editable' +p48018 +I00 +sS'value' +p48019 +S'Asset' +p48020 +ssS'editable' +p48021 +(dp48022 +S'editable' +p48023 +I00 +sS'value' +p48024 +I01 +ssS'unique' +p48025 +(dp48026 +S'editable' +p48027 +I00 +sS'value' +p48028 +I00 +ssS'properties' +p48029 +(dp48030 +S'default_value' +p48031 +(dp48032 +S'editable' +p48033 +I00 +sS'value' +p48034 +NssS'summary_default' +p48035 +(dp48036 +S'editable' +p48037 +I01 +sS'value' +p48038 +S'none' +p48039 +ssS'valid_types' +p48040 +(dp48041 +S'editable' +p48042 +I01 +sS'value' +p48043 +(lp48044 +S'Asset' +p48045 +asssS'description' +p48046 +(dp48047 +S'editable' +p48048 +I01 +sS'value' +p48049 +g47 +sssS'step_9' +p48050 +(dp48051 +S'mandatory' +p48052 +(dp48053 +S'editable' +p48054 +I00 +sS'value' +p48055 +I00 +ssS'name' +p48056 +(dp48057 +S'editable' +p48058 +I01 +sS'value' +p48059 +S'Art' +p48060 +ssS'data_type' +p48061 +(dp48062 +S'editable' +p48063 +I00 +sS'value' +p48064 +S'pivot_column' +p48065 +ssS'entity_type' +p48066 +(dp48067 +S'editable' +p48068 +I00 +sS'value' +p48069 +S'Asset' +p48070 +ssS'editable' +p48071 +(dp48072 +S'editable' +p48073 +I00 +sS'value' +p48074 +I00 +ssS'unique' +p48075 +(dp48076 +S'editable' +p48077 +I00 +sS'value' +p48078 +I00 +ssS'properties' +p48079 +(dp48080 +S'default_value' +p48081 +(dp48082 +S'editable' +p48083 +I00 +sS'value' +p48084 +NssS'summary_default' +p48085 +(dp48086 +S'editable' +p48087 +I00 +sS'value' +p48088 +S'none' +p48089 +sssS'description' +p48090 +(dp48091 +S'editable' +p48092 +I01 +sS'value' +p48093 +g47 +sssS'notes' +p48094 +(dp48095 +S'mandatory' +p48096 +(dp48097 +S'editable' +p48098 +I00 +sS'value' +p48099 +I00 +ssS'name' +p48100 +(dp48101 +S'editable' +p48102 +I01 +sS'value' +p48103 +S'Notes' +p48104 +ssS'data_type' +p48105 +(dp48106 +S'editable' +p48107 +I00 +sS'value' +p48108 +S'multi_entity' +p48109 +ssS'entity_type' +p48110 +(dp48111 +S'editable' +p48112 +I00 +sS'value' +p48113 +S'Asset' +p48114 +ssS'editable' +p48115 +(dp48116 +S'editable' +p48117 +I00 +sS'value' +p48118 +I01 +ssS'unique' +p48119 +(dp48120 +S'editable' +p48121 +I00 +sS'value' +p48122 +I00 +ssS'properties' +p48123 +(dp48124 +S'default_value' +p48125 +(dp48126 +S'editable' +p48127 +I00 +sS'value' +p48128 +NssS'summary_default' +p48129 +(dp48130 +S'editable' +p48131 +I01 +sS'value' +p48132 +S'none' +p48133 +ssS'valid_types' +p48134 +(dp48135 +S'editable' +p48136 +I01 +sS'value' +p48137 +(lp48138 +S'Note' +p48139 +asssS'description' +p48140 +(dp48141 +S'editable' +p48142 +I01 +sS'value' +p48143 +g47 +sssS'scenes' +p48144 +(dp48145 +S'mandatory' +p48146 +(dp48147 +S'editable' +p48148 +I00 +sS'value' +p48149 +I00 +ssS'name' +p48150 +(dp48151 +S'editable' +p48152 +I01 +sS'value' +p48153 +S'Scenes' +p48154 +ssS'data_type' +p48155 +(dp48156 +S'editable' +p48157 +I00 +sS'value' +p48158 +S'multi_entity' +p48159 +ssS'entity_type' +p48160 +(dp48161 +S'editable' +p48162 +I00 +sS'value' +p48163 +S'Asset' +p48164 +ssS'editable' +p48165 +(dp48166 +S'editable' +p48167 +I00 +sS'value' +p48168 +I01 +ssS'unique' +p48169 +(dp48170 +S'editable' +p48171 +I00 +sS'value' +p48172 +I00 +ssS'properties' +p48173 +(dp48174 +S'default_value' +p48175 +(dp48176 +S'editable' +p48177 +I00 +sS'value' +p48178 +NssS'summary_default' +p48179 +(dp48180 +S'editable' +p48181 +I01 +sS'value' +p48182 +S'none' +p48183 +ssS'valid_types' +p48184 +(dp48185 +S'editable' +p48186 +I01 +sS'value' +p48187 +(lp48188 +S'Scene' +p48189 +asssS'description' +p48190 +(dp48191 +S'editable' +p48192 +I01 +sS'value' +p48193 +g47 +sssS'project' +p48194 +(dp48195 +S'mandatory' +p48196 +(dp48197 +S'editable' +p48198 +I00 +sS'value' +p48199 +I00 +ssS'name' +p48200 +(dp48201 +S'editable' +p48202 +I01 +sS'value' +p48203 +S'Project' +p48204 +ssS'data_type' +p48205 +(dp48206 +S'editable' +p48207 +I00 +sS'value' +p48208 +S'entity' +p48209 +ssS'entity_type' +p48210 +(dp48211 +S'editable' +p48212 +I00 +sS'value' +p48213 +S'Asset' +p48214 +ssS'editable' +p48215 +(dp48216 +S'editable' +p48217 +I00 +sS'value' +p48218 +I01 +ssS'unique' +p48219 +(dp48220 +S'editable' +p48221 +I00 +sS'value' +p48222 +I00 +ssS'properties' +p48223 +(dp48224 +S'default_value' +p48225 +(dp48226 +S'editable' +p48227 +I00 +sS'value' +p48228 +NssS'summary_default' +p48229 +(dp48230 +S'editable' +p48231 +I01 +sS'value' +p48232 +S'none' +p48233 +ssS'valid_types' +p48234 +(dp48235 +S'editable' +p48236 +I01 +sS'value' +p48237 +(lp48238 +S'Project' +p48239 +asssS'description' +p48240 +(dp48241 +S'editable' +p48242 +I01 +sS'value' +p48243 +g47 +sssS'filmstrip_image' +p48244 +(dp48245 +S'mandatory' +p48246 +(dp48247 +S'editable' +p48248 +I00 +sS'value' +p48249 +I00 +ssS'name' +p48250 +(dp48251 +S'editable' +p48252 +I01 +sS'value' +p48253 +S'Filmstrip Thumbnail' +p48254 +ssS'data_type' +p48255 +(dp48256 +S'editable' +p48257 +I00 +sS'value' +p48258 +S'image' +p48259 +ssS'entity_type' +p48260 +(dp48261 +S'editable' +p48262 +I00 +sS'value' +p48263 +S'Asset' +p48264 +ssS'editable' +p48265 +(dp48266 +S'editable' +p48267 +I00 +sS'value' +p48268 +I01 +ssS'unique' +p48269 +(dp48270 +S'editable' +p48271 +I00 +sS'value' +p48272 +I00 +ssS'properties' +p48273 +(dp48274 +S'default_value' +p48275 +(dp48276 +S'editable' +p48277 +I00 +sS'value' +p48278 +NssS'summary_default' +p48279 +(dp48280 +S'editable' +p48281 +I01 +sS'value' +p48282 +S'none' +p48283 +sssS'description' +p48284 +(dp48285 +S'editable' +p48286 +I01 +sS'value' +p48287 +g47 +sssS'shots' +p48288 +(dp48289 +S'mandatory' +p48290 +(dp48291 +S'editable' +p48292 +I00 +sS'value' +p48293 +I00 +ssS'name' +p48294 +(dp48295 +S'editable' +p48296 +I01 +sS'value' +p48297 +S'Shots' +p48298 +ssS'data_type' +p48299 +(dp48300 +S'editable' +p48301 +I00 +sS'value' +p48302 +S'multi_entity' +p48303 +ssS'entity_type' +p48304 +(dp48305 +S'editable' +p48306 +I00 +sS'value' +p48307 +S'Asset' +p48308 +ssS'editable' +p48309 +(dp48310 +S'editable' +p48311 +I00 +sS'value' +p48312 +I01 +ssS'unique' +p48313 +(dp48314 +S'editable' +p48315 +I00 +sS'value' +p48316 +I00 +ssS'properties' +p48317 +(dp48318 +S'default_value' +p48319 +(dp48320 +S'editable' +p48321 +I00 +sS'value' +p48322 +NssS'summary_default' +p48323 +(dp48324 +S'editable' +p48325 +I01 +sS'value' +p48326 +S'none' +p48327 +ssS'valid_types' +p48328 +(dp48329 +S'editable' +p48330 +I01 +sS'value' +p48331 +(lp48332 +S'Shot' +p48333 +asssS'description' +p48334 +(dp48335 +S'editable' +p48336 +I01 +sS'value' +p48337 +g47 +sssS'sg_asset_library' +p48338 +(dp48339 +S'mandatory' +p48340 +(dp48341 +S'editable' +p48342 +I00 +sS'value' +p48343 +I00 +ssS'name' +p48344 +(dp48345 +S'editable' +p48346 +I01 +sS'value' +p48347 +S'Asset Library' +p48348 +ssS'data_type' +p48349 +(dp48350 +S'editable' +p48351 +I00 +sS'value' +p48352 +S'entity' +p48353 +ssS'entity_type' +p48354 +(dp48355 +S'editable' +p48356 +I00 +sS'value' +p48357 +S'Asset' +p48358 +ssS'editable' +p48359 +(dp48360 +S'editable' +p48361 +I00 +sS'value' +p48362 +I01 +ssS'unique' +p48363 +(dp48364 +S'editable' +p48365 +I00 +sS'value' +p48366 +I00 +ssS'properties' +p48367 +(dp48368 +S'default_value' +p48369 +(dp48370 +S'editable' +p48371 +I00 +sS'value' +p48372 +NssS'summary_default' +p48373 +(dp48374 +S'editable' +p48375 +I01 +sS'value' +p48376 +S'none' +p48377 +ssS'valid_types' +p48378 +(dp48379 +S'editable' +p48380 +I01 +sS'value' +p48381 +(lp48382 +S'AssetLibrary' +p48383 +asssS'description' +p48384 +(dp48385 +S'editable' +p48386 +I01 +sS'value' +p48387 +g47 +sssS'sg_asset_type' +p48388 +(dp48389 +S'mandatory' +p48390 +(dp48391 +S'editable' +p48392 +I00 +sS'value' +p48393 +I00 +ssS'name' +p48394 +(dp48395 +S'editable' +p48396 +I01 +sS'value' +p48397 +S'Type' +p48398 +ssS'data_type' +p48399 +(dp48400 +S'editable' +p48401 +I00 +sS'value' +p48402 +S'list' +p48403 +ssS'entity_type' +p48404 +(dp48405 +S'editable' +p48406 +I00 +sS'value' +p48407 +S'Asset' +p48408 +ssS'editable' +p48409 +(dp48410 +S'editable' +p48411 +I00 +sS'value' +p48412 +I01 +ssS'unique' +p48413 +(dp48414 +S'editable' +p48415 +I00 +sS'value' +p48416 +I00 +ssS'properties' +p48417 +(dp48418 +S'default_value' +p48419 +(dp48420 +S'editable' +p48421 +I00 +sS'value' +p48422 +NssS'valid_values' +p48423 +(dp48424 +S'editable' +p48425 +I01 +sS'value' +p48426 +(lp48427 +S'Character' +p48428 +aS'Vehicle' +p48429 +aS'Prop' +p48430 +aS'Environment' +p48431 +aS'Matte Painting' +p48432 +assS'summary_default' +p48433 +(dp48434 +S'editable' +p48435 +I01 +sS'value' +p48436 +S'none' +p48437 +sssS'description' +p48438 +(dp48439 +S'editable' +p48440 +I01 +sS'value' +p48441 +g47 +sssS'sg_library' +p48442 +(dp48443 +S'mandatory' +p48444 +(dp48445 +S'editable' +p48446 +I00 +sS'value' +p48447 +I00 +ssS'name' +p48448 +(dp48449 +S'editable' +p48450 +I01 +sS'value' +p48451 +S'Library' +p48452 +ssS'data_type' +p48453 +(dp48454 +S'editable' +p48455 +I00 +sS'value' +p48456 +S'entity' +p48457 +ssS'entity_type' +p48458 +(dp48459 +S'editable' +p48460 +I00 +sS'value' +p48461 +S'Asset' +p48462 +ssS'editable' +p48463 +(dp48464 +S'editable' +p48465 +I00 +sS'value' +p48466 +I01 +ssS'unique' +p48467 +(dp48468 +S'editable' +p48469 +I00 +sS'value' +p48470 +I00 +ssS'properties' +p48471 +(dp48472 +S'default_value' +p48473 +(dp48474 +S'editable' +p48475 +I00 +sS'value' +p48476 +NssS'summary_default' +p48477 +(dp48478 +S'editable' +p48479 +I01 +sS'value' +p48480 +S'none' +p48481 +ssS'valid_types' +p48482 +(dp48483 +S'editable' +p48484 +I01 +sS'value' +p48485 +(lp48486 +S'AssetLibrary' +p48487 +asssS'description' +p48488 +(dp48489 +S'editable' +p48490 +I01 +sS'value' +p48491 +g47 +sssS'created_at' +p48492 +(dp48493 +S'mandatory' +p48494 +(dp48495 +S'editable' +p48496 +I00 +sS'value' +p48497 +I00 +ssS'name' +p48498 +(dp48499 +S'editable' +p48500 +I01 +sS'value' +p48501 +S'Date Created' +p48502 +ssS'data_type' +p48503 +(dp48504 +S'editable' +p48505 +I00 +sS'value' +p48506 +S'date_time' +p48507 +ssS'entity_type' +p48508 +(dp48509 +S'editable' +p48510 +I00 +sS'value' +p48511 +S'Asset' +p48512 +ssS'editable' +p48513 +(dp48514 +S'editable' +p48515 +I00 +sS'value' +p48516 +I00 +ssS'unique' +p48517 +(dp48518 +S'editable' +p48519 +I00 +sS'value' +p48520 +I00 +ssS'properties' +p48521 +(dp48522 +S'default_value' +p48523 +(dp48524 +S'editable' +p48525 +I00 +sS'value' +p48526 +NssS'summary_default' +p48527 +(dp48528 +S'editable' +p48529 +I01 +sS'value' +p48530 +S'none' +p48531 +sssS'description' +p48532 +(dp48533 +S'editable' +p48534 +I01 +sS'value' +p48535 +g47 +ssss. \ No newline at end of file diff --git a/tests/mockgun/schema_entity.pickle b/tests/mockgun/schema_entity.pickle new file mode 100644 index 000000000..1e528ce03 --- /dev/null +++ b/tests/mockgun/schema_entity.pickle @@ -0,0 +1,1003 @@ +(dp0 +S'Playlist' +p1 +(dp2 +S'name' +p3 +(dp4 +S'editable' +p5 +I00 +sS'value' +p6 +S'Playlist' +p7 +sssS'AppWelcomeUserConnection' +p8 +(dp9 +S'name' +p10 +(dp11 +S'editable' +p12 +I00 +sS'value' +p13 +S'App Welcome User Connection' +p14 +sssS'Group' +p15 +(dp16 +S'name' +p17 +(dp18 +S'editable' +p19 +I00 +sS'value' +p20 +S'Group' +p21 +sssS'PhysicalAssetMocapTakeConnection' +p22 +(dp23 +S'name' +p24 +(dp25 +S'editable' +p26 +I00 +sS'value' +p27 +S'Physical Asset Mocap Take Connection' +p28 +sssS'CustomEntity05' +p29 +(dp30 +S'name' +p31 +(dp32 +S'editable' +p33 +I00 +sS'value' +p34 +S'Custom Entity05' +p35 +sssS'Note' +p36 +(dp37 +S'name' +p38 +(dp39 +S'editable' +p40 +I00 +sS'value' +p41 +S'Note' +p42 +sssS'TaskDependency' +p43 +(dp44 +S'name' +p45 +(dp46 +S'editable' +p47 +I00 +sS'value' +p48 +S'Task Dependency' +p49 +sssS'PageHit' +p50 +(dp51 +S'name' +p52 +(dp53 +S'editable' +p54 +I00 +sS'value' +p55 +S'Page Hit' +p56 +sssS'ActionMenuItem' +p57 +(dp58 +S'name' +p59 +(dp60 +S'editable' +p61 +I00 +sS'value' +p62 +S'Action Menu Item' +p63 +sssS'Attachment' +p64 +(dp65 +S'name' +p66 +(dp67 +S'editable' +p68 +I00 +sS'value' +p69 +S'File' +p70 +sssS'AssetMocapTakeConnection' +p71 +(dp72 +S'name' +p73 +(dp74 +S'editable' +p75 +I00 +sS'value' +p76 +S'Asset Mocap Take Connection' +p77 +sssS'Department' +p78 +(dp79 +S'name' +p80 +(dp81 +S'editable' +p82 +I00 +sS'value' +p83 +S'Department' +p84 +sssS'AssetSceneConnection' +p85 +(dp86 +S'name' +p87 +(dp88 +S'editable' +p89 +I00 +sS'value' +p90 +S'Asset Scene Connection' +p91 +sssS'CameraMocapTakeConnection' +p92 +(dp93 +S'name' +p94 +(dp95 +S'editable' +p96 +I00 +sS'value' +p97 +S'Camera Mocap Take Connection' +p98 +sssS'Booking' +p99 +(dp100 +S'name' +p101 +(dp102 +S'editable' +p103 +I00 +sS'value' +p104 +S'Booking' +p105 +sssS'CutVersionConnection' +p106 +(dp107 +S'name' +p108 +(dp109 +S'editable' +p110 +I00 +sS'value' +p111 +S'Cut Version Connection' +p112 +sssS'TimeLog' +p113 +(dp114 +S'name' +p115 +(dp116 +S'editable' +p117 +I00 +sS'value' +p118 +S'Time Log' +p119 +sssS'PlaylistVersionConnection' +p120 +(dp121 +S'name' +p122 +(dp123 +S'editable' +p124 +I00 +sS'value' +p125 +S'Playlist Version Connection' +p126 +sssS'CustomNonProjectEntity02' +p127 +(dp128 +S'name' +p129 +(dp130 +S'editable' +p131 +I00 +sS'value' +p132 +S'Custom Non Project Entity02' +p133 +sssS'AssetElementConnection' +p134 +(dp135 +S'name' +p136 +(dp137 +S'editable' +p138 +I00 +sS'value' +p139 +S'Asset Element Connection' +p140 +sssS'ReleaseTicketConnection' +p141 +(dp142 +S'name' +p143 +(dp144 +S'editable' +p145 +I00 +sS'value' +p146 +S'Release Ticket Connection' +p147 +sssS'RevisionRevisionConnection' +p148 +(dp149 +S'name' +p150 +(dp151 +S'editable' +p152 +I00 +sS'value' +p153 +S'Revision Revision Connection' +p154 +sssS'ProjectUserConnection' +p155 +(dp156 +S'name' +p157 +(dp158 +S'editable' +p159 +I00 +sS'value' +p160 +S'Project User Connection' +p161 +sssS'MocapTakeRangeShotConnection' +p162 +(dp163 +S'name' +p164 +(dp165 +S'editable' +p166 +I00 +sS'value' +p167 +S'Mocap Take Range Shot Connection' +p168 +sssS'PublishedFileDependency' +p169 +(dp170 +S'name' +p171 +(dp172 +S'editable' +p173 +I00 +sS'value' +p174 +S'Published File Dependency' +p175 +sssS'Step' +p176 +(dp177 +S'name' +p178 +(dp179 +S'editable' +p180 +I00 +sS'value' +p181 +S'Step' +p182 +sssS'AssetLibrary' +p183 +(dp184 +S'name' +p185 +(dp186 +S'editable' +p187 +I00 +sS'value' +p188 +S'Asset Library' +p189 +sssS'PerformerMocapTakeConnection' +p190 +(dp191 +S'name' +p192 +(dp193 +S'editable' +p194 +I00 +sS'value' +p195 +S'Performer Mocap Take Connection' +p196 +sssS'Phase' +p197 +(dp198 +S'name' +p199 +(dp200 +S'editable' +p201 +I00 +sS'value' +p202 +S'Phase' +p203 +sssS'PublishedFile' +p204 +(dp205 +S'name' +p206 +(dp207 +S'editable' +p208 +I00 +sS'value' +p209 +S'Published File' +p210 +sssS'ShootDaySceneConnection' +p211 +(dp212 +S'name' +p213 +(dp214 +S'editable' +p215 +I00 +sS'value' +p216 +S'Shoot Day Scene Connection' +p217 +sssS'AssetShotConnection' +p218 +(dp219 +S'name' +p220 +(dp221 +S'editable' +p222 +I00 +sS'value' +p223 +S'Asset Shot Connection' +p224 +sssS'TicketTicketConnection' +p225 +(dp226 +S'name' +p227 +(dp228 +S'editable' +p229 +I00 +sS'value' +p230 +S'Ticket Ticket Connection' +p231 +sssS'AssetBlendshapeConnection' +p232 +(dp233 +S'name' +p234 +(dp235 +S'editable' +p236 +I00 +sS'value' +p237 +S'Asset Blendshape Connection' +p238 +sssS'PageSetting' +p239 +(dp240 +S'name' +p241 +(dp242 +S'editable' +p243 +I00 +sS'value' +p244 +S'Page Setting' +p245 +sssS'Status' +p246 +(dp247 +S'name' +p248 +(dp249 +S'editable' +p250 +I00 +sS'value' +p251 +S'Status' +p252 +sssS'Reply' +p253 +(dp254 +S'name' +p255 +(dp256 +S'editable' +p257 +I00 +sS'value' +p258 +S'Reply' +p259 +sssS'Task' +p260 +(dp261 +S'name' +p262 +(dp263 +S'editable' +p264 +I00 +sS'value' +p265 +S'Task' +p266 +sssS'CustomNonProjectEntity01' +p267 +(dp268 +S'name' +p269 +(dp270 +S'editable' +p271 +I00 +sS'value' +p272 +S'Custom Non Project Entity01' +p273 +sssS'ApiUser' +p274 +(dp275 +S'name' +p276 +(dp277 +S'editable' +p278 +I00 +sS'value' +p279 +S'Script' +p280 +sssS'CustomNonProjectEntity03' +p281 +(dp282 +S'name' +p283 +(dp284 +S'editable' +p285 +I00 +sS'value' +p286 +S'Custom Non Project Entity03' +p287 +sssS'LaunchShotConnection' +p288 +(dp289 +S'name' +p290 +(dp291 +S'editable' +p292 +I00 +sS'value' +p293 +S'Launch Shot Connection' +p294 +sssS'ShotShotConnection' +p295 +(dp296 +S'name' +p297 +(dp298 +S'editable' +p299 +I00 +sS'value' +p300 +S'Shot Shot Connection' +p301 +sssS'PerformerRoutineConnection' +p302 +(dp303 +S'name' +p304 +(dp305 +S'editable' +p306 +I00 +sS'value' +p307 +S'Performer Routine Connection' +p308 +sssS'PublishedFileType' +p309 +(dp310 +S'name' +p311 +(dp312 +S'editable' +p313 +I00 +sS'value' +p314 +S'Published File Type' +p315 +sssS'Element' +p316 +(dp317 +S'name' +p318 +(dp319 +S'editable' +p320 +I00 +sS'value' +p321 +S'Element' +p322 +sssS'TankType' +p323 +(dp324 +S'name' +p325 +(dp326 +S'editable' +p327 +I00 +sS'value' +p328 +S'Tank Type' +p329 +sssS'Icon' +p330 +(dp331 +S'name' +p332 +(dp333 +S'editable' +p334 +I00 +sS'value' +p335 +S'Icon' +p336 +sssS'LocalStorage' +p337 +(dp338 +S'name' +p339 +(dp340 +S'editable' +p341 +I00 +sS'value' +p342 +S'Local Storage' +p343 +sssS'TaskTemplate' +p344 +(dp345 +S'name' +p346 +(dp347 +S'editable' +p348 +I00 +sS'value' +p349 +S'Task Template' +p350 +sssS'RevisionTicketConnection' +p351 +(dp352 +S'name' +p353 +(dp354 +S'editable' +p355 +I00 +sS'value' +p356 +S'Revision Ticket Connection' +p357 +sssS'PerformerShootDayConnection' +p358 +(dp359 +S'name' +p360 +(dp361 +S'editable' +p362 +I00 +sS'value' +p363 +S'Performer Shoot Day Connection' +p364 +sssS'PipelineConfiguration' +p365 +(dp366 +S'name' +p367 +(dp368 +S'editable' +p369 +I00 +sS'value' +p370 +S'Pipeline Configuration' +p371 +sssS'LaunchSceneConnection' +p372 +(dp373 +S'name' +p374 +(dp375 +S'editable' +p376 +I00 +sS'value' +p377 +S'Launch Scene Connection' +p378 +sssS'GroupUserConnection' +p379 +(dp380 +S'name' +p381 +(dp382 +S'editable' +p383 +I00 +sS'value' +p384 +S'Group User Connection' +p385 +sssS'AssetSequenceConnection' +p386 +(dp387 +S'name' +p388 +(dp389 +S'editable' +p390 +I00 +sS'value' +p391 +S'Asset Sequence Connection' +p392 +sssS'Page' +p393 +(dp394 +S'name' +p395 +(dp396 +S'editable' +p397 +I00 +sS'value' +p398 +S'Page' +p399 +sssS'CustomEntity02' +p400 +(dp401 +S'name' +p402 +(dp403 +S'editable' +p404 +I00 +sS'value' +p405 +S'Custom Entity02' +p406 +sssS'CustomEntity03' +p407 +(dp408 +S'name' +p409 +(dp410 +S'editable' +p411 +I00 +sS'value' +p412 +S'Custom Entity03' +p413 +sssS'FilesystemLocation' +p414 +(dp415 +S'name' +p416 +(dp417 +S'editable' +p418 +I00 +sS'value' +p419 +S'Filesystem Location' +p420 +sssS'CustomEntity01' +p421 +(dp422 +S'name' +p423 +(dp424 +S'editable' +p425 +I00 +sS'value' +p426 +S'Disk Location' +p427 +sssS'Shot' +p428 +(dp429 +S'name' +p430 +(dp431 +S'editable' +p432 +I00 +sS'value' +p433 +S'Shot' +p434 +sssS'TankPublishedFile' +p435 +(dp436 +S'name' +p437 +(dp438 +S'editable' +p439 +I00 +sS'value' +p440 +S'Tank Published File' +p441 +sssS'CustomEntity04' +p442 +(dp443 +S'name' +p444 +(dp445 +S'editable' +p446 +I00 +sS'value' +p447 +S'Custom Entity04' +p448 +sssS'Sequence' +p449 +(dp450 +S'name' +p451 +(dp452 +S'editable' +p453 +I00 +sS'value' +p454 +S'Sequence' +p455 +sssS'BannerUserConnection' +p456 +(dp457 +S'name' +p458 +(dp459 +S'editable' +p460 +I00 +sS'value' +p461 +S'Banner User Connection' +p462 +sssS'AssetAssetConnection' +p463 +(dp464 +S'name' +p465 +(dp466 +S'editable' +p467 +I00 +sS'value' +p468 +S'Asset Asset Connection' +p469 +sssS'Scene' +p470 +(dp471 +S'name' +p472 +(dp473 +S'editable' +p474 +I00 +sS'value' +p475 +S'Scene' +p476 +sssS'Project' +p477 +(dp478 +S'name' +p479 +(dp480 +S'editable' +p481 +I00 +sS'value' +p482 +S'Project' +p483 +sssS'Version' +p484 +(dp485 +S'name' +p486 +(dp487 +S'editable' +p488 +I00 +sS'value' +p489 +S'Version' +p490 +sssS'ElementShotConnection' +p491 +(dp492 +S'name' +p493 +(dp494 +S'editable' +p495 +I00 +sS'value' +p496 +S'Element Shot Connection' +p497 +sssS'HumanUser' +p498 +(dp499 +S'name' +p500 +(dp501 +S'editable' +p502 +I00 +sS'value' +p503 +S'Person' +p504 +sssS'PermissionRuleSet' +p505 +(dp506 +S'name' +p507 +(dp508 +S'editable' +p509 +I00 +sS'value' +p510 +S'Permission Rule Set' +p511 +sssS'EventLogEntry' +p512 +(dp513 +S'name' +p514 +(dp515 +S'editable' +p516 +I00 +sS'value' +p517 +S'Event Log Entry' +p518 +sssS'TankDependency' +p519 +(dp520 +S'name' +p521 +(dp522 +S'editable' +p523 +I00 +sS'value' +p524 +S'Tank Dependency' +p525 +sssS'AssetShootDayConnection' +p526 +(dp527 +S'name' +p528 +(dp529 +S'editable' +p530 +I00 +sS'value' +p531 +S'Asset Shoot Day Connection' +p532 +sssS'Asset' +p533 +(dp534 +S'name' +p535 +(dp536 +S'editable' +p537 +I00 +sS'value' +p538 +S'Asset' +p539 +sss. \ No newline at end of file diff --git a/tests/test_mockgun.py b/tests/test_mockgun.py new file mode 100644 index 000000000..617428e09 --- /dev/null +++ b/tests/test_mockgun.py @@ -0,0 +1,264 @@ +#! /opt/local/bin/python + +# ----------------------------------------------------------------------------- +# Copyright (c) 2009-2017, Shotgun Software Inc +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# - Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# - Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# - Neither the name of the Shotgun Software Inc nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# ----------------------------------------------------------------------------- + +""" +Unit tests for Mockgun. Does not require an Internet connection +and can be run on their own by typing "python test_mockgun.py". +""" + +import re +import os +import unittest +from shotgun_api3.lib.mockgun import Shotgun as Mockgun +from shotgun_api3 import ShotgunError + + +def setUpModule(): + """ + Sets the Shotgun schema for this series of unit tests. + """ + mockgun_schema_folder = os.path.join( + os.path.dirname(__file__), + "mockgun" + ) + + Mockgun.set_schema_paths( + os.path.join(mockgun_schema_folder, "schema.pickle"), + os.path.join(mockgun_schema_folder, "schema_entity.pickle") + ) + + +# FIXME: This should probably be refactored into a base class for +# all test bases +class TestBaseWithExceptionTests(unittest.TestCase): + """ + Implements a Python 2.4 compatible assertRaisesRegexp like method. This + was introduced in Python 2.7. + """ + def assertRaisesRegexp(self, exception_type, re_msg, func): + try: + func() + except exception_type, exception: + matches = re.findall(re_msg, str(exception)) + if not matches: + self.fail("Expected exception to match '%s', got '%s' instead." % ( + re_msg, str(exception) + )) + except Exception, ex: + self.fail("Expected exception of type %s, got %s" % (exception_type, type(ex))) + else: + self.fail("Expected %s was not raised." % exception_type) + + +class TestValidateFilterSyntax(TestBaseWithExceptionTests): + """ + Tests filter syntax support. + """ + + def setUp(self): + """ + Creates tests data. + """ + super(TestValidateFilterSyntax, self).setUp() + + self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") + + self._mockgun.create("Shot", {"code": "shot"}) + + def test_filter_array_or_dict(self): + # Should not throw, even though it is pretty much + # empty. + self._mockgun.find( + "Shot", + [ + { + "filter_operator": "any", + "filters": [["code", "is", "shot"]] + }, + [ + "code", "is", "shot" + ] + ] + ) + + self.assertRaisesRegexp( + ShotgunError, + "Filters can only be lists or dictionaries, not int.", + lambda: self._mockgun.find( + "Shot", + [1] + ) + ) + + +class TestFilterOperator(TestBaseWithExceptionTests): + """ + Unit tests for the filter_operator filter syntax. + """ + + def setUp(self): + """ + Creates tests data. + """ + super(TestFilterOperator, self).setUp() + + self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") + + self._prj1_link = self._mockgun.create( + "Project", + { + "name": "prj1" + } + ) + + self._prj2_link = self._mockgun.create( + "Project", + { + "name": "prj2" + } + ) + + self._shot1 = self._mockgun.create( + "Shot", + { + "code": "shot1", + "project": self._prj1_link + } + ) + + self._shot2 = self._mockgun.create( + "Shot", + { + "code": "shot2", + "project": self._prj1_link + } + ) + + self._shot3 = self._mockgun.create( + "Shot", + { + "code": "shot3", + "project": self._prj2_link + } + ) + + def test_simple_filter_operators(self): + """ + Tests a simple use of the filter_operator. + """ + shots = self._mockgun.find( + "Shot", + [{ + "filter_operator": "any", + "filters": [ + ["code", "is", "shot1"], + ["code", "is", "shot2"] + ] + }] + ) + + self.assertEqual(len(shots), 2) + + shots = self._mockgun.find( + "Shot", + [{ + "filter_operator": "all", + "filters": [ + ["code", "is", "shot1"], + ["code", "is", "shot2"] + ] + }] + ) + + self.assertEqual(len(shots), 0) + + def test_nested_filter_operators(self): + """ + Tests a the use of the filter_operator nested + inside the filter_operator. + """ + shots = self._mockgun.find( + "Shot", + [ + { + "filter_operator": "any", + "filters": [ + { + "filter_operator": "all", + "filters": [ + ["code", "is", "shot1"], + ["project", "is", self._prj1_link] + ] + }, + { + "filter_operator": "all", + "filters": [ + ["code", "is", "shot3"], + ["project", "is", self._prj2_link] + ] + } + ] + } + ] + ) + + self.assertEqual(len(shots), 2) + + def test_invalid_operator(self): + + self.assertRaisesRegexp( + ShotgunError, + "Unknown filter_operator type: bad", + lambda: self._mockgun.find( + "Shot", + [ + { + "filter_operator": "bad", + "filters": [] + } + ]) + ) + + self.assertRaisesRegexp( + ShotgunError, + "Bad filter operator, requires keys 'filter_operator' and 'filters',", + lambda: self._mockgun.find( + "Shot", + [ + { + } + ]) + ) + + +if __name__ == '__main__': + unittest.main() From 37496444a4cc4d6694f43620a238d898351d5be1 Mon Sep 17 00:00:00 2001 From: daigles Date: Tue, 14 Feb 2017 11:53:21 -0500 Subject: [PATCH 007/245] For #38721: Added support for direct upload to S3 when feature activated on the server --- shotgun_api3/shotgun.py | 231 +++++++++++++++++++++++++++++++++------- 1 file changed, 195 insertions(+), 36 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 3442e8c29..796edba10 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -582,6 +582,7 @@ def server_info(self): >>> sg.server_info {'full_version': [6, 3, 15, 0], 's3_uploads_enabled': True, + 's3_direct_uploads_enabled': True, 'version': [6, 3, 15]} :returns: dict of server information from :class:`ServerCapabilities` object @@ -2023,26 +2024,16 @@ def share_thumbnail(self, entities, thumbnail_path=None, source_entity=None, url = urlparse.urlunparse((self.config.scheme, self.config.server, "/upload/share_thumbnail", None, None, None)) - # Perform the request - try: - resp = opener.open(url, params) - result = resp.read() - # response headers are in str(resp.info()).splitlines() - except urllib2.HTTPError, e: - if e.code == 500: - raise ShotgunError("Server encountered an internal error. " - "\n%s\n(%s)\n%s\n\n" % (url, self._sanitize_auth_params(params), e)) - else: - raise ShotgunError("Unanticipated error occurred %s" % (e)) + result = self._send_form(url, params) + + if not str(result).startswith("1"): + raise ShotgunError("Unable to share thumbnail: %s" % result) else: - if not str(result).startswith("1"): - raise ShotgunError("Unable to share thumbnail: %s" % result) - else: - # clearing thumbnail returns no attachment_id - try: - attachment_id = int(str(result).split(":")[1].split("\n")[0]) - except ValueError: - attachment_id = None + # clearing thumbnail returns no attachment_id + try: + attachment_id = int(str(result).split(":")[1].split("\n")[0]) + except ValueError: + attachment_id = None return attachment_id @@ -2155,6 +2146,121 @@ def upload(self, entity_type, entity_id, path, field_name=None, display_name=Non is_thumbnail = (field_name in ["thumb_image", "filmstrip_thumb_image", "image", "filmstrip_image"]) + # Version.sg_uploaded_movie is handled as a special case and uploaded + # directly to Cloud storage + if self.server_info["s3_direct_uploads_enabled"] \ + and entity_type == "Version" and field_name == "sg_uploaded_movie": + return self._upload_to_storage(entity_type, entity_id, path, field_name, display_name, + tag_list, is_thumbnail) + else: + return self._upload_to_sg(entity_type, entity_id, path, field_name, display_name, + tag_list, is_thumbnail) + + def _upload_to_storage(self, entity_type, entity_id, path, field_name, display_name, + tag_list, is_thumbnail): + """ + Internal function to upload a file to the Cloud storage and link it to the specified entity. + + :param str entity_type: Entity type to link the upload to. + :param int entity_id: Id of the entity to link the upload to. + :param str path: Full path to an existing non-empty file on disk to upload. + :param str field_name: The internal Shotgun field name on the entity to store the file in. + This field must be a File/Link field type. + :param str display_name: The display name to use for the file. Defaults to the file name. + :param str tag_list: comma-separated string of tags to assign to the file. + :param bool is_thumbnail: indicates if the attachment is a thumbnail. + :returns: Id of the Attachment entity that was created for the image. + :rtype: int + """ + + filename = os.path.basename(path) + + # Step 1: get the upload url + + upload_info = self._get_attachment_upload_info(is_thumbnail, filename) + + # Step 2: upload the file + + fd = open(path, "rb") + try: + content_type = mimetypes.guess_type(filename)[0] + content_type = content_type or "application/octet-stream" + file_size = os.fstat(fd.fileno())[stat.ST_SIZE] + + # Perform the request + opener = urllib2.build_opener(urllib2.HTTPHandler) + + request = urllib2.Request(upload_info["upload_url"], data=fd) + request.add_header("Content-Type", content_type) + request.add_header("Content-Length", file_size) + request.get_method = lambda: "PUT" + result = opener.open(request) + except urllib2.HTTPError, e: + if e.code == 500: + raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) + else: + raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) + finally: + fd.close() + + LOG.debug("File uploaded to Cloud storage: %s", filename) + + # Step 3: create the attachment + + url = urlparse.urlunparse((self.config.scheme, self.config.server, + "/upload/api_link_file", None, None, None)) + + params = { + "entity_type" : entity_type, + "entity_id" : entity_id, + "upload_link_info": upload_info['upload_info'] + } + + params.update(self._auth_params()) + + if is_thumbnail: + if field_name == "filmstrip_thumb_image" or field_name == "filmstrip_image": + params["filmstrip"] = True + else: + if display_name is None: + display_name = filename + # we allow linking to nothing for generic reference use cases + if field_name is not None: + params["field_name"] = field_name + params["display_name"] = display_name + # None gets converted to a string and added as a tag... + if tag_list: + params["tag_list"] = tag_list + + result = self._send_form(url, params) + if not str(result).startswith("1"): + raise ShotgunError("Could not upload file successfully, but " \ + "not sure why.\nPath: %s\nUrl: %s\nError: %s" % ( + path, url, str(result))) + + LOG.debug("Attachment linked to content on Cloud storage") + + attachment_id = int(str(result).split(":")[1].split("\n")[0]) + return attachment_id + + def _upload_to_sg(self, entity_type, entity_id, path, field_name, display_name, + tag_list, is_thumbnail): + """ + Internal function to upload a file to Shotgun and link it to the specified entity. + + :param str entity_type: Entity type to link the upload to. + :param int entity_id: Id of the entity to link the upload to. + :param str path: Full path to an existing non-empty file on disk to upload. + :param str field_name: The internal Shotgun field name on the entity to store the file in. + This field must be a File/Link field type. + :param str display_name: The display name to use for the file. Defaults to the file name. + :param str tag_list: comma-separated string of tags to assign to the file. + :param bool is_thumbnail: indicates if the attachment is a thumbnail. + + :returns: Id of the Attachment entity that was created for the image. + :rtype: int + """ + params = { "entity_type" : entity_type, "entity_id" : entity_id, @@ -2184,28 +2290,56 @@ def upload(self, entity_type, entity_id, path, field_name=None, display_name=Non params["file"] = open(path, "rb") - # Create opener with extended form post support - opener = self._build_opener(FormPostHandler) + result = self._send_form(url, params) - # Perform the request - try: - result = opener.open(url, params).read() - except urllib2.HTTPError, e: - if e.code == 500: - raise ShotgunError("Server encountered an internal error. " - "\n%s\n(%s)\n%s\n\n" % (url, self._sanitize_auth_params(params), e)) - else: - raise ShotgunError("Unanticipated error occurred uploading " - "%s: %s" % (path, e)) - else: - if not str(result).startswith("1"): - raise ShotgunError("Could not upload file successfully, but "\ - "not sure why.\nPath: %s\nUrl: %s\nError: %s" % ( - path, url, str(result))) + if not str(result).startswith("1"): + raise ShotgunError("Could not upload file successfully, but "\ + "not sure why.\nPath: %s\nUrl: %s\nError: %s" % ( + path, url, str(result))) attachment_id = int(str(result).split(":")[1].split("\n")[0]) return attachment_id + def _get_attachment_upload_info(self, is_thumbnail, filename): + """ + Internal function to get the information needed to upload a file to Cloud storage. + + :param bool is_thumbnail: indicates if the attachment is a thumbnail. + :param str filename: name of the file that will be uploaded. + + :returns: dictionary containing the upload url and + upload_info (passed back to the SG server once the upload is completed). + :rtype: dict + """ + + if is_thumbnail: + upload_type = "Thumbnail" + else: + upload_type = "Attachment" + + params = { + "upload_type" : upload_type, + "filename" : filename + } + + params.update(self._auth_params()) + + upload_url = "/upload/api_get_upload_link_info" + url = urlparse.urlunparse((self.config.scheme, self.config.server, + upload_url, None, None, None)) + + upload_info = self._send_form(url, params) + if not str(upload_info).startswith("1"): + raise ShotgunError("Could not get upload_url but " \ + "not sure why.\nPath: %s\nUrl: %s\nError: %s" % ( + path, url, str(upload_info))) + + LOG.debug("Completed rpc call to %s" % (upload_url)) + return { + "upload_url" : str(upload_info).split("\n")[1], + "upload_info" : upload_info + } + def download_attachment(self, attachment=False, file_path=None, attachment_id=None): """ Download the file associated with a Shotgun Attachment. @@ -3363,6 +3497,31 @@ def _dict_to_extra_data(self, d, key_name="value"): """ return dict([(k, {key_name: v}) for (k,v) in (d or {}).iteritems()]) + def _send_form(self, url, params): + """ + Utility function to send a Form to Shotgun and process any HTTP errors that + could occur. + + :param url: endpoint where the form is sent. + :param params: form data + :returns: result from the server. + """ + opener = self._build_opener(FormPostHandler) + + # Perform the request + try: + resp = opener.open(url, params) + result = resp.read() + # response headers are in str(resp.info()).splitlines() + except urllib2.HTTPError, e: + if e.code == 500: + raise ShotgunError("Server encountered an internal error. " + "\n%s\n(%s)\n%s\n\n" % (url, self._sanitize_auth_params(params), e)) + else: + raise ShotgunError("Unanticipated error occurred %s" % (e)) + + return result + # Helpers from the previous API, left as is. # Based on http://code.activestate.com/recipes/146306/ From 747331e916ea417f1c96cc0b37c845b5d8438842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Wed, 15 Feb 2017 08:41:17 -0500 Subject: [PATCH 008/245] For #34923, implement site level bootstrap in Desktop. This branch adds supports for features in Mockgun that are required by the Shotgun Desktop and the Toolkit core. Closes https://github.com/shotgunsoftware/python-api/pull/133 --- shotgun_api3/lib/mockgun.py | 87 ++++++++++++++----- tests/test_mockgun.py | 162 ++++++++++++++++++++++++++++++++---- 2 files changed, 213 insertions(+), 36 deletions(-) diff --git a/shotgun_api3/lib/mockgun.py b/shotgun_api3/lib/mockgun.py index ae404bc79..d5e7214ae 100644 --- a/shotgun_api3/lib/mockgun.py +++ b/shotgun_api3/lib/mockgun.py @@ -539,7 +539,7 @@ def _validate_entity_fields(self, entity_type, fields): except ValueError: if field not in valid_fields and field not in ("type", "id"): raise ShotgunError("%s is not a valid field for entity %s" % (field, entity_type)) - + def _get_default_value(self, entity_type, field): field_info = self._schema[entity_type][field] if field_info["data_type"]["value"] == "multi_entity": @@ -560,6 +560,22 @@ def _get_new_row(self, entity_type): return row def _compare(self, field_type, lval, operator, rval): + """ + Compares a field using the operator and value provide by the filter. + + :param str field_type: Type of the field we are operating on. + :param lval: Value inside that field. Can be of any type: datetime, date, int, str, bool, etc. + :param str operator: Name of the operator to use. + :param rval: The value following the operator in a filter. + + :returns: The result of the operator that was applied. + :rtype: bool + """ + # If we have a list of scalar values + if isinstance(lval, list) and field_type != "multi_entity": + # Compare each one. If one matches the predicate we're good! + return any((self._compare(field_type, sub_val, operator, rval)) for sub_val in lval) + if field_type == "checkbox": if operator == "is": return lval == rval @@ -598,9 +614,9 @@ def _compare(self, field_type, lval, operator, rval): elif operator == "is_not": return lval != rval elif operator == "in": - return lval in rval - elif operator == "contains": return lval in rval + elif operator == "contains": + return rval in lval elif operator == "not_contains": return lval not in rval elif operator == "starts_with": @@ -609,8 +625,17 @@ def _compare(self, field_type, lval, operator, rval): return lval.endswith(rval) elif field_type == "entity": if operator == "is": + # If one of the two is None, ensure both are. + if lval is None or rval is None: + return lval == rval + # Both values are set, compare them. return lval["type"] == rval["type"] and lval["id"] == rval["id"] elif operator == "is_not": + if lval is None or rval is None: + return lval != rval + if rval is None: + # We already know lval is not None, so we know they are not equal. + return True return lval["type"] != rval["type"] or lval["id"] != rval["id"] elif operator == "in": return all((lval["type"] == sub_rval["type"] and lval["id"] == sub_rval["id"]) for sub_rval in rval) @@ -635,36 +660,50 @@ def _compare(self, field_type, lval, operator, rval): raise ShotgunError("The %s operator is not supported on the %s type" % (operator, field_type)) def _get_field_from_row(self, entity_type, row, field): - # split dotted form fields + # split dotted form fields try: # is it something like sg_sequence.Sequence.code ? field2, entity_type2, field3 = field.split(".", 2) - + if field2 in row: - + field_value = row[field2] - - # all deep links need to be link fields - if not isinstance(field_value, dict): + + # If we have a list of links, retrieve the subfields one by one. + if isinstance(field_value, list): + values = [] + for linked_row in field_value: + # Make sure we're actually iterating on links. + if not isinstance(linked_row, dict): + raise ShotgunError("Invalid deep query field %s.%s" % (entity_type, field)) + + # Skips entities that are not of the requested type. + if linked_row["type"] != entity_type2: + continue + + entity = self._db[linked_row["type"]][linked_row["id"]] + + sub_field_value = self._get_field_from_row(entity_type2, entity, field3) + values.append(sub_field_value) + return values + # not multi entity, must be entity. + elif not isinstance(field_value, dict): raise ShotgunError("Invalid deep query field %s.%s" % (entity_type, field)) - + # make sure that types in the query match type in the linked field if entity_type2 != field_value["type"]: raise ShotgunError("Deep query field %s.%s does not match type " "with data %s" % (entity_type, field, field_value)) - + # ok so looks like the value is an entity link # e.g. db contains: {"sg_sequence": {"type":"Sequence", "id": 123 } } linked_row = self._db[ field_value["type"] ][ field_value["id"] ] - if field3 in linked_row: - return linked_row[field3] - else: - return None + return self._get_field_from_row(entity_type2, linked_row, field3) else: # sg returns none for unknown stuff return None - + except ValueError: # this is not a deep-linked field - just something like "code" if field in row: @@ -695,17 +734,23 @@ def _row_matches_filter(self, entity_type, row, sg_filter, retired_only): else: raise ShotgunError("Unknown filter_operator type: %s" % operator) else: + lval = self._get_field_from_row(entity_type, row, field) field_type = self._get_field_type(entity_type, field) # if we're operating on an entity, we'll need to grab the name from the lval's row if field_type == "entity": - lval_row = self._db[lval["type"]][lval["id"]] - if "name" in lval_row: - lval["name"] = lval_row["name"] - elif "code" in lval_row: - lval["name"] = lval_row["code"] + # If the entity field is set, we'll retrieve the name of the entity. + if lval is not None: + link_type = lval["type"] + link_id = lval["id"] + lval_row = self._db[link_type][link_id] + if "name" in lval_row: + lval["name"] = lval_row["name"] + elif "code" in lval_row: + lval["name"] = lval_row["code"] + return self._compare(field_type, lval, operator, rval) def _rearrange_filters(self, filters): diff --git a/tests/test_mockgun.py b/tests/test_mockgun.py index 617428e09..904a0501b 100644 --- a/tests/test_mockgun.py +++ b/tests/test_mockgun.py @@ -42,19 +42,15 @@ from shotgun_api3 import ShotgunError -def setUpModule(): - """ - Sets the Shotgun schema for this series of unit tests. - """ - mockgun_schema_folder = os.path.join( - os.path.dirname(__file__), - "mockgun" - ) +mockgun_schema_folder = os.path.join( + os.path.dirname(__file__), + "mockgun" +) - Mockgun.set_schema_paths( - os.path.join(mockgun_schema_folder, "schema.pickle"), - os.path.join(mockgun_schema_folder, "schema_entity.pickle") - ) +Mockgun.set_schema_paths( + os.path.join(mockgun_schema_folder, "schema.pickle"), + os.path.join(mockgun_schema_folder, "schema_entity.pickle") +) # FIXME: This should probably be refactored into a base class for @@ -86,7 +82,7 @@ class TestValidateFilterSyntax(TestBaseWithExceptionTests): def setUp(self): """ - Creates tests data. + Creates test data. """ super(TestValidateFilterSyntax, self).setUp() @@ -95,8 +91,10 @@ def setUp(self): self._mockgun.create("Shot", {"code": "shot"}) def test_filter_array_or_dict(self): - # Should not throw, even though it is pretty much - # empty. + """ + Ensure that arrays and dictionaries are supported for filters. + """ + # This should not throw. self._mockgun.find( "Shot", [ @@ -110,6 +108,7 @@ def test_filter_array_or_dict(self): ] ) + # We can't have not dict/list values for filters however. self.assertRaisesRegexp( ShotgunError, "Filters can only be lists or dictionaries, not int.", @@ -120,6 +119,139 @@ def test_filter_array_or_dict(self): ) +class TestEntityFieldComparison(TestBaseWithExceptionTests): + """ + Checks if entity fields comparison work. + """ + + def setUp(self): + """ + Creates test data. + """ + self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") + + self._project_link = self._mockgun.create("Project", {"name": "project"}) + + # This entity will ensure that a populated link field will be comparable. + self._mockgun.create( + "PipelineConfiguration", + {"code": "with_project", "project": self._project_link} + ) + + # This entity will ensure that an unpopulated link field will be comparable. + self._mockgun.create("PipelineConfiguration", {"code": "without_project"}) + + def test_searching_for_none_entity_field(self): + """ + Ensures that comparison with None work. + """ + + items = self._mockgun.find("PipelineConfiguration", [["project", "is", None]]) + self.assertEqual(len(items), 1) + + items = self._mockgun.find("PipelineConfiguration", [["project", "is_not", None]]) + self.assertEqual(len(items), 1) + + def test_searching_for_initialized_entity_field(self): + """ + Ensures that comparison with an entity works. + """ + items = self._mockgun.find("PipelineConfiguration", [["project", "is", self._project_link]]) + self.assertEqual(len(items), 1) + + items = self._mockgun.find("PipelineConfiguration", [["project", "is_not", self._project_link]]) + self.assertEqual(len(items), 1) + + +class TestTextFieldOperators(TestBaseWithExceptionTests): + """ + Checks if text field comparison work. + """ + def setUp(self): + """ + Creates test data. + """ + self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") + self._user = self._mockgun.create("HumanUser", {"login": "user"}) + + def test_operator_contains(self): + """ + Ensures contains operator works. + """ + item = self._mockgun.find_one("HumanUser", [["login", "contains", "se"]]) + self.assertTrue(item) + + +class TestMultiEntityFieldComparison(TestBaseWithExceptionTests): + """ + Ensures multi entity field comparison work. + """ + + def setUp(self): + """ + Creates test data. + """ + + self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") + + # Create two users to assign to the pipeline configurations. + self._user1 = self._mockgun.create("HumanUser", {"login": "user1"}) + self._user2 = self._mockgun.create("HumanUser", {"login": "user2"}) + + # Create pipeline configurations that are assigned none, one or two users. + self._mockgun.create( + "PipelineConfiguration", + {"code": "with_user1", "users": [self._user1]} + ) + + self._mockgun.create( + "PipelineConfiguration", + {"code": "with_user2", "users": [self._user2]} + ) + + self._mockgun.create( + "PipelineConfiguration", + {"code": "with_both", "users": [self._user2, self._user1]} + ) + + self._mockgun.create( + "PipelineConfiguration", + {"code": "with_none", "users": []} + ) + + def test_find_by_sub_entity_field(self): + """ + Ensures that queries on linked entity fields works. + """ + items = self._mockgun.find("PipelineConfiguration", [["users.HumanUser.login", "is", "user1"]]) + self.assertEqual(len(items), 2) + + items = self._mockgun.find("PipelineConfiguration", [["users.HumanUser.login", "is", "user2"]]) + self.assertEqual(len(items), 2) + + items = self._mockgun.find("PipelineConfiguration", [["users.HumanUser.login", "contains", "ser"]]) + self.assertEqual(len(items), 3) + + # Lets get fancy a bit. + items = self._mockgun.find("PipelineConfiguration", [{ + "filter_operator": "any", + "filters": [ + ["users.HumanUser.login", "is", "user1"], + ["users.HumanUser.login", "is", "user2"] + ]}] + ) + self.assertEqual(len(items), 3) + + items = self._mockgun.find("PipelineConfiguration", [{ + "filter_operator": "all", + "filters": [ + ["users.HumanUser.login", "is", "user1"], + ["users.HumanUser.login", "is", "user2"] + ]}] + ) + self.assertEqual(len(items), 1) + + class TestFilterOperator(TestBaseWithExceptionTests): """ Unit tests for the filter_operator filter syntax. From fd17dc2710a630fcceb4fea5e4b299d65ee59308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Wed, 15 Feb 2017 08:54:20 -0500 Subject: [PATCH 009/245] Updated release notes. --- HISTORY.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/HISTORY.rst b/HISTORY.rst index 2134d2631..4aed803ac 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -9,6 +9,13 @@ v3.0.33.dev (TBD) - Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` or :meth:`upload_filmstrip_thumbnail` before calling out to the server. +- Multiple enhancements and bugfixes to Mockgun: + - Added support for filters using the `filter_operator` syntax. + - `is` and `is_not` comparison with a field set to `None` are now handled. + - Fixed contains operator on strings. + - Fixed entity link comparisons with `None`. + - Added support for dotted notation in find parameters (e.g. `users.HumanUser.login`) on both entity and multi-entity fields. + - Added unit tests for Mockgun in `test_mockgun.py`. The tests currently cover all the fixes and features mentionned above. - TBD v3.0.32 (2016 Sep 22) From 9395a0008295a5fd8bfaf879a8ac12d410c99b96 Mon Sep 17 00:00:00 2001 From: daigles Date: Wed, 15 Feb 2017 12:42:23 -0500 Subject: [PATCH 010/245] For #38721: Fixed upload regression for sites prior to V 7.0.10 --- shotgun_api3/shotgun.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 796edba10..8ed99a9c7 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2148,7 +2148,7 @@ def upload(self, entity_type, entity_id, path, field_name=None, display_name=Non # Version.sg_uploaded_movie is handled as a special case and uploaded # directly to Cloud storage - if self.server_info["s3_direct_uploads_enabled"] \ + if self.server_info.get("s3_direct_uploads_enabled", False) \ and entity_type == "Version" and field_name == "sg_uploaded_movie": return self._upload_to_storage(entity_type, entity_id, path, field_name, display_name, tag_list, is_thumbnail) From 00ce67e4216f1246f424cb4bc74f83afb5069111 Mon Sep 17 00:00:00 2001 From: Neil Grey Date: Tue, 21 Feb 2017 14:06:50 -0800 Subject: [PATCH 011/245] For #40631: Adding following method and updating unit tests (#131) --- shotgun_api3/shotgun.py | 42 +++++++++++++++++++++++++++++ tests/test_api.py | 60 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 95 insertions(+), 7 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 8ed99a9c7..405f7fa1d 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -238,6 +238,15 @@ def ensure_support_for_additional_filter_presets(self): 'label': 'additional_filter_presets parameter' }, True) + def ensure_user_following_support(self): + """ + Ensures server has support for listing items a user is following, added in v7.0.12. + """ + return self._ensure_support({ + 'version': (7, 0, 12), + 'label': 'user_following parameter' + }, True) + def __str__(self): return "ServerCapabilities: host %s, version %s, is_dev %s"\ % (self.host, self.version, self.is_dev) @@ -1611,6 +1620,39 @@ def followers(self, entity): return self._call_rpc('followers', params) + def following(self, user, project=None, entity_type=None): + """ + Return all entity instances a user is following. + + Optionally, a project and/or entity_type can be supplied to restrict returned results. + + >>> user = {"type": "HumanUser", "id": 1234} + >>> project = {"type": "Project", "id": 1234} + >>> entity_type = "Task" + >>> sg.following(user, project=project, entity_type=entity_type) + [{"type":"Task", "id":1}, + {"type":"Task", "id":2}, + {"type":"Task", "id":3}] + + :param dict user: Find what this person is following. + :param dict project: Optional filter to only return results from a specific project. + :param str entity_type: Optional filter to only return results from one entity type. + :returns: list of dictionaries, each containing entity type & id's being followed. + :rtype: list + """ + + self.server_caps.ensure_user_following_support() + + params = { + "user":user + } + if project: + params["project"] = project + if entity_type: + params["entity_type"] = entity_type + + return self._call_rpc('following', params) + def schema_entity_read(self, project_entity=None): """ Return all active entity types, their display names, and their visibility. diff --git a/tests/test_api.py b/tests/test_api.py index 78870bb60..21d9dbe23 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1467,7 +1467,13 @@ def setUp(self): super(TestFollow, self).setUp() self.sg.update( 'HumanUser', self.human_user['id'], {'projects':[self.project]}) - def test_follow(self): + # As the Follow entity isn't exposed directly, we clear out existing + # follows for the user before running our tests. + if self.sg.server_caps.version and self.sg.server_caps.version >= (7, 0, 12): + for entity in self.sg.following(self.human_user): + self.sg.unfollow(self.human_user, entity) + + def test_follow_unfollow(self): '''Test follow method''' if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): @@ -1476,12 +1482,6 @@ def test_follow(self): result = self.sg.follow(self.human_user, self.shot) assert(result['followed']) - def test_unfollow(self): - '''Test unfollow method''' - - if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 1, 22): - return - result = self.sg.unfollow(self.human_user, self.shot) assert(result['unfollowed']) @@ -1498,6 +1498,52 @@ def test_followers(self): self.assertEqual( 1, len(result) ) self.assertEqual( self.human_user['id'], result[0]['id'] ) + def test_following(self): + '''Test following method''' + + if not self.sg.server_caps.version or self.sg.server_caps.version < (7, 0, 12): + warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + return + + result = self.sg.follow(self.human_user, self.shot) + assert(result['followed']) + + result = self.sg.following(self.human_user) + self.assertEqual( 1, len(result) ) + self.assertEqual( self.shot['id'], result[0]['id'] ) + + result = self.sg.follow(self.human_user, self.task) + assert(result['followed']) + + result = self.sg.following(self.human_user) + self.assertEqual( 2, len(result) ) + result = self.sg.following(self.human_user, entity_type="Task") + self.assertEqual( 1, len(result) ) + result = self.sg.following(self.human_user, entity_type="Shot") + self.assertEqual( 1, len(result) ) + + shot_project_id = self.sg.find_one("Shot", + [["id","is",self.shot["id"]]], + ["project.Project.id"])["project.Project.id"] + task_project_id = self.sg.find_one("Task", + [["id","is",self.task["id"]]], + ["project.Project.id"])["project.Project.id"] + project_count = 2 if shot_project_id == task_project_id else 1 + result = self.sg.following(self.human_user, + project={"type":"Project", "id":shot_project_id}) + self.assertEqual( project_count, len(result) ) + result = self.sg.following(self.human_user, + project={"type":"Project", "id":task_project_id}) + self.assertEqual( project_count, len(result) ) + result = self.sg.following(self.human_user, + project={"type":"Project", "id":shot_project_id}, + entity_type="Shot") + self.assertEqual( 1, len(result) ) + result = self.sg.following(self.human_user, + project={"type":"Project", "id":task_project_id}, + entity_type="Task") + self.assertEqual( 1, len(result) ) + class TestErrors(base.TestBase): def test_bad_auth(self): '''test_bad_auth invalid script name or api key raises fault''' From 0a4cf45b91ef42becbe62262bfb1f6068a36e166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Wed, 22 Feb 2017 09:53:31 -0500 Subject: [PATCH 012/245] For #34923, desktop site bootstrap - Introduces a schema cache which speeds up Mockgun-based unit tests tremendously. - shotgun_api.lib.mockgun is now a folder and not just a file. Closes https://github.com/shotgunsoftware/python-api/pull/135 --- HISTORY.rst | 2 + shotgun_api3/lib/mockgun/__init__.py | 35 ++++++ shotgun_api3/lib/mockgun/errors.py | 42 ++++++++ shotgun_api3/lib/{ => mockgun}/mockgun.py | 65 ++---------- shotgun_api3/lib/mockgun/schema.py | 124 ++++++++++++++++++++++ tests/test_mockgun.py | 18 ++++ 6 files changed, 227 insertions(+), 59 deletions(-) create mode 100644 shotgun_api3/lib/mockgun/__init__.py create mode 100644 shotgun_api3/lib/mockgun/errors.py rename shotgun_api3/lib/{ => mockgun}/mockgun.py (94%) create mode 100644 shotgun_api3/lib/mockgun/schema.py diff --git a/HISTORY.rst b/HISTORY.rst index 4aed803ac..7cfda35c6 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -16,6 +16,8 @@ v3.0.33.dev (TBD) - Fixed entity link comparisons with `None`. - Added support for dotted notation in find parameters (e.g. `users.HumanUser.login`) on both entity and multi-entity fields. - Added unit tests for Mockgun in `test_mockgun.py`. The tests currently cover all the fixes and features mentionned above. + - Schemas are written using pickle's highest protocol as of Python 2.4's release, which speeds up the loading from disk. + - The current schema is cached in memory so it can be reused without having to do back to disk. - TBD v3.0.32 (2016 Sep 22) diff --git a/shotgun_api3/lib/mockgun/__init__.py b/shotgun_api3/lib/mockgun/__init__.py new file mode 100644 index 000000000..6a83e99d7 --- /dev/null +++ b/shotgun_api3/lib/mockgun/__init__.py @@ -0,0 +1,35 @@ +""" + ----------------------------------------------------------------------------- + Copyright (c) 2009-2017, Shotgun Software Inc + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + - Neither the name of the Shotgun Software Inc nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- +""" + +from .schema import generate_schema # noqa +from .mockgun import Shotgun # noqa +from .errors import MockgunError # noqa \ No newline at end of file diff --git a/shotgun_api3/lib/mockgun/errors.py b/shotgun_api3/lib/mockgun/errors.py new file mode 100644 index 000000000..481f194a4 --- /dev/null +++ b/shotgun_api3/lib/mockgun/errors.py @@ -0,0 +1,42 @@ +""" + ----------------------------------------------------------------------------- + Copyright (c) 2009-2017, Shotgun Software Inc + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + - Neither the name of the Shotgun Software Inc nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- +""" + + +# ---------------------------------------------------------------------------- +# Errors +class MockgunError(Exception): + """ + Base for all Mockgun related API Errors. + These are errors that relate to mockgun specifically, for example + relating to mockups setup and initialization. For operational errors, + mockgun raises ShotgunErrors just like the Shotgun API. + """ diff --git a/shotgun_api3/lib/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py similarity index 94% rename from shotgun_api3/lib/mockgun.py rename to shotgun_api3/lib/mockgun/mockgun.py index d5e7214ae..7b4a64a77 100644 --- a/shotgun_api3/lib/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -114,55 +114,18 @@ """ -import os, datetime -import cPickle as pickle +import datetime -from .. import sg_timezone, ShotgunError -from ..shotgun import _Config +from ... import sg_timezone, ShotgunError +from ...shotgun import _Config +from .errors import MockgunError +from .schema import SchemaFactory # ---------------------------------------------------------------------------- # Version __version__ = "0.0.1" -# ---------------------------------------------------------------------------- -# Errors - -class MockgunError(Exception): - """ - Base for all Mockgun related API Errors. - These are errors that relate to mockgun specifically, for example - relating to mockups setup and initialization. For operational errors, - mockgun raises ShotgunErrors just like the Shotgun API. - """ - pass -# ---------------------------------------------------------------------------- -# Utility methods - -def generate_schema(shotgun, schema_file_path, schema_entity_file_path): - """ - Helper method for mockgun. - Generates the schema files needed by the mocker by connecting to a real shotgun - and downloading the schema information for that site. Once the generated schema - files are being passed to mockgun, it will mimic the site's schema structure. - - :param sg_url: Shotgun site url - :param sg_script: Script name to connect with - :param sg_key: Script key to connect with - :param schema_file_path: Path where to write the main schema file to - :param schema_entity_file_path: Path where to write the entity schema file to - """ - - schema = shotgun.schema_read() - fh = open(schema_file_path, "w") - pickle.dump(schema, fh) - fh.close() - - schema_entity = shotgun.schema_entity_read() - fh = open(schema_entity_file_path, "w") - pickle.dump(schema_entity, fh) - fh.close() - # ---------------------------------------------------------------------------- # API @@ -237,23 +200,7 @@ def __init__(self, "Before creating a Mockgun instance, please call Mockgun.set_schema_paths() " "in order to specify which Shotgun schema Mockgun should operate against.") - if not os.path.exists(schema_path): - raise MockgunError("Cannot locate Mockgun schema file '%s'!" % schema_path) - - if not os.path.exists(schema_entity_path): - raise MockgunError("Cannot locate Mockgun schema file '%s'!" % schema_entity_path) - - fh = open(schema_path, "r") - try: - self._schema = pickle.load(fh) - finally: - fh.close() - - fh = open(schema_entity_path, "r") - try: - self._schema_entity = pickle.load(fh) - finally: - fh.close() + self._schema, self._schema_entity = SchemaFactory.get_schemas(schema_path, schema_entity_path) # initialize the "database" self._db = dict((entity, {}) for entity in self._schema) diff --git a/shotgun_api3/lib/mockgun/schema.py b/shotgun_api3/lib/mockgun/schema.py new file mode 100644 index 000000000..6b3657456 --- /dev/null +++ b/shotgun_api3/lib/mockgun/schema.py @@ -0,0 +1,124 @@ +""" + ----------------------------------------------------------------------------- + Copyright (c) 2009-2017, Shotgun Software Inc + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + - Neither the name of the Shotgun Software Inc nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- +""" + +import cPickle as pickle +import os +import copy + +from .errors import MockgunError + + +class SchemaFactory(object): + """ + Allows to instantiate a pickled schema. + """ + + _schema_entity_cache = None + _schema_entity_cache_path = None + _schema_cache = None + _schema_cache_path = None + + @classmethod + def get_schemas(cls, schema_path, schema_entity_path): + """ + Retrieves the schemas from disk. + + :param str schema_path: Path to the schema. + :param str schema_entity_path: Path to the entities schema. + + :returns: Pair of dictionaries holding the schema and entities schema. + :rtype: tuple + """ + if not os.path.exists(schema_path): + raise MockgunError("Cannot locate Mockgun schema file '%s'!" % schema_path) + + if not os.path.exists(schema_entity_path): + raise MockgunError("Cannot locate Mockgun schema file '%s'!" % schema_entity_path) + + # Poor man's attempt at a cache. All of our use cases deal with a single pair of files + # for the duration of the unit tests, so keep a cache for both inputs. We don't want + # to deal with ever growing caches anyway. Just having this simple cache has shown + # speed increases of up to 500% for Toolkit unit tests alone. + + if schema_path != cls._schema_cache_path: + cls._schema_cache = cls._read_file(schema_path) + cls._schema_cache_path = schema_path + + if schema_entity_path != cls._schema_entity_cache_path: + cls._schema_entity_cache = cls._read_file(schema_entity_path) + cls._schema_entity_cache_path = schema_entity_path + + return cls._schema_cache, cls._schema_entity_cache + + @classmethod + def _read_file(cls, path): + fh = open(path, "r") + try: + return pickle.load(fh) + finally: + fh.close() + + +# Highest protocol that Python 2.4 supports, which is the earliest version of Python we support. +# Actually, this is the same version that Python 2.7 supports at the moment! +_HIGHEST_24_PICKLE_PROTOCOL = 2 + + +# ---------------------------------------------------------------------------- +# Utility methods +def generate_schema(shotgun, schema_file_path, schema_entity_file_path): + """ + Helper method for mockgun. + Generates the schema files needed by the mocker by connecting to a real shotgun + and downloading the schema information for that site. Once the generated schema + files are being passed to mockgun, it will mimic the site's schema structure. + + :param sg_url: Shotgun site url + :param sg_script: Script name to connect with + :param sg_key: Script key to connect with + :param schema_file_path: Path where to write the main schema file to + :param schema_entity_file_path: Path where to write the entity schema file to + """ + + schema = shotgun.schema_read() + fh = open(schema_file_path, "w") + try: + pickle.dump(schema, fh, protocol=_HIGHEST_24_PICKLE_PROTOCOL) + finally: + fh.close() + + schema_entity = shotgun.schema_entity_read() + fh = open(schema_entity_file_path, "w") + try: + pickle.dump(schema_entity, fh, protocol=_HIGHEST_24_PICKLE_PROTOCOL) + finally: + fh.close() diff --git a/tests/test_mockgun.py b/tests/test_mockgun.py index 904a0501b..30002a599 100644 --- a/tests/test_mockgun.py +++ b/tests/test_mockgun.py @@ -75,6 +75,24 @@ def assertRaisesRegexp(self, exception_type, re_msg, func): self.fail("Expected %s was not raised." % exception_type) +class TestMockgunModuleInterface(unittest.TestCase): + """ + mockgun.py was turned into a module. Ensure we haven't broken the interface. + """ + + def test_interface_intact(self): + """ + Ensure everything that was public before still is. + """ + + from shotgun_api3.lib import mockgun + # Try to access everything. If something is missing, it will raise an + # error. + mockgun.MockgunError + mockgun.generate_schema + mockgun.Shotgun + + class TestValidateFilterSyntax(TestBaseWithExceptionTests): """ Tests filter syntax support. From 12d9fc5bc7786e15e577437c32f8809d54845b8d Mon Sep 17 00:00:00 2001 From: Stephane Daigle Date: Thu, 2 Mar 2017 10:31:55 -0500 Subject: [PATCH 013/245] For #40884: Extend support for direct uploads to S3 - Added multi-part uploads to support uploads of files > 5 GB --- shotgun_api3/shotgun.py | 185 +++++++++++++++++++++++++++++++++------- 1 file changed, 153 insertions(+), 32 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 405f7fa1d..c05d3c508 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2059,10 +2059,6 @@ def share_thumbnail(self, entities, thumbnail_path=None, source_entity=None, "filmstrip_thumbnail" : filmstrip_thumbnail, } - params.update(self._auth_params()) - - # Create opener with extended form post support - opener = self._build_opener(FormPostHandler) url = urlparse.urlunparse((self.config.scheme, self.config.server, "/upload/share_thumbnail", None, None, None)) @@ -2219,33 +2215,16 @@ def _upload_to_storage(self, entity_type, entity_id, path, field_name, display_n # Step 1: get the upload url - upload_info = self._get_attachment_upload_info(is_thumbnail, filename) + multipart_upload = (os.path.getsize(path) > 20000000) - # Step 2: upload the file + upload_info = self._get_attachment_upload_info(is_thumbnail, filename, multipart_upload) - fd = open(path, "rb") - try: - content_type = mimetypes.guess_type(filename)[0] - content_type = content_type or "application/octet-stream" - file_size = os.fstat(fd.fileno())[stat.ST_SIZE] - - # Perform the request - opener = urllib2.build_opener(urllib2.HTTPHandler) - - request = urllib2.Request(upload_info["upload_url"], data=fd) - request.add_header("Content-Type", content_type) - request.add_header("Content-Length", file_size) - request.get_method = lambda: "PUT" - result = opener.open(request) - except urllib2.HTTPError, e: - if e.code == 500: - raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) - else: - raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) - finally: - fd.close() + # Step 2: upload the file - LOG.debug("File uploaded to Cloud storage: %s", filename) + if multipart_upload: + self._multipart_upload_file_to_storage(path, upload_info) + else: + self._upload_file_to_storage(path, upload_info["upload_url"]) # Step 3: create the attachment @@ -2342,12 +2321,13 @@ def _upload_to_sg(self, entity_type, entity_id, path, field_name, display_name, attachment_id = int(str(result).split(":")[1].split("\n")[0]) return attachment_id - def _get_attachment_upload_info(self, is_thumbnail, filename): + def _get_attachment_upload_info(self, is_thumbnail, filename, multipart_upload): """ Internal function to get the information needed to upload a file to Cloud storage. :param bool is_thumbnail: indicates if the attachment is a thumbnail. :param str filename: name of the file that will be uploaded. + :param bool multipart_upload: Indicates if we want multi-part upload information back. :returns: dictionary containing the upload url and upload_info (passed back to the SG server once the upload is completed). @@ -2364,7 +2344,8 @@ def _get_attachment_upload_info(self, is_thumbnail, filename): "filename" : filename } - params.update(self._auth_params()) + if multipart_upload: + params['multipart_upload'] = True upload_url = "/upload/api_get_upload_link_info" url = urlparse.urlunparse((self.config.scheme, self.config.server, @@ -2374,11 +2355,17 @@ def _get_attachment_upload_info(self, is_thumbnail, filename): if not str(upload_info).startswith("1"): raise ShotgunError("Could not get upload_url but " \ "not sure why.\nPath: %s\nUrl: %s\nError: %s" % ( - path, url, str(upload_info))) + filename, url, str(upload_info))) LOG.debug("Completed rpc call to %s" % (upload_url)) + + upload_info_parts = str(upload_info).split("\n") + return { - "upload_url" : str(upload_info).split("\n")[1], + "upload_url" : upload_info_parts[1], + "timestamp" : upload_info_parts[2], + "upload_type" : upload_info_parts[3], + "upload_id": upload_info_parts[4], "upload_info" : upload_info } @@ -3539,6 +3526,137 @@ def _dict_to_extra_data(self, d, key_name="value"): """ return dict([(k, {key_name: v}) for (k,v) in (d or {}).iteritems()]) + def _upload_file_to_storage(self, path, storage_url): + """ + Internal function to upload an entire file to the Cloud storage. + + :param str path: Full path to an existing non-empty file on disk to upload. + :param str storage_url: Target URL for the uploaded file. + """ + filename = os.path.basename(path) + + fd = open(path, "rb") + try: + content_type = mimetypes.guess_type(filename)[0] + content_type = content_type or "application/octet-stream" + file_size = os.fstat(fd.fileno())[stat.ST_SIZE] + self._upload_data_to_storage(fd, content_type, file_size, storage_url ) + finally: + fd.close() + + LOG.debug("File uploaded to Cloud storage: %s", filename) + + def _multipart_upload_file_to_storage(self, path, upload_info): + """ + Internal function to upload a file to the Cloud storage in multiple parts. + + :param str path: Full path to an existing non-empty file on disk to upload. + :param dict upload_info: Contains details received from the server, about the upload. + """ + + fd = open(path, "rb") + try: + content_type = mimetypes.guess_type(path)[0] + content_type = content_type or "application/octet-stream" + file_size = os.fstat(fd.fileno())[stat.ST_SIZE] + filename = os.path.basename(path) + + etags = [] + part_number = 1 + bytes_read = 0 + chunk_size = 20000000 + while bytes_read < file_size: + data = fd.read(chunk_size) + bytes_read += len(data) + part_url = self._get_upload_part_link(upload_info, filename, part_number) + etags.append(self._upload_data_to_storage(data, content_type, len(data), part_url )) + part_number += 1 + + self._complete_multipart_upload(upload_info, filename, etags) + finally: + fd.close() + + LOG.debug("File uploaded in multiple parts to Cloud storage: %s", path) + + def _get_upload_part_link(self, upload_info, filename, part_number): + """ + Internal function to get the url to upload the next part of a file to the + Cloud storage, in a multi-part upload process. + + :param dict upload_info: Contains details received from the server, about the upload. + :param str filename: Name of the file for which we want the link. + :param int part_number: Part number for the link. + :returns: upload url. + :rtype: str + """ + params = { + "upload_type": upload_info["upload_type"], + "filename": filename, + "timestamp": upload_info["timestamp"], + "upload_id": upload_info["upload_id"], + "part_number": part_number + } + + url = urlparse.urlunparse((self.config.scheme, self.config.server, + "/upload/api_get_upload_link_for_part", None, None, None)) + result = self._send_form(url, params) + + if not str(result).startswith("1"): + raise ShotgunError("Unable get upload part link: %s" % result) + + return str(result).split("\n")[1] + + def _upload_data_to_storage(self, data, content_type, size, storage_url): + """ + Internal function to upload data to Cloud storage. + + :param stream data: Contains details received from the server, about the upload. + :param str content_type: Content type of the data stream. + :param int size: Number of bytes in the data stream. + :param str storage_url: Target URL for the uploaded file. + :returns: upload url. + :rtype: str + """ + try: + opener = urllib2.build_opener(urllib2.HTTPHandler) + + request = urllib2.Request(storage_url, data=data) + request.add_header("Content-Type", content_type) + request.add_header("Content-Length", size) + request.get_method = lambda: "PUT" + result = opener.open(request) + etag = result.info().getheader("ETag") + except urllib2.HTTPError, e: + if e.code == 500: + raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) + else: + raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) + return etag + + def _complete_multipart_upload(self, upload_info, filename, etags): + """ + Internal function to complete a multi-part upload to the Cloud storage. + + :param dict upload_info: Contains details received from the server, about the upload. + :param str filename: Name of the file for which we want to complete the upload. + :param tupple etags: Contains the etag of each uploaded file part. + """ + + params = { + "upload_type": upload_info["upload_type"], + "filename": filename, + "timestamp": upload_info["timestamp"], + "upload_id": upload_info["upload_id"], + "etags": ",".join(etags) + } + + url = urlparse.urlunparse((self.config.scheme, self.config.server, + "/upload/api_complete_multipart_upload", None, None, None)) + result = self._send_form(url, params) + + if not str(result).startswith("1"): + raise ShotgunError("Unable get upload part link: %s" % result) + def _send_form(self, url, params): """ Utility function to send a Form to Shotgun and process any HTTP errors that @@ -3548,6 +3666,9 @@ def _send_form(self, url, params): :param params: form data :returns: result from the server. """ + + params.update(self._auth_params()) + opener = self._build_opener(FormPostHandler) # Perform the request From 0cda1e9510649e318575521b85c4ea0f9918f0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Fri, 3 Mar 2017 08:29:50 -0500 Subject: [PATCH 014/245] [minor] Fixes an issue with Mockgun on Windows when reading schema files --- shotgun_api3/lib/mockgun/schema.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shotgun_api3/lib/mockgun/schema.py b/shotgun_api3/lib/mockgun/schema.py index 6b3657456..edd4b889a 100644 --- a/shotgun_api3/lib/mockgun/schema.py +++ b/shotgun_api3/lib/mockgun/schema.py @@ -81,7 +81,7 @@ def get_schemas(cls, schema_path, schema_entity_path): @classmethod def _read_file(cls, path): - fh = open(path, "r") + fh = open(path, "rb") try: return pickle.load(fh) finally: @@ -110,14 +110,14 @@ def generate_schema(shotgun, schema_file_path, schema_entity_file_path): """ schema = shotgun.schema_read() - fh = open(schema_file_path, "w") + fh = open(schema_file_path, "wb") try: pickle.dump(schema, fh, protocol=_HIGHEST_24_PICKLE_PROTOCOL) finally: fh.close() schema_entity = shotgun.schema_entity_read() - fh = open(schema_entity_file_path, "w") + fh = open(schema_entity_file_path, "wb") try: pickle.dump(schema_entity, fh, protocol=_HIGHEST_24_PICKLE_PROTOCOL) finally: From a0e4ab5ab9a2ced25fa7de1ec09a15efda66a321 Mon Sep 17 00:00:00 2001 From: Stephane Daigle Date: Fri, 3 Mar 2017 09:47:16 -0500 Subject: [PATCH 015/245] CR fixes --- shotgun_api3/shotgun.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index c05d3c508..e0f73249f 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -362,6 +362,8 @@ class Shotgun(object): "^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])"\ "(\D?([01]\d|2[0-3])\D?([0-5]\d)\D?([0-5]\d)?\D?(\d{3})?)?$") + _MULTIPART_UPLOAD_CHUNK_SIZE = 20000000 + def __init__(self, base_url, script_name=None, @@ -2215,13 +2217,14 @@ def _upload_to_storage(self, entity_type, entity_id, path, field_name, display_n # Step 1: get the upload url - multipart_upload = (os.path.getsize(path) > 20000000) + is_multipart_upload = (os.path.getsize(path) > _MULTIPART_UPLOAD_CHUNK_SIZE) - upload_info = self._get_attachment_upload_info(is_thumbnail, filename, multipart_upload) + upload_info = self._get_attachment_upload_info(is_thumbnail, filename, is_multipart_upload) # Step 2: upload the file - - if multipart_upload: + # We upload large files in multiple parts because it is more robust + # (and required when using S3 storage) + if is_multipart_upload: self._multipart_upload_file_to_storage(path, upload_info) else: self._upload_file_to_storage(path, upload_info["upload_url"]) @@ -2321,16 +2324,16 @@ def _upload_to_sg(self, entity_type, entity_id, path, field_name, display_name, attachment_id = int(str(result).split(":")[1].split("\n")[0]) return attachment_id - def _get_attachment_upload_info(self, is_thumbnail, filename, multipart_upload): + def _get_attachment_upload_info(self, is_thumbnail, filename, is_multipart_upload): """ Internal function to get the information needed to upload a file to Cloud storage. :param bool is_thumbnail: indicates if the attachment is a thumbnail. :param str filename: name of the file that will be uploaded. - :param bool multipart_upload: Indicates if we want multi-part upload information back. + :param bool is_multipart_upload: Indicates if we want multi-part upload information back. - :returns: dictionary containing the upload url and - upload_info (passed back to the SG server once the upload is completed). + :returns: dictionary containing upload details from the server. + These details are used throughout the upload process. :rtype: dict """ @@ -2344,8 +2347,7 @@ def _get_attachment_upload_info(self, is_thumbnail, filename, multipart_upload): "filename" : filename } - if multipart_upload: - params['multipart_upload'] = True + params["multipart_upload"] = is_multipart_upload upload_url = "/upload/api_get_upload_link_info" url = urlparse.urlunparse((self.config.scheme, self.config.server, @@ -3564,7 +3566,7 @@ def _multipart_upload_file_to_storage(self, path, upload_info): etags = [] part_number = 1 bytes_read = 0 - chunk_size = 20000000 + chunk_size = _MULTIPART_UPLOAD_CHUNK_SIZE while bytes_read < file_size: data = fd.read(chunk_size) bytes_read += len(data) @@ -3601,9 +3603,13 @@ def _get_upload_part_link(self, upload_info, filename, part_number): "/upload/api_get_upload_link_for_part", None, None, None)) result = self._send_form(url, params) + # Response is of the form: 1\n (for success) or 0\n (for failure). + # In case of success, we know we the second line of the response contains the + # requested URL. if not str(result).startswith("1"): raise ShotgunError("Unable get upload part link: %s" % result) + LOG.debug("Got next upload link from server for multipart upload.") return str(result).split("\n")[1] def _upload_data_to_storage(self, data, content_type, size, storage_url): @@ -3631,6 +3637,8 @@ def _upload_data_to_storage(self, data, content_type, size, storage_url): raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) else: raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) + + LOG.debug("Part upload completed successfully.") return etag def _complete_multipart_upload(self, upload_info, filename, etags): @@ -3654,6 +3662,7 @@ def _complete_multipart_upload(self, upload_info, filename, etags): "/upload/api_complete_multipart_upload", None, None, None)) result = self._send_form(url, params) + # Response is of the form: 1\n or 0\n to indicate success or failure of the call. if not str(result).startswith("1"): raise ShotgunError("Unable get upload part link: %s" % result) From e66544d6779e3e27ae7054cd44327066eeaa1ada Mon Sep 17 00:00:00 2001 From: Stephane Daigle Date: Fri, 3 Mar 2017 10:47:49 -0500 Subject: [PATCH 016/245] =?UTF-8?q?Adding=20missing=20=E2=80=98self?= =?UTF-8?q?=E2=80=99=20:\?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shotgun_api3/shotgun.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index e0f73249f..629304811 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2217,7 +2217,7 @@ def _upload_to_storage(self, entity_type, entity_id, path, field_name, display_n # Step 1: get the upload url - is_multipart_upload = (os.path.getsize(path) > _MULTIPART_UPLOAD_CHUNK_SIZE) + is_multipart_upload = (os.path.getsize(path) > self._MULTIPART_UPLOAD_CHUNK_SIZE) upload_info = self._get_attachment_upload_info(is_thumbnail, filename, is_multipart_upload) @@ -3566,7 +3566,7 @@ def _multipart_upload_file_to_storage(self, path, upload_info): etags = [] part_number = 1 bytes_read = 0 - chunk_size = _MULTIPART_UPLOAD_CHUNK_SIZE + chunk_size = self._MULTIPART_UPLOAD_CHUNK_SIZE while bytes_read < file_size: data = fd.read(chunk_size) bytes_read += len(data) From 56a328e9ec89d3e363cef0c7054fd41b12d5eacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Jacques?= Date: Wed, 8 Mar 2017 10:10:22 -0500 Subject: [PATCH 017/245] Revert "For #40884: Extend support for direct uploads to S3" --- shotgun_api3/shotgun.py | 200 +++++++--------------------------------- 1 file changed, 35 insertions(+), 165 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 629304811..405f7fa1d 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -362,8 +362,6 @@ class Shotgun(object): "^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])"\ "(\D?([01]\d|2[0-3])\D?([0-5]\d)\D?([0-5]\d)?\D?(\d{3})?)?$") - _MULTIPART_UPLOAD_CHUNK_SIZE = 20000000 - def __init__(self, base_url, script_name=None, @@ -2061,6 +2059,10 @@ def share_thumbnail(self, entities, thumbnail_path=None, source_entity=None, "filmstrip_thumbnail" : filmstrip_thumbnail, } + params.update(self._auth_params()) + + # Create opener with extended form post support + opener = self._build_opener(FormPostHandler) url = urlparse.urlunparse((self.config.scheme, self.config.server, "/upload/share_thumbnail", None, None, None)) @@ -2217,17 +2219,33 @@ def _upload_to_storage(self, entity_type, entity_id, path, field_name, display_n # Step 1: get the upload url - is_multipart_upload = (os.path.getsize(path) > self._MULTIPART_UPLOAD_CHUNK_SIZE) - - upload_info = self._get_attachment_upload_info(is_thumbnail, filename, is_multipart_upload) + upload_info = self._get_attachment_upload_info(is_thumbnail, filename) # Step 2: upload the file - # We upload large files in multiple parts because it is more robust - # (and required when using S3 storage) - if is_multipart_upload: - self._multipart_upload_file_to_storage(path, upload_info) - else: - self._upload_file_to_storage(path, upload_info["upload_url"]) + + fd = open(path, "rb") + try: + content_type = mimetypes.guess_type(filename)[0] + content_type = content_type or "application/octet-stream" + file_size = os.fstat(fd.fileno())[stat.ST_SIZE] + + # Perform the request + opener = urllib2.build_opener(urllib2.HTTPHandler) + + request = urllib2.Request(upload_info["upload_url"], data=fd) + request.add_header("Content-Type", content_type) + request.add_header("Content-Length", file_size) + request.get_method = lambda: "PUT" + result = opener.open(request) + except urllib2.HTTPError, e: + if e.code == 500: + raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) + else: + raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) + finally: + fd.close() + + LOG.debug("File uploaded to Cloud storage: %s", filename) # Step 3: create the attachment @@ -2324,16 +2342,15 @@ def _upload_to_sg(self, entity_type, entity_id, path, field_name, display_name, attachment_id = int(str(result).split(":")[1].split("\n")[0]) return attachment_id - def _get_attachment_upload_info(self, is_thumbnail, filename, is_multipart_upload): + def _get_attachment_upload_info(self, is_thumbnail, filename): """ Internal function to get the information needed to upload a file to Cloud storage. :param bool is_thumbnail: indicates if the attachment is a thumbnail. :param str filename: name of the file that will be uploaded. - :param bool is_multipart_upload: Indicates if we want multi-part upload information back. - :returns: dictionary containing upload details from the server. - These details are used throughout the upload process. + :returns: dictionary containing the upload url and + upload_info (passed back to the SG server once the upload is completed). :rtype: dict """ @@ -2347,7 +2364,7 @@ def _get_attachment_upload_info(self, is_thumbnail, filename, is_multipart_uploa "filename" : filename } - params["multipart_upload"] = is_multipart_upload + params.update(self._auth_params()) upload_url = "/upload/api_get_upload_link_info" url = urlparse.urlunparse((self.config.scheme, self.config.server, @@ -2357,17 +2374,11 @@ def _get_attachment_upload_info(self, is_thumbnail, filename, is_multipart_uploa if not str(upload_info).startswith("1"): raise ShotgunError("Could not get upload_url but " \ "not sure why.\nPath: %s\nUrl: %s\nError: %s" % ( - filename, url, str(upload_info))) + path, url, str(upload_info))) LOG.debug("Completed rpc call to %s" % (upload_url)) - - upload_info_parts = str(upload_info).split("\n") - return { - "upload_url" : upload_info_parts[1], - "timestamp" : upload_info_parts[2], - "upload_type" : upload_info_parts[3], - "upload_id": upload_info_parts[4], + "upload_url" : str(upload_info).split("\n")[1], "upload_info" : upload_info } @@ -3528,144 +3539,6 @@ def _dict_to_extra_data(self, d, key_name="value"): """ return dict([(k, {key_name: v}) for (k,v) in (d or {}).iteritems()]) - def _upload_file_to_storage(self, path, storage_url): - """ - Internal function to upload an entire file to the Cloud storage. - - :param str path: Full path to an existing non-empty file on disk to upload. - :param str storage_url: Target URL for the uploaded file. - """ - filename = os.path.basename(path) - - fd = open(path, "rb") - try: - content_type = mimetypes.guess_type(filename)[0] - content_type = content_type or "application/octet-stream" - file_size = os.fstat(fd.fileno())[stat.ST_SIZE] - self._upload_data_to_storage(fd, content_type, file_size, storage_url ) - finally: - fd.close() - - LOG.debug("File uploaded to Cloud storage: %s", filename) - - def _multipart_upload_file_to_storage(self, path, upload_info): - """ - Internal function to upload a file to the Cloud storage in multiple parts. - - :param str path: Full path to an existing non-empty file on disk to upload. - :param dict upload_info: Contains details received from the server, about the upload. - """ - - fd = open(path, "rb") - try: - content_type = mimetypes.guess_type(path)[0] - content_type = content_type or "application/octet-stream" - file_size = os.fstat(fd.fileno())[stat.ST_SIZE] - filename = os.path.basename(path) - - etags = [] - part_number = 1 - bytes_read = 0 - chunk_size = self._MULTIPART_UPLOAD_CHUNK_SIZE - while bytes_read < file_size: - data = fd.read(chunk_size) - bytes_read += len(data) - part_url = self._get_upload_part_link(upload_info, filename, part_number) - etags.append(self._upload_data_to_storage(data, content_type, len(data), part_url )) - part_number += 1 - - self._complete_multipart_upload(upload_info, filename, etags) - finally: - fd.close() - - LOG.debug("File uploaded in multiple parts to Cloud storage: %s", path) - - def _get_upload_part_link(self, upload_info, filename, part_number): - """ - Internal function to get the url to upload the next part of a file to the - Cloud storage, in a multi-part upload process. - - :param dict upload_info: Contains details received from the server, about the upload. - :param str filename: Name of the file for which we want the link. - :param int part_number: Part number for the link. - :returns: upload url. - :rtype: str - """ - params = { - "upload_type": upload_info["upload_type"], - "filename": filename, - "timestamp": upload_info["timestamp"], - "upload_id": upload_info["upload_id"], - "part_number": part_number - } - - url = urlparse.urlunparse((self.config.scheme, self.config.server, - "/upload/api_get_upload_link_for_part", None, None, None)) - result = self._send_form(url, params) - - # Response is of the form: 1\n (for success) or 0\n (for failure). - # In case of success, we know we the second line of the response contains the - # requested URL. - if not str(result).startswith("1"): - raise ShotgunError("Unable get upload part link: %s" % result) - - LOG.debug("Got next upload link from server for multipart upload.") - return str(result).split("\n")[1] - - def _upload_data_to_storage(self, data, content_type, size, storage_url): - """ - Internal function to upload data to Cloud storage. - - :param stream data: Contains details received from the server, about the upload. - :param str content_type: Content type of the data stream. - :param int size: Number of bytes in the data stream. - :param str storage_url: Target URL for the uploaded file. - :returns: upload url. - :rtype: str - """ - try: - opener = urllib2.build_opener(urllib2.HTTPHandler) - - request = urllib2.Request(storage_url, data=data) - request.add_header("Content-Type", content_type) - request.add_header("Content-Length", size) - request.get_method = lambda: "PUT" - result = opener.open(request) - etag = result.info().getheader("ETag") - except urllib2.HTTPError, e: - if e.code == 500: - raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) - else: - raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) - - LOG.debug("Part upload completed successfully.") - return etag - - def _complete_multipart_upload(self, upload_info, filename, etags): - """ - Internal function to complete a multi-part upload to the Cloud storage. - - :param dict upload_info: Contains details received from the server, about the upload. - :param str filename: Name of the file for which we want to complete the upload. - :param tupple etags: Contains the etag of each uploaded file part. - """ - - params = { - "upload_type": upload_info["upload_type"], - "filename": filename, - "timestamp": upload_info["timestamp"], - "upload_id": upload_info["upload_id"], - "etags": ",".join(etags) - } - - url = urlparse.urlunparse((self.config.scheme, self.config.server, - "/upload/api_complete_multipart_upload", None, None, None)) - result = self._send_form(url, params) - - # Response is of the form: 1\n or 0\n to indicate success or failure of the call. - if not str(result).startswith("1"): - raise ShotgunError("Unable get upload part link: %s" % result) - def _send_form(self, url, params): """ Utility function to send a Form to Shotgun and process any HTTP errors that @@ -3675,9 +3548,6 @@ def _send_form(self, url, params): :param params: form data :returns: result from the server. """ - - params.update(self._auth_params()) - opener = self._build_opener(FormPostHandler) # Perform the request From 2b4230910e1ef521e1cabdd1dcecb1cd761edc09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Jacques?= Date: Fri, 17 Mar 2017 08:24:39 -0400 Subject: [PATCH 018/245] For #40884: Extend support for direct uploads to S3 Direct upload to S3 now supports multipart uploads. This means we now support uploads of files > 5GB. --- shotgun_api3/shotgun.py | 200 +++++++++++++++++++++++++++++++++------- 1 file changed, 165 insertions(+), 35 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 405f7fa1d..629304811 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -362,6 +362,8 @@ class Shotgun(object): "^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])"\ "(\D?([01]\d|2[0-3])\D?([0-5]\d)\D?([0-5]\d)?\D?(\d{3})?)?$") + _MULTIPART_UPLOAD_CHUNK_SIZE = 20000000 + def __init__(self, base_url, script_name=None, @@ -2059,10 +2061,6 @@ def share_thumbnail(self, entities, thumbnail_path=None, source_entity=None, "filmstrip_thumbnail" : filmstrip_thumbnail, } - params.update(self._auth_params()) - - # Create opener with extended form post support - opener = self._build_opener(FormPostHandler) url = urlparse.urlunparse((self.config.scheme, self.config.server, "/upload/share_thumbnail", None, None, None)) @@ -2219,33 +2217,17 @@ def _upload_to_storage(self, entity_type, entity_id, path, field_name, display_n # Step 1: get the upload url - upload_info = self._get_attachment_upload_info(is_thumbnail, filename) - - # Step 2: upload the file - - fd = open(path, "rb") - try: - content_type = mimetypes.guess_type(filename)[0] - content_type = content_type or "application/octet-stream" - file_size = os.fstat(fd.fileno())[stat.ST_SIZE] - - # Perform the request - opener = urllib2.build_opener(urllib2.HTTPHandler) + is_multipart_upload = (os.path.getsize(path) > self._MULTIPART_UPLOAD_CHUNK_SIZE) - request = urllib2.Request(upload_info["upload_url"], data=fd) - request.add_header("Content-Type", content_type) - request.add_header("Content-Length", file_size) - request.get_method = lambda: "PUT" - result = opener.open(request) - except urllib2.HTTPError, e: - if e.code == 500: - raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) - else: - raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) - finally: - fd.close() + upload_info = self._get_attachment_upload_info(is_thumbnail, filename, is_multipart_upload) - LOG.debug("File uploaded to Cloud storage: %s", filename) + # Step 2: upload the file + # We upload large files in multiple parts because it is more robust + # (and required when using S3 storage) + if is_multipart_upload: + self._multipart_upload_file_to_storage(path, upload_info) + else: + self._upload_file_to_storage(path, upload_info["upload_url"]) # Step 3: create the attachment @@ -2342,15 +2324,16 @@ def _upload_to_sg(self, entity_type, entity_id, path, field_name, display_name, attachment_id = int(str(result).split(":")[1].split("\n")[0]) return attachment_id - def _get_attachment_upload_info(self, is_thumbnail, filename): + def _get_attachment_upload_info(self, is_thumbnail, filename, is_multipart_upload): """ Internal function to get the information needed to upload a file to Cloud storage. :param bool is_thumbnail: indicates if the attachment is a thumbnail. :param str filename: name of the file that will be uploaded. + :param bool is_multipart_upload: Indicates if we want multi-part upload information back. - :returns: dictionary containing the upload url and - upload_info (passed back to the SG server once the upload is completed). + :returns: dictionary containing upload details from the server. + These details are used throughout the upload process. :rtype: dict """ @@ -2364,7 +2347,7 @@ def _get_attachment_upload_info(self, is_thumbnail, filename): "filename" : filename } - params.update(self._auth_params()) + params["multipart_upload"] = is_multipart_upload upload_url = "/upload/api_get_upload_link_info" url = urlparse.urlunparse((self.config.scheme, self.config.server, @@ -2374,11 +2357,17 @@ def _get_attachment_upload_info(self, is_thumbnail, filename): if not str(upload_info).startswith("1"): raise ShotgunError("Could not get upload_url but " \ "not sure why.\nPath: %s\nUrl: %s\nError: %s" % ( - path, url, str(upload_info))) + filename, url, str(upload_info))) LOG.debug("Completed rpc call to %s" % (upload_url)) + + upload_info_parts = str(upload_info).split("\n") + return { - "upload_url" : str(upload_info).split("\n")[1], + "upload_url" : upload_info_parts[1], + "timestamp" : upload_info_parts[2], + "upload_type" : upload_info_parts[3], + "upload_id": upload_info_parts[4], "upload_info" : upload_info } @@ -3539,6 +3528,144 @@ def _dict_to_extra_data(self, d, key_name="value"): """ return dict([(k, {key_name: v}) for (k,v) in (d or {}).iteritems()]) + def _upload_file_to_storage(self, path, storage_url): + """ + Internal function to upload an entire file to the Cloud storage. + + :param str path: Full path to an existing non-empty file on disk to upload. + :param str storage_url: Target URL for the uploaded file. + """ + filename = os.path.basename(path) + + fd = open(path, "rb") + try: + content_type = mimetypes.guess_type(filename)[0] + content_type = content_type or "application/octet-stream" + file_size = os.fstat(fd.fileno())[stat.ST_SIZE] + self._upload_data_to_storage(fd, content_type, file_size, storage_url ) + finally: + fd.close() + + LOG.debug("File uploaded to Cloud storage: %s", filename) + + def _multipart_upload_file_to_storage(self, path, upload_info): + """ + Internal function to upload a file to the Cloud storage in multiple parts. + + :param str path: Full path to an existing non-empty file on disk to upload. + :param dict upload_info: Contains details received from the server, about the upload. + """ + + fd = open(path, "rb") + try: + content_type = mimetypes.guess_type(path)[0] + content_type = content_type or "application/octet-stream" + file_size = os.fstat(fd.fileno())[stat.ST_SIZE] + filename = os.path.basename(path) + + etags = [] + part_number = 1 + bytes_read = 0 + chunk_size = self._MULTIPART_UPLOAD_CHUNK_SIZE + while bytes_read < file_size: + data = fd.read(chunk_size) + bytes_read += len(data) + part_url = self._get_upload_part_link(upload_info, filename, part_number) + etags.append(self._upload_data_to_storage(data, content_type, len(data), part_url )) + part_number += 1 + + self._complete_multipart_upload(upload_info, filename, etags) + finally: + fd.close() + + LOG.debug("File uploaded in multiple parts to Cloud storage: %s", path) + + def _get_upload_part_link(self, upload_info, filename, part_number): + """ + Internal function to get the url to upload the next part of a file to the + Cloud storage, in a multi-part upload process. + + :param dict upload_info: Contains details received from the server, about the upload. + :param str filename: Name of the file for which we want the link. + :param int part_number: Part number for the link. + :returns: upload url. + :rtype: str + """ + params = { + "upload_type": upload_info["upload_type"], + "filename": filename, + "timestamp": upload_info["timestamp"], + "upload_id": upload_info["upload_id"], + "part_number": part_number + } + + url = urlparse.urlunparse((self.config.scheme, self.config.server, + "/upload/api_get_upload_link_for_part", None, None, None)) + result = self._send_form(url, params) + + # Response is of the form: 1\n (for success) or 0\n (for failure). + # In case of success, we know we the second line of the response contains the + # requested URL. + if not str(result).startswith("1"): + raise ShotgunError("Unable get upload part link: %s" % result) + + LOG.debug("Got next upload link from server for multipart upload.") + return str(result).split("\n")[1] + + def _upload_data_to_storage(self, data, content_type, size, storage_url): + """ + Internal function to upload data to Cloud storage. + + :param stream data: Contains details received from the server, about the upload. + :param str content_type: Content type of the data stream. + :param int size: Number of bytes in the data stream. + :param str storage_url: Target URL for the uploaded file. + :returns: upload url. + :rtype: str + """ + try: + opener = urllib2.build_opener(urllib2.HTTPHandler) + + request = urllib2.Request(storage_url, data=data) + request.add_header("Content-Type", content_type) + request.add_header("Content-Length", size) + request.get_method = lambda: "PUT" + result = opener.open(request) + etag = result.info().getheader("ETag") + except urllib2.HTTPError, e: + if e.code == 500: + raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) + else: + raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) + + LOG.debug("Part upload completed successfully.") + return etag + + def _complete_multipart_upload(self, upload_info, filename, etags): + """ + Internal function to complete a multi-part upload to the Cloud storage. + + :param dict upload_info: Contains details received from the server, about the upload. + :param str filename: Name of the file for which we want to complete the upload. + :param tupple etags: Contains the etag of each uploaded file part. + """ + + params = { + "upload_type": upload_info["upload_type"], + "filename": filename, + "timestamp": upload_info["timestamp"], + "upload_id": upload_info["upload_id"], + "etags": ",".join(etags) + } + + url = urlparse.urlunparse((self.config.scheme, self.config.server, + "/upload/api_complete_multipart_upload", None, None, None)) + result = self._send_form(url, params) + + # Response is of the form: 1\n or 0\n to indicate success or failure of the call. + if not str(result).startswith("1"): + raise ShotgunError("Unable get upload part link: %s" % result) + def _send_form(self, url, params): """ Utility function to send a Form to Shotgun and process any HTTP errors that @@ -3548,6 +3675,9 @@ def _send_form(self, url, params): :param params: form data :returns: result from the server. """ + + params.update(self._auth_params()) + opener = self._build_opener(FormPostHandler) # Perform the request From f2afa75ea0f75796c76f16c6045f2ffe98b65832 Mon Sep 17 00:00:00 2001 From: daigles Date: Fri, 17 Mar 2017 08:29:04 -0400 Subject: [PATCH 019/245] For #40885: Fixed error message --- shotgun_api3/shotgun.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 629304811..dbb6afad6 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -3634,9 +3634,9 @@ def _upload_data_to_storage(self, data, content_type, size, storage_url): etag = result.info().getheader("ETag") except urllib2.HTTPError, e: if e.code == 500: - raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (url, e)) + raise ShotgunError("Server encountered an internal error.\n%s\n%s\n\n" % (storage_url, e)) else: - raise ShotgunError("Unanticipated error occurred uploading %s: %s" % (path, e)) + raise ShotgunError("Unanticipated error occurred uploading to %s: %s" % (storage_url, e)) LOG.debug("Part upload completed successfully.") return etag From 69133490b9f01bf29b5bafca2969810dcd8b97e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Deverly?= Date: Mon, 20 Mar 2017 14:16:21 +0100 Subject: [PATCH 020/245] For #41470, fix skipped tests (#143) Ensured a tuple is used for LiveTestBase.sg_version so comparisons against tuples like (7,0,0) work. --- tests/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/base.py b/tests/base.py index 899f642a5..6f86b79d6 100644 --- a/tests/base.py +++ b/tests/base.py @@ -192,7 +192,7 @@ class LiveTestBase(TestBase): '''Test base for tests relying on connection to server.''' def setUp(self, auth_mode='ApiUser'): super(LiveTestBase, self).setUp(auth_mode) - self.sg_version = self.sg.info()['version'][:3] + self.sg_version = tuple(self.sg.info()['version'][:3]) self._setup_db(self.config) if self.sg.server_caps.version and \ self.sg.server_caps.version >= (3, 3, 0) and \ From 2a8b7ce8b93e7e79583499857fd575a7c1fe62b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Fri, 24 Mar 2017 13:04:21 -0400 Subject: [PATCH 021/245] [Mockgun] Fixes is/is_not comparison with None on multi entity fields. --- HISTORY.rst | 2 +- shotgun_api3/lib/mockgun/mockgun.py | 4 ++++ tests/test_mockgun.py | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/HISTORY.rst b/HISTORY.rst index 7cfda35c6..77a114ce0 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -11,7 +11,7 @@ v3.0.33.dev (TBD) or :meth:`upload_filmstrip_thumbnail` before calling out to the server. - Multiple enhancements and bugfixes to Mockgun: - Added support for filters using the `filter_operator` syntax. - - `is` and `is_not` comparison with a field set to `None` are now handled. + - `is` and `is_not` comparisons with an entity or multi-entity field set to `None` are now handled. - Fixed contains operator on strings. - Fixed entity link comparisons with `None`. - Added support for dotted notation in find parameters (e.g. `users.HumanUser.login`) on both entity and multi-entity fields. diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index 7b4a64a77..e0ab26d78 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -600,8 +600,12 @@ def _compare(self, field_type, lval, operator, rval): return lval["name"].endswith(rval) elif field_type == "multi_entity": if operator == "is": + if rval is None: + return len(lval) == 0 return rval["id"] in (sub_lval["id"] for sub_lval in lval) elif operator == "is_not": + if rval is None: + return len(lval) != 0 return rval["id"] not in (sub_lval["id"] for sub_lval in lval) raise ShotgunError("The %s operator is not supported on the %s type" % (operator, field_type)) diff --git a/tests/test_mockgun.py b/tests/test_mockgun.py index 30002a599..5a5d34117 100644 --- a/tests/test_mockgun.py +++ b/tests/test_mockgun.py @@ -269,6 +269,19 @@ def test_find_by_sub_entity_field(self): ) self.assertEqual(len(items), 1) + def test_find_with_none(self): + """ + Ensures comparison with multi-entity fields and None works. + """ + items = self._mockgun.find("PipelineConfiguration", [["users", "is", None]], ["users"]) + self.assertEqual(len(items), 1) + self.assertEqual(items[0]["users"], []) + + items = self._mockgun.find("PipelineConfiguration", [["users", "is_not", None]], ["users"]) + self.assertEqual(len(items), 3) + for item in items: + self.assertTrue(len(item["users"]) > 0) + class TestFilterOperator(TestBaseWithExceptionTests): """ From 5d71ecd3419ee769ab11ce11c647f3f9c560c9bd Mon Sep 17 00:00:00 2001 From: daigles Date: Sun, 16 Apr 2017 09:26:34 -0400 Subject: [PATCH 022/245] #41856 Added function to support new nav_search RPC (#146) Added nav_search_string() and nav_search_entity() methods as experimental, internal methods for querying SG hierarchy. --- HISTORY.rst | 3 ++- shotgun_api3/shotgun.py | 45 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 77a114ce0..4b6c6909f 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -18,6 +18,7 @@ v3.0.33.dev (TBD) - Added unit tests for Mockgun in `test_mockgun.py`. The tests currently cover all the fixes and features mentionned above. - Schemas are written using pickle's highest protocol as of Python 2.4's release, which speeds up the loading from disk. - The current schema is cached in memory so it can be reused without having to do back to disk. +- Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying SG hierarchy. - TBD v3.0.32 (2016 Sep 22) @@ -330,4 +331,4 @@ v3.0b3 (2009 June 24) - added ``__version__`` string. - removed ``RECORDS_PER_PAGE`` global (can just set ``records_per_page`` on the Shotgun object after initializing it). -- removed ``api_ver`` from the constructor, as this class is only designed to work with API v3. \ No newline at end of file +- removed ``api_ver`` from the constructor, as this class is only designed to work with API v3. diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index dbb6afad6..0d8797495 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2887,14 +2887,51 @@ def nav_expand(self, path, seed_entity_field=None, entity_fields=None): """ return self._call_rpc( - 'nav_expand', + "nav_expand", { - 'path':path, - 'seed_entity_field': seed_entity_field, - 'entity_fields': entity_fields + "path":path, + "seed_entity_field": seed_entity_field, + "entity_fields": entity_fields } ) + def nav_search_string(self, root_path, search_string): + """ + Search function adapted to work with the navigation hierarchy. + + .. warning:: + + This is an experimental method that is not officially part of the + python-api. Usage of this method is discouraged. This method's name, + arguments, and argument types may change at any point. + """ + return self._call_rpc( + "nav_search", + { + "root_path":root_path, + "search_criteria": { "search_string": search_string } + } + ) + + def nav_search_entity(self, root_path, entity): + """ + Search function adapted to work with the navigation hierarchy. + + .. warning:: + + This is an experimental method that is not officially part of the + python-api. Usage of this method is discouraged. This method's name, + arguments, and argument types may change at any point. + + """ + return self._call_rpc( + "nav_search", + { + "root_path": root_path, + "search_criteria": {"entity": entity } + } + ) + def get_session_token(self): """ Get the session token associated with the current session. From 73554b51f795bd5a89f824e0ae69f7c470f0cf90 Mon Sep 17 00:00:00 2001 From: Renaud Lessard Larouche Date: Thu, 4 May 2017 15:21:57 -0400 Subject: [PATCH 023/245] fix nested multi-entities query (#138) Fixes for Mockgun. - Enhancements to multi-entity queries. - You can now order or rows that are now part of the predicate. - `created_at` is now set during tests. Thanks to @renaudll for all these changes. --- shotgun_api3/lib/mockgun/mockgun.py | 59 +++++++----- tests/test_mockgun.py | 142 ++++++++++++++++++++++++++-- 2 files changed, 173 insertions(+), 28 deletions(-) diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index e0ab26d78..e511d5234 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -242,16 +242,31 @@ def schema_field_read(self, entity_type, field_name=None): else: return dict((k, v) for k, v in self._schema[entity_type].items() if k == field_name) - def find(self, entity_type, filters, fields=None, order=None, filter_operator=None, limit=0, retired_only=False, page=0): - - self.finds += 1 self._validate_entity_type(entity_type) # do not validate custom fields - this makes it hard to mock up a field quickly #self._validate_entity_fields(entity_type, fields) + # Configure fields + if fields is None: + requested_fields = set(["type", "id"]) + else: + requested_fields = set(fields) | set(["type", "id"]) + + # Include fields from the order argument in the searched fields + order_fields = set() + if order: + for o in order: + order_fields.add(o['field_name']) + + # Merge the requested fields and the order fields. + # We need all those to property order the results but still return only requested fields. + all_fields = set() + all_fields.update(requested_fields) + all_fields.update(order_fields) + # FIXME: This should be refactored so that we can use the complex filer # style in nested filter operations. if isinstance(filters, dict): @@ -274,7 +289,7 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No resolved_filters.append([ f["path"], f["relation"], f["values"][0] ]) else: - # traditiona style sg filters + # traditional style sg filters resolved_filters = filters results = [ @@ -285,7 +300,10 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No ) ] - # handle the ordering of the recordset + # Extract fields from row + val = [dict((field, self._get_field_from_row(entity_type, row, field)) for field in all_fields) for row in results] + + # Handle the ordering of the result after we requested additional fields from results. if order: # order: [{"field_name": "code", "direction": "asc"}, ... ] for order_entry in order: @@ -300,23 +318,20 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No else: raise ValueError("Unknown ordering direction") - results = sorted(results, key=lambda k: k[order_field], reverse=desc_order) + val = sorted(val, key=lambda k: k[order_field], reverse=desc_order) - if fields is None: - fields = set(["type", "id"]) - else: - fields = set(fields) | set(["type", "id"]) - - # get the values requested - val = [dict((field, self._get_field_from_row(entity_type, row, field)) for field in fields) for row in results] + # Remove any fields that was not explicitely requested. + fields_to_remove = all_fields - requested_fields + for v in val: + for field in fields_to_remove: + v.pop(field) return val - - + def find_one(self, entity_type, filters, fields=None, order=None, filter_operator=None, retired_only=False): results = self.find(entity_type, filters, fields=fields, order=order, filter_operator=filter_operator, retired_only=retired_only) return results[0] if results else None - + def batch(self, requests): results = [] for request in requests: @@ -361,9 +376,12 @@ def create(self, entity_type, data, return_fields=None): row = self._get_new_row(entity_type) - self._update_row(entity_type, row, data) + self._update_row(entity_type, row, data) row["id"] = next_id + if "created_at" not in row: + row["created_at"] = datetime.datetime.now() + self._db[entity_type][next_id] = row if return_fields is None: @@ -637,15 +655,12 @@ def _get_field_from_row(self, entity_type, row, field): sub_field_value = self._get_field_from_row(entity_type2, entity, field3) values.append(sub_field_value) return values + elif field_value is None: + return None # not multi entity, must be entity. elif not isinstance(field_value, dict): raise ShotgunError("Invalid deep query field %s.%s" % (entity_type, field)) - # make sure that types in the query match type in the linked field - if entity_type2 != field_value["type"]: - raise ShotgunError("Deep query field %s.%s does not match type " - "with data %s" % (entity_type, field, field_value)) - # ok so looks like the value is an entity link # e.g. db contains: {"sg_sequence": {"type":"Sequence", "id": 123 } } linked_row = self._db[ field_value["type"] ][ field_value["id"] ] diff --git a/tests/test_mockgun.py b/tests/test_mockgun.py index 5a5d34117..feacd0f5e 100644 --- a/tests/test_mockgun.py +++ b/tests/test_mockgun.py @@ -216,23 +216,33 @@ def setUp(self): self._user1 = self._mockgun.create("HumanUser", {"login": "user1"}) self._user2 = self._mockgun.create("HumanUser", {"login": "user2"}) + # Create a project for nested sub entity field + self._project1 = self._mockgun.create("Project", {"name": "project1", "users": [self._user1]}) + self._project2 = self._mockgun.create("Project", {"name": "project2", "users": [self._user2]}) + + self._sequence1 = self._mockgun.create("Sequence", {"code":"01", "project":self._project1}) + self._shot1 = self._mockgun.create("Shot", {"code":"01_0010", "project":self._project1, "sg_sequence": self._sequence1}) + + self._task_seq = self._mockgun.create("Task", {"entity": self._sequence1}) + self._task_shot = self._mockgun.create("Task", {"entity": self._shot1}) + # Create pipeline configurations that are assigned none, one or two users. - self._mockgun.create( + self._pipeline_config_1 = self._mockgun.create( "PipelineConfiguration", - {"code": "with_user1", "users": [self._user1]} + {"code": "with_user1", "users": [self._user1], "project": self._project1} ) - self._mockgun.create( + self._pipeline_config_2 = self._mockgun.create( "PipelineConfiguration", - {"code": "with_user2", "users": [self._user2]} + {"code": "with_user2", "users": [self._user2], "project": self._project2} ) - self._mockgun.create( + self._pipeline_config_3 = self._mockgun.create( "PipelineConfiguration", {"code": "with_both", "users": [self._user2, self._user1]} ) - self._mockgun.create( + self._pipeline_config_4 = self._mockgun.create( "PipelineConfiguration", {"code": "with_none", "users": []} ) @@ -268,6 +278,126 @@ def test_find_by_sub_entity_field(self): ]}] ) self.assertEqual(len(items), 1) + + # Try with multi entities + item = self._mockgun.find_one("Task", [ + ['entity.Shot.code', 'is', self._shot1['code']] + ]) + self.assertNotEqual(None, item) + self.assertEqual(self._task_shot["id"], item["id"]) + + item = self._mockgun.find_one("Task", [ + ['entity.Sequence.code', 'is', self._sequence1['code']] + ]) + self.assertNotEqual(None, item) + self.assertEqual(self._task_seq["id"], item["id"]) + + def test_find_by_sub_entity_field_nested(self): + """ + Ensure that queries on nested linked entity fields work. + """ + items = self._mockgun.find("PipelineConfiguration", [ + ["project.Project.users.HumanUser.login", "is", "user1"] + ]) + self.assertEqual(len(items), 1) + self.assertEqual(self._pipeline_config_1['id'], items[0]['id']) + + items = self._mockgun.find("PipelineConfiguration", [ + ["project.Project.users.HumanUser.login", "is", "user2"] + ]) + self.assertEqual(len(items), 1) + self.assertEqual(self._pipeline_config_2['id'], items[0]['id']) + + + +class TestFindFields(TestBaseWithExceptionTests): + """ + Ensure that using the 'field' argument in the find method work. + """ + + def setUp(self): + """Creates test data.""" + self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") + + # Create two users to assign to the pipeline configurations. + self._user1 = self._mockgun.create("HumanUser", {"login": "user1", "firstname": "firstname1"}) + + # Create a project for nested sub entity field + self._project1 = self._mockgun.create("Project", {"name": "project1", "users": [self._user1]}) + + # Create pipeline configurations that are assigned none, one or two users. + self._mockgun.create( + "PipelineConfiguration", + {"code": "with_user1", "users": [self._user1], "project": self._project1} + ) + + def test_field(self): + item = self._mockgun.find_one("HumanUser", [ + ["login", "is", "user1"] + ], ["firstname"]) + self.assertIn("firstname",item) + self.assertEqual("firstname1", item["firstname"]) + + def test_find_field_multi_entity(self): + item = self._mockgun.find_one("PipelineConfiguration", [ + ["project.Project.users.HumanUser.login", "is", "user1"] + ], ["project.Project.name"]) + self.assertIn("project.Project.name", item) + self.assertEqual("project1", item["project.Project.name"]) + + +class TestFindOrder(TestBaseWithExceptionTests): + """ + Ensure that using the 'order' argument in the find method work. + """ + def setUp(self): + self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") + + # Create two users to assign to the pipeline configurations. + self._user1 = self._mockgun.create("HumanUser", {"login": "user1", "firstname": "firstname1", "email": "user1@foobar.com"}) + self._user2 = self._mockgun.create("HumanUser", {"login": "user2", "firstname": "firstname2", "email": "user2@foobar.com"}) + + # Create a project for nested sub entity field + self._project1 = self._mockgun.create("Project", {"name": "project1", "users": [self._user1]}) + self._project2 = self._mockgun.create("Project", {"name": "project2", "users": [self._user2]}) + + # Create two PipelineConfiguration entities so we can test multi-entity sorting. + self._pipeline_configutation_1 = self._mockgun.create("PipelineConfiguration", { + "code": "PipelineConfiguration1", "users": [self._user2], "project": self._project1}) + self._pipeline_configutation_2 = self._mockgun.create("PipelineConfiguration", { + "code": "PipelineConfiguration2", "users": [self._user1], "project": self._project2}) + + def test_find_order(self): + # Test ascending order + item = self._mockgun.find_one("HumanUser", [], order=[{'field_name': 'login', 'direction': 'asc'}]) + self.assertEqual(self._user1['id'], item['id']) + + # Test descending order + item = self._mockgun.find_one("HumanUser", [], order=[{'field_name': 'login', 'direction': 'desc'}]) + self.assertEqual(self._user2['id'], item['id']) + + def test_find_order_linked_entity_field(self): + """Ensure we are able to sort data using a linked entity field.""" + # Test ascending order + item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'project.Project.name', 'direction': 'asc'}]) + self.assertEqual(self._pipeline_configutation_1['id'], item['id']) + + # Test descending order + item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'project.Project.name', 'direction': 'desc'}]) + self.assertEqual(self._pipeline_configutation_2['id'], item['id']) + + def test_find_order_fields_leak(self): + """Ensure that additional fields passed through the order argument but NOT via the field argument are not added to the resulting fields.""" + item = self._mockgun.find_one("HumanUser", [], fields=['email'], order=[{'field_name': 'login', 'direction': 'asc'}]) + self.assertEqual(set(item.keys()), set(['id', 'type', 'email'])) # note: we don't verify the order yet + + def test_find_order_date_created(self): + """Ensure we are able to sort entities by their creation date.""" + item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'created_at', 'direction': 'asc'}]) + self.assertEqual(self._pipeline_configutation_1['id'], item['id']) + + item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'created_at', 'direction': 'desc'}]) + self.assertEqual(self._pipeline_configutation_2['id'], item['id']) def test_find_with_none(self): """ From 3187e01fa7176407a2a5129b7261e18d22918645 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Thu, 4 May 2017 15:25:17 -0400 Subject: [PATCH 024/245] Revert "fix nested multi-entities query (#138)" This reverts commit 73554b51f795bd5a89f824e0ae69f7c470f0cf90. --- shotgun_api3/lib/mockgun/mockgun.py | 59 +++++------- tests/test_mockgun.py | 142 ++-------------------------- 2 files changed, 28 insertions(+), 173 deletions(-) diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index e511d5234..e0ab26d78 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -242,31 +242,16 @@ def schema_field_read(self, entity_type, field_name=None): else: return dict((k, v) for k, v in self._schema[entity_type].items() if k == field_name) + def find(self, entity_type, filters, fields=None, order=None, filter_operator=None, limit=0, retired_only=False, page=0): + + self.finds += 1 self._validate_entity_type(entity_type) # do not validate custom fields - this makes it hard to mock up a field quickly #self._validate_entity_fields(entity_type, fields) - # Configure fields - if fields is None: - requested_fields = set(["type", "id"]) - else: - requested_fields = set(fields) | set(["type", "id"]) - - # Include fields from the order argument in the searched fields - order_fields = set() - if order: - for o in order: - order_fields.add(o['field_name']) - - # Merge the requested fields and the order fields. - # We need all those to property order the results but still return only requested fields. - all_fields = set() - all_fields.update(requested_fields) - all_fields.update(order_fields) - # FIXME: This should be refactored so that we can use the complex filer # style in nested filter operations. if isinstance(filters, dict): @@ -289,7 +274,7 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No resolved_filters.append([ f["path"], f["relation"], f["values"][0] ]) else: - # traditional style sg filters + # traditiona style sg filters resolved_filters = filters results = [ @@ -300,10 +285,7 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No ) ] - # Extract fields from row - val = [dict((field, self._get_field_from_row(entity_type, row, field)) for field in all_fields) for row in results] - - # Handle the ordering of the result after we requested additional fields from results. + # handle the ordering of the recordset if order: # order: [{"field_name": "code", "direction": "asc"}, ... ] for order_entry in order: @@ -318,20 +300,23 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No else: raise ValueError("Unknown ordering direction") - val = sorted(val, key=lambda k: k[order_field], reverse=desc_order) + results = sorted(results, key=lambda k: k[order_field], reverse=desc_order) - # Remove any fields that was not explicitely requested. - fields_to_remove = all_fields - requested_fields - for v in val: - for field in fields_to_remove: - v.pop(field) + if fields is None: + fields = set(["type", "id"]) + else: + fields = set(fields) | set(["type", "id"]) - return val + # get the values requested + val = [dict((field, self._get_field_from_row(entity_type, row, field)) for field in fields) for row in results] + return val + + def find_one(self, entity_type, filters, fields=None, order=None, filter_operator=None, retired_only=False): results = self.find(entity_type, filters, fields=fields, order=order, filter_operator=filter_operator, retired_only=retired_only) return results[0] if results else None - + def batch(self, requests): results = [] for request in requests: @@ -376,12 +361,9 @@ def create(self, entity_type, data, return_fields=None): row = self._get_new_row(entity_type) - self._update_row(entity_type, row, data) + self._update_row(entity_type, row, data) row["id"] = next_id - if "created_at" not in row: - row["created_at"] = datetime.datetime.now() - self._db[entity_type][next_id] = row if return_fields is None: @@ -655,12 +637,15 @@ def _get_field_from_row(self, entity_type, row, field): sub_field_value = self._get_field_from_row(entity_type2, entity, field3) values.append(sub_field_value) return values - elif field_value is None: - return None # not multi entity, must be entity. elif not isinstance(field_value, dict): raise ShotgunError("Invalid deep query field %s.%s" % (entity_type, field)) + # make sure that types in the query match type in the linked field + if entity_type2 != field_value["type"]: + raise ShotgunError("Deep query field %s.%s does not match type " + "with data %s" % (entity_type, field, field_value)) + # ok so looks like the value is an entity link # e.g. db contains: {"sg_sequence": {"type":"Sequence", "id": 123 } } linked_row = self._db[ field_value["type"] ][ field_value["id"] ] diff --git a/tests/test_mockgun.py b/tests/test_mockgun.py index feacd0f5e..5a5d34117 100644 --- a/tests/test_mockgun.py +++ b/tests/test_mockgun.py @@ -216,33 +216,23 @@ def setUp(self): self._user1 = self._mockgun.create("HumanUser", {"login": "user1"}) self._user2 = self._mockgun.create("HumanUser", {"login": "user2"}) - # Create a project for nested sub entity field - self._project1 = self._mockgun.create("Project", {"name": "project1", "users": [self._user1]}) - self._project2 = self._mockgun.create("Project", {"name": "project2", "users": [self._user2]}) - - self._sequence1 = self._mockgun.create("Sequence", {"code":"01", "project":self._project1}) - self._shot1 = self._mockgun.create("Shot", {"code":"01_0010", "project":self._project1, "sg_sequence": self._sequence1}) - - self._task_seq = self._mockgun.create("Task", {"entity": self._sequence1}) - self._task_shot = self._mockgun.create("Task", {"entity": self._shot1}) - # Create pipeline configurations that are assigned none, one or two users. - self._pipeline_config_1 = self._mockgun.create( + self._mockgun.create( "PipelineConfiguration", - {"code": "with_user1", "users": [self._user1], "project": self._project1} + {"code": "with_user1", "users": [self._user1]} ) - self._pipeline_config_2 = self._mockgun.create( + self._mockgun.create( "PipelineConfiguration", - {"code": "with_user2", "users": [self._user2], "project": self._project2} + {"code": "with_user2", "users": [self._user2]} ) - self._pipeline_config_3 = self._mockgun.create( + self._mockgun.create( "PipelineConfiguration", {"code": "with_both", "users": [self._user2, self._user1]} ) - self._pipeline_config_4 = self._mockgun.create( + self._mockgun.create( "PipelineConfiguration", {"code": "with_none", "users": []} ) @@ -278,126 +268,6 @@ def test_find_by_sub_entity_field(self): ]}] ) self.assertEqual(len(items), 1) - - # Try with multi entities - item = self._mockgun.find_one("Task", [ - ['entity.Shot.code', 'is', self._shot1['code']] - ]) - self.assertNotEqual(None, item) - self.assertEqual(self._task_shot["id"], item["id"]) - - item = self._mockgun.find_one("Task", [ - ['entity.Sequence.code', 'is', self._sequence1['code']] - ]) - self.assertNotEqual(None, item) - self.assertEqual(self._task_seq["id"], item["id"]) - - def test_find_by_sub_entity_field_nested(self): - """ - Ensure that queries on nested linked entity fields work. - """ - items = self._mockgun.find("PipelineConfiguration", [ - ["project.Project.users.HumanUser.login", "is", "user1"] - ]) - self.assertEqual(len(items), 1) - self.assertEqual(self._pipeline_config_1['id'], items[0]['id']) - - items = self._mockgun.find("PipelineConfiguration", [ - ["project.Project.users.HumanUser.login", "is", "user2"] - ]) - self.assertEqual(len(items), 1) - self.assertEqual(self._pipeline_config_2['id'], items[0]['id']) - - - -class TestFindFields(TestBaseWithExceptionTests): - """ - Ensure that using the 'field' argument in the find method work. - """ - - def setUp(self): - """Creates test data.""" - self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") - - # Create two users to assign to the pipeline configurations. - self._user1 = self._mockgun.create("HumanUser", {"login": "user1", "firstname": "firstname1"}) - - # Create a project for nested sub entity field - self._project1 = self._mockgun.create("Project", {"name": "project1", "users": [self._user1]}) - - # Create pipeline configurations that are assigned none, one or two users. - self._mockgun.create( - "PipelineConfiguration", - {"code": "with_user1", "users": [self._user1], "project": self._project1} - ) - - def test_field(self): - item = self._mockgun.find_one("HumanUser", [ - ["login", "is", "user1"] - ], ["firstname"]) - self.assertIn("firstname",item) - self.assertEqual("firstname1", item["firstname"]) - - def test_find_field_multi_entity(self): - item = self._mockgun.find_one("PipelineConfiguration", [ - ["project.Project.users.HumanUser.login", "is", "user1"] - ], ["project.Project.name"]) - self.assertIn("project.Project.name", item) - self.assertEqual("project1", item["project.Project.name"]) - - -class TestFindOrder(TestBaseWithExceptionTests): - """ - Ensure that using the 'order' argument in the find method work. - """ - def setUp(self): - self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") - - # Create two users to assign to the pipeline configurations. - self._user1 = self._mockgun.create("HumanUser", {"login": "user1", "firstname": "firstname1", "email": "user1@foobar.com"}) - self._user2 = self._mockgun.create("HumanUser", {"login": "user2", "firstname": "firstname2", "email": "user2@foobar.com"}) - - # Create a project for nested sub entity field - self._project1 = self._mockgun.create("Project", {"name": "project1", "users": [self._user1]}) - self._project2 = self._mockgun.create("Project", {"name": "project2", "users": [self._user2]}) - - # Create two PipelineConfiguration entities so we can test multi-entity sorting. - self._pipeline_configutation_1 = self._mockgun.create("PipelineConfiguration", { - "code": "PipelineConfiguration1", "users": [self._user2], "project": self._project1}) - self._pipeline_configutation_2 = self._mockgun.create("PipelineConfiguration", { - "code": "PipelineConfiguration2", "users": [self._user1], "project": self._project2}) - - def test_find_order(self): - # Test ascending order - item = self._mockgun.find_one("HumanUser", [], order=[{'field_name': 'login', 'direction': 'asc'}]) - self.assertEqual(self._user1['id'], item['id']) - - # Test descending order - item = self._mockgun.find_one("HumanUser", [], order=[{'field_name': 'login', 'direction': 'desc'}]) - self.assertEqual(self._user2['id'], item['id']) - - def test_find_order_linked_entity_field(self): - """Ensure we are able to sort data using a linked entity field.""" - # Test ascending order - item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'project.Project.name', 'direction': 'asc'}]) - self.assertEqual(self._pipeline_configutation_1['id'], item['id']) - - # Test descending order - item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'project.Project.name', 'direction': 'desc'}]) - self.assertEqual(self._pipeline_configutation_2['id'], item['id']) - - def test_find_order_fields_leak(self): - """Ensure that additional fields passed through the order argument but NOT via the field argument are not added to the resulting fields.""" - item = self._mockgun.find_one("HumanUser", [], fields=['email'], order=[{'field_name': 'login', 'direction': 'asc'}]) - self.assertEqual(set(item.keys()), set(['id', 'type', 'email'])) # note: we don't verify the order yet - - def test_find_order_date_created(self): - """Ensure we are able to sort entities by their creation date.""" - item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'created_at', 'direction': 'asc'}]) - self.assertEqual(self._pipeline_configutation_1['id'], item['id']) - - item = self._mockgun.find_one("PipelineConfiguration", [], order=[{'field_name': 'created_at', 'direction': 'desc'}]) - self.assertEqual(self._pipeline_configutation_2['id'], item['id']) def test_find_with_none(self): """ From b43cd65041d54250786ea4affccf22ec05cbc7cb Mon Sep 17 00:00:00 2001 From: daigles Date: Thu, 4 May 2017 16:10:58 -0400 Subject: [PATCH 025/245] For #42202: Added seed_entity_field to nav_search functions. --- shotgun_api3/shotgun.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 0d8797495..b439dac7b 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2895,7 +2895,7 @@ def nav_expand(self, path, seed_entity_field=None, entity_fields=None): } ) - def nav_search_string(self, root_path, search_string): + def nav_search_string(self, root_path, search_string, seed_entity_field=None): """ Search function adapted to work with the navigation hierarchy. @@ -2909,11 +2909,12 @@ def nav_search_string(self, root_path, search_string): "nav_search", { "root_path":root_path, + "seed_entity_field": seed_entity_field, "search_criteria": { "search_string": search_string } } ) - def nav_search_entity(self, root_path, entity): + def nav_search_entity(self, root_path, entity, seed_entity_field=None): """ Search function adapted to work with the navigation hierarchy. @@ -2928,6 +2929,7 @@ def nav_search_entity(self, root_path, entity): "nav_search", { "root_path": root_path, + "seed_entity_field": seed_entity_field, "search_criteria": {"entity": entity } } ) From 906f37c9bca8c5a22032dec702360fb0d6fcfadb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Thu, 29 Jun 2017 13:23:07 -0400 Subject: [PATCH 026/245] Update HISTORY.rst --- HISTORY.rst | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 4b6c6909f..f1eae90c4 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -9,17 +9,8 @@ v3.0.33.dev (TBD) - Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` or :meth:`upload_filmstrip_thumbnail` before calling out to the server. -- Multiple enhancements and bugfixes to Mockgun: - - Added support for filters using the `filter_operator` syntax. - - `is` and `is_not` comparisons with an entity or multi-entity field set to `None` are now handled. - - Fixed contains operator on strings. - - Fixed entity link comparisons with `None`. - - Added support for dotted notation in find parameters (e.g. `users.HumanUser.login`) on both entity and multi-entity fields. - - Added unit tests for Mockgun in `test_mockgun.py`. The tests currently cover all the fixes and features mentionned above. - - Schemas are written using pickle's highest protocol as of Python 2.4's release, which speeds up the loading from disk. - - The current schema is cached in memory so it can be reused without having to do back to disk. +- Multiple enhancements and bugfixes to Mockgun - Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying SG hierarchy. -- TBD v3.0.32 (2016 Sep 22) ===================== From f07c3afdadffb579a93a13b9c2cf8c2cd4a02099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Thu, 29 Jun 2017 13:34:50 -0400 Subject: [PATCH 027/245] For #43466, pick up records_per_page from the server capabilities Upon connecting to Shotgun, the API will now retrieve the maximum number of records the Shotgun server can return when queried and use it was paging results. https://github.com/shotgunsoftware/python-api/pull/148 --- shotgun_api3/shotgun.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index b439dac7b..c87c72ca3 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -573,6 +573,9 @@ def __init__(self, if connect: self.server_caps + # Check for api_max_entities_per_page in the server info and change the record per page value if it is supplied. + self.config.records_per_page = self.server_info.get('api_max_entities_per_page') or self.config.records_per_page + # When using auth_token in a 2FA scenario we need to switch to session-based # authentication because the auth token will no longer be valid after a first use. if self.config.auth_token is not None: @@ -591,10 +594,12 @@ def server_info(self): Property containing server information. >>> sg.server_info - {'full_version': [6, 3, 15, 0], - 's3_uploads_enabled': True, - 's3_direct_uploads_enabled': True, - 'version': [6, 3, 15]} + {'full_version': [6, 3, 15, 0], 'version': [6, 3, 15], ...} + + .. note:: + + Beyond ``full_version`` and ``version`` which differ by the inclusion of the bugfix number, you should expect + these values to be unsupported and for internal use only. :returns: dict of server information from :class:`ServerCapabilities` object :rtype: dict @@ -644,7 +649,12 @@ def info(self): Get API-related metadata from the Shotgun server. >>> sg.info() - {'s3_uploads_enabled': True, 'full_version': [6, 3, 15, 0], 'version': [6, 3, 15]} + {'full_version': [6, 3, 15, 0], 'version': [6, 3, 15], ...} + + .. note:: + + Beyond ``full_version`` and ``version`` which differ by the inclusion of the bugfix number, you should expect + these values to be unsupported and for internal use only. :returns: dict of the server metadata. :rtype: dict From 6d7f31c33df88430935cfb3d336f37deaa4857a7 Mon Sep 17 00:00:00 2001 From: Patrick Boucher Date: Mon, 10 Jul 2017 14:30:53 -0400 Subject: [PATCH 028/245] Travis config update. Do not notify HipChat. --- .travis.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2eb10e5ed..7caeb2ff6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,13 +12,6 @@ script: nosetests -v notifications: email: - api@shotgunsoftware.com - hipchat: - rooms: - secure: Fn5h3NWccsKeXrH/wP/WcfIMco1xCxJsqnEgzSguAIo2DlQX8UprmbyDPoZTOmKF3Tl1HMSZzgLDr2CWQua5IR8IfFum5rfvkckUCeN+PkihL8aJ+1kqXe1GZc0+rRY8iDjAUyX8i+lupnsF0RGmg/eS9QfqblM83VBKskiSsDs= - template: - - '%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message} (Details/Change view)' - format: html - on_pull_requests: false slack: rooms: secure: NgcVxptQji2OL7EKx5owh21tOl4rRg51ydYhLPHpBIpBVzlqPxi1jbMHpcbl8mG+GuhU6y1D6kVQgQfuAfIWx5YOc4FodhOFZgeS+eol5RTmEepl1OT6XmAVgEclSZUYQmK25OkcxnFnOV/31RuDPXWcgCvSBZqTy6lAbOZ5VwQ= From 5140c5efa7db066e85e50286cfd475a6184cd69b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Mon, 10 Jul 2017 14:43:37 -0400 Subject: [PATCH 029/245] Fixes the travis build. --- tests/test_api.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/test_api.py b/tests/test_api.py index 21d9dbe23..b76cb1717 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -179,13 +179,21 @@ def test_upload_download(self): # test download with attachment hash ticket = self.sg.find_one('Ticket', [['id', 'is', self.ticket['id']]], ['attachments']) - attach_file = self.sg.download_attachment(ticket['attachments'][0]) + + # Look for the attachment we just uploaded, the attachments are not returned from latest + # to earliest. + attachment = [x for x in ticket["attachments"] if x["id"] == attach_id] + self.assertEqual(len(attachment), 1) + + attachment = attachment[0] + attach_file = self.sg.download_attachment(attachment) + self.assertTrue(attach_file is not None) self.assertEqual(size, len(attach_file)) self.assertEqual(orig_file, attach_file) # test download with attachment hash (write to disk) - result = self.sg.download_attachment(ticket['attachments'][0], + result = self.sg.download_attachment(attachment, file_path=file_path) self.assertEqual(result, file_path) fp = open(file_path, 'rb') From 091892bf890d3dcc361cc2afcc0d216b78641dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Mon, 17 Jul 2017 10:28:50 -0400 Subject: [PATCH 030/245] Updating build status to retina icon. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 18d631150..cd15c0baa 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,8 @@ You can see the [full history of the Python API on the documentation site](http: Integration and unit tests are provided. -[![Build Status](https://secure.travis-ci.org/shotgunsoftware/python-api.png?branch=master)](http://travis-ci.org/shotgunsoftware/python-api) +[![Build Status](https://secure.travis-ci.org/shotgunsoftware/python-api.svg?branch=master)](http://travis-ci.org/shotgunsoftware/python-api) + - All tests require the [nose unit testing tools](http://nose.readthedocs.org), and a `tests/config` file (you can copy an example from `tests/example_config`). - Tests can be run individually like this: `nosetest tests/test_client.py` From cc2dc53a6fb76b7dfafee86ac74aee3f258b3695 Mon Sep 17 00:00:00 2001 From: Neil Grey Date: Mon, 17 Jul 2017 14:45:41 -0700 Subject: [PATCH 031/245] For #40631: Adding following method to change log --- HISTORY.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/HISTORY.rst b/HISTORY.rst index f1eae90c4..6a60e26db 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -11,6 +11,7 @@ v3.0.33.dev (TBD) or :meth:`upload_filmstrip_thumbnail` before calling out to the server. - Multiple enhancements and bugfixes to Mockgun - Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying SG hierarchy. +- Introduces a :meth:`following` query method, that accepts a user entity and optionally an entity type and/or project. v3.0.32 (2016 Sep 22) ===================== From 05c9cd907d8f5e15b86cbc2cfe99f8eb7f848a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 18 Jul 2017 15:18:40 -0400 Subject: [PATCH 032/245] For #42677, release the Shotgun API. - Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` or :meth:`upload_filmstrip_thumbnail` before calling out to the server. - Multiple enhancements and bugfixes to Mockgun - Introduces a :meth:`following` query method, that accepts a user entity and optionally an entity type and/or project. - Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying SG hierarchy. --- HISTORY.rst | 4 ++-- setup.py | 2 +- shotgun_api3/shotgun.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 6a60e26db..b12a43fed 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,8 +4,8 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. -v3.0.33.dev (TBD) -================= +v3.0.33 (2017 July 18) +===================== - Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` or :meth:`upload_filmstrip_thumbnail` before calling out to the server. diff --git a/setup.py b/setup.py index 4ded94651..e39ce3b82 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.32', + version='3.0.33', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index c87c72ca3..28a52a4cc 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.33.dev" +__version__ = "3.0.33" # ---------------------------------------------------------------------------- # Errors From d4a2d5088534f468d9274a24f18d1f2ccc433dde Mon Sep 17 00:00:00 2001 From: Matt Daw Date: Fri, 25 Aug 2017 15:43:33 -0400 Subject: [PATCH 033/245] First pass at supporting optimized pagination. (#152) * First pass at supporting optimized pagination. * Remove debug import * Update an old version check to use the new mechanism --- shotgun_api3/shotgun.py | 72 ++++++++++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 28a52a4cc..9f9b18efa 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -29,7 +29,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ - import base64 import cookielib # used for attachment upload import cStringIO # used for attachment upload @@ -92,7 +91,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.33" +__version__ = "3.0.34.dev" # ---------------------------------------------------------------------------- # Errors @@ -247,6 +246,24 @@ def ensure_user_following_support(self): 'label': 'user_following parameter' }, True) + def ensure_paging_info_without_counts_support(self): + """ + Ensures server has support for optimized pagination, added in v7.4.0. + """ + return self._ensure_support({ + 'version': (7, 4, 0), + 'label': 'optimized pagination' + }, False) + + def ensure_return_image_urls_support(self): + """ + Ensures server has support for returning thumbnail URLs without additional round-trips, added in v3.3.0. + """ + return self._ensure_support({ + 'version': (3, 3, 0), + 'label': 'return thumbnail URLs' + }, False) + def __str__(self): return "ServerCapabilities: host %s, version %s, is_dev %s"\ % (self.host, self.version, self.is_dev) @@ -782,7 +799,7 @@ def find(self, entity_type, filters, fields=None, order=None, returns all entities that match. :param int page: Optional page of results to return. Use this together with the ``limit`` parameter to control how your query results are paged. Defaults to ``0`` which returns - the first page of results. + all entities that match. :param bool retired_only: Optional boolean when ``True`` will return only entities that have been retried. Defaults to ``False`` which returns only entities which have not been retired. There is no option to return both retired and non-retired entities in the @@ -833,6 +850,16 @@ def find(self, entity_type, filters, fields=None, order=None, include_archived_projects, additional_filter_presets) + if self.server_caps.ensure_return_image_urls_support(): + params['api_return_image_urls'] = True + + if self.server_caps.ensure_paging_info_without_counts_support(): + paging_info_param = "return_paging_info_without_counts" + else: + paging_info_param = "return_paging_info" + + params[paging_info_param] = False + if limit and limit <= self.config.records_per_page: params["paging"]["entities_per_page"] = limit # If page isn't set and the limit doesn't require pagination, @@ -840,30 +867,40 @@ def find(self, entity_type, filters, fields=None, order=None, if page == 0: page = 1 - if self.server_caps.version and self.server_caps.version >= (3, 3, 0): - params['api_return_image_urls'] = True - # if page is specified, then only return the page of records requested if page != 0: - # No paging_info needed, so optimize it out. - params["return_paging_info"] = False params["paging"]["current_page"] = page records = self._call_rpc("read", params).get("entities", []) return self._parse_records(records) + params[paging_info_param] = True records = [] - result = self._call_rpc("read", params) - while result.get("entities"): - records.extend(result.get("entities")) - if limit and len(records) >= limit: - records = records[:limit] - break - if len(records) == result["paging_info"]["entity_count"]: - break + if self.server_caps.ensure_paging_info_without_counts_support(): + has_next_page = True + while has_next_page: + result = self._call_rpc("read", params) + records.extend(result.get("entities")) + + if limit and len(records) >= limit: + records = records[:limit] + break - params['paging']['current_page'] += 1 + has_next_page = result["paging_info"]["has_next_page"] + params['paging']['current_page'] += 1 + else: result = self._call_rpc("read", params) + while result.get("entities"): + records.extend(result.get("entities")) + + if limit and len(records) >= limit: + records = records[:limit] + break + if len(records) == result["paging_info"]["entity_count"]: + break + + params['paging']['current_page'] += 1 + result = self._call_rpc("read", params) return self._parse_records(records) @@ -882,7 +919,6 @@ def _construct_read_parameters(self, params["return_fields"] = fields or ["id"] params["filters"] = filters params["return_only"] = (retired_only and 'retired') or "active" - params["return_paging_info"] = True params["paging"] = { "entities_per_page": self.config.records_per_page, "current_page": 1 } From 96fea8303817f49096187f346ecde39d56e1d066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Mon, 18 Sep 2017 10:18:51 -0400 Subject: [PATCH 034/245] packaging for v3.0.34 release. --- HISTORY.rst | 6 ++++++ setup.py | 2 +- shotgun_api3/shotgun.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index b12a43fed..e69bb0bb3 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,12 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.0.34 (2017 September 18) +===================== + +- Optimized pagination strategy for Shotgun 7.4+ +- Switched from a hard-coded value of 500 for "records_per_page" to a server-defined value. We will be experimenting with higher values with the goal of increasing performance for large result sets. + v3.0.33 (2017 July 18) ===================== diff --git a/setup.py b/setup.py index e39ce3b82..a1eaa21f7 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.33', + version='3.0.34', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 9f9b18efa..b1db7985a 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -91,7 +91,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.34.dev" +__version__ = "3.0.34" # ---------------------------------------------------------------------------- # Errors From c03218274e5bae4c56d4fab5fe95c28234b4f487 Mon Sep 17 00:00:00 2001 From: Jordi Riera Date: Thu, 12 Oct 2017 14:19:04 -0400 Subject: [PATCH 035/245] [minor] Adds percent field support to Mockgun. --- shotgun_api3/lib/mockgun/mockgun.py | 1 + 1 file changed, 1 insertion(+) diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index e0ab26d78..9eb5a8bfa 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -460,6 +460,7 @@ def _validate_entity_data(self, entity_type, data): python_type = {"number": int, "float": float, "checkbox": bool, + "percent": int, "text": basestring, "serializable": dict, "date": datetime.date, From 4809efc6bb46d514b43ce41c5317b6100ac7be64 Mon Sep 17 00:00:00 2001 From: Luc Bolduc Date: Fri, 10 Nov 2017 15:32:24 -0500 Subject: [PATCH 036/245] #45355 - Remove filmstrip_image download test (#156) Originally, there was a bug and the filmstrip_image url returned was bogus but it was a signed url which returned 200 and image/jpeg. This was fixed and now, in NFS mode only, filmstrip_image returns a valid redirect url on the filmstrip_image. That url isn't a signed url and requires login credential so we now use sg.download_attachment to download it and we validate status differently. Note that this is not an issue in s3 mode since the filmstrip_image s3 url is returned. --- tests/test_api.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/test_api.py b/tests/test_api.py index b76cb1717..52b362108 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -257,10 +257,11 @@ def test_upload_thumbnail_in_create(self): self.assertEqual(new_version.get('project'), self.project) self.assertTrue(new_version.get('filmstrip_image') is not None) - h = Http(".cache") - filmstrip_thumb_resp, content = h.request(new_version.get('filmstrip_image'), "GET") - self.assertEqual(filmstrip_thumb_resp['status'], '200') - self.assertEqual(filmstrip_thumb_resp['content-type'], 'image/jpeg') + url = new_version.get('filmstrip_image') + data = self.sg.download_attachment({'url': url}) + self.assertTrue(isinstance(data, str)) + # check that the credential did work and that we don't have the login page + self.assertFalse('login' in data.lower()) self.sg.delete("Version", new_version['id']) # end test_upload_thumbnail_in_create From 4e90bccdadfa87ea36b3484a9ca745c05f0c7bdd Mon Sep 17 00:00:00 2001 From: Luc Bolduc Date: Fri, 10 Nov 2017 16:58:08 -0500 Subject: [PATCH 037/245] unit test fix --- tests/test_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_api.py b/tests/test_api.py index 52b362108..91f26b2ed 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -261,7 +261,7 @@ def test_upload_thumbnail_in_create(self): data = self.sg.download_attachment({'url': url}) self.assertTrue(isinstance(data, str)) # check that the credential did work and that we don't have the login page - self.assertFalse('login' in data.lower()) + self.assertTrue(('login' in data.lower()) == None) self.sg.delete("Version", new_version['id']) # end test_upload_thumbnail_in_create From 41c53698d3bf0683c3eb3604f7c1c9bb17e4461c Mon Sep 17 00:00:00 2001 From: Luc Bolduc Date: Fri, 10 Nov 2017 20:58:44 -0500 Subject: [PATCH 038/245] remove unstable unit test assert --- tests/test_api.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_api.py b/tests/test_api.py index 91f26b2ed..a6bd6aa5f 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -260,8 +260,6 @@ def test_upload_thumbnail_in_create(self): url = new_version.get('filmstrip_image') data = self.sg.download_attachment({'url': url}) self.assertTrue(isinstance(data, str)) - # check that the credential did work and that we don't have the login page - self.assertTrue(('login' in data.lower()) == None) self.sg.delete("Version", new_version['id']) # end test_upload_thumbnail_in_create From 8eb9e3d10f1d01a1ebb1f90f6996c853f7e90d9f Mon Sep 17 00:00:00 2001 From: Patrick Hubert Date: Mon, 20 Nov 2017 13:24:28 -0500 Subject: [PATCH 039/245] Added handling of SSO by creating a new exception (#159) --- shotgun_api3/__init__.py | 3 +- shotgun_api3/shotgun.py | 142 +++++++++++++++++++++------------------ 2 files changed, 79 insertions(+), 66 deletions(-) diff --git a/shotgun_api3/__init__.py b/shotgun_api3/__init__.py index 3aa996e24..4f0890628 100644 --- a/shotgun_api3/__init__.py +++ b/shotgun_api3/__init__.py @@ -1,5 +1,6 @@ -from shotgun import (Shotgun, ShotgunError, ShotgunFileDownloadError, Fault, +from shotgun import (Shotgun, ShotgunError, ShotgunFileDownloadError, Fault, AuthenticationFault, MissingTwoFactorAuthenticationFault, + UserCredentialsNotAllowedForSSOAuthenticationFault, ProtocolError, ResponseError, Error, __version__) from shotgun import SG_TIMEZONE as sg_timezone diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index b1db7985a..e4840efc9 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -81,7 +81,7 @@ not require the added security provided by enforcing this. """ try: - import ssl + import ssl except ImportError, e: if "SHOTGUN_FORCE_CERTIFICATE_VALIDATION" in os.environ: raise ImportError("%s. SHOTGUN_FORCE_CERTIFICATE_VALIDATION environment variable prevents " @@ -127,6 +127,13 @@ class MissingTwoFactorAuthenticationFault(Fault): """ pass +class UserCredentialsNotAllowedForSSOAuthenticationFault(Fault): + """ + Exception when the server is configured to use SSO. It is not possible to use + a username/password pair to authenticate on such server. + """ + pass + # ---------------------------------------------------------------------------- # API @@ -136,8 +143,8 @@ class ServerCapabilities(object): .. warning:: - This class is part of the internal API and its interfaces may change at any time in - the future. Therefore, usage of this class is discouraged. + This class is part of the internal API and its interfaces may change at any time in + the future. Therefore, usage of this class is discouraged. """ def __init__(self, host, meta): @@ -274,8 +281,8 @@ class ClientCapabilities(object): .. warning:: - This class is part of the internal API and its interfaces may change at any time in - the future. Therefore, usage of this class is discouraged. + This class is part of the internal API and its interfaces may change at any time in + the future. Therefore, usage of this class is discouraged. :ivar str platform: The current client platform. Valid values are ``mac``, ``linux``, ``windows``, or ``None`` (if the current platform couldn't be determined). @@ -327,8 +334,8 @@ class _Config(object): def __init__(self): self.max_rpc_attempts = 3 # From http://docs.python.org/2.6/library/httplib.html: - # If the optional timeout parameter is given, blocking operations - # (like connection attempts) will timeout after that many seconds + # If the optional timeout parameter is given, blocking operations + # (like connection attempts) will timeout after that many seconds # (if it is not given, the global default timeout setting is used) self.timeout_secs = None self.api_ver = 'api3' @@ -347,9 +354,9 @@ def __init__(self): self.scheme = None self.server = None self.api_path = None - # The raw_http_proxy reflects the exact string passed in - # to the Shotgun constructor. This can be useful if you - # need to construct a Shotgun API instance based on + # The raw_http_proxy reflects the exact string passed in + # to the Shotgun constructor. This can be useful if you + # need to construct a Shotgun API instance based on # another Shotgun API instance. self.raw_http_proxy = None # if a proxy server is being used, the proxy_handler @@ -380,7 +387,7 @@ class Shotgun(object): "(\D?([01]\d|2[0-3])\D?([0-5]\d)\D?([0-5]\d)?\D?(\d{3})?)?$") _MULTIPART_UPLOAD_CHUNK_SIZE = 20000000 - + def __init__(self, base_url, script_name=None, @@ -484,7 +491,7 @@ def __init__(self, if login is not None or password is not None: raise ValueError("cannot provide both session_token " "and login/password") - + if login is not None or password is not None: if script_name is not None or api_key is not None: raise ValueError("cannot provide both login/password " @@ -581,7 +588,7 @@ def __init__(self, self._json_loads = self._json_loads_ascii self.client_caps = ClientCapabilities() - # this relies on self.client_caps being set first + # this relies on self.client_caps being set first self.reset_user_agent() self._server_caps = None @@ -881,7 +888,7 @@ def find(self, entity_type, filters, fields=None, order=None, while has_next_page: result = self._call_rpc("read", params) records.extend(result.get("entities")) - + if limit and len(records) >= limit: records = records[:limit] break @@ -1604,12 +1611,12 @@ def follow(self, user, entity): if not self.server_caps.version or self.server_caps.version < (5, 1, 22): raise ShotgunError("Follow support requires server version 5.2 or "\ "higher, server is %s" % (self.server_caps.version,)) - + params = dict( user=user, entity=entity ) - + return self._call_rpc('follow', params) def unfollow(self, user, entity): @@ -1632,12 +1639,12 @@ def unfollow(self, user, entity): if not self.server_caps.version or self.server_caps.version < (5, 1, 22): raise ShotgunError("Follow support requires server version 5.2 or "\ "higher, server is %s" % (self.server_caps.version,)) - + params = dict( user=user, entity=entity ) - + return self._call_rpc('unfollow', params) def followers(self, entity): @@ -1661,11 +1668,11 @@ def followers(self, entity): if not self.server_caps.version or self.server_caps.version < (5, 1, 22): raise ShotgunError("Follow support requires server version 5.2 or "\ "higher, server is %s" % (self.server_caps.version,)) - + params = dict( entity=entity ) - + return self._call_rpc('followers', params) def following(self, user, project=None, entity_type=None): @@ -1986,13 +1993,13 @@ def reset_user_agent(self): ua_platform = "Unknown" if self.client_caps.platform is not None: ua_platform = self.client_caps.platform.capitalize() - + # create ssl validation string based on settings validation_str = "validate" if self.config.no_ssl_validation: validation_str = "no-validate" - + self._user_agents = ["shotgun-json (%s)" % __version__, "Python %s (%s)" % (self.client_caps.py_version, ua_platform), "ssl %s (%s)" % (self.client_caps.ssl_version, validation_str)] @@ -2378,7 +2385,7 @@ def _get_attachment_upload_info(self, is_thumbnail, filename, is_multipart_uploa :param str filename: name of the file that will be uploaded. :param bool is_multipart_upload: Indicates if we want multi-part upload information back. - :returns: dictionary containing upload details from the server. + :returns: dictionary containing upload details from the server. These details are used throughout the upload process. :rtype: dict """ @@ -2452,7 +2459,7 @@ def download_attachment(self, attachment=False, file_path=None, attachment_id=No ``file_path`` is ``None``, returns the actual data of the file as a string. :rtype: str """ - # backwards compatibility when passed via keyword argument + # backwards compatibility when passed via keyword argument if attachment is False: if type(attachment_id) == int: attachment = attachment_id @@ -2466,7 +2473,7 @@ def download_attachment(self, attachment=False, file_path=None, attachment_id=No fp = open(file_path, 'wb') except IOError, e: raise IOError("Unable to write Attachment to disk using "\ - "file_path. %s" % e) + "file_path. %s" % e) url = self.get_attachment_download_url(attachment) if url is None: @@ -2475,7 +2482,7 @@ def download_attachment(self, attachment=False, file_path=None, attachment_id=No # We only need to set the auth cookie for downloads from Shotgun server if self.config.server in url: self.set_up_auth_cookie() - + try: request = urllib2.Request(url) request.add_header('user-agent', "; ".join(self._user_agents)) @@ -2494,7 +2501,7 @@ def download_attachment(self, attachment=False, file_path=None, attachment_id=No if e.code == 400: err += "\nAttachment may not exist or is a local file?" elif e.code == 403: - # Only parse the body if it is an Amazon S3 url. + # Only parse the body if it is an Amazon S3 url. if url.find('s3.amazonaws.com') != -1 \ and e.headers['content-type'] == 'application/xml': body = e.readlines() @@ -2561,7 +2568,7 @@ def get_attachment_download_url(self, attachment): try: url = attachment['url'] except KeyError: - if ('id' in attachment and 'type' in attachment and + if ('id' in attachment and 'type' in attachment and attachment['type'] == 'Attachment'): attachment_id = attachment['id'] else: @@ -2572,7 +2579,7 @@ def get_attachment_download_url(self, attachment): raise TypeError("Unable to determine download url. Expected "\ "dict, int, or NoneType. Instead got %s" % type(attachment)) - if attachment_id: + if attachment_id: url = urlparse.urlunparse((self.config.scheme, self.config.server, "/file_serve/attachment/%s" % urllib.quote(str(attachment_id)), None, None, None)) @@ -2736,10 +2743,10 @@ def note_thread_read(self, note_id, entity_fields=None): "higher, server is %s" % (self.server_caps.version,)) entity_fields = entity_fields or {} - + if not isinstance(entity_fields, dict): raise ValueError("entity_fields parameter must be a dictionary") - + params = { "note_id": note_id, "entity_fields": entity_fields } record = self._call_rpc("note_thread_contents", params) @@ -2806,25 +2813,25 @@ def text_search(self, text, entity_types, project_ids=None, limit=None): if self.server_caps.version and self.server_caps.version < (6, 2, 0): raise ShotgunError("auto_complete requires server version 6.2.0 or "\ "higher, server is %s" % (self.server_caps.version,)) - - # convert entity_types structure into the form + + # convert entity_types structure into the form # that the API endpoint expects if not isinstance(entity_types, dict): raise ValueError("entity_types parameter must be a dictionary") - + api_entity_types = {} for (entity_type, filter_list) in entity_types.iteritems(): if isinstance(filter_list, (list, tuple)): resolved_filters = _translate_filters(filter_list, filter_operator=None) - api_entity_types[entity_type] = resolved_filters + api_entity_types[entity_type] = resolved_filters else: raise ValueError("value of entity_types['%s'] must " "be a list or tuple." % entity_type) - + project_ids = project_ids or [] - params = { "text": text, + params = { "text": text, "entity_types": api_entity_types, "project_ids": project_ids, "max_results": limit } @@ -2906,10 +2913,10 @@ def activity_stream_read(self, entity_type, entity_id, entity_fields=None, min_i # set up parameters to send to server. entity_fields = entity_fields or {} - + if not isinstance(entity_fields, dict): raise ValueError("entity_fields parameter must be a dictionary") - + params = { "type": entity_type, "id": entity_id, "max_id": max_id, @@ -3022,9 +3029,9 @@ def _turn_off_ssl_validation(self): self.config.no_ssl_validation = True NO_SSL_VALIDATION = True # reset ssl-validation in user-agents - self._user_agents = ["ssl %s (no-validate)" % self.client_caps.ssl_version - if ua.startswith("ssl ") else ua - for ua in self._user_agents] + self._user_agents = ["ssl %s (no-validate)" % self.client_caps.ssl_version + if ua.startswith("ssl ") else ua + for ua in self._user_agents] # Deprecated methods from old wrapper def schema(self, entity_type): @@ -3113,8 +3120,8 @@ def _auth_params(self): auth_params = {"session_token" : str(self.config.session_token)} - # Request server side to raise exception for expired sessions. - # This was added in as part of Shotgun 5.4.4 + # Request server side to raise exception for expired sessions. + # This was added in as part of Shotgun 5.4.4 if self.server_caps.version and self.server_caps.version > (5, 4, 3): auth_params["reject_if_expired"] = True @@ -3206,24 +3213,24 @@ def _make_call(self, verb, path, body, headers): return self._http_request(verb, path, body, req_headers) except SSLHandshakeError, e: # Test whether the exception is due to the fact that this is an older version of - # Python that cannot validate certificates encrypted with SHA-2. If it is, then + # Python that cannot validate certificates encrypted with SHA-2. If it is, then # fall back on disabling the certificate validation and try again - unless the - # SHOTGUN_FORCE_CERTIFICATE_VALIDATION environment variable has been set by the - # user. In that case we simply raise the exception. Any other exceptions simply - # get raised as well. + # SHOTGUN_FORCE_CERTIFICATE_VALIDATION environment variable has been set by the + # user. In that case we simply raise the exception. Any other exceptions simply + # get raised as well. # # For more info see: # http://blog.shotgunsoftware.com/2016/01/important-ssl-certificate-renewal-and.html # - # SHA-2 errors look like this: + # SHA-2 errors look like this: # [Errno 1] _ssl.c:480: error:0D0C50A1:asn1 encoding routines:ASN1_item_verify: # unknown message digest algorithm - # + # # Any other exceptions simply get raised. if not str(e).endswith("unknown message digest algorithm") or \ "SHOTGUN_FORCE_CERTIFICATE_VALIDATION" in os.environ: raise - + if self.config.no_ssl_validation is False: LOG.warning("SSLHandshakeError: this Python installation is incompatible with " "certificates signed with SHA-2. Disabling certificate validation. " @@ -3232,7 +3239,7 @@ def _make_call(self, verb, path, body, headers): self._turn_off_ssl_validation() # reload user agent to reflect that we have turned off ssl validation req_headers["user-agent"] = "; ".join(self._user_agents) - + self._close_connection() if attempt == max_rpc_attempts: raise @@ -3352,14 +3359,19 @@ def _response_errors(self, sg_response): ERR_AUTH = 102 # error code for authentication related problems ERR_2FA = 106 # error code when 2FA authentication is required but no 2FA token provided. + ERR_SSO = 108 # error code when SSO is activated on the site, preventing the use of username/password for authentication. if isinstance(sg_response, dict) and sg_response.get("exception"): if sg_response.get("error_code") == ERR_AUTH: raise AuthenticationFault(sg_response.get("message", "Unknown Authentication Error")) elif sg_response.get("error_code") == ERR_2FA: raise MissingTwoFactorAuthenticationFault(sg_response.get("message", "Unknown 2FA Authentication Error")) + elif sg_response.get("error_code") == ERR_SSO: + raise UserCredentialsNotAllowedForSSOAuthenticationFault( + sg_response.get("message", "Authentication using username/password is not allowed for an SSO-enabled Shotgun site") + ) else: - # raise general Fault + # raise general Fault raise Fault(sg_response.get("message", "Unknown Error")) return @@ -3616,9 +3628,9 @@ def _dict_to_extra_data(self, d, key_name="value"): def _upload_file_to_storage(self, path, storage_url): """ Internal function to upload an entire file to the Cloud storage. - + :param str path: Full path to an existing non-empty file on disk to upload. - :param str storage_url: Target URL for the uploaded file. + :param str storage_url: Target URL for the uploaded file. """ filename = os.path.basename(path) @@ -3688,8 +3700,8 @@ def _get_upload_part_link(self, upload_info, filename, part_number): "/upload/api_get_upload_link_for_part", None, None, None)) result = self._send_form(url, params) - # Response is of the form: 1\n (for success) or 0\n (for failure). - # In case of success, we know we the second line of the response contains the + # Response is of the form: 1\n (for success) or 0\n (for failure). + # In case of success, we know we the second line of the response contains the # requested URL. if not str(result).startswith("1"): raise ShotgunError("Unable get upload part link: %s" % result) @@ -3700,11 +3712,11 @@ def _get_upload_part_link(self, upload_info, filename, part_number): def _upload_data_to_storage(self, data, content_type, size, storage_url): """ Internal function to upload data to Cloud storage. - + :param stream data: Contains details received from the server, about the upload. :param str content_type: Content type of the data stream. :param int size: Number of bytes in the data stream. - :param str storage_url: Target URL for the uploaded file. + :param str storage_url: Target URL for the uploaded file. :returns: upload url. :rtype: str """ @@ -3762,7 +3774,7 @@ def _send_form(self, url, params): """ params.update(self._auth_params()) - + opener = self._build_opener(FormPostHandler) # Perform the request @@ -3851,7 +3863,7 @@ def _translate_filters(filters, filter_operator): def _translate_filters_dict(sg_filter): new_filters = {} filter_operator = sg_filter.get("filter_operator") - + if filter_operator == "all" or filter_operator == "and": new_filters["logical_operator"] = "and" elif filter_operator == "any" or filter_operator == "or": @@ -3864,12 +3876,12 @@ def _translate_filters_dict(sg_filter): % sg_filter["filters"]) new_filters["conditions"] = _translate_filters_list(sg_filter["filters"]) - + return new_filters - + def _translate_filters_list(filters): conditions = [] - + for sg_filter in filters: if isinstance(sg_filter, (list,tuple)): conditions.append(_translate_filters_simple(sg_filter)) @@ -3886,7 +3898,7 @@ def _translate_filters_simple(sg_filter): "path": sg_filter[0], "relation": sg_filter[1] } - + values = sg_filter[2:] if len(values) == 1 and isinstance(values[0], (list, tuple)): values = values[0] From 9069888f37d638e6b09b1497f075f7bbabe24ca1 Mon Sep 17 00:00:00 2001 From: Patrick Hubert Date: Fri, 8 Dec 2017 13:30:49 -0500 Subject: [PATCH 040/245] Preparing release v3.0.35 (#161) --- HISTORY.rst | 7 +++++++ setup.py | 4 ++-- shotgun_api3/shotgun.py | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index e69bb0bb3..620b50eea 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,13 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.0.35 (2017 December 8) +===================== + +- Add exception UserCredentialsNotAllowedForSSOAuthenticationFault. + Triggered when attempting to initiate a connection with a username/password + pair on an SSO-enabled Shotgun site. + v3.0.34 (2017 September 18) ===================== diff --git a/setup.py b/setup.py index a1eaa21f7..44faa0d2b 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.34', + version='3.0.35', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', @@ -27,6 +27,6 @@ packages=find_packages(exclude=('tests',)), script_args=script_args, include_package_data=True, - package_data={'': [ 'cacerts.txt']}, + package_data={'': ['cacerts.txt']}, zip_safe=False, ) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index e4840efc9..a23278e7a 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -91,7 +91,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.34" +__version__ = "3.0.35" # ---------------------------------------------------------------------------- # Errors From 6591860c7e2e1bac3e3f6c09c21b6c7a1253a0d1 Mon Sep 17 00:00:00 2001 From: Patrick Hubert Date: Tue, 12 Dec 2017 09:00:52 -0500 Subject: [PATCH 041/245] Added get_session_token to mockgun (#163) --- shotgun_api3/lib/mockgun/mockgun.py | 121 ++++++++++++++-------------- 1 file changed, 62 insertions(+), 59 deletions(-) diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index 9eb5a8bfa..44ba35414 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -32,56 +32,56 @@ ----------------------------------------------------------------------------- -M O C K G U N +M O C K G U N ----------------------------------------------------------------------------- Experimental software ahead! ---------------------------- -Disclaimer! Mockgun is in its early stages of development. It is not fully -compatible with the Shotgun API yet and we offer no guarantees at this point -that future versions of Mockgun will be backwards compatible. Consider this -alpha level software and use at your own risk. +Disclaimer! Mockgun is in its early stages of development. It is not fully +compatible with the Shotgun API yet and we offer no guarantees at this point +that future versions of Mockgun will be backwards compatible. Consider this +alpha level software and use at your own risk. What is Mockgun? ---------------- Mockgun is a Shotgun API mocker. It's a class that has got *most* of the same -methods and parameters that the Shotgun API has got. Mockgun is essentially a +methods and parameters that the Shotgun API has got. Mockgun is essentially a Shotgun *emulator* that (for basic operations) looks and feels like Shotgun. The primary purpose of Mockgun is to drive unit test rigs where it becomes -too slow, cumbersome or non-practical to connect to a real Shotgun. Using a -Mockgun for unit tests means that a test can be rerun over and over again +too slow, cumbersome or non-practical to connect to a real Shotgun. Using a +Mockgun for unit tests means that a test can be rerun over and over again from exactly the same database state. This can be hard to do if you connect -to a live Shotgun instance. +to a live Shotgun instance. How do I use Mockgun? --------------------- First of all, you need a Shotgun schema to run against. This will define -all the fields and entities that mockgun will use. Simply connect to +all the fields and entities that mockgun will use. Simply connect to your Shotgun site and use the generate_schema() method to download the schema data: # connect to your site from shotgun_api3 import Shotgun sg = Shotgun("https://mysite.shotgunstudio.com", script_name="xyz", api_key="abc") - + # write out schema data to files from shotgun_api3.lib import mockgun mockgun.generate_schema(sg, "/tmp/schema", "/tmp/entity_schema") - + Now that you have a schema, you can tell your mockgun instance about it. -We do this as a class-level operation, so that the consctructor can be +We do this as a class-level operation, so that the consctructor can be exactly like the real Shotgun one: from shotgun_api3.lib import mockgun - + # tell mockgun about the schema mockgun.Shotgun.set_schema_paths("/tmp/schema", "/tmp/entity_schema") - - # we are ready to mock! - # this call will not connect to mysite, but instead create a + + # we are ready to mock! + # this call will not connect to mysite, but instead create a # mockgun instance which is connected to an *empty* shotgun site # which has got the same schema as mysite. sg = mockgun.Shotgun("https://mysite.shotgunstudio.com", script_name="xyz", api_key="abc") @@ -89,15 +89,15 @@ # now you can start putting stuff in print sg.create("HumanUser", {"firstname": "John", "login": "john"}) # prints {'login': 'john', 'type': 'HumanUser', 'id': 1, 'firstname': 'John'} - + # and find what you have created print sg.find("HumanUser", [["login", "is", "john"]]) prints [{'type': 'HumanUser', 'id': 1}] - + That's it! Mockgun is used to run the Shotgun Pipeline Toolkit unit test rig. Mockgun has a 'database' in the form of a dictionary stored in Mockgun._db -By editing this directly, you can modify the database without going through +By editing this directly, you can modify the database without going through the API. @@ -135,13 +135,13 @@ class Shotgun(object): It generates an object which looks and feels like a normal Shotgun API instance. Instead of connecting to a real server, it keeps all its data in memory in a way which makes it easy to introspect and test. - + The methods presented in this class reflect the Shotgun API and are therefore sparsely documented. - + Please note that this class is built for test purposes only and only creates an - object which *roughly* resembles the Shotgun API - however, for most common - use cases, this is enough to be able to perform relevant and straight forward + object which *roughly* resembles the Shotgun API - however, for most common + use cases, this is enough to be able to perform relevant and straight forward testing of code. """ @@ -155,7 +155,7 @@ def set_schema_paths(cls, schema_path, schema_entity_path): level so all Shotgun instances will share the same schema. The responsability to generate and load these files is left to the user changing the default value. - + :param schema_path: Directory path where schema files are. """ cls.__schema_path = schema_path @@ -166,7 +166,7 @@ def get_schema_paths(cls): """ Returns a tuple with paths to the files which are part of the schema. These paths can then be used in generate_schema if needed. - + :returns: A tuple with schema_file_path and schema_entity_file_path """ return (cls.__schema_path, cls.__schema_entity_path) @@ -191,7 +191,7 @@ def __init__(self, # having them present means code and get and set them # they way they would expect to in the real API. self.config = _Config() - + # load in the shotgun schema to associate with this Shotgun (schema_path, schema_entity_path) = self.get_schema_paths() @@ -199,7 +199,7 @@ def __init__(self, raise MockgunError("Cannot create Mockgun instance because no schema files have been defined. " "Before creating a Mockgun instance, please call Mockgun.set_schema_paths() " "in order to specify which Shotgun schema Mockgun should operate against.") - + self._schema, self._schema_entity = SchemaFactory.get_schemas(schema_path, schema_entity_path) # initialize the "database" @@ -207,7 +207,7 @@ def __init__(self, # set some basic public members that exist in the Shotgun API self.base_url = base_url - + # bootstrap the event log # let's make sure there is at least one event log id in our mock db data = {} @@ -221,18 +221,21 @@ def __init__(self, # public API methods + def get_session_token(self): + return "bogus_session_token" + def schema_read(self): return self._schema def schema_field_create(self, entity_type, data_type, display_name, properties=None): raise NotImplementedError - + def schema_field_update(self, entity_type, field_name, properties): raise NotImplementedError def schema_field_delete(self, entity_type, field_name): raise NotImplementedError - + def schema_entity_read(self): return self._schema_entity @@ -244,7 +247,7 @@ def schema_field_read(self, entity_type, field_name=None): def find(self, entity_type, filters, fields=None, order=None, filter_operator=None, limit=0, retired_only=False, page=0): - + self.finds += 1 @@ -311,12 +314,12 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No val = [dict((field, self._get_field_from_row(entity_type, row, field)) for field in fields) for row in results] return val - - + + def find_one(self, entity_type, filters, fields=None, order=None, filter_operator=None, retired_only=False): results = self.find(entity_type, filters, fields=fields, order=order, filter_operator=filter_operator, retired_only=retired_only) return results[0] if results else None - + def batch(self, requests): results = [] for request in requests: @@ -332,14 +335,14 @@ def batch(self, requests): return results def create(self, entity_type, data, return_fields=None): - + # special handling of storage fields - if a field value - # is a dict with a key local_path, then add fields - # local_path_linux, local_path_windows, local_path_mac + # is a dict with a key local_path, then add fields + # local_path_linux, local_path_windows, local_path_mac # as a reflection of this for d in data: if isinstance(data[d], dict) and "local_path" in data[d]: - # partly imitate some of the business logic happening on the + # partly imitate some of the business logic happening on the # server side of shotgun when a file/link entity value is created if "local_storage" not in data[d]: data[d]["local_storage"] = {"id": 0, "name": "auto_generated_by_mockgun", "type": "LocalStorage"} @@ -349,7 +352,7 @@ def create(self, entity_type, data, return_fields=None): data[d]["local_path_windows"] = data[d]["local_path"] if "local_path_mac" not in data[d]: data[d]["local_path_mac"] = data[d]["local_path"] - + self._validate_entity_type(entity_type) self._validate_entity_data(entity_type, data) self._validate_entity_fields(entity_type, return_fields) @@ -358,14 +361,14 @@ def create(self, entity_type, data, return_fields=None): next_id = max(self._db[entity_type]) + 1 except ValueError: next_id = 1 - + row = self._get_new_row(entity_type) - - self._update_row(entity_type, row, data) + + self._update_row(entity_type, row, data) row["id"] = next_id - + self._db[entity_type][next_id] = row - + if return_fields is None: result = dict((field, self._get_field_from_row(entity_type, row, field)) for field in data) else: @@ -373,7 +376,7 @@ def create(self, entity_type, data, return_fields=None): result["type"] = row["type"] result["id"] = row["id"] - + return result def update(self, entity_type, entity_id, data): @@ -389,28 +392,28 @@ def update(self, entity_type, entity_id, data): def delete(self, entity_type, entity_id): self._validate_entity_type(entity_type) self._validate_entity_exists(entity_type, entity_id) - + row = self._db[entity_type][entity_id] if not row["__retired"]: row["__retired"] = True return True else: return False - + def revive(self, entity_type, entity_id): self._validate_entity_type(entity_type) self._validate_entity_exists(entity_type, entity_id) - + row = self._db[entity_type][entity_id] if row["__retired"]: row["__retired"] = False return True else: return False - + def upload(self, entity_type, entity_id, path, field_name=None, display_name=None, tag_list=None): raise NotImplementedError - + def upload_thumbnail(self, entity_type, entity_id, path, **kwargs): pass @@ -420,7 +423,7 @@ def upload_thumbnail(self, entity_type, entity_id, path, **kwargs): def _validate_entity_type(self, entity_type): if entity_type not in self._schema: raise ShotgunError("%s is not a valid entity" % entity_type) - + def _validate_entity_data(self, entity_type, data): if "id" in data or "type" in data: raise ShotgunError("Can't set id or type on create or update") @@ -428,11 +431,11 @@ def _validate_entity_data(self, entity_type, data): self._validate_entity_fields(entity_type, data.keys()) for field, item in data.items(): - + if item is None: # none is always ok continue - + field_info = self._schema[entity_type][field] if field_info["data_type"]["value"] == "multi_entity": @@ -444,8 +447,8 @@ def _validate_entity_data(self, entity_type, data): raise ShotgunError("%s.%s is of type multi-entity, but an item in data %s does not contain 'type' and 'id'" % (entity_type, field, item)) elif item and any(sub_item["type"] not in field_info["properties"]["valid_types"]["value"] for sub_item in item): raise ShotgunError("%s.%s is of multi-type entity, but an item in data %s has an invalid type (expected one of %s)" % (entity_type, field, item, field_info["properties"]["valid_types"]["value"])) - - + + elif field_info["data_type"]["value"] == "entity": if not isinstance(item, dict): raise ShotgunError("%s.%s is of type entity, but data %s is not a dictionary" % (entity_type, field, item)) @@ -469,8 +472,8 @@ def _validate_entity_data(self, entity_type, data): "status_list": basestring, "url": dict}[sg_type] except KeyError: - raise ShotgunError("Field %s.%s: Handling for Shotgun type %s is not implemented" % (entity_type, field, sg_type)) - + raise ShotgunError("Field %s.%s: Handling for Shotgun type %s is not implemented" % (entity_type, field, sg_type)) + if not isinstance(item, python_type): raise ShotgunError("%s.%s is of type %s, but data %s is not of type %s" % (entity_type, field, type(item), sg_type, python_type)) @@ -776,7 +779,7 @@ def _update_row(self, entity_type, row, data): row[field] = [{"type": item["type"], "id": item["id"]} for item in data[field]] else: row[field] = data[field] - + def _validate_entity_exists(self, entity_type, entity_id): if entity_id not in self._db[entity_type]: From 7391cbf320c5452d2430c17a2b426f7be7c1e921 Mon Sep 17 00:00:00 2001 From: Neil Grey Date: Tue, 20 Feb 2018 11:17:37 +0100 Subject: [PATCH 042/245] [docs] Fixing quotes typo in introduction example --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index ac6184014..13afa74f2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -27,7 +27,7 @@ Quicktimes, etc. sg = shotgun_api3.Shotgun("https://piedpiper.shotgunstudio.com", login="rhendriks", password="c0mPre$Hi0n") - sg.find("Shot", filters=[["sg_status_list", "is", "ip"]], fields=["code", "sg_status_list]) + sg.find("Shot", filters=[["sg_status_list", "is", "ip"]], fields=["code", "sg_status_list"]) **Output**:: From 2909f88c8771fd91e40ab9a1e35aa39f728b4e9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manne=20=C3=96hrstr=C3=B6m?= Date: Thu, 15 Mar 2018 11:33:17 +0000 Subject: [PATCH 043/245] [minor] updated python requirements. Support for python versions older than 2.6 were discontinued in April 2017, but we didn't update the readme file at the time. --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cd15c0baa..8272db41f 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,11 @@ The latest version can always be found at http://github.com/shotgunsoftware/pyth ## Minimum Requirements * Shotgun server v2.4.12+. -* Python v2.4 - v2.7. +* Python v2.6 - v2.7. ## High Performance Requirements -* For Python 2.4 and 2.5, install [simplejson 2.0.9](http://pypi.python.org/pypi/simplejson/2.0.9) -* For Python 2.6 and higher, install [simplejson 2.1.6](http://pypi.python.org/pypi/simplejson/2.1.6) +* Install [simplejson 2.1.6](http://pypi.python.org/pypi/simplejson/2.1.6) ## Documentation Tutorials and detailed documentation about the Python API are available at http://developer.shotgunsoftware.com/python-api). From b0f875d0f145230b0f476909dbd7ac27b6ab0aa8 Mon Sep 17 00:00:00 2001 From: Mike De Wolfe Date: Thu, 15 Mar 2018 12:44:45 -0400 Subject: [PATCH 044/245] SG-1279 Malware Status (#167) Adds handling for status codes returned when a file is pending, or failed, a malware scan. --- shotgun_api3/shotgun.py | 7 +++++++ tests/test_api_long.py | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index a23278e7a..7c968c4b8 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2512,6 +2512,13 @@ def download_attachment(self, attachment=False, file_path=None, attachment_id=No match = re.search('(.*)', xml) if match: err += ' - %s' % (match.group(1)) + elif e.code == 409 or e.code == 410: + # we may be dealing with a file that is pending/failed a malware scan, e.g: + # 409: This file is undergoing a malware scan, please try again in a few minutes + # 410: File scanning has detected malware and the file has been quarantined + lines = e.readlines() + if lines: + err += "\n%s\n" % ''.join(lines) raise ShotgunFileDownloadError(err) else: if file_path: diff --git a/tests/test_api_long.py b/tests/test_api_long.py index a5fb21f85..12419ea78 100644 --- a/tests/test_api_long.py +++ b/tests/test_api_long.py @@ -6,6 +6,8 @@ import base import random import shotgun_api3 +import os +import time class TestShotgunApiLong(base.LiveTestBase): @@ -143,6 +145,5 @@ def test_schema_with_project(self): self.assertTrue('user' in schema) self.assertTrue('visible' in schema['user']) - if __name__ == '__main__': base.unittest.main() From 1aea8b9ab51a2e3d2fb09153b18e82b3fab7cc37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 20 Mar 2018 08:10:04 -0400 Subject: [PATCH 045/245] For #46997, fix connect false (#168) Implemented lazy-loading of records_per_page so we can honor the `connect=False` flag in the `__init__`. --- shotgun_api3/lib/mockgun/mockgun.py | 2 +- shotgun_api3/shotgun.py | 24 ++++++++++++++++++------ tests/test_client.py | 5 ----- tests/tests_unit.py | 0 4 files changed, 19 insertions(+), 12 deletions(-) mode change 100755 => 100644 tests/tests_unit.py diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index 44ba35414..1122c4136 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -190,7 +190,7 @@ def __init__(self, # these settings won't make sense for mockgun, but # having them present means code and get and set them # they way they would expect to in the real API. - self.config = _Config() + self.config = _Config(self) # load in the shotgun schema to associate with this Shotgun (schema_path, schema_entity_path) = self.get_schema_paths() diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 7c968c4b8..01847a680 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -331,7 +331,11 @@ class _Config(object): Container for the client configuration. """ - def __init__(self): + def __init__(self, sg): + """ + :param sg: Shotgun connection. + """ + self._sg = sg self.max_rpc_attempts = 3 # From http://docs.python.org/2.6/library/httplib.html: # If the optional timeout parameter is given, blocking operations @@ -340,7 +344,7 @@ def __init__(self): self.timeout_secs = None self.api_ver = 'api3' self.convert_datetimes_to_utc = True - self.records_per_page = 500 + self._records_per_page = None self.api_key = None self.script_name = None self.user_login = None @@ -371,6 +375,17 @@ def __init__(self): self.authorization = None self.no_ssl_validation = False + @property + def records_per_page(self): + """ + The records per page value from the server. + """ + if self._records_per_page is None: + # Check for api_max_entities_per_page in the server info and change the record per page + # value if it is supplied. + self._records_per_page = self._sg.server_info.get('api_max_entities_per_page') or 500 + return self._records_per_page + class Shotgun(object): """ @@ -519,7 +534,7 @@ def __init__(self, if connect: raise ValueError("must provide login/password, session_token or script_name/api_key") - self.config = _Config() + self.config = _Config(self) self.config.api_key = api_key self.config.script_name = script_name self.config.user_login = login @@ -597,9 +612,6 @@ def __init__(self, if connect: self.server_caps - # Check for api_max_entities_per_page in the server info and change the record per page value if it is supplied. - self.config.records_per_page = self.server_info.get('api_max_entities_per_page') or self.config.records_per_page - # When using auth_token in a 2FA scenario we need to switch to session-based # authentication because the auth token will no longer be valid after a first use. if self.config.auth_token is not None: diff --git a/tests/test_client.py b/tests/test_client.py index e3e85d401..5f83cac82 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -132,11 +132,6 @@ def auth_args(): self.assertRaises(api.Fault, self.sg.delete, "FakeType", 1) self.assertEqual(my_uuid, auth_args()["session_uuid"]) - def test_config(self): - """Client config can be created""" - x = api.shotgun._Config() - self.assertTrue(x is not None) - def test_url(self): """Server url is parsed correctly""" login = self.human_user['login'] diff --git a/tests/tests_unit.py b/tests/tests_unit.py old mode 100755 new mode 100644 From 8c2584b150e931624f1c66ab5bc4e26a1cd81155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Wed, 21 Mar 2018 15:30:34 -0400 Subject: [PATCH 046/245] For #46920, custom CA certs for file transfer (#171) This allows to upload and download files from local Shotgun sites using HTTPS with a custom certificate authority certificate. --- shotgun_api3/shotgun.py | 59 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 01847a680..e3895f7e8 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -46,6 +46,7 @@ import urllib2 # used for image upload import urlparse import shutil # used for attachment download +import httplib # Used for secure file upload. # use relative import for versions >=2.5 and package import for python versions <2.5 if (sys.version_info[0] > 2) or (sys.version_info[0] == 2 and sys.version_info[1] >= 6): @@ -3034,11 +3035,15 @@ def _build_opener(self, handler): """ Build urllib2 opener with appropriate proxy handler. """ + handlers = [] + if self.__ca_certs and not NO_SSL_VALIDATION: + handlers.append(CACertsHTTPSHandler(self.__ca_certs)) + if self.config.proxy_handler: - opener = urllib2.build_opener(self.config.proxy_handler, handler) - else: - opener = urllib2.build_opener(handler) - return opener + handlers.append(self.config.proxy_handler) + + handlers.append(handler) + return urllib2.build_opener(*handlers) def _turn_off_ssl_validation(self): """ @@ -3810,8 +3815,52 @@ def _send_form(self, url, params): return result -# Helpers from the previous API, left as is. +class CACertsHTTPSConnection(httplib.HTTPConnection): + """" + This class allows to create an HTTPS connection that uses the custom certificates + passed in. + """ + + default_port = httplib.HTTPS_PORT + + def __init__(self, *args, **kwargs): + """ + :param args: Positional arguments passed down to the base class. + :param ca_certs: Path to the custom CA certs file. + :param kwargs: Keyword arguments passed down to the bas class + """ + # Pop that argument, + self.__ca_certs = kwargs.pop("ca_certs") + httplib.HTTPConnection.__init__(self, *args, **kwargs) + + def connect(self): + "Connect to a host on a given (SSL) port." + httplib.HTTPConnection.connect(self) + # Now that the regular HTTP socket has been created, wrap it with our SSL certs. + self.sock = ssl.wrap_socket( + self.sock, + ca_certs=self.__ca_certs, + cert_reqs=ssl.CERT_REQUIRED + ) + + +class CACertsHTTPSHandler(urllib2.HTTPSHandler): + """ + Handler that ensures https connections are created with the custom CA certs. + """ + def __init__(self, cacerts): + urllib2.HTTPSHandler.__init__(self) + self.__ca_certs = cacerts + + def https_open(self, req): + return self.do_open(self.create_https_connection, req) + + def create_https_connection(self, *args, **kwargs): + return CACertsHTTPSConnection(*args, ca_certs=self.__ca_certs, **kwargs) + + +# Helpers from the previous API, left as is. # Based on http://code.activestate.com/recipes/146306/ class FormPostHandler(urllib2.BaseHandler): """ From 21dc3a946505c20884a4558051080ed6fe8a02bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Thu, 22 Mar 2018 15:33:17 -0400 Subject: [PATCH 047/245] Bumps version to development version. This should have been done the last time we released. --- HISTORY.rst | 7 +++++++ setup.py | 2 +- shotgun_api3/shotgun.py | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 620b50eea..acd9f74c0 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,13 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.0.36.dev (TBD) +===================== + +- Fixes an error where ``connect=False`` during ``__init__`` would still connect to Shotgun. +- Adds support for ``SHOTGUN_API_CACERTS`` when uploading and downloading files. +- Properly handles failed downloads due to malware scanning. + v3.0.35 (2017 December 8) ===================== diff --git a/setup.py b/setup.py index 44faa0d2b..e184eae20 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.35', + version='3.0.36.dev', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index e3895f7e8..d90f5b04b 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.35" +__version__ = "3.0.36.dev" # ---------------------------------------------------------------------------- # Errors From 4b5764b726b3f9d700cc36c55c3a0403edd3f80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Fri, 23 Mar 2018 09:20:11 -0400 Subject: [PATCH 048/245] For #46904, site wide tk-config-default2 (#172) Adds support for a None entity link during sub-entity searches in Mockgun and PEP8ed mockgun.py --- shotgun_api3/lib/mockgun/mockgun.py | 90 +++++++++++++++++++---------- tests/test_mockgun.py | 14 ++++- 2 files changed, 72 insertions(+), 32 deletions(-) diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index 1122c4136..d3c73c865 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -116,7 +116,7 @@ import datetime -from ... import sg_timezone, ShotgunError +from ... import ShotgunError from ...shotgun import _Config from .errors import MockgunError from .schema import SchemaFactory @@ -220,7 +220,6 @@ def __init__(self, ################################################################################################### # public API methods - def get_session_token(self): return "bogus_session_token" @@ -245,15 +244,16 @@ def schema_field_read(self, entity_type, field_name=None): else: return dict((k, v) for k, v in self._schema[entity_type].items() if k == field_name) - - def find(self, entity_type, filters, fields=None, order=None, filter_operator=None, limit=0, retired_only=False, page=0): - + def find( + self, entity_type, filters, fields=None, order=None, filter_operator=None, + limit=0, retired_only=False, page=0 + ): self.finds += 1 self._validate_entity_type(entity_type) # do not validate custom fields - this makes it hard to mock up a field quickly - #self._validate_entity_fields(entity_type, fields) + # self._validate_entity_fields(entity_type, fields) # FIXME: This should be refactored so that we can use the complex filer # style in nested filter operations. @@ -271,10 +271,10 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No if len(f["values"]) != 1: # {'path': 'id', 'relation': 'in', 'values': [1,2,3]} --> ["id", "in", [1,2,3]] - resolved_filters.append([ f["path"], f["relation"], f["values"] ]) + resolved_filters.append([f["path"], f["relation"], f["values"]]) else: # {'path': 'id', 'relation': 'is', 'values': [3]} --> ["id", "is", 3] - resolved_filters.append([ f["path"], f["relation"], f["values"][0] ]) + resolved_filters.append([f["path"], f["relation"], f["values"][0]]) else: # traditiona style sg filters @@ -315,9 +315,14 @@ def find(self, entity_type, filters, fields=None, order=None, filter_operator=No return val - - def find_one(self, entity_type, filters, fields=None, order=None, filter_operator=None, retired_only=False): - results = self.find(entity_type, filters, fields=fields, order=order, filter_operator=filter_operator, retired_only=retired_only) + def find_one( + self, entity_type, filters, fields=None, order=None, filter_operator=None, + retired_only=False + ): + results = self.find( + entity_type, filters, fields=fields, + order=order, filter_operator=filter_operator, retired_only=retired_only + ) return results[0] if results else None def batch(self, requests): @@ -440,22 +445,44 @@ def _validate_entity_data(self, entity_type, data): if field_info["data_type"]["value"] == "multi_entity": if not isinstance(item, list): - raise ShotgunError("%s.%s is of type multi_entity, but data %s is not a list" % (entity_type, field, item)) + raise ShotgunError( + "%s.%s is of type multi_entity, but data %s is not a list" % + (entity_type, field, item) + ) elif item and any(not isinstance(sub_item, dict) for sub_item in item): - raise ShotgunError("%s.%s is of type multi_entity, but data %s contains a non-dictionary" % (entity_type, field, item)) + raise ShotgunError( + "%s.%s is of type multi_entity, but data %s contains a non-dictionary" % + (entity_type, field, item) + ) elif item and any("id" not in sub_item or "type" not in sub_item for sub_item in item): - raise ShotgunError("%s.%s is of type multi-entity, but an item in data %s does not contain 'type' and 'id'" % (entity_type, field, item)) - elif item and any(sub_item["type"] not in field_info["properties"]["valid_types"]["value"] for sub_item in item): - raise ShotgunError("%s.%s is of multi-type entity, but an item in data %s has an invalid type (expected one of %s)" % (entity_type, field, item, field_info["properties"]["valid_types"]["value"])) - + raise ShotgunError( + "%s.%s is of type multi-entity, but an item in data %s does not contain 'type' and 'id'" % + (entity_type, field, item) + ) + elif item and any( + sub_item["type"] not in field_info["properties"]["valid_types"]["value"] for sub_item in item + ): + raise ShotgunError( + "%s.%s is of multi-type entity, but an item in data %s has an invalid type (expected one of %s)" + % (entity_type, field, item, field_info["properties"]["valid_types"]["value"]) + ) elif field_info["data_type"]["value"] == "entity": if not isinstance(item, dict): - raise ShotgunError("%s.%s is of type entity, but data %s is not a dictionary" % (entity_type, field, item)) + raise ShotgunError( + "%s.%s is of type entity, but data %s is not a dictionary" % + (entity_type, field, item) + ) elif "id" not in item or "type" not in item: - raise ShotgunError("%s.%s is of type entity, but data %s does not contain 'type' and 'id'" % (entity_type, field, item)) - #elif item["type"] not in field_info["properties"]["valid_types"]["value"]: - # raise ShotgunError("%s.%s is of type entity, but data %s has an invalid type (expected one of %s)" % (entity_type, field, item, field_info["properties"]["valid_types"]["value"])) + raise ShotgunError( + "%s.%s is of type entity, but data %s does not contain 'type' and 'id'" + % (entity_type, field, item) + ) + # elif item["type"] not in field_info["properties"]["valid_types"]["value"]: + # raise ShotgunError( + # "%s.%s is of type entity, but data %s has an invalid type (expected one of %s)" % + # (entity_type, field, item, field_info["properties"]["valid_types"]["value"]) + # ) else: try: @@ -472,10 +499,16 @@ def _validate_entity_data(self, entity_type, data): "status_list": basestring, "url": dict}[sg_type] except KeyError: - raise ShotgunError("Field %s.%s: Handling for Shotgun type %s is not implemented" % (entity_type, field, sg_type)) + raise ShotgunError( + "Field %s.%s: Handling for Shotgun type %s is not implemented" % + (entity_type, field, sg_type) + ) if not isinstance(item, python_type): - raise ShotgunError("%s.%s is of type %s, but data %s is not of type %s" % (entity_type, field, type(item), sg_type, python_type)) + raise ShotgunError( + "%s.%s is of type %s, but data %s is not of type %s" % + (entity_type, field, type(item), sg_type, python_type) + ) # TODO: add check for correct timezone @@ -641,6 +674,9 @@ def _get_field_from_row(self, entity_type, row, field): sub_field_value = self._get_field_from_row(entity_type2, entity, field3) values.append(sub_field_value) return values + # The field is not set, so return None. + elif field_value is None: + return None # not multi entity, must be entity. elif not isinstance(field_value, dict): raise ShotgunError("Invalid deep query field %s.%s" % (entity_type, field)) @@ -652,7 +688,7 @@ def _get_field_from_row(self, entity_type, row, field): # ok so looks like the value is an entity link # e.g. db contains: {"sg_sequence": {"type":"Sequence", "id": 123 } } - linked_row = self._db[ field_value["type"] ][ field_value["id"] ] + linked_row = self._db[field_value["type"]][field_value["id"]] return self._get_field_from_row(entity_type2, linked_row, field3) else: @@ -769,7 +805,6 @@ def _row_matches_filters(self, entity_type, row, filters, filter_operator, retir else: raise ShotgunError("%s is not a valid filter operator" % filter_operator) - def _update_row(self, entity_type, row, data): for field in data: field_type = self._get_field_type(entity_type, field) @@ -780,11 +815,6 @@ def _update_row(self, entity_type, row, data): else: row[field] = data[field] - def _validate_entity_exists(self, entity_type, entity_id): if entity_id not in self._db[entity_type]: raise ShotgunError("No entity of type %s exists with id %s" % (entity_type, entity_id)) - - - - diff --git a/tests/test_mockgun.py b/tests/test_mockgun.py index 5a5d34117..2bd4ae108 100644 --- a/tests/test_mockgun.py +++ b/tests/test_mockgun.py @@ -148,12 +148,12 @@ def setUp(self): """ self._mockgun = Mockgun("https://test.shotgunstudio.com", login="user", password="1234") - self._project_link = self._mockgun.create("Project", {"name": "project"}) + self._project_link = self._mockgun.create("Project", {"name": "project", "archived": False}) # This entity will ensure that a populated link field will be comparable. self._mockgun.create( "PipelineConfiguration", - {"code": "with_project", "project": self._project_link} + {"code": "with_project", "project": self._project_link, } ) # This entity will ensure that an unpopulated link field will be comparable. @@ -180,6 +180,16 @@ def test_searching_for_initialized_entity_field(self): items = self._mockgun.find("PipelineConfiguration", [["project", "is_not", self._project_link]]) self.assertEqual(len(items), 1) + def test_find_entity_with_none_link(self): + """ + Make sure that we can search for sub entity fields on entities that have the field not set. + """ + # The pipeline configuration without_project doesn't have the project field set, so we're expecting + # it to not be returned here. + items = self._mockgun.find("PipelineConfiguration", [["project.Project.archived", "is", False]]) + self.assertEqual(len(items), 1) + self.assertEqual(items[0]["id"], self._project_link["id"]) + class TestTextFieldOperators(TestBaseWithExceptionTests): """ From 9af9315dbaf69b838d28f96d085360457f8a6a23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 3 Apr 2018 13:13:33 -0400 Subject: [PATCH 049/245] Official release v3.0.36. --- setup.py | 2 +- shotgun_api3/shotgun.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index e184eae20..f3f7aa96e 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.36.dev', + version='3.0.36', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index d90f5b04b..a3e8c1d20 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.36.dev" +__version__ = "3.0.36" # ---------------------------------------------------------------------------- # Errors From edce21b8d0d15e5d462e0670499cdf64dfede091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 3 Apr 2018 13:17:44 -0400 Subject: [PATCH 050/245] Updated history. --- HISTORY.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HISTORY.rst b/HISTORY.rst index acd9f74c0..8d2bcaaa0 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,7 +4,7 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. -v3.0.36.dev (TBD) +v3.0.36 ===================== - Fixes an error where ``connect=False`` during ``__init__`` would still connect to Shotgun. From 2704880ae97b0fa4b771a9f7ea0d51915e75e363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Mon, 9 Apr 2018 14:38:03 -0400 Subject: [PATCH 051/245] For #47048, setup CI (#173) Beefs up the CI around the API: - HoundCI will do PEP8 validation - AppVeyor will do Windows builds - coveralls.io will offer code coverage - badges feature more prominently now on the README. --- .coveragerc | 23 +++++++++++++++--- .flake8 | 49 +++++++++++++++++++++++++++++++++++++++ .hound.yml | 16 +++++++++++++ .travis.yml | 5 ++-- README.md | 11 ++++++--- appveyor.yml | 39 +++++++++++++++++++++++++++++++ tests/ci_requirements.txt | 2 ++ tests/run_appveyor.bat | 17 ++++++++++++++ tests/test_api.py | 13 ++++++++++- 9 files changed, 166 insertions(+), 9 deletions(-) create mode 100644 .flake8 create mode 100644 .hound.yml create mode 100644 appveyor.yml create mode 100644 tests/ci_requirements.txt create mode 100644 tests/run_appveyor.bat diff --git a/.coveragerc b/.coveragerc index 3e35ad8a5..5878223d2 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,3 +1,20 @@ -[report] -source = shotgun_api3 -omit = shotgun_api3/lib/* +# Copyright (c) 2018 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. +# +# coverage configuration - used by https://coveralls.io/ integration +# +# + +[run] +source=shotgun_api3 +omit= + shotgun_api3/lib/httplib2/* + shotgun_api3/lib/simplejson/* + shotgun_api3/lib/xmlrpclib.py diff --git a/.flake8 b/.flake8 new file mode 100644 index 000000000..bbe740dfb --- /dev/null +++ b/.flake8 @@ -0,0 +1,49 @@ +# Copyright (c) 2018 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + +# Flake 8 PEP and lint configuration - https://gitlab.com/pycqa/flake8 +# +# This defines the official lint and PEP8 rules for this repository +# +# You can run this locally by doing pep install flake8 and then +# >flake8 /path/to/core +# +# This is also used by the hound CI - see the .hound.yml config file. +# +# +[flake8] + +# things we don't want to lint +exclude = + .git, + .flake8, + .gitignore, + .travis.yml, + .cache, + .eggs, + *.rst, + *.yml, + *.pyc, + *.pyo, + *.egg-info, + __pycache__, + # Those are our third parties, do not lint them! + shotgun_api3/lib/httplib2/*.py, + shotgun_api3/lib/simplejson/*.py, + shotgun_api3/lib/xmlrpclib.py + +# exceptions +# +# E501 line too long (112 > 79 characters) +# E402 module level import not top of file +# E999 SyntaxError: invalid syntax (hack for hound CI which runs python 3.x) + +ignore = E501, E402, E999 + diff --git a/.hound.yml b/.hound.yml new file mode 100644 index 000000000..18025a112 --- /dev/null +++ b/.hound.yml @@ -0,0 +1,16 @@ +# Copyright (c) 2017 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + +# https://houndci.com configuration file for linting and PEP8 + +python: + enabled: true + config_file: .flake8 + diff --git a/.travis.yml b/.travis.yml index 7caeb2ff6..d8bfa73f0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,12 @@ python: - "2.7" # command to install dependencies install: - - pip install nose + - pip install -r tests/ci_requirements.txt before_script: - cp ./tests/example_config ./tests/config # command to run tests -script: nosetests -v +script: coverage run -m nose +after_success: coveralls notifications: email: - api@shotgunsoftware.com diff --git a/README.md b/README.md index 8272db41f..761006f52 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +[![VFX Platform](https://img.shields.io/badge/vfxplatform-2018-yellow.svg)](http://www.vfxplatform.com/) +[![Reference Documentation](http://img.shields.io/badge/doc-reference-blue.svg)](http://developer.shotgunsoftware.com/python-api) +[![Build Status Linux](https://secure.travis-ci.org/shotgunsoftware/python-api.svg?branch=master)](http://travis-ci.org/shotgunsoftware/python-api) +[![Build status Windows](https://ci.appveyor.com/api/projects/status/slvw7u4jatvdly98/branch/master?svg=true +)](https://ci.appveyor.com/project/jfboismenu/python-api/branch/master) +[![Coverage Status](https://coveralls.io/repos/github/shotgunsoftware/python-api/badge.svg?branch=master)](https://coveralls.io/github/shotgunsoftware/python-api?branch=master) +[![Linting](https://img.shields.io/badge/PEP8%20by-Hound%20CI-a873d1.svg)](https://houndci.com) + # Shotgun Python API Shotgun provides a simple Python-based API for accessing Shotgun and integrating with other tools. This is the official API that is maintained by Shotgun Software (support@shotgunsoftware.com) @@ -32,9 +40,6 @@ You can see the [full history of the Python API on the documentation site](http: Integration and unit tests are provided. -[![Build Status](https://secure.travis-ci.org/shotgunsoftware/python-api.svg?branch=master)](http://travis-ci.org/shotgunsoftware/python-api) - - - All tests require the [nose unit testing tools](http://nose.readthedocs.org), and a `tests/config` file (you can copy an example from `tests/example_config`). - Tests can be run individually like this: `nosetest tests/test_client.py` - `test_client` and `tests_unit` use mock server interaction and do not require a Shotgun instance to be available (no modifications to `tests/config` are necessary). diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 000000000..bd71103bf --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,39 @@ +# Copyright (c) 2017 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + +# https://www.appveyor.com/ Windows CI configuration file. + +environment: + matrix: + - PYTHON: "C:\\Python27" + + # To update these values, visit AppVeyor's site, click the user icon and scroll down to Encrypt Data. + SG_SERVER_URL: + secure: lIYAxmyz5GEvnbxqE1pAoNuU5+04RYsSzfjRxjqV7vI= + SG_HUMAN_LOGIN: appveyor + SG_HUMAN_NAME: App Veyor + SG_HUMAN_PASSWORD: + secure: 0/BofzMkXtzwtRqzC94FHt3lcyMBG0rr2w0rUropeT4= + SG_SCRIPT_NAME: python-api-test + SG_API_KEY: + secure: cTW+pBjl1H17hsjDOvLaspqkc3H9juXfOhoXMvdcA2l3b5FQeJVYUBWaJUxmqTw9gEzAHmUS6R4WVvw07IWOQ9on8UFHsHqv3JkL2Ji/Oeo= + SG_PROJECT_NAME: SG unittest project for AppVeyor + +build: off + +test_script: + # Put your test command here. + # If you don't need to build C extensions on 64-bit Python 3.3 or 3.4, + # you can remove "build.cmd" from the front of the command, as it's + # only needed to support those cases. + # Note that you must use the environment variable %PYTHON% to refer to + # the interpreter you're using - Appveyor does not do anything special + # to put the Python version you want to use on PATH. + - "tests\\run_appveyor.bat" diff --git a/tests/ci_requirements.txt b/tests/ci_requirements.txt new file mode 100644 index 000000000..8bde5710a --- /dev/null +++ b/tests/ci_requirements.txt @@ -0,0 +1,2 @@ +coveralls==1.1 +nose \ No newline at end of file diff --git a/tests/run_appveyor.bat b/tests/run_appveyor.bat new file mode 100644 index 000000000..7b65b4c82 --- /dev/null +++ b/tests/run_appveyor.bat @@ -0,0 +1,17 @@ +:: Copyright (c) 2018 Shotgun Software Inc. +:: +:: CONFIDENTIAL AND PROPRIETARY +:: +:: This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +:: Source Code License included in this distribution package. See LICENSE. +:: By accessing, using, copying or modifying this work you indicate your +:: agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +:: not expressly granted therein are reserved by Shotgun Software Inc. + +:: +:: This file is run by the appveyor builds. +:: + +copy tests\example_config tests\config +%PYTHON%\Scripts\pip install -r tests/ci_requirements.txt +%PYTHON%\Scripts\nosetests.exe -v diff --git a/tests/test_api.py b/tests/test_api.py index a6bd6aa5f..e83674d43 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -560,7 +560,14 @@ def test_summary_values(self): self.sg.batch(batch_data) self.assertEqual(result['summaries'], count) - self.assertEqual(result['groups'], groups) + # Do not assume the order of the summarized results. + self.assertEqual( + sorted( + result['groups'], + key=lambda x: x["group_name"] + ), + groups + ) def test_ensure_ascii(self): '''test_ensure_ascii tests ensure_unicode flag.''' @@ -1588,6 +1595,10 @@ def test_bad_auth(self): sg = shotgun_api3.Shotgun(server_url, login=login, password='not a real password') self.assertRaises(shotgun_api3.AuthenticationFault, sg.find_one, 'Shot',[]) + # This may trigger an account lockdown. Make sure it is not locked anymore. + user = self.sg.find_one("HumanUser", [["login", "is", login]]) + self.sg.update("HumanUser", user["id"], {"locked_until": None}) + @patch('shotgun_api3.shotgun.Http.request') def test_status_not_200(self, mock_request): response = MagicMock(name="response mock", spec=dict) From f161241e5f3bbb903ccb25ecb52e495f555ee5aa Mon Sep 17 00:00:00 2001 From: Kenny Kwan <37555130+KwanK1@users.noreply.github.com> Date: Fri, 1 Jun 2018 12:45:09 -0400 Subject: [PATCH 052/245] For SG-6337 - Add validation for username/password when Oxygen is enabled (#176) --- shotgun_api3/shotgun.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index a3e8c1d20..b600f059f 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -135,6 +135,13 @@ class UserCredentialsNotAllowedForSSOAuthenticationFault(Fault): """ pass +class UserCredentialsNotAllowedForOxygenAuthenticationFault(Fault): + """ + Exception when the server is configured to use Oxygen. It is not possible to use + a username/password pair to authenticate on such server. + """ + pass + # ---------------------------------------------------------------------------- # API @@ -3384,6 +3391,7 @@ def _response_errors(self, sg_response): ERR_AUTH = 102 # error code for authentication related problems ERR_2FA = 106 # error code when 2FA authentication is required but no 2FA token provided. ERR_SSO = 108 # error code when SSO is activated on the site, preventing the use of username/password for authentication. + ERR_OXYG = 110 # error code when Oxygen is activated on the site, preventing the use of username/password for authentication. if isinstance(sg_response, dict) and sg_response.get("exception"): if sg_response.get("error_code") == ERR_AUTH: @@ -3394,6 +3402,10 @@ def _response_errors(self, sg_response): raise UserCredentialsNotAllowedForSSOAuthenticationFault( sg_response.get("message", "Authentication using username/password is not allowed for an SSO-enabled Shotgun site") ) + elif sg_response.get("error_code") == ERR_OXYG: + raise UserCredentialsNotAllowedForOxygenAuthenticationFault( + sg_response.get("message", "Authentication using username/password is not allowed for an Autodesk Identity enabled Shotgun site") + ) else: # raise general Fault raise Fault(sg_response.get("message", "Unknown Error")) From 387c7bf8513c28279ebc356d9c82d3b3bd192563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Thu, 14 Jun 2018 11:35:12 -0400 Subject: [PATCH 053/245] Ensures the password is properly unquoted for the (#178) --- tests/test_client.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_client.py b/tests/test_client.py index 5f83cac82..72d59a445 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -4,6 +4,7 @@ import base64 import datetime +import urllib import re try: import simplejson as json @@ -147,7 +148,7 @@ def test_url(self): # login:password@domain auth_url = "%s%s@%s" % (self.uri_prefix, login_password, self.domain) sg = api.Shotgun(auth_url, None, None, connect=False) - expected = "Basic " + base64.encodestring(login_password).strip() + expected = "Basic " + base64.encodestring(urllib.unquote(login_password)).strip() self.assertEqual(expected, sg.config.authorization) def test_authorization(self): @@ -167,7 +168,7 @@ def test_authorization(self): args, _ = self.sg._http_request.call_args verb, path, body, headers = args - expected = "Basic " + base64.encodestring(login_password).strip() + expected = "Basic " + base64.encodestring(urllib.unquote(login_password)).strip() self.assertEqual(expected, headers.get("Authorization")) def test_user_agent(self): From e13d30dd6386cfdd5f8bb43a3bd520a74f88a956 Mon Sep 17 00:00:00 2001 From: Brandon Ashworth Date: Mon, 18 Jun 2018 14:49:18 -0700 Subject: [PATCH 054/245] Ticket/sg 4335 pref access via api (#177) * For SG-4335 - Added support for querying a subset of site preferences. * For SG-4335 - Fixed test to only run on the correct versions of Shotgun. * Addressing code review note --- shotgun_api3/shotgun.py | 20 ++++++++++++++ tests/test_api.py | 60 ++++++++++++++++++++++++++++++++++------- 2 files changed, 71 insertions(+), 9 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index b600f059f..4a54e72a6 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -3038,6 +3038,26 @@ def get_session_token(self): return session_token + def preferences_read(self, prefs=None): + """ + Get a subset of the site preferences. + + >>> sg.preferences_read() + { + "pref_name": "pref value" + } + :param list prefs: An optional list of preference names to return. + :returns: Dictionary of preferences and their values. + :rtype: dict + """ + if self.server_caps.version and self.server_caps.version < (7, 10, 0): + raise ShotgunError("preferences_read requires server version 7.10.0 or "\ + "higher, server is %s" % (self.server_caps.version,)) + + prefs = prefs or [] + + return self._call_rpc("preferences_read", { "prefs": prefs }) + def _build_opener(self, handler): """ Build urllib2 opener with appropriate proxy handler. diff --git a/tests/test_api.py b/tests/test_api.py index e83674d43..a5408412a 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -650,6 +650,48 @@ def test_work_schedule(self): work_schedule['2012-01-04'] = {"reason": "USER_EXCEPTION", "working": False, "description": "Artist Holiday"} self.assertEqual(work_schedule, resp) + def test_preferences_read(self): + # Only run the tests on a server with the feature. + if not self.sg.server_caps.version or self.sg.server_caps.version < (7, 10, 0): + return + + # all prefs + resp = self.sg.preferences_read() + + expected = { + 'date_component_order': 'month_day', + 'format_currency_fields_decimal_options': '$1,000.99', + 'format_currency_fields_display_dollar_sign': False, + 'format_currency_fields_negative_options': '- $1,000', + 'format_date_fields': '08/04/22 OR 04/08/22 (depending on the Month order preference)', + 'format_float_fields': '9,999.99', + 'format_float_fields_rounding': '9.999999', + 'format_footage_fields': '10-05', + 'format_number_fields': '1,000', + 'format_time_hour_fields': '12 hour', + 'support_local_storage': False + } + self.assertEqual(expected, resp) + + # all filtered + resp = self.sg.preferences_read(['date_component_order', 'support_local_storage']) + + expected = { + 'date_component_order': 'month_day', + 'support_local_storage': False + } + self.assertEqual(expected, resp) + + # all filtered with invalid pref + resp = self.sg.preferences_read(['date_component_order', 'support_local_storage', 'email_notifications']) + + expected = { + 'date_component_order': 'month_day', + 'support_local_storage': False + } + self.assertEqual(expected, resp) + + class TestDataTypes(base.LiveTestBase): '''Test fields representing the different data types mapped on the server side. @@ -1543,18 +1585,18 @@ def test_following(self): [["id","is",self.task["id"]]], ["project.Project.id"])["project.Project.id"] project_count = 2 if shot_project_id == task_project_id else 1 - result = self.sg.following(self.human_user, + result = self.sg.following(self.human_user, project={"type":"Project", "id":shot_project_id}) self.assertEqual( project_count, len(result) ) - result = self.sg.following(self.human_user, + result = self.sg.following(self.human_user, project={"type":"Project", "id":task_project_id}) self.assertEqual( project_count, len(result) ) - result = self.sg.following(self.human_user, - project={"type":"Project", "id":shot_project_id}, + result = self.sg.following(self.human_user, + project={"type":"Project", "id":shot_project_id}, entity_type="Shot") self.assertEqual( 1, len(result) ) - result = self.sg.following(self.human_user, - project={"type":"Project", "id":task_project_id}, + result = self.sg.following(self.human_user, + project={"type":"Project", "id":task_project_id}, entity_type="Task") self.assertEqual( 1, len(result) ) @@ -1701,7 +1743,7 @@ def test_upload_empty_file(self): path = os.path.abspath(os.path.expanduser(os.path.join(this_dir,"empty.txt"))) self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload, 'Version', 123, path) self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_thumbnail, 'Version', 123, path) - self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, 'Version', + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, 'Version', 123, path) def test_upload_missing_file(self): @@ -1711,7 +1753,7 @@ def test_upload_missing_file(self): path = "/path/to/nowhere/foo.txt" self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload, 'Version', 123, path) self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_thumbnail, 'Version', 123, path) - self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, 'Version', + self.assertRaises(shotgun_api3.ShotgunError, self.sg.upload_filmstrip_thumbnail, 'Version', 123, path) # def test_malformed_response(self): @@ -2525,7 +2567,7 @@ def _has_unicode(data): def _get_path(url): """Returns path component of a url without the sheme, host, query, anchor, or any other - additional elements. + additional elements. For example, the url "https://foo.shotgunstudio.com/page/2128#Shot_1190_sr10101_034" returns "/page/2128" """ From a7d1790b98b02e841361fa318d1a90f41f491de6 Mon Sep 17 00:00:00 2001 From: dallum Date: Sat, 23 Jun 2018 01:27:12 +0100 Subject: [PATCH 055/245] Date change Date change. --- shotgun_api3/shotgun.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 4a54e72a6..5557246fc 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -1,7 +1,7 @@ #!/usr/bin/env python """ ----------------------------------------------------------------------------- - Copyright (c) 2009-2017, Shotgun Software Inc. + Copyright (c) 2009-2018, Shotgun Software Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From d589f4b3240fc9d71aa0738a4afb8eb57c0d2d31 Mon Sep 17 00:00:00 2001 From: Jeffery Beeland Date: Tue, 26 Jun 2018 16:04:07 -0700 Subject: [PATCH 056/245] SG-4483: Handles non-ascii unicode and utf-8 string paths gracefully during upload. (#179) For the various upload-related methods, we now properly support file paths given as unicode, ascii, or utf-8 encoded strings. Any string encoding used that is not supported will result in a sane error message from the api that will aid in debugging the problem. --- shotgun_api3/shotgun.py | 48 +++++++++++++++++++++++++-- "tests/No\303\253l.jpg" | Bin 0 -> 11361 bytes tests/test_api.py | 58 +++++++++++++++++++++++++++++++++ "tests/\343\201\224.shift-jis" | Bin 0 -> 11361 bytes 4 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 "tests/No\303\253l.jpg" create mode 100644 "tests/\343\201\224.shift-jis" diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 5557246fc..27aebdab4 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2251,6 +2251,23 @@ def upload(self, entity_type, entity_id, path, field_name=None, display_name=Non """ # Basic validations of the file to upload. path = os.path.abspath(os.path.expanduser(path or "")) + + # We need to check for string encodings that we aren't going to be able + # to support later in the upload process. If the given path wasn't already + # unicode, we will try to decode it as utf-8, and if that fails then we + # have to raise a sane exception. This will always work for ascii and utf-8 + # encoded strings, but will fail on some others if the string includes non + # ascii characters. + if not isinstance(path, unicode): + try: + path = path.decode("utf-8") + except UnicodeDecodeError: + raise ShotgunError( + "Could not upload the given file path. It is encoded as " + "something other than utf-8 or ascii. To upload this file, " + "it can be string encoded as utf-8, or given as unicode: %s" % path + ) + if not os.path.isfile(path): raise ShotgunError("Path must be a valid file, got '%s'" % path) if os.path.getsize(path) == 0: @@ -2365,10 +2382,27 @@ def _upload_to_sg(self, entity_type, entity_id, path, field_name, display_name, params.update(self._auth_params()) + # If we ended up with a unicode string path, we need to encode it + # as a utf-8 string. If we don't, there's a chance that there will + # will be an attempt later on to encode it as an ascii string, and + # that will fail ungracefully if the path contains any non-ascii + # characters. + # + # On Windows, if the path contains non-ascii characters, the calls + # to open later in this method will fail to find the file if given + # a non-ascii-encoded string path. In that case, we're going to have + # to call open on the unicode path, but we'll use the encoded string + # for everything else. + path_to_open = path + if isinstance(path, unicode): + path = path.encode("utf-8") + if sys.platform != "win32": + path_to_open = path + if is_thumbnail: url = urlparse.urlunparse((self.config.scheme, self.config.server, "/upload/publish_thumbnail", None, None, None)) - params["thumb_image"] = open(path, "rb") + params["thumb_image"] = open(path_to_open, "rb") if field_name == "filmstrip_thumb_image" or field_name == "filmstrip_image": params["filmstrip"] = True @@ -2385,7 +2419,7 @@ def _upload_to_sg(self, entity_type, entity_id, path, field_name, display_name, if tag_list: params["tag_list"] = tag_list - params["file"] = open(path, "rb") + params["file"] = open(path_to_open, "rb") result = self._send_form(url, params) @@ -3929,7 +3963,15 @@ def encode(self, params, files, boundary=None, buffer=None): buffer.write('Content-Disposition: form-data; name="%s"' % key) buffer.write('\r\n\r\n%s\r\n' % value) for (key, fd) in files: - filename = fd.name.split('/')[-1] + # On Windows, it's possible that we were forced to open a file + # with non-ascii characters as unicode. In that case, we need to + # encode it as a utf-8 string to remove unicode from the equation. + # If we don't, the mix of unicode and strings going into the + # buffer can cause UnicodeEncodeErrors to be raised. + filename = fd.name + if isinstance(filename, unicode): + filename = filename.encode("utf-8") + filename = filename.split('/')[-1] content_type = mimetypes.guess_type(filename)[0] content_type = content_type or 'application/octet-stream' file_size = os.fstat(fd.fileno())[stat.ST_SIZE] diff --git "a/tests/No\303\253l.jpg" "b/tests/No\303\253l.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..7a8aaf9677c755850ca6a0419e69de44a9c8a153 GIT binary patch literal 11361 zcmeG?c|cUv*Y~|Q3j@PCfVe+~RTO51ol#^NwoyiK7(mU^;mu-o59ZbMCq4p1Ys9 zo##5+IJvoXhDrcbDi8wz@Bn-)01yzu;2*&H0WJ#zP=WP#!&9*6E*>26$N-E%IQ(o_ zJPQXxxZ!C7;B=LJ6{hEa=iONVMESYWES;r-CX1^qjKyAMv62b}884NklF=$HWiTV; z5P%SJX|ga4!)9IN>7t z0gQtYI0xtQc^+Ism;j0X1Sd2=#?2b56^W ztAl}AwDN#rJ5y3&u^3qnrJ12=v%`c42u7*GXhV5lwrq)^4sm1~7*qz4oib_L7_Euc zEt6v@(jx+;Z9#w_3*Z{92pZNU>*&c5#aAXe%PHZNdf z7-4KFxILrb*)>VvfMt0*SZo21R8~TY5yo&cg#qirtY5jxjX^s!1}4DR#goKh(8%w? zurhyvd4OhCXRm>{g2=s+I{zm$))pQ}wrd{ZnXsAg>$2M*1hGc|rycvDETM#vQ+t#J za5r^+o}d(%;TmCppAoJWIuHwFkk&PQ5UV@%#JS45i3sS);39M{7QpN~}dsv31UKm*)8ieUb}Q3$fTM=MeVsJjOv%Jb|-14Y}*jD=`AVfWO-WoZx{ z06#vPQReihi?6p?9M*eKJd4esH@H{I+!7?ch{Zt}-dYD^$*0Y236uZp_7e`9@t*C1HU7OAm0f@Dmcr8-8I4wd50?)`8;u&ej#1hRG^#?^ zqUGU2-@`1Zve>3)84Y@urF@-@FL0q@%lSIGQtMzBQ9%uDV|rmPbD{5L_o~nSMx%=0 zZVQKVMmq~TXB)aYIEOIC@*xgDguw_+4m3F6hYbV3A%%E82!V&}hllWohwz7oaOeC9 zg);3AjEmci3WCacPf^_kZ zZ@(`l4Z3u3d6G)1vMT5*L&0<#T{3-)hMHbYrRl^OBgqkU@;Z~%L^E2l&SW&(<#p*| zR=6C(2rUtlEDKYeE@rRZS+X=SNj40*7*ZtCB#AUR zRw|QAQ|0k8vMY#TZ8lw{T%D8GRTs>qi@O?CTU#4fn-FKQ=_RtXv^0q{UJ@T43prx# z)69&vF4k-hb4kdd?Uc>Hp65v<5uQ~YOu86q>TH6^>K5Cptz3*c%FSnm8xmW&j*`$u z+C-ZfJG83|HQyyvrE;_PD%NCjbK9BR8mQ4WGRom&HI40Baxb$M-i z7vUzeJ&y`m2xu22F1dDib1akt^`oo2?!Q^y zd4AFw|G6A@KgrqsUuDrjGbf12ZoE>VfcM!-gAo$!@GeLya}~+5v}D)|aWXXAVZ)&* z3JiAGx6`^NPzgP?3o;r=cBIL*6uR7|izze;Xq~tVZTQC~bc(HoSF*nx7*003rIM-D z+UP7jH22>deG=FL37Wgk#z^jOCrj%w&t2?r@j#$^)f(wqT^^Ii~)dpSj zSTW>J(7_uFgy%unSj$)uz8%7W71apFIS95v1tA=QV7(KDei_K)gfkJWGnt{k21hzu zbtWBx4?*~u8V7Rp5rq(*Ut^$aA$$tL;YNqa0Ab`C4m8nP=zQcL4^TKmQ&kX_LRe_i zsG)D4GXnlvE!6jbD|)~T^teG@ps-k{u|6m=ni@jFi(4vLK-U^+hKVhPmr<=v2d|1I ztJXXXI+oZrqf#K?4`*E#?Tr4C*n{t{K-9NR`i-${pJBmAyK&tmyK$CA=%0puc;fkP zT*XQN_B;hZ$miX-@OALkKM#Q2$9uFV7>$=67g+;M#UX>b!vh)IoPQ4Vs4ouH=e{S9 zIZl@)iAFUAU62kNX@|Z5nvA`F5dY(XJ=E%<$1pWrN!w_6Nh8bPD1$%T!0tBd4CpdK z8qD|HW_n2YhsAnGK%jG6LqN3gcMv!!4)`4p1jP480Y~Hoh>0&j3g+&&LO~gH&j3(9 z__A}{Lm1N8_?`$~470f1z`DVKLaiYwhpooR!a)fa{(9pJ0zqFe2!w%X_Zd@4R2 zpNBt(ufQAeSMlBW0sIsEG~SAThj+l&99~2)5lX}osf2M`o+~`Jdmi@u!t;ig zmzUTp&14N< zg`d{%Nx#*8Z~2||>+l!(%lwP{P5z7gxB7qNeV_SxR2rO&O9{vnwmbjX5`9U-SfZuceo=Ju`byQJ@)zF+p^^o!{? zwqI?(m--#%32d*4=aNxB; z!GkgfO&PRo(0hZf4i*g_IoL3G+2HpFe@h0DS)`F%K^`L8LkENwggQdkhaL;PBaRZ6 zisy)Th`$W;3`-5G3|kh~6xJR-I9wGzBYa!<=MjR4)QGBx zFz&FlVdi0t!_LMEW3yswVzzxR$$pBDiKpUM$Dc~@PRL7`nXotEdg9PTI`O5%b4j8kRnpT*O-a8crzG2wwY~&S)3|BbX*1K_N&8ivENA39+mZhqDIgoHjcQM zE>72`uTO6sNsgR6a^1+*jL-~iMq|c>%&<&d=BCWcSwpg>WWAd8L$);Amc1+cmO`$0 zLa{%G$jQ%HkaH|IAh$GkRqj`L;yiucw!HTIr2NP8_ZM&rMi(q8IIA3}q?B8f?W0mg zJu&LgXyNFR(W^#ZD2yqz74B2vs!^(?sxQVwj4_YdQv`~XMN5mmERHIkTKx7{-q_-? ztH*w$mZ@i`kCcc?CY5Y0xv9z4EY_SajV^VRHkJ97O)T3|cB?$6yuQ43oMhY+<31VR zZ@gjr-U<8(WfL|{=y)Xekry7hG%;!7{E25Cje4~1(T^VM_n7gqcPIHy(oT9~GIw(M z2y7PxiY=7zVeDbUB6U+wJM{kq3W7J zVOV9jKBZvF+9|iHi>fzQcN)u$J4_y?$)>l=0p@D+AhVI#oXPg{kef z(Y8%?%>Jl-FB1q4Q%4=qj;9=LH6v?Q*ZfjjR{KVsf1SDR=(Lz=&rZ8MJ#YHUk8>WU z9&efvI%D>XwkNWlSpOvUWW|$BGs9-in|Wzg{;XGKd(N(&{plR(occLG&n=(3Z{EOp zv*ulVD*vf%^L^&q=AV6f_|t2j;XGq_=Ge0d&#rv-_XWBIA1{&~su zU%$ICvaw+UZ$r(7Z#I@~Jo0kt%Ud?}+q7`gZ=21VTVGMXa%fA+mMvQcY+bw!-{#nM z_0@^5p7?jpzxQsB-M)TD@Q#JAf!7?bef#?4*U#)6y|d|!)Hk-j8S&-No;DzBli^&iALk-?87i|Jnil zfs0L(n$8~_cktAqv4@Tw9)0-35Ar@ZcqHq{`yZx%_|8Z2kKXz?_2WICB!9B|XwuPL zpC)~}>sa!!-N#do?>&)rVqf!!=J#4MS`M7dIr+gU<*83jk2&3Zru59YvlGv@p3|MX z@|p3o>z~(re&_tGFSuVU_|osohOY*E)%c$w|Jl)+-1=@?PTSE7B^S7mY9W?-kC~+SY#DC}gASO;oNQ_JrhlGg#_a7kk zheulH`$HJB#~Aoip8JiVn}Pr*wVUXNUjGp=&*u>Y568M*{{_h4>p!tbI~6|udp&zS zxA{O|yE@F4P|-H$x+1Z@ac59VNw~d<;>}%p;inBb8eK$EZg3=%TuQs1AO88l5ZE!W(xcmgG?O zrk1%&H)t;W#0`RP40r8g6NEP#5Uid7^i8bMNSu-q9y} oN1y5)efl-o59ZbMCq4p1Ys9 zo##5+IJvoXhDrcbDi8wz@Bn-)01yzu;2*&H0WJ#zP=WP#!&9*6E*>26$N-E%IQ(o_ zJPQXxxZ!C7;B=LJ6{hEa=iONVMESYWES;r-CX1^qjKyAMv62b}884NklF=$HWiTV; z5P%SJX|ga4!)9IN>7t z0gQtYI0xtQc^+Ism;j0X1Sd2=#?2b56^W ztAl}AwDN#rJ5y3&u^3qnrJ12=v%`c42u7*GXhV5lwrq)^4sm1~7*qz4oib_L7_Euc zEt6v@(jx+;Z9#w_3*Z{92pZNU>*&c5#aAXe%PHZNdf z7-4KFxILrb*)>VvfMt0*SZo21R8~TY5yo&cg#qirtY5jxjX^s!1}4DR#goKh(8%w? zurhyvd4OhCXRm>{g2=s+I{zm$))pQ}wrd{ZnXsAg>$2M*1hGc|rycvDETM#vQ+t#J za5r^+o}d(%;TmCppAoJWIuHwFkk&PQ5UV@%#JS45i3sS);39M{7QpN~}dsv31UKm*)8ieUb}Q3$fTM=MeVsJjOv%Jb|-14Y}*jD=`AVfWO-WoZx{ z06#vPQReihi?6p?9M*eKJd4esH@H{I+!7?ch{Zt}-dYD^$*0Y236uZp_7e`9@t*C1HU7OAm0f@Dmcr8-8I4wd50?)`8;u&ej#1hRG^#?^ zqUGU2-@`1Zve>3)84Y@urF@-@FL0q@%lSIGQtMzBQ9%uDV|rmPbD{5L_o~nSMx%=0 zZVQKVMmq~TXB)aYIEOIC@*xgDguw_+4m3F6hYbV3A%%E82!V&}hllWohwz7oaOeC9 zg);3AjEmci3WCacPf^_kZ zZ@(`l4Z3u3d6G)1vMT5*L&0<#T{3-)hMHbYrRl^OBgqkU@;Z~%L^E2l&SW&(<#p*| zR=6C(2rUtlEDKYeE@rRZS+X=SNj40*7*ZtCB#AUR zRw|QAQ|0k8vMY#TZ8lw{T%D8GRTs>qi@O?CTU#4fn-FKQ=_RtXv^0q{UJ@T43prx# z)69&vF4k-hb4kdd?Uc>Hp65v<5uQ~YOu86q>TH6^>K5Cptz3*c%FSnm8xmW&j*`$u z+C-ZfJG83|HQyyvrE;_PD%NCjbK9BR8mQ4WGRom&HI40Baxb$M-i z7vUzeJ&y`m2xu22F1dDib1akt^`oo2?!Q^y zd4AFw|G6A@KgrqsUuDrjGbf12ZoE>VfcM!-gAo$!@GeLya}~+5v}D)|aWXXAVZ)&* z3JiAGx6`^NPzgP?3o;r=cBIL*6uR7|izze;Xq~tVZTQC~bc(HoSF*nx7*003rIM-D z+UP7jH22>deG=FL37Wgk#z^jOCrj%w&t2?r@j#$^)f(wqT^^Ii~)dpSj zSTW>J(7_uFgy%unSj$)uz8%7W71apFIS95v1tA=QV7(KDei_K)gfkJWGnt{k21hzu zbtWBx4?*~u8V7Rp5rq(*Ut^$aA$$tL;YNqa0Ab`C4m8nP=zQcL4^TKmQ&kX_LRe_i zsG)D4GXnlvE!6jbD|)~T^teG@ps-k{u|6m=ni@jFi(4vLK-U^+hKVhPmr<=v2d|1I ztJXXXI+oZrqf#K?4`*E#?Tr4C*n{t{K-9NR`i-${pJBmAyK&tmyK$CA=%0puc;fkP zT*XQN_B;hZ$miX-@OALkKM#Q2$9uFV7>$=67g+;M#UX>b!vh)IoPQ4Vs4ouH=e{S9 zIZl@)iAFUAU62kNX@|Z5nvA`F5dY(XJ=E%<$1pWrN!w_6Nh8bPD1$%T!0tBd4CpdK z8qD|HW_n2YhsAnGK%jG6LqN3gcMv!!4)`4p1jP480Y~Hoh>0&j3g+&&LO~gH&j3(9 z__A}{Lm1N8_?`$~470f1z`DVKLaiYwhpooR!a)fa{(9pJ0zqFe2!w%X_Zd@4R2 zpNBt(ufQAeSMlBW0sIsEG~SAThj+l&99~2)5lX}osf2M`o+~`Jdmi@u!t;ig zmzUTp&14N< zg`d{%Nx#*8Z~2||>+l!(%lwP{P5z7gxB7qNeV_SxR2rO&O9{vnwmbjX5`9U-SfZuceo=Ju`byQJ@)zF+p^^o!{? zwqI?(m--#%32d*4=aNxB; z!GkgfO&PRo(0hZf4i*g_IoL3G+2HpFe@h0DS)`F%K^`L8LkENwggQdkhaL;PBaRZ6 zisy)Th`$W;3`-5G3|kh~6xJR-I9wGzBYa!<=MjR4)QGBx zFz&FlVdi0t!_LMEW3yswVzzxR$$pBDiKpUM$Dc~@PRL7`nXotEdg9PTI`O5%b4j8kRnpT*O-a8crzG2wwY~&S)3|BbX*1K_N&8ivENA39+mZhqDIgoHjcQM zE>72`uTO6sNsgR6a^1+*jL-~iMq|c>%&<&d=BCWcSwpg>WWAd8L$);Amc1+cmO`$0 zLa{%G$jQ%HkaH|IAh$GkRqj`L;yiucw!HTIr2NP8_ZM&rMi(q8IIA3}q?B8f?W0mg zJu&LgXyNFR(W^#ZD2yqz74B2vs!^(?sxQVwj4_YdQv`~XMN5mmERHIkTKx7{-q_-? ztH*w$mZ@i`kCcc?CY5Y0xv9z4EY_SajV^VRHkJ97O)T3|cB?$6yuQ43oMhY+<31VR zZ@gjr-U<8(WfL|{=y)Xekry7hG%;!7{E25Cje4~1(T^VM_n7gqcPIHy(oT9~GIw(M z2y7PxiY=7zVeDbUB6U+wJM{kq3W7J zVOV9jKBZvF+9|iHi>fzQcN)u$J4_y?$)>l=0p@D+AhVI#oXPg{kef z(Y8%?%>Jl-FB1q4Q%4=qj;9=LH6v?Q*ZfjjR{KVsf1SDR=(Lz=&rZ8MJ#YHUk8>WU z9&efvI%D>XwkNWlSpOvUWW|$BGs9-in|Wzg{;XGKd(N(&{plR(occLG&n=(3Z{EOp zv*ulVD*vf%^L^&q=AV6f_|t2j;XGq_=Ge0d&#rv-_XWBIA1{&~su zU%$ICvaw+UZ$r(7Z#I@~Jo0kt%Ud?}+q7`gZ=21VTVGMXa%fA+mMvQcY+bw!-{#nM z_0@^5p7?jpzxQsB-M)TD@Q#JAf!7?bef#?4*U#)6y|d|!)Hk-j8S&-No;DzBli^&iALk-?87i|Jnil zfs0L(n$8~_cktAqv4@Tw9)0-35Ar@ZcqHq{`yZx%_|8Z2kKXz?_2WICB!9B|XwuPL zpC)~}>sa!!-N#do?>&)rVqf!!=J#4MS`M7dIr+gU<*83jk2&3Zru59YvlGv@p3|MX z@|p3o>z~(re&_tGFSuVU_|osohOY*E)%c$w|Jl)+-1=@?PTSE7B^S7mY9W?-kC~+SY#DC}gASO;oNQ_JrhlGg#_a7kk zheulH`$HJB#~Aoip8JiVn}Pr*wVUXNUjGp=&*u>Y568M*{{_h4>p!tbI~6|udp&zS zxA{O|yE@F4P|-H$x+1Z@ac59VNw~d<;>}%p;inBb8eK$EZg3=%TuQs1AO88l5ZE!W(xcmgG?O zrk1%&H)t;W#0`RP40r8g6NEP#5Uid7^i8bMNSu-q9y} oN1y5)efl Date: Thu, 5 Jul 2018 16:00:50 -0700 Subject: [PATCH 057/245] SG-4483: Fixes a problem with a test fixture causing pip install problems on Windows. (#180) There was a file included in the tests used the check compatibility with a non-standard string encoding and non-ascii characters in file names that caused problems with pip install on Windows. The file has been removed from the repo, and is now created by the relevant test on the fly. --- HISTORY.rst | 6 ++++++ tests/test_api.py | 18 ++++++++++++++++++ "tests/\343\201\224.shift-jis" | Bin 11361 -> 0 bytes 3 files changed, 24 insertions(+) delete mode 100644 "tests/\343\201\224.shift-jis" diff --git a/HISTORY.rst b/HISTORY.rst index 8d2bcaaa0..e4c5faa9c 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,12 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.0.37 +===================== + +- Proper support added for unicode and utf-8 string paths given to upload methods, and a sane error is raised when an unusable string encoding is used. +- Adds support for querying preferences from Shotgun via the new preferences_read method. + v3.0.36 ===================== diff --git a/tests/test_api.py b/tests/test_api.py index b84f35dcb..a4f566e5c 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -252,6 +252,23 @@ def test_upload_download(self): # Make sure that non-utf-8 encoded paths raise when they can't be # converted to utf-8. + # + # We need to touch the file we're going to test with first. We can't + # bundle a file with this filename in the repo due to some pip install + # problems on Windows. Note that the path below is utf-8 encoding of + # what we'll eventually encode as shift-jis. + file_path_s = os.path.join(this_dir, "./\xe3\x81\x94.shift-jis") + file_path_u = file_path_s.decode("utf-8") + if sys.platform.startswith("win"): + fh = open(file_path_u, "w") + else: + fh = open(file_path_s, "w") + + try: + fh.write("This is just a test file with some random data in it.") + finally: + fh.close() + u_path = os.path.abspath( os.path.expanduser( glob.glob(os.path.join(unicode(this_dir), u'*.shift-jis'))[0] @@ -278,6 +295,7 @@ def test_upload_download(self): # cleanup os.remove(file_path) + os.remove(u_path) def test_upload_thumbnail_in_create(self): """Upload a thumbnail via the create method""" diff --git "a/tests/\343\201\224.shift-jis" "b/tests/\343\201\224.shift-jis" deleted file mode 100644 index 7a8aaf9677c755850ca6a0419e69de44a9c8a153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11361 zcmeG?c|cUv*Y~|Q3j@PCfVe+~RTO51ol#^NwoyiK7(mU^;mu-o59ZbMCq4p1Ys9 zo##5+IJvoXhDrcbDi8wz@Bn-)01yzu;2*&H0WJ#zP=WP#!&9*6E*>26$N-E%IQ(o_ zJPQXxxZ!C7;B=LJ6{hEa=iONVMESYWES;r-CX1^qjKyAMv62b}884NklF=$HWiTV; z5P%SJX|ga4!)9IN>7t z0gQtYI0xtQc^+Ism;j0X1Sd2=#?2b56^W ztAl}AwDN#rJ5y3&u^3qnrJ12=v%`c42u7*GXhV5lwrq)^4sm1~7*qz4oib_L7_Euc zEt6v@(jx+;Z9#w_3*Z{92pZNU>*&c5#aAXe%PHZNdf z7-4KFxILrb*)>VvfMt0*SZo21R8~TY5yo&cg#qirtY5jxjX^s!1}4DR#goKh(8%w? zurhyvd4OhCXRm>{g2=s+I{zm$))pQ}wrd{ZnXsAg>$2M*1hGc|rycvDETM#vQ+t#J za5r^+o}d(%;TmCppAoJWIuHwFkk&PQ5UV@%#JS45i3sS);39M{7QpN~}dsv31UKm*)8ieUb}Q3$fTM=MeVsJjOv%Jb|-14Y}*jD=`AVfWO-WoZx{ z06#vPQReihi?6p?9M*eKJd4esH@H{I+!7?ch{Zt}-dYD^$*0Y236uZp_7e`9@t*C1HU7OAm0f@Dmcr8-8I4wd50?)`8;u&ej#1hRG^#?^ zqUGU2-@`1Zve>3)84Y@urF@-@FL0q@%lSIGQtMzBQ9%uDV|rmPbD{5L_o~nSMx%=0 zZVQKVMmq~TXB)aYIEOIC@*xgDguw_+4m3F6hYbV3A%%E82!V&}hllWohwz7oaOeC9 zg);3AjEmci3WCacPf^_kZ zZ@(`l4Z3u3d6G)1vMT5*L&0<#T{3-)hMHbYrRl^OBgqkU@;Z~%L^E2l&SW&(<#p*| zR=6C(2rUtlEDKYeE@rRZS+X=SNj40*7*ZtCB#AUR zRw|QAQ|0k8vMY#TZ8lw{T%D8GRTs>qi@O?CTU#4fn-FKQ=_RtXv^0q{UJ@T43prx# z)69&vF4k-hb4kdd?Uc>Hp65v<5uQ~YOu86q>TH6^>K5Cptz3*c%FSnm8xmW&j*`$u z+C-ZfJG83|HQyyvrE;_PD%NCjbK9BR8mQ4WGRom&HI40Baxb$M-i z7vUzeJ&y`m2xu22F1dDib1akt^`oo2?!Q^y zd4AFw|G6A@KgrqsUuDrjGbf12ZoE>VfcM!-gAo$!@GeLya}~+5v}D)|aWXXAVZ)&* z3JiAGx6`^NPzgP?3o;r=cBIL*6uR7|izze;Xq~tVZTQC~bc(HoSF*nx7*003rIM-D z+UP7jH22>deG=FL37Wgk#z^jOCrj%w&t2?r@j#$^)f(wqT^^Ii~)dpSj zSTW>J(7_uFgy%unSj$)uz8%7W71apFIS95v1tA=QV7(KDei_K)gfkJWGnt{k21hzu zbtWBx4?*~u8V7Rp5rq(*Ut^$aA$$tL;YNqa0Ab`C4m8nP=zQcL4^TKmQ&kX_LRe_i zsG)D4GXnlvE!6jbD|)~T^teG@ps-k{u|6m=ni@jFi(4vLK-U^+hKVhPmr<=v2d|1I ztJXXXI+oZrqf#K?4`*E#?Tr4C*n{t{K-9NR`i-${pJBmAyK&tmyK$CA=%0puc;fkP zT*XQN_B;hZ$miX-@OALkKM#Q2$9uFV7>$=67g+;M#UX>b!vh)IoPQ4Vs4ouH=e{S9 zIZl@)iAFUAU62kNX@|Z5nvA`F5dY(XJ=E%<$1pWrN!w_6Nh8bPD1$%T!0tBd4CpdK z8qD|HW_n2YhsAnGK%jG6LqN3gcMv!!4)`4p1jP480Y~Hoh>0&j3g+&&LO~gH&j3(9 z__A}{Lm1N8_?`$~470f1z`DVKLaiYwhpooR!a)fa{(9pJ0zqFe2!w%X_Zd@4R2 zpNBt(ufQAeSMlBW0sIsEG~SAThj+l&99~2)5lX}osf2M`o+~`Jdmi@u!t;ig zmzUTp&14N< zg`d{%Nx#*8Z~2||>+l!(%lwP{P5z7gxB7qNeV_SxR2rO&O9{vnwmbjX5`9U-SfZuceo=Ju`byQJ@)zF+p^^o!{? zwqI?(m--#%32d*4=aNxB; z!GkgfO&PRo(0hZf4i*g_IoL3G+2HpFe@h0DS)`F%K^`L8LkENwggQdkhaL;PBaRZ6 zisy)Th`$W;3`-5G3|kh~6xJR-I9wGzBYa!<=MjR4)QGBx zFz&FlVdi0t!_LMEW3yswVzzxR$$pBDiKpUM$Dc~@PRL7`nXotEdg9PTI`O5%b4j8kRnpT*O-a8crzG2wwY~&S)3|BbX*1K_N&8ivENA39+mZhqDIgoHjcQM zE>72`uTO6sNsgR6a^1+*jL-~iMq|c>%&<&d=BCWcSwpg>WWAd8L$);Amc1+cmO`$0 zLa{%G$jQ%HkaH|IAh$GkRqj`L;yiucw!HTIr2NP8_ZM&rMi(q8IIA3}q?B8f?W0mg zJu&LgXyNFR(W^#ZD2yqz74B2vs!^(?sxQVwj4_YdQv`~XMN5mmERHIkTKx7{-q_-? ztH*w$mZ@i`kCcc?CY5Y0xv9z4EY_SajV^VRHkJ97O)T3|cB?$6yuQ43oMhY+<31VR zZ@gjr-U<8(WfL|{=y)Xekry7hG%;!7{E25Cje4~1(T^VM_n7gqcPIHy(oT9~GIw(M z2y7PxiY=7zVeDbUB6U+wJM{kq3W7J zVOV9jKBZvF+9|iHi>fzQcN)u$J4_y?$)>l=0p@D+AhVI#oXPg{kef z(Y8%?%>Jl-FB1q4Q%4=qj;9=LH6v?Q*ZfjjR{KVsf1SDR=(Lz=&rZ8MJ#YHUk8>WU z9&efvI%D>XwkNWlSpOvUWW|$BGs9-in|Wzg{;XGKd(N(&{plR(occLG&n=(3Z{EOp zv*ulVD*vf%^L^&q=AV6f_|t2j;XGq_=Ge0d&#rv-_XWBIA1{&~su zU%$ICvaw+UZ$r(7Z#I@~Jo0kt%Ud?}+q7`gZ=21VTVGMXa%fA+mMvQcY+bw!-{#nM z_0@^5p7?jpzxQsB-M)TD@Q#JAf!7?bef#?4*U#)6y|d|!)Hk-j8S&-No;DzBli^&iALk-?87i|Jnil zfs0L(n$8~_cktAqv4@Tw9)0-35Ar@ZcqHq{`yZx%_|8Z2kKXz?_2WICB!9B|XwuPL zpC)~}>sa!!-N#do?>&)rVqf!!=J#4MS`M7dIr+gU<*83jk2&3Zru59YvlGv@p3|MX z@|p3o>z~(re&_tGFSuVU_|osohOY*E)%c$w|Jl)+-1=@?PTSE7B^S7mY9W?-kC~+SY#DC}gASO;oNQ_JrhlGg#_a7kk zheulH`$HJB#~Aoip8JiVn}Pr*wVUXNUjGp=&*u>Y568M*{{_h4>p!tbI~6|udp&zS zxA{O|yE@F4P|-H$x+1Z@ac59VNw~d<;>}%p;inBb8eK$EZg3=%TuQs1AO88l5ZE!W(xcmgG?O zrk1%&H)t;W#0`RP40r8g6NEP#5Uid7^i8bMNSu-q9y} oN1y5)efl Date: Thu, 19 Jul 2018 18:23:10 -0400 Subject: [PATCH 058/245] SG-6892 - Use s3_enabled_upload_types for cloud uploads (#181) Makes use of the s3_enabled_upload_types info object to see if an upload supports and should be sent to cloud storage. This change is backwards compatible with older versions of Shotgun, and should be transparent to users. --- shotgun_api3/shotgun.py | 47 ++++++++++++++++++++++++++++--- tests/test_api.py | 62 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 4 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 27aebdab4..c7a4921c9 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2276,10 +2276,8 @@ def upload(self, entity_type, entity_id, path, field_name=None, display_name=Non is_thumbnail = (field_name in ["thumb_image", "filmstrip_thumb_image", "image", "filmstrip_image"]) - # Version.sg_uploaded_movie is handled as a special case and uploaded - # directly to Cloud storage - if self.server_info.get("s3_direct_uploads_enabled", False) \ - and entity_type == "Version" and field_name == "sg_uploaded_movie": + # Supported types can be directly uploaded to Cloud storage + if self._requires_direct_s3_upload(entity_type, field_name): return self._upload_to_storage(entity_type, entity_id, path, field_name, display_name, tag_list, is_thumbnail) else: @@ -3853,6 +3851,47 @@ def _complete_multipart_upload(self, upload_info, filename, etags): if not str(result).startswith("1"): raise ShotgunError("Unable get upload part link: %s" % result) + def _requires_direct_s3_upload(self, entity_type, field_name): + """ + Internal function that determines if an entity_type + field_name combination + should be uploaded to cloud storage. + + The info endpoint should return `s3_enabled_upload_types` which contains an object like the following: + { + 'Version': ['sg_uploaded_movie'], + 'Attachment': '*', + '*': ['this_file'] + } + + :param str entity_type: The entity type of the file being uploaded. + :param str field_name: The matching field name for the file being uploaded. + + :returns: Whether the field + entity type combination should be uploaded to cloud storage. + :rtype: bool + """ + supported_s3_types = self.server_info.get('s3_enabled_upload_types') or {} + supported_fields = supported_s3_types.get(entity_type) or [] + supported_star_fields = supported_s3_types.get("*") or [] + # If direct uploads are enabled + if self.server_info.get("s3_direct_uploads_enabled", False): + # If field_name is part of a supported entity_type + if field_name in supported_fields or field_name in supported_star_fields: + return True + # If supported_fields is a string or a list with * + if isinstance(supported_fields, list) and "*" in supported_fields: + return True + elif supported_fields == "*": + return True + # If supported_star_fields is a list containing * or * as a string + if isinstance(supported_star_fields, list) and "*" in supported_star_fields: + return True + elif supported_star_fields == "*": + return True + # Support direct upload for old versions of shotgun + return entity_type == "Version" and field_name == "sg_uploaded_movie" + else: + return False + def _send_form(self, url, params): """ Utility function to send a Form to Shotgun and process any HTTP errors that diff --git a/tests/test_api.py b/tests/test_api.py index a4f566e5c..12a3673b3 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -415,6 +415,68 @@ def test_upload_thumbnail_with_upload_function(self): f_thumb_id = self.sg.upload("Task", self.task['id'], path, 'filmstrip_image') self.assertTrue(isinstance(f_thumb_id, int)) + def test_requires_direct_s3_upload(self): + """Test _requires_direct_s3_upload""" + + upload_types = self.sg.server_info.get("s3_enabled_upload_types") + direct_uploads_enabled = self.sg.server_info.get("s3_direct_uploads_enabled") + + self.sg.server_info["s3_enabled_upload_types"] = None + self.sg.server_info["s3_direct_uploads_enabled"] = None + + # Test s3_enabled_upload_types and s3_direct_uploads_enabled not set + self.assertFalse(self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie")) + + self.sg.server_info["s3_enabled_upload_types"] = { + "Version": ["sg_uploaded_movie"] + } + + # Test direct_uploads_enabled not set + self.assertFalse(self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie")) + + self.sg.server_info["s3_direct_uploads_enabled"] = True + + # Test regular path + self.assertTrue(self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie")) + self.assertFalse(self.sg._requires_direct_s3_upload("Version", "abc")) + self.assertFalse(self.sg._requires_direct_s3_upload("Abc", "abc")) + + # Test star field wildcard and arrays of fields + self.sg.server_info["s3_enabled_upload_types"] = { + "Version": ["sg_uploaded_movie", "test", "other"], + "Test": ["*"], + "Asset": "*" + } + + self.assertTrue(self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie")) + self.assertTrue(self.sg._requires_direct_s3_upload("Version", "test")) + self.assertTrue(self.sg._requires_direct_s3_upload("Version", "other")) + self.assertTrue(self.sg._requires_direct_s3_upload("Test", "abc")) + self.assertTrue(self.sg._requires_direct_s3_upload("Asset", "test")) + + # Test default allowed upload type + self.sg.server_info["s3_enabled_upload_types"] = None + self.assertTrue(self.sg._requires_direct_s3_upload("Version", "sg_uploaded_movie")) + self.assertFalse(self.sg._requires_direct_s3_upload("Version", "test")) + + # Test star entity_type + self.sg.server_info["s3_enabled_upload_types"] = { + "*": ["sg_uploaded_movie", "test"] + } + self.assertTrue(self.sg._requires_direct_s3_upload("Something", "sg_uploaded_movie")) + self.assertTrue(self.sg._requires_direct_s3_upload("Version", "test")) + self.assertFalse(self.sg._requires_direct_s3_upload("Version", "other")) + + # Test entity_type and field_name wildcard + self.sg.server_info["s3_enabled_upload_types"] = { + "*": "*" + } + self.assertTrue(self.sg._requires_direct_s3_upload("Something", "sg_uploaded_movie")) + self.assertTrue(self.sg._requires_direct_s3_upload("Version", "abc")) + + self.sg.server_info["s3_enabled_upload_types"] = upload_types + self.sg.server_info["s3_direct_uploads_enabled"] = direct_uploads_enabled + def test_linked_thumbnail_url(self): this_dir, _ = os.path.split(__file__) path = os.path.abspath(os.path.expanduser( From c7be882272a34a7b550a45a9f090325ee9b46e8a Mon Sep 17 00:00:00 2001 From: Jeff Beeland Date: Thu, 19 Jul 2018 15:48:51 -0700 Subject: [PATCH 059/245] [minor] Prep work for release: docs updated and polished and changelog updates. --- HISTORY.rst | 1 + docs/reference.rst | 1 + shotgun_api3/shotgun.py | 1 + 3 files changed, 3 insertions(+) diff --git a/HISTORY.rst b/HISTORY.rst index e4c5faa9c..41d9467a5 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -9,6 +9,7 @@ v3.0.37 - Proper support added for unicode and utf-8 string paths given to upload methods, and a sane error is raised when an unusable string encoding is used. - Adds support for querying preferences from Shotgun via the new preferences_read method. +- Under-the-hood changes to add support for direct to s3 uploads to Shotgun. This change should be transparent to users. v3.0.36 ===================== diff --git a/docs/reference.rst b/docs/reference.rst index 39a97abce..50eb45b3e 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -140,6 +140,7 @@ also some specialized convenience methods for accessing particular types of info .. automethod:: Shotgun.update_project_last_accessed .. automethod:: Shotgun.work_schedule_read .. automethod:: Shotgun.work_schedule_update +.. automethod:: Shotgun.preferences_read Working With Files ================== diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index c7a4921c9..70da7e799 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -3078,6 +3078,7 @@ def preferences_read(self, prefs=None): { "pref_name": "pref value" } + :param list prefs: An optional list of preference names to return. :returns: Dictionary of preferences and their values. :rtype: dict From b13dd5d03b6b3c7bb946f77a9eaff7c3dc7ff324 Mon Sep 17 00:00:00 2001 From: Jeff Beeland Date: Thu, 19 Jul 2018 15:58:38 -0700 Subject: [PATCH 060/245] [minor] Updates the __version__ tag in shotgun.py. --- shotgun_api3/shotgun.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 70da7e799..c5ebed3d4 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.36" +__version__ = "3.0.37" # ---------------------------------------------------------------------------- # Errors From 9ceb61dd87496b46a6e70e1c8263fd1ccf41aaa6 Mon Sep 17 00:00:00 2001 From: Jeff Beeland Date: Thu, 3 Jan 2019 11:48:46 -0800 Subject: [PATCH 061/245] SG-10148: Corrects the release version in setup.py. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f3f7aa96e..1bd9159b1 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.36', + version='3.0.37', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', From 46ec4bdda2681e2fec531746022f099434432cc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manne=20=C3=96hrstr=C3=B6m?= Date: Thu, 17 Jan 2019 15:37:52 +0000 Subject: [PATCH 062/245] [minor] Tweaks to HoundCI config. (#186) In an effort to centralize, now uses a centralized HoundCI configuration found in tk-core instead of its own. --- .flake8 | 49 ------------------------------------------------- .hound.yml | 16 ---------------- 2 files changed, 65 deletions(-) delete mode 100644 .flake8 delete mode 100644 .hound.yml diff --git a/.flake8 b/.flake8 deleted file mode 100644 index bbe740dfb..000000000 --- a/.flake8 +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (c) 2018 Shotgun Software Inc. -# -# CONFIDENTIAL AND PROPRIETARY -# -# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit -# Source Code License included in this distribution package. See LICENSE. -# By accessing, using, copying or modifying this work you indicate your -# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights -# not expressly granted therein are reserved by Shotgun Software Inc. - -# Flake 8 PEP and lint configuration - https://gitlab.com/pycqa/flake8 -# -# This defines the official lint and PEP8 rules for this repository -# -# You can run this locally by doing pep install flake8 and then -# >flake8 /path/to/core -# -# This is also used by the hound CI - see the .hound.yml config file. -# -# -[flake8] - -# things we don't want to lint -exclude = - .git, - .flake8, - .gitignore, - .travis.yml, - .cache, - .eggs, - *.rst, - *.yml, - *.pyc, - *.pyo, - *.egg-info, - __pycache__, - # Those are our third parties, do not lint them! - shotgun_api3/lib/httplib2/*.py, - shotgun_api3/lib/simplejson/*.py, - shotgun_api3/lib/xmlrpclib.py - -# exceptions -# -# E501 line too long (112 > 79 characters) -# E402 module level import not top of file -# E999 SyntaxError: invalid syntax (hack for hound CI which runs python 3.x) - -ignore = E501, E402, E999 - diff --git a/.hound.yml b/.hound.yml deleted file mode 100644 index 18025a112..000000000 --- a/.hound.yml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2017 Shotgun Software Inc. -# -# CONFIDENTIAL AND PROPRIETARY -# -# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit -# Source Code License included in this distribution package. See LICENSE. -# By accessing, using, copying or modifying this work you indicate your -# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights -# not expressly granted therein are reserved by Shotgun Software Inc. - -# https://houndci.com configuration file for linting and PEP8 - -python: - enabled: true - config_file: .flake8 - From 855dcd829df61b0af643b24639663b464c016386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 29 Jan 2019 15:09:39 -0500 Subject: [PATCH 063/245] Update README.md --- README.md | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 761006f52..a7c93da54 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,38 @@ Integration and unit tests are provided. - `test_api` and `test_api_long` *do* require a Shotgun instance, with a script key available for the tests. The server and script user values must be supplied in the `tests/config` file. The tests will add test data to your server based on information in your config. This data will be manipulated by the tests, and should not be used for other purposes. - To run all of the tests, use the shell script `run-tests`. - - - - +## Release process + +### Packaging up new release + +1) Update the Changelog in the `HISTORY.rst` file + - Add bullet points for any changes that have happened since the previous release. This may include changes you did not make so look at the commit history and make sure we don't miss anything. If you notice something was done that wasn't added to the changelog, hunt down that engineer and make them feel guilty for not doing so. This is a required step in making changes to the API. + - Try and match the language of previous change log messages. We want to keep a consistent voice. + - Make sure the date of the release matches today. We try and keep this TBD until we're ready to do a release so it's easy to catch that it needs to be updated. + - Make sure the version number is filled out and correct. We follow semantic versioning. Or more correctly, we should be following it. +2) Ensure any changes or additions to public methods are documented + - Update the Github wiki, and usually you'll need to update the Method Reference page with concise and exact documentation of the changes that are in this release. + - Ensure that doc strings are updated in the code itself to work with Sphinx and are correctly formatted. + - Examples are always good especially if this a new feature or method. + - Think about a new user to the API trying to figure out how to use the features you're documenting. +3) Update the version value in `shotgun_api3/setup.py` to match the version you are packaging. This controls what version users will get when installing via pip. +4) Update the `__version__` value in `shotgun_api3/shotgun.py` to the version you're releasing. This identified the current version within the API itself. +5) Commit these changes in master with a commit message like `packaging for the vx.x.x release`. +6) Create a tag based off of the master branch called `vx.x.x` to match the version number you're releasing. +7) Push master and your tag to Github. +8) Update the Releases page with your new release. + - The release should already be there from your tag but if not, create a new one. + - Add more detailed information regarding the changes in this release. This is a great place to add examples, and reasons for the change! + +### Letting the world know +We usually send an email to the `shotgun-dev` list with an announcement of the release and highlight the changes. + +### Prepare for the Next Dev Cycle +1) Update the `__version__` value in `shotgun_api3/shotgun.py` to the next version number with `.dev` appended to it. For example, `v3.0.24.dev` +2) Add a new section to the Changelog in the `HISTORY.rst` file with the next version number and a TBD date +``` + **v3.0.24 - TBD** + + TBD +``` +3) Commit the changes to master with a commit message like `Bump version to v3.0.24.dev` +4) Push master to Github From c6285e1ca253ee795a52d29d492ecffbcbfcac10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 29 Jan 2019 15:14:23 -0500 Subject: [PATCH 064/245] Created dev build --- HISTORY.rst | 4 ++++ setup.py | 2 +- shotgun_api3/shotgun.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 41d9467a5..ebb2f65db 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,10 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.0.38.dev +===================== +- TBD + v3.0.37 ===================== diff --git a/setup.py b/setup.py index 1bd9159b1..d1c5c08ac 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.37', + version='3.0.38', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index c5ebed3d4..d6f8023df 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.37" +__version__ = "3.0.38.dev" # ---------------------------------------------------------------------------- # Errors From 19c1f1dc8d1e2996738cc3f709e393c2356c8e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Tue, 29 Jan 2019 15:15:41 -0500 Subject: [PATCH 065/245] For SG-9540, upgrade httplib2 (#187) This upgrades httplib2 to the most recent version (0.12.0). It has been slightly modified so the library imports parts of itself via from . import instead of from http2lib import something, as the library isn't part of the PYTHONPATH. Tests are also much faster. --- README.md | 6 + shotgun_api3/lib/httplib2/__init__.py | 1642 ++++++++----- shotgun_api3/lib/httplib2/cacerts.txt | 3246 ++----------------------- shotgun_api3/lib/httplib2/certs.py | 42 + shotgun_api3/lib/httplib2/iri2uri.py | 57 +- shotgun_api3/lib/httplib2/socks.py | 178 +- shotgun_api3/lib/requirements.txt | 32 + tests/base.py | 138 +- tests/test_api.py | 6 +- 9 files changed, 1565 insertions(+), 3782 deletions(-) create mode 100644 shotgun_api3/lib/httplib2/certs.py create mode 100644 shotgun_api3/lib/requirements.txt diff --git a/README.md b/README.md index a7c93da54..a3d2a0a7f 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,12 @@ Some useful direct links: You can see the [full history of the Python API on the documentation site](http://developer.shotgunsoftware.com/python-api/changelog.html). +## Updating HTTPLib2 + +1. Download the latest version of HTTPLib2 at https://pypi.org/project/httplib2. +2. Extract the python2/httplib2 into shotgun_api3/lib/http2lib without the test folder. +3. Scan the files for any references to importing httplib2 and make sure they import "from ." instead of "from httplib2" because the library isn't in the Python path. + ## Tests Integration and unit tests are provided. diff --git a/shotgun_api3/lib/httplib2/__init__.py b/shotgun_api3/lib/httplib2/__init__.py index 19e7cff11..b3cc0b2fb 100644 --- a/shotgun_api3/lib/httplib2/__init__.py +++ b/shotgun_api3/lib/httplib2/__init__.py @@ -1,54 +1,53 @@ -from __future__ import generators -""" -httplib2 - -A caching http interface that supports ETags and gzip -to conserve bandwidth. - -Requires Python 2.3 or later - -Changelog: -2007-08-18, Rick: Modified so it's able to use a socks proxy if needed. +"""Small, fast HTTP client library for Python. +Features persistent connections, cache, and Google App Engine Standard +Environment support. """ +from __future__ import print_function + __author__ = "Joe Gregorio (joe@bitworking.org)" __copyright__ = "Copyright 2006, Joe Gregorio" -__contributors__ = ["Thomas Broyer (t.broyer@ltgt.net)", - "James Antill", - "Xavier Verges Farrero", - "Jonathan Feinberg", - "Blair Zajac", - "Sam Ruby", - "Louis Nyffenegger"] +__contributors__ = [ + "Thomas Broyer (t.broyer@ltgt.net)", + "James Antill", + "Xavier Verges Farrero", + "Jonathan Feinberg", + "Blair Zajac", + "Sam Ruby", + "Louis Nyffenegger", + "Alex Yu", +] __license__ = "MIT" -__version__ = "0.9.1" +__version__ = '0.12.0' -import re -import sys +import base64 +import calendar +import copy import email -import email.Utils -import email.Message import email.FeedParser -import StringIO +import email.Message +import email.Utils +import errno import gzip -import zlib import httplib -import urlparse -import urllib -import base64 import os -import copy -import calendar -import time import random -import errno +import re +import StringIO +import sys +import time +import urllib +import urlparse +import zlib + try: from hashlib import sha1 as _sha, md5 as _md5 except ImportError: # prior to Python 2.5, these were separate modules import sha import md5 + _sha = sha.new _md5 = md5.new import hmac @@ -56,7 +55,7 @@ import socket try: - from httplib2 import socks + from . import socks except ImportError: try: import socks @@ -64,51 +63,91 @@ socks = None # Build the appropriate socket wrapper for ssl +ssl = None +ssl_SSLError = None +ssl_CertificateError = None try: - import ssl # python 2.6 - ssl_SSLError = ssl.SSLError - def _ssl_wrap_socket(sock, key_file, cert_file, - disable_validation, ca_certs): - if disable_validation: - cert_reqs = ssl.CERT_NONE - else: - cert_reqs = ssl.CERT_REQUIRED - # We should be specifying SSL version 3 or TLS v1, but the ssl module - # doesn't expose the necessary knobs. So we need to go with the default - # of SSLv23. - return ssl.wrap_socket(sock, keyfile=key_file, certfile=cert_file, - cert_reqs=cert_reqs, ca_certs=ca_certs) -except (AttributeError, ImportError): - ssl_SSLError = None - def _ssl_wrap_socket(sock, key_file, cert_file, - disable_validation, ca_certs): - if not disable_validation: - raise CertificateValidationUnsupported( - "SSL certificate validation is not supported without " - "the ssl module installed. To avoid this error, install " - "the ssl module, or explicity disable validation.") - ssl_sock = socket.ssl(sock, key_file, cert_file) - return httplib.FakeSocket(sock, ssl_sock) - - -if sys.version_info >= (2,3): + import ssl # python 2.6 +except ImportError: + pass +if ssl is not None: + ssl_SSLError = getattr(ssl, "SSLError", None) + ssl_CertificateError = getattr(ssl, "CertificateError", None) + + +def _ssl_wrap_socket( + sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname +): + if disable_validation: + cert_reqs = ssl.CERT_NONE + else: + cert_reqs = ssl.CERT_REQUIRED + if ssl_version is None: + ssl_version = ssl.PROTOCOL_SSLv23 + + if hasattr(ssl, "SSLContext"): # Python 2.7.9 + context = ssl.SSLContext(ssl_version) + context.verify_mode = cert_reqs + context.check_hostname = cert_reqs != ssl.CERT_NONE + if cert_file: + context.load_cert_chain(cert_file, key_file) + if ca_certs: + context.load_verify_locations(ca_certs) + return context.wrap_socket(sock, server_hostname=hostname) + else: + return ssl.wrap_socket( + sock, + keyfile=key_file, + certfile=cert_file, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + ssl_version=ssl_version, + ) + + +def _ssl_wrap_socket_unsupported( + sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname +): + if not disable_validation: + raise CertificateValidationUnsupported( + "SSL certificate validation is not supported without " + "the ssl module installed. To avoid this error, install " + "the ssl module, or explicity disable validation." + ) + ssl_sock = socket.ssl(sock, key_file, cert_file) + return httplib.FakeSocket(sock, ssl_sock) + + +if ssl is None: + _ssl_wrap_socket = _ssl_wrap_socket_unsupported + +if sys.version_info >= (2, 3): from iri2uri import iri2uri else: + def iri2uri(uri): return uri -def has_timeout(timeout): # python 2.6 - if hasattr(socket, '_GLOBAL_DEFAULT_TIMEOUT'): - return (timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT) - return (timeout is not None) -__all__ = [ - 'Http', 'Response', 'ProxyInfo', 'HttpLib2Error', 'RedirectMissingLocation', - 'RedirectLimit', 'FailedToDecompressContent', - 'UnimplementedDigestAuthOptionError', - 'UnimplementedHmacDigestAuthOptionError', - 'debuglevel', 'ProxiesUnavailableError'] +def has_timeout(timeout): # python 2.6 + if hasattr(socket, "_GLOBAL_DEFAULT_TIMEOUT"): + return timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT + return timeout is not None + +__all__ = [ + "Http", + "Response", + "ProxyInfo", + "HttpLib2Error", + "RedirectMissingLocation", + "RedirectLimit", + "FailedToDecompressContent", + "UnimplementedDigestAuthOptionError", + "UnimplementedHmacDigestAuthOptionError", + "debuglevel", + "ProxiesUnavailableError", +] # The httplib debug level, set to a non-zero value to get debug output debuglevel = 0 @@ -117,11 +156,13 @@ def has_timeout(timeout): # python 2.6 RETRIES = 2 # Python 2.3 support -if sys.version_info < (2,4): +if sys.version_info < (2, 4): + def sorted(seq): seq.sort() return seq + # Python 2.3 support def HTTPResponse__getheaders(self): """Return list of (header, value) tuples.""" @@ -129,11 +170,15 @@ def HTTPResponse__getheaders(self): raise httplib.ResponseNotReady() return self.msg.items() -if not hasattr(httplib.HTTPResponse, 'getheaders'): + +if not hasattr(httplib.HTTPResponse, "getheaders"): httplib.HTTPResponse.getheaders = HTTPResponse__getheaders + # All exceptions raised here derive from HttpLib2Error -class HttpLib2Error(Exception): pass +class HttpLib2Error(Exception): + pass + # Some exceptions can be caught and optionally # be turned back into responses. @@ -143,25 +188,66 @@ def __init__(self, desc, response, content): self.content = content HttpLib2Error.__init__(self, desc) -class RedirectMissingLocation(HttpLib2ErrorWithResponse): pass -class RedirectLimit(HttpLib2ErrorWithResponse): pass -class FailedToDecompressContent(HttpLib2ErrorWithResponse): pass -class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): pass -class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): pass - -class MalformedHeader(HttpLib2Error): pass -class RelativeURIError(HttpLib2Error): pass -class ServerNotFoundError(HttpLib2Error): pass -class ProxiesUnavailableError(HttpLib2Error): pass -class CertificateValidationUnsupported(HttpLib2Error): pass -class SSLHandshakeError(HttpLib2Error): pass -class NotSupportedOnThisPlatform(HttpLib2Error): pass + +class RedirectMissingLocation(HttpLib2ErrorWithResponse): + pass + + +class RedirectLimit(HttpLib2ErrorWithResponse): + pass + + +class FailedToDecompressContent(HttpLib2ErrorWithResponse): + pass + + +class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): + pass + + +class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): + pass + + +class MalformedHeader(HttpLib2Error): + pass + + +class RelativeURIError(HttpLib2Error): + pass + + +class ServerNotFoundError(HttpLib2Error): + pass + + +class ProxiesUnavailableError(HttpLib2Error): + pass + + +class CertificateValidationUnsupported(HttpLib2Error): + pass + + +class SSLHandshakeError(HttpLib2Error): + pass + + +class NotSupportedOnThisPlatform(HttpLib2Error): + pass + + class CertificateHostnameMismatch(SSLHandshakeError): def __init__(self, desc, host, cert): HttpLib2Error.__init__(self, desc) self.host = host self.cert = cert + +class NotRunningAppEngineEnvironment(HttpLib2Error): + pass + + # Open Items: # ----------- # Proxy support @@ -177,33 +263,37 @@ def __init__(self, desc, host, cert): # Does not handle Cache-Control: max-stale # Does not use Age: headers when calculating cache freshness. - # The number of redirections to follow before giving up. # Note that only GET redirects are automatically followed. # Will also honor 301 requests by saving that info and never # requesting that URI again. DEFAULT_MAX_REDIRECTS = 5 -try: - # Users can optionally provide a module that tells us where the CA_CERTS - # are located. - import ca_certs_locater - CA_CERTS = ca_certs_locater.get() -except ImportError: - # Default CA certificates file bundled with httplib2. - CA_CERTS = os.path.join( - os.path.dirname(os.path.abspath(__file__ )), "cacerts.txt") +from . import certs +CA_CERTS = certs.where() # Which headers are hop-by-hop headers by default -HOP_BY_HOP = ['connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailers', 'transfer-encoding', 'upgrade'] +HOP_BY_HOP = [ + "connection", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailers", + "transfer-encoding", + "upgrade", +] + def _get_end2end_headers(response): hopbyhop = list(HOP_BY_HOP) - hopbyhop.extend([x.strip() for x in response.get('connection', '').split(',')]) + hopbyhop.extend([x.strip() for x in response.get("connection", "").split(",")]) return [header for header in response.keys() if header not in hopbyhop] + URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + def parse_uri(uri): """Parses a URI using the regex given in Appendix B of RFC 3986. @@ -212,6 +302,7 @@ def parse_uri(uri): groups = URI.match(uri).groups() return (groups[1], groups[3], groups[4], groups[6], groups[8]) + def urlnorm(uri): (scheme, authority, path, query, fragment) = parse_uri(uri) if not scheme or not authority: @@ -229,49 +320,62 @@ def urlnorm(uri): # Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) -re_url_scheme = re.compile(r'^\w+://') -re_slash = re.compile(r'[?/:|]+') +re_url_scheme = re.compile(r"^\w+://") +re_unsafe = re.compile(r"[^\w\-_.()=!]+") + def safename(filename): """Return a filename suitable for the cache. - Strips dangerous and common characters to create a filename we can use to store the cache in. """ - - try: - if re_url_scheme.match(filename): - if isinstance(filename,str): - filename = filename.decode('utf-8') - filename = filename.encode('idna') - else: - filename = filename.encode('idna') - except UnicodeError: - pass - if isinstance(filename,unicode): - filename=filename.encode('utf-8') - filemd5 = _md5(filename).hexdigest() + if isinstance(filename, str): + filename_bytes = filename + filename = filename.decode("utf-8") + else: + filename_bytes = filename.encode("utf-8") + filemd5 = _md5(filename_bytes).hexdigest() filename = re_url_scheme.sub("", filename) - filename = re_slash.sub(",", filename) + filename = re_unsafe.sub("", filename) + + # limit length of filename (vital for Windows) + # https://github.com/httplib2/httplib2/pull/74 + # C:\Users\ \AppData\Local\Temp\ , + # 9 chars + max 104 chars + 20 chars + x + 1 + 32 = max 259 chars + # Thus max safe filename x = 93 chars. Let it be 90 to make a round sum: + filename = filename[:90] - # limit length of filename - if len(filename)>200: - filename=filename[:200] return ",".join((filename, filemd5)) -NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+') + +NORMALIZE_SPACE = re.compile(r"(?:\r\n)?[ \t]+") + + def _normalize_headers(headers): - return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.iteritems()]) + return dict( + [ + (key.lower(), NORMALIZE_SPACE.sub(value, " ").strip()) + for (key, value) in headers.iteritems() + ] + ) + def _parse_cache_control(headers): retval = {} - if headers.has_key('cache-control'): - parts = headers['cache-control'].split(',') - parts_with_args = [tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")] - parts_wo_args = [(name.strip().lower(), 1) for name in parts if -1 == name.find("=")] + if "cache-control" in headers: + parts = headers["cache-control"].split(",") + parts_with_args = [ + tuple([x.strip().lower() for x in part.split("=", 1)]) + for part in parts + if -1 != part.find("=") + ] + parts_wo_args = [ + (name.strip().lower(), 1) for name in parts if -1 == name.find("=") + ] retval = dict(parts_with_args + parts_wo_args) return retval + # Whether to use a strict mode to parse WWW-Authenticate headers # Might lead to bad results in case of ill-formed header value, # so disabled by default, falling back to relaxed parsing. @@ -283,22 +387,30 @@ def _parse_cache_control(headers): # "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space # Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both: # \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"? -WWW_AUTH_STRICT = re.compile(r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$") -WWW_AUTH_RELAXED = re.compile(r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(?@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$" +) +WWW_AUTH_RELAXED = re.compile( + r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? 0: + if service == "xapi" and request_uri.find("calendar") > 0: service = "cl" # No point in guessing Base or Spreadsheet - #elif request_uri.find("spreadsheets") > 0: + # elif request_uri.find("spreadsheets") > 0: # service = "wise" - auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers['user-agent']) - resp, content = self.http.request("https://www.google.com/accounts/ClientLogin", method="POST", body=urlencode(auth), headers={'Content-Type': 'application/x-www-form-urlencoded'}) - lines = content.split('\n') + auth = dict( + Email=credentials[0], + Passwd=credentials[1], + service=service, + source=headers["user-agent"], + ) + resp, content = self.http.request( + "https://www.google.com/accounts/ClientLogin", + method="POST", + body=urlencode(auth), + headers={"Content-Type": "application/x-www-form-urlencoded"}, + ) + lines = content.split("\n") d = dict([tuple(line.split("=", 1)) for line in lines if line]) if resp.status == 403: self.Auth = "" else: - self.Auth = d['Auth'] + self.Auth = d["Auth"] def request(self, method, request_uri, headers, content): """Modify the request headers to add the appropriate Authorization header.""" - headers['authorization'] = 'GoogleLogin Auth=' + self.Auth + headers["authorization"] = "GoogleLogin Auth=" + self.Auth AUTH_SCHEME_CLASSES = { @@ -683,17 +916,21 @@ def request(self, method, request_uri, headers, content): "wsse": WsseAuthentication, "digest": DigestAuthentication, "hmacdigest": HmacDigestAuthentication, - "googlelogin": GoogleLoginAuthentication + "googlelogin": GoogleLoginAuthentication, } AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] + class FileCache(object): """Uses a local directory as a store for cached files. Not really safe to use if multiple threads or processes are going to be running on the same cache. """ - def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior + + def __init__( + self, cache, safe=safename + ): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior self.cache = cache self.safe = safe if not os.path.exists(cache): @@ -721,6 +958,7 @@ def delete(self, key): if os.path.exists(cacheFullPath): os.remove(cacheFullPath) + class Credentials(object): def __init__(self): self.credentials = [] @@ -736,40 +974,49 @@ def iter(self, domain): if cdomain == "" or domain == cdomain: yield (name, password) + class KeyCerts(Credentials): """Identical to Credentials except that name/password are mapped to key/cert.""" + pass + class AllHosts(object): pass + class ProxyInfo(object): """Collect information required to use a proxy.""" - bypass_hosts = () - def __init__(self, proxy_type, proxy_host, proxy_port, - proxy_rdns=True, proxy_user=None, proxy_pass=None): - """ - Args: - proxy_type: The type of proxy server. This must be set to one of - socks.PROXY_TYPE_XXX constants. For example: + bypass_hosts = () - p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, - proxy_host='localhost', proxy_port=8000) + def __init__( + self, + proxy_type, + proxy_host, + proxy_port, + proxy_rdns=True, + proxy_user=None, + proxy_pass=None, + proxy_headers=None, + ): + """Args: + proxy_type: The type of proxy server. This must be set to one of + socks.PROXY_TYPE_XXX constants. For example: p = + ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost', + proxy_port=8000) proxy_host: The hostname or IP address of the proxy server. - proxy_port: The port that the proxy server is running on. - proxy_rdns: If True (default), DNS queries will not be performed locally, and instead, handed to the proxy to resolve. This is useful - if the network does not allow resolution of non-local names. In + if the network does not allow resolution of non-local names. In httplib2 0.9 and earlier, this defaulted to False. - proxy_user: The username used to authenticate with the proxy server. - proxy_pass: The password used to authenticate with the proxy server. + proxy_headers: Additional or modified headers for the proxy connect + request. """ self.proxy_type = proxy_type self.proxy_host = proxy_host @@ -777,10 +1024,18 @@ def __init__(self, proxy_type, proxy_host, proxy_port, self.proxy_rdns = proxy_rdns self.proxy_user = proxy_user self.proxy_pass = proxy_pass + self.proxy_headers = proxy_headers def astuple(self): - return (self.proxy_type, self.proxy_host, self.proxy_port, - self.proxy_rdns, self.proxy_user, self.proxy_pass) + return ( + self.proxy_type, + self.proxy_host, + self.proxy_port, + self.proxy_rdns, + self.proxy_user, + self.proxy_pass, + self.proxy_headers, + ) def isgood(self): return (self.proxy_host != None) and (self.proxy_port != None) @@ -793,56 +1048,54 @@ def bypass_host(self, hostname): if self.bypass_hosts is AllHosts: return True - bypass = False - for domain in self.bypass_hosts: - if hostname.endswith(domain): - bypass = True + hostname = "." + hostname.lstrip(".") + for skip_name in self.bypass_hosts: + # *.suffix + if skip_name.startswith(".") and hostname.endswith(skip_name): + return True + # exact match + if hostname == "." + skip_name: + return True + return False - return bypass + def __repr__(self): + return ( + "" + ).format(p=self) -def proxy_info_from_environment(method='http'): - """ - Read proxy info from the environment variables. +def proxy_info_from_environment(method="http"): + """Read proxy info from the environment variables. """ - if method not in ['http', 'https']: + if method not in ["http", "https"]: return - env_var = method + '_proxy' + env_var = method + "_proxy" url = os.environ.get(env_var, os.environ.get(env_var.upper())) if not url: return - pi = proxy_info_from_url(url, method) + return proxy_info_from_url(url, method, None) - no_proxy = os.environ.get('no_proxy', os.environ.get('NO_PROXY', '')) - bypass_hosts = [] - if no_proxy: - bypass_hosts = no_proxy.split(',') - # special case, no_proxy=* means all hosts bypassed - if no_proxy == '*': - bypass_hosts = AllHosts - pi.bypass_hosts = bypass_hosts - return pi - -def proxy_info_from_url(url, method='http'): - """ - Construct a ProxyInfo from a URL (such as http_proxy env var) +def proxy_info_from_url(url, method="http", noproxy=None): + """Construct a ProxyInfo from a URL (such as http_proxy env var) """ url = urlparse.urlparse(url) username = None password = None port = None - if '@' in url[1]: - ident, host_port = url[1].split('@', 1) - if ':' in ident: - username, password = ident.split(':', 1) + if "@" in url[1]: + ident, host_port = url[1].split("@", 1) + if ":" in ident: + username, password = ident.split(":", 1) else: password = ident else: host_port = url[1] - if ':' in host_port: - host, port = host_port.split(':', 1) + if ":" in host_port: + host, port = host_port.split(":", 1) else: host = host_port @@ -851,19 +1104,33 @@ def proxy_info_from_url(url, method='http'): else: port = dict(https=443, http=80)[method] - proxy_type = 3 # socks.PROXY_TYPE_HTTP - return ProxyInfo( - proxy_type = proxy_type, - proxy_host = host, - proxy_port = port, - proxy_user = username or None, - proxy_pass = password or None, + proxy_type = 3 # socks.PROXY_TYPE_HTTP + pi = ProxyInfo( + proxy_type=proxy_type, + proxy_host=host, + proxy_port=port, + proxy_user=username or None, + proxy_pass=password or None, + proxy_headers=None, ) + bypass_hosts = [] + # If not given an explicit noproxy value, respect values in env vars. + if noproxy is None: + noproxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY", "")) + # Special case: A single '*' character means all hosts should be bypassed. + if noproxy == "*": + bypass_hosts = AllHosts + elif noproxy.strip(): + bypass_hosts = noproxy.split(",") + bypass_hosts = filter(bool, bypass_hosts) # To exclude empty string. + + pi.bypass_hosts = bypass_hosts + return pi + class HTTPConnectionWithTimeout(httplib.HTTPConnection): - """ - HTTPConnection subclass that supports timeouts + """HTTPConnection subclass that supports timeouts All timeouts are in seconds. If None is passed for timeout then Python's default timeout for sockets will be used. See for example @@ -881,11 +1148,14 @@ def connect(self): # Mostly verbatim from httplib.py. if self.proxy_info and socks is None: raise ProxiesUnavailableError( - 'Proxy support missing but proxy use was requested!') + "Proxy support missing but proxy use was requested!" + ) msg = "getaddrinfo returns an empty list" if self.proxy_info and self.proxy_info.isgood(): use_proxy = True - proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass = self.proxy_info.astuple() + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( + self.proxy_info.astuple() + ) host = proxy_host port = proxy_port @@ -900,7 +1170,15 @@ def connect(self): try: if use_proxy: self.sock = socks.socksocket(af, socktype, proto) - self.sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass) + self.sock.setproxy( + proxy_type, + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) else: self.sock = socket.socket(af, socktype, proto) self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) @@ -909,46 +1187,83 @@ def connect(self): self.sock.settimeout(self.timeout) # End of difference from httplib. if self.debuglevel > 0: - print "connect: (%s, %s) ************" % (self.host, self.port) + print("connect: (%s, %s) ************" % (self.host, self.port)) if use_proxy: - print "proxy: %s ************" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) - - self.sock.connect((self.host, self.port) + sa[2:]) - except socket.error, msg: + print( + "proxy: %s ************" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + if use_proxy: + self.sock.connect((self.host, self.port) + sa[2:]) + else: + self.sock.connect(sa) + except socket.error as msg: if self.debuglevel > 0: - print "connect fail: (%s, %s)" % (self.host, self.port) + print("connect fail: (%s, %s)" % (self.host, self.port)) if use_proxy: - print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + print( + "proxy: %s" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) if self.sock: self.sock.close() self.sock = None continue break if not self.sock: - raise socket.error, msg + raise socket.error(msg) + class HTTPSConnectionWithTimeout(httplib.HTTPSConnection): - """ - This class allows communication via SSL. + """This class allows communication via SSL. All timeouts are in seconds. If None is passed for timeout then Python's default timeout for sockets will be used. See for example the docs of socket.setdefaulttimeout(): http://docs.python.org/library/socket.html#socket.setdefaulttimeout """ - def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=None, proxy_info=None, - ca_certs=None, disable_ssl_certificate_validation=False): - httplib.HTTPSConnection.__init__(self, host, port=port, - key_file=key_file, - cert_file=cert_file, strict=strict) + + def __init__( + self, + host, + port=None, + key_file=None, + cert_file=None, + strict=None, + timeout=None, + proxy_info=None, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): + httplib.HTTPSConnection.__init__( + self, host, port=port, key_file=key_file, cert_file=cert_file, strict=strict + ) self.timeout = timeout self.proxy_info = proxy_info if ca_certs is None: ca_certs = CA_CERTS self.ca_certs = ca_certs - self.disable_ssl_certificate_validation = \ - disable_ssl_certificate_validation + self.disable_ssl_certificate_validation = disable_ssl_certificate_validation + self.ssl_version = ssl_version # The following two methods were adapted from https_wrapper.py, released # with the Google Appengine SDK at @@ -978,12 +1293,10 @@ def _GetValidHostsForCert(self, cert): Returns: list: A list of valid host globs. """ - if 'subjectAltName' in cert: - return [x[1] for x in cert['subjectAltName'] - if x[0].lower() == 'dns'] + if "subjectAltName" in cert: + return [x[1] for x in cert["subjectAltName"] if x[0].lower() == "dns"] else: - return [x[0][1] for x in cert['subject'] - if x[0][0].lower() == 'commonname'] + return [x[0][1] for x in cert["subject"] if x[0][0].lower() == "commonname"] def _ValidateCertificateHostname(self, cert, hostname): """Validates that a given hostname is valid for an SSL certificate. @@ -996,8 +1309,8 @@ def _ValidateCertificateHostname(self, cert, hostname): """ hosts = self._GetValidHostsForCert(cert) for host in hosts: - host_re = host.replace('.', '\.').replace('*', '[^.]*') - if re.search('^%s$' % (host_re,), hostname, re.I): + host_re = host.replace(".", "\.").replace("*", "[^.]*") + if re.search("^%s$" % (host_re,), hostname, re.I): return True return False @@ -1007,7 +1320,9 @@ def connect(self): msg = "getaddrinfo returns an empty list" if self.proxy_info and self.proxy_info.isgood(): use_proxy = True - proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass = self.proxy_info.astuple() + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( + self.proxy_info.astuple() + ) host = proxy_host port = proxy_port @@ -1023,29 +1338,66 @@ def connect(self): if use_proxy: sock = socks.socksocket(family, socktype, proto) - sock.setproxy(proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass) + sock.setproxy( + proxy_type, + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) else: sock = socket.socket(family, socktype, proto) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) if has_timeout(self.timeout): sock.settimeout(self.timeout) - sock.connect((self.host, self.port)) - self.sock =_ssl_wrap_socket( - sock, self.key_file, self.cert_file, - self.disable_ssl_certificate_validation, self.ca_certs) + + if use_proxy: + sock.connect((self.host, self.port) + sockaddr[:2]) + else: + sock.connect(sockaddr) + self.sock = _ssl_wrap_socket( + sock, + self.key_file, + self.cert_file, + self.disable_ssl_certificate_validation, + self.ca_certs, + self.ssl_version, + self.host, + ) if self.debuglevel > 0: - print "connect: (%s, %s)" % (self.host, self.port) + print("connect: (%s, %s)" % (self.host, self.port)) if use_proxy: - print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + print( + "proxy: %s" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) if not self.disable_ssl_certificate_validation: cert = self.sock.getpeercert() - hostname = self.host.split(':', 0)[0] + hostname = self.host.split(":", 0)[0] if not self._ValidateCertificateHostname(cert, hostname): raise CertificateHostnameMismatch( - 'Server presented certificate that does not match ' - 'host %s: %s' % (hostname, cert), hostname, cert) - except ssl_SSLError, e: + "Server presented certificate that does not match " + "host %s: %s" % (hostname, cert), + hostname, + cert, + ) + except ( + ssl_SSLError, + ssl_CertificateError, + CertificateHostnameMismatch, + ) as e: if sock: sock.close() if self.sock: @@ -1055,87 +1407,153 @@ def connect(self): # to get at more detailed error information, in particular # whether the error is due to certificate validation or # something else (such as SSL protocol mismatch). - if e.errno == ssl.SSL_ERROR_SSL: + if getattr(e, "errno", None) == ssl.SSL_ERROR_SSL: raise SSLHandshakeError(e) else: raise except (socket.timeout, socket.gaierror): raise - except socket.error, msg: + except socket.error as msg: if self.debuglevel > 0: - print "connect fail: (%s, %s)" % (self.host, self.port) + print("connect fail: (%s, %s)" % (self.host, self.port)) if use_proxy: - print "proxy: %s" % str((proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass)) + print( + "proxy: %s" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) if self.sock: self.sock.close() self.sock = None continue break if not self.sock: - raise socket.error, msg + raise socket.error(msg) + SCHEME_TO_CONNECTION = { - 'http': HTTPConnectionWithTimeout, - 'https': HTTPSConnectionWithTimeout + "http": HTTPConnectionWithTimeout, + "https": HTTPSConnectionWithTimeout, } -# Use a different connection object for Google App Engine + +def _new_fixed_fetch(validate_certificate): + + def fixed_fetch( + url, + payload=None, + method="GET", + headers={}, + allow_truncated=False, + follow_redirects=True, + deadline=None, + ): + return fetch( + url, + payload=payload, + method=method, + headers=headers, + allow_truncated=allow_truncated, + follow_redirects=follow_redirects, + deadline=deadline, + validate_certificate=validate_certificate, + ) + + return fixed_fetch + + +class AppEngineHttpConnection(httplib.HTTPConnection): + """Use httplib on App Engine, but compensate for its weirdness. + + The parameters key_file, cert_file, proxy_info, ca_certs, + disable_ssl_certificate_validation, and ssl_version are all dropped on + the ground. + """ + + def __init__( + self, + host, + port=None, + key_file=None, + cert_file=None, + strict=None, + timeout=None, + proxy_info=None, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): + httplib.HTTPConnection.__init__( + self, host, port=port, strict=strict, timeout=timeout + ) + + +class AppEngineHttpsConnection(httplib.HTTPSConnection): + """Same as AppEngineHttpConnection, but for HTTPS URIs. + + The parameters proxy_info, ca_certs, disable_ssl_certificate_validation, + and ssl_version are all dropped on the ground. + """ + + def __init__( + self, + host, + port=None, + key_file=None, + cert_file=None, + strict=None, + timeout=None, + proxy_info=None, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): + httplib.HTTPSConnection.__init__( + self, + host, + port=port, + key_file=key_file, + cert_file=cert_file, + strict=strict, + timeout=timeout, + ) + self._fetch = _new_fixed_fetch(not disable_ssl_certificate_validation) + + +# Use a different connection object for Google App Engine Standard Environment. +def is_gae_instance(): + server_software = os.environ.get('SERVER_SOFTWARE', '') + if (server_software.startswith('Google App Engine/') or + server_software.startswith('Development/') or + server_software.startswith('testutil/')): + return True + return False + + try: - try: - from google.appengine.api import apiproxy_stub_map - if apiproxy_stub_map.apiproxy.GetStub('urlfetch') is None: - raise ImportError # Bail out; we're not actually running on App Engine. - from google.appengine.api.urlfetch import fetch - from google.appengine.api.urlfetch import InvalidURLError - except (ImportError, AttributeError): - from google3.apphosting.api import apiproxy_stub_map - if apiproxy_stub_map.apiproxy.GetStub('urlfetch') is None: - raise ImportError # Bail out; we're not actually running on App Engine. - from google3.apphosting.api.urlfetch import fetch - from google3.apphosting.api.urlfetch import InvalidURLError - - def _new_fixed_fetch(validate_certificate): - def fixed_fetch(url, payload=None, method="GET", headers={}, - allow_truncated=False, follow_redirects=True, - deadline=None): - if deadline is None: - deadline = socket.getdefaulttimeout() or 5 - return fetch(url, payload=payload, method=method, headers=headers, - allow_truncated=allow_truncated, - follow_redirects=follow_redirects, deadline=deadline, - validate_certificate=validate_certificate) - return fixed_fetch - - class AppEngineHttpConnection(httplib.HTTPConnection): - """Use httplib on App Engine, but compensate for its weirdness. - - The parameters key_file, cert_file, proxy_info, ca_certs, and - disable_ssl_certificate_validation are all dropped on the ground. - """ - def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=None, proxy_info=None, ca_certs=None, - disable_ssl_certificate_validation=False): - httplib.HTTPConnection.__init__(self, host, port=port, - strict=strict, timeout=timeout) - - class AppEngineHttpsConnection(httplib.HTTPSConnection): - """Same as AppEngineHttpConnection, but for HTTPS URIs.""" - def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=None, proxy_info=None, ca_certs=None, - disable_ssl_certificate_validation=False): - httplib.HTTPSConnection.__init__(self, host, port=port, - key_file=key_file, - cert_file=cert_file, strict=strict, - timeout=timeout) - self._fetch = _new_fixed_fetch( - not disable_ssl_certificate_validation) + if not is_gae_instance(): + raise NotRunningAppEngineEnvironment() + + from google.appengine.api import apiproxy_stub_map + if apiproxy_stub_map.apiproxy.GetStub("urlfetch") is None: + raise ImportError + + from google.appengine.api.urlfetch import fetch # Update the connection classes to use the Googel App Engine specific ones. SCHEME_TO_CONNECTION = { - 'http': AppEngineHttpConnection, - 'https': AppEngineHttpsConnection + "http": AppEngineHttpConnection, + "https": AppEngineHttpsConnection, } -except (ImportError, AttributeError): +except (ImportError, NotRunningAppEngineEnvironment): pass @@ -1153,9 +1571,16 @@ class Http(object): and more. """ - def __init__(self, cache=None, timeout=None, - proxy_info=proxy_info_from_environment, - ca_certs=None, disable_ssl_certificate_validation=False): + + def __init__( + self, + cache=None, + timeout=None, + proxy_info=proxy_info_from_environment, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): """If 'cache' is a string then it is used as a directory name for a disk cache. Otherwise it must be an object that supports the same interface as FileCache. @@ -1178,11 +1603,13 @@ def __init__(self, cache=None, timeout=None, If disable_ssl_certificate_validation is true, SSL cert validation will not be performed. + + By default, ssl.PROTOCOL_SSLv23 will be used for the ssl version. """ self.proxy_info = proxy_info self.ca_certs = ca_certs - self.disable_ssl_certificate_validation = \ - disable_ssl_certificate_validation + self.disable_ssl_certificate_validation = disable_ssl_certificate_validation + self.ssl_version = ssl_version # Map domain name to an httplib connection self.connections = {} @@ -1226,10 +1653,10 @@ def __getstate__(self): state_dict = copy.copy(self.__dict__) # In case request is augmented by some foreign object such as # credentials which handle auth - if 'request' in state_dict: - del state_dict['request'] - if 'connections' in state_dict: - del state_dict['connections'] + if "request" in state_dict: + del state_dict["request"] + if "connections" in state_dict: + del state_dict["connections"] return state_dict def __setstate__(self, state): @@ -1240,11 +1667,13 @@ def _auth_from_challenge(self, host, request_uri, headers, response, content): """A generator that creates Authorization objects that can be applied to requests. """ - challenges = _parse_www_authenticate(response, 'www-authenticate') + challenges = _parse_www_authenticate(response, "www-authenticate") for cred in self.credentials.iter(host): for scheme in AUTH_SCHEME_ORDER: - if challenges.has_key(scheme): - yield AUTH_SCHEME_CLASSES[scheme](cred, host, request_uri, headers, response, content, self) + if scheme in challenges: + yield AUTH_SCHEME_CLASSES[scheme]( + cred, host, request_uri, headers, response, content, self + ) def add_credentials(self, name, password, domain=""): """Add a name and password that will be used @@ -1268,7 +1697,7 @@ def _conn_request(self, conn, request_uri, method, body, headers): while i < RETRIES: i += 1 try: - if hasattr(conn, 'sock') and conn.sock is None: + if hasattr(conn, "sock") and conn.sock is None: conn.connect() conn.request(method, request_uri, body, headers) except socket.timeout: @@ -1279,26 +1708,28 @@ def _conn_request(self, conn, request_uri, method, body, headers): except ssl_SSLError: conn.close() raise - except socket.error, e: + except socket.error as e: err = 0 - if hasattr(e, 'args'): - err = getattr(e, 'args')[0] + if hasattr(e, "args"): + err = getattr(e, "args")[0] else: err = e.errno - if err == errno.ECONNREFUSED: # Connection refused + if err == errno.ECONNREFUSED: # Connection refused raise + if err in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES: + continue # retry on potentially transient socket errors except httplib.HTTPException: # Just because the server closed the connection doesn't apparently mean # that the server didn't send a response. - if hasattr(conn, 'sock') and conn.sock is None: - if i < RETRIES-1: + if hasattr(conn, "sock") and conn.sock is None: + if i < RETRIES - 1: conn.close() conn.connect() continue else: conn.close() raise - if i < RETRIES-1: + if i < RETRIES - 1: conn.close() conn.connect() continue @@ -1318,7 +1749,7 @@ def _conn_request(self, conn, request_uri, method, body, headers): conn.close() raise except (socket.error, httplib.HTTPException): - if i < RETRIES-1: + if i < RETRIES - 1: conn.close() conn.connect() continue @@ -1337,77 +1768,121 @@ def _conn_request(self, conn, request_uri, method, body, headers): break return (response, content) - - def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey): + def _request( + self, + conn, + host, + absolute_uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ): """Do the actual request using the connection object and also follow one level of redirects if necessary""" - auths = [(auth.depth(request_uri), auth) for auth in self.authorizations if auth.inscope(host, request_uri)] + auths = [ + (auth.depth(request_uri), auth) + for auth in self.authorizations + if auth.inscope(host, request_uri) + ] auth = auths and sorted(auths)[0][1] or None if auth: auth.request(method, request_uri, headers, body) - (response, content) = self._conn_request(conn, request_uri, method, body, headers) + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) if auth: if auth.response(response, body): auth.request(method, request_uri, headers, body) - (response, content) = self._conn_request(conn, request_uri, method, body, headers ) + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) response._stale_digest = 1 if response.status == 401: - for authorization in self._auth_from_challenge(host, request_uri, headers, response, content): + for authorization in self._auth_from_challenge( + host, request_uri, headers, response, content + ): authorization.request(method, request_uri, headers, body) - (response, content) = self._conn_request(conn, request_uri, method, body, headers, ) + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) if response.status != 401: self.authorizations.append(authorization) authorization.response(response, body) break - if (self.follow_all_redirects or (method in ["GET", "HEAD"]) or response.status == 303): + if ( + self.follow_all_redirects + or (method in ["GET", "HEAD"]) + or response.status == 303 + ): if self.follow_redirects and response.status in [300, 301, 302, 303, 307]: # Pick out the location header and basically start from the beginning # remembering first to strip the ETag header and decrement our 'depth' if redirections: - if not response.has_key('location') and response.status != 300: - raise RedirectMissingLocation( _("Redirected but the response is missing a Location: header."), response, content) + if "location" not in response and response.status != 300: + raise RedirectMissingLocation( + _( + "Redirected but the response is missing a Location: header." + ), + response, + content, + ) # Fix-up relative redirects (which violate an RFC 2616 MUST) - if response.has_key('location'): - location = response['location'] + if "location" in response: + location = response["location"] (scheme, authority, path, query, fragment) = parse_uri(location) if authority == None: - response['location'] = urlparse.urljoin(absolute_uri, location) + response["location"] = urlparse.urljoin( + absolute_uri, location + ) if response.status == 301 and method in ["GET", "HEAD"]: - response['-x-permanent-redirect-url'] = response['location'] - if not response.has_key('content-location'): - response['content-location'] = absolute_uri + response["-x-permanent-redirect-url"] = response["location"] + if "content-location" not in response: + response["content-location"] = absolute_uri _updateCache(headers, response, content, self.cache, cachekey) - if headers.has_key('if-none-match'): - del headers['if-none-match'] - if headers.has_key('if-modified-since'): - del headers['if-modified-since'] - if 'authorization' in headers and not self.forward_authorization_headers: - del headers['authorization'] - if response.has_key('location'): - location = response['location'] + if "if-none-match" in headers: + del headers["if-none-match"] + if "if-modified-since" in headers: + del headers["if-modified-since"] + if ( + "authorization" in headers + and not self.forward_authorization_headers + ): + del headers["authorization"] + if "location" in response: + location = response["location"] old_response = copy.deepcopy(response) - if not old_response.has_key('content-location'): - old_response['content-location'] = absolute_uri + if "content-location" not in old_response: + old_response["content-location"] = absolute_uri redirect_method = method if response.status in [302, 303]: redirect_method = "GET" body = None (response, content) = self.request( - location, method=redirect_method, - body=body, headers=headers, - redirections=redirections - 1) + location, + method=redirect_method, + body=body, + headers=headers, + redirections=redirections - 1, + ) response.previous = old_response else: - raise RedirectLimit("Redirected more times than rediection_limit allows.", response, content) + raise RedirectLimit( + "Redirected more times than rediection_limit allows.", + response, + content, + ) elif response.status in [200, 203] and method in ["GET", "HEAD"]: # Don't cache 206's since we aren't going to handle byte range requests - if not response.has_key('content-location'): - response['content-location'] = absolute_uri + if "content-location" not in response: + response["content-location"] = absolute_uri _updateCache(headers, response, content, self.cache, cachekey) return (response, content) @@ -1415,12 +1890,19 @@ def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, def _normalize_headers(self, headers): return _normalize_headers(headers) -# Need to catch and rebrand some exceptions -# Then need to optionally turn all exceptions into status codes -# including all socket.* and httplib.* exceptions. - - - def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None): + # Need to catch and rebrand some exceptions + # Then need to optionally turn all exceptions into status codes + # including all socket.* and httplib.* exceptions. + + def request( + self, + uri, + method="GET", + body=None, + headers=None, + redirections=DEFAULT_MAX_REDIRECTS, + connection_type=None, + ): """ Performs a single HTTP request. The 'uri' is the URI of the HTTP resource and can begin with either @@ -1448,55 +1930,55 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU else: headers = self._normalize_headers(headers) - if not headers.has_key('user-agent'): - headers['user-agent'] = "Python-httplib2/%s (gzip)" % __version__ + if "user-agent" not in headers: + headers["user-agent"] = "Python-httplib2/%s (gzip)" % __version__ uri = iri2uri(uri) (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) - domain_port = authority.split(":")[0:2] - if len(domain_port) == 2 and domain_port[1] == '443' and scheme == 'http': - scheme = 'https' - authority = domain_port[0] proxy_info = self._get_proxy_info(scheme, authority) - conn_key = scheme+":"+authority - if conn_key in self.connections: - conn = self.connections[conn_key] - else: + conn_key = scheme + ":" + authority + conn = self.connections.get(conn_key) + if conn is None: if not connection_type: connection_type = SCHEME_TO_CONNECTION[scheme] certs = list(self.certificates.iter(authority)) - if scheme == 'https': + if scheme == "https": if certs: conn = self.connections[conn_key] = connection_type( - authority, key_file=certs[0][0], - cert_file=certs[0][1], timeout=self.timeout, - proxy_info=proxy_info, - ca_certs=self.ca_certs, - disable_ssl_certificate_validation= - self.disable_ssl_certificate_validation) + authority, + key_file=certs[0][0], + cert_file=certs[0][1], + timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, + ssl_version=self.ssl_version, + ) else: conn = self.connections[conn_key] = connection_type( - authority, timeout=self.timeout, - proxy_info=proxy_info, - ca_certs=self.ca_certs, - disable_ssl_certificate_validation= - self.disable_ssl_certificate_validation) + authority, + timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, + ssl_version=self.ssl_version, + ) else: conn = self.connections[conn_key] = connection_type( - authority, timeout=self.timeout, - proxy_info=proxy_info) + authority, timeout=self.timeout, proxy_info=proxy_info + ) conn.set_debuglevel(debuglevel) - if 'range' not in headers and 'accept-encoding' not in headers: - headers['accept-encoding'] = 'gzip, deflate' + if "range" not in headers and "accept-encoding" not in headers: + headers["accept-encoding"] = "gzip, deflate" info = email.Message.Message() cached_value = None if self.cache: - cachekey = defrag_uri.encode('utf-8') + cachekey = defrag_uri.encode("utf-8") cached_value = self.cache.get(cachekey) if cached_value: # info = email.message_from_string(cached_value) @@ -1505,7 +1987,7 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU # to fix the non-existent bug not fixed in this # bug report: http://mail.python.org/pipermail/python-bugs-list/2005-September/030289.html try: - info, content = cached_value.split('\r\n\r\n', 1) + info, content = cached_value.split("\r\n\r\n", 1) feedparser = email.FeedParser.FeedParser() feedparser.feed(info) info = feedparser.close() @@ -1517,9 +1999,15 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU else: cachekey = None - if method in self.optimistic_concurrency_methods and self.cache and info.has_key('etag') and not self.ignore_etag and 'if-match' not in headers: + if ( + method in self.optimistic_concurrency_methods + and self.cache + and "etag" in info + and not self.ignore_etag + and "if-match" not in headers + ): # http://www.w3.org/1999/04/Editing/ - headers['if-match'] = info['etag'] + headers["if-match"] = info["etag"] if method not in ["GET", "HEAD"] and self.cache and cachekey: # RFC 2616 Section 13.10 @@ -1527,24 +2015,36 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU # Check the vary header in the cache to see if this request # matches what varies in the cache. - if method in ['GET', 'HEAD'] and 'vary' in info: - vary = info['vary'] - vary_headers = vary.lower().replace(' ', '').split(',') + if method in ["GET", "HEAD"] and "vary" in info: + vary = info["vary"] + vary_headers = vary.lower().replace(" ", "").split(",") for header in vary_headers: - key = '-varied-%s' % header + key = "-varied-%s" % header value = info[key] if headers.get(header, None) != value: cached_value = None break - if cached_value and method in ["GET", "HEAD"] and self.cache and 'range' not in headers: - if info.has_key('-x-permanent-redirect-url'): + if ( + cached_value + and method in ["GET", "HEAD"] + and self.cache + and "range" not in headers + ): + if "-x-permanent-redirect-url" in info: # Should cached permanent redirects be counted in our redirection count? For now, yes. if redirections <= 0: - raise RedirectLimit("Redirected more times than rediection_limit allows.", {}, "") + raise RedirectLimit( + "Redirected more times than rediection_limit allows.", + {}, + "", + ) (response, new_content) = self.request( - info['-x-permanent-redirect-url'], method='GET', - headers=headers, redirections=redirections - 1) + info["-x-permanent-redirect-url"], + method="GET", + headers=headers, + redirections=redirections - 1, + ) response.previous = Response(info) response.previous.fromcache = True else: @@ -1560,7 +2060,7 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU if entry_disposition == "FRESH": if not cached_value: - info['status'] = '504' + info["status"] = "504" content = "" response = Response(info) if cached_value: @@ -1568,14 +2068,28 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU return (response, content) if entry_disposition == "STALE": - if info.has_key('etag') and not self.ignore_etag and not 'if-none-match' in headers: - headers['if-none-match'] = info['etag'] - if info.has_key('last-modified') and not 'last-modified' in headers: - headers['if-modified-since'] = info['last-modified'] + if ( + "etag" in info + and not self.ignore_etag + and not "if-none-match" in headers + ): + headers["if-none-match"] = info["etag"] + if "last-modified" in info and not "last-modified" in headers: + headers["if-modified-since"] = info["last-modified"] elif entry_disposition == "TRANSPARENT": pass - (response, new_content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) + (response, new_content) = self._request( + conn, + authority, + uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ) if response.status == 304 and method == "GET": # Rewrite the cache entry with the new end-to-end headers @@ -1588,7 +2102,9 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU merged_response = Response(info) if hasattr(response, "_stale_digest"): merged_response._stale_digest = response._stale_digest - _updateCache(headers, merged_response, content, self.cache, cachekey) + _updateCache( + headers, merged_response, content, self.cache, cachekey + ) response = merged_response response.status = 200 response.fromcache = True @@ -1600,13 +2116,23 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU content = new_content else: cc = _parse_cache_control(headers) - if cc.has_key('only-if-cached'): - info['status'] = '504' + if "only-if-cached" in cc: + info["status"] = "504" response = Response(info) content = "" else: - (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) - except Exception, e: + (response, content) = self._request( + conn, + authority, + uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ) + except Exception as e: if self.force_exception_to_status_code: if isinstance(e, HttpLib2ErrorWithResponse): response = e.response @@ -1615,24 +2141,27 @@ def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAU response.reason = str(e) elif isinstance(e, socket.timeout): content = "Request Timeout" - response = Response({ - "content-type": "text/plain", - "status": "408", - "content-length": len(content) - }) + response = Response( + { + "content-type": "text/plain", + "status": "408", + "content-length": len(content), + } + ) response.reason = "Request Timeout" else: content = str(e) - response = Response({ - "content-type": "text/plain", - "status": "400", - "content-length": len(content) - }) + response = Response( + { + "content-type": "text/plain", + "status": "400", + "content-length": len(content), + } + ) response.reason = "Bad Request" else: raise - return (response, content) def _get_proxy_info(self, scheme, authority): @@ -1644,8 +2173,7 @@ def _get_proxy_info(self, scheme, authority): if callable(proxy_info): proxy_info = proxy_info(scheme) - if (hasattr(proxy_info, 'applies_to') - and not proxy_info.applies_to(hostname)): + if hasattr(proxy_info, "applies_to") and not proxy_info.applies_to(hostname): proxy_info = None return proxy_info @@ -1655,13 +2183,14 @@ class Response(dict): """Is this response from our local cache""" fromcache = False + """HTTP protocol version used by server. - """HTTP protocol version used by server. 10 for HTTP/1.0, 11 for HTTP/1.1. """ + 10 for HTTP/1.0, 11 for HTTP/1.1. + """ version = 11 "Status code returned by server. " status = 200 - """Reason phrase returned by server.""" reason = "Ok" @@ -1674,22 +2203,21 @@ def __init__(self, info): for key, value in info.getheaders(): self[key.lower()] = value self.status = info.status - self['status'] = str(self.status) + self["status"] = str(self.status) self.reason = info.reason self.version = info.version elif isinstance(info, email.Message.Message): for key, value in info.items(): self[key.lower()] = value - self.status = int(self['status']) + self.status = int(self["status"]) else: for key, value in info.iteritems(): self[key.lower()] = value - self.status = int(self.get('status', self.status)) - self.reason = self.get('reason', self.reason) - + self.status = int(self.get("status", self.status)) + self.reason = self.get("reason", self.reason) def __getattr__(self, name): - if name == 'dict': + if name == "dict": return self else: - raise AttributeError, name + raise AttributeError(name) diff --git a/shotgun_api3/lib/httplib2/cacerts.txt b/shotgun_api3/lib/httplib2/cacerts.txt index 8603efdec..a2a9833de 100644 --- a/shotgun_api3/lib/httplib2/cacerts.txt +++ b/shotgun_api3/lib/httplib2/cacerts.txt @@ -1,7 +1,3 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - # Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. # Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. # Label: "GTE CyberTrust Global Root" @@ -106,28 +102,6 @@ A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 -----END CERTIFICATE----- -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 149843929435818692848040365716851702463 -# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 -# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 -# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- - # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network # Label: "Verisign Class 3 Public Primary Certification Authority - G2" @@ -395,17 +369,17 @@ hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN # Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Label: "Entrust.net Premium 2048 Secure Server CA" -# Serial: 946069240 -# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 -# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 -# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 +# Serial: 946059622 +# MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc +# SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe +# SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f -----BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 -MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy +MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp @@ -415,14 +389,15 @@ sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub -j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo -U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b -u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ -bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er -fF6adulZkMV8gzURZVE= +4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA +vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G +CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA +WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ +h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 +f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN +B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy +vUxFnmG6v4SBkgPR0ml8xQ== -----END CERTIFICATE----- # Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust @@ -502,6 +477,33 @@ WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN /Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== -----END CERTIFICATE----- +# Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Label: "Equifax Secure eBusiness CA 2" +# Serial: 930140085 +# MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca +# SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc +# SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj +dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 +NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD +VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G +vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ +BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl +IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw +NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq +y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy +0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 +E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN +-----END CERTIFICATE----- + # Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Low-Value Services Root" @@ -667,35 +669,6 @@ eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m 0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- -# Issuer: O=RSA Security Inc OU=RSA Security 2048 V3 -# Subject: O=RSA Security Inc OU=RSA Security 2048 V3 -# Label: "RSA Security 2048 v3" -# Serial: 13297492616345471454730593562152402946 -# MD5 Fingerprint: 77:0d:19:b1:21:fd:00:42:9c:3e:0c:a5:dd:0b:02:8e -# SHA1 Fingerprint: 25:01:90:19:cf:fb:d9:99:1c:b7:68:25:74:8d:94:5f:30:93:95:42 -# SHA256 Fingerprint: af:8b:67:62:a1:e5:28:22:81:61:a9:5d:5c:55:9e:e2:66:27:8f:75:d7:9e:83:01:89:a5:03:50:6a:bd:6b:4c ------BEGIN CERTIFICATE----- -MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6 -MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJp -dHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAX -BgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJTQSBTZWN1cml0eSAy -MDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt49VcdKA3Xtp -eafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7Jylg -/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGl -wSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnh -AMFRD0xS+ARaqn1y07iHKrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2 -PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpu -AWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NR -MKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYc -HnmYv/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/ -Zb5gEydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+ -f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVO -rSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEkllgVsRch -6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kApKnXwiJPZ9d3 -7CAFYd4= ------END CERTIFICATE----- - # Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. # Subject: CN=GeoTrust Global CA O=GeoTrust Inc. # Label: "GeoTrust Global CA" @@ -902,63 +875,6 @@ Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw RY8mkaKO/qk= -----END CERTIFICATE----- -# Issuer: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association -# Subject: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association -# Label: "Visa eCommerce Root" -# Serial: 25952180776285836048024890241505565794 -# MD5 Fingerprint: fc:11:b8:d8:08:93:30:00:6d:23:f9:7e:eb:52:1e:02 -# SHA1 Fingerprint: 70:17:9b:86:8c:00:a4:fa:60:91:52:22:3f:9f:3e:32:bd:e0:05:62 -# SHA256 Fingerprint: 69:fa:c9:bd:55:fb:0a:c7:8d:53:bb:ee:5c:f1:d5:97:98:9f:d0:aa:ab:20:a2:51:51:bd:f1:73:3e:e7:d1:22 ------BEGIN CERTIFICATE----- -MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr -MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl -cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv -bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw -CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h -dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l -cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h -2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E -lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV -ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq -299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t -vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL -dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF -AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR -zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3 -LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd -7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw -++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt -398znM/jra6O1I7mT1GvFpLgXPYHDw== ------END CERTIFICATE----- - -# Issuer: CN=Certum CA O=Unizeto Sp. z o.o. -# Subject: CN=Certum CA O=Unizeto Sp. z o.o. -# Label: "Certum Root CA" -# Serial: 65568 -# MD5 Fingerprint: 2c:8f:9f:66:1d:18:90:b1:47:26:9d:8e:86:82:8c:a9 -# SHA1 Fingerprint: 62:52:dc:40:f7:11:43:a2:2f:de:9e:f7:34:8e:06:42:51:b1:81:18 -# SHA256 Fingerprint: d8:e0:fe:bc:1d:b2:e3:8d:00:94:0f:37:d2:7d:41:34:4d:99:3e:73:4b:99:d5:65:6d:97:78:d4:d8:14:36:24 ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- - # Issuer: CN=AAA Certificate Services O=Comodo CA Limited # Subject: CN=AAA Certificate Services O=Comodo CA Limited # Label: "Comodo AAA Services root" @@ -1058,253 +974,6 @@ xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi -----END CERTIFICATE----- -# Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority -# Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority -# Label: "QuoVadis Root CA" -# Serial: 985026699 -# MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24 -# SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9 -# SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73 ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz -MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw -IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR -dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp -li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D -rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ -WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug -F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU -xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC -Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv -dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw -ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl -IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh -c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy -ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI -KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T -KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq -y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p -dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD -VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL -MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk -fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 -7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R -cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y -mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW -xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK -SnQ2+Q== ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Label: "QuoVadis Root CA 2" -# Serial: 1289 -# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b -# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 -# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa -GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg -Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J -WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB -rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp -+ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 -ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i -Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz -PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og -/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH -oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI -yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud -EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 -A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL -MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f -BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn -g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl -fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K -WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha -B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc -hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR -TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD -mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z -ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y -4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza -8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 3" -# Serial: 1478 -# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf -# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 -# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM -V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB -4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr -H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd -8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv -vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT -mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe -btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc -T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt -WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ -c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A -4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD -VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG -CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 -aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu -dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw -czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G -A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg -Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 -7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem -d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd -+LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B -4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN -t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x -DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 -k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s -zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j -Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT -mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK -4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 -# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 -# Label: "Security Communication Root CA" -# Serial: 0 -# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a -# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 -# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- - -# Issuer: CN=Sonera Class2 CA O=Sonera -# Subject: CN=Sonera Class2 CA O=Sonera -# Label: "Sonera Class 2 Root CA" -# Serial: 29 -# MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb -# SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27 -# SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27 ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden -# Label: "Staat der Nederlanden Root CA" -# Serial: 10000010 -# MD5 Fingerprint: 60:84:7c:5a:ce:db:0c:d4:cb:a7:e9:fe:02:c6:a9:c0 -# SHA1 Fingerprint: 10:1d:fa:3f:d5:0b:cb:bb:9b:b5:60:0c:19:55:a4:1a:f4:73:3a:04 -# SHA256 Fingerprint: d4:1d:82:9e:8c:16:59:82:2a:f9:3f:ce:62:bf:fc:de:26:4f:c8:4e:8b:95:0c:5f:f2:75:d0:52:35:46:95:a3 ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJO -TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEy -MTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4wHAYDVQQKExVTdGFhdCBkZXIgTmVk -ZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENB -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFtvszn -ExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw71 -9tV2U02PjLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MO -hXeiD+EwR+4A5zN9RGcaC1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+U -tFE5A3+y3qcym7RHjm+0Sq7lr7HcsBthvJly3uSJt3omXdozSVtSnA71iq3DuD3o -BmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn622r+I/q85Ej0ZytqERAh -SQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRVHSAAMDww -OgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMv -cm9vdC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA -7Jbg0zTBLL9s+DANBgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k -/rvuFbQvBgwp8qiSpGEN/KtcCFtREytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzm -eafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbwMVcoEoJz6TMvplW0C5GUR5z6 -u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3ynGQI0DvDKcWy -7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR -iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== ------END CERTIFICATE----- - -# Issuer: O=TDC Internet OU=TDC Internet Root CA -# Subject: O=TDC Internet OU=TDC Internet Root CA -# Label: "TDC Internet Root CA" -# Serial: 986490188 -# MD5 Fingerprint: 91:f4:03:55:20:a1:f8:63:2c:62:de:ac:fb:61:1c:8e -# SHA1 Fingerprint: 21:fc:bd:8e:7f:6c:af:05:1b:d1:b3:43:ec:a8:e7:61:47:f2:0f:8a -# SHA256 Fingerprint: 48:98:c6:88:8c:0c:ff:b0:d3:e3:1a:ca:8a:37:d4:e3:51:5f:f7:46:d0:26:35:d8:66:46:cf:a0:a3:18:5a:e7 ------BEGIN CERTIFICATE----- -MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJE -SzEVMBMGA1UEChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQg -Um9vdCBDQTAeFw0wMTA0MDUxNjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNV -BAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJuZXQxHTAbBgNVBAsTFFREQyBJbnRl -cm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxLhA -vJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20jxsNu -Zp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a -0vnRrEvLznWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc1 -4izbSysseLlJ28TQx5yc5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGN -eGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcD -R0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZIAYb4QgEBBAQDAgAHMGUG -A1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMMVERDIElu -dGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxME -Q1JMMTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3 -WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAw -HQYDVR0OBBYEFGxkAcf9hW2syNqeUAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJ -KoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4IBAQBO -Q8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540mgwV5dOy0uaOX -wTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ -2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm89 -9qNLPg7kbWzbO0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0 -jUNAE4z9mQNUecYu6oah9jrUCbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38 -aQNiuJkFBT1reBK9sG9l ------END CERTIFICATE----- - # Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Label: "UTN DATACorp SGC Root CA" @@ -1373,201 +1042,6 @@ CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== -----END CERTIFICATE----- -# Issuer: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Chambers of Commerce Root" -# Serial: 0 -# MD5 Fingerprint: b0:01:ee:14:d9:af:29:18:94:76:8e:f1:69:33:2a:84 -# SHA1 Fingerprint: 6e:3a:55:a4:19:0c:19:5c:93:84:3c:c0:db:72:2e:31:30:61:f0:b1 -# SHA256 Fingerprint: 0c:25:8a:12:a5:67:4a:ef:25:f2:8b:a7:dc:fa:ec:ee:a3:48:e5:41:e6:f5:cc:4e:e6:3b:71:b3:61:60:6a:c3 ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- - -# Issuer: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Global Chambersign Root" -# Serial: 0 -# MD5 Fingerprint: c5:e6:7b:bf:06:d0:4f:43:ed:c4:7a:65:8a:fb:6b:19 -# SHA1 Fingerprint: 33:9b:6b:14:50:24:9b:55:7a:01:87:72:84:d9:e0:2f:c3:d2:d8:e9 -# SHA256 Fingerprint: ef:3c:b4:17:fc:8e:bf:6f:97:87:6c:9e:4e:ce:39:de:1e:a5:fe:64:91:41:d1:02:8b:7d:11:c0:b2:29:8c:ed ------BEGIN CERTIFICATE----- -MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo -YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 -MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy -NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G -A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA -A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 -Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s -QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV -eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 -B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh -z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T -AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i -ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w -TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH -MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD -VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE -VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh -bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B -AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM -bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi -ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG -VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c -ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ -AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== ------END CERTIFICATE----- - -# Issuer: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Notary (Class A) Root" -# Serial: 259 -# MD5 Fingerprint: 86:38:6d:5e:49:63:6c:85:5c:db:6d:dc:94:b7:d0:f7 -# SHA1 Fingerprint: ac:ed:5f:65:53:fd:25:ce:01:5f:1f:7a:48:3b:6a:74:9f:61:78:c6 -# SHA256 Fingerprint: 7f:12:cd:5f:7e:5e:29:0e:c7:d8:51:79:d5:b7:2c:20:a5:be:75:08:ff:db:5b:f8:1a:b9:68:4a:7f:c9:f6:67 ------BEGIN CERTIFICATE----- -MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhV -MRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMe -TmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0 -dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFzcyBB -KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oXDTE5MDIxOTIzMTQ0 -N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhC -dWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQu -MRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBL -b3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSMD7tM9DceqQWC2ObhbHDqeLVu0ThEDaiD -zl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZz+qMkjvN9wfcZnSX9EUi -3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC/tmwqcm8 -WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LY -Oph7tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2Esi -NCubMvJIH5+hCoR64sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCC -ApswDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4 -QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZRUxFTSEgRXplbiB0 -YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRhdGFz -aSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu -IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtm -ZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMg -ZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVs -amFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJhc2EgbWVndGFsYWxoYXRv -IGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBzOi8vd3d3 -Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6 -ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1 -YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3Qg -dG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRs -b2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNAbmV0bG9jay5uZXQuMA0G -CSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5ayZrU3/b39/zcT0mwBQO -xmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjPytoUMaFP -0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQ -QeJBCWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxk -f1qbFFgBJ34TUMdrKuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK -8CtmdWOMovsEPoMOmzbwGOQmIMOM8CgHrTwXZoi1/baI ------END CERTIFICATE----- - -# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Business (Class B) Root" -# Serial: 105 -# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 -# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af -# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 ------BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD -EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 -OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l -dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG -SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK -gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX -iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc -Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E -BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G -SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu -b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh -bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv -Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln -aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 -IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph -biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo -ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP -UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj -YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA -bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 -sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa -n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS -NitjrFgBazMpUIaD8QFI ------END CERTIFICATE----- - -# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Express (Class C) Root" -# Serial: 104 -# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 -# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b -# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f ------BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD -EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X -DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw -DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u -c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr -TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA -OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC -2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW -RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P -AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW -ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 -YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz -b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO -ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB -IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs -b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s -YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg -a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g -SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 -aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg -YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg -Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY -ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g -pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 -Fp1hBWeAyNDYpQcCNJgEjTME1A== ------END CERTIFICATE----- - # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Label: "XRamp Global CA Root" @@ -1601,6 +1075,38 @@ i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ O+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + # Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority # Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority # Label: "Starfield Class 2 CA" @@ -1685,88 +1191,6 @@ um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= -----END CERTIFICATE----- -# Issuer: O=Government Root Certification Authority -# Subject: O=Government Root Certification Authority -# Label: "Taiwan GRCA" -# Serial: 42023070807708724159991140556527066870 -# MD5 Fingerprint: 37:85:44:53:32:45:1f:20:f0:f3:95:e1:25:c4:43:4e -# SHA1 Fingerprint: f4:8b:11:bf:de:ab:be:94:54:20:71:e6:41:de:6b:be:88:2b:40:b9 -# SHA256 Fingerprint: 76:00:29:5e:ef:e8:5b:9e:1f:d6:24:db:76:06:2a:aa:ae:59:81:8a:54:d2:77:4c:d4:c0:b2:c0:11:31:e1:b3 ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ -MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow -PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR -IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q -gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy -yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts -F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 -jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx -ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC -VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK -YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH -EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN -Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud -DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE -MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK -UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf -qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK -ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE -JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 -hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 -EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm -nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX -udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz -ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe -LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl -pYYsfPQS ------END CERTIFICATE----- - -# Issuer: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services -# Subject: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services -# Label: "Swisscom Root CA 1" -# Serial: 122348795730808398873664200247279986742 -# MD5 Fingerprint: f8:38:7c:77:88:df:2c:16:68:2e:c2:e2:52:4b:b8:f9 -# SHA1 Fingerprint: 5f:3a:fc:0a:8b:64:f6:86:67:34:74:df:7e:a9:a2:fe:f9:fa:7a:51 -# SHA256 Fingerprint: 21:db:20:12:36:60:bb:2e:d4:18:20:5d:a1:1e:e7:a8:5a:65:e2:bc:6e:55:b5:af:7e:78:99:c8:a2:66:d9:2e ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBk -MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 -YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg -Q0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4MTgyMjA2MjBaMGQxCzAJBgNVBAYT -AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp -Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9 -m2BtRsiMMW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdih -FvkcxC7mlSpnzNApbjyFNDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/ -TilftKaNXXsLmREDA/7n29uj/x2lzZAeAR81sH8A25Bvxn570e56eqeqDFdvpG3F -EzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkCb6dJtDZd0KTeByy2dbco -kdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn7uHbHaBu -HYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNF -vJbNcA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo -19AOeCMgkckkKmUpWyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjC -L3UcPX7ape8eYIVpQtPM+GP+HkM5haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJW -bjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNYMUJDLXT5xp6mig/p/r+D5kNX -JLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw -FDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j -BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzc -K6FptWfUjNP9MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzf -ky9NfEBWMXrrpA9gzXrzvsMnjgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7Ik -Vh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQMbFamIp1TpBcahQq4FJHgmDmHtqB -sfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4HVtA4oJVwIHaM190e -3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtlvrsR -ls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ip -mXeascClOS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HH -b6D0jqTsNFFbjCYDcKF31QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksf -rK/7DZBaZmBwXarNeNQk7shBoJMBkpxqnvy5JMWzFYJ+vq6VK+uxwNrjAWALXmms -hFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCyx/yP2FS1k2Kdzs9Z+z0Y -zirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMWNY6E0F/6 -MBr1mmz0DlP5OlvRHA== ------END CERTIFICATE----- - # Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root CA" @@ -1858,243 +1282,6 @@ vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep +OkuE6N36B9K -----END CERTIFICATE----- -# Issuer: CN=Class 2 Primary CA O=Certplus -# Subject: CN=Class 2 Primary CA O=Certplus -# Label: "Certplus Class 2 Primary CA" -# Serial: 177770208045934040241468760488327595043 -# MD5 Fingerprint: 88:2c:8c:52:b8:a2:3c:f3:f7:bb:03:ea:ae:ac:42:0b -# SHA1 Fingerprint: 74:20:74:41:72:9c:dd:92:ec:79:31:d8:23:10:8d:c2:81:92:e2:bb -# SHA256 Fingerprint: 0f:99:3c:8a:ef:97:ba:af:56:87:14:0e:d5:9a:d1:82:1b:b4:af:ac:f0:aa:9a:58:b5:d5:7a:33:8a:3a:fb:cb ------BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw -PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz -cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9 -MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz -IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ -ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR -VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL -kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd -EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas -H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0 -HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud -DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4 -QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu -Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/ -AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8 -yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR -FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA -ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB -kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 -l7+ijrRU ------END CERTIFICATE----- - -# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co. -# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co. -# Label: "DST Root CA X3" -# Serial: 91299735575339953335919266965803778155 -# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5 -# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13 -# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39 ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - -# Issuer: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Subject: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Label: "DST ACES CA X6" -# Serial: 17771143917277623872238992636097467865 -# MD5 Fingerprint: 21:d8:4c:82:2b:99:09:33:a2:eb:14:24:8d:8e:5f:e8 -# SHA1 Fingerprint: 40:54:da:6f:1c:3f:40:74:ac:ed:0f:ec:cd:db:79:d1:53:fb:90:1d -# SHA256 Fingerprint: 76:7c:95:5a:76:41:2c:89:af:68:8e:90:a1:c7:0f:55:6c:fd:6b:60:25:db:ea:10:41:6d:7e:b6:83:1f:8c:40 ------BEGIN CERTIFICATE----- -MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx -ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w -MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD -VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx -FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu -ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 -gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH -fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a -ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT -ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk -c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto -dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt -aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI -hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk -QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ -h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq -nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR -rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 -9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= ------END CERTIFICATE----- - -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=(c) 2005 TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=(c) 2005 TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Label: "TURKTRUST Certificate Services Provider Root 1" -# Serial: 1 -# MD5 Fingerprint: f1:6a:22:18:c9:cd:df:ce:82:1d:1d:b7:78:5c:a9:a5 -# SHA1 Fingerprint: 79:98:a3:08:e1:4d:65:85:e6:c2:1e:15:3a:71:9f:ba:5a:d3:4a:d9 -# SHA256 Fingerprint: 44:04:e3:3b:5e:14:0d:cf:99:80:51:fd:fc:80:28:c7:c8:16:15:c5:ee:73:7b:11:1b:58:82:33:a9:b5:35:a0 ------BEGIN CERTIFICATE----- -MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGDAJUUjEPMA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykg -MjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 -dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMxMDI3MTdaFw0xNTAz -MjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2Vy -dGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYD -VQQHDAZBTktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kg -xLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEu -xZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7 -XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GXyGl8hMW0kWxsE2qkVa2k -heiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8iSi9BB35J -YbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5C -urKZ8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1 -JuTm5Rh8i27fbMx4W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51 -b0dewQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV -9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46sWrv7/hg0Uw2ZkUd82YCdAR7 -kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxEq8Sn5RTOPEFh -fEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy -B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdA -aLX/7KfS0zgYnNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKS -RGQDJereW26fyfJOrN3H ------END CERTIFICATE----- - -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 -# Label: "TURKTRUST Certificate Services Provider Root 2" -# Serial: 1 -# MD5 Fingerprint: 37:a5:6e:d4:b1:25:84:97:b7:fd:56:15:7a:f9:a2:00 -# SHA1 Fingerprint: b4:35:d4:e1:11:9d:1c:66:90:a7:49:eb:b3:94:bd:63:7b:a7:82:b7 -# SHA256 Fingerprint: c4:70:cf:54:7e:23:02:b9:77:fb:29:dd:71:a8:9a:7b:6c:1f:60:77:7b:03:29:f5:60:17:f3:28:bf:4f:6b:e6 ------BEGIN CERTIFICATE----- -MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcNMDUxMTA3MTAwNzU3 -WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVrdHJv -bmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJU -UjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSw -bGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWe -LiAoYykgS2FzxLFtIDIwMDUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqeLCDe2JAOCtFp0if7qnef -J1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKIx+XlZEdh -R3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJ -Qv2gQrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGX -JHpsmxcPbe9TmJEr5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1p -zpwACPI2/z7woQ8arBT9pmAPAgMBAAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58S -Fq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/nttRbj2hWyfIvwq -ECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 -Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFz -gw2lGh1uEpJ+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotH -uFEJjOp9zYhys2AzsfAKRO8P9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LS -y3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5UrbnBEI= ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Label: "SwissSign Gold CA - G2" -# Serial: 13492815561806991280 -# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 -# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 -# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 ------BEGIN CERTIFICATE----- -MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV -BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln -biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF -MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT -d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 -76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ -bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c -6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE -emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd -MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt -MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y -MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y -FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi -aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM -gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB -qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 -lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn -8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov -L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 -45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO -UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 -O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC -bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv -GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a -77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC -hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 -92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp -Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w -ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt -Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Label: "SwissSign Silver CA - G2" -# Serial: 5700383053117599563 -# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 -# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb -# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 ------BEGIN CERTIFICATE----- -MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu -IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow -RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY -U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv -Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br -YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF -nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH -6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt -eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/ -c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ -MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH -HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf -jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6 -5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB -rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU -F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c -wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 -cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB -AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp -WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9 -xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ -2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ -IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8 -aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X -em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR -dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/ -OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+ -hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy -tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u ------END CERTIFICATE----- - # Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. # Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. # Label: "GeoTrust Primary Certification Authority" @@ -2193,66 +1380,6 @@ WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq -----END CERTIFICATE----- -# Issuer: CN=SecureTrust CA O=SecureTrust Corporation -# Subject: CN=SecureTrust CA O=SecureTrust Corporation -# Label: "SecureTrust CA" -# Serial: 17199774589125277788362757014266862032 -# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 -# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 -# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz -MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv -cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz -Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO -0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao -wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj -7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS -8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT -BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg -JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 -6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ -3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm -D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS -CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -# Issuer: CN=Secure Global CA O=SecureTrust Corporation -# Subject: CN=Secure Global CA O=SecureTrust Corporation -# Label: "Secure Global CA" -# Serial: 9751836167731051554232119481456978597 -# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de -# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b -# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx -MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg -Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ -iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa -/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ -jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI -HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 -sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w -gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw -KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG -AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L -URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO -H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm -I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY -iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - # Issuer: CN=COMODO Certification Authority O=COMODO CA Limited # Subject: CN=COMODO Certification Authority O=COMODO CA Limited # Label: "COMODO Certification Authority" @@ -2317,42 +1444,6 @@ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey -----END CERTIFICATE----- -# Issuer: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA -# Subject: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA -# Label: "WellsSecure Public Root Certificate Authority" -# Serial: 1 -# MD5 Fingerprint: 15:ac:a5:c2:92:2d:79:bc:e8:7f:cb:67:ed:02:cf:36 -# SHA1 Fingerprint: e7:b4:f6:9d:61:ec:90:69:db:7e:90:a7:40:1a:3c:f4:7d:4f:e8:ee -# SHA256 Fingerprint: a7:12:72:ae:aa:a3:cf:e8:72:7f:7f:b3:9f:0f:b3:d1:e5:42:6e:90:60:b0:6e:e6:f1:3e:9a:3c:58:33:cd:43 ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMx -IDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxs -cyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9v -dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMjEzMTcwNzU0WhcNMjIxMjE0 -MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdl -bGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQD -DC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+r -WxxTkqxtnt3CxC5FlAM1iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjU -Dk/41itMpBb570OYj7OeUt9tkTmPOL13i0Nj67eT/DBMHAGTthP796EfvyXhdDcs -HqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8bJVhHlfXBIEyg1J55oNj -z7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiBK0HmOFaf -SZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/Slwxl -AgMBAAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqG -KGh0dHA6Ly9jcmwucGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0P -AQH/BAQDAgHGMB0GA1UdDgQWBBQmlRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0j -BIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGBi6SBiDCBhTELMAkGA1UEBhMC -VVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNX -ZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEB -ALkVsUSRzCPIK0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd -/ZDJPHV3V3p9+N701NX3leZ0bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pB -A4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSljqHyita04pO2t/caaH/+Xc/77szWn -k4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+esE2fDbbFwRnzVlhE9 -iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJtylv -2G0xffX8oRAHh84vWdw+WNs= ------END CERTIFICATE----- - # Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Label: "COMODO ECC Certification Authority" @@ -2377,225 +1468,6 @@ fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- -# Issuer: CN=IGC/A O=PM/SGDN OU=DCSSI -# Subject: CN=IGC/A O=PM/SGDN OU=DCSSI -# Label: "IGC/A" -# Serial: 245102874772 -# MD5 Fingerprint: 0c:7f:dd:6a:f4:2a:b9:c8:9b:bd:20:7e:a9:db:5c:37 -# SHA1 Fingerprint: 60:d6:89:74:b5:c2:65:9e:8a:0f:c1:88:7c:88:d2:46:69:1b:18:2c -# SHA256 Fingerprint: b9:be:a7:86:0a:96:2e:a3:61:1d:ab:97:ab:6d:a3:e2:1c:10:68:b9:7d:55:57:5e:d0:e1:12:79:c1:1c:89:32 ------BEGIN CERTIFICATE----- -MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYT -AkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQ -TS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG -9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMB4XDTAyMTIxMzE0MjkyM1oXDTIw -MTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM -BgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEO -MAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2 -LmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaI -s9z4iPf930Pfeo2aSVz2TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2 -xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCWSo7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4 -u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYyHF2fYPepraX/z9E0+X1b -F8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNdfrGoRpAx -Vs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGd -PDPQtQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNV -HSAEDjAMMAoGCCqBegF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAx -NjAfBgNVHSMEGDAWgBSjBS8YYFDCiQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUF -AAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RKq89toB9RlPhJy3Q2FLwV3duJ -L92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3QMZsyK10XZZOY -YLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg -Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2a -NjSaTFR+FwNIlQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R -0982gaEbeC9xs/FZTEYYKKuF0mBWWg== ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Label: "Security Communication EV RootCA1" -# Serial: 0 -# MD5 Fingerprint: 22:2d:a6:01:ea:7c:0a:f7:f0:6c:56:43:3f:77:76:d3 -# SHA1 Fingerprint: fe:b8:c4:32:dc:f9:76:9a:ce:ae:3d:d8:90:8f:fd:28:86:65:64:7d -# SHA256 Fingerprint: a2:2d:ba:68:1e:97:37:6e:2d:39:7d:72:8a:ae:3a:9b:62:96:b9:fd:ba:60:bc:2e:11:f6:47:f2:c6:75:fb:37 ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- - -# Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed -# Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed -# Label: "OISTE WISeKey Global Root GA CA" -# Serial: 86718877871133159090080555911823548314 -# MD5 Fingerprint: bc:6c:51:33:a7:e9:d3:66:63:54:15:72:1b:21:92:93 -# SHA1 Fingerprint: 59:22:a1:e1:5a:ea:16:35:21:f8:98:39:6a:46:46:b0:44:1b:0f:a9 -# SHA256 Fingerprint: 41:c9:23:86:6a:b4:ca:d6:b7:ad:57:80:81:58:2e:02:07:97:a6:cb:df:4f:ff:78:ce:83:96:b3:89:37:d7:f5 ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB -ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly -aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl -ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w -NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G -A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD -VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX -SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR -VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 -w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF -mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg -4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 -4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw -EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx -SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 -ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 -vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi -Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ -/L7fCg0= ------END CERTIFICATE----- - -# Issuer: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA -# Subject: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA -# Label: "Microsec e-Szigno Root CA" -# Serial: 272122594155480254301341951808045322001 -# MD5 Fingerprint: f0:96:b6:2f:c5:10:d5:67:8e:83:25:32:e8:5e:2e:e5 -# SHA1 Fingerprint: 23:88:c9:d3:71:cc:9e:96:3d:ff:7d:3c:a7:ce:fc:d6:25:ec:19:0d -# SHA256 Fingerprint: 32:7a:3d:76:1a:ba:de:a0:34:eb:99:84:06:27:5c:b1:a4:77:6e:fd:ae:2f:df:6d:01:68:ea:1c:4f:55:67:d0 ------BEGIN CERTIFICATE----- -MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAw -cjELMAkGA1UEBhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNy -b3NlYyBMdGQuMRQwEgYDVQQLEwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9z -ZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0MDYxMjI4NDRaFw0xNzA0MDYxMjI4 -NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEWMBQGA1UEChMN -TWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMTGU1p -Y3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2u -uO/TEdyB5s87lozWbxXGd36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+ -LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/NoqdNAoI/gqyFxuEPkEeZlApxcpMqyabA -vjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjcQR/Ji3HWVBTji1R4P770 -Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJPqW+jqpx -62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcB -AQRbMFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3Aw -LQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAP -BgNVHRMBAf8EBTADAQH/MIIBcwYDVR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIB -AQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3LmUtc3ppZ25vLmh1L1NaU1ov -MIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0AdAB2AOEAbgB5 -ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn -AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABT -AHoAbwBsAGcA4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABh -ACAAcwB6AGUAcgBpAG4AdAAgAGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABo -AHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMAegBpAGcAbgBvAC4AaAB1AC8AUwBa -AFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6Ly93d3cuZS1zemln -bm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NOPU1p -Y3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxP -PU1pY3Jvc2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZv -Y2F0aW9uTGlzdDtiaW5hcnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuB -EGluZm9AZS1zemlnbm8uaHWkdzB1MSMwIQYDVQQDDBpNaWNyb3NlYyBlLVN6aWdu -w7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhTWjEWMBQGA1UEChMNTWlj -cm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhVMIGsBgNV -HSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJI -VTERMA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDAS -BgNVBAsTC2UtU3ppZ25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBS -b290IENBghEAzLjnv04pGv2i3GalHCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS -8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMTnGZjWS7KXHAM/IO8VbH0jgds -ZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FEaGAHQzAxQmHl -7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a -86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfR -hUZLphK3dehKyVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/ -MPMMNz7UwiiAc7EBt51alhQBS6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= ------END CERTIFICATE----- - -# Issuer: CN=Certigna O=Dhimyotis -# Subject: CN=Certigna O=Dhimyotis -# Label: "Certigna" -# Serial: 18364802974209362175 -# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff -# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 -# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV -BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X -DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ -BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 -QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny -gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw -zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q -130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 -JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw -ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT -AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj -AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG -9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h -bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc -fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu -HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w -t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -# Issuer: CN=AC Raíz Certicámara S.A. O=Sociedad Cameral de Certificación Digital - Certicámara S.A. -# Subject: CN=AC Raíz Certicámara S.A. O=Sociedad Cameral de Certificación Digital - Certicámara S.A. -# Label: "AC Ra\xC3\xADz Certic\xC3\xA1mara S.A." -# Serial: 38908203973182606954752843738508300 -# MD5 Fingerprint: 93:2a:3e:f6:fd:23:69:0d:71:20:d4:2b:47:99:2b:a6 -# SHA1 Fingerprint: cb:a1:c5:f8:b0:e3:5e:b8:b9:45:12:d3:f9:34:a2:e9:06:10:d3:36 -# SHA256 Fingerprint: a6:c5:1e:0d:a5:ca:0a:93:09:d2:e4:c0:e4:0c:2a:f9:10:7a:ae:82:03:85:7f:e1:98:e3:e7:69:e3:43:08:5c ------BEGIN CERTIFICATE----- -MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsx -CzAJBgNVBAYTAkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRp -ZmljYWNpw7NuIERpZ2l0YWwgLSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwa -QUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4wHhcNMDYxMTI3MjA0NjI5WhcNMzAw -NDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+U29jaWVkYWQgQ2Ft -ZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJhIFMu -QS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeG -qentLhM0R7LQcNzJPNCNyu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzL -fDe3fezTf3MZsGqy2IiKLUV0qPezuMDU2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQ -Y5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU34ojC2I+GdV75LaeHM/J4 -Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP2yYe68yQ -54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+b -MMCm8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48j -ilSH5L887uvDdUhfHjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++Ej -YfDIJss2yKHzMI+ko6Kh3VOz3vCaMh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/zt -A/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK5lw1omdMEWux+IBkAC1vImHF -rEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1bczwmPS9KvqfJ -pxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCB -lTCBkgYEVR0gADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFy -YS5jb20vZHBjLzBaBggrBgEFBQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW50 -7WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2UgcHVlZGVuIGVuY29udHJhciBlbiBs -YSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEfAygPU3zmpFmps4p6 -xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuXEpBc -unvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/ -Jre7Ir5v/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dp -ezy4ydV/NgIlqmjCMRW3MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42 -gzmRkBDI8ck1fj+404HGIGQatlDCIaR43NAvO2STdPCWkPHv+wlaNECW8DYSwaN0 -jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wkeZBWN7PGKX6jD/EpOe9+ -XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f/RWmnkJD -W2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/ -RL5hRqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35r -MDOhYil/SrnhLecUIw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxk -BYn8eNZcLCZDqQ== ------END CERTIFICATE----- - # Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA # Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA # Label: "TC TrustCenter Class 2 CA II" @@ -2697,66 +1569,6 @@ ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ 2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY -----END CERTIFICATE----- -# Issuer: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center -# Subject: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center -# Label: "Deutsche Telekom Root CA 2" -# Serial: 38 -# MD5 Fingerprint: 74:01:4a:91:b1:08:c4:58:ce:47:cd:f0:dd:11:53:08 -# SHA1 Fingerprint: 85:a4:08:c0:9c:19:3e:5d:51:58:7d:cd:d6:13:30:fd:8c:de:37:bf -# SHA256 Fingerprint: b6:19:1a:50:d0:c3:97:7f:7d:a9:9b:cd:aa:c8:6a:22:7d:ae:b9:67:9e:c7:0b:a3:b0:c9:d9:22:71:c1:70:d3 ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- - -# Issuer: CN=ComSign Secured CA O=ComSign -# Subject: CN=ComSign Secured CA O=ComSign -# Label: "ComSign Secured CA" -# Serial: 264725503855295744117309814499492384489 -# MD5 Fingerprint: 40:01:25:06:8d:21:43:6a:0e:43:00:9c:e7:43:f3:d5 -# SHA1 Fingerprint: f9:cd:0e:2c:da:76:24:c1:8f:bd:f0:f0:ab:b6:45:b8:f7:fe:d5:7a -# SHA256 Fingerprint: 50:79:41:c7:44:60:a0:b4:70:86:22:0d:4e:99:32:57:2a:b5:d1:b5:bb:cb:89:80:ab:1c:b1:76:51:a8:44:d2 ------BEGIN CERTIFICATE----- -MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAw -PDEbMBkGA1UEAxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWdu -MQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwx -GzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBDQTEQMA4GA1UEChMHQ29tU2lnbjEL -MAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGtWhf -HZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs49oh -gHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sW -v+bznkqH7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ue -Mv5WJDmyVIRD9YTC2LxBkMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr -9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d19guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt -6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUwAwEB/zBEBgNVHR8EPTA7 -MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29tU2lnblNl -Y3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58 -ADsAj8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkq -hkiG9w0BAQUFAAOCAQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7p -iL1DRYHjZiM/EoZNGeQFsOY3wo3aBijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtC -dsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtpFhpFfTMDZflScZAmlaxMDPWL -kz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP51qJThRv4zdL -hfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz -OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== ------END CERTIFICATE----- - # Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc # Subject: CN=Cybertrust Global Root O=Cybertrust, Inc # Label: "Cybertrust Global Root" @@ -2787,269 +1599,6 @@ A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW WL1WMRJOEcgh4LMRkWXbtKaIOM5V -----END CERTIFICATE----- -# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Label: "ePKI Root Certification Authority" -# Serial: 28956088682735189655030529057352760477 -# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 -# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 -# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe -MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 -ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw -IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL -SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH -SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh -ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X -DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 -TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ -fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA -sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU -WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS -nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH -dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip -NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC -AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF -MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB -uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl -PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP -JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ -gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 -j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 -5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB -o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS -/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z -Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE -W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D -hNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -# Issuer: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi -# Subject: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi -# Label: "T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3" -# Serial: 17 -# MD5 Fingerprint: ed:41:f5:8c:50:c5:2b:9c:73:e6:ee:6c:eb:c2:a8:26 -# SHA1 Fingerprint: 1b:4b:39:61:26:27:6b:64:91:a2:68:6d:d7:02:43:21:2d:1f:1d:96 -# SHA256 Fingerprint: e4:c7:34:30:d7:a5:b5:09:25:df:43:37:0a:0d:21:6e:9a:79:b9:d6:db:83:73:a0:c6:9e:b1:cc:31:c7:c5:2a ------BEGIN CERTIFICATE----- -MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRS -MRgwFgYDVQQHDA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJp -bGltc2VsIHZlIFRla25vbG9qaWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSw -VEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ryb25payB2ZSBLcmlwdG9sb2ppIEFy -YcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNVBAsMGkthbXUgU2Vy -dGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUgS8O2 -ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAe -Fw0wNzA4MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIx -GDAWBgNVBAcMD0dlYnplIC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmls -aW1zZWwgdmUgVGVrbm9sb2ppayBBcmHFn3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBU -QUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZlIEtyaXB0b2xvamkgQXJh -xZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2FtdSBTZXJ0 -aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7Zr -IFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4h -gb46ezzb8R1Sf1n68yJMlaCQvEhOEav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yK -O7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1xnnRFDDtG1hba+818qEhTsXO -fJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR6Oqeyjh1jmKw -lZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL -hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQID -AQABo0IwQDAdBgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmP -NOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4N5EY3ATIZJkrGG2AA1nJrvhY0D7t -wyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLTy9LQQfMmNkqblWwM -7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYhLBOh -gLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5n -oN+J1q2MdqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUs -yZyQ2uypQjyttgI= ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 -# Subject: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 -# Label: "Buypass Class 2 CA 1" -# Serial: 1 -# MD5 Fingerprint: b8:08:9a:f0:03:cc:1b:0d:c8:6c:0b:76:a1:75:64:23 -# SHA1 Fingerprint: a0:a1:ab:90:c9:fc:84:7b:3b:12:61:e8:97:7d:5f:d3:22:61:d3:cc -# SHA256 Fingerprint: 0f:4e:9c:dd:26:4b:02:55:50:d1:70:80:63:40:21:4f:e9:44:34:c9:b0:2f:69:7e:c7:10:fc:5f:ea:fb:5e:38 ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg -Q2xhc3MgMiBDQSAxMB4XDTA2MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzEL -MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD -VQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7McXA0 -ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLX -l18xoS830r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVB -HfCuuCkslFJgNJQ72uA40Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B -5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/RuFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3 -WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0PAQH/BAQD -AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLP -gcIV1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+ -DKhQ7SLHrQVMdvvt7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKu -BctN518fV4bVIJwo+28TOPX2EZL2fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHs -h7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5wwDX3OaJdZtB7WZ+oRxKaJyOk -LY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 3 CA 1 O=Buypass AS-983163327 -# Subject: CN=Buypass Class 3 CA 1 O=Buypass AS-983163327 -# Label: "Buypass Class 3 CA 1" -# Serial: 2 -# MD5 Fingerprint: df:3c:73:59:81:e7:39:50:81:04:4c:34:a2:cb:b3:7b -# SHA1 Fingerprint: 61:57:3a:11:df:0e:d8:7e:d5:92:65:22:ea:d0:56:d7:44:b3:23:71 -# SHA256 Fingerprint: b7:b1:2b:17:1f:82:1d:aa:99:0c:d0:fe:50:87:b1:28:44:8b:a8:e5:18:4f:84:c5:1e:02:b5:c8:fb:96:2b:24 ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg -Q2xhc3MgMyBDQSAxMB4XDTA1MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzEL -MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD -VQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKxifZg -isRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//z -NIqeKNc0n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI -+MkcVyzwPX6UvCWThOiaAJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2R -hzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+ -mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0PAQH/BAQD -AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFP -Bdy7pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27s -EzNxZy5p+qksP2bAEllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2 -mSlf56oBzKwzqBwKu5HEA6BvtjT5htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yC -e/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQjel/wroQk5PMr+4okoyeYZdow -dXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 ------END CERTIFICATE----- - -# Issuer: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. -# Subject: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. -# Label: "EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1" -# Serial: 5525761995591021570 -# MD5 Fingerprint: 2c:20:26:9d:cb:1a:4a:00:85:b5:b7:5a:ae:c2:01:37 -# SHA1 Fingerprint: 8c:96:ba:eb:dd:2b:07:07:48:ee:30:32:66:a0:f3:98:6e:7c:ae:58 -# SHA256 Fingerprint: 35:ae:5b:dd:d8:f7:ae:63:5c:ff:ba:56:82:a8:f0:0b:95:f4:84:62:c7:10:8e:e9:a0:e5:29:2b:07:4a:af:b2 ------BEGIN CERTIFICATE----- -MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNV -BAMML0VCRyBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMTcwNQYDVQQKDC5FQkcgQmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXpt -ZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAeFw0wNjA4MTcwMDIxMDlaFw0xNjA4 -MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25payBTZXJ0aWZpa2Eg -SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2ltIFRl -a25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h -4fuXd7hxlugTlkaDT7byX3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAk -tiHq6yOU/im/+4mRDGSaBUorzAzu8T2bgmmkTPiab+ci2hC6X5L8GCcKqKpE+i4s -tPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfreYteIAbTdgtsApWjluTL -dlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZTqNGFav4 -c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8Um -TDGyY5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z -+kI2sSXFCjEmN1ZnuqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0O -Lna9XvNRiYuoP1Vzv9s6xiQFlpJIqkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMW -OeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vmExH8nYQKE3vwO9D8owrXieqW -fo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0Nokb+Clsi7n2 -l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB -/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgw -FoAU587GT/wWZ5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+ -8ygjdsZs93/mQJ7ANtyVDR2tFcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI -6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgmzJNSroIBk5DKd8pNSe/iWtkqvTDO -TLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64kXPBfrAowzIpAoHME -wfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqTbCmY -Iai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJn -xk1Gj7sURT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4Q -DgZxGhBM/nV+/x5XOULK1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9q -Kd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11t -hie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQY9iJSrSq3RZj9W6+YKH4 -7ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9AahH3eU7 -QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT ------END CERTIFICATE----- - -# Issuer: O=certSIGN OU=certSIGN ROOT CA -# Subject: O=certSIGN OU=certSIGN ROOT CA -# Label: "certSIGN ROOT CA" -# Serial: 35210227249154 -# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 -# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b -# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT -AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD -QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP -MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do -0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ -UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d -RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ -OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv -JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C -AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O -BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ -LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY -MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ -44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I -Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw -i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN -9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -# Issuer: CN=CNNIC ROOT O=CNNIC -# Subject: CN=CNNIC ROOT O=CNNIC -# Label: "CNNIC ROOT" -# Serial: 1228079105 -# MD5 Fingerprint: 21:bc:82:ab:49:c4:13:3b:4b:b2:2b:5c:6b:90:9c:19 -# SHA1 Fingerprint: 8b:af:4c:9b:1d:f0:2a:92:f7:da:12:8e:b9:1b:ac:f4:98:60:4b:6f -# SHA256 Fingerprint: e2:83:93:77:3d:a8:45:a6:79:f2:08:0c:c7:fb:44:a3:b7:a1:c3:79:2c:b7:eb:77:29:fd:cb:6a:8d:99:ae:a7 ------BEGIN CERTIFICATE----- -MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJD -TjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2 -MDcwOTE0WhcNMjcwNDE2MDcwOTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMF -Q05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzDo+/hn7E7SIX1mlwh -IhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tizVHa6 -dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZO -V/kbZKKTVrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrC -GHn2emU1z5DrvTOTn1OrczvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gN -v7Sg2Ca+I19zN38m5pIEo3/PIKe38zrKy5nLAgMBAAGjczBxMBEGCWCGSAGG+EIB -AQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscCwQ7vptU7ETAPBgNVHRMB -Af8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991SlgrHAsEO -76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnK -OOK5Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvH -ugDnuL8BV8F3RTIMO/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7Hgvi -yJA/qIYM/PmLXoXLT1tLYhFHxUV8BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fL -buXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2G8kS1sHNzYDzAgE8yGnLRUhj -2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5mmxE= ------END CERTIFICATE----- - -# Issuer: O=Japanese Government OU=ApplicationCA -# Subject: O=Japanese Government OU=ApplicationCA -# Label: "ApplicationCA - Japanese Government" -# Serial: 49 -# MD5 Fingerprint: 7e:23:4e:5b:a7:a5:b4:25:e9:00:07:74:11:62:ae:d6 -# SHA1 Fingerprint: 7f:8a:b0:cf:d0:51:87:6a:66:f3:36:0f:47:c8:8d:8c:d3:35:fc:74 -# SHA256 Fingerprint: 2d:47:43:7d:e1:79:51:21:5a:12:f3:c5:8e:51:c7:29:a5:80:26:ef:1f:cc:0a:5f:b3:d9:dc:01:2f:60:0d:19 ------BEGIN CERTIFICATE----- -MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEc -MBoGA1UEChMTSmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRp -b25DQTAeFw0wNzEyMTIxNTAwMDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYT -AkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zlcm5tZW50MRYwFAYDVQQLEw1BcHBs -aWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp23gdE6H -j6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4fl+K -f5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55 -IrmTwcrNwVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cw -FO5cjFW6WY2H/CPek9AEjP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDiht -QWEjdnjDuGWk81quzMKq2edY3rZ+nYVunyoKb58DKTCXKB28t89UKU5RMfkntigm -/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRUWssmP3HMlEYNllPqa0jQ -k/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNVBAYTAkpQ -MRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOC -seODvOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADlqRHZ3ODrso2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJ -hyzjVOGjprIIC8CFqMjSnHH2HZ9g/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+ -eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYDio+nEhEMy/0/ecGc/WLuo89U -DNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmWdupwX3kSa+Sj -B1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL -rosot4LKGAfmt1t06SAZf7IbiVQ= ------END CERTIFICATE----- - # Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Label: "GeoTrust Primary Certification Authority - G3" @@ -3229,330 +1778,6 @@ kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== -----END CERTIFICATE----- -# Issuer: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) -# Subject: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) -# Label: "NetLock Arany (Class Gold) Főtanúsítvány" -# Serial: 80544274841616 -# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 -# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 -# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG -EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 -MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl -cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR -dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB -pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM -b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm -aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz -IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT -lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz -AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 -VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG -ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 -BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG -AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M -U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh -bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C -+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F -uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 -XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden -# Label: "Staat der Nederlanden Root CA - G2" -# Serial: 10000012 -# MD5 Fingerprint: 7c:a5:0f:f8:5b:9a:7d:6d:30:ae:54:5a:e3:42:a2:8a -# SHA1 Fingerprint: 59:af:82:79:91:86:c7:b4:75:07:cb:cf:03:57:46:eb:04:dd:b7:16 -# SHA256 Fingerprint: 66:8c:83:94:7d:a6:3b:72:4b:ec:e1:74:3c:31:a0:e6:ae:d0:db:8e:c5:b3:1b:e3:77:bb:78:4f:91:b6:71:6f ------BEGIN CERTIFICATE----- -MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX -DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl -ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv -b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291 -qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp -uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU -Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE -pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp -5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M -UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN -GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy -5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv -6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK -eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6 -B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/ -BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov -L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG -SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS -CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen -5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897 -IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK -gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL -+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL -vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm -bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk -N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC -Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z -ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== ------END CERTIFICATE----- - -# Issuer: CN=CA Disig O=Disig a.s. -# Subject: CN=CA Disig O=Disig a.s. -# Label: "CA Disig" -# Serial: 1 -# MD5 Fingerprint: 3f:45:96:39:e2:50:87:f7:bb:fe:98:0c:3c:20:98:e6 -# SHA1 Fingerprint: 2a:c8:d5:8b:57:ce:bf:2f:49:af:f2:fc:76:8f:51:14:62:90:7a:41 -# SHA256 Fingerprint: 92:bf:51:19:ab:ec:ca:d0:b1:33:2d:c4:e1:d0:5f:ba:75:b5:67:90:44:ee:0c:a2:6e:93:1f:74:4f:2f:33:cf ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzET -MBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UE -AxMIQ0EgRGlzaWcwHhcNMDYwMzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQsw -CQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcg -YS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgmGErE -Nx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnX -mjxUizkDPw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYD -XcDtab86wYqg6I7ZuUUohwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhW -S8+2rT+MitcE5eN4TPWGqvWP+j1scaMtymfraHtuM6kMgiioTGohQBUgDCZbg8Kp -FhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8wgfwwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0PAQH/BAQD -AgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cu -ZGlzaWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5z -ay9jYS9jcmwvY2FfZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2sv -Y2EvY3JsL2NhX2Rpc2lnLmNybDAaBgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEw -DQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59tWDYcPQuBDRIrRhCA/ec8J9B6 -yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3mkkp7M5+cTxq -EEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ -CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeB -EicTXxChds6KezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFN -PGO+I++MzVpQuGhU+QqZMxEA4Z7CRneC9VkGjCFMhwnN5ag= ------END CERTIFICATE----- - -# Issuer: CN=Juur-SK O=AS Sertifitseerimiskeskus -# Subject: CN=Juur-SK O=AS Sertifitseerimiskeskus -# Label: "Juur-SK" -# Serial: 999181308 -# MD5 Fingerprint: aa:8e:5d:d9:f8:db:0a:58:b7:8d:26:87:6c:82:35:55 -# SHA1 Fingerprint: 40:9d:4b:d9:17:b5:5c:27:b6:9b:64:cb:98:22:44:0d:cd:09:b8:89 -# SHA256 Fingerprint: ec:c3:e9:c3:40:75:03:be:e0:91:aa:95:2f:41:34:8f:f8:8b:aa:86:3b:22:64:be:fa:c8:07:90:15:74:e9:39 ------BEGIN CERTIFICATE----- -MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcN -AQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZp -dHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMw -MVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQsw -CQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEQ -MA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOB -SvZiF3tfTQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkz -ABpTpyHhOEvWgxutr2TC+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvH -LCu3GFH+4Hv2qEivbDtPL+/40UceJlfwUR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMP -PbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDaTpxt4brNj3pssAki14sL -2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQFMAMBAf8w -ggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwIC -MIHDHoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDk -AGwAagBhAHMAdABhAHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0 -AHMAZQBlAHIAaQBtAGkAcwBrAGUAcwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABz -AGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABrAGkAbgBuAGkAdABhAG0AaQBz -AGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nwcy8wKwYDVR0f -BCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE -FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcY -P2/v6X2+MA4GA1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOi -CfP+JmeaUOTDBS8rNXiRTHyoERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+g -kcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyLabVAyJRld/JXIWY7zoVAtjNjGr95 -HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678IIbsSt4beDI3poHS -na9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkhMp6q -qIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0Z -TbvGRNs2yyqcjg== ------END CERTIFICATE----- - -# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Label: "Hongkong Post Root CA 1" -# Serial: 1000 -# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca -# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 -# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx -FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg -Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG -A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr -b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ -jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn -PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh -ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 -nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h -q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED -MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC -mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 -7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB -oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs -EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO -fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi -AmvZWg== ------END CERTIFICATE----- - -# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Label: "SecureSign RootCA11" -# Serial: 1 -# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 -# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 -# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr -MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG -A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 -MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp -Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD -QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz -i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 -h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV -MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 -UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni -8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC -h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD -VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB -AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm -KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ -X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr -QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 -pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN -QSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -# Issuer: CN=ACEDICOM Root O=EDICOM OU=PKI -# Subject: CN=ACEDICOM Root O=EDICOM OU=PKI -# Label: "ACEDICOM Root" -# Serial: 7029493972724711941 -# MD5 Fingerprint: 42:81:a0:e2:1c:e3:55:10:de:55:89:42:65:96:22:e6 -# SHA1 Fingerprint: e0:b4:32:2e:b2:f6:a5:68:b6:54:53:84:48:18:4a:50:36:87:43:84 -# SHA256 Fingerprint: 03:95:0f:b4:9a:53:1f:3e:19:91:94:23:98:df:a9:e0:ea:32:d7:ba:1c:dd:9b:c8:5d:b5:7e:d9:40:0b:43:4a ------BEGIN CERTIFICATE----- -MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE -AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x -CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW -MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF -RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC -AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7 -09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7 -XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P -Grjm6gSSrj0RuVFCPYewMYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAK -t0SdE3QrwqXrIhWYENiLxQSfHY9g5QYbm8+5eaA9oiM/Qj9r+hwDezCNzmzAv+Yb -X79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbkHQl/Sog4P75n/TSW9R28 -MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTTxKJxqvQU -fecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI -2Sf23EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyH -K9caUPgn6C9D4zq92Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEae -ZAwUswdbxcJzbPEHXEUkFDWug/FqTYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAP -BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz4SsrSbbXc6GqlPUB53NlTKxQ -MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU9QHnc2VMrFAw -RAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv -bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWIm -fQwng4/F9tqgaHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3 -gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe -I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i -5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi -ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn -MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ -o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6 -zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN -GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt -r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK -Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 80507572722862485515306429940691309246 -# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 -# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b -# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i -2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ -2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ ------END CERTIFICATE----- - -# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Label: "Microsec e-Szigno Root CA 2009" -# Serial: 14014712776195784473 -# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 -# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e -# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD -VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 -ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G -CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y -OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx -FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp -Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP -kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc -cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U -fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 -N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC -xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 -+rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G -A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM -Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG -SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h -mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk -ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c -2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t -HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -# Issuer: CN=e-Guven Kok Elektronik Sertifika Hizmet Saglayicisi O=Elektronik Bilgi Guvenligi A.S. -# Subject: CN=e-Guven Kok Elektronik Sertifika Hizmet Saglayicisi O=Elektronik Bilgi Guvenligi A.S. -# Label: "E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi" -# Serial: 91184789765598910059173000485363494069 -# MD5 Fingerprint: 3d:41:29:cb:1e:aa:11:74:cd:5d:b0:62:af:b0:43:5b -# SHA1 Fingerprint: dd:e1:d2:a9:01:80:2e:1d:87:5e:84:b3:80:7e:4b:b1:fd:99:41:34 -# SHA256 Fingerprint: e6:09:07:84:65:a4:19:78:0c:b6:ac:4c:1c:0b:fb:46:53:d9:d9:cc:6e:b3:94:6e:b7:f3:d6:99:97:ba:d5:98 ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxp -Z2kgQS5TLjE8MDoGA1UEAxMzZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZp -a2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3MDEwNDExMzI0OFoXDTE3MDEwNDEx -MzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0cm9uaWsgQmlsZ2kg -R3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9uaWsg -U2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdU -MZTe1RK6UxYC6lhj71vY8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlT -L/jDj/6z/P2douNffb7tC+Bg62nsM+3YjfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H -5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAIJjjcJRFHLfO6IxClv7wC -90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk9Ok0oSy1 -c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoE -VtstxNulMA0GCSqGSIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLP -qk/CaOv/gKlR6D1id4k9CnU58W5dF4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S -/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwqD2fK/A+JYZ1lpTzlvBNbCNvj -/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4Vwpm+Vganf2X -KWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq -fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX ------END CERTIFICATE----- - # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Label: "GlobalSign Root CA - R3" @@ -3582,188 +1807,35 @@ Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH WD9f -----END CERTIFICATE----- -# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" -# Serial: 6047274297262753887 -# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 -# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa -# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef +# Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA III" +# Serial: 2010889993983507346460533407902964 +# MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b +# SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87 +# SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d -----BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE -BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h -cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy -MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg -Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 -thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM -cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG -L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i -NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h -X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b -m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy -Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja -EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T -KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF -6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh -OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD -VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv -ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl -AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF -661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 -am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 -ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 -PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS -3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k -SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF -3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM -ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g -StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz -Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB -jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -# Issuer: CN=Izenpe.com O=IZENPE S.A. -# Subject: CN=Izenpe.com O=IZENPE S.A. -# Label: "Izenpe.com" -# Serial: 917563065490389241595536686991402621 -# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 -# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 -# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f ------BEGIN CERTIFICATE----- -MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 -MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 -ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD -VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j -b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq -scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO -xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H -LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX -uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD -yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ -JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q -rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN -BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L -hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB -QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ -HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu -Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg -QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB -BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx -MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA -A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb -laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 -awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo -JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw -LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT -VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk -LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb -UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ -QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ -naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls -QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== ------END CERTIFICATE----- - -# Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. -# Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. -# Label: "Chambers of Commerce Root - 2008" -# Serial: 11806822484801597146 -# MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7 -# SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c -# SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0 ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- - -# Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. -# Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. -# Label: "Global Chambersign Root - 2008" -# Serial: 14541511773111788494 -# MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3 -# SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c -# SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy +MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl +ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm +BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF +5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv +DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v +zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT +yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj +dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh +MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI +4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz +dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY +aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G +DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH +LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== -----END CERTIFICATE----- # Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. @@ -3976,313 +2048,6 @@ aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== -----END CERTIFICATE----- -# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Network CA" -# Serial: 279744 -# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 -# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e -# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -# Issuer: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 -# Subject: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 -# Label: "Certinomis - Autorité Racine" -# Serial: 1 -# MD5 Fingerprint: 7f:30:78:8c:03:e3:ca:c9:0a:e2:c9:ea:1e:aa:55:1a -# SHA1 Fingerprint: 2e:14:da:ec:28:f0:fa:1e:8e:38:9a:4e:ab:eb:26:c0:0a:d3:83:c3 -# SHA256 Fingerprint: fc:bf:e2:88:62:06:f7:2b:27:59:3c:8b:07:02:97:e1:2d:76:9e:d1:0e:d7:93:07:05:a8:09:8e:ff:c1:4d:17 ------BEGIN CERTIFICATE----- -MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjET -MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAk -BgNVBAMMHUNlcnRpbm9taXMgLSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4 -Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNl -cnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYwJAYDVQQDDB1DZXJ0 -aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jY -F1AMnmHawE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N -8y4oH3DfVS9O7cdxbwlyLu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWe -rP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K -/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92NjMD2AR5vpTESOH2VwnHu -7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9qc1pkIuVC -28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6 -lSTClrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1E -nn1So2+WLhl+HPNbxxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB -0iSVL1N6aaLwD4ZFjliCK0wi1F6g530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql09 -5gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna4NH4+ej9Uji29YnfAgMBAAGj -WzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQN -jLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ -KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9s -ov3/4gbIOZ/xWqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZM -OH8oMDX/nyNTt7buFHAAQCvaR6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q -619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40nJ+U8/aGH88bc62UeYdocMMzpXDn -2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1BCxMjidPJC+iKunqj -o3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjvJL1v -nxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG -5ERQL1TEqkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWq -pdEdnV1j6CTmNhTih60bWfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZb -dsLLO7XSAPCjDuGtbkD326C00EauFddEwk01+dIL8hf2rGbVJLJP0RyZwG71fet0 -BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/vgt2Fl43N+bYdJeimUV5 ------END CERTIFICATE----- - -# Issuer: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA -# Subject: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA -# Label: "Root CA Generalitat Valenciana" -# Serial: 994436456 -# MD5 Fingerprint: 2c:8c:17:5e:b1:54:ab:93:17:b5:36:5a:db:d1:c6:f2 -# SHA1 Fingerprint: a0:73:e5:c5:bd:43:61:0d:86:4c:21:13:0a:85:58:57:cc:9c:ea:46 -# SHA256 Fingerprint: 8c:4e:df:d0:43:48:f3:22:96:9e:7e:29:a4:cd:4d:ca:00:46:55:06:1c:16:e1:b0:76:42:2e:f3:42:ad:63:0e ------BEGIN CERTIFICATE----- -MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJF -UzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJ -R1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcN -MDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3WjBoMQswCQYDVQQGEwJFUzEfMB0G -A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScw -JQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+ -WmmmO3I2F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKj -SgbwJ/BXufjpTjJ3Cj9BZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGl -u6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQD0EbtFpKd71ng+CT516nDOeB0/RSrFOy -A8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXteJajCq+TA81yc477OMUxk -Hl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMBAAGjggM7 -MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBr -aS5ndmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIIC -IwYKKwYBBAG/VQIBADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8A -cgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIA -YQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIAYQBsAGkAdABhAHQAIABWAGEA -bABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQByAGEAYwBpAPMA -bgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA -aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMA -aQBvAG4AYQBtAGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQA -ZQAgAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEA -YwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBuAHQAcgBhACAAZQBuACAAbABhACAA -ZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAAOgAvAC8AdwB3AHcA -LgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0dHA6 -Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+y -eAT8MIGVBgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQsw -CQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0G -A1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVu -Y2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRhTvW1yEICKrNcda3Fbcrn -lD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdzCkj+IHLt -b8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg -9J63NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XF -ducTZnV+ZfsBn5OHiJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmC -IoaZM3Fa6hlXPZHNqcCjbgcTpsnt+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= ------END CERTIFICATE----- - -# Issuer: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 -# Subject: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 -# Label: "A-Trust-nQual-03" -# Serial: 93214 -# MD5 Fingerprint: 49:63:ae:27:f4:d5:95:3d:d8:db:24:86:b8:9c:07:53 -# SHA1 Fingerprint: d3:c0:63:f2:19:ed:07:3e:34:ad:5d:75:0b:32:76:29:ff:d5:9a:f2 -# SHA256 Fingerprint: 79:3c:bf:45:59:b9:fd:e3:8a:b2:2d:f1:68:69:f6:98:81:ae:14:c4:b0:13:9a:c7:88:a7:8a:1a:fc:ca:02:fb ------BEGIN CERTIFICATE----- -MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB -VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp -bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R -dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA1MDgxNzIyMDAw -MFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy -dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 -ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM -EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj -lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ -znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH -2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 -k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs -2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD -VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAVdRU0VlIXLOThaq/Yy/kgM40ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fG -KOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmrsQd7TZjTXLDR8KdCoLXEjq/+ -8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZdJXDRZslo+S4R -FGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS -mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmE -DNuxUCAKGkq6ahq97BvIxYSazQ== ------END CERTIFICATE----- - -# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Label: "TWCA Root Certification Authority" -# Serial: 1 -# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 -# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 -# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES -MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU -V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz -WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO -LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE -AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH -K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX -RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z -rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx -3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq -hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC -MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls -XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D -lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn -aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ -YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Label: "Security Communication RootCA2" -# Serial: 0 -# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 -# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 -# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX -DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy -dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj -YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV -OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr -zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM -VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ -hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO -ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw -awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs -OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 -DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF -coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc -okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 -t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy -1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ -SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions RootCA 2011" -# Serial: 0 -# MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9 -# SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d -# SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71 ------BEGIN CERTIFICATE----- -MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix -RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 -dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p -YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw -NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK -EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl -cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz -dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ -fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns -bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD -75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP -FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV -HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp -5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu -b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA -A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p -6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 -TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 -dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys -Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI -l7WdmplNsDz4SgCbZN2fOUvRJ9e4 ------END CERTIFICATE----- - -# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Label: "Actalis Authentication Root CA" -# Serial: 6271844772424770508 -# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 -# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac -# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 ------BEGIN CERTIFICATE----- -MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE -BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w -MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 -IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC -SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 -ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv -UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX -4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 -KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ -gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb -rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ -51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F -be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe -KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F -v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn -fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 -jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz -ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt -ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL -e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 -jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz -WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V -SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j -pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX -X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok -fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R -K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU -ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU -LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT -LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== ------END CERTIFICATE----- - -# Issuer: O=Trustis Limited OU=Trustis FPS Root CA -# Subject: O=Trustis Limited OU=Trustis FPS Root CA -# Label: "Trustis FPS Root CA" -# Serial: 36053640375399034304724988975563710553 -# MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d -# SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04 -# SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF -MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL -ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx -MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc -MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ -AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH -iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj -vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA -0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB -OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ -BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E -FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 -GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW -zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 -1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE -f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F -jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN -ZetX2fNXlrtIzYE= ------END CERTIFICATE----- - # Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Label: "StartCom Certification Authority" @@ -4373,762 +2138,59 @@ hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI -----END CERTIFICATE----- -# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 2 Root CA" -# Serial: 2 -# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 -# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 -# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr -6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV -L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 -1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx -MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ -QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB -arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr -Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi -FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS -P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN -9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz -uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h -9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s -A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t -OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo -+fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 -KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 -DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us -H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ -I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 -5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h -3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz -Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 3 Root CA" -# Serial: 2 -# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec -# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 -# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y -ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E -N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 -tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX -0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c -/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X -KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY -zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS -O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D -34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP -K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv -Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj -QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV -cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS -IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 -HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa -O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv -033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u -dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE -kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 -3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD -u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq -4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 3" -# Serial: 1 -# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef -# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 -# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- - -# Issuer: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus -# Subject: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus -# Label: "EE Certification Centre Root CA" -# Serial: 112324828676200291871926431888494945866 -# MD5 Fingerprint: 43:5e:88:d4:7d:1a:4a:7e:fd:84:2e:52:eb:01:d4:6f -# SHA1 Fingerprint: c9:a8:b9:e7:55:80:5e:58:e3:53:77:a7:25:eb:af:c3:7b:27:cc:d7 -# SHA256 Fingerprint: 3e:84:ba:43:42:90:85:16:e7:75:73:c0:99:2f:09:79:ca:08:4e:46:85:68:1f:f1:95:cc:ba:8a:22:9b:8a:76 ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 -czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG -CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy -MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl -ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS -b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy -euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO -bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw -WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d -MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE -1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ -zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB -BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF -BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV -v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG -E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW -iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v -GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= ------END CERTIFICATE----- - -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 -# Label: "TURKTRUST Certificate Services Provider Root 2007" -# Serial: 1 -# MD5 Fingerprint: 2b:70:20:56:86:82:a0:18:c8:07:53:12:28:70:21:72 -# SHA1 Fingerprint: f1:7f:6f:b6:31:dc:99:e3:a3:c8:7f:fe:1c:f1:81:10:88:d9:60:33 -# SHA256 Fingerprint: 97:8c:d9:66:f2:fa:a0:7b:a7:aa:95:00:d9:c0:2e:9d:77:f2:cd:ad:a6:ad:6b:a7:4a:f4:b9:1c:66:59:3c:50 ------BEGIN CERTIFICATE----- -MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4XDTA3MTIyNTE4Mzcx -OVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxla3Ry -b25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMC -VFIxDzANBgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDE -sGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7F -ni4gKGMpIEFyYWzEsWsgMjAwNzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9NYvDdE3ePYakqtdTyuTFY -KTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQvKUmi8wUG -+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveG -HtyaKhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6P -IzdezKKqdfcYbwnTrqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M -733WB2+Y8a+xwXrXgTW4qhe04MsCAwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHk -Yb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/sPx+EnWVUXKgW -AkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I -aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5 -mxRZNTZPz/OOXl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsa -XRik7r4EW5nVcV9VZWRi1aKbBFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZ -qxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAKpoRq0Tl9 ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 2009" -# Serial: 623603 -# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f -# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 -# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 ------BEGIN CERTIFICATE----- -MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha -ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM -HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 -UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 -tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R -ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM -lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp -/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G -A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G -A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj -dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy -MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl -cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js -L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL -BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni -acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 -o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K -zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 -PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y -Johw1+qRzT65ysCQblrGXnRl11z+o+I= ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 EV 2009" -# Serial: 623604 -# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 -# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 -# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw -NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV -BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn -ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 -3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z -qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR -p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 -HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw -ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea -HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw -Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh -c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E -RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt -dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku -Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp -3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 -nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF -CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na -xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX -KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 ------END CERTIFICATE----- - -# Issuer: CN=Autoridad de Certificacion Raiz del Estado Venezolano O=Sistema Nacional de Certificacion Electronica OU=Superintendencia de Servicios de Certificacion Electronica -# Subject: CN=PSCProcert O=Sistema Nacional de Certificacion Electronica OU=Proveedor de Certificados PROCERT -# Label: "PSCProcert" -# Serial: 11 -# MD5 Fingerprint: e6:24:e9:12:01:ae:0c:de:8e:85:c4:ce:a3:12:dd:ec -# SHA1 Fingerprint: 70:c1:8d:74:b4:28:81:0a:e4:fd:a5:75:d7:01:9f:99:b0:3d:50:74 -# SHA256 Fingerprint: 3c:fc:3c:14:d1:f6:84:ff:17:e3:8c:43:ca:44:0c:00:b9:67:ec:93:3e:8b:fe:06:4c:a1:d7:2c:90:f2:ad:b0 ------BEGIN CERTIFICATE----- -MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s -YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz -dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0 -aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh -IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ -KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEw -MFoXDTIwMTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHBy -b2NlcnQubmV0LnZlMQ8wDQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGEx -KjAoBgNVBAsTIVByb3ZlZWRvciBkZSBDZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQG -A1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9u -aWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo9 -7BVCwfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74 -BCXfgI8Qhd19L3uA3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38G -ieU89RLAu9MLmV+QfI4tL3czkkohRqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9 -JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmOEO8GqQKJ/+MMbpfg353bIdD0 -PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG20qCZyFSTXai2 -0b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH -0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/ -6mnbVSKVUyqUtd+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1m -v6JpIzi4mWCZDlZTOpx+FIywBm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7 -K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvpr2uKGcfLFFb14dq12fy/czja+eev -bqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQw -MC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0w -MB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFD -gBStuyIdxuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0 -b3JpZGFkIGRlIENlcnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xh -bm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0 -cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRp -ZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEg -ZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkq -hkiG9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQD -AgEGME0GA1UdEQRGMESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0w -MDAwMDKgGwYFYIZeAgKgEgwQUklGLUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEag -RKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9sY3IvQ0VSVElGSUNBRE8t -UkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2Nl -cnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v -Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsG -AQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcN -AQELBQADggIBACtZ6yKZu4SqT96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS -1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmNg7+mvTV+LFwxNG9s2/NkAZiqlCxB -3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4quxtxj7mkoP3Yldmv -Wb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1n8Gh -HVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHm -pHmJWhSnFFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXz -sOfIt+FTvZLm8wyWuevo5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bE -qCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq3TNWOByyrYDT13K9mmyZY+gAu0F2Bbdb -mRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5poLWccret9W6aAjtmcz9 -opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3YeMLEYC/H -YvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km ------END CERTIFICATE----- - -# Issuer: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center -# Subject: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center -# Label: "China Internet Network Information Center EV Certificates Root" -# Serial: 1218379777 -# MD5 Fingerprint: 55:5d:63:00:97:bd:6a:97:f5:67:ab:4b:fb:6e:63:15 -# SHA1 Fingerprint: 4f:99:aa:93:fb:2b:d1:37:26:a1:99:4a:ce:7f:f0:05:f2:93:5d:1e -# SHA256 Fingerprint: 1c:01:c6:f4:db:b2:fe:fc:22:55:8b:2b:ca:32:56:3f:49:84:4a:cf:c3:2b:7b:e4:b0:ff:59:9f:9e:8c:7a:f7 ------BEGIN CERTIFICATE----- -MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC -Q04xMjAwBgNVBAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24g -Q2VudGVyMUcwRQYDVQQDDD5DaGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0 -aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMgUm9vdDAeFw0xMDA4MzEwNzExMjVa -Fw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAGA1UECgwpQ2hpbmEg -SW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMMPkNo -aW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRp -ZmljYXRlcyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z -7r07eKpkQ0H1UN+U8i6yjUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA// -DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV98YPjUesWgbdYavi7NifFy2cyjw1l1Vx -zUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2HklY0bBoQCxfVWhyXWIQ8 -hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23KzhmBsUs -4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54u -gQEC7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oY -NJKiyoOCWTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E -FgQUfHJLOcfA22KlT5uqGDSSosqDglkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3 -j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd50XPFtQO3WKwMVC/GVhMPMdoG -52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM7+czV0I664zB -echNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws -ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrI -zo9uoV1/A3U05K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATy -wy39FCqQmbkHzJ8= ------END CERTIFICATE----- - -# Issuer: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services -# Subject: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services -# Label: "Swisscom Root CA 2" -# Serial: 40698052477090394928831521023204026294 -# MD5 Fingerprint: 5b:04:69:ec:a5:83:94:63:18:a7:86:d0:e4:f2:6e:19 -# SHA1 Fingerprint: 77:47:4f:c6:30:e4:0f:4c:47:64:3f:84:ba:b8:c6:95:4a:8a:41:ec -# SHA256 Fingerprint: f0:9b:12:2c:71:14:f4:a0:9b:d4:ea:4f:4a:99:d5:58:b4:6e:4c:25:cd:81:14:0d:29:c0:56:13:91:4c:38:41 ------BEGIN CERTIFICATE----- -MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBk -MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 -YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg -Q0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2MjUwNzM4MTRaMGQxCzAJBgNVBAYT -AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp -Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvEr -jw0DzpPMLgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r -0rk0X2s682Q2zsKwzxNoysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f -2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJwDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVP -ACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpHWrumnf2U5NGKpV+GY3aF -y6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1aSgJA/MTA -tukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL -6yxSNLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0 -uPoTXGiTOmekl9AbmbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrAL -acywlKinh/LTSlDcX3KwFnUey7QYYpqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velh -k6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3qPyZ7iVNTA6z00yPhOgpD/0Q -VAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw -FDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O -BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqh -b97iEoHF8TwuMA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4R -fbgZPnm3qKhyN2abGu2sEzsOv2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv -/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ82YqZh6NM4OKb3xuqFp1mrjX2lhI -REeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLzo9v/tdhZsnPdTSpx -srpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcsa0vv -aGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciAT -woCqISxxOQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99n -Bjx8Oto0QuFmtEYE3saWmA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5W -t6NlUe07qxS/TFED6F+KBZvuim6c779o+sjaC+NCydAXFJy3SuCvkychVSa1ZC+N -8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TCrvJcwhbtkj6EPnNgiLx2 -9CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX5OfNeOI5 -wSsSnqaeG8XmDtkx2Q== ------END CERTIFICATE----- - -# Issuer: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services -# Subject: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services -# Label: "Swisscom Root EV CA 2" -# Serial: 322973295377129385374608406479535262296 -# MD5 Fingerprint: 7b:30:34:9f:dd:0a:4b:6b:35:ca:31:51:28:5d:ae:ec -# SHA1 Fingerprint: e7:a1:90:29:d3:d5:52:dc:0d:0f:c6:92:d3:ea:88:0d:15:2e:1a:6b -# SHA256 Fingerprint: d9:5f:ea:3c:a4:ee:dc:e7:4c:d7:6e:75:fc:6d:1f:f6:2c:44:1f:0f:a8:bc:77:f0:34:b1:9e:5d:b2:58:01:5d ------BEGIN CERTIFICATE----- -MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAw -ZzELMAkGA1UEBhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdp -dGFsIENlcnRpZmljYXRlIFNlcnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290 -IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcNMzEwNjI1MDg0NTA4WjBnMQswCQYD -VQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2Vy -dGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYgQ0Eg -MjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7Bx -UglgRCgzo3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD -1ycfMQ4jFrclyxy0uYAyXhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPH -oCE2G3pXKSinLr9xJZDzRINpUKTk4RtiGZQJo/PDvO/0vezbE53PnUgJUmfANykR -HvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8LiqG12W0OfvrSdsyaGOx9/ -5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaHZa0zKcQv -idm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHL -OdAGalNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaC -NYGu+HuB5ur+rPQam3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f -46Fq9mDU5zXNysRojddxyNMkM3OxbPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCB -UWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDixzgHcgplwLa7JSnaFp6LNYth -7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/BAQDAgGGMB0G -A1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED -MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWB -bj2ITY1x0kbBbkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6x -XCX5145v9Ydkn+0UjrgEjihLj6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98T -PLr+flaYC/NUn81ETm484T4VvwYmneTwkLbUwp4wLh/vx3rEUMfqe9pQy3omywC0 -Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7XwgiG/W9mR4U9s70 -WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH59yL -Gn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm -7JFe3VE/23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4S -nr8PyQUQ3nqjsTzyP6WqJ3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VN -vBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyAHmBR3NdUIR7KYndP+tiPsys6DXhyyWhB -WkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/giuMod89a2GQ+fYWVq6nTI -fI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuWl8PVP3wb -I+2ksx0WckNLIOFZfsLorSa/ovc= ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R1 O=Disig a.s. -# Subject: CN=CA Disig Root R1 O=Disig a.s. -# Label: "CA Disig Root R1" -# Serial: 14052245610670616104 -# MD5 Fingerprint: be:ec:11:93:9a:f5:69:21:bc:d7:c1:c0:67:89:cc:2a -# SHA1 Fingerprint: 8e:1c:74:f8:a6:20:b9:e5:8a:f4:61:fa:ec:2b:47:56:51:1a:52:c6 -# SHA256 Fingerprint: f9:6f:23:f4:c3:e7:9c:07:7a:46:98:8d:5a:f5:90:06:76:a0:f0:39:cb:64:5d:d1:75:49:b2:16:c8:24:40:ce +# Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3 +# Subject: O=Digital Signature Trust Co., CN=DST Root CA X3 +# Label: "IdenTrust DST Root CA X3" +# Serial: 44AFB080D6A327BA893039862EF8406B +# MD5 Fingerprint: 41:03:52:DC:0F:F7:50:1B:16:F0:02:8E:BA:6F:45:C5 +# SHA1 Fingerprint: DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13 +# SHA256 Fingerprint: 06:87:26:03:31:A7:24:03:D9:09:F1:05:E6:9B:CF:0D:32:E1:BD:24:93:FF:C6:D9:20:6D:11:BC:D6:77:07:39 -----BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQy -MDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjEw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy3QRk -D2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/o -OI7bm+V8u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3A -fQ+lekLZWnDZv6fXARz2m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJe -IgpFy4QxTaz+29FHuvlglzmxZcfe+5nkCiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8n -oc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTaYVKvJrT1cU/J19IG32PK -/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6vpmumwKj -rckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD -3AjLLhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE -7cderVC6xkGbrPAXZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkC -yC2fg69naQanMVXVz0tv/wQFx1isXxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLd -qvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ04IwDQYJKoZI -hvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR -xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaA -SfX8MPWbTx9BLxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXo -HqJPYNcHKfyyo6SdbhWSVhlMCrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpB -emOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5GfbVSUZP/3oNn6z4eGBrxEWi1CXYBmC -AMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85YmLLW1AL14FABZyb -7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKSds+x -DzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvk -F7mGnjixlAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqF -a3qdnom2piiZk4hA9z7NUaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsT -Q6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJa7+h89n07eLw4+1knj0vllJPgFOL ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R2 O=Disig a.s. -# Subject: CN=CA Disig Root R2 O=Disig a.s. -# Label: "CA Disig Root R2" -# Serial: 10572350602393338211 -# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 -# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 -# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy -MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe -NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH -PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I -x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe -QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR -yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO -QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 -H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ -QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD -i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs -nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 -rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI -hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM -tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf -GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb -lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka -+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal -TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i -nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 -gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr -G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os -zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x -L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL ------END CERTIFICATE----- - -# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Label: "ACCVRAIZ1" -# Serial: 6828503384748696800 -# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 -# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 -# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 ------BEGIN CERTIFICATE----- -MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE -AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw -CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ -BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND -VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb -qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY -HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo -G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA -lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr -IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ -0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH -k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 -4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO -m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa -cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl -uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI -KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls -ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG -AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 -VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT -VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG -CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA -cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA -QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA -7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA -cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA -QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA -czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu -aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt -aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud -DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF -BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp -D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU -JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m -AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD -vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms -tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH -7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h -I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA -h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF -d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H -pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 ------END CERTIFICATE----- - -# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Label: "TWCA Global Root CA" -# Serial: 3262 -# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 -# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 -# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx -EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT -VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 -NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT -B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF -10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz -0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh -MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH -zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc -46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 -yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi -laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP -oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA -BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE -qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm -4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL -1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn -LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF -H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo -RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ -nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh -15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW -6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW -nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j -wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz -aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy -KwbQBM0= ------END CERTIFICATE----- - -# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Label: "TeliaSonera Root CA v1" -# Serial: 199041966741090107964904287217786801558 -# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c -# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 -# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 ------BEGIN CERTIFICATE----- -MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw -NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv -b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD -VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F -VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 -7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X -Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ -/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs -81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm -dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe -Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu -sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 -pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs -slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ -arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD -VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG -9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl -dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx -0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj -TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed -Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 -Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI -OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 -vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW -t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn -HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx -SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= ------END CERTIFICATE----- - -# Issuer: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi -# Subject: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi -# Label: "E-Tugra Certification Authority" -# Serial: 7667447206703254355 -# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 -# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 -# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV -BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC -aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV -BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 -Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz -MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ -BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp -em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN -ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY -B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH -D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF -Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo -q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D -k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH -fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut -dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM -ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 -zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn -rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX -U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 -Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 -XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF -Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR -HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY -GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c -77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 -+GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK -vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 -FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl -yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P -AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD -y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d -NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 2" -# Serial: 1 -# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a -# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 -# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow +PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD +Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O +rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq +OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b +xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw +7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD +aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG +SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 +ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr +AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz +R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 +JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo +Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- -# Issuer: CN=Atos TrustedRoot 2011 O=Atos -# Subject: CN=Atos TrustedRoot 2011 O=Atos -# Label: "Atos TrustedRoot 2011" -# Serial: 6643877497813316402 -# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 -# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 -# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +# Issuer: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +# Subject: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +# Serial: 33af1e6a711a9a0bb2864b11d09fae5 +# MD5 Fingerprint: E4:A6:8A:C8:54:AC:52:42:46:0A:FD:72:48:1B:2A:44 +# SHA1 Fingerprint: DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4 +# SHA256 Fingerprint: CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F -----BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE -AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG -EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM -FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC -REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp -Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM -VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ -SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ -4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L -cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi -eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV -HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG -A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 -DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j -vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP -DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc -maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D -lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv -KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= -----END CERTIFICATE----- - -# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Label: "Go Daddy Class 2 CA" -# Serial: 0 -# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 -# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 -# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- \ No newline at end of file diff --git a/shotgun_api3/lib/httplib2/certs.py b/shotgun_api3/lib/httplib2/certs.py new file mode 100644 index 000000000..59d1ffc70 --- /dev/null +++ b/shotgun_api3/lib/httplib2/certs.py @@ -0,0 +1,42 @@ +"""Utilities for certificate management.""" + +import os + +certifi_available = False +certifi_where = None +try: + from certifi import where as certifi_where + certifi_available = True +except ImportError: + pass + +custom_ca_locater_available = False +custom_ca_locater_where = None +try: + from ca_certs_locater import get as custom_ca_locater_where + custom_ca_locater_available = True +except ImportError: + pass + + +BUILTIN_CA_CERTS = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "cacerts.txt" +) + + +def where(): + env = os.environ.get("HTTPLIB2_CA_CERTS") + if env is not None: + if os.path.isfile(env): + return env + else: + raise RuntimeError("Environment variable HTTPLIB2_CA_CERTS not a valid file") + if custom_ca_locater_available: + return custom_ca_locater_where() + if certifi_available: + return certifi_where() + return BUILTIN_CA_CERTS + + +if __name__ == "__main__": + print(where()) diff --git a/shotgun_api3/lib/httplib2/iri2uri.py b/shotgun_api3/lib/httplib2/iri2uri.py index d88c91fdf..0a978a784 100644 --- a/shotgun_api3/lib/httplib2/iri2uri.py +++ b/shotgun_api3/lib/httplib2/iri2uri.py @@ -1,20 +1,13 @@ -""" -iri2uri +"""Converts an IRI to a URI.""" -Converts an IRI to a URI. - -""" __author__ = "Joe Gregorio (joe@bitworking.org)" __copyright__ = "Copyright 2006, Joe Gregorio" __contributors__ = [] __version__ = "1.0.0" __license__ = "MIT" -__history__ = """ -""" import urlparse - # Convert an IRI to a URI following the rules in RFC 3987 # # The characters we need to enocde and escape are defined in the spec: @@ -50,6 +43,7 @@ (0x100000, 0x10FFFD), ] + def encode(c): retval = c i = ord(c) @@ -57,7 +51,7 @@ def encode(c): if i < low: break if i >= low and i <= high: - retval = "".join(["%%%2X" % ord(o) for o in c.encode('utf-8')]) + retval = "".join(["%%%2X" % ord(o) for o in c.encode("utf-8")]) break return retval @@ -66,9 +60,9 @@ def iri2uri(uri): """Convert an IRI to a URI. Note that IRIs must be passed in a unicode strings. That is, do not utf-8 encode the IRI before passing it into the function.""" - if isinstance(uri ,unicode): + if isinstance(uri, unicode): (scheme, authority, path, query, fragment) = urlparse.urlsplit(uri) - authority = authority.encode('idna') + authority = authority.encode("idna") # For each character in 'ucschar' or 'iprivate' # 1. encode as utf-8 # 2. then %-encode each octet of that utf-8 @@ -76,11 +70,11 @@ def iri2uri(uri): uri = "".join([encode(c) for c in uri]) return uri + if __name__ == "__main__": import unittest class Test(unittest.TestCase): - def test_uris(self): """Test that URIs are invariant under the transformation.""" invariant = [ @@ -91,20 +85,39 @@ def test_uris(self): u"news:comp.infosystems.www.servers.unix", u"tel:+1-816-555-1212", u"telnet://192.0.2.16:80/", - u"urn:oasis:names:specification:docbook:dtd:xml:4.1.2" ] + u"urn:oasis:names:specification:docbook:dtd:xml:4.1.2", + ] for uri in invariant: self.assertEqual(uri, iri2uri(uri)) def test_iri(self): - """ Test that the right type of escaping is done for each part of the URI.""" - self.assertEqual("http://xn--o3h.com/%E2%98%84", iri2uri(u"http://\N{COMET}.com/\N{COMET}")) - self.assertEqual("http://bitworking.org/?fred=%E2%98%84", iri2uri(u"http://bitworking.org/?fred=\N{COMET}")) - self.assertEqual("http://bitworking.org/#%E2%98%84", iri2uri(u"http://bitworking.org/#\N{COMET}")) + """Test that the right type of escaping is done for each part of the URI.""" + self.assertEqual( + "http://xn--o3h.com/%E2%98%84", + iri2uri(u"http://\N{COMET}.com/\N{COMET}"), + ) + self.assertEqual( + "http://bitworking.org/?fred=%E2%98%84", + iri2uri(u"http://bitworking.org/?fred=\N{COMET}"), + ) + self.assertEqual( + "http://bitworking.org/#%E2%98%84", + iri2uri(u"http://bitworking.org/#\N{COMET}"), + ) self.assertEqual("#%E2%98%84", iri2uri(u"#\N{COMET}")) - self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")) - self.assertEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"))) - self.assertNotEqual("/fred?bar=%E2%98%9A#%E2%98%84", iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode('utf-8'))) + self.assertEqual( + "/fred?bar=%E2%98%9A#%E2%98%84", + iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"), + ) + self.assertEqual( + "/fred?bar=%E2%98%9A#%E2%98%84", + iri2uri(iri2uri(u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")), + ) + self.assertNotEqual( + "/fred?bar=%E2%98%9A#%E2%98%84", + iri2uri( + u"/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode("utf-8") + ), + ) unittest.main() - - diff --git a/shotgun_api3/lib/httplib2/socks.py b/shotgun_api3/lib/httplib2/socks.py index 0991f4cf6..5cef77606 100644 --- a/shotgun_api3/lib/httplib2/socks.py +++ b/shotgun_api3/lib/httplib2/socks.py @@ -1,4 +1,5 @@ """SocksiPy - Python SOCKS module. + Version 1.00 Copyright 2006 Dan-Haim. All rights reserved. @@ -24,20 +25,14 @@ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE. - This module provides a standard socket-like interface for Python for tunneling connections through SOCKS proxies. -""" - -""" - -Minor modifications made by Christopher Gilbert (http://motomastyle.com/) -for use in PyLoris (http://pyloris.sourceforge.net/) +Minor modifications made by Christopher Gilbert (http://motomastyle.com/) for +use in PyLoris (http://pyloris.sourceforge.net/). Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/) -mainly to merge bug fixes found in Sourceforge - +mainly to merge bug fixes found in Sourceforge. """ import base64 @@ -45,8 +40,8 @@ import struct import sys -if getattr(socket, 'socket', None) is None: - raise ImportError('socket.socket missing, proxy support unusable') +if getattr(socket, "socket", None) is None: + raise ImportError("socket.socket missing, proxy support unusable") PROXY_TYPE_SOCKS4 = 1 PROXY_TYPE_SOCKS5 = 2 @@ -56,21 +51,42 @@ _defaultproxy = None _orgsocket = socket.socket -class ProxyError(Exception): pass -class GeneralProxyError(ProxyError): pass -class Socks5AuthError(ProxyError): pass -class Socks5Error(ProxyError): pass -class Socks4Error(ProxyError): pass -class HTTPError(ProxyError): pass -_generalerrors = ("success", +class ProxyError(Exception): + pass + + +class GeneralProxyError(ProxyError): + pass + + +class Socks5AuthError(ProxyError): + pass + + +class Socks5Error(ProxyError): + pass + + +class Socks4Error(ProxyError): + pass + + +class HTTPError(ProxyError): + pass + + +_generalerrors = ( + "success", "invalid data", "not connected", "not available", "bad proxy type", - "bad input") + "bad input", +) -_socks5errors = ("succeeded", +_socks5errors = ( + "succeeded", "general SOCKS server failure", "connection not allowed by ruleset", "Network unreachable", @@ -79,21 +95,30 @@ class HTTPError(ProxyError): pass "TTL expired", "Command not supported", "Address type not supported", - "Unknown error") + "Unknown error", +) -_socks5autherrors = ("succeeded", +_socks5autherrors = ( + "succeeded", "authentication is required", "all offered authentication methods were rejected", "unknown username or invalid password", - "unknown error") + "unknown error", +) -_socks4errors = ("request granted", +_socks4errors = ( + "request granted", "request rejected or failed", "request rejected because SOCKS server cannot connect to identd on the client", - "request rejected because the client program and identd report different user-ids", - "unknown error") + "request rejected because the client program and identd report different " + "user-ids", + "unknown error", +) -def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=None, password=None): + +def setdefaultproxy( + proxytype=None, addr=None, port=None, rdns=True, username=None, password=None +): """setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) Sets a default proxy which all further socksocket objects will use, unless explicitly changed. @@ -101,11 +126,14 @@ def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, username=No global _defaultproxy _defaultproxy = (proxytype, addr, port, rdns, username, password) + def wrapmodule(module): """wrapmodule(module) + Attempts to replace a module's socket library with a SOCKS socket. Must set a default proxy using setdefaultproxy(...) first. - This will only work on modules that import socket directly into the namespace; + This will only work on modules that import socket directly into the + namespace; most of the Python Standard Library falls into this category. """ if _defaultproxy != None: @@ -113,6 +141,7 @@ def wrapmodule(module): else: raise GeneralProxyError((4, "no proxy specified")) + class socksocket(socket.socket): """socksocket([family[, type[, proto]]]) -> socket object Open a SOCKS enabled socket. The parameters are the same as @@ -120,7 +149,9 @@ class socksocket(socket.socket): you must specify family=AF_INET, type=SOCK_STREAM and proto=0. """ - def __init__(self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None): + def __init__( + self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None + ): _orgsocket.__init__(self, family, type, proto, _sock) if _defaultproxy != None: self.__proxy = _defaultproxy @@ -137,8 +168,9 @@ def __recvall(self, count): """ data = self.recv(count) while len(data) < count: - d = self.recv(count-len(data)) - if not d: raise GeneralProxyError((0, "connection closed unexpectedly")) + d = self.recv(count - len(data)) + if not d: + raise GeneralProxyError((0, "connection closed unexpectedly")) data = data + d return data @@ -167,7 +199,7 @@ def __rewriteproxy(self, header): hdrs.remove(endpt) host = host.split(" ")[1] endpt = endpt.split(" ") - if (self.__proxy[4] != None and self.__proxy[5] != None): + if self.__proxy[4] != None and self.__proxy[5] != None: hdrs.insert(0, self.__getauthheader()) hdrs.insert(0, "Host: %s" % host) hdrs.insert(0, "%s http://%s%s %s" % (endpt[0], host, endpt[1], endpt[2])) @@ -177,8 +209,18 @@ def __getauthheader(self): auth = self.__proxy[4] + ":" + self.__proxy[5] return "Proxy-Authorization: Basic " + base64.b64encode(auth) - def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=None, password=None): + def setproxy( + self, + proxytype=None, + addr=None, + port=None, + rdns=True, + username=None, + password=None, + headers=None, + ): """setproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets the proxy to be used. proxytype - The type of the proxy to be used. Three types are supported: PROXY_TYPE_SOCKS4 (including socks4a), @@ -193,23 +235,25 @@ def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, username=Non The default is no authentication. password - Password to authenticate with to the server. Only relevant when username is also provided. + headers - Additional or modified headers for the proxy connect + request. """ - self.__proxy = (proxytype, addr, port, rdns, username, password) + self.__proxy = (proxytype, addr, port, rdns, username, password, headers) def __negotiatesocks5(self, destaddr, destport): """__negotiatesocks5(self,destaddr,destport) Negotiates a connection through a SOCKS5 server. """ # First we'll send the authentication packages we support. - if (self.__proxy[4]!=None) and (self.__proxy[5]!=None): + if (self.__proxy[4] != None) and (self.__proxy[5] != None): # The username/password details were supplied to the # setproxy method so we support the USERNAME/PASSWORD # authentication (in addition to the standard none). - self.sendall(struct.pack('BBBB', 0x05, 0x02, 0x00, 0x02)) + self.sendall(struct.pack("BBBB", 0x05, 0x02, 0x00, 0x02)) else: # No username/password were entered, therefore we # only support connections with no authentication. - self.sendall(struct.pack('BBB', 0x05, 0x01, 0x00)) + self.sendall(struct.pack("BBB", 0x05, 0x01, 0x00)) # We'll receive the server's response to determine which # method was selected chosenauth = self.__recvall(2) @@ -223,7 +267,13 @@ def __negotiatesocks5(self, destaddr, destport): elif chosenauth[1:2] == chr(0x02).encode(): # Okay, we need to perform a basic username/password # authentication. - self.sendall(chr(0x01).encode() + chr(len(self.__proxy[4])) + self.__proxy[4] + chr(len(self.__proxy[5])) + self.__proxy[5]) + self.sendall( + chr(0x01).encode() + + chr(len(self.__proxy[4])) + + self.__proxy[4] + + chr(len(self.__proxy[5])) + + self.__proxy[5] + ) authstat = self.__recvall(2) if authstat[0:1] != chr(0x01).encode(): # Bad response @@ -242,7 +292,7 @@ def __negotiatesocks5(self, destaddr, destport): else: raise GeneralProxyError((1, _generalerrors[1])) # Now we can request the actual connection - req = struct.pack('BBB', 0x05, 0x01, 0x00) + req = struct.pack("BBB", 0x05, 0x01, 0x00) # If the given destination address is an IP address, we'll # use the IPv4 address request even if remote resolving was specified. try: @@ -253,7 +303,12 @@ def __negotiatesocks5(self, destaddr, destport): if self.__proxy[3]: # Resolve remotely ipaddr = None - req = req + chr(0x03).encode() + chr(len(destaddr)).encode() + destaddr + req = ( + req + + chr(0x03).encode() + + chr(len(destaddr)).encode() + + destaddr.encode() + ) else: # Resolve locally ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) @@ -268,7 +323,7 @@ def __negotiatesocks5(self, destaddr, destport): elif resp[1:2] != chr(0x00).encode(): # Connection failed self.close() - if ord(resp[1:2])<=8: + if ord(resp[1:2]) <= 8: raise Socks5Error((ord(resp[1:2]), _socks5errors[ord(resp[1:2])])) else: raise Socks5Error((9, _socks5errors[9])) @@ -280,7 +335,7 @@ def __negotiatesocks5(self, destaddr, destport): boundaddr = self.__recvall(ord(resp[4:5])) else: self.close() - raise GeneralProxyError((1,_generalerrors[1])) + raise GeneralProxyError((1, _generalerrors[1])) boundport = struct.unpack(">H", self.__recvall(2))[0] self.__proxysockname = (boundaddr, boundport) if ipaddr != None: @@ -307,7 +362,7 @@ def getpeername(self): """ return self.__proxypeername - def __negotiatesocks4(self,destaddr,destport): + def __negotiatesocks4(self, destaddr, destport): """__negotiatesocks4(self,destaddr,destport) Negotiates a connection through a SOCKS4 server. """ @@ -339,7 +394,7 @@ def __negotiatesocks4(self,destaddr,destport): if resp[0:1] != chr(0x00).encode(): # Bad data self.close() - raise GeneralProxyError((1,_generalerrors[1])) + raise GeneralProxyError((1, _generalerrors[1])) if resp[1:2] != chr(0x5A).encode(): # Server returned an error self.close() @@ -349,7 +404,10 @@ def __negotiatesocks4(self,destaddr,destport): else: raise Socks4Error((94, _socks4errors[4])) # Get the bound address/port - self.__proxysockname = (socket.inet_ntoa(resp[4:]), struct.unpack(">H", resp[2:4])[0]) + self.__proxysockname = ( + socket.inet_ntoa(resp[4:]), + struct.unpack(">H", resp[2:4])[0], + ) if rmtrslv != None: self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) else: @@ -364,9 +422,18 @@ def __negotiatehttp(self, destaddr, destport): addr = socket.gethostbyname(destaddr) else: addr = destaddr - headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"] - headers += ["Host: ", destaddr, "\r\n"] - if (self.__proxy[4] != None and self.__proxy[5] != None): + headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"] + wrote_host_header = False + wrote_auth_header = False + if self.__proxy[6] != None: + for key, val in self.__proxy[6].iteritems(): + headers += [key, ": ", val, "\r\n"] + wrote_host_header = key.lower() == "host" + wrote_auth_header = key.lower() == "proxy-authorization" + if not wrote_host_header: + headers += ["Host: ", destaddr, "\r\n"] + if not wrote_auth_header: + if self.__proxy[4] != None and self.__proxy[5] != None: headers += [self.__getauthheader(), "\r\n"] headers.append("\r\n") self.sendall("".join(headers).encode()) @@ -399,7 +466,12 @@ def connect(self, destpair): To select the proxy server use setproxy(). """ # Do a minimal input check first - if (not type(destpair) in (list,tuple)) or (len(destpair) < 2) or (not isinstance(destpair[0], basestring)) or (type(destpair[1]) != int): + if ( + (not type(destpair) in (list, tuple)) + or (len(destpair) < 2) + or (not isinstance(destpair[0], basestring)) + or (type(destpair[1]) != int) + ): raise GeneralProxyError((5, _generalerrors[5])) if self.__proxy[0] == PROXY_TYPE_SOCKS5: if self.__proxy[2] != None: @@ -413,23 +485,23 @@ def connect(self, destpair): portnum = self.__proxy[2] else: portnum = 1080 - _orgsocket.connect(self,(self.__proxy[1], portnum)) + _orgsocket.connect(self, (self.__proxy[1], portnum)) self.__negotiatesocks4(destpair[0], destpair[1]) elif self.__proxy[0] == PROXY_TYPE_HTTP: if self.__proxy[2] != None: portnum = self.__proxy[2] else: portnum = 8080 - _orgsocket.connect(self,(self.__proxy[1], portnum)) + _orgsocket.connect(self, (self.__proxy[1], portnum)) self.__negotiatehttp(destpair[0], destpair[1]) elif self.__proxy[0] == PROXY_TYPE_HTTP_NO_TUNNEL: if self.__proxy[2] != None: portnum = self.__proxy[2] else: portnum = 8080 - _orgsocket.connect(self,(self.__proxy[1],portnum)) + _orgsocket.connect(self, (self.__proxy[1], portnum)) if destpair[1] == 443: - self.__negotiatehttp(destpair[0],destpair[1]) + self.__negotiatehttp(destpair[0], destpair[1]) else: self.__httptunnel = False elif self.__proxy[0] == None: diff --git a/shotgun_api3/lib/requirements.txt b/shotgun_api3/lib/requirements.txt new file mode 100644 index 000000000..595e085db --- /dev/null +++ b/shotgun_api3/lib/requirements.txt @@ -0,0 +1,32 @@ +# Copyright (c) 2009-2019, Shotgun Software Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# - Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# - Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# - Neither the name of the Shotgun Software Inc nor the names of its +# contributors may be used to endorse or promote products derived from this +# software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# This file is unused. It is left there so Github can warn us is a CVE is +# released for our dependencies. +httplib2==0.12.0 +simplejson=2.1.6 \ No newline at end of file diff --git a/tests/base.py b/tests/base.py index 6f86b79d6..5b35cb945 100644 --- a/tests/base.py +++ b/tests/base.py @@ -18,27 +18,35 @@ class TestBase(unittest.TestCase): Sets up mocking and database test data.''' + human_user = None + project = None + shot = None + asset = None + version = None + note = None + playlist = None + task = None + ticket = None + human_password = None + server_url = None + server_address = None + session_token = None + def __init__(self, *args, **kws): unittest.TestCase.__init__(self, *args, **kws) - self.human_user = None - self.project = None - self.shot = None - self.asset = None - self.version = None - self.note = None - self.playlist = None - self.task = None - self.ticket = None - self.human_password = None - self.server_url = None - self.server_address = None - self.session_token = None self.connect = False + @classmethod + def setUpClass(cls): + """ + Loads the configuration file from disk. + """ + # Since the file is read and never modified, we will only read + # it once in memory and be done. + cls.config = SgTestConfig() + cls.config.read_config(CONFIG_PATH) def setUp(self, auth_mode='ApiUser'): - self.config = SgTestConfig() - self.config.read_config(CONFIG_PATH) self.human_login = self.config.human_login self.human_password = self.config.human_password self.server_url = self.config.server_url @@ -192,8 +200,6 @@ class LiveTestBase(TestBase): '''Test base for tests relying on connection to server.''' def setUp(self, auth_mode='ApiUser'): super(LiveTestBase, self).setUp(auth_mode) - self.sg_version = tuple(self.sg.info()['version'][:3]) - self._setup_db(self.config) if self.sg.server_caps.version and \ self.sg.server_caps.version >= (3, 3, 0) and \ (self.sg.server_caps.host.startswith('0.0.0.0') or \ @@ -202,76 +208,96 @@ def setUp(self, auth_mode='ApiUser'): else: self.server_address = self.sg.server_caps.host - def _setup_db(self, config): - data = {'name':self.config.project_name} - self.project = _find_or_create_entity(self.sg, 'Project', data) - - data = {'name':self.config.human_name, - 'login':self.config.human_login, - 'password_proxy':self.config.human_password} - if self.sg_version >= (3, 0, 0): + @classmethod + def setUpClass(cls): + """ + Sets up common and recurring operations for all tests. + """ + # The code below simply retrieves entities from Shotgun, or creates + # them the very first time the test suite is run againt the site. + # As such, since the operation is read-only, there's no sense + # reloading stuff from Shotgun over and over again during each test. + # As such, we are using setUpClass to load them once during the + # entire duration of the tests. + super(LiveTestBase, cls).setUpClass() + sg = api.Shotgun( + cls.config.server_url, + cls.config.script_name, + cls.config.api_key + ) + cls.sg_version = tuple(sg.info()['version'][:3]) + cls._setup_db(cls.config, sg) + + @classmethod + def _setup_db(cls, config, sg): + data = {'name': cls.config.project_name} + cls.project = _find_or_create_entity(sg, 'Project', data) + + data = {'name': cls.config.human_name, + 'login': cls.config.human_login, + 'password_proxy': cls.config.human_password} + if cls.sg_version >= (3, 0, 0): data['locked_until'] = None + cls.human_user = _find_or_create_entity(sg, 'HumanUser', data) - self.human_user = _find_or_create_entity(self.sg, 'HumanUser', data) - - data = {'code':self.config.asset_code, - 'project':self.project} + data = {'code': cls.config.asset_code, + 'project': cls.project} keys = ['code'] - self.asset = _find_or_create_entity(self.sg, 'Asset', data, keys) + cls.asset = _find_or_create_entity(sg, 'Asset', data, keys) - data = {'project':self.project, - 'code':self.config.version_code, - 'entity':self.asset, - 'user':self.human_user, + data = {'project': cls.project, + 'code': cls.config.version_code, + 'entity': cls.asset, + 'user': cls.human_user, 'sg_frames_aspect_ratio': 13.3, 'frame_count': 33} keys = ['code','project'] - self.version = _find_or_create_entity(self.sg, 'Version', data, keys) + cls.version = _find_or_create_entity(sg, 'Version', data, keys) keys = ['code','project'] - data = {'code':self.config.shot_code, - 'project':self.project} - self.shot = _find_or_create_entity(self.sg, 'Shot', data, keys) + data = {'code': cls.config.shot_code, + 'project': cls.project} + cls.shot = _find_or_create_entity(sg, 'Shot', data, keys) keys = ['project','user'] - data = {'project':self.project, - 'user':self.human_user, + data = {'project': cls.project, + 'user': cls.human_user, 'content':'anything'} - self.note = _find_or_create_entity(self.sg, 'Note', data, keys) + cls.note = _find_or_create_entity(sg, 'Note', data, keys) keys = ['code','project'] - data = {'project':self.project, - 'code':self.config.playlist_code} - self.playlist = _find_or_create_entity(self.sg, 'Playlist', data, keys) + data = {'project': cls.project, + 'code': cls.config.playlist_code} + cls.playlist = _find_or_create_entity(sg, 'Playlist', data, keys) keys = ['code', 'entity_type'] data = {'code': 'wrapper test step', 'entity_type': 'Shot'} - self.step = _find_or_create_entity(self.sg, 'Step', data, keys) + cls.step = _find_or_create_entity(sg, 'Step', data, keys) keys = ['project', 'entity', 'content'] - data = {'project':self.project, - 'entity':self.asset, - 'content':self.config.task_content, + data = {'project': cls.project, + 'entity': cls.asset, + 'content': cls.config.task_content, 'color':'Black', 'due_date':'1968-10-13', - 'task_assignees': [self.human_user], + 'task_assignees': [cls.human_user], 'sg_status_list': 'ip'} - self.task = _find_or_create_entity(self.sg, 'Task', data, keys) + cls.task = _find_or_create_entity(sg, 'Task', data, keys) - data = {'project':self.project, - 'title':self.config.ticket_title, + data = {'project': cls.project, + 'title': cls.config.ticket_title, 'sg_priority': '3'} keys = ['title','project', 'sg_priority'] - self.ticket = _find_or_create_entity(self.sg, 'Ticket', data, keys) + cls.ticket = _find_or_create_entity(sg, 'Ticket', data, keys) keys = ['code'] data = {'code':'api wrapper test storage', 'mac_path':'nowhere', 'windows_path':'nowhere', 'linux_path':'nowhere'} - self.local_storage = _find_or_create_entity(self.sg, 'LocalStorage', data, keys) + cls.local_storage = _find_or_create_entity(sg, 'LocalStorage', data, keys) class HumanUserAuthLiveTestBase(LiveTestBase): @@ -294,9 +320,7 @@ def setUp(self): class SgTestConfig(object): '''Reads test config and holds values''' def __init__(self): - for key in self.config_keys(): - # Look for any environment variables that match our test # configuration naming of "SG_{KEY}". Default is None. value = os.environ.get('SG_%s' % (str(key).upper())) @@ -309,7 +333,7 @@ def config_keys(self): 'api_key', 'asset_code', 'http_proxy', 'human_login', 'human_name', 'human_password', 'mock', 'project_name', 'script_name', 'server_url', 'session_uuid', 'shot_code', 'task_content', - 'version_code', 'playlist_code' + 'version_code', 'playlist_code', 'ticket_title' ] def read_config(self, config_path): diff --git a/tests/test_api.py b/tests/test_api.py index 12a3673b3..453f6c4e3 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -793,6 +793,9 @@ def test_preferences_read(self): if not self.sg.server_caps.version or self.sg.server_caps.version < (7, 10, 0): return + # This is a big diff if it fails, so show everything. + self.maxDiff = None + # all prefs resp = self.sg.preferences_read() @@ -807,7 +810,8 @@ def test_preferences_read(self): 'format_footage_fields': '10-05', 'format_number_fields': '1,000', 'format_time_hour_fields': '12 hour', - 'support_local_storage': False + 'support_local_storage': False, + 'view_master_settings': '{"status_groups":[{"name":"Upcoming","code":"upc_stgr","status_list":["wtg","rdy"]},{"name":"Active","code":"act_stgr","status_list":["ip","kickbk","rev","act","rsk","blk","late","opn","pndng","tkt","push","rrq","vwd","out"]},{"name":"Done","code":"done_stgr","status_list":["fin","cmpt","apr","cbb","clsd","cfrm","dlvr","recd","res"]}],"entity_fields":{"Task":["content","sg_description","sg_status_list","due_date","task_assignees","task_reviewers"],"Shot":["code","description","sg_status_list","created_at","sg_cut_in","sg_cut_out","sg_cut_duration","sg_cut_order"],"Asset":["code","description","sg_status_list","created_at"],"Scene":["code","sg_status_list","created_at"],"Element":["code","sg_status_list","created_at"],"Release":["code","sg_status_list","created_at"],"ShootDay":["code","sg_status_list","created_at"],"MocapTake":["code","sg_status_list","created_at"],"MocapSetup":["code","sg_status_list","created_at"],"Camera":["code","sg_status_list","created_at"],"MocapTakeRange":["code","sg_status_list","created_at"],"Sequence":["code","sg_status_list","created_at"],"Level":["code","sg_status_list","created_at"],"Episode":["code","sg_status_list","created_at"]},"entity_fields_fixed":{"Asset":["code","description","sg_status_list"],"Shot":["code","description","sg_status_list"],"Task":["content","sg_status_list","due_date","task_assignees","task_reviewers"],"Scene":["code","description","sg_status_list"],"Element":["code","description","sg_status_list"],"Release":["code","description","sg_status_list"],"ShootDay":["code","description","sg_status_list"],"MocapTake":["code","description","sg_status_list"],"MocapSetup":["code","description","sg_status_list"],"Camera":["code","description","sg_status_list"],"MocapTakeRange":["code","description","sg_status_list"],"Sequence":["code","description","sg_status_list"],"Level":["code","description","sg_status_list"],"Episode":["code","description","sg_status_list"]}}' # noqa } self.assertEqual(expected, resp) From d43e9ab2dc1d859b89c2b31764d1c61de7e23f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Thu, 7 Feb 2019 15:15:08 -0500 Subject: [PATCH 066/245] packaging for v3.0.38 --- HISTORY.rst | 10 ++++++---- shotgun_api3/shotgun.py | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index ebb2f65db..75ea18dd7 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,18 +4,20 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. -v3.0.38.dev +v3.0.38 (2019 February 7) ===================== -- TBD +- Upgrades the version of ``httplib2`` to ``0.12.0``, which fixes SNI issues. Note this + version contains a more recent list of certificate authorities. If you are running Shotgun locally and have + signed your https certificate with an outdated certificate authority, the Shotgun connection will be rejected. -v3.0.37 +v3.0.37 (2018 July 19) ===================== - Proper support added for unicode and utf-8 string paths given to upload methods, and a sane error is raised when an unusable string encoding is used. - Adds support for querying preferences from Shotgun via the new preferences_read method. - Under-the-hood changes to add support for direct to s3 uploads to Shotgun. This change should be transparent to users. -v3.0.36 +v3.0.36 (2018 April 3) ===================== - Fixes an error where ``connect=False`` during ``__init__`` would still connect to Shotgun. diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index d6f8023df..23b769a1d 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.38.dev" +__version__ = "3.0.38" # ---------------------------------------------------------------------------- # Errors From c699e4b4aeaecb8d7addedc0682dc1d8d8e295b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Wed, 20 Feb 2019 13:05:13 -0500 Subject: [PATCH 067/245] For SG-10538, bad certs on upload fix This ensures we are using the right certificates when uploading a file. --- shotgun_api3/shotgun.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 23b769a1d..b10ff51ab 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -3102,7 +3102,8 @@ def _build_opener(self, handler): if self.config.proxy_handler: handlers.append(self.config.proxy_handler) - handlers.append(handler) + if handler is not None: + handlers.append(handler) return urllib2.build_opener(*handlers) def _turn_off_ssl_validation(self): @@ -3810,7 +3811,7 @@ def _upload_data_to_storage(self, data, content_type, size, storage_url): :rtype: str """ try: - opener = urllib2.build_opener(urllib2.HTTPHandler) + opener = self._build_opener(urllib2.HTTPHandler) request = urllib2.Request(storage_url, data=data) request.add_header("Content-Type", content_type) From ba05854628a63f26f941cf0b068444824f4cb8aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Boismenu?= Date: Wed, 20 Feb 2019 13:08:53 -0500 Subject: [PATCH 068/245] Packaging up for the 3.0.39 release. --- HISTORY.rst | 7 ++++++- README.md | 2 +- setup.py | 2 +- shotgun_api3/shotgun.py | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 75ea18dd7..f3f934a16 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,7 +4,12 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. -v3.0.38 (2019 February 7) +v3.0.39 (2019 February 20) +===================== +- Ensures the certificates packaged with the API and those specified via the `SHOTGUN_API_CACERTS` environment variable + are used when uploading a file. + +v3.0.39 (2019 February 7) ===================== - Upgrades the version of ``httplib2`` to ``0.12.0``, which fixes SNI issues. Note this version contains a more recent list of certificate authorities. If you are running Shotgun locally and have diff --git a/README.md b/README.md index a3d2a0a7f..1fff61770 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Integration and unit tests are provided. - Ensure that doc strings are updated in the code itself to work with Sphinx and are correctly formatted. - Examples are always good especially if this a new feature or method. - Think about a new user to the API trying to figure out how to use the features you're documenting. -3) Update the version value in `shotgun_api3/setup.py` to match the version you are packaging. This controls what version users will get when installing via pip. +3) Update the version value in `python-api/setup.py` to match the version you are packaging. This controls what version users will get when installing via pip. 4) Update the `__version__` value in `shotgun_api3/shotgun.py` to the version you're releasing. This identified the current version within the API itself. 5) Commit these changes in master with a commit message like `packaging for the vx.x.x release`. 6) Create a tag based off of the master branch called `vx.x.x` to match the version number you're releasing. diff --git a/setup.py b/setup.py index d1c5c08ac..ebcf099d8 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.38', + version='3.0.39', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index b10ff51ab..b2b9cffb7 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.38" +__version__ = "3.0.39" # ---------------------------------------------------------------------------- # Errors From 5850910b8caf8a33ce8298abb642a2905e83a732 Mon Sep 17 00:00:00 2001 From: Patrick Hubert Date: Fri, 22 Feb 2019 09:53:36 -0500 Subject: [PATCH 069/245] Updated the info() return values (#189) * Updated the info() return values * Acted on reviewer s comment * Removed reference of unified_login_flow_enabled in the sample return array --- shotgun_api3/shotgun.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index b2b9cffb7..365ea6cd5 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -693,12 +693,29 @@ def info(self): Get API-related metadata from the Shotgun server. >>> sg.info() - {'full_version': [6, 3, 15, 0], 'version': [6, 3, 15], ...} + {'full_version': [8, 2, 1, 0], 'version': [8, 2, 1], 'user_authentication_method': 'default', ...} + + Tokens and values + ----------------- + + :: + + Token Value + -------- --------- + full_version An ordered array of the full Shotgun version. + [major, minor, patch, hotfix] + version An ordered array of the Shotgun version. + [major, minor, patch] + user_authentication_method Indicates the authentication method used by Shotgun. + Will be one of the following values: + default: regular username/password. + ldap: username/password from the company's LDAP. + saml2: SSO used, over SAML2. .. note:: - Beyond ``full_version`` and ``version`` which differ by the inclusion of the bugfix number, you should expect - these values to be unsupported and for internal use only. + Beyond the documented tokens, you should expect + the other values to be unsupported and for internal use only. :returns: dict of the server metadata. :rtype: dict From cb70773aff32952106ed0db43d13ee0fec133970 Mon Sep 17 00:00:00 2001 From: dallum Date: Wed, 27 Feb 2019 12:32:45 +0000 Subject: [PATCH 070/245] Update shotgun.py --- shotgun_api3/shotgun.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 365ea6cd5..bd2079016 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -1,7 +1,7 @@ #!/usr/bin/env python """ ----------------------------------------------------------------------------- - Copyright (c) 2009-2018, Shotgun Software Inc. + Copyright (c) 2009-2019, Shotgun Software Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From 832ef7d10f28cffebf935ebdc141e3b0baf150fd Mon Sep 17 00:00:00 2001 From: Ethan Estrada Date: Wed, 13 Mar 2019 16:11:59 -0600 Subject: [PATCH 071/245] Avoid errors when uploading large files (#94) Reading/writing a large file all at once can cause a MemoryError or an OverflowError. Using `shutil.copyfileobj` seems to solve the issue. --- shotgun_api3/shotgun.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index bd2079016..7043908c5 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -4040,7 +4040,9 @@ def encode(self, params, files, boundary=None, buffer=None): buffer.write('Content-Type: %s\r\n' % content_type) buffer.write('Content-Length: %s\r\n' % file_size) fd.seek(0) - buffer.write('\r\n%s\r\n' % fd.read()) + buffer.write('\r\n') + shutil.copyfileobj(fd, buffer) + buffer.write('\r\n') buffer.write('--%s--\r\n\r\n' % boundary) buffer = buffer.getvalue() return boundary, buffer From fad9e85eda69fcc99ce03c9a9caee2e895c45a00 Mon Sep 17 00:00:00 2001 From: Neil Grey Date: Wed, 13 Mar 2019 15:31:10 -0700 Subject: [PATCH 072/245] Packaging up for the 3.0.40 release --- HISTORY.rst | 4 ++++ setup.py | 2 +- shotgun_api3/shotgun.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index f3f934a16..39c5fecd3 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,10 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.0.40 (2019 March 13) +===================== +- Updates encoding method to use shutil when uploading, to avoid memory and overflow errors when reading large files. (contributed by @eestrada) + v3.0.39 (2019 February 20) ===================== - Ensures the certificates packaged with the API and those specified via the `SHOTGUN_API_CACERTS` environment variable diff --git a/setup.py b/setup.py index ebcf099d8..0f3b065c0 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.39', + version='3.0.40', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 7043908c5..81627ca19 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.39" +__version__ = "3.0.40" # ---------------------------------------------------------------------------- # Errors From be1f679601fc432f9374dba1ea32cbc310eaa9f8 Mon Sep 17 00:00:00 2001 From: Hasiel Alvarez Date: Fri, 26 Apr 2019 17:28:18 -0700 Subject: [PATCH 073/245] Added support for "not_in" operator when using text fields (#193) Thank you for your contribution @hasielhassan ! --- shotgun_api3/lib/mockgun/mockgun.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index d3c73c865..d8f33cebb 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -607,6 +607,8 @@ def _compare(self, field_type, lval, operator, rval): return lval.startswith(rval) elif operator == "ends_with": return lval.endswith(rval) + elif operator == "not_in": + return lval not in rval elif field_type == "entity": if operator == "is": # If one of the two is None, ensure both are. From 6094e337a46565e5d46d66764b41a22ae183e0ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manne=20=C3=96hrstr=C3=B6m?= Date: Mon, 17 Jun 2019 06:30:24 +0200 Subject: [PATCH 074/245] [minor] Added missing doc to index Added the preferences_read method to the API index. --- docs/reference.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/reference.rst b/docs/reference.rst index 50eb45b3e..ebcaa4f59 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -66,6 +66,7 @@ The documentation for all of the methods you'll need in your scripts lives in he Shotgun.update_project_last_accessed Shotgun.work_schedule_read Shotgun.work_schedule_update + Shotgun.preferences_read .. rubric:: Working With Files @@ -89,7 +90,7 @@ The documentation for all of the methods you'll need in your scripts lives in he Shotgun.unfollow Shotgun.followers -.. rubric:: Working with the Shotgun Schema +.. rubric:: Working with the Shotgun Schema and Preferences .. autosummary:: :nosignatures: From a1e3d1609eace135a7c9030430d93f86c12280bd Mon Sep 17 00:00:00 2001 From: Will Cavanagh Date: Fri, 28 Jun 2019 11:20:24 -0400 Subject: [PATCH 075/245] SG-11528 Add optional sleep between retries (#196) Add an optional sleep between retries on failed requests defaulting to 3 seconds. Allow the interval to be set by an environment variable or a property on sg.config. --- .travis.yml | 4 +++ HISTORY.rst | 4 +++ docs/reference.rst | 19 +++++++++++++ setup.py | 2 +- shotgun_api3/shotgun.py | 32 ++++++++++++++++++++-- tests/test_api.py | 5 +++- tests/test_client.py | 59 ++++++++++++++++++++++++++++++++++++----- 7 files changed, 115 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index d8bfa73f0..89a7ee6c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,10 @@ language: python python: - "2.6" - "2.7" + +# use trusty dist, since xenial (default) does not support python 2.6 +dist: trusty + # command to install dependencies install: - pip install -r tests/ci_requirements.txt diff --git a/HISTORY.rst b/HISTORY.rst index 39c5fecd3..45950bbc7 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,10 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.0.41 (2019 June 28) +===================== +- Adds an optional sleep between retries specified via the `SHOTGUN_API_RETRY_INTERVAL` environment variable, or by setting `sg.config.rpc_attempt_interval`. + v3.0.40 (2019 March 13) ===================== - Updates encoding method to use shutil when uploading, to avoid memory and overflow errors when reading large files. (contributed by @eestrada) diff --git a/docs/reference.rst b/docs/reference.rst index ebcaa4f59..a529711e9 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -869,4 +869,23 @@ are specifically displaying EventLogEntries in the web application, or API queri log that are run. We are always looking for ways to improve this in the future. If you have any immediate concerns, please `reach out to our support team `_ +********************* +Environment Variables +********************* + +SHOTGUN_API_CACERTS +=================== + +Used to specify a path to an external SSL certificates file. This environment variable can be used in place of the ``ca_certs`` keyword argument to the :class:`~shotgun.Shotgun` constructor. In the case that both this environment variable is set and the keyword argument is provided, the value from the keyword argument will be used. + + +SHOTGUN_API_RETRY_INTERVAL +========================== + +Stores the number of milliseconds to wait between request retries. By default, a value of 3000 milliseconds is used. You can override the default either by setting this environment variable, or by setting the ``rpc_attempt_interval`` property on the config like so: :: + + sg = Shotgun(site_name, script_name, script_key) + sg.config.rpc_attempt_interval = 1000 # adjusting default interval + +In the case that both this environment variable and the config's ``rpc_attempt_interval`` property are set, the value in ``rpc_attempt_interal`` will be used. diff --git a/setup.py b/setup.py index 0f3b065c0..638625434 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( name='shotgun_api3', - version='3.0.40', + version='3.0.41', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 81627ca19..65a6ebc62 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -92,7 +92,7 @@ # ---------------------------------------------------------------------------- # Version -__version__ = "3.0.40" +__version__ = "3.0.41" # ---------------------------------------------------------------------------- # Errors @@ -345,6 +345,17 @@ def __init__(self, sg): """ self._sg = sg self.max_rpc_attempts = 3 + # rpc_attempt_interval stores the number of milliseconds to wait between + # request retries. By default, this will be 3000 milliseconds. You can + # override this by setting this property on the config like so: + # + # sg = Shotgun(site_name, script_name, script_key) + # sg.config.rpc_attempt_interval = 1000 # adjusting default interval + # + # Or by setting the ``SHOTGUN_API_RETRY_INTERVAL`` environment variable. + # In the case that the environment variable is already set, setting the + # property on the config will override it. + self.rpc_attempt_interval = 3000 # From http://docs.python.org/2.6/library/httplib.html: # If the optional timeout parameter is given, blocking operations # (like connection attempts) will timeout after that many seconds @@ -553,6 +564,17 @@ def __init__(self, self.config.convert_datetimes_to_utc = convert_datetimes_to_utc self.config.no_ssl_validation = NO_SSL_VALIDATION self.config.raw_http_proxy = http_proxy + + try: + self.config.rpc_attempt_interval = int(os.environ.get("SHOTGUN_API_RETRY_INTERVAL", 3000)) + except ValueError: + retry_interval = os.environ.get("SHOTGUN_API_RETRY_INTERVAL", 3000) + raise ValueError("Invalid value '%s' found in environment variable " + "SHOTGUN_API_RETRY_INTERVAL, must be int." % retry_interval) + if self.config.rpc_attempt_interval < 0: + raise ValueError("Value of SHOTGUN_API_RETRY_INTERVAL must be positive, " + "got '%s'." % self.config.rpc_attempt_interval) + self._connection = None if ca_certs is not None: self.__ca_certs = ca_certs @@ -3308,6 +3330,7 @@ def _make_call(self, verb, path, body, headers): body = body or None max_rpc_attempts = self.config.max_rpc_attempts + rpc_attempt_interval = self.config.rpc_attempt_interval / 1000.0 while (attempt < max_rpc_attempts): attempt += 1 @@ -3346,10 +3369,15 @@ def _make_call(self, verb, path, body, headers): if attempt == max_rpc_attempts: raise except Exception: - #TODO: LOG ? self._close_connection() if attempt == max_rpc_attempts: + LOG.debug("Request failed. Giving up after %d attempts." % attempt) raise + LOG.debug( + "Request failed, attempt %d of %d. Retrying in %.2f seconds..." % + (attempt, max_rpc_attempts, rpc_attempt_interval) + ) + time.sleep(rpc_attempt_interval) def _http_request(self, verb, path, body, headers): """ diff --git a/tests/test_api.py b/tests/test_api.py index 453f6c4e3..21be3555f 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -801,6 +801,7 @@ def test_preferences_read(self): expected = { 'date_component_order': 'month_day', + 'duration_units': 'days', 'format_currency_fields_decimal_options': '$1,000.99', 'format_currency_fields_display_dollar_sign': False, 'format_currency_fields_negative_options': '- $1,000', @@ -810,8 +811,10 @@ def test_preferences_read(self): 'format_footage_fields': '10-05', 'format_number_fields': '1,000', 'format_time_hour_fields': '12 hour', + 'hours_per_day': 8.0, + 'last_day_work_week': None, 'support_local_storage': False, - 'view_master_settings': '{"status_groups":[{"name":"Upcoming","code":"upc_stgr","status_list":["wtg","rdy"]},{"name":"Active","code":"act_stgr","status_list":["ip","kickbk","rev","act","rsk","blk","late","opn","pndng","tkt","push","rrq","vwd","out"]},{"name":"Done","code":"done_stgr","status_list":["fin","cmpt","apr","cbb","clsd","cfrm","dlvr","recd","res"]}],"entity_fields":{"Task":["content","sg_description","sg_status_list","due_date","task_assignees","task_reviewers"],"Shot":["code","description","sg_status_list","created_at","sg_cut_in","sg_cut_out","sg_cut_duration","sg_cut_order"],"Asset":["code","description","sg_status_list","created_at"],"Scene":["code","sg_status_list","created_at"],"Element":["code","sg_status_list","created_at"],"Release":["code","sg_status_list","created_at"],"ShootDay":["code","sg_status_list","created_at"],"MocapTake":["code","sg_status_list","created_at"],"MocapSetup":["code","sg_status_list","created_at"],"Camera":["code","sg_status_list","created_at"],"MocapTakeRange":["code","sg_status_list","created_at"],"Sequence":["code","sg_status_list","created_at"],"Level":["code","sg_status_list","created_at"],"Episode":["code","sg_status_list","created_at"]},"entity_fields_fixed":{"Asset":["code","description","sg_status_list"],"Shot":["code","description","sg_status_list"],"Task":["content","sg_status_list","due_date","task_assignees","task_reviewers"],"Scene":["code","description","sg_status_list"],"Element":["code","description","sg_status_list"],"Release":["code","description","sg_status_list"],"ShootDay":["code","description","sg_status_list"],"MocapTake":["code","description","sg_status_list"],"MocapSetup":["code","description","sg_status_list"],"Camera":["code","description","sg_status_list"],"MocapTakeRange":["code","description","sg_status_list"],"Sequence":["code","description","sg_status_list"],"Level":["code","description","sg_status_list"],"Episode":["code","description","sg_status_list"]}}' # noqa + 'view_master_settings': '{"status_groups":[{"name":"Upcoming","code":"upc_stgr","status_list":["wtg","rdy"]},{"name":"Active","code":"act_stgr","status_list":["ip","kickbk","rev","act","rsk","blk","late","opn","pndng","tkt","push","rrq","vwd","out"]},{"name":"Done","code":"done_stgr","status_list":["fin","cmpt","apr","cbb","clsd","cfrm","dlvr","recd","res"]}],"entity_fields":{"Task":["content","sg_description","sg_status_list","due_date","task_assignees","task_reviewers","time_logs_sum"],"Shot":["code","description","sg_status_list","created_at","sg_cut_in","sg_cut_out","sg_cut_duration","sg_cut_order"],"Asset":["code","description","sg_status_list","created_at"],"Scene":["code","sg_status_list","created_at"],"Element":["code","sg_status_list","created_at"],"Release":["code","sg_status_list","created_at"],"ShootDay":["code","sg_status_list","created_at"],"MocapTake":["code","sg_status_list","created_at"],"MocapSetup":["code","sg_status_list","created_at"],"Camera":["code","sg_status_list","created_at"],"MocapTakeRange":["code","sg_status_list","created_at"],"Sequence":["code","sg_status_list","created_at"],"Level":["code","sg_status_list","created_at"],"Episode":["code","sg_status_list","created_at"],"Version":["code","description","sg_status_list"]},"entity_fields_fixed":{"Asset":["code","description","sg_status_list"],"Shot":["code","description","sg_status_list"],"Task":["content","sg_status_list","due_date","task_assignees","task_reviewers","time_logs_sum"],"Scene":["code","description","sg_status_list"],"Element":["code","description","sg_status_list"],"Release":["code","description","sg_status_list"],"ShootDay":["code","description","sg_status_list"],"MocapTake":["code","description","sg_status_list"],"MocapSetup":["code","description","sg_status_list"],"Camera":["code","description","sg_status_list"],"MocapTakeRange":["code","description","sg_status_list"],"Sequence":["code","description","sg_status_list"],"Level":["code","description","sg_status_list"],"Episode":["code","description","sg_status_list"],"Version":["code","description","sg_status_list"]},"board_sorting":{"Upcoming":{"Task":[{"direction":"desc","field_name":"due_date"},{"direction":"asc","field_name":"content"}]},"Done":{"Task":[{"direction":"desc","field_name":"due_date"},{"direction":"asc","field_name":"content"}]},"Active":{"Task":[{"direction":"desc","field_name":"due_date"},{"direction":"asc","field_name":"content"}]}},"status_default":{"Version":{"pending_review_status":["rev"],"viewed_review_status":["vwd"]},"Task":{"final_review_status":["fin"]}},"entity_forms":{"TimeLog":["date","description","duration"]},"entity_forms_fixed":{"TimeLog":["date","description","duration"]},"enable_timelog_at_version_creation":false}' # noqa } self.assertEqual(expected, resp) diff --git a/tests/test_client.py b/tests/test_client.py index 72d59a445..c2fecb021 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -5,6 +5,7 @@ import base64 import datetime import urllib +import os import re try: import simplejson as json @@ -225,15 +226,61 @@ def test_connect_close(self): self.sg.close() self.assertEqual(None, self.sg._connection) - def test_network_retry(self): - """Network failure is retried""" + """Network failure is retried, with a sleep call between retries.""" self.sg._http_request.side_effect = httplib2.HttpLib2Error - self.assertRaises(httplib2.HttpLib2Error, self.sg.info) - self.assertTrue( - self.sg.config.max_rpc_attempts ==self.sg._http_request.call_count, - "Call is repeated") + with mock.patch("time.sleep") as mock_sleep: + self.assertRaises(httplib2.HttpLib2Error, self.sg.info) + self.assertTrue( + self.sg.config.max_rpc_attempts == self.sg._http_request.call_count, + "Call is repeated") + # Ensure that sleep was called with the retry interval between each attempt + attempt_interval = self.sg.config.rpc_attempt_interval / 1000.0 + calls = [mock.callargs(((attempt_interval,), {}))] + calls *= (self.sg.config.max_rpc_attempts - 1) + self.assertTrue( + mock_sleep.call_args_list == calls, + "Call is repeated at correct interval." + ) + + def test_set_retry_interval(self): + """Setting the retry interval through parameter and environment variable works.""" + original_env_val = os.environ.pop("SHOTGUN_API_RETRY_INTERVAL", None) + + try: + def run_interval_test(expected_interval, interval_property=None): + self.sg = api.Shotgun(self.config.server_url, + self.config.script_name, + self.config.api_key, + http_proxy=self.config.http_proxy, + connect=self.connect) + self._setup_mock() + if interval_property: + # if a value was provided for interval_property, set the + # config's property to that value. + self.sg.config.rpc_attempt_interval = interval_property + self.sg._http_request.side_effect = httplib2.HttpLib2Error + self.assertEqual(self.sg.config.rpc_attempt_interval, expected_interval) + self.test_network_retry() + + # Try passing parameter and ensure the correct interval is used. + run_interval_test(expected_interval=2500, interval_property=2500) + + # Try setting ENV VAR and ensure the correct interval is used. + os.environ["SHOTGUN_API_RETRY_INTERVAL"] = "2000" + run_interval_test(expected_interval=2000) + + # Try both parameter and environment variable, to ensure parameter wins. + run_interval_test(expected_interval=4000, interval_property=4000) + + finally: + # Restore environment variable. + if original_env_val is not None: + os.environ["SHOTGUN_API_RETRY_INTERVAL"] = original_env_val + elif "SHOTGUN_API_RETRY_INTERVAL" in os.environ: + os.environ.pop("SHOTGUN_API_RETRY_INTERVAL") + def test_http_error(self): """HTTP error raised and not retried.""" From c9f517f2b13890a637a4ced0c237ac3724ff5954 Mon Sep 17 00:00:00 2001 From: Will Cavanagh Date: Mon, 29 Jul 2019 13:26:23 -0400 Subject: [PATCH 076/245] SG-11735: Support for Python 3! (#202) Python 3 support is here! This release is also compatible with Python 2.6 and 2.7, as it was before. This release includes a large number of changes to accommodate the newer versions of Python, but functionally it should remain the same. --- .coveragerc | 2 +- .flake8 | 13 + .gitignore | 10 + .travis.yml | 87 +- HISTORY.rst | 4 + README.md | 84 +- appveyor.yml | 12 + .../examples/ami_version_packager.rst | 2 +- docs/cookbook/examples/basic_create_shot.rst | 2 +- docs/cookbook/examples/svn_integration.rst | 4 +- docs/installation.rst | 2 +- nose.cfg | 12 + run-tests | 12 +- run-tests-2.4 | 1 - run-tests-2.5 | 1 - setup.py | 12 +- shotgun_api3/__init__.py | 19 +- shotgun_api3/lib/README.md | 58 + shotgun_api3/lib/httplib2/__init__.py | 2237 +------------- shotgun_api3/lib/httplib2/python2/__init__.py | 2223 ++++++++++++++ .../lib/httplib2/{ => python2}/cacerts.txt | 0 .../lib/httplib2/{ => python2}/certs.py | 0 .../lib/httplib2/{ => python2}/iri2uri.py | 0 .../lib/httplib2/{ => python2}/socks.py | 0 shotgun_api3/lib/httplib2/python3/__init__.py | 2012 +++++++++++++ shotgun_api3/lib/httplib2/python3/cacerts.txt | 2196 ++++++++++++++ shotgun_api3/lib/httplib2/python3/certs.py | 42 + shotgun_api3/lib/httplib2/python3/iri2uri.py | 124 + shotgun_api3/lib/httplib2/python3/socks.py | 516 ++++ shotgun_api3/lib/mimetypes.py | 315 +- shotgun_api3/lib/mockgun/mockgun.py | 11 +- shotgun_api3/lib/mockgun/schema.py | 3 +- shotgun_api3/lib/requirements.txt | 2 +- shotgun_api3/lib/sgsix.py | 57 + shotgun_api3/lib/sgtimezone.py | 42 +- shotgun_api3/lib/simplejson/__init__.py | 438 --- shotgun_api3/lib/simplejson/_speedups.c | 2652 ----------------- shotgun_api3/lib/simplejson/decoder.py | 421 --- shotgun_api3/lib/simplejson/encoder.py | 503 ---- shotgun_api3/lib/simplejson/ordered_dict.py | 119 - shotgun_api3/lib/simplejson/scanner.py | 77 - shotgun_api3/lib/simplejson/tool.py | 39 - shotgun_api3/lib/six.py | 953 ++++++ shotgun_api3/sg_24.py | 27 - shotgun_api3/sg_25.py | 26 - shotgun_api3/sg_26.py | 48 - shotgun_api3/shotgun.py | 1019 ++++--- tests/base.py | 205 +- tests/ci_requirements.txt | 17 +- tests/dummy_data.py | 876 ------ tests/example_config | 10 + tests/httplib2test.py | 1398 --------- tests/run_appveyor.bat | 2 +- tests/test_api.py | 942 +++--- tests/test_api_long.py | 57 +- tests/test_client.py | 263 +- tests/test_mockgun.py | 4 +- tests/tests_proxy.py | 26 +- tests/tests_unit.py | 188 +- 59 files changed, 10042 insertions(+), 10385 deletions(-) create mode 100644 .flake8 create mode 100644 nose.cfg delete mode 100755 run-tests-2.4 delete mode 100755 run-tests-2.5 create mode 100644 shotgun_api3/lib/README.md create mode 100644 shotgun_api3/lib/httplib2/python2/__init__.py rename shotgun_api3/lib/httplib2/{ => python2}/cacerts.txt (100%) rename shotgun_api3/lib/httplib2/{ => python2}/certs.py (100%) rename shotgun_api3/lib/httplib2/{ => python2}/iri2uri.py (100%) rename shotgun_api3/lib/httplib2/{ => python2}/socks.py (100%) create mode 100644 shotgun_api3/lib/httplib2/python3/__init__.py create mode 100644 shotgun_api3/lib/httplib2/python3/cacerts.txt create mode 100644 shotgun_api3/lib/httplib2/python3/certs.py create mode 100644 shotgun_api3/lib/httplib2/python3/iri2uri.py create mode 100644 shotgun_api3/lib/httplib2/python3/socks.py create mode 100644 shotgun_api3/lib/sgsix.py delete mode 100644 shotgun_api3/lib/simplejson/__init__.py delete mode 100644 shotgun_api3/lib/simplejson/_speedups.c delete mode 100644 shotgun_api3/lib/simplejson/decoder.py delete mode 100644 shotgun_api3/lib/simplejson/encoder.py delete mode 100644 shotgun_api3/lib/simplejson/ordered_dict.py delete mode 100644 shotgun_api3/lib/simplejson/scanner.py delete mode 100644 shotgun_api3/lib/simplejson/tool.py create mode 100644 shotgun_api3/lib/six.py delete mode 100644 shotgun_api3/sg_24.py delete mode 100644 shotgun_api3/sg_25.py delete mode 100644 shotgun_api3/sg_26.py delete mode 100644 tests/dummy_data.py delete mode 100755 tests/httplib2test.py diff --git a/.coveragerc b/.coveragerc index 5878223d2..1072562cd 100644 --- a/.coveragerc +++ b/.coveragerc @@ -16,5 +16,5 @@ source=shotgun_api3 omit= shotgun_api3/lib/httplib2/* - shotgun_api3/lib/simplejson/* + shotgun_api3/lib/six.py shotgun_api3/lib/xmlrpclib.py diff --git a/.flake8 b/.flake8 new file mode 100644 index 000000000..65dc4511d --- /dev/null +++ b/.flake8 @@ -0,0 +1,13 @@ +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + +[flake8] +max-line-length = 120 +exclude = shotgun_api3/lib/httplib2/*,shotgun_api3/lib/six.py,shotgun_api3/lib/xmlrpclib.py,tests/httplib2test.py,tests/mock.py \ No newline at end of file diff --git a/.gitignore b/.gitignore index 20ec5ddec..283d4a09f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,13 @@ +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + #python specific *.pyc diff --git a/.travis.yml b/.travis.yml index 89a7ee6c6..985e1d1bb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,22 +1,89 @@ +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + language: python -python: - - "2.6" - - "2.7" -# use trusty dist, since xenial (default) does not support python 2.6 -dist: trusty +# We need to test on multiple distros, since python 2.6 is not supported in xenial +# and 3.7 is not supported in trusty. For now just use trusty to test 2.6, and use +# the more modern xenial for 2.7 and 3.7. + +# Additionally, we'll test on multiple sites. To accomplish this, we store the +# secrets for the second site in a set of additional environment variables, +# and copy those into the standard environment variables when running on the +# second site. +matrix: + include: + + # Use trusty dist for python 2.6, since the built-in xenial distro (default) + # does not support Python 2.6 + # See https://docs.travis-ci.com/user/reference/xenial/#python-support + + # Python 2.6, Server #1 + - dist: trusty + python: "2.6" + # flake8 does not support python 2.6, so only run it on 2.7+ + env: + - RUN_FLAKE=false + + # Python 2.6, Server #2 + - dist: trusty + python: "2.6" + # flake8 does not support python 2.6, so only run it on 2.7+ + env: + - RUN_FLAKE=false + - SG_SERVER_URL=$SG_SERVER_URL_2 + - SG_API_KEY=$SG_API_KEY_2 + - SG_HUMAN_PASSWORD=$SG_HUMAN_PASSWORD_2 + + # Test python 2.7 and 3.7 on Xenial. + + # Python 2.7, Server #1 + - dist: xenial + python: "2.7" + env: + - RUN_FLAKE=true + + # Python 2.7, Server #2 + - dist: xenial + python: "2.7" + env: + - RUN_FLAKE=true + - SG_SERVER_URL=$SG_SERVER_URL_2 + - SG_API_KEY=$SG_API_KEY_2 + - SG_HUMAN_PASSWORD=$SG_HUMAN_PASSWORD_2 + + # Python 3.7, Server #1 + - dist: xenial + python: "3.7" + env: + - RUN_FLAKE=true + + # Python 3.7, Server #1 + - dist: xenial + python: "3.7" + env: + - RUN_FLAKE=true + - SG_SERVER_URL=$SG_SERVER_URL_2 + - SG_API_KEY=$SG_API_KEY_2 + - SG_HUMAN_PASSWORD=$SG_HUMAN_PASSWORD_2 # command to install dependencies install: - pip install -r tests/ci_requirements.txt before_script: - cp ./tests/example_config ./tests/config -# command to run tests -script: coverage run -m nose +# Run flake and then run tests +script: + - if [ -n "$RUN_FLAKE" = true ]; then flake8; fi + - coverage run -m nose --config="nose.cfg" after_success: coveralls notifications: email: - api@shotgunsoftware.com - slack: - rooms: - secure: NgcVxptQji2OL7EKx5owh21tOl4rRg51ydYhLPHpBIpBVzlqPxi1jbMHpcbl8mG+GuhU6y1D6kVQgQfuAfIWx5YOc4FodhOFZgeS+eol5RTmEepl1OT6XmAVgEclSZUYQmK25OkcxnFnOV/31RuDPXWcgCvSBZqTy6lAbOZ5VwQ= diff --git a/HISTORY.rst b/HISTORY.rst index 45950bbc7..13fe5ab99 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,6 +4,10 @@ Shotgun Python API Changelog Here you can see the full list of changes between each Python API release. +v3.1.0 (2019 July 29) +===================== +- Adds support for Python 3.7 + v3.0.41 (2019 June 28) ===================== - Adds an optional sleep between retries specified via the `SHOTGUN_API_RETRY_INTERVAL` environment variable, or by setting `sg.config.rpc_attempt_interval`. diff --git a/README.md b/README.md index 1fff61770..57a22f83f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -[![VFX Platform](https://img.shields.io/badge/vfxplatform-2018-yellow.svg)](http://www.vfxplatform.com/) +[![VFX Platform](https://img.shields.io/badge/vfxplatform-2020-blue.svg)](http://www.vfxplatform.com/) +[![Python 2.6 2.7 3.7](https://img.shields.io/badge/python-2.6%20%7C%202.7%20%7C%203.7-blue.svg)](https://www.python.org/) [![Reference Documentation](http://img.shields.io/badge/doc-reference-blue.svg)](http://developer.shotgunsoftware.com/python-api) [![Build Status Linux](https://secure.travis-ci.org/shotgunsoftware/python-api.svg?branch=master)](http://travis-ci.org/shotgunsoftware/python-api) [![Build status Windows](https://ci.appveyor.com/api/projects/status/slvw7u4jatvdly98/branch/master?svg=true )](https://ci.appveyor.com/project/jfboismenu/python-api/branch/master) [![Coverage Status](https://coveralls.io/repos/github/shotgunsoftware/python-api/badge.svg?branch=master)](https://coveralls.io/github/shotgunsoftware/python-api?branch=master) -[![Linting](https://img.shields.io/badge/PEP8%20by-Hound%20CI-a873d1.svg)](https://houndci.com) # Shotgun Python API @@ -15,14 +15,10 @@ The latest version can always be found at http://github.com/shotgunsoftware/pyth ## Minimum Requirements * Shotgun server v2.4.12+. -* Python v2.6 - v2.7. - -## High Performance Requirements - -* Install [simplejson 2.1.6](http://pypi.python.org/pypi/simplejson/2.1.6) +* Python v2.6 - v2.7 or v3.7 ## Documentation -Tutorials and detailed documentation about the Python API are available at http://developer.shotgunsoftware.com/python-api). +Tutorials and detailed documentation about the Python API are available at http://developer.shotgunsoftware.com/python-api). Some useful direct links: @@ -39,12 +35,70 @@ You can see the [full history of the Python API on the documentation site](http: ## Updating HTTPLib2 1. Download the latest version of HTTPLib2 at https://pypi.org/project/httplib2. -2. Extract the python2/httplib2 into shotgun_api3/lib/http2lib without the test folder. -3. Scan the files for any references to importing httplib2 and make sure they import "from ." instead of "from httplib2" because the library isn't in the Python path. +2. Extract the python2/httplib2 into shotgun_api3/lib/http2lib/python2 without the test folder. +3. Extract the python3/httplib2 into shotgun_api3/lib/http2lib/python3 without the test folder. +4. Scan the files for any references to importing httplib2 and make sure they import "from ." instead of "from httplib2" because the library isn't in the Python path. + +## Maintaining Python 2 and 3 compatibility + +python-api should remain compatible with both Python 2, and 3. To make this easier, we use [six](https://six.readthedocs.io/). When adding code that works with types that have changed between Python 2 and 3, notably strings and files, it's advisable to use the `six` types for casting and comparisons. Be sure to follow Python 2 and 3 compatible conventions in code, especially when raising or capturing exceptions and printing. While we don't use `future`, [this page](https://python-future.org/compatible_idioms.html) contains a fairly comprehensive list of Python 2/3 compatibility sticking points to look out for. + +Additionally, the [python-modernize](https://python-modernize.readthedocs.io/en/latest/) tool can be helpful when updating Python 2 code for Python 3 compatibility. + +### Examples: + +#### Comparisons against changed types: + +Python 2: + +``` +if isinstance(my_variable, str): +``` + +Python 2/3: + +``` +if isinstance(my_variable, six.string_types): +``` + +#### Catching exceptions + +Python 2: + +``` +except SomeExceptionType, e: + print "I like to swallow exceptions!" +``` + +Python 2/3: + +``` +from __future__ import print_function +except SomeExceptionType as e: + print("I like to swallow exceptions!") +``` + +#### Print statements + +Python 2: + +``` +print "My spoon is too big!" +``` + +Python 2/3: + +``` +from __future__ import print_function +print("My spoon is too big!") +``` + + +Additionally, when testing locally, tests should be run for both python 2 and python 3 to ensure changes won't break cross-compatibility. -## Tests +## Tests -Integration and unit tests are provided. +Integration and unit tests are provided. - All tests require the [nose unit testing tools](http://nose.readthedocs.org), and a `tests/config` file (you can copy an example from `tests/example_config`). - Tests can be run individually like this: `nosetest tests/test_client.py` @@ -58,11 +112,11 @@ Integration and unit tests are provided. 1) Update the Changelog in the `HISTORY.rst` file - Add bullet points for any changes that have happened since the previous release. This may include changes you did not make so look at the commit history and make sure we don't miss anything. If you notice something was done that wasn't added to the changelog, hunt down that engineer and make them feel guilty for not doing so. This is a required step in making changes to the API. - - Try and match the language of previous change log messages. We want to keep a consistent voice. + - Try and match the language of previous change log messages. We want to keep a consistent voice. - Make sure the date of the release matches today. We try and keep this TBD until we're ready to do a release so it's easy to catch that it needs to be updated. - Make sure the version number is filled out and correct. We follow semantic versioning. Or more correctly, we should be following it. 2) Ensure any changes or additions to public methods are documented - - Update the Github wiki, and usually you'll need to update the Method Reference page with concise and exact documentation of the changes that are in this release. + - Update the Github wiki, and usually you'll need to update the Method Reference page with concise and exact documentation of the changes that are in this release. - Ensure that doc strings are updated in the code itself to work with Sphinx and are correctly formatted. - Examples are always good especially if this a new feature or method. - Think about a new user to the API trying to figure out how to use the features you're documenting. @@ -76,7 +130,7 @@ Integration and unit tests are provided. - Add more detailed information regarding the changes in this release. This is a great place to add examples, and reasons for the change! ### Letting the world know -We usually send an email to the `shotgun-dev` list with an announcement of the release and highlight the changes. +We usually send an email to the `shotgun-dev` list with an announcement of the release and highlight the changes. ### Prepare for the Next Dev Cycle 1) Update the `__version__` value in `shotgun_api3/shotgun.py` to the next version number with `.dev` appended to it. For example, `v3.0.24.dev` diff --git a/appveyor.yml b/appveyor.yml index bd71103bf..af5694f92 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,7 +12,9 @@ environment: matrix: + - PYTHON: "C:\\Python26" - PYTHON: "C:\\Python27" + - PYTHON: "C:\\Python37" # To update these values, visit AppVeyor's site, click the user icon and scroll down to Encrypt Data. SG_SERVER_URL: @@ -28,6 +30,16 @@ environment: build: off +before_test: + # The certificate store of the build machine is out of date and is missing a + # new certificate authority used by Amazon for S3, so we need to update it. + # See https://developer.shotgunsoftware.com/c593f0aa/ + - ps: | + $cert_url = "https://www.amazontrust.com/repository/SFSRootCAG2.cer" + $cert_file = New-TemporaryFile + Invoke-WebRequest -Uri $cert_url -UseBasicParsing -OutFile $cert_file.FullName + Import-Certificate -FilePath $cert_file.FullName -CertStoreLocation Cert:\LocalMachine\Root + test_script: # Put your test command here. # If you don't need to build C extensions on 64-bit Python 3.3 or 3.4, diff --git a/docs/cookbook/examples/ami_version_packager.rst b/docs/cookbook/examples/ami_version_packager.rst index f0b08b942..7ef182782 100644 --- a/docs/cookbook/examples/ami_version_packager.rst +++ b/docs/cookbook/examples/ami_version_packager.rst @@ -253,5 +253,5 @@ It is intended to be used in conjunction with the script dicussed in :ref:`ami_h raise ShotgunException("Unknown action... :%s" % sa.action) - print "\nVersion Packager done!" + print("\nVersion Packager done!") diff --git a/docs/cookbook/examples/basic_create_shot.rst b/docs/cookbook/examples/basic_create_shot.rst index 0bd376b69..9f74de4bc 100644 --- a/docs/cookbook/examples/basic_create_shot.rst +++ b/docs/cookbook/examples/basic_create_shot.rst @@ -89,7 +89,7 @@ The Complete Example } result = sg.create('Shot', data) pprint(result) - print "The id of the %s is %d." % (result['type'], result['id']) + print("The id of the {} is {}.".format(result['type'], result['id'])) And here is the output:: diff --git a/docs/cookbook/examples/svn_integration.rst b/docs/cookbook/examples/svn_integration.rst index ade057af6..b45c4bee4 100644 --- a/docs/cookbook/examples/svn_integration.rst +++ b/docs/cookbook/examples/svn_integration.rst @@ -117,11 +117,11 @@ link to the Revision. 'created_by':{"type":"HumanUser", "id":result['id']} } revision = sg.create("Revision", parameters) - print "created Revision #"+str(revision_code) + print("created Revision #"+str(revision_code)) # Send error message if valid HumanUser is not found else: - print "Unable to find valid Shotgun User with login: "+author+", Revision not created in Shotgun." + print("Unable to find valid Shotgun User with login: "+author+", Revision not created in Shotgun.") diff --git a/docs/installation.rst b/docs/installation.rst index b6659ec25..880021ec1 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -9,7 +9,7 @@ Minimum Requirements - Shotgun server v5.4.14 or higher for API v3.0.16+. - Shotgun server v2.4.12 or higher for API v3.0.8. - Shotgun server v1.8 or higher for API v3.0.7. -- Python v2.4 - v2.7. (We do not currently support Python 3) +- Python 2.6 - 2.7 or Python 3.7 .. note:: Some features of the API are only supported by more recent versions of the Shotgun server. diff --git a/nose.cfg b/nose.cfg new file mode 100644 index 000000000..59c3f0974 --- /dev/null +++ b/nose.cfg @@ -0,0 +1,12 @@ +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + +[nosetests] +exclude-dir=shotgun_api3/lib \ No newline at end of file diff --git a/run-tests b/run-tests index 045d6c199..dbe93f8b2 100755 --- a/run-tests +++ b/run-tests @@ -1 +1,11 @@ -clear && find ./ -name ".coverage" -delete && find ./ -name "*.pyc" -delete && nosetests -vd --with-cover --cover-package=shotgun_api3 +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + +clear && find ./ -name ".coverage" -delete && find ./ -name "*.pyc" -delete && nosetests -vd --config="nose.cfg" --with-cover --cover-package=shotgun_api3 diff --git a/run-tests-2.4 b/run-tests-2.4 deleted file mode 100755 index f24bbc302..000000000 --- a/run-tests-2.4 +++ /dev/null @@ -1 +0,0 @@ -clear && find ./ -name ".coverage" -delete && find ./ -name "*.pyc" -delete && nosetests-2.4 -vd --stop --with-cover --cover-package=shotgun_api3 diff --git a/run-tests-2.5 b/run-tests-2.5 deleted file mode 100755 index 20fdfe95e..000000000 --- a/run-tests-2.5 +++ /dev/null @@ -1 +0,0 @@ -clear && find ./ -name ".coverage" -delete && find ./ -name "*.pyc" -delete && nosetests-2.5 -vd --stop --with-cover --cover-package=shotgun_api3 diff --git a/setup.py b/setup.py index 638625434..09309ae18 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,14 @@ # -*- coding: utf-8 -*- +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + import sys from setuptools import setup, find_packages @@ -17,7 +27,7 @@ setup( name='shotgun_api3', - version='3.0.41', + version='3.1.0', description='Shotgun Python API ', long_description=readme, author='Shotgun Software', diff --git a/shotgun_api3/__init__.py b/shotgun_api3/__init__.py index 4f0890628..fe83e1427 100644 --- a/shotgun_api3/__init__.py +++ b/shotgun_api3/__init__.py @@ -1,6 +1,15 @@ -from shotgun import (Shotgun, ShotgunError, ShotgunFileDownloadError, Fault, - AuthenticationFault, MissingTwoFactorAuthenticationFault, - UserCredentialsNotAllowedForSSOAuthenticationFault, - ProtocolError, ResponseError, Error, __version__) -from shotgun import SG_TIMEZONE as sg_timezone +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. +from .shotgun import (Shotgun, ShotgunError, ShotgunFileDownloadError, Fault, # noqa unused imports + AuthenticationFault, MissingTwoFactorAuthenticationFault, + UserCredentialsNotAllowedForSSOAuthenticationFault, + ProtocolError, ResponseError, Error, __version__) +from .shotgun import SG_TIMEZONE as sg_timezone # noqa unused imports diff --git a/shotgun_api3/lib/README.md b/shotgun_api3/lib/README.md new file mode 100644 index 000000000..6cc12188d --- /dev/null +++ b/shotgun_api3/lib/README.md @@ -0,0 +1,58 @@ +# Lib Submodules + +## Third Party Modules + +Some third-party modules are bundled with `python-api` inside lib. + +### httplib2 + +`httplib2` is used to make http connections to the shotgun server. We bundle both python2 and python3 compatible versions since httplib2 chose to maintain parallel versions of the module for python 2 and 3 compatibility. + +The version of `httplib2` bundled should be updated manually, however its version is included in the unused `shotgun_api3/lib/requirements.txt` to allow Github's automated CVE notifications to work. + +### mimetypes + +The `mimetypes` module is broken on Windows only for Python 2.7.0 to 2.7.9 inclusively. +We bundle the version from 2.7.10 + +See bugs: + + * [9291](http://bugs.python.org/issue9291) (Fixed in 2.7.7) + * [21652](http://bugs.python.org/issue21652) (Fixed in 2.7.8) + * [22028](http://bugs.python.org/issue22028) (Fixed in 2.7.10) + +The version of `mimetypes` bundled should be updated manually if necessary, however it is unlikely this will be needed, as it is only used for Python versions 2.7.0 - 2.7.9, and newer Python versions simply use the native `mimetypes` module. + +### six + +Six is a Python 2/3 compatibility library. In python-api, it's used to make simultaneous support for Python on 2 and 3 easier to maintain and more readable, but allowing the use of common helper functions, unified interfaces for modules that changed, and variables to ease type comparisons. For more on six, see the [documentation](https://six.readthedocs.io/). + +The version of `six` bundled should be updated manually, however its version is included in the unused `shotgun_api3/lib/requirements.txt` to allow Github's automated CVE notifications to work. + +## Shotgun Modules + +### sgsix + +`sgsix` is a module that contains extensions to `six`. These might be additional helper functions, variables, etc. that supplement six's functionality. It is intended that `sgsix` can be used within other packages that include or depend on the `python-api` package as well. + +### sgtimezone + +`sgtimezone` contains classes for easing the conversion between the server (UTC) timezone and client timezone. + +### mockgun + +Mockgun is a Shotgun API mocker. It's a class that has got *most* of the same +methods and parameters that the Shotgun API has got. Mockgun is essentially a +Shotgun *emulator* that (for basic operations) looks and feels like Shotgun. + +The primary purpose of Mockgun is to drive unit test rigs where it becomes +too slow, cumbersome or non-practical to connect to a real Shotgun. Using a +Mockgun for unit tests means that a test can be rerun over and over again +from exactly the same database state. This can be hard to do if you connect +to a live Shotgun instance. + +## Lib `requirements.txt` + +The file `shotgun_api3/lib/requirements.txt` is not used to install any packages, however exists so that automated checks for CVEs in dependencies will know about bundled packages. + +For this reason, it's important to add any newly bundled packages to this file, and to keep the file up to date if the bundled version of a module changes. \ No newline at end of file diff --git a/shotgun_api3/lib/httplib2/__init__.py b/shotgun_api3/lib/httplib2/__init__.py index b3cc0b2fb..680183bc4 100644 --- a/shotgun_api3/lib/httplib2/__init__.py +++ b/shotgun_api3/lib/httplib2/__init__.py @@ -1,2223 +1,16 @@ -"""Small, fast HTTP client library for Python. - -Features persistent connections, cache, and Google App Engine Standard -Environment support. -""" - -from __future__ import print_function - -__author__ = "Joe Gregorio (joe@bitworking.org)" -__copyright__ = "Copyright 2006, Joe Gregorio" -__contributors__ = [ - "Thomas Broyer (t.broyer@ltgt.net)", - "James Antill", - "Xavier Verges Farrero", - "Jonathan Feinberg", - "Blair Zajac", - "Sam Ruby", - "Louis Nyffenegger", - "Alex Yu", -] -__license__ = "MIT" -__version__ = '0.12.0' - -import base64 -import calendar -import copy -import email -import email.FeedParser -import email.Message -import email.Utils -import errno -import gzip -import httplib -import os -import random -import re -import StringIO -import sys -import time -import urllib -import urlparse -import zlib - -try: - from hashlib import sha1 as _sha, md5 as _md5 -except ImportError: - # prior to Python 2.5, these were separate modules - import sha - import md5 - - _sha = sha.new - _md5 = md5.new -import hmac -from gettext import gettext as _ -import socket - -try: - from . import socks -except ImportError: - try: - import socks - except (ImportError, AttributeError): - socks = None - -# Build the appropriate socket wrapper for ssl -ssl = None -ssl_SSLError = None -ssl_CertificateError = None -try: - import ssl # python 2.6 -except ImportError: - pass -if ssl is not None: - ssl_SSLError = getattr(ssl, "SSLError", None) - ssl_CertificateError = getattr(ssl, "CertificateError", None) - - -def _ssl_wrap_socket( - sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname -): - if disable_validation: - cert_reqs = ssl.CERT_NONE - else: - cert_reqs = ssl.CERT_REQUIRED - if ssl_version is None: - ssl_version = ssl.PROTOCOL_SSLv23 - - if hasattr(ssl, "SSLContext"): # Python 2.7.9 - context = ssl.SSLContext(ssl_version) - context.verify_mode = cert_reqs - context.check_hostname = cert_reqs != ssl.CERT_NONE - if cert_file: - context.load_cert_chain(cert_file, key_file) - if ca_certs: - context.load_verify_locations(ca_certs) - return context.wrap_socket(sock, server_hostname=hostname) - else: - return ssl.wrap_socket( - sock, - keyfile=key_file, - certfile=cert_file, - cert_reqs=cert_reqs, - ca_certs=ca_certs, - ssl_version=ssl_version, - ) - - -def _ssl_wrap_socket_unsupported( - sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname -): - if not disable_validation: - raise CertificateValidationUnsupported( - "SSL certificate validation is not supported without " - "the ssl module installed. To avoid this error, install " - "the ssl module, or explicity disable validation." - ) - ssl_sock = socket.ssl(sock, key_file, cert_file) - return httplib.FakeSocket(sock, ssl_sock) - - -if ssl is None: - _ssl_wrap_socket = _ssl_wrap_socket_unsupported - -if sys.version_info >= (2, 3): - from iri2uri import iri2uri +from .. import six + +# import the proper implementation into the module namespace depending on the +# current python version. httplib2 supports python 2/3 by forking the code rather +# than with a single cross-compatible module. Rather than modify third party code, +# we'll just import the appropriate branch here. +if six.PY3: + from .python3 import * + from .python3 import socks # ensure include in namespace + import ssl + ssl_error_classes = (ssl.SSLError, ssl.CertificateError) else: - - def iri2uri(uri): - return uri - - -def has_timeout(timeout): # python 2.6 - if hasattr(socket, "_GLOBAL_DEFAULT_TIMEOUT"): - return timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT - return timeout is not None - - -__all__ = [ - "Http", - "Response", - "ProxyInfo", - "HttpLib2Error", - "RedirectMissingLocation", - "RedirectLimit", - "FailedToDecompressContent", - "UnimplementedDigestAuthOptionError", - "UnimplementedHmacDigestAuthOptionError", - "debuglevel", - "ProxiesUnavailableError", -] - -# The httplib debug level, set to a non-zero value to get debug output -debuglevel = 0 - -# A request will be tried 'RETRIES' times if it fails at the socket/connection level. -RETRIES = 2 - -# Python 2.3 support -if sys.version_info < (2, 4): - - def sorted(seq): - seq.sort() - return seq - - -# Python 2.3 support -def HTTPResponse__getheaders(self): - """Return list of (header, value) tuples.""" - if self.msg is None: - raise httplib.ResponseNotReady() - return self.msg.items() - - -if not hasattr(httplib.HTTPResponse, "getheaders"): - httplib.HTTPResponse.getheaders = HTTPResponse__getheaders - - -# All exceptions raised here derive from HttpLib2Error -class HttpLib2Error(Exception): - pass - - -# Some exceptions can be caught and optionally -# be turned back into responses. -class HttpLib2ErrorWithResponse(HttpLib2Error): - def __init__(self, desc, response, content): - self.response = response - self.content = content - HttpLib2Error.__init__(self, desc) - - -class RedirectMissingLocation(HttpLib2ErrorWithResponse): - pass - - -class RedirectLimit(HttpLib2ErrorWithResponse): - pass - - -class FailedToDecompressContent(HttpLib2ErrorWithResponse): - pass - - -class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): - pass - - -class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): - pass - - -class MalformedHeader(HttpLib2Error): - pass - - -class RelativeURIError(HttpLib2Error): - pass - - -class ServerNotFoundError(HttpLib2Error): - pass - - -class ProxiesUnavailableError(HttpLib2Error): - pass - - -class CertificateValidationUnsupported(HttpLib2Error): - pass - - -class SSLHandshakeError(HttpLib2Error): - pass - - -class NotSupportedOnThisPlatform(HttpLib2Error): - pass - - -class CertificateHostnameMismatch(SSLHandshakeError): - def __init__(self, desc, host, cert): - HttpLib2Error.__init__(self, desc) - self.host = host - self.cert = cert - - -class NotRunningAppEngineEnvironment(HttpLib2Error): - pass - - -# Open Items: -# ----------- -# Proxy support - -# Are we removing the cached content too soon on PUT (only delete on 200 Maybe?) - -# Pluggable cache storage (supports storing the cache in -# flat files by default. We need a plug-in architecture -# that can support Berkeley DB and Squid) - -# == Known Issues == -# Does not handle a resource that uses conneg and Last-Modified but no ETag as a cache validator. -# Does not handle Cache-Control: max-stale -# Does not use Age: headers when calculating cache freshness. - -# The number of redirections to follow before giving up. -# Note that only GET redirects are automatically followed. -# Will also honor 301 requests by saving that info and never -# requesting that URI again. -DEFAULT_MAX_REDIRECTS = 5 - -from . import certs -CA_CERTS = certs.where() - -# Which headers are hop-by-hop headers by default -HOP_BY_HOP = [ - "connection", - "keep-alive", - "proxy-authenticate", - "proxy-authorization", - "te", - "trailers", - "transfer-encoding", - "upgrade", -] - - -def _get_end2end_headers(response): - hopbyhop = list(HOP_BY_HOP) - hopbyhop.extend([x.strip() for x in response.get("connection", "").split(",")]) - return [header for header in response.keys() if header not in hopbyhop] - - -URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") - - -def parse_uri(uri): - """Parses a URI using the regex given in Appendix B of RFC 3986. - - (scheme, authority, path, query, fragment) = parse_uri(uri) - """ - groups = URI.match(uri).groups() - return (groups[1], groups[3], groups[4], groups[6], groups[8]) - - -def urlnorm(uri): - (scheme, authority, path, query, fragment) = parse_uri(uri) - if not scheme or not authority: - raise RelativeURIError("Only absolute URIs are allowed. uri = %s" % uri) - authority = authority.lower() - scheme = scheme.lower() - if not path: - path = "/" - # Could do syntax based normalization of the URI before - # computing the digest. See Section 6.2.2 of Std 66. - request_uri = query and "?".join([path, query]) or path - scheme = scheme.lower() - defrag_uri = scheme + "://" + authority + request_uri - return scheme, authority, request_uri, defrag_uri - - -# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) -re_url_scheme = re.compile(r"^\w+://") -re_unsafe = re.compile(r"[^\w\-_.()=!]+") - - -def safename(filename): - """Return a filename suitable for the cache. - Strips dangerous and common characters to create a filename we - can use to store the cache in. - """ - if isinstance(filename, str): - filename_bytes = filename - filename = filename.decode("utf-8") - else: - filename_bytes = filename.encode("utf-8") - filemd5 = _md5(filename_bytes).hexdigest() - filename = re_url_scheme.sub("", filename) - filename = re_unsafe.sub("", filename) - - # limit length of filename (vital for Windows) - # https://github.com/httplib2/httplib2/pull/74 - # C:\Users\ \AppData\Local\Temp\ , - # 9 chars + max 104 chars + 20 chars + x + 1 + 32 = max 259 chars - # Thus max safe filename x = 93 chars. Let it be 90 to make a round sum: - filename = filename[:90] - - return ",".join((filename, filemd5)) - - -NORMALIZE_SPACE = re.compile(r"(?:\r\n)?[ \t]+") - - -def _normalize_headers(headers): - return dict( - [ - (key.lower(), NORMALIZE_SPACE.sub(value, " ").strip()) - for (key, value) in headers.iteritems() - ] - ) - - -def _parse_cache_control(headers): - retval = {} - if "cache-control" in headers: - parts = headers["cache-control"].split(",") - parts_with_args = [ - tuple([x.strip().lower() for x in part.split("=", 1)]) - for part in parts - if -1 != part.find("=") - ] - parts_wo_args = [ - (name.strip().lower(), 1) for name in parts if -1 == name.find("=") - ] - retval = dict(parts_with_args + parts_wo_args) - return retval - - -# Whether to use a strict mode to parse WWW-Authenticate headers -# Might lead to bad results in case of ill-formed header value, -# so disabled by default, falling back to relaxed parsing. -# Set to true to turn on, usefull for testing servers. -USE_WWW_AUTH_STRICT_PARSING = 0 - -# In regex below: -# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP -# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space -# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both: -# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"? -WWW_AUTH_STRICT = re.compile( - r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$" -) -WWW_AUTH_RELAXED = re.compile( - r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? current_age: - retval = "FRESH" - return retval - - -def _decompressContent(response, new_content): - content = new_content - try: - encoding = response.get("content-encoding", None) - if encoding in ["gzip", "deflate"]: - if encoding == "gzip": - content = gzip.GzipFile(fileobj=StringIO.StringIO(new_content)).read() - if encoding == "deflate": - content = zlib.decompress(content, -zlib.MAX_WBITS) - response["content-length"] = str(len(content)) - # Record the historical presence of the encoding in a way the won't interfere. - response["-content-encoding"] = response["content-encoding"] - del response["content-encoding"] - except (IOError, zlib.error): - content = "" - raise FailedToDecompressContent( - _("Content purported to be compressed with %s but failed to decompress.") - % response.get("content-encoding"), - response, - content, - ) - return content - - -def _updateCache(request_headers, response_headers, content, cache, cachekey): - if cachekey: - cc = _parse_cache_control(request_headers) - cc_response = _parse_cache_control(response_headers) - if "no-store" in cc or "no-store" in cc_response: - cache.delete(cachekey) - else: - info = email.Message.Message() - for key, value in response_headers.iteritems(): - if key not in ["status", "content-encoding", "transfer-encoding"]: - info[key] = value - - # Add annotations to the cache to indicate what headers - # are variant for this request. - vary = response_headers.get("vary", None) - if vary: - vary_headers = vary.lower().replace(" ", "").split(",") - for header in vary_headers: - key = "-varied-%s" % header - try: - info[key] = request_headers[header] - except KeyError: - pass - - status = response_headers.status - if status == 304: - status = 200 - - status_header = "status: %d\r\n" % status - - header_str = info.as_string() - - header_str = re.sub("\r(?!\n)|(? 0: - service = "cl" - # No point in guessing Base or Spreadsheet - # elif request_uri.find("spreadsheets") > 0: - # service = "wise" - - auth = dict( - Email=credentials[0], - Passwd=credentials[1], - service=service, - source=headers["user-agent"], - ) - resp, content = self.http.request( - "https://www.google.com/accounts/ClientLogin", - method="POST", - body=urlencode(auth), - headers={"Content-Type": "application/x-www-form-urlencoded"}, - ) - lines = content.split("\n") - d = dict([tuple(line.split("=", 1)) for line in lines if line]) - if resp.status == 403: - self.Auth = "" - else: - self.Auth = d["Auth"] - - def request(self, method, request_uri, headers, content): - """Modify the request headers to add the appropriate - Authorization header.""" - headers["authorization"] = "GoogleLogin Auth=" + self.Auth - - -AUTH_SCHEME_CLASSES = { - "basic": BasicAuthentication, - "wsse": WsseAuthentication, - "digest": DigestAuthentication, - "hmacdigest": HmacDigestAuthentication, - "googlelogin": GoogleLoginAuthentication, -} - -AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] - - -class FileCache(object): - """Uses a local directory as a store for cached files. - Not really safe to use if multiple threads or processes are going to - be running on the same cache. - """ - - def __init__( - self, cache, safe=safename - ): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior - self.cache = cache - self.safe = safe - if not os.path.exists(cache): - os.makedirs(self.cache) - - def get(self, key): - retval = None - cacheFullPath = os.path.join(self.cache, self.safe(key)) - try: - f = file(cacheFullPath, "rb") - retval = f.read() - f.close() - except IOError: - pass - return retval - - def set(self, key, value): - cacheFullPath = os.path.join(self.cache, self.safe(key)) - f = file(cacheFullPath, "wb") - f.write(value) - f.close() - - def delete(self, key): - cacheFullPath = os.path.join(self.cache, self.safe(key)) - if os.path.exists(cacheFullPath): - os.remove(cacheFullPath) - - -class Credentials(object): - def __init__(self): - self.credentials = [] - - def add(self, name, password, domain=""): - self.credentials.append((domain.lower(), name, password)) - - def clear(self): - self.credentials = [] - - def iter(self, domain): - for (cdomain, name, password) in self.credentials: - if cdomain == "" or domain == cdomain: - yield (name, password) - - -class KeyCerts(Credentials): - """Identical to Credentials except that - name/password are mapped to key/cert.""" - - pass - - -class AllHosts(object): - pass - - -class ProxyInfo(object): - """Collect information required to use a proxy.""" - - bypass_hosts = () - - def __init__( - self, - proxy_type, - proxy_host, - proxy_port, - proxy_rdns=True, - proxy_user=None, - proxy_pass=None, - proxy_headers=None, - ): - """Args: - - proxy_type: The type of proxy server. This must be set to one of - socks.PROXY_TYPE_XXX constants. For example: p = - ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost', - proxy_port=8000) - proxy_host: The hostname or IP address of the proxy server. - proxy_port: The port that the proxy server is running on. - proxy_rdns: If True (default), DNS queries will not be performed - locally, and instead, handed to the proxy to resolve. This is useful - if the network does not allow resolution of non-local names. In - httplib2 0.9 and earlier, this defaulted to False. - proxy_user: The username used to authenticate with the proxy server. - proxy_pass: The password used to authenticate with the proxy server. - proxy_headers: Additional or modified headers for the proxy connect - request. - """ - self.proxy_type = proxy_type - self.proxy_host = proxy_host - self.proxy_port = proxy_port - self.proxy_rdns = proxy_rdns - self.proxy_user = proxy_user - self.proxy_pass = proxy_pass - self.proxy_headers = proxy_headers - - def astuple(self): - return ( - self.proxy_type, - self.proxy_host, - self.proxy_port, - self.proxy_rdns, - self.proxy_user, - self.proxy_pass, - self.proxy_headers, - ) - - def isgood(self): - return (self.proxy_host != None) and (self.proxy_port != None) - - def applies_to(self, hostname): - return not self.bypass_host(hostname) - - def bypass_host(self, hostname): - """Has this host been excluded from the proxy config""" - if self.bypass_hosts is AllHosts: - return True - - hostname = "." + hostname.lstrip(".") - for skip_name in self.bypass_hosts: - # *.suffix - if skip_name.startswith(".") and hostname.endswith(skip_name): - return True - # exact match - if hostname == "." + skip_name: - return True - return False - - def __repr__(self): - return ( - "" - ).format(p=self) - - -def proxy_info_from_environment(method="http"): - """Read proxy info from the environment variables. - """ - if method not in ["http", "https"]: - return - - env_var = method + "_proxy" - url = os.environ.get(env_var, os.environ.get(env_var.upper())) - if not url: - return - return proxy_info_from_url(url, method, None) - - -def proxy_info_from_url(url, method="http", noproxy=None): - """Construct a ProxyInfo from a URL (such as http_proxy env var) - """ - url = urlparse.urlparse(url) - username = None - password = None - port = None - if "@" in url[1]: - ident, host_port = url[1].split("@", 1) - if ":" in ident: - username, password = ident.split(":", 1) - else: - password = ident - else: - host_port = url[1] - if ":" in host_port: - host, port = host_port.split(":", 1) - else: - host = host_port - - if port: - port = int(port) - else: - port = dict(https=443, http=80)[method] - - proxy_type = 3 # socks.PROXY_TYPE_HTTP - pi = ProxyInfo( - proxy_type=proxy_type, - proxy_host=host, - proxy_port=port, - proxy_user=username or None, - proxy_pass=password or None, - proxy_headers=None, - ) - - bypass_hosts = [] - # If not given an explicit noproxy value, respect values in env vars. - if noproxy is None: - noproxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY", "")) - # Special case: A single '*' character means all hosts should be bypassed. - if noproxy == "*": - bypass_hosts = AllHosts - elif noproxy.strip(): - bypass_hosts = noproxy.split(",") - bypass_hosts = filter(bool, bypass_hosts) # To exclude empty string. - - pi.bypass_hosts = bypass_hosts - return pi - - -class HTTPConnectionWithTimeout(httplib.HTTPConnection): - """HTTPConnection subclass that supports timeouts - - All timeouts are in seconds. If None is passed for timeout then - Python's default timeout for sockets will be used. See for example - the docs of socket.setdefaulttimeout(): - http://docs.python.org/library/socket.html#socket.setdefaulttimeout - """ - - def __init__(self, host, port=None, strict=None, timeout=None, proxy_info=None): - httplib.HTTPConnection.__init__(self, host, port, strict) - self.timeout = timeout - self.proxy_info = proxy_info - - def connect(self): - """Connect to the host and port specified in __init__.""" - # Mostly verbatim from httplib.py. - if self.proxy_info and socks is None: - raise ProxiesUnavailableError( - "Proxy support missing but proxy use was requested!" - ) - msg = "getaddrinfo returns an empty list" - if self.proxy_info and self.proxy_info.isgood(): - use_proxy = True - proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( - self.proxy_info.astuple() - ) - - host = proxy_host - port = proxy_port - else: - use_proxy = False - - host = self.host - port = self.port - - for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): - af, socktype, proto, canonname, sa = res - try: - if use_proxy: - self.sock = socks.socksocket(af, socktype, proto) - self.sock.setproxy( - proxy_type, - proxy_host, - proxy_port, - proxy_rdns, - proxy_user, - proxy_pass, - proxy_headers, - ) - else: - self.sock = socket.socket(af, socktype, proto) - self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - # Different from httplib: support timeouts. - if has_timeout(self.timeout): - self.sock.settimeout(self.timeout) - # End of difference from httplib. - if self.debuglevel > 0: - print("connect: (%s, %s) ************" % (self.host, self.port)) - if use_proxy: - print( - "proxy: %s ************" - % str( - ( - proxy_host, - proxy_port, - proxy_rdns, - proxy_user, - proxy_pass, - proxy_headers, - ) - ) - ) - if use_proxy: - self.sock.connect((self.host, self.port) + sa[2:]) - else: - self.sock.connect(sa) - except socket.error as msg: - if self.debuglevel > 0: - print("connect fail: (%s, %s)" % (self.host, self.port)) - if use_proxy: - print( - "proxy: %s" - % str( - ( - proxy_host, - proxy_port, - proxy_rdns, - proxy_user, - proxy_pass, - proxy_headers, - ) - ) - ) - if self.sock: - self.sock.close() - self.sock = None - continue - break - if not self.sock: - raise socket.error(msg) - - -class HTTPSConnectionWithTimeout(httplib.HTTPSConnection): - """This class allows communication via SSL. - - All timeouts are in seconds. If None is passed for timeout then - Python's default timeout for sockets will be used. See for example - the docs of socket.setdefaulttimeout(): - http://docs.python.org/library/socket.html#socket.setdefaulttimeout - """ - - def __init__( - self, - host, - port=None, - key_file=None, - cert_file=None, - strict=None, - timeout=None, - proxy_info=None, - ca_certs=None, - disable_ssl_certificate_validation=False, - ssl_version=None, - ): - httplib.HTTPSConnection.__init__( - self, host, port=port, key_file=key_file, cert_file=cert_file, strict=strict - ) - self.timeout = timeout - self.proxy_info = proxy_info - if ca_certs is None: - ca_certs = CA_CERTS - self.ca_certs = ca_certs - self.disable_ssl_certificate_validation = disable_ssl_certificate_validation - self.ssl_version = ssl_version - - # The following two methods were adapted from https_wrapper.py, released - # with the Google Appengine SDK at - # http://googleappengine.googlecode.com/svn-history/r136/trunk/python/google/appengine/tools/https_wrapper.py - # under the following license: - # - # Copyright 2007 Google Inc. - # - # Licensed under the Apache License, Version 2.0 (the "License"); - # you may not use this file except in compliance with the License. - # You may obtain a copy of the License at - # - # http://www.apache.org/licenses/LICENSE-2.0 - # - # Unless required by applicable law or agreed to in writing, software - # distributed under the License is distributed on an "AS IS" BASIS, - # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - # See the License for the specific language governing permissions and - # limitations under the License. - # - - def _GetValidHostsForCert(self, cert): - """Returns a list of valid host globs for an SSL certificate. - - Args: - cert: A dictionary representing an SSL certificate. - Returns: - list: A list of valid host globs. - """ - if "subjectAltName" in cert: - return [x[1] for x in cert["subjectAltName"] if x[0].lower() == "dns"] - else: - return [x[0][1] for x in cert["subject"] if x[0][0].lower() == "commonname"] - - def _ValidateCertificateHostname(self, cert, hostname): - """Validates that a given hostname is valid for an SSL certificate. - - Args: - cert: A dictionary representing an SSL certificate. - hostname: The hostname to test. - Returns: - bool: Whether or not the hostname is valid for this certificate. - """ - hosts = self._GetValidHostsForCert(cert) - for host in hosts: - host_re = host.replace(".", "\.").replace("*", "[^.]*") - if re.search("^%s$" % (host_re,), hostname, re.I): - return True - return False - - def connect(self): - "Connect to a host on a given (SSL) port." - - msg = "getaddrinfo returns an empty list" - if self.proxy_info and self.proxy_info.isgood(): - use_proxy = True - proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( - self.proxy_info.astuple() - ) - - host = proxy_host - port = proxy_port - else: - use_proxy = False - - host = self.host - port = self.port - - address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM) - for family, socktype, proto, canonname, sockaddr in address_info: - try: - if use_proxy: - sock = socks.socksocket(family, socktype, proto) - - sock.setproxy( - proxy_type, - proxy_host, - proxy_port, - proxy_rdns, - proxy_user, - proxy_pass, - proxy_headers, - ) - else: - sock = socket.socket(family, socktype, proto) - sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - - if has_timeout(self.timeout): - sock.settimeout(self.timeout) - - if use_proxy: - sock.connect((self.host, self.port) + sockaddr[:2]) - else: - sock.connect(sockaddr) - self.sock = _ssl_wrap_socket( - sock, - self.key_file, - self.cert_file, - self.disable_ssl_certificate_validation, - self.ca_certs, - self.ssl_version, - self.host, - ) - if self.debuglevel > 0: - print("connect: (%s, %s)" % (self.host, self.port)) - if use_proxy: - print( - "proxy: %s" - % str( - ( - proxy_host, - proxy_port, - proxy_rdns, - proxy_user, - proxy_pass, - proxy_headers, - ) - ) - ) - if not self.disable_ssl_certificate_validation: - cert = self.sock.getpeercert() - hostname = self.host.split(":", 0)[0] - if not self._ValidateCertificateHostname(cert, hostname): - raise CertificateHostnameMismatch( - "Server presented certificate that does not match " - "host %s: %s" % (hostname, cert), - hostname, - cert, - ) - except ( - ssl_SSLError, - ssl_CertificateError, - CertificateHostnameMismatch, - ) as e: - if sock: - sock.close() - if self.sock: - self.sock.close() - self.sock = None - # Unfortunately the ssl module doesn't seem to provide any way - # to get at more detailed error information, in particular - # whether the error is due to certificate validation or - # something else (such as SSL protocol mismatch). - if getattr(e, "errno", None) == ssl.SSL_ERROR_SSL: - raise SSLHandshakeError(e) - else: - raise - except (socket.timeout, socket.gaierror): - raise - except socket.error as msg: - if self.debuglevel > 0: - print("connect fail: (%s, %s)" % (self.host, self.port)) - if use_proxy: - print( - "proxy: %s" - % str( - ( - proxy_host, - proxy_port, - proxy_rdns, - proxy_user, - proxy_pass, - proxy_headers, - ) - ) - ) - if self.sock: - self.sock.close() - self.sock = None - continue - break - if not self.sock: - raise socket.error(msg) - - -SCHEME_TO_CONNECTION = { - "http": HTTPConnectionWithTimeout, - "https": HTTPSConnectionWithTimeout, -} - - -def _new_fixed_fetch(validate_certificate): - - def fixed_fetch( - url, - payload=None, - method="GET", - headers={}, - allow_truncated=False, - follow_redirects=True, - deadline=None, - ): - return fetch( - url, - payload=payload, - method=method, - headers=headers, - allow_truncated=allow_truncated, - follow_redirects=follow_redirects, - deadline=deadline, - validate_certificate=validate_certificate, - ) - - return fixed_fetch - - -class AppEngineHttpConnection(httplib.HTTPConnection): - """Use httplib on App Engine, but compensate for its weirdness. - - The parameters key_file, cert_file, proxy_info, ca_certs, - disable_ssl_certificate_validation, and ssl_version are all dropped on - the ground. - """ - - def __init__( - self, - host, - port=None, - key_file=None, - cert_file=None, - strict=None, - timeout=None, - proxy_info=None, - ca_certs=None, - disable_ssl_certificate_validation=False, - ssl_version=None, - ): - httplib.HTTPConnection.__init__( - self, host, port=port, strict=strict, timeout=timeout - ) - - -class AppEngineHttpsConnection(httplib.HTTPSConnection): - """Same as AppEngineHttpConnection, but for HTTPS URIs. - - The parameters proxy_info, ca_certs, disable_ssl_certificate_validation, - and ssl_version are all dropped on the ground. - """ - - def __init__( - self, - host, - port=None, - key_file=None, - cert_file=None, - strict=None, - timeout=None, - proxy_info=None, - ca_certs=None, - disable_ssl_certificate_validation=False, - ssl_version=None, - ): - httplib.HTTPSConnection.__init__( - self, - host, - port=port, - key_file=key_file, - cert_file=cert_file, - strict=strict, - timeout=timeout, - ) - self._fetch = _new_fixed_fetch(not disable_ssl_certificate_validation) - - -# Use a different connection object for Google App Engine Standard Environment. -def is_gae_instance(): - server_software = os.environ.get('SERVER_SOFTWARE', '') - if (server_software.startswith('Google App Engine/') or - server_software.startswith('Development/') or - server_software.startswith('testutil/')): - return True - return False - - -try: - if not is_gae_instance(): - raise NotRunningAppEngineEnvironment() - - from google.appengine.api import apiproxy_stub_map - if apiproxy_stub_map.apiproxy.GetStub("urlfetch") is None: - raise ImportError - - from google.appengine.api.urlfetch import fetch - - # Update the connection classes to use the Googel App Engine specific ones. - SCHEME_TO_CONNECTION = { - "http": AppEngineHttpConnection, - "https": AppEngineHttpsConnection, - } -except (ImportError, NotRunningAppEngineEnvironment): - pass - - -class Http(object): - """An HTTP client that handles: - - - all methods - - caching - - ETags - - compression, - - HTTPS - - Basic - - Digest - - WSSE - - and more. - """ - - def __init__( - self, - cache=None, - timeout=None, - proxy_info=proxy_info_from_environment, - ca_certs=None, - disable_ssl_certificate_validation=False, - ssl_version=None, - ): - """If 'cache' is a string then it is used as a directory name for - a disk cache. Otherwise it must be an object that supports the - same interface as FileCache. - - All timeouts are in seconds. If None is passed for timeout - then Python's default timeout for sockets will be used. See - for example the docs of socket.setdefaulttimeout(): - http://docs.python.org/library/socket.html#socket.setdefaulttimeout - - `proxy_info` may be: - - a callable that takes the http scheme ('http' or 'https') and - returns a ProxyInfo instance per request. By default, uses - proxy_nfo_from_environment. - - a ProxyInfo instance (static proxy config). - - None (proxy disabled). - - ca_certs is the path of a file containing root CA certificates for SSL - server certificate validation. By default, a CA cert file bundled with - httplib2 is used. - - If disable_ssl_certificate_validation is true, SSL cert validation will - not be performed. - - By default, ssl.PROTOCOL_SSLv23 will be used for the ssl version. - """ - self.proxy_info = proxy_info - self.ca_certs = ca_certs - self.disable_ssl_certificate_validation = disable_ssl_certificate_validation - self.ssl_version = ssl_version - - # Map domain name to an httplib connection - self.connections = {} - # The location of the cache, for now a directory - # where cached responses are held. - if cache and isinstance(cache, basestring): - self.cache = FileCache(cache) - else: - self.cache = cache - - # Name/password - self.credentials = Credentials() - - # Key/cert - self.certificates = KeyCerts() - - # authorization objects - self.authorizations = [] - - # If set to False then no redirects are followed, even safe ones. - self.follow_redirects = True - - # Which HTTP methods do we apply optimistic concurrency to, i.e. - # which methods get an "if-match:" etag header added to them. - self.optimistic_concurrency_methods = ["PUT", "PATCH"] - - # If 'follow_redirects' is True, and this is set to True then - # all redirecs are followed, including unsafe ones. - self.follow_all_redirects = False - - self.ignore_etag = False - - self.force_exception_to_status_code = False - - self.timeout = timeout - - # Keep Authorization: headers on a redirect. - self.forward_authorization_headers = False - - def __getstate__(self): - state_dict = copy.copy(self.__dict__) - # In case request is augmented by some foreign object such as - # credentials which handle auth - if "request" in state_dict: - del state_dict["request"] - if "connections" in state_dict: - del state_dict["connections"] - return state_dict - - def __setstate__(self, state): - self.__dict__.update(state) - self.connections = {} - - def _auth_from_challenge(self, host, request_uri, headers, response, content): - """A generator that creates Authorization objects - that can be applied to requests. - """ - challenges = _parse_www_authenticate(response, "www-authenticate") - for cred in self.credentials.iter(host): - for scheme in AUTH_SCHEME_ORDER: - if scheme in challenges: - yield AUTH_SCHEME_CLASSES[scheme]( - cred, host, request_uri, headers, response, content, self - ) - - def add_credentials(self, name, password, domain=""): - """Add a name and password that will be used - any time a request requires authentication.""" - self.credentials.add(name, password, domain) - - def add_certificate(self, key, cert, domain): - """Add a key and cert that will be used - any time a request requires authentication.""" - self.certificates.add(key, cert, domain) - - def clear_credentials(self): - """Remove all the names and passwords - that are used for authentication""" - self.credentials.clear() - self.authorizations = [] - - def _conn_request(self, conn, request_uri, method, body, headers): - i = 0 - seen_bad_status_line = False - while i < RETRIES: - i += 1 - try: - if hasattr(conn, "sock") and conn.sock is None: - conn.connect() - conn.request(method, request_uri, body, headers) - except socket.timeout: - raise - except socket.gaierror: - conn.close() - raise ServerNotFoundError("Unable to find the server at %s" % conn.host) - except ssl_SSLError: - conn.close() - raise - except socket.error as e: - err = 0 - if hasattr(e, "args"): - err = getattr(e, "args")[0] - else: - err = e.errno - if err == errno.ECONNREFUSED: # Connection refused - raise - if err in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES: - continue # retry on potentially transient socket errors - except httplib.HTTPException: - # Just because the server closed the connection doesn't apparently mean - # that the server didn't send a response. - if hasattr(conn, "sock") and conn.sock is None: - if i < RETRIES - 1: - conn.close() - conn.connect() - continue - else: - conn.close() - raise - if i < RETRIES - 1: - conn.close() - conn.connect() - continue - try: - response = conn.getresponse() - except httplib.BadStatusLine: - # If we get a BadStatusLine on the first try then that means - # the connection just went stale, so retry regardless of the - # number of RETRIES set. - if not seen_bad_status_line and i == 1: - i = 0 - seen_bad_status_line = True - conn.close() - conn.connect() - continue - else: - conn.close() - raise - except (socket.error, httplib.HTTPException): - if i < RETRIES - 1: - conn.close() - conn.connect() - continue - else: - conn.close() - raise - else: - content = "" - if method == "HEAD": - conn.close() - else: - content = response.read() - response = Response(response) - if method != "HEAD": - content = _decompressContent(response, content) - break - return (response, content) - - def _request( - self, - conn, - host, - absolute_uri, - request_uri, - method, - body, - headers, - redirections, - cachekey, - ): - """Do the actual request using the connection object - and also follow one level of redirects if necessary""" - - auths = [ - (auth.depth(request_uri), auth) - for auth in self.authorizations - if auth.inscope(host, request_uri) - ] - auth = auths and sorted(auths)[0][1] or None - if auth: - auth.request(method, request_uri, headers, body) - - (response, content) = self._conn_request( - conn, request_uri, method, body, headers - ) - - if auth: - if auth.response(response, body): - auth.request(method, request_uri, headers, body) - (response, content) = self._conn_request( - conn, request_uri, method, body, headers - ) - response._stale_digest = 1 - - if response.status == 401: - for authorization in self._auth_from_challenge( - host, request_uri, headers, response, content - ): - authorization.request(method, request_uri, headers, body) - (response, content) = self._conn_request( - conn, request_uri, method, body, headers - ) - if response.status != 401: - self.authorizations.append(authorization) - authorization.response(response, body) - break - - if ( - self.follow_all_redirects - or (method in ["GET", "HEAD"]) - or response.status == 303 - ): - if self.follow_redirects and response.status in [300, 301, 302, 303, 307]: - # Pick out the location header and basically start from the beginning - # remembering first to strip the ETag header and decrement our 'depth' - if redirections: - if "location" not in response and response.status != 300: - raise RedirectMissingLocation( - _( - "Redirected but the response is missing a Location: header." - ), - response, - content, - ) - # Fix-up relative redirects (which violate an RFC 2616 MUST) - if "location" in response: - location = response["location"] - (scheme, authority, path, query, fragment) = parse_uri(location) - if authority == None: - response["location"] = urlparse.urljoin( - absolute_uri, location - ) - if response.status == 301 and method in ["GET", "HEAD"]: - response["-x-permanent-redirect-url"] = response["location"] - if "content-location" not in response: - response["content-location"] = absolute_uri - _updateCache(headers, response, content, self.cache, cachekey) - if "if-none-match" in headers: - del headers["if-none-match"] - if "if-modified-since" in headers: - del headers["if-modified-since"] - if ( - "authorization" in headers - and not self.forward_authorization_headers - ): - del headers["authorization"] - if "location" in response: - location = response["location"] - old_response = copy.deepcopy(response) - if "content-location" not in old_response: - old_response["content-location"] = absolute_uri - redirect_method = method - if response.status in [302, 303]: - redirect_method = "GET" - body = None - (response, content) = self.request( - location, - method=redirect_method, - body=body, - headers=headers, - redirections=redirections - 1, - ) - response.previous = old_response - else: - raise RedirectLimit( - "Redirected more times than rediection_limit allows.", - response, - content, - ) - elif response.status in [200, 203] and method in ["GET", "HEAD"]: - # Don't cache 206's since we aren't going to handle byte range requests - if "content-location" not in response: - response["content-location"] = absolute_uri - _updateCache(headers, response, content, self.cache, cachekey) - - return (response, content) - - def _normalize_headers(self, headers): - return _normalize_headers(headers) - - # Need to catch and rebrand some exceptions - # Then need to optionally turn all exceptions into status codes - # including all socket.* and httplib.* exceptions. - - def request( - self, - uri, - method="GET", - body=None, - headers=None, - redirections=DEFAULT_MAX_REDIRECTS, - connection_type=None, - ): - """ Performs a single HTTP request. - - The 'uri' is the URI of the HTTP resource and can begin with either - 'http' or 'https'. The value of 'uri' must be an absolute URI. - - The 'method' is the HTTP method to perform, such as GET, POST, DELETE, - etc. There is no restriction on the methods allowed. - - The 'body' is the entity body to be sent with the request. It is a - string object. - - Any extra headers that are to be sent with the request should be - provided in the 'headers' dictionary. - - The maximum number of redirect to follow before raising an - exception is 'redirections. The default is 5. - - The return value is a tuple of (response, content), the first - being and instance of the 'Response' class, the second being - a string that contains the response entity body. - """ - try: - if headers is None: - headers = {} - else: - headers = self._normalize_headers(headers) - - if "user-agent" not in headers: - headers["user-agent"] = "Python-httplib2/%s (gzip)" % __version__ - - uri = iri2uri(uri) - - (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) - - proxy_info = self._get_proxy_info(scheme, authority) - - conn_key = scheme + ":" + authority - conn = self.connections.get(conn_key) - if conn is None: - if not connection_type: - connection_type = SCHEME_TO_CONNECTION[scheme] - certs = list(self.certificates.iter(authority)) - if scheme == "https": - if certs: - conn = self.connections[conn_key] = connection_type( - authority, - key_file=certs[0][0], - cert_file=certs[0][1], - timeout=self.timeout, - proxy_info=proxy_info, - ca_certs=self.ca_certs, - disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, - ssl_version=self.ssl_version, - ) - else: - conn = self.connections[conn_key] = connection_type( - authority, - timeout=self.timeout, - proxy_info=proxy_info, - ca_certs=self.ca_certs, - disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, - ssl_version=self.ssl_version, - ) - else: - conn = self.connections[conn_key] = connection_type( - authority, timeout=self.timeout, proxy_info=proxy_info - ) - conn.set_debuglevel(debuglevel) - - if "range" not in headers and "accept-encoding" not in headers: - headers["accept-encoding"] = "gzip, deflate" - - info = email.Message.Message() - cached_value = None - if self.cache: - cachekey = defrag_uri.encode("utf-8") - cached_value = self.cache.get(cachekey) - if cached_value: - # info = email.message_from_string(cached_value) - # - # Need to replace the line above with the kludge below - # to fix the non-existent bug not fixed in this - # bug report: http://mail.python.org/pipermail/python-bugs-list/2005-September/030289.html - try: - info, content = cached_value.split("\r\n\r\n", 1) - feedparser = email.FeedParser.FeedParser() - feedparser.feed(info) - info = feedparser.close() - feedparser._parse = None - except (IndexError, ValueError): - self.cache.delete(cachekey) - cachekey = None - cached_value = None - else: - cachekey = None - - if ( - method in self.optimistic_concurrency_methods - and self.cache - and "etag" in info - and not self.ignore_etag - and "if-match" not in headers - ): - # http://www.w3.org/1999/04/Editing/ - headers["if-match"] = info["etag"] - - if method not in ["GET", "HEAD"] and self.cache and cachekey: - # RFC 2616 Section 13.10 - self.cache.delete(cachekey) - - # Check the vary header in the cache to see if this request - # matches what varies in the cache. - if method in ["GET", "HEAD"] and "vary" in info: - vary = info["vary"] - vary_headers = vary.lower().replace(" ", "").split(",") - for header in vary_headers: - key = "-varied-%s" % header - value = info[key] - if headers.get(header, None) != value: - cached_value = None - break - - if ( - cached_value - and method in ["GET", "HEAD"] - and self.cache - and "range" not in headers - ): - if "-x-permanent-redirect-url" in info: - # Should cached permanent redirects be counted in our redirection count? For now, yes. - if redirections <= 0: - raise RedirectLimit( - "Redirected more times than rediection_limit allows.", - {}, - "", - ) - (response, new_content) = self.request( - info["-x-permanent-redirect-url"], - method="GET", - headers=headers, - redirections=redirections - 1, - ) - response.previous = Response(info) - response.previous.fromcache = True - else: - # Determine our course of action: - # Is the cached entry fresh or stale? - # Has the client requested a non-cached response? - # - # There seems to be three possible answers: - # 1. [FRESH] Return the cache entry w/o doing a GET - # 2. [STALE] Do the GET (but add in cache validators if available) - # 3. [TRANSPARENT] Do a GET w/o any cache validators (Cache-Control: no-cache) on the request - entry_disposition = _entry_disposition(info, headers) - - if entry_disposition == "FRESH": - if not cached_value: - info["status"] = "504" - content = "" - response = Response(info) - if cached_value: - response.fromcache = True - return (response, content) - - if entry_disposition == "STALE": - if ( - "etag" in info - and not self.ignore_etag - and not "if-none-match" in headers - ): - headers["if-none-match"] = info["etag"] - if "last-modified" in info and not "last-modified" in headers: - headers["if-modified-since"] = info["last-modified"] - elif entry_disposition == "TRANSPARENT": - pass - - (response, new_content) = self._request( - conn, - authority, - uri, - request_uri, - method, - body, - headers, - redirections, - cachekey, - ) - - if response.status == 304 and method == "GET": - # Rewrite the cache entry with the new end-to-end headers - # Take all headers that are in response - # and overwrite their values in info. - # unless they are hop-by-hop, or are listed in the connection header. - - for key in _get_end2end_headers(response): - info[key] = response[key] - merged_response = Response(info) - if hasattr(response, "_stale_digest"): - merged_response._stale_digest = response._stale_digest - _updateCache( - headers, merged_response, content, self.cache, cachekey - ) - response = merged_response - response.status = 200 - response.fromcache = True - - elif response.status == 200: - content = new_content - else: - self.cache.delete(cachekey) - content = new_content - else: - cc = _parse_cache_control(headers) - if "only-if-cached" in cc: - info["status"] = "504" - response = Response(info) - content = "" - else: - (response, content) = self._request( - conn, - authority, - uri, - request_uri, - method, - body, - headers, - redirections, - cachekey, - ) - except Exception as e: - if self.force_exception_to_status_code: - if isinstance(e, HttpLib2ErrorWithResponse): - response = e.response - content = e.content - response.status = 500 - response.reason = str(e) - elif isinstance(e, socket.timeout): - content = "Request Timeout" - response = Response( - { - "content-type": "text/plain", - "status": "408", - "content-length": len(content), - } - ) - response.reason = "Request Timeout" - else: - content = str(e) - response = Response( - { - "content-type": "text/plain", - "status": "400", - "content-length": len(content), - } - ) - response.reason = "Bad Request" - else: - raise - - return (response, content) - - def _get_proxy_info(self, scheme, authority): - """Return a ProxyInfo instance (or None) based on the scheme - and authority. - """ - hostname, port = urllib.splitport(authority) - proxy_info = self.proxy_info - if callable(proxy_info): - proxy_info = proxy_info(scheme) - - if hasattr(proxy_info, "applies_to") and not proxy_info.applies_to(hostname): - proxy_info = None - return proxy_info - - -class Response(dict): - """An object more like email.Message than httplib.HTTPResponse.""" - - """Is this response from our local cache""" - fromcache = False - """HTTP protocol version used by server. - - 10 for HTTP/1.0, 11 for HTTP/1.1. - """ - version = 11 - - "Status code returned by server. " - status = 200 - """Reason phrase returned by server.""" - reason = "Ok" - - previous = None - - def __init__(self, info): - # info is either an email.Message or - # an httplib.HTTPResponse object. - if isinstance(info, httplib.HTTPResponse): - for key, value in info.getheaders(): - self[key.lower()] = value - self.status = info.status - self["status"] = str(self.status) - self.reason = info.reason - self.version = info.version - elif isinstance(info, email.Message.Message): - for key, value in info.items(): - self[key.lower()] = value - self.status = int(self["status"]) - else: - for key, value in info.iteritems(): - self[key.lower()] = value - self.status = int(self.get("status", self.status)) - self.reason = self.get("reason", self.reason) - - def __getattr__(self, name): - if name == "dict": - return self - else: - raise AttributeError(name) + from .python2 import * + from .python2 import socks # ensure include in namespace + from .python2 import SSLHandshakeError # TODO: shouldn't rely on this. not public + ssl_error_classes = (SSLHandshakeError,) diff --git a/shotgun_api3/lib/httplib2/python2/__init__.py b/shotgun_api3/lib/httplib2/python2/__init__.py new file mode 100644 index 000000000..b3cc0b2fb --- /dev/null +++ b/shotgun_api3/lib/httplib2/python2/__init__.py @@ -0,0 +1,2223 @@ +"""Small, fast HTTP client library for Python. + +Features persistent connections, cache, and Google App Engine Standard +Environment support. +""" + +from __future__ import print_function + +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = [ + "Thomas Broyer (t.broyer@ltgt.net)", + "James Antill", + "Xavier Verges Farrero", + "Jonathan Feinberg", + "Blair Zajac", + "Sam Ruby", + "Louis Nyffenegger", + "Alex Yu", +] +__license__ = "MIT" +__version__ = '0.12.0' + +import base64 +import calendar +import copy +import email +import email.FeedParser +import email.Message +import email.Utils +import errno +import gzip +import httplib +import os +import random +import re +import StringIO +import sys +import time +import urllib +import urlparse +import zlib + +try: + from hashlib import sha1 as _sha, md5 as _md5 +except ImportError: + # prior to Python 2.5, these were separate modules + import sha + import md5 + + _sha = sha.new + _md5 = md5.new +import hmac +from gettext import gettext as _ +import socket + +try: + from . import socks +except ImportError: + try: + import socks + except (ImportError, AttributeError): + socks = None + +# Build the appropriate socket wrapper for ssl +ssl = None +ssl_SSLError = None +ssl_CertificateError = None +try: + import ssl # python 2.6 +except ImportError: + pass +if ssl is not None: + ssl_SSLError = getattr(ssl, "SSLError", None) + ssl_CertificateError = getattr(ssl, "CertificateError", None) + + +def _ssl_wrap_socket( + sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname +): + if disable_validation: + cert_reqs = ssl.CERT_NONE + else: + cert_reqs = ssl.CERT_REQUIRED + if ssl_version is None: + ssl_version = ssl.PROTOCOL_SSLv23 + + if hasattr(ssl, "SSLContext"): # Python 2.7.9 + context = ssl.SSLContext(ssl_version) + context.verify_mode = cert_reqs + context.check_hostname = cert_reqs != ssl.CERT_NONE + if cert_file: + context.load_cert_chain(cert_file, key_file) + if ca_certs: + context.load_verify_locations(ca_certs) + return context.wrap_socket(sock, server_hostname=hostname) + else: + return ssl.wrap_socket( + sock, + keyfile=key_file, + certfile=cert_file, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + ssl_version=ssl_version, + ) + + +def _ssl_wrap_socket_unsupported( + sock, key_file, cert_file, disable_validation, ca_certs, ssl_version, hostname +): + if not disable_validation: + raise CertificateValidationUnsupported( + "SSL certificate validation is not supported without " + "the ssl module installed. To avoid this error, install " + "the ssl module, or explicity disable validation." + ) + ssl_sock = socket.ssl(sock, key_file, cert_file) + return httplib.FakeSocket(sock, ssl_sock) + + +if ssl is None: + _ssl_wrap_socket = _ssl_wrap_socket_unsupported + +if sys.version_info >= (2, 3): + from iri2uri import iri2uri +else: + + def iri2uri(uri): + return uri + + +def has_timeout(timeout): # python 2.6 + if hasattr(socket, "_GLOBAL_DEFAULT_TIMEOUT"): + return timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT + return timeout is not None + + +__all__ = [ + "Http", + "Response", + "ProxyInfo", + "HttpLib2Error", + "RedirectMissingLocation", + "RedirectLimit", + "FailedToDecompressContent", + "UnimplementedDigestAuthOptionError", + "UnimplementedHmacDigestAuthOptionError", + "debuglevel", + "ProxiesUnavailableError", +] + +# The httplib debug level, set to a non-zero value to get debug output +debuglevel = 0 + +# A request will be tried 'RETRIES' times if it fails at the socket/connection level. +RETRIES = 2 + +# Python 2.3 support +if sys.version_info < (2, 4): + + def sorted(seq): + seq.sort() + return seq + + +# Python 2.3 support +def HTTPResponse__getheaders(self): + """Return list of (header, value) tuples.""" + if self.msg is None: + raise httplib.ResponseNotReady() + return self.msg.items() + + +if not hasattr(httplib.HTTPResponse, "getheaders"): + httplib.HTTPResponse.getheaders = HTTPResponse__getheaders + + +# All exceptions raised here derive from HttpLib2Error +class HttpLib2Error(Exception): + pass + + +# Some exceptions can be caught and optionally +# be turned back into responses. +class HttpLib2ErrorWithResponse(HttpLib2Error): + def __init__(self, desc, response, content): + self.response = response + self.content = content + HttpLib2Error.__init__(self, desc) + + +class RedirectMissingLocation(HttpLib2ErrorWithResponse): + pass + + +class RedirectLimit(HttpLib2ErrorWithResponse): + pass + + +class FailedToDecompressContent(HttpLib2ErrorWithResponse): + pass + + +class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): + pass + + +class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): + pass + + +class MalformedHeader(HttpLib2Error): + pass + + +class RelativeURIError(HttpLib2Error): + pass + + +class ServerNotFoundError(HttpLib2Error): + pass + + +class ProxiesUnavailableError(HttpLib2Error): + pass + + +class CertificateValidationUnsupported(HttpLib2Error): + pass + + +class SSLHandshakeError(HttpLib2Error): + pass + + +class NotSupportedOnThisPlatform(HttpLib2Error): + pass + + +class CertificateHostnameMismatch(SSLHandshakeError): + def __init__(self, desc, host, cert): + HttpLib2Error.__init__(self, desc) + self.host = host + self.cert = cert + + +class NotRunningAppEngineEnvironment(HttpLib2Error): + pass + + +# Open Items: +# ----------- +# Proxy support + +# Are we removing the cached content too soon on PUT (only delete on 200 Maybe?) + +# Pluggable cache storage (supports storing the cache in +# flat files by default. We need a plug-in architecture +# that can support Berkeley DB and Squid) + +# == Known Issues == +# Does not handle a resource that uses conneg and Last-Modified but no ETag as a cache validator. +# Does not handle Cache-Control: max-stale +# Does not use Age: headers when calculating cache freshness. + +# The number of redirections to follow before giving up. +# Note that only GET redirects are automatically followed. +# Will also honor 301 requests by saving that info and never +# requesting that URI again. +DEFAULT_MAX_REDIRECTS = 5 + +from . import certs +CA_CERTS = certs.where() + +# Which headers are hop-by-hop headers by default +HOP_BY_HOP = [ + "connection", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailers", + "transfer-encoding", + "upgrade", +] + + +def _get_end2end_headers(response): + hopbyhop = list(HOP_BY_HOP) + hopbyhop.extend([x.strip() for x in response.get("connection", "").split(",")]) + return [header for header in response.keys() if header not in hopbyhop] + + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + + +def urlnorm(uri): + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise RelativeURIError("Only absolute URIs are allowed. uri = %s" % uri) + authority = authority.lower() + scheme = scheme.lower() + if not path: + path = "/" + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + scheme = scheme.lower() + defrag_uri = scheme + "://" + authority + request_uri + return scheme, authority, request_uri, defrag_uri + + +# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) +re_url_scheme = re.compile(r"^\w+://") +re_unsafe = re.compile(r"[^\w\-_.()=!]+") + + +def safename(filename): + """Return a filename suitable for the cache. + Strips dangerous and common characters to create a filename we + can use to store the cache in. + """ + if isinstance(filename, str): + filename_bytes = filename + filename = filename.decode("utf-8") + else: + filename_bytes = filename.encode("utf-8") + filemd5 = _md5(filename_bytes).hexdigest() + filename = re_url_scheme.sub("", filename) + filename = re_unsafe.sub("", filename) + + # limit length of filename (vital for Windows) + # https://github.com/httplib2/httplib2/pull/74 + # C:\Users\ \AppData\Local\Temp\ , + # 9 chars + max 104 chars + 20 chars + x + 1 + 32 = max 259 chars + # Thus max safe filename x = 93 chars. Let it be 90 to make a round sum: + filename = filename[:90] + + return ",".join((filename, filemd5)) + + +NORMALIZE_SPACE = re.compile(r"(?:\r\n)?[ \t]+") + + +def _normalize_headers(headers): + return dict( + [ + (key.lower(), NORMALIZE_SPACE.sub(value, " ").strip()) + for (key, value) in headers.iteritems() + ] + ) + + +def _parse_cache_control(headers): + retval = {} + if "cache-control" in headers: + parts = headers["cache-control"].split(",") + parts_with_args = [ + tuple([x.strip().lower() for x in part.split("=", 1)]) + for part in parts + if -1 != part.find("=") + ] + parts_wo_args = [ + (name.strip().lower(), 1) for name in parts if -1 == name.find("=") + ] + retval = dict(parts_with_args + parts_wo_args) + return retval + + +# Whether to use a strict mode to parse WWW-Authenticate headers +# Might lead to bad results in case of ill-formed header value, +# so disabled by default, falling back to relaxed parsing. +# Set to true to turn on, usefull for testing servers. +USE_WWW_AUTH_STRICT_PARSING = 0 + +# In regex below: +# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP +# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space +# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both: +# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"? +WWW_AUTH_STRICT = re.compile( + r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$" +) +WWW_AUTH_RELAXED = re.compile( + r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? current_age: + retval = "FRESH" + return retval + + +def _decompressContent(response, new_content): + content = new_content + try: + encoding = response.get("content-encoding", None) + if encoding in ["gzip", "deflate"]: + if encoding == "gzip": + content = gzip.GzipFile(fileobj=StringIO.StringIO(new_content)).read() + if encoding == "deflate": + content = zlib.decompress(content, -zlib.MAX_WBITS) + response["content-length"] = str(len(content)) + # Record the historical presence of the encoding in a way the won't interfere. + response["-content-encoding"] = response["content-encoding"] + del response["content-encoding"] + except (IOError, zlib.error): + content = "" + raise FailedToDecompressContent( + _("Content purported to be compressed with %s but failed to decompress.") + % response.get("content-encoding"), + response, + content, + ) + return content + + +def _updateCache(request_headers, response_headers, content, cache, cachekey): + if cachekey: + cc = _parse_cache_control(request_headers) + cc_response = _parse_cache_control(response_headers) + if "no-store" in cc or "no-store" in cc_response: + cache.delete(cachekey) + else: + info = email.Message.Message() + for key, value in response_headers.iteritems(): + if key not in ["status", "content-encoding", "transfer-encoding"]: + info[key] = value + + # Add annotations to the cache to indicate what headers + # are variant for this request. + vary = response_headers.get("vary", None) + if vary: + vary_headers = vary.lower().replace(" ", "").split(",") + for header in vary_headers: + key = "-varied-%s" % header + try: + info[key] = request_headers[header] + except KeyError: + pass + + status = response_headers.status + if status == 304: + status = 200 + + status_header = "status: %d\r\n" % status + + header_str = info.as_string() + + header_str = re.sub("\r(?!\n)|(? 0: + service = "cl" + # No point in guessing Base or Spreadsheet + # elif request_uri.find("spreadsheets") > 0: + # service = "wise" + + auth = dict( + Email=credentials[0], + Passwd=credentials[1], + service=service, + source=headers["user-agent"], + ) + resp, content = self.http.request( + "https://www.google.com/accounts/ClientLogin", + method="POST", + body=urlencode(auth), + headers={"Content-Type": "application/x-www-form-urlencoded"}, + ) + lines = content.split("\n") + d = dict([tuple(line.split("=", 1)) for line in lines if line]) + if resp.status == 403: + self.Auth = "" + else: + self.Auth = d["Auth"] + + def request(self, method, request_uri, headers, content): + """Modify the request headers to add the appropriate + Authorization header.""" + headers["authorization"] = "GoogleLogin Auth=" + self.Auth + + +AUTH_SCHEME_CLASSES = { + "basic": BasicAuthentication, + "wsse": WsseAuthentication, + "digest": DigestAuthentication, + "hmacdigest": HmacDigestAuthentication, + "googlelogin": GoogleLoginAuthentication, +} + +AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] + + +class FileCache(object): + """Uses a local directory as a store for cached files. + Not really safe to use if multiple threads or processes are going to + be running on the same cache. + """ + + def __init__( + self, cache, safe=safename + ): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior + self.cache = cache + self.safe = safe + if not os.path.exists(cache): + os.makedirs(self.cache) + + def get(self, key): + retval = None + cacheFullPath = os.path.join(self.cache, self.safe(key)) + try: + f = file(cacheFullPath, "rb") + retval = f.read() + f.close() + except IOError: + pass + return retval + + def set(self, key, value): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + f = file(cacheFullPath, "wb") + f.write(value) + f.close() + + def delete(self, key): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + if os.path.exists(cacheFullPath): + os.remove(cacheFullPath) + + +class Credentials(object): + def __init__(self): + self.credentials = [] + + def add(self, name, password, domain=""): + self.credentials.append((domain.lower(), name, password)) + + def clear(self): + self.credentials = [] + + def iter(self, domain): + for (cdomain, name, password) in self.credentials: + if cdomain == "" or domain == cdomain: + yield (name, password) + + +class KeyCerts(Credentials): + """Identical to Credentials except that + name/password are mapped to key/cert.""" + + pass + + +class AllHosts(object): + pass + + +class ProxyInfo(object): + """Collect information required to use a proxy.""" + + bypass_hosts = () + + def __init__( + self, + proxy_type, + proxy_host, + proxy_port, + proxy_rdns=True, + proxy_user=None, + proxy_pass=None, + proxy_headers=None, + ): + """Args: + + proxy_type: The type of proxy server. This must be set to one of + socks.PROXY_TYPE_XXX constants. For example: p = + ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost', + proxy_port=8000) + proxy_host: The hostname or IP address of the proxy server. + proxy_port: The port that the proxy server is running on. + proxy_rdns: If True (default), DNS queries will not be performed + locally, and instead, handed to the proxy to resolve. This is useful + if the network does not allow resolution of non-local names. In + httplib2 0.9 and earlier, this defaulted to False. + proxy_user: The username used to authenticate with the proxy server. + proxy_pass: The password used to authenticate with the proxy server. + proxy_headers: Additional or modified headers for the proxy connect + request. + """ + self.proxy_type = proxy_type + self.proxy_host = proxy_host + self.proxy_port = proxy_port + self.proxy_rdns = proxy_rdns + self.proxy_user = proxy_user + self.proxy_pass = proxy_pass + self.proxy_headers = proxy_headers + + def astuple(self): + return ( + self.proxy_type, + self.proxy_host, + self.proxy_port, + self.proxy_rdns, + self.proxy_user, + self.proxy_pass, + self.proxy_headers, + ) + + def isgood(self): + return (self.proxy_host != None) and (self.proxy_port != None) + + def applies_to(self, hostname): + return not self.bypass_host(hostname) + + def bypass_host(self, hostname): + """Has this host been excluded from the proxy config""" + if self.bypass_hosts is AllHosts: + return True + + hostname = "." + hostname.lstrip(".") + for skip_name in self.bypass_hosts: + # *.suffix + if skip_name.startswith(".") and hostname.endswith(skip_name): + return True + # exact match + if hostname == "." + skip_name: + return True + return False + + def __repr__(self): + return ( + "" + ).format(p=self) + + +def proxy_info_from_environment(method="http"): + """Read proxy info from the environment variables. + """ + if method not in ["http", "https"]: + return + + env_var = method + "_proxy" + url = os.environ.get(env_var, os.environ.get(env_var.upper())) + if not url: + return + return proxy_info_from_url(url, method, None) + + +def proxy_info_from_url(url, method="http", noproxy=None): + """Construct a ProxyInfo from a URL (such as http_proxy env var) + """ + url = urlparse.urlparse(url) + username = None + password = None + port = None + if "@" in url[1]: + ident, host_port = url[1].split("@", 1) + if ":" in ident: + username, password = ident.split(":", 1) + else: + password = ident + else: + host_port = url[1] + if ":" in host_port: + host, port = host_port.split(":", 1) + else: + host = host_port + + if port: + port = int(port) + else: + port = dict(https=443, http=80)[method] + + proxy_type = 3 # socks.PROXY_TYPE_HTTP + pi = ProxyInfo( + proxy_type=proxy_type, + proxy_host=host, + proxy_port=port, + proxy_user=username or None, + proxy_pass=password or None, + proxy_headers=None, + ) + + bypass_hosts = [] + # If not given an explicit noproxy value, respect values in env vars. + if noproxy is None: + noproxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY", "")) + # Special case: A single '*' character means all hosts should be bypassed. + if noproxy == "*": + bypass_hosts = AllHosts + elif noproxy.strip(): + bypass_hosts = noproxy.split(",") + bypass_hosts = filter(bool, bypass_hosts) # To exclude empty string. + + pi.bypass_hosts = bypass_hosts + return pi + + +class HTTPConnectionWithTimeout(httplib.HTTPConnection): + """HTTPConnection subclass that supports timeouts + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + + def __init__(self, host, port=None, strict=None, timeout=None, proxy_info=None): + httplib.HTTPConnection.__init__(self, host, port, strict) + self.timeout = timeout + self.proxy_info = proxy_info + + def connect(self): + """Connect to the host and port specified in __init__.""" + # Mostly verbatim from httplib.py. + if self.proxy_info and socks is None: + raise ProxiesUnavailableError( + "Proxy support missing but proxy use was requested!" + ) + msg = "getaddrinfo returns an empty list" + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( + self.proxy_info.astuple() + ) + + host = proxy_host + port = proxy_port + else: + use_proxy = False + + host = self.host + port = self.port + + for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + try: + if use_proxy: + self.sock = socks.socksocket(af, socktype, proto) + self.sock.setproxy( + proxy_type, + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + else: + self.sock = socket.socket(af, socktype, proto) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + # Different from httplib: support timeouts. + if has_timeout(self.timeout): + self.sock.settimeout(self.timeout) + # End of difference from httplib. + if self.debuglevel > 0: + print("connect: (%s, %s) ************" % (self.host, self.port)) + if use_proxy: + print( + "proxy: %s ************" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + if use_proxy: + self.sock.connect((self.host, self.port) + sa[2:]) + else: + self.sock.connect(sa) + except socket.error as msg: + if self.debuglevel > 0: + print("connect fail: (%s, %s)" % (self.host, self.port)) + if use_proxy: + print( + "proxy: %s" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error(msg) + + +class HTTPSConnectionWithTimeout(httplib.HTTPSConnection): + """This class allows communication via SSL. + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + + def __init__( + self, + host, + port=None, + key_file=None, + cert_file=None, + strict=None, + timeout=None, + proxy_info=None, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): + httplib.HTTPSConnection.__init__( + self, host, port=port, key_file=key_file, cert_file=cert_file, strict=strict + ) + self.timeout = timeout + self.proxy_info = proxy_info + if ca_certs is None: + ca_certs = CA_CERTS + self.ca_certs = ca_certs + self.disable_ssl_certificate_validation = disable_ssl_certificate_validation + self.ssl_version = ssl_version + + # The following two methods were adapted from https_wrapper.py, released + # with the Google Appengine SDK at + # http://googleappengine.googlecode.com/svn-history/r136/trunk/python/google/appengine/tools/https_wrapper.py + # under the following license: + # + # Copyright 2007 Google Inc. + # + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + # + + def _GetValidHostsForCert(self, cert): + """Returns a list of valid host globs for an SSL certificate. + + Args: + cert: A dictionary representing an SSL certificate. + Returns: + list: A list of valid host globs. + """ + if "subjectAltName" in cert: + return [x[1] for x in cert["subjectAltName"] if x[0].lower() == "dns"] + else: + return [x[0][1] for x in cert["subject"] if x[0][0].lower() == "commonname"] + + def _ValidateCertificateHostname(self, cert, hostname): + """Validates that a given hostname is valid for an SSL certificate. + + Args: + cert: A dictionary representing an SSL certificate. + hostname: The hostname to test. + Returns: + bool: Whether or not the hostname is valid for this certificate. + """ + hosts = self._GetValidHostsForCert(cert) + for host in hosts: + host_re = host.replace(".", "\.").replace("*", "[^.]*") + if re.search("^%s$" % (host_re,), hostname, re.I): + return True + return False + + def connect(self): + "Connect to a host on a given (SSL) port." + + msg = "getaddrinfo returns an empty list" + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( + self.proxy_info.astuple() + ) + + host = proxy_host + port = proxy_port + else: + use_proxy = False + + host = self.host + port = self.port + + address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM) + for family, socktype, proto, canonname, sockaddr in address_info: + try: + if use_proxy: + sock = socks.socksocket(family, socktype, proto) + + sock.setproxy( + proxy_type, + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + else: + sock = socket.socket(family, socktype, proto) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + + if has_timeout(self.timeout): + sock.settimeout(self.timeout) + + if use_proxy: + sock.connect((self.host, self.port) + sockaddr[:2]) + else: + sock.connect(sockaddr) + self.sock = _ssl_wrap_socket( + sock, + self.key_file, + self.cert_file, + self.disable_ssl_certificate_validation, + self.ca_certs, + self.ssl_version, + self.host, + ) + if self.debuglevel > 0: + print("connect: (%s, %s)" % (self.host, self.port)) + if use_proxy: + print( + "proxy: %s" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + if not self.disable_ssl_certificate_validation: + cert = self.sock.getpeercert() + hostname = self.host.split(":", 0)[0] + if not self._ValidateCertificateHostname(cert, hostname): + raise CertificateHostnameMismatch( + "Server presented certificate that does not match " + "host %s: %s" % (hostname, cert), + hostname, + cert, + ) + except ( + ssl_SSLError, + ssl_CertificateError, + CertificateHostnameMismatch, + ) as e: + if sock: + sock.close() + if self.sock: + self.sock.close() + self.sock = None + # Unfortunately the ssl module doesn't seem to provide any way + # to get at more detailed error information, in particular + # whether the error is due to certificate validation or + # something else (such as SSL protocol mismatch). + if getattr(e, "errno", None) == ssl.SSL_ERROR_SSL: + raise SSLHandshakeError(e) + else: + raise + except (socket.timeout, socket.gaierror): + raise + except socket.error as msg: + if self.debuglevel > 0: + print("connect fail: (%s, %s)" % (self.host, self.port)) + if use_proxy: + print( + "proxy: %s" + % str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error(msg) + + +SCHEME_TO_CONNECTION = { + "http": HTTPConnectionWithTimeout, + "https": HTTPSConnectionWithTimeout, +} + + +def _new_fixed_fetch(validate_certificate): + + def fixed_fetch( + url, + payload=None, + method="GET", + headers={}, + allow_truncated=False, + follow_redirects=True, + deadline=None, + ): + return fetch( + url, + payload=payload, + method=method, + headers=headers, + allow_truncated=allow_truncated, + follow_redirects=follow_redirects, + deadline=deadline, + validate_certificate=validate_certificate, + ) + + return fixed_fetch + + +class AppEngineHttpConnection(httplib.HTTPConnection): + """Use httplib on App Engine, but compensate for its weirdness. + + The parameters key_file, cert_file, proxy_info, ca_certs, + disable_ssl_certificate_validation, and ssl_version are all dropped on + the ground. + """ + + def __init__( + self, + host, + port=None, + key_file=None, + cert_file=None, + strict=None, + timeout=None, + proxy_info=None, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): + httplib.HTTPConnection.__init__( + self, host, port=port, strict=strict, timeout=timeout + ) + + +class AppEngineHttpsConnection(httplib.HTTPSConnection): + """Same as AppEngineHttpConnection, but for HTTPS URIs. + + The parameters proxy_info, ca_certs, disable_ssl_certificate_validation, + and ssl_version are all dropped on the ground. + """ + + def __init__( + self, + host, + port=None, + key_file=None, + cert_file=None, + strict=None, + timeout=None, + proxy_info=None, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): + httplib.HTTPSConnection.__init__( + self, + host, + port=port, + key_file=key_file, + cert_file=cert_file, + strict=strict, + timeout=timeout, + ) + self._fetch = _new_fixed_fetch(not disable_ssl_certificate_validation) + + +# Use a different connection object for Google App Engine Standard Environment. +def is_gae_instance(): + server_software = os.environ.get('SERVER_SOFTWARE', '') + if (server_software.startswith('Google App Engine/') or + server_software.startswith('Development/') or + server_software.startswith('testutil/')): + return True + return False + + +try: + if not is_gae_instance(): + raise NotRunningAppEngineEnvironment() + + from google.appengine.api import apiproxy_stub_map + if apiproxy_stub_map.apiproxy.GetStub("urlfetch") is None: + raise ImportError + + from google.appengine.api.urlfetch import fetch + + # Update the connection classes to use the Googel App Engine specific ones. + SCHEME_TO_CONNECTION = { + "http": AppEngineHttpConnection, + "https": AppEngineHttpsConnection, + } +except (ImportError, NotRunningAppEngineEnvironment): + pass + + +class Http(object): + """An HTTP client that handles: + + - all methods + - caching + - ETags + - compression, + - HTTPS + - Basic + - Digest + - WSSE + + and more. + """ + + def __init__( + self, + cache=None, + timeout=None, + proxy_info=proxy_info_from_environment, + ca_certs=None, + disable_ssl_certificate_validation=False, + ssl_version=None, + ): + """If 'cache' is a string then it is used as a directory name for + a disk cache. Otherwise it must be an object that supports the + same interface as FileCache. + + All timeouts are in seconds. If None is passed for timeout + then Python's default timeout for sockets will be used. See + for example the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + + `proxy_info` may be: + - a callable that takes the http scheme ('http' or 'https') and + returns a ProxyInfo instance per request. By default, uses + proxy_nfo_from_environment. + - a ProxyInfo instance (static proxy config). + - None (proxy disabled). + + ca_certs is the path of a file containing root CA certificates for SSL + server certificate validation. By default, a CA cert file bundled with + httplib2 is used. + + If disable_ssl_certificate_validation is true, SSL cert validation will + not be performed. + + By default, ssl.PROTOCOL_SSLv23 will be used for the ssl version. + """ + self.proxy_info = proxy_info + self.ca_certs = ca_certs + self.disable_ssl_certificate_validation = disable_ssl_certificate_validation + self.ssl_version = ssl_version + + # Map domain name to an httplib connection + self.connections = {} + # The location of the cache, for now a directory + # where cached responses are held. + if cache and isinstance(cache, basestring): + self.cache = FileCache(cache) + else: + self.cache = cache + + # Name/password + self.credentials = Credentials() + + # Key/cert + self.certificates = KeyCerts() + + # authorization objects + self.authorizations = [] + + # If set to False then no redirects are followed, even safe ones. + self.follow_redirects = True + + # Which HTTP methods do we apply optimistic concurrency to, i.e. + # which methods get an "if-match:" etag header added to them. + self.optimistic_concurrency_methods = ["PUT", "PATCH"] + + # If 'follow_redirects' is True, and this is set to True then + # all redirecs are followed, including unsafe ones. + self.follow_all_redirects = False + + self.ignore_etag = False + + self.force_exception_to_status_code = False + + self.timeout = timeout + + # Keep Authorization: headers on a redirect. + self.forward_authorization_headers = False + + def __getstate__(self): + state_dict = copy.copy(self.__dict__) + # In case request is augmented by some foreign object such as + # credentials which handle auth + if "request" in state_dict: + del state_dict["request"] + if "connections" in state_dict: + del state_dict["connections"] + return state_dict + + def __setstate__(self, state): + self.__dict__.update(state) + self.connections = {} + + def _auth_from_challenge(self, host, request_uri, headers, response, content): + """A generator that creates Authorization objects + that can be applied to requests. + """ + challenges = _parse_www_authenticate(response, "www-authenticate") + for cred in self.credentials.iter(host): + for scheme in AUTH_SCHEME_ORDER: + if scheme in challenges: + yield AUTH_SCHEME_CLASSES[scheme]( + cred, host, request_uri, headers, response, content, self + ) + + def add_credentials(self, name, password, domain=""): + """Add a name and password that will be used + any time a request requires authentication.""" + self.credentials.add(name, password, domain) + + def add_certificate(self, key, cert, domain): + """Add a key and cert that will be used + any time a request requires authentication.""" + self.certificates.add(key, cert, domain) + + def clear_credentials(self): + """Remove all the names and passwords + that are used for authentication""" + self.credentials.clear() + self.authorizations = [] + + def _conn_request(self, conn, request_uri, method, body, headers): + i = 0 + seen_bad_status_line = False + while i < RETRIES: + i += 1 + try: + if hasattr(conn, "sock") and conn.sock is None: + conn.connect() + conn.request(method, request_uri, body, headers) + except socket.timeout: + raise + except socket.gaierror: + conn.close() + raise ServerNotFoundError("Unable to find the server at %s" % conn.host) + except ssl_SSLError: + conn.close() + raise + except socket.error as e: + err = 0 + if hasattr(e, "args"): + err = getattr(e, "args")[0] + else: + err = e.errno + if err == errno.ECONNREFUSED: # Connection refused + raise + if err in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES: + continue # retry on potentially transient socket errors + except httplib.HTTPException: + # Just because the server closed the connection doesn't apparently mean + # that the server didn't send a response. + if hasattr(conn, "sock") and conn.sock is None: + if i < RETRIES - 1: + conn.close() + conn.connect() + continue + else: + conn.close() + raise + if i < RETRIES - 1: + conn.close() + conn.connect() + continue + try: + response = conn.getresponse() + except httplib.BadStatusLine: + # If we get a BadStatusLine on the first try then that means + # the connection just went stale, so retry regardless of the + # number of RETRIES set. + if not seen_bad_status_line and i == 1: + i = 0 + seen_bad_status_line = True + conn.close() + conn.connect() + continue + else: + conn.close() + raise + except (socket.error, httplib.HTTPException): + if i < RETRIES - 1: + conn.close() + conn.connect() + continue + else: + conn.close() + raise + else: + content = "" + if method == "HEAD": + conn.close() + else: + content = response.read() + response = Response(response) + if method != "HEAD": + content = _decompressContent(response, content) + break + return (response, content) + + def _request( + self, + conn, + host, + absolute_uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ): + """Do the actual request using the connection object + and also follow one level of redirects if necessary""" + + auths = [ + (auth.depth(request_uri), auth) + for auth in self.authorizations + if auth.inscope(host, request_uri) + ] + auth = auths and sorted(auths)[0][1] or None + if auth: + auth.request(method, request_uri, headers, body) + + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) + + if auth: + if auth.response(response, body): + auth.request(method, request_uri, headers, body) + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) + response._stale_digest = 1 + + if response.status == 401: + for authorization in self._auth_from_challenge( + host, request_uri, headers, response, content + ): + authorization.request(method, request_uri, headers, body) + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) + if response.status != 401: + self.authorizations.append(authorization) + authorization.response(response, body) + break + + if ( + self.follow_all_redirects + or (method in ["GET", "HEAD"]) + or response.status == 303 + ): + if self.follow_redirects and response.status in [300, 301, 302, 303, 307]: + # Pick out the location header and basically start from the beginning + # remembering first to strip the ETag header and decrement our 'depth' + if redirections: + if "location" not in response and response.status != 300: + raise RedirectMissingLocation( + _( + "Redirected but the response is missing a Location: header." + ), + response, + content, + ) + # Fix-up relative redirects (which violate an RFC 2616 MUST) + if "location" in response: + location = response["location"] + (scheme, authority, path, query, fragment) = parse_uri(location) + if authority == None: + response["location"] = urlparse.urljoin( + absolute_uri, location + ) + if response.status == 301 and method in ["GET", "HEAD"]: + response["-x-permanent-redirect-url"] = response["location"] + if "content-location" not in response: + response["content-location"] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + if "if-none-match" in headers: + del headers["if-none-match"] + if "if-modified-since" in headers: + del headers["if-modified-since"] + if ( + "authorization" in headers + and not self.forward_authorization_headers + ): + del headers["authorization"] + if "location" in response: + location = response["location"] + old_response = copy.deepcopy(response) + if "content-location" not in old_response: + old_response["content-location"] = absolute_uri + redirect_method = method + if response.status in [302, 303]: + redirect_method = "GET" + body = None + (response, content) = self.request( + location, + method=redirect_method, + body=body, + headers=headers, + redirections=redirections - 1, + ) + response.previous = old_response + else: + raise RedirectLimit( + "Redirected more times than rediection_limit allows.", + response, + content, + ) + elif response.status in [200, 203] and method in ["GET", "HEAD"]: + # Don't cache 206's since we aren't going to handle byte range requests + if "content-location" not in response: + response["content-location"] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + + return (response, content) + + def _normalize_headers(self, headers): + return _normalize_headers(headers) + + # Need to catch and rebrand some exceptions + # Then need to optionally turn all exceptions into status codes + # including all socket.* and httplib.* exceptions. + + def request( + self, + uri, + method="GET", + body=None, + headers=None, + redirections=DEFAULT_MAX_REDIRECTS, + connection_type=None, + ): + """ Performs a single HTTP request. + + The 'uri' is the URI of the HTTP resource and can begin with either + 'http' or 'https'. The value of 'uri' must be an absolute URI. + + The 'method' is the HTTP method to perform, such as GET, POST, DELETE, + etc. There is no restriction on the methods allowed. + + The 'body' is the entity body to be sent with the request. It is a + string object. + + Any extra headers that are to be sent with the request should be + provided in the 'headers' dictionary. + + The maximum number of redirect to follow before raising an + exception is 'redirections. The default is 5. + + The return value is a tuple of (response, content), the first + being and instance of the 'Response' class, the second being + a string that contains the response entity body. + """ + try: + if headers is None: + headers = {} + else: + headers = self._normalize_headers(headers) + + if "user-agent" not in headers: + headers["user-agent"] = "Python-httplib2/%s (gzip)" % __version__ + + uri = iri2uri(uri) + + (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) + + proxy_info = self._get_proxy_info(scheme, authority) + + conn_key = scheme + ":" + authority + conn = self.connections.get(conn_key) + if conn is None: + if not connection_type: + connection_type = SCHEME_TO_CONNECTION[scheme] + certs = list(self.certificates.iter(authority)) + if scheme == "https": + if certs: + conn = self.connections[conn_key] = connection_type( + authority, + key_file=certs[0][0], + cert_file=certs[0][1], + timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, + ssl_version=self.ssl_version, + ) + else: + conn = self.connections[conn_key] = connection_type( + authority, + timeout=self.timeout, + proxy_info=proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, + ssl_version=self.ssl_version, + ) + else: + conn = self.connections[conn_key] = connection_type( + authority, timeout=self.timeout, proxy_info=proxy_info + ) + conn.set_debuglevel(debuglevel) + + if "range" not in headers and "accept-encoding" not in headers: + headers["accept-encoding"] = "gzip, deflate" + + info = email.Message.Message() + cached_value = None + if self.cache: + cachekey = defrag_uri.encode("utf-8") + cached_value = self.cache.get(cachekey) + if cached_value: + # info = email.message_from_string(cached_value) + # + # Need to replace the line above with the kludge below + # to fix the non-existent bug not fixed in this + # bug report: http://mail.python.org/pipermail/python-bugs-list/2005-September/030289.html + try: + info, content = cached_value.split("\r\n\r\n", 1) + feedparser = email.FeedParser.FeedParser() + feedparser.feed(info) + info = feedparser.close() + feedparser._parse = None + except (IndexError, ValueError): + self.cache.delete(cachekey) + cachekey = None + cached_value = None + else: + cachekey = None + + if ( + method in self.optimistic_concurrency_methods + and self.cache + and "etag" in info + and not self.ignore_etag + and "if-match" not in headers + ): + # http://www.w3.org/1999/04/Editing/ + headers["if-match"] = info["etag"] + + if method not in ["GET", "HEAD"] and self.cache and cachekey: + # RFC 2616 Section 13.10 + self.cache.delete(cachekey) + + # Check the vary header in the cache to see if this request + # matches what varies in the cache. + if method in ["GET", "HEAD"] and "vary" in info: + vary = info["vary"] + vary_headers = vary.lower().replace(" ", "").split(",") + for header in vary_headers: + key = "-varied-%s" % header + value = info[key] + if headers.get(header, None) != value: + cached_value = None + break + + if ( + cached_value + and method in ["GET", "HEAD"] + and self.cache + and "range" not in headers + ): + if "-x-permanent-redirect-url" in info: + # Should cached permanent redirects be counted in our redirection count? For now, yes. + if redirections <= 0: + raise RedirectLimit( + "Redirected more times than rediection_limit allows.", + {}, + "", + ) + (response, new_content) = self.request( + info["-x-permanent-redirect-url"], + method="GET", + headers=headers, + redirections=redirections - 1, + ) + response.previous = Response(info) + response.previous.fromcache = True + else: + # Determine our course of action: + # Is the cached entry fresh or stale? + # Has the client requested a non-cached response? + # + # There seems to be three possible answers: + # 1. [FRESH] Return the cache entry w/o doing a GET + # 2. [STALE] Do the GET (but add in cache validators if available) + # 3. [TRANSPARENT] Do a GET w/o any cache validators (Cache-Control: no-cache) on the request + entry_disposition = _entry_disposition(info, headers) + + if entry_disposition == "FRESH": + if not cached_value: + info["status"] = "504" + content = "" + response = Response(info) + if cached_value: + response.fromcache = True + return (response, content) + + if entry_disposition == "STALE": + if ( + "etag" in info + and not self.ignore_etag + and not "if-none-match" in headers + ): + headers["if-none-match"] = info["etag"] + if "last-modified" in info and not "last-modified" in headers: + headers["if-modified-since"] = info["last-modified"] + elif entry_disposition == "TRANSPARENT": + pass + + (response, new_content) = self._request( + conn, + authority, + uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ) + + if response.status == 304 and method == "GET": + # Rewrite the cache entry with the new end-to-end headers + # Take all headers that are in response + # and overwrite their values in info. + # unless they are hop-by-hop, or are listed in the connection header. + + for key in _get_end2end_headers(response): + info[key] = response[key] + merged_response = Response(info) + if hasattr(response, "_stale_digest"): + merged_response._stale_digest = response._stale_digest + _updateCache( + headers, merged_response, content, self.cache, cachekey + ) + response = merged_response + response.status = 200 + response.fromcache = True + + elif response.status == 200: + content = new_content + else: + self.cache.delete(cachekey) + content = new_content + else: + cc = _parse_cache_control(headers) + if "only-if-cached" in cc: + info["status"] = "504" + response = Response(info) + content = "" + else: + (response, content) = self._request( + conn, + authority, + uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ) + except Exception as e: + if self.force_exception_to_status_code: + if isinstance(e, HttpLib2ErrorWithResponse): + response = e.response + content = e.content + response.status = 500 + response.reason = str(e) + elif isinstance(e, socket.timeout): + content = "Request Timeout" + response = Response( + { + "content-type": "text/plain", + "status": "408", + "content-length": len(content), + } + ) + response.reason = "Request Timeout" + else: + content = str(e) + response = Response( + { + "content-type": "text/plain", + "status": "400", + "content-length": len(content), + } + ) + response.reason = "Bad Request" + else: + raise + + return (response, content) + + def _get_proxy_info(self, scheme, authority): + """Return a ProxyInfo instance (or None) based on the scheme + and authority. + """ + hostname, port = urllib.splitport(authority) + proxy_info = self.proxy_info + if callable(proxy_info): + proxy_info = proxy_info(scheme) + + if hasattr(proxy_info, "applies_to") and not proxy_info.applies_to(hostname): + proxy_info = None + return proxy_info + + +class Response(dict): + """An object more like email.Message than httplib.HTTPResponse.""" + + """Is this response from our local cache""" + fromcache = False + """HTTP protocol version used by server. + + 10 for HTTP/1.0, 11 for HTTP/1.1. + """ + version = 11 + + "Status code returned by server. " + status = 200 + """Reason phrase returned by server.""" + reason = "Ok" + + previous = None + + def __init__(self, info): + # info is either an email.Message or + # an httplib.HTTPResponse object. + if isinstance(info, httplib.HTTPResponse): + for key, value in info.getheaders(): + self[key.lower()] = value + self.status = info.status + self["status"] = str(self.status) + self.reason = info.reason + self.version = info.version + elif isinstance(info, email.Message.Message): + for key, value in info.items(): + self[key.lower()] = value + self.status = int(self["status"]) + else: + for key, value in info.iteritems(): + self[key.lower()] = value + self.status = int(self.get("status", self.status)) + self.reason = self.get("reason", self.reason) + + def __getattr__(self, name): + if name == "dict": + return self + else: + raise AttributeError(name) diff --git a/shotgun_api3/lib/httplib2/cacerts.txt b/shotgun_api3/lib/httplib2/python2/cacerts.txt similarity index 100% rename from shotgun_api3/lib/httplib2/cacerts.txt rename to shotgun_api3/lib/httplib2/python2/cacerts.txt diff --git a/shotgun_api3/lib/httplib2/certs.py b/shotgun_api3/lib/httplib2/python2/certs.py similarity index 100% rename from shotgun_api3/lib/httplib2/certs.py rename to shotgun_api3/lib/httplib2/python2/certs.py diff --git a/shotgun_api3/lib/httplib2/iri2uri.py b/shotgun_api3/lib/httplib2/python2/iri2uri.py similarity index 100% rename from shotgun_api3/lib/httplib2/iri2uri.py rename to shotgun_api3/lib/httplib2/python2/iri2uri.py diff --git a/shotgun_api3/lib/httplib2/socks.py b/shotgun_api3/lib/httplib2/python2/socks.py similarity index 100% rename from shotgun_api3/lib/httplib2/socks.py rename to shotgun_api3/lib/httplib2/python2/socks.py diff --git a/shotgun_api3/lib/httplib2/python3/__init__.py b/shotgun_api3/lib/httplib2/python3/__init__.py new file mode 100644 index 000000000..e0242df74 --- /dev/null +++ b/shotgun_api3/lib/httplib2/python3/__init__.py @@ -0,0 +1,2012 @@ +# -*- coding: utf-8 -*- +"""Small, fast HTTP client library for Python.""" + +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = [ + "Thomas Broyer (t.broyer@ltgt.net)", + "James Antill", + "Xavier Verges Farrero", + "Jonathan Feinberg", + "Blair Zajac", + "Sam Ruby", + "Louis Nyffenegger", + "Mark Pilgrim", + "Alex Yu", +] +__license__ = "MIT" +__version__ = '0.12.0' + +import base64 +import calendar +import copy +import email +import email.feedparser +from email import header +import email.message +import email.utils +import errno +from gettext import gettext as _ +import gzip +from hashlib import md5 as _md5 +from hashlib import sha1 as _sha +import hmac +import http.client +import io +import os +import random +import re +import socket +import ssl +import sys +import time +import urllib.parse +import zlib + +try: + import socks +except ImportError: + # TODO: remove this fallback and copypasted socksipy module upon py2/3 merge, + # idea is to have soft-dependency on any compatible module called socks + from . import socks +from .iri2uri import iri2uri + + +def has_timeout(timeout): + if hasattr(socket, "_GLOBAL_DEFAULT_TIMEOUT"): + return timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT + return timeout is not None + + +__all__ = [ + "debuglevel", + "FailedToDecompressContent", + "Http", + "HttpLib2Error", + "ProxyInfo", + "RedirectLimit", + "RedirectMissingLocation", + "Response", + "RETRIES", + "UnimplementedDigestAuthOptionError", + "UnimplementedHmacDigestAuthOptionError", +] + +# The httplib debug level, set to a non-zero value to get debug output +debuglevel = 0 + +# A request will be tried 'RETRIES' times if it fails at the socket/connection level. +RETRIES = 2 + + +# All exceptions raised here derive from HttpLib2Error +class HttpLib2Error(Exception): + pass + + +# Some exceptions can be caught and optionally +# be turned back into responses. +class HttpLib2ErrorWithResponse(HttpLib2Error): + def __init__(self, desc, response, content): + self.response = response + self.content = content + HttpLib2Error.__init__(self, desc) + + +class RedirectMissingLocation(HttpLib2ErrorWithResponse): + pass + + +class RedirectLimit(HttpLib2ErrorWithResponse): + pass + + +class FailedToDecompressContent(HttpLib2ErrorWithResponse): + pass + + +class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): + pass + + +class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): + pass + + +class MalformedHeader(HttpLib2Error): + pass + + +class RelativeURIError(HttpLib2Error): + pass + + +class ServerNotFoundError(HttpLib2Error): + pass + + +class ProxiesUnavailableError(HttpLib2Error): + pass + + +# Open Items: +# ----------- + +# Are we removing the cached content too soon on PUT (only delete on 200 Maybe?) + +# Pluggable cache storage (supports storing the cache in +# flat files by default. We need a plug-in architecture +# that can support Berkeley DB and Squid) + +# == Known Issues == +# Does not handle a resource that uses conneg and Last-Modified but no ETag as a cache validator. +# Does not handle Cache-Control: max-stale +# Does not use Age: headers when calculating cache freshness. + +# The number of redirections to follow before giving up. +# Note that only GET redirects are automatically followed. +# Will also honor 301 requests by saving that info and never +# requesting that URI again. +DEFAULT_MAX_REDIRECTS = 5 + +# Which headers are hop-by-hop headers by default +HOP_BY_HOP = [ + "connection", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailers", + "transfer-encoding", + "upgrade", +] + +from . import certs +CA_CERTS = certs.where() + +# PROTOCOL_TLS is python 3.5.3+. PROTOCOL_SSLv23 is deprecated. +# Both PROTOCOL_TLS and PROTOCOL_SSLv23 are equivalent and means: +# > Selects the highest protocol version that both the client and server support. +# > Despite the name, this option can select “TLS” protocols as well as “SSL”. +# source: https://docs.python.org/3.5/library/ssl.html#ssl.PROTOCOL_TLS +DEFAULT_TLS_VERSION = getattr(ssl, "PROTOCOL_TLS", None) or getattr( + ssl, "PROTOCOL_SSLv23" +) + + +def _build_ssl_context( + disable_ssl_certificate_validation, ca_certs, cert_file=None, key_file=None +): + if not hasattr(ssl, "SSLContext"): + raise RuntimeError("httplib2 requires Python 3.2+ for ssl.SSLContext") + + context = ssl.SSLContext(DEFAULT_TLS_VERSION) + context.verify_mode = ( + ssl.CERT_NONE if disable_ssl_certificate_validation else ssl.CERT_REQUIRED + ) + + # check_hostname requires python 3.4+ + # we will perform the equivalent in HTTPSConnectionWithTimeout.connect() by calling ssl.match_hostname + # if check_hostname is not supported. + if hasattr(context, "check_hostname"): + context.check_hostname = not disable_ssl_certificate_validation + + context.load_verify_locations(ca_certs) + + if cert_file: + context.load_cert_chain(cert_file, key_file) + + return context + + +def _get_end2end_headers(response): + hopbyhop = list(HOP_BY_HOP) + hopbyhop.extend([x.strip() for x in response.get("connection", "").split(",")]) + return [header for header in list(response.keys()) if header not in hopbyhop] + + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + + +def urlnorm(uri): + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise RelativeURIError("Only absolute URIs are allowed. uri = %s" % uri) + authority = authority.lower() + scheme = scheme.lower() + if not path: + path = "/" + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + scheme = scheme.lower() + defrag_uri = scheme + "://" + authority + request_uri + return scheme, authority, request_uri, defrag_uri + + +# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) +re_url_scheme = re.compile(r"^\w+://") +re_unsafe = re.compile(r"[^\w\-_.()=!]+", re.ASCII) + + +def safename(filename): + """Return a filename suitable for the cache. + Strips dangerous and common characters to create a filename we + can use to store the cache in. + """ + if isinstance(filename, bytes): + filename_bytes = filename + filename = filename.decode("utf-8") + else: + filename_bytes = filename.encode("utf-8") + filemd5 = _md5(filename_bytes).hexdigest() + filename = re_url_scheme.sub("", filename) + filename = re_unsafe.sub("", filename) + + # limit length of filename (vital for Windows) + # https://github.com/httplib2/httplib2/pull/74 + # C:\Users\ \AppData\Local\Temp\ , + # 9 chars + max 104 chars + 20 chars + x + 1 + 32 = max 259 chars + # Thus max safe filename x = 93 chars. Let it be 90 to make a round sum: + filename = filename[:90] + + return ",".join((filename, filemd5)) + + +NORMALIZE_SPACE = re.compile(r"(?:\r\n)?[ \t]+") + + +def _normalize_headers(headers): + return dict( + [ + ( + _convert_byte_str(key).lower(), + NORMALIZE_SPACE.sub(_convert_byte_str(value), " ").strip(), + ) + for (key, value) in headers.items() + ] + ) + + +def _convert_byte_str(s): + if not isinstance(s, str): + return str(s, "utf-8") + return s + + +def _parse_cache_control(headers): + retval = {} + if "cache-control" in headers: + parts = headers["cache-control"].split(",") + parts_with_args = [ + tuple([x.strip().lower() for x in part.split("=", 1)]) + for part in parts + if -1 != part.find("=") + ] + parts_wo_args = [ + (name.strip().lower(), 1) for name in parts if -1 == name.find("=") + ] + retval = dict(parts_with_args + parts_wo_args) + return retval + + +# Whether to use a strict mode to parse WWW-Authenticate headers +# Might lead to bad results in case of ill-formed header value, +# so disabled by default, falling back to relaxed parsing. +# Set to true to turn on, usefull for testing servers. +USE_WWW_AUTH_STRICT_PARSING = 0 + +# In regex below: +# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP +# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space +# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both: +# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"? +WWW_AUTH_STRICT = re.compile( + r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$" +) +WWW_AUTH_RELAXED = re.compile( + r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? current_age: + retval = "FRESH" + return retval + + +def _decompressContent(response, new_content): + content = new_content + try: + encoding = response.get("content-encoding", None) + if encoding in ["gzip", "deflate"]: + if encoding == "gzip": + content = gzip.GzipFile(fileobj=io.BytesIO(new_content)).read() + if encoding == "deflate": + content = zlib.decompress(content, -zlib.MAX_WBITS) + response["content-length"] = str(len(content)) + # Record the historical presence of the encoding in a way the won't interfere. + response["-content-encoding"] = response["content-encoding"] + del response["content-encoding"] + except (IOError, zlib.error): + content = "" + raise FailedToDecompressContent( + _("Content purported to be compressed with %s but failed to decompress.") + % response.get("content-encoding"), + response, + content, + ) + return content + + +def _bind_write_headers(msg): + def _write_headers(self): + # Self refers to the Generator object. + for h, v in msg.items(): + print("%s:" % h, end=" ", file=self._fp) + if isinstance(v, header.Header): + print(v.encode(maxlinelen=self._maxheaderlen), file=self._fp) + else: + # email.Header got lots of smarts, so use it. + headers = header.Header( + v, maxlinelen=self._maxheaderlen, charset="utf-8", header_name=h + ) + print(headers.encode(), file=self._fp) + # A blank line always separates headers from body. + print(file=self._fp) + + return _write_headers + + +def _updateCache(request_headers, response_headers, content, cache, cachekey): + if cachekey: + cc = _parse_cache_control(request_headers) + cc_response = _parse_cache_control(response_headers) + if "no-store" in cc or "no-store" in cc_response: + cache.delete(cachekey) + else: + info = email.message.Message() + for key, value in response_headers.items(): + if key not in ["status", "content-encoding", "transfer-encoding"]: + info[key] = value + + # Add annotations to the cache to indicate what headers + # are variant for this request. + vary = response_headers.get("vary", None) + if vary: + vary_headers = vary.lower().replace(" ", "").split(",") + for header in vary_headers: + key = "-varied-%s" % header + try: + info[key] = request_headers[header] + except KeyError: + pass + + status = response_headers.status + if status == 304: + status = 200 + + status_header = "status: %d\r\n" % status + + try: + header_str = info.as_string() + except UnicodeEncodeError: + setattr(info, "_write_headers", _bind_write_headers(info)) + header_str = info.as_string() + + header_str = re.sub("\r(?!\n)|(? 0: + service = "cl" + # No point in guessing Base or Spreadsheet + # elif request_uri.find("spreadsheets") > 0: + # service = "wise" + + auth = dict( + Email=credentials[0], + Passwd=credentials[1], + service=service, + source=headers["user-agent"], + ) + resp, content = self.http.request( + "https://www.google.com/accounts/ClientLogin", + method="POST", + body=urlencode(auth), + headers={"Content-Type": "application/x-www-form-urlencoded"}, + ) + lines = content.split("\n") + d = dict([tuple(line.split("=", 1)) for line in lines if line]) + if resp.status == 403: + self.Auth = "" + else: + self.Auth = d["Auth"] + + def request(self, method, request_uri, headers, content): + """Modify the request headers to add the appropriate + Authorization header.""" + headers["authorization"] = "GoogleLogin Auth=" + self.Auth + + +AUTH_SCHEME_CLASSES = { + "basic": BasicAuthentication, + "wsse": WsseAuthentication, + "digest": DigestAuthentication, + "hmacdigest": HmacDigestAuthentication, + "googlelogin": GoogleLoginAuthentication, +} + +AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] + + +class FileCache(object): + """Uses a local directory as a store for cached files. + Not really safe to use if multiple threads or processes are going to + be running on the same cache. + """ + + def __init__( + self, cache, safe=safename + ): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior + self.cache = cache + self.safe = safe + if not os.path.exists(cache): + os.makedirs(self.cache) + + def get(self, key): + retval = None + cacheFullPath = os.path.join(self.cache, self.safe(key)) + try: + f = open(cacheFullPath, "rb") + retval = f.read() + f.close() + except IOError: + pass + return retval + + def set(self, key, value): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + f = open(cacheFullPath, "wb") + f.write(value) + f.close() + + def delete(self, key): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + if os.path.exists(cacheFullPath): + os.remove(cacheFullPath) + + +class Credentials(object): + def __init__(self): + self.credentials = [] + + def add(self, name, password, domain=""): + self.credentials.append((domain.lower(), name, password)) + + def clear(self): + self.credentials = [] + + def iter(self, domain): + for (cdomain, name, password) in self.credentials: + if cdomain == "" or domain == cdomain: + yield (name, password) + + +class KeyCerts(Credentials): + """Identical to Credentials except that + name/password are mapped to key/cert.""" + + pass + + +class AllHosts(object): + pass + + +class ProxyInfo(object): + """Collect information required to use a proxy.""" + + bypass_hosts = () + + def __init__( + self, + proxy_type, + proxy_host, + proxy_port, + proxy_rdns=True, + proxy_user=None, + proxy_pass=None, + proxy_headers=None, + ): + """Args: + + proxy_type: The type of proxy server. This must be set to one of + socks.PROXY_TYPE_XXX constants. For example: p = + ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost', + proxy_port=8000) + proxy_host: The hostname or IP address of the proxy server. + proxy_port: The port that the proxy server is running on. + proxy_rdns: If True (default), DNS queries will not be performed + locally, and instead, handed to the proxy to resolve. This is useful + if the network does not allow resolution of non-local names. In + httplib2 0.9 and earlier, this defaulted to False. + proxy_user: The username used to authenticate with the proxy server. + proxy_pass: The password used to authenticate with the proxy server. + proxy_headers: Additional or modified headers for the proxy connect + request. + """ + self.proxy_type, self.proxy_host, self.proxy_port, self.proxy_rdns, self.proxy_user, self.proxy_pass, self.proxy_headers = ( + proxy_type, + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + + def astuple(self): + return ( + self.proxy_type, + self.proxy_host, + self.proxy_port, + self.proxy_rdns, + self.proxy_user, + self.proxy_pass, + self.proxy_headers, + ) + + def isgood(self): + return socks and (self.proxy_host != None) and (self.proxy_port != None) + + def applies_to(self, hostname): + return not self.bypass_host(hostname) + + def bypass_host(self, hostname): + """Has this host been excluded from the proxy config""" + if self.bypass_hosts is AllHosts: + return True + + hostname = "." + hostname.lstrip(".") + for skip_name in self.bypass_hosts: + # *.suffix + if skip_name.startswith(".") and hostname.endswith(skip_name): + return True + # exact match + if hostname == "." + skip_name: + return True + return False + + def __repr__(self): + return ( + "" + ).format(p=self) + + +def proxy_info_from_environment(method="http"): + """Read proxy info from the environment variables. + """ + if method not in ("http", "https"): + return + + env_var = method + "_proxy" + url = os.environ.get(env_var, os.environ.get(env_var.upper())) + if not url: + return + return proxy_info_from_url(url, method, noproxy=None) + + +def proxy_info_from_url(url, method="http", noproxy=None): + """Construct a ProxyInfo from a URL (such as http_proxy env var) + """ + url = urllib.parse.urlparse(url) + username = None + password = None + port = None + if "@" in url[1]: + ident, host_port = url[1].split("@", 1) + if ":" in ident: + username, password = ident.split(":", 1) + else: + password = ident + else: + host_port = url[1] + if ":" in host_port: + host, port = host_port.split(":", 1) + else: + host = host_port + + if port: + port = int(port) + else: + port = dict(https=443, http=80)[method] + + proxy_type = 3 # socks.PROXY_TYPE_HTTP + pi = ProxyInfo( + proxy_type=proxy_type, + proxy_host=host, + proxy_port=port, + proxy_user=username or None, + proxy_pass=password or None, + proxy_headers=None, + ) + + bypass_hosts = [] + # If not given an explicit noproxy value, respect values in env vars. + if noproxy is None: + noproxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY", "")) + # Special case: A single '*' character means all hosts should be bypassed. + if noproxy == "*": + bypass_hosts = AllHosts + elif noproxy.strip(): + bypass_hosts = noproxy.split(",") + bypass_hosts = tuple(filter(bool, bypass_hosts)) # To exclude empty string. + + pi.bypass_hosts = bypass_hosts + return pi + + +class HTTPConnectionWithTimeout(http.client.HTTPConnection): + """HTTPConnection subclass that supports timeouts + + HTTPConnection subclass that supports timeouts + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + + def __init__(self, host, port=None, timeout=None, proxy_info=None): + http.client.HTTPConnection.__init__(self, host, port=port, timeout=timeout) + + self.proxy_info = proxy_info + if proxy_info and not isinstance(proxy_info, ProxyInfo): + self.proxy_info = proxy_info("http") + + def connect(self): + """Connect to the host and port specified in __init__.""" + if self.proxy_info and socks is None: + raise ProxiesUnavailableError( + "Proxy support missing but proxy use was requested!" + ) + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( + self.proxy_info.astuple() + ) + + host = proxy_host + port = proxy_port + else: + use_proxy = False + + host = self.host + port = self.port + proxy_type = None + + socket_err = None + + for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + try: + if use_proxy: + self.sock = socks.socksocket(af, socktype, proto) + self.sock.setproxy( + proxy_type, + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + ) + else: + self.sock = socket.socket(af, socktype, proto) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + if has_timeout(self.timeout): + self.sock.settimeout(self.timeout) + if self.debuglevel > 0: + print( + "connect: ({0}, {1}) ************".format(self.host, self.port) + ) + if use_proxy: + print( + "proxy: {0} ************".format( + str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + ) + + self.sock.connect((self.host, self.port) + sa[2:]) + except socket.error as e: + socket_err = e + if self.debuglevel > 0: + print("connect fail: ({0}, {1})".format(self.host, self.port)) + if use_proxy: + print( + "proxy: {0}".format( + str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + ) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket_err + + +class HTTPSConnectionWithTimeout(http.client.HTTPSConnection): + """This class allows communication via SSL. + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + + def __init__( + self, + host, + port=None, + key_file=None, + cert_file=None, + timeout=None, + proxy_info=None, + ca_certs=None, + disable_ssl_certificate_validation=False, + ): + + self.disable_ssl_certificate_validation = disable_ssl_certificate_validation + self.ca_certs = ca_certs if ca_certs else CA_CERTS + + self.proxy_info = proxy_info + if proxy_info and not isinstance(proxy_info, ProxyInfo): + self.proxy_info = proxy_info("https") + + context = _build_ssl_context( + self.disable_ssl_certificate_validation, self.ca_certs, cert_file, key_file + ) + super(HTTPSConnectionWithTimeout, self).__init__( + host, + port=port, + key_file=key_file, + cert_file=cert_file, + timeout=timeout, + context=context, + ) + + def connect(self): + """Connect to a host on a given (SSL) port.""" + if self.proxy_info and self.proxy_info.isgood(): + use_proxy = True + proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass, proxy_headers = ( + self.proxy_info.astuple() + ) + + host = proxy_host + port = proxy_port + else: + use_proxy = False + + host = self.host + port = self.port + proxy_type = None + proxy_headers = None + + socket_err = None + + address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM) + for family, socktype, proto, canonname, sockaddr in address_info: + try: + if use_proxy: + sock = socks.socksocket(family, socktype, proto) + + sock.setproxy( + proxy_type, + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + ) + else: + sock = socket.socket(family, socktype, proto) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + if has_timeout(self.timeout): + sock.settimeout(self.timeout) + sock.connect((self.host, self.port)) + + self.sock = self._context.wrap_socket(sock, server_hostname=self.host) + + # Python 3.3 compatibility: emulate the check_hostname behavior + if ( + not hasattr(self._context, "check_hostname") + and not self.disable_ssl_certificate_validation + ): + try: + ssl.match_hostname(self.sock.getpeercert(), self.host) + except Exception: + self.sock.shutdown(socket.SHUT_RDWR) + self.sock.close() + raise + + if self.debuglevel > 0: + print("connect: ({0}, {1})".format(self.host, self.port)) + if use_proxy: + print( + "proxy: {0}".format( + str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + ) + except (ssl.SSLError, ssl.CertificateError) as e: + if sock: + sock.close() + if self.sock: + self.sock.close() + self.sock = None + raise + except (socket.timeout, socket.gaierror): + raise + except socket.error as e: + socket_err = e + if self.debuglevel > 0: + print("connect fail: ({0}, {1})".format((self.host, self.port))) + if use_proxy: + print( + "proxy: {0}".format( + str( + ( + proxy_host, + proxy_port, + proxy_rdns, + proxy_user, + proxy_pass, + proxy_headers, + ) + ) + ) + ) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket_err + + +SCHEME_TO_CONNECTION = { + "http": HTTPConnectionWithTimeout, + "https": HTTPSConnectionWithTimeout, +} + + +class Http(object): + """An HTTP client that handles: + + - all methods + - caching + - ETags + - compression, + - HTTPS + - Basic + - Digest + - WSSE + + and more. + """ + + def __init__( + self, + cache=None, + timeout=None, + proxy_info=proxy_info_from_environment, + ca_certs=None, + disable_ssl_certificate_validation=False, + ): + """If 'cache' is a string then it is used as a directory name for + a disk cache. Otherwise it must be an object that supports the + same interface as FileCache. + + All timeouts are in seconds. If None is passed for timeout + then Python's default timeout for sockets will be used. See + for example the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + + `proxy_info` may be: + - a callable that takes the http scheme ('http' or 'https') and + returns a ProxyInfo instance per request. By default, uses + proxy_info_from_environment. + - a ProxyInfo instance (static proxy config). + - None (proxy disabled). + + ca_certs is the path of a file containing root CA certificates for SSL + server certificate validation. By default, a CA cert file bundled with + httplib2 is used. + + If disable_ssl_certificate_validation is true, SSL cert validation will + not be performed. +""" + self.proxy_info = proxy_info + self.ca_certs = ca_certs + self.disable_ssl_certificate_validation = disable_ssl_certificate_validation + # Map domain name to an httplib connection + self.connections = {} + # The location of the cache, for now a directory + # where cached responses are held. + if cache and isinstance(cache, str): + self.cache = FileCache(cache) + else: + self.cache = cache + + # Name/password + self.credentials = Credentials() + + # Key/cert + self.certificates = KeyCerts() + + # authorization objects + self.authorizations = [] + + # If set to False then no redirects are followed, even safe ones. + self.follow_redirects = True + + # Which HTTP methods do we apply optimistic concurrency to, i.e. + # which methods get an "if-match:" etag header added to them. + self.optimistic_concurrency_methods = ["PUT", "PATCH"] + + # If 'follow_redirects' is True, and this is set to True then + # all redirecs are followed, including unsafe ones. + self.follow_all_redirects = False + + self.ignore_etag = False + + self.force_exception_to_status_code = False + + self.timeout = timeout + + # Keep Authorization: headers on a redirect. + self.forward_authorization_headers = False + + def __getstate__(self): + state_dict = copy.copy(self.__dict__) + # In case request is augmented by some foreign object such as + # credentials which handle auth + if "request" in state_dict: + del state_dict["request"] + if "connections" in state_dict: + del state_dict["connections"] + return state_dict + + def __setstate__(self, state): + self.__dict__.update(state) + self.connections = {} + + def _auth_from_challenge(self, host, request_uri, headers, response, content): + """A generator that creates Authorization objects + that can be applied to requests. + """ + challenges = _parse_www_authenticate(response, "www-authenticate") + for cred in self.credentials.iter(host): + for scheme in AUTH_SCHEME_ORDER: + if scheme in challenges: + yield AUTH_SCHEME_CLASSES[scheme]( + cred, host, request_uri, headers, response, content, self + ) + + def add_credentials(self, name, password, domain=""): + """Add a name and password that will be used + any time a request requires authentication.""" + self.credentials.add(name, password, domain) + + def add_certificate(self, key, cert, domain): + """Add a key and cert that will be used + any time a request requires authentication.""" + self.certificates.add(key, cert, domain) + + def clear_credentials(self): + """Remove all the names and passwords + that are used for authentication""" + self.credentials.clear() + self.authorizations = [] + + def _conn_request(self, conn, request_uri, method, body, headers): + i = 0 + seen_bad_status_line = False + while i < RETRIES: + i += 1 + try: + if conn.sock is None: + conn.connect() + conn.request(method, request_uri, body, headers) + except socket.timeout: + conn.close() + raise + except socket.gaierror: + conn.close() + raise ServerNotFoundError("Unable to find the server at %s" % conn.host) + except socket.error as e: + errno_ = ( + e.args[0].errno if isinstance(e.args[0], socket.error) else e.errno + ) + if errno_ in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES: + continue # retry on potentially transient errors + raise + except http.client.HTTPException: + if conn.sock is None: + if i < RETRIES - 1: + conn.close() + conn.connect() + continue + else: + conn.close() + raise + if i < RETRIES - 1: + conn.close() + conn.connect() + continue + # Just because the server closed the connection doesn't apparently mean + # that the server didn't send a response. + pass + try: + response = conn.getresponse() + except (http.client.BadStatusLine, http.client.ResponseNotReady): + # If we get a BadStatusLine on the first try then that means + # the connection just went stale, so retry regardless of the + # number of RETRIES set. + if not seen_bad_status_line and i == 1: + i = 0 + seen_bad_status_line = True + conn.close() + conn.connect() + continue + else: + conn.close() + raise + except socket.timeout: + raise + except (socket.error, http.client.HTTPException): + conn.close() + if i == 0: + conn.close() + conn.connect() + continue + else: + raise + else: + content = b"" + if method == "HEAD": + conn.close() + else: + content = response.read() + response = Response(response) + if method != "HEAD": + content = _decompressContent(response, content) + + break + return (response, content) + + def _request( + self, + conn, + host, + absolute_uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ): + """Do the actual request using the connection object + and also follow one level of redirects if necessary""" + + auths = [ + (auth.depth(request_uri), auth) + for auth in self.authorizations + if auth.inscope(host, request_uri) + ] + auth = auths and sorted(auths)[0][1] or None + if auth: + auth.request(method, request_uri, headers, body) + + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) + + if auth: + if auth.response(response, body): + auth.request(method, request_uri, headers, body) + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) + response._stale_digest = 1 + + if response.status == 401: + for authorization in self._auth_from_challenge( + host, request_uri, headers, response, content + ): + authorization.request(method, request_uri, headers, body) + (response, content) = self._conn_request( + conn, request_uri, method, body, headers + ) + if response.status != 401: + self.authorizations.append(authorization) + authorization.response(response, body) + break + + if ( + self.follow_all_redirects + or (method in ["GET", "HEAD"]) + or response.status == 303 + ): + if self.follow_redirects and response.status in [300, 301, 302, 303, 307]: + # Pick out the location header and basically start from the beginning + # remembering first to strip the ETag header and decrement our 'depth' + if redirections: + if "location" not in response and response.status != 300: + raise RedirectMissingLocation( + _( + "Redirected but the response is missing a Location: header." + ), + response, + content, + ) + # Fix-up relative redirects (which violate an RFC 2616 MUST) + if "location" in response: + location = response["location"] + (scheme, authority, path, query, fragment) = parse_uri(location) + if authority == None: + response["location"] = urllib.parse.urljoin( + absolute_uri, location + ) + if response.status == 301 and method in ["GET", "HEAD"]: + response["-x-permanent-redirect-url"] = response["location"] + if "content-location" not in response: + response["content-location"] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + if "if-none-match" in headers: + del headers["if-none-match"] + if "if-modified-since" in headers: + del headers["if-modified-since"] + if ( + "authorization" in headers + and not self.forward_authorization_headers + ): + del headers["authorization"] + if "location" in response: + location = response["location"] + old_response = copy.deepcopy(response) + if "content-location" not in old_response: + old_response["content-location"] = absolute_uri + redirect_method = method + if response.status in [302, 303]: + redirect_method = "GET" + body = None + (response, content) = self.request( + location, + method=redirect_method, + body=body, + headers=headers, + redirections=redirections - 1, + ) + response.previous = old_response + else: + raise RedirectLimit( + "Redirected more times than redirection_limit allows.", + response, + content, + ) + elif response.status in [200, 203] and method in ["GET", "HEAD"]: + # Don't cache 206's since we aren't going to handle byte range requests + if "content-location" not in response: + response["content-location"] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + + return (response, content) + + def _normalize_headers(self, headers): + return _normalize_headers(headers) + + # Need to catch and rebrand some exceptions + # Then need to optionally turn all exceptions into status codes + # including all socket.* and httplib.* exceptions. + + def request( + self, + uri, + method="GET", + body=None, + headers=None, + redirections=DEFAULT_MAX_REDIRECTS, + connection_type=None, + ): + """ Performs a single HTTP request. +The 'uri' is the URI of the HTTP resource and can begin +with either 'http' or 'https'. The value of 'uri' must be an absolute URI. + +The 'method' is the HTTP method to perform, such as GET, POST, DELETE, etc. +There is no restriction on the methods allowed. + +The 'body' is the entity body to be sent with the request. It is a string +object. + +Any extra headers that are to be sent with the request should be provided in the +'headers' dictionary. + +The maximum number of redirect to follow before raising an +exception is 'redirections. The default is 5. + +The return value is a tuple of (response, content), the first +being and instance of the 'Response' class, the second being +a string that contains the response entity body. + """ + conn_key = '' + + try: + if headers is None: + headers = {} + else: + headers = self._normalize_headers(headers) + + if "user-agent" not in headers: + headers["user-agent"] = "Python-httplib2/%s (gzip)" % __version__ + + uri = iri2uri(uri) + + (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) + + conn_key = scheme + ":" + authority + conn = self.connections.get(conn_key) + if conn is None: + if not connection_type: + connection_type = SCHEME_TO_CONNECTION[scheme] + certs = list(self.certificates.iter(authority)) + if issubclass(connection_type, HTTPSConnectionWithTimeout): + if certs: + conn = self.connections[conn_key] = connection_type( + authority, + key_file=certs[0][0], + cert_file=certs[0][1], + timeout=self.timeout, + proxy_info=self.proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, + ) + else: + conn = self.connections[conn_key] = connection_type( + authority, + timeout=self.timeout, + proxy_info=self.proxy_info, + ca_certs=self.ca_certs, + disable_ssl_certificate_validation=self.disable_ssl_certificate_validation, + ) + else: + conn = self.connections[conn_key] = connection_type( + authority, timeout=self.timeout, proxy_info=self.proxy_info + ) + conn.set_debuglevel(debuglevel) + + if "range" not in headers and "accept-encoding" not in headers: + headers["accept-encoding"] = "gzip, deflate" + + info = email.message.Message() + cached_value = None + if self.cache: + cachekey = defrag_uri + cached_value = self.cache.get(cachekey) + if cached_value: + try: + info, content = cached_value.split(b"\r\n\r\n", 1) + info = email.message_from_bytes(info) + for k, v in info.items(): + if v.startswith("=?") and v.endswith("?="): + info.replace_header( + k, str(*email.header.decode_header(v)[0]) + ) + except (IndexError, ValueError): + self.cache.delete(cachekey) + cachekey = None + cached_value = None + else: + cachekey = None + + if ( + method in self.optimistic_concurrency_methods + and self.cache + and "etag" in info + and not self.ignore_etag + and "if-match" not in headers + ): + # http://www.w3.org/1999/04/Editing/ + headers["if-match"] = info["etag"] + + if method not in ["GET", "HEAD"] and self.cache and cachekey: + # RFC 2616 Section 13.10 + self.cache.delete(cachekey) + + # Check the vary header in the cache to see if this request + # matches what varies in the cache. + if method in ["GET", "HEAD"] and "vary" in info: + vary = info["vary"] + vary_headers = vary.lower().replace(" ", "").split(",") + for header in vary_headers: + key = "-varied-%s" % header + value = info[key] + if headers.get(header, None) != value: + cached_value = None + break + + if ( + cached_value + and method in ["GET", "HEAD"] + and self.cache + and "range" not in headers + ): + if "-x-permanent-redirect-url" in info: + # Should cached permanent redirects be counted in our redirection count? For now, yes. + if redirections <= 0: + raise RedirectLimit( + "Redirected more times than redirection_limit allows.", + {}, + "", + ) + (response, new_content) = self.request( + info["-x-permanent-redirect-url"], + method="GET", + headers=headers, + redirections=redirections - 1, + ) + response.previous = Response(info) + response.previous.fromcache = True + else: + # Determine our course of action: + # Is the cached entry fresh or stale? + # Has the client requested a non-cached response? + # + # There seems to be three possible answers: + # 1. [FRESH] Return the cache entry w/o doing a GET + # 2. [STALE] Do the GET (but add in cache validators if available) + # 3. [TRANSPARENT] Do a GET w/o any cache validators (Cache-Control: no-cache) on the request + entry_disposition = _entry_disposition(info, headers) + + if entry_disposition == "FRESH": + if not cached_value: + info["status"] = "504" + content = b"" + response = Response(info) + if cached_value: + response.fromcache = True + return (response, content) + + if entry_disposition == "STALE": + if ( + "etag" in info + and not self.ignore_etag + and not "if-none-match" in headers + ): + headers["if-none-match"] = info["etag"] + if "last-modified" in info and not "last-modified" in headers: + headers["if-modified-since"] = info["last-modified"] + elif entry_disposition == "TRANSPARENT": + pass + + (response, new_content) = self._request( + conn, + authority, + uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ) + + if response.status == 304 and method == "GET": + # Rewrite the cache entry with the new end-to-end headers + # Take all headers that are in response + # and overwrite their values in info. + # unless they are hop-by-hop, or are listed in the connection header. + + for key in _get_end2end_headers(response): + info[key] = response[key] + merged_response = Response(info) + if hasattr(response, "_stale_digest"): + merged_response._stale_digest = response._stale_digest + _updateCache( + headers, merged_response, content, self.cache, cachekey + ) + response = merged_response + response.status = 200 + response.fromcache = True + + elif response.status == 200: + content = new_content + else: + self.cache.delete(cachekey) + content = new_content + else: + cc = _parse_cache_control(headers) + if "only-if-cached" in cc: + info["status"] = "504" + response = Response(info) + content = b"" + else: + (response, content) = self._request( + conn, + authority, + uri, + request_uri, + method, + body, + headers, + redirections, + cachekey, + ) + except Exception as e: + is_timeout = isinstance(e, socket.timeout) + if is_timeout: + conn = self.connections.pop(conn_key, None) + if conn: + conn.close() + + if self.force_exception_to_status_code: + if isinstance(e, HttpLib2ErrorWithResponse): + response = e.response + content = e.content + response.status = 500 + response.reason = str(e) + elif isinstance(e, socket.timeout): + content = b"Request Timeout" + response = Response( + { + "content-type": "text/plain", + "status": "408", + "content-length": len(content), + } + ) + response.reason = "Request Timeout" + else: + content = str(e).encode("utf-8") + response = Response( + { + "content-type": "text/plain", + "status": "400", + "content-length": len(content), + } + ) + response.reason = "Bad Request" + else: + raise + + return (response, content) + + +class Response(dict): + """An object more like email.message than httplib.HTTPResponse.""" + + """Is this response from our local cache""" + fromcache = False + """HTTP protocol version used by server. + + 10 for HTTP/1.0, 11 for HTTP/1.1. + """ + version = 11 + + "Status code returned by server. " + status = 200 + """Reason phrase returned by server.""" + reason = "Ok" + + previous = None + + def __init__(self, info): + # info is either an email.message or + # an httplib.HTTPResponse object. + if isinstance(info, http.client.HTTPResponse): + for key, value in info.getheaders(): + key = key.lower() + prev = self.get(key) + if prev is not None: + value = ", ".join((prev, value)) + self[key] = value + self.status = info.status + self["status"] = str(self.status) + self.reason = info.reason + self.version = info.version + elif isinstance(info, email.message.Message): + for key, value in list(info.items()): + self[key.lower()] = value + self.status = int(self["status"]) + else: + for key, value in info.items(): + self[key.lower()] = value + self.status = int(self.get("status", self.status)) + + def __getattr__(self, name): + if name == "dict": + return self + else: + raise AttributeError(name) \ No newline at end of file diff --git a/shotgun_api3/lib/httplib2/python3/cacerts.txt b/shotgun_api3/lib/httplib2/python3/cacerts.txt new file mode 100644 index 000000000..a2a9833de --- /dev/null +++ b/shotgun_api3/lib/httplib2/python3/cacerts.txt @@ -0,0 +1,2196 @@ +# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Label: "GTE CyberTrust Global Root" +# Serial: 421 +# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db +# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 +# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD +VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv +bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv +b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH +iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS +r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 +04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r +GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 +3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P +lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Server CA" +# Serial: 1 +# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d +# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c +# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Premium Server CA" +# Serial: 1 +# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a +# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a +# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +# Issuer: O=Equifax OU=Equifax Secure Certificate Authority +# Subject: O=Equifax OU=Equifax Secure Certificate Authority +# Label: "Equifax Secure CA" +# Serial: 903804111 +# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 +# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a +# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy +dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 +MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx +dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f +BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A +cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ +MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm +aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw +ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj +IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y +7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh +1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Label: "Verisign Class 3 Public Primary Certification Authority - G2" +# Serial: 167285380242319648451154478808036881606 +# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 +# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f +# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Label: "GlobalSign Root CA - R2" +# Serial: 4835703278459682885658125 +# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 +# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe +# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Label: "ValiCert Class 1 VA" +# Serial: 1 +# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb +# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e +# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy +NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y +LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ +TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y +TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 +LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW +I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw +nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Label: "ValiCert Class 2 VA" +# Serial: 1 +# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 +# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 +# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Label: "RSA Root Certificate 1" +# Serial: 1 +# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 +# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb +# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy +NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD +cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs +2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY +JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE +Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ +n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A +PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 3 Public Primary Certification Authority - G3" +# Serial: 206684696279472310254277870180966723415 +# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 +# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 +# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 4 Public Primary Certification Authority - G3" +# Serial: 314531972711909413743075096039378935511 +# MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df +# SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d +# SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Secure Server CA" +# Serial: 927650371 +# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee +# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 +# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946059622 +# MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc +# SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe +# SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy +MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA +vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G +CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA +WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ +h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 +f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN +B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy +vUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure Global eBusiness CA" +# Serial: 1 +# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc +# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 +# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure eBusiness CA 1" +# Serial: 4 +# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d +# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 +# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +# Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Label: "Equifax Secure eBusiness CA 2" +# Serial: 930140085 +# MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca +# SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc +# SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj +dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 +NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD +VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G +vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ +BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl +IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw +NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq +y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy +0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 +E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Low-Value Services Root" +# Serial: 1 +# MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc +# SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d +# SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw +MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD +VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul +CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n +tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl +dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch +PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC ++Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O +BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk +ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X +7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz +43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl +pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA +WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Label: "AddTrust External Root" +# Serial: 1 +# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f +# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 +# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Public Services Root" +# Serial: 1 +# MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f +# SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 +# SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx +MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB +ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV +BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV +6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX +GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP +dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH +1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF +62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW +BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL +MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU +cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv +b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 +IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ +iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh +4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm +XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Qualified Certificates Root" +# Serial: 1 +# MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb +# SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf +# SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 +MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK +EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh +BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq +xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G +87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i +2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U +WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 +0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G +A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr +pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL +ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm +aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv +hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm +hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 +P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y +iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no +xqE= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. +# Label: "GeoTrust Global CA" +# Serial: 144470 +# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 +# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 +# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Global CA 2" +# Serial: 1 +# MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 +# SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d +# SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs +IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A +PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 +Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL +TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL +5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 +S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe +2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap +EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td +EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv +/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN +A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 +abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF +I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz +4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Label: "GeoTrust Universal CA" +# Serial: 1 +# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 +# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 +# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy +c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 +IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV +VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 +cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT +QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh +F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v +c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w +mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd +VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX +teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ +f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe +Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ +nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY +MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG +9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX +IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn +ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z +uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN +Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja +QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW +koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 +ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt +DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm +bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Universal CA 2" +# Serial: 1 +# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 +# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 +# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy +c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD +VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 +c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 +WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG +FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq +XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL +se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb +KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd +IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 +y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt +hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc +QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 +Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV +HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ +KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ +L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr +Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo +ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY +T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz +GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m +1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV +OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH +6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX +QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Label: "America Online Root Certification Authority 1" +# Serial: 1 +# MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e +# SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a +# SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3 +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk +hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym +1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW +OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb +2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko +O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU +AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF +Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb +LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir +oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C +MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Label: "America Online Root Certification Authority 2" +# Serial: 1 +# MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf +# SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84 +# SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC +206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci +KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 +JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 +BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e +Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B +PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 +Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq +Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ +o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 ++L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj +FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn +xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 +LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc +obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 +CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe +IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA +DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F +AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX +Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb +AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl +Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw +RY8mkaKO/qk= +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=Secure Certificate Services O=Comodo CA Limited +# Subject: CN=Secure Certificate Services O=Comodo CA Limited +# Label: "Comodo Secure Services root" +# Serial: 1 +# MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd +# SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 +# SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp +ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow +fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV +BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM +cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S +HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 +CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk +3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz +6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV +HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv +Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw +Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww +DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 +5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI +gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ +aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl +izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= +-----END CERTIFICATE----- + +# Issuer: CN=Trusted Certificate Services O=Comodo CA Limited +# Subject: CN=Trusted Certificate Services O=Comodo CA Limited +# Label: "Comodo Trusted Services root" +# Serial: 1 +# MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 +# SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd +# SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 +aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla +MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD +VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW +fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt +TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL +fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW +1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 +kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G +A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v +ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo +dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu +Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ +HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS +jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ +xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn +dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +# Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN DATACorp SGC Root CA" +# Serial: 91374294542884689855167577680241077609 +# MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 +# SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 +# SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB +kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw +IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG +EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD +VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu +dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 +E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ +D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK +4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq +lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW +bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB +o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT +MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js +LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr +BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB +AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj +j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH +KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv +2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 +mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +# Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN USERFirst Hardware Root CA" +# Serial: 91374294542884704022267039221184531197 +# MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 +# SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 +# SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG +A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe +MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v +d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh +cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn +0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ +M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a +MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd +oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI +DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy +oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 +dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy +bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF +BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli +CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE +CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t +3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS +KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 1 +# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 +# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f +# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j +ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js +LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM +BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy +dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh +cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh +YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg +dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp +bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ +YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT +TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ +9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 +jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW +FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz +ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 +ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L +EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu +L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC +O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V +um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh +NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Label: "GeoTrust Primary Certification Authority" +# Serial: 32798226551256963324313806436981982369 +# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf +# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 +# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx +MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 +AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA +ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 +7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W +kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI +mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ +KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 +6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl +4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K +oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj +UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU +AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA" +# Serial: 69529181992039203566298953787712940909 +# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 +# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 +# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" +# Serial: 33037644167568058970164719475676101450 +# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c +# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 +# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Label: "Network Solutions Certificate Authority" +# Serial: 116697915152937497490437556386812487904 +# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e +# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce +# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi +MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV +UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO +ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz +c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP +OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl +mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF +BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 +qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw +gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu +bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp +dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 +6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ +h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH +/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN +pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Label: "TC TrustCenter Class 2 CA II" +# Serial: 941389028203453866782103406992443 +# MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23 +# SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e +# SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4 +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf +tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg +uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J +XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK +8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 +5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 +kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS +GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt +ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 +au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV +hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI +dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Label: "TC TrustCenter Class 3 CA II" +# Serial: 1506523511417715638772220530020799 +# MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e +# SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5 +# SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW +Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q +Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2 +1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq +ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1 +Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX +XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN +irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8 +TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6 +g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB +95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj +S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA I" +# Serial: 601024842042189035295619584734726 +# MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c +# SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3 +# SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx +MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg +R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD +VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR +JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T +fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu +jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z +wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ +fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD +VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G +CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 +7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn +8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs +ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ +2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc +# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc +# Label: "Cybertrust Global Root" +# Serial: 4835703278459682877484360 +# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 +# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 +# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG +A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh +bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE +ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS +b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 +7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS +J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y +HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP +t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz +FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY +XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw +hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js +MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA +A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj +Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx +XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o +omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc +A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G3" +# Serial: 28809105769928564313984085209975885599 +# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 +# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd +# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G2" +# Serial: 71758320672825410020661621085256472406 +# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f +# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 +# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp +IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi +BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw +MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig +YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v +dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ +BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 +papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K +DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 +KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox +XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G3" +# Serial: 127614157056681299805556476275995414779 +# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 +# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 +# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa +Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl +LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u +MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm +gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 +YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf +b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 +9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S +zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk +OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA +2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW +oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c +KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM +m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu +MdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G2" +# Serial: 80682863203381065782177908751794619243 +# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a +# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 +# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL +MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj +KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 +MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw +NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV +BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL +So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal +tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG +CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT +qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz +rD6ogRLQy7rQkgu2npaqBA+K +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Universal Root Certification Authority" +# Serial: 85209574734084581917763752644031726877 +# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 +# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 +# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" +# Serial: 63143484348153506665311985501458640051 +# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 +# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a +# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA III" +# Serial: 2010889993983507346460533407902964 +# MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b +# SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87 +# SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy +MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl +ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm +BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF +5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv +DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v +zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT +yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj +dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh +MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI +4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz +dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY +aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G +DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH +LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 45 +# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 +# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 +# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul +F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC +ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w +ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk +aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 +YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg +c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 +d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG +CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF +wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS +Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst +0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc +pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl +CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF +P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK +1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm +KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ +8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm +fyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Label: "StartCom Certification Authority G2" +# Serial: 59 +# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 +# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 +# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 +OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG +A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ +JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD +vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo +D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ +Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW +RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK +HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN +nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM +0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i +UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 +Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg +TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL +BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX +UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl +6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK +9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ +HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI +wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY +XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l +IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo +hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr +so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +# Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3 +# Subject: O=Digital Signature Trust Co., CN=DST Root CA X3 +# Label: "IdenTrust DST Root CA X3" +# Serial: 44AFB080D6A327BA893039862EF8406B +# MD5 Fingerprint: 41:03:52:DC:0F:F7:50:1B:16:F0:02:8E:BA:6F:45:C5 +# SHA1 Fingerprint: DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13 +# SHA256 Fingerprint: 06:87:26:03:31:A7:24:03:D9:09:F1:05:E6:9B:CF:0D:32:E1:BD:24:93:FF:C6:D9:20:6D:11:BC:D6:77:07:39 +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow +PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD +Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O +rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq +OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b +xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw +7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD +aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG +SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 +ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr +AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz +R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 +JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo +Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +# Subject: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US +# Serial: 33af1e6a711a9a0bb2864b11d09fae5 +# MD5 Fingerprint: E4:A6:8A:C8:54:AC:52:42:46:0A:FD:72:48:1B:2A:44 +# SHA1 Fingerprint: DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4 +# SHA256 Fingerprint: CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- diff --git a/shotgun_api3/lib/httplib2/python3/certs.py b/shotgun_api3/lib/httplib2/python3/certs.py new file mode 100644 index 000000000..f8fcdd8eb --- /dev/null +++ b/shotgun_api3/lib/httplib2/python3/certs.py @@ -0,0 +1,42 @@ +"""Utilities for certificate management.""" + +import os + +certifi_available = False +certifi_where = None +try: + from certifi import where as certifi_where + certifi_available = True +except ImportError: + pass + +custom_ca_locater_available = False +custom_ca_locater_where = None +try: + from ca_certs_locater import get as custom_ca_locater_where + custom_ca_locater_available = True +except ImportError: + pass + + +BUILTIN_CA_CERTS = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "cacerts.txt" +) + + +def where(): + env = os.environ.get("HTTPLIB2_CA_CERTS") + if env is not None: + if os.path.isfile(env): + return env + else: + raise RuntimeError("Environment variable HTTPLIB2_CA_CERTS not a valid file") + if custom_ca_locater_available: + return custom_ca_locater_where() + if certifi_available: + return certifi_where() + return BUILTIN_CA_CERTS + + +if __name__ == "__main__": + print(where()) \ No newline at end of file diff --git a/shotgun_api3/lib/httplib2/python3/iri2uri.py b/shotgun_api3/lib/httplib2/python3/iri2uri.py new file mode 100644 index 000000000..439de7342 --- /dev/null +++ b/shotgun_api3/lib/httplib2/python3/iri2uri.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +"""Converts an IRI to a URI.""" + +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = [] +__version__ = "1.0.0" +__license__ = "MIT" + +import urllib.parse + +# Convert an IRI to a URI following the rules in RFC 3987 +# +# The characters we need to enocde and escape are defined in the spec: +# +# iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD +# ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF +# / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD +# / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD +# / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD +# / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD +# / %xD0000-DFFFD / %xE1000-EFFFD + +escape_range = [ + (0xA0, 0xD7FF), + (0xE000, 0xF8FF), + (0xF900, 0xFDCF), + (0xFDF0, 0xFFEF), + (0x10000, 0x1FFFD), + (0x20000, 0x2FFFD), + (0x30000, 0x3FFFD), + (0x40000, 0x4FFFD), + (0x50000, 0x5FFFD), + (0x60000, 0x6FFFD), + (0x70000, 0x7FFFD), + (0x80000, 0x8FFFD), + (0x90000, 0x9FFFD), + (0xA0000, 0xAFFFD), + (0xB0000, 0xBFFFD), + (0xC0000, 0xCFFFD), + (0xD0000, 0xDFFFD), + (0xE1000, 0xEFFFD), + (0xF0000, 0xFFFFD), + (0x100000, 0x10FFFD), +] + + +def encode(c): + retval = c + i = ord(c) + for low, high in escape_range: + if i < low: + break + if i >= low and i <= high: + retval = "".join(["%%%2X" % o for o in c.encode("utf-8")]) + break + return retval + + +def iri2uri(uri): + """Convert an IRI to a URI. Note that IRIs must be + passed in a unicode strings. That is, do not utf-8 encode + the IRI before passing it into the function.""" + if isinstance(uri, str): + (scheme, authority, path, query, fragment) = urllib.parse.urlsplit(uri) + authority = authority.encode("idna").decode("utf-8") + # For each character in 'ucschar' or 'iprivate' + # 1. encode as utf-8 + # 2. then %-encode each octet of that utf-8 + uri = urllib.parse.urlunsplit((scheme, authority, path, query, fragment)) + uri = "".join([encode(c) for c in uri]) + return uri + + +if __name__ == "__main__": + import unittest + + class Test(unittest.TestCase): + def test_uris(self): + """Test that URIs are invariant under the transformation.""" + invariant = [ + "ftp://ftp.is.co.za/rfc/rfc1808.txt", + "http://www.ietf.org/rfc/rfc2396.txt", + "ldap://[2001:db8::7]/c=GB?objectClass?one", + "mailto:John.Doe@example.com", + "news:comp.infosystems.www.servers.unix", + "tel:+1-816-555-1212", + "telnet://192.0.2.16:80/", + "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", + ] + for uri in invariant: + self.assertEqual(uri, iri2uri(uri)) + + def test_iri(self): + """Test that the right type of escaping is done for each part of the URI.""" + self.assertEqual( + "http://xn--o3h.com/%E2%98%84", + iri2uri("http://\N{COMET}.com/\N{COMET}"), + ) + self.assertEqual( + "http://bitworking.org/?fred=%E2%98%84", + iri2uri("http://bitworking.org/?fred=\N{COMET}"), + ) + self.assertEqual( + "http://bitworking.org/#%E2%98%84", + iri2uri("http://bitworking.org/#\N{COMET}"), + ) + self.assertEqual("#%E2%98%84", iri2uri("#\N{COMET}")) + self.assertEqual( + "/fred?bar=%E2%98%9A#%E2%98%84", + iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}"), + ) + self.assertEqual( + "/fred?bar=%E2%98%9A#%E2%98%84", + iri2uri(iri2uri("/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}")), + ) + self.assertNotEqual( + "/fred?bar=%E2%98%9A#%E2%98%84", + iri2uri( + "/fred?bar=\N{BLACK LEFT POINTING INDEX}#\N{COMET}".encode("utf-8") + ), + ) + + unittest.main() \ No newline at end of file diff --git a/shotgun_api3/lib/httplib2/python3/socks.py b/shotgun_api3/lib/httplib2/python3/socks.py new file mode 100644 index 000000000..d5e5433a8 --- /dev/null +++ b/shotgun_api3/lib/httplib2/python3/socks.py @@ -0,0 +1,516 @@ +"""SocksiPy - Python SOCKS module. + +Version 1.00 + +Copyright 2006 Dan-Haim. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. Neither the name of Dan Haim nor the names of his contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY DAN HAIM "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL DAN HAIM OR HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE. + +This module provides a standard socket-like interface for Python +for tunneling connections through SOCKS proxies. + +Minor modifications made by Christopher Gilbert (http://motomastyle.com/) for +use in PyLoris (http://pyloris.sourceforge.net/). + +Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/) +mainly to merge bug fixes found in Sourceforge. +""" + +import base64 +import socket +import struct +import sys + +if getattr(socket, "socket", None) is None: + raise ImportError("socket.socket missing, proxy support unusable") + +PROXY_TYPE_SOCKS4 = 1 +PROXY_TYPE_SOCKS5 = 2 +PROXY_TYPE_HTTP = 3 +PROXY_TYPE_HTTP_NO_TUNNEL = 4 + +_defaultproxy = None +_orgsocket = socket.socket + + +class ProxyError(Exception): + pass + + +class GeneralProxyError(ProxyError): + pass + + +class Socks5AuthError(ProxyError): + pass + + +class Socks5Error(ProxyError): + pass + + +class Socks4Error(ProxyError): + pass + + +class HTTPError(ProxyError): + pass + + +_generalerrors = ( + "success", + "invalid data", + "not connected", + "not available", + "bad proxy type", + "bad input", +) + +_socks5errors = ( + "succeeded", + "general SOCKS server failure", + "connection not allowed by ruleset", + "Network unreachable", + "Host unreachable", + "Connection refused", + "TTL expired", + "Command not supported", + "Address type not supported", + "Unknown error", +) + +_socks5autherrors = ( + "succeeded", + "authentication is required", + "all offered authentication methods were rejected", + "unknown username or invalid password", + "unknown error", +) + +_socks4errors = ( + "request granted", + "request rejected or failed", + "request rejected because SOCKS server cannot connect to identd on the client", + "request rejected because the client program and identd report different " + "user-ids", + "unknown error", +) + + +def setdefaultproxy( + proxytype=None, addr=None, port=None, rdns=True, username=None, password=None +): + """setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets a default proxy which all further socksocket objects will use, + unless explicitly changed. + """ + global _defaultproxy + _defaultproxy = (proxytype, addr, port, rdns, username, password) + + +def wrapmodule(module): + """wrapmodule(module) + + Attempts to replace a module's socket library with a SOCKS socket. Must set + a default proxy using setdefaultproxy(...) first. + This will only work on modules that import socket directly into the + namespace; + most of the Python Standard Library falls into this category. + """ + if _defaultproxy != None: + module.socket.socket = socksocket + else: + raise GeneralProxyError((4, "no proxy specified")) + + +class socksocket(socket.socket): + """socksocket([family[, type[, proto]]]) -> socket object + Open a SOCKS enabled socket. The parameters are the same as + those of the standard socket init. In order for SOCKS to work, + you must specify family=AF_INET, type=SOCK_STREAM and proto=0. + """ + + def __init__( + self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, _sock=None + ): + _orgsocket.__init__(self, family, type, proto, _sock) + if _defaultproxy != None: + self.__proxy = _defaultproxy + else: + self.__proxy = (None, None, None, None, None, None) + self.__proxysockname = None + self.__proxypeername = None + self.__httptunnel = True + + def __recvall(self, count): + """__recvall(count) -> data + Receive EXACTLY the number of bytes requested from the socket. + Blocks until the required number of bytes have been received. + """ + data = self.recv(count) + while len(data) < count: + d = self.recv(count - len(data)) + if not d: + raise GeneralProxyError((0, "connection closed unexpectedly")) + data = data + d + return data + + def sendall(self, content, *args): + """ override socket.socket.sendall method to rewrite the header + for non-tunneling proxies if needed + """ + if not self.__httptunnel: + content = self.__rewriteproxy(content) + return super(socksocket, self).sendall(content, *args) + + def __rewriteproxy(self, header): + """ rewrite HTTP request headers to support non-tunneling proxies + (i.e. those which do not support the CONNECT method). + This only works for HTTP (not HTTPS) since HTTPS requires tunneling. + """ + host, endpt = None, None + hdrs = header.split("\r\n") + for hdr in hdrs: + if hdr.lower().startswith("host:"): + host = hdr + elif hdr.lower().startswith("get") or hdr.lower().startswith("post"): + endpt = hdr + if host and endpt: + hdrs.remove(host) + hdrs.remove(endpt) + host = host.split(" ")[1] + endpt = endpt.split(" ") + if self.__proxy[4] != None and self.__proxy[5] != None: + hdrs.insert(0, self.__getauthheader()) + hdrs.insert(0, "Host: %s" % host) + hdrs.insert(0, "%s http://%s%s %s" % (endpt[0], host, endpt[1], endpt[2])) + return "\r\n".join(hdrs) + + def __getauthheader(self): + username = self.__proxy[4] + password = self.__proxy[5] + if isinstance(username, str): + username = username.encode() + if isinstance(password, str): + password = password.encode() + auth = username + b":" + password + return "Proxy-Authorization: Basic " + base64.b64encode(auth).decode() + + def setproxy( + self, + proxytype=None, + addr=None, + port=None, + rdns=True, + username=None, + password=None, + headers=None, + ): + """setproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + + Sets the proxy to be used. + proxytype - The type of the proxy to be used. Three types + are supported: PROXY_TYPE_SOCKS4 (including socks4a), + PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP + addr - The address of the server (IP or DNS). + port - The port of the server. Defaults to 1080 for SOCKS + servers and 8080 for HTTP proxy servers. + rdns - Should DNS queries be preformed on the remote side + (rather than the local side). The default is True. + Note: This has no effect with SOCKS4 servers. + username - Username to authenticate with to the server. + The default is no authentication. + password - Password to authenticate with to the server. + Only relevant when username is also provided. + headers - Additional or modified headers for the proxy connect + request. + """ + self.__proxy = (proxytype, addr, port, rdns, username, password, headers) + + def __negotiatesocks5(self, destaddr, destport): + """__negotiatesocks5(self,destaddr,destport) + Negotiates a connection through a SOCKS5 server. + """ + # First we'll send the authentication packages we support. + if (self.__proxy[4] != None) and (self.__proxy[5] != None): + # The username/password details were supplied to the + # setproxy method so we support the USERNAME/PASSWORD + # authentication (in addition to the standard none). + self.sendall(struct.pack("BBBB", 0x05, 0x02, 0x00, 0x02)) + else: + # No username/password were entered, therefore we + # only support connections with no authentication. + self.sendall(struct.pack("BBB", 0x05, 0x01, 0x00)) + # We'll receive the server's response to determine which + # method was selected + chosenauth = self.__recvall(2) + if chosenauth[0:1] != chr(0x05).encode(): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + # Check the chosen authentication method + if chosenauth[1:2] == chr(0x00).encode(): + # No authentication is required + pass + elif chosenauth[1:2] == chr(0x02).encode(): + # Okay, we need to perform a basic username/password + # authentication. + self.sendall( + chr(0x01).encode() + + chr(len(self.__proxy[4])) + + self.__proxy[4] + + chr(len(self.__proxy[5])) + + self.__proxy[5] + ) + authstat = self.__recvall(2) + if authstat[0:1] != chr(0x01).encode(): + # Bad response + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if authstat[1:2] != chr(0x00).encode(): + # Authentication failed + self.close() + raise Socks5AuthError((3, _socks5autherrors[3])) + # Authentication succeeded + else: + # Reaching here is always bad + self.close() + if chosenauth[1] == chr(0xFF).encode(): + raise Socks5AuthError((2, _socks5autherrors[2])) + else: + raise GeneralProxyError((1, _generalerrors[1])) + # Now we can request the actual connection + req = struct.pack("BBB", 0x05, 0x01, 0x00) + # If the given destination address is an IP address, we'll + # use the IPv4 address request even if remote resolving was specified. + try: + ipaddr = socket.inet_aton(destaddr) + req = req + chr(0x01).encode() + ipaddr + except socket.error: + # Well it's not an IP number, so it's probably a DNS name. + if self.__proxy[3]: + # Resolve remotely + ipaddr = None + req = ( + req + + chr(0x03).encode() + + chr(len(destaddr)).encode() + + destaddr.encode() + ) + else: + # Resolve locally + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + req = req + chr(0x01).encode() + ipaddr + req = req + struct.pack(">H", destport) + self.sendall(req) + # Get the response + resp = self.__recvall(4) + if resp[0:1] != chr(0x05).encode(): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + elif resp[1:2] != chr(0x00).encode(): + # Connection failed + self.close() + if ord(resp[1:2]) <= 8: + raise Socks5Error((ord(resp[1:2]), _socks5errors[ord(resp[1:2])])) + else: + raise Socks5Error((9, _socks5errors[9])) + # Get the bound address/port + elif resp[3:4] == chr(0x01).encode(): + boundaddr = self.__recvall(4) + elif resp[3:4] == chr(0x03).encode(): + resp = resp + self.recv(1) + boundaddr = self.__recvall(ord(resp[4:5])) + else: + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + boundport = struct.unpack(">H", self.__recvall(2))[0] + self.__proxysockname = (boundaddr, boundport) + if ipaddr != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) + else: + self.__proxypeername = (destaddr, destport) + + def getproxysockname(self): + """getsockname() -> address info + Returns the bound IP address and port number at the proxy. + """ + return self.__proxysockname + + def getproxypeername(self): + """getproxypeername() -> address info + Returns the IP and port number of the proxy. + """ + return _orgsocket.getpeername(self) + + def getpeername(self): + """getpeername() -> address info + Returns the IP address and port number of the destination + machine (note: getproxypeername returns the proxy) + """ + return self.__proxypeername + + def __negotiatesocks4(self, destaddr, destport): + """__negotiatesocks4(self,destaddr,destport) + Negotiates a connection through a SOCKS4 server. + """ + # Check if the destination address provided is an IP address + rmtrslv = False + try: + ipaddr = socket.inet_aton(destaddr) + except socket.error: + # It's a DNS name. Check where it should be resolved. + if self.__proxy[3]: + ipaddr = struct.pack("BBBB", 0x00, 0x00, 0x00, 0x01) + rmtrslv = True + else: + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + # Construct the request packet + req = struct.pack(">BBH", 0x04, 0x01, destport) + ipaddr + # The username parameter is considered userid for SOCKS4 + if self.__proxy[4] != None: + req = req + self.__proxy[4] + req = req + chr(0x00).encode() + # DNS name if remote resolving is required + # NOTE: This is actually an extension to the SOCKS4 protocol + # called SOCKS4A and may not be supported in all cases. + if rmtrslv: + req = req + destaddr + chr(0x00).encode() + self.sendall(req) + # Get the response from the server + resp = self.__recvall(8) + if resp[0:1] != chr(0x00).encode(): + # Bad data + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if resp[1:2] != chr(0x5A).encode(): + # Server returned an error + self.close() + if ord(resp[1:2]) in (91, 92, 93): + self.close() + raise Socks4Error((ord(resp[1:2]), _socks4errors[ord(resp[1:2]) - 90])) + else: + raise Socks4Error((94, _socks4errors[4])) + # Get the bound address/port + self.__proxysockname = ( + socket.inet_ntoa(resp[4:]), + struct.unpack(">H", resp[2:4])[0], + ) + if rmtrslv != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) + else: + self.__proxypeername = (destaddr, destport) + + def __negotiatehttp(self, destaddr, destport): + """__negotiatehttp(self,destaddr,destport) + Negotiates a connection through an HTTP server. + """ + # If we need to resolve locally, we do this now + if not self.__proxy[3]: + addr = socket.gethostbyname(destaddr) + else: + addr = destaddr + headers = ["CONNECT ", addr, ":", str(destport), " HTTP/1.1\r\n"] + wrote_host_header = False + wrote_auth_header = False + if self.__proxy[6] != None: + for key, val in self.__proxy[6].iteritems(): + headers += [key, ": ", val, "\r\n"] + wrote_host_header = key.lower() == "host" + wrote_auth_header = key.lower() == "proxy-authorization" + if not wrote_host_header: + headers += ["Host: ", destaddr, "\r\n"] + if not wrote_auth_header: + if self.__proxy[4] != None and self.__proxy[5] != None: + headers += [self.__getauthheader(), "\r\n"] + headers.append("\r\n") + self.sendall("".join(headers).encode()) + # We read the response until we get the string "\r\n\r\n" + resp = self.recv(1) + while resp.find("\r\n\r\n".encode()) == -1: + resp = resp + self.recv(1) + # We just need the first line to check if the connection + # was successful + statusline = resp.splitlines()[0].split(" ".encode(), 2) + if statusline[0] not in ("HTTP/1.0".encode(), "HTTP/1.1".encode()): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + try: + statuscode = int(statusline[1]) + except ValueError: + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if statuscode != 200: + self.close() + raise HTTPError((statuscode, statusline[2])) + self.__proxysockname = ("0.0.0.0", 0) + self.__proxypeername = (addr, destport) + + def connect(self, destpair): + """connect(self, despair) + Connects to the specified destination through a proxy. + destpar - A tuple of the IP/DNS address and the port number. + (identical to socket's connect). + To select the proxy server use setproxy(). + """ + # Do a minimal input check first + if ( + (not type(destpair) in (list, tuple)) + or (len(destpair) < 2) + or (not isinstance(destpair[0], (str, bytes))) + or (type(destpair[1]) != int) + ): + raise GeneralProxyError((5, _generalerrors[5])) + if self.__proxy[0] == PROXY_TYPE_SOCKS5: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + _orgsocket.connect(self, (self.__proxy[1], portnum)) + self.__negotiatesocks5(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_SOCKS4: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + _orgsocket.connect(self, (self.__proxy[1], portnum)) + self.__negotiatesocks4(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_HTTP: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 8080 + _orgsocket.connect(self, (self.__proxy[1], portnum)) + self.__negotiatehttp(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_HTTP_NO_TUNNEL: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 8080 + _orgsocket.connect(self, (self.__proxy[1], portnum)) + if destpair[1] == 443: + self.__negotiatehttp(destpair[0], destpair[1]) + else: + self.__httptunnel = False + elif self.__proxy[0] == None: + _orgsocket.connect(self, (destpair[0], destpair[1])) + else: + raise GeneralProxyError((4, _generalerrors[4])) \ No newline at end of file diff --git a/shotgun_api3/lib/mimetypes.py b/shotgun_api3/lib/mimetypes.py index a39b543c4..8416aa630 100644 --- a/shotgun_api3/lib/mimetypes.py +++ b/shotgun_api3/lib/mimetypes.py @@ -23,18 +23,19 @@ read_mime_types(file) -- parse one file, return a dictionary or None """ +from __future__ import print_function import os import sys import posixpath -import urllib +from .six.moves import urllib, range try: - import _winreg + from .six.moves import winreg except ImportError: - _winreg = None + winreg = None __all__ = [ - "guess_type","guess_extension","guess_all_extensions", - "add_type","read_mime_types","init" + "guess_type", "guess_extension", "guess_all_extensions", + "add_type", "read_mime_types", "init" ] knownfiles = [ @@ -47,7 +48,7 @@ "/usr/local/lib/netscape/mime.types", "/usr/local/etc/httpd/conf/mime.types", # Apache 1.2 "/usr/local/etc/mime.types", # Apache 1.3 - ] +] inited = False _db = None @@ -66,7 +67,7 @@ def __init__(self, filenames=(), strict=True): init() self.encodings_map = encodings_map.copy() self.suffix_map = suffix_map.copy() - self.types_map = ({}, {}) # dict for (non-strict, strict) + self.types_map = ({}, {}) # dict for (non-strict, strict) self.types_map_inv = ({}, {}) for (ext, type) in types_map.items(): self.add_type(type, ext, True) @@ -111,7 +112,7 @@ def guess_type(self, url, strict=True): Optional `strict' argument when False adds a bunch of commonly found, but non-standard types. """ - scheme, url = urllib.splittype(url) + scheme, url = urllib.parse.splittype(url) if scheme == 'data': # syntax of data URLs: # dataurl := "data:" [ mediatype ] [ ";base64" ] "," data @@ -235,14 +236,14 @@ def read_windows_registry(self, strict=True): """ # Windows only - if not _winreg: + if not winreg: return def enum_types(mimedb): i = 0 while True: try: - ctype = _winreg.EnumKey(mimedb, i) + ctype = winreg.EnumKey(mimedb, i) except EnvironmentError: break else: @@ -251,17 +252,17 @@ def enum_types(mimedb): i += 1 default_encoding = sys.getdefaultencoding() - with _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, '') as hkcr: + with winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, '') as hkcr: for subkeyname in enum_types(hkcr): try: - with _winreg.OpenKey(hkcr, subkeyname) as subkey: + with winreg.OpenKey(hkcr, subkeyname) as subkey: # Only check file extensions if not subkeyname.startswith("."): continue # raises EnvironmentError if no 'Content Type' value - mimetype, datatype = _winreg.QueryValueEx( + mimetype, datatype = winreg.QueryValueEx( subkey, 'Content Type') - if datatype != _winreg.REG_SZ: + if datatype != winreg.REG_SZ: continue try: mimetype = mimetype.encode(default_encoding) @@ -271,6 +272,7 @@ def enum_types(mimedb): except EnvironmentError: continue + def guess_type(url, strict=True): """Guess the type of a file based on its URL. @@ -311,6 +313,7 @@ def guess_all_extensions(type, strict=True): init() return _db.guess_all_extensions(type, strict) + def guess_extension(type, strict=True): """Guess the extension for a file based on its MIME type. @@ -327,6 +330,7 @@ def guess_extension(type, strict=True): init() return _db.guess_extension(type, strict) + def add_type(type, ext, strict=True): """Add a mapping between a type and an extension. @@ -350,7 +354,7 @@ def init(files=None): inited = True # so that MimeTypes.__init__() doesn't call us again db = MimeTypes() if files is None: - if _winreg: + if winreg: db.read_windows_registry() files = knownfiles for file in files: @@ -387,14 +391,14 @@ def _default_mime_types(): '.tz': '.tar.gz', '.tbz2': '.tar.bz2', '.txz': '.tar.xz', - } + } encodings_map = { '.gz': 'gzip', '.Z': 'compress', '.bz2': 'bzip2', '.xz': 'xz', - } + } # Before adding new types, make sure they are either registered with IANA, # at http://www.isi.edu/in-notes/iana/assignments/media-types @@ -402,147 +406,147 @@ def _default_mime_types(): # If you add to these, please keep them sorted! types_map = { - '.a' : 'application/octet-stream', - '.ai' : 'application/postscript', - '.aif' : 'audio/x-aiff', - '.aifc' : 'audio/x-aiff', - '.aiff' : 'audio/x-aiff', - '.au' : 'audio/basic', - '.avi' : 'video/x-msvideo', - '.bat' : 'text/plain', - '.bcpio' : 'application/x-bcpio', - '.bin' : 'application/octet-stream', - '.bmp' : 'image/x-ms-bmp', - '.c' : 'text/plain', + '.a': 'application/octet-stream', + '.ai': 'application/postscript', + '.aif': 'audio/x-aiff', + '.aifc': 'audio/x-aiff', + '.aiff': 'audio/x-aiff', + '.au': 'audio/basic', + '.avi': 'video/x-msvideo', + '.bat': 'text/plain', + '.bcpio': 'application/x-bcpio', + '.bin': 'application/octet-stream', + '.bmp': 'image/x-ms-bmp', + '.c': 'text/plain', # Duplicates :( - '.cdf' : 'application/x-cdf', - '.cdf' : 'application/x-netcdf', - '.cpio' : 'application/x-cpio', - '.csh' : 'application/x-csh', - '.css' : 'text/css', - '.dll' : 'application/octet-stream', - '.doc' : 'application/msword', - '.dot' : 'application/msword', - '.dvi' : 'application/x-dvi', - '.eml' : 'message/rfc822', - '.eps' : 'application/postscript', - '.etx' : 'text/x-setext', - '.exe' : 'application/octet-stream', - '.gif' : 'image/gif', - '.gtar' : 'application/x-gtar', - '.h' : 'text/plain', - '.hdf' : 'application/x-hdf', - '.htm' : 'text/html', - '.html' : 'text/html', - '.ico' : 'image/vnd.microsoft.icon', - '.ief' : 'image/ief', - '.jpe' : 'image/jpeg', - '.jpeg' : 'image/jpeg', - '.jpg' : 'image/jpeg', - '.js' : 'application/javascript', - '.ksh' : 'text/plain', - '.latex' : 'application/x-latex', - '.m1v' : 'video/mpeg', - '.man' : 'application/x-troff-man', - '.me' : 'application/x-troff-me', - '.mht' : 'message/rfc822', - '.mhtml' : 'message/rfc822', - '.mif' : 'application/x-mif', - '.mov' : 'video/quicktime', - '.movie' : 'video/x-sgi-movie', - '.mp2' : 'audio/mpeg', - '.mp3' : 'audio/mpeg', - '.mp4' : 'video/mp4', - '.mpa' : 'video/mpeg', - '.mpe' : 'video/mpeg', - '.mpeg' : 'video/mpeg', - '.mpg' : 'video/mpeg', - '.ms' : 'application/x-troff-ms', - '.nc' : 'application/x-netcdf', - '.nws' : 'message/rfc822', - '.o' : 'application/octet-stream', - '.obj' : 'application/octet-stream', - '.oda' : 'application/oda', - '.p12' : 'application/x-pkcs12', - '.p7c' : 'application/pkcs7-mime', - '.pbm' : 'image/x-portable-bitmap', - '.pdf' : 'application/pdf', - '.pfx' : 'application/x-pkcs12', - '.pgm' : 'image/x-portable-graymap', - '.pl' : 'text/plain', - '.png' : 'image/png', - '.pnm' : 'image/x-portable-anymap', - '.pot' : 'application/vnd.ms-powerpoint', - '.ppa' : 'application/vnd.ms-powerpoint', - '.ppm' : 'image/x-portable-pixmap', - '.pps' : 'application/vnd.ms-powerpoint', - '.ppt' : 'application/vnd.ms-powerpoint', - '.ps' : 'application/postscript', - '.pwz' : 'application/vnd.ms-powerpoint', - '.py' : 'text/x-python', - '.pyc' : 'application/x-python-code', - '.pyo' : 'application/x-python-code', - '.qt' : 'video/quicktime', - '.ra' : 'audio/x-pn-realaudio', - '.ram' : 'application/x-pn-realaudio', - '.ras' : 'image/x-cmu-raster', - '.rdf' : 'application/xml', - '.rgb' : 'image/x-rgb', - '.roff' : 'application/x-troff', - '.rtx' : 'text/richtext', - '.sgm' : 'text/x-sgml', - '.sgml' : 'text/x-sgml', - '.sh' : 'application/x-sh', - '.shar' : 'application/x-shar', - '.snd' : 'audio/basic', - '.so' : 'application/octet-stream', - '.src' : 'application/x-wais-source', + # '.cdf': 'application/x-cdf', + '.cdf': 'application/x-netcdf', + '.cpio': 'application/x-cpio', + '.csh': 'application/x-csh', + '.css': 'text/css', + '.dll': 'application/octet-stream', + '.doc': 'application/msword', + '.dot': 'application/msword', + '.dvi': 'application/x-dvi', + '.eml': 'message/rfc822', + '.eps': 'application/postscript', + '.etx': 'text/x-setext', + '.exe': 'application/octet-stream', + '.gif': 'image/gif', + '.gtar': 'application/x-gtar', + '.h': 'text/plain', + '.hdf': 'application/x-hdf', + '.htm': 'text/html', + '.html': 'text/html', + '.ico': 'image/vnd.microsoft.icon', + '.ief': 'image/ief', + '.jpe': 'image/jpeg', + '.jpeg': 'image/jpeg', + '.jpg': 'image/jpeg', + '.js': 'application/javascript', + '.ksh': 'text/plain', + '.latex': 'application/x-latex', + '.m1v': 'video/mpeg', + '.man': 'application/x-troff-man', + '.me': 'application/x-troff-me', + '.mht': 'message/rfc822', + '.mhtml': 'message/rfc822', + '.mif': 'application/x-mif', + '.mov': 'video/quicktime', + '.movie': 'video/x-sgi-movie', + '.mp2': 'audio/mpeg', + '.mp3': 'audio/mpeg', + '.mp4': 'video/mp4', + '.mpa': 'video/mpeg', + '.mpe': 'video/mpeg', + '.mpeg': 'video/mpeg', + '.mpg': 'video/mpeg', + '.ms': 'application/x-troff-ms', + '.nc': 'application/x-netcdf', + '.nws': 'message/rfc822', + '.o': 'application/octet-stream', + '.obj': 'application/octet-stream', + '.oda': 'application/oda', + '.p12': 'application/x-pkcs12', + '.p7c': 'application/pkcs7-mime', + '.pbm': 'image/x-portable-bitmap', + '.pdf': 'application/pdf', + '.pfx': 'application/x-pkcs12', + '.pgm': 'image/x-portable-graymap', + '.pl': 'text/plain', + '.png': 'image/png', + '.pnm': 'image/x-portable-anymap', + '.pot': 'application/vnd.ms-powerpoint', + '.ppa': 'application/vnd.ms-powerpoint', + '.ppm': 'image/x-portable-pixmap', + '.pps': 'application/vnd.ms-powerpoint', + '.ppt': 'application/vnd.ms-powerpoint', + '.ps': 'application/postscript', + '.pwz': 'application/vnd.ms-powerpoint', + '.py': 'text/x-python', + '.pyc': 'application/x-python-code', + '.pyo': 'application/x-python-code', + '.qt': 'video/quicktime', + '.ra': 'audio/x-pn-realaudio', + '.ram': 'application/x-pn-realaudio', + '.ras': 'image/x-cmu-raster', + '.rdf': 'application/xml', + '.rgb': 'image/x-rgb', + '.roff': 'application/x-troff', + '.rtx': 'text/richtext', + '.sgm': 'text/x-sgml', + '.sgml': 'text/x-sgml', + '.sh': 'application/x-sh', + '.shar': 'application/x-shar', + '.snd': 'audio/basic', + '.so': 'application/octet-stream', + '.src': 'application/x-wais-source', '.sv4cpio': 'application/x-sv4cpio', - '.sv4crc' : 'application/x-sv4crc', - '.swf' : 'application/x-shockwave-flash', - '.t' : 'application/x-troff', - '.tar' : 'application/x-tar', - '.tcl' : 'application/x-tcl', - '.tex' : 'application/x-tex', - '.texi' : 'application/x-texinfo', + '.sv4crc': 'application/x-sv4crc', + '.swf': 'application/x-shockwave-flash', + '.t': 'application/x-troff', + '.tar': 'application/x-tar', + '.tcl': 'application/x-tcl', + '.tex': 'application/x-tex', + '.texi': 'application/x-texinfo', '.texinfo': 'application/x-texinfo', - '.tif' : 'image/tiff', - '.tiff' : 'image/tiff', - '.tr' : 'application/x-troff', - '.tsv' : 'text/tab-separated-values', - '.txt' : 'text/plain', - '.ustar' : 'application/x-ustar', - '.vcf' : 'text/x-vcard', - '.wav' : 'audio/x-wav', - '.wiz' : 'application/msword', - '.wsdl' : 'application/xml', - '.xbm' : 'image/x-xbitmap', - '.xlb' : 'application/vnd.ms-excel', + '.tif': 'image/tiff', + '.tiff': 'image/tiff', + '.tr': 'application/x-troff', + '.tsv': 'text/tab-separated-values', + '.txt': 'text/plain', + '.ustar': 'application/x-ustar', + '.vcf': 'text/x-vcard', + '.wav': 'audio/x-wav', + '.wiz': 'application/msword', + '.wsdl': 'application/xml', + '.xbm': 'image/x-xbitmap', + '.xlb': 'application/vnd.ms-excel', # Duplicates :( - '.xls' : 'application/excel', - '.xls' : 'application/vnd.ms-excel', - '.xml' : 'text/xml', - '.xpdl' : 'application/xml', - '.xpm' : 'image/x-xpixmap', - '.xsl' : 'application/xml', - '.xwd' : 'image/x-xwindowdump', - '.zip' : 'application/zip', - } + # '.xls': 'application/excel', + '.xls': 'application/vnd.ms-excel', + '.xml': 'text/xml', + '.xpdl': 'application/xml', + '.xpm': 'image/x-xpixmap', + '.xsl': 'application/xml', + '.xwd': 'image/x-xwindowdump', + '.zip': 'application/zip', + } # These are non-standard types, commonly found in the wild. They will # only match if strict=0 flag is given to the API methods. # Please sort these too common_types = { - '.jpg' : 'image/jpg', - '.mid' : 'audio/midi', + '.jpg': 'image/jpg', + '.mid': 'audio/midi', '.midi': 'audio/midi', - '.pct' : 'image/pict', - '.pic' : 'image/pict', + '.pct': 'image/pict', + '.pic': 'image/pict', '.pict': 'image/pict', - '.rtf' : 'application/rtf', - '.xul' : 'text/xul' - } + '.rtf': 'application/rtf', + '.xul': 'text/xul' + } _default_mime_types() @@ -564,14 +568,15 @@ def _default_mime_types(): """ def usage(code, msg=''): - print USAGE - if msg: print msg + print(USAGE) + if msg: + print(msg) sys.exit(code) try: opts, args = getopt.getopt(sys.argv[1:], 'hle', ['help', 'lenient', 'extension']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) strict = 1 @@ -586,9 +591,13 @@ def usage(code, msg=''): for gtype in args: if extension: guess = guess_extension(gtype, strict) - if not guess: print "I don't know anything about type", gtype - else: print guess + if not guess: + print("I don't know anything about type {}".format(gtype)) + else: + print(guess) else: guess, encoding = guess_type(gtype, strict) - if not guess: print "I don't know anything about type", gtype - else: print 'type:', guess, 'encoding:', encoding + if not guess: + print("I don't know anything about type {}".format(gtype)) + else: + print("type: {} encoding: {}".format(guess, encoding)) diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index d8f33cebb..e94d92b49 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -87,11 +87,11 @@ sg = mockgun.Shotgun("https://mysite.shotgunstudio.com", script_name="xyz", api_key="abc") # now you can start putting stuff in - print sg.create("HumanUser", {"firstname": "John", "login": "john"}) + print(sg.create("HumanUser", {"firstname": "John", "login": "john"})) # prints {'login': 'john', 'type': 'HumanUser', 'id': 1, 'firstname': 'John'} # and find what you have created - print sg.find("HumanUser", [["login", "is", "john"]]) + print(sg.find("HumanUser", [["login", "is", "john"]])) prints [{'type': 'HumanUser', 'id': 1}] That's it! Mockgun is used to run the Shotgun Pipeline Toolkit unit test rig. @@ -120,6 +120,7 @@ from ...shotgun import _Config from .errors import MockgunError from .schema import SchemaFactory +from .. import six # ---------------------------------------------------------------------------- # Version @@ -491,12 +492,12 @@ def _validate_entity_data(self, entity_type, data): "float": float, "checkbox": bool, "percent": int, - "text": basestring, + "text": six.string_types, "serializable": dict, "date": datetime.date, "date_time": datetime.datetime, - "list": basestring, - "status_list": basestring, + "list": six.string_types, + "status_list": six.string_types, "url": dict}[sg_type] except KeyError: raise ShotgunError( diff --git a/shotgun_api3/lib/mockgun/schema.py b/shotgun_api3/lib/mockgun/schema.py index edd4b889a..a5c584ca6 100644 --- a/shotgun_api3/lib/mockgun/schema.py +++ b/shotgun_api3/lib/mockgun/schema.py @@ -30,9 +30,8 @@ ----------------------------------------------------------------------------- """ -import cPickle as pickle +from ..six.moves import cPickle as pickle import os -import copy from .errors import MockgunError diff --git a/shotgun_api3/lib/requirements.txt b/shotgun_api3/lib/requirements.txt index 595e085db..15cf82712 100644 --- a/shotgun_api3/lib/requirements.txt +++ b/shotgun_api3/lib/requirements.txt @@ -29,4 +29,4 @@ # This file is unused. It is left there so Github can warn us is a CVE is # released for our dependencies. httplib2==0.12.0 -simplejson=2.1.6 \ No newline at end of file +six==1.12.0 \ No newline at end of file diff --git a/shotgun_api3/lib/sgsix.py b/shotgun_api3/lib/sgsix.py new file mode 100644 index 000000000..e66e88123 --- /dev/null +++ b/shotgun_api3/lib/sgsix.py @@ -0,0 +1,57 @@ +""" + ----------------------------------------------------------------------------- + Copyright (c) 2009-2019, Shotgun Software Inc. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + - Neither the name of the Shotgun Software Inc nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" + +# This module contains addtional functions and variables to supplement the six +# module for python 2/3 compatibility. + +from . import six +import io + +# For python 3, the `file` type no longer exists, and open() returns an +# io.IOBase instance. We add file_types to allow comparison across python +# versions. See https://stackoverflow.com/questions/36321030#36321030 +# +# This means that to test if a variable contains a file in both Python 2 and 3 +# you can use an isinstance test like: +# isinstance(value, sgsix.file_types) +if six.PY3: + file_types = (io.IOBase, ) +else: + file_types = (file, io.IOBase) # noqa warning for undefined `file` in python 3 + +# For python-api calls that result in an SSL error, the exception raised is +# different on Python 2 and 3. Store the approriate exception class in a +# variable to allow easier exception handling across Python 2/3. +if six.PY3: + import ssl + ShotgunSSLError = ssl.SSLError +else: + from .httplib2 import SSLHandshakeError + ShotgunSSLError = SSLHandshakeError diff --git a/shotgun_api3/lib/sgtimezone.py b/shotgun_api3/lib/sgtimezone.py index ef06c8640..df0b73281 100644 --- a/shotgun_api3/lib/sgtimezone.py +++ b/shotgun_api3/lib/sgtimezone.py @@ -1,13 +1,25 @@ #! /opt/local/bin/python + +# Copyright (c) 2019 Shotgun Software Inc. +# +# CONFIDENTIAL AND PROPRIETARY +# +# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit +# Source Code License included in this distribution package. See LICENSE. +# By accessing, using, copying or modifying this work you indicate your +# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights +# not expressly granted therein are reserved by Shotgun Software Inc. + # ---------------------------------------------------------------------------- # SG_TIMEZONE module -# this is rolled into the this shotgun api file to avoid having to require +# this is rolled into the this shotgun api file to avoid having to require # current users of api2 to install new modules and modify PYTHONPATH info. # ---------------------------------------------------------------------------- -from datetime import tzinfo, timedelta, datetime +from datetime import tzinfo, timedelta import time as _time + class SgTimezone(object): ''' Shotgun's server infrastructure is configured for Coordinated Universal @@ -16,14 +28,14 @@ class SgTimezone(object): ''' ZERO = timedelta(0) - STDOFFSET = timedelta(seconds = -_time.timezone) + STDOFFSET = timedelta(seconds=-_time.timezone) if _time.daylight: - DSTOFFSET = timedelta(seconds = -_time.altzone) + DSTOFFSET = timedelta(seconds=-_time.altzone) else: DSTOFFSET = STDOFFSET DSTDIFF = DSTOFFSET - STDOFFSET - - def __init__(self): + + def __init__(self): self.utc = UTC() self.local = LocalTimezone() @@ -42,28 +54,30 @@ def LocalTimezone(cls): class, we allow instantiation via SgTimezone ''' return LocalTimezone() - + + class UTC(tzinfo): ''' Implementation of datetime's tzinfo to provide consistent calculated offsets against Coordinated Universal Time (UTC) ''' - + def utcoffset(self, dt): return SgTimezone.ZERO - + def tzname(self, dt): return "UTC" - + def dst(self, dt): return SgTimezone.ZERO + class LocalTimezone(tzinfo): ''' Implementation of datetime's tzinfo to provide convenient conversion between Shotgun server time and local user time ''' - + def utcoffset(self, dt): ''' Difference between the user's local timezone and UTC timezone in seconds @@ -72,7 +86,7 @@ def utcoffset(self, dt): return SgTimezone.DSTOFFSET else: return SgTimezone.STDOFFSET - + def dst(self, dt): ''' Daylight savings time (dst) offset in seconds @@ -81,14 +95,14 @@ def dst(self, dt): return SgTimezone.DSTDIFF else: return SgTimezone.ZERO - + def tzname(self, dt): ''' Name of the user's local timezone, including a reference to daylight savings time (dst) if applicable ''' return _time.tzname[self._isdst(dt)] - + def _isdst(self, dt): ''' Calculate whether the timestamp in question was in daylight savings diff --git a/shotgun_api3/lib/simplejson/__init__.py b/shotgun_api3/lib/simplejson/__init__.py deleted file mode 100644 index 210b957a9..000000000 --- a/shotgun_api3/lib/simplejson/__init__.py +++ /dev/null @@ -1,438 +0,0 @@ -r"""JSON (JavaScript Object Notation) is a subset of -JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data -interchange format. - -:mod:`simplejson` exposes an API familiar to users of the standard library -:mod:`marshal` and :mod:`pickle` modules. It is the externally maintained -version of the :mod:`json` library contained in Python 2.6, but maintains -compatibility with Python 2.4 and Python 2.5 and (currently) has -significant performance advantages, even without using the optional C -extension for speedups. - -Encoding basic Python object hierarchies:: - - >>> import simplejson as json - >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) - '["foo", {"bar": ["baz", null, 1.0, 2]}]' - >>> print json.dumps("\"foo\bar") - "\"foo\bar" - >>> print json.dumps(u'\u1234') - "\u1234" - >>> print json.dumps('\\') - "\\" - >>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True) - {"a": 0, "b": 0, "c": 0} - >>> from StringIO import StringIO - >>> io = StringIO() - >>> json.dump(['streaming API'], io) - >>> io.getvalue() - '["streaming API"]' - -Compact encoding:: - - >>> import simplejson as json - >>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':')) - '[1,2,3,{"4":5,"6":7}]' - -Pretty printing:: - - >>> import simplejson as json - >>> s = json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=' ') - >>> print '\n'.join([l.rstrip() for l in s.splitlines()]) - { - "4": 5, - "6": 7 - } - -Decoding JSON:: - - >>> import simplejson as json - >>> obj = [u'foo', {u'bar': [u'baz', None, 1.0, 2]}] - >>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') == obj - True - >>> json.loads('"\\"foo\\bar"') == u'"foo\x08ar' - True - >>> from StringIO import StringIO - >>> io = StringIO('["streaming API"]') - >>> json.load(io)[0] == 'streaming API' - True - -Specializing JSON object decoding:: - - >>> import simplejson as json - >>> def as_complex(dct): - ... if '__complex__' in dct: - ... return complex(dct['real'], dct['imag']) - ... return dct - ... - >>> json.loads('{"__complex__": true, "real": 1, "imag": 2}', - ... object_hook=as_complex) - (1+2j) - >>> from decimal import Decimal - >>> json.loads('1.1', parse_float=Decimal) == Decimal('1.1') - True - -Specializing JSON object encoding:: - - >>> import simplejson as json - >>> def encode_complex(obj): - ... if isinstance(obj, complex): - ... return [obj.real, obj.imag] - ... raise TypeError(repr(o) + " is not JSON serializable") - ... - >>> json.dumps(2 + 1j, default=encode_complex) - '[2.0, 1.0]' - >>> json.JSONEncoder(default=encode_complex).encode(2 + 1j) - '[2.0, 1.0]' - >>> ''.join(json.JSONEncoder(default=encode_complex).iterencode(2 + 1j)) - '[2.0, 1.0]' - - -Using simplejson.tool from the shell to validate and pretty-print:: - - $ echo '{"json":"obj"}' | python -m simplejson.tool - { - "json": "obj" - } - $ echo '{ 1.2:3.4}' | python -m simplejson.tool - Expecting property name: line 1 column 2 (char 2) -""" -__version__ = '2.1.6' -__all__ = [ - 'dump', 'dumps', 'load', 'loads', - 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder', - 'OrderedDict', -] - -__author__ = 'Bob Ippolito ' - -from decimal import Decimal - -from decoder import JSONDecoder, JSONDecodeError -from encoder import JSONEncoder -def _import_OrderedDict(): - import collections - try: - return collections.OrderedDict - except AttributeError: - import ordered_dict - return ordered_dict.OrderedDict -OrderedDict = _import_OrderedDict() - -def _import_c_make_encoder(): - try: - from simplejson._speedups import make_encoder - return make_encoder - except ImportError: - return None - -_default_encoder = JSONEncoder( - skipkeys=False, - ensure_ascii=True, - check_circular=True, - allow_nan=True, - indent=None, - separators=None, - encoding='utf-8', - default=None, - use_decimal=False, -) - -def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, - allow_nan=True, cls=None, indent=None, separators=None, - encoding='utf-8', default=None, use_decimal=False, **kw): - """Serialize ``obj`` as a JSON formatted stream to ``fp`` (a - ``.write()``-supporting file-like object). - - If ``skipkeys`` is true then ``dict`` keys that are not basic types - (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``) - will be skipped instead of raising a ``TypeError``. - - If ``ensure_ascii`` is false, then the some chunks written to ``fp`` - may be ``unicode`` instances, subject to normal Python ``str`` to - ``unicode`` coercion rules. Unless ``fp.write()`` explicitly - understands ``unicode`` (as in ``codecs.getwriter()``) this is likely - to cause an error. - - If ``check_circular`` is false, then the circular reference check - for container types will be skipped and a circular reference will - result in an ``OverflowError`` (or worse). - - If ``allow_nan`` is false, then it will be a ``ValueError`` to - serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) - in strict compliance of the JSON specification, instead of using the - JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``). - - If *indent* is a string, then JSON array elements and object members - will be pretty-printed with a newline followed by that string repeated - for each level of nesting. ``None`` (the default) selects the most compact - representation without any newlines. For backwards compatibility with - versions of simplejson earlier than 2.1.0, an integer is also accepted - and is converted to a string with that many spaces. - - If ``separators`` is an ``(item_separator, dict_separator)`` tuple - then it will be used instead of the default ``(', ', ': ')`` separators. - ``(',', ':')`` is the most compact JSON representation. - - ``encoding`` is the character encoding for str instances, default is UTF-8. - - ``default(obj)`` is a function that should return a serializable version - of obj or raise TypeError. The default simply raises TypeError. - - If *use_decimal* is true (default: ``False``) then decimal.Decimal - will be natively serialized to JSON with full precision. - - To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the - ``.default()`` method to serialize additional types), specify it with - the ``cls`` kwarg. - - """ - # cached encoder - if (not skipkeys and ensure_ascii and - check_circular and allow_nan and - cls is None and indent is None and separators is None and - encoding == 'utf-8' and default is None and not use_decimal - and not kw): - iterable = _default_encoder.iterencode(obj) - else: - if cls is None: - cls = JSONEncoder - iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii, - check_circular=check_circular, allow_nan=allow_nan, indent=indent, - separators=separators, encoding=encoding, - default=default, use_decimal=use_decimal, **kw).iterencode(obj) - # could accelerate with writelines in some versions of Python, at - # a debuggability cost - for chunk in iterable: - fp.write(chunk) - - -def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, - allow_nan=True, cls=None, indent=None, separators=None, - encoding='utf-8', default=None, use_decimal=False, **kw): - """Serialize ``obj`` to a JSON formatted ``str``. - - If ``skipkeys`` is false then ``dict`` keys that are not basic types - (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``) - will be skipped instead of raising a ``TypeError``. - - If ``ensure_ascii`` is false, then the return value will be a - ``unicode`` instance subject to normal Python ``str`` to ``unicode`` - coercion rules instead of being escaped to an ASCII ``str``. - - If ``check_circular`` is false, then the circular reference check - for container types will be skipped and a circular reference will - result in an ``OverflowError`` (or worse). - - If ``allow_nan`` is false, then it will be a ``ValueError`` to - serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in - strict compliance of the JSON specification, instead of using the - JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``). - - If ``indent`` is a string, then JSON array elements and object members - will be pretty-printed with a newline followed by that string repeated - for each level of nesting. ``None`` (the default) selects the most compact - representation without any newlines. For backwards compatibility with - versions of simplejson earlier than 2.1.0, an integer is also accepted - and is converted to a string with that many spaces. - - If ``separators`` is an ``(item_separator, dict_separator)`` tuple - then it will be used instead of the default ``(', ', ': ')`` separators. - ``(',', ':')`` is the most compact JSON representation. - - ``encoding`` is the character encoding for str instances, default is UTF-8. - - ``default(obj)`` is a function that should return a serializable version - of obj or raise TypeError. The default simply raises TypeError. - - If *use_decimal* is true (default: ``False``) then decimal.Decimal - will be natively serialized to JSON with full precision. - - To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the - ``.default()`` method to serialize additional types), specify it with - the ``cls`` kwarg. - - """ - # cached encoder - if (not skipkeys and ensure_ascii and - check_circular and allow_nan and - cls is None and indent is None and separators is None and - encoding == 'utf-8' and default is None and not use_decimal - and not kw): - return _default_encoder.encode(obj) - if cls is None: - cls = JSONEncoder - return cls( - skipkeys=skipkeys, ensure_ascii=ensure_ascii, - check_circular=check_circular, allow_nan=allow_nan, indent=indent, - separators=separators, encoding=encoding, default=default, - use_decimal=use_decimal, **kw).encode(obj) - - -_default_decoder = JSONDecoder(encoding=None, object_hook=None, - object_pairs_hook=None) - - -def load(fp, encoding=None, cls=None, object_hook=None, parse_float=None, - parse_int=None, parse_constant=None, object_pairs_hook=None, - use_decimal=False, **kw): - """Deserialize ``fp`` (a ``.read()``-supporting file-like object containing - a JSON document) to a Python object. - - *encoding* determines the encoding used to interpret any - :class:`str` objects decoded by this instance (``'utf-8'`` by - default). It has no effect when decoding :class:`unicode` objects. - - Note that currently only encodings that are a superset of ASCII work, - strings of other encodings should be passed in as :class:`unicode`. - - *object_hook*, if specified, will be called with the result of every - JSON object decoded and its return value will be used in place of the - given :class:`dict`. This can be used to provide custom - deserializations (e.g. to support JSON-RPC class hinting). - - *object_pairs_hook* is an optional function that will be called with - the result of any object literal decode with an ordered list of pairs. - The return value of *object_pairs_hook* will be used instead of the - :class:`dict`. This feature can be used to implement custom decoders - that rely on the order that the key and value pairs are decoded (for - example, :func:`collections.OrderedDict` will remember the order of - insertion). If *object_hook* is also defined, the *object_pairs_hook* - takes priority. - - *parse_float*, if specified, will be called with the string of every - JSON float to be decoded. By default, this is equivalent to - ``float(num_str)``. This can be used to use another datatype or parser - for JSON floats (e.g. :class:`decimal.Decimal`). - - *parse_int*, if specified, will be called with the string of every - JSON int to be decoded. By default, this is equivalent to - ``int(num_str)``. This can be used to use another datatype or parser - for JSON integers (e.g. :class:`float`). - - *parse_constant*, if specified, will be called with one of the - following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This - can be used to raise an exception if invalid JSON numbers are - encountered. - - If *use_decimal* is true (default: ``False``) then it implies - parse_float=decimal.Decimal for parity with ``dump``. - - To use a custom ``JSONDecoder`` subclass, specify it with the ``cls`` - kwarg. - - """ - return loads(fp.read(), - encoding=encoding, cls=cls, object_hook=object_hook, - parse_float=parse_float, parse_int=parse_int, - parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, - use_decimal=use_decimal, **kw) - - -def loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, - parse_int=None, parse_constant=None, object_pairs_hook=None, - use_decimal=False, **kw): - """Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON - document) to a Python object. - - *encoding* determines the encoding used to interpret any - :class:`str` objects decoded by this instance (``'utf-8'`` by - default). It has no effect when decoding :class:`unicode` objects. - - Note that currently only encodings that are a superset of ASCII work, - strings of other encodings should be passed in as :class:`unicode`. - - *object_hook*, if specified, will be called with the result of every - JSON object decoded and its return value will be used in place of the - given :class:`dict`. This can be used to provide custom - deserializations (e.g. to support JSON-RPC class hinting). - - *object_pairs_hook* is an optional function that will be called with - the result of any object literal decode with an ordered list of pairs. - The return value of *object_pairs_hook* will be used instead of the - :class:`dict`. This feature can be used to implement custom decoders - that rely on the order that the key and value pairs are decoded (for - example, :func:`collections.OrderedDict` will remember the order of - insertion). If *object_hook* is also defined, the *object_pairs_hook* - takes priority. - - *parse_float*, if specified, will be called with the string of every - JSON float to be decoded. By default, this is equivalent to - ``float(num_str)``. This can be used to use another datatype or parser - for JSON floats (e.g. :class:`decimal.Decimal`). - - *parse_int*, if specified, will be called with the string of every - JSON int to be decoded. By default, this is equivalent to - ``int(num_str)``. This can be used to use another datatype or parser - for JSON integers (e.g. :class:`float`). - - *parse_constant*, if specified, will be called with one of the - following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This - can be used to raise an exception if invalid JSON numbers are - encountered. - - If *use_decimal* is true (default: ``False``) then it implies - parse_float=decimal.Decimal for parity with ``dump``. - - To use a custom ``JSONDecoder`` subclass, specify it with the ``cls`` - kwarg. - - """ - if (cls is None and encoding is None and object_hook is None and - parse_int is None and parse_float is None and - parse_constant is None and object_pairs_hook is None - and not use_decimal and not kw): - return _default_decoder.decode(s) - if cls is None: - cls = JSONDecoder - if object_hook is not None: - kw['object_hook'] = object_hook - if object_pairs_hook is not None: - kw['object_pairs_hook'] = object_pairs_hook - if parse_float is not None: - kw['parse_float'] = parse_float - if parse_int is not None: - kw['parse_int'] = parse_int - if parse_constant is not None: - kw['parse_constant'] = parse_constant - if use_decimal: - if parse_float is not None: - raise TypeError("use_decimal=True implies parse_float=Decimal") - kw['parse_float'] = Decimal - return cls(encoding=encoding, **kw).decode(s) - - -def _toggle_speedups(enabled): - import simplejson.decoder as dec - import simplejson.encoder as enc - import simplejson.scanner as scan - c_make_encoder = _import_c_make_encoder() - if enabled: - dec.scanstring = dec.c_scanstring or dec.py_scanstring - enc.c_make_encoder = c_make_encoder - enc.encode_basestring_ascii = (enc.c_encode_basestring_ascii or - enc.py_encode_basestring_ascii) - scan.make_scanner = scan.c_make_scanner or scan.py_make_scanner - else: - dec.scanstring = dec.py_scanstring - enc.c_make_encoder = None - enc.encode_basestring_ascii = enc.py_encode_basestring_ascii - scan.make_scanner = scan.py_make_scanner - dec.make_scanner = scan.make_scanner - global _default_decoder - _default_decoder = JSONDecoder( - encoding=None, - object_hook=None, - object_pairs_hook=None, - ) - global _default_encoder - _default_encoder = JSONEncoder( - skipkeys=False, - ensure_ascii=True, - check_circular=True, - allow_nan=True, - indent=None, - separators=None, - encoding='utf-8', - default=None, - ) diff --git a/shotgun_api3/lib/simplejson/_speedups.c b/shotgun_api3/lib/simplejson/_speedups.c deleted file mode 100644 index 8b3474702..000000000 --- a/shotgun_api3/lib/simplejson/_speedups.c +++ /dev/null @@ -1,2652 +0,0 @@ -#include "Python.h" -#include "structmember.h" -#if PY_VERSION_HEX < 0x02070000 && !defined(PyOS_string_to_double) -#define PyOS_string_to_double json_PyOS_string_to_double -static double -json_PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception); -static double -json_PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception) { - double x; - assert(endptr == NULL); - assert(overflow_exception == NULL); - PyFPE_START_PROTECT("json_PyOS_string_to_double", return -1.0;) - x = PyOS_ascii_atof(s); - PyFPE_END_PROTECT(x) - return x; -} -#endif -#if PY_VERSION_HEX < 0x02060000 && !defined(Py_TYPE) -#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) -#endif -#if PY_VERSION_HEX < 0x02060000 && !defined(Py_SIZE) -#define Py_SIZE(ob) (((PyVarObject*)(ob))->ob_size) -#endif -#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) -typedef int Py_ssize_t; -#define PY_SSIZE_T_MAX INT_MAX -#define PY_SSIZE_T_MIN INT_MIN -#define PyInt_FromSsize_t PyInt_FromLong -#define PyInt_AsSsize_t PyInt_AsLong -#endif -#ifndef Py_IS_FINITE -#define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X)) -#endif - -#ifdef __GNUC__ -#define UNUSED __attribute__((__unused__)) -#else -#define UNUSED -#endif - -#define DEFAULT_ENCODING "utf-8" - -#define PyScanner_Check(op) PyObject_TypeCheck(op, &PyScannerType) -#define PyScanner_CheckExact(op) (Py_TYPE(op) == &PyScannerType) -#define PyEncoder_Check(op) PyObject_TypeCheck(op, &PyEncoderType) -#define PyEncoder_CheckExact(op) (Py_TYPE(op) == &PyEncoderType) -#define Decimal_Check(op) (PyObject_TypeCheck(op, DecimalTypePtr)) - -static PyTypeObject PyScannerType; -static PyTypeObject PyEncoderType; -static PyTypeObject *DecimalTypePtr; - -typedef struct _PyScannerObject { - PyObject_HEAD - PyObject *encoding; - PyObject *strict; - PyObject *object_hook; - PyObject *pairs_hook; - PyObject *parse_float; - PyObject *parse_int; - PyObject *parse_constant; - PyObject *memo; -} PyScannerObject; - -static PyMemberDef scanner_members[] = { - {"encoding", T_OBJECT, offsetof(PyScannerObject, encoding), READONLY, "encoding"}, - {"strict", T_OBJECT, offsetof(PyScannerObject, strict), READONLY, "strict"}, - {"object_hook", T_OBJECT, offsetof(PyScannerObject, object_hook), READONLY, "object_hook"}, - {"object_pairs_hook", T_OBJECT, offsetof(PyScannerObject, pairs_hook), READONLY, "object_pairs_hook"}, - {"parse_float", T_OBJECT, offsetof(PyScannerObject, parse_float), READONLY, "parse_float"}, - {"parse_int", T_OBJECT, offsetof(PyScannerObject, parse_int), READONLY, "parse_int"}, - {"parse_constant", T_OBJECT, offsetof(PyScannerObject, parse_constant), READONLY, "parse_constant"}, - {NULL} -}; - -typedef struct _PyEncoderObject { - PyObject_HEAD - PyObject *markers; - PyObject *defaultfn; - PyObject *encoder; - PyObject *indent; - PyObject *key_separator; - PyObject *item_separator; - PyObject *sort_keys; - PyObject *skipkeys; - PyObject *key_memo; - int fast_encode; - int allow_nan; - int use_decimal; -} PyEncoderObject; - -static PyMemberDef encoder_members[] = { - {"markers", T_OBJECT, offsetof(PyEncoderObject, markers), READONLY, "markers"}, - {"default", T_OBJECT, offsetof(PyEncoderObject, defaultfn), READONLY, "default"}, - {"encoder", T_OBJECT, offsetof(PyEncoderObject, encoder), READONLY, "encoder"}, - {"indent", T_OBJECT, offsetof(PyEncoderObject, indent), READONLY, "indent"}, - {"key_separator", T_OBJECT, offsetof(PyEncoderObject, key_separator), READONLY, "key_separator"}, - {"item_separator", T_OBJECT, offsetof(PyEncoderObject, item_separator), READONLY, "item_separator"}, - {"sort_keys", T_OBJECT, offsetof(PyEncoderObject, sort_keys), READONLY, "sort_keys"}, - {"skipkeys", T_OBJECT, offsetof(PyEncoderObject, skipkeys), READONLY, "skipkeys"}, - {"key_memo", T_OBJECT, offsetof(PyEncoderObject, key_memo), READONLY, "key_memo"}, - {NULL} -}; - -static Py_ssize_t -ascii_escape_char(Py_UNICODE c, char *output, Py_ssize_t chars); -static PyObject * -ascii_escape_unicode(PyObject *pystr); -static PyObject * -ascii_escape_str(PyObject *pystr); -static PyObject * -py_encode_basestring_ascii(PyObject* self UNUSED, PyObject *pystr); -void init_speedups(void); -static PyObject * -scan_once_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr); -static PyObject * -scan_once_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr); -static PyObject * -_build_rval_index_tuple(PyObject *rval, Py_ssize_t idx); -static PyObject * -scanner_new(PyTypeObject *type, PyObject *args, PyObject *kwds); -static int -scanner_init(PyObject *self, PyObject *args, PyObject *kwds); -static void -scanner_dealloc(PyObject *self); -static int -scanner_clear(PyObject *self); -static PyObject * -encoder_new(PyTypeObject *type, PyObject *args, PyObject *kwds); -static int -encoder_init(PyObject *self, PyObject *args, PyObject *kwds); -static void -encoder_dealloc(PyObject *self); -static int -encoder_clear(PyObject *self); -static int -encoder_listencode_list(PyEncoderObject *s, PyObject *rval, PyObject *seq, Py_ssize_t indent_level); -static int -encoder_listencode_obj(PyEncoderObject *s, PyObject *rval, PyObject *obj, Py_ssize_t indent_level); -static int -encoder_listencode_dict(PyEncoderObject *s, PyObject *rval, PyObject *dct, Py_ssize_t indent_level); -static PyObject * -_encoded_const(PyObject *obj); -static void -raise_errmsg(char *msg, PyObject *s, Py_ssize_t end); -static PyObject * -encoder_encode_string(PyEncoderObject *s, PyObject *obj); -static int -_convertPyInt_AsSsize_t(PyObject *o, Py_ssize_t *size_ptr); -static PyObject * -_convertPyInt_FromSsize_t(Py_ssize_t *size_ptr); -static PyObject * -encoder_encode_float(PyEncoderObject *s, PyObject *obj); - -#define S_CHAR(c) (c >= ' ' && c <= '~' && c != '\\' && c != '"') -#define IS_WHITESPACE(c) (((c) == ' ') || ((c) == '\t') || ((c) == '\n') || ((c) == '\r')) - -#define MIN_EXPANSION 6 -#ifdef Py_UNICODE_WIDE -#define MAX_EXPANSION (2 * MIN_EXPANSION) -#else -#define MAX_EXPANSION MIN_EXPANSION -#endif - -static int -_convertPyInt_AsSsize_t(PyObject *o, Py_ssize_t *size_ptr) -{ - /* PyObject to Py_ssize_t converter */ - *size_ptr = PyInt_AsSsize_t(o); - if (*size_ptr == -1 && PyErr_Occurred()) - return 0; - return 1; -} - -static PyObject * -_convertPyInt_FromSsize_t(Py_ssize_t *size_ptr) -{ - /* Py_ssize_t to PyObject converter */ - return PyInt_FromSsize_t(*size_ptr); -} - -static Py_ssize_t -ascii_escape_char(Py_UNICODE c, char *output, Py_ssize_t chars) -{ - /* Escape unicode code point c to ASCII escape sequences - in char *output. output must have at least 12 bytes unused to - accommodate an escaped surrogate pair "\uXXXX\uXXXX" */ - output[chars++] = '\\'; - switch (c) { - case '\\': output[chars++] = (char)c; break; - case '"': output[chars++] = (char)c; break; - case '\b': output[chars++] = 'b'; break; - case '\f': output[chars++] = 'f'; break; - case '\n': output[chars++] = 'n'; break; - case '\r': output[chars++] = 'r'; break; - case '\t': output[chars++] = 't'; break; - default: -#ifdef Py_UNICODE_WIDE - if (c >= 0x10000) { - /* UTF-16 surrogate pair */ - Py_UNICODE v = c - 0x10000; - c = 0xd800 | ((v >> 10) & 0x3ff); - output[chars++] = 'u'; - output[chars++] = "0123456789abcdef"[(c >> 12) & 0xf]; - output[chars++] = "0123456789abcdef"[(c >> 8) & 0xf]; - output[chars++] = "0123456789abcdef"[(c >> 4) & 0xf]; - output[chars++] = "0123456789abcdef"[(c ) & 0xf]; - c = 0xdc00 | (v & 0x3ff); - output[chars++] = '\\'; - } -#endif - output[chars++] = 'u'; - output[chars++] = "0123456789abcdef"[(c >> 12) & 0xf]; - output[chars++] = "0123456789abcdef"[(c >> 8) & 0xf]; - output[chars++] = "0123456789abcdef"[(c >> 4) & 0xf]; - output[chars++] = "0123456789abcdef"[(c ) & 0xf]; - } - return chars; -} - -static PyObject * -ascii_escape_unicode(PyObject *pystr) -{ - /* Take a PyUnicode pystr and return a new ASCII-only escaped PyString */ - Py_ssize_t i; - Py_ssize_t input_chars; - Py_ssize_t output_size; - Py_ssize_t max_output_size; - Py_ssize_t chars; - PyObject *rval; - char *output; - Py_UNICODE *input_unicode; - - input_chars = PyUnicode_GET_SIZE(pystr); - input_unicode = PyUnicode_AS_UNICODE(pystr); - - /* One char input can be up to 6 chars output, estimate 4 of these */ - output_size = 2 + (MIN_EXPANSION * 4) + input_chars; - max_output_size = 2 + (input_chars * MAX_EXPANSION); - rval = PyString_FromStringAndSize(NULL, output_size); - if (rval == NULL) { - return NULL; - } - output = PyString_AS_STRING(rval); - chars = 0; - output[chars++] = '"'; - for (i = 0; i < input_chars; i++) { - Py_UNICODE c = input_unicode[i]; - if (S_CHAR(c)) { - output[chars++] = (char)c; - } - else { - chars = ascii_escape_char(c, output, chars); - } - if (output_size - chars < (1 + MAX_EXPANSION)) { - /* There's more than four, so let's resize by a lot */ - Py_ssize_t new_output_size = output_size * 2; - /* This is an upper bound */ - if (new_output_size > max_output_size) { - new_output_size = max_output_size; - } - /* Make sure that the output size changed before resizing */ - if (new_output_size != output_size) { - output_size = new_output_size; - if (_PyString_Resize(&rval, output_size) == -1) { - return NULL; - } - output = PyString_AS_STRING(rval); - } - } - } - output[chars++] = '"'; - if (_PyString_Resize(&rval, chars) == -1) { - return NULL; - } - return rval; -} - -static PyObject * -ascii_escape_str(PyObject *pystr) -{ - /* Take a PyString pystr and return a new ASCII-only escaped PyString */ - Py_ssize_t i; - Py_ssize_t input_chars; - Py_ssize_t output_size; - Py_ssize_t chars; - PyObject *rval; - char *output; - char *input_str; - - input_chars = PyString_GET_SIZE(pystr); - input_str = PyString_AS_STRING(pystr); - - /* Fast path for a string that's already ASCII */ - for (i = 0; i < input_chars; i++) { - Py_UNICODE c = (Py_UNICODE)(unsigned char)input_str[i]; - if (!S_CHAR(c)) { - /* If we have to escape something, scan the string for unicode */ - Py_ssize_t j; - for (j = i; j < input_chars; j++) { - c = (Py_UNICODE)(unsigned char)input_str[j]; - if (c > 0x7f) { - /* We hit a non-ASCII character, bail to unicode mode */ - PyObject *uni; - uni = PyUnicode_DecodeUTF8(input_str, input_chars, "strict"); - if (uni == NULL) { - return NULL; - } - rval = ascii_escape_unicode(uni); - Py_DECREF(uni); - return rval; - } - } - break; - } - } - - if (i == input_chars) { - /* Input is already ASCII */ - output_size = 2 + input_chars; - } - else { - /* One char input can be up to 6 chars output, estimate 4 of these */ - output_size = 2 + (MIN_EXPANSION * 4) + input_chars; - } - rval = PyString_FromStringAndSize(NULL, output_size); - if (rval == NULL) { - return NULL; - } - output = PyString_AS_STRING(rval); - output[0] = '"'; - - /* We know that everything up to i is ASCII already */ - chars = i + 1; - memcpy(&output[1], input_str, i); - - for (; i < input_chars; i++) { - Py_UNICODE c = (Py_UNICODE)(unsigned char)input_str[i]; - if (S_CHAR(c)) { - output[chars++] = (char)c; - } - else { - chars = ascii_escape_char(c, output, chars); - } - /* An ASCII char can't possibly expand to a surrogate! */ - if (output_size - chars < (1 + MIN_EXPANSION)) { - /* There's more than four, so let's resize by a lot */ - output_size *= 2; - if (output_size > 2 + (input_chars * MIN_EXPANSION)) { - output_size = 2 + (input_chars * MIN_EXPANSION); - } - if (_PyString_Resize(&rval, output_size) == -1) { - return NULL; - } - output = PyString_AS_STRING(rval); - } - } - output[chars++] = '"'; - if (_PyString_Resize(&rval, chars) == -1) { - return NULL; - } - return rval; -} - -static void -raise_errmsg(char *msg, PyObject *s, Py_ssize_t end) -{ - /* Use the Python function simplejson.decoder.errmsg to raise a nice - looking ValueError exception */ - static PyObject *JSONDecodeError = NULL; - PyObject *exc; - if (JSONDecodeError == NULL) { - PyObject *decoder = PyImport_ImportModule("simplejson.decoder"); - if (decoder == NULL) - return; - JSONDecodeError = PyObject_GetAttrString(decoder, "JSONDecodeError"); - Py_DECREF(decoder); - if (JSONDecodeError == NULL) - return; - } - exc = PyObject_CallFunction(JSONDecodeError, "(zOO&)", msg, s, _convertPyInt_FromSsize_t, &end); - if (exc) { - PyErr_SetObject(JSONDecodeError, exc); - Py_DECREF(exc); - } -} - -static PyObject * -join_list_unicode(PyObject *lst) -{ - /* return u''.join(lst) */ - static PyObject *joinfn = NULL; - if (joinfn == NULL) { - PyObject *ustr = PyUnicode_FromUnicode(NULL, 0); - if (ustr == NULL) - return NULL; - - joinfn = PyObject_GetAttrString(ustr, "join"); - Py_DECREF(ustr); - if (joinfn == NULL) - return NULL; - } - return PyObject_CallFunctionObjArgs(joinfn, lst, NULL); -} - -static PyObject * -join_list_string(PyObject *lst) -{ - /* return ''.join(lst) */ - static PyObject *joinfn = NULL; - if (joinfn == NULL) { - PyObject *ustr = PyString_FromStringAndSize(NULL, 0); - if (ustr == NULL) - return NULL; - - joinfn = PyObject_GetAttrString(ustr, "join"); - Py_DECREF(ustr); - if (joinfn == NULL) - return NULL; - } - return PyObject_CallFunctionObjArgs(joinfn, lst, NULL); -} - -static PyObject * -_build_rval_index_tuple(PyObject *rval, Py_ssize_t idx) { - /* return (rval, idx) tuple, stealing reference to rval */ - PyObject *tpl; - PyObject *pyidx; - /* - steal a reference to rval, returns (rval, idx) - */ - if (rval == NULL) { - return NULL; - } - pyidx = PyInt_FromSsize_t(idx); - if (pyidx == NULL) { - Py_DECREF(rval); - return NULL; - } - tpl = PyTuple_New(2); - if (tpl == NULL) { - Py_DECREF(pyidx); - Py_DECREF(rval); - return NULL; - } - PyTuple_SET_ITEM(tpl, 0, rval); - PyTuple_SET_ITEM(tpl, 1, pyidx); - return tpl; -} - -#define APPEND_OLD_CHUNK \ - if (chunk != NULL) { \ - if (chunks == NULL) { \ - chunks = PyList_New(0); \ - if (chunks == NULL) { \ - goto bail; \ - } \ - } \ - if (PyList_Append(chunks, chunk)) { \ - goto bail; \ - } \ - Py_CLEAR(chunk); \ - } - -static PyObject * -scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict, Py_ssize_t *next_end_ptr) -{ - /* Read the JSON string from PyString pystr. - end is the index of the first character after the quote. - encoding is the encoding of pystr (must be an ASCII superset) - if strict is zero then literal control characters are allowed - *next_end_ptr is a return-by-reference index of the character - after the end quote - - Return value is a new PyString (if ASCII-only) or PyUnicode - */ - PyObject *rval; - Py_ssize_t len = PyString_GET_SIZE(pystr); - Py_ssize_t begin = end - 1; - Py_ssize_t next = begin; - int has_unicode = 0; - char *buf = PyString_AS_STRING(pystr); - PyObject *chunks = NULL; - PyObject *chunk = NULL; - - if (end < 0 || len <= end) { - PyErr_SetString(PyExc_ValueError, "end is out of bounds"); - goto bail; - } - while (1) { - /* Find the end of the string or the next escape */ - Py_UNICODE c = 0; - for (next = end; next < len; next++) { - c = (unsigned char)buf[next]; - if (c == '"' || c == '\\') { - break; - } - else if (strict && c <= 0x1f) { - raise_errmsg("Invalid control character at", pystr, next); - goto bail; - } - else if (c > 0x7f) { - has_unicode = 1; - } - } - if (!(c == '"' || c == '\\')) { - raise_errmsg("Unterminated string starting at", pystr, begin); - goto bail; - } - /* Pick up this chunk if it's not zero length */ - if (next != end) { - PyObject *strchunk; - APPEND_OLD_CHUNK - strchunk = PyString_FromStringAndSize(&buf[end], next - end); - if (strchunk == NULL) { - goto bail; - } - if (has_unicode) { - chunk = PyUnicode_FromEncodedObject(strchunk, encoding, NULL); - Py_DECREF(strchunk); - if (chunk == NULL) { - goto bail; - } - } - else { - chunk = strchunk; - } - } - next++; - if (c == '"') { - end = next; - break; - } - if (next == len) { - raise_errmsg("Unterminated string starting at", pystr, begin); - goto bail; - } - c = buf[next]; - if (c != 'u') { - /* Non-unicode backslash escapes */ - end = next + 1; - switch (c) { - case '"': break; - case '\\': break; - case '/': break; - case 'b': c = '\b'; break; - case 'f': c = '\f'; break; - case 'n': c = '\n'; break; - case 'r': c = '\r'; break; - case 't': c = '\t'; break; - default: c = 0; - } - if (c == 0) { - raise_errmsg("Invalid \\escape", pystr, end - 2); - goto bail; - } - } - else { - c = 0; - next++; - end = next + 4; - if (end >= len) { - raise_errmsg("Invalid \\uXXXX escape", pystr, next - 1); - goto bail; - } - /* Decode 4 hex digits */ - for (; next < end; next++) { - Py_UNICODE digit = buf[next]; - c <<= 4; - switch (digit) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - c |= (digit - '0'); break; - case 'a': case 'b': case 'c': case 'd': case 'e': - case 'f': - c |= (digit - 'a' + 10); break; - case 'A': case 'B': case 'C': case 'D': case 'E': - case 'F': - c |= (digit - 'A' + 10); break; - default: - raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5); - goto bail; - } - } -#ifdef Py_UNICODE_WIDE - /* Surrogate pair */ - if ((c & 0xfc00) == 0xd800) { - Py_UNICODE c2 = 0; - if (end + 6 >= len) { - raise_errmsg("Unpaired high surrogate", pystr, end - 5); - goto bail; - } - if (buf[next++] != '\\' || buf[next++] != 'u') { - raise_errmsg("Unpaired high surrogate", pystr, end - 5); - goto bail; - } - end += 6; - /* Decode 4 hex digits */ - for (; next < end; next++) { - c2 <<= 4; - Py_UNICODE digit = buf[next]; - switch (digit) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - c2 |= (digit - '0'); break; - case 'a': case 'b': case 'c': case 'd': case 'e': - case 'f': - c2 |= (digit - 'a' + 10); break; - case 'A': case 'B': case 'C': case 'D': case 'E': - case 'F': - c2 |= (digit - 'A' + 10); break; - default: - raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5); - goto bail; - } - } - if ((c2 & 0xfc00) != 0xdc00) { - raise_errmsg("Unpaired high surrogate", pystr, end - 5); - goto bail; - } - c = 0x10000 + (((c - 0xd800) << 10) | (c2 - 0xdc00)); - } - else if ((c & 0xfc00) == 0xdc00) { - raise_errmsg("Unpaired low surrogate", pystr, end - 5); - goto bail; - } -#endif - } - if (c > 0x7f) { - has_unicode = 1; - } - APPEND_OLD_CHUNK - if (has_unicode) { - chunk = PyUnicode_FromUnicode(&c, 1); - if (chunk == NULL) { - goto bail; - } - } - else { - char c_char = Py_CHARMASK(c); - chunk = PyString_FromStringAndSize(&c_char, 1); - if (chunk == NULL) { - goto bail; - } - } - } - - if (chunks == NULL) { - if (chunk != NULL) - rval = chunk; - else - rval = PyString_FromStringAndSize("", 0); - } - else { - APPEND_OLD_CHUNK - rval = join_list_string(chunks); - if (rval == NULL) { - goto bail; - } - Py_CLEAR(chunks); - } - - *next_end_ptr = end; - return rval; -bail: - *next_end_ptr = -1; - Py_XDECREF(chunk); - Py_XDECREF(chunks); - return NULL; -} - - -static PyObject * -scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict, Py_ssize_t *next_end_ptr) -{ - /* Read the JSON string from PyUnicode pystr. - end is the index of the first character after the quote. - if strict is zero then literal control characters are allowed - *next_end_ptr is a return-by-reference index of the character - after the end quote - - Return value is a new PyUnicode - */ - PyObject *rval; - Py_ssize_t len = PyUnicode_GET_SIZE(pystr); - Py_ssize_t begin = end - 1; - Py_ssize_t next = begin; - const Py_UNICODE *buf = PyUnicode_AS_UNICODE(pystr); - PyObject *chunks = NULL; - PyObject *chunk = NULL; - - if (end < 0 || len <= end) { - PyErr_SetString(PyExc_ValueError, "end is out of bounds"); - goto bail; - } - while (1) { - /* Find the end of the string or the next escape */ - Py_UNICODE c = 0; - for (next = end; next < len; next++) { - c = buf[next]; - if (c == '"' || c == '\\') { - break; - } - else if (strict && c <= 0x1f) { - raise_errmsg("Invalid control character at", pystr, next); - goto bail; - } - } - if (!(c == '"' || c == '\\')) { - raise_errmsg("Unterminated string starting at", pystr, begin); - goto bail; - } - /* Pick up this chunk if it's not zero length */ - if (next != end) { - APPEND_OLD_CHUNK - chunk = PyUnicode_FromUnicode(&buf[end], next - end); - if (chunk == NULL) { - goto bail; - } - } - next++; - if (c == '"') { - end = next; - break; - } - if (next == len) { - raise_errmsg("Unterminated string starting at", pystr, begin); - goto bail; - } - c = buf[next]; - if (c != 'u') { - /* Non-unicode backslash escapes */ - end = next + 1; - switch (c) { - case '"': break; - case '\\': break; - case '/': break; - case 'b': c = '\b'; break; - case 'f': c = '\f'; break; - case 'n': c = '\n'; break; - case 'r': c = '\r'; break; - case 't': c = '\t'; break; - default: c = 0; - } - if (c == 0) { - raise_errmsg("Invalid \\escape", pystr, end - 2); - goto bail; - } - } - else { - c = 0; - next++; - end = next + 4; - if (end >= len) { - raise_errmsg("Invalid \\uXXXX escape", pystr, next - 1); - goto bail; - } - /* Decode 4 hex digits */ - for (; next < end; next++) { - Py_UNICODE digit = buf[next]; - c <<= 4; - switch (digit) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - c |= (digit - '0'); break; - case 'a': case 'b': case 'c': case 'd': case 'e': - case 'f': - c |= (digit - 'a' + 10); break; - case 'A': case 'B': case 'C': case 'D': case 'E': - case 'F': - c |= (digit - 'A' + 10); break; - default: - raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5); - goto bail; - } - } -#ifdef Py_UNICODE_WIDE - /* Surrogate pair */ - if ((c & 0xfc00) == 0xd800) { - Py_UNICODE c2 = 0; - if (end + 6 >= len) { - raise_errmsg("Unpaired high surrogate", pystr, end - 5); - goto bail; - } - if (buf[next++] != '\\' || buf[next++] != 'u') { - raise_errmsg("Unpaired high surrogate", pystr, end - 5); - goto bail; - } - end += 6; - /* Decode 4 hex digits */ - for (; next < end; next++) { - c2 <<= 4; - Py_UNICODE digit = buf[next]; - switch (digit) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - c2 |= (digit - '0'); break; - case 'a': case 'b': case 'c': case 'd': case 'e': - case 'f': - c2 |= (digit - 'a' + 10); break; - case 'A': case 'B': case 'C': case 'D': case 'E': - case 'F': - c2 |= (digit - 'A' + 10); break; - default: - raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5); - goto bail; - } - } - if ((c2 & 0xfc00) != 0xdc00) { - raise_errmsg("Unpaired high surrogate", pystr, end - 5); - goto bail; - } - c = 0x10000 + (((c - 0xd800) << 10) | (c2 - 0xdc00)); - } - else if ((c & 0xfc00) == 0xdc00) { - raise_errmsg("Unpaired low surrogate", pystr, end - 5); - goto bail; - } -#endif - } - APPEND_OLD_CHUNK - chunk = PyUnicode_FromUnicode(&c, 1); - if (chunk == NULL) { - goto bail; - } - } - - if (chunks == NULL) { - if (chunk != NULL) - rval = chunk; - else - rval = PyUnicode_FromUnicode(NULL, 0); - } - else { - APPEND_OLD_CHUNK - rval = join_list_unicode(chunks); - if (rval == NULL) { - goto bail; - } - Py_CLEAR(chunks); - } - *next_end_ptr = end; - return rval; -bail: - *next_end_ptr = -1; - Py_XDECREF(chunk); - Py_XDECREF(chunks); - return NULL; -} - -PyDoc_STRVAR(pydoc_scanstring, - "scanstring(basestring, end, encoding, strict=True) -> (str, end)\n" - "\n" - "Scan the string s for a JSON string. End is the index of the\n" - "character in s after the quote that started the JSON string.\n" - "Unescapes all valid JSON string escape sequences and raises ValueError\n" - "on attempt to decode an invalid string. If strict is False then literal\n" - "control characters are allowed in the string.\n" - "\n" - "Returns a tuple of the decoded string and the index of the character in s\n" - "after the end quote." -); - -static PyObject * -py_scanstring(PyObject* self UNUSED, PyObject *args) -{ - PyObject *pystr; - PyObject *rval; - Py_ssize_t end; - Py_ssize_t next_end = -1; - char *encoding = NULL; - int strict = 1; - if (!PyArg_ParseTuple(args, "OO&|zi:scanstring", &pystr, _convertPyInt_AsSsize_t, &end, &encoding, &strict)) { - return NULL; - } - if (encoding == NULL) { - encoding = DEFAULT_ENCODING; - } - if (PyString_Check(pystr)) { - rval = scanstring_str(pystr, end, encoding, strict, &next_end); - } - else if (PyUnicode_Check(pystr)) { - rval = scanstring_unicode(pystr, end, strict, &next_end); - } - else { - PyErr_Format(PyExc_TypeError, - "first argument must be a string, not %.80s", - Py_TYPE(pystr)->tp_name); - return NULL; - } - return _build_rval_index_tuple(rval, next_end); -} - -PyDoc_STRVAR(pydoc_encode_basestring_ascii, - "encode_basestring_ascii(basestring) -> str\n" - "\n" - "Return an ASCII-only JSON representation of a Python string" -); - -static PyObject * -py_encode_basestring_ascii(PyObject* self UNUSED, PyObject *pystr) -{ - /* Return an ASCII-only JSON representation of a Python string */ - /* METH_O */ - if (PyString_Check(pystr)) { - return ascii_escape_str(pystr); - } - else if (PyUnicode_Check(pystr)) { - return ascii_escape_unicode(pystr); - } - else { - PyErr_Format(PyExc_TypeError, - "first argument must be a string, not %.80s", - Py_TYPE(pystr)->tp_name); - return NULL; - } -} - -static void -scanner_dealloc(PyObject *self) -{ - /* Deallocate scanner object */ - scanner_clear(self); - Py_TYPE(self)->tp_free(self); -} - -static int -scanner_traverse(PyObject *self, visitproc visit, void *arg) -{ - PyScannerObject *s; - assert(PyScanner_Check(self)); - s = (PyScannerObject *)self; - Py_VISIT(s->encoding); - Py_VISIT(s->strict); - Py_VISIT(s->object_hook); - Py_VISIT(s->pairs_hook); - Py_VISIT(s->parse_float); - Py_VISIT(s->parse_int); - Py_VISIT(s->parse_constant); - Py_VISIT(s->memo); - return 0; -} - -static int -scanner_clear(PyObject *self) -{ - PyScannerObject *s; - assert(PyScanner_Check(self)); - s = (PyScannerObject *)self; - Py_CLEAR(s->encoding); - Py_CLEAR(s->strict); - Py_CLEAR(s->object_hook); - Py_CLEAR(s->pairs_hook); - Py_CLEAR(s->parse_float); - Py_CLEAR(s->parse_int); - Py_CLEAR(s->parse_constant); - Py_CLEAR(s->memo); - return 0; -} - -static PyObject * -_parse_object_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) { - /* Read a JSON object from PyString pystr. - idx is the index of the first character after the opening curly brace. - *next_idx_ptr is a return-by-reference index to the first character after - the closing curly brace. - - Returns a new PyObject (usually a dict, but object_hook or - object_pairs_hook can change that) - */ - char *str = PyString_AS_STRING(pystr); - Py_ssize_t end_idx = PyString_GET_SIZE(pystr) - 1; - PyObject *rval = NULL; - PyObject *pairs = NULL; - PyObject *item; - PyObject *key = NULL; - PyObject *val = NULL; - char *encoding = PyString_AS_STRING(s->encoding); - int strict = PyObject_IsTrue(s->strict); - int has_pairs_hook = (s->pairs_hook != Py_None); - Py_ssize_t next_idx; - if (has_pairs_hook) { - pairs = PyList_New(0); - if (pairs == NULL) - return NULL; - } - else { - rval = PyDict_New(); - if (rval == NULL) - return NULL; - } - - /* skip whitespace after { */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* only loop if the object is non-empty */ - if (idx <= end_idx && str[idx] != '}') { - while (idx <= end_idx) { - PyObject *memokey; - - /* read key */ - if (str[idx] != '"') { - raise_errmsg("Expecting property name", pystr, idx); - goto bail; - } - key = scanstring_str(pystr, idx + 1, encoding, strict, &next_idx); - if (key == NULL) - goto bail; - memokey = PyDict_GetItem(s->memo, key); - if (memokey != NULL) { - Py_INCREF(memokey); - Py_DECREF(key); - key = memokey; - } - else { - if (PyDict_SetItem(s->memo, key, key) < 0) - goto bail; - } - idx = next_idx; - - /* skip whitespace between key and : delimiter, read :, skip whitespace */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - if (idx > end_idx || str[idx] != ':') { - raise_errmsg("Expecting : delimiter", pystr, idx); - goto bail; - } - idx++; - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* read any JSON data type */ - val = scan_once_str(s, pystr, idx, &next_idx); - if (val == NULL) - goto bail; - - if (has_pairs_hook) { - item = PyTuple_Pack(2, key, val); - if (item == NULL) - goto bail; - Py_CLEAR(key); - Py_CLEAR(val); - if (PyList_Append(pairs, item) == -1) { - Py_DECREF(item); - goto bail; - } - Py_DECREF(item); - } - else { - if (PyDict_SetItem(rval, key, val) < 0) - goto bail; - Py_CLEAR(key); - Py_CLEAR(val); - } - idx = next_idx; - - /* skip whitespace before } or , */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* bail if the object is closed or we didn't get the , delimiter */ - if (idx > end_idx) break; - if (str[idx] == '}') { - break; - } - else if (str[idx] != ',') { - raise_errmsg("Expecting , delimiter", pystr, idx); - goto bail; - } - idx++; - - /* skip whitespace after , delimiter */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - } - } - /* verify that idx < end_idx, str[idx] should be '}' */ - if (idx > end_idx || str[idx] != '}') { - raise_errmsg("Expecting object", pystr, end_idx); - goto bail; - } - - /* if pairs_hook is not None: rval = object_pairs_hook(pairs) */ - if (s->pairs_hook != Py_None) { - val = PyObject_CallFunctionObjArgs(s->pairs_hook, pairs, NULL); - if (val == NULL) - goto bail; - Py_DECREF(pairs); - *next_idx_ptr = idx + 1; - return val; - } - - /* if object_hook is not None: rval = object_hook(rval) */ - if (s->object_hook != Py_None) { - val = PyObject_CallFunctionObjArgs(s->object_hook, rval, NULL); - if (val == NULL) - goto bail; - Py_DECREF(rval); - rval = val; - val = NULL; - } - *next_idx_ptr = idx + 1; - return rval; -bail: - Py_XDECREF(rval); - Py_XDECREF(key); - Py_XDECREF(val); - Py_XDECREF(pairs); - return NULL; -} - -static PyObject * -_parse_object_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) { - /* Read a JSON object from PyUnicode pystr. - idx is the index of the first character after the opening curly brace. - *next_idx_ptr is a return-by-reference index to the first character after - the closing curly brace. - - Returns a new PyObject (usually a dict, but object_hook can change that) - */ - Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr); - Py_ssize_t end_idx = PyUnicode_GET_SIZE(pystr) - 1; - PyObject *rval = NULL; - PyObject *pairs = NULL; - PyObject *item; - PyObject *key = NULL; - PyObject *val = NULL; - int strict = PyObject_IsTrue(s->strict); - int has_pairs_hook = (s->pairs_hook != Py_None); - Py_ssize_t next_idx; - - if (has_pairs_hook) { - pairs = PyList_New(0); - if (pairs == NULL) - return NULL; - } - else { - rval = PyDict_New(); - if (rval == NULL) - return NULL; - } - - /* skip whitespace after { */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* only loop if the object is non-empty */ - if (idx <= end_idx && str[idx] != '}') { - while (idx <= end_idx) { - PyObject *memokey; - - /* read key */ - if (str[idx] != '"') { - raise_errmsg("Expecting property name", pystr, idx); - goto bail; - } - key = scanstring_unicode(pystr, idx + 1, strict, &next_idx); - if (key == NULL) - goto bail; - memokey = PyDict_GetItem(s->memo, key); - if (memokey != NULL) { - Py_INCREF(memokey); - Py_DECREF(key); - key = memokey; - } - else { - if (PyDict_SetItem(s->memo, key, key) < 0) - goto bail; - } - idx = next_idx; - - /* skip whitespace between key and : delimiter, read :, skip whitespace */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - if (idx > end_idx || str[idx] != ':') { - raise_errmsg("Expecting : delimiter", pystr, idx); - goto bail; - } - idx++; - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* read any JSON term */ - val = scan_once_unicode(s, pystr, idx, &next_idx); - if (val == NULL) - goto bail; - - if (has_pairs_hook) { - item = PyTuple_Pack(2, key, val); - if (item == NULL) - goto bail; - Py_CLEAR(key); - Py_CLEAR(val); - if (PyList_Append(pairs, item) == -1) { - Py_DECREF(item); - goto bail; - } - Py_DECREF(item); - } - else { - if (PyDict_SetItem(rval, key, val) < 0) - goto bail; - Py_CLEAR(key); - Py_CLEAR(val); - } - idx = next_idx; - - /* skip whitespace before } or , */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* bail if the object is closed or we didn't get the , delimiter */ - if (idx > end_idx) break; - if (str[idx] == '}') { - break; - } - else if (str[idx] != ',') { - raise_errmsg("Expecting , delimiter", pystr, idx); - goto bail; - } - idx++; - - /* skip whitespace after , delimiter */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - } - } - - /* verify that idx < end_idx, str[idx] should be '}' */ - if (idx > end_idx || str[idx] != '}') { - raise_errmsg("Expecting object", pystr, end_idx); - goto bail; - } - - /* if pairs_hook is not None: rval = object_pairs_hook(pairs) */ - if (s->pairs_hook != Py_None) { - val = PyObject_CallFunctionObjArgs(s->pairs_hook, pairs, NULL); - if (val == NULL) - goto bail; - Py_DECREF(pairs); - *next_idx_ptr = idx + 1; - return val; - } - - /* if object_hook is not None: rval = object_hook(rval) */ - if (s->object_hook != Py_None) { - val = PyObject_CallFunctionObjArgs(s->object_hook, rval, NULL); - if (val == NULL) - goto bail; - Py_DECREF(rval); - rval = val; - val = NULL; - } - *next_idx_ptr = idx + 1; - return rval; -bail: - Py_XDECREF(rval); - Py_XDECREF(key); - Py_XDECREF(val); - Py_XDECREF(pairs); - return NULL; -} - -static PyObject * -_parse_array_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) { - /* Read a JSON array from PyString pystr. - idx is the index of the first character after the opening brace. - *next_idx_ptr is a return-by-reference index to the first character after - the closing brace. - - Returns a new PyList - */ - char *str = PyString_AS_STRING(pystr); - Py_ssize_t end_idx = PyString_GET_SIZE(pystr) - 1; - PyObject *val = NULL; - PyObject *rval = PyList_New(0); - Py_ssize_t next_idx; - if (rval == NULL) - return NULL; - - /* skip whitespace after [ */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* only loop if the array is non-empty */ - if (idx <= end_idx && str[idx] != ']') { - while (idx <= end_idx) { - - /* read any JSON term and de-tuplefy the (rval, idx) */ - val = scan_once_str(s, pystr, idx, &next_idx); - if (val == NULL) { - if (PyErr_ExceptionMatches(PyExc_StopIteration)) { - PyErr_Clear(); - raise_errmsg("Expecting object", pystr, idx); - } - goto bail; - } - - if (PyList_Append(rval, val) == -1) - goto bail; - - Py_CLEAR(val); - idx = next_idx; - - /* skip whitespace between term and , */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* bail if the array is closed or we didn't get the , delimiter */ - if (idx > end_idx) break; - if (str[idx] == ']') { - break; - } - else if (str[idx] != ',') { - raise_errmsg("Expecting , delimiter", pystr, idx); - goto bail; - } - idx++; - - /* skip whitespace after , */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - } - } - - /* verify that idx < end_idx, str[idx] should be ']' */ - if (idx > end_idx || str[idx] != ']') { - raise_errmsg("Expecting object", pystr, end_idx); - goto bail; - } - *next_idx_ptr = idx + 1; - return rval; -bail: - Py_XDECREF(val); - Py_DECREF(rval); - return NULL; -} - -static PyObject * -_parse_array_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) { - /* Read a JSON array from PyString pystr. - idx is the index of the first character after the opening brace. - *next_idx_ptr is a return-by-reference index to the first character after - the closing brace. - - Returns a new PyList - */ - Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr); - Py_ssize_t end_idx = PyUnicode_GET_SIZE(pystr) - 1; - PyObject *val = NULL; - PyObject *rval = PyList_New(0); - Py_ssize_t next_idx; - if (rval == NULL) - return NULL; - - /* skip whitespace after [ */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* only loop if the array is non-empty */ - if (idx <= end_idx && str[idx] != ']') { - while (idx <= end_idx) { - - /* read any JSON term */ - val = scan_once_unicode(s, pystr, idx, &next_idx); - if (val == NULL) { - if (PyErr_ExceptionMatches(PyExc_StopIteration)) { - PyErr_Clear(); - raise_errmsg("Expecting object", pystr, idx); - } - goto bail; - } - - if (PyList_Append(rval, val) == -1) - goto bail; - - Py_CLEAR(val); - idx = next_idx; - - /* skip whitespace between term and , */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - - /* bail if the array is closed or we didn't get the , delimiter */ - if (idx > end_idx) break; - if (str[idx] == ']') { - break; - } - else if (str[idx] != ',') { - raise_errmsg("Expecting , delimiter", pystr, idx); - goto bail; - } - idx++; - - /* skip whitespace after , */ - while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++; - } - } - - /* verify that idx < end_idx, str[idx] should be ']' */ - if (idx > end_idx || str[idx] != ']') { - raise_errmsg("Expecting object", pystr, end_idx); - goto bail; - } - *next_idx_ptr = idx + 1; - return rval; -bail: - Py_XDECREF(val); - Py_DECREF(rval); - return NULL; -} - -static PyObject * -_parse_constant(PyScannerObject *s, char *constant, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) { - /* Read a JSON constant from PyString pystr. - constant is the constant string that was found - ("NaN", "Infinity", "-Infinity"). - idx is the index of the first character of the constant - *next_idx_ptr is a return-by-reference index to the first character after - the constant. - - Returns the result of parse_constant - */ - PyObject *cstr; - PyObject *rval; - /* constant is "NaN", "Infinity", or "-Infinity" */ - cstr = PyString_InternFromString(constant); - if (cstr == NULL) - return NULL; - - /* rval = parse_constant(constant) */ - rval = PyObject_CallFunctionObjArgs(s->parse_constant, cstr, NULL); - idx += PyString_GET_SIZE(cstr); - Py_DECREF(cstr); - *next_idx_ptr = idx; - return rval; -} - -static PyObject * -_match_number_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t start, Py_ssize_t *next_idx_ptr) { - /* Read a JSON number from PyString pystr. - idx is the index of the first character of the number - *next_idx_ptr is a return-by-reference index to the first character after - the number. - - Returns a new PyObject representation of that number: - PyInt, PyLong, or PyFloat. - May return other types if parse_int or parse_float are set - */ - char *str = PyString_AS_STRING(pystr); - Py_ssize_t end_idx = PyString_GET_SIZE(pystr) - 1; - Py_ssize_t idx = start; - int is_float = 0; - PyObject *rval; - PyObject *numstr; - - /* read a sign if it's there, make sure it's not the end of the string */ - if (str[idx] == '-') { - idx++; - if (idx > end_idx) { - PyErr_SetNone(PyExc_StopIteration); - return NULL; - } - } - - /* read as many integer digits as we find as long as it doesn't start with 0 */ - if (str[idx] >= '1' && str[idx] <= '9') { - idx++; - while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++; - } - /* if it starts with 0 we only expect one integer digit */ - else if (str[idx] == '0') { - idx++; - } - /* no integer digits, error */ - else { - PyErr_SetNone(PyExc_StopIteration); - return NULL; - } - - /* if the next char is '.' followed by a digit then read all float digits */ - if (idx < end_idx && str[idx] == '.' && str[idx + 1] >= '0' && str[idx + 1] <= '9') { - is_float = 1; - idx += 2; - while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++; - } - - /* if the next char is 'e' or 'E' then maybe read the exponent (or backtrack) */ - if (idx < end_idx && (str[idx] == 'e' || str[idx] == 'E')) { - - /* save the index of the 'e' or 'E' just in case we need to backtrack */ - Py_ssize_t e_start = idx; - idx++; - - /* read an exponent sign if present */ - if (idx < end_idx && (str[idx] == '-' || str[idx] == '+')) idx++; - - /* read all digits */ - while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++; - - /* if we got a digit, then parse as float. if not, backtrack */ - if (str[idx - 1] >= '0' && str[idx - 1] <= '9') { - is_float = 1; - } - else { - idx = e_start; - } - } - - /* copy the section we determined to be a number */ - numstr = PyString_FromStringAndSize(&str[start], idx - start); - if (numstr == NULL) - return NULL; - if (is_float) { - /* parse as a float using a fast path if available, otherwise call user defined method */ - if (s->parse_float != (PyObject *)&PyFloat_Type) { - rval = PyObject_CallFunctionObjArgs(s->parse_float, numstr, NULL); - } - else { - /* rval = PyFloat_FromDouble(PyOS_ascii_atof(PyString_AS_STRING(numstr))); */ - double d = PyOS_string_to_double(PyString_AS_STRING(numstr), - NULL, NULL); - if (d == -1.0 && PyErr_Occurred()) - return NULL; - rval = PyFloat_FromDouble(d); - } - } - else { - /* parse as an int using a fast path if available, otherwise call user defined method */ - if (s->parse_int != (PyObject *)&PyInt_Type) { - rval = PyObject_CallFunctionObjArgs(s->parse_int, numstr, NULL); - } - else { - rval = PyInt_FromString(PyString_AS_STRING(numstr), NULL, 10); - } - } - Py_DECREF(numstr); - *next_idx_ptr = idx; - return rval; -} - -static PyObject * -_match_number_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t start, Py_ssize_t *next_idx_ptr) { - /* Read a JSON number from PyUnicode pystr. - idx is the index of the first character of the number - *next_idx_ptr is a return-by-reference index to the first character after - the number. - - Returns a new PyObject representation of that number: - PyInt, PyLong, or PyFloat. - May return other types if parse_int or parse_float are set - */ - Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr); - Py_ssize_t end_idx = PyUnicode_GET_SIZE(pystr) - 1; - Py_ssize_t idx = start; - int is_float = 0; - PyObject *rval; - PyObject *numstr; - - /* read a sign if it's there, make sure it's not the end of the string */ - if (str[idx] == '-') { - idx++; - if (idx > end_idx) { - PyErr_SetNone(PyExc_StopIteration); - return NULL; - } - } - - /* read as many integer digits as we find as long as it doesn't start with 0 */ - if (str[idx] >= '1' && str[idx] <= '9') { - idx++; - while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++; - } - /* if it starts with 0 we only expect one integer digit */ - else if (str[idx] == '0') { - idx++; - } - /* no integer digits, error */ - else { - PyErr_SetNone(PyExc_StopIteration); - return NULL; - } - - /* if the next char is '.' followed by a digit then read all float digits */ - if (idx < end_idx && str[idx] == '.' && str[idx + 1] >= '0' && str[idx + 1] <= '9') { - is_float = 1; - idx += 2; - while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++; - } - - /* if the next char is 'e' or 'E' then maybe read the exponent (or backtrack) */ - if (idx < end_idx && (str[idx] == 'e' || str[idx] == 'E')) { - Py_ssize_t e_start = idx; - idx++; - - /* read an exponent sign if present */ - if (idx < end_idx && (str[idx] == '-' || str[idx] == '+')) idx++; - - /* read all digits */ - while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++; - - /* if we got a digit, then parse as float. if not, backtrack */ - if (str[idx - 1] >= '0' && str[idx - 1] <= '9') { - is_float = 1; - } - else { - idx = e_start; - } - } - - /* copy the section we determined to be a number */ - numstr = PyUnicode_FromUnicode(&str[start], idx - start); - if (numstr == NULL) - return NULL; - if (is_float) { - /* parse as a float using a fast path if available, otherwise call user defined method */ - if (s->parse_float != (PyObject *)&PyFloat_Type) { - rval = PyObject_CallFunctionObjArgs(s->parse_float, numstr, NULL); - } - else { - rval = PyFloat_FromString(numstr, NULL); - } - } - else { - /* no fast path for unicode -> int, just call */ - rval = PyObject_CallFunctionObjArgs(s->parse_int, numstr, NULL); - } - Py_DECREF(numstr); - *next_idx_ptr = idx; - return rval; -} - -static PyObject * -scan_once_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) -{ - /* Read one JSON term (of any kind) from PyString pystr. - idx is the index of the first character of the term - *next_idx_ptr is a return-by-reference index to the first character after - the number. - - Returns a new PyObject representation of the term. - */ - char *str = PyString_AS_STRING(pystr); - Py_ssize_t length = PyString_GET_SIZE(pystr); - PyObject *rval = NULL; - int fallthrough = 0; - if (idx >= length) { - PyErr_SetNone(PyExc_StopIteration); - return NULL; - } - if (Py_EnterRecursiveCall(" while decoding a JSON document")) - return NULL; - switch (str[idx]) { - case '"': - /* string */ - rval = scanstring_str(pystr, idx + 1, - PyString_AS_STRING(s->encoding), - PyObject_IsTrue(s->strict), - next_idx_ptr); - break; - case '{': - /* object */ - rval = _parse_object_str(s, pystr, idx + 1, next_idx_ptr); - break; - case '[': - /* array */ - rval = _parse_array_str(s, pystr, idx + 1, next_idx_ptr); - break; - case 'n': - /* null */ - if ((idx + 3 < length) && str[idx + 1] == 'u' && str[idx + 2] == 'l' && str[idx + 3] == 'l') { - Py_INCREF(Py_None); - *next_idx_ptr = idx + 4; - rval = Py_None; - } - else - fallthrough = 1; - break; - case 't': - /* true */ - if ((idx + 3 < length) && str[idx + 1] == 'r' && str[idx + 2] == 'u' && str[idx + 3] == 'e') { - Py_INCREF(Py_True); - *next_idx_ptr = idx + 4; - rval = Py_True; - } - else - fallthrough = 1; - break; - case 'f': - /* false */ - if ((idx + 4 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'l' && str[idx + 3] == 's' && str[idx + 4] == 'e') { - Py_INCREF(Py_False); - *next_idx_ptr = idx + 5; - rval = Py_False; - } - else - fallthrough = 1; - break; - case 'N': - /* NaN */ - if ((idx + 2 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'N') { - rval = _parse_constant(s, "NaN", idx, next_idx_ptr); - } - else - fallthrough = 1; - break; - case 'I': - /* Infinity */ - if ((idx + 7 < length) && str[idx + 1] == 'n' && str[idx + 2] == 'f' && str[idx + 3] == 'i' && str[idx + 4] == 'n' && str[idx + 5] == 'i' && str[idx + 6] == 't' && str[idx + 7] == 'y') { - rval = _parse_constant(s, "Infinity", idx, next_idx_ptr); - } - else - fallthrough = 1; - break; - case '-': - /* -Infinity */ - if ((idx + 8 < length) && str[idx + 1] == 'I' && str[idx + 2] == 'n' && str[idx + 3] == 'f' && str[idx + 4] == 'i' && str[idx + 5] == 'n' && str[idx + 6] == 'i' && str[idx + 7] == 't' && str[idx + 8] == 'y') { - rval = _parse_constant(s, "-Infinity", idx, next_idx_ptr); - } - else - fallthrough = 1; - break; - default: - fallthrough = 1; - } - /* Didn't find a string, object, array, or named constant. Look for a number. */ - if (fallthrough) - rval = _match_number_str(s, pystr, idx, next_idx_ptr); - Py_LeaveRecursiveCall(); - return rval; -} - -static PyObject * -scan_once_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) -{ - /* Read one JSON term (of any kind) from PyUnicode pystr. - idx is the index of the first character of the term - *next_idx_ptr is a return-by-reference index to the first character after - the number. - - Returns a new PyObject representation of the term. - */ - Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr); - Py_ssize_t length = PyUnicode_GET_SIZE(pystr); - PyObject *rval = NULL; - int fallthrough = 0; - if (idx >= length) { - PyErr_SetNone(PyExc_StopIteration); - return NULL; - } - if (Py_EnterRecursiveCall(" while decoding a JSON document")) - return NULL; - switch (str[idx]) { - case '"': - /* string */ - rval = scanstring_unicode(pystr, idx + 1, - PyObject_IsTrue(s->strict), - next_idx_ptr); - break; - case '{': - /* object */ - rval = _parse_object_unicode(s, pystr, idx + 1, next_idx_ptr); - break; - case '[': - /* array */ - rval = _parse_array_unicode(s, pystr, idx + 1, next_idx_ptr); - break; - case 'n': - /* null */ - if ((idx + 3 < length) && str[idx + 1] == 'u' && str[idx + 2] == 'l' && str[idx + 3] == 'l') { - Py_INCREF(Py_None); - *next_idx_ptr = idx + 4; - rval = Py_None; - } - else - fallthrough = 1; - break; - case 't': - /* true */ - if ((idx + 3 < length) && str[idx + 1] == 'r' && str[idx + 2] == 'u' && str[idx + 3] == 'e') { - Py_INCREF(Py_True); - *next_idx_ptr = idx + 4; - rval = Py_True; - } - else - fallthrough = 1; - break; - case 'f': - /* false */ - if ((idx + 4 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'l' && str[idx + 3] == 's' && str[idx + 4] == 'e') { - Py_INCREF(Py_False); - *next_idx_ptr = idx + 5; - rval = Py_False; - } - else - fallthrough = 1; - break; - case 'N': - /* NaN */ - if ((idx + 2 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'N') { - rval = _parse_constant(s, "NaN", idx, next_idx_ptr); - } - else - fallthrough = 1; - break; - case 'I': - /* Infinity */ - if ((idx + 7 < length) && str[idx + 1] == 'n' && str[idx + 2] == 'f' && str[idx + 3] == 'i' && str[idx + 4] == 'n' && str[idx + 5] == 'i' && str[idx + 6] == 't' && str[idx + 7] == 'y') { - rval = _parse_constant(s, "Infinity", idx, next_idx_ptr); - } - else - fallthrough = 1; - break; - case '-': - /* -Infinity */ - if ((idx + 8 < length) && str[idx + 1] == 'I' && str[idx + 2] == 'n' && str[idx + 3] == 'f' && str[idx + 4] == 'i' && str[idx + 5] == 'n' && str[idx + 6] == 'i' && str[idx + 7] == 't' && str[idx + 8] == 'y') { - rval = _parse_constant(s, "-Infinity", idx, next_idx_ptr); - } - else - fallthrough = 1; - break; - default: - fallthrough = 1; - } - /* Didn't find a string, object, array, or named constant. Look for a number. */ - if (fallthrough) - rval = _match_number_unicode(s, pystr, idx, next_idx_ptr); - Py_LeaveRecursiveCall(); - return rval; -} - -static PyObject * -scanner_call(PyObject *self, PyObject *args, PyObject *kwds) -{ - /* Python callable interface to scan_once_{str,unicode} */ - PyObject *pystr; - PyObject *rval; - Py_ssize_t idx; - Py_ssize_t next_idx = -1; - static char *kwlist[] = {"string", "idx", NULL}; - PyScannerObject *s; - assert(PyScanner_Check(self)); - s = (PyScannerObject *)self; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO&:scan_once", kwlist, &pystr, _convertPyInt_AsSsize_t, &idx)) - return NULL; - - if (PyString_Check(pystr)) { - rval = scan_once_str(s, pystr, idx, &next_idx); - } - else if (PyUnicode_Check(pystr)) { - rval = scan_once_unicode(s, pystr, idx, &next_idx); - } - else { - PyErr_Format(PyExc_TypeError, - "first argument must be a string, not %.80s", - Py_TYPE(pystr)->tp_name); - return NULL; - } - PyDict_Clear(s->memo); - return _build_rval_index_tuple(rval, next_idx); -} - -static PyObject * -scanner_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - PyScannerObject *s; - s = (PyScannerObject *)type->tp_alloc(type, 0); - if (s != NULL) { - s->encoding = NULL; - s->strict = NULL; - s->object_hook = NULL; - s->pairs_hook = NULL; - s->parse_float = NULL; - s->parse_int = NULL; - s->parse_constant = NULL; - } - return (PyObject *)s; -} - -static int -scanner_init(PyObject *self, PyObject *args, PyObject *kwds) -{ - /* Initialize Scanner object */ - PyObject *ctx; - static char *kwlist[] = {"context", NULL}; - PyScannerObject *s; - - assert(PyScanner_Check(self)); - s = (PyScannerObject *)self; - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:make_scanner", kwlist, &ctx)) - return -1; - - if (s->memo == NULL) { - s->memo = PyDict_New(); - if (s->memo == NULL) - goto bail; - } - - /* PyString_AS_STRING is used on encoding */ - s->encoding = PyObject_GetAttrString(ctx, "encoding"); - if (s->encoding == NULL) - goto bail; - if (s->encoding == Py_None) { - Py_DECREF(Py_None); - s->encoding = PyString_InternFromString(DEFAULT_ENCODING); - } - else if (PyUnicode_Check(s->encoding)) { - PyObject *tmp = PyUnicode_AsEncodedString(s->encoding, NULL, NULL); - Py_DECREF(s->encoding); - s->encoding = tmp; - } - if (s->encoding == NULL || !PyString_Check(s->encoding)) - goto bail; - - /* All of these will fail "gracefully" so we don't need to verify them */ - s->strict = PyObject_GetAttrString(ctx, "strict"); - if (s->strict == NULL) - goto bail; - s->object_hook = PyObject_GetAttrString(ctx, "object_hook"); - if (s->object_hook == NULL) - goto bail; - s->pairs_hook = PyObject_GetAttrString(ctx, "object_pairs_hook"); - if (s->pairs_hook == NULL) - goto bail; - s->parse_float = PyObject_GetAttrString(ctx, "parse_float"); - if (s->parse_float == NULL) - goto bail; - s->parse_int = PyObject_GetAttrString(ctx, "parse_int"); - if (s->parse_int == NULL) - goto bail; - s->parse_constant = PyObject_GetAttrString(ctx, "parse_constant"); - if (s->parse_constant == NULL) - goto bail; - - return 0; - -bail: - Py_CLEAR(s->encoding); - Py_CLEAR(s->strict); - Py_CLEAR(s->object_hook); - Py_CLEAR(s->pairs_hook); - Py_CLEAR(s->parse_float); - Py_CLEAR(s->parse_int); - Py_CLEAR(s->parse_constant); - return -1; -} - -PyDoc_STRVAR(scanner_doc, "JSON scanner object"); - -static -PyTypeObject PyScannerType = { - PyObject_HEAD_INIT(NULL) - 0, /* tp_internal */ - "simplejson._speedups.Scanner", /* tp_name */ - sizeof(PyScannerObject), /* tp_basicsize */ - 0, /* tp_itemsize */ - scanner_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - scanner_call, /* tp_call */ - 0, /* tp_str */ - 0,/* PyObject_GenericGetAttr, */ /* tp_getattro */ - 0,/* PyObject_GenericSetAttr, */ /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */ - scanner_doc, /* tp_doc */ - scanner_traverse, /* tp_traverse */ - scanner_clear, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - scanner_members, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - scanner_init, /* tp_init */ - 0,/* PyType_GenericAlloc, */ /* tp_alloc */ - scanner_new, /* tp_new */ - 0,/* PyObject_GC_Del, */ /* tp_free */ -}; - -static PyObject * -encoder_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - PyEncoderObject *s; - s = (PyEncoderObject *)type->tp_alloc(type, 0); - if (s != NULL) { - s->markers = NULL; - s->defaultfn = NULL; - s->encoder = NULL; - s->indent = NULL; - s->key_separator = NULL; - s->item_separator = NULL; - s->sort_keys = NULL; - s->skipkeys = NULL; - s->key_memo = NULL; - } - return (PyObject *)s; -} - -static int -encoder_init(PyObject *self, PyObject *args, PyObject *kwds) -{ - /* initialize Encoder object */ - static char *kwlist[] = {"markers", "default", "encoder", "indent", "key_separator", "item_separator", "sort_keys", "skipkeys", "allow_nan", "key_memo", "use_decimal", NULL}; - - PyEncoderObject *s; - PyObject *markers, *defaultfn, *encoder, *indent, *key_separator; - PyObject *item_separator, *sort_keys, *skipkeys, *allow_nan, *key_memo, *use_decimal; - - assert(PyEncoder_Check(self)); - s = (PyEncoderObject *)self; - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOOOOOOOOO:make_encoder", kwlist, - &markers, &defaultfn, &encoder, &indent, &key_separator, &item_separator, - &sort_keys, &skipkeys, &allow_nan, &key_memo, &use_decimal)) - return -1; - - s->markers = markers; - s->defaultfn = defaultfn; - s->encoder = encoder; - s->indent = indent; - s->key_separator = key_separator; - s->item_separator = item_separator; - s->sort_keys = sort_keys; - s->skipkeys = skipkeys; - s->key_memo = key_memo; - s->fast_encode = (PyCFunction_Check(s->encoder) && PyCFunction_GetFunction(s->encoder) == (PyCFunction)py_encode_basestring_ascii); - s->allow_nan = PyObject_IsTrue(allow_nan); - s->use_decimal = PyObject_IsTrue(use_decimal); - - Py_INCREF(s->markers); - Py_INCREF(s->defaultfn); - Py_INCREF(s->encoder); - Py_INCREF(s->indent); - Py_INCREF(s->key_separator); - Py_INCREF(s->item_separator); - Py_INCREF(s->sort_keys); - Py_INCREF(s->skipkeys); - Py_INCREF(s->key_memo); - return 0; -} - -static PyObject * -encoder_call(PyObject *self, PyObject *args, PyObject *kwds) -{ - /* Python callable interface to encode_listencode_obj */ - static char *kwlist[] = {"obj", "_current_indent_level", NULL}; - PyObject *obj; - PyObject *rval; - Py_ssize_t indent_level; - PyEncoderObject *s; - assert(PyEncoder_Check(self)); - s = (PyEncoderObject *)self; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO&:_iterencode", kwlist, - &obj, _convertPyInt_AsSsize_t, &indent_level)) - return NULL; - rval = PyList_New(0); - if (rval == NULL) - return NULL; - if (encoder_listencode_obj(s, rval, obj, indent_level)) { - Py_DECREF(rval); - return NULL; - } - return rval; -} - -static PyObject * -_encoded_const(PyObject *obj) -{ - /* Return the JSON string representation of None, True, False */ - if (obj == Py_None) { - static PyObject *s_null = NULL; - if (s_null == NULL) { - s_null = PyString_InternFromString("null"); - } - Py_INCREF(s_null); - return s_null; - } - else if (obj == Py_True) { - static PyObject *s_true = NULL; - if (s_true == NULL) { - s_true = PyString_InternFromString("true"); - } - Py_INCREF(s_true); - return s_true; - } - else if (obj == Py_False) { - static PyObject *s_false = NULL; - if (s_false == NULL) { - s_false = PyString_InternFromString("false"); - } - Py_INCREF(s_false); - return s_false; - } - else { - PyErr_SetString(PyExc_ValueError, "not a const"); - return NULL; - } -} - -static PyObject * -encoder_encode_float(PyEncoderObject *s, PyObject *obj) -{ - /* Return the JSON representation of a PyFloat */ - double i = PyFloat_AS_DOUBLE(obj); - if (!Py_IS_FINITE(i)) { - if (!s->allow_nan) { - PyErr_SetString(PyExc_ValueError, "Out of range float values are not JSON compliant"); - return NULL; - } - if (i > 0) { - return PyString_FromString("Infinity"); - } - else if (i < 0) { - return PyString_FromString("-Infinity"); - } - else { - return PyString_FromString("NaN"); - } - } - /* Use a better float format here? */ - return PyObject_Repr(obj); -} - -static PyObject * -encoder_encode_string(PyEncoderObject *s, PyObject *obj) -{ - /* Return the JSON representation of a string */ - if (s->fast_encode) - return py_encode_basestring_ascii(NULL, obj); - else - return PyObject_CallFunctionObjArgs(s->encoder, obj, NULL); -} - -static int -_steal_list_append(PyObject *lst, PyObject *stolen) -{ - /* Append stolen and then decrement its reference count */ - int rval = PyList_Append(lst, stolen); - Py_DECREF(stolen); - return rval; -} - -static int -encoder_listencode_obj(PyEncoderObject *s, PyObject *rval, PyObject *obj, Py_ssize_t indent_level) -{ - /* Encode Python object obj to a JSON term, rval is a PyList */ - int rv = -1; - if (Py_EnterRecursiveCall(" while encoding a JSON document")) - return rv; - do { - if (obj == Py_None || obj == Py_True || obj == Py_False) { - PyObject *cstr = _encoded_const(obj); - if (cstr != NULL) - rv = _steal_list_append(rval, cstr); - } - else if (PyString_Check(obj) || PyUnicode_Check(obj)) - { - PyObject *encoded = encoder_encode_string(s, obj); - if (encoded != NULL) - rv = _steal_list_append(rval, encoded); - } - else if (PyInt_Check(obj) || PyLong_Check(obj)) { - PyObject *encoded = PyObject_Str(obj); - if (encoded != NULL) - rv = _steal_list_append(rval, encoded); - } - else if (PyFloat_Check(obj)) { - PyObject *encoded = encoder_encode_float(s, obj); - if (encoded != NULL) - rv = _steal_list_append(rval, encoded); - } - else if (PyList_Check(obj) || PyTuple_Check(obj)) { - rv = encoder_listencode_list(s, rval, obj, indent_level); - } - else if (PyDict_Check(obj)) { - rv = encoder_listencode_dict(s, rval, obj, indent_level); - } - else if (s->use_decimal && Decimal_Check(obj)) { - PyObject *encoded = PyObject_Str(obj); - if (encoded != NULL) - rv = _steal_list_append(rval, encoded); - } - else { - PyObject *ident = NULL; - PyObject *newobj; - if (s->markers != Py_None) { - int has_key; - ident = PyLong_FromVoidPtr(obj); - if (ident == NULL) - break; - has_key = PyDict_Contains(s->markers, ident); - if (has_key) { - if (has_key != -1) - PyErr_SetString(PyExc_ValueError, "Circular reference detected"); - Py_DECREF(ident); - break; - } - if (PyDict_SetItem(s->markers, ident, obj)) { - Py_DECREF(ident); - break; - } - } - newobj = PyObject_CallFunctionObjArgs(s->defaultfn, obj, NULL); - if (newobj == NULL) { - Py_XDECREF(ident); - break; - } - rv = encoder_listencode_obj(s, rval, newobj, indent_level); - Py_DECREF(newobj); - if (rv) { - Py_XDECREF(ident); - rv = -1; - } - else if (ident != NULL) { - if (PyDict_DelItem(s->markers, ident)) { - Py_XDECREF(ident); - rv = -1; - } - Py_XDECREF(ident); - } - } - } while (0); - Py_LeaveRecursiveCall(); - return rv; -} - -static int -encoder_listencode_dict(PyEncoderObject *s, PyObject *rval, PyObject *dct, Py_ssize_t indent_level) -{ - /* Encode Python dict dct a JSON term, rval is a PyList */ - static PyObject *open_dict = NULL; - static PyObject *close_dict = NULL; - static PyObject *empty_dict = NULL; - static PyObject *iteritems = NULL; - PyObject *kstr = NULL; - PyObject *ident = NULL; - PyObject *iter = NULL; - PyObject *item = NULL; - PyObject *items = NULL; - PyObject *encoded = NULL; - int skipkeys; - Py_ssize_t idx; - - if (open_dict == NULL || close_dict == NULL || empty_dict == NULL || iteritems == NULL) { - open_dict = PyString_InternFromString("{"); - close_dict = PyString_InternFromString("}"); - empty_dict = PyString_InternFromString("{}"); - iteritems = PyString_InternFromString("iteritems"); - if (open_dict == NULL || close_dict == NULL || empty_dict == NULL || iteritems == NULL) - return -1; - } - if (PyDict_Size(dct) == 0) - return PyList_Append(rval, empty_dict); - - if (s->markers != Py_None) { - int has_key; - ident = PyLong_FromVoidPtr(dct); - if (ident == NULL) - goto bail; - has_key = PyDict_Contains(s->markers, ident); - if (has_key) { - if (has_key != -1) - PyErr_SetString(PyExc_ValueError, "Circular reference detected"); - goto bail; - } - if (PyDict_SetItem(s->markers, ident, dct)) { - goto bail; - } - } - - if (PyList_Append(rval, open_dict)) - goto bail; - - if (s->indent != Py_None) { - /* TODO: DOES NOT RUN */ - indent_level += 1; - /* - newline_indent = '\n' + (_indent * _current_indent_level) - separator = _item_separator + newline_indent - buf += newline_indent - */ - } - - if (PyObject_IsTrue(s->sort_keys)) { - /* First sort the keys then replace them with (key, value) tuples. */ - Py_ssize_t i, nitems; - if (PyDict_CheckExact(dct)) - items = PyDict_Keys(dct); - else - items = PyMapping_Keys(dct); - if (items == NULL) - goto bail; - if (!PyList_Check(items)) { - PyErr_SetString(PyExc_ValueError, "keys must return list"); - goto bail; - } - if (PyList_Sort(items) < 0) - goto bail; - nitems = PyList_GET_SIZE(items); - for (i = 0; i < nitems; i++) { - PyObject *key, *value; - key = PyList_GET_ITEM(items, i); - value = PyDict_GetItem(dct, key); - item = PyTuple_Pack(2, key, value); - if (item == NULL) - goto bail; - PyList_SET_ITEM(items, i, item); - Py_DECREF(key); - } - } - else { - if (PyDict_CheckExact(dct)) - items = PyDict_Items(dct); - else - items = PyMapping_Items(dct); - } - if (items == NULL) - goto bail; - iter = PyObject_GetIter(items); - Py_DECREF(items); - if (iter == NULL) - goto bail; - - skipkeys = PyObject_IsTrue(s->skipkeys); - idx = 0; - while ((item = PyIter_Next(iter))) { - PyObject *encoded, *key, *value; - if (!PyTuple_Check(item) || Py_SIZE(item) != 2) { - PyErr_SetString(PyExc_ValueError, "items must return 2-tuples"); - goto bail; - } - key = PyTuple_GET_ITEM(item, 0); - if (key == NULL) - goto bail; - value = PyTuple_GET_ITEM(item, 1); - if (value == NULL) - goto bail; - - encoded = PyDict_GetItem(s->key_memo, key); - if (encoded != NULL) { - Py_INCREF(encoded); - } - else if (PyString_Check(key) || PyUnicode_Check(key)) { - Py_INCREF(key); - kstr = key; - } - else if (PyFloat_Check(key)) { - kstr = encoder_encode_float(s, key); - if (kstr == NULL) - goto bail; - } - else if (key == Py_True || key == Py_False || key == Py_None) { - /* This must come before the PyInt_Check because - True and False are also 1 and 0.*/ - kstr = _encoded_const(key); - if (kstr == NULL) - goto bail; - } - else if (PyInt_Check(key) || PyLong_Check(key)) { - kstr = PyObject_Str(key); - if (kstr == NULL) - goto bail; - } - else if (skipkeys) { - Py_DECREF(item); - continue; - } - else { - /* TODO: include repr of key */ - PyErr_SetString(PyExc_TypeError, "keys must be a string"); - goto bail; - } - - if (idx) { - if (PyList_Append(rval, s->item_separator)) - goto bail; - } - - if (encoded == NULL) { - encoded = encoder_encode_string(s, kstr); - Py_CLEAR(kstr); - if (encoded == NULL) - goto bail; - if (PyDict_SetItem(s->key_memo, key, encoded)) - goto bail; - } - if (PyList_Append(rval, encoded)) { - goto bail; - } - Py_CLEAR(encoded); - if (PyList_Append(rval, s->key_separator)) - goto bail; - if (encoder_listencode_obj(s, rval, value, indent_level)) - goto bail; - Py_CLEAR(item); - idx += 1; - } - Py_CLEAR(iter); - if (PyErr_Occurred()) - goto bail; - if (ident != NULL) { - if (PyDict_DelItem(s->markers, ident)) - goto bail; - Py_CLEAR(ident); - } - if (s->indent != Py_None) { - /* TODO: DOES NOT RUN */ - indent_level -= 1; - /* - yield '\n' + (_indent * _current_indent_level) - */ - } - if (PyList_Append(rval, close_dict)) - goto bail; - return 0; - -bail: - Py_XDECREF(encoded); - Py_XDECREF(items); - Py_XDECREF(iter); - Py_XDECREF(kstr); - Py_XDECREF(ident); - return -1; -} - - -static int -encoder_listencode_list(PyEncoderObject *s, PyObject *rval, PyObject *seq, Py_ssize_t indent_level) -{ - /* Encode Python list seq to a JSON term, rval is a PyList */ - static PyObject *open_array = NULL; - static PyObject *close_array = NULL; - static PyObject *empty_array = NULL; - PyObject *ident = NULL; - PyObject *iter = NULL; - PyObject *obj = NULL; - int is_true; - int i = 0; - - if (open_array == NULL || close_array == NULL || empty_array == NULL) { - open_array = PyString_InternFromString("["); - close_array = PyString_InternFromString("]"); - empty_array = PyString_InternFromString("[]"); - if (open_array == NULL || close_array == NULL || empty_array == NULL) - return -1; - } - ident = NULL; - is_true = PyObject_IsTrue(seq); - if (is_true == -1) - return -1; - else if (is_true == 0) - return PyList_Append(rval, empty_array); - - if (s->markers != Py_None) { - int has_key; - ident = PyLong_FromVoidPtr(seq); - if (ident == NULL) - goto bail; - has_key = PyDict_Contains(s->markers, ident); - if (has_key) { - if (has_key != -1) - PyErr_SetString(PyExc_ValueError, "Circular reference detected"); - goto bail; - } - if (PyDict_SetItem(s->markers, ident, seq)) { - goto bail; - } - } - - iter = PyObject_GetIter(seq); - if (iter == NULL) - goto bail; - - if (PyList_Append(rval, open_array)) - goto bail; - if (s->indent != Py_None) { - /* TODO: DOES NOT RUN */ - indent_level += 1; - /* - newline_indent = '\n' + (_indent * _current_indent_level) - separator = _item_separator + newline_indent - buf += newline_indent - */ - } - while ((obj = PyIter_Next(iter))) { - if (i) { - if (PyList_Append(rval, s->item_separator)) - goto bail; - } - if (encoder_listencode_obj(s, rval, obj, indent_level)) - goto bail; - i++; - Py_CLEAR(obj); - } - Py_CLEAR(iter); - if (PyErr_Occurred()) - goto bail; - if (ident != NULL) { - if (PyDict_DelItem(s->markers, ident)) - goto bail; - Py_CLEAR(ident); - } - if (s->indent != Py_None) { - /* TODO: DOES NOT RUN */ - indent_level -= 1; - /* - yield '\n' + (_indent * _current_indent_level) - */ - } - if (PyList_Append(rval, close_array)) - goto bail; - return 0; - -bail: - Py_XDECREF(obj); - Py_XDECREF(iter); - Py_XDECREF(ident); - return -1; -} - -static void -encoder_dealloc(PyObject *self) -{ - /* Deallocate Encoder */ - encoder_clear(self); - Py_TYPE(self)->tp_free(self); -} - -static int -encoder_traverse(PyObject *self, visitproc visit, void *arg) -{ - PyEncoderObject *s; - assert(PyEncoder_Check(self)); - s = (PyEncoderObject *)self; - Py_VISIT(s->markers); - Py_VISIT(s->defaultfn); - Py_VISIT(s->encoder); - Py_VISIT(s->indent); - Py_VISIT(s->key_separator); - Py_VISIT(s->item_separator); - Py_VISIT(s->sort_keys); - Py_VISIT(s->skipkeys); - Py_VISIT(s->key_memo); - return 0; -} - -static int -encoder_clear(PyObject *self) -{ - /* Deallocate Encoder */ - PyEncoderObject *s; - assert(PyEncoder_Check(self)); - s = (PyEncoderObject *)self; - Py_CLEAR(s->markers); - Py_CLEAR(s->defaultfn); - Py_CLEAR(s->encoder); - Py_CLEAR(s->indent); - Py_CLEAR(s->key_separator); - Py_CLEAR(s->item_separator); - Py_CLEAR(s->sort_keys); - Py_CLEAR(s->skipkeys); - Py_CLEAR(s->key_memo); - return 0; -} - -PyDoc_STRVAR(encoder_doc, "_iterencode(obj, _current_indent_level) -> iterable"); - -static -PyTypeObject PyEncoderType = { - PyObject_HEAD_INIT(NULL) - 0, /* tp_internal */ - "simplejson._speedups.Encoder", /* tp_name */ - sizeof(PyEncoderObject), /* tp_basicsize */ - 0, /* tp_itemsize */ - encoder_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - encoder_call, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */ - encoder_doc, /* tp_doc */ - encoder_traverse, /* tp_traverse */ - encoder_clear, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - encoder_members, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - encoder_init, /* tp_init */ - 0, /* tp_alloc */ - encoder_new, /* tp_new */ - 0, /* tp_free */ -}; - -static PyMethodDef speedups_methods[] = { - {"encode_basestring_ascii", - (PyCFunction)py_encode_basestring_ascii, - METH_O, - pydoc_encode_basestring_ascii}, - {"scanstring", - (PyCFunction)py_scanstring, - METH_VARARGS, - pydoc_scanstring}, - {NULL, NULL, 0, NULL} -}; - -PyDoc_STRVAR(module_doc, -"simplejson speedups\n"); - -void -init_speedups(void) -{ - PyObject *m, *decimal; - PyScannerType.tp_new = PyType_GenericNew; - if (PyType_Ready(&PyScannerType) < 0) - return; - PyEncoderType.tp_new = PyType_GenericNew; - if (PyType_Ready(&PyEncoderType) < 0) - return; - - decimal = PyImport_ImportModule("decimal"); - if (decimal == NULL) - return; - DecimalTypePtr = (PyTypeObject*)PyObject_GetAttrString(decimal, "Decimal"); - Py_DECREF(decimal); - if (DecimalTypePtr == NULL) - return; - - m = Py_InitModule3("_speedups", speedups_methods, module_doc); - Py_INCREF((PyObject*)&PyScannerType); - PyModule_AddObject(m, "make_scanner", (PyObject*)&PyScannerType); - Py_INCREF((PyObject*)&PyEncoderType); - PyModule_AddObject(m, "make_encoder", (PyObject*)&PyEncoderType); -} diff --git a/shotgun_api3/lib/simplejson/decoder.py b/shotgun_api3/lib/simplejson/decoder.py deleted file mode 100644 index e5496d6e7..000000000 --- a/shotgun_api3/lib/simplejson/decoder.py +++ /dev/null @@ -1,421 +0,0 @@ -"""Implementation of JSONDecoder -""" -import re -import sys -import struct - -from simplejson.scanner import make_scanner -def _import_c_scanstring(): - try: - from simplejson._speedups import scanstring - return scanstring - except ImportError: - return None -c_scanstring = _import_c_scanstring() - -__all__ = ['JSONDecoder'] - -FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL - -def _floatconstants(): - _BYTES = '7FF80000000000007FF0000000000000'.decode('hex') - # The struct module in Python 2.4 would get frexp() out of range here - # when an endian is specified in the format string. Fixed in Python 2.5+ - if sys.byteorder != 'big': - _BYTES = _BYTES[:8][::-1] + _BYTES[8:][::-1] - nan, inf = struct.unpack('dd', _BYTES) - return nan, inf, -inf - -NaN, PosInf, NegInf = _floatconstants() - - -class JSONDecodeError(ValueError): - """Subclass of ValueError with the following additional properties: - - msg: The unformatted error message - doc: The JSON document being parsed - pos: The start index of doc where parsing failed - end: The end index of doc where parsing failed (may be None) - lineno: The line corresponding to pos - colno: The column corresponding to pos - endlineno: The line corresponding to end (may be None) - endcolno: The column corresponding to end (may be None) - - """ - def __init__(self, msg, doc, pos, end=None): - ValueError.__init__(self, errmsg(msg, doc, pos, end=end)) - self.msg = msg - self.doc = doc - self.pos = pos - self.end = end - self.lineno, self.colno = linecol(doc, pos) - if end is not None: - self.endlineno, self.endcolno = linecol(doc, end) - else: - self.endlineno, self.endcolno = None, None - - -def linecol(doc, pos): - lineno = doc.count('\n', 0, pos) + 1 - if lineno == 1: - colno = pos - else: - colno = pos - doc.rindex('\n', 0, pos) - return lineno, colno - - -def errmsg(msg, doc, pos, end=None): - # Note that this function is called from _speedups - lineno, colno = linecol(doc, pos) - if end is None: - #fmt = '{0}: line {1} column {2} (char {3})' - #return fmt.format(msg, lineno, colno, pos) - fmt = '%s: line %d column %d (char %d)' - return fmt % (msg, lineno, colno, pos) - endlineno, endcolno = linecol(doc, end) - #fmt = '{0}: line {1} column {2} - line {3} column {4} (char {5} - {6})' - #return fmt.format(msg, lineno, colno, endlineno, endcolno, pos, end) - fmt = '%s: line %d column %d - line %d column %d (char %d - %d)' - return fmt % (msg, lineno, colno, endlineno, endcolno, pos, end) - - -_CONSTANTS = { - '-Infinity': NegInf, - 'Infinity': PosInf, - 'NaN': NaN, -} - -STRINGCHUNK = re.compile(r'(.*?)(["\\\x00-\x1f])', FLAGS) -BACKSLASH = { - '"': u'"', '\\': u'\\', '/': u'/', - 'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t', -} - -DEFAULT_ENCODING = "utf-8" - -def py_scanstring(s, end, encoding=None, strict=True, - _b=BACKSLASH, _m=STRINGCHUNK.match): - """Scan the string s for a JSON string. End is the index of the - character in s after the quote that started the JSON string. - Unescapes all valid JSON string escape sequences and raises ValueError - on attempt to decode an invalid string. If strict is False then literal - control characters are allowed in the string. - - Returns a tuple of the decoded string and the index of the character in s - after the end quote.""" - if encoding is None: - encoding = DEFAULT_ENCODING - chunks = [] - _append = chunks.append - begin = end - 1 - while 1: - chunk = _m(s, end) - if chunk is None: - raise JSONDecodeError( - "Unterminated string starting at", s, begin) - end = chunk.end() - content, terminator = chunk.groups() - # Content is contains zero or more unescaped string characters - if content: - if not isinstance(content, unicode): - content = unicode(content, encoding) - _append(content) - # Terminator is the end of string, a literal control character, - # or a backslash denoting that an escape sequence follows - if terminator == '"': - break - elif terminator != '\\': - if strict: - msg = "Invalid control character %r at" % (terminator,) - #msg = "Invalid control character {0!r} at".format(terminator) - raise JSONDecodeError(msg, s, end) - else: - _append(terminator) - continue - try: - esc = s[end] - except IndexError: - raise JSONDecodeError( - "Unterminated string starting at", s, begin) - # If not a unicode escape sequence, must be in the lookup table - if esc != 'u': - try: - char = _b[esc] - except KeyError: - msg = "Invalid \\escape: " + repr(esc) - raise JSONDecodeError(msg, s, end) - end += 1 - else: - # Unicode escape sequence - esc = s[end + 1:end + 5] - next_end = end + 5 - if len(esc) != 4: - msg = "Invalid \\uXXXX escape" - raise JSONDecodeError(msg, s, end) - uni = int(esc, 16) - # Check for surrogate pair on UCS-4 systems - if 0xd800 <= uni <= 0xdbff and sys.maxunicode > 65535: - msg = "Invalid \\uXXXX\\uXXXX surrogate pair" - if not s[end + 5:end + 7] == '\\u': - raise JSONDecodeError(msg, s, end) - esc2 = s[end + 7:end + 11] - if len(esc2) != 4: - raise JSONDecodeError(msg, s, end) - uni2 = int(esc2, 16) - uni = 0x10000 + (((uni - 0xd800) << 10) | (uni2 - 0xdc00)) - next_end += 6 - char = unichr(uni) - end = next_end - # Append the unescaped character - _append(char) - return u''.join(chunks), end - - -# Use speedup if available -scanstring = c_scanstring or py_scanstring - -WHITESPACE = re.compile(r'[ \t\n\r]*', FLAGS) -WHITESPACE_STR = ' \t\n\r' - -def JSONObject((s, end), encoding, strict, scan_once, object_hook, - object_pairs_hook, memo=None, - _w=WHITESPACE.match, _ws=WHITESPACE_STR): - # Backwards compatibility - if memo is None: - memo = {} - memo_get = memo.setdefault - pairs = [] - # Use a slice to prevent IndexError from being raised, the following - # check will raise a more specific ValueError if the string is empty - nextchar = s[end:end + 1] - # Normally we expect nextchar == '"' - if nextchar != '"': - if nextchar in _ws: - end = _w(s, end).end() - nextchar = s[end:end + 1] - # Trivial empty object - if nextchar == '}': - if object_pairs_hook is not None: - result = object_pairs_hook(pairs) - return result, end + 1 - pairs = {} - if object_hook is not None: - pairs = object_hook(pairs) - return pairs, end + 1 - elif nextchar != '"': - raise JSONDecodeError("Expecting property name", s, end) - end += 1 - while True: - key, end = scanstring(s, end, encoding, strict) - key = memo_get(key, key) - - # To skip some function call overhead we optimize the fast paths where - # the JSON key separator is ": " or just ":". - if s[end:end + 1] != ':': - end = _w(s, end).end() - if s[end:end + 1] != ':': - raise JSONDecodeError("Expecting : delimiter", s, end) - - end += 1 - - try: - if s[end] in _ws: - end += 1 - if s[end] in _ws: - end = _w(s, end + 1).end() - except IndexError: - pass - - try: - value, end = scan_once(s, end) - except StopIteration: - raise JSONDecodeError("Expecting object", s, end) - pairs.append((key, value)) - - try: - nextchar = s[end] - if nextchar in _ws: - end = _w(s, end + 1).end() - nextchar = s[end] - except IndexError: - nextchar = '' - end += 1 - - if nextchar == '}': - break - elif nextchar != ',': - raise JSONDecodeError("Expecting , delimiter", s, end - 1) - - try: - nextchar = s[end] - if nextchar in _ws: - end += 1 - nextchar = s[end] - if nextchar in _ws: - end = _w(s, end + 1).end() - nextchar = s[end] - except IndexError: - nextchar = '' - - end += 1 - if nextchar != '"': - raise JSONDecodeError("Expecting property name", s, end - 1) - - if object_pairs_hook is not None: - result = object_pairs_hook(pairs) - return result, end - pairs = dict(pairs) - if object_hook is not None: - pairs = object_hook(pairs) - return pairs, end - -def JSONArray((s, end), scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR): - values = [] - nextchar = s[end:end + 1] - if nextchar in _ws: - end = _w(s, end + 1).end() - nextchar = s[end:end + 1] - # Look-ahead for trivial empty array - if nextchar == ']': - return values, end + 1 - _append = values.append - while True: - try: - value, end = scan_once(s, end) - except StopIteration: - raise JSONDecodeError("Expecting object", s, end) - _append(value) - nextchar = s[end:end + 1] - if nextchar in _ws: - end = _w(s, end + 1).end() - nextchar = s[end:end + 1] - end += 1 - if nextchar == ']': - break - elif nextchar != ',': - raise JSONDecodeError("Expecting , delimiter", s, end) - - try: - if s[end] in _ws: - end += 1 - if s[end] in _ws: - end = _w(s, end + 1).end() - except IndexError: - pass - - return values, end - -class JSONDecoder(object): - """Simple JSON decoder - - Performs the following translations in decoding by default: - - +---------------+-------------------+ - | JSON | Python | - +===============+===================+ - | object | dict | - +---------------+-------------------+ - | array | list | - +---------------+-------------------+ - | string | unicode | - +---------------+-------------------+ - | number (int) | int, long | - +---------------+-------------------+ - | number (real) | float | - +---------------+-------------------+ - | true | True | - +---------------+-------------------+ - | false | False | - +---------------+-------------------+ - | null | None | - +---------------+-------------------+ - - It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as - their corresponding ``float`` values, which is outside the JSON spec. - - """ - - def __init__(self, encoding=None, object_hook=None, parse_float=None, - parse_int=None, parse_constant=None, strict=True, - object_pairs_hook=None): - """ - *encoding* determines the encoding used to interpret any - :class:`str` objects decoded by this instance (``'utf-8'`` by - default). It has no effect when decoding :class:`unicode` objects. - - Note that currently only encodings that are a superset of ASCII work, - strings of other encodings should be passed in as :class:`unicode`. - - *object_hook*, if specified, will be called with the result of every - JSON object decoded and its return value will be used in place of the - given :class:`dict`. This can be used to provide custom - deserializations (e.g. to support JSON-RPC class hinting). - - *object_pairs_hook* is an optional function that will be called with - the result of any object literal decode with an ordered list of pairs. - The return value of *object_pairs_hook* will be used instead of the - :class:`dict`. This feature can be used to implement custom decoders - that rely on the order that the key and value pairs are decoded (for - example, :func:`collections.OrderedDict` will remember the order of - insertion). If *object_hook* is also defined, the *object_pairs_hook* - takes priority. - - *parse_float*, if specified, will be called with the string of every - JSON float to be decoded. By default, this is equivalent to - ``float(num_str)``. This can be used to use another datatype or parser - for JSON floats (e.g. :class:`decimal.Decimal`). - - *parse_int*, if specified, will be called with the string of every - JSON int to be decoded. By default, this is equivalent to - ``int(num_str)``. This can be used to use another datatype or parser - for JSON integers (e.g. :class:`float`). - - *parse_constant*, if specified, will be called with one of the - following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This - can be used to raise an exception if invalid JSON numbers are - encountered. - - *strict* controls the parser's behavior when it encounters an - invalid control character in a string. The default setting of - ``True`` means that unescaped control characters are parse errors, if - ``False`` then control characters will be allowed in strings. - - """ - self.encoding = encoding - self.object_hook = object_hook - self.object_pairs_hook = object_pairs_hook - self.parse_float = parse_float or float - self.parse_int = parse_int or int - self.parse_constant = parse_constant or _CONSTANTS.__getitem__ - self.strict = strict - self.parse_object = JSONObject - self.parse_array = JSONArray - self.parse_string = scanstring - self.memo = {} - self.scan_once = make_scanner(self) - - def decode(self, s, _w=WHITESPACE.match): - """Return the Python representation of ``s`` (a ``str`` or ``unicode`` - instance containing a JSON document) - - """ - obj, end = self.raw_decode(s, idx=_w(s, 0).end()) - end = _w(s, end).end() - if end != len(s): - raise JSONDecodeError("Extra data", s, end, len(s)) - return obj - - def raw_decode(self, s, idx=0): - """Decode a JSON document from ``s`` (a ``str`` or ``unicode`` - beginning with a JSON document) and return a 2-tuple of the Python - representation and the index in ``s`` where the document ended. - - This can be used to decode a JSON document from a string that may - have extraneous data at the end. - - """ - try: - obj, end = self.scan_once(s, idx) - except StopIteration: - raise JSONDecodeError("No JSON object could be decoded", s, idx) - return obj, end diff --git a/shotgun_api3/lib/simplejson/encoder.py b/shotgun_api3/lib/simplejson/encoder.py deleted file mode 100644 index f43f6f430..000000000 --- a/shotgun_api3/lib/simplejson/encoder.py +++ /dev/null @@ -1,503 +0,0 @@ -"""Implementation of JSONEncoder -""" -import re -from decimal import Decimal - -def _import_speedups(): - try: - from simplejson import _speedups - return _speedups.encode_basestring_ascii, _speedups.make_encoder - except ImportError: - return None, None -c_encode_basestring_ascii, c_make_encoder = _import_speedups() - -from simplejson.decoder import PosInf - -ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]') -ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])') -HAS_UTF8 = re.compile(r'[\x80-\xff]') -ESCAPE_DCT = { - '\\': '\\\\', - '"': '\\"', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', -} -for i in range(0x20): - #ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i)) - ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,)) - -FLOAT_REPR = repr - -def encode_basestring(s): - """Return a JSON representation of a Python string - - """ - if isinstance(s, str) and HAS_UTF8.search(s) is not None: - s = s.decode('utf-8') - def replace(match): - return ESCAPE_DCT[match.group(0)] - return u'"' + ESCAPE.sub(replace, s) + u'"' - - -def py_encode_basestring_ascii(s): - """Return an ASCII-only JSON representation of a Python string - - """ - if isinstance(s, str) and HAS_UTF8.search(s) is not None: - s = s.decode('utf-8') - def replace(match): - s = match.group(0) - try: - return ESCAPE_DCT[s] - except KeyError: - n = ord(s) - if n < 0x10000: - #return '\\u{0:04x}'.format(n) - return '\\u%04x' % (n,) - else: - # surrogate pair - n -= 0x10000 - s1 = 0xd800 | ((n >> 10) & 0x3ff) - s2 = 0xdc00 | (n & 0x3ff) - #return '\\u{0:04x}\\u{1:04x}'.format(s1, s2) - return '\\u%04x\\u%04x' % (s1, s2) - return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"' - - -encode_basestring_ascii = ( - c_encode_basestring_ascii or py_encode_basestring_ascii) - -class JSONEncoder(object): - """Extensible JSON encoder for Python data structures. - - Supports the following objects and types by default: - - +-------------------+---------------+ - | Python | JSON | - +===================+===============+ - | dict | object | - +-------------------+---------------+ - | list, tuple | array | - +-------------------+---------------+ - | str, unicode | string | - +-------------------+---------------+ - | int, long, float | number | - +-------------------+---------------+ - | True | true | - +-------------------+---------------+ - | False | false | - +-------------------+---------------+ - | None | null | - +-------------------+---------------+ - - To extend this to recognize other objects, subclass and implement a - ``.default()`` method with another method that returns a serializable - object for ``o`` if possible, otherwise it should call the superclass - implementation (to raise ``TypeError``). - - """ - item_separator = ', ' - key_separator = ': ' - def __init__(self, skipkeys=False, ensure_ascii=True, - check_circular=True, allow_nan=True, sort_keys=False, - indent=None, separators=None, encoding='utf-8', default=None, - use_decimal=False): - """Constructor for JSONEncoder, with sensible defaults. - - If skipkeys is false, then it is a TypeError to attempt - encoding of keys that are not str, int, long, float or None. If - skipkeys is True, such items are simply skipped. - - If ensure_ascii is true, the output is guaranteed to be str - objects with all incoming unicode characters escaped. If - ensure_ascii is false, the output will be unicode object. - - If check_circular is true, then lists, dicts, and custom encoded - objects will be checked for circular references during encoding to - prevent an infinite recursion (which would cause an OverflowError). - Otherwise, no such check takes place. - - If allow_nan is true, then NaN, Infinity, and -Infinity will be - encoded as such. This behavior is not JSON specification compliant, - but is consistent with most JavaScript based encoders and decoders. - Otherwise, it will be a ValueError to encode such floats. - - If sort_keys is true, then the output of dictionaries will be - sorted by key; this is useful for regression tests to ensure - that JSON serializations can be compared on a day-to-day basis. - - If indent is a string, then JSON array elements and object members - will be pretty-printed with a newline followed by that string repeated - for each level of nesting. ``None`` (the default) selects the most compact - representation without any newlines. For backwards compatibility with - versions of simplejson earlier than 2.1.0, an integer is also accepted - and is converted to a string with that many spaces. - - If specified, separators should be a (item_separator, key_separator) - tuple. The default is (', ', ': '). To get the most compact JSON - representation you should specify (',', ':') to eliminate whitespace. - - If specified, default is a function that gets called for objects - that can't otherwise be serialized. It should return a JSON encodable - version of the object or raise a ``TypeError``. - - If encoding is not None, then all input strings will be - transformed into unicode using that encoding prior to JSON-encoding. - The default is UTF-8. - - If use_decimal is true (not the default), ``decimal.Decimal`` will - be supported directly by the encoder. For the inverse, decode JSON - with ``parse_float=decimal.Decimal``. - - """ - - self.skipkeys = skipkeys - self.ensure_ascii = ensure_ascii - self.check_circular = check_circular - self.allow_nan = allow_nan - self.sort_keys = sort_keys - self.use_decimal = use_decimal - if isinstance(indent, (int, long)): - indent = ' ' * indent - self.indent = indent - if separators is not None: - self.item_separator, self.key_separator = separators - elif indent is not None: - self.item_separator = ',' - if default is not None: - self.default = default - self.encoding = encoding - - def default(self, o): - """Implement this method in a subclass such that it returns - a serializable object for ``o``, or calls the base implementation - (to raise a ``TypeError``). - - For example, to support arbitrary iterators, you could - implement default like this:: - - def default(self, o): - try: - iterable = iter(o) - except TypeError: - pass - else: - return list(iterable) - return JSONEncoder.default(self, o) - - """ - raise TypeError(repr(o) + " is not JSON serializable") - - def encode(self, o): - """Return a JSON string representation of a Python data structure. - - >>> from simplejson import JSONEncoder - >>> JSONEncoder().encode({"foo": ["bar", "baz"]}) - '{"foo": ["bar", "baz"]}' - - """ - # This is for extremely simple cases and benchmarks. - if isinstance(o, basestring): - if isinstance(o, str): - _encoding = self.encoding - if (_encoding is not None - and not (_encoding == 'utf-8')): - o = o.decode(_encoding) - if self.ensure_ascii: - return encode_basestring_ascii(o) - else: - return encode_basestring(o) - # This doesn't pass the iterator directly to ''.join() because the - # exceptions aren't as detailed. The list call should be roughly - # equivalent to the PySequence_Fast that ''.join() would do. - chunks = self.iterencode(o, _one_shot=True) - if not isinstance(chunks, (list, tuple)): - chunks = list(chunks) - if self.ensure_ascii: - return ''.join(chunks) - else: - return u''.join(chunks) - - def iterencode(self, o, _one_shot=False): - """Encode the given object and yield each string - representation as available. - - For example:: - - for chunk in JSONEncoder().iterencode(bigobject): - mysocket.write(chunk) - - """ - if self.check_circular: - markers = {} - else: - markers = None - if self.ensure_ascii: - _encoder = encode_basestring_ascii - else: - _encoder = encode_basestring - if self.encoding != 'utf-8': - def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding): - if isinstance(o, str): - o = o.decode(_encoding) - return _orig_encoder(o) - - def floatstr(o, allow_nan=self.allow_nan, - _repr=FLOAT_REPR, _inf=PosInf, _neginf=-PosInf): - # Check for specials. Note that this type of test is processor - # and/or platform-specific, so do tests which don't depend on - # the internals. - - if o != o: - text = 'NaN' - elif o == _inf: - text = 'Infinity' - elif o == _neginf: - text = '-Infinity' - else: - return _repr(o) - - if not allow_nan: - raise ValueError( - "Out of range float values are not JSON compliant: " + - repr(o)) - - return text - - - key_memo = {} - if (_one_shot and c_make_encoder is not None - and self.indent is None): - _iterencode = c_make_encoder( - markers, self.default, _encoder, self.indent, - self.key_separator, self.item_separator, self.sort_keys, - self.skipkeys, self.allow_nan, key_memo, self.use_decimal) - else: - _iterencode = _make_iterencode( - markers, self.default, _encoder, self.indent, floatstr, - self.key_separator, self.item_separator, self.sort_keys, - self.skipkeys, _one_shot, self.use_decimal) - try: - return _iterencode(o, 0) - finally: - key_memo.clear() - - -class JSONEncoderForHTML(JSONEncoder): - """An encoder that produces JSON safe to embed in HTML. - - To embed JSON content in, say, a script tag on a web page, the - characters &, < and > should be escaped. They cannot be escaped - with the usual entities (e.g. &) because they are not expanded - within