prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  (Berliner Stadtreinigung) BSR not working
  Hi there, since about a day or two BSR integration isn't pulling data into HA. 
  Any idea what might be wrong? Just FYI the data from abfall.io (ALBA Berlin) is working just fine. 
  
  Sorry for not posting code / log, but I'm unsure, what I should be posting. 
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py`
  Content:
  ```
  1 import urllib.parse
  2 
  3 import requests
  4 from waste_collection_schedule import Collection  # type: ignore[attr-defined]
  5 from waste_collection_schedule.service.ICS import ICS
  6 
  7 TITLE = "Berliner Stadtreinigungsbetriebe"
  8 DESCRIPTION = "Source for Berliner Stadtreinigungsbetriebe waste collection."
  9 URL = "https://bsr.de"
  10 TEST_CASES = {
  11     "Bahnhofstr., 12159 Berlin (Tempelhof-Schöneberg)": {
  12         "abf_strasse": "Bahnhofstr., 12159 Berlin (Tempelhof-Schöneberg)",
  13         "abf_hausnr": 1,
  14     },
  15     "Am Ried, 13467 Berlin (Reinickendorf)": {
  16         "abf_strasse": "Am Ried, 13467 Berlin (Reinickendorf)",
  17         "abf_hausnr": "11G",
  18     },
  19 }
  20 
  21 
  22 def myquote(s):
  23     # bsr uses strange quoting
  24     return urllib.parse.quote(s, safe=",()")
  25 
  26 
  27 class Source:
  28     def __init__(self, abf_strasse, abf_hausnr):
  29         self._abf_strasse = abf_strasse
  30         self._abf_hausnr = abf_hausnr
  31         self._ics = ICS()
  32 
  33     def fetch(self):
  34         # get cookie
  35         r = requests.get("https://www.bsr.de/abfuhrkalender-20520.php")
  36         cookies = r.cookies
  37 
  38         # get street name only (without PLZ)
  39         street = self._abf_strasse.split(",")[0]
  40 
  41         # start search using string name (without PLZ)
  42         args = {"script": "dynamic_search", "step": 1, "q": street}
  43         r = requests.get(
  44             "https://www.bsr.de/abfuhrkalender_ajax.php", params=args, cookies=cookies
  45         )
  46 
  47         # retrieve house number list
  48         args = {"script": "dynamic_search", "step": 2, "q": self._abf_strasse}
  49         r = requests.get(
  50             "https://www.bsr.de/abfuhrkalender_ajax.php", params=args, cookies=cookies
  51         )
  52 
  53         args = {
  54             "abf_strasse": street,
  55             "abf_hausnr": self._abf_hausnr,
  56             "tab_control": "Jahr",
  57             "abf_config_weihnachtsbaeume": "",
  58             "abf_config_restmuell": "on",
  59             "abf_config_biogut": "on",
  60             "abf_config_wertstoffe": "on",
  61             "abf_config_laubtonne": "on",
  62             # "abf_selectmonth": "5 2020",
  63             # "abf_datepicker": "28.04.2020",
  64             # "listitems":7,
  65         }
  66         r = requests.post(
  67             "https://www.bsr.de/abfuhrkalender_ajax.php?script=dynamic_kalender_ajax",
  68             data=args,
  69             cookies=cookies,
  70         )
  71 
  72         args = {
  73             "script": "dynamic_iCal_ajax",
  74             "abf_strasse": self._abf_strasse,
  75             "abf_hausnr": self._abf_hausnr,
  76             "tab_control": "Jahr",
  77             "abf_config_weihnachtsbaeume": "",
  78             "abf_config_restmuell": "on",
  79             "abf_config_biogut": "on",
  80             "abf_config_wertstoffe": "on",
  81             "abf_config_laubtonne": "on",
  82             # "abf_selectmonth": "5 2020",
  83             # "listitems":7,
  84         }
  85 
  86         # create url using private url encoding
  87         encoded = map(lambda key: f"{key}={myquote(str(args[key]))}", args.keys())
  88         url = "https://www.bsr.de/abfuhrkalender_ajax.php?" + "&".join(encoded)
  89         r = requests.get(url, cookies=cookies)
  90 
  91         # parse ics file
  92         dates = self._ics.convert(r.text)
  93 
  94         entries = []
  95         for d in dates:
  96             entries.append(Collection(d[0], d[1]))
  97         return entries
  98
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py
  --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py
  +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py
  @@ -28,7 +28,7 @@
       def __init__(self, abf_strasse, abf_hausnr):
           self._abf_strasse = abf_strasse
           self._abf_hausnr = abf_hausnr
  -        self._ics = ICS()
  +        self._ics = ICS(offset=1)
   
       def fetch(self):
           # get cookie
  
verification_info: {"golden_diff": "diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py\n--- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py\n+++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py\n@@ -28,7 +28,7 @@\n     def __init__(self, abf_strasse, abf_hausnr):\n         self._abf_strasse = abf_strasse\n         self._abf_hausnr = abf_hausnr\n-        self._ics = ICS()\n+        self._ics = ICS(offset=1)\n \n     def fetch(self):\n         # get cookie\n", "issue": "(Berliner Stadtreinigung) BSR not working\nHi there, since about a day or two BSR integration isn't pulling data into HA. \r\nAny idea what might be wrong? Just FYI the data from abfall.io (ALBA Berlin) is working just fine. \r\n\r\nSorry for not posting code / log, but I'm unsure, what I should be posting. \n", "before_files": [{"content": "import urllib.parse\n\nimport requests\nfrom waste_collection_schedule import Collection  # type: ignore[attr-defined]\nfrom waste_collection_schedule.service.ICS import ICS\n\nTITLE = \"Berliner Stadtreinigungsbetriebe\"\nDESCRIPTION = \"Source for Berliner Stadtreinigungsbetriebe waste collection.\"\nURL = \"https://bsr.de\"\nTEST_CASES = {\n    \"Bahnhofstr., 12159 Berlin (Tempelhof-Sch\u00f6neberg)\": {\n        \"abf_strasse\": \"Bahnhofstr., 12159 Berlin (Tempelhof-Sch\u00f6neberg)\",\n        \"abf_hausnr\": 1,\n    },\n    \"Am Ried, 13467 Berlin (Reinickendorf)\": {\n        \"abf_strasse\": \"Am Ried, 13467 Berlin (Reinickendorf)\",\n        \"abf_hausnr\": \"11G\",\n    },\n}\n\n\ndef myquote(s):\n    # bsr uses strange quoting\n    return urllib.parse.quote(s, safe=\",()\")\n\n\nclass Source:\n    def __init__(self, abf_strasse, abf_hausnr):\n        self._abf_strasse = abf_strasse\n        self._abf_hausnr = abf_hausnr\n        self._ics = ICS()\n\n    def fetch(self):\n        # get cookie\n        r = requests.get(\"https://www.bsr.de/abfuhrkalender-20520.php\")\n        cookies = r.cookies\n\n        # get street name only (without PLZ)\n        street = self._abf_strasse.split(\",\")[0]\n\n        # start search using string name (without PLZ)\n        args = {\"script\": \"dynamic_search\", \"step\": 1, \"q\": street}\n        r = requests.get(\n            \"https://www.bsr.de/abfuhrkalender_ajax.php\", params=args, cookies=cookies\n        )\n\n        # retrieve house number list\n        args = {\"script\": \"dynamic_search\", \"step\": 2, \"q\": self._abf_strasse}\n        r = requests.get(\n            \"https://www.bsr.de/abfuhrkalender_ajax.php\", params=args, cookies=cookies\n        )\n\n        args = {\n            \"abf_strasse\": street,\n            \"abf_hausnr\": self._abf_hausnr,\n            \"tab_control\": \"Jahr\",\n            \"abf_config_weihnachtsbaeume\": \"\",\n            \"abf_config_restmuell\": \"on\",\n            \"abf_config_biogut\": \"on\",\n            \"abf_config_wertstoffe\": \"on\",\n            \"abf_config_laubtonne\": \"on\",\n            # \"abf_selectmonth\": \"5 2020\",\n            # \"abf_datepicker\": \"28.04.2020\",\n            # \"listitems\":7,\n        }\n        r = requests.post(\n            \"https://www.bsr.de/abfuhrkalender_ajax.php?script=dynamic_kalender_ajax\",\n            data=args,\n            cookies=cookies,\n        )\n\n        args = {\n            \"script\": \"dynamic_iCal_ajax\",\n            \"abf_strasse\": self._abf_strasse,\n            \"abf_hausnr\": self._abf_hausnr,\n            \"tab_control\": \"Jahr\",\n            \"abf_config_weihnachtsbaeume\": \"\",\n            \"abf_config_restmuell\": \"on\",\n            \"abf_config_biogut\": \"on\",\n            \"abf_config_wertstoffe\": \"on\",\n            \"abf_config_laubtonne\": \"on\",\n            # \"abf_selectmonth\": \"5 2020\",\n            # \"listitems\":7,\n        }\n\n        # create url using private url encoding\n        encoded = map(lambda key: f\"{key}={myquote(str(args[key]))}\", args.keys())\n        url = \"https://www.bsr.de/abfuhrkalender_ajax.php?\" + \"&\".join(encoded)\n        r = requests.get(url, cookies=cookies)\n\n        # parse ics file\n        dates = self._ics.convert(r.text)\n\n        entries = []\n        for d in dates:\n            entries.append(Collection(d[0], d[1]))\n        return entries\n", "path": "custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py"}], "after_files": [{"content": "import urllib.parse\n\nimport requests\nfrom waste_collection_schedule import Collection  # type: ignore[attr-defined]\nfrom waste_collection_schedule.service.ICS import ICS\n\nTITLE = \"Berliner Stadtreinigungsbetriebe\"\nDESCRIPTION = \"Source for Berliner Stadtreinigungsbetriebe waste collection.\"\nURL = \"https://bsr.de\"\nTEST_CASES = {\n    \"Bahnhofstr., 12159 Berlin (Tempelhof-Sch\u00f6neberg)\": {\n        \"abf_strasse\": \"Bahnhofstr., 12159 Berlin (Tempelhof-Sch\u00f6neberg)\",\n        \"abf_hausnr\": 1,\n    },\n    \"Am Ried, 13467 Berlin (Reinickendorf)\": {\n        \"abf_strasse\": \"Am Ried, 13467 Berlin (Reinickendorf)\",\n        \"abf_hausnr\": \"11G\",\n    },\n}\n\n\ndef myquote(s):\n    # bsr uses strange quoting\n    return urllib.parse.quote(s, safe=\",()\")\n\n\nclass Source:\n    def __init__(self, abf_strasse, abf_hausnr):\n        self._abf_strasse = abf_strasse\n        self._abf_hausnr = abf_hausnr\n        self._ics = ICS(offset=1)\n\n    def fetch(self):\n        # get cookie\n        r = requests.get(\"https://www.bsr.de/abfuhrkalender-20520.php\")\n        cookies = r.cookies\n\n        # get street name only (without PLZ)\n        street = self._abf_strasse.split(\",\")[0]\n\n        # start search using string name (without PLZ)\n        args = {\"script\": \"dynamic_search\", \"step\": 1, \"q\": street}\n        r = requests.get(\n            \"https://www.bsr.de/abfuhrkalender_ajax.php\", params=args, cookies=cookies\n        )\n\n        # retrieve house number list\n        args = {\"script\": \"dynamic_search\", \"step\": 2, \"q\": self._abf_strasse}\n        r = requests.get(\n            \"https://www.bsr.de/abfuhrkalender_ajax.php\", params=args, cookies=cookies\n        )\n\n        args = {\n            \"abf_strasse\": street,\n            \"abf_hausnr\": self._abf_hausnr,\n            \"tab_control\": \"Jahr\",\n            \"abf_config_weihnachtsbaeume\": \"\",\n            \"abf_config_restmuell\": \"on\",\n            \"abf_config_biogut\": \"on\",\n            \"abf_config_wertstoffe\": \"on\",\n            \"abf_config_laubtonne\": \"on\",\n            # \"abf_selectmonth\": \"5 2020\",\n            # \"abf_datepicker\": \"28.04.2020\",\n            # \"listitems\":7,\n        }\n        r = requests.post(\n            \"https://www.bsr.de/abfuhrkalender_ajax.php?script=dynamic_kalender_ajax\",\n            data=args,\n            cookies=cookies,\n        )\n\n        args = {\n            \"script\": \"dynamic_iCal_ajax\",\n            \"abf_strasse\": self._abf_strasse,\n            \"abf_hausnr\": self._abf_hausnr,\n            \"tab_control\": \"Jahr\",\n            \"abf_config_weihnachtsbaeume\": \"\",\n            \"abf_config_restmuell\": \"on\",\n            \"abf_config_biogut\": \"on\",\n            \"abf_config_wertstoffe\": \"on\",\n            \"abf_config_laubtonne\": \"on\",\n            # \"abf_selectmonth\": \"5 2020\",\n            # \"listitems\":7,\n        }\n\n        # create url using private url encoding\n        encoded = map(lambda key: f\"{key}={myquote(str(args[key]))}\", args.keys())\n        url = \"https://www.bsr.de/abfuhrkalender_ajax.php?\" + \"&\".join(encoded)\n        r = requests.get(url, cookies=cookies)\n\n        # parse ics file\n        dates = self._ics.convert(r.text)\n\n        entries = []\n        for d in dates:\n            entries.append(Collection(d[0], d[1]))\n        return entries\n", "path": "custom_components/waste_collection_schedule/waste_collection_schedule/source/bsr_de.py"}]}