internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: alltheplaces/alltheplaces

Issue:
99 Ranch Market
### Brand name

99 Ranch Market

American Asian supermarket chain

### Wikidata ID

Q4646307
https://www.wikidata.org/wiki/Q4646307
https://www.wikidata.org/wiki/Special:EntityData/Q4646307.json

### Store finder url(s)

Official Url(s): https://99ranch.com/
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q4646307 https://99ranch.com/`
```
```
https://www.99ranch.com/stores-search



Discussion:

Resolving patch:
diff --git a/locations/spiders/99_ranch_market_us.py b/locations/spiders/99_ranch_market_us.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/99_ranch_market_us.py
@@ -0,0 +1,47 @@
+from scrapy import Spider
+from scrapy.http import JsonRequest
+
+from locations.categories import Categories
+from locations.dict_parser import DictParser
+from locations.hours import OpeningHours
+
+
+class NinetyNineRanchMarketUSSpider(Spider):
+    name = "99_ranch_market_us"
+    item_attributes = {
+        "brand": "99 Ranch Market",
+        "brand_wikidata": "Q4646307",
+        "extras": Categories.SHOP_SUPERMARKET.value,
+    }
+    allowed_domains = ["api.awsprod.99ranch.com"]
+    start_urls = ["https://api.awsprod.99ranch.com/store/web/nearby/stores"]
+
+    def start_requests(self):
+        data = {
+            "address": "Foster City, CA, USA",
+            "zipCode": "",
+            "longitude": -122.2710788,
+            "latitude": 37.5585465,
+            "pageSize": 1000,
+            "pageNum": 1,
+            "type": 1,
+            "source": "WEB",
+            "within": 10000,
+        }
+        yield JsonRequest(url=self.start_urls[0], data=data, method="POST")
+
+    def parse(self, response):
+        for location in response.json()["data"]["records"]:
+            item = DictParser.parse(location)
+            item.pop("email", None)
+            item["image"] = location.get("logo")
+
+            hours_string = ""
+            for day_hours in location.get("offlineBusinessTimes", []):
+                hours_string = "{} {}: {} - {}".format(
+                    hours_string, day_hours["dayOfWeeks"], day_hours["startTime"], day_hours["endTime"]
+                )
+            item["opening_hours"] = OpeningHours()
+            item["opening_hours"].add_ranges_from_string(hours_string)
+
+            yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Godiva Chocolatier (Multiple counties) (shop/chocolate)
### Brand name

Godiva Chocolatier

Turkish owned Belgian chocolaterie

### Wikidata ID

Q931084
https://www.wikidata.org/wiki/Q931084
https://www.wikidata.org/wiki/Special:EntityData/Q931084.json

### Store finder url(s)

https://shop.godiva.co.jp/stores
https://godiva.com.au/pages/stores
Many others probably

Official Url(s): https://www.godiva.co.jp/
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q931084 https://www.godiva.co.jp/`
```
```
Official Url(s): http://www.godiva.com
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q931084 http://www.godiva.com`
```
```


Discussion:
https://stockist.co/api/v1/u17509/locations/all for Australia
`curl 'https://shop.godiva.co.jp/api/delivery/stores/search/' -X POST -H 'Accept: application/json' -H 'Content-Type: application/json;charset=utf-8' --data-raw '{"lat":"","lng":"","area_id":"","q":"","is_opening":"","bs_services":"","bs_brands":"","referer":"","_browser_url":"https%3A%2F%2Fshop.godiva.co.jp%2Fstores","current_url":"https%3A%2F%2Fhttps%3A%2F%2Fshop.godiva.co.jp%2Fstores","limit":"10000"}'` for Japan (357 locations)

Resolving patch:
diff --git a/locations/spiders/godiva_chocolatier_au.py b/locations/spiders/godiva_chocolatier_au.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/godiva_chocolatier_au.py
@@ -0,0 +1,12 @@
+from locations.categories import Categories
+from locations.storefinders.stockist import StockistSpider
+
+
+class GodivaChocolatierAUSpider(StockistSpider):
+    name = "godiva_chocolatier_au"
+    item_attributes = {
+        "brand": "Godiva Chocolatier",
+        "brand_wikidata": "Q931084",
+        "extras": Categories.SHOP_CHOCOLATE.value,
+    }
+    key = "u17509"


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Peavey Mart (CA) (Kibo)
### Brand name

Peavey Mart

Canadian retailer

### Wikidata ID

Q7158483
https://www.wikidata.org/wiki/Q7158483
https://www.wikidata.org/wiki/Special:EntityData/Q7158483.json

### Store finder url(s)

Official Url(s): https://www.peaveymart.com/
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q7158483 https://www.peaveymart.com/`
```
from locations.storefinders.kibo import KiboSpider


class PeaveyMartCASpider(KiboSpider):
        name = "peavey_mart_ca"
        item_attributes = {
                "brand_wikidata": "Q7158483",
                "brand": "Peavey Mart",
        }
        start_urls = [
                "https://www.peaveymart.com/api/commerce/storefront/locationUsageTypes/SP/locations",
        ]
```



Discussion:
https://www.peaveymart.com/store-locator#mobile-menu

Resolving patch:
diff --git a/locations/spiders/peavey_mart_ca.py b/locations/spiders/peavey_mart_ca.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/peavey_mart_ca.py
@@ -0,0 +1,19 @@
+from locations.categories import Categories
+from locations.storefinders.kibo import KiboSpider
+from locations.user_agents import BROWSER_DEFAULT
+
+
+class PeaveyMartCASpider(KiboSpider):
+    name = "peavey_mart_ca"
+    item_attributes = {
+        "brand": "Peavey Mart",
+        "brand_wikidata": "Q7158483",
+        "extras": Categories.SHOP_COUNTRY_STORE.value,
+    }
+    start_urls = ["https://www.peaveymart.com/api/commerce/storefront/locationUsageTypes/SP/locations"]
+    user_agent = BROWSER_DEFAULT
+    api_filter = "locationType.Code eq STORE"
+
+    def parse_item(self, item, location):
+        item["website"] = "https://www.peaveymart.com/store-details?locationCode=" + item["ref"]
+        yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Rouses
### Brand name

Rouses

U.S. supermarket chain

### Wikidata ID

Q7371327
https://www.wikidata.org/wiki/Q7371327
https://www.wikidata.org/wiki/Special:EntityData/Q7371327.json

### Store finder url(s)
https://www.rouses.com/locations/
Official Url(s): https://www.rouses.com
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [x] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q7371327 https://www.rouses.com`
```
```


Discussion:

Resolving patch:
diff --git a/locations/spiders/rouses_us.py b/locations/spiders/rouses_us.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/rouses_us.py
@@ -0,0 +1,27 @@
+import re
+
+from scrapy.spiders import SitemapSpider
+
+from locations.categories import Categories
+from locations.hours import OpeningHours
+from locations.structured_data_spider import StructuredDataSpider
+
+
+class RousesUSSpider(SitemapSpider, StructuredDataSpider):
+    name = "rouses_us"
+    item_attributes = {"brand": "Rouses", "brand_wikidata": "Q7371327", "extras": Categories.SHOP_SUPERMARKET.value}
+    allowed_domains = ["www.rouses.com"]
+    sitemap_urls = ["https://www.rouses.com/locations-sitemap.xml"]
+    sitemap_rules = [(r"^https:\/\/www\.rouses\.com\/locations\/rouses(?:-market|-store)-\d+\/$", "parse_sd")]
+
+    def post_process_item(self, item, response, ld_data):
+        item["ref"] = ld_data.get("name", "").split("#", 1)[1].strip()
+        item.pop("twitter", None)
+        if m := re.match(
+            r"(\d{1,2}(?::\d{1,2})?(?:am|pm))\s*-\s*(\d{1,2}(?::\d{1,2})?(?:am|pm))\s*<\/br>\s*Daily",
+            ld_data.get("openingHours", ""),
+            flags=re.IGNORECASE,
+        ):
+            item["opening_hours"] = OpeningHours()
+            item["opening_hours"].add_ranges_from_string("Mo-Su: {}-{}".format(m.group(1), m.group(2)))
+        yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Vinmonopolet (NO) (shop/alcohol) (331 locations)
### Brand name

Vinmonopolet

### Wikidata ID

Q1740534

### Store finder url(s)

https://www.vinmonopolet.no/finn-butikk
https://www.vinmonopolet.no/butikk/143


Discussion:

Resolving patch:
diff --git a/locations/spiders/vinmonopolet_no.py b/locations/spiders/vinmonopolet_no.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/vinmonopolet_no.py
@@ -0,0 +1,38 @@
+from scrapy import Spider
+from scrapy.http import JsonRequest
+
+from locations.categories import Categories
+from locations.dict_parser import DictParser
+from locations.hours import DAYS_NO, OpeningHours
+
+
+class VinmonopoletNOSpider(Spider):
+    name = "vinmonopolet_no"
+    item_attributes = {"brand": "Vinmonopolet", "brand_wikidata": "Q1740534", "extras": Categories.SHOP_ALCOHOL.value}
+    allowed_domains = ["www.vinmonopolet.no"]
+    start_urls = ["https://www.vinmonopolet.no/vmpws/v2/vmp/stores/?fields=FULL&pageSize=1000"]
+
+    def start_requests(self):
+        for url in self.start_urls:
+            yield JsonRequest(url=url)
+
+    def parse(self, response):
+        for location in response.json()["stores"]:
+            item = DictParser.parse(location)
+            item["ref"] = location.get("name")
+            item["name"] = location.get("displayName")
+            item["addr_full"] = location["address"].get("formattedAddress")
+            item["website"] = "https://www.vinmonopolet.no/butikk/" + item["ref"]
+            item["phone"] = location["address"].get("phone")
+
+            item["opening_hours"] = OpeningHours()
+            for day_hours in location.get("openingTimes"):
+                if day_hours["closed"]:
+                    continue
+                item["opening_hours"].add_range(
+                    DAYS_NO[day_hours["weekDay"]],
+                    day_hours["openingTime"]["formattedHour"],
+                    day_hours["closingTime"]["formattedHour"],
+                )
+
+            yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Plaza Vea (Custom API)
### Brand name

Plaza Vea

chain of shopping malls in Peru

### Wikidata ID

Q7203672
https://www.wikidata.org/wiki/Q7203672
https://www.wikidata.org/wiki/Special:EntityData/Q7203672.json

### Store finder url(s)
https://vea.plazavea.com.pe/principal/nuestras-tiendas
Official Url(s): http://www.plazavea.com.pe/
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q7203672 http://www.plazavea.com.pe/`
```
```



Discussion:
https://vea.plazavea.com.pe/controller.aspx?ope=tiendas&p1=14&p2=-1&p3=-1

Resolving patch:
diff --git a/locations/spiders/plaza_vea_pe.py b/locations/spiders/plaza_vea_pe.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/plaza_vea_pe.py
@@ -0,0 +1,31 @@
+from scrapy import Spider
+
+from locations.dict_parser import DictParser
+from locations.hours import DAYS_ES, OpeningHours
+
+
+class PlazaVeaPESpider(Spider):
+    name = "plaza_vea_pe"
+    item_attributes = {"brand": "Plaza Vea", "brand_wikidata": "Q7203672"}
+    start_urls = ["https://vea.plazavea.com.pe/controller.aspx?ope=tiendas&p1=14&p2=-1&p3=-1"]
+
+    def parse(self, response):
+        for location in response.json():
+            # This doesn't pick up much at the moment, but I'm assuming it may turn multi lingual down the track
+            item = DictParser.parse(location)
+            item["ref"] = location["TIE_CODIGO"]
+            item["name"] = location["TIE_NOMBRE"]
+            item["lon"] = location["TIE_GMAP_LONGITUD"]
+            item["lat"] = location["TIE_GMAP_LATITUD"]
+            item["phone"] = location["TIE_TELEFONO"]
+            item["street_address"] = location["TIE_DIRECCION"]
+            item["opening_hours"] = OpeningHours()
+
+            # 'TIE_HORARIO': 'L-D 08:00 - 22:00 hrs. '
+            cleaned_hours = location["TIE_HORARIO"].replace("L", "Lunes").replace("D", "Domingo")
+            item["opening_hours"].add_ranges_from_string(cleaned_hours, DAYS_ES)
+
+            # Some locations include services:
+            # "TIE_SERVICIOS": "Banco Interbank, Farmacia Inkafarma y óptica Econolentes",
+
+            yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Rabba

### Brand name

Rabba

grocery store chain

### Wikidata ID

Q109659398
https://www.wikidata.org/wiki/Q109659398
https://www.wikidata.org/wiki/Special:EntityData/Q109659398.json

### Store finder url(s)
https://rabba.com/locations/
Official Url(s): https://rabba.com/
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q109659398 https://rabba.com/`
```
```


Discussion:

Resolving patch:
diff --git a/locations/spiders/rabba_ca.py b/locations/spiders/rabba_ca.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/rabba_ca.py
@@ -0,0 +1,35 @@
+from scrapy import Spider
+from scrapy.http import JsonRequest
+
+from locations.categories import Categories
+from locations.dict_parser import DictParser
+from locations.hours import DAYS, OpeningHours
+
+
+class RabbaCASpider(Spider):
+    name = "rabba_ca"
+    item_attributes = {"brand": "Rabba", "brand_wikidata": "Q109659398", "extras": Categories.SHOP_SUPERMARKET.value}
+    allowed_domains = ["core.service.elfsight.com"]
+    start_urls = [
+        "https://core.service.elfsight.com/p/boot/?page=https://rabba.com/locations/&w=3df8be4a-1f05-46f7-86b4-f9dd7e4f717a"
+    ]
+
+    def start_requests(self):
+        for url in self.start_urls:
+            yield JsonRequest(url=url)
+
+    def parse(self, response):
+        for location in response.json()["data"]["widgets"]["3df8be4a-1f05-46f7-86b4-f9dd7e4f717a"]["data"]["settings"][
+            "markers"
+        ]:
+            item = DictParser.parse(location)
+            item["name"] = location.get("infoTitle")
+            item["lat"], item["lon"] = location.get("coordinates").split(", ", 1)
+            item["addr_full"] = location.get("infoAddress")
+            item["phone"] = location.get("infoPhone")
+            item["email"] = location.get("infoEmail")
+            item["website"] = location.get("linkUrl")
+            if "24 HOURS" in location.get("infoWorkingHours").upper():
+                item["opening_hours"] = OpeningHours()
+                item["opening_hours"].add_days_range(DAYS, "00:00", "23:59")
+            yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Mego (LV) (JS Blob) (91 locations)
### Brand name

Mego

Latvian supermarket chain

### Wikidata ID

Q16363314
https://www.wikidata.org/wiki/Q16363314
https://www.wikidata.org/wiki/Special:EntityData/Q16363314.json

### Store finder url(s)
https://mego.lv/en/contact-information
Official Url(s): https://www.mego.lv/
- [x] I have run the below and if anything in generated, added it.
- [x] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q16363314 https://www.mego.lv/`
```
```


Discussion:
```
        <script>
                    var coords = [{
                        "x": "56.9321559",
                        "y": "24.2017965",
                        "city_id": 1,
                        "shop_id": 1,
                        "address": "A. Saharova street 2",
                        "info": "\u003cdiv class='map__item'\u003e\n            \u003cspan class='map__item-title'\u003e\n              \u003ci class='fa fa-recycle' title=Taromat\u003e\u003c/i\u003e\n              \u003cspan\u003eA. Saharova street 2\u003c/span\u003e\n            \u003c/span\u003e\n            \u003cspan class='map__item-contacts\u003e\u003c/span\u003e\n            \u003cspan class='map__item-content\u003e\u003cp\u003eMon.\u0026ndash;Fr. 07:00\u0026ndash;23:00\u003cbr /\u003e\r\nSat. 07:00\u0026ndash;23:00\u003cbr /\u003e\r\nSun. 07:00\u0026ndash;23:00\u003c/p\u003e\r\n\u003c/span\u003e\n          \u003c/div\u003e"
                    }, 
```

Resolving patch:
diff --git a/locations/spiders/mego_lv.py b/locations/spiders/mego_lv.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/mego_lv.py
@@ -0,0 +1,26 @@
+import chompjs
+from scrapy import Spider
+from scrapy.http import HtmlResponse
+
+from locations.hours import OpeningHours
+from locations.items import Feature
+
+
+class MegoLV(Spider):
+    name = "mego_lv"
+    start_urls = ["https://mego.lv/en/contact-information"]
+    item_attributes = {"brand_wikidata": "Q16363314"}
+
+    def parse(self, response):
+        for location in chompjs.parse_js_object(response.xpath("//div[@class='map']/script/text()").get()):
+            item = Feature()
+            item["ref"] = location["shop_id"]
+            item["lat"] = location["x"]
+            item["lon"] = location["y"]
+            item["street_address"] = location["address"]
+
+            fragment = HtmlResponse(url="#" + str(location["shop_id"]), body=location["info"], encoding="utf-8")
+            if hours := fragment.xpath("//p/text()").get().replace(".", ""):
+                item["opening_hours"] = OpeningHours()
+                item["opening_hours"].add_ranges_from_string(hours)
+            yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
Shopwise

### Brand name

Shopwise

supermarket chain in the Philippines

### Wikidata ID

Q118674375
https://www.wikidata.org/wiki/Q118674375
https://www.wikidata.org/wiki/Special:EntityData/Q118674375.json

### Store finder url(s)

Official Url(s): https://www.shopwise.com.ph
- [x] I have run the below and if anything in generated, added it.
- [ ] I have manually checked for a storefinder
- [ ] This is not a manufacturer listing outlets operating under their own brands / this will not create duplicates
`pipenv run scrapy sf --brand-wikidata=Q118674375 https://www.shopwise.com.ph`
```
```
https://www.shopwise.com.ph/our-stores


Discussion:

Resolving patch:
diff --git a/locations/spiders/shopwise_ph.py b/locations/spiders/shopwise_ph.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/shopwise_ph.py
@@ -0,0 +1,37 @@
+import re
+
+from scrapy import Spider
+from scrapy.http import JsonRequest
+
+from locations.categories import Categories
+from locations.dict_parser import DictParser
+from locations.hours import OpeningHours
+
+
+class ShopwisePHSpider(Spider):
+    name = "shopwise_ph"
+    item_attributes = {"brand": "Shopwise", "brand_wikidata": "Q118674375", "extras": Categories.SHOP_SUPERMARKET.value}
+    allowed_domains = ["api.shopwise.com.ph"]
+    start_urls = ["https://api.shopwise.com.ph/api/web/our-stores?site_id=2"]
+
+    def start_requests(self):
+        for url in self.start_urls:
+            yield JsonRequest(url=url)
+
+    def parse(self, response):
+        for location in response.json()["branches"]:
+            if not location.get("enabled"):
+                continue
+            item = DictParser.parse(location)
+            item["phone"] = re.sub(
+                r"<[^>]+>", "", location["phone"].split(" loc", 1)[0].split(";", 1)[0].split("/", 1)[0]
+            )
+            ph_regions = {
+                region["id"]: re.sub(r"^Region [\w\-]+ \(([^\)]+)\)$", r"\1", region["name"]).title()
+                for region in response.json()["perRegions"]
+            }
+            item["state"] = ph_regions[location["region_id"]]
+            hours_string = "Mo-Su: " + re.sub(r"<[^>]+>", "", location.get("store_hours", ""))
+            item["opening_hours"] = OpeningHours()
+            item["opening_hours"].add_ranges_from_string(hours_string)
+            yield item


Test patch:
Repository: alltheplaces/alltheplaces

Issue:
[GB] Poundstretcher (323 shops, jsblob)
### Brand name

Poundstretcher

### Wikidata ID

Q7235675

### Store finder url(s)

https://www.poundstretcher.co.uk/find-a-store

json:
https://www.poundstretcher.co.uk/ustorelocator/location/searchJson/


Discussion:
Oh I assigned myself, but did you want to try?
> Oh I assigned myself, but did you want to try?

sadly i'm pretty busy at the moment, so if you fancy doing it that'd be great :)
i'll get around to it eventually if not

Resolving patch:
diff --git a/locations/spiders/poundstretcher_gb.py b/locations/spiders/poundstretcher_gb.py
new file mode 100644
--- /dev/null
+++ b/locations/spiders/poundstretcher_gb.py
@@ -0,0 +1,41 @@
+from typing import Any
+from urllib.parse import urljoin
+
+from scrapy import Selector, Spider
+from scrapy.http import Response
+
+from locations.dict_parser import DictParser
+from locations.hours import OpeningHours
+
+BARGAIN_BUYS = {"brand": "Bargain Buys", "brand_wikidata": "Q19870995"}
+POUNDSTRETCHER = {"brand": "Poundstretcher", "brand_wikidata": "Q7235675"}
+
+
+class PoundstretcherGBSpider(Spider):
+    name = "poundstretcher_gb"
+    item_attributes = POUNDSTRETCHER
+    start_urls = ["https://www.poundstretcher.co.uk/ustorelocator/location/searchJson/"]
+
+    def parse(self, response: Response, **kwargs: Any) -> Any:
+        for location in response.json()["markers"]:
+            item = DictParser.parse(location)
+            item["branch"] = item.pop("name")
+            item["addr_full"] = location["address_display"]
+            item["website"] = urljoin("https://www.poundstretcher.co.uk/", location["website_url"])
+
+            if item["branch"].endswith(" Bargain Buys"):
+                item["branch"] = item["branch"].removesuffix(" Bargain Buys")
+                item.update(BARGAIN_BUYS)
+
+            try:
+                sel = Selector(text=location["notes"])
+                oh = OpeningHours()
+                for rule in sel.xpath("//tr"):
+                    times = rule.xpath("./td/text()").get()
+                    start_time, end_time = times.split("-")
+                    oh.add_range(rule.xpath("./th/text()").get(), start_time.strip(), end_time.strip())
+                item["opening_hours"] = oh
+            except:
+                pass
+
+            yield item


Test patch: