Du findest die Produkte der HAUPTSTADTMARKE BERLIN in unseren Souvenir-Shops an folgenden Standorten:
| Standort | Adresse | Öffnungszeiten | Externe Karte |
| Kranzler Eck | Kurfürstendamm 21 | 09:00 – 21:00 Uhr | bei Google ansehen |
| Dom-Aquarée | Karl-Liebknecht-Straße 5 | 09:00 – 21:00 Uhr | bei Google ansehen |
| ALEXA Shopping Center | Grunerstraße 20 | 10:00 – 21:00 Uhr | bei Google ansehen |
| Mall of Berlin | Leipziger Platz 12 | 10:00 – 21:00 Uhr | bei Google ansehen |
| The Wall Store am „Uber Platz“ | Mühlenstraße 13-19 | 09:00 – 21:00 Uhr | bei Google ansehen |
| The Wall Store am Flughafen BER | Willy-Brandt-Platz 1 Terminal 1 | 09:00 – 21:00 Uhr | bei Google ansehen |
| BERLIN Store Ostbahnhof | Am Ostbahnhof 9 | 09:00 – 21:00 Uhr | bei Google ansehen |
| BERLIN Souvenir-Store Checkpoint Charlie | Friedrichstraße 200 | 09:00 – 21:00 Uhr | bei Google ansehen |
| BERLIN Store Bahnhof Friedrichstraße | Georgenstraße 14/17 Erdgeschoss | 09:00 – 21:00 Uhr | bei Google ansehen |
Hier kannst Du dir alle Stores auf einer OpenStreetMap-Karte anzeigen lassen:
Die Karte wird durch OpenStreetMap zur Verfügung gestellt.
PGJyIC8+CjxkaXYgY2xhc3M9ImxlYWZsZXQtbWFwIFdQTGVhZmxldE1hcCIgc3R5bGU9ImhlaWdodDo2MDBweDsgd2lkdGg6MTAwJTsiPjwvZGl2PjxzY3JpcHQ+CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luIHx8IFtdOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnB1c2goZnVuY3Rpb24gV1BMZWFmbGV0TWFwU2hvcnRjb2RlKCkgey8qPHNjcmlwdD4qLwp2YXIgYmFzZVVybCA9IGF0b2IoJ2FIUjBjSE02THk5N2MzMHVkR2xzWlM1dmNHVnVjM1J5WldWMGJXRndMbTl5Wnk5N2VuMHZlM2g5TDN0NWZTNXdibWM9Jyk7CnZhciBiYXNlID0gKCFiYXNlVXJsICYmIHdpbmRvdy5NUSkgPwogICAgd2luZG93Lk1RLm1hcExheWVyKCkgOiBMLnRpbGVMYXllcihiYXNlVXJsLAogICAgICAgIEwuVXRpbC5leHRlbmQoe30sIHsKICAgICAgICAgICAgZGV0ZWN0UmV0aW5hOiAwLAogICAgICAgIH0sCiAgICAgICAgeyJzdWJkb21haW5zIjoiYWJjIiwibm9XcmFwIjpmYWxzZSwibWF4Wm9vbSI6MTl9ICAgICAgICApCiAgICApOwogICAgdmFyIG9wdGlvbnMgPSBMLlV0aWwuZXh0ZW5kKHt9LCB7CiAgICAgICAgbGF5ZXJzOiBbYmFzZV0sCiAgICAgICAgYXR0cmlidXRpb25Db250cm9sOiBmYWxzZQogICAgfSwKICAgIHsiem9vbUNvbnRyb2wiOmZhbHNlLCJzY3JvbGxXaGVlbFpvb20iOnRydWUsImRvdWJsZUNsaWNrWm9vbSI6ZmFsc2UsImZpdEJvdW5kcyI6ZmFsc2UsIm1pblpvb20iOjAsIm1heFpvb20iOjE5LCJtYXhCb3VuZHMiOm51bGwsImF0dHJpYnV0aW9uIjoiPGEgaHJlZj1cImh0dHA6XC9cL2xlYWZsZXRqcy5jb21cIiB0aXRsZT1cIkVpbmUgSmF2YXNjcmlwdC1CaWJsaW90aGVrIGZcdTAwZmNyIGludGVyYWt0aXZlIEthcnRlblwiPkxlYWZsZXQ8XC9hPjsgXHUwMGE5IDxhIGhyZWY9XCJodHRwOlwvXC93d3cub3BlbnN0cmVldG1hcC5vcmdcL2NvcHlyaWdodFwiPk9wZW5TdHJlZXRNYXA8XC9hPiBNaXR3aXJrZW5kZSJ9LAogICAge30pOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmNyZWF0ZU1hcChvcHRpb25zKS5zZXRWaWV3KFs1Mi41MTYxNzY3LDEzLjM3NzUwMjFdLDEzKTt9KTs8L3NjcmlwdD48YnIgLz4KPHNjcmlwdD4Kd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gfHwgW107CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4ucHVzaChmdW5jdGlvbiBXUExlYWZsZXRNYXJrZXJTaG9ydGNvZGUoKSB7Lyo8c2NyaXB0PiovCnZhciBtYXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRNYXAoKTsKdmFyIGdyb3VwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50R3JvdXAoKTsKdmFyIG1hcmtlcl9vcHRpb25zID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRJY29uT3B0aW9ucyh7fSk7CnZhciBtYXJrZXIgPSBMLm1hcmtlcigKICAgIFs1Mi41MDM4MDM3NjIwOTcsMTMuMzMwMzY5MDM1NTg4XSwKICAgIG1hcmtlcl9vcHRpb25zCik7CnZhciBpc19pbWFnZSA9IG1hcC5pc19pbWFnZV9tYXA7CmlmIChtYXJrZXJfb3B0aW9ucy5kcmFnZ2FibGUpIHsKICAgIG1hcmtlci5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGF0bG5nID0gdGhpcy5nZXRMYXRMbmcoKTsKICAgICAgICB2YXIgbGF0ID0gbGF0bG5nLmxhdDsKICAgICAgICB2YXIgbG5nID0gbGF0bG5nLmxuZzsKICAgICAgICBpZiAoaXNfaW1hZ2UpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIHk9JyArIGxhdCArICcgeD0nICsgbG5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgbGF0PScgKyBsYXQgKyAnIGxuZz0nICsgbG5nKTsKICAgICAgICB9CiAgICB9KTsKfQptYXJrZXIuYWRkVG8oIGdyb3VwICk7Cm1hcmtlci5iaW5kUG9wdXAod2luZG93LldQTGVhZmxldE1hcFBsdWdpbi51bmVzY2FwZSgnU3RvcmUgS3JhbnpsZXIgRWNrICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9tYXBzLmFwcC5nb28uZ2wvYk1EMUZ5dExwNWRrRmQxNjcmcXVvdDsgdGFyZ2V0PSZxdW90O19ibGFuayZxdW90OyZndDtiZWkgR29vZ2xlIGF1ZnJ1ZmVuJmx0Oy9hJmd0OycpKTt3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLm1hcmtlcnMucHVzaCggbWFya2VyICk7CiAgICAgICAgfSk7PC9zY3JpcHQ+PGJyIC8+CjxzY3JpcHQ+CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luIHx8IFtdOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnB1c2goZnVuY3Rpb24gV1BMZWFmbGV0TWFya2VyU2hvcnRjb2RlKCkgey8qPHNjcmlwdD4qLwp2YXIgbWFwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50TWFwKCk7CnZhciBncm91cCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudEdyb3VwKCk7CnZhciBtYXJrZXJfb3B0aW9ucyA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0SWNvbk9wdGlvbnMoe30pOwp2YXIgbWFya2VyID0gTC5tYXJrZXIoCiAgICBbNTIuNTE5ODQwNTc1Nzg1LDEzLjQwNDAwOTQ3ODkzOF0sCiAgICBtYXJrZXJfb3B0aW9ucwopOwp2YXIgaXNfaW1hZ2UgPSBtYXAuaXNfaW1hZ2VfbWFwOwppZiAobWFya2VyX29wdGlvbnMuZHJhZ2dhYmxlKSB7CiAgICBtYXJrZXIub24oJ2RyYWdlbmQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGxhdGxuZyA9IHRoaXMuZ2V0TGF0TG5nKCk7CiAgICAgICAgdmFyIGxhdCA9IGxhdGxuZy5sYXQ7CiAgICAgICAgdmFyIGxuZyA9IGxhdGxuZy5sbmc7CiAgICAgICAgaWYgKGlzX2ltYWdlKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciB5PScgKyBsYXQgKyAnIHg9JyArIGxuZyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIGxhdD0nICsgbGF0ICsgJyBsbmc9JyArIGxuZyk7CiAgICAgICAgfQogICAgfSk7Cn0KbWFya2VyLmFkZFRvKCBncm91cCApOwptYXJrZXIuYmluZFBvcHVwKHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4udW5lc2NhcGUoJ1N0b3JlIERvbS1BcXVhcsOpZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsL2tRcjdRQVN4am1obnFqV043JnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjUyMDA0ODYxMjAwMywxMy40MTQ3MjUwOTY3M10sCiAgICBtYXJrZXJfb3B0aW9ucwopOwp2YXIgaXNfaW1hZ2UgPSBtYXAuaXNfaW1hZ2VfbWFwOwppZiAobWFya2VyX29wdGlvbnMuZHJhZ2dhYmxlKSB7CiAgICBtYXJrZXIub24oJ2RyYWdlbmQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGxhdGxuZyA9IHRoaXMuZ2V0TGF0TG5nKCk7CiAgICAgICAgdmFyIGxhdCA9IGxhdGxuZy5sYXQ7CiAgICAgICAgdmFyIGxuZyA9IGxhdGxuZy5sbmc7CiAgICAgICAgaWYgKGlzX2ltYWdlKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciB5PScgKyBsYXQgKyAnIHg9JyArIGxuZyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIGxhdD0nICsgbGF0ICsgJyBsbmc9JyArIGxuZyk7CiAgICAgICAgfQogICAgfSk7Cn0KbWFya2VyLmFkZFRvKCBncm91cCApOwptYXJrZXIuYmluZFBvcHVwKHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4udW5lc2NhcGUoJ0FMRVhBIFNob3BwaW5nLUNlbnRlciAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsL3A4NjFjd0xMdTF2Wm9yRFo2JnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjUxMDIyMjAwNjQ0NywxMy4zNzk2NzYyNDE1MjldLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdNYWxsIG9mIEJlcmxpbiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsL3A4dTNETWYzN1Z5REVTUDI5JnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjUwNDUxMDM3MDM0NywxMy40NDIzNzQ2OTY3MjldLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdUaGUgV2FsbCBTdG9yZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsLzhuY0ttZTd2bmFUOGprczM4JnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjM2OTQ4OTAxMzI5LDEzLjUxMTA0MTEyOTUyOV0sCiAgICBtYXJrZXJfb3B0aW9ucwopOwp2YXIgaXNfaW1hZ2UgPSBtYXAuaXNfaW1hZ2VfbWFwOwppZiAobWFya2VyX29wdGlvbnMuZHJhZ2dhYmxlKSB7CiAgICBtYXJrZXIub24oJ2RyYWdlbmQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGxhdGxuZyA9IHRoaXMuZ2V0TGF0TG5nKCk7CiAgICAgICAgdmFyIGxhdCA9IGxhdGxuZy5sYXQ7CiAgICAgICAgdmFyIGxuZyA9IGxhdGxuZy5sbmc7CiAgICAgICAgaWYgKGlzX2ltYWdlKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciB5PScgKyBsYXQgKyAnIHg9JyArIGxuZyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ2xlYWZsZXQtbWFya2VyIGxhdD0nICsgbGF0ICsgJyBsbmc9JyArIGxuZyk7CiAgICAgICAgfQogICAgfSk7Cn0KbWFya2VyLmFkZFRvKCBncm91cCApOwptYXJrZXIuYmluZFBvcHVwKHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4udW5lc2NhcGUoJ1RoZSBXYWxsIFN0b3JlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9tYXBzLmFwcC5nb28uZ2wvVTRkc3gyWFFzTGlSblNneDgmcXVvdDsgdGFyZ2V0PSZxdW90O19ibGFuayZxdW90OyZndDtiZWkgR29vZ2xlIGF1ZnJ1ZmVuJmx0Oy9hJmd0OycpKTt3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLm1hcmtlcnMucHVzaCggbWFya2VyICk7CiAgICAgICAgfSk7PC9zY3JpcHQ+PGJyIC8+CjxzY3JpcHQ+CndpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4gPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luIHx8IFtdOwp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnB1c2goZnVuY3Rpb24gV1BMZWFmbGV0TWFya2VyU2hvcnRjb2RlKCkgey8qPHNjcmlwdD4qLwp2YXIgbWFwID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5nZXRDdXJyZW50TWFwKCk7CnZhciBncm91cCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudEdyb3VwKCk7CnZhciBtYXJrZXJfb3B0aW9ucyA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0SWNvbk9wdGlvbnMoe30pOwp2YXIgbWFya2VyID0gTC5tYXJrZXIoCiAgICBbNTIuNTA5NzkwNDc5NTk2LDEzLjQzNDg4Mjg1NDRdLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdCRVJMSU4gU3RvcmUgT3N0YmFobmhvZiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsL2ptQ050aWJud0NvNFp1NG45JnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjUwOTI1OTA2ODI1OCwxMy4zODk4NDk5Mzc4MzRdLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdBbGxpZWQgQ2hlY2twb2ludCBTdG9yZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbWFwcy5hcHAuZ29vLmdsL0JWbXhGV2lHV0F3SzdQSDE4JnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDsmZ3Q7YmVpIEdvb2dsZSBhdWZydWZlbiZsdDsvYSZndDsnKSk7d2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5tYXJrZXJzLnB1c2goIG1hcmtlciApOwogICAgICAgIH0pOzwvc2NyaXB0PjxiciAvPgo8c2NyaXB0Pgp3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luID0gd2luZG93LldQTGVhZmxldE1hcFBsdWdpbiB8fCBbXTsKd2luZG93LldQTGVhZmxldE1hcFBsdWdpbi5wdXNoKGZ1bmN0aW9uIFdQTGVhZmxldE1hcmtlclNob3J0Y29kZSgpIHsvKjxzY3JpcHQ+Ki8KdmFyIG1hcCA9IHdpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4uZ2V0Q3VycmVudE1hcCgpOwp2YXIgZ3JvdXAgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEN1cnJlbnRHcm91cCgpOwp2YXIgbWFya2VyX29wdGlvbnMgPSB3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLmdldEljb25PcHRpb25zKHt9KTsKdmFyIG1hcmtlciA9IEwubWFya2VyKAogICAgWzUyLjUyMDM0MDQwNDE0NywxMy4zODcxMTY5NTY4ODZdLAogICAgbWFya2VyX29wdGlvbnMKKTsKdmFyIGlzX2ltYWdlID0gbWFwLmlzX2ltYWdlX21hcDsKaWYgKG1hcmtlcl9vcHRpb25zLmRyYWdnYWJsZSkgewogICAgbWFya2VyLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYXRsbmcgPSB0aGlzLmdldExhdExuZygpOwogICAgICAgIHZhciBsYXQgPSBsYXRsbmcubGF0OwogICAgICAgIHZhciBsbmcgPSBsYXRsbmcubG5nOwogICAgICAgIGlmIChpc19pbWFnZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnbGVhZmxldC1tYXJrZXIgeT0nICsgbGF0ICsgJyB4PScgKyBsbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsZWFmbGV0LW1hcmtlciBsYXQ9JyArIGxhdCArICcgbG5nPScgKyBsbmcpOwogICAgICAgIH0KICAgIH0pOwp9Cm1hcmtlci5hZGRUbyggZ3JvdXAgKTsKbWFya2VyLmJpbmRQb3B1cCh3aW5kb3cuV1BMZWFmbGV0TWFwUGx1Z2luLnVuZXNjYXBlKCdCZXJsaW4gU3RvcmUgQmFobmhvZiBGcmllZHJpY2hzdHJhw59lIGJlaSBHb29nbGUgYXVmcnVmZW4mbHQ7L2EmZ3Q7JykpO3dpbmRvdy5XUExlYWZsZXRNYXBQbHVnaW4ubWFya2Vycy5wdXNoKCBtYXJrZXIgKTsKICAgICAgICB9KTs8L3NjcmlwdD48YnIgLz4K