Weergave en formattering van resultaten
Beschikbare formaten voor het opslaan van resultaten
Voor het formatteren van resultaten in A-Parser wordt de template engine Template Toolkit gebruikt, waardoor resultaten van gegevensextractie eenvoudig in verschillende formaten kunnen worden opgeslagen:
- In tekstbestanden als lijst: één resultaat per regel, via een scheidingsteken, in een willekeurig formaat
- In
CSV-bestanden met de mogelijkheid tot verdere import in Excel, Google Docs, enz. - In
XML,JSONen andere formaten voor gegevensopslag - In
HTMLdoor "on the fly" pagina's te genereren - In het formaat van
SQL-dumps voor directe import in een database of door direct naar een SQLite-database te schrijven - In binair formaat voor het opslaan van afbeeldingen (
jpg, png, gif,...), documenten (pdf, docx,...), uitvoerbare bestanden en archieven (exe, dmg, zip,...) en alle andere soorten gegevens
Bewerken van het resultaatformaat
Result format (Resultaatformaat) - hiermee kunt u resultaten naar de gewenste vorm formatteren met behulp van sjablonen; dit wordt toegepast voor elke combinatie van query-resultaten.

- Het Algemene resultaatformaat wordt ingesteld in het veld
Result format - Het Resultaatformaat voor elke scraper afzonderlijk kan worden ingesteld in de instellingen van de scraper bij
Result format
A-Parser ondersteunt het werken met meerdere scrapers in één taak; in het algemene resultaatformaat moet worden aangegeven van welke scraper het resultaat moet worden weergegeven:
$p1- resultaten van de eerste scraper (
SE::Google op de screenshot), $p2- resultaten van de tweede scraper (
SE::Bing op de screenshot)- Het volgnummer van de scraper wordt links van het selectieveld van de scraper weergegeven
$p1.preseten$p2.presethoudt in dat de waarde van het resultaatformaat uit de instellingen van de betreffende scrapers moet worden genomen- In dit voorbeeld kan
$p1.presetworden vervangen door$p1.serp.format('$link\n'), wat hetzelfde effect heeft, waarbij het resultaatformaat uit de instellingen niet meer wordt gebruikt
Het Result format (Resultaatformaat) kan worden opgegeven in een handige editor met meerdere regels door op het bijbehorende icoon in het bewerkingsveld te klikken:

In het algemene resultaatformaat zijn de volgende variabelen beschikbaar:
$query- de query na formattering$query.*- alle variabelen die betrekking hebben op de query, beschreven in het artikel Sjablonen in query's$p1, $p2, ...- variabelen voor toegang tot de resultaten van de gegevensextractie voor elke scraper afzonderlijk (Bekijken van mogelijke resultaten voor elke scraper)$p1.query, $p2.query, ...- query's na formattering rekening houdend met het queryformaat dat is opgegeven in de instellingen van elke scraper
Begin- en eindtekst
Voor elk resultaatbestand wordt een aparte Begin-/Eindtekst opgegeven:
- Voor het vormen van de koptekst van een CSV-bestand
- Voor de begin- en eindtags van een XML-bestand
- Voor de header, koptekst en footer van HTML-bestanden
- Voor alle andere toepassingsmogelijkheden
Om deze mogelijkheid te activeren, moet u op de knop More options (Meer opties) onderaan de Taakeditor klikken

In de begin- en eindtekst wordt het gebruik van de template engine Template Toolkit ondersteund; beschikbare variabelen:
$query- de query na formattering$query.*- alle variabelen die betrekking hebben op de query, beschreven in het artikel Sjablonen in query's
Belangrijk! Deze variabelen zijn alleen beschikbaar bij het opslaan van elke query in een apart bestand of bij het gebruik van dezelfde variabelen in het Formaat van de resultaatbestandsnaam.
Formaat van de resultaatbestandsnaam
A-Parser maakt het mogelijk om sjablonen ook in de namen van de resultaatbestanden te gebruiken, waardoor automatisch bestanden en mappen kunnen worden aangemaakt op basis van de huidige datum, het volgnummer van de query, de query zelf en in elk ander formaat.

In het veld File name (Bestandsnaam) worden de volgende variabelen ondersteund:
- Alle variabelen die beschikbaar zijn voor het Algemene resultaatformaat
$queriesfile- het pad en de naam van het bestand met query's; als query's via het formulier zijn opgegeven, zal dit queries_from_text.txt bevatten$datefile- het object van de date plugin van de Template Toolkit template engine, ingesteld op het datumformaat%b-%d_%H-%M-%S; bij formattering geeft dit de huidige tijd en datum weer als May-08_20-08-38, het formaat kan worden gewijzigd in de Aanvullende instellingen
Standaard wordt de bestandsnaam aangemaakt op basis van de datum en tijd op het moment van de start van de taak
Complex voorbeeld
reports/$queriesfile/${query}.txt
- Er wordt een map reports aangemaakt
- Er wordt een submap aangemaakt met de naam van het querybestand
- In de submap worden evenveel bestanden aangemaakt als er query's in de taak worden gebruikt; als bestandsnaam wordt de query zelf gebruikt met de extensie
.txt
De variabele $query is geschreven in het formaat ${query} om te voorkomen dat de extensie .txt wordt geïnterpoleerd als onderdeel van de variabele; meer details in de documentatie over de template engine Template Toolkit
⏩ Video. Naamgeving van resultaatbestanden
In deze video geven we enkele voorbeelden van de naamgeving van het resultaatbestand:
- Nummering van het resultaatbestand in overeenstemming met de query's.
- Nummering van het resultaatbestand + een deel van de querynaam.
- Naamgeving van het resultaatbestand op basis van de query, als de query een link is.
Bekijken van beschikbare resultaten
Elke scraper heeft zijn eigen set resultaten; u kunt de lijst met beschikbare resultaten bekijken door met de aanwijzer over de scraper te gaan; in de tooltip wordt een lijst met eenvoudige resultaten en arrays weergegeven, met een lijst van geneste elementen:

In het geel zijn de resultaten gemarkeerd die algemeen zijn voor alle scrapers:
$query- de query die aan de scraper is doorgegeven na formattering$query.orig- de originele query (zoals deze in het bestand of in het invoerveld voor query's stond)$query.first- de eerste query bij gebruik van opties voor geneste gegevensextractie (Parse all results of Parse to level)$info.success- informatie over het succes van de gegevensextractie voor deze query$info.retries- het aantal gebruikte pogingen voor deze query$info.stats- statistieken van de werking van de scraper voor deze query$pages.$i.data- een array met onbewerkte antwoorden van de server voor de mogelijkheid om zelf extra informatie te extraheren
SE::Bing:$totalcount- het aantal resultaten in de output$adsmet elementen$link,$anchor,$visiblelink,$snippet,$positionen$page- een array met een lijst van advertenties$related.$i.key- een array met een lijst van gerelateerde zoekwoorden$serpmet elementen$link,$anchor,$snippet,$cache- een array met de hoofdresultaten van de zoekmachine
Let op dat voor arrays expliciet de variabele $i wordt aangegeven, wat betekent dat er meerdere elementen zijn en dat deze via een index (positienummer) kunnen worden aangesproken of per element in een lus kunnen worden doorlopen.
Resultaat $pages.$i.data wordt automatisch gewijzigd in $data voor de scrapers die niet "door pagina's gaan" binnen één verzoek. Bijvoorbeeld zoals
DeepL::Translator.
Weergave van resultaten
A-Parser is gemaakt voor de gegevensextractie van alle soorten informatie; hiervoor zijn 2 typen resultaten geïntroduceerd:
- Eenvoudige resultaten (Flat)
- Arrays van resultaten (Array)
Laten we elk type bekijken aan de hand van het voorbeeld van de scraper
SE::Google, screenshot van de resultaten:

Eenvoudige resultaten
Simple results (Eenvoudige resultaten) - wanneer één query overeenkomt met één resultaat, voorbeelden:
- Aantal resultaten per query ($totalcount)
- Of de query een spelfout is ($misspell, niet weergegeven op de screenshot)
Andere voorbeelden:
- De waarde van de vertaalde tekst ($translated) in de scraper
DeepL::Translator - Het aantal verwijzende domeinen ($domains), de trustflow-waarde ($trustflow), backlinks ($backlinks) enz. in de scraper
Rank::MajesticSEO
Enkelvoudige resultaten worden opgeslagen in gewone variabelen (prefix $ + naam in Latijns schrift)
Arrays van resultaten
Arrays van resultaten - wanneer één query overeenkomt met een lijst van resultaten; elk element van de lijst kan op zijn beurt meerdere geneste elementen bevatten. Laten we dit bekijken aan de hand van het voorbeeld van Google-output - deze wordt in de scraper weergegeven door de array $serp; voor de duidelijkheid gebruiken we een tabel en noteren we de eerste 5 resultaten van de output:
| Link ($link) | Anker ($anchor) | Snippet ($snippet) |
|---|---|---|
| http://www.speedtest.net/ | Speedtest.net by Ookla - The Global Broadband Speed Test | Test your Internet connection bandwidth to locations around the world with this interactive broadband speed test from Ookla. |
| http://en.wikipedia.org/wiki/Test_cricket | Test cricket - Wikipedia, the free encyclopedia | Test cricket is the longest form of the sport of cricket. Test matches are played between national representative teams with "Test status", as determined by the ... |
| http://www.speakeasy.net/speedtest/ | Speakeasy Speed Test | Saturday 03-May 2014, 11:04:29 AM Your IP: The Speakeasy Speed Test requires Flash v7 or higher. Please update your browser. See Pricing Or Call Today |
| http://www.humanmetrics.com/cgi-win/jtypes2.asp | Personality test based on C. Jung and I. Briggs Myers type theory | Humanmetrics Jung Typology Test™ instrument uses methodology, questionnaire, scoring and software that are proprietary to Humanmetrics, and shall not be ... |
| http://test-ipv6.com/ | Test your IPv6. | This will test your browser and connection for IPv6 readiness, as well as show you your current IPV4 and IPv6 address. ... Test your IPv6 connectivity. JavaScript ... |
Elke positie in de output wordt opgeslagen in een array met 3 geneste elementen - link ($link), anker ($anchor), snippet ($snippet)
Een ander voorbeeld - een lijst met gerelateerde zoekwoorden, die wordt opgeslagen in de array $related:
| Zoekwoord($key) |
|---|
| test wwe |
| depression test |
| test my speed |
| wonderlic test |
| test personality |
| act test |
| jiggle test |
| bipolar test |
Zoals te zien is, bevat deze array slechts één genest element - zoekwoord ($key)
De nummering van array-elementen begint bij 0, voorbeeld van toegang tot afzonderlijke array-elementen:
$serp.0.link- de eerste link uit de output$serp.3.anchor- het vierde anker uit de output$related.0.key- het eerste gerelateerde zoekwoord
Meer details over het formatteren van eenvoudige resultaten en arrays worden hieronder beschreven
Principes van formattering
Nadat de scraper gegevens heeft verzameld in eenvoudige resultaten en arrays, moeten deze in het gewenste formaat worden weergegeven (opgeslagen in een bestand). Voor gemak en functionaliteit gebruikt A-Parser de Template Toolkit sjabloon-engine. Laten we veelgebruikte constructies doornemen; hiervoor gebruiken we de tool Sjablonen testen. We kiezen een project voor de scraper
SE::Google:

Op de screenshot worden 3 velden weergegeven:
- JSON - de interne weergave van gegevens in de scraper
- Template - het sjabloon volgens welke de formattering van het resultaat plaatsvindt
- Result - de daadwerkelijk getransformeerde gegevens volgens het opgegeven sjabloon; in deze vorm wordt het resultaat in het bestand geschreven
Door het sjabloon te wijzigen, kunnen we de vorm van het resultaat veranderen; bekijk het volgende sjabloon:

Tekst in het veld Template (Sjabloon):
Rapport voor query: $query
Concurrentie: $totalcount
Lijst met links, ankers en snippets:
$serp.format('$link $anchor\n$snippet\n\n')
Laten we de belangrijkste regels markeren:
- Gewone tekst wordt ongewijzigd in het resultaat weergegeven
- Voor de uitvoer van eenvoudige resultaten moet op de gewenste plaats de variabele met het gewenste resultaat en de prefix
$worden geplaatst - Voor het formatteren van arrays wordt de methode
.formatgebruikt, daarover hieronder meer \nzorgt voor een regeleinde
Formatteren van arrays
Laten we de constructie ontleden:
$serp.format('$link $anchor\n$snippet\n\n')
Deze notatie betekent dat voor de array $serp de methode .format moet worden aangeroepen met de parameter '$link $anchor\n$snippet\n\n'. De methode .format verbindt alle elementen van de array tot een string volgens het sjabloon dat in de parameter is opgegeven; het sjabloon zelf betekent: voor elk element van de array $serp de link en het anker gescheiden door een spatie weergeven, vervolgens op een nieuwe regel de snippet weergeven, gevolgd door nog twee regeleinden, wat resulteert in een lege regel tussen de resultaten.
Gebruik van de template engine
Uitvoer van variabelen
Om de template engine te gebruiken, moeten de tags [% %] worden ingevoegd, en binnen de tags de logica die moet worden uitgevoerd.


Door een array lopen
Om elementen van een array weer te geven, moet de constructie FOREACH worden gebruikt:
[% FOREACH i IN p1.list;
i.cms _ "\n";
END %]
Meer informatie en voorbeelden over de template engine in Kenmerken van sjablonen in A-Parser.
Voorbeelden
Uitvoer van concurrentie
Weergave van de concurrentie per zoekopdracht (aantal resultaten per zoekopdracht) voor alle scrapers van zoekmachines (
SE::Google,
SE::Yandex...).
Resultaatformaat:
$query: $totalcount\n
Voorbeeld van resultaat:
test: 3910000000
viagra: 278000000
pvc ramen: 3220000
...
Gegevensextractie van links
Uitvoer van links uit de resultaten van zoekmachines.
Resultaatformaat:
$serp.format('$link\n')
Voorbeeld van resultaat:
http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket
http://www.humanmetrics.com/cgi-win/jtypes2.asp
http://html5test.com/
http://test-ipv6.com/
...
Gegevensextractie van suggesties
Uitvoer van suggesties van zoekmachines.
Resultaatformaat:
$results.format('$suggest\n')
Voorbeeld van resultaat:
testserver tanks online
gia-tests voor de russische taal
pannenkoekenbeslag recept
testikel
pizzadeeg met melk
Uitvoer van gegevens over de query
In
Net::HTTP en daarop gebaseerde scrapers is aanvullende uitvoer beschikbaar:
$proxy- de proxy waarop de query is uitgevoerd$headers- de headers van het antwoord$code- de antwoordcode$reason- de status van het antwoord

Uitvoer van variabele waarden in JSON
Uitvoer van alle redirects van een query
Voor deze taak is de variabele $response beschikbaar, waarmee alle variabelen van de query kunnen worden opgehaald, inclusief alle voorgaande redirects.
Resultaatformaat:
$response.Redirects.format('$URI\n--> ')$response.URI
Resultaat van de werking van de scraper:

Uitvoer in JSON met gebruik van de template engine voor het noteren van de datum
Het voorbeeld toont de uitvoer van de resultaten van de scraper
Net::Whois in JSON-formaat.

Het resultaat zal het domein zijn dat is gecontroleerd, de datum op het moment van controle en het resultaat van de controle. Zoals te zien is in het Resultaatformaat, verkrijgen we de datum met behulp van de template engine Template Toolkit.
Resultaatformaat:
{
"domain": "$query",
"date": "[% USE d = date(format = '%d.%m.20%y', locale = 'C');d.format() %]",
"expire": "$p1.expire_date",
},
Voorbeeld van resultaat:
[{
"domain": "a-parser.com",
"date": "05.05.2021",
"expire": "25.02.2022",
},
{}]
Voorbeeld downloaden
Hoe een voorbeeld te importeren in A-Parser
eJxtVG1v2jAQ/ivWCUQrZaxM2pdM+0BRkTYx6ErRPgQ0efWFeXXszHYYVZT/3nMS
EtruQyTf23P33EtK8Nw9uluLDr2DOCkhr98QwxJ9HP/4baRj79jNkWe5QjaBCHJu
HdrgnZw5kUFgygvlYbeLgFDo6ebGZjyglVvNGNuCMBmXegsxvQd/C7RPW4hONu6x
sSRDtlnfMME+s6C8SGsYkkZDMR5m4w9Xw6dRxJR54FQUqWejy09i3LhdXLLhrkfF
Yy5tizvIJ+NG/tkkI6eKPugKXvMD3hsqOJUKe/WcpCXPkAyDEBmsXbqxP3py5UJI
L43mqmEdOtR3YqMl0aV4bcg3MJfo5tZkfa66HaeOJW17gCCKOvZ7EwNxypXDCByV
OucUKl5bpEfLvbGrPNRD+hKMniq1wAOq3q3Gvy6kEjTOaUpBX9rA/7us3mBUHb3z
VAe0/yzVALG3BYHUwvXqWx8kzMLsibj4RbSVzKQn2c1MocOuXJHyETHvWrYMLcuM
xS5LA9zmpvXNUQtyTPqJTfNWV1Y7eEXkxWBeKh+MTuV+RRSsFHjyLPQ93clKz0y4
gsBMF0rRYBze9Qsyde0ggtC18E3wrE4R2Lf3EoE3Rrmva9KF+7KSFvBjKDCjXp5n
bSFp69XmbnFugbOlqrMnJ/F9c3Ku3tLAkNZ3b2ixiFq16865+weU50cdlxWN64+7
bZwCdK2MgDrkaBYQT6pnHsF5pA==
Website controleren op aanwezigheid in Google Nieuws op basis van zoekwoord

Resultaatformaat:
[% linksToOneString = p1.serp.format('$link. ');
matches = linksToOneString.match('.+?(' _ p1.query.domain _ ').+?');
IF matches.0;
p1.query.orig _';yes' _ "\n";
ELSE;
p1.query.orig _';no' _ "\n";
END %]
Voorbeeld van resultaat:
google scraper|a-parser.com;no
google scraper|forbes.ru;yes
Voorbeeld downloaden
Hoe een voorbeeld te importeren in A-Parser
eJylVVFv2jAQ/iuR1YpWo1EQ7UuqaaIMpk6stKV9AoRccqQeju3aCQVR/vvOTkjS
ruNlEoq4u+++O9+dz1uSUrM0txoMpIaE4y1R7j8JyagXhj+kjDl4Z173GeZLL5IJ
ZcLDX2EQ8Go8WNNEcSBNoqg2oC3PuOaOhggWNOMpaW5JulGA7HIFWrPIGlmEsqIx
zGUmEENWlGeIae3+DccwqkIS8WrIATRnYmkUumCQGn9wwCXmNfr7x0Psz3Wozg4m
omtQTkU8O4xXWq43GlLNwNQ8W0EQkN102iTYLKyr6UudUNu08fFEuNM+yKGAETqK
2PvqqZZvK+YvHO6kcWQxvtc4vZwIVMyfwSDqo6PvTCcN/8u3k4Y3sywvGeiNX8zB
DAnQ5lg+CTvzJmSCFuLM132viOQHqCi5pGYIbVxuwDTeufQGo95nQCE/4G6+T8Tx
lJTFGNEVPEgsxoK54dvXCKUbmtj6HUU0BWvdF+TUT9d28mgUsZRJQXleUTvKVZUf
BXvJx00i1maFbelrmaAqBUfgUt13Y0yOnEyQInO+d7kPCReUG2gSg6n2KSYSlZZU
Z2hgKWiaSj1UNh1Ub4kUHc4HsAJe+Tv6q4zxCK9dZ4FO14Xj55DhXxy78nT1UDiG
rxpzKFmcdDX8VXlFciBjPHj0hMfmLGEpyqbrrnBIAlQuAVRZshtbskRqKMMUzEV0
XEEKhJ35qmMdVaneHcMtKiMzPbfUeY2b+ztk3PSNFGe2IQZwKeUFIW8WJG1f9i75
IJPprmpyLQYq51IsWDwsruV+HDLxgGtzKLrSLj5bJpFxjk02cF8NW8cUTbVCdd6P
zl0XwlZyvyQxScnNz1F+cqUZ5nxhE0ywMfWoBeWccv54P6hbSDWgKEyy4Ly9cN/A
fs/zb8tpLnKN54S2E9rV//bTGz3L97o/lwneuf/iwvv2hBsAt55NO4VYYh9sN939
CUkvf0vssoO1oiKCKL8SO9ej4oEp36tt/ZkJtzucy9/mNgfZqlsI6rB9BofOPil/
AGn6WSM=
Uitvoer van timestamp waarde in datumformaat
Soms bevatten de resultaten geen gewone datum, maar een timestamp-waarde zoals in de scraper
Social::Instagram::Tag. Deze waarde kan in een datumformaat worden weergegeven met behulp van de Template-Toolkit sjabloon-engine.

Resultaatformaat:
[% USE date;
query.orig _ ": total posts - " _ postscount _ "\nPosts:\n";
FOREACH i IN posts;
d = date.format(i.time, format => '%d.%m.20%y');
i.link _ " - " _ d _ ":\n";
i.text _ "\n";
END %]
Voorbeeld van resultaat:
sport: total posts - 96500663
Posts:
https://www.instagram.com/p/COfJHshAkeD/ - 05.05.2021:
Quelques exemples de notre nouvelle campagne de communication personnalisable avec le nom des clubs 😀
Vous préférez quel visuel : 1, 2, 3, 4, 5 ? 🤔
#clubnormand #tennis #padel #beachtennis #tenniscourt #padelcourt #beachtenniscourt #lnt #LigueNormandieTennis #🎾 #sport #normandie #normandietourisme
https://www.instagram.com/p/COfJG7olavg/ - 05.05.2021:
💥 Sau màn lật đổ “Bà già” thành công, Nửa xanh thành Milan chính thức vượt qua Nửa đỏ về số lần lên đỉnh nước Ý nhiều nhất lịch sử.
-----------------------------
➖ Website: https://webthethao247.com/
➖ https://g.page/webthethao247?share
#wtt247 #webthethao247 #thethao #sport #bongda #SerieA #InterMilan #Juventus #ACMilan
https://www.instagram.com/p/COfJG1Hg7ax/ - 05.05.2021:
Which Skill was better 1 or 2? 🤔👇
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
________________________________________
Leave a Like 👍🏽
Subscribe for more 🔔
Leave your thoughts in the Comments 💬
________________________________________
❌Ignore the Tags ❌
#football #soccer #fussball #futbol #fifa #championsleague #bundesliga #ucl #footballmemes #goal #transfer #sports #penalty #ultimateteam #pacybits #fut #ultras #laliga #freekick #referee #sport #calcio #messi #ronaldo #skills #premierleague #foul #footballseason
https://www.instagram.com/p/COfIlXqhfAa/ - 05.05.2021:
Be Fuckin’ Ready 🤣🤣🤣
Get ready to fly!!!! 🏐🏐🏐🏐
Follow - @crackonkings
#beachball #nalin&kane #trance #music #90s #onyerhead #festival #party #afterparty #love #summer #uk #happy #sesh #crackon #football #sport #festivaloutfit #festivalfashion #sun #dj #dancing #club #festivalgirl #house #techno #rave
...
Voorbeeld downloaden
Hoe een voorbeeld te importeren in A-Parser
eJx1VNtuGjEQ/RXLCkoj0VVSqS9bpRKhoFJRNuXyxKLKxQa58dqO7aVBiH/vjPeW
pM0+7RzPzDlzsU80MP/g753wIniark/Uxn+a0oXZSqbSdKJ9YHvHijRdsj15T5ay
EAAVlgRDOAuCiCewlKB9apnzwmGm9RsJwImLHStVoP0TDUcrgMschHOSYwbJwd4Z
V7AASqIbPTBVotu6R1aLUeT8lOtcP5bCHRPj5J78JDlNQVBgiljjgwehOQU4GltT
6hB98lzfI5LCT05jlnE2Hw2GX4kkk1nljnDg5DYyJZWYdzIJUHifVCa5/Uwuezzp
FcmH697x8gpiCHwyUVI/RKpGAa/ENYSVVxBPraAIj2ZfSG9Dz5tNn1aF+3Fkgrov
7E1Sz6U9XLCDWBrslYydb2LAmrECu3WB6vG0qeAqCU+YgXEugzSaqYoBx9WxrrR8
jN3WBnyxxVL4sTMFQKi6Bo+NujW9iDaFFGWM/VHF0HTHlBd96kHqmIEQ/vpEBuFY
MC6zqAfwEzV6oNRUHITq3GL+u1IqDrs12EHQpA78v0v2T45zW95zKti6Pw40tFmi
dZd976K4mZo9VM5/Qd1KFjKA7Ye4T4BeA/gghG17NsOeFcaJlqbOXLPDTbNC44p3
IxvYDnpRxouxvAS3Ru/kPquvTeNZ6iVc50wPDV5HrEuXSsFYvJh36zHw9RjQ6AS+
Dh5GCiy9ua40GKP8t0Ul1ToJ6/cRBRbQyeesdcotU2o1nz4/wUAfjM30yLlX44uL
Qb01Drm2sLx7A2sFpZ037cvSPlWnt96X9HSGuf3291UAFonugEG3PAyFpjfnvwdy
t1Y=