)]}'
{"etc/nova/api-paste.ini":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":78,"context_line":"[composite:openstack_compute_api_v21]"},{"line_number":79,"context_line":"use \u003d call:nova.api.auth:pipeline_factory_v3"},{"line_number":80,"context_line":"noauth \u003d faultwrap sizelimit noauth_v3 osapi_compute_app_v21"},{"line_number":81,"context_line":"keystone \u003d faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v21"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"[filter:faultwrap]"},{"line_number":84,"context_line":"paste.filter_factory \u003d nova.api.openstack:FaultWrapper.factory"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F%2BEi8%3D","line":81,"updated":"2014-03-31 05:30:45.000000000","message":"better to move this block to line 72 for representing v2.1.","commit_id":"afa4151b678dbd1117b5bc946fd36ecaa0d1c1dd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":78,"context_line":"[composite:openstack_compute_api_v21]"},{"line_number":79,"context_line":"use \u003d call:nova.api.auth:pipeline_factory_v3"},{"line_number":80,"context_line":"noauth \u003d faultwrap sizelimit noauth_v3 osapi_compute_app_v21"},{"line_number":81,"context_line":"keystone \u003d faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v21"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"[filter:faultwrap]"},{"line_number":84,"context_line":"paste.filter_factory \u003d nova.api.openstack:FaultWrapper.factory"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F%2BEMU%3D","line":81,"in_reply_to":"AAAAWH%2F%2BEi8%3D","updated":"2014-03-31 06:53:53.000000000","message":"Done","commit_id":"afa4151b678dbd1117b5bc946fd36ecaa0d1c1dd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":102,"context_line":"paste.app_factory \u003d nova.api.openstack.compute:APIRouterV3.factory"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"[app:osapi_compute_app_v21]"},{"line_number":105,"context_line":"paste.app_factory \u003d nova.api.openstack.compute:APIRouterV21.factory"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"[pipeline:oscomputeversions]"},{"line_number":108,"context_line":"pipeline \u003d faultwrap oscomputeversionapp"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F%2BEi4%3D","line":105,"updated":"2014-03-31 05:30:45.000000000","message":"ditto: better to move this block to line 100.","commit_id":"afa4151b678dbd1117b5bc946fd36ecaa0d1c1dd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":102,"context_line":"paste.app_factory \u003d nova.api.openstack.compute:APIRouterV3.factory"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"[app:osapi_compute_app_v21]"},{"line_number":105,"context_line":"paste.app_factory \u003d nova.api.openstack.compute:APIRouterV21.factory"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"[pipeline:oscomputeversions]"},{"line_number":108,"context_line":"pipeline \u003d faultwrap oscomputeversionapp"}],"source_content_type":"text/x-properties","patch_set":4,"id":"AAAAWH%2F%2BEMQ%3D","line":105,"in_reply_to":"AAAAWH%2F%2BEi4%3D","updated":"2014-03-31 06:53:53.000000000","message":"Done","commit_id":"afa4151b678dbd1117b5bc946fd36ecaa0d1c1dd"}],"nova/api/openstack/compute/__init__.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"unresolved":false,"context_lines":[{"line_number":147,"context_line":"class APIRouterV21(APIRouterV3):"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _get_resources_from_ext(self, ext):"},{"line_number":150,"context_line":"        supported_versions \u003d getattr(ext.obj, \u0027supported_versions\u0027, [])"},{"line_number":151,"context_line":"        if \u00272.1\u0027 in supported_versions:"},{"line_number":152,"context_line":"            return ext.obj.get_resources(version\u003d\u00272.1\u0027)"},{"line_number":153,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BiBw%3D","line":150,"updated":"2014-03-26 05:55:27.000000000","message":"So I\u0027m wondering if we can get away with removing supported_versions and for V21 always just pass version\u003d2.1 to get_resources.\n\nWe would have to modify all of the v3 plugins to be able to accept a version parameter, but most could just ignore it.\n\nSee comments on keypairs for further development of the idea","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":147,"context_line":"class APIRouterV21(APIRouterV3):"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _get_resources_from_ext(self, ext):"},{"line_number":150,"context_line":"        supported_versions \u003d getattr(ext.obj, \u0027supported_versions\u0027, [])"},{"line_number":151,"context_line":"        if \u00272.1\u0027 in supported_versions:"},{"line_number":152,"context_line":"            return ext.obj.get_resources(version\u003d\u00272.1\u0027)"},{"line_number":153,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BhIE%3D","line":150,"in_reply_to":"AAAAWH%2F%2BiBw%3D","updated":"2014-03-26 08:47:12.000000000","message":"Actually, I added this function just for avoid modify all the v3 plugins. That make our PoC patch looks very big and complex. :)\n\nHow about after summit and we begin to work on this, then we pass version parameter to all the v3 plugins and remove\u0027 supported_versions\u0027? And let us just leave comment at here. Say this will be deleted in future.","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _get_resources_from_ext(self, ext):"},{"line_number":155,"context_line":"        # TODO(alex xu): The supported version attribute is only needed until"},{"line_number":156,"context_line":"        # until all of the V3 API plugins are modified so their get_resources"},{"line_number":157,"context_line":"        # can accept (and possibly ignore) the version parameter."},{"line_number":158,"context_line":"        supported_versions \u003d getattr(ext.obj, \u0027supported_versions\u0027, [])"},{"line_number":159,"context_line":"        if \u00272.1\u0027 in supported_versions:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAXH%2F%2FOlA%3D","line":156,"updated":"2014-04-23 07:25:50.000000000","message":"s/until// because double \u0027until\u0027 ;-)","commit_id":"74fa3ed6635c4ba2af5c13b61c6b2a220b79ff69"}],"nova/api/openstack/compute/plugins/v3/keypairs.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1f25a4f7c6a498295ff2d6df0ade7f00bca76877","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        else:"},{"line_number":174,"context_line":"            resources \u003d [extensions.ResourceExtension(\u0027keypairs\u0027,"},{"line_number":175,"context_line":"                                                      KeypairController())]"},{"line_number":176,"context_line":"        return resources"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_controller_extensions(self):"},{"line_number":179,"context_line":"        controller \u003d Controller()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bzec%3D","line":176,"updated":"2014-03-24 07:50:55.000000000","message":"Cool, I like this way.","commit_id":"2ebb7e7cefbf7d3fc79101eb9f8ea635dc472c52"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"unresolved":false,"context_lines":[{"line_number":164,"context_line":"    name \u003d \"Keypairs\""},{"line_number":165,"context_line":"    alias \u003d ALIAS"},{"line_number":166,"context_line":"    version \u003d 1"},{"line_number":167,"context_line":"    supported_versions \u003d [\u00272.1\u0027]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def get_resources(self, version\u003d\u0027\u0027):"},{"line_number":170,"context_line":"        if version \u003d\u003d \u00272.1\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BiBg%3D","line":167,"updated":"2014-03-26 05:55:27.000000000","message":"So as mentioned in __init__.py I think we can remove supported_versions","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    name \u003d \"Keypairs\""},{"line_number":165,"context_line":"    alias \u003d ALIAS"},{"line_number":166,"context_line":"    version \u003d 1"},{"line_number":167,"context_line":"    supported_versions \u003d [\u00272.1\u0027]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def get_resources(self, version\u003d\u0027\u0027):"},{"line_number":170,"context_line":"        if version \u003d\u003d \u00272.1\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BhGI%3D","line":167,"in_reply_to":"AAAAWH%2F%2BiBg%3D","updated":"2014-03-26 08:47:12.000000000","message":"please reference the reply in __init__.py","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"unresolved":false,"context_lines":[{"line_number":166,"context_line":"    version \u003d 1"},{"line_number":167,"context_line":"    supported_versions \u003d [\u00272.1\u0027]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def get_resources(self, version\u003d\u0027\u0027):"},{"line_number":170,"context_line":"        if version \u003d\u003d \u00272.1\u0027:"},{"line_number":171,"context_line":"            resources \u003d [extensions.ResourceExtension(\u0027os-keypairs\u0027,"},{"line_number":172,"context_line":"                                                      KeypairController())]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Bh%2Fc%3D","line":169,"updated":"2014-03-26 05:55:27.000000000","message":"So perhaps we could do:\n\nresource_names \u003d {\u00272.1\u0027: \u0027os-keypairs\u0027}\nresource_name \u003d resource_names.get(version, ALIAS)\nresource \u003d [extensions.ResourceExtension(resource_name, KeypairController())]\n\nwhich I think is a bit cleaner. I don\u0027t know if its necessary, but just trying to structure things so if need something in addition v2.1 it would slide in fairly easily.\n\nI like the overall way this is done though :-)","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    version \u003d 1"},{"line_number":167,"context_line":"    supported_versions \u003d [\u00272.1\u0027]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def get_resources(self, version\u003d\u0027\u0027):"},{"line_number":170,"context_line":"        if version \u003d\u003d \u00272.1\u0027:"},{"line_number":171,"context_line":"            resources \u003d [extensions.ResourceExtension(\u0027os-keypairs\u0027,"},{"line_number":172,"context_line":"                                                      KeypairController())]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BhFw%3D","line":169,"in_reply_to":"AAAAWH%2F%2Bh%2Fc%3D","updated":"2014-03-26 08:47:12.000000000","message":"yea, it\u0027s more cleaner.","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":68,"context_line":"        authorize(context, action\u003d\u0027create\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        params \u003d body[\u0027keypair\u0027]"},{"line_number":71,"context_line":"        name \u003d params[\u0027name\u0027]"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9hLw%3D","line":69,"updated":"2014-04-03 23:46:32.000000000","message":"For using body, we need to translate a body also.","commit_id":"18ed933c06b68a1813e81c44b4c6fd18b4fdaaf1"}],"nova/api/openstack/compute/plugins/v3/migrate_server.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":74,"context_line":"        authorize(context, \u0027migrate_live\u0027)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            block_migration \u003d body[\"migrate_live\"][\"block_migration\"]"},{"line_number":78,"context_line":"            disk_over_commit \u003d body[\"migrate_live\"][\"disk_over_commit\"]"},{"line_number":79,"context_line":"            host \u003d body[\"migrate_live\"][\"host\"]"},{"line_number":80,"context_line":"        except (TypeError, KeyError):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9hL0%3D","line":77,"updated":"2014-04-03 23:46:32.000000000","message":"For using body, we need to translate a body also.","commit_id":"18ed933c06b68a1813e81c44b4c6fd18b4fdaaf1"}],"nova/api/openstack/wsgi.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1f25a4f7c6a498295ff2d6df0ade7f00bca76877","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        \"\"\"Registers controller actions with this resource.\"\"\""},{"line_number":771,"context_line":"        attr_name \u003d \u0027wsgi_actions\u0027"},{"line_number":772,"context_line":"        if version:"},{"line_number":773,"context_line":"            attr_name \u003d \u0027%s_%s\u0027 % (attr_name, version.replace(\u0027.\u0027, \u0027_\u0027))"},{"line_number":774,"context_line":"        actions \u003d getattr(controller, attr_name, {})"},{"line_number":775,"context_line":"        for key, method_name in actions.items():"},{"line_number":776,"context_line":"            self.wsgi_actions[key] \u003d getattr(controller, method_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bzdg%3D","line":773,"updated":"2014-03-24 07:50:55.000000000","message":"This seems a little magic, better to use static name(wsgi_action_2_1).","commit_id":"2ebb7e7cefbf7d3fc79101eb9f8ea635dc472c52"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"unresolved":false,"context_lines":[{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        # Find all actions"},{"line_number":1134,"context_line":"        actions \u003d {}"},{"line_number":1135,"context_line":"        actions_2_1 \u003d {}"},{"line_number":1136,"context_line":"        extensions \u003d []"},{"line_number":1137,"context_line":"        # start with wsgi actions from base classes"},{"line_number":1138,"context_line":"        for base in bases:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Bh74%3D","line":1135,"updated":"2014-03-26 05:55:27.000000000","message":"so I think long term we could probably clean this up given we\u0027re doing pretty much teh same thing for \u0027wsgi_actions\u0027 and \u0027wsgi_actions_2_1\u0027. But is ok for now and I think does what we need","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        # Find all actions"},{"line_number":1134,"context_line":"        actions \u003d {}"},{"line_number":1135,"context_line":"        actions_2_1 \u003d {}"},{"line_number":1136,"context_line":"        extensions \u003d []"},{"line_number":1137,"context_line":"        # start with wsgi actions from base classes"},{"line_number":1138,"context_line":"        for base in bases:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BhFU%3D","line":1135,"in_reply_to":"AAAAWH%2F%2Bh74%3D","updated":"2014-03-26 08:47:12.000000000","message":"Done","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                actions[value.wsgi_action] \u003d key"},{"line_number":1147,"context_line":"            elif getattr(value, \u0027wsgi_extends\u0027, None):"},{"line_number":1148,"context_line":"                extensions.append(value.wsgi_extends)"},{"line_number":1149,"context_line":"            if getattr(value, \u0027wsgi_action_2_1\u0027, None):"},{"line_number":1150,"context_line":"                actions_2_1[value.wsgi_action_2_1] \u003d key"},{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"        # Add the actions and extensions to the class dict"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Bh8c%3D","line":1149,"updated":"2014-03-26 05:55:27.000000000","message":"nit - don\u0027t need None, but we should do a cleanup sometime of wsgi anyway :-)","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                actions[value.wsgi_action] \u003d key"},{"line_number":1147,"context_line":"            elif getattr(value, \u0027wsgi_extends\u0027, None):"},{"line_number":1148,"context_line":"                extensions.append(value.wsgi_extends)"},{"line_number":1149,"context_line":"            if getattr(value, \u0027wsgi_action_2_1\u0027, None):"},{"line_number":1150,"context_line":"                actions_2_1[value.wsgi_action_2_1] \u003d key"},{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"        # Add the actions and extensions to the class dict"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BhFQ%3D","line":1149,"in_reply_to":"AAAAWH%2F%2Bh8c%3D","updated":"2014-03-26 08:47:12.000000000","message":"yea :)","commit_id":"779642e864e4f16cf0c077c6778368b9744d6928"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":1148,"context_line":"            elif getattr(value, \u0027wsgi_extends\u0027, None):"},{"line_number":1149,"context_line":"                extensions.append(value.wsgi_extends)"},{"line_number":1150,"context_line":"            if getattr(value, \u0027wsgi_action_2_1\u0027, None):"},{"line_number":1151,"context_line":"                actions_2_1[value.wsgi_action_2_1] \u003d key"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":"        # Add the actions and extensions to the class dict"},{"line_number":1154,"context_line":"        cls_dict[\u0027wsgi_actions\u0027] \u003d actions"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BEPM%3D","line":1151,"updated":"2014-03-31 06:35:39.000000000","message":"Current code requires all actions should be specified with wsgi.action(..., version\u003d\u00272.1) even if they are the same as v3.\nTo avoid many changes in v3 code, how about using v3 action if not specifying v2.1 action?\n\nBy adding the following code after line 1151, nova can allow it.\n\n            elif getattr(value, \u0027wsgi_action\u0027, None):\n                # Register v3 wsgi_action as v2.1 one if not v2.1 specific.\n                actions_2_1[value.wsgi_action] \u003d key","commit_id":"afa4151b678dbd1117b5bc946fd36ecaa0d1c1dd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aab69171666b0fa94616f777766fa1e2e7db7c83","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"            elif getattr(value, \u0027wsgi_extends\u0027, None):"},{"line_number":1149,"context_line":"                extensions.append(value.wsgi_extends)"},{"line_number":1150,"context_line":"            if getattr(value, \u0027wsgi_action_2_1\u0027, None):"},{"line_number":1151,"context_line":"                actions_2_1[value.wsgi_action_2_1] \u003d key"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":"        # Add the actions and extensions to the class dict"},{"line_number":1154,"context_line":"        cls_dict[\u0027wsgi_actions\u0027] \u003d actions"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BELs%3D","line":1151,"in_reply_to":"AAAAWH%2F%2BEPM%3D","updated":"2014-03-31 06:53:53.000000000","message":"Thanks, nice suggestion!","commit_id":"afa4151b678dbd1117b5bc946fd36ecaa0d1c1dd"}]}
