Report Overview
Submitted URL
cloudflare-ipfs.com/ipfs/bafkreidjoalzf2cxockalu2aese3rbrnd7im2svynt34w6uxq3s5hsnjv4
IP
104.17.64.14
ASN
#13335 CLOUDFLARENET
Submitted
2024-04-26 17:18:59
Access
public
Website Title
We-Transfer
Final URL
cloudflare-ipfs.com/ipfs/bafkreidjoalzf2cxockalu2aese3rbrnd7im2svynt34w6uxq3s5hsnjv4
Tags
urlquery detections
No alerts detected
Detections
urlquery
0
Network Intrusion Detection
0
Threat Detection Systems
8
Domain Summary
Domain / FQDN | Rank | Registered | First Seen | Last Seen | Sent | Received | IP |
---|---|---|---|---|---|---|---|
cloudflare-ipfs.com | 75147 | 2018-05-30 | 2021-01-20 | 2024-03-15 | 1.9 kB | 357 kB | 104.17.96.13 |
Related reports
Network Intrusion Detection Systems
Suricata /w Emerging Threats Pro
Threat Detection Systems
Public InfoSec YARA rules
No alerts detected
OpenPhish
Scan Date | Severity | Indicator | Alert |
---|---|---|---|
2024-04-26 | medium | cloudflare-ipfs.com/ipfs/bafkreidjoalzf2cxockalu2aese3rbrnd7im2svynt34w6uxq3s5hsnjv4 | WeTransfer |
PhishTank
Scan Date | Severity | Indicator | Alert |
---|---|---|---|
2023-05-02 | medium | cloudflare-ipfs.com/ipfs/logo__.png | Other |
2023-05-02 | medium | cloudflare-ipfs.com/favicon.ico | Other |
2024-04-26 | medium | cloudflare-ipfs.com/ipfs/bafkreidjoalzf2cxockalu2aese3rbrnd7im2svynt34w6uxq3s5hsnjv4 | Other |
mnemonic secure dns
No alerts detected
Quad9 DNS
No alerts detected
ThreatFox
No alerts detected
JavaScript (3)
URL | Size | First Seen | Last Seen | |
---|---|---|---|---|
data:application/x-javascript;base64,DQpkb2N1bWVudC53cml0ZSh1bmVzY2FwZSgnJTNDZGl2JTIwY2xhc3MlM0QlMjJyaWdodC1uYXYlMjIlM0UlM0N1bCUyMGNsYXNzJTNEJTIybGlzdCUyMiUzRSUzQ2xpJTNFUHJpY2luZyUzQy9saSUzRSUzQ2xpJTNFQ29tcGFueSUzQy9saSUzRSUzQ2xpJTNFSGVscCUzQy9saSUzRSUzQ2xpJTNFU2lnbiUyMHVwJTNDL2xpJTNFJTNDbGklM0VMb2clMjBpbiUzQy9saSUzRSUzQy91bCUzRSUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJmaWxlcy1saXN0JTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJmLWhlYWRlciUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyZC1pY29uJTIyJTNFJTNDc3ZnJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTcwJTIwMTcwJTIyJTNFJTNDZyUyMGZpbGwlM0QlMjIlMjNkNGQ3ZDklMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNMTQ1LjEwNCUyMDI0Ljg5NmMzMy4xOTUlMjAzMy4xOTQlMjAzMy4xOTUlMjA4Ny4wMTQlMjAwJTIwMTIwLjIwOC0zMy4xOTQlMjAzMy4xOTUtODcuMDE0JTIwMzMuMTk1LTEyMC4yMDglMjAwQy04LjMlMjAxMTEuOTEtOC4zJTIwNTguMDklMjAyNC44OTYlMjAyNC44OTYlMjA1OC4wOS04LjMlMjAxMTEuOTEtOC4zJTIwMTQ1LjEwNCUyMDI0Ljg5NnptLTcuMDcxJTIwNy4wNzFjLTI5LjI5LTI5LjI5LTc2Ljc3Ny0yOS4yOS0xMDYuMDY2JTIwMC0yOS4yOSUyMDI5LjI5LTI5LjI5JTIwNzYuNzc3JTIwMCUyMDEwNi4wNjYlMjAyOS4yOSUyMDI5LjI5JTIwNzYuNzc3JTIwMjkuMjklMjAxMDYuMDY2JTIwMCUyMDI5LjI5LTI5LjI5JTIwMjkuMjktNzYuNzc3JTIwMC0xMDYuMDY2eiUyMiUzRSUzQy9wYXRoJTNFJTNDcGF0aCUyMGQlM0QlMjJNODIlMjAxMDAuODQzVjU5LjAwN0E0LjAwNiUyMDQuMDA2JTIwMCUyMDAlMjAxJTIwODYlMjA1NWMyLjIxJTIwMCUyMDQlMjAxLjc5NCUyMDQlMjA0LjAwN3Y0MS43NzdsMTUuOTU2LTE1Ljk1NmE0LjAwMyUyMDQuMDAzJTIwMCUyMDAlMjAxJTIwNS42NTclMjAwJTIwNC4wMDQlMjA0LjAwNCUyMDAlMjAwJTIwMSUyMDAlMjA1LjY1N2wtMjIuNjI4JTIwMjIuNjI4YTMuOTklMjAzLjk5JTIwMCUyMDAlMjAxLTMuMDE3JTIwMS4xNjYlMjAzLjk5MiUyMDMuOTkyJTIwMCUyMDAlMjAxLTMuMDEyLTEuMTY2TDYwLjMyOCUyMDkwLjQ4NWE0LjAwMyUyMDQuMDAzJTIwMCUyMDAlMjAxJTIwMC01LjY1NyUyMDQuMDA0JTIwNC4wMDQlMjAwJTIwMCUyMDElMjA1LjY1NyUyMDBMODIlMjAxMDAuODQzeiUyMiUzRSUzQy9wYXRoJTNFJTNDL2clM0UlM0Mvc3ZnJTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIydGl0bGUlMjIlM0VSZWFkeSUyMHdoZW4lMjB5b3UlMjBhcmUlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJpbmZvJTIyJTNFVHJhbnNmZXIlMjBleHBpcmVzJTIwaW4lMjA3JTIwZGF5cyUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJmLWZpbGVzJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJmaWxlJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJsJTIyJTNFJTNDcCUyMGNsYXNzJTNEJTIydGl0bGUlMjIlM0U3JTIwZmlsZXMlM0MvcCUzRSUzQ3AlMjBjbGFzcyUzRCUyMmluZm8lMjIlM0UxMzAlMjBNQiUzQy9wJTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyciUyMiUzRSUzQ2J1dHRvbiUyMGNsYXNzJTNEJTIyYnV0dG9uJTIyJTNFUHJldmlldyUzQy9idXR0b24lM0UlM0MvZGl2JTNFJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMmYtZm9vdGVyJTIyJTNFJTNDYnV0dG9uJTIwY2xhc3MlM0QlMjJidXR0b24lMjIlM0VWaWV3JTIwRmlsZXMlM0MvYnV0dG9uJTNFJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMmxvZ2luLXNsaWRlciUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIybC1oZWFkZXIlMjIlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMmNscy1idG4lMjIlM0UlRDclM0MvZGl2JTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIybC1kb3dubG9hZCUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIybCUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIydGl0bGUlMjIlM0VJdGVtcyUyMGluJTIwdGhpcyUyMHRyYW5zZmVyJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyZGV0YWlsJTIyJTNFNyUyMGZpbGVzJTJDJTIwMTMwJTIwTUIldTMwRkJUcmFuc2ZlciUyMGV4cGlyZXMlMjBpbiUyMDclMjBkYXlzJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnIlMjIlM0UlM0NidXR0b24lM0VEb3dubG9hZCUyMGFsbCUzQy9idXR0b24lM0UlM0MvZGl2JTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIybC1saXN0JTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJjYXJkJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJsJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJ0aXRsZSUyMiUzRVB1cmNoYXNlX29yZGVyLlBERiUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnNpemUlMjIlM0UxOCUyME1CJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnIlMjIlM0UlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxNzAlMjAxNzAlMjIlM0UlM0NnJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTE0NS4xMDQlMjAyNC44OTZjMzMuMTk1JTIwMzMuMTk0JTIwMzMuMTk1JTIwODcuMDE0JTIwMCUyMDEyMC4yMDgtMzMuMTk0JTIwMzMuMTk1LTg3LjAxNCUyMDMzLjE5NS0xMjAuMjA4JTIwMEMtOC4zJTIwMTExLjkxLTguMyUyMDU4LjA5JTIwMjQuODk2JTIwMjQuODk2JTIwNTguMDktOC4zJTIwMTExLjkxLTguMyUyMDE0NS4xMDQlMjAyNC44OTZ6bS03LjA3MSUyMDcuMDcxYy0yOS4yOS0yOS4yOS03Ni43NzctMjkuMjktMTA2LjA2NiUyMDAtMjkuMjklMjAyOS4yOS0yOS4yOSUyMDc2Ljc3NyUyMDAlMjAxMDYuMDY2JTIwMjkuMjklMjAyOS4yOSUyMDc2Ljc3NyUyMDI5LjI5JTIwMTA2LjA2NiUyMDAlMjAyOS4yOS0yOS4yOSUyMDI5LjI5LTc2Ljc3NyUyMDAtMTA2LjA2NnolMjIlM0UlM0MvcGF0aCUzRSUzQ3BhdGglMjBkJTNEJTIyTTgyJTIwMTAwLjg0M1Y1OS4wMDdBNC4wMDYlMjA0LjAwNiUyMDAlMjAwJTIwMSUyMDg2JTIwNTVjMi4yMSUyMDAlMjA0JTIwMS43OTQlMjA0JTIwNC4wMDd2NDEuNzc3bDE1Ljk1Ni0xNS45NTZhNC4wMDMlMjA0LjAwMyUyMDAlMjAwJTIwMSUyMDUuNjU3JTIwMCUyMDQuMDA0JTIwNC4wMDQlMjAwJTIwMCUyMDElMjAwJTIwNS42NTdsLTIyLjYyOCUyMDIyLjYyOGEzLjk5JTIwMy45OSUyMDAlMjAwJTIwMS0zLjAxNyUyMDEuMTY2JTIwMy45OTIlMjAzLjk5MiUyMDAlMjAwJTIwMS0zLjAxMi0xLjE2Nkw2MC4zMjglMjA5MC40ODVhNC4wMDMlMjA0LjAwMyUyMDAlMjAwJTIwMSUyMDAtNS42NTclMjA0LjAwNCUyMDQuMDA0JTIwMCUyMDAlMjAxJTIwNS42NTclMjAwTDgyJTIwMTAwLjg0M3olMjIlM0UlM0MvcGF0aCUzRSUzQy9nJTNFJTNDL3N2ZyUzRSUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJjYXJkJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJsJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJ0aXRsZSUyMiUzRUlNR18wMjg5LkpQRyUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnNpemUlMjIlM0UyJTIwTUIlM0MvZGl2JTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyciUyMiUzRSUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE3MCUyMDE3MCUyMiUzRSUzQ2clMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNMTQ1LjEwNCUyMDI0Ljg5NmMzMy4xOTUlMjAzMy4xOTQlMjAzMy4xOTUlMjA4Ny4wMTQlMjAwJTIwMTIwLjIwOC0zMy4xOTQlMjAzMy4xOTUtODcuMDE0JTIwMzMuMTk1LTEyMC4yMDglMjAwQy04LjMlMjAxMTEuOTEtOC4zJTIwNTguMDklMjAyNC44OTYlMjAyNC44OTYlMjA1OC4wOS04LjMlMjAxMTEuOTEtOC4zJTIwMTQ1LjEwNCUyMDI0Ljg5NnptLTcuMDcxJTIwNy4wNzFjLTI5LjI5LTI5LjI5LTc2Ljc3Ny0yOS4yOS0xMDYuMDY2JTIwMC0yOS4yOSUyMDI5LjI5LTI5LjI5JTIwNzYuNzc3JTIwMCUyMDEwNi4wNjYlMjAyOS4yOSUyMDI5LjI5JTIwNzYuNzc3JTIwMjkuMjklMjAxMDYuMDY2JTIwMCUyMDI5LjI5LTI5LjI5JTIwMjkuMjktNzYuNzc3JTIwMC0xMDYuMDY2eiUyMiUzRSUzQy9wYXRoJTNFJTNDcGF0aCUyMGQlM0QlMjJNODIlMjAxMDAuODQzVjU5LjAwN0E0LjAwNiUyMDQuMDA2JTIwMCUyMDAlMjAxJTIwODYlMjA1NWMyLjIxJTIwMCUyMDQlMjAxLjc5NCUyMDQlMjA0LjAwN3Y0MS43NzdsMTUuOTU2LTE1Ljk1NmE0LjAwMyUyMDQuMDAzJTIwMCUyMDAlMjAxJTIwNS42NTclMjAwJTIwNC4wMDQlMjA0LjAwNCUyMDAlMjAwJTIwMSUyMDAlMjA1LjY1N2wtMjIuNjI4JTIwMjIuNjI4YTMuOTklMjAzLjk5JTIwMCUyMDAlMjAxLTMuMDE3JTIwMS4xNjYlMjAzLjk5MiUyMDMuOTkyJTIwMCUyMDAlMjAxLTMuMDEyLTEuMTY2TDYwLjMyOCUyMDkwLjQ4NWE0LjAwMyUyMDQuMDAzJTIwMCUyMDAlMjAxJTIwMC01LjY1NyUyMDQuMDA0JTIwNC4wMDQlMjAwJTIwMCUyMDElMjA1LjY1NyUyMDBMODIlMjAxMDAuODQzeiUyMiUzRSUzQy9wYXRoJTNFJTNDL2clM0UlM0Mvc3ZnJTNFJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMmNhcmQlMjIlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMmwlMjIlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnRpdGxlJTIyJTNFSU1HXzAyMTAuSlBHJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyc2l6ZSUyMiUzRTIlMjBNQiUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJyJTIyJTNFJTNDc3ZnJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTcwJTIwMTcwJTIyJTNFJTNDZyUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk0xNDUuMTA0JTIwMjQuODk2YzMzLjE5NSUyMDMzLjE5NCUyMDMzLjE5NSUyMDg3LjAxNCUyMDAlMjAxMjAuMjA4LTMzLjE5NCUyMDMzLjE5NS04Ny4wMTQlMjAzMy4xOTUtMTIwLjIwOCUyMDBDLTguMyUyMDExMS45MS04LjMlMjA1OC4wOSUyMDI0Ljg5NiUyMDI0Ljg5NiUyMDU4LjA5LTguMyUyMDExMS45MS04LjMlMjAxNDUuMTA0JTIwMjQuODk2em0tNy4wNzElMjA3LjA3MWMtMjkuMjktMjkuMjktNzYuNzc3LTI5LjI5LTEwNi4wNjYlMjAwLTI5LjI5JTIwMjkuMjktMjkuMjklMjA3Ni43NzclMjAwJTIwMTA2LjA2NiUyMDI5LjI5JTIwMjkuMjklMjA3Ni43NzclMjAyOS4yOSUyMDEwNi4wNjYlMjAwJTIwMjkuMjktMjkuMjklMjAyOS4yOS03Ni43NzclMjAwLTEwNi4wNjZ6JTIyJTNFJTNDL3BhdGglM0UlM0NwYXRoJTIwZCUzRCUyMk04MiUyMDEwMC44NDNWNTkuMDA3QTQuMDA2JTIwNC4wMDYlMjAwJTIwMCUyMDElMjA4NiUyMDU1YzIuMjElMjAwJTIwNCUyMDEuNzk0JTIwNCUyMDQuMDA3djQxLjc3N2wxNS45NTYtMTUuOTU2YTQuMDAzJTIwNC4wMDMlMjAwJTIwMCUyMDElMjA1LjY1NyUyMDAlMjA0LjAwNCUyMDQuMDA0JTIwMCUyMDAlMjAxJTIwMCUyMDUuNjU3bC0yMi42MjglMjAyMi42MjhhMy45OSUyMDMuOTklMjAwJTIwMCUyMDEtMy4wMTclMjAxLjE2NiUyMDMuOTkyJTIwMy45OTIlMjAwJTIwMCUyMDEtMy4wMTItMS4xNjZMNjAuMzI4JTIwOTAuNDg1YTQuMDAzJTIwNC4wMDMlMjAwJTIwMCUyMDElMjAwLTUuNjU3JTIwNC4wMDQlMjA0LjAwNCUyMDAlMjAwJTIwMSUyMDUuNjU3JTIwMEw4MiUyMDEwMC44NDN6JTIyJTNFJTNDL3BhdGglM0UlM0MvZyUzRSUzQy9zdmclM0UlM0MvZGl2JTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyY2FyZCUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIybCUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIydGl0bGUlMjIlM0VTcGVjaWZpY2F0aW9ucy5QREYlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJzaXplJTIyJTNFMTIlMjBNQiUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJyJTIyJTNFJTNDc3ZnJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTcwJTIwMTcwJTIyJTNFJTNDZyUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk0xNDUuMTA0JTIwMjQuODk2YzMzLjE5NSUyMDMzLjE5NCUyMDMzLjE5NSUyMDg3LjAxNCUyMDAlMjAxMjAuMjA4LTMzLjE5NCUyMDMzLjE5NS04Ny4wMTQlMjAzMy4xOTUtMTIwLjIwOCUyMDBDLTguMyUyMDExMS45MS04LjMlMjA1OC4wOSUyMDI0Ljg5NiUyMDI0Ljg5NiUyMDU4LjA5LTguMyUyMDExMS45MS04LjMlMjAxNDUuMTA0JTIwMjQuODk2em0tNy4wNzElMjA3LjA3MWMtMjkuMjktMjkuMjktNzYuNzc3LTI5LjI5LTEwNi4wNjYlMjAwLTI5LjI5JTIwMjkuMjktMjkuMjklMjA3Ni43NzclMjAwJTIwMTA2LjA2NiUyMDI5LjI5JTIwMjkuMjklMjA3Ni43NzclMjAyOS4yOSUyMDEwNi4wNjYlMjAwJTIwMjkuMjktMjkuMjklMjAyOS4yOS03Ni43NzclMjAwLTEwNi4wNjZ6JTIyJTNFJTNDL3BhdGglM0UlM0NwYXRoJTIwZCUzRCUyMk04MiUyMDEwMC44NDNWNTkuMDA3QTQuMDA2JTIwNC4wMDYlMjAwJTIwMCUyMDElMjA4NiUyMDU1YzIuMjElMjAwJTIwNCUyMDEuNzk0JTIwNCUyMDQuMDA3djQxLjc3N2wxNS45NTYtMTUuOTU2YTQuMDAzJTIwNC4wMDMlMjAwJTIwMCUyMDElMjA1LjY1NyUyMDAlMjA0LjAwNCUyMDQuMDA0JTIwMCUyMDAlMjAxJTIwMCUyMDUuNjU3bC0yMi42MjglMjAyMi42MjhhMy45OSUyMDMuOTklMjAwJTIwMCUyMDEtMy4wMTclMjAxLjE2NiUyMDMuOTkyJTIwMy45OTIlMjAwJTIwMCUyMDEtMy4wMTItMS4xNjZMNjAuMzI4JTIwOTAuNDg1YTQuMDAzJTIwNC4wMDMlMjAwJTIwMCUyMDElMjAwLTUuNjU3JTIwNC4wMDQlMjA0LjAwNCUyMDAlMjAwJTIwMSUyMDUuNjU3JTIwMEw4MiUyMDEwMC44NDN6JTIyJTNFJTNDL3BhdGglM0UlM0MvZyUzRSUzQy9zdmclM0UlM0MvZGl2JTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyY2FyZCUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIybCUyMiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIydGl0bGUlMjIlM0VUZXN0Lk1QNCUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnNpemUlMjIlM0U0MyUyME1CJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnIlMjIlM0UlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxNzAlMjAxNzAlMjIlM0UlM0NnJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTE0NS4xMDQlMjAyNC44OTZjMzMuMTk1JTIwMzMuMTk0JTIwMzMuMTk1JTIwODcuMDE0JTIwMCUyMDEyMC4yMDgtMzMuMTk0JTIwMzMuMTk1LTg3LjAxNCUyMDMzLjE5NS0xMjAuMjA4JTIwMEMtOC4zJTIwMTExLjkxLTguMyUyMDU4LjA5JTIwMjQuODk2JTIwMjQuODk2JTIwNTguMDktOC4zJTIwMTExLjkxLTguMyUyMDE0NS4xMDQlMjAyNC44OTZ6bS03LjA3MSUyMDcuMDcxYy0yOS4yOS0yOS4yOS03Ni43NzctMjkuMjktMTA2LjA2NiUyMDAtMjkuMjklMjAyOS4yOS0yOS4yOSUyMDc2Ljc3NyUyMDAlMjAxMDYuMDY2JTIwMjkuMjklMjAyOS4yOSUyMDc2Ljc3NyUyMDI5LjI5JTIwMTA2LjA2NiUyMDAlMjAyOS4yOS0yOS4yOSUyMDI5LjI5LTc2Ljc3NyUyMDAtMTA2LjA2NnolMjIlM0UlM0MvcGF0aCUzRSUzQ3BhdGglMjBkJTNEJTIyTTgyJTIwMTAwLjg0M1Y1OS4wMDdBNC4wMDYlMjA0LjAwNiUyMDAlMjAwJTIwMSUyMDg2JTIwNTVjMi4yMSUyMDAlMjA0JTIwMS43OTQlMjA0JTIwNC4wMDd2NDEuNzc3bDE1Ljk1Ni0xNS45NTZhNC4wMDMlMjA0LjAwMyUyMDAlMjAwJTIwMSUyMDUuNjU3JTIwMCUyMDQuMDA0JTIwNC4wMDQlMjAwJTIwMCUyMDElMjAwJTIwNS42NTdsLTIyLjYyOCUyMDIyLjYyOGEzLjk5JTIwMy45OSUyMDAlMjAwJTIwMS0zLjAxNyUyMDEuMTY2JTIwMy45OTIlMjAzLjk5MiUyMDAlMjAwJTIwMS0zLjAxMi0xLjE2Nkw2MC4zMjglMjA5MC40ODVhNC4wMDMlMjA0LjAwMyUyMDAlMjAwJTIwMSUyMDAtNS42NTclMjA0LjAwNCUyMDQuMDA0JTIwMCUyMDAlMjAxJTIwNS42NTclMjAwTDgyJTIwMTAwLjg0M3olMjIlM0UlM0MvcGF0aCUzRSUzQy9nJTNFJTNDL3N2ZyUzRSUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJjYXJkJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJsJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJ0aXRsZSUyMiUzRVNjYW5fZG9jdW1lbnRzLlpJUCUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnNpemUlMjIlM0UxMyUyME1CJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBjbGFzcyUzRCUyMnIlMjIlM0UlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxNzAlMjAxNzAlMjIlM0UlM0NnJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTE0NS4xMDQlMjAyNC44OTZjMzMuMTk1JTIwMzMuMTk0JTIwMzMuMTk1JTIwODcuMDE0JTIwMCUyMDEyMC4yMDgtMzMuMTk0JTIwMzMuMTk1LTg3LjAxNCUyMDMzLjE5NS0xMjAuMjA4JTIwMEMtOC4zJTIwMTExLjkxLTguMyUyMDU4LjA5JTIwMjQuODk2JTIwMjQuODk2JTIwNTguMDktOC4zJTIwMTExLjkxLTguMyUyMDE0NS4xMDQlMjAyNC44OTZ6bS03LjA3MSUyMDcuMDcxYy0yOS4yOS0yOS4yOS03Ni43NzctMjkuMjktMTA2LjA2NiUyMDAtMjkuMjklMjAyOS4yOS0yOS4yOSUyMDc2Ljc3NyUyMDAlMjAxMDYuMDY2JTIwMjkuMjklMjAyOS4yOSUyMDc2Ljc3NyUyMDI5LjI5JTIwMTA2LjA2NiUyMDAlMjAyOS4yOS0yOS4yOSUyMDI5LjI5LTc2Ljc3NyUyMDAtMTA2LjA2NnolMjIlM0UlM0MvcGF0aCUzRSUzQ3BhdGglMjBkJTNEJTIyTTgyJTIwMTAwLjg0M1Y1OS4wMDdBNC4wMDYlMjA0LjAwNiUyMDAlMjAwJTIwMSUyMDg2JTIwNTVjMi4yMSUyMDAlMjA0JTIwMS43OTQlMjA0JTIwNC4wMDd2NDEuNzc3bDE1Ljk1Ni0xNS45NTZhNC4wMDMlMjA0LjAwMyUyMDAlMjAwJTIwMSUyMDUuNjU3JTIwMCUyMDQuMDA0JTIwNC4wMDQlMjAwJTIwMCUyMDElMjAwJTIwNS42NTdsLTIyLjYyOCUyMDIyLjYyOGEzLjk5JTIwMy45OSUyMDAlMjAwJTIwMS0zLjAxNyUyMDEuMTY2JTIwMy45OTIlMjAzLjk5MiUyMDAlMjAwJTIwMS0zLjAxMi0xLjE2Nkw2MC4zMjglMjA5MC40ODVhNC4wMDMlMjA0LjAwMyUyMDAlMjAwJTIwMSUyMDAtNS42NTclMjA0LjAwNCUyMDQuMDA0JTIwMCUyMDAlMjAxJTIwNS42NTclMjAwTDgyJTIwMTAwLjg0M3olMjIlM0UlM0MvcGF0aCUzRSUzQy9nJTNFJTNDL3N2ZyUzRSUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJjYXJkJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJsJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJ0aXRsZSUyMiUzRVNhbXBsZV9wcm9kdWN0LWJhc2VkJTIwYnVzaW5lc3MucWJ3JTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyc2l6ZSUyMiUzRTI3JTIwTUIlM0MvZGl2JTNFJTNDL2RpdiUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIyciUyMiUzRSUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE3MCUyMDE3MCUyMiUzRSUzQ2clMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNMTQ1LjEwNCUyMDI0Ljg5NmMzMy4xOTUlMjAzMy4xOTQlMjAzMy4xOTUlMjA4Ny4wMTQlMjAwJTIwMTIwLjIwOC0zMy4xOTQlMjAzMy4xOTUtODcuMDE0JTIwMzMuMTk1LTEyMC4yMDglMjAwQy04LjMlMjAxMTEuOTEtOC4zJTIwNTguMDklMjAyNC44OTYlMjAyNC44OTYlMjA1OC4wOS04LjMlMjAxMTEuOTEtOC4zJTIwMTQ1LjEwNCUyMDI0Ljg5NnptLTcuMDcxJTIwNy4wNzFjLTI5LjI5LTI5LjI5LTc2Ljc3Ny0yOS4yOS0xMDYuMDY2JTIwMC0yOS4yOSUyMDI5LjI5LTI5LjI5JTIwNzYuNzc3JTIwMCUyMDEwNi4wNjYlMjAyOS4yOSUyMDI5LjI5JTIwNzYuNzc3JTIwMjkuMjklMjAxMDYuMDY2JTIwMCUyMDI5LjI5LTI5LjI5JTIwMjkuMjktNzYuNzc3JTIwMC0xMDYuMDY2eiUyMiUzRSUzQy9wYXRoJTNFJTNDcGF0aCUyMGQlM0QlMjJNODIlMjAxMDAuODQzVjU5LjAwN0E0LjAwNiUyMDQuMDA2JTIwMCUyMDAlMjAxJTIwODYlMjA1NWMyLjIxJTIwMCUyMDQlMjAxLjc5NCUyMDQlMjA0LjAwN3Y0MS43NzdsMTUuOTU2LTE1Ljk1NmE0LjAwMyUyMDQuMDAzJTIwMCUyMDAlMjAxJTIwNS42NTclMjAwJTIwNC4wMDQlMjA0LjAwNCUyMDAlMjAwJTIwMSUyMDAlMjA1LjY1N2wtMjIuNjI4JTIwMjIuNjI4YTMuOTklMjAzLjk5JTIwMCUyMDAlMjAxLTMuMDE3JTIwMS4xNjYlMjAzLjk5MiUyMDMuOTkyJTIwMCUyMDAlMjAxLTMuMDEyLTEuMTY2TDYwLjMyOCUyMDkwLjQ4NWE0LjAwMyUyMDQuMDAzJTIwMCUyMDAlMjAxJTIwMC01LjY1NyUyMDQuMDA0JTIwNC4wMDQlMjAwJTIwMCUyMDElMjA1LjY1NyUyMDBMODIlMjAxMDAuODQzeiUyMiUzRSUzQy9wYXRoJTNFJTNDL2clM0UlM0Mvc3ZnJTNFJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0MvZGl2JTNFJTNDL2RpdiUzRSUzQy9kaXYlM0UlM0NkaXYlMjBpZCUzRCUyMm0tcm9vdCUyMiUzRSUzQy9kaXYlM0UlM0MvYm9keSUzRSUzQy9odG1sJTNFJykp | 11 kB | 2024-04-26 | 2024-04-26 | |
Pretty
Loading... | ||||
data:application/x-javascript;base64,LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgbWFpbi45NGZmYTczYi5qcy5MSUNFTlNFLnR4dCAqLw0KIWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPXs0NjM6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPXQoNzkxKSxsPXQoMjk2KTtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgbj0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1t0XSk7cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIituKyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9dmFyIG89bmV3IFNldCx1PXt9O2Z1bmN0aW9uIGkoZSxuKXtzKGUsbikscyhlKyJDYXB0dXJlIixuKX1mdW5jdGlvbiBzKGUsbil7Zm9yKHVbZV09bixlPTA7ZTxuLmxlbmd0aDtlKyspby5hZGQobltlXSl9dmFyIGM9ISgidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3d8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudHx8InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGY9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxkPS9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8scD17fSxtPXt9O2Z1bmN0aW9uIGgoZSxuLHQscixsLGEsbyl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PW58fDM9PT1ufHw0PT09bix0aGlzLmF0dHJpYnV0ZU5hbWU9cix0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1sLHRoaXMubXVzdFVzZVByb3BlcnR5PXQsdGhpcy5wcm9wZXJ0eU5hbWU9ZSx0aGlzLnR5cGU9bix0aGlzLnNhbml0aXplVVJMPWEsdGhpcy5yZW1vdmVFbXB0eVN0cmluZz1vfXZhciB2PXt9OyJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGUiLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dltlXT1uZXcgaChlLDAsITEsZSxudWxsLCExLCExKX0pKSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWVbMF07dltuXT1uZXcgaChuLDEsITEsZVsxXSxudWxsLCExLCExKX0pKSxbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZbZV09bmV3IGgoZSwyLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pKSxbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2W2VdPW5ldyBoKGUsMiwhMSxlLG51bGwsITEsITEpfSkpLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZbZV09bmV3IGgoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pKSxbImNoZWNrZWQiLCJtdWx0aXBsZSIsIm11dGVkIiwic2VsZWN0ZWQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2W2VdPW5ldyBoKGUsMywhMCxlLG51bGwsITEsITEpfSkpLFsiY2FwdHVyZSIsImRvd25sb2FkIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dltlXT1uZXcgaChlLDQsITEsZSxudWxsLCExLCExKX0pKSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2W2VdPW5ldyBoKGUsNiwhMSxlLG51bGwsITEsITEpfSkpLFsicm93U3BhbiIsInN0YXJ0Il0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dltlXT1uZXcgaChlLDUsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSkpO3ZhciBnPS9bXC06XShbYS16XSkvZztmdW5jdGlvbiB5KGUpe3JldHVybiBlWzFdLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gYihlLG4sdCxyKXt2YXIgbD12Lmhhc093blByb3BlcnR5KG4pP3Zbbl06bnVsbDsobnVsbCE9PWw/MCE9PWwudHlwZTpyfHwhKDI8bi5sZW5ndGgpfHwibyIhPT1uWzBdJiYiTyIhPT1uWzBdfHwibiIhPT1uWzFdJiYiTiIhPT1uWzFdKSYmKGZ1bmN0aW9uKGUsbix0LHIpe2lmKG51bGw9PT1ufHwidW5kZWZpbmVkIj09PXR5cGVvZiBufHxmdW5jdGlvbihlLG4sdCxyKXtpZihudWxsIT09dCYmMD09PXQudHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIG4pe2Nhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiFyJiYobnVsbCE9PXQ/IXQuYWNjZXB0c0Jvb2xlYW5zOiJkYXRhLSIhPT0oZT1lLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KSkmJiJhcmlhLSIhPT1lKTtkZWZhdWx0OnJldHVybiExfX0oZSxuLHQscikpcmV0dXJuITA7aWYocilyZXR1cm4hMTtpZihudWxsIT09dClzd2l0Y2godC50eXBlKXtjYXNlIDM6cmV0dXJuIW47Y2FzZSA0OnJldHVybiExPT09bjtjYXNlIDU6cmV0dXJuIGlzTmFOKG4pO2Nhc2UgNjpyZXR1cm4gaXNOYU4obil8fDE+bn1yZXR1cm4hMX0obix0LGwscikmJih0PW51bGwpLHJ8fG51bGw9PT1sP2Z1bmN0aW9uKGUpe3JldHVybiEhZi5jYWxsKG0sZSl8fCFmLmNhbGwocCxlKSYmKGQudGVzdChlKT9tW2VdPSEwOihwW2VdPSEwLCExKSl9KG4pJiYobnVsbD09PXQ/ZS5yZW1vdmVBdHRyaWJ1dGUobik6ZS5zZXRBdHRyaWJ1dGUobiwiIit0KSk6bC5tdXN0VXNlUHJvcGVydHk/ZVtsLnByb3BlcnR5TmFtZV09bnVsbD09PXQ/MyE9PWwudHlwZSYmIiI6dDoobj1sLmF0dHJpYnV0ZU5hbWUscj1sLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09dD9lLnJlbW92ZUF0dHJpYnV0ZShuKToodD0zPT09KGw9bC50eXBlKXx8ND09PWwmJiEwPT09dD8iIjoiIit0LHI/ZS5zZXRBdHRyaWJ1dGVOUyhyLG4sdCk6ZS5zZXRBdHRyaWJ1dGUobix0KSkpKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKGcseSk7dltuXT1uZXcgaChuLDEsITEsZSxudWxsLCExLCExKX0pKSwieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlIi5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZShnLHkpO3Zbbl09bmV3IGgobiwxLCExLGUsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCExLCExKX0pKSxbInhtbDpiYXNlIiwieG1sOmxhbmciLCJ4bWw6c3BhY2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UoZyx5KTt2W25dPW5ldyBoKG4sMSwhMSxlLCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCExLCExKX0pKSxbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2W2VdPW5ldyBoKGUsMSwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KSksdi54bGlua0hyZWY9bmV3IGgoInhsaW5rSHJlZiIsMSwhMSwieGxpbms6aHJlZiIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCEwLCExKSxbInNyYyIsImhyZWYiLCJhY3Rpb24iLCJmb3JtQWN0aW9uIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dltlXT1uZXcgaChlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSkpO3ZhciB3PXIuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsaz1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IiksUz1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSx4PVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksRT1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLEM9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxfPVN5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIiksTj1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksUD1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLHo9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSxUPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlX2xpc3QiKSxMPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxPPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKTtTeW1ib2wuZm9yKCJyZWFjdC5zY29wZSIpLFN5bWJvbC5mb3IoInJlYWN0LmRlYnVnX3RyYWNlX21vZGUiKTt2YXIgTT1TeW1ib2wuZm9yKCJyZWFjdC5vZmZzY3JlZW4iKTtTeW1ib2wuZm9yKCJyZWFjdC5sZWdhY3lfaGlkZGVuIiksU3ltYm9sLmZvcigicmVhY3QuY2FjaGUiKSxTeW1ib2wuZm9yKCJyZWFjdC50cmFjaW5nX21hcmtlciIpO3ZhciBSPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBqKGUpe3JldHVybiBudWxsPT09ZXx8Im9iamVjdCIhPT10eXBlb2YgZT9udWxsOiJmdW5jdGlvbiI9PT10eXBlb2YoZT1SJiZlW1JdfHxlWyJAQGl0ZXJhdG9yIl0pP2U6bnVsbH12YXIgRixEPU9iamVjdC5hc3NpZ247ZnVuY3Rpb24gSShlKXtpZih2b2lkIDA9PT1GKXRyeXt0aHJvdyBFcnJvcigpfWNhdGNoKHQpe3ZhciBuPXQuc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKTtGPW4mJm5bMV18fCIifXJldHVybiJcbiIrRitlfXZhciBVPSExO2Z1bmN0aW9uIEEoZSxuKXtpZighZXx8VSlyZXR1cm4iIjtVPSEwO3ZhciB0PUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYobilpZihuPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9fSksIm9iamVjdCI9PT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdChuLFtdKX1jYXRjaChzKXt2YXIgcj1zfVJlZmxlY3QuY29uc3RydWN0KGUsW10sbil9ZWxzZXt0cnl7bi5jYWxsKCl9Y2F0Y2gocyl7cj1zfWUuY2FsbChuLnByb3RvdHlwZSl9ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChzKXtyPXN9ZSgpfX1jYXRjaChzKXtpZihzJiZyJiYic3RyaW5nIj09PXR5cGVvZiBzLnN0YWNrKXtmb3IodmFyIGw9cy5zdGFjay5zcGxpdCgiXG4iKSxhPXIuc3RhY2suc3BsaXQoIlxuIiksbz1sLmxlbmd0aC0xLHU9YS5sZW5ndGgtMTsxPD1vJiYwPD11JiZsW29dIT09YVt1XTspdS0tO2Zvcig7MTw9byYmMDw9dTtvLS0sdS0tKWlmKGxbb10hPT1hW3VdKXtpZigxIT09b3x8MSE9PXUpZG97aWYoby0tLDA+LS11fHxsW29dIT09YVt1XSl7dmFyIGk9IlxuIitsW29dLnJlcGxhY2UoIiBhdCBuZXcgIiwiIGF0ICIpO3JldHVybiBlLmRpc3BsYXlOYW1lJiZpLmluY2x1ZGVzKCI8YW5vbnltb3VzPiIpJiYoaT1pLnJlcGxhY2UoIjxhbm9ueW1vdXM+IixlLmRpc3BsYXlOYW1lKSksaX19d2hpbGUoMTw9byYmMDw9dSk7YnJlYWt9fX1maW5hbGx5e1U9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dH1yZXR1cm4oZT1lP2UuZGlzcGxheU5hbWV8fGUubmFtZToiIik/SShlKToiIn1mdW5jdGlvbiBCKGUpe3N3aXRjaChlLnRhZyl7Y2FzZSA1OnJldHVybiBJKGUudHlwZSk7Y2FzZSAxNjpyZXR1cm4gSSgiTGF6eSIpO2Nhc2UgMTM6cmV0dXJuIEkoIlN1c3BlbnNlIik7Y2FzZSAxOTpyZXR1cm4gSSgiU3VzcGVuc2VMaXN0Iik7Y2FzZSAwOmNhc2UgMjpjYXNlIDE1OnJldHVybiBlPUEoZS50eXBlLCExKTtjYXNlIDExOnJldHVybiBlPUEoZS50eXBlLnJlbmRlciwhMSk7Y2FzZSAxOnJldHVybiBlPUEoZS50eXBlLCEwKTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBWKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlKXJldHVybiBlLmRpc3BsYXlOYW1lfHxlLm5hbWV8fG51bGw7aWYoInN0cmluZyI9PT10eXBlb2YgZSlyZXR1cm4gZTtzd2l0Y2goZSl7Y2FzZSB4OnJldHVybiJGcmFnbWVudCI7Y2FzZSBTOnJldHVybiJQb3J0YWwiO2Nhc2UgQzpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgRTpyZXR1cm4iU3RyaWN0TW9kZSI7Y2FzZSB6OnJldHVybiJTdXNwZW5zZSI7Y2FzZSBUOnJldHVybiJTdXNwZW5zZUxpc3QifWlmKCJvYmplY3QiPT09dHlwZW9mIGUpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgTjpyZXR1cm4oZS5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLkNvbnN1bWVyIjtjYXNlIF86cmV0dXJuKGUuX2NvbnRleHQuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Qcm92aWRlciI7Y2FzZSBQOnZhciBuPWUucmVuZGVyO3JldHVybihlPWUuZGlzcGxheU5hbWUpfHwoZT0iIiE9PShlPW4uZGlzcGxheU5hbWV8fG4ubmFtZXx8IiIpPyJGb3J3YXJkUmVmKCIrZSsiKSI6IkZvcndhcmRSZWYiKSxlO2Nhc2UgTDpyZXR1cm4gbnVsbCE9PShuPWUuZGlzcGxheU5hbWV8fG51bGwpP246VihlLnR5cGUpfHwiTWVtbyI7Y2FzZSBPOm49ZS5fcGF5bG9hZCxlPWUuX2luaXQ7dHJ5e3JldHVybiBWKGUobikpfWNhdGNoKHQpe319cmV0dXJuIG51bGx9ZnVuY3Rpb24gJChlKXt2YXIgbj1lLnR5cGU7c3dpdGNoKGUudGFnKXtjYXNlIDI0OnJldHVybiJDYWNoZSI7Y2FzZSA5OnJldHVybihuLmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuQ29uc3VtZXIiO2Nhc2UgMTA6cmV0dXJuKG4uX2NvbnRleHQuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Qcm92aWRlciI7Y2FzZSAxODpyZXR1cm4iRGVoeWRyYXRlZEZyYWdtZW50IjtjYXNlIDExOnJldHVybiBlPShlPW4ucmVuZGVyKS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiIixuLmRpc3BsYXlOYW1lfHwoIiIhPT1lPyJGb3J3YXJkUmVmKCIrZSsiKSI6IkZvcndhcmRSZWYiKTtjYXNlIDc6cmV0dXJuIkZyYWdtZW50IjtjYXNlIDU6cmV0dXJuIG47Y2FzZSA0OnJldHVybiJQb3J0YWwiO2Nhc2UgMzpyZXR1cm4iUm9vdCI7Y2FzZSA2OnJldHVybiJUZXh0IjtjYXNlIDE2OnJldHVybiBWKG4pO2Nhc2UgODpyZXR1cm4gbj09PUU/IlN0cmljdE1vZGUiOiJNb2RlIjtjYXNlIDIyOnJldHVybiJPZmZzY3JlZW4iO2Nhc2UgMTI6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIDIxOnJldHVybiJTY29wZSI7Y2FzZSAxMzpyZXR1cm4iU3VzcGVuc2UiO2Nhc2UgMTk6cmV0dXJuIlN1c3BlbnNlTGlzdCI7Y2FzZSAyNTpyZXR1cm4iVHJhY2luZ01hcmtlciI7Y2FzZSAxOmNhc2UgMDpjYXNlIDE3OmNhc2UgMjpjYXNlIDE0OmNhc2UgMTU6aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBuKXJldHVybiBuLmRpc3BsYXlOYW1lfHxuLm5hbWV8fG51bGw7aWYoInN0cmluZyI9PT10eXBlb2YgbilyZXR1cm4gbn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBIKGUpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJib29sZWFuIjpjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpjYXNlIm9iamVjdCI6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24gVyhlKXt2YXIgbj1lLnR5cGU7cmV0dXJuKGU9ZS5ub2RlTmFtZSkmJiJpbnB1dCI9PT1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09bnx8InJhZGlvIj09PW4pfWZ1bmN0aW9uIFEoZSl7ZS5fdmFsdWVUcmFja2VyfHwoZS5fdmFsdWVUcmFja2VyPWZ1bmN0aW9uKGUpe3ZhciBuPVcoZSk/ImNoZWNrZWQiOiJ2YWx1ZSIsdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLG4pLHI9IiIrZVtuXTtpZighZS5oYXNPd25Qcm9wZXJ0eShuKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgdCYmImZ1bmN0aW9uIj09PXR5cGVvZiB0LmdldCYmImZ1bmN0aW9uIj09PXR5cGVvZiB0LnNldCl7dmFyIGw9dC5nZXQsYT10LnNldDtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtyPSIiK2UsYS5jYWxsKHRoaXMsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTp0LmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7cj0iIitlfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXtlLl92YWx1ZVRyYWNrZXI9bnVsbCxkZWxldGUgZVtuXX19fX0oZSkpfWZ1bmN0aW9uIHEoZSl7aWYoIWUpcmV0dXJuITE7dmFyIG49ZS5fdmFsdWVUcmFja2VyO2lmKCFuKXJldHVybiEwO3ZhciB0PW4uZ2V0VmFsdWUoKSxyPSIiO3JldHVybiBlJiYocj1XKGUpP2UuY2hlY2tlZD8idHJ1ZSI6ImZhbHNlIjplLnZhbHVlKSwoZT1yKSE9PXQmJihuLnNldFZhbHVlKGUpLCEwKX1mdW5jdGlvbiBLKGUpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mKGU9ZXx8KCJ1bmRlZmluZWQiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCkpKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5hY3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0Y2gobil7cmV0dXJuIGUuYm9keX19ZnVuY3Rpb24gWShlLG4pe3ZhciB0PW4uY2hlY2tlZDtyZXR1cm4gRCh7fSxuLHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpudWxsIT10P3Q6ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gWChlLG4pe3ZhciB0PW51bGw9PW4uZGVmYXVsdFZhbHVlPyIiOm4uZGVmYXVsdFZhbHVlLHI9bnVsbCE9bi5jaGVja2VkP24uY2hlY2tlZDpuLmRlZmF1bHRDaGVja2VkO3Q9SChudWxsIT1uLnZhbHVlP24udmFsdWU6dCksZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpyLGluaXRpYWxWYWx1ZTp0LGNvbnRyb2xsZWQ6ImNoZWNrYm94Ij09PW4udHlwZXx8InJhZGlvIj09PW4udHlwZT9udWxsIT1uLmNoZWNrZWQ6bnVsbCE9bi52YWx1ZX19ZnVuY3Rpb24gRyhlLG4pe251bGwhPShuPW4uY2hlY2tlZCkmJmIoZSwiY2hlY2tlZCIsbiwhMSl9ZnVuY3Rpb24gSihlLG4pe0coZSxuKTt2YXIgdD1IKG4udmFsdWUpLHI9bi50eXBlO2lmKG51bGwhPXQpIm51bWJlciI9PT1yPygwPT09dCYmIiI9PT1lLnZhbHVlfHxlLnZhbHVlIT10KSYmKGUudmFsdWU9IiIrdCk6ZS52YWx1ZSE9PSIiK3QmJihlLnZhbHVlPSIiK3QpO2Vsc2UgaWYoInN1Ym1pdCI9PT1yfHwicmVzZXQiPT09cilyZXR1cm4gdm9pZCBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTtuLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpP2VlKGUsbi50eXBlLHQpOm4uaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpJiZlZShlLG4udHlwZSxIKG4uZGVmYXVsdFZhbHVlKSksbnVsbD09bi5jaGVja2VkJiZudWxsIT1uLmRlZmF1bHRDaGVja2VkJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIW4uZGVmYXVsdENoZWNrZWQpfWZ1bmN0aW9uIFooZSxuLHQpe2lmKG4uaGFzT3duUHJvcGVydHkoInZhbHVlIil8fG4uaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpKXt2YXIgcj1uLnR5cGU7aWYoISgic3VibWl0IiE9PXImJiJyZXNldCIhPT1yfHx2b2lkIDAhPT1uLnZhbHVlJiZudWxsIT09bi52YWx1ZSkpcmV0dXJuO249IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSx0fHxuPT09ZS52YWx1ZXx8KGUudmFsdWU9biksZS5kZWZhdWx0VmFsdWU9bn0iIiE9PSh0PWUubmFtZSkmJihlLm5hbWU9IiIpLGUuZGVmYXVsdENoZWNrZWQ9ISFlLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsIiIhPT10JiYoZS5uYW1lPXQpfWZ1bmN0aW9uIGVlKGUsbix0KXsibnVtYmVyIj09PW4mJksoZS5vd25lckRvY3VtZW50KT09PWV8fChudWxsPT10P2UuZGVmYXVsdFZhbHVlPSIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6ZS5kZWZhdWx0VmFsdWUhPT0iIit0JiYoZS5kZWZhdWx0VmFsdWU9IiIrdCkpfXZhciBuZT1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHRlKGUsbix0LHIpe2lmKGU9ZS5vcHRpb25zLG4pe249e307Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspblsiJCIrdFtsXV09ITA7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylsPW4uaGFzT3duUHJvcGVydHkoIiQiK2VbdF0udmFsdWUpLGVbdF0uc2VsZWN0ZWQhPT1sJiYoZVt0XS5zZWxlY3RlZD1sKSxsJiZyJiYoZVt0XS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Zm9yKHQ9IiIrSCh0KSxuPW51bGwsbD0wO2w8ZS5sZW5ndGg7bCsrKXtpZihlW2xdLnZhbHVlPT09dClyZXR1cm4gZVtsXS5zZWxlY3RlZD0hMCx2b2lkKHImJihlW2xdLmRlZmF1bHRTZWxlY3RlZD0hMCkpO251bGwhPT1ufHxlW2xdLmRpc2FibGVkfHwobj1lW2xdKX1udWxsIT09biYmKG4uc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiByZShlLG4pe2lmKG51bGwhPW4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IoYSg5MSkpO3JldHVybiBEKHt9LG4se3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBsZShlLG4pe3ZhciB0PW4udmFsdWU7aWYobnVsbD09dCl7aWYodD1uLmNoaWxkcmVuLG49bi5kZWZhdWx0VmFsdWUsbnVsbCE9dCl7aWYobnVsbCE9bil0aHJvdyBFcnJvcihhKDkyKSk7aWYobmUodCkpe2lmKDE8dC5sZW5ndGgpdGhyb3cgRXJyb3IoYSg5MykpO3Q9dFswXX1uPXR9bnVsbD09biYmKG49IiIpLHQ9bn1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTpIKHQpfX1mdW5jdGlvbiBhZShlLG4pe3ZhciB0PUgobi52YWx1ZSkscj1IKG4uZGVmYXVsdFZhbHVlKTtudWxsIT10JiYoKHQ9IiIrdCkhPT1lLnZhbHVlJiYoZS52YWx1ZT10KSxudWxsPT1uLmRlZmF1bHRWYWx1ZSYmZS5kZWZhdWx0VmFsdWUhPT10JiYoZS5kZWZhdWx0VmFsdWU9dCkpLG51bGwhPXImJihlLmRlZmF1bHRWYWx1ZT0iIityKX1mdW5jdGlvbiBvZShlKXt2YXIgbj1lLnRleHRDb250ZW50O249PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYiIiE9PW4mJm51bGwhPT1uJiYoZS52YWx1ZT1uKX1mdW5jdGlvbiB1ZShlKXtzd2l0Y2goZSl7Y2FzZSJzdmciOnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7Y2FzZSJtYXRoIjpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7ZGVmYXVsdDpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9fWZ1bmN0aW9uIGllKGUsbil7cmV0dXJuIG51bGw9PWV8fCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWU/dWUobik6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj09PWUmJiJmb3JlaWduT2JqZWN0Ij09PW4/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOmV9dmFyIHNlLGNlLGZlPShjZT1mdW5jdGlvbihlLG4pe2lmKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIhPT1lLm5hbWVzcGFjZVVSSXx8ImlubmVySFRNTCJpbiBlKWUuaW5uZXJIVE1MPW47ZWxzZXtmb3IoKHNlPXNlfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPSI8c3ZnPiIrbi52YWx1ZU9mKCkudG9TdHJpbmcoKSsiPC9zdmc+IixuPXNlLmZpcnN0Q2hpbGQ7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7Zm9yKDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKX19LCJ1bmRlZmluZWQiIT09dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihlLG4sdCxyKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbigoZnVuY3Rpb24oKXtyZXR1cm4gY2UoZSxuKX0pKX06Y2UpO2Z1bmN0aW9uIGRlKGUsbil7aWYobil7dmFyIHQ9ZS5maXJzdENoaWxkO2lmKHQmJnQ9PT1lLmxhc3RDaGlsZCYmMz09PXQubm9kZVR5cGUpcmV0dXJuIHZvaWQodC5ub2RlVmFsdWU9bil9ZS50ZXh0Q29udGVudD1ufXZhciBwZT17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sbWU9WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtmdW5jdGlvbiBoZShlLG4sdCl7cmV0dXJuIG51bGw9PW58fCJib29sZWFuIj09PXR5cGVvZiBufHwiIj09PW4/IiI6dHx8Im51bWJlciIhPT10eXBlb2Ygbnx8MD09PW58fHBlLmhhc093blByb3BlcnR5KGUpJiZwZVtlXT8oIiIrbikudHJpbSgpOm4rInB4In1mdW5jdGlvbiB2ZShlLG4pe2Zvcih2YXIgdCBpbiBlPWUuc3R5bGUsbilpZihuLmhhc093blByb3BlcnR5KHQpKXt2YXIgcj0wPT09dC5pbmRleE9mKCItLSIpLGw9aGUodCxuW3RdLHIpOyJmbG9hdCI9PT10JiYodD0iY3NzRmxvYXQiKSxyP2Uuc2V0UHJvcGVydHkodCxsKTplW3RdPWx9fU9iamVjdC5rZXlzKHBlKS5mb3JFYWNoKChmdW5jdGlvbihlKXttZS5mb3JFYWNoKChmdW5jdGlvbihuKXtuPW4rZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnN1YnN0cmluZygxKSxwZVtuXT1wZVtlXX0pKX0pKTt2YXIgZ2U9RCh7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtmdW5jdGlvbiB5ZShlLG4pe2lmKG4pe2lmKGdlW2VdJiYobnVsbCE9bi5jaGlsZHJlbnx8bnVsbCE9bi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IoYSgxMzcsZSkpO2lmKG51bGwhPW4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPW4uY2hpbGRyZW4pdGhyb3cgRXJyb3IoYSg2MCkpO2lmKCJvYmplY3QiIT09dHlwZW9mIG4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fCEoIl9faHRtbCJpbiBuLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihhKDYxKSl9aWYobnVsbCE9bi5zdHlsZSYmIm9iamVjdCIhPT10eXBlb2Ygbi5zdHlsZSl0aHJvdyBFcnJvcihhKDYyKSl9fWZ1bmN0aW9uIGJlKGUsbil7aWYoLTE9PT1lLmluZGV4T2YoIi0iKSlyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBuLmlzO3N3aXRjaChlKXtjYXNlImFubm90YXRpb24teG1sIjpjYXNlImNvbG9yLXByb2ZpbGUiOmNhc2UiZm9udC1mYWNlIjpjYXNlImZvbnQtZmFjZS1zcmMiOmNhc2UiZm9udC1mYWNlLXVyaSI6Y2FzZSJmb250LWZhY2UtZm9ybWF0IjpjYXNlImZvbnQtZmFjZS1uYW1lIjpjYXNlIm1pc3NpbmctZ2x5cGgiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciB3ZT1udWxsO2Z1bmN0aW9uIGtlKGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfXZhciBTZT1udWxsLHhlPW51bGwsRWU9bnVsbDtmdW5jdGlvbiBDZShlKXtpZihlPWJsKGUpKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIFNlKXRocm93IEVycm9yKGEoMjgwKSk7dmFyIG49ZS5zdGF0ZU5vZGU7biYmKG49a2wobiksU2UoZS5zdGF0ZU5vZGUsZS50eXBlLG4pKX19ZnVuY3Rpb24gX2UoZSl7eGU/RWU/RWUucHVzaChlKTpFZT1bZV06eGU9ZX1mdW5jdGlvbiBOZSgpe2lmKHhlKXt2YXIgZT14ZSxuPUVlO2lmKEVlPXhlPW51bGwsQ2UoZSksbilmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKUNlKG5bZV0pfX1mdW5jdGlvbiBQZShlLG4pe3JldHVybiBlKG4pfWZ1bmN0aW9uIHplKCl7fXZhciBUZT0hMTtmdW5jdGlvbiBMZShlLG4sdCl7aWYoVGUpcmV0dXJuIGUobix0KTtUZT0hMDt0cnl7cmV0dXJuIFBlKGUsbix0KX1maW5hbGx5e1RlPSExLChudWxsIT09eGV8fG51bGwhPT1FZSkmJih6ZSgpLE5lKCkpfX1mdW5jdGlvbiBPZShlLG4pe3ZhciB0PWUuc3RhdGVOb2RlO2lmKG51bGw9PT10KXJldHVybiBudWxsO3ZhciByPWtsKHQpO2lmKG51bGw9PT1yKXJldHVybiBudWxsO3Q9cltuXTtlOnN3aXRjaChuKXtjYXNlIm9uQ2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNhcHR1cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpjYXNlIm9uTW91c2VFbnRlciI6KHI9IXIuZGlzYWJsZWQpfHwocj0hKCJidXR0b24iPT09KGU9ZS50eXBlKXx8ImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWUpKSxlPSFyO2JyZWFrIGU7ZGVmYXVsdDplPSExfWlmKGUpcmV0dXJuIG51bGw7aWYodCYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0KXRocm93IEVycm9yKGEoMjMxLG4sdHlwZW9mIHQpKTtyZXR1cm4gdH12YXIgTWU9ITE7aWYoYyl0cnl7dmFyIFJlPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShSZSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe01lPSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixSZSxSZSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLFJlLFJlKX1jYXRjaChjZSl7TWU9ITF9ZnVuY3Rpb24gamUoZSxuLHQscixsLGEsbyx1LGkpe3ZhciBzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTt0cnl7bi5hcHBseSh0LHMpfWNhdGNoKGMpe3RoaXMub25FcnJvcihjKX19dmFyIEZlPSExLERlPW51bGwsSWU9ITEsVWU9bnVsbCxBZT17b25FcnJvcjpmdW5jdGlvbihlKXtGZT0hMCxEZT1lfX07ZnVuY3Rpb24gQmUoZSxuLHQscixsLGEsbyx1LGkpe0ZlPSExLERlPW51bGwsamUuYXBwbHkoQWUsYXJndW1lbnRzKX1mdW5jdGlvbiBWZShlKXt2YXIgbj1lLHQ9ZTtpZihlLmFsdGVybmF0ZSlmb3IoO24ucmV0dXJuOyluPW4ucmV0dXJuO2Vsc2V7ZT1uO2RvezAhPT0oNDA5OCYobj1lKS5mbGFncykmJih0PW4ucmV0dXJuKSxlPW4ucmV0dXJufXdoaWxlKGUpfXJldHVybiAzPT09bi50YWc/dDpudWxsfWZ1bmN0aW9uICRlKGUpe2lmKDEzPT09ZS50YWcpe3ZhciBuPWUubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09biYmKG51bGwhPT0oZT1lLmFsdGVybmF0ZSkmJihuPWUubWVtb2l6ZWRTdGF0ZSkpLG51bGwhPT1uKXJldHVybiBuLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gSGUoZSl7aWYoVmUoZSkhPT1lKXRocm93IEVycm9yKGEoMTg4KSl9ZnVuY3Rpb24gV2UoZSl7cmV0dXJuIG51bGwhPT0oZT1mdW5jdGlvbihlKXt2YXIgbj1lLmFsdGVybmF0ZTtpZighbil7aWYobnVsbD09PShuPVZlKGUpKSl0aHJvdyBFcnJvcihhKDE4OCkpO3JldHVybiBuIT09ZT9udWxsOmV9Zm9yKHZhciB0PWUscj1uOzspe3ZhciBsPXQucmV0dXJuO2lmKG51bGw9PT1sKWJyZWFrO3ZhciBvPWwuYWx0ZXJuYXRlO2lmKG51bGw9PT1vKXtpZihudWxsIT09KHI9bC5yZXR1cm4pKXt0PXI7Y29udGludWV9YnJlYWt9aWYobC5jaGlsZD09PW8uY2hpbGQpe2ZvcihvPWwuY2hpbGQ7bzspe2lmKG89PT10KXJldHVybiBIZShsKSxlO2lmKG89PT1yKXJldHVybiBIZShsKSxuO289by5zaWJsaW5nfXRocm93IEVycm9yKGEoMTg4KSl9aWYodC5yZXR1cm4hPT1yLnJldHVybil0PWwscj1vO2Vsc2V7Zm9yKHZhciB1PSExLGk9bC5jaGlsZDtpOyl7aWYoaT09PXQpe3U9ITAsdD1sLHI9bzticmVha31pZihpPT09cil7dT0hMCxyPWwsdD1vO2JyZWFrfWk9aS5zaWJsaW5nfWlmKCF1KXtmb3IoaT1vLmNoaWxkO2k7KXtpZihpPT09dCl7dT0hMCx0PW8scj1sO2JyZWFrfWlmKGk9PT1yKXt1PSEwLHI9byx0PWw7YnJlYWt9aT1pLnNpYmxpbmd9aWYoIXUpdGhyb3cgRXJyb3IoYSgxODkpKX19aWYodC5hbHRlcm5hdGUhPT1yKXRocm93IEVycm9yKGEoMTkwKSl9aWYoMyE9PXQudGFnKXRocm93IEVycm9yKGEoMTg4KSk7cmV0dXJuIHQuc3RhdGVOb2RlLmN1cnJlbnQ9PT10P2U6bn0oZSkpP1FlKGUpOm51bGx9ZnVuY3Rpb24gUWUoZSl7aWYoNT09PWUudGFnfHw2PT09ZS50YWcpcmV0dXJuIGU7Zm9yKGU9ZS5jaGlsZDtudWxsIT09ZTspe3ZhciBuPVFlKGUpO2lmKG51bGwhPT1uKXJldHVybiBuO2U9ZS5zaWJsaW5nfXJldHVybiBudWxsfXZhciBxZT1sLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssS2U9bC51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxZZT1sLnVuc3RhYmxlX3Nob3VsZFlpZWxkLFhlPWwudW5zdGFibGVfcmVxdWVzdFBhaW50LEdlPWwudW5zdGFibGVfbm93LEplPWwudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsWmU9bC51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxlbj1sLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LG5uPWwudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksdG49bC51bnN0YWJsZV9Mb3dQcmlvcml0eSxybj1sLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxsbj1udWxsLGFuPW51bGw7dmFyIG9uPU1hdGguY2x6MzI/TWF0aC5jbHozMjpmdW5jdGlvbihlKXtyZXR1cm4gZT4+Pj0wLDA9PT1lPzMyOjMxLSh1bihlKS9zbnwwKXwwfSx1bj1NYXRoLmxvZyxzbj1NYXRoLkxOMjt2YXIgY249NjQsZm49NDE5NDMwNDtmdW5jdGlvbiBkbihlKXtzd2l0Y2goZSYtZSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIDQxOTQyNDAmZTtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybiAxMzAwMjM0MjQmZTtjYXNlIDEzNDIxNzcyODpyZXR1cm4gMTM0MjE3NzI4O2Nhc2UgMjY4NDM1NDU2OnJldHVybiAyNjg0MzU0NTY7Y2FzZSA1MzY4NzA5MTI6cmV0dXJuIDUzNjg3MDkxMjtjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuIDEwNzM3NDE4MjQ7ZGVmYXVsdDpyZXR1cm4gZX19ZnVuY3Rpb24gcG4oZSxuKXt2YXIgdD1lLnBlbmRpbmdMYW5lcztpZigwPT09dClyZXR1cm4gMDt2YXIgcj0wLGw9ZS5zdXNwZW5kZWRMYW5lcyxhPWUucGluZ2VkTGFuZXMsbz0yNjg0MzU0NTUmdDtpZigwIT09byl7dmFyIHU9byZ+bDswIT09dT9yPWRuKHUpOjAhPT0oYSY9bykmJihyPWRuKGEpKX1lbHNlIDAhPT0obz10Jn5sKT9yPWRuKG8pOjAhPT1hJiYocj1kbihhKSk7aWYoMD09PXIpcmV0dXJuIDA7aWYoMCE9PW4mJm4hPT1yJiYwPT09KG4mbCkmJigobD1yJi1yKT49KGE9biYtbil8fDE2PT09bCYmMCE9PSg0MTk0MjQwJmEpKSlyZXR1cm4gbjtpZigwIT09KDQmcikmJihyfD0xNiZ0KSwwIT09KG49ZS5lbnRhbmdsZWRMYW5lcykpZm9yKGU9ZS5lbnRhbmdsZW1lbnRzLG4mPXI7MDxuOylsPTE8PCh0PTMxLW9uKG4pKSxyfD1lW3RdLG4mPX5sO3JldHVybiByfWZ1bmN0aW9uIG1uKGUsbil7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiBuKzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIG4rNWUzO2RlZmF1bHQ6cmV0dXJuLTF9fWZ1bmN0aW9uIGhuKGUpe3JldHVybiAwIT09KGU9LTEwNzM3NDE4MjUmZS5wZW5kaW5nTGFuZXMpP2U6MTA3Mzc0MTgyNCZlPzEwNzM3NDE4MjQ6MH1mdW5jdGlvbiB2bigpe3ZhciBlPWNuO3JldHVybiAwPT09KDQxOTQyNDAmKGNuPDw9MSkpJiYoY249NjQpLGV9ZnVuY3Rpb24gZ24oZSl7Zm9yKHZhciBuPVtdLHQ9MDszMT50O3QrKyluLnB1c2goZSk7cmV0dXJuIG59ZnVuY3Rpb24geW4oZSxuLHQpe2UucGVuZGluZ0xhbmVzfD1uLDUzNjg3MDkxMiE9PW4mJihlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wKSwoZT1lLmV2ZW50VGltZXMpW249MzEtb24obildPXR9ZnVuY3Rpb24gYm4oZSxuKXt2YXIgdD1lLmVudGFuZ2xlZExhbmVzfD1uO2ZvcihlPWUuZW50YW5nbGVtZW50czt0Oyl7dmFyIHI9MzEtb24odCksbD0xPDxyO2wmbnxlW3JdJm4mJihlW3JdfD1uKSx0Jj1+bH19dmFyIHduPTA7ZnVuY3Rpb24ga24oZSl7cmV0dXJuIDE8KGUmPS1lKT80PGU/MCE9PSgyNjg0MzU0NTUmZSk/MTY6NTM2ODcwOTEyOjQ6MX12YXIgU24seG4sRW4sQ24sX24sTm49ITEsUG49W10sem49bnVsbCxUbj1udWxsLExuPW51bGwsT249bmV3IE1hcCxNbj1uZXcgTWFwLFJuPVtdLGpuPSJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIEZuKGUsbil7c3dpdGNoKGUpe2Nhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6em49bnVsbDticmVhaztjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnbGVhdmUiOlRuPW51bGw7YnJlYWs7Y2FzZSJtb3VzZW92ZXIiOmNhc2UibW91c2VvdXQiOkxuPW51bGw7YnJlYWs7Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVyb3V0IjpPbi5kZWxldGUobi5wb2ludGVySWQpO2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpNbi5kZWxldGUobi5wb2ludGVySWQpfX1mdW5jdGlvbiBEbihlLG4sdCxyLGwsYSl7cmV0dXJuIG51bGw9PT1lfHxlLm5hdGl2ZUV2ZW50IT09YT8oZT17YmxvY2tlZE9uOm4sZG9tRXZlbnROYW1lOnQsZXZlbnRTeXN0ZW1GbGFnczpyLG5hdGl2ZUV2ZW50OmEsdGFyZ2V0Q29udGFpbmVyczpbbF19LG51bGwhPT1uJiYobnVsbCE9PShuPWJsKG4pKSYmeG4obikpLGUpOihlLmV2ZW50U3lzdGVtRmxhZ3N8PXIsbj1lLnRhcmdldENvbnRhaW5lcnMsbnVsbCE9PWwmJi0xPT09bi5pbmRleE9mKGwpJiZuLnB1c2gobCksZSl9ZnVuY3Rpb24gSW4oZSl7dmFyIG49eWwoZS50YXJnZXQpO2lmKG51bGwhPT1uKXt2YXIgdD1WZShuKTtpZihudWxsIT09dClpZigxMz09PShuPXQudGFnKSl7aWYobnVsbCE9PShuPSRlKHQpKSlyZXR1cm4gZS5ibG9ja2VkT249bix2b2lkIF9uKGUucHJpb3JpdHksKGZ1bmN0aW9uKCl7RW4odCl9KSl9ZWxzZSBpZigzPT09biYmdC5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gdm9pZChlLmJsb2NrZWRPbj0zPT09dC50YWc/dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsKX1lLmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIFVuKGUpe2lmKG51bGwhPT1lLmJsb2NrZWRPbilyZXR1cm4hMTtmb3IodmFyIG49ZS50YXJnZXRDb250YWluZXJzOzA8bi5sZW5ndGg7KXt2YXIgdD1YbihlLmRvbUV2ZW50TmFtZSxlLmV2ZW50U3lzdGVtRmxhZ3MsblswXSxlLm5hdGl2ZUV2ZW50KTtpZihudWxsIT09dClyZXR1cm4gbnVsbCE9PShuPWJsKHQpKSYmeG4obiksZS5ibG9ja2VkT249dCwhMTt2YXIgcj1uZXcodD1lLm5hdGl2ZUV2ZW50KS5jb25zdHJ1Y3Rvcih0LnR5cGUsdCk7d2U9cix0LnRhcmdldC5kaXNwYXRjaEV2ZW50KHIpLHdlPW51bGwsbi5zaGlmdCgpfXJldHVybiEwfWZ1bmN0aW9uIEFuKGUsbix0KXtVbihlKSYmdC5kZWxldGUobil9ZnVuY3Rpb24gQm4oKXtObj0hMSxudWxsIT09em4mJlVuKHpuKSYmKHpuPW51bGwpLG51bGwhPT1UbiYmVW4oVG4pJiYoVG49bnVsbCksbnVsbCE9PUxuJiZVbihMbikmJihMbj1udWxsKSxPbi5mb3JFYWNoKEFuKSxNbi5mb3JFYWNoKEFuKX1mdW5jdGlvbiBWbihlLG4pe2UuYmxvY2tlZE9uPT09biYmKGUuYmxvY2tlZE9uPW51bGwsTm58fChObj0hMCxsLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2sobC51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxCbikpKX1mdW5jdGlvbiAkbihlKXtmdW5jdGlvbiBuKG4pe3JldHVybiBWbihuLGUpfWlmKDA8UG4ubGVuZ3RoKXtWbihQblswXSxlKTtmb3IodmFyIHQ9MTt0PFBuLmxlbmd0aDt0Kyspe3ZhciByPVBuW3RdO3IuYmxvY2tlZE9uPT09ZSYmKHIuYmxvY2tlZE9uPW51bGwpfX1mb3IobnVsbCE9PXpuJiZWbih6bixlKSxudWxsIT09VG4mJlZuKFRuLGUpLG51bGwhPT1MbiYmVm4oTG4sZSksT24uZm9yRWFjaChuKSxNbi5mb3JFYWNoKG4pLHQ9MDt0PFJuLmxlbmd0aDt0KyspKHI9Um5bdF0pLmJsb2NrZWRPbj09PWUmJihyLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8Um4ubGVuZ3RoJiZudWxsPT09KHQ9Um5bMF0pLmJsb2NrZWRPbjspSW4odCksbnVsbD09PXQuYmxvY2tlZE9uJiZSbi5zaGlmdCgpfXZhciBIbj13LlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFduPSEwO2Z1bmN0aW9uIFFuKGUsbix0LHIpe3ZhciBsPXduLGE9SG4udHJhbnNpdGlvbjtIbi50cmFuc2l0aW9uPW51bGw7dHJ5e3duPTEsS24oZSxuLHQscil9ZmluYWxseXt3bj1sLEhuLnRyYW5zaXRpb249YX19ZnVuY3Rpb24gcW4oZSxuLHQscil7dmFyIGw9d24sYT1Ibi50cmFuc2l0aW9uO0huLnRyYW5zaXRpb249bnVsbDt0cnl7d249NCxLbihlLG4sdCxyKX1maW5hbGx5e3duPWwsSG4udHJhbnNpdGlvbj1hfX1mdW5jdGlvbiBLbihlLG4sdCxyKXtpZihXbil7dmFyIGw9WG4oZSxuLHQscik7aWYobnVsbD09PWwpSHIoZSxuLHIsWW4sdCksRm4oZSxyKTtlbHNlIGlmKGZ1bmN0aW9uKGUsbix0LHIsbCl7c3dpdGNoKG4pe2Nhc2UiZm9jdXNpbiI6cmV0dXJuIHpuPURuKHpuLGUsbix0LHIsbCksITA7Y2FzZSJkcmFnZW50ZXIiOnJldHVybiBUbj1EbihUbixlLG4sdCxyLGwpLCEwO2Nhc2UibW91c2VvdmVyIjpyZXR1cm4gTG49RG4oTG4sZSxuLHQscixsKSwhMDtjYXNlInBvaW50ZXJvdmVyIjp2YXIgYT1sLnBvaW50ZXJJZDtyZXR1cm4gT24uc2V0KGEsRG4oT24uZ2V0KGEpfHxudWxsLGUsbix0LHIsbCkpLCEwO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOnJldHVybiBhPWwucG9pbnRlcklkLE1uLnNldChhLERuKE1uLmdldChhKXx8bnVsbCxlLG4sdCxyLGwpKSwhMH1yZXR1cm4hMX0obCxlLG4sdCxyKSlyLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYoRm4oZSxyKSw0Jm4mJi0xPGpuLmluZGV4T2YoZSkpe2Zvcig7bnVsbCE9PWw7KXt2YXIgYT1ibChsKTtpZihudWxsIT09YSYmU24oYSksbnVsbD09PShhPVhuKGUsbix0LHIpKSYmSHIoZSxuLHIsWW4sdCksYT09PWwpYnJlYWs7bD1hfW51bGwhPT1sJiZyLnN0b3BQcm9wYWdhdGlvbigpfWVsc2UgSHIoZSxuLHIsbnVsbCx0KX19dmFyIFluPW51bGw7ZnVuY3Rpb24gWG4oZSxuLHQscil7aWYoWW49bnVsbCxudWxsIT09KGU9eWwoZT1rZShyKSkpKWlmKG51bGw9PT0obj1WZShlKSkpZT1udWxsO2Vsc2UgaWYoMTM9PT0odD1uLnRhZykpe2lmKG51bGwhPT0oZT0kZShuKSkpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYoMz09PXQpe2lmKG4uc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIDM9PT1uLnRhZz9uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7ZT1udWxsfWVsc2UgbiE9PWUmJihlPW51bGwpO3JldHVybiBZbj1lLG51bGx9ZnVuY3Rpb24gR24oZSl7c3dpdGNoKGUpe2Nhc2UiY2FuY2VsIjpjYXNlImNsaWNrIjpjYXNlImNsb3NlIjpjYXNlImNvbnRleHRtZW51IjpjYXNlImNvcHkiOmNhc2UiY3V0IjpjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOmNhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6Y2FzZSJpbnB1dCI6Y2FzZSJpbnZhbGlkIjpjYXNlImtleWRvd24iOmNhc2Uia2V5cHJlc3MiOmNhc2Uia2V5dXAiOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNldXAiOmNhc2UicGFzdGUiOmNhc2UicGF1c2UiOmNhc2UicGxheSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJ1cCI6Y2FzZSJyYXRlY2hhbmdlIjpjYXNlInJlc2V0IjpjYXNlInJlc2l6ZSI6Y2FzZSJzZWVrZWQiOmNhc2Uic3VibWl0IjpjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNoc3RhcnQiOmNhc2Uidm9sdW1lY2hhbmdlIjpjYXNlImNoYW5nZSI6Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmNhc2UidGV4dElucHV0IjpjYXNlImNvbXBvc2l0aW9uc3RhcnQiOmNhc2UiY29tcG9zaXRpb25lbmQiOmNhc2UiY29tcG9zaXRpb251cGRhdGUiOmNhc2UiYmVmb3JlYmx1ciI6Y2FzZSJhZnRlcmJsdXIiOmNhc2UiYmVmb3JlaW5wdXQiOmNhc2UiYmx1ciI6Y2FzZSJmdWxsc2NyZWVuY2hhbmdlIjpjYXNlImZvY3VzIjpjYXNlImhhc2hjaGFuZ2UiOmNhc2UicG9wc3RhdGUiOmNhc2Uic2VsZWN0IjpjYXNlInNlbGVjdHN0YXJ0IjpyZXR1cm4gMTtjYXNlImRyYWciOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2VvdXQiOmNhc2UibW91c2VvdmVyIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2Uic2Nyb2xsIjpjYXNlInRvZ2dsZSI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2Uid2hlZWwiOmNhc2UibW91c2VlbnRlciI6Y2FzZSJtb3VzZWxlYXZlIjpjYXNlInBvaW50ZXJlbnRlciI6Y2FzZSJwb2ludGVybGVhdmUiOnJldHVybiA0O2Nhc2UibWVzc2FnZSI6c3dpdGNoKEplKCkpe2Nhc2UgWmU6cmV0dXJuIDE7Y2FzZSBlbjpyZXR1cm4gNDtjYXNlIG5uOmNhc2UgdG46cmV0dXJuIDE2O2Nhc2Ugcm46cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIEpuPW51bGwsWm49bnVsbCxldD1udWxsO2Z1bmN0aW9uIG50KCl7aWYoZXQpcmV0dXJuIGV0O3ZhciBlLG4sdD1abixyPXQubGVuZ3RoLGw9InZhbHVlImluIEpuP0puLnZhbHVlOkpuLnRleHRDb250ZW50LGE9bC5sZW5ndGg7Zm9yKGU9MDtlPHImJnRbZV09PT1sW2VdO2UrKyk7dmFyIG89ci1lO2ZvcihuPTE7bjw9byYmdFtyLW5dPT09bFthLW5dO24rKyk7cmV0dXJuIGV0PWwuc2xpY2UoZSwxPG4/MS1uOnZvaWQgMCl9ZnVuY3Rpb24gdHQoZSl7dmFyIG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPzA9PT0oZT1lLmNoYXJDb2RlKSYmMTM9PT1uJiYoZT0xMyk6ZT1uLDEwPT09ZSYmKGU9MTMpLDMyPD1lfHwxMz09PWU/ZTowfWZ1bmN0aW9uIHJ0KCl7cmV0dXJuITB9ZnVuY3Rpb24gbHQoKXtyZXR1cm4hMX1mdW5jdGlvbiBhdChlKXtmdW5jdGlvbiBuKG4sdCxyLGwsYSl7Zm9yKHZhciBvIGluIHRoaXMuX3JlYWN0TmFtZT1uLHRoaXMuX3RhcmdldEluc3Q9cix0aGlzLnR5cGU9dCx0aGlzLm5hdGl2ZUV2ZW50PWwsdGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbCxlKWUuaGFzT3duUHJvcGVydHkobykmJihuPWVbb10sdGhpc1tvXT1uP24obCk6bFtvXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1sLmRlZmF1bHRQcmV2ZW50ZWQ/bC5kZWZhdWx0UHJldmVudGVkOiExPT09bC5yZXR1cm5WYWx1ZSk/cnQ6bHQsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1sdCx0aGlzfXJldHVybiBEKG4ucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIhPT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXJ0KX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93biIhPT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1ydCl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpydH0pLG59dmFyIG90LHV0LGl0LHN0PXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LGN0PWF0KHN0KSxmdD1EKHt9LHN0LHt2aWV3OjAsZGV0YWlsOjB9KSxkdD1hdChmdCkscHQ9RCh7fSxmdCx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTpDdCxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZS5yZWxhdGVkVGFyZ2V0P2UuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudDplLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihlKXtyZXR1cm4ibW92ZW1lbnRYImluIGU/ZS5tb3ZlbWVudFg6KGUhPT1pdCYmKGl0JiYibW91c2Vtb3ZlIj09PWUudHlwZT8ob3Q9ZS5zY3JlZW5YLWl0LnNjcmVlblgsdXQ9ZS5zY3JlZW5ZLWl0LnNjcmVlblkpOnV0PW90PTAsaXQ9ZSksb3QpfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7cmV0dXJuIm1vdmVtZW50WSJpbiBlP2UubW92ZW1lbnRZOnV0fX0pLG10PWF0KHB0KSxodD1hdChEKHt9LHB0LHtkYXRhVHJhbnNmZXI6MH0pKSx2dD1hdChEKHt9LGZ0LHtyZWxhdGVkVGFyZ2V0OjB9KSksZ3Q9YXQoRCh7fSxzdCx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSkpLHl0PUQoe30sc3Qse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksYnQ9YXQoeXQpLHd0PWF0KEQoe30sc3Qse2RhdGE6MH0pKSxrdD17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVkIn0sU3Q9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIsMTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifSx4dD17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O2Z1bmN0aW9uIEV0KGUpe3ZhciBuPXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0ZT9uLmdldE1vZGlmaWVyU3RhdGUoZSk6ISEoZT14dFtlXSkmJiEhbltlXX1mdW5jdGlvbiBDdCgpe3JldHVybiBFdH12YXIgX3Q9RCh7fSxmdCx7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgbj1rdFtlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQiIT09bilyZXR1cm4gbn1yZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlPzEzPT09KGU9dHQoZSkpPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShlKToia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/U3RbZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOkN0LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/dHQoZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/dHQoZSk6ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfX0pLE50PWF0KF90KSxQdD1hdChEKHt9LHB0LHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pKSx6dD1hdChEKHt9LGZ0LHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6Q3R9KSksVHQ9YXQoRCh7fSxzdCx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSksTHQ9RCh7fSxwdCx7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLE90PWF0KEx0KSxNdD1bOSwxMywyNywzMl0sUnQ9YyYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LGp0PW51bGw7YyYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKGp0PWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIEZ0PWMmJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhanQsRHQ9YyYmKCFSdHx8anQmJjg8anQmJjExPj1qdCksSXQ9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksVXQ9ITE7ZnVuY3Rpb24gQXQoZSxuKXtzd2l0Y2goZSl7Y2FzZSJrZXl1cCI6cmV0dXJuLTEhPT1NdC5pbmRleE9mKG4ua2V5Q29kZSk7Y2FzZSJrZXlkb3duIjpyZXR1cm4gMjI5IT09bi5rZXlDb2RlO2Nhc2Uia2V5cHJlc3MiOmNhc2UibW91c2Vkb3duIjpjYXNlImZvY3Vzb3V0IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBCdChlKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZihlPWUuZGV0YWlsKSYmImRhdGEiaW4gZT9lLmRhdGE6bnVsbH12YXIgVnQ9ITE7dmFyICR0PXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBIdChlKXt2YXIgbj1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PW4/ISEkdFtlLnR5cGVdOiJ0ZXh0YXJlYSI9PT1ufWZ1bmN0aW9uIFd0KGUsbix0LHIpe19lKHIpLDA8KG49UXIobiwib25DaGFuZ2UiKSkubGVuZ3RoJiYodD1uZXcgY3QoIm9uQ2hhbmdlIiwiY2hhbmdlIixudWxsLHQsciksZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczpufSkpfXZhciBRdD1udWxsLHF0PW51bGw7ZnVuY3Rpb24gS3QoZSl7SXIoZSwwKX1mdW5jdGlvbiBZdChlKXtpZihxKHdsKGUpKSlyZXR1cm4gZX1mdW5jdGlvbiBYdChlLG4pe2lmKCJjaGFuZ2UiPT09ZSlyZXR1cm4gbn12YXIgR3Q9ITE7aWYoYyl7dmFyIEp0O2lmKGMpe3ZhciBadD0ib25pbnB1dCJpbiBkb2N1bWVudDtpZighWnQpe3ZhciBlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlci5zZXRBdHRyaWJ1dGUoIm9uaW5wdXQiLCJyZXR1cm47IiksWnQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBlci5vbmlucHV0fUp0PVp0fWVsc2UgSnQ9ITE7R3Q9SnQmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gbnIoKXtRdCYmKFF0LmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIix0cikscXQ9UXQ9bnVsbCl9ZnVuY3Rpb24gdHIoZSl7aWYoInZhbHVlIj09PWUucHJvcGVydHlOYW1lJiZZdChxdCkpe3ZhciBuPVtdO1d0KG4scXQsZSxrZShlKSksTGUoS3Qsbil9fWZ1bmN0aW9uIHJyKGUsbix0KXsiZm9jdXNpbiI9PT1lPyhucigpLHF0PXQsKFF0PW4pLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIix0cikpOiJmb2N1c291dCI9PT1lJiZucigpfWZ1bmN0aW9uIGxyKGUpe2lmKCJzZWxlY3Rpb25jaGFuZ2UiPT09ZXx8ImtleXVwIj09PWV8fCJrZXlkb3duIj09PWUpcmV0dXJuIFl0KHF0KX1mdW5jdGlvbiBhcihlLG4pe2lmKCJjbGljayI9PT1lKXJldHVybiBZdChuKX1mdW5jdGlvbiBvcihlLG4pe2lmKCJpbnB1dCI9PT1lfHwiY2hhbmdlIj09PWUpcmV0dXJuIFl0KG4pfXZhciB1cj0iZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZT09PW4mJigwIT09ZXx8MS9lPT09MS9uKXx8ZSE9PWUmJm4hPT1ufTtmdW5jdGlvbiBpcihlLG4pe2lmKHVyKGUsbikpcmV0dXJuITA7aWYoIm9iamVjdCIhPT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT09dHlwZW9mIG58fG51bGw9PT1uKXJldHVybiExO3ZhciB0PU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXMobik7aWYodC5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbD10W3JdO2lmKCFmLmNhbGwobixsKXx8IXVyKGVbbF0sbltsXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gc3IoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIGNyKGUsbil7dmFyIHQscj1zcihlKTtmb3IoZT0wO3I7KXtpZigzPT09ci5ub2RlVHlwZSl7aWYodD1lK3IudGV4dENvbnRlbnQubGVuZ3RoLGU8PW4mJnQ+PW4pcmV0dXJue25vZGU6cixvZmZzZXQ6bi1lfTtlPXR9ZTp7Zm9yKDtyOyl7aWYoci5uZXh0U2libGluZyl7cj1yLm5leHRTaWJsaW5nO2JyZWFrIGV9cj1yLnBhcmVudE5vZGV9cj12b2lkIDB9cj1zcihyKX19ZnVuY3Rpb24gZnIoZSxuKXtyZXR1cm4hKCFlfHwhbikmJihlPT09bnx8KCFlfHwzIT09ZS5ub2RlVHlwZSkmJihuJiYzPT09bi5ub2RlVHlwZT9mcihlLG4ucGFyZW50Tm9kZSk6ImNvbnRhaW5zImluIGU/ZS5jb250YWlucyhuKTohIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEhKDE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikpKSl9ZnVuY3Rpb24gZHIoKXtmb3IodmFyIGU9d2luZG93LG49SygpO24gaW5zdGFuY2VvZiBlLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciB0PSJzdHJpbmciPT09dHlwZW9mIG4uY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKHIpe3Q9ITF9aWYoIXQpYnJlYWs7bj1LKChlPW4uY29udGVudFdpbmRvdykuZG9jdW1lbnQpfXJldHVybiBufWZ1bmN0aW9uIHByKGUpe3ZhciBuPWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gbiYmKCJpbnB1dCI9PT1uJiYoInRleHQiPT09ZS50eXBlfHwic2VhcmNoIj09PWUudHlwZXx8InRlbCI9PT1lLnR5cGV8fCJ1cmwiPT09ZS50eXBlfHwicGFzc3dvcmQiPT09ZS50eXBlKXx8InRleHRhcmVhIj09PW58fCJ0cnVlIj09PWUuY29udGVudEVkaXRhYmxlKX1mdW5jdGlvbiBtcihlKXt2YXIgbj1kcigpLHQ9ZS5mb2N1c2VkRWxlbSxyPWUuc2VsZWN0aW9uUmFuZ2U7aWYobiE9PXQmJnQmJnQub3duZXJEb2N1bWVudCYmZnIodC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0KSl7aWYobnVsbCE9PXImJnByKHQpKWlmKG49ci5zdGFydCx2b2lkIDA9PT0oZT1yLmVuZCkmJihlPW4pLCJzZWxlY3Rpb25TdGFydCJpbiB0KXQuc2VsZWN0aW9uU3RhcnQ9bix0LnNlbGVjdGlvbkVuZD1NYXRoLm1pbihlLHQudmFsdWUubGVuZ3RoKTtlbHNlIGlmKChlPShuPXQub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZuLmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbil7ZT1lLmdldFNlbGVjdGlvbigpO3ZhciBsPXQudGV4dENvbnRlbnQubGVuZ3RoLGE9TWF0aC5taW4oci5zdGFydCxsKTtyPXZvaWQgMD09PXIuZW5kP2E6TWF0aC5taW4oci5lbmQsbCksIWUuZXh0ZW5kJiZhPnImJihsPXIscj1hLGE9bCksbD1jcih0LGEpO3ZhciBvPWNyKHQscik7bCYmbyYmKDEhPT1lLnJhbmdlQ291bnR8fGUuYW5jaG9yTm9kZSE9PWwubm9kZXx8ZS5hbmNob3JPZmZzZXQhPT1sLm9mZnNldHx8ZS5mb2N1c05vZGUhPT1vLm5vZGV8fGUuZm9jdXNPZmZzZXQhPT1vLm9mZnNldCkmJigobj1uLmNyZWF0ZVJhbmdlKCkpLnNldFN0YXJ0KGwubm9kZSxsLm9mZnNldCksZS5yZW1vdmVBbGxSYW5nZXMoKSxhPnI/KGUuYWRkUmFuZ2UobiksZS5leHRlbmQoby5ub2RlLG8ub2Zmc2V0KSk6KG4uc2V0RW5kKG8ubm9kZSxvLm9mZnNldCksZS5hZGRSYW5nZShuKSkpfWZvcihuPVtdLGU9dDtlPWUucGFyZW50Tm9kZTspMT09PWUubm9kZVR5cGUmJm4ucHVzaCh7ZWxlbWVudDplLGxlZnQ6ZS5zY3JvbGxMZWZ0LHRvcDplLnNjcm9sbFRvcH0pO2ZvcigiZnVuY3Rpb24iPT09dHlwZW9mIHQuZm9jdXMmJnQuZm9jdXMoKSx0PTA7dDxuLmxlbmd0aDt0KyspKGU9blt0XSkuZWxlbWVudC5zY3JvbGxMZWZ0PWUubGVmdCxlLmVsZW1lbnQuc2Nyb2xsVG9wPWUudG9wfX12YXIgaHI9YyYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSx2cj1udWxsLGdyPW51bGwseXI9bnVsbCxicj0hMTtmdW5jdGlvbiB3cihlLG4sdCl7dmFyIHI9dC53aW5kb3c9PT10P3QuZG9jdW1lbnQ6OT09PXQubm9kZVR5cGU/dDp0Lm93bmVyRG9jdW1lbnQ7YnJ8fG51bGw9PXZyfHx2ciE9PUsocil8fCgic2VsZWN0aW9uU3RhcnQiaW4ocj12cikmJnByKHIpP3I9e3N0YXJ0OnIuc2VsZWN0aW9uU3RhcnQsZW5kOnIuc2VsZWN0aW9uRW5kfTpyPXthbmNob3JOb2RlOihyPShyLm93bmVyRG9jdW1lbnQmJnIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSkuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6ci5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOnIuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OnIuZm9jdXNPZmZzZXR9LHlyJiZpcih5cixyKXx8KHlyPXIsMDwocj1Rcihnciwib25TZWxlY3QiKSkubGVuZ3RoJiYobj1uZXcgY3QoIm9uU2VsZWN0Iiwic2VsZWN0IixudWxsLG4sdCksZS5wdXNoKHtldmVudDpuLGxpc3RlbmVyczpyfSksbi50YXJnZXQ9dnIpKSl9ZnVuY3Rpb24ga3IoZSxuKXt2YXIgdD17fTtyZXR1cm4gdFtlLnRvTG93ZXJDYXNlKCldPW4udG9Mb3dlckNhc2UoKSx0WyJXZWJraXQiK2VdPSJ3ZWJraXQiK24sdFsiTW96IitlXT0ibW96IituLHR9dmFyIFNyPXthbmltYXRpb25lbmQ6a3IoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjprcigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6a3IoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDprcigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0seHI9e30sRXI9e307ZnVuY3Rpb24gQ3IoZSl7aWYoeHJbZV0pcmV0dXJuIHhyW2VdO2lmKCFTcltlXSlyZXR1cm4gZTt2YXIgbix0PVNyW2VdO2ZvcihuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiBFcilyZXR1cm4geHJbZV09dFtuXTtyZXR1cm4gZX1jJiYoRXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBTci5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBTci5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBTci5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgU3IudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTt2YXIgX3I9Q3IoImFuaW1hdGlvbmVuZCIpLE5yPUNyKCJhbmltYXRpb25pdGVyYXRpb24iKSxQcj1DcigiYW5pbWF0aW9uc3RhcnQiKSx6cj1DcigidHJhbnNpdGlvbmVuZCIpLFRyPW5ldyBNYXAsTHI9ImFib3J0IGF1eENsaWNrIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsIi5zcGxpdCgiICIpO2Z1bmN0aW9uIE9yKGUsbil7VHIuc2V0KGUsbiksaShuLFtlXSl9Zm9yKHZhciBNcj0wO01yPExyLmxlbmd0aDtNcisrKXt2YXIgUnI9THJbTXJdO09yKFJyLnRvTG93ZXJDYXNlKCksIm9uIisoUnJbMF0udG9VcHBlckNhc2UoKStSci5zbGljZSgxKSkpfU9yKF9yLCJvbkFuaW1hdGlvbkVuZCIpLE9yKE5yLCJvbkFuaW1hdGlvbkl0ZXJhdGlvbiIpLE9yKFByLCJvbkFuaW1hdGlvblN0YXJ0IiksT3IoImRibGNsaWNrIiwib25Eb3VibGVDbGljayIpLE9yKCJmb2N1c2luIiwib25Gb2N1cyIpLE9yKCJmb2N1c291dCIsIm9uQmx1ciIpLE9yKHpyLCJvblRyYW5zaXRpb25FbmQiKSxzKCJvbk1vdXNlRW50ZXIiLFsibW91c2VvdXQiLCJtb3VzZW92ZXIiXSkscygib25Nb3VzZUxlYXZlIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pLHMoIm9uUG9pbnRlckVudGVyIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKSxzKCJvblBvaW50ZXJMZWF2ZSIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSksaSgib25DaGFuZ2UiLCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZSIuc3BsaXQoIiAiKSksaSgib25TZWxlY3QiLCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2UiLnNwbGl0KCIgIikpLGkoIm9uQmVmb3JlSW5wdXQiLFsiY29tcG9zaXRpb25lbmQiLCJrZXlwcmVzcyIsInRleHRJbnB1dCIsInBhc3RlIl0pLGkoIm9uQ29tcG9zaXRpb25FbmQiLCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSksaSgib25Db21wb3NpdGlvblN0YXJ0IiwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSksaSgib25Db21wb3NpdGlvblVwZGF0ZSIsImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKTt2YXIganI9ImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nIi5zcGxpdCgiICIpLEZyPW5ldyBTZXQoImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZSIuc3BsaXQoIiAiKS5jb25jYXQoanIpKTtmdW5jdGlvbiBEcihlLG4sdCl7dmFyIHI9ZS50eXBlfHwidW5rbm93bi1ldmVudCI7ZS5jdXJyZW50VGFyZ2V0PXQsZnVuY3Rpb24oZSxuLHQscixsLG8sdSxpLHMpe2lmKEJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxGZSl7aWYoIUZlKXRocm93IEVycm9yKGEoMTk4KSk7dmFyIGM9RGU7RmU9ITEsRGU9bnVsbCxJZXx8KEllPSEwLFVlPWMpfX0ocixuLHZvaWQgMCxlKSxlLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiBJcihlLG4pe249MCE9PSg0Jm4pO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdLGw9ci5ldmVudDtyPXIubGlzdGVuZXJzO2U6e3ZhciBhPXZvaWQgMDtpZihuKWZvcih2YXIgbz1yLmxlbmd0aC0xOzA8PW87by0tKXt2YXIgdT1yW29dLGk9dS5pbnN0YW5jZSxzPXUuY3VycmVudFRhcmdldDtpZih1PXUubGlzdGVuZXIsaSE9PWEmJmwuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO0RyKGwsdSxzKSxhPWl9ZWxzZSBmb3Iobz0wO288ci5sZW5ndGg7bysrKXtpZihpPSh1PXJbb10pLmluc3RhbmNlLHM9dS5jdXJyZW50VGFyZ2V0LHU9dS5saXN0ZW5lcixpIT09YSYmbC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGU7RHIobCx1LHMpLGE9aX19fWlmKEllKXRocm93IGU9VWUsSWU9ITEsVWU9bnVsbCxlfWZ1bmN0aW9uIFVyKGUsbil7dmFyIHQ9bltobF07dm9pZCAwPT09dCYmKHQ9bltobF09bmV3IFNldCk7dmFyIHI9ZSsiX19idWJibGUiO3QuaGFzKHIpfHwoJHIobixlLDIsITEpLHQuYWRkKHIpKX1mdW5jdGlvbiBBcihlLG4sdCl7dmFyIHI9MDtuJiYocnw9NCksJHIodCxlLHIsbil9dmFyIEJyPSJfcmVhY3RMaXN0ZW5pbmciK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIFZyKGUpe2lmKCFlW0JyXSl7ZVtCcl09ITAsby5mb3JFYWNoKChmdW5jdGlvbihuKXsic2VsZWN0aW9uY2hhbmdlIiE9PW4mJihGci5oYXMobil8fEFyKG4sITEsZSksQXIobiwhMCxlKSl9KSk7dmFyIG49OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7bnVsbD09PW58fG5bQnJdfHwobltCcl09ITAsQXIoInNlbGVjdGlvbmNoYW5nZSIsITEsbikpfX1mdW5jdGlvbiAkcihlLG4sdCxyKXtzd2l0Y2goR24obikpe2Nhc2UgMTp2YXIgbD1RbjticmVhaztjYXNlIDQ6bD1xbjticmVhaztkZWZhdWx0Omw9S259dD1sLmJpbmQobnVsbCxuLHQsZSksbD12b2lkIDAsIU1lfHwidG91Y2hzdGFydCIhPT1uJiYidG91Y2htb3ZlIiE9PW4mJiJ3aGVlbCIhPT1ufHwobD0hMCkscj92b2lkIDAhPT1sP2UuYWRkRXZlbnRMaXN0ZW5lcihuLHQse2NhcHR1cmU6ITAscGFzc2l2ZTpsfSk6ZS5hZGRFdmVudExpc3RlbmVyKG4sdCwhMCk6dm9pZCAwIT09bD9lLmFkZEV2ZW50TGlzdGVuZXIobix0LHtwYXNzaXZlOmx9KTplLmFkZEV2ZW50TGlzdGVuZXIobix0LCExKX1mdW5jdGlvbiBIcihlLG4sdCxyLGwpe3ZhciBhPXI7aWYoMD09PSgxJm4pJiYwPT09KDImbikmJm51bGwhPT1yKWU6Zm9yKDs7KXtpZihudWxsPT09cilyZXR1cm47dmFyIG89ci50YWc7aWYoMz09PW98fDQ9PT1vKXt2YXIgdT1yLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKHU9PT1sfHw4PT09dS5ub2RlVHlwZSYmdS5wYXJlbnROb2RlPT09bClicmVhaztpZig0PT09bylmb3Iobz1yLnJldHVybjtudWxsIT09bzspe3ZhciBpPW8udGFnO2lmKCgzPT09aXx8ND09PWkpJiYoKGk9by5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk9PT1sfHw4PT09aS5ub2RlVHlwZSYmaS5wYXJlbnROb2RlPT09bCkpcmV0dXJuO289by5yZXR1cm59Zm9yKDtudWxsIT09dTspe2lmKG51bGw9PT0obz15bCh1KSkpcmV0dXJuO2lmKDU9PT0oaT1vLnRhZyl8fDY9PT1pKXtyPWE9bztjb250aW51ZSBlfXU9dS5wYXJlbnROb2RlfX1yPXIucmV0dXJufUxlKChmdW5jdGlvbigpe3ZhciByPWEsbD1rZSh0KSxvPVtdO2U6e3ZhciB1PVRyLmdldChlKTtpZih2b2lkIDAhPT11KXt2YXIgaT1jdCxzPWU7c3dpdGNoKGUpe2Nhc2Uia2V5cHJlc3MiOmlmKDA9PT10dCh0KSlicmVhayBlO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6aT1OdDticmVhaztjYXNlImZvY3VzaW4iOnM9ImZvY3VzIixpPXZ0O2JyZWFrO2Nhc2UiZm9jdXNvdXQiOnM9ImJsdXIiLGk9dnQ7YnJlYWs7Y2FzZSJiZWZvcmVibHVyIjpjYXNlImFmdGVyYmx1ciI6aT12dDticmVhaztjYXNlImNsaWNrIjppZigyPT09dC5idXR0b24pYnJlYWsgZTtjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2V1cCI6Y2FzZSJtb3VzZW91dCI6Y2FzZSJtb3VzZW92ZXIiOmNhc2UiY29udGV4dG1lbnUiOmk9bXQ7YnJlYWs7Y2FzZSJkcmFnIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJkcmFnc3RhcnQiOmNhc2UiZHJvcCI6aT1odDticmVhaztjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNobW92ZSI6Y2FzZSJ0b3VjaHN0YXJ0IjppPXp0O2JyZWFrO2Nhc2UgX3I6Y2FzZSBOcjpjYXNlIFByOmk9Z3Q7YnJlYWs7Y2FzZSB6cjppPVR0O2JyZWFrO2Nhc2Uic2Nyb2xsIjppPWR0O2JyZWFrO2Nhc2Uid2hlZWwiOmk9T3Q7YnJlYWs7Y2FzZSJjb3B5IjpjYXNlImN1dCI6Y2FzZSJwYXN0ZSI6aT1idDticmVhaztjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpjYXNlImxvc3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2UicG9pbnRlcnVwIjppPVB0fXZhciBjPTAhPT0oNCZuKSxmPSFjJiYic2Nyb2xsIj09PWUsZD1jP251bGwhPT11P3UrIkNhcHR1cmUiOm51bGw6dTtjPVtdO2Zvcih2YXIgcCxtPXI7bnVsbCE9PW07KXt2YXIgaD0ocD1tKS5zdGF0ZU5vZGU7aWYoNT09PXAudGFnJiZudWxsIT09aCYmKHA9aCxudWxsIT09ZCYmKG51bGwhPShoPU9lKG0sZCkpJiZjLnB1c2goV3IobSxoLHApKSkpLGYpYnJlYWs7bT1tLnJldHVybn0wPGMubGVuZ3RoJiYodT1uZXcgaSh1LHMsbnVsbCx0LGwpLG8ucHVzaCh7ZXZlbnQ6dSxsaXN0ZW5lcnM6Y30pKX19aWYoMD09PSg3Jm4pKXtpZihpPSJtb3VzZW91dCI9PT1lfHwicG9pbnRlcm91dCI9PT1lLCghKHU9Im1vdXNlb3ZlciI9PT1lfHwicG9pbnRlcm92ZXIiPT09ZSl8fHQ9PT13ZXx8IShzPXQucmVsYXRlZFRhcmdldHx8dC5mcm9tRWxlbWVudCl8fCF5bChzKSYmIXNbbWxdKSYmKGl8fHUpJiYodT1sLndpbmRvdz09PWw/bDoodT1sLm93bmVyRG9jdW1lbnQpP3UuZGVmYXVsdFZpZXd8fHUucGFyZW50V2luZG93OndpbmRvdyxpPyhpPXIsbnVsbCE9PShzPShzPXQucmVsYXRlZFRhcmdldHx8dC50b0VsZW1lbnQpP3lsKHMpOm51bGwpJiYocyE9PShmPVZlKHMpKXx8NSE9PXMudGFnJiY2IT09cy50YWcpJiYocz1udWxsKSk6KGk9bnVsbCxzPXIpLGkhPT1zKSl7aWYoYz1tdCxoPSJvbk1vdXNlTGVhdmUiLGQ9Im9uTW91c2VFbnRlciIsbT0ibW91c2UiLCJwb2ludGVyb3V0IiE9PWUmJiJwb2ludGVyb3ZlciIhPT1lfHwoYz1QdCxoPSJvblBvaW50ZXJMZWF2ZSIsZD0ib25Qb2ludGVyRW50ZXIiLG09InBvaW50ZXIiKSxmPW51bGw9PWk/dTp3bChpKSxwPW51bGw9PXM/dTp3bChzKSwodT1uZXcgYyhoLG0rImxlYXZlIixpLHQsbCkpLnRhcmdldD1mLHUucmVsYXRlZFRhcmdldD1wLGg9bnVsbCx5bChsKT09PXImJigoYz1uZXcgYyhkLG0rImVudGVyIixzLHQsbCkpLnRhcmdldD1wLGMucmVsYXRlZFRhcmdldD1mLGg9YyksZj1oLGkmJnMpZTp7Zm9yKGQ9cyxtPTAscD1jPWk7cDtwPXFyKHApKW0rKztmb3IocD0wLGg9ZDtoO2g9cXIoaCkpcCsrO2Zvcig7MDxtLXA7KWM9cXIoYyksbS0tO2Zvcig7MDxwLW07KWQ9cXIoZCkscC0tO2Zvcig7bS0tOyl7aWYoYz09PWR8fG51bGwhPT1kJiZjPT09ZC5hbHRlcm5hdGUpYnJlYWsgZTtjPXFyKGMpLGQ9cXIoZCl9Yz1udWxsfWVsc2UgYz1udWxsO251bGwhPT1pJiZLcihvLHUsaSxjLCExKSxudWxsIT09cyYmbnVsbCE9PWYmJktyKG8sZixzLGMsITApfWlmKCJzZWxlY3QiPT09KGk9KHU9cj93bChyKTp3aW5kb3cpLm5vZGVOYW1lJiZ1Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfHwiaW5wdXQiPT09aSYmImZpbGUiPT09dS50eXBlKXZhciB2PVh0O2Vsc2UgaWYoSHQodSkpaWYoR3Qpdj1vcjtlbHNle3Y9bHI7dmFyIGc9cnJ9ZWxzZShpPXUubm9kZU5hbWUpJiYiaW5wdXQiPT09aS50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PXUudHlwZXx8InJhZGlvIj09PXUudHlwZSkmJih2PWFyKTtzd2l0Y2godiYmKHY9dihlLHIpKT9XdChvLHYsdCxsKTooZyYmZyhlLHUsciksImZvY3Vzb3V0Ij09PWUmJihnPXUuX3dyYXBwZXJTdGF0ZSkmJmcuY29udHJvbGxlZCYmIm51bWJlciI9PT11LnR5cGUmJmVlKHUsIm51bWJlciIsdS52YWx1ZSkpLGc9cj93bChyKTp3aW5kb3csZSl7Y2FzZSJmb2N1c2luIjooSHQoZyl8fCJ0cnVlIj09PWcuY29udGVudEVkaXRhYmxlKSYmKHZyPWcsZ3I9cix5cj1udWxsKTticmVhaztjYXNlImZvY3Vzb3V0Ijp5cj1ncj12cj1udWxsO2JyZWFrO2Nhc2UibW91c2Vkb3duIjpicj0hMDticmVhaztjYXNlImNvbnRleHRtZW51IjpjYXNlIm1vdXNldXAiOmNhc2UiZHJhZ2VuZCI6YnI9ITEsd3Iobyx0LGwpO2JyZWFrO2Nhc2Uic2VsZWN0aW9uY2hhbmdlIjppZihocilicmVhaztjYXNlImtleWRvd24iOmNhc2Uia2V5dXAiOndyKG8sdCxsKX12YXIgeTtpZihSdCllOntzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0Ijp2YXIgYj0ib25Db21wb3NpdGlvblN0YXJ0IjticmVhayBlO2Nhc2UiY29tcG9zaXRpb25lbmQiOmI9Im9uQ29tcG9zaXRpb25FbmQiO2JyZWFrIGU7Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6Yj0ib25Db21wb3NpdGlvblVwZGF0ZSI7YnJlYWsgZX1iPXZvaWQgMH1lbHNlIFZ0P0F0KGUsdCkmJihiPSJvbkNvbXBvc2l0aW9uRW5kIik6ImtleWRvd24iPT09ZSYmMjI5PT09dC5rZXlDb2RlJiYoYj0ib25Db21wb3NpdGlvblN0YXJ0Iik7YiYmKER0JiYia28iIT09dC5sb2NhbGUmJihWdHx8Im9uQ29tcG9zaXRpb25TdGFydCIhPT1iPyJvbkNvbXBvc2l0aW9uRW5kIj09PWImJlZ0JiYoeT1udCgpKTooWm49InZhbHVlImluKEpuPWwpP0puLnZhbHVlOkpuLnRleHRDb250ZW50LFZ0PSEwKSksMDwoZz1RcihyLGIpKS5sZW5ndGgmJihiPW5ldyB3dChiLGUsbnVsbCx0LGwpLG8ucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6Z30pLHk/Yi5kYXRhPXk6bnVsbCE9PSh5PUJ0KHQpKSYmKGIuZGF0YT15KSkpLCh5PUZ0P2Z1bmN0aW9uKGUsbil7c3dpdGNoKGUpe2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiBCdChuKTtjYXNlImtleXByZXNzIjpyZXR1cm4gMzIhPT1uLndoaWNoP251bGw6KFV0PSEwLEl0KTtjYXNlInRleHRJbnB1dCI6cmV0dXJuKGU9bi5kYXRhKT09PUl0JiZVdD9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUsdCk6ZnVuY3Rpb24oZSxuKXtpZihWdClyZXR1cm4iY29tcG9zaXRpb25lbmQiPT09ZXx8IVJ0JiZBdChlLG4pPyhlPW50KCksZXQ9Wm49Sm49bnVsbCxWdD0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlInBhc3RlIjpkZWZhdWx0OnJldHVybiBudWxsO2Nhc2Uia2V5cHJlc3MiOmlmKCEobi5jdHJsS2V5fHxuLmFsdEtleXx8bi5tZXRhS2V5KXx8bi5jdHJsS2V5JiZuLmFsdEtleSl7aWYobi5jaGFyJiYxPG4uY2hhci5sZW5ndGgpcmV0dXJuIG4uY2hhcjtpZihuLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG4ud2hpY2gpfXJldHVybiBudWxsO2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiBEdCYmImtvIiE9PW4ubG9jYWxlP251bGw6bi5kYXRhfX0oZSx0KSkmJigwPChyPVFyKHIsIm9uQmVmb3JlSW5wdXQiKSkubGVuZ3RoJiYobD1uZXcgd3QoIm9uQmVmb3JlSW5wdXQiLCJiZWZvcmVpbnB1dCIsbnVsbCx0LGwpLG8ucHVzaCh7ZXZlbnQ6bCxsaXN0ZW5lcnM6cn0pLGwuZGF0YT15KSl9SXIobyxuKX0pKX1mdW5jdGlvbiBXcihlLG4sdCl7cmV0dXJue2luc3RhbmNlOmUsbGlzdGVuZXI6bixjdXJyZW50VGFyZ2V0OnR9fWZ1bmN0aW9uIFFyKGUsbil7Zm9yKHZhciB0PW4rIkNhcHR1cmUiLHI9W107bnVsbCE9PWU7KXt2YXIgbD1lLGE9bC5zdGF0ZU5vZGU7NT09PWwudGFnJiZudWxsIT09YSYmKGw9YSxudWxsIT0oYT1PZShlLHQpKSYmci51bnNoaWZ0KFdyKGUsYSxsKSksbnVsbCE9KGE9T2UoZSxuKSkmJnIucHVzaChXcihlLGEsbCkpKSxlPWUucmV0dXJufXJldHVybiByfWZ1bmN0aW9uIHFyKGUpe2lmKG51bGw9PT1lKXJldHVybiBudWxsO2Rve2U9ZS5yZXR1cm59d2hpbGUoZSYmNSE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBLcihlLG4sdCxyLGwpe2Zvcih2YXIgYT1uLl9yZWFjdE5hbWUsbz1bXTtudWxsIT09dCYmdCE9PXI7KXt2YXIgdT10LGk9dS5hbHRlcm5hdGUscz11LnN0YXRlTm9kZTtpZihudWxsIT09aSYmaT09PXIpYnJlYWs7NT09PXUudGFnJiZudWxsIT09cyYmKHU9cyxsP251bGwhPShpPU9lKHQsYSkpJiZvLnVuc2hpZnQoV3IodCxpLHUpKTpsfHxudWxsIT0oaT1PZSh0LGEpKSYmby5wdXNoKFdyKHQsaSx1KSkpLHQ9dC5yZXR1cm59MCE9PW8ubGVuZ3RoJiZlLnB1c2goe2V2ZW50Om4sbGlzdGVuZXJzOm99KX12YXIgWXI9L1xyXG4/L2csWHI9L1x1MDAwMHxcdUZGRkQvZztmdW5jdGlvbiBHcihlKXtyZXR1cm4oInN0cmluZyI9PT10eXBlb2YgZT9lOiIiK2UpLnJlcGxhY2UoWXIsIlxuIikucmVwbGFjZShYciwiIil9ZnVuY3Rpb24gSnIoZSxuLHQpe2lmKG49R3IobiksR3IoZSkhPT1uJiZ0KXRocm93IEVycm9yKGEoNDI1KSl9ZnVuY3Rpb24gWnIoKXt9dmFyIGVsPW51bGwsbmw9bnVsbDtmdW5jdGlvbiB0bChlLG4pe3JldHVybiJ0ZXh0YXJlYSI9PT1lfHwibm9zY3JpcHQiPT09ZXx8InN0cmluZyI9PT10eXBlb2Ygbi5jaGlsZHJlbnx8Im51bWJlciI9PT10eXBlb2Ygbi5jaGlsZHJlbnx8Im9iamVjdCI9PT10eXBlb2Ygbi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PW4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPW4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfXZhciBybD0iZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsbGw9ImZ1bmN0aW9uIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxhbD0iZnVuY3Rpb24iPT09dHlwZW9mIFByb21pc2U/UHJvbWlzZTp2b2lkIDAsb2w9ImZ1bmN0aW9uIj09PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz9xdWV1ZU1pY3JvdGFzazoidW5kZWZpbmVkIiE9PXR5cGVvZiBhbD9mdW5jdGlvbihlKXtyZXR1cm4gYWwucmVzb2x2ZShudWxsKS50aGVuKGUpLmNhdGNoKHVsKX06cmw7ZnVuY3Rpb24gdWwoZSl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0aHJvdyBlfSkpfWZ1bmN0aW9uIGlsKGUsbil7dmFyIHQ9bixyPTA7ZG97dmFyIGw9dC5uZXh0U2libGluZztpZihlLnJlbW92ZUNoaWxkKHQpLGwmJjg9PT1sLm5vZGVUeXBlKWlmKCIvJCI9PT0odD1sLmRhdGEpKXtpZigwPT09cilyZXR1cm4gZS5yZW1vdmVDaGlsZChsKSx2b2lkICRuKG4pO3ItLX1lbHNlIiQiIT09dCYmIiQ/IiE9PXQmJiIkISIhPT10fHxyKys7dD1sfXdoaWxlKHQpOyRuKG4pfWZ1bmN0aW9uIHNsKGUpe2Zvcig7bnVsbCE9ZTtlPWUubmV4dFNpYmxpbmcpe3ZhciBuPWUubm9kZVR5cGU7aWYoMT09PW58fDM9PT1uKWJyZWFrO2lmKDg9PT1uKXtpZigiJCI9PT0obj1lLmRhdGEpfHwiJCEiPT09bnx8IiQ/Ij09PW4pYnJlYWs7aWYoIi8kIj09PW4pcmV0dXJuIG51bGx9fXJldHVybiBlfWZ1bmN0aW9uIGNsKGUpe2U9ZS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBuPTA7ZTspe2lmKDg9PT1lLm5vZGVUeXBlKXt2YXIgdD1lLmRhdGE7aWYoIiQiPT09dHx8IiQhIj09PXR8fCIkPyI9PT10KXtpZigwPT09bilyZXR1cm4gZTtuLS19ZWxzZSIvJCI9PT10JiZuKyt9ZT1lLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH12YXIgZmw9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksZGw9Il9fcmVhY3RGaWJlciQiK2ZsLHBsPSJfX3JlYWN0UHJvcHMkIitmbCxtbD0iX19yZWFjdENvbnRhaW5lciQiK2ZsLGhsPSJfX3JlYWN0RXZlbnRzJCIrZmwsdmw9Il9fcmVhY3RMaXN0ZW5lcnMkIitmbCxnbD0iX19yZWFjdEhhbmRsZXMkIitmbDtmdW5jdGlvbiB5bChlKXt2YXIgbj1lW2RsXTtpZihuKXJldHVybiBuO2Zvcih2YXIgdD1lLnBhcmVudE5vZGU7dDspe2lmKG49dFttbF18fHRbZGxdKXtpZih0PW4uYWx0ZXJuYXRlLG51bGwhPT1uLmNoaWxkfHxudWxsIT09dCYmbnVsbCE9PXQuY2hpbGQpZm9yKGU9Y2woZSk7bnVsbCE9PWU7KXtpZih0PWVbZGxdKXJldHVybiB0O2U9Y2woZSl9cmV0dXJuIG59dD0oZT10KS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIGJsKGUpe3JldHVybiEoZT1lW2RsXXx8ZVttbF0pfHw1IT09ZS50YWcmJjYhPT1lLnRhZyYmMTMhPT1lLnRhZyYmMyE9PWUudGFnP251bGw6ZX1mdW5jdGlvbiB3bChlKXtpZig1PT09ZS50YWd8fDY9PT1lLnRhZylyZXR1cm4gZS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IoYSgzMykpfWZ1bmN0aW9uIGtsKGUpe3JldHVybiBlW3BsXXx8bnVsbH12YXIgU2w9W10seGw9LTE7ZnVuY3Rpb24gRWwoZSl7cmV0dXJue2N1cnJlbnQ6ZX19ZnVuY3Rpb24gQ2woZSl7MD54bHx8KGUuY3VycmVudD1TbFt4bF0sU2xbeGxdPW51bGwseGwtLSl9ZnVuY3Rpb24gX2woZSxuKXt4bCsrLFNsW3hsXT1lLmN1cnJlbnQsZS5jdXJyZW50PW59dmFyIE5sPXt9LFBsPUVsKE5sKSx6bD1FbCghMSksVGw9Tmw7ZnVuY3Rpb24gTGwoZSxuKXt2YXIgdD1lLnR5cGUuY29udGV4dFR5cGVzO2lmKCF0KXJldHVybiBObDt2YXIgcj1lLnN0YXRlTm9kZTtpZihyJiZyLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT1uKXJldHVybiByLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBsLGE9e307Zm9yKGwgaW4gdClhW2xdPW5bbF07cmV0dXJuIHImJigoZT1lLnN0YXRlTm9kZSkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1uLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9YSksYX1mdW5jdGlvbiBPbChlKXtyZXR1cm4gbnVsbCE9PShlPWUuY2hpbGRDb250ZXh0VHlwZXMpJiZ2b2lkIDAhPT1lfWZ1bmN0aW9uIE1sKCl7Q2woemwpLENsKFBsKX1mdW5jdGlvbiBSbChlLG4sdCl7aWYoUGwuY3VycmVudCE9PU5sKXRocm93IEVycm9yKGEoMTY4KSk7X2woUGwsbiksX2woemwsdCl9ZnVuY3Rpb24gamwoZSxuLHQpe3ZhciByPWUuc3RhdGVOb2RlO2lmKG49bi5jaGlsZENvbnRleHRUeXBlcywiZnVuY3Rpb24iIT09dHlwZW9mIHIuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiB0O2Zvcih2YXIgbCBpbiByPXIuZ2V0Q2hpbGRDb250ZXh0KCkpaWYoIShsIGluIG4pKXRocm93IEVycm9yKGEoMTA4LCQoZSl8fCJVbmtub3duIixsKSk7cmV0dXJuIEQoe30sdCxyKX1mdW5jdGlvbiBGbChlKXtyZXR1cm4gZT0oZT1lLnN0YXRlTm9kZSkmJmUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fE5sLFRsPVBsLmN1cnJlbnQsX2woUGwsZSksX2woemwsemwuY3VycmVudCksITB9ZnVuY3Rpb24gRGwoZSxuLHQpe3ZhciByPWUuc3RhdGVOb2RlO2lmKCFyKXRocm93IEVycm9yKGEoMTY5KSk7dD8oZT1qbChlLG4sVGwpLHIuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9ZSxDbCh6bCksQ2woUGwpLF9sKFBsLGUpKTpDbCh6bCksX2woemwsdCl9dmFyIElsPW51bGwsVWw9ITEsQWw9ITE7ZnVuY3Rpb24gQmwoZSl7bnVsbD09PUlsP0lsPVtlXTpJbC5wdXNoKGUpfWZ1bmN0aW9uIFZsKCl7aWYoIUFsJiZudWxsIT09SWwpe0FsPSEwO3ZhciBlPTAsbj13bjt0cnl7dmFyIHQ9SWw7Zm9yKHduPTE7ZTx0Lmxlbmd0aDtlKyspe3ZhciByPXRbZV07ZG97cj1yKCEwKX13aGlsZShudWxsIT09cil9SWw9bnVsbCxVbD0hMX1jYXRjaChsKXt0aHJvdyBudWxsIT09SWwmJihJbD1JbC5zbGljZShlKzEpKSxxZShaZSxWbCksbH1maW5hbGx5e3duPW4sQWw9ITF9fXJldHVybiBudWxsfXZhciAkbD1bXSxIbD0wLFdsPW51bGwsUWw9MCxxbD1bXSxLbD0wLFlsPW51bGwsWGw9MSxHbD0iIjtmdW5jdGlvbiBKbChlLG4peyRsW0hsKytdPVFsLCRsW0hsKytdPVdsLFdsPWUsUWw9bn1mdW5jdGlvbiBabChlLG4sdCl7cWxbS2wrK109WGwscWxbS2wrK109R2wscWxbS2wrK109WWwsWWw9ZTt2YXIgcj1YbDtlPUdsO3ZhciBsPTMyLW9uKHIpLTE7ciY9figxPDxsKSx0Kz0xO3ZhciBhPTMyLW9uKG4pK2w7aWYoMzA8YSl7dmFyIG89bC1sJTU7YT0ociYoMTw8byktMSkudG9TdHJpbmcoMzIpLHI+Pj1vLGwtPW8sWGw9MTw8MzItb24obikrbHx0PDxsfHIsR2w9YStlfWVsc2UgWGw9MTw8YXx0PDxsfHIsR2w9ZX1mdW5jdGlvbiBlYShlKXtudWxsIT09ZS5yZXR1cm4mJihKbChlLDEpLFpsKGUsMSwwKSl9ZnVuY3Rpb24gbmEoZSl7Zm9yKDtlPT09V2w7KVdsPSRsWy0tSGxdLCRsW0hsXT1udWxsLFFsPSRsWy0tSGxdLCRsW0hsXT1udWxsO2Zvcig7ZT09PVlsOylZbD1xbFstLUtsXSxxbFtLbF09bnVsbCxHbD1xbFstLUtsXSxxbFtLbF09bnVsbCxYbD1xbFstLUtsXSxxbFtLbF09bnVsbH12YXIgdGE9bnVsbCxyYT1udWxsLGxhPSExLGFhPW51bGw7ZnVuY3Rpb24gb2EoZSxuKXt2YXIgdD1Mcyg1LG51bGwsbnVsbCwwKTt0LmVsZW1lbnRUeXBlPSJERUxFVEVEIix0LnN0YXRlTm9kZT1uLHQucmV0dXJuPWUsbnVsbD09PShuPWUuZGVsZXRpb25zKT8oZS5kZWxldGlvbnM9W3RdLGUuZmxhZ3N8PTE2KTpuLnB1c2godCl9ZnVuY3Rpb24gdWEoZSxuKXtzd2l0Y2goZS50YWcpe2Nhc2UgNTp2YXIgdD1lLnR5cGU7cmV0dXJuIG51bGwhPT0obj0xIT09bi5ub2RlVHlwZXx8dC50b0xvd2VyQ2FzZSgpIT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6bikmJihlLnN0YXRlTm9kZT1uLHRhPWUscmE9c2wobi5maXJzdENoaWxkKSwhMCk7Y2FzZSA2OnJldHVybiBudWxsIT09KG49IiI9PT1lLnBlbmRpbmdQcm9wc3x8MyE9PW4ubm9kZVR5cGU/bnVsbDpuKSYmKGUuc3RhdGVOb2RlPW4sdGE9ZSxyYT1udWxsLCEwKTtjYXNlIDEzOnJldHVybiBudWxsIT09KG49OCE9PW4ubm9kZVR5cGU/bnVsbDpuKSYmKHQ9bnVsbCE9PVlsP3tpZDpYbCxvdmVyZmxvdzpHbH06bnVsbCxlLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6bix0cmVlQ29udGV4dDp0LHJldHJ5TGFuZToxMDczNzQxODI0fSwodD1McygxOCxudWxsLG51bGwsMCkpLnN0YXRlTm9kZT1uLHQucmV0dXJuPWUsZS5jaGlsZD10LHRhPWUscmE9bnVsbCwhMCk7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gaWEoZSl7cmV0dXJuIDAhPT0oMSZlLm1vZGUpJiYwPT09KDEyOCZlLmZsYWdzKX1mdW5jdGlvbiBzYShlKXtpZihsYSl7dmFyIG49cmE7aWYobil7dmFyIHQ9bjtpZighdWEoZSxuKSl7aWYoaWEoZSkpdGhyb3cgRXJyb3IoYSg0MTgpKTtuPXNsKHQubmV4dFNpYmxpbmcpO3ZhciByPXRhO24mJnVhKGUsbik/b2Eocix0KTooZS5mbGFncz0tNDA5NyZlLmZsYWdzfDIsbGE9ITEsdGE9ZSl9fWVsc2V7aWYoaWEoZSkpdGhyb3cgRXJyb3IoYSg0MTgpKTtlLmZsYWdzPS00MDk3JmUuZmxhZ3N8MixsYT0hMSx0YT1lfX19ZnVuY3Rpb24gY2EoZSl7Zm9yKGU9ZS5yZXR1cm47bnVsbCE9PWUmJjUhPT1lLnRhZyYmMyE9PWUudGFnJiYxMyE9PWUudGFnOyllPWUucmV0dXJuO3RhPWV9ZnVuY3Rpb24gZmEoZSl7aWYoZSE9PXRhKXJldHVybiExO2lmKCFsYSlyZXR1cm4gY2EoZSksbGE9ITAsITE7dmFyIG47aWYoKG49MyE9PWUudGFnKSYmIShuPTUhPT1lLnRhZykmJihuPSJoZWFkIiE9PShuPWUudHlwZSkmJiJib2R5IiE9PW4mJiF0bChlLnR5cGUsZS5tZW1vaXplZFByb3BzKSksbiYmKG49cmEpKXtpZihpYShlKSl0aHJvdyBkYSgpLEVycm9yKGEoNDE4KSk7Zm9yKDtuOylvYShlLG4pLG49c2wobi5uZXh0U2libGluZyl9aWYoY2EoZSksMTM9PT1lLnRhZyl7aWYoIShlPW51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpP2UuZGVoeWRyYXRlZDpudWxsKSl0aHJvdyBFcnJvcihhKDMxNykpO2U6e2ZvcihlPWUubmV4dFNpYmxpbmcsbj0wO2U7KXtpZig4PT09ZS5ub2RlVHlwZSl7dmFyIHQ9ZS5kYXRhO2lmKCIvJCI9PT10KXtpZigwPT09bil7cmE9c2woZS5uZXh0U2libGluZyk7YnJlYWsgZX1uLS19ZWxzZSIkIiE9PXQmJiIkISIhPT10JiYiJD8iIT09dHx8bisrfWU9ZS5uZXh0U2libGluZ31yYT1udWxsfX1lbHNlIHJhPXRhP3NsKGUuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIGRhKCl7Zm9yKHZhciBlPXJhO2U7KWU9c2woZS5uZXh0U2libGluZyl9ZnVuY3Rpb24gcGEoKXtyYT10YT1udWxsLGxhPSExfWZ1bmN0aW9uIG1hKGUpe251bGw9PT1hYT9hYT1bZV06YWEucHVzaChlKX12YXIgaGE9dy5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZztmdW5jdGlvbiB2YShlLG4pe2lmKGUmJmUuZGVmYXVsdFByb3BzKXtmb3IodmFyIHQgaW4gbj1EKHt9LG4pLGU9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09blt0XSYmKG5bdF09ZVt0XSk7cmV0dXJuIG59cmV0dXJuIG59dmFyIGdhPUVsKG51bGwpLHlhPW51bGwsYmE9bnVsbCx3YT1udWxsO2Z1bmN0aW9uIGthKCl7d2E9YmE9eWE9bnVsbH1mdW5jdGlvbiBTYShlKXt2YXIgbj1nYS5jdXJyZW50O0NsKGdhKSxlLl9jdXJyZW50VmFsdWU9bn1mdW5jdGlvbiB4YShlLG4sdCl7Zm9yKDtudWxsIT09ZTspe3ZhciByPWUuYWx0ZXJuYXRlO2lmKChlLmNoaWxkTGFuZXMmbikhPT1uPyhlLmNoaWxkTGFuZXN8PW4sbnVsbCE9PXImJihyLmNoaWxkTGFuZXN8PW4pKTpudWxsIT09ciYmKHIuY2hpbGRMYW5lcyZuKSE9PW4mJihyLmNoaWxkTGFuZXN8PW4pLGU9PT10KWJyZWFrO2U9ZS5yZXR1cm59fWZ1bmN0aW9uIEVhKGUsbil7eWE9ZSx3YT1iYT1udWxsLG51bGwhPT0oZT1lLmRlcGVuZGVuY2llcykmJm51bGwhPT1lLmZpcnN0Q29udGV4dCYmKDAhPT0oZS5sYW5lcyZuKSYmKHd1PSEwKSxlLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiBDYShlKXt2YXIgbj1lLl9jdXJyZW50VmFsdWU7aWYod2EhPT1lKWlmKGU9e2NvbnRleHQ6ZSxtZW1vaXplZFZhbHVlOm4sbmV4dDpudWxsfSxudWxsPT09YmEpe2lmKG51bGw9PT15YSl0aHJvdyBFcnJvcihhKDMwOCkpO2JhPWUseWEuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDplfX1lbHNlIGJhPWJhLm5leHQ9ZTtyZXR1cm4gbn12YXIgX2E9bnVsbDtmdW5jdGlvbiBOYShlKXtudWxsPT09X2E/X2E9W2VdOl9hLnB1c2goZSl9ZnVuY3Rpb24gUGEoZSxuLHQscil7dmFyIGw9bi5pbnRlcmxlYXZlZDtyZXR1cm4gbnVsbD09PWw/KHQubmV4dD10LE5hKG4pKToodC5uZXh0PWwubmV4dCxsLm5leHQ9dCksbi5pbnRlcmxlYXZlZD10LHphKGUscil9ZnVuY3Rpb24gemEoZSxuKXtlLmxhbmVzfD1uO3ZhciB0PWUuYWx0ZXJuYXRlO2ZvcihudWxsIT09dCYmKHQubGFuZXN8PW4pLHQ9ZSxlPWUucmV0dXJuO251bGwhPT1lOyllLmNoaWxkTGFuZXN8PW4sbnVsbCE9PSh0PWUuYWx0ZXJuYXRlKSYmKHQuY2hpbGRMYW5lc3w9biksdD1lLGU9ZS5yZXR1cm47cmV0dXJuIDM9PT10LnRhZz90LnN0YXRlTm9kZTpudWxsfXZhciBUYT0hMTtmdW5jdGlvbiBMYShlKXtlLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6ZS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fWZ1bmN0aW9uIE9hKGUsbil7ZT1lLnVwZGF0ZVF1ZXVlLG4udXBkYXRlUXVldWU9PT1lJiYobi51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTplLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDplLnNoYXJlZCxlZmZlY3RzOmUuZWZmZWN0c30pfWZ1bmN0aW9uIE1hKGUsbil7cmV0dXJue2V2ZW50VGltZTplLGxhbmU6bix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIFJhKGUsbix0KXt2YXIgcj1lLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1yKXJldHVybiBudWxsO2lmKHI9ci5zaGFyZWQsMCE9PSgyJlBpKSl7dmFyIGw9ci5wZW5kaW5nO3JldHVybiBudWxsPT09bD9uLm5leHQ9bjoobi5uZXh0PWwubmV4dCxsLm5leHQ9biksci5wZW5kaW5nPW4semEoZSx0KX1yZXR1cm4gbnVsbD09PShsPXIuaW50ZXJsZWF2ZWQpPyhuLm5leHQ9bixOYShyKSk6KG4ubmV4dD1sLm5leHQsbC5uZXh0PW4pLHIuaW50ZXJsZWF2ZWQ9bix6YShlLHQpfWZ1bmN0aW9uIGphKGUsbix0KXtpZihudWxsIT09KG49bi51cGRhdGVRdWV1ZSkmJihuPW4uc2hhcmVkLDAhPT0oNDE5NDI0MCZ0KSkpe3ZhciByPW4ubGFuZXM7dHw9ciY9ZS5wZW5kaW5nTGFuZXMsbi5sYW5lcz10LGJuKGUsdCl9fWZ1bmN0aW9uIEZhKGUsbil7dmFyIHQ9ZS51cGRhdGVRdWV1ZSxyPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1yJiZ0PT09KHI9ci51cGRhdGVRdWV1ZSkpe3ZhciBsPW51bGwsYT1udWxsO2lmKG51bGwhPT0odD10LmZpcnN0QmFzZVVwZGF0ZSkpe2Rve3ZhciBvPXtldmVudFRpbWU6dC5ldmVudFRpbWUsbGFuZTp0LmxhbmUsdGFnOnQudGFnLHBheWxvYWQ6dC5wYXlsb2FkLGNhbGxiYWNrOnQuY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09YT9sPWE9bzphPWEubmV4dD1vLHQ9dC5uZXh0fXdoaWxlKG51bGwhPT10KTtudWxsPT09YT9sPWE9bjphPWEubmV4dD1ufWVsc2UgbD1hPW47cmV0dXJuIHQ9e2Jhc2VTdGF0ZTpyLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bCxsYXN0QmFzZVVwZGF0ZTphLHNoYXJlZDpyLnNoYXJlZCxlZmZlY3RzOnIuZWZmZWN0c30sdm9pZChlLnVwZGF0ZVF1ZXVlPXQpfW51bGw9PT0oZT10Lmxhc3RCYXNlVXBkYXRlKT90LmZpcnN0QmFzZVVwZGF0ZT1uOmUubmV4dD1uLHQubGFzdEJhc2VVcGRhdGU9bn1mdW5jdGlvbiBEYShlLG4sdCxyKXt2YXIgbD1lLnVwZGF0ZVF1ZXVlO1RhPSExO3ZhciBhPWwuZmlyc3RCYXNlVXBkYXRlLG89bC5sYXN0QmFzZVVwZGF0ZSx1PWwuc2hhcmVkLnBlbmRpbmc7aWYobnVsbCE9PXUpe2wuc2hhcmVkLnBlbmRpbmc9bnVsbDt2YXIgaT11LHM9aS5uZXh0O2kubmV4dD1udWxsLG51bGw9PT1vP2E9czpvLm5leHQ9cyxvPWk7dmFyIGM9ZS5hbHRlcm5hdGU7bnVsbCE9PWMmJigodT0oYz1jLnVwZGF0ZVF1ZXVlKS5sYXN0QmFzZVVwZGF0ZSkhPT1vJiYobnVsbD09PXU/Yy5maXJzdEJhc2VVcGRhdGU9czp1Lm5leHQ9cyxjLmxhc3RCYXNlVXBkYXRlPWkpKX1pZihudWxsIT09YSl7dmFyIGY9bC5iYXNlU3RhdGU7Zm9yKG89MCxjPXM9aT1udWxsLHU9YTs7KXt2YXIgZD11LmxhbmUscD11LmV2ZW50VGltZTtpZigociZkKT09PWQpe251bGwhPT1jJiYoYz1jLm5leHQ9e2V2ZW50VGltZTpwLGxhbmU6MCx0YWc6dS50YWcscGF5bG9hZDp1LnBheWxvYWQsY2FsbGJhY2s6dS5jYWxsYmFjayxuZXh0Om51bGx9KTtlOnt2YXIgbT1lLGg9dTtzd2l0Y2goZD1uLHA9dCxoLnRhZyl7Y2FzZSAxOmlmKCJmdW5jdGlvbiI9PT10eXBlb2YobT1oLnBheWxvYWQpKXtmPW0uY2FsbChwLGYsZCk7YnJlYWsgZX1mPW07YnJlYWsgZTtjYXNlIDM6bS5mbGFncz0tNjU1MzcmbS5mbGFnc3wxMjg7Y2FzZSAwOmlmKG51bGw9PT0oZD0iZnVuY3Rpb24iPT09dHlwZW9mKG09aC5wYXlsb2FkKT9tLmNhbGwocCxmLGQpOm0pfHx2b2lkIDA9PT1kKWJyZWFrIGU7Zj1EKHt9LGYsZCk7YnJlYWsgZTtjYXNlIDI6VGE9ITB9fW51bGwhPT11LmNhbGxiYWNrJiYwIT09dS5sYW5lJiYoZS5mbGFnc3w9NjQsbnVsbD09PShkPWwuZWZmZWN0cyk/bC5lZmZlY3RzPVt1XTpkLnB1c2godSkpfWVsc2UgcD17ZXZlbnRUaW1lOnAsbGFuZTpkLHRhZzp1LnRhZyxwYXlsb2FkOnUucGF5bG9hZCxjYWxsYmFjazp1LmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PWM/KHM9Yz1wLGk9Zik6Yz1jLm5leHQ9cCxvfD1kO2lmKG51bGw9PT0odT11Lm5leHQpKXtpZihudWxsPT09KHU9bC5zaGFyZWQucGVuZGluZykpYnJlYWs7dT0oZD11KS5uZXh0LGQubmV4dD1udWxsLGwubGFzdEJhc2VVcGRhdGU9ZCxsLnNoYXJlZC5wZW5kaW5nPW51bGx9fWlmKG51bGw9PT1jJiYoaT1mKSxsLmJhc2VTdGF0ZT1pLGwuZmlyc3RCYXNlVXBkYXRlPXMsbC5sYXN0QmFzZVVwZGF0ZT1jLG51bGwhPT0obj1sLnNoYXJlZC5pbnRlcmxlYXZlZCkpe2w9bjtkb3tvfD1sLmxhbmUsbD1sLm5leHR9d2hpbGUobCE9PW4pfWVsc2UgbnVsbD09PWEmJihsLnNoYXJlZC5sYW5lcz0wKTtGaXw9byxlLmxhbmVzPW8sZS5tZW1vaXplZFN0YXRlPWZ9fWZ1bmN0aW9uIElhKGUsbix0KXtpZihlPW4uZWZmZWN0cyxuLmVmZmVjdHM9bnVsbCxudWxsIT09ZSlmb3Iobj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLGw9ci5jYWxsYmFjaztpZihudWxsIT09bCl7aWYoci5jYWxsYmFjaz1udWxsLHI9dCwiZnVuY3Rpb24iIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IoYSgxOTEsbCkpO2wuY2FsbChyKX19fXZhciBVYT0obmV3IHIuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIEFhKGUsbix0LHIpe3Q9bnVsbD09PSh0PXQocixuPWUubWVtb2l6ZWRTdGF0ZSkpfHx2b2lkIDA9PT10P246RCh7fSxuLHQpLGUubWVtb2l6ZWRTdGF0ZT10LDA9PT1lLmxhbmVzJiYoZS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9dCl9dmFyIEJhPXtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuISEoZT1lLl9yZWFjdEludGVybmFscykmJlZlKGUpPT09ZX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsbix0KXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPWVzKCksbD1ucyhlKSxhPU1hKHIsbCk7YS5wYXlsb2FkPW4sdm9pZCAwIT09dCYmbnVsbCE9PXQmJihhLmNhbGxiYWNrPXQpLG51bGwhPT0obj1SYShlLGEsbCkpJiYodHMobixlLGwsciksamEobixlLGwpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLG4sdCl7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgcj1lcygpLGw9bnMoZSksYT1NYShyLGwpO2EudGFnPTEsYS5wYXlsb2FkPW4sdm9pZCAwIT09dCYmbnVsbCE9PXQmJihhLmNhbGxiYWNrPXQpLG51bGwhPT0obj1SYShlLGEsbCkpJiYodHMobixlLGwsciksamEobixlLGwpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgdD1lcygpLHI9bnMoZSksbD1NYSh0LHIpO2wudGFnPTIsdm9pZCAwIT09biYmbnVsbCE9PW4mJihsLmNhbGxiYWNrPW4pLG51bGwhPT0obj1SYShlLGwscikpJiYodHMobixlLHIsdCksamEobixlLHIpKX19O2Z1bmN0aW9uIFZhKGUsbix0LHIsbCxhLG8pe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YoZT1lLnN0YXRlTm9kZSkuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Uuc2hvdWxkQ29tcG9uZW50VXBkYXRlKHIsYSxvKTohbi5wcm90b3R5cGV8fCFuLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudHx8KCFpcih0LHIpfHwhaXIobCxhKSl9ZnVuY3Rpb24gJGEoZSxuLHQpe3ZhciByPSExLGw9TmwsYT1uLmNvbnRleHRUeXBlO3JldHVybiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hP2E9Q2EoYSk6KGw9T2wobik/VGw6UGwuY3VycmVudCxhPShyPW51bGwhPT0ocj1uLmNvbnRleHRUeXBlcykmJnZvaWQgMCE9PXIpP0xsKGUsbCk6TmwpLG49bmV3IG4odCxhKSxlLm1lbW9pemVkU3RhdGU9bnVsbCE9PW4uc3RhdGUmJnZvaWQgMCE9PW4uc3RhdGU/bi5zdGF0ZTpudWxsLG4udXBkYXRlcj1CYSxlLnN0YXRlTm9kZT1uLG4uX3JlYWN0SW50ZXJuYWxzPWUsciYmKChlPWUuc3RhdGVOb2RlKS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWwsZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1hKSxufWZ1bmN0aW9uIEhhKGUsbix0LHIpe2U9bi5zdGF0ZSwiZnVuY3Rpb24iPT09dHlwZW9mIG4uY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmbi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHQsciksImZ1bmN0aW9uIj09PXR5cGVvZiBuLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZuLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHQsciksbi5zdGF0ZSE9PWUmJkJhLmVucXVldWVSZXBsYWNlU3RhdGUobixuLnN0YXRlLG51bGwpfWZ1bmN0aW9uIFdhKGUsbix0LHIpe3ZhciBsPWUuc3RhdGVOb2RlO2wucHJvcHM9dCxsLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxsLnJlZnM9VWEsTGEoZSk7dmFyIGE9bi5jb250ZXh0VHlwZTsib2JqZWN0Ij09PXR5cGVvZiBhJiZudWxsIT09YT9sLmNvbnRleHQ9Q2EoYSk6KGE9T2wobik/VGw6UGwuY3VycmVudCxsLmNvbnRleHQ9TGwoZSxhKSksbC5zdGF0ZT1lLm1lbW9pemVkU3RhdGUsImZ1bmN0aW9uIj09PXR5cGVvZihhPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSYmKEFhKGUsbixhLHQpLGwuc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSwiZnVuY3Rpb24iPT09dHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHwiZnVuY3Rpb24iPT09dHlwZW9mIGwuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fCJmdW5jdGlvbiIhPT10eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT09dHlwZW9mIGwuY29tcG9uZW50V2lsbE1vdW50fHwobj1sLnN0YXRlLCJmdW5jdGlvbiI9PT10eXBlb2YgbC5jb21wb25lbnRXaWxsTW91bnQmJmwuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09PXR5cGVvZiBsLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmwuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLG4hPT1sLnN0YXRlJiZCYS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGwsbC5zdGF0ZSxudWxsKSxEYShlLHQsbCxyKSxsLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSksImZ1bmN0aW9uIj09PXR5cGVvZiBsLmNvbXBvbmVudERpZE1vdW50JiYoZS5mbGFnc3w9NDE5NDMwOCl9ZnVuY3Rpb24gUWEoZSxuLHQpe2lmKG51bGwhPT0oZT10LnJlZikmJiJmdW5jdGlvbiIhPT10eXBlb2YgZSYmIm9iamVjdCIhPT10eXBlb2YgZSl7aWYodC5fb3duZXIpe2lmKHQ9dC5fb3duZXIpe2lmKDEhPT10LnRhZyl0aHJvdyBFcnJvcihhKDMwOSkpO3ZhciByPXQuc3RhdGVOb2RlfWlmKCFyKXRocm93IEVycm9yKGEoMTQ3LGUpKTt2YXIgbD1yLG89IiIrZTtyZXR1cm4gbnVsbCE9PW4mJm51bGwhPT1uLnJlZiYmImZ1bmN0aW9uIj09PXR5cGVvZiBuLnJlZiYmbi5yZWYuX3N0cmluZ1JlZj09PW8/bi5yZWY6KG49ZnVuY3Rpb24oZSl7dmFyIG49bC5yZWZzO249PT1VYSYmKG49bC5yZWZzPXt9KSxudWxsPT09ZT9kZWxldGUgbltvXTpuW29dPWV9LG4uX3N0cmluZ1JlZj1vLG4pfWlmKCJzdHJpbmciIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IoYSgyODQpKTtpZighdC5fb3duZXIpdGhyb3cgRXJyb3IoYSgyOTAsZSkpfXJldHVybiBlfWZ1bmN0aW9uIHFhKGUsbil7dGhyb3cgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobiksRXJyb3IoYSgzMSwiW29iamVjdCBPYmplY3RdIj09PWU/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMobikuam9pbigiLCAiKSsifSI6ZSkpfWZ1bmN0aW9uIEthKGUpe3JldHVybigwLGUuX2luaXQpKGUuX3BheWxvYWQpfWZ1bmN0aW9uIFlhKGUpe2Z1bmN0aW9uIG4obix0KXtpZihlKXt2YXIgcj1uLmRlbGV0aW9ucztudWxsPT09cj8obi5kZWxldGlvbnM9W3RdLG4uZmxhZ3N8PTE2KTpyLnB1c2godCl9fWZ1bmN0aW9uIHQodCxyKXtpZighZSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1yOyluKHQscikscj1yLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihlLG4pe2ZvcihlPW5ldyBNYXA7bnVsbCE9PW47KW51bGwhPT1uLmtleT9lLnNldChuLmtleSxuKTplLnNldChuLmluZGV4LG4pLG49bi5zaWJsaW5nO3JldHVybiBlfWZ1bmN0aW9uIGwoZSxuKXtyZXR1cm4oZT1NcyhlLG4pKS5pbmRleD0wLGUuc2libGluZz1udWxsLGV9ZnVuY3Rpb24gbyhuLHQscil7cmV0dXJuIG4uaW5kZXg9cixlP251bGwhPT0ocj1uLmFsdGVybmF0ZSk/KHI9ci5pbmRleCk8dD8obi5mbGFnc3w9Mix0KTpyOihuLmZsYWdzfD0yLHQpOihuLmZsYWdzfD0xMDQ4NTc2LHQpfWZ1bmN0aW9uIHUobil7cmV0dXJuIGUmJm51bGw9PT1uLmFsdGVybmF0ZSYmKG4uZmxhZ3N8PTIpLG59ZnVuY3Rpb24gaShlLG4sdCxyKXtyZXR1cm4gbnVsbD09PW58fDYhPT1uLnRhZz8oKG49RHModCxlLm1vZGUscikpLnJldHVybj1lLG4pOigobj1sKG4sdCkpLnJldHVybj1lLG4pfWZ1bmN0aW9uIHMoZSxuLHQscil7dmFyIGE9dC50eXBlO3JldHVybiBhPT09eD9mKGUsbix0LnByb3BzLmNoaWxkcmVuLHIsdC5rZXkpOm51bGwhPT1uJiYobi5lbGVtZW50VHlwZT09PWF8fCJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09TyYmS2EoYSk9PT1uLnR5cGUpPygocj1sKG4sdC5wcm9wcykpLnJlZj1RYShlLG4sdCksci5yZXR1cm49ZSxyKTooKHI9UnModC50eXBlLHQua2V5LHQucHJvcHMsbnVsbCxlLm1vZGUscikpLnJlZj1RYShlLG4sdCksci5yZXR1cm49ZSxyKX1mdW5jdGlvbiBjKGUsbix0LHIpe3JldHVybiBudWxsPT09bnx8NCE9PW4udGFnfHxuLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09dC5jb250YWluZXJJbmZvfHxuLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PXQuaW1wbGVtZW50YXRpb24/KChuPUlzKHQsZS5tb2RlLHIpKS5yZXR1cm49ZSxuKTooKG49bChuLHQuY2hpbGRyZW58fFtdKSkucmV0dXJuPWUsbil9ZnVuY3Rpb24gZihlLG4sdCxyLGEpe3JldHVybiBudWxsPT09bnx8NyE9PW4udGFnPygobj1qcyh0LGUubW9kZSxyLGEpKS5yZXR1cm49ZSxuKTooKG49bChuLHQpKS5yZXR1cm49ZSxuKX1mdW5jdGlvbiBkKGUsbix0KXtpZigic3RyaW5nIj09PXR5cGVvZiBuJiYiIiE9PW58fCJudW1iZXIiPT09dHlwZW9mIG4pcmV0dXJuKG49RHMoIiIrbixlLm1vZGUsdCkpLnJldHVybj1lLG47aWYoIm9iamVjdCI9PT10eXBlb2YgbiYmbnVsbCE9PW4pe3N3aXRjaChuLiQkdHlwZW9mKXtjYXNlIGs6cmV0dXJuKHQ9UnMobi50eXBlLG4ua2V5LG4ucHJvcHMsbnVsbCxlLm1vZGUsdCkpLnJlZj1RYShlLG51bGwsbiksdC5yZXR1cm49ZSx0O2Nhc2UgUzpyZXR1cm4obj1JcyhuLGUubW9kZSx0KSkucmV0dXJuPWUsbjtjYXNlIE86cmV0dXJuIGQoZSwoMCxuLl9pbml0KShuLl9wYXlsb2FkKSx0KX1pZihuZShuKXx8aihuKSlyZXR1cm4obj1qcyhuLGUubW9kZSx0LG51bGwpKS5yZXR1cm49ZSxuO3FhKGUsbil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcChlLG4sdCxyKXt2YXIgbD1udWxsIT09bj9uLmtleTpudWxsO2lmKCJzdHJpbmciPT09dHlwZW9mIHQmJiIiIT09dHx8Im51bWJlciI9PT10eXBlb2YgdClyZXR1cm4gbnVsbCE9PWw/bnVsbDppKGUsbiwiIit0LHIpO2lmKCJvYmplY3QiPT09dHlwZW9mIHQmJm51bGwhPT10KXtzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBrOnJldHVybiB0LmtleT09PWw/cyhlLG4sdCxyKTpudWxsO2Nhc2UgUzpyZXR1cm4gdC5rZXk9PT1sP2MoZSxuLHQscik6bnVsbDtjYXNlIE86cmV0dXJuIHAoZSxuLChsPXQuX2luaXQpKHQuX3BheWxvYWQpLHIpfWlmKG5lKHQpfHxqKHQpKXJldHVybiBudWxsIT09bD9udWxsOmYoZSxuLHQscixudWxsKTtxYShlLHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIG0oZSxuLHQscixsKXtpZigic3RyaW5nIj09PXR5cGVvZiByJiYiIiE9PXJ8fCJudW1iZXIiPT09dHlwZW9mIHIpcmV0dXJuIGkobixlPWUuZ2V0KHQpfHxudWxsLCIiK3IsbCk7aWYoIm9iamVjdCI9PT10eXBlb2YgciYmbnVsbCE9PXIpe3N3aXRjaChyLiQkdHlwZW9mKXtjYXNlIGs6cmV0dXJuIHMobixlPWUuZ2V0KG51bGw9PT1yLmtleT90OnIua2V5KXx8bnVsbCxyLGwpO2Nhc2UgUzpyZXR1cm4gYyhuLGU9ZS5nZXQobnVsbD09PXIua2V5P3Q6ci5rZXkpfHxudWxsLHIsbCk7Y2FzZSBPOnJldHVybiBtKGUsbix0LCgwLHIuX2luaXQpKHIuX3BheWxvYWQpLGwpfWlmKG5lKHIpfHxqKHIpKXJldHVybiBmKG4sZT1lLmdldCh0KXx8bnVsbCxyLGwsbnVsbCk7cWEobixyKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBoKGwsYSx1LGkpe2Zvcih2YXIgcz1udWxsLGM9bnVsbCxmPWEsaD1hPTAsdj1udWxsO251bGwhPT1mJiZoPHUubGVuZ3RoO2grKyl7Zi5pbmRleD5oPyh2PWYsZj1udWxsKTp2PWYuc2libGluZzt2YXIgZz1wKGwsZix1W2hdLGkpO2lmKG51bGw9PT1nKXtudWxsPT09ZiYmKGY9dik7YnJlYWt9ZSYmZiYmbnVsbD09PWcuYWx0ZXJuYXRlJiZuKGwsZiksYT1vKGcsYSxoKSxudWxsPT09Yz9zPWc6Yy5zaWJsaW5nPWcsYz1nLGY9dn1pZihoPT09dS5sZW5ndGgpcmV0dXJuIHQobCxmKSxsYSYmSmwobCxoKSxzO2lmKG51bGw9PT1mKXtmb3IoO2g8dS5sZW5ndGg7aCsrKW51bGwhPT0oZj1kKGwsdVtoXSxpKSkmJihhPW8oZixhLGgpLG51bGw9PT1jP3M9ZjpjLnNpYmxpbmc9ZixjPWYpO3JldHVybiBsYSYmSmwobCxoKSxzfWZvcihmPXIobCxmKTtoPHUubGVuZ3RoO2grKyludWxsIT09KHY9bShmLGwsaCx1W2hdLGkpKSYmKGUmJm51bGwhPT12LmFsdGVybmF0ZSYmZi5kZWxldGUobnVsbD09PXYua2V5P2g6di5rZXkpLGE9byh2LGEsaCksbnVsbD09PWM/cz12OmMuc2libGluZz12LGM9dik7cmV0dXJuIGUmJmYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4obCxlKX0pKSxsYSYmSmwobCxoKSxzfWZ1bmN0aW9uIHYobCx1LGkscyl7dmFyIGM9aihpKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGMpdGhyb3cgRXJyb3IoYSgxNTApKTtpZihudWxsPT0oaT1jLmNhbGwoaSkpKXRocm93IEVycm9yKGEoMTUxKSk7Zm9yKHZhciBmPWM9bnVsbCxoPXUsdj11PTAsZz1udWxsLHk9aS5uZXh0KCk7bnVsbCE9PWgmJiF5LmRvbmU7disrLHk9aS5uZXh0KCkpe2guaW5kZXg+dj8oZz1oLGg9bnVsbCk6Zz1oLnNpYmxpbmc7dmFyIGI9cChsLGgseS52YWx1ZSxzKTtpZihudWxsPT09Yil7bnVsbD09PWgmJihoPWcpO2JyZWFrfWUmJmgmJm51bGw9PT1iLmFsdGVybmF0ZSYmbihsLGgpLHU9byhiLHUsdiksbnVsbD09PWY/Yz1iOmYuc2libGluZz1iLGY9YixoPWd9aWYoeS5kb25lKXJldHVybiB0KGwsaCksbGEmJkpsKGwsdiksYztpZihudWxsPT09aCl7Zm9yKDsheS5kb25lO3YrKyx5PWkubmV4dCgpKW51bGwhPT0oeT1kKGwseS52YWx1ZSxzKSkmJih1PW8oeSx1LHYpLG51bGw9PT1mP2M9eTpmLnNpYmxpbmc9eSxmPXkpO3JldHVybiBsYSYmSmwobCx2KSxjfWZvcihoPXIobCxoKTsheS5kb25lO3YrKyx5PWkubmV4dCgpKW51bGwhPT0oeT1tKGgsbCx2LHkudmFsdWUscykpJiYoZSYmbnVsbCE9PXkuYWx0ZXJuYXRlJiZoLmRlbGV0ZShudWxsPT09eS5rZXk/djp5LmtleSksdT1vKHksdSx2KSxudWxsPT09Zj9jPXk6Zi5zaWJsaW5nPXksZj15KTtyZXR1cm4gZSYmaC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gbihsLGUpfSkpLGxhJiZKbChsLHYpLGN9cmV0dXJuIGZ1bmN0aW9uIGUocixhLG8saSl7aWYoIm9iamVjdCI9PT10eXBlb2YgbyYmbnVsbCE9PW8mJm8udHlwZT09PXgmJm51bGw9PT1vLmtleSYmKG89by5wcm9wcy5jaGlsZHJlbiksIm9iamVjdCI9PT10eXBlb2YgbyYmbnVsbCE9PW8pe3N3aXRjaChvLiQkdHlwZW9mKXtjYXNlIGs6ZTp7Zm9yKHZhciBzPW8ua2V5LGM9YTtudWxsIT09Yzspe2lmKGMua2V5PT09cyl7aWYoKHM9by50eXBlKT09PXgpe2lmKDc9PT1jLnRhZyl7dChyLGMuc2libGluZyksKGE9bChjLG8ucHJvcHMuY2hpbGRyZW4pKS5yZXR1cm49cixyPWE7YnJlYWsgZX19ZWxzZSBpZihjLmVsZW1lbnRUeXBlPT09c3x8Im9iamVjdCI9PT10eXBlb2YgcyYmbnVsbCE9PXMmJnMuJCR0eXBlb2Y9PT1PJiZLYShzKT09PWMudHlwZSl7dChyLGMuc2libGluZyksKGE9bChjLG8ucHJvcHMpKS5yZWY9UWEocixjLG8pLGEucmV0dXJuPXIscj1hO2JyZWFrIGV9dChyLGMpO2JyZWFrfW4ocixjKSxjPWMuc2libGluZ31vLnR5cGU9PT14PygoYT1qcyhvLnByb3BzLmNoaWxkcmVuLHIubW9kZSxpLG8ua2V5KSkucmV0dXJuPXIscj1hKTooKGk9UnMoby50eXBlLG8ua2V5LG8ucHJvcHMsbnVsbCxyLm1vZGUsaSkpLnJlZj1RYShyLGEsbyksaS5yZXR1cm49cixyPWkpfXJldHVybiB1KHIpO2Nhc2UgUzplOntmb3IoYz1vLmtleTtudWxsIT09YTspe2lmKGEua2V5PT09Yyl7aWYoND09PWEudGFnJiZhLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09by5jb250YWluZXJJbmZvJiZhLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PW8uaW1wbGVtZW50YXRpb24pe3QocixhLnNpYmxpbmcpLChhPWwoYSxvLmNoaWxkcmVufHxbXSkpLnJldHVybj1yLHI9YTticmVhayBlfXQocixhKTticmVha31uKHIsYSksYT1hLnNpYmxpbmd9KGE9SXMobyxyLm1vZGUsaSkpLnJldHVybj1yLHI9YX1yZXR1cm4gdShyKTtjYXNlIE86cmV0dXJuIGUocixhLChjPW8uX2luaXQpKG8uX3BheWxvYWQpLGkpfWlmKG5lKG8pKXJldHVybiBoKHIsYSxvLGkpO2lmKGoobykpcmV0dXJuIHYocixhLG8saSk7cWEocixvKX1yZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBvJiYiIiE9PW98fCJudW1iZXIiPT09dHlwZW9mIG8/KG89IiIrbyxudWxsIT09YSYmNj09PWEudGFnPyh0KHIsYS5zaWJsaW5nKSwoYT1sKGEsbykpLnJldHVybj1yLHI9YSk6KHQocixhKSwoYT1EcyhvLHIubW9kZSxpKSkucmV0dXJuPXIscj1hKSx1KHIpKTp0KHIsYSl9fXZhciBYYT1ZYSghMCksR2E9WWEoITEpLEphPXt9LFphPUVsKEphKSxlbz1FbChKYSksbm89RWwoSmEpO2Z1bmN0aW9uIHRvKGUpe2lmKGU9PT1KYSl0aHJvdyBFcnJvcihhKDE3NCkpO3JldHVybiBlfWZ1bmN0aW9uIHJvKGUsbil7c3dpdGNoKF9sKG5vLG4pLF9sKGVvLGUpLF9sKFphLEphKSxlPW4ubm9kZVR5cGUpe2Nhc2UgOTpjYXNlIDExOm49KG49bi5kb2N1bWVudEVsZW1lbnQpP24ubmFtZXNwYWNlVVJJOmllKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6bj1pZShuPShlPTg9PT1lP24ucGFyZW50Tm9kZTpuKS5uYW1lc3BhY2VVUkl8fG51bGwsZT1lLnRhZ05hbWUpfUNsKFphKSxfbChaYSxuKX1mdW5jdGlvbiBsbygpe0NsKFphKSxDbChlbyksQ2wobm8pfWZ1bmN0aW9uIGFvKGUpe3RvKG5vLmN1cnJlbnQpO3ZhciBuPXRvKFphLmN1cnJlbnQpLHQ9aWUobixlLnR5cGUpO24hPT10JiYoX2woZW8sZSksX2woWmEsdCkpfWZ1bmN0aW9uIG9vKGUpe2VvLmN1cnJlbnQ9PT1lJiYoQ2woWmEpLENsKGVvKSl9dmFyIHVvPUVsKDApO2Z1bmN0aW9uIGlvKGUpe2Zvcih2YXIgbj1lO251bGwhPT1uOyl7aWYoMTM9PT1uLnRhZyl7dmFyIHQ9bi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT10JiYobnVsbD09PSh0PXQuZGVoeWRyYXRlZCl8fCIkPyI9PT10LmRhdGF8fCIkISI9PT10LmRhdGEpKXJldHVybiBufWVsc2UgaWYoMTk9PT1uLnRhZyYmdm9pZCAwIT09bi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKXtpZigwIT09KDEyOCZuLmZsYWdzKSlyZXR1cm4gbn1lbHNlIGlmKG51bGwhPT1uLmNoaWxkKXtuLmNoaWxkLnJldHVybj1uLG49bi5jaGlsZDtjb250aW51ZX1pZihuPT09ZSlicmVhaztmb3IoO251bGw9PT1uLnNpYmxpbmc7KXtpZihudWxsPT09bi5yZXR1cm58fG4ucmV0dXJuPT09ZSlyZXR1cm4gbnVsbDtuPW4ucmV0dXJufW4uc2libGluZy5yZXR1cm49bi5yZXR1cm4sbj1uLnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIHNvPVtdO2Z1bmN0aW9uIGNvKCl7Zm9yKHZhciBlPTA7ZTxzby5sZW5ndGg7ZSsrKXNvW2VdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7c28ubGVuZ3RoPTB9dmFyIGZvPXcuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixwbz13LlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLG1vPTAsaG89bnVsbCx2bz1udWxsLGdvPW51bGwseW89ITEsYm89ITEsd289MCxrbz0wO2Z1bmN0aW9uIFNvKCl7dGhyb3cgRXJyb3IoYSgzMjEpKX1mdW5jdGlvbiB4byhlLG4pe2lmKG51bGw9PT1uKXJldHVybiExO2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGgmJnQ8ZS5sZW5ndGg7dCsrKWlmKCF1cihlW3RdLG5bdF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEVvKGUsbix0LHIsbCxvKXtpZihtbz1vLGhvPW4sbi5tZW1vaXplZFN0YXRlPW51bGwsbi51cGRhdGVRdWV1ZT1udWxsLG4ubGFuZXM9MCxmby5jdXJyZW50PW51bGw9PT1lfHxudWxsPT09ZS5tZW1vaXplZFN0YXRlP3V1Oml1LGU9dChyLGwpLGJvKXtvPTA7ZG97aWYoYm89ITEsd289MCwyNTw9byl0aHJvdyBFcnJvcihhKDMwMSkpO28rPTEsZ289dm89bnVsbCxuLnVwZGF0ZVF1ZXVlPW51bGwsZm8uY3VycmVudD1zdSxlPXQocixsKX13aGlsZShibyl9aWYoZm8uY3VycmVudD1vdSxuPW51bGwhPT12byYmbnVsbCE9PXZvLm5leHQsbW89MCxnbz12bz1obz1udWxsLHlvPSExLG4pdGhyb3cgRXJyb3IoYSgzMDApKTtyZXR1cm4gZX1mdW5jdGlvbiBDbygpe3ZhciBlPTAhPT13bztyZXR1cm4gd289MCxlfWZ1bmN0aW9uIF9vKCl7dmFyIGU9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07cmV0dXJuIG51bGw9PT1nbz9oby5tZW1vaXplZFN0YXRlPWdvPWU6Z289Z28ubmV4dD1lLGdvfWZ1bmN0aW9uIE5vKCl7aWYobnVsbD09PXZvKXt2YXIgZT1oby5hbHRlcm5hdGU7ZT1udWxsIT09ZT9lLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGU9dm8ubmV4dDt2YXIgbj1udWxsPT09Z28/aG8ubWVtb2l6ZWRTdGF0ZTpnby5uZXh0O2lmKG51bGwhPT1uKWdvPW4sdm89ZTtlbHNle2lmKG51bGw9PT1lKXRocm93IEVycm9yKGEoMzEwKSk7ZT17bWVtb2l6ZWRTdGF0ZToodm89ZSkubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6dm8uYmFzZVN0YXRlLGJhc2VRdWV1ZTp2by5iYXNlUXVldWUscXVldWU6dm8ucXVldWUsbmV4dDpudWxsfSxudWxsPT09Z28/aG8ubWVtb2l6ZWRTdGF0ZT1nbz1lOmdvPWdvLm5leHQ9ZX1yZXR1cm4gZ299ZnVuY3Rpb24gUG8oZSxuKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIG4/bihlKTpufWZ1bmN0aW9uIHpvKGUpe3ZhciBuPU5vKCksdD1uLnF1ZXVlO2lmKG51bGw9PT10KXRocm93IEVycm9yKGEoMzExKSk7dC5sYXN0UmVuZGVyZWRSZWR1Y2VyPWU7dmFyIHI9dm8sbD1yLmJhc2VRdWV1ZSxvPXQucGVuZGluZztpZihudWxsIT09byl7aWYobnVsbCE9PWwpe3ZhciB1PWwubmV4dDtsLm5leHQ9by5uZXh0LG8ubmV4dD11fXIuYmFzZVF1ZXVlPWw9byx0LnBlbmRpbmc9bnVsbH1pZihudWxsIT09bCl7bz1sLm5leHQscj1yLmJhc2VTdGF0ZTt2YXIgaT11PW51bGwscz1udWxsLGM9bztkb3t2YXIgZj1jLmxhbmU7aWYoKG1vJmYpPT09ZiludWxsIT09cyYmKHM9cy5uZXh0PXtsYW5lOjAsYWN0aW9uOmMuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6Yy5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6Yy5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLHI9Yy5oYXNFYWdlclN0YXRlP2MuZWFnZXJTdGF0ZTplKHIsYy5hY3Rpb24pO2Vsc2V7dmFyIGQ9e2xhbmU6ZixhY3Rpb246Yy5hY3Rpb24saGFzRWFnZXJTdGF0ZTpjLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpjLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09cz8oaT1zPWQsdT1yKTpzPXMubmV4dD1kLGhvLmxhbmVzfD1mLEZpfD1mfWM9Yy5uZXh0fXdoaWxlKG51bGwhPT1jJiZjIT09byk7bnVsbD09PXM/dT1yOnMubmV4dD1pLHVyKHIsbi5tZW1vaXplZFN0YXRlKXx8KHd1PSEwKSxuLm1lbW9pemVkU3RhdGU9cixuLmJhc2VTdGF0ZT11LG4uYmFzZVF1ZXVlPXMsdC5sYXN0UmVuZGVyZWRTdGF0ZT1yfWlmKG51bGwhPT0oZT10LmludGVybGVhdmVkKSl7bD1lO2Rve289bC5sYW5lLGhvLmxhbmVzfD1vLEZpfD1vLGw9bC5uZXh0fXdoaWxlKGwhPT1lKX1lbHNlIG51bGw9PT1sJiYodC5sYW5lcz0wKTtyZXR1cm5bbi5tZW1vaXplZFN0YXRlLHQuZGlzcGF0Y2hdfWZ1bmN0aW9uIFRvKGUpe3ZhciBuPU5vKCksdD1uLnF1ZXVlO2lmKG51bGw9PT10KXRocm93IEVycm9yKGEoMzExKSk7dC5sYXN0UmVuZGVyZWRSZWR1Y2VyPWU7dmFyIHI9dC5kaXNwYXRjaCxsPXQucGVuZGluZyxvPW4ubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09bCl7dC5wZW5kaW5nPW51bGw7dmFyIHU9bD1sLm5leHQ7ZG97bz1lKG8sdS5hY3Rpb24pLHU9dS5uZXh0fXdoaWxlKHUhPT1sKTt1cihvLG4ubWVtb2l6ZWRTdGF0ZSl8fCh3dT0hMCksbi5tZW1vaXplZFN0YXRlPW8sbnVsbD09PW4uYmFzZVF1ZXVlJiYobi5iYXNlU3RhdGU9byksdC5sYXN0UmVuZGVyZWRTdGF0ZT1vfXJldHVybltvLHJdfWZ1bmN0aW9uIExvKCl7fWZ1bmN0aW9uIE9vKGUsbil7dmFyIHQ9aG8scj1ObygpLGw9bigpLG89IXVyKHIubWVtb2l6ZWRTdGF0ZSxsKTtpZihvJiYoci5tZW1vaXplZFN0YXRlPWwsd3U9ITApLHI9ci5xdWV1ZSxIbyhqby5iaW5kKG51bGwsdCxyLGUpLFtlXSksci5nZXRTbmFwc2hvdCE9PW58fG98fG51bGwhPT1nbyYmMSZnby5tZW1vaXplZFN0YXRlLnRhZyl7aWYodC5mbGFnc3w9MjA0OCxVbyg5LFJvLmJpbmQobnVsbCx0LHIsbCxuKSx2b2lkIDAsbnVsbCksbnVsbD09PXppKXRocm93IEVycm9yKGEoMzQ5KSk7MCE9PSgzMCZtbyl8fE1vKHQsbixsKX1yZXR1cm4gbH1mdW5jdGlvbiBNbyhlLG4sdCl7ZS5mbGFnc3w9MTYzODQsZT17Z2V0U25hcHNob3Q6bix2YWx1ZTp0fSxudWxsPT09KG49aG8udXBkYXRlUXVldWUpPyhuPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LGhvLnVwZGF0ZVF1ZXVlPW4sbi5zdG9yZXM9W2VdKTpudWxsPT09KHQ9bi5zdG9yZXMpP24uc3RvcmVzPVtlXTp0LnB1c2goZSl9ZnVuY3Rpb24gUm8oZSxuLHQscil7bi52YWx1ZT10LG4uZ2V0U25hcHNob3Q9cixGbyhuKSYmRG8oZSl9ZnVuY3Rpb24gam8oZSxuLHQpe3JldHVybiB0KChmdW5jdGlvbigpe0ZvKG4pJiZEbyhlKX0pKX1mdW5jdGlvbiBGbyhlKXt2YXIgbj1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7dmFyIHQ9bigpO3JldHVybiF1cihlLHQpfWNhdGNoKHIpe3JldHVybiEwfX1mdW5jdGlvbiBEbyhlKXt2YXIgbj16YShlLDEpO251bGwhPT1uJiZ0cyhuLGUsMSwtMSl9ZnVuY3Rpb24gSW8oZSl7dmFyIG49X28oKTtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPWUoKSksbi5tZW1vaXplZFN0YXRlPW4uYmFzZVN0YXRlPWUsZT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6UG8sbGFzdFJlbmRlcmVkU3RhdGU6ZX0sbi5xdWV1ZT1lLGU9ZS5kaXNwYXRjaD10dS5iaW5kKG51bGwsaG8sZSksW24ubWVtb2l6ZWRTdGF0ZSxlXX1mdW5jdGlvbiBVbyhlLG4sdCxyKXtyZXR1cm4gZT17dGFnOmUsY3JlYXRlOm4sZGVzdHJveTp0LGRlcHM6cixuZXh0Om51bGx9LG51bGw9PT0obj1oby51cGRhdGVRdWV1ZSk/KG49e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0saG8udXBkYXRlUXVldWU9bixuLmxhc3RFZmZlY3Q9ZS5uZXh0PWUpOm51bGw9PT0odD1uLmxhc3RFZmZlY3QpP24ubGFzdEVmZmVjdD1lLm5leHQ9ZToocj10Lm5leHQsdC5uZXh0PWUsZS5uZXh0PXIsbi5sYXN0RWZmZWN0PWUpLGV9ZnVuY3Rpb24gQW8oKXtyZXR1cm4gTm8oKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIEJvKGUsbix0LHIpe3ZhciBsPV9vKCk7aG8uZmxhZ3N8PWUsbC5tZW1vaXplZFN0YXRlPVVvKDF8bix0LHZvaWQgMCx2b2lkIDA9PT1yP251bGw6cil9ZnVuY3Rpb24gVm8oZSxuLHQscil7dmFyIGw9Tm8oKTtyPXZvaWQgMD09PXI/bnVsbDpyO3ZhciBhPXZvaWQgMDtpZihudWxsIT09dm8pe3ZhciBvPXZvLm1lbW9pemVkU3RhdGU7aWYoYT1vLmRlc3Ryb3ksbnVsbCE9PXImJnhvKHIsby5kZXBzKSlyZXR1cm4gdm9pZChsLm1lbW9pemVkU3RhdGU9VW8obix0LGEscikpfWhvLmZsYWdzfD1lLGwubWVtb2l6ZWRTdGF0ZT1VbygxfG4sdCxhLHIpfWZ1bmN0aW9uICRvKGUsbil7cmV0dXJuIEJvKDgzOTA2NTYsOCxlLG4pfWZ1bmN0aW9uIEhvKGUsbil7cmV0dXJuIFZvKDIwNDgsOCxlLG4pfWZ1bmN0aW9uIFdvKGUsbil7cmV0dXJuIFZvKDQsMixlLG4pfWZ1bmN0aW9uIFFvKGUsbil7cmV0dXJuIFZvKDQsNCxlLG4pfWZ1bmN0aW9uIHFvKGUsbil7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBuPyhlPWUoKSxuKGUpLGZ1bmN0aW9uKCl7bihudWxsKX0pOm51bGwhPT1uJiZ2b2lkIDAhPT1uPyhlPWUoKSxuLmN1cnJlbnQ9ZSxmdW5jdGlvbigpe24uY3VycmVudD1udWxsfSk6dm9pZCAwfWZ1bmN0aW9uIEtvKGUsbix0KXtyZXR1cm4gdD1udWxsIT09dCYmdm9pZCAwIT09dD90LmNvbmNhdChbZV0pOm51bGwsVm8oNCw0LHFvLmJpbmQobnVsbCxuLGUpLHQpfWZ1bmN0aW9uIFlvKCl7fWZ1bmN0aW9uIFhvKGUsbil7dmFyIHQ9Tm8oKTtuPXZvaWQgMD09PW4/bnVsbDpuO3ZhciByPXQubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbCE9PXImJm51bGwhPT1uJiZ4byhuLHJbMV0pP3JbMF06KHQubWVtb2l6ZWRTdGF0ZT1bZSxuXSxlKX1mdW5jdGlvbiBHbyhlLG4pe3ZhciB0PU5vKCk7bj12b2lkIDA9PT1uP251bGw6bjt2YXIgcj10Lm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGwhPT1yJiZudWxsIT09biYmeG8obixyWzFdKT9yWzBdOihlPWUoKSx0Lm1lbW9pemVkU3RhdGU9W2Usbl0sZSl9ZnVuY3Rpb24gSm8oZSxuLHQpe3JldHVybiAwPT09KDIxJm1vKT8oZS5iYXNlU3RhdGUmJihlLmJhc2VTdGF0ZT0hMSx3dT0hMCksZS5tZW1vaXplZFN0YXRlPXQpOih1cih0LG4pfHwodD12bigpLGhvLmxhbmVzfD10LEZpfD10LGUuYmFzZVN0YXRlPSEwKSxuKX1mdW5jdGlvbiBabyhlLG4pe3ZhciB0PXduO3duPTAhPT10JiY0PnQ/dDo0LGUoITApO3ZhciByPXBvLnRyYW5zaXRpb247cG8udHJhbnNpdGlvbj17fTt0cnl7ZSghMSksbigpfWZpbmFsbHl7d249dCxwby50cmFuc2l0aW9uPXJ9fWZ1bmN0aW9uIGV1KCl7cmV0dXJuIE5vKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBudShlLG4sdCl7dmFyIHI9bnMoZSk7aWYodD17bGFuZTpyLGFjdGlvbjp0LGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0scnUoZSkpbHUobix0KTtlbHNlIGlmKG51bGwhPT0odD1QYShlLG4sdCxyKSkpe3RzKHQsZSxyLGVzKCkpLGF1KHQsbixyKX19ZnVuY3Rpb24gdHUoZSxuLHQpe3ZhciByPW5zKGUpLGw9e2xhbmU6cixhY3Rpb246dCxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKHJ1KGUpKWx1KG4sbCk7ZWxzZXt2YXIgYT1lLmFsdGVybmF0ZTtpZigwPT09ZS5sYW5lcyYmKG51bGw9PT1hfHwwPT09YS5sYW5lcykmJm51bGwhPT0oYT1uLmxhc3RSZW5kZXJlZFJlZHVjZXIpKXRyeXt2YXIgbz1uLmxhc3RSZW5kZXJlZFN0YXRlLHU9YShvLHQpO2lmKGwuaGFzRWFnZXJTdGF0ZT0hMCxsLmVhZ2VyU3RhdGU9dSx1cih1LG8pKXt2YXIgaT1uLmludGVybGVhdmVkO3JldHVybiBudWxsPT09aT8obC5uZXh0PWwsTmEobikpOihsLm5leHQ9aS5uZXh0LGkubmV4dD1sKSx2b2lkKG4uaW50ZXJsZWF2ZWQ9bCl9fWNhdGNoKHMpe31udWxsIT09KHQ9UGEoZSxuLGwscikpJiYodHModCxlLHIsbD1lcygpKSxhdSh0LG4scikpfX1mdW5jdGlvbiBydShlKXt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gZT09PWhvfHxudWxsIT09biYmbj09PWhvfWZ1bmN0aW9uIGx1KGUsbil7Ym89eW89ITA7dmFyIHQ9ZS5wZW5kaW5nO251bGw9PT10P24ubmV4dD1uOihuLm5leHQ9dC5uZXh0LHQubmV4dD1uKSxlLnBlbmRpbmc9bn1mdW5jdGlvbiBhdShlLG4sdCl7aWYoMCE9PSg0MTk0MjQwJnQpKXt2YXIgcj1uLmxhbmVzO3R8PXImPWUucGVuZGluZ0xhbmVzLG4ubGFuZXM9dCxibihlLHQpfX12YXIgb3U9e3JlYWRDb250ZXh0OkNhLHVzZUNhbGxiYWNrOlNvLHVzZUNvbnRleHQ6U28sdXNlRWZmZWN0OlNvLHVzZUltcGVyYXRpdmVIYW5kbGU6U28sdXNlSW5zZXJ0aW9uRWZmZWN0OlNvLHVzZUxheW91dEVmZmVjdDpTbyx1c2VNZW1vOlNvLHVzZVJlZHVjZXI6U28sdXNlUmVmOlNvLHVzZVN0YXRlOlNvLHVzZURlYnVnVmFsdWU6U28sdXNlRGVmZXJyZWRWYWx1ZTpTbyx1c2VUcmFuc2l0aW9uOlNvLHVzZU11dGFibGVTb3VyY2U6U28sdXNlU3luY0V4dGVybmFsU3RvcmU6U28sdXNlSWQ6U28sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSx1dT17cmVhZENvbnRleHQ6Q2EsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gX28oKS5tZW1vaXplZFN0YXRlPVtlLHZvaWQgMD09PW4/bnVsbDpuXSxlfSx1c2VDb250ZXh0OkNhLHVzZUVmZmVjdDokbyx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gdD1udWxsIT09dCYmdm9pZCAwIT09dD90LmNvbmNhdChbZV0pOm51bGwsQm8oNDE5NDMwOCw0LHFvLmJpbmQobnVsbCxuLGUpLHQpfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gQm8oNDE5NDMwOCw0LGUsbil9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihlLG4pe3JldHVybiBCbyg0LDIsZSxuKX0sdXNlTWVtbzpmdW5jdGlvbihlLG4pe3ZhciB0PV9vKCk7cmV0dXJuIG49dm9pZCAwPT09bj9udWxsOm4sZT1lKCksdC5tZW1vaXplZFN0YXRlPVtlLG5dLGV9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPV9vKCk7cmV0dXJuIG49dm9pZCAwIT09dD90KG4pOm4sci5tZW1vaXplZFN0YXRlPXIuYmFzZVN0YXRlPW4sZT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6ZSxsYXN0UmVuZGVyZWRTdGF0ZTpufSxyLnF1ZXVlPWUsZT1lLmRpc3BhdGNoPW51LmJpbmQobnVsbCxobyxlKSxbci5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9e2N1cnJlbnQ6ZX0sX28oKS5tZW1vaXplZFN0YXRlPWV9LHVzZVN0YXRlOklvLHVzZURlYnVnVmFsdWU6WW8sdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gX28oKS5tZW1vaXplZFN0YXRlPWV9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1JbyghMSksbj1lWzBdO3JldHVybiBlPVpvLmJpbmQobnVsbCxlWzFdKSxfbygpLm1lbW9pemVkU3RhdGU9ZSxbbixlXX0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbigpe30sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPWhvLGw9X28oKTtpZihsYSl7aWYodm9pZCAwPT09dCl0aHJvdyBFcnJvcihhKDQwNykpO3Q9dCgpfWVsc2V7aWYodD1uKCksbnVsbD09PXppKXRocm93IEVycm9yKGEoMzQ5KSk7MCE9PSgzMCZtbyl8fE1vKHIsbix0KX1sLm1lbW9pemVkU3RhdGU9dDt2YXIgbz17dmFsdWU6dCxnZXRTbmFwc2hvdDpufTtyZXR1cm4gbC5xdWV1ZT1vLCRvKGpvLmJpbmQobnVsbCxyLG8sZSksW2VdKSxyLmZsYWdzfD0yMDQ4LFVvKDksUm8uYmluZChudWxsLHIsbyx0LG4pLHZvaWQgMCxudWxsKSx0fSx1c2VJZDpmdW5jdGlvbigpe3ZhciBlPV9vKCksbj16aS5pZGVudGlmaWVyUHJlZml4O2lmKGxhKXt2YXIgdD1HbDtuPSI6IituKyJSIisodD0oWGwmfigxPDwzMi1vbihYbCktMSkpLnRvU3RyaW5nKDMyKSt0KSwwPCh0PXdvKyspJiYobis9IkgiK3QudG9TdHJpbmcoMzIpKSxuKz0iOiJ9ZWxzZSBuPSI6IituKyJyIisodD1rbysrKS50b1N0cmluZygzMikrIjoiO3JldHVybiBlLm1lbW9pemVkU3RhdGU9bn0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxpdT17cmVhZENvbnRleHQ6Q2EsdXNlQ2FsbGJhY2s6WG8sdXNlQ29udGV4dDpDYSx1c2VFZmZlY3Q6SG8sdXNlSW1wZXJhdGl2ZUhhbmRsZTpLbyx1c2VJbnNlcnRpb25FZmZlY3Q6V28sdXNlTGF5b3V0RWZmZWN0OlFvLHVzZU1lbW86R28sdXNlUmVkdWNlcjp6byx1c2VSZWY6QW8sdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gem8oUG8pfSx1c2VEZWJ1Z1ZhbHVlOllvLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEpvKE5vKCksdm8ubWVtb2l6ZWRTdGF0ZSxlKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3JldHVyblt6byhQbylbMF0sTm8oKS5tZW1vaXplZFN0YXRlXX0sdXNlTXV0YWJsZVNvdXJjZTpMbyx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpPbyx1c2VJZDpldSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LHN1PXtyZWFkQ29udGV4dDpDYSx1c2VDYWxsYmFjazpYbyx1c2VDb250ZXh0OkNhLHVzZUVmZmVjdDpIbyx1c2VJbXBlcmF0aXZlSGFuZGxlOktvLHVzZUluc2VydGlvbkVmZmVjdDpXbyx1c2VMYXlvdXRFZmZlY3Q6UW8sdXNlTWVtbzpHbyx1c2VSZWR1Y2VyOlRvLHVzZVJlZjpBbyx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBUbyhQbyl9LHVzZURlYnVnVmFsdWU6WW8sdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgbj1ObygpO3JldHVybiBudWxsPT09dm8/bi5tZW1vaXplZFN0YXRlPWU6Sm8obix2by5tZW1vaXplZFN0YXRlLGUpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuW1RvKFBvKVswXSxObygpLm1lbW9pemVkU3RhdGVdfSx1c2VNdXRhYmxlU291cmNlOkxvLHVzZVN5bmNFeHRlcm5hbFN0b3JlOk9vLHVzZUlkOmV1LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX07ZnVuY3Rpb24gY3UoZSxuKXt0cnl7dmFyIHQ9IiIscj1uO2Rve3QrPUIocikscj1yLnJldHVybn13aGlsZShyKTt2YXIgbD10fWNhdGNoKGEpe2w9IlxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogIithLm1lc3NhZ2UrIlxuIithLnN0YWNrfXJldHVybnt2YWx1ZTplLHNvdXJjZTpuLHN0YWNrOmwsZGlnZXN0Om51bGx9fWZ1bmN0aW9uIGZ1KGUsbix0KXtyZXR1cm57dmFsdWU6ZSxzb3VyY2U6bnVsbCxzdGFjazpudWxsIT10P3Q6bnVsbCxkaWdlc3Q6bnVsbCE9bj9uOm51bGx9fWZ1bmN0aW9uIGR1KGUsbil7dHJ5e2NvbnNvbGUuZXJyb3Iobi52YWx1ZSl9Y2F0Y2godCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0aHJvdyB0fSkpfX12YXIgcHU9ImZ1bmN0aW9uIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIG11KGUsbix0KXsodD1NYSgtMSx0KSkudGFnPTMsdC5wYXlsb2FkPXtlbGVtZW50Om51bGx9O3ZhciByPW4udmFsdWU7cmV0dXJuIHQuY2FsbGJhY2s9ZnVuY3Rpb24oKXtIaXx8KEhpPSEwLFdpPXIpLGR1KDAsbil9LHR9ZnVuY3Rpb24gaHUoZSxuLHQpeyh0PU1hKC0xLHQpKS50YWc9Mzt2YXIgcj1lLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygcil7dmFyIGw9bi52YWx1ZTt0LnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcihsKX0sdC5jYWxsYmFjaz1mdW5jdGlvbigpe2R1KDAsbil9fXZhciBhPWUuc3RhdGVOb2RlO3JldHVybiBudWxsIT09YSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLmNvbXBvbmVudERpZENhdGNoJiYodC5jYWxsYmFjaz1mdW5jdGlvbigpe2R1KDAsbiksImZ1bmN0aW9uIiE9PXR5cGVvZiByJiYobnVsbD09PVFpP1FpPW5ldyBTZXQoW3RoaXNdKTpRaS5hZGQodGhpcykpO3ZhciBlPW4uc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChuLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09ZT9lOiIifSl9KSx0fWZ1bmN0aW9uIHZ1KGUsbix0KXt2YXIgcj1lLnBpbmdDYWNoZTtpZihudWxsPT09cil7cj1lLnBpbmdDYWNoZT1uZXcgcHU7dmFyIGw9bmV3IFNldDtyLnNldChuLGwpfWVsc2Ugdm9pZCAwPT09KGw9ci5nZXQobikpJiYobD1uZXcgU2V0LHIuc2V0KG4sbCkpO2wuaGFzKHQpfHwobC5hZGQodCksZT1Dcy5iaW5kKG51bGwsZSxuLHQpLG4udGhlbihlLGUpKX1mdW5jdGlvbiBndShlKXtkb3t2YXIgbjtpZigobj0xMz09PWUudGFnKSYmKG49bnVsbD09PShuPWUubWVtb2l6ZWRTdGF0ZSl8fG51bGwhPT1uLmRlaHlkcmF0ZWQpLG4pcmV0dXJuIGU7ZT1lLnJldHVybn13aGlsZShudWxsIT09ZSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24geXUoZSxuLHQscixsKXtyZXR1cm4gMD09PSgxJmUubW9kZSk/KGU9PT1uP2UuZmxhZ3N8PTY1NTM2OihlLmZsYWdzfD0xMjgsdC5mbGFnc3w9MTMxMDcyLHQuZmxhZ3MmPS01MjgwNSwxPT09dC50YWcmJihudWxsPT09dC5hbHRlcm5hdGU/dC50YWc9MTc6KChuPU1hKC0xLDEpKS50YWc9MixSYSh0LG4sMSkpKSx0LmxhbmVzfD0xKSxlKTooZS5mbGFnc3w9NjU1MzYsZS5sYW5lcz1sLGUpfXZhciBidT13LlJlYWN0Q3VycmVudE93bmVyLHd1PSExO2Z1bmN0aW9uIGt1KGUsbix0LHIpe24uY2hpbGQ9bnVsbD09PWU/R2EobixudWxsLHQscik6WGEobixlLmNoaWxkLHQscil9ZnVuY3Rpb24gU3UoZSxuLHQscixsKXt0PXQucmVuZGVyO3ZhciBhPW4ucmVmO3JldHVybiBFYShuLGwpLHI9RW8oZSxuLHQscixhLGwpLHQ9Q28oKSxudWxsPT09ZXx8d3U/KGxhJiZ0JiZlYShuKSxuLmZsYWdzfD0xLGt1KGUsbixyLGwpLG4uY2hpbGQpOihuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsbi5mbGFncyY9LTIwNTMsZS5sYW5lcyY9fmwsSHUoZSxuLGwpKX1mdW5jdGlvbiB4dShlLG4sdCxyLGwpe2lmKG51bGw9PT1lKXt2YXIgYT10LnR5cGU7cmV0dXJuImZ1bmN0aW9uIiE9PXR5cGVvZiBhfHxPcyhhKXx8dm9pZCAwIT09YS5kZWZhdWx0UHJvcHN8fG51bGwhPT10LmNvbXBhcmV8fHZvaWQgMCE9PXQuZGVmYXVsdFByb3BzPygoZT1Scyh0LnR5cGUsbnVsbCxyLG4sbi5tb2RlLGwpKS5yZWY9bi5yZWYsZS5yZXR1cm49bixuLmNoaWxkPWUpOihuLnRhZz0xNSxuLnR5cGU9YSxFdShlLG4sYSxyLGwpKX1pZihhPWUuY2hpbGQsMD09PShlLmxhbmVzJmwpKXt2YXIgbz1hLm1lbW9pemVkUHJvcHM7aWYoKHQ9bnVsbCE9PSh0PXQuY29tcGFyZSk/dDppcikobyxyKSYmZS5yZWY9PT1uLnJlZilyZXR1cm4gSHUoZSxuLGwpfXJldHVybiBuLmZsYWdzfD0xLChlPU1zKGEscikpLnJlZj1uLnJlZixlLnJldHVybj1uLG4uY2hpbGQ9ZX1mdW5jdGlvbiBFdShlLG4sdCxyLGwpe2lmKG51bGwhPT1lKXt2YXIgYT1lLm1lbW9pemVkUHJvcHM7aWYoaXIoYSxyKSYmZS5yZWY9PT1uLnJlZil7aWYod3U9ITEsbi5wZW5kaW5nUHJvcHM9cj1hLDA9PT0oZS5sYW5lcyZsKSlyZXR1cm4gbi5sYW5lcz1lLmxhbmVzLEh1KGUsbixsKTswIT09KDEzMTA3MiZlLmZsYWdzKSYmKHd1PSEwKX19cmV0dXJuIE51KGUsbix0LHIsbCl9ZnVuY3Rpb24gQ3UoZSxuLHQpe3ZhciByPW4ucGVuZGluZ1Byb3BzLGw9ci5jaGlsZHJlbixhPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKCJoaWRkZW4iPT09ci5tb2RlKWlmKDA9PT0oMSZuLm1vZGUpKW4ubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sX2woTWksT2kpLE9pfD10O2Vsc2V7aWYoMD09PSgxMDczNzQxODI0JnQpKXJldHVybiBlPW51bGwhPT1hP2EuYmFzZUxhbmVzfHQ6dCxuLmxhbmVzPW4uY2hpbGRMYW5lcz0xMDczNzQxODI0LG4ubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOmUsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sbi51cGRhdGVRdWV1ZT1udWxsLF9sKE1pLE9pKSxPaXw9ZSxudWxsO24ubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0scj1udWxsIT09YT9hLmJhc2VMYW5lczp0LF9sKE1pLE9pKSxPaXw9cn1lbHNlIG51bGwhPT1hPyhyPWEuYmFzZUxhbmVzfHQsbi5tZW1vaXplZFN0YXRlPW51bGwpOnI9dCxfbChNaSxPaSksT2l8PXI7cmV0dXJuIGt1KGUsbixsLHQpLG4uY2hpbGR9ZnVuY3Rpb24gX3UoZSxuKXt2YXIgdD1uLnJlZjsobnVsbD09PWUmJm51bGwhPT10fHxudWxsIT09ZSYmZS5yZWYhPT10KSYmKG4uZmxhZ3N8PTUxMixuLmZsYWdzfD0yMDk3MTUyKX1mdW5jdGlvbiBOdShlLG4sdCxyLGwpe3ZhciBhPU9sKHQpP1RsOlBsLmN1cnJlbnQ7cmV0dXJuIGE9TGwobixhKSxFYShuLGwpLHQ9RW8oZSxuLHQscixhLGwpLHI9Q28oKSxudWxsPT09ZXx8d3U/KGxhJiZyJiZlYShuKSxuLmZsYWdzfD0xLGt1KGUsbix0LGwpLG4uY2hpbGQpOihuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsbi5mbGFncyY9LTIwNTMsZS5sYW5lcyY9fmwsSHUoZSxuLGwpKX1mdW5jdGlvbiBQdShlLG4sdCxyLGwpe2lmKE9sKHQpKXt2YXIgYT0hMDtGbChuKX1lbHNlIGE9ITE7aWYoRWEobixsKSxudWxsPT09bi5zdGF0ZU5vZGUpJHUoZSxuKSwkYShuLHQsciksV2Eobix0LHIsbCkscj0hMDtlbHNlIGlmKG51bGw9PT1lKXt2YXIgbz1uLnN0YXRlTm9kZSx1PW4ubWVtb2l6ZWRQcm9wcztvLnByb3BzPXU7dmFyIGk9by5jb250ZXh0LHM9dC5jb250ZXh0VHlwZTsib2JqZWN0Ij09PXR5cGVvZiBzJiZudWxsIT09cz9zPUNhKHMpOnM9TGwobixzPU9sKHQpP1RsOlBsLmN1cnJlbnQpO3ZhciBjPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLGY9ImZ1bmN0aW9uIj09PXR5cGVvZiBjfHwiZnVuY3Rpb24iPT09dHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU7Znx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYiZnVuY3Rpb24iIT09dHlwZW9mIG8uY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KHUhPT1yfHxpIT09cykmJkhhKG4sbyxyLHMpLFRhPSExO3ZhciBkPW4ubWVtb2l6ZWRTdGF0ZTtvLnN0YXRlPWQsRGEobixyLG8sbCksaT1uLm1lbW9pemVkU3RhdGUsdSE9PXJ8fGQhPT1pfHx6bC5jdXJyZW50fHxUYT8oImZ1bmN0aW9uIj09PXR5cGVvZiBjJiYoQWEobix0LGMsciksaT1uLm1lbW9pemVkU3RhdGUpLCh1PVRhfHxWYShuLHQsdSxyLGQsaSxzKSk/KGZ8fCJmdW5jdGlvbiIhPT10eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT09dHlwZW9mIG8uY29tcG9uZW50V2lsbE1vdW50fHwoImZ1bmN0aW9uIj09PXR5cGVvZiBvLmNvbXBvbmVudFdpbGxNb3VudCYmby5jb21wb25lbnRXaWxsTW91bnQoKSwiZnVuY3Rpb24iPT09dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLCJmdW5jdGlvbiI9PT10eXBlb2Ygby5jb21wb25lbnREaWRNb3VudCYmKG4uZmxhZ3N8PTQxOTQzMDgpKTooImZ1bmN0aW9uIj09PXR5cGVvZiBvLmNvbXBvbmVudERpZE1vdW50JiYobi5mbGFnc3w9NDE5NDMwOCksbi5tZW1vaXplZFByb3BzPXIsbi5tZW1vaXplZFN0YXRlPWkpLG8ucHJvcHM9cixvLnN0YXRlPWksby5jb250ZXh0PXMscj11KTooImZ1bmN0aW9uIj09PXR5cGVvZiBvLmNvbXBvbmVudERpZE1vdW50JiYobi5mbGFnc3w9NDE5NDMwOCkscj0hMSl9ZWxzZXtvPW4uc3RhdGVOb2RlLE9hKGUsbiksdT1uLm1lbW9pemVkUHJvcHMscz1uLnR5cGU9PT1uLmVsZW1lbnRUeXBlP3U6dmEobi50eXBlLHUpLG8ucHJvcHM9cyxmPW4ucGVuZGluZ1Byb3BzLGQ9by5jb250ZXh0LCJvYmplY3QiPT09dHlwZW9mKGk9dC5jb250ZXh0VHlwZSkmJm51bGwhPT1pP2k9Q2EoaSk6aT1MbChuLGk9T2wodCk/VGw6UGwuY3VycmVudCk7dmFyIHA9dC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KGM9ImZ1bmN0aW9uIj09PXR5cGVvZiBwfHwiZnVuY3Rpb24iPT09dHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHwiZnVuY3Rpb24iIT09dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJiJmdW5jdGlvbiIhPT10eXBlb2Ygby5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwodSE9PWZ8fGQhPT1pKSYmSGEobixvLHIsaSksVGE9ITEsZD1uLm1lbW9pemVkU3RhdGUsby5zdGF0ZT1kLERhKG4scixvLGwpO3ZhciBtPW4ubWVtb2l6ZWRTdGF0ZTt1IT09Znx8ZCE9PW18fHpsLmN1cnJlbnR8fFRhPygiZnVuY3Rpb24iPT09dHlwZW9mIHAmJihBYShuLHQscCxyKSxtPW4ubWVtb2l6ZWRTdGF0ZSksKHM9VGF8fFZhKG4sdCxzLHIsZCxtLGkpfHwhMSk/KGN8fCJmdW5jdGlvbiIhPT10eXBlb2Ygby5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmImZ1bmN0aW9uIiE9PXR5cGVvZiBvLmNvbXBvbmVudFdpbGxVcGRhdGV8fCgiZnVuY3Rpb24iPT09dHlwZW9mIG8uY29tcG9uZW50V2lsbFVwZGF0ZSYmby5jb21wb25lbnRXaWxsVXBkYXRlKHIsbSxpKSwiZnVuY3Rpb24iPT09dHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJm8uVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUocixtLGkpKSwiZnVuY3Rpb24iPT09dHlwZW9mIG8uY29tcG9uZW50RGlkVXBkYXRlJiYobi5mbGFnc3w9NCksImZ1bmN0aW9uIj09PXR5cGVvZiBvLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYobi5mbGFnc3w9MTAyNCkpOigiZnVuY3Rpb24iIT09dHlwZW9mIG8uY29tcG9uZW50RGlkVXBkYXRlfHx1PT09ZS5tZW1vaXplZFByb3BzJiZkPT09ZS5tZW1vaXplZFN0YXRlfHwobi5mbGFnc3w9NCksImZ1bmN0aW9uIiE9PXR5cGVvZiBvLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHx1PT09ZS5tZW1vaXplZFByb3BzJiZkPT09ZS5tZW1vaXplZFN0YXRlfHwobi5mbGFnc3w9MTAyNCksbi5tZW1vaXplZFByb3BzPXIsbi5tZW1vaXplZFN0YXRlPW0pLG8ucHJvcHM9cixvLnN0YXRlPW0sby5jb250ZXh0PWkscj1zKTooImZ1bmN0aW9uIiE9PXR5cGVvZiBvLmNvbXBvbmVudERpZFVwZGF0ZXx8dT09PWUubWVtb2l6ZWRQcm9wcyYmZD09PWUubWVtb2l6ZWRTdGF0ZXx8KG4uZmxhZ3N8PTQpLCJmdW5jdGlvbiIhPT10eXBlb2Ygby5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8dT09PWUubWVtb2l6ZWRQcm9wcyYmZD09PWUubWVtb2l6ZWRTdGF0ZXx8KG4uZmxhZ3N8PTEwMjQpLHI9ITEpfXJldHVybiB6dShlLG4sdCxyLGEsbCl9ZnVuY3Rpb24genUoZSxuLHQscixsLGEpe191KGUsbik7dmFyIG89MCE9PSgxMjgmbi5mbGFncyk7aWYoIXImJiFvKXJldHVybiBsJiZEbChuLHQsITEpLEh1KGUsbixhKTtyPW4uc3RhdGVOb2RlLGJ1LmN1cnJlbnQ9bjt2YXIgdT1vJiYiZnVuY3Rpb24iIT09dHlwZW9mIHQuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6ci5yZW5kZXIoKTtyZXR1cm4gbi5mbGFnc3w9MSxudWxsIT09ZSYmbz8obi5jaGlsZD1YYShuLGUuY2hpbGQsbnVsbCxhKSxuLmNoaWxkPVhhKG4sbnVsbCx1LGEpKTprdShlLG4sdSxhKSxuLm1lbW9pemVkU3RhdGU9ci5zdGF0ZSxsJiZEbChuLHQsITApLG4uY2hpbGR9ZnVuY3Rpb24gVHUoZSl7dmFyIG49ZS5zdGF0ZU5vZGU7bi5wZW5kaW5nQ29udGV4dD9SbCgwLG4ucGVuZGluZ0NvbnRleHQsbi5wZW5kaW5nQ29udGV4dCE9PW4uY29udGV4dCk6bi5jb250ZXh0JiZSbCgwLG4uY29udGV4dCwhMSkscm8oZSxuLmNvbnRhaW5lckluZm8pfWZ1bmN0aW9uIEx1KGUsbix0LHIsbCl7cmV0dXJuIHBhKCksbWEobCksbi5mbGFnc3w9MjU2LGt1KGUsbix0LHIpLG4uY2hpbGR9dmFyIE91LE11LFJ1LGp1PXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MH07ZnVuY3Rpb24gRnUoZSl7cmV0dXJue2Jhc2VMYW5lczplLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9fWZ1bmN0aW9uIER1KGUsbix0KXt2YXIgcixsPW4ucGVuZGluZ1Byb3BzLG89dW8uY3VycmVudCx1PSExLGk9MCE9PSgxMjgmbi5mbGFncyk7aWYoKHI9aSl8fChyPShudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSkmJjAhPT0oMiZvKSkscj8odT0hMCxuLmZsYWdzJj0tMTI5KTpudWxsIT09ZSYmbnVsbD09PWUubWVtb2l6ZWRTdGF0ZXx8KG98PTEpLF9sKHVvLDEmbyksbnVsbD09PWUpcmV0dXJuIHNhKG4pLG51bGwhPT0oZT1uLm1lbW9pemVkU3RhdGUpJiZudWxsIT09KGU9ZS5kZWh5ZHJhdGVkKT8oMD09PSgxJm4ubW9kZSk/bi5sYW5lcz0xOiIkISI9PT1lLmRhdGE/bi5sYW5lcz04Om4ubGFuZXM9MTA3Mzc0MTgyNCxudWxsKTooaT1sLmNoaWxkcmVuLGU9bC5mYWxsYmFjayx1PyhsPW4ubW9kZSx1PW4uY2hpbGQsaT17bW9kZToiaGlkZGVuIixjaGlsZHJlbjppfSwwPT09KDEmbCkmJm51bGwhPT11Pyh1LmNoaWxkTGFuZXM9MCx1LnBlbmRpbmdQcm9wcz1pKTp1PUZzKGksbCwwLG51bGwpLGU9anMoZSxsLHQsbnVsbCksdS5yZXR1cm49bixlLnJldHVybj1uLHUuc2libGluZz1lLG4uY2hpbGQ9dSxuLmNoaWxkLm1lbW9pemVkU3RhdGU9RnUodCksbi5tZW1vaXplZFN0YXRlPWp1LGUpOkl1KG4saSkpO2lmKG51bGwhPT0obz1lLm1lbW9pemVkU3RhdGUpJiZudWxsIT09KHI9by5kZWh5ZHJhdGVkKSlyZXR1cm4gZnVuY3Rpb24oZSxuLHQscixsLG8sdSl7aWYodClyZXR1cm4gMjU2Jm4uZmxhZ3M/KG4uZmxhZ3MmPS0yNTcsVXUoZSxuLHUscj1mdShFcnJvcihhKDQyMikpKSkpOm51bGwhPT1uLm1lbW9pemVkU3RhdGU/KG4uY2hpbGQ9ZS5jaGlsZCxuLmZsYWdzfD0xMjgsbnVsbCk6KG89ci5mYWxsYmFjayxsPW4ubW9kZSxyPUZzKHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjpyLmNoaWxkcmVufSxsLDAsbnVsbCksKG89anMobyxsLHUsbnVsbCkpLmZsYWdzfD0yLHIucmV0dXJuPW4sby5yZXR1cm49bixyLnNpYmxpbmc9byxuLmNoaWxkPXIsMCE9PSgxJm4ubW9kZSkmJlhhKG4sZS5jaGlsZCxudWxsLHUpLG4uY2hpbGQubWVtb2l6ZWRTdGF0ZT1GdSh1KSxuLm1lbW9pemVkU3RhdGU9anUsbyk7aWYoMD09PSgxJm4ubW9kZSkpcmV0dXJuIFV1KGUsbix1LG51bGwpO2lmKCIkISI9PT1sLmRhdGEpe2lmKHI9bC5uZXh0U2libGluZyYmbC5uZXh0U2libGluZy5kYXRhc2V0KXZhciBpPXIuZGdzdDtyZXR1cm4gcj1pLFV1KGUsbix1LHI9ZnUobz1FcnJvcihhKDQxOSkpLHIsdm9pZCAwKSl9aWYoaT0wIT09KHUmZS5jaGlsZExhbmVzKSx3dXx8aSl7aWYobnVsbCE9PShyPXppKSl7c3dpdGNoKHUmLXUpe2Nhc2UgNDpsPTI7YnJlYWs7Y2FzZSAxNjpsPTg7YnJlYWs7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0Omw9MzI7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6bD0yNjg0MzU0NTY7YnJlYWs7ZGVmYXVsdDpsPTB9MCE9PShsPTAhPT0obCYoci5zdXNwZW5kZWRMYW5lc3x1KSk/MDpsKSYmbCE9PW8ucmV0cnlMYW5lJiYoby5yZXRyeUxhbmU9bCx6YShlLGwpLHRzKHIsZSxsLC0xKSl9cmV0dXJuIGhzKCksVXUoZSxuLHUscj1mdShFcnJvcihhKDQyMSkpKSl9cmV0dXJuIiQ/Ij09PWwuZGF0YT8obi5mbGFnc3w9MTI4LG4uY2hpbGQ9ZS5jaGlsZCxuPU5zLmJpbmQobnVsbCxlKSxsLl9yZWFjdFJldHJ5PW4sbnVsbCk6KGU9by50cmVlQ29udGV4dCxyYT1zbChsLm5leHRTaWJsaW5nKSx0YT1uLGxhPSEwLGFhPW51bGwsbnVsbCE9PWUmJihxbFtLbCsrXT1YbCxxbFtLbCsrXT1HbCxxbFtLbCsrXT1ZbCxYbD1lLmlkLEdsPWUub3ZlcmZsb3csWWw9biksbj1JdShuLHIuY2hpbGRyZW4pLG4uZmxhZ3N8PTQwOTYsbil9KGUsbixpLGwscixvLHQpO2lmKHUpe3U9bC5mYWxsYmFjayxpPW4ubW9kZSxyPShvPWUuY2hpbGQpLnNpYmxpbmc7dmFyIHM9e21vZGU6ImhpZGRlbiIsY2hpbGRyZW46bC5jaGlsZHJlbn07cmV0dXJuIDA9PT0oMSZpKSYmbi5jaGlsZCE9PW8/KChsPW4uY2hpbGQpLmNoaWxkTGFuZXM9MCxsLnBlbmRpbmdQcm9wcz1zLG4uZGVsZXRpb25zPW51bGwpOihsPU1zKG8scykpLnN1YnRyZWVGbGFncz0xNDY4MDA2NCZvLnN1YnRyZWVGbGFncyxudWxsIT09cj91PU1zKHIsdSk6KHU9anModSxpLHQsbnVsbCkpLmZsYWdzfD0yLHUucmV0dXJuPW4sbC5yZXR1cm49bixsLnNpYmxpbmc9dSxuLmNoaWxkPWwsbD11LHU9bi5jaGlsZCxpPW51bGw9PT0oaT1lLmNoaWxkLm1lbW9pemVkU3RhdGUpP0Z1KHQpOntiYXNlTGFuZXM6aS5iYXNlTGFuZXN8dCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczppLnRyYW5zaXRpb25zfSx1Lm1lbW9pemVkU3RhdGU9aSx1LmNoaWxkTGFuZXM9ZS5jaGlsZExhbmVzJn50LG4ubWVtb2l6ZWRTdGF0ZT1qdSxsfXJldHVybiBlPSh1PWUuY2hpbGQpLnNpYmxpbmcsbD1Ncyh1LHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjpsLmNoaWxkcmVufSksMD09PSgxJm4ubW9kZSkmJihsLmxhbmVzPXQpLGwucmV0dXJuPW4sbC5zaWJsaW5nPW51bGwsbnVsbCE9PWUmJihudWxsPT09KHQ9bi5kZWxldGlvbnMpPyhuLmRlbGV0aW9ucz1bZV0sbi5mbGFnc3w9MTYpOnQucHVzaChlKSksbi5jaGlsZD1sLG4ubWVtb2l6ZWRTdGF0ZT1udWxsLGx9ZnVuY3Rpb24gSXUoZSxuKXtyZXR1cm4obj1Gcyh7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46bn0sZS5tb2RlLDAsbnVsbCkpLnJldHVybj1lLGUuY2hpbGQ9bn1mdW5jdGlvbiBVdShlLG4sdCxyKXtyZXR1cm4gbnVsbCE9PXImJm1hKHIpLFhhKG4sZS5jaGlsZCxudWxsLHQpLChlPUl1KG4sbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pKS5mbGFnc3w9MixuLm1lbW9pemVkU3RhdGU9bnVsbCxlfWZ1bmN0aW9uIEF1KGUsbix0KXtlLmxhbmVzfD1uO3ZhciByPWUuYWx0ZXJuYXRlO251bGwhPT1yJiYoci5sYW5lc3w9bikseGEoZS5yZXR1cm4sbix0KX1mdW5jdGlvbiBCdShlLG4sdCxyLGwpe3ZhciBhPWUubWVtb2l6ZWRTdGF0ZTtudWxsPT09YT9lLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOm4scmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpyLHRhaWw6dCx0YWlsTW9kZTpsfTooYS5pc0JhY2t3YXJkcz1uLGEucmVuZGVyaW5nPW51bGwsYS5yZW5kZXJpbmdTdGFydFRpbWU9MCxhLmxhc3Q9cixhLnRhaWw9dCxhLnRhaWxNb2RlPWwpfWZ1bmN0aW9uIFZ1KGUsbix0KXt2YXIgcj1uLnBlbmRpbmdQcm9wcyxsPXIucmV2ZWFsT3JkZXIsYT1yLnRhaWw7aWYoa3UoZSxuLHIuY2hpbGRyZW4sdCksMCE9PSgyJihyPXVvLmN1cnJlbnQpKSlyPTEmcnwyLG4uZmxhZ3N8PTEyODtlbHNle2lmKG51bGwhPT1lJiYwIT09KDEyOCZlLmZsYWdzKSllOmZvcihlPW4uY2hpbGQ7bnVsbCE9PWU7KXtpZigxMz09PWUudGFnKW51bGwhPT1lLm1lbW9pemVkU3RhdGUmJkF1KGUsdCxuKTtlbHNlIGlmKDE5PT09ZS50YWcpQXUoZSx0LG4pO2Vsc2UgaWYobnVsbCE9PWUuY2hpbGQpe2UuY2hpbGQucmV0dXJuPWUsZT1lLmNoaWxkO2NvbnRpbnVlfWlmKGU9PT1uKWJyZWFrIGU7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxlLnJldHVybj09PW4pYnJlYWsgZTtlPWUucmV0dXJufWUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmd9ciY9MX1pZihfbCh1byxyKSwwPT09KDEmbi5tb2RlKSluLm1lbW9pemVkU3RhdGU9bnVsbDtlbHNlIHN3aXRjaChsKXtjYXNlImZvcndhcmRzIjpmb3IodD1uLmNoaWxkLGw9bnVsbDtudWxsIT09dDspbnVsbCE9PShlPXQuYWx0ZXJuYXRlKSYmbnVsbD09PWlvKGUpJiYobD10KSx0PXQuc2libGluZztudWxsPT09KHQ9bCk/KGw9bi5jaGlsZCxuLmNoaWxkPW51bGwpOihsPXQuc2libGluZyx0LnNpYmxpbmc9bnVsbCksQnUobiwhMSxsLHQsYSk7YnJlYWs7Y2FzZSJiYWNrd2FyZHMiOmZvcih0PW51bGwsbD1uLmNoaWxkLG4uY2hpbGQ9bnVsbDtudWxsIT09bDspe2lmKG51bGwhPT0oZT1sLmFsdGVybmF0ZSkmJm51bGw9PT1pbyhlKSl7bi5jaGlsZD1sO2JyZWFrfWU9bC5zaWJsaW5nLGwuc2libGluZz10LHQ9bCxsPWV9QnUobiwhMCx0LG51bGwsYSk7YnJlYWs7Y2FzZSJ0b2dldGhlciI6QnUobiwhMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0Om4ubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBuLmNoaWxkfWZ1bmN0aW9uICR1KGUsbil7MD09PSgxJm4ubW9kZSkmJm51bGwhPT1lJiYoZS5hbHRlcm5hdGU9bnVsbCxuLmFsdGVybmF0ZT1udWxsLG4uZmxhZ3N8PTIpfWZ1bmN0aW9uIEh1KGUsbix0KXtpZihudWxsIT09ZSYmKG4uZGVwZW5kZW5jaWVzPWUuZGVwZW5kZW5jaWVzKSxGaXw9bi5sYW5lcywwPT09KHQmbi5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbDtpZihudWxsIT09ZSYmbi5jaGlsZCE9PWUuY2hpbGQpdGhyb3cgRXJyb3IoYSgxNTMpKTtpZihudWxsIT09bi5jaGlsZCl7Zm9yKHQ9TXMoZT1uLmNoaWxkLGUucGVuZGluZ1Byb3BzKSxuLmNoaWxkPXQsdC5yZXR1cm49bjtudWxsIT09ZS5zaWJsaW5nOyllPWUuc2libGluZywodD10LnNpYmxpbmc9TXMoZSxlLnBlbmRpbmdQcm9wcykpLnJldHVybj1uO3Quc2libGluZz1udWxsfXJldHVybiBuLmNoaWxkfWZ1bmN0aW9uIFd1KGUsbil7aWYoIWxhKXN3aXRjaChlLnRhaWxNb2RlKXtjYXNlImhpZGRlbiI6bj1lLnRhaWw7Zm9yKHZhciB0PW51bGw7bnVsbCE9PW47KW51bGwhPT1uLmFsdGVybmF0ZSYmKHQ9biksbj1uLnNpYmxpbmc7bnVsbD09PXQ/ZS50YWlsPW51bGw6dC5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSJjb2xsYXBzZWQiOnQ9ZS50YWlsO2Zvcih2YXIgcj1udWxsO251bGwhPT10OyludWxsIT09dC5hbHRlcm5hdGUmJihyPXQpLHQ9dC5zaWJsaW5nO251bGw9PT1yP258fG51bGw9PT1lLnRhaWw/ZS50YWlsPW51bGw6ZS50YWlsLnNpYmxpbmc9bnVsbDpyLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24gUXUoZSl7dmFyIG49bnVsbCE9PWUuYWx0ZXJuYXRlJiZlLmFsdGVybmF0ZS5jaGlsZD09PWUuY2hpbGQsdD0wLHI9MDtpZihuKWZvcih2YXIgbD1lLmNoaWxkO251bGwhPT1sOyl0fD1sLmxhbmVzfGwuY2hpbGRMYW5lcyxyfD0xNDY4MDA2NCZsLnN1YnRyZWVGbGFncyxyfD0xNDY4MDA2NCZsLmZsYWdzLGwucmV0dXJuPWUsbD1sLnNpYmxpbmc7ZWxzZSBmb3IobD1lLmNoaWxkO251bGwhPT1sOyl0fD1sLmxhbmVzfGwuY2hpbGRMYW5lcyxyfD1sLnN1YnRyZWVGbGFncyxyfD1sLmZsYWdzLGwucmV0dXJuPWUsbD1sLnNpYmxpbmc7cmV0dXJuIGUuc3VidHJlZUZsYWdzfD1yLGUuY2hpbGRMYW5lcz10LG59ZnVuY3Rpb24gcXUoZSxuLHQpe3ZhciByPW4ucGVuZGluZ1Byb3BzO3N3aXRjaChuYShuKSxuLnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIFF1KG4pLG51bGw7Y2FzZSAxOmNhc2UgMTc6cmV0dXJuIE9sKG4udHlwZSkmJk1sKCksUXUobiksbnVsbDtjYXNlIDM6cmV0dXJuIHI9bi5zdGF0ZU5vZGUsbG8oKSxDbCh6bCksQ2woUGwpLGNvKCksci5wZW5kaW5nQ29udGV4dCYmKHIuY29udGV4dD1yLnBlbmRpbmdDb250ZXh0LHIucGVuZGluZ0NvbnRleHQ9bnVsbCksbnVsbCE9PWUmJm51bGwhPT1lLmNoaWxkfHwoZmEobik/bi5mbGFnc3w9NDpudWxsPT09ZXx8ZS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmMD09PSgyNTYmbi5mbGFncyl8fChuLmZsYWdzfD0xMDI0LG51bGwhPT1hYSYmKG9zKGFhKSxhYT1udWxsKSkpLFF1KG4pLG51bGw7Y2FzZSA1Om9vKG4pO3ZhciBsPXRvKG5vLmN1cnJlbnQpO2lmKHQ9bi50eXBlLG51bGwhPT1lJiZudWxsIT1uLnN0YXRlTm9kZSlNdShlLG4sdCxyKSxlLnJlZiE9PW4ucmVmJiYobi5mbGFnc3w9NTEyLG4uZmxhZ3N8PTIwOTcxNTIpO2Vsc2V7aWYoIXIpe2lmKG51bGw9PT1uLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihhKDE2NikpO3JldHVybiBRdShuKSxudWxsfWlmKGU9dG8oWmEuY3VycmVudCksZmEobikpe3I9bi5zdGF0ZU5vZGUsdD1uLnR5cGU7dmFyIG89bi5tZW1vaXplZFByb3BzO3N3aXRjaChyW2RsXT1uLHJbcGxdPW8sZT0wIT09KDEmbi5tb2RlKSx0KXtjYXNlImRpYWxvZyI6VXIoImNhbmNlbCIsciksVXIoImNsb3NlIixyKTticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOlVyKCJsb2FkIixyKTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjpmb3IobD0wO2w8anIubGVuZ3RoO2wrKylVcihqcltsXSxyKTticmVhaztjYXNlInNvdXJjZSI6VXIoImVycm9yIixyKTticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjpVcigiZXJyb3IiLHIpLFVyKCJsb2FkIixyKTticmVhaztjYXNlImRldGFpbHMiOlVyKCJ0b2dnbGUiLHIpO2JyZWFrO2Nhc2UiaW5wdXQiOlgocixvKSxVcigiaW52YWxpZCIscik7YnJlYWs7Y2FzZSJzZWxlY3QiOnIuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFvLm11bHRpcGxlfSxVcigiaW52YWxpZCIscik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6bGUocixvKSxVcigiaW52YWxpZCIscil9Zm9yKHZhciBpIGluIHllKHQsbyksbD1udWxsLG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHM9b1tpXTsiY2hpbGRyZW4iPT09aT8ic3RyaW5nIj09PXR5cGVvZiBzP3IudGV4dENvbnRlbnQhPT1zJiYoITAhPT1vLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmSnIoci50ZXh0Q29udGVudCxzLGUpLGw9WyJjaGlsZHJlbiIsc10pOiJudW1iZXIiPT09dHlwZW9mIHMmJnIudGV4dENvbnRlbnQhPT0iIitzJiYoITAhPT1vLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmSnIoci50ZXh0Q29udGVudCxzLGUpLGw9WyJjaGlsZHJlbiIsIiIrc10pOnUuaGFzT3duUHJvcGVydHkoaSkmJm51bGwhPXMmJiJvblNjcm9sbCI9PT1pJiZVcigic2Nyb2xsIixyKX1zd2l0Y2godCl7Y2FzZSJpbnB1dCI6UShyKSxaKHIsbywhMCk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6UShyKSxvZShyKTticmVhaztjYXNlInNlbGVjdCI6Y2FzZSJvcHRpb24iOmJyZWFrO2RlZmF1bHQ6ImZ1bmN0aW9uIj09PXR5cGVvZiBvLm9uQ2xpY2smJihyLm9uY2xpY2s9WnIpfXI9bCxuLnVwZGF0ZVF1ZXVlPXIsbnVsbCE9PXImJihuLmZsYWdzfD00KX1lbHNle2k9OT09PWwubm9kZVR5cGU/bDpsLm93bmVyRG9jdW1lbnQsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09ZSYmKGU9dWUodCkpLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWU/InNjcmlwdCI9PT10PygoZT1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9IjxzY3JpcHQ+PFwvc2NyaXB0PiIsZT1lLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpOiJzdHJpbmciPT09dHlwZW9mIHIuaXM/ZT1pLmNyZWF0ZUVsZW1lbnQodCx7aXM6ci5pc30pOihlPWkuY3JlYXRlRWxlbWVudCh0KSwic2VsZWN0Ij09PXQmJihpPWUsci5tdWx0aXBsZT9pLm11bHRpcGxlPSEwOnIuc2l6ZSYmKGkuc2l6ZT1yLnNpemUpKSk6ZT1pLmNyZWF0ZUVsZW1lbnROUyhlLHQpLGVbZGxdPW4sZVtwbF09cixPdShlLG4pLG4uc3RhdGVOb2RlPWU7ZTp7c3dpdGNoKGk9YmUodCxyKSx0KXtjYXNlImRpYWxvZyI6VXIoImNhbmNlbCIsZSksVXIoImNsb3NlIixlKSxsPXI7YnJlYWs7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjpjYXNlImVtYmVkIjpVcigibG9hZCIsZSksbD1yO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmZvcihsPTA7bDxqci5sZW5ndGg7bCsrKVVyKGpyW2xdLGUpO2w9cjticmVhaztjYXNlInNvdXJjZSI6VXIoImVycm9yIixlKSxsPXI7YnJlYWs7Y2FzZSJpbWciOmNhc2UiaW1hZ2UiOmNhc2UibGluayI6VXIoImVycm9yIixlKSxVcigibG9hZCIsZSksbD1yO2JyZWFrO2Nhc2UiZGV0YWlscyI6VXIoInRvZ2dsZSIsZSksbD1yO2JyZWFrO2Nhc2UiaW5wdXQiOlgoZSxyKSxsPVkoZSxyKSxVcigiaW52YWxpZCIsZSk7YnJlYWs7Y2FzZSJvcHRpb24iOmRlZmF1bHQ6bD1yO2JyZWFrO2Nhc2Uic2VsZWN0IjplLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhci5tdWx0aXBsZX0sbD1EKHt9LHIse3ZhbHVlOnZvaWQgMH0pLFVyKCJpbnZhbGlkIixlKTticmVhaztjYXNlInRleHRhcmVhIjpsZShlLHIpLGw9cmUoZSxyKSxVcigiaW52YWxpZCIsZSl9Zm9yKG8gaW4geWUodCxsKSxzPWwpaWYocy5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIGM9c1tvXTsic3R5bGUiPT09bz92ZShlLGMpOiJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1vP251bGwhPShjPWM/Yy5fX2h0bWw6dm9pZCAwKSYmZmUoZSxjKToiY2hpbGRyZW4iPT09bz8ic3RyaW5nIj09PXR5cGVvZiBjPygidGV4dGFyZWEiIT09dHx8IiIhPT1jKSYmZGUoZSxjKToibnVtYmVyIj09PXR5cGVvZiBjJiZkZShlLCIiK2MpOiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09byYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT1vJiYiYXV0b0ZvY3VzIiE9PW8mJih1Lmhhc093blByb3BlcnR5KG8pP251bGwhPWMmJiJvblNjcm9sbCI9PT1vJiZVcigic2Nyb2xsIixlKTpudWxsIT1jJiZiKGUsbyxjLGkpKX1zd2l0Y2godCl7Y2FzZSJpbnB1dCI6UShlKSxaKGUsciwhMSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6UShlKSxvZShlKTticmVhaztjYXNlIm9wdGlvbiI6bnVsbCE9ci52YWx1ZSYmZS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIitIKHIudmFsdWUpKTticmVhaztjYXNlInNlbGVjdCI6ZS5tdWx0aXBsZT0hIXIubXVsdGlwbGUsbnVsbCE9KG89ci52YWx1ZSk/dGUoZSwhIXIubXVsdGlwbGUsbywhMSk6bnVsbCE9ci5kZWZhdWx0VmFsdWUmJnRlKGUsISFyLm11bHRpcGxlLHIuZGVmYXVsdFZhbHVlLCEwKTticmVhaztkZWZhdWx0OiJmdW5jdGlvbiI9PT10eXBlb2YgbC5vbkNsaWNrJiYoZS5vbmNsaWNrPVpyKX1zd2l0Y2godCl7Y2FzZSJidXR0b24iOmNhc2UiaW5wdXQiOmNhc2Uic2VsZWN0IjpjYXNlInRleHRhcmVhIjpyPSEhci5hdXRvRm9jdXM7YnJlYWsgZTtjYXNlImltZyI6cj0hMDticmVhayBlO2RlZmF1bHQ6cj0hMX19ciYmKG4uZmxhZ3N8PTQpfW51bGwhPT1uLnJlZiYmKG4uZmxhZ3N8PTUxMixuLmZsYWdzfD0yMDk3MTUyKX1yZXR1cm4gUXUobiksbnVsbDtjYXNlIDY6aWYoZSYmbnVsbCE9bi5zdGF0ZU5vZGUpUnUoMCxuLGUubWVtb2l6ZWRQcm9wcyxyKTtlbHNle2lmKCJzdHJpbmciIT09dHlwZW9mIHImJm51bGw9PT1uLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihhKDE2NikpO2lmKHQ9dG8obm8uY3VycmVudCksdG8oWmEuY3VycmVudCksZmEobikpe2lmKHI9bi5zdGF0ZU5vZGUsdD1uLm1lbW9pemVkUHJvcHMscltkbF09biwobz1yLm5vZGVWYWx1ZSE9PXQpJiZudWxsIT09KGU9dGEpKXN3aXRjaChlLnRhZyl7Y2FzZSAzOkpyKHIubm9kZVZhbHVlLHQsMCE9PSgxJmUubW9kZSkpO2JyZWFrO2Nhc2UgNTohMCE9PWUubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkpyKHIubm9kZVZhbHVlLHQsMCE9PSgxJmUubW9kZSkpfW8mJihuLmZsYWdzfD00KX1lbHNlKHI9KDk9PT10Lm5vZGVUeXBlP3Q6dC5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShyKSlbZGxdPW4sbi5zdGF0ZU5vZGU9cn1yZXR1cm4gUXUobiksbnVsbDtjYXNlIDEzOmlmKENsKHVvKSxyPW4ubWVtb2l6ZWRTdGF0ZSxudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihsYSYmbnVsbCE9PXJhJiYwIT09KDEmbi5tb2RlKSYmMD09PSgxMjgmbi5mbGFncykpZGEoKSxwYSgpLG4uZmxhZ3N8PTk4NTYwLG89ITE7ZWxzZSBpZihvPWZhKG4pLG51bGwhPT1yJiZudWxsIT09ci5kZWh5ZHJhdGVkKXtpZihudWxsPT09ZSl7aWYoIW8pdGhyb3cgRXJyb3IoYSgzMTgpKTtpZighKG89bnVsbCE9PShvPW4ubWVtb2l6ZWRTdGF0ZSk/by5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGEoMzE3KSk7b1tkbF09bn1lbHNlIHBhKCksMD09PSgxMjgmbi5mbGFncykmJihuLm1lbW9pemVkU3RhdGU9bnVsbCksbi5mbGFnc3w9NDtRdShuKSxvPSExfWVsc2UgbnVsbCE9PWFhJiYob3MoYWEpLGFhPW51bGwpLG89ITA7aWYoIW8pcmV0dXJuIDY1NTM2Jm4uZmxhZ3M/bjpudWxsfXJldHVybiAwIT09KDEyOCZuLmZsYWdzKT8obi5sYW5lcz10LG4pOigocj1udWxsIT09cikhPT0obnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUpJiZyJiYobi5jaGlsZC5mbGFnc3w9ODE5MiwwIT09KDEmbi5tb2RlKSYmKG51bGw9PT1lfHwwIT09KDEmdW8uY3VycmVudCk/MD09PVJpJiYoUmk9Myk6aHMoKSkpLG51bGwhPT1uLnVwZGF0ZVF1ZXVlJiYobi5mbGFnc3w9NCksUXUobiksbnVsbCk7Y2FzZSA0OnJldHVybiBsbygpLG51bGw9PT1lJiZWcihuLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxRdShuKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFNhKG4udHlwZS5fY29udGV4dCksUXUobiksbnVsbDtjYXNlIDE5OmlmKENsKHVvKSxudWxsPT09KG89bi5tZW1vaXplZFN0YXRlKSlyZXR1cm4gUXUobiksbnVsbDtpZihyPTAhPT0oMTI4Jm4uZmxhZ3MpLG51bGw9PT0oaT1vLnJlbmRlcmluZykpaWYocilXdShvLCExKTtlbHNle2lmKDAhPT1SaXx8bnVsbCE9PWUmJjAhPT0oMTI4JmUuZmxhZ3MpKWZvcihlPW4uY2hpbGQ7bnVsbCE9PWU7KXtpZihudWxsIT09KGk9aW8oZSkpKXtmb3Iobi5mbGFnc3w9MTI4LFd1KG8sITEpLG51bGwhPT0ocj1pLnVwZGF0ZVF1ZXVlKSYmKG4udXBkYXRlUXVldWU9cixuLmZsYWdzfD00KSxuLnN1YnRyZWVGbGFncz0wLHI9dCx0PW4uY2hpbGQ7bnVsbCE9PXQ7KWU9ciwobz10KS5mbGFncyY9MTQ2ODAwNjYsbnVsbD09PShpPW8uYWx0ZXJuYXRlKT8oby5jaGlsZExhbmVzPTAsby5sYW5lcz1lLG8uY2hpbGQ9bnVsbCxvLnN1YnRyZWVGbGFncz0wLG8ubWVtb2l6ZWRQcm9wcz1udWxsLG8ubWVtb2l6ZWRTdGF0ZT1udWxsLG8udXBkYXRlUXVldWU9bnVsbCxvLmRlcGVuZGVuY2llcz1udWxsLG8uc3RhdGVOb2RlPW51bGwpOihvLmNoaWxkTGFuZXM9aS5jaGlsZExhbmVzLG8ubGFuZXM9aS5sYW5lcyxvLmNoaWxkPWkuY2hpbGQsby5zdWJ0cmVlRmxhZ3M9MCxvLmRlbGV0aW9ucz1udWxsLG8ubWVtb2l6ZWRQcm9wcz1pLm1lbW9pemVkUHJvcHMsby5tZW1vaXplZFN0YXRlPWkubWVtb2l6ZWRTdGF0ZSxvLnVwZGF0ZVF1ZXVlPWkudXBkYXRlUXVldWUsby50eXBlPWkudHlwZSxlPWkuZGVwZW5kZW5jaWVzLG8uZGVwZW5kZW5jaWVzPW51bGw9PT1lP251bGw6e2xhbmVzOmUubGFuZXMsZmlyc3RDb250ZXh0OmUuZmlyc3RDb250ZXh0fSksdD10LnNpYmxpbmc7cmV0dXJuIF9sKHVvLDEmdW8uY3VycmVudHwyKSxuLmNoaWxkfWU9ZS5zaWJsaW5nfW51bGwhPT1vLnRhaWwmJkdlKCk+VmkmJihuLmZsYWdzfD0xMjgscj0hMCxXdShvLCExKSxuLmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIXIpaWYobnVsbCE9PShlPWlvKGkpKSl7aWYobi5mbGFnc3w9MTI4LHI9ITAsbnVsbCE9PSh0PWUudXBkYXRlUXVldWUpJiYobi51cGRhdGVRdWV1ZT10LG4uZmxhZ3N8PTQpLFd1KG8sITApLG51bGw9PT1vLnRhaWwmJiJoaWRkZW4iPT09by50YWlsTW9kZSYmIWkuYWx0ZXJuYXRlJiYhbGEpcmV0dXJuIFF1KG4pLG51bGx9ZWxzZSAyKkdlKCktby5yZW5kZXJpbmdTdGFydFRpbWU+VmkmJjEwNzM3NDE4MjQhPT10JiYobi5mbGFnc3w9MTI4LHI9ITAsV3UobywhMSksbi5sYW5lcz00MTk0MzA0KTtvLmlzQmFja3dhcmRzPyhpLnNpYmxpbmc9bi5jaGlsZCxuLmNoaWxkPWkpOihudWxsIT09KHQ9by5sYXN0KT90LnNpYmxpbmc9aTpuLmNoaWxkPWksby5sYXN0PWkpfXJldHVybiBudWxsIT09by50YWlsPyhuPW8udGFpbCxvLnJlbmRlcmluZz1uLG8udGFpbD1uLnNpYmxpbmcsby5yZW5kZXJpbmdTdGFydFRpbWU9R2UoKSxuLnNpYmxpbmc9bnVsbCx0PXVvLmN1cnJlbnQsX2wodW8scj8xJnR8MjoxJnQpLG4pOihRdShuKSxudWxsKTtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGZzKCkscj1udWxsIT09bi5tZW1vaXplZFN0YXRlLG51bGwhPT1lJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlIT09ciYmKG4uZmxhZ3N8PTgxOTIpLHImJjAhPT0oMSZuLm1vZGUpPzAhPT0oMTA3Mzc0MTgyNCZPaSkmJihRdShuKSw2Jm4uc3VidHJlZUZsYWdzJiYobi5mbGFnc3w9ODE5MikpOlF1KG4pLG51bGw7Y2FzZSAyNDpjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKGEoMTU2LG4udGFnKSl9ZnVuY3Rpb24gS3UoZSxuKXtzd2l0Y2gobmEobiksbi50YWcpe2Nhc2UgMTpyZXR1cm4gT2wobi50eXBlKSYmTWwoKSw2NTUzNiYoZT1uLmZsYWdzKT8obi5mbGFncz0tNjU1MzcmZXwxMjgsbik6bnVsbDtjYXNlIDM6cmV0dXJuIGxvKCksQ2woemwpLENsKFBsKSxjbygpLDAhPT0oNjU1MzYmKGU9bi5mbGFncykpJiYwPT09KDEyOCZlKT8obi5mbGFncz0tNjU1MzcmZXwxMjgsbik6bnVsbDtjYXNlIDU6cmV0dXJuIG9vKG4pLG51bGw7Y2FzZSAxMzppZihDbCh1byksbnVsbCE9PShlPW4ubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT1lLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1uLmFsdGVybmF0ZSl0aHJvdyBFcnJvcihhKDM0MCkpO3BhKCl9cmV0dXJuIDY1NTM2JihlPW4uZmxhZ3MpPyhuLmZsYWdzPS02NTUzNyZlfDEyOCxuKTpudWxsO2Nhc2UgMTk6cmV0dXJuIENsKHVvKSxudWxsO2Nhc2UgNDpyZXR1cm4gbG8oKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFNhKG4udHlwZS5fY29udGV4dCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGZzKCksbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX1PdT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD1uLmNoaWxkO251bGwhPT10Oyl7aWYoNT09PXQudGFnfHw2PT09dC50YWcpZS5hcHBlbmRDaGlsZCh0LnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09dC50YWcmJm51bGwhPT10LmNoaWxkKXt0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtjb250aW51ZX1pZih0PT09bilicmVhaztmb3IoO251bGw9PT10LnNpYmxpbmc7KXtpZihudWxsPT09dC5yZXR1cm58fHQucmV0dXJuPT09bilyZXR1cm47dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfX0sTXU9ZnVuY3Rpb24oZSxuLHQscil7dmFyIGw9ZS5tZW1vaXplZFByb3BzO2lmKGwhPT1yKXtlPW4uc3RhdGVOb2RlLHRvKFphLmN1cnJlbnQpO3ZhciBhLG89bnVsbDtzd2l0Y2godCl7Y2FzZSJpbnB1dCI6bD1ZKGUsbCkscj1ZKGUsciksbz1bXTticmVhaztjYXNlInNlbGVjdCI6bD1EKHt9LGwse3ZhbHVlOnZvaWQgMH0pLHI9RCh7fSxyLHt2YWx1ZTp2b2lkIDB9KSxvPVtdO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmw9cmUoZSxsKSxyPXJlKGUsciksbz1bXTticmVhaztkZWZhdWx0OiJmdW5jdGlvbiIhPT10eXBlb2YgbC5vbkNsaWNrJiYiZnVuY3Rpb24iPT09dHlwZW9mIHIub25DbGljayYmKGUub25jbGljaz1acil9Zm9yKGMgaW4geWUodCxyKSx0PW51bGwsbClpZighci5oYXNPd25Qcm9wZXJ0eShjKSYmbC5oYXNPd25Qcm9wZXJ0eShjKSYmbnVsbCE9bFtjXSlpZigic3R5bGUiPT09Yyl7dmFyIGk9bFtjXTtmb3IoYSBpbiBpKWkuaGFzT3duUHJvcGVydHkoYSkmJih0fHwodD17fSksdFthXT0iIil9ZWxzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCIhPT1jJiYiY2hpbGRyZW4iIT09YyYmInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT1jJiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PWMmJiJhdXRvRm9jdXMiIT09YyYmKHUuaGFzT3duUHJvcGVydHkoYyk/b3x8KG89W10pOihvPW98fFtdKS5wdXNoKGMsbnVsbCkpO2ZvcihjIGluIHIpe3ZhciBzPXJbY107aWYoaT1udWxsIT1sP2xbY106dm9pZCAwLHIuaGFzT3duUHJvcGVydHkoYykmJnMhPT1pJiYobnVsbCE9c3x8bnVsbCE9aSkpaWYoInN0eWxlIj09PWMpaWYoaSl7Zm9yKGEgaW4gaSkhaS5oYXNPd25Qcm9wZXJ0eShhKXx8cyYmcy5oYXNPd25Qcm9wZXJ0eShhKXx8KHR8fCh0PXt9KSx0W2FdPSIiKTtmb3IoYSBpbiBzKXMuaGFzT3duUHJvcGVydHkoYSkmJmlbYV0hPT1zW2FdJiYodHx8KHQ9e30pLHRbYV09c1thXSl9ZWxzZSB0fHwob3x8KG89W10pLG8ucHVzaChjLHQpKSx0PXM7ZWxzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1jPyhzPXM/cy5fX2h0bWw6dm9pZCAwLGk9aT9pLl9faHRtbDp2b2lkIDAsbnVsbCE9cyYmaSE9PXMmJihvPW98fFtdKS5wdXNoKGMscykpOiJjaGlsZHJlbiI9PT1jPyJzdHJpbmciIT09dHlwZW9mIHMmJiJudW1iZXIiIT09dHlwZW9mIHN8fChvPW98fFtdKS5wdXNoKGMsIiIrcyk6InN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT1jJiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PWMmJih1Lmhhc093blByb3BlcnR5KGMpPyhudWxsIT1zJiYib25TY3JvbGwiPT09YyYmVXIoInNjcm9sbCIsZSksb3x8aT09PXN8fChvPVtdKSk6KG89b3x8W10pLnB1c2goYyxzKSl9dCYmKG89b3x8W10pLnB1c2goInN0eWxlIix0KTt2YXIgYz1vOyhuLnVwZGF0ZVF1ZXVlPWMpJiYobi5mbGFnc3w9NCl9fSxSdT1mdW5jdGlvbihlLG4sdCxyKXt0IT09ciYmKG4uZmxhZ3N8PTQpfTt2YXIgWXU9ITEsWHU9ITEsR3U9ImZ1bmN0aW9uIj09PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LEp1PW51bGw7ZnVuY3Rpb24gWnUoZSxuKXt2YXIgdD1lLnJlZjtpZihudWxsIT09dClpZigiZnVuY3Rpb24iPT09dHlwZW9mIHQpdHJ5e3QobnVsbCl9Y2F0Y2gocil7RXMoZSxuLHIpfWVsc2UgdC5jdXJyZW50PW51bGx9ZnVuY3Rpb24gZWkoZSxuLHQpe3RyeXt0KCl9Y2F0Y2gocil7RXMoZSxuLHIpfX12YXIgbmk9ITE7ZnVuY3Rpb24gdGkoZSxuLHQpe3ZhciByPW4udXBkYXRlUXVldWU7aWYobnVsbCE9PShyPW51bGwhPT1yP3IubGFzdEVmZmVjdDpudWxsKSl7dmFyIGw9cj1yLm5leHQ7ZG97aWYoKGwudGFnJmUpPT09ZSl7dmFyIGE9bC5kZXN0cm95O2wuZGVzdHJveT12b2lkIDAsdm9pZCAwIT09YSYmZWkobix0LGEpfWw9bC5uZXh0fXdoaWxlKGwhPT1yKX19ZnVuY3Rpb24gcmkoZSxuKXtpZihudWxsIT09KG49bnVsbCE9PShuPW4udXBkYXRlUXVldWUpP24ubGFzdEVmZmVjdDpudWxsKSl7dmFyIHQ9bj1uLm5leHQ7ZG97aWYoKHQudGFnJmUpPT09ZSl7dmFyIHI9dC5jcmVhdGU7dC5kZXN0cm95PXIoKX10PXQubmV4dH13aGlsZSh0IT09bil9fWZ1bmN0aW9uIGxpKGUpe3ZhciBuPWUucmVmO2lmKG51bGwhPT1uKXt2YXIgdD1lLnN0YXRlTm9kZTtlLnRhZyxlPXQsImZ1bmN0aW9uIj09PXR5cGVvZiBuP24oZSk6bi5jdXJyZW50PWV9fWZ1bmN0aW9uIGFpKGUpe3ZhciBuPWUuYWx0ZXJuYXRlO251bGwhPT1uJiYoZS5hbHRlcm5hdGU9bnVsbCxhaShuKSksZS5jaGlsZD1udWxsLGUuZGVsZXRpb25zPW51bGwsZS5zaWJsaW5nPW51bGwsNT09PWUudGFnJiYobnVsbCE9PShuPWUuc3RhdGVOb2RlKSYmKGRlbGV0ZSBuW2RsXSxkZWxldGUgbltwbF0sZGVsZXRlIG5baGxdLGRlbGV0ZSBuW3ZsXSxkZWxldGUgbltnbF0pKSxlLnN0YXRlTm9kZT1udWxsLGUucmV0dXJuPW51bGwsZS5kZXBlbmRlbmNpZXM9bnVsbCxlLm1lbW9pemVkUHJvcHM9bnVsbCxlLm1lbW9pemVkU3RhdGU9bnVsbCxlLnBlbmRpbmdQcm9wcz1udWxsLGUuc3RhdGVOb2RlPW51bGwsZS51cGRhdGVRdWV1ZT1udWxsfWZ1bmN0aW9uIG9pKGUpe3JldHVybiA1PT09ZS50YWd8fDM9PT1lLnRhZ3x8ND09PWUudGFnfWZ1bmN0aW9uIHVpKGUpe2U6Zm9yKDs7KXtmb3IoO251bGw9PT1lLnNpYmxpbmc7KXtpZihudWxsPT09ZS5yZXR1cm58fG9pKGUucmV0dXJuKSlyZXR1cm4gbnVsbDtlPWUucmV0dXJufWZvcihlLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nOzUhPT1lLnRhZyYmNiE9PWUudGFnJiYxOCE9PWUudGFnOyl7aWYoMiZlLmZsYWdzKWNvbnRpbnVlIGU7aWYobnVsbD09PWUuY2hpbGR8fDQ9PT1lLnRhZyljb250aW51ZSBlO2UuY2hpbGQucmV0dXJuPWUsZT1lLmNoaWxkfWlmKCEoMiZlLmZsYWdzKSlyZXR1cm4gZS5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGlpKGUsbix0KXt2YXIgcj1lLnRhZztpZig1PT09cnx8Nj09PXIpZT1lLnN0YXRlTm9kZSxuPzg9PT10Lm5vZGVUeXBlP3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSxuKTp0Lmluc2VydEJlZm9yZShlLG4pOig4PT09dC5ub2RlVHlwZT8obj10LnBhcmVudE5vZGUpLmluc2VydEJlZm9yZShlLHQpOihuPXQpLmFwcGVuZENoaWxkKGUpLG51bGwhPT0odD10Ll9yZWFjdFJvb3RDb250YWluZXIpJiZ2b2lkIDAhPT10fHxudWxsIT09bi5vbmNsaWNrfHwobi5vbmNsaWNrPVpyKSk7ZWxzZSBpZig0IT09ciYmbnVsbCE9PShlPWUuY2hpbGQpKWZvcihpaShlLG4sdCksZT1lLnNpYmxpbmc7bnVsbCE9PWU7KWlpKGUsbix0KSxlPWUuc2libGluZ31mdW5jdGlvbiBzaShlLG4sdCl7dmFyIHI9ZS50YWc7aWYoNT09PXJ8fDY9PT1yKWU9ZS5zdGF0ZU5vZGUsbj90Lmluc2VydEJlZm9yZShlLG4pOnQuYXBwZW5kQ2hpbGQoZSk7ZWxzZSBpZig0IT09ciYmbnVsbCE9PShlPWUuY2hpbGQpKWZvcihzaShlLG4sdCksZT1lLnNpYmxpbmc7bnVsbCE9PWU7KXNpKGUsbix0KSxlPWUuc2libGluZ312YXIgY2k9bnVsbCxmaT0hMTtmdW5jdGlvbiBkaShlLG4sdCl7Zm9yKHQ9dC5jaGlsZDtudWxsIT09dDspcGkoZSxuLHQpLHQ9dC5zaWJsaW5nfWZ1bmN0aW9uIHBpKGUsbix0KXtpZihhbiYmImZ1bmN0aW9uIj09PXR5cGVvZiBhbi5vbkNvbW1pdEZpYmVyVW5tb3VudCl0cnl7YW4ub25Db21taXRGaWJlclVubW91bnQobG4sdCl9Y2F0Y2godSl7fXN3aXRjaCh0LnRhZyl7Y2FzZSA1Olh1fHxadSh0LG4pO2Nhc2UgNjp2YXIgcj1jaSxsPWZpO2NpPW51bGwsZGkoZSxuLHQpLGZpPWwsbnVsbCE9PShjaT1yKSYmKGZpPyhlPWNpLHQ9dC5zdGF0ZU5vZGUsOD09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpOmUucmVtb3ZlQ2hpbGQodCkpOmNpLnJlbW92ZUNoaWxkKHQuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSAxODpudWxsIT09Y2kmJihmaT8oZT1jaSx0PXQuc3RhdGVOb2RlLDg9PT1lLm5vZGVUeXBlP2lsKGUucGFyZW50Tm9kZSx0KToxPT09ZS5ub2RlVHlwZSYmaWwoZSx0KSwkbihlKSk6aWwoY2ksdC5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDQ6cj1jaSxsPWZpLGNpPXQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sZmk9ITAsZGkoZSxuLHQpLGNpPXIsZmk9bDticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aWYoIVh1JiYobnVsbCE9PShyPXQudXBkYXRlUXVldWUpJiZudWxsIT09KHI9ci5sYXN0RWZmZWN0KSkpe2w9cj1yLm5leHQ7ZG97dmFyIGE9bCxvPWEuZGVzdHJveTthPWEudGFnLHZvaWQgMCE9PW8mJigwIT09KDImYSl8fDAhPT0oNCZhKSkmJmVpKHQsbixvKSxsPWwubmV4dH13aGlsZShsIT09cil9ZGkoZSxuLHQpO2JyZWFrO2Nhc2UgMTppZighWHUmJihadSh0LG4pLCJmdW5jdGlvbiI9PT10eXBlb2Yocj10LnN0YXRlTm9kZSkuY29tcG9uZW50V2lsbFVubW91bnQpKXRyeXtyLnByb3BzPXQubWVtb2l6ZWRQcm9wcyxyLnN0YXRlPXQubWVtb2l6ZWRTdGF0ZSxyLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2godSl7RXModCxuLHUpfWRpKGUsbix0KTticmVhaztjYXNlIDIxOmRpKGUsbix0KTticmVhaztjYXNlIDIyOjEmdC5tb2RlPyhYdT0ocj1YdSl8fG51bGwhPT10Lm1lbW9pemVkU3RhdGUsZGkoZSxuLHQpLFh1PXIpOmRpKGUsbix0KTticmVhaztkZWZhdWx0OmRpKGUsbix0KX19ZnVuY3Rpb24gbWkoZSl7dmFyIG49ZS51cGRhdGVRdWV1ZTtpZihudWxsIT09bil7ZS51cGRhdGVRdWV1ZT1udWxsO3ZhciB0PWUuc3RhdGVOb2RlO251bGw9PT10JiYodD1lLnN0YXRlTm9kZT1uZXcgR3UpLG4uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI9UHMuYmluZChudWxsLGUsbik7dC5oYXMobil8fCh0LmFkZChuKSxuLnRoZW4ocixyKSl9KSl9fWZ1bmN0aW9uIGhpKGUsbil7dmFyIHQ9bi5kZWxldGlvbnM7aWYobnVsbCE9PXQpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBsPXRbcl07dHJ5e3ZhciBvPWUsdT1uLGk9dTtlOmZvcig7bnVsbCE9PWk7KXtzd2l0Y2goaS50YWcpe2Nhc2UgNTpjaT1pLnN0YXRlTm9kZSxmaT0hMTticmVhayBlO2Nhc2UgMzpjYXNlIDQ6Y2k9aS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxmaT0hMDticmVhayBlfWk9aS5yZXR1cm59aWYobnVsbD09PWNpKXRocm93IEVycm9yKGEoMTYwKSk7cGkobyx1LGwpLGNpPW51bGwsZmk9ITE7dmFyIHM9bC5hbHRlcm5hdGU7bnVsbCE9PXMmJihzLnJldHVybj1udWxsKSxsLnJldHVybj1udWxsfWNhdGNoKGMpe0VzKGwsbixjKX19aWYoMTI4NTQmbi5zdWJ0cmVlRmxhZ3MpZm9yKG49bi5jaGlsZDtudWxsIT09bjspdmkobixlKSxuPW4uc2libGluZ31mdW5jdGlvbiB2aShlLG4pe3ZhciB0PWUuYWx0ZXJuYXRlLHI9ZS5mbGFncztzd2l0Y2goZS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZihoaShuLGUpLGdpKGUpLDQmcil7dHJ5e3RpKDMsZSxlLnJldHVybikscmkoMyxlKX1jYXRjaCh2KXtFcyhlLGUucmV0dXJuLHYpfXRyeXt0aSg1LGUsZS5yZXR1cm4pfWNhdGNoKHYpe0VzKGUsZS5yZXR1cm4sdil9fWJyZWFrO2Nhc2UgMTpoaShuLGUpLGdpKGUpLDUxMiZyJiZudWxsIT09dCYmWnUodCx0LnJldHVybik7YnJlYWs7Y2FzZSA1OmlmKGhpKG4sZSksZ2koZSksNTEyJnImJm51bGwhPT10JiZadSh0LHQucmV0dXJuKSwzMiZlLmZsYWdzKXt2YXIgbD1lLnN0YXRlTm9kZTt0cnl7ZGUobCwiIil9Y2F0Y2godil7RXMoZSxlLnJldHVybix2KX19aWYoNCZyJiZudWxsIT0obD1lLnN0YXRlTm9kZSkpe3ZhciBvPWUubWVtb2l6ZWRQcm9wcyx1PW51bGwhPT10P3QubWVtb2l6ZWRQcm9wczpvLGk9ZS50eXBlLHM9ZS51cGRhdGVRdWV1ZTtpZihlLnVwZGF0ZVF1ZXVlPW51bGwsbnVsbCE9PXMpdHJ5eyJpbnB1dCI9PT1pJiYicmFkaW8iPT09by50eXBlJiZudWxsIT1vLm5hbWUmJkcobCxvKSxiZShpLHUpO3ZhciBjPWJlKGksbyk7Zm9yKHU9MDt1PHMubGVuZ3RoO3UrPTIpe3ZhciBmPXNbdV0sZD1zW3UrMV07InN0eWxlIj09PWY/dmUobCxkKToiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09Zj9mZShsLGQpOiJjaGlsZHJlbiI9PT1mP2RlKGwsZCk6YihsLGYsZCxjKX1zd2l0Y2goaSl7Y2FzZSJpbnB1dCI6SihsLG8pO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmFlKGwsbyk7YnJlYWs7Y2FzZSJzZWxlY3QiOnZhciBwPWwuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtsLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFvLm11bHRpcGxlO3ZhciBtPW8udmFsdWU7bnVsbCE9bT90ZShsLCEhby5tdWx0aXBsZSxtLCExKTpwIT09ISFvLm11bHRpcGxlJiYobnVsbCE9by5kZWZhdWx0VmFsdWU/dGUobCwhIW8ubXVsdGlwbGUsby5kZWZhdWx0VmFsdWUsITApOnRlKGwsISFvLm11bHRpcGxlLG8ubXVsdGlwbGU/W106IiIsITEpKX1sW3BsXT1vfWNhdGNoKHYpe0VzKGUsZS5yZXR1cm4sdil9fWJyZWFrO2Nhc2UgNjppZihoaShuLGUpLGdpKGUpLDQmcil7aWYobnVsbD09PWUuc3RhdGVOb2RlKXRocm93IEVycm9yKGEoMTYyKSk7bD1lLnN0YXRlTm9kZSxvPWUubWVtb2l6ZWRQcm9wczt0cnl7bC5ub2RlVmFsdWU9b31jYXRjaCh2KXtFcyhlLGUucmV0dXJuLHYpfX1icmVhaztjYXNlIDM6aWYoaGkobixlKSxnaShlKSw0JnImJm51bGwhPT10JiZ0Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXRyeXskbihuLmNvbnRhaW5lckluZm8pfWNhdGNoKHYpe0VzKGUsZS5yZXR1cm4sdil9YnJlYWs7Y2FzZSA0OmRlZmF1bHQ6aGkobixlKSxnaShlKTticmVhaztjYXNlIDEzOmhpKG4sZSksZ2koZSksODE5MiYobD1lLmNoaWxkKS5mbGFncyYmKG89bnVsbCE9PWwubWVtb2l6ZWRTdGF0ZSxsLnN0YXRlTm9kZS5pc0hpZGRlbj1vLCFvfHxudWxsIT09bC5hbHRlcm5hdGUmJm51bGwhPT1sLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlfHwoQmk9R2UoKSkpLDQmciYmbWkoZSk7YnJlYWs7Y2FzZSAyMjppZihmPW51bGwhPT10JiZudWxsIT09dC5tZW1vaXplZFN0YXRlLDEmZS5tb2RlPyhYdT0oYz1YdSl8fGYsaGkobixlKSxYdT1jKTpoaShuLGUpLGdpKGUpLDgxOTImcil7aWYoYz1udWxsIT09ZS5tZW1vaXplZFN0YXRlLChlLnN0YXRlTm9kZS5pc0hpZGRlbj1jKSYmIWYmJjAhPT0oMSZlLm1vZGUpKWZvcihKdT1lLGY9ZS5jaGlsZDtudWxsIT09Zjspe2ZvcihkPUp1PWY7bnVsbCE9PUp1Oyl7c3dpdGNoKG09KHA9SnUpLmNoaWxkLHAudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6dGkoNCxwLHAucmV0dXJuKTticmVhaztjYXNlIDE6WnUocCxwLnJldHVybik7dmFyIGg9cC5zdGF0ZU5vZGU7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBoLmNvbXBvbmVudFdpbGxVbm1vdW50KXtyPXAsdD1wLnJldHVybjt0cnl7bj1yLGgucHJvcHM9bi5tZW1vaXplZFByb3BzLGguc3RhdGU9bi5tZW1vaXplZFN0YXRlLGguY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaCh2KXtFcyhyLHQsdil9fWJyZWFrO2Nhc2UgNTpadShwLHAucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKG51bGwhPT1wLm1lbW9pemVkU3RhdGUpe2tpKGQpO2NvbnRpbnVlfX1udWxsIT09bT8obS5yZXR1cm49cCxKdT1tKTpraShkKX1mPWYuc2libGluZ31lOmZvcihmPW51bGwsZD1lOzspe2lmKDU9PT1kLnRhZyl7aWYobnVsbD09PWYpe2Y9ZDt0cnl7bD1kLnN0YXRlTm9kZSxjPyJmdW5jdGlvbiI9PT10eXBlb2Yobz1sLnN0eWxlKS5zZXRQcm9wZXJ0eT9vLnNldFByb3BlcnR5KCJkaXNwbGF5Iiwibm9uZSIsImltcG9ydGFudCIpOm8uZGlzcGxheT0ibm9uZSI6KGk9ZC5zdGF0ZU5vZGUsdT12b2lkIDAhPT0ocz1kLm1lbW9pemVkUHJvcHMuc3R5bGUpJiZudWxsIT09cyYmcy5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP3MuZGlzcGxheTpudWxsLGkuc3R5bGUuZGlzcGxheT1oZSgiZGlzcGxheSIsdSkpfWNhdGNoKHYpe0VzKGUsZS5yZXR1cm4sdil9fX1lbHNlIGlmKDY9PT1kLnRhZyl7aWYobnVsbD09PWYpdHJ5e2Quc3RhdGVOb2RlLm5vZGVWYWx1ZT1jPyIiOmQubWVtb2l6ZWRQcm9wc31jYXRjaCh2KXtFcyhlLGUucmV0dXJuLHYpfX1lbHNlIGlmKCgyMiE9PWQudGFnJiYyMyE9PWQudGFnfHxudWxsPT09ZC5tZW1vaXplZFN0YXRlfHxkPT09ZSkmJm51bGwhPT1kLmNoaWxkKXtkLmNoaWxkLnJldHVybj1kLGQ9ZC5jaGlsZDtjb250aW51ZX1pZihkPT09ZSlicmVhayBlO2Zvcig7bnVsbD09PWQuc2libGluZzspe2lmKG51bGw9PT1kLnJldHVybnx8ZC5yZXR1cm49PT1lKWJyZWFrIGU7Zj09PWQmJihmPW51bGwpLGQ9ZC5yZXR1cm59Zj09PWQmJihmPW51bGwpLGQuc2libGluZy5yZXR1cm49ZC5yZXR1cm4sZD1kLnNpYmxpbmd9fWJyZWFrO2Nhc2UgMTk6aGkobixlKSxnaShlKSw0JnImJm1pKGUpO2Nhc2UgMjE6fX1mdW5jdGlvbiBnaShlKXt2YXIgbj1lLmZsYWdzO2lmKDImbil7dHJ5e2U6e2Zvcih2YXIgdD1lLnJldHVybjtudWxsIT09dDspe2lmKG9pKHQpKXt2YXIgcj10O2JyZWFrIGV9dD10LnJldHVybn10aHJvdyBFcnJvcihhKDE2MCkpfXN3aXRjaChyLnRhZyl7Y2FzZSA1OnZhciBsPXIuc3RhdGVOb2RlOzMyJnIuZmxhZ3MmJihkZShsLCIiKSxyLmZsYWdzJj0tMzMpLHNpKGUsdWkoZSksbCk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgbz1yLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lpKGUsdWkoZSksbyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihhKDE2MSkpfX1jYXRjaCh1KXtFcyhlLGUucmV0dXJuLHUpfWUuZmxhZ3MmPS0zfTQwOTYmbiYmKGUuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiB5aShlLG4sdCl7SnU9ZSxiaShlLG4sdCl9ZnVuY3Rpb24gYmkoZSxuLHQpe2Zvcih2YXIgcj0wIT09KDEmZS5tb2RlKTtudWxsIT09SnU7KXt2YXIgbD1KdSxhPWwuY2hpbGQ7aWYoMjI9PT1sLnRhZyYmcil7dmFyIG89bnVsbCE9PWwubWVtb2l6ZWRTdGF0ZXx8WXU7aWYoIW8pe3ZhciB1PWwuYWx0ZXJuYXRlLGk9bnVsbCE9PXUmJm51bGwhPT11Lm1lbW9pemVkU3RhdGV8fFh1O3U9WXU7dmFyIHM9WHU7aWYoWXU9bywoWHU9aSkmJiFzKWZvcihKdT1sO251bGwhPT1KdTspaT0obz1KdSkuY2hpbGQsMjI9PT1vLnRhZyYmbnVsbCE9PW8ubWVtb2l6ZWRTdGF0ZT9TaShsKTpudWxsIT09aT8oaS5yZXR1cm49byxKdT1pKTpTaShsKTtmb3IoO251bGwhPT1hOylKdT1hLGJpKGEsbix0KSxhPWEuc2libGluZztKdT1sLFl1PXUsWHU9c313aShlKX1lbHNlIDAhPT0oODc3MiZsLnN1YnRyZWVGbGFncykmJm51bGwhPT1hPyhhLnJldHVybj1sLEp1PWEpOndpKGUpfX1mdW5jdGlvbiB3aShlKXtmb3IoO251bGwhPT1KdTspe3ZhciBuPUp1O2lmKDAhPT0oODc3MiZuLmZsYWdzKSl7dmFyIHQ9bi5hbHRlcm5hdGU7dHJ5e2lmKDAhPT0oODc3MiZuLmZsYWdzKSlzd2l0Y2gobi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6WHV8fHJpKDUsbik7YnJlYWs7Y2FzZSAxOnZhciByPW4uc3RhdGVOb2RlO2lmKDQmbi5mbGFncyYmIVh1KWlmKG51bGw9PT10KXIuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBsPW4uZWxlbWVudFR5cGU9PT1uLnR5cGU/dC5tZW1vaXplZFByb3BzOnZhKG4udHlwZSx0Lm1lbW9pemVkUHJvcHMpO3IuY29tcG9uZW50RGlkVXBkYXRlKGwsdC5tZW1vaXplZFN0YXRlLHIuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBvPW4udXBkYXRlUXVldWU7bnVsbCE9PW8mJklhKG4sbyxyKTticmVhaztjYXNlIDM6dmFyIHU9bi51cGRhdGVRdWV1ZTtpZihudWxsIT09dSl7aWYodD1udWxsLG51bGwhPT1uLmNoaWxkKXN3aXRjaChuLmNoaWxkLnRhZyl7Y2FzZSA1OmNhc2UgMTp0PW4uY2hpbGQuc3RhdGVOb2RlfUlhKG4sdSx0KX1icmVhaztjYXNlIDU6dmFyIGk9bi5zdGF0ZU5vZGU7aWYobnVsbD09PXQmJjQmbi5mbGFncyl7dD1pO3ZhciBzPW4ubWVtb2l6ZWRQcm9wcztzd2l0Y2gobi50eXBlKXtjYXNlImJ1dHRvbiI6Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOnMuYXV0b0ZvY3VzJiZ0LmZvY3VzKCk7YnJlYWs7Y2FzZSJpbWciOnMuc3JjJiYodC5zcmM9cy5zcmMpfX1icmVhaztjYXNlIDY6Y2FzZSA0OmNhc2UgMTI6Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDIzOmNhc2UgMjU6YnJlYWs7Y2FzZSAxMzppZihudWxsPT09bi5tZW1vaXplZFN0YXRlKXt2YXIgYz1uLmFsdGVybmF0ZTtpZihudWxsIT09Yyl7dmFyIGY9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1mKXt2YXIgZD1mLmRlaHlkcmF0ZWQ7bnVsbCE9PWQmJiRuKGQpfX19YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihhKDE2MykpfVh1fHw1MTImbi5mbGFncyYmbGkobil9Y2F0Y2gocCl7RXMobixuLnJldHVybixwKX19aWYobj09PWUpe0p1PW51bGw7YnJlYWt9aWYobnVsbCE9PSh0PW4uc2libGluZykpe3QucmV0dXJuPW4ucmV0dXJuLEp1PXQ7YnJlYWt9SnU9bi5yZXR1cm59fWZ1bmN0aW9uIGtpKGUpe2Zvcig7bnVsbCE9PUp1Oyl7dmFyIG49SnU7aWYobj09PWUpe0p1PW51bGw7YnJlYWt9dmFyIHQ9bi5zaWJsaW5nO2lmKG51bGwhPT10KXt0LnJldHVybj1uLnJldHVybixKdT10O2JyZWFrfUp1PW4ucmV0dXJufX1mdW5jdGlvbiBTaShlKXtmb3IoO251bGwhPT1KdTspe3ZhciBuPUp1O3RyeXtzd2l0Y2gobi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIHQ9bi5yZXR1cm47dHJ5e3JpKDQsbil9Y2F0Y2goaSl7RXMobix0LGkpfWJyZWFrO2Nhc2UgMTp2YXIgcj1uLnN0YXRlTm9kZTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIuY29tcG9uZW50RGlkTW91bnQpe3ZhciBsPW4ucmV0dXJuO3RyeXtyLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2goaSl7RXMobixsLGkpfX12YXIgYT1uLnJldHVybjt0cnl7bGkobil9Y2F0Y2goaSl7RXMobixhLGkpfWJyZWFrO2Nhc2UgNTp2YXIgbz1uLnJldHVybjt0cnl7bGkobil9Y2F0Y2goaSl7RXMobixvLGkpfX19Y2F0Y2goaSl7RXMobixuLnJldHVybixpKX1pZihuPT09ZSl7SnU9bnVsbDticmVha312YXIgdT1uLnNpYmxpbmc7aWYobnVsbCE9PXUpe3UucmV0dXJuPW4ucmV0dXJuLEp1PXU7YnJlYWt9SnU9bi5yZXR1cm59fXZhciB4aSxFaT1NYXRoLmNlaWwsQ2k9dy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLF9pPXcuUmVhY3RDdXJyZW50T3duZXIsTmk9dy5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxQaT0wLHppPW51bGwsVGk9bnVsbCxMaT0wLE9pPTAsTWk9RWwoMCksUmk9MCxqaT1udWxsLEZpPTAsRGk9MCxJaT0wLFVpPW51bGwsQWk9bnVsbCxCaT0wLFZpPTEvMCwkaT1udWxsLEhpPSExLFdpPW51bGwsUWk9bnVsbCxxaT0hMSxLaT1udWxsLFlpPTAsWGk9MCxHaT1udWxsLEppPS0xLFppPTA7ZnVuY3Rpb24gZXMoKXtyZXR1cm4gMCE9PSg2JlBpKT9HZSgpOi0xIT09Smk/Smk6Smk9R2UoKX1mdW5jdGlvbiBucyhlKXtyZXR1cm4gMD09PSgxJmUubW9kZSk/MTowIT09KDImUGkpJiYwIT09TGk/TGkmLUxpOm51bGwhPT1oYS50cmFuc2l0aW9uPygwPT09WmkmJihaaT12bigpKSxaaSk6MCE9PShlPXduKT9lOmU9dm9pZCAwPT09KGU9d2luZG93LmV2ZW50KT8xNjpHbihlLnR5cGUpfWZ1bmN0aW9uIHRzKGUsbix0LHIpe2lmKDUwPFhpKXRocm93IFhpPTAsR2k9bnVsbCxFcnJvcihhKDE4NSkpO3luKGUsdCxyKSwwIT09KDImUGkpJiZlPT09eml8fChlPT09emkmJigwPT09KDImUGkpJiYoRGl8PXQpLDQ9PT1SaSYmdXMoZSxMaSkpLHJzKGUsciksMT09PXQmJjA9PT1QaSYmMD09PSgxJm4ubW9kZSkmJihWaT1HZSgpKzUwMCxVbCYmVmwoKSkpfWZ1bmN0aW9uIHJzKGUsbil7dmFyIHQ9ZS5jYWxsYmFja05vZGU7IWZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PWUuc3VzcGVuZGVkTGFuZXMscj1lLnBpbmdlZExhbmVzLGw9ZS5leHBpcmF0aW9uVGltZXMsYT1lLnBlbmRpbmdMYW5lczswPGE7KXt2YXIgbz0zMS1vbihhKSx1PTE8PG8saT1sW29dOy0xPT09aT8wIT09KHUmdCkmJjA9PT0odSZyKXx8KGxbb109bW4odSxuKSk6aTw9biYmKGUuZXhwaXJlZExhbmVzfD11KSxhJj1+dX19KGUsbik7dmFyIHI9cG4oZSxlPT09emk/TGk6MCk7aWYoMD09PXIpbnVsbCE9PXQmJktlKHQpLGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTA7ZWxzZSBpZihuPXImLXIsZS5jYWxsYmFja1ByaW9yaXR5IT09bil7aWYobnVsbCE9dCYmS2UodCksMT09PW4pMD09PWUudGFnP2Z1bmN0aW9uKGUpe1VsPSEwLEJsKGUpfShpcy5iaW5kKG51bGwsZSkpOkJsKGlzLmJpbmQobnVsbCxlKSksb2woKGZ1bmN0aW9uKCl7MD09PSg2JlBpKSYmVmwoKX0pKSx0PW51bGw7ZWxzZXtzd2l0Y2goa24ocikpe2Nhc2UgMTp0PVplO2JyZWFrO2Nhc2UgNDp0PWVuO2JyZWFrO2Nhc2UgMTY6ZGVmYXVsdDp0PW5uO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOnQ9cm59dD16cyh0LGxzLmJpbmQobnVsbCxlKSl9ZS5jYWxsYmFja1ByaW9yaXR5PW4sZS5jYWxsYmFja05vZGU9dH19ZnVuY3Rpb24gbHMoZSxuKXtpZihKaT0tMSxaaT0wLDAhPT0oNiZQaSkpdGhyb3cgRXJyb3IoYSgzMjcpKTt2YXIgdD1lLmNhbGxiYWNrTm9kZTtpZihTcygpJiZlLmNhbGxiYWNrTm9kZSE9PXQpcmV0dXJuIG51bGw7dmFyIHI9cG4oZSxlPT09emk/TGk6MCk7aWYoMD09PXIpcmV0dXJuIG51bGw7aWYoMCE9PSgzMCZyKXx8MCE9PShyJmUuZXhwaXJlZExhbmVzKXx8biluPXZzKGUscik7ZWxzZXtuPXI7dmFyIGw9UGk7UGl8PTI7dmFyIG89bXMoKTtmb3Ioemk9PT1lJiZMaT09PW58fCgkaT1udWxsLFZpPUdlKCkrNTAwLGRzKGUsbikpOzspdHJ5e3lzKCk7YnJlYWt9Y2F0Y2goaSl7cHMoZSxpKX1rYSgpLENpLmN1cnJlbnQ9byxQaT1sLG51bGwhPT1UaT9uPTA6KHppPW51bGwsTGk9MCxuPVJpKX1pZigwIT09bil7aWYoMj09PW4mJigwIT09KGw9aG4oZSkpJiYocj1sLG49YXMoZSxsKSkpLDE9PT1uKXRocm93IHQ9amksZHMoZSwwKSx1cyhlLHIpLHJzKGUsR2UoKSksdDtpZig2PT09bil1cyhlLHIpO2Vsc2V7aWYobD1lLmN1cnJlbnQuYWx0ZXJuYXRlLDA9PT0oMzAmcikmJiFmdW5jdGlvbihlKXtmb3IodmFyIG49ZTs7KXtpZigxNjM4NCZuLmZsYWdzKXt2YXIgdD1uLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT10JiZudWxsIT09KHQ9dC5zdG9yZXMpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbD10W3JdLGE9bC5nZXRTbmFwc2hvdDtsPWwudmFsdWU7dHJ5e2lmKCF1cihhKCksbCkpcmV0dXJuITF9Y2F0Y2godSl7cmV0dXJuITF9fX1pZih0PW4uY2hpbGQsMTYzODQmbi5zdWJ0cmVlRmxhZ3MmJm51bGwhPT10KXQucmV0dXJuPW4sbj10O2Vsc2V7aWYobj09PWUpYnJlYWs7Zm9yKDtudWxsPT09bi5zaWJsaW5nOyl7aWYobnVsbD09PW4ucmV0dXJufHxuLnJldHVybj09PWUpcmV0dXJuITA7bj1uLnJldHVybn1uLnNpYmxpbmcucmV0dXJuPW4ucmV0dXJuLG49bi5zaWJsaW5nfX1yZXR1cm4hMH0obCkmJigyPT09KG49dnMoZSxyKSkmJigwIT09KG89aG4oZSkpJiYocj1vLG49YXMoZSxvKSkpLDE9PT1uKSl0aHJvdyB0PWppLGRzKGUsMCksdXMoZSxyKSxycyhlLEdlKCkpLHQ7c3dpdGNoKGUuZmluaXNoZWRXb3JrPWwsZS5maW5pc2hlZExhbmVzPXIsbil7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihhKDM0NSkpO2Nhc2UgMjpjYXNlIDU6a3MoZSxBaSwkaSk7YnJlYWs7Y2FzZSAzOmlmKHVzKGUsciksKDEzMDAyMzQyNCZyKT09PXImJjEwPChuPUJpKzUwMC1HZSgpKSl7aWYoMCE9PXBuKGUsMCkpYnJlYWs7aWYoKChsPWUuc3VzcGVuZGVkTGFuZXMpJnIpIT09cil7ZXMoKSxlLnBpbmdlZExhbmVzfD1lLnN1c3BlbmRlZExhbmVzJmw7YnJlYWt9ZS50aW1lb3V0SGFuZGxlPXJsKGtzLmJpbmQobnVsbCxlLEFpLCRpKSxuKTticmVha31rcyhlLEFpLCRpKTticmVhaztjYXNlIDQ6aWYodXMoZSxyKSwoNDE5NDI0MCZyKT09PXIpYnJlYWs7Zm9yKG49ZS5ldmVudFRpbWVzLGw9LTE7MDxyOyl7dmFyIHU9MzEtb24ocik7bz0xPDx1LCh1PW5bdV0pPmwmJihsPXUpLHImPX5vfWlmKHI9bCwxMDwocj0oMTIwPihyPUdlKCktcik/MTIwOjQ4MD5yPzQ4MDoxMDgwPnI/MTA4MDoxOTIwPnI/MTkyMDozZTM+cj8zZTM6NDMyMD5yPzQzMjA6MTk2MCpFaShyLzE5NjApKS1yKSl7ZS50aW1lb3V0SGFuZGxlPXJsKGtzLmJpbmQobnVsbCxlLEFpLCRpKSxyKTticmVha31rcyhlLEFpLCRpKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGEoMzI5KSl9fX1yZXR1cm4gcnMoZSxHZSgpKSxlLmNhbGxiYWNrTm9kZT09PXQ/bHMuYmluZChudWxsLGUpOm51bGx9ZnVuY3Rpb24gYXMoZSxuKXt2YXIgdD1VaTtyZXR1cm4gZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYoZHMoZSxuKS5mbGFnc3w9MjU2KSwyIT09KGU9dnMoZSxuKSkmJihuPUFpLEFpPXQsbnVsbCE9PW4mJm9zKG4pKSxlfWZ1bmN0aW9uIG9zKGUpe251bGw9PT1BaT9BaT1lOkFpLnB1c2guYXBwbHkoQWksZSl9ZnVuY3Rpb24gdXMoZSxuKXtmb3IobiY9fklpLG4mPX5EaSxlLnN1c3BlbmRlZExhbmVzfD1uLGUucGluZ2VkTGFuZXMmPX5uLGU9ZS5leHBpcmF0aW9uVGltZXM7MDxuOyl7dmFyIHQ9MzEtb24obikscj0xPDx0O2VbdF09LTEsbiY9fnJ9fWZ1bmN0aW9uIGlzKGUpe2lmKDAhPT0oNiZQaSkpdGhyb3cgRXJyb3IoYSgzMjcpKTtTcygpO3ZhciBuPXBuKGUsMCk7aWYoMD09PSgxJm4pKXJldHVybiBycyhlLEdlKCkpLG51bGw7dmFyIHQ9dnMoZSxuKTtpZigwIT09ZS50YWcmJjI9PT10KXt2YXIgcj1obihlKTswIT09ciYmKG49cix0PWFzKGUscikpfWlmKDE9PT10KXRocm93IHQ9amksZHMoZSwwKSx1cyhlLG4pLHJzKGUsR2UoKSksdDtpZig2PT09dCl0aHJvdyBFcnJvcihhKDM0NSkpO3JldHVybiBlLmZpbmlzaGVkV29yaz1lLmN1cnJlbnQuYWx0ZXJuYXRlLGUuZmluaXNoZWRMYW5lcz1uLGtzKGUsQWksJGkpLHJzKGUsR2UoKSksbnVsbH1mdW5jdGlvbiBzcyhlLG4pe3ZhciB0PVBpO1BpfD0xO3RyeXtyZXR1cm4gZShuKX1maW5hbGx5ezA9PT0oUGk9dCkmJihWaT1HZSgpKzUwMCxVbCYmVmwoKSl9fWZ1bmN0aW9uIGNzKGUpe251bGwhPT1LaSYmMD09PUtpLnRhZyYmMD09PSg2JlBpKSYmU3MoKTt2YXIgbj1QaTtQaXw9MTt2YXIgdD1OaS50cmFuc2l0aW9uLHI9d247dHJ5e2lmKE5pLnRyYW5zaXRpb249bnVsbCx3bj0xLGUpcmV0dXJuIGUoKX1maW5hbGx5e3duPXIsTmkudHJhbnNpdGlvbj10LDA9PT0oNiYoUGk9bikpJiZWbCgpfX1mdW5jdGlvbiBmcygpe09pPU1pLmN1cnJlbnQsQ2woTWkpfWZ1bmN0aW9uIGRzKGUsbil7ZS5maW5pc2hlZFdvcms9bnVsbCxlLmZpbmlzaGVkTGFuZXM9MDt2YXIgdD1lLnRpbWVvdXRIYW5kbGU7aWYoLTEhPT10JiYoZS50aW1lb3V0SGFuZGxlPS0xLGxsKHQpKSxudWxsIT09VGkpZm9yKHQ9VGkucmV0dXJuO251bGwhPT10Oyl7dmFyIHI9dDtzd2l0Y2gobmEociksci50YWcpe2Nhc2UgMTpudWxsIT09KHI9ci50eXBlLmNoaWxkQ29udGV4dFR5cGVzKSYmdm9pZCAwIT09ciYmTWwoKTticmVhaztjYXNlIDM6bG8oKSxDbCh6bCksQ2woUGwpLGNvKCk7YnJlYWs7Y2FzZSA1Om9vKHIpO2JyZWFrO2Nhc2UgNDpsbygpO2JyZWFrO2Nhc2UgMTM6Y2FzZSAxOTpDbCh1byk7YnJlYWs7Y2FzZSAxMDpTYShyLnR5cGUuX2NvbnRleHQpO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpmcygpfXQ9dC5yZXR1cm59aWYoemk9ZSxUaT1lPU1zKGUuY3VycmVudCxudWxsKSxMaT1PaT1uLFJpPTAsamk9bnVsbCxJaT1EaT1GaT0wLEFpPVVpPW51bGwsbnVsbCE9PV9hKXtmb3Iobj0wO248X2EubGVuZ3RoO24rKylpZihudWxsIT09KHI9KHQ9X2Fbbl0pLmludGVybGVhdmVkKSl7dC5pbnRlcmxlYXZlZD1udWxsO3ZhciBsPXIubmV4dCxhPXQucGVuZGluZztpZihudWxsIT09YSl7dmFyIG89YS5uZXh0O2EubmV4dD1sLHIubmV4dD1vfXQucGVuZGluZz1yfV9hPW51bGx9cmV0dXJuIGV9ZnVuY3Rpb24gcHMoZSxuKXtmb3IoOzspe3ZhciB0PVRpO3RyeXtpZihrYSgpLGZvLmN1cnJlbnQ9b3UseW8pe2Zvcih2YXIgcj1oby5tZW1vaXplZFN0YXRlO251bGwhPT1yOyl7dmFyIGw9ci5xdWV1ZTtudWxsIT09bCYmKGwucGVuZGluZz1udWxsKSxyPXIubmV4dH15bz0hMX1pZihtbz0wLGdvPXZvPWhvPW51bGwsYm89ITEsd289MCxfaS5jdXJyZW50PW51bGwsbnVsbD09PXR8fG51bGw9PT10LnJldHVybil7Umk9MSxqaT1uLFRpPW51bGw7YnJlYWt9ZTp7dmFyIG89ZSx1PXQucmV0dXJuLGk9dCxzPW47aWYobj1MaSxpLmZsYWdzfD0zMjc2OCxudWxsIT09cyYmIm9iamVjdCI9PT10eXBlb2YgcyYmImZ1bmN0aW9uIj09PXR5cGVvZiBzLnRoZW4pe3ZhciBjPXMsZj1pLGQ9Zi50YWc7aWYoMD09PSgxJmYubW9kZSkmJigwPT09ZHx8MTE9PT1kfHwxNT09PWQpKXt2YXIgcD1mLmFsdGVybmF0ZTtwPyhmLnVwZGF0ZVF1ZXVlPXAudXBkYXRlUXVldWUsZi5tZW1vaXplZFN0YXRlPXAubWVtb2l6ZWRTdGF0ZSxmLmxhbmVzPXAubGFuZXMpOihmLnVwZGF0ZVF1ZXVlPW51bGwsZi5tZW1vaXplZFN0YXRlPW51bGwpfXZhciBtPWd1KHUpO2lmKG51bGwhPT1tKXttLmZsYWdzJj0tMjU3LHl1KG0sdSxpLDAsbiksMSZtLm1vZGUmJnZ1KG8sYyxuKSxzPWM7dmFyIGg9KG49bSkudXBkYXRlUXVldWU7aWYobnVsbD09PWgpe3ZhciB2PW5ldyBTZXQ7di5hZGQocyksbi51cGRhdGVRdWV1ZT12fWVsc2UgaC5hZGQocyk7YnJlYWsgZX1pZigwPT09KDEmbikpe3Z1KG8sYyxuKSxocygpO2JyZWFrIGV9cz1FcnJvcihhKDQyNikpfWVsc2UgaWYobGEmJjEmaS5tb2RlKXt2YXIgZz1ndSh1KTtpZihudWxsIT09Zyl7MD09PSg2NTUzNiZnLmZsYWdzKSYmKGcuZmxhZ3N8PTI1NikseXUoZyx1LGksMCxuKSxtYShjdShzLGkpKTticmVhayBlfX1vPXM9Y3UocyxpKSw0IT09UmkmJihSaT0yKSxudWxsPT09VWk/VWk9W29dOlVpLnB1c2gobyksbz11O2Rve3N3aXRjaChvLnRhZyl7Y2FzZSAzOm8uZmxhZ3N8PTY1NTM2LG4mPS1uLG8ubGFuZXN8PW4sRmEobyxtdSgwLHMsbikpO2JyZWFrIGU7Y2FzZSAxOmk9czt2YXIgeT1vLnR5cGUsYj1vLnN0YXRlTm9kZTtpZigwPT09KDEyOCZvLmZsYWdzKSYmKCJmdW5jdGlvbiI9PT10eXBlb2YgeS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT1iJiYiZnVuY3Rpb24iPT09dHlwZW9mIGIuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09UWl8fCFRaS5oYXMoYikpKSl7by5mbGFnc3w9NjU1MzYsbiY9LW4sby5sYW5lc3w9bixGYShvLGh1KG8saSxuKSk7YnJlYWsgZX19bz1vLnJldHVybn13aGlsZShudWxsIT09byl9d3ModCl9Y2F0Y2godyl7bj13LFRpPT09dCYmbnVsbCE9PXQmJihUaT10PXQucmV0dXJuKTtjb250aW51ZX1icmVha319ZnVuY3Rpb24gbXMoKXt2YXIgZT1DaS5jdXJyZW50O3JldHVybiBDaS5jdXJyZW50PW91LG51bGw9PT1lP291OmV9ZnVuY3Rpb24gaHMoKXswIT09UmkmJjMhPT1SaSYmMiE9PVJpfHwoUmk9NCksbnVsbD09PXppfHwwPT09KDI2ODQzNTQ1NSZGaSkmJjA9PT0oMjY4NDM1NDU1JkRpKXx8dXMoemksTGkpfWZ1bmN0aW9uIHZzKGUsbil7dmFyIHQ9UGk7UGl8PTI7dmFyIHI9bXMoKTtmb3Ioemk9PT1lJiZMaT09PW58fCgkaT1udWxsLGRzKGUsbikpOzspdHJ5e2dzKCk7YnJlYWt9Y2F0Y2gobCl7cHMoZSxsKX1pZihrYSgpLFBpPXQsQ2kuY3VycmVudD1yLG51bGwhPT1UaSl0aHJvdyBFcnJvcihhKDI2MSkpO3JldHVybiB6aT1udWxsLExpPTAsUml9ZnVuY3Rpb24gZ3MoKXtmb3IoO251bGwhPT1UaTspYnMoVGkpfWZ1bmN0aW9uIHlzKCl7Zm9yKDtudWxsIT09VGkmJiFZZSgpOylicyhUaSl9ZnVuY3Rpb24gYnMoZSl7dmFyIG49eGkoZS5hbHRlcm5hdGUsZSxPaSk7ZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLG51bGw9PT1uP3dzKGUpOlRpPW4sX2kuY3VycmVudD1udWxsfWZ1bmN0aW9uIHdzKGUpe3ZhciBuPWU7ZG97dmFyIHQ9bi5hbHRlcm5hdGU7aWYoZT1uLnJldHVybiwwPT09KDMyNzY4Jm4uZmxhZ3MpKXtpZihudWxsIT09KHQ9cXUodCxuLE9pKSkpcmV0dXJuIHZvaWQoVGk9dCl9ZWxzZXtpZihudWxsIT09KHQ9S3UodCxuKSkpcmV0dXJuIHQuZmxhZ3MmPTMyNzY3LHZvaWQoVGk9dCk7aWYobnVsbD09PWUpcmV0dXJuIFJpPTYsdm9pZChUaT1udWxsKTtlLmZsYWdzfD0zMjc2OCxlLnN1YnRyZWVGbGFncz0wLGUuZGVsZXRpb25zPW51bGx9aWYobnVsbCE9PShuPW4uc2libGluZykpcmV0dXJuIHZvaWQoVGk9bik7VGk9bj1lfXdoaWxlKG51bGwhPT1uKTswPT09UmkmJihSaT01KX1mdW5jdGlvbiBrcyhlLG4sdCl7dmFyIHI9d24sbD1OaS50cmFuc2l0aW9uO3RyeXtOaS50cmFuc2l0aW9uPW51bGwsd249MSxmdW5jdGlvbihlLG4sdCxyKXtkb3tTcygpfXdoaWxlKG51bGwhPT1LaSk7aWYoMCE9PSg2JlBpKSl0aHJvdyBFcnJvcihhKDMyNykpO3Q9ZS5maW5pc2hlZFdvcms7dmFyIGw9ZS5maW5pc2hlZExhbmVzO2lmKG51bGw9PT10KXJldHVybiBudWxsO2lmKGUuZmluaXNoZWRXb3JrPW51bGwsZS5maW5pc2hlZExhbmVzPTAsdD09PWUuY3VycmVudCl0aHJvdyBFcnJvcihhKDE3NykpO2UuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTA7dmFyIG89dC5sYW5lc3x0LmNoaWxkTGFuZXM7aWYoZnVuY3Rpb24oZSxuKXt2YXIgdD1lLnBlbmRpbmdMYW5lcyZ+bjtlLnBlbmRpbmdMYW5lcz1uLGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTAsZS5leHBpcmVkTGFuZXMmPW4sZS5tdXRhYmxlUmVhZExhbmVzJj1uLGUuZW50YW5nbGVkTGFuZXMmPW4sbj1lLmVudGFuZ2xlbWVudHM7dmFyIHI9ZS5ldmVudFRpbWVzO2ZvcihlPWUuZXhwaXJhdGlvblRpbWVzOzA8dDspe3ZhciBsPTMxLW9uKHQpLGE9MTw8bDtuW2xdPTAscltsXT0tMSxlW2xdPS0xLHQmPX5hfX0oZSxvKSxlPT09emkmJihUaT16aT1udWxsLExpPTApLDA9PT0oMjA2NCZ0LnN1YnRyZWVGbGFncykmJjA9PT0oMjA2NCZ0LmZsYWdzKXx8cWl8fChxaT0hMCx6cyhubiwoZnVuY3Rpb24oKXtyZXR1cm4gU3MoKSxudWxsfSkpKSxvPTAhPT0oMTU5OTAmdC5mbGFncyksMCE9PSgxNTk5MCZ0LnN1YnRyZWVGbGFncyl8fG8pe289TmkudHJhbnNpdGlvbixOaS50cmFuc2l0aW9uPW51bGw7dmFyIHU9d247d249MTt2YXIgaT1QaTtQaXw9NCxfaS5jdXJyZW50PW51bGwsZnVuY3Rpb24oZSxuKXtpZihlbD1XbixwcihlPWRyKCkpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl2YXIgdD17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7dmFyIHI9KHQ9KHQ9ZS5vd25lckRvY3VtZW50KSYmdC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24mJnQuZ2V0U2VsZWN0aW9uKCk7aWYociYmMCE9PXIucmFuZ2VDb3VudCl7dD1yLmFuY2hvck5vZGU7dmFyIGw9ci5hbmNob3JPZmZzZXQsbz1yLmZvY3VzTm9kZTtyPXIuZm9jdXNPZmZzZXQ7dHJ5e3Qubm9kZVR5cGUsby5ub2RlVHlwZX1jYXRjaChrKXt0PW51bGw7YnJlYWsgZX12YXIgdT0wLGk9LTEscz0tMSxjPTAsZj0wLGQ9ZSxwPW51bGw7bjpmb3IoOzspe2Zvcih2YXIgbTtkIT09dHx8MCE9PWwmJjMhPT1kLm5vZGVUeXBlfHwoaT11K2wpLGQhPT1vfHwwIT09ciYmMyE9PWQubm9kZVR5cGV8fChzPXUrciksMz09PWQubm9kZVR5cGUmJih1Kz1kLm5vZGVWYWx1ZS5sZW5ndGgpLG51bGwhPT0obT1kLmZpcnN0Q2hpbGQpOylwPWQsZD1tO2Zvcig7Oyl7aWYoZD09PWUpYnJlYWsgbjtpZihwPT09dCYmKytjPT09bCYmKGk9dSkscD09PW8mJisrZj09PXImJihzPXUpLG51bGwhPT0obT1kLm5leHRTaWJsaW5nKSlicmVhaztwPShkPXApLnBhcmVudE5vZGV9ZD1tfXQ9LTE9PT1pfHwtMT09PXM/bnVsbDp7c3RhcnQ6aSxlbmQ6c319ZWxzZSB0PW51bGx9dD10fHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSB0PW51bGw7Zm9yKG5sPXtmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnR9LFduPSExLEp1PW47bnVsbCE9PUp1OylpZihlPShuPUp1KS5jaGlsZCwwIT09KDEwMjgmbi5zdWJ0cmVlRmxhZ3MpJiZudWxsIT09ZSllLnJldHVybj1uLEp1PWU7ZWxzZSBmb3IoO251bGwhPT1KdTspe249SnU7dHJ5e3ZhciBoPW4uYWx0ZXJuYXRlO2lmKDAhPT0oMTAyNCZuLmZsYWdzKSlzd2l0Y2gobi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztjYXNlIDE6aWYobnVsbCE9PWgpe3ZhciB2PWgubWVtb2l6ZWRQcm9wcyxnPWgubWVtb2l6ZWRTdGF0ZSx5PW4uc3RhdGVOb2RlLGI9eS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShuLmVsZW1lbnRUeXBlPT09bi50eXBlP3Y6dmEobi50eXBlLHYpLGcpO3kuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9Yn1icmVhaztjYXNlIDM6dmFyIHc9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsxPT09dy5ub2RlVHlwZT93LnRleHRDb250ZW50PSIiOjk9PT13Lm5vZGVUeXBlJiZ3LmRvY3VtZW50RWxlbWVudCYmdy5yZW1vdmVDaGlsZCh3LmRvY3VtZW50RWxlbWVudCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihhKDE2MykpfX1jYXRjaChrKXtFcyhuLG4ucmV0dXJuLGspfWlmKG51bGwhPT0oZT1uLnNpYmxpbmcpKXtlLnJldHVybj1uLnJldHVybixKdT1lO2JyZWFrfUp1PW4ucmV0dXJufWg9bmksbmk9ITF9KGUsdCksdmkodCxlKSxtcihubCksV249ISFlbCxubD1lbD1udWxsLGUuY3VycmVudD10LHlpKHQsZSxsKSxYZSgpLFBpPWksd249dSxOaS50cmFuc2l0aW9uPW99ZWxzZSBlLmN1cnJlbnQ9dDtpZihxaSYmKHFpPSExLEtpPWUsWWk9bCksbz1lLnBlbmRpbmdMYW5lcywwPT09byYmKFFpPW51bGwpLGZ1bmN0aW9uKGUpe2lmKGFuJiYiZnVuY3Rpb24iPT09dHlwZW9mIGFuLm9uQ29tbWl0RmliZXJSb290KXRyeXthbi5vbkNvbW1pdEZpYmVyUm9vdChsbixlLHZvaWQgMCwxMjg9PT0oMTI4JmUuY3VycmVudC5mbGFncykpfWNhdGNoKG4pe319KHQuc3RhdGVOb2RlKSxycyhlLEdlKCkpLG51bGwhPT1uKWZvcihyPWUub25SZWNvdmVyYWJsZUVycm9yLHQ9MDt0PG4ubGVuZ3RoO3QrKylyKChsPW5bdF0pLnZhbHVlLHtjb21wb25lbnRTdGFjazpsLnN0YWNrLGRpZ2VzdDpsLmRpZ2VzdH0pO2lmKEhpKXRocm93IEhpPSExLGU9V2ksV2k9bnVsbCxlOzAhPT0oMSZZaSkmJjAhPT1lLnRhZyYmU3MoKSxvPWUucGVuZGluZ0xhbmVzLDAhPT0oMSZvKT9lPT09R2k/WGkrKzooWGk9MCxHaT1lKTpYaT0wLFZsKCl9KGUsbix0LHIpfWZpbmFsbHl7TmkudHJhbnNpdGlvbj1sLHduPXJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU3MoKXtpZihudWxsIT09S2kpe3ZhciBlPWtuKFlpKSxuPU5pLnRyYW5zaXRpb24sdD13bjt0cnl7aWYoTmkudHJhbnNpdGlvbj1udWxsLHduPTE2PmU/MTY6ZSxudWxsPT09S2kpdmFyIHI9ITE7ZWxzZXtpZihlPUtpLEtpPW51bGwsWWk9MCwwIT09KDYmUGkpKXRocm93IEVycm9yKGEoMzMxKSk7dmFyIGw9UGk7Zm9yKFBpfD00LEp1PWUuY3VycmVudDtudWxsIT09SnU7KXt2YXIgbz1KdSx1PW8uY2hpbGQ7aWYoMCE9PSgxNiZKdS5mbGFncykpe3ZhciBpPW8uZGVsZXRpb25zO2lmKG51bGwhPT1pKXtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtmb3IoSnU9YztudWxsIT09SnU7KXt2YXIgZj1KdTtzd2l0Y2goZi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dGkoOCxmLG8pfXZhciBkPWYuY2hpbGQ7aWYobnVsbCE9PWQpZC5yZXR1cm49ZixKdT1kO2Vsc2UgZm9yKDtudWxsIT09SnU7KXt2YXIgcD0oZj1KdSkuc2libGluZyxtPWYucmV0dXJuO2lmKGFpKGYpLGY9PT1jKXtKdT1udWxsO2JyZWFrfWlmKG51bGwhPT1wKXtwLnJldHVybj1tLEp1PXA7YnJlYWt9SnU9bX19fXZhciBoPW8uYWx0ZXJuYXRlO2lmKG51bGwhPT1oKXt2YXIgdj1oLmNoaWxkO2lmKG51bGwhPT12KXtoLmNoaWxkPW51bGw7ZG97dmFyIGc9di5zaWJsaW5nO3Yuc2libGluZz1udWxsLHY9Z313aGlsZShudWxsIT09dil9fUp1PW99fWlmKDAhPT0oMjA2NCZvLnN1YnRyZWVGbGFncykmJm51bGwhPT11KXUucmV0dXJuPW8sSnU9dTtlbHNlIGU6Zm9yKDtudWxsIT09SnU7KXtpZigwIT09KDIwNDgmKG89SnUpLmZsYWdzKSlzd2l0Y2goby50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dGkoOSxvLG8ucmV0dXJuKX12YXIgeT1vLnNpYmxpbmc7aWYobnVsbCE9PXkpe3kucmV0dXJuPW8ucmV0dXJuLEp1PXk7YnJlYWsgZX1KdT1vLnJldHVybn19dmFyIGI9ZS5jdXJyZW50O2ZvcihKdT1iO251bGwhPT1KdTspe3ZhciB3PSh1PUp1KS5jaGlsZDtpZigwIT09KDIwNjQmdS5zdWJ0cmVlRmxhZ3MpJiZudWxsIT09dyl3LnJldHVybj11LEp1PXc7ZWxzZSBlOmZvcih1PWI7bnVsbCE9PUp1Oyl7aWYoMCE9PSgyMDQ4JihpPUp1KS5mbGFncykpdHJ5e3N3aXRjaChpLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpyaSg5LGkpfX1jYXRjaChTKXtFcyhpLGkucmV0dXJuLFMpfWlmKGk9PT11KXtKdT1udWxsO2JyZWFrIGV9dmFyIGs9aS5zaWJsaW5nO2lmKG51bGwhPT1rKXtrLnJldHVybj1pLnJldHVybixKdT1rO2JyZWFrIGV9SnU9aS5yZXR1cm59fWlmKFBpPWwsVmwoKSxhbiYmImZ1bmN0aW9uIj09PXR5cGVvZiBhbi5vblBvc3RDb21taXRGaWJlclJvb3QpdHJ5e2FuLm9uUG9zdENvbW1pdEZpYmVyUm9vdChsbixlKX1jYXRjaChTKXt9cj0hMH1yZXR1cm4gcn1maW5hbGx5e3duPXQsTmkudHJhbnNpdGlvbj1ufX1yZXR1cm4hMX1mdW5jdGlvbiB4cyhlLG4sdCl7ZT1SYShlLG49bXUoMCxuPWN1KHQsbiksMSksMSksbj1lcygpLG51bGwhPT1lJiYoeW4oZSwxLG4pLHJzKGUsbikpfWZ1bmN0aW9uIEVzKGUsbix0KXtpZigzPT09ZS50YWcpeHMoZSxlLHQpO2Vsc2UgZm9yKDtudWxsIT09bjspe2lmKDM9PT1uLnRhZyl7eHMobixlLHQpO2JyZWFrfWlmKDE9PT1uLnRhZyl7dmFyIHI9bi5zdGF0ZU5vZGU7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBuLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHwiZnVuY3Rpb24iPT09dHlwZW9mIHIuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09UWl8fCFRaS5oYXMocikpKXtuPVJhKG4sZT1odShuLGU9Y3UodCxlKSwxKSwxKSxlPWVzKCksbnVsbCE9PW4mJih5bihuLDEsZSkscnMobixlKSk7YnJlYWt9fW49bi5yZXR1cm59fWZ1bmN0aW9uIENzKGUsbix0KXt2YXIgcj1lLnBpbmdDYWNoZTtudWxsIT09ciYmci5kZWxldGUobiksbj1lcygpLGUucGluZ2VkTGFuZXN8PWUuc3VzcGVuZGVkTGFuZXMmdCx6aT09PWUmJihMaSZ0KT09PXQmJig0PT09Uml8fDM9PT1SaSYmKDEzMDAyMzQyNCZMaSk9PT1MaSYmNTAwPkdlKCktQmk/ZHMoZSwwKTpJaXw9dCkscnMoZSxuKX1mdW5jdGlvbiBfcyhlLG4pezA9PT1uJiYoMD09PSgxJmUubW9kZSk/bj0xOihuPWZuLDA9PT0oMTMwMDIzNDI0Jihmbjw8PTEpKSYmKGZuPTQxOTQzMDQpKSk7dmFyIHQ9ZXMoKTtudWxsIT09KGU9emEoZSxuKSkmJih5bihlLG4sdCkscnMoZSx0KSl9ZnVuY3Rpb24gTnMoZSl7dmFyIG49ZS5tZW1vaXplZFN0YXRlLHQ9MDtudWxsIT09biYmKHQ9bi5yZXRyeUxhbmUpLF9zKGUsdCl9ZnVuY3Rpb24gUHMoZSxuKXt2YXIgdD0wO3N3aXRjaChlLnRhZyl7Y2FzZSAxMzp2YXIgcj1lLnN0YXRlTm9kZSxsPWUubWVtb2l6ZWRTdGF0ZTtudWxsIT09bCYmKHQ9bC5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6cj1lLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGEoMzE0KSl9bnVsbCE9PXImJnIuZGVsZXRlKG4pLF9zKGUsdCl9ZnVuY3Rpb24genMoZSxuKXtyZXR1cm4gcWUoZSxuKX1mdW5jdGlvbiBUcyhlLG4sdCxyKXt0aGlzLnRhZz1lLHRoaXMua2V5PXQsdGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbCx0aGlzLmluZGV4PTAsdGhpcy5yZWY9bnVsbCx0aGlzLnBlbmRpbmdQcm9wcz1uLHRoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsLHRoaXMubW9kZT1yLHRoaXMuc3VidHJlZUZsYWdzPXRoaXMuZmxhZ3M9MCx0aGlzLmRlbGV0aW9ucz1udWxsLHRoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTAsdGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBMcyhlLG4sdCxyKXtyZXR1cm4gbmV3IFRzKGUsbix0LHIpfWZ1bmN0aW9uIE9zKGUpe3JldHVybiEoIShlPWUucHJvdG90eXBlKXx8IWUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gTXMoZSxuKXt2YXIgdD1lLmFsdGVybmF0ZTtyZXR1cm4gbnVsbD09PXQ/KCh0PUxzKGUudGFnLG4sZS5rZXksZS5tb2RlKSkuZWxlbWVudFR5cGU9ZS5lbGVtZW50VHlwZSx0LnR5cGU9ZS50eXBlLHQuc3RhdGVOb2RlPWUuc3RhdGVOb2RlLHQuYWx0ZXJuYXRlPWUsZS5hbHRlcm5hdGU9dCk6KHQucGVuZGluZ1Byb3BzPW4sdC50eXBlPWUudHlwZSx0LmZsYWdzPTAsdC5zdWJ0cmVlRmxhZ3M9MCx0LmRlbGV0aW9ucz1udWxsKSx0LmZsYWdzPTE0NjgwMDY0JmUuZmxhZ3MsdC5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyx0LmxhbmVzPWUubGFuZXMsdC5jaGlsZD1lLmNoaWxkLHQubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsdC5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSx0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsbj1lLmRlcGVuZGVuY2llcyx0LmRlcGVuZGVuY2llcz1udWxsPT09bj9udWxsOntsYW5lczpuLmxhbmVzLGZpcnN0Q29udGV4dDpuLmZpcnN0Q29udGV4dH0sdC5zaWJsaW5nPWUuc2libGluZyx0LmluZGV4PWUuaW5kZXgsdC5yZWY9ZS5yZWYsdH1mdW5jdGlvbiBScyhlLG4sdCxyLGwsbyl7dmFyIHU9MjtpZihyPWUsImZ1bmN0aW9uIj09PXR5cGVvZiBlKU9zKGUpJiYodT0xKTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGUpdT01O2Vsc2UgZTpzd2l0Y2goZSl7Y2FzZSB4OnJldHVybiBqcyh0LmNoaWxkcmVuLGwsbyxuKTtjYXNlIEU6dT04LGx8PTg7YnJlYWs7Y2FzZSBDOnJldHVybihlPUxzKDEyLHQsbiwyfGwpKS5lbGVtZW50VHlwZT1DLGUubGFuZXM9byxlO2Nhc2UgejpyZXR1cm4oZT1McygxMyx0LG4sbCkpLmVsZW1lbnRUeXBlPXosZS5sYW5lcz1vLGU7Y2FzZSBUOnJldHVybihlPUxzKDE5LHQsbixsKSkuZWxlbWVudFR5cGU9VCxlLmxhbmVzPW8sZTtjYXNlIE06cmV0dXJuIEZzKHQsbCxvLG4pO2RlZmF1bHQ6aWYoIm9iamVjdCI9PT10eXBlb2YgZSYmbnVsbCE9PWUpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgXzp1PTEwO2JyZWFrIGU7Y2FzZSBOOnU9OTticmVhayBlO2Nhc2UgUDp1PTExO2JyZWFrIGU7Y2FzZSBMOnU9MTQ7YnJlYWsgZTtjYXNlIE86dT0xNixyPW51bGw7YnJlYWsgZX10aHJvdyBFcnJvcihhKDEzMCxudWxsPT1lP2U6dHlwZW9mIGUsIiIpKX1yZXR1cm4obj1Mcyh1LHQsbixsKSkuZWxlbWVudFR5cGU9ZSxuLnR5cGU9cixuLmxhbmVzPW8sbn1mdW5jdGlvbiBqcyhlLG4sdCxyKXtyZXR1cm4oZT1Mcyg3LGUscixuKSkubGFuZXM9dCxlfWZ1bmN0aW9uIEZzKGUsbix0LHIpe3JldHVybihlPUxzKDIyLGUscixuKSkuZWxlbWVudFR5cGU9TSxlLmxhbmVzPXQsZS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfSxlfWZ1bmN0aW9uIERzKGUsbix0KXtyZXR1cm4oZT1Mcyg2LGUsbnVsbCxuKSkubGFuZXM9dCxlfWZ1bmN0aW9uIElzKGUsbix0KXtyZXR1cm4obj1Mcyg0LG51bGwhPT1lLmNoaWxkcmVuP2UuY2hpbGRyZW46W10sZS5rZXksbikpLmxhbmVzPXQsbi5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86ZS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmUuaW1wbGVtZW50YXRpb259LG59ZnVuY3Rpb24gVXMoZSxuLHQscixsKXt0aGlzLnRhZz1uLHRoaXMuY29udGFpbmVySW5mbz1lLHRoaXMuZmluaXNoZWRXb3JrPXRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsLHRoaXMudGltZW91dEhhbmRsZT0tMSx0aGlzLmNhbGxiYWNrTm9kZT10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD1udWxsLHRoaXMuY2FsbGJhY2tQcmlvcml0eT0wLHRoaXMuZXZlbnRUaW1lcz1nbigwKSx0aGlzLmV4cGlyYXRpb25UaW1lcz1nbigtMSksdGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wLHRoaXMuZW50YW5nbGVtZW50cz1nbigwKSx0aGlzLmlkZW50aWZpZXJQcmVmaXg9cix0aGlzLm9uUmVjb3ZlcmFibGVFcnJvcj1sLHRoaXMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1udWxsfWZ1bmN0aW9uIEFzKGUsbix0LHIsbCxhLG8sdSxpKXtyZXR1cm4gZT1uZXcgVXMoZSxuLHQsdSxpKSwxPT09bj8obj0xLCEwPT09YSYmKG58PTgpKTpuPTAsYT1McygzLG51bGwsbnVsbCxuKSxlLmN1cnJlbnQ9YSxhLnN0YXRlTm9kZT1lLGEubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpyLGlzRGVoeWRyYXRlZDp0LGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9LExhKGEpLGV9ZnVuY3Rpb24gQnMoZSxuLHQpe3ZhciByPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjpTLGtleTpudWxsPT1yP251bGw6IiIrcixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86bixpbXBsZW1lbnRhdGlvbjp0fX1mdW5jdGlvbiBWcyhlKXtpZighZSlyZXR1cm4gTmw7ZTp7aWYoVmUoZT1lLl9yZWFjdEludGVybmFscykhPT1lfHwxIT09ZS50YWcpdGhyb3cgRXJyb3IoYSgxNzApKTt2YXIgbj1lO2Rve3N3aXRjaChuLnRhZyl7Y2FzZSAzOm49bi5zdGF0ZU5vZGUuY29udGV4dDticmVhayBlO2Nhc2UgMTppZihPbChuLnR5cGUpKXtuPW4uc3RhdGVOb2RlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0O2JyZWFrIGV9fW49bi5yZXR1cm59d2hpbGUobnVsbCE9PW4pO3Rocm93IEVycm9yKGEoMTcxKSl9aWYoMT09PWUudGFnKXt2YXIgdD1lLnR5cGU7aWYoT2wodCkpcmV0dXJuIGpsKGUsdCxuKX1yZXR1cm4gbn1mdW5jdGlvbiAkcyhlLG4sdCxyLGwsYSxvLHUsaSl7cmV0dXJuKGU9QXModCxyLCEwLGUsMCxhLDAsdSxpKSkuY29udGV4dD1WcyhudWxsKSx0PWUuY3VycmVudCwoYT1NYShyPWVzKCksbD1ucyh0KSkpLmNhbGxiYWNrPXZvaWQgMCE9PW4mJm51bGwhPT1uP246bnVsbCxSYSh0LGEsbCksZS5jdXJyZW50LmxhbmVzPWwseW4oZSxsLHIpLHJzKGUsciksZX1mdW5jdGlvbiBIcyhlLG4sdCxyKXt2YXIgbD1uLmN1cnJlbnQsYT1lcygpLG89bnMobCk7cmV0dXJuIHQ9VnModCksbnVsbD09PW4uY29udGV4dD9uLmNvbnRleHQ9dDpuLnBlbmRpbmdDb250ZXh0PXQsKG49TWEoYSxvKSkucGF5bG9hZD17ZWxlbWVudDplfSxudWxsIT09KHI9dm9pZCAwPT09cj9udWxsOnIpJiYobi5jYWxsYmFjaz1yKSxudWxsIT09KGU9UmEobCxuLG8pKSYmKHRzKGUsbCxvLGEpLGphKGUsbCxvKSksb31mdW5jdGlvbiBXcyhlKXtyZXR1cm4oZT1lLmN1cnJlbnQpLmNoaWxkPyhlLmNoaWxkLnRhZyxlLmNoaWxkLnN0YXRlTm9kZSk6bnVsbH1mdW5jdGlvbiBRcyhlLG4pe2lmKG51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpJiZudWxsIT09ZS5kZWh5ZHJhdGVkKXt2YXIgdD1lLnJldHJ5TGFuZTtlLnJldHJ5TGFuZT0wIT09dCYmdDxuP3Q6bn19ZnVuY3Rpb24gcXMoZSxuKXtRcyhlLG4pLChlPWUuYWx0ZXJuYXRlKSYmUXMoZSxuKX14aT1mdW5jdGlvbihlLG4sdCl7aWYobnVsbCE9PWUpaWYoZS5tZW1vaXplZFByb3BzIT09bi5wZW5kaW5nUHJvcHN8fHpsLmN1cnJlbnQpd3U9ITA7ZWxzZXtpZigwPT09KGUubGFuZXMmdCkmJjA9PT0oMTI4Jm4uZmxhZ3MpKXJldHVybiB3dT0hMSxmdW5jdGlvbihlLG4sdCl7c3dpdGNoKG4udGFnKXtjYXNlIDM6VHUobikscGEoKTticmVhaztjYXNlIDU6YW8obik7YnJlYWs7Y2FzZSAxOk9sKG4udHlwZSkmJkZsKG4pO2JyZWFrO2Nhc2UgNDpybyhuLG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIHI9bi50eXBlLl9jb250ZXh0LGw9bi5tZW1vaXplZFByb3BzLnZhbHVlO19sKGdhLHIuX2N1cnJlbnRWYWx1ZSksci5fY3VycmVudFZhbHVlPWw7YnJlYWs7Y2FzZSAxMzppZihudWxsIT09KHI9bi5tZW1vaXplZFN0YXRlKSlyZXR1cm4gbnVsbCE9PXIuZGVoeWRyYXRlZD8oX2wodW8sMSZ1by5jdXJyZW50KSxuLmZsYWdzfD0xMjgsbnVsbCk6MCE9PSh0Jm4uY2hpbGQuY2hpbGRMYW5lcyk/RHUoZSxuLHQpOihfbCh1bywxJnVvLmN1cnJlbnQpLG51bGwhPT0oZT1IdShlLG4sdCkpP2Uuc2libGluZzpudWxsKTtfbCh1bywxJnVvLmN1cnJlbnQpO2JyZWFrO2Nhc2UgMTk6aWYocj0wIT09KHQmbi5jaGlsZExhbmVzKSwwIT09KDEyOCZlLmZsYWdzKSl7aWYocilyZXR1cm4gVnUoZSxuLHQpO24uZmxhZ3N8PTEyOH1pZihudWxsIT09KGw9bi5tZW1vaXplZFN0YXRlKSYmKGwucmVuZGVyaW5nPW51bGwsbC50YWlsPW51bGwsbC5sYXN0RWZmZWN0PW51bGwpLF9sKHVvLHVvLmN1cnJlbnQpLHIpYnJlYWs7cmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBuLmxhbmVzPTAsQ3UoZSxuLHQpfXJldHVybiBIdShlLG4sdCl9KGUsbix0KTt3dT0wIT09KDEzMTA3MiZlLmZsYWdzKX1lbHNlIHd1PSExLGxhJiYwIT09KDEwNDg1NzYmbi5mbGFncykmJlpsKG4sUWwsbi5pbmRleCk7c3dpdGNoKG4ubGFuZXM9MCxuLnRhZyl7Y2FzZSAyOnZhciByPW4udHlwZTskdShlLG4pLGU9bi5wZW5kaW5nUHJvcHM7dmFyIGw9TGwobixQbC5jdXJyZW50KTtFYShuLHQpLGw9RW8obnVsbCxuLHIsZSxsLHQpO3ZhciBvPUNvKCk7cmV0dXJuIG4uZmxhZ3N8PTEsIm9iamVjdCI9PT10eXBlb2YgbCYmbnVsbCE9PWwmJiJmdW5jdGlvbiI9PT10eXBlb2YgbC5yZW5kZXImJnZvaWQgMD09PWwuJCR0eXBlb2Y/KG4udGFnPTEsbi5tZW1vaXplZFN0YXRlPW51bGwsbi51cGRhdGVRdWV1ZT1udWxsLE9sKHIpPyhvPSEwLEZsKG4pKTpvPSExLG4ubWVtb2l6ZWRTdGF0ZT1udWxsIT09bC5zdGF0ZSYmdm9pZCAwIT09bC5zdGF0ZT9sLnN0YXRlOm51bGwsTGEobiksbC51cGRhdGVyPUJhLG4uc3RhdGVOb2RlPWwsbC5fcmVhY3RJbnRlcm5hbHM9bixXYShuLHIsZSx0KSxuPXp1KG51bGwsbixyLCEwLG8sdCkpOihuLnRhZz0wLGxhJiZvJiZlYShuKSxrdShudWxsLG4sbCx0KSxuPW4uY2hpbGQpLG47Y2FzZSAxNjpyPW4uZWxlbWVudFR5cGU7ZTp7c3dpdGNoKCR1KGUsbiksZT1uLnBlbmRpbmdQcm9wcyxyPShsPXIuX2luaXQpKHIuX3BheWxvYWQpLG4udHlwZT1yLGw9bi50YWc9ZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlKXJldHVybiBPcyhlKT8xOjA7aWYodm9pZCAwIT09ZSYmbnVsbCE9PWUpe2lmKChlPWUuJCR0eXBlb2YpPT09UClyZXR1cm4gMTE7aWYoZT09PUwpcmV0dXJuIDE0fXJldHVybiAyfShyKSxlPXZhKHIsZSksbCl7Y2FzZSAwOm49TnUobnVsbCxuLHIsZSx0KTticmVhayBlO2Nhc2UgMTpuPVB1KG51bGwsbixyLGUsdCk7YnJlYWsgZTtjYXNlIDExOm49U3UobnVsbCxuLHIsZSx0KTticmVhayBlO2Nhc2UgMTQ6bj14dShudWxsLG4scix2YShyLnR5cGUsZSksdCk7YnJlYWsgZX10aHJvdyBFcnJvcihhKDMwNixyLCIiKSl9cmV0dXJuIG47Y2FzZSAwOnJldHVybiByPW4udHlwZSxsPW4ucGVuZGluZ1Byb3BzLE51KGUsbixyLGw9bi5lbGVtZW50VHlwZT09PXI/bDp2YShyLGwpLHQpO2Nhc2UgMTpyZXR1cm4gcj1uLnR5cGUsbD1uLnBlbmRpbmdQcm9wcyxQdShlLG4scixsPW4uZWxlbWVudFR5cGU9PT1yP2w6dmEocixsKSx0KTtjYXNlIDM6ZTp7aWYoVHUobiksbnVsbD09PWUpdGhyb3cgRXJyb3IoYSgzODcpKTtyPW4ucGVuZGluZ1Byb3BzLGw9KG89bi5tZW1vaXplZFN0YXRlKS5lbGVtZW50LE9hKGUsbiksRGEobixyLG51bGwsdCk7dmFyIHU9bi5tZW1vaXplZFN0YXRlO2lmKHI9dS5lbGVtZW50LG8uaXNEZWh5ZHJhdGVkKXtpZihvPXtlbGVtZW50OnIsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOnUuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczp1LnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6dS50cmFuc2l0aW9uc30sbi51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9byxuLm1lbW9pemVkU3RhdGU9bywyNTYmbi5mbGFncyl7bj1MdShlLG4scix0LGw9Y3UoRXJyb3IoYSg0MjMpKSxuKSk7YnJlYWsgZX1pZihyIT09bCl7bj1MdShlLG4scix0LGw9Y3UoRXJyb3IoYSg0MjQpKSxuKSk7YnJlYWsgZX1mb3IocmE9c2wobi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx0YT1uLGxhPSEwLGFhPW51bGwsdD1HYShuLG51bGwscix0KSxuLmNoaWxkPXQ7dDspdC5mbGFncz0tMyZ0LmZsYWdzfDQwOTYsdD10LnNpYmxpbmd9ZWxzZXtpZihwYSgpLHI9PT1sKXtuPUh1KGUsbix0KTticmVhayBlfWt1KGUsbixyLHQpfW49bi5jaGlsZH1yZXR1cm4gbjtjYXNlIDU6cmV0dXJuIGFvKG4pLG51bGw9PT1lJiZzYShuKSxyPW4udHlwZSxsPW4ucGVuZGluZ1Byb3BzLG89bnVsbCE9PWU/ZS5tZW1vaXplZFByb3BzOm51bGwsdT1sLmNoaWxkcmVuLHRsKHIsbCk/dT1udWxsOm51bGwhPT1vJiZ0bChyLG8pJiYobi5mbGFnc3w9MzIpLF91KGUsbiksa3UoZSxuLHUsdCksbi5jaGlsZDtjYXNlIDY6cmV0dXJuIG51bGw9PT1lJiZzYShuKSxudWxsO2Nhc2UgMTM6cmV0dXJuIER1KGUsbix0KTtjYXNlIDQ6cmV0dXJuIHJvKG4sbi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykscj1uLnBlbmRpbmdQcm9wcyxudWxsPT09ZT9uLmNoaWxkPVhhKG4sbnVsbCxyLHQpOmt1KGUsbixyLHQpLG4uY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gcj1uLnR5cGUsbD1uLnBlbmRpbmdQcm9wcyxTdShlLG4scixsPW4uZWxlbWVudFR5cGU9PT1yP2w6dmEocixsKSx0KTtjYXNlIDc6cmV0dXJuIGt1KGUsbixuLnBlbmRpbmdQcm9wcyx0KSxuLmNoaWxkO2Nhc2UgODpjYXNlIDEyOnJldHVybiBrdShlLG4sbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sdCksbi5jaGlsZDtjYXNlIDEwOmU6e2lmKHI9bi50eXBlLl9jb250ZXh0LGw9bi5wZW5kaW5nUHJvcHMsbz1uLm1lbW9pemVkUHJvcHMsdT1sLnZhbHVlLF9sKGdhLHIuX2N1cnJlbnRWYWx1ZSksci5fY3VycmVudFZhbHVlPXUsbnVsbCE9PW8paWYodXIoby52YWx1ZSx1KSl7aWYoby5jaGlsZHJlbj09PWwuY2hpbGRyZW4mJiF6bC5jdXJyZW50KXtuPUh1KGUsbix0KTticmVhayBlfX1lbHNlIGZvcihudWxsIT09KG89bi5jaGlsZCkmJihvLnJldHVybj1uKTtudWxsIT09bzspe3ZhciBpPW8uZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1pKXt1PW8uY2hpbGQ7Zm9yKHZhciBzPWkuZmlyc3RDb250ZXh0O251bGwhPT1zOyl7aWYocy5jb250ZXh0PT09cil7aWYoMT09PW8udGFnKXsocz1NYSgtMSx0Ji10KSkudGFnPTI7dmFyIGM9by51cGRhdGVRdWV1ZTtpZihudWxsIT09Yyl7dmFyIGY9KGM9Yy5zaGFyZWQpLnBlbmRpbmc7bnVsbD09PWY/cy5uZXh0PXM6KHMubmV4dD1mLm5leHQsZi5uZXh0PXMpLGMucGVuZGluZz1zfX1vLmxhbmVzfD10LG51bGwhPT0ocz1vLmFsdGVybmF0ZSkmJihzLmxhbmVzfD10KSx4YShvLnJldHVybix0LG4pLGkubGFuZXN8PXQ7YnJlYWt9cz1zLm5leHR9fWVsc2UgaWYoMTA9PT1vLnRhZyl1PW8udHlwZT09PW4udHlwZT9udWxsOm8uY2hpbGQ7ZWxzZSBpZigxOD09PW8udGFnKXtpZihudWxsPT09KHU9by5yZXR1cm4pKXRocm93IEVycm9yKGEoMzQxKSk7dS5sYW5lc3w9dCxudWxsIT09KGk9dS5hbHRlcm5hdGUpJiYoaS5sYW5lc3w9dCkseGEodSx0LG4pLHU9by5zaWJsaW5nfWVsc2UgdT1vLmNoaWxkO2lmKG51bGwhPT11KXUucmV0dXJuPW87ZWxzZSBmb3IodT1vO251bGwhPT11Oyl7aWYodT09PW4pe3U9bnVsbDticmVha31pZihudWxsIT09KG89dS5zaWJsaW5nKSl7by5yZXR1cm49dS5yZXR1cm4sdT1vO2JyZWFrfXU9dS5yZXR1cm59bz11fWt1KGUsbixsLmNoaWxkcmVuLHQpLG49bi5jaGlsZH1yZXR1cm4gbjtjYXNlIDk6cmV0dXJuIGw9bi50eXBlLHI9bi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sRWEobix0KSxyPXIobD1DYShsKSksbi5mbGFnc3w9MSxrdShlLG4scix0KSxuLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGw9dmEocj1uLnR5cGUsbi5wZW5kaW5nUHJvcHMpLHh1KGUsbixyLGw9dmEoci50eXBlLGwpLHQpO2Nhc2UgMTU6cmV0dXJuIEV1KGUsbixuLnR5cGUsbi5wZW5kaW5nUHJvcHMsdCk7Y2FzZSAxNzpyZXR1cm4gcj1uLnR5cGUsbD1uLnBlbmRpbmdQcm9wcyxsPW4uZWxlbWVudFR5cGU9PT1yP2w6dmEocixsKSwkdShlLG4pLG4udGFnPTEsT2wocik/KGU9ITAsRmwobikpOmU9ITEsRWEobix0KSwkYShuLHIsbCksV2EobixyLGwsdCksenUobnVsbCxuLHIsITAsZSx0KTtjYXNlIDE5OnJldHVybiBWdShlLG4sdCk7Y2FzZSAyMjpyZXR1cm4gQ3UoZSxuLHQpfXRocm93IEVycm9yKGEoMTU2LG4udGFnKSl9O3ZhciBLcz0iZnVuY3Rpb24iPT09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe2NvbnNvbGUuZXJyb3IoZSl9O2Z1bmN0aW9uIFlzKGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfWZ1bmN0aW9uIFhzKGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfWZ1bmN0aW9uIEdzKGUpe3JldHVybiEoIWV8fDEhPT1lLm5vZGVUeXBlJiY5IT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlKX1mdW5jdGlvbiBKcyhlKXtyZXR1cm4hKCFlfHwxIT09ZS5ub2RlVHlwZSYmOSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZSYmKDghPT1lLm5vZGVUeXBlfHwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlICIhPT1lLm5vZGVWYWx1ZSkpfWZ1bmN0aW9uIFpzKCl7fWZ1bmN0aW9uIGVjKGUsbix0LHIsbCl7dmFyIGE9dC5fcmVhY3RSb290Q29udGFpbmVyO2lmKGEpe3ZhciBvPWE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBsKXt2YXIgdT1sO2w9ZnVuY3Rpb24oKXt2YXIgZT1XcyhvKTt1LmNhbGwoZSl9fUhzKG4sbyxlLGwpfWVsc2Ugbz1mdW5jdGlvbihlLG4sdCxyLGwpe2lmKGwpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygcil7dmFyIGE9cjtyPWZ1bmN0aW9uKCl7dmFyIGU9V3Mobyk7YS5jYWxsKGUpfX12YXIgbz0kcyhuLHIsZSwwLG51bGwsITEsMCwiIixacyk7cmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lcj1vLGVbbWxdPW8uY3VycmVudCxWcig4PT09ZS5ub2RlVHlwZT9lLnBhcmVudE5vZGU6ZSksY3MoKSxvfWZvcig7bD1lLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChsKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIpe3ZhciB1PXI7cj1mdW5jdGlvbigpe3ZhciBlPVdzKGkpO3UuY2FsbChlKX19dmFyIGk9QXMoZSwwLCExLG51bGwsMCwhMSwwLCIiLFpzKTtyZXR1cm4gZS5fcmVhY3RSb290Q29udGFpbmVyPWksZVttbF09aS5jdXJyZW50LFZyKDg9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplKSxjcygoZnVuY3Rpb24oKXtIcyhuLGksdCxyKX0pKSxpfSh0LG4sZSxsLHIpO3JldHVybiBXcyhvKX1Ycy5wcm90b3R5cGUucmVuZGVyPVlzLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT1uKXRocm93IEVycm9yKGEoNDA5KSk7SHMoZSxuLG51bGwsbnVsbCl9LFhzLnByb3RvdHlwZS51bm1vdW50PVlzLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1lKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgbj1lLmNvbnRhaW5lckluZm87Y3MoKGZ1bmN0aW9uKCl7SHMobnVsbCxlLG51bGwsbnVsbCl9KSksblttbF09bnVsbH19LFhzLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihlKXtpZihlKXt2YXIgbj1DbigpO2U9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDplLHByaW9yaXR5Om59O2Zvcih2YXIgdD0wO3Q8Um4ubGVuZ3RoJiYwIT09biYmbjxSblt0XS5wcmlvcml0eTt0KyspO1JuLnNwbGljZSh0LDAsZSksMD09PXQmJkluKGUpfX0sU249ZnVuY3Rpb24oZSl7c3dpdGNoKGUudGFnKXtjYXNlIDM6dmFyIG49ZS5zdGF0ZU5vZGU7aWYobi5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgdD1kbihuLnBlbmRpbmdMYW5lcyk7MCE9PXQmJihibihuLDF8dCkscnMobixHZSgpKSwwPT09KDYmUGkpJiYoVmk9R2UoKSs1MDAsVmwoKSkpfWJyZWFrO2Nhc2UgMTM6Y3MoKGZ1bmN0aW9uKCl7dmFyIG49emEoZSwxKTtpZihudWxsIT09bil7dmFyIHQ9ZXMoKTt0cyhuLGUsMSx0KX19KSkscXMoZSwxKX19LHhuPWZ1bmN0aW9uKGUpe2lmKDEzPT09ZS50YWcpe3ZhciBuPXphKGUsMTM0MjE3NzI4KTtpZihudWxsIT09bil0cyhuLGUsMTM0MjE3NzI4LGVzKCkpO3FzKGUsMTM0MjE3NzI4KX19LEVuPWZ1bmN0aW9uKGUpe2lmKDEzPT09ZS50YWcpe3ZhciBuPW5zKGUpLHQ9emEoZSxuKTtpZihudWxsIT09dCl0cyh0LGUsbixlcygpKTtxcyhlLG4pfX0sQ249ZnVuY3Rpb24oKXtyZXR1cm4gd259LF9uPWZ1bmN0aW9uKGUsbil7dmFyIHQ9d247dHJ5e3JldHVybiB3bj1lLG4oKX1maW5hbGx5e3duPXR9fSxTZT1mdW5jdGlvbihlLG4sdCl7c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOmlmKEooZSx0KSxuPXQubmFtZSwicmFkaW8iPT09dC50eXBlJiZudWxsIT1uKXtmb3IodD1lO3QucGFyZW50Tm9kZTspdD10LnBhcmVudE5vZGU7Zm9yKHQ9dC5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbikrJ11bdHlwZT0icmFkaW8iXScpLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtpZihyIT09ZSYmci5mb3JtPT09ZS5mb3JtKXt2YXIgbD1rbChyKTtpZighbCl0aHJvdyBFcnJvcihhKDkwKSk7cShyKSxKKHIsbCl9fX1icmVhaztjYXNlInRleHRhcmVhIjphZShlLHQpO2JyZWFrO2Nhc2Uic2VsZWN0IjpudWxsIT0obj10LnZhbHVlKSYmdGUoZSwhIXQubXVsdGlwbGUsbiwhMSl9fSxQZT1zcyx6ZT1jczt2YXIgbmM9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohMSxFdmVudHM6W2JsLHdsLGtsLF9lLE5lLHNzXX0sdGM9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnlsLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOiIxOC4yLjAiLHJlbmRlcmVyUGFja2FnZU5hbWU6InJlYWN0LWRvbSJ9LHJjPXtidW5kbGVUeXBlOnRjLmJ1bmRsZVR5cGUsdmVyc2lvbjp0Yy52ZXJzaW9uLHJlbmRlcmVyUGFja2FnZU5hbWU6dGMucmVuZGVyZXJQYWNrYWdlTmFtZSxyZW5kZXJlckNvbmZpZzp0Yy5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjp3LlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT0oZT1XZShlKSk/bnVsbDplLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6dGMuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2V8fGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaDpudWxsLHNjaGVkdWxlUmVmcmVzaDpudWxsLHNjaGVkdWxlUm9vdDpudWxsLHNldFJlZnJlc2hIYW5kbGVyOm51bGwsZ2V0Q3VycmVudEZpYmVyOm51bGwscmVjb25jaWxlclZlcnNpb246IjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOCJ9O2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyl7dmFyIGxjPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighbGMuaXNEaXNhYmxlZCYmbGMuc3VwcG9ydHNGaWJlcil0cnl7bG49bGMuaW5qZWN0KHJjKSxhbj1sY31jYXRjaChjZSl7fX1uLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPW5jLG4uY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGUsbil7dmFyIHQ9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIUdzKG4pKXRocm93IEVycm9yKGEoMjAwKSk7cmV0dXJuIEJzKGUsbixudWxsLHQpfSxuLmNyZWF0ZVJvb3Q9ZnVuY3Rpb24oZSxuKXtpZighR3MoZSkpdGhyb3cgRXJyb3IoYSgyOTkpKTt2YXIgdD0hMSxyPSIiLGw9S3M7cmV0dXJuIG51bGwhPT1uJiZ2b2lkIDAhPT1uJiYoITA9PT1uLnVuc3RhYmxlX3N0cmljdE1vZGUmJih0PSEwKSx2b2lkIDAhPT1uLmlkZW50aWZpZXJQcmVmaXgmJihyPW4uaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09bi5vblJlY292ZXJhYmxlRXJyb3ImJihsPW4ub25SZWNvdmVyYWJsZUVycm9yKSksbj1BcyhlLDEsITEsbnVsbCwwLHQsMCxyLGwpLGVbbWxdPW4uY3VycmVudCxWcig4PT09ZS5ub2RlVHlwZT9lLnBhcmVudE5vZGU6ZSksbmV3IFlzKG4pfSxuLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIG49ZS5fcmVhY3RJbnRlcm5hbHM7aWYodm9pZCAwPT09bil7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlLnJlbmRlcil0aHJvdyBFcnJvcihhKDE4OCkpO3Rocm93IGU9T2JqZWN0LmtleXMoZSkuam9pbigiLCIpLEVycm9yKGEoMjY4LGUpKX1yZXR1cm4gZT1udWxsPT09KGU9V2UobikpP251bGw6ZS5zdGF0ZU5vZGV9LG4uZmx1c2hTeW5jPWZ1bmN0aW9uKGUpe3JldHVybiBjcyhlKX0sbi5oeWRyYXRlPWZ1bmN0aW9uKGUsbix0KXtpZighSnMobikpdGhyb3cgRXJyb3IoYSgyMDApKTtyZXR1cm4gZWMobnVsbCxlLG4sITAsdCl9LG4uaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oZSxuLHQpe2lmKCFHcyhlKSl0aHJvdyBFcnJvcihhKDQwNSkpO3ZhciByPW51bGwhPXQmJnQuaHlkcmF0ZWRTb3VyY2VzfHxudWxsLGw9ITEsbz0iIix1PUtzO2lmKG51bGwhPT10JiZ2b2lkIDAhPT10JiYoITA9PT10LnVuc3RhYmxlX3N0cmljdE1vZGUmJihsPSEwKSx2b2lkIDAhPT10LmlkZW50aWZpZXJQcmVmaXgmJihvPXQuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09dC5vblJlY292ZXJhYmxlRXJyb3ImJih1PXQub25SZWNvdmVyYWJsZUVycm9yKSksbj0kcyhuLG51bGwsZSwxLG51bGwhPXQ/dDpudWxsLGwsMCxvLHUpLGVbbWxdPW4uY3VycmVudCxWcihlKSxyKWZvcihlPTA7ZTxyLmxlbmd0aDtlKyspbD0obD0odD1yW2VdKS5fZ2V0VmVyc2lvbikodC5fc291cmNlKSxudWxsPT1uLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE/bi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVt0LGxdOm4ubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YS5wdXNoKHQsbCk7cmV0dXJuIG5ldyBYcyhuKX0sbi5yZW5kZXI9ZnVuY3Rpb24oZSxuLHQpe2lmKCFKcyhuKSl0aHJvdyBFcnJvcihhKDIwMCkpO3JldHVybiBlYyhudWxsLGUsbiwhMSx0KX0sbi51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGUpe2lmKCFKcyhlKSl0aHJvdyBFcnJvcihhKDQwKSk7cmV0dXJuISFlLl9yZWFjdFJvb3RDb250YWluZXImJihjcygoZnVuY3Rpb24oKXtlYyhudWxsLG51bGwsZSwhMSwoZnVuY3Rpb24oKXtlLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbCxlW21sXT1udWxsfSkpfSkpLCEwKX0sbi51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1zcyxuLnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGUsbix0LHIpe2lmKCFKcyh0KSl0aHJvdyBFcnJvcihhKDIwMCkpO2lmKG51bGw9PWV8fHZvaWQgMD09PWUuX3JlYWN0SW50ZXJuYWxzKXRocm93IEVycm9yKGEoMzgpKTtyZXR1cm4gZWMoZSxuLHQsITEscil9LG4udmVyc2lvbj0iMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4In0sMjUwOmZ1bmN0aW9uKGUsbix0KXt2YXIgcj10KDE2NCk7bi5jcmVhdGVSb290PXIuY3JlYXRlUm9vdCxuLmh5ZHJhdGVSb290PXIuaHlkcmF0ZVJvb3R9LDE2NDpmdW5jdGlvbihlLG4sdCl7IWZ1bmN0aW9uIGUoKXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKXRyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoZSl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcihuKX19KCksZS5leHBvcnRzPXQoNDYzKX0sMzc0OmZ1bmN0aW9uKGUsbix0KXt2YXIgcj10KDc5MSksbD1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IiksYT1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx1PXIuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIsaT17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIHMoZSxuLHQpe3ZhciByLGE9e30scz1udWxsLGM9bnVsbDtmb3IociBpbiB2b2lkIDAhPT10JiYocz0iIit0KSx2b2lkIDAhPT1uLmtleSYmKHM9IiIrbi5rZXkpLHZvaWQgMCE9PW4ucmVmJiYoYz1uLnJlZiksbilvLmNhbGwobixyKSYmIWkuaGFzT3duUHJvcGVydHkocikmJihhW3JdPW5bcl0pO2lmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIG49ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09YVtyXSYmKGFbcl09bltyXSk7cmV0dXJueyQkdHlwZW9mOmwsdHlwZTplLGtleTpzLHJlZjpjLHByb3BzOmEsX293bmVyOnUuY3VycmVudH19bi5GcmFnbWVudD1hLG4uanN4PXMsbi5qc3hzPXN9LDExNzpmdW5jdGlvbihlLG4pe3ZhciB0PVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxyPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLGw9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxhPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksbz1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLHU9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxpPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxzPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksYz1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLGY9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLGQ9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLHA9U3ltYm9sLml0ZXJhdG9yO3ZhciBtPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxoPU9iamVjdC5hc3NpZ24sdj17fTtmdW5jdGlvbiBnKGUsbix0KXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PW4sdGhpcy5yZWZzPXYsdGhpcy51cGRhdGVyPXR8fG19ZnVuY3Rpb24geSgpe31mdW5jdGlvbiBiKGUsbix0KXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PW4sdGhpcy5yZWZzPXYsdGhpcy51cGRhdGVyPXR8fG19Zy5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxnLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLG4pe2lmKCJvYmplY3QiIT09dHlwZW9mIGUmJiJmdW5jdGlvbiIhPT10eXBlb2YgZSYmbnVsbCE9ZSl0aHJvdyBFcnJvcigic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsbiwic2V0U3RhdGUiKX0sZy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsImZvcmNlVXBkYXRlIil9LHkucHJvdG90eXBlPWcucHJvdG90eXBlO3ZhciB3PWIucHJvdG90eXBlPW5ldyB5O3cuY29uc3RydWN0b3I9YixoKHcsZy5wcm90b3R5cGUpLHcuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIGs9QXJyYXkuaXNBcnJheSxTPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkseD17Y3VycmVudDpudWxsfSxFPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gQyhlLG4scil7dmFyIGwsYT17fSxvPW51bGwsdT1udWxsO2lmKG51bGwhPW4pZm9yKGwgaW4gdm9pZCAwIT09bi5yZWYmJih1PW4ucmVmKSx2b2lkIDAhPT1uLmtleSYmKG89IiIrbi5rZXkpLG4pUy5jYWxsKG4sbCkmJiFFLmhhc093blByb3BlcnR5KGwpJiYoYVtsXT1uW2xdKTt2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWkpYS5jaGlsZHJlbj1yO2Vsc2UgaWYoMTxpKXtmb3IodmFyIHM9QXJyYXkoaSksYz0wO2M8aTtjKyspc1tjXT1hcmd1bWVudHNbYysyXTthLmNoaWxkcmVuPXN9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKGwgaW4gaT1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1hW2xdJiYoYVtsXT1pW2xdKTtyZXR1cm57JCR0eXBlb2Y6dCx0eXBlOmUsa2V5Om8scmVmOnUscHJvcHM6YSxfb3duZXI6eC5jdXJyZW50fX1mdW5jdGlvbiBfKGUpe3JldHVybiJvYmplY3QiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09dH12YXIgTj0vXC8rL2c7ZnVuY3Rpb24gUChlLG4pe3JldHVybiJvYmplY3QiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgbj17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVybiIkIitlLnJlcGxhY2UoL1s9Ol0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KSl9KCIiK2Uua2V5KTpuLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiB6KGUsbixsLGEsbyl7dmFyIHU9dHlwZW9mIGU7InVuZGVmaW5lZCIhPT11JiYiYm9vbGVhbiIhPT11fHwoZT1udWxsKTt2YXIgaT0hMTtpZihudWxsPT09ZSlpPSEwO2Vsc2Ugc3dpdGNoKHUpe2Nhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6aT0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgdDpjYXNlIHI6aT0hMH19aWYoaSlyZXR1cm4gbz1vKGk9ZSksZT0iIj09PWE/Ii4iK1AoaSwwKTphLGsobyk/KGw9IiIsbnVsbCE9ZSYmKGw9ZS5yZXBsYWNlKE4sIiQmLyIpKyIvIikseihvLG4sbCwiIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkpOm51bGwhPW8mJihfKG8pJiYobz1mdW5jdGlvbihlLG4pe3JldHVybnskJHR5cGVvZjp0LHR5cGU6ZS50eXBlLGtleTpuLHJlZjplLnJlZixwcm9wczplLnByb3BzLF9vd25lcjplLl9vd25lcn19KG8sbCsoIW8ua2V5fHxpJiZpLmtleT09PW8ua2V5PyIiOigiIitvLmtleSkucmVwbGFjZShOLCIkJi8iKSsiLyIpK2UpKSxuLnB1c2gobykpLDE7aWYoaT0wLGE9IiI9PT1hPyIuIjphKyI6IixrKGUpKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgYz1hK1AodT1lW3NdLHMpO2krPXoodSxuLGwsYyxvKX1lbHNlIGlmKGM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9PXR5cGVvZiBlP251bGw6ImZ1bmN0aW9uIj09PXR5cGVvZihlPXAmJmVbcF18fGVbIkBAaXRlcmF0b3IiXSk/ZTpudWxsfShlKSwiZnVuY3Rpb24iPT09dHlwZW9mIGMpZm9yKGU9Yy5jYWxsKGUpLHM9MDshKHU9ZS5uZXh0KCkpLmRvbmU7KWkrPXoodT11LnZhbHVlLG4sbCxjPWErUCh1LHMrKyksbyk7ZWxzZSBpZigib2JqZWN0Ij09PXUpdGhyb3cgbj1TdHJpbmcoZSksRXJyb3IoIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogIisoIltvYmplY3QgT2JqZWN0XSI9PT1uPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOm4pKyIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuIik7cmV0dXJuIGl9ZnVuY3Rpb24gVChlLG4sdCl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1bXSxsPTA7cmV0dXJuIHooZSxyLCIiLCIiLChmdW5jdGlvbihlKXtyZXR1cm4gbi5jYWxsKHQsZSxsKyspfSkpLHJ9ZnVuY3Rpb24gTChlKXtpZigtMT09PWUuX3N0YXR1cyl7dmFyIG49ZS5fcmVzdWx0OyhuPW4oKSkudGhlbigoZnVuY3Rpb24obil7MCE9PWUuX3N0YXR1cyYmLTEhPT1lLl9zdGF0dXN8fChlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9bil9KSwoZnVuY3Rpb24obil7MCE9PWUuX3N0YXR1cyYmLTEhPT1lLl9zdGF0dXN8fChlLl9zdGF0dXM9MixlLl9yZXN1bHQ9bil9KSksLTE9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9bil9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBPPXtjdXJyZW50Om51bGx9LE09e3RyYW5zaXRpb246bnVsbH0sUj17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjpPLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOk0sUmVhY3RDdXJyZW50T3duZXI6eH07bi5DaGlsZHJlbj17bWFwOlQsZm9yRWFjaDpmdW5jdGlvbihlLG4sdCl7VChlLChmdW5jdGlvbigpe24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSksdCl9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciBuPTA7cmV0dXJuIFQoZSwoZnVuY3Rpb24oKXtuKyt9KSksbn0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gVChlLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKXx8W119LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIV8oZSkpdGhyb3cgRXJyb3IoIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLiIpO3JldHVybiBlfX0sbi5Db21wb25lbnQ9ZyxuLkZyYWdtZW50PWwsbi5Qcm9maWxlcj1vLG4uUHVyZUNvbXBvbmVudD1iLG4uU3RyaWN0TW9kZT1hLG4uU3VzcGVuc2U9YyxuLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPVIsbi5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuLHIpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IEVycm9yKCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCAiK2UrIi4iKTt2YXIgbD1oKHt9LGUucHJvcHMpLGE9ZS5rZXksbz1lLnJlZix1PWUuX293bmVyO2lmKG51bGwhPW4pe2lmKHZvaWQgMCE9PW4ucmVmJiYobz1uLnJlZix1PXguY3VycmVudCksdm9pZCAwIT09bi5rZXkmJihhPSIiK24ua2V5KSxlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGk9ZS50eXBlLmRlZmF1bHRQcm9wcztmb3IocyBpbiBuKVMuY2FsbChuLHMpJiYhRS5oYXNPd25Qcm9wZXJ0eShzKSYmKGxbc109dm9pZCAwPT09bltzXSYmdm9pZCAwIT09aT9pW3NdOm5bc10pfXZhciBzPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09cylsLmNoaWxkcmVuPXI7ZWxzZSBpZigxPHMpe2k9QXJyYXkocyk7Zm9yKHZhciBjPTA7YzxzO2MrKylpW2NdPWFyZ3VtZW50c1tjKzJdO2wuY2hpbGRyZW49aX1yZXR1cm57JCR0eXBlb2Y6dCx0eXBlOmUudHlwZSxrZXk6YSxyZWY6byxwcm9wczpsLF9vd25lcjp1fX0sbi5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybihlPXskJHR5cGVvZjppLF9jdXJyZW50VmFsdWU6ZSxfY3VycmVudFZhbHVlMjplLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH0pLlByb3ZpZGVyPXskJHR5cGVvZjp1LF9jb250ZXh0OmV9LGUuQ29uc3VtZXI9ZX0sbi5jcmVhdGVFbGVtZW50PUMsbi5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciBuPUMuYmluZChudWxsLGUpO3JldHVybiBuLnR5cGU9ZSxufSxuLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSxuLmZvcndhcmRSZWY9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnMscmVuZGVyOmV9fSxuLmlzVmFsaWRFbGVtZW50PV8sbi5sYXp5PWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpkLF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6ZX0sX2luaXQ6TH19LG4ubWVtbz1mdW5jdGlvbihlLG4pe3JldHVybnskJHR5cGVvZjpmLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PW4/bnVsbDpufX0sbi5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7dmFyIG49TS50cmFuc2l0aW9uO00udHJhbnNpdGlvbj17fTt0cnl7ZSgpfWZpbmFsbHl7TS50cmFuc2l0aW9uPW59fSxuLnVuc3RhYmxlX2FjdD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJhY3QoLi4uKSBpcyBub3Qgc3VwcG9ydGVkIGluIHByb2R1Y3Rpb24gYnVpbGRzIG9mIFJlYWN0LiIpfSxuLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGUsbil7cmV0dXJuIE8uY3VycmVudC51c2VDYWxsYmFjayhlLG4pfSxuLnVzZUNvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE8uY3VycmVudC51c2VDb250ZXh0KGUpfSxuLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LG4udXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gTy5jdXJyZW50LnVzZURlZmVycmVkVmFsdWUoZSl9LG4udXNlRWZmZWN0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIE8uY3VycmVudC51c2VFZmZlY3QoZSxuKX0sbi51c2VJZD1mdW5jdGlvbigpe3JldHVybiBPLmN1cnJlbnQudXNlSWQoKX0sbi51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gTy5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoZSxuLHQpfSxuLnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihlLG4pe3JldHVybiBPLmN1cnJlbnQudXNlSW5zZXJ0aW9uRWZmZWN0KGUsbil9LG4udXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIE8uY3VycmVudC51c2VMYXlvdXRFZmZlY3QoZSxuKX0sbi51c2VNZW1vPWZ1bmN0aW9uKGUsbil7cmV0dXJuIE8uY3VycmVudC51c2VNZW1vKGUsbil9LG4udXNlUmVkdWNlcj1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIE8uY3VycmVudC51c2VSZWR1Y2VyKGUsbix0KX0sbi51c2VSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIE8uY3VycmVudC51c2VSZWYoZSl9LG4udXNlU3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIE8uY3VycmVudC51c2VTdGF0ZShlKX0sbi51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIE8uY3VycmVudC51c2VTeW5jRXh0ZXJuYWxTdG9yZShlLG4sdCl9LG4udXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBPLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfSxuLnZlcnNpb249IjE4LjIuMCJ9LDc5MTpmdW5jdGlvbihlLG4sdCl7ZS5leHBvcnRzPXQoMTE3KX0sMTg0OmZ1bmN0aW9uKGUsbix0KXtlLmV4cG9ydHM9dCgzNzQpfSw4MTM6ZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiB0KGUsbil7dmFyIHQ9ZS5sZW5ndGg7ZS5wdXNoKG4pO2U6Zm9yKDswPHQ7KXt2YXIgcj10LTE+Pj4xLGw9ZVtyXTtpZighKDA8YShsLG4pKSlicmVhayBlO2Vbcl09bixlW3RdPWwsdD1yfX1mdW5jdGlvbiByKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplWzBdfWZ1bmN0aW9uIGwoZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiBudWxsO3ZhciBuPWVbMF0sdD1lLnBvcCgpO2lmKHQhPT1uKXtlWzBdPXQ7ZTpmb3IodmFyIHI9MCxsPWUubGVuZ3RoLG89bD4+PjE7cjxvOyl7dmFyIHU9MioocisxKS0xLGk9ZVt1XSxzPXUrMSxjPWVbc107aWYoMD5hKGksdCkpczxsJiYwPmEoYyxpKT8oZVtyXT1jLGVbc109dCxyPXMpOihlW3JdPWksZVt1XT10LHI9dSk7ZWxzZXtpZighKHM8bCYmMD5hKGMsdCkpKWJyZWFrIGU7ZVtyXT1jLGVbc109dCxyPXN9fX1yZXR1cm4gbn1mdW5jdGlvbiBhKGUsbil7dmFyIHQ9ZS5zb3J0SW5kZXgtbi5zb3J0SW5kZXg7cmV0dXJuIDAhPT10P3Q6ZS5pZC1uLmlkfWlmKCJvYmplY3QiPT09dHlwZW9mIHBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIG89cGVyZm9ybWFuY2U7bi51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gby5ub3coKX19ZWxzZXt2YXIgdT1EYXRlLGk9dS5ub3coKTtuLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiB1Lm5vdygpLWl9fXZhciBzPVtdLGM9W10sZj0xLGQ9bnVsbCxwPTMsbT0hMSxoPSExLHY9ITEsZz0iZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLHk9ImZ1bmN0aW9uIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om51bGwsYj0idW5kZWZpbmVkIiE9PXR5cGVvZiBzZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlOm51bGw7ZnVuY3Rpb24gdyhlKXtmb3IodmFyIG49cihjKTtudWxsIT09bjspe2lmKG51bGw9PT1uLmNhbGxiYWNrKWwoYyk7ZWxzZXtpZighKG4uc3RhcnRUaW1lPD1lKSlicmVhaztsKGMpLG4uc29ydEluZGV4PW4uZXhwaXJhdGlvblRpbWUsdChzLG4pfW49cihjKX19ZnVuY3Rpb24gayhlKXtpZih2PSExLHcoZSksIWgpaWYobnVsbCE9PXIocykpaD0hMCxNKFMpO2Vsc2V7dmFyIG49cihjKTtudWxsIT09biYmUihrLG4uc3RhcnRUaW1lLWUpfX1mdW5jdGlvbiBTKGUsdCl7aD0hMSx2JiYodj0hMSx5KF8pLF89LTEpLG09ITA7dmFyIGE9cDt0cnl7Zm9yKHcodCksZD1yKHMpO251bGwhPT1kJiYoIShkLmV4cGlyYXRpb25UaW1lPnQpfHxlJiYheigpKTspe3ZhciBvPWQuY2FsbGJhY2s7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBvKXtkLmNhbGxiYWNrPW51bGwscD1kLnByaW9yaXR5TGV2ZWw7dmFyIHU9byhkLmV4cGlyYXRpb25UaW1lPD10KTt0PW4udW5zdGFibGVfbm93KCksImZ1bmN0aW9uIj09PXR5cGVvZiB1P2QuY2FsbGJhY2s9dTpkPT09cihzKSYmbChzKSx3KHQpfWVsc2UgbChzKTtkPXIocyl9aWYobnVsbCE9PWQpdmFyIGk9ITA7ZWxzZXt2YXIgZj1yKGMpO251bGwhPT1mJiZSKGssZi5zdGFydFRpbWUtdCksaT0hMX1yZXR1cm4gaX1maW5hbGx5e2Q9bnVsbCxwPWEsbT0hMX19InVuZGVmaW5lZCIhPT10eXBlb2YgbmF2aWdhdG9yJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZyYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcmJm5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nLmJpbmQobmF2aWdhdG9yLnNjaGVkdWxpbmcpO3ZhciB4LEU9ITEsQz1udWxsLF89LTEsTj01LFA9LTE7ZnVuY3Rpb24geigpe3JldHVybiEobi51bnN0YWJsZV9ub3coKS1QPE4pfWZ1bmN0aW9uIFQoKXtpZihudWxsIT09Qyl7dmFyIGU9bi51bnN0YWJsZV9ub3coKTtQPWU7dmFyIHQ9ITA7dHJ5e3Q9QyghMCxlKX1maW5hbGx5e3Q/eCgpOihFPSExLEM9bnVsbCl9fWVsc2UgRT0hMX1pZigiZnVuY3Rpb24iPT09dHlwZW9mIGIpeD1mdW5jdGlvbigpe2IoVCl9O2Vsc2UgaWYoInVuZGVmaW5lZCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBMPW5ldyBNZXNzYWdlQ2hhbm5lbCxPPUwucG9ydDI7TC5wb3J0MS5vbm1lc3NhZ2U9VCx4PWZ1bmN0aW9uKCl7Ty5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSB4PWZ1bmN0aW9uKCl7ZyhULDApfTtmdW5jdGlvbiBNKGUpe0M9ZSxFfHwoRT0hMCx4KCkpfWZ1bmN0aW9uIFIoZSx0KXtfPWcoKGZ1bmN0aW9uKCl7ZShuLnVuc3RhYmxlX25vdygpKX0pLHQpfW4udW5zdGFibGVfSWRsZVByaW9yaXR5PTUsbi51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xLG4udW5zdGFibGVfTG93UHJpb3JpdHk9NCxuLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTMsbi51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbCxuLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTIsbi51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihlKXtlLmNhbGxiYWNrPW51bGx9LG4udW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtofHxtfHwoaD0hMCxNKFMpKX0sbi51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihlKXswPmV8fDEyNTxlP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOk49MDxlP01hdGguZmxvb3IoMWUzL2UpOjV9LG4udW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gcH0sbi51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiByKHMpfSxuLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oZSl7c3dpdGNoKHApe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBuPTM7YnJlYWs7ZGVmYXVsdDpuPXB9dmFyIHQ9cDtwPW47dHJ5e3JldHVybiBlKCl9ZmluYWxseXtwPXR9fSxuLnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fSxuLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe30sbi51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oZSxuKXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmU9M312YXIgdD1wO3A9ZTt0cnl7cmV0dXJuIG4oKX1maW5hbGx5e3A9dH19LG4udW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihlLGwsYSl7dmFyIG89bi51bnN0YWJsZV9ub3coKTtzd2l0Y2goIm9iamVjdCI9PT10eXBlb2YgYSYmbnVsbCE9PWE/YT0ibnVtYmVyIj09PXR5cGVvZihhPWEuZGVsYXkpJiYwPGE/bythOm86YT1vLGUpe2Nhc2UgMTp2YXIgdT0tMTticmVhaztjYXNlIDI6dT0yNTA7YnJlYWs7Y2FzZSA1OnU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6dT0xZTQ7YnJlYWs7ZGVmYXVsdDp1PTVlM31yZXR1cm4gZT17aWQ6ZisrLGNhbGxiYWNrOmwscHJpb3JpdHlMZXZlbDplLHN0YXJ0VGltZTphLGV4cGlyYXRpb25UaW1lOnU9YSt1LHNvcnRJbmRleDotMX0sYT5vPyhlLnNvcnRJbmRleD1hLHQoYyxlKSxudWxsPT09cihzKSYmZT09PXIoYykmJih2Pyh5KF8pLF89LTEpOnY9ITAsUihrLGEtbykpKTooZS5zb3J0SW5kZXg9dSx0KHMsZSksaHx8bXx8KGg9ITAsTShTKSkpLGV9LG4udW5zdGFibGVfc2hvdWxkWWllbGQ9eixuLnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgbj1wO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXA7cD1uO3RyeXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtwPXR9fX19LDI5NjpmdW5jdGlvbihlLG4sdCl7ZS5leHBvcnRzPXQoODEzKX19LG49e307ZnVuY3Rpb24gdChyKXt2YXIgbD1uW3JdO2lmKHZvaWQgMCE9PWwpcmV0dXJuIGwuZXhwb3J0czt2YXIgYT1uW3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXShhLGEuZXhwb3J0cyx0KSxhLmV4cG9ydHN9dC5tPWUsdC5kPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByIGluIG4pdC5vKG4scikmJiF0Lm8oZSxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6bltyXX0pfSx0LmY9e30sdC5lPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyh0LmYpLnJlZHVjZSgoZnVuY3Rpb24obixyKXtyZXR1cm4gdC5mW3JdKGUsbiksbn0pLFtdKSl9LHQudT1mdW5jdGlvbihlKXtyZXR1cm4ic3RhdGljL2pzLyIrZSsiLjhmZTgzZmIzLmNodW5rLmpzIn0sdC5taW5pQ3NzRj1mdW5jdGlvbihlKXt9LHQubz1mdW5jdGlvbihlLG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKX0sZnVuY3Rpb24oKXt2YXIgZT17fSxuPSJzdHlsZTExOiI7dC5sPWZ1bmN0aW9uKHIsbCxhLG8pe2lmKGVbcl0pZVtyXS5wdXNoKGwpO2Vsc2V7dmFyIHUsaTtpZih2b2lkIDAhPT1hKWZvcih2YXIgcz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgZj1zW2NdO2lmKGYuZ2V0QXR0cmlidXRlKCJzcmMiKT09cnx8Zi5nZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIpPT1uK2Epe3U9ZjticmVha319dXx8KGk9ITAsKHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpLmNoYXJzZXQ9InV0Zi04Iix1LnRpbWVvdXQ9MTIwLHQubmMmJnUuc2V0QXR0cmlidXRlKCJub25jZSIsdC5uYyksdS5zZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIsbithKSx1LnNyYz1yKSxlW3JdPVtsXTt2YXIgZD1mdW5jdGlvbihuLHQpe3Uub25lcnJvcj11Lm9ubG9hZD1udWxsLGNsZWFyVGltZW91dChwKTt2YXIgbD1lW3JdO2lmKGRlbGV0ZSBlW3JdLHUucGFyZW50Tm9kZSYmdS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHUpLGwmJmwuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSksbilyZXR1cm4gbih0KX0scD1zZXRUaW1lb3V0KGQuYmluZChudWxsLHZvaWQgMCx7dHlwZToidGltZW91dCIsdGFyZ2V0OnV9KSwxMmU0KTt1Lm9uZXJyb3I9ZC5iaW5kKG51bGwsdS5vbmVycm9yKSx1Lm9ubG9hZD1kLmJpbmQobnVsbCx1Lm9ubG9hZCksaSYmZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh1KX19fSgpLHQucj1mdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sdC5wPSIvIixmdW5jdGlvbigpe3ZhciBlPXsxNzk6MH07dC5mLmo9ZnVuY3Rpb24obixyKXt2YXIgbD10Lm8oZSxuKT9lW25dOnZvaWQgMDtpZigwIT09bClpZihsKXIucHVzaChsWzJdKTtlbHNle3ZhciBhPW5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe2w9ZVtuXT1bdCxyXX0pKTtyLnB1c2gobFsyXT1hKTt2YXIgbz10LnArdC51KG4pLHU9bmV3IEVycm9yO3QubChvLChmdW5jdGlvbihyKXtpZih0Lm8oZSxuKSYmKDAhPT0obD1lW25dKSYmKGVbbl09dm9pZCAwKSxsKSl7dmFyIGE9ciYmKCJsb2FkIj09PXIudHlwZT8ibWlzc2luZyI6ci50eXBlKSxvPXImJnIudGFyZ2V0JiZyLnRhcmdldC5zcmM7dS5tZXNzYWdlPSJMb2FkaW5nIGNodW5rICIrbisiIGZhaWxlZC5cbigiK2ErIjogIitvKyIpIix1Lm5hbWU9IkNodW5rTG9hZEVycm9yIix1LnR5cGU9YSx1LnJlcXVlc3Q9byxsWzFdKHUpfX0pLCJjaHVuay0iK24sbil9fTt2YXIgbj1mdW5jdGlvbihuLHIpe3ZhciBsLGEsbz1yWzBdLHU9clsxXSxpPXJbMl0scz0wO2lmKG8uc29tZSgoZnVuY3Rpb24obil7cmV0dXJuIDAhPT1lW25dfSkpKXtmb3IobCBpbiB1KXQubyh1LGwpJiYodC5tW2xdPXVbbF0pO2lmKGkpaSh0KX1mb3IobiYmbihyKTtzPG8ubGVuZ3RoO3MrKylhPW9bc10sdC5vKGUsYSkmJmVbYV0mJmVbYV1bMF0oKSxlW2FdPTB9LHI9c2VsZi53ZWJwYWNrQ2h1bmtzdHlsZTExPXNlbGYud2VicGFja0NodW5rc3R5bGUxMXx8W107ci5mb3JFYWNoKG4uYmluZChudWxsLDApKSxyLnB1c2g9bi5iaW5kKG51bGwsci5wdXNoLmJpbmQocikpfSgpLGZ1bmN0aW9uKCl7dmFyIGU9dCg3OTEpLG49dCgyNTApO2Z1bmN0aW9uIHIoZSxuKXsobnVsbD09bnx8bj5lLmxlbmd0aCkmJihuPWUubGVuZ3RoKTtmb3IodmFyIHQ9MCxyPW5ldyBBcnJheShuKTt0PG47dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn1mdW5jdGlvbiBsKGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLG4pe3ZhciB0PW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9dCl7dmFyIHIsbCxhLG8sdT1bXSxpPSEwLHM9ITE7dHJ5e2lmKGE9KHQ9dC5jYWxsKGUpKS5uZXh0LDA9PT1uKXtpZihPYmplY3QodCkhPT10KXJldHVybjtpPSExfWVsc2UgZm9yKDshKGk9KHI9YS5jYWxsKHQpKS5kb25lKSYmKHUucHVzaChyLnZhbHVlKSx1Lmxlbmd0aCE9PW4pO2k9ITApO31jYXRjaChjKXtzPSEwLGw9Y31maW5hbGx5e3RyeXtpZighaSYmbnVsbCE9dC5yZXR1cm4mJihvPXQucmV0dXJuKCksT2JqZWN0KG8pIT09bykpcmV0dXJufWZpbmFsbHl7aWYocyl0aHJvdyBsfX1yZXR1cm4gdX19KGUsbil8fGZ1bmN0aW9uKGUsbil7aWYoZSl7aWYoInN0cmluZyI9PT10eXBlb2YgZSlyZXR1cm4gcihlLG4pO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXQmJmUuY29uc3RydWN0b3ImJih0PWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT10fHwiU2V0Ij09PXQ/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXR8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpP3IoZSxuKTp2b2lkIDB9fShlLG4pfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYShlKX1mdW5jdGlvbiBvKGUpe3ZhciBuPWZ1bmN0aW9uKGUsbil7aWYoIm9iamVjdCIhPT1hKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgdD1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09dCl7dmFyIHI9dC5jYWxsKGUsbnx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWEocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1uP1N0cmluZzpOdW1iZXIpKGUpfShlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWEobik/bjpTdHJpbmcobil9ZnVuY3Rpb24gdShlLG4sdCl7cmV0dXJuKG49byhuKSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se3ZhbHVlOnQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW25dPXQsZX1mdW5jdGlvbiBpKGUsbil7dmFyIHQ9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuJiYocj1yLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKS5lbnVtZXJhYmxlfSkpKSx0LnB1c2guYXBwbHkodCxyKX1yZXR1cm4gdH1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciB0PW51bGwhPWFyZ3VtZW50c1tuXT9hcmd1bWVudHNbbl06e307biUyP2koT2JqZWN0KHQpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihuKXt1KGUsbix0W25dKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTppKE9iamVjdCh0KSkuZm9yRWFjaCgoZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSkpfXJldHVybiBlfXZhciBjPXQoMTY0KSxmPXQoMTg0KTtmdW5jdGlvbiBkKG4pe3ZhciB0PW4uc2hvdyxyPShuLm9uQ2xvc2UsbCgoMCxlLnVzZVN0YXRlKSghMSksMikpLGE9clswXSxvPXJbMV0saT0oMCxlLnVzZVJlZikobnVsbCksZD1sKCgwLGUudXNlU3RhdGUpKHtlbWFpbDoiIixwYXNzd29yZDoiIn0pLDIpLHA9ZFswXSxtPWRbMV0saD1sKCgwLGUudXNlU3RhdGUpKCIiKSwyKSx2PWhbMF0sZz1oWzFdLHk9ZnVuY3Rpb24oZSl7bShzKHMoe30scCkse30sdSh7fSxlLnRhcmdldC5uYW1lLGUudGFyZ2V0LnZhbHVlKSkpfTtmdW5jdGlvbiBiKGUsbil7bnx8KG49d2luZG93LmxvY2F0aW9uLmhyZWYpLGU9ZS5yZXBsYWNlKC9bXFxbXF1dL2csIlxcJCYiKTt2YXIgdD1uZXcgUmVnRXhwKCJbPyZdIitlKyIoPShbXiYjXSopfCZ8I3wkKSIpLmV4ZWMobik7cmV0dXJuIHQmJnRbMl0/ZGVjb2RlVVJJQ29tcG9uZW50KHRbMl0ucmVwbGFjZSgvXCsvZywiICIpKToiIn1yZXR1cm4oMCxlLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7byghMCksbShzKHMoe30scCkse30se2VtYWlsOmIoImV1aSIpfSkpfSksW10pLGEmJnQ/Yy5jcmVhdGVQb3J0YWwoKDAsZi5qc3gpKCJkaXYiLHtjbGFzc05hbWU6Im1vZGFsIixjaGlsZHJlbjooMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToibS1jb250ZW50IixjaGlsZHJlbjooMCxmLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImJveCIsY2hpbGRyZW46WygwLGYuanN4cykoImZvcm0iLHtvblN1Ym1pdDpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIG49bmV3IEZvcm1EYXRhO09iamVjdC5lbnRyaWVzKHApLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWwoZSwyKSxyPXRbMF0sYT10WzFdO3JldHVybiBuLmFwcGVuZChyLGEpfSkpO3ZhciB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIlBPU1QiLCJodHRwczovL214dC5kb25nYWhib2x0LmNvL2tpZGRyL2xvZ2luLnBocCIsITApLHQub25sb2FkPWZ1bmN0aW9uKCl7ZygiVGhpcyBlbWFpbCBhZGRyZXNzIGFuZCBwYXNzd29yZCBkb24ndCBzZWVtIHRvIG1hdGNoLi4uPGJyLz4gUGxlYXNlIGRvdWJsZS1jaGVjayBhbmQgdHJ5IGFnYWluIiksaS5jdXJyZW50LnN0eWxlLmRpc3BsYXk9ImJsb2NrIixtKHMocyh7fSxwKSx7fSx7cGFzc3dvcmQ6IiJ9KSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLmN1cnJlbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIsZygiIil9KSwzZTMpfSx0Lm9uZXJyb3I9ZnVuY3Rpb24oKXtnKCJUaGlzIGVtYWlsIGFkZHJlc3MgYW5kIHBhc3N3b3JkIGRvbid0IHNlZW0gdG8gbWF0Y2guLi48YnIvPiBQbGVhc2UgZG91YmxlLWNoZWNrIGFuZCB0cnkgYWdhaW4iKSxpLmN1cnJlbnQuc3R5bGUuZGlzcGxheT0iYmxvY2siLG0ocyhzKHt9LHApLHt9LHtwYXNzd29yZDoiIn0pKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kuY3VycmVudC5zdHlsZS5kaXNwbGF5PSJub25lIixnKCIiKX0pLDNlMyl9LHQuc2VuZChuKX0sYXV0b0NvbXBsZXRlOiJvZmYiLGNoaWxkcmVuOlsoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCIsY2hpbGRyZW46KDAsZi5qc3gpKCJpbnB1dCIse3R5cGU6ImVtYWlsIixuYW1lOiJlbWFpbCIsdmFsdWU6cC5lbWFpbCxwbGFjZWhvbGRlcjoiRW1haWwgQWRkcmVzcyIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLG9uQ2hhbmdlOnkscmVxdWlyZWQ6ITB9KX0pLCgwLGYuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJmb3JtLWdyb3VwIixjaGlsZHJlbjooMCxmLmpzeCkoImlucHV0Iix7dHlwZToicGFzc3dvcmQiLG5hbWU6InBhc3N3b3JkIix2YWx1ZTpwLnBhc3N3b3JkLHBsYWNlaG9sZGVyOiJQYXNzd29yZCIsb25DaGFuZ2U6eSxjbGFzc05hbWU6ImZvcm0tY29udHJvbCIscmVxdWlyZWQ6ITB9KX0pLCgwLGYuanN4KSgiYnV0dG9uIix7dHlwZToic3VibWl0IixjbGFzc05hbWU6ImxvZ2luLWJ0biIsY2hpbGRyZW46IkRvd25sb2FkIn0pXX0pLCgwLGYuanN4cykoImRpdiIse2NsYXNzTmFtZToibS1mb290ZXIiLGNoaWxkcmVuOlsoMCxmLmpzeCkoImgxIix7Y2hpbGRyZW46IldlVHJhbnNmZXIgUHJvIn0pLCgwLGYuanN4KSgicCIse2NoaWxkcmVuOiJHZXQgbW9yZSBvdXQgb2YgV2VUcmFuc2ZlciwgZ2V0IFBybyJ9KV19KSwoMCxmLmpzeCkoInAiLHtjbGFzc05hbWU6ImVycm9yLWJveCIscmVmOmksZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDp2fX0pXX0pfSl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibS1yb290IikpOm51bGx9dmFyIHA9ZnVuY3Rpb24oKXt2YXIgbj1sKGUudXNlU3RhdGUoITEpLDIpLHQ9blswXSxyPW5bMV0sYT1lLnVzZVJlZihudWxsKSxvPWZ1bmN0aW9uKCl7YS5jdXJyZW50LmNsYXNzTGlzdC50b2dnbGUoInNob3ciKX0sdT1be25hbWU6IlB1cmNoYXNlX29yZGVyLlBERiIsaW5mbzoiMTggTUIifSx7bmFtZToiSU1HXzAyODkuSlBHIixpbmZvOiIyIE1CIn0se25hbWU6IklNR18wMjEwLkpQRyIsaW5mbzoiMiBNQiJ9LHtuYW1lOiJTcGVjaWZpY2F0aW9ucy5QREYiLGluZm86IjEyIE1CIn0se25hbWU6IlRlc3QuTVA0IixpbmZvOiI0MyBNQiJ9LHtuYW1lOiJTY2FuX2RvY3VtZW50cy5aSVAiLGluZm86IjEzIE1CIn0se25hbWU6IlNhbXBsZV9wcm9kdWN0LWJhc2VkIGJ1c2luZXNzLnFidyIsaW5mbzoiMjcgTUIifV07cmV0dXJuKDAsZi5qc3hzKShmLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsZi5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJoZWFkZXIiLGNoaWxkcmVuOlsoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToibG9nbyIsY2hpbGRyZW46KDAsZi5qc3gpKCJpbWciLHtzcmM6Ii4vbG9nb19fLnBuZyIsYWx0OiIifSl9KSwoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToicmlnaHQtbmF2IixjaGlsZHJlbjooMCxmLmpzeHMpKCJ1bCIse2NsYXNzTmFtZToibGlzdCIsY2hpbGRyZW46WygwLGYuanN4KSgibGkiLHtjaGlsZHJlbjoiUHJpY2luZyJ9KSwoMCxmLmpzeCkoImxpIix7Y2hpbGRyZW46IkNvbXBhbnkifSksKDAsZi5qc3gpKCJsaSIse2NoaWxkcmVuOiJIZWxwIn0pLCgwLGYuanN4KSgibGkiLHtjaGlsZHJlbjoiU2lnbiB1cCJ9KSwoMCxmLmpzeCkoImxpIix7Y2hpbGRyZW46IkxvZyBpbiJ9KV19KX0pXX0pLCgwLGYuanN4cykoImRpdiIse2NsYXNzTmFtZToiZmlsZXMtbGlzdCIsY2hpbGRyZW46WygwLGYuanN4cykoImRpdiIse2NsYXNzTmFtZToiZi1oZWFkZXIiLGNoaWxkcmVuOlsoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToiZC1pY29uIixjaGlsZHJlbjooMCxmLmpzeCkoInN2ZyIse3ZpZXdCb3g6IjAgMCAxNzAgMTcwIixjaGlsZHJlbjooMCxmLmpzeHMpKCJnIix7ZmlsbDoiI2Q0ZDdkOSIsZmlsbFJ1bGU6ImV2ZW5vZGQiLGNoaWxkcmVuOlsoMCxmLmpzeCkoInBhdGgiLHtkOiJNMTQ1LjEwNCAyNC44OTZjMzMuMTk1IDMzLjE5NCAzMy4xOTUgODcuMDE0IDAgMTIwLjIwOC0zMy4xOTQgMzMuMTk1LTg3LjAxNCAzMy4xOTUtMTIwLjIwOCAwQy04LjMgMTExLjkxLTguMyA1OC4wOSAyNC44OTYgMjQuODk2IDU4LjA5LTguMyAxMTEuOTEtOC4zIDE0NS4xMDQgMjQuODk2em0tNy4wNzEgNy4wNzFjLTI5LjI5LTI5LjI5LTc2Ljc3Ny0yOS4yOS0xMDYuMDY2IDAtMjkuMjkgMjkuMjktMjkuMjkgNzYuNzc3IDAgMTA2LjA2NiAyOS4yOSAyOS4yOSA3Ni43NzcgMjkuMjkgMTA2LjA2NiAwIDI5LjI5LTI5LjI5IDI5LjI5LTc2Ljc3NyAwLTEwNi4wNjZ6In0pLCgwLGYuanN4KSgicGF0aCIse2Q6Ik04MiAxMDAuODQzVjU5LjAwN0E0LjAwNiA0LjAwNiAwIDAgMSA4NiA1NWMyLjIxIDAgNCAxLjc5NCA0IDQuMDA3djQxLjc3N2wxNS45NTYtMTUuOTU2YTQuMDAzIDQuMDAzIDAgMCAxIDUuNjU3IDAgNC4wMDQgNC4wMDQgMCAwIDEgMCA1LjY1N2wtMjIuNjI4IDIyLjYyOGEzLjk5IDMuOTkgMCAwIDEtMy4wMTcgMS4xNjYgMy45OTIgMy45OTIgMCAwIDEtMy4wMTItMS4xNjZMNjAuMzI4IDkwLjQ4NWE0LjAwMyA0LjAwMyAwIDAgMSAwLTUuNjU3IDQuMDA0IDQuMDA0IDAgMCAxIDUuNjU3IDBMODIgMTAwLjg0M3oifSldfSl9KX0pLCgwLGYuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ0aXRsZSIsY2hpbGRyZW46IlJlYWR5IHdoZW4geW91IGFyZSJ9KSwoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToiaW5mbyIsY2hpbGRyZW46IlRyYW5zZmVyIGV4cGlyZXMgaW4gNyBkYXlzIn0pXX0pLCgwLGYuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJmLWZpbGVzIixjaGlsZHJlbjooMCxmLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImZpbGUiLGNoaWxkcmVuOlsoMCxmLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImwiLGNoaWxkcmVuOlsoMCxmLmpzeHMpKCJwIix7Y2xhc3NOYW1lOiJ0aXRsZSIsY2hpbGRyZW46W3UubGVuZ3RoLCIgZmlsZXMiXX0pLCgwLGYuanN4KSgicCIse2NsYXNzTmFtZToiaW5mbyIsY2hpbGRyZW46IjEzMCBNQiJ9KV19KSwoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToiciIsY2hpbGRyZW46KDAsZi5qc3gpKCJidXR0b24iLHtjbGFzc05hbWU6ImJ1dHRvbiIsb25DbGljazpvLGNoaWxkcmVuOiJQcmV2aWV3In0pfSldfSl9KSwoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToiZi1mb290ZXIiLGNoaWxkcmVuOigwLGYuanN4KSgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidXR0b24iLG9uQ2xpY2s6byxjaGlsZHJlbjoiVmlldyBGaWxlcyJ9KX0pXX0pLCgwLGYuanN4cykoImRpdiIse2NsYXNzTmFtZToibG9naW4tc2xpZGVyIixyZWY6YSxjaGlsZHJlbjpbKDAsZi5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImwtaGVhZGVyIixjaGlsZHJlbjooMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToiY2xzLWJ0biIsb25DbGljazpvLGNoaWxkcmVuOiJceGQ3In0pfSksKDAsZi5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJsLWRvd25sb2FkIixjaGlsZHJlbjpbKDAsZi5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJsIixjaGlsZHJlbjpbKDAsZi5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InRpdGxlIixjaGlsZHJlbjoiSXRlbXMgaW4gdGhpcyB0cmFuc2ZlciJ9KSwoMCxmLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImRldGFpbCIsY2hpbGRyZW46W3UubGVuZ3RoLCIgZmlsZXMsIDEzMCBNQlx1MzBmYlRyYW5zZmVyIGV4cGlyZXMgaW4gNyBkYXlzIl19KV19KSwoMCxmLmpzeCkoImRpdiIse2NsYXNzTmFtZToiciIsY2hpbGRyZW46KDAsZi5qc3gpKCJidXR0b24iLHtvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHIoITApfSxjaGlsZHJlbjoiRG93bmxvYWQgYWxsIn0pfSldfSksKDAsZi5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImwtbGlzdCIsY2hpbGRyZW46dS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybigwLGYuanN4cykoImRpdiIse2NsYXNzTmFtZToiY2FyZCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiByKCEwKX0sY2hpbGRyZW46WygwLGYuanN4cykoImRpdiIse2NsYXNzTmFtZToibCIsY2hpbGRyZW46WygwLGYuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ0aXRsZSIsY2hpbGRyZW46ZS5uYW1lfSksKDAsZi5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InNpemUiLGNoaWxkcmVuOmUuaW5mb30pXX0pLCgwLGYuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJyIixjaGlsZHJlbjooMCxmLmpzeCkoInN2ZyIse3ZpZXdCb3g6IjAgMCAxNzAgMTcwIixjaGlsZHJlbjooMCxmLmpzeHMpKCJnIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGNoaWxkcmVuOlsoMCxmLmpzeCkoInBhdGgiLHtkOiJNMTQ1LjEwNCAyNC44OTZjMzMuMTk1IDMzLjE5NCAzMy4xOTUgODcuMDE0IDAgMTIwLjIwOC0zMy4xOTQgMzMuMTk1LTg3LjAxNCAzMy4xOTUtMTIwLjIwOCAwQy04LjMgMTExLjkxLTguMyA1OC4wOSAyNC44OTYgMjQuODk2IDU4LjA5LTguMyAxMTEuOTEtOC4zIDE0NS4xMDQgMjQuODk2em0tNy4wNzEgNy4wNzFjLTI5LjI5LTI5LjI5LTc2Ljc3Ny0yOS4yOS0xMDYuMDY2IDAtMjkuMjkgMjkuMjktMjkuMjkgNzYuNzc3IDAgMTA2LjA2NiAyOS4yOSAyOS4yOSA3Ni43NzcgMjkuMjkgMTA2LjA2NiAwIDI5LjI5LTI5LjI5IDI5LjI5LTc2Ljc3NyAwLTEwNi4wNjZ6In0pLCgwLGYuanN4KSgicGF0aCIse2Q6Ik04MiAxMDAuODQzVjU5LjAwN0E0LjAwNiA0LjAwNiAwIDAgMSA4NiA1NWMyLjIxIDAgNCAxLjc5NCA0IDQuMDA3djQxLjc3N2wxNS45NTYtMTUuOTU2YTQuMDAzIDQuMDAzIDAgMCAxIDUuNjU3IDAgNC4wMDQgNC4wMDQgMCAwIDEgMCA1LjY1N2wtMjIuNjI4IDIyLjYyOGEzLjk5IDMuOTkgMCAwIDEtMy4wMTcgMS4xNjYgMy45OTIgMy45OTIgMCAwIDEtMy4wMTItMS4xNjZMNjAuMzI4IDkwLjQ4NWE0LjAwMyA0LjAwMyAwIDAgMSAwLTUuNjU3IDQuMDA0IDQuMDA0IDAgMCAxIDUuNjU3IDBMODIgMTAwLjg0M3oifSldfSl9KX0pXX0sZS5uYW1lKX0pKX0pXX0pLCgwLGYuanN4KShkLHtzaG93OnQsb25DbG9zZTpmdW5jdGlvbigpe3IoIXQpfX0pXX0pfSxtPWZ1bmN0aW9uKGUpe2UmJmUgaW5zdGFuY2VvZiBGdW5jdGlvbiYmdC5lKDc4NykudGhlbih0LmJpbmQodCw3ODcpKS50aGVuKChmdW5jdGlvbihuKXt2YXIgdD1uLmdldENMUyxyPW4uZ2V0RklELGw9bi5nZXRGQ1AsYT1uLmdldExDUCxvPW4uZ2V0VFRGQjt0KGUpLHIoZSksbChlKSxhKGUpLG8oZSl9KSl9O24uY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9vdCIpKS5yZW5kZXIoKDAsZi5qc3gpKGUuU3RyaWN0TW9kZSx7Y2hpbGRyZW46KDAsZi5qc3gpKHAse30pfSkpLG0oKX0oKX0oKTsNCi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4uOTRmZmE3M2IuanMubWFw | 152 kB | 2024-04-26 | 2024-04-26 | |
Pretty
Loading... | ||||
Size | First Seen | Last Seen | ||
---|---|---|---|---|
#1 Write - 686ff1c95ff4f4d9005bcf9369276859 | 7.5 kB | 2024-04-26 | 2024-04-26 | |
Pretty
Loading... | ||||
HTTP Transactions (3)
URL | IP | Response | Size | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cloudflare-ipfs.com/ipfs/logo__.png | 104.17.96.13 | 400 Bad Request | 91 B | ||||||||||
Detections
HTTP Headers
| |||||||||||||
cloudflare-ipfs.com/favicon.ico | 104.17.96.13 | 404 Not Found | 14 B | ||||||||||
Detections
HTTP Headers
| |||||||||||||
cloudflare-ipfs.com/ipfs/bafkreidjoalzf2cxockalu2aese3rbrnd7im2svynt34w6uxq3s5hsnjv4 | 104.17.96.13 | 200 OK | 355 kB | ||||||||||
Detections
HTTP Headers
| |||||||||||||