From a63ce82b299d63390abcc8c077ac12a45eeca069 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 10:58:08 +0200 Subject: [PATCH 01/10] spellchecks --- README.md | 53 ++++++++++++++++++++++------------------------- docs/Projecten.md | 22 +++++++++++++------- 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index e4579f2..769b3d1 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,53 @@ -# Wat is Open Catalogi? -Open Catalogi bestaad uit vier onderdelen +# Wat is OpenCatalogi? -1. **Een standaard** voor het federatief delen en vinden van gegevens -2. **Open Source componenenten** en applicaties die invulling geven aan die standaard -3. **Projecten** die gebruik maken van deze componenten -4. **Een organisatie** die al deze dingen coördineerd +OpenCatalogi bestaat uit vier onderdelen -**De Standaard** -We gaan er vanuit dat een gebruiker bij een interface een zoekvraag steld aan een catalogus, de catalogus maakt vervolgens gebruik van bij hem bekende andere catalogi voor het beantwoorden van de vraag. Het federatief stelsel wordt daarmee gefaciliteerd door catalogi die onderling samenwerken +1. **Een (architectuur)standaard** voor het federatief delen en vinden van gegevens +2. **Open Source componenten** en applicaties die invulling geven aan die standaard +3. **Projecten** die gebruik maken van deze componenten +4. **Een organisatie** die al deze dingen coördineert -![UML Diagram van OpenCatalogi](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_simple.svg "UML Diagram van OpenCatalogi") +**De Architectuur** +We gaan er vanuit dat een gebruiker bij een interface een zoekvraag stelt aan een catalogus, de catalogus maakt vervolgens gebruik van bij hem bekende andere catalogi voor het beantwoorden van de vraag. Het federatief stelsel wordt daarmee gefaciliteerd door catalogi die onderling samenwerken. -Voor een uitgebreide opzet over de interne werking van catalogi kunt u kijken in onder [standaard](/Docs/Standaard/). +![UML Diagram van OpenCatalogi](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_simple.svg "UML Diagram van OpenCatalogi") -Het is de ambitie van Open catalogi om deze standaard Q2 2025 te laten opnemen op de standaarden lijst van forum standaardisatie. +Voor een uitgebreide opzet over de interne werking van catalogi kunt u kijken in onder [standaard](/Docs/Standaard/). **Componenten** Vanuit de Open Catalogi gemeenschap worden een aantal open source componenten onderhouden en ontwikkeld die organisaties helpen met het implementeren van Open Catalogi, de belangrijkste daarvan zijn: -1. Een [nextcloud app](https://github.com/ConductionNL/opencatalogi) faciliteerd een gemakkenlijke omgeving voor opslaan beheren van catalogi en publicaties. (commonground laag 1 & 2) -2. Een [web app](https://github.com/OpenCatalogi/web-app) faciliteerd de gebruikers interface waarmee kan worden gezocht +1. Een [nextcloud app](https://github.com/ConductionNL/opencatalogi) faciliteert een gemakkelijke omgeving voor het beheren van catalogi en publicaties. ([Common Ground laag 1 & 2](https://componentencatalogus.commonground.nl/5-lagen-model)) +2. Een [web app](https://github.com/OpenCatalogi/web-app) faciliteert de gebruikersinterface waarmee kan worden gezocht -Hiernaast hebben verschillende projecten ook nog hun eigen uitbreidingen en matadateringen, voor meer details kunt u kijken onder [componenten](Docs/Componenten/). +Hiernaast hebben verschillende projecten ook nog hun eigen uitbreidingen en metadateringen, voor meer details kunt u kijken onder [componenten](Docs/Componenten/). **Projecten** -1. Software Catalogus -2. Generieke datalandschap -3. OpenWoo.app +1. OpenCatalogi Core ontwikkeling +2. Softwarecatalogus +3. Generieke datalandschap +4. OpenWoo.app -Voor meer details kunt u kijken onder [projecten](Docs/Projecten/). +Voor meer details kunt u kijken onder [projecten](Docs/Projecten/). **Organisatie** -Open catalogi kent een kerngroep en community, deze gaan gemeenschapenlijk over de standaard en codebases +OpenCatalogi kent een kerngroep en community, deze gaan gemeenschappelijk over de standaard en codebases -Voor meer details kunt u kijken onder [organisatie](Docs/Organisatie/). +Voor meer details kan je kijken onder [organisatie](Docs/Organisatie/). **Roadmap** - Q3 2024 - Q4 2024 - Q1 2025 -- Q2 2025, Open catalogi tot landelijke standaard +- Q2 2025 **Vragen/Problemen** -Heeft u vragen, opmerkingen, aanbevelingen of problemen met de architectuur van Open Catalogi of een van de door Open Catalogi beheerde componenten? Dien hem dan vooral in via [github](https://github.com/OpenCatalogi/.github/issues/new/choose). +Heeft u vragen, opmerkingen, aanbevelingen of problemen met de architectuur van OpenCatalogi of een van de door OpenCatalogi beheerde componenten? Dien hem dan vooral in via [GitHub](https://github.com/OpenCatalogi/.github/issues/new/choose). **Snelle Start** -Wil je snel aan de slag met Open Catalogi? Dan zijn er twee gemakkenlijke routes. - -1. Via https://opencatalogi.nl/ kan je zoeken binnen het federatieve stelsel van de aangesloten organisaties -2. Als je wat dieper wilt duiken kan je de [nextcloud app](https://github.com/ConductionNL/opencatalogi) gebruiken. - - +Wil je snel aan de slag met Open Catalogi? Dan zijn er twee gemakkelijke routes: +1. Via kan je zoeken binnen het federatieve stelsel van de aangesloten organisaties +2. Als je wat dieper wilt duiken kan je de [Nextcloud OpenCatalogi-app](https://github.com/ConductionNL/opencatalogi) gebruiken. diff --git a/docs/Projecten.md b/docs/Projecten.md index 0246f14..edc5112 100644 --- a/docs/Projecten.md +++ b/docs/Projecten.md @@ -1,47 +1,53 @@ # Projecten + Naast de generieke organisatie zijn er een aantal project groepen actief met (deel) projecten aan de hand van open catalogi. ## Core + **Product Owner**: [Ronald van Cortenberghe](mailto:r.vancortenberghe@rotterdam.nl)(Gemeente Rotterdam) Het core project faciliteerd de architectuur, standaard, kern componenten en communicatie van Open catalogi ## Software Catalogus + **Product Owner**: [Ronald van Cortenberghe](mailto:r.vancortenberghe@rotterdam.nl)(Gemeente Rotterdam) -Van oorsprong is het Open Catalogi als project begonnen om een alternatief te bieden voor de [commonground componenten catalogus]() (wat later het [portfolio](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc) werdt) waarbij het niet langer noodzakenlijk is om infortmatie te brengen. +Van oorsprong is het Open Catalogi als project begonnen om een alternatief te bieden voor de [commonground componenten catalogus]() (wat later het [portfolio](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc) werdt) waarbij het niet langer noodzakenlijk is om infortmatie te brengen. In plaatsdaarvan wordt deze opgehaald aan de hand van een publiccode.yaml bestand dat in de repository wordt geplaats. Makkenlijk kunnen we het niet maken, de codebase maakt daarmee zichzelf kenbaar en vindbaar en alle beschrijving blijft daar waard die hoor, bij de bron (code). Vanuit dit project wordt beschickbaar gesteld - Verschillende metadata definities - - publiccode - - publiccode.service Objecten voor het aanbieden van een service (dienst) op een software pakket + - publiccode + - publiccode.service Objecten voor het aanbieden van een service (dienst) op een software pakket - Een github catalogus voor applicaties en componenten gevonden op github - Een gitlab catalogus voor applicaties en componenten gevonden op github - Een componenten catalogus voor commonground beschrijvingen over gevonden componenten -- Een [git service]() beschickbaarbaar gesteld die automatisch [github]() en [gitlab]() afzoekt naar repositories die een publiccode bevatten en die deze opneemt in de +- Een [git service]() beschickbaarbaar gesteld die automatisch [github]() en [gitlab]() afzoekt naar repositories die een publiccode bevatten en die deze opneemt in de ## Generieke datalandschap + **Product Owner**: [Ronald Kok](mailto:rdw.kok@rotterdam.nl)(Gemeente Rotterdam) -Het beschickbaar stellen van high value datasets voor de t.b.v. (WHO)[] +Het beschickbaar stellen van high value datasets voor de t.b.v. (WHO)[] - De metadata defintie DCAT ## Regels.overheid.nl + **Product Owner**: [Steven Gort](mailto:steven.Gort@ictu.nl)(Steven Gort) +## OpenWoo.app -## OpenWoo.app **Product Owner**: [Ruben van der Linde](mailto:ruben@conduction.nl)(Conduction) Het doorzoekbaar maken van data t.b.v. (WOO)[] - Verschillende metadata definities - - Woo verzoeken en convenanten + - Woo verzoeken en convenanten - Een service voor het ophalen van Woo gegevens uit zaaksystemen - Een service voor het ophalen van Woo gegevens uit raads informatie systemen ## Een deel project opstarten + Wil je zelf aan de hand van open catalogi een eigen project opstarten? en hierbij terugleveren aan de open catalogi gemeenschap? Dan kan je een deel project opstarten. Neem daarvoor contact op met [jaap.vanvliet@dimpact.nl](mailto:jaap.vanvliet@dimpact.nl). Van een deel project verwachten we: - Bijdragen aan de algemene ontwikkeling van Open Catalogi -- Aanwezigheid van de product owner bij de community meetings (ider kwartaal) \ No newline at end of file +- Aanwezigheid van de product owner bij de community meetings (ider kwartaal) From 86e39175692e51b019b242d099e3acb9e2ab5eba Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 10:59:36 +0200 Subject: [PATCH 02/10] spellcheck jumbotron --- .github/workflows/openCatalogi.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/openCatalogi.yaml b/.github/workflows/openCatalogi.yaml index adb1324..83cbfc7 100644 --- a/.github/workflows/openCatalogi.yaml +++ b/.github/workflows/openCatalogi.yaml @@ -33,8 +33,7 @@ jobs: footer_content_header: "heading-3" jumbotron_title: "Open Catalogi" jumbotron_subtitle: "Een federatief data stelsel van samenwerkende Catalogi" - jumbotron_description: "Open Catalogi creëert een krachtig federatief systeem waarbij overheden catalogi (bronnen) ter besbeschicking stellen. Onderwater bind open catalogi deze catalogi vervolgens virtueel aan elkaar waardoor er een federatief data stelsel onstaan. Hiermee kan er via één ingang gezogd worden in meerdere bronnen bij meerdere organisaties tegelijkertijd. - " + jumbotron_description: "Open Catalogi creëert een krachtig federatief systeem waarbij overheden catalogi (bronnen) ter beschikking stellen. Onderwater bindt Open Catalogi deze catalogi vervolgens virtueel aan elkaar, waardoor er een federatief datastelsel ontstaat. Hiermee kan er via één ingang gezocht worden in meerdere bronnen bij meerdere organisaties tegelijkertijd." jumbotron_image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX0xheWVyXyIgZGF0YS1uYW1lPSImYW1wO2x0O0xheWVyJmFtcDtndDsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI3NjAgMTg0MCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzA2MDYzMzsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIsIC5jbHMtMywgLmNscy00LCAuY2xzLTUsIC5jbHMtNiwgLmNscy03LCAuY2xzLTgsIC5jbHMtOSwgLmNscy0xMCwgLmNscy0xMSwgLmNscy0xMiwgLmNscy0xMywgLmNscy0xNCwgLmNscy0xNSwgLmNscy0xNiwgLmNscy0xNywgLmNscy0xOCwgLmNscy0xOSwgLmNscy0yMCwgLmNscy0yMSwgLmNscy0yMiwgLmNscy0yMywgLmNscy0yNCwgLmNscy0yNSwgLmNscy0yNiwgLmNscy0yNywgLmNscy0yOCwgLmNscy0yOSwgLmNscy0zMCB7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAwcHg7CiAgICAgIH0KCiAgICAgIC5jbHMtMiB7CiAgICAgICAgZmlsbDogI2VhNjg2ODsKICAgICAgfQoKICAgICAgLmNscy0zMSB7CiAgICAgICAgb3BhY2l0eTogLjc7CiAgICAgIH0KCiAgICAgIC5jbHMtMyB7CiAgICAgICAgZmlsbDogI2ZhNzI2NzsKICAgICAgfQoKICAgICAgLmNscy00IHsKICAgICAgICBmaWxsOiAjYzdkYmY5OwogICAgICB9CgogICAgICAuY2xzLTUgewogICAgICAgIGZpbGw6ICMwYjA3NTU7CiAgICAgIH0KCiAgICAgIC5jbHMtNiB7CiAgICAgICAgZmlsbDogIzYxODRkYjsKICAgICAgfQoKICAgICAgLmNscy03IHsKICAgICAgICBmaWxsOiAjNmM4MWVhOwogICAgICB9CgogICAgICAuY2xzLTggewogICAgICAgIGZpbGw6ICNkZGU3ZmU7CiAgICAgIH0KCiAgICAgIC5jbHMtOSB7CiAgICAgICAgZmlsbDogIzI3MjAzNTsKICAgICAgfQoKICAgICAgLmNscy0xMCB7CiAgICAgICAgZmlsbDogI2ZmOGI4NTsKICAgICAgfQoKICAgICAgLmNscy0xMSB7CiAgICAgICAgZmlsbDogI2JkZDFmOTsKICAgICAgfQoKICAgICAgLmNscy0xMiB7CiAgICAgICAgZmlsbDogI2FiYmJmZjsKICAgICAgfQoKICAgICAgLmNscy0xMyB7CiAgICAgICAgZmlsbDogI2U1ODg3NjsKICAgICAgfQoKICAgICAgLmNscy0xNCB7CiAgICAgICAgZmlsbDogI2U3ZWVmZDsKICAgICAgfQoKICAgICAgLmNscy0xNSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0zMiB7CiAgICAgICAgb3BhY2l0eTogLjM7CiAgICAgIH0KCiAgICAgIC5jbHMtMTYgewogICAgICAgIGZpbGw6ICNmYWZjZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtMTcgewogICAgICAgIGZpbGw6ICM5MWI1Zjg7CiAgICAgIH0KCiAgICAgIC5jbHMtMTggewogICAgICAgIGZpbGw6ICMxMzEzNzU7CiAgICAgIH0KCiAgICAgIC5jbHMtMTkgewogICAgICAgIGZpbGw6ICM4ZjlmZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtMjAgewogICAgICAgIGZpbGw6ICNmOWE1OGY7CiAgICAgIH0KCiAgICAgIC5jbHMtMjEgewogICAgICAgIGZpbGw6ICMwNTA1MjE7CiAgICAgIH0KCiAgICAgIC5jbHMtMjIgewogICAgICAgIGZpbGw6ICM0ODUxZWM7CiAgICAgIH0KCiAgICAgIC5jbHMtMjMgewogICAgICAgIGZpbGw6ICMzODYyYzE7CiAgICAgIH0KCiAgICAgIC5jbHMtMjQgewogICAgICAgIGZpbGw6ICMxNzE3NzU7CiAgICAgIH0KCiAgICAgIC5jbHMtMjUgewogICAgICAgIGZpbGw6ICM3YzlhZjI7CiAgICAgIH0KCiAgICAgIC5jbHMtMjYgewogICAgICAgIGZpbGw6ICMyNDBkMzk7CiAgICAgIH0KCiAgICAgIC5jbHMtMjcgewogICAgICAgIGZpbGw6ICNkMzY4NTc7CiAgICAgIH0KCiAgICAgIC5jbHMtMjggewogICAgICAgIGZpbGw6ICNlMjdkN2Q7CiAgICAgIH0KCiAgICAgIC5jbHMtMjkgewogICAgICAgIGZpbGw6ICMyZjNkYmM7CiAgICAgIH0KCiAgICAgIC5jbHMtMzAgewogICAgICAgIGZpbGw6ICM2YzdhZmY7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxwYXRoIGNsYXNzPSJjbHMtOCIgZD0ibTIyNjAuOTQsMTU1OC45M2MtNzQuNTQsMTkuOTctMjQ4LjY0LDMuMzYtMzIxLjcxLS45M2wtMTUwOS44NS42OWMtMjA1LjgzLTEzMS43LTQ0MS40Ni01NDIuOTYsNDEuODMtODgwLjE3LDE4NS4yOC0xMjkuMjctNjMuMzctMzgwLjgzLDM2MC43NS00ODguNDEsMzkzLjkyLTk5LjkxLDMwOC41LDE1Ny40MSw4NjguODEtMjEuNzYsNDIwLjY0LTEzNC41MSw1ODguNjUsMTc1Ljk2LDYxOC40MywyNzYuNjcsMTUuMTYsNTEuMjQsMTkuMDcsMTA1LjkxLDMyLjMsMTU3LjgzLDM2LjUxLDE0My4zMiwxNTguMjYsMTczLDIyNS40NywzMzIuMzksNzAuMjgsMTY2LjY3LDYyLjI5LDUyMi4zNC0zMTYuMDQsNjIzLjY5WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0ibTI1MjYuNzUsMTUyNy4yYzAtODQuNy01MDIuMTItMTUzLjM2LTExMjEuNTItMTUzLjM2cy0xMTIxLjUyLDY4LjY2LTExMjEuNTIsMTUzLjM2LDUwMi4xMiwxNTMuMzYsMTEyMS41MiwxNTMuMzYsMTEyMS41Mi02OC42NiwxMTIxLjUyLTE1My4zNloiLz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMTU3Ljg3LDY3MC44NWMuMDksMCwuMTctLjAyLjI2LS4wNC42OS0uMTksMS4xLS45LjkyLTEuNi00OC45Ny0xODEuMjktOTQuNTUtMzA5LjU5LTEyOC4zNi0zNjEuMjYtLjc1LTEuMTUtMS4yOS0xLjk4LTEuNS0yLjM5LS4zMi0uNjUtMS4xLS45MS0xLjc0LS42LS42NC4zMi0uOTEsMS4wOS0uNiwxLjc0LjI4LjU2LjgsMS4zNiwxLjY2LDIuNjgsMzMuNjYsNTEuNDYsNzkuMTMsMTc5LjQ5LDEyOC4wMywzNjAuNTIuMTYuNjEuNzMsMSwxLjM0Ljk2WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwMDYuMzYsMjk4LjAxYzQuMDEsNS44MSwyNC43MywxNi44NCwyNi4zOSwxNS43LDEuNjYtMS4xNS0xLjM1LTI0LjQyLTUuMzYtMzAuMjMtNC4wMS01LjgxLTExLjk3LTcuMjYtMTcuNzgtMy4yNS01LjgxLDQuMDEtNy4yNiwxMS45Ny0zLjI1LDE3Ljc4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwNDYuNDQsMzE2LjQ1Yy0yLjI3LDYuODUsMS40NywzMC41NywzLjQzLDMxLjIyLDEuOTYuNjUsMTkuMTItMTYuMTQsMjEuNC0yMywyLjI3LTYuODUtMS40NC0xNC4yNS04LjMtMTYuNTItNi44NS0yLjI3LTE0LjI1LDEuNDQtMTYuNTIsOC4zWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwMjAuMjMsMzU3YzcuMTkuNjcsMjkuNDYtOC4zMiwyOS42NS0xMC4zNy4xOS0yLjA1LTIwLjAzLTE1LTI3LjIyLTE1LjY3LTcuMTktLjY3LTEzLjU2LDQuNjItMTQuMjMsMTEuODEtLjY3LDcuMTksNC42MiwxMy41NiwxMS44MSwxNC4yM1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMTA0LjgsNDM3LjMzYy01LjAzLDExLjAzLTMuMDgsNTEuMjkuMDcsNTIuNzIsMy4xNSwxLjQ0LDM0LjgzLTIzLjQ4LDM5Ljg2LTM0LjUsNS4wMy0xMS4wMy4xNy0yNC4wNS0xMC44Ni0yOS4wOC0xMS4wMy01LjAzLTI0LjA0LS4xNy0yOS4wOCwxMC44NloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDUzLjcyLDUwMC4yN2MxMS44OCwyLjQyLDUwLjY2LTguNTUsNTEuMzUtMTEuOTQuNjktMy4zOS0zMC43Mi0yOC42NS00Mi41OS0zMS4wNy0xMS44OC0yLjQyLTIzLjQ3LDUuMjUtMjUuODgsMTcuMTMtMi40MiwxMS44OCw1LjI1LDIzLjQ3LDE3LjEzLDI1Ljg4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTExMzUuMDMsNDgzLjE4Yy04Ljk4LDExLjgxLTE3LjQ5LDYwLjM5LTE0LjEyLDYyLjk1LDMuMzcsMi41Niw0Ny45MS0xOC42NCw1Ni44OC0zMC40NXM2LjY4LTI4LjY2LTUuMTMtMzcuNjNjLTExLjgxLTguOTgtMjguNjYtNi42OC0zNy42Myw1LjEzWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEwNjIuMTksNTY1LjM4YzE0Ljc2LDEuNDUsNjAuNTktMTYuNzgsNjEtMjEsLjQxLTQuMjEtNDEtMzEuMDEtNTUuNzYtMzIuNDYtMTQuNzYtMS40NS0yNy45LDkuMzQtMjkuMzUsMjQuMTEtMS40NSwxNC43Niw5LjM0LDI3LjksMjQuMTEsMjkuMzVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTE1Mi44Nyw1NDIuMzVjLTguOTgsMTEuODEtMTcuNDksNjAuMzktMTQuMTIsNjIuOTUsMy4zNywyLjU2LDQ3LjktMTguNjQsNTYuODgtMzAuNDUsOC45OC0xMS44MSw2LjY4LTI4LjY2LTUuMTMtMzcuNjMtMTEuODEtOC45OC0yOC42Ni02LjY4LTM3LjYzLDUuMTNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTA4MC4wMyw2MjQuNTRjMTQuNzYsMS40NSw2MC41OS0xNi43OSw2MS0yMSwuNDEtNC4yMS00MS0zMS4wMS01NS43Ni0zMi40Ni0xNC43Ni0xLjQ1LTI3LjksOS4zNC0yOS4zNSwyNC4xMS0xLjQ1LDE0Ljc2LDkuMzQsMjcuOSwyNC4xLDI5LjM1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTExOTMuNTMsNjE3LjIxYy0xMi44LDcuNS0zOS4xNyw0OS4xOC0zNy4wMyw1Mi44MywyLjE0LDMuNjUsNTEuMzksMS4wMSw2NC4xOS02LjQ5LDEyLjgtNy41LDE3LjA5LTIzLjk1LDkuNTktMzYuNzUtNy41LTEyLjgtMjMuOTUtMTcuMDktMzYuNzUtOS41OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDk1LjY0LDY4My4wMWMxNC40NiwzLjI4LDYyLjIxLTkuMDgsNjMuMTUtMTMuMjEuOTQtNC4xMy0zNi44LTM1Ljg5LTUxLjI2LTM5LjE3LTE0LjQ2LTMuMjgtMjguODUsNS43OC0zMi4xMywyMC4yNS0zLjI4LDE0LjQ2LDUuNzgsMjguODUsMjAuMjUsMzIuMTNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTA2NC40MywzNTQuMDhjLTIuMzEsNi45NiwxLjQ5LDMxLjA2LDMuNDgsMzEuNzJzMTkuNDMtMTYuNCwyMS43NC0yMy4zNmMyLjMxLTYuOTYtMS40Ny0xNC40OC04LjQzLTE2Ljc5cy0xNC40OCwxLjQ3LTE2Ljc5LDguNDNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTAzOC43MywzOTUuNzZjNy4zLjY4LDI5LjkzLTguNDUsMzAuMTItMTAuNTQuMTktMi4wOC0yMC4zNS0xNS4yNC0yNy42Ni0xNS45Mi03LjMtLjY4LTEzLjc4LDQuNjktMTQuNDYsMTEuOTktLjY4LDcuMzEsNC42OSwxMy43OCwxMS45OSwxNC40NloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDg1LjE5LDM4OS4xNWMtNC4wOCw5LjU5LTEuNSw0NC4xNiwxLjIzLDQ1LjMyLDIuNzQsMS4xNiwyOS40Mi0yMC45NiwzMy41LTMwLjU1LDQuMDgtOS41OS0uMzktMjAuNjctOS45OC0yNC43NS05LjU5LTQuMDgtMjAuNjcuMzktMjQuNzUsOS45OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMDQzLjk2LDQ0OC4yN2MxMC4zOC45Nyw0Mi41Mi0xMiw0Mi44LTE0Ljk3LjI4LTIuOTYtMjguOTItMjEuNjUtMzkuMjktMjIuNjItMTAuMzgtLjk3LTE5LjU4LDYuNjYtMjAuNTQsMTcuMDQtLjk3LDEwLjM4LDYuNjYsMTkuNTgsMTcuMDQsMjAuNTRaIi8+CiAgPC9nPgogIDxnPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTExMDIuMTgsNzMyLjQ2czk3LjU4LTIyNC0zMTEuMTgtMzI1Ljk1YzAsMCw1OS4xNCw0MjkuODYsMzExLjE4LDMyNS45NVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTciIGQ9Im03OTAuNDIsNDA1Ljg5bDMxOSwyOTYuNjNjMTAuNTUtNjQuMS0uOTYtMjE3LjMtMzE5LTI5Ni42M1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0ibTEwOTYuMDMsNjkwLjdjLjE2LS4wMi4zMi0uMDkuNDQtLjIyLjI3LS4yOS4yNS0uNzQtLjA0LTFsLTMwNS41My0yODQuMWMtLjI5LS4yNy0uNzQtLjI1LTEsLjA0LS4yNy4yOS0uMjUuNzQuMDQsMWwzMDUuNTMsMjg0LjFjLjE2LjE1LjM3LjIxLjU3LjE4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtOTUwLDU1NC45MWMuMzUtLjA0LjYyLS4zMy42Mi0uNjksMC0uMzktLjMxLS43MS0uNy0uNzJsLTExNS44OC0xLjYzYy0uMzgtLjAzLS43MS4zMS0uNzIuNywwLC4zOS4zMS43Mi43LjcybDExNS44OCwxLjY0cy4wNiwwLC4xLDBaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Im0xMDE1LjQ1LDYxNS43NnMuMDktLjAxLjE0LS4wM2MuMzctLjEyLjU3LS41My40NS0uOWwtMzUuNzgtMTA4Yy0uMTItLjM3LS41My0uNTgtLjktLjQ1LS4zNy4xMi0uNTcuNTMtLjQ1LjlsMzUuNzgsMTA4Yy4xMS4zMy40My41Mi43Ni40OFoiLz4KICA8L2c+CiAgPGc+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTE3IiBkPSJtMTAxMi44Nyw3MjguMjdzLTMuOC0xOTcuNzgtMzM5LjAyLTEzNC44M2MwLDAsMTg4LjYyLDI5Ni4zNywzMzkuMDIsMTM0LjgzWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTY3My44NSw1OTMuNDVsMzM5LjAyLDEzNC44M3MtMTE5LjU4LDE3NS45LTMzOS4wMi0xMzQuODNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTE3IiBkPSJtNzU3LjcxLDY2NC4zM2MuMDUsMCwuMSwwLC4xNSwwbDgzLjk1LTYuMzFjLjY0LS4wNSwxLjExLS42LDEuMDctMS4yNC0uMDUtLjY0LS42MS0xLjExLTEuMjQtMS4wN2wtODMuOTUsNi4zMWMtLjY0LjA1LTEuMTEuNi0xLjA2LDEuMjQuMDQuNTkuNTIsMS4wNCwxLjA5LDEuMDdaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTE3IiBkPSJtODY2Ljg0LDczNC40NmMuMDksMCwuMTcsMCwuMjYtLjAybDEwOS43LTE5LjQ1Yy42My0uMTEsMS4wNS0uNzEuOTMtMS4zMy0uMTEtLjYzLS43LTEuMDUtMS4zNC0uOTRsLTEwOS43LDE5LjQ1Yy0uNjMuMTEtMS4wNS43MS0uOTQsMS4zNC4xLjU0LjU1LjkyLDEuMDguOTVaIi8+CiAgPC9nPgogIDxnPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE5MjUuNDMsMTQ2Ny44N3MtNjUuMy0xNDkuOSwyMDguMjUtMjE4LjEzYzAsMC0zOS41NywyODcuNjctMjA4LjI1LDIxOC4xM1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTciIGQ9Im0yMTM0LjA2LDEyNDkuMzNsLTIxMy40OCwxOTguNWMtNy4wNi00Mi44OS42NC0xNDUuNDIsMjEzLjQ4LTE5OC41WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTkyOS41NSwxNDM5LjkyYy0uMTEtLjAxLS4yMS0uMDYtLjI5LS4xNS0uMTgtLjE5LS4xNy0uNDkuMDMtLjY3bDIwNC40Ni0xOTAuMTJjLjE5LS4xOC40OS0uMTYuNjcuMDIuMTguMTkuMTcuNDktLjAyLjY3bC0yMDQuNDYsMTkwLjEyYy0uMTEuMS0uMjUuMTQtLjM4LjEyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjAyNy4yNywxMzQ5LjA1Yy0uMjMtLjAzLS40MS0uMjItLjQyLS40NiwwLS4yNi4yMS0uNDguNDctLjQ4bDc3LjU1LTEuMDljLjI2LS4wMi40OC4yLjQ4LjQ3LDAsLjI2LS4yMS40OC0uNDcuNDhsLTc3LjU1LDEuMDlzLS4wNCwwLS4wNiwwWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTk4My40NywxMzg5Ljc4cy0uMDYtLjAxLS4wOS0uMDJjLS4yNS0uMDgtLjM4LS4zNS0uMy0uNmwyMy45NC03Mi4yN2MuMDgtLjI1LjM2LS4zOS42LS4zLjI1LjA4LjM4LjM1LjMuNmwtMjMuOTQsNzIuMjdjLS4wNy4yMi0uMjkuMzUtLjUxLjMyWiIvPgogIDwvZz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTciIGQ9Im0xOTcxLjgxLDE0NjguMXMyLjExLTEwOS42LDE4Ny44OC03NC43MmMwLDAtMTA0LjUzLDE2NC4yNC0xODcuODgsNzQuNzJaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMjE1OS42OSwxMzkzLjM4bC0xODcuODgsNzQuNzJzNjYuMjcsOTcuNDgsMTg3Ljg4LTc0LjcyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xNyIgZD0ibTIxMTMuMjIsMTQzMi42N3MtLjA2LDAtLjA4LDBsLTQ2LjUyLTMuNWMtLjM1LS4wMy0uNjItLjMzLS41OS0uNjkuMDMtLjM1LjM0LS42MS42OS0uNTlsNDYuNTIsMy41Yy4zNS4wMy42Mi4zMy41OS42OS0uMDIuMzMtLjI5LjU4LS42LjU5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xNyIgZD0ibTIwNTIuNzQsMTQ3MS41MnMtLjEsMC0uMTUsMGwtNjAuNzktMTAuNzhjLS4zNS0uMDYtLjU4LS4zOS0uNTItLjc0LjA2LS4zNS4zOS0uNTguNzQtLjUybDYwLjc5LDEwLjc4Yy4zNS4wNi41OC4zOS41Mi43NC0uMDUuMy0uMzEuNTEtLjYuNTNaIi8+CiAgPC9nPgogIDxnPgogICAgPHJlY3QgY2xhc3M9ImNscy0xOSIgeD0iNDI2LjU2IiB5PSI4MzcuNTQiIHdpZHRoPSI5OS45NSIgaGVpZ2h0PSIzMjIuNDUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMzAiIHg9IjUyNi41MiIgeT0iODM3LjU0IiB3aWR0aD0iMjQxLjA0IiBoZWlnaHQ9IjMyMi40NSIvPgogICAgPHBhdGggY2xhc3M9ImNscy04IiBkPSJtNDU5Ljg2LDg3Ny44MWMwLTkuMjEsNy40Ny0xNi42OCwxNi42OC0xNi42OHMxNi42OCw3LjQ3LDE2LjY4LDE2LjY4LTcuNDcsMTYuNjgtMTYuNjgsMTYuNjgtMTYuNjgtNy40Ny0xNi42OC0xNi42OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMzAiIGQ9Im00NjQuNzQsODc3LjgxYzAtNi41MSw1LjI4LTExLjgsMTEuOC0xMS44czExLjgsNS4yOCwxMS44LDExLjgtNS4yOCwxMS44LTExLjgsMTEuOC0xMS44LTUuMjgtMTEuOC0xMS44WiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSI0NTMuNCIgeT0iOTE4LjAxIiB3aWR0aD0iNDcuMDEiIGhlaWdodD0iODQuOTMiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTEyIiB4PSI1NTYuNjYiIHk9IjgzNy41NCIgd2lkdGg9Ijk5Ljk1IiBoZWlnaHQ9IjMyMi40NSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iNjU2LjI0IiB5PSI4MzcuNTQiIHdpZHRoPSIyNDEuMDQiIGhlaWdodD0iMzIyLjQ1Ii8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Im01ODkuNTgsODc3LjgxYzAtOS4yMSw3LjQ3LTE2LjY4LDE2LjY4LTE2LjY4czE2LjY4LDcuNDcsMTYuNjgsMTYuNjgtNy40NywxNi42OC0xNi42OCwxNi42OC0xNi42OC03LjQ3LTE2LjY4LTE2LjY4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zMCIgZD0ibTU5NC40Nyw4NzcuODFjMC02LjUxLDUuMjgtMTEuOCwxMS44LTExLjhzMTEuOCw1LjI4LDExLjgsMTEuOC01LjI4LDExLjgtMTEuOCwxMS44LTExLjgtNS4yOC0xMS44LTExLjhaIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjU4My4xMiIgeT0iOTE4LjAxIiB3aWR0aD0iNDcuMDIiIGhlaWdodD0iODQuOTMiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTEyIiB4PSI2OTMuNTEiIHk9IjgzNy41NCIgd2lkdGg9Ijk5Ljk1IiBoZWlnaHQ9IjMyMi40NSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iNzkzLjA5IiB5PSI4MzcuNTQiIHdpZHRoPSIyNDEuMDQiIGhlaWdodD0iMzIyLjQ1Ii8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Im03MjYuNDQsODc3LjgxYzAtOS4yMSw3LjQ3LTE2LjY4LDE2LjY4LTE2LjY4czE2LjY4LDcuNDcsMTYuNjgsMTYuNjgtNy40NywxNi42OC0xNi42OCwxNi42OC0xNi42OC03LjQ3LTE2LjY4LTE2LjY4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zMCIgZD0ibTczMS4zMiw4NzcuODFjMC02LjUxLDUuMjgtMTEuOCwxMS44LTExLjhzMTEuOCw1LjI4LDExLjgsMTEuOC01LjI4LDExLjgtMTEuOCwxMS44LTExLjgtNS4yOC0xMS44LTExLjhaIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjcxOS45OCIgeT0iOTE4LjAxIiB3aWR0aD0iNDcuMDEiIGhlaWdodD0iODQuOTMiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjU3Ni4yMiIgeT0iMTA0Ny41MyIgd2lkdGg9IjU2NC43MyIgaGVpZ2h0PSI0MTcuMjUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTAiIHg9IjM5MC41NiIgeT0iMTA0Ny41MyIgd2lkdGg9IjQ0Ny43NiIgaGVpZ2h0PSI0MTcuMjUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTkiIHg9IjUwNS4xNyIgeT0iMTA4Ny44NCIgd2lkdGg9IjE0Mi4xIiBoZWlnaHQ9IjI3LjgiIHJ4PSIxMy4wNiIgcnk9IjEzLjA2Ii8+CiAgPC9nPgogIDxnPgogICAgPGc+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxMDQuMDgiIHk9IjM0NC43NCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQzMjguNTEgMTEwMi42NSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0yMTkyLjQ2LDY2OC44YzAtMTUuNTgtMTIuNjMtMjguMjEtMjguMjEtMjguMjFzLTI4LjIxLDEyLjYzLTI4LjIxLDI4LjIxLDEyLjYzLDI4LjIxLDI4LjIxLDI4LjIxLDI4LjIxLTEyLjYzLDI4LjIxLTI4LjIxWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTUiIGQ9Im0yMTY0LjI1LDcwMC4xNWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIyMTI5IiB5PSIzNjMuNjUiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQzMjguNDggOTU5LjU0KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjIxMzcuMjYiIHk9IjM3Mi4wNSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQzMjcuMDUgNzUzLjQyKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxnPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjE0OS4zMSIgeT0iNTQyLjA4IiB3aWR0aD0iNTIuNTIiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYzMS4xNiAyNzE5Ljk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjE0OS4zMSIgeT0iNDc2LjIyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTY5Ny4wMiAyNjU0LjEyKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjEyMi42IiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjA0LjQ2IDI2OTMuMjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTIyLjYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2NzAuMzEgMjYyNy40Mikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxMjkuNzQiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MjUuMTEgMjcwMC40Mikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxMjkuNzQiIHk9IjQ1Mi41MyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3MDcuOSAyNjE3LjYyKSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgICA8Zz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxOTY2Ljc1IiB5PSIzNDQuNzQiIHdpZHRoPSIxMjAuMzQiIGhlaWdodD0iNDEzLjE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDUzLjg0IDExMDIuNjUpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xzLTYiIGN4PSIyMDI2LjkyIiBjeT0iNjY4LjgiIHI9IjI4LjIxIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTIwMjYuOTIsNzAwLjE1Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE5OTEuNjciIHk9IjM2My42NSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDA1My44IDk1OS41NCkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxOTk5LjkyIiB5PSIzNzIuMDUiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDUyLjM3IDc1My40Mikgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Zz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIwMTEuOTciIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0OTMuODMgMjU4Mi42NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIwMTEuOTciIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1NTkuNjggMjUxNi43OSkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5ODUuMjciIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0NjcuMTIgMjU1NS45NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5ODUuMjciIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MzIuOTggMjQ5MC4wOCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5OTIuNDEiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0ODcuNzcgMjU2My4wOCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5OTIuNDEiIHk9IjQ1Mi41MyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1NzAuNTcgMjQ4MC4yOCkgcm90YXRlKC05MCkiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgICAgPGc+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTgyOS40MSIgeT0iMzQ0Ljc0IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc3OS4xNyAxMTAyLjY1KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy02IiBjeD0iMTg4OS41OCIgY3k9IjY2OC44IiByPSIyOC4yMSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTUiIGQ9Im0xODg5LjU4LDcwMC4xNWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxODU0LjMzIiB5PSIzNjMuNjUiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3NzkuMTMgOTU5LjU0KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjE4NjIuNTkiIHk9IjM3Mi4wNSIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3NzcuNyA3NTMuNDIpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODc0LjY0IiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzU2LjQ5IDI0NDUuMzEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODc0LjY0IiB5PSI0NzYuMjIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDIyLjM1IDIzNzkuNDUpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODQ3LjkzIiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzI5Ljc5IDI0MTguNikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE4NDcuOTMiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzOTUuNjQgMjM1Mi43NSkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE4NTUuMDciIHk9IjUzNS4zMiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNTAuNDQgMjQyNS43NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE4NTUuMDciIHk9IjQ1Mi41MyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0MzMuMjMgMjM0Mi45NSkgcm90YXRlKC05MCkiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgICAgPGc+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTY5Mi4wOCIgeT0iMzQ0Ljc0IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwNC40OSAxMTAyLjY1KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNiIgZD0ibTE3ODAuNDUsNjY4LjhjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yLTI4LjIxcy0yOC4yMSwxMi42My0yOC4yMSwyOC4yMSwxMi42MywyOC4yMSwyOC4yMSwyOC4yMSwyOC4yLTEyLjYzLDI4LjItMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE3NTIuMjUsNzAwLjE1Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE3MTYuOTkiIHk9IjM2My42NSIgd2lkdGg9IjcwLjQ4IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwNC40NiA5NTkuNTQpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPC9nPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTcyNS4yNSIgeT0iMzcyLjA1IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iOS4zMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwMy4wMyA3NTMuNDIpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzM3LjMiIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMTkuMTUgMjMwNy45Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE3MzcuMyIgeT0iNDc2LjIyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI4NS4wMSAyMjQyLjExKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxMC42IiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTkyLjQ1IDIyODEuMjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzEwLjYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyNTguMzEgMjIxNS40MSkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE3MTcuNzQiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMTMuMSAyMjg4LjQxKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxNy43NCIgeT0iNDUyLjUzIiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI5NS45IDIyMDUuNjEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NTQuNzQiIHk9IjM0NC43NCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyMjkuODIgMTEwMi42NSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtNiIgY3g9IjE2MTQuOTEiIGN5PSI2NjguOCIgcj0iMjguMjEiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTE1IiBkPSJtMTYxNC45MSw3MDAuMTVjLTE3LjIsMC0zMS4xOS0xMy45OS0zMS4xOS0zMS4xOXMxMy45OS0zMS4xOSwzMS4xOS0zMS4xOSwzMS4xOSwxMy45OSwzMS4xOSwzMS4xOS0xMy45OSwzMS4xOS0zMS4xOSwzMS4xOVptMC01Ni40MWMtMTMuOTEsMC0yNS4yMiwxMS4zMS0yNS4yMiwyNS4yMnMxMS4zMSwyNS4yMiwyNS4yMiwyNS4yMiwyNS4yMi0xMS4zMSwyNS4yMi0yNS4yMi0xMS4zMS0yNS4yMi0yNS4yMi0yNS4yMloiLz4KICAgICAgICA8ZyBjbGFzcz0iY2xzLTMxIj4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMTU3OS42NiIgeT0iMzYzLjY1IiB3aWR0aD0iNzAuNDciIGhlaWdodD0iMjMyLjI0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjI5Ljc5IDk1OS41NCkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxNTg3LjkyIiB5PSIzNzIuMDUiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjI4LjM2IDc1My40Mikgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Zz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1OTkuOTYiIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwODEuODIgMjE3MC42NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1OTkuOTYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExNDcuNjggMjEwNC43OCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9IjU0Mi4wOCIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwNTUuMTEgMjE0My45Mykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9IjQ3Ni4yMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMjAuOTcgMjA3OC4wNykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1ODAuNCIgeT0iNTM1LjMzIiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA3NS43NiAyMTUxLjA3KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTU4MC40IiB5PSI0NTIuNTMiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTU4LjU2IDIwNjguMjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0MTcuNCIgeT0iMzQ0Ljc0IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjk1NS4xNSAxMTAyLjY1KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNiIgZD0ibTE1MDUuNzgsNjY4LjhjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE0NzcuNTgsNzAwLjE1Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE0NDIuMzIiIHk9IjM2My42NSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjk1NS4xMiA5NTkuNTQpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPC9nPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTQ1MC41OCIgeT0iMzcyLjA1IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iOS4zMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjk1My42OSA3NTMuNDIpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDYyLjYzIiB5PSI1NDIuMDgiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NDQuNDggMjAzMy4zKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQ2Mi42MyIgeT0iNDc2LjIyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAxMC4zNCAxOTY3LjQ0KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQzNS45MiIgeT0iNTQyLjA4IiB3aWR0aD0iNTIuNTIiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTE3Ljc4IDIwMDYuNTkpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDM1LjkyIiB5PSI0NzYuMjIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5ODMuNjMgMTk0MC43NCkgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0NDMuMDYiIHk9IjUzNS4zMyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkzOC40MyAyMDEzLjc0KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQ0My4wNiIgeT0iNDUyLjUzIiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAyMS4yMyAxOTMwLjk0KSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGc+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5NjYuNzUiIHk9IjgxMS43OCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwNTMuODQgMjAzNi43Mykgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0yMDU1LjEyLDExMzUuODNjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTIwMjYuOTIsMTE2Ny4xOWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxOTkxLjY3IiB5PSI4MzAuNjkiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwNTMuOCAxODkzLjYxKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjE5OTkuOTIiIHk9IjgzOS4wOSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwNTIuMzcgMTY4Ny40OSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8Zz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIwMTEuOTciIHk9IjEwMDkuMTIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDI2Ljc5IDMwNDkuNjgpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMDExLjk3IiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDkyLjY1IDI5ODMuODIpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxOTg1LjI3IiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwMC4wOCAzMDIyLjk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTk4NS4yNyIgeT0iOTQzLjI2IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA2NS45NCAyOTU3LjEyKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTk5Mi40MSIgeT0iMTAwMi4zNiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMjAuNzMgMzAzMC4xMikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE5OTIuNDEiIHk9IjkxOS41NyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMDMuNTMgMjk0Ny4zMikgcm90YXRlKC05MCkiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgICAgPGc+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTgyOS40MSIgeT0iODExLjc4IiB3aWR0aD0iMTIwLjM0IiBoZWlnaHQ9IjQxMy4xNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc3OS4xNyAyMDM2LjczKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNiIgZD0ibTE5MTcuNzksMTEzNS44M2MwLTE1LjU4LTEyLjYzLTI4LjIxLTI4LjIxLTI4LjIxcy0yOC4yMSwxMi42My0yOC4yMSwyOC4yMSwxMi42MywyOC4yMSwyOC4yMSwyOC4yMSwyOC4yMS0xMi42MywyOC4yMS0yOC4yMVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTE1IiBkPSJtMTg4OS41OCwxMTY3LjE5Yy0xNy4yLDAtMzEuMTktMTMuOTktMzEuMTktMzEuMTlzMTMuOTktMzEuMTksMzEuMTktMzEuMTksMzEuMTksMTMuOTksMzEuMTksMzEuMTktMTMuOTksMzEuMTktMzEuMTksMzEuMTlabTAtNTYuNDFjLTEzLjkxLDAtMjUuMjIsMTEuMzEtMjUuMjIsMjUuMjJzMTEuMzEsMjUuMjIsMjUuMjIsMjUuMjIsMjUuMjItMTEuMzEsMjUuMjItMjUuMjItMTEuMzEtMjUuMjItMjUuMjItMjUuMjJaIi8+CiAgICAgICAgPGcgY2xhc3M9ImNscy0zMSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE4NTQuMzMiIHk9IjgzMC42OSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzc3OS4xMyAxODkzLjYxKSByb3RhdGUoMTgwKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjE4NjIuNTkiIHk9IjgzOS4wOSIgd2lkdGg9IjUyLjUyIiBoZWlnaHQ9IjkuMzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM3NzcuNyAxNjg3LjQ5KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxnPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTg3NC42NCIgeT0iMTAwOS4xMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg4OS40NSAyOTEyLjM1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTg3NC42NCIgeT0iOTQzLjI2IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTU1LjMxIDI4NDYuNDkpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODQ3LjkzIiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODYyLjc1IDI4ODUuNjQpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODQ3LjkzIiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5MjguNiAyODE5Ljc4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTg1NS4wNyIgeT0iMTAwMi4zNiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg4My40IDI4OTIuNzgpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxODU1LjA3IiB5PSI5MTkuNTYiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NjYuMiAyODA5Ljk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgICA8Zz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNjkyLjA4IiB5PSI4MTEuNzgiIHdpZHRoPSIxMjAuMzQiIGhlaWdodD0iNDEzLjE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTA0LjQ5IDIwMzYuNzMpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy02IiBkPSJtMTc4MC40NSwxMTM1LjgzYzAtMTUuNTgtMTIuNjMtMjguMjEtMjguMi0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMi0xMi42MywyOC4yLTI4LjIxWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTUiIGQ9Im0xNzUyLjI1LDExNjcuMTljLTE3LjIsMC0zMS4xOS0xMy45OS0zMS4xOS0zMS4xOXMxMy45OS0zMS4xOSwzMS4xOS0zMS4xOSwzMS4xOSwxMy45OSwzMS4xOSwzMS4xOS0xMy45OSwzMS4xOS0zMS4xOSwzMS4xOVptMC01Ni40MWMtMTMuOTEsMC0yNS4yMiwxMS4zMS0yNS4yMiwyNS4yMnMxMS4zMSwyNS4yMiwyNS4yMiwyNS4yMiwyNS4yMi0xMS4zMSwyNS4yMi0yNS4yMi0xMS4zMS0yNS4yMi0yNS4yMi0yNS4yMloiLz4KICAgICAgICA8ZyBjbGFzcz0iY2xzLTMxIj4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMTcxNi45OSIgeT0iODMwLjY5IiB3aWR0aD0iNzAuNDgiIGhlaWdodD0iMjMyLjI0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTA0LjQ2IDE4OTMuNjEpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPC9nPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTcyNS4yNSIgeT0iODM5LjA5IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iOS4zMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwMy4wMyAxNjg3LjQ5KSByb3RhdGUoMTgwKSIvPgogICAgICAgIDxnPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTczNy4zIiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzUyLjEyIDI3NzUuMDEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzM3LjMiIHk9Ijk0My4yNiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgxNy45NyAyNzA5LjE1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxMC42IiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzI1LjQxIDI3NDguMzEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNzEwLjYiIHk9Ijk0My4yNiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc5MS4yNyAyNjgyLjQ1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxNy43NCIgeT0iMTAwMi4zNiIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc0Ni4wNiAyNzU1LjQ1KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTcxNy43NCIgeT0iOTE5LjU3IiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODI4Ljg2IDI2NzIuNjUpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICAgIDxnPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NTQuNzQiIHk9IjgxMS43OCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyMjkuODIgMjAzNi43Mykgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0xNjQzLjEyLDExMzUuODNjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE2MTQuOTEsMTE2Ny4xOWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxNTc5LjY2IiB5PSI4MzAuNjkiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyMjkuNzkgMTg5My42MSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxNTg3LjkyIiB5PSI4MzkuMDkiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjI4LjM2IDE2ODcuNDkpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNTk5Ljk2IiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjE0Ljc4IDI2MzcuNjcpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNTk5Ljk2IiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2ODAuNjQgMjU3MS44Mikgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9IjEwMDkuMTIiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1ODguMDcgMjYxMC45Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE1NzMuMjYiIHk9Ijk0My4yNiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1My45MyAyNTQ1LjExKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTU4MC40IiB5PSIxMDAyLjM2IiB3aWR0aD0iNjYuMDQiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjA4LjczIDI2MTguMTEpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNTgwLjQiIHk9IjkxOS41NyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY5MS41MiAyNTM1LjMxKSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgICA8Zz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDE3LjQiIHk9IjgxMS43OCIgd2lkdGg9IjEyMC4zNCIgaGVpZ2h0PSI0MTMuMTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5NTUuMTUgMjAzNi43Mykgcm90YXRlKDE4MCkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0xNTA1Ljc4LDExMzUuODNjMC0xNS41OC0xMi42My0yOC4yMS0yOC4yMS0yOC4yMXMtMjguMjEsMTIuNjMtMjguMjEsMjguMjEsMTIuNjMsMjguMjEsMjguMjEsMjguMjEsMjguMjEtMTIuNjMsMjguMjEtMjguMjFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTE0NzcuNTgsMTE2Ny4xOWMtMTcuMiwwLTMxLjE5LTEzLjk5LTMxLjE5LTMxLjE5czEzLjk5LTMxLjE5LDMxLjE5LTMxLjE5LDMxLjE5LDEzLjk5LDMxLjE5LDMxLjE5LTEzLjk5LDMxLjE5LTMxLjE5LDMxLjE5Wm0wLTU2LjQxYy0xMy45MSwwLTI1LjIyLDExLjMxLTI1LjIyLDI1LjIyczExLjMxLDI1LjIyLDI1LjIyLDI1LjIyLDI1LjIyLTExLjMxLDI1LjIyLTI1LjIyLTExLjMxLTI1LjIyLTI1LjIyLTI1LjIyWiIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy04IiB4PSIxNDQyLjMyIiB5PSI4MzAuNjkiIHdpZHRoPSI3MC40NyIgaGVpZ2h0PSIyMzIuMjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI5NTUuMTIgMTg5My42MSkgcm90YXRlKDE4MCkiLz4KICAgICAgICA8L2c+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxNDUwLjU4IiB5PSI4MzkuMDkiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOTUzLjY5IDE2ODcuNDkpIHJvdGF0ZSgxODApIi8+CiAgICAgICAgPGc+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDYyLjYzIiB5PSIxMDA5LjEyIiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDc3LjQ0IDI1MDAuMzQpIHJvdGF0ZSgtOTApIi8+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIxNDYyLjYzIiB5PSI5NDMuMjYiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NDMuMyAyNDM0LjQ4KSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQzNS45MiIgeT0iMTAwOS4xMiIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ1MC43NCAyNDczLjYzKSByb3RhdGUoLTkwKSIvPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMTQzNS45MiIgeT0iOTQzLjI2IiB3aWR0aD0iNTIuNTMiIGhlaWdodD0iNC42NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTE2LjYgMjQwNy43Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0NDMuMDYiIHk9IjEwMDIuMzYiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NzEuMzkgMjQ4MC43Nykgcm90YXRlKC05MCkiLz4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjE0NDMuMDYiIHk9IjkxOS41NyIgd2lkdGg9IjY2LjA0IiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU1NC4xOSAyMzk3Ljk4KSByb3RhdGUoLTkwKSIvPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPHJlY3QgY2xhc3M9ImNscy0xMSIgeD0iMTM4OC40NyIgeT0iMjgxLjYiIHdpZHRoPSIyOC45MyIgaGVpZ2h0PSIxMTk1LjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI4MDUuODggMTc1OSkgcm90YXRlKDE4MCkiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTEiIHg9IjIyMjQuNDUiIHk9IjI4MS42IiB3aWR0aD0iMjguOTMiIGhlaWdodD0iMTE1NS4zNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQ3Ny44NCAxNzE4LjUzKSByb3RhdGUoMTgwKSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xMSIgeD0iMTM4OC40NyIgeT0iNzUyLjA0IiB3aWR0aD0iODM1Ljk1IiBoZWlnaHQ9IjExLjYyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjEyLjkgMTUxNS43MSkgcm90YXRlKDE4MCkiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTEiIHg9IjEzODguNDciIHk9IjEyMTkuMTQiIHdpZHRoPSI4ODcuODYiIGhlaWdodD0iMTEuNjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2NjQuOCAyNDQ5Ljg5KSByb3RhdGUoMTgwKSIvPgogIDwvZz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjEiIGQ9Im04NDcuMTksNjM0LjQ4aDExMDAuMjNjMTYuNTYsMCwzMCwxMy40NCwzMCwzMHY4MDIuNzhjMCwxNi41Ni0xMy40NCwzMC0zMCwzMEg4NDcuMTljLTE2LjU2LDAtMzAtMTMuNDQtMzAtMzB2LTgwMi43OGMwLTE2LjU2LDEzLjQ0LTMwLDMwLTMwWiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xNSIgeD0iODQzLjM2IiB5PSI2NjQuNjMiIHdpZHRoPSIxMTA3Ljg5IiBoZWlnaHQ9IjgyMy44NiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0yMSIgeD0iNzAyLjYxIiB5PSIxNDYzLjczIiB3aWR0aD0iMTM4OS4zOSIgaGVpZ2h0PSI1NS4yMyIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xNyIgeD0iODQzLjM2IiB5PSI2NjQuNjMiIHdpZHRoPSIxMTA3Ljg5IiBoZWlnaHQ9Ijc5OS4xMSIvPgogIDwvZz4KICA8cG9seWdvbiBjbGFzcz0iY2xzLTI1IiBwb2ludHM9IjE2ODcuNiA4MDUuMzQgMTY1MC44OSA3NTEuMTcgMTY0OS4xNSA3NDguNjEgMTY0Ni45MiA3NDguMDQgMTQ2My41MiA3MDEuMSAxMzc3LjY3IDEwMzYuNTUgMTYxNS40MiAxMDk3LjM5IDE2ODguODYgODEwLjQ0IDE2ODkuNDYgODA4LjA5IDE2ODcuNiA4MDUuMzQiLz4KICA8Zz4KICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtMTYiIHBvaW50cz0iMTU2Mi43NCA3ODUuOTIgMTU2Mi40MyA3ODguMzMgMTUyNC4xMiAxMDgyLjA0IDEyODAuNzcgMTA1MC4zIDEzMjUuNTUgNzA2Ljk1IDE1MTMuMjcgNzMxLjQ0IDE1MTUuNTYgNzMxLjc0IDE1MTcuNTkgNzM0LjA3IDE1NjAuNTcgNzgzLjQyIDE1NjIuNzQgNzg1LjkyIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Im0xNTYyLjc0LDc4NS45MmwtLjMyLDIuNC01My4zNC02Ljk1Yy0xLjI3LS4xNy0yLjE2LTEuMzItMS45OS0yLjU5bDYuMTctNDcuMzQsMi4yOS4zLDIuMDMsMi4zMy01LjYxLDQzLjAyLDQ4LjU5LDYuMzMsMi4xOCwyLjVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTQ4OC43Myw3NzUuODdsLTEwMS41MS0xMy4yNGMtMS4yNy0uMTctMi4xNi0xLjMyLTEuOTktMi41OS4xNy0xLjI3LDEuMzItMi4xNiwyLjU5LTEuOTlsMTAxLjUxLDEzLjI0YzEuMjcuMTYsMi4xNiwxLjMyLDEuOTksMi41OS0uMTcsMS4yNy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MzcuODYsODI3LjMzbC0yMDUuMDYtMjYuNzRjLTEuMjctLjE2LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE2LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE2LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xNTM1Ljg0LDg0Mi43N2wtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNi0yLjE2LTEuMzItMS45OS0yLjU5LjE2LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNiwyLjE2LDEuMzIsMS45OSwyLjU5cy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MzIuOTcsODY0LjgxbC0yMDUuMDYtMjYuNzRjLTEuMjctLjE3LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE3LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE3LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xNTMwLjk2LDg4MC4yNWwtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNy0yLjE2LTEuMzItMS45OS0yLjU5LjE2LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNiwyLjE2LDEuMzIsMS45OSwyLjU5LS4xNywxLjI3LTEuMzIsMi4xNi0yLjU5LDEuOTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTUyOC45NCw4OTUuNjlsLTIwNS4wNi0yNi43NGMtMS4yNy0uMTctMi4xNi0xLjMyLTEuOTktMi41OS4xNi0xLjI3LDEuMzItMi4xNiwyLjU5LTEuOTlsMjA1LjA2LDI2Ljc0YzEuMjcuMTYsMi4xNiwxLjMyLDEuOTksMi41OS0uMTYsMS4yNy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MjYuOTMsOTExLjEzbC0yMDUuMDYtMjYuNzRjLTEuMjctLjE2LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE3LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE3LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xNTE5LjI5LDk2OS42OWwtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNy0yLjE2LTEuMzItMS45OS0yLjU5LjE2LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNiwyLjE2LDEuMzIsMS45OSwyLjU5LS4xNywxLjI3LTEuMzIsMi4xNi0yLjU5LDEuOTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTUxNy4yOCw5ODUuMTJsLTIwNS4wNi0yNi43NGMtMS4yNy0uMTctMi4xNi0xLjMyLTEuOTktMi41OS4xNi0xLjI3LDEuMzItMi4xNiwyLjU5LTEuOTlsMjA1LjA2LDI2Ljc0YzEuMjcuMTcsMi4xNiwxLjMyLDEuOTksMi41OS0uMTcsMS4yNy0xLjMyLDIuMTYtMi41OSwxLjk5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yNSIgZD0ibTE1MTUuMjcsMTAwMC41NmwtMjA1LjA2LTI2Ljc0Yy0xLjI3LS4xNi0yLjE2LTEuMzItMS45OS0yLjU5LjE3LTEuMjcsMS4zMi0yLjE2LDIuNTktMS45OWwyMDUuMDYsMjYuNzRjMS4yNy4xNywyLjE2LDEuMzIsMS45OSwyLjU5LS4xNiwxLjI3LTEuMzIsMi4xNi0yLjU5LDEuOTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI1IiBkPSJtMTUxMy4yNSwxMDE2bC0yMDUuMDYtMjYuNzRjLTEuMjctLjE3LTIuMTYtMS4zMi0xLjk5LTIuNTkuMTctMS4yNywxLjMyLTIuMTYsMi41OS0xLjk5bDIwNS4wNiwyNi43NGMxLjI3LjE3LDIuMTYsMS4zMiwxLjk5LDIuNTktLjE2LDEuMjctMS4zMiwyLjE2LTIuNTksMS45OVoiLz4KICA8L2c+CiAgPGc+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIzIiBkPSJtMTQxNi4yMSw3NzMuMjFsLTQwOS4zMywzMi45MmMtLjgzLjA3LTEuNDQuNzktMS4zOCwxLjYybDQzLjExLDUzNi4wMWMuMDcuODMuNzksMS40NCwxLjYyLDEuMzhsNDA4Ljc1LTMyLjg4Yy44My0uMDcsMS40NC0uNzksMS4zOC0xLjYybC00My4xNi01MzYuNmMtLjA0LS41LS40OC0uODgtLjk5LS44NFoiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMTUiIHg9IjEwMzkuODQiIHk9IjgwMS41NiIgd2lkdGg9IjM4NS43OSIgaGVpZ2h0PSI1MTAuNjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04Ny40MSAxMTEuNDUpIHJvdGF0ZSgtNSkiLz4KICAgIDxnPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTI4MC42OCw4NjcuNzZsLTIxOC4wNywxOS4wOGMtLjExLjAxLS4yMS0uMDctLjIyLS4xOGwtLjQ4LTUuNDVjMC0uMTEuMDctLjIxLjE4LS4yMmwyMTguMDctMTkuMDhjLjExLDAsLjIxLjA3LjIyLjE4bC40OCw1LjQ1YzAsLjExLS4wNy4yMS0uMTguMjJaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMjg0Ljc3LDkxNC41OGwtMjE4LjA3LDE5LjA4Yy0uMTEsMC0uMjEtLjA3LS4yMi0uMThsLS40OC01LjQ1YzAtLjExLjA3LS4yMS4xOC0uMjJsMjE4LjA3LTE5LjA4Yy4xMSwwLC4yMS4wNy4yMi4xOGwuNDgsNS40NWMwLC4xMS0uMDcuMjEtLjE4LjIyWiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTM2Ni4wNCw4ODMuODlsLTMwMS4zOSwyNi4zNmMtLjExLDAtLjIxLS4wNy0uMjItLjE4bC0uNDgtNS40NWMwLS4xMS4wNy0uMjEuMTgtLjIybDMwMS4zOS0yNi4zN2MuMTEsMCwuMjEuMDcuMjIuMThsLjQ4LDUuNDVjMCwuMTEtLjA3LjIxLS4xOC4yMloiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEyMzUuNjYsMTA2NC45NmwtMTQ4LjM3LDEyLjk4Yy0uMDksMC0uMTctLjA2LS4xOC0uMTVsLS40OC01LjUyYzAtLjA5LjA2LS4xNy4xNS0uMThsMTQ4LjM3LTEyLjk4Yy4wOSwwLC4xNy4wNi4xOC4xNWwuNDgsNS41MmMwLC4wOS0uMDYuMTctLjE1LjE4WiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTI5MC4zMiwxMDM2LjU4bC0yMDUuMDgsMTcuOTRjLS4wOSwwLS4xNy0uMDYtLjE4LS4xNWwtLjQ4LTUuNTJjMC0uMDkuMDYtLjE3LjE1LS4xOGwyMDUuMDgtMTcuOTRjLjA5LDAsLjE3LjA2LjE4LjE1bC40OCw1LjUyYzAsLjA5LS4wNi4xNy0uMTUuMThaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMzA2LjY2LDEwODVsLTIxOC4wNywxOS4wOGMtLjExLDAtLjIxLS4wNy0uMjItLjE4bC0uNDgtNS40NWMwLS4xMS4wNy0uMjEuMTgtLjIybDIxOC4wNy0xOS4wOGMuMTEsMCwuMjEuMDcuMjIuMThsLjQ4LDUuNDVjLjAxLjExLS4wNy4yMS0uMTguMjJaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMzMzLjA5LDExMDYuMjhsLTI0Mi40OCwyMS4yMWMtLjEsMC0uMTktLjA2LS4yLS4xNmwtLjQ4LTUuNDljMC0uMS4wNy0uMTkuMTctLjJsMjQyLjQ4LTIxLjIxYy4xLDAsLjE5LjA3LjIuMTdsLjQ4LDUuNDljMCwuMS0uMDcuMTktLjE3LjJaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Im0xMjUxLjU5LDExNTQuODNsLTE1Ni4wNiwxMy42NWMtLjA5LDAtLjE4LS4wNi0uMTktLjE2bC0uNDgtNS41MWMwLS4wOS4wNi0uMTguMTYtLjE5bDE1Ni4wNi0xMy42NWMuMDksMCwuMTguMDYuMTkuMTZsLjQ4LDUuNTFjMCwuMDktLjA2LjE4LS4xNi4xOVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0ibTEyNTUuNjksMTIwMS42NWwtMTU2LjA2LDEzLjY1Yy0uMDksMC0uMTgtLjA2LS4xOS0uMTZsLS40OC01LjUxYzAtLjA5LjA2LS4xOC4xNS0uMTlsMTU2LjA2LTEzLjY1Yy4wOSwwLC4xOC4wNi4xOC4xNmwuNDgsNS41MWMwLC4wOS0uMDYuMTgtLjE2LjE5WiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJtMTMxMy4yOSwxMTczLjAybC0yMTUuNzEsMTguODdjLS4wOSwwLS4xOC0uMDYtLjE5LS4xNmwtLjQ4LTUuNTFjMC0uMDkuMDYtLjE4LjE2LS4xOWwyMTUuNzEtMTguODdjLjA5LDAsLjE4LjA2LjE5LjE2bC40OCw1LjUxYzAsLjA5LS4wNi4xOC0uMTYuMTlaIi8+CiAgICA8L2c+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJtMTI5Ny4xNiw3NjcuMDNsLTYxLjMxLDQuOTNjMC0uODMsMC0xLjY2LS4wNy0yLjUxLTEuMjItMTUuMTYtMTQuNS0yNi40Ni0yOS42Ni0yNS4yNC0xNS4xNiwxLjIyLTI2LjQ2LDE0LjUtMjUuMjQsMjkuNjYuMDcuODQuMTksMS42Ny4zMywyLjQ5bC02MS4zMSw0LjkzYy0xMS42OS45NC0yMC40LDExLjE4LTE5LjQ2LDIyLjg2bDIuMzIsMjguODVjLjIyLDIuNywyLjU4LDQuNzEsNS4yOCw0LjVsMjA5LjgxLTE2Ljg4YzIuNy0uMjIsNC43MS0yLjU4LDQuNS01LjI4bC0yLjMyLTI4Ljg1Yy0uOTQtMTEuNjktMTEuMTgtMjAuNC0yMi44Ni0xOS40NlptLTg3LjQzLDIyLjFjLTkuNjUuNzgtMTguMS02LjQyLTE4Ljg3LTE2LjA2LS43OC05LjY1LDYuNDItMTguMSwxNi4wNi0xOC44Nyw5LjY1LS43OCwxOC4xLDYuNDIsMTguODcsMTYuMDYuNzgsOS42NS02LjQyLDE4LjEtMTYuMDYsMTguODdaIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0ibTE0NDQuNjYsMTA3MS4xNmw1LjQ5LTEzLjZjNS44OS0xNC41OSwyMC4wNC0yNC4xMywzNS43Ny0yNC4xM2gxMDEuMzN2MzM4LjhoLTQxOS4xN3YtMjc0LjVoMjM3LjJjMTcuMzEsMCwzMi44OS0xMC41MSwzOS4zNy0yNi41NloiLz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0xNzQ3LjQ1LDExODEuMDlzLTI3LjU1LDMzLjAxLTUwLjAyLDI5LjM5Yy0yMi40Ni0zLjYxLTU5LTcuMTYtNTktNy4xNmwxOC41MS0xMi4yMXMzMi4yMi04LjQ5LDQ0LjA0LTEwLjg1YzExLjgyLTIuMzcsMjYuNTEtMTkuMTQsMjYuNTEtMTkuMTRsMTkuOTYsMTkuOTZaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTc2OC4xNywxNTI5LjM3czMuMzcsMzMuMjQtMy40MiwzN2MtMTIuMjksNi44My0zNC45NSwxMy4zNC0zMy4wNiwxOS4yLDEuOSw1Ljg2LDU2LjIyLDYuMDksNTcuNzMuNzUsMS41MS01LjM1LTQuNTgtMjEuNzEsMS44Ny01My41NWwtMjMuMTMtMy40WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yOSIgZD0ibTE3ODguODgsMTU3NC4zOWMuNTgsNS45NSwxLjA4LDEwLjAzLjU0LDExLjk0LTEuNTEsNS4zNS01NS44Myw1LjEyLTU3LjczLS43NS0xLjQxLTQuMzUsMTAuNTktOS4yNSwyMS45Ny0xNC4xMywyLjY5LDQuNTIsOC40MywxMS41NywzNS4yMiwyLjk0WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMCIgZD0ibTE4NzAuMDYsMTUyOC40MnM4Ljk4LDMyLjE4LDIuOTMsMzcuMDVjLTEwLjk1LDguODItMzIuMTcsMTkuMS0yOS4zLDI0LjU1LDIuODcsNS40Niw1Ni40NC0zLjU3LDU3LjAyLTkuMS41OC01LjUzLTguMjEtMjAuNjEtNy4yNy01My4wOWwtMjMuMzcuNTlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI5IiBkPSJtMTg5OC4xNCwxNTY5LjI1YzEuNTgsNS43NiwyLjc3LDkuNywyLjU3LDExLjY3LS41OCw1LjUzLTU0LjE1LDE0LjU1LTU3LjAyLDkuMS0yLjEzLTQuMDQsOC44Ni0xMC45MiwxOS4yNS0xNy42NywzLjQyLDQsMTAuMjgsOS45NiwzNS4yLTMuMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjQiIGQ9Im0xNzc0LjUsMTIzNC43NXMtMTQuNzYsMTcuODgtMjEuNDEsMzguOGMtNi42NiwyMC45MiwxMSwyNjguOCwxMSwyNjguOGgyOS40OHMxNS42NC0yMjAuNzUsMTUuNjQtMjIyLjcxYzAtNy43MSw1OC4wNiwyMjIuNzEsNTguMDYsMjIyLjcxaDI5LjQ0cy0xNS45My0yNjkuOC01Mi45LTMwNy42bC0zNC41OSwyLjE0LTM0LjcxLTIuMTRaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIyIiBkPSJtMTczOS4zOSwxMTQzLjQ4Yy4xOSwxLjMuMTIsMi42MS0uMzUsMy45NS0uNTgsMS42NS0xLjcyLDMuMDgtMi4xOSw0Ljc3LTEuMDIsMy43MiwxLjc2LDcuNzIsNS4zNyw5LjA3LDMuMDMsMS4xNCw2LjQxLjc5LDkuNTItLjI0LjU5LS4yLDEuMTctLjQyLDEuNzQtLjY1LDMuNTYtMS40OCw2LjgtMy42NiwxMC4zMS01LjI1LjkxLS40MiwxLjg0LS43OSwyLjc4LTEuMTMuMi0uMDcuNC0uMTQuNTktLjIxaDBjNi45OC0yLjQyLDE0LjU0LTMuMDIsMjEuODQtNC40NSw4LjYxLTEuNywxNy4xNy00LjYxLDI1LjkyLTQsMTAuMS43MSwxOS4yLDUuOTksMjguNjUsOS42LDkuNjMsMy42OCwxOS45MSw1LjY4LDMwLjIyLDUuODcsNC4yLjA4LDguNTEtLjE3LDEyLjQ3LTEuNDYuMy0uMDkuNTktLjIuODktLjMxLjgxLS4zLDEuNi0uNjUsMi4zNy0xLjA1LDkuNTMtNC45NiwxMy4yMS0xNy4zMyw5LjM4LTI3LjA4LTIuMTgtNS41Ni02LjUxLTEwLjExLTExLjY5LTEzLTQuNjItMi41OC0xMC41Mi0zLjQ1LTE0LjAyLTcuNzctMS4zNy0xLjctMi4xMi0zLjYzLTIuNTMtNS43LTEuMDYtNS4zMS4xLTExLjUxLTEuMjktMTYuOTQtMS42Mi02LjM0LTYuOTYtMTEuNTUtMTIuODUtMTQuMDctMi41My0xLjA4LTUuMzQtMS43NC04LjA0LTIuNi0xLjMyLS40Mi0yLjYyLS44OS0zLjg0LTEuNDktMS43Mi0uODMtMy4zLTEuOTEtNC42MS0zLjQ1LTQuNDktNS4yNy0zLTEyLjU2LTMuODEtMTguODktLjQ3LTMuNjgtMS43NC03LjE5LTMuNi0xMC4zNy0xLjk2LTMuMzUtNC41OC02LjM2LTcuNjEtOC44NC0xLjE3LS45Ny0yLjQxLTEuODUtMy42OS0yLjY1LTEuNDMtLjg5LTIuOTQtMS43LTQuNS0yLjQxaDBjLS45Ni0uNDQtMS45NC0uODQtMi45My0xLjItNC42MS0xLjY5LTkuNTktMi42My0xNC41NC0yLjcxaDBjLTQuNjctLjA4LTkuMy41OS0xMy41NiwyLjEtNC4xOCwxLjQ3LTcuOTksMy43NC0xMS4xMSw2Ljg3LTMuMDQsMy4wNC01LjQzLDYuODktNi44OCwxMS42Mi0xLjg2LDYuMDktMS43MywxMi44OS01LjA2LDE4LjMyLTMuNjEsNS45LTEwLjg5LDkuMzgtMTIuOSwxNi0yLjUyLDguMzIsNC42MSwxNy4yNSwyLjI2LDI1LjYyLTEuNTQsNS40Ny02LjY0LDktMTEuMTYsMTIuNDUtNC41MiwzLjQ0LTkuMTUsOC4wMS04Ljk5LDEzLjY5LjE4LDYuNDcsNi42MSwxMi4wNyw3LjQ3LDE3Ljk4WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJtMTgxNi44MSwxMTEwYzE2Ljk2LjYzLDQ3LjMsOC4yMiw1Ni44OCwyNy4zMSw1LjMsMTAuNTcsMTIuNzcsNDQuOTIsMTIuNzcsNDQuOTJsLTI1LjczLDQuNTFzLjQzLDEyLjQ0LTEuMjUsMTkuNTRjLTIuOTgsMTIuNi0xNC45NSw0MS4yLTIwLjk4LDQzLjYxLTkuNDIsMy43Ny0xOC40Ny0uNDktMjQuMTItMS4xMi01LjY2LS42My0xOC4yOC03LjczLTMzLjM2LTEyLjEzLTE1LjA4LTQuNC0xNS43MS0xNS43MS0xNy41OS0yOC45LTEuODgtMTMuMTktNC40LTI1LjEzLTQuNC0yNS4xM2wtNS42NSw0LjQtMjguMjgtMjguMjhzMzMuMzEtMzUuOCw1Mi4xNi00MS40NmMxOC44NS01LjY1LDM5LjU1LTcuMjgsMzkuNTUtNy4yOFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Im0xNzcxLjQ3LDEwNjcuNXMtMi44Mi0zLjEyLTQuNDItMS40M2MtNC4wOCw0LjMsMS42NSw4LjMxLDQuODksOC44N2wtLjQ3LTcuNDRaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTc5NC4yLDEwMjEuMDNjMTQuMjktMS4yMywyNy40Niw4LjYyLDMwLjM2LDIyLjY3Ljk1LDQuNjIuNzMsOS4xOC0uNDMsMTMuMzktMi40LDEwLjQzLTQuNDIsMTguODQtNy41NSwyNS4yMi0zLjE3LDYuNDYtMy45NSwxMy44NC0xLjg3LDIwLjczbDIuMSw2Ljk2Yy0xNS4xOSwxMC43MS0yMy42MiwzLjU5LTIzLjYyLDMuNTlsLTIuNS0xNi40M2gwYy0xOC4xLjU4LTIwLjcxLTMyLjU4LTIyLjE4LTQyLjI4aC4wM2MtLjA3LS4zNi0uMTQtLjcyLS4xOS0xLjA5LTIuNDYtMTYuMjMsOS4yNC0zMS4zMywyNS44Ni0zMi43NloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjIiIGQ9Im0xODAwLjU5LDEwNDkuNDZjMy45OSwzLDcuNiw2LjQ3LDExLjE5LDkuOTMsMy44LDMuNjYsNy43Niw3LjU3LDkuMjUsMTIuNjMsNC4wNS00LjE4LDYuMi05LjgyLDcuODgtMTUuMzkuNzgtMi41OCwxLjQ5LTUuMjMsMS40Ny03LjkzLS4wMy0zLjgyLTEuNTMtNy40Ni0zLTEwLjk5LTEuOS00LjU2LTMuOTItOS4yOS03LjctMTIuNDYtMi41LTIuMS01LjYxLTMuMzYtOC43NC00LjI3LTcuMzItMi4xMy0xNS4yNS0yLjU0LTIyLjU2LS4zNy03LjMxLDIuMTgtMTMuOTIsNy4wNy0xNy40NSwxMy44My00LjU1LDguNy0zLjYyLDE5LjEzLTIuNTcsMjguODkuMzYtNC4xNywyLjUxLTcuOTUsNC42MS0xMS41OCwxLjM3LTIuMzYsMi43Ny00Ljc2LDQuODMtNi41NCwzLjUyLTMuMDMsNC42OS0yLjY3LDEwLjgxLTguMzMsMi42OSw1LjcxLDYuOTgsOC44MywxMS45NywxMi41OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0xODE2LjcxLDEwNjYuMzFjLjMyLS45OCwxLjAxLTEuOCwxLjktMi4zMywxLjgzLTEuMDgsNS4xNC0yLjQ2LDcuODYtLjQ2LDQsMi45NC0xLjU5LDEzLjItOS4xOCw5LjY3LDAsMC0yLjI3LTEuNjctLjU4LTYuODlaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Im0xNzc2LjE5LDEwNjcuMDZjLS4zNC0xLjM0LjQ3LTIuNjksMS44MS0zLjAzLDEuMzMtLjM0LDIuNjkuNDcsMy4wMywxLjgxLjM0LDEuMzQtLjQ3LDIuNjktMS44MSwzLjAzLTEuMzQuMzQtMi42OS0uNDctMy4wMy0xLjgxWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTc5OS44NSwxMDY2LjEzYy0uMzQtMS4zMy40Ny0yLjY5LDEuODEtMy4wMywxLjM0LS4zNCwyLjY5LjQ3LDMuMDMsMS44MS4zNCwxLjM0LS40NywyLjY5LTEuODEsMy4wMy0xLjMzLjM0LTIuNjktLjQ3LTMuMDMtMS44MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0ibTE3ODQuMjcsMTA4NC4wNnMxLjk2LTEuNzUsMy4yNi0xLjUyYzEuMy4yMywyLjE1LDEuNjksMi4xNSwxLjY5LDAsMCwuNjEtMS42LDIuMTUtMS43NywxLjU0LS4xNyw1Ljk4LjYsNS45OC42LDAsMC0zLjM3LDYuOTUtOC4wOSw2LjI0LTQuNzItLjcxLTUuMzYtNS4wMy01LjM2LTUuMDNsLS4wOS0uMjJaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTI2IiBkPSJtMTc4OC44NSwxMDg2LjMzYzUuNC42MSwxMC4xNi0zLjc4LDEwLjIyLTMuODQuMTQtLjEzLjE1LS4zNS4wMi0uNS0uMTMtLjE0LS4zNi0uMTUtLjUtLjAyLS4zMS4yOS03Ljc1LDcuMTMtMTQuMzMsMS41NS0uMTUtLjEyLS4zNy0uMTEtLjQ5LjA0LS4xMy4xNS0uMTEuMzcuMDQuNSwxLjY2LDEuNDEsMy4zOCwyLjA3LDUuMDQsMi4yNloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0ibTE4MDcuNDMsMTA2MS4zN2MuMjktLjA2LjU1LS4yNC43MS0uNTMuMjctLjUxLjA4LTEuMTMtLjQyLTEuNC0uMTUtLjA4LTMuNzgtMS45Ni04LjI4LS44Mi0uNTYuMTQtLjg5LjctLjc1LDEuMjYuMTQuNTUuNzUuODksMS4yNi43NSwzLjc1LS45NCw2Ljc2LjYyLDYuNzkuNjMuMjIuMTIuNDcuMTUuNy4xWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMTc4MS43LDEwNjAuOTFjLjI4LS4xMS41LS4zNC42LS42NC4xOC0uNTUtLjEyLTEuMTMtLjY3LTEuMy0uMTYtLjA1LTQuMDMtMS4yNi04LjI5LjY4LS41Mi4yNC0uNzUuODUtLjUxLDEuMzcuMjQuNTIuODcuNzUsMS4zNy41MSwzLjUyLTEuNjEsNi43Ni0uNiw2LjgtLjU5LjI0LjA4LjQ5LjA2LjcxLS4wM1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Im0xNzkwLjE5LDEwNzcuMjFjLTIuOTgsMC00LjI4LTIuMDQtNC41Ni0zLjI5LS4wNS0uMjItLjAxLS40NS4xLS42NCwyLjEzLTMuNTksMS4xNS04LjIxLDEuMTQtOC4yNi0uMS0uNDcuMTktLjkzLjY3LTEuMDQuNDYtLjEuOTQuMTksMS4wNC42Ni4wNC4yMSwxLjA5LDUuMDYtMS4xNSw5LjE4LjI3LjY2LDEuMiwyLjA3LDMuOTUsMS41MS40OC0uMDkuOTMuMjEsMS4wMy42OC4wOS40Ny0uMjEuOTMtLjY4LDEuMDMtLjU2LjExLTEuMDcuMTYtMS41NC4xNloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtOSIgZD0ibTE4MjguMzEsMTE5MS4xMmMtMTAuNjQsMC0xOS42NC02LjE0LTE5Ljc3LTYuMjMtLjEtLjA3LS4xMi0uMi0uMDUtLjMuMDctLjEuMjEtLjEyLjMtLjA1LjE3LjEyLDE3LjIzLDExLjc1LDMyLjAxLDIuNzIuMS0uMDYuMjQtLjAzLjMuMDcuMDYuMS4wMy4yNC0uMDcuMy00LjIsMi41Ny04LjU5LDMuNS0xMi43MiwzLjVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTg4Mi45OCwxMTgyLjg1Yy4yOCwxLjU0LDkuMjEsNTAuOTgsMi4yOSw2Mi42Mi0zLjA0LDUuMTEtMjguNjEsMTQuMTItNjUuODQsMTMuODlsMi4zNS0xMi45N3MzNi4yNC0xMi41MSwzNy4zNS0xNy4xYzIuNC05Ljg4LTQuNDItNDEuNDctNC40Mi00MS40N2wyOC4yOC00Ljk2WiIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0xMSIgeD0iMTYxMi44IiB5PSIxMTY3LjQiIHdpZHRoPSIxMzIuNTQiIGhlaWdodD0iMjAuNzkiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMzAiIGQ9Im0xNzM3LjI0LDExNzAuMDRsMi40Ny02LjEyYzIuNjUtNi41Niw5LjAyLTEwLjg2LDE2LjEtMTAuODZoNDUuNTl2MTUyLjQzaC0xODguNnYtMTIzLjVoMTA2LjcyYzcuNzksMCwxNC44LTQuNzMsMTcuNzEtMTEuOTVaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTc5Ny4xNywxMjI5LjcyYy0yLjA5LDIuMDIsNC4wNSw5LjMyLDQuMTksOS40OS0uMTYsMC0xMC4zNC4xMi0xMy41LS4zMy0zLjE4LS40NS05LjA3LjItOS41NywyLjUtLjUsMi4yNiwxNC40LDMuMzQsMTQuOSwzLjM4LS40NS4wMS0xMy4wNy40LTEzLjk4LDIuMzktLjkxLDEuOTksMTUuMjgsMy45NCwxNS43Nyw0LS4zMywwLTkuOTYtLjItMTMuNjkuMjktLjcxLjEtMS4yMS4yMS0xLjM4LjM2LTEuMTEuOTMuMDQsMi40LDQuOTUsMy43LDEuNC4zNywyLjg0LjY0LDQuMTcuODQsMy4xNC40Niw1Ljc0LjUyLDYuMDcuNTMtLjI2LjAxLTIuMDkuMTItNC4xOC4yNi0yLjgyLjItNi4xMy40OC02Ljc3Ljc0LTEuMTYuNDctMi40LDEuOTcsNS4wOCwzLjEzLDYuMDEuOTMsMTcuOSwxLjAzLDI2LjYzLS43NSwyLjE0LS40NCw0LjA5LS45OSw1LjcyLTEuNjZsLjExLTguMTIuMDYtNC4wOHMtMS4xOC0uOTYtMi45My0yLjMxYy0zLjQ5LTIuNzItOS4yNS03LjA2LTEyLjI4LTguNTctNC41NS0yLjI2LTcuMjctNy44Mi05LjM5LTUuNzhaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMTY2Mi45NywxMTY0LjYzcy00LjEsMTQuMjYtNi4zMSwxNC4wMmMtMi4yLS4yNC0xLjcxLTExLjkxLTEuNzktMTEuNzMtLjA4LjE4LTIuNzUsMTIuMjktNS44LDEyLjkyLTMuMDYuNjQtMS44NC0xMi43OC0xLjg0LTEyLjc4LDAsMC0xLjYxLDExLjUyLTMuNzMsMTEuODQtMi4xMi4zMy0xLjg2LTEwLjgzLTIuNjgtMTAuODVzLS4yNyw5LjU3LTIuODgsMTAuMDhjLTIuNjEuNTEtMy45NS0xMi45Ni0xLjU2LTE0LjcxLDIuMzktMS43NCw0LjcyLjA3LDQuNzIuMDcsMCwwLDQuMzQtMi41Miw2LjY2LTEuMTQsMCwwLDYuODEtMS4yOCw3LjkzLDEuMzgsMCwwLDUuMDEtMy4yOCw3LjI4Ljg4WiIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0zMCIgcG9pbnRzPSIxODAxLjM5IDEyMzkuMjEgMTc5MC41NiAxMjM4LjcyIDE3OTAuNTYgMTIxMy4yNyAxODAxLjM5IDEyMTMuMjcgMTgwMS4zOSAxMjM5LjIxIi8+CiAgPC9nPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0yMCIgcG9pbnRzPSI5MTAuOCAxMjE5LjkgODg1LjE2IDEyMTMuMjggOTAxLjg2IDEyMDAuODEgOTE2LjAxIDExOTcuODYgOTIyLjg4IDEyMDYuMDUgOTEwLjggMTIxOS45Ii8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtODAxLjAzLDE1MzkuNXM2LjM1LDM3LjE0LDYuNTksMzcuNmMuMjUuNDYtMi4zMiw0LjQzLTIuMzIsNC40M2wtMTAuMDIsMS44LTkuMTUtNC4yMXMtNS4yOC0yOS45NC02LjI0LTM0LjZjLS45Ni00LjY2LDIxLjEzLTUuMDIsMjEuMTMtNS4wMloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTgiIGQ9Im03ODYuMTMsMTU3OS4xMnMxMS41NSw0LjA0LDIxLjQzLTIuNjVjMCwwLDM4LjQ3LDE0LjQyLDM3LjMsMjUuMzgsMCwwLDEuNjQsMy4yNy0xNS4wMywyLjU2LTE2LjY3LS43MS00Mi41OC0xLjQ1LTQzLjI3LTEuODMtLjctLjM4LTMuOTYsMS4zOC0uNDMtMjMuNDdaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtNjg2Ljc5LDE1MzkuNXMtOS44LDM3LjE0LTkuNTYsMzcuNmMuMjUuNDYtMi4zMiw0LjQzLTIuMzIsNC40M2wtMTAuMDIsMS44LTkuMTUtNC4yMXM0Ljk5LTMwLjU1LDQuMDMtMzUuMjFjLS45Ni00LjY2LDI3LjAyLTQuNDEsMjcuMDItNC40MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMTgiIGQ9Im02NTUuNzQsMTU3OS4xMnMxMS41NSw0LjA0LDIxLjQzLTIuNjVjMCwwLDM4LjQ3LDE0LjQyLDM3LjMsMjUuMzgsMCwwLDEuNjQsMy4yNy0xNS4wMywyLjU2LTE2LjY3LS43MS00Mi41Ny0xLjQ1LTQzLjI3LTEuODMtLjY5LS4zOC0zLjk2LDEuMzgtLjQzLTIzLjQ3WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy03IiBkPSJtNzkwLjcsMTMwNy4zM2wyMC4xLDI1NC4yaC0zNC41NHMtMzYuNTItMjAwLjg3LTQxLjctMjAxLjc1Yy01LjE4LS44OC00Mi4xOCwyMDEuNzUtNDIuMTgsMjAxLjc1aC0zOS42NGwyMC4yNi0yNjAuNzgsMTE3LjcxLDYuNThaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIzIiBkPSJtNzEyLjc0LDExMDkuMjZzNDIuNzUsMS40OSw2MC4wNywxNC42M2MxMC43Nyw4LjE4LDEzLjIyLDExMS4zNSwxMy4yMiwxMTEuMzVsNi40Nyw3Ni45NXMtNjkuMywyMy40OC0xMjUuNjksMGwtNi4xNC01MS40NnMtMjIuMjgtMTI5LjM0LTQuOTQtMTM2Ljk4YzMyLjkyLTE0LjUsNTctMTQuNSw1Ny0xNC41WiIvPgogICAgPGc+CiAgICAgIDxnPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjciIGQ9Im03NDEuMTgsMTA1OS4xNHMyLjA4LTMuODUsNC4xMS0yLjU1YzUuMTksMy4zMy43OCw4LjYxLTIuMzUsOS45OGwtMS43Ni03LjQ0WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im03NDEuMDQsMTA0NS42NWgtLjAzYy0uMDItLjM3LS4wNC0uNzYtLjA4LTEuMTQtMS41NS0xNy4wMS0xNy4xNC0yOS4zNi0zNC4yOS0yNi42NS0xNC4yOSwyLjI1LTI1LDE0Ljc2LTI1LjAzLDI5LjIzLDAsNS4zNywxLjM4LDEwLjM0LDMuNzksMTQuNjQsMy4zNyw2LjY3LDYuMzMsMTIuMzgsOS4zMywxNy4wNyw0Ljk3LDcuNzYsNy4xNiwxNi45Nyw2LjQ1LDI2LjE2bC0uMzcsNS40NGMxOS4wNyw4LjAzLDI2LjM2LjA1LDI2LjM2LjA1bC0uODUtMTMuMDljLS4xMS0xLjcxLDEuMTEtMy4yLDIuOC0zLjQ3LjAxLDAsLjAyLDAsLjAzLDAsMjIuNDItMy41MywxMi44MS0zOC4wNywxMS44OC00OC4yM1oiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNzExLjk2LDEwNjMuOTZjLS4xNC0xLjUyLTEuNDgtMi42NC0zLjAxLTIuNS0xLjUyLjE0LTIuNjQsMS40OS0yLjUsMy4wMS4xNCwxLjUyLDEuNDksMi42NCwzLjAxLDIuNTEsMS41Mi0uMTQsMi42NC0xLjQ5LDIuNS0zLjAxWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjEiIGQ9Im03MzYsMTA1Ni44M2MtLjE0LTEuNTItMS40OC0yLjY0LTMuMDEtMi41LTEuNTIuMTQtMi42NCwxLjQ4LTIuNSwzLjAxLjE0LDEuNTIsMS40OCwyLjY0LDMsMi41LDEuNTItLjE0LDIuNjQtMS40OSwyLjUtMy4wMVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNzAxLjcsMTA2MC41NmMtLjI4LjAyLS41OC0uMDItLjg1LS4xNi0uOC0uMzktMS4xNC0xLjM2LS43NS0yLjE2LDEuMTctMi40Myw1LjA5LTYuMzYsMTEuNTQtMy44NC44My4zMywxLjI1LDEuMjcuOTIsMi4xLS4zMy44NC0xLjI3LDEuMjUtMi4xLjkyLTUuMjktMi4wNy03LjM2LDIuMDUtNy40NCwyLjIzLS4yNi41My0uNzcuODYtMS4zMS45MVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNzI3LjE0LDEwNTMuOWMtLjI4LjAzLS41OC0uMDItLjg1LS4xNS0uODEtLjM5LTEuMTQtMS4zNi0uNzYtMi4xNywxLjE3LTIuNDMsNS4wOS02LjM2LDExLjU0LTMuODQuODMuMzMsMS4yNSwxLjI3LjkyLDIuMS0uMzMuODMtMS4yNywxLjI1LTIuMS45Mi01LjI5LTIuMDctNy4zNiwyLjA1LTcuNDQsMi4yMy0uMjYuNTMtLjc3Ljg2LTEuMzEuOTFaIi8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy0xOCIgcG9pbnRzPSI2NzkuMjggMTA1Mi4xOCA2ODkuMTMgMTA3MS40OCA2OTQuNDEgMTA2OS45MSA2OTUuMjkgMTA0My43OCA2NzkuMjggMTA1Mi4xOCIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im02OTUuMTksMTA2OS4yYy0uNTctLjkxLTEuNDctMS41Ny0yLjUtMS44OC0yLjEyLS42NC01LjgtMS4yMS04LjA2LDEuNS0zLjMsMy45Nyw0Ljg5LDEyLjk0LDExLjY4LDcuNDksMCwwLDEuODgtMi4yNS0xLjEzLTcuMTFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yNyIgZD0ibTcyNy4wMywxMDcyLjY1Yy0yLjUzLDEuNTQtNS4wMS4zMi01LjA0LjMxLS4yNC0uMTItLjMzLS40MS0uMjEtLjY0LjEyLS4yNC40MS0uMzMuNjQtLjIxLjEyLjA2LDIuODgsMS4zNyw1LjI5LTEuMjYuMzktLjQzLjU5LS43Ni41OC0xLS4wMi0uMzMtLjQ1LS43Mi0xLjA1LTEuMjYtMS4zNy0xLjI0LTMuNjgtMy4zMS00LjgtOC4zNi0uMDYtLjI2LjExLS41Mi4zNy0uNTguMjYtLjA2LjUyLjExLjU3LjM3LDEuMDUsNC43NSwzLjEzLDYuNjEsNC41LDcuODUuNzQuNjcsMS4zMywxLjE5LDEuMzYsMS45My4wMy41Mi0uMjMsMS4wNC0uODMsMS43LS40NS41LS45Mi44Ny0xLjM5LDEuMTZaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTcxNi4zNywxMDc4LjY5czExLjM3LjM2LDE4LjE4LTMuNjFjMCwwLS45OCw4LjgtNy40NSwxMC4wOS02LjQ3LDEuMjgtMTAuNzQtNi40OC0xMC43NC02LjQ4WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTgiIGQ9Im03MzUuMjMsMTAzNC41OXM0LjUyLDIuNiw3LjIxLDIwLjQ3YzAsMC0uMzgtMjAuMTYtMi44MS0yMi4xNi0yLjQzLTItNC40LDEuNjktNC40LDEuNjlaIi8+CiAgICAgIDwvZz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xOCIgZD0ibTY4Ni45OSwxMDE1LjAzYzUuOTEtNi42MiwxNi43OC02LjA1LDIzLjgtMTEuNDgtMi4yMyw0LjU1LTUuMyw4LjY4LTkuMDMsMTIuMTEsMTAuNDItMy4wMiwyMC44NC02LjA0LDMxLjI2LTkuMDYtMy4yMSwzLjI2LTYuNzQsNi4yMS0xMC41Myw4Ljc4LDguMTIuNywxNi4zLjY1LDI0LjQxLS4xNS44LDEuMjUuMjcsMi44OS0uMjksNC4yNy0zLjA0LDcuNTQtNi44LDE1LjgzLTE0LjM0LDE4Ljg4LTIuMzQuOTUtNC44OCwxLjMtNy40LDEuNDMtOS45Ny41NC0yMC45OS0xLjkxLTI5LjI0LDMuNzMtMy44MiwyLjYxLTguNTcsMTEuNjctMTQuMDEsMTAuMzYtNC44NS0xLjE2LTEyLjk0LTE4LjM1LDUuMzgtMzguODhaIi8+CiAgICA8L2c+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIzIiBkPSJtNzU4LjIyLDExMTYuOGMyNi43LDYuMTIsNTQuNzksNjAuNDcsNjguMTIsNjkuMTUsMTMuNyw4LjkyLDczLjM3LDEyLjg0LDczLjM3LDEyLjg0bC0xMi45MywyMC4xOHMtNjQuMDksNy4wOC04Mi43NS44M2MtMTEuNTMtMy44Ni0zMC41NS0xOS4zNi0zNi4yMy0yNy40OS0yNS4xMy0zNi05LjU5LTc1LjUyLTkuNTktNzUuNTJaIi8+CiAgICA8Zz4KICAgICAgPHJlY3QgY2xhc3M9ImNscy0xOCIgeD0iNzkyLjk1IiB5PSIxMDY3Ljc0IiB3aWR0aD0iMTYuMjciIGhlaWdodD0iMzYxLjg1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjMxLjg2IDE5LjU1KSByb3RhdGUoNjYuNzQpIi8+CiAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtMjkiIHBvaW50cz0iNjM4LjUgMTMyOS4wOSA2MzEuMDYgMTMxMS4yNSA3NjAuNjYgMTI1NS41MiA3NjguMTEgMTI3My4zNiA2MzguNSAxMzI5LjA5Ii8+CiAgICAgIDxnIGNsYXNzPSJjbHMtMzIiPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjUiIGQ9Im0xMDQ4LjMzLDk3My45M2M3OC41MS0zMy43NiwxNjkuNTEsMi41MiwyMDMuMjcsODEuMDMsMzMuNzUsNzguNTEtMi41MiwxNjkuNTEtODEuMDMsMjAzLjI3LTc4LjUxLDMzLjc1LTE2OS41MS0yLjUyLTIwMy4yNy04MS4wMy0zMy43NS03OC41MSwyLjUzLTE2OS41MSw4MS4wMy0yMDMuMjdaIi8+CiAgICAgIDwvZz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xOCIgZD0ibTk1OS43OSwxMTgwLjQzYzM1LjQ4LDgyLjUyLDEzMS40OCwxMjAuNzksMjE0LjAxLDg1LjMxLDgyLjUyLTM1LjQ4LDEyMC43OS0xMzEuNDgsODUuMzEtMjE0LjAxLTM1LjQ4LTgyLjUyLTEzMS40OC0xMjAuNzktMjE0LjAxLTg1LjMxLTgyLjUyLDM1LjQ4LTEyMC43OSwxMzEuNDgtODUuMzEsMjE0LjAxWm05MC4xNy0yMDIuN2M3Ni40MS0zMi44NSwxNjQuOTksMi40NiwxOTcuODQsNzguODcsMzIuODUsNzYuNDEtMi40NiwxNjQuOTktNzguODcsMTk3Ljg0LTc2LjQxLDMyLjg1LTE2NC45OS0yLjQ2LTE5Ny44NC03OC44Ny0zMi44NS03Ni40MSwyLjQ2LTE2NC45OSw3OC44Ny0xOTcuODRaIi8+CiAgICA8L2c+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtOTEwLjc5LDEyMTkuOXMtNy44NS0xNi40MS01LjY5LTE3LjgxYzIuMTYtMS4zOSwxMS4xNCw5LjkyLDExLjA3LDkuNy0uMDctLjIyLTcuNDctMTMuNTYtNS4yNS0xNi40LDIuMjItMi44NCwxMS45NiwxMC42NCwxMS45NiwxMC42NCwwLDAtNy44NS0xMi02LjIzLTEzLjg3LDEuNjItMS44NiwxMC40LDguOCwxMS4xNSw4LjIyLjc1LS41OC03LjQ4LTkuMTgtNS41Ni0xMS41OCwxLjkyLTIuNCwxMy45OSw5LjI3LDEzLjI2LDEyLjY3LS43MywzLjQtNC4yOCwzLjQxLTQuMjgsMy40MSwwLDAtMS44NCw1LjU2LTUuMDMsNS45NywwLDAtNS4wNiw2LjIxLTguMiw0LjUzLDAsMC0xLjgzLDYuNzctNy4yMiw0LjUyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMCIgZD0ibTY4Ni4zMSwxMjY3Ljc0czE1LjgsMS44NiwyMS4zOCwyLjk4YzUuNTgsMS4xMiwxMS44My0xLjkzLDEyLjMsMS4zNC40NywzLjI3LTEwLjI1LDUuNTMtMTAuMjUsNS41MywwLDAsOS4wNyw3LjIxLDEyLjIsOXM1LjgyLDQuNjUsMy45LDYuNDdjLTMuNzIsMy41Mi0xMi42OC00LjkzLTEyLjY4LTQuOTMsMCwwLDEyLjg0LDUuODcsOS41NSw5LjIzLTIuNzQsMi44LTE1LjUzLTQuOC0xNS41My00LjgsMCwwLDEyLjA0LDMuNjYsMTIuMjEsNi41OS4wOSwxLjYzLS4wNywyLjQ0LTUuMDIsMS4yNC01LjU1LTEuMzUtNS4yNS0xLjI4LTUuMjUtMS4yOCwwLDAsMy4wMSwxLjIyLDMuODIsMy43Mi41OSwxLjgyLS42MywzLjc4LTcuMTcsMS4xNy03LjktMy4xNi0yMi4wOC0xNC4wMS0yNy4wNC0yMi43NWw3LjU4LTEzLjUyWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMyIgZD0ibTY1Ny4zMSwxMTIzLjA4Yy0zMy4wOSwxNS43Ni01OC43OSw5Mi44Ny01MC4xNCwxMTUuNDMsMTAuMTIsMjYuNDMsNjkuMSw0Ny4xNSw2OS4xLDQ3LjE1bDE0LjA5LTI1LjEycy00My41OS0yNS45OS00My43My0zMC45NWMtLjItNy4yMSwyOC41My00My41MywyOC41My00My41M2wtMTcuODQtNjIuOThaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIxIiBkPSJtNjc2LjI2LDEyODYuMDVjLjE0LDAsLjI3LS4wNy4zNC0uMmwxNC4wOS0yNS4xMmMuMS0uMTguMDQtLjQxLS4xMy0uNTJsLTMzLjA0LTIxLjIyYy0uMTgtLjEyLS40Mi0uMDYtLjU0LjEyLS4xMi4xOC0uMDYuNDIuMTIuNTRsMzIuNzMsMjEuMDMtMTMuNzQsMjQuNS0xMi45Mi01LjE2Yy0uMi0uMDgtLjQzLjAyLS41MS4yMi0uMDguMi4wMi40My4yMi41MWwxMy4yMyw1LjI5cy4xLjAzLjE1LjAzWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yMSIgZD0ibTc4NS4wMiwxMjA5LjA1cy4wMywwLC4wNCwwYy4yMS0uMDIuMzctLjIxLjM1LS40M2wtMi43NS0yOC4wN2MtLjAyLS4yMS0uMjItLjM2LS40My0uMzUtLjIxLjAyLS4zNy4yMS0uMzUuNDNsMi43NSwyOC4wN2MuMDIuMi4xOS4zNS4zOS4zNVoiLz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTM2LjQzIiB5PSI4MDYuMDgiIHdpZHRoPSIxMjAuMzQiIGhlaWdodD0iNDEzLjE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NTM4Ljk2IDE2MTUuOTIpIHJvdGF0ZSgxNjkuNjkpIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Im0yMjQ1LjM4LDExMjMuMTljLTIuNzktMTUuMzMtMTcuNDctMjUuNDktMzIuOC0yMi43LTE1LjMzLDIuNzktMjUuNDksMTcuNDctMjIuNywzMi44LDIuNzksMTUuMzMsMTcuNDcsMjUuNDksMzIuOCwyMi43LDE1LjMzLTIuNzksMjUuNDktMTcuNDcsMjIuNy0zMi44WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0ibTIyMTcuNjQsMTE1OS42Yy0xNC43OCwwLTI3Ljk0LTEwLjU3LTMwLjY4LTI1LjYxLTEuNDktOC4yLjMtMTYuNDgsNS4wNC0yMy4zMyw0Ljc0LTYuODUsMTEuODctMTEuNDQsMjAuMDctMTIuOTMsMTYuOTItMy4wOCwzMy4xOSw4LjE4LDM2LjI3LDI1LjExaDBjMy4wOCwxNi45Mi04LjE5LDMzLjE5LTI1LjExLDM2LjI3LTEuODguMzQtMy43NS41MS01LjU5LjUxWm0uMDItNTYuNDJjLTEuNDksMC0zLC4xMy00LjUyLjQxLTYuNjMsMS4yLTEyLjM5LDQuOTItMTYuMjIsMTAuNDYtMy44Myw1LjU0LTUuMjgsMTIuMjQtNC4wOCwxOC44NywyLjQ5LDEzLjY4LDE1LjY0LDIyLjc4LDI5LjMzLDIwLjMsMTMuNjgtMi40OSwyMi43OS0xNS42NCwyMC4zLTI5LjMzaDBjLTIuMjEtMTIuMTYtMTIuODUtMjAuNzEtMjQuOC0yMC43MVoiLz4KICAgIDxnIGNsYXNzPSJjbHMtMzEiPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjIxNDguNTUiIHk9IjgyNi4xNSIgd2lkdGg9IjcwLjQ3IiBoZWlnaHQ9IjIzMi4yNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDUwMC45MyAxNDc4LjU3KSByb3RhdGUoMTY5LjY5KSIvPgogICAgPC9nPgogICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIyMTM4LjM4IiB5PSI4MzYuMzQiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI5LjMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NDQ0LjgzIDEyODEuMDYpIHJvdGF0ZSgxNjkuNjkpIi8+CiAgICA8Zz4KICAgICAgPHJlY3QgY2xhc3M9ImNscy0yNSIgeD0iMjE4MC4yNCIgeT0iMTAwMS41MSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MTMuNzMgMzM1NC4zNikgcm90YXRlKC0xMDAuMzEpIi8+CiAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxNjguNDUiIHk9IjkzNi43MSIgd2lkdGg9IjUyLjUzIiBoZWlnaHQ9IjQuNjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2NjMuNTggMzI2Ni4zNykgcm90YXRlKC0xMDAuMzEpIi8+CiAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMjUiIHg9IjIxNTMuOTYiIHk9IjEwMDYuMjkiIHdpZHRoPSI1Mi41MyIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTc4IDMzMzQuMTMpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTQyLjE4IiB5PSI5NDEuNDkiIHdpZHRoPSI1Mi41MiIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjI3Ljg3IDMyNDYuMTUpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTU5LjY3IiB5PSI5OTcuMTUiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjAxLjczIDMzMzUuNjQpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTI1IiB4PSIyMTQ0Ljg2IiB5PSI5MTUuNjkiIHdpZHRoPSI2Ni4wNCIgaGVpZ2h0PSI0LjY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY0LjQyIDMyMjUuMDIpIHJvdGF0ZSgtMTAwLjMxKSIvPgogICAgPC9nPgogIDwvZz4KICA8Zz4KICAgIDxnPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTIwIiBkPSJtMjI3MC45MiwxNDYwLjM0czQuNTcsMzIuMjMsNC4zNSwzMi41OWMtLjIxLjM2LDEuNzIsMy42NSwxLjcyLDMuNjVsOC4wMSwxLjc5LDcuNTEtMy4wOHMtNC43Mi0zMC40OC0zLjc5LTM0LjJjLjkzLTMuNzItMTcuODEtLjc1LTE3LjgxLS43NVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjI5Mi41MiwxNDk1LjI5cy05LjQ0LDIuODctMTcuMTctMi44NmMwLDAtMzEuNDgsMTAuMzItMzAuOSwxOS4xOSwwLDAtMS40MywyLjU4LDEyLjAyLDIuNTcsMTMuNDUsMCwzNC4zNS4yNywzNC45Mi0uMDEuNTctLjI5LDMuMTQsMS4yNCwxLjE0LTE4Ljg5WiIvPgogICAgPC9nPgogICAgPGc+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0yMzgxLjk0LDE0NTguNDZzOS41NCwzMS4xMiw5LjM4LDMxLjUxYy0uMTYuMzksMi4yNywzLjM0LDIuMjcsMy4zNGw4LjE5LjUxLDYuOTQtNC4yMnMtOS40Mi0yOS4zNy05LjA4LTMzLjE5Yy4zNC0zLjgyLTE3LjcxLDIuMDQtMTcuNzEsMi4wNFoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjQwOC43MiwxNDg5LjZzLTguODgsNC4zMS0xNy40MS0uMTRjMCwwLTI5LjQ4LDE1LjEtMjcuNTMsMjMuNzgsMCwwLTEuMDEsMi43NywxMi4yOC42NiwxMy4yOS0yLjEsMzMuOTctNS4wOSwzNC40OS01LjQ2LjUyLS4zNywzLjMuNzQtMS44My0xOC44NFoiLz4KICAgIDwvZz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtNSIgZD0ibTIzNjguNjUsMTIwMy42N2wtMTE3LjI0LTQuMDFzLTEzLjc3LDg0LjczLDEwLjQ3LDI4NS4yNWgzNi4zNnM3LjcxLTIwNi41MywxNC4zMi0yMTguNGM2LjYxLTExLjg3LDI5Ljc1LDEyOS4xNiw2Ni4xMSwyMTMuOTlsMzMuMDUtOS45MnMtMjkuNzUtMTQ4Ljc0LTM0LjE2LTE4Ny4zYy00LjQxLTM4LjU2LTguOTEtNzkuNjItOC45MS03OS42MloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0yMTM3LjUxLDEwMDUuMjlzLTYuMjQtMy42NS03LjEyLTMuOWMtLjg5LS4yNS0yLjExLjA2LDEuNzEsNC4xMiwzLjgyLDQuMDYsMTQuNzIsOS4yOSwyMS4wOCwxMS4wNGw4LjE3LTcuOTZzLTQuNjItNi45Mi02LjI0LTEwLjI5Yy0xLjYyLTMuMzctNC45My04LjMtNi4zMS02LjgxLTEuMjksMS4zOSwyLjIyLDcuMjcsMi4yMiw3LjI3LDAsMC00LjE3LTIuNjQtNS44MS00LjM0LTEuNjQtMS43LTguNzctOC42My0xMC41NS02Ljk1LTEuMjYsMS4xOSw3LjE5LDkuOTIsNy4xOSw5LjkyLDAsMC0xMC44NS0xMC4xNC0xMi4wMy04LjE2LTEuMiwyLjAzLDEwLjE4LDEyLjY3LDEwLjE4LDEyLjY3LDAsMC02LjUzLTQuODQtNy44NC03LjMyLS4yMy0uNDMtMi4zLDIuODMsMCw1LjI2bDUuMzUsNS40NFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0ibTIzMTkuOTgsOTcyLjQ4Yy4yNywwLC41My0uMDUuNzgtLjE4LjcxLS4zOC45Mi0xLjI0LjQ3LTEuOTItMS4zNi0yLjA1LTUuNDUtNS4yNy0xMS4xOC0yLjc0LS43NC4zMy0xLjAyLDEuMTctLjYzLDEuODcuNC43MSwxLjMyLDEuMDIsMi4wNi42OSw0LjcxLTIuMDgsNy4wOCwxLjQsNy4xOCwxLjU1LjMuNDUuODEuNzEsMS4zMy43MloiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjAiIGQ9Im0yMzExLjQsOTY0LjA2aC4wM2MuMDYtLjMxLjEyLS42NC4xOS0uOTYsMy4yNy0xNC4zNywxOS4xMy0yMi42NCwzNC44My0xNy43NSwxMy4wOCw0LjA3LDIxLjcyLDE2LjQxLDIwLjE5LDI4LjgzLS41Nyw0LjYxLTIuNCw4LjY3LTUuMTEsMTItMy44Niw1LjIyLTcuMjMsOS42OC0xMC41MywxMy4yNS01LjQ2LDUuOTEtOC41LDEzLjUtOC44MywyMS40OWwtLjM0LDcuODFjLTE4LjY0LDQuMDQtMjUuNTgtNS42My0yNS41OC01LjYzbDMuMy0xMi40NmMuMjktMS40NS0uNjktMi45Mi0yLjI0LTMuNC0uMDEsMC0uMDIsMC0uMDMsMC0yMy40OS03LjMzLTcuMTctMjQuMzQtNS45LTQzLjE3WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjM1NC40Miw5NjAuNjlsMTEuNiwxNi43Yy0uODgsMy4zLTIuNDIsNi4yNi00LjQ4LDguNzktMy44Niw1LjIyLTcuMjMsOS42OC0xMC41MywxMy4yNS0yLjI4LDIuNDctNC4xMSw1LjI0LTUuNTIsOC4yLDAsMC0uMDIsMC0uMDMsMC00LjEzLjQ1LTIzLjgtOS4yMi0yNC4wOC0xMy4wNS0uMjgtMy44Miw2Ljc1LTE1Ljc3LS40My0xNy4wNy02Ljc1LTEuMjItNC4yMS0yMi40NC00LjIxLTIyLjQ0bDE4LjIxLTEuMDksMTkuNDcsNi42OVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMjgiIGQ9Im0yMzIzLjI4LDk4MC40OWMtLjA2LS45NC0uNTItMS44My0xLjIzLTIuNTMtMS40Ny0xLjQ0LTQuMjctMy41NC03LjMzLTIuNTYtNC40OSwxLjQ0LTEuNjksMTEuODQsNi4zNCwxMC44OCwwLDAsMi41NS0uODIsMi4yMS01Ljc5WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJtMjM3MS41NSw5NjMuNzFjLS4zNy0yLjk5LTEuMTEtNS45NS0xLjg0LTguOS0uMzctMS40OC0uNzQtMi45NS0xLjA2LTQuNDMtLjIyLTEuMDQtLjE3LTMuMTItMS4yMi0zLjg1LTEuMzMtLjkzLTIuNzcsMi4yNC0yLjg5LDMuMDItLjI4LDEuODIuNDIsMy43My4zNSw1LjU3LjE4LTQuOTYtNS4zNy05LjQ0LTkuNDEtMTIuMDgtNC40NS0yLjktOS40Ni01LjE3LTE0LjM2LTcuMjctMS4xMy0uNDgtMi4yOS0uOTYtMy41MS0xLjAzLTQuMzUtLjI1LTIuNzUsMy4wOS0xLjc0LDUuMjYuMDMuMDctMy4zNy0uNjYtMy43NC0uNzYtNC43My0xLjIyLTkuNzctLjkyLTE0LjEuODUtMS41Mi42Mi0yLjk1LDIuMDItMS42MiwzLjYzLjc5Ljk2LDIuMjgsMS41NywzLjU0LDEuNjQtMi45Ny0uMTYtNi4wOC4wNC04Ljc4LDEuMS0xLjY5LjY2LTQuMTYsMi00LjQ3LDMuODgtLjMsMS44NiwxLjc1LDMuNDMsMy4zOCw0LjIxLDQuMjgsMi4wNyw5LjMsMi4zLDEzLjgxLDMuNzEsNS4wMiwxLjU3LDkuODMsMy43NywxNC4yNCw2LjU4LDMuNjQsMi4zMiw3LDUuMDMsMTAuNjMsNy4zNiwzLjA2LDEuOTYsNi4zMSwzLjY0LDkuNjEsNS4xOSwyLjIsMS4wMyw1Ljg4LDMuNzYsNy44MywyLjAzLDQuMjQtMy43NSw2LjAzLTEwLjI1LDUuMzYtMTUuNzFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Im0yMzU1LjY5LDEwMzUuODljLTExLjA5LTguMi0yMS4wNC0xMC45MS0zNC43Ni0xMi4zNS0xMC45Mi0xLjE0LTI0LjU4LTEuOS0zNC42Ni0uMjEtMTMuODUsMi4zMi01MC41OSwxMy4yMy02NS40NCwxMi45MS0xOC4xLS4zOC02MS41Ni0zMC44NC02MS41Ni0zMC44NGwtNy4yMSwxMi45M3MxOS4yMyw0NS45OCw1MC44MSw1Mi41YzMxLjU4LDYuNTIsNTcuNTIsNi43Niw1Ny41Miw2Ljc2bC0xMi45MywxMzMuNjVzNjAuMjcsMjQuMTUsMTI0LjM1LTMuNzZjMCwwLS41OC01Ny4wNy0uMTItMTEzLjg3LjIxLTI1LjktMi4zNy00Ny42Ni0xNi01Ny43MloiLz4KICA8L2c+CiAgPHJlY3QgY2xhc3M9ImNscy0xNCIgeD0iMTQwNS4yNCIgeT0iMTMwMC45MyIgd2lkdGg9IjE0OS4yOCIgaGVpZ2h0PSI0NC4yMiIvPgogIDxnPgogICAgPHJlY3QgY2xhc3M9ImNscy0zMCIgeD0iMTQxOS44IiB5PSIxMzEwLjY5IiB3aWR0aD0iNDcuNiIgaGVpZ2h0PSIyLjY1Ii8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNDc0LjkiIHk9IjEzMTAuNjkiIHdpZHRoPSI0Ny42IiBoZWlnaHQ9IjIuNjUiLz4KICAgIDxyZWN0IGNsYXNzPSJjbHMtMzAiIHg9IjE0MTkuOCIgeT0iMTMyMC42MyIgd2lkdGg9IjQ3LjYiIGhlaWdodD0iMi42NSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0zMCIgeD0iMTQxOS44IiB5PSIxMzMwLjU3IiB3aWR0aD0iNDcuNiIgaGVpZ2h0PSIyLjY1Ii8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNDc0LjkiIHk9IjEzMjAuNjMiIHdpZHRoPSI0Ny42IiBoZWlnaHQ9IjIuNjUiLz4KICA8L2c+CiAgPHJlY3QgY2xhc3M9ImNscy0xNCIgeD0iMTYyOC40OCIgeT0iMTI3MS43OCIgd2lkdGg9IjY3Ljg5IiBoZWlnaHQ9IjIwLjExIi8+CiAgPGc+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjM1LjEiIHk9IjEyNzYuMjIiIHdpZHRoPSIyMS42NSIgaGVpZ2h0PSIxLjIxIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjYwLjE2IiB5PSIxMjc2LjIyIiB3aWR0aD0iMjEuNjUiIGhlaWdodD0iMS4yMSIvPgogICAgPHJlY3QgY2xhc3M9ImNscy0zMCIgeD0iMTYzNS4xIiB5PSIxMjgwLjc0IiB3aWR0aD0iMjEuNjUiIGhlaWdodD0iMS4yIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjM1LjEiIHk9IjEyODUuMjYiIHdpZHRoPSIyMS42NSIgaGVpZ2h0PSIxLjIxIi8+CiAgICA8cmVjdCBjbGFzcz0iY2xzLTMwIiB4PSIxNjYwLjE2IiB5PSIxMjgwLjc0IiB3aWR0aD0iMjEuNjUiIGhlaWdodD0iMS4yIi8+CiAgPC9nPgo8L3N2Zz4=" favicon_image: 'https://dev.opencatalogi.nl/static/logo_OpenCatalogi-8b1b0a001c3f37dae4d3f69b5964ec72.png' page_title: "OpenCatalogi Documentatie" From e01b47a9fa3cf49980380df83a76acd145f44775 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 11:10:05 +0200 Subject: [PATCH 03/10] projecten spellcheck --- docs/Projecten.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/Projecten.md b/docs/Projecten.md index edc5112..58f6283 100644 --- a/docs/Projecten.md +++ b/docs/Projecten.md @@ -1,35 +1,35 @@ # Projecten -Naast de generieke organisatie zijn er een aantal project groepen actief met (deel) projecten aan de hand van open catalogi. +Naast de generieke organisatie zijn er een aantal projectgroepen actief met (deel)projecten aan de hand van OpenCatalogi. ## Core **Product Owner**: [Ronald van Cortenberghe](mailto:r.vancortenberghe@rotterdam.nl)(Gemeente Rotterdam) -Het core project faciliteerd de architectuur, standaard, kern componenten en communicatie van Open catalogi +Het core project faciliteert de architectuur, standaard, kerncomponenten en communicatie van Opencatalogi. ## Software Catalogus **Product Owner**: [Ronald van Cortenberghe](mailto:r.vancortenberghe@rotterdam.nl)(Gemeente Rotterdam) -Van oorsprong is het Open Catalogi als project begonnen om een alternatief te bieden voor de [commonground componenten catalogus]() (wat later het [portfolio](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc) werdt) waarbij het niet langer noodzakenlijk is om infortmatie te brengen. +Van oorsprong is het OpenCatalogi als project begonnen om een alternatief te bieden voor de [Common Ground componentencatalogus](https://componentencatalogus.commonground.nl/) (wat later het [portfolio](https://app.powerbi.com/view?r=eyJrIjoiOWU4MjlmYTktNjE2MS00OGRhLTgwMjYtZWZhNTFhZmRhZjI2IiwidCI6IjZlZjAyOWFiLTNmZDctNGQ5OC05YjBlLWQxZjVmZWRlYTZkMSIsImMiOjh9&pageName=ffe4f1f9018d7bd035bc) werd), waarbij het niet langer noodzakelijk is om informatie te brengen. -In plaatsdaarvan wordt deze opgehaald aan de hand van een publiccode.yaml bestand dat in de repository wordt geplaats. Makkenlijk kunnen we het niet maken, de codebase maakt daarmee zichzelf kenbaar en vindbaar en alle beschrijving blijft daar waard die hoor, bij de bron (code). +In plaats daarvan wordt deze opgehaald aan de hand van een `publiccode.yaml`-bestand dat in de repository wordt geplaatst. Makkenlijker kunnen we het niet maken, de codebase maakt daarmee zichzelf kenbaar, vindbaar en alle beschrijvingen blijven daar waar die hoort, bij de bron(code). -Vanuit dit project wordt beschickbaar gesteld +Vanuit dit project wordt beschikbaar gesteld: -- Verschillende metadata definities +- Verschillende metadatadefinities - publiccode - publiccode.service Objecten voor het aanbieden van een service (dienst) op een software pakket -- Een github catalogus voor applicaties en componenten gevonden op github -- Een gitlab catalogus voor applicaties en componenten gevonden op github -- Een componenten catalogus voor commonground beschrijvingen over gevonden componenten -- Een [git service]() beschickbaarbaar gesteld die automatisch [github]() en [gitlab]() afzoekt naar repositories die een publiccode bevatten en die deze opneemt in de +- Een GitHub-catalogus voor applicaties en componenten gevonden op GitHub +- Een GitLab-catalogus voor applicaties en componenten gevonden op GitLab +- Een componentencatalogus voor Common Ground-beschrijvingen over gevonden componenten +- Een [Git service]() beschikbaar gesteld die automatisch [GitHub](https://github.com/) en [GitLab](https://about.gitlab.com/) afzoekt naar (geïndexeerde) repositories die een `publiccode.yaml` bevatten en die deze opneemt in OpenCatalogi. ## Generieke datalandschap **Product Owner**: [Ronald Kok](mailto:rdw.kok@rotterdam.nl)(Gemeente Rotterdam) -Het beschickbaar stellen van high value datasets voor de t.b.v. (WHO)[] +Het beschikbaar stellen van high value datasets voor de t.b.v. (WHO)[] -- De metadata defintie DCAT +- De metadatadefintie DCAT ## Regels.overheid.nl @@ -38,16 +38,16 @@ Het beschickbaar stellen van high value datasets voor de t.b.v. (WHO)[] ## OpenWoo.app **Product Owner**: [Ruben van der Linde](mailto:ruben@conduction.nl)(Conduction) -Het doorzoekbaar maken van data t.b.v. (WOO)[] +Het doorzoekbaar maken van data t.b.v. [Woo](https://www.rijksoverheid.nl/onderwerpen/wet-open-overheid-woo) -- Verschillende metadata definities - - Woo verzoeken en convenanten -- Een service voor het ophalen van Woo gegevens uit zaaksystemen -- Een service voor het ophalen van Woo gegevens uit raads informatie systemen +- Verschillende metadatadefinities + - Woo-verzoeken en - convenanten +- Een service voor het ophalen van Woo-gegevens uit zaaksystemen +- Een service voor het ophalen van Woo-gegevens uit raadsinformatiesystemen -## Een deel project opstarten +## Een deelproject opstarten -Wil je zelf aan de hand van open catalogi een eigen project opstarten? en hierbij terugleveren aan de open catalogi gemeenschap? Dan kan je een deel project opstarten. Neem daarvoor contact op met [jaap.vanvliet@dimpact.nl](mailto:jaap.vanvliet@dimpact.nl). Van een deel project verwachten we: +Wil je zelf aan de hand van OpenCatalogi een eigen project opstarten? en hierbij terugleveren aan de OpenCatalogi gemeenschap? Dan kan je een deel project opstarten. Neem daarvoor contact op met [jaap.vanvliet@dimpact.nl](mailto:jaap.vanvliet@dimpact.nl). Van een deel project verwachten we: -- Bijdragen aan de algemene ontwikkeling van Open Catalogi -- Aanwezigheid van de product owner bij de community meetings (ider kwartaal) +- Bijdragen aan de algemene ontwikkeling van OpenCatalogi +- Aanwezigheid van de product owner bij de community meetings (ieder kwartaal) From 6f2b99eddc349ddd1655a5890194d3f5fa16b10b Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 11:32:53 +0200 Subject: [PATCH 04/10] tempaltes in het nederlands en kleine aanpassingen --- .github/ISSUE_TEMPLATE/Architectuur.yml | 47 ++++++++++------------ .github/ISSUE_TEMPLATE/Functionaliteit.yml | 40 +++++++++--------- .github/ISSUE_TEMPLATE/bug.yml | 42 +++++++++---------- 3 files changed, 62 insertions(+), 67 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Architectuur.yml b/.github/ISSUE_TEMPLATE/Architectuur.yml index 209d727..141d3dd 100644 --- a/.github/ISSUE_TEMPLATE/Architectuur.yml +++ b/.github/ISSUE_TEMPLATE/Architectuur.yml @@ -1,7 +1,7 @@ -name: Feature request -description: Request a feature -title: "[feature]: As a user I want ....." -labels: [feature-request] +name: Architectuur Vraag/Voorstel +description: Stel een vraag of doe een voorstel over de standaard +title: "[architectuur]: Als een [gebruikersrol] wil ik [functionaliteit], zodat [waardetoevoeging]" +labels: [architecture] assignees: - rubenvdlinde - RonaldvCortenberghe @@ -9,21 +9,21 @@ body: - type: markdown attributes: value: | - Before proposing a new feature, please ensure to double-check our backlog to avoid duplications. We structure our user stories in an[agile format](https://www.agilealliance.org/glossary/user-story-template/) + Voordat je een nieuwe vraag stelt of een voorstel indient, controleer dan eerst onze backlog om duplicaties te voorkomen. We structureren onze user stories in een [agile formaat](https://www.agilealliance.org/glossary/user-story-template/) - - Include the *Who* in the title. For instance, `As a user, I want …` - - Incorporate the *What* into the title as well. For example, `… a robust site map` - - Define the *Why* in the first paragraph of the user story + - Vermeld de *Wie* in de titel. Bijvoorbeeld, `Als een gebruiker wil ik ...` + - Verwerk de *Wat* ook in de titel. Bijvoorbeeld, `... een duidelijke standaard` + - Definieer de *Waarom* in de eerste alinea van de user story --- - We appreciate the time you've taken to suggest a new feature. To expedite the processing of this request, we need certain details. + We waarderen de tijd die je neemt om een vraag te stellen of een voorstel te doen. Om de verwerking te versnellen, hebben we bepaalde details nodig. - type: textarea id: why attributes: - placeholder: "So ...." - label: What is the purpose of your request? Why is it necessary? - description: Provide a clear and precise description of the issue you're aiming to address.. + placeholder: "Dus ...." + label: Wat is het doel van je vraag of voorstel? Waarom is het noodzakelijk? + description: Geef een duidelijke en nauwkeurige beschrijving van het probleem of de verbetering die je wilt adresseren. validations: required: true - type: textarea @@ -33,28 +33,23 @@ body: 1. ... 2. ... 3. ... - label: The acceptance criteria for the proposed feature - description: Detail the conditions that, if met, would mean your request has been successfully implemented. + label: De acceptatiecriteria voor het voorstel + description: Beschrijf de voorwaarden waaraan moet worden voldaan om je vraag beantwoord of voorstel succesvol geïmplementeerd te beschouwen. validations: required: true - type: dropdown id: component-location attributes: - label: Implementation Area Include any other pertinent details or screenshots related to the feature request. - description: Where should this change occur? + label: Implementatiegebied + description: Waar moet deze wijziging plaatsvinden? options: - - Startpagina(Homepage) - - Componenten overzicht (zoekpagina) - - Componenten detailpagina - - Organisatie detailpagina - - Documentatiepagina's - - Beheerschermen - - API - - Somewhere else (please specify in the description) + - Architectuurdocumentatie + - Standaardenoverzicht + - Iets anders (specificeer dit in de beschrijving) validations: required: true - type: textarea id: context attributes: - label: Additional context - description: Include any other pertinent details or screenshots related to the feature request. \ No newline at end of file + label: Aanvullende context + description: Voeg alle andere relevante details of screenshots met betrekking tot je vraag of voorstel toe. diff --git a/.github/ISSUE_TEMPLATE/Functionaliteit.yml b/.github/ISSUE_TEMPLATE/Functionaliteit.yml index e90b863..d54429b 100644 --- a/.github/ISSUE_TEMPLATE/Functionaliteit.yml +++ b/.github/ISSUE_TEMPLATE/Functionaliteit.yml @@ -1,6 +1,6 @@ name: Functionele vraag -description: Een vraag over bestaande of nieuwe functionaliteit van een Open Catalogi component -title: "[archicture]: As a user I want ....." +description: Een vraag over bestaande of nieuwe functionaliteit van een OpenCatalogi component +title: "[architectuur]: Als een [gebruikersrol] wil ik [functionaliteit], zodat [waardetoevoeging]" labels: [feature-request] assignees: - rubenvdlinde @@ -9,21 +9,21 @@ body: - type: markdown attributes: value: | - Before proposing a new feature, please ensure to double-check our backlog to avoid duplications. We structure our user stories in an[agile format](https://www.agilealliance.org/glossary/user-story-template/) + Voordat je een nieuwe functie voorstelt, controleer dan onze backlog om duplicaties te voorkomen. We structureren onze user stories in een [agile formaat](https://www.agilealliance.org/glossary/user-story-template/) - - Include the *Who* in the title. For instance, `As a user, I want …` - - Incorporate the *What* into the title as well. For example, `… a robust site map` - - Define the *Why* in the first paragraph of the user story + - Vermeld de *Wie* in de titel. Bijvoorbeeld, `Als een gebruiker wil ik ...` + - Verwerk de *Wat* ook in de titel. Bijvoorbeeld, `... een robuuste site map` + - Definieer de *Waarom* in de eerste alinea van de user story --- - We appreciate the time you've taken to suggest a new feature. To expedite the processing of this request, we need certain details. + We waarderen de tijd die je neemt om een nieuwe functie voor te stellen. Om de verwerking van dit verzoek te versnellen, hebben we bepaalde details nodig. - type: textarea id: why attributes: - placeholder: "So ...." - label: What is the purpose of your request? Why is it necessary? - description: Provide a clear and precise description of the issue you're aiming to address.. + placeholder: "Dus ...." + label: Wat is het doel van je verzoek? Waarom is het noodzakelijk? + description: Geef een duidelijke en nauwkeurige beschrijving van het probleem dat je wilt aanpakken. validations: required: true - type: textarea @@ -33,28 +33,28 @@ body: 1. ... 2. ... 3. ... - label: The acceptance criteria for the proposed feature - description: Detail the conditions that, if met, would mean your request has been successfully implemented. + label: De acceptatiecriteria voor de voorgestelde functie + description: Beschrijf de voorwaarden waaraan moet worden voldaan om je verzoek als succesvol geïmplementeerd te beschouwen. validations: required: true - type: dropdown id: component-location attributes: - label: Implementation Area Include any other pertinent details or screenshots related to the feature request. - description: Where should this change occur? + label: Implementatiegebied + description: Waar moet deze wijziging plaatsvinden? options: - - Startpagina(Homepage) + - Startpagina - Componenten overzicht (zoekpagina) - - Componenten detailpagina - - Organisatie detailpagina + - Componentendetailpagina + - Organisatiedetailpagina - Documentatiepagina's - Beheerschermen - API - - Somewhere else (please specify in the description) + - Iets anders (geef dit aan in de beschrijving) validations: required: true - type: textarea id: context attributes: - label: Additional context - description: Include any other pertinent details or screenshots related to the feature request. \ No newline at end of file + label: Aanvullende context + description: Voeg alle andere relevante details of screenshots met betrekking tot het functieverzoek toe. diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 6f23ad4..d42c46a 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,5 +1,5 @@ -name: Bug report -description: File a bug report +name: Bugrapport +description: Meld een bug title: "[Bug]: " labels: [bug] assignees: @@ -9,56 +9,56 @@ body: - type: markdown attributes: value: | - Before opening a bug report, please search for the behaviour in the existing issues. + Voordat je een bugrapport opent, zoek dan eerst naar het gedrag in de bestaande issues. --- - Thank you for taking the time to file a bug report. To address this bug as fast as possible, we need some information. + Bedankt dat je de tijd neemt om een bugrapport in te dienen. Om deze bug zo snel mogelijk op te lossen, hebben we wat informatie nodig. - type: input id: os attributes: - label: Operating system - description: "Which operating system do you use? Please provide the version as well." + label: Besturingssysteem + description: "Welk besturingssysteem gebruik je? Geef ook de versie op." placeholder: "macOS Big Sur 11.5.2" validations: required: true - type: dropdown id: component-location attributes: - label: Project Location - description: Where did you find the bug? + label: Projectlocatie + description: Waar heb je de bug gevonden? options: - Frontend - Backend - - Somewhere else (please specify in the description!) + - Iets anders (specificeer dit in de beschrijving!) validations: required: true - type: dropdown id: installation attributes: - label: Instalation Location - description: Where is the project located? + label: Installatielocatie + description: Waar is het project geïnstalleerd? options: - - Local - - Remote - - Somewhere else (please specify in the description!) + - Lokaal + - Extern + - Iets anders (specificeer dit in de beschrijving!) validations: required: true - type: textarea id: bug-description attributes: - label: Bug description - description: What happened? + label: Bugbeschrijving + description: Wat gebeurde er? validations: required: true - type: textarea id: steps attributes: - label: Steps to reproduce - description: Which steps do we need to take to reproduce this error? + label: Stappen om te reproduceren + description: Welke stappen moeten we nemen om deze fout te reproduceren? - type: textarea id: logs attributes: - label: Relevant log output - description: If applicable, provide relevant log output. No need for backticks here. - render: shell \ No newline at end of file + label: Relevante log-output + description: Indien van toepassing, geef relevante log-output. Geen backticks nodig hier. + render: shell From 45ba6c3b2d9c62ebcf20e23d8449f0c6e05f1e08 Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:36:51 +0200 Subject: [PATCH 05/10] Update Functionaliteit.yml yaml niet valid --- .github/ISSUE_TEMPLATE/Functionaliteit.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Functionaliteit.yml b/.github/ISSUE_TEMPLATE/Functionaliteit.yml index d54429b..d25b25a 100644 --- a/.github/ISSUE_TEMPLATE/Functionaliteit.yml +++ b/.github/ISSUE_TEMPLATE/Functionaliteit.yml @@ -9,7 +9,7 @@ body: - type: markdown attributes: value: | - Voordat je een nieuwe functie voorstelt, controleer dan onze backlog om duplicaties te voorkomen. We structureren onze user stories in een [agile formaat](https://www.agilealliance.org/glossary/user-story-template/) + Voordat je een nieuwe functie voorstelt, controleer dan eerst onze backlog om duplicaties te voorkomen. We structureren onze user stories in een [agile formaat](https://www.agilealliance.org/glossary/user-story-template/) - Vermeld de *Wie* in de titel. Bijvoorbeeld, `Als een gebruiker wil ik ...` - Verwerk de *Wat* ook in de titel. Bijvoorbeeld, `... een robuuste site map` @@ -29,7 +29,7 @@ body: - type: textarea id: acceptance attributes: - placeholder:| + placeholder: | 1. ... 2. ... 3. ... @@ -45,12 +45,12 @@ body: options: - Startpagina - Componenten overzicht (zoekpagina) - - Componentendetailpagina - - Organisatiedetailpagina + - Componenten detailpagina + - Organisatie detailpagina - Documentatiepagina's - Beheerschermen - API - - Iets anders (geef dit aan in de beschrijving) + - Iets anders (specificeer dit in de beschrijving) validations: required: true - type: textarea From 7eec40e73259b67f507db54afc74d149fbf72e6d Mon Sep 17 00:00:00 2001 From: Mark West <66728126+MWest2020@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:38:45 +0200 Subject: [PATCH 06/10] Update Architectuur.yml --- .github/ISSUE_TEMPLATE/Architectuur.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Architectuur.yml b/.github/ISSUE_TEMPLATE/Architectuur.yml index 141d3dd..bde05f7 100644 --- a/.github/ISSUE_TEMPLATE/Architectuur.yml +++ b/.github/ISSUE_TEMPLATE/Architectuur.yml @@ -29,7 +29,7 @@ body: - type: textarea id: acceptance attributes: - placeholder:| + placeholder: | 1. ... 2. ... 3. ... From b4ae9300764efe34b972917e1825d74396e28718 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 12:23:17 +0200 Subject: [PATCH 07/10] architectuur links en spelling --- docs/handleidingen/Architectuur.md | 93 +++++++++++++++--------------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/docs/handleidingen/Architectuur.md b/docs/handleidingen/Architectuur.md index a0b49b5..01817b0 100644 --- a/docs/handleidingen/Architectuur.md +++ b/docs/handleidingen/Architectuur.md @@ -2,62 +2,64 @@ OpenCatalogi biedt een manier om meerdere catalogi samen te laten werken als één (virtuele) catalogus, waardoor gebruikers in alle of enkele catalogi tegelijk kunnen zoeken. Dit wordt gedaan door de [DCAT](https://joinup.ec.europa.eu/collection/semic-support-centre/solution/dcat-application-profile-data-portals-europe/release/300) standaard te combineren met zowel [JSON-LD](https://json-ld.org/) als [FSC](https://docs.fsc.nlx.io/introduction) om een API te creëren die gegevens levert van zowel enkele als meerdere catalogi. Bovendien zijn er meerdere front-end oplossingen die deze API gebruiken om een contextgerelateerde zoekinterface aan eindgebruikers te bieden (bijv. burgers, overheidsfunctionarissen, journalisten of onderzoekers). -In de zin van GEMMA/NORA architectuur geeft OpenCatalogi hiermee invulling aan het concept generieke publicatievoorziening. +In de zin van GEMMA/NORA-architectuur geeft OpenCatalogi hiermee invulling aan het concept generieke publicatievoorziening. ![UML Diagram van OpenCatalogi](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_simple.svg "UML Diagram van OpenCatalogi") -Als we vervolgens inzoemen op een catalogus bestaad die feitenlijk uit vier functionele delen (Beheer UI, Gebruikers UI, Beheer API, Zoeken API) en 2 opslag componenten (Zoekindex en Oojecten opslag). Daarbij is het interactie vlak van de API's gedefineerd in de Open Catalogi standaard([OAS]()) en het gedrag in [architectuur](). +Als we vervolgens inzoomen op een catalogus bestaat die feitelijk uit vier functionele delen (Beheer-UI, Gebruikers-UI, Beheer-API, Zoeken-API) en twee opslag componenten (Zoekindex en Objectenopslag). Daarbij is het interactievlak van de API's gedefinieerd in de OpenCatalogi-standaard(../../../Standaard.md) en het gedrag in [architectuur](). ![UML Diagram van OpenCatalogi](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_commonground.svg "UML Diagram van OpenCatalogi") -Het is aan applicaties zelf om hier vervolgens invulling aan te geven. Vanuit de Open catalogi community leveren we een aantal componenten die hier invulling aan geven. Hierbij hebben we er voor gekozen om de componenten in twee varianten te ontwikklen en een derde aan te bieden voor development en test doeleinden. +Het is aan applicaties zelf om hier vervolgens invulling aan te geven. Vanuit de OpenCatalogi community leveren we een aantal componenten die hier invulling aan geven. Hierbij hebben we er voor gekozen om de componenten in twee varianten te ontwikkelen en een derde aan te bieden voor development en test doeleinden. -- **Iedere component in een eigen container** Bedoeld voor grote organisaties die graag alles op kubernetes draaien -- **Alle componenten op één gemeenschappenlijk framework** Bedoeld voor kleine en middelgrote organisaties die gebruik amken van een (viruteel) linux serverpark of azure. -- **Alles in één applicatie** Bedoeld voor locale ontwikkeling en testen, niet bedoeld voor productie doeleinden. +- **Iedere component in een eigen container** Bedoeld voor grote organisaties die graag alles op Kubernetes draaien +- **Alle componenten op één gemeenschappelijk framework** Bedoeld voor kleine en middelgrote organisaties die gebruik maken van een (virtueel) Linux serverpark of Azure. +- **Alles in één applicatie** Bedoeld voor lokale ontwikkeling en testen, niet bedoeld voor productie doeleinden. -Om dit te realiseren is de onderlinggende code opgedeeld in meerdere libaries die door de verschillende verschijningsvormen worden gedeeld. Aan de hand van bovenstaande kunnen we redenlijk snel tot een applicatie weergave komen voor de gemiddelde overheid waarbij de volgende uitgangs punten doen: +Om dit te realiseren is de onderliggende code opgedeeld in meerdere libaries die door de verschillende verschijningsvormen worden gedeeld. Aan de hand van bovenstaande kunnen we redelijk snel tot een applicatie weergave komen voor de gemiddelde overheid waarbij de volgende uitgangspunten doen: -- Componenten voor laag 5 (interatie), 4 (Logica), en 2 (API) hosten we op kubernetes +- Componenten voor laag 5 (interactie), 4 (Logica), en 2 (API)  hosten we op Kubernetes - 1 (data) hosten we een dataplatform -- Externe catalogi hebben de seach API nodig voor zoeken en directory uitwisseling -- We hebben een synchronysaite service nodig die gegevens uit bron systeemen inleest +- Externe catalogi hebben de Seach-API nodig voor zoeken en directory uitwisseling +- We hebben een synchronisatie service nodig die gegevens uit bron systemen inleest - De gebruikersgroepen zijn Burger (inwoner, journalist, onderzoeker of raadslid), Medewerker en Beheerder -- De gemidelde overheid is een kleine overheid, dan zetten we nextcloud in om gemakenlijk te hosten +- De gemiddelde overheid is een kleine overheid, dan zetten we Nextcloud in om gemakkelijk te hosten -Dan komen we tot de volgende architectuurplaat +Dan komen we tot de volgende architectuurplaat: ![UML Diagram van OpenCatalogi](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components.svg "UML Diagram van OpenCatalogi") ## Basisconfiguratie -Het basisobject van OpenCatalogi is een catalogus. Elke catalogus is een verzameling publicaties. Publicaties vertegenwoordigen 'iets' dat moet worden gepubliceerd. Wat dat 'iets' is, wordt gedefinieerd door een metadatabeschrijving (gedefinieerd door een [schema.json](https://json-schema.org/)). Catalogi kunnen publicaties van verschillende typen bevatten (bijv. datasets van de [WHO](https://www.who.int/data/sets), verzoeken van de [WOO](https://www.rijksoverheid.nl/onderwerpen/wet-open-overheid-woo#:~:text=Is%20de%20informatie%20die%20je,dat%20aan%20je%20worden%20gemeld.), of repositories van [publiccode](https://docs.italia.it/italia/developers-italia/publiccodeyml-en/en/master/index.html)). Publicaties MOETEN bij ÉÉN catalogus horen, en elke catalogus MOET bij ÉÉN organisatie horen, wat betekent dat publicaties traceerbaar zijn naar organisaties via hun catalogus. +Het basisobject van OpenCatalogi is een catalogus. Elke catalogus is een verzameling publicaties. Publicaties vertegenwoordigen 'iets' dat moet worden gepubliceerd. Wat dat 'iets' is, wordt gedefinieerd door een metadatabeschrijving (gedefinieerd door een [schema.json](https://json-schema.org/)). Catalogi kunnen publicaties van verschillende typen bevatten (bijv. datasets van de [WHO](https://wetten.overheid.nl/BWBR0036795), verzoeken van de [Woo](https://www.rijksoverheid.nl/onderwerpen/wet-open-overheid-woo#:~:text=Is%20de%20informatie%20die%20je,dat%20aan%20je%20worden%20gemeld.), of repositories van [publiccode](https://docs.italia.it/italia/developers-italia/publiccodeyml-en/en/master/index.html)). Publicaties MOETEN bij ÉÉN catalogus horen, en elke catalogus MOET bij ÉÉN organisatie horen, wat betekent dat publicaties traceerbaar zijn naar organisaties via hun catalogus. -## API's -De API's van Open Catalogi zijn voor nu nog terug te vinden op https://conduction.stoplight.io/docs/open-catalogi. Het is een wens om deze in de zomer naar redocly te verplaatsen. +## APIs + +De APIs van OpenCatalogi zijn voor nu nog terug te vinden op . Het is een wens om deze in de zomer naar [Redocly](https://redocly.com/) te verplaatsen. ## Codebases | Codebase | Rol | Organisatie | Licentie | |----------|------------------------------| | | -| [Github](https://github.com/ConductionNL/web-app)| Publicatie Platform | Open Catalogi | | -| [Github](https://github.com/ConductionNL/opencatalogi)| Beheer API, Zoeken API, Beheer Interface | Open Catalogi | EUPL | -| [Github](https://github.com/maykinmedia/objects-api)| ORC (objecten opslag) | Maykin Media | EUPL | -| [Github](https://github.com/open-zaak/open-zaak) | DRC (documenten opslag) | Maykin Media | EUPL | -| [Github](https://github.com/elastic/elasticsearch) | Elastic Search | Elastic | SPL + EL | -| [Github](https://github.com/OpenCatalogi/OpenCatalogiBundle) | Synchronysatie Service | Conduction | EUPL | - +| [Github](https://github.com/OpenCatalogi/web-app)| Publicatie Platform | Open Catalogi | | +| [Github](https://github.com/ConductionNL/opencatalogi)| Beheer API, Zoeken API, Beheerinterface | OpenCatalogi | EUPL | +| [Github](https://github.com/maykinmedia/objects-api)| ORC (objectenopslag) | Maykin Media | EUPL | +| [Github](https://github.com/open-zaak/open-zaak) | DRC (documentenopslag) | Maykin Media | EUPL | +| [Github](https://github.com/elastic/elasticsearch) | Elastic Search | Elastic | SPL + EUPL | +| [Github](https://github.com/OpenCatalogi/OpenCatalogiBundle) | Synchronisatie Service | Conduction | EUPL | Hierop zijn een paar opmerkingen te maken -- We hebben recentenlijk de keuze gemaakt om over te stappen op nextcloud, meer hierover kan je teruglezen op [https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/](https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/). -- Het inzetten van ORC, DRC en Elastic zijn vanuit Open Catalogi gezien (geadviseerde) keuzes. Het is ook mogenlijk om alles in een interne database of externe object store op te slaan. -- De Synchronysatie service draaid momenteel nog op het common gateway platform, er is echter voor gekozen om ook deze over te brengen naar nextcloud. -- Beheer API en Zoeken API worden samen met de beheer interface geleverd door één code base, een praktische inrichtingskeuze die we hebben overgenomen van Open Zaak. Voor organisaties die componenten graag splitsen in containers zijn ze echter ook los instaleerbaar. -- Het is ook mogenlijk om de zoeken API direct vanuit elastic search uit te leveren, dat heeft een aanzienlijk performance voordeel. Maar verhinderd ook het federatief zoeken. -- Voor het ORC en DRC zijn aanvullende compenten beschickbaar/benodigd (OTC, Notificaties etc) die laten we hier voor het overzicht even weg -## Functionaliteit Beheer omgeving -Een flink stuk van de randvoorwaardenlijke functionaleit van Open Catlogi (zoals ADFS) wordt afgevangen in de Beheer interface. +- We hebben recentelijk de keuze gemaakt om over te stappen op Nextcloud. Meer hierover kan je teruglezen op [https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/](https://documentatie.opencatalogi.nl/Handleidingen/Nextcloud/). +- Het inzetten van ORC, DRC en Elastic zijn vanuit Open Catalogi gezien (geadviseerde) keuzes. Het is ook mogelijk om alles in een interne database of externe object store op te slaan. +- De Synchronisatie service draait momenteel nog op het common gateway platform, er is echter voor gekozen om ook deze over te brengen naar Nextcloud. +- Beheer API en Zoeken API worden samen met de beheerinterface geleverd door één code base, een praktische inrichtingskeuze die we hebben overgenomen van Open Zaak. Voor organisaties die componenten graag splitsen in containers zijn ze echter ook los installeerbaar. +- Het is ook mogelijk om de zoeken API direct vanuit Elasticsearch uit te leveren, dat heeft een aanzienlijk performance voordeel. Maar verhinderd ook het federatief zoeken. +- Voor het ORC en DRC zijn aanvullende componenten beschikbaar/benodigd (OTC, Notificaties etc.) die laten we hier voor het overzicht even weg + +## Functionaliteit Beheeromgeving + +Een flink stuk van de randvoorwaardelijke functionaliteit van OpenCatalogi (zoals ADFS) wordt afgevangen in de Beheerinterface. ## Federatief zoeken @@ -86,7 +88,7 @@ Dit betekent dat een nieuwe installatie zich slechts bij één andere installati OpenCatalogi bestaat eigenlijk uit een paar technische componenten die samenwerken. Om te beginnen bestaat het uit verschillende objecten (Catalogi, Publicaties, Documenten en Index) die worden opgeslagen in een objectstore (of ORC in VNG-termen). Publicaties bieden een basis workflowmanagement setup. Wanneer een publicatie als gepubliceerd is gemarkeerd, wordt deze vervolgens overgebracht naar een zoekindex (Elasticsearch). Het OpenCatalogi zoek-endpoint gebruikt deze zoekindex vervolgens om vragen te beantwoorden. Dit betekent dat de gebruiksgerichte (publieke) frontend de zoekindex gebruikt (aangezien het vragen stelt aan het zoek-endpoint) en dat het administratie-endpoint de objectstore gebruikt. -Afzonderlijke synchronisatieservices kunnen publicaties maken van externe bronnen (bijvoorbeeld GitHub, of case handling systemen). Deze publicaties worden in de objectstore gemaakt en moeten als gepubliceerd worden gemarkeerd voordat ze worden gesynchroniseerd naar de zoekindex (en beschikbaar worden gemaakt onder het zoek-endpoint), hoewel dit proces geautomatiseerd kan worden in de configuratie. Deze strikte scheiding van gegevens op basis van de rol en context van verzoekers in een opslag- en zoekgedeelte voorkomt onbedoelde openbaarmaking van informatie. Dit is vooral belangrijk omdat OpenCatalogi ook wordt gebruikt door [OpenWoo.app](OpenWoo.app). +Afzonderlijke synchronisatieservices kunnen publicaties maken van externe bronnen (bijvoorbeeld GitHub, of case handling systemen). Deze publicaties worden in de objectstore gemaakt en moeten als gepubliceerd worden gemarkeerd voordat ze worden gesynchroniseerd naar de zoekindex (en beschikbaar worden gemaakt onder het zoek-endpoint), hoewel dit proces geautomatiseerd kan worden in de configuratie. Deze strikte scheiding van gegevens op basis van de rol en context van verzoekers in een opslag- en zoekgedeelte voorkomt onbedoelde openbaarmaking van informatie. Dit is vooral belangrijk omdat OpenCatalogi ook wordt gebruikt door [OpenWoo.app](https://openwoo.app/). Normaal gesproken worden documenten (en bestanden in het algemeen) niet overgebracht naar de objectstore, maar verkregen van de bron wanneer een enkel object wordt opgevraagd. Je kunt er echter voor kiezen om dat object over te brengen (per configuratie) om te voorkomen dat de bronapplicatie te vaak wordt bevraagd. Dit is vooral handig bij oudere of minder presterende bronnen. Documenten worden echter NOOIT overgebracht naar de zoekindex om indirecte blootstelling te voorkomen. Documenten kunnen ook worden toegevoegd aan publicaties die handmatig zijn aangemaakt via de administratie-interface. Houd er echter rekening mee dat deze documenten mogelijk nog steeds moeten worden gearchiveerd volgens de archiefwet. @@ -112,36 +114,35 @@ Bij het bevragen van de zoeken-API MOET de zoeken-UI de zoekopdracht beperken aa ## Meer over de catalogus -De catalogus functioneert zowel als een [DCAT-catalogus](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#CataloguedResource) als een [FCS Inway]. Dit betekent dat een catalogus slechts bij ÉÉN organisatie kan horen; eigendom van de catalogus wordt geverifieerd door middel van een PKI-certificaat. +De catalogus functioneert zowel als een [DCAT-catalogus](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#CataloguedResource) als een [FCS Inway](https://artifacthub.io/packages/helm/commonground/fsc-nlx-inway). Dit betekent dat een catalogus slechts bij ÉÉN organisatie kan horen; eigendom van de catalogus wordt geverifieerd door middel van een PKI-certificaat. ## Over publicaties De publicatie functioneert als een [DCAT-catalogusrecord](https://semiceu.github.io/DCAT-AP/releases/3.0.0/#CatalogueRecord). Oorspronkelijk ontworpen als een houder voor een [publiccode.yaml](https://docs.italia.it/italia/developers-italia/publiccodeyml-en/en/master/index.html). ## Meer over de directory -Iedere Open Catalogi installatie beschickt over een directory, deze verhoud zich tot het [fcs directory concept](). Een directory is kort gezegd een overzicht van alle andere catalogi die bekend zijn bij deze Open Catalogi installatie, zogenoemde listings. Deze lsitings vormend de kern onder het `federatief zoeken` dat tehcnisch neerkomt op het asynchroon bevragen van meerdere listings en de resultaten agregegeren. Hiervoor bieden listings een aantal kern functionaliteiten +Iedere OpenCatalogi installatie beschikt over een directory, deze verhoudt zich tot het [FSC directory concept](https://directory-ui.demo.fsc.nlx.io/). Een directory is kort gezegd een overzicht van alle andere catalogi die bekend zijn bij deze OpenCatalogi-installatie, zogenoemde listings. Deze listings vormen de kern onder het `federatief zoeken` dat technisch neerkomt op het asynchroon bevragen van meerdere listings en de resultaten aggregeren. Hiervoor bieden listings een aantal kern functionaliteiten: -- **Weten welke catalogi beschickbaar zijn**: De direcotry geeft een overzicht van alle catalogi de gebruikt kunnen worden voor de federatieve zoekvraag -- **Het automatisch vinden van catalogi**: Open Catalogi instanties wisselen onderling hun directories uit, doormiddel van het discovery patroon -- **Het verspreidend van informatie uit de eigen catalogi**: Open Catalogi verspreiden actief hun eigen informatie aan de hand van het advertising patroon +- **Weten welke catalogi beschikbaar zijn**: De directory geeft een overzicht van alle catalogi die gebruikt kunnen worden voor de federatieve zoekvraag +- **Het automatisch vinden van catalogi**: Open Catalogi instanties wisselen onderling hun directories uit, door middel van het discovery-patroon +- **Het verspreidend van informatie uit de eigen catalogi**: Open Catalogi verspreiden actief hun eigen informatie aan de hand van het advertising-patroon - **Beperken van het aantal zoekvragen**: Catalogi delen op installatie niveau een search endpoint zodat één bevraging meerdere catalogi kan beslaan. In de directory worden de catalogi daarom bij elkaar getrokken aan de hand van search endpoints -- **Beperken van het aantal catalogi**: Door het bijhouden van de daadwerkenlijk in een catalogi beschickbare metadata (type publicaties) worden alleen catalogi bevraagd die dat object type daadwerkenlijk bevatten (dit voorkomt onnodige bevragingen) -- **Configureren van catalogi gebruik**: In de directory kan de beheerder aangeven welke catalogi die wel/niet wil opnemen/beschickbaar stellen voor eigen zoekvragen. -- **Overnemen van metadata**: Binnen Open Catalogi kunnen er publciaties worden gepubliceerd op elders gedefineerde metadata, via de directory kan worden aangegeven welke meta data uit welke catalogi word overgenomen. - -Eigen Catalogi zijn per definitie onderdeel van de directory, en niet via de directory wijzigbaar (ze worden op code niveau aangevuld op alle directory overzichten). +- **Beperken van het aantal catalogi**: Door het bijhouden van de daadwerkelijk in een catalogi beschikbare metadata (type publicaties) worden alleen catalogi bevraagd die dat object type daadwerkenlijk bevatten (dit voorkomt onnodige bevragingen) +- **Configureren van catalogi gebruik**: In de directory kan de beheerder aangeven welke catalogi die wel/niet wil opnemen/beschikbaar stellen voor eigen zoekvragen. +- **Overnemen van metadata**: Binnen Open Catalogi kunnen er publicaties worden gepubliceerd op elders gedefinieerde metadata, via de directory kan worden aangegeven welke meta data uit welke catalogi wordt overgenomen. +Eigen Catalogi zijn per definitie-onderdeel van de directory, en niet via de directory wijzigbaar (ze worden op code niveau aangevuld op alle directory overzichten). ## Faceted Search & datavisualisatie Zowel de zoeken-API, als de beheer-API, ondersteunen [faceted search](https://www.oxfordsemantic.tech/faqs/what-is-faceted-search#:~:text=Faceted%20search%20is%20a%20method,that%20we%20are%20looking%20for.). -Naast het verbeteren van de zoekervaring, kan faceted search ook worden gebruikt om statistische informatie op te halen over de onderligende gegevens. Bijvoorbeeld voor het weergeven van aantal publicaties per categorie in grafieken of staafdiagrammen. Een mooi voorbeeld hiervan is terug te vinden op [commonground.opencatalogi.nl](commonground.opencatalogi.nl). Daardat de gegevens gerelateerd zijn aan zoekopdrachten, en zoekopdrachten een hoge granulariteit hebben is het mogenlijk om op relatief detailniveau deze overzichten te creëren. +Naast het verbeteren van de zoekervaring, kan faceted search ook worden gebruikt om statistische informatie op te halen over de onderliggende gegevens. Bijvoorbeeld voor het weergeven van aantal publicaties per categorie in grafieken of staafdiagrammen. Een mooi voorbeeld hiervan is terug te vinden op [commonground.opencatalogi.nl](https://commonground.opencatalogi.nl). Doordat de gegevens gerelateerd zijn aan zoekopdrachten, en zoekopdrachten een hoge granulariteit hebben is het mogelijk om op relatief detailniveau deze overzichten te creëren. ## Adapters richting externe catalogi -Het federatieve netwerk is een mooie manier om data bij de bron op te halen maar wordt (nog) niet door alle landelijke platformen ondersteund. Er zijn daarom een aantal adapters beschikbaar die gevens ophalen uit het federatieve netwerk en doorzetten naar derde partijen. Deze adaptors worden (landelijk) gehost. +Het federatieve netwerk is een mooie manier om data bij de bron op te halen, maar wordt (nog) niet door alle landelijke platformen ondersteund. Er zijn daarom een aantal adapters beschikbaar die gegevens ophalen uit het federatieve netwerk en doorzetten naar derde partijen. Deze adaptors worden  (landelijk) gehost. - [X] **Woo index** Deze adapter verzamelt elke avond de gegevens van publicaties gerelateerd aan de WOO en zet deze om naar een sitemap.xml voor de door KOOP ontwikkelde harvester. - [ ] **DROP** (Roadmap) In ontwikkeling bij de gemeente Buren @@ -156,15 +157,15 @@ Bij wijzigingen in de publicatieopslag (ORC) of documentopslag (DRC) wordt de zo OpenCatalogi maakt documenten onder publicaties uniek aan de hand van [hashing](https://stackoverflow.com/questions/2444321/how-are-hash-functions-like-md5-unique), hashing geeft een unieke code voor ieder document aan de hand van de documentinhoud + eigenschappen. Hierdoor kunnen we bijvoorbeeld vaststellen of een document voorkomt onder meerdere publicaties en deze informatie aan gebruiker terug te geven. -Een voorbeeld: In een raadsvergadering wordt een voorgenomen vergunning besproken. Deze vergunning is al eerder in de raad en in een commissie besproken en is gekoppeld aan een zaak (vergunningsaanvraag). Aangenomen dat al deze objecten worden gepubliceerd, verschijnt de vergunning in vier verschillende publicaties. Door dit te identificeren, voorkomen we niet alleen onnodige dataduplicatie van de PDF, maar kunnen we ook in de zoekinterface aangeven dat er meer informatie over het document beschikbaar is. Deze context is met name interessant voor onderzoekers en journalisten die niet alleen geïnteresseerd zijn in het resultaat, maar ook in het besluitvormingsproces. +Een voorbeeld: In een raadsvergadering wordt een voorgenomen vergunning besproken. Deze vergunning is al eerder in de raad en in een commissie besproken en is gekoppeld aan een zaak (vergunningsaanvraag). Aangenomen dat al deze objecten worden gepubliceerd, verschijnt de vergunning in vier verschillende publicaties. Door dit te identificeren, voorkomen we niet alleen onnodige dataduplicatie van de pdf, maar kunnen we ook in de zoekinterface aangeven dat er meer informatie over het document beschikbaar is. Deze context is met name interessant voor onderzoekers en journalisten die niet alleen geïnteresseerd zijn in het resultaat, maar ook in het besluitvormingsproces. Het faciliteert ook een andere vorm van interactie waarbij gebruikers door de levenscyclus van een document kunnen navigeren. Vanuit het bovenstaande voorbeeld kan een gebruiker bijvoorbeeld vanuit de raadsvergadering naar de commissievergadering navigeren en daar de (video)notulen raadplegen om de inbreng van verschillende fracties te bekijken. ## Samenvoegen van bijlagen -In de praktijk zien we dat overheden de neiging hebben om PDF's samen te voegen, maar vanuit gebruikersperspectief is dit zeer onwenselijk. +In de praktijk zien we dat overheden de neiging hebben om pdf's samen te voegen, maar vanuit gebruikersperspectief is dit zeer onwenselijk. -Om dit te illustreren, kunnen we een denkbeeldig WOO-verzoek aanhalen over het contact van wethouder A met persoon B over onderwerp C. Dit WOO-verzoek levert 2000 e-mails op. Het samenvoegen van deze 2000 e-mails tot één PDF heeft een aantal negatieve gevolgen: +Om dit te illustreren, kunnen we een denkbeeldig WOO-verzoek aanhalen over het contact van wethouder A met persoon B over onderwerp C. Dit WOO-verzoek levert 2000 e-mails op. Het samenvoegen van deze 2000 e-mails tot één pdf heeft een aantal negatieve gevolgen: - Metadata per e-mail gaat verloren, waardoor contextuele zoekinformatie verdwijnt. - Als in een van de e-mails ook over onderwerp D wordt gesproken en een journalist zoekt hiernaar, krijgt hij een document van 2000 pagina's terug. From 3c792a1d82c3d0795b5a8d2fdcd94c4456aa93b6 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 13:37:38 +0200 Subject: [PATCH 08/10] standaard.md --- docs/Standaard.md | 55 +++++++++++++++++++++++++++++++---------------- profile/README.md | 6 +++--- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/docs/Standaard.md b/docs/Standaard.md index 9330cc9..8104378 100644 --- a/docs/Standaard.md +++ b/docs/Standaard.md @@ -1,33 +1,52 @@ # Standaard -Open Catalogi is een standaard die eigenlijk bestaad uit een versameling van andere standaarden (o.a.[NL Gog profile for cloud events](https://www.logius.nl/domeinen/gegevensuitwisseling/nl-gov-profile-cloudevents), [NL GOV profile for OAuth 2.0](https://www.forumstandaardisatie.nl/open-standaarden/nl-gov-assurance-profile-oauth-20) [FSC](), [DCAT](), [APNL](), [NL API strategie](), [MDTO](), [Publiccode](), [TOOI]()) de gemeenschappenlijk beschrijven hoe catalogusen kunnen worden vormgegeven op een manier waardoor ze gesamenlijk één virtuele catalogus vormen. Hierdoor blijdt de data bij de bron (organisatie) en zijn er geen landelijke indexen nodig. +OpenCatalogi is een standaard die eigenlijk bestaat uit een verzameling van andere standaarden: -1. Een API standaard voor het koppelen van catalogi -2. Een architectuur voor eht gedrag van catalogi -3. Een [NL Design]() react interface voor het zoeken binnen het federatieve netwerk* -4. Een beheer omgeving het aanmaken en vullen van catalogi -5. Verschillende koppelingen (ZGW, GGithub, Decat etc) voor het vullen van de catalogi -6. Verschillende koppelingen (Drop, Plooi) voor het doorsturen van informatie vanuit de catalogi +- [NL Gov profile for cloud events](https://www.logius.nl/domeinen/gegevensuitwisseling/nl-gov-profile-cloudevents) +- [NL GOV profile for OAuth 2.0](https://www.forumstandaardisatie.nl/open-standaarden/nl-gov-assurance-profile-oauth-20) [FSC](https://vng.nl/projecten/federatieve-service-connectiviteit-fsc) +- [DCAT](https://www.forumstandaardisatie.nl/open-standaarden/dcat) +- [APNL]() +- [NL API-strategie](https://docs.geostandaarden.nl/api/API-Strategie/) +- [MDTO](https://www.nationaalarchief.nl/archiveren/mdto) +- [Publiccode](https://publiccode.eu/nl/) +- [TOOI]( -* vanuit andere projecten, zo als de OpenWoo.app, zijn er ook andere interfaces op het federatief stelsel beschickbaar +Deze standaarden bescrhijven gemeenschappelijk hoe catalogi kunnen worden vormgegeven op een manier waardoor ze gezamenlijk één virtuele catalogus vormen. Hierdoor blijft de data bij de bron (organisatie) en zijn er geen landelijke indexen nodig. Aanvullingen op OpenCatalogi moeten dus ook altijd conform deze standaarden worden toegevoegd. -Het project bied daarmee zowel de mogenlijkheid om te koppelen a.h.v API standaarden en een volledige set aan open source componenten om meteen aan de slag te kunnen gaan. Hierbij is ook voorzien in de koppeling met het huidige landschap. +De OpenCatalogi-standaard houdt dan verder in dat er: + +1. Een API-standaard is voor het koppelen van catalogi +2. Een architectuur voor het gedrag van catalogi +3. Een [NL Design](https://nldesignsystem.nl/) React interface geboden kan worden voor het zoeken binnen het federatieve netwerk* +4. Een beheeromgeving het aanmaken en vullen van catalogi +5. Verschillende koppelingen (ZGW, GitHub, DCAT etc.) voor het vullen van de catalogi +6. Verschillende koppelingen (DROP, Plooi) voor het doorsturen van informatie vanuit de catalogi + +- vanuit andere projecten, zoals de OpenWoo.app, zijn er ook andere interfaces op het federatief stelsel beschikbaar + +Het project biedt daarmee zowel de mogelijkheid om te koppelen a.h.v API-standaarden en een volledige set aan open source componenten om meteen aan de slag te kunnen. Hierbij is ook voorzien in de koppeling met het huidige landschap. ## Opzet -Vanuit het Open Catalogi stelsel gaan we er vanuit dat een gebruiker bij een interface een zoekvraag steld aan een catalogus, de catalogus maakt vervolgens gebruik van bij hem bekende andere catalogi voor het beantwoorden van de vraag. Hierbij kan één organisatie meerdere catalogi hebben meer behoord iedere catalogus altijd bij één organisatie. + +Vanuit het OpenCatalogi-stelsel gaan we er vanuit dat: + +1. een gebruiker bij een interface een zoekvraag stelt aan een catalogus +2. de catalogus maakt vervolgens gebruik van bij hem bekende andere catalogi voor het beantwoorden van de vraag. + +Hierbij kan één organisatie meerdere catalogi hebben, maar behoord iedere catalogus altijd bij één organisatie. ![UML Diagram van OpenCatalogi](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/handleidingen/components_simple.svg "UML Diagram van OpenCatalogi") -Voor een uitgebreide opzet over de interne werking van catalogi kunt u kijken in de [architectuursectie](/docs/handleidingen/Architectuur.md). +Voor een uitgebreide opzet over de interne werking van catalogi, zie ook de [architectuursectie](/docs/handleidingen/Architectuur.md). ## Landelijke diensten -Vanuit de gedachte van een federatief stelsel is iedere deelnemer verantwoornlijk voor zijn/haar eigen inbreng aan installaties en interfaces. Toch is het handig als er zo nu en dan al een en ander draaid om op terug te vallen. Vanuit de Open Catalogi community worden daarom de volgende diensten ook als achtervang aangeboden. -1. Op [opencatalogi.nl](https://opencatalogi.nl/) draaid een instantie van de interface waarmee gezocht kan worden in het federatief netwerk. Hiermee maken we de data visueel en is het makenlijk te controlleren of je publicaties goed doorkomen. Het is echter een uitgangspunt dat iedere organisatie haar eigen publicaite voorziening treft. -2. Op [opencatalogi.nl/catalogi]() geven we een visuele representatie van de landelijke directory zodat inzichtenlijk is welke catalogi bechickbaar zijn. -3. Vanuit de landelijke instantie draaien we een catolgus [github]() de gekopeld is aan github (voor het automatisch inzichtenlijk maken van open source projecten). -4. Vanuit de landelijke instantie draaien we een catolgus [gitlab]() de gekopeld is aan gitlab (voor het automatisch inzichtenlijk maken van open source projecten). -4. Vanuit de landelijke instantie draaien we een catolgus [opencatalogi]() waarmee we [metadata formats]() beschickbaar stellen voor hergebruik. +Vanuit de gedachte van een federatief stelsel is iedere deelnemer verantwoordelijk voor zijn/haar eigen inbreng aan installaties en interfaces. Toch is het handig als er zo nu en dan al een en ander draait om op terug te vallen. Vanuit de OpenCatalogi community worden daarom de volgende diensten ook als achtervang aangeboden. -Wat OpenCatalogi uniek maakt, is dat de frontend serverless (via GitHub) kan draaien, waardoor deelnemende organisaties OpenCatalogi niet zelf hoeven te installeren om het te kunnen gebruiken. Zowel de frontend als de gegevens kunnen worden gehost op GitHub. +1. Op [opencatalogi.nl](https://opencatalogi.nl/) draait een instantie van de interface waarmee gezocht kan worden in het federatief netwerk. Hiermee maken we de data visueel en is het makkelijk te controleren of je publicaties goed doorkomen. Het is echter een uitgangspunt dat iedere organisatie haar eigen publicatie voorziening treft. +2. Op [opencatalogi.nl/catalogi](https://opencatalogi.nl/catalogi) geven we een visuele representatie van de landelijke directory zodat inzichtelijk is welke catalogi beschikbaar zijn. +3. Vanuit de landelijke instantie draaien we een catalogus [GitHub](https://Github.com) de gekoppeld is aan GitHub (voor het automatisch inzichtelijk maken van open source projecten). +4. Vanuit de landelijke instantie draaien we een catalogus [GitLab](https://gitlab.com) de gekoppeld is aan GitLab (voor het automatisch inzichtelijk maken van open source projecten). +4. Vanuit de landelijke instantie draaien we een catalogus [opencatalogi](https://opencatalogi.nl) waarmee we [metadata formats]() beschikbaar stellen voor hergebruik. +Wat OpenCatalogi uniek maakt, is dat de frontend serverless (via GitHub) kan draaien, waardoor deelnemende organisaties OpenCatalogi niet zelf hoeven te installeren voor gebruik. Zowel de frontend, als de gegevens, kunnen worden gehost op GitHub. diff --git a/profile/README.md b/profile/README.md index 0959078..5c3d9a2 100644 --- a/profile/README.md +++ b/profile/README.md @@ -41,9 +41,9 @@ Meer informatie over installeren via Helm kan worden gevonden op de [helm](https ### Alternatieve installatieroute -In sommige gevallen is er meer behoefte aan controle over de installatie (bijvoorbeeld omdat er geen Kubernetes omgeving beschikbaar is) in dat geval kan gebruik worden gemaakt van een ‘kale’ Common Gateway instalatie, zie voor meer informatie over het installeren van de Common Gateway de [Common Gateway installatie handleiding](https://github.com/ConductionNL/commonground-gateway). +In sommige gevallen is er meer behoefte aan controle over de installatie (bijvoorbeeld omdat er geen Kubernetes omgeving beschikbaar is) in dat geval kan gebruik worden gemaakt van een ‘kale’ Common Gateway installatie, zie voor meer informatie over het installeren van de Common Gateway de [Common Gateway installatie handleiding](https://github.com/ConductionNL/commonground-gateway). -Omdat OpenCatalogi een Common Gateway plugin is kan je vervolgens simpelweg in de Common Gatewayy naar plugins navigeren, zoeken naar OpenCatalogi, en op installeren klikken. +Omdat OpenCatalogi een Common Gateway-plugin is kan je vervolgens simpelweg in de Common Gatewayy naar plugins navigeren, zoeken naar OpenCatalogi, en op installeren klikken. ## Bijwerken naar nieuwere versies @@ -83,7 +83,7 @@ Het datamodel van OpenCatalogi is gebaseerd op Public Code, een Europese standaa Lees meer -- [Het volledige datamodel](https://conduction.stoplight.io/docs/publiccode) +- [Het volledige datamodel](https://conduction.stoplight.io/docs/open-catalogi) - [Afwijkingen ten opzichte van publiccode](https://github.com/OpenCatalogi/.github/discussions/10) ## Projectinrichting From a355ccfeb25c6d395a62fdc51b301400df52e8c6 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 14:07:38 +0200 Subject: [PATCH 09/10] standaard.md --- docs/Standaard.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/Standaard.md b/docs/Standaard.md index 8104378..84443dd 100644 --- a/docs/Standaard.md +++ b/docs/Standaard.md @@ -3,13 +3,14 @@ OpenCatalogi is een standaard die eigenlijk bestaat uit een verzameling van andere standaarden: - [NL Gov profile for cloud events](https://www.logius.nl/domeinen/gegevensuitwisseling/nl-gov-profile-cloudevents) -- [NL GOV profile for OAuth 2.0](https://www.forumstandaardisatie.nl/open-standaarden/nl-gov-assurance-profile-oauth-20) [FSC](https://vng.nl/projecten/federatieve-service-connectiviteit-fsc) +- [NL GOV profile for OAuth 2.0](https://www.forumstandaardisatie.nl/open-standaarden/nl-gov-assurance-profile-oauth-20) +- [FSC](https://vng.nl/projecten/federatieve-service-connectiviteit-fsc) - [DCAT](https://www.forumstandaardisatie.nl/open-standaarden/dcat) - [APNL]() - [NL API-strategie](https://docs.geostandaarden.nl/api/API-Strategie/) - [MDTO](https://www.nationaalarchief.nl/archiveren/mdto) - [Publiccode](https://publiccode.eu/nl/) -- [TOOI]( +- [TOOI](https://standaarden.overheid.nl/tooi) Deze standaarden bescrhijven gemeenschappelijk hoe catalogi kunnen worden vormgegeven op een manier waardoor ze gezamenlijk één virtuele catalogus vormen. Hierdoor blijft de data bij de bron (organisatie) en zijn er geen landelijke indexen nodig. Aanvullingen op OpenCatalogi moeten dus ook altijd conform deze standaarden worden toegevoegd. From 7266775891652baf215fe9e7d68ad7e6c956b4a1 Mon Sep 17 00:00:00 2001 From: Mwest2020 Date: Wed, 31 Jul 2024 14:38:19 +0200 Subject: [PATCH 10/10] standaard.md --- docs/Standaard.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/Standaard.md b/docs/Standaard.md index 84443dd..accad1b 100644 --- a/docs/Standaard.md +++ b/docs/Standaard.md @@ -6,7 +6,6 @@ OpenCatalogi is een standaard die eigenlijk bestaat uit een verzameling van ande - [NL GOV profile for OAuth 2.0](https://www.forumstandaardisatie.nl/open-standaarden/nl-gov-assurance-profile-oauth-20) - [FSC](https://vng.nl/projecten/federatieve-service-connectiviteit-fsc) - [DCAT](https://www.forumstandaardisatie.nl/open-standaarden/dcat) -- [APNL]() - [NL API-strategie](https://docs.geostandaarden.nl/api/API-Strategie/) - [MDTO](https://www.nationaalarchief.nl/archiveren/mdto) - [Publiccode](https://publiccode.eu/nl/)