)]}'
{"ironic_discoverd/conf.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0bab9d4db52940c7f517c2605468c76c52047fc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"               default\u003d\u0027http://127.0.0.1:5000/v2.0\u0027,"},{"line_number":20,"context_line":"               help\u003d\u0027Keystone authentication endpoint.\u0027,"},{"line_number":21,"context_line":"               deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027auth_uri\u0027,"},{"line_number":22,"context_line":"                                                 group\u003d\u0027keystone_authtoken\u0027)]),"},{"line_number":23,"context_line":"    cfg.StrOpt(\u0027os_username\u0027,"},{"line_number":24,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":25,"context_line":"               help\u003d\u0027User name for accessing Keystone and Ironic API.\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_c5bea4d3","line":22,"updated":"2015-03-20 12:46:47.000000000","message":"looks like these are doing the opposite thing: it marks keystone ones as deprecated... maybe we need deprecated_for_deletion here?","commit_id":"6e4ecb28dc360eca45184eae55729a21af0af570"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"29a63a21f3f4e50044348ec66bf2b48842dfd49b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"               default\u003d\u0027http://127.0.0.1:5000/v2.0\u0027,"},{"line_number":20,"context_line":"               help\u003d\u0027Keystone authentication endpoint.\u0027,"},{"line_number":21,"context_line":"               deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027auth_uri\u0027,"},{"line_number":22,"context_line":"                                                 group\u003d\u0027keystone_authtoken\u0027)]),"},{"line_number":23,"context_line":"    cfg.StrOpt(\u0027os_username\u0027,"},{"line_number":24,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":25,"context_line":"               help\u003d\u0027User name for accessing Keystone and Ironic API.\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6ced46_a5aed5e5","line":22,"in_reply_to":"9a80dd14_c5bea4d3","updated":"2015-03-23 07:58:57.000000000","message":"Done","commit_id":"6e4ecb28dc360eca45184eae55729a21af0af570"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0bab9d4db52940c7f517c2605468c76c52047fc","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                                 group\u003d\u0027keystone_authtoken\u0027)]),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027identity_uri\u0027,"},{"line_number":39,"context_line":"               default\u003d\u0027http://127.0.0.1:35357\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027Keystone admin endpoint.\u0027),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027ironic_retry_attempts\u0027,"},{"line_number":42,"context_line":"               default\u003d5,"},{"line_number":43,"context_line":"               help\u003d\u0027Number of attempts to do when trying to connect to \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_45cab46e","line":40,"updated":"2015-03-20 12:46:47.000000000","message":"this is also moving to keystone_authtoken","commit_id":"6e4ecb28dc360eca45184eae55729a21af0af570"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"29a63a21f3f4e50044348ec66bf2b48842dfd49b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                                 group\u003d\u0027keystone_authtoken\u0027)]),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027identity_uri\u0027,"},{"line_number":39,"context_line":"               default\u003d\u0027http://127.0.0.1:35357\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027Keystone admin endpoint.\u0027),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027ironic_retry_attempts\u0027,"},{"line_number":42,"context_line":"               default\u003d5,"},{"line_number":43,"context_line":"               help\u003d\u0027Number of attempts to do when trying to connect to \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6ced46_c5abd1d4","line":40,"in_reply_to":"9a80dd14_45cab46e","updated":"2015-03-23 07:58:57.000000000","message":"Done","commit_id":"6e4ecb28dc360eca45184eae55729a21af0af570"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ff569c901c2f2289a157679fa060f8fe5317eb05","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                    \u0027Hook \\\u0027validate_interfaces\\\u0027 ensures that valid NIC \u0027"},{"line_number":108,"context_line":"                    \u0027data was provided by the ramdisk.\u0027"},{"line_number":109,"context_line":"                    \u0027Do not exclude these two unless you really know what \u0027"},{"line_number":110,"context_line":"                    \u0027you\\\u0027re doing.\u0027),"},{"line_number":111,"context_line":"    cfg.BoolOpt(\u0027debug\u0027,"},{"line_number":112,"context_line":"                default\u003dFalse,"},{"line_number":113,"context_line":"                help\u003d\u0027Debug mode enabled/disabled.\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a6ced46_b2688c22","line":110,"updated":"2015-03-24 14:57:47.000000000","message":"Suggestion: Instead of skipping all the \u0027 (single quotes) you can create the help string with \" (double quotes).\n\nhelp \u003d \"blah ...  \u0027scheduler\u0027 ... blah\"","commit_id":"1d1998dbd2e2d03799cbb0f5efa7a5cfd86d8994"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"ee7f1028dc320704774114a95158358a801098d1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               default\u003d15,"},{"line_number":53,"context_line":"               help\u003d\u0027Amount of time in seconds, after which repeat periodic \u0027"},{"line_number":54,"context_line":"                    \u0027update of firewall.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027add_ports\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027pxe\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Which MAC addresses to add as ports during \u0027"},{"line_number":58,"context_line":"               \u0027introspection. Possible values: \u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6ced46_ca03700b","line":55,"updated":"2015-03-25 06:29:53.000000000","message":"You seem to having delete only_pxe_booting_port, is it OK about backward-compatibility?","commit_id":"9ec4f0fbc8e7c622aa5ac949e39cb28cea87d271"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ee87a1cf304dc8163628b5fe6259bc7727498df5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"               default\u003d15,"},{"line_number":53,"context_line":"               help\u003d\u0027Amount of time in seconds, after which repeat periodic \u0027"},{"line_number":54,"context_line":"                    \u0027update of firewall.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027add_ports\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027pxe\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Which MAC addresses to add as ports during \u0027"},{"line_number":58,"context_line":"               \u0027introspection. Possible values: \u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6ced46_038813e6","line":55,"in_reply_to":"1a6ced46_ca03700b","updated":"2015-03-25 08:52:58.000000000","message":"(actually it happened in previous patch) well, not perfect, but this option was introduced in this cycle, and I decided that it\u0027s an acceptable thing, provided that keeping it will complicate network code significantly. I\u0027ll try to avoid doing it in the future though.","commit_id":"9ec4f0fbc8e7c622aa5ac949e39cb28cea87d271"}],"ironic_discoverd/opts.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fb1c10f8b642bb3bedf4a59619a79639e14e8b52","unresolved":false,"context_lines":[{"line_number":18,"context_line":"def list_opts():"},{"line_number":19,"context_line":"    return ["},{"line_number":20,"context_line":"        (\u0027discoverd\u0027, ironic_discoverd.conf.SERVICE_OPTS)"},{"line_number":21,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_e86578af","line":21,"updated":"2015-03-19 11:02:59.000000000","message":"let\u0027s move this to conf.py","commit_id":"9ff9b7fa378c5edc52f3020618118009107934bd"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e4c663617200fb4f6a2dce988e5c757fb84f8fe1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"def list_opts():"},{"line_number":19,"context_line":"    return ["},{"line_number":20,"context_line":"        (\u0027discoverd\u0027, ironic_discoverd.conf.SERVICE_OPTS)"},{"line_number":21,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_bfa54fa0","line":21,"in_reply_to":"9a80dd14_e86578af","updated":"2015-03-20 12:41:59.000000000","message":"Done","commit_id":"9ff9b7fa378c5edc52f3020618118009107934bd"}],"ironic_discoverd/plugins/edeploy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"50f6e69cbcddfbd8bb893412c1bf7dbb2798a55f","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            lockname \u003d CONF.edeploy.lockname"},{"line_number":66,"context_line":"        except Exception:"},{"line_number":67,"context_line":"            lockname \u003d \u0027/var/lock/discoverd.lock\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6ced46_3b52fddd","line":66,"updated":"2015-03-23 08:22:57.000000000","message":"we should declare \u0027edeploy\u0027 parameters in this module with the defaults instead of catching Exception","commit_id":"d7f4b8e00a668b757b57e186cc5c02559ab86953"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"f44ee3aa07595c1f95ce1a4211af54c9c8574fcd","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            lockname \u003d CONF.edeploy.lockname"},{"line_number":66,"context_line":"        except Exception:"},{"line_number":67,"context_line":"            lockname \u003d \u0027/var/lock/discoverd.lock\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6ced46_8ba6150f","line":66,"in_reply_to":"1a6ced46_3b52fddd","updated":"2015-03-24 07:13:48.000000000","message":"I\u0027ve tried to fix it. Correct?","commit_id":"d7f4b8e00a668b757b57e186cc5c02559ab86953"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"50f6e69cbcddfbd8bb893412c1bf7dbb2798a55f","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        try:"},{"line_number":70,"context_line":"            configdir \u003d CONF.edeploy.configdir"},{"line_number":71,"context_line":"        except Exception:"},{"line_number":72,"context_line":"            configdir \u003d \u0027/etc/edeploy\u0027"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6ced46_5b5ed9ea","line":71,"updated":"2015-03-23 08:22:57.000000000","message":"ditto","commit_id":"d7f4b8e00a668b757b57e186cc5c02559ab86953"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08752efa150f877d779df476bc6652af0aa17044","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        try:"},{"line_number":80,"context_line":"            lockname \u003d CONF.edeploy.lockname"},{"line_number":81,"context_line":"            configdir \u003d CONF.edeploy.configdir"},{"line_number":82,"context_line":"            sobj \u003d state.State(lockname)"},{"line_number":83,"context_line":"            sobj.load(configdir)"},{"line_number":84,"context_line":"            prof, var \u003d sobj.find_match(hw_items)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6ced46_318c9e35","line":81,"updated":"2015-03-24 14:11:57.000000000","message":"nit: no need in introducing more variables","commit_id":"794960a8b5433458bc6f53308a27afb2d2d486bd"}],"ironic_discoverd/test/test_introspect.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08752efa150f877d779df476bc6652af0aa17044","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from ironic_discoverd import node_cache"},{"line_number":21,"context_line":"from ironic_discoverd.test import base as test_base"},{"line_number":22,"context_line":"from ironic_discoverd import utils"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6ced46_91a3929d","line":23,"updated":"2015-03-24 14:11:57.000000000","message":"oslo_config is a 3rdparty module and should be grouped with mock, eventlet etc","commit_id":"794960a8b5433458bc6f53308a27afb2d2d486bd"}],"ironic_discoverd/test/test_main.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08752efa150f877d779df476bc6652af0aa17044","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from ironic_discoverd import process"},{"line_number":27,"context_line":"from ironic_discoverd.test import base as test_base"},{"line_number":28,"context_line":"from ironic_discoverd import utils"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6ced46_f1bf66a8","line":29,"updated":"2015-03-24 14:11:57.000000000","message":"ditto","commit_id":"794960a8b5433458bc6f53308a27afb2d2d486bd"}],"ironic_discoverd/test/test_node_cache.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08752efa150f877d779df476bc6652af0aa17044","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from ironic_discoverd import node_cache"},{"line_number":22,"context_line":"from ironic_discoverd.test import base as test_base"},{"line_number":23,"context_line":"from ironic_discoverd import utils"},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d cfg.CONF"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6ced46_31e1fed0","line":24,"updated":"2015-03-24 14:11:57.000000000","message":"ditto","commit_id":"794960a8b5433458bc6f53308a27afb2d2d486bd"}],"ironic_discoverd/test/test_plugins_edeploy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08752efa150f877d779df476bc6652af0aa17044","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from ironic_discoverd.plugins import edeploy"},{"line_number":21,"context_line":"from ironic_discoverd.test import base as test_base"},{"line_number":22,"context_line":"from ironic_discoverd import utils"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6ced46_71eb76b0","line":23,"updated":"2015-03-24 14:11:57.000000000","message":"ditto","commit_id":"794960a8b5433458bc6f53308a27afb2d2d486bd"}],"ironic_discoverd/test/test_process.py":[{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7518ad608de560ed4bd884d22992446ec6556bf0","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        return wrapper"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @prepare_mocks"},{"line_number":85,"context_line":"    def test_ok(self, cli, pop_mock, process_mock):"},{"line_number":86,"context_line":"        res \u003d process.process(self.data)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6ced46_faf4add0","line":84,"updated":"2015-03-24 07:48:53.000000000","message":"Why does this fail? I cannot understand \u003e_\u003c","commit_id":"10b6f2000b98c86d6872ef4d198dbe846a0645ed"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08752efa150f877d779df476bc6652af0aa17044","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from ironic_discoverd import process"},{"line_number":26,"context_line":"from ironic_discoverd.test import base as test_base"},{"line_number":27,"context_line":"from ironic_discoverd import utils"},{"line_number":28,"context_line":"from oslo_config import cfg"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d cfg.CONF"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6ced46_31081e91","line":28,"updated":"2015-03-24 14:11:57.000000000","message":"ditto","commit_id":"794960a8b5433458bc6f53308a27afb2d2d486bd"}],"ironic_discoverd/test/test_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08752efa150f877d779df476bc6652af0aa17044","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from ironic_discoverd.test import base"},{"line_number":22,"context_line":"from ironic_discoverd import utils"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6ced46_11616239","line":23,"updated":"2015-03-24 14:11:57.000000000","message":"ditto","commit_id":"794960a8b5433458bc6f53308a27afb2d2d486bd"}],"setup.cfg":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fb1c10f8b642bb3bedf4a59619a79639e14e8b52","unresolved":false,"context_lines":[{"line_number":12,"context_line":"mapping_file \u003d babel.cfg"},{"line_number":13,"context_line":"output_file \u003d locale/ironic-discoverd.pot"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[entry_points]"},{"line_number":16,"context_line":"oslo.config.opts \u003d"},{"line_number":17,"context_line":"    ironic-discoverd \u003d ironic_discoverd.opts:list_opts"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"9a80dd14_283230a7","line":15,"updated":"2015-03-19 11:02:59.000000000","message":"I think it\u0027s not working without pbr, setup.py change is enough","commit_id":"9ff9b7fa378c5edc52f3020618118009107934bd"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"e4c663617200fb4f6a2dce988e5c757fb84f8fe1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"mapping_file \u003d babel.cfg"},{"line_number":13,"context_line":"output_file \u003d locale/ironic-discoverd.pot"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[entry_points]"},{"line_number":16,"context_line":"oslo.config.opts \u003d"},{"line_number":17,"context_line":"    ironic-discoverd \u003d ironic_discoverd.opts:list_opts"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"9a80dd14_c56224ac","line":15,"in_reply_to":"9a80dd14_283230a7","updated":"2015-03-20 12:41:59.000000000","message":"Sorry, not yet.","commit_id":"9ff9b7fa378c5edc52f3020618118009107934bd"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"497800011c1691416899dbb5d8a29d9e98ff51ce","unresolved":false,"context_lines":[{"line_number":12,"context_line":"mapping_file \u003d babel.cfg"},{"line_number":13,"context_line":"output_file \u003d locale/ironic-discoverd.pot"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[entry_points]"},{"line_number":16,"context_line":"oslo.config.opts \u003d"},{"line_number":17,"context_line":"    ironic-discoverd \u003d ironic_discoverd.opts:list_opts"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"1a6ced46_18ad4789","line":15,"in_reply_to":"9a80dd14_c56224ac","updated":"2015-03-23 07:59:15.000000000","message":"Done","commit_id":"9ff9b7fa378c5edc52f3020618118009107934bd"}]}
