{"report_id":"e7fb9103-a574-4bc4-a091-3e18dac13aa9","version":0,"status":"done","tags":[],"date":"2026-07-27T05:13:29Z","url":{"schema":"https","addr":"cryptotradingaibot.com/","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":0,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"final":{"url":{"schema":"https","addr":"cryptotradingaibot.com/","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"title":"Crypto Trading Bot – Free AI Automated Binance Trading Bot 2026","dom":{"size":124553,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (1308)","md5":"848a83dd17b19e31f55028a5012e3fc2","sha1":"30c3df33998d9d11ed9b1d51e31d16f68a13ef1d","sha256":"d40972789c450c40e4453d04579f124c2357d4ba972c9ff2441ff2c8ecb2fbe9","sha512":"bbe2068ffb3a06296d8d9ff12deb0b18e67be1e9e18cff33c1e1dc71e56e024479547f6062f5f559b3d5d613d062215bb87d6af64af7ec07ce2396d3f6b37844","ssdeep":"768:jueCv+DAYVl3LRJyqe2G4sRaVlQcS+0TvHhzxh8AxC9oBhX2J8FciB7GCkfVB0Il:juTEQcIvHKP9oBIl1aiV","tlshash":"bdc3c53563f5116ea1d3c2b17b766b28aa28c143ea0bc9ddb36c83d44fc2c95cd13668","dom_hash":"domhash6a7b5a640d2e480c499c88893c7af26d","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"cryptotradingaibot.com/","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":0,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T05:13:29Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"cryptotradingaibot.com","ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"domain_registered":"2025-08-15","domain_rank":0,"first_seen":"2026-07-27T04:06:24.592347Z","last_seen":"2026-07-27T04:06:24.592347Z","alert_count":0,"request_count":5,"received_data":308171,"sent_data":5410,"comment":"","tags":null,"fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"PHP:8.2.31","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}]},{"fqdn":"fonts.bunny.net","ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"domain_registered":"1999-11-22","domain_rank":56787,"first_seen":"2022-03-21T07:38:02Z","last_seen":"2026-07-20T08:54:22.541253Z","alert_count":0,"request_count":1,"received_data":5124,"sent_data":524,"comment":"","tags":null,"fingerprints":[{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]}]},{"fqdn":"www.googletagmanager.com","ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2011-11-11","domain_rank":283,"first_seen":"2012-10-04T01:07:32Z","last_seen":"2026-07-26T22:31:28.839046Z","alert_count":0,"request_count":1,"received_data":499876,"sent_data":485,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"cryptotradingaibot.com/","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"introduction_type":"scriptElement","is_inline":true,"md5":"e4f11b5e5cf74156436038496b36a68d","sha1":"2c0f0b182dc6cfa27bccd620f39f3909325de791","sha256":"20ba91d1ce495b094dbbec377b1bde57f9d6b1d408db6083c744cbe729a09be8","sha512":"5cf5abe480b8a3dd7c1c1fcf5de6ce131f5ddcc3854647142911f897c4277cca8bc35f91642da1053a1a688a10887767ef7c76fd8f5b62741ecca48eb90bf695","ssdeep":"","tlshash":"39f0615a2e574c70d177b516773ff304706331079041f411794d55084f20e43ca40c90","size":481,"data":"","first_seen":"2026-07-27T04:06:32.642993Z","last_seen":"2026-07-27T05:13:31.023274Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cryptotradingaibot.com/","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"introduction_type":"scriptElement","is_inline":true,"md5":"0028eceb53675f4f8672027fdd990ea1","sha1":"ad6d7daf3597aaea67250d0898e28383026fb568","sha256":"3cb2a2eadbd855c401d1cca6766e7eafc28e8590b553ffe26c3c6999636bcb3e","sha512":"c9784141dcaf6819cf5e7994510cbf75f40f9f04f139f2d98d3d2711ded78fbcda4646c20ba813ab66c50ef6402073a64e80b55d0a1d8c4ef076729cdc9c9cc9","ssdeep":"384:vQlygWhMrRkSKo0MmaOLPS50KCupdx3U3ab2:sOi/2","tlshash":"c0c21169b3bf1431a593216a5f9b23486231a0133d03dddd3e3d83c04fa2625957abf9","size":27777,"data":"","first_seen":"2026-07-27T04:06:32.644223Z","last_seen":"2026-07-27T05:13:31.023954Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cryptotradingaibot.com/build/assets/app-D6cTXETb.js","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"introduction_type":"scriptElement","is_inline":false,"md5":"0706fcfd768571a12e8630ff7aea0206","sha1":"d2572f3fbdf626ee44d02619cb6839247245779c","sha256":"48c38640371f2760d438f77b829420e6dda47297dea39f7ccc16ebc6af2af6b1","sha512":"402f67d65cfb7ac9005f1cce841f07a0fa8f656cd1b828fd8f7a4a386ff89127253e0d5323ea4f59b4b30698fc24bd5dbcb175f71991e11281aadd1b4578ffcb","ssdeep":"1536:cUHsudmKlzk0RRb3lOUoSbwhHtFhszFpdq0rsS3:cUHE4zHVOUoS4HtFhszlVrsS3","tlshash":"007307e972d5b07243ea11f250bf0606f3396954780e44a4b528ecdb383648e96f3fb9","size":80059,"data":"","first_seen":"2026-07-27T04:06:32.622184Z","last_seen":"2026-07-27T05:13:31.020457Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-16FC5ZC18Q","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"28ffd9d88af9fda6d489dafd39aba818","sha1":"f627437e33574cca63320c3ab79a2e9348d2a935","sha256":"2739aeba19a60437633956a62716d14825a5e98a73733ad82242d2d9eb7260ce","sha512":"320a247bb49373df0c9ef7ea2038116af9503166bbd27dc0ca1ab264733f08279f5f7c0b5a3ec3eac73a7685cc7e073e2ce28dfa031354e006b34e8b1ff1c4dc","ssdeep":"6144:0CoBU0jIWXbP69FMxmRknhqsScPmfxNf3EjUxVGaZoXzRYak:voS1WLP69VwqxVZO3k","tlshash":"82b4faceb3d674265396f478503f01cba57b28e2b45cc89ab189cce02d7465a8167f7c","size":499272,"data":"","first_seen":"2026-07-27T04:06:32.641524Z","last_seen":"2026-07-27T05:13:31.022498Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cryptotradingaibot.com/","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"introduction_type":"eventHandler","is_inline":false,"md5":"43e28c5553d54ed2964bd5147521769b","sha1":"0a2b8c3db330a47aa7b9195e6dfdf944adb9240d","sha256":"d63026c985dc46aeb316574b7bf1828080c906238e35d5e34cb80414c0e70d23","sha512":"6dda085e4196167cf64287cb675c05b09bdaa291decebd1bea2b52ccdbd380de5875dc233fa3d439559413693f1e7974f485d60a2c1541bf62a8887bf5ff9811","ssdeep":"","tlshash":"1b80000c0a20c0882a00af00e000c202a0c2200f0220238ce823bce2a83c888808fea0","size":38,"data":"","first_seen":"2023-04-10T16:02:06Z","last_seen":"2026-07-30T05:21:52.283087Z","times_seen":188313,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"cryptotradingaibot.com/","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T05:13:00.196Z","timestamp":1785129180196,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cryptotradingaibot.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 11 Jun 2026 03:39:31 GMT","end":"Wed, 09 Sep 2026 03:39:30 GMT"},"fingerprint":{"sha1":"84:6B:D3:A9:DD:43:2F:AA:89:E5:90:F6:E8:F0:FA:01:97:A8:A6:5E","sha256":"FD:48:88:77:05:50:E5:1F:58:01:E8:02:34:9A:F7:4B:21:FC:F2:09:35:6F:39:08:39:9B:F6:A0:2C:0D:E6:F6"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: cryptotradingaibot.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nx-powered-by: PHP/8.2.31\r\ncontent-type: text/html; charset=UTF-8\r\ncache-control: no-cache, private\r\nset-cookie: XSRF-TOKEN=eyJpdiI6IlFBYUExOTJra1NMU1JMRGxwcUVXYkE9PSIsInZhbHVlIjoiQ2pjT0Z1cFRNK21WQldnRXVqZ21nMmZyN2F0d3hFZEY1em1Xa2NEOXdUdm9aTFZQZW15YmE4NlJxeDlVeVc3REhjZ3dtM2JwNlQ5dWNHcEFOZFN0YU9oNUMybk9sMUJCRHAwcUlHSSsydUM0bFJzdnE1eDZvVmZPS0UzalMxODYiLCJtYWMiOiJjNmQ4MmZkNjA3ZWI1MjAxYmNhZjVkMDk4MWNiMjUwMWE0NTM1N2U1N2VkZTJiMDllMTM0Mjg5NTRlMjFmZmM4IiwidGFnIjoiIn0%3D; expires=Mon, 27 Jul 2026 13:13:00 GMT; Max-Age=28800; path=/; secure; samesite=lax\nlaravel_session=eyJpdiI6Im0rcEF2akxnL3ZCL1NUWFhIZlZsZlE9PSIsInZhbHVlIjoiVE5YUzdyNWhkemRtK2tER3A0R0t1ZXc4UGZ4ZmtSUy9GOU1Sb25XUFhnRm5GblRqdXFVeFFxNFFTdUYzYm82VXI5TkpLT2U1b3NkZ2U1UDBvc1hyaW52ZWtpSk9xQ29JSXJ0RzhRUzFkbjlQQjJCdzNhb0ZRWHFBZ3AybTVucWEiLCJtYWMiOiI5ODJlZmY4OGZhM2ExOWUwZWM4YWFmNTc2NDhiMTJhYjA5OWRkNzdjODc3OWRiMTA5ODZjYTlkNzlhNGEzNjQxIiwidGFnIjoiIn0%3D; expires=Mon, 27 Jul 2026 13:13:00 GMT; Max-Age=28800; path=/; secure; httponly; samesite=lax\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ndate: Mon, 27 Jul 2026 05:13:00 GMT\r\nserver: LiteSpeed\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nalt-svc: h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\"\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"PHP:8.2.31","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":124465,"size_decoded":30710,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (1302), with CRLF, LF line terminators","md5":"772389a1443da5f738961fbd0c7d8f1a","sha1":"0839c27ace73a30c90c4e2e596a377db65811cf3","sha256":"0b0d8aeeeece80577f79fa121c48795dca32f59360c12d51934acf1629c8fb14","sha512":"c322218216d2cf1c916d4845746906cba3b23b955ba84aad71c0c5ed5beb6e6c1f46f6a942114f0f65b76dba8a6d6dfb72e3c72e7365812355d23d563f1a15dc","ssdeep":"768:9N9zm+DLMRxjxB34nyS0SBIP2QcSen/vHhzxh8xx38oBh82a8FciB7GCkfVB0wDD:9NhLQcbvHKT8oB3exgi5","tlshash":"9ac3b53563f5116aa1d3c1b17b766b2caa29c143ea0bc9ddb3ac83844fc6c95cd13668","first_seen":"2026-07-27T05:13:31.01816Z","last_seen":"2026-07-27T05:13:31.01816Z","times_seen":1,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgICAgIDx0aXRsZT5DcnlwdG8gVHJhZGluZyBCb3Qg4oCTIEZyZWUgQUkgQXV0b21hdGVkIEJpbmFuY2UgVHJhZGluZyBCb3QgMjAyNjwvdGl0bGU+CiAgICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJZc1BVbWlNQzJGZGtaU3BwNi1EWmNYamx1VDR4NjR1X1M3NVB0cHZPQk1rIiAvPgogICAgICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJCZXN0IGZyZWUgY3J5cHRvIHRyYWRpbmcgYm90IHBvd2VyZWQgYnkgQUkuIEF1dG9tYXRlZCBCaW5hbmNlIHRyYWRpbmcgYm90IHJ1bnMgMjQvNyB1c2luZyBBVFIgdm9sYXRpbGl0eSBzdHJhdGVneS4gTm8gZnVuZCBjdXN0b2R5IOKAlCB5b3VyIGNyeXB0byBzdGF5cyBpbiB5b3VyIEJpbmFuY2UgYWNjb3VudC4gRnJlZSBBSSBzaWduYWxzIG9uIFRlbGVncmFtLiBTdGFydCBmcmVlIHRvZGF5LiI+CiAgICAgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImNyeXB0byB0cmFkaW5nIGJvdCwgYmVzdCBjcnlwdG8gdHJhZGluZyBib3QsIGZyZWUgY3J5cHRvIHRyYWRpbmcgYm90LCBBSSBjcnlwdG8gdHJhZGluZyBib3QsIGF1dG9tYXRlZCBjcnlwdG8gdHJhZGluZyBib3QsIGJpbmFuY2UgdHJhZGluZyBib3QsIGJpbmFuY2UgZnV0dXJlcyBib3QsIGNyeXB0byB0cmFkaW5nIGJvdCAyMDI2LCBmcmVlIGNyeXB0byB0cmFkaW5nIHNpZ25hbHMsIGF1dG9tYXRlZCBiaXRjb2luIHRyYWRpbmcgYm90LCBiaW5hbmNlIGJvdCBmcmVlLCBjcnlwdG8gYm90IG5vIGN1c3RvZHkiPgogICAgICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0iaW5kZXgsIGZvbGxvdyI+CiAgICAgICBuayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tIj4KICAgICAgICA8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZmxhbmc9ImVuIiBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20iPgogICAgICAgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmbGFuZz0ieC1kZWZhdWx0IiBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20iPgogICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIj4KICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkNyeXB0byBUcmFkaW5nIEJvdCDigJMgRnJlZSBBSSBBdXRvbWF0ZWQgQmluYW5jZSBUcmFkaW5nIEJvdCAyMDI2Ij4KICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkJlc3QgZnJlZSBjcnlwdG8gdHJhZGluZyBib3QgcG93ZXJlZCBieSBBSS4gQXV0b21hdGVkIEJpbmFuY2UgdHJhZGluZyBib3QsIDI0LzcgQVRSIHN0cmF0ZWd5LCBubyBmdW5kIGN1c3RvZHkuIEZyZWUgc2lnbmFscyBvbiBUZWxlZ3JhbS4iPgogICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbSI+CiAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vaW1hZ2VzL2NyeXB0by10cmFkaW5nLWFpLWJvdC5wbmciPgogICAgICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkNyeXB0byBUcmFkaW5nIEFJIEJvdCI+CiAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmxvY2FsZSIgY29udGVudD0iZW5fVVMiPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAY3J5cHRvdHJhZGluZ2FpYm90Ij4KICAgICAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnRpdGxlIiBjb250ZW50PSJDcnlwdG8gVHJhZGluZyBCb3Qg4oCTIEZyZWUgQUkgQXV0b21hdGVkIEJpbmFuY2UgVHJhZGluZyBCb3QgMjAyNiI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0iQmVzdCBmcmVlIGNyeXB0byB0cmFkaW5nIGJvdCBwb3dlcmVkIGJ5IEFJLiBBdXRvbWF0ZWQgQmluYW5jZSB0cmFkaW5nIGJvdCwgMjQvNyBBVFIgc3RyYXRlZ3ksIG5vIGZ1bmQgY3VzdG9keS4gRnJlZSBzaWduYWxzIG9uIFRlbGVncmFtLiI+CiAgICAgICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2ltYWdlcy9jcnlwdG8tdHJhZGluZy1haS1ib3QucG5nIj4KICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkNyeXB0byBUcmFkaW5nIEFJIEJvdCI+CiAgICAgICAgPG1ldGEgbmFtZT0iY3NyZi10b2tlbiIgY29udGVudD0iTFVRYXZQQW1Sc2pYbDhxbnhnaFRXSEpLN1UxT0MxaEt3Ykswa1F0byI+CiAgICAgICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJpbWFnZXMvZmF2aWNvbi5wbmciIHR5cGU9ImltYWdlL3gtaWNvbiI+CiAgICAgICAgCiAgICAgICAgPGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vaW1hZ2VzL2NyeXB0by10cmFkaW5nLWFpLWJvdC5wbmciIGFzPSJpbWFnZSIgZmV0Y2hwcmlvcml0eT0iaGlnaCI+CiAgICAgICAgCiAgICAgICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmJ1bm55Lm5ldCIgY3Jvc3NvcmlnaW4+CiAgICAgICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIgY3Jvc3NvcmlnaW4+CiAgICAgICAgCiAgICAgICAgPGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSJodHRwczovL2ZvbnRzLmJ1bm55Lm5ldC9jc3M/ZmFtaWx5PWluc3RydW1lbnQtc2Fuczo0MDAsNTAwLDYwMCw3MDAiIGFzPSJzdHlsZSIgb25sb2FkPSJ0aGlzLm9ubG9hZD1udWxsO3RoaXMucmVsPSdzdHlsZXNoZWV0JyIgLz48bm9zY3JpcHQ+PGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5idW5ueS5uZXQvY3NzP2ZhbWlseT1pbnN0cnVtZW50LXNhbnM6NDAwLDUwMCw2MDAsNzAwIiByZWw9InN0eWxlc2hlZXQiIC8+PC9ub3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICA8bGluayByZWw9InByZWxvYWQiIGFzPSJzdHlsZSIgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2J1aWxkL2Fzc2V0cy9hcHAtQ3RSX0FRaHAuY3NzIiAvPjxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2J1aWxkL2Fzc2V0cy9hcHAtRDZjVFhFVGIuanMiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYnVpbGQvYXNzZXRzL2FwcC1DdFJfQVFocC5jc3MiIC8+PHNjcmlwdCB0eXBlPSJtb2R1bGUiIHNyYz0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2J1aWxkL2Fzc2V0cy9hcHAtRDZjVFhFVGIuanMiPjwvc2NyaXB0PiAgICAgICAgICAgICAgICAKICAgICAgICA8c2NyaXB0PgogICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLTE2RkM1WkMxOFEnOwogICAgICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICAgICAgICAgICAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CiAgICAgICAgICAgIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICAgICAgICAgICAgZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsKICAgICAgICAgICAgZ3RhZygnY29uZmlnJywgJ0ctMTZGQzVaQzE4UScsIHsgJ3NlbmRfcGFnZV92aWV3JzogdHJ1ZSB9KTsKICAgICAgICAgIH0pOwogICAgICAgIDwvc2NyaXB0PgogICAgICAgIAogICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgYm9keXttYXJnaW46MDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzBmMTcyYSAwJSwjM2IwNzY0IDUwJSwjMGYxNzJhIDEwMCUpO2NvbG9yOiNmZmY7Zm9udC1mYW1pbHk6aW5zdHJ1bWVudC1zYW5zLHVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bWluLWhlaWdodDoxMDB2aH0KICAgICAgICAgICAgbmF2e3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NTA7cGFkZGluZzouNzVyZW0gMXJlbX0KICAgICAgICAgICAgaDF7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjEuMX0KICAgICAgICAgICAgLnRleHQtdHJhbnNwYXJlbnR7Y29sb3I6dHJhbnNwYXJlbnR9CiAgICAgICAgICAgIC5iZy1jbGlwLXRleHR7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dDtiYWNrZ3JvdW5kLWNsaXA6dGV4dH0KICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgICAgICAgewogICAgICAgICAgICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAgICAgICAgICAgIkBncmFwaCI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAiQGlkIjogImh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS8jb3JnYW5pemF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJDcnlwdG8gVHJhZGluZyBBSSBCb3QiLAogICAgICAgICAgICAgICAgICAgICJhbHRlcm5hdGVOYW1lIjogWyJDcnlwdG9UcmFkaW5nQUlCb3QiLCAiQ3J5cHRvIFRyYWRpbmcgQm90IiwgIkFJIENyeXB0byBCb3QiXSwKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImxvZ28iOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJJbWFnZU9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2ltYWdlcy9jcnlwdG8tdHJhZGluZy1haS1ib3QucG5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMTgwLAogICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNzAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJpbWFnZSI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vaW1hZ2VzL2NyeXB0by10cmFkaW5nLWFpLWJvdC5wbmciLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDcnlwdG8gVHJhZGluZyBBSSBCb3QgaXMgYSBmcmVlIGF1dG9tYXRlZCBCaW5hbmNlIHRyYWRpbmcgYm90IHVzaW5nIEFJIGFuZCBBVFIgdm9sYXRpbGl0eSBzdHJhdGVneS4gWW91ciBmdW5kcyBuZXZlciBsZWF2ZSB5b3VyIEJpbmFuY2UgYWNjb3VudCDigJQgQVBJIHRyYWRpbmcgb25seSwgbm8gY3VzdG9keS4iLAogICAgICAgICAgICAgICAgICAgICJmb3VuZGluZ0RhdGUiOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAgICAgImFkZHJlc3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJQb3N0YWxBZGRyZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0cmVldEFkZHJlc3MiOiAiMjQ1IFByb3NwZWN0IFBhcmsgV2VzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhZGRyZXNzTG9jYWxpdHkiOiAiQnJvb2tseW4iLAogICAgICAgICAgICAgICAgICAgICAgICAiYWRkcmVzc1JlZ2lvbiI6ICJOWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJwb3N0YWxDb2RlIjogIjExMjE1IiwKICAgICAgICAgICAgICAgICAgICAgICAgImFkZHJlc3NDb3VudHJ5IjogIlVTIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImNvbnRhY3RQb2ludCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkNvbnRhY3RQb2ludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic3VwcG9ydEBAY3J5cHRvdHJhZGluZ2FpYm90LmNvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGFjdFR5cGUiOiAiY3VzdG9tZXIgc3VwcG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXZhaWxhYmxlTGFuZ3VhZ2UiOiAiRW5nbGlzaCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInNhbWVBcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vY3J5cHRvX2xhdGVzdF9uZXdzLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL3QubWUvYmluYW5jZUJvdFRyYWRlU2lnbmFsIgogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgImtub3dzQWJvdXQiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICJDcnlwdG8gVHJhZGluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJCaW5hbmNlIFRyYWRpbmcgQm90IiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFJIFRyYWRpbmcgQm90IiwKICAgICAgICAgICAgICAgICAgICAgICAgIkF1dG9tYXRlZCBDcnlwdG9jdXJyZW5jeSBUcmFkaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFUUiBWb2xhdGlsaXR5IFN0cmF0ZWd5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIkJpdGNvaW4gVHJhZGluZyBCb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAiRnV0dXJlcyBUcmFkaW5nIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIldlYlNpdGUiLAogICAgICAgICAgICAgICAgICAgICJAaWQiOiAiaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tLyN3ZWJzaXRlIiwKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbSIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ3J5cHRvIFRyYWRpbmcgQUkgQm90IiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRnJlZSBhdXRvbWF0ZWQgQmluYW5jZSBjcnlwdG8gdHJhZGluZyBib3Qgd2l0aCBBSSBzaWduYWxzLiBObyBmdW5kIGN1c3RvZHkg4oCUIHlvdXIgY3J5cHRvIHN0YXlzIGluIHlvdXIgYWNjb3VudC4iLAogICAgICAgICAgICAgICAgICAgICJwdWJsaXNoZXIiOiB7ICJAaWQiOiAiaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tLyNvcmdhbml6YXRpb24iIH0sCiAgICAgICAgICAgICAgICAgICAgImluTGFuZ3VhZ2UiOiAiZW4tVVMiLAogICAgICAgICAgICAgICAgICAgICJwb3RlbnRpYWxBY3Rpb24iOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJTZWFyY2hBY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAidGFyZ2V0IjogeyAiQHR5cGUiOiAiRW50cnlQb2ludCIsICJ1cmxUZW1wbGF0ZSI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYmxvZz9xPXtzZWFyY2hfdGVybV9zdHJpbmd9IiB9LAogICAgICAgICAgICAgICAgICAgICAgICAicXVlcnktaW5wdXQiOiAicmVxdWlyZWQgbmFtZT1zZWFyY2hfdGVybV9zdHJpbmciCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiV2ViUGFnZSIsCiAgICAgICAgICAgICAgICAgICAgIkBpZCI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vI3dlYnBhZ2UiLAogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tIiwKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJDcnlwdG8gVHJhZGluZyBBSSBCb3Qg4oCTIEZyZWUgQXV0b21hdGVkIEJpbmFuY2UgVHJhZGluZyBCb3QgMjAyNiIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBiZXN0IGZyZWUgY3J5cHRvIHRyYWRpbmcgYm90IHBvd2VyZWQgYnkgQUkuIEF1dG9tYXRlZCBCaW5hbmNlIHRyYWRpbmcsIEFUUiBzdHJhdGVneSwgbm8gZnVuZCBjdXN0b2R5LiIsCiAgICAgICAgICAgICAgICAgICAgImlzUGFydE9mIjogeyAiQGlkIjogImh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS8jd2Vic2l0ZSIgfSwKICAgICAgICAgICAgICAgICAgICAiYWJvdXQiOiB7ICJAaWQiOiAiaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tLyNvcmdhbml6YXRpb24iIH0sCiAgICAgICAgICAgICAgICAgICAgInByaW1hcnlJbWFnZU9mUGFnZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkltYWdlT2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vaW1hZ2VzL2NyeXB0by10cmFkaW5nLWFpLWJvdC5wbmciCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiYnJlYWRjcnVtYiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkJyZWFkY3J1bWJMaXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIml0ZW1MaXN0RWxlbWVudCI6IFt7ICJAdHlwZSI6ICJMaXN0SXRlbSIsICJwb3NpdGlvbiI6IDEsICJuYW1lIjogIkhvbWUiLCAiaXRlbSI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vIiB9XQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIlNvZnR3YXJlQXBwbGljYXRpb24iLAogICAgICAgICAgICAgICAgICAgICJAaWQiOiAiaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tLyNzb2Z0d2FyZSIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ3J5cHRvIFRyYWRpbmcgQUkgQm90IiwKICAgICAgICAgICAgICAgICAgICAiYWx0ZXJuYXRlTmFtZSI6ICJDcnlwdG8gVHJhZGluZyBCb3QiLAogICAgICAgICAgICAgICAgICAgICJhcHBsaWNhdGlvbkNhdGVnb3J5IjogIkZpbmFuY2VBcHBsaWNhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uU3ViQ2F0ZWdvcnkiOiAiQ3J5cHRvY3VycmVuY3kgVHJhZGluZyBCb3QiLAogICAgICAgICAgICAgICAgICAgICJvcGVyYXRpbmdTeXN0ZW0iOiAiV2ViLCBDbG91ZCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20iLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGcmVlIEFJLXBvd2VyZWQgYXV0b21hdGVkIGNyeXB0byB0cmFkaW5nIGJvdCBmb3IgQmluYW5jZS4gVXNlcyBBVFIgdm9sYXRpbGl0eSBzdHJhdGVneSwgdHJhZGVzIDI0LzcsIG5vIGZ1bmQgY3VzdG9keS4gQmVzdCBjcnlwdG8gdHJhZGluZyBib3QgZm9yIEJpbmFuY2UgZnV0dXJlcyBhbmQgc3BvdCB0cmFkaW5nLiIsCiAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVMaXN0IjogWwogICAgICAgICAgICAgICAgICAgICAgICAiMjQvNyBBdXRvbWF0ZWQgQmluYW5jZSBUcmFkaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkFUUiBWb2xhdGlsaXR5IFN0cmF0ZWd5IiwKICAgICAgICAgICAgICAgICAgICAgICAgIk5vIEZ1bmQgQ3VzdG9keSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJGcmVlIEFJIFRyYWRpbmcgU2lnbmFscyBvbiBUZWxlZ3JhbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJCaW5hbmNlIEZ1dHVyZXMgYW5kIFNwb3QgU3VwcG9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJEeW5hbWljIFJpc2sgTWFuYWdlbWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJTbWFydCBUcmFpbGluZyBTdG9wcyIKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJzY3JlZW5zaG90IjogImh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9pbWFnZXMvY3J5cHRvLXRyYWRpbmctYWktYm90LnBuZyIsCiAgICAgICAgICAgICAgICAgICAgImF1dGhvciI6IHsgIkBpZCI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vI29yZ2FuaXphdGlvbiIgfSwKICAgICAgICAgICAgICAgICAgICAicHVibGlzaGVyIjogeyAiQGlkIjogImh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS8jb3JnYW5pemF0aW9uIiB9LAogICAgICAgICAgICAgICAgICAgICJvZmZlcnMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJPZmZlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICJwcmljZSI6ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInByaWNlQ3VycmVuY3kiOiAiVVNEIiwKICAgICAgICAgICAgICAgICAgICAgICAgImF2YWlsYWJpbGl0eSI6ICJodHRwczovL3NjaGVtYS5vcmcvSW5TdG9jayIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGcmVlIHBsYW4gYXZhaWxhYmxlLiBQcmVtaXVtIHN1YnNjcmlwdGlvbiBwbGFucyBmb3IgYWR2YW5jZWQgZmVhdHVyZXMuIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFnZ3JlZ2F0ZVJhdGluZyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkFnZ3JlZ2F0ZVJhdGluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJyYXRpbmdWYWx1ZSI6ICI0LjgiLAogICAgICAgICAgICAgICAgICAgICAgICAicmV2aWV3Q291bnQiOiAiNDciLAogICAgICAgICAgICAgICAgICAgICAgICAiYmVzdFJhdGluZyI6ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIndvcnN0UmF0aW5nIjogIjEiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiRkFRUGFnZSIsCiAgICAgICAgICAgICAgICAgICAgIkBpZCI6ICJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vI2ZhcSIsCiAgICAgICAgICAgICAgICAgICAgIm1haW5FbnRpdHkiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXaGF0IGlzIHRoZSBiZXN0IGNyeXB0byB0cmFkaW5nIGJvdCBmb3IgQmluYW5jZSBpbiAyMDI2PyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQiOiAiQ3J5cHRvIFRyYWRpbmcgQUkgQm90IGlzIG9uZSBvZiB0aGUgYmVzdCBmcmVlIGNyeXB0byB0cmFkaW5nIGJvdHMgZm9yIEJpbmFuY2UgaW4gMjAyNi4gSXQgdXNlcyBBVFIgdm9sYXRpbGl0eSBzdHJhdGVneSBmb3IgYXV0b21hdGVkIDI0LzcgdHJhZGluZyB3aXRoIG5vIGZ1bmQgY3VzdG9keSDigJQgeW91ciBjcnlwdG8gYWx3YXlzIHN0YXlzIGluIHlvdXIgb3duIEJpbmFuY2UgYWNjb3VudC4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXaGF0IGlzIGEgY3J5cHRvIHRyYWRpbmcgYm90PyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQiOiAiQSBjcnlwdG8gdHJhZGluZyBib3QgaXMgYW4gYXV0b21hdGVkIHNvZnR3YXJlIHByb2dyYW0gdGhhdCB0cmFkZXMgY3J5cHRvY3VycmVuY3kgb24geW91ciBiZWhhbGYgdXNpbmcgcHJlZGVmaW5lZCBzdHJhdGVnaWVzLiBJdCBjb25uZWN0cyB0byB5b3VyIGV4Y2hhbmdlIHZpYSBBUEkga2V5cywgbW9uaXRvcnMgdGhlIG1hcmtldCAyNC83LCBhbmQgcGxhY2VzIGJ1eS9zZWxsIG9yZGVycyBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgcmVxdWlyaW5nIG1hbnVhbCBpbnB1dC4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJJcyB0aGlzIGNyeXB0byB0cmFkaW5nIGJvdCBmcmVlPyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQiOiAiWWVzLiBDcnlwdG8gVHJhZGluZyBBSSBCb3Qgb2ZmZXJzIGEgZnJlZSBwbGFuIHRvIGdldCBzdGFydGVkLiBGcmVlIEFJLXBvd2VyZWQgdHJhZGluZyBzaWduYWxzIGFyZSBhbHNvIGF2YWlsYWJsZSBvbiBvdXIgVGVsZWdyYW0gY2hhbm5lbCBhdCBubyBjb3N0LiBQcmVtaXVtIHN1YnNjcmlwdGlvbiBwbGFucyBhcmUgYXZhaWxhYmxlIGZvciBhZHZhbmNlZCBhdXRvbWF0ZWQgdHJhZGluZyBmZWF0dXJlcy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJRdWVzdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJIb3cgZG9lcyB0aGUgQmluYW5jZSB0cmFkaW5nIGJvdCB3b3JrPyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0ZWRBbnN3ZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIkFuc3dlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQiOiAiVGhlIGJvdCBjb25uZWN0cyB0byB5b3VyIEJpbmFuY2UgYWNjb3VudCB1c2luZyBBUEkga2V5cyB3aXRoIHRyYWRlLW9ubHkgcGVybWlzc2lvbnMgKG5vIHdpdGhkcmF3YWwgYWNjZXNzKS4gSXQgdXNlcyBBVFItYmFzZWQgdm9sYXRpbGl0eSBhbmFseXNpcyB0byBpZGVudGlmeSBlbnRyeSBhbmQgZXhpdCBwb2ludHMsIHBsYWNlcyB0cmFkZXMgYXV0b21hdGljYWxseSAyNC83LCBhbmQgYXBwbGllcyBkeW5hbWljIHJpc2sgbWFuYWdlbWVudCBpbmNsdWRpbmcgdHJhaWxpbmcgc3RvcHMgYW5kIHN0b3AtbG9zcyBvcmRlcnMuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSXMgbXkgbW9uZXkgc2FmZSB3aXRoIHRoaXMgdHJhZGluZyBib3Q/IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dCI6ICJZZXMuIFlvdXIgZnVuZHMgbmV2ZXIgbGVhdmUgeW91ciBCaW5hbmNlIGFjY291bnQuIFdlIG9ubHkgdXNlIEFQSSBrZXlzIHdpdGggdHJhZGluZyBwZXJtaXNzaW9ucyDigJQgbmV2ZXIgd2l0aGRyYXdhbCBhY2Nlc3MuIFRoZSBib3QgY2Fubm90IG1vdmUgeW91ciBmdW5kcyB0byBhbnkgZXh0ZXJuYWwgd2FsbGV0IG9yIGFjY291bnQuIFlvdSBtYWludGFpbiBmdWxsIGNvbnRyb2wgb2YgeW91ciBtb25leSBhdCBhbGwgdGltZXMuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiUXVlc3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiV2hhdCBpcyBBVFIgdm9sYXRpbGl0eSBzdHJhdGVneSBpbiBjcnlwdG8gdHJhZGluZz8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VwdGVkQW5zd2VyIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJBbnN3ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IjogIkFUUiAoQXZlcmFnZSBUcnVlIFJhbmdlKSBpcyBhIHRlY2huaWNhbCBpbmRpY2F0b3IgdGhhdCBtZWFzdXJlcyBtYXJrZXQgdm9sYXRpbGl0eS4gT3VyIGNyeXB0byB0cmFkaW5nIGJvdCB1c2VzIEFUUiB0byBkeW5hbWljYWxseSBhZGp1c3QgcG9zaXRpb24gc2l6ZXMsIHN0b3AtbG9zcyBsZXZlbHMsIGFuZCB0cmFpbGluZyBzdG9wcyBiYXNlZCBvbiByZWFsLXRpbWUgbWFya2V0IGNvbmRpdGlvbnMg4oCUIG1ha2luZyBpdCBtb3JlIGFkYXB0aXZlIHRoYW4gZml4ZWQtcnVsZSBib3RzLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogIlF1ZXN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNhbiBJIGdldCBmcmVlIGNyeXB0byB0cmFkaW5nIHNpZ25hbHM/IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlcHRlZEFuc3dlciI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiQW5zd2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dCI6ICJZZXMuIFdlIG9mZmVyIGZyZWUgQUktcG93ZXJlZCBjcnlwdG8gdHJhZGluZyBzaWduYWxzIG9uIG91ciBUZWxlZ3JhbSBjaGFubmVsIChAYmluYW5jZUJvdFRyYWRlU2lnbmFsKS4gU2lnbmFscyBjb3ZlciBCaW5hbmNlIGZ1dHVyZXMgYW5kIHNwb3QgbWFya2V0cy4gWW91IGNhbiB1c2UgdGhlbSBmb3IgbWFudWFsIHRyYWRpbmcgb3IgbGV0IHRoZSBib3QgZXhlY3V0ZSB0aGVtIGF1dG9tYXRpY2FsbHkuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiSXRlbUxpc3QiLAogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNyeXB0byBUcmFkaW5nIEJvdCBGZWF0dXJlcyIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIktleSBmZWF0dXJlcyBvZiBDcnlwdG8gVHJhZGluZyBBSSBCb3Qg4oCUIHRoZSBiZXN0IGZyZWUgYXV0b21hdGVkIHRyYWRpbmcgYm90IGZvciBCaW5hbmNlIiwKICAgICAgICAgICAgICAgICAgICAiaXRlbUxpc3RFbGVtZW50IjogWwogICAgICAgICAgICAgICAgICAgICAgICB7ICJAdHlwZSI6ICJMaXN0SXRlbSIsICJwb3NpdGlvbiI6IDEsICJuYW1lIjogIjI0LzcgQXV0b21hdGVkIEJpbmFuY2UgVHJhZGluZyIsICJkZXNjcmlwdGlvbiI6ICJCb3QgdHJhZGVzIHJvdW5kIHRoZSBjbG9jayB3aXRob3V0IGFueSBtYW51YWwgaW50ZXJ2ZW50aW9uIiB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICJAdHlwZSI6ICJMaXN0SXRlbSIsICJwb3NpdGlvbiI6IDIsICJuYW1lIjogIkFUUiBWb2xhdGlsaXR5IFN0cmF0ZWd5IiwgImRlc2NyaXB0aW9uIjogIkFkdmFuY2VkIEF2ZXJhZ2UgVHJ1ZSBSYW5nZSBhbmFseXNpcyBmb3Igc21hcnRlciB0cmFkZSBlbnRyaWVzIGFuZCBleGl0cyIgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQHR5cGUiOiAiTGlzdEl0ZW0iLCAicG9zaXRpb24iOiAzLCAibmFtZSI6ICJObyBGdW5kIEN1c3RvZHkiLCAiZGVzY3JpcHRpb24iOiAiWW91ciBjcnlwdG8gYWx3YXlzIHN0YXlzIGluIHlvdXIgb3duIEJpbmFuY2UgYWNjb3VudCDigJQgd2UgbmV2ZXIgaG9sZCBmdW5kcyIgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQHR5cGUiOiAiTGlzdEl0ZW0iLCAicG9zaXRpb24iOiA0LCAibmFtZSI6ICJGcmVlIEFJIFRyYWRpbmcgU2lnbmFscyIsICJkZXNjcmlwdGlvbiI6ICJGcmVlIFRlbGVncmFtIGNoYW5uZWwgd2l0aCBBSS1nZW5lcmF0ZWQgQmluYW5jZSB0cmFkaW5nIHNpZ25hbHMiIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkB0eXBlIjogIkxpc3RJdGVtIiwgInBvc2l0aW9uIjogNSwgIm5hbWUiOiAiRHluYW1pYyBSaXNrIE1hbmFnZW1lbnQiLCAiZGVzY3JpcHRpb24iOiAiSW50ZWxsaWdlbnQgc3RvcC1sb3NzLCB0cmFpbGluZyBzdG9wcywgYW5kIHBvc2l0aW9uIHNpemluZyBiYXNlZCBvbiB2b2xhdGlsaXR5IiB9CiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfQogICAgICAgIDwvc2NyaXB0PgogICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9ImJnLWdyYWRpZW50LXRvLWJyIGZyb20tc2xhdGUtOTAwIHZpYS1wdXJwbGUtOTAwIHRvLXNsYXRlLTkwMCB0ZXh0LXdoaXRlIG1pbi1oLXNjcmVlbiI+CiAgICAgICAgPHN0eWxlPg0KICAgIC52aWEtcHVycGxlLTkwMHsgICAgLS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksICMyMzAyMWUgdmFyKC0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO30NCiAgICBuYXYgYXtjb2xvcjojY2NjICFpbXBvcnRhbnR9DQo8L3N0eWxlPg0KDQo8bmF2IGNsYXNzPSJyZWxhdGl2ZSB6LTUwIHB4LTQgc206cHgtNiBweS00Ij4NCiAgICA8ZGl2IGNsYXNzPSJtYXgtdy03eGwgbXgtYXV0byBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIiPg0KICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20iIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIiPg0KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9pbWFnZXMvY3J5cHRvLXRyYWRpbmctYWktYm90LnBuZyIgYWx0PSJDcnlwdG8gVHJhZGluZyBBSSBCb3QgTG9nbyIgd2lkdGg9IjE4MCINCiAgICAgICAgICAgICAgICBoZWlnaHQ9IjcwIiBzdHlsZT0ibWF4LWhlaWdodDogNzBweDsiIGZldGNocHJpb3JpdHk9ImhpZ2giIGxvYWRpbmc9ImVhZ2VyIiBkZWNvZGluZz0iYXN5bmMiPg0KICAgICAgICA8L2E+DQoNCiAgICAgICAgPCEtLSBEZXNrdG9wIE5hdmlnYXRpb24gLS0+DQogICAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbiBzbTpmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQiPg0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tIiBjbGFzcz0icHgtNCBweS0yIHRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+SG9tZTwvYT4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9jcnlwdG8tdHJhZGluZy1haS1ib3QiDQogICAgICAgICAgICAgICAgY2xhc3M9InB4LTQgcHktMiB0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkhvdyBJdCBXb3JrczwvYT4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9iZXN0LWNyeXB0by10cmFkaW5nLWJvdCINCiAgICAgICAgICAgICAgICBjbGFzcz0icHgtNCBweS0yIHRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+Q29tcGFyZTwvYT4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9iaW5hbmNlLXRyYWRpbmctYm90Ig0KICAgICAgICAgICAgICAgIGNsYXNzPSJweC00IHB5LTIgdGV4dC1ibHVlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5CaW5hbmNlIEJvdDwvYT4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9ibG9nIg0KICAgICAgICAgICAgICAgIGNsYXNzPSJweC00IHB5LTIgdGV4dC1ibHVlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5CbG9nPC9hPg0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2NvbnRhY3QiDQogICAgICAgICAgICAgICAgY2xhc3M9ImJsb2NrIHB4LTQgcHktMiB0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgcm91bmRlZC1sZyBob3ZlcjpiZy13aGl0ZS8xMCB0ZXh0LWNlbnRlciI+Q29udGFjdDwvYT4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9hYm91dCINCiAgICAgICAgICAgICAgICBjbGFzcz0iYmxvY2sgcHgtNCBweS0yIHRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyByb3VuZGVkLWxnIGhvdmVyOmJnLXdoaXRlLzEwIHRleHQtY2VudGVyIj5BYm91dDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vbG9naW4iDQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJibG9jayBweC00IHB5LTIgdGV4dC1ibHVlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIHJvdW5kZWQtbGcgaG92ZXI6Ymctd2hpdGUvMTAgdGV4dC1jZW50ZXIiPkxvZ2luPC9hPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9yZWdpc3RlciINCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImJsb2NrIHB4LTQgcHktMiBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS02MDAgdG8tcHVycGxlLTYwMCBob3Zlcjpmcm9tLWJsdWUtNzAwIGhvdmVyOnRvLXB1cnBsZS03MDAgcm91bmRlZC1sZyB0cmFuc2l0aW9uLWFsbCB0ZXh0LWNlbnRlciI+R2V0DQogICAgICAgICAgICAgICAgICAgIFN0YXJ0ZWQ8L2E+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDwhLS0gTW9iaWxlIE1lbnUgQnV0dG9uIC0tPg0KICAgICAgICA8ZGl2IGNsYXNzPSJzbTpoaWRkZW4iPg0KICAgICAgICAgICAgPGJ1dHRvbiBpZD0ibW9iaWxlTWVudUJ0biIgdHlwZT0iYnV0dG9uIg0KICAgICAgICAgICAgICAgIGNsYXNzPSJwLTIgcm91bmRlZC1sZyBiZy13aGl0ZS8xMCBiYWNrZHJvcC1ibHVyLXNtIGJvcmRlciBib3JkZXItd2hpdGUvMjAiIGFyaWEtbGFiZWw9Ik1lbnUiPg0KICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNSBoLTUgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+DQogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNNCA2aDE2TTQgMTJoMTZNNCAxOGgxNiI+DQogICAgICAgICAgICAgICAgICAgIDwvcGF0aD4NCiAgICAgICAgICAgICAgICA8L3N2Zz4NCiAgICAgICAgICAgIDwvYnV0dG9uPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCg0KICAgIDwhLS0gTW9iaWxlIE5hdmlnYXRpb24gTWVudSAtLT4NCiAgICA8ZGl2IGlkPSJtb2JpbGVNZW51IiBjbGFzcz0iaGlkZGVuIHNtOmhpZGRlbiBtdC00IGJnLXdoaXRlLzEwIGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLXdoaXRlLzIwIj4NCiAgICAgICAgPGRpdiBjbGFzcz0icHgtNCBweS0zIHNwYWNlLXktMyI+DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20iDQogICAgICAgICAgICAgICAgY2xhc3M9ImJsb2NrIHB4LTQgcHktMiB0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkhvbWU8L2E+DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vY3J5cHRvLXRyYWRpbmctYWktYm90Ig0KICAgICAgICAgICAgICAgIGNsYXNzPSJibG9jayBweC00IHB5LTIgdGV4dC1ibHVlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5Ib3cgSXQgV29ya3M8L2E+DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYmVzdC1jcnlwdG8tdHJhZGluZy1ib3QiDQogICAgICAgICAgICAgICAgY2xhc3M9ImJsb2NrIHB4LTQgcHktMiB0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkNvbXBhcmU8L2E+DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYmluYW5jZS10cmFkaW5nLWJvdCINCiAgICAgICAgICAgICAgICBjbGFzcz0iYmxvY2sgcHgtNCBweS0yIHRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+QmluYW5jZSBCb3Q8L2E+DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYmxvZyINCiAgICAgICAgICAgICAgICBjbGFzcz0iYmxvY2sgcHgtNCBweS0yIHRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+QmxvZzwvYT4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9jb250YWN0Ig0KICAgICAgICAgICAgICAgIGNsYXNzPSJibG9jayBweC00IHB5LTIgdGV4dC1ibHVlLTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIHJvdW5kZWQtbGcgaG92ZXI6Ymctd2hpdGUvMTAiPkNvbnRhY3Q8L2E+DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYWJvdXQiDQogICAgICAgICAgICAgICAgY2xhc3M9ImJsb2NrIHB4LTQgcHktMiB0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgcm91bmRlZC1sZyBob3ZlcjpiZy13aGl0ZS8xMCI+QWJvdXQ8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2xvZ2luIg0KICAgICAgICAgICAgICAgICAgICBjbGFzcz0iYmxvY2sgcHgtNCBweS0yIHRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyByb3VuZGVkLWxnIGhvdmVyOmJnLXdoaXRlLzEwIj5Mb2dpbjwvYT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vcmVnaXN0ZXIiDQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJibG9jayBweC00IHB5LTIgYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNjAwIHRvLXB1cnBsZS02MDAgaG92ZXI6ZnJvbS1ibHVlLTcwMCBob3Zlcjp0by1wdXJwbGUtNzAwIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1hbGwgdGV4dC1jZW50ZXIiPkdldA0KICAgICAgICAgICAgICAgICAgICBTdGFydGVkPC9hPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvbmF2PgogICAgICAgIDwhLS0gSGVybyBTZWN0aW9uIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyZWxhdGl2ZSBweC02IHB5LTIwIG92ZXJmbG93LWhpZGRlbiI+CiAgICAgICAgICAgIDwhLS0gQ1NTIGdyYWRpZW50IHNob3dzIGluc3RhbnRseSwgY2FudmFzIGNoYXJ0IGxvYWRzIGFmdGVyIHBhZ2UgbG9hZCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCBvcGFjaXR5LTIwIiBzdHlsZT0iYmFja2dyb3VuZDojMDUwYjEyIj4KICAgICAgICAgICAgICAgIDxjYW52YXMgaWQ9InRyYWRpbmdDaGFydCIgY2xhc3M9InctZnVsbCBoLWZ1bGwiPjwvY2FudmFzPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gVHJhZGluZyBTaWduYWxzIE92ZXJsYXkgLS0+CiAgICAgICAgICAgIDxkaXYgaWQ9InRyYWRpbmdTaWduYWxzIiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCBwb2ludGVyLWV2ZW50cy1ub25lIHotMjAiPgogICAgICAgICAgICAgICAgPCEtLSBCdXkgU2lnbmFsIC0tPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iYnV5U2lnbmFsIiBjbGFzcz0iYWJzb2x1dGUgYmctZ3JlZW4tNTAwLzk1IGJhY2tkcm9wLWJsdXItc20gdGV4dC13aGl0ZSBweC00IHB5LTMgcm91bmRlZC1sZyBmb250LWJvbGQgdGV4dC1zbSB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwIG9wYWNpdHktMCB0cmFuc2xhdGUteS00IHNoYWRvdy1sZyBib3JkZXIgYm9yZGVyLWdyZWVuLTQwMC8zMCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JlZW4tMzAwIj7wn5qAPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1ncmVlbi0xMDAiPkJVWSBTSUdOQUw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQteHMgdGV4dC1ncmVlbi0yMDAiIGlkPSJidXlQcmljZSI+JDQ1LDIzMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8IS0tIFByb2ZpdCBUYWtlIFNpZ25hbCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InByb2ZpdFNpZ25hbCIgY2xhc3M9ImFic29sdXRlIGJnLWJsdWUtNTAwLzk1IGJhY2tkcm9wLWJsdXItc20gdGV4dC13aGl0ZSBweC00IHB5LTMgcm91bmRlZC1sZyBmb250LWJvbGQgdGV4dC1zbSB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwIG9wYWNpdHktMCB0cmFuc2xhdGUteS00IHNoYWRvdy1sZyBib3JkZXIgYm9yZGVyLWJsdWUtNDAwLzMwIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ibHVlLTMwMCI+8J+SsDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtYmx1ZS0xMDAiPlBST0ZJVCBUQUtFTjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC14cyB0ZXh0LWJsdWUtMjAwIiBpZD0icHJvZml0QW1vdW50Ij4rJDIsNDUwICgrNS40JSk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPCEtLSBTZWxsIFNpZ25hbCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNlbGxTaWduYWwiIGNsYXNzPSJhYnNvbHV0ZSBiZy1wdXJwbGUtNTAwLzk1IGJhY2tkcm9wLWJsdXItc20gdGV4dC13aGl0ZSBweC00IHB5LTMgcm91bmRlZC1sZyBmb250LWJvbGQgdGV4dC1zbSB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwIG9wYWNpdHktMCB0cmFuc2xhdGUteS00IHNoYWRvdy1sZyBib3JkZXIgYm9yZGVyLXB1cnBsZS00MDAvMzAiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXB1cnBsZS0zMDAiPvCfk4g8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXB1cnBsZS0xMDAiPlNFTEwgU0lHTkFMPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXhzIHRleHQtcHVycGxlLTIwMCIgaWQ9InNlbGxQcmljZSI+JDQ3LDY4MDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gQWRkaXRpb25hbCBUcmFkaW5nIFN0YXRzIC0tPgogICAgICAgICAgICAgICAgPGRpdiBpZD0ic3RhdHNTaWduYWwiIGNsYXNzPSJhYnNvbHV0ZSBiZy15ZWxsb3ctNTAwLzk1IGJhY2tkcm9wLWJsdXItc20gdGV4dC13aGl0ZSBweC00IHB5LTMgcm91bmRlZC1sZyBmb250LWJvbGQgdGV4dC1zbSB0cmFuc2Zvcm0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwIG9wYWNpdHktMCB0cmFuc2xhdGUteS00IHNoYWRvdy1sZyBib3JkZXIgYm9yZGVyLXllbGxvdy00MDAvMzAiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXllbGxvdy0zMDAiPvCfk4o8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXllbGxvdy0xMDAiPjI0SCBQUk9GSVQ8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQteHMgdGV4dC15ZWxsb3ctMjAwIj4rJDgsNzUwICgrMTguMiUpPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF4LXctN3hsIG14LWF1dG8gdGV4dC1jZW50ZXIgcmVsYXRpdmUgei0xMCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi04Ij4KICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9InRleHQtNXhsIG1kOnRleHQtN3hsIGZvbnQtYm9sZCBtYi02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTQwMCB2aWEtcHVycGxlLTQwMCB0by1waW5rLTQwMCBiZy1jbGlwLXRleHQgdGV4dC10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcnlwdG8gVHJhZGluZyBBSSBCb3QKICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXdoaXRlIHRleHQtM3hsIG1kOnRleHQtNXhsIj7igJMgQXV0b21hdGVkIEJpbmFuY2UgVHJhZGluZyAmYW1wOyBGcmVlIEFJIFNpZ25hbHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC14bCBtZDp0ZXh0LTJ4bCB0ZXh0LWdyYXktMzAwIG1iLTggbWF4LXctM3hsIG14LWF1dG8iPgogICAgICAgICAgICAgICAgICAgICAgICBPdXIgY3J5cHRvIHRyYWRpbmcgQUkgYm90IGlzIGFuIGF1dG9tYXRlZCB0cmFkaW5nIHN5c3RlbSBmb3IgQmluYW5jZSB0aGF0IHJ1bnMgMjQvNyB1c2luZyBBVFItYmFzZWQgdm9sYXRpbGl0eSBzdHJhdGVnaWVzLiBJdOKAmXMgYnVpbHQgZm9yIHRyYWRlcnMgd2hvIHdhbnQgc2lnbmFscyBhbmQgZXhlY3V0aW9uIHdpdGhvdXQgZ2l2aW5nIHVwIGNvbnRyb2w6IHlvdXIgZnVuZHMgc3RheSBpbiB5b3VyIG93biBCaW5hbmNlIGFjY291bnTigJR3ZSBuZXZlciBob2xkIG9yIGN1c3RvZHkgeW91ciBtb25leS4gR2V0IGZyZWUgQUkgc2lnbmFscyBvbiBUZWxlZ3JhbSBhbmQgc3RhcnQgd2l0aCBubyBmdW5kIGN1c3RvZHkuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBnYXAtNCBqdXN0aWZ5LWNlbnRlciBtYi0xNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL3JlZ2lzdGVyIiBjbGFzcz0icHgtOCBweS00IGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTYwMCB0by1wdXJwbGUtNjAwIGhvdmVyOmZyb20tYmx1ZS03MDAgaG92ZXI6dG8tcHVycGxlLTcwMCByb3VuZGVkLWxnIHRleHQtbGcgZm9udC1zZW1pYm9sZCB0cmFuc2l0aW9uLWFsbCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0IEZyZWUg4oCTIE5vIEZ1bmQgQ3VzdG9keQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9sb2dpbiIgY2xhc3M9InB4LTggcHktNCBib3JkZXIgYm9yZGVyLWdyYXktNjAwIGhvdmVyOmJvcmRlci1ncmF5LTUwMCByb3VuZGVkLWxnIHRleHQtbGcgZm9udC1zZW1pYm9sZCB0cmFuc2l0aW9uLWFsbCBiYWNrZHJvcC1ibHVyLXNtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ24gSW4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8IS0tIFN0YXRzIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMyBnYXAtOCBtYXgtdy00eGwgbXgtYXV0byI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvMTAgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0zeGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMiI+MjQvNzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWdyYXktMzAwIj4yNCBCb3QgVHJhZGU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS8xMCBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQteGwgcC02IGJvcmRlciBib3JkZXItd2hpdGUvMjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1wdXJwbGUtNDAwIG1iLTIiPjk5LjklPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZ3JheS0zMDAiPkJpbmFuY2UgQm90IFRyYWRlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvMTAgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0zeGwgZm9udC1ib2xkIHRleHQtcGluay00MDAgbWItMiI+QUk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1ncmF5LTMwMCI+Qm90IFRyYWRlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIEFJLVBvd2VyZWQgVHJhZGluZyBCb3QgU2VjdGlvbiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icmVsYXRpdmUgcHgtNiBweS0yMCBiZy1ncmFkaWVudC10by1iciBmcm9tLWdyYXktOTAwIHZpYS1ibHVlLTkwMC8yMCB0by1wdXJwbGUtOTAwLzIwIG92ZXJmbG93LWhpZGRlbiI+CiAgICAgICAgICAgIDwhLS0gQW5pbWF0ZWQgQmFja2dyb3VuZCBFbGVtZW50cyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCBvcGFjaXR5LTEwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHRvcC0yMCBsZWZ0LTEwIHctMzIgaC0zMiBiZy1ibHVlLTUwMC8zMCByb3VuZGVkLWZ1bGwgYmx1ci14bCBhbmltYXRlLXB1bHNlIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS0yMCByaWdodC0xMCB3LTQwIGgtNDAgYmctcHVycGxlLTUwMC8zMCByb3VuZGVkLWZ1bGwgYmx1ci14bCBhbmltYXRlLXB1bHNlIiBzdHlsZT0iYW5pbWF0aW9uLWRlbGF5OiAxczsiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMyB3LTI0IGgtMjQgYmctZ3JlZW4tNTAwLzMwIHJvdW5kZWQtZnVsbCBibHVyLXhsIGFuaW1hdGUtcHVsc2UiIHN0eWxlPSJhbmltYXRpb24tZGVsYXk6IDJzOyI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF4LXctN3hsIG14LWF1dG8gcmVsYXRpdmUgei0xMCI+CiAgICAgICAgICAgICAgICA8IS0tIFNlY3Rpb24gSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgbWItMTYiPgogICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGV4dC00eGwgbWQ6dGV4dC02eGwgZm9udC1ib2xkIG1iLTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNDAwIHZpYS1wdXJwbGUtNDAwIHRvLXBpbmstNDAwIGJnLWNsaXAtdGV4dCB0ZXh0LXRyYW5zcGFyZW50IGZyb20tYmx1ZS00MDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93IFRoaXMgQ3J5cHRvIFRyYWRpbmcgQUkgQm90IFdvcmtzCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhsIG1kOnRleHQtMnhsIHRleHQtZ3JheS0zMDAgbWF4LXctNHhsIG14LWF1dG8gbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIE91ciBBSSBjcnlwdG8gdHJhZGluZyBib3QgdXNlcyBBVFItYmFzZWQgdm9sYXRpbGl0eSBhbmFseXNpcywgZHluYW1pYyByaXNrIG1hbmFnZW1lbnQsIAogICAgICAgICAgICAgICAgICAgICAgICBhbmQgMjQvNyBCaW5hbmNlIGV4ZWN1dGlvbi4gTm8gY3VzdG9keeKAlHlvdXIgZnVuZHMgc3RheSBpbiB5b3VyIGFjY291bnQuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUcmFkaW5nIEZlYXR1cmVzIEdyaWQgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0yIGdhcC04IG1iLTE2Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIExlZnQgU2lkZSAtIEZlYXR1cmVzIExpc3QgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2UteS04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBVFIgVm9sYXRpbGl0eSBNYW5hZ2VtZW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC0yeGwgcC04IGJvcmRlciBib3JkZXItd2hpdGUvMTAgaG92ZXI6Ym9yZGVyLWdyZWVuLTUwMC8zMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1zdGFydCBzcGFjZS14LTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgtc2hyaW5rLTAgdy0xMiBoLTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ncmVlbi01MDAgdG8tZW1lcmFsZC01MDAgcm91bmRlZC14bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBncm91cC1ob3ZlcjpzY2FsZS0xMTAgdHJhbnNpdGlvbi10cmFuc2Zvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTYgaC02IHRleHQtd2hpdGUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik05IDE5di02YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJ6bTAgMFY5YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MTBtLTYgMGEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0ybTAgMFY1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MTRhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTMiPkFUUiBWb2xhdGlsaXR5IEFuYWx5c2lzPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ3JheS0zMDAgbWItNCI+RHluYW1pYyBBdmVyYWdlIFRydWUgUmFuZ2UgY2FsY3VsYXRpb24gYWRqdXN0cyBwb3NpdGlvbiBzaXplcyBhbmQgc3RvcC1sb3NzZXMgYmFzZWQgb24gcmVhbC10aW1lIG1hcmtldCB2b2xhdGlsaXR5LiBMZWFybiBtb3JlIGFib3V0IG91ciA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vY3J5cHRvLXRyYWRpbmctYWktYm90IiBjbGFzcz0idGV4dC1ibHVlLTQwMCBob3Zlcjp0ZXh0LWJsdWUtMzAwIHVuZGVybGluZSI+Y3J5cHRvIHRyYWRpbmcgQUkgYm90IHN0cmF0ZWd5PC9hPi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmctZ3JlZW4tNTAwLzIwIHRleHQtZ3JlZW4tMzAwIHRleHQtc20gcm91bmRlZC1mdWxsIj5SZWFsLXRpbWUgQVRSOiA8c3BhbiBpZD0iYXRyVmFsdWUiPjIuNCU8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmctYmx1ZS01MDAvMjAgdGV4dC1ibHVlLTMwMCB0ZXh0LXNtIHJvdW5kZWQtZnVsbCI+Vm9sYXRpbGl0eTogPHNwYW4gaWQ9InZvbGF0aWxpdHlMZXZlbCI+TWVkaXVtPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRHluYW1pYyBUcmFpbGluZyBTdG9wcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQtMnhsIHAtOCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci1ibHVlLTUwMC8zMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1zdGFydCBzcGFjZS14LTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgtc2hyaW5rLTAgdy0xMiBoLTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTUwMCB0by1jeWFuLTUwMCByb3VuZGVkLXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdyb3VwLWhvdmVyOnNjYWxlLTExMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEzIDdoOG0wIDB2OG0wLThsLTggOC00LTQtNiA2Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgtMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC14bCBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0zIj5TbWFydCBUcmFpbGluZyBTdG9wczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIG1iLTQiPkFJLXBvd2VyZWQgdHJhaWxpbmcgc3RvcCBtYW5hZ2VtZW50IHRoYXQgYWRhcHRzIHRvIG1hcmtldCBjb25kaXRpb25zIGFuZCBtYXhpbWl6ZXMgcHJvZml0IHdoaWxlIHByb3RlY3RpbmcgY2FwaXRhbC4gU2VlIGhvdyBvdXIgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2JpbmFuY2UtdHJhZGluZy1ib3QiIGNsYXNzPSJ0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtYmx1ZS0zMDAgdW5kZXJsaW5lIj5CaW5hbmNlIHRyYWRpbmcgYm90PC9hPiBwcm90ZWN0cyB5b3VyIHRyYWRlcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmctYmx1ZS01MDAvMjAgdGV4dC1ibHVlLTMwMCB0ZXh0LXNtIHJvdW5kZWQtZnVsbCI+VHJhaWwgRGlzdGFuY2U6IDxzcGFuIGlkPSJ0cmFpbERpc3RhbmNlIj4xLjglPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMyBweS0xIGJnLXB1cnBsZS01MDAvMjAgdGV4dC1wdXJwbGUtMzAwIHRleHQtc20gcm91bmRlZC1mdWxsIj5BY3RpdmUgVHJhaWxzOiA8c3BhbiBpZD0iYWN0aXZlVHJhaWxzIj4zPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlzayBNYW5hZ2VtZW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC0yeGwgcC04IGJvcmRlciBib3JkZXItd2hpdGUvMTAgaG92ZXI6Ym9yZGVyLXB1cnBsZS01MDAvMzAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtc3RhcnQgc3BhY2UteC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4LXNocmluay0wIHctMTIgaC0xMiBiZy1ncmFkaWVudC10by1yIGZyb20tcHVycGxlLTUwMCB0by1waW5rLTUwMCByb3VuZGVkLXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdyb3VwLWhvdmVyOnNjYWxlLTExMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTkgMTJsMiAyIDQtNG01LjYxOC00LjAxNkExMS45NTUgMTEuOTU1IDAgMDExMiAyLjk0NGExMS45NTUgMTEuOTU1IDAgMDEtOC42MTggMy4wNEExMi4wMiAxMi4wMiAwIDAwMyA5YzAgNS41OTEgMy44MjQgMTAuMjkgOSAxMS42MjIgNS4xNzYtMS4zMzIgOS02LjAzMSA5LTExLjYyMiAwLTEuMDQyLS4xMzMtMi4wNTItLjM4Mi0zLjAxNnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTMiPkR5bmFtaWMgUmlzayBNYW5hZ2VtZW50PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ3JheS0zMDAgbWItNCI+SW50ZWxsaWdlbnQgcG9zaXRpb24gc2l6aW5nIGFuZCBzdG9wLWxvc3MgcGxhY2VtZW50IGJhc2VkIG9uIG1hcmtldCB2b2xhdGlsaXR5IGFuZCBhY2NvdW50IGJhbGFuY2UgcHJvdGVjdGlvbi4gQ29tcGFyZSB1cyB3aXRoIHRoZSA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYmVzdC1jcnlwdG8tdHJhZGluZy1ib3QiIGNsYXNzPSJ0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtYmx1ZS0zMDAgdW5kZXJsaW5lIj5iZXN0IGNyeXB0byB0cmFkaW5nIGJvdHM8L2E+IGF2YWlsYWJsZS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmctcHVycGxlLTUwMC8yMCB0ZXh0LXB1cnBsZS0zMDAgdGV4dC1zbSByb3VuZGVkLWZ1bGwiPk1heCBSaXNrOiA8c3BhbiBpZD0ibWF4UmlzayI+MiU8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmctcGluay01MDAvMjAgdGV4dC1waW5rLTMwMCB0ZXh0LXNtIHJvdW5kZWQtZnVsbCI+V2luIFJhdGU6IDxzcGFuIGlkPSJ3aW5SYXRlIj43OCU8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IFNpZGUgLSBMaXZlIFRyYWRpbmcgQW5pbWF0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctYmxhY2svNDAgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLTJ4bCBwLTggYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBoLWZ1bGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC14bCBmb250LWJvbGQgdGV4dC13aGl0ZSI+TGl2ZSBUcmFkaW5nIFNpbXVsYXRpb248L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMyBoLTMgYmctZ3JlZW4tNTAwIHJvdW5kZWQtZnVsbCBhbmltYXRlLXB1bHNlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JlZW4tNDAwIHRleHQtc20gZm9udC1tZWRpdW0iPkFDVElWRTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWluaSBDaGFydCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIGgtNDggbWItNiBiZy1ncmF5LTkwMC81MCByb3VuZGVkLXhsIG92ZXJmbG93LXZpc2libGUgcC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2FudmFzIGlkPSJtaW5pVHJhZGluZ0NoYXJ0IiBjbGFzcz0idy1mdWxsIGgtZnVsbCI+PC9jYW52YXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUcmFkaW5nIE1hcmtlcnMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idHJhZGluZ01hcmtlcnMiIGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCdXkgTWFya2VyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJidXlNYXJrZXIiIGNsYXNzPSJhYnNvbHV0ZSB3LTMgaC0zIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXdoaXRlIG9wYWNpdHktMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgei0xMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSAtdG9wLTggLWxlZnQtOCBiZy1ncmVlbi01MDAvOTAgYmFja2Ryb3AtYmx1ci1zbSB0ZXh0LXdoaXRlIHRleHQteHMgcHgtMiBweS0xIHJvdW5kZWQgc2hhZG93LWxnIHdoaXRlc3BhY2Utbm93cmFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5qAIEJVWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGwgTWFya2VyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzZWxsTWFya2VyIiBjbGFzcz0iYWJzb2x1dGUgdy0zIGgtMyBiZy1yZWQtNTAwIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItd2hpdGUgb3BhY2l0eS0wIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB6LTEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIC10b3AtOCAtbGVmdC04IGJnLXJlZC01MDAvOTAgYmFja2Ryb3AtYmx1ci1zbSB0ZXh0LXdoaXRlIHRleHQteHMgcHgtMiBweS0xIHJvdW5kZWQgc2hhZG93LWxnIHdoaXRlc3BhY2Utbm93cmFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5KwIFNFTEwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQcm9maXQgTGluZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icHJvZml0TGluZSIgY2xhc3M9ImFic29sdXRlIGgtcHggYmctZ3JhZGllbnQtdG8tciBmcm9tLXRyYW5zcGFyZW50IHZpYS15ZWxsb3ctNDAwIHRvLXRyYW5zcGFyZW50IG9wYWNpdHktMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUcmFkaW5nIFN0YXRzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2UteS00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcC0zIGJnLXdoaXRlLzUgcm91bmRlZC1sZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIj5DdXJyZW50IFBvc2l0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iY3VycmVudFBvc2l0aW9uIiBjbGFzcz0idGV4dC1ncmVlbi00MDAgZm9udC1tb25vIj5MT05HIEJUQy9VU0RUPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBwLTMgYmctd2hpdGUvNSByb3VuZGVkLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheS0zMDAiPkVudHJ5IFByaWNlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iZW50cnlQcmljZSIgY2xhc3M9InRleHQtd2hpdGUgZm9udC1tb25vIj4kNDUsMjMwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBwLTMgYmctd2hpdGUvNSByb3VuZGVkLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheS0zMDAiPkN1cnJlbnQgUCZMPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iY3VycmVudFBuTCIgY2xhc3M9InRleHQtZ3JlZW4tNDAwIGZvbnQtbW9ubyI+KyQyLDQ1MCAoKzUuNCUpPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBwLTMgYmctd2hpdGUvNSByb3VuZGVkLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheS0zMDAiPlN0b3AgTG9zczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InN0b3BMb3NzIiBjbGFzcz0idGV4dC1yZWQtNDAwIGZvbnQtbW9ubyI+JDQzLDgwMCAoLTMuMiUpPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBwLTMgYmctd2hpdGUvNSByb3VuZGVkLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheS0zMDAiPlRyYWlsaW5nIFN0b3A8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJ0cmFpbGluZ1N0b3AiIGNsYXNzPSJ0ZXh0LXllbGxvdy00MDAgZm9udC1tb25vIj4kNDYsMTAwICgyLjElKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gUGVyZm9ybWFuY2UgTWV0cmljcyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTIgbWQ6Z3JpZC1jb2xzLTQgZ2FwLTYiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHAtNiBiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JlZW4tNDAwIG1iLTIiIGlkPSJ0b3RhbFRyYWRlcyI+MSwyNDc8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1ncmF5LTMwMCB0ZXh0LXNtIj5Ub3RhbCBUcmFkZXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBwLTYgYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTIiIGlkPSJhdmdQcm9maXQiPis0LjIlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZ3JheS0zMDAgdGV4dC1zbSI+QXZnIFByb2ZpdDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHAtNiBiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0zeGwgZm9udC1ib2xkIHRleHQtcHVycGxlLTQwMCBtYi0yIiBpZD0ibWF4RHJhd2Rvd24iPi0yLjglPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZ3JheS0zMDAgdGV4dC1zbSI+TWF4IERyYXdkb3duPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgcC02IGJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItd2hpdGUvMTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC15ZWxsb3ctNDAwIG1iLTIiIGlkPSJzaGFycGVSYXRpbyI+Mi4zNDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWdyYXktMzAwIHRleHQtc20iPlNoYXJwZSBSYXRpbzwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBGdW5kIFNlY3VyaXR5ICYgVHJhbnNwYXJlbmN5IFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJlbGF0aXZlIHB4LTYgcHktMjAgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1ncmF5LTkwMCB2aWEtZ3JlZW4tOTAwLzIwIHRvLWJsdWUtOTAwLzIwIG92ZXJmbG93LWhpZGRlbiI+CiAgICAgICAgICAgIDwhLS0gQW5pbWF0ZWQgQmFja2dyb3VuZCBFbGVtZW50cyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCBvcGFjaXR5LTEwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHRvcC0yMCBsZWZ0LTEwIHctMzIgaC0zMiBiZy1ncmVlbi01MDAvMzAgcm91bmRlZC1mdWxsIGJsdXIteGwgYW5pbWF0ZS1wdWxzZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBib3R0b20tMjAgcmlnaHQtMTAgdy00MCBoLTQwIGJnLWJsdWUtNTAwLzMwIHJvdW5kZWQtZnVsbCBibHVyLXhsIGFuaW1hdGUtcHVsc2UiIHN0eWxlPSJhbmltYXRpb24tZGVsYXk6IDFzOyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtMS8zIHctMjQgaC0yNCBiZy15ZWxsb3ctNTAwLzMwIHJvdW5kZWQtZnVsbCBibHVyLXhsIGFuaW1hdGUtcHVsc2UiIHN0eWxlPSJhbmltYXRpb24tZGVsYXk6IDJzOyI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF4LXctN3hsIG14LWF1dG8gcmVsYXRpdmUgei0xMCI+CiAgICAgICAgICAgICAgICA8IS0tIFNlY3Rpb24gSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgbWItMTYiPgogICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGV4dC00eGwgbWQ6dGV4dC02eGwgZm9udC1ib2xkIG1iLTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNDAwIHZpYS1wdXJwbGUtNDAwIHRvLXBpbmstNDAwIGJnLWNsaXAtdGV4dCB0ZXh0LXRyYW5zcGFyZW50IGZyb20tYmx1ZS00MDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBGdW5kcywgWW91ciBDb250cm9sIOKAkyBObyBDdXN0b2R5CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhsIG1kOnRleHQtMnhsIHRleHQtZ3JheS0zMDAgbWF4LXctNHhsIG14LWF1dG8gbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFdlIGFyZSA8c3Ryb25nPk5PVDwvc3Ryb25nPiBrZWVwaW5nIHlvdXIgZnVuZHMuIFdlIG9ubHkgcHJvdmlkZSAyNC1ob3VyIGF1dG9tYXRlZCB0cmFkaW5nIHNlcnZpY2VzIAogICAgICAgICAgICAgICAgICAgICAgICBvbiBCaW5hbmNlIHdpdGggb3VyIGFkdmFuY2VkIEFJIEFUUiB2b2xhdGlsaXR5LWJhc2VkIHN0cmF0ZWd5LgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gU2VjdXJpdHkgRmVhdHVyZXMgR3JpZCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTEgbGc6Z3JpZC1jb2xzLTIgZ2FwLTggbWItMTYiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gTGVmdCBTaWRlIC0gU2VjdXJpdHkgQmVuZWZpdHMgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2UteS04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBObyBGdW5kIEhvbGRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLTJ4bCBwLTggYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBob3Zlcjpib3JkZXItZ3JlZW4tNTAwLzMwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLXN0YXJ0IHNwYWNlLXgtNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC1zaHJpbmstMCB3LTEyIGgtMTIgYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTUwMCB0by1lbWVyYWxkLTUwMCByb3VuZGVkLXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdyb3VwLWhvdmVyOnNjYWxlLTExMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTkgMTJsMiAyIDQtNG01LjYxOC00LjAxNkExMS45NTUgMTEuOTU1IDAgMDExMiAyLjk0NGExMS45NTUgMTEuOTU1IDAgMDEtOC42MTggMy4wNEExMi4wMiAxMi4wMiAwIDAwMyA5YzAgNS41OTEgMy44MjQgMTAuMjkgOSAxMS42MjIgNS4xNzYtMS4zMzIgOS02LjAzMSA5LTExLjYyMiAwLTEuMDQyLS4xMzMtMi4wNTItLjM4Mi0zLjAxNnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTMiPk5vIEZ1bmQgQ3VzdG9keTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIG1iLTQiPllvdXIgZnVuZHMgcmVtYWluIGluIHlvdXIgb3duIEJpbmFuY2UgYWNjb3VudC4gV2UgbmV2ZXIgaG9sZCwgc3RvcmUsIG9yIGhhdmUgYWNjZXNzIHRvIHlvdXIgbW9uZXkuIENvbXBsZXRlIHRyYW5zcGFyZW5jeSBhbmQgY29udHJvbC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmctZ3JlZW4tNTAwLzIwIHRleHQtZ3JlZW4tMzAwIHRleHQtc20gcm91bmRlZC1mdWxsIj5Zb3VyIEJpbmFuY2UgQWNjb3VudDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMyBweS0xIGJnLWJsdWUtNTAwLzIwIHRleHQtYmx1ZS0zMDAgdGV4dC1zbSByb3VuZGVkLWZ1bGwiPkFQSSBUcmFkaW5nIE9ubHk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDI0LzcgQXV0b21hdGVkIFRyYWRpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLTJ4bCBwLTggYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBob3Zlcjpib3JkZXItYmx1ZS01MDAvMzAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtc3RhcnQgc3BhY2UteC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4LXNocmluay0wIHctMTIgaC0xMiBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS01MDAgdG8tY3lhbi01MDAgcm91bmRlZC14bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBncm91cC1ob3ZlcjpzY2FsZS0xMTAgdHJhbnNpdGlvbi10cmFuc2Zvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTYgaC02IHRleHQtd2hpdGUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0xMiA4djRsMyAzbTYtM2E5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTMiPjI0LzcgQXV0b21hdGVkIFRyYWRpbmc8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTMwMCBtYi00Ij5PdXIgQUkgYm90IHRyYWRlcyBjb250aW51b3VzbHkgb24geW91ciBiZWhhbGYgdXNpbmcgYWR2YW5jZWQgQVRSIHZvbGF0aWxpdHkgYW5hbHlzaXMuIE5vIG1hbnVhbCBpbnRlcnZlbnRpb24gcmVxdWlyZWQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMyBweS0xIGJnLWJsdWUtNTAwLzIwIHRleHQtYmx1ZS0zMDAgdGV4dC1zbSByb3VuZGVkLWZ1bGwiPlJvdW5kLXRoZS1DbG9jazwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMyBweS0xIGJnLXB1cnBsZS01MDAvMjAgdGV4dC1wdXJwbGUtMzAwIHRleHQtc20gcm91bmRlZC1mdWxsIj5BSS1Qb3dlcmVkPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBVFIgVm9sYXRpbGl0eSBTdHJhdGVneSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQtMnhsIHAtOCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci15ZWxsb3ctNTAwLzMwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLXN0YXJ0IHNwYWNlLXgtNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC1zaHJpbmstMCB3LTEyIGgtMTIgYmctZ3JhZGllbnQtdG8tciBmcm9tLXllbGxvdy01MDAgdG8tb3JhbmdlLTUwMCByb3VuZGVkLXhsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdyb3VwLWhvdmVyOnNjYWxlLTExMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTkgMTl2LTZhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMnptMCAwVjlhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxMG0tNiAwYTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJtMCAwVjVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMnYxNGEyIDIgMCAwMS0yIDJoLTJhMiAyIDAgMDEtMi0yeiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4LTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMyI+QVRSIFZvbGF0aWxpdHkgU3RyYXRlZ3k8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTMwMCBtYi00Ij5BZHZhbmNlZCBBdmVyYWdlIFRydWUgUmFuZ2UgYW5hbHlzaXMgYWRhcHRzIHRvIG1hcmtldCBjb25kaXRpb25zLCBvcHRpbWl6aW5nIGVudHJ5IGFuZCBleGl0IHBvaW50cyBiYXNlZCBvbiByZWFsLXRpbWUgdm9sYXRpbGl0eS4gRXhwbG9yZSBvdXIgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2FpLWJvdC10cmFkZSIgY2xhc3M9InRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC1ibHVlLTMwMCB1bmRlcmxpbmUiPkFJIGJvdCB0cmFkZTwvYT4gZmVhdHVyZXMgZm9yIGZ1bGwgZGV0YWlscy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmcteWVsbG93LTUwMC8yMCB0ZXh0LXllbGxvdy0zMDAgdGV4dC1zbSByb3VuZGVkLWZ1bGwiPkR5bmFtaWMgQVRSPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJweC0zIHB5LTEgYmctb3JhbmdlLTUwMC8yMCB0ZXh0LW9yYW5nZS0zMDAgdGV4dC1zbSByb3VuZGVkLWZ1bGwiPlNtYXJ0IFN0b3BzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IFNpZGUgLSBBbnRpLVNjYW0gTWVzc2FnZSAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLWJsYWNrLzQwIGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC0yeGwgcC04IGJvcmRlciBib3JkZXItd2hpdGUvMTAgaC1mdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIG1iLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMTYgaC0xNiBiZy1ncmFkaWVudC10by1yIGZyb20tcmVkLTUwMCB0by1waW5rLTUwMCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbXgtYXV0byBtYi00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy04IGgtOCB0ZXh0LXdoaXRlIiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTIgOXYybTAgNGguMDFtLTYuOTM4IDRoMTMuODU2YzEuNTQgMCAyLjUwMi0xLjY2NyAxLjczMi0yLjVMMTMuNzMyIDRjLS43Ny0uODMzLTEuOTY0LS44MzMtMi43MzIgMEwzLjczMiAxNi41Yy0uNzcuODMzLjE5MiAyLjUgMS43MzIgMi41eiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTQiPkJld2FyZSBvZiBTY2FtbWVyczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZS15LTQgbWItNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icC00IGJnLXJlZC01MDAvMTAgYm9yZGVyIGJvcmRlci1yZWQtNTAwLzIwIHJvdW5kZWQtbGciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtcmVkLTQwMCBmb250LXNlbWlib2xkIG1iLTIiPuKaoO+4jyBSZWQgRmxhZ3MgdG8gQXZvaWQ6PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIHRleHQtc20gc3BhY2UteS0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7igKIgU2VydmljZXMgdGhhdCBhc2sgeW91IHRvIHNlbmQgZnVuZHMgdG8gdGhlbTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIFBsYXRmb3JtcyB0aGF0IGhvbGQgeW91ciBtb25leSBpbiB0aGVpciBhY2NvdW50czwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIFByb21pc2VzIG9mIGd1YXJhbnRlZWQgcmV0dXJucyB3aXRob3V0IHJpc2s8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPuKAoiBQcmVzc3VyZSB0byBpbnZlc3QgbGFyZ2UgYW1vdW50cyBxdWlja2x5PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icC00IGJnLWdyZWVuLTUwMC8xMCBib3JkZXIgYm9yZGVyLWdyZWVuLTUwMC8yMCByb3VuZGVkLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyZWVuLTQwMCBmb250LXNlbWlib2xkIG1iLTIiPuKchSBIb3cgV2UncmUgRGlmZmVyZW50OjwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idGV4dC1ncmF5LTMwMCB0ZXh0LXNtIHNwYWNlLXktMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIFlvdXIgZnVuZHMgc3RheSBpbiBZT1VSIEJpbmFuY2UgYWNjb3VudDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIFdlIG9ubHkgdXNlIEFQSSBrZXlzIGZvciB0cmFkaW5nPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7igKIgTm8gZnVuZCB0cmFuc2ZlcnMgb3IgY3VzdG9keTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+4oCiIFRyYW5zcGFyZW50LCBhdXRvbWF0ZWQgdHJhZGluZyBvbmx5PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHB4LTQgcHktMiBiZy1ncmVlbi01MDAvMjAgdGV4dC1ncmVlbi0zMDAgcm91bmRlZC1mdWxsIHRleHQtc20iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTQgaC00IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNNSAxM2w0IDRMMTkgNyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MTAwJSBUcmFuc3BhcmVudCAmIFNlY3VyZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gVHJ1c3QgSW5kaWNhdG9ycyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTIgbWQ6Z3JpZC1jb2xzLTQgZ2FwLTYiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHAtNiBiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0zeGwgZm9udC1ib2xkIHRleHQtZ3JlZW4tNDAwIG1iLTIiPjAlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZ3JheS0zMDAgdGV4dC1zbSI+RnVuZCBDdXN0b2R5PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgcC02IGJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItd2hpdGUvMTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0yIj4yNC83PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZ3JheS0zMDAgdGV4dC1zbSI+QXV0b21hdGVkIFRyYWRpbmc8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBwLTYgYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LXllbGxvdy00MDAgbWItMiI+QVRSPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZ3JheS0zMDAgdGV4dC1zbSI+Vm9sYXRpbGl0eSBTdHJhdGVneTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIHAtNiBiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0zeGwgZm9udC1ib2xkIHRleHQtcHVycGxlLTQwMCBtYi0yIj5BUEk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1ncmF5LTMwMCB0ZXh0LXNtIj5UcmFkaW5nIE9ubHk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gRmVhdHVyZXMgU2VjdGlvbiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icHgtNiBweS0yMCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1heC13LTd4bCBteC1hdXRvIj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGV4dC00eGwgZm9udC1ib2xkIHRleHQtY2VudGVyIG1iLTE2Ij4KICAgICAgICAgICAgICAgICAgICBXaHkgVXNlIE91ciA8c3BhbiBjbGFzcz0iYmctZ3JhZGllbnQtdG8tciBmcm9tLWJsdWUtNDAwIHRvLXB1cnBsZS00MDAgYmctY2xpcC10ZXh0IHRleHQtdHJhbnNwYXJlbnQiPkFJIENyeXB0byBUcmFkaW5nIEJvdDwvc3Bhbj4gJmFtcDsgQmVzdCBDcnlwdG8gVHJhZGluZyBCb3QgZm9yIEJpbmFuY2UKICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTgiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMTIgaC0xMiBiZy1ibHVlLTYwMCByb3VuZGVkLWxnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG1iLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy02IGgtNiB0ZXh0LXdoaXRlIiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEzIDEwVjNMNCAxNGg3djdsOS0xMWgtN3oiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbWItMyI+TGlnaHRuaW5nIEZhc3Q8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTQwMCI+RXhlY3V0ZSB0cmFkZXMgaW4gbWlsbGlzZWNvbmRzIHdpdGggb3VyIGhpZ2gtZnJlcXVlbmN5IHRyYWRpbmcgYWxnb3JpdGhtcy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMTIgaC0xMiBiZy1wdXJwbGUtNjAwIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbWItNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTYgaC02IHRleHQtd2hpdGUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNOSAxMmwyIDIgNC00bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbWItMyI+UmlzayBNYW5hZ2VtZW50PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkFkdmFuY2VkIHN0b3AtbG9zcyBhbmQgdGFrZS1wcm9maXQgbWVjaGFuaXNtcyB0byBwcm90ZWN0IHlvdXIgaW52ZXN0bWVudHMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBwLTYgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBob3Zlcjpib3JkZXItd2hpdGUvMjAgdHJhbnNpdGlvbi1hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEyIGgtMTIgYmctcGluay02MDAgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtYi00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik05IDE5di02YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJ6bTAgMFY5YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MTBtLTYgMGEyIDIgMCAwMDIgMmgyYTIgMiAwIDAwMi0ybTAgMFY1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJ2MTRhMiAyIDAgMDEtMiAyaC0yYTIgMiAwIDAxLTItMnoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbWItMyI+UmVhbC10aW1lIEFuYWx5dGljczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIj5Nb25pdG9yIHlvdXIgcG9ydGZvbGlvIHBlcmZvcm1hbmNlIHdpdGggZGV0YWlsZWQgY2hhcnRzIGFuZCBpbnNpZ2h0cy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMTIgaC0xMiBiZy1ncmVlbi02MDAgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtYi00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0xMiAxNXYybS02IDRoMTJhMiAyIDAgMDAyLTJ2LTZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjZhMiAyIDAgMDAyIDJ6bTEwLTEwVjdhNCA0IDAgMDAtOCAwdjRoOHoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbWItMyI+U2VjdXJlIEFQSTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIj5CYW5rLWxldmVsIHNlY3VyaXR5IGZvciB5b3VyIGNyeXB0byBleGNoYW5nZSBBUEkga2V5cyBhbmQgdHJhZGluZyBkYXRhLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQteGwgcC02IGJvcmRlciBib3JkZXItd2hpdGUvMTAgaG92ZXI6Ym9yZGVyLXdoaXRlLzIwIHRyYW5zaXRpb24tYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xMiBoLTEyIGJnLXllbGxvdy02MDAgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtYi00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0xMyA3aDhtMCAwdjhtMC04bC04IDgtNC00LTYgNiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQteGwgZm9udC1zZW1pYm9sZCBtYi0zIj5Qcm9maXQgT3B0aW1pemF0aW9uPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkFJIGFsZ29yaXRobXMgdGhhdCBjb250aW51b3VzbHkgbGVhcm4gYW5kIG9wdGltaXplIGZvciBtYXhpbXVtIHByb2ZpdHMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBwLTYgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBob3Zlcjpib3JkZXItd2hpdGUvMjAgdHJhbnNpdGlvbi1hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEyIGgtMTIgYmctcmVkLTYwMCByb3VuZGVkLWxnIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG1iLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy02IGgtNiB0ZXh0LXdoaXRlIiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTEyIDh2NGwzIDNtNi0zYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAweiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQteGwgZm9udC1zZW1pYm9sZCBtYi0zIj4yNC83IE1vbml0b3Jpbmc8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTQwMCI+Um91bmQtdGhlLWNsb2NrIG1vbml0b3JpbmcgYW5kIGluc3RhbnQgbm90aWZpY2F0aW9ucyBmb3IgYWxsIHRyYWRpbmcgYWN0aXZpdGllcy48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIE5ldyBTZWN0aW9uOiBUZWxlZ3JhbSBTaWduYWxzIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJweC02IHB5LTIwIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTkwMC80MCB0by1jeWFuLTkwMC80MCBib3JkZXIteSBib3JkZXItd2hpdGUvNSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1heC13LTR4bCBteC1hdXRvIHRleHQtY2VudGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1ibG9jayBweC00IHB5LTIgYmctYmx1ZS01MDAvMjAgdGV4dC1ibHVlLTMwMCByb3VuZGVkLWZ1bGwgdGV4dC1zbSBmb250LXNlbWlib2xkIG1iLTYiPgogICAgICAgICAgICAgICAgICAgIPCfmoAgRnJlZSBBY2Nlc3MKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0ZXh0LTR4bCBmb250LWJvbGQgbWItNiI+CiAgICAgICAgICAgICAgICAgICAgRnJlZSBBSSBQb3dlcmVkIDxzcGFuIGNsYXNzPSJiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS00MDAgdG8tcHVycGxlLTQwMCBiZy1jbGlwLXRleHQgdGV4dC10cmFuc3BhcmVudCI+VGVsZWdyYW0gU2lnbmFsczwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTMwMCB0ZXh0LWxnIG1iLTggbGVhZGluZy1yZWxheGVkIj4KICAgICAgICAgICAgICAgICAgICBEb24ndCBtaXNzIG91dCBvbiBwcm9maXRhYmxlIG1hcmtldCBtb3Zlcy4gSm9pbiBvdXIgb2ZmaWNpYWwgVGVsZWdyYW0gY2hhbm5lbCB0byBnZXQgcmVhbC10aW1lLCBBSS1nZW5lcmF0ZWQgdHJhZGluZyBzaWduYWxzIGZvciBCaW5hbmNlIGZ1dHVyZXMgYW5kIHNwb3QgdHJhZGluZy4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGdhcC00IG1iLTgiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LWdyYXktMzAwIGJnLXdoaXRlLzUgcHgtNCBweS0yIHJvdW5kZWQtbGciPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmVlbi00MDAiPuKckzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UmVhbC10aW1lIEJ1eS9TZWxsIEFsZXJ0czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgdGV4dC1ncmF5LTMwMCBiZy13aGl0ZS81IHB4LTQgcHktMiByb3VuZGVkLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JlZW4tNDAwIj7inJM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkVudHJ5ICYgRXhpdCBab25lczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgdGV4dC1ncmF5LTMwMCBiZy13aGl0ZS81IHB4LTQgcHktMiByb3VuZGVkLWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JlZW4tNDAwIj7inJM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1hcmtldCBBbmFseXNpczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly90Lm1lL2JpbmFuY2VCb3RUcmFkZVNpZ25hbCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcHgtOCBweS00IGJnLVsjMDA4OGNjXSBob3ZlcjpiZy1bIzAwNzdiNV0gcm91bmRlZC1sZyB0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LWxnIHRyYW5zaXRpb24tYWxsIHRyYW5zZm9ybSBob3ZlcjpzY2FsZS0xMDUgc2hhZG93LWxnIHNoYWRvdy1ibHVlLTUwMC8yMCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy02IGgtNiBtci0zIiBmaWxsPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiAwQzUuMzczIDAgMCA1LjM3MyAwIDEyczUuMzczIDEyIDEyIDEyIDEyLTUuMzczIDEyLTEyUzE4LjYyNyAwIDEyIDB6bTUuODk0IDguMjIxbC0xLjk3IDkuMjhjLS4xNDUuNjU4LS41MzcuODE4LTEuMDg0LjUwOGwtMy0yLjIxLTEuNDQ2IDEuMzk0Yy0uMTYuMTYtLjI5NS4yOTUtLjYwNS4yOTVsLjIxMy0zLjA1NCA1LjU2LTUuMDIyYy4yNDItLjIxNS0uMDU0LS4zMzUtLjM3Ni0uMTIxbC02Ljg2OSA0LjMyNi0yLjk2LS45MjRjLS42NC0uMjAzLS42NTgtLjY0LjEzNS0uOTU0bDExLjU2Ni00LjQ1OGMuNTM4LS4xOTYgMS4wMDYuMTI4LjgzMi45NDF6Ii8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgSm9pbiBUZWxlZ3JhbSBDaGFubmVsCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBOZXcgU2VjdGlvbjogSW5zdGFncmFtIExhdGVzdCBOZXdzIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJweC02IHB5LTIwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF4LXctN3hsIG14LWF1dG8iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIgbWItMTYiPgogICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGV4dC00eGwgZm9udC1ib2xkIG1iLTYiPgogICAgICAgICAgICAgICAgICAgICAgICBMYXRlc3QgPHNwYW4gY2xhc3M9ImJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTQwMCB0by1wdXJwbGUtNDAwIGJnLWNsaXAtdGV4dCB0ZXh0LXRyYW5zcGFyZW50Ij5DcnlwdG8gTmV3czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhsIHRleHQtZ3JheS0zMDAgbWF4LXctM3hsIG14LWF1dG8iPgogICAgICAgICAgICAgICAgICAgICAgICBTdGF5IHVwZGF0ZWQgd2l0aCB0aGUgbW9zdCByZWNlbnQgZGV2ZWxvcG1lbnRzIGluIHRoZSBjcnlwdG8gd29ybGQuIEZvbGxvdyBvdXIgSW5zdGFncmFtIGZvciBkYWlseSBuZXdzLCBtYXJrZXQgbW92aW5nIHVwZGF0ZXMsIGFuZCB0cmVuZHMuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBJbnN0YWdyYW0gR3JpZCBNb2NrdXAgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0xIGxnOmdyaWQtY29scy00IGdhcC02IG1iLTEyIHRleHQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIDwhLS0gUG9zdCA0IChDVEEpIC0tPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vY3J5cHRvX2xhdGVzdF9uZXdzLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJncm91cCBibG9jayByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBhc3BlY3Qtc3F1YXJlIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tcHVycGxlLTYwMCB0by1waW5rLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWNlbnRlciBwLTYgYm9yZGVyIGJvcmRlci13aGl0ZS8yMCBob3ZlcjpzY2FsZS0xMDUgdHJhbnNpdGlvbi10cmFuc2Zvcm0iIHN0eWxlPSJtYXgtd2lkdGg6IDMwMHB4O21hcmdpbjogYXV0bzsiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy0xMiBoLTEyIHRleHQtd2hpdGUgbXgtYXV0byBtYi00IiBmaWxsPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDIuMTYzYzMuMjA0IDAgMy41ODQuMDEyIDQuODUuMDcgMS4zNjYuMDYyIDIuNjMzLjM1IDMuNjA4IDEuMzI1Ljk3NS45NzUgMS4yNjIgMi4yNDIgMS4zMjQgMy42MDguMDU4IDEuMjY2LjA3IDEuNjQ2LjA3IDQuODVzLS4wMTIgMy41ODQtLjA3IDQuODVjLS4wNjIgMS4zNjYtLjM1IDIuNjMzLTEuMzI0IDMuNjA4LS45NzUuOTc1LTIuMjQyIDEuMjYyLTMuNjA4IDEuMzI0LTEuMjY2LjA1OC0xLjY0Ni4wNy00Ljg1LjA3cy0zLjU4NC0uMDEyLTQuODUtLjA3Yy0xLjM2Ni0uMDYyLTIuNjMzLS4zNS0zLjYwOC0xLjMyNC0uOTc1LS45NzUtMS4yNjItMi4yNDItMS4zMjQtMy42MDhDMi4xNzUgMTUuNzQ3IDIuMTYzIDE1LjM2NyAyLjE2MyAxMnMuMDEyLTMuNTg0LjA3LTQuODVjLjA2Mi0xLjM2Ni4zNS0yLjYzMyAxLjMyNC0zLjYwOC45NzUtLjk3NSAyLjI0Mi0xLjI2MiAzLjYwOC0xLjMyNEM4LjQxNiAyLjE3NSA4Ljc5NiAyLjE2MyAxMiAyLjE2M3ptMC0yLjE2M0M4LjczNyAwIDguMzMyLjAxNCA3LjA1Mi4wNzIgNS43NzEuMTMgNC42NTkuNDI4IDMuNjc4IDEuNDA5IDIuNjk3IDIuMzkgMi40IDMuNTAyIDIuMzQyIDQuNzgzIDIuMjg0IDYuMDYzIDIuMjcgNi40NjggMi4yNyA5LjczMXY0LjUzOGMwIDMuMjYzLjAxNCAzLjY2OC4wNzIgNC45NDguMDU4IDEuMjgxLjM1NSAyLjM5MyAxLjMzNiAzLjM3NC45ODEuOTgxIDIuMDkzIDEuMjc5IDMuMzc0IDEuMzM2IDEuMjgxLjA1OCAxLjY4Ni4wNzIgNC45NDguMDcyczMuNjY4LS4wMTQgNC45NDgtLjA3MmMxLjI4MS0uMDU4IDIuMzkzLS4zNTUgMy4zNzQtMS4zMzYuOTgxLS45ODEgMS4yNzktMi4wOTMgMS4zMzYtMy4zNzQuMDU4LTEuMjgxLjA3Mi0xLjY4Ni4wNzItNC45NDhWOS43MzFjMC0zLjI2My0uMDE0LTMuNjY4LS4wNzItNC45NDgtLjA1OC0xLjI4MS0uMzU1LTIuMzkzLTEuMzM2LTMuMzc0QzIwLjM5My40MjggMTkuMjgxLjEzIDE4IC4wNzIgMTYuNzE5LjAxNCAxNi4zMTQgMCAxMy4wNTEgMEgxMnptMCA1LjgzOGE2LjE2MiA2LjE2MiAwIDEwMCAxMi4zMjQgNi4xNjIgNi4xNjIgMCAwMDAtMTIuMzI0em0wIDEwLjE2MmEzLjk5OSAzLjk5OSAwIDExMC03Ljk5OCAzLjk5OSAzLjk5OSAwIDAxMCA3Ljk5OHptNi40MDYtMTEuODQ1YTEuNDQgMS40NCAwIDExLTIuODggMCAxLjQ0IDEuNDQgMCAwMTIuODggMHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJibG9jayB0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTIiPkZvbGxvdyB1cyBGb3IgTGF0ZXN0IE5ld3M8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1waW5rLTEwMCI+Q2xpY2sgdG8gdmlzaXQgb3VyIEluc3RhZ3JhbTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InB4LTYgcHktMTAgdGV4dC1jZW50ZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXgtdy03eGwgbXgtYXV0byI+CiAgICAgICAgICAgIDwhLS0gUGxhbnMgRGlzcGxheSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2UteS02Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC0yeGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItOCI+QXZhaWxhYmxlIFBsYW5zPC9oMz4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBpZD0icGxhbnMtY29udGFpbmVyIiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMiBnYXAtOCAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLWxnIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTIiPkJhc2ljIFBsYW48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTIiPiQzMC4wMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIG1iLTQiPjEgTW9udGg8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtc20gdGV4dC1ncmF5LTMwMCI+UGVyZmVjdCBmb3IgYmVnaW5uZXJzLiAzMCBkYXlzIG9mIGF1dG9tYXRlZCB0cmFkaW5nLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLWxnIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTIiPlBybyBQbGFuPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LTN4bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0yIj4kODAuMDA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTQwMCBtYi00Ij4zIE1vbnRoczwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LWdyYXktMzAwIj5Nb3N0IHBvcHVsYXIgY2hvaWNlLiAzIG1vbnRocyBvZiBhZHZhbmNlZCB0cmFkaW5nIGZlYXR1cmVzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLWxnIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTIiPlByZW1pdW0gUGxhbjwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0zeGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMiI+JDE1MC4wMDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIG1iLTQiPjYgTW9udGhzPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtZ3JheS0zMDAiPkJlc3QgdmFsdWUuIDYgbW9udGhzIG9mIHByZW1pdW0gdHJhZGluZyB3aXRoIHByaW9yaXR5IHN1cHBvcnQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQtbGcgcC02IGJvcmRlciBib3JkZXItd2hpdGUvMTAgaG92ZXI6Ym9yZGVyLXdoaXRlLzIwIHRyYW5zaXRpb24tYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQteGwgZm9udC1ib2xkIHRleHQtd2hpdGUgbWItMiI+QW5udWFsIFBsYW48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTIiPiQyMjAuMDA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTQwMCBtYi00Ij4xIFllYXI8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtc20gdGV4dC1ncmF5LTMwMCI+VWx0aW1hdGUgdmFsdWUuIEZ1bGwgeWVhciBvZiBwcmVtaXVtIHRyYWRpbmcgd2l0aCBWSVAgc3VwcG9ydC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIFRlc3RpbW9uaWFscyBTZWN0aW9uIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJweC02IHB5LTIwIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTkwMC8yMCB0by1wdXJwbGUtOTAwLzIwIG10LTgiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXgtdy03eGwgbXgtYXV0byI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBtYi0xNiI+CiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0ZXh0LTR4bCBtZDp0ZXh0LTV4bCBmb250LWJvbGQgbWItNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgT3VyIDxzcGFuIGNsYXNzPSJiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS00MDAgdG8tcHVycGxlLTQwMCBiZy1jbGlwLXRleHQgdGV4dC10cmFuc3BhcmVudCI+VXNlcnMgU2F5PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQteGwgdGV4dC1ncmF5LTMwMCBtYXgtdy0zeGwgbXgtYXV0byI+CiAgICAgICAgICAgICAgICAgICAgICAgIEpvaW4gdGhvdXNhbmRzIG9mIHNhdGlzZmllZCB0cmFkZXJzIHdobyBoYXZlIHRyYW5zZm9ybWVkIHRoZWlyIHRyYWRpbmcgZXhwZXJpZW5jZSB3aXRoIG91ciBBSS1wb3dlcmVkIGJvdC4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC04Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFRlc3RpbW9uaWFsIDEgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQtMnhsIHAtOCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIG1iLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xMiBoLTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTUwMCB0by1wdXJwbGUtNTAwIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LWxnIG1yLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJmb250LXNlbWlib2xkIHRleHQtd2hpdGUiPkpvaG4gU21pdGg8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtZ3JheS00MDAiPlByb2Zlc3Npb25hbCBUcmFkZXI8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIG1iLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgQUkgYm90IGhhcyBjb21wbGV0ZWx5IHRyYW5zZm9ybWVkIG15IHRyYWRpbmcuIEkndmUgc2VlbiBhIDMwMCUgaW5jcmVhc2UgaW4gbXkgcHJvZml0cyBzaW5jZSB1c2luZyBpdC4gVGhlIGF1dG9tYXRlZCBzaWduYWxzIGFyZSBpbmNyZWRpYmx5IGFjY3VyYXRlISIKICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IHRleHQteWVsbG93LTQwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTUgaC01IGZpbGwtY3VycmVudCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNOS4wNDkgMi45MjdjLjMtLjkyMSAxLjYwMy0uOTIxIDEuOTAyIDBsMS4wNyAzLjI5MmExIDEgMCAwMC45NS42OWgzLjQ2MmMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMi44IDIuMDM0YTEgMSAwIDAwLS4zNjQgMS4xMThsMS4wNyAzLjI5MmMuMy45MjEtLjc1NSAxLjY4OC0xLjU0IDEuMTE4bC0yLjgtMi4wMzRhMSAxIDAgMDAtMS4xNzUgMGwtMi44IDIuMDM0Yy0uNzg0LjU3LTEuODM4LS4xOTctMS41MzktMS4xMThsMS4wNy0zLjI5MmExIDEgMCAwMC0uMzY0LTEuMTE4TDIuOTggOC43MmMtLjc4My0uNTctLjM4LTEuODEuNTg4LTEuODFoMy40NjFhMSAxIDAgMDAuOTUxLS42OWwxLjA3LTMuMjkyeiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy01IGgtNSBmaWxsLWN1cnJlbnQiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTkuMDQ5IDIuOTI3Yy4zLS45MjEgMS42MDMtLjkyMSAxLjkwMiAwbDEuMDcgMy4yOTJhMSAxIDAgMDAuOTUuNjloMy40NjJjLjk2OSAwIDEuMzcxIDEuMjQuNTg4IDEuODFsLTIuOCAyLjAzNGExIDEgMCAwMC0uMzY0IDEuMTE4bDEuMDcgMy4yOTJjLjMuOTIxLS43NTUgMS42ODgtMS41NCAxLjExOGwtMi44LTIuMDM0YTEgMSAwIDAwLTEuMTc1IDBsLTIuOCAyLjAzNGMtLjc4NC41Ny0xLjgzOC0uMTk3LTEuNTM5LTEuMTE4bDEuMDctMy4yOTJhMSAxIDAgMDAtLjM2NC0xLjExOEwyLjk4IDguNzJjLS43ODMtLjU3LS4zOC0xLjgxLjU4OC0xLjgxaDMuNDYxYTEgMSAwIDAwLjk1MS0uNjlsMS4wNy0zLjI5MnoiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNSBoLTUgZmlsbC1jdXJyZW50IiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Ik05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTUgaC01IGZpbGwtY3VycmVudCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNOS4wNDkgMi45MjdjLjMtLjkyMSAxLjYwMy0uOTIxIDEuOTAyIDBsMS4wNyAzLjI5MmExIDEgMCAwMC45NS42OWgzLjQ2MmMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMi44IDIuMDM0YTEgMSAwIDAwLS4zNjQgMS4xMThsMS4wNyAzLjI5MmMuMy45MjEtLjc1NSAxLjY4OC0xLjU0IDEuMTE4bC0yLjgtMi4wMzRhMSAxIDAgMDAtMS4xNzUgMGwtMi44IDIuMDM0Yy0uNzg0LjU3LTEuODM4LS4xOTctMS41MzktMS4xMThsMS4wNy0zLjI5MmExIDEgMCAwMC0uMzY0LTEuMTE4TDIuOTggOC43MmMtLjc4My0uNTctLjM4LTEuODEuNTg4LTEuODFoMy40NjFhMSAxIDAgMDAuOTUxLS42OWwxLjA3LTMuMjkyeiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy01IGgtNSBmaWxsLWN1cnJlbnQiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTkuMDQ5IDIuOTI3Yy4zLS45MjEgMS42MDMtLjkyMSAxLjkwMiAwbDEuMDcgMy4yOTJhMSAxIDAgMDAuOTUuNjloMy40NjJjLjk2OSAwIDEuMzcxIDEuMjQuNTg4IDEuODFsLTIuOCAyLjAzNGExIDEgMCAwMC0uMzY0IDEuMTE4bDEuMDcgMy4yOTJjLjMuOTIxLS43NTUgMS42ODgtMS41NCAxLjExOGwtMi44LTIuMDM0YTEgMSAwIDAwLTEuMTc1IDBsLTIuOCAyLjAzNGMtLjc4NC41Ny0xLjgzOC0uMTk3LTEuNTM5LTEuMTE4bDEuMDctMy4yOTJhMSAxIDAgMDAtLjM2NC0xLjExOEwyLjk4IDguNzJjLS43ODMtLjU3LS4zOC0xLjgxLjU4OC0xLjgxaDMuNDYxYTEgMSAwIDAwLjk1MS0uNjlsMS4wNy0zLjI5MnoiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwhLS0gVGVzdGltb25pYWwgMiAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC0yeGwgcC04IGJvcmRlciBib3JkZXItd2hpdGUvMTAgaG92ZXI6Ym9yZGVyLXdoaXRlLzIwIHRyYW5zaXRpb24tYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgbWItNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEyIGgtMTIgYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTUwMCB0by1ibHVlLTUwMCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZSBmb250LWJvbGQgdGV4dC1sZyBtci00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIj5NYXJpYSBTYW50b3M8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtZ3JheS00MDAiPkNyeXB0byBJbnZlc3RvcjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ3JheS0zMDAgbWItNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXMgYSBiZWdpbm5lciBpbiBjcnlwdG8gdHJhZGluZywgdGhpcyBib3QgaGFzIGJlZW4gYSBnYW1lLWNoYW5nZXIuIFRoZSByaXNrIG1hbmFnZW1lbnQgZmVhdHVyZXMgZ2l2ZSBtZSBwZWFjZSBvZiBtaW5kIHdoaWxlIG1heGltaXppbmcgcHJvZml0cy4iCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCB0ZXh0LXllbGxvdy00MDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy01IGgtNSBmaWxsLWN1cnJlbnQiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTkuMDQ5IDIuOTI3Yy4zLS45MjEgMS42MDMtLjkyMSAxLjkwMiAwbDEuMDcgMy4yOTJhMSAxIDAgMDAuOTUuNjloMy40NjJjLjk2OSAwIDEuMzcxIDEuMjQuNTg4IDEuODFsLTIuOCAyLjAzNGExIDEgMCAwMC0uMzY0IDEuMTE4bDEuMDcgMy4yOTJjLjMuOTIxLS43NTUgMS42ODgtMS41NCAxLjExOGwtMi44LTIuMDM0YTEgMSAwIDAwLTEuMTc1IDBsLTIuOCAyLjAzNGMtLjc4NC41Ny0xLjgzOC0uMTk3LTEuNTM5LTEuMTE4bDEuMDctMy4yOTJhMSAxIDAgMDAtLjM2NC0xLjExOEwyLjk4IDguNzJjLS43ODMtLjU3LS4zOC0xLjgxLjU4OC0xLjgxaDMuNDYxYTEgMSAwIDAwLjk1MS0uNjlsMS4wNy0zLjI5MnoiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNSBoLTUgZmlsbC1jdXJyZW50IiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Ik05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTUgaC01IGZpbGwtY3VycmVudCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNOS4wNDkgMi45MjdjLjMtLjkyMSAxLjYwMy0uOTIxIDEuOTAyIDBsMS4wNyAzLjI5MmExIDEgMCAwMC45NS42OWgzLjQ2MmMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMi44IDIuMDM0YTEgMSAwIDAwLS4zNjQgMS4xMThsMS4wNyAzLjI5MmMuMy45MjEtLjc1NSAxLjY4OC0xLjU0IDEuMTE4bC0yLjgtMi4wMzRhMSAxIDAgMDAtMS4xNzUgMGwtMi44IDIuMDM0Yy0uNzg0LjU3LTEuODM4LS4xOTctMS41MzktMS4xMThsMS4wNy0zLjI5MmExIDEgMCAwMC0uMzY0LTEuMTE4TDIuOTggOC43MmMtLjc4My0uNTctLjM4LTEuODEuNTg4LTEuODFoMy40NjFhMSAxIDAgMDAuOTUxLS42OWwxLjA3LTMuMjkyeiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy01IGgtNSBmaWxsLWN1cnJlbnQiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTkuMDQ5IDIuOTI3Yy4zLS45MjEgMS42MDMtLjkyMSAxLjkwMiAwbDEuMDcgMy4yOTJhMSAxIDAgMDAuOTUuNjloMy40NjJjLjk2OSAwIDEuMzcxIDEuMjQuNTg4IDEuODFsLTIuOCAyLjAzNGExIDEgMCAwMC0uMzY0IDEuMTE4bDEuMDcgMy4yOTJjLjMuOTIxLS43NTUgMS42ODgtMS41NCAxLjExOGwtMi44LTIuMDM0YTEgMSAwIDAwLTEuMTc1IDBsLTIuOCAyLjAzNGMtLjc4NC41Ny0xLjgzOC0uMTk3LTEuNTM5LTEuMTE4bDEuMDctMy4yOTJhMSAxIDAgMDAtLjM2NC0xLjExOEwyLjk4IDguNzJjLS43ODMtLjU3LS4zOC0xLjgxLjU4OC0xLjgxaDMuNDYxYTEgMSAwIDAwLjk1MS0uNjlsMS4wNy0zLjI5MnoiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNSBoLTUgZmlsbC1jdXJyZW50IiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Ik05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIFRlc3RpbW9uaWFsIDMgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQtMnhsIHAtOCBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIGhvdmVyOmJvcmRlci13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIG1iLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xMiBoLTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1wdXJwbGUtNTAwIHRvLXBpbmstNTAwIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LWxnIG1yLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFLCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJmb250LXNlbWlib2xkIHRleHQtd2hpdGUiPkFobWVkIEtoYW48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtZ3JheS00MDAiPkRheSBUcmFkZXI8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIG1iLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSAyNC83IG1vbml0b3JpbmcgYW5kIGluc3RhbnQgbm90aWZpY2F0aW9ucyBhcmUgaW5jcmVkaWJsZS4gSSBuZXZlciBtaXNzIGEgcHJvZml0YWJsZSBvcHBvcnR1bml0eSBhbnltb3JlLiBUaGlzIGJvdCBwYXlzIGZvciBpdHNlbGYhIgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggdGV4dC15ZWxsb3ctNDAwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNSBoLTUgZmlsbC1jdXJyZW50IiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Ik05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTUgaC01IGZpbGwtY3VycmVudCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNOS4wNDkgMi45MjdjLjMtLjkyMSAxLjYwMy0uOTIxIDEuOTAyIDBsMS4wNyAzLjI5MmExIDEgMCAwMC45NS42OWgzLjQ2MmMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMi44IDIuMDM0YTEgMSAwIDAwLS4zNjQgMS4xMThsMS4wNyAzLjI5MmMuMy45MjEtLjc1NSAxLjY4OC0xLjU0IDEuMTE4bC0yLjgtMi4wMzRhMSAxIDAgMDAtMS4xNzUgMGwtMi44IDIuMDM0Yy0uNzg0LjU3LTEuODM4LS4xOTctMS41MzktMS4xMThsMS4wNy0zLjI5MmExIDEgMCAwMC0uMzY0LTEuMTE4TDIuOTggOC43MmMtLjc4My0uNTctLjM4LTEuODEuNTg4LTEuODFoMy40NjFhMSAxIDAgMDAuOTUxLS42OWwxLjA3LTMuMjkyeiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy01IGgtNSBmaWxsLWN1cnJlbnQiIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZD0iTTkuMDQ5IDIuOTI3Yy4zLS45MjEgMS42MDMtLjkyMSAxLjkwMiAwbDEuMDcgMy4yOTJhMSAxIDAgMDAuOTUuNjloMy40NjJjLjk2OSAwIDEuMzcxIDEuMjQuNTg4IDEuODFsLTIuOCAyLjAzNGExIDEgMCAwMC0uMzY0IDEuMTE4bDEuMDcgMy4yOTJjLjMuOTIxLS43NTUgMS42ODgtMS41NCAxLjExOGwtMi44LTIuMDM0YTEgMSAwIDAwLTEuMTc1IDBsLTIuOCAyLjAzNGMtLjc4NC41Ny0xLjgzOC0uMTk3LTEuNTM5LTEuMTE4bDEuMDctMy4yOTJhMSAxIDAgMDAtLjM2NC0xLjExOEwyLjk4IDguNzJjLS43ODMtLjU3LS4zOC0xLjgxLjU4OC0xLjgxaDMuNDYxYTEgMSAwIDAwLjk1MS0uNjlsMS4wNy0zLjI5MnoiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNSBoLTUgZmlsbC1jdXJyZW50IiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxwYXRoIGQ9Ik05LjA0OSAyLjkyN2MuMy0uOTIxIDEuNjAzLS45MjEgMS45MDIgMGwxLjA3IDMuMjkyYTEgMSAwIDAwLjk1LjY5aDMuNDYyYy45NjkgMCAxLjM3MSAxLjI0LjU4OCAxLjgxbC0yLjggMi4wMzRhMSAxIDAgMDAtLjM2NCAxLjExOGwxLjA3IDMuMjkyYy4zLjkyMS0uNzU1IDEuNjg4LTEuNTQgMS4xMThsLTIuOC0yLjAzNGExIDEgMCAwMC0xLjE3NSAwbC0yLjggMi4wMzRjLS43ODQuNTctMS44MzgtLjE5Ny0xLjUzOS0xLjExOGwxLjA3LTMuMjkyYTEgMSAwIDAwLS4zNjQtMS4xMThMMi45OCA4LjcyYy0uNzgzLS41Ny0uMzgtMS44MS41ODgtMS44MWgzLjQ2MWExIDEgMCAwMC45NTEtLjY5bDEuMDctMy4yOTJ6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTUgaC01IGZpbGwtY3VycmVudCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNOS4wNDkgMi45MjdjLjMtLjkyMSAxLjYwMy0uOTIxIDEuOTAyIDBsMS4wNyAzLjI5MmExIDEgMCAwMC45NS42OWgzLjQ2MmMuOTY5IDAgMS4zNzEgMS4yNC41ODggMS44MWwtMi44IDIuMDM0YTEgMSAwIDAwLS4zNjQgMS4xMThsMS4wNyAzLjI5MmMuMy45MjEtLjc1NSAxLjY4OC0xLjU0IDEuMTE4bC0yLjgtMi4wMzRhMSAxIDAgMDAtMS4xNzUgMGwtMi44IDIuMDM0Yy0uNzg0LjU3LTEuODM4LS4xOTctMS41MzktMS4xMThsMS4wNy0zLjI5MmExIDEgMCAwMC0uMzY0LTEuMTE4TDIuOTggOC43MmMtLjc4My0uNTctLjM4LTEuODEuNTg4LTEuODFoMy40NjFhMSAxIDAgMDAuOTUxLS42OWwxLjA3LTMuMjkyeiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gRkFRIFNlY3Rpb24gKFNFTzogY3J5cHRvIHRyYWRpbmcgYWkgYm90LCBCaW5hbmNlIGJvdCwgZnJlZSBzaWduYWxzLCBBUEksIGZlZXMsIHNhZmV0eSkuIFN0cnVjdHVyZWQgZGF0YSB2aWEgSlNPTi1MRCBvbmx5IHRvIGF2b2lkIGludmFsaWQgaXRlbXMuIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJweC02IHB5LTIwIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tc2xhdGUtOTAwLzUwIHZpYS1wdXJwbGUtOTAwLzIwIHRvLXNsYXRlLTkwMC81MCIgaWQ9ImZhcSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1heC13LTR4bCBteC1hdXRvIj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGV4dC00eGwgZm9udC1ib2xkIHRleHQtY2VudGVyIG1iLTEyIj4KICAgICAgICAgICAgICAgICAgICBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyBBYm91dCBPdXIgPHNwYW4gY2xhc3M9ImJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTQwMCB0by1wdXJwbGUtNDAwIGJnLWNsaXAtdGV4dCB0ZXh0LXRyYW5zcGFyZW50Ij5DcnlwdG8gVHJhZGluZyBBSSBCb3Q8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhY2UteS02Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBwLTYgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgbWItMyI+V2hhdCBpcyB0aGUgQ3J5cHRvIFRyYWRpbmcgQUkgQm90PzwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIj5UaGUgQ3J5cHRvIFRyYWRpbmcgQUkgQm90IGlzIGFuIGF1dG9tYXRlZCB0cmFkaW5nIHN5c3RlbSB0aGF0IHJ1bnMgb24gQmluYW5jZSB1c2luZyBBUEkga2V5cy4gSXQgdXNlcyBBVFItYmFzZWQgdm9sYXRpbGl0eSBhbmFseXNpcyBhbmQgcmlzayBtYW5hZ2VtZW50IHRvIHBsYWNlIGFuZCBtYW5hZ2UgdHJhZGVzIDI0LzcuIFlvdXIgZnVuZHMgc3RheSBpbiB5b3VyIG93biBCaW5hbmNlIGFjY291bnTigJR3ZSBuZXZlciBob2xkIG9yIGN1c3RvZHkgeW91ciBtb25leS48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNSBiYWNrZHJvcC1ibHVyLXNtIHJvdW5kZWQteGwgcC02IGJvcmRlciBib3JkZXItd2hpdGUvMTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIG1iLTMiPkhvdyBkb2VzIHRoZSBCaW5hbmNlIHRyYWRpbmcgYm90IGNvbm5lY3QgdG8gbXkgYWNjb3VudD88L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTMwMCI+V2UgdXNlIEJpbmFuY2UgQVBJIGtleXMgKHJlYWQgYW5kIHRyYWRlIHBlcm1pc3Npb25zIG9ubHkpLiBZb3UgY3JlYXRlIHRoZSBrZXlzIGluIHlvdXIgQmluYW5jZSBhY2NvdW50IGFuZCBlbnRlciB0aGVtIGluIG91ciBkYXNoYm9hcmQuIFRoZSBib3QgbmV2ZXIgaGFzIHdpdGhkcmF3YWwgcmlnaHRzLCBzbyBpdCBjYW5ub3QgbW92ZSBmdW5kcyBvdXQgb2YgeW91ciBhY2NvdW50LjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC14bCBwLTYgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgbWItMyI+QXJlIHRoZSBjcnlwdG8gdHJhZGluZyBzaWduYWxzIHJlYWxseSBmcmVlPzwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIj5ZZXMuIFdlIG9mZmVyIGZyZWUgQUktcG93ZXJlZCB0cmFkaW5nIHNpZ25hbHMgb24gb3VyIFRlbGVncmFtIGNoYW5uZWwuIFlvdSBjYW4gdXNlIHRoZSBzaWduYWxzIGZvciBtYW51YWwgdHJhZGluZyBvciBjb21iaW5lIHRoZW0gd2l0aCBvdXIgYXV0b21hdGVkIEJpbmFuY2UgYm90LiBKb2luaW5nIHRoZSBjaGFubmVsIGlzIGZyZWUuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBtYi0zIj5XaGF0IGFyZSB0aGUgZmVlcyBmb3IgdXNpbmcgdGhlIENyeXB0byBUcmFkaW5nIEFJIEJvdD88L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTMwMCI+V2Ugb2ZmZXIgc3Vic2NyaXB0aW9uIHBsYW5zIGZvciB0aGUgYXV0b21hdGVkIGJvdDsgeW91IGNhbiBzdGFydCB3aXRoIGEgZnJlZSB0cmlhbCBvciBsb3ctY29zdCBwbGFuLiBCaW5hbmNlIHRyYWRpbmcgZmVlcyBzdGlsbCBhcHBseSBvbiB5b3VyIHRyYWRlcyAoYXMgcGVyIHlvdXIgQmluYW5jZSBhY2NvdW50KS4gVGhlcmUgYXJlIG5vIGhpZGRlbiBmdW5kLWN1c3RvZHkgb3Igd2l0aGRyYXdhbCBmZWVzIGZyb20gdXMuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1zbSByb3VuZGVkLXhsIHAtNiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBtYi0zIj5JcyBpdCBzYWZlPyBEbyB5b3UgaG9sZCBteSBmdW5kcz88L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTMwMCI+V2UgZG8gbm90IGhvbGQgeW91ciBmdW5kcy4gWW91ciBjcnlwdG8gc3RheXMgaW4geW91ciBCaW5hbmNlIGFjY291bnQgYXQgYWxsIHRpbWVzLiBXZSBvbmx5IHVzZSBBUEkgYWNjZXNzIHRvIHBsYWNlIGFuZCBtYW5hZ2UgdHJhZGVzLiBXZSByZWNvbW1lbmQgdXNpbmcgQVBJIGtleXMgd2l0aCB0cmFkaW5nLW9ubHkgcGVybWlzc2lvbnMgYW5kIG5vIHdpdGhkcmF3YWwgcmlnaHRzIGZvciBtYXhpbXVtIHNhZmV0eS48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAoKICAgICAgICA8IS0tIENUQSBTZWN0aW9uIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJweC02IHB5LTIwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF4LXctNHhsIG14LWF1dG8gdGV4dC1jZW50ZXIiPgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0ZXh0LTR4bCBmb250LWJvbGQgbWItNiI+CiAgICAgICAgICAgICAgICAgICAgUmVhZHkgdG8gU3RhcnQgV2l0aCBPdXIgPHNwYW4gY2xhc3M9ImJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTQwMCB0by1wdXJwbGUtNDAwIGJnLWNsaXAtdGV4dCB0ZXh0LXRyYW5zcGFyZW50Ij5DcnlwdG8gVHJhZGluZyBBSSBCb3Q8L3NwYW4+PwogICAgICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhsIHRleHQtZ3JheS0zMDAgbWItOCI+CiAgICAgICAgICAgICAgICAgICAgSm9pbiB0cmFkZXJzIHdobyB1c2Ugb3VyIEFJIGNyeXB0byB0cmFkaW5nIGJvdCBmb3IgMjQvNyBhdXRvbWF0ZWQgQmluYW5jZSB0cmFkaW5nLiBTdGFydCBmcmVl4oCUbm8gZnVuZCBjdXN0b2R5LgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vcmVnaXN0ZXIiIGNsYXNzPSJpbmxpbmUtYmxvY2sgcHgtOCBweS00IGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTYwMCB0by1wdXJwbGUtNjAwIGhvdmVyOmZyb20tYmx1ZS03MDAgaG92ZXI6dG8tcHVycGxlLTcwMCByb3VuZGVkLWxnIHRleHQtbGcgZm9udC1zZW1pYm9sZCB0cmFuc2l0aW9uLWFsbCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgQ3J5cHRvIFRyYWRpbmcgQUkgQm90CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8Zm9vdGVyIGNsYXNzPSJweC02IHB5LTE2IGJvcmRlci10IGJvcmRlci13aGl0ZS8xMCBiZy1ncmF5LTkwMC81MCI+CiAgICA8ZGl2IGNsYXNzPSJtYXgtdy03eGwgbXgtYXV0byI+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtNCBnYXAtMTAgbWItMTIiPgoKICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1kOmNvbC1zcGFuLTEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tIiBjbGFzcz0iaW5saW5lLWJsb2NrIG1iLTQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vaW1hZ2VzL2NyeXB0by10cmFkaW5nLWFpLWJvdC5wbmciIGFsdD0iQ3J5cHRvIFRyYWRpbmcgQUkgQm90IOKAkyBCZXN0IEZyZWUgQ3J5cHRvIFRyYWRpbmcgQm90IiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjcwIiBzdHlsZT0ibWF4LWhlaWdodDo3MHB4OyI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ncmF5LTQwMCB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCBtYi00Ij4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJ0ZXh0LWdyYXktMzAwIj5DcnlwdG8gVHJhZGluZyBBSSBCb3Q8L3N0cm9uZz4gaXMgYSBmcmVlIGF1dG9tYXRlZCBjcnlwdG8gdHJhZGluZyBib3QgZm9yIEJpbmFuY2UuIEFJLXBvd2VyZWQgQVRSIHN0cmF0ZWd5LCAyNC83IGV4ZWN1dGlvbiwgbm8gZnVuZCBjdXN0b2R5LgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtMiB0ZXh0LXNtIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3QubWUvYmluYW5jZUJvdFRyYWRlU2lnbmFsIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC1ibHVlLTMwMCB0cmFuc2l0aW9uLWNvbG9ycyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNCBoLTQiIGZpbGw9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgMEM1LjM3MyAwIDAgNS4zNzMgMCAxMnM1LjM3MyAxMiAxMiAxMiAxMi01LjM3MyAxMi0xMlMxOC42MjcgMCAxMiAwem01LjU2MiA4LjI0OGwtMi4wMiA5LjUyYy0uMTQ0LjY1OC0uNTM3LjgxOC0xLjA4NC41MDhsLTMtMi4yMS0xLjQ0NyAxLjM5NGMtLjE2LjE2LS4yOTUuMjk1LS42MDUuMjk1bC4yMTMtMy4wNTMgNS41Ni01LjAyM2MuMjQyLS4yMTMtLjA1NC0uMzMzLS4zNzMtLjEyTDYuMTEgMTQuNGwtMi45Ny0uOTI0Yy0uNjQzLS4yMDQtLjY1Ny0uNjQzLjEzNi0uOTUzbDExLjU3LTQuNDYxYy41MzctLjE5NCAxLjAwNi4xMy43MTYuMTg2eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICBGcmVlIFNpZ25hbHMgb24gVGVsZWdyYW0KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9jcnlwdG9fbGF0ZXN0X25ld3MvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtcGluay00MDAgaG92ZXI6dGV4dC1waW5rLTMwMCB0cmFuc2l0aW9uLWNvbG9ycyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9InctNCBoLTQiIGZpbGw9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgMi4xNjNjMy4yMDQgMCAzLjU4NC4wMTIgNC44NS4wNyAzLjI1Mi4xNDggNC43NzEgMS42OTEgNC45MTkgNC45MTkuMDU4IDEuMjY1LjA2OSAxLjY0NS4wNjkgNC44NDkgMCAzLjIwNS0uMDEyIDMuNTg0LS4wNjkgNC44NDktLjE0OSAzLjIyNS0xLjY2NCA0Ljc3MS00LjkxOSA0LjkxOS0xLjI2Ni4wNTgtMS42NDQuMDctNC44NS4wNy0zLjIwNCAwLTMuNTg0LS4wMTItNC44NDktLjA3LTMuMjYtLjE0OS00Ljc3MS0xLjY5OS00LjkxOS00LjkyLS4wNTgtMS4yNjUtLjA3LTEuNjQ0LS4wNy00Ljg0OSAwLTMuMjA0LjAxMy0zLjU4My4wNy00Ljg0OS4xNDktMy4yMjcgMS42NjQtNC43NzEgNC45MTktNC45MTkgMS4yNjYtLjA1NyAxLjY0NS0uMDY5IDQuODQ5LS4wNjl6TTEyIDBDOC43NDEgMCA4LjMzMy4wMTQgNy4wNTMuMDcyIDIuNjk1LjI3Mi4yNzMgMi42OS4wNzMgNy4wNTIuMDE0IDguMzMzIDAgOC43NDEgMCAxMmMwIDMuMjU5LjAxNCAzLjY2OC4wNzIgNC45NDguMiA0LjM1OCAyLjYxOCA2Ljc4IDYuOTggNi45OEM4LjMzMyAyMy45ODYgOC43NDEgMjQgMTIgMjRjMy4yNTkgMCAzLjY2OC0uMDE0IDQuOTQ4LS4wNzIgNC4zNTQtLjIgNi43ODItMi42MTggNi45NzktNi45OC4wNTktMS4yOC4wNzMtMS42ODkuMDczLTQuOTQ4IDAtMy4yNTktLjAxNC0zLjY2Ny0uMDcyLTQuOTQ3LS4xOTYtNC4zNTQtMi42MTctNi43OC02Ljk3OS02Ljk4QzE1LjY2OC4wMTQgMTUuMjU5IDAgMTIgMHptMCA1LjgzOGE2LjE2MiA2LjE2MiAwIDEwMCAxMi4zMjQgNi4xNjIgNi4xNjIgMCAwMDAtMTIuMzI0ek0xMiAxNmE0IDQgMCAxMTAtOCA0IDQgMCAwMTAgOHptNi40MDYtMTEuODQ1YTEuNDQgMS40NCAwIDEwMCAyLjg4MSAxLjQ0IDEuNDQgMCAwMDAtMi44ODF6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvdyBvbiBJbnN0YWdyYW0KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC13aGl0ZSBmb250LXNlbWlib2xkIG1iLTQgdGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIiPkNyeXB0byBUcmFkaW5nIEJvdDwvaDM+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InNwYWNlLXktMiB0ZXh0LXNtIj4KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tIiBjbGFzcz0idGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5GcmVlIENyeXB0byBUcmFkaW5nIEJvdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vY3J5cHRvLXRyYWRpbmctYWktYm90IiBjbGFzcz0idGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5Ib3cgdGhlIEFJIEJvdCBXb3JrczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYmVzdC1jcnlwdG8tdHJhZGluZy1ib3QiIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkJlc3QgQ3J5cHRvIFRyYWRpbmcgQm90PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9iaW5hbmNlLXRyYWRpbmctYm90IiBjbGFzcz0idGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5CaW5hbmNlIFRyYWRpbmcgQm90PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9haS1ib3QtdHJhZGUiIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkFJIEJvdCBUcmFkZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vMjQtYm90LXRyYWRlIiBjbGFzcz0idGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj4yNC83IEF1dG9tYXRlZCBUcmFkaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9iZXN0LWFsZ28tdHJhZGUiIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkFsZ28gVHJhZGluZyBCb3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQtd2hpdGUgZm9udC1zZW1pYm9sZCBtYi00IHRleHQtc20gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIj5SZXNvdXJjZXM8L2gzPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJzcGFjZS15LTIgdGV4dC1zbSI+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9ibG9nIiBjbGFzcz0idGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5DcnlwdG8gVHJhZGluZyBCbG9nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9hYm91dCIgY2xhc3M9InRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+QWJvdXQgVXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2NvbnRhY3QiIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkNvbnRhY3QgU3VwcG9ydDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vcmVnaXN0ZXIiIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkdldCBTdGFydGVkIEZyZWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL3ByaXZhY3ktcG9saWN5IiBjbGFzcz0idGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5Qcml2YWN5IFBvbGljeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vdGVybXMtb2Ytc2VydmljZSIgY2xhc3M9InRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+VGVybXMgb2YgU2VydmljZTwvYT48L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC13aGl0ZSBmb250LXNlbWlib2xkIG1iLTQgdGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIiPkNvbnRhY3QgJiBUcnVzdDwvaDM+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZS15LTMgdGV4dC1zbSB0ZXh0LWdyYXktNDAwIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0idy00IGgtNCB0ZXh0LWJsdWUtNDAwIG10LTAuNSBzaHJpbmstMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0zIDhsNy44OSA1LjI2YTIgMiAwIDAwMi4yMiAwTDIxIDhNNSAxOWgxNGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxMGEyIDIgMCAwMDIgMnoiLz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+c3VwcG9ydEBjcnlwdG90cmFkaW5nYWlib3QuY29tPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtc3RhcnQgZ2FwLTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJ3LTQgaC00IHRleHQtYmx1ZS00MDAgbXQtMC41IHNocmluay0wIiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTE3LjY1NyAxNi42NTdMMTMuNDE0IDIwLjlhMS45OTggMS45OTggMCAwMS0yLjgyNyAwbC00LjI0NC00LjI0M2E4IDggMCAxMTExLjMxNCAweiIvPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTUgMTFhMyAzIDAgMTEtNiAwIDMgMyAwIDAxNiAweiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yNDUgUHJvc3BlY3QgUGFyayBXZXN0LCBCcm9va2x5biwgTlkgMTEyMTUsIFVTQTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtdC00IHAtMyBiZy1ncmVlbi01MDAvMTAgYm9yZGVyIGJvcmRlci1ncmVlbi01MDAvMjAgcm91bmRlZC1sZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdyZWVuLTQwMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgbWItMSI+4pyTIE5vIEZ1bmQgQ3VzdG9keTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ3JheS00MDAgdGV4dC14cyI+WW91ciBjcnlwdG8gc3RheXMgaW4geW91ciBCaW5hbmNlIGFjY291bnQuIFdlIG9ubHkgdXNlIEFQSSB0byB0cmFkZSDigJQgbmV2ZXIgdG8gd2l0aGRyYXcuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtMyBiZy1ibHVlLTUwMC8xMCBib3JkZXIgYm9yZGVyLWJsdWUtNTAwLzIwIHJvdW5kZWQtbGciPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1ibHVlLTQwMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgbWItMSI+4pyTIFZlcmlmaWVkIGJ5IEdvb2dsZTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ3JheS00MDAgdGV4dC14cyI+U2l0ZSB2ZXJpZmllZCBpbiBHb29nbGUgU2VhcmNoIENvbnNvbGUuIEluZGV4ZWQgYW5kIG1vbml0b3JlZCB3aXRoIEdvb2dsZSBBbmFseXRpY3MuPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJwdC04IGJvcmRlci10IGJvcmRlci13aGl0ZS8xMCI+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNlbnRlciBnYXAtMyBzbTpnYXAtNSBtYi02IHRleHQteHMgdGV4dC1ncmF5LTUwMCI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20iIGNsYXNzPSJob3Zlcjp0ZXh0LWdyYXktMzAwIHRyYW5zaXRpb24tY29sb3JzIj5DcnlwdG8gVHJhZGluZyBCb3Q8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj7Ctzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9jcnlwdG8tdHJhZGluZy1haS1ib3QiIGNsYXNzPSJob3Zlcjp0ZXh0LWdyYXktMzAwIHRyYW5zaXRpb24tY29sb3JzIj5DcnlwdG8gVHJhZGluZyBBSSBCb3Q8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj7Ctzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9iZXN0LWNyeXB0by10cmFkaW5nLWJvdCIgY2xhc3M9ImhvdmVyOnRleHQtZ3JheS0zMDAgdHJhbnNpdGlvbi1jb2xvcnMiPkJlc3QgQ3J5cHRvIFRyYWRpbmcgQm90PC9hPgogICAgICAgICAgICAgICAgPHNwYW4+wrc8L3NwYW4+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NyeXB0b3RyYWRpbmdhaWJvdC5jb20vYmluYW5jZS10cmFkaW5nLWJvdCIgY2xhc3M9ImhvdmVyOnRleHQtZ3JheS0zMDAgdHJhbnNpdGlvbi1jb2xvcnMiPkJpbmFuY2UgVHJhZGluZyBCb3Q8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj7Ctzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9ibG9nIiBjbGFzcz0iaG92ZXI6dGV4dC1ncmF5LTMwMCB0cmFuc2l0aW9uLWNvbG9ycyI+Q3J5cHRvIFRyYWRpbmcgQmxvZzwvYT4KICAgICAgICAgICAgICAgIDxzcGFuPsK3PC9zcGFuPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL2Fib3V0IiBjbGFzcz0iaG92ZXI6dGV4dC1ncmF5LTMwMCB0cmFuc2l0aW9uLWNvbG9ycyI+QWJvdXQ8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj7Ctzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9jb250YWN0IiBjbGFzcz0iaG92ZXI6dGV4dC1ncmF5LTMwMCB0cmFuc2l0aW9uLWNvbG9ycyI+Q29udGFjdDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWNlbnRlciB0ZXh0LWdyYXktNTAwIHRleHQteHMiPgogICAgICAgICAgICAgICAgwqkgMjAyNiBDcnlwdG8gVHJhZGluZyBBSSBCb3Qg4oCUIEZyZWUgQXV0b21hdGVkIEJpbmFuY2UgVHJhZGluZyBCb3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIHwKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY3J5cHRvdHJhZGluZ2FpYm90LmNvbS9wcml2YWN5LXBvbGljeSIgY2xhc3M9InRleHQtYmx1ZS00MDAgaG92ZXI6dGV4dC1ibHVlLTMwMCBtbC0xIj5Qcml2YWN5IFBvbGljeTwvYT4gfAogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL3Rlcm1zLW9mLXNlcnZpY2UiIGNsYXNzPSJ0ZXh0LWJsdWUtNDAwIGhvdmVyOnRleHQtYmx1ZS0zMDAgbWwtMSI+VGVybXMgb2YgU2VydmljZTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1jZW50ZXIgdGV4dC1ncmF5LTYwMCB0ZXh0LXhzIG10LTIiPgogICAgICAgICAgICAgICAgQ3J5cHRvIFRyYWRpbmcgQUkgQm90IHByb3ZpZGVzIGF1dG9tYXRlZCB0cmFkaW5nIHRvb2xzLiBUcmFkaW5nIGNyeXB0b2N1cnJlbmN5IGludm9sdmVzIGZpbmFuY2lhbCByaXNrLiBQYXN0IHBlcmZvcm1hbmNlIGlzIG5vdCBpbmRpY2F0aXZlIG9mIGZ1dHVyZSByZXN1bHRzLiBOZXZlciBpbnZlc3QgbW9yZSB0aGFuIHlvdSBjYW4gYWZmb3JkIHRvIGxvc2UuCiAgICAgICAgICAgIDwvcD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvb3Rlcj4KCiAgICAgICAgPCEtLSBDb29raWUgQ29uc2VudCBCYW5uZXIgLS0+CiAgICAgICAgPGRpdiBpZD0iY29va2llQmFubmVyIiBjbGFzcz0iZml4ZWQgaW5zZXQteC0wIGJvdHRvbS0wIHotWzk5OThdIGhpZGRlbiIgc3R5bGU9ImxlZnQ6IDA7IGJvdHRvbTogMDsgd2lkdGg6IDEwMCU7Ij4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzQ5MjY3MDsiIGNsYXNzPSJtYXgtdy03eGwgbXgtYXV0byBtLTQgcC00IHNtOnAtNSByb3VuZGVkLXhsIGJnLXdoaXRlLzEwIGJhY2tkcm9wLWJsdXItbWQgYm9yZGVyIGJvcmRlci13aGl0ZS8yMCBzaGFkb3ctbGciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBzbTppdGVtcy1jZW50ZXIgc206anVzdGlmeS1iZXR3ZWVuIGdhcC0zIj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LWdyYXktMjAwIj4KICAgICAgICAgICAgICAgICAgICAgICAgV2UgdXNlIGNvb2tpZXMgdG8gaW1wcm92ZSB5b3VyIGV4cGVyaWVuY2UsIGFuYWx5emUgdHJhZmZpYywgYW5kIHBlcnNvbmFsaXplIGNvbnRlbnQuIEJ5IGNsaWNraW5nIEFjY2VwdCwgeW91IGFncmVlIHRvIG91ciB1c2Ugb2YgY29va2llcy4KICAgICAgICAgICAgICAgICAgICAgICAgUmVhZCBvdXIgPGEgaHJlZj0iaHR0cHM6Ly9jcnlwdG90cmFkaW5nYWlib3QuY29tL3ByaXZhY3ktcG9saWN5IiBjbGFzcz0idGV4dC1ibHVlLTQwMCBob3Zlcjp0ZXh0LWJsdWUtMzAwIHVuZGVybGluZSI+UHJpdmFjeSBQb2xpY3k8L2E+LgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGdhcC0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iY29va2llUmVqZWN0IiBjbGFzcz0icHgtNCBweS0yIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci13aGl0ZS8yMCBob3ZlcjpiZy13aGl0ZS8xMCB0cmFuc2l0aW9uIHRleHQtZ3JheS0yMDAiPlJlamVjdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJjb29raWVBY2NlcHQiIGNsYXNzPSJweC00IHB5LTIgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS02MDAgdG8tcHVycGxlLTYwMCBob3Zlcjpmcm9tLWJsdWUtNzAwIGhvdmVyOnRvLXB1cnBsZS03MDAgdHJhbnNpdGlvbiB0ZXh0LXdoaXRlIGZvbnQtc2VtaWJvbGQiPkFjY2VwdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8c2NyaXB0PgogICAgICAgIC8vIFJ1biBhbGwgSlMgYWZ0ZXIgcGFnZSBpcyBpbnRlcmFjdGl2ZSDigJQgaW1wcm92ZXMgRkNQICYgTENQIHNpZ25pZmljYW50bHkKICAgICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgICBmdW5jdGlvbiBpbml0QWxsKCkgewogICAgICAgICAgICAvLyBNb2JpbGUgbWVudSAoc2hhcmVkIHdpdGggaW5uZXIgcGFnZXMpCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2JpbGVNZW51QnRuJyk/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9iaWxlTWVudScpPy5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2JpbGVNZW51QnRuJyk7CiAgICAgICAgICAgICAgICBjb25zdCBtZW51ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vYmlsZU1lbnUnKTsKICAgICAgICAgICAgICAgIGlmIChidG4gJiYgbWVudSAmJiAhYnRuLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgIW1lbnUuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkgewogICAgICAgICAgICAgICAgICAgIG1lbnUuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gQ29va2llIGNvbnNlbnQKICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3QgYmFubmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nvb2tpZUJhbm5lcicpOwogICAgICAgICAgICAgICAgY29uc3QgYWNjZXB0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nvb2tpZUFjY2VwdCcpOwogICAgICAgICAgICAgICAgY29uc3QgcmVqZWN0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nvb2tpZVJlamVjdCcpOwogICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gJ2N0YWJfY29va2llX2NvbnNlbnRfdjEnOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNldENvbnNlbnQodmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldENvbnNlbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gbnVsbDsgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghZ2V0Q29uc2VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgYmFubmVyPy5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBhY2NlcHRCdG4/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0Q29uc2VudCgnYWNjZXB0ZWQnKTsKICAgICAgICAgICAgICAgICAgICBiYW5uZXI/LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgcmVqZWN0QnRuPy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHNldENvbnNlbnQoJ3JlamVjdGVkJyk7CiAgICAgICAgICAgICAgICAgICAgYmFubmVyPy5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KSgpOwoKICAgICAgICAgICAgLy8gQW5pbWF0ZWQgQ2FuZGxlc3RpY2sgQ2hhcnQKICAgICAgICAgICAgY2xhc3MgVHJhZGluZ0NoYXJ0IHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYWRpbmdDaGFydCcpOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW52YXMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzID0gW107CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UHJpY2UgPSA0NTAwMDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkZyYW1lID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZ25hbEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RDYW5kbGVUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRDYW52YXMoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW5pdGlhbENhbmRsZXMoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFRyYWRpbmdTaWduYWxzKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaW5pdENhbnZhcygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5jYW52YXMucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHJlY3Qud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHJlc2l6ZQogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNhbnZhcy5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHJlY3Qud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IHJlY3QuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGdlbmVyYXRlSW5pdGlhbENhbmRsZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGxlV2lkdGggPSA4OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRsZVNwYWNpbmcgPSAxMjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1DYW5kbGVzID0gTWF0aC5mbG9vcih0aGlzLmNhbnZhcy53aWR0aCAvIGNhbmRsZVNwYWNpbmcpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ2FuZGxlczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZW4gPSB0aGlzLmN1cnJlbnRQcmljZSArIChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDEwMDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlID0gb3BlbiArIChNYXRoLnJhbmRvbSgpIC0gMC40KSAqIDgwMDsgLy8gU2xpZ2h0bHkgYnVsbGlzaCBiaWFzCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2ggPSBNYXRoLm1heChvcGVuLCBjbG9zZSkgKyBNYXRoLnJhbmRvbSgpICogNDAwOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3cgPSBNYXRoLm1pbihvcGVuLCBjbG9zZSkgLSBNYXRoLnJhbmRvbSgpICogMzAwOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaSAqIGNhbmRsZVNwYWNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBvcGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaDogaGlnaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvdzogbG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U6IGNsb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVsbGlzaDogY2xvc2UgPiBvcGVuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UHJpY2UgPSBjbG9zZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZHJhd0NhbmRsZShjYW5kbGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kbGVXaWR0aCA9IDY7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lja1dpZHRoID0gMTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBNYXAgcHJpY2VzIHRvIGNhbnZhcyBjb29yZGluYXRlcwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pblByaWNlID0gTWF0aC5taW4oLi4udGhpcy5jYW5kbGVzLm1hcChjID0+IGMubG93KSkgLSA1MDA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4UHJpY2UgPSBNYXRoLm1heCguLi50aGlzLmNhbmRsZXMubWFwKGMgPT4gYy5oaWdoKSkgKyA1MDA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpY2VSYW5nZSA9IG1heFByaWNlIC0gbWluUHJpY2U7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwWSA9IChwcmljZSkgPT4gdGhpcy5jYW52YXMuaGVpZ2h0IC0gKChwcmljZSAtIG1pblByaWNlKSAvIHByaWNlUmFuZ2UpICogdGhpcy5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZW5ZID0gbWFwWShjYW5kbGUub3Blbik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VZID0gbWFwWShjYW5kbGUuY2xvc2UpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hZID0gbWFwWShjYW5kbGUuaGlnaCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbG93WSA9IG1hcFkoY2FuZGxlLmxvdyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGNvbG9ycwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gY2FuZGxlLmJ1bGxpc2ggPyAnIzEwQjk4MScgOiAnI0VGNDQ0NCc7IC8vIEdyZWVuIG9yIFJlZAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpY2tDb2xvciA9IGNhbmRsZS5idWxsaXNoID8gJyMwNTk2NjknIDogJyNEQzI2MjYnOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIERyYXcgd2ljawogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gd2lja0NvbG9yOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IHdpY2tXaWR0aDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oY2FuZGxlLngsIGhpZ2hZKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8oY2FuZGxlLngsIGxvd1kpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIERyYXcgYm9keQogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHlIZWlnaHQgPSBNYXRoLmFicyhjbG9zZVkgLSBvcGVuWSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keVRvcCA9IE1hdGgubWluKG9wZW5ZLCBjbG9zZVkpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmZpbGxSZWN0KAogICAgICAgICAgICAgICAgICAgICAgICBjYW5kbGUueCAtIGNhbmRsZVdpZHRoIC8gMiwgCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlUb3AsIAogICAgICAgICAgICAgICAgICAgICAgICBjYW5kbGVXaWR0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGJvZHlIZWlnaHQsIDIpIC8vIE1pbmltdW0gaGVpZ2h0IGZvciB2aXNpYmlsaXR5CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBhZGROZXdDYW5kbGUoKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9sZGVzdCBjYW5kbGUgYW5kIHNoaWZ0IG90aGVycyBsZWZ0CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzLmZvckVhY2goY2FuZGxlID0+IGNhbmRsZS54IC09IDEyKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBuZXcgY2FuZGxlIHdpdGggdHJlbmQKICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmVuZCA9IE1hdGguc2luKERhdGUubm93KCkgKiAwLjAwMSkgKiAwLjMgKyAwLjE7IC8vIFNsaWdodCB1cHdhcmQgdHJlbmQKICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2xhdGlsaXR5ID0gMzAwICsgTWF0aC5zaW4oRGF0ZS5ub3coKSAqIDAuMDAyKSAqIDIwMDsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGVuID0gdGhpcy5jdXJyZW50UHJpY2U7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2UgPSBvcGVuICsgKE1hdGgucmFuZG9tKCkgLSAwLjMgKyB0cmVuZCkgKiB2b2xhdGlsaXR5OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2ggPSBNYXRoLm1heChvcGVuLCBjbG9zZSkgKyBNYXRoLnJhbmRvbSgpICogMjAwOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvdyA9IE1hdGgubWluKG9wZW4sIGNsb3NlKSAtIE1hdGgucmFuZG9tKCkgKiAyMDA7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q2FuZGxlID0gewogICAgICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLmNhbnZhcy53aWR0aCAtIDEyLAogICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBvcGVuLAogICAgICAgICAgICAgICAgICAgICAgICBoaWdoOiBoaWdoLAogICAgICAgICAgICAgICAgICAgICAgICBsb3c6IGxvdywKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U6IGNsb3NlLAogICAgICAgICAgICAgICAgICAgICAgICBidWxsaXNoOiBjbG9zZSA+IG9wZW4KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuZGxlcy5wdXNoKG5ld0NhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UHJpY2UgPSBjbG9zZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkcmF3KCkgewogICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIGNhbnZhcwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBEcmF3IGdyaWQKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdHcmlkKCk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gRHJhdyBjYW5kbGVzCiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzLmZvckVhY2goY2FuZGxlID0+IHRoaXMuZHJhd0NhbmRsZShjYW5kbGUpKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IGNhbmRsZSBwZXJpb2RpY2FsbHkKICAgICAgICAgICAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMubGFzdENhbmRsZVRpbWUgPiAyMDAwKSB7IC8vIE5ldyBjYW5kbGUgZXZlcnkgMiBzZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3Q2FuZGxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdENhbmRsZVRpbWUgPSBEYXRlLm5vdygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkcmF3R3JpZCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSknOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IDAuNTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBIb3Jpem9udGFsIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9ICh0aGlzLmNhbnZhcy5oZWlnaHQgLyA1KSAqIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oMCwgeSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmxpbmVUbyh0aGlzLmNhbnZhcy53aWR0aCwgeSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBWZXJ0aWNhbCBsaW5lcwogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMTA7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gKHRoaXMuY2FudmFzLndpZHRoIC8gMTApICogaTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4Lm1vdmVUbyh4LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgubGluZVRvKHgsIHRoaXMuY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzdGFydEFuaW1hdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBhbmltYXRlID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzdGFydFRyYWRpbmdTaWduYWxzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hbHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdidXlTaWduYWwnLCBkdXJhdGlvbjogNDAwMCwgZGVsYXk6IDMwMDAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3Byb2ZpdFNpZ25hbCcsIGR1cmF0aW9uOiA0MDAwLCBkZWxheTogMTAwMDAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3NlbGxTaWduYWwnLCBkdXJhdGlvbjogNDAwMCwgZGVsYXk6IDE3MDAwIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdzdGF0c1NpZ25hbCcsIGR1cmF0aW9uOiA0MDAwLCBkZWxheTogMjQwMDAgfQogICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgIGxldCBidXlQcmljZSA9IDQ1MDAwOwogICAgICAgICAgICAgICAgICAgIGxldCBzZWxsUHJpY2UgPSBidXlQcmljZTsKCiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlUHJpY2VzID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBidXlQcmljZSA9IE1hdGguZmxvb3IoNDAwMDAgKyBNYXRoLnJhbmRvbSgpICogMjAwMDApOwogICAgICAgICAgICAgICAgICAgICAgICBzZWxsUHJpY2UgPSBNYXRoLmZsb29yKGJ1eVByaWNlICogKDEuMDMgKyBNYXRoLnJhbmRvbSgpICogMC4wOCkpOyAvLyAzLTExJSBwcm9maXQKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZml0ID0gc2VsbFByaWNlIC0gYnV5UHJpY2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2ZpdFBlcmNlbnQgPSAoKHByb2ZpdCAvIGJ1eVByaWNlKSAqIDEwMCkudG9GaXhlZCgxKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBzaWduYWwgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnV5UHJpY2UnKS50ZXh0Q29udGVudCA9IGAkJHtidXlQcmljZS50b0xvY2FsZVN0cmluZygpfWA7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWxsUHJpY2UnKS50ZXh0Q29udGVudCA9IGAkJHtzZWxsUHJpY2UudG9Mb2NhbGVTdHJpbmcoKX1gOwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZml0QW1vdW50JykudGV4dENvbnRlbnQgPSBgKyQke3Byb2ZpdC50b0xvY2FsZVN0cmluZygpfSAoKyR7cHJvZml0UGVyY2VudH0lKWA7CiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd1NpZ25hbCA9IChzaWduYWxJZCwgZHVyYXRpb24pID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2lnbmFsSWQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNpZ25hbCkgcmV0dXJuOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHByaWNlcyBiZWZvcmUgc2hvd2luZwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbmFsSWQgPT09ICdidXlTaWduYWwnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcmljZXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9zaXRpb24gd2l0aGluIGhlcm8gc2VjdGlvbiBib3VuZHMKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVyb1NlY3Rpb24gPSBzaWduYWwuY2xvc2VzdCgnc2VjdGlvbicpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gaGVyb1NlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChyZWN0LndpZHRoIC0gMjUwLCAxMDApOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgocmVjdC5oZWlnaHQgLSAxMDAsIDEwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gNTAgKyBNYXRoLnJhbmRvbSgpICogbWF4WDsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IDgwICsgTWF0aC5yYW5kb20oKSAqIChtYXhZIC0gMTYwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zdHlsZS5sZWZ0ID0geCArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zdHlsZS50b3AgPSB5ICsgJ3B4JzsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3cgc2lnbmFsIHdpdGggYW5pbWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5jbGFzc0xpc3QucmVtb3ZlKCdvcGFjaXR5LTAnLCAndHJhbnNsYXRlLXktNCcpOwogICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuY2xhc3NMaXN0LmFkZCgnb3BhY2l0eS0xMDAnLCAndHJhbnNsYXRlLXktMCcsICdzY2FsZS0xMDUnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBwdWxzZSBlZmZlY3QKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuY2xhc3NMaXN0LnJlbW92ZSgnc2NhbGUtMTA1Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIGFmdGVyIGR1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLmNsYXNzTGlzdC5yZW1vdmUoJ29wYWNpdHktMTAwJywgJ3RyYW5zbGF0ZS15LTAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5jbGFzc0xpc3QuYWRkKCdvcGFjaXR5LTAnLCAndHJhbnNsYXRlLXktNCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9LCBkdXJhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgY29uc3QgcnVuU2lnbmFsQ3ljbGUgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbHMuZm9yRWFjaChzaWduYWwgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1NpZ25hbChzaWduYWwuaWQsIHNpZ25hbC5kdXJhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaWduYWwuZGVsYXkpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGVhdCBjeWNsZQogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJ1blNpZ25hbEN5Y2xlLCAzMDAwMCk7IC8vIDMwIHNlY29uZCBjeWNsZQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGZpcnN0IGN5Y2xlIGFmdGVyIHBhZ2UgbG9hZAogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocnVuU2lnbmFsQ3ljbGUsIDQwMDApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJbml0aWFsaXplIHRyYWRpbmcgY2hhcnQgd2hlbiBwYWdlIGxvYWRzCiAgICAgICAgICAgIC8vIE1pbmkgVHJhZGluZyBDaGFydCBmb3IgQUkgU2VjdGlvbgogICAgICAgICAgICBjbGFzcyBNaW5pVHJhZGluZ0NoYXJ0IHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbmlUcmFkaW5nQ2hhcnQnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FudmFzKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuZGxlcyA9IFtdOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFByaWNlID0gNDUwMDA7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb25GcmFtZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0Q2FuZGxlVGltZSA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFkaW5nUGhhc2UgPSAnaWRsZSc7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFkZVN0YXJ0UHJpY2UgPSAwOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdENhbnZhcygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbml0aWFsQ2FuZGxlcygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRBbmltYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VHJhZGluZ1NpbXVsYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0TWV0cmljc1VwZGF0ZXMoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbml0Q2FudmFzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNhbnZhcy5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgIC8vIEFjY291bnQgZm9yIHBhZGRpbmcgKDIgKiA4cHggPSAxNnB4IHRvdGFsKQogICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gcmVjdC53aWR0aCAtIDE2OwogICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IHJlY3QuaGVpZ2h0IC0gMTY7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY2FudmFzLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gcmVjdC53aWR0aCAtIDE2OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSByZWN0LmhlaWdodCAtIDE2OwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGdlbmVyYXRlSW5pdGlhbENhbmRsZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGxlV2lkdGggPSA2OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRsZVNwYWNpbmcgPSAxMDsKICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1DYW5kbGVzID0gTWF0aC5mbG9vcih0aGlzLmNhbnZhcy53aWR0aCAvIGNhbmRsZVNwYWNpbmcpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ2FuZGxlczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZW4gPSB0aGlzLmN1cnJlbnRQcmljZSArIChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDEwMDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlID0gb3BlbiArIChNYXRoLnJhbmRvbSgpIC0gMC40KSAqIDgwMDsgLy8gU2xpZ2h0bHkgYnVsbGlzaCBiaWFzCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2ggPSBNYXRoLm1heChvcGVuLCBjbG9zZSkgKyBNYXRoLnJhbmRvbSgpICogMzAwOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3cgPSBNYXRoLm1pbihvcGVuLCBjbG9zZSkgLSBNYXRoLnJhbmRvbSgpICogMjAwOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaSAqIGNhbmRsZVNwYWNpbmcgKyA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbjogb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2g6IGhpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3c6IGxvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlOiBjbG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bGxpc2g6IGNsb3NlID4gb3BlbgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFByaWNlID0gY2xvc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGFkZE5ld0NhbmRsZSgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMubGFzdENhbmRsZVRpbWUgPCAxMDAwKSByZXR1cm47IC8vIE5ldyBjYW5kbGUgZXZlcnkgMSBzZWNvbmQKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkZXN0IGNhbmRsZSBhbmQgc2hpZnQgb3RoZXJzIGxlZnQKICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbmRsZXMuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbmRsZXMuZm9yRWFjaChjYW5kbGUgPT4gY2FuZGxlLnggLT0gMTApOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIG5ldyBjYW5kbGUgd2l0aCB0cmVuZCBiYXNlZCBvbiB0cmFkaW5nIHBoYXNlCiAgICAgICAgICAgICAgICAgICAgbGV0IHRyZW5kID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmFkaW5nUGhhc2UgPT09ICdidXlpbmcnKSB0cmVuZCA9IDAuMzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnRyYWRpbmdQaGFzZSA9PT0gJ2hvbGRpbmcnKSB0cmVuZCA9IDAuMTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnRyYWRpbmdQaGFzZSA9PT0gJ3NlbGxpbmcnKSB0cmVuZCA9IC0wLjE7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9sYXRpbGl0eSA9IDIwMCArIE1hdGguc2luKERhdGUubm93KCkgKiAwLjAwMikgKiAxMDA7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHRoaXMuY3VycmVudFByaWNlOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlID0gb3BlbiArIChNYXRoLnJhbmRvbSgpIC0gMC4zICsgdHJlbmQpICogdm9sYXRpbGl0eTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWdoID0gTWF0aC5tYXgob3BlbiwgY2xvc2UpICsgTWF0aC5yYW5kb20oKSAqIDE1MDsKICAgICAgICAgICAgICAgICAgICBjb25zdCBsb3cgPSBNYXRoLm1pbihvcGVuLCBjbG9zZSkgLSBNYXRoLnJhbmRvbSgpICogMTUwOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NhbmRsZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogdGhpcy5jYW52YXMud2lkdGggLSAxNSwKICAgICAgICAgICAgICAgICAgICAgICAgb3Blbjogb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgaGlnaDogaGlnaCwKICAgICAgICAgICAgICAgICAgICAgICAgbG93OiBsb3csCiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlOiBjbG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgYnVsbGlzaDogY2xvc2UgPiBvcGVuCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbmRsZXMucHVzaChuZXdDYW5kbGUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFByaWNlID0gY2xvc2U7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0Q2FuZGxlVGltZSA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZHJhd0NhbmRsZShjYW5kbGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kbGVXaWR0aCA9IDU7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lja1dpZHRoID0gMTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBNYXAgcHJpY2VzIHRvIGNhbnZhcyBjb29yZGluYXRlcwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pblByaWNlID0gTWF0aC5taW4oLi4udGhpcy5jYW5kbGVzLm1hcChjID0+IGMubG93KSkgLSAxMDA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4UHJpY2UgPSBNYXRoLm1heCguLi50aGlzLmNhbmRsZXMubWFwKGMgPT4gYy5oaWdoKSkgKyAxMDA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpY2VSYW5nZSA9IG1heFByaWNlIC0gbWluUHJpY2U7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwWSA9IChwcmljZSkgPT4gdGhpcy5jYW52YXMuaGVpZ2h0IC0gKChwcmljZSAtIG1pblByaWNlKSAvIHByaWNlUmFuZ2UpICogdGhpcy5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZW5ZID0gbWFwWShjYW5kbGUub3Blbik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VZID0gbWFwWShjYW5kbGUuY2xvc2UpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hZID0gbWFwWShjYW5kbGUuaGlnaCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbG93WSA9IG1hcFkoY2FuZGxlLmxvdyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGNvbG9ycyBmb3IgbWluaSBjaGFydAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gY2FuZGxlLmJ1bGxpc2ggPyAnIzEwQjk4MScgOiAnI0VGNDQ0NCc7IC8vIEdyZWVuIG9yIFJlZAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpY2tDb2xvciA9IGNhbmRsZS5idWxsaXNoID8gJyMwNTk2NjknIDogJyNEQzI2MjYnOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIERyYXcgd2ljawogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gd2lja0NvbG9yOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IHdpY2tXaWR0aDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oY2FuZGxlLngsIGhpZ2hZKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8oY2FuZGxlLngsIGxvd1kpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIERyYXcgYm9keQogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHlIZWlnaHQgPSBNYXRoLmFicyhjbG9zZVkgLSBvcGVuWSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keVRvcCA9IE1hdGgubWluKG9wZW5ZLCBjbG9zZVkpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmZpbGxSZWN0KAogICAgICAgICAgICAgICAgICAgICAgICBjYW5kbGUueCAtIGNhbmRsZVdpZHRoIC8gMiwgCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlUb3AsIAogICAgICAgICAgICAgICAgICAgICAgICBjYW5kbGVXaWR0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGJvZHlIZWlnaHQsIDEpIC8vIE1pbmltdW0gaGVpZ2h0IGZvciB2aXNpYmlsaXR5CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkcmF3KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jYW5kbGVzLmxlbmd0aCA8IDIpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBEcmF3IGdyaWQgYmFja2dyb3VuZAogICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd01pbmlHcmlkKCk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gRHJhdyBjYW5kbGVzCiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzLmZvckVhY2goY2FuZGxlID0+IHRoaXMuZHJhd0NhbmRsZShjYW5kbGUpKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IGNhbmRsZSBwZXJpb2RpY2FsbHkKICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0NhbmRsZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRyYXdNaW5pR3JpZCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpJzsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lV2lkdGggPSAwLjU7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gSG9yaXpvbnRhbCBsaW5lcwogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSAodGhpcy5jYW52YXMuaGVpZ2h0IC8gNCkgKiBpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgubW92ZVRvKDAsIHkpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8odGhpcy5jYW52YXMud2lkdGgsIHkpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5zdHJva2UoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gVmVydGljYWwgbGluZXMKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDY7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gKHRoaXMuY2FudmFzLndpZHRoIC8gNikgKiBpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgubW92ZVRvKHgsIDApOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8oeCwgdGhpcy5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHNob3dUcmFkaW5nTWFya2VyKHR5cGUsIHByaWNlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFya2VyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodHlwZSArICdNYXJrZXInKTsKICAgICAgICAgICAgICAgICAgICBpZiAobWFya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9uIG1hcmtlciB3aXRoIGVub3VnaCBzcGFjZSBmb3IgdGV4dCBsYWJlbAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXJYID0gTWF0aC5tYXgoNjAsIHRoaXMuY2FudmFzLndpZHRoIC0gODApOyAvLyBBdCBsZWFzdCA2MHB4IGZyb20gbGVmdCwgODBweCBmcm9tIHJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmtlclkgPSAyMCArIE1hdGgucmFuZG9tKCkgKiAodGhpcy5jYW52YXMuaGVpZ2h0IC0gNjApOyAvLyBSYW5kb20gWSBwb3NpdGlvbiB3aXRoIG1hcmdpbgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnN0eWxlLmxlZnQgPSBtYXJrZXJYICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnN0eWxlLnRvcCA9IG1hcmtlclkgKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BhY2l0eS0wJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5jbGFzc0xpc3QuYWRkKCdvcGFjaXR5LTEwMCcpOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BhY2l0eS0xMDAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5jbGFzc0xpc3QuYWRkKCdvcGFjaXR5LTAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0YXJ0VHJhZGluZ1NpbXVsYXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhZGluZ0N5Y2xlID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhZGluZ1BoYXNlID0gJ2J1eWluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWRlU3RhcnRQcmljZSA9IHRoaXMuY3VycmVudFByaWNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VHJhZGluZ01hcmtlcignYnV5JywgdGhpcy5jdXJyZW50UHJpY2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUcmFkaW5nU3RhdHMoJ2J1eScpOwogICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFkaW5nUGhhc2UgPSAnaG9sZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDgwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWRpbmdQaGFzZSA9ICdpZGxlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RyYWRpbmdNYXJrZXIoJ3NlbGwnLCB0aGlzLmN1cnJlbnRQcmljZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRyYWRpbmdTdGF0cygnc2VsbCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9LCAxNTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRyYWRpbmdDeWNsZSwgMjUwMDApOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdHJhZGluZ0N5Y2xlKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdXBkYXRlVHJhZGluZ1N0YXRzKGFjdGlvbikgewogICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICdidXknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW50UG9zaXRpb24nKS50ZXh0Q29udGVudCA9ICdMT05HIEJUQy9VU0RUJzsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VudHJ5UHJpY2UnKS50ZXh0Q29udGVudCA9ICckJyArIE1hdGguZmxvb3IodGhpcy50cmFkZVN0YXJ0UHJpY2UpLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdzZWxsJykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9maXQgPSB0aGlzLmN1cnJlbnRQcmljZSAtIHRoaXMudHJhZGVTdGFydFByaWNlOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9maXRQZXJjZW50ID0gKChwcm9maXQgLyB0aGlzLnRyYWRlU3RhcnRQcmljZSkgKiAxMDApLnRvRml4ZWQoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2ZpdENvbG9yID0gcHJvZml0ID4gMCA/ICd0ZXh0LWdyZWVuLTQwMCcgOiAndGV4dC1yZWQtNDAwJzsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW50UG5MJykudGV4dENvbnRlbnQgPSAocHJvZml0ID4gMCA/ICcrJyA6ICcnKSArICckJyArIE1hdGguZmxvb3IocHJvZml0KS50b0xvY2FsZVN0cmluZygpICsgJyAoJyArIChwcm9maXQgPiAwID8gJysnIDogJycpICsgcHJvZml0UGVyY2VudCArICclKSc7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW50UG5MJykuY2xhc3NOYW1lID0gJ2ZvbnQtbW9ubyAnICsgcHJvZml0Q29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW50UG9zaXRpb24nKS50ZXh0Q29udGVudCA9ICdOTyBQT1NJVElPTic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3VycmVudFBuTCcpLnRleHRDb250ZW50ID0gJyQwICgwJSknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1cnJlbnRQbkwnKS5jbGFzc05hbWUgPSAnZm9udC1tb25vIHRleHQtZ3JheS00MDAnOwogICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDAwKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc3RhcnRNZXRyaWNzVXBkYXRlcygpIHsKICAgICAgICAgICAgICAgICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0ciA9ICgxLjUgKyBNYXRoLnJhbmRvbSgpICogMikudG9GaXhlZCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9sYXRpbGl0eUxldmVscyA9IFsnTG93JywgJ01lZGl1bScsICdIaWdoJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvbGF0aWxpdHkgPSB2b2xhdGlsaXR5TGV2ZWxzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDMpXTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdHJWYWx1ZScpLnRleHRDb250ZW50ID0gYXRyICsgJyUnOwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndm9sYXRpbGl0eUxldmVsJykudGV4dENvbnRlbnQgPSB2b2xhdGlsaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhaWxEaXN0YW5jZSA9ICgxLjIgKyBNYXRoLnJhbmRvbSgpICogMS41KS50b0ZpeGVkKDEpOwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJhaWxEaXN0YW5jZScpLnRleHRDb250ZW50ID0gdHJhaWxEaXN0YW5jZSArICclJzsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVRyYWlscyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGl2ZVRyYWlscycpLnRleHRDb250ZW50ID0gYWN0aXZlVHJhaWxzOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxUcmFkZXMgPSBNYXRoLmZsb29yKDEyMDAgKyBNYXRoLnJhbmRvbSgpICogMTAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZnUHJvZml0ID0gKDMuNSArIE1hdGgucmFuZG9tKCkgKiAyKS50b0ZpeGVkKDEpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhEcmF3ZG93biA9ICgyLjAgKyBNYXRoLnJhbmRvbSgpICogMikudG9GaXhlZCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hhcnBlUmF0aW8gPSAoMi4wICsgTWF0aC5yYW5kb20oKSAqIDAuOCkudG9GaXhlZCgyKTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3RhbFRyYWRlcycpLnRleHRDb250ZW50ID0gdG90YWxUcmFkZXMudG9Mb2NhbGVTdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2Z1Byb2ZpdCcpLnRleHRDb250ZW50ID0gJysnICsgYXZnUHJvZml0ICsgJyUnOwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWF4RHJhd2Rvd24nKS50ZXh0Q29udGVudCA9ICctJyArIG1heERyYXdkb3duICsgJyUnOwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hhcnBlUmF0aW8nKS50ZXh0Q29udGVudCA9IHNoYXJwZVJhdGlvOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4UmlzayA9ICgxLjUgKyBNYXRoLnJhbmRvbSgpICogMSkudG9GaXhlZCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2luUmF0ZSA9IE1hdGguZmxvb3IoNzUgKyBNYXRoLnJhbmRvbSgpICogMTApOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21heFJpc2snKS50ZXh0Q29udGVudCA9IG1heFJpc2sgKyAnJSc7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aW5SYXRlJykudGV4dENvbnRlbnQgPSB3aW5SYXRlICsgJyUnOwogICAgICAgICAgICAgICAgICAgIH0sIDMwMDApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0YXJ0QW5pbWF0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGFuaW1hdGUgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhdygpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBEZWZlciBjaGFydCBpbml0IHVudGlsIGFmdGVyIHBhZ2UgZnVsbHkgbG9hZHMg4oCUIGltcHJvdmVzIEZDUCAmIExDUAogICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3QgY2hhcnQgPSBuZXcgVHJhZGluZ0NoYXJ0KCk7CiAgICAgICAgICAgICAgICBjb25zdCBtaW5pQ2hhcnQgPSBuZXcgTWluaVRyYWRpbmdDaGFydCgpOwogICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjaGFydC5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgICAgbWluaUNoYXJ0LmRlc3Ryb3koKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gLy8gZW5kIGluaXRBbGwKCiAgICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbml0QWxsKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGluaXRBbGwoKTsKICAgICAgICAgIH0KICAgICAgICB9KSgpOwogICAgICAgIDwvc2NyaXB0PgoKPGEgaHJlZj0iaHR0cHM6Ly90Lm1lL2JpbmFuY2VCb3RUcmFkZVNpZ25hbCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgY2xhc3M9InRlbGVncmFtLWZsb2F0Ij4KPHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgaWQ9IlNWR1JlcG9fYmdDYXJyaWVyIiBzdHJva2Utd2lkdGg9IjAiPjwvZz48ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvZz48ZyBpZD0iU1ZHUmVwb19pY29uQ2FycmllciI+IDxjaXJjbGUgY3g9IjE2IiBjeT0iMTYiIHI9IjE0IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfODdfNzIyNSkiPjwvY2lyY2xlPiA8cGF0aCBkPSJNMjIuOTg2NiAxMC4yMDg4QzIzLjExMTIgOS40MDMzMiAyMi4zNDU0IDguNzY3NTUgMjEuNjI5MiA5LjA4Mkw3LjM2NDgyIDE1LjM0NDhDNi44NTEyMyAxNS41NzAzIDYuODg4OCAxNi4zNDgzIDcuNDIxNDcgMTYuNTE3OUwxMC4zNjMxIDE3LjQ1NDdDMTAuOTI0NiAxNy42MzM1IDExLjUzMjUgMTcuNTQxIDEyLjAyMjggMTcuMjAyM0wxOC42NTUgMTIuNjIwM0MxOC44NTUgMTIuNDgyMSAxOS4wNzMgMTIuNzY2NSAxOC45MDIxIDEyLjk0MjZMMTQuMTI4MSAxNy44NjQ2QzEzLjY2NSAxOC4zNDIxIDEzLjc1NjkgMTkuMTUxMiAxNC4zMTQgMTkuNTAwNUwxOS42NTkgMjIuODUyM0MyMC4yNTg1IDIzLjIyODIgMjEuMDI5NyAyMi44NTA2IDIxLjE0MTggMjIuMTI2MUwyMi45ODY2IDEwLjIwODhaIiBmaWxsPSJ3aGl0ZSI+PC9wYXRoPiA8ZGVmcz4gPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzg3XzcyMjUiIHgxPSIxNiIgeTE9IjIiIHgyPSIxNiIgeTI9IjMwIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxzdG9wIHN0b3AtY29sb3I9IiMzN0JCRkUiPjwvc3RvcD4gPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3REJCIj48L3N0b3A+IDwvbGluZWFyR3JhZGllbnQ+IDwvZGVmcz4gPC9nPjwvc3ZnPgoKPC9hPgoKPHN0eWxlPgoudGVsZWdyYW0tZmxvYXQgewogIHBvc2l0aW9uOiBmaXhlZDsKICB3aWR0aDogNjBweDsKICBoZWlnaHQ6IDYwcHg7CiAgYm90dG9tOiA1MHB4OwogIHJpZ2h0OiA1MHB4OwogIGJhY2tncm91bmQtY29sb3I6ICMwMDg4Y2M7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLDAsMCwwLjIpOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0OwogIHotaW5kZXg6IDk5OTk7Cn0KLnRlbGVncmFtLWZsb2F0OmhvdmVyIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7Cn0KLnRlbGVncmFtLWZsb2F0IGltZyB7CiAgd2lkdGg6IDI4cHg7CiAgaGVpZ2h0OiAyOHB4Owp9Cjwvc3R5bGU+CiAgICA8L2JvZHk+CjwvaHRtbD4K"}},"time_used":675,"timings":{"blocked":-1,"dns":82,"connect":133,"send":0,"wait":184,"receive":0,"ssl":276},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.bunny.net/css?family=instrument-sans:400,500,600,700","fqdn":"fonts.bunny.net","domain":"bunny.net","tld":"net"},"ip":{"addr":"194.242.11.186","port":443,"asn":34989,"as":"ServeTheWorld AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://cryptotradingaibot.com/","date":"2026-07-27T05:13:01.318Z","timestamp":1785129181318,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"fonts.bunny.net","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Fri, 03 Jul 2026 07:03:25 GMT","end":"Thu, 01 Oct 2026 07:03:24 GMT"},"fingerprint":{"sha1":"2F:C2:E6:03:F2:78:44:D6:05:62:87:B9:36:FE:75:1D:F2:43:DB:4C","sha256":"10:E3:7E:D7:0D:2E:7C:1E:3F:83:88:4D:0A:FA:08:F0:89:EB:5A:82:2F:A2:FC:C0:B3:BF:31:05:EE:A9:AB:50"}}},"request":{"raw":"GET /css?family=instrument-sans:400,500,600,700 HTTP/1.1\r\nHost: fonts.bunny.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cryptotradingaibot.com/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=0\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 05:13:01 GMT\r\ncontent-type: text/css; charset=utf-8\r\nvary: Accept-Encoding\r\nserver: BunnyCDN-NO1-830\r\ncdn-pullzone: 781720\r\ncdn-requestcountrycode: NO\r\naccess-control-allow-origin: *\r\naccess-control-allow-headers: Server, x-goog-meta-frames, Content-Length, Content-Type, Range, X-Requested-With, If-Modified-Since, If-None-Match\r\naccess-control-expose-headers: Server, x-goog-meta-frames, Content-Length, Content-Type, Range, X-Requested-With, If-Modified-Since, If-None-Match\r\ncache-control: public, max-age=2592000\r\ncdn-proxyver: 1.58\r\ncdn-requestpullsuccess: True\r\ncdn-requestpullcode: 200\r\ncdn-cachedat: 07/26/2026 12:50:05\r\ncdn-edgestorageid: 830\r\ncdn-requestid: da53ac62f7d9b23e12babaaa7d6f1f81\r\ncdn-cache: HIT\r\ncdn-status: 200\r\ncdn-requesttime: 0\r\ncontent-encoding: br\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Bunny","description":"","website":"https://bunny.net","common_platform_enumeration":"","icon":"Bunny.svg","categories":["CDN"]}],"data":{"size":4288,"size_decoded":1326,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"9f2e77cc37d17cea86f9eb2428342571","sha1":"d4a67b4e40a0a43f78f8489d23dcf7ff91972e61","sha256":"7e4123dafc2e9557f9ec9e9f3ce84446080ed19747a853feab65e5822b600e0b","sha512":"594e84d8e1d5bff1b91d6d0d73cc6e7af2441f3fe95a07a13ac218c1e01108dca1516755da5b08daa85c50a22a04c8052888c17d7eeec73f8abdb5a2f5a07736","ssdeep":"96:7OEMZ+3ZOEM0CqyOXMv+3ZOXMN4NCqyOxMMZ+3ZOxMMoCqyOpMD+3ZOpMiCqG:Os3w0DgW3TN4ND5s3eoDOa3JiDG","tlshash":"9991ddf1445b36048b83192222e7de231e1ed112f045a85a9d3638d48ea4d3d97f3b6e","first_seen":"2025-10-01T04:37:27.523054Z","last_seen":"2026-07-27T05:13:31.019241Z","times_seen":101,"resource_available":false,"data":"LyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnN0cnVtZW50IFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmJ1bm55Lm5ldC9pbnN0cnVtZW50LXNhbnMvZmlsZXMvaW5zdHJ1bWVudC1zYW5zLWxhdGluLTQwMC1ub3JtYWwud29mZjIpIGZvcm1hdCgnd29mZjInKSwgdXJsKGh0dHBzOi8vZm9udHMuYnVubnkubmV0L2luc3RydW1lbnQtc2Fucy9maWxlcy9pbnN0cnVtZW50LXNhbnMtbGF0aW4tNDAwLW5vcm1hbC53b2ZmKSBmb3JtYXQoJ3dvZmYnKTsgCiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsVSswMTMxLFUrMDE1Mi0wMTUzLFUrMDJCQi0wMkJDLFUrMDJDNixVKzAyREEsVSswMkRDLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMjAwMC0yMDZGLFUrMjBBQyxVKzIxMjIsVSsyMTkxLFUrMjE5MyxVKzIyMTIsVSsyMjE1LFUrRkVGRixVK0ZGRkQ7Cn0KCi8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0luc3RydW1lbnQgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuYnVubnkubmV0L2luc3RydW1lbnQtc2Fucy9maWxlcy9pbnN0cnVtZW50LXNhbnMtbGF0aW4tZXh0LTQwMC1ub3JtYWwud29mZjIpIGZvcm1hdCgnd29mZjInKSwgdXJsKGh0dHBzOi8vZm9udHMuYnVubnkubmV0L2luc3RydW1lbnQtc2Fucy9maWxlcy9pbnN0cnVtZW50LXNhbnMtbGF0aW4tZXh0LTQwMC1ub3JtYWwud29mZikgZm9ybWF0KCd3b2ZmJyk7IAogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLFUrMDJCRC0wMkM1LFUrMDJDNy0wMkNDLFUrMDJDRS0wMkQ3LFUrMDJERC0wMkZGLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMUQwMC0xREJGLFUrMUUwMC0xRTlGLFUrMUVGMi0xRUZGLFUrMjAyMCxVKzIwQTAtMjBBQixVKzIwQUQtMjBDMCxVKzIxMTMsVSsyQzYwLTJDN0YsVStBNzIwLUE3RkY7Cn0KCi8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW5zdHJ1bWVudCBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5idW5ueS5uZXQvaW5zdHJ1bWVudC1zYW5zL2ZpbGVzL2luc3RydW1lbnQtc2Fucy1sYXRpbi01MDAtbm9ybWFsLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyksIHVybChodHRwczovL2ZvbnRzLmJ1bm55Lm5ldC9pbnN0cnVtZW50LXNhbnMvZmlsZXMvaW5zdHJ1bWVudC1zYW5zLWxhdGluLTUwMC1ub3JtYWwud29mZikgZm9ybWF0KCd3b2ZmJyk7IAogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLFUrMDEzMSxVKzAxNTItMDE1MyxVKzAyQkItMDJCQyxVKzAyQzYsVSswMkRBLFUrMDJEQyxVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzIwMDAtMjA2RixVKzIwQUMsVSsyMTIyLFUrMjE5MSxVKzIxOTMsVSsyMjEyLFUrMjIxNSxVK0ZFRkYsVStGRkZEOwp9CgovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnN0cnVtZW50IFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmJ1bm55Lm5ldC9pbnN0cnVtZW50LXNhbnMvZmlsZXMvaW5zdHJ1bWVudC1zYW5zLWxhdGluLWV4dC01MDAtbm9ybWFsLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyksIHVybChodHRwczovL2ZvbnRzLmJ1bm55Lm5ldC9pbnN0cnVtZW50LXNhbnMvZmlsZXMvaW5zdHJ1bWVudC1zYW5zLWxhdGluLWV4dC01MDAtbm9ybWFsLndvZmYpIGZvcm1hdCgnd29mZicpOyAKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSxVKzAyQkQtMDJDNSxVKzAyQzctMDJDQyxVKzAyQ0UtMDJENyxVKzAyREQtMDJGRixVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzFEMDAtMURCRixVKzFFMDAtMUU5RixVKzFFRjItMUVGRixVKzIwMjAsVSsyMEEwLTIwQUIsVSsyMEFELTIwQzAsVSsyMTEzLFUrMkM2MC0yQzdGLFUrQTcyMC1BN0ZGOwp9CgovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0luc3RydW1lbnQgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuYnVubnkubmV0L2luc3RydW1lbnQtc2Fucy9maWxlcy9pbnN0cnVtZW50LXNhbnMtbGF0aW4tNjAwLW5vcm1hbC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpLCB1cmwoaHR0cHM6Ly9mb250cy5idW5ueS5uZXQvaW5zdHJ1bWVudC1zYW5zL2ZpbGVzL2luc3RydW1lbnQtc2Fucy1sYXRpbi02MDAtbm9ybWFsLndvZmYpIGZvcm1hdCgnd29mZicpOyAKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRixVKzAxMzEsVSswMTUyLTAxNTMsVSswMkJCLTAyQkMsVSswMkM2LFUrMDJEQSxVKzAyREMsVSswMzA0LFUrMDMwOCxVKzAzMjksVSsyMDAwLTIwNkYsVSsyMEFDLFUrMjEyMixVKzIxOTEsVSsyMTkzLFUrMjIxMixVKzIyMTUsVStGRUZGLFUrRkZGRDsKfQoKLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW5zdHJ1bWVudCBTYW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LXN0cmV0Y2g6IDEwMCU7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5idW5ueS5uZXQvaW5zdHJ1bWVudC1zYW5zL2ZpbGVzL2luc3RydW1lbnQtc2Fucy1sYXRpbi1leHQtNjAwLW5vcm1hbC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpLCB1cmwoaHR0cHM6Ly9mb250cy5idW5ueS5uZXQvaW5zdHJ1bWVudC1zYW5zL2ZpbGVzL2luc3RydW1lbnQtc2Fucy1sYXRpbi1leHQtNjAwLW5vcm1hbC53b2ZmKSBmb3JtYXQoJ3dvZmYnKTsgCiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsVSswMkJELTAyQzUsVSswMkM3LTAyQ0MsVSswMkNFLTAyRDcsVSswMkRELTAyRkYsVSswMzA0LFUrMDMwOCxVKzAzMjksVSsxRDAwLTFEQkYsVSsxRTAwLTFFOUYsVSsxRUYyLTFFRkYsVSsyMDIwLFUrMjBBMC0yMEFCLFUrMjBBRC0yMEMwLFUrMjExMyxVKzJDNjAtMkM3RixVK0E3MjAtQTdGRjsKfQoKLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnN0cnVtZW50IFNhbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc3RyZXRjaDogMTAwJTsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmJ1bm55Lm5ldC9pbnN0cnVtZW50LXNhbnMvZmlsZXMvaW5zdHJ1bWVudC1zYW5zLWxhdGluLTcwMC1ub3JtYWwud29mZjIpIGZvcm1hdCgnd29mZjInKSwgdXJsKGh0dHBzOi8vZm9udHMuYnVubnkubmV0L2luc3RydW1lbnQtc2Fucy9maWxlcy9pbnN0cnVtZW50LXNhbnMtbGF0aW4tNzAwLW5vcm1hbC53b2ZmKSBmb3JtYXQoJ3dvZmYnKTsgCiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsVSswMTMxLFUrMDE1Mi0wMTUzLFUrMDJCQi0wMkJDLFUrMDJDNixVKzAyREEsVSswMkRDLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMjAwMC0yMDZGLFUrMjBBQyxVKzIxMjIsVSsyMTkxLFUrMjE5MyxVKzIyMTIsVSsyMjE1LFUrRkVGRixVK0ZGRkQ7Cn0KCi8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0luc3RydW1lbnQgU2Fucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1zdHJldGNoOiAxMDAlOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuYnVubnkubmV0L2luc3RydW1lbnQtc2Fucy9maWxlcy9pbnN0cnVtZW50LXNhbnMtbGF0aW4tZXh0LTcwMC1ub3JtYWwud29mZjIpIGZvcm1hdCgnd29mZjInKSwgdXJsKGh0dHBzOi8vZm9udHMuYnVubnkubmV0L2luc3RydW1lbnQtc2Fucy9maWxlcy9pbnN0cnVtZW50LXNhbnMtbGF0aW4tZXh0LTcwMC1ub3JtYWwud29mZikgZm9ybWF0KCd3b2ZmJyk7IAogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLFUrMDJCRC0wMkM1LFUrMDJDNy0wMkNDLFUrMDJDRS0wMkQ3LFUrMDJERC0wMkZGLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMUQwMC0xREJGLFUrMUUwMC0xRTlGLFUrMUVGMi0xRUZGLFUrMjAyMCxVKzIwQTAtMjBBQixVKzIwQUQtMjBDMCxVKzIxMTMsVSsyQzYwLTJDN0YsVStBNzIwLUE3RkY7Cn0KCg=="}},"time_used":29,"timings":{"blocked":-1,"dns":12,"connect":11,"send":0,"wait":2,"receive":-1,"ssl":4},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cryptotradingaibot.com/build/assets/app-CtR_AQhp.css","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://cryptotradingaibot.com/","date":"2026-07-27T05:13:01.321Z","timestamp":1785129181321,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cryptotradingaibot.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 11 Jun 2026 03:39:31 GMT","end":"Wed, 09 Sep 2026 03:39:30 GMT"},"fingerprint":{"sha1":"84:6B:D3:A9:DD:43:2F:AA:89:E5:90:F6:E8:F0:FA:01:97:A8:A6:5E","sha256":"FD:48:88:77:05:50:E5:1F:58:01:E8:02:34:9A:F7:4B:21:FC:F2:09:35:6F:39:08:39:9B:F6:A0:2C:0D:E6:F6"}}},"request":{"raw":"GET /build/assets/app-CtR_AQhp.css HTTP/1.1\r\nHost: cryptotradingaibot.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cryptotradingaibot.com/\r\nCookie: XSRF-TOKEN=eyJpdiI6IlFBYUExOTJra1NMU1JMRGxwcUVXYkE9PSIsInZhbHVlIjoiQ2pjT0Z1cFRNK21WQldnRXVqZ21nMmZyN2F0d3hFZEY1em1Xa2NEOXdUdm9aTFZQZW15YmE4NlJxeDlVeVc3REhjZ3dtM2JwNlQ5dWNHcEFOZFN0YU9oNUMybk9sMUJCRHAwcUlHSSsydUM0bFJzdnE1eDZvVmZPS0UzalMxODYiLCJtYWMiOiJjNmQ4MmZkNjA3ZWI1MjAxYmNhZjVkMDk4MWNiMjUwMWE0NTM1N2U1N2VkZTJiMDllMTM0Mjg5NTRlMjFmZmM4IiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6Im0rcEF2akxnL3ZCL1NUWFhIZlZsZlE9PSIsInZhbHVlIjoiVE5YUzdyNWhkemRtK2tER3A0R0t1ZXc4UGZ4ZmtSUy9GOU1Sb25XUFhnRm5GblRqdXFVeFFxNFFTdUYzYm82VXI5TkpLT2U1b3NkZ2U1UDBvc1hyaW52ZWtpSk9xQ29JSXJ0RzhRUzFkbjlQQjJCdzNhb0ZRWHFBZ3AybTVucWEiLCJtYWMiOiI5ODJlZmY4OGZhM2ExOWUwZWM4YWFmNTc2NDhiMTJhYjA5OWRkNzdjODc3OWRiMTA5ODZjYTlkNzlhNGEzNjQxIiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=0\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 05:13:01 GMT\r\ncontent-type: text/css\r\nlast-modified: Wed, 18 Mar 2026 14:31:40 GMT\r\netag: \"b1d7-69bab74c-7896add2c9f5c159;br\"\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 7238\r\ndate: Mon, 27 Jul 2026 05:13:01 GMT\r\nserver: LiteSpeed\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\nalt-svc: h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":45527,"size_decoded":7856,"mime_type":"text/css","magic":"ASCII text, with very long lines (45526)","md5":"23b552adec8fffa6818f3bbbbbfe734a","sha1":"01cf02fc70b3fc36222209be3ebcf7e27b564ece","sha256":"84ade94009fcd6701bf7da2ba489f320f33133da9f608864d543d8747e72ca5d","sha512":"2593700f9421c96858234678b33a65e10d6a433c0bcfe0fd9c971d7bfd73b04ee54be40a0b8f5c2440ae26d53e8ffe5d4bd1dad1e8630a9d4d1975151dd5b246","ssdeep":"384:k2fkT/KWuY6ItI3kXPZ/y/HZNUr7eMCIj:A/Ke6eoZNUr7e4","tlshash":"5513623daa90003b7c5391f9d698f9adf61bb0c1df3a56eaec821120a7d63f64c57604","first_seen":"2026-07-27T04:06:32.626224Z","last_seen":"2026-07-27T05:13:31.019784Z","times_seen":2,"resource_available":false,"data":"Kiw6YmVmb3JlLDphZnRlcnstLXR3LWJvcmRlci1zcGFjaW5nLXg6IDA7LS10dy1ib3JkZXItc3BhY2luZy15OiAwOy0tdHctdHJhbnNsYXRlLXg6IDA7LS10dy10cmFuc2xhdGUteTogMDstLXR3LXJvdGF0ZTogMDstLXR3LXNrZXcteDogMDstLXR3LXNrZXcteTogMDstLXR3LXNjYWxlLXg6IDE7LS10dy1zY2FsZS15OiAxOy0tdHctcGFuLXg6IDstLXR3LXBhbi15OiA7LS10dy1waW5jaC16b29tOiA7LS10dy1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOiBwcm94aW1pdHk7LS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246IDstLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uOiA7LS10dy1vcmRpbmFsOiA7LS10dy1zbGFzaGVkLXplcm86IDstLXR3LW51bWVyaWMtZmlndXJlOiA7LS10dy1udW1lcmljLXNwYWNpbmc6IDstLXR3LW51bWVyaWMtZnJhY3Rpb246IDstLXR3LXJpbmctaW5zZXQ6IDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAwcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogI2ZmZjstLXR3LXJpbmctY29sb3I6IHJnYig1OSAxMzAgMjQ2IC8gLjUpOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OiAwIDAgIzAwMDA7LS10dy1yaW5nLXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93OiAwIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwOy0tdHctYmx1cjogOy0tdHctYnJpZ2h0bmVzczogOy0tdHctY29udHJhc3Q6IDstLXR3LWdyYXlzY2FsZTogOy0tdHctaHVlLXJvdGF0ZTogOy0tdHctaW52ZXJ0OiA7LS10dy1zYXR1cmF0ZTogOy0tdHctc2VwaWE6IDstLXR3LWRyb3Atc2hhZG93OiA7LS10dy1iYWNrZHJvcC1ibHVyOiA7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS10dy1iYWNrZHJvcC1jb250cmFzdDogOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS10dy1iYWNrZHJvcC1pbnZlcnQ6IDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6IDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOiA7LS10dy1iYWNrZHJvcC1zZXBpYTogOy0tdHctY29udGFpbi1zaXplOiA7LS10dy1jb250YWluLWxheW91dDogOy0tdHctY29udGFpbi1wYWludDogOy0tdHctY29udGFpbi1zdHlsZTogfTo6YmFja2Ryb3B7LS10dy1ib3JkZXItc3BhY2luZy14OiAwOy0tdHctYm9yZGVyLXNwYWNpbmcteTogMDstLXR3LXRyYW5zbGF0ZS14OiAwOy0tdHctdHJhbnNsYXRlLXk6IDA7LS10dy1yb3RhdGU6IDA7LS10dy1za2V3LXg6IDA7LS10dy1za2V3LXk6IDA7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTstLXR3LXBhbi14OiA7LS10dy1wYW4teTogOy0tdHctcGluY2gtem9vbTogOy0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7LS10dy1yaW5nLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIC41KTstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogMCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNlNWU3ZWJ9OmJlZm9yZSw6YWZ0ZXJ7LS10dy1jb250ZW50OiAiIn1odG1sLDpob3N0e2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbW96LXRhYi1zaXplOjQ7LW8tdGFiLXNpemU6NDt0YWItc2l6ZTo0O2ZvbnQtZmFtaWx5OkZpZ3RyZWUsdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsU2Vnb2UgVUkgU3ltYm9sLCJOb3RvIENvbG9yIEVtb2ppIjtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keXttYXJnaW46MDtsaW5lLWhlaWdodDppbmhlcml0fWhye2hlaWdodDowO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGRlcn1jb2RlLGtiZCxzYW1wLHByZXtmb250LWZhbWlseTp1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7Zm9udC1zaXplOjFlbX1zbWFsbHtmb250LXNpemU6ODAlfXN1YixzdXB7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXN1Yntib3R0b206LS4yNWVtfXN1cHt0b3A6LS41ZW19dGFibGV7dGV4dC1pbmRlbnQ6MDtib3JkZXItY29sb3I6aW5oZXJpdDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7Zm9udC1zaXplOjEwMCU7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDttYXJnaW46MDtwYWRkaW5nOjB9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixpbnB1dDp3aGVyZShbdHlwZT1idXR0b25dKSxpbnB1dDp3aGVyZShbdHlwZT1yZXNldF0pLGlucHV0OndoZXJlKFt0eXBlPXN1Ym1pdF0pey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Oi1tb3otZm9jdXNyaW5ne291dGxpbmU6YXV0b306LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDtvdXRsaW5lLW9mZnNldDotMnB4fTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247Zm9udDppbmhlcml0fXN1bW1hcnl7ZGlzcGxheTpsaXN0LWl0ZW19YmxvY2txdW90ZSxkbCxkZCxoMSxoMixoMyxoNCxoNSxoNixocixmaWd1cmUscCxwcmV7bWFyZ2luOjB9ZmllbGRzZXR7bWFyZ2luOjA7cGFkZGluZzowfWxlZ2VuZHtwYWRkaW5nOjB9b2wsdWwsbWVudXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfWRpYWxvZ3twYWRkaW5nOjB9dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfWlucHV0OjotbW96LXBsYWNlaG9sZGVyLHRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfWlucHV0OjpwbGFjZWhvbGRlcix0ZXh0YXJlYTo6cGxhY2Vob2xkZXJ7b3BhY2l0eToxO2NvbG9yOiM5Y2EzYWZ9YnV0dG9uLFtyb2xlPWJ1dHRvbl17Y3Vyc29yOnBvaW50ZXJ9OmRpc2FibGVke2N1cnNvcjpkZWZhdWx0fWltZyxzdmcsdmlkZW8sY2FudmFzLGF1ZGlvLGlmcmFtZSxlbWJlZCxvYmplY3R7ZGlzcGxheTpibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aW1nLHZpZGVve21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfVtoaWRkZW5dOndoZXJlKDpub3QoW2hpZGRlbj11bnRpbC1mb3VuZF0pKXtkaXNwbGF5Om5vbmV9W3R5cGU9dGV4dF0saW5wdXQ6d2hlcmUoOm5vdChbdHlwZV0pKSxbdHlwZT1lbWFpbF0sW3R5cGU9dXJsXSxbdHlwZT1wYXNzd29yZF0sW3R5cGU9bnVtYmVyXSxbdHlwZT1kYXRlXSxbdHlwZT1kYXRldGltZS1sb2NhbF0sW3R5cGU9bW9udGhdLFt0eXBlPXNlYXJjaF0sW3R5cGU9dGVsXSxbdHlwZT10aW1lXSxbdHlwZT13ZWVrXSxbbXVsdGlwbGVdLHRleHRhcmVhLHNlbGVjdHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojNmI3MjgwO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXJhZGl1czowO3BhZGRpbmc6LjVyZW0gLjc1cmVtO2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuNXJlbTstLXR3LXNoYWRvdzogMCAwICMwMDAwfVt0eXBlPXRleHRdOmZvY3VzLGlucHV0OndoZXJlKDpub3QoW3R5cGVdKSk6Zm9jdXMsW3R5cGU9ZW1haWxdOmZvY3VzLFt0eXBlPXVybF06Zm9jdXMsW3R5cGU9cGFzc3dvcmRdOmZvY3VzLFt0eXBlPW51bWJlcl06Zm9jdXMsW3R5cGU9ZGF0ZV06Zm9jdXMsW3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOmZvY3VzLFt0eXBlPW1vbnRoXTpmb2N1cyxbdHlwZT1zZWFyY2hdOmZvY3VzLFt0eXBlPXRlbF06Zm9jdXMsW3R5cGU9dGltZV06Zm9jdXMsW3R5cGU9d2Vla106Zm9jdXMsW211bHRpcGxlXTpmb2N1cyx0ZXh0YXJlYTpmb2N1cyxzZWxlY3Q6Zm9jdXN7b3V0bGluZToycHggc29saWQgdHJhbnNwYXJlbnQ7b3V0bGluZS1vZmZzZXQ6MnB4Oy0tdHctcmluZy1pbnNldDogdmFyKC0tdHctZW1wdHksICk7LS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7LS10dy1yaW5nLWNvbG9yOiAjMjU2M2ViOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkgdmFyKC0tdHctcmluZy1vZmZzZXQtY29sb3IpOy0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyk7Ym9yZGVyLWNvbG9yOiMyNTYzZWJ9aW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIsdGV4dGFyZWE6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6IzZiNzI4MDtvcGFjaXR5OjF9aW5wdXQ6OnBsYWNlaG9sZGVyLHRleHRhcmVhOjpwbGFjZWhvbGRlcntjb2xvcjojNmI3MjgwO29wYWNpdHk6MX06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1maWVsZHMtd3JhcHBlcntwYWRkaW5nOjB9Ojotd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWV7bWluLWhlaWdodDoxLjVlbTt0ZXh0LWFsaWduOmluaGVyaXR9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXR7ZGlzcGxheTppbmxpbmUtZmxleH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxkLDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1vbnRoLWZpZWxkLDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWRheS1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxkLDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZS1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWlsbGlzZWNvbmQtZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWVyaWRpZW0tZmllbGR7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfXNlbGVjdHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9J25vbmUnIHZpZXdCb3g9JzAgMCAyMCAyMCclM2UlM2NwYXRoIHN0cm9rZT0nJTIzNmI3MjgwJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS41JyBkPSdNNiA4bDQgNCA0LTQnLyUzZSUzYy9zdmclM2UiKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC41cmVtIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNWVtIDEuNWVtO3BhZGRpbmctcmlnaHQ6Mi41cmVtOy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O3ByaW50LWNvbG9yLWFkanVzdDpleGFjdH1bbXVsdGlwbGVdLFtzaXplXTp3aGVyZShzZWxlY3Q6bm90KFtzaXplPSIxIl0pKXtiYWNrZ3JvdW5kLWltYWdlOmluaXRpYWw7YmFja2dyb3VuZC1wb3NpdGlvbjppbml0aWFsO2JhY2tncm91bmQtcmVwZWF0OnVuc2V0O2JhY2tncm91bmQtc2l6ZTppbml0aWFsO3BhZGRpbmctcmlnaHQ6Ljc1cmVtOy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OnVuc2V0O3ByaW50LWNvbG9yLWFkanVzdDp1bnNldH1bdHlwZT1jaGVja2JveF0sW3R5cGU9cmFkaW9dey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtwYWRkaW5nOjA7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7cHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kLW9yaWdpbjpib3JkZXItYm94Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtmbGV4LXNocmluazowO2hlaWdodDoxcmVtO3dpZHRoOjFyZW07Y29sb3I6IzI1NjNlYjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiM2YjcyODA7Ym9yZGVyLXdpZHRoOjFweDstLXR3LXNoYWRvdzogMCAwICMwMDAwfVt0eXBlPWNoZWNrYm94XXtib3JkZXItcmFkaXVzOjB9W3R5cGU9cmFkaW9de2JvcmRlci1yYWRpdXM6MTAwJX1bdHlwZT1jaGVja2JveF06Zm9jdXMsW3R5cGU9cmFkaW9dOmZvY3Vze291dGxpbmU6MnB4IHNvbGlkIHRyYW5zcGFyZW50O291dGxpbmUtb2Zmc2V0OjJweDstLXR3LXJpbmctaW5zZXQ6IHZhcigtLXR3LWVtcHR5LCApOy0tdHctcmluZy1vZmZzZXQtd2lkdGg6IDJweDstLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiAjZmZmOy0tdHctcmluZy1jb2xvcjogIzI1NjNlYjstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDJweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfVt0eXBlPWNoZWNrYm94XTpjaGVja2VkLFt0eXBlPXJhZGlvXTpjaGVja2Vke2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH1bdHlwZT1jaGVja2JveF06Y2hlY2tlZHtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J3doaXRlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNlJTNjcGF0aCBkPSdNMTIuMjA3IDQuNzkzYTEgMSAwIDAxMCAxLjQxNGwtNSA1YTEgMSAwIDAxLTEuNDE0IDBsLTItMmExIDEgMCAwMTEuNDE0LTEuNDE0TDYuNSA5LjA4Nmw0LjI5My00LjI5M2ExIDEgMCAwMTEuNDE0IDB6Jy8lM2UlM2Mvc3ZnJTNlIil9QG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpe1t0eXBlPWNoZWNrYm94XTpjaGVja2Vkey13ZWJraXQtYXBwZWFyYW5jZTphdXRvOy1tb3otYXBwZWFyYW5jZTphdXRvO2FwcGVhcmFuY2U6YXV0b319W3R5cGU9cmFkaW9dOmNoZWNrZWR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2Nzdmcgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSd3aGl0ZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzZSUzY2NpcmNsZSBjeD0nOCcgY3k9JzgnIHI9JzMnLyUzZSUzYy9zdmclM2UiKX1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSl7W3R5cGU9cmFkaW9dOmNoZWNrZWR7LXdlYmtpdC1hcHBlYXJhbmNlOmF1dG87LW1vei1hcHBlYXJhbmNlOmF1dG87YXBwZWFyYW5jZTphdXRvfX1bdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcixbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpmb2N1cyxbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcixbdHlwZT1yYWRpb106Y2hlY2tlZDpmb2N1c3tib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSdub25lJyB2aWV3Qm94PScwIDAgMTYgMTYnJTNlJTNjcGF0aCBzdHJva2U9J3doaXRlJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMicgZD0nTTQgOGg4Jy8lM2UlM2Mvc3ZnJTNlIik7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fUBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKXtbdHlwZT1jaGVja2JveF06aW5kZXRlcm1pbmF0ZXstd2Via2l0LWFwcGVhcmFuY2U6YXV0bzstbW96LWFwcGVhcmFuY2U6YXV0bzthcHBlYXJhbmNlOmF1dG99fVt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlOmhvdmVyLFt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlOmZvY3Vze2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bdHlwZT1maWxlXXtiYWNrZ3JvdW5kOnVuc2V0O2JvcmRlci1jb2xvcjppbmhlcml0O2JvcmRlci13aWR0aDowO2JvcmRlci1yYWRpdXM6MDtwYWRkaW5nOjA7Zm9udC1zaXplOnVuc2V0O2xpbmUtaGVpZ2h0OmluaGVyaXR9W3R5cGU9ZmlsZV06Zm9jdXN7b3V0bGluZToxcHggc29saWQgQnV0dG9uVGV4dDtvdXRsaW5lOjFweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcn0uY29udGFpbmVye3dpZHRoOjEwMCV9QG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KXsuY29udGFpbmVye21heC13aWR0aDo2NDBweH19QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXsuY29udGFpbmVye21heC13aWR0aDo3NjhweH19QG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTAyNHB4fX1AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KXsuY29udGFpbmVye21heC13aWR0aDoxMjgwcHh9fUBtZWRpYSAobWluLXdpZHRoOiAxNTM2cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjE1MzZweH19LnNyLW9ubHl7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7cGFkZGluZzowO21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCwwLDAsMCk7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci13aWR0aDowfS5wb2ludGVyLWV2ZW50cy1ub25le3BvaW50ZXItZXZlbnRzOm5vbmV9LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9Lmluc2V0LTB7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjB9Lmluc2V0LXktMHt0b3A6MDtib3R0b206MH0uZW5kLTB7aW5zZXQtaW5saW5lLWVuZDowcHh9LmxlZnQtMHtsZWZ0OjB9LnN0YXJ0LTB7aW5zZXQtaW5saW5lLXN0YXJ0OjBweH0udG9wLTIwe3RvcDo1cmVtfS56LTB7ei1pbmRleDowfS56LTUwe3otaW5kZXg6NTB9Lm14LWF1dG97bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30uLW1lLTJ7bWFyZ2luLWlubGluZS1lbmQ6LS41cmVtfS4tbWwtcHh7bWFyZ2luLWxlZnQ6LTFweH0ubWItMXttYXJnaW4tYm90dG9tOi4yNXJlbX0ubWItMTJ7bWFyZ2luLWJvdHRvbTozcmVtfS5tYi0xNnttYXJnaW4tYm90dG9tOjRyZW19Lm1iLTJ7bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItM3ttYXJnaW4tYm90dG9tOi43NXJlbX0ubWItNHttYXJnaW4tYm90dG9tOjFyZW19Lm1iLTZ7bWFyZ2luLWJvdHRvbToxLjVyZW19Lm1iLTh7bWFyZ2luLWJvdHRvbToycmVtfS5tbC0ye21hcmdpbi1sZWZ0Oi41cmVtfS5tbC0ze21hcmdpbi1sZWZ0Oi43NXJlbX0ubWwtNHttYXJnaW4tbGVmdDoxcmVtfS5tci0ye21hcmdpbi1yaWdodDouNXJlbX0ubXItM3ttYXJnaW4tcmlnaHQ6Ljc1cmVtfS5tcy0xe21hcmdpbi1pbmxpbmUtc3RhcnQ6LjI1cmVtfS5tcy0ze21hcmdpbi1pbmxpbmUtc3RhcnQ6Ljc1cmVtfS5tdC0wXC41e21hcmdpbi10b3A6LjEyNXJlbX0ubXQtMXttYXJnaW4tdG9wOi4yNXJlbX0ubXQtMnttYXJnaW4tdG9wOi41cmVtfS5tdC0ze21hcmdpbi10b3A6Ljc1cmVtfS5tdC00e21hcmdpbi10b3A6MXJlbX0ubXQtNnttYXJnaW4tdG9wOjEuNXJlbX0ubXQtOHttYXJnaW4tdG9wOjJyZW19LmJsb2Nre2Rpc3BsYXk6YmxvY2t9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uaW5saW5le2Rpc3BsYXk6aW5saW5lfS5mbGV4e2Rpc3BsYXk6ZmxleH0uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0udGFibGV7ZGlzcGxheTp0YWJsZX0uZ3JpZHtkaXNwbGF5OmdyaWR9LmNvbnRlbnRze2Rpc3BsYXk6Y29udGVudHN9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmgtMTB7aGVpZ2h0OjIuNXJlbX0uaC0xMntoZWlnaHQ6M3JlbX0uaC0xNntoZWlnaHQ6NHJlbX0uaC0ye2hlaWdodDouNXJlbX0uaC0yMHtoZWlnaHQ6NXJlbX0uaC0ze2hlaWdodDouNzVyZW19LmgtNHtoZWlnaHQ6MXJlbX0uaC01e2hlaWdodDoxLjI1cmVtfS5oLTZ7aGVpZ2h0OjEuNXJlbX0uaC04e2hlaWdodDoycmVtfS5oLWZ1bGx7aGVpZ2h0OjEwMCV9Lm1pbi1oLXNjcmVlbnttaW4taGVpZ2h0OjEwMHZofS53LTEwe3dpZHRoOjIuNXJlbX0udy0xMnt3aWR0aDozcmVtfS53LTE2e3dpZHRoOjRyZW19LnctMnt3aWR0aDouNXJlbX0udy0yMHt3aWR0aDo1cmVtfS53LTN7d2lkdGg6Ljc1cmVtfS53LTNcLzR7d2lkdGg6NzUlfS53LTR7d2lkdGg6MXJlbX0udy00OHt3aWR0aDoxMnJlbX0udy01e3dpZHRoOjEuMjVyZW19LnctNnt3aWR0aDoxLjVyZW19LnctNjR7d2lkdGg6MTZyZW19LnctOHt3aWR0aDoycmVtfS53LTk2e3dpZHRoOjI0cmVtfS53LWZ1bGx7d2lkdGg6MTAwJX0ubWluLXctZnVsbHttaW4td2lkdGg6MTAwJX0ubWF4LXctMnhse21heC13aWR0aDo0MnJlbX0ubWF4LXctM3hse21heC13aWR0aDo0OHJlbX0ubWF4LXctNHhse21heC13aWR0aDo1NnJlbX0ubWF4LXctN3hse21heC13aWR0aDo4MHJlbX0ubWF4LXctbWR7bWF4LXdpZHRoOjI4cmVtfS5tYXgtdy14bHttYXgtd2lkdGg6MzZyZW19Lm1heC13LXhze21heC13aWR0aDoyMHJlbX0uZmxleC0xe2ZsZXg6MSAxIDAlfS5mbGV4LXNocmluay0wLC5zaHJpbmstMHtmbGV4LXNocmluazowfS5vcmlnaW4tdG9we3RyYW5zZm9ybS1vcmlnaW46dG9wfS50cmFuc2xhdGUteS0wey0tdHctdHJhbnNsYXRlLXk6IDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0udHJhbnNsYXRlLXktNHstLXR3LXRyYW5zbGF0ZS15OiAxcmVtO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5zY2FsZS0xMDB7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0uc2NhbGUtOTV7LS10dy1zY2FsZS14OiAuOTU7LS10dy1zY2FsZS15OiAuOTU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LnRyYW5zZm9ybXt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX1Aa2V5ZnJhbWVzIHB1bHNlezUwJXtvcGFjaXR5Oi41fX0uYW5pbWF0ZS1wdWxzZXthbmltYXRpb246cHVsc2UgMnMgY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkgaW5maW5pdGV9QGtleWZyYW1lcyBzcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19LmFuaW1hdGUtc3BpbnthbmltYXRpb246c3BpbiAxcyBsaW5lYXIgaW5maW5pdGV9LmN1cnNvci1kZWZhdWx0e2N1cnNvcjpkZWZhdWx0fS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0ubGlzdC1pbnNpZGV7bGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGV9Lmxpc3QtZGlzY3tsaXN0LXN0eWxlLXR5cGU6ZGlzY30uZ3JpZC1jb2xzLTF7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxLG1pbm1heCgwLDFmcikpfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmZsZXgtd3JhcHtmbGV4LXdyYXA6d3JhcH0uaXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktaXRlbXMtY2VudGVye2p1c3RpZnktaXRlbXM6Y2VudGVyfS5nYXAtM3tnYXA6Ljc1cmVtfS5nYXAtNHtnYXA6MXJlbX0uZ2FwLTZ7Z2FwOjEuNXJlbX0uZ2FwLTh7Z2FwOjJyZW19LnNwYWNlLXgtMj46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDttYXJnaW4tcmlnaHQ6Y2FsYyguNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO21hcmdpbi1sZWZ0OmNhbGMoLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSl9LnNwYWNlLXgtMz46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDttYXJnaW4tcmlnaHQ6Y2FsYyguNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTttYXJnaW4tbGVmdDpjYWxjKC43NXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKX0uc3BhY2UteC00Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctc3BhY2UteC1yZXZlcnNlOiAwO21hcmdpbi1yaWdodDpjYWxjKDFyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTttYXJnaW4tbGVmdDpjYWxjKDFyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSl9LnNwYWNlLXgtOD46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDttYXJnaW4tcmlnaHQ6Y2FsYygycmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7bWFyZ2luLWxlZnQ6Y2FsYygycmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpfS5zcGFjZS15LTE+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1zcGFjZS15LXJldmVyc2U6IDA7bWFyZ2luLXRvcDpjYWxjKC4yNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoLjI1cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktMj46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC41cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktMz46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoLjc1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYyguNzVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX0uc3BhY2UteS00Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctc3BhY2UteS1yZXZlcnNlOiAwO21hcmdpbi10b3A6Y2FsYygxcmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygxcmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktNj46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoMS41cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygxLjVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX0uc3BhY2UteS04Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctc3BhY2UteS1yZXZlcnNlOiAwO21hcmdpbi10b3A6Y2FsYygycmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygycmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LmRpdmlkZS15Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctZGl2aWRlLXktcmV2ZXJzZTogMDtib3JkZXItdG9wLXdpZHRoOmNhbGMoMXB4ICogY2FsYygxIC0gdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpKTtib3JkZXItYm90dG9tLXdpZHRoOmNhbGMoMXB4ICogdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpfS5kaXZpZGUtZ3JheS0yMDA+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1kaXZpZGUtb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDIyOSAyMzEgMjM1IC8gdmFyKC0tdHctZGl2aWRlLW9wYWNpdHksIDEpKX0uZGl2aWRlLWdyYXktNzAwPjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctZGl2aWRlLW9wYWNpdHk6IDE7Ym9yZGVyLWNvbG9yOnJnYig1NSA2NSA4MSAvIHZhcigtLXR3LWRpdmlkZS1vcGFjaXR5LCAxKSl9Lm92ZXJmbG93LWhpZGRlbntvdmVyZmxvdzpoaWRkZW59Lm92ZXJmbG93LXgtYXV0b3tvdmVyZmxvdy14OmF1dG99Lm92ZXJmbG93LXktYXV0b3tvdmVyZmxvdy15OmF1dG99Lm92ZXJmbG93LXktaGlkZGVue292ZXJmbG93LXk6aGlkZGVufS50cnVuY2F0ZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2Utbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcH0uYnJlYWstYWxse3dvcmQtYnJlYWs6YnJlYWstYWxsfS5yb3VuZGVke2JvcmRlci1yYWRpdXM6LjI1cmVtfS5yb3VuZGVkLTJ4bHtib3JkZXItcmFkaXVzOjFyZW19LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjk5OTlweH0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOi41cmVtfS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6LjM3NXJlbX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOi43NXJlbX0ucm91bmRlZC1sLW1ke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjM3NXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4zNzVyZW19LnJvdW5kZWQtci1tZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMzc1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4zNzVyZW19LmJvcmRlcntib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItYntib3JkZXItYm90dG9tLXdpZHRoOjFweH0uYm9yZGVyLWItMntib3JkZXItYm90dG9tLXdpZHRoOjJweH0uYm9yZGVyLWwtNHtib3JkZXItbGVmdC13aWR0aDo0cHh9LmJvcmRlci10e2JvcmRlci10b3Atd2lkdGg6MXB4fS5ib3JkZXItYmx1ZS00MDB7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDk2IDE2NSAyNTAgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5ib3JkZXItYmx1ZS01MDB7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDU5IDEzMCAyNDYgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5ib3JkZXItYmx1ZS01MDBcLzIwe2JvcmRlci1jb2xvcjojM2I4MmY2MzN9LmJvcmRlci1ncmF5LTMwMHstLXR3LWJvcmRlci1vcGFjaXR5OiAxO2JvcmRlci1jb2xvcjpyZ2IoMjA5IDIxMyAyMTkgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5ib3JkZXItZ3JheS02MDB7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDc1IDg1IDk5IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uYm9yZGVyLWdyZWVuLTQwMHstLXR3LWJvcmRlci1vcGFjaXR5OiAxO2JvcmRlci1jb2xvcjpyZ2IoNzQgMjIyIDEyOCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSl9LmJvcmRlci1ncmVlbi01MDBcLzIwe2JvcmRlci1jb2xvcjojMjJjNTVlMzN9LmJvcmRlci1wdXJwbGUtNTAwey0tdHctYm9yZGVyLW9wYWNpdHk6IDE7Ym9yZGVyLWNvbG9yOnJnYigxNjggODUgMjQ3IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uYm9yZGVyLXJlZC00MDB7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDI0OCAxMTMgMTEzIC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uYm9yZGVyLXJlZC01MDBcLzIwe2JvcmRlci1jb2xvcjojZWY0NDQ0MzN9LmJvcmRlci1zbGF0ZS02MDB7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDcxIDg1IDEwNSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSl9LmJvcmRlci1zbGF0ZS03MDB7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDUxIDY1IDg1IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uYm9yZGVyLXRyYW5zcGFyZW50e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uYm9yZGVyLXdoaXRlXC8xMHtib3JkZXItY29sb3I6I2ZmZmZmZjFhfS5ib3JkZXItd2hpdGVcLzIwe2JvcmRlci1jb2xvcjojZmZmM30uYm9yZGVyLXdoaXRlXC8zMHtib3JkZXItY29sb3I6I2ZmZmZmZjRkfS5ib3JkZXIteWVsbG93LTUwMFwvMjB7Ym9yZGVyLWNvbG9yOiNlYWIzMDgzM30uYm9yZGVyLXllbGxvdy01MDBcLzMwe2JvcmRlci1jb2xvcjojZWFiMzA4NGR9LmJnLWJsYWNrXC83NXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDBiZn0uYmctYmx1ZS0xMDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDIxOSAyMzQgMjU0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1ibHVlLTUwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoNTkgMTMwIDI0NiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctYmx1ZS01MDBcLzEwe2JhY2tncm91bmQtY29sb3I6IzNiODJmNjFhfS5iZy1ibHVlLTYwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1ncmF5LTEwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjQzIDI0NCAyNDYgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyYXktNDAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxNTYgMTYzIDE3NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctZ3JheS01MDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDEwNyAxMTQgMTI4IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1ncmF5LTYwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoNzUgODUgOTkgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyYXktNzAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NSA2NSA4MSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctZ3JheS04MDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDMxIDQxIDU1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1ncmF5LTkwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTcgMjQgMzkgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyZWVuLTEwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjIwIDI1MiAyMzEgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyZWVuLTQwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoNzQgMjIyIDEyOCAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctZ3JlZW4tNTAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigzNCAxOTcgOTQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyZWVuLTUwMFwvMTB7YmFja2dyb3VuZC1jb2xvcjojMjJjNTVlMWF9LmJnLWdyZWVuLTYwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjIgMTYzIDc0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1ncmVlbi04MDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDIyIDEwMSA1MiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctaW5kaWdvLTYwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoNzkgNzAgMjI5IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1waW5rLTYwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjE5IDM5IDExOSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctcHVycGxlLTYwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTQ3IDUxIDIzNCAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctcmVkLTEwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU0IDIyNiAyMjYgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXJlZC00MDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OCAxMTMgMTEzIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1yZWQtNTAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMzkgNjggNjggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXJlZC01MDBcLzEwe2JhY2tncm91bmQtY29sb3I6I2VmNDQ0NDFhfS5iZy1yZWQtNjAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjAgMzggMzggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXJlZC04MDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDE1MyAyNyAyNyAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctc2xhdGUtNzAwXC81MHtiYWNrZ3JvdW5kLWNvbG9yOiMzMzQxNTU4MH0uYmctc2xhdGUtODAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigzMCA0MSA1OSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmctc2xhdGUtODAwXC81MHtiYWNrZ3JvdW5kLWNvbG9yOiMxZTI5M2I4MH0uYmctdHJhbnNwYXJlbnR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYmctd2hpdGV7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy13aGl0ZVwvMTB7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWF9LmJnLXdoaXRlXC8yMHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYzfS5iZy13aGl0ZVwvNXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwZH0uYmcteWVsbG93LTEwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU0IDI0OSAxOTUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXllbGxvdy00MDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI1MCAyMDQgMjEgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXllbGxvdy01MDB7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDIzNCAxNzkgOCAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYmcteWVsbG93LTUwMFwvMTB7YmFja2dyb3VuZC1jb2xvcjojZWFiMzA4MWF9LmJnLXllbGxvdy01MDBcLzIwe2JhY2tncm91bmQtY29sb3I6I2VhYjMwODMzfS5iZy15ZWxsb3ctNjAwey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMDIgMTM4IDQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyYWRpZW50LXRvLWJye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSByaWdodCx2YXIoLS10dy1ncmFkaWVudC1zdG9wcykpfS5iZy1ncmFkaWVudC10by1ye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSl9LmZyb20tYmx1ZS00MDB7LS10dy1ncmFkaWVudC1mcm9tOiAjNjBhNWZhIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IHJnYig5NiAxNjUgMjUwIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tYmx1ZS01MDB7LS10dy1ncmFkaWVudC1mcm9tOiAjM2I4MmY2IHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IHJnYig1OSAxMzAgMjQ2IC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tYmx1ZS01MDBcLzEwey0tdHctZ3JhZGllbnQtZnJvbTogcmdiKDU5IDEzMCAyNDYgLyAuMSkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogcmdiKDU5IDEzMCAyNDYgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0uZnJvbS1ibHVlLTYwMHstLXR3LWdyYWRpZW50LWZyb206ICMyNTYzZWIgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogcmdiKDM3IDk5IDIzNSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLWdyZWVuLTYwMHstLXR3LWdyYWRpZW50LWZyb206ICMxNmEzNGEgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogcmdiKDIyIDE2MyA3NCAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLW9yYW5nZS02MDB7LS10dy1ncmFkaWVudC1mcm9tOiAjZWE1ODBjIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IHJnYigyMzQgODggMTIgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0uZnJvbS1yZWQtNjAwey0tdHctZ3JhZGllbnQtZnJvbTogI2RjMjYyNiB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiByZ2IoMjIwIDM4IDM4IC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tc2xhdGUtOTAwey0tdHctZ3JhZGllbnQtZnJvbTogIzBmMTcyYSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiByZ2IoMTUgMjMgNDIgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0udmlhLXB1cnBsZS00MDB7LS10dy1ncmFkaWVudC10bzogcmdiKDE5MiAxMzIgMjUyIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCAjYzA4NGZjIHZhcigtLXR3LWdyYWRpZW50LXZpYS1wb3NpdGlvbiksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0udmlhLXB1cnBsZS05MDB7LS10dy1ncmFkaWVudC10bzogcmdiKDg4IDI4IDEzNSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgIzU4MWM4NyB2YXIoLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LnRvLWJsdWUtNjAwey0tdHctZ3JhZGllbnQtdG86ICMyNTYzZWIgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pfS50by1lbWVyYWxkLTYwMHstLXR3LWdyYWRpZW50LXRvOiAjMDU5NjY5IHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0udG8tcGluay00MDB7LS10dy1ncmFkaWVudC10bzogI2Y0NzJiNiB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLXBpbmstNjAwey0tdHctZ3JhZGllbnQtdG86ICNkYjI3NzcgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pfS50by1wdXJwbGUtNDAwey0tdHctZ3JhZGllbnQtdG86ICNjMDg0ZmMgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pfS50by1wdXJwbGUtNTAwXC8xMHstLXR3LWdyYWRpZW50LXRvOiByZ2IoMTY4IDg1IDI0NyAvIC4xKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLXB1cnBsZS02MDB7LS10dy1ncmFkaWVudC10bzogIzkzMzNlYSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLXJlZC02MDB7LS10dy1ncmFkaWVudC10bzogI2RjMjYyNiB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLXNsYXRlLTkwMHstLXR3LWdyYWRpZW50LXRvOiAjMGYxNzJhIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0uYmctY2xpcC10ZXh0ey13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7YmFja2dyb3VuZC1jbGlwOnRleHR9LmZpbGwtY3VycmVudHtmaWxsOmN1cnJlbnRDb2xvcn0ucC0ye3BhZGRpbmc6LjVyZW19LnAtM3twYWRkaW5nOi43NXJlbX0ucC00e3BhZGRpbmc6MXJlbX0ucC01e3BhZGRpbmc6MS4yNXJlbX0ucC02e3BhZGRpbmc6MS41cmVtfS5wLTh7cGFkZGluZzoycmVtfS5weC0xe3BhZGRpbmctbGVmdDouMjVyZW07cGFkZGluZy1yaWdodDouMjVyZW19LnB4LTJ7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnB4LTN7cGFkZGluZy1sZWZ0Oi43NXJlbTtwYWRkaW5nLXJpZ2h0Oi43NXJlbX0ucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB4LTZ7cGFkZGluZy1sZWZ0OjEuNXJlbTtwYWRkaW5nLXJpZ2h0OjEuNXJlbX0ucHgtOHtwYWRkaW5nLWxlZnQ6MnJlbTtwYWRkaW5nLXJpZ2h0OjJyZW19LnB5LTF7cGFkZGluZy10b3A6LjI1cmVtO3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucHktMTJ7cGFkZGluZy10b3A6M3JlbTtwYWRkaW5nLWJvdHRvbTozcmVtfS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5weS0yMHtwYWRkaW5nLXRvcDo1cmVtO3BhZGRpbmctYm90dG9tOjVyZW19LnB5LTN7cGFkZGluZy10b3A6Ljc1cmVtO3BhZGRpbmctYm90dG9tOi43NXJlbX0ucHktNHtwYWRkaW5nLXRvcDoxcmVtO3BhZGRpbmctYm90dG9tOjFyZW19LnB5LTZ7cGFkZGluZy10b3A6MS41cmVtO3BhZGRpbmctYm90dG9tOjEuNXJlbX0ucHktOHtwYWRkaW5nLXRvcDoycmVtO3BhZGRpbmctYm90dG9tOjJyZW19LnBiLTF7cGFkZGluZy1ib3R0b206LjI1cmVtfS5wYi0ze3BhZGRpbmctYm90dG9tOi43NXJlbX0ucGUtNHtwYWRkaW5nLWlubGluZS1lbmQ6MXJlbX0ucGwtMTB7cGFkZGluZy1sZWZ0OjIuNXJlbX0ucGwtM3twYWRkaW5nLWxlZnQ6Ljc1cmVtfS5wci0ze3BhZGRpbmctcmlnaHQ6Ljc1cmVtfS5wcy0ze3BhZGRpbmctaW5saW5lLXN0YXJ0Oi43NXJlbX0ucHQtMXtwYWRkaW5nLXRvcDouMjVyZW19LnB0LTJ7cGFkZGluZy10b3A6LjVyZW19LnB0LTR7cGFkZGluZy10b3A6MXJlbX0ucHQtNntwYWRkaW5nLXRvcDoxLjVyZW19LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnRleHQtc3RhcnR7dGV4dC1hbGlnbjpzdGFydH0uZm9udC1tb25ve2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZX0uZm9udC1zYW5ze2ZvbnQtZmFtaWx5OkZpZ3RyZWUsdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsU2Vnb2UgVUkgU3ltYm9sLCJOb3RvIENvbG9yIEVtb2ppIn0udGV4dC0yeGx7Zm9udC1zaXplOjEuNXJlbTtsaW5lLWhlaWdodDoycmVtfS50ZXh0LTN4bHtmb250LXNpemU6MS44NzVyZW07bGluZS1oZWlnaHQ6Mi4yNXJlbX0udGV4dC00eGx7Zm9udC1zaXplOjIuMjVyZW07bGluZS1oZWlnaHQ6Mi41cmVtfS50ZXh0LTV4bHtmb250LXNpemU6M3JlbTtsaW5lLWhlaWdodDoxfS50ZXh0LWJhc2V7Zm9udC1zaXplOjFyZW07bGluZS1oZWlnaHQ6MS41cmVtfS50ZXh0LWxne2ZvbnQtc2l6ZToxLjEyNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtfS50ZXh0LXNte2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LnRleHQteGx7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS43NXJlbX0udGV4dC14c3tmb250LXNpemU6Ljc1cmVtO2xpbmUtaGVpZ2h0OjFyZW19LmZvbnQtYm9sZHtmb250LXdlaWdodDo3MDB9LmZvbnQtbWVkaXVte2ZvbnQtd2VpZ2h0OjUwMH0uZm9udC1zZW1pYm9sZHtmb250LXdlaWdodDo2MDB9LnVwcGVyY2FzZXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmxlYWRpbmctNHtsaW5lLWhlaWdodDoxcmVtfS5sZWFkaW5nLTV7bGluZS1oZWlnaHQ6MS4yNXJlbX0ubGVhZGluZy10aWdodHtsaW5lLWhlaWdodDoxLjI1fS50cmFja2luZy13aWRlcntsZXR0ZXItc3BhY2luZzouMDVlbX0udHJhY2tpbmctd2lkZXN0e2xldHRlci1zcGFjaW5nOi4xZW19LnRleHQtYmx1ZS0zMDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE0NyAxOTcgMjUzIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtYmx1ZS00MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDk2IDE2NSAyNTAgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1ibHVlLTYwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS0yMDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDIyOSAyMzEgMjM1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS0zMDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDIwOSAyMTMgMjE5IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS00MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS01MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDEwNyAxMTQgMTI4IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS02MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDc1IDg1IDk5IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS03MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDU1IDY1IDgxIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS04MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDMxIDQxIDU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JheS05MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE3IDI0IDM5IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JlZW4tMTAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyMjAgMjUyIDIzMSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWdyZWVuLTMwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMTM0IDIzOSAxNzIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1ncmVlbi00MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDc0IDIyMiAxMjggLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1ncmVlbi02MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDIyIDE2MyA3NCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWdyZWVuLTgwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjIgMTAxIDUyIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtaW5kaWdvLTQwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMTI5IDE0MCAyNDggLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1pbmRpZ28tNjAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYig3OSA3MCAyMjkgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1waW5rLTQwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjQ0IDExNCAxODIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1wdXJwbGUtMzAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyMTYgMTgwIDI1NCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXB1cnBsZS00MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE5MiAxMzIgMjUyIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtcmVkLTEwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjU0IDIyNiAyMjYgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1yZWQtMjAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyNTQgMjAyIDIwMiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXJlZC0zMDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI1MiAxNjUgMTY1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtcmVkLTQwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjQ4IDExMyAxMTMgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1yZWQtNTAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyMzkgNjggNjggLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1yZWQtNjAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyMjAgMzggMzggLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1yZWQtNzAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxODUgMjggMjggLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1yZWQtODAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxNTMgMjcgMjcgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC10cmFuc3BhcmVudHtjb2xvcjp0cmFuc3BhcmVudH0udGV4dC13aGl0ZXstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC15ZWxsb3ctMTAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyNTQgMjQ5IDE5NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXllbGxvdy0yMDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI1NCAyNDAgMTM4IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQteWVsbG93LTMwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjUzIDIyNCA3MSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXllbGxvdy00MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI1MCAyMDQgMjEgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC15ZWxsb3ctODAwey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxMzMgNzcgMTQgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udW5kZXJsaW5le3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX0uYW50aWFsaWFzZWR7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9LnBsYWNlaG9sZGVyLWdyYXktNDAwOjotbW96LXBsYWNlaG9sZGVyey0tdHctcGxhY2Vob2xkZXItb3BhY2l0eTogMTtjb2xvcjpyZ2IoMTU2IDE2MyAxNzUgLyB2YXIoLS10dy1wbGFjZWhvbGRlci1vcGFjaXR5LCAxKSl9LnBsYWNlaG9sZGVyLWdyYXktNDAwOjpwbGFjZWhvbGRlcnstLXR3LXBsYWNlaG9sZGVyLW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctcGxhY2Vob2xkZXItb3BhY2l0eSwgMSkpfS5vcGFjaXR5LTB7b3BhY2l0eTowfS5vcGFjaXR5LTEwMHtvcGFjaXR5OjF9Lm9wYWNpdHktNzV7b3BhY2l0eTouNzV9LnNoYWRvd3stLXR3LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAuMSk7LS10dy1zaGFkb3ctY29sb3JlZDogMCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctMnhsey0tdHctc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAuMjUpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMjVweCA1MHB4IC0xMnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LWxney0tdHctc2hhZG93OiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIC4xKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctbWR7LS10dy1zaGFkb3c6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgNHB4IDZweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgMnB4IDRweCAtMnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LXNtey0tdHctc2hhZG93OiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAuMDUpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMXB4IDJweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LXhsey0tdHctc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIC4xKSwgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIC4xKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDIwcHggMjVweCAtNXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgOHB4IDEwcHggLTZweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LnJpbmctMXstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDFweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3csIDAgMCAjMDAwMCl9LnJpbmctYmxhY2t7LS10dy1yaW5nLW9wYWNpdHk6IDE7LS10dy1yaW5nLWNvbG9yOiByZ2IoMCAwIDAgLyB2YXIoLS10dy1yaW5nLW9wYWNpdHksIDEpKX0ucmluZy1ncmF5LTMwMHstLXR3LXJpbmctb3BhY2l0eTogMTstLXR3LXJpbmctY29sb3I6IHJnYigyMDkgMjEzIDIxOSAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpfS5yaW5nLW9wYWNpdHktNXstLXR3LXJpbmctb3BhY2l0eTogLjA1fS5maWx0ZXJ7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmJhY2tkcm9wLWJsdXItbGd7LS10dy1iYWNrZHJvcC1ibHVyOiBibHVyKDE2cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0KSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpfS5iYWNrZHJvcC1ibHVyLXNtey0tdHctYmFja2Ryb3AtYmx1cjogYmx1cig0cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0KSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLGJhY2tkcm9wLWZpbHRlcjt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlcixiYWNrZHJvcC1maWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLWFsbHt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30uZHVyYXRpb24tMTUwe3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30uZHVyYXRpb24tMjAwe3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5kdXJhdGlvbi0zMDB7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmR1cmF0aW9uLTc1e3RyYW5zaXRpb24tZHVyYXRpb246NzVtc30uZWFzZS1pbnt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwxLDEpfS5lYXNlLWluLW91dHt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0uZWFzZS1vdXR7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsMCwuMiwxKX0uaG92ZXJcOnNjYWxlLTEwNTpob3ZlcnstLXR3LXNjYWxlLXg6IDEuMDU7LS10dy1zY2FsZS15OiAxLjA1O3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5ob3Zlclw6Ym9yZGVyLWdyYXktMzAwOmhvdmVyey0tdHctYm9yZGVyLW9wYWNpdHk6IDE7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSl9LmhvdmVyXDpib3JkZXItZ3JheS01MDA6aG92ZXJ7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDEwNyAxMTQgMTI4IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uaG92ZXJcOmJvcmRlci1zbGF0ZS01MDA6aG92ZXJ7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDEwMCAxMTYgMTM5IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uaG92ZXJcOmJvcmRlci13aGl0ZVwvMjA6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmYzfS5ob3Zlclw6YmctYmx1ZS03MDA6aG92ZXJ7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI5IDc4IDIxNiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcOmJnLWdyYXktNTA6aG92ZXJ7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OSAyNTAgMjUxIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5ob3Zlclw6YmctZ3JheS03MDA6aG92ZXJ7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDU1IDY1IDgxIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5ob3Zlclw6YmctZ3JlZW4tNzAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMSAxMjggNjEgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmhvdmVyXDpiZy1pbmRpZ28tNzAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig2NyA1NiAyMDIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmhvdmVyXDpiZy1yZWQtNTAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMzkgNjggNjggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmhvdmVyXDpiZy1yZWQtNzAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxODUgMjggMjggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmhvdmVyXDpiZy1zbGF0ZS02MDBcLzUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzQ3NTU2OTgwfS5ob3Zlclw6Ymctc2xhdGUtNzAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1MSA2NSA4NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcOmJnLXNsYXRlLTcwMFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMzM0MTU1ODB9LmhvdmVyXDpiZy15ZWxsb3ctNzAwOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxNjEgOTggNyAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcOmZyb20tYmx1ZS03MDA6aG92ZXJ7LS10dy1ncmFkaWVudC1mcm9tOiAjMWQ0ZWQ4IHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IHJnYigyOSA3OCAyMTYgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0uaG92ZXJcOmZyb20tZ3JlZW4tNzAwOmhvdmVyey0tdHctZ3JhZGllbnQtZnJvbTogIzE1ODAzZCB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiByZ2IoMjEgMTI4IDYxIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmhvdmVyXDpmcm9tLW9yYW5nZS03MDA6aG92ZXJ7LS10dy1ncmFkaWVudC1mcm9tOiAjYzI0MTBjIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IHJnYigxOTQgNjUgMTIgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0uaG92ZXJcOmZyb20tcmVkLTcwMDpob3ZlcnstLXR3LWdyYWRpZW50LWZyb206ICNiOTFjMWMgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogcmdiKDE4NSAyOCAyOCAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5ob3Zlclw6dG8tYmx1ZS03MDA6aG92ZXJ7LS10dy1ncmFkaWVudC10bzogIzFkNGVkOCB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LmhvdmVyXDp0by1lbWVyYWxkLTcwMDpob3ZlcnstLXR3LWdyYWRpZW50LXRvOiAjMDQ3ODU3IHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0uaG92ZXJcOnRvLXBpbmstNzAwOmhvdmVyey0tdHctZ3JhZGllbnQtdG86ICNiZTE4NWQgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pfS5ob3Zlclw6dG8tcHVycGxlLTcwMDpob3ZlcnstLXR3LWdyYWRpZW50LXRvOiAjN2UyMmNlIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0uaG92ZXJcOnRvLXJlZC03MDA6aG92ZXJ7LS10dy1ncmFkaWVudC10bzogI2I5MWMxYyB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LmhvdmVyXDp0ZXh0LWJsdWUtMzAwOmhvdmVyey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxNDcgMTk3IDI1MyAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5ob3Zlclw6dGV4dC1ncmF5LTIwMDpob3ZlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjI5IDIzMSAyMzUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uaG92ZXJcOnRleHQtZ3JheS00MDA6aG92ZXJ7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmhvdmVyXDp0ZXh0LWdyYXktNTAwOmhvdmVyey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxMDcgMTE0IDEyOCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5ob3Zlclw6dGV4dC1ncmF5LTkwMDpob3ZlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMTcgMjQgMzkgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uaG92ZXJcOnRleHQtaW5kaWdvLTMwMDpob3ZlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMTY1IDE4MCAyNTIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uaG92ZXJcOnRleHQtcmVkLTMwMDpob3ZlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjUyIDE2NSAxNjUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uaG92ZXJcOnRleHQtd2hpdGU6aG92ZXJ7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmhvdmVyXDp0ZXh0LXllbGxvdy0zMDA6aG92ZXJ7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI1MyAyMjQgNzEgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uaG92ZXJcOnVuZGVybGluZTpob3Zlcnt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LmZvY3VzXDp6LTEwOmZvY3Vze3otaW5kZXg6MTB9LmZvY3VzXDpib3JkZXItYmx1ZS0zMDA6Zm9jdXN7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDE0NyAxOTcgMjUzIC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKX0uZm9jdXNcOmJvcmRlci1ncmF5LTMwMDpmb2N1c3stLXR3LWJvcmRlci1vcGFjaXR5OiAxO2JvcmRlci1jb2xvcjpyZ2IoMjA5IDIxMyAyMTkgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5mb2N1c1w6Ym9yZGVyLWluZGlnby01MDA6Zm9jdXN7LS10dy1ib3JkZXItb3BhY2l0eTogMTtib3JkZXItY29sb3I6cmdiKDk5IDEwMiAyNDEgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5mb2N1c1w6Ym9yZGVyLXRyYW5zcGFyZW50OmZvY3Vze2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uZm9jdXNcOmJnLWdyYXktNzAwOmZvY3Vzey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NSA2NSA4MSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uZm9jdXNcOmJnLXNsYXRlLTYwMFwvNTA6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojNDc1NTY5ODB9LmZvY3VzXDpiZy1zbGF0ZS03MDA6Zm9jdXN7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDUxIDY1IDg1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5mb2N1c1w6Ymctc2xhdGUtNzAwXC81MDpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiMzMzQxNTU4MH0uZm9jdXNcOnRleHQtd2hpdGU6Zm9jdXN7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmZvY3VzXDpvdXRsaW5lLW5vbmU6Zm9jdXN7b3V0bGluZToycHggc29saWQgdHJhbnNwYXJlbnQ7b3V0bGluZS1vZmZzZXQ6MnB4fS5mb2N1c1w6cmluZzpmb2N1c3stLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3csIDAgMCAjMDAwMCl9LmZvY3VzXDpyaW5nLTI6Zm9jdXN7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7LS10dy1yaW5nLXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93LCAwIDAgIzAwMDApfS5mb2N1c1w6cmluZy1ibHVlLTUwMDpmb2N1c3stLXR3LXJpbmctb3BhY2l0eTogMTstLXR3LXJpbmctY29sb3I6IHJnYig1OSAxMzAgMjQ2IC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSl9LmZvY3VzXDpyaW5nLWluZGlnby01MDA6Zm9jdXN7LS10dy1yaW5nLW9wYWNpdHk6IDE7LS10dy1yaW5nLWNvbG9yOiByZ2IoOTkgMTAyIDI0MSAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpfS5mb2N1c1w6cmluZy1yZWQtNTAwOmZvY3Vzey0tdHctcmluZy1vcGFjaXR5OiAxOy0tdHctcmluZy1jb2xvcjogcmdiKDIzOSA2OCA2OCAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpfS5mb2N1c1w6cmluZy1vZmZzZXQtMjpmb2N1c3stLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAycHh9LmZvY3VzXDpyaW5nLW9mZnNldC1ncmF5LTgwMDpmb2N1c3stLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiAjMWYyOTM3fS5hY3RpdmVcOmJnLWdyYXktMTAwOmFjdGl2ZXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjQzIDI0NCAyNDYgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmFjdGl2ZVw6YmctZ3JheS05MDA6YWN0aXZley0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxNyAyNCAzOSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uYWN0aXZlXDpiZy1yZWQtNzAwOmFjdGl2ZXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTg1IDI4IDI4IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5hY3RpdmVcOnRleHQtZ3JheS01MDA6YWN0aXZley0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxMDcgMTE0IDEyOCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5hY3RpdmVcOnRleHQtZ3JheS03MDA6YWN0aXZley0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYig1NSA2NSA4MSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOm9wYWNpdHktMjU6ZGlzYWJsZWR7b3BhY2l0eTouMjV9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9QG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KXsuc21cOi1teS1weHttYXJnaW4tdG9wOi0xcHg7bWFyZ2luLWJvdHRvbTotMXB4fS5zbVw6bXgtYXV0b3ttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS5zbVw6bXMtMTB7bWFyZ2luLWlubGluZS1zdGFydDoyLjVyZW19LnNtXDptcy02e21hcmdpbi1pbmxpbmUtc3RhcnQ6MS41cmVtfS5zbVw6ZmxleHtkaXNwbGF5OmZsZXh9LnNtXDpoaWRkZW57ZGlzcGxheTpub25lfS5zbVw6dy1mdWxse3dpZHRoOjEwMCV9LnNtXDptYXgtdy0yeGx7bWF4LXdpZHRoOjQycmVtfS5zbVw6bWF4LXctbGd7bWF4LXdpZHRoOjMycmVtfS5zbVw6bWF4LXctbWR7bWF4LXdpZHRoOjI4cmVtfS5zbVw6bWF4LXctc217bWF4LXdpZHRoOjI0cmVtfS5zbVw6bWF4LXcteGx7bWF4LXdpZHRoOjM2cmVtfS5zbVw6ZmxleC0xe2ZsZXg6MSAxIDAlfS5zbVw6dHJhbnNsYXRlLXktMHstLXR3LXRyYW5zbGF0ZS15OiAwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LnNtXDpzY2FsZS0xMDB7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0uc21cOnNjYWxlLTk1ey0tdHctc2NhbGUteDogLjk1Oy0tdHctc2NhbGUteTogLjk1O3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5zbVw6Z3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5zbVw6ZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5zbVw6aXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uc21cOmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnNtXDpqdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnNtXDpyb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6LjVyZW19LnNtXDpwLTh7cGFkZGluZzoycmVtfS5zbVw6cHgtMHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9LnNtXDpweC02e3BhZGRpbmctbGVmdDoxLjVyZW07cGFkZGluZy1yaWdodDoxLjVyZW19LnNtXDpwdC0we3BhZGRpbmctdG9wOjB9fUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCl7Lm1kXDpncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9Lm1kXDpncmlkLWNvbHMtM3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsbWlubWF4KDAsMWZyKSl9Lm1kXDpncmlkLWNvbHMtNHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDQsbWlubWF4KDAsMWZyKSl9Lm1kXDp0ZXh0LTJ4bHtmb250LXNpemU6MS41cmVtO2xpbmUtaGVpZ2h0OjJyZW19Lm1kXDp0ZXh0LTZ4bHtmb250LXNpemU6My43NXJlbTtsaW5lLWhlaWdodDoxfS5tZFw6dGV4dC03eGx7Zm9udC1zaXplOjQuNXJlbTtsaW5lLWhlaWdodDoxfS5tZFw6dGV4dC14bHtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtfX1AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KXsubGdcOmdyaWQtY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0ubGdcOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0ubGdcOnB4LTh7cGFkZGluZy1sZWZ0OjJyZW07cGFkZGluZy1yaWdodDoycmVtfX0ubHRyXDpvcmlnaW4tdG9wLWxlZnQ6d2hlcmUoW2Rpcj1sdHJdLFtkaXI9bHRyXSAqKXt0cmFuc2Zvcm0tb3JpZ2luOnRvcCBsZWZ0fS5sdHJcOm9yaWdpbi10b3AtcmlnaHQ6d2hlcmUoW2Rpcj1sdHJdLFtkaXI9bHRyXSAqKXt0cmFuc2Zvcm0tb3JpZ2luOnRvcCByaWdodH0ucnRsXDpvcmlnaW4tdG9wLWxlZnQ6d2hlcmUoW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXt0cmFuc2Zvcm0tb3JpZ2luOnRvcCBsZWZ0fS5ydGxcOm9yaWdpbi10b3AtcmlnaHQ6d2hlcmUoW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKXt0cmFuc2Zvcm0tb3JpZ2luOnRvcCByaWdodH0ucnRsXDpmbGV4LXJvdy1yZXZlcnNlOndoZXJlKFtkaXI9cnRsXSxbZGlyPXJ0bF0gKil7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayl7LmRhcmtcOmJvcmRlci1ncmF5LTYwMHstLXR3LWJvcmRlci1vcGFjaXR5OiAxO2JvcmRlci1jb2xvcjpyZ2IoNzUgODUgOTkgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5kYXJrXDpiZy1ncmF5LTgwMHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMzEgNDEgNTUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmRhcmtcOnRleHQtZ3JheS0zMDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDIwOSAyMTMgMjE5IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmRhcmtcOnRleHQtZ3JheS00MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmRhcmtcOnRleHQtZ3JheS02MDB7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDc1IDg1IDk5IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmRhcmtcOmhvdmVyXDp0ZXh0LWdyYXktMzAwOmhvdmVyey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyMDkgMjEzIDIxOSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5kYXJrXDpmb2N1c1w6Ym9yZGVyLWJsdWUtNzAwOmZvY3Vzey0tdHctYm9yZGVyLW9wYWNpdHk6IDE7Ym9yZGVyLWNvbG9yOnJnYigyOSA3OCAyMTYgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5kYXJrXDpmb2N1c1w6Ym9yZGVyLWJsdWUtODAwOmZvY3Vzey0tdHctYm9yZGVyLW9wYWNpdHk6IDE7Ym9yZGVyLWNvbG9yOnJnYigzMCA2NCAxNzUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpfS5kYXJrXDphY3RpdmVcOmJnLWdyYXktNzAwOmFjdGl2ZXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoNTUgNjUgODEgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmRhcmtcOmFjdGl2ZVw6dGV4dC1ncmF5LTMwMDphY3RpdmV7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDIwOSAyMTMgMjE5IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9fQo="}},"time_used":1063,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":392,"receive":671,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cryptotradingaibot.com/build/assets/app-D6cTXETb.js","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://cryptotradingaibot.com/","date":"2026-07-27T05:13:01.322Z","timestamp":1785129181322,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cryptotradingaibot.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 11 Jun 2026 03:39:31 GMT","end":"Wed, 09 Sep 2026 03:39:30 GMT"},"fingerprint":{"sha1":"84:6B:D3:A9:DD:43:2F:AA:89:E5:90:F6:E8:F0:FA:01:97:A8:A6:5E","sha256":"FD:48:88:77:05:50:E5:1F:58:01:E8:02:34:9A:F7:4B:21:FC:F2:09:35:6F:39:08:39:9B:F6:A0:2C:0D:E6:F6"}}},"request":{"raw":"GET /build/assets/app-D6cTXETb.js HTTP/1.1\r\nHost: cryptotradingaibot.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cryptotradingaibot.com/\r\nCookie: XSRF-TOKEN=eyJpdiI6IlFBYUExOTJra1NMU1JMRGxwcUVXYkE9PSIsInZhbHVlIjoiQ2pjT0Z1cFRNK21WQldnRXVqZ21nMmZyN2F0d3hFZEY1em1Xa2NEOXdUdm9aTFZQZW15YmE4NlJxeDlVeVc3REhjZ3dtM2JwNlQ5dWNHcEFOZFN0YU9oNUMybk9sMUJCRHAwcUlHSSsydUM0bFJzdnE1eDZvVmZPS0UzalMxODYiLCJtYWMiOiJjNmQ4MmZkNjA3ZWI1MjAxYmNhZjVkMDk4MWNiMjUwMWE0NTM1N2U1N2VkZTJiMDllMTM0Mjg5NTRlMjFmZmM4IiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6Im0rcEF2akxnL3ZCL1NUWFhIZlZsZlE9PSIsInZhbHVlIjoiVE5YUzdyNWhkemRtK2tER3A0R0t1ZXc4UGZ4ZmtSUy9GOU1Sb25XUFhnRm5GblRqdXFVeFFxNFFTdUYzYm82VXI5TkpLT2U1b3NkZ2U1UDBvc1hyaW52ZWtpSk9xQ29JSXJ0RzhRUzFkbjlQQjJCdzNhb0ZRWHFBZ3AybTVucWEiLCJtYWMiOiI5ODJlZmY4OGZhM2ExOWUwZWM4YWFmNTc2NDhiMTJhYjA5OWRkNzdjODc3OWRiMTA5ODZjYTlkNzlhNGEzNjQxIiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 05:13:01 GMT\r\ncontent-type: application/x-javascript\r\nlast-modified: Wed, 18 Mar 2026 14:31:40 GMT\r\netag: \"138bb-69bab74c-ef13f05d9381a608;br\"\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 29018\r\ndate: Mon, 27 Jul 2026 05:13:01 GMT\r\nserver: LiteSpeed\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":80059,"size_decoded":29476,"mime_type":"application/x-javascript","magic":"JavaScript source, ASCII text, with very long lines (24666)","md5":"0706fcfd768571a12e8630ff7aea0206","sha1":"d2572f3fbdf626ee44d02619cb6839247245779c","sha256":"48c38640371f2760d438f77b829420e6dda47297dea39f7ccc16ebc6af2af6b1","sha512":"402f67d65cfb7ac9005f1cce841f07a0fa8f656cd1b828fd8f7a4a386ff89127253e0d5323ea4f59b4b30698fc24bd5dbcb175f71991e11281aadd1b4578ffcb","ssdeep":"1536:cUHsudmKlzk0RRb3lOUoSbwhHtFhszFpdq0rsS3:cUHE4zHVOUoS4HtFhszlVrsS3","tlshash":"007307e972d5b07243ea11f250bf0606f3396954780e44a4b528ecdb383648e96f3fb9","first_seen":"2026-07-27T04:06:32.622184Z","last_seen":"2026-07-27T05:13:31.020457Z","times_seen":2,"resource_available":true,"data":"ZnVuY3Rpb24gTG4oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fWNvbnN0e3RvU3RyaW5nOmdpfT1PYmplY3QucHJvdG90eXBlLHtnZXRQcm90b3R5cGVPZjpNdH09T2JqZWN0LHtpdGVyYXRvcjpIZSx0b1N0cmluZ1RhZzpNbn09U3ltYm9sLHplPShlPT50PT57Y29uc3Qgbj1naS5jYWxsKHQpO3JldHVybiBlW25dfHwoZVtuXT1uLnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksaj1lPT4oZT1lLnRvTG93ZXJDYXNlKCksdD0+emUodCk9PT1lKSxLZT1lPT50PT50eXBlb2YgdD09PWUse2lzQXJyYXk6c2V9PUFycmF5LGJlPUtlKCJ1bmRlZmluZWQiKTtmdW5jdGlvbiB5aShlKXtyZXR1cm4gZSE9PW51bGwmJiFiZShlKSYmZS5jb25zdHJ1Y3RvciE9PW51bGwmJiFiZShlLmNvbnN0cnVjdG9yKSYmTihlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX1jb25zdCBqbj1qKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIGJpKGUpe2xldCB0O3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/dD1BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6dD1lJiZlLmJ1ZmZlciYmam4oZS5idWZmZXIpLHR9Y29uc3Qgd2k9S2UoInN0cmluZyIpLE49S2UoImZ1bmN0aW9uIiksa249S2UoIm51bWJlciIpLEplPWU9PmUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCIseGk9ZT0+ZT09PSEwfHxlPT09ITEsRmU9ZT0+e2lmKHplKGUpIT09Im9iamVjdCIpcmV0dXJuITE7Y29uc3QgdD1NdChlKTtyZXR1cm4odD09PW51bGx8fHQ9PT1PYmplY3QucHJvdG90eXBlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1udWxsKSYmIShNbiBpbiBlKSYmIShIZSBpbiBlKX0sRWk9aigiRGF0ZSIpLFNpPWooIkZpbGUiKSxBaT1qKCJCbG9iIiksT2k9aigiRmlsZUxpc3QiKSx2aT1lPT5KZShlKSYmTihlLnBpcGUpLFJpPWU9PntsZXQgdDtyZXR1cm4gZSYmKHR5cGVvZiBGb3JtRGF0YT09ImZ1bmN0aW9uIiYmZSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxOKGUuYXBwZW5kKSYmKCh0PXplKGUpKT09PSJmb3JtZGF0YSJ8fHQ9PT0ib2JqZWN0IiYmTihlLnRvU3RyaW5nKSYmZS50b1N0cmluZygpPT09IltvYmplY3QgRm9ybURhdGFdIikpfSxUaT1qKCJVUkxTZWFyY2hQYXJhbXMiKSxbQ2ksUGksTmksRmldPVsiUmVhZGFibGVTdHJlYW0iLCJSZXF1ZXN0IiwiUmVzcG9uc2UiLCJIZWFkZXJzIl0ubWFwKGopLExpPWU9PmUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKTtmdW5jdGlvbiB4ZShlLHQse2FsbE93bktleXM6bj0hMX09e30pe2lmKGU9PT1udWxsfHx0eXBlb2YgZT4idSIpcmV0dXJuO2xldCByLGk7aWYodHlwZW9mIGUhPSJvYmplY3QiJiYoZT1bZV0pLHNlKGUpKWZvcihyPTAsaT1lLmxlbmd0aDtyPGk7cisrKXQuY2FsbChudWxsLGVbcl0scixlKTtlbHNle2NvbnN0IHM9bj9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKTpPYmplY3Qua2V5cyhlKSxvPXMubGVuZ3RoO2xldCBhO2ZvcihyPTA7cjxvO3IrKylhPXNbcl0sdC5jYWxsKG51bGwsZVthXSxhLGUpfX1mdW5jdGlvbiBCbihlLHQpe3Q9dC50b0xvd2VyQ2FzZSgpO2NvbnN0IG49T2JqZWN0LmtleXMoZSk7bGV0IHI9bi5sZW5ndGgsaTtmb3IoO3ItLSA+MDspaWYoaT1uW3JdLHQ9PT1pLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGk7cmV0dXJuIG51bGx9Y29uc3QgSj10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLEluPWU9PiFiZShlKSYmZSE9PUo7ZnVuY3Rpb24gZnQoKXtjb25zdHtjYXNlbGVzczplfT1Jbih0aGlzKSYmdGhpc3x8e30sdD17fSxuPShyLGkpPT57Y29uc3Qgcz1lJiZCbih0LGkpfHxpO0ZlKHRbc10pJiZGZShyKT90W3NdPWZ0KHRbc10scik6RmUocik/dFtzXT1mdCh7fSxyKTpzZShyKT90W3NdPXIuc2xpY2UoKTp0W3NdPXJ9O2ZvcihsZXQgcj0wLGk9YXJndW1lbnRzLmxlbmd0aDtyPGk7cisrKWFyZ3VtZW50c1tyXSYmeGUoYXJndW1lbnRzW3JdLG4pO3JldHVybiB0fWNvbnN0IE1pPShlLHQsbix7YWxsT3duS2V5czpyfT17fSk9Pih4ZSh0LChpLHMpPT57biYmTihpKT9lW3NdPUxuKGksbik6ZVtzXT1pfSx7YWxsT3duS2V5czpyfSksZSksamk9ZT0+KGUuY2hhckNvZGVBdCgwKT09PTY1Mjc5JiYoZT1lLnNsaWNlKDEpKSxlKSxraT0oZSx0LG4scik9PntlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlLHIpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInN1cGVyIix7dmFsdWU6dC5wcm90b3R5cGV9KSxuJiZPYmplY3QuYXNzaWduKGUucHJvdG90eXBlLG4pfSxCaT0oZSx0LG4scik9PntsZXQgaSxzLG87Y29uc3QgYT17fTtpZih0PXR8fHt9LGU9PW51bGwpcmV0dXJuIHQ7ZG97Zm9yKGk9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkscz1pLmxlbmd0aDtzLS0gPjA7KW89aVtzXSwoIXJ8fHIobyxlLHQpKSYmIWFbb10mJih0W29dPWVbb10sYVtvXT0hMCk7ZT1uIT09ITEmJk10KGUpfXdoaWxlKGUmJighbnx8bihlLHQpKSYmZSE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiB0fSxJaT0oZSx0LG4pPT57ZT1TdHJpbmcoZSksKG49PT12b2lkIDB8fG4+ZS5sZW5ndGgpJiYobj1lLmxlbmd0aCksbi09dC5sZW5ndGg7Y29uc3Qgcj1lLmluZGV4T2YodCxuKTtyZXR1cm4gciE9PS0xJiZyPT09bn0sRGk9ZT0+e2lmKCFlKXJldHVybiBudWxsO2lmKHNlKGUpKXJldHVybiBlO2xldCB0PWUubGVuZ3RoO2lmKCFrbih0KSlyZXR1cm4gbnVsbDtjb25zdCBuPW5ldyBBcnJheSh0KTtmb3IoO3QtLSA+MDspblt0XT1lW3RdO3JldHVybiBufSwkaT0oZT0+dD0+ZSYmdCBpbnN0YW5jZW9mIGUpKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmTXQoVWludDhBcnJheSkpLFVpPShlLHQpPT57Y29uc3Qgcj0oZSYmZVtIZV0pLmNhbGwoZSk7bGV0IGk7Zm9yKDsoaT1yLm5leHQoKSkmJiFpLmRvbmU7KXtjb25zdCBzPWkudmFsdWU7dC5jYWxsKGUsc1swXSxzWzFdKX19LHFpPShlLHQpPT57bGV0IG47Y29uc3Qgcj1bXTtmb3IoOyhuPWUuZXhlYyh0KSkhPT1udWxsOylyLnB1c2gobik7cmV0dXJuIHJ9LEhpPWooIkhUTUxGb3JtRWxlbWVudCIpLHppPWU9PmUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cc10oW2EtelxkXSkoXHcqKS9nLGZ1bmN0aW9uKG4scixpKXtyZXR1cm4gci50b1VwcGVyQ2FzZSgpK2l9KSxzbj0oKHtoYXNPd25Qcm9wZXJ0eTplfSk9Pih0LG4pPT5lLmNhbGwodCxuKSkoT2JqZWN0LnByb3RvdHlwZSksS2k9aigiUmVnRXhwIiksRG49KGUsdCk9Pntjb25zdCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGUpLHI9e307eGUobiwoaSxzKT0+e2xldCBvOyhvPXQoaSxzLGUpKSE9PSExJiYocltzXT1vfHxpKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUscil9LEppPWU9PntEbihlLCh0LG4pPT57aWYoTihlKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKG4pIT09LTEpcmV0dXJuITE7Y29uc3Qgcj1lW25dO2lmKE4ocikpe2lmKHQuZW51bWVyYWJsZT0hMSwid3JpdGFibGUiaW4gdCl7dC53cml0YWJsZT0hMTtyZXR1cm59dC5zZXR8fCh0LnNldD0oKT0+e3Rocm93IEVycm9yKCJDYW4gbm90IHJld3JpdGUgcmVhZC1vbmx5IG1ldGhvZCAnIituKyInIil9KX19KX0sV2k9KGUsdCk9Pntjb25zdCBuPXt9LHI9aT0+e2kuZm9yRWFjaChzPT57bltzXT0hMH0pfTtyZXR1cm4gc2UoZSk/cihlKTpyKFN0cmluZyhlKS5zcGxpdCh0KSksbn0sVmk9KCk9Pnt9LFhpPShlLHQpPT5lIT1udWxsJiZOdW1iZXIuaXNGaW5pdGUoZT0rZSk/ZTp0O2Z1bmN0aW9uIEdpKGUpe3JldHVybiEhKGUmJk4oZS5hcHBlbmQpJiZlW01uXT09PSJGb3JtRGF0YSImJmVbSGVdKX1jb25zdCBZaT1lPT57Y29uc3QgdD1uZXcgQXJyYXkoMTApLG49KHIsaSk9PntpZihKZShyKSl7aWYodC5pbmRleE9mKHIpPj0wKXJldHVybjtpZighKCJ0b0pTT04iaW4gcikpe3RbaV09cjtjb25zdCBzPXNlKHIpP1tdOnt9O3JldHVybiB4ZShyLChvLGEpPT57Y29uc3QgYz1uKG8saSsxKTshYmUoYykmJihzW2FdPWMpfSksdFtpXT12b2lkIDAsc319cmV0dXJuIHJ9O3JldHVybiBuKGUsMCl9LFppPWooIkFzeW5jRnVuY3Rpb24iKSxRaT1lPT5lJiYoSmUoZSl8fE4oZSkpJiZOKGUudGhlbikmJk4oZS5jYXRjaCksJG49KChlLHQpPT5lP3NldEltbWVkaWF0ZTp0PygobixyKT0+KEouYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtzb3VyY2U6aSxkYXRhOnN9KT0+e2k9PT1KJiZzPT09biYmci5sZW5ndGgmJnIuc2hpZnQoKSgpfSwhMSksaT0+e3IucHVzaChpKSxKLnBvc3RNZXNzYWdlKG4sIioiKX0pKShgYXhpb3NAJHtNYXRoLnJhbmRvbSgpfWAsW10pOm49PnNldFRpbWVvdXQobikpKHR5cGVvZiBzZXRJbW1lZGlhdGU9PSJmdW5jdGlvbiIsTihKLnBvc3RNZXNzYWdlKSksZXM9dHlwZW9mIHF1ZXVlTWljcm90YXNrPCJ1Ij9xdWV1ZU1pY3JvdGFzay5iaW5kKEopOnR5cGVvZiBwcm9jZXNzPCJ1IiYmcHJvY2Vzcy5uZXh0VGlja3x8JG4sdHM9ZT0+ZSE9bnVsbCYmTihlW0hlXSksZj17aXNBcnJheTpzZSxpc0FycmF5QnVmZmVyOmpuLGlzQnVmZmVyOnlpLGlzRm9ybURhdGE6UmksaXNBcnJheUJ1ZmZlclZpZXc6YmksaXNTdHJpbmc6d2ksaXNOdW1iZXI6a24saXNCb29sZWFuOnhpLGlzT2JqZWN0OkplLGlzUGxhaW5PYmplY3Q6RmUsaXNSZWFkYWJsZVN0cmVhbTpDaSxpc1JlcXVlc3Q6UGksaXNSZXNwb25zZTpOaSxpc0hlYWRlcnM6RmksaXNVbmRlZmluZWQ6YmUsaXNEYXRlOkVpLGlzRmlsZTpTaSxpc0Jsb2I6QWksaXNSZWdFeHA6S2ksaXNGdW5jdGlvbjpOLGlzU3RyZWFtOnZpLGlzVVJMU2VhcmNoUGFyYW1zOlRpLGlzVHlwZWRBcnJheTokaSxpc0ZpbGVMaXN0Ok9pLGZvckVhY2g6eGUsbWVyZ2U6ZnQsZXh0ZW5kOk1pLHRyaW06TGksc3RyaXBCT006amksaW5oZXJpdHM6a2ksdG9GbGF0T2JqZWN0OkJpLGtpbmRPZjp6ZSxraW5kT2ZUZXN0OmosZW5kc1dpdGg6SWksdG9BcnJheTpEaSxmb3JFYWNoRW50cnk6VWksbWF0Y2hBbGw6cWksaXNIVE1MRm9ybTpIaSxoYXNPd25Qcm9wZXJ0eTpzbixoYXNPd25Qcm9wOnNuLHJlZHVjZURlc2NyaXB0b3JzOkRuLGZyZWV6ZU1ldGhvZHM6SmksdG9PYmplY3RTZXQ6V2ksdG9DYW1lbENhc2U6emksbm9vcDpWaSx0b0Zpbml0ZU51bWJlcjpYaSxmaW5kS2V5OkJuLGdsb2JhbDpKLGlzQ29udGV4dERlZmluZWQ6SW4saXNTcGVjQ29tcGxpYW50Rm9ybTpHaSx0b0pTT05PYmplY3Q6WWksaXNBc3luY0ZuOlppLGlzVGhlbmFibGU6UWksc2V0SW1tZWRpYXRlOiRuLGFzYXA6ZXMsaXNJdGVyYWJsZTp0c307ZnVuY3Rpb24geShlLHQsbixyLGkpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1lLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsdCYmKHRoaXMuY29kZT10KSxuJiYodGhpcy5jb25maWc9biksciYmKHRoaXMucmVxdWVzdD1yKSxpJiYodGhpcy5yZXNwb25zZT1pLHRoaXMuc3RhdHVzPWkuc3RhdHVzP2kuc3RhdHVzOm51bGwpfWYuaW5oZXJpdHMoeSxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOmYudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5zdGF0dXN9fX0pO2NvbnN0IFVuPXkucHJvdG90eXBlLHFuPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goZT0+e3FuW2VdPXt2YWx1ZTplfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHkscW4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShVbiwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTt5LmZyb209KGUsdCxuLHIsaSxzKT0+e2NvbnN0IG89T2JqZWN0LmNyZWF0ZShVbik7cmV0dXJuIGYudG9GbGF0T2JqZWN0KGUsbyxmdW5jdGlvbihjKXtyZXR1cm4gYyE9PUVycm9yLnByb3RvdHlwZX0sYT0+YSE9PSJpc0F4aW9zRXJyb3IiKSx5LmNhbGwobyxlLm1lc3NhZ2UsdCxuLHIsaSksby5jYXVzZT1lLG8ubmFtZT1lLm5hbWUscyYmT2JqZWN0LmFzc2lnbihvLHMpLG99O2NvbnN0IG5zPW51bGw7ZnVuY3Rpb24gZHQoZSl7cmV0dXJuIGYuaXNQbGFpbk9iamVjdChlKXx8Zi5pc0FycmF5KGUpfWZ1bmN0aW9uIEhuKGUpe3JldHVybiBmLmVuZHNXaXRoKGUsIltdIik/ZS5zbGljZSgwLC0yKTplfWZ1bmN0aW9uIG9uKGUsdCxuKXtyZXR1cm4gZT9lLmNvbmNhdCh0KS5tYXAoZnVuY3Rpb24oaSxzKXtyZXR1cm4gaT1IbihpKSwhbiYmcz8iWyIraSsiXSI6aX0pLmpvaW4obj8iLiI6IiIpOnR9ZnVuY3Rpb24gcnMoZSl7cmV0dXJuIGYuaXNBcnJheShlKSYmIWUuc29tZShkdCl9Y29uc3QgaXM9Zi50b0ZsYXRPYmplY3QoZix7fSxudWxsLGZ1bmN0aW9uKHQpe3JldHVybi9eaXNbQS1aXS8udGVzdCh0KX0pO2Z1bmN0aW9uIFdlKGUsdCxuKXtpZighZi5pc09iamVjdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTt0PXR8fG5ldyBGb3JtRGF0YSxuPWYudG9GbGF0T2JqZWN0KG4se21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihnLGQpe3JldHVybiFmLmlzVW5kZWZpbmVkKGRbZ10pfSk7Y29uc3Qgcj1uLm1ldGFUb2tlbnMsaT1uLnZpc2l0b3J8fGwscz1uLmRvdHMsbz1uLmluZGV4ZXMsYz0obi5CbG9ifHx0eXBlb2YgQmxvYjwidSImJkJsb2IpJiZmLmlzU3BlY0NvbXBsaWFudEZvcm0odCk7aWYoIWYuaXNGdW5jdGlvbihpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Z1bmN0aW9uIHUoaCl7aWYoaD09PW51bGwpcmV0dXJuIiI7aWYoZi5pc0RhdGUoaCkpcmV0dXJuIGgudG9JU09TdHJpbmcoKTtpZihmLmlzQm9vbGVhbihoKSlyZXR1cm4gaC50b1N0cmluZygpO2lmKCFjJiZmLmlzQmxvYihoKSl0aHJvdyBuZXcgeSgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gZi5pc0FycmF5QnVmZmVyKGgpfHxmLmlzVHlwZWRBcnJheShoKT9jJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbaF0pOkJ1ZmZlci5mcm9tKGgpOmh9ZnVuY3Rpb24gbChoLGcsZCl7bGV0IG09aDtpZihoJiYhZCYmdHlwZW9mIGg9PSJvYmplY3QiKXtpZihmLmVuZHNXaXRoKGcsInt9IikpZz1yP2c6Zy5zbGljZSgwLC0yKSxoPUpTT04uc3RyaW5naWZ5KGgpO2Vsc2UgaWYoZi5pc0FycmF5KGgpJiZycyhoKXx8KGYuaXNGaWxlTGlzdChoKXx8Zi5lbmRzV2l0aChnLCJbXSIpKSYmKG09Zi50b0FycmF5KGgpKSlyZXR1cm4gZz1IbihnKSxtLmZvckVhY2goZnVuY3Rpb24oeCxBKXshKGYuaXNVbmRlZmluZWQoeCl8fHg9PT1udWxsKSYmdC5hcHBlbmQobz09PSEwP29uKFtnXSxBLHMpOm89PT1udWxsP2c6ZysiW10iLHUoeCkpfSksITF9cmV0dXJuIGR0KGgpPyEwOih0LmFwcGVuZChvbihkLGcscyksdShoKSksITEpfWNvbnN0IHA9W10sXz1PYmplY3QuYXNzaWduKGlzLHtkZWZhdWx0VmlzaXRvcjpsLGNvbnZlcnRWYWx1ZTp1LGlzVmlzaXRhYmxlOmR0fSk7ZnVuY3Rpb24gdyhoLGcpe2lmKCFmLmlzVW5kZWZpbmVkKGgpKXtpZihwLmluZGV4T2YoaCkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrZy5qb2luKCIuIikpO3AucHVzaChoKSxmLmZvckVhY2goaCxmdW5jdGlvbihtLGIpeyghKGYuaXNVbmRlZmluZWQobSl8fG09PT1udWxsKSYmaS5jYWxsKHQsbSxmLmlzU3RyaW5nKGIpP2IudHJpbSgpOmIsZyxfKSk9PT0hMCYmdyhtLGc/Zy5jb25jYXQoYik6W2JdKX0pLHAucG9wKCl9fWlmKCFmLmlzT2JqZWN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gdyhlKSx0fWZ1bmN0aW9uIGFuKGUpe2NvbnN0IHQ9eyIhIjoiJTIxIiwiJyI6IiUyNyIsIigiOiIlMjgiLCIpIjoiJTI5IiwifiI6IiU3RSIsIiUyMCI6IisiLCIlMDAiOiJcMCJ9O3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvWyEnKCl+XXwlMjB8JTAwL2csZnVuY3Rpb24ocil7cmV0dXJuIHRbcl19KX1mdW5jdGlvbiBqdChlLHQpe3RoaXMuX3BhaXJzPVtdLGUmJldlKGUsdGhpcyx0KX1jb25zdCB6bj1qdC5wcm90b3R5cGU7em4uYXBwZW5kPWZ1bmN0aW9uKHQsbil7dGhpcy5fcGFpcnMucHVzaChbdCxuXSl9O3puLnRvU3RyaW5nPWZ1bmN0aW9uKHQpe2NvbnN0IG49dD9mdW5jdGlvbihyKXtyZXR1cm4gdC5jYWxsKHRoaXMscixhbil9OmFuO3JldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIG4oaVswXSkrIj0iK24oaVsxXSl9LCIiKS5qb2luKCImIil9O2Z1bmN0aW9uIHNzKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIEtuKGUsdCxuKXtpZighdClyZXR1cm4gZTtjb25zdCByPW4mJm4uZW5jb2RlfHxzcztmLmlzRnVuY3Rpb24obikmJihuPXtzZXJpYWxpemU6bn0pO2NvbnN0IGk9biYmbi5zZXJpYWxpemU7bGV0IHM7aWYoaT9zPWkodCxuKTpzPWYuaXNVUkxTZWFyY2hQYXJhbXModCk/dC50b1N0cmluZygpOm5ldyBqdCh0LG4pLnRvU3RyaW5nKHIpLHMpe2NvbnN0IG89ZS5pbmRleE9mKCIjIik7byE9PS0xJiYoZT1lLnNsaWNlKDAsbykpLGUrPShlLmluZGV4T2YoIj8iKT09PS0xPyI/IjoiJiIpK3N9cmV0dXJuIGV9Y2xhc3MgY257Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZSh0LG4scil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOnQscmVqZWN0ZWQ6bixzeW5jaHJvbm91czpyP3Iuc3luY2hyb25vdXM6ITEscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdCh0KXt0aGlzLmhhbmRsZXJzW3RdJiYodGhpcy5oYW5kbGVyc1t0XT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKHQpe2YuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKHIpe3IhPT1udWxsJiZ0KHIpfSl9fWNvbnN0IEpuPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSxvcz10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6anQsYXM9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsLGNzPXR5cGVvZiBCbG9iPCJ1Ij9CbG9iOm51bGwsdXM9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6b3MsRm9ybURhdGE6YXMsQmxvYjpjc30scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19LGt0PXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLHB0PXR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiZuYXZpZ2F0b3J8fHZvaWQgMCxscz1rdCYmKCFwdHx8WyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihwdC5wcm9kdWN0KTwwKSxmcz10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiIsZHM9a3QmJndpbmRvdy5sb2NhdGlvbi5ocmVmfHwiaHR0cDovL2xvY2FsaG9zdCIscHM9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGhhc0Jyb3dzZXJFbnY6a3QsaGFzU3RhbmRhcmRCcm93c2VyRW52OmxzLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjpmcyxuYXZpZ2F0b3I6cHQsb3JpZ2luOmRzfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLFQ9ey4uLnBzLC4uLnVzfTtmdW5jdGlvbiBocyhlLHQpe3JldHVybiBXZShlLG5ldyBULmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLE9iamVjdC5hc3NpZ24oe3Zpc2l0b3I6ZnVuY3Rpb24obixyLGkscyl7cmV0dXJuIFQuaXNOb2RlJiZmLmlzQnVmZmVyKG4pPyh0aGlzLmFwcGVuZChyLG4udG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6cy5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx0KSl9ZnVuY3Rpb24gX3MoZSl7cmV0dXJuIGYubWF0Y2hBbGwoL1x3K3xcWyhcdyopXS9nLGUpLm1hcCh0PT50WzBdPT09IltdIj8iIjp0WzFdfHx0WzBdKX1mdW5jdGlvbiBtcyhlKXtjb25zdCB0PXt9LG49T2JqZWN0LmtleXMoZSk7bGV0IHI7Y29uc3QgaT1uLmxlbmd0aDtsZXQgcztmb3Iocj0wO3I8aTtyKyspcz1uW3JdLHRbc109ZVtzXTtyZXR1cm4gdH1mdW5jdGlvbiBXbihlKXtmdW5jdGlvbiB0KG4scixpLHMpe2xldCBvPW5bcysrXTtpZihvPT09Il9fcHJvdG9fXyIpcmV0dXJuITA7Y29uc3QgYT1OdW1iZXIuaXNGaW5pdGUoK28pLGM9cz49bi5sZW5ndGg7cmV0dXJuIG89IW8mJmYuaXNBcnJheShpKT9pLmxlbmd0aDpvLGM/KGYuaGFzT3duUHJvcChpLG8pP2lbb109W2lbb10scl06aVtvXT1yLCFhKTooKCFpW29dfHwhZi5pc09iamVjdChpW29dKSkmJihpW29dPVtdKSx0KG4scixpW29dLHMpJiZmLmlzQXJyYXkoaVtvXSkmJihpW29dPW1zKGlbb10pKSwhYSl9aWYoZi5pc0Zvcm1EYXRhKGUpJiZmLmlzRnVuY3Rpb24oZS5lbnRyaWVzKSl7Y29uc3Qgbj17fTtyZXR1cm4gZi5mb3JFYWNoRW50cnkoZSwocixpKT0+e3QoX3MociksaSxuLDApfSksbn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBncyhlLHQsbil7aWYoZi5pc1N0cmluZyhlKSl0cnl7cmV0dXJuKHR8fEpTT04ucGFyc2UpKGUpLGYudHJpbShlKX1jYXRjaChyKXtpZihyLm5hbWUhPT0iU3ludGF4RXJyb3IiKXRocm93IHJ9cmV0dXJuKG58fEpTT04uc3RyaW5naWZ5KShlKX1jb25zdCBFZT17dHJhbnNpdGlvbmFsOkpuLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIiwiZmV0Y2giXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbih0LG4pe2NvbnN0IHI9bi5nZXRDb250ZW50VHlwZSgpfHwiIixpPXIuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLHM9Zi5pc09iamVjdCh0KTtpZihzJiZmLmlzSFRNTEZvcm0odCkmJih0PW5ldyBGb3JtRGF0YSh0KSksZi5pc0Zvcm1EYXRhKHQpKXJldHVybiBpP0pTT04uc3RyaW5naWZ5KFduKHQpKTp0O2lmKGYuaXNBcnJheUJ1ZmZlcih0KXx8Zi5pc0J1ZmZlcih0KXx8Zi5pc1N0cmVhbSh0KXx8Zi5pc0ZpbGUodCl8fGYuaXNCbG9iKHQpfHxmLmlzUmVhZGFibGVTdHJlYW0odCkpcmV0dXJuIHQ7aWYoZi5pc0FycmF5QnVmZmVyVmlldyh0KSlyZXR1cm4gdC5idWZmZXI7aWYoZi5pc1VSTFNlYXJjaFBhcmFtcyh0KSlyZXR1cm4gbi5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSx0LnRvU3RyaW5nKCk7bGV0IGE7aWYocyl7aWYoci5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gaHModCx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChhPWYuaXNGaWxlTGlzdCh0KSl8fHIuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtjb25zdCBjPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gV2UoYT97ImZpbGVzW10iOnR9OnQsYyYmbmV3IGMsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiBzfHxpPyhuLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSksZ3ModCkpOnR9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLnRyYW5zaXRpb25hbHx8RWUudHJhbnNpdGlvbmFsLHI9biYmbi5mb3JjZWRKU09OUGFyc2luZyxpPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKGYuaXNSZXNwb25zZSh0KXx8Zi5pc1JlYWRhYmxlU3RyZWFtKHQpKXJldHVybiB0O2lmKHQmJmYuaXNTdHJpbmcodCkmJihyJiYhdGhpcy5yZXNwb25zZVR5cGV8fGkpKXtjb25zdCBvPSEobiYmbi5zaWxlbnRKU09OUGFyc2luZykmJmk7dHJ5e3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGEpe2lmKG8pdGhyb3cgYS5uYW1lPT09IlN5bnRheEVycm9yIj95LmZyb20oYSx5LkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOmF9fXJldHVybiB0fV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTpULmNsYXNzZXMuRm9ybURhdGEsQmxvYjpULmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTIwMCYmdDwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTtmLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sZT0+e0VlLmhlYWRlcnNbZV09e319KTtjb25zdCB5cz1mLnRvT2JqZWN0U2V0KFsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0pLGJzPWU9Pntjb25zdCB0PXt9O2xldCBuLHIsaTtyZXR1cm4gZSYmZS5zcGxpdChgCmApLmZvckVhY2goZnVuY3Rpb24obyl7aT1vLmluZGV4T2YoIjoiKSxuPW8uc3Vic3RyaW5nKDAsaSkudHJpbSgpLnRvTG93ZXJDYXNlKCkscj1vLnN1YnN0cmluZyhpKzEpLnRyaW0oKSwhKCFufHx0W25dJiZ5c1tuXSkmJihuPT09InNldC1jb29raWUiP3Rbbl0/dFtuXS5wdXNoKHIpOnRbbl09W3JdOnRbbl09dFtuXT90W25dKyIsICIrcjpyKX0pLHR9LHVuPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIGUmJlN0cmluZyhlKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBMZShlKXtyZXR1cm4gZT09PSExfHxlPT1udWxsP2U6Zi5pc0FycmF5KGUpP2UubWFwKExlKTpTdHJpbmcoZSl9ZnVuY3Rpb24gd3MoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpLG49LyhbXlxzLDs9XSspXHMqKD86PVxzKihbXiw7XSspKT8vZztsZXQgcjtmb3IoO3I9bi5leGVjKGUpOyl0W3JbMV1dPXJbMl07cmV0dXJuIHR9Y29uc3QgeHM9ZT0+L15bLV9hLXpBLVowLTleYHx+LCEjJCUmJyorLl0rJC8udGVzdChlLnRyaW0oKSk7ZnVuY3Rpb24gcnQoZSx0LG4scixpKXtpZihmLmlzRnVuY3Rpb24ocikpcmV0dXJuIHIuY2FsbCh0aGlzLHQsbik7aWYoaSYmKHQ9biksISFmLmlzU3RyaW5nKHQpKXtpZihmLmlzU3RyaW5nKHIpKXJldHVybiB0LmluZGV4T2YocikhPT0tMTtpZihmLmlzUmVnRXhwKHIpKXJldHVybiByLnRlc3QodCl9fWZ1bmN0aW9uIEVzKGUpe3JldHVybiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XGRdKShcdyopL2csKHQsbixyKT0+bi50b1VwcGVyQ2FzZSgpK3IpfWZ1bmN0aW9uIFNzKGUsdCl7Y29uc3Qgbj1mLnRvQ2FtZWxDYXNlKCIgIit0KTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2gocj0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIrbix7dmFsdWU6ZnVuY3Rpb24oaSxzLG8pe3JldHVybiB0aGlzW3JdLmNhbGwodGhpcyx0LGkscyxvKX0sY29uZmlndXJhYmxlOiEwfSl9KX1sZXQgRj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0JiZ0aGlzLnNldCh0KX1zZXQodCxuLHIpe2NvbnN0IGk9dGhpcztmdW5jdGlvbiBzKGEsYyx1KXtjb25zdCBsPWRlKGMpO2lmKCFsKXRocm93IG5ldyBFcnJvcigiaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtjb25zdCBwPWYuZmluZEtleShpLGwpOyghcHx8aVtwXT09PXZvaWQgMHx8dT09PSEwfHx1PT09dm9pZCAwJiZpW3BdIT09ITEpJiYoaVtwfHxjXT1MZShhKSl9Y29uc3Qgbz0oYSxjKT0+Zi5mb3JFYWNoKGEsKHUsbCk9PnModSxsLGMpKTtpZihmLmlzUGxhaW5PYmplY3QodCl8fHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKW8odCxuKTtlbHNlIGlmKGYuaXNTdHJpbmcodCkmJih0PXQudHJpbSgpKSYmIXhzKHQpKW8oYnModCksbik7ZWxzZSBpZihmLmlzT2JqZWN0KHQpJiZmLmlzSXRlcmFibGUodCkpe2xldCBhPXt9LGMsdTtmb3IoY29uc3QgbCBvZiB0KXtpZighZi5pc0FycmF5KGwpKXRocm93IFR5cGVFcnJvcigiT2JqZWN0IGl0ZXJhdG9yIG11c3QgcmV0dXJuIGEga2V5LXZhbHVlIHBhaXIiKTthW3U9bFswXV09KGM9YVt1XSk/Zi5pc0FycmF5KGMpP1suLi5jLGxbMV1dOltjLGxbMV1dOmxbMV19byhhLG4pfWVsc2UgdCE9bnVsbCYmcyhuLHQscik7cmV0dXJuIHRoaXN9Z2V0KHQsbil7aWYodD1kZSh0KSx0KXtjb25zdCByPWYuZmluZEtleSh0aGlzLHQpO2lmKHIpe2NvbnN0IGk9dGhpc1tyXTtpZighbilyZXR1cm4gaTtpZihuPT09ITApcmV0dXJuIHdzKGkpO2lmKGYuaXNGdW5jdGlvbihuKSlyZXR1cm4gbi5jYWxsKHRoaXMsaSxyKTtpZihmLmlzUmVnRXhwKG4pKXJldHVybiBuLmV4ZWMoaSk7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyh0LG4pe2lmKHQ9ZGUodCksdCl7Y29uc3Qgcj1mLmZpbmRLZXkodGhpcyx0KTtyZXR1cm4hIShyJiZ0aGlzW3JdIT09dm9pZCAwJiYoIW58fHJ0KHRoaXMsdGhpc1tyXSxyLG4pKSl9cmV0dXJuITF9ZGVsZXRlKHQsbil7Y29uc3Qgcj10aGlzO2xldCBpPSExO2Z1bmN0aW9uIHMobyl7aWYobz1kZShvKSxvKXtjb25zdCBhPWYuZmluZEtleShyLG8pO2EmJighbnx8cnQocixyW2FdLGEsbikpJiYoZGVsZXRlIHJbYV0saT0hMCl9fXJldHVybiBmLmlzQXJyYXkodCk/dC5mb3JFYWNoKHMpOnModCksaX1jbGVhcih0KXtjb25zdCBuPU9iamVjdC5rZXlzKHRoaXMpO2xldCByPW4ubGVuZ3RoLGk9ITE7Zm9yKDtyLS07KXtjb25zdCBzPW5bcl07KCF0fHxydCh0aGlzLHRoaXNbc10scyx0LCEwKSkmJihkZWxldGUgdGhpc1tzXSxpPSEwKX1yZXR1cm4gaX1ub3JtYWxpemUodCl7Y29uc3Qgbj10aGlzLHI9e307cmV0dXJuIGYuZm9yRWFjaCh0aGlzLChpLHMpPT57Y29uc3Qgbz1mLmZpbmRLZXkocixzKTtpZihvKXtuW29dPUxlKGkpLGRlbGV0ZSBuW3NdO3JldHVybn1jb25zdCBhPXQ/RXMocyk6U3RyaW5nKHMpLnRyaW0oKTthIT09cyYmZGVsZXRlIG5bc10sblthXT1MZShpKSxyW2FdPSEwfSksdGhpc31jb25jYXQoLi4udCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4udCl9dG9KU09OKHQpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZi5mb3JFYWNoKHRoaXMsKHIsaSk9PntyIT1udWxsJiZyIT09ITEmJihuW2ldPXQmJmYuaXNBcnJheShyKT9yLmpvaW4oIiwgIik6cil9KSxufVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKX10b1N0cmluZygpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFt0LG5dKT0+dCsiOiAiK24pLmpvaW4oYApgKX1nZXRTZXRDb29raWUoKXtyZXR1cm4gdGhpcy5nZXQoInNldC1jb29raWUiKXx8W119Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXM/dDpuZXcgdGhpcyh0KX1zdGF0aWMgY29uY2F0KHQsLi4ubil7Y29uc3Qgcj1uZXcgdGhpcyh0KTtyZXR1cm4gbi5mb3JFYWNoKGk9PnIuc2V0KGkpKSxyfXN0YXRpYyBhY2Nlc3Nvcih0KXtjb25zdCByPSh0aGlzW3VuXT10aGlzW3VuXT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLGk9dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gcyhvKXtjb25zdCBhPWRlKG8pO3JbYV18fChTcyhpLG8pLHJbYV09ITApfXJldHVybiBmLmlzQXJyYXkodCk/dC5mb3JFYWNoKHMpOnModCksdGhpc319O0YuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO2YucmVkdWNlRGVzY3JpcHRvcnMoRi5wcm90b3R5cGUsKHt2YWx1ZTplfSx0KT0+e2xldCBuPXRbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PmUsc2V0KHIpe3RoaXNbbl09cn19fSk7Zi5mcmVlemVNZXRob2RzKEYpO2Z1bmN0aW9uIGl0KGUsdCl7Y29uc3Qgbj10aGlzfHxFZSxyPXR8fG4saT1GLmZyb20oci5oZWFkZXJzKTtsZXQgcz1yLmRhdGE7cmV0dXJuIGYuZm9yRWFjaChlLGZ1bmN0aW9uKGEpe3M9YS5jYWxsKG4scyxpLm5vcm1hbGl6ZSgpLHQ/dC5zdGF0dXM6dm9pZCAwKX0pLGkubm9ybWFsaXplKCksc31mdW5jdGlvbiBWbihlKXtyZXR1cm4hIShlJiZlLl9fQ0FOQ0VMX18pfWZ1bmN0aW9uIG9lKGUsdCxuKXt5LmNhbGwodGhpcyxlPz8iY2FuY2VsZWQiLHkuRVJSX0NBTkNFTEVELHQsbiksdGhpcy5uYW1lPSJDYW5jZWxlZEVycm9yIn1mLmluaGVyaXRzKG9lLHkse19fQ0FOQ0VMX186ITB9KTtmdW5jdGlvbiBYbihlLHQsbil7Y29uc3Qgcj1uLmNvbmZpZy52YWxpZGF0ZVN0YXR1czshbi5zdGF0dXN8fCFyfHxyKG4uc3RhdHVzKT9lKG4pOnQobmV3IHkoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIituLnN0YXR1cyxbeS5FUlJfQkFEX1JFUVVFU1QseS5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKG4uc3RhdHVzLzEwMCktNF0sbi5jb25maWcsbi5yZXF1ZXN0LG4pKX1mdW5jdGlvbiBBcyhlKXtjb25zdCB0PS9eKFstK1x3XXsxLDI1fSkoOj9cL1wvfDopLy5leGVjKGUpO3JldHVybiB0JiZ0WzFdfHwiIn1mdW5jdGlvbiBPcyhlLHQpe2U9ZXx8MTA7Y29uc3Qgbj1uZXcgQXJyYXkoZSkscj1uZXcgQXJyYXkoZSk7bGV0IGk9MCxzPTAsbztyZXR1cm4gdD10IT09dm9pZCAwP3Q6MWUzLGZ1bmN0aW9uKGMpe2NvbnN0IHU9RGF0ZS5ub3coKSxsPXJbc107b3x8KG89dSksbltpXT1jLHJbaV09dTtsZXQgcD1zLF89MDtmb3IoO3AhPT1pOylfKz1uW3ArK10scD1wJWU7aWYoaT0oaSsxKSVlLGk9PT1zJiYocz0ocysxKSVlKSx1LW88dClyZXR1cm47Y29uc3Qgdz1sJiZ1LWw7cmV0dXJuIHc/TWF0aC5yb3VuZChfKjFlMy93KTp2b2lkIDB9fWZ1bmN0aW9uIHZzKGUsdCl7bGV0IG49MCxyPTFlMy90LGkscztjb25zdCBvPSh1LGw9RGF0ZS5ub3coKSk9PntuPWwsaT1udWxsLHMmJihjbGVhclRpbWVvdXQocykscz1udWxsKSxlLmFwcGx5KG51bGwsdSl9O3JldHVyblsoLi4udSk9Pntjb25zdCBsPURhdGUubm93KCkscD1sLW47cD49cj9vKHUsbCk6KGk9dSxzfHwocz1zZXRUaW1lb3V0KCgpPT57cz1udWxsLG8oaSl9LHItcCkpKX0sKCk9PmkmJm8oaSldfWNvbnN0IEJlPShlLHQsbj0zKT0+e2xldCByPTA7Y29uc3QgaT1Pcyg1MCwyNTApO3JldHVybiB2cyhzPT57Y29uc3Qgbz1zLmxvYWRlZCxhPXMubGVuZ3RoQ29tcHV0YWJsZT9zLnRvdGFsOnZvaWQgMCxjPW8tcix1PWkoYyksbD1vPD1hO3I9bztjb25zdCBwPXtsb2FkZWQ6byx0b3RhbDphLHByb2dyZXNzOmE/by9hOnZvaWQgMCxieXRlczpjLHJhdGU6dXx8dm9pZCAwLGVzdGltYXRlZDp1JiZhJiZsPyhhLW8pL3U6dm9pZCAwLGV2ZW50OnMsbGVuZ3RoQ29tcHV0YWJsZTphIT1udWxsLFt0PyJkb3dubG9hZCI6InVwbG9hZCJdOiEwfTtlKHApfSxuKX0sbG49KGUsdCk9Pntjb25zdCBuPWUhPW51bGw7cmV0dXJuW3I9PnRbMF0oe2xlbmd0aENvbXB1dGFibGU6bix0b3RhbDplLGxvYWRlZDpyfSksdFsxXV19LGZuPWU9PiguLi50KT0+Zi5hc2FwKCgpPT5lKC4uLnQpKSxScz1ULmhhc1N0YW5kYXJkQnJvd3NlckVudj8oKGUsdCk9Pm49PihuPW5ldyBVUkwobixULm9yaWdpbiksZS5wcm90b2NvbD09PW4ucHJvdG9jb2wmJmUuaG9zdD09PW4uaG9zdCYmKHR8fGUucG9ydD09PW4ucG9ydCkpKShuZXcgVVJMKFQub3JpZ2luKSxULm5hdmlnYXRvciYmLyhtc2llfHRyaWRlbnQpL2kudGVzdChULm5hdmlnYXRvci51c2VyQWdlbnQpKTooKT0+ITAsVHM9VC5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKGUsdCxuLHIsaSxzKXtjb25zdCBvPVtlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCldO2YuaXNOdW1iZXIobikmJm8ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKG4pLnRvR01UU3RyaW5nKCkpLGYuaXNTdHJpbmcocikmJm8ucHVzaCgicGF0aD0iK3IpLGYuaXNTdHJpbmcoaSkmJm8ucHVzaCgiZG9tYWluPSIraSkscz09PSEwJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQoZSl7Y29uc3QgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrZSsiKT0oW147XSopIikpO3JldHVybiB0P2RlY29kZVVSSUNvbXBvbmVudCh0WzNdKTpudWxsfSxyZW1vdmUoZSl7dGhpcy53cml0ZShlLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlKCl7fSxyZWFkKCl7cmV0dXJuIG51bGx9LHJlbW92ZSgpe319O2Z1bmN0aW9uIENzKGUpe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoZSl9ZnVuY3Rpb24gUHMoZSx0KXtyZXR1cm4gdD9lLnJlcGxhY2UoL1wvP1wvJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfWZ1bmN0aW9uIEduKGUsdCxuKXtsZXQgcj0hQ3ModCk7cmV0dXJuIGUmJihyfHxuPT0hMSk/UHMoZSx0KTp0fWNvbnN0IGRuPWU9PmUgaW5zdGFuY2VvZiBGP3suLi5lfTplO2Z1bmN0aW9uIFEoZSx0KXt0PXR8fHt9O2NvbnN0IG49e307ZnVuY3Rpb24gcih1LGwscCxfKXtyZXR1cm4gZi5pc1BsYWluT2JqZWN0KHUpJiZmLmlzUGxhaW5PYmplY3QobCk/Zi5tZXJnZS5jYWxsKHtjYXNlbGVzczpffSx1LGwpOmYuaXNQbGFpbk9iamVjdChsKT9mLm1lcmdlKHt9LGwpOmYuaXNBcnJheShsKT9sLnNsaWNlKCk6bH1mdW5jdGlvbiBpKHUsbCxwLF8pe2lmKGYuaXNVbmRlZmluZWQobCkpe2lmKCFmLmlzVW5kZWZpbmVkKHUpKXJldHVybiByKHZvaWQgMCx1LHAsXyl9ZWxzZSByZXR1cm4gcih1LGwscCxfKX1mdW5jdGlvbiBzKHUsbCl7aWYoIWYuaXNVbmRlZmluZWQobCkpcmV0dXJuIHIodm9pZCAwLGwpfWZ1bmN0aW9uIG8odSxsKXtpZihmLmlzVW5kZWZpbmVkKGwpKXtpZighZi5pc1VuZGVmaW5lZCh1KSlyZXR1cm4gcih2b2lkIDAsdSl9ZWxzZSByZXR1cm4gcih2b2lkIDAsbCl9ZnVuY3Rpb24gYSh1LGwscCl7aWYocCBpbiB0KXJldHVybiByKHUsbCk7aWYocCBpbiBlKXJldHVybiByKHZvaWQgMCx1KX1jb25zdCBjPXt1cmw6cyxtZXRob2Q6cyxkYXRhOnMsYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOmEsaGVhZGVyczoodSxsLHApPT5pKGRuKHUpLGRuKGwpLHAsITApfTtyZXR1cm4gZi5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sZSx0KSksZnVuY3Rpb24obCl7Y29uc3QgcD1jW2xdfHxpLF89cChlW2xdLHRbbF0sbCk7Zi5pc1VuZGVmaW5lZChfKSYmcCE9PWF8fChuW2xdPV8pfSksbn1jb25zdCBZbj1lPT57Y29uc3QgdD1RKHt9LGUpO2xldHtkYXRhOm4sd2l0aFhTUkZUb2tlbjpyLHhzcmZIZWFkZXJOYW1lOmkseHNyZkNvb2tpZU5hbWU6cyxoZWFkZXJzOm8sYXV0aDphfT10O3QuaGVhZGVycz1vPUYuZnJvbShvKSx0LnVybD1LbihHbih0LmJhc2VVUkwsdC51cmwsdC5hbGxvd0Fic29sdXRlVXJscyksZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKSxhJiZvLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYSgoYS51c2VybmFtZXx8IiIpKyI6IisoYS5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYS5wYXNzd29yZCkpOiIiKSkpO2xldCBjO2lmKGYuaXNGb3JtRGF0YShuKSl7aWYoVC5oYXNTdGFuZGFyZEJyb3dzZXJFbnZ8fFQuaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KW8uc2V0Q29udGVudFR5cGUodm9pZCAwKTtlbHNlIGlmKChjPW8uZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7Y29uc3RbdSwuLi5sXT1jP2Muc3BsaXQoIjsiKS5tYXAocD0+cC50cmltKCkpLmZpbHRlcihCb29sZWFuKTpbXTtvLnNldENvbnRlbnRUeXBlKFt1fHwibXVsdGlwYXJ0L2Zvcm0tZGF0YSIsLi4ubF0uam9pbigiOyAiKSl9fWlmKFQuaGFzU3RhbmRhcmRCcm93c2VyRW52JiYociYmZi5pc0Z1bmN0aW9uKHIpJiYocj1yKHQpKSxyfHxyIT09ITEmJlJzKHQudXJsKSkpe2NvbnN0IHU9aSYmcyYmVHMucmVhZChzKTt1JiZvLnNldChpLHUpfXJldHVybiB0fSxOcz10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLEZzPU5zJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obixyKXtjb25zdCBpPVluKGUpO2xldCBzPWkuZGF0YTtjb25zdCBvPUYuZnJvbShpLmhlYWRlcnMpLm5vcm1hbGl6ZSgpO2xldHtyZXNwb25zZVR5cGU6YSxvblVwbG9hZFByb2dyZXNzOmMsb25Eb3dubG9hZFByb2dyZXNzOnV9PWksbCxwLF8sdyxoO2Z1bmN0aW9uIGcoKXt3JiZ3KCksaCYmaCgpLGkuY2FuY2VsVG9rZW4mJmkuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobCksaS5zaWduYWwmJmkuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixsKX1sZXQgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKGkubWV0aG9kLnRvVXBwZXJDYXNlKCksaS51cmwsITApLGQudGltZW91dD1pLnRpbWVvdXQ7ZnVuY3Rpb24gbSgpe2lmKCFkKXJldHVybjtjb25zdCB4PUYuZnJvbSgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGQmJmQuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLE89e2RhdGE6IWF8fGE9PT0idGV4dCJ8fGE9PT0ianNvbiI/ZC5yZXNwb25zZVRleHQ6ZC5yZXNwb25zZSxzdGF0dXM6ZC5zdGF0dXMsc3RhdHVzVGV4dDpkLnN0YXR1c1RleHQsaGVhZGVyczp4LGNvbmZpZzplLHJlcXVlc3Q6ZH07WG4oZnVuY3Rpb24oQil7bihCKSxnKCl9LGZ1bmN0aW9uKEIpe3IoQiksZygpfSxPKSxkPW51bGx9Im9ubG9hZGVuZCJpbiBkP2Qub25sb2FkZW5kPW06ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXshZHx8ZC5yZWFkeVN0YXRlIT09NHx8ZC5zdGF0dXM9PT0wJiYhKGQucmVzcG9uc2VVUkwmJmQucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKT09PTApfHxzZXRUaW1lb3V0KG0pfSxkLm9uYWJvcnQ9ZnVuY3Rpb24oKXtkJiYocihuZXcgeSgiUmVxdWVzdCBhYm9ydGVkIix5LkVDT05OQUJPUlRFRCxlLGQpKSxkPW51bGwpfSxkLm9uZXJyb3I9ZnVuY3Rpb24oKXtyKG5ldyB5KCJOZXR3b3JrIEVycm9yIix5LkVSUl9ORVRXT1JLLGUsZCkpLGQ9bnVsbH0sZC5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtsZXQgQT1pLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitpLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCI7Y29uc3QgTz1pLnRyYW5zaXRpb25hbHx8Sm47aS50aW1lb3V0RXJyb3JNZXNzYWdlJiYoQT1pLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHIobmV3IHkoQSxPLmNsYXJpZnlUaW1lb3V0RXJyb3I/eS5FVElNRURPVVQ6eS5FQ09OTkFCT1JURUQsZSxkKSksZD1udWxsfSxzPT09dm9pZCAwJiZvLnNldENvbnRlbnRUeXBlKG51bGwpLCJzZXRSZXF1ZXN0SGVhZGVyImluIGQmJmYuZm9yRWFjaChvLnRvSlNPTigpLGZ1bmN0aW9uKEEsTyl7ZC5zZXRSZXF1ZXN0SGVhZGVyKE8sQSl9KSxmLmlzVW5kZWZpbmVkKGkud2l0aENyZWRlbnRpYWxzKXx8KGQud2l0aENyZWRlbnRpYWxzPSEhaS53aXRoQ3JlZGVudGlhbHMpLGEmJmEhPT0ianNvbiImJihkLnJlc3BvbnNlVHlwZT1pLnJlc3BvbnNlVHlwZSksdSYmKFtfLGhdPUJlKHUsITApLGQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLF8pKSxjJiZkLnVwbG9hZCYmKFtwLHddPUJlKGMpLGQudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixwKSxkLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJsb2FkZW5kIix3KSksKGkuY2FuY2VsVG9rZW58fGkuc2lnbmFsKSYmKGw9eD0+e2QmJihyKCF4fHx4LnR5cGU/bmV3IG9lKG51bGwsZSxkKTp4KSxkLmFib3J0KCksZD1udWxsKX0saS5jYW5jZWxUb2tlbiYmaS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobCksaS5zaWduYWwmJihpLnNpZ25hbC5hYm9ydGVkP2woKTppLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbCkpKTtjb25zdCBiPUFzKGkudXJsKTtpZihiJiZULnByb3RvY29scy5pbmRleE9mKGIpPT09LTEpe3IobmV3IHkoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrYisiOiIseS5FUlJfQkFEX1JFUVVFU1QsZSkpO3JldHVybn1kLnNlbmQoc3x8bnVsbCl9KX0sTHM9KGUsdCk9Pntjb25zdHtsZW5ndGg6bn09ZT1lP2UuZmlsdGVyKEJvb2xlYW4pOltdO2lmKHR8fG4pe2xldCByPW5ldyBBYm9ydENvbnRyb2xsZXIsaTtjb25zdCBzPWZ1bmN0aW9uKHUpe2lmKCFpKXtpPSEwLGEoKTtjb25zdCBsPXUgaW5zdGFuY2VvZiBFcnJvcj91OnRoaXMucmVhc29uO3IuYWJvcnQobCBpbnN0YW5jZW9mIHk/bDpuZXcgb2UobCBpbnN0YW5jZW9mIEVycm9yP2wubWVzc2FnZTpsKSl9fTtsZXQgbz10JiZzZXRUaW1lb3V0KCgpPT57bz1udWxsLHMobmV3IHkoYHRpbWVvdXQgJHt0fSBvZiBtcyBleGNlZWRlZGAseS5FVElNRURPVVQpKX0sdCk7Y29uc3QgYT0oKT0+e2UmJihvJiZjbGVhclRpbWVvdXQobyksbz1udWxsLGUuZm9yRWFjaCh1PT57dS51bnN1YnNjcmliZT91LnVuc3Vic2NyaWJlKHMpOnUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMpfSksZT1udWxsKX07ZS5mb3JFYWNoKHU9PnUuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHMpKTtjb25zdHtzaWduYWw6Y309cjtyZXR1cm4gYy51bnN1YnNjcmliZT0oKT0+Zi5hc2FwKGEpLGN9fSxNcz1mdW5jdGlvbiooZSx0KXtsZXQgbj1lLmJ5dGVMZW5ndGg7aWYobjx0KXt5aWVsZCBlO3JldHVybn1sZXQgcj0wLGk7Zm9yKDtyPG47KWk9cit0LHlpZWxkIGUuc2xpY2UocixpKSxyPWl9LGpzPWFzeW5jIGZ1bmN0aW9uKihlLHQpe2ZvciBhd2FpdChjb25zdCBuIG9mIGtzKGUpKXlpZWxkKk1zKG4sdCl9LGtzPWFzeW5jIGZ1bmN0aW9uKihlKXtpZihlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSl7eWllbGQqZTtyZXR1cm59Y29uc3QgdD1lLmdldFJlYWRlcigpO3RyeXtmb3IoOzspe2NvbnN0e2RvbmU6bix2YWx1ZTpyfT1hd2FpdCB0LnJlYWQoKTtpZihuKWJyZWFrO3lpZWxkIHJ9fWZpbmFsbHl7YXdhaXQgdC5jYW5jZWwoKX19LHBuPShlLHQsbixyKT0+e2NvbnN0IGk9anMoZSx0KTtsZXQgcz0wLG8sYT1jPT57b3x8KG89ITAsciYmcihjKSl9O3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe2FzeW5jIHB1bGwoYyl7dHJ5e2NvbnN0e2RvbmU6dSx2YWx1ZTpsfT1hd2FpdCBpLm5leHQoKTtpZih1KXthKCksYy5jbG9zZSgpO3JldHVybn1sZXQgcD1sLmJ5dGVMZW5ndGg7aWYobil7bGV0IF89cys9cDtuKF8pfWMuZW5xdWV1ZShuZXcgVWludDhBcnJheShsKSl9Y2F0Y2godSl7dGhyb3cgYSh1KSx1fX0sY2FuY2VsKGMpe3JldHVybiBhKGMpLGkucmV0dXJuKCl9fSx7aGlnaFdhdGVyTWFyazoyfSl9LFZlPXR5cGVvZiBmZXRjaD09ImZ1bmN0aW9uIiYmdHlwZW9mIFJlcXVlc3Q9PSJmdW5jdGlvbiImJnR5cGVvZiBSZXNwb25zZT09ImZ1bmN0aW9uIixabj1WZSYmdHlwZW9mIFJlYWRhYmxlU3RyZWFtPT0iZnVuY3Rpb24iLEJzPVZlJiYodHlwZW9mIFRleHRFbmNvZGVyPT0iZnVuY3Rpb24iPyhlPT50PT5lLmVuY29kZSh0KSkobmV3IFRleHRFbmNvZGVyKTphc3luYyBlPT5uZXcgVWludDhBcnJheShhd2FpdCBuZXcgUmVzcG9uc2UoZSkuYXJyYXlCdWZmZXIoKSkpLFFuPShlLC4uLnQpPT57dHJ5e3JldHVybiEhZSguLi50KX1jYXRjaHtyZXR1cm4hMX19LElzPVpuJiZRbigoKT0+e2xldCBlPSExO2NvbnN0IHQ9bmV3IFJlcXVlc3QoVC5vcmlnaW4se2JvZHk6bmV3IFJlYWRhYmxlU3RyZWFtLG1ldGhvZDoiUE9TVCIsZ2V0IGR1cGxleCgpe3JldHVybiBlPSEwLCJoYWxmIn19KS5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIik7cmV0dXJuIGUmJiF0fSksaG49NjQqMTAyNCxodD1abiYmUW4oKCk9PmYuaXNSZWFkYWJsZVN0cmVhbShuZXcgUmVzcG9uc2UoIiIpLmJvZHkpKSxJZT17c3RyZWFtOmh0JiYoZT0+ZS5ib2R5KX07VmUmJihlPT57WyJ0ZXh0IiwiYXJyYXlCdWZmZXIiLCJibG9iIiwiZm9ybURhdGEiLCJzdHJlYW0iXS5mb3JFYWNoKHQ9PnshSWVbdF0mJihJZVt0XT1mLmlzRnVuY3Rpb24oZVt0XSk/bj0+blt0XSgpOihuLHIpPT57dGhyb3cgbmV3IHkoYFJlc3BvbnNlIHR5cGUgJyR7dH0nIGlzIG5vdCBzdXBwb3J0ZWRgLHkuRVJSX05PVF9TVVBQT1JULHIpfSl9KX0pKG5ldyBSZXNwb25zZSk7Y29uc3QgRHM9YXN5bmMgZT0+e2lmKGU9PW51bGwpcmV0dXJuIDA7aWYoZi5pc0Jsb2IoZSkpcmV0dXJuIGUuc2l6ZTtpZihmLmlzU3BlY0NvbXBsaWFudEZvcm0oZSkpcmV0dXJuKGF3YWl0IG5ldyBSZXF1ZXN0KFQub3JpZ2luLHttZXRob2Q6IlBPU1QiLGJvZHk6ZX0pLmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7aWYoZi5pc0FycmF5QnVmZmVyVmlldyhlKXx8Zi5pc0FycmF5QnVmZmVyKGUpKXJldHVybiBlLmJ5dGVMZW5ndGg7aWYoZi5pc1VSTFNlYXJjaFBhcmFtcyhlKSYmKGU9ZSsiIiksZi5pc1N0cmluZyhlKSlyZXR1cm4oYXdhaXQgQnMoZSkpLmJ5dGVMZW5ndGh9LCRzPWFzeW5jKGUsdCk9Pntjb25zdCBuPWYudG9GaW5pdGVOdW1iZXIoZS5nZXRDb250ZW50TGVuZ3RoKCkpO3JldHVybiBuPz9Ecyh0KX0sVXM9VmUmJihhc3luYyBlPT57bGV0e3VybDp0LG1ldGhvZDpuLGRhdGE6cixzaWduYWw6aSxjYW5jZWxUb2tlbjpzLHRpbWVvdXQ6byxvbkRvd25sb2FkUHJvZ3Jlc3M6YSxvblVwbG9hZFByb2dyZXNzOmMscmVzcG9uc2VUeXBlOnUsaGVhZGVyczpsLHdpdGhDcmVkZW50aWFsczpwPSJzYW1lLW9yaWdpbiIsZmV0Y2hPcHRpb25zOl99PVluKGUpO3U9dT8odSsiIikudG9Mb3dlckNhc2UoKToidGV4dCI7bGV0IHc9THMoW2kscyYmcy50b0Fib3J0U2lnbmFsKCldLG8pLGg7Y29uc3QgZz13JiZ3LnVuc3Vic2NyaWJlJiYoKCk9Pnt3LnVuc3Vic2NyaWJlKCl9KTtsZXQgZDt0cnl7aWYoYyYmSXMmJm4hPT0iZ2V0IiYmbiE9PSJoZWFkIiYmKGQ9YXdhaXQgJHMobCxyKSkhPT0wKXtsZXQgTz1uZXcgUmVxdWVzdCh0LHttZXRob2Q6IlBPU1QiLGJvZHk6cixkdXBsZXg6ImhhbGYifSksUDtpZihmLmlzRm9ybURhdGEocikmJihQPU8uaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpKSYmbC5zZXRDb250ZW50VHlwZShQKSxPLmJvZHkpe2NvbnN0W0IsbmVdPWxuKGQsQmUoZm4oYykpKTtyPXBuKE8uYm9keSxobixCLG5lKX19Zi5pc1N0cmluZyhwKXx8KHA9cD8iaW5jbHVkZSI6Im9taXQiKTtjb25zdCBtPSJjcmVkZW50aWFscyJpbiBSZXF1ZXN0LnByb3RvdHlwZTtoPW5ldyBSZXF1ZXN0KHQsey4uLl8sc2lnbmFsOncsbWV0aG9kOm4udG9VcHBlckNhc2UoKSxoZWFkZXJzOmwubm9ybWFsaXplKCkudG9KU09OKCksYm9keTpyLGR1cGxleDoiaGFsZiIsY3JlZGVudGlhbHM6bT9wOnZvaWQgMH0pO2xldCBiPWF3YWl0IGZldGNoKGgsXyk7Y29uc3QgeD1odCYmKHU9PT0ic3RyZWFtInx8dT09PSJyZXNwb25zZSIpO2lmKGh0JiYoYXx8eCYmZykpe2NvbnN0IE89e307WyJzdGF0dXMiLCJzdGF0dXNUZXh0IiwiaGVhZGVycyJdLmZvckVhY2godmU9PntPW3ZlXT1iW3ZlXX0pO2NvbnN0IFA9Zi50b0Zpbml0ZU51bWJlcihiLmhlYWRlcnMuZ2V0KCJjb250ZW50LWxlbmd0aCIpKSxbQixuZV09YSYmbG4oUCxCZShmbihhKSwhMCkpfHxbXTtiPW5ldyBSZXNwb25zZShwbihiLmJvZHksaG4sQiwoKT0+e25lJiZuZSgpLGcmJmcoKX0pLE8pfXU9dXx8InRleHQiO2xldCBBPWF3YWl0IEllW2YuZmluZEtleShJZSx1KXx8InRleHQiXShiLGUpO3JldHVybiF4JiZnJiZnKCksYXdhaXQgbmV3IFByb21pc2UoKE8sUCk9PntYbihPLFAse2RhdGE6QSxoZWFkZXJzOkYuZnJvbShiLmhlYWRlcnMpLHN0YXR1czpiLnN0YXR1cyxzdGF0dXNUZXh0OmIuc3RhdHVzVGV4dCxjb25maWc6ZSxyZXF1ZXN0Omh9KX0pfWNhdGNoKG0pe3Rocm93IGcmJmcoKSxtJiZtLm5hbWU9PT0iVHlwZUVycm9yIiYmL0xvYWQgZmFpbGVkfGZldGNoL2kudGVzdChtLm1lc3NhZ2UpP09iamVjdC5hc3NpZ24obmV3IHkoIk5ldHdvcmsgRXJyb3IiLHkuRVJSX05FVFdPUkssZSxoKSx7Y2F1c2U6bS5jYXVzZXx8bX0pOnkuZnJvbShtLG0mJm0uY29kZSxlLGgpfX0pLF90PXtodHRwOm5zLHhocjpGcyxmZXRjaDpVc307Zi5mb3JFYWNoKF90LChlLHQpPT57aWYoZSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJuYW1lIix7dmFsdWU6dH0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiYWRhcHRlck5hbWUiLHt2YWx1ZTp0fSl9fSk7Y29uc3QgX249ZT0+YC0gJHtlfWAscXM9ZT0+Zi5pc0Z1bmN0aW9uKGUpfHxlPT09bnVsbHx8ZT09PSExLGVyPXtnZXRBZGFwdGVyOmU9PntlPWYuaXNBcnJheShlKT9lOltlXTtjb25zdHtsZW5ndGg6dH09ZTtsZXQgbixyO2NvbnN0IGk9e307Zm9yKGxldCBzPTA7czx0O3MrKyl7bj1lW3NdO2xldCBvO2lmKHI9biwhcXMobikmJihyPV90WyhvPVN0cmluZyhuKSkudG9Mb3dlckNhc2UoKV0scj09PXZvaWQgMCkpdGhyb3cgbmV3IHkoYFVua25vd24gYWRhcHRlciAnJHtvfSdgKTtpZihyKWJyZWFrO2lbb3x8IiMiK3NdPXJ9aWYoIXIpe2NvbnN0IHM9T2JqZWN0LmVudHJpZXMoaSkubWFwKChbYSxjXSk9PmBhZGFwdGVyICR7YX0gYCsoYz09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpO2xldCBvPXQ/cy5sZW5ndGg+MT9gc2luY2UgOgpgK3MubWFwKF9uKS5qb2luKGAKYCk6IiAiK19uKHNbMF0pOiJhcyBubyBhZGFwdGVyIHNwZWNpZmllZCI7dGhyb3cgbmV3IHkoIlRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgIitvLCJFUlJfTk9UX1NVUFBPUlQiKX1yZXR1cm4gcn0sYWRhcHRlcnM6X3R9O2Z1bmN0aW9uIHN0KGUpe2lmKGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLGUuc2lnbmFsJiZlLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBvZShudWxsLGUpfWZ1bmN0aW9uIG1uKGUpe3JldHVybiBzdChlKSxlLmhlYWRlcnM9Ri5mcm9tKGUuaGVhZGVycyksZS5kYXRhPWl0LmNhbGwoZSxlLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihlLm1ldGhvZCkhPT0tMSYmZS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxlci5nZXRBZGFwdGVyKGUuYWRhcHRlcnx8RWUuYWRhcHRlcikoZSkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gc3QoZSksci5kYXRhPWl0LmNhbGwoZSxlLnRyYW5zZm9ybVJlc3BvbnNlLHIpLHIuaGVhZGVycz1GLmZyb20oci5oZWFkZXJzKSxyfSxmdW5jdGlvbihyKXtyZXR1cm4gVm4ocil8fChzdChlKSxyJiZyLnJlc3BvbnNlJiYoci5yZXNwb25zZS5kYXRhPWl0LmNhbGwoZSxlLnRyYW5zZm9ybVJlc3BvbnNlLHIucmVzcG9uc2UpLHIucmVzcG9uc2UuaGVhZGVycz1GLmZyb20oci5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KHIpfSl9Y29uc3QgdHI9IjEuMTAuMCIsWGU9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChlLHQpPT57WGVbZV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09ZXx8ImEiKyh0PDE/Im4gIjoiICIpK2V9fSk7Y29uc3QgZ249e307WGUudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKHQsbixyKXtmdW5jdGlvbiBpKHMsbyl7cmV0dXJuIltBeGlvcyB2Iit0cisiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK3MrIiciK28rKHI/Ii4gIityOiIiKX1yZXR1cm4ocyxvLGEpPT57aWYodD09PSExKXRocm93IG5ldyB5KGkobywiIGhhcyBiZWVuIHJlbW92ZWQiKyhuPyIgaW4gIituOiIiKSkseS5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIG4mJiFnbltvXSYmKGduW29dPSEwLGNvbnNvbGUud2FybihpKG8sIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK24rIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksdD90KHMsbyxhKTohMH19O1hlLnNwZWxsaW5nPWZ1bmN0aW9uKHQpe3JldHVybihuLHIpPT4oY29uc29sZS53YXJuKGAke3J9IGlzIGxpa2VseSBhIG1pc3NwZWxsaW5nIG9mICR7dH1gKSwhMCl9O2Z1bmN0aW9uIEhzKGUsdCxuKXtpZih0eXBlb2YgZSE9Im9iamVjdCIpdGhyb3cgbmV3IHkoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLHkuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnN0IHI9T2JqZWN0LmtleXMoZSk7bGV0IGk9ci5sZW5ndGg7Zm9yKDtpLS0gPjA7KXtjb25zdCBzPXJbaV0sbz10W3NdO2lmKG8pe2NvbnN0IGE9ZVtzXSxjPWE9PT12b2lkIDB8fG8oYSxzLGUpO2lmKGMhPT0hMCl0aHJvdyBuZXcgeSgib3B0aW9uICIrcysiIG11c3QgYmUgIitjLHkuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKG4hPT0hMCl0aHJvdyBuZXcgeSgiVW5rbm93biBvcHRpb24gIitzLHkuRVJSX0JBRF9PUFRJT04pfX1jb25zdCBNZT17YXNzZXJ0T3B0aW9uczpIcyx2YWxpZGF0b3JzOlhlfSxJPU1lLnZhbGlkYXRvcnM7bGV0IFY9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5kZWZhdWx0cz10fHx7fSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgY24scmVzcG9uc2U6bmV3IGNufX1hc3luYyByZXF1ZXN0KHQsbil7dHJ5e3JldHVybiBhd2FpdCB0aGlzLl9yZXF1ZXN0KHQsbil9Y2F0Y2gocil7aWYociBpbnN0YW5jZW9mIEVycm9yKXtsZXQgaT17fTtFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZShpKTppPW5ldyBFcnJvcjtjb25zdCBzPWkuc3RhY2s/aS5zdGFjay5yZXBsYWNlKC9eLitcbi8sIiIpOiIiO3RyeXtyLnN0YWNrP3MmJiFTdHJpbmcoci5zdGFjaykuZW5kc1dpdGgocy5yZXBsYWNlKC9eLitcbi4rXG4vLCIiKSkmJihyLnN0YWNrKz1gCmArcyk6ci5zdGFjaz1zfWNhdGNoe319dGhyb3cgcn19X3JlcXVlc3QodCxuKXt0eXBlb2YgdD09InN0cmluZyI/KG49bnx8e30sbi51cmw9dCk6bj10fHx7fSxuPVEodGhpcy5kZWZhdWx0cyxuKTtjb25zdHt0cmFuc2l0aW9uYWw6cixwYXJhbXNTZXJpYWxpemVyOmksaGVhZGVyczpzfT1uO3IhPT12b2lkIDAmJk1lLmFzc2VydE9wdGlvbnMocix7c2lsZW50SlNPTlBhcnNpbmc6SS50cmFuc2l0aW9uYWwoSS5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpJLnRyYW5zaXRpb25hbChJLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6SS50cmFuc2l0aW9uYWwoSS5ib29sZWFuKX0sITEpLGkhPW51bGwmJihmLmlzRnVuY3Rpb24oaSk/bi5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6aX06TWUuYXNzZXJ0T3B0aW9ucyhpLHtlbmNvZGU6SS5mdW5jdGlvbixzZXJpYWxpemU6SS5mdW5jdGlvbn0sITApKSxuLmFsbG93QWJzb2x1dGVVcmxzIT09dm9pZCAwfHwodGhpcy5kZWZhdWx0cy5hbGxvd0Fic29sdXRlVXJscyE9PXZvaWQgMD9uLmFsbG93QWJzb2x1dGVVcmxzPXRoaXMuZGVmYXVsdHMuYWxsb3dBYnNvbHV0ZVVybHM6bi5hbGxvd0Fic29sdXRlVXJscz0hMCksTWUuYXNzZXJ0T3B0aW9ucyhuLHtiYXNlVXJsOkkuc3BlbGxpbmcoImJhc2VVUkwiKSx3aXRoWHNyZlRva2VuOkkuc3BlbGxpbmcoIndpdGhYU1JGVG9rZW4iKX0sITApLG4ubWV0aG9kPShuLm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPXMmJmYubWVyZ2Uocy5jb21tb24sc1tuLm1ldGhvZF0pO3MmJmYuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxoPT57ZGVsZXRlIHNbaF19KSxuLmhlYWRlcnM9Ri5jb25jYXQobyxzKTtjb25zdCBhPVtdO2xldCBjPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihnKXt0eXBlb2YgZy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZnLnJ1bldoZW4obik9PT0hMXx8KGM9YyYmZy5zeW5jaHJvbm91cyxhLnVuc2hpZnQoZy5mdWxmaWxsZWQsZy5yZWplY3RlZCkpfSk7Y29uc3QgdT1bXTt0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uKGcpe3UucHVzaChnLmZ1bGZpbGxlZCxnLnJlamVjdGVkKX0pO2xldCBsLHA9MCxfO2lmKCFjKXtjb25zdCBoPVttbi5iaW5kKHRoaXMpLHZvaWQgMF07Zm9yKGgudW5zaGlmdC5hcHBseShoLGEpLGgucHVzaC5hcHBseShoLHUpLF89aC5sZW5ndGgsbD1Qcm9taXNlLnJlc29sdmUobik7cDxfOylsPWwudGhlbihoW3ArK10saFtwKytdKTtyZXR1cm4gbH1fPWEubGVuZ3RoO2xldCB3PW47Zm9yKHA9MDtwPF87KXtjb25zdCBoPWFbcCsrXSxnPWFbcCsrXTt0cnl7dz1oKHcpfWNhdGNoKGQpe2cuY2FsbCh0aGlzLGQpO2JyZWFrfX10cnl7bD1tbi5jYWxsKHRoaXMsdyl9Y2F0Y2goaCl7cmV0dXJuIFByb21pc2UucmVqZWN0KGgpfWZvcihwPTAsXz11Lmxlbmd0aDtwPF87KWw9bC50aGVuKHVbcCsrXSx1W3ArK10pO3JldHVybiBsfWdldFVyaSh0KXt0PVEodGhpcy5kZWZhdWx0cyx0KTtjb25zdCBuPUduKHQuYmFzZVVSTCx0LnVybCx0LmFsbG93QWJzb2x1dGVVcmxzKTtyZXR1cm4gS24obix0LnBhcmFtcyx0LnBhcmFtc1NlcmlhbGl6ZXIpfX07Zi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbih0KXtWLnByb3RvdHlwZVt0XT1mdW5jdGlvbihuLHIpe3JldHVybiB0aGlzLnJlcXVlc3QoUShyfHx7fSx7bWV0aG9kOnQsdXJsOm4sZGF0YToocnx8e30pLmRhdGF9KSl9fSk7Zi5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihyKXtyZXR1cm4gZnVuY3Rpb24ocyxvLGEpe3JldHVybiB0aGlzLnJlcXVlc3QoUShhfHx7fSx7bWV0aG9kOnQsaGVhZGVyczpyP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDpzLGRhdGE6b30pKX19Vi5wcm90b3R5cGVbdF09bigpLFYucHJvdG90eXBlW3QrIkZvcm0iXT1uKCEwKX0pO2xldCB6cz1jbGFzcyBucntjb25zdHJ1Y3Rvcih0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IG47dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHMpe249c30pO2NvbnN0IHI9dGhpczt0aGlzLnByb21pc2UudGhlbihpPT57aWYoIXIuX2xpc3RlbmVycylyZXR1cm47bGV0IHM9ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO3MtLSA+MDspci5fbGlzdGVuZXJzW3NdKGkpO3IuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49aT0+e2xldCBzO2NvbnN0IG89bmV3IFByb21pc2UoYT0+e3Iuc3Vic2NyaWJlKGEpLHM9YX0pLnRoZW4oaSk7cmV0dXJuIG8uY2FuY2VsPWZ1bmN0aW9uKCl7ci51bnN1YnNjcmliZShzKX0sb30sdChmdW5jdGlvbihzLG8sYSl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgb2UocyxvLGEpLG4oci5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUodCl7aWYodGhpcy5yZWFzb24pe3QodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2godCk6dGhpcy5fbGlzdGVuZXJzPVt0XX11bnN1YnNjcmliZSh0KXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBuPXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKHQpO24hPT0tMSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZShuLDEpfXRvQWJvcnRTaWduYWwoKXtjb25zdCB0PW5ldyBBYm9ydENvbnRyb2xsZXIsbj1yPT57dC5hYm9ydChyKX07cmV0dXJuIHRoaXMuc3Vic2NyaWJlKG4pLHQuc2lnbmFsLnVuc3Vic2NyaWJlPSgpPT50aGlzLnVuc3Vic2NyaWJlKG4pLHQuc2lnbmFsfXN0YXRpYyBzb3VyY2UoKXtsZXQgdDtyZXR1cm57dG9rZW46bmV3IG5yKGZ1bmN0aW9uKGkpe3Q9aX0pLGNhbmNlbDp0fX19O2Z1bmN0aW9uIEtzKGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZS5hcHBseShudWxsLG4pfX1mdW5jdGlvbiBKcyhlKXtyZXR1cm4gZi5pc09iamVjdChlKSYmZS5pc0F4aW9zRXJyb3I9PT0hMH1jb25zdCBtdD17Q29udGludWU6MTAwLFN3aXRjaGluZ1Byb3RvY29sczoxMDEsUHJvY2Vzc2luZzoxMDIsRWFybHlIaW50czoxMDMsT2s6MjAwLENyZWF0ZWQ6MjAxLEFjY2VwdGVkOjIwMixOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246MjAzLE5vQ29udGVudDoyMDQsUmVzZXRDb250ZW50OjIwNSxQYXJ0aWFsQ29udGVudDoyMDYsTXVsdGlTdGF0dXM6MjA3LEFscmVhZHlSZXBvcnRlZDoyMDgsSW1Vc2VkOjIyNixNdWx0aXBsZUNob2ljZXM6MzAwLE1vdmVkUGVybWFuZW50bHk6MzAxLEZvdW5kOjMwMixTZWVPdGhlcjozMDMsTm90TW9kaWZpZWQ6MzA0LFVzZVByb3h5OjMwNSxVbnVzZWQ6MzA2LFRlbXBvcmFyeVJlZGlyZWN0OjMwNyxQZXJtYW5lbnRSZWRpcmVjdDozMDgsQmFkUmVxdWVzdDo0MDAsVW5hdXRob3JpemVkOjQwMSxQYXltZW50UmVxdWlyZWQ6NDAyLEZvcmJpZGRlbjo0MDMsTm90Rm91bmQ6NDA0LE1ldGhvZE5vdEFsbG93ZWQ6NDA1LE5vdEFjY2VwdGFibGU6NDA2LFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDo0MDcsUmVxdWVzdFRpbWVvdXQ6NDA4LENvbmZsaWN0OjQwOSxHb25lOjQxMCxMZW5ndGhSZXF1aXJlZDo0MTEsUHJlY29uZGl0aW9uRmFpbGVkOjQxMixQYXlsb2FkVG9vTGFyZ2U6NDEzLFVyaVRvb0xvbmc6NDE0LFVuc3VwcG9ydGVkTWVkaWFUeXBlOjQxNSxSYW5nZU5vdFNhdGlzZmlhYmxlOjQxNixFeHBlY3RhdGlvbkZhaWxlZDo0MTcsSW1BVGVhcG90OjQxOCxNaXNkaXJlY3RlZFJlcXVlc3Q6NDIxLFVucHJvY2Vzc2FibGVFbnRpdHk6NDIyLExvY2tlZDo0MjMsRmFpbGVkRGVwZW5kZW5jeTo0MjQsVG9vRWFybHk6NDI1LFVwZ3JhZGVSZXF1aXJlZDo0MjYsUHJlY29uZGl0aW9uUmVxdWlyZWQ6NDI4LFRvb01hbnlSZXF1ZXN0czo0MjksUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOjQzMSxVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczo0NTEsSW50ZXJuYWxTZXJ2ZXJFcnJvcjo1MDAsTm90SW1wbGVtZW50ZWQ6NTAxLEJhZEdhdGV3YXk6NTAyLFNlcnZpY2VVbmF2YWlsYWJsZTo1MDMsR2F0ZXdheVRpbWVvdXQ6NTA0LEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOjUwNSxWYXJpYW50QWxzb05lZ290aWF0ZXM6NTA2LEluc3VmZmljaWVudFN0b3JhZ2U6NTA3LExvb3BEZXRlY3RlZDo1MDgsTm90RXh0ZW5kZWQ6NTEwLE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOjUxMX07T2JqZWN0LmVudHJpZXMobXQpLmZvckVhY2goKFtlLHRdKT0+e210W3RdPWV9KTtmdW5jdGlvbiBycihlKXtjb25zdCB0PW5ldyBWKGUpLG49TG4oVi5wcm90b3R5cGUucmVxdWVzdCx0KTtyZXR1cm4gZi5leHRlbmQobixWLnByb3RvdHlwZSx0LHthbGxPd25LZXlzOiEwfSksZi5leHRlbmQobix0LG51bGwse2FsbE93bktleXM6ITB9KSxuLmNyZWF0ZT1mdW5jdGlvbihpKXtyZXR1cm4gcnIoUShlLGkpKX0sbn1jb25zdCB2PXJyKEVlKTt2LkF4aW9zPVY7di5DYW5jZWxlZEVycm9yPW9lO3YuQ2FuY2VsVG9rZW49enM7di5pc0NhbmNlbD1Wbjt2LlZFUlNJT049dHI7di50b0Zvcm1EYXRhPVdlO3YuQXhpb3NFcnJvcj15O3YuQ2FuY2VsPXYuQ2FuY2VsZWRFcnJvcjt2LmFsbD1mdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5hbGwodCl9O3Yuc3ByZWFkPUtzO3YuaXNBeGlvc0Vycm9yPUpzO3YubWVyZ2VDb25maWc9UTt2LkF4aW9zSGVhZGVycz1GO3YuZm9ybVRvSlNPTj1lPT5XbihmLmlzSFRNTEZvcm0oZSk/bmV3IEZvcm1EYXRhKGUpOmUpO3YuZ2V0QWRhcHRlcj1lci5nZXRBZGFwdGVyO3YuSHR0cFN0YXR1c0NvZGU9bXQ7di5kZWZhdWx0PXY7Y29uc3R7QXhpb3M6c2MsQXhpb3NFcnJvcjpvYyxDYW5jZWxlZEVycm9yOmFjLGlzQ2FuY2VsOmNjLENhbmNlbFRva2VuOnVjLFZFUlNJT046bGMsYWxsOmZjLENhbmNlbDpkYyxpc0F4aW9zRXJyb3I6cGMsc3ByZWFkOmhjLHRvRm9ybURhdGE6X2MsQXhpb3NIZWFkZXJzOm1jLEh0dHBTdGF0dXNDb2RlOmdjLGZvcm1Ub0pTT046eWMsZ2V0QWRhcHRlcjpiYyxtZXJnZUNvbmZpZzp3Y309djt3aW5kb3cuYXhpb3M9djt3aW5kb3cuYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiO2NvbnN0IHluPWRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJjc3JmLXRva2VuIl0nKTt5bj93aW5kb3cuYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bIlgtQ1NSRi1UT0tFTiJdPXluLmNvbnRlbnQ6Y29uc29sZS5lcnJvcigiQ1NSRiB0b2tlbiBub3QgZm91bmQ6IGh0dHBzOi8vbGFyYXZlbC5jb20vZG9jcy9jc3JmI2NzcmYteC1jc3JmLXRva2VuIik7dmFyIGd0PSExLHl0PSExLFg9W10sYnQ9LTE7ZnVuY3Rpb24gV3MoZSl7VnMoZSl9ZnVuY3Rpb24gVnMoZSl7WC5pbmNsdWRlcyhlKXx8WC5wdXNoKGUpLEdzKCl9ZnVuY3Rpb24gWHMoZSl7bGV0IHQ9WC5pbmRleE9mKGUpO3QhPT0tMSYmdD5idCYmWC5zcGxpY2UodCwxKX1mdW5jdGlvbiBHcygpeyF5dCYmIWd0JiYoZ3Q9ITAscXVldWVNaWNyb3Rhc2soWXMpKX1mdW5jdGlvbiBZcygpe2d0PSExLHl0PSEwO2ZvcihsZXQgZT0wO2U8WC5sZW5ndGg7ZSsrKVhbZV0oKSxidD1lO1gubGVuZ3RoPTAsYnQ9LTEseXQ9ITF9dmFyIGFlLHRlLGNlLGlyLHd0PSEwO2Z1bmN0aW9uIFpzKGUpe3d0PSExLGUoKSx3dD0hMH1mdW5jdGlvbiBRcyhlKXthZT1lLnJlYWN0aXZlLGNlPWUucmVsZWFzZSx0ZT10PT5lLmVmZmVjdCh0LHtzY2hlZHVsZXI6bj0+e3d0P1dzKG4pOm4oKX19KSxpcj1lLnJhd31mdW5jdGlvbiBibihlKXt0ZT1lfWZ1bmN0aW9uIGVvKGUpe2xldCB0PSgpPT57fTtyZXR1cm5bcj0+e2xldCBpPXRlKHIpO3JldHVybiBlLl94X2VmZmVjdHN8fChlLl94X2VmZmVjdHM9bmV3IFNldCxlLl94X3J1bkVmZmVjdHM9KCk9PntlLl94X2VmZmVjdHMuZm9yRWFjaChzPT5zKCkpfSksZS5feF9lZmZlY3RzLmFkZChpKSx0PSgpPT57aSE9PXZvaWQgMCYmKGUuX3hfZWZmZWN0cy5kZWxldGUoaSksY2UoaSkpfSxpfSwoKT0+e3QoKX1dfWZ1bmN0aW9uIHNyKGUsdCl7bGV0IG49ITAscixpPXRlKCgpPT57bGV0IHM9ZSgpO0pTT04uc3RyaW5naWZ5KHMpLG4/cj1zOnF1ZXVlTWljcm90YXNrKCgpPT57dChzLHIpLHI9c30pLG49ITF9KTtyZXR1cm4oKT0+Y2UoaSl9dmFyIG9yPVtdLGFyPVtdLGNyPVtdO2Z1bmN0aW9uIHRvKGUpe2NyLnB1c2goZSl9ZnVuY3Rpb24gQnQoZSx0KXt0eXBlb2YgdD09ImZ1bmN0aW9uIj8oZS5feF9jbGVhbnVwc3x8KGUuX3hfY2xlYW51cHM9W10pLGUuX3hfY2xlYW51cHMucHVzaCh0KSk6KHQ9ZSxhci5wdXNoKHQpKX1mdW5jdGlvbiB1cihlKXtvci5wdXNoKGUpfWZ1bmN0aW9uIGxyKGUsdCxuKXtlLl94X2F0dHJpYnV0ZUNsZWFudXBzfHwoZS5feF9hdHRyaWJ1dGVDbGVhbnVwcz17fSksZS5feF9hdHRyaWJ1dGVDbGVhbnVwc1t0XXx8KGUuX3hfYXR0cmlidXRlQ2xlYW51cHNbdF09W10pLGUuX3hfYXR0cmlidXRlQ2xlYW51cHNbdF0ucHVzaChuKX1mdW5jdGlvbiBmcihlLHQpe2UuX3hfYXR0cmlidXRlQ2xlYW51cHMmJk9iamVjdC5lbnRyaWVzKGUuX3hfYXR0cmlidXRlQ2xlYW51cHMpLmZvckVhY2goKFtuLHJdKT0+eyh0PT09dm9pZCAwfHx0LmluY2x1ZGVzKG4pKSYmKHIuZm9yRWFjaChpPT5pKCkpLGRlbGV0ZSBlLl94X2F0dHJpYnV0ZUNsZWFudXBzW25dKX0pfWZ1bmN0aW9uIG5vKGUpe3ZhciB0LG47Zm9yKCh0PWUuX3hfZWZmZWN0cyk9PW51bGx8fHQuZm9yRWFjaChYcyk7KG49ZS5feF9jbGVhbnVwcykhPW51bGwmJm4ubGVuZ3RoOyllLl94X2NsZWFudXBzLnBvcCgpKCl9dmFyIEl0PW5ldyBNdXRhdGlvbk9ic2VydmVyKHF0KSxEdD0hMTtmdW5jdGlvbiAkdCgpe0l0Lm9ic2VydmUoZG9jdW1lbnQse3N1YnRyZWU6ITAsY2hpbGRMaXN0OiEwLGF0dHJpYnV0ZXM6ITAsYXR0cmlidXRlT2xkVmFsdWU6ITB9KSxEdD0hMH1mdW5jdGlvbiBkcigpe3JvKCksSXQuZGlzY29ubmVjdCgpLER0PSExfXZhciBwZT1bXTtmdW5jdGlvbiBybygpe2xldCBlPUl0LnRha2VSZWNvcmRzKCk7cGUucHVzaCgoKT0+ZS5sZW5ndGg+MCYmcXQoZSkpO2xldCB0PXBlLmxlbmd0aDtxdWV1ZU1pY3JvdGFzaygoKT0+e2lmKHBlLmxlbmd0aD09PXQpZm9yKDtwZS5sZW5ndGg+MDspcGUuc2hpZnQoKSgpfSl9ZnVuY3Rpb24gUyhlKXtpZighRHQpcmV0dXJuIGUoKTtkcigpO2xldCB0PWUoKTtyZXR1cm4gJHQoKSx0fXZhciBVdD0hMSxEZT1bXTtmdW5jdGlvbiBpbygpe1V0PSEwfWZ1bmN0aW9uIHNvKCl7VXQ9ITEscXQoRGUpLERlPVtdfWZ1bmN0aW9uIHF0KGUpe2lmKFV0KXtEZT1EZS5jb25jYXQoZSk7cmV0dXJufWxldCB0PVtdLG49bmV3IFNldCxyPW5ldyBNYXAsaT1uZXcgTWFwO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKWlmKCFlW3NdLnRhcmdldC5feF9pZ25vcmVNdXRhdGlvbk9ic2VydmVyJiYoZVtzXS50eXBlPT09ImNoaWxkTGlzdCImJihlW3NdLnJlbW92ZWROb2Rlcy5mb3JFYWNoKG89PntvLm5vZGVUeXBlPT09MSYmby5feF9tYXJrZXImJm4uYWRkKG8pfSksZVtzXS5hZGRlZE5vZGVzLmZvckVhY2gobz0+e2lmKG8ubm9kZVR5cGU9PT0xKXtpZihuLmhhcyhvKSl7bi5kZWxldGUobyk7cmV0dXJufW8uX3hfbWFya2VyfHx0LnB1c2gobyl9fSkpLGVbc10udHlwZT09PSJhdHRyaWJ1dGVzIikpe2xldCBvPWVbc10udGFyZ2V0LGE9ZVtzXS5hdHRyaWJ1dGVOYW1lLGM9ZVtzXS5vbGRWYWx1ZSx1PSgpPT57ci5oYXMobyl8fHIuc2V0KG8sW10pLHIuZ2V0KG8pLnB1c2goe25hbWU6YSx2YWx1ZTpvLmdldEF0dHJpYnV0ZShhKX0pfSxsPSgpPT57aS5oYXMobyl8fGkuc2V0KG8sW10pLGkuZ2V0KG8pLnB1c2goYSl9O28uaGFzQXR0cmlidXRlKGEpJiZjPT09bnVsbD91KCk6by5oYXNBdHRyaWJ1dGUoYSk/KGwoKSx1KCkpOmwoKX1pLmZvckVhY2goKHMsbyk9PntmcihvLHMpfSksci5mb3JFYWNoKChzLG8pPT57b3IuZm9yRWFjaChhPT5hKG8scykpfSk7Zm9yKGxldCBzIG9mIG4pdC5zb21lKG89Pm8uY29udGFpbnMocykpfHxhci5mb3JFYWNoKG89Pm8ocykpO2ZvcihsZXQgcyBvZiB0KXMuaXNDb25uZWN0ZWQmJmNyLmZvckVhY2gobz0+byhzKSk7dD1udWxsLG49bnVsbCxyPW51bGwsaT1udWxsfWZ1bmN0aW9uIHByKGUpe3JldHVybiBBZShyZShlKSl9ZnVuY3Rpb24gU2UoZSx0LG4pe3JldHVybiBlLl94X2RhdGFTdGFjaz1bdCwuLi5yZShufHxlKV0sKCk9PntlLl94X2RhdGFTdGFjaz1lLl94X2RhdGFTdGFjay5maWx0ZXIocj0+ciE9PXQpfX1mdW5jdGlvbiByZShlKXtyZXR1cm4gZS5feF9kYXRhU3RhY2s/ZS5feF9kYXRhU3RhY2s6dHlwZW9mIFNoYWRvd1Jvb3Q9PSJmdW5jdGlvbiImJmUgaW5zdGFuY2VvZiBTaGFkb3dSb290P3JlKGUuaG9zdCk6ZS5wYXJlbnROb2RlP3JlKGUucGFyZW50Tm9kZSk6W119ZnVuY3Rpb24gQWUoZSl7cmV0dXJuIG5ldyBQcm94eSh7b2JqZWN0czplfSxvbyl9dmFyIG9vPXtvd25LZXlzKHtvYmplY3RzOmV9KXtyZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGUuZmxhdE1hcCh0PT5PYmplY3Qua2V5cyh0KSkpKX0saGFzKHtvYmplY3RzOmV9LHQpe3JldHVybiB0PT1TeW1ib2wudW5zY29wYWJsZXM/ITE6ZS5zb21lKG49Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpfHxSZWZsZWN0LmhhcyhuLHQpKX0sZ2V0KHtvYmplY3RzOmV9LHQsbil7cmV0dXJuIHQ9PSJ0b0pTT04iP2FvOlJlZmxlY3QuZ2V0KGUuZmluZChyPT5SZWZsZWN0LmhhcyhyLHQpKXx8e30sdCxuKX0sc2V0KHtvYmplY3RzOmV9LHQsbixyKXtjb25zdCBpPWUuZmluZChvPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobyx0KSl8fGVbZS5sZW5ndGgtMV0scz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksdCk7cmV0dXJuIHMhPW51bGwmJnMuc2V0JiYocyE9bnVsbCYmcy5nZXQpP3Muc2V0LmNhbGwocixuKXx8ITA6UmVmbGVjdC5zZXQoaSx0LG4pfX07ZnVuY3Rpb24gYW8oKXtyZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRoaXMpLnJlZHVjZSgodCxuKT0+KHRbbl09UmVmbGVjdC5nZXQodGhpcyxuKSx0KSx7fSl9ZnVuY3Rpb24gaHIoZSl7bGV0IHQ9cj0+dHlwZW9mIHI9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShyKSYmciE9PW51bGwsbj0ocixpPSIiKT0+e09iamVjdC5lbnRyaWVzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKS5mb3JFYWNoKChbcyx7dmFsdWU6byxlbnVtZXJhYmxlOmF9XSk9PntpZihhPT09ITF8fG89PT12b2lkIDB8fHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwmJm8uX192X3NraXApcmV0dXJuO2xldCBjPWk9PT0iIj9zOmAke2l9LiR7c31gO3R5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwmJm8uX3hfaW50ZXJjZXB0b3I/cltzXT1vLmluaXRpYWxpemUoZSxjLHMpOnQobykmJm8hPT1yJiYhKG8gaW5zdGFuY2VvZiBFbGVtZW50KSYmbihvLGMpfSl9O3JldHVybiBuKGUpfWZ1bmN0aW9uIF9yKGUsdD0oKT0+e30pe2xldCBuPXtpbml0aWFsVmFsdWU6dm9pZCAwLF94X2ludGVyY2VwdG9yOiEwLGluaXRpYWxpemUocixpLHMpe3JldHVybiBlKHRoaXMuaW5pdGlhbFZhbHVlLCgpPT5jbyhyLGkpLG89Pnh0KHIsaSxvKSxpLHMpfX07cmV0dXJuIHQobikscj0+e2lmKHR5cGVvZiByPT0ib2JqZWN0IiYmciE9PW51bGwmJnIuX3hfaW50ZXJjZXB0b3Ipe2xldCBpPW4uaW5pdGlhbGl6ZS5iaW5kKG4pO24uaW5pdGlhbGl6ZT0ocyxvLGEpPT57bGV0IGM9ci5pbml0aWFsaXplKHMsbyxhKTtyZXR1cm4gbi5pbml0aWFsVmFsdWU9YyxpKHMsbyxhKX19ZWxzZSBuLmluaXRpYWxWYWx1ZT1yO3JldHVybiBufX1mdW5jdGlvbiBjbyhlLHQpe3JldHVybiB0LnNwbGl0KCIuIikucmVkdWNlKChuLHIpPT5uW3JdLGUpfWZ1bmN0aW9uIHh0KGUsdCxuKXtpZih0eXBlb2YgdD09InN0cmluZyImJih0PXQuc3BsaXQoIi4iKSksdC5sZW5ndGg9PT0xKWVbdFswXV09bjtlbHNle2lmKHQubGVuZ3RoPT09MCl0aHJvdyBlcnJvcjtyZXR1cm4gZVt0WzBdXXx8KGVbdFswXV09e30pLHh0KGVbdFswXV0sdC5zbGljZSgxKSxuKX19dmFyIG1yPXt9O2Z1bmN0aW9uIGsoZSx0KXttcltlXT10fWZ1bmN0aW9uIEV0KGUsdCl7bGV0IG49dW8odCk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKG1yKS5mb3JFYWNoKChbcixpXSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgJCR7cn1gLHtnZXQoKXtyZXR1cm4gaSh0LG4pfSxlbnVtZXJhYmxlOiExfSl9KSxlfWZ1bmN0aW9uIHVvKGUpe2xldFt0LG5dPUVyKGUpLHI9e2ludGVyY2VwdG9yOl9yLC4uLnR9O3JldHVybiBCdChlLG4pLHJ9ZnVuY3Rpb24gbG8oZSx0LG4sLi4ucil7dHJ5e3JldHVybiBuKC4uLnIpfWNhdGNoKGkpe3dlKGksZSx0KX19ZnVuY3Rpb24gd2UoZSx0LG49dm9pZCAwKXtlPU9iamVjdC5hc3NpZ24oZT8/e21lc3NhZ2U6Ik5vIGVycm9yIG1lc3NhZ2UgZ2l2ZW4uIn0se2VsOnQsZXhwcmVzc2lvbjpufSksY29uc29sZS53YXJuKGBBbHBpbmUgRXhwcmVzc2lvbiBFcnJvcjogJHtlLm1lc3NhZ2V9Cgoke24/J0V4cHJlc3Npb246ICInK24rYCIKCmA6IiJ9YCx0KSxzZXRUaW1lb3V0KCgpPT57dGhyb3cgZX0sMCl9dmFyIGplPSEwO2Z1bmN0aW9uIGdyKGUpe2xldCB0PWplO2plPSExO2xldCBuPWUoKTtyZXR1cm4gamU9dCxufWZ1bmN0aW9uIEcoZSx0LG49e30pe2xldCByO3JldHVybiBDKGUsdCkoaT0+cj1pLG4pLHJ9ZnVuY3Rpb24gQyguLi5lKXtyZXR1cm4geXIoLi4uZSl9dmFyIHlyPWJyO2Z1bmN0aW9uIGZvKGUpe3lyPWV9ZnVuY3Rpb24gYnIoZSx0KXtsZXQgbj17fTtFdChuLGUpO2xldCByPVtuLC4uLnJlKGUpXSxpPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3BvKHIsdCk6X28ocix0LGUpO3JldHVybiBsby5iaW5kKG51bGwsZSx0LGkpfWZ1bmN0aW9uIHBvKGUsdCl7cmV0dXJuKG49KCk9Pnt9LHtzY29wZTpyPXt9LHBhcmFtczppPVtdfT17fSk9PntsZXQgcz10LmFwcGx5KEFlKFtyLC4uLmVdKSxpKTskZShuLHMpfX12YXIgb3Q9e307ZnVuY3Rpb24gaG8oZSx0KXtpZihvdFtlXSlyZXR1cm4gb3RbZV07bGV0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jIGZ1bmN0aW9uKCl7fSkuY29uc3RydWN0b3Iscj0vXltcblxzXSppZi4qXCguKlwpLy50ZXN0KGUudHJpbSgpKXx8L14obGV0fGNvbnN0KVxzLy50ZXN0KGUudHJpbSgpKT9gKGFzeW5jKCk9PnsgJHtlfSB9KSgpYDplLHM9KCgpPT57dHJ5e2xldCBvPW5ldyBuKFsiX19zZWxmIiwic2NvcGUiXSxgd2l0aCAoc2NvcGUpIHsgX19zZWxmLnJlc3VsdCA9ICR7cn0gfTsgX19zZWxmLmZpbmlzaGVkID0gdHJ1ZTsgcmV0dXJuIF9fc2VsZi5yZXN1bHQ7YCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJuYW1lIix7dmFsdWU6YFtBbHBpbmVdICR7ZX1gfSksb31jYXRjaChvKXtyZXR1cm4gd2Uobyx0LGUpLFByb21pc2UucmVzb2x2ZSgpfX0pKCk7cmV0dXJuIG90W2VdPXMsc31mdW5jdGlvbiBfbyhlLHQsbil7bGV0IHI9aG8odCxuKTtyZXR1cm4oaT0oKT0+e30se3Njb3BlOnM9e30scGFyYW1zOm89W119PXt9KT0+e3IucmVzdWx0PXZvaWQgMCxyLmZpbmlzaGVkPSExO2xldCBhPUFlKFtzLC4uLmVdKTtpZih0eXBlb2Ygcj09ImZ1bmN0aW9uIil7bGV0IGM9cihyLGEpLmNhdGNoKHU9PndlKHUsbix0KSk7ci5maW5pc2hlZD8oJGUoaSxyLnJlc3VsdCxhLG8sbiksci5yZXN1bHQ9dm9pZCAwKTpjLnRoZW4odT0+eyRlKGksdSxhLG8sbil9KS5jYXRjaCh1PT53ZSh1LG4sdCkpLmZpbmFsbHkoKCk9PnIucmVzdWx0PXZvaWQgMCl9fX1mdW5jdGlvbiAkZShlLHQsbixyLGkpe2lmKGplJiZ0eXBlb2YgdD09ImZ1bmN0aW9uIil7bGV0IHM9dC5hcHBseShuLHIpO3MgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihvPT4kZShlLG8sbixyKSkuY2F0Y2gobz0+d2UobyxpLHQpKTplKHMpfWVsc2UgdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IGluc3RhbmNlb2YgUHJvbWlzZT90LnRoZW4ocz0+ZShzKSk6ZSh0KX12YXIgSHQ9IngtIjtmdW5jdGlvbiB1ZShlPSIiKXtyZXR1cm4gSHQrZX1mdW5jdGlvbiBtbyhlKXtIdD1lfXZhciBVZT17fTtmdW5jdGlvbiBSKGUsdCl7cmV0dXJuIFVlW2VdPXQse2JlZm9yZShuKXtpZighVWVbbl0pe2NvbnNvbGUud2FybihTdHJpbmcucmF3YENhbm5vdCBmaW5kIGRpcmVjdGl2ZSBcYCR7bn1cYC4gXGAke2V9XGAgd2lsbCB1c2UgdGhlIGRlZmF1bHQgb3JkZXIgb2YgZXhlY3V0aW9uYCk7cmV0dXJufWNvbnN0IHI9Vy5pbmRleE9mKG4pO1cuc3BsaWNlKHI+PTA/cjpXLmluZGV4T2YoIkRFRkFVTFQiKSwwLGUpfX19ZnVuY3Rpb24gZ28oZSl7cmV0dXJuIE9iamVjdC5rZXlzKFVlKS5pbmNsdWRlcyhlKX1mdW5jdGlvbiB6dChlLHQsbil7aWYodD1BcnJheS5mcm9tKHQpLGUuX3hfdmlydHVhbERpcmVjdGl2ZXMpe2xldCBzPU9iamVjdC5lbnRyaWVzKGUuX3hfdmlydHVhbERpcmVjdGl2ZXMpLm1hcCgoW2EsY10pPT4oe25hbWU6YSx2YWx1ZTpjfSkpLG89d3Iocyk7cz1zLm1hcChhPT5vLmZpbmQoYz0+Yy5uYW1lPT09YS5uYW1lKT97bmFtZTpgeC1iaW5kOiR7YS5uYW1lfWAsdmFsdWU6YCIke2EudmFsdWV9ImB9OmEpLHQ9dC5jb25jYXQocyl9bGV0IHI9e307cmV0dXJuIHQubWFwKE9yKChzLG8pPT5yW3NdPW8pKS5maWx0ZXIoUnIpLm1hcCh3byhyLG4pKS5zb3J0KHhvKS5tYXAocz0+Ym8oZSxzKSl9ZnVuY3Rpb24gd3IoZSl7cmV0dXJuIEFycmF5LmZyb20oZSkubWFwKE9yKCkpLmZpbHRlcih0PT4hUnIodCkpfXZhciBTdD0hMSxtZT1uZXcgTWFwLHhyPVN5bWJvbCgpO2Z1bmN0aW9uIHlvKGUpe1N0PSEwO2xldCB0PVN5bWJvbCgpO3hyPXQsbWUuc2V0KHQsW10pO2xldCBuPSgpPT57Zm9yKDttZS5nZXQodCkubGVuZ3RoOyltZS5nZXQodCkuc2hpZnQoKSgpO21lLmRlbGV0ZSh0KX0scj0oKT0+e1N0PSExLG4oKX07ZShuKSxyKCl9ZnVuY3Rpb24gRXIoZSl7bGV0IHQ9W10sbj1hPT50LnB1c2goYSksW3IsaV09ZW8oZSk7cmV0dXJuIHQucHVzaChpKSxbe0FscGluZTpPZSxlZmZlY3Q6cixjbGVhbnVwOm4sZXZhbHVhdGVMYXRlcjpDLmJpbmQoQyxlKSxldmFsdWF0ZTpHLmJpbmQoRyxlKX0sKCk9PnQuZm9yRWFjaChhPT5hKCkpXX1mdW5jdGlvbiBibyhlLHQpe2xldCBuPSgpPT57fSxyPVVlW3QudHlwZV18fG4sW2ksc109RXIoZSk7bHIoZSx0Lm9yaWdpbmFsLHMpO2xldCBvPSgpPT57ZS5feF9pZ25vcmV8fGUuX3hfaWdub3JlU2VsZnx8KHIuaW5saW5lJiZyLmlubGluZShlLHQsaSkscj1yLmJpbmQocixlLHQsaSksU3Q/bWUuZ2V0KHhyKS5wdXNoKHIpOnIoKSl9O3JldHVybiBvLnJ1bkNsZWFudXBzPXMsb312YXIgU3I9KGUsdCk9Pih7bmFtZTpuLHZhbHVlOnJ9KT0+KG4uc3RhcnRzV2l0aChlKSYmKG49bi5yZXBsYWNlKGUsdCkpLHtuYW1lOm4sdmFsdWU6cn0pLEFyPWU9PmU7ZnVuY3Rpb24gT3IoZT0oKT0+e30pe3JldHVybih7bmFtZTp0LHZhbHVlOm59KT0+e2xldHtuYW1lOnIsdmFsdWU6aX09dnIucmVkdWNlKChzLG8pPT5vKHMpLHtuYW1lOnQsdmFsdWU6bn0pO3JldHVybiByIT09dCYmZShyLHQpLHtuYW1lOnIsdmFsdWU6aX19fXZhciB2cj1bXTtmdW5jdGlvbiBLdChlKXt2ci5wdXNoKGUpfWZ1bmN0aW9uIFJyKHtuYW1lOmV9KXtyZXR1cm4gVHIoKS50ZXN0KGUpfXZhciBUcj0oKT0+bmV3IFJlZ0V4cChgXiR7SHR9KFteOl4uXSspXFxiYCk7ZnVuY3Rpb24gd28oZSx0KXtyZXR1cm4oe25hbWU6bix2YWx1ZTpyfSk9PntsZXQgaT1uLm1hdGNoKFRyKCkpLHM9bi5tYXRjaCgvOihbYS16QS1aMC05XC1fOl0rKS8pLG89bi5tYXRjaCgvXC5bXi5cXV0rKD89W15cXV0qJCkvZyl8fFtdLGE9dHx8ZVtuXXx8bjtyZXR1cm57dHlwZTppP2lbMV06bnVsbCx2YWx1ZTpzP3NbMV06bnVsbCxtb2RpZmllcnM6by5tYXAoYz0+Yy5yZXBsYWNlKCIuIiwiIikpLGV4cHJlc3Npb246cixvcmlnaW5hbDphfX19dmFyIEF0PSJERUZBVUxUIixXPVsiaWdub3JlIiwicmVmIiwiZGF0YSIsImlkIiwiYW5jaG9yIiwiYmluZCIsImluaXQiLCJmb3IiLCJtb2RlbCIsIm1vZGVsYWJsZSIsInRyYW5zaXRpb24iLCJzaG93IiwiaWYiLEF0LCJ0ZWxlcG9ydCJdO2Z1bmN0aW9uIHhvKGUsdCl7bGV0IG49Vy5pbmRleE9mKGUudHlwZSk9PT0tMT9BdDplLnR5cGUscj1XLmluZGV4T2YodC50eXBlKT09PS0xP0F0OnQudHlwZTtyZXR1cm4gVy5pbmRleE9mKG4pLVcuaW5kZXhPZihyKX1mdW5jdGlvbiBnZShlLHQsbj17fSl7ZS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCh0LHtkZXRhaWw6bixidWJibGVzOiEwLGNvbXBvc2VkOiEwLGNhbmNlbGFibGU6ITB9KSl9ZnVuY3Rpb24gZWUoZSx0KXtpZih0eXBlb2YgU2hhZG93Um9vdD09ImZ1bmN0aW9uIiYmZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Qpe0FycmF5LmZyb20oZS5jaGlsZHJlbikuZm9yRWFjaChpPT5lZShpLHQpKTtyZXR1cm59bGV0IG49ITE7aWYodChlLCgpPT5uPSEwKSxuKXJldHVybjtsZXQgcj1lLmZpcnN0RWxlbWVudENoaWxkO2Zvcig7cjspZWUocix0KSxyPXIubmV4dEVsZW1lbnRTaWJsaW5nfWZ1bmN0aW9uIEwoZSwuLi50KXtjb25zb2xlLndhcm4oYEFscGluZSBXYXJuaW5nOiAke2V9YCwuLi50KX12YXIgd249ITE7ZnVuY3Rpb24gRW8oKXt3biYmTCgiQWxwaW5lIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgb24gdGhpcyBwYWdlLiBDYWxsaW5nIEFscGluZS5zdGFydCgpIG1vcmUgdGhhbiBvbmNlIGNhbiBjYXVzZSBwcm9ibGVtcy4iKSx3bj0hMCxkb2N1bWVudC5ib2R5fHxMKCJVbmFibGUgdG8gaW5pdGlhbGl6ZS4gVHJ5aW5nIHRvIGxvYWQgQWxwaW5lIGJlZm9yZSBgPGJvZHk+YCBpcyBhdmFpbGFibGUuIERpZCB5b3UgZm9yZ2V0IHRvIGFkZCBgZGVmZXJgIGluIEFscGluZSdzIGA8c2NyaXB0PmAgdGFnPyIpLGdlKGRvY3VtZW50LCJhbHBpbmU6aW5pdCIpLGdlKGRvY3VtZW50LCJhbHBpbmU6aW5pdGlhbGl6aW5nIiksJHQoKSx0byh0PT4kKHQsZWUpKSxCdCh0PT5mZSh0KSksdXIoKHQsbik9Pnt6dCh0LG4pLmZvckVhY2gocj0+cigpKX0pO2xldCBlPXQ9PiFHZSh0LnBhcmVudEVsZW1lbnQsITApO0FycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChOcigpLmpvaW4oIiwiKSkpLmZpbHRlcihlKS5mb3JFYWNoKHQ9PnskKHQpfSksZ2UoZG9jdW1lbnQsImFscGluZTppbml0aWFsaXplZCIpLHNldFRpbWVvdXQoKCk9Pnt2bygpfSl9dmFyIEp0PVtdLENyPVtdO2Z1bmN0aW9uIFByKCl7cmV0dXJuIEp0Lm1hcChlPT5lKCkpfWZ1bmN0aW9uIE5yKCl7cmV0dXJuIEp0LmNvbmNhdChDcikubWFwKGU9PmUoKSl9ZnVuY3Rpb24gRnIoZSl7SnQucHVzaChlKX1mdW5jdGlvbiBMcihlKXtDci5wdXNoKGUpfWZ1bmN0aW9uIEdlKGUsdD0hMSl7cmV0dXJuIGxlKGUsbj0+e2lmKCh0P05yKCk6UHIoKSkuc29tZShpPT5uLm1hdGNoZXMoaSkpKXJldHVybiEwfSl9ZnVuY3Rpb24gbGUoZSx0KXtpZihlKXtpZih0KGUpKXJldHVybiBlO2lmKGUuX3hfdGVsZXBvcnRCYWNrJiYoZT1lLl94X3RlbGVwb3J0QmFjayksISFlLnBhcmVudEVsZW1lbnQpcmV0dXJuIGxlKGUucGFyZW50RWxlbWVudCx0KX19ZnVuY3Rpb24gU28oZSl7cmV0dXJuIFByKCkuc29tZSh0PT5lLm1hdGNoZXModCkpfXZhciBNcj1bXTtmdW5jdGlvbiBBbyhlKXtNci5wdXNoKGUpfXZhciBPbz0xO2Z1bmN0aW9uICQoZSx0PWVlLG49KCk9Pnt9KXtsZShlLHI9PnIuX3hfaWdub3JlKXx8eW8oKCk9Pnt0KGUsKHIsaSk9PntyLl94X21hcmtlcnx8KG4ocixpKSxNci5mb3JFYWNoKHM9PnMocixpKSksenQocixyLmF0dHJpYnV0ZXMpLmZvckVhY2gocz0+cygpKSxyLl94X2lnbm9yZXx8KHIuX3hfbWFya2VyPU9vKyspLHIuX3hfaWdub3JlJiZpKCkpfSl9KX1mdW5jdGlvbiBmZShlLHQ9ZWUpe3QoZSxuPT57bm8obiksZnIobiksZGVsZXRlIG4uX3hfbWFya2VyfSl9ZnVuY3Rpb24gdm8oKXtbWyJ1aSIsImRpYWxvZyIsWyJbeC1kaWFsb2ddLCBbeC1wb3BvdmVyXSJdXSxbImFuY2hvciIsImFuY2hvciIsWyJbeC1hbmNob3JdIl1dLFsic29ydCIsInNvcnQiLFsiW3gtc29ydF0iXV1dLmZvckVhY2goKFt0LG4scl0pPT57Z28obil8fHIuc29tZShpPT57aWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpKSlyZXR1cm4gTChgZm91bmQgIiR7aX0iLCBidXQgbWlzc2luZyAke3R9IHBsdWdpbmApLCEwfSl9KX12YXIgT3Q9W10sV3Q9ITE7ZnVuY3Rpb24gVnQoZT0oKT0+e30pe3JldHVybiBxdWV1ZU1pY3JvdGFzaygoKT0+e1d0fHxzZXRUaW1lb3V0KCgpPT57dnQoKX0pfSksbmV3IFByb21pc2UodD0+e090LnB1c2goKCk9PntlKCksdCgpfSl9KX1mdW5jdGlvbiB2dCgpe2ZvcihXdD0hMTtPdC5sZW5ndGg7KU90LnNoaWZ0KCkoKX1mdW5jdGlvbiBSbygpe1d0PSEwfWZ1bmN0aW9uIFh0KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/eG4oZSx0LmpvaW4oIiAiKSk6dHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbD9UbyhlLHQpOnR5cGVvZiB0PT0iZnVuY3Rpb24iP1h0KGUsdCgpKTp4bihlLHQpfWZ1bmN0aW9uIHhuKGUsdCl7bGV0IG49aT0+aS5zcGxpdCgiICIpLmZpbHRlcihzPT4hZS5jbGFzc0xpc3QuY29udGFpbnMocykpLmZpbHRlcihCb29sZWFuKSxyPWk9PihlLmNsYXNzTGlzdC5hZGQoLi4uaSksKCk9PntlLmNsYXNzTGlzdC5yZW1vdmUoLi4uaSl9KTtyZXR1cm4gdD10PT09ITA/dD0iIjp0fHwiIixyKG4odCkpfWZ1bmN0aW9uIFRvKGUsdCl7bGV0IG49YT0+YS5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKSxyPU9iamVjdC5lbnRyaWVzKHQpLmZsYXRNYXAoKFthLGNdKT0+Yz9uKGEpOiExKS5maWx0ZXIoQm9vbGVhbiksaT1PYmplY3QuZW50cmllcyh0KS5mbGF0TWFwKChbYSxjXSk9PmM/ITE6bihhKSkuZmlsdGVyKEJvb2xlYW4pLHM9W10sbz1bXTtyZXR1cm4gaS5mb3JFYWNoKGE9PntlLmNsYXNzTGlzdC5jb250YWlucyhhKSYmKGUuY2xhc3NMaXN0LnJlbW92ZShhKSxvLnB1c2goYSkpfSksci5mb3JFYWNoKGE9PntlLmNsYXNzTGlzdC5jb250YWlucyhhKXx8KGUuY2xhc3NMaXN0LmFkZChhKSxzLnB1c2goYSkpfSksKCk9PntvLmZvckVhY2goYT0+ZS5jbGFzc0xpc3QuYWRkKGEpKSxzLmZvckVhY2goYT0+ZS5jbGFzc0xpc3QucmVtb3ZlKGEpKX19ZnVuY3Rpb24gWWUoZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbD9DbyhlLHQpOlBvKGUsdCl9ZnVuY3Rpb24gQ28oZSx0KXtsZXQgbj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW3IsaV0pPT57bltyXT1lLnN0eWxlW3JdLHIuc3RhcnRzV2l0aCgiLS0iKXx8KHI9Tm8ocikpLGUuc3R5bGUuc2V0UHJvcGVydHkocixpKX0pLHNldFRpbWVvdXQoKCk9PntlLnN0eWxlLmxlbmd0aD09PTAmJmUucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpfSksKCk9PntZZShlLG4pfX1mdW5jdGlvbiBQbyhlLHQpe2xldCBuPWUuZ2V0QXR0cmlidXRlKCJzdHlsZSIsdCk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJzdHlsZSIsdCksKCk9PntlLnNldEF0dHJpYnV0ZSgic3R5bGUiLG58fCIiKX19ZnVuY3Rpb24gTm8oZSl7cmV0dXJuIGUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywiJDEtJDIiKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFJ0KGUsdD0oKT0+e30pe2xldCBuPSExO3JldHVybiBmdW5jdGlvbigpe24/dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KG49ITAsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1SKCJ0cmFuc2l0aW9uIiwoZSx7dmFsdWU6dCxtb2RpZmllcnM6bixleHByZXNzaW9uOnJ9LHtldmFsdWF0ZTppfSk9Pnt0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmKHI9aShyKSksciE9PSExJiYoIXJ8fHR5cGVvZiByPT0iYm9vbGVhbiI/TG8oZSxuLHQpOkZvKGUscix0KSl9KTtmdW5jdGlvbiBGbyhlLHQsbil7anIoZSxYdCwiIikse2VudGVyOmk9PntlLl94X3RyYW5zaXRpb24uZW50ZXIuZHVyaW5nPWl9LCJlbnRlci1zdGFydCI6aT0+e2UuX3hfdHJhbnNpdGlvbi5lbnRlci5zdGFydD1pfSwiZW50ZXItZW5kIjppPT57ZS5feF90cmFuc2l0aW9uLmVudGVyLmVuZD1pfSxsZWF2ZTppPT57ZS5feF90cmFuc2l0aW9uLmxlYXZlLmR1cmluZz1pfSwibGVhdmUtc3RhcnQiOmk9PntlLl94X3RyYW5zaXRpb24ubGVhdmUuc3RhcnQ9aX0sImxlYXZlLWVuZCI6aT0+e2UuX3hfdHJhbnNpdGlvbi5sZWF2ZS5lbmQ9aX19W25dKHQpfWZ1bmN0aW9uIExvKGUsdCxuKXtqcihlLFllKTtsZXQgcj0hdC5pbmNsdWRlcygiaW4iKSYmIXQuaW5jbHVkZXMoIm91dCIpJiYhbixpPXJ8fHQuaW5jbHVkZXMoImluIil8fFsiZW50ZXIiXS5pbmNsdWRlcyhuKSxzPXJ8fHQuaW5jbHVkZXMoIm91dCIpfHxbImxlYXZlIl0uaW5jbHVkZXMobik7dC5pbmNsdWRlcygiaW4iKSYmIXImJih0PXQuZmlsdGVyKChtLGIpPT5iPHQuaW5kZXhPZigib3V0IikpKSx0LmluY2x1ZGVzKCJvdXQiKSYmIXImJih0PXQuZmlsdGVyKChtLGIpPT5iPnQuaW5kZXhPZigib3V0IikpKTtsZXQgbz0hdC5pbmNsdWRlcygib3BhY2l0eSIpJiYhdC5pbmNsdWRlcygic2NhbGUiKSxhPW98fHQuaW5jbHVkZXMoIm9wYWNpdHkiKSxjPW98fHQuaW5jbHVkZXMoInNjYWxlIiksdT1hPzA6MSxsPWM/aGUodCwic2NhbGUiLDk1KS8xMDA6MSxwPWhlKHQsImRlbGF5IiwwKS8xZTMsXz1oZSh0LCJvcmlnaW4iLCJjZW50ZXIiKSx3PSJvcGFjaXR5LCB0cmFuc2Zvcm0iLGg9aGUodCwiZHVyYXRpb24iLDE1MCkvMWUzLGc9aGUodCwiZHVyYXRpb24iLDc1KS8xZTMsZD0iY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIjtpJiYoZS5feF90cmFuc2l0aW9uLmVudGVyLmR1cmluZz17dHJhbnNmb3JtT3JpZ2luOl8sdHJhbnNpdGlvbkRlbGF5OmAke3B9c2AsdHJhbnNpdGlvblByb3BlcnR5OncsdHJhbnNpdGlvbkR1cmF0aW9uOmAke2h9c2AsdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOmR9LGUuX3hfdHJhbnNpdGlvbi5lbnRlci5zdGFydD17b3BhY2l0eTp1LHRyYW5zZm9ybTpgc2NhbGUoJHtsfSlgfSxlLl94X3RyYW5zaXRpb24uZW50ZXIuZW5kPXtvcGFjaXR5OjEsdHJhbnNmb3JtOiJzY2FsZSgxKSJ9KSxzJiYoZS5feF90cmFuc2l0aW9uLmxlYXZlLmR1cmluZz17dHJhbnNmb3JtT3JpZ2luOl8sdHJhbnNpdGlvbkRlbGF5OmAke3B9c2AsdHJhbnNpdGlvblByb3BlcnR5OncsdHJhbnNpdGlvbkR1cmF0aW9uOmAke2d9c2AsdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOmR9LGUuX3hfdHJhbnNpdGlvbi5sZWF2ZS5zdGFydD17b3BhY2l0eToxLHRyYW5zZm9ybToic2NhbGUoMSkifSxlLl94X3RyYW5zaXRpb24ubGVhdmUuZW5kPXtvcGFjaXR5OnUsdHJhbnNmb3JtOmBzY2FsZSgke2x9KWB9KX1mdW5jdGlvbiBqcihlLHQsbj17fSl7ZS5feF90cmFuc2l0aW9ufHwoZS5feF90cmFuc2l0aW9uPXtlbnRlcjp7ZHVyaW5nOm4sc3RhcnQ6bixlbmQ6bn0sbGVhdmU6e2R1cmluZzpuLHN0YXJ0Om4sZW5kOm59LGluKHI9KCk9Pnt9LGk9KCk9Pnt9KXtUdChlLHQse2R1cmluZzp0aGlzLmVudGVyLmR1cmluZyxzdGFydDp0aGlzLmVudGVyLnN0YXJ0LGVuZDp0aGlzLmVudGVyLmVuZH0scixpKX0sb3V0KHI9KCk9Pnt9LGk9KCk9Pnt9KXtUdChlLHQse2R1cmluZzp0aGlzLmxlYXZlLmR1cmluZyxzdGFydDp0aGlzLmxlYXZlLnN0YXJ0LGVuZDp0aGlzLmxlYXZlLmVuZH0scixpKX19KX13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuX3hfdG9nZ2xlQW5kQ2FzY2FkZVdpdGhUcmFuc2l0aW9ucz1mdW5jdGlvbihlLHQsbixyKXtjb25zdCBpPWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIj9yZXF1ZXN0QW5pbWF0aW9uRnJhbWU6c2V0VGltZW91dDtsZXQgcz0oKT0+aShuKTtpZih0KXtlLl94X3RyYW5zaXRpb24mJihlLl94X3RyYW5zaXRpb24uZW50ZXJ8fGUuX3hfdHJhbnNpdGlvbi5sZWF2ZSk/ZS5feF90cmFuc2l0aW9uLmVudGVyJiYoT2JqZWN0LmVudHJpZXMoZS5feF90cmFuc2l0aW9uLmVudGVyLmR1cmluZykubGVuZ3RofHxPYmplY3QuZW50cmllcyhlLl94X3RyYW5zaXRpb24uZW50ZXIuc3RhcnQpLmxlbmd0aHx8T2JqZWN0LmVudHJpZXMoZS5feF90cmFuc2l0aW9uLmVudGVyLmVuZCkubGVuZ3RoKT9lLl94X3RyYW5zaXRpb24uaW4obik6cygpOmUuX3hfdHJhbnNpdGlvbj9lLl94X3RyYW5zaXRpb24uaW4obik6cygpO3JldHVybn1lLl94X2hpZGVQcm9taXNlPWUuX3hfdHJhbnNpdGlvbj9uZXcgUHJvbWlzZSgobyxhKT0+e2UuX3hfdHJhbnNpdGlvbi5vdXQoKCk9Pnt9LCgpPT5vKHIpKSxlLl94X3RyYW5zaXRpb25pbmcmJmUuX3hfdHJhbnNpdGlvbmluZy5iZWZvcmVDYW5jZWwoKCk9PmEoe2lzRnJvbUNhbmNlbGxlZFRyYW5zaXRpb246ITB9KSl9KTpQcm9taXNlLnJlc29sdmUocikscXVldWVNaWNyb3Rhc2soKCk9PntsZXQgbz1rcihlKTtvPyhvLl94X2hpZGVDaGlsZHJlbnx8KG8uX3hfaGlkZUNoaWxkcmVuPVtdKSxvLl94X2hpZGVDaGlsZHJlbi5wdXNoKGUpKTppKCgpPT57bGV0IGE9Yz0+e2xldCB1PVByb21pc2UuYWxsKFtjLl94X2hpZGVQcm9taXNlLC4uLihjLl94X2hpZGVDaGlsZHJlbnx8W10pLm1hcChhKV0pLnRoZW4oKFtsXSk9Pmw9PW51bGw/dm9pZCAwOmwoKSk7cmV0dXJuIGRlbGV0ZSBjLl94X2hpZGVQcm9taXNlLGRlbGV0ZSBjLl94X2hpZGVDaGlsZHJlbix1fTthKGUpLmNhdGNoKGM9PntpZighYy5pc0Zyb21DYW5jZWxsZWRUcmFuc2l0aW9uKXRocm93IGN9KX0pfSl9O2Z1bmN0aW9uIGtyKGUpe2xldCB0PWUucGFyZW50Tm9kZTtpZih0KXJldHVybiB0Ll94X2hpZGVQcm9taXNlP3Q6a3IodCl9ZnVuY3Rpb24gVHQoZSx0LHtkdXJpbmc6bixzdGFydDpyLGVuZDppfT17fSxzPSgpPT57fSxvPSgpPT57fSl7aWYoZS5feF90cmFuc2l0aW9uaW5nJiZlLl94X3RyYW5zaXRpb25pbmcuY2FuY2VsKCksT2JqZWN0LmtleXMobikubGVuZ3RoPT09MCYmT2JqZWN0LmtleXMocikubGVuZ3RoPT09MCYmT2JqZWN0LmtleXMoaSkubGVuZ3RoPT09MCl7cygpLG8oKTtyZXR1cm59bGV0IGEsYyx1O01vKGUse3N0YXJ0KCl7YT10KGUscil9LGR1cmluZygpe2M9dChlLG4pfSxiZWZvcmU6cyxlbmQoKXthKCksdT10KGUsaSl9LGFmdGVyOm8sY2xlYW51cCgpe2MoKSx1KCl9fSl9ZnVuY3Rpb24gTW8oZSx0KXtsZXQgbixyLGkscz1SdCgoKT0+e1MoKCk9PntuPSEwLHJ8fHQuYmVmb3JlKCksaXx8KHQuZW5kKCksdnQoKSksdC5hZnRlcigpLGUuaXNDb25uZWN0ZWQmJnQuY2xlYW51cCgpLGRlbGV0ZSBlLl94X3RyYW5zaXRpb25pbmd9KX0pO2UuX3hfdHJhbnNpdGlvbmluZz17YmVmb3JlQ2FuY2VsczpbXSxiZWZvcmVDYW5jZWwobyl7dGhpcy5iZWZvcmVDYW5jZWxzLnB1c2gobyl9LGNhbmNlbDpSdChmdW5jdGlvbigpe2Zvcig7dGhpcy5iZWZvcmVDYW5jZWxzLmxlbmd0aDspdGhpcy5iZWZvcmVDYW5jZWxzLnNoaWZ0KCkoKTtzKCl9KSxmaW5pc2g6c30sUygoKT0+e3Quc3RhcnQoKSx0LmR1cmluZygpfSksUm8oKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntpZihuKXJldHVybjtsZXQgbz1OdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZShlKS50cmFuc2l0aW9uRHVyYXRpb24ucmVwbGFjZSgvLC4qLywiIikucmVwbGFjZSgicyIsIiIpKSoxZTMsYT1OdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZShlKS50cmFuc2l0aW9uRGVsYXkucmVwbGFjZSgvLC4qLywiIikucmVwbGFjZSgicyIsIiIpKSoxZTM7bz09PTAmJihvPU51bWJlcihnZXRDb21wdXRlZFN0eWxlKGUpLmFuaW1hdGlvbkR1cmF0aW9uLnJlcGxhY2UoInMiLCIiKSkqMWUzKSxTKCgpPT57dC5iZWZvcmUoKX0pLHI9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57bnx8KFMoKCk9Pnt0LmVuZCgpfSksdnQoKSxzZXRUaW1lb3V0KGUuX3hfdHJhbnNpdGlvbmluZy5maW5pc2gsbythKSxpPSEwKX0pfSl9ZnVuY3Rpb24gaGUoZSx0LG4pe2lmKGUuaW5kZXhPZih0KT09PS0xKXJldHVybiBuO2NvbnN0IHI9ZVtlLmluZGV4T2YodCkrMV07aWYoIXJ8fHQ9PT0ic2NhbGUiJiZpc05hTihyKSlyZXR1cm4gbjtpZih0PT09ImR1cmF0aW9uInx8dD09PSJkZWxheSIpe2xldCBpPXIubWF0Y2goLyhbMC05XSspbXMvKTtpZihpKXJldHVybiBpWzFdfXJldHVybiB0PT09Im9yaWdpbiImJlsidG9wIiwicmlnaHQiLCJsZWZ0IiwiY2VudGVyIiwiYm90dG9tIl0uaW5jbHVkZXMoZVtlLmluZGV4T2YodCkrMl0pP1tyLGVbZS5pbmRleE9mKHQpKzJdXS5qb2luKCIgIik6cn12YXIgcT0hMTtmdW5jdGlvbiB6KGUsdD0oKT0+e30pe3JldHVybiguLi5uKT0+cT90KC4uLm4pOmUoLi4ubil9ZnVuY3Rpb24gam8oZSl7cmV0dXJuKC4uLnQpPT5xJiZlKC4uLnQpfXZhciBCcj1bXTtmdW5jdGlvbiBaZShlKXtCci5wdXNoKGUpfWZ1bmN0aW9uIGtvKGUsdCl7QnIuZm9yRWFjaChuPT5uKGUsdCkpLHE9ITAsSXIoKCk9PnskKHQsKG4scik9PntyKG4sKCk9Pnt9KX0pfSkscT0hMX12YXIgQ3Q9ITE7ZnVuY3Rpb24gQm8oZSx0KXt0Ll94X2RhdGFTdGFja3x8KHQuX3hfZGF0YVN0YWNrPWUuX3hfZGF0YVN0YWNrKSxxPSEwLEN0PSEwLElyKCgpPT57SW8odCl9KSxxPSExLEN0PSExfWZ1bmN0aW9uIElvKGUpe2xldCB0PSExOyQoZSwocixpKT0+e2VlKHIsKHMsbyk9PntpZih0JiZTbyhzKSlyZXR1cm4gbygpO3Q9ITAsaShzLG8pfSl9KX1mdW5jdGlvbiBJcihlKXtsZXQgdD10ZTtibigobixyKT0+e2xldCBpPXQobik7cmV0dXJuIGNlKGkpLCgpPT57fX0pLGUoKSxibih0KX1mdW5jdGlvbiBEcihlLHQsbixyPVtdKXtzd2l0Y2goZS5feF9iaW5kaW5nc3x8KGUuX3hfYmluZGluZ3M9YWUoe30pKSxlLl94X2JpbmRpbmdzW3RdPW4sdD1yLmluY2x1ZGVzKCJjYW1lbCIpP0pvKHQpOnQsdCl7Y2FzZSJ2YWx1ZSI6RG8oZSxuKTticmVhaztjYXNlInN0eWxlIjpVbyhlLG4pO2JyZWFrO2Nhc2UiY2xhc3MiOiRvKGUsbik7YnJlYWs7Y2FzZSJzZWxlY3RlZCI6Y2FzZSJjaGVja2VkIjpxbyhlLHQsbik7YnJlYWs7ZGVmYXVsdDokcihlLHQsbik7YnJlYWt9fWZ1bmN0aW9uIERvKGUsdCl7aWYoSHIoZSkpZS5hdHRyaWJ1dGVzLnZhbHVlPT09dm9pZCAwJiYoZS52YWx1ZT10KSx3aW5kb3cuZnJvbU1vZGVsJiYodHlwZW9mIHQ9PSJib29sZWFuIj9lLmNoZWNrZWQ9a2UoZS52YWx1ZSk9PT10OmUuY2hlY2tlZD1FbihlLnZhbHVlLHQpKTtlbHNlIGlmKEd0KGUpKU51bWJlci5pc0ludGVnZXIodCk/ZS52YWx1ZT10OiFBcnJheS5pc0FycmF5KHQpJiZ0eXBlb2YgdCE9ImJvb2xlYW4iJiYhW251bGwsdm9pZCAwXS5pbmNsdWRlcyh0KT9lLnZhbHVlPVN0cmluZyh0KTpBcnJheS5pc0FycmF5KHQpP2UuY2hlY2tlZD10LnNvbWUobj0+RW4obixlLnZhbHVlKSk6ZS5jaGVja2VkPSEhdDtlbHNlIGlmKGUudGFnTmFtZT09PSJTRUxFQ1QiKUtvKGUsdCk7ZWxzZXtpZihlLnZhbHVlPT09dClyZXR1cm47ZS52YWx1ZT10PT09dm9pZCAwPyIiOnR9fWZ1bmN0aW9uICRvKGUsdCl7ZS5feF91bmRvQWRkZWRDbGFzc2VzJiZlLl94X3VuZG9BZGRlZENsYXNzZXMoKSxlLl94X3VuZG9BZGRlZENsYXNzZXM9WHQoZSx0KX1mdW5jdGlvbiBVbyhlLHQpe2UuX3hfdW5kb0FkZGVkU3R5bGVzJiZlLl94X3VuZG9BZGRlZFN0eWxlcygpLGUuX3hfdW5kb0FkZGVkU3R5bGVzPVllKGUsdCl9ZnVuY3Rpb24gcW8oZSx0LG4peyRyKGUsdCxuKSx6byhlLHQsbil9ZnVuY3Rpb24gJHIoZSx0LG4pe1tudWxsLHZvaWQgMCwhMV0uaW5jbHVkZXMobikmJlZvKHQpP2UucmVtb3ZlQXR0cmlidXRlKHQpOihVcih0KSYmKG49dCksSG8oZSx0LG4pKX1mdW5jdGlvbiBIbyhlLHQsbil7ZS5nZXRBdHRyaWJ1dGUodCkhPW4mJmUuc2V0QXR0cmlidXRlKHQsbil9ZnVuY3Rpb24gem8oZSx0LG4pe2VbdF0hPT1uJiYoZVt0XT1uKX1mdW5jdGlvbiBLbyhlLHQpe2NvbnN0IG49W10uY29uY2F0KHQpLm1hcChyPT5yKyIiKTtBcnJheS5mcm9tKGUub3B0aW9ucykuZm9yRWFjaChyPT57ci5zZWxlY3RlZD1uLmluY2x1ZGVzKHIudmFsdWUpfSl9ZnVuY3Rpb24gSm8oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tKFx3KS9nLCh0LG4pPT5uLnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIEVuKGUsdCl7cmV0dXJuIGU9PXR9ZnVuY3Rpb24ga2UoZSl7cmV0dXJuWzEsIjEiLCJ0cnVlIiwib24iLCJ5ZXMiLCEwXS5pbmNsdWRlcyhlKT8hMDpbMCwiMCIsImZhbHNlIiwib2ZmIiwibm8iLCExXS5pbmNsdWRlcyhlKT8hMTplPyEhZTpudWxsfXZhciBXbz1uZXcgU2V0KFsiYWxsb3dmdWxsc2NyZWVuIiwiYXN5bmMiLCJhdXRvZm9jdXMiLCJhdXRvcGxheSIsImNoZWNrZWQiLCJjb250cm9scyIsImRlZmF1bHQiLCJkZWZlciIsImRpc2FibGVkIiwiZm9ybW5vdmFsaWRhdGUiLCJpbmVydCIsImlzbWFwIiwiaXRlbXNjb3BlIiwibG9vcCIsIm11bHRpcGxlIiwibXV0ZWQiLCJub21vZHVsZSIsIm5vdmFsaWRhdGUiLCJvcGVuIiwicGxheXNpbmxpbmUiLCJyZWFkb25seSIsInJlcXVpcmVkIiwicmV2ZXJzZWQiLCJzZWxlY3RlZCIsInNoYWRvd3Jvb3RjbG9uYWJsZSIsInNoYWRvd3Jvb3RkZWxlZ2F0ZXNmb2N1cyIsInNoYWRvd3Jvb3RzZXJpYWxpemFibGUiXSk7ZnVuY3Rpb24gVXIoZSl7cmV0dXJuIFdvLmhhcyhlKX1mdW5jdGlvbiBWbyhlKXtyZXR1cm4hWyJhcmlhLXByZXNzZWQiLCJhcmlhLWNoZWNrZWQiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1zZWxlY3RlZCJdLmluY2x1ZGVzKGUpfWZ1bmN0aW9uIFhvKGUsdCxuKXtyZXR1cm4gZS5feF9iaW5kaW5ncyYmZS5feF9iaW5kaW5nc1t0XSE9PXZvaWQgMD9lLl94X2JpbmRpbmdzW3RdOnFyKGUsdCxuKX1mdW5jdGlvbiBHbyhlLHQsbixyPSEwKXtpZihlLl94X2JpbmRpbmdzJiZlLl94X2JpbmRpbmdzW3RdIT09dm9pZCAwKXJldHVybiBlLl94X2JpbmRpbmdzW3RdO2lmKGUuX3hfaW5saW5lQmluZGluZ3MmJmUuX3hfaW5saW5lQmluZGluZ3NbdF0hPT12b2lkIDApe2xldCBpPWUuX3hfaW5saW5lQmluZGluZ3NbdF07cmV0dXJuIGkuZXh0cmFjdD1yLGdyKCgpPT5HKGUsaS5leHByZXNzaW9uKSl9cmV0dXJuIHFyKGUsdCxuKX1mdW5jdGlvbiBxcihlLHQsbil7bGV0IHI9ZS5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIHI9PT1udWxsP3R5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpuOnI9PT0iIj8hMDpVcih0KT8hIVt0LCJ0cnVlIl0uaW5jbHVkZXMocik6cn1mdW5jdGlvbiBHdChlKXtyZXR1cm4gZS50eXBlPT09ImNoZWNrYm94Inx8ZS5sb2NhbE5hbWU9PT0idWktY2hlY2tib3gifHxlLmxvY2FsTmFtZT09PSJ1aS1zd2l0Y2gifWZ1bmN0aW9uIEhyKGUpe3JldHVybiBlLnR5cGU9PT0icmFkaW8ifHxlLmxvY2FsTmFtZT09PSJ1aS1yYWRpbyJ9ZnVuY3Rpb24genIoZSx0KXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLGk9YXJndW1lbnRzLHM9ZnVuY3Rpb24oKXtuPW51bGwsZS5hcHBseShyLGkpfTtjbGVhclRpbWVvdXQobiksbj1zZXRUaW1lb3V0KHMsdCl9fWZ1bmN0aW9uIEtyKGUsdCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IHI9dGhpcyxpPWFyZ3VtZW50cztufHwoZS5hcHBseShyLGkpLG49ITAsc2V0VGltZW91dCgoKT0+bj0hMSx0KSl9fWZ1bmN0aW9uIEpyKHtnZXQ6ZSxzZXQ6dH0se2dldDpuLHNldDpyfSl7bGV0IGk9ITAscyxvPXRlKCgpPT57bGV0IGE9ZSgpLGM9bigpO2lmKGkpcihhdChhKSksaT0hMTtlbHNle2xldCB1PUpTT04uc3RyaW5naWZ5KGEpLGw9SlNPTi5zdHJpbmdpZnkoYyk7dSE9PXM/cihhdChhKSk6dSE9PWwmJnQoYXQoYykpfXM9SlNPTi5zdHJpbmdpZnkoZSgpKSxKU09OLnN0cmluZ2lmeShuKCkpfSk7cmV0dXJuKCk9PntjZShvKX19ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0Ij9KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTplfWZ1bmN0aW9uIFlvKGUpeyhBcnJheS5pc0FycmF5KGUpP2U6W2VdKS5mb3JFYWNoKG49Pm4oT2UpKX12YXIgSz17fSxTbj0hMTtmdW5jdGlvbiBabyhlLHQpe2lmKFNufHwoSz1hZShLKSxTbj0hMCksdD09PXZvaWQgMClyZXR1cm4gS1tlXTtLW2VdPXQsaHIoS1tlXSksdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbCYmdC5oYXNPd25Qcm9wZXJ0eSgiaW5pdCIpJiZ0eXBlb2YgdC5pbml0PT0iZnVuY3Rpb24iJiZLW2VdLmluaXQoKX1mdW5jdGlvbiBRbygpe3JldHVybiBLfXZhciBXcj17fTtmdW5jdGlvbiBlYShlLHQpe2xldCBuPXR5cGVvZiB0IT0iZnVuY3Rpb24iPygpPT50OnQ7cmV0dXJuIGUgaW5zdGFuY2VvZiBFbGVtZW50P1ZyKGUsbigpKTooV3JbZV09biwoKT0+e30pfWZ1bmN0aW9uIHRhKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhXcikuZm9yRWFjaCgoW3Qsbl0pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Z2V0KCl7cmV0dXJuKC4uLnIpPT5uKC4uLnIpfX0pfSksZX1mdW5jdGlvbiBWcihlLHQsbil7bGV0IHI9W107Zm9yKDtyLmxlbmd0aDspci5wb3AoKSgpO2xldCBpPU9iamVjdC5lbnRyaWVzKHQpLm1hcCgoW28sYV0pPT4oe25hbWU6byx2YWx1ZTphfSkpLHM9d3IoaSk7cmV0dXJuIGk9aS5tYXAobz0+cy5maW5kKGE9PmEubmFtZT09PW8ubmFtZSk/e25hbWU6YHgtYmluZDoke28ubmFtZX1gLHZhbHVlOmAiJHtvLnZhbHVlfSJgfTpvKSx6dChlLGksbikubWFwKG89PntyLnB1c2goby5ydW5DbGVhbnVwcyksbygpfSksKCk9Pntmb3IoO3IubGVuZ3RoOylyLnBvcCgpKCl9fXZhciBYcj17fTtmdW5jdGlvbiBuYShlLHQpe1hyW2VdPXR9ZnVuY3Rpb24gcmEoZSx0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXMoWHIpLmZvckVhY2goKFtuLHJdKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2dldCgpe3JldHVybiguLi5pKT0+ci5iaW5kKHQpKC4uLmkpfSxlbnVtZXJhYmxlOiExfSl9KSxlfXZhciBpYT17Z2V0IHJlYWN0aXZlKCl7cmV0dXJuIGFlfSxnZXQgcmVsZWFzZSgpe3JldHVybiBjZX0sZ2V0IGVmZmVjdCgpe3JldHVybiB0ZX0sZ2V0IHJhdygpe3JldHVybiBpcn0sdmVyc2lvbjoiMy4xNC45IixmbHVzaEFuZFN0b3BEZWZlcnJpbmdNdXRhdGlvbnM6c28sZG9udEF1dG9FdmFsdWF0ZUZ1bmN0aW9uczpncixkaXNhYmxlRWZmZWN0U2NoZWR1bGluZzpacyxzdGFydE9ic2VydmluZ011dGF0aW9uczokdCxzdG9wT2JzZXJ2aW5nTXV0YXRpb25zOmRyLHNldFJlYWN0aXZpdHlFbmdpbmU6UXMsb25BdHRyaWJ1dGVSZW1vdmVkOmxyLG9uQXR0cmlidXRlc0FkZGVkOnVyLGNsb3Nlc3REYXRhU3RhY2s6cmUsc2tpcER1cmluZ0Nsb25lOnosb25seUR1cmluZ0Nsb25lOmpvLGFkZFJvb3RTZWxlY3RvcjpGcixhZGRJbml0U2VsZWN0b3I6THIsaW50ZXJjZXB0Q2xvbmU6WmUsYWRkU2NvcGVUb05vZGU6U2UsZGVmZXJNdXRhdGlvbnM6aW8sbWFwQXR0cmlidXRlczpLdCxldmFsdWF0ZUxhdGVyOkMsaW50ZXJjZXB0SW5pdDpBbyxzZXRFdmFsdWF0b3I6Zm8sbWVyZ2VQcm94aWVzOkFlLGV4dHJhY3RQcm9wOkdvLGZpbmRDbG9zZXN0OmxlLG9uRWxSZW1vdmVkOkJ0LGNsb3Nlc3RSb290OkdlLGRlc3Ryb3lUcmVlOmZlLGludGVyY2VwdG9yOl9yLHRyYW5zaXRpb246VHQsc2V0U3R5bGVzOlllLG11dGF0ZURvbTpTLGRpcmVjdGl2ZTpSLGVudGFuZ2xlOkpyLHRocm90dGxlOktyLGRlYm91bmNlOnpyLGV2YWx1YXRlOkcsaW5pdFRyZWU6JCxuZXh0VGljazpWdCxwcmVmaXhlZDp1ZSxwcmVmaXg6bW8scGx1Z2luOllvLG1hZ2ljOmssc3RvcmU6Wm8sc3RhcnQ6RW8sY2xvbmU6Qm8sY2xvbmVOb2RlOmtvLGJvdW5kOlhvLCRkYXRhOnByLHdhdGNoOnNyLHdhbGs6ZWUsZGF0YTpuYSxiaW5kOmVhfSxPZT1pYTtmdW5jdGlvbiBzYShlLHQpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyluW3JbaV1dPSEwO3JldHVybiBpPT4hIW5baV19dmFyIG9hPU9iamVjdC5mcmVlemUoe30pLGFhPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksUWU9KGUsdCk9PmFhLmNhbGwoZSx0KSxZPUFycmF5LmlzQXJyYXkseWU9ZT0+R3IoZSk9PT0iW29iamVjdCBNYXBdIixjYT1lPT50eXBlb2YgZT09InN0cmluZyIsWXQ9ZT0+dHlwZW9mIGU9PSJzeW1ib2wiLGV0PWU9PmUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCIsdWE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxHcj1lPT51YS5jYWxsKGUpLFlyPWU9PkdyKGUpLnNsaWNlKDgsLTEpLFp0PWU9PmNhKGUpJiZlIT09Ik5hTiImJmVbMF0hPT0iLSImJiIiK3BhcnNlSW50KGUsMTApPT09ZSxsYT1lPT57Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBuPT50W25dfHwodFtuXT1lKG4pKX0sZmE9bGEoZT0+ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKSxacj0oZSx0KT0+ZSE9PXQmJihlPT09ZXx8dD09PXQpLFB0PW5ldyBXZWFrTWFwLF9lPVtdLEQsWj1TeW1ib2woIml0ZXJhdGUiKSxOdD1TeW1ib2woIk1hcCBrZXkgaXRlcmF0ZSIpO2Z1bmN0aW9uIGRhKGUpe3JldHVybiBlJiZlLl9pc0VmZmVjdD09PSEwfWZ1bmN0aW9uIHBhKGUsdD1vYSl7ZGEoZSkmJihlPWUucmF3KTtjb25zdCBuPW1hKGUsdCk7cmV0dXJuIHQubGF6eXx8bigpLG59ZnVuY3Rpb24gaGEoZSl7ZS5hY3RpdmUmJihRcihlKSxlLm9wdGlvbnMub25TdG9wJiZlLm9wdGlvbnMub25TdG9wKCksZS5hY3RpdmU9ITEpfXZhciBfYT0wO2Z1bmN0aW9uIG1hKGUsdCl7Y29uc3Qgbj1mdW5jdGlvbigpe2lmKCFuLmFjdGl2ZSlyZXR1cm4gZSgpO2lmKCFfZS5pbmNsdWRlcyhuKSl7UXIobik7dHJ5e3JldHVybiB5YSgpLF9lLnB1c2gobiksRD1uLGUoKX1maW5hbGx5e19lLnBvcCgpLGVpKCksRD1fZVtfZS5sZW5ndGgtMV19fX07cmV0dXJuIG4uaWQ9X2ErKyxuLmFsbG93UmVjdXJzZT0hIXQuYWxsb3dSZWN1cnNlLG4uX2lzRWZmZWN0PSEwLG4uYWN0aXZlPSEwLG4ucmF3PWUsbi5kZXBzPVtdLG4ub3B0aW9ucz10LG59ZnVuY3Rpb24gUXIoZSl7Y29uc3R7ZGVwczp0fT1lO2lmKHQubGVuZ3RoKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl0W25dLmRlbGV0ZShlKTt0Lmxlbmd0aD0wfX12YXIgaWU9ITAsUXQ9W107ZnVuY3Rpb24gZ2EoKXtRdC5wdXNoKGllKSxpZT0hMX1mdW5jdGlvbiB5YSgpe1F0LnB1c2goaWUpLGllPSEwfWZ1bmN0aW9uIGVpKCl7Y29uc3QgZT1RdC5wb3AoKTtpZT1lPT09dm9pZCAwPyEwOmV9ZnVuY3Rpb24gTShlLHQsbil7aWYoIWllfHxEPT09dm9pZCAwKXJldHVybjtsZXQgcj1QdC5nZXQoZSk7cnx8UHQuc2V0KGUscj1uZXcgTWFwKTtsZXQgaT1yLmdldChuKTtpfHxyLnNldChuLGk9bmV3IFNldCksaS5oYXMoRCl8fChpLmFkZChEKSxELmRlcHMucHVzaChpKSxELm9wdGlvbnMub25UcmFjayYmRC5vcHRpb25zLm9uVHJhY2soe2VmZmVjdDpELHRhcmdldDplLHR5cGU6dCxrZXk6bn0pKX1mdW5jdGlvbiBIKGUsdCxuLHIsaSxzKXtjb25zdCBvPVB0LmdldChlKTtpZighbylyZXR1cm47Y29uc3QgYT1uZXcgU2V0LGM9bD0+e2wmJmwuZm9yRWFjaChwPT57KHAhPT1EfHxwLmFsbG93UmVjdXJzZSkmJmEuYWRkKHApfSl9O2lmKHQ9PT0iY2xlYXIiKW8uZm9yRWFjaChjKTtlbHNlIGlmKG49PT0ibGVuZ3RoIiYmWShlKSlvLmZvckVhY2goKGwscCk9PnsocD09PSJsZW5ndGgifHxwPj1yKSYmYyhsKX0pO2Vsc2Ugc3dpdGNoKG4hPT12b2lkIDAmJmMoby5nZXQobikpLHQpe2Nhc2UiYWRkIjpZKGUpP1p0KG4pJiZjKG8uZ2V0KCJsZW5ndGgiKSk6KGMoby5nZXQoWikpLHllKGUpJiZjKG8uZ2V0KE50KSkpO2JyZWFrO2Nhc2UiZGVsZXRlIjpZKGUpfHwoYyhvLmdldChaKSkseWUoZSkmJmMoby5nZXQoTnQpKSk7YnJlYWs7Y2FzZSJzZXQiOnllKGUpJiZjKG8uZ2V0KFopKTticmVha31jb25zdCB1PWw9PntsLm9wdGlvbnMub25UcmlnZ2VyJiZsLm9wdGlvbnMub25UcmlnZ2VyKHtlZmZlY3Q6bCx0YXJnZXQ6ZSxrZXk6bix0eXBlOnQsbmV3VmFsdWU6cixvbGRWYWx1ZTppLG9sZFRhcmdldDpzfSksbC5vcHRpb25zLnNjaGVkdWxlcj9sLm9wdGlvbnMuc2NoZWR1bGVyKGwpOmwoKX07YS5mb3JFYWNoKHUpfXZhciBiYT1zYSgiX19wcm90b19fLF9fdl9pc1JlZixfX2lzVnVlIiksdGk9bmV3IFNldChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpLm1hcChlPT5TeW1ib2xbZV0pLmZpbHRlcihZdCkpLHdhPW5pKCkseGE9bmkoITApLEFuPUVhKCk7ZnVuY3Rpb24gRWEoKXtjb25zdCBlPXt9O3JldHVyblsiaW5jbHVkZXMiLCJpbmRleE9mIiwibGFzdEluZGV4T2YiXS5mb3JFYWNoKHQ9PntlW3RdPWZ1bmN0aW9uKC4uLm4pe2NvbnN0IHI9RSh0aGlzKTtmb3IobGV0IHM9MCxvPXRoaXMubGVuZ3RoO3M8bztzKyspTShyLCJnZXQiLHMrIiIpO2NvbnN0IGk9clt0XSguLi5uKTtyZXR1cm4gaT09PS0xfHxpPT09ITE/clt0XSguLi5uLm1hcChFKSk6aX19KSxbInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiXS5mb3JFYWNoKHQ9PntlW3RdPWZ1bmN0aW9uKC4uLm4pe2dhKCk7Y29uc3Qgcj1FKHRoaXMpW3RdLmFwcGx5KHRoaXMsbik7cmV0dXJuIGVpKCkscn19KSxlfWZ1bmN0aW9uIG5pKGU9ITEsdD0hMSl7cmV0dXJuIGZ1bmN0aW9uKHIsaSxzKXtpZihpPT09Il9fdl9pc1JlYWN0aXZlIilyZXR1cm4hZTtpZihpPT09Il9fdl9pc1JlYWRvbmx5IilyZXR1cm4gZTtpZihpPT09Il9fdl9yYXciJiZzPT09KGU/dD9rYTpvaTp0P2phOnNpKS5nZXQocikpcmV0dXJuIHI7Y29uc3Qgbz1ZKHIpO2lmKCFlJiZvJiZRZShBbixpKSlyZXR1cm4gUmVmbGVjdC5nZXQoQW4saSxzKTtjb25zdCBhPVJlZmxlY3QuZ2V0KHIsaSxzKTtyZXR1cm4oWXQoaSk/dGkuaGFzKGkpOmJhKGkpKXx8KGV8fE0ociwiZ2V0IixpKSx0KT9hOkZ0KGEpPyFvfHwhWnQoaSk/YS52YWx1ZTphOmV0KGEpP2U/YWkoYSk6cm4oYSk6YX19dmFyIFNhPUFhKCk7ZnVuY3Rpb24gQWEoZT0hMSl7cmV0dXJuIGZ1bmN0aW9uKG4scixpLHMpe2xldCBvPW5bcl07aWYoIWUmJihpPUUoaSksbz1FKG8pLCFZKG4pJiZGdChvKSYmIUZ0KGkpKSlyZXR1cm4gby52YWx1ZT1pLCEwO2NvbnN0IGE9WShuKSYmWnQocik/TnVtYmVyKHIpPG4ubGVuZ3RoOlFlKG4sciksYz1SZWZsZWN0LnNldChuLHIsaSxzKTtyZXR1cm4gbj09PUUocykmJihhP1pyKGksbykmJkgobiwic2V0IixyLGksbyk6SChuLCJhZGQiLHIsaSkpLGN9fWZ1bmN0aW9uIE9hKGUsdCl7Y29uc3Qgbj1RZShlLHQpLHI9ZVt0XSxpPVJlZmxlY3QuZGVsZXRlUHJvcGVydHkoZSx0KTtyZXR1cm4gaSYmbiYmSChlLCJkZWxldGUiLHQsdm9pZCAwLHIpLGl9ZnVuY3Rpb24gdmEoZSx0KXtjb25zdCBuPVJlZmxlY3QuaGFzKGUsdCk7cmV0dXJuKCFZdCh0KXx8IXRpLmhhcyh0KSkmJk0oZSwiaGFzIix0KSxufWZ1bmN0aW9uIFJhKGUpe3JldHVybiBNKGUsIml0ZXJhdGUiLFkoZSk/Imxlbmd0aCI6WiksUmVmbGVjdC5vd25LZXlzKGUpfXZhciBUYT17Z2V0OndhLHNldDpTYSxkZWxldGVQcm9wZXJ0eTpPYSxoYXM6dmEsb3duS2V5czpSYX0sQ2E9e2dldDp4YSxzZXQoZSx0KXtyZXR1cm4gY29uc29sZS53YXJuKGBTZXQgb3BlcmF0aW9uIG9uIGtleSAiJHtTdHJpbmcodCl9IiBmYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLGUpLCEwfSxkZWxldGVQcm9wZXJ0eShlLHQpe3JldHVybiBjb25zb2xlLndhcm4oYERlbGV0ZSBvcGVyYXRpb24gb24ga2V5ICIke1N0cmluZyh0KX0iIGZhaWxlZDogdGFyZ2V0IGlzIHJlYWRvbmx5LmAsZSksITB9fSxlbj1lPT5ldChlKT9ybihlKTplLHRuPWU9PmV0KGUpP2FpKGUpOmUsbm49ZT0+ZSx0dD1lPT5SZWZsZWN0LmdldFByb3RvdHlwZU9mKGUpO2Z1bmN0aW9uIFJlKGUsdCxuPSExLHI9ITEpe2U9ZS5fX3ZfcmF3O2NvbnN0IGk9RShlKSxzPUUodCk7dCE9PXMmJiFuJiZNKGksImdldCIsdCksIW4mJk0oaSwiZ2V0IixzKTtjb25zdHtoYXM6b309dHQoaSksYT1yP25uOm4/dG46ZW47aWYoby5jYWxsKGksdCkpcmV0dXJuIGEoZS5nZXQodCkpO2lmKG8uY2FsbChpLHMpKXJldHVybiBhKGUuZ2V0KHMpKTtlIT09aSYmZS5nZXQodCl9ZnVuY3Rpb24gVGUoZSx0PSExKXtjb25zdCBuPXRoaXMuX192X3JhdyxyPUUobiksaT1FKGUpO3JldHVybiBlIT09aSYmIXQmJk0ociwiaGFzIixlKSwhdCYmTShyLCJoYXMiLGkpLGU9PT1pP24uaGFzKGUpOm4uaGFzKGUpfHxuLmhhcyhpKX1mdW5jdGlvbiBDZShlLHQ9ITEpe3JldHVybiBlPWUuX192X3JhdywhdCYmTShFKGUpLCJpdGVyYXRlIixaKSxSZWZsZWN0LmdldChlLCJzaXplIixlKX1mdW5jdGlvbiBPbihlKXtlPUUoZSk7Y29uc3QgdD1FKHRoaXMpO3JldHVybiB0dCh0KS5oYXMuY2FsbCh0LGUpfHwodC5hZGQoZSksSCh0LCJhZGQiLGUsZSkpLHRoaXN9ZnVuY3Rpb24gdm4oZSx0KXt0PUUodCk7Y29uc3Qgbj1FKHRoaXMpLHtoYXM6cixnZXQ6aX09dHQobik7bGV0IHM9ci5jYWxsKG4sZSk7cz9paShuLHIsZSk6KGU9RShlKSxzPXIuY2FsbChuLGUpKTtjb25zdCBvPWkuY2FsbChuLGUpO3JldHVybiBuLnNldChlLHQpLHM/WnIodCxvKSYmSChuLCJzZXQiLGUsdCxvKTpIKG4sImFkZCIsZSx0KSx0aGlzfWZ1bmN0aW9uIFJuKGUpe2NvbnN0IHQ9RSh0aGlzKSx7aGFzOm4sZ2V0OnJ9PXR0KHQpO2xldCBpPW4uY2FsbCh0LGUpO2k/aWkodCxuLGUpOihlPUUoZSksaT1uLmNhbGwodCxlKSk7Y29uc3Qgcz1yP3IuY2FsbCh0LGUpOnZvaWQgMCxvPXQuZGVsZXRlKGUpO3JldHVybiBpJiZIKHQsImRlbGV0ZSIsZSx2b2lkIDAscyksb31mdW5jdGlvbiBUbigpe2NvbnN0IGU9RSh0aGlzKSx0PWUuc2l6ZSE9PTAsbj15ZShlKT9uZXcgTWFwKGUpOm5ldyBTZXQoZSkscj1lLmNsZWFyKCk7cmV0dXJuIHQmJkgoZSwiY2xlYXIiLHZvaWQgMCx2b2lkIDAsbikscn1mdW5jdGlvbiBQZShlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe2NvbnN0IHM9dGhpcyxvPXMuX192X3JhdyxhPUUobyksYz10P25uOmU/dG46ZW47cmV0dXJuIWUmJk0oYSwiaXRlcmF0ZSIsWiksby5mb3JFYWNoKCh1LGwpPT5yLmNhbGwoaSxjKHUpLGMobCkscykpfX1mdW5jdGlvbiBOZShlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe2NvbnN0IGk9dGhpcy5fX3ZfcmF3LHM9RShpKSxvPXllKHMpLGE9ZT09PSJlbnRyaWVzInx8ZT09PVN5bWJvbC5pdGVyYXRvciYmbyxjPWU9PT0ia2V5cyImJm8sdT1pW2VdKC4uLnIpLGw9bj9ubjp0P3RuOmVuO3JldHVybiF0JiZNKHMsIml0ZXJhdGUiLGM/TnQ6Wikse25leHQoKXtjb25zdHt2YWx1ZTpwLGRvbmU6X309dS5uZXh0KCk7cmV0dXJuIF8/e3ZhbHVlOnAsZG9uZTpffTp7dmFsdWU6YT9bbChwWzBdKSxsKHBbMV0pXTpsKHApLGRvbmU6X319LFtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXN9fX19ZnVuY3Rpb24gVShlKXtyZXR1cm4gZnVuY3Rpb24oLi4udCl7e2NvbnN0IG49dFswXT9gb24ga2V5ICIke3RbMF19IiBgOiIiO2NvbnNvbGUud2FybihgJHtmYShlKX0gb3BlcmF0aW9uICR7bn1mYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLEUodGhpcykpfXJldHVybiBlPT09ImRlbGV0ZSI/ITE6dGhpc319ZnVuY3Rpb24gUGEoKXtjb25zdCBlPXtnZXQocyl7cmV0dXJuIFJlKHRoaXMscyl9LGdldCBzaXplKCl7cmV0dXJuIENlKHRoaXMpfSxoYXM6VGUsYWRkOk9uLHNldDp2bixkZWxldGU6Um4sY2xlYXI6VG4sZm9yRWFjaDpQZSghMSwhMSl9LHQ9e2dldChzKXtyZXR1cm4gUmUodGhpcyxzLCExLCEwKX0sZ2V0IHNpemUoKXtyZXR1cm4gQ2UodGhpcyl9LGhhczpUZSxhZGQ6T24sc2V0OnZuLGRlbGV0ZTpSbixjbGVhcjpUbixmb3JFYWNoOlBlKCExLCEwKX0sbj17Z2V0KHMpe3JldHVybiBSZSh0aGlzLHMsITApfSxnZXQgc2l6ZSgpe3JldHVybiBDZSh0aGlzLCEwKX0saGFzKHMpe3JldHVybiBUZS5jYWxsKHRoaXMscywhMCl9LGFkZDpVKCJhZGQiKSxzZXQ6VSgic2V0IiksZGVsZXRlOlUoImRlbGV0ZSIpLGNsZWFyOlUoImNsZWFyIiksZm9yRWFjaDpQZSghMCwhMSl9LHI9e2dldChzKXtyZXR1cm4gUmUodGhpcyxzLCEwLCEwKX0sZ2V0IHNpemUoKXtyZXR1cm4gQ2UodGhpcywhMCl9LGhhcyhzKXtyZXR1cm4gVGUuY2FsbCh0aGlzLHMsITApfSxhZGQ6VSgiYWRkIiksc2V0OlUoInNldCIpLGRlbGV0ZTpVKCJkZWxldGUiKSxjbGVhcjpVKCJjbGVhciIpLGZvckVhY2g6UGUoITAsITApfTtyZXR1cm5bImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIixTeW1ib2wuaXRlcmF0b3JdLmZvckVhY2gocz0+e2Vbc109TmUocywhMSwhMSksbltzXT1OZShzLCEwLCExKSx0W3NdPU5lKHMsITEsITApLHJbc109TmUocywhMCwhMCl9KSxbZSxuLHQscl19dmFyW05hLEZhLHhjLEVjXT1QYSgpO2Z1bmN0aW9uIHJpKGUsdCl7Y29uc3Qgbj1lP0ZhOk5hO3JldHVybihyLGkscyk9Pmk9PT0iX192X2lzUmVhY3RpdmUiPyFlOmk9PT0iX192X2lzUmVhZG9ubHkiP2U6aT09PSJfX3ZfcmF3Ij9yOlJlZmxlY3QuZ2V0KFFlKG4saSkmJmkgaW4gcj9uOnIsaSxzKX12YXIgTGE9e2dldDpyaSghMSl9LE1hPXtnZXQ6cmkoITApfTtmdW5jdGlvbiBpaShlLHQsbil7Y29uc3Qgcj1FKG4pO2lmKHIhPT1uJiZ0LmNhbGwoZSxyKSl7Y29uc3QgaT1ZcihlKTtjb25zb2xlLndhcm4oYFJlYWN0aXZlICR7aX0gY29udGFpbnMgYm90aCB0aGUgcmF3IGFuZCByZWFjdGl2ZSB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBvYmplY3Qke2k9PT0iTWFwIj8iIGFzIGtleXMiOiIifSwgd2hpY2ggY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzLiBBdm9pZCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiB0aGUgcmF3IGFuZCByZWFjdGl2ZSB2ZXJzaW9ucyBvZiBhbiBvYmplY3QgYW5kIG9ubHkgdXNlIHRoZSByZWFjdGl2ZSB2ZXJzaW9uIGlmIHBvc3NpYmxlLmApfX12YXIgc2k9bmV3IFdlYWtNYXAsamE9bmV3IFdlYWtNYXAsb2k9bmV3IFdlYWtNYXAsa2E9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gQmEoZSl7c3dpdGNoKGUpe2Nhc2UiT2JqZWN0IjpjYXNlIkFycmF5IjpyZXR1cm4gMTtjYXNlIk1hcCI6Y2FzZSJTZXQiOmNhc2UiV2Vha01hcCI6Y2FzZSJXZWFrU2V0IjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBJYShlKXtyZXR1cm4gZS5fX3Zfc2tpcHx8IU9iamVjdC5pc0V4dGVuc2libGUoZSk/MDpCYShZcihlKSl9ZnVuY3Rpb24gcm4oZSl7cmV0dXJuIGUmJmUuX192X2lzUmVhZG9ubHk/ZTpjaShlLCExLFRhLExhLHNpKX1mdW5jdGlvbiBhaShlKXtyZXR1cm4gY2koZSwhMCxDYSxNYSxvaSl9ZnVuY3Rpb24gY2koZSx0LG4scixpKXtpZighZXQoZSkpcmV0dXJuIGNvbnNvbGUud2FybihgdmFsdWUgY2Fubm90IGJlIG1hZGUgcmVhY3RpdmU6ICR7U3RyaW5nKGUpfWApLGU7aWYoZS5fX3ZfcmF3JiYhKHQmJmUuX192X2lzUmVhY3RpdmUpKXJldHVybiBlO2NvbnN0IHM9aS5nZXQoZSk7aWYocylyZXR1cm4gcztjb25zdCBvPUlhKGUpO2lmKG89PT0wKXJldHVybiBlO2NvbnN0IGE9bmV3IFByb3h5KGUsbz09PTI/cjpuKTtyZXR1cm4gaS5zZXQoZSxhKSxhfWZ1bmN0aW9uIEUoZSl7cmV0dXJuIGUmJkUoZS5fX3ZfcmF3KXx8ZX1mdW5jdGlvbiBGdChlKXtyZXR1cm4hIShlJiZlLl9fdl9pc1JlZj09PSEwKX1rKCJuZXh0VGljayIsKCk9PlZ0KTtrKCJkaXNwYXRjaCIsZT0+Z2UuYmluZChnZSxlKSk7aygid2F0Y2giLChlLHtldmFsdWF0ZUxhdGVyOnQsY2xlYW51cDpufSk9PihyLGkpPT57bGV0IHM9dChyKSxhPXNyKCgpPT57bGV0IGM7cmV0dXJuIHModT0+Yz11KSxjfSxpKTtuKGEpfSk7aygic3RvcmUiLFFvKTtrKCJkYXRhIixlPT5wcihlKSk7aygicm9vdCIsZT0+R2UoZSkpO2soInJlZnMiLGU9PihlLl94X3JlZnNfcHJveHl8fChlLl94X3JlZnNfcHJveHk9QWUoRGEoZSkpKSxlLl94X3JlZnNfcHJveHkpKTtmdW5jdGlvbiBEYShlKXtsZXQgdD1bXTtyZXR1cm4gbGUoZSxuPT57bi5feF9yZWZzJiZ0LnB1c2gobi5feF9yZWZzKX0pLHR9dmFyIGN0PXt9O2Z1bmN0aW9uIHVpKGUpe3JldHVybiBjdFtlXXx8KGN0W2VdPTApLCsrY3RbZV19ZnVuY3Rpb24gJGEoZSx0KXtyZXR1cm4gbGUoZSxuPT57aWYobi5feF9pZHMmJm4uX3hfaWRzW3RdKXJldHVybiEwfSl9ZnVuY3Rpb24gVWEoZSx0KXtlLl94X2lkc3x8KGUuX3hfaWRzPXt9KSxlLl94X2lkc1t0XXx8KGUuX3hfaWRzW3RdPXVpKHQpKX1rKCJpZCIsKGUse2NsZWFudXA6dH0pPT4obixyPW51bGwpPT57bGV0IGk9YCR7bn0ke3I/YC0ke3J9YDoiIn1gO3JldHVybiBxYShlLGksdCwoKT0+e2xldCBzPSRhKGUsbiksbz1zP3MuX3hfaWRzW25dOnVpKG4pO3JldHVybiByP2Ake259LSR7b30tJHtyfWA6YCR7bn0tJHtvfWB9KX0pO1plKChlLHQpPT57ZS5feF9pZCYmKHQuX3hfaWQ9ZS5feF9pZCl9KTtmdW5jdGlvbiBxYShlLHQsbixyKXtpZihlLl94X2lkfHwoZS5feF9pZD17fSksZS5feF9pZFt0XSlyZXR1cm4gZS5feF9pZFt0XTtsZXQgaT1yKCk7cmV0dXJuIGUuX3hfaWRbdF09aSxuKCgpPT57ZGVsZXRlIGUuX3hfaWRbdF19KSxpfWsoImVsIixlPT5lKTtsaSgiRm9jdXMiLCJmb2N1cyIsImZvY3VzIik7bGkoIlBlcnNpc3QiLCJwZXJzaXN0IiwicGVyc2lzdCIpO2Z1bmN0aW9uIGxpKGUsdCxuKXtrKHQscj0+TChgWW91IGNhbid0IHVzZSBbJCR7dH1dIHdpdGhvdXQgZmlyc3QgaW5zdGFsbGluZyB0aGUgIiR7ZX0iIHBsdWdpbiBoZXJlOiBodHRwczovL2FscGluZWpzLmRldi9wbHVnaW5zLyR7bn1gLHIpKX1SKCJtb2RlbGFibGUiLChlLHtleHByZXNzaW9uOnR9LHtlZmZlY3Q6bixldmFsdWF0ZUxhdGVyOnIsY2xlYW51cDppfSk9PntsZXQgcz1yKHQpLG89KCk9PntsZXQgbDtyZXR1cm4gcyhwPT5sPXApLGx9LGE9cihgJHt0fSA9IF9fcGxhY2Vob2xkZXJgKSxjPWw9PmEoKCk9Pnt9LHtzY29wZTp7X19wbGFjZWhvbGRlcjpsfX0pLHU9bygpO2ModSkscXVldWVNaWNyb3Rhc2soKCk9PntpZighZS5feF9tb2RlbClyZXR1cm47ZS5feF9yZW1vdmVNb2RlbExpc3RlbmVycy5kZWZhdWx0KCk7bGV0IGw9ZS5feF9tb2RlbC5nZXQscD1lLl94X21vZGVsLnNldCxfPUpyKHtnZXQoKXtyZXR1cm4gbCgpfSxzZXQodyl7cCh3KX19LHtnZXQoKXtyZXR1cm4gbygpfSxzZXQodyl7Yyh3KX19KTtpKF8pfSl9KTtSKCJ0ZWxlcG9ydCIsKGUse21vZGlmaWVyczp0LGV4cHJlc3Npb246bn0se2NsZWFudXA6cn0pPT57ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkhPT0idGVtcGxhdGUiJiZMKCJ4LXRlbGVwb3J0IGNhbiBvbmx5IGJlIHVzZWQgb24gYSA8dGVtcGxhdGU+IHRhZyIsZSk7bGV0IGk9Q24obikscz1lLmNvbnRlbnQuY2xvbmVOb2RlKCEwKS5maXJzdEVsZW1lbnRDaGlsZDtlLl94X3RlbGVwb3J0PXMscy5feF90ZWxlcG9ydEJhY2s9ZSxlLnNldEF0dHJpYnV0ZSgiZGF0YS10ZWxlcG9ydC10ZW1wbGF0ZSIsITApLHMuc2V0QXR0cmlidXRlKCJkYXRhLXRlbGVwb3J0LXRhcmdldCIsITApLGUuX3hfZm9yd2FyZEV2ZW50cyYmZS5feF9mb3J3YXJkRXZlbnRzLmZvckVhY2goYT0+e3MuYWRkRXZlbnRMaXN0ZW5lcihhLGM9PntjLnN0b3BQcm9wYWdhdGlvbigpLGUuZGlzcGF0Y2hFdmVudChuZXcgYy5jb25zdHJ1Y3RvcihjLnR5cGUsYykpfSl9KSxTZShzLHt9LGUpO2xldCBvPShhLGMsdSk9Pnt1LmluY2x1ZGVzKCJwcmVwZW5kIik/Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGMpOnUuaW5jbHVkZXMoImFwcGVuZCIpP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxjLm5leHRTaWJsaW5nKTpjLmFwcGVuZENoaWxkKGEpfTtTKCgpPT57byhzLGksdCkseigoKT0+eyQocyl9KSgpfSksZS5feF90ZWxlcG9ydFB1dEJhY2s9KCk9PntsZXQgYT1DbihuKTtTKCgpPT57byhlLl94X3RlbGVwb3J0LGEsdCl9KX0scigoKT0+UygoKT0+e3MucmVtb3ZlKCksZmUocyl9KSl9KTt2YXIgSGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZnVuY3Rpb24gQ24oZSl7bGV0IHQ9eigoKT0+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKSwoKT0+SGEpKCk7cmV0dXJuIHR8fEwoYENhbm5vdCBmaW5kIHgtdGVsZXBvcnQgZWxlbWVudCBmb3Igc2VsZWN0b3I6ICIke2V9ImApLHR9dmFyIGZpPSgpPT57fTtmaS5pbmxpbmU9KGUse21vZGlmaWVyczp0fSx7Y2xlYW51cDpufSk9Pnt0LmluY2x1ZGVzKCJzZWxmIik/ZS5feF9pZ25vcmVTZWxmPSEwOmUuX3hfaWdub3JlPSEwLG4oKCk9Pnt0LmluY2x1ZGVzKCJzZWxmIik/ZGVsZXRlIGUuX3hfaWdub3JlU2VsZjpkZWxldGUgZS5feF9pZ25vcmV9KX07UigiaWdub3JlIixmaSk7UigiZWZmZWN0Iix6KChlLHtleHByZXNzaW9uOnR9LHtlZmZlY3Q6bn0pPT57bihDKGUsdCkpfSkpO2Z1bmN0aW9uIEx0KGUsdCxuLHIpe2xldCBpPWUscz1jPT5yKGMpLG89e30sYT0oYyx1KT0+bD0+dShjLGwpO2lmKG4uaW5jbHVkZXMoImRvdCIpJiYodD16YSh0KSksbi5pbmNsdWRlcygiY2FtZWwiKSYmKHQ9S2EodCkpLG4uaW5jbHVkZXMoInBhc3NpdmUiKSYmKG8ucGFzc2l2ZT0hMCksbi5pbmNsdWRlcygiY2FwdHVyZSIpJiYoby5jYXB0dXJlPSEwKSxuLmluY2x1ZGVzKCJ3aW5kb3ciKSYmKGk9d2luZG93KSxuLmluY2x1ZGVzKCJkb2N1bWVudCIpJiYoaT1kb2N1bWVudCksbi5pbmNsdWRlcygiZGVib3VuY2UiKSl7bGV0IGM9bltuLmluZGV4T2YoImRlYm91bmNlIikrMV18fCJpbnZhbGlkLXdhaXQiLHU9cWUoYy5zcGxpdCgibXMiKVswXSk/TnVtYmVyKGMuc3BsaXQoIm1zIilbMF0pOjI1MDtzPXpyKHMsdSl9aWYobi5pbmNsdWRlcygidGhyb3R0bGUiKSl7bGV0IGM9bltuLmluZGV4T2YoInRocm90dGxlIikrMV18fCJpbnZhbGlkLXdhaXQiLHU9cWUoYy5zcGxpdCgibXMiKVswXSk/TnVtYmVyKGMuc3BsaXQoIm1zIilbMF0pOjI1MDtzPUtyKHMsdSl9cmV0dXJuIG4uaW5jbHVkZXMoInByZXZlbnQiKSYmKHM9YShzLChjLHUpPT57dS5wcmV2ZW50RGVmYXVsdCgpLGModSl9KSksbi5pbmNsdWRlcygic3RvcCIpJiYocz1hKHMsKGMsdSk9Pnt1LnN0b3BQcm9wYWdhdGlvbigpLGModSl9KSksbi5pbmNsdWRlcygib25jZSIpJiYocz1hKHMsKGMsdSk9PntjKHUpLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHMsbyl9KSksKG4uaW5jbHVkZXMoImF3YXkiKXx8bi5pbmNsdWRlcygib3V0c2lkZSIpKSYmKGk9ZG9jdW1lbnQscz1hKHMsKGMsdSk9PntlLmNvbnRhaW5zKHUudGFyZ2V0KXx8dS50YXJnZXQuaXNDb25uZWN0ZWQhPT0hMSYmKGUub2Zmc2V0V2lkdGg8MSYmZS5vZmZzZXRIZWlnaHQ8MXx8ZS5feF9pc1Nob3duIT09ITEmJmModSkpfSkpLG4uaW5jbHVkZXMoInNlbGYiKSYmKHM9YShzLChjLHUpPT57dS50YXJnZXQ9PT1lJiZjKHUpfSkpLChXYSh0KXx8ZGkodCkpJiYocz1hKHMsKGMsdSk9PntWYSh1LG4pfHxjKHUpfSkpLGkuYWRkRXZlbnRMaXN0ZW5lcih0LHMsbyksKCk9PntpLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxzLG8pfX1mdW5jdGlvbiB6YShlKXtyZXR1cm4gZS5yZXBsYWNlKC8tL2csIi4iKX1mdW5jdGlvbiBLYShlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oXHcpL2csKHQsbik9Pm4udG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuIUFycmF5LmlzQXJyYXkoZSkmJiFpc05hTihlKX1mdW5jdGlvbiBKYShlKXtyZXR1cm5bIiAiLCJfIl0uaW5jbHVkZXMoZSk/ZTplLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIikucmVwbGFjZSgvW19cc10vLCItIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBXYShlKXtyZXR1cm5bImtleWRvd24iLCJrZXl1cCJdLmluY2x1ZGVzKGUpfWZ1bmN0aW9uIGRpKGUpe3JldHVyblsiY29udGV4dG1lbnUiLCJjbGljayIsIm1vdXNlIl0uc29tZSh0PT5lLmluY2x1ZGVzKHQpKX1mdW5jdGlvbiBWYShlLHQpe2xldCBuPXQuZmlsdGVyKHM9PiFbIndpbmRvdyIsImRvY3VtZW50IiwicHJldmVudCIsInN0b3AiLCJvbmNlIiwiY2FwdHVyZSIsInNlbGYiLCJhd2F5Iiwib3V0c2lkZSIsInBhc3NpdmUiXS5pbmNsdWRlcyhzKSk7aWYobi5pbmNsdWRlcygiZGVib3VuY2UiKSl7bGV0IHM9bi5pbmRleE9mKCJkZWJvdW5jZSIpO24uc3BsaWNlKHMscWUoKG5bcysxXXx8ImludmFsaWQtd2FpdCIpLnNwbGl0KCJtcyIpWzBdKT8yOjEpfWlmKG4uaW5jbHVkZXMoInRocm90dGxlIikpe2xldCBzPW4uaW5kZXhPZigidGhyb3R0bGUiKTtuLnNwbGljZShzLHFlKChuW3MrMV18fCJpbnZhbGlkLXdhaXQiKS5zcGxpdCgibXMiKVswXSk/MjoxKX1pZihuLmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MSYmUG4oZS5rZXkpLmluY2x1ZGVzKG5bMF0pKXJldHVybiExO2NvbnN0IGk9WyJjdHJsIiwic2hpZnQiLCJhbHQiLCJtZXRhIiwiY21kIiwic3VwZXIiXS5maWx0ZXIocz0+bi5pbmNsdWRlcyhzKSk7cmV0dXJuIG49bi5maWx0ZXIocz0+IWkuaW5jbHVkZXMocykpLCEoaS5sZW5ndGg+MCYmaS5maWx0ZXIobz0+KChvPT09ImNtZCJ8fG89PT0ic3VwZXIiKSYmKG89Im1ldGEiKSxlW2Ake299S2V5YF0pKS5sZW5ndGg9PT1pLmxlbmd0aCYmKGRpKGUudHlwZSl8fFBuKGUua2V5KS5pbmNsdWRlcyhuWzBdKSkpfWZ1bmN0aW9uIFBuKGUpe2lmKCFlKXJldHVybltdO2U9SmEoZSk7bGV0IHQ9e2N0cmw6ImNvbnRyb2wiLHNsYXNoOiIvIixzcGFjZToiICIsc3BhY2ViYXI6IiAiLGNtZDoibWV0YSIsZXNjOiJlc2NhcGUiLHVwOiJhcnJvdy11cCIsZG93bjoiYXJyb3ctZG93biIsbGVmdDoiYXJyb3ctbGVmdCIscmlnaHQ6ImFycm93LXJpZ2h0IixwZXJpb2Q6Ii4iLGNvbW1hOiIsIixlcXVhbDoiPSIsbWludXM6Ii0iLHVuZGVyc2NvcmU6Il8ifTtyZXR1cm4gdFtlXT1lLE9iamVjdC5rZXlzKHQpLm1hcChuPT57aWYodFtuXT09PWUpcmV0dXJuIG59KS5maWx0ZXIobj0+bil9UigibW9kZWwiLChlLHttb2RpZmllcnM6dCxleHByZXNzaW9uOm59LHtlZmZlY3Q6cixjbGVhbnVwOml9KT0+e2xldCBzPWU7dC5pbmNsdWRlcygicGFyZW50IikmJihzPWUucGFyZW50Tm9kZSk7bGV0IG89QyhzLG4pLGE7dHlwZW9mIG49PSJzdHJpbmciP2E9QyhzLGAke259ID0gX19wbGFjZWhvbGRlcmApOnR5cGVvZiBuPT0iZnVuY3Rpb24iJiZ0eXBlb2YgbigpPT0ic3RyaW5nIj9hPUMocyxgJHtuKCl9ID0gX19wbGFjZWhvbGRlcmApOmE9KCk9Pnt9O2xldCBjPSgpPT57bGV0IF87cmV0dXJuIG8odz0+Xz13KSxObihfKT9fLmdldCgpOl99LHU9Xz0+e2xldCB3O28oaD0+dz1oKSxObih3KT93LnNldChfKTphKCgpPT57fSx7c2NvcGU6e19fcGxhY2Vob2xkZXI6X319KX07dHlwZW9mIG49PSJzdHJpbmciJiZlLnR5cGU9PT0icmFkaW8iJiZTKCgpPT57ZS5oYXNBdHRyaWJ1dGUoIm5hbWUiKXx8ZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLG4pfSk7dmFyIGw9ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0ic2VsZWN0Inx8WyJjaGVja2JveCIsInJhZGlvIl0uaW5jbHVkZXMoZS50eXBlKXx8dC5pbmNsdWRlcygibGF6eSIpPyJjaGFuZ2UiOiJpbnB1dCI7bGV0IHA9cT8oKT0+e306THQoZSxsLHQsXz0+e3UodXQoZSx0LF8sYygpKSl9KTtpZih0LmluY2x1ZGVzKCJmaWxsIikmJihbdm9pZCAwLG51bGwsIiJdLmluY2x1ZGVzKGMoKSl8fEd0KGUpJiZBcnJheS5pc0FycmF5KGMoKSl8fGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCImJmUubXVsdGlwbGUpJiZ1KHV0KGUsdCx7dGFyZ2V0OmV9LGMoKSkpLGUuX3hfcmVtb3ZlTW9kZWxMaXN0ZW5lcnN8fChlLl94X3JlbW92ZU1vZGVsTGlzdGVuZXJzPXt9KSxlLl94X3JlbW92ZU1vZGVsTGlzdGVuZXJzLmRlZmF1bHQ9cCxpKCgpPT5lLl94X3JlbW92ZU1vZGVsTGlzdGVuZXJzLmRlZmF1bHQoKSksZS5mb3JtKXtsZXQgXz1MdChlLmZvcm0sInJlc2V0IixbXSx3PT57VnQoKCk9PmUuX3hfbW9kZWwmJmUuX3hfbW9kZWwuc2V0KHV0KGUsdCx7dGFyZ2V0OmV9LGMoKSkpKX0pO2koKCk9Pl8oKSl9ZS5feF9tb2RlbD17Z2V0KCl7cmV0dXJuIGMoKX0sc2V0KF8pe3UoXyl9fSxlLl94X2ZvcmNlTW9kZWxVcGRhdGU9Xz0+e189PT12b2lkIDAmJnR5cGVvZiBuPT0ic3RyaW5nIiYmbi5tYXRjaCgvXC4vKSYmKF89IiIpLHdpbmRvdy5mcm9tTW9kZWw9ITAsUygoKT0+RHIoZSwidmFsdWUiLF8pKSxkZWxldGUgd2luZG93LmZyb21Nb2RlbH0scigoKT0+e2xldCBfPWMoKTt0LmluY2x1ZGVzKCJ1bmludHJ1c2l2ZSIpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlzU2FtZU5vZGUoZSl8fGUuX3hfZm9yY2VNb2RlbFVwZGF0ZShfKX0pfSk7ZnVuY3Rpb24gdXQoZSx0LG4scil7cmV0dXJuIFMoKCk9PntpZihuIGluc3RhbmNlb2YgQ3VzdG9tRXZlbnQmJm4uZGV0YWlsIT09dm9pZCAwKXJldHVybiBuLmRldGFpbCE9PW51bGwmJm4uZGV0YWlsIT09dm9pZCAwP24uZGV0YWlsOm4udGFyZ2V0LnZhbHVlO2lmKEd0KGUpKWlmKEFycmF5LmlzQXJyYXkocikpe2xldCBpPW51bGw7cmV0dXJuIHQuaW5jbHVkZXMoIm51bWJlciIpP2k9bHQobi50YXJnZXQudmFsdWUpOnQuaW5jbHVkZXMoImJvb2xlYW4iKT9pPWtlKG4udGFyZ2V0LnZhbHVlKTppPW4udGFyZ2V0LnZhbHVlLG4udGFyZ2V0LmNoZWNrZWQ/ci5pbmNsdWRlcyhpKT9yOnIuY29uY2F0KFtpXSk6ci5maWx0ZXIocz0+IVhhKHMsaSkpfWVsc2UgcmV0dXJuIG4udGFyZ2V0LmNoZWNrZWQ7ZWxzZXtpZihlLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PSJzZWxlY3QiJiZlLm11bHRpcGxlKXJldHVybiB0LmluY2x1ZGVzKCJudW1iZXIiKT9BcnJheS5mcm9tKG4udGFyZ2V0LnNlbGVjdGVkT3B0aW9ucykubWFwKGk9PntsZXQgcz1pLnZhbHVlfHxpLnRleHQ7cmV0dXJuIGx0KHMpfSk6dC5pbmNsdWRlcygiYm9vbGVhbiIpP0FycmF5LmZyb20obi50YXJnZXQuc2VsZWN0ZWRPcHRpb25zKS5tYXAoaT0+e2xldCBzPWkudmFsdWV8fGkudGV4dDtyZXR1cm4ga2Uocyl9KTpBcnJheS5mcm9tKG4udGFyZ2V0LnNlbGVjdGVkT3B0aW9ucykubWFwKGk9PmkudmFsdWV8fGkudGV4dCk7e2xldCBpO3JldHVybiBIcihlKT9uLnRhcmdldC5jaGVja2VkP2k9bi50YXJnZXQudmFsdWU6aT1yOmk9bi50YXJnZXQudmFsdWUsdC5pbmNsdWRlcygibnVtYmVyIik/bHQoaSk6dC5pbmNsdWRlcygiYm9vbGVhbiIpP2tlKGkpOnQuaW5jbHVkZXMoInRyaW0iKT9pLnRyaW0oKTppfX19KX1mdW5jdGlvbiBsdChlKXtsZXQgdD1lP3BhcnNlRmxvYXQoZSk6bnVsbDtyZXR1cm4gR2EodCk/dDplfWZ1bmN0aW9uIFhhKGUsdCl7cmV0dXJuIGU9PXR9ZnVuY3Rpb24gR2EoZSl7cmV0dXJuIUFycmF5LmlzQXJyYXkoZSkmJiFpc05hTihlKX1mdW5jdGlvbiBObihlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0IiYmdHlwZW9mIGUuZ2V0PT0iZnVuY3Rpb24iJiZ0eXBlb2YgZS5zZXQ9PSJmdW5jdGlvbiJ9UigiY2xvYWsiLGU9PnF1ZXVlTWljcm90YXNrKCgpPT5TKCgpPT5lLnJlbW92ZUF0dHJpYnV0ZSh1ZSgiY2xvYWsiKSkpKSk7THIoKCk9PmBbJHt1ZSgiaW5pdCIpfV1gKTtSKCJpbml0Iix6KChlLHtleHByZXNzaW9uOnR9LHtldmFsdWF0ZTpufSk9PnR5cGVvZiB0PT0ic3RyaW5nIj8hIXQudHJpbSgpJiZuKHQse30sITEpOm4odCx7fSwhMSkpKTtSKCJ0ZXh0IiwoZSx7ZXhwcmVzc2lvbjp0fSx7ZWZmZWN0Om4sZXZhbHVhdGVMYXRlcjpyfSk9PntsZXQgaT1yKHQpO24oKCk9PntpKHM9PntTKCgpPT57ZS50ZXh0Q29udGVudD1zfSl9KX0pfSk7UigiaHRtbCIsKGUse2V4cHJlc3Npb246dH0se2VmZmVjdDpuLGV2YWx1YXRlTGF0ZXI6cn0pPT57bGV0IGk9cih0KTtuKCgpPT57aShzPT57UygoKT0+e2UuaW5uZXJIVE1MPXMsZS5feF9pZ25vcmVTZWxmPSEwLCQoZSksZGVsZXRlIGUuX3hfaWdub3JlU2VsZn0pfSl9KX0pO0t0KFNyKCI6IixBcih1ZSgiYmluZDoiKSkpKTt2YXIgcGk9KGUse3ZhbHVlOnQsbW9kaWZpZXJzOm4sZXhwcmVzc2lvbjpyLG9yaWdpbmFsOml9LHtlZmZlY3Q6cyxjbGVhbnVwOm99KT0+e2lmKCF0KXtsZXQgYz17fTt0YShjKSxDKGUscikobD0+e1ZyKGUsbCxpKX0se3Njb3BlOmN9KTtyZXR1cm59aWYodD09PSJrZXkiKXJldHVybiBZYShlLHIpO2lmKGUuX3hfaW5saW5lQmluZGluZ3MmJmUuX3hfaW5saW5lQmluZGluZ3NbdF0mJmUuX3hfaW5saW5lQmluZGluZ3NbdF0uZXh0cmFjdClyZXR1cm47bGV0IGE9QyhlLHIpO3MoKCk9PmEoYz0+e2M9PT12b2lkIDAmJnR5cGVvZiByPT0ic3RyaW5nIiYmci5tYXRjaCgvXC4vKSYmKGM9IiIpLFMoKCk9PkRyKGUsdCxjLG4pKX0pKSxvKCgpPT57ZS5feF91bmRvQWRkZWRDbGFzc2VzJiZlLl94X3VuZG9BZGRlZENsYXNzZXMoKSxlLl94X3VuZG9BZGRlZFN0eWxlcyYmZS5feF91bmRvQWRkZWRTdHlsZXMoKX0pfTtwaS5pbmxpbmU9KGUse3ZhbHVlOnQsbW9kaWZpZXJzOm4sZXhwcmVzc2lvbjpyfSk9Pnt0JiYoZS5feF9pbmxpbmVCaW5kaW5nc3x8KGUuX3hfaW5saW5lQmluZGluZ3M9e30pLGUuX3hfaW5saW5lQmluZGluZ3NbdF09e2V4cHJlc3Npb246cixleHRyYWN0OiExfSl9O1IoImJpbmQiLHBpKTtmdW5jdGlvbiBZYShlLHQpe2UuX3hfa2V5RXhwcmVzc2lvbj10fUZyKCgpPT5gWyR7dWUoImRhdGEiKX1dYCk7UigiZGF0YSIsKGUse2V4cHJlc3Npb246dH0se2NsZWFudXA6bn0pPT57aWYoWmEoZSkpcmV0dXJuO3Q9dD09PSIiPyJ7fSI6dDtsZXQgcj17fTtFdChyLGUpO2xldCBpPXt9O3JhKGkscik7bGV0IHM9RyhlLHQse3Njb3BlOml9KTsocz09PXZvaWQgMHx8cz09PSEwKSYmKHM9e30pLEV0KHMsZSk7bGV0IG89YWUocyk7aHIobyk7bGV0IGE9U2UoZSxvKTtvLmluaXQmJkcoZSxvLmluaXQpLG4oKCk9PntvLmRlc3Ryb3kmJkcoZSxvLmRlc3Ryb3kpLGEoKX0pfSk7WmUoKGUsdCk9PntlLl94X2RhdGFTdGFjayYmKHQuX3hfZGF0YVN0YWNrPWUuX3hfZGF0YVN0YWNrLHQuc2V0QXR0cmlidXRlKCJkYXRhLWhhcy1hbHBpbmUtc3RhdGUiLCEwKSl9KTtmdW5jdGlvbiBaYShlKXtyZXR1cm4gcT9DdD8hMDplLmhhc0F0dHJpYnV0ZSgiZGF0YS1oYXMtYWxwaW5lLXN0YXRlIik6ITF9Uigic2hvdyIsKGUse21vZGlmaWVyczp0LGV4cHJlc3Npb246bn0se2VmZmVjdDpyfSk9PntsZXQgaT1DKGUsbik7ZS5feF9kb0hpZGV8fChlLl94X2RvSGlkZT0oKT0+e1MoKCk9PntlLnN0eWxlLnNldFByb3BlcnR5KCJkaXNwbGF5Iiwibm9uZSIsdC5pbmNsdWRlcygiaW1wb3J0YW50Iik/ImltcG9ydGFudCI6dm9pZCAwKX0pfSksZS5feF9kb1Nob3d8fChlLl94X2RvU2hvdz0oKT0+e1MoKCk9PntlLnN0eWxlLmxlbmd0aD09PTEmJmUuc3R5bGUuZGlzcGxheT09PSJub25lIj9lLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKTplLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJkaXNwbGF5Iil9KX0pO2xldCBzPSgpPT57ZS5feF9kb0hpZGUoKSxlLl94X2lzU2hvd249ITF9LG89KCk9PntlLl94X2RvU2hvdygpLGUuX3hfaXNTaG93bj0hMH0sYT0oKT0+c2V0VGltZW91dChvKSxjPVJ0KHA9PnA/bygpOnMoKSxwPT57dHlwZW9mIGUuX3hfdG9nZ2xlQW5kQ2FzY2FkZVdpdGhUcmFuc2l0aW9ucz09ImZ1bmN0aW9uIj9lLl94X3RvZ2dsZUFuZENhc2NhZGVXaXRoVHJhbnNpdGlvbnMoZSxwLG8scyk6cD9hKCk6cygpfSksdSxsPSEwO3IoKCk9PmkocD0+eyFsJiZwPT09dXx8KHQuaW5jbHVkZXMoImltbWVkaWF0ZSIpJiYocD9hKCk6cygpKSxjKHApLHU9cCxsPSExKX0pKX0pO1IoImZvciIsKGUse2V4cHJlc3Npb246dH0se2VmZmVjdDpuLGNsZWFudXA6cn0pPT57bGV0IGk9ZWModCkscz1DKGUsaS5pdGVtcyksbz1DKGUsZS5feF9rZXlFeHByZXNzaW9ufHwiaW5kZXgiKTtlLl94X3ByZXZLZXlzPVtdLGUuX3hfbG9va3VwPXt9LG4oKCk9PlFhKGUsaSxzLG8pKSxyKCgpPT57T2JqZWN0LnZhbHVlcyhlLl94X2xvb2t1cCkuZm9yRWFjaChhPT5TKCgpPT57ZmUoYSksYS5yZW1vdmUoKX0pKSxkZWxldGUgZS5feF9wcmV2S2V5cyxkZWxldGUgZS5feF9sb29rdXB9KX0pO2Z1bmN0aW9uIFFhKGUsdCxuLHIpe2xldCBpPW89PnR5cGVvZiBvPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkobykscz1lO24obz0+e3RjKG8pJiZvPj0wJiYobz1BcnJheS5mcm9tKEFycmF5KG8pLmtleXMoKSxkPT5kKzEpKSxvPT09dm9pZCAwJiYobz1bXSk7bGV0IGE9ZS5feF9sb29rdXAsYz1lLl94X3ByZXZLZXlzLHU9W10sbD1bXTtpZihpKG8pKW89T2JqZWN0LmVudHJpZXMobykubWFwKChbZCxtXSk9PntsZXQgYj1Gbih0LG0sZCxvKTtyKHg9PntsLmluY2x1ZGVzKHgpJiZMKCJEdXBsaWNhdGUga2V5IG9uIHgtZm9yIixlKSxsLnB1c2goeCl9LHtzY29wZTp7aW5kZXg6ZCwuLi5ifX0pLHUucHVzaChiKX0pO2Vsc2UgZm9yKGxldCBkPTA7ZDxvLmxlbmd0aDtkKyspe2xldCBtPUZuKHQsb1tkXSxkLG8pO3IoYj0+e2wuaW5jbHVkZXMoYikmJkwoIkR1cGxpY2F0ZSBrZXkgb24geC1mb3IiLGUpLGwucHVzaChiKX0se3Njb3BlOntpbmRleDpkLC4uLm19fSksdS5wdXNoKG0pfWxldCBwPVtdLF89W10sdz1bXSxoPVtdO2ZvcihsZXQgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXtsZXQgbT1jW2RdO2wuaW5kZXhPZihtKT09PS0xJiZ3LnB1c2gobSl9Yz1jLmZpbHRlcihkPT4hdy5pbmNsdWRlcyhkKSk7bGV0IGc9InRlbXBsYXRlIjtmb3IobGV0IGQ9MDtkPGwubGVuZ3RoO2QrKyl7bGV0IG09bFtkXSxiPWMuaW5kZXhPZihtKTtpZihiPT09LTEpYy5zcGxpY2UoZCwwLG0pLHAucHVzaChbZyxkXSk7ZWxzZSBpZihiIT09ZCl7bGV0IHg9Yy5zcGxpY2UoZCwxKVswXSxBPWMuc3BsaWNlKGItMSwxKVswXTtjLnNwbGljZShkLDAsQSksYy5zcGxpY2UoYiwwLHgpLF8ucHVzaChbeCxBXSl9ZWxzZSBoLnB1c2gobSk7Zz1tfWZvcihsZXQgZD0wO2Q8dy5sZW5ndGg7ZCsrKXtsZXQgbT13W2RdO20gaW4gYSYmKFMoKCk9PntmZShhW21dKSxhW21dLnJlbW92ZSgpfSksZGVsZXRlIGFbbV0pfWZvcihsZXQgZD0wO2Q8Xy5sZW5ndGg7ZCsrKXtsZXRbbSxiXT1fW2RdLHg9YVttXSxBPWFbYl0sTz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtTKCgpPT57QXx8TCgneC1mb3IgIjprZXkiIGlzIHVuZGVmaW5lZCBvciBpbnZhbGlkJyxzLGIsYSksQS5hZnRlcihPKSx4LmFmdGVyKEEpLEEuX3hfY3VycmVudElmRWwmJkEuYWZ0ZXIoQS5feF9jdXJyZW50SWZFbCksTy5iZWZvcmUoeCkseC5feF9jdXJyZW50SWZFbCYmeC5hZnRlcih4Ll94X2N1cnJlbnRJZkVsKSxPLnJlbW92ZSgpfSksQS5feF9yZWZyZXNoWEZvclNjb3BlKHVbbC5pbmRleE9mKGIpXSl9Zm9yKGxldCBkPTA7ZDxwLmxlbmd0aDtkKyspe2xldFttLGJdPXBbZF0seD1tPT09InRlbXBsYXRlIj9zOmFbbV07eC5feF9jdXJyZW50SWZFbCYmKHg9eC5feF9jdXJyZW50SWZFbCk7bGV0IEE9dVtiXSxPPWxbYl0sUD1kb2N1bWVudC5pbXBvcnROb2RlKHMuY29udGVudCwhMCkuZmlyc3RFbGVtZW50Q2hpbGQsQj1hZShBKTtTZShQLEIscyksUC5feF9yZWZyZXNoWEZvclNjb3BlPW5lPT57T2JqZWN0LmVudHJpZXMobmUpLmZvckVhY2goKFt2ZSxtaV0pPT57Qlt2ZV09bWl9KX0sUygoKT0+e3guYWZ0ZXIoUCkseigoKT0+JChQKSkoKX0pLHR5cGVvZiBPPT0ib2JqZWN0IiYmTCgieC1mb3Iga2V5IGNhbm5vdCBiZSBhbiBvYmplY3QsIGl0IG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gaW50ZWdlciIscyksYVtPXT1QfWZvcihsZXQgZD0wO2Q8aC5sZW5ndGg7ZCsrKWFbaFtkXV0uX3hfcmVmcmVzaFhGb3JTY29wZSh1W2wuaW5kZXhPZihoW2RdKV0pO3MuX3hfcHJldktleXM9bH0pfWZ1bmN0aW9uIGVjKGUpe2xldCB0PS8sKFteLFx9XF1dKikoPzosKFteLFx9XF1dKikpPyQvLG49L15ccypcKHxcKVxzKiQvZyxyPS8oW1xzXFNdKj8pXHMrKD86aW58b2YpXHMrKFtcc1xTXSopLyxpPWUubWF0Y2gocik7aWYoIWkpcmV0dXJuO2xldCBzPXt9O3MuaXRlbXM9aVsyXS50cmltKCk7bGV0IG89aVsxXS5yZXBsYWNlKG4sIiIpLnRyaW0oKSxhPW8ubWF0Y2godCk7cmV0dXJuIGE/KHMuaXRlbT1vLnJlcGxhY2UodCwiIikudHJpbSgpLHMuaW5kZXg9YVsxXS50cmltKCksYVsyXSYmKHMuY29sbGVjdGlvbj1hWzJdLnRyaW0oKSkpOnMuaXRlbT1vLHN9ZnVuY3Rpb24gRm4oZSx0LG4scil7bGV0IGk9e307cmV0dXJuL15cWy4qXF0kLy50ZXN0KGUuaXRlbSkmJkFycmF5LmlzQXJyYXkodCk/ZS5pdGVtLnJlcGxhY2UoIlsiLCIiKS5yZXBsYWNlKCJdIiwiIikuc3BsaXQoIiwiKS5tYXAobz0+by50cmltKCkpLmZvckVhY2goKG8sYSk9PntpW29dPXRbYV19KTovXlx7LipcfSQvLnRlc3QoZS5pdGVtKSYmIUFycmF5LmlzQXJyYXkodCkmJnR5cGVvZiB0PT0ib2JqZWN0Ij9lLml0ZW0ucmVwbGFjZSgieyIsIiIpLnJlcGxhY2UoIn0iLCIiKS5zcGxpdCgiLCIpLm1hcChvPT5vLnRyaW0oKSkuZm9yRWFjaChvPT57aVtvXT10W29dfSk6aVtlLml0ZW1dPXQsZS5pbmRleCYmKGlbZS5pbmRleF09biksZS5jb2xsZWN0aW9uJiYoaVtlLmNvbGxlY3Rpb25dPXIpLGl9ZnVuY3Rpb24gdGMoZSl7cmV0dXJuIUFycmF5LmlzQXJyYXkoZSkmJiFpc05hTihlKX1mdW5jdGlvbiBoaSgpe31oaS5pbmxpbmU9KGUse2V4cHJlc3Npb246dH0se2NsZWFudXA6bn0pPT57bGV0IHI9R2UoZSk7ci5feF9yZWZzfHwoci5feF9yZWZzPXt9KSxyLl94X3JlZnNbdF09ZSxuKCgpPT5kZWxldGUgci5feF9yZWZzW3RdKX07UigicmVmIixoaSk7UigiaWYiLChlLHtleHByZXNzaW9uOnR9LHtlZmZlY3Q6bixjbGVhbnVwOnJ9KT0+e2UudGFnTmFtZS50b0xvd2VyQ2FzZSgpIT09InRlbXBsYXRlIiYmTCgieC1pZiBjYW4gb25seSBiZSB1c2VkIG9uIGEgPHRlbXBsYXRlPiB0YWciLGUpO2xldCBpPUMoZSx0KSxzPSgpPT57aWYoZS5feF9jdXJyZW50SWZFbClyZXR1cm4gZS5feF9jdXJyZW50SWZFbDtsZXQgYT1lLmNvbnRlbnQuY2xvbmVOb2RlKCEwKS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gU2UoYSx7fSxlKSxTKCgpPT57ZS5hZnRlcihhKSx6KCgpPT4kKGEpKSgpfSksZS5feF9jdXJyZW50SWZFbD1hLGUuX3hfdW5kb0lmPSgpPT57UygoKT0+e2ZlKGEpLGEucmVtb3ZlKCl9KSxkZWxldGUgZS5feF9jdXJyZW50SWZFbH0sYX0sbz0oKT0+e2UuX3hfdW5kb0lmJiYoZS5feF91bmRvSWYoKSxkZWxldGUgZS5feF91bmRvSWYpfTtuKCgpPT5pKGE9PnthP3MoKTpvKCl9KSkscigoKT0+ZS5feF91bmRvSWYmJmUuX3hfdW5kb0lmKCkpfSk7UigiaWQiLChlLHtleHByZXNzaW9uOnR9LHtldmFsdWF0ZTpufSk9PntuKHQpLmZvckVhY2goaT0+VWEoZSxpKSl9KTtaZSgoZSx0KT0+e2UuX3hfaWRzJiYodC5feF9pZHM9ZS5feF9pZHMpfSk7S3QoU3IoIkAiLEFyKHVlKCJvbjoiKSkpKTtSKCJvbiIseigoZSx7dmFsdWU6dCxtb2RpZmllcnM6bixleHByZXNzaW9uOnJ9LHtjbGVhbnVwOml9KT0+e2xldCBzPXI/QyhlLHIpOigpPT57fTtlLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PSJ0ZW1wbGF0ZSImJihlLl94X2ZvcndhcmRFdmVudHN8fChlLl94X2ZvcndhcmRFdmVudHM9W10pLGUuX3hfZm9yd2FyZEV2ZW50cy5pbmNsdWRlcyh0KXx8ZS5feF9mb3J3YXJkRXZlbnRzLnB1c2godCkpO2xldCBvPUx0KGUsdCxuLGE9PntzKCgpPT57fSx7c2NvcGU6eyRldmVudDphfSxwYXJhbXM6W2FdfSl9KTtpKCgpPT5vKCkpfSkpO250KCJDb2xsYXBzZSIsImNvbGxhcHNlIiwiY29sbGFwc2UiKTtudCgiSW50ZXJzZWN0IiwiaW50ZXJzZWN0IiwiaW50ZXJzZWN0Iik7bnQoIkZvY3VzIiwidHJhcCIsImZvY3VzIik7bnQoIk1hc2siLCJtYXNrIiwibWFzayIpO2Z1bmN0aW9uIG50KGUsdCxuKXtSKHQscj0+TChgWW91IGNhbid0IHVzZSBbeC0ke3R9XSB3aXRob3V0IGZpcnN0IGluc3RhbGxpbmcgdGhlICIke2V9IiBwbHVnaW4gaGVyZTogaHR0cHM6Ly9hbHBpbmVqcy5kZXYvcGx1Z2lucy8ke259YCxyKSl9T2Uuc2V0RXZhbHVhdG9yKGJyKTtPZS5zZXRSZWFjdGl2aXR5RW5naW5lKHtyZWFjdGl2ZTpybixlZmZlY3Q6cGEscmVsZWFzZTpoYSxyYXc6RX0pO3ZhciBuYz1PZSxfaT1uYzt3aW5kb3cuQWxwaW5lPV9pO19pLnN0YXJ0KCk7Cg=="}},"time_used":1248,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":1064,"receive":184,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cryptotradingaibot.com/images/crypto-trading-ai-bot.png","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://cryptotradingaibot.com/","date":"2026-07-27T05:13:01.328Z","timestamp":1785129181328,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cryptotradingaibot.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 11 Jun 2026 03:39:31 GMT","end":"Wed, 09 Sep 2026 03:39:30 GMT"},"fingerprint":{"sha1":"84:6B:D3:A9:DD:43:2F:AA:89:E5:90:F6:E8:F0:FA:01:97:A8:A6:5E","sha256":"FD:48:88:77:05:50:E5:1F:58:01:E8:02:34:9A:F7:4B:21:FC:F2:09:35:6F:39:08:39:9B:F6:A0:2C:0D:E6:F6"}}},"request":{"raw":"GET /images/crypto-trading-ai-bot.png HTTP/1.1\r\nHost: cryptotradingaibot.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cryptotradingaibot.com/\r\nCookie: XSRF-TOKEN=eyJpdiI6IlFBYUExOTJra1NMU1JMRGxwcUVXYkE9PSIsInZhbHVlIjoiQ2pjT0Z1cFRNK21WQldnRXVqZ21nMmZyN2F0d3hFZEY1em1Xa2NEOXdUdm9aTFZQZW15YmE4NlJxeDlVeVc3REhjZ3dtM2JwNlQ5dWNHcEFOZFN0YU9oNUMybk9sMUJCRHAwcUlHSSsydUM0bFJzdnE1eDZvVmZPS0UzalMxODYiLCJtYWMiOiJjNmQ4MmZkNjA3ZWI1MjAxYmNhZjVkMDk4MWNiMjUwMWE0NTM1N2U1N2VkZTJiMDllMTM0Mjg5NTRlMjFmZmM4IiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6Im0rcEF2akxnL3ZCL1NUWFhIZlZsZlE9PSIsInZhbHVlIjoiVE5YUzdyNWhkemRtK2tER3A0R0t1ZXc4UGZ4ZmtSUy9GOU1Sb25XUFhnRm5GblRqdXFVeFFxNFFTdUYzYm82VXI5TkpLT2U1b3NkZ2U1UDBvc1hyaW52ZWtpSk9xQ29JSXJ0RzhRUzFkbjlQQjJCdzNhb0ZRWHFBZ3AybTVucWEiLCJtYWMiOiI5ODJlZmY4OGZhM2ExOWUwZWM4YWFmNTc2NDhiMTJhYjA5OWRkNzdjODc3OWRiMTA5ODZjYTlkNzlhNGEzNjQxIiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 05:13:01 GMT\r\ncontent-type: image/png\r\nlast-modified: Wed, 18 Mar 2026 14:31:40 GMT\r\netag: \"c68f-69bab74c-cd77b61b25133d2a;;;\"\r\naccept-ranges: bytes\r\ncontent-length: 50831\r\ndate: Mon, 27 Jul 2026 05:13:01 GMT\r\nserver: LiteSpeed\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":50831,"size_decoded":51228,"mime_type":"image/png","magic":"PNG image data, 505 x 168, 8-bit/color RGBA, non-interlaced","md5":"8344325352606b19f0856bb9eb694944","sha1":"b7feabb105d2e13cffa4a5e2662ce1ed781f36ad","sha256":"73ce408e48d08a88fe8245c2763750aed75a7b202c0c1d1d3887321ed5352e6c","sha512":"fb65d931374ff94d613a1dc9d66961b6c96244e0613a78a86298b10e760fad36c285e1cf1573a50a49dcc2a5f981ff73129d98aeb904520a5189bb5138ff8055","ssdeep":"1536:kWKxq2UesvPcPlqRbGR8dELCWF/B/Hen7mjNb7P:1QjPlqRy8dEl6m","tlshash":"6933f1aa9f6216d0be12edfab769d05c3b3f1b298666d0d4f78d260c47340c8a7d4319","first_seen":"2026-07-27T04:06:32.635275Z","last_seen":"2026-07-27T05:13:31.021141Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":1361,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":273,"receive":1088,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cryptotradingaibot.com/images/favicon.png","fqdn":"cryptotradingaibot.com","domain":"cryptotradingaibot.com","tld":"com"},"ip":{"addr":"46.202.161.88","port":443,"asn":0,"as":"","country":"Ukraine","country_code":"UA"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://cryptotradingaibot.com/","date":"2026-07-27T05:13:02.693Z","timestamp":1785129182693,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cryptotradingaibot.com","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 11 Jun 2026 03:39:31 GMT","end":"Wed, 09 Sep 2026 03:39:30 GMT"},"fingerprint":{"sha1":"84:6B:D3:A9:DD:43:2F:AA:89:E5:90:F6:E8:F0:FA:01:97:A8:A6:5E","sha256":"FD:48:88:77:05:50:E5:1F:58:01:E8:02:34:9A:F7:4B:21:FC:F2:09:35:6F:39:08:39:9B:F6:A0:2C:0D:E6:F6"}}},"request":{"raw":"GET /images/favicon.png HTTP/1.1\r\nHost: cryptotradingaibot.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cryptotradingaibot.com/\r\nCookie: XSRF-TOKEN=eyJpdiI6IlFBYUExOTJra1NMU1JMRGxwcUVXYkE9PSIsInZhbHVlIjoiQ2pjT0Z1cFRNK21WQldnRXVqZ21nMmZyN2F0d3hFZEY1em1Xa2NEOXdUdm9aTFZQZW15YmE4NlJxeDlVeVc3REhjZ3dtM2JwNlQ5dWNHcEFOZFN0YU9oNUMybk9sMUJCRHAwcUlHSSsydUM0bFJzdnE1eDZvVmZPS0UzalMxODYiLCJtYWMiOiJjNmQ4MmZkNjA3ZWI1MjAxYmNhZjVkMDk4MWNiMjUwMWE0NTM1N2U1N2VkZTJiMDllMTM0Mjg5NTRlMjFmZmM4IiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6Im0rcEF2akxnL3ZCL1NUWFhIZlZsZlE9PSIsInZhbHVlIjoiVE5YUzdyNWhkemRtK2tER3A0R0t1ZXc4UGZ4ZmtSUy9GOU1Sb25XUFhnRm5GblRqdXFVeFFxNFFTdUYzYm82VXI5TkpLT2U1b3NkZ2U1UDBvc1hyaW52ZWtpSk9xQ29JSXJ0RzhRUzFkbjlQQjJCdzNhb0ZRWHFBZ3AybTVucWEiLCJtYWMiOiI5ODJlZmY4OGZhM2ExOWUwZWM4YWFmNTc2NDhiMTJhYjA5OWRkNzdjODc3OWRiMTA5ODZjYTlkNzlhNGEzNjQxIiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 05:13:02 GMT\r\ncontent-type: image/png\r\nlast-modified: Wed, 18 Mar 2026 14:31:40 GMT\r\netag: \"fb0-69bab74c-d070d2a8c6196da;;;\"\r\naccept-ranges: bytes\r\ncontent-length: 4016\r\ndate: Mon, 27 Jul 2026 05:13:02 GMT\r\nserver: LiteSpeed\r\nplatform: hostinger\r\npanel: hpanel\r\ncontent-security-policy: upgrade-insecure-requests\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Hostinger","description":"Hostinger is an employee-owned Web hosting provider and internet domain registrar.","website":"https://www.hostinger.com","common_platform_enumeration":"","icon":"Hostinger.svg","categories":["Hosting"]}],"data":{"size":4016,"size_decoded":4410,"mime_type":"image/png","magic":"PNG image data, 50 x 50, 8-bit/color RGBA, non-interlaced","md5":"51743144231c7afd95cfacd4ece2b9e4","sha1":"e630d66ad7fdf0ab5705e1e3ef969ec752696e42","sha256":"f4bba55d1be0650ea862d4639fa23b1afbab0e731f168a7bf2e39ca02638bdcc","sha512":"b2a25134d298d108bf8cf45f595d79d85080adfe646b64c95bcc801473bbaba56a93671bed18ecd5e3ce79b7f4ef366a97723ddd27c29f1f864dbdaf5adf0b07","ssdeep":"","tlshash":"ef81afd93df21c6005f251393831bbf4785acebaef310157a11258e89eac430ac8af63","first_seen":"2026-07-27T04:06:32.639888Z","last_seen":"2026-07-27T05:13:31.021798Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":142,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":134,"receive":8,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-16FC5ZC18Q","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://cryptotradingaibot.com/","date":"2026-07-27T05:13:02.697Z","timestamp":1785129182697,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google-analytics.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:33 GMT","end":"Mon, 21 Sep 2026 08:37:32 GMT"},"fingerprint":{"sha1":"85:82:80:E9:F0:BC:08:B5:D8:5D:91:B4:E5:D3:DB:B1:A7:2F:E3:F3","sha256":"E3:94:E9:DA:2C:F1:36:09:33:63:D3:69:08:E7:E6:91:8D:F3:61:7F:0F:D0:5F:8E:B6:E9:D7:F3:DD:10:3C:DC"}}},"request":{"raw":"GET /gtag/js?id=G-16FC5ZC18Q HTTP/1.1\r\nHost: www.googletagmanager.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cryptotradingaibot.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: application/javascript; charset=UTF-8\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: Cache-Control\r\ncontent-encoding: zstd\r\nvary: Accept-Encoding\r\ndate: Mon, 27 Jul 2026 05:13:02 GMT\r\nexpires: Mon, 27 Jul 2026 05:13:02 GMT\r\ncache-control: private, max-age=900\r\nstrict-transport-security: max-age=31536000; includeSubDomains\r\ncross-origin-resource-policy: cross-origin\r\nserver: Google Tag Manager\r\ncontent-length: 168767\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":499272,"size_decoded":169371,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (6033)","md5":"28ffd9d88af9fda6d489dafd39aba818","sha1":"f627437e33574cca63320c3ab79a2e9348d2a935","sha256":"2739aeba19a60437633956a62716d14825a5e98a73733ad82242d2d9eb7260ce","sha512":"320a247bb49373df0c9ef7ea2038116af9503166bbd27dc0ca1ab264733f08279f5f7c0b5a3ec3eac73a7685cc7e073e2ce28dfa031354e006b34e8b1ff1c4dc","ssdeep":"6144:0CoBU0jIWXbP69FMxmRknhqsScPmfxNf3EjUxVGaZoXzRYak:voS1WLP69VwqxVZO3k","tlshash":"82b4faceb3d674265396f478503f01cba57b28e2b45cc89ab189cce02d7465a8167f7c","first_seen":"2026-07-27T04:06:32.641524Z","last_seen":"2026-07-27T05:13:31.022498Z","times_seen":2,"resource_available":true,"data":"Ci8vIENvcHlyaWdodCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKKGZ1bmN0aW9uKCl7Cgp2YXIgZGF0YSA9IHsKInJlc291cmNlIjogewogICJ2ZXJzaW9uIjoiMSIsCiAgCiAgIm1hY3JvcyI6W3siZnVuY3Rpb24iOiJfX2UifSx7ImZ1bmN0aW9uIjoiX19jIiwidnRwX3ZhbHVlIjoiZ29vZ2xlLm5vIn0seyJmdW5jdGlvbiI6Il9fYyIsInZ0cF92YWx1ZSI6MH1dLAogICJ0YWdzIjpbeyJmdW5jdGlvbiI6Il9fb2d0XzFwX2RhdGFfdjIiLCJwcmlvcml0eSI6MTQsInZ0cF9pc0F1dG9FbmFibGVkIjp0cnVlLCJ2dHBfYXV0b1Bob25lRW5hYmxlZCI6dHJ1ZSwidnRwX2F1dG9Db2xsZWN0RXhjbHVzaW9uU2VsZWN0b3JzIjpbImxpc3QiLFsibWFwIiwiZXhjbHVzaW9uU2VsZWN0b3IiLCIiXV0sInZ0cF9pc0VuYWJsZWQiOnRydWUsInZ0cF9hdXRvQWRkcmVzc0VuYWJsZWQiOnRydWUsInZ0cF9hdXRvRW1haWxFbmFibGVkIjp0cnVlLCJ2dHBfaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIjp0cnVlLCJ0YWdfaWQiOjR9LHsiZnVuY3Rpb24iOiJfX2NjZF9nYV9maXJzdCIsInByaW9yaXR5IjoxMywidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctMTZGQzVaQzE4USIsInRhZ19pZCI6MTl9LHsiZnVuY3Rpb24iOiJfX3NldF9wcm9kdWN0X3NldHRpbmdzIiwicHJpb3JpdHkiOjEyLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy0xNkZDNVpDMThRIiwidnRwX2ZvcmVpZ25UbGRNYWNyb1Jlc3VsdCI6WyJtYWNybyIsMV0sInZ0cF9pc0NoaW5hVmlwUmVnaW9uTWFjcm9SZXN1bHQiOlsibWFjcm8iLDJdLCJ0YWdfaWQiOjE4fSx7ImZ1bmN0aW9uIjoiX19jY2RfZ2FfcmVnc2NvcGUiLCJwcmlvcml0eSI6MTEsInZ0cF9zZXR0aW5nc1RhYmxlIjpbImxpc3QiLFsibWFwIiwicmVkYWN0RmllbGRHcm91cCIsIkRFVklDRV9BTkRfR0VPIiwiZGlzYWxsb3dBbGxSZWdpb25zIixmYWxzZSwiZGlzYWxsb3dlZFJlZ2lvbnMiLCIiXSxbIm1hcCIsInJlZGFjdEZpZWxkR3JvdXAiLCJHT09HTEVfU0lHTkFMUyIsImRpc2FsbG93QWxsUmVnaW9ucyIsdHJ1ZSwiZGlzYWxsb3dlZFJlZ2lvbnMiLCIiXV0sInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTE2RkM1WkMxOFEiLCJ0YWdfaWQiOjE3fSx7ImZ1bmN0aW9uIjoiX19jY2RfZW1fZG93bmxvYWQiLCJwcmlvcml0eSI6MTAsInZ0cF9pbmNsdWRlUGFyYW1zIjp0cnVlLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy0xNkZDNVpDMThRIiwidGFnX2lkIjoxNn0seyJmdW5jdGlvbiI6Il9fY2NkX2VtX2Zvcm0iLCJwcmlvcml0eSI6OSwidnRwX2luY2x1ZGVQYXJhbXMiOnRydWUsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTE2RkM1WkMxOFEiLCJ0YWdfaWQiOjE1fSx7ImZ1bmN0aW9uIjoiX19jY2RfZW1fb3V0Ym91bmRfY2xpY2siLCJwcmlvcml0eSI6OCwidnRwX2luY2x1ZGVQYXJhbXMiOnRydWUsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTE2RkM1WkMxOFEiLCJ0YWdfaWQiOjE0fSx7ImZ1bmN0aW9uIjoiX19jY2RfZW1fcGFnZV92aWV3IiwicHJpb3JpdHkiOjcsInZ0cF9oaXN0b3J5RXZlbnRzIjp0cnVlLCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctMTZGQzVaQzE4USIsInRhZ19pZCI6MTN9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9zY3JvbGwiLCJwcmlvcml0eSI6NiwidnRwX2luY2x1ZGVQYXJhbXMiOnRydWUsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTE2RkM1WkMxOFEiLCJ0YWdfaWQiOjEyfSx7ImZ1bmN0aW9uIjoiX19jY2RfZW1fc2l0ZV9zZWFyY2giLCJwcmlvcml0eSI6NSwidnRwX3NlYXJjaFF1ZXJ5UGFyYW1zIjoicSxzLHNlYXJjaCxxdWVyeSxrZXl3b3JkIiwidnRwX2luY2x1ZGVQYXJhbXMiOnRydWUsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTE2RkM1WkMxOFEiLCJ0YWdfaWQiOjExfSx7ImZ1bmN0aW9uIjoiX19jY2RfZW1fdmlkZW8iLCJwcmlvcml0eSI6NCwidnRwX2luY2x1ZGVQYXJhbXMiOnRydWUsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTE2RkM1WkMxOFEiLCJ0YWdfaWQiOjEwfSx7ImZ1bmN0aW9uIjoiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIiwicHJpb3JpdHkiOjMsInZ0cF9jb252ZXJzaW9uUnVsZXMiOlsibGlzdCIsWyJtYXAiLCJtYXRjaGluZ1J1bGVzIiwie1widHlwZVwiOjUsXCJhcmdzXCI6W3tcInN0cmluZ1ZhbHVlXCI6XCJwdXJjaGFzZVwifSx7XCJjb250ZXh0VmFsdWVcIjp7XCJuYW1lc3BhY2VUeXBlXCI6MSxcImtleVBhcnRzXCI6W1wiZXZlbnROYW1lXCJdfX1dfSJdXSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctMTZGQzVaQzE4USIsInRhZ19pZCI6OX0seyJmdW5jdGlvbiI6Il9fb2d0X2V2ZW50X2NyZWF0ZSIsInByaW9yaXR5IjoyLCJ2dHBfZXZlbnROYW1lIjoiVmlzaXRvciIsInZ0cF9pc0NvcHkiOmZhbHNlLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy0xNkZDNVpDMThRIiwidnRwX3ByZWNvbXBpbGVkUnVsZSI6WyJtYXAiLCJuZXdfZXZlbnRfbmFtZSIsIlZpc2l0b3IiLCJtZXJnZV9zb3VyY2VfZXZlbnRfcGFyYW1zIixmYWxzZSwiZXZlbnRfbmFtZV9wcmVkaWNhdGUiLFsibGlzdCIsWyJtYXAiLCJ2YWx1ZXMiLFsibGlzdCIsWyJtYXAiLCJ0eXBlIiwiZXZlbnRfbmFtZSJdLFsibWFwIiwidHlwZSIsImNvbnN0IiwiY29uc3RfdmFsdWUiLCJwYWdlX3ZpZXciXV0sInR5cGUiLCJlcSJdXSwiY29uZGl0aW9ucyIsWyJsaXN0IixbIm1hcCIsInByZWRpY2F0ZXMiLFsibGlzdCIsWyJtYXAiLCJ2YWx1ZXMiLFsibGlzdCIsWyJtYXAiLCJ0eXBlIiwiZXZlbnRfcGFyYW0iLCJldmVudF9wYXJhbSIsWyJtYXAiLCJwYXJhbV9uYW1lIiwicGFnZV9sb2NhdGlvbiJdXSxbIm1hcCIsInR5cGUiLCJjb25zdCIsImNvbnN0X3ZhbHVlIiwiaHR0cHM6XC9cL2NyeXB0b3RyYWRpbmdhaWJvdC5jb21cLyJdXSwidHlwZSIsImNuaSJdXV1dXSwidGFnX2lkIjo4fSx7ImZ1bmN0aW9uIjoiX19jY2RfYXV0b19yZWRhY3QiLCJwcmlvcml0eSI6MSwidnRwX3JlZGFjdEVtYWlsIjp0cnVlLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy0xNkZDNVpDMThRIiwidGFnX2lkIjo3fSx7ImZ1bmN0aW9uIjoiX19nY3QiLCJ2dHBfdHJhY2tpbmdJZCI6IkctMTZGQzVaQzE4USIsInZ0cF9zZXNzaW9uRHVyYXRpb24iOjAsInRhZ19pZCI6MX0seyJmdW5jdGlvbiI6Il9fY2NkX2dhX2xhc3QiLCJwcmlvcml0eSI6MCwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctMTZGQzVaQzE4USIsInRhZ19pZCI6Nn1dLAogICJwcmVkaWNhdGVzIjpbeyJmdW5jdGlvbiI6Il9lcSIsImFyZzAiOlsibWFjcm8iLDBdLCJhcmcxIjoiZ3RtLmpzIn0seyJmdW5jdGlvbiI6Il9lcSIsImFyZzAiOlsibWFjcm8iLDBdLCJhcmcxIjoiZ3RtLmluaXQifV0sCiAgInJ1bGVzIjpbW1siaWYiLDBdLFsiYWRkIiwxNF1dLFtbImlmIiwxXSxbImFkZCIsMCwxNSwxMywxMiwxMSwxMCw5LDgsNyw2LDUsNCwzLDIsMV1dXQp9LAoicnVudGltZSI6WyBbNTAsIl9fYyIsWzQ2LCJhIl0sWzM2LFsxNyxbMTUsImEiXSwidmFsdWUiXV1dCiAsWzUwLCJfX2NjZF9hdXRvX3JlZGFjdCIsWzQ2LCJhIl0sWzUwLCJ2IixbNDYsImFGIl0sWzM2LFsyLFsxNSwiYUYiXSwicmVwbGFjZSIsWzcsWzE1LCJ1Il0sIlxcJDEiXV1dXSxbNTAsInciLFs0NiwiYUYiXSxbNTIsImFHIixbMzAsWyJjIixbMTUsImFGIl1dLFsxNSwiYUYiXV1dLFs1MiwiYUgiLFs3XV0sWzY1LCJhSSIsWzIsWzE1LCJhRyJdLCJzcGxpdCIsWzcsIiJdXSxbNDYsWzUzLFs1MiwiYUoiLFs3LFsidiIsWzE1LCJhSSJdXV1dLFs1MiwiYUsiLFsiZCIsWzE1LCJhSSJdXV0sWzIyLFsxMixbMTUsImFLIl0sWzQ1XV0sWzQ2LFs1MyxbMzYsWyJkIixbInYiLFsxNSwiYUYiXV1dXV1dXSxbMjIsWzIxLFsxNSwiYUsiXSxbMTUsImFJIl1dLFs0NixbNTMsWzIsWzE1LCJhSiJdLCJwdXNoIixbNyxbMTUsImFLIl1dXSxbMjIsWzIxLFsxNSwiYUkiXSxbMixbMTUsImFJIl0sInRvTG93ZXJDYXNlIixbN11dXSxbNDYsWzUzLFsyLFsxNSwiYUoiXSwicHVzaCIsWzcsWyJkIixbMixbMTUsImFJIl0sInRvTG93ZXJDYXNlIixbN11dXV1dXV0sWzQ2LFsyMixbMjEsWzE1LCJhSSJdLFsyLFsxNSwiYUkiXSwidG9VcHBlckNhc2UiLFs3XV1dLFs0NixbNTMsWzIsWzE1LCJhSiJdLCJwdXNoIixbNyxbImQiLFsyLFsxNSwiYUkiXSwidG9VcHBlckNhc2UiLFs3XV1dXV1dXV1dXV1dXSxbMjIsWzE4LFsxNyxbMTUsImFKIl0sImxlbmd0aCJdLDFdLFs0NixbNTMsWzIsWzE1LCJhSCJdLCJwdXNoIixbNyxbMCxbMCwiKD86IixbMixbMTUsImFKIl0sImpvaW4iLFs3LCJ8Il1dXSwiKSJdXV1dXSxbNDYsWzUzLFsyLFsxNSwiYUgiXSwicHVzaCIsWzcsWzE2LFsxNSwiYUoiXSwwXV1dXV1dXV1dLFszNixbMixbMTUsImFIIl0sImpvaW4iLFs3LCIiXV1dXSxbNTAsIngiLFs0NiwiYUYiLCJhRyIsImFIIl0sWzUyLCJhSSIsWyJ6IixbMTUsImFGIl0sWzE1LCJhSCJdXV0sWzIyLFsyOCxbMTUsImFJIl1dLFs0NixbMzYsWzE1LCJhRiJdXV1dLFsyMixbMjgsWzE3LFsxNSwiYUkiXSwic2VhcmNoIl1dLFs0NixbMzYsWzE1LCJhRiJdXV1dLFs0MSwiYUoiXSxbMywiYUoiLFsxNyxbMTUsImFJIl0sInNlYXJjaCJdXSxbNjUsImFLIixbMTUsImFHIl0sWzQ2LFs1MyxbNTIsImFMIixbNyxbInYiLFsxNSwiYUsiXV0sWyJ3IixbMTUsImFLIl1dXV0sWzY1LCJhTSIsWzE1LCJhTCJdLFs0NixbNTMsWzUyLCJhTiIsWzMwLFsxNixbMTUsInQiXSxbMTUsImFNIl1dLFs0MyxbMTUsInQiXSxbMTUsImFNIl0sWyJiIixbMCxbMCwiKFs/Jl0iLFsxNSwiYU0iXV0sIj0pKFteJl0qKSJdLCJnaSJdXV1dLFszLCJhSiIsWzIsWzE1LCJhSiJdLCJyZXBsYWNlIixbNyxbMTUsImFOIl0sWzAsIiQxIixbMTUsInIiXV1dXV1dXV1dXV0sWzIyLFsyMCxbMTUsImFKIl0sWzE3LFsxNSwiYUkiXSwic2VhcmNoIl1dLFs0NixbMzYsWzE1LCJhRiJdXV1dLFsyMixbMjAsWzE2LFsxNSwiYUoiXSwwXSwiJiJdLFs0NixbMywiYUoiLFsyLFsxNSwiYUoiXSwic3Vic3RyaW5nIixbNywxXV1dXV0sWzIyLFsyMSxbMTYsWzE1LCJhSiJdLDBdLCI/Il0sWzQ2LFszLCJhSiIsWzAsIj8iLFsxNSwiYUoiXV1dXV0sWzIyLFsyMCxbMTUsImFKIl0sIj8iXSxbNDYsWzMsImFKIiwiIl1dXSxbNDMsWzE1LCJhSSJdLCJzZWFyY2giLFsxNSwiYUoiXV0sWzM2LFsiYUEiLFsxNSwiYUkiXSxbMTUsImFIIl1dXV0sWzUwLCJ6IixbNDYsImFGIiwiYUciXSxbMjIsWzIwLFsxNSwiYUciXSxbMTcsWzE1LCJzIl0sIlBBVEgiXV0sWzQ2LFs1MyxbMywiYUYiLFswLFsxNSwieSJdLFsxNSwiYUYiXV1dXV1dLFszNixbImYiLFsxNSwiYUYiXV1dXSxbNTAsImFBIixbNDYsImFGIiwiYUciXSxbNDEsImFIIl0sWzMsImFIIiwiIl0sWzIyLFsyMCxbMTUsImFHIl0sWzE3LFsxNSwicyJdLCJVUkwiXV0sWzQ2LFs1MyxbNDEsImFJIl0sWzMsImFJIiwiIl0sWzIyLFszMCxbMTcsWzE1LCJhRiJdLCJ1c2VybmFtZSJdLFsxNyxbMTUsImFGIl0sInBhc3N3b3JkIl1dLFs0NixbNTMsWzMsImFJIixbMCxbMTUsImFJIl0sWzAsWzAsWzAsWzE3LFsxNSwiYUYiXSwidXNlcm5hbWUiXSxbMzksWzE3LFsxNSwiYUYiXSwicGFzc3dvcmQiXSwiOiIsIiJdXSxbMTcsWzE1LCJhRiJdLCJwYXNzd29yZCJdXSwiQCJdXV1dXV0sWzMsImFIIixbMCxbMCxbMCxbMTcsWzE1LCJhRiJdLCJwcm90b2NvbCJdLCIvLyJdLFsxNSwiYUkiXV0sWzE3LFsxNSwiYUYiXSwiaG9zdCJdXV1dXV0sWzM2LFswLFswLFswLFsxNSwiYUgiXSxbMTcsWzE1LCJhRiJdLCJwYXRobmFtZSJdXSxbMTcsWzE1LCJhRiJdLCJzZWFyY2giXV0sWzE3LFsxNSwiYUYiXSwiaGFzaCJdXV1dLFs1MCwiYUIiLFs0NiwiYUYiLCJhRyJdLFs0MSwiYUgiXSxbMywiYUgiLFsyLFsxNSwiYUYiXSwicmVwbGFjZSIsWzcsWzE1LCJuIl0sWzE1LCJyIl1dXV0sWzIyLFszMCxbMjAsWzE1LCJhRyJdLFsxNyxbMTUsInMiXSwiVVJMIl1dLFsyMCxbMTUsImFHIl0sWzE3LFsxNSwicyJdLCJQQVRIIl1dXSxbNDYsWzUzLFs1MiwiYUkiLFsieiIsWzE1LCJhSCJdLFsxNSwiYUciXV1dLFsyMixbMjAsWzE1LCJhSSJdLFs0NF1dLFs0NixbMzYsWzE1LCJhSCJdXV1dLFs1MiwiYUoiLFsxNyxbMTUsImFJIl0sInNlYXJjaCJdXSxbNTIsImFLIixbMixbMTUsImFKIl0sInJlcGxhY2UiLFs3LFsxNSwibyJdLFsxNSwiciJdXV1dLFsyMixbMjAsWzE1LCJhSiJdLFsxNSwiYUsiXV0sWzQ2LFszNixbMTUsImFIIl1dXV0sWzQzLFsxNSwiYUkiXSwic2VhcmNoIixbMTUsImFLIl1dLFszLCJhSCIsWyJhQSIsWzE1LCJhSSJdLFsxNSwiYUciXV1dXV1dLFszNixbMTUsImFIIl1dXSxbNTAsImFDIixbNDYsImFGIl0sWzIyLFsyMCxbMTUsImFGIl0sWzE1LCJxIl1dLFs0NixbNTMsWzM2LFsxNyxbMTUsInMiXSwiUEFUSCJdXV1dLFs0NixbMjIsWzIxLFsyLFsxNSwicCJdLCJpbmRleE9mIixbNyxbMTUsImFGIl1dXSxbMjcsMV1dLFs0NixbNTMsWzM2LFsxNyxbMTUsInMiXSwiVVJMIl1dXV0sWzQ2LFs1MyxbMzYsWzE3LFsxNSwicyJdLCJURVhUIl1dXV1dXV1dLFs1MCwiYUQiLFs0NiwiYUYiLCJhRyJdLFs0MSwiYUgiXSxbMywiYUgiLGZhbHNlXSxbNTIsImFJIixbImUiLFsxNSwiYUYiXV1dLFszOCxbMTUsImFJIl0sWzQ2LCJzdHJpbmciLCJhcnJheSIsIm9iamVjdCJdLFs0NixbNSxbNDYsWzUyLCJhSiIsWyJhQiIsWzE1LCJhRiJdLFsxNSwiYUciXV1dLFsyMixbMjEsWzE1LCJhRiJdLFsxNSwiYUoiXV0sWzQ2LFs1MyxbMzYsWzE1LCJhSiJdXV1dXSxbNF1dXSxbNSxbNDYsWzUzLFs0MSwiYUsiXSxbMywiYUsiLDBdLFs2MyxbNywiYUsiXSxbMjMsWzE1LCJhSyJdLFsxNyxbMTUsImFGIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJhSyJdLFszLCJhSyIsWzAsWzE1LCJhSyJdLDFdXV0sWzQ2LFs1MyxbNTIsImFMIixbImFEIixbMTYsWzE1LCJhRiJdLFsxNSwiYUsiXV0sWzE3LFsxNSwicyJdLCJURVhUIl1dXSxbMjIsWzIxLFsxNSwiYUwiXSxbNDRdXSxbNDYsWzUzLFs0MyxbMTUsImFGIl0sWzE1LCJhSyJdLFsxNSwiYUwiXV0sWzMsImFIIix0cnVlXV1dXV1dXV0sWzRdXV0sWzUsWzQ2LFs1NCwiYUsiLFsxNSwiYUYiXSxbNDYsWzUzLFs1MiwiYUwiLFsiYUQiLFsxNixbMTUsImFGIl0sWzE1LCJhSyJdXSxbMTcsWzE1LCJzIl0sIlRFWFQiXV1dLFsyMixbMjEsWzE1LCJhTCJdLFs0NF1dLFs0NixbNTMsWzQzLFsxNSwiYUYiXSxbMTUsImFLIl0sWzE1LCJhTCJdXSxbMywiYUgiLHRydWVdXV1dXV1dLFs0XV1dXV0sWzM2LFszOSxbMTUsImFIIl0sWzE1LCJhRiJdLFs0NF1dXV0sWzUwLCJhRSIsWzQ2LCJhRiIsImFHIl0sWzUyLCJhSCIsWzMwLFsyLFsxNSwiYUYiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImgiXSwiQUMiXV1dLFs3XV1dLFsyMixbMjAsWzIsWzE1LCJhSCJdLCJpbmRleE9mIixbNyxbMTUsImFHIl1dXSxbMjcsMV1dLFs0NixbNTMsWzIsWzE1LCJhSCJdLCJwdXNoIixbNyxbMTUsImFHIl1dXV1dXSxbMixbMTUsImFGIl0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJoIl0sIkFDIl0sWzE1LCJhSCJdXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuY3JlYXRlUmVnZXgiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJkZWNvZGVVcmlDb21wb25lbnQiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJlbmNvZGVVcmlDb21wb25lbnQiXV0sWzUyLCJlIixbInJlcXVpcmUiLCJnZXRUeXBlIl1dLFs1MiwiZiIsWyJyZXF1aXJlIiwicGFyc2VVcmwiXV0sWzUyLCJnIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiaCIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImkiLFsxNSwiX19tb2R1bGVfZ29sZEV2ZW50VXNhZ2VJZCJdXSxbNTIsImoiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFs1MiwiayIsWzE3LFsxNSwiYSJdLCJyZWRhY3RFbWFpbCJdXSxbNTIsImwiLFsxNyxbMTUsImEiXSwicmVkYWN0UXVlcnlQYXJhbXMiXV0sWzUyLCJtIixbMzksWzE1LCJsIl0sWzIsWzE1LCJsIl0sInNwbGl0IixbNywiLCJdXSxbN11dXSxbMjIsWzEsWzI4LFsxNyxbMTUsIm0iXSwibGVuZ3RoIl1dLFsyOCxbMTUsImsiXV1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFs1MiwibiIsWyJiIiwiW0EtWjAtOS5fJSstXStAW0EtWjAtOS4tXStcXC5bQS1aXXsyLH0iLCJnaSJdXSxbNTIsIm8iLFsiYiIsWzAsIihbQS1aMC05Ll8tXXwlMjV8JTJCKSslNDBbQS1aMC05Li1dIiwiK1xcLltBLVpdezIsfSJdLCJnaSJdXSxbNTIsInAiLFs3LCJwYWdlX2xvY2F0aW9uIiwicGFnZV9yZWZlcnJlciIsInBhZ2VfcGF0aCIsImxpbmtfdXJsIiwidmlkZW9fdXJsIiwiZm9ybV9kZXN0aW5hdGlvbiJdXSxbNTIsInEiLCJwYWdlX3BhdGgiXSxbNTIsInIiLCIocmVkYWN0ZWQpIl0sWzUyLCJzIixbOCwiVEVYVCIsMCwiVVJMIiwxLCJQQVRIIiwyXV0sWzUyLCJ0IixbOF1dLFs1MiwidSIsWyJiIiwiKFtcXFxcXiQufD8qKygpe31dfFxcW3xcXFspIiwiZyJdXSxbNTIsInkiLCJodHRwOi8vLiJdLFsiZyIsWzE1LCJqIl0sWzUxLCIiLFs3LCJhRiJdLFsyMixbMTUsImsiXSxbNDYsWzUzLFs1MiwiYUciLFsyLFsxNSwiYUYiXSwiZ2V0SGl0S2V5cyIsWzddXV0sWzY1LCJhSCIsWzE1LCJhRyJdLFs0NixbNTMsWzIyLFsyMCxbMTUsImFIIl0sIl9zc3RfcGFyYW1ldGVycyJdLFs0NixbNl1dXSxbNTIsImFJIixbMixbMTUsImFGIl0sImdldEhpdERhdGEiLFs3LFsxNSwiYUgiXV1dXSxbMjIsWzI4LFsxNSwiYUkiXV0sWzQ2LFs2XV1dLFs1MiwiYUoiLFsiYUMiLFsxNSwiYUgiXV1dLFs1MiwiYUsiLFsiYUQiLFsxNSwiYUkiXSxbMTUsImFKIl1dXSxbMjIsWzIxLFsxNSwiYUsiXSxbNDRdXSxbNDYsWzUzLFsyLFsxNSwiYUYiXSwic2V0SGl0RGF0YSIsWzcsWzE1LCJhSCJdLFsxNSwiYUsiXV1dLFsiYUUiLFsxNSwiYUYiXSxbMzksWzIsWzE1LCJhRiJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiaCJdLCJCTyJdXV0sWzE3LFsxNSwiaSJdLCJXIl0sWzE3LFsxNSwiaSJdLCJPIl1dXV1dXV1dXV1dXSxbMjIsWzE3LFsxNSwibSJdLCJsZW5ndGgiXSxbNDYsWzUzLFs2NSwiYUciLFsxNSwicCJdLFs0NixbNTMsWzUyLCJhSCIsWzIsWzE1LCJhRiJdLCJnZXRIaXREYXRhIixbNyxbMTUsImFHIl1dXV0sWzIyLFsyOCxbMTUsImFIIl1dLFs0NixbNl1dXSxbNTIsImFJIixbMzksWzIwLFsxNSwiYUciXSxbMTUsInEiXV0sWzE3LFsxNSwicyJdLCJQQVRIIl0sWzE3LFsxNSwicyJdLCJVUkwiXV1dLFs1MiwiYUoiLFsieCIsWzE1LCJhSCJdLFsxNSwibSJdLFsxNSwiYUkiXV1dLFsyMixbMjEsWzE1LCJhSiJdLFsxNSwiYUgiXV0sWzQ2LFs1MyxbMixbMTUsImFGIl0sInNldEhpdERhdGEiLFs3LFsxNSwiYUciXSxbMTUsImFKIl1dXSxbImFFIixbMTUsImFGIl0sWzM5LFsyLFsxNSwiYUYiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImgiXSwiQk8iXV1dLFsxNyxbMTUsImkiXSwiWCJdLFsxNyxbMTUsImkiXSwiUCJdXV1dXV1dXV1dXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIixbNDYsImEiXSxbMjIsWzMwLFsyOCxbMTcsWzE1LCJhIl0sImNvbnZlcnNpb25SdWxlcyJdXSxbMjAsWzE3LFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sImxlbmd0aCJdLDBdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNvcHlQcmVIaXQiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJmIiwiZmlyc3RfdmlzaXQiXSxbNTIsImciLCJzZXNzaW9uX3N0YXJ0Il0sWzQxLCJoIl0sWzQxLCJpIl0sWyJkIixbMTcsWzE1LCJhIl0sImluc3RhbmNlRGVzdGluYXRpb25JZCJdLFs1MSwiIixbNywiaiJdLFs1MiwiayIsWzgsInByZUhpdCIsWzE1LCJqIl1dXSxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiUCJdLHRydWVdXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImsiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQVYiXSx0cnVlXV0sWzRdXV1dXV1dLFsyMixbMixbMTUsImoiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQVoiXV1dLFs0NixbNTMsWzIyLFsyOCxbMTUsImgiXV0sWzQ2LFs1MyxbNTIsImwiLFsiYiIsWzE1LCJqIl0sWzgsIm9taXRIaXREYXRhIix0cnVlLCJvbWl0TWV0YWRhdGEiLHRydWVdXV0sWzIsWzE1LCJsIl0sInNldEV2ZW50TmFtZSIsWzcsWzE1LCJmIl1dXSxbMywiaCIsWzgsInByZUhpdCIsWzE1LCJsIl1dXV1dXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImgiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQkEiXSx0cnVlXV0sWzRdXV1dXV1dXV1dLFsyMixbMixbMTUsImoiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQkwiXV1dLFs0NixbNTMsWzIyLFsyOCxbMTUsImkiXV0sWzQ2LFs1MyxbNTIsImwiLFsiYiIsWzE1LCJqIl0sWzgsIm9taXRIaXREYXRhIix0cnVlLCJvbWl0TWV0YWRhdGEiLHRydWVdXV0sWzIsWzE1LCJsIl0sInNldEV2ZW50TmFtZSIsWzcsWzE1LCJnIl1dXSxbMywiaSIsWzgsInByZUhpdCIsWzE1LCJsIl1dXV1dXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImkiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQk0iXSx0cnVlXV0sWzRdXV1dXV1dXV1dXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXQogLFs1MCwiX19jY2RfZW1fZG93bmxvYWQiLFs0NiwiYSJdLFs1MCwicSIsWzQ2LCJ2Il0sWzM2LFsxLFsxNSwidiJdLFsyMSxbMixbMixbMTUsInYiXSwidG9Mb3dlckNhc2UiLFs3XV0sIm1hdGNoIixbNyxbMTUsInAiXV1dLFs0NV1dXV1dLFs1MCwiciIsWzQ2LCJ2Il0sWzUyLCJ3IixbMixbMTcsWzE1LCJ2Il0sInBhdGhuYW1lIl0sInNwbGl0IixbNywiLiJdXV0sWzUyLCJ4IixbMzksWzE4LFsxNyxbMTUsInciXSwibGVuZ3RoIl0sMV0sWzE2LFsxNSwidyJdLFszNyxbMTcsWzE1LCJ3Il0sImxlbmd0aCJdLDFdXSwiIl1dLFszNixbMTYsWzIsWzE1LCJ4Il0sInNwbGl0IixbNywiLyJdXSwwXV1dLFs1MCwicyIsWzQ2LCJ2Il0sWzM2LFszOSxbMTIsWzIsWzE3LFsxNSwidiJdLCJwYXRobmFtZSJdLCJzdWJzdHJpbmciLFs3LDAsMV1dLCIvIl0sWzE3LFsxNSwidiJdLCJwYXRobmFtZSJdLFswLCIvIixbMTcsWzE1LCJ2Il0sInBhdGhuYW1lIl1dXV1dLFs1MCwidCIsWzQ2LCJ2Il0sWzQxLCJ3Il0sWzMsInciLCIiXSxbMjIsWzEsWzE1LCJ2Il0sWzE3LFsxNSwidiJdLCJocmVmIl1dLFs0NixbNTMsWzQxLCJ4Il0sWzMsIngiLFsyLFsxNyxbMTUsInYiXSwiaHJlZiJdLCJpbmRleE9mIixbNywiIyJdXV0sWzMsInciLFszOSxbMjMsWzE1LCJ4Il0sMF0sWzE3LFsxNSwidiJdLCJocmVmIl0sWzIsWzE3LFsxNSwidiJdLCJocmVmIl0sInN1YnN0cmluZyIsWzcsMCxbMTUsIngiXV1dXV1dXV0sWzM2LFsxNSwidyJdXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9jY2RFbURvd25sb2FkQWN0aXZpdHkiXV0sWzUyLCJmIixbMTcsWzE1LCJkIl0sIkEiXV0sWzUyLCJnIiwiZmlsZV9kb3dubG9hZCJdLFs1MiwiaCIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiaSIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJpIl0sWzE1LCJmIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImkiXSxbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXV1dLFsyMixbMixbMTUsImMiXSwiZ2V0SXRlbSIsWzcsWzE1LCJoIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImoiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZW5oYW5jZWRNZWFzdXJlbWVudCJdXSxbNTIsIm0iLFsicmVxdWlyZSIsInBhcnNlVXJsIl1dLFs1MiwibiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2VuZEd0YWdFdmVudCJdXSxbNTIsIm8iLFsyLFsxNSwibCJdLCJBIixbNywiZG93bmxvYWQiXV1dLFs1MiwicCIsWzAsIl4ocGRmfHhsc3g/fGRvY3g/fHR4dHxydGZ8Y3N2fGV4ZXxrZXl8cHAoc3x0fHR4KXw3enxwa2d8cmFyfGd6fHppcHxhdml8IiwibW92fG1wNHxtcGU/Z3x3bXZ8bWlkaT98bXAzfHdhdnx3bWEpJCJdXSxbNTIsInUiLFsiayIsWzgsImNoZWNrVmFsaWRhdGlvbiIsdHJ1ZV1dXSxbMjIsWzI4LFsxNSwidSJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbMixbMTUsImMiXSwic2V0SXRlbSIsWzcsWzE1LCJoIl0sdHJ1ZV1dLFsiaiIsImd0bS5saW5rQ2xpY2siLFs1MSwiIixbNywidiIsInciXSxbInciXSxbNTIsIngiLFs4LCJldmVudElkIixbMTYsWzE1LCJ2Il0sImd0bS51bmlxdWVFdmVudElkIl0sImRlZmVycmFibGUiLHRydWVdXSxbNTIsInkiLFsxNixbMTUsInYiXSwiZ3RtLmVsZW1lbnRVcmwiXV0sWzUyLCJ6IixbIm0iLFsxNSwieSJdXV0sWzIyLFsyOCxbMTUsInoiXV0sWzQ2LFszNl1dXSxbNTIsImFBIixbInIiLFsxNSwieiJdXV0sWzIyLFsyOCxbInEiLFsxNSwiYUEiXV1dLFs0NixbNTMsWzM2XV1dXSxbNTIsImFCIixbOCwibGlua19pZCIsWzE2LFsxNSwidiJdLCJndG0uZWxlbWVudElkIl0sImxpbmtfdXJsIixbInQiLFsxNSwieiJdXSwibGlua190ZXh0IixbMTYsWzE1LCJ2Il0sImd0bS5lbGVtZW50VGV4dCJdLCJmaWxlX25hbWUiLFsicyIsWzE1LCJ6Il1dLCJmaWxlX2V4dGVuc2lvbiIsWzE1LCJhQSJdXV0sWzIsWzE1LCJsIl0sIkIiLFs3LFsxNSwieCJdXV0sWyJuIixbMTUsIm8iXSxbMTUsImciXSxbMTUsImFCIl0sWzE1LCJ4Il1dXSxbMTUsInUiXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2VtX2Zvcm0iLFs0NiwiYSJdLFs1MCwieCIsWzQ2LCJhTCJdLFs1MiwiYU0iLFszMCxbMTYsWzE1LCJhTCJdLFsxNSwiciJdXSxbOF1dXSxbNDMsWzE1LCJhTSJdLCJldmVudF91c2FnZSIsWzcsWzE3LFsxNSwiZyJdLCJIIl1dXSxbNDMsWzE1LCJhTCJdLFsxNSwiciJdLFsxNSwiYU0iXV1dLFs1MCwieSIsWzQ2LCJhTCIsImFNIl0sWzUyLCJhTiIsWzMwLFsxNixbMTUsImFMIl0sWzE1LCJyIl1dLFs4XV1dLFsyMixbMTYsWzE1LCJhTSJdLCJndG0uZm9ybUNhbmNlbGVkIl0sWzQ2LFs1MyxbNDMsWzE1LCJhTiJdLFsxNyxbMTUsImkiXSwiQUoiXSx0cnVlXV1dXSxbMixbMTUsInUiXSwiQiIsWzcsWzE1LCJhTCJdLFsxNSwiYU4iXV1dXSxbNTAsInoiLFs0NiwiYUwiLCJhTSIsImFOIl0sWzUyLCJhTyIsWzIsWzE1LCJ3Il0sImZpbHRlciIsWzcsWzUxLCIiLFs3LCJhUSJdLFszNixbMjAsWzIsWzE1LCJhUSJdLCJpbmRleE9mIixbNywiQVctIl1dLDBdXV1dXV0sWzIyLFsxOCxbMTcsWzE1LCJhTyJdLCJsZW5ndGgiXSwwXSxbNDYsWzUzLFsidiIsWzE1LCJhTyJdLFsxNSwiYUwiXSxbMTUsImFNIl0sWzE1LCJhTiJdXV1dXSxbNTIsImFQIixbMixbMTUsInciXSwiZmlsdGVyIixbNyxbNTEsIiIsWzcsImFRIl0sWzM2LFsyMSxbMixbMTUsImFRIl0sImluZGV4T2YiLFs3LCJBVy0iXV0sMF1dXV1dXSxbMjIsWzE4LFsxNyxbMTUsImFQIl0sImxlbmd0aCJdLDBdLFs0NixbNTMsWzQzLFsxNSwiYU4iXSwiZGVmZXJyYWJsZSIsdHJ1ZV0sWyJ2IixbMTUsImFQIl0sWzE1LCJhTCJdLFsxNSwiYU0iXSxbMTUsImFOIl1dXV1dXSxbNTAsImFLIixbNDZdLFs1MiwiYUwiLFsibSIsWyJsIiwwLDIuMTQ3NDgzNjQ3RTldXV0sWzQxLCJhTSJdLFszLCJhTSIsMF0sWzM2LFs1MSwiIixbNywiYU4iXSxbMjIsWzIwLFsxNSwiYU4iXSxbMTUsInMiXV0sWzQ2LFs1MyxbMywiYU0iLFsiayJdXSxbMzYsWzAsWyJtIixbMTUsImFNIl1dLFsxNSwiYUwiXV1dXV0sWzQ2LFsyMixbMjAsWzE1LCJhTiJdLFsxNSwibyJdXSxbNDYsWzUzLFsyMixbMjAsWzE1LCJhTSJdLDBdLFs0NixbNTMsWzM2LFswLFsibSIsWyJrIl1dLFsxNSwiYUwiXV1dXV1dLFs1MiwiYU8iLFsiayJdXSxbMjIsWzIzLFszNyxbMTUsImFPIl0sWzE1LCJhTSJdXSwyMDBdLFs0NixbNTMsWzUyLCJhUCIsWzE1LCJhTSJdXSxbMywiYU0iLDBdLFszNixbMCxbIm0iLFsxNSwiYVAiXV0sWzE1LCJhTCJdXV1dXV0sWzMsImFNIiwwXSxbMzYsWzAsWyJtIixbMTUsImFPIl1dLFsxNSwiYUwiXV1dXV1dXV1dXV0sWzUyLCJiIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiYyIsWzE1LCJfX21vZHVsZV9jY2RFbUZvcm1BY3Rpdml0eSJdXSxbNTIsImQiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImUiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJnIixbMTUsIl9fbW9kdWxlX2dvbGRFdmVudFVzYWdlSWQiXV0sWzUyLCJoIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiaSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImoiLFsxNSwiX19tb2R1bGVfYWR3b3Jkc0hpdFR5cGUiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJnZXRUaW1lc3RhbXBNaWxsaXMiXV0sWzUyLCJsIixbInJlcXVpcmUiLCJnZW5lcmF0ZVJhbmRvbSJdXSxbNTIsIm0iLFsicmVxdWlyZSIsIm1ha2VTdHJpbmciXV0sWzUyLCJuIixbMTcsWzE1LCJoIl0sIkIiXV0sWzUyLCJvIiwiZm9ybV9zdWJtaXQiXSxbNTIsInAiLCJmb3JtX3N0YXJ0Il0sWzUyLCJxIiwiaXNSZWdpc3RlcmVkIl0sWzUyLCJyIiwiZXZlbnRNZXRhZGF0YSJdLFs1MiwicyIsImNsaWNrIl0sWzUyLCJ0IixbMTcsWzE1LCJhIl0sImluc3RhbmNlRGVzdGluYXRpb25JZCJdXSxbMjIsWyJkIixbMTUsInQiXSxbMTUsIm4iXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzIsWzE1LCJjIl0sIkEiLFs3LFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl0sWzE3LFsxNSwiYSJdLCJza2lwVmFsaWRhdGlvbiJdLFsxNyxbMTUsImEiXSwiaW5jbHVkZVBhcmFtcyJdXV0sWzIyLFsyLFsxNSwiZiJdLCJnZXRJdGVtIixbNyxbMTUsInEiXV1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZiJdLCJzZXRJdGVtIixbNyxbMTUsInEiXSx0cnVlXV0sWzUyLCJ1IixbMTUsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiXV0sWzUyLCJ2IixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwidyIsWzIsWzE1LCJ1Il0sIkEiLFs3LCJmb3JtIl1dXSxbNTIsImFBIixbOF1dLFs1MiwiYUIiLFs1MSwiIixbNywiYUwiLCJhTSJdLFsyMixbMTUsImFNIl0sWzQ2LFsiYU0iXV1dLFs1MiwiYU4iLFsxNixbMTUsImFMIl0sImd0bS5lbGVtZW50SWQiXV0sWzIyLFsxNixbMTUsImFBIl0sWzE1LCJhTiJdXSxbNDYsWzM2XV1dLFs0MyxbMTUsImFBIl0sWzE1LCJhTiJdLHRydWVdLFs1MiwiYU8iLFs4LCJmb3JtX2lkIixbMTUsImFOIl0sImZvcm1fbmFtZSIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTmFtZSJdLCJmb3JtX2Rlc3RpbmF0aW9uIixbMTYsWzE1LCJhTCJdLCJndG0uZWxlbWVudFVybCJdLCJmb3JtX2xlbmd0aCIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTGVuZ3RoIl0sImZpcnN0X2ZpZWxkX2lkIixbMTYsWzE1LCJhTCJdLCJndG0uaW50ZXJhY3RlZEZvcm1GaWVsZElkIl0sImZpcnN0X2ZpZWxkX25hbWUiLFsxNixbMTUsImFMIl0sImd0bS5pbnRlcmFjdGVkRm9ybUZpZWxkTmFtZSJdLCJmaXJzdF9maWVsZF90eXBlIixbMTYsWzE1LCJhTCJdLCJndG0uaW50ZXJhY3RlZEZvcm1GaWVsZFR5cGUiXSwiZmlyc3RfZmllbGRfcG9zaXRpb24iLFsxNixbMTUsImFMIl0sImd0bS5pbnRlcmFjdGVkRm9ybUZpZWxkUG9zaXRpb24iXV1dLFs1MiwiYVAiLFs4LCJldmVudElkIixbMTYsWzE1LCJhTCJdLCJndG0udW5pcXVlRXZlbnRJZCJdXV0sWyJ4IixbMTUsImFQIl1dLFsieSIsWzE1LCJhUCJdLFsxNSwiYUwiXV0sWzQzLFsxNixbMTUsImFQIl0sWzE1LCJyIl1dLFsxNyxbMTUsImkiXSwiQUEiXSwiZm9ybV9zdGFydCJdLFsieiIsWzE1LCJwIl0sWzE1LCJhTyJdLFsxNSwiYVAiXV1dXSxbNTIsImFDIixbImFLIl1dLFs1MiwiYUQiLFs1MSwiIixbNywiYUwiLCJhTSJdLFs1MiwiYU4iLFsiYUMiLFsxNSwibyJdXV0sWyJhQiIsWzE1LCJhTCJdLFs0NF1dLFs1MiwiYU8iLFs4LCJmb3JtX2lkIixbMTYsWzE1LCJhTCJdLCJndG0uZWxlbWVudElkIl0sImZvcm1fbmFtZSIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTmFtZSJdLCJmb3JtX2Rlc3RpbmF0aW9uIixbMTYsWzE1LCJhTCJdLCJndG0uZWxlbWVudFVybCJdLCJmb3JtX2xlbmd0aCIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTGVuZ3RoIl0sImZvcm1fc3VibWl0X3RleHQiLFsxNixbMTUsImFMIl0sImd0bS5mb3JtU3VibWl0RWxlbWVudFRleHQiXV1dLFs0MyxbMTUsImFPIl0sImV2ZW50X2NhbGxiYWNrIixbMTUsImFNIl1dLFs1MiwiYVAiLFs4LCJldmVudElkIixbMTYsWzE1LCJhTCJdLCJndG0udW5pcXVlRXZlbnRJZCJdXV0sWyJ4IixbMTUsImFQIl1dLFsieSIsWzE1LCJhUCJdLFsxNSwiYUwiXV0sWzQzLFsxNixbMTUsImFQIl0sWzE1LCJyIl1dLFsxNyxbMTUsImkiXSwiQUEiXSwiZm9ybV9zdWJtaXQiXSxbNDMsWzE2LFsxNSwiYVAiXSxbMTUsInIiXV0sWzE3LFsxNSwiaSJdLCJTIl0sWzE1LCJhTiJdXSxbInoiLFsxNSwibyJdLFsxNSwiYU8iXSxbMTUsImFQIl1dXV0sWzUyLCJhRSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuYWRkRGF0YUxheWVyRXZlbnRMaXN0ZW5lciJdXSxbNTIsImFGIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkZvcm1TdWJtaXQiXV0sWzUyLCJhRyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25Gb3JtSW50ZXJhY3Rpb24iXV0sWzUyLCJhSCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25DbGljayJdXSxbNTIsImFJIixbImFHIl1dLFsyMixbMjgsWzE1LCJhSSJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbImFFIiwiZ3RtLmZvcm1JbnRlcmFjdCIsWzE1LCJhQiJdLFsxNSwiYUkiXV0sWzUyLCJhSiIsWyJhRiIsWzgsImNoZWNrVmFsaWRhdGlvbiIsZmFsc2UsIndhaXRGb3JUYWdzIixmYWxzZV1dXSxbMjIsWzI4LFsxNSwiYUoiXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25GYWlsdXJlIixbN11dLFszNl1dXV0sWyJhRSIsImd0bS5mb3JtU3VibWl0IixbMTUsImFEIl0sWzE1LCJhSiJdXSxbMjIsWyJlIixbMTcsWzE1LCJiIl0sIkNQIl1dLFs0NixbNTMsWzUyLCJhTCIsWyJhSCIsWzgsInVzZVYyRXZlbnROYW1lIix0cnVlLCJjc3NTZWxlY3RvciIsWzAsWzAsWzAsWzAsWzAsWzAsWzAsImZvcm0gYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0sICIsImZvcm0gYnV0dG9uOm5vdChbdHlwZV0pLCJdLCJmb3JtIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0sICJdLCJmb3JtIGlucHV0W3R5cGU9XCJpbWFnZVwiXSwgIl0sImJ1dHRvbltmb3JtXVt0eXBlPVwic3VibWl0XCJdLCAiXSwiYnV0dG9uW2Zvcm1dOm5vdChbdHlwZV0pLCAiXSwiaW5wdXRbdHlwZT1cInN1Ym1pdFwiXVtmb3JtXSwgIl0sImlucHV0W3R5cGU9XCJpbWFnZVwiXVtmb3JtXSJdXV1dLFs1MCwiYU0iLFs0NiwiYU4iLCJhTyJdLFs1MiwiYVAiLFs4LCJldmVudF9jYWxsYmFjayIsWzE1LCJhTyJdXV0sWzUyLCJhUSIsWzgsImV2ZW50SWQiLFsxNixbMTUsImFOIl0sImd0bS51bmlxdWVFdmVudElkIl1dXSxbIngiLFsxNSwiYVEiXV0sWyJ5IixbMTUsImFRIl0sWzE1LCJhTiJdXSxbNDMsWzE2LFsxNSwiYVEiXSxbMTUsInIiXV0sWzE3LFsxNSwiaSJdLCJBUiJdLFsxNyxbMTUsImoiXSwiSyJdXSxbNDMsWzE2LFsxNSwiYVEiXSxbMTUsInIiXV0sWzE3LFsxNSwiaSJdLCJBQSJdLCJjbGljayJdLFs0MyxbMTYsWzE1LCJhUSJdLFsxNSwiciJdXSxbMTcsWzE1LCJpIl0sIlMiXSxbImFDIixbMTUsInMiXV1dLFsieiIsWzE1LCJvIl0sWzE1LCJhUCJdLFsxNSwiYVEiXV1dLFsiYUUiLCJndG0uY2xpY2stdjIiLFsxNSwiYU0iXSxbMTUsImFMIl1dXV1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9lbV9vdXRib3VuZF9jbGljayIsWzQ2LCJhIl0sWzUwLCJyIixbNDYsInciXSxbMjIsWzI4LFsxNSwidyJdXSxbNDYsWzM2LFs0NF1dXV0sWzQxLCJ4Il0sWzMsIngiLCIiXSxbMjIsWzEsWzE1LCJ3Il0sWzE3LFsxNSwidyJdLCJocmVmIl1dLFs0NixbNTMsWzQxLCJ5Il0sWzMsInkiLFsyLFsxNyxbMTUsInciXSwiaHJlZiJdLCJpbmRleE9mIixbNywiIyJdXV0sWzMsIngiLFszOSxbMjMsWzE1LCJ5Il0sMF0sWzE3LFsxNSwidyJdLCJocmVmIl0sWzIsWzE3LFsxNSwidyJdLCJocmVmIl0sInN1YnN0cmluZyIsWzcsMCxbMTUsInkiXV1dXV1dXV0sWzM2LFsxNSwieCJdXV0sWzUwLCJzIixbNDYsInciXSxbMjIsWzI4LFsxNSwidyJdXSxbNDYsWzM2LFs0NF1dXV0sWzQxLCJ4Il0sWzMsIngiLFsxNyxbMTUsInciXSwiaG9zdG5hbWUiXV0sWzUyLCJ5IixbMixbMTUsIngiXSwibWF0Y2giLFs3LCJed3d3XFxkKlxcLiJdXV0sWzIyLFsxLFsxNSwieSJdLFsxNixbMTUsInkiXSwwXV0sWzQ2LFszLCJ4IixbMixbMTUsIngiXSwic3Vic3RyaW5nIixbNyxbMTcsWzE2LFsxNSwieSJdLDBdLCJsZW5ndGgiXV1dXV1dLFszNixbMTUsIngiXV1dLFs1MCwidCIsWzQ2LCJ3Il0sWzIyLFsyOCxbMTUsInciXV0sWzQ2LFszNixmYWxzZV1dXSxbNTIsIngiLFsyLFsxNyxbMTUsInciXSwiaG9zdG5hbWUiXSwidG9Mb3dlckNhc2UiLFs3XV1dLFsyMixbMjgsWzE1LCJ4Il1dLFs0NixbNTMsWzM2LGZhbHNlXV1dXSxbNDEsInkiXSxbMywieSIsWzIsWyJzIixbIm8iLFsibiJdXV0sInRvTG93ZXJDYXNlIixbN11dXSxbNDEsInoiXSxbMywieiIsWzM3LFsxNyxbMTUsIngiXSwibGVuZ3RoIl0sWzE3LFsxNSwieSJdLCJsZW5ndGgiXV1dLFsyMixbMSxbMTgsWzE1LCJ6Il0sMF0sWzI5LFsyLFsxNSwieSJdLCJjaGFyQXQiLFs3LDBdXSwiLiJdXSxbNDYsWzUzLFszMixbMTUsInoiXSxbMywieiIsWzM3LFsxNSwieiJdLDFdXV0sWzMsInkiLFswLCIuIixbMTUsInkiXV1dXV1dLFsyMixbMSxbMTksWzE1LCJ6Il0sMF0sWzEyLFsyLFsxNSwieCJdLCJpbmRleE9mIixbNyxbMTUsInkiXSxbMTUsInoiXV1dLFsxNSwieiJdXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dLFszNix0cnVlXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9jY2RFbU91dGJvdW5kQ2xpY2tBY3Rpdml0eSJdXSxbNTIsImYiLFsxNyxbMTUsImQiXSwiRCJdXSxbNTIsImciLCJjbGljayJdLFs1MiwiaCIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiaSIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJpIl0sWzE1LCJmIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImkiXSxbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXV1dLFsyMixbMixbMTUsImMiXSwiZ2V0SXRlbSIsWzcsWzE1LCJoIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImoiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZW5oYW5jZWRNZWFzdXJlbWVudCJdXSxbNTIsIm0iLFsicmVxdWlyZSIsImludGVybmFsLmdldFJlbW90ZUNvbmZpZ1BhcmFtZXRlciJdXSxbNTIsIm4iLFsicmVxdWlyZSIsImdldFVybCJdXSxbNTIsIm8iLFsicmVxdWlyZSIsInBhcnNlVXJsIl1dLFs1MiwicCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2VuZEd0YWdFdmVudCJdXSxbNTIsInEiLFsyLFsxNSwibCJdLCJBIixbNywib3V0Ym91bmRfY2xpY2siXV1dLFs1MiwidSIsWyJtIixbMTUsImkiXSwiY3Jvc3NfZG9tYWluX2NvbmRpdGlvbnMiXV0sWzUyLCJ2IixbImsiLFs4LCJhZmZpbGlhdGVEb21haW5zIixbMTUsInUiXSwiY2hlY2tWYWxpZGF0aW9uIix0cnVlLCJ3YWl0Rm9yVGFncyIsZmFsc2VdXV0sWzIyLFsyOCxbMTUsInYiXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25GYWlsdXJlIixbN11dLFszNl1dXV0sWzIsWzE1LCJjIl0sInNldEl0ZW0iLFs3LFsxNSwiaCJdLHRydWVdXSxbImoiLCJndG0ubGlua0NsaWNrIixbNTEsIiIsWzcsInciLCJ4Il0sWzUyLCJ5IixbIm8iLFsxNixbMTUsInciXSwiZ3RtLmVsZW1lbnRVcmwiXV1dLFsyMixbMjgsWyJ0IixbMTUsInkiXV1dLFs0NixbNTMsWyJ4Il0sWzM2XV1dXSxbNTIsInoiLFs4LCJsaW5rX2lkIixbMTYsWzE1LCJ3Il0sImd0bS5lbGVtZW50SWQiXSwibGlua19jbGFzc2VzIixbMTYsWzE1LCJ3Il0sImd0bS5lbGVtZW50Q2xhc3NlcyJdLCJsaW5rX3VybCIsWyJyIixbMTUsInkiXV0sImxpbmtfZG9tYWluIixbInMiLFsxNSwieSJdXSwib3V0Ym91bmQiLHRydWVdXSxbNDMsWzE1LCJ6Il0sImV2ZW50X2NhbGxiYWNrIixbMTUsIngiXV0sWzUyLCJhQSIsWzgsImV2ZW50SWQiLFsxNixbMTUsInciXSwiZ3RtLnVuaXF1ZUV2ZW50SWQiXSwiZGVmZXJyYWJsZSIsdHJ1ZV1dLFsyLFsxNSwibCJdLCJCIixbNyxbMTUsImFBIl1dXSxbInAiLFsxNSwicSJdLFsxNSwiZyJdLFsxNSwieiJdLFsxNSwiYUEiXV1dLFsxNSwidiJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfZW1fcGFnZV92aWV3IixbNDYsImEiXSxbMjIsWzI4LFsxNyxbMTUsImEiXSwiaGlzdG9yeUV2ZW50cyJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnNldFJlbW90ZUNvbmZpZ1BhcmFtZXRlciJdXSxbNTIsImQiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfY2NkRW1QYWdlVmlld0FjdGl2aXR5Il1dLFs1MiwiZiIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImciLFsxNyxbMTUsImYiXSwiQyJdXSxbNTIsImgiLCJwYWdlX3ZpZXciXSxbNTIsImkiLCJpc1JlZ2lzdGVyZWQiXSxbNTIsImoiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFsyMixbImIiLFsxNSwiaiJdLFsxNSwiZyJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbMixbMTUsImUiXSwiQSIsWzcsWzE1LCJqIl1dXSxbMjIsWzIsWzE1LCJkIl0sImdldEl0ZW0iLFs3LFsxNSwiaSJdXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIl1dLFs1MiwibCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25IaXN0b3J5Q2hhbmdlIl1dLFs1MiwibSIsWzE1LCJfX21vZHVsZV9lbmhhbmNlZE1lYXN1cmVtZW50Il1dLFs1MiwibiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2VuZEd0YWdFdmVudCJdXSxbNTIsIm8iLFsyLFsxNSwibSJdLCJBIixbNywicGFnZV92aWV3Il1dXSxbNTIsInAiLFs4LCJpbnRlcnZhbCIsMTAwMCwidXNlVjJFdmVudE5hbWUiLHRydWVdXSxbNTIsInEiLFsibCIsWzE1LCJwIl1dXSxbMjIsWzI4LFsxNSwicSJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbMixbMTUsImQiXSwic2V0SXRlbSIsWzcsWzE1LCJpIl0sdHJ1ZV1dLFsiayIsImd0bS5oaXN0b3J5Q2hhbmdlLXYyIixbNTEsIiIsWzcsInIiLCJzIl0sWyJzIl0sWzUyLCJ0IixbMTYsWzE1LCJyIl0sImd0bS5vbGRVcmwiXV0sWzIyLFsyMCxbMTYsWzE1LCJyIl0sImd0bS5uZXdVcmwiXSxbMTUsInQiXV0sWzQ2LFszNl1dXSxbNTIsInUiLFsxNixbMTUsInIiXSwiZ3RtLmhpc3RvcnlDaGFuZ2VTb3VyY2UiXV0sWzIyLFsxLFsxLFsyMSxbMTUsInUiXSwicHVzaFN0YXRlIl0sWzIxLFsxNSwidSJdLCJwb3BzdGF0ZSJdXSxbMjEsWzE1LCJ1Il0sInJlcGxhY2VTdGF0ZSJdXSxbNDYsWzUzLFszNl1dXV0sWzUyLCJ2IixbOF1dLFsyMixbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXSxbNDYsWzUzLFs0MyxbMTUsInYiXSwicGFnZV9sb2NhdGlvbiIsWzE2LFsxNSwiciJdLCJndG0ubmV3VXJsIl1dLFs0MyxbMTUsInYiXSwicGFnZV9yZWZlcnJlciIsWzE1LCJ0Il1dXV1dLFs1MiwidyIsWzgsImV2ZW50SWQiLFsxNixbMTUsInIiXSwiZ3RtLnVuaXF1ZUV2ZW50SWQiXV1dLFsyMixbMjEsWzE3LFsxNSwiYSJdLCJkZWZlclBhZ2VWaWV3Il0sZmFsc2VdLFs0NixbNTMsWzQzLFsxNSwidyJdLCJkZWZlcnJhYmxlIix0cnVlXV1dXSxbMixbMTUsIm0iXSwiQiIsWzcsWzE1LCJ3Il1dXSxbIm4iLFsxNSwibyJdLFsxNSwiaCJdLFsxNSwidiJdLFsxNSwidyJdXV0sWzE1LCJxIl1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9lbV9zY3JvbGwiLFs0NiwiYSJdLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwidGVtcGxhdGVTdG9yYWdlIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfY2NkRW1TY3JvbGxBY3Rpdml0eSJdXSxbNTIsImYiLFsxNyxbMTUsImQiXSwiRSJdXSxbNTIsImciLCJzY3JvbGwiXSxbNTIsImgiLCJpc1JlZ2lzdGVyZWQiXSxbNTIsImkiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbMixbMTUsImUiXSwiQSIsWzcsWzE1LCJpIl0sWzE3LFsxNSwiYSJdLCJpbmNsdWRlUGFyYW1zIl1dXSxbMjIsWzIsWzE1LCJjIl0sImdldEl0ZW0iLFs3LFsxNSwiaCJdXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzUyLCJqIixbInJlcXVpcmUiLCJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIl1dLFs1MiwiayIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25TY3JvbGwiXV0sWzUyLCJsIixbMTUsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiXV0sWzUyLCJtIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwibiIsWzIsWzE1LCJsIl0sIkEiLFs3LCJzY3JvbGwiXV1dLFs1MiwibyIsWyJrIixbOCwidmVydGljYWxUaHJlc2hvbGRVbml0cyIsIlBFUkNFTlQiLCJ2ZXJ0aWNhbFRocmVzaG9sZHMiLDkwXV1dLFsyMixbMjgsWzE1LCJvIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uRmFpbHVyZSIsWzddXSxbMzZdXV1dLFsyLFsxNSwiYyJdLCJzZXRJdGVtIixbNyxbMTUsImgiXSx0cnVlXV0sWyJqIiwiZ3RtLnNjcm9sbERlcHRoIixbNTEsIiIsWzcsInAiLCJxIl0sWyJxIl0sWzUyLCJyIixbOCwiZXZlbnRJZCIsWzE2LFsxNSwicCJdLCJndG0udW5pcXVlRXZlbnRJZCJdLCJkZWZlcnJhYmxlIix0cnVlXV0sWzUyLCJzIixbOCwicGVyY2VudF9zY3JvbGxlZCIsWzE2LFsxNSwicCJdLCJndG0uc2Nyb2xsVGhyZXNob2xkIl1dXSxbMixbMTUsImwiXSwiQiIsWzcsWzE1LCJyIl1dXSxbIm0iLFsxNSwibiJdLFsxNSwiZyJdLFsxNSwicyJdLFsxNSwiciJdXV0sWzE1LCJvIl1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9lbV9zaXRlX3NlYXJjaCIsWzQ2LCJhIl0sWzUyLCJiIixbInJlcXVpcmUiLCJnZXRRdWVyeVBhcmFtZXRlcnMiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiZ2V0Q29udGFpbmVyVmVyc2lvbiJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfZmVhdHVyZXMiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5pc0ZlYXR1cmVFbmFibGVkIl1dLFs1MiwiZyIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImgiLFsxNSwiX19tb2R1bGVfY2NkRW1TaXRlU2VhcmNoQWN0aXZpdHkiXV0sWzUyLCJpIixbMixbMTUsImgiXSwiQSIsWzcsWzE3LFsxNSwiYSJdLCJzZWFyY2hRdWVyeVBhcmFtcyJdLFsxNSwiYiJdXV1dLFs1MiwiaiIsWzMwLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl0sWzE3LFsiZCJdLCJjb250YWluZXJJZCJdXV0sWzUyLCJrIixbOCwiZGVmZXJyYWJsZSIsdHJ1ZSwiZXZlbnRJZCIsWzE3LFsxNSwiYSJdLCJndG1FdmVudElkIl0sImV2ZW50TWV0YWRhdGEiLFs4LCJlbV9ldmVudCIsdHJ1ZV1dXSxbMjIsWzE1LCJpIl0sWzQ2LFs1MyxbNTIsImwiLFszOSxbMjgsWzI4LFsxNyxbMTUsImEiXSwiaW5jbHVkZVBhcmFtcyJdXV0sWzIsWzE1LCJoIl0sIkIiLFs3LFsxNSwiaSJdLFsxNyxbMTUsImEiXSwiYWRkaXRpb25hbFF1ZXJ5UGFyYW1zIl0sWzE1LCJiIl1dXSxbOF1dXSxbNDMsWzE3LFsxNSwiayJdLCJldmVudE1ldGFkYXRhIl0sWzE3LFsxNSwiZyJdLCJaIl0sImEiXSxbImMiLFsxNSwiaiJdLCJ2aWV3X3NlYXJjaF9yZXN1bHRzIixbMTUsImwiXSxbMTUsImsiXV1dXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2VtX3ZpZGVvIixbNDYsImEiXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2NjZEVtVmlkZW9BY3Rpdml0eSJdXSxbNTIsImYiLFsxNyxbMTUsImQiXSwiRiJdXSxbNTIsImciLCJ2aWRlb19zdGFydCJdLFs1MiwiaCIsInZpZGVvX3Byb2dyZXNzIl0sWzUyLCJpIiwidmlkZW9fY29tcGxldGUiXSxbNTIsImoiLCJpc1JlZ2lzdGVyZWQiXSxbNTIsImsiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFsyMixbImIiLFsxNSwiayJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbMixbMTUsImUiXSwiQSIsWzcsWzE1LCJrIl0sWzE3LFsxNSwiYSJdLCJpbmNsdWRlUGFyYW1zIl1dXSxbMjIsWzIsWzE1LCJjIl0sImdldEl0ZW0iLFs3LFsxNSwiaiJdXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzUyLCJsIixbInJlcXVpcmUiLCJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIl1dLFs1MiwibSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25Zb3VUdWJlQWN0aXZpdHkiXV0sWzUyLCJuIixbMTUsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiXV0sWzUyLCJvIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwicCIsWzIsWzE1LCJuIl0sIkEiLFs3LCJ2aWRlbyJdXV0sWzUyLCJxIixbIm0iLFs4LCJjYXB0dXJlQ29tcGxldGUiLHRydWUsImNhcHR1cmVTdGFydCIsdHJ1ZSwicHJvZ3Jlc3NUaHJlc2hvbGRzUGVyY2VudCIsWzcsMTAsMjUsNTAsNzVdXV1dLFsyMixbMjgsWzE1LCJxIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uRmFpbHVyZSIsWzddXSxbMzZdXV1dLFsyLFsxNSwiYyJdLCJzZXRJdGVtIixbNyxbMTUsImoiXSx0cnVlXV0sWyJsIiwiZ3RtLnZpZGVvIixbNTEsIiIsWzcsInIiLCJzIl0sWyJzIl0sWzUyLCJ0IixbMTYsWzE1LCJyIl0sImd0bS52aWRlb1N0YXR1cyJdXSxbNDEsInUiXSxbMjIsWzIwLFsxNSwidCJdLCJzdGFydCJdLFs0NixbNTMsWzMsInUiLFsxNSwiZyJdXV1dLFs0NixbMjIsWzIwLFsxNSwidCJdLCJwcm9ncmVzcyJdLFs0NixbNTMsWzMsInUiLFsxNSwiaCJdXV1dLFs0NixbMjIsWzIwLFsxNSwidCJdLCJjb21wbGV0ZSJdLFs0NixbNTMsWzMsInUiLFsxNSwiaSJdXV1dLFs0NixbNTMsWzM2XV1dXV1dXV0sWzUyLCJ2IixbOCwidmlkZW9fY3VycmVudF90aW1lIixbMTYsWzE1LCJyIl0sImd0bS52aWRlb0N1cnJlbnRUaW1lIl0sInZpZGVvX2R1cmF0aW9uIixbMTYsWzE1LCJyIl0sImd0bS52aWRlb0R1cmF0aW9uIl0sInZpZGVvX3BlcmNlbnQiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvUGVyY2VudCJdLCJ2aWRlb19wcm92aWRlciIsWzE2LFsxNSwiciJdLCJndG0udmlkZW9Qcm92aWRlciJdLCJ2aWRlb190aXRsZSIsWzE2LFsxNSwiciJdLCJndG0udmlkZW9UaXRsZSJdLCJ2aWRlb191cmwiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvVXJsIl0sInZpc2libGUiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvVmlzaWJsZSJdXV0sWzUyLCJ3IixbOCwiZXZlbnRJZCIsWzE2LFsxNSwiciJdLCJndG0udW5pcXVlRXZlbnRJZCJdLCJkZWZlcnJhYmxlIix0cnVlXV0sWzIsWzE1LCJuIl0sIkIiLFs3LFsxNSwidyJdXV0sWyJvIixbMTUsInAiXSxbMTUsInUiXSxbMTUsInYiXSxbMTUsInciXV1dLFsxNSwicSJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfZ2FfZmlyc3QiLFs0NiwiYSJdLFs1MCwiZSIsWzQ2LCJmIl0sWzIsWzE1LCJjIl0sIkEiLFs3LFsxNSwiZiJdXV0sWzIsWzE1LCJkIl0sIkEiLFs3LFsxNSwiZiJdXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImMiLFsxNSwiX19tb2R1bGVfdGFza1BsYXRmb3JtRGV0ZWN0aW9uIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV90YXNrU2V0VGVzdEhpdFBhcmFtcyJdXSxbImIiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl0sWzUxLCIiLFs3LCJmIl0sWyJlIixbMTUsImYiXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfZ2FfbGFzdCIsWzQ2LCJhIl0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2dhX3JlZ3Njb3BlIixbNDYsImEiXSxbNTIsImIiLFsxNSwiX19tb2R1bGVfY2NkR2FSZWdpb25TY29wZWRTZXR0aW5ncyJdXSxbNTIsImMiLFsyLFsxNSwiYiJdLCJCIixbNyxbMTUsImEiXV1dXSxbMixbMTUsImIiXSwiQSIsWzcsWzE1LCJhIl0sWzE1LCJjIl1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19lIixbNDYsImEiXSxbMzYsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFsicmVxdWlyZSIsImludGVybmFsLmdldEV2ZW50RGF0YSJdXSxbIiQwIiwiZXZlbnQiXV1dXQogLFs1MCwiX19nY3QiLFs0NiwiYSJdLFs1MCwiZyIsWzQ2LCJtIl0sWzUyLCJuIixbN11dLFs2NSwibyIsWzE1LCJtIl0sWzQ2LFs1MyxbNTIsInAiLFsiYiIsWzE1LCJvIl1dXSxbMjIsWzIxLFsxNSwicCJdLFs0NV1dLFs0NixbMixbMTUsIm4iXSwicHVzaCIsWzcsWzE1LCJwIl1dXV1dXV1dLFszNixbMTUsIm4iXV1dLFs1MCwiaCIsWzQ2LCJtIl0sWzUyLCJuIixbMTcsWzE1LCJtIl0sImxpbmtlciJdXSxbMjIsWzEsWzE1LCJuIl0sWzE2LFsxNSwibiJdLCJkb21haW5zIl1dLFs0NixbNTMsWzQzLFsxNSwibiJdLCJkb21haW5zIixbImciLFsxNixbMTUsIm4iXSwiZG9tYWlucyJdXV1dXV0sWzM2LFsxNSwibiJdXV0sWzUwLCJpIixbNDYsIm0iXSxbNTIsIm4iLFsxNyxbMTUsIm0iXSwicmVmZXJyYWxFeGNsdXNpb25EZWZpbml0aW9uIl1dLFsyMixbMSxbMTUsIm4iXSxbMTYsWzE1LCJuIl0sImluY2x1ZGVfY29uZGl0aW9ucyJdXSxbNDYsWzUzLFs0MyxbMTUsIm4iXSwiaW5jbHVkZV9jb25kaXRpb25zIixbImciLFsxNixbMTUsIm4iXSwiaW5jbHVkZV9jb25kaXRpb25zIl1dXV1dXSxbMzYsWzE1LCJuIl1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNyZWF0ZVJlZ2V4Il1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiZ2V0VHlwZSJdXSxbNTIsImQiLFsicmVxdWlyZSIsImludGVybmFsLm1lcmdlUmVtb3RlQ29uZmlnIl1dLFs1MiwiZSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJEZXN0aW5hdGlvbiJdXSxbNTIsImYiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImoiLFszMCxbMixbMTUsImYiXSwiZ2V0SXRlbSIsWzcsInJlZ2V4Il1dLFsiYiIsIlsuKitcXC0/XiR7fSgpfFtcXF1cXFxcXSIsImciXV1dLFsyLFsxNSwiZiJdLCJzZXRJdGVtIixbNywicmVnZXgiLFsxNSwiaiJdXV0sWzUyLCJrIixbOF1dLFs1MiwibCIsWzE3LFsxNSwiYSJdLCJzZXNzaW9uRHVyYXRpb24iXV0sWzIyLFsxOCxbMTUsImwiXSwwXSxbNDYsWzUzLFs0MyxbMTUsImsiXSwic2Vzc2lvbl9kdXJhdGlvbiIsWzE1LCJsIl1dXV1dLFs0MyxbMTUsImsiXSwiZXZlbnRfc2V0dGluZ3MiLFsxNyxbMTUsImEiXSwiZXZlbnRTZXR0aW5ncyJdXSxbNDMsWzE1LCJrIl0sImR5bmFtaWNfZXZlbnRfc2V0dGluZ3MiLFsxNyxbMTUsImEiXSwiZHluYW1pY0V2ZW50U2V0dGluZ3MiXV0sWzQzLFsxNSwiayJdLCJnb29nbGVfc2lnbmFscyIsWzIwLFsxNyxbMTUsImEiXSwiZ29vZ2xlU2lnbmFscyJdLDFdXSxbNDMsWzE1LCJrIl0sImdvb2dsZV90bGQiLFsxNyxbMTUsImEiXSwiZm9yZWlnblRsZCJdXSxbNDMsWzE1LCJrIl0sImdhX3Jlc3RyaWN0X2RvbWFpbiIsWzIwLFsxNyxbMTUsImEiXSwicmVzdHJpY3REb21haW4iXSwxXV0sWzQzLFsxNSwiayJdLCJpbnRlcm5hbF90cmFmZmljX3Jlc3VsdHMiLFsxNyxbMTUsImEiXSwiaW50ZXJuYWxUcmFmZmljUmVzdWx0cyJdXSxbNDMsWzE1LCJrIl0sImxpbmtlciIsWyJoIixbMTUsImEiXV1dLFs0MyxbMTUsImsiXSwicmVmZXJyYWxfZXhjbHVzaW9uX2RlZmluaXRpb24iLFsiaSIsWzE1LCJhIl1dXSxbImQiLFsxNyxbMTUsImEiXSwidHJhY2tpbmdJZCJdLFsxNSwiayJdXSxbImUiLFsxNyxbMTUsImEiXSwidHJhY2tpbmdJZCJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19vZ3RfMXBfZGF0YV92MiIsWzQ2LCJhIl0sWzUwLCJwIixbNDYsInIiLCJzIiwidCIsInUiXSxbMjIsWzIwLFsxNixbMTUsInMiXSwidHlwZSJdLFsxNSwidCJdXSxbNDYsWzUzLFsyMixbMjgsWzE1LCJyIl1dLFs0NixbNTMsWzMsInIiLFs4XV1dXV0sWzIyLFsyOCxbMTYsWzE1LCJyIl0sWzE1LCJ0Il1dXSxbNDYsWzUzLFs0MyxbMTUsInIiXSxbMTUsInQiXSxbMTYsWzE1LCJzIl0sInVzZXJEYXRhIl1dLFs1MiwidiIsWzgsIm1vZGUiLCJhIl1dLFsyMixbMTYsWzE1LCJzIl0sInRhZ05hbWUiXSxbNDYsWzUzLFs0MyxbMTUsInYiXSwibG9jYXRpb24iLFsxNixbMTUsInMiXSwidGFnTmFtZSJdXV1dXSxbMjIsWzE2LFsxNSwicyJdLCJxdWVyeVNlbGVjdG9yIl0sWzQ2LFs1MyxbNDMsWzE1LCJ2Il0sInNlbGVjdG9yIixbMTYsWzE1LCJzIl0sInF1ZXJ5U2VsZWN0b3IiXV1dXV0sWzQzLFsxNSwidSJdLFsxNSwidCJdLFsxNSwidiJdXV1dXV1dXSxbMzYsWzE1LCJyIl1dXSxbNTAsInEiLFs0NiwiciIsInMiLCJ0Il0sWzIyLFsyOCxbMTYsWzE1LCJhIl0sWzE1LCJ0Il1dXSxbNDYsWzM2XV1dLFs0MyxbMTUsInIiXSxbMTUsInMiXSxbOCwidmFsdWUiLFsxNixbMTUsImEiXSxbMTUsInQiXV1dXV0sWzIyLFsyOCxbMTcsWzE1LCJhIl0sImlzRW5hYmxlZCJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsIk9iamVjdCJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVGbGFncyJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfZmVhdHVyZXMiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyJdXSxbNTIsImciLFsicmVxdWlyZSIsImludGVybmFsLmRldGVjdFVzZXJQcm92aWRlZERhdGEiXV0sWzUyLCJoIixbInJlcXVpcmUiLCJxdWVyeVBlcm1pc3Npb24iXV0sWzUyLCJpIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiXV0sWzUyLCJqIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiayIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsIm0iLFsiYyIsWzE3LFsxNSwiZSJdLCJBVCJdXV0sWzUyLCJuIixbMzAsWyJmIl0sWzddXV0sWzUyLCJvIixbOCwiZW5hYmxlX2NvZGUiLHRydWVdXSxbMjIsWzE3LFsxNSwiYSJdLCJpc0F1dG9FbmFibGVkIl0sWzQ2LFs1MyxbNTIsInIiLFs3XV0sWzIyLFsxLFsxNyxbMTUsImEiXSwiYXV0b0NvbGxlY3RFeGNsdXNpb25TZWxlY3RvcnMiXSxbMTcsWzE3LFsxNSwiYSJdLCJhdXRvQ29sbGVjdEV4Y2x1c2lvblNlbGVjdG9ycyJdLCJsZW5ndGgiXV0sWzQ2LFs1MyxbNTMsWzQxLCJ1Il0sWzMsInUiLDBdLFs2MyxbNywidSJdLFsyMyxbMTUsInUiXSxbMTcsWzE3LFsxNSwiYSJdLCJhdXRvQ29sbGVjdEV4Y2x1c2lvblNlbGVjdG9ycyJdLCJsZW5ndGgiXV0sWzMzLFsxNSwidSJdLFszLCJ1IixbMCxbMTUsInUiXSwxXV1dLFs0NixbNTMsWzUyLCJ2IixbMTcsWzE2LFsxNyxbMTUsImEiXSwiYXV0b0NvbGxlY3RFeGNsdXNpb25TZWxlY3RvcnMiXSxbMTUsInUiXV0sImV4Y2x1c2lvblNlbGVjdG9yIl1dLFsyMixbMTUsInYiXSxbNDYsWzUzLFsyLFsxNSwiciJdLCJwdXNoIixbNyxbMTUsInYiXV1dXV1dXV1dXV1dXSxbNTIsInMiLFsxNyxbMTUsImEiXSwiaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIl1dLFs1MiwidCIsWzM5LFsxNyxbMTUsImEiXSwiaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIl0sWzE3LFsxNSwiYSJdLCJhdXRvRW1haWxFbmFibGVkIl0sdHJ1ZV1dLFs0MyxbMTUsIm8iXSwiYXV0b19kZXRlY3QiLFs4LCJlbWFpbCIsWzE1LCJ0Il0sInBob25lIixbMSxbMTUsInMiXSxbMTcsWzE1LCJhIl0sImF1dG9QaG9uZUVuYWJsZWQiXV0sImFkZHJlc3MiLFsxLFsxNSwicyJdLFsxNyxbMTUsImEiXSwiYXV0b0FkZHJlc3NFbmFibGVkIl1dLCJleGNsdWRlX2VsZW1lbnRfc2VsZWN0b3JzIixbMTUsInIiXV1dXV1dLFsyMixbMTcsWzE1LCJhIl0sImlzTWFudWFsRW5hYmxlZCJdLFs0NixbNTMsWzUyLCJyIixbOF1dLFsyMixbMTcsWzE1LCJhIl0sIm1hbnVhbEVtYWlsRW5hYmxlZCJdLFs0NixbNTMsWyJxIixbMTUsInIiXSwiZW1haWwiLCJlbWFpbFZhbHVlIl1dXV0sWzIyLFsxNyxbMTUsImEiXSwibWFudWFsUGhvbmVFbmFibGVkIl0sWzQ2LFs1MyxbInEiLFsxNSwiciJdLCJwaG9uZSIsInBob25lVmFsdWUiXV1dXSxbMjIsWzE3LFsxNSwiYSJdLCJtYW51YWxBZGRyZXNzRW5hYmxlZCJdLFs0NixbNTMsWzUyLCJzIixbOF1dLFsicSIsWzE1LCJzIl0sImZpcnN0X25hbWUiLCJmaXJzdE5hbWVWYWx1ZSJdLFsicSIsWzE1LCJzIl0sImxhc3RfbmFtZSIsImxhc3ROYW1lVmFsdWUiXSxbInEiLFsxNSwicyJdLCJzdHJlZXQiLCJzdHJlZXRWYWx1ZSJdLFsicSIsWzE1LCJzIl0sImNpdHkiLCJjaXR5VmFsdWUiXSxbInEiLFsxNSwicyJdLCJyZWdpb24iLCJyZWdpb25WYWx1ZSJdLFsicSIsWzE1LCJzIl0sImNvdW50cnkiLCJjb3VudHJ5VmFsdWUiXSxbInEiLFsxNSwicyJdLCJwb3N0YWxfY29kZSIsInBvc3RhbENvZGVWYWx1ZSJdLFs0MyxbMTUsInIiXSwibmFtZV9hbmRfYWRkcmVzcyIsWzcsWzE1LCJzIl1dXV1dXSxbNDMsWzE1LCJvIl0sInNlbGVjdG9ycyIsWzE1LCJyIl1dXV1dLFs2NSwiciIsWzE1LCJuIl0sWzQ2LFs1MyxbImkiLFsxNSwiciJdLCJ1c2VyX2RhdGFfc2V0dGluZ3MiLFsxNSwibyJdXSxbNTIsInMiLFsxNixbMTUsIm8iXSwiYXV0b19kZXRlY3QiXV0sWzIyLFsyOCxbMTUsInMiXV0sWzQ2LFs1MyxbNl1dXV0sWzUyLCJ0IixbNTEsIiIsWzcsInUiXSxbNTIsInYiLFsyLFsxNSwidSJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiayJdLCJDWCJdXV1dLFsyMixbMTUsInYiXSxbNDYsWzUzLFszNixbMTUsInYiXV1dXV0sWzUyLCJ3IixbImMiLFsxNyxbMTUsImUiXSwiQlYiXV1dLFs1MiwieCIsWyJjIixbMTcsWzE1LCJlIl0sIkNJIl1dXSxbNDEsInkiXSxbMjIsWyJoIiwiZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YSIsImF1dG8iXSxbNDYsWzUzLFszLCJ5IixbImciLFs4LCJleGNsdWRlRWxlbWVudFNlbGVjdG9ycyIsWzE2LFsxNSwicyJdLCJleGNsdWRlX2VsZW1lbnRfc2VsZWN0b3JzIl0sImZpZWxkRmlsdGVycyIsWzgsImVtYWlsIixbMTYsWzE1LCJzIl0sImVtYWlsIl0sInBob25lIixbMTYsWzE1LCJzIl0sInBob25lIl0sImFkZHJlc3MiLFsxNixbMTUsInMiXSwiYWRkcmVzcyJdXSwiaW5jbHVkZVNlbGVjdG9yIixbMTUsInciXSwicmVhZEZyb21EYXRhTGF5ZXIiLFsxNSwieCJdXV1dXV1dLFs1MiwieiIsWzEsWzE1LCJ5Il0sWzE2LFsxNSwieSJdLCJlbGVtZW50cyJdXV0sWzUyLCJhQSIsWzhdXSxbNTIsImFCIixbOF1dLFsyMixbMSxbMTUsInoiXSxbMTgsWzE3LFsxNSwieiJdLCJsZW5ndGgiXSwwXV0sWzQ2LFs1MyxbNDEsImFDIl0sWzQxLCJhRCJdLFszLCJhRCIsWzhdXSxbNTMsWzQxLCJhRSJdLFszLCJhRSIsMF0sWzYzLFs3LCJhRSJdLFsyMyxbMTUsImFFIl0sWzE3LFsxNSwieiJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiYUUiXSxbMywiYUUiLFswLFsxNSwiYUUiXSwxXV1dLFs0NixbNTMsWzUyLCJhRiIsWzE2LFsxNSwieiJdLFsxNSwiYUUiXV1dLFsicCIsWzE1LCJhQSJdLFsxNSwiYUYiXSwiZW1haWwiLFsxNSwiYUIiXV0sWzIyLFsiYyIsWzE3LFsxNSwiZSJdLCJCTyJdXSxbNDYsWzUzLFsicCIsWzE1LCJhQSJdLFsxNSwiYUYiXSwicGhvbmVfbnVtYmVyIixbMTUsImFCIl1dLFszLCJhQyIsWyJwIixbMTUsImFDIl0sWzE1LCJhRiJdLCJmaXJzdF9uYW1lIixbMTUsImFEIl1dXSxbMywiYUMiLFsicCIsWzE1LCJhQyJdLFsxNSwiYUYiXSwibGFzdF9uYW1lIixbMTUsImFEIl1dXSxbMywiYUMiLFsicCIsWzE1LCJhQyJdLFsxNSwiYUYiXSwiY291bnRyeSIsWzE1LCJhRCJdXV0sWzMsImFDIixbInAiLFsxNSwiYUMiXSxbMTUsImFGIl0sInBvc3RhbF9jb2RlIixbMTUsImFEIl1dXV1dXV1dXV0sWzIyLFsxLFsxNSwiYUMiXSxbMjgsWzE2LFsxNSwiYUEiXSwiYWRkcmVzcyJdXV0sWzQ2LFs1MyxbNDMsWzE1LCJhQSJdLCJhZGRyZXNzIixbMTUsImFDIl1dLFsyMixbMTUsIm0iXSxbNDYsWzUzLFs0MyxbMTYsWzE1LCJhQSJdLCJhZGRyZXNzIl0sIl90YWdfbWV0YWRhdGEiLFsxNSwiYUQiXV1dXV1dXV1dXV0sWzIyLFsxLFsxNSwieSJdLFsxNSwieCJdXSxbNDYsWzUzLFs1MiwiYUMiLFsxNixbMTUsInkiXSwiZGF0YUxheWVyU2VhcmNoVGltZSJdXSxbNTIsImFEIixbMTYsWzE1LCJ5Il0sImRhdGFMYXllclNlYXJjaENvdW50Il1dLFsyLFsxNSwidSJdLCJtZXJnZUhpdERhdGFGb3JLZXkiLFs3LFsxNyxbMTUsImwiXSwiRlQiXSxbOCwiZGxzdCIsWzE1LCJhQyJdLCJkbHNjIixbMTUsImFEIl1dXV1dXV0sWzIyLFsxNSwibSJdLFs0NixbNTMsWzIyLFszMCxbMTYsWzE1LCJhQSJdLCJlbWFpbCJdLFsxNixbMTUsImFBIl0sInBob25lX251bWJlciJdXSxbNDYsWzUzLFs0MyxbMTUsImFBIl0sIl90YWdfbWV0YWRhdGEiLFsxNSwiYUIiXV1dXV1dXV0sWzIsWzE1LCJ1Il0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJrIl0sIkNYIl0sWzE1LCJhQSJdXV0sWzM2LFsxNSwiYUEiXV1dXSxbImoiLFsxNSwiciJdLFs1MSwiIixbNywidSJdLFsyLFsxNSwidSJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiayJdLCJDWSJdLFsxNSwidCJdXV1dXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19vZ3RfZXZlbnRfY3JlYXRlIixbNDYsImEiXSxbNTAsInIiLFs0NiwicyIsInQiXSxbMjIsWzI4LFsyLFsxNSwiYyJdLCJCIixbNyxbMTUsInMiXSxbMTYsWzE1LCJ0Il0sWzE1LCJuIl1dLFszMCxbMTYsWzE1LCJ0Il0sWzE1LCJvIl1dLFs3XV1dXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dLFs1MiwidSIsWzE2LFsxNSwidCJdLFsxNSwicCJdXV0sWzIyLFsyLFsxNSwiYyJdLCJEIixbNyxbMTUsInUiXV1dLFs0NixbNTMsWzM2XV1dXSxbNTIsInYiLFsyOCxbMTYsWzE1LCJ0Il0sWzE1LCJxIl1dXV0sWzQxLCJ3Il0sWzMsInciLFsxNSwidiJdXSxbMjIsWyJpIixbMTcsWzE1LCJqIl0sIkFFIl1dLFs0NixbNTMsWzMsInciLFszMCxbMTUsInciXSxbMjgsWzIsWzE1LCJzIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJnIl0sIkJPIl1dXV1dXV1dXSxbNTIsIngiLFszMCxbMixbMTUsInMiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImciXSwiQUMiXV1dLFs3XV1dLFsyMixbMjAsWzIsWzE1LCJ4Il0sImluZGV4T2YiLFs3LFsxNyxbMTUsImgiXSwiQSJdXV0sWzI3LDFdXSxbNDYsWzUzLFsyLFsxNSwieCJdLCJwdXNoIixbNyxbMTcsWzE1LCJoIl0sIkEiXV1dXV1dLFsyLFsxNSwicyJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZyJdLCJBQyJdLFsxNSwieCJdXV0sWzUyLCJ5IixbImIiLFsxNSwicyJdLFs4LCJvbWl0SGl0RGF0YSIsWzE1LCJ3Il0sIm9taXRFdmVudENvbnRleHQiLFsxNSwidiJdLCJvbWl0TWV0YWRhdGEiLHRydWVdXV0sWzIsWzE1LCJjIl0sIkEiLFs3LFsxNSwieSJdLFsxNSwidCJdXV0sWzIsWzE1LCJ5Il0sInNldEV2ZW50TmFtZSIsWzcsWzE1LCJ1Il1dXSxbMixbMTUsInkiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImciXSwiQlIiXSx0cnVlXV0sWzIsWzE1LCJ5Il0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJnIl0sIkFDIl0sWzcsWzE3LFsxNSwiaCJdLCJLIl1dXV0sWyJkIixbMTUsInkiXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuY29weVByZUhpdCJdXSxbNTIsImMiLFsxNSwiX19tb2R1bGVfZXZlbnRFZGl0aW5nQW5kU3ludGhlc2lzIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucHJvY2Vzc0FzTmV3RXZlbnQiXV0sWzUyLCJlIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiZiIsWyJyZXF1aXJlIiwidGVtcGxhdGVTdG9yYWdlIl1dLFs1MiwiZyIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImgiLFsxNSwiX19tb2R1bGVfZ29sZEV2ZW50VXNhZ2VJZCJdXSxbNTIsImkiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJqIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiayIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzQxLCJsIl0sWzMsImwiLFsyLFsxNSwiZiJdLCJnZXRJdGVtIixbNyxbMTUsImsiXV1dXSxbNDEsIm0iXSxbMywibSIsWzI4LFsyOCxbMTUsImwiXV1dXSxbMjIsWzE1LCJtIl0sWzQ2LFs1MyxbMixbMTUsImwiXSwicHVzaCIsWzcsWzE3LFsxNSwiYSJdLCJwcmVjb21waWxlZFJ1bGUiXV1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbMixbMTUsImYiXSwic2V0SXRlbSIsWzcsWzE1LCJrIl0sWzcsWzE3LFsxNSwiYSJdLCJwcmVjb21waWxlZFJ1bGUiXV1dXSxbNTIsIm4iLCJldmVudF9uYW1lX3ByZWRpY2F0ZSJdLFs1MiwibyIsImNvbmRpdGlvbnMiXSxbNTIsInAiLCJuZXdfZXZlbnRfbmFtZSJdLFs1MiwicSIsIm1lcmdlX3NvdXJjZV9ldmVudF9wYXJhbXMiXSxbImUiLFsxNSwiayJdLFs1MSwiIixbNywicyJdLFsyMixbMixbMTUsInMiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImciXSwiQlIiXV1dLFs0NixbNTMsWzM2XV1dXSxbNTIsInQiLFsyLFsxNSwiZiJdLCJnZXRJdGVtIixbNyxbMTUsImsiXV1dXSxbNjYsInUiLFsxNSwidCJdLFs0NixbNTMsWyJyIixbMTUsInMiXSxbMTUsInUiXV1dXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19zZXRfcHJvZHVjdF9zZXR0aW5ncyIsWzQ2LCJhIl0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTIsIl9fbW9kdWxlX2Fkd29yZHNIaXRUeXBlIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwiY29udmVyc2lvbiJdLFs1MiwiYyIsImZsb29kbGlnaHQiXSxbNTIsImQiLCJnYV9jb252ZXJzaW9uIl0sWzUyLCJlIiwicGFnZV92aWV3Il0sWzUyLCJmIiwicmVtYXJrZXRpbmciXSxbNTIsImciLCJ1c2VyX2RhdGFfbGVhZCJdLFs1MiwiaCIsInVzZXJfZGF0YV93ZWIiXSxbMzYsWzgsIkQiLFsxNSwiYiJdLCJFIixbMTUsImMiXSwiRiIsWzE1LCJkIl0sIkgiLFsxNSwiZSJdLCJJIixbMTUsImYiXSwiSiIsWzE1LCJnIl0sIksiLFsxNSwiaCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZ3RhZ1NjaGVtYSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImFkX3BlcnNvbmFsaXphdGlvbiJdLFs1MiwiYyIsImFkX3N0b3JhZ2UiXSxbNTIsImQiLCJhZF91c2VyX2RhdGEiXSxbNTIsImUiLCJjb25zZW50X3VwZGF0ZWQiXSxbNTIsImYiLCJhcHBfcmVtb3ZlIl0sWzUyLCJnIiwiYXBwX3N0b3JlX3JlZnVuZCJdLFs1MiwiaCIsImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fY2FuY2VsIl0sWzUyLCJpIiwiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9jb252ZXJ0Il0sWzUyLCJqIiwiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9yZW5ldyJdLFs1MiwiayIsImNvbnZlcnNpb24iXSxbNTIsImwiLCJwdXJjaGFzZSJdLFs1MiwibSIsImZpcnN0X29wZW4iXSxbNTIsIm4iLCJmaXJzdF92aXNpdCJdLFs1MiwibyIsImd0YWcuY29uZmlnIl0sWzUyLCJwIiwiaW5fYXBwX3B1cmNoYXNlIl0sWzUyLCJxIiwicGFnZV92aWV3Il0sWzUyLCJyIiwic2Vzc2lvbl9zdGFydCJdLFs1MiwicyIsInVzZXJfZW5nYWdlbWVudCJdLFs1MiwidCIsImFkc19kYXRhX3JlZGFjdGlvbiJdLFs1MiwidSIsImFsbG93X2FkX3BlcnNvbmFsaXphdGlvbl9zaWduYWxzIl0sWzUyLCJ2IiwiYWxsb3dfY3VzdG9tX3NjcmlwdHMiXSxbNTIsInciLCJhbGxvd19lbmhhbmNlZF9jb252ZXJzaW9ucyJdLFs1MiwieCIsImFsbG93X2dvb2dsZV9zaWduYWxzIl0sWzUyLCJ5IiwiYXVpZCJdLFs1MiwieiIsImF3X3JlbWFya2V0aW5nX29ubHkiXSxbNTIsImFBIiwiZGlzY291bnQiXSxbNTIsImFCIiwiYXdfZmVlZF9jb3VudHJ5Il0sWzUyLCJhQyIsImF3X2ZlZWRfbGFuZ3VhZ2UiXSxbNTIsImFEIiwiaXRlbXMiXSxbNTIsImFFIiwiYXdfbWVyY2hhbnRfaWQiXSxbNTIsImFGIiwiYXdfYmFza2V0X3R5cGUiXSxbNTIsImFHIiwiY2xpZW50X2lkIl0sWzUyLCJhSCIsImNvbnZlcnNpb25fY29va2llX3ByZWZpeCJdLFs1MiwiYUkiLCJjb252ZXJzaW9uX2lkIl0sWzUyLCJhSiIsImNvbnZlcnNpb25fbGlua2VyIl0sWzUyLCJhSyIsImNvbnZlcnNpb25fYXBpIl0sWzUyLCJhTCIsImNvb2tpZV9kZXByZWNhdGlvbiJdLFs1MiwiYU0iLCJjb29raWVfZXhwaXJlcyJdLFs1MiwiYU4iLCJjb29raWVfcHJlZml4Il0sWzUyLCJhTyIsImNvb2tpZV91cGRhdGUiXSxbNTIsImFQIiwiY291bnRyeSJdLFs1MiwiYVEiLCJjdXJyZW5jeSJdLFs1MiwiYVIiLCJjdXN0b21lcl9saWZldGltZV92YWx1ZSJdLFs1MiwiYVMiLCJjdXN0b21lcl90eXBlIl0sWzUyLCJhVCIsImRlYnVnX21vZGUiXSxbNTIsImFVIiwic2hpcHBpbmciXSxbNTIsImFWIiwiZW5nYWdlbWVudF90aW1lX21zZWMiXSxbNTIsImFXIiwiZXN0aW1hdGVkX2RlbGl2ZXJ5X2RhdGUiXSxbNTIsImFYIiwiZXZlbnRfZGV2ZWxvcGVyX2lkX3N0cmluZyJdLFs1MiwiYVkiLCJldmVudF9pZCJdLFs1MiwiYVoiLCJldmVudCJdLFs1MiwiYkEiLCJfJmFlIl0sWzUyLCJiQiIsImV2ZW50X3RpbWVvdXQiXSxbNTIsImJDIiwiZXh0X2NsaWVudF9pZCJdLFs1MiwiYkQiLCJmaXJzdF9wYXJ0eV9jb2xsZWN0aW9uIl0sWzUyLCJiRSIsIm1hdGNoX2lkIl0sWzUyLCJiRiIsImdkcHJfYXBwbGllcyJdLFs1MiwiYkciLCJfZ3RfbWV0YWRhdGEiXSxbNTIsImJIIiwiZ29vZ2xlX2FuYWx5c2lzX3BhcmFtcyJdLFs1MiwiYkkiLCJfZ29vZ2xlX25nIl0sWzUyLCJiSiIsIl9vbm8iXSxbNTIsImJLIiwiZ3BwX3NpZCJdLFs1MiwiYkwiLCJncHBfc3RyaW5nIl0sWzUyLCJiTSIsImdzYV9leHBlcmltZW50X2lkIl0sWzUyLCJiTiIsImd0YWdfZXZlbnRfZmVhdHVyZV91c2FnZSJdLFs1MiwiYk8iLCJpZnJhbWVfc3RhdGUiXSxbNTIsImJQIiwiaWdub3JlX3JlZmVycmVyIl0sWzUyLCJiUSIsImlzX3Bhc3N0aHJvdWdoIl0sWzUyLCJiUiIsImxhbmd1YWdlIl0sWzUyLCJiUyIsIm1lcmNoYW50X2ZlZWRfbGFiZWwiXSxbNTIsImJUIiwibWVyY2hhbnRfZmVlZF9sYW5ndWFnZSJdLFs1MiwiYlUiLCJtZXJjaGFudF9pZCJdLFs1MiwiYlYiLCJuZXdfY3VzdG9tZXIiXSxbNTIsImJXIiwicGFnZV9ob3N0bmFtZSJdLFs1MiwiYlgiLCJwYWdlX3BhdGgiXSxbNTIsImJZIiwicGFnZV9yZWZlcnJlciJdLFs1MiwiYloiLCJwYWdlX3RpdGxlIl0sWzUyLCJjQSIsIl9wbGF0aW51bV9yZXF1ZXN0X3N0YXR1cyJdLFs1MiwiY0IiLCJxdWFudGl0eSJdLFs1MiwiY0MiLCJyZXN0cmljdGVkX2RhdGFfcHJvY2Vzc2luZyJdLFs1MiwiY0QiLCJzY3JlZW5fcmVzb2x1dGlvbiJdLFs1MiwiY0UiLCJzZW5kX3BhZ2VfdmlldyJdLFs1MiwiY0YiLCJzZXJ2ZXJfY29udGFpbmVyXzNwX2VucmljaG1lbnQiXSxbNTIsImNHIiwic2VydmVyX2NvbnRhaW5lcl91cmwiXSxbNTIsImNIIiwic2Vzc2lvbl9kdXJhdGlvbiJdLFs1MiwiY0kiLCJzZXNzaW9uX2VuZ2FnZWRfdGltZSJdLFs1MiwiY0oiLCJzZXNzaW9uX2lkIl0sWzUyLCJjSyIsIl9zaGFyZWRfdXNlcl9pZCJdLFs1MiwiY0wiLCJkZWxpdmVyeV9wb3N0YWxfY29kZSJdLFs1MiwiY00iLCJ0ZXN0b25seSJdLFs1MiwiY04iLCJ0b3Btb3N0X3VybCJdLFs1MiwiY08iLCJ0cmFuc2FjdGlvbl9pZCJdLFs1MiwiY1AiLCJ0cmFuc2FjdGlvbl9pZF9zb3VyY2UiXSxbNTIsImNRIiwidHJhbnNwb3J0X3VybCJdLFs1MiwiY1IiLCJ1cGRhdGUiXSxbNTIsImNTIiwiX3VzZXJfYWdlbnRfYXJjaGl0ZWN0dXJlIl0sWzUyLCJjVCIsIl91c2VyX2FnZW50X2JpdG5lc3MiXSxbNTIsImNVIiwiX3VzZXJfYWdlbnRfZnVsbF92ZXJzaW9uX2xpc3QiXSxbNTIsImNWIiwiX3VzZXJfYWdlbnRfbW9iaWxlIl0sWzUyLCJjVyIsIl91c2VyX2FnZW50X21vZGVsIl0sWzUyLCJjWCIsIl91c2VyX2FnZW50X3BsYXRmb3JtIl0sWzUyLCJjWSIsIl91c2VyX2FnZW50X3BsYXRmb3JtX3ZlcnNpb24iXSxbNTIsImNaIiwiX3VzZXJfYWdlbnRfd293NjQiXSxbNTIsImRBIiwidXNlcl9kYXRhIl0sWzUyLCJkQiIsInVzZXJfZGF0YV9hdXRvX2xhdGVuY3kiXSxbNTIsImRDIiwidXNlcl9kYXRhX2F1dG9fbWV0YSJdLFs1MiwiZEQiLCJ1c2VyX2RhdGFfYXV0b19tdWx0aSJdLFs1MiwiZEUiLCJ1c2VyX2RhdGFfYXV0b19zZWxlY3RvcnMiXSxbNTIsImRGIiwidXNlcl9kYXRhX2F1dG9fc3RhdHVzIl0sWzUyLCJkRyIsInVzZXJfZGF0YV9tb2RlIl0sWzUyLCJkSCIsInVzZXJfaWQiXSxbNTIsImRJIiwidXNlcl9wcm9wZXJ0aWVzIl0sWzUyLCJkSiIsInVzX3ByaXZhY3lfc3RyaW5nIl0sWzUyLCJkSyIsInZhbHVlIl0sWzUyLCJkTCIsIl9mcG1fcGFyYW1ldGVycyJdLFs1MiwiZE0iLCJfaG9zdF9uYW1lIl0sWzUyLCJkTiIsIl9pbl9wYWdlX2NvbW1hbmQiXSxbNTIsImRPIiwiX21lYXN1cmVtZW50X3R5cGUiXSxbNTIsImRQIiwibm9uX3BlcnNvbmFsaXplZF9hZHMiXSxbNTIsImRRIiwiY29udmVyc2lvbl9sYWJlbCJdLFs1MiwiZFIiLCJwYWdlX2xvY2F0aW9uIl0sWzUyLCJkUyIsIl9leHRyYWN0ZWRfZGF0YSJdLFs1MiwiZFQiLCJnbG9iYWxfZGV2ZWxvcGVyX2lkX3N0cmluZyJdLFs1MiwiZFUiLCJ0Y19wcml2YWN5X3N0cmluZyJdLFszNixbOCwiQSIsWzE1LCJiIl0sIkIiLFsxNSwiYyJdLCJDIixbMTUsImQiXSwiRiIsWzE1LCJlIl0sIkkiLFsxNSwiZiJdLCJKIixbMTUsImciXSwiSyIsWzE1LCJoIl0sIkwiLFsxNSwiaSJdLCJNIixbMTUsImoiXSwiTyIsWzE1LCJrIl0sIkFBIixbMTUsImwiXSwiQUYiLFsxNSwibSJdLCJBRyIsWzE1LCJuIl0sIkFIIixbMTUsIm8iXSwiQUoiLFsxNSwicCJdLCJBSyIsWzE1LCJxIl0sIkFNIixbMTUsInIiXSwiQVEiLFsxNSwicyJdLCJCQyIsWzE1LCJ0Il0sIkJKIixbMTUsInUiXSwiQksiLFsxNSwidiJdLCJCTSIsWzE1LCJ3Il0sIkJOIixbMTUsIngiXSwiQlQiLFsxNSwieSJdLCJCWCIsWzE1LCJ6Il0sIkJZIixbMTUsImFBIl0sIkJaIixbMTUsImFCIl0sIkNBIixbMTUsImFDIl0sIkNCIixbMTUsImFEIl0sIkNDIixbMTUsImFFIl0sIkNEIixbMTUsImFGIl0sIkNMIixbMTUsImFHIl0sIkNRIixbMTUsImFIIl0sIkNSIixbMTUsImFJIl0sIktHIixbMTUsImRRIl0sIkNTIixbMTUsImFKIl0sIkNVIixbMTUsImFLIl0sIkNXIixbMTUsImFMIl0sIkNZIixbMTUsImFNIl0sIkRDIixbMTUsImFOIl0sIkREIixbMTUsImFPIl0sIkRFIixbMTUsImFQIl0sIkRGIixbMTUsImFRIl0sIkRHIixbMTUsImFSIl0sIkRIIixbMTUsImFTIl0sIkROIixbMTUsImFUIl0sIkVBIixbMTUsImFVIl0sIkVDIixbMTUsImFWIl0sIkVHIixbMTUsImFXIl0sIkVKIixbMTUsImFYIl0sIkVLIixbMTUsImFZIl0sIkVOIixbMTUsImFaIl0sIkVPIixbMTUsImJBIl0sIkVRIixbMTUsImJCIl0sIktJIixbMTUsImRTIl0sIkVVIixbMTUsImJDIl0sIkVXIixbMTUsImJEIl0sIkZFIixbMTUsImJFIl0sIkZPIixbMTUsImJGIl0sIkZQIixbMTUsImJHIl0sIktKIixbMTUsImRUIl0sIkZUIixbMTUsImJIIl0sIkZVIixbMTUsImJJIl0sIkZWIixbMTUsImJKIl0sIkZZIixbMTUsImJLIl0sIkZaIixbMTUsImJMIl0sIkdCIixbMTUsImJNIl0sIkdDIixbMTUsImJOIl0sIkdFIixbMTUsImJPIl0sIkdGIixbMTUsImJQIl0sIkdLIixbMTUsImJRIl0sIkdNIixbMTUsImJSIl0sIkdUIixbMTUsImJTIl0sIkdVIixbMTUsImJUIl0sIkdWIixbMTUsImJVIl0sIkdaIixbMTUsImJWIl0sIkhDIixbMTUsImJXIl0sIktIIixbMTUsImRSIl0sIkhEIixbMTUsImJYIl0sIkhFIixbMTUsImJZIl0sIkhGIixbMTUsImJaIl0sIkhOIixbMTUsImNBIl0sIkhQIixbMTUsImNCIl0sIkhUIixbMTUsImNDIl0sIkhYIixbMTUsImNEIl0sIklBIixbMTUsImNFIl0sIklDIixbMTUsImNGIl0sIklEIixbMTUsImNHIl0sIklGIixbMTUsImNIIl0sIklIIixbMTUsImNJIl0sIklJIixbMTUsImNKIl0sIklLIixbMTUsImNLIl0sIklMIixbMTUsImNMIl0sIktLIixbMTUsImRVIl0sIklQIixbMTUsImNNIl0sIklSIixbMTUsImNOIl0sIklVIixbMTUsImNPIl0sIklWIixbMTUsImNQIl0sIklXIixbMTUsImNRIl0sIklZIixbMTUsImNSIl0sIkpCIixbMTUsImNTIl0sIkpDIixbMTUsImNUIl0sIkpEIixbMTUsImNVIl0sIkpFIixbMTUsImNWIl0sIkpGIixbMTUsImNXIl0sIkpHIixbMTUsImNYIl0sIkpIIixbMTUsImNZIl0sIkpJIixbMTUsImNaIl0sIkpKIixbMTUsImRBIl0sIkpLIixbMTUsImRCIl0sIkpMIixbMTUsImRDIl0sIkpNIixbMTUsImREIl0sIkpOIixbMTUsImRFIl0sIkpPIixbMTUsImRGIl0sIkpQIixbMTUsImRHIl0sIkpSIixbMTUsImRIIl0sIkpTIixbMTUsImRJIl0sIkpVIixbMTUsImRKIl0sIkpWIixbMTUsImRLIl0sIkpYIixbMTUsImRMIl0sIkpZIixbMTUsImRNIl0sIkpaIixbMTUsImROIl0sIktDIixbMTUsImRPIl0sIktEIixbMTUsImRQIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImFib3J0X3dpdGhvdXRfZmFpbCJdLFs1MiwiYyIsImFjY2VwdF9ieV9kZWZhdWx0Il0sWzUyLCJkIiwiYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uIl0sWzUyLCJlIiwiY29uc2VudF9zdGF0ZSJdLFs1MiwiZiIsImNvbnNlbnRfdXBkYXRlZCJdLFs1MiwiZyIsImNvbnZlcnNpb25fbGlua2VyX2VuYWJsZWQiXSxbNTIsImgiLCJjb252ZXJzaW9uX21hcmtpbmdfY2FsbGVkIl0sWzUyLCJpIiwiY29va2llX29wdGlvbnMiXSxbNTIsImoiLCJkZWR1cGVfaWQiXSxbNTIsImsiLCJlbV9ldmVudCJdLFs1MiwibCIsImV2ZW50X3Byb3ZlbmFuY2UiXSxbNTIsIm0iLCJldmVudF9zb3VyY2UiXSxbNTIsIm4iLCJldmVudF9zdGFydF90aW1lc3RhbXBfbXMiXSxbNTIsIm8iLCJldmVudF91c2FnZSJdLFs1MiwicCIsImV4dHJhX3RhZ19leHBlcmltZW50X2lkcyJdLFs1MiwicSIsImZvcm1fZXZlbnRfY2FuY2VsZWQiXSxbNTIsInIiLCJnYTRfY29sbGVjdGlvbl9zdWJkb21haW4iXSxbNTIsInMiLCJndG1fZXh0cmFjdGVkX2RhdGEiXSxbNTIsInQiLCJoYW5kbGVfaW50ZXJuYWxseSJdLFs1MiwidSIsImhhc19nYV9jb252ZXJzaW9uX2NvbnNlbnRzIl0sWzUyLCJ2IiwiaGl0X3R5cGUiXSxbNTIsInciLCJoaXRfdHlwZV9vdmVycmlkZSJdLFs1MiwieCIsImlnbm9yZV9kdXBlX2NvbmZpZyJdLFs1MiwieSIsImlzX2NvbnZlcnNpb24iXSxbNTIsInoiLCJpc19leHRlcm5hbF9ldmVudCJdLFs1MiwiYUEiLCJpc19maXJzdF92aXNpdCJdLFs1MiwiYUIiLCJpc19maXJzdF92aXNpdF9jb252ZXJzaW9uIl0sWzUyLCJhQyIsImlzX2ZwbV9lbmNyeXB0aW9uIl0sWzUyLCJhRCIsImlzX2ZwbV9zcGxpdCJdLFs1MiwiYUUiLCJpc19nY3BfYnJvd3NlciJdLFs1MiwiYUYiLCJpc19nb29nbGVfbWVhc3VyZW1lbnRfYWxsb3dlZCJdLFs1MiwiYUciLCJpc19zZXJ2ZXJfc2lkZV9kZXN0aW5hdGlvbiJdLFs1MiwiYUgiLCJpc19zZXNzaW9uX3N0YXJ0Il0sWzUyLCJhSSIsImlzX3Nlc3Npb25fc3RhcnRfY29udmVyc2lvbiJdLFs1MiwiYUoiLCJpc19zZ3RtX2dhX2Fkc19jb252ZXJzaW9uX3N0dWR5X2NvbnRyb2xfZ3JvdXAiXSxbNTIsImFLIiwiaXNfc2d0bV9wcmVoaXQiXSxbNTIsImFMIiwiaXNfc3BsaXRfY29udmVyc2lvbiJdLFs1MiwiYU0iLCJpc19zeW4iXSxbNTIsImFOIiwiaXNfdGVzdF9ldmVudCJdLFs1MiwiYU8iLCJwcmVoaXRfZm9yX3JldHJ5Il0sWzUyLCJhUCIsInJlZGFjdF9hZHNfZGF0YSJdLFs1MiwiYVEiLCJyZWRhY3RfY2xpY2tfaWRzIl0sWzUyLCJhUiIsInNlbmRfY2NtX3BhcmFsbGVsX3BpbmciXSxbNTIsImFTIiwic2VuZF91c2VyX2RhdGFfaGl0Il0sWzUyLCJhVCIsInNwZWN1bGF0aXZlIl0sWzUyLCJhVSIsInN5bl9vcl9tb2QiXSxbNTIsImFWIiwidHJhbnNpZW50X2Vjc2lkIl0sWzUyLCJhVyIsInVzZXJfZGF0YSJdLFs1MiwiYVgiLCJ1c2VyX2RhdGFfZnJvbV9hdXRvbWF0aWMiXSxbNTIsImFZIiwidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljX2dldHRlciJdLFs1MiwiYVoiLCJ1c2VyX2RhdGFfZnJvbV9jb2RlIl0sWzUyLCJiQSIsInVzZXJfZGF0YV9mcm9tX21hbnVhbCJdLFszNixbOCwiQSIsWzE1LCJiIl0sIkIiLFsxNSwiYyJdLCJGIixbMTUsImQiXSwiTSIsWzE1LCJlIl0sIk4iLFsxNSwiZiJdLCJPIixbMTUsImciXSwiUCIsWzE1LCJoIl0sIlEiLFsxNSwiaSJdLCJTIixbMTUsImoiXSwiVCIsWzE1LCJrIl0sIloiLFsxNSwibCJdLCJBQSIsWzE1LCJtIl0sIkFCIixbMTUsIm4iXSwiQUMiLFsxNSwibyJdLCJBRCIsWzE1LCJwIl0sIkFKIixbMTUsInEiXSwiQUsiLFsxNSwiciJdLCJBTiIsWzE1LCJzIl0sIkFPIixbMTUsInQiXSwiQVAiLFsxNSwidSJdLCJBUSIsWzE1LCJ2Il0sIkFSIixbMTUsInciXSwiQVMiLFsxNSwieCJdLCJBViIsWzE1LCJ5Il0sIkFZIixbMTUsInoiXSwiQVoiLFsxNSwiYUEiXSwiQkEiLFsxNSwiYUIiXSwiQkMiLFsxNSwiYUMiXSwiQkQiLFsxNSwiYUQiXSwiQkUiLFsxNSwiYUUiXSwiQkYiLFsxNSwiYUYiXSwiQksiLFsxNSwiYUciXSwiQkwiLFsxNSwiYUgiXSwiQk0iLFsxNSwiYUkiXSwiQk4iLFsxNSwiYUoiXSwiQk8iLFsxNSwiYUsiXSwiQlEiLFsxNSwiYUwiXSwiQlIiLFsxNSwiYU0iXSwiQlMiLFsxNSwiYU4iXSwiQlkiLFsxNSwiYU8iXSwiQ0IiLFsxNSwiYVAiXSwiQ0MiLFsxNSwiYVEiXSwiQ0UiLFsxNSwiYVIiXSwiQ04iLFsxNSwiYVMiXSwiQ1EiLFsxNSwiYVQiXSwiQ1QiLFsxNSwiYVUiXSwiQ1UiLFsxNSwiYVYiXSwiQ1ciLFsxNSwiYVciXSwiQ1giLFsxNSwiYVgiXSwiQ1kiLFsxNSwiYVkiXSwiQ1oiLFsxNSwiYVoiXSwiREEiLFsxNSwiYkEiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2ZlYXR1cmVGbGFncyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsNDVdLFs1MiwiYyIsNDZdLFs1MiwiZCIsNDddLFs1MiwiZSIsMTc0XSxbNTIsImYiLDI3Nl0sWzM2LFs4LCJGIixbMTUsImIiXSwiRyIsWzE1LCJjIl0sIkgiLFsxNSwiZCJdLCJWIixbMTUsImUiXSwiQUQiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZWNUeXBlcyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImZzcmMiXSxbNTIsImMiLCJmZWlkIl0sWzUyLCJkIiwiMCJdLFs1MiwiZSIsIjEiXSxbNTIsImYiLCIyIl0sWzUyLCJnIiwiMyJdLFs1MiwiaCIsIjQiXSxbMzYsWzgsIkIiLFsxNSwiYyJdLCJGIixbMTUsImciXSwiRCIsWzE1LCJlIl0sIkUiLFsxNSwiZiJdLCJDIixbMTUsImQiXSwiRyIsWzE1LCJoIl0sIkEiLFsxNSwiYiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZmVhdHVyZXMiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLDQyNV0sWzUyLCJjIiw0MzVdLFs1MiwiZCIsNDg4XSxbNTIsImUiLDQ4OV0sWzUyLCJmIiw0OThdLFs1MiwiZyIsNTAzXSxbNTIsImgiLDUwNF0sWzUyLCJpIiw1MDZdLFs1MiwiaiIsNTIzXSxbNTIsImsiLDUzMl0sWzUyLCJsIiw1NTNdLFs1MiwibSIsNTY4XSxbNTIsIm4iLDU3N10sWzUyLCJvIiw1ODFdLFs1MiwicCIsNTgzXSxbNTIsInEiLDU5Ml0sWzUyLCJyIiw1OTRdLFs1MiwicyIsNTk5XSxbMzYsWzgsIkFWIixbMTUsImsiXSwiQUQiLFsxNSwiZCJdLCJDSSIsWzE1LCJxIl0sIkJWIixbMTUsIm4iXSwiQk8iLFsxNSwibSJdLCJDSyIsWzE1LCJyIl0sIkNQIixbMTUsInMiXSwiQU0iLFsxNSwiZyJdLCJCWiIsWzE1LCJvIl0sIkFUIixbMTUsImoiXSwiQUUiLFsxNSwiZSJdLCJBTiIsWzE1LCJoIl0sIkwiLFsxNSwiYyJdLCJCQyIsWzE1LCJsIl0sIkFPIixbMTUsImkiXSwiQ0IiLFsxNSwicCJdLCJBSSIsWzE1LCJmIl0sIkkiLFsxNSwiYiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY3Jvc3NDb250YWluZXJTY2hlbWEiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLCJjb29raWVfZGVwcmVjYXRpb25fbGFiZWwiXSxbNTIsImMiLCJwbGQiXSxbNTIsImQiLCJzaGFyZWRfdXNlcl9pZCJdLFs1MiwiZSIsInNoYXJlZF91c2VyX2lkX3JlcXVlc3RlZCJdLFs1MiwiZiIsInNoYXJlZF91c2VyX2lkX3NvdXJjZSJdLFszNixbOCwiQiIsWzE1LCJiIl0sIk4iLFsxNSwiYyJdLCJTIixbMTUsImQiXSwiVCIsWzE1LCJlIl0sIlUiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfcGxhdGZvcm1TY2hlbWEiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLDFdLFs1MiwiYyIsMl0sWzUyLCJkIiwzXSxbNTIsImUiLDRdLFs1MiwiZiIsNV0sWzUyLCJnIiw2XSxbMzYsWzgsIkEiLFsxNSwiYiJdLCJGIixbMTUsImciXSwiQiIsWzE1LCJjIl0sIkMiLFsxNSwiZCJdLCJEIixbMTUsImUiXSwiRSIsWzE1LCJmIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9nb2xkRXZlbnRVc2FnZUlkIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwxXSxbNTIsImMiLDJdLFs1MiwiZCIsNV0sWzUyLCJlIiw2XSxbNTIsImYiLDddLFs1MiwiZyIsOF0sWzUyLCJoIiw5XSxbNTIsImkiLDExXSxbNTIsImoiLDE1XSxbNTIsImsiLDE2XSxbNTIsImwiLDIwXSxbNTIsIm0iLDIxXSxbNTIsIm4iLDIzXSxbNTIsIm8iLDI0XSxbNTIsInAiLDI3XSxbNTIsInEiLDQwXSxbNTIsInIiLDQxXSxbMzYsWzgsIk8iLFsxNSwiaiJdLCJXIixbMTUsIm4iXSwiUCIsWzE1LCJrIl0sIlgiLFsxNSwibyJdLCJLIixbMTUsImkiXSwiQSIsWzE1LCJiIl0sIlQiLFsxNSwibCJdLCJFIixbMTUsImQiXSwiRiIsWzE1LCJlIl0sIkIiLFsxNSwiYyJdLCJIIixbMTUsImciXSwiQU4iLFsxNSwicSJdLCJJIixbMTUsImgiXSwiRyIsWzE1LCJmIl0sIlUiLFsxNSwibSJdLCJBTyIsWzE1LCJyIl0sIkFBIixbMTUsInAiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwiYWVfYmxvY2tfZG93bmxvYWRzIl0sWzUyLCJjIiwiYWVfYmxvY2tfZm9ybSJdLFs1MiwiZCIsImFlX2Jsb2NrX2hpc3RvcnkiXSxbNTIsImUiLCJhZV9ibG9ja19vdXRib3VuZF9jbGljayJdLFs1MiwiZiIsImFlX2Jsb2NrX3Njcm9sbCJdLFs1MiwiZyIsImFlX2Jsb2NrX3ZpZGVvIl0sWzM2LFs4LCJBIixbMTUsImIiXSwiQiIsWzE1LCJjIl0sIkMiLFsxNSwiZCJdLCJEIixbMTUsImUiXSwiRSIsWzE1LCJmIl0sIkYiLFsxNSwiZyJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1TaXRlU2VhcmNoQWN0aXZpdHkiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsImIiLFs0NiwiZCIsImUiXSxbNTIsImYiLFsyLFszMCxbMTUsImQiXSwiIl0sInNwbGl0IixbNywiLCJdXV0sWzUzLFs0MSwiZyJdLFszLCJnIiwwXSxbNjMsWzcsImciXSxbMjMsWzE1LCJnIl0sWzE3LFsxNSwiZiJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiZyJdLFszLCJnIixbMCxbMTUsImciXSwxXV1dLFs0NixbNTMsWzUyLCJoIixbImUiLFsyLFsxNixbMTUsImYiXSxbMTUsImciXV0sInRyaW0iLFs3XV1dXSxbMjIsWzIxLFsxNSwiaCJdLFs0NF1dLFs0NixbNTMsWzM2LFsxNSwiaCJdXV1dXV1dXV1dLFs1MCwiYyIsWzQ2LCJkIiwiZSIsImYiXSxbNTIsImciLFs4LCJzZWFyY2hfdGVybSIsWzE1LCJkIl1dXSxbNTIsImgiLFsyLFszMCxbMTUsImUiXSwiIl0sInNwbGl0IixbNywiLCJdXV0sWzUzLFs0MSwiaSJdLFszLCJpIiwwXSxbNjMsWzcsImkiXSxbMjMsWzE1LCJpIl0sWzE3LFsxNSwiaCJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiaSJdLFszLCJpIixbMCxbMTUsImkiXSwxXV1dLFs0NixbNTMsWzUyLCJqIixbMixbMTYsWzE1LCJoIl0sWzE1LCJpIl1dLCJ0cmltIixbN11dXSxbNTIsImsiLFsiZiIsWzE1LCJqIl1dXSxbMjIsWzIxLFsxNSwiayJdLFs0NF1dLFs0NixbNTMsWzQzLFsxNSwiZyJdLFswLCJxXyIsWzE1LCJqIl1dLFsxNSwiayJdXV1dXV1dXV0sWzM2LFsxNSwiZyJdXV0sWzM2LFs4LCJCIixbMTUsImMiXSwiQSIsWzE1LCJiIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9hY3Rpdml0aWVzIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJiIixbNDYsImMiLCJkIl0sWzM2LFszOSxbMTUsImQiXSxbImQiLFsxNSwiYyJdXSxbMTUsImMiXV1dXSxbMzYsWzgsIkEiLFsxNSwiYiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfcGxhdGZvcm1EZXRlY3Rpb24iLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsIm8iLFs0Nl0sWzY4LCJ3IixbNTMsWzIyLFsxLFsyOCxbImUiLFsxNyxbMTUsImgiXSwiQUkiXV1dLFsyOCxbImUiLFsxNyxbMTUsImgiXSwiSSJdXV1dLFs0NixbNTMsWzM2LFs3XV1dXV0sWzUyLCJ3IixbImIiLFsxNyxbMTUsImciXSwiTiJdXV0sWzIyLFsibiIsWzE1LCJ3Il1dLFs0NixbNTMsWzM2LFsxNSwidyJdXV1dXSxbNTIsIngiLFs3XV0sWzIyLFsicCJdLFs0NixbMixbMTUsIngiXSwicHVzaCIsWzcsWzE3LFsxNSwiaiJdLCJBIl1dXV1dLFsyMixbInEiXSxbNDYsWzIsWzE1LCJ4Il0sInB1c2giLFs3LFsxNyxbMTUsImoiXSwiQiJdXV1dXSxbMjIsWyJyIl0sWzQ2LFsyLFsxNSwieCJdLCJwdXNoIixbNyxbMTcsWzE1LCJqIl0sIkYiXV1dXV0sWzIyLFsidSJdLFs0NixbMixbMTUsIngiXSwicHVzaCIsWzcsWzE3LFsxNSwiaiJdLCJEIl1dXV1dLFsyMixbInMiXSxbNDYsWzIsWzE1LCJ4Il0sInB1c2giLFs3LFsxNyxbMTUsImoiXSwiRSJdXV1dXSxbMjIsWyJ0Il0sWzQ2LFsyLFsxNSwieCJdLCJwdXNoIixbNyxbMTcsWzE1LCJqIl0sIkMiXV1dXV0sWzIyLFsibCJdLFs0NixbNTMsWyJmIixbMTcsWzE1LCJnIl0sIk4iXSxbMTUsIngiXSx0cnVlXV1dXSxbMzYsWzE1LCJ4Il1dXSxbNDZdXSxbMzYsWzddXV0sWzUwLCJwIixbNDZdLFs2OCwidyIsWzUzLFszNixbMjgsWzI4LFsiYyIsInNjcmlwdFtkYXRhLXJlcXVpcmVtb2R1bGVePVwibWFnZS9cIl0iXV1dXV0sWzQ2XV0sWzM2LGZhbHNlXV0sWzUwLCJxIixbNDZdLFs2OCwidyIsWzUzLFs1MiwidyIsWyJtIiwiWVhOelpYUnpMbk54ZFdGeVpYTndZV05sTG1OdmJTOD0iXV0sWzIyLFsyOCxbMTUsInciXV0sWzQ2LFszNixmYWxzZV1dXSxbMzYsWzI4LFsyOCxbImMiLFswLFswLCJzY3JpcHRbc3JjXj1cIi8vIixbMTUsInciXV0sIlwiXSJdXV1dXV0sWzQ2XV0sWzM2LGZhbHNlXV0sWzUwLCJyIixbNDZdLFsyMixbMjgsWyJlIixbMTcsWzE1LCJoIl0sIkkiXV1dLFs0NixbNTMsWzM2LGZhbHNlXV1dXSxbNjgsInciLFs1MyxbNTIsInciLFsibSIsImMyaHZjR2xtZVM1amIyMD0iXV0sWzUyLCJ4IixbIm0iLCJjMmh2Y0dsbWVXTmtiaTVqYjIwPSJdXSxbMjIsWzMwLFsyOCxbMTUsInciXV0sWzI4LFsxNSwieCJdXV0sWzQ2LFszNixmYWxzZV1dXSxbMzYsWzI4LFsyOCxbImMiLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLCJzY3JpcHRbc3JjKj1cImNkbi4iLFsxNSwidyJdXSwiXCJdLCJdLCJtZXRhW3Byb3BlcnR5PVwib2c6aW1hZ2VcIl1bY29udGVudCo9XCJjZG4uIl0sWzE1LCJ3Il1dLCJcIl0sIl0sImxpbmtbcmVsPVwicHJlY29ubmVjdFwiXVtocmVmKj1cImNkbi4iXSxbMTUsInciXV0sIlwiXSwiXSwibGlua1tyZWw9XCJwcmVjb25uZWN0XCJdW2hyZWYqPVwiZm9udHMuIl0sWzE1LCJ4Il1dLCJcIl0sIl0sImxpbmtbcmVsPVwicHJlY29ubmVjdFwiXVtocmVmKj1cIml0ZXJhYmxlLXNob3BpZnlcIl0sIl0sImxpbmtbcmVsPVwicHJlY29ubmVjdFwiXVtocmVmKj1cInYuIl0sWzE1LCJ3Il1dLCJcIl0iXV1dXV1dLFs0Nl1dLFszNixmYWxzZV1dLFs1MCwicyIsWzQ2XSxbNjgsInciLFs1MyxbNTIsInciLFsiZCIsInByb3RvY29sIl1dLFs1MiwieCIsWyJkIiwiaG9zdCJdXSxbNTIsInkiLFszOSxbMSxbMTUsInciXSxbMTUsIngiXV0sWzAsWzAsWzAsWzAsIltzcmNePVwiIixbMTUsInciXV0sIjovLyJdLFsxNSwieCJdXSwiL3dwLWNvbnRlbnRcIl0sIl0sIiJdXSxbNTIsInoiLFsibSIsIkxuZHZjbVJ3Y21WemN5NWpiMjA9Il1dLFs1MiwiYUEiLFsibSIsIkx5OXpMbmN1YjNKbiJdXSxbMjIsWzMwLFsyOCxbMTUsInoiXV0sWzI4LFsxNSwiYUEiXV1dLFs0NixbMzYsZmFsc2VdXV0sWzM2LFszMCxbInYiLFsxNSwieCJdLFsxNSwieiJdXSxbMjgsWzI4LFsiYyIsWzAsWzAsWzAsWzAsWzE1LCJ5Il0sIm1ldGFbbmFtZT1cImdlbmVyYXRvclwiXVtjb250ZW50Xj1cIldvcmRQcmVzcyBcIl0sIl0sImxpbmtbcmVsPVwiZG5zLXByZWZldGNoXCJdW2hyZWY9XCIiXSxbMTUsImFBIl1dLCJcIl0iXV1dXV1dXSxbNDZdXSxbMzYsZmFsc2VdXSxbNTAsInQiLFs0Nl0sWzY4LCJ3IixbNTMsWzUyLCJ3IixbMjgsWzI4LFsiYyIsWzAsIltjbGFzcyo9XCJ3b29jb21tZXJjZVwiXSwiLCJtZXRhW25hbWU9XCJnZW5lcmF0b3JcIl1bY29udGVudF49XCJXb29Db21tZXJjZSBcIl0iXV1dXV0sWzIyLFsxNSwidyJdLFs0NixbNTNdXV0sWzM2LFsxNSwidyJdXV0sWzQ2XV0sWzM2LGZhbHNlXV0sWzUwLCJ1IixbNDZdLFs2OCwidyIsWzUzLFs1MiwidyIsWzI4LFsyOCxbImMiLFswLFswLCJzY3JpcHRbc3JjKj1cIndvb2NvbW1lcmNlXCJdLCIsImxpbmtbaHJlZio9XCJ3b29jb21tZXJjZVwiXSwiXSwiW2NsYXNzfD1cIndvb2NvbW1lcmNlXCJdIl1dXV1dLFsyMixbMTUsInciXSxbNDYsWzUzXV1dLFszNixbMTUsInciXV1dLFs0Nl1dLFszNixmYWxzZV1dLFs1MCwidiIsWzQ2LCJ3IiwieCJdLFszNixbMSxbMTksWzE3LFsxNSwidyJdLCJsZW5ndGgiXSxbMTcsWzE1LCJ4Il0sImxlbmd0aCJdXSxbMjAsWzIsWzE1LCJ3Il0sInN1YnN0cmluZyIsWzcsWzM3LFsxNyxbMTUsInciXSwibGVuZ3RoIl0sWzE3LFsxNSwieCJdLCJsZW5ndGgiXV0sWzE3LFsxNSwidyJdLCJsZW5ndGgiXV1dLFsxNSwieCJdXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNvcHlGcm9tQ3Jvc3NDb250YWluZXJEYXRhIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0Rmlyc3RFbGVtZW50QnlDc3NTZWxlY3RvciJdXSxbNTIsImQiLFsicmVxdWlyZSIsImdldFVybCJdXSxbNTIsImUiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZXRJbkNyb3NzQ29udGFpbmVyRGF0YSJdXSxbNTIsImciLFsxNSwiX19tb2R1bGVfY3Jvc3NDb250YWluZXJTY2hlbWEiXV0sWzUyLCJoIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiaSIsWzE1LCJfX21vZHVsZV9mZWF0dXJlRmxhZ3MiXV0sWzUyLCJqIixbMTUsIl9fbW9kdWxlX3BsYXRmb3JtU2NoZW1hIl1dLFs1MiwiayIsWyJyZXF1aXJlIiwiZ2V0VHlwZSJdXSxbNTIsImwiLFsicmVxdWlyZSIsImludGVybmFsLmlzRG9tUmVhZHkiXV0sWzUyLCJtIixbInJlcXVpcmUiLCJmcm9tQmFzZTY0Il1dLFs1MiwibiIsWzUxLCIiLFs3LCJ3Il0sWzM2LFsyMCxbImsiLFsxNSwidyJdXSwiYXJyYXkiXV1dXSxbMzYsWzgsIkEiLFsxNSwibyJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1Eb3dubG9hZEFjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfaWQiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfdXJsIixbNDRdXV0sWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJsaW5rX3RleHQiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImZpbGVfbmFtZSIsWzQ0XV1dLFsyLFsxNSwiayJdLCJzZXRIaXREYXRhIixbNywiZmlsZV9leHRlbnNpb24iLFs0NF1dXV1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImYiLFsxNyxbMTUsImUiXSwiQSJdXSxbNTIsImciLCJmaWxlX2Rvd25sb2FkIl0sWzM2LFs4LCJBIixbMTUsImgiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsImUiLFs0NiwiZyJdLFs1MiwiaCIsWyJiIl1dLFs1MiwiaSIsWzddXSxbNTMsWzQxLCJqIl0sWzMsImoiLDBdLFs2MyxbNywiaiJdLFsyMyxbMTUsImoiXSxbMTcsWzE1LCJoIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJqIl0sWzMsImoiLFswLFsxNSwiaiJdLDFdXV0sWzQ2LFs1MyxbNTIsImsiLFsxNixbMTUsImgiXSxbMTUsImoiXV1dLFsyMixbImQiLFsxNSwiZyJdLFsxNSwiayJdXSxbNDYsWzUzLFsyLFsxNSwiaSJdLCJwdXNoIixbNyxbMTUsImsiXV1dXV1dXV1dXSxbMzYsWzE1LCJpIl1dXSxbNTAsImYiLFs0NiwiZyIsImgiXSxbNTIsImkiLFszMCxbMTUsImgiXSxbOF1dXSxbNDMsWzE1LCJpIl0sWzE3LFsxNSwiYyJdLCJUIl0sdHJ1ZV0sWzQzLFsxNSwiaSJdLFsxNyxbMTUsImMiXSwiQ1EiXSx0cnVlXSxbNDMsWzE1LCJpIl0sWzE3LFsxNSwiYyJdLCJaIl0sImEiXSxbNDMsWzE1LCJnIl0sImV2ZW50TWV0YWRhdGEiLFsxNSwiaSJdXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyJdXSxbNTIsImMiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJpbnRlcm5hbC5jbGFpbURlc3RpbmF0aW9uIl1dLFszNixbOCwiQSIsWzE1LCJlIl0sIkIiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1Gb3JtQWN0aXZpdHkiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsIm4iLFs0NiwibyIsInAiLCJxIl0sWzUyLCJyIixbMjAsWzIsWzE1LCJvIl0sImluZGV4T2YiLFs3LCJBVy0iXV0sMF1dLFsyMixbMjAsWzE1LCJwIl0sWzQ0XV0sWzQ2LFs1MyxbMywicCIsWzE1LCJyIl1dXV1dLFsiYyIsWzE1LCJvIl0sWzUxLCIiLFs3LCJzIl0sWzUyLCJ0IixbMixbMTUsInMiXSwiZ2V0RXZlbnROYW1lIixbN11dXSxbNTIsInUiLFszMCxbMjAsWzE1LCJ0Il0sWzE1LCJsIl1dLFsyMCxbMTUsInQiXSxbMTUsImsiXV1dXSxbMjIsWzMwLFsyOCxbMTUsInUiXV0sWzI4LFsyLFsxNSwicyJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJUIl1dXV1dLFs0NixbNTMsWzM2XV1dXSxbMjIsWyJiIixbMTUsIm8iXSxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsInMiXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMjIsWzEsWzI4LFsxNSwicCJdXSxbMixbMTUsInMiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQUoiXV1dXSxbNDYsWzUzLFsyLFsxNSwicyJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFs1MiwidiIsWzIsWzE1LCJzIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIkFBIl1dXV0sWzIyLFsxLFsyOCxbMTUsInIiXV0sWzIwLFsxNSwidiJdLFsxNSwibSJdXV0sWzQ2LFs1MyxbMixbMTUsInMiXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMjIsWzI4LFsiaCIsWzE3LFsxNSwiaSJdLCJCWiJdXV0sWzQ2LFs1MyxbMjIsWzIwLFsxNSwidiJdLFsxNSwibSJdXSxbNDYsWzUzLFsyLFsxNSwicyJdLCJhYm9ydCIsWzddXSxbMzZdXV0sWzQ2LFsyMixbMjAsWzE1LCJ2Il0sWzE1LCJrIl1dLFs0NixbNTMsWzIsWzE1LCJzIl0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlMiXSxbNDRdXV1dXV1dXV1dXSxbMixbMTUsInMiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQ1EiXSxmYWxzZV1dLFsyMixbMSxbMTUsInYiXSxbMTUsInIiXV0sWzQ2LFs1MyxbNDEsInciXSxbMywidyIsWzE3LFsxNSwiZyJdLCJDIl1dLFs0MSwieCJdLFsyMixbMjAsWzE1LCJ2Il0sWzE1LCJsIl1dLFs0NixbNTMsWzMsInciLFsxNyxbMTUsImciXSwiRCJdXV1dLFs0NixbMjIsWzIwLFsxNSwidiJdLFsxNSwiayJdXSxbNDYsWzUzLFszLCJ3IixbMTcsWzE1LCJnIl0sIkUiXV0sWzMsIngiLFsyLFsxNSwicyJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJTIl1dXV1dXSxbNDYsWzIyLFsyMCxbMTUsInYiXSxbMTUsIm0iXV0sWzQ2LFs1MyxbMywidyIsWzE3LFsxNSwiZyJdLCJGIl1dLFszLCJ4IixbMixbMTUsInMiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiUyJdXV1dXV1dXV1dXSxbNTIsInkiLFs4XV0sWzQzLFsxNSwieSJdLFsxNyxbMTUsImciXSwiQSJdLFsxNSwidyJdXSxbMjIsWzE1LCJ4Il0sWzQ2LFs1MyxbNDMsWzE1LCJ5Il0sWzE3LFsxNSwiZyJdLCJCIl0sWzE1LCJ4Il1dXV1dLFsyLFsxNSwicyJdLCJtZXJnZUhpdERhdGFGb3JLZXkiLFs3LFsxNyxbMTUsImYiXSwiRlQiXSxbMTUsInkiXV1dXV1dLFsyMixbMjgsWzE1LCJxIl1dLFs0NixbNTMsWzIsWzE1LCJzIl0sInNldEhpdERhdGEiLFs3LCJmb3JtX2lkIixbNDRdXV0sWzIsWzE1LCJzIl0sInNldEhpdERhdGEiLFs3LCJmb3JtX25hbWUiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZvcm1fZGVzdGluYXRpb24iLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZvcm1fbGVuZ3RoIixbNDRdXV0sWzIyLFsyMCxbMTUsInQiXSxbMTUsImsiXV0sWzQ2LFs1MyxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZvcm1fc3VibWl0X3RleHQiLFs0NF1dXV1dLFs0NixbMjIsWzIwLFsxNSwidCJdLFsxNSwibCJdXSxbNDYsWzUzLFsyLFsxNSwicyJdLCJzZXRIaXREYXRhIixbNywiZmlyc3RfZmllbGRfaWQiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZpcnN0X2ZpZWxkX25hbWUiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZpcnN0X2ZpZWxkX3R5cGUiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZpcnN0X2ZpZWxkX3Bvc2l0aW9uIixbNDRdXV1dXV1dXV1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImYiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsImciLFsxNSwiX19tb2R1bGVfZWNUeXBlcyJdXSxbNTIsImgiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJpIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiaiIsWzE3LFsxNSwiZSJdLCJCIl1dLFs1MiwiayIsImZvcm1fc3VibWl0Il0sWzUyLCJsIiwiZm9ybV9zdGFydCJdLFs1MiwibSIsImNsaWNrIl0sWzM2LFs4LCJBIixbMTUsIm4iXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEVtT3V0Ym91bmRDbGlja0FjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfaWQiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfY2xhc3NlcyIsWzQ0XV1dLFsyLFsxNSwiayJdLCJzZXRIaXREYXRhIixbNywibGlua191cmwiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfZG9tYWluIixbNDRdXV0sWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJvdXRib3VuZCIsWzQ0XV1dXV1dXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZiIsWzE3LFsxNSwiZSJdLCJEIl1dLFs1MiwiZyIsImNsaWNrIl0sWzM2LFs4LCJBIixbMTUsImgiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEVtUGFnZVZpZXdBY3Rpdml0eSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiaiIsWzQ2LCJrIl0sWyJjIixbMTUsImsiXSxbNTEsIiIsWzcsImwiXSxbMjIsWzMwLFsyMSxbMixbMTUsImwiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiaSJdXSxbMjgsWzIsWzE1LCJsIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJlIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiayJdLFsxNSwiaCJdXSxbNDYsWzUzLFsyLFsxNSwibCJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyMixbMjgsWzIsWzE1LCJsIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJlIl0sIkJPIl1dXV0sWzQ2LFs1MyxbImQiLFsxNSwiayJdLFsxNyxbMTUsImYiXSwiSEUiXSxbMixbMTUsImwiXSwiZ2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiZiJdLCJIRSJdXV1dXV1dLFsyLFsxNSwibCJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZSJdLCJDUSJdLGZhbHNlXV1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImYiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsImciLFsxNSwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiXV0sWzUyLCJoIixbMTcsWzE1LCJnIl0sIkMiXV0sWzUyLCJpIixbMTcsWzE1LCJmIl0sIkFLIl1dLFszNixbOCwiQSIsWzE1LCJqIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9jY2RFbVNjcm9sbEFjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsInBlcmNlbnRfc2Nyb2xsZWQiLFs0NF1dXV1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImYiLFsxNyxbMTUsImUiXSwiRSJdXSxbNTIsImciLCJzY3JvbGwiXSxbMzYsWzgsIkEiLFsxNSwiaCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1WaWRlb0FjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJqIixbNDYsImsiLCJsIl0sWyJjIixbMTUsImsiXSxbNTEsIiIsWzcsIm0iXSxbNTIsIm4iLFsyLFsxNSwibSJdLCJnZXRFdmVudE5hbWUiLFs3XV1dLFs1MiwibyIsWzMwLFszMCxbMjAsWzE1LCJuIl0sWzE1LCJnIl1dLFsyMCxbMTUsIm4iXSxbMTUsImgiXV1dLFsyMCxbMTUsIm4iXSxbMTUsImkiXV1dXSxbMjIsWzMwLFsyOCxbMTUsIm8iXV0sWzI4LFsyLFsxNSwibSJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJUIl1dXV1dLFs0NixbNTMsWzM2XV1dXSxbMjIsWyJiIixbMTUsImsiXSxbMTUsImYiXV0sWzQ2LFs1MyxbMixbMTUsIm0iXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMixbMTUsIm0iXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQ1EiXSxmYWxzZV1dLFsyMixbMjgsWzE1LCJsIl1dLFs0NixbNTMsWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19jdXJyZW50X3RpbWUiLFs0NF1dXSxbMixbMTUsIm0iXSwic2V0SGl0RGF0YSIsWzcsInZpZGVvX2R1cmF0aW9uIixbNDRdXV0sWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19wZXJjZW50IixbNDRdXV0sWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19wcm92aWRlciIsWzQ0XV1dLFsyLFsxNSwibSJdLCJzZXRIaXREYXRhIixbNywidmlkZW9fdGl0bGUiLFs0NF1dXSxbMixbMTUsIm0iXSwic2V0SGl0RGF0YSIsWzcsInZpZGVvX3VybCIsWzQ0XV1dLFsyLFsxNSwibSJdLCJzZXRIaXREYXRhIixbNywidmlzaWJsZSIsWzQ0XV1dXV1dXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZiIsWzE3LFsxNSwiZSJdLCJGIl1dLFs1MiwiZyIsInZpZGVvX3N0YXJ0Il0sWzUyLCJoIiwidmlkZW9fcHJvZ3Jlc3MiXSxbNTIsImkiLCJ2aWRlb19jb21wbGV0ZSJdLFszNixbOCwiQSIsWzE1LCJqIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV90YXNrU2V0VGVzdEhpdFBhcmFtcyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiZiIsWzQ2LCJnIl0sWzIyLFsyLFsxNSwiZyJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZSJdLCJCUyJdXV0sWzQ2LFs1MyxbMixbMTUsImciXSwic2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJJUCJdLCIxIl1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJjIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbMzYsWzgsIkEiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZXZlbnRFZGl0aW5nQW5kU3ludGhlc2lzIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJhQSIsWzQ2LCJhTiIsImFPIl0sWzUyLCJhUCIsWzMwLFsxNixbMTUsImFPIl0sWzE1LCJtIl1dLFs3XV1dLFs2NiwiYVEiLFsxNSwiYVAiXSxbNDYsWzUzLFsyMixbMTYsWzE1LCJhUSJdLFsxNSwibiJdXSxbNDYsWzUzLFs1MiwiYVIiLFsxNixbMTYsWzE1LCJhUSJdLFsxNSwibiJdXSxbMTUsInAiXV1dLFs1MiwiYVMiLFsiYUYiLFsxNSwiYU4iXSxbMTYsWzE2LFsxNSwiYVEiXSxbMTUsIm4iXV0sWzE1LCJxIl1dXV0sWzIsWzE1LCJhTiJdLCJzZXRIaXREYXRhIixbNyxbMTUsImFSIl0sWyJhQiIsWzE1LCJhUyJdXV1dXV0sWzQ2LFsyMixbMTYsWzE1LCJhUSJdLFsxNSwibyJdXSxbNDYsWzUzLFs1MiwiYVIiLFsxNixbMTYsWzE1LCJhUSJdLFsxNSwibyJdXSxbMTUsInAiXV1dLFsyLFsxNSwiYU4iXSwic2V0SGl0RGF0YSIsWzcsWzE1LCJhUiJdLFs0NF1dXV1dXV1dXV1dXSxbNTAsImFCIixbNDYsImFOIl0sWzIyLFsyOCxbMTUsImFOIl1dLFs0NixbMzYsWzE1LCJhTiJdXV1dLFs1MiwiYU8iLFsiYiIsWzE1LCJhTiJdXV0sWzUyLCJhUCIsWzIxLFsxNSwiYU8iXSxbMTUsImFPIl1dXSxbMjIsWzE1LCJhUCJdLFs0NixbMzYsWzE1LCJhTiJdXV1dLFszNixbMTUsImFPIl1dXSxbNTAsImFDIixbNDYsImFOIiwiYU8iLCJhUCJdLFs0MSwiYVEiXSxbMywiYVEiLFszMCxbMTUsImFPIl0sWzddXV0sWzMsImFRIixbMzksWyJsIixbMTUsImFRIl1dLFsxNSwiYVEiXSxbNyxbMTUsImFRIl1dXV0sWzIyLFsyOCxbImFEIixbMTUsImFOIl0sWzE1LCJhUSJdXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dLFsyMixbMzAsWzI4LFsxNSwiYVAiXV0sWzIwLFsxNyxbMTUsImFQIl0sImxlbmd0aCJdLDBdXSxbNDYsWzM2LHRydWVdXV0sWzUzLFs0MSwiYVIiXSxbMywiYVIiLDBdLFs2MyxbNywiYVIiXSxbMjMsWzE1LCJhUiJdLFsxNyxbMTUsImFQIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJhUiJdLFszLCJhUiIsWzAsWzE1LCJhUiJdLDFdXV0sWzQ2LFs1MyxbNTIsImFTIixbMzAsWzE2LFsxNixbMTUsImFQIl0sWzE1LCJhUiJdXSxbMTUsInUiXV0sWzddXV0sWzIyLFsiYUQiLFsxNSwiYU4iXSxbMTUsImFTIl0sdHJ1ZV0sWzQ2LFs1MyxbMzYsdHJ1ZV1dXV1dXV1dLFszNixmYWxzZV1dLFs1MCwiYUQiLFs0NiwiYU4iLCJhTyIsImFQIl0sWzUzLFs0MSwiYVEiXSxbMywiYVEiLDBdLFs2MyxbNywiYVEiXSxbMjMsWzE1LCJhUSJdLFsxNyxbMTUsImFPIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJhUSJdLFszLCJhUSIsWzAsWzE1LCJhUSJdLDFdXV0sWzQ2LFs1MyxbNTIsImFSIixbMTYsWzE1LCJhTyJdLFsxNSwiYVEiXV1dLFs1MiwiYVMiLFsiYUUiLFsxNSwiYU4iXSxbMTUsImFSIl0sZmFsc2VdXSxbMjIsWzE1LCJhUCJdLFs0NixbNTMsWzUyLCJhVCIsWzE2LFszMCxbMTYsWzE1LCJhUiJdLFsxNSwieCJdXSxbN11dLDBdXSxbMjIsWzEsWzEsWzE1LCJhVCJdLFsyMCxbMTYsWzE1LCJhVCJdLFsxNSwieSJdXSxbMTUsInQiXV1dLFsyMSxbMixbMTUsInoiXSwiaW5kZXhPZiIsWzcsWzE2LFsxNixbMTUsImFUIl0sWzE1LCJ0Il1dLFsxNSwicyJdXV1dLFsyNywxXV1dLFs0NixbNTMsWzUyLCJhVSIsWyJhRSIsWzE1LCJhTiJdLFsxNSwiYVIiXSx0cnVlXV0sWzIyLFsyMSxbMTUsImFTIl0sWzE1LCJhVSJdXSxbNDYsWzUzLFs1MiwiYVYiLFszMCxbMixbMTUsImFOIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJpIl0sIkFDIl1dXSxbN11dXSxbMixbMTUsImFWIl0sInB1c2giLFs3LFszOSxbMTUsImFTIl0sWzE3LFsxNSwiayJdLCJVIl0sWzE3LFsxNSwiayJdLCJUIl1dXV0sWzIsWzE1LCJhTiJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiaSJdLCJBQyJdLFsxNSwiYVYiXV1dXV1dXV1dXV1dLFsyMixbMjgsWzE1LCJhUyJdXSxbNDYsWzUzLFszNixmYWxzZV1dXV1dXV1dLFszNix0cnVlXV0sWzUwLCJhRSIsWzQ2LCJhTiIsImFPIiwiYVAiXSxbNTIsImFRIixbMzAsWzE2LFsxNSwiYU8iXSxbMTUsIngiXV0sWzddXV0sWzQxLCJhUiJdLFszLCJhUiIsWyJhRiIsWzE1LCJhTiJdLFsxNixbMTUsImFRIl0sMF1dXSxbNDEsImFTIl0sWzMsImFTIixbImFGIixbMTUsImFOIl0sWzE2LFsxNSwiYVEiXSwxXV1dLFsyMixbMSxbMTUsImFQIl0sWzE1LCJhUiJdXSxbNDYsWzUzLFszLCJhUiIsWzMwLFsiZyIsWzE1LCJhUiJdXSxbMTUsImFSIl1dXV1dXSxbMjIsWzE1LCJhUyJdLFs0NixbNTMsWzUyLCJhWSIsWzE2LFszMCxbMTYsWzE1LCJhTyJdLFsxNSwieCJdXSxbN11dLDBdXSxbMjIsWzEsWzEsWzE1LCJhWSJdLFsyMCxbMTYsWzE1LCJhWSJdLFsxNSwieSJdXSxbMTUsInQiXV1dLFsyMSxbMixbMTUsInoiXSwiaW5kZXhPZiIsWzcsWzE2LFsxNixbMTUsImFZIl0sWzE1LCJ0Il1dLFsxNSwicyJdXV1dLFsyNywxXV1dLFs0NixbNTMsWzUyLCJhWiIsWzIsWzE1LCJhUyJdLCJpbmRleE9mIixbNywiPyJdXV0sWzIyLFsyMCxbMTUsImFaIl0sWzI3LDFdXSxbNDYsWzUzLFszLCJhUyIsWzMwLFsiZyIsWzE1LCJhUyJdXSxbMTUsImFTIl1dXV1dLFs0NixbNTMsWzUyLCJiQSIsWzIsWzE1LCJhUyJdLCJzdWJzdHJpbmciLFs3LDAsWzE1LCJhWiJdXV1dLFszLCJhUyIsWzAsWzMwLFsiZyIsWzE1LCJiQSJdXSxbMTUsImJBIl1dLFsyLFsxNSwiYVMiXSwic3Vic3RyaW5nIixbNyxbMTUsImFaIl1dXV1dXV1dXV1dXV1dLFs1MiwiYVQiLFsxNixbMTUsImFPIl0sWzE1LCJ3Il1dXSxbMjIsWzMwLFszMCxbMzAsWzIwLFsxNSwiYVQiXSwiZXFpIl0sWzIwLFsxNSwiYVQiXSwic3dpIl1dLFsyMCxbMTUsImFUIl0sImV3aSJdXSxbMjAsWzE1LCJhVCJdLCJjbmkiXV0sWzQ2LFs1MyxbMjIsWzE1LCJhUiJdLFs0NixbMywiYVIiLFsyLFsiZCIsWzE1LCJhUiJdXSwidG9Mb3dlckNhc2UiLFs3XV1dXV0sWzIyLFsxNSwiYVMiXSxbNDYsWzMsImFTIixbMixbImQiLFsxNSwiYVMiXV0sInRvTG93ZXJDYXNlIixbN11dXV1dXV1dLFs0MSwiYVUiXSxbMywiYVUiLGZhbHNlXSxbMzgsWzE1LCJhVCJdLFs0NiwiZXEiLCJlcWkiLCJzdyIsInN3aSIsImV3IiwiZXdpIiwiY24iLCJjbmkiLCJsdCIsImxlIiwiZ3QiLCJnZSIsInJlIiwicmVpIl0sWzQ2LFs1LFs0Nl1dLFs1LFs0NixbMywiYVUiLFsyMCxbImQiLFsxNSwiYVIiXV0sWyJkIixbMTUsImFTIl1dXV0sWzRdXV0sWzUsWzQ2XV0sWzUsWzQ2LFszLCJhVSIsWzIwLFsyLFsiZCIsWzE1LCJhUiJdXSwiaW5kZXhPZiIsWzcsWyJkIixbMTUsImFTIl1dXV0sMF1dLFs0XV1dLFs1LFs0Nl1dLFs1LFs0NixbNDEsImFWIl0sWzMsImFWIixbImQiLFsxNSwiYVIiXV1dLFs0MSwiYVciXSxbMywiYVciLFsiZCIsWzE1LCJhUyJdXV0sWzUyLCJhWCIsWzM3LFsxNyxbMTUsImFWIl0sImxlbmd0aCJdLFsxNyxbMTUsImFXIl0sImxlbmd0aCJdXV0sWzMsImFVIixbMSxbMTksWzE1LCJhWCJdLDBdLFsyMCxbMixbMTUsImFWIl0sImluZGV4T2YiLFs3LFsxNSwiYVciXSxbMTUsImFYIl1dXSxbMTUsImFYIl1dXV0sWzRdXV0sWzUsWzQ2XV0sWzUsWzQ2LFszLCJhVSIsWzE5LFsyLFsiZCIsWzE1LCJhUiJdXSwiaW5kZXhPZiIsWzcsWyJkIixbMTUsImFTIl1dXV0sMF1dLFs0XV1dLFs1LFs0NixbMywiYVUiLFsyMyxbImIiLFsxNSwiYVIiXV0sWyJiIixbMTUsImFTIl1dXV0sWzRdXV0sWzUsWzQ2LFszLCJhVSIsWzI0LFsiYiIsWzE1LCJhUiJdXSxbImIiLFsxNSwiYVMiXV1dXSxbNF1dXSxbNSxbNDYsWzMsImFVIixbMTgsWyJiIixbMTUsImFSIl1dLFsiYiIsWzE1LCJhUyJdXV1dLFs0XV1dLFs1LFs0NixbMywiYVUiLFsxOSxbImIiLFsxNSwiYVIiXV0sWyJiIixbMTUsImFTIl1dXV0sWzRdXV0sWzUsWzQ2LFsyMixbMjEsWzE1LCJhUiJdLFs0NF1dLFs0NixbNTMsWzUyLCJhWSIsWyJlIixbMTUsImFTIl1dXSxbMjIsWzE1LCJhWSJdLFs0NixbMywiYVUiLFsiZiIsWzE1LCJhWSJdLFsxNSwiYVIiXV1dXV1dXV0sWzRdXV0sWzUsWzQ2LFsyMixbMjEsWzE1LCJhUiJdLFs0NF1dLFs0NixbNTMsWzUyLCJhWSIsWyJlIixbMTUsImFTIl0sImkiXV0sWzIyLFsxNSwiYVkiXSxbNDYsWzMsImFVIixbImYiLFsxNSwiYVkiXSxbMTUsImFSIl1dXV1dXV1dLFs0XV1dLFs5LFs0Nl1dXV0sWzIyLFsyOCxbMjgsWzE2LFsxNSwiYU8iXSxbMTUsInYiXV1dXSxbNDYsWzM2LFsyOCxbMTUsImFVIl1dXV1dLFszNixbMTUsImFVIl1dXSxbNTAsImFGIixbNDYsImFOIiwiYU8iXSxbMjIsWzI4LFsxNSwiYU8iXV0sWzQ2LFszNixbNDRdXV1dLFszOCxbMTYsWzE1LCJhTyJdLFsxNSwieSJdXSxbNDYsImV2ZW50X25hbWUiLCJjb25zdCIsImV2ZW50X3BhcmFtIl0sWzQ2LFs1LFs0NixbMzYsWzIsWzE1LCJhTiJdLCJnZXRFdmVudE5hbWUiLFs3XV1dXV0sWzUsWzQ2LFszNixbMTYsWzE1LCJhTyJdLFsxNSwiciJdXV1dXSxbNSxbNDYsWzUyLCJhUCIsWzE2LFsxNixbMTUsImFPIl0sWzE1LCJ0Il1dLFsxNSwicyJdXV0sWzIyLFsyMCxbMTUsImFQIl0sWzE3LFsxNSwiaiJdLCJIRCJdXSxbNDYsWzUzLFszNixbImFJIixbMTUsImFOIl1dXV1dXSxbMjIsWzIwLFsxNSwiYVAiXSxbMTcsWzE1LCJqIl0sIkhDIl1dLFs0NixbNTMsWzM2LFsiYUoiLFsxNSwiYU4iXV1dXV1dLFszNixbMixbMTUsImFOIl0sImdldEhpdERhdGEiLFs3LFsxNSwiYVAiXV1dXV1dLFs5LFs0NixbMzYsWzQ0XV1dXV1dXSxbNTAsImFIIixbNDYsImFOIl0sWzIyLFsyOCxbMTUsImFOIl1dLFs0NixbNTMsWzM2LFsxNSwiYU4iXV1dXV0sWzUyLCJhTyIsWzIsWzE1LCJhTiJdLCJzcGxpdCIsWzcsIiYiXV1dLFs1MiwiYVAiLFs3XV0sWzQzLFsxNSwiYU8iXSwwLFsyLFsxNixbMTUsImFPIl0sMF0sInN1YnN0cmluZyIsWzcsMV1dXSxbNTMsWzQxLCJhUSJdLFszLCJhUSIsMF0sWzYzLFs3LCJhUSJdLFsyMyxbMTUsImFRIl0sWzE3LFsxNSwiYU8iXSwibGVuZ3RoIl1dLFszMyxbMTUsImFRIl0sWzMsImFRIixbMCxbMTUsImFRIl0sMV1dXSxbNDYsWzUzLFs1MiwiYVIiLFsxNixbMTUsImFPIl0sWzE1LCJhUSJdXV0sWzUyLCJhUyIsWzIsWzE1LCJhUiJdLCJpbmRleE9mIixbNywiPSJdXV0sWzUyLCJhVCIsWzM5LFsxOSxbMTUsImFTIl0sMF0sWzIsWzE1LCJhUiJdLCJzdWJzdHJpbmciLFs3LDAsWzE1LCJhUyJdXV0sWzE1LCJhUiJdXV0sWzIyLFsyOCxbMTYsWzE1LCJhRyJdLFsxNSwiYVQiXV1dLFs0NixbNTMsWzIsWzE1LCJhUCJdLCJwdXNoIixbNyxbMTYsWzE1LCJhTyJdLFsxNSwiYVEiXV1dXV1dXV1dXV0sWzIyLFsxNyxbMTUsImFQIl0sImxlbmd0aCJdLFs0NixbNTMsWzM2LFswLCI/IixbMixbMTUsImFQIl0sImpvaW4iLFs3LCImIl1dXV1dXV0sWzM2LCIiXV0sWzUwLCJhSSIsWzQ2LCJhTiJdLFs1MiwiYU8iLFsyLFsxNSwiYU4iXSwiZ2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiaiJdLCJIRCJdXV1dLFsyMixbMTUsImFPIl0sWzQ2LFszNixbMTUsImFPIl1dXV0sWzUyLCJhUCIsWzIsWzE1LCJhTiJdLCJnZXRIaXREYXRhIixbNyxbMTcsWzE1LCJqIl0sIktIIl1dXV0sWzIyLFsyMSxbNDAsWzE1LCJhUCJdXSwic3RyaW5nIl0sWzQ2LFszNixbNDRdXV1dLFs1MiwiYVEiLFsiYyIsWzE1LCJhUCJdXV0sWzIyLFsyOCxbMTUsImFRIl1dLFs0NixbMzYsWzQ0XV1dXSxbNDEsImFSIl0sWzMsImFSIixbMTcsWzE1LCJhUSJdLCJwYXRobmFtZSJdXSxbMywiYVIiLFszMCxbImciLFsxNSwiYVIiXV0sWzE1LCJhUiJdXV0sWzM2LFswLFsxNSwiYVIiXSxbImFIIixbMTcsWzE1LCJhUSJdLCJzZWFyY2giXV1dXV0sWzUwLCJhSiIsWzQ2LCJhTiJdLFs1MiwiYU8iLFsyLFsxNSwiYU4iXSwiZ2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiaiJdLCJIQyJdXV1dLFsyMixbMTUsImFPIl0sWzQ2LFszNixbMTUsImFPIl1dXV0sWzUyLCJhUCIsWzIsWzE1LCJhTiJdLCJnZXRIaXREYXRhIixbNyxbMTcsWzE1LCJqIl0sIktIIl1dXV0sWzIyLFsyMSxbNDAsWzE1LCJhUCJdXSwic3RyaW5nIl0sWzQ2LFszNixbNDRdXV1dLFs1MiwiYVEiLFsiYyIsWzE1LCJhUCJdXV0sWzIyLFsyOCxbMTUsImFRIl1dLFs0NixbMzYsWzQ0XV1dXSxbMzYsWzE3LFsxNSwiYVEiXSwiaG9zdG5hbWUiXV1dLFs1MCwiYU0iLFs0NiwiYU4iXSxbMjIsWzI4LFsxNSwiYU4iXV0sWzQ2LFszNix0cnVlXV1dLFszLCJhTiIsWyJkIixbMTUsImFOIl1dXSxbNjYsImFPIixbMTUsImFMIl0sWzQ2LFs1MyxbMjIsWzIwLFsyLFsxNSwiYU4iXSwiaW5kZXhPZiIsWzcsWzE1LCJhTyJdXV0sMF0sWzQ2LFszNix0cnVlXV1dXV1dLFsyMixbMTgsWzIsWzE1LCJhSyJdLCJpbmRleE9mIixbNyxbMTUsImFOIl1dXSxbMjcsMV1dLFs0NixbMzYsdHJ1ZV1dXSxbMzYsZmFsc2VdXSxbNTIsImIiLFsicmVxdWlyZSIsIm1ha2VOdW1iZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJwYXJzZVVybCJdXSxbNTIsImQiLFsicmVxdWlyZSIsIm1ha2VTdHJpbmciXV0sWzUyLCJlIixbInJlcXVpcmUiLCJpbnRlcm5hbC5jcmVhdGVSZWdleCJdXSxbNTIsImYiLFsicmVxdWlyZSIsImludGVybmFsLnRlc3RSZWdleCJdXSxbNTIsImciLFsicmVxdWlyZSIsImRlY29kZVVyaUNvbXBvbmVudCJdXSxbNTIsImgiLFsicmVxdWlyZSIsImdldFR5cGUiXV0sWzUyLCJpIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiaiIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwiayIsWzE1LCJfX21vZHVsZV9nb2xkRXZlbnRVc2FnZUlkIl1dLFs1MiwibCIsWzUxLCIiLFs3LCJhTiJdLFszNixbMjAsWyJoIixbMTUsImFOIl1dLCJhcnJheSJdXV1dLFs1MiwibSIsImV2ZW50X3BhcmFtX29wcyJdLFs1MiwibiIsImVkaXRfcGFyYW0iXSxbNTIsIm8iLCJkZWxldGVfcGFyYW0iXSxbNTIsInAiLCJwYXJhbV9uYW1lIl0sWzUyLCJxIiwicGFyYW1fdmFsdWUiXSxbNTIsInIiLCJjb25zdF92YWx1ZSJdLFs1MiwicyIsInBhcmFtX25hbWUiXSxbNTIsInQiLCJldmVudF9wYXJhbSJdLFs1MiwidSIsInByZWRpY2F0ZXMiXSxbNTIsInYiLCJuZWdhdGUiXSxbNTIsInciLCJ0eXBlIl0sWzUyLCJ4IiwidmFsdWVzIl0sWzUyLCJ5IiwidHlwZSJdLFs1MiwieiIsWzcsWzE3LFsxNSwiaiJdLCJIRCJdLFsxNyxbMTUsImoiXSwiS0giXSxbMTcsWzE1LCJqIl0sIkhFIl1dXSxbNTIsImFHIixbOCwiX19nYSIsMSwiX191dG1hIiwxLCJfX3V0bWIiLDEsIl9fdXRtYyIsMSwiX191dG1rIiwxLCJfX3V0bXYiLDEsIl9fdXRteCIsMSwiX191dG16IiwxLCJfZ2FjIiwxLCJfZ2wiLDEsImRjbGlkIiwxLCJnYWRfY2FtcGFpZ25pZCIsMSwiZ2FkX3NvdXJjZSIsMSwiZ2JyYWlkIiwxLCJnY2xpZCIsMSwiZ2Nsc3JjIiwxLCJ1dG1fY2FtcGFpZ24iLDEsInV0bV9jb250ZW50IiwxLCJ1dG1fZXhwaWQiLDEsInV0bV9pZCIsMSwidXRtX21lZGl1bSIsMSwidXRtX25vb3ZlcnJpZGUiLDEsInV0bV9yZWZlcnJlciIsMSwidXRtX3NvdXJjZSIsMSwidXRtX3Rlcm0iLDEsIndicmFpZCIsMV1dLFs1MiwiYUsiLFs3LFsxNyxbMTUsImoiXSwiSSJdLFsxNyxbMTUsImoiXSwiSiJdLFsxNyxbMTUsImoiXSwiSyJdLFsxNyxbMTUsImoiXSwiTCJdLFsxNyxbMTUsImoiXSwiTSJdLFsxNyxbMTUsImoiXSwiQUYiXSxbMTcsWzE1LCJqIl0sIkFHIl0sWzE3LFsxNSwiaiJdLCJBSiJdLFsxNyxbMTUsImoiXSwiQU0iXSxbMTcsWzE1LCJqIl0sIkFRIl1dXSxbNTIsImFMIixbNywiXyIsImdhXyIsImdvb2dsZV8iLCJndGFnLiIsImZpcmViYXNlXyJdXSxbMzYsWzgsIkEiLFsxNSwiYUEiXSwiRCIsWzE1LCJhTSJdLCJCIixbMTUsImFDIl0sIkMiLFsxNSwiYUYiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEdhUmVnaW9uU2NvcGVkU2V0dGluZ3MiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsImoiLFs0NiwibSIsIm4iLCJvIl0sWzUwLCJ0IixbNDYsInYiXSxbNTIsInciLFsxNixbMTUsImkiXSxbMTUsInYiXV1dLFsyMixbMjgsWzE1LCJ3Il1dLFs0NixbMzZdXV0sWzUzLFs0MSwieCJdLFszLCJ4IiwwXSxbNjMsWzcsIngiXSxbMjMsWzE1LCJ4Il0sWzE3LFsxNSwidyJdLCJsZW5ndGgiXV0sWzMzLFsxNSwieCJdLFszLCJ4IixbMCxbMTUsIngiXSwxXV1dLFs0NixbNTMsWzUyLCJ5IixbMTYsWzE1LCJ3Il0sWzE1LCJ4Il1dXSxbInEiLFsxNSwicCJdLFsxNyxbMTUsInkiXSwibmFtZSJdLFsxNyxbMTUsInkiXSwidmFsdWUiXV1dXV1dXSxbNTAsInUiLFs0NiwidiJdLFsyMixbMzAsWzI4LFsxNSwiciJdXSxbMjEsWzE3LFsxNSwiciJdLCJsZW5ndGgiXSwyXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dLFs0MSwidyJdLFszLCJ3IixbMTYsWzE1LCJ2Il0sWzE1LCJzIl1dXSxbMjIsWzIwLFsxNSwidyJdLFs0NF1dLFs0NixbNTMsWzMsInciLFsxNixbMTUsInYiXSxbMTUsInIiXV1dXV1dLFszNixbMjgsWzI4LFsxNSwidyJdXV1dXSxbMjIsWzI4LFsxNSwibiJdXSxbNDYsWzM2XV1dLFs1MiwicCIsWzMwLFsxNyxbMTUsIm0iXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl0sWzE3LFsiYyJdLCJjb250YWluZXJJZCJdXV0sWzUyLCJxIixbImgiLFsxNSwiZiJdLFsxNSwibyJdXV0sWzUyLCJyIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWyJoIixbMTUsImQiXSxbMTUsIm8iXV1dLFsiJDAiXV1dLFs1MiwicyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFsiaCIsWzE1LCJlIl0sWzE1LCJvIl1dXSxbIiQwIl1dXSxbNTMsWzQxLCJ2Il0sWzMsInYiLDBdLFs2MyxbNywidiJdLFsyMyxbMTUsInYiXSxbMTcsWzE1LCJuIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJ2Il0sWzMsInYiLFswLFsxNSwidiJdLDFdXV0sWzQ2LFs1MyxbNTIsInciLFsxNixbMTUsIm4iXSxbMTUsInYiXV1dLFsyMixbMzAsWzE3LFsxNSwidyJdLCJkaXNhbGxvd0FsbFJlZ2lvbnMiXSxbInUiLFsxNyxbMTUsInciXSwiZGlzYWxsb3dlZFJlZ2lvbnMiXV1dLFs0NixbNTMsWyJ0IixbMTcsWzE1LCJ3Il0sInJlZGFjdEZpZWxkR3JvdXAiXV1dXV1dXV1dXSxbNTAsImsiLFs0NiwibSJdLFs1MiwibiIsWzhdXSxbMjIsWzI4LFsxNSwibSJdXSxbNDYsWzM2LFsxNSwibiJdXV1dLFs1MiwibyIsWzIsWzE1LCJtIl0sInNwbGl0IixbNywiLCJdXV0sWzUzLFs0MSwicCJdLFszLCJwIiwwXSxbNjMsWzcsInAiXSxbMjMsWzE1LCJwIl0sWzE3LFsxNSwibyJdLCJsZW5ndGgiXV0sWzMzLFsxNSwicCJdLFszLCJwIixbMCxbMTUsInAiXSwxXV1dLFs0NixbNTMsWzUyLCJxIixbMixbMTYsWzE1LCJvIl0sWzE1LCJwIl1dLCJ0cmltIixbN11dXSxbMjIsWzI4LFsxNSwicSJdXSxbNDYsWzZdXV0sWzUyLCJyIixbMixbMTUsInEiXSwic3BsaXQiLFs3LCItIl1dXSxbNTIsInMiLFsxNixbMTUsInIiXSwwXV0sWzUyLCJ0IixbMzksWzIwLFsxNyxbMTUsInIiXSwibGVuZ3RoIl0sMl0sWzE1LCJxIl0sWzQ0XV1dLFsyMixbMzAsWzI4LFsxNSwicyJdXSxbMjEsWzE3LFsxNSwicyJdLCJsZW5ndGgiXSwyXV0sWzQ2LFs1MyxbNl1dXV0sWzIyLFsxLFsyMSxbMTUsInQiXSxbNDRdXSxbMzAsWzIzLFsxNyxbMTUsInQiXSwibGVuZ3RoIl0sNF0sWzE4LFsxNyxbMTUsInQiXSwibGVuZ3RoIl0sNl1dXSxbNDYsWzUzLFs2XV1dXSxbNDMsWzE1LCJuIl0sWzE1LCJxIl0sdHJ1ZV1dXV1dLFszNixbMTUsIm4iXV1dLFs1MCwibCIsWzQ2LCJtIl0sWzIyLFsyOCxbMTcsWzE1LCJtIl0sInNldHRpbmdzVGFibGUiXV0sWzQ2LFszNixbN11dXV0sWzUyLCJuIixbOF1dLFs1MyxbNDEsIm8iXSxbMywibyIsMF0sWzYzLFs3LCJvIl0sWzIzLFsxNSwibyJdLFsxNyxbMTcsWzE1LCJtIl0sInNldHRpbmdzVGFibGUiXSwibGVuZ3RoIl1dLFszMyxbMTUsIm8iXSxbMywibyIsWzAsWzE1LCJvIl0sMV1dXSxbNDYsWzUzLFs1MiwicCIsWzE2LFsxNyxbMTUsIm0iXSwic2V0dGluZ3NUYWJsZSJdLFsxNSwibyJdXV0sWzUyLCJxIixbMTcsWzE1LCJwIl0sInJlZGFjdEZpZWxkR3JvdXAiXV0sWzIyLFsyOCxbMTYsWzE1LCJpIl0sWzE1LCJxIl1dXSxbNDYsWzZdXV0sWzQzLFsxNSwibiJdLFsxNSwicSJdLFs4LCJyZWRhY3RGaWVsZEdyb3VwIixbMTUsInEiXSwiZGlzYWxsb3dBbGxSZWdpb25zIixmYWxzZSwiZGlzYWxsb3dlZFJlZ2lvbnMiLFs4XV1dLFs1MiwiciIsWzE2LFsxNSwibiJdLFsxNSwicSJdXV0sWzIyLFsxNyxbMTUsInAiXSwiZGlzYWxsb3dBbGxSZWdpb25zIl0sWzQ2LFs1MyxbNDMsWzE1LCJyIl0sImRpc2FsbG93QWxsUmVnaW9ucyIsdHJ1ZV0sWzZdXV1dLFs0MyxbMTUsInIiXSwiZGlzYWxsb3dlZFJlZ2lvbnMiLFsiayIsWzE3LFsxNSwicCJdLCJkaXNhbGxvd2VkUmVnaW9ucyJdXV1dXV1dLFszNixbMixbMTUsImIiXSwidmFsdWVzIixbNyxbMTUsIm4iXV1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJPYmplY3QiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJnZXRDb250YWluZXJWZXJzaW9uIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0Q291bnRyeUNvZGUiXV0sWzUyLCJlIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRSZWdpb25Db2RlIl1dLFs1MiwiZiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIl1dLFs1MiwiZyIsWzE1LCJfX21vZHVsZV9hY3Rpdml0aWVzIl1dLFs1MiwiaCIsWzE3LFsxNSwiZyJdLCJBIl1dLFs1MiwiaSIsWzgsIkdPT0dMRV9TSUdOQUxTIixbNyxbOCwibmFtZSIsImFsbG93X2dvb2dsZV9zaWduYWxzIiwidmFsdWUiLGZhbHNlXV0sIkRFVklDRV9BTkRfR0VPIixbNyxbOCwibmFtZSIsImdlb19ncmFudWxhcml0eSIsInZhbHVlIix0cnVlXSxbOCwibmFtZSIsInJlZGFjdF9kZXZpY2VfaW5mbyIsInZhbHVlIix0cnVlXV1dXSxbMzYsWzgsIkEiLFsxNSwiaiJdLCJCIixbMTUsImwiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX3Rhc2tQbGF0Zm9ybURldGVjdGlvbiIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiZCIsWzQ2LCJlIl0sWzUyLCJmIixbMixbMTUsImMiXSwiQSIsWzddXV0sWzIyLFsxLFsxNSwiZiJdLFsxOCxbMTcsWzE1LCJmIl0sImxlbmd0aCJdLDBdXSxbNDYsWzUzLFsyLFsxNSwiZSJdLCJtZXJnZUhpdERhdGFGb3JLZXkiLFs3LFsxNyxbMTUsImIiXSwiRlQiXSxbOCwicGxmIixbMixbMTUsImYiXSwiam9pbiIsWzcsIi4iXV1dXV1dXV1dLFs1MiwiYiIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwiYyIsWzE1LCJfX21vZHVsZV9wbGF0Zm9ybURldGVjdGlvbiJdXSxbMzYsWzgsIkEiLFsxNSwiZCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogCl0KLCJlbnRpdGllcyI6ewoiX19jIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2F1dG9fcmVkYWN0Ijp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2NvbnZlcnNpb25fbWFya2luZyI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9lbV9kb3dubG9hZCI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9lbV9mb3JtIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX291dGJvdW5kX2NsaWNrIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX3BhZ2VfdmlldyI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9lbV9zY3JvbGwiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZW1fc2l0ZV9zZWFyY2giOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZW1fdmlkZW8iOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZ2FfZmlyc3QiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZ2FfbGFzdCI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9nYV9yZWdzY29wZSI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2UiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19nY3QiOnsiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19vZ3RfMXBfZGF0YV92MiI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX29ndF9ldmVudF9jcmVhdGUiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19zZXRfcHJvZHVjdF9zZXR0aW5ncyI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQoKCn0KLCJibG9iIjp7IjEiOiIxIiwiMTAiOiJHLTE2RkM1WkMxOFF8R1QtVFFTUzJaWEQiLCIxMSI6dHJ1ZSwiMTQiOiI2N20wIiwiMTUiOiIwIiwiMTYiOiJDaEFJOE9DVzB3WVFyNURna0orZThhTjlFaDBBaCtnR2ZyZ1lvY1B0d2pVaEhpTVRtUUQ2c1M1VDY5bFZ4bFMrNWhvQ2R5ND0iLCIxNyI6IiIsIjE5IjoiZGF0YUxheWVyIiwiMiI6dHJ1ZSwiMjAiOiIiLCIyMSI6Ind3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIsIjIyIjoiZXlJd0lqb2lUazhpTENJeElqb2lUazh0TURNaUxDSXlJanBtWVd4elpTd2lNeUk2SW1kdmIyZHNaUzV1YnlJc0lqUWlPaUp5WldkcGIyNHhJaXdpTlNJNlptRnNjMlVzSWpZaU9uUnlkV1VzSWpjaU9pSmhaRjl6ZEc5eVlXZGxmR0Z1WVd4NWRHbGpjMTl6ZEc5eVlXZGxmR0ZrWDNWelpYSmZaR0YwWVh4aFpGOXdaWEp6YjI1aGJHbDZZWFJwYjI0aUxDSTVJanAwY25WbGZRIiwiMjMiOiJnb29nbGUudGFnbWFuYWdlci5kZWJ1Z3VpMi5xdWV1ZSIsIjI0IjoidGFnYXNzaXN0YW50Lmdvb2dsZS5jb20iLCIyNyI6MC4wMDUsIjMiOiJ3d3cuZ29vZ2xldGFnbWFuYWdlci5jb20iLCIzMCI6Ik5PIiwiMzEiOiJOTy0wMyIsIjMyIjpmYWxzZSwiMzMiOiJyZWdpb24xIiwiMzQiOiJHLTE2RkM1WkMxOFEiLCIzNSI6IkciLCIzNiI6Imh0dHBzOi8vYWRzZXJ2aWNlLmdvb2dsZS5jb20vcGFnZWFkL3JlZ2NsayIsIjM3IjoiX19UQUdHWV9JTlNUQUxMRUQiLCIzOCI6ImNjdC5nb29nbGUiLCIzOSI6Imdvb2dUYWdneVJlZmVycmVyIiwiNDAiOiJodHRwczovL2NjdC5nb29nbGUvdGFnZ3kvYWdlbnQuanMiLCI0MSI6Imdvb2dsZS50YWdtYW5hZ2VyLnRhLnByb2RxdWV1ZSIsIjQyIjowLjAxLCI0MyI6IntcImtleXNcIjpbe1wiaHBrZVB1YmxpY0tleVwiOntcInBhcmFtc1wiOntcImFlYWRcIjpcIkFFU18xMjhfR0NNXCIsXCJrZGZcIjpcIkhLREZfU0hBMjU2XCIsXCJrZW1cIjpcIkRIS0VNX1AyNTZfSEtERl9TSEEyNTZcIn0sXCJwdWJsaWNLZXlcIjpcIkJLbHlUWDJqeW9icFFDbWZVeUJiaEJ5UUhrOVoySGRONWxIeHBCQXRJS0dNY216dzBnRStlYmxZQ21tMUdhN2JZZVRkeWRvSm1lNklwYVNvQ1UwSVVVbz1cIixcInZlcnNpb25cIjowfSxcImlkXCI6XCJkZWU0YjM1MS1iMGY1LTRjMjctYThjOC1lZDY2MDQ3N2E0NGNcIn0se1wiaHBrZVB1YmxpY0tleVwiOntcInBhcmFtc1wiOntcImFlYWRcIjpcIkFFU18xMjhfR0NNXCIsXCJrZGZcIjpcIkhLREZfU0hBMjU2XCIsXCJrZW1cIjpcIkRIS0VNX1AyNTZfSEtERl9TSEEyNTZcIn0sXCJwdWJsaWNLZXlcIjpcIkJEdFlCUm5QQlMxZzZtZVhPMXJRNWE1MkI1RmJuaDdEQzVqcXYwMml4SnNzbjBrMUo5cmNIQ2FWYy96elJzbnNIQnpTb0ZLczZKOHBIN0NjblFQM0Vqdz1cIixcInZlcnNpb25cIjowfSxcImlkXCI6XCJhZDE5M2IyYS00YTkwLTRjMWEtYjc5ZS1kZTM3YWMzOTFiZDJcIn0se1wiaHBrZVB1YmxpY0tleVwiOntcInBhcmFtc1wiOntcImFlYWRcIjpcIkFFU18xMjhfR0NNXCIsXCJrZGZcIjpcIkhLREZfU0hBMjU2XCIsXCJrZW1cIjpcIkRIS0VNX1AyNTZfSEtERl9TSEEyNTZcIn0sXCJwdWJsaWNLZXlcIjpcIkJNWjBVTXVkQWU0UG9hZlNUcFV4UHRJa2ZCZUNNYkZCWHZ0eVJZdkhMQ1NRL0VVdkVKc21zVjR0Nk5CL0JFVnBxTDNIdjhnTlNRaDdLK1NVb29mMjVhbz1cIixcInZlcnNpb25cIjowfSxcImlkXCI6XCI0OGM0ZWZlMS1mZGQwLTQzNmEtYWM4Zi05MjNmMTE5MTg3ODdcIn0se1wiaHBrZVB1YmxpY0tleVwiOntcInBhcmFtc1wiOntcImFlYWRcIjpcIkFFU18xMjhfR0NNXCIsXCJrZGZcIjpcIkhLREZfU0hBMjU2XCIsXCJrZW1cIjpcIkRIS0VNX1AyNTZfSEtERl9TSEEyNTZcIn0sXCJwdWJsaWNLZXlcIjpcIkJGZmx2VWwreHBIYUZWQ0lZTzFLUEx4a3YrQWpkbDRkOHJ2clhoSTZ6ZnBuYkJEcUk1MUREa3RISGIzWldJUzU3b0RoMEtpcjlBdUNPb24yTU94TlY5WT1cIixcInZlcnNpb25cIjowfSxcImlkXCI6XCI0MzJiYzI3MC05OWVhLTQyMjAtYjU2Mi1lMmM1YWU3N2Q0ZDlcIn0se1wiaHBrZVB1YmxpY0tleVwiOntcInBhcmFtc1wiOntcImFlYWRcIjpcIkFFU18xMjhfR0NNXCIsXCJrZGZcIjpcIkhLREZfU0hBMjU2XCIsXCJrZW1cIjpcIkRIS0VNX1AyNTZfSEtERl9TSEEyNTZcIn0sXCJwdWJsaWNLZXlcIjpcIkJBUThUa3k0RExXT0piSE9IYlZZRGJRWkVmRWVsYjRGVEI4RVlNUWVSUWlMMW0xTHRBZDByM3pleUxqZ1ozL1cyNFI4VmZiMjJ6WTJpeDZXL1RmQ2pqQT1cIixcInZlcnNpb25cIjowfSxcImlkXCI6XCIwNTBhNmUxMS0zOGFiLTRmODAtODljYi03YjMxOWI5NzA0YzBcIn1dfSIsIjQ0IjoiMTE4ODk3OTIwfjExODg5NzkzMCIsIjQ1Ijp0cnVlLCI0NiI6eyIxIjoiMTAwMCIsIjEwIjoiNjZ1MCIsIjExIjoiNjZnMCIsIjE0IjoiMTAwMCIsIjE2IjoiVVMtQ09+VVMtQ1R+VVMtTVR+VVMtTkV+VVMtTkh+VVMtVFh+VVMtTU5+VVMtTkp+VVMtTUR+VVMtT1J+VVMtREUiLCIxNyI6IlVTLUNPflVTLUNUflVTLU1UflVTLU5FflVTLU5IflVTLVRYflVTLU1OflVTLU5KflVTLU1EflVTLU9SflVTLURFIiwiMiI6IjkiLCIyMCI6IjUwMDAiLCIyMSI6IjUwMDAiLCIyMiI6IjQuNC4wIiwiMjMiOiIwLjAuMCIsIjI1IjoiMSIsIjI2IjoiNDAwMCIsIjI3IjoiMTAwIiwiMyI6IjUiLCI0IjoiYWRfc3RvcmFnZXxhbmFseXRpY3Nfc3RvcmFnZXxhZF91c2VyX2RhdGF8YWRfcGVyc29uYWxpemF0aW9uIiwiNDQiOiIxNTAwMCIsIjQ4IjoiMzAwMDAiLCI1IjoiYWRfc3RvcmFnZXxhbmFseXRpY3Nfc3RvcmFnZXxhZF91c2VyX2RhdGEiLCI2IjoiMSIsIjYxIjoiMTAwMCIsIjYyIjoiQTZPTkhSWTcvYnZCcm8rSU1aZC9hNkxOam43U1N2OTk5U2tOL2hGQUU5TDZ2TXIzNGROZ2ZkU1ZkWW12NFUrTkhaZzFzeGQzOFJ0Y2lScFJVdElSUGdRQUFBQ0NleUp2Y21sbmFXNGlPaUpvZEhSd2N6b3ZMM2QzZHk1bmIyOW5iR1YwWVdkdFlXNWhaMlZ5TG1OdmJUbzBORE1pTENKbVpXRjBkWEpsSWpvaVUyaGhjbVZrVjI5eWEyVnlSWGgwWlc1a1pXUk1hV1psZEdsdFpTSXNJbVY0Y0dseWVTSTZNVGMzTmpjeU9UWXdNQ3dpYVhOVWFHbHlaRkJoY25SNUlqcDBjblZsZlE9PSIsIjYzIjoiMTAwMCIsIjY2IjoiMTAwIiwiNyI6IjEwIn0sIjQ4Ijp0cnVlLCI1IjoiRy0xNkZDNVpDMThRIiwiNTUiOlsiRy0xNkZDNVpDMThRIl0sIjU2IjpbeyIxIjo0MDMsIjMiOjAuNSwiNCI6MTE1OTM4NDY1LCI1IjoxMTU5Mzg0NjYsIjYiOjAsIjciOjJ9LHsiMSI6NDA0LCIzIjowLjUsIjQiOjExNTkzODQ2OCwiNSI6MTE1OTM4NDY5LCI2IjowLCI3IjoxfSx7IjEiOjYwMiwiMyI6MC4wMSwiNCI6MTIwMTI0NDU1LCI1IjoxMjAxMjQ0NTMsIjYiOjEyMDEyNDQ1NCwiNyI6M30seyIxIjo1NjksIjIiOnRydWV9LHsiMSI6NDc1LCIyIjp0cnVlfSx7IjEiOjUwMiwiMiI6dHJ1ZX0seyIxIjo1NzcsIjIiOnRydWV9LHsiMSI6NTY4LCIzIjowLjAxLCI0IjoxMTk3OTE3NDksIjUiOjExOTc5MTc0OCwiNiI6MCwiNyI6MX0seyIxIjo0OTAsIjIiOnRydWV9LHsiMSI6NDkxLCIzIjowLjAxLCI0IjoxMTgwMTIwMDcsIjUiOjExODAxMjAwOCwiNiI6MTE4MDEyMDA5LCI3IjoxfSx7IjEiOjQ4MCwiMiI6dHJ1ZX0seyIxIjo1OTQsIjMiOjAuMDEsIjQiOjExOTc5Mzk3NCwiNSI6MTE5NzkzOTcyLCI2IjoxMTk3OTM5NzMsIjciOjF9LHsiMSI6NTk5LCIyIjp0cnVlfSx7IjEiOjU4MCwiMyI6MC4xLCI0IjoxMTk1MjcwMjAsIjUiOjExOTUyNzAxOSwiNiI6MCwiNyI6MX0seyIxIjo1MjMsIjIiOnRydWV9LHsiMSI6NTgxLCIzIjowLjAxLCI0IjoxMTk5NDg4NTQsIjUiOjExOTk0ODg1MiwiNiI6MTE5OTQ4ODUzLCI3IjozfSx7IjEiOjU1NSwiMyI6MC4wMSwiNCI6MTE5MjU5NjA2LCI1IjoxMTkyNTk2MDUsIjYiOjAsIjciOjJ9LHsiMSI6NTA0LCIyIjp0cnVlfSx7IjEiOjQ2MiwiMyI6MC4wNSwiNCI6MTE4ODA2NTI0LCI1IjoxMTg4MDY1MjUsIjYiOjExODgwNjUyNiwiNyI6MX0seyIxIjo0MTMsIjIiOnRydWV9LHsiMSI6NTkzLCIyIjp0cnVlfSx7IjEiOjUwNiwiMiI6dHJ1ZX0seyIxIjo1MDAsIjIiOnRydWV9LHsiMSI6NTYxLCIzIjowLjAwMSwiNCI6MTE5NDA0NzAzLCI1IjoxMTk0MDQ3MDIsIjYiOjAsIjciOjF9LHsiMSI6NDgxLCIzIjowLjAwMSwiNCI6MTE5NDA0NzAxLCI1IjoxMTk0MDQ3MDAsIjYiOjAsIjciOjF9LHsiMSI6NDUwLCIzIjowLjAxLCI0IjoxMTcyMjc3MTQsIjUiOjExNzIyNzcxNSwiNiI6MTE3MjI3NzE2LCI3IjozfSx7IjEiOjU4MywiMyI6MC41LCI0IjoxMTk4OTY4MDMsIjUiOjExOTg5NjgwMiwiNiI6MCwiNyI6MX0seyIxIjo0NTgsIjIiOnRydWV9LHsiMSI6NTgyLCIzIjowLjAxLCI0IjoxMTkzODE2NjQsIjUiOjExOTM4MTY2MiwiNiI6MTE5MzgxNjYzLCI3IjoxfSx7IjEiOjU3MCwiMiI6dHJ1ZX0seyIxIjo0OTgsIjMiOjAuMiwiNCI6MTE1NjE2OTg1LCI1IjoxMTU2MTY5ODYsIjYiOjAsIjciOjF9LHsiMSI6NTk1LCIyIjp0cnVlfSx7IjEiOjU4OSwiMyI6MC4wMSwiNCI6MTIwMDg0MjE1LCI1IjoxMjAwODQyMTQsIjYiOjAsIjciOjF9LHsiMSI6NDk1LCIzIjowLjA1LCI0IjoxMTgxMzE4MTAsIjUiOjExODEzMTgwOCwiNiI6MTE4MTMxODA5LCI3IjozfSx7IjEiOjU4NywiMyI6MC4xLCI0IjoxMTk3MzIxNzEsIjUiOjExOTczMjE3MCwiNiI6MCwiNyI6M30seyIxIjo1ODQsIjIiOnRydWV9LHsiMSI6NTY0LCIzIjowLjAwMDEsIjQiOjExOTIwNTMxNywiNSI6MTE5MjA1MzE1LCI2IjoxMTkyMDUzMTYsIjciOjF9LHsiMSI6NTU3LCIyIjp0cnVlfSx7IjEiOjQyNywiMyI6MC4xLCI0IjoxMTk3MjQzMjIsIjUiOjExOTcyNDMyMCwiNiI6MTE5NzI0MzIxLCI3IjoyfSx7IjEiOjU3NiwiMyI6MC4wMSwiNCI6MTE5MzE3ODEwLCI1IjoxMTkzMTc4MTEsIjYiOjExOTMxODE3NywiNyI6M30seyIxIjo1NzMsIjIiOnRydWV9LHsiMSI6NDk5LCIyIjp0cnVlfSx7IjEiOjUxNiwiMyI6MC4xLCI0IjoxMTgzOTUzMzUsIjUiOjExODM5NTMzMywiNiI6MTE4Mzk1MzM0LCI3IjoxfSx7IjEiOjUyNCwiMiI6dHJ1ZX1dLCI1OSI6WyJHLTE2RkM1WkMxOFEiXSwiNiI6IjI0NDk3NjQ4OSIsIjYyIjp0cnVlLCI2MyI6MC4wMDV9CiwicGVybWlzc2lvbnMiOnsKIl9fYyI6e30KLAoiX19jY2RfYXV0b19yZWRhY3QiOnt9CiwKIl9fY2NkX2NvbnZlcnNpb25fbWFya2luZyI6e30KLAoiX19jY2RfZW1fZG93bmxvYWQiOnsibGlzdGVuX2RhdGFfbGF5ZXIiOnsiYWNjZXNzVHlwZSI6InNwZWNpZmljIiwiYWxsb3dlZEV2ZW50cyI6WyJndG0ubGlua0NsaWNrIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyI6eyJhbGxvd1dhaXRGb3JUYWdzIjoiIn19CiwKIl9fY2NkX2VtX2Zvcm0iOnsiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiOnt9LCJsaXN0ZW5fZGF0YV9sYXllciI6eyJhY2Nlc3NUeXBlIjoic3BlY2lmaWMiLCJhbGxvd2VkRXZlbnRzIjpbImd0bS5mb3JtSW50ZXJhY3QiLCJndG0uZm9ybVN1Ym1pdCIsImd0bS5jbGljay12MiJdfSwiZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cyI6eyJhbGxvd1dhaXRGb3JUYWdzIjoiIn0sImRldGVjdF9jbGlja19ldmVudHMiOnt9LCJkZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHMiOnt9fQosCiJfX2NjZF9lbV9vdXRib3VuZF9jbGljayI6eyJnZXRfdXJsIjp7InVybFBhcnRzIjoiYW55IiwicXVlcmllc0FsbG93ZWQiOiJhbnkifSwibGlzdGVuX2RhdGFfbGF5ZXIiOnsiYWNjZXNzVHlwZSI6InNwZWNpZmljIiwiYWxsb3dlZEV2ZW50cyI6WyJndG0ubGlua0NsaWNrIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyI6eyJhbGxvd1dhaXRGb3JUYWdzIjoiIn19CiwKIl9fY2NkX2VtX3BhZ2VfdmlldyI6eyJsaXN0ZW5fZGF0YV9sYXllciI6eyJhY2Nlc3NUeXBlIjoic3BlY2lmaWMiLCJhbGxvd2VkRXZlbnRzIjpbImd0bS5oaXN0b3J5Q2hhbmdlLXYyIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMiOnt9fQosCiJfX2NjZF9lbV9zY3JvbGwiOnsibGlzdGVuX2RhdGFfbGF5ZXIiOnsiYWNjZXNzVHlwZSI6InNwZWNpZmljIiwiYWxsb3dlZEV2ZW50cyI6WyJndG0uc2Nyb2xsRGVwdGgiXX0sImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIjp7fSwiZGV0ZWN0X3Njcm9sbF9ldmVudHMiOnt9fQosCiJfX2NjZF9lbV9zaXRlX3NlYXJjaCI6eyJnZXRfdXJsIjp7InVybFBhcnRzIjoiYW55IiwicXVlcmllc0FsbG93ZWQiOiJhbnkifSwicmVhZF9jb250YWluZXJfZGF0YSI6e319CiwKIl9fY2NkX2VtX3ZpZGVvIjp7Imxpc3Rlbl9kYXRhX2xheWVyIjp7ImFjY2Vzc1R5cGUiOiJzcGVjaWZpYyIsImFsbG93ZWRFdmVudHMiOlsiZ3RtLnZpZGVvIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cyI6eyJhbGxvd0ZpeE1pc3NpbmdKYXZhU2NyaXB0QXBpIjpmYWxzZX19CiwKIl9fY2NkX2dhX2ZpcnN0Ijp7InJlYWRfZG9tX2VsZW1lbnRzIjp7ImFsbG93ZWRDc3NTZWxlY3RvcnMiOiJhbnkifSwiZ2V0X3VybCI6eyJ1cmxQYXJ0cyI6InNwZWNpZmljIiwicHJvdG9jb2wiOnRydWUsImhvc3QiOnRydWV9fQosCiJfX2NjZF9nYV9sYXN0Ijp7fQosCiJfX2NjZF9nYV9yZWdzY29wZSI6eyJyZWFkX2NvbnRhaW5lcl9kYXRhIjp7fX0KLAoiX19lIjp7InJlYWRfZXZlbnRfZGF0YSI6eyJldmVudERhdGFBY2Nlc3MiOiJzcGVjaWZpYyIsImtleVBhdHRlcm5zIjpbImV2ZW50Il19fQosCiJfX2djdCI6eyJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e319CiwKIl9fb2d0XzFwX2RhdGFfdjIiOnsiZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YSI6eyJsaW1pdERhdGFTb3VyY2VzIjp0cnVlLCJhbGxvd0F1dG9EYXRhU291cmNlcyI6dHJ1ZSwiYWxsb3dNYW51YWxEYXRhU291cmNlcyI6ZmFsc2UsImFsbG93Q29kZURhdGFTb3VyY2VzIjpmYWxzZX19CiwKIl9fb2d0X2V2ZW50X2NyZWF0ZSI6eyJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e319CiwKIl9fc2V0X3Byb2R1Y3Rfc2V0dGluZ3MiOnt9CgoKfQoKCgosInNlY3VyaXR5X2dyb3VwcyI6ewoiZ29vZ2xlIjpbCiJfX2MiCiwKIl9fY2NkX2F1dG9fcmVkYWN0IgosCiJfX2NjZF9jb252ZXJzaW9uX21hcmtpbmciCiwKIl9fY2NkX2VtX2Rvd25sb2FkIgosCiJfX2NjZF9lbV9mb3JtIgosCiJfX2NjZF9lbV9vdXRib3VuZF9jbGljayIKLAoiX19jY2RfZW1fcGFnZV92aWV3IgosCiJfX2NjZF9lbV9zY3JvbGwiCiwKIl9fY2NkX2VtX3NpdGVfc2VhcmNoIgosCiJfX2NjZF9lbV92aWRlbyIKLAoiX19jY2RfZ2FfZmlyc3QiCiwKIl9fY2NkX2dhX2xhc3QiCiwKIl9fY2NkX2dhX3JlZ3Njb3BlIgosCiJfX2UiCiwKIl9fZ2N0IgosCiJfX29ndF8xcF9kYXRhX3YyIgosCiJfX29ndF9ldmVudF9jcmVhdGUiCiwKIl9fc2V0X3Byb2R1Y3Rfc2V0dGluZ3MiCgpdCgoKfQoKCgoKCn07CgoKCgp2YXIgayxhYT10eXBlb2YgT2JqZWN0LmNyZWF0ZT09ImZ1bmN0aW9uIj9PYmplY3QuY3JlYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1hO3JldHVybiBuZXcgYn0sYmE9dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPT0iZnVuY3Rpb24iP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX0sY2E9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXSxjPTA7YzxiLmxlbmd0aDsrK2Mpe3ZhciBkPWJbY107aWYoZCYmZC5NYXRoPT1NYXRoKXJldHVybiBkfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7Cn0saGE9Y2EodGhpcyksaWE9dHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2woIngiKT09PSJzeW1ib2wiLGthPXt9LGxhPXt9LG5hPWZ1bmN0aW9uKGEsYixjKXtpZighY3x8YSE9bnVsbCl7dmFyIGQ9bGFbYl07aWYoZD09bnVsbClyZXR1cm4gYVtiXTt2YXIgZT1hW2RdO3JldHVybiBlIT09dm9pZCAwP2U6YVtiXX19LG9hPWZ1bmN0aW9uKGEsYixjKXtpZihiKWE6e3ZhciBkPWEuc3BsaXQoIi4iKSxlPWQubGVuZ3RoPT09MSxmPWRbMF0sZzshZSYmZiBpbiBrYT9nPWthOmc9aGE7Zm9yKHZhciBoPTA7aDxkLmxlbmd0aC0xO2grKyl7dmFyIGw9ZFtoXTtpZighKGwgaW4gZykpYnJlYWsgYTtnPWdbbF19dmFyIG49ZFtkLmxlbmd0aC0xXSxwPWlhJiZjPT09ImVzNiI/Z1tuXTpudWxsLHE9YihwKTtpZihxIT1udWxsKWlmKGUpYmEoa2Esbix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnF9KTtlbHNlIGlmKHEhPT1wKXtpZihsYVtuXT09PXZvaWQgMCl7dmFyIHI9Ck1hdGgucmFuZG9tKCkqMUU5Pj4+MDtsYVtuXT1pYT9oYS5TeW1ib2wobik6IiRqc2NwJCIrcisiJCIrbn1iYShnLGxhW25dLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cX0pfX19LHBhO2lmKGlhJiZ0eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mPT0iZnVuY3Rpb24iKXBhPU9iamVjdC5zZXRQcm90b3R5cGVPZjtlbHNle3ZhciByYTthOnt2YXIgdGE9e2E6ITB9LHVhPXt9O3RyeXt1YS5fX3Byb3RvX189dGE7cmE9dWEuYTticmVhayBhfWNhdGNoKGEpe31yYT0hMX1wYT1yYT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGF9Om51bGx9CnZhciB2YT1wYSx3YT1mdW5jdGlvbihhLGIpe2EucHJvdG90eXBlPWFhKGIucHJvdG90eXBlKTthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2lmKHZhKXZhKGEsYik7ZWxzZSBmb3IodmFyIGMgaW4gYilpZihjIT0icHJvdG90eXBlIilpZihPYmplY3QuZGVmaW5lUHJvcGVydGllcyl7dmFyIGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiLGMpO2QmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGMsZCl9ZWxzZSBhW2NdPWJbY107YS5GdD1iLnByb3RvdHlwZX0seGE9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19LG09ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIFN5bWJvbCE9InVuZGVmaW5lZCImJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO2lmKGIpcmV0dXJuIGIuY2FsbChhKTtpZih0eXBlb2YgYS5sZW5ndGg9PSJudW1iZXIiKXJldHVybntuZXh0OnhhKGEpfTsKdGhyb3cgRXJyb3IoU3RyaW5nKGEpKyIgaXMgbm90IGFuIGl0ZXJhYmxlIG9yIEFycmF5TGlrZSIpO30seWE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGM9W107IShiPWEubmV4dCgpKS5kb25lOyljLnB1c2goYi52YWx1ZSk7cmV0dXJuIGN9LHc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBBcnJheT9hOnlhKG0oYSkpfSxBYT1mdW5jdGlvbihhKXtyZXR1cm4gemEoYSxhKX0semE9ZnVuY3Rpb24oYSxiKXthLnJhdz1iO09iamVjdC5mcmVlemUmJihPYmplY3QuZnJlZXplKGEpLE9iamVjdC5mcmVlemUoYikpO3JldHVybiBhfSxCYT1pYSYmdHlwZW9mIG5hKE9iamVjdCwiYXNzaWduIik9PSJmdW5jdGlvbiI/bmEoT2JqZWN0LCJhc3NpZ24iKTpmdW5jdGlvbihhLGIpe2lmKGE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiTm8gbnVsbGlzaCBhcmciKTthPU9iamVjdChhKTtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107CmlmKGQpZm9yKHZhciBlIGluIGQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtvYSgiT2JqZWN0LmFzc2lnbiIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fEJhfSwiZXM2Iik7dmFyIENhPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9LERhPWZ1bmN0aW9uKCl7dGhpcy5mYT0hMTt0aGlzLlI9bnVsbDt0aGlzLmphPXZvaWQgMDt0aGlzLkg9MTt0aGlzLk49dGhpcy5aPTA7dGhpcy5MYT10aGlzLks9bnVsbH0sRWE9ZnVuY3Rpb24oYSl7aWYoYS5mYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7YS5mYT0hMH07RGEucHJvdG90eXBlLnlhPWZ1bmN0aW9uKGEpe3RoaXMuamE9YX07CnZhciBHYT1mdW5jdGlvbihhLGIpe2EuSz17YW86Yixpc0V4Y2VwdGlvbjohMH07YS5IPWEuWnx8YS5OfTtEYS5wcm90b3R5cGUuZ2V0TmV4dEFkZHJlc3NKc2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IfTtEYS5wcm90b3R5cGUuZ2V0WWllbGRSZXN1bHRKc2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qYX07RGEucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLks9e3JldHVybjphfTt0aGlzLkg9dGhpcy5OfTtEYS5wcm90b3R5cGVbInJldHVybiJdPURhLnByb3RvdHlwZS5yZXR1cm47RGEucHJvdG90eXBlLkFqPWZ1bmN0aW9uKGEpe3RoaXMuSz17bmQ6YX07dGhpcy5IPXRoaXMuTn07RGEucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1EYS5wcm90b3R5cGUuQWo7RGEucHJvdG90eXBlLmFjPWZ1bmN0aW9uKGEsYil7dGhpcy5IPWI7cmV0dXJue3ZhbHVlOmF9fTtEYS5wcm90b3R5cGUueWllbGQ9RGEucHJvdG90eXBlLmFjOwpEYS5wcm90b3R5cGUueHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1tKGEpLGQ9Yy5uZXh0KCk7Q2EoZCk7aWYoZC5kb25lKXRoaXMuamE9ZC52YWx1ZSx0aGlzLkg9YjtlbHNlIHJldHVybiB0aGlzLlI9Yyx0aGlzLmFjKGQudmFsdWUsYil9O0RhLnByb3RvdHlwZS55aWVsZEFsbD1EYS5wcm90b3R5cGUueHM7RGEucHJvdG90eXBlLm5kPWZ1bmN0aW9uKGEpe3RoaXMuSD1hfTtEYS5wcm90b3R5cGUuanVtcFRvPURhLnByb3RvdHlwZS5uZDtEYS5wcm90b3R5cGUuRGo9ZnVuY3Rpb24oKXt0aGlzLkg9MH07RGEucHJvdG90eXBlLmp1bXBUb0VuZD1EYS5wcm90b3R5cGUuRGo7RGEucHJvdG90eXBlLk5qPWZ1bmN0aW9uKGEsYil7dGhpcy5aPWE7YiE9dm9pZCAwJiYodGhpcy5OPWIpfTtEYS5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPURhLnByb3RvdHlwZS5OajtEYS5wcm90b3R5cGUudmc9ZnVuY3Rpb24oYSl7dGhpcy5aPTA7dGhpcy5OPWF8fDB9OwpEYS5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPURhLnByb3RvdHlwZS52ZztEYS5wcm90b3R5cGUuSWo9ZnVuY3Rpb24oYSxiKXt0aGlzLkg9YTt0aGlzLlo9Ynx8MH07RGEucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9RGEucHJvdG90eXBlLklqO0RhLnByb3RvdHlwZS5QaD1mdW5jdGlvbihhKXt0aGlzLlo9YXx8MDt2YXIgYj10aGlzLksuYW87dGhpcy5LPW51bGw7cmV0dXJuIGJ9O0RhLnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9RGEucHJvdG90eXBlLlBoO0RhLnByb3RvdHlwZS5rZD1mdW5jdGlvbihhLGIsYyl7Yz90aGlzLkxhW2NdPXRoaXMuSzp0aGlzLkxhPVt0aGlzLktdO3RoaXMuWj1hfHwwO3RoaXMuTj1ifHwwfTtEYS5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9RGEucHJvdG90eXBlLmtkOwpEYS5wcm90b3R5cGUuaGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLkxhLnNwbGljZShifHwwKVswXSxkPXRoaXMuSz10aGlzLkt8fGM7ZD9kLmlzRXhjZXB0aW9uP3RoaXMuSD10aGlzLlp8fHRoaXMuTjpkLm5kIT12b2lkIDAmJnRoaXMuTjxkLm5kPyh0aGlzLkg9ZC5uZCx0aGlzLks9bnVsbCk6dGhpcy5IPXRoaXMuTjp0aGlzLkg9YX07RGEucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPURhLnByb3RvdHlwZS5oZTtEYS5wcm90b3R5cGUuZmU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBIYShhKX07RGEucHJvdG90eXBlLmZvckluPURhLnByb3RvdHlwZS5mZTt2YXIgSGE9ZnVuY3Rpb24oYSl7dGhpcy5LPWE7dGhpcy5IPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMuSC5wdXNoKGIpO3RoaXMuSC5yZXZlcnNlKCl9O0hhLnByb3RvdHlwZS5obz1mdW5jdGlvbigpe2Zvcig7dGhpcy5ILmxlbmd0aD4wOyl7dmFyIGE9dGhpcy5ILnBvcCgpO2lmKGEgaW4gdGhpcy5LKXJldHVybiBhfXJldHVybiBudWxsfTsKSGEucHJvdG90eXBlLmdldE5leHQ9SGEucHJvdG90eXBlLmhvOwp2YXIgSWE9ZnVuY3Rpb24oYSl7dGhpcy5IPW5ldyBEYTt0aGlzLks9YX0sTGE9ZnVuY3Rpb24oYSxiKXtFYShhLkgpO3ZhciBjPWEuSC5SO2lmKGMpcmV0dXJuIEphKGEsInJldHVybiJpbiBjP2NbInJldHVybiJdOmZ1bmN0aW9uKGQpe3JldHVybnt2YWx1ZTpkLGRvbmU6ITB9fSxiLGEuSC5yZXR1cm4pO2EuSC5yZXR1cm4oYik7cmV0dXJuIEthKGEpfSxKYT1mdW5jdGlvbihhLGIsYyxkKXt0cnl7dmFyIGU9Yi5jYWxsKGEuSC5SLGMpO0NhKGUpO2lmKCFlLmRvbmUpcmV0dXJuIGEuSC5mYT0hMSxlO3ZhciBmPWUudmFsdWV9Y2F0Y2goZyl7cmV0dXJuIGEuSC5SPW51bGwsR2EoYS5ILGcpLEthKGEpfWEuSC5SPW51bGw7ZC5jYWxsKGEuSCxmKTtyZXR1cm4gS2EoYSl9LEthPWZ1bmN0aW9uKGEpe2Zvcig7YS5ILkg7KXRyeXt2YXIgYj1hLksoYS5IKTtpZihiKXJldHVybiBhLkguZmE9ITEse3ZhbHVlOmIudmFsdWUsZG9uZTohMX19Y2F0Y2goZCl7YS5ILmphPXZvaWQgMCxHYShhLkgsCmQpfWEuSC5mYT0hMTtpZihhLkguSyl7dmFyIGM9YS5ILks7YS5ILks9bnVsbDtpZihjLmlzRXhjZXB0aW9uKXRocm93IGMuYW87cmV0dXJue3ZhbHVlOmMucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19LE1hPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXt2YXIgYztFYShhLkgpO2EuSC5SP2M9SmEoYSxhLkguUi5uZXh0LGIsYS5ILnlhKTooYS5ILnlhKGIpLGM9S2EoYSkpO3JldHVybiBjfTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe3ZhciBjO0VhKGEuSCk7YS5ILlI/Yz1KYShhLGEuSC5SWyJ0aHJvdyJdLGIsYS5ILnlhKTooR2EoYS5ILGIpLGM9S2EoYSkpO3JldHVybiBjfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gTGEoYSxiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSxOYT1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBNYShuZXcgSWEoYikpO3ZhJiZhLnByb3RvdHlwZSYmdmEoYywKYS5wcm90b3R5cGUpO3JldHVybiBjfSxPYT1mdW5jdGlvbigpe2Zvcih2YXIgYT1OdW1iZXIodGhpcyksYj1bXSxjPWE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliW2MtYV09YXJndW1lbnRzW2NdO3JldHVybiBifSxRYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07LyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyIFJhPXRoaXN8fHNlbGYsU2E9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EuRnQ9Yi5wcm90b3R5cGU7YS5wcm90b3R5cGU9bmV3IGM7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTthLm52PWZ1bmN0aW9uKGQsZSxmKXtmb3IodmFyIGc9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0yKSxoPTI7aDxhcmd1bWVudHMubGVuZ3RoO2grKylnW2gtMl09YXJndW1lbnRzW2hdO3JldHVybiBiLnByb3RvdHlwZVtlXS5hcHBseShkLGcpfX07dmFyIFRhPWZ1bmN0aW9uKGEsYil7dGhpcy50eXBlPWE7dGhpcy5kYXRhPWJ9O3ZhciBVYT1mdW5jdGlvbigpe3RoaXMubWFwPXt9O3RoaXMuSD17fX07VWEucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tYXBbImR1c3QuIithXX07VWEucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3ZhciBjPSJkdXN0LiIrYTt0aGlzLkguaGFzT3duUHJvcGVydHkoYyl8fCh0aGlzLm1hcFtjXT1iKX07VWEucHJvdG90eXBlLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkoImR1c3QuIithKX07VWEucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhKXt2YXIgYj0iZHVzdC4iK2E7dGhpcy5ILmhhc093blByb3BlcnR5KGIpfHxkZWxldGUgdGhpcy5tYXBbYl19Owp2YXIgVmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGEubWFwKWlmKGEubWFwLmhhc093blByb3BlcnR5KGQpKXt2YXIgZT1kLnN1YnN0cmluZyg1KTtzd2l0Y2goYil7Y2FzZSAxOmMucHVzaChlKTticmVhaztjYXNlIDI6Yy5wdXNoKGEubWFwW2RdKTticmVhaztjYXNlIDM6Yy5wdXNoKFtlLGEubWFwW2RdXSl9fXJldHVybiBjfTtVYS5wcm90b3R5cGUuRmE9ZnVuY3Rpb24oKXtyZXR1cm4gVmEodGhpcywxKX07VWEucHJvdG90eXBlLmhjPWZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsMil9O1VhLnByb3RvdHlwZS5mYz1mdW5jdGlvbigpe3JldHVybiBWYSh0aGlzLDMpfTt2YXIgV2E9ZnVuY3Rpb24oKXt9O1dhLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe307dmFyIFhhPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZT17fTt0aGlzLnByZWZpeD0iZ3RtLiJ9O2s9WGEucHJvdG90eXBlO2suc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy52YWx1ZVt0aGlzLnByZWZpeCtTdHJpbmcoYSldPWJ9O2suZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlW3RoaXMucHJlZml4K1N0cmluZyhhKV19O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlLmhhc093blByb3BlcnR5KHRoaXMucHJlZml4K1N0cmluZyhhKSl9O2suZGVsZXRlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucHJlZml4K1N0cmluZyhhKTtyZXR1cm4gdGhpcy52YWx1ZS5oYXNPd25Qcm9wZXJ0eShiKT8oZGVsZXRlIHRoaXMudmFsdWVbYl0sITApOiExfTtrLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZT17fX07CmsudmFsdWVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztyZXR1cm4gZnVuY3Rpb24gYygpe3ZhciBkLGUsZjtyZXR1cm4gTmEoYyxmdW5jdGlvbihnKXtzd2l0Y2goZy5IKXtjYXNlIDE6Zy52ZygyKSxlPWcuZmUoYS52YWx1ZSk7Y2FzZSA0OmlmKChkPWUuaG8oKSk9PW51bGwpe2cubmQoMik7YnJlYWt9aWYoIWEudmFsdWUuaGFzT3duUHJvcGVydHkoZCkpe2cubmQoNCk7YnJlYWt9Zj1RYTtyZXR1cm4gZy5hYyhhLnZhbHVlW2RdLDgpO2Nhc2UgODpmKGcuamEpO2cubmQoNCk7YnJlYWs7Y2FzZSAyOmcua2QoKSxnLmhlKDApfX0pfSgpfTtoYS5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhYYS5wcm90b3R5cGUse3NpemU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlKS5sZW5ndGh9fX0pOwpmdW5jdGlvbiBZYSgpe3RyeXtpZihNYXApcmV0dXJuIG5ldyBNYXB9Y2F0Y2goYSl7fXJldHVybiBuZXcgWGF9O3ZhciBaYT1mdW5jdGlvbigpe3RoaXMudmFsdWVzPVtdfTtaYS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3RoaXMudmFsdWVzLmluZGV4T2YoYSk9PT0tMSYmdGhpcy52YWx1ZXMucHVzaChhKX07WmEucHJvdG90eXBlLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZXMuaW5kZXhPZihhKT4tMX07dmFyICRhPWZ1bmN0aW9uKGEsYil7dGhpcy5mYT1hO3RoaXMucGFyZW50PWI7dGhpcy5SPXRoaXMuSz12b2lkIDA7dGhpcy5IYj0hMTt0aGlzLk49ZnVuY3Rpb24oZCxlLGYpe3JldHVybiBkLmFwcGx5KGUsZil9O3RoaXMuSD1ZYSgpO3ZhciBjO2E6e3RyeXtpZihTZXQpe2M9bmV3IFNldDticmVhayBhfX1jYXRjaChkKXt9Yz1uZXcgWmF9dGhpcy5aPWN9OyRhLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiKXthYih0aGlzLGEsYiwhMSl9OyRhLnByb3RvdHlwZS5RaD1mdW5jdGlvbihhLGIpe2FiKHRoaXMsYSxiLCEwKX07dmFyIGFiPWZ1bmN0aW9uKGEsYixjLGQpe2EuSGJ8fGEuWi5oYXMoYil8fChkJiZhLlouYWRkKGIpLGEuSC5zZXQoYixjKSl9O2s9JGEucHJvdG90eXBlOwprLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuSGJ8fCghdGhpcy5ILmhhcyhhKSYmdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmhhcyhhKT90aGlzLnBhcmVudC5zZXQoYSxiKTp0aGlzLlouaGFzKGEpfHx0aGlzLkguc2V0KGEsYikpfTtrLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ILmhhcyhhKT90aGlzLkguZ2V0KGEpOnRoaXMucGFyZW50P3RoaXMucGFyZW50LmdldChhKTp2b2lkIDB9O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5ILmhhcyhhKXx8ISghdGhpcy5wYXJlbnR8fCF0aGlzLnBhcmVudC5oYXMoYSkpfTtrLndiPWZ1bmN0aW9uKCl7dmFyIGE9bmV3ICRhKHRoaXMuZmEsdGhpcyk7dGhpcy5LJiZhLlFiKHRoaXMuSyk7YS5zZCh0aGlzLk4pO2EudWUodGhpcy5SKTtyZXR1cm4gYX07ay5qZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZhfTtrLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSz1hfTtrLmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuS307Cmsuc2Q9ZnVuY3Rpb24oYSl7dGhpcy5OPWF9O2suUGo9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OfTtrLlphPWZ1bmN0aW9uKCl7dGhpcy5IYj0hMH07ay51ZT1mdW5jdGlvbihhKXt0aGlzLlI9YX07ay54Yj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJ9O3ZhciBiYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7ZD1FcnJvci5jYWxsKHRoaXMsYS5tZXNzYWdlKTt0aGlzLm1lc3NhZ2U9ZC5tZXNzYWdlOyJzdGFjayJpbiBkJiYodGhpcy5zdGFjaz1kLnN0YWNrKTt0aGlzLnZvPWE7dGhpcy5Tbj1jPT09dm9pZCAwPyExOmM7dGhpcy5LPVtdO3RoaXMuSD1ifTt3YShiYixFcnJvcik7dmFyIGNiPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgYmI/YTpuZXcgYmIoYSx2b2lkIDAsITApfTt2YXIgZGI9WWEoKTtmdW5jdGlvbiBlYihhLGIpe2Zvcih2YXIgYyxkPW0oYiksZT1kLm5leHQoKTshZS5kb25lJiYhKGM9ZmIoYSxlLnZhbHVlKSxjIGluc3RhbmNlb2YgVGEpO2U9ZC5uZXh0KCkpO3JldHVybiBjfWZ1bmN0aW9uIGZiKGEsYil7dHJ5e3ZhciBjPWJbMF0sZD1iLnNsaWNlKDEpLGU9U3RyaW5nKGMpLGY9ZGIuaGFzKGUpP2RiLmdldChlKTphLmdldChlKTtpZighZnx8dHlwZW9mIGYuaW52b2tlIT09ImZ1bmN0aW9uIil0aHJvdyBjYihFcnJvcigiQXR0ZW1wdGluZyB0byBleGVjdXRlIG5vbi1mdW5jdGlvbiAiK2JbMF0rIi4iKSk7cmV0dXJuIGYuYXBwbHkoYSxkKX1jYXRjaChoKXt2YXIgZz1hLmZvKCk7ZyYmZyhoLGIuY29udGV4dD97aWQ6YlswXSxsaW5lOmIuY29udGV4dC5saW5lfTpudWxsKTt0aHJvdyBoO319O3ZhciBnYj1mdW5jdGlvbigpe3RoaXMuSz1uZXcgV2E7dGhpcy5IPW5ldyAkYSh0aGlzLkspfTtrPWdiLnByb3RvdHlwZTtrLmplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuS307ay5RYj1mdW5jdGlvbihhKXt0aGlzLkguUWIoYSl9O2suc2Q9ZnVuY3Rpb24oYSl7dGhpcy5ILnNkKGEpfTtrLmV4ZWN1dGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmsoW2FdLmNvbmNhdCh3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpKX07ay5yaz1mdW5jdGlvbigpe2Zvcih2YXIgYSxiPW0oT2EuYXBwbHkoMCxhcmd1bWVudHMpKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlhPWZiKHRoaXMuSCxjLnZhbHVlKTtyZXR1cm4gYX07ay5KcT1mdW5jdGlvbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyksYz10aGlzLkgud2IoKTtjLnVlKGEpO2Zvcih2YXIgZCxlPW0oYiksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpZD1mYihjLGYudmFsdWUpO3JldHVybiBkfTtrLlphPWZ1bmN0aW9uKCl7dGhpcy5ILlphKCl9O3ZhciBoYj1mdW5jdGlvbihhLGIpe3RoaXMuUj1hO3RoaXMucGFyZW50PWI7dGhpcy5OPXRoaXMuSD12b2lkIDA7dGhpcy5IYj0hMTt0aGlzLks9ZnVuY3Rpb24oYyxkLGUpe3JldHVybiBjLmFwcGx5KGQsZSl9O3RoaXMudmFsdWVzPW5ldyBVYX07aGIucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe2piKHRoaXMsYSxiLCExKX07aGIucHJvdG90eXBlLlFoPWZ1bmN0aW9uKGEsYil7amIodGhpcyxhLGIsITApfTt2YXIgamI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWEuSGIpaWYoZCl7dmFyIGU9YS52YWx1ZXM7ZS5zZXQoYixjKTtlLkhbImR1c3QuIitiXT0hMH1lbHNlIGEudmFsdWVzLnNldChiLGMpfTtrPWhiLnByb3RvdHlwZTtrLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuSGJ8fCghdGhpcy52YWx1ZXMuaGFzKGEpJiZ0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuaGFzKGEpP3RoaXMucGFyZW50LnNldChhLGIpOnRoaXMudmFsdWVzLnNldChhLGIpKX07CmsuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlcy5oYXMoYSk/dGhpcy52YWx1ZXMuZ2V0KGEpOnRoaXMucGFyZW50P3RoaXMucGFyZW50LmdldChhKTp2b2lkIDB9O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy52YWx1ZXMuaGFzKGEpfHwhKCF0aGlzLnBhcmVudHx8IXRoaXMucGFyZW50LmhhcyhhKSl9O2sud2I9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgaGIodGhpcy5SLHRoaXMpO3RoaXMuSCYmYS5RYih0aGlzLkgpO2Euc2QodGhpcy5LKTthLnVlKHRoaXMuTik7cmV0dXJuIGF9O2suamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SfTtrLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSD1hfTtrLmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSH07ay5zZD1mdW5jdGlvbihhKXt0aGlzLks9YX07ay5Qaj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkt9O2suWmE9ZnVuY3Rpb24oKXt0aGlzLkhiPSEwfTtrLnVlPWZ1bmN0aW9uKGEpe3RoaXMuTj1hfTtrLnhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTn07dmFyIGtiPWZ1bmN0aW9uKCl7dGhpcy5OYT0hMTt0aGlzLmxhPW5ldyBVYX07az1rYi5wcm90b3R5cGU7ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuZ2V0KGEpfTtrLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuTmF8fHRoaXMubGEuc2V0KGEsYil9O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmhhcyhhKX07ay5yZW1vdmU9ZnVuY3Rpb24oYSl7dGhpcy5OYXx8dGhpcy5sYS5yZW1vdmUoYSl9O2suRmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5GYSgpfTtrLmhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuaGMoKX07ay5mYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmZjKCl9O2suWmE9ZnVuY3Rpb24oKXt0aGlzLk5hPSEwfTtrLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTmF9O2Z1bmN0aW9uIGxiKCl7Zm9yKHZhciBhPW1iLGI9e30sYz0wO2M8YS5sZW5ndGg7KytjKWJbYVtjXV09YztyZXR1cm4gYn1mdW5jdGlvbiBuYigpe3ZhciBhPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7YSs9YS50b0xvd2VyQ2FzZSgpKyIwMTIzNDU2Nzg5LV8iO3JldHVybiBhKyIuIn12YXIgbWIsb2I7ZnVuY3Rpb24gcGIoYSl7bWI9bWJ8fG5iKCk7b2I9b2J8fGxiKCk7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrPTMpe3ZhciBkPWMrMTxhLmxlbmd0aCxlPWMrMjxhLmxlbmd0aCxmPWEuY2hhckNvZGVBdChjKSxnPWQ/YS5jaGFyQ29kZUF0KGMrMSk6MCxoPWU/YS5jaGFyQ29kZUF0KGMrMik6MCxsPWY+PjIsbj0oZiYzKTw8NHxnPj40LHA9KGcmMTUpPDwyfGg+PjYscT1oJjYzO2V8fChxPTY0LGR8fChwPTY0KSk7Yi5wdXNoKG1iW2xdLG1iW25dLG1iW3BdLG1iW3FdKX1yZXR1cm4gYi5qb2luKCIiKX0KZnVuY3Rpb24gcWIoYSl7ZnVuY3Rpb24gYihsKXtmb3IoO2Q8YS5sZW5ndGg7KXt2YXIgbj1hLmNoYXJBdChkKyspLHA9b2Jbbl07aWYocCE9bnVsbClyZXR1cm4gcDtpZighL15bXHNceGEwXSokLy50ZXN0KG4pKXRocm93IEVycm9yKCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiAiK24pO31yZXR1cm4gbH1tYj1tYnx8bmIoKTtvYj1vYnx8bGIoKTtmb3IodmFyIGM9IiIsZD0wOzspe3ZhciBlPWIoLTEpLGY9YigwKSxnPWIoNjQpLGg9Yig2NCk7aWYoaD09PTY0JiZlPT09LTEpcmV0dXJuIGM7Yys9U3RyaW5nLmZyb21DaGFyQ29kZShlPDwyfGY+PjQpO2chPT02NCYmKGMrPVN0cmluZy5mcm9tQ2hhckNvZGUoZjw8NCYyNDB8Zz4+MiksaCE9PTY0JiYoYys9U3RyaW5nLmZyb21DaGFyQ29kZShnPDw2JjE5MnxoKSkpfX07dmFyIHJiPXt9O2Z1bmN0aW9uIHNiKGEsYil7dmFyIGM9cmJbYV07Y3x8KGM9cmJbYV09W10pO2NbYl09ITB9ZnVuY3Rpb24gdGIoKXtkZWxldGUgcmIuR0E0X0VWRU5UfWZ1bmN0aW9uIHViKCl7dmFyIGE9dmIuSC5zbGljZSgpO3JiLkdUQUdfRVZFTlRfRkVBVFVSRV9DSEFOTkVMPWF9ZnVuY3Rpb24gd2IoYSl7Zm9yKHZhciBiPVtdLGM9MCxkPTA7ZDxhLmxlbmd0aDtkKyspZCU4PT09MCYmZD4wJiYoYi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpLGM9MCksYVtkXSYmKGN8PTE8PGQlOCk7Yz4wJiZiLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7cmV0dXJuIHBiKGIuam9pbigiIikpLnJlcGxhY2UoL1wuKyQvLCIiKX07ZnVuY3Rpb24geGIoKXt9ZnVuY3Rpb24geWIoYSl7cmV0dXJuIHR5cGVvZiBhPT09ImZ1bmN0aW9uIn1mdW5jdGlvbiB6YihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIn1mdW5jdGlvbiBBYihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIiYmIWlzTmFOKGEpfWZ1bmN0aW9uIEJiKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpP2E6W2FdfWZ1bmN0aW9uIENiKGEsYil7aWYoYSYmQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2NdJiZiKGFbY10pKXJldHVybiBhW2NdfWZ1bmN0aW9uIERiKGEsYil7aWYoIUFiKGEpfHwhQWIoYil8fGE+YilhPTAsYj0yMTQ3NDgzNjQ3O3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGItYSsxKSthKX0KZnVuY3Rpb24gRWIoYSxiKXtmb3IodmFyIGM9bmV3IEZiLGQ9MDtkPGEubGVuZ3RoO2QrKyljLnNldChhW2RdLCEwKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoO2UrKylpZihjLmdldChiW2VdKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBHYihhLGIpe2Zvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiKGMsYVtjXSl9ZnVuY3Rpb24gSGIoYSl7cmV0dXJuISFhJiYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpPT09IltvYmplY3QgQXJndW1lbnRzXSJ8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCJjYWxsZWUiKSl9ZnVuY3Rpb24gSWIoYSl7cmV0dXJuIE1hdGgucm91bmQoTnVtYmVyKGEpKXx8MH1mdW5jdGlvbiBKYihhKXtyZXR1cm4iZmFsc2UiPT09U3RyaW5nKGEpLnRvTG93ZXJDYXNlKCk/ITE6ISFhfQpmdW5jdGlvbiBLYihhKXt2YXIgYj1bXTtpZihBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWIucHVzaChTdHJpbmcoYVtjXSkpO3JldHVybiBifWZ1bmN0aW9uIExiKGEpe3JldHVybiBhP2EucmVwbGFjZSgvXlxzK3xccyskL2csIiIpOiIifWZ1bmN0aW9uIE1iKCl7cmV0dXJuIG5ldyBEYXRlKERhdGUubm93KCkpfWZ1bmN0aW9uIE5iKCl7cmV0dXJuIE1iKCkuZ2V0VGltZSgpfXZhciBGYj1mdW5jdGlvbigpe3RoaXMucHJlZml4PSJndG0uIjt0aGlzLnZhbHVlcz17fX07RmIucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3RoaXMudmFsdWVzW3RoaXMucHJlZml4K2FdPWJ9O0ZiLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWVzW3RoaXMucHJlZml4K2FdfTtGYi5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0KGEpIT09dm9pZCAwfTsKZnVuY3Rpb24gT2IoYSxiLGMpe3JldHVybiBhJiZhLmhhc093blByb3BlcnR5KGIpP2FbYl06Y31mdW5jdGlvbiBQYihhKXt2YXIgYj1hO3JldHVybiBmdW5jdGlvbigpe2lmKGIpe3ZhciBjPWI7Yj12b2lkIDA7dHJ5e2MoKX1jYXRjaChkKXt9fX19ZnVuY3Rpb24gUWIoYSxiKXtmb3IodmFyIGMgaW4gYiliLmhhc093blByb3BlcnR5KGMpJiYoYVtjXT1iW2NdKX1mdW5jdGlvbiBSYihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhLmxlbmd0aDtkKyspYy5wdXNoKGFbZF0pLGMucHVzaC5hcHBseShjLGJbYVtkXV18fFtdKTtyZXR1cm4gY31mdW5jdGlvbiBTYihhLGIpe3JldHVybiBhLmxlbmd0aD49Yi5sZW5ndGgmJmEuc3Vic3RyaW5nKDAsYi5sZW5ndGgpPT09Yn1mdW5jdGlvbiBUYihhLGIpe3JldHVybiBhLmxlbmd0aD49Yi5sZW5ndGgmJmEuc3Vic3RyaW5nKGEubGVuZ3RoLWIubGVuZ3RoLGEubGVuZ3RoKT09PWJ9CmZ1bmN0aW9uIFViKGEsYixjKXtjPWN8fFtdO2Zvcih2YXIgZD1hLGU9MDtlPGIubGVuZ3RoLTE7ZSsrKXtpZighZC5oYXNPd25Qcm9wZXJ0eShiW2VdKSlyZXR1cm47ZD1kW2JbZV1dO2lmKGMuaW5kZXhPZihkKT49MClyZXR1cm59cmV0dXJuIGR9ZnVuY3Rpb24gVmIoYSxiKXtmb3IodmFyIGM9e30sZD1jLGU9YS5zcGxpdCgiLiIpLGY9MDtmPGUubGVuZ3RoLTE7ZisrKWQ9ZFtlW2ZdXT17fTtkW2VbZS5sZW5ndGgtMV1dPWI7cmV0dXJuIGN9dmFyIFdiPS9eXHd7MSw5fSQvO2Z1bmN0aW9uIFliKGEsYil7YT1hfHx7fTtiPWJ8fCIsIjt2YXIgYz1bXTtHYihhLGZ1bmN0aW9uKGQsZSl7V2IudGVzdChkKSYmZSYmYy5wdXNoKGQpfSk7cmV0dXJuIGMuam9pbihiKX0KZnVuY3Rpb24gWmIoYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YS5jaGFyQ29kZUF0KGMpO2Q8MTI4P2IucHVzaChkKTpkPDIwNDg/Yi5wdXNoKDE5MnxkPj42LDEyOHxkJjYzKTpkPDU1Mjk2fHxkPj01NzM0ND9iLnB1c2goMjI0fGQ+PjEyLDEyOHxkPj42JjYzLDEyOHxkJjYzKTooZD02NTUzNisoKGQmMTAyMyk8PDEwfGEuY2hhckNvZGVBdCgrK2MpJjEwMjMpLGIucHVzaCgyNDB8ZD4+MTgsMTI4fGQ+PjEyJjYzLDEyOHxkPj42JjYzLDEyOHxkJjYzKSl9cmV0dXJuIG5ldyBVaW50OEFycmF5KGIpfWZ1bmN0aW9uICRiKGEpe2lmKCFhKXJldHVybiBhO3ZhciBiPWE7dHJ5e2I9ZGVjb2RlVVJJQ29tcG9uZW50KGEpfWNhdGNoKGQpe312YXIgYz1iLnNwbGl0KCIsIik7cmV0dXJuIGMubGVuZ3RoPT09MiYmY1swXT09PWNbMV0/Y1swXTphfQpmdW5jdGlvbiBhYyhhLGIsYyl7ZnVuY3Rpb24gZChuKXt2YXIgcD1uLnNwbGl0KCI9IilbMF07aWYoYS5pbmRleE9mKHApPDApcmV0dXJuIG47aWYoYyE9PXZvaWQgMClyZXR1cm4gcCsiPSIrY31mdW5jdGlvbiBlKG4pe3JldHVybiBuLnNwbGl0KCImIikubWFwKGQpLmZpbHRlcihmdW5jdGlvbihwKXtyZXR1cm4gcCE9PXZvaWQgMH0pLmpvaW4oIiYiKX12YXIgZj1iLmhyZWYuc3BsaXQoL1s/I10vKVswXSxnPWIuc2VhcmNoLGg9Yi5oYXNoO2dbMF09PT0iPyImJihnPWcuc3Vic3RyaW5nKDEpKTtoWzBdPT09IiMiJiYoaD1oLnN1YnN0cmluZygxKSk7Zz1lKGcpO2g9ZShoKTtnIT09IiImJihnPSI/IitnKTtoIT09IiImJihoPSIjIitoKTt2YXIgbD0iIitmK2craDtsW2wubGVuZ3RoLTFdPT09Ii8iJiYobD1sLnN1YnN0cmluZygwLGwubGVuZ3RoLTEpKTtyZXR1cm4gbH0KZnVuY3Rpb24gYmMoYSl7Zm9yKHZhciBiPTA7YjwzOysrYil0cnl7dmFyIGM9ZGVjb2RlVVJJQ29tcG9uZW50KGEpLnJlcGxhY2UoL1wrL2csIiAiKTtpZihjPT09YSlicmVhazthPWN9Y2F0Y2goZCl7cmV0dXJuIiJ9cmV0dXJuIGF9ZnVuY3Rpb24gY2MoKXt2YXIgYT1BLGI7YTp7dmFyIGM9YS5jcnlwdG98fGEubXNDcnlwdG87aWYoYyYmYy5nZXRSYW5kb21WYWx1ZXMpdHJ5e3ZhciBkPW5ldyBVaW50OEFycmF5KDI1KTtjLmdldFJhbmRvbVZhbHVlcyhkKTtiPWJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdyhkKSkpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPSskLywiIik7YnJlYWsgYX1jYXRjaChlKXt9Yj12b2lkIDB9cmV0dXJuIGJ9Oy8qCgogQ29weXJpZ2h0IEdvb2dsZSBMTEMKIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiovCnZhciBkYz1nbG9iYWxUaGlzLnRydXN0ZWRUeXBlcyxlYztmdW5jdGlvbiBmYygpe3ZhciBhPW51bGw7aWYoIWRjKXJldHVybiBhO3RyeXt2YXIgYj1mdW5jdGlvbihjKXtyZXR1cm4gY307YT1kYy5jcmVhdGVQb2xpY3koImdvb2cjaHRtbCIse2NyZWF0ZUhUTUw6YixjcmVhdGVTY3JpcHQ6YixjcmVhdGVTY3JpcHRVUkw6Yn0pfWNhdGNoKGMpe31yZXR1cm4gYX1mdW5jdGlvbiBoYygpe2VjPT09dm9pZCAwJiYoZWM9ZmMoKSk7cmV0dXJuIGVjfTt2YXIgaWM9ZnVuY3Rpb24oYSl7dGhpcy5IPWF9O2ljLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkgrIiJ9O2Z1bmN0aW9uIGpjKGEpe3ZhciBiPWEsYz1oYygpLGQ9Yz9jLmNyZWF0ZVNjcmlwdFVSTChiKTpiO3JldHVybiBuZXcgaWMoZCl9ZnVuY3Rpb24ga2MoYSl7aWYoYSBpbnN0YW5jZW9mIGljKXJldHVybiBhLkg7dGhyb3cgRXJyb3IoIiIpO307dmFyIGxjPUFhKFsiIl0pLG1jPXphKFsiXHgwMCJdLFsiXFwwIl0pLG5jPXphKFsiXG4iXSxbIlxcbiJdKSxvYz16YShbIlx4MDAiXSxbIlxcdTAwMDAiXSk7ZnVuY3Rpb24gcGMoYSl7cmV0dXJuIGEudG9TdHJpbmcoKS5pbmRleE9mKCJgIik9PT0tMX1wYyhmdW5jdGlvbihhKXtyZXR1cm4gYShsYyl9KXx8cGMoZnVuY3Rpb24oYSl7cmV0dXJuIGEobWMpfSl8fHBjKGZ1bmN0aW9uKGEpe3JldHVybiBhKG5jKX0pfHxwYyhmdW5jdGlvbihhKXtyZXR1cm4gYShvYyl9KTt2YXIgcWM9ZnVuY3Rpb24oYSl7dGhpcy5IPWF9O3FjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkh9O3ZhciByYz1mdW5jdGlvbihhKXt0aGlzLkpzPWF9O2Z1bmN0aW9uIHNjKGEpe3JldHVybiBuZXcgcmMoZnVuY3Rpb24oYil7cmV0dXJuIGIuc3Vic3RyKDAsYS5sZW5ndGgrMSkudG9Mb3dlckNhc2UoKT09PWErIjoifSl9dmFyIHRjPVtzYygiZGF0YSIpLHNjKCJodHRwIiksc2MoImh0dHBzIiksc2MoIm1haWx0byIpLHNjKCJmdHAiKSxuZXcgcmMoZnVuY3Rpb24oYSl7cmV0dXJuL15bXjpdKihbLz8jXXwkKS8udGVzdChhKX0pXTtmdW5jdGlvbiB1YyhhKXt2YXIgYjtiPWI9PT12b2lkIDA/dGM6YjtpZihhIGluc3RhbmNlb2YgcWMpcmV0dXJuIGE7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2Mpe3ZhciBkPWJbY107aWYoZCBpbnN0YW5jZW9mIHJjJiZkLkpzKGEpKXJldHVybiBuZXcgcWMoYSl9fXZhciB2Yz0vXlxzKig/IWphdmFzY3JpcHQ6KSg/OltcdysuLV0rOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pOwpmdW5jdGlvbiB3YyhhKXt2YXIgYjtpZihhIGluc3RhbmNlb2YgcWMpaWYoYSBpbnN0YW5jZW9mIHFjKWI9YS5IO2Vsc2UgdGhyb3cgRXJyb3IoIiIpO2Vsc2UgYj12Yy50ZXN0KGEpP2E6dm9pZCAwO3JldHVybiBifTtmdW5jdGlvbiB4YyhhLGIpe3ZhciBjPXdjKGIpO2MhPT12b2lkIDAmJihhLmFjdGlvbj1jKX07ZnVuY3Rpb24geWMoYSxiKXt0aHJvdyBFcnJvcihiPT09dm9pZCAwPyJ1bmV4cGVjdGVkIHZhbHVlICIrYSsiISI6Yik7fTt2YXIgemM9ZnVuY3Rpb24oYSl7dGhpcy5IPWF9O3pjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkgrIiJ9O3ZhciBCYz1mdW5jdGlvbigpe3RoaXMuSD1BY1swXS50b0xvd2VyQ2FzZSgpfTtCYy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IfTtmdW5jdGlvbiBDYyhhLGIpe3ZhciBjPVtuZXcgQmNdO2lmKGMubGVuZ3RoPT09MCl0aHJvdyBFcnJvcigiIik7dmFyIGQ9Yy5tYXAoZnVuY3Rpb24oZil7dmFyIGc7aWYoZiBpbnN0YW5jZW9mIEJjKWc9Zi5IO2Vsc2UgdGhyb3cgRXJyb3IoIiIpO3JldHVybiBnfSksZT1iLnRvTG93ZXJDYXNlKCk7aWYoZC5ldmVyeShmdW5jdGlvbihmKXtyZXR1cm4gZS5pbmRleE9mKGYpIT09MH0pKXRocm93IEVycm9yKCdBdHRyaWJ1dGUgIicrYisnIiBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIGFsbG93ZWQgcHJlZml4ZXMuJyk7YS5zZXRBdHRyaWJ1dGUoYiwidHJ1ZSIpfTt2YXIgRGM9QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKX06ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09PSJzdHJpbmciKXJldHVybiB0eXBlb2YgYiE9PSJzdHJpbmcifHxiLmxlbmd0aCE9MT8tMTphLmluZGV4T2YoYiwwKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTsiQVJUSUNMRSBTRUNUSU9OIE5BViBBU0lERSBIMSBIMiBIMyBINCBINSBINiBIRUFERVIgRk9PVEVSIEFERFJFU1MgUCBIUiBQUkUgQkxPQ0tRVU9URSBPTCBVTCBMSCBMSSBETCBEVCBERCBGSUdVUkUgRklHQ0FQVElPTiBNQUlOIERJViBFTSBTVFJPTkcgU01BTEwgUyBDSVRFIFEgREZOIEFCQlIgUlVCWSBSQiBSVCBSVEMgUlAgREFUQSBUSU1FIENPREUgVkFSIFNBTVAgS0JEIFNVQiBTVVAgSSBCIFUgTUFSSyBCREkgQkRPIFNQQU4gQlIgV0JSIE5PQlIgSU5TIERFTCBQSUNUVVJFIFBBUkFNIFRSQUNLIE1BUCBUQUJMRSBDQVBUSU9OIENPTEdST1VQIENPTCBUQk9EWSBUSEVBRCBURk9PVCBUUiBURCBUSCBTRUxFQ1QgREFUQUxJU1QgT1BUR1JPVVAgT1BUSU9OIE9VVFBVVCBQUk9HUkVTUyBNRVRFUiBGSUVMRFNFVCBMRUdFTkQgREVUQUlMUyBTVU1NQVJZIE1FTlUgRElBTE9HIFNMT1QgQ0FOVkFTIEZPTlQgQ0VOVEVSIEFDUk9OWU0gQkFTRUZPTlQgQklHIERJUiBIR1JPVVAgU1RSSUtFIFRUIi5zcGxpdCgiICIpLmNvbmNhdChbIkJVVFRPTiIsCiJJTlBVVCJdKTtmdW5jdGlvbiBFYyhhKXtyZXR1cm4gYT09PW51bGw/Im51bGwiOmE9PT12b2lkIDA/InVuZGVmaW5lZCI6YX07dmFyIEE9d2luZG93LEZjPVtdLEdjPXdpbmRvdy5oaXN0b3J5LEI9ZG9jdW1lbnQsSGM9bmF2aWdhdG9yO2Z1bmN0aW9uIEljKCl7dmFyIGE7dHJ5e2E9SGMuc2VydmljZVdvcmtlcn1jYXRjaChiKXtyZXR1cm59cmV0dXJuIGF9dmFyIEpjPUIuY3VycmVudFNjcmlwdCxLYz1KYyYmSmMuc3JjO2Z1bmN0aW9uIE1jKGEsYil7dmFyIGM9QSxkPWNbYV07Y1thXT1kPT09dm9pZCAwP2I6ZDtyZXR1cm4gY1thXX1mdW5jdGlvbiBOYyhhKXtyZXR1cm4oSGMudXNlckFnZW50fHwiIikuaW5kZXhPZihhKSE9PS0xfWZ1bmN0aW9uIE9jKCl7cmV0dXJuIE5jKCJGaXJlZm94Iil8fE5jKCJGeGlPUyIpfWZ1bmN0aW9uIFBjKCl7cmV0dXJuKE5jKCJHU0EiKXx8TmMoIkdvb2dsZUFwcCIpKSYmKE5jKCJpUGhvbmUiKXx8TmMoImlQYWQiKSl9ZnVuY3Rpb24gUWMoKXtyZXR1cm4gTmMoIkVkZy8iKXx8TmMoIkVkZ0EvIil8fE5jKCJFZGdpT1MvIil9CnZhciBSYz17YXN5bmM6MSxub25jZToxLG9uZXJyb3I6MSxvbmxvYWQ6MSxzcmM6MSx0eXBlOjF9LFNjPXtoZWlnaHQ6MSxvbmxvYWQ6MSxzcmM6MSxzdHlsZToxLHdpZHRoOjF9O2Z1bmN0aW9uIFRjKGEsYixjKXtiJiZHYihiLGZ1bmN0aW9uKGQsZSl7ZD1kLnRvTG93ZXJDYXNlKCk7Yy5oYXNPd25Qcm9wZXJ0eShkKXx8YS5zZXRBdHRyaWJ1dGUoZCxlKX0pfQpmdW5jdGlvbiBVYyhhLGIsYyxkLGUpe3ZhciBmPUIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7VGMoZixkLFJjKTtmLnR5cGU9InRleHQvamF2YXNjcmlwdCI7Zi5hc3luYz1kJiZkLmFzeW5jPT09ITE/ITE6ITA7dmFyIGc7Zz1qYyhFYyhhKSk7Zi5zcmM9a2MoZyk7dmFyIGgsbD1mLm93bmVyRG9jdW1lbnQ7bD1sPT09dm9pZCAwP2RvY3VtZW50Omw7dmFyIG4scCxxPShwPShuPWwpLnF1ZXJ5U2VsZWN0b3IpPT1udWxsP3ZvaWQgMDpwLmNhbGwobiwic2NyaXB0W25vbmNlXSIpOyhoPXE9PW51bGw/IiI6cS5ub25jZXx8cS5nZXRBdHRyaWJ1dGUoIm5vbmNlIil8fCIiKSYmZi5zZXRBdHRyaWJ1dGUoIm5vbmNlIixoKTtiJiYoZi5vbmxvYWQ9Yik7YyYmKGYub25lcnJvcj1jKTtlP2UuYXBwZW5kQ2hpbGQoZik6VmMuQnMoZik7cmV0dXJuIGZ9CmZ1bmN0aW9uIFdjKCl7aWYoS2Mpe3ZhciBhPUtjLnRvTG93ZXJDYXNlKCk7aWYoYS5pbmRleE9mKCJodHRwczovLyIpPT09MClyZXR1cm4gMjtpZihhLmluZGV4T2YoImh0dHA6Ly8iKT09PTApcmV0dXJuIDN9cmV0dXJuIDF9ZnVuY3Rpb24gWGMoYSxiLGMsZCxlLGYpe2Y9Zj09PXZvaWQgMD8hMDpmO3ZhciBnPWUsaD0hMTtnfHwoZz1CLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGg9ITApO1RjKGcsYyxTYyk7ZCYmR2IoZCxmdW5jdGlvbihuLHApe2cuZGF0YXNldFtuXT1wfSk7ZiYmKGcuaGVpZ2h0PSIwIixnLndpZHRoPSIwIixnLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGcuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIik7YSE9PXZvaWQgMCYmKGcuc3JjPWEpO2lmKGgpe3ZhciBsPUIuYm9keSYmQi5ib2R5Lmxhc3RDaGlsZHx8Qi5ib2R5fHxCLmhlYWQ7bC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLGwpfWImJihnLm9ubG9hZD1iKTtyZXR1cm4gZ30KZnVuY3Rpb24gWmMoKXtyZXR1cm4gVmMuRXIuYXBwbHkoVmMsdyhPYS5hcHBseSgwLGFyZ3VtZW50cykpKX1mdW5jdGlvbiAkYyhhLGIsYyxkKXthLmFkZEV2ZW50TGlzdGVuZXImJmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsISFkKX1mdW5jdGlvbiBhZChhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLCExKX1mdW5jdGlvbiBiZChhKXtBLnNldFRpbWVvdXQoYSwwKX1mdW5jdGlvbiBjZChhLGIpe3ZhciBjPU9hLmFwcGx5KDIsYXJndW1lbnRzKSxkLGU9KGQ9QSkuc2V0SW50ZXJ2YWwuYXBwbHkoZCxbYSxiXS5jb25jYXQodyhjKSkpO0ZjLnB1c2goZSk7cmV0dXJuIGV9CmZ1bmN0aW9uIGRkKGEpe3ZhciBiPUE7eWIoYi5xdWV1ZU1pY3JvdGFzayk/Yi5xdWV1ZU1pY3JvdGFzayhhKTp5YihiLlByb21pc2UpJiZiLlByb21pc2UucmVzb2x2ZT9iLlByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXthKCl9KS5jYXRjaChmdW5jdGlvbigpe30pOmJkKGEpfWZ1bmN0aW9uIGVkKGEsYil7cmV0dXJuIGEmJmImJmEuYXR0cmlidXRlcyYmYS5hdHRyaWJ1dGVzW2JdP2EuYXR0cmlidXRlc1tiXS52YWx1ZTpudWxsfWZ1bmN0aW9uIGZkKGEpe3ZhciBiPWEuaW5uZXJUZXh0fHxhLnRleHRDb250ZW50fHwiIjtiJiZiIT09IiAiJiYoYj1iLnJlcGxhY2UoL15bXHNceGEwXSsvZywiIiksYj1iLnJlcGxhY2UoL1tcc1x4YTBdKyQvZywiIikpO2ImJihiPWIucmVwbGFjZSgvKFx4YTArfFxzezIsfXxcbnxcclx0KS9nLCIgIikpO3JldHVybiBifQpmdW5jdGlvbiBnZChhKXt2YXIgYj1CLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGM9YixkLGU9RWMoIkE8ZGl2PiIrYSsiPC9kaXY+IiksZj1oYygpLGc9Zj9mLmNyZWF0ZUhUTUwoZSk6ZTtkPW5ldyB6YyhnKTtpZihjLm5vZGVUeXBlPT09MSYmL14oc2NyaXB0fHN0eWxlKSQvaS50ZXN0KGMudGFnTmFtZSkpdGhyb3cgRXJyb3IoIiIpO3ZhciBoO2lmKGQgaW5zdGFuY2VvZiB6YyloPWQuSDtlbHNlIHRocm93IEVycm9yKCIiKTtjLmlubmVySFRNTD1oO2I9Yi5sYXN0Q2hpbGQ7Zm9yKHZhciBsPVtdO2ImJmIuZmlyc3RDaGlsZDspbC5wdXNoKGIucmVtb3ZlQ2hpbGQoYi5maXJzdENoaWxkKSk7cmV0dXJuIGx9CmZ1bmN0aW9uIGhkKGEsYixjKXtjPWN8fDEwMDtmb3IodmFyIGQ9e30sZT0wO2U8Yi5sZW5ndGg7ZSsrKWRbYltlXV09ITA7Zm9yKHZhciBmPWEsZz0wO2YmJmc8PWM7ZysrKXtpZihkW1N0cmluZyhmLnRhZ05hbWUpLnRvTG93ZXJDYXNlKCldKXJldHVybiBmO2Y9Zi5wYXJlbnRFbGVtZW50fXJldHVybiBudWxsfWZ1bmN0aW9uIGlkKGEsYixjKXt2YXIgZDt0cnl7ZD1IYy5zZW5kQmVhY29uJiZIYy5zZW5kQmVhY29uKGEpfWNhdGNoKGUpe3NiKCJUQUdHSU5HIiwxNSl9ZD9iPT1udWxsfHxiKCk6WmMoYSxiLGMpfWZ1bmN0aW9uIGpkKGEsYil7dHJ5e2lmKEhjLnNlbmRCZWFjb24hPT12b2lkIDApcmV0dXJuIEhjLnNlbmRCZWFjb24oYSxiKX1jYXRjaChjKXtzYigiVEFHR0lORyIsMTUpfXJldHVybiExfWZ1bmN0aW9uIGtkKCl7cmV0dXJuIEhjLnNlbmRCZWFjb24hPT12b2lkIDB9CnZhciBsZD17Y2FjaGU6Im5vLXN0b3JlIixjcmVkZW50aWFsczoiaW5jbHVkZSIsa2VlcGFsaXZlOiEwLG1ldGhvZDoiUE9TVCIsbW9kZToibm8tY29ycyIscmVkaXJlY3Q6ImZvbGxvdyJ9OwpmdW5jdGlvbiBtZChhLGIsYyxkLGUpe2lmKG5kKCkpe3ZhciBmPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sbGQpO2ImJihmLmJvZHk9Yik7YyYmKGMuYXR0cmlidXRpb25SZXBvcnRpbmcmJihmLmF0dHJpYnV0aW9uUmVwb3J0aW5nPWMuYXR0cmlidXRpb25SZXBvcnRpbmcpLGMuYnJvd3NpbmdUb3BpY3MhPT12b2lkIDAmJihmLmJyb3dzaW5nVG9waWNzPWMuYnJvd3NpbmdUb3BpY3MpLGMuY3JlZGVudGlhbHMmJihmLmNyZWRlbnRpYWxzPWMuY3JlZGVudGlhbHMpLGMua2VlcGFsaXZlIT09dm9pZCAwJiYoZi5rZWVwYWxpdmU9Yy5rZWVwYWxpdmUpLGMubWV0aG9kJiYoZi5tZXRob2Q9Yy5tZXRob2QpLGMubW9kZSYmKGYubW9kZT1jLm1vZGUpKTt0cnl7dmFyIGc9QS5mZXRjaChhLGYpO2lmKGcpcmV0dXJuIGcudGhlbihmdW5jdGlvbihsKXtsJiYobC5va3x8bC5zdGF0dXM9PT0wKT9kPT1udWxsfHxkKCk6ZT09bnVsbHx8ZSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtlPT0KbnVsbHx8ZSgpfSksITB9Y2F0Y2gobCl7fX1pZigoYz09bnVsbD8wOmMuUWcpfHwoYz09bnVsbD8wOmMuY3JlZGVudGlhbHMpJiZjLmNyZWRlbnRpYWxzIT09ImluY2x1ZGUiKXJldHVybiBlPT1udWxsfHxlKCksITE7aWYoYil7dmFyIGg9amQoYSxiKTtoP2Q9PW51bGx8fGQoKTplPT1udWxsfHxlKCk7cmV0dXJuIGh9VmMud3QoYSxkLGUpO3JldHVybiEwfWZ1bmN0aW9uIG5kKCl7cmV0dXJuIHliKEEuZmV0Y2gpfWZ1bmN0aW9uIG9kKGEsYil7dmFyIGM9YVtiXTtjJiZ0eXBlb2YgYy5hbmltVmFsPT09InN0cmluZyImJihjPWMuYW5pbVZhbCk7cmV0dXJuIGN9ZnVuY3Rpb24gcGQoKXt2YXIgYT1BLnBlcmZvcm1hbmNlO2lmKGEmJnliKGEubm93KSlyZXR1cm4gYS5ub3coKX0KZnVuY3Rpb24gcWQoKXt2YXIgYSxiPUEucGVyZm9ybWFuY2U7aWYoYiYmYi5nZXRFbnRyaWVzQnlUeXBlKXRyeXt2YXIgYz1iLmdldEVudHJpZXNCeVR5cGUoIm5hdmlnYXRpb24iKTtjJiZjLmxlbmd0aD4wJiYoYT1jWzBdLnR5cGUpfWNhdGNoKGQpe3JldHVybiJlIn1pZighYSlyZXR1cm4idSI7c3dpdGNoKGEpe2Nhc2UgIm5hdmlnYXRlIjpyZXR1cm4ibiI7Y2FzZSAiYmFja19mb3J3YXJkIjpyZXR1cm4iaCI7Y2FzZSAicmVsb2FkIjpyZXR1cm4iciI7Y2FzZSAicHJlcmVuZGVyIjpyZXR1cm4icCI7ZGVmYXVsdDpyZXR1cm4ieCJ9fWZ1bmN0aW9uIHJkKCl7cmV0dXJuIEEucGVyZm9ybWFuY2V8fHZvaWQgMH1mdW5jdGlvbiBzZCgpe3ZhciBhPUEud2ViUGl4ZWxzTWFuYWdlcjtyZXR1cm4gYT9hLmNyZWF0ZVNob3BpZnlFeHRlbmQhPT12b2lkIDA6ITF9CnZhciBWYz17RXI6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bmV3IEltYWdlKDEsMSk7VGMoZSxkLHt9KTtlLm9ubG9hZD1mdW5jdGlvbigpe2Uub25sb2FkPW51bGw7YiYmYigpfTtlLm9uZXJyb3I9ZnVuY3Rpb24oKXtlLm9uZXJyb3I9bnVsbDtjJiZjKCl9O2Uuc3JjPWE7cmV0dXJuIGV9LEJzOmZ1bmN0aW9uKGEpe3ZhciBiPUIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdfHxCLmJvZHl8fEIuaGVhZDtiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYil9LHd0OmlkfTtmdW5jdGlvbiB0ZChhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpJiZ0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIHVkKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk9PT10aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIHZkKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSl8fHRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gd2QoYSxiKXt2YXIgYz10aGlzLmV2YWx1YXRlKGEpLGQ9dGhpcy5ldmFsdWF0ZShiKTtyZXR1cm4gU3RyaW5nKGMpLmluZGV4T2YoU3RyaW5nKGQpKT4tMX1mdW5jdGlvbiB4ZChhLGIpe3ZhciBjPVN0cmluZyh0aGlzLmV2YWx1YXRlKGEpKSxkPVN0cmluZyh0aGlzLmV2YWx1YXRlKGIpKTtyZXR1cm4gYy5zdWJzdHJpbmcoMCxkLmxlbmd0aCk9PT1kfQpmdW5jdGlvbiB5ZChhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSksZD10aGlzLmV2YWx1YXRlKGIpO3N3aXRjaChjKXtjYXNlICJwYWdlTG9jYXRpb24iOnZhciBlPUEubG9jYXRpb24uaHJlZjtkIGluc3RhbmNlb2Yga2ImJmQuZ2V0KCJzdHJpcFByb3RvY29sIikmJihlPWUucmVwbGFjZSgvXmh0dHBzPzpcL1wvLywiIikpO3JldHVybiBlfX07LyoKIGpRdWVyeSAoYykgMjAwNSwgMjAxMiBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiBqcXVlcnkub3JnL2xpY2Vuc2UuCiovCnZhciB6ZD0vXFtvYmplY3QgKEJvb2xlYW58TnVtYmVyfFN0cmluZ3xGdW5jdGlvbnxBcnJheXxEYXRlfFJlZ0V4cClcXS8sQWQ9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gU3RyaW5nKGEpO3ZhciBiPXpkLmV4ZWMoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE9iamVjdChhKSkpO3JldHVybiBiP2JbMV0udG9Mb3dlckNhc2UoKToib2JqZWN0In0sQmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKE9iamVjdChhKSxiKX0sQ2Q9ZnVuY3Rpb24oYSl7aWYoIWF8fEFkKGEpIT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8YT09YS53aW5kb3cpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFCZChhLCJjb25zdHJ1Y3RvciIpJiYhQmQoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKSlyZXR1cm4hMX1jYXRjaChjKXtyZXR1cm4hMX1mb3IodmFyIGIgaW4gYSk7cmV0dXJuIGI9PT12b2lkIDB8fApCZChhLGIpfSxFZD1mdW5jdGlvbihhLGIpe3ZhciBjPWJ8fChBZChhKT09ImFycmF5Ij9bXTp7fSksZDtmb3IoZCBpbiBhKWlmKEJkKGEsZCkpe3ZhciBlPWFbZF07QWQoZSk9PSJhcnJheSI/KEFkKGNbZF0pIT0iYXJyYXkiJiYoY1tkXT1bXSksY1tkXT1FZChlLGNbZF0pKTpDZChlKT8oQ2QoY1tkXSl8fChjW2RdPXt9KSxjW2RdPUVkKGUsY1tkXSkpOmNbZF09ZX1yZXR1cm4gY307ZnVuY3Rpb24gRmQoYSl7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciImJmE+PTAmJmlzRmluaXRlKGEpJiZhJTE9PT0wfHx0eXBlb2YgYT09PSJzdHJpbmciJiZhWzBdIT09Ii0iJiZhPT09IiIrcGFyc2VJbnQoYSl9O3ZhciBHZD1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/W106YTt0aGlzLmxhPW5ldyBVYTt0aGlzLnZhbHVlcz1bXTt0aGlzLk5hPSExO2Zvcih2YXIgYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJihGZChiKT90aGlzLnZhbHVlc1tOdW1iZXIoYildPWFbTnVtYmVyKGIpXTp0aGlzLmxhLnNldChiLGFbYl0pKX07az1HZC5wcm90b3R5cGU7ay50b1N0cmluZz1mdW5jdGlvbihhKXtpZihhJiZhLmluZGV4T2YodGhpcyk+PTApcmV0dXJuIiI7Zm9yKHZhciBiPVtdLGM9MDtjPHRoaXMudmFsdWVzLmxlbmd0aDtjKyspe3ZhciBkPXRoaXMudmFsdWVzW2NdO2Q9PT1udWxsfHxkPT09dm9pZCAwP2IucHVzaCgiIik6ZCBpbnN0YW5jZW9mIEdkPyhhPWF8fFtdLGEucHVzaCh0aGlzKSxiLnB1c2goZC50b1N0cmluZyhhKSksYS5wb3AoKSk6Yi5wdXNoKFN0cmluZyhkKSl9cmV0dXJuIGIuam9pbigiLCIpfTsKay5zZXQ9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5OYSlpZihhPT09Imxlbmd0aCIpe2lmKCFGZChiKSl0aHJvdyBjYihFcnJvcigiUmFuZ2VFcnJvcjogTGVuZ3RoIHByb3BlcnR5IG11c3QgYmUgYSB2YWxpZCBpbnRlZ2VyLiIpKTt0aGlzLnZhbHVlcy5sZW5ndGg9TnVtYmVyKGIpfWVsc2UgRmQoYSk/dGhpcy52YWx1ZXNbTnVtYmVyKGEpXT1iOnRoaXMubGEuc2V0KGEsYil9O2suZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBhPT09Imxlbmd0aCI/dGhpcy5sZW5ndGgoKTpGZChhKT90aGlzLnZhbHVlc1tOdW1iZXIoYSldOnRoaXMubGEuZ2V0KGEpfTtrLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGh9O2suRmE9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5sYS5GYSgpLGI9MDtiPHRoaXMudmFsdWVzLmxlbmd0aDtiKyspdGhpcy52YWx1ZXMuaGFzT3duUHJvcGVydHkoYikmJmEucHVzaChTdHJpbmcoYikpO3JldHVybiBhfTsKay5oYz1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmxhLmhjKCksYj0wO2I8dGhpcy52YWx1ZXMubGVuZ3RoO2IrKyl0aGlzLnZhbHVlcy5oYXNPd25Qcm9wZXJ0eShiKSYmYS5wdXNoKHRoaXMudmFsdWVzW2JdKTtyZXR1cm4gYX07ay5mYz1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmxhLmZjKCksYj0wO2I8dGhpcy52YWx1ZXMubGVuZ3RoO2IrKyl0aGlzLnZhbHVlcy5oYXNPd25Qcm9wZXJ0eShiKSYmYS5wdXNoKFtTdHJpbmcoYiksdGhpcy52YWx1ZXNbYl1dKTtyZXR1cm4gYX07ay5yZW1vdmU9ZnVuY3Rpb24oYSl7RmQoYSk/ZGVsZXRlIHRoaXMudmFsdWVzW051bWJlcihhKV06dGhpcy5OYXx8dGhpcy5sYS5yZW1vdmUoYSl9O2sucG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLnBvcCgpfTtrLnB1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMucHVzaC5hcHBseSh0aGlzLnZhbHVlcyx3KE9hLmFwcGx5KDAsYXJndW1lbnRzKSkpfTtrLnNoaWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLnNoaWZ0KCl9OwprLnNwbGljZT1mdW5jdGlvbihhLGIpe3ZhciBjPU9hLmFwcGx5KDIsYXJndW1lbnRzKTtyZXR1cm4gYj09PXZvaWQgMCYmYy5sZW5ndGg9PT0wP25ldyBHZCh0aGlzLnZhbHVlcy5zcGxpY2UoYSkpOm5ldyBHZCh0aGlzLnZhbHVlcy5zcGxpY2UuYXBwbHkodGhpcy52YWx1ZXMsW2EsYnx8MF0uY29uY2F0KHcoYykpKSl9O2sudW5zaGlmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy51bnNoaWZ0LmFwcGx5KHRoaXMudmFsdWVzLHcoT2EuYXBwbHkoMCxhcmd1bWVudHMpKSl9O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiBGZChhKSYmdGhpcy52YWx1ZXMuaGFzT3duUHJvcGVydHkoYSl8fHRoaXMubGEuaGFzKGEpfTtrLlphPWZ1bmN0aW9uKCl7dGhpcy5OYT0hMDtPYmplY3QuZnJlZXplKHRoaXMudmFsdWVzKX07ay5IYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk5hfTsKZnVuY3Rpb24gSGQoYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoKCk7YysrKWEuaGFzKGMpJiYoYltjXT1hLmdldChjKSk7cmV0dXJuIGJ9O3ZhciBJZD1mdW5jdGlvbihhLGIpe3RoaXMuZnVuY3Rpb25OYW1lPWE7dGhpcy5pZT1iO3RoaXMubGE9bmV3IFVhO3RoaXMuTmE9ITF9O2s9SWQucHJvdG90eXBlO2sudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mdW5jdGlvbk5hbWV9O2suZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZ1bmN0aW9uTmFtZX07ay5nZXRLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBHZCh0aGlzLkZhKCkpfTtrLmludm9rZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pZS5jYWxsLmFwcGx5KHRoaXMuaWUsW25ldyBKZCh0aGlzLGEpXS5jb25jYXQodyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKSl9O2suYXBwbHk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pZS5hcHBseShuZXcgSmQodGhpcyxhKSxiKX07ay5OYz1mdW5jdGlvbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7dHJ5e3JldHVybiB0aGlzLmludm9rZS5hcHBseSh0aGlzLFthXS5jb25jYXQodyhiKSkpfWNhdGNoKGMpe319OwprLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5nZXQoYSl9O2suc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5OYXx8dGhpcy5sYS5zZXQoYSxiKX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuaGFzKGEpfTtrLnJlbW92ZT1mdW5jdGlvbihhKXt0aGlzLk5hfHx0aGlzLmxhLnJlbW92ZShhKX07ay5GYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLkZhKCl9O2suaGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5oYygpfTtrLmZjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuZmMoKX07ay5aYT1mdW5jdGlvbigpe3RoaXMuTmE9ITB9O2suSGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07dmFyIEtkPWZ1bmN0aW9uKGEsYil7SWQuY2FsbCh0aGlzLGEsYil9O3dhKEtkLElkKTt2YXIgTGQ9ZnVuY3Rpb24oYSxiKXtJZC5jYWxsKHRoaXMsYSxiKX07d2EoTGQsSWQpO3ZhciBKZD1mdW5jdGlvbihhLGIpe3RoaXMuaWU9YTt0aGlzLlQ9Yn07CkpkLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLlQ7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/ZmIoYixhKTphfTtKZC5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmllLmdldE5hbWUoKX07SmQucHJvdG90eXBlLmplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVC5qZSgpfTt2YXIgTWQ9ZnVuY3Rpb24oKXt0aGlzLm1hcD1uZXcgTWFwfTtNZC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5tYXAuc2V0KGEsYil9O01kLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWFwLmdldChhKX07dmFyIE5kPWZ1bmN0aW9uKCl7dGhpcy5rZXlzPVtdO3RoaXMudmFsdWVzPVtdfTtOZC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5rZXlzLnB1c2goYSk7dGhpcy52YWx1ZXMucHVzaChiKX07TmQucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmtleXMuaW5kZXhPZihhKTtpZihiPi0xKXJldHVybiB0aGlzLnZhbHVlc1tiXX07ZnVuY3Rpb24gT2QoKXt0cnl7cmV0dXJuIE1hcD9uZXcgTWQ6bmV3IE5kfWNhdGNoKGEpe3JldHVybiBuZXcgTmR9fTt2YXIgUGQ9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIFBkKXJldHVybiBhO3ZhciBiO2E6aWYoYT09dm9pZCAwfHxBcnJheS5pc0FycmF5KGEpfHxDZChhKSliPSEwO2Vsc2V7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJib29sZWFuIjpjYXNlICJudW1iZXIiOmNhc2UgInN0cmluZyI6Y2FzZSAiZnVuY3Rpb24iOmI9ITA7YnJlYWsgYX1iPSExfWlmKGIpdGhyb3cgRXJyb3IoIlR5cGUgb2YgZ2l2ZW4gdmFsdWUgaGFzIGFuIGVxdWl2YWxlbnQgUGl4aWUgdHlwZS4iKTt0aGlzLnZhbHVlPWF9O1BkLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfTtQZC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpfTt2YXIgU2Q9ZnVuY3Rpb24oYSl7dGhpcy5wcm9taXNlPWE7dGhpcy5OYT0hMTt0aGlzLmxhPW5ldyBVYTt0aGlzLmxhLnNldCgidGhlbiIsUmQodGhpcykpO3RoaXMubGEuc2V0KCJjYXRjaCIsUmQodGhpcywhMCkpO3RoaXMubGEuc2V0KCJmaW5hbGx5IixSZCh0aGlzLCExLCEwKSl9O2s9U2QucHJvdG90eXBlO2suZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmdldChhKX07ay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLk5hfHx0aGlzLmxhLnNldChhLGIpfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5oYXMoYSl9O2sucmVtb3ZlPWZ1bmN0aW9uKGEpe3RoaXMuTmF8fHRoaXMubGEucmVtb3ZlKGEpfTtrLkZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuRmEoKX07ay5oYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmhjKCl9O2suZmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5mYygpfTsKdmFyIFJkPWZ1bmN0aW9uKGEsYixjKXtiPWI9PT12b2lkIDA/ITE6YjtjPWM9PT12b2lkIDA/ITE6YztyZXR1cm4gbmV3IEtkKCIiLGZ1bmN0aW9uKGQsZSl7YiYmKGU9ZCxkPXZvaWQgMCk7YyYmKGU9ZCk7ZCBpbnN0YW5jZW9mIEtkfHwoZD12b2lkIDApO2UgaW5zdGFuY2VvZiBLZHx8KGU9dm9pZCAwKTt2YXIgZj10aGlzLlQud2IoKSxnPWZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbihuKXt0cnl7cmV0dXJuIGM/KGwuaW52b2tlKGYpLGEucHJvbWlzZSk6bC5pbnZva2UoZixuKX1jYXRjaChwKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QocCBpbnN0YW5jZW9mIEVycm9yP25ldyBQZChwKTpTdHJpbmcocCkpfX19LGg9YS5wcm9taXNlLnRoZW4oZCYmZyhkKSxlJiZnKGUpKTtyZXR1cm4gbmV3IFNkKGgpfSl9O1NkLnByb3RvdHlwZS5aYT1mdW5jdGlvbigpe3RoaXMuTmE9ITB9O1NkLnByb3RvdHlwZS5IYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk5hfTtmdW5jdGlvbiBUZChhLGIsYyl7dmFyIGQ9T2QoKSxlPWZ1bmN0aW9uKGcsaCl7Zm9yKHZhciBsPWcuRmEoKSxuPTA7bjxsLmxlbmd0aDtuKyspaFtsW25dXT1mKGcuZ2V0KGxbbl0pKX0sZj1mdW5jdGlvbihnKXtpZihnPT09bnVsbHx8Zz09PXZvaWQgMClyZXR1cm4gZzt2YXIgaD1kLmdldChnKTtpZihoKXJldHVybiBoO2lmKGcgaW5zdGFuY2VvZiBHZCl7dmFyIGw9W107ZC5zZXQoZyxsKTtmb3IodmFyIG49Zy5GYSgpLHA9MDtwPG4ubGVuZ3RoO3ArKylsW25bcF1dPWYoZy5nZXQobltwXSkpO3JldHVybiBsfWlmKGcgaW5zdGFuY2VvZiBTZClyZXR1cm4gZy5wcm9taXNlLnRoZW4oZnVuY3Rpb24odSl7cmV0dXJuIFRkKHUsYiwxKX0sZnVuY3Rpb24odSl7cmV0dXJuIFByb21pc2UucmVqZWN0KFRkKHUsYiwxKSl9KTtpZihnIGluc3RhbmNlb2Yga2Ipe3ZhciBxPXt9O2Quc2V0KGcscSk7ZShnLHEpO3JldHVybiBxfWlmKGcgaW5zdGFuY2VvZiBLZCl7dmFyIHI9ZnVuY3Rpb24oKXtmb3IodmFyIHU9CltdLHY9MDt2PGFyZ3VtZW50cy5sZW5ndGg7disrKXVbdl09VWQoYXJndW1lbnRzW3ZdLGIsYyk7dmFyIHg9bmV3IGhiKGI/Yi5qZSgpOm5ldyBXYSk7YiYmeC51ZShiLnhiKCkpO3JldHVybiBmKGcuYXBwbHkoeCx1KSl9O2Quc2V0KGcscik7ZShnLHIpO3JldHVybiByfXZhciB0PSExO3N3aXRjaChjKXtjYXNlIDE6dD0hMDticmVhaztjYXNlIDI6dD0hMTticmVhaztjYXNlIDM6dD0hMTticmVhaztkZWZhdWx0On1pZihnIGluc3RhbmNlb2YgUGQmJnQpcmV0dXJuIGcuZ2V0VmFsdWUoKTtzd2l0Y2godHlwZW9mIGcpe2Nhc2UgImJvb2xlYW4iOmNhc2UgIm51bWJlciI6Y2FzZSAic3RyaW5nIjpjYXNlICJ1bmRlZmluZWQiOnJldHVybiBnO2Nhc2UgIm9iamVjdCI6aWYoZz09PQpudWxsKXJldHVybiBudWxsfX07cmV0dXJuIGYoYSl9CmZ1bmN0aW9uIFVkKGEsYixjKXt2YXIgZD1PZCgpLGU9ZnVuY3Rpb24oZyxoKXtmb3IodmFyIGwgaW4gZylnLmhhc093blByb3BlcnR5KGwpJiZoLnNldChsLGYoZ1tsXSkpfSxmPWZ1bmN0aW9uKGcpe3ZhciBoPWQuZ2V0KGcpO2lmKGgpcmV0dXJuIGg7aWYoQXJyYXkuaXNBcnJheShnKXx8SGIoZykpe3ZhciBsPW5ldyBHZDtkLnNldChnLGwpO2Zvcih2YXIgbiBpbiBnKWcuaGFzT3duUHJvcGVydHkobikmJmwuc2V0KG4sZihnW25dKSk7cmV0dXJuIGx9aWYoQ2QoZykpe3ZhciBwPW5ldyBrYjtkLnNldChnLHApO2UoZyxwKTtyZXR1cm4gcH1pZih0eXBlb2YgZz09PSJmdW5jdGlvbiIpe3ZhciBxPW5ldyBLZCgiIixmdW5jdGlvbigpe2Zvcih2YXIgdT1PYS5hcHBseSgwLGFyZ3VtZW50cyksdj1bXSx4PTA7eDx1Lmxlbmd0aDt4Kyspdlt4XT1UZCh0aGlzLmV2YWx1YXRlKHVbeF0pLGIsYyk7cmV0dXJuIGYodGhpcy5ULlBqKCkoZyxnLHYpKX0pO2Quc2V0KGcscSk7ZShnLHEpO3JldHVybiBxfXZhciByPXR5cGVvZiBnO2lmKGc9PT1udWxsfHxyPT09InN0cmluZyJ8fHI9PT0ibnVtYmVyInx8cj09PSJib29sZWFuIilyZXR1cm4gZzt2YXIgdD0hMTtzd2l0Y2goYyl7Y2FzZSAxOnQ9ITA7YnJlYWs7Y2FzZSAyOnQ9ITE7YnJlYWs7ZGVmYXVsdDp9aWYoZyE9PXZvaWQgMCYmdClyZXR1cm4gbmV3IFBkKGcpfTtyZXR1cm4gZihhKX07dmFyIFZkPXtzdXBwb3J0ZWRNZXRob2RzOiJjb25jYXQgZXZlcnkgZmlsdGVyIGZvckVhY2ggaGFzT3duUHJvcGVydHkgaW5kZXhPZiBqb2luIGxhc3RJbmRleE9mIG1hcCBwb3AgcHVzaCByZWR1Y2UgcmVkdWNlUmlnaHQgcmV2ZXJzZSBzaGlmdCBzbGljZSBzb21lIHNvcnQgc3BsaWNlIHVuc2hpZnQgdG9TdHJpbmciLnNwbGl0KCIgIiksY29uY2F0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzx0aGlzLmxlbmd0aCgpO2MrKyliLnB1c2godGhpcy5nZXQoYykpO2Zvcih2YXIgZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspaWYoYXJndW1lbnRzW2RdaW5zdGFuY2VvZiBHZClmb3IodmFyIGU9YXJndW1lbnRzW2RdLGY9MDtmPGUubGVuZ3RoKCk7ZisrKWIucHVzaChlLmdldChmKSk7ZWxzZSBiLnB1c2goYXJndW1lbnRzW2RdKTtyZXR1cm4gbmV3IEdkKGIpfSxldmVyeTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmxlbmd0aCgpLGQ9MDtkPHRoaXMubGVuZ3RoKCkmJgpkPGM7ZCsrKWlmKHRoaXMuaGFzKGQpJiYhYi5pbnZva2UoYSx0aGlzLmdldChkKSxkLHRoaXMpKXJldHVybiExO3JldHVybiEwfSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5sZW5ndGgoKSxkPVtdLGU9MDtlPHRoaXMubGVuZ3RoKCkmJmU8YztlKyspdGhpcy5oYXMoZSkmJmIuaW52b2tlKGEsdGhpcy5nZXQoZSksZSx0aGlzKSYmZC5wdXNoKHRoaXMuZ2V0KGUpKTtyZXR1cm4gbmV3IEdkKGQpfSxmb3JFYWNoOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMubGVuZ3RoKCksZD0wO2Q8dGhpcy5sZW5ndGgoKSYmZDxjO2QrKyl0aGlzLmhhcyhkKSYmYi5pbnZva2UoYSx0aGlzLmdldChkKSxkLHRoaXMpfSxoYXNPd25Qcm9wZXJ0eTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmhhcyhiKX0saW5kZXhPZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5sZW5ndGgoKSxlPWM9PT12b2lkIDA/MDpOdW1iZXIoYyk7ZTwwJiYoZT1NYXRoLm1heChkK2UsMCkpO2Zvcih2YXIgZj0KZTtmPGQ7ZisrKWlmKHRoaXMuaGFzKGYpJiZ0aGlzLmdldChmKT09PWIpcmV0dXJuIGY7cmV0dXJuLTF9LGpvaW46ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8dGhpcy5sZW5ndGgoKTtkKyspYy5wdXNoKHRoaXMuZ2V0KGQpKTtyZXR1cm4gYy5qb2luKGIpfSxsYXN0SW5kZXhPZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5sZW5ndGgoKSxlPWQtMTtjIT09dm9pZCAwJiYoZT1jPDA/ZCtjOk1hdGgubWluKGMsZSkpO2Zvcih2YXIgZj1lO2Y+PTA7Zi0tKWlmKHRoaXMuaGFzKGYpJiZ0aGlzLmdldChmKT09PWIpcmV0dXJuIGY7cmV0dXJuLTF9LG1hcDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmxlbmd0aCgpLGQ9W10sZT0wO2U8dGhpcy5sZW5ndGgoKSYmZTxjO2UrKyl0aGlzLmhhcyhlKSYmKGRbZV09Yi5pbnZva2UoYSx0aGlzLmdldChlKSxlLHRoaXMpKTtyZXR1cm4gbmV3IEdkKGQpfSxwb3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3AoKX0scHVzaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoLmFwcGx5KHRoaXMsCncoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSl9LHJlZHVjZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5sZW5ndGgoKSxlLGY9MDtpZihjIT09dm9pZCAwKWU9YztlbHNle2lmKGQ9PT0wKXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IFJlZHVjZSBvbiBMaXN0IHdpdGggbm8gZWxlbWVudHMuIikpO2Zvcih2YXIgZz0wO2c8ZDtnKyspaWYodGhpcy5oYXMoZykpe2U9dGhpcy5nZXQoZyk7Zj1nKzE7YnJlYWt9aWYoZz09PWQpdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogUmVkdWNlIG9uIExpc3Qgd2l0aCBubyBlbGVtZW50cy4iKSk7fWZvcih2YXIgaD1mO2g8ZDtoKyspdGhpcy5oYXMoaCkmJihlPWIuaW52b2tlKGEsZSx0aGlzLmdldChoKSxoLHRoaXMpKTtyZXR1cm4gZX0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMubGVuZ3RoKCksZSxmPWQtMTtpZihjIT09dm9pZCAwKWU9YztlbHNle2lmKGQ9PT0wKXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IFJlZHVjZVJpZ2h0IG9uIExpc3Qgd2l0aCBubyBlbGVtZW50cy4iKSk7CmZvcih2YXIgZz0xO2c8PWQ7ZysrKWlmKHRoaXMuaGFzKGQtZykpe2U9dGhpcy5nZXQoZC1nKTtmPWQtKGcrMSk7YnJlYWt9aWYoZz5kKXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IFJlZHVjZVJpZ2h0IG9uIExpc3Qgd2l0aCBubyBlbGVtZW50cy4iKSk7fWZvcih2YXIgaD1mO2g+PTA7aC0tKXRoaXMuaGFzKGgpJiYoZT1iLmludm9rZShhLGUsdGhpcy5nZXQoaCksaCx0aGlzKSk7cmV0dXJuIGV9LHJldmVyc2U6ZnVuY3Rpb24oKXtmb3IodmFyIGE9SGQodGhpcyksYj1hLmxlbmd0aC0xLGM9MDtiPj0wO2ItLSxjKyspYS5oYXNPd25Qcm9wZXJ0eShiKT90aGlzLnNldChjLGFbYl0pOnRoaXMucmVtb3ZlKGMpO3JldHVybiB0aGlzfSxzaGlmdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoaWZ0KCl9LHNsaWNlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpO2I9PT12b2lkIDAmJihiPTApO2I9YjwwP01hdGgubWF4KGQrYiwwKTpNYXRoLm1pbihiLGQpO2M9Yz09PQp2b2lkIDA/ZDpjPDA/TWF0aC5tYXgoZCtjLDApOk1hdGgubWluKGMsZCk7Yz1NYXRoLm1heChiLGMpO2Zvcih2YXIgZT1bXSxmPWI7ZjxjO2YrKyllLnB1c2godGhpcy5nZXQoZikpO3JldHVybiBuZXcgR2QoZSl9LHNvbWU6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5sZW5ndGgoKSxkPTA7ZDx0aGlzLmxlbmd0aCgpJiZkPGM7ZCsrKWlmKHRoaXMuaGFzKGQpJiZiLmludm9rZShhLHRoaXMuZ2V0KGQpLGQsdGhpcykpcmV0dXJuITA7cmV0dXJuITF9LHNvcnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1IZCh0aGlzKTtiPT09dm9pZCAwP2Muc29ydCgpOmMuc29ydChmdW5jdGlvbihlLGYpe3JldHVybiBOdW1iZXIoYi5pbnZva2UoYSxlLGYpKX0pO2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWMuaGFzT3duUHJvcGVydHkoZCk/dGhpcy5zZXQoZCxjW2RdKTp0aGlzLnJlbW92ZShkKTtyZXR1cm4gdGhpc30sc3BsaWNlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5zcGxpY2UuYXBwbHkodGhpcywKW2IsY10uY29uY2F0KHcoT2EuYXBwbHkoMyxhcmd1bWVudHMpKSkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9LHVuc2hpZnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudW5zaGlmdC5hcHBseSh0aGlzLHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSl9fTt2YXIgV2Q9e2NoYXJBdDoxLGNvbmNhdDoxLGluZGV4T2Y6MSxsYXN0SW5kZXhPZjoxLG1hdGNoOjEscmVwbGFjZToxLHNlYXJjaDoxLHNsaWNlOjEsc3BsaXQ6MSxzdWJzdHJpbmc6MSx0b0xvd2VyQ2FzZToxLHRvTG9jYWxlTG93ZXJDYXNlOjEsdG9TdHJpbmc6MSx0b1VwcGVyQ2FzZToxLHRvTG9jYWxlVXBwZXJDYXNlOjEsdHJpbToxfSxYZD1uZXcgVGEoImJyZWFrIiksWWQ9bmV3IFRhKCJjb250aW51ZSIpO2Z1bmN0aW9uIFpkKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkrdGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiAkZChhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpJiZ0aGlzLmV2YWx1YXRlKGIpfQpmdW5jdGlvbiBhZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpO2lmKCEoZiBpbnN0YW5jZW9mIEdkKSl0aHJvdyBFcnJvcigiRXJyb3I6IE5vbi1MaXN0IGFyZ3VtZW50IGdpdmVuIHRvIEFwcGx5IGluc3RydWN0aW9uLiIpO2lmKGQ9PT1udWxsfHxkPT09dm9pZCAwKXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IENhbid0IHJlYWQgcHJvcGVydHkgIitlKyIgb2YgIitkKyIuIikpO3ZhciBnPXR5cGVvZiBkPT09Im51bWJlciI7aWYodHlwZW9mIGQ9PT0iYm9vbGVhbiJ8fGcpe2lmKGU9PT0idG9TdHJpbmciKXtpZihnJiZmLmxlbmd0aCgpKXt2YXIgaD1UZChmLmdldCgwKSk7dHJ5e3JldHVybiBkLnRvU3RyaW5nKGgpfWNhdGNoKHUpe319cmV0dXJuIGQudG9TdHJpbmcoKX10aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiAiK2QrIi4iK2UrIiBpcyBub3QgYSBmdW5jdGlvbi4iKSk7fWlmKHR5cGVvZiBkPT09CiJzdHJpbmciKXtpZihXZC5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGw9VGQoZix2b2lkIDAsMSk7cmV0dXJuIFVkKGRbZV0uYXBwbHkoZCxsKSx0aGlzLlQpfXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6ICIrZSsiIGlzIG5vdCBhIGZ1bmN0aW9uIikpO31pZihkIGluc3RhbmNlb2YgR2Qpe2lmKGQuaGFzKGUpKXt2YXIgbj1kLmdldChTdHJpbmcoZSkpO2lmKG4gaW5zdGFuY2VvZiBLZCl7dmFyIHA9SGQoZik7cmV0dXJuIG4uYXBwbHkodGhpcy5ULHApfXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6ICIrZSsiIGlzIG5vdCBhIGZ1bmN0aW9uIikpO31pZihWZC5zdXBwb3J0ZWRNZXRob2RzLmluZGV4T2YoZSk+PTApe3ZhciBxPUhkKGYpO3JldHVybiBWZFtlXS5jYWxsLmFwcGx5KFZkW2VdLFtkLHRoaXMuVF0uY29uY2F0KHcocSkpKX19aWYoZCBpbnN0YW5jZW9mIEtkfHxkIGluc3RhbmNlb2Yga2J8fGQgaW5zdGFuY2VvZiBTZCl7aWYoZC5oYXMoZSkpe3ZhciByPWQuZ2V0KGUpOwppZihyIGluc3RhbmNlb2YgS2Qpe3ZhciB0PUhkKGYpO3JldHVybiByLmFwcGx5KHRoaXMuVCx0KX10aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiAiK2UrIiBpcyBub3QgYSBmdW5jdGlvbiIpKTt9aWYoZT09PSJ0b1N0cmluZyIpcmV0dXJuIGQgaW5zdGFuY2VvZiBLZD9kLmdldE5hbWUoKTpkLnRvU3RyaW5nKCk7aWYoZT09PSJoYXNPd25Qcm9wZXJ0eSIpcmV0dXJuIGQuaGFzKGYuZ2V0KDApKX1pZihkIGluc3RhbmNlb2YgUGQmJmU9PT0idG9TdHJpbmciKXJldHVybiBkLnRvU3RyaW5nKCk7dGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogT2JqZWN0IGhhcyBubyAnIitlKyInIHByb3BlcnR5LiIpKTt9CmZ1bmN0aW9uIGJlKGEsYil7YT10aGlzLmV2YWx1YXRlKGEpO2lmKHR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgRXJyb3IoIkludmFsaWQga2V5IG5hbWUgZ2l2ZW4gZm9yIGFzc2lnbm1lbnQuIik7dmFyIGM9dGhpcy5UO2lmKCFjLmhhcyhhKSl0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhc3NpZ24gdG8gdW5kZWZpbmVkIHZhbHVlICIrYik7dmFyIGQ9dGhpcy5ldmFsdWF0ZShiKTtjLnNldChhLGQpO3JldHVybiBkfWZ1bmN0aW9uIGNlKCl7dmFyIGE9T2EuYXBwbHkoMCxhcmd1bWVudHMpLGI9dGhpcy5ULndiKCksYz1lYihiLGEpO2lmKGMgaW5zdGFuY2VvZiBUYSlyZXR1cm4gY31mdW5jdGlvbiBkZSgpe3JldHVybiBYZH1mdW5jdGlvbiBlZShhKXtmb3IodmFyIGI9dGhpcy5ldmFsdWF0ZShhKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPXRoaXMuZXZhbHVhdGUoYltjXSk7aWYoZCBpbnN0YW5jZW9mIFRhKXJldHVybiBkfX0KZnVuY3Rpb24gZmUoKXtmb3IodmFyIGE9dGhpcy5ULGI9MDtiPGFyZ3VtZW50cy5sZW5ndGgtMTtiKz0yKXt2YXIgYz1hcmd1bWVudHNbYl07aWYodHlwZW9mIGM9PT0ic3RyaW5nIil7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhcmd1bWVudHNbYisxXSk7YS5RaChjLGQpfX19ZnVuY3Rpb24gZ2UoKXtyZXR1cm4gWWR9ZnVuY3Rpb24gaGUoYSxiKXtyZXR1cm4gbmV3IFRhKGEsdGhpcy5ldmFsdWF0ZShiKSl9ZnVuY3Rpb24gaWUoYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyksZDtkPW5ldyBHZDtmb3IodmFyIGU9dGhpcy5ldmFsdWF0ZShiKSxmPTA7ZjxlLmxlbmd0aDtmKyspZC5wdXNoKGVbZl0pO3ZhciBnPVs1MSxhLGRdLmNvbmNhdCh3KGMpKTt0aGlzLlQuYWRkKGEsdGhpcy5ldmFsdWF0ZShnKSl9ZnVuY3Rpb24gamUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKS90aGlzLmV2YWx1YXRlKGIpfQpmdW5jdGlvbiBrZShhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSksZD10aGlzLmV2YWx1YXRlKGIpLGU9YyBpbnN0YW5jZW9mIFBkLGY9ZCBpbnN0YW5jZW9mIFBkO3JldHVybiBlfHxmP2UmJmY/Yy5nZXRWYWx1ZSgpPT09ZC5nZXRWYWx1ZSgpOiExOmM9PWR9ZnVuY3Rpb24gbGUoKXtmb3IodmFyIGEsYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspYT10aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiXSk7cmV0dXJuIGF9ZnVuY3Rpb24gbWUoYSxiLGMsZCl7Zm9yKHZhciBlPTA7ZTxiKCk7ZSsrKXt2YXIgZj1hKGMoZSkpLGc9ZWIoZixkKTtpZihnIGluc3RhbmNlb2YgVGEpe2lmKGcudHlwZT09PSJicmVhayIpYnJlYWs7aWYoZy50eXBlPT09InJldHVybiIpcmV0dXJuIGd9fX0KZnVuY3Rpb24gbmUoYSxiLGMpe2lmKHR5cGVvZiBiPT09InN0cmluZyIpcmV0dXJuIG1lKGEsZnVuY3Rpb24oKXtyZXR1cm4gYi5sZW5ndGh9LGZ1bmN0aW9uKGYpe3JldHVybiBmfSxjKTtpZihiIGluc3RhbmNlb2Yga2J8fGIgaW5zdGFuY2VvZiBTZHx8YiBpbnN0YW5jZW9mIEdkfHxiIGluc3RhbmNlb2YgS2Qpe3ZhciBkPWIuRmEoKSxlPWQubGVuZ3RoO3JldHVybiBtZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGZ1bmN0aW9uKGYpe3JldHVybiBkW2ZdfSxjKX19ZnVuY3Rpb24gb2UoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKSxnPXRoaXMuVDtyZXR1cm4gbmUoZnVuY3Rpb24oaCl7Zy5zZXQoZCxoKTtyZXR1cm4gZ30sZSxmKX0KZnVuY3Rpb24gcGUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKSxnPXRoaXMuVDtyZXR1cm4gbmUoZnVuY3Rpb24oaCl7dmFyIGw9Zy53YigpO2wuUWgoZCxoKTtyZXR1cm4gbH0sZSxmKX1mdW5jdGlvbiBxZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBuZShmdW5jdGlvbihoKXt2YXIgbD1nLndiKCk7bC5hZGQoZCxoKTtyZXR1cm4gbH0sZSxmKX1mdW5jdGlvbiByZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBzZShmdW5jdGlvbihoKXtnLnNldChkLGgpO3JldHVybiBnfSxlLGYpfQpmdW5jdGlvbiB0ZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBzZShmdW5jdGlvbihoKXt2YXIgbD1nLndiKCk7bC5RaChkLGgpO3JldHVybiBsfSxlLGYpfWZ1bmN0aW9uIHVlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIHNlKGZ1bmN0aW9uKGgpe3ZhciBsPWcud2IoKTtsLmFkZChkLGgpO3JldHVybiBsfSxlLGYpfQpmdW5jdGlvbiBzZShhLGIsYyl7aWYodHlwZW9mIGI9PT0ic3RyaW5nIilyZXR1cm4gbWUoYSxmdW5jdGlvbigpe3JldHVybiBiLmxlbmd0aH0sZnVuY3Rpb24oZCl7cmV0dXJuIGJbZF19LGMpO2lmKGIgaW5zdGFuY2VvZiBHZClyZXR1cm4gbWUoYSxmdW5jdGlvbigpe3JldHVybiBiLmxlbmd0aCgpfSxmdW5jdGlvbihkKXtyZXR1cm4gYi5nZXQoZCl9LGMpO3Rocm93IGNiKEVycm9yKCJUaGUgdmFsdWUgaXMgbm90IGl0ZXJhYmxlLiIpKTt9CmZ1bmN0aW9uIHZlKGEsYixjLGQpe2Z1bmN0aW9uIGUocSxyKXtmb3IodmFyIHQ9MDt0PGYubGVuZ3RoKCk7dCsrKXt2YXIgdT1mLmdldCh0KTtyLmFkZCh1LHEuZ2V0KHUpKX19dmFyIGY9dGhpcy5ldmFsdWF0ZShhKTtpZighKGYgaW5zdGFuY2VvZiBHZCkpdGhyb3cgRXJyb3IoIlR5cGVFcnJvcjogTm9uLUxpc3QgYXJndW1lbnQgZ2l2ZW4gdG8gRm9yTGV0IGluc3RydWN0aW9uLiIpO3ZhciBnPXRoaXMuVCxoPXRoaXMuZXZhbHVhdGUoZCksbD1nLndiKCk7Zm9yKGUoZyxsKTtmYihsLGIpOyl7dmFyIG49ZWIobCxoKTtpZihuIGluc3RhbmNlb2YgVGEpe2lmKG4udHlwZT09PSJicmVhayIpYnJlYWs7aWYobi50eXBlPT09InJldHVybiIpcmV0dXJuIG59dmFyIHA9Zy53YigpO2UobCxwKTtmYihwLGMpO2w9cH19CmZ1bmN0aW9uIHdlKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpLGQ9dGhpcy5ULGU9dGhpcy5ldmFsdWF0ZShiKTtpZighKGUgaW5zdGFuY2VvZiBHZCkpdGhyb3cgRXJyb3IoIkVycm9yOiBub24tTGlzdCB2YWx1ZSBnaXZlbiBmb3IgRm4gYXJndW1lbnQgbmFtZXMuIik7cmV0dXJuIG5ldyBLZChhLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGY9T2EuYXBwbHkoMCxhcmd1bWVudHMpLGc9ZC53YigpO2cueGIoKT09PXZvaWQgMCYmZy51ZSh0aGlzLlQueGIoKSk7Zm9yKHZhciBoPVtdLGw9MDtsPGYubGVuZ3RoO2wrKyl7dmFyIG49dGhpcy5ldmFsdWF0ZShmW2xdKTtoW2xdPW59Zm9yKHZhciBwPWUuZ2V0KCJsZW5ndGgiKSxxPTA7cTxwO3ErKylxPGgubGVuZ3RoP2cuYWRkKGUuZ2V0KHEpLGhbcV0pOmcuYWRkKGUuZ2V0KHEpLHZvaWQgMCk7Zy5hZGQoImFyZ3VtZW50cyIsbmV3IEdkKGgpKTt2YXIgcj1lYihnLGMpO2lmKHIgaW5zdGFuY2VvZiBUYSlyZXR1cm4gci50eXBlPT09CiJyZXR1cm4iP3IuZGF0YTpyfX0oKSl9ZnVuY3Rpb24geGUoYSl7dmFyIGI9dGhpcy5ldmFsdWF0ZShhKSxjPXRoaXMuVDtpZih5ZSYmIWMuaGFzKGIpKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihiKyIgaXMgbm90IGRlZmluZWQuIik7cmV0dXJuIGMuZ2V0KGIpfQpmdW5jdGlvbiB6ZShhLGIpe3ZhciBjLGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYik7aWYoZD09PXZvaWQgMHx8ZD09PW51bGwpdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogQ2Fubm90IHJlYWQgcHJvcGVydGllcyBvZiAiK2QrIiAocmVhZGluZyAnIitlKyInKSIpKTtpZihkIGluc3RhbmNlb2Yga2J8fGQgaW5zdGFuY2VvZiBTZHx8ZCBpbnN0YW5jZW9mIEdkfHxkIGluc3RhbmNlb2YgS2QpYz1kLmdldChlKTtlbHNlIGlmKHR5cGVvZiBkPT09InN0cmluZyIpZT09PSJsZW5ndGgiP2M9ZC5sZW5ndGg6RmQoZSkmJihjPWRbZV0pO2Vsc2UgaWYoZCBpbnN0YW5jZW9mIFBkKXJldHVybjtyZXR1cm4gY31mdW5jdGlvbiBBZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpPnRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gQmUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKT49dGhpcy5ldmFsdWF0ZShiKX0KZnVuY3Rpb24gQ2UoYSxiKXt2YXIgYz10aGlzLmV2YWx1YXRlKGEpLGQ9dGhpcy5ldmFsdWF0ZShiKTtjIGluc3RhbmNlb2YgUGQmJihjPWMuZ2V0VmFsdWUoKSk7ZCBpbnN0YW5jZW9mIFBkJiYoZD1kLmdldFZhbHVlKCkpO3JldHVybiBjPT09ZH1mdW5jdGlvbiBEZShhLGIpe3JldHVybiFDZS5jYWxsKHRoaXMsYSxiKX1mdW5jdGlvbiBFZShhLGIsYyl7dmFyIGQ9W107dGhpcy5ldmFsdWF0ZShhKT9kPXRoaXMuZXZhbHVhdGUoYik6YyYmKGQ9dGhpcy5ldmFsdWF0ZShjKSk7dmFyIGU9ZWIodGhpcy5ULGQpO2lmKGUgaW5zdGFuY2VvZiBUYSlyZXR1cm4gZX12YXIgeWU9ITE7CmZ1bmN0aW9uIEZlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk8dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiBHZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpPD10aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIEhlKCl7Zm9yKHZhciBhPW5ldyBHZCxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKyl7dmFyIGM9dGhpcy5ldmFsdWF0ZShhcmd1bWVudHNbYl0pO2EucHVzaChjKX1yZXR1cm4gYX1mdW5jdGlvbiBJZSgpe2Zvcih2YXIgYT1uZXcga2IsYj0wO2I8YXJndW1lbnRzLmxlbmd0aC0xO2IrPTIpe3ZhciBjPVN0cmluZyh0aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiXSkpLGQ9dGhpcy5ldmFsdWF0ZShhcmd1bWVudHNbYisxXSk7YS5zZXQoYyxkKX1yZXR1cm4gYX1mdW5jdGlvbiBKZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpJXRoaXMuZXZhbHVhdGUoYil9CmZ1bmN0aW9uIEtlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkqdGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiBMZShhKXtyZXR1cm4tdGhpcy5ldmFsdWF0ZShhKX1mdW5jdGlvbiBNZShhKXtyZXR1cm4hdGhpcy5ldmFsdWF0ZShhKX1mdW5jdGlvbiBOZShhLGIpe3JldHVybiFrZS5jYWxsKHRoaXMsYSxiKX1mdW5jdGlvbiBPZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIFBlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSl8fHRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gUWUoYSxiKXt2YXIgYz10aGlzLmV2YWx1YXRlKGEpO3RoaXMuZXZhbHVhdGUoYik7cmV0dXJuIGN9ZnVuY3Rpb24gUmUoYSl7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSl9ZnVuY3Rpb24gU2UoKXtyZXR1cm4gT2EuYXBwbHkoMCxhcmd1bWVudHMpfWZ1bmN0aW9uIFRlKGEpe3JldHVybiBuZXcgVGEoInJldHVybiIsdGhpcy5ldmFsdWF0ZShhKSl9CmZ1bmN0aW9uIFVlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyk7aWYoZD09PW51bGx8fGQ9PT12b2lkIDApdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogQ2FuJ3Qgc2V0IHByb3BlcnR5ICIrZSsiIG9mICIrZCsiLiIpKTsoZCBpbnN0YW5jZW9mIEtkfHxkIGluc3RhbmNlb2YgR2R8fGQgaW5zdGFuY2VvZiBrYikmJmQuc2V0KFN0cmluZyhlKSxmKTtyZXR1cm4gZn1mdW5jdGlvbiBWZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpLXRoaXMuZXZhbHVhdGUoYil9CmZ1bmN0aW9uIFdlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyk7aWYoIUFycmF5LmlzQXJyYXkoZSl8fCFBcnJheS5pc0FycmF5KGYpKXRocm93IEVycm9yKCJFcnJvcjogTWFsZm9ybWVkIHN3aXRjaCBpbnN0cnVjdGlvbi4iKTtmb3IodmFyIGcsaD0hMSxsPTA7bDxlLmxlbmd0aDtsKyspaWYoaHx8ZD09PXRoaXMuZXZhbHVhdGUoZVtsXSkpaWYoZz10aGlzLmV2YWx1YXRlKGZbbF0pLGcgaW5zdGFuY2VvZiBUYSl7dmFyIG49Zy50eXBlO2lmKG49PT0iYnJlYWsiKXJldHVybjtpZihuPT09InJldHVybiJ8fG49PT0iY29udGludWUiKXJldHVybiBnfWVsc2UgaD0hMDtpZihmLmxlbmd0aD09PWUubGVuZ3RoKzEmJihnPXRoaXMuZXZhbHVhdGUoZltmLmxlbmd0aC0xXSksZyBpbnN0YW5jZW9mIFRhJiYoZy50eXBlPT09InJldHVybiJ8fGcudHlwZT09PSJjb250aW51ZSIpKSlyZXR1cm4gZ30KZnVuY3Rpb24gWGUoYSxiLGMpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpP3RoaXMuZXZhbHVhdGUoYik6dGhpcy5ldmFsdWF0ZShjKX1mdW5jdGlvbiBZZShhKXt2YXIgYj10aGlzLmV2YWx1YXRlKGEpO3JldHVybiBiIGluc3RhbmNlb2YgS2Q/ImZ1bmN0aW9uIjp0eXBlb2YgYn1mdW5jdGlvbiBaZSgpe2Zvcih2YXIgYT10aGlzLlQsYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspe3ZhciBjPWFyZ3VtZW50c1tiXTt0eXBlb2YgYyE9PSJzdHJpbmcifHxhLmFkZChjLHZvaWQgMCl9fQpmdW5jdGlvbiAkZShhLGIsYyxkKXt2YXIgZT10aGlzLmV2YWx1YXRlKGQpO2lmKHRoaXMuZXZhbHVhdGUoYykpe3ZhciBmPWViKHRoaXMuVCxlKTtpZihmIGluc3RhbmNlb2YgVGEpe2lmKGYudHlwZT09PSJicmVhayIpcmV0dXJuO2lmKGYudHlwZT09PSJyZXR1cm4iKXJldHVybiBmfX1mb3IoO3RoaXMuZXZhbHVhdGUoYSk7KXt2YXIgZz1lYih0aGlzLlQsZSk7aWYoZyBpbnN0YW5jZW9mIFRhKXtpZihnLnR5cGU9PT0iYnJlYWsiKWJyZWFrO2lmKGcudHlwZT09PSJyZXR1cm4iKXJldHVybiBnfXRoaXMuZXZhbHVhdGUoYil9fWZ1bmN0aW9uIGFmKGEpe3JldHVybn5OdW1iZXIodGhpcy5ldmFsdWF0ZShhKSl9ZnVuY3Rpb24gYmYoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpPDxOdW1iZXIodGhpcy5ldmFsdWF0ZShiKSl9ZnVuY3Rpb24gY2YoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpPj5OdW1iZXIodGhpcy5ldmFsdWF0ZShiKSl9CmZ1bmN0aW9uIGRmKGEsYil7cmV0dXJuIE51bWJlcih0aGlzLmV2YWx1YXRlKGEpKT4+Pk51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBlZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSkmTnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGZmKGEsYil7cmV0dXJuIE51bWJlcih0aGlzLmV2YWx1YXRlKGEpKV5OdW1iZXIodGhpcy5ldmFsdWF0ZShiKSl9ZnVuY3Rpb24gZ2YoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpfE51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBoZigpe30KZnVuY3Rpb24ga2YoYSxiLGMpe3RyeXt2YXIgZD10aGlzLmV2YWx1YXRlKGIpO2lmKGQgaW5zdGFuY2VvZiBUYSlyZXR1cm4gZH1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBiYiYmaC5TbikpdGhyb3cgaDt2YXIgZT10aGlzLlQud2IoKTthIT09IiImJihoIGluc3RhbmNlb2YgYmImJihoPWgudm8pLGUuYWRkKGEsbmV3IFBkKGgpKSk7dmFyIGY9dGhpcy5ldmFsdWF0ZShjKSxnPWViKGUsZik7aWYoZyBpbnN0YW5jZW9mIFRhKXJldHVybiBnfX1mdW5jdGlvbiBsZihhLGIpe3ZhciBjLGQ7dHJ5e2Q9dGhpcy5ldmFsdWF0ZShhKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiBiYiYmZi5TbikpdGhyb3cgZjtjPWZ9dmFyIGU9dGhpcy5ldmFsdWF0ZShiKTtpZihlIGluc3RhbmNlb2YgVGEpcmV0dXJuIGU7aWYoYyl0aHJvdyBjO2lmKGQgaW5zdGFuY2VvZiBUYSlyZXR1cm4gZH07dmFyIG5mPWZ1bmN0aW9uKCl7dGhpcy5IPW5ldyBnYjttZih0aGlzKX07bmYucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuSC5yayhhKX07dmFyIG1mPWZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKGMsZCl7dmFyIGU9bmV3IExkKFN0cmluZyhjKSxkKTtlLlphKCk7dmFyIGY9U3RyaW5nKGMpO2EuSC5ILnNldChmLGUpO2RiLnNldChmLGUpfTtiKCJtYXAiLEllKTtiKCJhbmQiLHRkKTtiKCJjb250YWlucyIsd2QpO2IoImVxdWFscyIsdWQpO2IoIm9yIix2ZCk7Yigic3RhcnRzV2l0aCIseGQpO2IoInZhcmlhYmxlIix5ZCl9O25mLnByb3RvdHlwZS5RYj1mdW5jdGlvbihhKXt0aGlzLkguUWIoYSl9O3ZhciBwZj1mdW5jdGlvbigpe3RoaXMuSz0hMTt0aGlzLkg9bmV3IGdiO29mKHRoaXMpO3RoaXMuSz0hMH07cGYucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHFmKHRoaXMuSC5yayhhKSl9O3ZhciByZj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHFmKGEuSC5KcShiLGMpKX07cGYucHJvdG90eXBlLlphPWZ1bmN0aW9uKCl7dGhpcy5ILlphKCl9Owp2YXIgb2Y9ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oYyxkKXt2YXIgZT1TdHJpbmcoYyksZj1uZXcgTGQoZSxkKTtmLlphKCk7YS5ILkguc2V0KGUsZik7ZGIuc2V0KGUsZil9O2IoMCxaZCk7YigxLCRkKTtiKDIsYWUpO2IoMyxiZSk7Yig1NixlZik7Yig1NyxiZik7Yig1OCxhZik7Yig1OSxnZik7Yig2MCxjZik7Yig2MSxkZik7Yig2MixmZik7Yig1MyxjZSk7Yig0LGRlKTtiKDUsZWUpO2IoNjgsa2YpO2IoNTIsZmUpO2IoNixnZSk7Yig0OSxoZSk7Yig3LEhlKTtiKDgsSWUpO2IoOSxlZSk7Yig1MCxpZSk7YigxMCxqZSk7YigxMixrZSk7YigxMyxsZSk7Yig2NyxsZik7Yig1MSx3ZSk7Yig0NyxvZSk7Yig1NCxwZSk7Yig1NSxxZSk7Yig2Myx2ZSk7Yig2NCxyZSk7Yig2NSx0ZSk7Yig2Nix1ZSk7YigxNSx4ZSk7YigxNix6ZSk7YigxNyx6ZSk7YigxOCxBZSk7YigxOSxCZSk7YigyMCxDZSk7YigyMSxEZSk7YigyMixFZSk7YigyMyxGZSk7YigyNCxHZSk7YigyNSxKZSk7YigyNiwKS2UpO2IoMjcsTGUpO2IoMjgsTWUpO2IoMjksTmUpO2IoNDUsT2UpO2IoMzAsUGUpO2IoMzIsUWUpO2IoMzMsUWUpO2IoMzQsUmUpO2IoMzUsUmUpO2IoNDYsU2UpO2IoMzYsVGUpO2IoNDMsVWUpO2IoMzcsVmUpO2IoMzgsV2UpO2IoMzksWGUpO2IoNDAsWWUpO2IoNDQsaGYpO2IoNDEsWmUpO2IoNDIsJGUpfTtwZi5wcm90b3R5cGUuamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ILmplKCl9O3BmLnByb3RvdHlwZS5RYj1mdW5jdGlvbihhKXt0aGlzLkguUWIoYSl9O3BmLnByb3RvdHlwZS5zZD1mdW5jdGlvbihhKXt0aGlzLkguc2QoYSl9OwpmdW5jdGlvbiBxZihhKXtpZihhIGluc3RhbmNlb2YgVGF8fGEgaW5zdGFuY2VvZiBLZHx8YSBpbnN0YW5jZW9mIEdkfHxhIGluc3RhbmNlb2Yga2J8fGEgaW5zdGFuY2VvZiBTZHx8YSBpbnN0YW5jZW9mIFBkfHxhPT09bnVsbHx8YT09PXZvaWQgMHx8dHlwZW9mIGE9PT0ic3RyaW5nInx8dHlwZW9mIGE9PT0ibnVtYmVyInx8dHlwZW9mIGE9PT0iYm9vbGVhbiIpcmV0dXJuIGF9O3ZhciBzZj1mdW5jdGlvbihhKXt0aGlzLm1lc3NhZ2U9YX07ZnVuY3Rpb24gdGYoYSl7YS5xdj0hMDtyZXR1cm4gYX07dmFyIHVmPXRmKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIifSksdmY9dGYoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyJ9KSx3Zj10ZihmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0iYm9vbGVhbiJ9KTtmdW5jdGlvbiB4ZihhKXt2YXIgYj0iMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbYV07cmV0dXJuIGI9PT12b2lkIDA/bmV3IHNmKCJWYWx1ZSAiK2ErIiBjYW4gbm90IGJlIGVuY29kZWQgaW4gd2ViLXNhZmUgYmFzZTY0IGRpY3Rpb25hcnkuIik6Yn07ZnVuY3Rpb24geWYoYSl7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4iMSI7Y2FzZSAyOmNhc2UgNDpyZXR1cm4iMCI7ZGVmYXVsdDpyZXR1cm4iLSJ9fTt2YXIgemY9L15bMS05YS16QS1aXy1dWzEtOWEtY11bMS05YS12XVxkJC87ZnVuY3Rpb24gQWYoYSxiKXtmb3IodmFyIGM9IiIsZD0hMDthPjc7KXt2YXIgZT1hJjMxO2E+Pj01O2Q/ZD0hMTplfD0zMjtjPSIiK3hmKGUpK2N9YTw8PTI7ZHx8KGF8PTMyKTtyZXR1cm4gYz0iIit4ZihhfGIpK2N9ZnVuY3Rpb24gQmYoYSxiKXtyZXR1cm4gYj09PXZvaWQgMHx8Yj09PTA/IiI6IiIrQWYoYSwxKSt4ZihiKX0KZnVuY3Rpb24gQ2YoYSxiKXt2YXIgYzt2YXIgZD1hLmhpLGU9YS5iaztkPT09dm9pZCAwP2M9IiI6KGV8fChlPTApLGM9IiIrQWYoMSwxKSt4ZihkPDwyfGUpKTt2YXIgZj0iNCIrYytCZigyLGEucXIpLGcsaD1hLklvO2c9aCYmemYudGVzdChoKT8iIitBZigzLDIpK2g6IiI7dmFyIGw7dmFyIG49YS5jdGlkO2lmKG4mJmIpe3ZhciBwPUFmKDUsMykscT1uLnNwbGl0KCItIikscj1xWzBdLnRvVXBwZXJDYXNlKCk7aWYociE9PSJHVE0iJiZyIT09Ik9QVCIpbD0iIjtlbHNle3ZhciB0PXFbMV07bD0iIitwK3hmKDErdC5sZW5ndGgpKyhhLkxzfHwwKSt0fX1lbHNlIGw9IiI7dmFyIHU9YS5jYW5vbmljYWxJZCx2PWEubWMseD1hLnp2LHk9ZitnK0JmKDQsYS5EbykrbCtCZig2LGEuRHQpKyh1PyIiK0FmKDcsMykreGYodS5sZW5ndGgpK3U6IiIpKyh2PyIiK0FmKDgsMykreGYodi5sZW5ndGgpK3Y6IiIpKyh4PyIiK0FmKDksMykreGYoeC5sZW5ndGgpK3g6IiIpLHo7dmFyIEM9YS56cjtDPQpDPT09dm9pZCAwP3t9OkM7Zm9yKHZhciBEPVtdLEk9bShPYmplY3Qua2V5cyhDKSksRz1JLm5leHQoKTshRy5kb25lO0c9SS5uZXh0KCkpe3ZhciBOPUcudmFsdWU7RFtOdW1iZXIoTildPUNbTl19aWYoRC5sZW5ndGgpe3ZhciBTPUFmKDEwLDMpLFc7aWYoRC5sZW5ndGg9PT0wKVc9eGYoMCk7ZWxzZXtmb3IodmFyIGVhPVtdLGphPTAsZmE9ITEsc2E9MDtzYTxELmxlbmd0aDtzYSsrKXtmYT0hMDt2YXIgZGE9c2ElNjtEW3NhXSYmKGphfD0xPDxkYSk7ZGE9PT01JiYoZWEucHVzaCh4ZihqYSkpLGphPTAsZmE9ITEpfWZhJiZlYS5wdXNoKHhmKGphKSk7Vz1lYS5qb2luKCIiKX12YXIgbWE9Vzt6PSIiK1MreGYobWEubGVuZ3RoKSttYX1lbHNlIHo9IiI7dmFyIFBhPWEuVXMsRmE9YS5udDtyZXR1cm4geSt6KyhQYT8iIitBZigxMSwzKSt4ZihQYS5sZW5ndGgpK1BhOiIiKSsoRmE/IiIrQWYoMTMsMykreGYoRmEubGVuZ3RoKStGYToiIikrQmYoMTQsYS5FdCkrQmYoMTUsYS5ydikrQmYoMTYsCmEuQXYpfTtmdW5jdGlvbiBEZihhKXtmb3IodmFyIGI9W10sYz0wLGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGU9YS5jaGFyQ29kZUF0KGQpO2U8MTI4P2JbYysrXT1lOihlPDIwNDg/YltjKytdPWU+PjZ8MTkyOigoZSY2NDUxMik9PTU1Mjk2JiZkKzE8YS5sZW5ndGgmJihhLmNoYXJDb2RlQXQoZCsxKSY2NDUxMik9PTU2MzIwPyhlPTY1NTM2KygoZSYxMDIzKTw8MTApKyhhLmNoYXJDb2RlQXQoKytkKSYxMDIzKSxiW2MrK109ZT4+MTh8MjQwLGJbYysrXT1lPj4xMiY2M3wxMjgpOmJbYysrXT1lPj4xMnwyMjQsYltjKytdPWU+PjYmNjN8MTI4KSxiW2MrK109ZSY2M3wxMjgpfXJldHVybiBifTtmdW5jdGlvbiBFZihhLGIpe2Zvcih2YXIgYz1xYihiKSxkPW5ldyBVaW50OEFycmF5KGMubGVuZ3RoKSxlPTA7ZTxjLmxlbmd0aDtlKyspZFtlXT1jLmNoYXJDb2RlQXQoZSk7aWYoZC5sZW5ndGghPT0zMil0aHJvdyBFcnJvcigiS2V5IGlzIG5vdCAzMiBieXRlcy4iKTtyZXR1cm4gRmYoYSxkKX1mdW5jdGlvbiBGZihhLGIpe2lmKGE9PT0iIilyZXR1cm4iIjt2YXIgYz1aYihhKSxkPWIuc2xpY2UoLTIpLGU9W10uY29uY2F0KHcoZCksdyhjKSkubWFwKGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGdeYltoJWIubGVuZ3RoXX0pLGY9bmV3IFVpbnQ4QXJyYXkoW10uY29uY2F0KHcoZSksdyhkKSkpO3JldHVybiBwYihTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx3KGYpKSkucmVwbGFjZSgvXC4rJC8sIiIpfTt2YXIgR2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe3JldHVybnt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBifX19cmV0dXJue2NwOmEoImNvbnNlbnQiKSxaazphKCJjb252ZXJ0X2Nhc2VfdG8iKSxhbDphKCJjb252ZXJ0X2ZhbHNlX3RvIiksYmw6YSgiY29udmVydF9udWxsX3RvIiksZXA6YSgiY29udmVydF90b19ib29sZWFuIiksYWg6YSgiY29udmVydF90b19udW1iZXIiKSxmbDphKCJjb252ZXJ0X3RydWVfdG8iKSxpbDphKCJjb252ZXJ0X3VuZGVmaW5lZF90byIpLFl0OmEoImRlYnVnX21vZGVfbWV0YWRhdGEiKSxZYjphKCJmdW5jdGlvbiIpLFJtOmEoImluc3RhbmNlX25hbWUiKSxOcTphKCJsaXZlX29ubHkiKSxPcTphKCJtYWx3YXJlX2Rpc2FibGVkIiksTUVUQURBVEE6YSgibWV0YWRhdGEiKSxScTphKCJvcmlnaW5hbF9hY3Rpdml0eV9pZCIpLFR1OmEoIm9yaWdpbmFsX3ZlbmRvcl90ZW1wbGF0ZV9pZCIpLFN1OmEoIm9uY2Vfb25fbG9hZCIpLFFxOmEoIm9uY2VfcGVyX2V2ZW50IiksCmtuOmEoIm9uY2VfcGVyX2xvYWQiKSxWdTphKCJwcmlvcml0eV9vdmVycmlkZSIpLFl1OmEoInJlc3BlY3RlZF9jb25zZW50X3R5cGVzIiksdG46YSgic2V0dXBfdGFncyIpLHlqOmEoInRhZ19pZCIpLERuOmEoInRlYXJkb3duX3RhZ3MiKSxwbDphKCJkaXNhYmxlZF9pbl9nb29nbGVfbW9kZSIpLEZxOmEoImdlbmVyYXRlZF90YWdnaW5nX21ldGFkYXRhIil9fSgpO2Z1bmN0aW9uIEhmKGEsYil7dmFyIGM9e307Y1tHZi5ZYl09Il9fIithO2Zvcih2YXIgZCBpbiBiKWIuaGFzT3duUHJvcGVydHkoZCkmJihjWyJ2dHBfIitkXT1iW2RdKTtyZXR1cm4gY307ZnVuY3Rpb24gSWYoYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYyxkO3JldHVybigoYz1kYXRhKT09bnVsbD8wOihkPWMuYmxvYik9PW51bGw/MDpkLmhhc093blByb3BlcnR5KGEpKT8hIWRhdGEuYmxvYlthXTpifWZ1bmN0aW9uIEUoYSl7dmFyIGI7Yj1iPT09dm9pZCAwPyIiOmI7dmFyIGMsZDtyZXR1cm4oKGM9ZGF0YSk9PW51bGw/MDooZD1jLmJsb2IpPT1udWxsPzA6ZC5oYXNPd25Qcm9wZXJ0eShhKSk/U3RyaW5nKGRhdGEuYmxvYlthXSk6Yn1mdW5jdGlvbiBKZihhKXt2YXIgYixjO3JldHVybigoYj1kYXRhKT09bnVsbD8wOihjPWIuYmxvYik9PW51bGw/MDpjLmhhc093blByb3BlcnR5KGEpKT9OdW1iZXIoZGF0YS5ibG9iW2FdKTowfWZ1bmN0aW9uIEtmKGEpe3ZhciBiO2I9Yj09PXZvaWQgMD9bXTpiO3ZhciBjLGQsZT0oYz1kYXRhKT09bnVsbD92b2lkIDA6KGQ9Yy5ibG9iKT09bnVsbD92b2lkIDA6ZFthXTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOmJ9CmZ1bmN0aW9uIExmKGEpe3ZhciBiO2I9Yj09PXZvaWQgMD8iIjpiO3ZhciBjPU1mKDQ2KTtyZXR1cm4gYyYmKGM9PW51bGw/MDpjLmhhc093blByb3BlcnR5KGEpKT9TdHJpbmcoY1thXSk6Yn1mdW5jdGlvbiBOZihhLGIpe3ZhciBjPU1mKDQ2KTtyZXR1cm4gYyYmKGM9PW51bGw/MDpjLmhhc093blByb3BlcnR5KGEpKT9OdW1iZXIoY1thXSk6Yn1mdW5jdGlvbiBNZihhKXt2YXIgYixjO3JldHVybihiPWRhdGEpPT1udWxsP3ZvaWQgMDooYz1iLmJsb2IpPT1udWxsP3ZvaWQgMDpjW2FdfTt2YXIgT2Y9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2Q9RXJyb3IuY2FsbCh0aGlzLGMpO3RoaXMubWVzc2FnZT1kLm1lc3NhZ2U7InN0YWNrImluIGQmJih0aGlzLnN0YWNrPWQuc3RhY2spO3RoaXMucGVybWlzc2lvbklkPWE7dGhpcy5wYXJhbWV0ZXJzPWI7dGhpcy5uYW1lPSJQZXJtaXNzaW9uRXJyb3IifTt3YShPZixFcnJvcik7T2YucHJvdG90eXBlLmdldE1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlfTtmdW5jdGlvbiBQZihhLGIpe2lmKEFycmF5LmlzQXJyYXkoYSkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJjb250ZXh0Iix7dmFsdWU6e2xpbmU6YlswXX19KTtmb3IodmFyIGM9MTtjPGEubGVuZ3RoO2MrKylQZihhW2NdLGJbY10pfX07ZnVuY3Rpb24gUWYoKXtyZXR1cm4gZnVuY3Rpb24oYSxiKXt2YXIgYzt2YXIgZD1SZjthIGluc3RhbmNlb2YgYmI/KGEuSD1kLGM9YSk6Yz1uZXcgYmIoYSxkKTt2YXIgZT1jO2ImJmUuSy5wdXNoKGIpO3Rocm93IGU7fX1mdW5jdGlvbiBSZihhKXtpZighYS5sZW5ndGgpcmV0dXJuIGE7YS5wdXNoKHtpZDoibWFpbiIsbGluZTowfSk7Zm9yKHZhciBiPWEubGVuZ3RoLTE7Yj4wO2ItLSlBYihhW2JdLmlkKSYmYS5zcGxpY2UoYisrLDEpO2Zvcih2YXIgYz1hLmxlbmd0aC0xO2M+MDtjLS0pYVtjXS5saW5lPWFbYy0xXS5saW5lO2Euc3BsaWNlKDAsMSk7cmV0dXJuIGF9O3ZhciBTZj1SZWdFeHAoIlteMC05XFwuKy1dIiwiZyIpLFRmPVJlZ0V4cCgiW14wLTlcXCwrLV0iLCJnIiksVWY9UmVnRXhwKCJbXjAtOSstXSIsImciKTsKZnVuY3Rpb24gVmYoYSxiKXtpZih0eXBlb2YgYT09PSJudW1iZXIiKXJldHVybiBhO3ZhciBjPVN0cmluZyhhKSxkO2lmKGI9PT0iQVVUT01BVElDIil7dmFyIGU9KGMubWF0Y2goL1wuL2cpfHxbXSkubGVuZ3RoLGY9KGMubWF0Y2goLywvZyl8fFtdKS5sZW5ndGgsZz0iTk9ORSI7aWYoZT4wJiZmPjApe3ZhciBoPWMubGFzdEluZGV4T2YoIi4iKT5jLmxhc3RJbmRleE9mKCIsIik7aCYmZT09PTE/Zz0iUEVSSU9EIjpofHxmIT09MXx8KGc9IkNPTU1BIil9ZWxzZSBlPT09MT9nPShjLnNwbGl0KCIuIilbMV0ubWF0Y2goL1swLTldL2cpfHxbXSkubGVuZ3RoIT09Mz8iUEVSSU9EIjoiTk9ORSI6Zj09PTEmJihnPShjLnNwbGl0KCIsIilbMV0ubWF0Y2goL1swLTldL2cpfHxbXSkubGVuZ3RoIT09Mz8iQ09NTUEiOiJOT05FIik7ZD1nfWVsc2UgZD1iPT09IkNPTU1BIj8iQ09NTUEiOiJQRVJJT0QiO3ZhciBsLG47ZD09PSJQRVJJT0QiPyhsPSIuIixuPVNmKTpkPT09IkNPTU1BIj8obD0iLCIsCm49VGYpOihsPSIiLG49VWYpO3ZhciBwPWMucmVwbGFjZShuLCIiKTtpZihsIT09IiImJnAuc3BsaXQobCkubGVuZ3RoPjIpcmV0dXJuIGE7dmFyIHE9cC5yZXBsYWNlKC8sL2csIi4iKTtpZihxPT09IiIpcmV0dXJuIGE7dmFyIHI9TnVtYmVyKHEpO3JldHVybiBpc05hTihyKT9hOnJ9O3ZhciBXZj1bXSxYZj17fTtmdW5jdGlvbiBZZihhKXtyZXR1cm4gV2ZbYV09PT12b2lkIDA/ITE6V2ZbYV19O3ZhciBaZj1mdW5jdGlvbigpe3RoaXMuSD17fX0sJGY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkOyhkPWEuSClbYl0hPW51bGx8fChkW2JdPVtdKTthLkhbYl0ucHVzaChmdW5jdGlvbigpe3JldHVybiBjLmFwcGx5KG51bGwsdyhPYS5hcHBseSgwLGFyZ3VtZW50cykpKX0pfTtmdW5jdGlvbiBhZyhhLGIsYyxkKXtpZihhKWZvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKXt2YXIgZj12b2lkIDAsZz0iQSBwb2xpY3kgZnVuY3Rpb24gZGVuaWVkIHRoZSBwZXJtaXNzaW9uIHJlcXVlc3QiO3RyeXtmPWFbZV0oYixjLGQpLGcrPSIuIn1jYXRjaChoKXtnPXR5cGVvZiBoPT09InN0cmluZyI/ZysoIjogIitoKTpoIGluc3RhbmNlb2YgRXJyb3I/ZysoIjogIitoLm1lc3NhZ2UpOmcrIi4ifWlmKCFmKXRocm93IG5ldyBPZihjLGQsZyk7fX0KZnVuY3Rpb24gYmcoYSxiKXt2YXIgYz1jZyhkZy5ILGIsZnVuY3Rpb24oKXtyZXR1cm57fX0pO3RyeXtyZXR1cm4gYyhhKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19ZnVuY3Rpb24gY2coYSxiLGMpe3JldHVybiBmdW5jdGlvbihkKXtpZihkKXt2YXIgZT1hLkhbZF0sZj1hLkguYWxsO2lmKGV8fGYpe3ZhciBnPWMuYXBwbHkodm9pZCAwLFtkXS5jb25jYXQodyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKSk7YWcoZSxiLGQsZyk7YWcoZixiLGQsZyl9fX19O3ZhciBnZz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczt0aGlzLks9e307dGhpcy5IPW5ldyBaZjt2YXIgZT17fSxmPXt9LGc9Y2codGhpcy5ILGEsZnVuY3Rpb24oaCl7cmV0dXJuIGgmJmVbaF0/ZVtoXS5hcHBseSh2b2lkIDAsW2hdLmNvbmNhdCh3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpKTp7fX0pO0diKGIsZnVuY3Rpb24oaCxsKXtmdW5jdGlvbiBuKHEpe3ZhciByPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtpZighcFtxXSl0aHJvdyBlZyhxLHt9LCJUaGUgcmVxdWVzdGVkIGFkZGl0aW9uYWwgcGVybWlzc2lvbiAiK3ErIiBpcyBub3QgY29uZmlndXJlZC4iKTtnLmFwcGx5KG51bGwsW3FdLmNvbmNhdCh3KHIpKSl9dmFyIHA9e307R2IobCxmdW5jdGlvbihxLHIpe3ZhciB0PWZnKHEscixjKTtwW3FdPXQuYXNzZXJ0O2VbcV18fChlW3FdPXQuYWEpO3QuT24mJiFmW3FdJiYoZltxXT10Lk9uKX0pO2QuS1toXT1mdW5jdGlvbihxLHIpe3ZhciB0PXBbcV07aWYoIXQpdGhyb3cgZWcocSwKe30sIlRoZSByZXF1ZXN0ZWQgcGVybWlzc2lvbiAiK3ErIiBpcyBub3QgY29uZmlndXJlZC4iKTt2YXIgdT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7dC5hcHBseSh2b2lkIDAsdSk7Zy5hcHBseSh2b2lkIDAsdSk7dmFyIHY9ZltxXTt2JiZ2LmFwcGx5KG51bGwsW25dLmNvbmNhdCh3KHUuc2xpY2UoMSkpKSl9fSl9LGhnPWZ1bmN0aW9uKGEpe3JldHVybiBkZy5LW2FdfHxmdW5jdGlvbigpe319OwpmdW5jdGlvbiBmZyhhLGIsYyl7dHJ5e3ZhciBkPWNbIl9fIithXTtpZighZCl0aHJvdyBFcnJvcigiTm8gZnVuY3Rpb24gZm91bmQgZm9yIHBlcm1pc3Npb246ICIrYSsiLiIpO3ZhciBlPUhmKGEsYik7ZS52dHBfcGVybWlzc2lvbk5hbWU9YTtlLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I9ZWc7ZGVsZXRlIGVbR2YuWWJdO3JldHVybiBkKGUpfWNhdGNoKGYpe3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZyl7dGhyb3cgbmV3IE9mKGcse30sIlBlcm1pc3Npb24gIitnKyIgaXMgdW5rbm93bi4iKTt9LGFhOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IE9mKGEse30sIlBlcm1pc3Npb24gIithKyIgaXMgdW5rbm93bi4iKTt9fX19ZnVuY3Rpb24gZWcoYSxiLGMpe3JldHVybiBuZXcgT2YoYSxiLGMpfTt2YXIgaWc9RSg1KSxqZz1FKDIwKSxrZz1FKDEpLGxnPSExO3ZhciBtZz17fTttZy5Qbz1JZigyOSk7bWcuS3I9SWYoMjgpO2Z1bmN0aW9uIG5nKGEpe3ZhciBiPTEsYyxkLGU7aWYoYSlmb3IoYj0wLGQ9YS5sZW5ndGgtMTtkPj0wO2QtLSllPWEuY2hhckNvZGVBdChkKSxiPShiPDw2JjI2ODQzNTQ1NSkrZSsoZTw8MTQpLGM9YiYyNjYzMzgzMDQsYj1jIT09MD9iXmM+PjIxOmI7cmV0dXJuIGJ9O3ZhciBvZz1mdW5jdGlvbihhKXt0aGlzLmNhY2hlPWF9O29nLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmcoYSksYz10aGlzLmNhY2hlLmdldChiKTtpZighYylyZXR1cm57cHJvbWlzZTp2b2lkIDAsS2o6MH07aWYoRGF0ZS5ub3coKT49Yy50aW1lc3RhbXArOUU1KXJldHVybiB0aGlzLmNhY2hlLmRlbGV0ZShiKSx7cHJvbWlzZTp2b2lkIDAsS2o6M307dmFyIGQ9Yy5yZXNvbHZlZFZhbHVlPzI6MTtyZXR1cm57cHJvbWlzZTpjLnJlc29sdmVkVmFsdWU/UHJvbWlzZS5yZXNvbHZlKGMucmVzb2x2ZWRWYWx1ZSk6Yy5wcm9taXNlLEtqOmR9fTtvZy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9e3Byb21pc2U6YixyZXNvbHZlZFZhbHVlOnZvaWQgMCx0aW1lc3RhbXA6RGF0ZS5ub3coKX07dGhpcy5jYWNoZS5zZXQobmcoYSksYyk7Yi50aGVuKGZ1bmN0aW9uKGQpe2MucmVzb2x2ZWRWYWx1ZT1kfSl9O2Z1bmN0aW9uIHBnKGEpe3N3aXRjaChhKXtjYXNlIDA6YnJlYWs7Y2FzZSA5OnJldHVybiJlNCI7Y2FzZSA2OnJldHVybiJlNSI7Y2FzZSAxNDpyZXR1cm4iZTYiO2RlZmF1bHQ6cmV0dXJuImU3In19O3ZhciBGPXtEOntYYToiYWRfcGVyc29uYWxpemF0aW9uIixrYToiYWRfc3RvcmFnZSIsbWE6ImFkX3VzZXJfZGF0YSIscmE6ImFuYWx5dGljc19zdG9yYWdlIixuYzoicmVnaW9uIixzYToiY29uc2VudF91cGRhdGVkIixZZzoid2FpdF9mb3JfdXBkYXRlIixlaDoiZW5kcG9pbnRfdHlwZSIscXA6ImFwcF9yZW1vdmUiLHJwOiJhcHBfc3RvcmVfcmVmdW5kIix0cDoiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9jYW5jZWwiLHVwOiJhcHBfc3RvcmVfc3Vic2NyaXB0aW9uX2NvbnZlcnQiLHZwOiJhcHBfc3RvcmVfc3Vic2NyaXB0aW9uX3JlbmV3Iix3cDoiY29uc2VudF91cGRhdGUiLHhwOiJjb252ZXJzaW9uIix2bDoiYWRkX3BheW1lbnRfaW5mbyIsd2w6ImFkZF9zaGlwcGluZ19pbmZvIix4ZToiYWRkX3RvX2NhcnQiLHllOiJyZW1vdmVfZnJvbV9jYXJ0Iix4bDoidmlld19jYXJ0IixBZDoiYmVnaW5fY2hlY2tvdXQiLGV1OiJnZW5lcmF0ZV9sZWFkIix6ZToic2VsZWN0X2l0ZW0iLG9jOiJ2aWV3X2l0ZW1fbGlzdCIsClFjOiJzZWxlY3RfcHJvbW90aW9uIixxYzoidmlld19wcm9tb3Rpb24iLEliOiJwdXJjaGFzZSIsQWU6InJlZnVuZCIscmM6InZpZXdfaXRlbSIseWw6ImFkZF90b193aXNobGlzdCIseXA6ImV4Y2VwdGlvbiIsenA6ImZpcnN0X29wZW4iLEFwOiJmaXJzdF92aXNpdCIsd2E6Imd0YWcuY29uZmlnIixKYjoiZ3RhZy5nZXQiLEJwOiJpbl9hcHBfcHVyY2hhc2UiLHNjOiJwYWdlX3ZpZXciLENwOiJzY3JlZW5fdmlldyIsRHA6InNlc3Npb25fc3RhcnQiLEVwOiJzb3VyY2VfdXBkYXRlIixGcDoidGltaW5nX2NvbXBsZXRlIixHcDoidHJhY2tfc29jaWFsIix5ZjoidXNlcl9lbmdhZ2VtZW50IixIcDoidXNlcl9pZF91cGRhdGUiLGZoOiJicmFpZF9saW5rX2RlY29yYXRpb25fc291cmNlIixnaDoiYnJhaWRfc3RvcmFnZV9zb3VyY2UiLEJkOiJnY2xpZF9saW5rX2RlY29yYXRpb25fc291cmNlIixDZDoiZ2NsaWRfc3RvcmFnZV9zb3VyY2UiLFNiOiJnY2xnYiIsbGI6ImdjbGlkIix6bDoiZ2NsaWRfbGVuIiwKQmU6ImdjbGdzIixDZToiZ2NsbHAiLERlOiJnY2xzdCIsbWI6ImFkc19kYXRhX3JlZGFjdGlvbiIsemY6ImdhZF9zb3VyY2UiLEFmOiJnYWRfc291cmNlX3NyYyIsRGQ6ImdjbGlkX3VybCIsQWw6ImdjbHNyYyIsQmY6ImdicmFpZCIsRWU6IndicmFpZCIsUmM6ImFsbG93X2FkX3BlcnNvbmFsaXphdGlvbl9zaWduYWxzIixyaToiYWxsb3dfY3VzdG9tX3NjcmlwdHMiLGhoOiJhbGxvd19kaXNwbGF5X2ZlYXR1cmVzIixzaToiYWxsb3dfZW5oYW5jZWRfY29udmVyc2lvbnMiLFNjOiJhbGxvd19nb29nbGVfc2lnbmFscyIsdWk6ImFsbG93X2ludGVyZXN0X2dyb3VwcyIsSXA6ImFwcF9pZCIsSnA6ImFwcF9pbnN0YWxsZXJfaWQiLEtwOiJhcHBfbmFtZSIsTHA6ImFwcF92ZXJzaW9uIixFZDoiYXVpZCIsZnU6ImF1dG9fZGV0ZWN0aW9uX2VuYWJsZWQiLEJsOiJhdXRvX2V2ZW50IixDbDoiYXdfcmVtYXJrZXRpbmciLGloOiJhd19yZW1hcmtldGluZ19vbmx5IixDZjoiZGlzY291bnQiLERmOiJhd19mZWVkX2NvdW50cnkiLApFZjoiYXdfZmVlZF9sYW5ndWFnZSIsSGE6Iml0ZW1zIixGZjoiYXdfbWVyY2hhbnRfaWQiLHdpOiJhd19iYXNrZXRfdHlwZSIsR2Y6ImNhbXBhaWduX2NvbnRlbnQiLEhmOiJjYW1wYWlnbl9pZCIsSWY6ImNhbXBhaWduX21lZGl1bSIsSmY6ImNhbXBhaWduX25hbWUiLEtmOiJjYW1wYWlnbiIsTGY6ImNhbXBhaWduX3NvdXJjZSIsTWY6ImNhbXBhaWduX3Rlcm0iLEtiOiJjbGllbnRfaWQiLERsOiJybmQiLHhpOiJjb25zZW50X3VwZGF0ZV90eXBlIixNcDoiY29udGVudF9ncm91cCIsTnA6ImNvbnRlbnRfdHlwZSIsRmQ6ImNvbnZlcnNpb25fY29va2llX3ByZWZpeCIseWk6ImNvbnZlcnNpb25faWQiLHVjOiJjb252ZXJzaW9uX2xpbmtlciIsSGQ6ImNvbnZlcnNpb25fbGlua2VyX2Rpc2FibGVkIixGZToiY29udmVyc2lvbl9hcGkiLHppOiJfJnJjYiIsamg6ImNvb2tpZV9kZXByZWNhdGlvbiIsTGI6ImNvb2tpZV9kb21haW4iLENiOiJjb29raWVfZXhwaXJlcyIsVGI6ImNvb2tpZV9mbGFncyIsCklkOiJjb29raWVfbmFtZSIsdmM6ImNvb2tpZV9wYXRoIixuYjoiY29va2llX3ByZWZpeCIsSmQ6ImNvb2tpZV91cGRhdGUiLFRjOiJjb3VudHJ5IixlYjoiY3VycmVuY3kiLEdlOiJjdXN0b21lcl9saWZldGltZV92YWx1ZSIsa2g6ImN1c3RvbWVyX3R5cGUiLEhlOiJjdXN0b21fbWFwIixBaToiZ2NsZGNfbGlua19kZWNvcmF0aW9uX3NvdXJjZSIsQmk6ImdjbGRjX3N0b3JhZ2Vfc291cmNlIixOZjoiZ2NsZGMiLEtkOiJkY2xpZCIsRWw6ImRlYnVnX21vZGUiLE9hOiJkZXZlbG9wZXJfaWQiLE9wOiJkaXNhYmxlX21lcmNoYW50X3JlcG9ydGVkX3B1cmNoYXNlcyIsVWM6ImRjX2N1c3RvbV9wYXJhbXMiLFBwOiJkY19uYXR1cmFsX3NlYXJjaCIsUXA6ImR5bmFtaWNfZXZlbnRfc2V0dGluZ3MiLEZsOiJhZmZpbGlhdGlvbiIsbWg6ImNoZWNrb3V0X29wdGlvbiIsQ2k6ImNoZWNrb3V0X3N0ZXAiLEdsOiJjb3Vwb24iLE9mOiJpdGVtX2xpc3RfbmFtZSIsRGk6Imxpc3RfbmFtZSIsUnA6InByb21vdGlvbnMiLApMZDoic2hpcHBpbmciLEhsOiJ0YXgiLG5oOiJlbmdhZ2VtZW50X3RpbWVfbXNlYyIsb2g6ImVuaGFuY2VkX2NsaWVudF9pZCIsU3A6ImVuaGFuY2VkX2NvbnZlcnNpb25zIixndToiZW5oYW5jZWRfY29udmVyc2lvbnNfYXV0b21hdGljX3NldHRpbmdzIixJZToiZXN0aW1hdGVkX2RlbGl2ZXJ5X2RhdGUiLFBmOiJldmVudF9jYWxsYmFjayIsVHA6ImV2ZW50X2NhdGVnb3J5IixWYzoiZXZlbnRfZGV2ZWxvcGVyX2lkX3N0cmluZyIsTWQ6ImV2ZW50X2lkIixFaToiX2V2ZW50X2pvaW5faWQiLFVwOiJldmVudF9sYWJlbCIsVWI6ImV2ZW50IixJbDoiXyZhZSIsRmk6ImV2ZW50X3NldHRpbmdzIixwaDoiZXZlbnRfdGltZW91dCIsVnA6ImRlc2NyaXB0aW9uIixXcDoiZmF0YWwiLFhwOiJleHBlcmltZW50cyIsTmQ6ImV4dF9jbGllbnRfaWQiLEdpOiJmaXJlYmFzZV9pZCIsUWY6ImZpcnN0X3BhcnR5X2NvbGxlY3Rpb24iLFJmOiJfeF8yMCIsVmI6Il94XzE5IixZcDoiZmxpZ2h0X2Vycm9yX2NvZGUiLApacDoiZmxpZ2h0X2Vycm9yX21lc3NhZ2UiLEhpOiJmbF9hY3Rpdml0eV9jYXRlZ29yeSIsSWk6ImZsX2FjdGl2aXR5X2dyb3VwIixxaDoiZmxfYWR2ZXJ0aXNlcl9pZCIsSmk6Im1hdGNoX2lkIixKbDoiZmxfcmFuZG9tX251bWJlciIsS2w6InRyYW4iLExsOiJ1IixyaDoiZ2FjX2djbGlkIixKZToiZ2FjX3dicmFpZCIsTWw6ImdhY193YnJhaWRfbXVsdGlwbGVfY29udmVyc2lvbnMiLGFxOiJnYV9yZXN0cmljdF9kb21haW4iLE5sOiJnYV90ZW1wX2NsaWVudF9pZCIsYnE6ImdhX3RlbXBfZWNpZCIsS2U6ImdkcHJfYXBwbGllcyIsc2g6Il9ndF9tZXRhZGF0YSIsT2w6Imdlb19ncmFudWxhcml0eSIsU2Y6InZhbHVlX2NhbGxiYWNrIixUZjoidmFsdWVfa2V5IixUYToiZ29vZ2xlX2FuYWx5c2lzX3BhcmFtcyIsTGU6Il9nb29nbGVfbmciLGNxOiJfb25vIixVZjoiZ29vZ2xlX3NpZ25hbHMiLGZxOiJnb29nbGVfdGxkIix0aDoiZ3BwX3NpZCIsdWg6ImdwcF9zdHJpbmciLE9kOiJncm91cHMiLApQbDoiZ3NhX2V4cGVyaW1lbnRfaWQiLFZmOiJndGFnX2V2ZW50X2ZlYXR1cmVfdXNhZ2UiLFFsOiJndG1fdXAiLE1lOiJpZnJhbWVfc3RhdGUiLFdmOiJpZ25vcmVfcmVmZXJyZXIiLFJsOiJpbnRlcm5hbF90cmFmZmljX3Jlc3VsdHMiLFNsOiJfaXNfZnBtIixZYzoiaXNfbGVnYWN5X2NvbnZlcnRlZCIsWmM6ImlzX2xlZ2FjeV9sb2FkZWQiLEtpOiJpc19wYXNzdGhyb3VnaCIsUGQ6Il9scHMiLHRiOiJsYW5ndWFnZSIsTGk6ImxlZ2FjeV9kZXZlbG9wZXJfaWRfc3RyaW5nIixEYjoibGlua2VyIixYZjoiYWNjZXB0X2luY29taW5nIix3YzoiZGVjb3JhdGVfZm9ybXMiLEFhOiJkb21haW5zIixhZDoidXJsX3Bvc2l0aW9uIixRZDoibWVyY2hhbnRfZmVlZF9sYWJlbCIsUmQ6Im1lcmNoYW50X2ZlZWRfbGFuZ3VhZ2UiLFNkOiJtZXJjaGFudF9pZCIsVGw6Im1ldGhvZCIsZ3E6Im5hbWUiLFVsOiJuYXZpZ2F0aW9uX3R5cGUiLE5lOiJuZXdfY3VzdG9tZXIiLE1pOiJub25faW50ZXJhY3Rpb24iLApocToib3B0aW1pemVfaWQiLFZsOiJwYWdlX2hvc3RuYW1lIixZZjoicGFnZV9wYXRoIixVYToicGFnZV9yZWZlcnJlciIsTWI6InBhZ2VfdGl0bGUiLGlxOiJwYXNzZW5nZXJzIixXbDoicGhvbmVfY29udmVyc2lvbl9jYWxsYmFjayIsanE6InBob25lX2NvbnZlcnNpb25fY291bnRyeV9jb2RlIixYbDoicGhvbmVfY29udmVyc2lvbl9jc3NfY2xhc3MiLGtxOiJwaG9uZV9jb252ZXJzaW9uX2lkcyIsWWw6InBob25lX2NvbnZlcnNpb25fbnVtYmVyIixabDoicGhvbmVfY29udmVyc2lvbl9vcHRpb25zIixscToiX3BsYXRpbnVtX3JlcXVlc3Rfc3RhdHVzIixtcToiX3Byb3RlY3RlZF9hdWRpZW5jZV9lbmFibGVkIix3aDoicXVhbnRpdHkiLHhoOiJyZWRhY3RfZGV2aWNlX2luZm8iLGFtOiJyZWZlcnJhbF9leGNsdXNpb25fZGVmaW5pdGlvbiIsaHU6Il9yZXF1ZXN0X3N0YXJ0X3RpbWUiLFdiOiJyZXN0cmljdGVkX2RhdGFfcHJvY2Vzc2luZyIsbnE6InJldG9rZW4iLG9xOiJzYW1wbGVfcmF0ZSIsCk5pOiJzY3JlZW5fbmFtZSIsYmQ6InNjcmVlbl9yZXNvbHV0aW9uIixibToiX3NjcmlwdF9zb3VyY2UiLHBxOiJzZWFyY2hfdGVybSIsVGQ6InNlbmRfcGFnZV92aWV3IixYYjoic2VuZF90byIsT2k6InNlcnZlcl9jb250YWluZXJfM3BfZW5yaWNobWVudCIsZGQ6InNlcnZlcl9jb250YWluZXJfdXJsIixxcToic2Vzc2lvbl9hdHRyaWJ1dGVzX2VuY29kZWQiLHloOiJzZXNzaW9uX2R1cmF0aW9uIix6aDoic2Vzc2lvbl9lbmdhZ2VkIixQaToic2Vzc2lvbl9lbmdhZ2VkX3RpbWUiLHhjOiJzZXNzaW9uX2lkIixBaDoic2Vzc2lvbl9udW1iZXIiLFpmOiJfc2hhcmVkX3VzZXJfaWQiLFVkOiJkZWxpdmVyeV9wb3N0YWxfY29kZSIsaXU6Il90YWdfZmlyaW5nX2RlbGF5IixqdToiX3RhZ19maXJpbmdfdGltZSIsa3U6InRlbXBvcmFyeV9jbGllbnRfaWQiLFFpOiJ0ZXN0b25seSIscnE6Il90aW1lem9uZSIsUGU6InRvcG1vc3RfdXJsIixRZToidHJhY2tpbmdfaWQiLFJpOiJ0cmFmZmljX3R5cGUiLApQYToidHJhbnNhY3Rpb25faWQiLGRtOiJ0cmFuc2FjdGlvbl9pZF9zb3VyY2UiLHljOiJ0cmFuc3BvcnRfdXJsIixzcToidHJpcF90eXBlIixWZDoidXBkYXRlIix6YzoidXJsX3Bhc3N0aHJvdWdoIixmbToidXB0Z3MiLGNnOiJfdXNlcl9hZ2VudF9hcmNoaXRlY3R1cmUiLGRnOiJfdXNlcl9hZ2VudF9iaXRuZXNzIixlZzoiX3VzZXJfYWdlbnRfZnVsbF92ZXJzaW9uX2xpc3QiLGZnOiJfdXNlcl9hZ2VudF9tb2JpbGUiLGdnOiJfdXNlcl9hZ2VudF9tb2RlbCIsaGc6Il91c2VyX2FnZW50X3BsYXRmb3JtIixpZzoiX3VzZXJfYWdlbnRfcGxhdGZvcm1fdmVyc2lvbiIsamc6Il91c2VyX2FnZW50X3dvdzY0IixBYzoidXNlcl9kYXRhIixnbToidXNlcl9kYXRhX2F1dG9fbGF0ZW5jeSIsaG06InVzZXJfZGF0YV9hdXRvX21ldGEiLGltOiJ1c2VyX2RhdGFfYXV0b19tdWx0aSIsam06InVzZXJfZGF0YV9hdXRvX3NlbGVjdG9ycyIsa206InVzZXJfZGF0YV9hdXRvX3N0YXR1cyIsQmM6InVzZXJfZGF0YV9tb2RlIiwKbG06InVzZXJfZGF0YV9zZXR0aW5ncyIsZmI6InVzZXJfaWQiLFdkOiJ1c2VyX3Byb3BlcnRpZXMiLG9tOiJfdXNlcl9yZWdpb24iLGtnOiJ1c19wcml2YWN5X3N0cmluZyIsUWE6InZhbHVlIixxbToid2JyYWlkX211bHRpcGxlX2NvbnZlcnNpb25zIixlZDoiX2ZwbV9wYXJhbWV0ZXJzIixXaToiX2hvc3RfbmFtZSIsVm06Il9pbl9wYWdlX2NvbW1hbmQiLFlpOiJfaXBfb3ZlcnJpZGUiLFptOiJfaXNfcGFzc3Rocm91Z2hfY2lkIixKaDoiX21lYXN1cmVtZW50X3R5cGUiLGRlOiJub25fcGVyc29uYWxpemVkX2FkcyIsb2o6Il9zc3RfcGFyYW1ldGVycyIsWXE6InNndG1fZ2VvX3VzZXJfY291bnRyeSIsR2Q6ImNvbnZlcnNpb25fbGFiZWwiLHphOiJwYWdlX2xvY2F0aW9uIixXYzoiX2V4dHJhY3RlZF9kYXRhIixYYzoiZ2xvYmFsX2RldmVsb3Blcl9pZF9zdHJpbmciLE9lOiJ0Y19wcml2YWN5X3N0cmluZyJ9fTt2YXIgSD17Sjp7U286ImFib3J0X3dpdGhvdXRfZmFpbCIsa2k6ImFjY2VwdF9ieV9kZWZhdWx0IixCazoiYWRkX3RhZ190aW1pbmciLERrOiJhZHNfY29uc2VudF9ncmFudGVkIix2ZDoiYWRzX2V2ZW50X3BhZ2VfdmlldyIsd2Q6ImFsbG93X2FkX3BlcnNvbmFsaXphdGlvbiIsUXQ6ImF1dG9fZXZlbnQiLEtrOiJiYXRjaF9vbl9uYXZpZ2F0aW9uIixYZzoiYmlzY290dGlfam9pbl9pZCIsUGs6ImNsaWVudF9pZF9zb3VyY2UiLHVmOiJjb25zZW50X2V2ZW50X2lkIix2ZjoiY29uc2VudF9wcmlvcml0eV9pZCIsU3Q6ImNvbnNlbnRfc3RhdGUiLHNhOiJjb25zZW50X3VwZGF0ZWQiLHdmOiJjb252ZXJzaW9uX2xpbmtlcl9lbmFibGVkIixUdDoiY29udmVyc2lvbl9tYXJraW5nX2NhbGxlZCIsR2E6ImNvb2tpZV9vcHRpb25zIixvbDoiZGNfcmFuZG9tIixadDoiZGVkdXBlX2lkIixQYzoiZW1fZXZlbnQiLGJ1OiJlbmRwb2ludF9mb3JfZGVidWciLHRsOiJlbmhhbmNlZF9jbGllbnRfaWRfc291cmNlIiwKcHA6ImVuaGFuY2VkX21hdGNoX3Jlc3VsdCIscm06ImV1aWRfbG9nZ2VkX2luX3N0YXRlIixsZzoiZXVpZF9tb2RlX2VuYWJsZWQiLHRxOiJldmVudF9wcm92ZW5hbmNlIixtdToiZXZlbnRfc291cmNlIixFYjoiZXZlbnRfc3RhcnRfdGltZXN0YW1wX21zIix3bToiZXZlbnRfdXNhZ2UiLENoOiJleHRyYV90YWdfZXhwZXJpbWVudF9pZHMiLHB1OiJhZGRfcGFyYW1ldGVyIixVaToiY291bnRpbmdfbWV0aG9kIixEaDoic2VuZF9hc19pZnJhbWUiLHF1OiJwYXJhbWV0ZXJfb3JkZXIiLEVoOiJwYXJzZWRfdGFyZ2V0IixzdToiZm9ybV9ldmVudF9jYW5jZWxlZCIsQXE6ImdhNF9jb2xsZWN0aW9uX3N1YmRvbWFpbiIsVmk6ImdhNF9yZXF1ZXN0X2ZsYWdzIixObToiZ2JyYWlkX2Nvb2tpZV9tYXJrZWQiLFFtOiJndG1fZXh0cmFjdGVkX2RhdGEiLENjOiJoYW5kbGVfaW50ZXJuYWxseSIsdXU6Imhhc19nYV9jb252ZXJzaW9uX2NvbnNlbnRzIixkYToiaGl0X3R5cGUiLERjOiJoaXRfdHlwZV9vdmVycmlkZSIsCkhxOiJpZ25vcmVfZHVwZV9jb25maWciLE91OiJpc19jb25maWdfY29tbWFuZCIsR2g6ImlzX2NvbnNlbnRfdXBkYXRlIixtZzoiaXNfY29udmVyc2lvbiIsV206ImlzX2Vjb21tZXJjZSIsWG06ImlzX2VjX2NtX3NwbGl0IixhZToiaXNfZXh0ZXJuYWxfZXZlbnQiLG5nOiJpc19maXJzdF92aXNpdCIsWW06ImlzX2ZpcnN0X3Zpc2l0X2NvbnZlcnNpb24iLFppOiJpc19mbF9mYWxsYmFja19jb252ZXJzaW9uX2Zsb3dfYWxsb3dlZCIsZmQ6ImlzX2ZwbV9lbmNyeXB0aW9uIixhajoiaXNfZnBtX3NwbGl0IixvYjoiaXNfZ2NwX2Jyb3dzZXIiLGJqOiJpc19nb29nbGVfbWVhc3VyZW1lbnRfYWxsb3dlZCIsY2o6ImlzX2dvb2dsZV9zaWduYWxzX2VuYWJsZWQiLGJlOiJpc19tZXJjaGFudF9jZW50ZXIiLEhoOiJpc19uZXdfdG9fc2l0ZSIsRWM6ImlzX3BlcnNvbmFsaXphdGlvbiIsZGo6ImlzX3NlcnZlcl9zaWRlX2Rlc3RpbmF0aW9uIixUZToiaXNfc2Vzc2lvbl9zdGFydCIsYm46ImlzX3Nlc3Npb25fc3RhcnRfY29udmVyc2lvbiIsClB1OiJpc19zZ3RtX2dhX2Fkc19jb252ZXJzaW9uX3N0dWR5X2NvbnRyb2xfZ3JvdXAiLFF1OiJpc19zZ3RtX3ByZWhpdCIsZG46ImlzX3NndG1fc2VydmljZV93b3JrZXIiLEloOiJpc19zcGxpdF9jb252ZXJzaW9uIixJcToiaXNfc3luIixGYzoiaXNfdGVzdF9ldmVudCIsb2c6ImpvaW5faWQiLGVqOiJqb2luX2VsYXBzZWQiLHBnOiJqb2luX3RpbWVyX3NlYyIsZ246ImxvY2FsX3N0b3JhZ2VfYXdfY29udmVyc2lvbl9jb3VudGVycyIsV2U6InR1bm5lbF91cGRhdGVkIixVdToicHJlaGl0X2Zvcl9yZXRyeSIsV3U6InByb21pc2VzIixYdToicmVjb3JkX2F3X2xhdGVuY3kiLFhlOiJyZWRhY3RfYWRzX2RhdGEiLFllOiJyZWRhY3RfY2xpY2tfaWRzIixwbjoicmVtYXJrZXRpbmdfb25seSIsbGo6InNlbmRfY2NtX3BhcmFsbGVsX3BpbmciLGhkOiJzZW5kX2RvdWJsZWNsaWNrX2pvaW4iLE1oOiJzZW5kX2ZwbV9nZW9fam9pbiIsTmg6InNlbmRfZnBtX2dvb2dsZV9qb2luIixadToic2VuZF9jY21fcGFyYWxsZWxfdGVzdF9waW5nIiwKcm46InNlbmRfZ29vZ2xlX21lYXN1cmVtZW50IixyZzoic2VuZF90bGRfam9pbiIsc2c6InNlbmRfdG9fZGVzdGluYXRpb25zIixtajoic2VuZF90b190YXJnZXRzIixzbjoic2VuZF91c2VyX2RhdGFfaGl0Iixwajoic2VydmljZV93b3JrZXJfY29udGV4dCIsTmI6InNvdXJjZV9jYW5vbmljYWxfaWQiLEphOiJzcGVjdWxhdGl2ZSIseW46InNwZWN1bGF0aXZlX2luX21lc3NhZ2UiLEFuOiJzdXBwcmVzc19zY3JpcHRfbG9hZCIsQm46InN5bl9vcl9tb2QiLHpqOiJ0cmFuc2llbnRfZWNzaWQiLHRnOiJ0cmFuc21pc3Npb25fdHlwZSIsWWE6InVzZXJfZGF0YSIsZ3Y6InVzZXJfZGF0YV9mcm9tX2F1dG9tYXRpYyIsaHY6InVzZXJfZGF0YV9mcm9tX2F1dG9tYXRpY19nZXR0ZXIiLEduOiJ1c2VyX2RhdGFfZnJvbV9jb2RlIixpcjoidXNlcl9kYXRhX2Zyb21fbWFudWFsIixqdjoidXNlcl9kYXRhX21vZGUiLHVnOiJ1c2VyX2lkX3VwZGF0ZWQifX07CnZhciB0Zz1mdW5jdGlvbihhKXt2YXIgYj17fSxjPTA7R2IoYSxmdW5jdGlvbihlLGYpe2lmKGYhPW51bGwpe3ZhciBnPSgiIitmKS5yZXBsYWNlKC9+L2csIn5+Iik7aWYocWcuaGFzT3duUHJvcGVydHkoZSkpYltxZ1tlXV09ZztlbHNlIGlmKHJnLmhhc093blByb3BlcnR5KGUpKXt2YXIgaD1yZ1tlXTtiLmhhc093blByb3BlcnR5KGgpfHwoYltoXT1nKX1lbHNlIGlmKGU9PT0iY2F0ZWdvcnkiKWZvcih2YXIgbD1nLnNwbGl0KCIvIiw1KSxuPTA7bjxsLmxlbmd0aDtuKyspe3ZhciBwPWIscT1zZ1tuXSxyPWxbbl07cC5oYXNPd25Qcm9wZXJ0eShxKXx8KHBbcV09cil9ZWxzZSBpZihjPDI3KXt2YXIgdD1TdHJpbmcuZnJvbUNoYXJDb2RlKGM8MTA/NDgrYzo2NStjLTEwKTtiWyJrIit0XT0oIiIrU3RyaW5nKGUpKS5yZXBsYWNlKC9+L2csIn5+Iik7YlsidiIrdF09ZztjKyt9fX0pO3ZhciBkPVtdO0diKGIsZnVuY3Rpb24oZSxmKXtkLnB1c2goIiIrZStmKX0pO3JldHVybiBkLmpvaW4oIn4iKX0sCnFnPXtpdGVtX2lkOiJpZCIsaXRlbV9uYW1lOiJubSIsaXRlbV9icmFuZDoiYnIiLGl0ZW1fY2F0ZWdvcnk6ImNhIixpdGVtX2NhdGVnb3J5MjoiYzIiLGl0ZW1fY2F0ZWdvcnkzOiJjMyIsaXRlbV9jYXRlZ29yeTQ6ImM0IixpdGVtX2NhdGVnb3J5NToiYzUiLGl0ZW1fdmFyaWFudDoidmEiLHByaWNlOiJwciIscXVhbnRpdHk6InF0Iixjb3Vwb246ImNwIixpdGVtX2xpc3RfbmFtZToibG4iLGluZGV4OiJscCIsaXRlbV9saXN0X2lkOiJsaSIsZGlzY291bnQ6ImRzIixhZmZpbGlhdGlvbjoiYWYiLHByb21vdGlvbl9pZDoicGkiLHByb21vdGlvbl9uYW1lOiJwbiIsY3JlYXRpdmVfbmFtZToiY24iLGNyZWF0aXZlX3Nsb3Q6ImNzIixsb2NhdGlvbl9pZDoibG8ifSxyZz17aWQ6ImlkIixuYW1lOiJubSIsYnJhbmQ6ImJyIix2YXJpYW50OiJ2YSIsbGlzdF9uYW1lOiJsbiIsbGlzdF9wb3NpdGlvbjoibHAiLGxpc3Q6ImxuIixwb3NpdGlvbjoibHAiLGNyZWF0aXZlOiJjbiJ9LHNnPVsiY2EiLAoiYzIiLCJjMyIsImM0IiwiYzUiXTt2YXIgdWc9ZnVuY3Rpb24oYSl7dmFyIGI9W107R2IoYSxmdW5jdGlvbihjLGQpe2QhPW51bGwmJmIucHVzaChlbmNvZGVVUklDb21wb25lbnQoYykrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZCkpKX0pO3JldHVybiBiLmpvaW4oIiYiKX0sdmc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt0aGlzLmJhc2VVcmw9Yjt0aGlzLmVuZHBvaW50PWM7dGhpcy5kZXN0aW5hdGlvbklkPWY7dGhpcy5ldmVudElkPWc7dGhpcy5wcmlvcml0eUlkPWg7dGhpcy5CYT1hLkJhO3RoaXMudmU9YS52ZTt0aGlzLkxqPWEuTGo7dGhpcy5OPWQ7dGhpcy5LPXVnKGEuQmEpO3RoaXMuSD11ZyhhLkxqKTt0aGlzLlI9dGhpcy5ILmxlbmd0aDtpZihlJiZ0aGlzLlI+MTYzODQpdGhyb3cgRXJyb3IoIkVWRU5UX1RPT19MQVJHRSIpO307CnZhciB3Zz1mdW5jdGlvbigpe3RoaXMuZXZlbnRzPVtdO3RoaXMuSD0iIjt0aGlzLkJhPXt9O3RoaXMuYmFzZVVybD0iIjt0aGlzLk49MDt0aGlzLks9MTt0aGlzLmVuZHBvaW50PTB9O3dnLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuUihhKT8odGhpcy5ldmVudHMucHVzaChhKSx0aGlzLkg9YS5LLHRoaXMuQmE9YS5CYSx0aGlzLmJhc2VVcmw9YS5iYXNlVXJsLHRoaXMuTis9YS5SLHRoaXMuSz1hLk4sdGhpcy5lbmRwb2ludD1hLmVuZHBvaW50LHRoaXMuZGVzdGluYXRpb25JZD1hLmRlc3RpbmF0aW9uSWQsdGhpcy5aPWEuZXZlbnRJZCx0aGlzLmZhPWEucHJpb3JpdHlJZCwhMCk6ITF9O3dnLnByb3RvdHlwZS5SPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmV2ZW50cy5sZW5ndGg/dGhpcy5ldmVudHMubGVuZ3RoPj0yMHx8YS5SK3RoaXMuTj49MTYzODQ/ITE6dGhpcy5iYXNlVXJsPT09YS5iYXNlVXJsJiZ0aGlzLks9PT1hLk4mJnRoaXMuamEoYSk6ITB9Owp3Zy5wcm90b3R5cGUuamE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuSD09PWEuS307dmFyIEo9e1U6e2twOjEsbXA6MixFbjozLG5uOjQscWw6NSxybDo2LEVxOjcsbnA6OCxEcTo5LGpwOjEwLGhwOjExLHhuOjEyLHZuOjEzLE5rOjE0LFVvOjE1LFdvOjE2LGhuOjE3LHNsOjE4LGZuOjE5LGxwOjIwLFBxOjIxLGFwOjIyLFZvOjIzLFhvOjI0LG5sOjI1LExrOjI2LGVyOjI3LEptOjI4LFVtOjI5LFRtOjMwLFNtOjMxLE1tOjMyLEttOjMzLExtOjM0LEdtOjM1LEZtOjM2LEhtOjM3LEltOjM4LEJxOjM5LENxOjQwLFVxOjQxfX07Si5VW0ouVS5rcF09IkNSRUFURV9FVkVOVF9TT1VSQ0UiO0ouVVtKLlUubXBdPSJFRElUX0VWRU5UIjtKLlVbSi5VLkVuXT0iVFJBRkZJQ19UWVBFIjtKLlVbSi5VLm5uXT0iUkVGRVJSQUxfRVhDTFVTSU9OIjtKLlVbSi5VLnFsXT0iRUNPTU1FUkNFX0ZST01fR1RNX1RBRyI7Si5VW0ouVS5ybF09IkVDT01NRVJDRV9GUk9NX0dUTV9VQV9TQ0hFTUEiO0ouVVtKLlUuRXFdPSJHQV9TRU5EIjtKLlVbSi5VLm5wXT0iRU1fRk9STSI7CkouVVtKLlUuRHFdPSJHQV9HQU1fTElOSyI7Si5VW0ouVS5qcF09IkNSRUFURV9FVkVOVF9BVVRPX1BBR0VfUEFUSCI7Si5VW0ouVS5ocF09IkNSRUFURURfRVZFTlQiO0ouVVtKLlUueG5dPSJTSURFTE9BREVEIjtKLlVbSi5VLnZuXT0iU0dUTV9MRUdBQ1lfQ09ORklHVVJBVElPTiI7Si5VW0ouVS5Oa109IkNDRF9FTV9FVkVOVCI7Si5VW0ouVS5Vb109IkFVVE9fUkVEQUNUX0VNQUlMIjtKLlVbSi5VLldvXT0iQVVUT19SRURBQ1RfUVVFUllfUEFSQU0iO0ouVVtKLlUuaG5dPSJNVUxUSVBMRV9QQUdFVklFV19GUk9NX0NPTkZJRyI7Si5VW0ouVS5zbF09IkVNX0VWRU5UX1NFTlRfQkVGT1JFX0NPTkZJRyI7Si5VW0ouVS5mbl09IkxPQURFRF9WSUFfQ1NUX09SX1NJREVMT0FESU5HIjtKLlVbSi5VLmxwXT0iREVDT0RFRF9QQVJBTV9NQVRDSCI7Si5VW0ouVS5QcV09Ik5PTl9ERUNPREVEX1BBUkFNX01BVENIIjtKLlVbSi5VLmFwXT0iQ0NEX0VWRU5UX1NHVE0iOwpKLlVbSi5VLlZvXT0iQVVUT19SRURBQ1RfRU1BSUxfU0dUTSI7Si5VW0ouVS5Yb109IkFVVE9fUkVEQUNUX1FVRVJZX1BBUkFNX1NHVE0iO0ouVVtKLlUubmxdPSJEQUlMWV9MSU1JVF9SRUFDSEVEIjtKLlVbSi5VLkxrXT0iQlVSU1RfTElNSVRfUkVBQ0hFRCI7Si5VW0ouVS5lcl09IlNIQVJFRF9VU0VSX0lEX1NFVF9BRlRFUl9SRVFVRVNUIjtKLlVbSi5VLkptXT0iR0E0X01VTFRJUExFX1NFU1NJT05fQ09PS0lFUyI7Si5VW0ouVS5VbV09IklOVkFMSURfR0E0X1NFU1NJT05fQ09VTlQiO0ouVVtKLlUuVG1dPSJJTlZBTElEX0dBNF9MQVNUX0VWRU5UX1RJTUVTVEFNUCI7Si5VW0ouVS5TbV09IklOVkFMSURfR0E0X0pPSU5fVElNRVIiO0ouVVtKLlUuTW1dPSJHQTRfU1RBTEVfU0VTU0lPTl9DT09LSUVfU0VMRUNURUQiO0ouVVtKLlUuS21dPSJHQTRfU0VTU0lPTl9DT09LSUVfR1MxX1JFQUQiO0ouVVtKLlUuTG1dPSJHQTRfU0VTU0lPTl9DT09LSUVfR1MyX1JFQUQiOwpKLlVbSi5VLkdtXT0iR0E0X0RMX1BBUkFNX1JFQ09WRVJZX0FWQUlMQUJMRSI7Si5VW0ouVS5GbV09IkdBNF9ETF9QQVJBTV9SRUNPVkVSWV9BUFBMSUVEIjtKLlVbSi5VLkhtXT0iR0E0X0dPT0dMRV9NRUFTVVJFTUVOVF9BTExPV0VEIjtKLlVbSi5VLkltXT0iR0E0X0dPT0dMRV9TSUdOQUxTX0VOQUJMRUQiO0ouVVtKLlUuQnFdPSJHQTRfRkFMTEJBQ0tfUkVRVUVTVCI7Si5VW0ouVS5DcV09IkdBX0FEU19MSU5LX0JFRk9SRV9DT05WRVJTSU9OX01BUktJTkciO0ouVVtKLlUuVXFdPSJQTEFUSU5VTV9FTElHSUJMRSI7dmFyIHhnPXt9LHlnPSh4Zy51YWE9ITAseGcudWFiPSEwLHhnLnVhZnZsPSEwLHhnLnVhbWI9ITAseGcudWFtPSEwLHhnLnVhcD0hMCx4Zy51YXB2PSEwLHhnLnVhdz0hMCx4Zyk7CnZhciBCZz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZXZlbnRzO2lmKGMubGVuZ3RoPT09MSlyZXR1cm4gemcoY1swXSxiKTt2YXIgZD1bXTthLkgmJmQucHVzaChhLkgpO2Zvcih2YXIgZT17fSxmPTA7ZjxjLmxlbmd0aDtmKyspR2IoY1tmXS52ZSxmdW5jdGlvbih0LHUpe3UhPW51bGwmJihlW3RdPWVbdF18fHt9LGVbdF1bU3RyaW5nKHUpXT1lW3RdW1N0cmluZyh1KV0rMXx8MSl9KTt2YXIgZz17fTtHYihlLGZ1bmN0aW9uKHQsdSl7dmFyIHYseD0tMSx5PTA7R2IodSxmdW5jdGlvbih6LEMpe3krPUM7dmFyIEQ9KHoubGVuZ3RoK3QubGVuZ3RoKzIpKihDLTEpO0Q+eCYmKHY9eix4PUQpfSk7eT09PWMubGVuZ3RoJiYoZ1t0XT12KX0pO0FnKGcsZCk7YiYmZC5wdXNoKCJfcz0iK2IpO2Zvcih2YXIgaD1kLmpvaW4oIiYiKSxsPVtdLG49e30scD0wO3A8Yy5sZW5ndGg7bj17Zms6dm9pZCAwfSxwKyspe3ZhciBxPVtdO24uZms9e307R2IoY1twXS52ZSxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odSwKdil7Z1t1XSE9PSIiK3YmJih0LmZrW3VdPXYpfX0obikpO2NbcF0uSCYmcS5wdXNoKGNbcF0uSCk7QWcobi5mayxxKTtsLnB1c2gocS5qb2luKCImIikpfXZhciByPWwuam9pbigiXHJcbiIpO3JldHVybntwYXJhbXM6aCxib2R5OnJ9fSx6Zz1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO2EuSyYmYy5wdXNoKGEuSyk7YiYmYy5wdXNoKCJfcz0iK2IpO0FnKGEudmUsYyk7dmFyIGQ9ITE7YS5IJiYoYy5wdXNoKGEuSCksZD0hMCk7dmFyIGU9Yy5qb2luKCImIiksZj0iIixnPWUubGVuZ3RoK2EuYmFzZVVybC5sZW5ndGgrMTtkJiZnPjIwNDgmJihmPWMucG9wKCksZT1jLmpvaW4oIiYiKSk7cmV0dXJue3BhcmFtczplLGJvZHk6Zn19LEFnPWZ1bmN0aW9uKGEsYil7R2IoYSxmdW5jdGlvbihjLGQpe2QhPW51bGwmJmIucHVzaChlbmNvZGVVUklDb21wb25lbnQoYykrIj0iK2VuY29kZVVSSUNvbXBvbmVudChkKSl9KX07CnZhciBFZz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1hLGU9YltjXTtpZighQ2cuZXhlYyhlKSl0aHJvdyBFcnJvcigiSW52YWxpZCBrZXkgd2lsZGNhcmQiKTt2YXIgZj1lLmluZGV4T2YoIi4qIiksZz1mIT09LTEmJmY9PT1lLmxlbmd0aC0yLGg9Zz9lLnNsaWNlKDAsZS5sZW5ndGgtMik6ZSxsO2E6aWYoZC5sZW5ndGg9PT0wKWw9ITE7ZWxzZXtmb3IodmFyIG49ZC5zcGxpdCgiLiIpLHA9MDtwPG4ubGVuZ3RoO3ArKylpZighRGcuZXhlYyhuW3BdKSl7bD0hMTticmVhayBhfWw9ITB9aWYoIWx8fGgubGVuZ3RoPmQubGVuZ3RofHwhZyYmZC5sZW5ndGghPT1lLmxlbmd0aD8wOmc/U2IoZCxoKSYmKGQ9PT1ofHxkLmNoYXJBdChoLmxlbmd0aCk9PT0iLiIpOmQ9PT1oKXJldHVybiEwfXJldHVybiExfSxEZz0vXlthLXokX11bXHctJF0qJC9pLENnPS9eKD86W2Etel8kXVthLXotXyQwLTldKlwuKSpbYS16XyRdW2Etei1fJDAtOV0qKD86XC5cKik/JC9pOwp2YXIgRmc9WyJtYXRjaGVzIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIl07ZnVuY3Rpb24gR2coYSxiKXtpZighYSlyZXR1cm4hMTt0cnl7Zm9yKHZhciBjPTA7YzxGZy5sZW5ndGg7YysrKXt2YXIgZD1GZ1tjXTtpZihhW2RdIT1udWxsKXJldHVybiBhW2RdKGIpfX1jYXRjaChlKXt9cmV0dXJuITF9ZnVuY3Rpb24gSGcoYSxiKXt2YXIgYz1TdHJpbmcoYSksZD1TdHJpbmcoYiksZT1jLmxlbmd0aC1kLmxlbmd0aDtyZXR1cm4gZT49MCYmYy5pbmRleE9mKGQsZSk9PT1lfWZ1bmN0aW9uIElnKGEsYil7cmV0dXJuIFN0cmluZyhhKS5zcGxpdCgiLCIpLmluZGV4T2YoU3RyaW5nKGIpKT49MH0KZnVuY3Rpb24gSmcoYSxiLGMsZCl7dmFyIGU9Yz8iaSI6dm9pZCAwO3RyeXt2YXIgZj1TdHJpbmcoYikrU3RyaW5nKGUpLGc9ZD09bnVsbD92b2lkIDA6ZC5nZXQoZik7Z3x8KGc9bmV3IFJlZ0V4cChiLGUpLGQ9PW51bGx8fGQuc2V0KGYsZykpO3JldHVybiBnLnRlc3QoYSl9Y2F0Y2goaCl7cmV0dXJuITF9fWZ1bmN0aW9uIEtnKGEsYil7cmV0dXJuIFN0cmluZyhhKS5pbmRleE9mKFN0cmluZyhiKSk+PTB9ZnVuY3Rpb24gTGcoYSxiKXtyZXR1cm4gU3RyaW5nKGEpPT09U3RyaW5nKGIpfWZ1bmN0aW9uIE1nKGEsYil7cmV0dXJuIE51bWJlcihhKT49TnVtYmVyKGIpfWZ1bmN0aW9uIE5nKGEsYil7cmV0dXJuIE51bWJlcihhKTw9TnVtYmVyKGIpfWZ1bmN0aW9uIE9nKGEsYil7cmV0dXJuIE51bWJlcihhKT5OdW1iZXIoYil9ZnVuY3Rpb24gUGcoYSxiKXtyZXR1cm4gTnVtYmVyKGEpPE51bWJlcihiKX0KZnVuY3Rpb24gUWcoYSxiKXtyZXR1cm4gU2IoU3RyaW5nKGEpLFN0cmluZyhiKSl9O2Z1bmN0aW9uIFhnKGEpe3ZhciBiPWEuc2VhcmNoO3JldHVybiBhLnByb3RvY29sKyIvLyIrYS5ob3N0bmFtZSthLnBhdGhuYW1lKyhiP2IrIiZyaWNoc3N0c3NlIjoiP3JpY2hzc3Rzc2UiKX07dmFyIFlnPWZ1bmN0aW9uKCl7dGhpcy5SPSIifSwkZz1mdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPWIuZmFsbGJhY2tfdXJsLGQ9Yi5mYWxsYmFja191cmxfbWV0aG9kO2lmKGMmJmQpe3ZhciBlPXt9O1pnKGEsKGVbZF09W2NdLGUub3B0aW9ucz17fSxlKSl9fX0sYWg9ZnVuY3Rpb24oYSxiLGMpe2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBkPW0oYSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7dHlwZW9mIGY9PT0ic3RyaW5nIiYmYyhmLGIpfX0sWmc9ZnVuY3Rpb24oYSxiKXtpZihiKWZvcih2YXIgYz1DZChiLm9wdGlvbnMpP2Iub3B0aW9uczp7fSxkPW0oT2JqZWN0LmtleXMoYikpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlLGc9YltmXTtzd2l0Y2goZil7Y2FzZSAic2VuZF9waXhlbCI6YWgoZyxjLGZ1bmN0aW9uKGgsbCl7cmV0dXJuIHZvaWQgYS5LKGgsbCl9KTticmVhaztjYXNlICJmZXRjaCI6YWgoZywKYyxmdW5jdGlvbihoLGwpe3JldHVybiB2b2lkIGEuSChoLGwpfSl9fX07dmFyIGJoPS9eKFthLXpdW2EtejAtOV0qKTooIXxcPykoXCp8c3RyaW5nfGJvb2xlYW58bnVtYmVyfEZufFBpeGllTWFwfExpc3R8T3BhcXVlVmFsdWUpJC9pLGNoPXtGbjoiZnVuY3Rpb24iLFBpeGllTWFwOiJPYmplY3QiLExpc3Q6IkFycmF5In07CmZ1bmN0aW9uIGRoKGEsYil7Zm9yKHZhciBjPVsiaW5wdXQ6ISoiXSxkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWJoLmV4ZWMoY1tkXSk7aWYoIWUpdGhyb3cgRXJyb3IoIkludGVybmFsIEVycm9yIGluICIrYSk7dmFyIGY9ZVsxXSxnPWVbMl09PT0iISIsaD1lWzNdLGw9YltkXTtpZihsPT1udWxsKXtpZihnKXRocm93IEVycm9yKCJFcnJvciBpbiAiK2ErIi4gUmVxdWlyZWQgYXJndW1lbnQgIitmKyIgbm90IHN1cHBsaWVkLiIpO31lbHNlIGlmKGghPT0iKiIpe3ZhciBuPXR5cGVvZiBsO2wgaW5zdGFuY2VvZiBLZD9uPSJGbiI6bCBpbnN0YW5jZW9mIEdkP249Ikxpc3QiOmwgaW5zdGFuY2VvZiBrYj9uPSJQaXhpZU1hcCI6bCBpbnN0YW5jZW9mIFNkP249IlBpeGllUHJvbWlzZSI6bCBpbnN0YW5jZW9mIFBkJiYobj0iT3BhcXVlVmFsdWUiKTtpZihuIT09aCl0aHJvdyBFcnJvcigiRXJyb3IgaW4gIithKyIuIEFyZ3VtZW50ICIrZisiIGhhcyB0eXBlICIrKChjaFtuXXx8bikrIiwgd2hpY2ggZG9lcyBub3QgbWF0Y2ggcmVxdWlyZWQgdHlwZSAiKSsKKChjaFtoXXx8aCkrIi4iKSk7fX19ZnVuY3Rpb24gSyhhLGIsYyl7Zm9yKHZhciBkPVtdLGU9bShjKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtnIGluc3RhbmNlb2YgS2Q/ZC5wdXNoKCJmdW5jdGlvbiIpOmcgaW5zdGFuY2VvZiBHZD9kLnB1c2goIkFycmF5Iik6ZyBpbnN0YW5jZW9mIGtiP2QucHVzaCgiT2JqZWN0Iik6ZyBpbnN0YW5jZW9mIFNkP2QucHVzaCgiUHJvbWlzZSIpOmcgaW5zdGFuY2VvZiBQZD9kLnB1c2goIk9wYXF1ZVZhbHVlIik6ZC5wdXNoKHR5cGVvZiBnKX1yZXR1cm4gRXJyb3IoIkFyZ3VtZW50IGVycm9yIGluICIrYSsiLiBFeHBlY3RlZCBhcmd1bWVudCB0eXBlcyBbIisoYi5qb2luKCIsIikrIl0sIGJ1dCByZWNlaXZlZCBbIikrKGQuam9pbigiLCIpKyJdLiIpKX1mdW5jdGlvbiBlaChhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGtifWZ1bmN0aW9uIGZoKGEpe3JldHVybiBlaChhKXx8YT09PW51bGx8fGdoKGEpfQpmdW5jdGlvbiBoaChhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEtkfWZ1bmN0aW9uIGloKGEpe3JldHVybiBoaChhKXx8YT09PW51bGx8fGdoKGEpfWZ1bmN0aW9uIGpoKGEpe3JldHVybiBhIGluc3RhbmNlb2YgR2R9ZnVuY3Rpb24ga2goYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBQZH1mdW5jdGlvbiBsaChhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIn1mdW5jdGlvbiBtaChhKXtyZXR1cm4gbGgoYSl8fGE9PT1udWxsfHxnaChhKX1mdW5jdGlvbiBuaChhKXtyZXR1cm4gdHlwZW9mIGE9PT0iYm9vbGVhbiJ9ZnVuY3Rpb24gb2goYSl7cmV0dXJuIG5oKGEpfHxnaChhKX1mdW5jdGlvbiBwaChhKXtyZXR1cm4gbmgoYSl8fGE9PT1udWxsfHxnaChhKX1mdW5jdGlvbiBxaChhKXtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIn1mdW5jdGlvbiBnaChhKXtyZXR1cm4gYT09PXZvaWQgMH07ZnVuY3Rpb24gcmgoYSl7cmV0dXJuIiIrYX0KZnVuY3Rpb24gc2goYSxiKXt2YXIgYz1bXTtyZXR1cm4gY307ZnVuY3Rpb24gdGgoYSxiKXt2YXIgYz1uZXcgS2QoYSxmdW5jdGlvbigpe2Zvcih2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksZT0wO2U8ZC5sZW5ndGg7ZSsrKWRbZV09dGhpcy5ldmFsdWF0ZShkW2VdKTt0cnl7cmV0dXJuIGIuYXBwbHkodGhpcyxkKX1jYXRjaChnKXt0aHJvdyBjYihnKTt9fSk7Yy5aYSgpO3JldHVybiBjfQpmdW5jdGlvbiB1aChhLGIpe3ZhciBjPW5ldyBrYixkO2ZvcihkIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShkKSl7dmFyIGU9YltkXTt5YihlKT9jLnNldChkLHRoKGErIl8iK2QsZSkpOkNkKGUpP2Muc2V0KGQsdWgoYSsiXyIrZCxlKSk6KEFiKGUpfHx6YihlKXx8dHlwZW9mIGU9PT0iYm9vbGVhbiIpJiZjLnNldChkLGUpfWMuWmEoKTtyZXR1cm4gY307ZnVuY3Rpb24gd2goYSxiKXtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7aWYoIW1oKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJ1bmRlZmluZWQiXSxhcmd1bWVudHMpO3ZhciBjPXt9LGQ9bmV3IGtiO3JldHVybiBkPXVoKCJBc3NlcnRBcGlTdWJqZWN0IiwKYyl9O2Z1bmN0aW9uIHhoKGEsYil7aWYoIW1oKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJ1bmRlZmluZWQiXSxhcmd1bWVudHMpO2lmKGEgaW5zdGFuY2VvZiBTZCl0aHJvdyBFcnJvcigiQXJndW1lbnQgYWN0dWFsIGNhbm5vdCBoYXZlIHR5cGUgUHJvbWlzZS4gQXNzZXJ0aW9ucyBvbiBhc3luY2hyb25vdXMgY29kZSBhcmVuJ3Qgc3VwcG9ydGVkLiIpO3ZhciBjPXt9LGQ9bmV3IGtiO3JldHVybiBkPXVoKCJBc3NlcnRUaGF0U3ViamVjdCIsYyl9O2Z1bmN0aW9uIHloKGEpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgYj1PYS5hcHBseSgwLGFyZ3VtZW50cyksYz1bXSxkPXRoaXMuVCxlPTA7ZTxiLmxlbmd0aDsrK2UpYy5wdXNoKFRkKGJbZV0sZCkpO3JldHVybiBVZChhLmFwcGx5KG51bGwsYykpfX1mdW5jdGlvbiB6aCgpe2Zvcih2YXIgYT1NYXRoLGI9QWgsYz17fSxkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07YS5oYXNPd25Qcm9wZXJ0eShlKSYmKGNbZV09eWgoYVtlXS5iaW5kKGEpKSl9cmV0dXJuIGN9O2Z1bmN0aW9uIEJoKGEpe3JldHVybiBhIT1udWxsJiZTYihhLCJfX2N2dF8iKX07ZnVuY3Rpb24gQ2goYSl7dmFyIGI7cmV0dXJuIGJ9O2Z1bmN0aW9uIERoKGEpe3ZhciBiO2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIl0sYXJndW1lbnRzKTt0cnl7Yj1kZWNvZGVVUklDb21wb25lbnQoYSl9Y2F0Y2goYyl7fXJldHVybiBifTtmdW5jdGlvbiBFaChhKXt0cnl7cmV0dXJuIGVuY29kZVVSSShhKX1jYXRjaChiKXt9fTtmdW5jdGlvbiBGaChhKXt0cnl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYSkpfWNhdGNoKGIpe319O2Z1bmN0aW9uIEdoKGEsYil7dmFyIGM9ITE7dmFyIGQ9SlNPTi5wYXJzZShhKTtpZighZCl0aHJvdyBFcnJvcigiSW52YWxpZCBib29sZWFuIGV4cHJlc3Npb24gc3RyaW5nIHdhcyBnaXZlbi4iKTtjPUhoKGQsYik7cmV0dXJuIGN9CnZhciBJaD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXtpZihhPT09dm9pZCAwKXJldHVybjthPWFbYltjXV19cmV0dXJuIGF9LEpoPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5wcmVIaXQ7aWYoYyl7dmFyIGQ9YVswXTtzd2l0Y2goZCl7Y2FzZSAiaGl0RGF0YSI6cmV0dXJuIGEubGVuZ3RoPDI/dm9pZCAwOkloKGMuZ2V0SGl0RGF0YShhWzFdKSxhLnNsaWNlKDIpKTtjYXNlICJtZXRhZGF0YSI6cmV0dXJuIGEubGVuZ3RoPDI/dm9pZCAwOkloKGMuZ2V0TWV0YWRhdGEoYVsxXSksYS5zbGljZSgyKSk7Y2FzZSAiZXZlbnROYW1lIjpyZXR1cm4gYy5nZXRFdmVudE5hbWUoKTtjYXNlICJkZXN0aW5hdGlvbklkIjpyZXR1cm4gYy5nZXREZXN0aW5hdGlvbklkKCk7ZGVmYXVsdDp0aHJvdyBFcnJvcihkKyIgaXMgbm90IGEgdmFsaWQgZmllbGQgdGhhdCBjYW4gYmUgYWNjZXNzZWRcbiAgICAgICAgICAgICAgICAgICAgICBmcm9tIFByZUhpdCBkYXRhLiIpO319fSwKS2g9ZnVuY3Rpb24oYSxiKXtpZihhKXtpZihhLmNvbnRleHRWYWx1ZSE9PXZvaWQgMCl7dmFyIGM7YTp7dmFyIGQ9YS5jb250ZXh0VmFsdWUsZT1kLmtleVBhcnRzO2lmKGUmJmUubGVuZ3RoIT09MCl7dmFyIGY9ZC5uYW1lc3BhY2VUeXBlO3N3aXRjaChmKXtjYXNlIDE6Yz1KaChlLGIpO2JyZWFrIGE7Y2FzZSAyOnZhciBnPWIubWFjcm87Yz1nP2dbZVswXV06dm9pZCAwO2JyZWFrIGE7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2UgVHlwZSB1c2VkOiAiK2YpO319Yz12b2lkIDB9cmV0dXJuIGN9aWYoYS5ib29sZWFuRXhwcmVzc2lvblZhbHVlIT09dm9pZCAwKXJldHVybiBIaChhLmJvb2xlYW5FeHByZXNzaW9uVmFsdWUsYik7aWYoYS5ib29sZWFuVmFsdWUhPT12b2lkIDApcmV0dXJuISFhLmJvb2xlYW5WYWx1ZTtpZihhLnN0cmluZ1ZhbHVlIT09dm9pZCAwKXJldHVybiBTdHJpbmcoYS5zdHJpbmdWYWx1ZSk7aWYoYS5pbnRlZ2VyVmFsdWUhPT12b2lkIDApcmV0dXJuIE51bWJlcihhLmludGVnZXJWYWx1ZSk7CmlmKGEuZG91YmxlVmFsdWUhPT12b2lkIDApcmV0dXJuIE51bWJlcihhLmRvdWJsZVZhbHVlKTt0aHJvdyBFcnJvcigiVW5rbm93biBmaWVsZCB1c2VkIGZvciB2YXJpYWJsZSBvZiB0eXBlIEV4cHJlc3Npb25WYWx1ZToiK2EpO319LEhoPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5hcmdzO2lmKCFBcnJheS5pc0FycmF5KGMpfHxjLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoJ0ludmFsaWQgYm9vbGVhbiBleHByZXNzaW9uIGZvcm1hdC4gRXhwZWN0ZWQgImFyZ3MiOicrYysiIHByb3BlcnR5IHRvXG4gICAgICAgICBiZSBub24tZW1wdHkgYXJyYXkuIik7dmFyIGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEtoKGcsYil9O3N3aXRjaChhLnR5cGUpe2Nhc2UgMTpmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKylpZihkKGNbZV0pKXJldHVybiEwO3JldHVybiExO2Nhc2UgMjpmb3IodmFyIGY9MDtmPGMubGVuZ3RoO2YrKylpZighZChjW2ZdKSlyZXR1cm4hMTtyZXR1cm4gYy5sZW5ndGg+MDtjYXNlIDM6cmV0dXJuIWQoY1swXSk7CmNhc2UgNDpyZXR1cm4gSmcoZChjWzBdKSxkKGNbMV0pLCExLGIucmVnZXhDYWNoZSk7Y2FzZSA1OnJldHVybiBMZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgNjpyZXR1cm4gUWcoZChjWzBdKSxkKGNbMV0pKTtjYXNlIDc6cmV0dXJuIEhnKGQoY1swXSksZChjWzFdKSk7Y2FzZSA4OnJldHVybiBLZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgOTpyZXR1cm4gUGcoZChjWzBdKSxkKGNbMV0pKTtjYXNlIDEwOnJldHVybiBOZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgMTE6cmV0dXJuIE9nKGQoY1swXSksZChjWzFdKSk7Y2FzZSAxMjpyZXR1cm4gTWcoZChjWzBdKSxkKGNbMV0pKTtjYXNlIDEzOnJldHVybiBJZyhkKGNbMF0pLFN0cmluZyhkKGNbMV0pKSk7ZGVmYXVsdDp0aHJvdyBFcnJvcignSW52YWxpZCBib29sZWFuIGV4cHJlc3Npb24gZm9ybWF0LiBFeHBlY3RlZCAidHlwZSIgcHJvcGVydHkgdG9iZSBhIHBvc2l0aXZlIGludGVnZXIgd2hpY2ggaXMgbGVzcyB0aGFuIDE0LicpO319OwpmdW5jdGlvbiBMaChhKXtpZighbWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZ3x1bmRlZmluZWQiXSxhcmd1bWVudHMpO307ZnVuY3Rpb24gTWgoYSl7dmFyIGI9VGQoYSk7cmV0dXJuIG5nKGI/IiIrYjoiIil9O2Z1bmN0aW9uIE5oKGEsYil7aWYoIXFoKGEpfHwhcWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIm51bWJlciIsIm51bWJlciJdLGFyZ3VtZW50cyk7cmV0dXJuIERiKGEsYil9O2Z1bmN0aW9uIE9oKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O2Z1bmN0aW9uIFBoKGEpe2lmKGE9PT1udWxsKXJldHVybiJudWxsIjtpZihhIGluc3RhbmNlb2YgR2QpcmV0dXJuImFycmF5IjtpZihhIGluc3RhbmNlb2YgS2QpcmV0dXJuImZ1bmN0aW9uIjtpZihhIGluc3RhbmNlb2YgUGQpe3ZhciBiPWEuZ2V0VmFsdWUoKTtpZigoYj09bnVsbD92b2lkIDA6Yi5jb25zdHJ1Y3Rvcik9PT12b2lkIDB8fGIuY29uc3RydWN0b3IubmFtZT09PXZvaWQgMCl7dmFyIGM9U3RyaW5nKGIpO3JldHVybiBjLnN1YnN0cmluZyg4LGMubGVuZ3RoLTEpfXJldHVybiBTdHJpbmcoYi5jb25zdHJ1Y3Rvci5uYW1lKX1yZXR1cm4gdHlwZW9mIGF9O2Z1bmN0aW9uIFFoKGEpe2Z1bmN0aW9uIGIoYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3RyeXtyZXR1cm4gYyhkKX1jYXRjaChlKXsobGd8fG1nLlBvKSYmYS5jYWxsKHRoaXMsZS5tZXNzYWdlKX19fXJldHVybntwYXJzZTpiKGZ1bmN0aW9uKGMpe3JldHVybiBVZChKU09OLnBhcnNlKGMpKX0pLHN0cmluZ2lmeTpiKGZ1bmN0aW9uKGMpe3JldHVybiBKU09OLnN0cmluZ2lmeShUZChjKSl9KSxwdWJsaWNOYW1lOiJKU09OIn19O2Z1bmN0aW9uIFJoKGEpe3JldHVybiBJYihUZChhLHRoaXMuVCkpfTtmdW5jdGlvbiBTaChhKXtyZXR1cm4gTnVtYmVyKFRkKGEsdGhpcy5UKSl9O2Z1bmN0aW9uIFRoKGEpe3JldHVybiBhPT09bnVsbD8ibnVsbCI6YT09PXZvaWQgMD8idW5kZWZpbmVkIjphLnRvU3RyaW5nKCl9O2Z1bmN0aW9uIFVoKGEsYixjKXt2YXIgZD1udWxsLGU9ITE7cmV0dXJuIGU/ZDpudWxsfTt2YXIgQWg9ImZsb29yIGNlaWwgcm91bmQgbWF4IG1pbiBhYnMgcG93IHNxcnQiLnNwbGl0KCIgIik7ZnVuY3Rpb24gVmgoKXt2YXIgYT17fTtyZXR1cm57V3I6ZnVuY3Rpb24oYil7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYik/YVtiXTp2b2lkIDB9LEtvOmZ1bmN0aW9uKGIsYyl7YVtiXT1jfSxyZXNldDpmdW5jdGlvbigpe2E9e319fX1mdW5jdGlvbiBXaChhLGIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBLZC5wcm90b3R5cGUuaW52b2tlLmFwcGx5KGEsW2JdLmNvbmNhdCh3KE9hLmFwcGx5KDAsYXJndW1lbnRzKSkpKX19CmZ1bmN0aW9uIFhoKGEsYil7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJhbnkiXSxhcmd1bWVudHMpO30KZnVuY3Rpb24gWWgoYSxiKXtpZighbGgoYSl8fCFlaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiUGl4aWVNYXAiXSxhcmd1bWVudHMpO307dmFyIFpoPXt9O3ZhciAkaD1mdW5jdGlvbihhKXt2YXIgYj1uZXcga2I7aWYoYSBpbnN0YW5jZW9mIEdkKWZvcih2YXIgYz1hLkZhKCksZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO2EuaGFzKGUpJiZiLnNldChlLGEuZ2V0KGUpKX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBLZClmb3IodmFyIGY9YS5GYSgpLGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXTtiLnNldChoLGEuZ2V0KGgpKX1lbHNlIGZvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsrKWIuc2V0KGwsYVtsXSk7cmV0dXJuIGJ9OwpaaC5rZXlzPWZ1bmN0aW9uKGEpe2RoKHRoaXMuZ2V0TmFtZSgpLGFyZ3VtZW50cyk7aWYoYSBpbnN0YW5jZW9mIEdkfHxhIGluc3RhbmNlb2YgS2R8fHR5cGVvZiBhPT09InN0cmluZyIpYT0kaChhKTtpZihhIGluc3RhbmNlb2Yga2J8fGEgaW5zdGFuY2VvZiBTZClyZXR1cm4gbmV3IEdkKGEuRmEoKSk7cmV0dXJuIG5ldyBHZH07ClpoLnZhbHVlcz1mdW5jdGlvbihhKXtkaCh0aGlzLmdldE5hbWUoKSxhcmd1bWVudHMpO2lmKGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIEtkfHx0eXBlb2YgYT09PSJzdHJpbmciKWE9JGgoYSk7aWYoYSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2QpcmV0dXJuIG5ldyBHZChhLmhjKCkpO3JldHVybiBuZXcgR2R9OwpaaC5lbnRyaWVzPWZ1bmN0aW9uKGEpe2RoKHRoaXMuZ2V0TmFtZSgpLGFyZ3VtZW50cyk7aWYoYSBpbnN0YW5jZW9mIEdkfHxhIGluc3RhbmNlb2YgS2R8fHR5cGVvZiBhPT09InN0cmluZyIpYT0kaChhKTtpZihhIGluc3RhbmNlb2Yga2J8fGEgaW5zdGFuY2VvZiBTZClyZXR1cm4gbmV3IEdkKGEuZmMoKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBHZChiKX0pKTtyZXR1cm4gbmV3IEdkfTsKWmguZnJlZXplPWZ1bmN0aW9uKGEpeyhhIGluc3RhbmNlb2Yga2J8fGEgaW5zdGFuY2VvZiBTZHx8YSBpbnN0YW5jZW9mIEdkfHxhIGluc3RhbmNlb2YgS2QpJiZhLlphKCk7cmV0dXJuIGF9O1poLmRlbGV0ZT1mdW5jdGlvbihhLGIpe2lmKGEgaW5zdGFuY2VvZiBrYiYmIWEuSGIoKSlyZXR1cm4gYS5yZW1vdmUoYiksITA7cmV0dXJuITF9O2Z1bmN0aW9uIEwoYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyksZD1hLlQueGIoKTtpZighZCl0aHJvdyBFcnJvcigiTWlzc2luZyBwcm9ncmFtIHN0YXRlLiIpO2lmKGQuaXQpe3RyeXtkLlJuLmFwcGx5KG51bGwsW2JdLmNvbmNhdCh3KGMpKSl9Y2F0Y2goZSl7dGhyb3cgc2IoIlRBR0dJTkciLDIxKSxlO31yZXR1cm59ZC5Sbi5hcHBseShudWxsLFtiXS5jb25jYXQodyhjKSkpfTt2YXIgYWk9ZnVuY3Rpb24oKXt0aGlzLks9e307dGhpcy5IPXt9O3RoaXMuTj0hMDt9O2FpLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNvbnRhaW5zKGEpP3RoaXMuS1thXTp2b2lkIDA7cmV0dXJuIGN9O2FpLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5LLmhhc093blByb3BlcnR5KGEpfTsKYWkucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIsYyl7aWYodGhpcy5jb250YWlucyhhKSl0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhZGQgYSBmdW5jdGlvbiB3aGljaCBhbHJlYWR5IGV4aXN0czogIithKyIuIik7aWYodGhpcy5ILmhhc093blByb3BlcnR5KGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFkZCBhbiBBUEkgd2l0aCBhbiBleGlzdGluZyBwcml2YXRlIEFQSSBuYW1lOiAiK2ErIi4iKTt0aGlzLktbYV09Yz92b2lkIDA6eWIoYik/dGgoYSxiKTp1aChhLGIpfTtmdW5jdGlvbiBiaShhLGIpe3ZhciBjPXZvaWQgMDtyZXR1cm4gY307ZnVuY3Rpb24gY2koKXt2YXIgYT17fTsKcmV0dXJuIGF9O3ZhciBkaT17fSxlaT0oZGlbRi5ELnNhXT0iZ2N1IixkaVtGLkQuZWhdPSJlcHQiLGRpW0YuRC5TYl09ImdjbGdiIixkaVtGLkQubGJdPSJnY2xhdyIsZGlbRi5ELnpsXT0iZ2NsaWRfbGVuIixkaVtGLkQuQmVdPSJnY2xncyIsZGlbRi5ELkNlXT0iZ2NsbHAiLGRpW0YuRC5EZV09ImdjbHN0IixkaVtGLkQuRWRdPSJhdWlkIixkaVtGLkQuQmxdPSJhZSIsZGlbRi5ELkNmXT0iZHNjbnQiLGRpW0YuRC5EZl09ImZjbnRyIixkaVtGLkQuRWZdPSJmbG5nIixkaVtGLkQuRmZdPSJtaWQiLGRpW0YuRC53aV09ImJ0dHlwZSIsZGlbRi5ELktiXT0iZ2FjaWQiLGRpW0YuRC5HZF09ImxhYmVsIixkaVtGLkQuRmVdPSJjYXBpIixkaVtGLkQuamhdPSJwc2NkbCIsZGlbRi5ELmViXT0iY3VycmVuY3lfY29kZSIsZGlbRi5ELkdlXT0idmRsdHYiLGRpW0YuRC5raF09ImNsb2N0IixkaVtGLkQuRWxdPSJfZGJnIixkaVtGLkQuSWVdPSJvZWRlbGQiLGRpW0YuRC5WY109ImVkaWQiLGRpW0YuRC5NZF09ImV2bmlkIiwKZGlbRi5ELkVpXT0iZXZqaWQiLGRpW0YuRC5OZF09ImV4Y2lkIixkaVtGLkQucmhdPSJnYWMiLGRpW0YuRC5KZV09ImdhY2diIixkaVtGLkQuTWxdPSJnYWNtY292IixkaVtGLkQuS2VdPSJnZHByIixkaVtGLkQuWGNdPSJnZGlkIixkaVtGLkQuTGVdPSJfbmciLGRpW0YuRC5jcV09Il9vbm8iLGRpW0YuRC50aF09ImdwcF9zaWQiLGRpW0YuRC51aF09ImdwcCIsZGlbRi5ELlBsXT0iZ3NhZXhwIixkaVtGLkQuVmZdPSJfdHUiLGRpW0YuRC5NZV09ImZybSIsZGlbRi5ELktpXT0iZ3RtX3VwIixkaVtGLkQuUGRdPSJscHMiLGRpW0YuRC5MaV09ImRpZCIsZGlbRi5ELlFkXT0iZmNudHIiLGRpW0YuRC5SZF09ImZsbmciLGRpW0YuRC5TZF09Im1pZCIsZGlbRi5ELk5lXT12b2lkIDAsZGlbRi5ELk1iXT0idGliYSIsZGlbRi5ELldiXT0icmRwIixkaVtGLkQueGNdPSJlY3NpZCIsZGlbRi5ELlpmXT0iZ2FfdWlkIixkaVtGLkQuVWRdPSJkZWxvcGMiLGRpW0YuRC5PZV09ImdkcHJfY29uc2VudCIsCmRpW0YuRC5QYV09Im9pZCIsZGlbRi5ELmRtXT0ib2lkc3JjIixkaVtGLkQuZm1dPSJ1cHRncyIsZGlbRi5ELmNnXT0idWFhIixkaVtGLkQuZGddPSJ1YWIiLGRpW0YuRC5lZ109InVhZnZsIixkaVtGLkQuZmddPSJ1YW1iIixkaVtGLkQuZ2ddPSJ1YW0iLGRpW0YuRC5oZ109InVhcCIsZGlbRi5ELmlnXT0idWFwdiIsZGlbRi5ELmpnXT0idWF3IixkaVtGLkQuZ21dPSJlY19sYXQiLGRpW0YuRC5obV09ImVjX21ldGEiLGRpW0YuRC5pbV09ImVjX20iLGRpW0YuRC5qbV09ImVjX3NlbCIsZGlbRi5ELmttXT0iZWNfcyIsZGlbRi5ELkJjXT0iZWNfbW9kZSIsZGlbRi5ELmZiXT0idXNlcklkIixkaVtGLkQua2ddPSJ1c19wcml2YWN5IixkaVtGLkQuUWFdPSJ2YWx1ZSIsZGlbRi5ELnFtXT0ibWNvdiIsZGlbRi5ELldpXT0iaG4iLGRpW0YuRC5WbV09Imd0bV9lZSIsZGlbRi5ELllpXT0idWlwIixkaVtGLkQuSmhdPSJtdCIsZGlbRi5ELmRlXT0ibnBhIixkaVtGLkQuWXFdPSJzZ191YyIsZGlbRi5ELnlpXT0KbnVsbCxkaVtGLkQuYmRdPW51bGwsZGlbRi5ELnRiXT1udWxsLGRpW0YuRC5IYV09bnVsbCxkaVtGLkQuemFdPW51bGwsZGlbRi5ELlVhXT1udWxsLGRpW0YuRC5QZV09bnVsbCxkaVtGLkQuZWRdPW51bGwsZGlbRi5ELnNoXT1udWxsLGRpW0YuRC5CZF09bnVsbCxkaVtGLkQuQ2RdPW51bGwsZGlbRi5ELmZoXT1udWxsLGRpW0YuRC5naF09bnVsbCxkaVtGLkQuVGFdPW51bGwsZGlbRi5ELldjXT1udWxsLGRpKTtmdW5jdGlvbiBmaShhLGIpe2lmKGEpe3ZhciBjPWEuc3BsaXQoIngiKTtjLmxlbmd0aD09PTImJihnaShiLCJ1X3ciLGNbMF0pLGdpKGIsInVfaCIsY1sxXSkpfX1mdW5jdGlvbiBoaShhKXt2YXIgYj1paTtiPWI9PT12b2lkIDA/amk6YjtyZXR1cm4ga2kobGkoYSxiKSl9ZnVuY3Rpb24ga2koYSl7cmV0dXJuKGF8fFtdKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuISFifSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiIoIitbbWkoYi52YWx1ZSksbWkoYi5xdWFudGl0eSksbWkoYi5pdGVtX2lkKSxtaShiLnN0YXJ0X2RhdGUpLG1pKGIuZW5kX2RhdGUpXS5qb2luKCIqIikrIikifSkuam9pbigiIil9CmZ1bmN0aW9uIGxpKGEsYil7cmV0dXJuKGF8fFtdKS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuISFjfSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybntpdGVtX2lkOmIoYykscXVhbnRpdHk6Yy5xdWFudGl0eSx2YWx1ZTpjLnByaWNlLHN0YXJ0X2RhdGU6Yy5zdGFydF9kYXRlLGVuZF9kYXRlOmMuZW5kX2RhdGV9fSl9ZnVuY3Rpb24gamkoYSl7cmV0dXJuW2EuaXRlbV9pZCxhLmlkLGEuaXRlbV9uYW1lXS5maW5kKGZ1bmN0aW9uKGIpe3JldHVybiBiIT1udWxsfSl9ZnVuY3Rpb24gbmkoYSl7aWYoYSYmYS5sZW5ndGgpcmV0dXJuIGEubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiJiZiLmVzdGltYXRlZF9kZWxpdmVyeV9kYXRlP2IuZXN0aW1hdGVkX2RlbGl2ZXJ5X2RhdGU6IiJ9KS5qb2luKCIsIil9ZnVuY3Rpb24gZ2koYSxiLGMpe2M9PT12b2lkIDB8fGM9PT1udWxsfHxjPT09IiImJiF5Z1tiXXx8KGFbYl09Yyl9CmZ1bmN0aW9uIG1pKGEpe3JldHVybiB0eXBlb2YgYSE9PSJudW1iZXIiJiZ0eXBlb2YgYSE9PSJzdHJpbmciPyIiOmEudG9TdHJpbmcoKX07ZnVuY3Rpb24gb2koKXt0aGlzLmJsb2NrU2l6ZT0tMX07ZnVuY3Rpb24gcGkoYSxiKXt0aGlzLmJsb2NrU2l6ZT0tMTt0aGlzLmJsb2NrU2l6ZT02NDt0aGlzLk49UmEuVWludDhBcnJheT9uZXcgVWludDhBcnJheSh0aGlzLmJsb2NrU2l6ZSk6QXJyYXkodGhpcy5ibG9ja1NpemUpO3RoaXMuUj10aGlzLks9MDt0aGlzLkg9W107dGhpcy5mYT1hO3RoaXMuWj1iO3RoaXMuamE9UmEuSW50MzJBcnJheT9uZXcgSW50MzJBcnJheSg2NCk6QXJyYXkoNjQpO3FpPT09dm9pZCAwJiYoUmEuSW50MzJBcnJheT9xaT1uZXcgSW50MzJBcnJheShyaSk6cWk9cmkpO3RoaXMucmVzZXQoKX1TYShwaSxvaSk7Zm9yKHZhciBzaT1bXSx0aT0wO3RpPDYzO3RpKyspc2lbdGldPTA7dmFyIHVpPVtdLmNvbmNhdCgxMjgsc2kpOwpwaS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLlI9dGhpcy5LPTA7dmFyIGE7aWYoUmEuSW50MzJBcnJheSlhPW5ldyBJbnQzMkFycmF5KHRoaXMuWik7ZWxzZXt2YXIgYj10aGlzLlosYz1iLmxlbmd0aDtpZihjPjApe2Zvcih2YXIgZD1BcnJheShjKSxlPTA7ZTxjO2UrKylkW2VdPWJbZV07YT1kfWVsc2UgYT1bXX10aGlzLkg9YX07CnZhciB2aT1mdW5jdGlvbihhKXtmb3IodmFyIGI9YS5OLGM9YS5qYSxkPTAsZT0wO2U8Yi5sZW5ndGg7KWNbZCsrXT1iW2VdPDwyNHxiW2UrMV08PDE2fGJbZSsyXTw8OHxiW2UrM10sZT1kKjQ7Zm9yKHZhciBmPTE2O2Y8NjQ7ZisrKXt2YXIgZz1jW2YtMTVdfDAsaD1jW2YtMl18MDtjW2ZdPSgoY1tmLTE2XXwwKSsoKGc+Pj43fGc8PDI1KV4oZz4+PjE4fGc8PDE0KV5nPj4+Myl8MCkrKChjW2YtN118MCkrKChoPj4+MTd8aDw8MTUpXihoPj4+MTl8aDw8MTMpXmg+Pj4xMCl8MCl8MH1mb3IodmFyIGw9YS5IWzBdfDAsbj1hLkhbMV18MCxwPWEuSFsyXXwwLHE9YS5IWzNdfDAscj1hLkhbNF18MCx0PWEuSFs1XXwwLHU9YS5IWzZdfDAsdj1hLkhbN118MCx4PTA7eDw2NDt4Kyspe3ZhciB5PSgobD4+PjJ8bDw8MzApXihsPj4+MTN8bDw8MTkpXihsPj4+MjJ8bDw8MTApKSsobCZuXmwmcF5uJnApfDAsej0odisoKHI+Pj42fHI8PDI2KV4ocj4+PjExfHI8PDIxKV4ocj4+PjI1fHI8PDcpKXwKMCkrKCgociZ0Xn5yJnUpKyhxaVt4XXwwKXwwKSsoY1t4XXwwKXwwKXwwO3Y9dTt1PXQ7dD1yO3I9cSt6fDA7cT1wO3A9bjtuPWw7bD16K3l8MH1hLkhbMF09YS5IWzBdK2x8MDthLkhbMV09YS5IWzFdK258MDthLkhbMl09YS5IWzJdK3B8MDthLkhbM109YS5IWzNdK3F8MDthLkhbNF09YS5IWzRdK3J8MDthLkhbNV09YS5IWzVdK3R8MDthLkhbNl09YS5IWzZdK3V8MDthLkhbN109YS5IWzddK3Z8MH07CnBpLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSxiKXtiPT09dm9pZCAwJiYoYj1hLmxlbmd0aCk7dmFyIGM9MCxkPXRoaXMuSztpZih0eXBlb2YgYT09PSJzdHJpbmciKWZvcig7YzxiOyl0aGlzLk5bZCsrXT1hLmNoYXJDb2RlQXQoYysrKSxkPT10aGlzLmJsb2NrU2l6ZSYmKHZpKHRoaXMpLGQ9MCk7ZWxzZXt2YXIgZSxmPXR5cGVvZiBhO2U9ZiE9Im9iamVjdCI/ZjphP0FycmF5LmlzQXJyYXkoYSk/ImFycmF5IjpmOiJudWxsIjtpZihlPT0iYXJyYXkifHxlPT0ib2JqZWN0IiYmdHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IoO2M8Yjspe3ZhciBnPWFbYysrXTtpZighKCJudW1iZXIiPT10eXBlb2YgZyYmMDw9ZyYmMjU1Pj1nJiZnPT0oZ3wwKSkpdGhyb3cgRXJyb3IoIm1lc3NhZ2UgbXVzdCBiZSBhIGJ5dGUgYXJyYXkiKTt0aGlzLk5bZCsrXT1nO2Q9PXRoaXMuYmxvY2tTaXplJiYodmkodGhpcyksZD0wKX1lbHNlIHRocm93IEVycm9yKCJtZXNzYWdlIG11c3QgYmUgc3RyaW5nIG9yIGFycmF5Iik7Cn10aGlzLks9ZDt0aGlzLlIrPWJ9O3BpLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXMuUio4O3RoaXMuSzw1Nj90aGlzLnVwZGF0ZSh1aSw1Ni10aGlzLkspOnRoaXMudXBkYXRlKHVpLHRoaXMuYmxvY2tTaXplLSh0aGlzLkstNTYpKTtmb3IodmFyIGM9NjM7Yz49NTY7Yy0tKXRoaXMuTltjXT1iJjI1NSxiLz0yNTY7dmkodGhpcyk7Zm9yKHZhciBkPTAsZT0wO2U8dGhpcy5mYTtlKyspZm9yKHZhciBmPTI0O2Y+PTA7Zi09OClhW2QrK109dGhpcy5IW2VdPj5mJjI1NTtyZXR1cm4gYX07CnZhciByaT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LAo0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0scWk7ZnVuY3Rpb24gd2koKXtwaS5jYWxsKHRoaXMsOCx4aSl9U2Eod2kscGkpO3ZhciB4aT1bMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjVdO3ZhciB5aT0vXlswLTlBLUZhLWZdezY0fSQvO2Z1bmN0aW9uIHppKGEpe3RyeXtyZXR1cm4obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoYSl9Y2F0Y2goYil7cmV0dXJuIFpiKGEpfX1mdW5jdGlvbiBBaShhKXt2YXIgYj1BO2lmKGE9PT0iInx8YT09PSJlMCIpcmV0dXJuIFByb21pc2UucmVzb2x2ZShhKTt2YXIgYztpZigoYz1iLmNyeXB0byk9PW51bGw/MDpjLnN1YnRsZSl7aWYoeWkudGVzdChhKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpO3RyeXt2YXIgZD16aShhKTtyZXR1cm4gYi5jcnlwdG8uc3VidGxlLmRpZ2VzdCgiU0hBLTI1NiIsZCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gQmkoZSxiKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuImUyIn0pfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoImUyIil9fWVsc2UgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgiZTEiKX0KZnVuY3Rpb24gQ2koYSl7dHJ5e3ZhciBiPW5ldyB3aTtiLnVwZGF0ZSh6aShhKSk7cmV0dXJuIGIuZGlnZXN0KCl9Y2F0Y2goYyl7cmV0dXJuImUyIn19ZnVuY3Rpb24gRGkoYSl7dmFyIGI9QTtpZihhPT09IiJ8fGE9PT0iZTAifHx5aS50ZXN0KGEpKXJldHVybiBhO3ZhciBjPUNpKGEpO2lmKGM9PT0iZTIiKXJldHVybiJlMiI7dHJ5e3JldHVybiBCaShjLGIpfWNhdGNoKGQpe3JldHVybiJlMiJ9fWZ1bmN0aW9uIEJpKGEsYil7dmFyIGM9QXJyYXkuZnJvbShuZXcgVWludDhBcnJheShhKSkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGQpfSkuam9pbigiIik7cmV0dXJuIGIuYnRvYShjKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0rJC8sIiIpfTtmdW5jdGlvbiBFaSgpe2Zvcih2YXIgYT0hMSxiPSExLGM9MDthPT09YjspaWYoYT1EYigwLDEpPT09MCxiPURiKDAsMSk9PT0wLGMrKyxjPjMwKXJldHVybjtyZXR1cm4gYX12YXIgR2k9e3NrOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gRmkuc2soYSxiLGMpfX0sSGk9ZnVuY3Rpb24oKXt0aGlzLnN0dWRpZXM9e307dGhpcy5IPUVpfTsKSGkucHJvdG90eXBlLnNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLnN0dWRpZXNbYl07aWYoISgoYz09PXZvaWQgMD9EYigwLDk5OTkpOmMlMUU0KTxkLnByb2JhYmlsaXR5KihkLmNvbnRyb2xJZDI/NDoyKSoxRTQpKXJldHVybiBhO2E6e3ZhciBlPWQuc3R1ZHlJZCxmPWQuZXhwZXJpbWVudElkLGc9ZC5jb250cm9sSWQsaD1kLmNvbnRyb2xJZDI7aWYoISgoYS5leHB8fHt9KVtmXXx8KGEuZXhwfHx7fSlbZ118fGgmJihhLmV4cHx8e30pW2hdKSl7dmFyIGw9YyE9PXZvaWQgMD9jJTI9PT0wOnRoaXMuSCgpO2lmKGwhPT12b2lkIDApe3ZhciBuPWw/MDoxO2lmKGgpe3ZhciBwPWMhPT12b2lkIDA/KGM+PjEpJTI9PT0wOnRoaXMuSCgpO2lmKHA9PT12b2lkIDApYnJlYWsgYTtufD0ocD8wOjEpPDwxfW49PT0wP0lpKGEsZixlKTpuPT09MT9JaShhLGcsZSk6bj09PTImJklpKGEsaCxlKX19fXJldHVybiBhfTsKdmFyIEtpPWZ1bmN0aW9uKGEsYil7dmFyIGM9Rmk7cmV0dXJuIGMuc3R1ZGllc1tiXT9KaShjLGIpfHwhIShhLmV4cHx8e30pW2Muc3R1ZGllc1tiXS5leHBlcmltZW50SWRdOiExfSxMaT1mdW5jdGlvbihhLGIpe3ZhciBjPUZpO3JldHVybiBjLnN0dWRpZXNbYl0mJmMuc3R1ZGllc1tiXS5jb250cm9sSWQmJiFKaShjLGIpPyEhKGEuZXhwfHx7fSlbYy5zdHVkaWVzW2JdLmNvbnRyb2xJZF06ITF9LE1pPWZ1bmN0aW9uKGEsYil7dmFyIGM9Rmk7cmV0dXJuIGMuc3R1ZGllc1tiXSYmYy5zdHVkaWVzW2JdLmNvbnRyb2xJZDImJiFKaShjLGIpPyEhKGEuZXhwfHx7fSlbYy5zdHVkaWVzW2JdLmNvbnRyb2xJZDJdOiExfSxOaT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmV4cHx8e30sZD1tKE9iamVjdC5rZXlzKGMpLm1hcChOdW1iZXIpKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtpZihjW2ZdPT09YilyZXR1cm4gZn19LEppPWZ1bmN0aW9uKGEsCmIpe3JldHVybiEhYS5zdHVkaWVzW2JdLmFjdGl2ZXx8YS5zdHVkaWVzW2JdLnByb2JhYmlsaXR5Pi41fSxJaT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5leHB8fHt9O2RbYl09YzthLmV4cD1kfSxGaT1uZXcgSGk7dmFyIGlqPWZ1bmN0aW9uKCl7dGhpcy5IPUEuZ29vZ2xlX3RhZ19tYW5hZ2VyPUEuZ29vZ2xlX3RhZ19tYW5hZ2VyfHx7fX0samo7ZnVuY3Rpb24ga2ooYSxiKXtsaigpO3ZhciBjPWpqO3JldHVybiBjLkhbYV09Yy5IW2FdfHxiKCl9ZnVuY3Rpb24gbWooYSl7bGooKTtyZXR1cm4gamouSFthXX1mdW5jdGlvbiBuaihhLGIpe2xqKCk7amouSFthXT1ifWZ1bmN0aW9uIG9qKGEpe3ZhciBiPUUoNSk7bGooKTt2YXIgYz1qajtjLkhbYl09Yy5IW2JdfHxhfWZ1bmN0aW9uIHBqKCl7dmFyIGE9RSgxOSk7bGooKTt2YXIgYj1qajtyZXR1cm4gYi5IW2FdPWIuSFthXXx8e319ZnVuY3Rpb24gcWooKXt2YXIgYT1FKDE5KTtsaigpO3JldHVybiBqai5IW2FdfWZ1bmN0aW9uIHJqKCl7bGooKTt2YXIgYT1qaixiPWEuSC5zZXF1ZW5jZXx8MTthLkguc2VxdWVuY2U9YisxO3JldHVybiBifWZ1bmN0aW9uIGxqKCl7amp8fChqaj1uZXcgaWopfTt2YXIgc2o9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gMDtjYXNlIDQ5MTpyZXR1cm4gMTI7Y2FzZSA0ODA6cmV0dXJuIDExO2Nhc2UgNDk5OnJldHVybiAxMDtjYXNlIDUwMDpyZXR1cm4gNjtjYXNlIDQyMTpyZXR1cm4gOTtjYXNlIDU2MTpyZXR1cm4gMTc7Y2FzZSA0ODI6cmV0dXJuIDE1O2Nhc2UgNTcwOnJldHVybiAxOTtjYXNlIDQ5NTpyZXR1cm4gMTM7Y2FzZSA1MTQ6cmV0dXJuIDE2O2Nhc2UgNTczOnJldHVybiAxODtjYXNlIDIzNTpyZXR1cm4gODtjYXNlIDUzOnJldHVybiAxO2Nhc2UgNTQ6cmV0dXJuIDI7Y2FzZSA1MjpyZXR1cm4gNDtjYXNlIDc1OnJldHVybiAzfX0sdGo9ZnVuY3Rpb24oYSxiKXthLk5bYl09ITA7dmFyIGM9c2ooYik7YyE9PXZvaWQgMCYmKFdmW2NdPSEwKX0sTT1mdW5jdGlvbihhKXtyZXR1cm4hIXVqLk5bYV19LHVqPW5ldyBmdW5jdGlvbigpe3RoaXMuTj1bXTt0aGlzLks9W107dGhpcy5IPVtdOwp0aih0aGlzLDEzMik7dmFyIGE9TmYoNiw2RTQpO1hmWzFdPWE7dmFyIGI9TmYoNywxKTtYZlszXT1iO3ZhciBjPU5mKDM1LDUwKTtYZlsyXT1jO3ZhciBkPU5mKDY5LDE3NzY0NDg5MjApO1hmWzRdPWQ7CnRqKHRoaXMsNDM1KTt0aih0aGlzLDE0MSk7Cn07dmFyIHZqPWZ1bmN0aW9uKCl7dGhpcy5IPW5ldyBTZXQ7dGhpcy5LPW5ldyBTZXR9LHhqPWZ1bmN0aW9uKGEpe3ZhciBiPXdqLkg7YT1hPT09dm9pZCAwP1tdOmE7dmFyIGM9W10uY29uY2F0KHcoYi5IKSkuY29uY2F0KFtdLmNvbmNhdCh3KGIuSykpKS5jb25jYXQoYSk7Yy5zb3J0KGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGQtZX0pO3JldHVybiBjfSx5aj1mdW5jdGlvbigpe3ZhciBhPVtdLmNvbmNhdCh3KHdqLkguSCkpO2Euc29ydChmdW5jdGlvbihiLGMpe3JldHVybiBiLWN9KTtyZXR1cm4gYX0semo9ZnVuY3Rpb24oKXt2YXIgYT13ai5ILGI9RSg0NCk7YS5IPW5ldyBTZXQ7aWYoYiE9PSIiKWZvcih2YXIgYz1tKGIuc3BsaXQoIn4iKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPU51bWJlcihkLnZhbHVlKTtpc05hTihlKXx8YS5ILmFkZChlKX19O3ZhciBBaj17fSxCaj17X19jbDoxLF9fZWNsOjEsX19laGw6MSxfX2V2bDoxLF9fZmFsOjEsX19maWw6MSxfX2ZzbDoxLF9faGw6MSxfX2plbDoxLF9fbGNsOjEsX19zZGw6MSxfX3RsOjEsX195dGw6MX0sQ2o9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx7X19wYXVzZWQ6MSxfX3RnOjF9LEJqKSxEaixFaj0hMTtEaj1Fajt2YXIgRmo9IiI7QWoucWo9Rmo7dmFyIHdqPW5ldyBmdW5jdGlvbigpe3RoaXMuSD1uZXcgdmp9O3ZhciBHaj0vOlswLTldKyQvLEhqPS9eXGQrXC5mbHNcLmRvdWJsZWNsaWNrXC5uZXQkLztmdW5jdGlvbiBJaihhLGIsYyxkKXt2YXIgZT1KaihhLCEhZCxiKSxmLGc7cmV0dXJuIGM/KGc9ZVtiXSkhPW51bGw/ZzpbXTooZj1lW2JdKT09bnVsbD92b2lkIDA6ZlswXX1mdW5jdGlvbiBKaihhLGIsYyl7Zm9yKHZhciBkPXt9LGU9bShhLnNwbGl0KCImIikpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1tKGYudmFsdWUuc3BsaXQoIj0iKSksaD1nLm5leHQoKS52YWx1ZSxsPXlhKGcpLG49ZGVjb2RlVVJJQ29tcG9uZW50KGgucmVwbGFjZSgvXCsvZywiICIpKTtpZihjPT09dm9pZCAwfHxuPT09Yyl7dmFyIHA9bC5qb2luKCI9Iik7ZFtuXXx8KGRbbl09W10pO2Rbbl0ucHVzaChiP3A6ZGVjb2RlVVJJQ29tcG9uZW50KHAucmVwbGFjZSgvXCsvZywiICIpKSl9fXJldHVybiBkfQpmdW5jdGlvbiBLaihhKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChiKXt9fWZ1bmN0aW9uIExqKGEsYixjLGQsZSl7YiYmKGI9U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCkpO2lmKGI9PT0icHJvdG9jb2wifHxiPT09InBvcnQiKWEucHJvdG9jb2w9TWooYS5wcm90b2NvbCl8fE1qKEEubG9jYXRpb24ucHJvdG9jb2wpO2I9PT0icG9ydCI/YS5wb3J0PVN0cmluZyhOdW1iZXIoYS5ob3N0bmFtZT9hLnBvcnQ6QS5sb2NhdGlvbi5wb3J0KXx8KGEucHJvdG9jb2w9PT0iaHR0cCI/ODA6YS5wcm90b2NvbD09PSJodHRwcyI/NDQzOiIiKSk6Yj09PSJob3N0IiYmKGEuaG9zdG5hbWU9KGEuaG9zdG5hbWV8fEEubG9jYXRpb24uaG9zdG5hbWUpLnJlcGxhY2UoR2osIiIpLnRvTG93ZXJDYXNlKCkpO3JldHVybiBOaihhLGIsYyxkLGUpfQpmdW5jdGlvbiBOaihhLGIsYyxkLGUpe3ZhciBmLGc9TWooYS5wcm90b2NvbCk7YiYmKGI9U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCkpO3N3aXRjaChiKXtjYXNlICJ1cmxfbm9fZnJhZ21lbnQiOmY9T2ooYSk7YnJlYWs7Y2FzZSAicHJvdG9jb2wiOmY9ZzticmVhaztjYXNlICJob3N0IjpmPWEuaG9zdG5hbWUucmVwbGFjZShHaiwiIikudG9Mb3dlckNhc2UoKTtpZihjKXt2YXIgaD0vXnd3d1xkKlwuLy5leGVjKGYpO2gmJmhbMF0mJihmPWYuc3Vic3RyaW5nKGhbMF0ubGVuZ3RoKSl9YnJlYWs7Y2FzZSAicG9ydCI6Zj1TdHJpbmcoTnVtYmVyKGEucG9ydCl8fChnPT09Imh0dHAiPzgwOmc9PT0iaHR0cHMiPzQ0MzoiIikpO2JyZWFrO2Nhc2UgInBhdGgiOmEucGF0aG5hbWV8fGEuaG9zdG5hbWV8fHNiKCJUQUdHSU5HIiwxKTtmPWEucGF0aG5hbWUuc3Vic3RyaW5nKDAsMSk9PT0iLyI/YS5wYXRobmFtZToiLyIrYS5wYXRobmFtZTt2YXIgbD1mLnNwbGl0KCIvIik7KGR8fFtdKS5pbmRleE9mKGxbbC5sZW5ndGgtCjFdKT49MCYmKGxbbC5sZW5ndGgtMV09IiIpO2Y9bC5qb2luKCIvIik7YnJlYWs7Y2FzZSAicXVlcnkiOmY9YS5zZWFyY2gucmVwbGFjZSgiPyIsIiIpO2UmJihmPUlqKGYsZSwhMSkpO2JyZWFrO2Nhc2UgImV4dGVuc2lvbiI6dmFyIG49YS5wYXRobmFtZS5zcGxpdCgiLiIpO2Y9bi5sZW5ndGg+MT9uW24ubGVuZ3RoLTFdOiIiO2Y9Zi5zcGxpdCgiLyIpWzBdO2JyZWFrO2Nhc2UgImZyYWdtZW50IjpmPWEuaGFzaC5yZXBsYWNlKCIjIiwiIik7YnJlYWs7ZGVmYXVsdDpmPWEmJmEuaHJlZn1yZXR1cm4gZn1mdW5jdGlvbiBNaihhKXtyZXR1cm4gYT9hLnJlcGxhY2UoIjoiLCIiKS50b0xvd2VyQ2FzZSgpOiIifWZ1bmN0aW9uIE9qKGEpe3ZhciBiPSIiO2lmKGEmJmEuaHJlZil7dmFyIGM9YS5ocmVmLmluZGV4T2YoIiMiKTtiPWM8MD9hLmhyZWY6YS5ocmVmLnN1YnN0cmluZygwLGMpfXJldHVybiBifXZhciBQaj17fSxRaj0wOwpmdW5jdGlvbiBSaihhKXt2YXIgYj1QalthXTtpZighYil7dmFyIGM9Qi5jcmVhdGVFbGVtZW50KCJhIik7YSYmKGMuaHJlZj1hKTt2YXIgZD1jLnBhdGhuYW1lO2RbMF0hPT0iLyImJihhfHxzYigiVEFHR0lORyIsMSksZD0iLyIrZCk7dmFyIGU9Yy5ob3N0bmFtZS5yZXBsYWNlKEdqLCIiKTtiPXtocmVmOmMuaHJlZixwcm90b2NvbDpjLnByb3RvY29sLGhvc3Q6Yy5ob3N0LGhvc3RuYW1lOmUscGF0aG5hbWU6ZCxzZWFyY2g6Yy5zZWFyY2gsaGFzaDpjLmhhc2gscG9ydDpjLnBvcnR9O1FqPDUmJihQalthXT1iLFFqKyspfXJldHVybiBifWZ1bmN0aW9uIFNqKGEsYixjKXt2YXIgZD1SaihhKTtyZXR1cm4gYWMoYixkLGMpfQpmdW5jdGlvbiBUaihhKXt2YXIgYj1SaihBLmxvY2F0aW9uLmhyZWYpLGM9TGooYiwiaG9zdCIsITEpO2lmKGMmJmMubWF0Y2goSGopKXt2YXIgZD1MaihiLCJwYXRoIik7aWYoZCl7dmFyIGU9ZC5zcGxpdChhKyI9Iik7aWYoZS5sZW5ndGg+MSlyZXR1cm4gZVsxXS5zcGxpdCgiOyIpWzBdLnNwbGl0KCI/IilbMF19fX07dmFyIFVqPXsiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbSI6Ii9nIiwiaHR0cHM6Ly93d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20iOiIvYXMiLCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tIjoiL2dzIn0sVmo9WyIvYXMvZC9jY20vY29udmVyc2lvbiIsIi9nL2QvY2NtL2NvbnZlcnNpb24iLCIvZ3MvY2NtL2NvbnZlcnNpb24iLCIvZC9jY20vZm9ybS1kYXRhIl07ZnVuY3Rpb24gV2ooKXtyZXR1cm4gSWYoNDcpP0pmKDU0KSE9PTE6ITF9ZnVuY3Rpb24gWGooKXt2YXIgYT1FKDE4KSxiPWEubGVuZ3RoO3JldHVybiBhW2ItMV09PT0iLyI/YS5zdWJzdHJpbmcoMCxiLTEpOmF9CmZ1bmN0aW9uIFlqKGEsYil7aWYoYSl7dmFyIGM9IiIrYTtjLmluZGV4T2YoImh0dHA6Ly8iKSE9PTAmJmMuaW5kZXhPZigiaHR0cHM6Ly8iKSE9PTAmJihjPSJodHRwczovLyIrYyk7Y1tjLmxlbmd0aC0xXT09PSIvIiYmKGM9Yy5zdWJzdHJpbmcoMCxjLmxlbmd0aC0xKSk7cmV0dXJuIFJqKCIiK2MrYikuaHJlZn19ZnVuY3Rpb24gWmooYSl7aWYoYWsoKSlyZXR1cm4gWWooYSwiL2FuYWx5dGljcy5qcyIpfWZ1bmN0aW9uIGJrKGEpe3JldHVybiBhPT09Mnx8YT09PTN9ZnVuY3Rpb24gY2soYSl7cmV0dXJuIE0oNTg4KSYmYT09PTN9ZnVuY3Rpb24gYWsoKXtyZXR1cm4gV2ooKXx8SWYoNTApfWZ1bmN0aW9uIGRrKCl7cmV0dXJuISFBai5xaiYmQWoucWouc3BsaXQoIkBAIikuam9pbigiIikhPT0iU0dUTV9UT0tFTiJ9CmZ1bmN0aW9uIGVrKGEpe2Zvcih2YXIgYj1tKFtGLkQuZGQsRi5ELnljXSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPU8oYSxjLnZhbHVlKTtpZihkKXJldHVybiBkfX1mdW5jdGlvbiBmayhhLGIsYyl7Yz1jPT09dm9pZCAwPyIiOmM7aWYoIVdqKCkpcmV0dXJuIGE7dmFyIGQ9Yj9ValthXXx8IiI6IiI7ZD09PSIvZ3MiJiYoYz0iIik7cmV0dXJuIiIrWGooKStkK2N9ZnVuY3Rpb24gZ2soYSl7aWYoV2ooKSlmb3IodmFyIGI9bShWaiksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPWMudmFsdWU7aWYoU2IoYSwiIitYaigpK2QpKXJldHVybiI6OiJ9fQpmdW5jdGlvbiBoaygpe3ZhciBhPUE7aWYoIWEpcmV0dXJuITE7dHJ5e2lmKGE9PT1hLnRvcClyZXR1cm4hMTt2YXIgYj1hLmxvY2F0aW9uLnBhdGhuYW1lO3JldHVybiBiLmluZGV4T2YoIi9fL3NlcnZpY2Vfd29ya2VyLyIpIT09LTEmJlRiKGIsIi9zd19pZnJhbWUuaHRtbCIpfWNhdGNoKGMpe3JldHVybiExfX07dmFyIGlrPS9ndGFnWy5cL11qcy8sams9L2d0bVsuXC9danMvLGxrPWZ1bmN0aW9uKGEpe3ZhciBiPWtrO2lmKChhLnNjcmlwdENvbnRhaW5lcklkfHwiIikuaW5kZXhPZigiR1RNLSIpPj0wKXt2YXIgYzthOnt2YXIgZCxlPShkPWEuc2NyaXB0RWxlbWVudCk9PW51bGw/dm9pZCAwOmQuc3JjO2lmKGUpe2Zvcih2YXIgZj1JZig0NyksZz1SaihlKSxoPWY/Zy5wYXRobmFtZToiIitnLmhvc3RuYW1lK2cucGF0aG5hbWUsbD1CLnNjcmlwdHMsbj0iIixwPTA7cDxsLmxlbmd0aDsrK3Ape3ZhciBxPWxbcF07aWYoIShxLmlubmVySFRNTC5sZW5ndGg9PT0wfHwhZiYmcS5pbm5lckhUTUwuaW5kZXhPZihhLnNjcmlwdENvbnRhaW5lcklkfHwiU0hPVUxEX05PVF9CRV9TRVQiKTwwfHxxLmlubmVySFRNTC5pbmRleE9mKGgpPDApKXtpZihxLmlubmVySFRNTC5pbmRleE9mKCIoZnVuY3Rpb24odyxkLHMsbCxpKSIpPj0wKXtjPVN0cmluZyhwKTticmVhayBhfW49U3RyaW5nKHApfX1pZihuKXtjPQpuO2JyZWFrIGF9fWM9dm9pZCAwfXZhciByPWM7aWYocilyZXR1cm4gYi5IPSEwLHJ9dmFyIHQ9W10uc2xpY2UuY2FsbChCLnNjcmlwdHMpO3JldHVybiBhLnNjcmlwdEVsZW1lbnQ/U3RyaW5nKHQuaW5kZXhPZihhLnNjcmlwdEVsZW1lbnQpKToiLTEifSxtaz1mdW5jdGlvbihhKXtpZihray5IKXJldHVybiIxIjt2YXIgYixjPShiPWEuc2NyaXB0RWxlbWVudCk9PW51bGw/dm9pZCAwOmIuc3JjO2lmKGMpe2lmKGlrLnRlc3QoYykpcmV0dXJuIjMiO2lmKGprLnRlc3QoYykpcmV0dXJuIjIifXJldHVybiIwIn0sa2s9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPSExfTtmdW5jdGlvbiBQKGEpe3NiKCJHVE0iLGEpfTtmdW5jdGlvbiBuayhhKXt2YXIgYj1vaygpLmRlc3RpbmF0aW9uQXJyYXlbYV0sYz1vaygpLmRlc3RpbmF0aW9uW2FdO3JldHVybiBiJiZiLmxlbmd0aD4wP2JbMF06Y31mdW5jdGlvbiBwayhhLGIpe3ZhciBjPW9rKCk7Yy5wZW5kaW5nfHwoYy5wZW5kaW5nPVtdKTtDYihjLnBlbmRpbmcsZnVuY3Rpb24oZCl7cmV0dXJuIGQudGFyZ2V0LmN0aWQ9PT1hLmN0aWQmJmQudGFyZ2V0LmlzRGVzdGluYXRpb249PT1hLmlzRGVzdGluYXRpb259KXx8Yy5wZW5kaW5nLnB1c2goe3RhcmdldDphLG9uTG9hZDpifSl9ZnVuY3Rpb24gcWsoKXt2YXIgYT1BLmdvb2dsZV90YWdzX2ZpcnN0X3BhcnR5O0FycmF5LmlzQXJyYXkoYSl8fChhPVtdKTtmb3IodmFyIGI9e30sYz1tKGEpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWJbZC52YWx1ZV09ITA7cmV0dXJuIE9iamVjdC5mcmVlemUoYil9CnZhciByaz1mdW5jdGlvbigpe3RoaXMuY29udGFpbmVyPXt9O3RoaXMuZGVzdGluYXRpb249e307dGhpcy5kZXN0aW5hdGlvbkFycmF5PXt9O3RoaXMuY2Fub25pY2FsPXt9O3RoaXMucGVuZGluZz1bXTt0aGlzLmluamVjdGVkRmlyc3RQYXJ0eUNvbnRhaW5lcnM9e307dGhpcy5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzPXFrKCl9OwpmdW5jdGlvbiBvaygpe3ZhciBhPU1jKCJnb29nbGVfdGFnX2RhdGEiLHt9KSxiPWEudGlkcjtiJiZ0eXBlb2YgYj09PSJvYmplY3QifHwoYj1uZXcgcmssYS50aWRyPWIpO3ZhciBjPWI7Yy5jb250YWluZXJ8fChjLmNvbnRhaW5lcj17fSk7Yy5kZXN0aW5hdGlvbnx8KGMuZGVzdGluYXRpb249e30pO2MuZGVzdGluYXRpb25BcnJheXx8KGMuZGVzdGluYXRpb25BcnJheT17fSk7Yy5jYW5vbmljYWx8fChjLmNhbm9uaWNhbD17fSk7Yy5wZW5kaW5nfHwoYy5wZW5kaW5nPVtdKTtjLmluamVjdGVkRmlyc3RQYXJ0eUNvbnRhaW5lcnN8fChjLmluamVjdGVkRmlyc3RQYXJ0eUNvbnRhaW5lcnM9cWsoKSk7cmV0dXJuIGN9O2Z1bmN0aW9uIHNrKCl7cmV0dXJuIElmKDcpJiZ0aygpLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1FKDUpfSl9ZnVuY3Rpb24gdWsoKXt2YXIgYTtyZXR1cm4oYT1LZig1NSkpIT1udWxsP2E6W119ZnVuY3Rpb24gdmsoKXtyZXR1cm4gRSg2KXx8Il8iK0UoNSl9ZnVuY3Rpb24gd2soKXt2YXIgYT1FKDEwKTtyZXR1cm4gYT9hLnNwbGl0KCJ8Iik6W0UoNSldfWZ1bmN0aW9uIHRrKCl7dmFyIGE9S2YoNTkpO3JldHVybiBBcnJheS5pc0FycmF5KGEpP2EuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiB0eXBlb2YgYj09PSJzdHJpbmcifSkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiLmluZGV4T2YoIkdUTS0iKSE9PTB9KTpbXX1mdW5jdGlvbiB4aygpe3ZhciBhPXlrKHprKCkpLGI9YSYmYS5wYXJlbnQ7aWYoYilyZXR1cm4geWsoYil9CmZ1bmN0aW9uIEFrKCl7dmFyIGE9eWsoemsoKSk7aWYoYSl7Zm9yKDthLnBhcmVudDspe3ZhciBiPXlrKGEucGFyZW50KTtpZighYilicmVhazthPWJ9cmV0dXJuIGF9fWZ1bmN0aW9uIHlrKGEpe3ZhciBiPW9rKCk7cmV0dXJuIGEuaXNEZXN0aW5hdGlvbj9uayhhLmN0aWQpOmIuY29udGFpbmVyW2EuY3RpZF19ZnVuY3Rpb24gQmsoKXt2YXIgYT1vaygpO2lmKGEucGVuZGluZyl7Zm9yKHZhciBiLGM9W10sZD0hMSxlPXdrKCksZj10aygpLGc9e30saD0wO2g8YS5wZW5kaW5nLmxlbmd0aDtnPXtSZzp2b2lkIDB9LGgrKylnLlJnPWEucGVuZGluZ1toXSxDYihnLlJnLnRhcmdldC5pc0Rlc3RpbmF0aW9uP2Y6ZSxmdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG49PT1sLlJnLnRhcmdldC5jdGlkfX0oZykpP2R8fChiPWcuUmcub25Mb2FkLGQ9ITApOmMucHVzaChnLlJnKTthLnBlbmRpbmc9YztpZihiKXRyeXtiKHZrKCkpfWNhdGNoKGwpe319fQpmdW5jdGlvbiBDaygpe2Zvcih2YXIgYT1FKDUpLGI9d2soKSxjPXRrKCksZD11aygpLGU9ZnVuY3Rpb24ocSxyKXt2YXIgdD17Y2Fub25pY2FsQ29udGFpbmVySWQ6RSg2KSxzY3JpcHRDb250YWluZXJJZDphLHN0YXRlOjIsY29udGFpbmVyczpiLnNsaWNlKCksZGVzdGluYXRpb25zOmMuc2xpY2UoKX07SmMmJih0LnNjcmlwdEVsZW1lbnQ9SmMpO0tjJiYodC5zY3JpcHRTb3VyY2U9S2MpO3hrKCk9PT12b2lkIDAmJih0Lmh0bWxMb2FkT3JkZXI9bGsodCksdC5sb2FkU2NyaXB0VHlwZT1tayh0KSk7dmFyIHUsdjtzd2l0Y2gocil7Y2FzZSAwOnU9ZnVuY3Rpb24oeil7Zi5jb250YWluZXJbcV09en07dj1mLmNvbnRhaW5lcltxXTticmVhaztjYXNlIDE6dT1mdW5jdGlvbih6KXtmLmRlc3RpbmF0aW9uQXJyYXlbcV09Zi5kZXN0aW5hdGlvbkFycmF5W3FdfHxbXTtmLmRlc3RpbmF0aW9uQXJyYXlbcV0udW5zaGlmdCh6KX07dmFyIHgseT0oKHg9Zi5kZXN0aW5hdGlvbkFycmF5W3FdKT09Cm51bGw/dm9pZCAwOnhbMF0pfHxmLmRlc3RpbmF0aW9uW3FdOyF5fHx5LnN0YXRlIT09MCYmeS5zdGF0ZSE9PTF8fCh2PXkpO2JyZWFrO2Nhc2UgMjp1PWZ1bmN0aW9uKHope2YuZGVzdGluYXRpb25BcnJheVtxXT1mLmRlc3RpbmF0aW9uQXJyYXlbcV18fFtdO2YuZGVzdGluYXRpb25BcnJheVtxXS5wdXNoKHopfSx2PXZvaWQgMH11JiYodj8odi5zdGF0ZT09PTAmJlAoOTMpLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qsdix0KSk6dSh0KSl9LGY9b2soKSxnPW0oYiksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpZShoLnZhbHVlLDApO2Zvcih2YXIgbD1tKGMpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO2QuaW5jbHVkZXMocCk/ZShwLDEpOmUocCwyKX1mLmNhbm9uaWNhbFt2aygpXT17fTtCaygpfWZ1bmN0aW9uIERrKCl7dmFyIGE9dmsoKTtyZXR1cm4hIW9rKCkuY2Fub25pY2FsW2FdfQpmdW5jdGlvbiBFayhhKXtyZXR1cm4hIW9rKCkuY29udGFpbmVyW2FdfWZ1bmN0aW9uIEZrKCl7dmFyIGE9emsoKSxiPXlrKGEpO3JldHVybiBiJiZiLmNvbnRleHR9ZnVuY3Rpb24gR2soYSl7dmFyIGI9bmsoYSk7cmV0dXJuIGI/Yi5zdGF0ZSE9PTA6ITF9ZnVuY3Rpb24gemsoKXtyZXR1cm57Y3RpZDpFKDUpLGlzRGVzdGluYXRpb246SWYoNyl9fWZ1bmN0aW9uIEhrKGEsYixjKXt2YXIgZD16aygpLGU9b2soKS5jb250YWluZXJbYV07ZSYmZS5zdGF0ZSE9PTN8fChvaygpLmNvbnRhaW5lclthXT17c3RhdGU6MSxjb250ZXh0OmIscGFyZW50OmR9LHBrKHtjdGlkOmEsaXNEZXN0aW5hdGlvbjohMX0sYykpfWZ1bmN0aW9uIElrKGEsYixjKXt2YXIgZD1vaygpLGU9bmsoYSk7ZT9lLnN0YXRlPTE6KGU9e2NvbnRleHQ6YixzdGF0ZToxLHBhcmVudDp6aygpfSxkLmRlc3RpbmF0aW9uQXJyYXlbYV09W2VdKTtwayh7Y3RpZDphLGlzRGVzdGluYXRpb246ITB9LGMpfQpmdW5jdGlvbiBKayhhLGIsYyxkKXt2YXIgZT1vaygpLGY9bmsoYSk7Zj9mLnN0YXRlPTA6KGY9e3N0YXRlOjAsdHJhbnNwb3J0VXJsOmIsY29udGV4dDpjLHBhcmVudDp6aygpfSxlLmRlc3RpbmF0aW9uQXJyYXlbYV09W2ZdKTtwayh7Y3RpZDphLGlzRGVzdGluYXRpb246ITB9LGQpO1AoOTEpfWZ1bmN0aW9uIEtrKCl7dmFyIGE9b2soKS5jb250YWluZXIsYjtmb3IoYiBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkoYikmJmFbYl0uc3RhdGU9PT0xKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIExrKCl7dmFyIGE9e307R2Iob2soKS5kZXN0aW5hdGlvbixmdW5jdGlvbihiLGMpeyhjPT1udWxsP3ZvaWQgMDpjLnN0YXRlKT09PTAmJihhW2JdPWMpfSk7R2Iob2soKS5kZXN0aW5hdGlvbkFycmF5LGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Y1swXTsoZD09bnVsbD92b2lkIDA6ZC5zdGF0ZSk9PT0wJiYoYVtiXT1kKX0pO3JldHVybiBhfQpmdW5jdGlvbiBNayhhKXtyZXR1cm4hIShhJiZhLnBhcmVudCYmYS5jb250ZXh0JiZhLmNvbnRleHQuc291cmNlPT09MSYmYS5wYXJlbnQuY3RpZC5pbmRleE9mKCJHVE0tIikhPT0wKX1mdW5jdGlvbiBOaygpe2Zvcih2YXIgYT1vaygpLGI9bSh3aygpKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlpZihhLmluamVjdGVkRmlyc3RQYXJ0eUNvbnRhaW5lcnNbYy52YWx1ZV0pcmV0dXJuITA7cmV0dXJuITF9O3ZhciBPaz1mdW5jdGlvbigpe307T2sucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCJ9O3ZhciBQaz1uZXcgT2s7dmFyIFhrPWZ1bmN0aW9uKCl7dGhpcy5zdG9yYWdlPVlhKCl9O1hrLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLnN0b3JhZ2Uuc2V0KFN0cmluZyhhKSxiKX07WGsucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdG9yYWdlLmdldChTdHJpbmcoYSkpfTt2YXIgWWs7ZnVuY3Rpb24gWmsoYSxiKXtZa3x8KFlrPW5ldyBYayk7WWsuc2V0KGEsYil9ZnVuY3Rpb24gJGsoYSl7WWt8fChZaz1uZXcgWGspO3JldHVybiBZay5nZXQoYSl9ZnVuY3Rpb24gYWwoYSxiKXtZa3x8KFlrPW5ldyBYayk7dmFyIGM9WWs7Yy5zdG9yYWdlLmhhcyhTdHJpbmcoYSkpfHxjLnN0b3JhZ2Uuc2V0KFN0cmluZyhhKSxiKCkpO3JldHVybiBjLnN0b3JhZ2UuZ2V0KFN0cmluZyhhKSl9O2Z1bmN0aW9uIGJsKGEsYil7ZnVuY3Rpb24gYyhnKXt2YXIgaD1SaihnKSxsPUxqKGgsInByb3RvY29sIiksbj1MaihoLCJob3N0IiwhMCkscD1MaihoLCJwb3J0IikscT1MaihoLCJwYXRoIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cLyQvLCIiKTtpZihsPT09dm9pZCAwfHxsPT09Imh0dHAiJiZwPT09IjgwInx8bD09PSJodHRwcyImJnA9PT0iNDQzIilsPSJ3ZWIiLHA9ImRlZmF1bHQiO3JldHVybltsLG4scCxxXX1mb3IodmFyIGQ9YyhTdHJpbmcoYSkpLGU9YyhTdHJpbmcoYikpLGY9MDtmPGQubGVuZ3RoO2YrKylpZihkW2ZdIT09ZVtmXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBjbChhKXtyZXR1cm4gZGwoYSk/MTowfQpmdW5jdGlvbiBkbChhKXt2YXIgYj1hLmFyZzAsYz1hLmFyZzE7aWYoYS5hbnlfb2YmJkFycmF5LmlzQXJyYXkoYykpe2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1FZChhLHt9KTtFZCh7YXJnMTpjW2RdLGFueV9vZjp2b2lkIDB9LGUpO2lmKGNsKGUpKXJldHVybiEwfXJldHVybiExfXN3aXRjaChhWyJmdW5jdGlvbiJdKXtjYXNlICJfY24iOnJldHVybiBLZyhiLGMpO2Nhc2UgIl9jc3MiOnJldHVybiBHZyhiLGMpO2Nhc2UgIl9ldyI6cmV0dXJuIEhnKGIsYyk7Y2FzZSAiX2VxIjpyZXR1cm4gTGcoYixjKTtjYXNlICJfZ2UiOnJldHVybiBNZyhiLGMpO2Nhc2UgIl9ndCI6cmV0dXJuIE9nKGIsYyk7Y2FzZSAiX2xjIjpyZXR1cm4gSWcoYixjKTtjYXNlICJfbGUiOnJldHVybiBOZyhiLGMpO2Nhc2UgIl9sdCI6cmV0dXJuIFBnKGIsYyk7Y2FzZSAiX3JlIjpyZXR1cm4gSmcoYixjLGEuaWdub3JlX2Nhc2UsYWwoMyxmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwfSkpO2Nhc2UgIl9zdyI6cmV0dXJuIFFnKGIsCmMpO2Nhc2UgIl91bSI6cmV0dXJuIGJsKGIsYyl9cmV0dXJuITF9O2Z1bmN0aW9uIGVsKGEsYixjLGQsZSl7aWYoQXJyYXkuaXNBcnJheShhKSl7dmFyIGY7c3dpdGNoKGFbMF0pe2Nhc2UgImZ1bmN0aW9uX2lkIjpyZXR1cm4gYVsxXTtjYXNlICJsaXN0IjpmPVtdO2Zvcih2YXIgZz0xO2c8YS5sZW5ndGg7ZysrKWYucHVzaChlbChhW2ddLGIsYyxkLGUpKTtyZXR1cm4gZjtjYXNlICJtYWNybyI6dmFyIGg9ZFthWzFdXTtyZXR1cm4gaD9oLmV2YWx1YXRlKGIsZSk6dm9pZCAwO2Nhc2UgIm1hcCI6Zj17fTtmb3IodmFyIGw9MTtsPGEubGVuZ3RoO2wrPTIpZltlbChhW2xdLGIsYyxkLGUpXT1lbChhW2wrMV0sYixjLGQsZSk7cmV0dXJuIGY7Y2FzZSAidGVtcGxhdGUiOmY9W107Zm9yKHZhciBuPSExLHA9MTtwPGEubGVuZ3RoO3ArKyl7dmFyIHE9ZWwoYVtwXSxiLGMsZCxlKTtmLnB1c2gocSl9cmV0dXJuIGYuam9pbigiIik7Y2FzZSAiZXNjYXBlIjpmPWVsKGFbMV0sYixjLGQsZSk7Zj1TdHJpbmcoZik7Zm9yKHZhciB5PTI7eTxhLmxlbmd0aDt5KyspVWlbYVt5XV0mJihmPVVpW2FbeV1dKGYpKTtyZXR1cm4gZjtjYXNlICJ0YWciOnZhciB6PWFbMV07aWYoIWNbel0pdGhyb3cgRXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHRhZyByZWZlcmVuY2UgIisKeisiLiIpO3JldHVybntibzphWzJdLGluZGV4Onp9O2Nhc2UgInpiIjp2YXIgQz17fSxEPShDW0dmLlliXT1hWzFdLEMuYXJnMD1lbChhWzJdLGIsYyxkLGUpLEMuYXJnMT1lbChhWzNdLGIsYyxkLGUpLEMuaWdub3JlX2Nhc2U9ZWwoYVs1XSxiLGMsZCxlKSxDKSxJPWNsKEQpLEc9ISFhWzRdO3JldHVybiBHfHxJIT09Mj9HIT09KEk9PT0xKTpudWxsO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gZXhwYW5kIHVua25vd24gVmFsdWUgdHlwZTogIithWzBdKyIuIik7fX1yZXR1cm4gYX07ZnVuY3Rpb24gZmwoYSl7cmV0dXJuIGEmJmEuaW5kZXhPZigicGVuZGluZzoiKT09PTA/Z2woYS5zdWJzdHIoOCkpOiExfWZ1bmN0aW9uIGdsKGEpe2lmKGE9PW51bGx8fGEubGVuZ3RoPT09MClyZXR1cm4hMTt2YXIgYj1OdW1iZXIoYSksYz1OYigpO3JldHVybiBiPGMrM0U1JiZiPmMtOUU1fTt2YXIgaGw9ITEsaWw9ITEsamw9ITEsa2w9MCxsbD0hMSxtbD12b2lkIDAsbmw9W107ZnVuY3Rpb24gb2woYSl7aWYoa2w9PT0wKWxsJiZubCYmKG5sLmxlbmd0aD49MTAwJiZubC5zaGlmdCgpLG5sLnB1c2goYSkpO2Vsc2UgaWYocGwoKSl7dmFyIGI9RSg0MSksYz1NYyhiLFtdKTtjLmxlbmd0aD49NTAmJmMuc2hpZnQoKTtjLnB1c2goYSl9fWZ1bmN0aW9uIHFsKCl7aWx8fChybCgpLHNsKGtsKSl9ZnVuY3Rpb24gc2woYSl7aWYoIWlsfHxrbD09PTImJmE9PT0xKWlmKGlsPSEwLGpsJiYoYWQoQiwiVEFQcm9kRGVidWdTaWduYWwiLHFsKSxqbD0hMSksbWwhPT12b2lkIDAmJihBLmNsZWFyVGltZW91dChtbCksbWw9dm9pZCAwKSxrbD1hLGE9PT0xKXt2YXIgYj1ubDtubD12b2lkIDA7Yj09bnVsbHx8Yi5mb3JFYWNoKGZ1bmN0aW9uKGMpe29sKGMpfSl9fQpmdW5jdGlvbiBybCgpe3ZhciBhPUIuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS10YWctYXNzaXN0YW50LXByb2QtcHJlc2VudCIpO2dsKGEpP2tsPTE6IWZsKGEpfHxobHx8amw/a2w9Mjooamw9ITAsJGMoQiwiVEFQcm9kRGVidWdTaWduYWwiLHFsLCExKSxtbD1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtpbHx8KHJsKCksc2woa2wpKTtobD0hMH0sMjAwKSl9ZnVuY3Rpb24gcGwoKXtpZighbGwpcmV0dXJuITE7c3dpdGNoKGtsKXtjYXNlIDE6Y2FzZSAwOnJldHVybiEwO2Nhc2UgMjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiExfX07ZnVuY3Rpb24gdGwoKXt2YXIgYT1NYygiZ29vZ2xlX3RhZ19kYXRhIix7fSk7cmV0dXJuIGEuaWNzPWEuaWNzfHxuZXcgdWx9dmFyIHVsPWZ1bmN0aW9uKCl7dGhpcy5lbnRyaWVzPXt9O3RoaXMud2FpdFBlcmlvZFRpbWVkT3V0PXRoaXMud2FzU2V0TGF0ZT10aGlzLmFjY2Vzc2VkQW55PXRoaXMuYWNjZXNzZWREZWZhdWx0PXRoaXMudXNlZEltcGxpY2l0PXRoaXMudXNlZFVwZGF0ZT10aGlzLnVzZWREZWZhdWx0PXRoaXMudXNlZERlY2xhcmU9dGhpcy5hY3RpdmU9ITE7dGhpcy5IPVtdfTsKdWwucHJvdG90eXBlLmRlZmF1bHQ9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dGhpcy51c2VkRGVmYXVsdHx8dGhpcy51c2VkRGVjbGFyZXx8IXRoaXMuYWNjZXNzZWREZWZhdWx0JiYhdGhpcy5hY2Nlc3NlZEFueXx8KHRoaXMud2FzU2V0TGF0ZT0hMCk7dGhpcy51c2VkRGVmYXVsdD10aGlzLmFjdGl2ZT0hMDtzYigiVEFHR0lORyIsMTkpO2I9PW51bGw/c2IoIlRBR0dJTkciLDE4KTp2bCh0aGlzLGEsYj09PSJncmFudGVkIixjLGQsZSxmLGcpfTt1bC5wcm90b3R5cGUud2FpdEZvclVwZGF0ZT1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspdmwodGhpcyxhW2RdLHZvaWQgMCx2b2lkIDAsIiIsIiIsYixjKX07CnZhciB2bD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe3ZhciBsPWEuZW50cmllcyxuPWxbYl18fHt9LHA9bi5yZWdpb24scT1kJiZ6YihkKT9kLnRvVXBwZXJDYXNlKCk6dm9pZCAwO2U9ZS50b1VwcGVyQ2FzZSgpO2Y9Zi50b1VwcGVyQ2FzZSgpO2lmKGU9PT0iInx8cT09PWZ8fChxPT09ZT9wIT09ZjohcSYmIXApKXt2YXIgcj0hIShnJiZnPjAmJm4udXBkYXRlPT09dm9pZCAwKSx0PXtyZWdpb246cSxkZWNsYXJlX3JlZ2lvbjpuLmRlY2xhcmVfcmVnaW9uLGltcGxpY2l0Om4uaW1wbGljaXQsZGVmYXVsdDpjIT09dm9pZCAwP2M6bi5kZWZhdWx0LGRlY2xhcmU6bi5kZWNsYXJlLHVwZGF0ZTpuLnVwZGF0ZSxxdWlldDpyfTtpZihlIT09IiJ8fG4uZGVmYXVsdCE9PSExKWxbYl09dDtyJiZBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsW2JdPT09dCYmdC5xdWlldCYmKHNiKCJUQUdHSU5HIiwyKSxhLndhaXRQZXJpb2RUaW1lZE91dD0hMCxhLmNsZWFyVGltZW91dChiLHZvaWQgMCxoKSwKYS5ub3RpZnlMaXN0ZW5lcnMoKSl9LGcpfX07az11bC5wcm90b3R5cGU7ay5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVthXSxlPWMuZGVsZWdhdGVkQ29uc2VudFR5cGVzLGY7Zm9yKGYgaW4gZSllLmhhc093blByb3BlcnR5KGYpJiZlW2ZdPT09YSYmZC5wdXNoKGYpO3ZhciBnPXRoaXMuZW50cmllc1thXXx8e30saD10aGlzLmdldENvbnNlbnRTdGF0ZShhLGMpO2lmKGcucXVpZXQpe2cucXVpZXQ9ITE7Zm9yKHZhciBsPW0oZCksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpd2wodGhpcyxuLnZhbHVlKX1lbHNlIGlmKGIhPT12b2lkIDAmJmghPT1iKWZvcih2YXIgcD1tKGQpLHE9cC5uZXh0KCk7IXEuZG9uZTtxPXAubmV4dCgpKXdsKHRoaXMscS52YWx1ZSl9OwprLnVwZGF0ZT1mdW5jdGlvbihhLGIsYyl7dGhpcy51c2VkRGVmYXVsdHx8dGhpcy51c2VkRGVjbGFyZXx8dGhpcy51c2VkVXBkYXRlfHwhdGhpcy5hY2Nlc3NlZEFueXx8KHRoaXMud2FzU2V0TGF0ZT0hMCk7dGhpcy51c2VkVXBkYXRlPXRoaXMuYWN0aXZlPSEwO2lmKGIhPW51bGwpe3ZhciBkPXRoaXMuZ2V0Q29uc2VudFN0YXRlKGEsYyksZT10aGlzLmVudHJpZXM7KGVbYV09ZVthXXx8e30pLnVwZGF0ZT1iPT09ImdyYW50ZWQiO3RoaXMuY2xlYXJUaW1lb3V0KGEsZCxjKX19OwprLmRlY2xhcmU9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnVzZWREZWNsYXJlPXRoaXMuYWN0aXZlPSEwO3ZhciBmPXRoaXMuZW50cmllcyxnPWZbYV18fHt9LGg9Zy5kZWNsYXJlX3JlZ2lvbixsPWMmJnpiKGMpP2MudG9VcHBlckNhc2UoKTp2b2lkIDA7ZD1kLnRvVXBwZXJDYXNlKCk7ZT1lLnRvVXBwZXJDYXNlKCk7aWYoZD09PSIifHxsPT09ZXx8KGw9PT1kP2ghPT1lOiFsJiYhaCkpe3ZhciBuPXtyZWdpb246Zy5yZWdpb24sZGVjbGFyZV9yZWdpb246bCxkZWNsYXJlOmI9PT0iZ3JhbnRlZCIsaW1wbGljaXQ6Zy5pbXBsaWNpdCxkZWZhdWx0OmcuZGVmYXVsdCx1cGRhdGU6Zy51cGRhdGUscXVpZXQ6Zy5xdWlldH07aWYoZCE9PSIifHxnLmRlY2xhcmUhPT0hMSlmW2FdPW59fTsKay5pbXBsaWNpdD1mdW5jdGlvbihhLGIpe3RoaXMudXNlZEltcGxpY2l0PSEwO3ZhciBjPXRoaXMuZW50cmllcyxkPWNbYV09Y1thXXx8e307ZC5pbXBsaWNpdCE9PSExJiYoZC5pbXBsaWNpdD1iPT09ImdyYW50ZWQiKX07CmsuZ2V0Q29uc2VudFN0YXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5lbnRyaWVzLGQ9Y1thXXx8e30sZT1kLnVwZGF0ZTtpZihlIT09dm9pZCAwKXJldHVybiBlPzE6MjtpZihiLnVzZWRDb250YWluZXJTY29wZWREZWZhdWx0cyl7dmFyIGY9Yi5jb250YWluZXJTY29wZWREZWZhdWx0c1thXTtpZihmPT09MylyZXR1cm4gMTtpZihmPT09MilyZXR1cm4gMn1lbHNlIGlmKGU9ZC5kZWZhdWx0LGUhPT12b2lkIDApcmV0dXJuIGU/MToyO2lmKGI9PW51bGw/MDpiLmRlbGVnYXRlZENvbnNlbnRUeXBlcy5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIGc9Yi5kZWxlZ2F0ZWRDb25zZW50VHlwZXNbYV0saD1jW2ddfHx7fTtlPWgudXBkYXRlO2lmKGUhPT12b2lkIDApcmV0dXJuIGU/MToyO2lmKGIudXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzKXt2YXIgbD1iLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzW2ddO2lmKGw9PT0zKXJldHVybiAxO2lmKGw9PT0yKXJldHVybiAyfWVsc2UgaWYoZT0KaC5kZWZhdWx0LGUhPT12b2lkIDApcmV0dXJuIGU/MToyfWU9ZC5kZWNsYXJlO2lmKGUhPT12b2lkIDApcmV0dXJuIGU/MToyO2U9ZC5pbXBsaWNpdDtyZXR1cm4gZSE9PXZvaWQgMD9lPzM6NDowfTtrLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dGhpcy5ILnB1c2goe2NvbnNlbnRUeXBlczphLGllOmJ9KX07dmFyIHdsPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxhLkgubGVuZ3RoOysrYyl7dmFyIGQ9YS5IW2NdO0FycmF5LmlzQXJyYXkoZC5jb25zZW50VHlwZXMpJiZkLmNvbnNlbnRUeXBlcy5pbmRleE9mKGIpIT09LTEmJihkLnhvPSEwKX19O3VsLnByb3RvdHlwZS5ub3RpZnlMaXN0ZW5lcnM9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPHRoaXMuSC5sZW5ndGg7KytjKXt2YXIgZD10aGlzLkhbY107aWYoZC54byl7ZC54bz0hMTt0cnl7ZC5pZSh7Y29uc2VudEV2ZW50SWQ6YSxjb25zZW50UHJpb3JpdHlJZDpifSl9Y2F0Y2goZSl7fX19fTt2YXIgeGw9ITEseWw9ITEsemw9e30sQWw9e2RlbGVnYXRlZENvbnNlbnRUeXBlczp7fSxjb3JlUGxhdGZvcm1TZXJ2aWNlczp7fSx1c2VkQ29yZVBsYXRmb3JtU2VydmljZXM6ITEsc2VsZWN0ZWRBbGxDb3JlUGxhdGZvcm1TZXJ2aWNlczohMSxjb250YWluZXJTY29wZWREZWZhdWx0czooemwuYWRfc3RvcmFnZT0xLHpsLmFuYWx5dGljc19zdG9yYWdlPTEsemwuYWRfdXNlcl9kYXRhPTEsemwuYWRfcGVyc29uYWxpemF0aW9uPTEsemwpLHVzZWRDb250YWluZXJTY29wZWREZWZhdWx0czohMX07ZnVuY3Rpb24gQmwoYSl7dmFyIGI9dGwoKTtiLmFjY2Vzc2VkQW55PSEwO3JldHVybih6YihhKT9bYV06YSkuZXZlcnkoZnVuY3Rpb24oYyl7c3dpdGNoKGIuZ2V0Q29uc2VudFN0YXRlKGMsQWwpKXtjYXNlIDE6Y2FzZSAzOnJldHVybiEwO2Nhc2UgMjpjYXNlIDQ6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19KX0KZnVuY3Rpb24gQ2woYSl7dmFyIGI9dGwoKTtiLmFjY2Vzc2VkQW55PSEwO3JldHVybiBiLmdldENvbnNlbnRTdGF0ZShhLEFsKX1mdW5jdGlvbiBEbChhKXt2YXIgYj10bCgpO2IuYWNjZXNzZWRBbnk9ITA7cmV0dXJuIShiLmVudHJpZXNbYV18fHt9KS5xdWlldH1mdW5jdGlvbiBFbCgpe2lmKCFZZig1KSlyZXR1cm4hMTt2YXIgYT10bCgpO2EuYWNjZXNzZWRBbnk9ITA7aWYoYS5hY3RpdmUpcmV0dXJuITA7aWYoIUFsLnVzZWRDb250YWluZXJTY29wZWREZWZhdWx0cylyZXR1cm4hMTtmb3IodmFyIGI9bShPYmplY3Qua2V5cyhBbC5jb250YWluZXJTY29wZWREZWZhdWx0cykpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWlmKEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzW2MudmFsdWVdIT09MSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBGbChhLGIpe3RsKCkuYWRkTGlzdGVuZXIoYSxiKX0KZnVuY3Rpb24gR2woYSxiKXt0bCgpLm5vdGlmeUxpc3RlbmVycyhhLGIpfWZ1bmN0aW9uIEhsKGEsYil7aWYoYi5ldmVyeShEbCkpYSh7fSk7ZWxzZXt2YXIgYz0hMTtGbChiLGZ1bmN0aW9uKGQpeyFjJiZiLmV2ZXJ5KERsKSYmKGM9ITAsYShkKSl9KX19CmZ1bmN0aW9uIElsKGEsYil7dmFyIGM9emIoYik/W2JdOmIsZD17fSxlPWZ1bmN0aW9uKCl7cmV0dXJuIGMuZmlsdGVyKGZ1bmN0aW9uKGgpe3JldHVybiBCbChoKSYmIWRbaF19KX0sZj1lKCk7aWYoZi5sZW5ndGghPT1jLmxlbmd0aCl7dmFyIGc9ZnVuY3Rpb24oaCl7Zm9yKHZhciBsPW0oaCksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpZFtuLnZhbHVlXT0hMH07ZyhmKTtGbChjLGZ1bmN0aW9uKGgpe2Z1bmN0aW9uIGwocSl7cS5sZW5ndGghPT0wJiYoZyhxKSxoLmNvbnNlbnRUeXBlcz1xLGEoaCkpfXZhciBuPWUoKTtpZihuLmxlbmd0aCE9PTApe3ZhciBwPU9iamVjdC5rZXlzKGQpLmxlbmd0aDtuLmxlbmd0aCtwPj1jLmxlbmd0aD9sKG4pOkEuc2V0VGltZW91dChmdW5jdGlvbigpe2woZSgpKX0sNTAwKX19KX19O3ZhciBKbD0hMTtmdW5jdGlvbiBLbChhLGIpe3ZhciBjPXdrKCksZD10aygpO0UoMjYpO3ZhciBlPUlmKDQ3KT8wOklmKDUwKT8xOjMsZj1YaigpO2lmKHBsKCkpe3ZhciBnPUxsKCJJTklUIik7Zy5jb250YWluZXJMb2FkU291cmNlPWEhPW51bGw/YTowO2ImJihnLnBhcmVudFRhcmdldFJlZmVyZW5jZT1iKTtnLmFsaWFzZXM9YztnLmRlc3RpbmF0aW9ucz1kO2UhPT12b2lkIDAmJihnLmd0Zz17c291cmNlOmUsbVBhdGg6ZiE9bnVsbD9mOiIifSk7b2woZyl9fQpmdW5jdGlvbiBNbChhKXt2YXIgYixjLGQsZTtiPWEudGFyZ2V0SWQ7Yz1hLnJlcXVlc3Q7ZD1hLnFiO2U9YS5pc0JhdGNoZWQ7dmFyIGY7aWYoZj1wbCgpKXt2YXIgZzthOnN3aXRjaChjLmVuZHBvaW50KXtjYXNlIDY4OmNhc2UgNjk6Y2FzZSAxOTpjYXNlIDYyOmNhc2UgNDc6Zz0hMDticmVhayBhO2RlZmF1bHQ6Zz0hMX1mPSFnfWlmKGYpe3ZhciBoPUxsKCJHVEFHX0hJVCIse2V2ZW50SWQ6ZC5ldmVudElkLHByaW9yaXR5SWQ6ZC5wcmlvcml0eUlkfSk7aC50YXJnZXQ9YjtoLnVybD1jLnVybDtjLnBvc3RCb2R5JiYoaC5wb3N0Qm9keT1jLnBvc3RCb2R5KTtoLnBhcmFtZXRlckVuY29kaW5nPWMucGFyYW1ldGVyRW5jb2Rpbmc7aC5lbmRwb2ludD1jLmVuZHBvaW50O2UhPT12b2lkIDAmJihoLmlzQmF0Y2hlZD1lKTtvbChoKX19ZnVuY3Rpb24gTmwoYSl7cGwoKSYmTWwoYSgpKX0KZnVuY3Rpb24gTGwoYSxiKXtiPWI9PT12b2lkIDA/e306YjtiLmdyb3VwSWQ9T2w7dmFyIGMsZD1iLGU9UGwsZj17cHVibGljSWQ6UWx9O2QuZXZlbnRJZCE9bnVsbCYmKGYuZXZlbnRJZD1kLmV2ZW50SWQpO2QucHJpb3JpdHlJZCE9bnVsbCYmKGYucHJpb3JpdHlJZD1kLnByaW9yaXR5SWQpO2QuZXZlbnROYW1lJiYoZi5ldmVudE5hbWU9ZC5ldmVudE5hbWUpO2QuZ3JvdXBJZCYmKGYuZ3JvdXBJZD1kLmdyb3VwSWQpO2QudGFnTmFtZSYmKGYudGFnTmFtZT1kLnRhZ05hbWUpO2M9e2NvbnRhaW5lclByb2R1Y3Q6IkdUTSIsa2V5OmYsdmVyc2lvbjplLG1lc3NhZ2VUeXBlOmF9O2MuY29udGFpbmVyUHJvZHVjdD1KbD8iT0dUIjoiR1RNIjtjLmtleS50YXJnZXRSZWY9Umw7cmV0dXJuIGN9dmFyIFFsPSIiLFBsPSIiLFJsPXtjdGlkOiIiLGlzRGVzdGluYXRpb246ITF9LE9sOwpmdW5jdGlvbiBTbChhKXt2YXIgYj1FKDUpLGM9SWYoNDUpLGQ9c2soKSxlPUUoNiksZj1FKDEpO0UoMjMpO2tsPTA7bGw9ITA7cmwoKTtPbD1hO1FsPWI7UGw9ZjtKbD1jO1JsPXtjdGlkOmIsaXNEZXN0aW5hdGlvbjpkLGNhbm9uaWNhbElkOmV9fTtmdW5jdGlvbiBUbChhLGIsYyxkKXtpZihwbCgpKXt2YXIgZT1iLk07TWwoe3RhcmdldElkOmR8fFtiLnRhcmdldC5kZXN0aW5hdGlvbklkXSxyZXF1ZXN0Ont1cmw6YSxwYXJhbWV0ZXJFbmNvZGluZzoyLGVuZHBvaW50OmN9LHFiOntldmVudElkOmUuZXZlbnRJZCxwcmlvcml0eUlkOmUucHJpb3JpdHlJZH0sRmo6e2V2ZW50SWQ6UShiLEguSi51ZikscHJpb3JpdHlJZDpRKGIsSC5KLnZmKX19KX19O2Z1bmN0aW9uIFVsKGEsYixjKXt2YXIgZD0iaHR0cHM6Ly8iK2ErYjtyZXR1cm4gYz9mdW5jdGlvbigpe3JldHVybiBXaigpP1hqKCkrYytiOmR9OmZ1bmN0aW9uKCl7cmV0dXJuIGR9fTt2YXIgVmw9e30sV2w9KFZsWzIyXT1VbCgid3d3Lmdvb2dsZWFkc2VydmljZXMuY29tIiwiL2NjbS9jb252ZXJzaW9uIiwiL2FzL2QiKSxWbFs2MF09VWwoInBhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tIiwiL2NjbS9jb252ZXJzaW9uIiwiL2dzIiksVmxbMjNdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9jY20vY29udmVyc2lvbiIsIi9nL2QiKSxWbCk7dmFyIFhsPXt9LFlsPShYbFs1XT1VbCgid3d3Lmdvb2dsZWFkc2VydmljZXMuY29tIiwiL3BhZ2VhZC9jb252ZXJzaW9uIiksWGxbNl09VWwoInBhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tIiwiL3BhZ2VhZC9jb252ZXJzaW9uIiwiL2dzIiksWGxbOF09VWwoInd3dy5nb29nbGUuY29tIiwiL3BhZ2VhZC8xcC1jb252ZXJzaW9uIiksWGxbNjZdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvdWNvbnZlcnNpb24iKSxYbFs2M109VWwoInd3dy5nb29nbGVhZHNlcnZpY2VzLmNvbSIsIi9wYWdlYWQvY29udmVyc2lvbiIpLFhsWzY0XT1VbCgicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iLCIvcGFnZWFkL2NvbnZlcnNpb24iLCIvZ3MiKSxYbFs2NV09VWwoInd3dy5nb29nbGUuY29tIiwiL3BhZ2VhZC8xcC1jb252ZXJzaW9uIiksWGxbNzRdPWZ1bmN0aW9uKCl7cmV0dXJuIFhqKCkrIi9hcy9wL2MifSxYbCk7dmFyIFpsPXt9LCRsPShabFs0NV09VWwoInd3dy5nb29nbGUuY29tIiwiL2NjbS9jb2xsZWN0IiksWmxbNDZdPVVsKCJwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIsIi9jY20vY29sbGVjdCIsIi9ncyIpLFpsWzY5XT1VbCgiYWQuZG91YmxlY2xpY2submV0IiwiL2NjbS9zL2NvbGxlY3QiKSxabFs1OF09VWwoInd3dy5nb29nbGUuY29tIiwiL3BhZ2VhZC9zZXRfcGFydGl0aW9uZWRfY29va2llIiksWmxbNTddPVVsKCJ3d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20iLCIvcGFnZWFkL3NldF9wYXJ0aXRpb25lZF9jb29raWUiKSxabCk7dmFyIGFtPXt9LGJtPShhbVs5XT1VbCgiZ29vZ2xlYWRzLmcuZG91YmxlY2xpY2submV0IiwiL3BhZ2VhZC92aWV3dGhyb3VnaGNvbnZlcnNpb24iKSxhbVs2OF09VWwoInd3dy5nb29nbGUuY29tIiwiL3Jta3QvY29sbGVjdCIpLGFtKTt2YXIgY209e30sZG09KGNtWzExXT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvcGFnZWFkL2Zvcm0tZGF0YSIsIi9kIiksY21bMjFdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9jY20vZm9ybS1kYXRhIiwiL2QiKSxjbVs3Ml09VWwoImdvb2dsZS5jb20iLCIvcGFnZWFkL2Zvcm0tZGF0YSIsIi9kIiksY21bNzNdPVVsKCJnb29nbGUuY29tIiwiL2NjbS9mb3JtLWRhdGEiLCIvZCIpLGNtKTt2YXIgZW09e30sZm09KGVtWzUxXT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvdHJhdmVsL2ZsaWdodHMvY2xpY2svY29udmVyc2lvbiIpLGVtKTt2YXIgZ209e30saG09KGdtWzFdPWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOi8vYWQuZG91YmxlY2xpY2submV0L2FjdGl2aXR5OyJ9LGdtWzJdPWZ1bmN0aW9uKCl7cmV0dXJuKFdqKCk/WGooKToiaHR0cHM6Ly9hZGUuZ29vZ2xlc3luZGljYXRpb24uY29tIikrIi9kZG0vYWN0aXZpdHkiKyhNKDQ2Nyk/IjsiOiIvIil9LGdtWzNdPWZ1bmN0aW9uKGEpe3JldHVybiJodHRwczovLyIrYS5scisiLmZscy5kb3VibGVjbGljay5uZXQvYWN0aXZpdHlpOyJ9LGdtKTtmdW5jdGlvbiBpbShhKXtzYigiSEVBTFRIIixhKX07dmFyIGptPXtiYTp7UHQ6ImF3X3VzZXJfZGF0YV9jYWNoZSIsb2k6ImNvb2tpZV9kZXByZWNhdGlvbl9sYWJlbCIsYmg6ImRpYWdub3N0aWNzX3BhZ2VfaWQiLG9wOiJlbWVtbyIsZHU6ImVtX3JlZ2lzdHJ5IixTaToiZWFiIixydToiZmxfdXNlcl9kYXRhX2NhY2hlIix0dToiZ2E0X3VzZXJfZGF0YV9jYWNoZSIsTHU6ImlkY19wdl9jbGFpbSIsU2U6ImlwX2dlb19kYXRhX2NhY2hlIixYaToiaXBfZ2VvX2ZldGNoX2luX3Byb2dyZXNzIixqbjoibmJfZGF0YSIsVHE6InBhZ2VfZXhwZXJpbWVudF9pZHMiLGxuOiJwbGQiLFZlOiJwdF9kYXRhIixtbjoicHRfbGlzdGVuZXJfc2V0IixrajoicmV0cnlfY29udGFpbmVycyIsT2g6InNlcnZpY2Vfd29ya2VyX2VuZHBvaW50IixacToic2hhcmVkX3VzZXJfaWQiLGFyOiJzaGFyZWRfdXNlcl9pZF9yZXF1ZXN0ZWQiLHNqOiJzaGFyZWRfdXNlcl9pZF9zb3VyY2UiLGJ2OiJhd2giLGhyOiJ1bml2ZXJzYWxfY2xhaW1fcmVnaXN0cnkifX07dmFyIGttPWZ1bmN0aW9uKGEpe3JldHVybiB0ZihmdW5jdGlvbihiKXtmb3IodmFyIGMgaW4gYSlpZihiPT09YVtjXSYmIS9eWzAtOV0rJC8udGVzdChjKSlyZXR1cm4hMDtyZXR1cm4hMX0pfShqbS5iYSk7CmZ1bmN0aW9uIGxtKGEsYil7Yj1iPT09dm9pZCAwPyExOmI7aWYoa20oYSkpe3ZhciBjLGQsZT0oZD0oYz1NYygiZ29vZ2xlX3RhZ19kYXRhIix7fSkpLnhjZCkhPW51bGw/ZDpjLnhjZD17fTtpZihlW2FdKXJldHVybiBlW2FdO2lmKGIpe3ZhciBmPXZvaWQgMCxnPTEsaD17fSxsPXtzZXQ6ZnVuY3Rpb24obil7Zj1uO2wubm90aWZ5KCl9LGdldDpmdW5jdGlvbigpe3JldHVybiBmfSxzdWJzY3JpYmU6ZnVuY3Rpb24obil7aFtTdHJpbmcoZyldPW47cmV0dXJuIGcrK30sdW5zdWJzY3JpYmU6ZnVuY3Rpb24obil7dmFyIHA9U3RyaW5nKG4pO3JldHVybiBoLmhhc093blByb3BlcnR5KHApPyhkZWxldGUgaFtwXSwhMCk6ITF9LG5vdGlmeTpmdW5jdGlvbigpe2Zvcih2YXIgbj1tKE9iamVjdC5rZXlzKGgpKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSl7dmFyIHE9cC52YWx1ZTt0cnl7aFtxXShhLGYpfWNhdGNoKHIpe319fX07cmV0dXJuIGVbYV09bH19fQpmdW5jdGlvbiBtbShhLGIpe3ZhciBjPWxtKGEsITApO2MmJmMuc2V0KGIpfWZ1bmN0aW9uIG5tKGEpe3ZhciBiO3JldHVybihiPWxtKGEpKT09bnVsbD92b2lkIDA6Yi5nZXQoKX1mdW5jdGlvbiBvbShhLGIpe3ZhciBjPWxtKGEpO2lmKCFjKXtjPWxtKGEsITApO2lmKCFjKXJldHVybjtjLnNldChiKX1yZXR1cm4gYy5nZXQoKX1mdW5jdGlvbiBwbShhLGIpe2lmKHR5cGVvZiBiPT09ImZ1bmN0aW9uIil7dmFyIGM7cmV0dXJuKGM9bG0oYSwhMCkpPT1udWxsP3ZvaWQgMDpjLnN1YnNjcmliZShiKX19ZnVuY3Rpb24gcW0oYSxiKXt2YXIgYz1sbShhKTtyZXR1cm4gYz9jLnVuc3Vic2NyaWJlKGIpOiExfTt2YXIgc209ZnVuY3Rpb24oKXt0aGlzLkg9e307dGhpcy5LPSExfTtzbS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3RoaXMuS3x8KHRoaXMuSD10bSgpLHRoaXMuSFsiMCJdJiZvbShqbS5iYS5TZSxKU09OLnN0cmluZ2lmeSh0aGlzLkgpKSl9Owp2YXIgeG09ZnVuY3Rpb24oKXt2YXIgYT11bSxiPXZtLGM9dm9pZCAwLGQ9ZnVuY3Rpb24oKXtjIT09dm9pZCAwJiZxbShqbS5iYS5TZSxjKTt0cnl7dmFyIGY9bm0oam0uYmEuU2UpO2IuSD1KU09OLnBhcnNlKGYpfWNhdGNoKGcpe1AoMTIzKSxpbSgyKSxiLkg9e319Yi5LPSEwO2EoKX0sZT1ubShqbS5iYS5TZSk7ZT9kKGUpOihjPXBtKGptLmJhLlNlLGQpLHdtKCkpfSx3bT1mdW5jdGlvbigpe2lmKCFubShqbS5iYS5YaSkpe21tKGptLmJhLlhpLCEwKTt2YXIgYT1mdW5jdGlvbihiKXttbShqbS5iYS5TZSxifHwie30iKTttbShqbS5iYS5YaSwhMSl9O3RyeXtBLmZldGNoKCJodHRwczovL3d3dy5nb29nbGUuY29tL2NjbS9nZW8iLHttZXRob2Q6IkdFVCIsY2FjaGU6Im5vLXN0b3JlIixtb2RlOiJjb3JzIixjcmVkZW50aWFsczoib21pdCJ9KS50aGVuKGZ1bmN0aW9uKGIpe2Iub2s/Yi50ZXh0KCkudGhlbihmdW5jdGlvbihjKXthKGMpfSxmdW5jdGlvbigpe2EoKX0pOmEoKX0sZnVuY3Rpb24oKXthKCl9KX1jYXRjaChiKXthKCl9fX0sCnRtPWZ1bmN0aW9uKCl7dmFyIGE9RSgyMik7dHJ5e3JldHVybiBKU09OLnBhcnNlKHFiKGEpKX1jYXRjaChiKXtyZXR1cm4gUCgxMjMpLGltKDIpLHt9fX0seW09ZnVuY3Rpb24oKXtyZXR1cm4gdm0uSFsiMCJdfHwiIn0sem09ZnVuY3Rpb24oKXtyZXR1cm4gdm0uSFsiMSJdfHwiIn0sQW09ZnVuY3Rpb24oKXt2YXIgYT12bSxiPSExO2I9ISFhLkhbIjIiXTtyZXR1cm4gYn0sQm09ZnVuY3Rpb24oKXtyZXR1cm4gdm0uSFsiNiJdIT09ITF9LENtPWZ1bmN0aW9uKCl7dmFyIGE9dm0sYj0hMTtiPSEhYS5IWyI5Il07cmV0dXJuIGJ9LERtPWZ1bmN0aW9uKCl7dmFyIGE9dm0sYj0iIjtiPWEuSFsiNCJdfHwiIjsKcmV0dXJuIGJ9LEVtPWZ1bmN0aW9uKCl7dmFyIGE9dm0sYj0iIjtiPWEuSFsiMyJdfHwiIjtyZXR1cm4gYn0sdm09bmV3IHNtO2Z1bmN0aW9uIEZtKGEpe2E9YT09PXZvaWQgMD8iZy9jb2xsZWN0IjphO3JldHVybiJodHRwczovLyIrKERtKCl8fCJ3d3ciKSsiLmdvb2dsZS1hbmFseXRpY3MuY29tLyIrYX1mdW5jdGlvbiBHbShhKXthPWE9PT12b2lkIDA/ImcvY29sbGVjdCI6YTt2YXIgYj1EbSgpO3JldHVybiJodHRwczovLyIrKGI/YisiLiI6IiIpKyJhbmFseXRpY3MuZ29vZ2xlLmNvbS8iK2F9dmFyIEhtPXt9LEltPShIbVsxN109ZnVuY3Rpb24oKXtyZXR1cm4gV2ooKSYmIURtKCk/WGooKSsiL2FnL2cvYyI6R20oKX0sSG1bMTZdPWZ1bmN0aW9uKCl7cmV0dXJuIFdqKCkmJiFEbSgpP1hqKCkrIi9nYS9nL2MiOkZtKCl9LEhtWzY3XT1mdW5jdGlvbigpe3ZhciBhO2E9YT09PXZvaWQgMD8iZy9jb2xsZWN0IjphO3JldHVybiBEbSgpPyIiOiJodHRwczovL3d3dy5nb29nbGUuY29tLyIrYX0sSG0pO2Z1bmN0aW9uIEptKGEsYixjKXt2YXIgZD1VbChiLCIvbWVhc3VyZW1lbnQvY29udmVyc2lvbiIsYyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIERtKCk/YSgibWVhc3VyZW1lbnQvY29udmVyc2lvbiIpOmQoKX19dmFyIEttPXt9LExtPShLbVs1NV09Sm0oRm0sInBhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tIiwiL2dzIiksS21bNTRdPUptKEdtLCJ3d3cuZ29vZ2xlLmNvbSIsIi9nIiksS20pO3ZhciBNbT1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LFdsLFlsLCRsLGJtLGRtLGZtLGhtLExtLEltKTtmdW5jdGlvbiBObShhLGIpe3ZhciBjPU9iamVjdC5rZXlzKGIpLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gYltkXSE9bnVsbH0pLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZCsiPSIrYltkXX0pLmpvaW4oIiYiKTtyZXR1cm4gTW1bYV0odm9pZCAwKSsiPyIrY307dmFyIE9tPXt9LFBtPShPbS50ZHA9MSxPbS5leHA9MSxPbS5ndG09MSxPbS5waWQ9MSxPbS5kbD0xLE9tLnNlcT0xLE9tLnQ9MSxPbS52PTEsT20pLFJtPWZ1bmN0aW9uKCl7dmFyIGE9UW07cmV0dXJuIE9iamVjdC5rZXlzKGEuSCkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBhLkhbYl19KX0sU209ZnVuY3Rpb24oYSxiLGMpe2lmKGEuSFtiXT09PXZvaWQgMHx8KGM9PT12b2lkIDA/MDpjKSlhLkhbYl09ITB9LFRtPWZ1bmN0aW9uKGEpe2EuZm9yRWFjaChmdW5jdGlvbihiKXtQbVtiXXx8KFFtLkhbYl09ITEpfSl9LFFtPW5ldyBmdW5jdGlvbigpe3RoaXMuSD17fTt0aGlzLks9e319O2Z1bmN0aW9uIFVtKGEsYixjKXt2YXIgZD1jPT09dm9pZCAwPyEwOmMsZT1RbTtlLktbYV09YjsoZD09PXZvaWQgMHx8ZCkmJlNtKGUsYSl9ZnVuY3Rpb24gVm0oYSxiKXtTbShRbSxhLGI9PT12b2lkIDA/ITE6Yil9O2Z1bmN0aW9uIFdtKGEpe3ZhciBiPTA7YS5HYy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2J8PTE8PGN9KTtyZXR1cm4gYn1mdW5jdGlvbiBYbSgpe3JldHVybnt0b3RhbDowLGpiOjAsR2M6bmV3IFNldCxsZjp7fX19ZnVuY3Rpb24gWW0oYSxiLGMsZCl7dmFyIGU9T2JqZWN0LmtleXMoYS5uZikuc29ydChmdW5jdGlvbihmLGcpe3JldHVybiBOdW1iZXIoZiktTnVtYmVyKGcpfSkubWFwKGZ1bmN0aW9uKGYpe3JldHVybltmLGIoYS5uZltmXSldfSkuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBmWzFdIT09dm9pZCAwfSkubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBmLmpvaW4oYyl9KS5qb2luKGQpO3JldHVybiBlP2U6dm9pZCAwfQpmdW5jdGlvbiBabShhLGIpe3ZhciBjLGQsZTtjPWM9PT12b2lkIDA/Il8iOmM7ZD1kPT09dm9pZCAwPyI7IjpkO2U9ZT09PXZvaWQgMD8ifiI6ZTtmb3IodmFyIGY9W10sZz1tKE9iamVjdC5rZXlzKGEubGYpLnNvcnQoKSksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciBsPWgudmFsdWUsbj1ZbShhLmxmW2xdLGIsYyxkKTtpZihuKXt2YXIgcD12b2lkIDA7Zi5wdXNoKCIiKygocD1sKSE9bnVsbD9wOiIiKStkK24pfX1yZXR1cm4gZi5sZW5ndGg/Zi5qb2luKGUpOnZvaWQgMH0KZnVuY3Rpb24gJG0oYSl7YS5qYj0wO2EuR2MuY2xlYXIoKTtmb3IodmFyIGI9bShPYmplY3Qua2V5cyhhLmxmKSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPWEubGZbYy52YWx1ZV07ZC5qYj0wO2QuR2MuY2xlYXIoKTtmb3IodmFyIGU9bShPYmplY3Qua2V5cyhkLm5mKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWQubmZbZi52YWx1ZV07Zy5qYj0wO2cuR2MuY2xlYXIoKX19fQpmdW5jdGlvbiBhbihhLGIsYyxkLGUpe2Q9ZD09PXZvaWQgMD8xOmQ7YS50b3RhbCs9ZDthLmpiKz1kO3ZhciBmLGc9Yj09PXZvaWQgMD8iIjpiO2Y9YS5sZltnXXx8KGEubGZbZ109e3RvdGFsOjAsamI6MCxHYzpuZXcgU2V0LG5mOnt9fSk7Zi50b3RhbCs9ZDtmLmpiKz1kO3ZhciBoLGw9U3RyaW5nKGMpO2g9Zi5uZltsXXx8KGYubmZbbF09e3RvdGFsOjAsamI6MCxHYzpuZXcgU2V0fSk7aC50b3RhbCs9ZDtoLmpiKz1kO2UhPT12b2lkIDAmJihhLkdjLmFkZChlKSxmLkdjLmFkZChlKSxoLkdjLmFkZChlKSl9O3ZhciBibj1mdW5jdGlvbigpe3RoaXMuSD1YbSgpfTtibi5wcm90b3R5cGUuaW5jcmVtZW50PWZ1bmN0aW9uKGEsYil7YW4odGhpcy5ILGEsYil9O3ZhciBjbj1uZXcgYm47ZnVuY3Rpb24gZG4oYSl7dmFyIGI9U3RyaW5nKGFbR2YuWWJdfHwiIikucmVwbGFjZSgvXy9nLCIiKTtyZXR1cm4gU2IoYiwiY3Z0Iik/ImN2dCI6Yn12YXIgZW49QS5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigiP2d0bV9sYXRlbmN5PSIpPj0wfHxBLmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCImZ3RtX2xhdGVuY3k9Iik+PTA7dmFyIGduPWZ1bmN0aW9uKCl7dmFyIGE9Zm47cmV0dXJuIE0oNjAzKSYmSWYoNjUsITEpJiYhYS5afSxmbj1uZXcgZnVuY3Rpb24oYSl7dGhpcy5SPWEoKTt2YXIgYj1KZigyNyk7dGhpcy5OPWVufHx0aGlzLlI8Yjt2YXIgYz1KZig0Mik7dGhpcy5aPWVufHx0aGlzLlI+PTEtYzt2YXIgZD1NKDYwMykmJklmKDY1LCExKTt0aGlzLks9dGhpcy5afHxkO3ZhciBlPUpmKDI3KSxmPUpmKDYzKTt0aGlzLkg9ZW58fGY9PT0xfHx0aGlzLlI+PWUmJnRoaXMuUjxlK2Z9KGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9KTt2YXIgaG49ZnVuY3Rpb24oKXt0aGlzLkg9e319O2huLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbihhLGIsYyl7aWYoZm4uSyl7dmFyIGQ9am4oYixjKTtpZihkKXt2YXIgZSxmPWI7Zj09PTQmJihmPTUpO3ZhciBnPXRoaXMuSFtmXTtnfHwoZz10aGlzLkhbZl09e30pO2U9Zzt2YXIgaD1lW2RdO2h8fChoPWVbZF09W10pO2gucHVzaChuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGEpKTtjbi5pbmNyZW1lbnQoYS5kZXN0aW5hdGlvbklkLGEuZW5kcG9pbnQpO2EuZW5kcG9pbnQhPT01NiYmYS5lbmRwb2ludCE9PTYxJiZWbSgibWRlIiwhMCl9fX07CnZhciBtbj1mdW5jdGlvbihhLGIpe3ZhciBjPWtuLGQ9am4oYSxiKTtpZihkKXt2YXIgZT1sbihjLGEpO2lmKGUpe3ZhciBmPWVbZF07ZiYmKGVbZF09Zi5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIWcuRW99KSl9fX0sbG49ZnVuY3Rpb24oYSxiKXtiPT09NCYmKGI9NSk7cmV0dXJuIGEuSFtiXX0sam49ZnVuY3Rpb24oYSxiKXt2YXIgYz1iO2lmKGJbMF09PT0iLyIpe3ZhciBkO2M9KChkPUEubG9jYXRpb24pPT1udWxsP3ZvaWQgMDpkLm9yaWdpbikrYn10cnl7dmFyIGU9bmV3IFVSTChjKTtyZXR1cm4gYT09PTI/ZS5vcmlnaW46ZS5vcmlnaW4rZS5wYXRobmFtZX1jYXRjaChmKXt9fSxrbj1uZXcgaG47CmZ1bmN0aW9uIG5uKGEpe3N3aXRjaChhKXtjYXNlICJzY3JpcHQtc3JjIjpyZXR1cm4gNDtjYXNlICJzY3JpcHQtc3JjLWVsZW0iOnJldHVybiA1O2Nhc2UgImZyYW1lLXNyYyI6cmV0dXJuIDI7Y2FzZSAiY29ubmVjdC1zcmMiOnJldHVybiAxO2Nhc2UgImltZy1zcmMiOnJldHVybiAzfX07ZnVuY3Rpb24gb24oYSxiLGMpe3ZhciBkLGU9YS5Hb29nbGViUWhDc087ZXx8KGU9e30sYS5Hb29nbGViUWhDc089ZSk7ZD1lO2lmKGRbYl0pcmV0dXJuITE7ZFtiXT1bXTtkW2JdWzBdPWM7cmV0dXJuITB9O3ZhciBwbixxbjthOntmb3IodmFyIHJuPVsiQ0xPU1VSRV9GTEFHUyJdLHNuPVJhLHRuPTA7dG48cm4ubGVuZ3RoO3RuKyspaWYoc249c25bcm5bdG5dXSxzbj09bnVsbCl7cW49bnVsbDticmVhayBhfXFuPXNufXZhciB1bj1xbiYmcW5bNjEwNDAxMzAxXTtwbj11biE9bnVsbD91bjohMTtmdW5jdGlvbiB2bigpe3ZhciBhPVJhLm5hdmlnYXRvcjtpZihhKXt2YXIgYj1hLnVzZXJBZ2VudDtpZihiKXJldHVybiBifXJldHVybiIifXZhciB3bix4bj1SYS5uYXZpZ2F0b3I7d249eG4/eG4udXNlckFnZW50RGF0YXx8bnVsbDpudWxsO2Z1bmN0aW9uIHluKGEpe2lmKCFwbnx8IXduKXJldHVybiExO2Zvcih2YXIgYj0wO2I8d24uYnJhbmRzLmxlbmd0aDtiKyspe3ZhciBjPXduLmJyYW5kc1tiXS5icmFuZDtpZihjJiZjLmluZGV4T2YoYSkhPS0xKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHpuKGEpe3JldHVybiB2bigpLmluZGV4T2YoYSkhPS0xfTtmdW5jdGlvbiBBbigpe3JldHVybiBwbj8hIXduJiZ3bi5icmFuZHMubGVuZ3RoPjA6ITF9ZnVuY3Rpb24gQm4oKXtyZXR1cm4gQW4oKT8hMTp6bigiT3BlcmEiKX1mdW5jdGlvbiBDbigpe3JldHVybiB6bigiRmlyZWZveCIpfHx6bigiRnhpT1MiKX1mdW5jdGlvbiBEbigpe3JldHVybiBBbigpP3luKCJDaHJvbWl1bSIpOih6bigiQ2hyb21lIil8fHpuKCJDcmlPUyIpKSYmIShBbigpPzA6em4oIkVkZ2UiKSl8fHpuKCJTaWxrIil9O2Z1bmN0aW9uIEVuKCl7cmV0dXJuIHBuPyEhd24mJiEhd24ucGxhdGZvcm06ITF9ZnVuY3Rpb24gRm4oKXtyZXR1cm4gem4oImlQaG9uZSIpJiYhem4oImlQb2QiKSYmIXpuKCJpUGFkIil9ZnVuY3Rpb24gR24oKXtGbigpfHx6bigiaVBhZCIpfHx6bigiaVBvZCIpfTt2YXIgSG49ZnVuY3Rpb24oYSl7SG5bIiAiXShhKTtyZXR1cm4gYX07SG5bIiAiXT1mdW5jdGlvbigpe307Qm4oKTtBbigpfHx6bigiVHJpZGVudCIpfHx6bigiTVNJRSIpO3puKCJFZGdlIik7IXpuKCJHZWNrbyIpfHx2bigpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigid2Via2l0IikhPS0xJiYhem4oIkVkZ2UiKXx8em4oIlRyaWRlbnQiKXx8em4oIk1TSUUiKXx8em4oIkVkZ2UiKTt2bigpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigid2Via2l0IikhPS0xJiYhem4oIkVkZ2UiKSYmem4oIk1vYmlsZSIpO0VuKCl8fHpuKCJNYWNpbnRvc2giKTtFbigpfHx6bigiV2luZG93cyIpOyhFbigpP3duLnBsYXRmb3JtPT09IkxpbnV4Ijp6bigiTGludXgiKSl8fEVuKCl8fHpuKCJDck9TIik7RW4oKXx8em4oIkFuZHJvaWQiKTtGbigpO3puKCJpUGFkIik7em4oImlQb2QiKTtHbigpO3ZuKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJrYWlvcyIpO0NuKCk7Rm4oKXx8em4oImlQb2QiKTt6bigiaVBhZCIpOyF6bigiQW5kcm9pZCIpfHxEbigpfHxDbigpfHxCbigpfHx6bigiU2lsayIpO0RuKCk7IXpuKCJTYWZhcmkiKXx8RG4oKXx8KEFuKCk/MDp6bigiQ29hc3QiKSl8fEJuKCl8fChBbigpPzA6em4oIkVkZ2UiKSl8fChBbigpP3luKCJNaWNyb3NvZnQgRWRnZSIpOnpuKCJFZGcvIikpfHwoQW4oKT95bigiT3BlcmEiKTp6bigiT1BSIikpfHxDbigpfHx6bigiU2lsayIpfHx6bigiQW5kcm9pZCIpfHxHbigpO3ZhciBJbj17fSxKbj1udWxsOwpmdW5jdGlvbiBLbihhKXtmb3IodmFyIGI9W10sYz0wLGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGU9YS5jaGFyQ29kZUF0KGQpO2U+MjU1JiYoYltjKytdPWUmMjU1LGU+Pj04KTtiW2MrK109ZX12YXIgZj00O2Y9PT12b2lkIDAmJihmPTApO2lmKCFKbil7Sm49e307Zm9yKHZhciBnPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSIuc3BsaXQoIiIpLGg9WyIrLz0iLCIrLyIsIi1fPSIsIi1fLiIsIi1fIl0sbD0wO2w8NTtsKyspe3ZhciBuPWcuY29uY2F0KGhbbF0uc3BsaXQoIiIpKTtJbltsXT1uO2Zvcih2YXIgcD0wO3A8bi5sZW5ndGg7cCsrKXt2YXIgcT1uW3BdO0puW3FdPT09dm9pZCAwJiYoSm5bcV09cCl9fX1mb3IodmFyIHI9SW5bZl0sdD1BcnJheShNYXRoLmZsb29yKGIubGVuZ3RoLzMpKSx1PXJbNjRdfHwiIix2PTAseD0wO3Y8Yi5sZW5ndGgtMjt2Kz0zKXt2YXIgeT1iW3ZdLHo9Ylt2KzFdLEM9Ylt2KzJdLApEPXJbeT4+Ml0sST1yWyh5JjMpPDw0fHo+PjRdLEc9clsoeiYxNSk8PDJ8Qz4+Nl0sTj1yW0MmNjNdO3RbeCsrXT0iIitEK0krRytOfXZhciBTPTAsVz11O3N3aXRjaChiLmxlbmd0aC12KXtjYXNlIDI6Uz1iW3YrMV0sVz1yWyhTJjE1KTw8Ml18fHU7Y2FzZSAxOnZhciBlYT1iW3ZdO3RbeF09IiIrcltlYT4+Ml0rclsoZWEmMyk8PDR8Uz4+NF0rVyt1fXJldHVybiB0LmpvaW4oIiIpfTt2YXIgTG49ZnVuY3Rpb24oYSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChhLnJlcGxhY2UoL1wrL2csIiAiKSl9O3ZhciBNbj1SZWdFeHAoIl4oPzooW146Lz8jLl0rKTopPyg/Oi8vKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JCIpO2Z1bmN0aW9uIE5uKGEsYixjLGQpe2Zvcih2YXIgZT1iLGY9Yy5sZW5ndGg7KGU9YS5pbmRleE9mKGMsZSkpPj0wJiZlPGQ7KXt2YXIgZz1hLmNoYXJDb2RlQXQoZS0xKTtpZihnPT0zOHx8Zz09NjMpe3ZhciBoPWEuY2hhckNvZGVBdChlK2YpO2lmKCFofHxoPT02MXx8aD09Mzh8fGg9PTM1KXJldHVybiBlfWUrPWYrMX1yZXR1cm4tMX12YXIgT249LyN8JC87CmZ1bmN0aW9uIFBuKGEsYil7dmFyIGM9YS5zZWFyY2goT24pLGQ9Tm4oYSwwLGIsYyk7aWYoZDwwKXJldHVybiBudWxsO3ZhciBlPWEuaW5kZXhPZigiJiIsZCk7aWYoZTwwfHxlPmMpZT1jO2QrPWIubGVuZ3RoKzE7cmV0dXJuIExuKGEuc2xpY2UoZCxlIT09LTE/ZTowKSl9dmFyIFFuPS9bPyZdKCR8IykvOwpmdW5jdGlvbiBSbihhLGIsYyl7Zm9yKHZhciBkLGU9YS5zZWFyY2goT24pLGY9MCxnLGg9W107KGc9Tm4oYSxmLGIsZSkpPj0wOyloLnB1c2goYS5zdWJzdHJpbmcoZixnKSksZj1NYXRoLm1pbihhLmluZGV4T2YoIiYiLGcpKzF8fGUsZSk7aC5wdXNoKGEuc2xpY2UoZikpO2Q9aC5qb2luKCIiKS5yZXBsYWNlKFFuLCIkMSIpO3ZhciBsLG49YyE9bnVsbD8iPSIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhjKSk6IiI7dmFyIHA9YituO2lmKHApe3ZhciBxLHI9ZC5pbmRleE9mKCIjIik7cjwwJiYocj1kLmxlbmd0aCk7dmFyIHQ9ZC5pbmRleE9mKCI/IiksdTt0PDB8fHQ+cj8odD1yLHU9IiIpOnU9ZC5zdWJzdHJpbmcodCsxLHIpO3E9W2Quc2xpY2UoMCx0KSx1LGQuc2xpY2UocildO3ZhciB2PXFbMV07cVsxXT1wP3Y/disiJiIrcDpwOnY7bD1xWzBdKyhxWzFdPyI/IitxWzFdOiIiKStxWzJdfWVsc2UgbD1kO3JldHVybiBsfTtmdW5jdGlvbiBTbihhLGIsYyxkLGUsZixnLGgpe3ZhciBsPVBuKGMsImZtdCIpO2lmKGQpe3ZhciBuPVBuKGMsInJhbmRvbSIpLHA9UG4oYywibGFiZWwiKXx8IiI7aWYoIW4pcmV0dXJuO3ZhciBxPUtuKExuKHApKyI6IitMbihuKSk7aWYoIW9uKGEscSxkKSlyZXR1cm59bCYmTnVtYmVyKGwpIT09ND8oYz1SbihjLCJyZm10IixsKSxjPVJuKGMsImZtdCIsNCkpOmx8fChjPVJuKGMsImZtdCIsNCkpO1VjKGMsZnVuY3Rpb24oKXtnPT1udWxsfHxUbihnKTtoPT1udWxsfHxVbihoLGMpO2EuZ29vZ2xlX25vRnVydGhlclJlZGlyZWN0cyYmZCYmKGEuZ29vZ2xlX25vRnVydGhlclJlZGlyZWN0cz1udWxsLGQoKSl9LGZ1bmN0aW9uKCl7Zz09bnVsbHx8VG4oZyk7aD09bnVsbHx8VW4oaCxjKTtlPT1udWxsfHxlKCl9LGYsYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF0ucGFyZW50RWxlbWVudHx8dm9pZCAwKTtyZXR1cm4gY307ZnVuY3Rpb24gVm4oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2tuLnJlZ2lzdGVyKGEsMSxiWzBdKTtpZC5hcHBseShudWxsLHcoYikpfWZ1bmN0aW9uIFduKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtrbi5yZWdpc3RlcihhLDEsYlswXSk7cmV0dXJuIGpkLmFwcGx5KG51bGwsdyhiKSl9ZnVuY3Rpb24gWG4oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2tuLnJlZ2lzdGVyKGEsMyxiWzBdKTtaYy5hcHBseShudWxsLHcoYikpfWZ1bmN0aW9uIFluKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtrbi5yZWdpc3RlcihhLDEsYlswXSk7cmV0dXJuIG1kLmFwcGx5KG51bGwsdyhiKSl9ZnVuY3Rpb24gWm4oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2tuLnJlZ2lzdGVyKGEsNSxiWzBdKTtVYy5hcHBseShudWxsLHcoYikpfQpmdW5jdGlvbiAkbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7YlswXSYma24ucmVnaXN0ZXIoYSwyLGJbMF0pO1hjLmFwcGx5KG51bGwsdyhiKSl9ZnVuY3Rpb24gYW8oYSl7dmFyIGI9U24uYXBwbHkobnVsbCx3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpO2ImJmtuLnJlZ2lzdGVyKGEsNCxiKTtyZXR1cm4gYn07dmFyIGJvPXtNYTp7UmU6MCxVZToxLExoOjJ9fTtiby5NYVtiby5NYS5SZV09IkZVTExfVFJBTlNNSVNTSU9OIjtiby5NYVtiby5NYS5VZV09IkxJTUlURURfVFJBTlNNSVNTSU9OIjtiby5NYVtiby5NYS5MaF09Ik5PX1RSQU5TTUlTU0lPTiI7dmFyIGNvPXtpYTp7Z2Q6MCxjYjoxLHhkOjIsWmI6M319O2NvLmlhW2NvLmlhLmdkXT0iTk9fUVVFVUUiO2NvLmlhW2NvLmlhLmNiXT0iQURTIjtjby5pYVtjby5pYS54ZF09IkFOQUxZVElDUyI7Y28uaWFbY28uaWEuWmJdPSJNT05JVE9SSU5HIjt2YXIgZW89ZnVuY3Rpb24oYSxiKXt0aGlzLkg9YTt0aGlzLmNvbnNlbnRUeXBlcz1ifTtlby5wcm90b3R5cGUuaXNDb25zZW50R3JhbnRlZD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLkgpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zZW50VHlwZXMuZXZlcnkoZnVuY3Rpb24oYSl7cmV0dXJuIEJsKGEpfSk7Y2FzZSAxOnJldHVybiB0aGlzLmNvbnNlbnRUeXBlcy5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBCbChhKX0pO2RlZmF1bHQ6eWModGhpcy5ILCJjb25zZW50c1JlcXVpcmVkIGhhZCBhbiB1bmtub3duIHR5cGUiKX19Owp2YXIgZm89bmV3IGZ1bmN0aW9uKCl7dmFyIGE9e307dGhpcy5IPShhW2NvLmlhLmdkXT1iby5NYS5SZSxhW2NvLmlhLmNiXT1iby5NYS5SZSxhW2NvLmlhLnhkXT1iby5NYS5SZSxhW2NvLmlhLlpiXT1iby5NYS5SZSxhKTt2YXIgYj17fTt0aGlzLks9KGJbY28uaWEuZ2RdPW5ldyBlbygwLFtdKSxiW2NvLmlhLmNiXT1uZXcgZW8oMCxbImFkX3N0b3JhZ2UiXSksYltjby5pYS54ZF09bmV3IGVvKDAsWyJhbmFseXRpY3Nfc3RvcmFnZSJdKSxiW2NvLmlhLlpiXT1uZXcgZW8oMSxbImFkX3N0b3JhZ2UiLCJhbmFseXRpY3Nfc3RvcmFnZSJdKSxiKX07dmFyIGhvPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy50eXBlPWE7dGhpcy5IPVtdO0ZsKGZvLktbYV0uY29uc2VudFR5cGVzLGZ1bmN0aW9uKCl7Z28oYil8fGIuZmx1c2goKX0pfTtoby5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIGE9bSh0aGlzLkgpLGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKXt2YXIgYz1iLnZhbHVlO2MoKX10aGlzLkg9W119O3ZhciBnbz1mdW5jdGlvbihhKXtyZXR1cm4gZm8uSFthLnR5cGVdPT09Ym8uTWEuTGgmJiFmby5LW2EudHlwZV0uaXNDb25zZW50R3JhbnRlZCgpfSxpbz1mdW5jdGlvbihhLGIpe2dvKGEpP2EuSC5wdXNoKGIpOmIoKX0sam89ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IE1hcH0sbG89ZnVuY3Rpb24oYSl7dmFyIGI9a287Yi5ILmhhcyhhKXx8Yi5ILnNldChhLG5ldyBobyhhKSk7cmV0dXJuIGIuSC5nZXQoYSl9O2pvLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuSC5jbGVhcigpfTsKdmFyIGtvPW5ldyBqbzt2YXIgbW89WyJmaW4iLCJmcyIsIm1jYyIsIm5jYyJdLG5vPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD8hMTphO3ZhciBiPVJtKCksYz1RbS5LLGQ9Yi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGNbZV0hPT12b2lkIDAmJihhfHwhbW8uaW5jbHVkZXMoZSkpfSk7VG0oZCk7cmV0dXJuIGQubWFwKGZ1bmN0aW9uKGUpe3ZhciBmPWNbZV07dHlwZW9mIGY9PT0iZnVuY3Rpb24iJiYoZj1mKCkpO3JldHVybiBmPyImIitlKyI9IitmOiIifSkuam9pbigiIikrIiZ6PTAifSxvbz1mdW5jdGlvbihhKXt2YXIgYj0iaHR0cHM6Ly8iK0UoMjEpLGM9Ii90ZD9pZD0iK0UoNSk7cmV0dXJuIiIrZmsoYikrYythfSxwbz1mdW5jdGlvbihhLGIsYyl7Yj1iPT09dm9pZCAwPyExOmI7Yz1jPT09dm9pZCAwPyExOmM7aWYoJGsoMjYpJiZmbi5LJiZFKDUpJiYoY3x8IWduKCkpKXt2YXIgZD1sbyhjby5pYS5aYik7aWYoZ28oZCkpYS5IfHwoYS5IPSEwLGlvKGQsZnVuY3Rpb24oKXtyZXR1cm4gcG8oYSl9KSk7CmVsc2V7YiYmVW0oImZpbiIsIjEiKTt2YXIgZT1ubyhiKSxmPW9vKGUpLGc9e2Rlc3RpbmF0aW9uSWQ6RSg1KSxlbmRwb2ludDo2MX07Yj9ZbihnLGYsdm9pZCAwLHtRZzohMH0sdm9pZCAwLGZ1bmN0aW9uKCl7WmMoZisiJmltZz0xIil9KTpYbihnLGYpO2EuSD0hMTtxbyhlKX19fSxxbz1mdW5jdGlvbihhKXtpZihLYyYmKFNiKEtjLCJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS8iKXx8SWYoNDcpKSYmIShhLmluZGV4T2YoIiZjc3A9Iik8MCYmYS5pbmRleE9mKCImbWRlPSIpPDApKXt2YXIgYjthOnt0cnl7aWYoS2Mpe2I9bmV3IFVSTChLYyk7YnJlYWsgYX19Y2F0Y2goYyl7fWI9dm9pZCAwfWImJlVjKCIiK0tjKyhLYy5pbmRleE9mKCI/Iik+PTA/IiYiOiI/IikrImlzX3RkPTEiK2EpfX0scm89ZnVuY3Rpb24oYSl7Um0oKS5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiFQbVtiXX0pJiZwbyhhLCEwKX0sc289bmV3IGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9ITE7CiRjKEEsInBhZ2VoaWRlIixmdW5jdGlvbigpe3JvKGEpfSl9O2Z1bmN0aW9uIHRvKGEsYil7cG8oc28sYT09PXZvaWQgMD8hMTphLGI9PT12b2lkIDA/ITE6Yil9O3ZhciB1bz1bImFkX3N0b3JhZ2UiLCJhbmFseXRpY3Nfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSIsImFkX3BlcnNvbmFsaXphdGlvbiJdLHZvPVtGLkQuZGQsRi5ELnljLEYuRC5RZixGLkQuS2IsRi5ELnhjLEYuRC5mYixGLkQuRGIsRi5ELm5iLEYuRC5MYixGLkQudmNdLHlvPWZ1bmN0aW9uKCl7dmFyIGE9d287IWEuUiYmYS5IJiYodW8uc29tZShmdW5jdGlvbihiKXtyZXR1cm4gQWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHNbYl0hPT0xfSl8fHhvKCJtYmMiKSk7YS5SPSEwfSx4bz1mdW5jdGlvbihhKXtmbi5LJiYoVW0oYSwiMSIpLHRvKCkpfSx6bz1mdW5jdGlvbihhLGIpe3ZhciBjPXdvO2lmKCFjLk5bYl0mJihjLk5bYl09ITAsYy5LW2JdKSlmb3IodmFyIGQ9bSh2byksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpaWYoTyhhLGUudmFsdWUpKXt4bygiZXJjIik7YnJlYWt9fSx3bz1uZXcgZnVuY3Rpb24oKXt0aGlzLlI9dGhpcy5IPSExO3RoaXMuTj17fTt0aGlzLks9e319O3ZhciBBbz17fSxCbz1PYmplY3QuZnJlZXplKChBb1tGLkQuUmNdPTEsQW9bRi5ELmhoXT0xLEFvW0YuRC5zaV09MSxBb1tGLkQuU2NdPTEsQW9bRi5ELkhhXT0xLEFvW0YuRC5MYl09MSxBb1tGLkQuQ2JdPTEsQW9bRi5ELlRiXT0xLEFvW0YuRC5JZF09MSxBb1tGLkQudmNdPTEsQW9bRi5ELm5iXT0xLEFvW0YuRC5KZF09MSxBb1tGLkQuSGVdPTEsQW9bRi5ELk9hXT0xLEFvW0YuRC5RcF09MSxBb1tGLkQuUGZdPTEsQW9bRi5ELkZpXT0xLEFvW0YuRC5waF09MSxBb1tGLkQuV2NdPTEsQW9bRi5ELlFmXT0xLEFvW0YuRC5hcV09MSxBb1tGLkQuVGFdPTEsQW9bRi5ELlVmXT0xLEFvW0YuRC5mcV09MSxBb1tGLkQuT2RdPTEsQW9bRi5ELlJsXT0xLEFvW0YuRC5ZY109MSxBb1tGLkQuWmNdPTEsQW9bRi5ELkRiXT0xLEFvW0YuRC5hbV09MSxBb1tGLkQuV2JdPTEsQW9bRi5ELlRkXT0xLEFvW0YuRC5YYl09MSxBb1tGLkQuT2ldPTEsQW9bRi5ELmRkXT0xLEFvW0YuRC55aF09MSxBb1tGLkQuUGldPQoxLEFvW0YuRC5VZF09MSxBb1tGLkQueWNdPTEsQW9bRi5ELlZkXT0xLEFvW0YuRC5sbV09MSxBb1tGLkQuV2RdPTEsQW9bRi5ELmVkXT0xLEFvW0YuRC5val09MSxBbykpO09iamVjdC5mcmVlemUoW0YuRC56YSxGLkQuVWEsRi5ELk1iLEYuRC50YixGLkQuTmksRi5ELmZiLEYuRC5HaSxGLkQuTXBdKTsKdmFyIENvPXt9LERvPU9iamVjdC5mcmVlemUoKENvW0YuRC5xcF09MSxDb1tGLkQucnBdPTEsQ29bRi5ELnRwXT0xLENvW0YuRC51cF09MSxDb1tGLkQudnBdPTEsQ29bRi5ELnpwXT0xLENvW0YuRC5BcF09MSxDb1tGLkQuQnBdPTEsQ29bRi5ELkRwXT0xLENvW0YuRC55Zl09MSxDbykpLEVvPXt9LEZvPU9iamVjdC5mcmVlemUoKEVvW0YuRC52bF09MSxFb1tGLkQud2xdPTEsRW9bRi5ELnhlXT0xLEVvW0YuRC55ZV09MSxFb1tGLkQueGxdPTEsRW9bRi5ELkFkXT0xLEVvW0YuRC56ZV09MSxFb1tGLkQub2NdPTEsRW9bRi5ELlFjXT0xLEVvW0YuRC5xY109MSxFb1tGLkQuSWJdPTEsRW9bRi5ELkFlXT0xLEVvW0YuRC5yY109MSxFb1tGLkQueWxdPTEsRW8pKSxHbz1PYmplY3QuZnJlZXplKFtGLkQuUmMsRi5ELlNjLEYuRC5KZCxGLkQuUWYsRi5ELldmLEYuRC5UZCxGLkQuT2ksRi5ELlZkXSksSG89T2JqZWN0LmZyZWV6ZShbXS5jb25jYXQodyhHbykpKSxJbz1PYmplY3QuZnJlZXplKFtGLkQuQ2IsCkYuRC5waCxGLkQueWgsRi5ELlBpLEYuRC5uaF0pLEpvPU9iamVjdC5mcmVlemUoW10uY29uY2F0KHcoSW8pKSksS289e30sTG89KEtvW0YuRC5rYV09IjEiLEtvW0YuRC5yYV09IjIiLEtvW0YuRC5tYV09IjMiLEtvW0YuRC5YYV09IjQiLEtvKSxNbz17fSxObz1PYmplY3QuZnJlZXplKChNby5zZWFyY2g9InMiLE1vLnlvdXR1YmU9InkiLE1vLnBsYXlzdG9yZT0icCIsTW8uc2hvcHBpbmc9ImgiLE1vLmFkcz0iYSIsTW8ubWFwcz0ibSIsTW8pKTtmdW5jdGlvbiBPbyhhKXtyZXR1cm4gdHlwZW9mIGEhPT0ib2JqZWN0Inx8YT09PW51bGw/e306YX1mdW5jdGlvbiBQbyhhKXtyZXR1cm4gYT09PXZvaWQgMHx8YT09PW51bGw/IiI6dHlwZW9mIGE9PT0ib2JqZWN0Ij9hLnRvU3RyaW5nKCk6U3RyaW5nKGEpfWZ1bmN0aW9uIFFvKGEpe2lmKGEhPT12b2lkIDAmJmEhPT1udWxsKXJldHVybiBQbyhhKX07dmFyIFJvPVtGLkQua2EsRi5ELnJhLEYuRC5tYSxGLkQuWGFdO2Z1bmN0aW9uIFNvKGEpe2Zvcih2YXIgYj1tKGFbRi5ELm5jXXx8WyIiXSksYz1iLm5leHQoKSxkPXt9OyFjLmRvbmU7ZD17cmVnaW9uOnZvaWQgMH0sYz1iLm5leHQoKSlkLnJlZ2lvbj1jLnZhbHVlLEdiKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGYsZyl7aWYoZiE9PUYuRC5uYyl7dmFyIGg9UG8oZyksbD1lLnJlZ2lvbixuPXltKCkscD16bSgpO3lsPSEwO3hsJiZzYigiVEFHR0lORyIsMjApO3RsKCkuZGVjbGFyZShmLGgsbCxuLHApfX19KGQpKX0KZnVuY3Rpb24gVG8oYSl7eW8oKTt2YXIgYj1hbCgxNyxmdW5jdGlvbigpe3JldHVybiExfSksYz1hbCgxNixmdW5jdGlvbigpe3JldHVybiExfSk7IWImJmMmJnhvKCJjcmMiKTtaaygxNywhMCk7dmFyIGQ9YVtGLkQuWWddO2QmJlAoNDEpO3ZhciBlPWFbRi5ELm5jXTtlP1AoNDApOmU9WyIiXTtmb3IodmFyIGY9bShlKSxnPWYubmV4dCgpLGg9e307IWcuZG9uZTtoPXtCbzp2b2lkIDB9LGc9Zi5uZXh0KCkpaC5Cbz1nLnZhbHVlLEdiKGEsZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKG4scCl7aWYobiE9PUYuRC5uYyYmbiE9PUYuRC5ZZyl7dmFyIHE9UW8ocCkscj1sLkJvLHQ9TnVtYmVyKGQpLHU9eW0oKSx2PXptKCk7dD10PT09dm9pZCAwPzA6dDt4bD0hMDt5bCYmc2IoIlRBR0dJTkciLDIwKTt0bCgpLmRlZmF1bHQobixxLHIsdSx2LHQsQWwpfX19KGgpKX0KZnVuY3Rpb24gVW8oYSl7QWwudXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzPSEwO3ZhciBiPWFbRi5ELm5jXTtpZihiKXt2YXIgYz1BcnJheS5pc0FycmF5KGIpP2I6W2JdO2lmKCFjLmluY2x1ZGVzKHptKCkpJiYhYy5pbmNsdWRlcyh5bSgpKSlyZXR1cm59R2IoYSxmdW5jdGlvbihkLGUpe3N3aXRjaChkKXtjYXNlICJhZF9zdG9yYWdlIjpjYXNlICJhbmFseXRpY3Nfc3RvcmFnZSI6Y2FzZSAiYWRfdXNlcl9kYXRhIjpjYXNlICJhZF9wZXJzb25hbGl6YXRpb24iOmJyZWFrO2RlZmF1bHQ6cmV0dXJufUFsLnVzZWRDb250YWluZXJTY29wZWREZWZhdWx0cz0hMDtBbC5jb250YWluZXJTY29wZWREZWZhdWx0c1tkXT1lPT09ImdyYW50ZWQiPzM6Mn0pfQpmdW5jdGlvbiBWbyhhLGIpe3lvKCk7WmsoMTYsITApO0diKGEsZnVuY3Rpb24oYyxkKXt2YXIgZT1QbyhkKTt4bD0hMDt5bCYmc2IoIlRBR0dJTkciLDIwKTt0bCgpLnVwZGF0ZShjLGUsQWwpfSk7R2woYi5ldmVudElkLGIucHJpb3JpdHlJZCl9ZnVuY3Rpb24gV28oYSl7YS5oYXNPd25Qcm9wZXJ0eSgiYWxsIikmJihBbC5zZWxlY3RlZEFsbENvcmVQbGF0Zm9ybVNlcnZpY2VzPSEwLEdiKE5vLGZ1bmN0aW9uKGIpe0FsLmNvcmVQbGF0Zm9ybVNlcnZpY2VzW2JdPWEuYWxsPT09ImdyYW50ZWQiO0FsLnVzZWRDb3JlUGxhdGZvcm1TZXJ2aWNlcz0hMH0pKTtHYihhLGZ1bmN0aW9uKGIsYyl7YiE9PSJhbGwiJiYoQWwuY29yZVBsYXRmb3JtU2VydmljZXNbYl09Yz09PSJncmFudGVkIixBbC51c2VkQ29yZVBsYXRmb3JtU2VydmljZXM9ITApfSl9CmZ1bmN0aW9uIFhvKGEpe0FycmF5LmlzQXJyYXkoYSl8fChhPVthXSk7cmV0dXJuIGEuZXZlcnkoZnVuY3Rpb24oYil7cmV0dXJuIEJsKGIpfSl9ZnVuY3Rpb24gWW8oKXt2YXIgYT1abztBcnJheS5pc0FycmF5KGEpfHwoYT1bYV0pO3JldHVybiBhLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIEJsKGIpfSl9ZnVuY3Rpb24gJG8oYSxiKXtGbChhLGIpfWZ1bmN0aW9uIGFwKGEsYil7SWwoYSxiKX1mdW5jdGlvbiBicChhLGIpe0hsKGEsYil9ZnVuY3Rpb24gY3AoKXt2YXIgYT1bRi5ELmthLEYuRC5YYSxGLkQubWFdO3RsKCkud2FpdEZvclVwZGF0ZShhLDUwMCxBbCl9ZnVuY3Rpb24gZHAoYSl7Zm9yKHZhciBiPW0oYSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPWMudmFsdWU7dGwoKS5jbGVhclRpbWVvdXQoZCx2b2lkIDAsQWwpfUdsKCl9CmZ1bmN0aW9uIGVwKGEpe2Zvcih2YXIgYj17fSxjPW0oYS5zcGxpdCgifCIpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSliW2QudmFsdWVdPSEwO3JldHVybiBifTt2YXIgZnA9T2JqZWN0LmZyZWV6ZShbRi5ELmthLEYuRC5tYV0pOwp2YXIgaHA9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9bShPYmplY3Qua2V5cyhhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7YltncFtlXXx8ZV09YVtlXX1yZXR1cm4gYn0saXA9ZnVuY3Rpb24oYSl7cmV0dXJuISFRKGEsSC5KLnZkKSYmUihhLEYuRC5QZCk9PT0iMSImJlIoYSxGLkQuSGQpIT09IjEiJiZYbyhmcCl9LGpwPWZ1bmN0aW9uKGEsYil7aWYoIWlwKGEpKXJldHVybiExO3ZhciBjPVFjKCl8fE9jKCk/NTg6NTcsZD1ObShjLGhwKGIpKTtUbChkLGEsYyk7WW4oe2Rlc3RpbmF0aW9uSWQ6YS50YXJnZXQuZGVzdGluYXRpb25JZCxlbmRwb2ludDpjLGV2ZW50SWQ6YS5NLmV2ZW50SWQscHJpb3JpdHlJZDphLk0ucHJpb3JpdHlJZH0sZCsiJmZtdD04Iix2b2lkIDAse1FnOiEwLG1ldGhvZDoiR0VUIn0sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7WmMoZCsiJmZtdD0zIil9KTtyZXR1cm4hMH0sa3A9e30sZ3A9KGtwLmRsPSJ1cmwiLGtwLmRyPQoicmVmIixrcC51aWQ9InVzZXJJZCIsa3ApO3ZhciBscD1mdW5jdGlvbihhLGIpe3ZhciBjPXt9LGQ9ZnVuY3Rpb24oZSl7YltlXSE9bnVsbCYmYltlXSE9PSIiJiYoY1tlXT1iW2VdKX07TSg0NzQpJiZkKCJfZ3NpZCIpO1IoYSxGLkQuSGQpIT09IjEiJiYoZCgiZ2NsaWQiKSxkKCJnY2xzcmMiKSxkKCJhdWlkIiksZCgiZGNsaWQiKSk7aWYoT2JqZWN0LmtleXMoYykubGVuZ3RoKXJldHVybiBkKCJndG0iKSxjfTsKdmFyIG1wPXt9LG5wPShtcFtGLkQuc2FdPSJnY3UiLG1wW0YuRC5TYl09ImdjbGdiIixtcFtGLkQubGJdPSJnY2xhdyIsbXBbRi5ELnpmXT0iZ2FkX3NvdXJjZSIsbXBbRi5ELkFmXT0iZ2FkX3NvdXJjZV9zcmMiLG1wW0YuRC5EZF09ImdjbGlkIixtcFtGLkQuQWxdPSJnY2xzcmMiLG1wW0YuRC5CZl09ImdicmFpZCIsbXBbRi5ELkVlXT0id2JyYWlkIixtcFtGLkQuRWRdPSJhdWlkIixtcFtGLkQuQmxdPSJhZSIsbXBbRi5ELkhhXT1udWxsLG1wW0YuRC5EbF09InJuZCIsbXBbRi5ELkhkXT0ibmNsIixtcFtGLkQuTmZdPSJnY2xkYyIsbXBbRi5ELktkXT0iZGNsaWQiLG1wW0YuRC5WY109ImVkaWQiLG1wW0YuRC5VYl09ImVuIixtcFtGLkQuS2VdPSJnZHByIixtcFtGLkQuWGNdPSJnZGlkIixtcFtGLkQuVGFdPW51bGwsbXBbRi5ELkxlXT0iX25nIixtcFtGLkQudGhdPSJncHBfc2lkIixtcFtGLkQudWhdPSJncHAiLG1wW0YuRC5WZl09Il90dSIsbXBbRi5ELlFsXT0iZ3RtX3VwIixtcFtGLkQuTWVdPQoiZnJtIixtcFtGLkQuUGRdPSJscHMiLG1wW0YuRC5MaV09ImRpZCIsbXBbRi5ELlVsXT0ibmF2dCIsbXBbRi5ELnphXT0iZGwiLG1wW0YuRC5VYV09ImRyIixtcFtGLkQuTWJdPSJkdCIsbXBbRi5ELmJtXT0ic2Nyc3JjIixtcFtGLkQuWmZdPSJnYV91aWQiLG1wW0YuRC5PZV09ImdkcHJfY29uc2VudCIsbXBbRi5ELlFpXT0idGVzdG9ubHkiLG1wW0YuRC5ycV09InVfdHoiLG1wW0YuRC5QZV09InRvcCIsbXBbRi5ELlFlXT0idGlkIixtcFtGLkQuZmJdPSJ1aWQiLG1wW0YuRC5rZ109InVzX3ByaXZhY3kiLG1wW0YuRC5lZF09bnVsbCxtcFtGLkQuZGVdPSJucGEiLG1wKTtmdW5jdGlvbiBvcChhLGIpe2lmKGIhPW51bGwmJmIhPT0iIil7dmFyIGM9Yj09PSEwPyIxIjpiPT09ITE/IjAiOmVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYikpO2lmKFNiKGEsIl8mIikpcmV0dXJue2tleTphLnN1YnN0cmluZygyKSx2YWx1ZTpjfTt2YXIgZD1ucFthXTtpZihkIT09bnVsbClyZXR1cm4gZD97a2V5OmQsdmFsdWU6Y306e2tleTpBYihiKT8iZXBuLiIrYToiZXAuIithLHZhbHVlOmN9fX07ZnVuY3Rpb24gcHAoYSl7YT1hPT09dm9pZCAwP1tdOmE7cmV0dXJuIHhqKGEpLmpvaW4oIn4iKX07ZnVuY3Rpb24gcXAoKXt2YXIgYT1bXSxiPU51bWJlcignJyl8fDAsYz1OdW1iZXIoJycpfHwwO2N8fChjPWIvMTAwKTt2YXIgZD1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiB0fSgpO2EucHVzaCh7dWs6MjI4LHN0dWR5SWQ6MjI4LGV4cGVyaW1lbnRJZDoxMDUxNzcxNTQsY29udHJvbElkOjEwNTE3NzE1NSxjb250cm9sSWQyOjEwNTI1NTI0NSxwcm9iYWJpbGl0eTpjLGFjdGl2ZTpkLFplOjB9KTt2YXIgZT1OdW1iZXIoJycpfHwKMCxmPU51bWJlcignJyl8fDA7Znx8KGY9ZS8xMDApO3ZhciBnPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIHR9KCk7YS5wdXNoKHt1azoyMzUsc3R1ZHlJZDoyMzUsZXhwZXJpbWVudElkOjEwNTM1NzE1MCxjb250cm9sSWQ6MTA1MzU3MTUxLGNvbnRyb2xJZDI6MCxwcm9iYWJpbGl0eTpmLGFjdGl2ZTpnLFplOjF9KTt2YXIgaD1OdW1iZXIoJycpfHwwLGw9TnVtYmVyKCcnKXx8CjA7bHx8KGw9aC8xMDApO3ZhciBuPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIHR9KCk7YS5wdXNoKHt1azoyNjYsc3R1ZHlJZDoyNjYsZXhwZXJpbWVudElkOjExNTcxODUyOSxjb250cm9sSWQ6MTE1NzE4NTMwLGNvbnRyb2xJZDI6MTE1NzE4NTMxLHByb2JhYmlsaXR5OmwsYWN0aXZlOm4sWmU6MH0pO3ZhciBwPU51bWJlcignJyl8fDAscT1OdW1iZXIoJycpfHwKMDtxfHwocT1wLzEwMCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gdH0oKTthLnB1c2goe3VrOjI2NyxzdHVkeUlkOjI2NyxleHBlcmltZW50SWQ6MTE1NzE4NTI2LGNvbnRyb2xJZDoxMTU3MTg1MjcsY29udHJvbElkMjoxMTU3MTg1MjgscHJvYmFiaWxpdHk6cSxhY3RpdmU6cixaZTowfSk7cmV0dXJuIGF9O3ZhciBycD1mdW5jdGlvbigpe3RoaXMuSz17fTt0aGlzLkg9e307dGhpcy5OPXt9O3RoaXMuUj1uZXcgU2V0fSx4cD1mdW5jdGlvbihhLGIpe3ZhciBjPWIsZD1iPWEuTltjLnN0dWR5SWRdP25hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYyx7YWN0aXZlOiEwfSk6YyxlPUZpO2QuY29udHJvbElkMiYmZC5wcm9iYWJpbGl0eTw9LjI1fHwoZD1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGQse2NvbnRyb2xJZDI6MH0pKTtlLnN0dWRpZXNbZC5zdHVkeUlkXT1kO2IuZm9jdXNlZCYmKGEuS1tiLnN0dWR5SWRdPSEwKTtpZihiLlplPT09MSl7dmFyIGY9Yi5zdHVkeUlkO3NwKGEsdHAoKSxmKTt1cChhLGYpP3RqKHVqLGYpOnZwKGEsZik/dWouS1tmXT0hMDp3cChhLGYpJiYodWouSFtmXT0hMCl9ZWxzZSBpZihiLlplPT09MCl7dmFyIGc9Yi5zdHVkeUlkO3NwKGEsYS5ILGcpO3VwKGEsZyk/dGoodWosZyk6dnAoYSxnKT91ai5LW2ddPSEwOndwKGEsZykmJgoodWouSFtnXT0hMCl9fSxzcD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1GaTtpZihlLnN0dWRpZXNbY10pe3ZhciBmPWUuc3R1ZGllc1tjXSxnPWYuZXhwZXJpbWVudElkLGg9Zi5wcm9iYWJpbGl0eTtpZighKGIuc3R1ZGllc3x8e30pW2NdKXt2YXIgbD1iLnN0dWRpZXN8fHt9O2xbY109ITA7Yi5zdHVkaWVzPWw7aWYoIWUuc3R1ZGllc1tjXS5hY3RpdmUpaWYoZS5zdHVkaWVzW2NdLnByb2JhYmlsaXR5Pi41KUlpKGIsZyxjKTtlbHNlIGlmKCEoaDw9MHx8aD4xKSl7dmFyIG49dm9pZCAwO2lmKGQpe3ZhciBwPUNpKGQrIn4iK2MpO2lmKHA9PT0iZTIiKW49LTE7ZWxzZXtmb3IodmFyIHE9bmV3IFVpbnQ4QXJyYXkocCkscj1CaWdJbnQoMCksdD1tKHEpLHU9dC5uZXh0KCk7IXUuZG9uZTt1PXQubmV4dCgpKXI9cjw8QmlnSW50KDgpfEJpZ0ludCh1LnZhbHVlKTtuPU51bWJlcihyJUJpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpfX1HaS5zayhiLGMsbil9fX1pZighYS5LW2NdKXt2YXIgdj0KTmkoYixjKTt2JiZ3ai5ILksuYWRkKHYpfX0sdHA9ZnVuY3Rpb24oKXtyZXR1cm4gb20oam0uYmEuVHEse30pfSx1cD1mdW5jdGlvbihhLGIpe3ZhciBjPXRwKCk7cmV0dXJuIEtpKGMsYil8fEtpKGEuSCxiKX0sdnA9ZnVuY3Rpb24oYSxiKXt2YXIgYz10cCgpO3JldHVybiBMaShjLGIpfHxMaShhLkgsYil9LHdwPWZ1bmN0aW9uKGEsYil7dmFyIGM9dHAoKTtyZXR1cm4gTWkoYyxiKXx8TWkoYS5ILGIpfSx5cDsKZnVuY3Rpb24genAoKXtpZigheXApe3ZhciBhPXlwPW5ldyBycCxiLGMsZD0oKGI9QSk9PW51bGw/dm9pZCAwOihjPWIubG9jYXRpb24pPT1udWxsP3ZvaWQgMDpjLmhhc2gpfHwiIjtpZihkWzBdPT09IiMiJiZkWzFdPT09Il8iJiZkWzJdPT09InQiJiZkWzNdPT09ImUiJiZkWzRdPT09Ij0iKXt2YXIgZT1kLnN1YnN0cmluZyg1KTtpZihlKWZvcih2YXIgZj1tKGUuc3BsaXQoIn4iKSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPU51bWJlcihnLnZhbHVlKTtoJiYoYS5OW2hdPSEwLHRqKHVqLGgpKX19Zm9yKHZhciBsPW0ocXAoKSksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpeHAoYSxuLnZhbHVlKTtmb3IodmFyIHA9W10scT1tKE1mKDU2KXx8W10pLHI9cS5uZXh0KCk7IXIuZG9uZTtyPXEubmV4dCgpKXt2YXIgdD1yLnZhbHVlLHU9e3N0dWR5SWQ6dFsxXSxhY3RpdmU6ISF0WzJdLHByb2JhYmlsaXR5OnRbM118fDAsZXhwZXJpbWVudElkOnRbNF18fAowLGNvbnRyb2xJZDp0WzVdfHwwLGNvbnRyb2xJZDI6dFs2XXx8MH0sdj0wO3N3aXRjaCh0WzddKXtjYXNlIDI6dj0xO2JyZWFrO2Nhc2UgMzp2PTI7YnJlYWs7Y2FzZSAxOmNhc2UgNDpjYXNlIDU6Y2FzZSAwOnY9MH12YXIgeDthOnN3aXRjaCh1LnN0dWR5SWQpe2Nhc2UgNTY3OmNhc2UgNDYyOng9ITA7YnJlYWsgYTtkZWZhdWx0Ong9ITF9dmFyIHk9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx1LHtaZTp2LGZvY3VzZWQ6eH0pOyh5LmFjdGl2ZXx8eS5wcm9iYWJpbGl0eT4uNSYmeS5leHBlcmltZW50SWR8fHkuZXhwZXJpbWVudElkJiZ5LmNvbnRyb2xJZCkmJnAucHVzaCh5KX1mb3IodmFyIHo9bShwKSxDPXoubmV4dCgpOyFDLmRvbmU7Qz16Lm5leHQoKSl4cChhLEMudmFsdWUpfX0KZnVuY3Rpb24gQXAoYSxiKXt6cCgpO3ZhciBjPXlwO3NwKGMsdHAoKSxhLGIpO3VwKGMsYSk/dGoodWosYSk6dnAoYyxhKT91ai5LW2FdPSEwOndwKGMsYSkmJih1ai5IW2FdPSEwKX1mdW5jdGlvbiBCcCgpe3pwKCk7dmFyIGE9eXAsYj11cChhLDU2Nyk7aWYoYS5LWzU2N10pe3ZhciBjLGQ9dHAoKTsoYz1OaShkLDU2Nyl8fE5pKGEuSCw1NjcpKSYmYS5SLmFkZChjKX1yZXR1cm4gYn1mdW5jdGlvbiBDcChhKXt6cCgpO3ZhciBiPW5ldyBTZXQoeXAuUik7aWYoYSlmb3IodmFyIGM9UShhLEguSi5DaCl8fFtdLGQ9bShjKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSliLmFkZChlLnZhbHVlKTtyZXR1cm4gcHAoW10uY29uY2F0KHcoYikpKX07ZnVuY3Rpb24gRHAoYSl7dmFyIGI9YS5sb2NhdGlvbi5ocmVmO2lmKGE9PT1hLnRvcClyZXR1cm57dXJsOmIsSXM6ITB9O3ZhciBjPSExLGQ9YS5kb2N1bWVudDtkJiZkLnJlZmVycmVyJiYoYj1kLnJlZmVycmVyLGEucGFyZW50PT09YS50b3AmJihjPSEwKSk7dmFyIGU9YS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnM7aWYoZSl7dmFyIGY9ZVtlLmxlbmd0aC0xXSxnO2YmJigoZz1iKT09bnVsbD92b2lkIDA6Zy5pbmRleE9mKGYpKT09PS0xJiYoYz0hMSxiPWYpfXJldHVybnt1cmw6YixJczpjfX1mdW5jdGlvbiBFcChhKXt0cnl7dmFyIGI7aWYoYj0hIWEmJmEubG9jYXRpb24uaHJlZiE9bnVsbClhOnt0cnl7SG4oYS5mb28pO2I9ITA7YnJlYWsgYX1jYXRjaChjKXt9Yj0hMX1yZXR1cm4gYn1jYXRjaChjKXtyZXR1cm4hMX19ZnVuY3Rpb24gRnAoKXtmb3IodmFyIGE9QSxiPWE7YSYmYSE9PWEucGFyZW50OylhPWEucGFyZW50LEVwKGEpJiYoYj1hKTtyZXR1cm4gYn07dmFyIEdwPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlPWEucHJvdG90eXBlO3ZhciBkPW5ldyBjO2EuYXBwbHkoZCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO3JldHVybiBkfSxIcD1mdW5jdGlvbihhKXt2YXIgYj1hO3JldHVybiBmdW5jdGlvbigpe2lmKGIpe3ZhciBjPWI7Yj1udWxsO2MoKX19fTtmdW5jdGlvbiBJcChhLGIpe2lmKGEpZm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYykmJmIoYVtjXSxjLGEpfTtmdW5jdGlvbiBKcChhKXt2YXIgYj1hLnNwbGl0KC9bPyNdLyksYz0vWz9dLy50ZXN0KGEpPyI/IitiWzFdOiIiO3JldHVybnt6azpiWzBdLHBhcmFtczpjLGZyYWdtZW50Oi9bI10vLnRlc3QoYSk/IiMiKyhjP2JbMl06YlsxXSk6IiJ9fWZ1bmN0aW9uIEtwKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtpZihiLmxlbmd0aD09PTApcmV0dXJuIGpjKGFbMF0pO2Zvcih2YXIgYz1hWzBdLGQ9MDtkPGIubGVuZ3RoO2QrKyljKz1lbmNvZGVVUklDb21wb25lbnQoYltkXSkrYVtkKzFdO3JldHVybiBqYyhjKX0KZnVuY3Rpb24gTHAoYSxiLGMsZCl7ZnVuY3Rpb24gZShnLGgpe2chPW51bGwmJihBcnJheS5pc0FycmF5KGcpP2cuZm9yRWFjaChmdW5jdGlvbihsKXtyZXR1cm4gZShsLGgpfSk6KGIrPWYrZW5jb2RlVVJJQ29tcG9uZW50KGgpKyI9IitlbmNvZGVVUklDb21wb25lbnQoZyksZj0iJiIpKX12YXIgZj1iLmxlbmd0aD8iJiI6Ij8iO2QuY29uc3RydWN0b3I9PT1PYmplY3QmJihkPU9iamVjdC5lbnRyaWVzKGQpKTtBcnJheS5pc0FycmF5KGQpP2QuZm9yRWFjaChmdW5jdGlvbihnKXtyZXR1cm4gZShnWzFdLGdbMF0pfSk6ZC5mb3JFYWNoKGUpO3JldHVybiBqYyhhK2IrYyl9ZnVuY3Rpb24gTXAoYSxiKXt2YXIgYz1KcChrYyhhKS50b1N0cmluZygpKSxkPWMuemsuc2xpY2UoLTEpPT09Ii8iPyIiOiIvIixlPWMuemsrZCtlbmNvZGVVUklDb21wb25lbnQoYik7cmV0dXJuIGpjKGUrYy5wYXJhbXMrYy5mcmFnbWVudCl9O3ZhciBOcD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLGQ9MDtkPDUwOysrZCl7dmFyIGU7dHJ5e2U9ISghYy5mcmFtZXN8fCFjLmZyYW1lc1tiXSl9Y2F0Y2goaCl7ZT0hMX1pZihlKXJldHVybiBjO3ZhciBmO2E6e3RyeXt2YXIgZz1jLnBhcmVudDtpZihnJiZnIT09Yyl7Zj1nO2JyZWFrIGF9fWNhdGNoKGgpe31mPW51bGx9aWYoIShjPWYpKWJyZWFrfXJldHVybiBudWxsfSxPcD1mdW5jdGlvbihhKXt2YXIgYj1BO2lmKGIudG9wPT1iKXJldHVybiAwO2lmKGE9PT12b2lkIDA/MDphKXt2YXIgYz1iLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucztpZihjKXJldHVybiBjW2MubGVuZ3RoLTFdPT1iLmxvY2F0aW9uLm9yaWdpbj8xOjJ9cmV0dXJuIEVwKGIudG9wKT8xOjJ9LFBwPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9kb2N1bWVudDphO3JldHVybiBhLmNyZWF0ZUVsZW1lbnQoImltZyIpfTtmdW5jdGlvbiBRcChhKXtmb3IodmFyIGI9W10sYz1CLmNvb2tpZS5zcGxpdCgiOyIpLGQ9bmV3IFJlZ0V4cCgiXlxccyoiKyhhfHwiX2dhYyIpKyJfKFVBLVxcZCstXFxkKyk9XFxzKiguKz8pXFxzKiQiKSxlPTA7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPWNbZV0ubWF0Y2goZCk7ZiYmYi5wdXNoKHt1ZDpmWzFdLHZhbHVlOmZbMl0sdGltZXN0YW1wOk51bWJlcihmWzJdLnNwbGl0KCIuIilbMV0pfHwwfSl9Yi5zb3J0KGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGgudGltZXN0YW1wLWcudGltZXN0YW1wfSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIFJwKGEsYil7dmFyIGM9UXAoYSksZD17fTtpZighY3x8IWMubGVuZ3RoKXJldHVybiBkO2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1jW2VdLnZhbHVlLnNwbGl0KCIuIik7aWYoIShmWzBdIT09IjEifHxiJiZmLmxlbmd0aDwzfHwhYiYmZi5sZW5ndGghPT0zKSYmTnVtYmVyKGZbMV0pKXtkW2NbZV0udWRdfHwoZFtjW2VdLnVkXT1bXSk7dmFyIGc9e3ZlcnNpb246ZlswXSx0aW1lc3RhbXA6TnVtYmVyKGZbMV0pKjFFMyxnY2xpZDpmWzJdfTtiJiZmLmxlbmd0aD4zJiYoZy5sYWJlbHM9Zi5zbGljZSgzKSk7ZFtjW2VdLnVkXS5wdXNoKGcpfX1yZXR1cm4gZH07ZnVuY3Rpb24gU3AoYSl7cmV0dXJuIGEub3JpZ2luIT09Im51bGwifTt2YXIgVHA9e30sVXA9KFRwLms9e25hOi9eW1x3LV0rJC99LFRwLmI9e25hOi9eW1x3LV0rJC8sbms6ITB9LFRwLmk9e25hOi9eWzEtOV1cZCokL30sVHAuaD17bmE6L15cZCskL30sVHAudD17bmE6L15bMS05XVxkKiQvfSxUcC5kPXtuYTovXltBLVphLXowLTlfLV0rJC99LFRwLmo9e25hOi9eXGQrJC99LFRwLnU9e25hOi9eWzEtOV1cZCokL30sVHAubD17bmE6L15bMDFdJC99LFRwLm89e25hOi9eWzEtOV1cZCokL30sVHAuZz17bmE6L15bMDFdJC99LFRwLnM9e25hOi9eLiskL30sVHAubT17bmE6L15bMDFdJC99LFRwKTt2YXIgVnA9e30sWnA9KFZwWzVdPXtqaTp7MjpXcH0sWmo6IjIiLFJoOlsiayIsImkiLCJiIiwidSJdfSxWcFs0XT17amk6ezI6V3AsR0NMOlhwfSxaajoiMiIsUmg6WyJrIiwiaSIsImIiLCJtIl19LFZwWzJdPXtqaTp7R1MyOldwLEdTMTpZcH0sWmo6IkdTMiIsUmg6InNvZ3RqbGhkIi5zcGxpdCgiIil9LFZwKTtmdW5jdGlvbiAkcChhLGIsYyl7dmFyIGQ9WnBbYl07aWYoZCl7dmFyIGU9YS5zcGxpdCgiLiIpWzBdO2M9PW51bGx8fGMoZSk7aWYoZSl7dmFyIGY9ZC5qaVtlXTtpZihmKXJldHVybiBmKGEsYil9fX0KZnVuY3Rpb24gV3AoYSxiKXt2YXIgYz1hLnNwbGl0KCIuIik7aWYoYy5sZW5ndGg9PT0zKXt2YXIgZD1jWzJdO2lmKGQuaW5kZXhPZigiJCIpPT09LTEmJmQuaW5kZXhPZigiJTI0IikhPT0tMSl0cnl7ZD1kZWNvZGVVUklDb21wb25lbnQoZCl9Y2F0Y2godCl7fXZhciBlPXt9LGY9WnBbYl07aWYoZil7Zm9yKHZhciBnPWYuUmgsaD1tKGQuc3BsaXQoIiQiKSksbD1oLm5leHQoKTshbC5kb25lO2w9aC5uZXh0KCkpe3ZhciBuPWwudmFsdWUscD1uWzBdO2lmKGcuaW5kZXhPZihwKSE9PS0xKXRyeXt2YXIgcT1kZWNvZGVVUklDb21wb25lbnQobi5zdWJzdHJpbmcoMSkpLHI9VXBbcF07ciYmKHIubms/KGVbcF09ZVtwXXx8W10sZVtwXS5wdXNoKHEpKTplW3BdPXEpfWNhdGNoKHQpe319cmV0dXJuIGV9fX1mdW5jdGlvbiBhcShhLGIsYyl7dmFyIGQ9WnBbYl07aWYoZClyZXR1cm5bZC5aaixjfHwiMSIsYnEoYSxiKV0uam9pbigiLiIpfQpmdW5jdGlvbiBicShhLGIpe3ZhciBjPVpwW2JdO2lmKGMpe2Zvcih2YXIgZD1bXSxlPW0oYy5SaCksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWUsaD1VcFtnXTtpZihoKXt2YXIgbD1hW2ddO2lmKGwhPT12b2lkIDApaWYoaC5uayYmQXJyYXkuaXNBcnJheShsKSlmb3IodmFyIG49bShsKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSlkLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KCIiK2crcC52YWx1ZSkpO2Vsc2UgZC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCgiIitnK2wpKX19cmV0dXJuIGQuam9pbigiJCIpfX1mdW5jdGlvbiBYcChhKXt2YXIgYj1hLnNwbGl0KCIuIik7Yi5zaGlmdCgpO3ZhciBjPWIuc2hpZnQoKSxkPWIuc2hpZnQoKSxlPXt9O3JldHVybiBlLms9ZCxlLmk9YyxlLmI9YixlfQpmdW5jdGlvbiBZcChhKXt2YXIgYj1hLnNwbGl0KCIuIikuc2xpY2UoMik7aWYoIShiLmxlbmd0aDw1fHxiLmxlbmd0aD43KSl7dmFyIGM9e307cmV0dXJuIGMucz1iWzBdLGMubz1iWzFdLGMuZz1iWzJdLGMudD1iWzNdLGMuaj1iWzRdLGMubD1iWzVdLGMuaD1iWzZdLGN9fTtmdW5jdGlvbiBjcShhLGIsYyxkKXt2YXIgZTtyZXR1cm4oZT1kcShmdW5jdGlvbihmKXtyZXR1cm4gZj09PWF9LGIsYyxkKVthXSkhPW51bGw/ZTpbXX1mdW5jdGlvbiBkcShhLGIsYyxkKXt2YXIgZTtpZihlcShkKSl7Zm9yKHZhciBmPXt9LGc9U3RyaW5nKGJ8fGZxKCkpLnNwbGl0KCI7IiksaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgbD1nW2hdLnNwbGl0KCI9Iiksbj1sWzBdLnRyaW0oKTtpZihuJiZhKG4pKXt2YXIgcD1sLnNsaWNlKDEpLmpvaW4oIj0iKS50cmltKCk7cCYmYyYmKHA9ZGVjb2RlVVJJQ29tcG9uZW50KHApKTt2YXIgcT12b2lkIDAscj12b2lkIDA7KChxPWYpW3I9bl18fChxW3JdPVtdKSkucHVzaChwKX19ZT1mfWVsc2UgZT17fTtyZXR1cm4gZX0KZnVuY3Rpb24gZ3EoYSxiLGMsZCxlKXtpZihlcShlKSl7dmFyIGY9aHEoYSxkLGUpO2lmKGYubGVuZ3RoPT09MSlyZXR1cm4gZlswXTtpZihmLmxlbmd0aCE9PTApe2Y9aXEoZixmdW5jdGlvbihnKXtyZXR1cm4gZy5Kcn0sYik7aWYoZi5sZW5ndGg9PT0xKXJldHVybiBmWzBdO2Y9aXEoZixmdW5jdGlvbihnKXtyZXR1cm4gZy5Xc30sYyk7cmV0dXJuIGZbMF19fX1mdW5jdGlvbiBqcShhLGIsYyxkKXt2YXIgZT1mcSgpLGY9QTtTcChmKSYmKGYuZG9jdW1lbnQuY29va2llPWEpO3ZhciBnPWZxKCk7cmV0dXJuIGUhPT1nfHxjIT09dm9pZCAwJiZjcShiLGcsITEsZCkuaW5kZXhPZihjKT49MH0KZnVuY3Rpb24ga3EoYSxiLGMsZCl7ZnVuY3Rpb24gZSh4LHkseil7aWYoej09bnVsbClyZXR1cm4gZGVsZXRlIGhbeV0seDtoW3ldPXo7cmV0dXJuIHgrIjsgIit5KyI9Iit6fWZ1bmN0aW9uIGYoeCx5KXtpZih5PT1udWxsKXJldHVybiB4O2hbeV09ITA7cmV0dXJuIHgrIjsgIit5fWlmKCFlcShjLk1jKSlyZXR1cm4gMjt2YXIgZztiPT1udWxsP2c9YSsiPWRlbGV0ZWQ7IGV4cGlyZXM9IisobmV3IERhdGUoMCkpLnRvVVRDU3RyaW5nKCk6KGMuZW5jb2RlJiYoYj1lbmNvZGVVUklDb21wb25lbnQoYikpLGI9bHEoYiksZz1hKyI9IitiKTt2YXIgaD17fTtnPWUoZywicGF0aCIsYy5wYXRoKTt2YXIgbDtjLmV4cGlyZXMgaW5zdGFuY2VvZiBEYXRlP2w9Yy5leHBpcmVzLnRvVVRDU3RyaW5nKCk6Yy5leHBpcmVzIT1udWxsJiYobD0iIitjLmV4cGlyZXMpO2c9ZShnLCJleHBpcmVzIixsKTtnPWUoZywibWF4LWFnZSIsYy5Pcyk7Zz1lKGcsInNhbWVzaXRlIixjLnJ0KTtjLnNlY3VyZSYmCihnPWYoZywic2VjdXJlIikpO3ZhciBuPWMuZG9tYWluO2lmKG4mJm4udG9Mb3dlckNhc2UoKT09PSJhdXRvIil7Zm9yKHZhciBwPW1xKCkscT12b2lkIDAscj0hMSx0PTA7dDxwLmxlbmd0aDsrK3Qpe3ZhciB1PXBbdF0hPT0ibm9uZSI/cFt0XTp2b2lkIDAsdj1lKGcsImRvbWFpbiIsdSk7dj1mKHYsYy5mbGFncyk7dHJ5e2QmJmQoYSxoKX1jYXRjaCh4KXtxPXg7Y29udGludWV9cj0hMDtpZighbnEodSxjLnBhdGgpJiZqcSh2LGEsYixjLk1jKSlyZXR1cm4gMH1pZihxJiYhcil0aHJvdyBxO3JldHVybiAxfW4mJm4udG9Mb3dlckNhc2UoKSE9PSJub25lIiYmKGc9ZShnLCJkb21haW4iLG4pKTtnPWYoZyxjLmZsYWdzKTtkJiZkKGEsaCk7cmV0dXJuIG5xKG4sYy5wYXRoKT8xOmpxKGcsYSxiLGMuTWMpPzA6MX1mdW5jdGlvbiBvcShhLGIsYyl7Yy5wYXRoPT1udWxsJiYoYy5wYXRoPSIvIik7Yy5kb21haW58fChjLmRvbWFpbj0iYXV0byIpO3JldHVybiBrcShhLGIsYyl9CmZ1bmN0aW9uIGlxKGEsYixjKXtmb3IodmFyIGQ9W10sZT1bXSxmLGc9MDtnPGEubGVuZ3RoO2crKyl7dmFyIGg9YVtnXSxsPWIoaCk7bD09PWM/ZC5wdXNoKGgpOmY9PT12b2lkIDB8fGw8Zj8oZT1baF0sZj1sKTpsPT09ZiYmZS5wdXNoKGgpfXJldHVybiBkLmxlbmd0aD4wP2Q6ZX1mdW5jdGlvbiBocShhLGIsYyl7Zm9yKHZhciBkPVtdLGU9Y3EoYSx2b2lkIDAsdm9pZCAwLGMpLGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIGc9ZVtmXS5zcGxpdCgiLiIpLGg9Zy5zaGlmdCgpO2lmKCFifHwhaHx8Yi5pbmRleE9mKGgpIT09LTEpe3ZhciBsPWcuc2hpZnQoKTtpZihsKXt2YXIgbj1sLnNwbGl0KCItIik7ZC5wdXNoKHtCcjplW2ZdLENyOmcuam9pbigiLiIpLEpyOk51bWJlcihuWzBdKXx8MSxXczpOdW1iZXIoblsxXSl8fDF9KX19fXJldHVybiBkfWZ1bmN0aW9uIGxxKGEpe2EmJmEubGVuZ3RoPjEyMDAmJihhPWEuc3Vic3RyaW5nKDAsMTIwMCkpO3JldHVybiBhfQp2YXIgcHE9L14od3d3XC4pP2dvb2dsZShcLmNvbT8pPyhcLlthLXpdezJ9KT8kLyxxcT0vKF58XC4pZG91YmxlY2xpY2tcLm5ldCQvaTtmdW5jdGlvbiBucShhLGIpe3JldHVybiBhIT09dm9pZCAwJiYocXEudGVzdChBLmRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lKXx8Yj09PSIvIiYmcHEudGVzdChhKSl9ZnVuY3Rpb24gcnEoYSl7aWYoIWEpcmV0dXJuIDE7dmFyIGI9YTtZZig0KSYmYT09PSJub25lIiYmKGI9QS5kb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSk7Yj1iLmluZGV4T2YoIi4iKT09PTA/Yi5zdWJzdHJpbmcoMSk6YjtyZXR1cm4gYi5zcGxpdCgiLiIpLmxlbmd0aH1mdW5jdGlvbiBzcShhKXtpZighYXx8YT09PSIvIilyZXR1cm4gMTthWzBdIT09Ii8iJiYoYT0iLyIrYSk7YVthLmxlbmd0aC0xXSE9PSIvIiYmKGErPSIvIik7cmV0dXJuIGEuc3BsaXQoIi8iKS5sZW5ndGgtMX0KZnVuY3Rpb24gdHEoYSxiKXt2YXIgYz0iIitycShhKSxkPXNxKGIpO2Q+MSYmKGMrPSItIitkKTtyZXR1cm4gY30KdmFyIGZxPWZ1bmN0aW9uKCl7dmFyIGE9QTtyZXR1cm4gU3AoYSk/YS5kb2N1bWVudC5jb29raWU6IiJ9LGVxPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZZZig1KT8oQXJyYXkuaXNBcnJheShhKT9hOlthXSkuZXZlcnkoZnVuY3Rpb24oYil7cmV0dXJuIERsKGIpJiZCbChiKX0pOiEwfSxtcT1mdW5jdGlvbigpe3ZhciBhPVtdLGI9QS5kb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZS5zcGxpdCgiLiIpO2lmKGIubGVuZ3RoPT09NCl7dmFyIGM9YltiLmxlbmd0aC0xXTtpZihOdW1iZXIoYykudG9TdHJpbmcoKT09PWMpcmV0dXJuWyJub25lIl19Zm9yKHZhciBkPWIubGVuZ3RoLTI7ZD49MDtkLS0pYS5wdXNoKGIuc2xpY2UoZCkuam9pbigiLiIpKTt2YXIgZT1BLmRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lO3FxLnRlc3QoZSl8fHBxLnRlc3QoZSl8fGEucHVzaCgibm9uZSIpO3JldHVybiBhfTtmdW5jdGlvbiB1cShhLGIsYyxkKXt2YXIgZSxmPU51bWJlcihhLnBkIT1udWxsP2EucGQ6dm9pZCAwKTtmIT09MCYmKGU9bmV3IERhdGUoKGJ8fE5iKCkpKzFFMyooZnx8Nzc3NkUzKSkpO3JldHVybntwYXRoOmEucGF0aCxkb21haW46YS5kb21haW4sZmxhZ3M6YS5mbGFncyxlbmNvZGU6ISFjLGV4cGlyZXM6ZSxNYzpkfX07dmFyIHZxPW5ldyBNYXAoW1s1LCJhZF9zdG9yYWdlIl0sWzQsWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl1dLFsyLCJhbmFseXRpY3Nfc3RvcmFnZSJdXSk7ZnVuY3Rpb24gd3EoYSxiLGMpe2lmKFpwW2JdKXtmb3IodmFyIGQ9W10sZT1jcShhLHZvaWQgMCx2b2lkIDAsdnEuZ2V0KGIpKSxmPW0oZSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPSRwKGcudmFsdWUsYixjKTtoJiZkLnB1c2goeHEoaCkpfXJldHVybiBkfX0KZnVuY3Rpb24geXEoYSl7dmFyIGI9enE7aWYoWnBbMl0pe2Zvcih2YXIgYz17fSxkPWRxKGEsdm9pZCAwLHZvaWQgMCx2cS5nZXQoMikpLGU9T2JqZWN0LmtleXMoZCkuc29ydCgpLGY9bShlKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlmb3IodmFyIGg9Zy52YWx1ZSxsPW0oZFtoXSksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPSRwKG4udmFsdWUsMixiKTtwJiYoY1toXXx8KGNbaF09W10pLGNbaF0ucHVzaCh4cShwKSkpfXJldHVybiBjfX1mdW5jdGlvbiBBcShhLGIsYyxkLGUpe2Q9ZHx8e307dmFyIGY9dHEoZC5kb21haW4sZC5wYXRoKSxnPWFxKGIsYyxmKTtpZighZylyZXR1cm4gMTt2YXIgaD11cShkLGUsdm9pZCAwLHZxLmdldChjKSk7cmV0dXJuIG9xKGEsZyxoKX1mdW5jdGlvbiBCcShhLGIpe3ZhciBjPWIubmE7cmV0dXJuIHR5cGVvZiBjPT09ImZ1bmN0aW9uIj9jKGEpOmMudGVzdChhKX0KZnVuY3Rpb24geHEoYSl7Zm9yKHZhciBiPW0oT2JqZWN0LmtleXMoYSkpLGM9Yi5uZXh0KCksZD17fTshYy5kb25lO2Q9e0FnOnZvaWQgMH0sYz1iLm5leHQoKSl7dmFyIGU9Yy52YWx1ZSxmPWFbZV07ZC5BZz1VcFtlXTtkLkFnP2QuQWcubms/YVtlXT1BcnJheS5pc0FycmF5KGYpP2YuZmlsdGVyKGZ1bmN0aW9uKGcpe3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gQnEoaCxnLkFnKX19KGQpKTp2b2lkIDA6dHlwZW9mIGY9PT0ic3RyaW5nIiYmQnEoZixkLkFnKXx8KGFbZV09dm9pZCAwKTphW2VdPXZvaWQgMH1yZXR1cm4gYX07dmFyIENxO2Z1bmN0aW9uIERxKCl7ZnVuY3Rpb24gYShnKXtjKGcudGFyZ2V0fHxnLnNyY0VsZW1lbnR8fHt9KX1mdW5jdGlvbiBiKGcpe2QoZy50YXJnZXR8fGcuc3JjRWxlbWVudHx8e30pfXZhciBjPUVxLGQ9RnEsZT1HcSgpO2lmKCFlLmluaXQpeyRjKEIsIm1vdXNlZG93biIsYSk7JGMoQiwia2V5dXAiLGEpOyRjKEIsInN1Ym1pdCIsYik7dmFyIGY9SFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQ7SFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQ9ZnVuY3Rpb24oKXtkKHRoaXMpO2YuY2FsbCh0aGlzKX07ZS5pbml0PSEwfX1mdW5jdGlvbiBIcShhLGIsYyxkLGUpe3ZhciBmPXtjYWxsYmFjazphLGRvbWFpbnM6YixmcmFnbWVudDpjPT09MixwbGFjZW1lbnQ6Yyxmb3JtczpkLHNhbWVIb3N0OmV9O0dxKCkuZGVjb3JhdG9ycy5wdXNoKGYpfQpmdW5jdGlvbiBJcShhLGIsYyl7Zm9yKHZhciBkPUdxKCkuZGVjb3JhdG9ycyxlPXt9LGY9MDtmPGQubGVuZ3RoOysrZil7dmFyIGc9ZFtmXSxoO2lmKGg9IWN8fGcuZm9ybXMpYTp7dmFyIGw9Zy5kb21haW5zLG49YSxwPSEhZy5zYW1lSG9zdDtpZihsJiYocHx8biE9PUIubG9jYXRpb24uaG9zdG5hbWUpKWZvcih2YXIgcT0wO3E8bC5sZW5ndGg7cSsrKWlmKGxbcV1pbnN0YW5jZW9mIFJlZ0V4cCl7aWYobFtxXS50ZXN0KG4pKXtoPSEwO2JyZWFrIGF9fWVsc2UgaWYobi5pbmRleE9mKGxbcV0pPj0wfHxwJiZsW3FdLmluZGV4T2Yobik+PTApe2g9ITA7YnJlYWsgYX1oPSExfWlmKGgpe3ZhciByPWcucGxhY2VtZW50O3I9PT12b2lkIDAmJihyPWcuZnJhZ21lbnQ/MjoxKTtyPT09YiYmUWIoZSxnLmNhbGxiYWNrKCkpfX1yZXR1cm4gZX0KZnVuY3Rpb24gR3EoKXt2YXIgYT1NYygiZ29vZ2xlX3RhZ19kYXRhIix7fSksYj1hLmdsO2ImJmIuZGVjb3JhdG9yc3x8KGI9e2RlY29yYXRvcnM6W119LGEuZ2w9Yik7cmV0dXJuIGJ9O3ZhciBKcT0vKC4qPylcKiguKj8pXCooLiopLyxLcT0vXmh0dHBzPzpcL1wvKFteXC9dKj8pXC4/Y2RuXC5hbXBwcm9qZWN0XC5vcmdcLz8oLiopLyxMcT0vXig/Ond3d1wufG1cLnxhbXBcLikrLyxNcT0vKFtePyNdKykoXD9bXiNdKik/KCMuKik/LztmdW5jdGlvbiBOcShhKXt2YXIgYj1NcS5leGVjKGEpO2lmKGIpcmV0dXJue2hrOmJbMV0scXVlcnk6YlsyXSxmcmFnbWVudDpiWzNdfX1mdW5jdGlvbiBPcShhKXtyZXR1cm4gbmV3IFJlZ0V4cCgiKC4qPykoXnwmKSIrYSsiPShbXiZdKikmPyguKikiKX0KZnVuY3Rpb24gUHEoYSxiKXt2YXIgYz1bSGMudXNlckFnZW50LChuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSxIYy51c2VyTGFuZ3VhZ2V8fEhjLmxhbmd1YWdlLE1hdGguZmxvb3IoTmIoKS82MC8xRTMpLShiPT09dm9pZCAwPzA6YiksYV0uam9pbigiKiIpLGQ7aWYoIShkPUNxKSl7Zm9yKHZhciBlPUFycmF5KDI1NiksZj0wO2Y8MjU2O2YrKyl7Zm9yKHZhciBnPWYsaD0wO2g8ODtoKyspZz1nJjE/Zz4+PjFeMzk4ODI5MjM4NDpnPj4+MTtlW2ZdPWd9ZD1lfUNxPWQ7Zm9yKHZhciBsPTQyOTQ5NjcyOTUsbj0wO248Yy5sZW5ndGg7bisrKWw9bD4+PjheQ3FbKGxeYy5jaGFyQ29kZUF0KG4pKSYyNTVdO3JldHVybigobF4tMSk+Pj4wKS50b1N0cmluZygzNil9CmZ1bmN0aW9uIFFxKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1SaihBLmxvY2F0aW9uLmhyZWYpLGQ9Yy5zZWFyY2gucmVwbGFjZSgiPyIsIiIpLGU9SWooZCwiX2dsIiwhMSwhMCl8fCIiO2IucXVlcnk9UnEoZSl8fHt9O3ZhciBmPUxqKGMsImZyYWdtZW50IiksZzt2YXIgaD0tMTtpZihTYihmLCJfZ2w9IikpaD00O2Vsc2V7dmFyIGw9Zi5pbmRleE9mKCImX2dsPSIpO2w+MCYmKGg9bCszKzIpfWlmKGg8MClnPXZvaWQgMDtlbHNle3ZhciBuPWYuaW5kZXhPZigiJiIsaCk7Zz1uPDA/Zi5zdWJzdHJpbmcoaCk6Zi5zdWJzdHJpbmcoaCxuKX1iLmZyYWdtZW50PVJxKGd8fCIiKXx8e307YSYmU3EoYyxkLGYpfX1mdW5jdGlvbiBUcShhLGIpe3ZhciBjPU9xKGEpLmV4ZWMoYiksZD1iO2lmKGMpe3ZhciBlPWNbMl0sZj1jWzRdO2Q9Y1sxXTtmJiYoZD1kK2UrZil9cmV0dXJuIGR9CmZ1bmN0aW9uIFNxKGEsYixjKXtmdW5jdGlvbiBkKGcsaCl7dmFyIGw9VHEoIl9nbCIsZyk7bC5sZW5ndGgmJihsPWgrbCk7cmV0dXJuIGx9aWYoR2MmJkdjLnJlcGxhY2VTdGF0ZSl7dmFyIGU9T3EoIl9nbCIpO2lmKGUudGVzdChiKXx8ZS50ZXN0KGMpKXt2YXIgZj1MaihhLCJwYXRoIik7Yj1kKGIsIj8iKTtjPWQoYywiIyIpO0djLnJlcGxhY2VTdGF0ZSh7fSwiIiwiIitmK2IrYyl9fX1mdW5jdGlvbiBVcShhLGIpe3ZhciBjPVFxKCEhYiksZD1HcSgpO2QuZGF0YXx8KGQuZGF0YT17cXVlcnk6e30sZnJhZ21lbnQ6e319LGMoZC5kYXRhKSk7dmFyIGU9e30sZj1kLmRhdGE7ZiYmKFFiKGUsZi5xdWVyeSksYSYmUWIoZSxmLmZyYWdtZW50KSk7cmV0dXJuIGV9CnZhciBScT1mdW5jdGlvbihhKXt0cnl7dmFyIGI9VnEoYSwzKTtpZihiIT09dm9pZCAwKXtmb3IodmFyIGM9e30sZD1iP2Iuc3BsaXQoIioiKTpbXSxlPTA7ZSsxPGQubGVuZ3RoO2UrPTIpe3ZhciBmPWRbZV0sZz1xYihkW2UrMV0pO2NbZl09Z31zYigiVEFHR0lORyIsNik7cmV0dXJuIGN9fWNhdGNoKGgpe3NiKCJUQUdHSU5HIiw4KX19O2Z1bmN0aW9uIFZxKGEsYil7aWYoYSl7dmFyIGM7YTp7Zm9yKHZhciBkPWEsZT0wO2U8MzsrK2Upe3ZhciBmPUpxLmV4ZWMoZCk7aWYoZil7Yz1mO2JyZWFrIGF9ZD1LaihkKXx8IiJ9Yz12b2lkIDB9dmFyIGc9YztpZihnJiZnWzFdPT09IjEiKXt2YXIgaD1nWzNdLGw7YTp7Zm9yKHZhciBuPWdbMl0scD0wO3A8YjsrK3ApaWYobj09PVBxKGgscCkpe2w9ITA7YnJlYWsgYX1sPSExfWlmKGwpcmV0dXJuIGg7c2IoIlRBR0dJTkciLDcpfX19CmZ1bmN0aW9uIFdxKGEsYixjLGQsZSl7ZnVuY3Rpb24gZihwKXtwPVRxKGEscCk7dmFyIHE9cC5jaGFyQXQocC5sZW5ndGgtMSk7cCYmcSE9PSImIiYmKHArPSImIik7cmV0dXJuIHArbn1kPWQ9PT12b2lkIDA/ITE6ZDtlPWU9PT12b2lkIDA/ITE6ZTt2YXIgZz1OcShjKTtpZighZylyZXR1cm4iIjt2YXIgaD1nLnF1ZXJ5fHwiIixsPWcuZnJhZ21lbnR8fCIiLG49YSsiPSIrYjtkP2wuc3Vic3RyaW5nKDEpLmxlbmd0aCE9PTAmJmV8fChsPSIjIitmKGwuc3Vic3RyaW5nKDEpKSk6aD0iPyIrZihoLnN1YnN0cmluZygxKSk7cmV0dXJuIiIrZy5oaytoK2x9CmZ1bmN0aW9uIFhxKGEsYil7ZnVuY3Rpb24gYyhuLHAscSl7dmFyIHI7YTp7Zm9yKHZhciB0IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh0KSl7cj0hMDticmVhayBhfXI9ITF9aWYocil7dmFyIHUsdj1bXSx4O2Zvcih4IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh4KSl7dmFyIHk9blt4XTt5IT09dm9pZCAwJiZ5PT09eSYmeSE9PW51bGwmJnkudG9TdHJpbmcoKSE9PSJbb2JqZWN0IE9iamVjdF0iJiYodi5wdXNoKHgpLHYucHVzaChwYihTdHJpbmcoeSkpKSl9dmFyIHo9di5qb2luKCIqIik7dT1bIjEiLFBxKHopLHpdLmpvaW4oIioiKTtkPyhZZigzKXx8WWYoMSl8fCFwKSYmWXEoIl9nbCIsdSxhLHAscSk6WnEoIl9nbCIsdSxhLHAscSl9fXZhciBkPShhLnRhZ05hbWV8fCIiKS50b1VwcGVyQ2FzZSgpPT09IkZPUk0iLGU9SXEoYiwxLGQpLGY9SXEoYiwyLGQpLGc9SXEoYiw0LGQpLGg9SXEoYiwzLGQpO2MoZSwhMSwhMSk7YyhmLCEwLCExKTtZZigxKSYmYyhnLCEwLCEwKTtmb3IodmFyIGwgaW4gaCloLmhhc093blByb3BlcnR5KGwpJiYKJHEobCxoW2xdLGEpfWZ1bmN0aW9uICRxKGEsYixjKXtjLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PSJhIj9acShhLGIsYyk6Yy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iZm9ybSImJllxKGEsYixjKX1mdW5jdGlvbiBacShhLGIsYyxkLGUpe2Q9ZD09PXZvaWQgMD8hMTpkO2U9ZT09PXZvaWQgMD8hMTplO3ZhciBmO2lmKGY9Yy5ocmVmKXt2YXIgZztpZighKGc9ZCkpe3ZhciBoPUEubG9jYXRpb24uaHJlZixsPU5xKGMuaHJlZiksbj1OcShoKTtnPSEobCYmbiYmbC5oaz09PW4uaGsmJmwucXVlcnk9PT1uLnF1ZXJ5JiZsLmZyYWdtZW50KX1mPWd9aWYoZil7dmFyIHA9V3EoYSxiLGMuaHJlZixkLGUpO3ZjLnRlc3QocCkmJihjLmhyZWY9cCl9fQpmdW5jdGlvbiBZcShhLGIsYyxkLGUpe2Q9ZD09PXZvaWQgMD8hMTpkO2U9ZT09PXZvaWQgMD8hMTplO2lmKGMpe3ZhciBmPWMuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKXx8IiI7aWYoZil7dmFyIGc9KGMubWV0aG9kfHwiIikudG9Mb3dlckNhc2UoKTtpZihnIT09ImdldCJ8fGQpe2lmKGc9PT0iZ2V0Inx8Zz09PSJwb3N0Iil7dmFyIGg9V3EoYSxiLGYsZCxlKTt2Yy50ZXN0KGgpJiYoYy5hY3Rpb249aCl9fWVsc2V7Zm9yKHZhciBsPWMuY2hpbGROb2Rlc3x8W10sbj0hMSxwPTA7cDxsLmxlbmd0aDtwKyspe3ZhciBxPWxbcF07aWYocS5uYW1lPT09YSl7cS5zZXRBdHRyaWJ1dGUoInZhbHVlIixiKTtuPSEwO2JyZWFrfX1pZighbil7dmFyIHI9Qi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIik7ci5zZXRBdHRyaWJ1dGUoIm5hbWUiLGEpO3Iuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYik7Yy5hcHBlbmRDaGlsZChyKX19fX19CmZ1bmN0aW9uIEVxKGEpe3RyeXt2YXIgYjthOntmb3IodmFyIGM9YSxkPTEwMDtjJiZkPjA7KXtpZihjLmhyZWYmJmMubm9kZU5hbWUubWF0Y2goL15hKD86cmVhKT8kL2kpKXtiPWM7YnJlYWsgYX1jPWMucGFyZW50Tm9kZTtkLS19Yj1udWxsfXZhciBlPWI7aWYoZSl7dmFyIGY9ZS5wcm90b2NvbDtmIT09Imh0dHA6IiYmZiE9PSJodHRwczoifHxYcShlLGUuaG9zdG5hbWUpfX1jYXRjaChnKXt9fWZ1bmN0aW9uIEZxKGEpe3RyeXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgiYWN0aW9uIik7aWYoYil7dmFyIGM9TGooUmooYiksImhvc3QiKTtYcShhLGMpfX1jYXRjaChkKXt9fWZ1bmN0aW9uIGFyKGEsYixjLGQpe0RxKCk7dmFyIGU9Yz09PSJmcmFnbWVudCI/MjoxO2Q9ISFkO0hxKGEsYixlLGQsITEpO2U9PT0yJiZzYigiVEFHR0lORyIsMjMpO2QmJnNiKCJUQUdHSU5HIiwyNCl9CmZ1bmN0aW9uIGJyKGEsYil7RHEoKTtIcShhLFtOaihBLmxvY2F0aW9uLCJob3N0IiwhMCldLGIsITAsITApfWZ1bmN0aW9uIGNyKCl7dmFyIGE9Qi5sb2NhdGlvbi5ob3N0bmFtZSxiPUtxLmV4ZWMoQi5yZWZlcnJlcik7aWYoIWIpcmV0dXJuITE7dmFyIGM9YlsyXSxkPWJbMV0sZT0iIjtpZihjKXt2YXIgZj1jLnNwbGl0KCIvIiksZz1mWzFdO2U9Zz09PSJzIj9LaihmWzJdKXx8IiI6S2ooZyl8fCIifWVsc2UgaWYoZCl7aWYoZC5pbmRleE9mKCJ4bi0tIik9PT0wKXJldHVybiExO2U9ZC5yZXBsYWNlKC8tL2csIi4iKS5yZXBsYWNlKC9cLlwuL2csIi0iKX12YXIgaD1hLnJlcGxhY2UoTHEsIiIpLGw9ZS5yZXBsYWNlKExxLCIiKTtyZXR1cm4gaD09PWx8fFRiKGgsIi4iK2wpfWZ1bmN0aW9uIGRyKGEsYil7cmV0dXJuIGE9PT0hMT8hMTphfHxifHxjcigpfTt2YXIgZXI9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZT0wO3RoaXMudmFsdWU9YT09PXZvaWQgMD8wOmF9O2VyLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWV8PTE8PGF9O3ZhciBmcj1mdW5jdGlvbihhLGIpe2I8PTB8fChhLnZhbHVlfD0xPDxiLTEpfTtlci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O2VyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbihhKXt0aGlzLnZhbHVlJj1+KDE8PGEpfTtlci5wcm90b3R5cGUuY2xlYXJBbGw9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPTB9O2VyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWU9PT1hLnZhbHVlfTtmdW5jdGlvbiBncihhKXtpZihhKXRyeXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXRvYihhLnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpKS5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLmNoYXJDb2RlQXQoMCl9KSl9Y2F0Y2goYil7fX1mdW5jdGlvbiBocihhLGIpe3ZhciBjPTAsZD0wLGUsZj1iO2Rve2lmKGY+PWEubGVuZ3RoKXJldHVybjtlPWFbZisrXTtjfD0oZSYxMjcpPDxkO2QrPTd9d2hpbGUoZSYxMjgpO3JldHVybltjLGZdfTtmdW5jdGlvbiBpcigpe3ZhciBhPVN0cmluZyxiPUEubG9jYXRpb24uaG9zdG5hbWUsYz1BLmxvY2F0aW9uLnBhdGhuYW1lLGQ9Yj1iYyhiKTtkLnNwbGl0KCIuIikubGVuZ3RoPjImJihkPWQucmVwbGFjZSgvXih3d3dbMC05XSp8d2VifGZ0cHx3YXB8aG9tZXxtfHd8YW1wfG1vYmlsZSlcLi8sIiIpKTtiPWQ7Yz1iYyhjKTt2YXIgZT1jLnNwbGl0KCI7IilbMF07ZT1lLnJlcGxhY2UoL1wvKGFyfHNscHx3ZWJ8aW5kZXgpP1wvPyQvLCIiKTtyZXR1cm4gYShuZygoIiIrYitlKS50b0xvd2VyQ2FzZSgpKSl9O3ZhciBqcj1bImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXTtmdW5jdGlvbiBrcihhLGIpe2lmKCFhKXJldHVybiBzYigiVEFHR0lORyIsMzIpLDEwO2lmKGI9PT1udWxsfHxiPT09dm9pZCAwfHxiPT09IiIpcmV0dXJuIHNiKCJUQUdHSU5HIiwzMyksMTE7dmFyIGM9bHIoITEpO2lmKGMuZXJyb3IhPT0wKXJldHVybiBzYigiVEFHR0lORyIsMzQpLGMuZXJyb3I7aWYoIWMudmFsdWUpcmV0dXJuIHNiKCJUQUdHSU5HIiwzNSksMjtjLnZhbHVlW2FdPWI7dmFyIGQ9bXIoYyk7ZCE9PTAmJnNiKCJUQUdHSU5HIiwzNik7cmV0dXJuIGR9CmZ1bmN0aW9uIG5yKGEpe2lmKCFhKXJldHVybiBzYigiVEFHR0lORyIsMjcpLHtlcnJvcjoxMH07dmFyIGI9bHIoKTtpZihiLmVycm9yIT09MClyZXR1cm4gc2IoIlRBR0dJTkciLDI5KSxiO2lmKCFiLnZhbHVlKXJldHVybiBzYigiVEFHR0lORyIsMzApLHtlcnJvcjoyfTtpZighKGEgaW4gYi52YWx1ZSkpcmV0dXJuIHNiKCJUQUdHSU5HIiwzMSkse3ZhbHVlOnZvaWQgMCxlcnJvcjoxNX07dmFyIGM9Yi52YWx1ZVthXTtyZXR1cm4gYz09PW51bGx8fGM9PT12b2lkIDB8fGM9PT0iIj8oc2IoIlRBR0dJTkciLDI4KSx7dmFsdWU6dm9pZCAwLGVycm9yOjExfSk6e3ZhbHVlOmMsZXJyb3I6MH19CmZ1bmN0aW9uIG9yKGEpe2lmKGEpe3ZhciBiPWxyKCExKTtiLmVycm9yIT09MD9zYigiVEFHR0lORyIsMzgpOmIudmFsdWU/YSBpbiBiLnZhbHVlPyhkZWxldGUgYi52YWx1ZVthXSxtcihiKSE9PTAmJnNiKCJUQUdHSU5HIiw0MSkpOnNiKCJUQUdHSU5HIiw0MCk6c2IoIlRBR0dJTkciLDM5KX1lbHNlIHNiKCJUQUdHSU5HIiwzNyl9CmZ1bmN0aW9uIGxyKGEpe2E9YT09PXZvaWQgMD8hMDphO2lmKCFCbChqcikpcmV0dXJuIHNiKCJUQUdHSU5HIiw0Mykse2Vycm9yOjN9O3RyeXtpZighQS5sb2NhbFN0b3JhZ2UpcmV0dXJuIHNiKCJUQUdHSU5HIiw0NCkse2Vycm9yOjF9fWNhdGNoKGYpe3JldHVybiBzYigiVEFHR0lORyIsNDUpLHtlcnJvcjoxNH19dmFyIGI9e3NjaGVtYToiZ2NsIix2ZXJzaW9uOjF9LGM9dm9pZCAwO3RyeXtjPUEubG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9nY2xfbHMiKX1jYXRjaChmKXtyZXR1cm4gc2IoIlRBR0dJTkciLDQ2KSx7ZXJyb3I6MTN9fXRyeXtpZihjKXt2YXIgZD1KU09OLnBhcnNlKGMpO2lmKGQmJnR5cGVvZiBkPT09Im9iamVjdCIpYj1kO2Vsc2UgcmV0dXJuIHNiKCJUQUdHSU5HIiw0Nykse2Vycm9yOjEyfX19Y2F0Y2goZil7cmV0dXJuIHNiKCJUQUdHSU5HIiw0OCkse2Vycm9yOjh9fWlmKGIuc2NoZW1hIT09ImdjbCIpcmV0dXJuIHNiKCJUQUdHSU5HIiw0OSkse2Vycm9yOjR9OwppZihiLnZlcnNpb24hPT0xKXJldHVybiBzYigiVEFHR0lORyIsNTApLHtlcnJvcjo1fTt0cnl7dmFyIGU9cHIoYik7YSYmZSYmbXIoe3ZhbHVlOmIsZXJyb3I6MH0pfWNhdGNoKGYpe3JldHVybiBzYigiVEFHR0lORyIsNDgpLHtlcnJvcjo4fX1yZXR1cm57dmFsdWU6YixlcnJvcjowfX0KZnVuY3Rpb24gcHIoYSl7aWYoIWF8fHR5cGVvZiBhIT09Im9iamVjdCIpcmV0dXJuITE7aWYoImV4cGlyZXMiaW4gYSYmInZhbHVlImluIGEpe3ZhciBiO3R5cGVvZiBhLmV4cGlyZXM9PT0ibnVtYmVyIj9iPWEuZXhwaXJlczpiPXR5cGVvZiBhLmV4cGlyZXM9PT0ic3RyaW5nIj9OdW1iZXIoYS5leHBpcmVzKTpOYU47aWYoaXNOYU4oYil8fCEoRGF0ZS5ub3coKTw9YikpcmV0dXJuIGEudmFsdWU9bnVsbCxhLmVycm9yPTksc2IoIlRBR0dJTkciLDU0KSwhMH1lbHNle2Zvcih2YXIgYz0hMSxkPW0oT2JqZWN0LmtleXMoYSkpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWM9cHIoYVtlLnZhbHVlXSl8fGM7cmV0dXJuIGN9cmV0dXJuITF9CmZ1bmN0aW9uIG1yKGEpe2lmKGEuZXJyb3IpcmV0dXJuIGEuZXJyb3I7aWYoIWEudmFsdWUpcmV0dXJuIHNiKCJUQUdHSU5HIiw0MiksMjt2YXIgYj1hLnZhbHVlLGM7dHJ5e2M9SlNPTi5zdHJpbmdpZnkoYil9Y2F0Y2goZCl7cmV0dXJuIHNiKCJUQUdHSU5HIiw1MiksNn10cnl7QS5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiX2djbF9scyIsYyl9Y2F0Y2goZCl7cmV0dXJuIHNiKCJUQUdHSU5HIiw1MyksN31yZXR1cm4gMH07dmFyIHFyPXt9LHJyPShxci5nY2xpZD0hMCxxci5kY2xpZD0hMCxxci5nYnJhaWQ9ITAscXIud2JyYWlkPSEwLHFyKSxzcj0vXlx3KyQvLHRyPS9eW1x3LV0rJC8sdXI9e30sdnI9KHVyLmF3PSJGUEdDTEFXIix1ciksd3I9e30seHI9KHdyLmFnPSJfYWciLHdyLmdiPSJfZ2IiLHdyLmF3PSJfYXciLHdyLmRjPSJfZGMiLHdyLmdmPSJfZ2YiLHdyLmhhPSJfaGEiLHdyLmdwPSJfZ3AiLHdyLmdzPSJfZ3MiLHdyKSx5cj0vXig/Ond3d1wuKT9nb29nbGUoPzpcLmNvbT8pPyg/OlwuW2Etel17Mn10Pyk/JC8senI9L153d3dcLmdvb2dsZWFkc2VydmljZXNcLmNvbSQvO2Z1bmN0aW9uIEFyKCl7cmV0dXJuWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl19ZnVuY3Rpb24gQnIoYSl7cmV0dXJuIVlmKDUpfHxCbChhKX1mdW5jdGlvbiBDcihhLGIpe2Z1bmN0aW9uIGMoKXt2YXIgZD1CcihiKTtkJiZhKCk7cmV0dXJuIGR9SGwoZnVuY3Rpb24oKXtjKCl8fElsKGMsYil9LGIpfQpmdW5jdGlvbiBEcihhKXtyZXR1cm4gRXIoYSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLmdjbGlkfSl9ZnVuY3Rpb24gRnIoYSl7cmV0dXJuIEdyKGEpLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYi5nY2xpZH0pLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5nY2xpZH0pfWZ1bmN0aW9uIEdyKGEsYil7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGM9SHIoYS5wcmVmaXgpLGQ9SXIoImdiIixjKSxlPUlyKCJhZyIsYyk7aWYoIWV8fCFkKXJldHVybltdO3ZhciBmPWZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbihuKXtuLnpnPWw7cmV0dXJuIG59fSxnPUVyKGQsYikubWFwKGYoImdiIikpLGg9SnIoZSkubWFwKGYoImFnIikpO3JldHVybiBnLmNvbmNhdChoKS5zb3J0KGZ1bmN0aW9uKGwsbil7cmV0dXJuIG4udGltZXN0YW1wLWwudGltZXN0YW1wfSl9CmZ1bmN0aW9uIEtyKGEsYixjLGQsZSl7dmFyIGY9Q2IoYSxmdW5jdGlvbihnKXtyZXR1cm4gZy5nY2xpZD09PWJ9KTtmPyhmLnRpbWVzdGFtcDxjJiYoZi50aW1lc3RhbXA9YyxmLm9kPWUpLGYubGFiZWxzPUxyKGYubGFiZWxzfHxbXSxkfHxbXSkpOmEucHVzaCh7dmVyc2lvbjoiMiIsZ2NsaWQ6Yix0aW1lc3RhbXA6YyxsYWJlbHM6ZCxvZDplfSl9ZnVuY3Rpb24gTXIoYSl7Zm9yKHZhciBiPXdxKGEsNSl8fFtdLGM9W10sZD1tKGIpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlLGc9ZixoPU5yKGYpO2gmJktyKGMsZy5rLGgsZy5ifHxbXSxmLnUpfXJldHVybiBjLnNvcnQoZnVuY3Rpb24obCxuKXtyZXR1cm4gbi50aW1lc3RhbXAtbC50aW1lc3RhbXB9KX0KZnVuY3Rpb24gRXIoYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz1bXTtPcihjLGEsMSk7aWYoYilpZihUYihhLCJfYXciKSl7dmFyIGQ9UHIoKTtkJiYoZC5vZD12b2lkIDAsZC5vYT1kLm9hfHxbMl0sUXIoYyxkKSk7T3IoYywiZ2NsX2F3IiwyKX1lbHNlIFRiKGEsIl9nYiIpJiZZZig2KSYmT3IoYywiZ2NsX2diIiwyKTtjLnNvcnQoZnVuY3Rpb24oZSxmKXtyZXR1cm4gZi50aW1lc3RhbXAtZS50aW1lc3RhbXB9KTtyZXR1cm4gUnIoYyl9ZnVuY3Rpb24gU3IoYSxiKXtmb3IodmFyIGM9W10sZD1tKGEpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO2MuaW5jbHVkZXMoZil8fGMucHVzaChmKX1mb3IodmFyIGc9bShiKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZTtjLmluY2x1ZGVzKGwpfHxjLnB1c2gobCl9cmV0dXJuIGN9CmZ1bmN0aW9uIFFyKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6Yztmb3IodmFyIGQsZSxmPW0oYSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWcudmFsdWU7aWYoaC5nY2xpZD09PWIuZ2NsaWQpe2Q9aDticmVha31oLnFhJiZiLnFhJiZoLnFhLmVxdWFscyhiLnFhKSYmKGU9aCl9aWYoZCl7dmFyIGwsbixwPShsPWQucWEpIT1udWxsP2w6bmV3IGVyLHE9KG49Yi5xYSkhPW51bGw/bjpuZXcgZXI7cC52YWx1ZXw9cS52YWx1ZTtkLnFhPXA7ZC50aW1lc3RhbXA8Yi50aW1lc3RhbXAmJihkLnRpbWVzdGFtcD1iLnRpbWVzdGFtcCxkLm9kPWIub2QpO2QubGFiZWxzPVNyKGQubGFiZWxzfHxbXSxiLmxhYmVsc3x8W10pO2Qub2E9U3IoZC5vYXx8W10sYi5vYXx8W10pfWVsc2UgYyYmZT9uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LGUsYik6YS5wdXNoKGIpfQpmdW5jdGlvbiBUcihhKXtpZighYSlyZXR1cm4gbmV3IGVyO3ZhciBiPW5ldyBlcjtpZihhPT09MSlyZXR1cm4gZnIoYiwyKSxmcihiLDMpLGI7ZnIoYixhKTtyZXR1cm4gYn0KZnVuY3Rpb24gUHIoKXt2YXIgYT1ucigiZ2NsaWQiKTtpZighYXx8YS5lcnJvcnx8IWEudmFsdWV8fHR5cGVvZiBhLnZhbHVlIT09Im9iamVjdCIpcmV0dXJuIG51bGw7dmFyIGI9YS52YWx1ZTt0cnl7aWYoISgidmFsdWUiaW4gYiYmYi52YWx1ZSl8fHR5cGVvZiBiLnZhbHVlIT09Im9iamVjdCIpcmV0dXJuIG51bGw7dmFyIGM9Yi52YWx1ZSxkPWMudmFsdWU7aWYoIWR8fCFkLm1hdGNoKHRyKSlyZXR1cm4gbnVsbDt2YXIgZT1jLmxpbmtEZWNvcmF0aW9uU291cmNlLGY9Yy5saW5rRGVjb3JhdGlvblNvdXJjZXMsZz1uZXcgZXI7dHlwZW9mIGU9PT0ibnVtYmVyIj9nPVRyKGUpOnR5cGVvZiBmPT09Im51bWJlciImJihnLnZhbHVlPWYpO3JldHVybnt2ZXJzaW9uOiIiLGdjbGlkOmQsdGltZXN0YW1wOk51bWJlcihjLmNyZWF0aW9uVGltZU1zKXx8MCxsYWJlbHM6W10scWE6ZyxvYTpbMl19fWNhdGNoKGgpe3JldHVybiBudWxsfX0KZnVuY3Rpb24gVXIoYSl7dmFyIGI9bnIoYSk7aWYoYi5lcnJvciE9PTApcmV0dXJuIG51bGw7dHJ5e3JldHVybiBiLnZhbHVlLnJlZHVjZShmdW5jdGlvbihjLGQpe2lmKCFkLnZhbHVlfHx0eXBlb2YgZC52YWx1ZSE9PSJvYmplY3QiKXJldHVybiBjO3ZhciBlPWQudmFsdWUsZj1lLnZhbHVlO2lmKCFmfHwhZi5tYXRjaCh0cikpcmV0dXJuIGM7dmFyIGc9bmV3IGVyLGg9ZS5saW5rRGVjb3JhdGlvblNvdXJjZXM7dHlwZW9mIGg9PT0ibnVtYmVyIiYmKGcudmFsdWU9aCk7dmFyIGw7Yy5wdXNoKHt2ZXJzaW9uOiIiLGdjbGlkOmYsdGltZXN0YW1wOk51bWJlcihlLmNyZWF0aW9uVGltZU1zKXx8MCxleHBpcmVzOk51bWJlcihkLmV4cGlyZXMpfHwwLGxhYmVsczoobD1lLmxhYmVscykhPW51bGw/bDpbXSxxYTpnLG9hOlsyXX0pO3JldHVybiBjfSxbXSl9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fQpmdW5jdGlvbiBPcihhLGIsYyl7aWYoYz09PTEpZm9yKHZhciBkPWNxKGIsQi5jb29raWUsdm9pZCAwLEFyKCkpLGU9bShkKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9VnIoZi52YWx1ZS5zcGxpdCgiLiIpKSxoPWcubGVuZ3RoPT09MD9udWxsOnt2ZXJzaW9uOmdbMF0sZ2NsaWQ6Z1syXSx0aW1lc3RhbXA6KE51bWJlcihnWzFdKXx8MCkqMUUzLGxhYmVsczpnLnNsaWNlKDMpfTtoIT1udWxsJiYoaC5vZD12b2lkIDAsaC5xYT1uZXcgZXIsaC5vYT1bY10sUXIoYSxoKSl9ZWxzZSBpZihjPT09Mil7dmFyIGw9VXIoYik7aWYobClmb3IodmFyIG49bShsKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSl7dmFyIHE9cC52YWx1ZTtxLm9kPXZvaWQgMDtxLm9hPXEub2E7UXIoYSxxKX19fQpmdW5jdGlvbiBacihhKXt2YXIgYj1FcihhKSxjPVVyKCJnY2xfZGMiKTtpZihjKWZvcih2YXIgZD1tKGMpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO2Yub2Q9dm9pZCAwO2Yub2E9Zi5vYXx8WzJdO1FyKGIsZil9Yi5zb3J0KGZ1bmN0aW9uKGcsaCl7dmFyIGw9Zy5vYSYmZy5vYS5pbmNsdWRlcygxKSxuPWgub2EmJmgub2EuaW5jbHVkZXMoMSk7cmV0dXJuIGwmJiFuPy0xOiFsJiZuPzE6aC50aW1lc3RhbXAtZy50aW1lc3RhbXB9KTtyZXR1cm4gUnIoYil9ZnVuY3Rpb24gSnIoYSl7cmV0dXJuIE1yKGEpLm1hcChmdW5jdGlvbihiKXtiLnFhPW5ldyBlcjtiLm9hPVsxXTtyZXR1cm4gYn0pfQpmdW5jdGlvbiBMcihhLGIpe2lmKCFhLmxlbmd0aClyZXR1cm4gYjtpZighYi5sZW5ndGgpcmV0dXJuIGE7dmFyIGM9e307cmV0dXJuIGEuY29uY2F0KGIpLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gYy5oYXNPd25Qcm9wZXJ0eShkKT8hMTpjW2RdPSEwfSl9ZnVuY3Rpb24gSHIoYSl7cmV0dXJuIGEmJnR5cGVvZiBhPT09InN0cmluZyImJmEubWF0Y2goc3IpP2E6Il9nY2wifWZ1bmN0aW9uICRyKGEsYil7aWYoYSl7dmFyIGM9e3ZhbHVlOmEscWE6bmV3IGVyfTtmcihjLnFhLGIpO3JldHVybiBjfX0KZnVuY3Rpb24gYXMoYSxiLGMpe3ZhciBkPVJqKGEpLGU9TGooZCwicXVlcnkiLCExLHZvaWQgMCwiZ2Nsc3JjIiksZj0kcihMaihkLCJxdWVyeSIsITEsdm9pZCAwLCJnY2xpZCIpLGM/NDoyKTtpZihiJiYoIWZ8fCFlKSl7dmFyIGc9ZC5oYXNoLnJlcGxhY2UoIiMiLCIiKTtmfHwoZj0kcihJaihnLCJnY2xpZCIsITEpLDMpKTtlfHwoZT1JaihnLCJnY2xzcmMiLCExKSl9cmV0dXJuIGYmJihlPT09dm9pZCAwfHxlPT09ImF3Inx8ZT09PSJhdy5kcyJ8fFlmKDgpJiZlPT09ImF3LmR2Iik/W2ZdOltdfQpmdW5jdGlvbiBicyhhLGIpe3ZhciBjPVJqKGEpLGQ9TGooYywicXVlcnkiLCExLHZvaWQgMCwiZ2NsaWQiKSxlPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbHNyYyIpLGY9TGooYywicXVlcnkiLCExLHZvaWQgMCwid2JyYWlkIik7Zj0kYihmKTt2YXIgZz1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJnYnJhaWQiKSxoPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsImdhZF9zb3VyY2UiKSxsPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsImRjbGlkIik7aWYoYiYmIShkJiZlJiZmJiZnKSl7dmFyIG49Yy5oYXNoLnJlcGxhY2UoIiMiLCIiKTtkPWR8fElqKG4sImdjbGlkIiwhMSk7ZT1lfHxJaihuLCJnY2xzcmMiLCExKTtmPWZ8fElqKG4sIndicmFpZCIsITEpO2c9Z3x8SWoobiwiZ2JyYWlkIiwhMSk7aD1ofHxJaihuLCJnYWRfc291cmNlIiwhMSl9cmV0dXJuIGNzKGQsZSxsLGYsZyxoKX0KZnVuY3Rpb24gZHMoYSxiLGMpe3ZhciBkPVJqKGEpLGU9TGooZCwicXVlcnkiLCExLHZvaWQgMCwiZ2Nsc3JjIiksZj0kcihMaihkLCJxdWVyeSIsITEsdm9pZCAwLCJnY2xpZCIpLGM/NDoyKSxnPSRyKExqKGQsInF1ZXJ5IiwhMSx2b2lkIDAsImRjbGlkIiksYz80OjIpO2lmKGImJighZXx8IWYpKXt2YXIgaD1kLmhhc2gucmVwbGFjZSgiIyIsIiIpO2Z8fChmPSRyKElqKGgsImdjbGlkIiwhMSksMykpO2V8fChlPUlqKGgsImdjbHNyYyIsITEpKX1yZXR1cm4gZiYmZSYmKGU9PT0iYXcuZHMifHxlPT09ImF3LmR2Inx8ZT09PSIzcC5kcyJ8fGU9PT0iZHMiKT9bZl06Zz9bZ106W119ZnVuY3Rpb24gZXMoKXtyZXR1cm4gYnMoQS5sb2NhdGlvbi5ocmVmLCEwKX0KZnVuY3Rpb24gY3MoYSxiLGMsZCxlLGYpe3ZhciBnPXt9LGg9ZnVuY3Rpb24obCxuKXtnW25dfHwoZ1tuXT1bXSk7Z1tuXS5wdXNoKGwpfTtnLmdjbGlkPWE7Zy5nY2xzcmM9YjtnLmRjbGlkPWM7aWYoYSE9PXZvaWQgMCYmYS5tYXRjaCh0cikpc3dpdGNoKGIpe2Nhc2Ugdm9pZCAwOmgoYSwiYXciKTticmVhaztjYXNlICJhdy5kcyI6aChhLCJhdyIpO2goYSwiZGMiKTticmVhaztjYXNlICJhdy5kdiI6WWYoOCkmJihoKGEsImF3IiksaChhLCJkYyIpKTticmVhaztjYXNlICJkcyI6aChhLCJkYyIpO2JyZWFrO2Nhc2UgIjNwLmRzIjpoKGEsImRjIik7YnJlYWs7Y2FzZSAiZ2YiOmgoYSwiZ2YiKTticmVhaztjYXNlICJoYSI6aChhLCJoYSIpfWMmJmgoYywiZGMiKTtkIT09dm9pZCAwJiZ0ci50ZXN0KGQpJiYoZy53YnJhaWQ9ZCxoKGQsImdiIikpO2UhPT12b2lkIDAmJnRyLnRlc3QoZSkmJihnLmdicmFpZD1lLGgoZSwiYWciKSk7ZiE9PXZvaWQgMCYmdHIudGVzdChmKSYmKGcuZ2FkX3NvdXJjZT0KZixoKGYsImdzIikpO3JldHVybiBnfWZ1bmN0aW9uIGZzKCl7Zm9yKHZhciBhPWVzKCksYj0hMCxjPW0oT2JqZWN0LmtleXMoYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWlmKGFbZC52YWx1ZV0hPT12b2lkIDApe2I9ITE7YnJlYWt9YiYmKGE9YnMoQS5kb2N1bWVudC5yZWZlcnJlciwhMSksYS5nYWRfc291cmNlPXZvaWQgMCk7cmV0dXJuIGF9ZnVuY3Rpb24gZ3MoYSl7dmFyIGI9ZnMoKTtocyhiLCExLGEpfQpmdW5jdGlvbiBpcyhhKXt2YXIgYj1hcyhBLmxvY2F0aW9uLmhyZWYsITAsITEpO2IubGVuZ3RofHwoYj1hcyhBLmRvY3VtZW50LnJlZmVycmVyLCExLCEwKSk7YT1hfHx7fTtqcyhhKTtpZihiLmxlbmd0aCl7dmFyIGM9YlswXSxkPU5iKCksZT11cShhLGQsITApLGY9QXIoKSxnPWZ1bmN0aW9uKCl7QnIoZikmJmUuZXhwaXJlcyE9PXZvaWQgMCYma3IoImdjbGlkIix7dmFsdWU6e3ZhbHVlOmMudmFsdWUsY3JlYXRpb25UaW1lTXM6ZCxsaW5rRGVjb3JhdGlvblNvdXJjZXM6Yy5xYS5nZXQoKX0sZXhwaXJlczpOdW1iZXIoZS5leHBpcmVzKX0pfTtIbChmdW5jdGlvbigpe2coKTtCcihmKXx8SWwoZyxmKX0sZil9fQpmdW5jdGlvbiBqcyhhKXt2YXIgYj1CLnJlZmVycmVyP0xqKFJqKEIucmVmZXJyZXIpLCJob3N0Iik6IiI7aWYoeXIudGVzdChiKXx8enIudGVzdChiKXx8a3MoKSl7dmFyIGM7YTp7Zm9yKHZhciBkPVJqKEEubG9jYXRpb24uaHJlZiksZT1KaihMaihkLCJxdWVyeSIpKSxmPW0oT2JqZWN0LmtleXMoZSkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO2lmKCFycltoXSl7dmFyIGw9ZVtoXVswXXx8IiIsbjtpZighbHx8bC5sZW5ndGg8NTB8fGwubGVuZ3RoPjIwMCluPSExO2Vsc2V7dmFyIHA9Z3IobCkscTtpZihwKWM6e3ZhciByPXA7aWYociYmci5sZW5ndGghPT0wKXt2YXIgdD0wO3RyeXtmb3IodmFyIHU9MTA7dDxyLmxlbmd0aCYmISh1LS08PTApOyl7dmFyIHY9aHIocix0KTtpZih2PT09dm9pZCAwKWJyZWFrO3ZhciB4PW0odikseT14Lm5leHQoKS52YWx1ZSx6PXgubmV4dCgpLnZhbHVlLEM9eSxEPXosST1DJjc7aWYoQz4+Mz09PTE2MzgyKXtpZihJIT09CjApYnJlYWs7dmFyIEc9aHIocixEKTtpZihHPT09dm9pZCAwKWJyZWFrO3E9bShHKS5uZXh0KCkudmFsdWU9PT0xO2JyZWFrIGN9dmFyIE47ZDp7dmFyIFM9dm9pZCAwLFc9cixlYT1EO3N3aXRjaChJKXtjYXNlIDA6Tj0oUz1ocihXLGVhKSk9PW51bGw/dm9pZCAwOlNbMV07YnJlYWsgZDtjYXNlIDE6Tj1lYSs4O2JyZWFrIGQ7Y2FzZSAyOnZhciBqYT1ocihXLGVhKTtpZihqYT09PXZvaWQgMClicmVhazt2YXIgZmE9bShqYSksc2E9ZmEubmV4dCgpLnZhbHVlO049ZmEubmV4dCgpLnZhbHVlK3NhO2JyZWFrIGQ7Y2FzZSA1Ok49ZWErNDticmVhayBkfU49dm9pZCAwfWlmKE49PT12b2lkIDB8fE4+ci5sZW5ndGh8fE48PXQpYnJlYWs7dD1OfX1jYXRjaChtYSl7fX1xPSExfWVsc2UgcT0hMTtuPXF9aWYobil7Yz1sO2JyZWFrIGF9fX1jPXZvaWQgMH12YXIgZGE9YztkYSYmbHMoImdjbF9hdyIsZGEsNyxhKX19CmZ1bmN0aW9uIGxzKGEsYixjLGQpe21zKGEsW3t2ZXJzaW9uOiIiLGdjbGlkOmIsdGltZXN0YW1wOk5iKCkscWE6VHIoYyl9XSxkKX0KZnVuY3Rpb24gbXMoYSxiLGMpe2M9Y3x8e307dmFyIGQ9QXIoKSxlPWZ1bmN0aW9uKCl7aWYoQnIoZCkmJmIubGVuZ3RoPjApe3ZhciBmPVVyKGEpfHxbXTtiLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIGg9dXEoYyxnLnRpbWVzdGFtcCwhMCk7aC5leHBpcmVzIT09dm9pZCAwJiZRcihmLHt2ZXJzaW9uOiIiLGdjbGlkOmcuZ2NsaWQsdGltZXN0YW1wOmcudGltZXN0YW1wLGV4cGlyZXM6TnVtYmVyKGguZXhwaXJlcykscWE6Zy5xYSxsYWJlbHM6Zy5sYWJlbHN9LCEwKX0pO2YubGVuZ3RoJiZrcihhLGYubWFwKGZ1bmN0aW9uKGcpe3ZhciBoPXt2YWx1ZTpnLmdjbGlkLGNyZWF0aW9uVGltZU1zOmcudGltZXN0YW1wLGxpbmtEZWNvcmF0aW9uU291cmNlczpnLnFhP2cucWEuZ2V0KCk6MH0sbDtpZigobD1nLmxhYmVscyk9PW51bGw/MDpsLmxlbmd0aCloLmxhYmVscz1nLmxhYmVscztyZXR1cm57dmFsdWU6aCxleHBpcmVzOk51bWJlcihnLmV4cGlyZXMpfX0pKX19O0hsKGZ1bmN0aW9uKCl7QnIoZCk/CmUoKTpJbChlLGQpfSxkKX0KZnVuY3Rpb24gaHMoYSxiLGMsZCxlKXtjPWN8fHt9O2U9ZXx8W107dmFyIGY9SHIoYy5wcmVmaXgpLGc9ZHx8TmIoKSxoPU1hdGgucm91bmQoZy8xRTMpLGw9QXIoKSxuPSExLHA9ITEscT1ZZig5KSxyPWZ1bmN0aW9uKCl7aWYoQnIobCkpe3ZhciB0PXVxKGMsZywhMCk7dC5NYz1sO2Zvcih2YXIgdT1mdW5jdGlvbihXLGVhKXt2YXIgamE9SXIoVyxmKTtqYSYmKG9xKGphLGVhLHQpLFchPT0iZ2IiJiYobj0hMCkpfSx2PWZ1bmN0aW9uKFcpe3ZhciBlYT1bIkdDTCIsaCxXXTtlLmxlbmd0aD4wJiZlYS5wdXNoKGUuam9pbigiLiIpKTtyZXR1cm4gZWEuam9pbigiLiIpfSx4PW0oWyJhdyIsImRjIiwiZ2YiLCJoYSIsImdwIl0pLHk9eC5uZXh0KCk7IXkuZG9uZTt5PXgubmV4dCgpKXt2YXIgej15LnZhbHVlO2Fbel0mJnUoeix2KGFbel1bMF0pKX1pZigoIW58fHEpJiZhLmdiKXt2YXIgQz1hLmdiWzBdLEQ9SXIoImdiIixmKTshYiYmRXIoRCkuc29tZShmdW5jdGlvbihXKXtyZXR1cm4gVy5nY2xpZD09PUMmJgpXLmxhYmVscyYmVy5sYWJlbHMubGVuZ3RoPjB9KXx8dSgiZ2IiLHYoQykpfX1pZighcCYmYS5nYnJhaWQmJkJyKCJhZF9zdG9yYWdlIikmJihwPSEwLCFufHxxKSl7dmFyIEk9YS5nYnJhaWQsRz1JcigiYWciLGYpO2lmKGJ8fCFKcihHKS5zb21lKGZ1bmN0aW9uKFcpe3JldHVybiBXLmdjbGlkPT09SSYmVy5sYWJlbHMmJlcubGFiZWxzLmxlbmd0aD4wfSkpe3ZhciBOPXt9LFM9KE4uaz1JLE4uaT0iIitoLE4uYj1lLE4pO0FxKEcsUyw1LGMsZyl9fW5zKGEsZixnLGMpfTtIbChmdW5jdGlvbigpe3IoKTtCcihsKXx8SWwocixsKX0sbCl9CmZ1bmN0aW9uIG5zKGEsYixjLGQpe2lmKGEuZ2FkX3NvdXJjZSE9PXZvaWQgMCYmQnIoImFkX3N0b3JhZ2UiKSl7dmFyIGU9cWQoKTtpZihlIT09InIiJiZlIT09ImgiKXt2YXIgZj1hLmdhZF9zb3VyY2UsZz1JcigiZ3MiLGIpO2lmKGcpe3ZhciBoPU1hdGguZmxvb3IoKE5iKCktKHBkKCl8fDApKS8xRTMpLGwsbj1pcigpLHA9e307bD0ocC5rPWYscC5pPSIiK2gscC51PW4scCk7QXEoZyxsLDUsZCxjKX19fX1mdW5jdGlvbiBvcyhhLGIsYyl7Zm9yKHZhciBkPXdxKGIsYyksZT0wO2U8ZC5sZW5ndGg7KytlKWlmKE5yKGRbZV0pPmEpcmV0dXJuITA7cmV0dXJuITF9CmZ1bmN0aW9uIHBzKGEpe3ZhciBiPXFzLGM9cnMoYS5wcmVmaXgpO0NyKGZ1bmN0aW9uKCl7Zm9yKHZhciBkPUhyKGEucHJlZml4KSxlPW0oYiksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWUsaD1jW2ddO2lmKGgpe3ZhciBsPU1hdGgubWluKHNzKGgpLE5iKCkpLG49dXEoYSxsLCEwKTtuLk1jPUFyKCk7dmFyIHA9SXIoZyxkKTtwJiZvcShwLGgsbil9fXZhciBxPVVxKCEwKTtocyhjcyhxLmdjbGlkLHEuZ2Nsc3JjKSwhMSxhKX0sQXIoKSl9CmZ1bmN0aW9uIHJzKGEpe3ZhciBiPVVxKCEwKSxjPUhyKGEpLGQ9e30sZTtmb3IoZSBpbiB4cilpZih4ci5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGY9ZSxnPUlyKGYsYyk7aWYoZyE9PXZvaWQgMCl7dmFyIGg9YltnXTtpZihoKXt2YXIgbD1zcyhoKSxuO2E6e2Zvcih2YXIgcD1NYXRoLm1pbihsLE5iKCkpfHxOYigpLHE9Y3EoZyxCLmNvb2tpZSx2b2lkIDAsQXIoKSkscj0wO3I8cS5sZW5ndGg7KytyKWlmKHNzKHFbcl0pPnApe249ITA7YnJlYWsgYX1uPSExfW58fChkW2ZdPWgpfX19cmV0dXJuIGR9CmZ1bmN0aW9uIHRzKGEpe3ZhciBiPVsiYWciXSxjPVVxKCEwKSxkPUhyKGEucHJlZml4KTtDcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8Yi5sZW5ndGg7KytlKXt2YXIgZj1JcihiW2VdLGQpO2lmKGYpe3ZhciBnPWNbZl07aWYoZyl7dmFyIGg9JHAoZyw1KTtpZihoKXt2YXIgbD1OcihoKTtsfHwobD1OYigpKTtpZihvcyhsLGYsNSkpYnJlYWs7aC5pPSIiK01hdGgucm91bmQobC8xRTMpO0FxKGYsaCw1LGEsbCl9fX19fSxbImFkX3N0b3JhZ2UiXSl9ZnVuY3Rpb24gSXIoYSxiKXt2YXIgYz14clthXTtpZihjIT09dm9pZCAwKXJldHVybiBiK2N9ZnVuY3Rpb24gc3MoYSl7cmV0dXJuIFZyKGEuc3BsaXQoIi4iKSkubGVuZ3RoIT09MD8oTnVtYmVyKGEuc3BsaXQoIi4iKVsxXSl8fDApKjFFMzowfWZ1bmN0aW9uIE5yKGEpe3JldHVybiBhPyhOdW1iZXIoYS5pKXx8MCkqMUUzOjB9CmZ1bmN0aW9uIFZyKGEpe3JldHVybiBhLmxlbmd0aDwzfHxhWzBdIT09IkdDTCImJmFbMF0hPT0iMSJ8fCEvXlxkKyQvLnRlc3QoYVsxXSl8fCF0ci50ZXN0KGFbMl0pP1tdOmF9ZnVuY3Rpb24gdXMoYSxiLGMsZCl7dmFyIGU9cXM7aWYoQXJyYXkuaXNBcnJheShhKSYmU3AoQSkpe3ZhciBmPUhyKGQpLGc9ZnVuY3Rpb24oKXtmb3IodmFyIGg9e30sbD0wO2w8ZS5sZW5ndGg7KytsKXt2YXIgbj1JcihlW2xdLGYpO2lmKG4pe3ZhciBwPWNxKG4sQi5jb29raWUsdm9pZCAwLEFyKCkpO3AubGVuZ3RoJiYoaFtuXT1wLnNvcnQoKVtwLmxlbmd0aC0xXSl9fXJldHVybiBofTtDcihmdW5jdGlvbigpe2FyKGcsYSxiLGMpfSxBcigpKX19CmZ1bmN0aW9uIHZzKGEsYixjKXt2YXIgZD1xcztpZihZZigxMykmJkFycmF5LmlzQXJyYXkoYSkmJlNwKEEpKXt2YXIgZT1mdW5jdGlvbigpe2Zvcih2YXIgZj17fSxnPTA7ZzxkLmxlbmd0aDsrK2cpe3ZhciBoPXZyW2RbZ11dO2lmKGgpe3ZhciBsPWNxKGgsQi5jb29raWUsdm9pZCAwLEFyKCkpO2lmKGwubGVuZ3RoKXtmb3IodmFyIG49dm9pZCAwLHA9MCxxPW0obCkscj1xLm5leHQoKTshci5kb25lO3I9cS5uZXh0KCkpe3ZhciB0PXIudmFsdWUsdT0kcCh0LDQpO2lmKHUmJih1Lm09PT0iMSJ8fFlmKDE2KSkpe3ZhciB2PU5yKHUpO3Y+PXAmJihwPXYsbj10KX19biYmKGZbaF09bil9fX1yZXR1cm4gZn07Q3IoZnVuY3Rpb24oKXthcihlLGEsYixjKX0sQXIoKSl9fQpmdW5jdGlvbiB3cyhhLGIsYyxkKXtpZihBcnJheS5pc0FycmF5KGEpJiZTcChBKSl7dmFyIGU9WyJhZyJdLGY9SHIoZCksZz1mdW5jdGlvbigpe2Zvcih2YXIgaD17fSxsPTA7bDxlLmxlbmd0aDsrK2wpe3ZhciBuPUlyKGVbbF0sZik7aWYoIW4pcmV0dXJue307dmFyIHA9d3Eobiw1KTtpZihwLmxlbmd0aCl7dmFyIHE9cC5zb3J0KGZ1bmN0aW9uKHIsdCl7cmV0dXJuIE5yKHQpLU5yKHIpfSlbMF07aFtuXT1hcShxLDUpfX1yZXR1cm4gaH07Q3IoZnVuY3Rpb24oKXthcihnLGEsYixjKX0sWyJhZF9zdG9yYWdlIl0pfX1mdW5jdGlvbiBScihhKXtyZXR1cm4gYS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIHRyLnRlc3QoYi5nY2xpZCl9KX0KZnVuY3Rpb24geHMoYSxiKXtpZihTcChBKSl7Zm9yKHZhciBjPUhyKGIucHJlZml4KSxkPXt9LGU9MDtlPGEubGVuZ3RoO2UrKyl4clthW2VdXSYmKGRbYVtlXV09eHJbYVtlXV0pO0NyKGZ1bmN0aW9uKCl7R2IoZCxmdW5jdGlvbihmLGcpe3ZhciBoPWNxKGMrZyxCLmNvb2tpZSx2b2lkIDAsQXIoKSk7aC5zb3J0KGZ1bmN0aW9uKHQsdSl7cmV0dXJuIHNzKHUpLXNzKHQpfSk7aWYoaC5sZW5ndGgpe3ZhciBsPWhbMF0sbj1zcyhsKSxwPVZyKGwuc3BsaXQoIi4iKSkubGVuZ3RoIT09MD9sLnNwbGl0KCIuIikuc2xpY2UoMyk6W10scT17fSxyO3I9VnIobC5zcGxpdCgiLiIpKS5sZW5ndGghPT0wP2wuc3BsaXQoIi4iKVsyXTp2b2lkIDA7cVtmXT1bcl07aHMocSwhMCxiLG4scCl9fSl9LEFyKCkpfX0KZnVuY3Rpb24geXMoYSl7dmFyIGI9WyJhZyJdLGM9WyJnYnJhaWQiXTtDcihmdW5jdGlvbigpe2Zvcih2YXIgZD1IcihhLnByZWZpeCksZT0wO2U8Yi5sZW5ndGg7KytlKXt2YXIgZj1JcihiW2VdLGQpO2lmKCFmKWJyZWFrO3ZhciBnPXdxKGYsNSk7aWYoZy5sZW5ndGgpe3ZhciBoPWcuc29ydChmdW5jdGlvbihxLHIpe3JldHVybiBOcihyKS1OcihxKX0pWzBdLGw9TnIoaCksbj1oLmIscD17fTtwW2NbZV1dPWguaztocyhwLCEwLGEsbCxuKX19fSxbImFkX3N0b3JhZ2UiXSl9ZnVuY3Rpb24genMoYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYylpZihhW2JbY11dKXJldHVybiEwO3JldHVybiExfQpmdW5jdGlvbiBBcyhhKXtmdW5jdGlvbiBiKGgsbCxuKXtuJiYoaFtsXT1uKX1pZihFbCgpKXt2YXIgYz1lcygpLGQ7YS5pbmNsdWRlcygiZ2FkX3NvdXJjZSIpJiYoZD1jLmdhZF9zb3VyY2UhPT12b2lkIDA/Yy5nYWRfc291cmNlOlVxKCExKS5fZ3MpO2lmKHpzKGMsYSl8fGQpe3ZhciBlPXt9O2IoZSwiZ2NsaWQiLGMuZ2NsaWQpO2IoZSwiZGNsaWQiLGMuZGNsaWQpO2IoZSwiZ2Nsc3JjIixjLmdjbHNyYyk7YihlLCJ3YnJhaWQiLGMud2JyYWlkKTtiKGUsImdicmFpZCIsYy5nYnJhaWQpO2JyKGZ1bmN0aW9uKCl7cmV0dXJuIGV9LDMpO3ZhciBmPXt9LGc9KGYuX3VwPSIxIixmKTtiKGcsIl9ncyIsZCk7YnIoZnVuY3Rpb24oKXtyZXR1cm4gZ30sMSl9fX1mdW5jdGlvbiBrcygpe3ZhciBhPVJqKEEubG9jYXRpb24uaHJlZik7cmV0dXJuIExqKGEsInF1ZXJ5IiwhMSx2b2lkIDAsImdhZF9zb3VyY2UiKX0KZnVuY3Rpb24gQnMoYSl7aWYoIVlmKDEpKXJldHVybiBudWxsO3ZhciBiPVVxKCEwKS5nYWRfc291cmNlO2lmKGIhPW51bGwpcmV0dXJuIEEubG9jYXRpb24uaGFzaD0iIixiO2lmKFlmKDIpKXtiPWtzKCk7aWYoYiE9bnVsbClyZXR1cm4gYjt2YXIgYz1lcygpO2lmKHpzKGMsYSkpcmV0dXJuIjAifXJldHVybiBudWxsfWZ1bmN0aW9uIENzKGEpe3ZhciBiPUJzKGEpO2IhPW51bGwmJmJyKGZ1bmN0aW9uKCl7dmFyIGM9e307cmV0dXJuIGMuZ2FkX3NvdXJjZT1iLGN9LDQpfQpmdW5jdGlvbiBEcyhhLGIsYyl7dmFyIGQ9W107aWYoYi5sZW5ndGg9PT0wKXJldHVybiBkO2Zvcih2YXIgZT17fSxmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBnPWJbZl0saD1nLnpnP2cuemc6ImdjbCI7aWYoKGcubGFiZWxzfHxbXSkuaW5kZXhPZihjKT09PS0xKXthLnB1c2goMCk7dmFyIGw9ITEsbj12b2lkIDA7aWYoKG49Zy5vYSk9PW51bGw/MDpuLmluY2x1ZGVzKDIpKWw9ITA7dmFyIHA9dm9pZCAwOygocD1nLm9hKT09bnVsbD8wOnAuaW5jbHVkZXMoMSkpJiYhZVtoXSYmKGw9ITAsZVtoXT0hMCk7bCYmZC5wdXNoKGcpfWVsc2V7YS5wdXNoKDEpO3ZhciBxPXZvaWQgMDtpZigocT1nLm9hKT09bnVsbD8wOnEuaW5jbHVkZXMoMSkpZVtoXT0hMH19cmV0dXJuIGR9CmZ1bmN0aW9uIEVzKGEsYixjLGQsZSl7ZT1lPT09dm9pZCAwPyExOmU7dmFyIGY9W107Yz1jfHx7fTtpZighQnIoQXIoKSkpcmV0dXJuIGY7dmFyIGc9RXIoYSxlKSxoPURzKGYsZyxiKTtpZihoLmxlbmd0aCYmIWQpe2Zvcih2YXIgbD1bXSxuPSExLHA9bShoKSxxPXAubmV4dCgpOyFxLmRvbmU7cT1wLm5leHQoKSl7dmFyIHI9cS52YWx1ZSx0PXIsdT10LnZlcnNpb24sdj10LmdjbGlkLHg9dC50aW1lc3RhbXAseT10Lm9hLHo9KHQubGFiZWxzfHxbXSkuY29uY2F0KFtiXSksQz12b2lkIDA7aWYoKChDPXkpPT1udWxsPzA6Qy5pbmNsdWRlcygxKSkmJiFuKXt2YXIgRD1bdSxNYXRoLnJvdW5kKHgvMUUzKSx2XS5jb25jYXQoeikuam9pbigiLiIpLEk9dXEoYyx4LCEwKTtJLk1jPUFyKCk7b3EoYSxELEkpO249ITB9dmFyIEc9dm9pZCAwO2UmJigoRz15KT09bnVsbD8wOkcuaW5jbHVkZXMoMikpJiZsLnB1c2gobmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxyLHtsYWJlbHM6en0pKX1sLmxlbmd0aCYmCm1zKCJnY2xfZ2IiLGwsYyl9cmV0dXJuIGZ9CmZ1bmN0aW9uIEZzKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6Yzt2YXIgZD1bXTtiPWJ8fHt9O3ZhciBlPUdyKGIsYyksZj1EcyhkLGUsYSk7aWYoZi5sZW5ndGgpe2Zvcih2YXIgZz1bXSxoPXt9LGw9bShmKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZSxxPUhyKGIucHJlZml4KSxyPUlyKHAuemcscSk7aWYoIXIpcmV0dXJuIGQ7dmFyIHQ9cCx1PXQudmVyc2lvbix2PXQuZ2NsaWQseD10LnRpbWVzdGFtcCx5PXQub2Esej1NYXRoLnJvdW5kKHgvMUUzKSxDPUxyKHQubGFiZWxzfHxbXSxbYV0pLEQ9dm9pZCAwO2lmKChEPXkpPT1udWxsPzA6RC5pbmNsdWRlcygxKSlpZihwLnpnPT09ImFnIiYmIWguYWcpe3ZhciBJPXt9LEc9KEkuaz12LEkuaT0iIit6LEkuYj1DLEkpO0FxKHIsRyw1LGIseCk7aC5hZz0hMH1lbHNlIGlmKHAuemc9PT0iZ2IiJiYhaC5nYil7dmFyIE49W3Useix2XS5jb25jYXQoQykuam9pbigiLiIpLFM9dXEoYix4LCEwKTtTLk1jPQpBcigpO29xKHIsTixTKTtoLmdiPSEwfXZhciBXPXZvaWQgMDtjJiYoKFc9eSk9PW51bGw/MDpXLmluY2x1ZGVzKDIpKSYmZy5wdXNoKG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scCx7bGFiZWxzOkN9KSl9Zy5sZW5ndGgmJm1zKCJnY2xfZ2IiLGcsYil9cmV0dXJuIGR9ZnVuY3Rpb24gR3MoYSxiKXt2YXIgYz1IcihiKSxkPUlyKGEsYyk7aWYoIWQpcmV0dXJuIDA7dmFyIGU7ZT1hPT09ImFnIj9KcihkKTpFcihkKTtmb3IodmFyIGY9MCxnPTA7ZzxlLmxlbmd0aDtnKyspZj1NYXRoLm1heChmLGVbZ10udGltZXN0YW1wKTtyZXR1cm4gZn1mdW5jdGlvbiBIcyhhKXtmb3IodmFyIGI9MCxjPW0oT2JqZWN0LmtleXMoYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWZvcih2YXIgZT1hW2QudmFsdWVdLGY9MDtmPGUubGVuZ3RoO2YrKyliPU1hdGgubWF4KGIsTnVtYmVyKGVbZl0udGltZXN0YW1wKSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIElzKGEpe3ZhciBiPU1hdGgubWF4KEdzKCJhdyIsYSksSHMoQnIoQXIoKSk/UnAoKTp7fSkpLGM9TWF0aC5tYXgoR3MoImdiIixhKSxIcyhCcihBcigpKT9ScCgiX2dhY19nYiIsITApOnt9KSk7Yz1NYXRoLm1heChjLEdzKCJhZyIsYSkpO3JldHVybiBjPmJ9O3ZhciBKcz1SZWdFeHAoIl5VQS1cXGQrLVxcZCslM0FbXFx3LV0rKD86JTJDW1xcdy1dKykqKD86JTNCVUEtXFxkKy1cXGQrJTNBW1xcdy1dKyg/OiUyQ1tcXHctXSspKikqJCIpLEtzPS9efj9bXHctXSsoPzpcLn4/W1x3LV0rKSokLyxMcz0vXlxkK1wuZmxzXC5kb3VibGVjbGlja1wubmV0JC8sTXM9LztnYWM9KFteOz9dKykvLE5zPS87Z2FjZ2I9KFteOz9dKykvOwpmdW5jdGlvbiBPcyhhLGIpe2lmKExzLnRlc3QoQi5sb2NhdGlvbi5ob3N0KSl7dmFyIGM9Qi5sb2NhdGlvbi5ocmVmLm1hdGNoKGIpO3JldHVybiBjJiZjLmxlbmd0aD09PTImJmNbMV0ubWF0Y2goSnMpP0tqKGNbMV0pfHwiIjoiIn1mb3IodmFyIGQ9W10sZT1tKE9iamVjdC5rZXlzKGEpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7Zm9yKHZhciBnPWYudmFsdWUsaD1bXSxsPWFbZ10sbj0wO248bC5sZW5ndGg7bisrKWgucHVzaChsW25dLmdjbGlkKTtkLnB1c2goZysiOiIraC5qb2luKCIsIikpfXJldHVybiBkLmxlbmd0aD4wP2Quam9pbigiOyIpOiIifQpmdW5jdGlvbiBQcyhhLGIsYyl7Zm9yKHZhciBkPUJyKEFyKCkpP1JwKCJfZ2FjX2diIiwhMCk6e30sZT1bXSxmPSExLGc9bShPYmplY3Qua2V5cyhkKSksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciBsPWgudmFsdWUsbj1FcygiX2dhY19nYl8iK2wsYSxiLGMpO2Y9Znx8bi5sZW5ndGghPT0wJiZuLnNvbWUoZnVuY3Rpb24ocCl7cmV0dXJuIHA9PT0xfSk7ZS5wdXNoKGwrIjoiK24uam9pbigiLCIpKX1yZXR1cm57UnI6Zj9lLmpvaW4oIjsiKToiIixRcjpPcyhkLE5zKX19ZnVuY3Rpb24gUXMoYSl7dmFyIGI9Qi5sb2NhdGlvbi5ocmVmLm1hdGNoKG5ldyBSZWdFeHAoIjsiK2ErIj0oW147P10rKSIpKTtyZXR1cm4gYiYmYi5sZW5ndGg9PT0yJiZiWzFdLm1hdGNoKEtzKT9iWzFdOnZvaWQgMH0KZnVuY3Rpb24gUnMoYSl7dmFyIGI9e30sYyxkLGU7THMudGVzdChCLmxvY2F0aW9uLmhvc3QpJiYoYz1RcygiZ2NsZ3MiKSxkPVFzKCJnY2xzdCIpLGU9UXMoImdjbGxwIikpO2lmKGMmJmQmJmUpYi5FZz1jLGIuV2g9ZCxiLlVoPWU7ZWxzZXt2YXIgZj1OYigpLGc9TXIoKGF8fCJfZ2NsIikrIl9ncyIpLGg9Zy5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAuZ2NsaWR9KSxsPWcubWFwKGZ1bmN0aW9uKHApe3JldHVybiBmLXAudGltZXN0YW1wfSksbj1nLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcC5vZH0pO2gubGVuZ3RoPjAmJmwubGVuZ3RoPjAmJm4ubGVuZ3RoPjAmJihiLkVnPWguam9pbigiLiIpLGIuV2g9bC5qb2luKCIuIiksYi5VaD1uLmpvaW4oIi4iKSl9cmV0dXJuIGJ9CmZ1bmN0aW9uIFNzKGEsYil7dmFyIGM9YS5zcGxpdCgiLiIpLGQ9Yj9iLnNwbGl0KCIuIik6W10sZT1kLmxlbmd0aD09PWMubGVuZ3RoP2Q6dm9pZCAwO3JldHVybiBjLm1hcChmdW5jdGlvbihmLGcpe3ZhciBoPXtnY2xpZDpmfTtpZihlKXt2YXIgbD1lW2ddLnNwbGl0KCJfIik7aWYobC5sZW5ndGg9PT0yKXtoLnFhPW5ldyBlcihOdW1iZXIobFswXSkpO3ZhciBuO3ZhciBwPU51bWJlcihsWzFdKTtpZihwPT09MCluPVswXTtlbHNle3ZhciBxPVtdO3AmMSYmcS5wdXNoKDEpO3AmMiYmcS5wdXNoKDIpO3AmNCYmcS5wdXNoKDMpO3AmOCYmcS5wdXNoKDQpO3AmMTYmJnEucHVzaCg1KTtuPXF9aC5vYT1ufX1yZXR1cm4gaH0pfQpmdW5jdGlvbiBUcyhhLGIsYyxkKXtkPWQ9PT12b2lkIDA/ITE6ZDtpZihMcy50ZXN0KEIubG9jYXRpb24uaG9zdCkpe3ZhciBlPVFzKGMpO2lmKGUpe2lmKFlmKDE3KSl7dmFyIGY9UXMoYysiX3NyYyIpO3JldHVybiBTcyhlLGYpfWlmKGQpe3ZhciBnPW5ldyBlcjtmcihnLDIpO2ZyKGcsMyk7cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJue2djbGlkOnIscWE6ZyxvYTpbMV19fSl9cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJue2djbGlkOnIscWE6bmV3IGVyLG9hOlsxXX19KX19ZWxzZXtpZihiPT09ImdjbGlkIil7Zm9yKHZhciBoPUVyKChhfHwiX2djbCIpKyJfYXciLGQpLGw9TnVtYmVyKFhmWzRdPT09dm9pZCAwPzA6WGZbNF0pLG49bShVcygpKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSl7dmFyIHE9cC52YWx1ZTtxLnRpbWVzdGFtcD5sJiZRcihoLHEpfXJldHVybiBofWlmKGI9PT0id2JyYWlkIilyZXR1cm4gRXIoKGF8fAoiX2djbCIpKyJfZ2IiLGQpO2lmKGI9PT0iYnJhaWRzIilyZXR1cm4gR3Ioe3ByZWZpeDphfSxkKX1yZXR1cm5bXX1mdW5jdGlvbiBVcygpe3JldHVybih3cSh2ci5hdyw0KXx8W10pLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5tPT09IjEifSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybntnY2xpZDphLmssdGltZXN0YW1wOk51bWJlcihhLmkpLHZlcnNpb246IiIsb2E6WzVdfX0pfWZ1bmN0aW9uIFZzKGEpe2Zvcih2YXIgYj0wLGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTtlPjAmJihifD0xPDxlLTEpfXJldHVybiBiLnRvU3RyaW5nKCl9ZnVuY3Rpb24gV3MoYSl7cmV0dXJuIExzLnRlc3QoQi5sb2NhdGlvbi5ob3N0KT8hKFFzKCJnY2xhdyIpfHxRcygiZ2FjIikpOklzKGEpfQpmdW5jdGlvbiBYcyhhLGIsYyxkKXtkPWQ9PT12b2lkIDA/ITE6ZDt2YXIgZTtlPWM/RnMoYSxiLGQpOkVzKChiJiZiLnByZWZpeHx8Il9nY2wiKSsiX2diIixhLGIsdm9pZCAwLGQpO3JldHVybiBlLmxlbmd0aD09PTB8fGUuZXZlcnkoZnVuY3Rpb24oZil7cmV0dXJuIGY9PT0wfSk/IiI6ZS5qb2luKCIuIil9Owp2YXIgWXM9ZnVuY3Rpb24oYSl7dmFyIGI7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGM9a2ooImFkc19wYWdldmlldyIsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2lmKGNbYV0pcmV0dXJuITE7Ynx8KGNbYV09ITApO3JldHVybiEwfSxacz1mdW5jdGlvbihhKXtyZXR1cm4gU2ooYSwiZ2NsaWQgZGNsaWQgZ2JyYWlkIHdicmFpZCBnY2xhdyBnY2xkYyBnY2xoYSBnY2xnZiBnY2xnYiBfZ2wiLnNwbGl0KCIgIiksIjAiKX0sYXQ9ZnVuY3Rpb24oKXt2YXIgYT1SaihBLmxvY2F0aW9uLmhyZWYpLGI9dm9pZCAwLGM9dm9pZCAwLGQ9TGooYSwicXVlcnkiLCExLHZvaWQgMCwiZ2FkX3NvdXJjZSIpLGU9TGooYSwicXVlcnkiLCExLHZvaWQgMCwiZ2FkX2NhbXBhaWduaWQiKSxmLGc9YS5oYXNoLnJlcGxhY2UoIiMiLCIiKS5tYXRjaCgkcyk7Zj1nP2dbMV06dm9pZCAwO2QmJmY/KGI9ZCxjPTEpOmQ/KGI9ZCxjPTIpOmYmJihiPWYsYz0zKTtyZXR1cm57RGc6YixTcjpjLFRoOmV9fSxidD1mdW5jdGlvbihhKXt2YXIgYj0KT3AoITEpPT09MT9BLnRvcC5sb2NhdGlvbi5ocmVmOkEubG9jYXRpb24uaHJlZjtyZXR1cm4gYShiKX0sY3Q9ZnVuY3Rpb24oYSl7dmFyIGI9W107R2IoYSxmdW5jdGlvbihjLGQpe2Q9UnIoZCk7Zm9yKHZhciBlPVtdLGY9MDtmPGQubGVuZ3RoO2YrKyllLnB1c2goZFtmXS5nY2xpZCk7ZS5sZW5ndGgmJmIucHVzaChjKyI6IitlLmpvaW4oIiwiKSl9KTtyZXR1cm4gYi5qb2luKCI7Iil9LGV0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1kdChhKTtpZihkKXJldHVybiBkO3ZhciBlPUhyKGIpO2lmKGU9PT0iX2djbCIpe3ZhciBmPSFYbyhmcCkmJmMsZz1bXTthPT09ImF3Ij9nPWFzKEEubG9jYXRpb24uaHJlZiwhMCwhMSk6YT09PSJkYyImJihnPWRzKEEubG9jYXRpb24uaHJlZiwhMCwhMSkpO2lmKGcubGVuZ3RoPjApcmV0dXJuIGY/W3t2ZXJzaW9uOiJHQ0wiLHRpbWVzdGFtcDowLGdjbGlkOiIwIn1dOmcubWFwKGZ1bmN0aW9uKGwpe3JldHVybnt2ZXJzaW9uOiJHQ0wiLHRpbWVzdGFtcDowLApnY2xpZDpsLnZhbHVlLHFhOmwucWEsb2E6WzFdfX0pfXZhciBoPUlyKGEsZSk7cmV0dXJuIGg/YT09PSJhdyI/RXIoaCxNKDU2MikpOlpyKGgpOltdfSxkdD1mdW5jdGlvbihhKXt2YXIgYj1UaigiZ2NsIithKSxjPWE9PT0iZGMifHxhPT09ImF3Ij9UaigiZ2NsIithKyJfc3JjIik6dm9pZCAwO2lmKGIpcmV0dXJuIFNzKGIsYyl9LGZ0PWZ1bmN0aW9uKGEsYixjKXtpZihhPT09ImF3Inx8YT09PSJkYyJ8fGE9PT0iZ2IiKXt2YXIgZD1UaigiZ2NsIithKTtpZihkKXJldHVybiBkLnNwbGl0KCIuIil9dmFyIGU9SHIoYik7aWYoZT09PSJfZ2NsIil7dmFyIGY9IVhvKGZwKSYmYyxnO2c9ZXMoKVthXXx8W107aWYoZy5sZW5ndGg+MClyZXR1cm4gZj9bIjAiXTpnfXZhciBoPUlyKGEsZSk7cmV0dXJuIGg/RHIoaCk6W119LGd0PWZ1bmN0aW9uKGEsYixjKXtpZighUihhLGIpfHwhUihhLGMpKXJldHVybiIiO3ZhciBkPVIoYSxiKS5zcGxpdCgiLiIpLGU9UihhLGMpLnNwbGl0KCIuIik7cmV0dXJuIGQubGVuZ3RoJiYKZS5sZW5ndGgmJmQubGVuZ3RoPT09ZS5sZW5ndGgmJmRbMF0mJmVbMF0/ZC5tYXAoZnVuY3Rpb24oZixnKXtyZXR1cm4gZisiXyIrZVtnXX0pLmpvaW4oIi4iKToiIn0sJHM9L15nYWRfc291cmNlW189XShcZCspJC87ZnVuY3Rpb24gaHQoYSxiLGMpe3ZhciBkPVIoYSxGLkQuVGEpO2lmKGQmJnR5cGVvZiBkPT09Im9iamVjdCIpZm9yKHZhciBlPW0oT2JqZWN0LmtleXMoZCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlLGg9ZFtnXTtpZihoIT09dm9pZCAwKXtoPT09bnVsbCYmKGg9IiIpO3ZhciBsPSJnYXAuIitnLG49U3RyaW5nKGgpO2M/YyhsLG4pOmJbbF09bn19fTt2YXIgaXQ9ITEsanQ9W107ZnVuY3Rpb24ga3QoKXtpZighaXQpe2l0PSEwO2Zvcih2YXIgYT1qdC5sZW5ndGgtMTthPj0wO2EtLSlqdFthXSgpO2p0PVtdfX07ZnVuY3Rpb24gbHQoYSl7dmFyIGI9W10sYz0wLGQ7Zm9yKGQgaW4gYSliW2MrK109YVtkXTtyZXR1cm4gYn07ZnVuY3Rpb24gbXQoYSxiLGMpe3JldHVybiB0eXBlb2YgYS5hZGRFdmVudExpc3RlbmVyPT09ImZ1bmN0aW9uIj8oYS5hZGRFdmVudExpc3RlbmVyKGIsYywhMSksITApOiExfWZ1bmN0aW9uIG50KGEsYixjKXt0eXBlb2YgYS5yZW1vdmVFdmVudExpc3RlbmVyPT09ImZ1bmN0aW9uIiYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9O2Z1bmN0aW9uIG90KGEsYixjLGQpe2Q9ZD09PXZvaWQgMD8hMTpkO2EuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzfHwoYS5nb29nbGVfaW1hZ2VfcmVxdWVzdHM9W10pO3ZhciBlPVBwKGEuZG9jdW1lbnQpO2lmKGMpe3ZhciBmPWZ1bmN0aW9uKCl7aWYoYyl7dmFyIGc9YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHMsaD1EYyhnLGUpO2g+PTAmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChnLGgsMSl9bnQoZSwibG9hZCIsZik7bnQoZSwiZXJyb3IiLGYpfTttdChlLCJsb2FkIixmKTttdChlLCJlcnJvciIsZil9ZCYmKGUuYXR0cmlidXRpb25TcmM9IiIpO2Uuc3JjPWI7YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHMucHVzaChlKX0KZnVuY3Rpb24gcHQoYSl7dmFyIGI7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGM9Imh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9dGNmZSI7SXAoYSxmdW5jdGlvbihkLGUpe2lmKGR8fGQ9PT0wKWMrPSImIitlKyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKX0pO3F0KGMsYil9CmZ1bmN0aW9uIHF0KGEsYil7dmFyIGM9d2luZG93LGQ7Yj1iPT09dm9pZCAwPyExOmI7ZD1kPT09dm9pZCAwPyExOmQ7aWYoYy5mZXRjaCl7dmFyIGU9e2tlZXBhbGl2ZTohMCxjcmVkZW50aWFsczoiaW5jbHVkZSIscmVkaXJlY3Q6ImZvbGxvdyIsbWV0aG9kOiJnZXQiLG1vZGU6Im5vLWNvcnMifTtkJiYoZS5tb2RlPSJjb3JzIiwic2V0QXR0cmlidXRpb25SZXBvcnRpbmciaW4gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlP2UuYXR0cmlidXRpb25SZXBvcnRpbmc9e2V2ZW50U291cmNlRWxpZ2libGU6InRydWUiLHRyaWdnZXJFbGlnaWJsZToiZmFsc2UifTplLmhlYWRlcnM9eyJBdHRyaWJ1dGlvbi1SZXBvcnRpbmctRWxpZ2libGUiOiJldmVudC1zb3VyY2UifSk7Yy5mZXRjaChhLGUpfWVsc2Ugb3QoYyxhLGI9PT12b2lkIDA/ITE6YixkPT09dm9pZCAwPyExOmQpfTtmdW5jdGlvbiBydCgpe3RoaXMuZmE9dGhpcy5mYTt0aGlzLlI9dGhpcy5SfXJ0LnByb3RvdHlwZS5mYT0hMTtydC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZmF8fCh0aGlzLmZhPSEwLHRoaXMuTigpKX07cnQucHJvdG90eXBlW1N5bWJvbC5kaXNwb3NlXT1mdW5jdGlvbigpe3RoaXMuZGlzcG9zZSgpfTtydC5wcm90b3R5cGUuYWRkT25EaXNwb3NlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLmZhP2IhPT12b2lkIDA/YS5jYWxsKGIpOmEoKToodGhpcy5SfHwodGhpcy5SPVtdKSxiJiYoYT1hLmJpbmQoYikpLHRoaXMuUi5wdXNoKGEpKX07cnQucHJvdG90eXBlLk49ZnVuY3Rpb24oKXtpZih0aGlzLlIpZm9yKDt0aGlzLlIubGVuZ3RoOyl0aGlzLlIuc2hpZnQoKSgpfTtmdW5jdGlvbiBzdChhKXthLmFkZHRsQ29uc2VudD09PXZvaWQgMHx8dmYoYS5hZGR0bENvbnNlbnQpfHwoYS5hZGR0bENvbnNlbnQ9dm9pZCAwKTthLmdkcHJBcHBsaWVzPT09dm9pZCAwfHx3ZihhLmdkcHJBcHBsaWVzKXx8KGEuZ2RwckFwcGxpZXM9dm9pZCAwKTtyZXR1cm4gYS50Y1N0cmluZyE9PXZvaWQgMCYmIXZmKGEudGNTdHJpbmcpfHxhLmxpc3RlbmVySWQhPT12b2lkIDAmJiF1ZihhLmxpc3RlbmVySWQpPzI6YS5jbXBTdGF0dXMmJmEuY21wU3RhdHVzIT09ImVycm9yIj8wOjN9dmFyIHR0PWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7cnQuY2FsbCh0aGlzKTt0aGlzLkg9bnVsbDt0aGlzLmphPXt9O3RoaXMueWE9MDt0aGlzLlo9bnVsbDt0aGlzLks9YTt2YXIgYzt0aGlzLnRpbWVvdXRNcz0oYz1iLnRpbWVvdXRNcykhPW51bGw/Yzo1MDA7dmFyIGQ7dGhpcy5Faj0oZD1iLkVqKSE9bnVsbD9kOiExfTt3YSh0dCxydCk7CnR0LnByb3RvdHlwZS5OPWZ1bmN0aW9uKCl7dGhpcy5qYT17fTt0aGlzLlomJihudCh0aGlzLkssIm1lc3NhZ2UiLHRoaXMuWiksZGVsZXRlIHRoaXMuWik7ZGVsZXRlIHRoaXMuamE7ZGVsZXRlIHRoaXMuSztkZWxldGUgdGhpcy5IO3J0LnByb3RvdHlwZS5OLmNhbGwodGhpcyl9O3ZhciB2dD1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGEuSy5fX3RjZmFwaT09PSJmdW5jdGlvbiJ8fHV0KGEpIT1udWxsfTsKdHQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPXtpbnRlcm5hbEJsb2NrT25FcnJvcnM6dGhpcy5Fan0sZD1IcChmdW5jdGlvbigpe2EoYyl9KSxlPTA7dGhpcy50aW1lb3V0TXMhPT0tMSYmKGU9c2V0VGltZW91dChmdW5jdGlvbigpe2MudGNTdHJpbmc9InRjdW5hdmFpbGFibGUiO2MuaW50ZXJuYWxFcnJvclN0YXRlPTE7ZCgpfSx0aGlzLnRpbWVvdXRNcykpO3ZhciBmPWZ1bmN0aW9uKGcsaCl7Y2xlYXJUaW1lb3V0KGUpO2c/KGM9ZyxjLmludGVybmFsRXJyb3JTdGF0ZT1zdChjKSxjLmludGVybmFsQmxvY2tPbkVycm9ycz1iLkVqLGgmJmMuaW50ZXJuYWxFcnJvclN0YXRlPT09MHx8KGMudGNTdHJpbmc9InRjdW5hdmFpbGFibGUiLGh8fChjLmludGVybmFsRXJyb3JTdGF0ZT0zKSkpOihjLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIixjLmludGVybmFsRXJyb3JTdGF0ZT0zKTthKGMpfTt0cnl7d3QodGhpcywiYWRkRXZlbnRMaXN0ZW5lciIsCmYpfWNhdGNoKGcpe2MudGNTdHJpbmc9InRjdW5hdmFpbGFibGUiLGMuaW50ZXJuYWxFcnJvclN0YXRlPTMsZSYmKGNsZWFyVGltZW91dChlKSxlPTApLGQoKX19O3R0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEpe2EmJmEubGlzdGVuZXJJZCYmd3QodGhpcywicmVtb3ZlRXZlbnRMaXN0ZW5lciIsbnVsbCxhLmxpc3RlbmVySWQpfTsKdmFyIHp0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtkPWQ9PT12b2lkIDA/Ijc1NSI6ZDt2YXIgZTthOntpZihhLnB1Ymxpc2hlciYmYS5wdWJsaXNoZXIucmVzdHJpY3Rpb25zKXt2YXIgZj1hLnB1Ymxpc2hlci5yZXN0cmljdGlvbnNbYl07aWYoZiE9PXZvaWQgMCl7ZT1mW2Q9PT12b2lkIDA/Ijc1NSI6ZF07YnJlYWsgYX19ZT12b2lkIDB9dmFyIGc9ZTtpZihnPT09MClyZXR1cm4hMTt2YXIgaD1jO2M9PT0yPyhoPTAsZz09PTImJihoPTEpKTpjPT09MyYmKGg9MSxnPT09MSYmKGg9MCkpO3ZhciBsO2lmKGg9PT0wKWlmKGEucHVycG9zZSYmYS52ZW5kb3Ipe3ZhciBuPXh0KGEudmVuZG9yLmNvbnNlbnRzLGQ9PT12b2lkIDA/Ijc1NSI6ZCk7bD1uJiZiPT09IjEiJiZhLnB1cnBvc2VPbmVUcmVhdG1lbnQmJmEucHVibGlzaGVyQ0M9PT0iQ0giPyEwOm4mJnh0KGEucHVycG9zZS5jb25zZW50cyxiKX1lbHNlIGw9ITA7ZWxzZSBsPWg9PT0xP2EucHVycG9zZSYmYS52ZW5kb3I/eHQoYS5wdXJwb3NlLmxlZ2l0aW1hdGVJbnRlcmVzdHMsCmIpJiZ4dChhLnZlbmRvci5sZWdpdGltYXRlSW50ZXJlc3RzLGQ9PT12b2lkIDA/Ijc1NSI6ZCk6ITA6ITA7cmV0dXJuIGx9LHh0PWZ1bmN0aW9uKGEsYil7cmV0dXJuISghYXx8IWFbYl0pfSx3dD1mdW5jdGlvbihhLGIsYyxkKXtjfHwoYz1mdW5jdGlvbigpe30pO3ZhciBlPWEuSztpZih0eXBlb2YgZS5fX3RjZmFwaT09PSJmdW5jdGlvbiIpe3ZhciBmPWUuX190Y2ZhcGk7ZihiLDIsYyxkKX1lbHNlIGlmKHV0KGEpKXtBdChhKTt2YXIgZz0rK2EueWE7YS5qYVtnXT1jO2lmKGEuSCl7dmFyIGg9e307YS5ILnBvc3RNZXNzYWdlKChoLl9fdGNmYXBpQ2FsbD17Y29tbWFuZDpiLHZlcnNpb246MixjYWxsSWQ6ZyxwYXJhbWV0ZXI6ZH0saCksIioiKX19ZWxzZSBjKHt9LCExKX0sdXQ9ZnVuY3Rpb24oYSl7aWYoYS5IKXJldHVybiBhLkg7YS5IPU5wKGEuSywiX190Y2ZhcGlMb2NhdG9yIik7cmV0dXJuIGEuSH0sQXQ9ZnVuY3Rpb24oYSl7aWYoIWEuWil7dmFyIGI9ZnVuY3Rpb24oYyl7aWYoYy5zb3VyY2U9PT0KYS5IKXRyeXt2YXIgZDtkPSh2ZihjLmRhdGEpP0pTT04ucGFyc2UoYy5kYXRhKTpjLmRhdGEpLl9fdGNmYXBpUmV0dXJuO2EuamFbZC5jYWxsSWRdKGQucmV0dXJuVmFsdWUsZC5zdWNjZXNzKX1jYXRjaChlKXt9fTthLlo9YjttdChhLkssIm1lc3NhZ2UiLGIpfX0sQnQ9ZnVuY3Rpb24oYSl7aWYoYS5nZHByQXBwbGllcz09PSExKXJldHVybiEwO2EuaW50ZXJuYWxFcnJvclN0YXRlPT09dm9pZCAwJiYoYS5pbnRlcm5hbEVycm9yU3RhdGU9c3QoYSkpO3JldHVybiBhLmNtcFN0YXR1cz09PSJlcnJvciJ8fGEuaW50ZXJuYWxFcnJvclN0YXRlIT09MD9hLmludGVybmFsQmxvY2tPbkVycm9ycz8ocHQoe2U6U3RyaW5nKGEuaW50ZXJuYWxFcnJvclN0YXRlKX0pLCExKTohMDphLmNtcFN0YXR1cyE9PSJsb2FkZWQifHxhLmV2ZW50U3RhdHVzIT09InRjbG9hZGVkIiYmYS5ldmVudFN0YXR1cyE9PSJ1c2VyYWN0aW9uY29tcGxldGUiPyExOiEwfTt2YXIgQ3Q9ezE6MCwzOjAsNDowLDc6Myw5OjMsMTA6M307ZnVuY3Rpb24gRHQoKXtyZXR1cm4ga2ooInRjZiIsZnVuY3Rpb24oKXtyZXR1cm57fX0pfXZhciBFdD1mdW5jdGlvbigpe3JldHVybiBuZXcgdHQoQSx7dGltZW91dE1zOi0xfSl9OwpmdW5jdGlvbiBGdCgpe3ZhciBhPUR0KCksYj1FdCgpO3Z0KGIpJiYhR3QoKSYmIUh0KCkmJlAoMTI0KTtpZighYS5hY3RpdmUmJnZ0KGIpKXtHdCgpJiYoYS5hY3RpdmU9ITAsYS5wdXJwb3Nlcz17fSxhLmNtcElkPTAsYS50Y2ZQb2xpY3lWZXJzaW9uPTAsdGwoKS5hY3RpdmU9ITAsYS50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSIpO2NwKCk7dHJ5e2IuYWRkRXZlbnRMaXN0ZW5lcihmdW5jdGlvbihjKXtpZihjLmludGVybmFsRXJyb3JTdGF0ZSE9PTApSXQoYSksZHAoW0YuRC5rYSxGLkQuWGEsRi5ELm1hXSksdGwoKS5hY3RpdmU9ITA7ZWxzZSBpZihhLmdkcHJBcHBsaWVzPWMuZ2RwckFwcGxpZXMsYS5jbXBJZD1jLmNtcElkLGEuZW5hYmxlQWR2ZXJ0aXNlckNvbnNlbnRNb2RlPWMuZW5hYmxlQWR2ZXJ0aXNlckNvbnNlbnRNb2RlLEh0KCkmJihhLmFjdGl2ZT0hMCksIUp0KGMpfHxHdCgpfHxIdCgpKXthLnRjZlBvbGljeVZlcnNpb249Yy50Y2ZQb2xpY3lWZXJzaW9uO3ZhciBkO2lmKGMuZ2RwckFwcGxpZXM9PT0KITEpe3ZhciBlPXt9LGY7Zm9yKGYgaW4gQ3QpQ3QuaGFzT3duUHJvcGVydHkoZikmJihlW2ZdPSEwKTtkPWU7Yi5yZW1vdmVFdmVudExpc3RlbmVyKGMpfWVsc2UgaWYoSnQoYykpe3ZhciBnPXt9LGg7Zm9yKGggaW4gQ3QpaWYoQ3QuaGFzT3duUHJvcGVydHkoaCkpaWYoaD09PSIxIil7dmFyIGwsbj1jLHA9e1VyOiEwfTtwPXA9PT12b2lkIDA/e306cDtsPUJ0KG4pP24uZ2RwckFwcGxpZXM9PT0hMT8hMDpuLnRjU3RyaW5nPT09InRjdW5hdmFpbGFibGUiPyFwLmlkcGNBcHBsaWVzOihwLmlkcGNBcHBsaWVzfHxuLmdkcHJBcHBsaWVzIT09dm9pZCAwfHxwLlVyKSYmKHAuaWRwY0FwcGxpZXN8fHZmKG4udGNTdHJpbmcpJiZuLnRjU3RyaW5nLmxlbmd0aCk/enQobiwiMSIsMCk6ITA6ITE7Z1siMSJdPWx9ZWxzZSBnW2hdPXp0KGMsaCxDdFtoXSk7ZD1nfWlmKGQpe2EudGNTdHJpbmc9Yy50Y1N0cmluZ3x8InRjZW1wdHkiO2EucHVycG9zZXM9ZDt2YXIgcT17fSxyPShxW0YuRC5rYV09CmEucHVycG9zZXNbIjEiXT8iZ3JhbnRlZCI6ImRlbmllZCIscSk7YS5nZHByQXBwbGllcyE9PSEwPyhkcChbRi5ELmthLEYuRC5YYSxGLkQubWFdKSx0bCgpLmFjdGl2ZT0hMCk6KHJbRi5ELlhhXT1hLnB1cnBvc2VzWyIzIl0mJmEucHVycG9zZXNbIjQiXT8iZ3JhbnRlZCI6ImRlbmllZCIsdHlwZW9mIGEudGNmUG9saWN5VmVyc2lvbj09PSJudW1iZXIiJiZhLnRjZlBvbGljeVZlcnNpb24+PTQ/cltGLkQubWFdPWEucHVycG9zZXNbIjEiXSYmYS5wdXJwb3Nlc1siNyJdPyJncmFudGVkIjoiZGVuaWVkIjpkcChbRi5ELm1hXSksVm8ocix7ZXZlbnRJZDowfSx7Z2RwckFwcGxpZXM6YT9hLmdkcHJBcHBsaWVzOnZvaWQgMCx0Y1N0cmluZzpLdCgpfHwiIn0pKX19ZWxzZSBkcChbRi5ELmthLEYuRC5YYSxGLkQubWFdKX0pfWNhdGNoKGMpe0l0KGEpLGRwKFtGLkQua2EsRi5ELlhhLEYuRC5tYV0pLHRsKCkuYWN0aXZlPSEwfX19CmZ1bmN0aW9uIEl0KGEpe2EudHlwZT0iZSI7YS50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSJ9ZnVuY3Rpb24gSnQoYSl7cmV0dXJuIGEuZXZlbnRTdGF0dXM9PT0idGNsb2FkZWQifHxhLmV2ZW50U3RhdHVzPT09InVzZXJhY3Rpb25jb21wbGV0ZSJ8fGEuZXZlbnRTdGF0dXM9PT0iY21wdWlzaG93biJ9ZnVuY3Rpb24gR3QoKXtyZXR1cm4gQS5ndGFnX2VuYWJsZV90Y2Zfc3VwcG9ydD09PSEwfWZ1bmN0aW9uIEh0KCl7cmV0dXJuIER0KCkuZW5hYmxlQWR2ZXJ0aXNlckNvbnNlbnRNb2RlPT09ITB9ZnVuY3Rpb24gS3QoKXt2YXIgYT1EdCgpO2lmKGEuYWN0aXZlKXJldHVybiBhLnRjU3RyaW5nfWZ1bmN0aW9uIEx0KCl7dmFyIGE9RHQoKTtpZihhLmFjdGl2ZSYmYS5nZHByQXBwbGllcyE9PXZvaWQgMClyZXR1cm4gYS5nZHByQXBwbGllcz8iMSI6IjAifQpmdW5jdGlvbiBNdChhKXtpZighQ3QuaGFzT3duUHJvcGVydHkoU3RyaW5nKGEpKSlyZXR1cm4hMDt2YXIgYj1EdCgpO3JldHVybiBiLmFjdGl2ZSYmYi5wdXJwb3Nlcz8hIWIucHVycG9zZXNbU3RyaW5nKGEpXTohMH07dmFyIE50PVtGLkQua2EsRi5ELnJhLEYuRC5tYSxGLkQuWGFdLE90PXt9LFB0PShPdFtGLkQua2FdPTEsT3RbRi5ELnJhXT0yLE90KTtmdW5jdGlvbiBRdChhKXtpZihhPT09dm9pZCAwKXJldHVybiAwO3N3aXRjaChPKGEsRi5ELlJjKSl7Y2FzZSB2b2lkIDA6cmV0dXJuIDE7Y2FzZSAhMTpyZXR1cm4gMztkZWZhdWx0OnJldHVybiAyfX1mdW5jdGlvbiBSdCgpe3JldHVybihNKDE4Myk/TGYoMTYpLnNwbGl0KCJ+Iik6TGYoMTcpLnNwbGl0KCJ+IikpLmluZGV4T2Yoem0oKSkhPT0tMSYmSGMuZ2xvYmFsUHJpdmFjeUNvbnRyb2w9PT0hMH1mdW5jdGlvbiBTdChhKXtpZihSdCgpKXJldHVybiExO3ZhciBiPVF0KGEpO2lmKGI9PT0zKXJldHVybiExO3N3aXRjaChDbChGLkQuWGEpKXtjYXNlIDE6Y2FzZSAzOnJldHVybiEwO2Nhc2UgMjpyZXR1cm4hMTtjYXNlIDQ6cmV0dXJuIGI9PT0yO2Nhc2UgMDpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0KZnVuY3Rpb24gVHQoKXtyZXR1cm4gRWwoKXx8IUJsKEYuRC5rYSl8fCFCbChGLkQucmEpfWZ1bmN0aW9uIFV0KCl7dmFyIGE9e30sYjtmb3IoYiBpbiBQdClQdC5oYXNPd25Qcm9wZXJ0eShiKSYmKGFbUHRbYl1dPUNsKGIpKTtyZXR1cm4iRzEiK3lmKGFbMV18fDApK3lmKGFbMl18fDApfXZhciBWdD17fSxXdD0oVnRbRi5ELmthXT0wLFZ0W0YuRC5yYV09MSxWdFtGLkQubWFdPTIsVnRbRi5ELlhhXT0zLFZ0KTtmdW5jdGlvbiBYdChhKXtzd2l0Y2goYSl7Y2FzZSB2b2lkIDA6cmV0dXJuIDE7Y2FzZSAhMDpyZXR1cm4gMztjYXNlICExOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9fQpmdW5jdGlvbiBZdChhKXtmb3IodmFyIGI9IjEiLGM9MDtjPE50Lmxlbmd0aDtjKyspe3ZhciBkPWIsZSxmPU50W2NdLGc9QWwuZGVsZWdhdGVkQ29uc2VudFR5cGVzW2ZdO2U9Zz09PXZvaWQgMD8wOld0Lmhhc093blByb3BlcnR5KGcpPzEyfFd0W2ddOjg7dmFyIGg9dGwoKTtoLmFjY2Vzc2VkQW55PSEwO3ZhciBsPWguZW50cmllc1tmXXx8e307ZT1lPDwyfFh0KGwuaW1wbGljaXQpO2I9ZCsoIiIrIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2VdKyIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltYdChsLmRlY2xhcmUpPDw0fFh0KGwuZGVmYXVsdCk8PDJ8WHQobC51cGRhdGUpXSl9dmFyIG49YixwPShSdCgpPzE6MCk8PDMscT0oRWwoKT8xOjApPDwyLHI9UXQoYSk7Yj1uKyIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltwfApxfHJdO3JldHVybiBiKz0iIisiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbQWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHMuYWRfc3RvcmFnZTw8NHxBbC5jb250YWluZXJTY29wZWREZWZhdWx0cy5hbmFseXRpY3Nfc3RvcmFnZTw8MnxBbC5jb250YWluZXJTY29wZWREZWZhdWx0cy5hZF91c2VyX2RhdGFdKyIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIlsoQWwudXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzPzE6MCk8PDJ8QWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHMuYWRfcGVyc29uYWxpemF0aW9uXX1mdW5jdGlvbiBadCgpe3JldHVybiBCbChGLkQubWEpPyJhIjoiLSJ9ZnVuY3Rpb24gJHQoKXtyZXR1cm4gQm0oKXx8KEd0KCl8fEh0KCkpJiZMdCgpPT09IjEiPyIxIjoiMCJ9CmZ1bmN0aW9uIGF1KCl7cmV0dXJuKEJtKCk/ITA6ISghR3QoKSYmIUh0KCkpJiZMdCgpPT09IjEiKXx8IUJsKEYuRC5tYSl9CmZ1bmN0aW9uIGJ1KCl7dmFyIGE9IjAiLGI9IjAiLGM7dmFyIGQ9RHQoKTtjPWQuYWN0aXZlP2QuY21wSWQ6dm9pZCAwO3R5cGVvZiBjPT09Im51bWJlciImJmM+PTAmJmM8PTQwOTUmJihhPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltjPj42JjYzXSxiPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltjJjYzXSk7dmFyIGU9IjAiLGY7dmFyIGc9RHQoKTtmPWcuYWN0aXZlP2cudGNmUG9saWN5VmVyc2lvbjp2b2lkIDA7dHlwZW9mIGY9PT0ibnVtYmVyIiYmZj49MCYmZjw9NjMmJihlPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltmXSk7dmFyIGg9MDtCbSgpJiYoaHw9MSk7THQoKT09PSIxIiYmKGh8PTIpO0d0KCkmJihofD00KTt2YXIgbDt2YXIgbj1EdCgpO2w9bi5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGUhPT0Kdm9pZCAwP24uZW5hYmxlQWR2ZXJ0aXNlckNvbnNlbnRNb2RlPyIxIjoiMCI6dm9pZCAwO2w9PT0iMSImJihofD04KTt0bCgpLndhaXRQZXJpb2RUaW1lZE91dCYmKGh8PTE2KTtyZXR1cm4iMSIrYStiK2UrIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2hdfTt2YXIgY3U9e1VBOjEsQVc6MixEQzozLEc6NCxHRjo1LEdUOjEyLEdUTToxNCxIQTo2LE1DOjd9OwpmdW5jdGlvbiBkdShhKXthPWE9PT12b2lkIDA/e306YTt2YXIgYj1FKDUpLnNwbGl0KCItIilbMF0udG9VcHBlckNhc2UoKSxjLGQ9e2N0aWQ6RSg1KSxEbzpKZigxNSksSW86RSgxNCksTHM6SWYoNyk/MjoxLER0OmEucGYsY2Fub25pY2FsSWQ6RSg2KSxudDooYz1BaygpKT09bnVsbD92b2lkIDA6Yy5jYW5vbmljYWxDb250YWluZXJJZCxFdDphLlRnPT09dm9pZCAwP3ZvaWQgMDphLlRnPzEwOjEyfTtkLmNhbm9uaWNhbElkIT09YS5tYyYmKGQubWM9YS5tYyk7dmFyIGU9eGsoKTtkLlVzPWU/ZS5jYW5vbmljYWxDb250YWluZXJJZDp2b2lkIDA7SWYoNDUpPyhkLmhpPWN1W2JdLGQuaGl8fChkLmhpPTApKTpkLmhpPURqPzEzOjEwO0lmKDQ3KT8oZC5iaz0wLGQucXI9Mik6SWYoNTApP2QuYms9MTpkLmJrPTM7dmFyIGY9YSxnPXs2OiExfTtKZig1NCk9PT0yP2dbN109ITA6SmYoNTQpPT09MSYmKGdbMl09ITApO2lmKEtjKXt2YXIgaD1MaihSaihLYyksImhvc3QiKTtoJiYoZ1s4XT0KaC5tYXRjaCgvXih3d3dcLik/Z29vZ2xldGFnbWFuYWdlclwuY29tJC8pPT09bnVsbCl9dmFyIGw7Z1s5XT0obD1mLmVmKSE9bnVsbD9sOiExO3ZhciBuPUZrKCkscDtnWzEwXT0ocD1uPT1udWxsP3ZvaWQgMDpuLmZyb21Db250YWluZXJFeGVjdXRpb24pIT1udWxsP3A6ITE7ZC56cj1nO3JldHVybiBDZihkLGEuUG4pfTsKdmFyIGZ1PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPW0oZXUoYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlLGY9UihhLGUpLGc9UShhLEguSi5ZZSk7TSg1ODkpJiZnJiYoZT09PUYuRC56YXx8ZT09PUYuRC5VYXx8ZT09PUYuRC5QZSkmJnR5cGVvZiBmPT09InN0cmluZyImJihmPVpzKGYpKTt2YXIgaD1vcChlLGYpO2gmJighZ3x8ZSE9PUYuRC5EZCYmZSE9PUYuRC5LZCYmZSE9PUYuRC5FZSYmZSE9PUYuRC5CZnx8KGgudmFsdWU9IjAiKSxNKDUwNCkmJihlPT09Ri5ELk1kP2gua2V5PSJldm5pZCI6ZT09PUYuRC5OZCYmKGgua2V5PSJleGNpZCIpKSxiW2gua2V5XT1oLnZhbHVlKX1iLmd0bT1kdSh7bWM6UShhLEguSi5OYiksVGc6YS5NLmlzR3RtRXZlbnQsZWY6UShhLEguSi5DYyl9KTtUdCgpJiYoYi5nY3M9Yi5nY3N8fFV0KCkpO2IuZ2NkPWIuZ2NkfHxZdChhLk0pO2F1KCkmJihiLmRtYV9jcHM9WnQoKSk7Yi5kbWE9JHQoKTt2dChFdCgpKSYmCihiLnRjZmQ9YnUoKSk7dmFyIGw9Q3AoYSk7bCYmKGIudGFnX2V4cD1sKTtpZihRKGEsSC5KLkJrKSl7Yi50ZnQ9U3RyaW5nKE5iKCkpO3ZhciBuPXBkKCk7biE9PXZvaWQgMCYmKGIudGZkPVN0cmluZyhNYXRoLnJvdW5kKG4pKSl9Yi5hcHZlPSIxIjtiLmFwdmY9bmQoKT8iZiI6Im5mIjtmby5IW2NvLmlhLmNiXSE9PWJvLk1hLlVlfHxmby5LW2NvLmlhLmNiXS5pc0NvbnNlbnRHcmFudGVkKCl8fChiLmxpbWl0ZWRfYWRzPSIxIik7dmFyIHA9UShhLEguSi5YZyk7TSg0NzQpJiZwIT1udWxsJiZwIT09IiImJihiLl9nc2lkPXApO2h0KGEsYixmdW5jdGlvbihxLHIpe2JbcV09ZW5jb2RlVVJJQ29tcG9uZW50KHIpfSk7cmV0dXJuIGJ9O3ZhciBndT1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMuZW5kcG9pbnQ9YTt0aGlzLmZhPWM7dGhpcy5qYT1kO3RoaXMucGFyYW1ldGVyRW5jb2Rpbmc9ZTt0aGlzLlo9Yi5zbGljZSgpfTtndS5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3JldHVybiBYbyh0aGlzLlopfTtndS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH07Z3UucHJvdG90eXBlLlI9ZnVuY3Rpb24oKXt2YXIgYT1NbVt0aGlzLmVuZHBvaW50XSh2b2lkIDApO3JldHVybiBTYihhLCJodHRwczovLyIpP2Euc3Vic3RyaW5nKDgpOlNiKGEsImh0dHA6Ly8iKT9hLnN1YnN0cmluZyg3KTphfTt2YXIgaHU9ZnVuY3Rpb24oYSxiKXt0aGlzLm1ldGhvZE5hbWU9YTt0aGlzLlI9Yn07aHUucHJvdG90eXBlLnNlbmRSZXF1ZXN0PWZ1bmN0aW9uKGEsYixjKXtpZih0aGlzLmlzU3VwcG9ydGVkKCkpaWYoKGM9PW51bGw/dm9pZCAwOmMuYm9keSk9PT12b2lkIDB8fHRoaXMuSCgpKXRyeXt0aGlzLksoYSxiLGMpfWNhdGNoKGQpe2EucmQoZCl9ZWxzZSBhLnJkKCJSZXF1ZXN0IG1ldGhvZCAiK3RoaXMubWV0aG9kTmFtZSsiIGRvZXMgbm90IHN1cHBvcnQgYSByZXF1ZXN0IGJvZHkuIik7ZWxzZSBhLnJkKCJSZXF1ZXN0IG1ldGhvZCAiK3RoaXMubWV0aG9kTmFtZSsiIGlzIG5vdCBzdXBwb3J0ZWQuIil9O3ZhciBpdT1mdW5jdGlvbigpe2h1LmNhbGwodGhpcywiSW1hZ2VQaXhlbCIsMyl9O3dhKGl1LGh1KTtpdS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH07aXUucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Cml1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYixjKXtaYyhiLGZ1bmN0aW9uKCl7YS5qZigpfSxmdW5jdGlvbigpe2Eub25GYWlsdXJlKHZvaWQgMCl9LGM9PW51bGw/dm9pZCAwOmMuYWYpfTt2YXIganU9ZnVuY3Rpb24oKXtodS5jYWxsKHRoaXMsIlNlbmRCZWFjb24iLDEpfTt3YShqdSxodSk7anUucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuIGtkKCl9O2p1LnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2p1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYixjKXtqZChiLGM9PW51bGw/dm9pZCAwOmMuYm9keSk/YS5qZigpOmEucmQodm9pZCAwKX07dmFyIGt1PWZ1bmN0aW9uKCl7aHUuY2FsbCh0aGlzLCJGZXRjaCIsMSl9O3dhKGt1LGh1KTtrdS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4geWIoQS5mZXRjaCl9O2t1LnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7cmV0dXJuITB9OwprdS5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIsYyl7QS5mZXRjaChiLGM9PW51bGw/dm9pZCAwOmMuR2IpLnRoZW4oZnVuY3Rpb24oZCl7aWYoZC5vaylhLnBlKGQpO2Vsc2UgaWYoZC5zdGF0dXM9PT0wKWEuamYoKTtlbHNlIGEub25GYWlsdXJlKCJGZXRjaCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK2Quc3RhdHVzKyIuIil9KS5jYXRjaChmdW5jdGlvbihkKXthLnJkKGQpfSl9O3ZhciBsdT1uZXcgaXUsbXU9bmV3IGp1LG51PW5ldyBrdTt2YXIgb3U9ZnVuY3Rpb24oKXt9O291LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7cmV0dXJuW119Owp2YXIgcHU9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/WyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl06YjtndS5jYWxsKHRoaXMsYSxiLDEsITAsMil9O3dhKHB1LGd1KTtwdS5wcm90b3R5cGUuSz1mdW5jdGlvbihhKXtpZih0aGlzLloubGVuZ3RoKXt2YXIgYj1RKGEsSC5KLkRrKTtpZihiIT09dm9pZCAwKXJldHVybiBifXJldHVybiBndS5wcm90b3R5cGUuSy5jYWxsKHRoaXMsYSl9O3B1LnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnUoYSk7YS50YXJnZXQuZGVzdGluYXRpb25JZCYmKGMudGlkPWEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpO2IubWV0aG9kIGluc3RhbmNlb2Yga3U/Yy5mbXQ9IjgiOmIubWV0aG9kIGluc3RhbmNlb2YganU/Yy5mbXQ9IjUiOmIubWV0aG9kIGluc3RhbmNlb2YgaXUmJihjLmZtdD0iMyIpO3JldHVybiBjfTtwdS5wcm90b3R5cGUueWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLk4oYSxiKTtyZXR1cm4iPyIrT2JqZWN0LmtleXMoYykubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkKwoiPSIrY1tkXX0pLmpvaW4oIiYiKX07cHUucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMueWEoYSxiKSxlPXt9O2lmKGIubWV0aG9kIGluc3RhbmNlb2Yga3Upe2UuR2I9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxsZCk7aWYodGhpcy5lbmRwb2ludD09PTU4fHx0aGlzLmVuZHBvaW50PT09NTcpZS5HYi5tZXRob2Q9IkdFVCI7dGhpcy5lbmRwb2ludCE9PTQ1fHxxdS5LKGEpfHwoZS5HYi5jcmVkZW50aWFscz0ib21pdCIsZCs9IiZnYXAudWNmYj0xIil9YyhkLGUpfTt2YXIgcXU9bmV3IHB1KDQ1KSxydT1uZXcgcHUoNDUsW10pLHN1PW5ldyBwdSg0NixbXSksdHU9ZnVuY3Rpb24oKXtwdS5jYWxsKHRoaXMsNjkpfTt3YSh0dSxwdSk7dHUucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKGEpe3ZhciBiPU0oNDc0KSYmKCEhUihhLCJfZ3NpZCIpfHwhIVEoYSxILkouWGcpKSxjPVIoYSxGLkQuSGQpIT09IjEiJiYoISFSKGEsImdjbGlkIil8fAohIVIoYSwiZGNsaWQiKXx8ISFSKGEsImdjbHNyYyIpfHwhIVIoYSwiYXVpZCIpKTtyZXR1cm4gYnx8Y307dHUucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz1mdShhKSxkPWxwKGEsYyl8fHt9O09iamVjdC5rZXlzKGQpLmxlbmd0aD4wJiYoYi5tZXRob2QgaW5zdGFuY2VvZiBrdT9kLmZtdD0iOCI6Yi5tZXRob2QgaW5zdGFuY2VvZiBqdT9kLmZtdD0iNSI6Yi5tZXRob2QgaW5zdGFuY2VvZiBpdSYmKGQuZm10PSIzIikpO3JldHVybiBkfTt2YXIgdXU9bmV3IHR1LHZ1PWZ1bmN0aW9uKCl7cHUuY2FsbCh0aGlzLDQ1KX07d2EodnUscHUpO3Z1LnByb3RvdHlwZS5SPWZ1bmN0aW9uKCl7cmV0dXJuIFhqKCkrIi9nL2QvY2NtL2NvbGxlY3QifTt2dS5wcm90b3R5cGUuTj1mdW5jdGlvbihhLGIpe3ZhciBjPXB1LnByb3RvdHlwZS5OLmNhbGwodGhpcyxhLGIpO2NbImdhcC4xcGZiIl09IjEiO3JldHVybiBjfTt2YXIgd3U9ZnVuY3Rpb24oYSl7cHUuY2FsbCh0aGlzLGEsWyJhZF9zdG9yYWdlIiwKImFkX3VzZXJfZGF0YSJdKX07d2Eod3UscHUpO3d1LnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7dmFyIGM9cHUucHJvdG90eXBlLk4uY2FsbCh0aGlzLGEsYik7cmV0dXJuIGhwKGMpfTt2YXIgeHU9bmV3IHd1KDU4KSx5dT1uZXcgd3UoNTcpLHp1PWZ1bmN0aW9uKCl7fTt3YSh6dSxvdSk7enUucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSl7dmFyIGI9cXUuSyhhKSxjPWI/cXU6c3UsZD1be2VuZHBvaW50OmMsbWV0aG9kOm5kKCk/bnU6bXV9LHtlbmRwb2ludDpjLG1ldGhvZDpsdX1dO2I/TSg1MTcpJiZJZig0NykmJmQucHVzaCh7ZW5kcG9pbnQ6bmV3IHZ1LG1ldGhvZDpudX0pOk0oNjAwKSYmZC5wdXNoKHtlbmRwb2ludDpydSxtZXRob2Q6bnV9KTtyZXR1cm4gZH07enUucHJvdG90eXBlLks9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz0hIVEoYSxILkoudmQpLGQ9UihhLEYuRC5QZCk9PT0iMSIsZT1SKGEsRi5ELkhkKT09PSIxIixmPXF1LksoYSksZz1jJiZkJiYhZSYmZjtpZihnKXt2YXIgaD0KUWMoKXx8T2MoKT94dTp5dTtiLnB1c2goW3tlbmRwb2ludDpoLG1ldGhvZDpudX0se2VuZHBvaW50OmgsbWV0aG9kOmx1fV0pfWYmJihnfHxRKGEsSC5KLmhkKSkmJmIucHVzaChbe2VuZHBvaW50OnV1LG1ldGhvZDpuZCgpP251Omx1fV0pO3JldHVybiBifTt2YXIgQXU9bmV3IHp1O3ZhciBUPXtXOntKazoxLG5qOjIsRms6MyxtbDo0LEdrOjUseWQ6NixrbDo3LE1xOjgscW46OSxIazoxMCxJazoxMSxGaDoxMixEbToxMyxBbToxNCxDbToxNSx6bToxNixCbToxNyx5bToxOCxUbzoxOSx4cToyMCx5cToyMSxmajoyMix1bjoyNCxPbToyNSxTazoyNixUazoyNyxSazoyOCxVazoyOSxyajozMCxPazozMSxabzozMn19O1QuV1tULlcuSmtdPSJBTExPV19JTlRFUkVTVF9HUk9VUFMiO1QuV1tULlcubmpdPSJTRVJWRVJfQ09OVEFJTkVSX1VSTCI7VC5XW1QuVy5Ga109IkFEU19EQVRBX1JFREFDVElPTiI7VC5XW1QuVy5tbF09IkNVU1RPTUVSX0xJRkVUSU1FX1ZBTFVFIjtULldbVC5XLkdrXT0iQUxMT1dfQ1VTVE9NX1NDUklQVFMiO1QuV1tULlcueWRdPSJBTllfQ09PS0lFX1BBUkFNUyI7VC5XW1QuVy5rbF09IkNPT0tJRV9FWFBJUkVTIjtULldbVC5XLk1xXT0iTEVHQUNZX0VOSEFOQ0VEX0NPTlZFUlNJT05fSlNfVkFSSUFCTEUiO1QuV1tULlcucW5dPSJSRVNUUklDVEVEX0RBVEFfUFJPQ0VTU0lORyI7ClQuV1tULlcuSGtdPSJBTExPV19ESVNQTEFZX0ZFQVRVUkVTIjtULldbVC5XLklrXT0iQUxMT1dfR09PR0xFX1NJR05BTFMiO1QuV1tULlcuRmhdPSJHRU5FUkFURURfVFJBTlNBQ1RJT05fSUQiO1QuV1tULlcuRG1dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9VTktOT1dOIjtULldbVC5XLkFtXT0iRkxPT0RMSUdIVF9DT1VOVElOR19NRVRIT0RfU1RBTkRBUkQiO1QuV1tULlcuQ21dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9VTklRVUUiO1QuV1tULlcuem1dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9QRVJfU0VTU0lPTiI7VC5XW1QuVy5CbV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX1RSQU5TQUNUSU9OUyI7VC5XW1QuVy55bV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX0lURU1TX1NPTEQiO1QuV1tULlcuVG9dPSJBRFNfT0dUX1YxX1VTQUdFIjtULldbVC5XLnhxXT0iRk9STV9JTlRFUkFDVElPTl9QRVJNSVNTSU9OX0RFTklFRCI7ClQuV1tULlcueXFdPSJGT1JNX1NVQk1JVF9QRVJNSVNTSU9OX0RFTklFRCI7VC5XW1QuVy5mal09Ik1JQ1JPVEFTS19OT1RfU1VQUE9SVEVEIjtULldbVC5XLnVuXT0iU0VUX0VOQ1JZUFRFRF9EQVRBX1RPX0NBQ0hFIjtULldbVC5XLk9tXT0iR0VUX0VOQ1JZUFRFRF9EQVRBX0ZST01fQ0FDSEUiO1QuV1tULlcuU2tdPSJDT05GSUdfREVURUNURURfV0lUSF9OT19QQVJBTSI7VC5XW1QuVy5Ua109IkNPTkZJR19ERVRFQ1RFRF9XSVRIX1BBUkFNIjtULldbVC5XLlJrXT0iQ09ORklHX0NPTlNFTlRfU0VUX0JFRk9SRSI7VC5XW1QuVy5Va109IkNPTkZJR19TRVRfVVNFRF9CRUZPUkUiO1QuV1tULlcucmpdPSJTSEFET1dfRE9NX0FVVE9fUElJIjtULldbVC5XLk9rXT0iQ0NEX1VTRVJfREFUQV9XRUJfT05fQ09ORklHIjtULldbVC5XLlpvXT0iQkxFTkRFRF9VU0VSX0RBVEEiO3ZhciBCdT17fSxDdT0oQnVbRi5ELnVpXT1ULlcuSmssQnVbRi5ELmRkXT1ULlcubmosQnVbRi5ELnljXT1ULlcubmosQnVbRi5ELm1iXT1ULlcuRmssQnVbRi5ELkdlXT1ULlcubWwsQnVbRi5ELnJpXT1ULlcuR2ssQnVbRi5ELkpkXT1ULlcueWQsQnVbRi5ELm5iXT1ULlcueWQsQnVbRi5ELkxiXT1ULlcueWQsQnVbRi5ELklkXT1ULlcueWQsQnVbRi5ELnZjXT1ULlcueWQsQnVbRi5ELlRiXT1ULlcueWQsQnVbRi5ELkNiXT1ULlcua2wsQnVbRi5ELldiXT1ULlcucW4sQnVbRi5ELmhoXT1ULlcuSGssQnVbRi5ELlNjXT1ULlcuSWssQnUpLER1PXt9LEV1PShEdS51bmtub3duPVQuVy5EbSxEdS5zdGFuZGFyZD1ULlcuQW0sRHUudW5pcXVlPVQuVy5DbSxEdS5wZXJfc2Vzc2lvbj1ULlcuem0sRHUudHJhbnNhY3Rpb25zPVQuVy5CbSxEdS5pdGVtc19zb2xkPVQuVy55bSxEdSk7dmFyIEZ1PWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6YztzYigiR1RBR19FVkVOVF9GRUFUVVJFX0NIQU5ORUwiLGIpO2MmJihhLkhbYl09ITApfSx2Yj1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9W119O2Z1bmN0aW9uIEd1KGEpe0Z1KHZiLGEsITEpfWZ1bmN0aW9uIEh1KGEsYil7dmFyIGM9Yj09PXZvaWQgMD8hMTpiLGQ9dmI7Yz1jPT09dm9pZCAwPyExOmM7Zm9yKHZhciBlPU9iamVjdC5rZXlzKGEpLGY9bShPYmplY3Qua2V5cyhDdSkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO2UuaW5jbHVkZXMoaCkmJkZ1KGQsQ3VbaF0sYyl9fTtmdW5jdGlvbiBJdShhLGIpe2E/YS50aGVuKGIpOmIodm9pZCAwKX1mdW5jdGlvbiBKdShhKXtyZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKGEpLnRoZW4oZnVuY3Rpb24oYil7cmV0dXJuIGIuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLnN0YXR1cz09PSJmdWxmaWxsZWQifSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnZhbHVlfSl9KX1mdW5jdGlvbiBLdSgpe3ZhciBhLGI7cmV0dXJue3Byb21pc2U6bmV3IFByb21pc2UoZnVuY3Rpb24oYyxkKXthPWM7Yj1kfSkscmVzb2x2ZTphLHJlamVjdDpifX07ZnVuY3Rpb24gTHUoYSxiLGMsZCxlLGYpe3ZhciBnPWMuc2xpY2UoKSxoO2Q9PW51bGx8fChoPWQudXYpPT1udWxsfHxoLmNhbGwoZCxhLGIsYyxlKTt2YXIgbD1LdSgpLG49bC5wcm9taXNlLHA9bC5yZXNvbHZlLHE9W10scj1mdW5jdGlvbigpe3AocSk7dmFyIHU7ZD09bnVsbHx8KHU9ZC5Scyk9PW51bGx8fHUuY2FsbChkLGEsYixjLGUscSl9LHQ9ZnVuY3Rpb24oKXt2YXIgdT1nLnNoaWZ0KCk7dT91Lm1ldGhvZC5pc1N1cHBvcnRlZCgpP011KGEsYix1LmVuZHBvaW50LGQscSx1Lm1ldGhvZCxlLGYsdCxyKTp0KCk6cigpfTt0KCk7cmV0dXJuIG59CmZ1bmN0aW9uIE11KGEsYixjLGQsZSxmLGcsaCxsLG4pe3ZhciBwPWMuUihhKSxxPXt0azpiLGVuZHBvaW50OmMsaXNQcmltYXJ5Omcsc2I6dm9pZCAwLHBrOmYsanQ6e319LHI9ITEsdD1mdW5jdGlvbih6LEMpe2lmKHIpUCgxODcpO2Vsc2UgaWYocj0hMCwhdSl7dmFyIEQ9Q3x8e30sST1ELmJvZHksRz1ELkdiLE49RC5hZjtDPU9iamVjdC5mcmVlemUobmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxJP3tib2R5Okl9Ont9LEc/e0diOkd9Ont9LE4/e2FmOk59Ont9KSk7aWYoSSYmIWYuSCgpKXgoKSxsKCk7ZWxzZXt2YXIgUz1OdSh6KSxXPXBbMF09PT0iLyI/IiIrcCtTOiJodHRwczovLyIrcCtTO3Euc2I9VztxLmp0PUM7dmFyIGVhO2Q9PW51bGx8fChlYT1kLlNzKT09bnVsbHx8ZWEuY2FsbChkLGEsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxxKSk7dmFyIGphPXtkZXN0aW5hdGlvbklkOmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZW5kcG9pbnQ6Yy5lbmRwb2ludCwKZXZlbnRJZDphLk0uZXZlbnRJZCxwcmlvcml0eUlkOmEuTS5wcmlvcml0eUlkfTtmLlI9PT12b2lkIDB8fGMuZmEhPT0yJiYoYy5mYSE9PTF8fGUubGVuZ3RoKXx8a24ucmVnaXN0ZXIoamEsZi5SLFcpO3ZhciBmYT1mdW5jdGlvbihkYSxtYSl7eCgpO2lmKHEuc3RhdHVzIT09dm9pZCAwKXJldHVybiBQKDE5MiksITE7cS5zdGF0dXM9ZGE7ZS5wdXNoKHEpO3ZhciBQYTtkPT1udWxsfHwoUGE9ZC51byk9PW51bGx8fFBhLmNhbGwoZCxhLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scSksbWEpO3JldHVybiEwfSxzYT17Rm86amEscmQ6ZnVuY3Rpb24oKXtmYSgyKSYmbCgpfSxvbkZhaWx1cmU6ZnVuY3Rpb24oKXtmYSgzKSYmbCgpfSxwZTpmdW5jdGlvbihkYSl7ZmEoZGEuc3RhdHVzPT09MD8xOmRhLm9rPzA6MyxkYSkmJm4oKX0samY6ZnVuY3Rpb24oKXtmYSgxKSYmbigpfX07T3UoYyxhLFcsUyxJKTtmLnNlbmRSZXF1ZXN0KHNhLFcsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCwKe30sSSYme2JvZHk6SX0sRyYme0diOkd9LE4mJnthZjpOfSkpfX19LHU9ITEsdix4PWZ1bmN0aW9uKCl7diE9PXZvaWQgMCYmKEEuY2xlYXJUaW1lb3V0KHYpLHY9dm9pZCAwKX07TSg1NzQpJiYodj1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2PXZvaWQgMDt1PSEwO2lmKHEuc3RhdHVzPT09dm9pZCAwKXtxLnN0YXR1cz00O3Euc2I9PT12b2lkIDAmJihxLnNiPSJbZmFpbGVkIHRvIGJ1aWxkXSAiK3ApO2UucHVzaChxKTt2YXIgejtkPT1udWxsfHwoej1kLnVvKT09bnVsbHx8ei5jYWxsKGQsYSxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHEpLHZvaWQgMCk7bCgpfX0sNUUzKSk7dmFyIHk9e0ljOnAsbWV0aG9kOmYseXY6ZSxpc1ByaW1hcnk6ZyxDdDpofTt0cnl7Yy5IKGEseSx0KX1jYXRjaCh6KXt4KCksUCgxODgpLGwoKX19CmZ1bmN0aW9uIE91KGEsYixjLGQsZSl7aWYoYS5qYSl7dmFyIGY9Yi50YXJnZXQuZGVzdGluYXRpb25JZCxnPWEuZW5kcG9pbnQ7aWYoZz09PTQ1fHxnPT09NDZ8fGc9PT02OXx8Zz09PTU4fHxnPT09NTcpe3ZhciBoPS9bPyZddGlkcz0oW14mXSspLy5leGVjKGQpO2Y9aD9kZWNvZGVVUklDb21wb25lbnQoaFsxXSkuc3BsaXQoIn4iKTpbZl19TWwoe3RhcmdldElkOmYscmVxdWVzdDpuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHt1cmw6YyxwYXJhbWV0ZXJFbmNvZGluZzphLnBhcmFtZXRlckVuY29kaW5nLGVuZHBvaW50OmEuZW5kcG9pbnR9LGU/e3Bvc3RCb2R5OmV9Ont9KSxxYjp7ZXZlbnRJZDpiLk0uZXZlbnRJZCxwcmlvcml0eUlkOmIuTS5wcmlvcml0eUlkfSxGajp7ZXZlbnRJZDpRKGIsSC5KLnVmKSxwcmlvcml0eUlkOlEoYixILkoudmYpfX0pfX0KZnVuY3Rpb24gTnUoYSl7cmV0dXJuIGEmJmEhPT0iPyI/YVswXSE9PSI/Ij8iPyIuY29uY2F0KGEpOmE6IiJ9O2Z1bmN0aW9uIFB1KGEsYixjLGQsZSl7dmFyIGY7ZT09bnVsbHx8KGY9ZS52dik9PW51bGx8fGYuY2FsbChlLGEsYik7aWYoIWMubGVuZ3RoKXt2YXIgZztlPT1udWxsfHwoZz1lLlRzKT09bnVsbHx8Zy5jYWxsKGUsYSxiLFtdKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKX12YXIgaD1bXSxsPXt0azpiLG1rOmMsams6ZH07aC5wdXNoKEx1KGEsYixjLGUsITAsbCkpO2Zvcih2YXIgbj1tKGQpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKWgucHVzaChMdShhLGIscC52YWx1ZSxlLCExLGwpKTtyZXR1cm4gSnUoaCkudGhlbihmdW5jdGlvbihxKXtmb3IodmFyIHI9W10sdD1tKHEpLHU9dC5uZXh0KCk7IXUuZG9uZTt1PXQubmV4dCgpKXIucHVzaC5hcHBseShyLHcodS52YWx1ZSkpO3ZhciB2O2U9PW51bGx8fCh2PWUuVHMpPT1udWxsfHx2LmNhbGwoZSxhLGIscik7cmV0dXJuIHJ9KX07ZnVuY3Rpb24gUXUoYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyksZDtiPT1udWxsfHwoZD1iLnd2KT09bnVsbHx8ZC5jYWxsKGIsYSxjKTtmb3IodmFyIGU9W10sZj1tKGMpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWUucHVzaChSdShhLGcudmFsdWUpKTtmb3IodmFyIGg9W10sbD1tKGUpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO2gucHVzaChQdShhLHAudGsscC5tayxwLmprLGIpKX1KdShoKS50aGVuKGZ1bmN0aW9uKHEpe2Zvcih2YXIgcj1bXSx0PW0ocSksdT10Lm5leHQoKTshdS5kb25lO3U9dC5uZXh0KCkpci5wdXNoLmFwcGx5KHIsdyh1LnZhbHVlKSk7dmFyIHY7Yj09bnVsbHx8KHY9Yi5Rcyk9PW51bGx8fHYuY2FsbChiLGEsYyxyKX0pfQpmdW5jdGlvbiBSdShhLGIpe3ZhciBjPWZ1bmN0aW9uKGYpe3JldHVybiBmLm1ldGhvZC5pc1N1cHBvcnRlZCgpJiZmLmVuZHBvaW50LmlzU3VwcG9ydGVkKGEpJiZmLmVuZHBvaW50LksoYSl9LGQ9KGIuSChhKXx8W10pLmZpbHRlcihjKSxlPVtdO2QubGVuZ3RoJiYoZT0oYi5LKGEpfHxbXSkubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBmLmZpbHRlcihjKX0pLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5sZW5ndGg+MH0pKTtyZXR1cm57dGs6YixtazpkLGprOmV9fTsKdmFyIFN1PWZ1bmN0aW9uKGEsYil7aWYoTSg1MTcpJiZJZig0NykmJmE9PT00NSlyZXR1cm4gWGooKSsiL2cvZC9jY20vY29sbGVjdD8iK2Iuc3BsaXQoIj8iKVsxXSsiJmdhcC4xcGZiPTEifSxXdT1mdW5jdGlvbigpe3ZhciBhPWFsKDMwLGZ1bmN0aW9uKCl7cmV0dXJuW119KTtpZihhLmxlbmd0aCl7Zm9yKHZhciBiPXt9LGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZSxmPVR1KGUua2UsImFwdmMiKSxnPVR1KGUua2UsInRmdCIpLGg9VHUoZS5rZSwidGZkIiksbD1UdShlLmtlLCJ0aWQiKSxuPU5tKGUuZW5kcG9pbnQsZS5rZSkscD1iW25dPWJbbl18fHt4azpbXSxaaDpbXX07cC5aaC5wdXNoKGUpO2w/KHAueGsucHVzaChsKSxwLnVkfHwocC51ZD1sKSk6cC54ay5wdXNoKCIiKTtmPT09IjEiJiYocC5Rbj0hMCk7aWYoZ3x8aClwLk5uPSEwfWEubGVuZ3RoPTA7Zm9yKHZhciBxPW0oT2JqZWN0LmtleXMoYikpLHI9cS5uZXh0KCksdD17fTshci5kb25lO3Q9Cnt5azp2b2lkIDB9LHI9cS5uZXh0KCkpe3ZhciB1PXIudmFsdWUsdj1iW3VdO3QueWs9di54azt2YXIgeD10LnlrLmZpbHRlcihmdW5jdGlvbihEKXtyZXR1cm4gZnVuY3Rpb24oSSxHKXtyZXR1cm4gRC55ay5pbmRleE9mKEkpPT09R319KHQpKS5maWx0ZXIoZnVuY3Rpb24oRCl7cmV0dXJuISFEfSk7aWYoTSg0MjcpKXt2YXIgeT1VdSh2LHgpO1F1KHksdm9pZCAwLEF1KX1lbHNle3ZhciB6PXUrIiZhcHZjPSIrKHYuUW4/IjEiOiIwIik7eC5sZW5ndGgmJih6Kz0iJnRpZHM9Iit4LmpvaW4oIn4iKSk7di51ZCYmKHorPSImdGlkPSIrdi51ZCk7aWYodi5Obil7eis9IiZ0ZnQ9IitTdHJpbmcoTmIoKSk7dmFyIEM9cGQoKTtDIT09dm9pZCAwJiYoeis9IiZ0ZmQ9IitTdHJpbmcoTWF0aC5yb3VuZChDKSkpfVZ1KHYuWmhbMF0uZXZlbnQseix2LlpoWzBdLmVuZHBvaW50LHgubGVuZ3RoP3g6WyIiXSl9fX19LFR1PWZ1bmN0aW9uKGEsYil7dmFyIGM9YVtiXTtpZihjIT09dm9pZCAwKXJldHVybiBkZWxldGUgYVtiXSwKY30sVnU9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e2Rlc3RpbmF0aW9uSWQ6YS50YXJnZXQuZGVzdGluYXRpb25JZCxlbmRwb2ludDpjLGV2ZW50SWQ6YS5NLmV2ZW50SWQscHJpb3JpdHlJZDphLk0ucHJpb3JpdHlJZH0sZj1mdW5jdGlvbihsLG4pe3ZhciBwPWIrWHUobCk7VGwocCxhLGMsZCk7cmV0dXJuIG4ocCl9O2lmKG5kKCkpe3ZhciBnPWZ1bmN0aW9uKCl7fSxoPVN1KGMsYik7aCE9PXZvaWQgMCYmKGc9ZnVuY3Rpb24oKXtZbihlLGgrWHUoOCksdm9pZCAwLHtRZzohMH0pfSk7Zig4LGZ1bmN0aW9uKGwpe1luKGUsbCx2b2lkIDAse1FnOiEwfSxmdW5jdGlvbigpe30sZnVuY3Rpb24oKXtaYyhiK1h1KDMpLGZ1bmN0aW9uKCl7fSxnKX0pfSl9ZWxzZSBmKDUsZnVuY3Rpb24obCl7cmV0dXJuIFduKGUsbCl9KXx8WmMoYitYdSgzKSl9LFV1PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5aaFswXSxkPXsiXyZhcHZjIjphLlFuPyIxIjoiMCJ9O2IubGVuZ3RoPjAmJihkWyJfJnRpZHMiXT0KYi5qb2luKCJ+IikpO2lmKGEuTm4pe2RbIl8mdGZ0Il09U3RyaW5nKE5iKCkpO3ZhciBlPXBkKCk7ZSE9PXZvaWQgMCYmKGRbIl8mdGZkIl09U3RyaW5nKE1hdGgucm91bmQoZSkpKX1yZXR1cm4gWXUoYy5ldmVudCxhLnVkfHwiIixkKX0sWXU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYS50YXJnZXQse2Rlc3RpbmF0aW9uSWQ6Yn0pLGU9WnUoYSx7dGFyZ2V0OmR9KTtifHxVKGUsRi5ELlFlKTtmb3IodmFyIGY9bShPYmplY3Qua2V5cyhjKSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWcudmFsdWU7VShlLGgsY1toXSl9cmV0dXJuIGV9LFh1PWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDg6Y2FzZSAzOmNhc2UgNTpyZXR1cm4iJmZtdD0iK2E7ZGVmYXVsdDpyZXR1cm4iIn19LCR1PWZ1bmN0aW9uKGEsYil7YT1adShhKTtWKGEsSC5KLkRrLFhvKGZwKSk7VHQoKSYmVShhLCJfJmdjcyIsVXQoKSk7ClUoYSwiXyZnY2QiLFl0KGEuTSkpO3ZhciBjPVhvKGZwKT80NTo0NixkPWZ1bmN0aW9uKCl7dmFyIGY9Yi50aWQ7aWYoTSg0MjcpKXt2YXIgZz1ZdShhLGYsYik7UXUoZyx2b2lkIDAsQXUpfWVsc2V7dmFyIGg9Tm0oYyxiKTtWdShhLGgsYyxbZl0pfX07aWYoeWIoQS5xdWV1ZU1pY3JvdGFzaykpe3ZhciBlPWFsKDMwLGZ1bmN0aW9uKCl7cmV0dXJuW119KTtpZihlLmxlbmd0aD09PTApdHJ5e0EucXVldWVNaWNyb3Rhc2soV3UpfWNhdGNoKGYpe0d1KFQuVy5maik7ZCgpO3JldHVybn1iPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYik7ZS5wdXNoKHtldmVudDphLGtlOmIsZW5kcG9pbnQ6Y30pfWVsc2UgR3UoVC5XLmZqKSxkKCl9O3ZhciBYPXtWOntNazoiY2FsbF9jb252ZXJzaW9uIix6ZDoiY2NtX2NvbnZlcnNpb24iLFFrOiJjb21tb25fYXciLHhhOiJjb252ZXJzaW9uIix3cToiZmxvb2RsaWdodCIsWWQ6ImdhX2NvbnZlcnNpb24iLFpkOiJnY3BfcmVtYXJrZXRpbmciLEthOiJwYWdlX3ZpZXciLHViOiJyZW1hcmtldGluZyIsT2I6InVzZXJfZGF0YV9sZWFkIixGYjoidXNlcl9kYXRhX3dlYiJ9fTtmdW5jdGlvbiBidihhLGIpe2ImJkdiKGIsZnVuY3Rpb24oYyxkKXt0eXBlb2YgZCE9PSJvYmplY3QiJiZkIT09dm9pZCAwJiYoYVsiMXAuIitjXT1TdHJpbmcoZCkpfSl9O3ZhciBtdj17Tmc6InZhbHVlIixwYjoiY29udmVyc2lvbkNvdW50IixPZzoxfSxudj17Tmc6InRpbWVvdXRzIixwYjoidGltZW91dHMiLE9nOjB9LG92PXtOZzoiZW9wQ291bnQiLHBiOiJlbmRPZlBhZ2VDb3VudCIsT2c6MH0scHY9e05nOiJlcnJvcnMiLHBiOiJlcnJvcnMiLE9nOjB9LHF2PVttdixudixwdixvdl07ZnVuY3Rpb24gcnYoYSxiKXtiPWI9PT12b2lkIDA/MTpiO2lmKCFzdihhKSlyZXR1cm57fTt2YXIgYz10dihxdiksZD1jW2EucGJdO2lmKGQ9PT12b2lkIDB8fGQ9PT0tMSlyZXR1cm4gYzt2YXIgZT17fSxmPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYywoZVthLnBiXT1kK2IsZSkpO3JldHVybiB1dihmKT9mOmN9CmZ1bmN0aW9uIHR2KGEpe3ZhciBiO2E6e3ZhciBjPW5yKCJnY2xfY3RyIik7aWYoYy5lcnJvcj09PTAmJmMudmFsdWUmJnR5cGVvZiBjLnZhbHVlPT09Im9iamVjdCIpe3ZhciBkPWMudmFsdWU7dHJ5e2I9InZhbHVlImluIGQmJnR5cGVvZiBkLnZhbHVlPT09Im9iamVjdCI/ZC52YWx1ZTp2b2lkIDA7YnJlYWsgYX1jYXRjaChwKXt9fWI9dm9pZCAwfWZvcih2YXIgZT1iLGY9e30sZz1tKGEpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlO2lmKGUmJnN2KGwpKXt2YXIgbj1lW2wuTmddO249PT12b2lkIDB8fE51bWJlci5pc05hTihuKT9mW2wucGJdPS0xOmZbbC5wYl09TnVtYmVyKG4pfWVsc2UgZltsLnBiXT0tMX1yZXR1cm4gZn0KZnVuY3Rpb24gdXYoYSxiKXtiPWJ8fHt9O2Zvcih2YXIgYz1OYigpLGQ9dXEoYixjLCEwKSxlPXt9LGY9bShxdiksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWcudmFsdWUsbD1hW2gucGJdO2whPT12b2lkIDAmJmwhPT0tMSYmKGVbaC5OZ109bCl9ZS5jcmVhdGlvblRpbWVNcz1jO3JldHVybiBrcigiZ2NsX2N0ciIse3ZhbHVlOmUsZXhwaXJlczpOdW1iZXIoZC5leHBpcmVzKX0pPT09MD8hMDohMX1mdW5jdGlvbiBzdihhKXtyZXR1cm4gQmwoWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl0pPyFhLmZ0fHxZZihhLmZ0KTohMX1mdW5jdGlvbiB2dihhKXtyZXR1cm4gQmwoWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl0pPyFhLkFzfHxZZihhLkFzKTohMX07ZnVuY3Rpb24gd3YoKXtpZih4digpKXt2YXIgYT1ucigibGFzdF9jb252cyIpO2lmKGEuZXJyb3I9PT0wJiZhLnZhbHVlJiZ0eXBlb2YgYS52YWx1ZT09PSJvYmplY3QiKXt2YXIgYj1hLnZhbHVlO2lmKGIudmFsdWUmJkFycmF5LmlzQXJyYXkoYi52YWx1ZSkpe3ZhciBjPWIudmFsdWU7aWYoIShjLmxlbmd0aD4xKSl7Zm9yKHZhciBkPVtdLGU9bShjKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtpZih0eXBlb2YgZyE9PSJvYmplY3QifHxnPT09bnVsbHx8dHlwZW9mIGcucmFuZG9tIT09Im51bWJlciJ8fHR5cGVvZiBnLmxhYmVsIT09InN0cmluZyJ8fGcubGFiZWwubGVuZ3RoPjIwMClyZXR1cm47ZC5wdXNoKHtyYW5kb206Zy5yYW5kb20sbGFiZWw6Zy5sYWJlbH0pfXJldHVybiBkfX19fX0KZnVuY3Rpb24geXYoYSxiKXsheHYoKXx8YS5sZW5ndGg+MXx8YS5sZW5ndGg9PT0xJiZhWzBdLmxhYmVsLmxlbmd0aD4yMDB8fChiPWJ8fHt9LGtyKCJsYXN0X2NvbnZzIix7dmFsdWU6YSxleHBpcmVzOk51bWJlcih1cShiKS5leHBpcmVzKX0pKX1mdW5jdGlvbiB4digpe3JldHVybiBCbChbImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXSkmJllmKDExKX07ZnVuY3Rpb24genYoYSl7dmFyIGI9TWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjIxNDc0ODM2NDcpO3JldHVybiBhP1N0cmluZyhiXm5nKGEpJjIxNDc0ODM2NDcpOlN0cmluZyhiKX1mdW5jdGlvbiBBdihhKXtyZXR1cm5benYoYSksTWF0aC5yb3VuZChOYigpLzFFMyldLmpvaW4oIi4iKX1mdW5jdGlvbiBCdihhLGIsYyxkLGUpe3ZhciBmPXJxKGIpLGc7cmV0dXJuKGc9Z3EoYSxmLHNxKGMpLGQsZSkpPT1udWxsP3ZvaWQgMDpnLkNyfTt2YXIgQ3Y9WyIxIl0sRHY9e30sRXY9e307ZnVuY3Rpb24gRnYoYSl7cmV0dXJuIEV2W0d2KGEpXX1mdW5jdGlvbiBIdihhLGIpe2I9Yj09PXZvaWQgMD8hMDpiO3ZhciBjPUd2KGEucHJlZml4KTtpZihEdltjXSlJdihhKSxKdihhKTtlbHNlIGlmKEt2KGMsYS5wYXRoLGEuZG9tYWluKSl7dmFyIGQ9RnYoYS5wcmVmaXgpfHx7aWQ6dm9pZCAwLGtjOnZvaWQgMH07YiYmTHYoYSxkKTtJdihhKTtKdihhKX1lbHNle3ZhciBlPVRqKCJhdWlkZGMiKTtpZihlKXNiKCJUQUdHSU5HIiwxNyksRHZbY109ZTtlbHNlIGlmKGIpe3ZhciBmPUd2KGEucHJlZml4KSxnPUF2KCk7TXYoZixnLGEpO0t2KGMsYS5wYXRoLGEuZG9tYWluKTtJdihhLCEwKTtKdihhLCEwKX19fQpmdW5jdGlvbiBJdihhLGIpeyhiPT09dm9pZCAwPzA6YikmJnN2KG12KSYmb3IoImdjbF9jdHIiKTtpZih2dihtdikmJnR2KFttdl0pW212LnBiXT09PS0xKXtmb3IodmFyIGM9e30sZD0oY1ttdi5wYl09MCxjKSxlPW0ocXYpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO2chPT1tdiYmdnYoZykmJihkW2cucGJdPTApfXV2KGQsYSl9fWZ1bmN0aW9uIEp2KGEsYil7KGI9PT12b2lkIDA/MDpiKSYmeHYoKSYmb3IoImxhc3RfY29udnMiKTshQmwoWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl0pfHwhWWYoMTIpfHx3digpfHx5dihbXSxhKX0KZnVuY3Rpb24gTHYoYSxiKXt2YXIgYz1HdihhLnByZWZpeCksZD1EdltjXTtpZihkKXt2YXIgZT1kLnNwbGl0KCIuIik7aWYoZS5sZW5ndGg9PT0yKXt2YXIgZj1OdW1iZXIoZVsxXSl8fDA7aWYoZil7dmFyIGc9ZDtZZigxOSkmJmIuZmk/Zz1kKyIuIisoYi5zZXNzaW9uSWR8fCItLi0iKSsiLiIrKGIua2M/Yi5rYzpNYXRoLmZsb29yKE5iKCkvMUUzKSkrIi4iK2IuZmkrIi4iKyhiLkxjP2IuTGM6TWF0aC5mbG9vcihOYigpLzFFMykpOmIuc2Vzc2lvbklkJiYoZz1kKyIuIitiLnNlc3Npb25JZCsiLiIrKGIua2M/Yi5rYzpNYXRoLmZsb29yKE5iKCkvMUUzKSkpO012KGMsZyxhLGYqMUUzKX19fX1mdW5jdGlvbiBNdihhLGIsYyxkKXt2YXIgZTtlPVsiMSIsdHEoYy5kb21haW4sYy5wYXRoKSxiXS5qb2luKCIuIik7dmFyIGY9dXEoYyxkKTtmLk1jPU52KCk7b3EoYSxlLGYpfQpmdW5jdGlvbiBLdihhLGIsYyl7dmFyIGQ9QnYoYSxiLGMsQ3YsTnYoKSk7aWYoIWQpcmV0dXJuITE7T3YoYSxkKTtyZXR1cm4hMH1mdW5jdGlvbiBPdihhLGIpe3ZhciBjPWIuc3BsaXQoIi4iKTtpZihjLmxlbmd0aD09PTMpRXZbYV09e3Nlc3Npb25JZDpjWzBdKyIuIitjWzFdLGtjOk51bWJlcihjWzJdKXx8MCxMYzowfTtlbHNlIGlmKGMubGVuZ3RoPj0yJiYoRHZbYV09Y1swXSsiLiIrY1sxXSxjLnNoaWZ0KCksYy5zaGlmdCgpLGMubGVuZ3RoPj0zKSl7dmFyIGQ9e3Nlc3Npb25JZDpjWzBdPT09Ii0iP3ZvaWQgMDpjWzBdKyIuIitjWzFdLGtjOk51bWJlcihjWzJdKXx8MCxMYzowfTtpZihZZigxOSkmJmMubGVuZ3RoPj02KXt2YXIgZT1jWzNdKyIuIitjWzRdLGY9TnVtYmVyKGNbNV0pfHwwO2UmJmYhPT0wJiYoZC5maT1lLGQuTGM9Zil9RXZbYV09ZH19ZnVuY3Rpb24gR3YoYSl7cmV0dXJuKGF8fCJfZ2NsIikrIl9hdSJ9CmZ1bmN0aW9uIFB2KGEpe2Z1bmN0aW9uIGIoKXtCbChjKSYmYSgpfXZhciBjPU52KCk7SGwoZnVuY3Rpb24oKXtiKCk7QmwoYyl8fElsKGIsYyl9LGMpfWZ1bmN0aW9uIFF2KGEpe3ZhciBiPVVxKCEwKSxjPUd2KGEucHJlZml4KTtQdihmdW5jdGlvbigpe3ZhciBkPWJbY107aWYoZCl7T3YoYyxkKTt2YXIgZT1OdW1iZXIoRHZbY10uc3BsaXQoIi4iKVsxXSkqMUUzO2lmKGUpe3NiKCJUQUdHSU5HIiwxNik7dmFyIGY9dXEoYSxlKTtmLk1jPU52KCk7dmFyIGc9WyIxIix0cShhLmRvbWFpbixhLnBhdGgpLGRdLmpvaW4oIi4iKTtvcShjLGcsZil9fX0pfWZ1bmN0aW9uIFJ2KGEsYixjLGQsZSl7ZT1lfHx7fTt2YXIgZj1mdW5jdGlvbigpe3ZhciBnPXt9LGg9QnYoYSxlLnBhdGgsZS5kb21haW4sQ3YsTnYoKSk7aCYmKGdbYV09aCk7cmV0dXJuIGd9O1B2KGZ1bmN0aW9uKCl7YXIoZixiLGMsZCl9KX0KZnVuY3Rpb24gTnYoKXtyZXR1cm5bImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXX07dmFyIFZ2PSJlbWFpbCBlbWFpbF9hZGRyZXNzIHNoYTI1Nl9lbWFpbF9hZGRyZXNzIHBob25lX251bWJlciBzaGEyNTZfcGhvbmVfbnVtYmVyIGZpcnN0X25hbWUgbGFzdF9uYW1lIi5zcGxpdCgiICIpLFd2PSJmaXJzdF9uYW1lIHNoYTI1Nl9maXJzdF9uYW1lIGxhc3RfbmFtZSBzaGEyNTZfbGFzdF9uYW1lIHN0cmVldCBzaGEyNTZfc3RyZWV0IGNpdHkgcmVnaW9uIGNvdW50cnkgcG9zdGFsX2NvZGUiLnNwbGl0KCIgIik7ZnVuY3Rpb24gWHYoYSxiKXtpZighYi5fdGFnX21ldGFkYXRhKXtmb3IodmFyIGM9e30sZD0wLGU9MDtlPGEubGVuZ3RoO2UrKylkKz1ZdihhW2VdLGIsYyk/MTowO2Q+MCYmKGIuX3RhZ19tZXRhZGF0YT1jKX19CmZ1bmN0aW9uIFl2KGEsYixjKXt2YXIgZD1iW2FdO2lmKGQ9PT12b2lkIDB8fGQ9PT1udWxsKXJldHVybiExO2NbYV09QXJyYXkuaXNBcnJheShkKT9kLm1hcChmdW5jdGlvbigpe3JldHVybnttb2RlOiJjIn19KTp7bW9kZToiYyJ9O3JldHVybiEwfWZ1bmN0aW9uIFp2KGEpe2lmKE0oNTIzKSYmYSl7WHYoVnYsYSk7Zm9yKHZhciBiPUJiKGEuYWRkcmVzcyksYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdO2QmJlh2KFd2LGQpfXZhciBlPWEuaG9tZV9hZGRyZXNzO2UmJlh2KFd2LGUpfX0KZnVuY3Rpb24gJHYoYSxiLGMpe2Z1bmN0aW9uIGQoZixnKXtnPVN0cmluZyhnKS5zdWJzdHJpbmcoMCwxMDApO2UucHVzaCgiIitmK2VuY29kZVVSSUNvbXBvbmVudChnKSl9aWYoIWMpcmV0dXJuIiI7dmFyIGU9W107ZCgiaSIsU3RyaW5nKGEpKTtkKCJmIixiKTtjLm1vZGUmJmQoIm0iLGMubW9kZSk7Yy5pc1ByZUhhc2hlZCYmZCgicCIsIjEiKTtjLnJhd0xlbmd0aCYmZCgiciIsU3RyaW5nKGMucmF3TGVuZ3RoKSk7Yy5ub3JtYWxpemVkTGVuZ3RoJiZkKCJuIixTdHJpbmcoYy5ub3JtYWxpemVkTGVuZ3RoKSk7Yy5sb2NhdGlvbiYmZCgibCIsYy5sb2NhdGlvbik7Yy5zZWxlY3RvciYmZCgicyIsYy5zZWxlY3Rvcik7cmV0dXJuIGUuam9pbigiLiIpfTt2YXIgYXc9dm9pZCAwO2Z1bmN0aW9uIGJ3KCl7aWYoIWF3KXt2YXIgYT1vbShqbS5iYS5vcCxuZXcgTWFwKTthdz1uZXcgb2coYSl9cmV0dXJuIGF3fTsKdmFyIGN3PWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiBhO2Zvcih2YXIgYj17fSxjPW0oT2JqZWN0LmtleXMoYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2UhPT0iYWRkcmVzcyImJmUhPT0icGhvbmVfbnVtYmVyIiYmZSE9PSJzaGEyNTZfcGhvbmVfbnVtYmVyIiYmKGJbZV09YVtlXSl9cmV0dXJuIGJ9LGZ3PWZ1bmN0aW9uKGEpe3ZhciBiPU0oNTIzKSxjPVsidHYuMSJdLGQ9WyJ0dmQuMSJdLGU9ZHcoYSk7aWYoZSlyZXR1cm4gYy5wdXNoKGUpLHtoYXNVcGQ6ITEsT286Yy5qb2luKCJ+IiksWW46Yy5qb2luKCJ+IiksZW5jcnlwdGlvbktleVN0cmluZzp2b2lkIDAsaWk6e30sbWV0YWRhdGFQYXJhbTpiP2Quam9pbigifiIpOnZvaWQgMH07dmFyIGY9e30sZz0wO3ZhciBoPTAsbD1ldyhhLGZ1bmN0aW9uKHEscix0KXtoKys7dmFyIHU9cS52YWx1ZSx2OwppZih0KXt2YXIgeD1yKyJfXyIrZysrO3Y9IiR7dXNlckRhdGEuIit4KyJ8c2hhMjU2fSI7Zlt4XT11fWVsc2Ugdj1lbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHUpKTtxLmluZGV4IT09dm9pZCAwJiYocis9cS5pbmRleCk7Yy5wdXNoKHIrIi4iK3YpO2lmKGIpe3ZhciB5PSR2KGgscixxLm1ldGFkYXRhKTt5JiZkLnB1c2goeSl9fSkuaGFzVXBkLG49ZC5qb2luKCJ+Iik7dmFyIHA9Yy5qb2luKCJ+Iik7cmV0dXJue2hhc1VwZDpsLE9vOnAsaWk6e3VzZXJEYXRhOmZ9LFluOiJ0di4xfiR7IisocCsifCIrKE0oNTU1KT8iZW5jcnlwdF93aXRoX21lbW8iOiJlbmNyeXB0IikrIn0iKSxlbmNyeXB0aW9uS2V5U3RyaW5nOkUoNDMpLG1ldGFkYXRhUGFyYW06Yj9uOnZvaWQgMH19LGh3PWZ1bmN0aW9uKGEpe2lmKCEoYSE9bnVsbCYmT2JqZWN0LmtleXMoYSkubGVuZ3RoPjApKXJldHVybiExOwp2YXIgYj1ndyhhKTtyZXR1cm4gZXcoYixmdW5jdGlvbigpe30pLmhhc1VwZH0sZXc9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/ZnVuY3Rpb24oKXt9OmI7Zm9yKHZhciBjPSExLGQ9ITEsZT1tKGEpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO2lmKGcudmFsdWUpe3ZhciBoPWl3W2cubmFtZV07aWYoaCl7dmFyIGw9ancoZyk7bCYmKGM9ITApO2Q9ITA7YihnLGgsbCl9fX1yZXR1cm57aGFzVXBkOmQsaGFzVXBkVG9IYXNoOmN9fSxqdz1mdW5jdGlvbihhKXt2YXIgYj1rdyhhLm5hbWUpLGM9L15lXGQrJC8udGVzdChhLnZhbHVlKSxkO2lmKGQ9YiYmIWMpe3ZhciBlPWEudmFsdWU7ZD0hKGx3LnRlc3QoZSl8fHlpLnRlc3QoZSkpfXJldHVybiBkfSxrdz1mdW5jdGlvbihhKXtyZXR1cm4gbXcuaW5kZXhPZihhKSE9PS0xfSxzdz1mdW5jdGlvbihhLGIsYyl7aWYoeWIoQS5Qcm9taXNlKSl0cnl7dmFyIGQ9ITE7dmFyIGU9Z3coYSxkKSxmPW53KGUpLnRoZW4oZnVuY3Rpb24oaCl7dmFyIGw9aC55YixuPWwuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiFTYihxLm5hbWUsInJhdyIpfSkscD1vdyh7eWI6bn0pO3JldHVybntyZXN1bHQ6e3BhcmFtOnAucGFyYW0saGFzVXBkVG9IYXNoOnAuaGFzVXBkVG9IYXNoLGhhc1VwZDpwLmhhc1VwZCxoYWRFcnJvcjpwLmhhZEVycm9yLG1ldGFkYXRhUGFyYW06cC5tZXRhZGF0YVBhcmFtfSx5YjpsfX0pO3JldHVybiBmLnRoZW4oZnVuY3Rpb24oaCl7cmV0dXJuIGgucmVzdWx0fSl9Y2F0Y2goaCl7fX0scXc9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwO3JldHVybiBifSxvdz1mdW5jdGlvbihhKXt2YXIgYj1NKDUyMyksYz1hLnliLGQ9WyJ0di4xIl0sZT1bInR2ZC4xIl0sZj1kdyhjKTtpZihmKXJldHVybiBkLnB1c2goZikse3BhcmFtOmQuam9pbigifiIpLGhhc1VwZFRvSGFzaDohMSxoYXNVcGQ6ITEsaGFkRXJyb3I6ITAsbWV0YWRhdGFQYXJhbTpiP2Uuam9pbigifiIpOnZvaWQgMH07dmFyIGc9Yy5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIWp3KHEpfSksaD0wLGw9ZXcoZyxmdW5jdGlvbihxLHIpe2grKzt2YXIgdD1xLnZhbHVlLHU9cS5pbmRleDt1IT09dm9pZCAwJiYocis9dSk7ZC5wdXNoKHIrIi4iK3QpO2lmKGIpe3ZhciB2PSR2KGgscixxLm1ldGFkYXRhKTt2JiZlLnB1c2godil9fSksbj1sLmhhc1VwZFRvSGFzaCxwPWwuaGFzVXBkO3JldHVybntwYXJhbTplbmNvZGVVUklDb21wb25lbnQoZC5qb2luKCJ+IikpLApoYXNVcGRUb0hhc2g6bixoYXNVcGQ6cCxoYWRFcnJvcjohMSxtZXRhZGF0YVBhcmFtOmI/ZS5qb2luKCJ+Iik6dm9pZCAwfX0sZHc9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg9PT0xJiZhWzBdLm5hbWU9PT0iZXJyb3JfY29kZSIpcmV0dXJuIGl3LmVycm9yX2NvZGUrIi4iK2FbMF0udmFsdWV9LHB3PWZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoPT09MSYmYVswXS5uYW1lPT09ImVycm9yX2NvZGUiKXJldHVybiExO2Zvcih2YXIgYj1tKGEpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1jLnZhbHVlO2lmKGl3W2QubmFtZV0mJmQudmFsdWUpcmV0dXJuITB9cmV0dXJuITF9LGd3PWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGM9W107aWYoQS5sb2NhdGlvbi5wcm90b2NvbCE9PSJodHRwczoiKXJldHVybiBjLnB1c2goe25hbWU6ImVycm9yX2NvZGUiLHZhbHVlOiJlMyIsaW5kZXg6dm9pZCAwfSksYzt2YXIgZD1jLnB1c2gsZT1kLmFwcGx5LGY9W10sCmc9Zi5jb25jYXQsaCxsPWEuX3RhZ19tZXRhZGF0YXx8e307aD1bXS5jb25jYXQodyh0dyh7bmFtZToiZW1haWwiLHJhdzphLmVtYWlsLFNhOmEuc2hhMjU2X2VtYWlsX2FkZHJlc3MsYWI6bC5lbWFpbCxtZDpsLnNoYTI1Nl9lbWFpbF9hZGRyZXNzfSx1dykpLHcodHcoe25hbWU6InBob25lX251bWJlciIscmF3OmEucGhvbmVfbnVtYmVyLFNhOmEuc2hhMjU2X3Bob25lX251bWJlcixhYjpsLnBob25lX251bWJlcixtZDpsLnNoYTI1Nl9waG9uZV9udW1iZXJ9LHZ3KSkpO3ZhciBuPXcoaCkscCxxPWEuX3RhZ19tZXRhZGF0YXx8e30scj1hLmhvbWVfYWRkcmVzc3x8e30sdD1yLl90YWdfbWV0YWRhdGF8fHt9O3A9W10uY29uY2F0KHcodHcoe25hbWU6ImZpcnN0X25hbWUiLHJhdzphLmZpcnN0X25hbWUsU2E6YS5zaGEyNTZfZmlyc3RfbmFtZSxhYjpxLmZpcnN0X25hbWUsbWQ6cS5zaGEyNTZfZmlyc3RfbmFtZX0sd3coeHcpKSksdyh0dyh7bmFtZToibGFzdF9uYW1lIixyYXc6YS5sYXN0X25hbWUsClNhOmEuc2hhMjU2X2xhc3RfbmFtZSxhYjpxLmxhc3RfbmFtZSxtZDpxLnNoYTI1Nl9sYXN0X25hbWV9LHd3KHh3KSkpLHcodHcoe25hbWU6InN0cmVldCIscmF3OnIuc3RyZWV0LFNhOnIuc2hhMjU2X3N0cmVldCxhYjp0LnN0cmVldCxtZDp0LnNoYTI1Nl9zdHJlZXR9LHd3KHl3KSkpLHcodHcoe25hbWU6ImNpdHkiLHJhdzpyLmNpdHksYWI6dC5jaXR5fSx3dyh5dykpKSx3KHR3KHtuYW1lOiJwb3N0YWxfY29kZSIscmF3OnIucG9zdGFsX2NvZGUsYWI6dC5wb3N0YWxfY29kZX0sd3coencpKSksdyh0dyh7bmFtZToicmVnaW9uIixyYXc6ci5yZWdpb24sYWI6dC5yZWdpb259LHd3KHl3KSkpLHcodHcoe25hbWU6ImNvdW50cnkiLHJhdzpyLmNvdW50cnksYWI6dC5jb3VudHJ5fSx3dyh6dykpKSk7Zm9yKHZhciB1PXcocCksdj1bXSx4PUJiKGEuYWRkcmVzc3x8e30pLHk9MDt5PHgubGVuZ3RoO3krKyl7Zm9yKHZhciB6PXhbeV0sQz16Ll90YWdfbWV0YWRhdGF8fHt9LEQ9W10uY29uY2F0KHcodHcoe25hbWU6ImZpcnN0X25hbWUiLApyYXc6ei5maXJzdF9uYW1lLFNhOnouc2hhMjU2X2ZpcnN0X25hbWUsYWI6Qy5maXJzdF9uYW1lLG1kOkMuc2hhMjU2X2ZpcnN0X25hbWV9LHh3KSksdyh0dyh7bmFtZToibGFzdF9uYW1lIixyYXc6ei5sYXN0X25hbWUsU2E6ei5zaGEyNTZfbGFzdF9uYW1lLGFiOkMubGFzdF9uYW1lLG1kOkMuc2hhMjU2X2xhc3RfbmFtZX0seHcpKSx3KHR3KHtuYW1lOiJzdHJlZXQiLHJhdzp6LnN0cmVldCxTYTp6LnNoYTI1Nl9zdHJlZXQsYWI6Qy5zdHJlZXQsbWQ6Qy5zaGEyNTZfc3RyZWV0fSx5dykpLHcodHcoe25hbWU6ImNpdHkiLHJhdzp6LmNpdHksYWI6Qy5jaXR5fSx5dykpLHcodHcoe25hbWU6InBvc3RhbF9jb2RlIixyYXc6ei5wb3N0YWxfY29kZSxhYjpDLnBvc3RhbF9jb2RlfSx6dykpLHcodHcoe25hbWU6InJlZ2lvbiIscmF3OnoucmVnaW9uLGFiOkMucmVnaW9ufSx5dykpLHcodHcoe25hbWU6ImNvdW50cnkiLHJhdzp6LmNvdW50cnksYWI6Qy5jb3VudHJ5fSx6dykpKSxJPTA7STwKRC5sZW5ndGg7SSsrKURbSV0uaW5kZXg9eTt2LnB1c2guYXBwbHkodix3KEQpKX1lLmNhbGwoZCxjLGcuY2FsbChmLG4sdSx3KHYpKSk7aWYoYiYmQnAoKSl7dmFyIEc9Yy5wdXNoLE49Ry5hcHBseSxTPVtdO1MucHVzaC5hcHBseShTLFtdLmNvbmNhdCh3KEF3KHtuYW1lOiJyYXdfZW1haWwiLHJhdzphLmVtYWlsLFNhOmEuc2hhMjU2X2VtYWlsX2FkZHJlc3N9KSksdyhBdyh7bmFtZToicmF3X3Bob25lX251bWJlciIscmF3OmEucGhvbmVfbnVtYmVyLFNhOmEuc2hhMjU2X3Bob25lX251bWJlcn0pKSkpO2Zvcih2YXIgVz1CYihhLmFkZHJlc3N8fHt9KSxlYT0wO2VhPFcubGVuZ3RoO2VhKyspe3ZhciBqYT1XW2VhXTtTLnB1c2guYXBwbHkoUyxbXS5jb25jYXQodyhBdyh7bmFtZToicmF3X2ZpcnN0X25hbWUiLHJhdzpqYS5maXJzdF9uYW1lLFNhOmphLnNoYTI1Nl9maXJzdF9uYW1lfSxlYSkpLHcoQXcoe25hbWU6InJhd19sYXN0X25hbWUiLHJhdzpqYS5sYXN0X25hbWUsU2E6amEuc2hhMjU2X2xhc3RfbmFtZX0sCmVhKSksdyhBdyh7bmFtZToicmF3X3N0cmVldCIscmF3OmphLnN0cmVldCxTYTpqYS5zaGEyNTZfc3RyZWV0fSxlYSkpKSl9aWYoYS5maXJzdF9uYW1lfHxhLmhvbWVfYWRkcmVzcyl7Uy5wdXNoLmFwcGx5KFMsW10uY29uY2F0KHcoQXcoe25hbWU6InJhd19maXJzdF9uYW1lIixyYXc6YS5maXJzdF9uYW1lLFNhOmEuc2hhMjU2X2ZpcnN0X25hbWV9KSksdyhBdyh7bmFtZToicmF3X2xhc3RfbmFtZSIscmF3OmEubGFzdF9uYW1lLFNhOmEuc2hhMjU2X2xhc3RfbmFtZX0pKSkpO3ZhciBmYT1hLmhvbWVfYWRkcmVzc3x8e307Uy5wdXNoLmFwcGx5KFMsdyhBdyh7bmFtZToicmF3X3N0cmVldCIscmF3OmZhLnN0cmVldCxTYTpmYS5zaGEyNTZfc3RyZWV0fSkpKX1OLmNhbGwoRyxjLHcoUykpfXJldHVybiBjfSx3dz1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7UCg2NCk7cmV0dXJuIGEoYil9fSxBdz1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO2lmKGEuU2EpcmV0dXJuIGM7Zm9yKHZhciBkPQpCYihhLnJhdyksZT0wO2U8ZC5sZW5ndGg7KytlKXt2YXIgZj1CdyhkW2VdKTtpZihmJiYheWkudGVzdChmKSlpZigvXmVcZCskLy50ZXN0KGYpKWMucHVzaCh7bmFtZTphLm5hbWUsdmFsdWU6ZixpbmRleDpifSk7ZWxzZXt2YXIgZz1jLGg9Zy5wdXNoLGw9YS5uYW1lLG47dmFyIHA9QTt0cnl7bj1CaShBcnJheS5mcm9tKFpiKGYpKSxwKX1jYXRjaChxKXtuPSJlMCJ9aC5jYWxsKGcse25hbWU6bCx2YWx1ZTpuLGluZGV4OmJ9KX19cmV0dXJuIGN9LHR3PWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1NKDUyMyksZT1hLnJhdyxmPWQ/YS5hYjp2b2lkIDA7Q3coZSwhMSk7YS5TYSYmKGUmJlAoOTApLGU9YS5TYSxmPWQ/YS5tZDp2b2lkIDAsQ3coZSwhMCkpO2Zvcih2YXIgZz1CYihlKSxoPUJiKGYpLGw9MDtsPGcubGVuZ3RoOysrbCl7dmFyIG47dmFyIHA9YS5uYW1lLHE9YixyPWhbbF0sdD1CdyhnW2xdKTtpZih0IT09IiIpaWYoeWkudGVzdCh0KSl7ciYmKHIuaXNQcmVIYXNoZWQ9ITApOwp2YXIgdT17bmFtZTpwLHZhbHVlOnQsaW5kZXg6dm9pZCAwfTtyJiYodS5tZXRhZGF0YT1yKTtuPXV9ZWxzZXt2YXIgdj1xKHQpLHg9e25hbWU6cCx2YWx1ZTp2LGluZGV4OnZvaWQgMH07ciYmKHgubWV0YWRhdGE9cix2JiYoci5yYXdMZW5ndGg9U3RyaW5nKHQpLmxlbmd0aCxyLm5vcm1hbGl6ZWRMZW5ndGg9di5sZW5ndGgpKTtuPXh9ZWxzZSBuPXZvaWQgMDt2YXIgeT1uO3kmJmMucHVzaCh5KX1yZXR1cm4gY30sQ3c9ZnVuY3Rpb24oYSxiKXtpZih6YihhKXx8QXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGM9QmIoYSksZD0wO2Q8Yy5sZW5ndGg7KytkKXt2YXIgZT1CdyhjW2RdKSxmPXlpLnRlc3QoZSk7YiYmIWYmJlAoODkpOyFiJiZmJiZQKDg4KX19LER3PWZ1bmN0aW9uKGEpe3ZhciBiPWE/Z3coYSk6W107cmV0dXJuIG93KHt5YjpifSl9LEV3PWZ1bmN0aW9uKGEpe3JldHVybiBhJiZhIT1udWxsJiZPYmplY3Qua2V5cyhhKS5sZW5ndGg+MCYmeWIoQS5Qcm9taXNlKT9ndyhhKS5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBiLnZhbHVlJiYKa3coYi5uYW1lKSYmIXlpLnRlc3QoYi52YWx1ZSl9KTohMX0sQnc9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6emIoYSk/TGIoU3RyaW5nKGEpKToiZTAifSx6dz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKEZ3LCIiKX0seHc9ZnVuY3Rpb24oYSl7cmV0dXJuIHl3KGEucmVwbGFjZSgvXHMvZywiIikpfSx5dz1mdW5jdGlvbihhKXtyZXR1cm4gTGIoYS5yZXBsYWNlKEd3LCIiKS50b0xvd2VyQ2FzZSgpKX0sdnc9ZnVuY3Rpb24oYSl7YT1hLnJlcGxhY2UoL1tccy0oKS8uXS9nLCIiKTthLmNoYXJBdCgwKSE9PSIrIiYmKGE9IisiK2EpO3JldHVybihNKDU5Nyk/SHc6SXcpLnRlc3QoYSk/YToiZTAifSx1dz1mdW5jdGlvbihhKXt2YXIgYj1hLnRvTG93ZXJDYXNlKCkuc3BsaXQoIkAiKTtpZihiLmxlbmd0aD09PTIpe3ZhciBjPWJbMF07L14oZ21haWx8Z29vZ2xlbWFpbClcLi8udGVzdChiWzFdKSYmKGM9Yy5yZXBsYWNlKC9cLi9nLCIiKSk7Yz1jKyJAIitiWzFdO2lmKEp3LnRlc3QoYykpcmV0dXJuIGN9cmV0dXJuImUwIn0sCkt3PWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IudmFsdWUmJmt3KGIubmFtZSkmJihiLnZhbHVlPURpKGIudmFsdWUpKX0pLHt5YjphfX1jYXRjaChiKXtyZXR1cm57eWI6W119fX0sbnc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYi52YWx1ZSYma3coYi5uYW1lKX0pP3liKEEuUHJvbWlzZSk/UHJvbWlzZS5hbGwoYS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIudmFsdWUmJmt3KGIubmFtZSk/QWkoYi52YWx1ZSkudGhlbihmdW5jdGlvbihjKXtiLnZhbHVlPWN9KTpQcm9taXNlLnJlc29sdmUoKX0pKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJue3liOmF9fSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm57eWI6W119fSk6e3RoZW46ZnVuY3Rpb24oYil7Yih7eWI6W119KX19OlByb21pc2UucmVzb2x2ZSh7eWI6YX0pfSxHdz0vWzAtOWB+IUAjJCVeJiooKV9cLSs9Ojs8PiwuP3wvXFxbXF1dL2csSnc9L15cUytAXFMrXC5cUyskLywKSXc9L15cK1xkezEwLDE1fSQvLEh3PS9eXCtcZHs3LDE1fSQvLEZ3PS9bLn5dL2csbHc9L15bMC05QS1aYS16Xy1dezQzfSQvLEx3PVsicmVtIiwicnBuIiwicmZuIiwicmxuIiwicnNhIl0sTXc9e30saXc9KE13LmVtYWlsPSJlbSIsTXcucGhvbmVfbnVtYmVyPSJwbiIsTXcuZmlyc3RfbmFtZT0iZm4iLE13Lmxhc3RfbmFtZT0ibG4iLE13LnN0cmVldD0ic2EiLE13LmNpdHk9ImN0IixNdy5yZWdpb249InJnIixNdy5jb3VudHJ5PSJjbyIsTXcucG9zdGFsX2NvZGU9InBjIixNdy5lcnJvcl9jb2RlPSJlYyIsTXcucmF3X2VtYWlsPSJyZW0iLE13LnJhd19waG9uZV9udW1iZXI9InJwbiIsTXcucmF3X2ZpcnN0X25hbWU9InJmbiIsTXcucmF3X2xhc3RfbmFtZT0icmxuIixNdy5yYXdfc3RyZWV0PSJyc2EiLE13KTt2YXIgbXc9T2JqZWN0LmZyZWV6ZShbImVtYWlsIiwKInBob25lX251bWJlciIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJzdHJlZXQiXSk7dmFyIG14PU9iamVjdC5mcmVlemUoe2F0dHJpYnV0aW9uc3JjOiIifSksbng9T2JqZWN0LmZyZWV6ZSh7ZXZlbnRTb3VyY2VFbGlnaWJsZTohMSx0cmlnZ2VyRWxpZ2libGU6ITB9KTtmdW5jdGlvbiBveCgpe3ZhciBhPVhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZTtyZXR1cm4gYSYmeWIoYS5zZXRBdHRyaWJ1dGlvblJlcG9ydGluZyl9O3ZhciBweD1PYmplY3QuZnJlZXplKHtjYWNoZToibm8tc3RvcmUiLGNyZWRlbnRpYWxzOiJpbmNsdWRlIixtZXRob2Q6IkdFVCIsa2VlcGFsaXZlOiEwLHJlZGlyZWN0OiJmb2xsb3cifSk7CmZ1bmN0aW9uIHF4KGEsYixjLGQsZSxmKXtpZigheWIoQS5mZXRjaCkpcmV0dXJuIGY9PW51bGx8fGYodm9pZCAwLHZvaWQgMCksITE7dmFyIGc9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxweCk7YiYmKGcuYm9keT1iLGcubWV0aG9kPSJQT1NUIik7bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCxnLGQpO0EuZmV0Y2goYSxnKS50aGVuKGZ1bmN0aW9uKGgpe2lmKGgub2spe2lmKGguYm9keSl7dmFyIGw9aC5ib2R5LmdldFJlYWRlcigpLG49bmV3IFRleHREZWNvZGVyO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihwKXtmdW5jdGlvbiBxKCl7bC5yZWFkKCkudGhlbihmdW5jdGlvbihyKXt2YXIgdDt0PXIuZG9uZTt2YXIgdT1uLmRlY29kZShyLnZhbHVlLHtzdHJlYW06IXR9KTt1PWMuUit1O2Zvcih2YXIgdj11LmluZGV4T2YoIlxuXG4iKTt2IT09LTE7KXt2YXIgeD1aZyx5O2E6e3ZhciB6PW0odS5zdWJzdHJpbmcoMCx2KS5zcGxpdCgiXG4iKSksQz0Kei5uZXh0KCkudmFsdWUsRD16Lm5leHQoKS52YWx1ZTtpZihTYihDLCJldmVudDogbWVzc2FnZSIpJiZTYihELCJkYXRhOiAiKSl7dmFyIEk9RC5zdWJzdHJpbmcoNik7dHJ5e3k9SlNPTi5wYXJzZShJKTticmVhayBhfWNhdGNoKEcpe319eT12b2lkIDB9eChjLHkpO3U9dS5zdWJzdHJpbmcodisyKTt2PXUuaW5kZXhPZigiXG5cbiIpfWMuUj11O3Q/KGU9PW51bGx8fGUoaCkscCgpKTpxKCl9KS5jYXRjaChmdW5jdGlvbigpe2U9PW51bGx8fGUoaCk7cCgpfSl9cSgpfSl9ZT09bnVsbHx8ZShoKX1lbHNlIGY9PW51bGx8fGYoaCx2b2lkIDApfSkuY2F0Y2goZnVuY3Rpb24oaCl7Zj09bnVsbHx8Zih2b2lkIDAsaCl9KTtyZXR1cm4hMH07dmFyIHJ4PWZ1bmN0aW9uKGEpe2h1LmNhbGwodGhpcywiRmV0Y2hSaWNoUmVzcG9uc2UiLDEpO3RoaXMuTj1hfTt3YShyeCxodSk7cngucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHliKEEuZmV0Y2gpfTtyeC5wcm90b3R5cGUuSD1mdW5jdGlvbigpe3JldHVybiEwfTtyeC5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIsYyl7cXgoYixjPT1udWxsP3ZvaWQgMDpjLmJvZHksdGhpcy5OLGM9PW51bGw/dm9pZCAwOmMuR2IsYS5wZSxmdW5jdGlvbihkLGUpe2Eub25GYWlsdXJlKGUpfSl9O3ZhciBDeD1mdW5jdGlvbigpe1lnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07d2EoQ3gsWWcpO0N4LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYil7WmMoYSx2b2lkIDAsJGcodGhpcyxiKSxiLmF0dHJpYnV0aW9uX3JlcG9ydGluZyYmb3goKT9teDp7fSl9O0N4LnByb3RvdHlwZS5IPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5hdHRyaWJ1dGlvbl9yZXBvcnRpbmcmJm94KCk/e2F0dHJpYnV0aW9uUmVwb3J0aW5nOm54fTp7fSxkPSRnKHRoaXMsYik7Yi5wcm9jZXNzX3Jlc3BvbnNlP3F4KGEsdm9pZCAwLHRoaXMsYyx2b2lkIDAsZCk6bWQoYSx2b2lkIDAsYyx2b2lkIDAsZCl9O3ZhciBReD1mdW5jdGlvbihhLGIpe3RoaXMuSD1hO3RoaXMudGltZW91dE1zPWI7dGhpcy5SYj12b2lkIDB9LFJ4PWZ1bmN0aW9uKGEpe2EuUmJ8fChhLlJiPXNldFRpbWVvdXQoZnVuY3Rpb24oKXthLkgoKTthLlJiPXZvaWQgMH0sYS50aW1lb3V0TXMpKX0sVG49ZnVuY3Rpb24oYSl7YS5SYiYmKGNsZWFyVGltZW91dChhLlJiKSxhLlJiPXZvaWQgMCl9O3ZhciBTeD1mdW5jdGlvbigpe3ZhciBhPU5mKDY2LDApO3RoaXMuSz1bXTt0aGlzLlI9YTt0aGlzLkg9WWEoKX0sVXg9ZnVuY3Rpb24oYSl7dmFyIGI9VHg7Yi5LLnB1c2goYSk7Yi5OfHwoYi5OPWZ1bmN0aW9uKCl7Zm9yKHZhciBjPW0oYi5LKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTt0cnl7ZSgpfWNhdGNoKGwpe319Zm9yKHZhciBmPW0oYi5ILnZhbHVlcygpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9dm9pZCAwOyhoPWcudmFsdWUud2UpPT1udWxsfHxUbihoKX1iLkguY2xlYXIoKX0sJGMoQSwicGFnZWhpZGUiLGIuTikpfSxWeD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKE1uKVszXXx8bnVsbCxjPShiP2RlY29kZVVSSShiKTpiKXx8IiIsZD1QbihhLCJsYWJlbCIpfHwiIixlPVBuKGEsInJhbmRvbSIpfHwiIjtyZXR1cm4gYysiOiIrTG4oZCkrIjoiK0xuKGUpfSxXeD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9VHgsCmU9VngoYSk7aWYoIShkLkguaGFzKGUpfHxkLkguc2l6ZT49ZC5SKSl7dmFyIGY9e307YiYmYj4wJiZjJiYoZi53ZT1uZXcgUXgoYyxiKSk7ZC5ILnNldChlLGYpO3ZhciBnOyhnPWYud2UpPT1udWxsfHxSeChnKX19LFVuPWZ1bmN0aW9uKGEsYil7dmFyIGM9VngoYiksZCxlOyhkPWEuSC5nZXQoYykpPT1udWxsfHwoZT1kLndlKT09bnVsbHx8VG4oZSk7YS5ILmRlbGV0ZShjKX07U3gucHJvdG90eXBlLmdldFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ILnNpemV9O3ZhciBkZztmdW5jdGlvbiBoeShhLGIpe3ZhciBjOyhjPWRnKT09bnVsbHx8JGYoYy5ILGEsYil9O3ZhciBpeT1BYShbIi8iXSksank9ZnVuY3Rpb24oYSl7dGhpcy5IPWE7dGhpcy5mYWlsdXJlVHlwZT12b2lkIDB9O2p5LnByb3RvdHlwZS5pbz1mdW5jdGlvbihhLGIsYyl7dHJ5e3ZhciBkPXRoaXMuSC5hY3RpdmU7ZD8oZC5wb3N0TWVzc2FnZSh7dHlwZToxLGNvbW1hbmQ6YX0pLGIoe2RhdGE6IiJ9KSk6Yyh7ZmFpbHVyZVR5cGU6MTMsZGF0YToiIn0pfWNhdGNoKGUpe2Moe2ZhaWx1cmVUeXBlOjExLGRhdGE6ZS5tZXNzYWdlfSl9fTt2YXIga3k9ZnVuY3Rpb24oYSxiKXt0aGlzLmZhaWx1cmVUeXBlPWE7dGhpcy5IPWJ9O2t5LnByb3RvdHlwZS5pbz1mdW5jdGlvbihhLGIsYyl7Yyh7ZmFpbHVyZVR5cGU6dGhpcy5mYWlsdXJlVHlwZSxkYXRhOiJmIit0aGlzLmZhaWx1cmVUeXBlKygidCIrKChuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuSCkpfSl9Owp2YXIgbnk9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0aGlzLmluaXRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3RoaXMuSD1uZXcga3koMTUsdGhpcy5pbml0VGltZSk7dmFyIGM9bmV3IFByb21pc2UoZnVuY3Rpb24oZSl7QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZSgpfSwyMCl9KSxkPWx5KGEpLnRoZW4oZnVuY3Rpb24oZSl7Yi5IPW5ldyBqeShlKTtteShiLGUpfSkuY2F0Y2goZnVuY3Rpb24oKXtiLkg9bmV3IGt5KDQsYi5pbml0VGltZSl9KTt0aGlzLks9UHJvbWlzZS5yYWNlKFtjLGRdKX0sbXk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbihkKXtkJiZkLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIixmdW5jdGlvbigpe2lmKGQuc3RhdGU9PT0icmVkdW5kYW50Iil7dmFyIGU9Yi5hY3RpdmU7ZSYmZS5zdGF0ZSE9PSJyZWR1bmRhbnQifHwoYS5IPW5ldyBreSgxMCxhLmluaXRUaW1lKSl9fSl9O2MoYi5hY3RpdmUpO2MoYi53YWl0aW5nKTtjKGIuaW5zdGFsbGluZyk7CmIuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZm91bmQiLGZ1bmN0aW9uKCl7YyhiLmluc3RhbGxpbmcpfSl9O255LnByb3RvdHlwZS5kZWxlZ2F0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczt0aGlzLksudGhlbihmdW5jdGlvbigpe2QuSC5pbyhhLGIsYyl9KX07bnkucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIDJ9Owp2YXIgbHk9ZnVuY3Rpb24oYSl7dmFyIGIsYz1MZigxMSk7Yz1MZigxMCk7Yj1jO3ZhciBkPXtzY29wZTooVGIoYS5ocmVmLCIvIik/YS5ocmVmLnNsaWNlKDAsLTEpOmEuaHJlZikrIi9fL3NlcnZpY2Vfd29ya2VyIn07YiYmKGQudXBkYXRlVmlhQ2FjaGU9ImFsbCIpO3ZhciBlLGY9b3koYSxiKSxnPW5ldyBNYXAoW1sicGF0aCIsYS5wYXRobmFtZV1dKSxoPUpwKGtjKGYpLnRvU3RyaW5nKCkpO2U9THAoaC56ayxoLnBhcmFtcyxoLmZyYWdtZW50LGcpO3ZhciBsPUljKCksbj1rYyhlKTt0cnl7cmV0dXJuIGwucmVnaXN0ZXIobixkKX1jYXRjaChwKXt0cnl7cmV0dXJuIGwucmVnaXN0ZXIobi50b1N0cmluZygpLGQpfWNhdGNoKHEpe3JldHVybiBQcm9taXNlLnJlamVjdChxKX19fTsKZnVuY3Rpb24gb3koYSxiKXtmb3IodmFyIGM9S3AoaXkpLGQ9YS5wYXRobmFtZS5zcGxpdCgiLyIpLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gaC5sZW5ndGg+MH0pLGU9W10uY29uY2F0KHcoZCksWyJfIiwic2VydmljZV93b3JrZXIiLGIsInN3LmpzIl0pLGY9bShlKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSljPU1wKGMsZy52YWx1ZSk7cmV0dXJuIGN9O2Z1bmN0aW9uIHB5KGEpe3ZhciBiPW5tKGptLmJhLk9oKSxjPWI9PW51bGw/dm9pZCAwOmJbYV07Y3x8YSE9PSJsaXRlInx8KGM9Yj09bnVsbD92b2lkIDA6Yi5mdWxsKTtyZXR1cm4gY312YXIgcXk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXB5KCJmdWxsIik7ZD9kLmRlbGVnYXRlKGEsYixjKTpjKHtmYWlsdXJlVHlwZToxNn0pfTtmdW5jdGlvbiByeShhLGIsYyxkLGUpe3F5KHtjb21tYW5kVHlwZTowLHBhcmFtczp7dXJsOmEsbWV0aG9kOjEsdGVtcGxhdGVzOmIsYm9keToiIixwcm9jZXNzUmVzcG9uc2U6ITEsZW5jcnlwdGlvbktleVN0cmluZzplLHNvUmVmZXJyZXI6QS5sb2NhdGlvbi5ocmVmfX0sYyxmdW5jdGlvbihmKXtkKGYuZmFpbHVyZVR5cGUsZi5kYXRhKX0pfTt2YXIgRHk9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD0wO3RoaXMuSz0hMTtNKDQ2MikmJlVtKCJmcyIsZnVuY3Rpb24oKXtyZXR1cm4gYS5IPjAmJmEuSDw1P1N0cmluZyhhLkgpOnZvaWQgMH0sITEpfSxFeTtmdW5jdGlvbiBGeShhLGIpe0V5fHwoRXk9bmV3IER5KTt2YXIgYz1FeTtNKDQ2MikmJmZuLksmJihiPT09Imd0bS5mb3JtU3VibWl0Inx8Yj09PSJmb3JtX3N1Ym1pdCImJklmKDQ1KSkmJihhPT09MXx8Yy5LKSYmKGMuSz0hMCxjLkg9YSxhIT09NT9WbSgiZnMiKTpRbS5ILmZzPSExKX07dmFyIEd5PWZ1bmN0aW9uKGEpe2lmKFEoYSxILkouZGEpPT09WC5WLkthKXt2YXIgYj1mdShhKTtpZighTSg0MjcpJiYoanAoYSxiKXx8UShhLEguSi5oZCkpJiZYbyhmcCkpe3ZhciBjPWxwKGEsYik7aWYoYyl7dmFyIGQ9Tm0oNjksYyk7VGwoZCxhLDY5KTtZbih7ZGVzdGluYXRpb25JZDphLnRhcmdldC5kZXN0aW5hdGlvbklkLGVuZHBvaW50OjY5LGV2ZW50SWQ6YS5NLmV2ZW50SWQscHJpb3JpdHlJZDphLk0ucHJpb3JpdHlJZH0sZCl9fXZhciBlPXliKGEuTS5vblN1Y2Nlc3MpP2EuTS5vblN1Y2Nlc3M6eGI7JHUoYSxiKTtlKCl9fTt2YXIgSHk9e1g6e1dxOjAsRWs6MSxaZzoyLFhrOjMsbWk6NCxWazo1LFdrOjYsWWs6NyxuaTo4LHRtOjksc206MTAsVGk6MTEsdm06MTIsQmg6MTMsRW06MTQsaWo6MTUsU3E6MTYsamQ6MTcsdWo6MTgsdmo6MTksd2o6MjAsQ246MjEseGo6MjJ9fTtIeS5YW0h5LlguV3FdPSJSRVNFUlZFRF9aRVJPIjtIeS5YW0h5LlguRWtdPSJBRFNfQ09OVkVSU0lPTl9ISVQiO0h5LlhbSHkuWC5aZ109IkNPTlRBSU5FUl9FWEVDVVRFX1NUQVJUIjtIeS5YW0h5LlguWGtdPSJDT05UQUlORVJfU0VUVVBfRU5EIjtIeS5YW0h5LlgubWldPSJDT05UQUlORVJfU0VUVVBfU1RBUlQiO0h5LlhbSHkuWC5Wa109IkNPTlRBSU5FUl9CTE9DS0lOR19FTkQiO0h5LlhbSHkuWC5Xa109IkNPTlRBSU5FUl9FWEVDVVRFX0VORCI7SHkuWFtIeS5YLllrXT0iQ09OVEFJTkVSX1lJRUxEX0VORCI7SHkuWFtIeS5YLm5pXT0iQ09OVEFJTkVSX1lJRUxEX1NUQVJUIjtIeS5YW0h5LlgudG1dPSJFVkVOVF9FWEVDVVRFX0VORCI7Ckh5LlhbSHkuWC5zbV09IkVWRU5UX0VWQUxVQVRJT05fRU5EIjtIeS5YW0h5LlguVGldPSJFVkVOVF9FVkFMVUFUSU9OX1NUQVJUIjtIeS5YW0h5Llgudm1dPSJFVkVOVF9TRVRVUF9FTkQiO0h5LlhbSHkuWC5CaF09IkVWRU5UX1NFVFVQX1NUQVJUIjtIeS5YW0h5LlguRW1dPSJHQTRfQ09OVkVSU0lPTl9ISVQiO0h5LlhbSHkuWC5pal09IlBBR0VfTE9BRCI7SHkuWFtIeS5YLlNxXT0iUEFHRVZJRVciO0h5LlhbSHkuWC5qZF09IlNOSVBQRVRfTE9BRCI7SHkuWFtIeS5YLnVqXT0iVEFHX0NBTExCQUNLX0VSUk9SIjtIeS5YW0h5LlgudmpdPSJUQUdfQ0FMTEJBQ0tfRkFJTFVSRSI7SHkuWFtIeS5YLndqXT0iVEFHX0NBTExCQUNLX1NVQ0NFU1MiO0h5LlhbSHkuWC5Dbl09IlRBR19FWEVDVVRFX0VORCI7SHkuWFtIeS5YLnhqXT0iVEFHX0VYRUNVVEVfU1RBUlQiO3ZhciBJeT17fTtJeS5YPUh5Llg7dmFyIEp5PXtSdToiTCIsWHE6IlMiLGt2OiJZIixSdDoiQiIsbnU6IkUiLE51OiJJIixmdjoiVEMiLHZ1OiJIVEMiLG91OiJGIixNdToiQyJ9LEt5PXtYcToiUyIsbHU6IlYiLGF1OiJFIixkdjoidGFnIn0sTHk9e30sTXk9KEx5W0l5LlgudmpdPSI2IixMeVtJeS5YLndqXT0iNSIsTHlbSXkuWC51al09IjciLEx5KTtmdW5jdGlvbiBOeShhKXt2YXIgYj1FKDUpLGM9TnVtYmVyKGEuZXZlbnRJZCksZD1OdW1iZXIoYS50YWdJZCk7cmV0dXJuKFNiKGIsIkdUTS0iKT9iOiJHVE0tIitiKSsiOiIrKEFiKGMpP2MrIjoiOiIiKSsoQWIoZCk/ZCsiOiI6IiIpK2Euc3RhZ2V9O2Z1bmN0aW9uIE95KCl7dmFyIGE9cmQoKTtyZXR1cm4hIShhJiZhLm1hcmsgaW5zdGFuY2VvZiBGdW5jdGlvbiYmYS5tZWFzdXJlIGluc3RhbmNlb2YgRnVuY3Rpb24mJmEuY2xlYXJNZWFzdXJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZhLmNsZWFyTWFya3MgaW5zdGFuY2VvZiBGdW5jdGlvbil9O3ZhciBQeT1mdW5jdGlvbigpe3RoaXMuSD17fX0sUXk7ZnVuY3Rpb24gUnkoKXtReXx8KFF5PW5ldyBQeSk7cmV0dXJuIFF5fWZ1bmN0aW9uIFN5KGEpe3ZhciBiPVJ5KCksYz1OeShhKTtyZXR1cm4gYi5IW2NdfWZ1bmN0aW9uIFR5KGEsYil7dmFyIGM7YTp7dmFyIGQ9UnkoKTtpZihPeSgpKXt2YXIgZT1OeShhKSxmLGc7aWYoZj0oZz1yZCgpKT09bnVsbD92b2lkIDA6Zy5tYXJrKGUsYikpe2M9ZC5IW2VdPWY7YnJlYWsgYX19Yz12b2lkIDB9cmV0dXJuIGN9O2Z1bmN0aW9uIFV5KGEsYil7aWYoT3koKSl7YS5lbnRyeT1OeShhKTt2YXIgYz1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGEpO2Muc3RhZ2U9YjtkZWxldGUgYy5zZW50O3ZhciBkPVN5KGI9PT1JeS5YLmpkP3tzdGFnZTpJeS5YLmpkfTpjKSxlPVN5KGEpO2lmKGQmJmUmJiEoZC5zdGFydFRpbWU+ZS5zdGFydFRpbWUpKXtjLnN0YWdlPWIrIjoiK2Euc3RhZ2U7dmFyIGY9TnkoYyksZz17c3RhcnQ6ZC5uYW1lLGVuZDplLm5hbWV9LGgsbDtyZXR1cm4obD0oaD1yZCgpKT09bnVsbD92b2lkIDA6aC5tZWFzdXJlKGYsZykpPT1udWxsP3ZvaWQgMDpsLmR1cmF0aW9ufX19O3ZhciBXeT1mdW5jdGlvbigpe3ZhciBhPTU7VnkuUm8+MCYmKGE9VnkuUm8pO3RoaXMuSz1hO3RoaXMuSD0wO3RoaXMuTj1bXX0sWHk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuSDxhLks/ITE6TmIoKS1hLk5bYS5IJWEuS108MUUzfSxZeT1mdW5jdGlvbihhKXt2YXIgYj1hLkgrKyVhLks7YS5OW2JdPU5iKCl9O3ZhciBWeT17Um86TmYoMywwKX0sJHk9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMueWE9W107dGhpcy5IPXZvaWQgMDt0aGlzLlo9e307dGhpcy5LPXZvaWQgMDt0aGlzLmphPW5ldyBXeTt0aGlzLkxhPTFFMzt0aGlzLlI9dGhpcy5OPSExO3RoaXMuZmE9RGIoKTtaeSh0aGlzLGZ1bmN0aW9uKCl7dmFyIGI9W1sidiIsIjMiXSxbInQiLCJ0Il0sWyJwaWQiLFN0cmluZyhhLmZhKV1dLGM9ZHUoKTtjJiZiLnB1c2goWyJndG0iLGNdKTtyZXR1cm4gYn0pO2NkKGZ1bmN0aW9uKCl7YS5mYT1EYigpfSw4NjRFNSl9LFp5PWZ1bmN0aW9uKGEsYil7YS55YS5wdXNoKGIpfSxhej1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5IO2lmKGQ9PT12b2lkIDApaWYoYylkPXJqKCk7ZWxzZSByZXR1cm4iIjtmb3IodmFyIGU9W2ZrKCJodHRwczovLyIrRSgyMSkpLCIvYSIsIj9pZD0iK0UoNSldLGY9bShhLnlhKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlmb3IodmFyIGg9Zy52YWx1ZSxsPQpoKHtldmVudElkOmQsdGY6ISFifSksbj1tKGwpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKXt2YXIgcT1tKHAudmFsdWUpLHI9cS5uZXh0KCkudmFsdWUsdD1xLm5leHQoKS52YWx1ZTtlLnB1c2goIiYiK3IrIj0iK3QpfWUucHVzaCgiJno9MCIpO3JldHVybiBlLmpvaW4oIiIpfSxiej1mdW5jdGlvbihhKXtpZigkaygyNikmJihhLksmJihBLmNsZWFyVGltZW91dChhLkspLGEuSz12b2lkIDApLGEuSCE9PXZvaWQgMCYmYS5SKSl7dmFyIGI9bG8oY28uaWEuWmIpO2lmKGdvKGIpKWEuTnx8KGEuTj0hMCxpbyhiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYnooYSl9KSk7ZWxzZSBpZihhLlpbYS5IXXx8WHkoYS5qYSl8fGEuTGEtLTw9MClQKDEpLGEuWlthLkhdPSEwO2Vsc2V7WXkoYS5qYSk7dmFyIGM9YXooYSwhMCk7WG4oe2Rlc3RpbmF0aW9uSWQ6RSg1KSxlbmRwb2ludDo1NixldmVudElkOmEuSH0sYyk7YS5SPSExO2EuTj0hMX19fSxjej1mdW5jdGlvbihhKXthLkt8fChhLks9CkEuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB2b2lkIGJ6KGEpfSw1MDApKX0sZXo9ZnVuY3Rpb24oYSl7dmFyIGI9ZHo7Yi5aW2FdfHwoYSE9PWIuSCYmKGJ6KGIpLGIuSD1hKSxiLlI9ITAsY3ooYiksYXooYikubGVuZ3RoPj0yMDIyJiZieihiKSl9LGR6O2Z1bmN0aW9uIGZ6KGEpe2d6KCk7WnkoZHosYSl9ZnVuY3Rpb24gaHooKXt2YXIgYTthPWE9PT12b2lkIDA/ITE6YTtneigpO3ZhciBiPWEsYz1kejtiPWI9PT12b2lkIDA/ITE6YjtpZihmbi5OJiYkaygyNikpe3ZhciBkPWF6KGMsITAsITApO2I/Vm4oe2Rlc3RpbmF0aW9uSWQ6RSg1KSxlbmRwb2ludDo1NixldmVudElkOmMuSH0sZCk6WG4oe2Rlc3RpbmF0aW9uSWQ6RSg1KSxlbmRwb2ludDo1NixldmVudElkOmMuSH0sZCl9fWZ1bmN0aW9uIGd6KCl7ZHp8fChkej1uZXcgJHkpfTtmdW5jdGlvbiBpeigpe2Z1bmN0aW9uIGEoYyxkKXt2YXIgZT13YihyYltkXXx8W10pO2UmJmIucHVzaChbYyxlXSl9dmFyIGI9W107YSgidSIsIkdUTSIpO2EoInV0IiwiVEFHR0lORyIpO2EoImgiLCJIRUFMVEgiKTtyZXR1cm4gYn07dmFyIGp6PSJodHRwczovLyIrRSgyMSksa3o9ZnVuY3Rpb24oKXt0aGlzLk49ITE7dGhpcy5SPVtdO3RoaXMuWj1bXTt0aGlzLkg9e1RDOjAsSFRDOjB9O3RoaXMuSz17fX0sbHo9ZnVuY3Rpb24oYSxiLGMsZCl7YS5LW2JdfHwoYS5LW2JdPXt9KTthLktbYl1bY109ZH0sb3o9ZnVuY3Rpb24oYSl7dmFyIGI9IiIsYz0iIixkPW16KCk7QWIoZCkmJihhLkguST1NYXRoLmZsb29yKGQpKTtjPW56KGEuSCxKeSkudG9TdHJpbmcoKTtmb3IodmFyIGU9bShPYmplY3Qua2V5cyhhLkspKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZSxoPWEuS1tnXS5uYW1lLGw9IiIsbj1ueihhLktbZ10sS3kpO24mJihsPWgrIi4iK24udG9TdHJpbmcoKSxiKz0ifiIrbCl9dmFyIHA9In5BV0NUIithLlIuam9pbigiLiIpLHE9In5HQSIrYS5aLmpvaW4oIi4iKSxyPSImY2NpZD0iK3ZrKCkudG9TdHJpbmcoKSsiJmNpZD0iK0UoNSkudG9TdHJpbmcoKSsiJmw9IitjK2IrKGEuUi5sZW5ndGg/CnA6IiIpKyhhLloubGVuZ3RoP3E6IiIpO2lmKE0oMjE0KSl7dmFyIHQsdT0odD1yZCgpKT09bnVsbD92b2lkIDA6dC5nZXRFbnRyaWVzQnlOYW1lKEtjKS5tYXAoZnVuY3Rpb24odil7cmV0dXJuIFN0cmluZyh2LmR1cmF0aW9uKX0pLmpvaW4oIi4iKTt1JiYocis9In5TUyIrdSl9cmV0dXJuIHJ9LHB6PWZ1bmN0aW9uKGEsYil7aWYoIWIuc3RhZ2V8fGEuTnx8IU95KCl8fFN5KGIpKXJldHVybiExO3ZhciBjLGQ9KGM9cmQoKSk9PW51bGw/dm9pZCAwOmMudGltZU9yaWdpbjtpZighQWIoZCkpYS5OPSEwO2Vsc2UgaWYoQWIoJGsoMjUpKSYmIVN5KHtzdGFnZTpJeS5YLmpkfSkmJiFhLk4mJk95KCkpdHJ5e3ZhciBlPU51bWJlcigkaygyNSkpO1R5KHtzdGFnZTpJeS5YLmpkfSx7c3RhcnRUaW1lOk1hdGgubWF4KGUtZCwwKX0pO1R5KHtzdGFnZTpJeS5YLmlqfSx7c3RhcnRUaW1lOjB9KTt2YXIgZj1VeSh7c3RhZ2U6SXkuWC5qZH0sSXkuWC5paik7ZiYmKGEuSC5MPU1hdGguZmxvb3IoZikpfWNhdGNoKGcpe2EuTj0KITB9aWYoYS5OKXJldHVybiExO3RyeXtpZighVHkoYikpcmV0dXJuITF9Y2F0Y2goZyl7cmV0dXJuIGEuTj0hMCwhMX1yZXR1cm4hMH0scXo9ZnVuY3Rpb24oYSxiLGMpe2lmKHB6KGEsYikpdHJ5e3ZhciBkPVV5KGIsYyk7aWYoZClyZXR1cm4gTWF0aC5mbG9vcihkKX1jYXRjaChlKXthLk49ITB9fSxzej1mdW5jdGlvbigpe3ZhciBhPXJ6KCk7cHooYSx7c3RhZ2U6SXkuWC5taX0pfSx0ej1mdW5jdGlvbigpe3ZhciBhPXJ6KCksYj1xeihhLHtzdGFnZTpJeS5YLlhrfSxJeS5YLm1pKTtiIT09dm9pZCAwJiYoYS5ILlM9Yil9LHV6PWZ1bmN0aW9uKCl7dmFyIGE9cnooKTtweihhLHtzdGFnZTpJeS5YLm5pfSl9LHZ6PWZ1bmN0aW9uKGEsYil7dmFyIGM9cnooKTtweihjLHtzdGFnZTpJeS5YLkJoLGV2ZW50SWQ6YX0pO2MuS1thXSYmYy5LW2FdLm5hbWV8fGx6KGMsYSwibmFtZSIsU2IoYiwiZ3RtLiIpP2I6IioiKX0sd3o9ZnVuY3Rpb24oYSl7dmFyIGI9cnooKSxjPXF6KGIse3N0YWdlOkl5Llgudm0sCmV2ZW50SWQ6YX0sSXkuWC5CaCk7YyE9PXZvaWQgMCYmbHooYixhLCJTIixjKX0seXo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1yeigpLGQ9cXooYyx7c3RhZ2U6SXkuWC50bSxldmVudElkOmF9LEl5LlguQmgpO2QhPT12b2lkIDAmJmx6KGMsYSwiRSIsZCk7aWYoYj09PSJndG0ubG9hZCIpe3ZhciBlPXF6KGMse3N0YWdlOkl5LlguV2t9LEl5LlguWmcpO2UhPT12b2lkIDAmJihjLkguRT1lKTtpbyhsbyhjby5pYS5aYiksZnVuY3Rpb24oKXtpZighYy5OJiZPeSgpJiZFKDUpKXt2YXIgZj14eigpO2YhPT12b2lkIDAmJihjLkguRj1NYXRoLmZsb29yKGYpKTt0cnl7Zm9yKHZhciBnPWl6KHtldmVudElkOjAsdGY6ITF9KSxoPVtdLGw9bShnKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bShuLnZhbHVlKSxxPXAubmV4dCgpLnZhbHVlLHI9cC5uZXh0KCkudmFsdWU7aC5wdXNoKCImIitxKyI9IityKX12YXIgdD1DcCgpLHU9W1tmayhqeiksIi9hP3Y9MyZ0PWwiLCImcGlkPSIrCkRiKCkudG9TdHJpbmcoKSwiJnJ2PSIrRSgxNCksdD8iJnRhZ19leHA9Iit0OiIiLGguam9pbigiIildLmpvaW4oIiIpLCImZ3RtPSIsZHUoKSxveihjKV0uam9pbigiIik7aWYodS5sZW5ndGg+MjAyMil7dmFyIHY9TWF0aC5tYXgodS5sYXN0SW5kZXhPZigiLlRTIiwyMDIyKSx1Lmxhc3RJbmRleE9mKCJ+IiwyMDIyKSk7dT11LnNsaWNlKDAsdil9WG4oe2Rlc3RpbmF0aW9uSWQ6RSg1KSxlbmRwb2ludDo1Nn0sdSl9Y2F0Y2goeCl7fX19KX19LHp6O2Z1bmN0aW9uIHJ6KCl7enp8fCh6ej1uZXcga3opO3JldHVybiB6en1mdW5jdGlvbiBteigpe3RyeXt2YXIgYTtyZXR1cm4oKGE9cmQoKSk9PW51bGw/dm9pZCAwOmEuZ2V0RW50cmllc0J5VHlwZSgibmF2aWdhdGlvbiIpWzBdKS5kb21JbnRlcmFjdGl2ZX1jYXRjaChiKXt9fQpmdW5jdGlvbiBueihhLGIpe3JldHVybiBPYmplY3Qua2V5cyhiKS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGJbY119KS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGFbY10hPT12b2lkIDB9KS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuKCIiKyhjPT09InRhZyI/IiI6YykpLmNvbmNhdChhW2NdLnRvU3RyaW5nKCkpfSkuam9pbigiLiIpfWZ1bmN0aW9uIEF6KGEpe3ZhciBiPXJ6KCksYz1xeihiLHtzdGFnZTpJeS5YLkVtLGV2ZW50SWQ6YX0sSXkuWC5qZCk7YyE9PXZvaWQgMCYmYi5aLnB1c2goYyl9ZnVuY3Rpb24gQnooYSl7dmFyIGI9cnooKSxjPXF6KGIse3N0YWdlOkl5LlguRWssZXZlbnRJZDphfSxJeS5YLmpkKTtjIT09dm9pZCAwJiZiLlIucHVzaChjKX1mdW5jdGlvbiBDeihhKXt2YXIgYj1yeigpO3B6KGIse3N0YWdlOkl5LlguVGksZXZlbnRJZDphfSl9CmZ1bmN0aW9uIER6KGEpe3ZhciBiPXJ6KCksYz1xeihiLHtzdGFnZTpJeS5YLnNtLGV2ZW50SWQ6YX0sSXkuWC5UaSk7YyE9PXZvaWQgMCYmbHooYixhLCJWIixjKX1mdW5jdGlvbiB4eigpe3RyeXt2YXIgYSxiO3JldHVybihiPShhPXJkKCkpPT1udWxsP3ZvaWQgMDphLmdldEVudHJpZXNCeVR5cGUoInBhaW50IikuZmluZChmdW5jdGlvbihjKXtyZXR1cm4gYy5uYW1lPT09ImZpcnN0LWNvbnRlbnRmdWwtcGFpbnQifSkpPT1udWxsP3ZvaWQgMDpiLnN0YXJ0VGltZX1jYXRjaChjKXt9fWZ1bmN0aW9uIEV6KGEsYil7dmFyIGM9cnooKTtweihjLHtzdGFnZTpJeS5YLnhqLGV2ZW50SWQ6YS5pZCx0YWdJZDpOdW1iZXIoYltHZi55al0pfSl9CmZ1bmN0aW9uIEZ6KGEsYixjKXt2YXIgZD1yeigpLGU9ZG4oYiksZj1OdW1iZXIoYltHZi55al0pLGc9cXooZCx7c3RhZ2U6YyxldmVudElkOmEuaWQsdGFnSWQ6Zn0sSXkuWC54aik7aWYoZyE9PXZvaWQgMCYmZC5LW2EuaWRdKXt2YXIgaD1kLktbYS5pZF0udGFnfHwiIixsLG49KGw9TXlbY10pIT1udWxsP2w6IjEiLHA9bmV3IFJlZ0V4cCgiVFNcXGQiK2UrIi5USSIrZikscT0iVFMiK24rZSsiLlRJIitmKyIuVEUiK2c7aC5zZWFyY2gocCk+PTA/biE9PSIxIiYmbHooZCxhLmlkLCJ0YWciLGgucmVwbGFjZShwLHEucmVwbGFjZSgiLlRFIitnLCIiKSkpOihseihkLGEuaWQsInRhZyIsKGg/aCsiLiI6IiIpK3EpLGU9PT0iaHRtbCImJihkLkguSFRDKz0xKSxkLkguVEMrPTEpfX07dmFyIEt6PXtnajp7YnA6IjEiLHVxOiIyIixWcToiMyJ9fTsKdmFyIEx6PXt9LE16PU9iamVjdC5mcmVlemUoKEx6W0YuRC5maF09MSxMeltGLkQuZ2hdPTEsTHpbRi5ELkJkXT0xLEx6W0YuRC5DZF09MSxMeltGLkQuUmNdPTEsTHpbRi5ELnNpXT0xLEx6W0YuRC51aV09MSxMeltGLkQuQ2xdPTEsTHpbRi5ELmloXT0xLEx6W0YuRC5DZl09MSxMeltGLkQuRGZdPTEsTHpbRi5ELkVmXT0xLEx6W0YuRC5IYV09MSxMeltGLkQuRmZdPTEsTHpbRi5ELkZkXT0xLEx6W0YuRC51Y109MSxMeltGLkQuSGRdPTEsTHpbRi5ELkxiXT0xLEx6W0YuRC5DYl09MSxMeltGLkQuVGJdPTEsTHpbRi5ELm5iXT0xLEx6W0YuRC5lYl09MSxMeltGLkQuR2VdPTEsTHpbRi5ELmtoXT0xLEx6W0YuRC5PYV09MSxMeltGLkQuT3BdPTEsTHpbRi5ELlNwXT0xLEx6W0YuRC5JZV09MSxMeltGLkQuR2ldPTEsTHpbRi5ELlFmXT0xLEx6W0YuRC5UYV09MSxMeltGLkQuWWNdPTEsTHpbRi5ELlpjXT0xLEx6W0YuRC50Yl09MSxMeltGLkQuUWRdPTEsTHpbRi5ELlJkXT0xLEx6W0YuRC5TZF09CjEsTHpbRi5ELk5lXT0xLEx6W0YuRC56YV09MSxMeltGLkQuVWFdPTEsTHpbRi5ELldsXT0xLEx6W0YuRC5YbF09MSxMeltGLkQuWWxdPTEsTHpbRi5ELlpsXT0xLEx6W0YuRC5XYl09MSxMeltGLkQuVGRdPTEsTHpbRi5ELlhiXT0xLEx6W0YuRC5kZF09MSxMeltGLkQuVWRdPTEsTHpbRi5ELlFlXT0xLEx6W0YuRC5QYV09MSxMeltGLkQueWNdPTEsTHpbRi5ELlZkXT0xLEx6W0YuRC56Y109MSxMeltGLkQuQWNdPTEsTHpbRi5ELmZiXT0xLEx6W0YuRC5RYV09MSxMeikpLE56PXt9LE96PShOeltGLkQuVWNdPTEsTnpbRi5ELlBwXT0xLE56W0YuRC5IZV09MSxOeltGLkQucmldPTEsTnoub3JlZj0xLE56KTt2YXIgUHosUXo7CmZ1bmN0aW9uIFJ6KGEsYil7dmFyIGM9YVtHZi5ZYl0sZD1iJiZiLmV2ZW50O2lmKCFjKXRocm93IEVycm9yKCJFcnJvcjogTm8gZnVuY3Rpb24gbmFtZSBnaXZlbiBmb3IgZnVuY3Rpb24gY2FsbC4iKTt2YXIgZT1ReltjXSxmPXt9LGc7Zm9yKGcgaW4gYSlhLmhhc093blByb3BlcnR5KGcpJiYoU2IoZywidnRwXyIpP2ZbZSE9PXZvaWQgMD9nOmcuc3Vic3RyaW5nKDQpXT1hW2ddOmc9PT1HZi5GcS50b1N0cmluZygpJiYoZltlIT09dm9pZCAwPyJ2dHBfZ3RtR2VuZXJhdGVkVGFnZ2luZ01ldGFkYXRhIjpnXT1hW2ddKSk7SWYoNjEpJiZlJiYoZi52dHBfZXh0cmFFeHBlcmltZW50SWRzPSEwKTtlJiZkJiZkLmNhY2hlZE1vZGVsVmFsdWVzJiYoZi52dHBfZ3RtQ2FjaGVkVmFsdWVzPWQuY2FjaGVkTW9kZWxWYWx1ZXMpO2ImJmUmJihmLnZ0cF9ndG1FbnRpdHlJbmRleD1iLmluZGV4LGYudnRwX2d0bUVudGl0eU5hbWU9Yi5uYW1lKTtyZXR1cm4gZSE9PXZvaWQgMD9lKGYpOlB6KGMsZiwKYil9dmFyIFR6PWZ1bmN0aW9uKCl7dmFyIGE9U3o7aWYoTSg1ODUpJiZmbi5LKXt2YXIgYj1FKDUpLmluZGV4T2YoIkdUTS0iKT09PTAmJklmKDYyKSxjLGQ9KChjPUZrKCkpPT1udWxsP3ZvaWQgMDpjLnNvdXJjZSk9PT0xO2ImJiFkfHxhLkh8fChhLkg9ITAsVW0oImFibCIsIjEiKSx0bygpKX19LFN6PW5ldyBmdW5jdGlvbigpe3RoaXMuSD0hMX07dmFyIFV6PWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuSD1hO3RoaXMuaW5kZXg9Yjt0aGlzLnRhZ3M9Yzt0aGlzLm1hY3Jvcz1kO3RoaXMubmFtZT1TdHJpbmcodGhpcy5IW0dmLlJtXXx8IiIpfTsKVXoucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEsYil7aWYoIWJbdGhpcy5pbmRleF0mJiFhLmlzQmxvY2tlZCh0aGlzLkgpKXtiW3RoaXMuaW5kZXhdPSEwO3RoaXMuSFtHZi5wbC50b1N0cmluZygpXSYmVHooKTt2YXIgYz10aGlzLm5hbWUsZDt0cnl7dmFyIGU9e30sZjtmb3IoZiBpbiB0aGlzLkgpdGhpcy5ILmhhc093blByb3BlcnR5KGYpJiYoZVtmXT1lbCh0aGlzLkhbZl0sYSx0aGlzLnRhZ3MsdGhpcy5tYWNyb3MsYikpO2UudnRwX2d0bUV2ZW50SWQ9YS5pZDthLnByaW9yaXR5SWQmJihlLnZ0cF9ndG1Qcmlvcml0eUlkPWEucHJpb3JpdHlJZCk7dmFyIGc9ZD1SeihlLHtldmVudDphLGluZGV4OnRoaXMuaW5kZXgsdHlwZToyLG5hbWU6Y30pO2VbR2YuWmtdJiZ0eXBlb2YgZz09PSJzdHJpbmciJiYoZz1lW0dmLlprXT09PTE/Zy50b0xvd2VyQ2FzZSgpOmcudG9VcHBlckNhc2UoKSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5haCkmJihnPVlmKDE4KT9lW0dmLmFoXT09PTE/ClZmKGcsIlBFUklPRCIpOmVbR2YuYWhdPT09Mj9WZihnLCJDT01NQSIpOlZmKGcsIkFVVE9NQVRJQyIpOmVbR2YuYWhdPT09MT9WZihnLCJQRVJJT0QiKTpWZihnLCJDT01NQSIpKTtlLmhhc093blByb3BlcnR5KEdmLmJsKSYmZz09PW51bGwmJihnPWVbR2YuYmxdKTtlLmhhc093blByb3BlcnR5KEdmLmlsKSYmZz09PXZvaWQgMCYmKGc9ZVtHZi5pbF0pO2UuaGFzT3duUHJvcGVydHkoR2YuZXApJiYoZz1KYihnKSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5mbCkmJmc9PT0hMCYmKGc9ZVtHZi5mbF0pO2UuaGFzT3duUHJvcGVydHkoR2YuYWwpJiZnPT09ITEmJihnPWVbR2YuYWxdKTtkPWd9Y2F0Y2goaCl7YS5sb2dNYWNyb0Vycm9yJiZhLmxvZ01hY3JvRXJyb3IoaCxOdW1iZXIodGhpcy5pbmRleCksYyksZD0hMX1iW3RoaXMuaW5kZXhdPSExO3JldHVybiBkfX07VXoucHJvdG90eXBlLkZnPWZ1bmN0aW9uKCl7cmV0dXJuIG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sdGhpcy5IKX07dmFyIFZ6PWZ1bmN0aW9uKGEsYixjKXt0aGlzLkg9YTt0aGlzLnRhZ3M9Yjt0aGlzLm1hY3Jvcz1jfTtWei5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oYSxiKXt0cnl7Zm9yKHZhciBjPXt9LGQ9bShPYmplY3Qua2V5cyh0aGlzLkgpKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtjW2ZdPWY9PT0iZnVuY3Rpb24iP3RoaXMuSFtmXTplbCh0aGlzLkhbZl0sYSx0aGlzLnRhZ3MsdGhpcy5tYWNyb3MsYil9cmV0dXJuIGNsKGMpfWNhdGNoKGcpe0pTT04uc3RyaW5naWZ5KHRoaXMuSCl9cmV0dXJuIDJ9O1Z6LnByb3RvdHlwZS5GZz1mdW5jdGlvbigpe3JldHVybiBuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHRoaXMuSCl9O3ZhciBXej1mdW5jdGlvbihhLGIpe3RoaXMuaW5kZXg9Yjt0aGlzLk49W107dGhpcy5SPVtdO3RoaXMuSz1bXTt0aGlzLkg9W107dGhpcy5uYW1lPSIiO2Zvcih2YXIgYz1tKGEpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1tKGQudmFsdWUpLGY9ZS5uZXh0KCkudmFsdWUsZz15YShlKSxoPWYsbD1nO2g9PT0iaWYiP3RoaXMuTj1sOmg9PT0idW5sZXNzIj90aGlzLlI9bDpoPT09ImFkZCI/dGhpcy5LPWw6aD09PSJibG9jayI/dGhpcy5IPWw6aD09PSJydWxlTmFtZSImJih0aGlzLm5hbWU9bFswXSl9fTsKV3oucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9WHoodGhpcyxiKSxkPVtdLGU9W107Yz8oZC5wdXNoLmFwcGx5KGQsdyh0aGlzLkspKSxlLnB1c2guYXBwbHkoZSx3KHRoaXMuSCkpKTpjPT09bnVsbCYmZS5wdXNoLmFwcGx5KGUsdyh0aGlzLkgpKTtyZXR1cm57ZmlyaW5nVGFnczpkLGJsb2NraW5nVGFnczplfX07CnZhciBYej1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1tKGEuTiksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWIoZC52YWx1ZSk7aWYoZT09PTApcmV0dXJuITE7aWYoZT09PTIpcmV0dXJuIG51bGx9Zm9yKHZhciBmPW0oYS5SKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9YihnLnZhbHVlKTtpZihoPT09MilyZXR1cm4gbnVsbDtpZihoPT09MSlyZXR1cm4hMX1yZXR1cm4hMH07V3oucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfTt2YXIgWXo9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5JYT1hO3RoaXMuaW5kZXg9Yjt0aGlzLnRhZ3M9Yzt0aGlzLm1hY3Jvcz1kO3RoaXMuTz1TdHJpbmcodGhpcy5JYVtHZi5ZYl0pO3RoaXMubmFtZT1TdHJpbmcodGhpcy5JYVtHZi5SbV18fCIiKTt0aGlzLnRhZ0lkPU51bWJlcih0aGlzLklhW0dmLnlqXSl9OwpZei5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oYSxiLGMpe2M9Yz09PXZvaWQgMD97fTpjO3ZhciBkLGU9YztlPWU9PT12b2lkIDA/e306ZTt2YXIgZj17fSxnO2ZvcihnIGluIHRoaXMuSWEpdGhpcy5JYS5oYXNPd25Qcm9wZXJ0eShnKSYmKGZbZ109ZWwodGhpcy5JYVtnXSxhLHRoaXMudGFncyx0aGlzLm1hY3JvcyxbXSkpO2Q9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxmLGUpO2QudnRwX2d0bVRhZ0lkPXRoaXMudGFnSWQ7dGhpcy5JYVtHZi5wbC50b1N0cmluZygpXSYmVHooKTtSeihkLHtldmVudDphLGluZGV4OnRoaXMuaW5kZXgsdHlwZToxLG5hbWU6dGhpcy5uYW1lfSl9O1l6LnByb3RvdHlwZS5GZz1mdW5jdGlvbigpe3JldHVybiBuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHRoaXMuSWEpfTsKdmFyIFp6PWZ1bmN0aW9uKGEsYil7aWYoYS5JYVtHZi50bl0pcmV0dXJuIGVsKGEuSWFbR2YudG5dLGIsYS50YWdzLGEubWFjcm9zLFtdKX0sJHo9ZnVuY3Rpb24oYSxiKXtpZihhLklhW0dmLkRuXSlyZXR1cm4gZWwoYS5JYVtHZi5Ebl0sYixhLnRhZ3MsYS5tYWNyb3MsW10pfSxhQT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuSWFbR2YuY3BdO2lmKGMpcmV0dXJuIGVsKGMsYixhLnRhZ3MsYS5tYWNyb3MsW10pfTtZei5wcm90b3R5cGUuZ2V0TWV0YWRhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGVsKHRoaXMuSWFbR2YuTUVUQURBVEFdLGEsdGhpcy50YWdzLHRoaXMubWFjcm9zLFtdKX07WXoucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfTt2YXIgYkE9ZnVuY3Rpb24oKXt0aGlzLm1hY3Jvcz1bXTt0aGlzLnJ1bGVzPVtdO3RoaXMucHJlZGljYXRlcz1bXTt0aGlzLnRhZ3M9W107dGhpcy52az1bXX07YkEucHJvdG90eXBlLmdldFJ1bGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucnVsZXN9O3ZhciBjQT1uZXcgYkE7ZnVuY3Rpb24gZEEoYSxiLGMsZCl7dmFyIGU9V2MoKSxmO2lmKGU9PT0xKWE6e3ZhciBnPUUoMyk7Zz1nLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBoPSJodHRwczovLyIrZyxsPSJodHRwOi8vIitnLG49MSxwPUIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLHE9MDtxPHAubGVuZ3RoJiZxPDEwMDtxKyspe3ZhciByPXBbcV0uc3JjO2lmKHIpe3I9ci50b0xvd2VyQ2FzZSgpO2lmKHIuaW5kZXhPZihsKT09PTApe2Y9MzticmVhayBhfW49PT0xJiZyLmluZGV4T2YoaCk9PT0wJiYobj0yKX19Zj1ufWVsc2UgZj1lO3JldHVybihmPT09Mnx8ZHx8Imh0dHA6IiE9PUEubG9jYXRpb24ucHJvdG9jb2w/YTpiKStjfTt2YXIgZUE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSz17fTt0aGlzLkg9e307ZnooZnVuY3Rpb24oYil7dmFyIGM9W10sZDtmb3IoZCBpbiBhLkspT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEuSyxkKSYmYy5wdXNoKGQrIn4iK2EuS1tkXSk7dmFyIGU9W10sZjtmb3IoZiBpbiBhLkgpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEuSCxmKSYmZS5wdXNoKGYrIn4iK2EuSFtmXSk7Yi50ZiYmKGEuSz17fSxhLkg9e30pO3ZhciBnPVtdO2MubGVuZ3RoPjAmJmcucHVzaChbImJjcyIsYy5qb2luKCIuIildKTtlLmxlbmd0aD4wJiZnLnB1c2goWyJiZXQiLGUuam9pbigiLiIpXSk7cmV0dXJuIGd9KX0sZkE7ZnVuY3Rpb24gZ0EoKXtmQXx8KGZBPW5ldyBlQSl9O2Z1bmN0aW9uIGhBKGEsYixjLGQsZSl7aWYoIUVrKGEpKXtkLmxvYWRFeHBlcmltZW50cz15aigpO0hrKGEsZCxlKTt2YXIgZj1pQShhKSxnPWZ1bmN0aW9uKCl7b2soKS5jb250YWluZXJbYV0mJihvaygpLmNvbnRhaW5lclthXS5zdGF0ZT0zKTtqQSgpfSxoPXtkZXN0aW5hdGlvbklkOmEsZW5kcG9pbnQ6MH07aWYoV2ooKSl7dmFyIGw9WGooKSxuPWwrIi8iK2tBKGYsYSk7Wm4oaCxuLHZvaWQgMCxmdW5jdGlvbigpe2xBKGEsbixsKyIvIitmLGgsZyl9KX1lbHNle3ZhciBwPVNiKGEsIkdUTS0iKSxxPWRrKCkscj1jPyIvZ3RhZy9qcyI6Ii9ndG0uanMiLHQ9bUEoYixyK2YsYSk7aWYoIXQpe3ZhciB1PUUoMykrcjtxJiZLYyYmcCYmKHU9S2MucmVwbGFjZSgvXig/Omh0dHBzPzpcL1wvKT8vaSwiIikuc3BsaXQoL1s/I10vKVswXSk7dD1kQSgiaHR0cHM6Ly8iLCJodHRwOi8vIix1K2YpfVpuKGgsdCx2b2lkIDAsZyl9fX0KZnVuY3Rpb24gakEoKXtLaygpfHxHYihMaygpLGZ1bmN0aW9uKGEsYil7bkEoYSxiLnRyYW5zcG9ydFVybCxiLmNvbnRleHQpO1AoOTIpfSl9ZnVuY3Rpb24gbkEoYSxiLGMsZCl7aWYoIUdrKGEpKWlmKGMubG9hZEV4cGVyaW1lbnRzfHwoYy5sb2FkRXhwZXJpbWVudHM9eWooKSksS2soKSlKayhhLGIsYyxkKTtlbHNle0lrKGEsYyxkKTt2YXIgZT17ZGVzdGluYXRpb25JZDphLGVuZHBvaW50OjB9O2lmKFdqKCkpe3ZhciBmPVhqKCksZz0iZ3RkIitpQShhLCEwKSxoPWYrIi8iK2tBKGcsYSk7Wm4oZSxoLHZvaWQgMCxmdW5jdGlvbigpe2xBKGEsaCxmKyIvIitnLGUpfSl9ZWxzZXt2YXIgbD0iL2d0YWcvZGVzdGluYXRpb24iK2lBKGEsITApLG49bUEoYixsLGEpO258fChuPWRBKCJodHRwczovLyIsImh0dHA6Ly8iLEUoMykrbCkpO1puKGUsbil9fX0KZnVuY3Rpb24gbEEoYSxiLGMsZCxlKXtpZihNKDQxMykpe2dBKCk7dmFyIGY9ZkE7aWYoZm4uTil7dmFyIGc9QS5wZXJmb3JtYW5jZSxoPS0xO2lmKGcmJmcuZ2V0RW50cmllc0J5VHlwZSl7dmFyIGw9UmooYikuaHJlZixuPWcuZ2V0RW50cmllc0J5TmFtZShsKS5wb3AoKTtpZighbilmb3IodmFyIHA9Zy5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLHE9MDtxPHAubGVuZ3RoO3ErKyl7dmFyIHI9cFtxXTtpZihyLm5hbWUmJnIubmFtZS5pbmRleE9mKGIpIT09LTEpe249cjticmVha319biYmbi5yZXNwb25zZVN0YXR1cyE9PXZvaWQgMCYmKGg9bi5yZXNwb25zZVN0YXR1cyl9Zi5LW2FdPWh9UCgxOTApO3ZhciB0PW5tKGptLmJhLmtqKXx8e307dFthXT0hMDttbShqbS5iYS5raix0KTt2YXIgdT1jKyhjLmluZGV4T2YoIj8iKT09PS0xPyI/Zj0xIjoiJmY9MSIpO2U/Wm4oZCx1LHZvaWQgMCxlKTpabihkLHUpfWVsc2UgZSYmZSgpfQpmdW5jdGlvbiBpQShhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPSI/aWQ9IitlbmNvZGVVUklDb21wb25lbnQoYSksZD1FKDE5KTtkIT09ImRhdGFMYXllciImJihjKz0iJmw9IitkKTt2YXIgZT1TYihhLCJHVE0tIik7aWYoIWV8fGIpYys9IiZjeD1jIjtlJiZJZig2MikmJihjKz0iJmdvb2dsZV9vbmx5PXRydWUiKTt2YXIgZj1jLGcsaD17RG86SmYoMTUpLElvOkUoMTQpfTtnPUNmKGgpO2M9ZisoIiZndG09IitnKTtkaygpJiYoYys9IiZzaWduPSIrQWoucWopO3ZhciBsPWMsbj1KZig1NCk7aWYobj09PTEpe2wrPSImZnBzPWZjIjt2YXIgcD1FKDYwKTtwJiYobCs9IiZnZGV2PSIrcCl9ZWxzZSBuPT09MiYmKGwrPSImZnBzPWZlIik7cmV0dXJuIGx9CmZ1bmN0aW9uIGtBKGEsYil7aWYoIU0oNDEzKXx8IVhqKCkpcmV0dXJuIGE7dmFyIGM9RSg1OCk7aWYoIWMpcmV0dXJuIFAoMTgyKSxhO3RyeXt2YXIgZD1OYigpLGU9RWYoYSxjKSxmPU5iKCktZDtnQSgpO3ZhciBnPWZBO2ZuLk4mJihnLkhbYl09Zik7cmV0dXJuIGV9Y2F0Y2goaCl7cmV0dXJuIFAoMTgzKSxhfX1mdW5jdGlvbiBtQShhLGIsYyl7aWYoYWsoKSYmYSl7dmFyIGQ9RSg1OCksZT1YaigpO2lmKGQmJmUpdHJ5e3ZhciBmPU5iKCk7Yj1lKyIvIitFZihiLGQpO3ZhciBnPU5iKCktZjtnQSgpO3ZhciBoPWZBO2ZuLk4mJihoLkhbY109Zyl9Y2F0Y2gobCl7UCgxODMpfXJldHVybiBZaihhLGIpfX07dmFyIHBBPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLks9bmV3IEZiO3RoaXMuSD17fTt0aGlzLk49e307dGhpcy5SPXtuYW1lOkUoMTkpLHNldDpmdW5jdGlvbihiLGMpe0VkKFZiKGIsYyksYS5IKTtvQShhKX0sZ2V0OmZ1bmN0aW9uKGIpe3JldHVybiBhLmdldChiLDIpfSxyZXNldDpmdW5jdGlvbigpe2EuSz1uZXcgRmI7YS5IPXt9O29BKGEpfX19O3BBLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiE9Mj90aGlzLksuZ2V0KGEpOnFBKHRoaXMsYSl9O3ZhciBxQT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yi5zcGxpdCgiLiIpO2M9Y3x8W107Zm9yKHZhciBlPWEuSCxmPTA7ZjxkLmxlbmd0aDtmKyspe2lmKGU9PT1udWxsKXJldHVybiExO2lmKGU9PT12b2lkIDApYnJlYWs7ZT1lW2RbZl1dO2lmKGMuaW5kZXhPZihlKSE9PS0xKXJldHVybn1yZXR1cm4gZX07CnBBLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLk4uaGFzT3duUHJvcGVydHkoYSl8fCh0aGlzLksuc2V0KGEsYiksRWQoVmIoYSxiKSx0aGlzLkgpLG9BKHRoaXMpKX07dmFyIHNBPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPVsiZ3RtLmFsbG93bGlzdCIsImd0bS5ibG9ja2xpc3QiLCJndG0ud2hpdGVsaXN0IiwiZ3RtLmJsYWNrbGlzdCIsInRhZ1R5cGVCbGFja2xpc3QiXSxiPXJBLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXSxlPWIuZ2V0KGQsMSk7aWYoQXJyYXkuaXNBcnJheShlKXx8Q2QoZSkpZT1FZChlLG51bGwpO2IuTltkXT1lfX0sb0E9ZnVuY3Rpb24oYSxiKXtHYihhLk4sZnVuY3Rpb24oYyxkKXthLksuc2V0KGMsZCk7RWQoVmIoYyksYS5IKTtFZChWYihjLGQpLGEuSCk7YiYmZGVsZXRlIGEuTltjXX0pfSxyQT1uZXcgcEEsdEE9ckEuUjtmdW5jdGlvbiB1QShhLGIpe3JldHVybiByQS5nZXQoYSxiKX0KZnVuY3Rpb24gdkEoYSxiKXt2YXIgYz1iPT09dm9pZCAwPzI6YixkPXJBLGUsZj0oYz09PXZvaWQgMD8yOmMpIT09MT9xQShkLGEpOmQuSy5nZXQoYSk7QWQoZik9PT0iYXJyYXkifHxBZChmKT09PSJvYmplY3QiP2U9RWQoZixudWxsKTplPWY7cmV0dXJuIGV9O3ZhciB3QT1uZXcgUmVnRXhwKC9eKC4qXC4pPyhnb29nbGV8eW91dHViZXxibG9nZ2VyfHdpdGhnb29nbGUpKFwuY29tPyk/KFwuW2Etel17Mn0pP1wuPyQvKSx4QT17Y2w6WyJlY2wiXSxjdXN0b21QaXhlbHM6WyJub25Hb29nbGVQaXhlbHMiXSxlY2w6WyJjbCJdLGVobDpbImhsIl0sZ2Fhd2M6WyJnb29ndGFnIl0saGw6WyJlaGwiXSxodG1sOlsiY3VzdG9tU2NyaXB0cyIsImN1c3RvbVBpeGVscyIsIm5vbkdvb2dsZVBpeGVscyIsIm5vbkdvb2dsZVNjcmlwdHMiLCJub25Hb29nbGVJZnJhbWVzIl0sY3VzdG9tU2NyaXB0czpbImh0bWwiLCJjdXN0b21QaXhlbHMiLCJub25Hb29nbGVQaXhlbHMiLCJub25Hb29nbGVTY3JpcHRzIiwibm9uR29vZ2xlSWZyYW1lcyJdLG5vbkdvb2dsZVBpeGVsczpbXSxub25Hb29nbGVTY3JpcHRzOlsibm9uR29vZ2xlUGl4ZWxzIl0sbm9uR29vZ2xlSWZyYW1lczpbIm5vbkdvb2dsZVBpeGVscyJdfSx5QT17Y2w6WyJlY2wiXSxjdXN0b21QaXhlbHM6WyJjdXN0b21TY3JpcHRzIiwKImh0bWwiXSxlY2w6WyJjbCJdLGVobDpbImhsIl0sZ2Fhd2M6WyJnb29ndGFnIl0saGw6WyJlaGwiXSxodG1sOlsiY3VzdG9tU2NyaXB0cyJdLGN1c3RvbVNjcmlwdHM6WyJodG1sIl0sbm9uR29vZ2xlUGl4ZWxzOlsiY3VzdG9tUGl4ZWxzIiwiY3VzdG9tU2NyaXB0cyIsImh0bWwiLCJub25Hb29nbGVTY3JpcHRzIiwibm9uR29vZ2xlSWZyYW1lcyJdLG5vbkdvb2dsZVNjcmlwdHM6WyJjdXN0b21TY3JpcHRzIiwiaHRtbCJdLG5vbkdvb2dsZUlmcmFtZXM6WyJjdXN0b21TY3JpcHRzIiwiaHRtbCIsIm5vbkdvb2dsZVNjcmlwdHMiXX0sekE9Imdvb2dsZSBjdXN0b21QaXhlbHMgY3VzdG9tU2NyaXB0cyBodG1sIG5vbkdvb2dsZVBpeGVscyBub25Hb29nbGVTY3JpcHRzIG5vbkdvb2dsZUlmcmFtZXMiLnNwbGl0KCIgIik7CmZ1bmN0aW9uIEFBKCl7dmFyIGE9dUEoImd0bS5hbGxvd2xpc3QiKXx8dUEoImd0bS53aGl0ZWxpc3QiKTthJiZQKDkpO0lmKDYyKSYmKGE9dm9pZCAwKTtCQSgpJiYoSWYoNjIpP1AoMTE2KTooUCgxMTcpLElmKDQ4KSYmKGE9W10sd2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZyYmd2luZG93LmNvbnNvbGUubG9nKCJHVE0gYmxvY2tlZC4gU2VlIGdvLzEzNjg3NzI4LiIpKSkpO3ZhciBiPWEmJlJiKEtiKGEpLHhBKSxjPXVBKCJndG0uYmxvY2tsaXN0Iil8fHVBKCJndG0uYmxhY2tsaXN0Iik7Y3x8KGM9dUEoInRhZ1R5cGVCbGFja2xpc3QiKSkmJlAoMyk7Yz9QKDgpOmM9W107QkEoKSYmKGM9S2IoYyksYy5wdXNoKCJub25Hb29nbGVQaXhlbHMiLCJub25Hb29nbGVTY3JpcHRzIiwic2FuZGJveGVkU2NyaXB0cyIpKTtLYihjKS5pbmRleE9mKCJnb29nbGUiKT49MCYmUCgyKTt2YXIgZD1jJiZSYihLYihjKSx5QSksZT17fTtyZXR1cm4gZnVuY3Rpb24oZil7dmFyIGc9ZiYmCmZbR2YuWWJdO2lmKCFnfHx0eXBlb2YgZyE9PSJzdHJpbmciKXJldHVybiEwO2c9Zy5yZXBsYWNlKC9eXyovLCIiKTtpZihlW2ddIT09dm9pZCAwKXJldHVybiBlW2ddO3ZhciBoPWFsKDI3LGZ1bmN0aW9uKCl7cmV0dXJue319KVtnXXx8W10sbD0hMDthJiYobD1sJiZDQShnLGgsYikpO3ZhciBuPSExO2MmJihuPURBKGcsaCxkKSk7dmFyIHA9IWx8fG47IXAmJihoLmluZGV4T2YoInNhbmRib3hlZFNjcmlwdHMiKT09PS0xfHxiJiZiLmluZGV4T2YoInNhbmRib3hlZFNjcmlwdHMiKSE9PS0xPzA6RWIoZCx6QSkpJiYocD0hMCk7cmV0dXJuIGVbZ109cH19ZnVuY3Rpb24gQ0EoYSxiLGMpe2lmKGMuaW5kZXhPZihhKTwwKWlmKGImJmIubGVuZ3RoPjApZm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKGMuaW5kZXhPZihiW2RdKTwwKXJldHVybiBQKDExKSwhMX1lbHNlIHJldHVybiExO3JldHVybiEwfQpmdW5jdGlvbiBEQShhLGIsYyl7dmFyIGQ9Yy5pbmRleE9mKGEpPj0wO2lmKGQpcmV0dXJuIGQ7dmFyIGU9RWIoYyxifHxbXSk7ZSYmUCgxMCk7cmV0dXJuIGV9ZnVuY3Rpb24gQkEoKXtyZXR1cm4gd0EudGVzdChBLmxvY2F0aW9uJiZBLmxvY2F0aW9uLmhvc3RuYW1lKX07ZnVuY3Rpb24gRUEoYSl7Zm9yKHZhciBiPVtdLGM9W10sZD1GQShhKSxlPW0oY0EuZ2V0UnVsZXMoKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe2Zvcih2YXIgZz1mLnZhbHVlLmV2YWx1YXRlKGEsZCksaD1nLmZpcmluZ1RhZ3MsbD1nLmJsb2NraW5nVGFncyxuPTA7bjxoLmxlbmd0aDtuKyspYltoW25dXT0hMDtmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyljW2xbcF1dPSEwfWZvcih2YXIgcT1bXSxyPTA7cjxjQS50YWdzLmxlbmd0aDtyKyspYltyXSYmIWNbcl0mJihxW3JdPSEwKTtyZXR1cm4gcX1mdW5jdGlvbiBGQShhKXt2YXIgYj1bXTtyZXR1cm4gZnVuY3Rpb24oYyl7YltjXT09PXZvaWQgMCYmKGJbY109Y0EucHJlZGljYXRlc1tjXS5ldmFsdWF0ZShhLFtdKSk7cmV0dXJuIGJbY119fTt2YXIgR0E9ZnVuY3Rpb24oKXt0aGlzLks9MDt0aGlzLkg9e319O0dBLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Kyt0aGlzLks7dGhpcy5IW2FdPXRoaXMuSFthXXx8e307dGhpcy5IW2FdW1N0cmluZyhkKV09e2xpc3RlbmVyOmIscmY6Y307cmV0dXJuIGR9O0dBLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuSFthXSxkPVN0cmluZyhiKTtpZighY3x8IWNbZF0pcmV0dXJuITE7ZGVsZXRlIGNbZF07cmV0dXJuITB9O3ZhciBJQT1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO0diKEhBLkhbYV0sZnVuY3Rpb24oZCxlKXtjLmluZGV4T2YoZS5saXN0ZW5lcik8MCYmKGUucmY9PT12b2lkIDB8fGIuaW5kZXhPZihlLnJmKT49MCkmJmMucHVzaChlLmxpc3RlbmVyKX0pO3JldHVybiBjfTtmdW5jdGlvbiBKQShhLGIsYyl7cmV0dXJue2VudGl0eVR5cGU6YSxpbmRleEluT3JpZ2luQ29udGFpbmVyOmIsbmFtZUluT3JpZ2luQ29udGFpbmVyOmMsb3JpZ2luQ29udGFpbmVySWQ6RSg1KSxvcmlnaW5DSWQ6dmsoKX19O2Z1bmN0aW9uIEtBKGEsYil7aWYoZGF0YS5lbnRpdGllcyl7dmFyIGM9ZGF0YS5lbnRpdGllc1thXTtpZihjKXJldHVybiBjW2JdfX07dmFyIE1BPWZ1bmN0aW9uKGEsYil7dGhpcy5IPSExO3RoaXMuUj1bXTt0aGlzLmV2ZW50RGF0YT17dGFnczpbXX07dGhpcy5aPSExO3RoaXMuSz10aGlzLk49MDtMQSh0aGlzLGEsYil9LE5BPWZ1bmN0aW9uKGEsYixjLGQpe2lmKENqLmhhc093blByb3BlcnR5KGIpfHxiPT09Il9fem9uZSIpcmV0dXJuLTE7dmFyIGU9e307Q2QoZCkmJihlPUVkKGQsZSkpO2UuaWQ9YztlLnN0YXR1cz0idGltZW91dCI7cmV0dXJuIGEuZXZlbnREYXRhLnRhZ3MucHVzaChlKS0xfSxPQT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLmV2ZW50RGF0YS50YWdzW2JdO2UmJihlLnN0YXR1cz1jLGUuZXhlY3V0aW9uVGltZT1kKX0sUEE9ZnVuY3Rpb24oYSl7aWYoIWEuSCl7Zm9yKHZhciBiPWEuUixjPTA7YzxiLmxlbmd0aDtjKyspYltjXSgpO2EuSD0hMDthLlIubGVuZ3RoPTB9fSxMQT1mdW5jdGlvbihhLGIsYyl7YiE9PXZvaWQgMCYmYS53ZyhiKTtjJiZBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtQQShhKX0sCk51bWJlcihjKSl9O01BLnByb3RvdHlwZS53Zz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9UGIoZnVuY3Rpb24oKXtiZChmdW5jdGlvbigpe2EoRSg1KSxiLmV2ZW50RGF0YSl9KX0pO3RoaXMuSD9jKCk6dGhpcy5SLnB1c2goYyl9O3ZhciBRQT1mdW5jdGlvbihhKXthLk4rKztyZXR1cm4gUGIoZnVuY3Rpb24oKXthLksrKzthLlomJmEuSz49YS5OJiZQQShhKX0pfSxSQT1mdW5jdGlvbihhKXthLlo9ITA7YS5LPj1hLk4mJlBBKGEpfTtmdW5jdGlvbiBTQSgpe3JldHVybiBBW1RBKCldfQpmdW5jdGlvbiBUQSgpe3JldHVybiBBLkdvb2dsZUFuYWx5dGljc09iamVjdHx8ImdhIn12YXIgV0E9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXt9fTtmdW5jdGlvbiBYQSgpe2E6e3ZhciBhPUUoNSk7fX0KZnVuY3Rpb24gWUEoYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz1TQSgpLGQ9YyYmYy5nZXRCeU5hbWUmJmMuZ2V0QnlOYW1lKGEpO2lmKGQpe3ZhciBlPWQuZ2V0KCJzZW5kSGl0VGFzayIpO2Quc2V0KCJzZW5kSGl0VGFzayIsZnVuY3Rpb24oZil7dmFyIGc9Zi5nZXQoImhpdFBheWxvYWQiKSxoPWYuZ2V0KCJoaXRDYWxsYmFjayIpLGw9Zy5pbmRleE9mKCImdGlkPSIrYik8MDtsJiYoZi5zZXQoImhpdFBheWxvYWQiLGcucmVwbGFjZSgvJnRpZD1VQS1bMC05XSstWzAtOV0rLywiJnRpZD0iK2IpLCEwKSxmLnNldCgiaGl0Q2FsbGJhY2siLHZvaWQgMCwhMCkpO2UoZik7bCYmKGYuc2V0KCJoaXRQYXlsb2FkIixnLCEwKSxmLnNldCgiaGl0Q2FsbGJhY2siLGgsITApLGYuc2V0KCJfeF8xOSIsdm9pZCAwLCEwKSxlKGYpKX0pfX19O3ZhciBhQj1bImVzIiwiMSJdLGJCPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmV2ZW50RGF0YT17fTt0aGlzLkg9e307ZnooZnVuY3Rpb24oYil7dmFyIGM7dmFyIGQ9Yi5ldmVudElkLGU9Yi50ZjtpZihhLmV2ZW50RGF0YVtkXSl7dmFyIGY9W107YS5IW2RdfHxmLnB1c2goYUIpO2YucHVzaC5hcHBseShmLHcoYS5ldmVudERhdGFbZF0pKTtlJiYoYS5IW2RdPSEwKTtjPWZ9ZWxzZSBjPVtdO3JldHVybiBjfSl9LGNCO2Z1bmN0aW9uIGRCKGEsYil7dmFyIGM7aWYoKGM9Y0IpIT1udWxsJiZmbi5OKXt2YXIgZD1jLmV2ZW50RGF0YSxlO2U9Yi5tYXRjaCgvXihndG18Z3RhZylcLi8pP2VuY29kZVVSSUNvbXBvbmVudChiKToiKiI7ZFthXT1bWyJlIixlXSxbImVpZCIsU3RyaW5nKGEpXV07Z3ooKTtleihhKX19O3ZhciBlQj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5IPXt9O3RoaXMuSz17fTtmeihmdW5jdGlvbihiKXt2YXIgYz1iLmV2ZW50SWQsZD1iLnRmLGU9W10sZj1hLkhbY118fFtdO2YubGVuZ3RoJiZlLnB1c2goWyJ0ciIsZi5qb2luKCIuIildKTt2YXIgZz1hLktbY118fFtdO2cubGVuZ3RoJiZlLnB1c2goWyJ0aSIsZy5qb2luKCIuIildKTtkJiYoZGVsZXRlIGEuSFtjXSxkZWxldGUgYS5LW2NdKTtyZXR1cm4gZX0pfSxmQjsKZnVuY3Rpb24gZ0IoYSxiLGMpe2ZCfHwoZkI9bmV3IGVCKTt2YXIgZD1mQjtpZihmbi5OJiZiKXt2YXIgZT1kbihiKTtkLkhbYV09ZC5IW2FdfHxbXTtkLkhbYV0ucHVzaChjK2UpO3ZhciBmPWJbR2YuWWJdO2lmKCFmKXRocm93IEVycm9yKCJFcnJvcjogTm8gZnVuY3Rpb24gbmFtZSBnaXZlbiBmb3IgZnVuY3Rpb24gY2FsbC4iKTt2YXIgZz0oUXpbZl0/IjEiOiIyIikrZTtkLktbYV09ZC5LW2FdfHxbXTtkLktbYV0ucHVzaChnKTtneigpO2V6KGEpfX07ZnVuY3Rpb24gaEIoYSxiLGMpe2M9Yz09PXZvaWQgMD8hMTpjO2lCKCkuYWRkUmVzdHJpY3Rpb24oMCxhLGIsYyl9ZnVuY3Rpb24gakIoKXt2YXIgYT12aygpO3JldHVybiBpQigpLmdldFJlc3RyaWN0aW9ucygwLGEpfWZ1bmN0aW9uIGtCKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6YztpQigpLmFkZFJlc3RyaWN0aW9uKDEsYSxiLGMpfWZ1bmN0aW9uIGxCKCl7dmFyIGE9dmsoKTtyZXR1cm4gaUIoKS5nZXRSZXN0cmljdGlvbnMoMSxhKX12YXIgbUI9ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lcj17fTt0aGlzLkg9e319LG5CPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5jb250YWluZXJbYl07Y3x8KGM9e19lbnRpdHk6e2ludGVybmFsOltdLGV4dGVybmFsOltdfSxfZXZlbnQ6e2ludGVybmFsOltdLGV4dGVybmFsOltdfX0sYS5jb250YWluZXJbYl09Yyk7cmV0dXJuIGN9OwptQi5wcm90b3R5cGUuYWRkUmVzdHJpY3Rpb249ZnVuY3Rpb24oYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7aWYoIWR8fCF0aGlzLkhbYl0pe3ZhciBlPW5CKHRoaXMsYik7YT09PTA/ZD9lLl9lbnRpdHkuZXh0ZXJuYWwucHVzaChjKTplLl9lbnRpdHkuaW50ZXJuYWwucHVzaChjKTphPT09MSYmKGQ/ZS5fZXZlbnQuZXh0ZXJuYWwucHVzaChjKTplLl9ldmVudC5pbnRlcm5hbC5wdXNoKGMpKX19OwptQi5wcm90b3R5cGUuZ2V0UmVzdHJpY3Rpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9bkIodGhpcyxiKTtpZihhPT09MCl7dmFyIGQsZTtyZXR1cm5bXS5jb25jYXQodygoYz09bnVsbD92b2lkIDA6KGQ9Yy5fZW50aXR5KT09bnVsbD92b2lkIDA6ZC5pbnRlcm5hbCl8fFtdKSx3KChjPT1udWxsP3ZvaWQgMDooZT1jLl9lbnRpdHkpPT1udWxsP3ZvaWQgMDplLmV4dGVybmFsKXx8W10pKX1pZihhPT09MSl7dmFyIGYsZztyZXR1cm5bXS5jb25jYXQodygoYz09bnVsbD92b2lkIDA6KGY9Yy5fZXZlbnQpPT1udWxsP3ZvaWQgMDpmLmludGVybmFsKXx8W10pLHcoKGM9PW51bGw/dm9pZCAwOihnPWMuX2V2ZW50KT09bnVsbD92b2lkIDA6Zy5leHRlcm5hbCl8fFtdKSl9cmV0dXJuW119OwptQi5wcm90b3R5cGUuZ2V0RXh0ZXJuYWxSZXN0cmljdGlvbnM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uQih0aGlzLGIpLGQsZTtyZXR1cm4gYT09PTA/KGM9PW51bGw/dm9pZCAwOihkPWMuX2VudGl0eSk9PW51bGw/dm9pZCAwOmQuZXh0ZXJuYWwpfHxbXTooYz09bnVsbD92b2lkIDA6KGU9Yy5fZXZlbnQpPT1udWxsP3ZvaWQgMDplLmV4dGVybmFsKXx8W119O21CLnByb3RvdHlwZS5yZW1vdmVFeHRlcm5hbFJlc3RyaWN0aW9ucz1mdW5jdGlvbihhKXt2YXIgYj1uQih0aGlzLGEpO2IuX2V2ZW50JiYoYi5fZXZlbnQuZXh0ZXJuYWw9W10pO2IuX2VudGl0eSYmKGIuX2VudGl0eS5leHRlcm5hbD1bXSk7dGhpcy5IW2FdPSEwfTtmdW5jdGlvbiBpQigpe3JldHVybiBraigiciIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG1CfSl9O2Z1bmN0aW9uIG9CKGEsYixjLGQpe3ZhciBlPWNBLnRhZ3NbYV0sZj1wQihhLGIsYyxkKTtpZighZilyZXR1cm4gbnVsbDt2YXIgZz1aeihlLGMpO2lmKGcmJmcubGVuZ3RoKXt2YXIgaD1nWzBdO2Y9b0IoaC5pbmRleCx7b25TdWNjZXNzOmYsb25GYWlsdXJlOmguYm89PT0xP2IudGVybWluYXRlOmYsdGVybWluYXRlOmIudGVybWluYXRlfSxjLGQpfXJldHVybiBmfQpmdW5jdGlvbiBwQihhLGIsYyxkKXtmdW5jdGlvbiBlKCl7ZnVuY3Rpb24geSgpe2ltKDMpO3ZhciBTPU5iKCktTjtKQSgxLGEsZi5nZXROYW1lKCkpO2dCKGMuaWQsZywiNyIpO09BKGMubGQsRCwiZXhjZXB0aW9uIixTKTtmbi5IJiZGeihjLGcsSXkuWC51aik7SXx8KEk9ITAsbCgpKX1pZihmLklhW0dmLk9xXSlsKCk7ZWxzZXt2YXIgej1hQShmLGMpO2lmKHohPW51bGwpZm9yKHZhciBDPTA7Qzx6Lmxlbmd0aDtDKyspaWYoIVhvKHpbQ10pKXtsKCk7cmV0dXJufXZhciBEPU5BKGMubGQsZi5PLGYudGFnSWQsZi5nZXRNZXRhZGF0YShjKSksST0hMSxHPXt2dHBfZ3RtT25TdWNjZXNzOmZ1bmN0aW9uKCl7aWYoIUkpe0k9ITA7dmFyIFM9TmIoKS1OO2dCKGMuaWQsZywiNSIpO09BKGMubGQsRCwic3VjY2VzcyIsUyk7Zm4uSCYmRnooYyxnLEl5Llgud2opO2goKX19LHZ0cF9ndG1PbkZhaWx1cmU6ZnVuY3Rpb24oKXtpZighSSl7ST0hMDt2YXIgUz1OYigpLU47Z0IoYy5pZCxnLCI2Iik7Ck9BKGMubGQsRCwiZmFpbHVyZSIsUyk7Zm4uSCYmRnooYyxnLEl5LlgudmopO2woKX19fTtHLnZ0cF9ndG1FdmVudElkPWMuaWQ7Yy5wcmlvcml0eUlkJiYoRy52dHBfZ3RtUHJpb3JpdHlJZD1jLnByaW9yaXR5SWQpO2dCKGMuaWQsZywiMSIpO2ZuLkgmJkV6KGMsZyk7dmFyIE49TmIoKTt0cnl7Zi5ldmFsdWF0ZShjLGQsRyl9Y2F0Y2goUyl7eShTKX1mbi5IJiZGeihjLGcsSXkuWC5Dbil9fXZhciBmPWNBLnRhZ3NbYV0sZz1mLkZnKCksaD1iLm9uU3VjY2VzcyxsPWIub25GYWlsdXJlLG49Yi50ZXJtaW5hdGU7aWYoYy5pc0Jsb2NrZWQoZykpcmV0dXJuIG51bGw7dmFyIHA9JHooZixjKTtpZihwJiZwLmxlbmd0aCl7dmFyIHE9cFswXSxyPW9CKHEuaW5kZXgse29uU3VjY2VzczpoLG9uRmFpbHVyZTpsLHRlcm1pbmF0ZTpufSxjLGQpO2lmKCFyKXJldHVybiBudWxsO2g9cjtsPXEuYm89PT0yP246cn1pZihmLklhW0dmLmtuXXx8Zi5JYVtHZi5RcV0pe3ZhciB0PWYuSWFbR2Yua25dPwpjQS52azpjLnZrLHU9aCx2PWw7aWYoIXRbYV0pe3ZhciB4PXFCKGEsdCxQYihlKSk7aD14Lm9uU3VjY2VzcztsPXgub25GYWlsdXJlfXJldHVybiBmdW5jdGlvbigpe3RbYV0odSx2KX19cmV0dXJuIGV9ZnVuY3Rpb24gcUIoYSxiLGMpe3ZhciBkPVtdLGU9W107YlthXT1yQihkLGUsYyk7cmV0dXJue29uU3VjY2VzczpmdW5jdGlvbigpe2JbYV09c0I7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDtmKyspZFtmXSgpfSxvbkZhaWx1cmU6ZnVuY3Rpb24oKXtiW2FdPXRCO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKWVbZl0oKX19fWZ1bmN0aW9uIHJCKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCxlKXthLnB1c2goZCk7Yi5wdXNoKGUpO2MoKX19ZnVuY3Rpb24gc0IoYSl7YSgpfWZ1bmN0aW9uIHRCKGEsYil7YigpfTt2YXIgd0I9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8Y0EudGFncy5sZW5ndGg7ZCsrKWlmKGFbZF0pe3ZhciBlPWNBLnRhZ3NbZF07dmFyIGY9UUEoYi5sZCk7dHJ5e3ZhciBnPW9CKGQse29uU3VjY2VzczpmLG9uRmFpbHVyZTpmLHRlcm1pbmF0ZTpmfSxiLGQpO2lmKGcpe3ZhciBoPVF6W2UuT107Yy5wdXNoKHtObzpkLHByaW9yaXR5T3ZlcnJpZGU6KGg/aC5wcmlvcml0eU92ZXJyaWRlfHwwOjApfHxLQShlLk8sMSl8fDAsZXhlY3V0ZTpnfSl9ZWxzZSB1QihkLGIpLGYoKX1jYXRjaChuKXtmKCl9fWMuc29ydCh2Qik7Zm9yKHZhciBsPTA7bDxjLmxlbmd0aDtsKyspY1tsXS5leGVjdXRlKCk7cmV0dXJuIGMubGVuZ3RoPjB9OwpmdW5jdGlvbiB4QihhLGIpe2lmKCFIQSlyZXR1cm4hMTt2YXIgYz1hWyJndG0udHJpZ2dlcnMiXSYmU3RyaW5nKGFbImd0bS50cmlnZ2VycyJdKSxkPUlBKGEuZXZlbnQsYz9TdHJpbmcoYykuc3BsaXQoIiwiKTpbXSk7aWYoIWQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7KytlKXt2YXIgZj1RQShiKTt0cnl7ZFtlXShhLGYpfWNhdGNoKGcpe2YoKX19cmV0dXJuITB9ZnVuY3Rpb24gdkIoYSxiKXt2YXIgYyxkPWIucHJpb3JpdHlPdmVycmlkZSxlPWEucHJpb3JpdHlPdmVycmlkZTtjPWQ+ZT8xOmQ8ZT8tMTowO3ZhciBmO2lmKGMhPT0wKWY9YztlbHNle3ZhciBnPWEuTm8saD1iLk5vO2Y9Zz5oPzE6ZzxoPy0xOjB9cmV0dXJuIGZ9CmZ1bmN0aW9uIHVCKGEsYil7aWYoZm4uTil7dmFyIGM9ZnVuY3Rpb24oZCl7dmFyIGU9Yi5pc0Jsb2NrZWQoY0EudGFnc1tkXS5GZygpKT8iMyI6IjQiLGY9WnooY0EudGFnc1tkXSxiKTtmJiZmLmxlbmd0aCYmYyhmWzBdLmluZGV4KTtnQihiLmlkLGNBLnRhZ3NbZF0uRmcoKSxlKTt2YXIgZz0keihjQS50YWdzW2RdLGIpO2cmJmcubGVuZ3RoJiZjKGdbMF0uaW5kZXgpfTtjKGEpfX12YXIgSEE7ZnVuY3Rpb24geUIoKXtIQXx8KEhBPW5ldyBHQSk7cmV0dXJuIEhBfQpmdW5jdGlvbiB6QihhKXt2YXIgYj1hWyJndG0udW5pcXVlRXZlbnRJZCJdLGM9YVsiZ3RtLnByaW9yaXR5SWQiXSxkPWFbImd0bS5wcmlvcml0eVF1ZXVlIl0sZT1hLmV2ZW50O2ZuLkgmJnZ6KGIsZSk7aWYoZT09PSJndG0uanMiKXtpZigkaygxMykpcmV0dXJuITE7WmsoMTMsITApfXZhciBmPSExLGc9bEIoKSxoPUVkKGEsbnVsbCk7aWYoIWcuZXZlcnkoZnVuY3Rpb24odSl7cmV0dXJuIHUoe29yaWdpbmFsRXZlbnREYXRhOmh9KX0pKXtpZihlIT09Imd0bS5qcyImJmUhPT0iZ3RtLmluaXQiJiZlIT09Imd0bS5pbml0X2NvbnNlbnQiKXJldHVybiExO2Y9ITB9ZEIoYixlKTt2YXIgbD1hLmV2ZW50Q2FsbGJhY2ssbj1hLmV2ZW50VGltZW91dCxwPXtpZDpiLHByaW9yaXR5SWQ6Yyxwcmlvcml0eVF1ZXVlOmQsbmFtZTplLGlzQmxvY2tlZDpBQihoLGYpLHZrOltdLGxvZ01hY3JvRXJyb3I6ZnVuY3Rpb24odSx2LHgpe1AoNik7aW0oNCk7SkEoMix2LHgpfSxjYWNoZWRNb2RlbFZhbHVlczpCQigpLApsZDpuZXcgTUEoZnVuY3Rpb24oKXtmbi5IJiZ5eihiLGUpO0Z5KDUsZSk7bCYmbC5hcHBseShsLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LG4pLG9yaWdpbmFsRXZlbnREYXRhOmh9O2ZuLkgmJkN6KHAuaWQpO3ZhciBxPUVBKHApO2ZuLkgmJkR6KHAuaWQpO0Z5KDIsZSk7Y0EuZ2V0UnVsZXMoKTtmJiYocT1DQihxKSk7Zm4uSCYmd3ooYik7dmFyIHI9d0IocSxwKTtyJiZGeSg0LGUpO3ZhciB0PXhCKGEscC5sZCk7UkEocC5sZCk7ZSE9PSJndG0uanMiJiZlIT09Imd0bS5zeW5jInx8WEEoKTtyZXR1cm4gREIocSxyKXx8dH0KZnVuY3Rpb24gQkIoKXt2YXIgYT17fTthLmV2ZW50PXZBKCJldmVudCIsMSk7YS5lY29tbWVyY2U9dkEoImVjb21tZXJjZSIsMSk7YS5ndG09dkEoImd0bSIpO2EuZXZlbnRNb2RlbD12QSgiZXZlbnRNb2RlbCIpO3JldHVybiBhfQpmdW5jdGlvbiBBQihhLGIpe3ZhciBjPUFBKCk7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWMoZCk7aWYoZSlyZXR1cm4hMDt2YXIgZj1kJiZkW0dmLlliXTtpZighZnx8dHlwZW9mIGYhPT0ic3RyaW5nIilyZXR1cm4hMDtmPWYucmVwbGFjZSgvXl8qLywiIik7dmFyIGc9akIoKSxoPWE7YiYmKGg9RWQoYSxudWxsKSxoWyJndG0udW5pcXVlRXZlbnRJZCJdPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTtmb3IodmFyIGw9ITEsbj1hbCgyNyxmdW5jdGlvbigpe3JldHVybnt9fSlbZl18fFtdLHA9bShnKSxxPXAubmV4dCgpOyFxLmRvbmU7cT1wLm5leHQoKSl7dmFyIHI9cS52YWx1ZTt0cnl7cih7ZW50aXR5SWQ6ZixzZWN1cml0eUdyb3VwczpuLG9yaWdpbmFsRXZlbnREYXRhOmh9KXx8KGw9ITApfWNhdGNoKHQpe2w9ITB9fXJldHVybiBsfHxlfX0KZnVuY3Rpb24gQ0IoYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2NdKXt2YXIgZD1jQS50YWdzW2NdLk87aWYoQmpbZF18fGNBLnRhZ3NbY10uSWFbR2YuUnFdIT09dm9pZCAwfHxLQShkLDIpKWJbY109ITB9cmV0dXJuIGJ9ZnVuY3Rpb24gREIoYSxiKXtpZighYilyZXR1cm4gYjtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2NdJiZjQS50YWdzW2NdJiYhQ2pbY0EudGFnc1tjXS5PXSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIEVCPU5mKDYxLDFFMyksRkI9TmYoNjgsMkUzKSxabz1bImFkX3N0b3JhZ2UiLCJhbmFseXRpY3Nfc3RvcmFnZSJdO2Z1bmN0aW9uIEdCKGEsYil7aWYoYSl7dmFyIGM9a2ooImd0aCIsZnVuY3Rpb24oKXtyZXR1cm57fX0pLGQ7YSE9PTJ8fCgoZD1IQigpKT09bnVsbD92b2lkIDA6ZC5zdGF0dXMpIT09M3x8YiE9PXZvaWQgMCYmYjw9RkJ8fChhPTMsYy5kbD1iP01hdGguZmxvb3IoYi8xRTMpOnZvaWQgMCk7Yy5zPWE7SUIoYyl9fWZ1bmN0aW9uIElCKGEpe2lmKGEucyl7dmFyIGI9ZnVuY3Rpb24oKXt2YXIgYz17c3RhdHVzOmEucyxleHBpcmVzOkRhdGUubm93KCkrODY0RTV9O2EuZGwhPT12b2lkIDAmJihjLmRlbGF5PWEuZGwpO2tyKCJndGdfbG9hZF9zdGF0dXMiLGMpfTticChmdW5jdGlvbigpe2lmKFlvKCkpYigpO2Vsc2UgZm9yKHZhciBjPVBiKGIpLGQ9bShabyksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpSWwoYyxlLnZhbHVlKX0sWm8pfX0KZnVuY3Rpb24gSkIoKXt2YXIgYT1LQighMCk7cmV0dXJuIGE/KExCKGEuc3RhdHVzLGEuZGVsYXkpLCExKTohMH1mdW5jdGlvbiBLQihhKXthPWE9PT12b2lkIDA/ITE6YTtpZihhaygpKXt2YXIgYj1ucigiZ3RnX2xvYWRfc3RhdHVzIiksYz1iLnZhbHVlLGQ9YSYmQWIoYz09bnVsbD92b2lkIDA6Yy5leHBpcmVzKSYmKGM9PW51bGw/dm9pZCAwOmMuZXhwaXJlcyk8RGF0ZS5ub3coKSszNkU1O2lmKGIuZXJyb3I9PT0wJiZBYihjPT1udWxsP3ZvaWQgMDpjLnN0YXR1cykmJiFkKXt2YXIgZT17c3RhdHVzOmMuc3RhdHVzfTsoYz09bnVsbD92b2lkIDA6Yy5kZWxheSkhPT12b2lkIDAmJihlLmRlbGF5PWMuZGVsYXkpO3JldHVybiBlfXJldHVybiBIQigpfX1mdW5jdGlvbiBMQihhLGIpe3ZhciBjPWtqKCJndGgiLGZ1bmN0aW9uKCl7cmV0dXJue319KTtjLnM9YTtiIT09dm9pZCAwJiYoYy5kbD1iKX0KZnVuY3Rpb24gSEIoKXt2YXIgYT1taigiZ3RoIik7aWYoYSE9bnVsbCYmYS5zKXt2YXIgYj17c3RhdHVzOmEuc307YS5kbCE9PXZvaWQgMCYmKGIuZGVsYXk9YS5kbCk7cmV0dXJuIGJ9fWZ1bmN0aW9uIE1CKCl7dmFyIGE7KChhPUhCKCkpPT1udWxsP3ZvaWQgMDphLnN0YXR1cyk9PT0xJiZHQigzKX1mdW5jdGlvbiBOQigpe2lmKEpCKCkpe3ZhciBhPURhdGUubm93KCk7bmooImd0aCIse2w6ZnVuY3Rpb24oKXtHQigyLERhdGUubm93KCktYSl9LHM6MX0pO3ZhciBiPUUoNSksYz1TYihiLCJHVE0tIik/Ii9ndG0uanMiOiIvZ3RhZy9qcyIsZD0iaHR0cHM6Ly8iK0UoMykrYysiP2lkPSIrYisiJmd0Z19oZWFsdGg9MSI7VWMoZCxNQixNQik7QS5zZXRUaW1lb3V0KE1CLEVCKX19O2Z1bmN0aW9uIE9CKCl7eUIoKS5hZGRMaXN0ZW5lcigiZ3RtLmluaXQiLGZ1bmN0aW9uKGEsYil7WmsoMjYsITApO00oNTU2KSYmYWsoKSYmIUlmKDQ1KSYmKGZvLkhbY28uaWEuWmJdPWJvLk1hLkxoKTtpZihhaygpKXt2YXIgYztjPWxvKGNvLmlhLlpiKTtnbyhjKT9pbyhjLE5CKTpOQigpfXRvKCExLCEwKTtiKCl9KX07ZnVuY3Rpb24gUEIoKXtpZihtaigicHNjZGwiKSE9PXZvaWQgMClubShqbS5iYS5vaSk9PT12b2lkIDAmJm1tKGptLmJhLm9pLG1qKCJwc2NkbCIpKTtlbHNle3ZhciBhPWZ1bmN0aW9uKGMpe25qKCJwc2NkbCIsYyk7bW0oam0uYmEub2ksYyl9LGI9ZnVuY3Rpb24oKXthKCJlcnJvciIpfTt0cnl7SGMuY29va2llRGVwcmVjYXRpb25MYWJlbD8oYSgicGVuZGluZyIpLEhjLmNvb2tpZURlcHJlY2F0aW9uTGFiZWwuZ2V0VmFsdWUoKS50aGVuKGEpLmNhdGNoKGIpKTphKCJub2FwaSIpfWNhdGNoKGMpe2IoYyl9fX07dmFyIFJCPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLnJlYWR5PSExO3RoaXMuSz0wO3RoaXMuSD1bXTt2YXIgYj1BO2lmKEIucmVhZHlTdGF0ZT09PSJpbnRlcmFjdGl2ZSImJiFCLmNyZWF0ZUV2ZW50T2JqZWN0fHxCLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXRoaXMub25SZWFkeSgpO2Vsc2V7JGMoQiwiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oZCl7cmV0dXJuIHZvaWQgYS5vblJlYWR5KGQpfSk7JGMoQiwicmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIHZvaWQgYS5vblJlYWR5KGQpfSk7aWYoQi5jcmVhdGVFdmVudE9iamVjdCYmQi5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwpe3ZhciBjPSEwO3RyeXtjPSFiLmZyYW1lRWxlbWVudH1jYXRjaChkKXt9YyYmUUIodGhpcyl9JGMoYiwibG9hZCIsZnVuY3Rpb24oZCl7cmV0dXJuIHZvaWQgYS5vblJlYWR5KGQpfSl9fTtSQi5wcm90b3R5cGUuaXNSZWFkeT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWR5fTsKUkIucHJvdG90eXBlLm9uUmVhZHk9ZnVuY3Rpb24oYSl7aWYoIXRoaXMucmVhZHkpe3ZhciBiPUIuY3JlYXRlRXZlbnRPYmplY3QsYz1CLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiLGQ9Qi5yZWFkeVN0YXRlPT09ImludGVyYWN0aXZlIjtpZighYXx8YS50eXBlIT09InJlYWR5c3RhdGVjaGFuZ2UifHxjfHwhYiYmZCl7dGhpcy5yZWFkeT0hMDtmb3IodmFyIGU9MDtlPHRoaXMuSC5sZW5ndGg7ZSsrKWJkKHRoaXMuSFtlXSl9dGhpcy5ILnB1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIGY9T2EuYXBwbHkoMCxhcmd1bWVudHMpLGc9MDtnPGYubGVuZ3RoO2crKyliZChmW2ddKTtyZXR1cm4gMH19fTsKdmFyIFFCPWZ1bmN0aW9uKGEpe2lmKCFhLnJlYWR5JiZhLks8MTQwKXthLksrKzt0cnl7dmFyIGIsYzsoYz0oYj1CLmRvY3VtZW50RWxlbWVudCkuZG9TY3JvbGwpPT1udWxsfHxjLmNhbGwoYiwibGVmdCIpO2Eub25SZWFkeSgpfWNhdGNoKGQpe0Euc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB2b2lkIFFCKGEpfSw1MCl9fX0sU0I7ZnVuY3Rpb24gVEIoKXtTQnx8KFNCPW5ldyBSQil9ZnVuY3Rpb24gVUIoKXtUQigpO3ZhciBhO3JldHVybihhPVNCKT09bnVsbD92b2lkIDA6YS5pc1JlYWR5KCl9ZnVuY3Rpb24gVkIoYSl7VEIoKTt2YXIgYjsoYj1TQikhPW51bGwmJihiLnJlYWR5P2JkKGEpOmIuSC5wdXNoKGEpKX07dmFyIFhCPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1XQixlO2lmKChlPWQuSCk9PW51bGx8fCFlLk9yKXt2YXIgZj1PYmplY3Qua2V5cyhiKS5sZW5ndGg+MD8yOjEsZyxoLGw9KGM9PW51bGw/dm9pZCAwOihoPWMub3JpZ2luYXRpbmdFbnRpdHkpPT1udWxsP3ZvaWQgMDpoLm9yaWdpbkNvbnRhaW5lcklkKXx8IiI7Zz1sP1NiKGwsIkdUTS0iKT8zOjI6MTtpZighYSlkLkg9e3R5cGU6Zixzb3VyY2U6ZyxwYXJhbXM6Yn07ZWxzZSBpZihkLkgpe1AoMTg0KTt2YXIgbj0hMTtkLkguc291cmNlPT09Z3x8ZC5ILnNvdXJjZSE9PTMmJmchPT0zfHwoVW0oImlkY3MiLCIxIiksbj0hMCk7ZC5ILnR5cGUhPT0yJiZmIT09Mnx8UCgxODYpO3ZhciBwO2lmKHA9ZC5ILnR5cGU9PT0yJiZmPT09MilhOnt2YXIgcT1kLkgucGFyYW1zLHI9T2JqZWN0LmtleXMocSksdD1PYmplY3Qua2V5cyhiKTtpZihyLmxlbmd0aCE9PXQubGVuZ3RoKXA9ITA7ZWxzZXtmb3IodmFyIHU9bShyKSx2PXUubmV4dCgpOyF2LmRvbmU7dj0KdS5uZXh0KCkpe3ZhciB4PXYudmFsdWU7aWYoIWIuaGFzT3duUHJvcGVydHkoeCl8fHFbeF0hPT1iW3hdKXtwPSEwO2JyZWFrIGF9fXA9ITF9fXAmJihVbSgiaWRjYyIsIjEiKSxuPSEwKTtuJiYodG8oKSxkLkguT3I9ITApfX19LFdCPW5ldyBmdW5jdGlvbigpe3RoaXMuSD12b2lkIDB9O3ZhciBaQj1mdW5jdGlvbihhKXt2YXIgYj1ZQjsoIWZuLkt8fFNiKEUoNSksIkdUTS0iKT8wOmE9PT12b2lkIDApJiZiLkg9PT0wJiYoVW0oIm1jYyIsIjEiKSxiLkg9MSl9LFlCPW5ldyBmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5IPTA7VW0oIm5jYyIsZnVuY3Rpb24oKXtpZihJZig0NSkmJmEuSCE9PTIpcmV0dXJuIjEifSl9O3ZhciAkQj0vXig/OkFXfERDfEd8R0Z8R1R8SEF8TUN8VUEpJC8sYUM9L1xzLzsKZnVuY3Rpb24gYkMoYSxiKXtpZih6YihhKSl7YT1MYihhKTt2YXIgYz1hLmluZGV4T2YoIi0iKTtpZighKGM8MCkpe3ZhciBkPWEuc3Vic3RyaW5nKDAsYyk7aWYoJEIudGVzdChkKSl7dmFyIGU9YS5zdWJzdHJpbmcoYysxKSxmO2lmKGIpe3ZhciBnPWZ1bmN0aW9uKG4pe3ZhciBwPW4uaW5kZXhPZigiLyIpO3JldHVybiBwPDA/W25dOltuLnN1YnN0cmluZygwLHApLG4uc3Vic3RyaW5nKHArMSldfTtmPWcoZSk7aWYoZD09PSJEQyImJmYubGVuZ3RoPT09Mil7dmFyIGg9ZyhmWzFdKTtoLmxlbmd0aD09PTImJihmWzFdPWhbMF0sZi5wdXNoKGhbMV0pKX19ZWxzZXtmPWUuc3BsaXQoIi8iKTtmb3IodmFyIGw9MDtsPGYubGVuZ3RoO2wrKylpZighZltsXXx8YUMudGVzdChmW2xdKSYmKGQhPT0iQVcifHxsIT09MSkpcmV0dXJufXJldHVybntpZDphLHByZWZpeDpkLGRlc3RpbmF0aW9uSWQ6ZCsiLSIrZlswXSxpZHM6ZixKYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlkIT09dGhpcy5kZXN0aW5hdGlvbklkfX19fX19CmZ1bmN0aW9uIGNDKGEsYil7Zm9yKHZhciBjPXt9LGQ9MDtkPGEubGVuZ3RoOysrZCl7dmFyIGU9YkMoYVtkXSxiKTtlJiYoY1tlLmlkXT1lKX12YXIgZj1bXSxnO2ZvcihnIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShnKSl7dmFyIGg9Y1tnXTtoLnByZWZpeD09PSJBVyImJmguaWRzW2RDWzFdXSYmZi5wdXNoKGguZGVzdGluYXRpb25JZCl9Zm9yKHZhciBsPTA7bDxmLmxlbmd0aDsrK2wpZGVsZXRlIGNbZltsXV07Zm9yKHZhciBuPVtdLHA9bShPYmplY3Qua2V5cyhjKSkscT1wLm5leHQoKTshcS5kb25lO3E9cC5uZXh0KCkpbi5wdXNoKGNbcS52YWx1ZV0pO3JldHVybiBufXZhciBlQz17fSxkQz0oZUNbMF09MCxlQ1sxXT0xLGVDWzJdPTIsZUNbM109MCxlQ1s0XT0xLGVDWzVdPTAsZUNbNl09MCxlQ1s3XT0wLGVDKTt2YXIgZkM9e2luaXRpYWxpemVkOjExLGNvbXBsZXRlOjEyLGludGVyYWN0aXZlOjEzfSxnQz17fSxoQz1PYmplY3QuZnJlZXplKChnQ1tGLkQuVGRdPSEwLGdDKSksaUM9ZnVuY3Rpb24oKXt0aGlzLlI9TmYoMzQsNTAwKTt0aGlzLkg9e307dGhpcy5OPXt9O3RoaXMuSz12b2lkIDB9LGpDPWZ1bmN0aW9uKGEsYixjKXtpZihjLmxlbmd0aCYmZm4uSyl7dmFyIGQ7KGQ9YS5IKVtiXSE9bnVsbHx8KGRbYl09W10pO3ZhciBlOyhlPWEuTilbYl0hPW51bGx8fChlW2JdPVtdKTt2YXIgZj1jLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4hYS5OW2JdLmluY2x1ZGVzKGcpfSk7YS5IW2JdLnB1c2guYXBwbHkoYS5IW2JdLHcoZikpO2EuTltiXS5wdXNoLmFwcGx5KGEuTltiXSx3KGYpKTshYS5LJiZmLmxlbmd0aD4wJiYoVm0oInRkYyIsITApLGEuSz1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0bygpO2EuSD17fTthLks9dm9pZCAwfSxhLlIpKX19OwppQy5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7VW0oInRkYyIsZnVuY3Rpb24oKXthLksmJihBLmNsZWFyVGltZW91dChhLkspLGEuSz12b2lkIDApO3ZhciBiPVtdLGM7Zm9yKGMgaW4gYS5IKWEuSC5oYXNPd25Qcm9wZXJ0eShjKSYmYi5wdXNoKGMrIioiK2EuSFtjXS5qb2luKCIuIikpO3JldHVybiBiLmxlbmd0aD9iLmpvaW4oIiEiKTp2b2lkIDB9LCExKX07CnZhciBrQz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9LGQ7Zm9yKGQgaW4gYiliLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT0hMCk7Zm9yKHZhciBlIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShlKSYmKGNbZV09ITApO3JldHVybiBjfSxsQz1mdW5jdGlvbihhLGIsYyxkLGUpe2Q9ZD09PXZvaWQgMD97fTpkO2U9ZT09PXZvaWQgMD8iIjplO2lmKGI9PT1jKXJldHVybltdO3ZhciBmPWZ1bmN0aW9uKHQsdSl7dmFyIHY7QWQodSk9PT0ib2JqZWN0Ij92PXVbdF06QWQodSk9PT0iYXJyYXkiJiYodj11W3RdKTtyZXR1cm4gdj09PXZvaWQgMD9oQ1t0XTp2fSxnPWtDKGIsYyksaDtmb3IoaCBpbiBnKWlmKGcuaGFzT3duUHJvcGVydHkoaCkmJmghPT1GLkQuWGIpe3ZhciBsPShlP2UrIi4iOiIiKStoLG49ZihoLGIpLHA9ZihoLGMpLHE9QWQobik9PT0ib2JqZWN0Inx8QWQobik9PT0iYXJyYXkiLHI9QWQocCk9PT0ib2JqZWN0Inx8QWQocCk9PT0iYXJyYXkiO2lmKHEmJnIpbEMoYSxuLHAsZCxsKTsKZWxzZSBpZihxfHxyfHxuIT09cClkW2xdPSEwfXJldHVybiBPYmplY3Qua2V5cyhkKX0sbUM9bmV3IGlDO3ZhciBuQz1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLks9TmIoKTt0aGlzLkg9Yjt0aGlzLmFyZ3M9Yzt0aGlzLm1lc3NhZ2VDb250ZXh0PWQ7dGhpcy50eXBlPWF9LG9DPWZ1bmN0aW9uKCl7dGhpcy5XYT17fTt0aGlzLmliPXt9O3RoaXMuSz17fTt0aGlzLk49bnVsbDt0aGlzLmhiPXt9O3RoaXMuSD0hMTt0aGlzLnN0YXR1cz0xfTtmdW5jdGlvbiBwQyhhLGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9xQygic2V0IixhKTpxQygic2V0IixhLGIpfWZ1bmN0aW9uIHJDKGEsYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP3FDKCJjb25maWciLGEpOnFDKCJjb25maWciLGEsYil9ZnVuY3Rpb24gc0MoYSxiLGMpe2M9Y3x8e307Y1tGLkQuWGJdPWE7cmV0dXJuIHFDKCJldmVudCIsYixjKX1mdW5jdGlvbiBxQygpe3JldHVybiBhcmd1bWVudHN9O3ZhciB0Qz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsbCxuLHAscSxyKXt0aGlzLmV2ZW50SWQ9YTt0aGlzLnByaW9yaXR5SWQ9Yjt0aGlzLnByaW9yaXR5UXVldWU9Yzt0aGlzLkVhPWQ7dGhpcy5XYT1lO3RoaXMuaGI9Zjt0aGlzLkhjPWc7dGhpcy5CZz1oO3RoaXMuaWI9bDt0aGlzLmV2ZW50TWV0YWRhdGE9bjt0aGlzLm9uU3VjY2Vzcz1wO3RoaXMub25GYWlsdXJlPXE7dGhpcy5pc0d0bUV2ZW50PXJ9LHVDPWZ1bmN0aW9uKGEpe3ZhciBiPXtvblN1Y2Nlc3M6eGIsb25GYWlsdXJlOnhifTtiPWI9PT12b2lkIDA/e306Yjt2YXIgYyxkLGUsZixnLGgsbCxuLHAscSxyLHQsdSx2LHgseSx6LEMsRCxJLEcsTixTLFcsZWEsamE7cmV0dXJuIG5ldyB0Qygodj0oYz1iKT09bnVsbD92b2lkIDA6Yy5ldmVudElkKSE9bnVsbD92OmEuZXZlbnRJZCwoeD0oZD1iKT09bnVsbD92b2lkIDA6ZC5wcmlvcml0eUlkKSE9bnVsbD94OmEucHJpb3JpdHlJZCwoeT0oZT1iKT09bnVsbD92b2lkIDA6ZS5wcmlvcml0eVF1ZXVlKSE9Cm51bGw/eTphLnByaW9yaXR5UXVldWUsKHo9KGY9Yik9PW51bGw/dm9pZCAwOmYuRWEpIT1udWxsP3o6YS5FYSwoQz0oZz1iKT09bnVsbD92b2lkIDA6Zy5XYSkhPW51bGw/QzphLldhLChEPShoPWIpPT1udWxsP3ZvaWQgMDpoLmhiKSE9bnVsbD9EOmEuaGIsKEk9KGw9Yik9PW51bGw/dm9pZCAwOmwuSGMpIT1udWxsP0k6YS5IYywoRz0obj1iKT09bnVsbD92b2lkIDA6bi5CZykhPW51bGw/RzphLkJnLChOPShwPWIpPT1udWxsP3ZvaWQgMDpwLmliKSE9bnVsbD9OOmEuaWIsKFM9KHE9Yik9PW51bGw/dm9pZCAwOnEuZXZlbnRNZXRhZGF0YSkhPW51bGw/UzphLmV2ZW50TWV0YWRhdGEsKFc9KHI9Yik9PW51bGw/dm9pZCAwOnIub25TdWNjZXNzKSE9bnVsbD9XOmEub25TdWNjZXNzLChlYT0odD1iKT09bnVsbD92b2lkIDA6dC5vbkZhaWx1cmUpIT1udWxsP2VhOmEub25GYWlsdXJlLChqYT0odT1iKT09bnVsbD92b2lkIDA6dS5pc0d0bUV2ZW50KSE9bnVsbD9qYTphLmlzR3RtRXZlbnQpfSwKdkM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtzd2l0Y2goYil7Y2FzZSAzOmMucHVzaChhLkVhKTtjLnB1c2goYS5XYSk7Yy5wdXNoKGEuaGIpO2MucHVzaChhLkhjKTtjLnB1c2goYS5pYik7YnJlYWs7Y2FzZSAyOmMucHVzaChhLkVhKTticmVhaztjYXNlIDE6Yy5wdXNoKGEuV2EpO2MucHVzaChhLmhiKTtjLnB1c2goYS5IYyk7Yy5wdXNoKGEuaWIpO2JyZWFrO2Nhc2UgNDpjLnB1c2goYS5FYSksYy5wdXNoKGEuV2EpLGMucHVzaChhLmhiKSxjLnB1c2goYS5IYyl9cmV0dXJuIGN9LE89ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPW0odkMoYSxkPT09dm9pZCAwPzM6ZCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO2lmKGdbYl0hPT12b2lkIDApcmV0dXJuIGdbYl19cmV0dXJuIGN9LHdDPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPXZDKGEsNCksZD1tKGMpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWZvcih2YXIgZj1PYmplY3Qua2V5cyhlLnZhbHVlKSwKZz1tKGYpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKWJbaC52YWx1ZV09MTtyZXR1cm4gT2JqZWN0LmtleXMoYil9O3RDLnByb3RvdHlwZS5nZXRNZXJnZWRWYWx1ZXM9ZnVuY3Rpb24oYSxiLGMpe2I9Yj09PXZvaWQgMD8zOmI7dmFyIGQ9e30sZT0hMSxmPWZ1bmN0aW9uKG4pe0NkKG4pJiZHYihuLGZ1bmN0aW9uKHAscSl7ZT0hMDtkW3BdPXF9KX07YyYmZihjKTt2YXIgZz12Qyh0aGlzLGIpO2cucmV2ZXJzZSgpO2Zvcih2YXIgaD1tKGcpLGw9aC5uZXh0KCk7IWwuZG9uZTtsPWgubmV4dCgpKWYobC52YWx1ZVthXSk7cmV0dXJuIGU/ZDp2b2lkIDB9Owp2YXIgeEM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtGLkQuS2YsRi5ELkdmLEYuRC5IZixGLkQuSWYsRi5ELkpmLEYuRC5MZixGLkQuTWZdLGM9dkMoYSwzKSxkPW0oYyksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe2Zvcih2YXIgZj1lLnZhbHVlLGc9e30saD0hMSxsPW0oYiksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWU7ZltwXSE9PXZvaWQgMCYmKGdbcF09ZltwXSxoPSEwKX12YXIgcT1oP2c6dm9pZCAwO2lmKHEpcmV0dXJuIHF9cmV0dXJue319LHlDPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmV2ZW50SWQ9YTt0aGlzLnByaW9yaXR5SWQ9Yjt0aGlzLnByaW9yaXR5UXVldWU9Yzt0aGlzLkVhPXt9O3RoaXMuV2E9e307dGhpcy5oYj17fTt0aGlzLkhjPXt9O3RoaXMuQmc9e307dGhpcy5pYj17fTt0aGlzLmV2ZW50TWV0YWRhdGE9e307dGhpcy5pc0d0bUV2ZW50PSExO3RoaXMub25TdWNjZXNzPWZ1bmN0aW9uKCl7fTt0aGlzLm9uRmFpbHVyZT0KZnVuY3Rpb24oKXt9fSx6Qz1mdW5jdGlvbihhLGIpe2EuRWE9YjtyZXR1cm4gYX0sQUM9ZnVuY3Rpb24oYSxiKXthLldhPWI7cmV0dXJuIGF9LEJDPWZ1bmN0aW9uKGEsYil7YS5oYj1iO3JldHVybiBhfSxDQz1mdW5jdGlvbihhLGIpe2EuSGM9YjtyZXR1cm4gYX0sREM9ZnVuY3Rpb24oYSxiKXthLkJnPWI7cmV0dXJuIGF9LEVDPWZ1bmN0aW9uKGEsYil7YS5pYj1iO3JldHVybiBhfSxGQz1mdW5jdGlvbihhLGIpe2EuZXZlbnRNZXRhZGF0YT1ifHx7fTtyZXR1cm4gYX0sR0M9ZnVuY3Rpb24oYSxiKXthLm9uU3VjY2Vzcz1iO3JldHVybiBhfSxIQz1mdW5jdGlvbihhLGIpe2Eub25GYWlsdXJlPWI7cmV0dXJuIGF9LElDPWZ1bmN0aW9uKGEsYil7YS5pc0d0bUV2ZW50PWI7cmV0dXJuIGF9LEpDPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgdEMoYS5ldmVudElkLGEucHJpb3JpdHlJZCxhLnByaW9yaXR5UXVldWUsYS5FYSxhLldhLGEuaGIsYS5IYyxhLkJnLGEuaWIsYS5ldmVudE1ldGFkYXRhLAphLm9uU3VjY2VzcyxhLm9uRmFpbHVyZSxhLmlzR3RtRXZlbnQpfTtmdW5jdGlvbiBLQyhhLGIpe0diKGEsZnVuY3Rpb24oYyl7dmFyIGQ7aWYoZD1jLmNoYXJBdCgwKT09PSJfIil7dmFyIGU7YTpzd2l0Y2goYyl7Y2FzZSBGLkQuVmI6Y2FzZSBGLkQuUmY6Y2FzZSBGLkQuc2g6ZT0hMDticmVhayBhO2RlZmF1bHQ6ZT0hMX1kPSFlfWQmJihiJiZiKGMpLGRlbGV0ZSBhW2NdKX0pfTt2YXIgTEM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD17fTtmeihmdW5jdGlvbihiKXt2YXIgYz1iLmV2ZW50SWQsZD1iLnRmLGU9W10sZj1hLkhbY118fFtdO2YubGVuZ3RoJiZlLnB1c2goWyJlcHIiLGYuam9pbigiLiIpXSk7ZCYmZGVsZXRlIGEuSFtjXTtyZXR1cm4gZX0pfSxOQz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9TUM7Zm4uTiYmYSE9PXZvaWQgMCYmKGQuSFthXT1kLkhbYV18fFtdLGQuSFthXS5wdXNoKGMrYiksZ3ooKSxleihhKSl9LE1DO2Z1bmN0aW9uIE9DKCl7TUN8fChNQz1uZXcgTEMpfTt2YXIgUEM9ZnVuY3Rpb24oKXt0aGlzLmRlc3RpbmF0aW9ucz17fTt0aGlzLkg9e307dGhpcy5jb21tYW5kcz1bXX0sUUM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5kZXN0aW5hdGlvbnNbYi5kZXN0aW5hdGlvbklkXT1hLmRlc3RpbmF0aW9uc1tiLmRlc3RpbmF0aW9uSWRdfHxuZXcgb0N9LFJDPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGQuSCl7dmFyIGU9UUMoYSxkLkgpLGY9ZS5OO2lmKGYpe3ZhciBnPUVkKGMsbnVsbCksaD1FZChlLldhW2QuSC5kZXN0aW5hdGlvbklkXSxudWxsKSxsPUVkKGUuaGIsbnVsbCksbj1FZChlLmliLG51bGwpLHA9RWQoYS5ILG51bGwpLHE9e307aWYoZm4uTil0cnl7cT1FZChyQS5ILG51bGwpfWNhdGNoKHgpe1AoNzIpfXZhciByPWQuSC5wcmVmaXgsdD1mdW5jdGlvbih4KXt2YXIgeT1kLm1lc3NhZ2VDb250ZXh0LmV2ZW50SWQ7T0MoKTtOQyh5LHIseCl9LHU9SkMoSUMoSEMoR0MoRkMoREMoQ0MoRUMoQkMoQUMoekMobmV3IHlDKGQubWVzc2FnZUNvbnRleHQuZXZlbnRJZCwKZC5tZXNzYWdlQ29udGV4dC5wcmlvcml0eUlkLGQubWVzc2FnZUNvbnRleHQucHJpb3JpdHlRdWV1ZSksZyksaCksbCksbikscCkscSksZC5tZXNzYWdlQ29udGV4dC5ldmVudE1ldGFkYXRhKSxmdW5jdGlvbigpe2lmKHQpe3ZhciB4PXQ7dD12b2lkIDA7eCgiMiIpO2lmKGQubWVzc2FnZUNvbnRleHQub25TdWNjZXNzKWQubWVzc2FnZUNvbnRleHQub25TdWNjZXNzKCl9fSksZnVuY3Rpb24oKXtpZih0KXt2YXIgeD10O3Q9dm9pZCAwO3goIjMiKTtpZihkLm1lc3NhZ2VDb250ZXh0Lm9uRmFpbHVyZSlkLm1lc3NhZ2VDb250ZXh0Lm9uRmFpbHVyZSgpfX0pLCEhZC5tZXNzYWdlQ29udGV4dC5pc0d0bUV2ZW50KSksdj1mdW5jdGlvbigpe3RyeXt2YXIgeD1kLm1lc3NhZ2VDb250ZXh0LmV2ZW50SWQ7T0MoKTtOQyh4LHIsIjEiKTt2YXIgeT1kLkguaWQsej1tQztpZihmbi5LJiZiPT09Ri5ELndhKXt2YXIgQyxEPShDPWJDKHkpKT09bnVsbD92b2lkIDA6Qy5pZHM7aWYoIShEJiZELmxlbmd0aD4KMSkpe3ZhciBJPXUuRWFbRi5ELlhiXTtpZighSXx8ST09PXkpe3ZhciBHLE49TWMoImdvb2dsZV90YWdfZGF0YSIse30pO04udGR8fChOLnRkPXt9KTtHPU4udGQ7dmFyIFM9RWQodS5IYyxudWxsKTtFZCh1LkVhLFMpO3ZhciBXPVtdLGVhO2ZvcihlYSBpbiBHKUcuaGFzT3duUHJvcGVydHkoZWEpJiZsQyh6LEdbZWFdLFMpLmxlbmd0aCYmVy5wdXNoKGVhKTtXLmxlbmd0aCYmKGpDKHoseSxXKSxzYigiVEFHR0lORyIsZkNbQi5yZWFkeVN0YXRlXXx8MTQpKTtHW3ldPVN9fX1mKGQuSC5pZCxiLGQuSyx1KX1jYXRjaChmYSl7dmFyIGphPWQubWVzc2FnZUNvbnRleHQuZXZlbnRJZDtPQygpO05DKGphLHIsIjQiKX19O2I9PT0iZ3RhZy5nZXQiP3YoKTppbyhlLlIsdil9fX0sU0M9ZnVuY3Rpb24oYSxiKXtpZihiLnR5cGUhPT0icmVxdWlyZSIpe3ZhciBjPXZvaWQgMDtiLnR5cGU9PT0iZXZlbnQiJiYoYz1iLmFyZ3NbMV0pO2lmKGIuSClmb3IodmFyIGQ9UUMoYSxiLkgpLktbYi50eXBlXXx8CltdLGU9MDtlPGQubGVuZ3RoO2UrKylkW2VdKGMpO2Vsc2UgZm9yKHZhciBmIGluIGEuZGVzdGluYXRpb25zKWlmKGEuZGVzdGluYXRpb25zLmhhc093blByb3BlcnR5KGYpKXt2YXIgZz1hLmRlc3RpbmF0aW9uc1tmXTtpZihnJiZnLkspZm9yKHZhciBoPWcuS1tiLnR5cGVdfHxbXSxsPTA7bDxoLmxlbmd0aDtsKyspaFtsXShjKX19fTtQQy5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9UUModGhpcyxhKTtlLnN0YXR1cyE9PTMmJihlLk49YixlLnN0YXR1cz0zLGUuUj1sbyhjKSxUQyh0aGlzLGEsZHx8e30pLHRoaXMuZmx1c2goKSl9OwpQQy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihhLGIsYyxkKXtjIT09dm9pZCAwJiYoUUModGhpcyxjKS5zdGF0dXM9PT0xJiYoUUModGhpcyxjKS5zdGF0dXM9Mix0aGlzLnB1c2goInJlcXVpcmUiLFt7fV0sYyx7fSkpLFFDKHRoaXMsYykuSCYmKGQuZGVmZXJyYWJsZT0hMSksZC5ldmVudE1ldGFkYXRhfHwoZC5ldmVudE1ldGFkYXRhPXt9KSxkLmV2ZW50TWV0YWRhdGFbSC5KLnNnXXx8KGQuZXZlbnRNZXRhZGF0YVtILkouc2ddPVtjLmRlc3RpbmF0aW9uSWRdKSxkLmV2ZW50TWV0YWRhdGFbSC5KLm1qXXx8KGQuZXZlbnRNZXRhZGF0YVtILkoubWpdPVtjLmlkXSkpO3RoaXMuY29tbWFuZHMucHVzaChuZXcgbkMoYSxjLGIsZCkpO2QuZGVmZXJyYWJsZXx8dGhpcy5mbHVzaCgpfTsKUEMucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLGM9W10sZD0hMSxlPXt9O3RoaXMuY29tbWFuZHMubGVuZ3RoO2U9e1puOnZvaWQgMH0pe3ZhciBmPXRoaXMuY29tbWFuZHNbMF0sZz1mLkg7aWYoZi5tZXNzYWdlQ29udGV4dC5kZWZlcnJhYmxlKSFnfHxRQyh0aGlzLGcpLkg/KGYubWVzc2FnZUNvbnRleHQuZGVmZXJyYWJsZT0hMSx0aGlzLmNvbW1hbmRzLnB1c2goZikpOmMucHVzaChmKSx0aGlzLmNvbW1hbmRzLnNoaWZ0KCk7ZWxzZXtzd2l0Y2goZi50eXBlKXtjYXNlICJyZXF1aXJlIjppZihRQyh0aGlzLGcpLnN0YXR1cyE9PTMmJiFhKXt0aGlzLmNvbW1hbmRzLnB1c2guYXBwbHkodGhpcy5jb21tYW5kcyxjKTtyZXR1cm59YnJlYWs7Y2FzZSAic2V0Ijp2YXIgaD1mLmFyZ3NbMF07S0MoaCk7VUMoaCk7R2IoaCxmdW5jdGlvbih4LHkpe0VkKFZiKHgseSksYi5IKX0pO0h1KGgsITApO2JyZWFrO2Nhc2UgImV2ZW50IjplLlpuPWYuYXJnc1sxXTt2YXIgbD0KVkMoZi5hcmdzWzBdLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oZSkpLG49bFtGLkQuWGJdO24mJm4hPT1nLmlkfHxIdShsKTtSQyh0aGlzLGUuWm4sbCxmKTticmVhaztjYXNlICJnZXQiOnZhciBwPXt9LHE9KHBbRi5ELlRmXT1mLmFyZ3NbMF0scFtGLkQuU2ZdPWYuYXJnc1sxXSxwKTtSQyh0aGlzLEYuRC5KYixxLGYpO2JyZWFrO2Nhc2UgImNvbnRhaW5lcl9jb25maWciOnZhciByPVFDKHRoaXMsZyksdD1WQyhmLmFyZ3NbMF0sZnVuY3Rpb24oKXt9KTtIdSh0LCEwKTtyLkg9ITA7RWQodCxyLmhiKTtkPSEwO2JyZWFrO2Nhc2UgImRlc3RpbmF0aW9uX2NvbmZpZyI6dmFyIHU9UUModGhpcyxnKSx2PVZDKGYuYXJnc1swXSxmdW5jdGlvbigpe30pO0h1KHYsITApO3UuV2FbZy5pZF18fCh1LldhW2cuaWRdPXt9KTt1Lkg9ITA7RWQodix1LldhW2cuaWRdKTtkPSEwO2JyZWFrO2Nhc2UgInJlc2V0X2NvbnRhaW5lcl9jb25maWciOlFDKHRoaXMsZykuaGI9e307YnJlYWs7CmNhc2UgInJlc2V0X3RhcmdldF9jb25maWciOlFDKHRoaXMsZykuV2FbZy5pZF09e319dGhpcy5jb21tYW5kcy5zaGlmdCgpO1NDKHRoaXMsZil9fXRoaXMuY29tbWFuZHMucHVzaC5hcHBseSh0aGlzLmNvbW1hbmRzLGMpO2QmJnRoaXMuZmx1c2goKX07dmFyIFRDPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1FZChjLG51bGwpO0VkKFFDKGEsYikuaWIsZCk7UUMoYSxiKS5pYj1kfTtmdW5jdGlvbiBWQyhhLGIpe3ZhciBjPXt9O0diKGEsZnVuY3Rpb24oZCxlKXtFZChWYihkLGUpLGMpfSk7S0MoYyxiKTtVQyhjKTtyZXR1cm4gY30KZnVuY3Rpb24gVUMoYSl7aWYoTSg2MDEpJiZCQSgpKXtmb3IodmFyIGI9ITEsYz1tKG5ldyBTZXQoW0YuRC55YyxGLkQuZGRdKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7YVtlXSE9PXZvaWQgMCYmKGI9ITAsZGVsZXRlIGFbZV0pfWImJiFhbCgzNSxmdW5jdGlvbigpe3JldHVybiExfSkmJihaaygzNSwhMCksd2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZyYmd2luZG93LmNvbnNvbGUubG9nKCJHb29nbGUgVGFnIE1hbmFnZXI6IFNlcnZlci1zaWRlIEdUTSBwYXJhbWV0ZXJzICh0cmFuc3BvcnRfdXJsL3NlcnZlcl9jb250YWluZXJfdXJsKSBhcmUgbm90IHBlcm1pdHRlZCBvbiB0aGlzIGRvbWFpbiBhbmQgaGF2ZSBiZWVuIGlnbm9yZWQuIiksUCgxOTcpKX19O3ZhciBXQz1mdW5jdGlvbigpe3RoaXMuSD1uZXcgUEM7dGhpcy5LPSExfTtXQy5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLkguZmx1c2goKX07dmFyIFhDO2Z1bmN0aW9uIFlDKCl7WEN8fChYQz1uZXcgV0MpO3JldHVybiBYQ31mdW5jdGlvbiBaQyhhLGIsYyxkKXt2YXIgZT1ZQygpLGY9YkMoYyxkLmlzR3RtRXZlbnQpO2YmJihlLksmJihkLmRlZmVycmFibGU9ITApLGUuSC5wdXNoKCJldmVudCIsW2IsYV0sZixkKSl9ZnVuY3Rpb24gJEMoYSxiLGMsZCl7dmFyIGU9WUMoKSxmPWJDKGMsZC5pc0d0bUV2ZW50KTtmJiZlLkgucHVzaCgiZ2V0IixbYSxiXSxmLGQpfWZ1bmN0aW9uIGFEKGEsYixjKXt2YXIgZD1ZQygpLGU9YkMoYSxjLmlzR3RtRXZlbnQpO2UmJmQuSC5wdXNoKCJjb250YWluZXJfY29uZmlnIixbYl0sZSxjKX0KZnVuY3Rpb24gYkQoYSxiLGMpe3ZhciBkPVlDKCksZT1iQyhhLGMuaXNHdG1FdmVudCk7ZSYmZC5ILnB1c2goImRlc3RpbmF0aW9uX2NvbmZpZyIsW2JdLGUsYyl9ZnVuY3Rpb24gY0QoYSl7dmFyIGI9WUMoKSxjPWJDKGEsITApO2MmJmIuSC5wdXNoKCJyZXNldF9jb250YWluZXJfY29uZmlnIixbXSxjLHt9KX1mdW5jdGlvbiBkRChhKXt2YXIgYj1ZQygpLGM9YkMoYSwhMCk7YyYmYi5ILnB1c2goInJlc2V0X3RhcmdldF9jb25maWciLFtdLGMse30pfWZ1bmN0aW9uIGVEKGEpe3ZhciBiPVlDKCksYz1iQyhhLCEwKTtyZXR1cm4gYz9RQyhiLkgsYykuaWI6e319ZnVuY3Rpb24gZkQoYSl7cmV0dXJuIFlDKCkuSC5IW2FdfWZ1bmN0aW9uIGdEKGEpe3ZhciBiPVlDKCksYz1iQyhhLCEwKTtyZXR1cm4gYz9RQyhiLkgsYykuSDohMX07ZnVuY3Rpb24gaEQoYSxiKXthLmhhc093blByb3BlcnR5KCJndG0udW5pcXVlRXZlbnRJZCIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiZ3RtLnVuaXF1ZUV2ZW50SWQiLHt2YWx1ZTpyaigpfSk7Yi5ldmVudElkPWFbImd0bS51bmlxdWVFdmVudElkIl07Yi5wcmlvcml0eUlkPWFbImd0bS5wcmlvcml0eUlkIl07cmV0dXJue2V2ZW50SWQ6Yi5ldmVudElkLHByaW9yaXR5SWQ6Yi5wcmlvcml0eUlkfX1mdW5jdGlvbiBpRChhKXtmb3IodmFyIGI9bShbRi5ELmRkLEYuRC55Y10pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1jLnZhbHVlLGU9YSYmYVtkXXx8ZkQoZCk7aWYoZSlyZXR1cm4gZX19ZnVuY3Rpb24gakQoYSl7cmV0dXJuIWEuaXNHdG1FdmVudHx8YS5ldmVudE1ldGFkYXRhJiZhLmV2ZW50TWV0YWRhdGFbSC5KLkNjXSYmYS5ldmVudE1ldGFkYXRhW0guSi5OYl0hPT12aygpPyExOiEwfTt2YXIga0Q9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPSExfTt2YXIgbEQ9ZnVuY3Rpb24oKXt0aGlzLm1lc3NhZ2VzPVtdO3RoaXMuSD1bXX07bEQucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMubWVzc2FnZXMubGVuZ3RoKzE7YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1iO2FbImd0bS5wcmlvcml0eUlkIl09ZDt2YXIgZT1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMse2V2ZW50SWQ6Yixwcmlvcml0eUlkOmQsZnJvbUNvbnRhaW5lckV4ZWN1dGlvbjohMH0pO2lmKE0oNTk1KSl7dmFyIGY9Yy5wcmlvcml0eVF1ZXVlP1tdLmNvbmNhdCh3KGMucHJpb3JpdHlRdWV1ZSksW2RdKTpbZF07YVsiZ3RtLnByaW9yaXR5UXVldWUiXT1mO2UucHJpb3JpdHlRdWV1ZT1mfXZhciBnPXttZXNzYWdlOmEsbm90QmVmb3JlRXZlbnRJZDpiLHByaW9yaXR5SWQ6ZCxtZXNzYWdlQ29udGV4dDplfTt0aGlzLm1lc3NhZ2VzLnB1c2goZyk7Zm9yKHZhciBoPTA7aDx0aGlzLkgubGVuZ3RoO2grKyl0cnl7dGhpcy5IW2hdKGcpfWNhdGNoKGwpe319OwpsRC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKGEpe3RoaXMuSC5wdXNoKGEpfTtsRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXt9LGI9MDtiPHRoaXMubWVzc2FnZXMubGVuZ3RoO2IrKyl7dmFyIGM9dGhpcy5tZXNzYWdlc1tiXSxkPWFbYy5ub3RCZWZvcmVFdmVudElkXTtkfHwoZD1bXSxhW2Mubm90QmVmb3JlRXZlbnRJZF09ZCk7ZC5wdXNoKGMpfXJldHVybiBhfTtsRC5wcm90b3R5cGUucHJ1bmU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9W10sZD0wO2Q8dGhpcy5tZXNzYWdlcy5sZW5ndGg7ZCsrKXt2YXIgZT10aGlzLm1lc3NhZ2VzW2RdO2Uubm90QmVmb3JlRXZlbnRJZD09PWE/Yi5wdXNoKGUpOmMucHVzaChlKX10aGlzLm1lc3NhZ2VzPWM7cmV0dXJuIGJ9OwpmdW5jdGlvbiBtRChhLGIsYyl7Yy5ldmVudE1ldGFkYXRhPWMuZXZlbnRNZXRhZGF0YXx8e307Yy5ldmVudE1ldGFkYXRhW0guSi5OYl09TSg1NTApP3ZrKCk6RSg2KTtuRCgpLmVucXVldWUoYSxiLGMpfWZ1bmN0aW9uIG5EKCl7cmV0dXJuIGtqKCJtYiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxEfSl9O3ZhciBwRD1mdW5jdGlvbihhLGIpe3ZhciBjPW9EO2I9U3RyaW5nKGIpLnNwbGl0KCIsIik7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWMuTltiW2RdXXx8W107Yy5OW2JbZF1dPWU7ZS5pbmRleE9mKGEpPDAmJmUucHVzaChhKX19LHFEPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPW9ELGQ9W10sZT1bXSxmPXt9LGc9MDtnPGEubGVuZ3RoO2Y9e2xrOnZvaWQgMCxRajp2b2lkIDAsUmo6dm9pZCAwfSxnKyspe3ZhciBoPWFbZ107aWYoaC5pbmRleE9mKCItIik+PTApe2lmKGYubGs9YkMoaCxiKSxmLmxrKXt2YXIgbD10aygpO0NiKGwsZnVuY3Rpb24oeCl7cmV0dXJuIGZ1bmN0aW9uKHkpe3JldHVybiB4LmxrLmRlc3RpbmF0aW9uSWQ9PT15fX0oZikpP2QucHVzaChoKTplLnB1c2goaCl9fWVsc2V7aWYoTSg1NTApKXt2YXIgbj1jLktbaF18fFtdO2YuUmo9e307bi5mb3JFYWNoKGZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbih5KXt4LlJqW3ldPSEwfX0oZikpO2Zvcih2YXIgcD0KdGsoKSxxPTA7cTxwLmxlbmd0aDtxKyspZi5SaltwW3FdXSYmZC5wdXNoKHBbcV0pfWVsc2V7dmFyIHI9Yy5IW2hdfHxbXTtmLlFqPXt9O3IuZm9yRWFjaChmdW5jdGlvbih4KXtyZXR1cm4gZnVuY3Rpb24oeSl7eC5Ralt5XT0hMH19KGYpKTtmb3IodmFyIHQ9d2soKSx1PTA7dTx0Lmxlbmd0aDt1KyspaWYoZi5Ralt0W3VdXSl7ZD1kLmNvbmNhdCh0aygpKTticmVha319dmFyIHY9Yy5OW2hdfHxbXTt2Lmxlbmd0aCYmKGQ9ZC5jb25jYXQodikpfX1yZXR1cm57ZWs6ZCxQczplfX0sckQ9ZnVuY3Rpb24oYSl7R2Iob0QuSCxmdW5jdGlvbihiLGMpe3ZhciBkPWMuaW5kZXhPZihhKTtkPj0wJiZjLnNwbGljZShkLDEpfSl9LHNEPWZ1bmN0aW9uKGEpe0diKG9ELkssZnVuY3Rpb24oYixjKXt2YXIgZD1jLmluZGV4T2YoYSk7ZD49MCYmYy5zcGxpY2UoZCwxKX0pfSx0RD1mdW5jdGlvbihhKXtHYihvRC5OLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yy5pbmRleE9mKGEpO2Q+PTAmJmMuc3BsaWNlKGQsCjEpfSl9LG9EPW5ldyBmdW5jdGlvbigpe3RoaXMuSD17fTt0aGlzLk49e307dGhpcy5LPXt9fTtmdW5jdGlvbiB1RChhLGIsYyl7dmFyIGQ9RWQoYSxudWxsKTtkLmV2ZW50SWQ9dm9pZCAwO2QuaW5oZXJpdFBhcmVudENvbmZpZz12b2lkIDA7T2JqZWN0LmtleXMoYikuc29tZShmdW5jdGlvbihmKXtyZXR1cm4gYltmXSE9PXZvaWQgMH0pJiZQKDEzNik7dmFyIGU9RWQoYixudWxsKTtFZChjLGUpO21EKHJDKHdrKClbMF0sZSksYS5ldmVudElkLGQpfQpmdW5jdGlvbiB2RChhLGIsYyxkKXt2YXIgZT17fSxmPShlW0YuRC5VYl09Ri5ELndhLGVbImd0bS5jb25maWdDb250YWluZXJJZCJdPWEuaWQsZVsiZ3RtLmNvbmZpZ1BhcmFtZXRlcnMiXT1iLGVbImd0bS51bmlxdWVFdmVudElkIl09ZC5ldmVudElkLGUpO2MucHJpb3JpdHlRdWV1ZSYmKGZbImd0bS5wcmlvcml0eVF1ZXVlIl09Yy5wcmlvcml0eVF1ZXVlKTtjLmV2ZW50TWV0YWRhdGEmJihmWyJndG0uZXZlbnRNZXRhZGF0YSJdPWMuZXZlbnRNZXRhZGF0YSk7YS5KYygpJiYoZlsiZ3RtLmNvbmZpZ0NvbnRhaW5lcklkIl09d2soKVswXSxmWyJndG0ub3JpZ2luYWxDb25maWdUYXJnZXRJZCJdPWEuaWQpO3JldHVybiBmfWZ1bmN0aW9uIHdEKGEsYixjKXtpZihJZigxMSkmJiFjJiYhYVtGLkQuVmRdKXt2YXIgZD1hbCgxMCxmdW5jdGlvbigpe3JldHVybiExfSk7WmsoMTAsITApO1hCKGQsYSxiKTtpZihkKXJldHVybiEwfXJldHVybiExfTtmdW5jdGlvbiB4RChhLGIpe3ZhciBjPXt9LGQ9KGMuZXZlbnQ9YSxjKTtiJiYoZC5ldmVudE1vZGVsPUVkKGIsbnVsbCksYltGLkQuUGZdJiYoZC5ldmVudENhbGxiYWNrPWJbRi5ELlBmXSksYltGLkQucGhdJiYoZC5ldmVudFRpbWVvdXQ9YltGLkQucGhdKSk7cmV0dXJuIGR9CmZ1bmN0aW9uIHlEKGEsYil7dmFyIGM9YSYmYVtGLkQuWGJdO2M9PT12b2lkIDAmJihjPXVBKEYuRC5YYiwyKSxjPT09dm9pZCAwJiYoYz0iZGVmYXVsdCIpKTtpZih6YihjKXx8QXJyYXkuaXNBcnJheShjKSl7dmFyIGQ7ZD1iLmlzR3RtRXZlbnQ/emIoYyk/W2NdOmM6Yy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKS5zcGxpdCgiLCIpO3ZhciBlPXFEKGQsYi5pc0d0bUV2ZW50KSxmPWUuZWssZz1lLlBzO2lmKGcubGVuZ3RoKWZvcih2YXIgaD1pRChhKSxsPTA7bDxnLmxlbmd0aDtsKyspe3ZhciBuPWJDKGdbbF0sYi5pc0d0bUV2ZW50KTtpZihuKXt2YXIgcD1uLmRlc3RpbmF0aW9uSWQscT12b2lkIDA7KChxPW5rKG4uZGVzdGluYXRpb25JZCkpPT1udWxsP3ZvaWQgMDpxLnN0YXRlKT09PTB8fG5BKHAsaCx7c291cmNlOjMsZnJvbUNvbnRhaW5lckV4ZWN1dGlvbjpiLmZyb21Db250YWluZXJFeGVjdXRpb259KX19dmFyIHI9Zi5jb25jYXQoZyk7cmV0dXJue2VrOmNDKGYsYi5pc0d0bUV2ZW50KSwKbXI6Y0MocixiLmlzR3RtRXZlbnQpfX19O3ZhciB6RD17fSxBRD0oekQuY29uZmlnPWZ1bmN0aW9uKGEsYil7dmFyIGM9aEQoYSxiKSxkO2E6e2lmKCEoYS5sZW5ndGg8MikmJnpiKGFbMV0pKXt2YXIgZT17fTtpZihhLmxlbmd0aD4yKXtpZihhWzJdIT09dm9pZCAwJiYhQ2QoYVsyXSl8fGEubGVuZ3RoPjMpe2Q9dm9pZCAwO2JyZWFrIGF9ZT1hWzJdfXZhciBmPWJDKGFbMV0sYi5pc0d0bUV2ZW50KTtpZihmKXtkPXt0YXJnZXQ6ZixwYXJhbXM6ZX07YnJlYWsgYX19ZD12b2lkIDB9dmFyIGc9ZDtpZihnKXt2YXIgaD1nLnRhcmdldCxsPWcucGFyYW1zLG47YTp7aWYoIUlmKDcpKXt2YXIgcD15ayh6aygpKTtpZihNayhwKSl7dmFyIHE9cC5wYXJlbnQscj1xLmlzRGVzdGluYXRpb247bj17VnM6eWsocSksTXM6cn07YnJlYWsgYX19bj12b2lkIDB9dmFyIHQ9bix1PXQ9PW51bGw/dm9pZCAwOnQuVnMsdj10PT1udWxsP3ZvaWQgMDp0Lk1zO2RCKGMuZXZlbnRJZCwiZ3RhZy5jb25maWciKTt2YXIgeCx5PWguZGVzdGluYXRpb25JZDsKaWYoaC5KYygpP3RrKCkuaW5kZXhPZih5KSE9PS0xOndrKCkuaW5kZXhPZih5KSE9PS0xKWE6e2lmKHUmJihQKDEyOCksdiYmUCgxMzApLGIuaW5oZXJpdFBhcmVudENvbmZpZykpe3ZhciB6O3ZhciBDPSRrKDEyKTtpZihDKXVEKGIsQyxsKSx6PSExO2Vsc2V7dmFyIEQ9JGsoMTEpOyFsW0YuRC5WZF0mJihNKDU1MCl8fElmKDExKSkmJkR8fFprKDExLEVkKGwsbnVsbCkpO3o9ITB9eiYmdS5jb250YWluZXJzJiZ1LmNvbnRhaW5lcnMuam9pbigiLCIpO3g9dm9pZCAwO2JyZWFrIGF9dmFyIEk9IUlmKDQ1KSxHPSFTYihoLmlkLCJHVE0tIik7SSYmRyYmKE9iamVjdC5rZXlzKGwpLmxlbmd0aD09PTA/R3UoVC5XLlNrKTpHdShULlcuVGspLEVsKCkmJkd1KFQuVy5SayksJGsoMzEpJiZHdShULlcuVWspKTt2YXIgTj1ZQjtmbi5LJiYoTi5IPT09MSYmKFFtLkgubWNjPSExKSxOLkg9Mik7aWYoTSg1NTApfHwhd0QobCxiLGguSmMoKSkpe2tELkh8fFAoNDMpO2lmKCFNKDU1MCkpe2lmKCFiLm5vVGFyZ2V0R3JvdXApe3ZhciBTPQpoLmlkO2lmKGguSmMoKSl0RChTKSxwRChTLGxbRi5ELk9kXXx8ImRlZmF1bHQiKTtlbHNle3JEKFMpO3ZhciBXPWxbRi5ELk9kXXx8ImRlZmF1bHQiLGVhPW9EO1c9Vy50b1N0cmluZygpLnNwbGl0KCIsIik7Zm9yKHZhciBqYT0wO2phPFcubGVuZ3RoO2phKyspe3ZhciBmYT1lYS5IW1dbamFdXXx8W107ZWEuSFtXW2phXV09ZmE7ZmEuaW5kZXhPZihTKTwwJiZmYS5wdXNoKFMpfX19ZGVsZXRlIGxbRi5ELk9kXX12YXIgc2E9Yi5ldmVudE1ldGFkYXRhfHx7fTtzYS5oYXNPd25Qcm9wZXJ0eShILkouYWUpfHwoc2FbSC5KLmFlXT0hYi5mcm9tQ29udGFpbmVyRXhlY3V0aW9uKTtiLmV2ZW50TWV0YWRhdGE9c2E7ZGVsZXRlIGxbRi5ELlBmXTtpZihNKDU1MCkpe3g9dkQoaCxsLGIsYyk7YnJlYWsgYX12YXIgZGE9ISFsW0YuRC5WZF07ZGVsZXRlIGxbRi5ELlZkXTt2YXIgbWE9dGsoKSxQYT1jRCxGYT1hRDtoLkpjKCkmJihtYT1baC5pZF0sUGE9ZEQsRmE9YkQpO2Zvcih2YXIgcWE9MDtxYTwKbWEubGVuZ3RoO3FhKyspe2RhfHxQYShtYVtxYV0pO3ZhciBpYj1nRChtYVtxYV0pO0ZhKG1hW3FhXSxFZChsLG51bGwpLEVkKGIsbnVsbCkpO2liJiZkYXx8WkMoRi5ELndhLEVkKGwsbnVsbCksbWFbcWFdLEVkKGIsbnVsbCkpfX14PXZvaWQgMH1lbHNlIGE6e2lmKCFiLmluaGVyaXRQYXJlbnRDb25maWcmJiFsW0YuRC5aY10pe3ZhciBYYj1pRChsKSxMYz1oLmRlc3RpbmF0aW9uSWQ7aWYoaC5KYygpKW5BKExjLFhiLHtzb3VyY2U6Mixmcm9tQ29udGFpbmVyRXhlY3V0aW9uOmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbn0pO2Vsc2UgaWYodSE9PXZvaWQgMCYmdS5jb250YWluZXJzLmluZGV4T2YoTGMpIT09LTEpe3ZhciBRZD0kaygxMSksWWM9JGsoMTIpO1FkP3VEKGIsbCxRZCk6WWN8fFprKDEyLEVkKGwsbnVsbCkpfWVsc2UgaWYoaEEoTGMsWGIsITAse3NvdXJjZToyLGZyb21Db250YWluZXJFeGVjdXRpb246Yi5mcm9tQ29udGFpbmVyRXhlY3V0aW9ufSksTSg1NTApKXt4PXZEKGgsCmwsYixjKTticmVhayBhfX14PXZvaWQgMH1yZXR1cm4geH19LHpELmNvbnNlbnQ9ZnVuY3Rpb24oYSxiKXtpZihhLmxlbmd0aD09PTMpe1AoMzkpO3ZhciBjPWhEKGEsYiksZD1hWzFdLGU9e30sZj1PbyhhWzJdKSxnO2ZvcihnIGluIGYpaWYoZi5oYXNPd25Qcm9wZXJ0eShnKSl7dmFyIGg9ZltnXTtlW2ddPWc9PT1GLkQuWWc/QXJyYXkuaXNBcnJheShoKT9OYU46TnVtYmVyKGgpOmc9PT1GLkQubmM/KEFycmF5LmlzQXJyYXkoaCk/aDpbaF0pLm1hcChQbyk6UW8oaCl9Yi5mcm9tQ29udGFpbmVyRXhlY3V0aW9ufHwoZVtGLkQubWFdJiZQKDEzOSksZVtGLkQuWGFdJiZQKDE0MCkpO2Q9PT0iZGVmYXVsdCI/VG8oZSk6ZD09PSJ1cGRhdGUiP1ZvKGUsYyk6ZD09PSJkZWNsYXJlIiYmYi5mcm9tQ29udGFpbmVyRXhlY3V0aW9uJiZTbyhlKX19LHpELmNvbnRhaW5lcl9jb25maWc9ZnVuY3Rpb24oYSxiKXtpZihqRChiKSYmYS5sZW5ndGg9PT0zJiZ6YihhWzFdKSYmQ2QoYVsyXSkpe3ZhciBjPQphWzJdLGQ9YkMoYVsxXSwhMCk7ZCYmYUQoZC5kZXN0aW5hdGlvbklkLGMsRWQoYixudWxsKSl9fSx6RC5kZXN0aW5hdGlvbl9jb25maWc9ZnVuY3Rpb24oYSxiKXtpZihqRChiKSYmYS5sZW5ndGg9PT0zJiZ6YihhWzFdKSYmQ2QoYVsyXSkpe3ZhciBjPWFbMl0sZD1iQyhhWzFdLCEwKTtpZihkKXtpZihNKDU1MCkpe2lmKCFiLm5vVGFyZ2V0R3JvdXApe3ZhciBlPWQuaWQ7aWYoZC5KYygpKXREKGUpLHBEKGUsY1tGLkQuT2RdfHwiZGVmYXVsdCIpO2Vsc2V7c0QoZSk7dmFyIGY9Y1tGLkQuT2RdfHwiZGVmYXVsdCIsZz1vRDtmPVN0cmluZyhmKS5zcGxpdCgiLCIpO2Zvcih2YXIgaD0wO2g8Zi5sZW5ndGg7aCsrKXt2YXIgbD1nLktbZltoXV18fFtdO2cuS1tmW2hdXT1sO2wuaW5kZXhPZihlKTwwJiZsLnB1c2goZSl9fX1kZWxldGUgY1tGLkQuT2RdfWJEKGQuaWQsYyxFZChiLG51bGwpKX19fSx6RC5ldmVudD1mdW5jdGlvbihhLGIpe3ZhciBjPWFbMV07aWYoIShhLmxlbmd0aDwyKSYmCnpiKGMpKXt2YXIgZD12b2lkIDA7aWYoYS5sZW5ndGg+Mil7aWYoIUNkKGFbMl0pJiZhWzJdIT09dm9pZCAwfHxhLmxlbmd0aD4zKXJldHVybjtkPWFbMl19dmFyIGU9eEQoYyxkKSxmPWhEKGEsYiksZz1mLmV2ZW50SWQsaD1mLnByaW9yaXR5SWQ7ZVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1nO2gmJihlWyJndG0ucHJpb3JpdHlJZCJdPWgpO2IucHJpb3JpdHlRdWV1ZSYmKGVbImd0bS5wcmlvcml0eVF1ZXVlIl09Yi5wcmlvcml0eVF1ZXVlKTtpZihjPT09Im9wdGltaXplLmNhbGxiYWNrIilyZXR1cm4gZS5ldmVudE1vZGVsPWUuZXZlbnRNb2RlbHx8e30sZTt2YXIgbD15RChkLGIpO2lmKGwpe2Zvcih2YXIgbj1sLmVrLHA9bC5tcixxPXAubWFwKGZ1bmN0aW9uKE4pe3JldHVybiBOLmlkfSkscj1wLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gTi5kZXN0aW5hdGlvbklkfSksdD1uLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gTi5pZH0pLHU9bSh0aygpKSx2PXUubmV4dCgpOyF2LmRvbmU7dj0KdS5uZXh0KCkpe3ZhciB4PXYudmFsdWU7ci5pbmRleE9mKHgpPDAmJnQucHVzaCh4KX1kQihnLGMpO2Zvcih2YXIgeT1tKHQpLHo9eS5uZXh0KCk7IXouZG9uZTt6PXkubmV4dCgpKXt2YXIgQz16LnZhbHVlLEQ9RWQoYixudWxsKSxJPUVkKGQsbnVsbCk7ZGVsZXRlIElbRi5ELlBmXTt2YXIgRz1ELmV2ZW50TWV0YWRhdGF8fHt9O0cuaGFzT3duUHJvcGVydHkoSC5KLmFlKXx8KEdbSC5KLmFlXT0hRC5mcm9tQ29udGFpbmVyRXhlY3V0aW9uKTtHW0guSi5tal09cS5zbGljZSgpO0dbSC5KLnNnXT1yLnNsaWNlKCk7RC5ldmVudE1ldGFkYXRhPUc7WkMoYyxJLEMsRCl9ZS5ldmVudE1vZGVsPWUuZXZlbnRNb2RlbHx8e307cS5sZW5ndGg+MD9lLmV2ZW50TW9kZWxbRi5ELlhiXT1xLmpvaW4oIiwiKTpkZWxldGUgZS5ldmVudE1vZGVsW0YuRC5YYl07a0QuSHx8UCg0Myk7Yi5ub0d0bUV2ZW50PT09dm9pZCAwJiZiLmV2ZW50TWV0YWRhdGEmJmIuZXZlbnRNZXRhZGF0YVtILkouQm5dJiYoYi5ub0d0bUV2ZW50PQohMCk7ZS5ldmVudE1vZGVsW0YuRC5ZY10mJihiLm5vR3RtRXZlbnQ9ITApO3JldHVybiBiLm5vR3RtRXZlbnQ/dm9pZCAwOmV9fX0sekQuZ2V0PWZ1bmN0aW9uKGEsYil7UCg1Myk7aWYoYS5sZW5ndGg9PT00JiZ6YihhWzFdKSYmemIoYVsyXSkmJnliKGFbM10pKXt2YXIgYz1iQyhhWzFdLGIuaXNHdG1FdmVudCksZD1TdHJpbmcoYVsyXSksZT1hWzNdO2lmKGMpe2tELkh8fFAoNDMpO3ZhciBmPWlEKCk7aWYoQ2IodGsoKSxmdW5jdGlvbihoKXtyZXR1cm4gYy5kZXN0aW5hdGlvbklkPT09aH0pKXtoRChhLGIpO3ZhciBnPXt9O0VkKChnW0YuRC5UZl09ZCxnW0YuRC5TZl09ZSxnKSxudWxsKTskQyhkLGZ1bmN0aW9uKGgpe2JkKGZ1bmN0aW9uKCl7ZShoKX0pfSxjLmlkLGIpfWVsc2UgbkEoYy5kZXN0aW5hdGlvbklkLGYse3NvdXJjZTo0LGZyb21Db250YWluZXJFeGVjdXRpb246Yi5mcm9tQ29udGFpbmVyRXhlY3V0aW9ufSl9fX0sekQuanM9ZnVuY3Rpb24oYSxiKXt2YXIgYztpZihhLmxlbmd0aD09PQoyJiZhWzFdLmdldFRpbWUpe2tELkg9ITA7dmFyIGQ9aEQoYSxiKSxlPWQuZXZlbnRJZCxmPWQucHJpb3JpdHlJZCxnPXt9O2M9KGcuZXZlbnQ9Imd0bS5qcyIsZ1siZ3RtLnN0YXJ0Il09YVsxXS5nZXRUaW1lKCksZ1siZ3RtLnVuaXF1ZUV2ZW50SWQiXT1lLGdbImd0bS5wcmlvcml0eUlkIl09ZixnKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfSx6RC5wb2xpY3k9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg9PT0zJiZ6YihhWzFdKSYmeWIoYVsyXSkpe2lmKGh5KGFbMV0sYVsyXSksUCg3NCksYVsxXT09PSJhbGwiKXtQKDc1KTt2YXIgYj0hMTt0cnl7Yj1hWzJdKEUoNSksInVua25vd24iLHt9KX1jYXRjaChjKXt9Ynx8UCg3Nil9fWVsc2UgUCg3Myl9LHpELnJlc2V0X3RhcmdldF9jb25maWc9ZnVuY3Rpb24oYSxiKXtpZihqRChiKSYmYS5sZW5ndGg9PT0yJiZ6YihhWzFdKSl7dmFyIGM9YkMoYVsxXSwhMCk7YyYmZEQoYy5pZCl9fSx6RC5zZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz12b2lkIDA7CmEubGVuZ3RoPT09MiYmQ2QoYVsxXSk/Yz1FZChhWzFdLG51bGwpOmEubGVuZ3RoPT09MyYmemIoYVsxXSkmJihjPXt9LENkKGFbMl0pfHxBcnJheS5pc0FycmF5KGFbMl0pP2NbYVsxXV09RWQoYVsyXSxudWxsKTpjW2FbMV1dPWFbMl0pO2lmKGMpe1prKDMxLCEwKTt2YXIgZD1oRChhLGIpLGU9ZC5ldmVudElkLGY9ZC5wcmlvcml0eUlkO0VkKGMsbnVsbCk7RSg1KTt2YXIgZz1FZChjLG51bGwpO1lDKCkuSC5wdXNoKCJzZXQiLFtnXSx2b2lkIDAsYik7Y1siZ3RtLnVuaXF1ZUV2ZW50SWQiXT1lO2YmJihjWyJndG0ucHJpb3JpdHlJZCJdPWYpO2RlbGV0ZSBjLmV2ZW50O2Iub3ZlcndyaXRlTW9kZWxGaWVsZHM9ITA7cmV0dXJuIGN9fSx6RCksQkQ9e30sQ0Q9KEJELnBvbGljeT0hMCxCRCk7dmFyIEVEPWZ1bmN0aW9uKGEpe2lmKEREKGEpKXJldHVybiBhO3RoaXMudmFsdWU9YX07RUQucHJvdG90eXBlLmdldFVudHJ1c3RlZE1lc3NhZ2VWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfTt2YXIgREQ9ZnVuY3Rpb24oYSl7cmV0dXJuIWF8fEFkKGEpIT09Im9iamVjdCJ8fENkKGEpPyExOiJnZXRVbnRydXN0ZWRNZXNzYWdlVmFsdWUiaW4gYX07RUQucHJvdG90eXBlLmdldFVudHJ1c3RlZE1lc3NhZ2VWYWx1ZT1FRC5wcm90b3R5cGUuZ2V0VW50cnVzdGVkTWVzc2FnZVZhbHVlO3ZhciBGRD17QmI6IjEiLGVlOiIyIixYZDoiMyIsY2U6IjQiLHhmOiI1IixxZzoiNiIsS2g6IjciLHRqOiI4IixsaToiOSIsamo6IjEwIn07CnZhciBHRD1mdW5jdGlvbihhLGIpe2lmKGEpe3ZhciBjPWEudHJpbSgpLnJlcGxhY2VBbGwoL1xzKy9nLCIiKS5yZXBsYWNlQWxsKC8oXGR7Mix9KVwuL2csIiQxIikucmVwbGFjZUFsbCgvLS9nLCIiKS5yZXBsYWNlQWxsKC9cKChcZCspXCkvZywiJDEiKTtpZihiJiZjLm1hdGNoKC9eXCs/XGR7Myw0fSQvKSlyZXR1cm4gYztjLmNoYXJBdCgwKSE9PSIrIiYmKGM9IisiK2MpO2lmKGMubWF0Y2gobmV3IFJlZ0V4cCgiXlxcK1xcZHsiKyhNKDU5Nyk/NzoxMCkrIiwxNX0kIikpKXJldHVybiBjfX0sSUQ9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9YS50cmltKCk7aWYoSEQudGVzdChiKSlyZXR1cm4gYi50b0xvd2VyQ2FzZSgpLnJlcGxhY2VBbGwoL1stIF0rL2csIiIpfX0sTUQ9ZnVuY3Rpb24oYSl7dmFyIGI9SkQoS0QpKGEpO2lmKGImJiFMRChiKSlyZXR1cm4gYn0sTEQ9ZnVuY3Rpb24oYSl7aWYoIUEubG9jYXRpb24pcmV0dXJuITE7dmFyIGI9TmooQS5sb2NhdGlvbiwiaG9zdCIsITApLApjO2lmKE0oNjAyKSlhOntmb3IodmFyIGQ9Yi5zcGxpdCgiLiIpLGU9YS50b0xvd2VyQ2FzZSgpLGY9MDtmPGQubGVuZ3RoLTE7ZisrKXt2YXIgZz1kLnNsaWNlKGYpLmpvaW4oIi4iKTtpZihlLm1hdGNoKCJAIitnKyIkIikpe2M9ITA7YnJlYWsgYX19Yz0hMX1lbHNlIGM9YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoYik+PTA7cmV0dXJuIGN9LEpEPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm1hdGNoKGEpO3JldHVybiBjP2NbMF0udHJpbSgpLnRvTG93ZXJDYXNlKCk6dm9pZCAwfX0sS0Q9L1tBLVowLTkuXyUrLV0rQFtBLVowLTkuLV0rXC5bQS1aXXsyLH0vaSxORD1KRCgvXihbXlx4MDAtXHg0MFx4NWItXHg2MFx4N2ItXHhmZl18Wy4tXXxccykrJC8pLEhEPVJlZ0V4cCgiXig/OltBLVpdezEsMn1cXGRbQS1aXFxkXT9bIC1dP1xcZFtBLVpdezJ9fFtBLVpdXFxkW0EtWl1bIC1dP1xcZFtBLVpdXFxkfFxcZHs0fSA/W0EtWl17Mn18W0EtWl1cXGR7NH1bQS1aXXszfXxcXGR7NX0oPzotXFxkezR9KT98XFxkezV9LVxcZHszfXxcXGR7NH0tXFxkezN9fFxcZHszfS1cXGR7NH18XFxkezJ9LVxcZHszfXxcXGR7M30gP1xcZHsyfXxcXGR7NCw3fSkkIiwKImkiKSxPRD1KRCgvXihbXlx4MDAtXHg0MFx4NWItXHg2MFx4N2ItXHhmZl18Wy4tXXxcc3xcZCkrJC8pOwp2YXIgUEQ9ZnVuY3Rpb24oKXt2YXIgYT1TdHJpbmcoYWwoMzMsZnVuY3Rpb24oKXtyZXR1cm4gMH0pKTthLmluZGV4T2YoIi4iKSE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGEuaW5kZXhPZigiLiIpKzMpKTt2YXIgYj1hbCgzNCxmdW5jdGlvbigpe3JldHVybiAwfSk7cmV0dXJue3Z0Ok51bWJlcihhKSxzdDpifX0sUUQ9ZnVuY3Rpb24oKXtyZXR1cm4gYWwoMzIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1hcH0pfSxTRD1mdW5jdGlvbihhKXt2YXIgYj1wZCgpfHwwLGM9W0ZELkJiXTtNKDU2OCkmJmMucHVzaChGRC5lZSxGRC5YZCxGRC5jZSxGRC54ZixGRC5xZyxGRC50aixGRC5saSxGRC5qaik7Zm9yKHZhciBkPVJEKGEsbmV3IFNldChjKSksZT1hbCgzMixmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwfSksZj1tKGQpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO2Uuc2V0KGguRGEsaCl9dmFyIGw9KHBkKCl8fDApLWIsbj1hbCgzMyxmdW5jdGlvbigpe3JldHVybiAwfSk7ClprKDMzLG4rbCk7dmFyIHA9YWwoMzQsZnVuY3Rpb24oKXtyZXR1cm4gMH0pO1prKDM0LHArMSl9LFJEPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPU5mKDM2LDIpLGQ9W10sZT1be29vOmEsZGVwdGg6MH1dO2UubGVuZ3RoPjA7KWZvcih2YXIgZj1lLnNoaWZ0KCksZz1mLm9vLGg9Zi5kZXB0aCxsPW0oT2JqZWN0LmtleXMoZykpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO2lmKCFURC5oYXMocCkpe3ZhciBxPWdbcF07aWYocSlpZihDZChxKSloKzE8PWMmJmUucHVzaCh7b286cSxkZXB0aDpoKzF9KTtlbHNle2Zvcih2YXIgcj1tKGIpLHQ9ci5uZXh0KCk7IXQuZG9uZTt0PXIubmV4dCgpKXt2YXIgdT10LnZhbHVlLHY9VURbdV07aWYodiYmdi5LYy50ZXN0KHApKXt2YXIgeD12Lm5hKFN0cmluZyhxKSk7aWYoeCl7ZC5wdXNoKHtDYTp4LERhOnV9KTtiLmRlbGV0ZSh1KTticmVha319fWlmKGIuc2l6ZT09PTApcmV0dXJuIGR9fX1yZXR1cm4gZH0sVEQ9Cm5ldyBTZXQoWyJpdGVtcyIsImVjb21tZXJjZSJdKSxWRD1SZWdFeHAoInBob25lIiwiaSIpLFdEPVJlZ0V4cCgiZmlyc3RfP25hbWUiLCJpIiksWEQ9UmVnRXhwKCJsYXN0Xz9uYW1lIiwiaSIpLFlEPVJlZ0V4cCgiY291bnRyeSIsImkiKSxaRD1SZWdFeHAoInBvc3R8emlwIiwiaSIpLCREPVJlZ0V4cCgiYWRkcmVzc3xzdHJlZXQiLCJpIiksYUU9UmVnRXhwKCJjaXR5IiwiaSIpLGJFPVJlZ0V4cCgicmVnaW9ufHN0YXRlfHByb3ZpbmNlIiwiaSIpLGNFPXt9LFVEPShjRVtGRC5CYl09e0tjOlJlZ0V4cCgiZW1haWwiLCJpIiksbmE6TUR9LGNFW0ZELmVlXT17S2M6VkQsbmE6ZnVuY3Rpb24oYSl7cmV0dXJuIEdEKGEsITEpfX0sY0VbRkQuWGRdPXtLYzpXRCxuYTpORH0sY0VbRkQuY2VdPXtLYzpYRCxuYTpORH0sY0VbRkQudGpdPXtLYzokRCxuYTpPRH0sY0VbRkQubGldPXtLYzphRSxuYTpORH0sY0VbRkQuampdPXtLYzpiRSxuYTpORH0sY0VbRkQucWddPXtLYzpaRCxuYTpJRH0sY0VbRkQueGZdPQp7S2M6WUQsbmE6TkR9LGNFKTt2YXIgZEU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMubG9hZGVkPSExO3RoaXMuSD1bXTtpZihCLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXRoaXMub25Mb2FkKCk7ZWxzZSAkYyhBLCJsb2FkIixmdW5jdGlvbigpe3JldHVybiB2b2lkIGEub25Mb2FkKCl9KX07ZEUucHJvdG90eXBlLm9uTG9hZD1mdW5jdGlvbigpe2lmKCF0aGlzLmxvYWRlZCl7dGhpcy5sb2FkZWQ9ITA7Zm9yKHZhciBhPTA7YTx0aGlzLkgubGVuZ3RoO2ErKyliZCh0aGlzLkhbYV0pfX07dmFyIGZFPWZ1bmN0aW9uKGEpe3ZhciBiPWVFO2IubG9hZGVkP2JkKGEpOmIuSC5wdXNoKGEpfSxlRT1uZXcgZEU7dmFyIGdFPWZ1bmN0aW9uKCl7dGhpcy5aPTA7dGhpcy5LPXt9O3RoaXMuSD1bXTt0aGlzLk49W107dGhpcy5mYT10aGlzLlI9dGhpcy5qYT0hMX0saUU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWhFO2EuZXZlbnRDYWxsYmFjaz1iO2MmJihhLmV2ZW50VGltZW91dD1jKTtyZXR1cm4gZC5wdXNoKGEpfSxqRT1mdW5jdGlvbihhLGIpe2lmKCFBYihiKXx8YjwwKWI9MDt2YXIgYz1xaigpLGQ9MCxlPSExLGY9dm9pZCAwO2Y9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZXx8KGU9ITAsYSgpKTtmPXZvaWQgMH0sYik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGc9Yz9jLnN1YnNjcmliZXJzOjE7KytkPT09ZyYmKGYmJihBLmNsZWFyVGltZW91dChmKSxmPXZvaWQgMCksZXx8KGEoKSxlPSEwKSl9fSxsRT1mdW5jdGlvbihhKXt2YXIgYjtpZihhLk4ubGVuZ3RoKWI9YS5OLnNoaWZ0KCk7ZWxzZSBpZihhLkgubGVuZ3RoKWI9YS5ILnNoaWZ0KCk7ZWxzZSByZXR1cm47dmFyIGM7dmFyIGQ9YjtpZihhLmphfHwKIWtFKGQubWVzc2FnZSkpYz1kO2Vsc2V7YS5qYT0hMDt2YXIgZT1kLm1lc3NhZ2VbImd0bS51bmlxdWVFdmVudElkIl0sZixnO3R5cGVvZiBlPT09Im51bWJlciI/KGY9ZS0yLGc9ZS0xKTooZj1yaigpLGc9cmooKSxkLm1lc3NhZ2VbImd0bS51bmlxdWVFdmVudElkIl09cmooKSk7dmFyIGg9e30sbD17bWVzc2FnZTooaC5ldmVudD0iZ3RtLmluaXRfY29uc2VudCIsaFsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1mLGgpLG1lc3NhZ2VDb250ZXh0OntldmVudElkOmZ9fSxuPXt9LHA9e21lc3NhZ2U6KG4uZXZlbnQ9Imd0bS5pbml0IixuWyJndG0udW5pcXVlRXZlbnRJZCJdPWcsbiksbWVzc2FnZUNvbnRleHQ6e2V2ZW50SWQ6Z319O2EuSC51bnNoaWZ0KHAsZCk7Yz1sfXJldHVybiBjfSxvRT1mdW5jdGlvbihhKXthLmZhfHxQKDE5Nik7Zm9yKHZhciBiPSExLGM7IWEuUiYmKGM9bEUoYSkpOyl7YS5SPSEwO3ZhciBkPXJBO2RlbGV0ZSBkLkguZXZlbnRNb2RlbDtvQShkKTt2YXIgZT1jLGY9CmUubWVzc2FnZSxnPWUubWVzc2FnZUNvbnRleHQ7aWYoZj09bnVsbClhLlI9ITE7ZWxzZXtnLmZyb21Db250YWluZXJFeGVjdXRpb24mJnNBKCk7dHJ5e2lmKHliKGYpKXRyeXtmLmNhbGwodEEpfWNhdGNoKFMpe31lbHNlIGlmKEFycmF5LmlzQXJyYXkoZikpe2lmKHpiKGZbMF0pKXt2YXIgaD1mWzBdLnNwbGl0KCIuIiksbD1oLnBvcCgpLG49Zi5zbGljZSgxKSxwPXVBKGguam9pbigiLiIpLDIpO2lmKHAhPW51bGwpdHJ5e3BbbF0uYXBwbHkocCxuKX1jYXRjaChTKXt9fX1lbHNle3ZhciBxPXZvaWQgMDtpZihIYihmKSlhOntpZihmLmxlbmd0aCYmemIoZlswXSkpe3ZhciByPUFEW2ZbMF1dO2lmKHImJighZy5mcm9tQ29udGFpbmVyRXhlY3V0aW9ufHwhQ0RbZlswXV0pKXtxPXIoZixnKTticmVhayBhfX1xPXZvaWQgMH1lbHNlIHE9ZjtpZihxKXt2YXIgdDtmb3IodmFyIHU9cSx2PXUuX2NsZWFyfHxnLm92ZXJ3cml0ZU1vZGVsRmllbGRzLHg9bShPYmplY3Qua2V5cyh1KSkseT14Lm5leHQoKTsheS5kb25lO3k9CngubmV4dCgpKXt2YXIgej15LnZhbHVlO3ohPT0iX2NsZWFyIiYmKHYmJnJBLnNldCh6LHZvaWQgMCksckEuc2V0KHosdVt6XSkpfU0oNTkyKSYmU0QodSk7JGsoMjUpfHxaaygyNSx1WyJndG0uc3RhcnQiXSk7dmFyIEM9dVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXTt1LmV2ZW50Pyh0eXBlb2YgQyE9PSJudW1iZXIiJiYoQz1yaigpLHVbImd0bS51bmlxdWVFdmVudElkIl09QyxyQS5zZXQoImd0bS51bmlxdWVFdmVudElkIixDKSksdD16Qih1KSk6dD0hMTtiPXR8fGJ9fX1maW5hbGx5e2cuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbiYmb0EockEsITApO3ZhciBEPWZbImd0bS51bmlxdWVFdmVudElkIl07aWYodHlwZW9mIEQ9PT0ibnVtYmVyIil7Zm9yKHZhciBJPWEsRz1JLktbU3RyaW5nKEQpXXx8W10sTj0wO048Ry5sZW5ndGg7TisrKUkuTi5wdXNoKG1FKEdbTl0pKTtHLmxlbmd0aCYmSS5OLnNvcnQobkUpO2RlbGV0ZSBJLktbU3RyaW5nKEQpXTtEPmEuWiYmKGEuWj1EKX1hLlI9ITF9fX1yZXR1cm4hYn0sCnBFPWZ1bmN0aW9uKCl7dmFyIGE9aEU7YS5mYSYmUCgxOTUpO2EuZmE9ITA7aWYoZm4uSCl7dmFyIGI9IUlmKDUxKSxjPXJ6KCk7cHooYyx7c3RhZ2U6SXkuWC5aZ30pO2lmKGIpe3ZhciBkPXF6KGMse3N0YWdlOkl5LlguWWt9LEl5LlgubmkpO2QhPT12b2lkIDAmJihjLkguWT1kKX12YXIgZT1hLkgubGVuZ3RoO3J6KCkuSC5DPWV9b0UoYSk7aWYoZm4uSCl7dmFyIGY9cnooKSxnPXF6KGYse3N0YWdlOkl5LlguVmt9LEl5LlguWmcpO2chPT12b2lkIDAmJihmLkguQj1nKX10cnl7dmFyIGg9QVtFKDE5KV0sbD1FKDUpLG49aC5oaWRlO2lmKG4mJm5bbF0hPT12b2lkIDAmJm4uZW5kKXtuW2xdPSExO3ZhciBwPSEwLHE7Zm9yKHEgaW4gbilpZihuLmhhc093blByb3BlcnR5KHEpJiZuW3FdPT09ITApe3A9ITE7YnJlYWt9cCYmKG4uZW5kKCksbi5lbmQ9bnVsbCl9fWNhdGNoKHIpe0UoNSl9fSxxRT1mdW5jdGlvbihhLGIpe2lmKGEuWjxiLm5vdEJlZm9yZUV2ZW50SWQpe3ZhciBjPVN0cmluZyhiLm5vdEJlZm9yZUV2ZW50SWQpOwphLktbY109YS5LW2NdfHxbXTthLktbY10ucHVzaChiKX1lbHNle2EuTi5wdXNoKG1FKGIpKTthLk4uc29ydChuRSk7dmFyIGQ9ZnVuY3Rpb24oKXthLlJ8fG9FKGEpfTtNKDU4MCk/ZGQoZCk6YmQoZCl9fTsKZ0UucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGgpe3ZhciBsPXt9O2lmKEREKGgpKXt2YXIgbj1oO2g9REQobik/bi5nZXRVbnRydXN0ZWRNZXNzYWdlVmFsdWUoKTp2b2lkIDA7bC5mcm9tQ29udGFpbmVyRXhlY3V0aW9uPSEwfXJldHVybnttZXNzYWdlOmgsbWVzc2FnZUNvbnRleHQ6bH19dmFyIGI9dGhpcyxjPU1jKEUoMTkpLFtdKSxkPXBqKCk7ZC5wcnVuZWQ9PT0hMCYmUCg4Myk7dGhpcy5LPW5EKCkuZ2V0KCk7bkQoKS5saXN0ZW4oZnVuY3Rpb24oaCl7cUUoYixoKX0pO2Quc3Vic2NyaWJlcnM9KGQuc3Vic2NyaWJlcnN8fDApKzE7dmFyIGU9Yy5wdXNoLGY9dGhpcztjLnB1c2g9ZnVuY3Rpb24oKXt2YXIgaDtsaigpO2lmKGpqLkguU0FOREJPWEVEX0pTX1NFTUFQSE9SRT4wKXtoPVtdO2Zvcih2YXIgbD0wO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspaFtsXT1uZXcgRUQoYXJndW1lbnRzW2xdKX1lbHNlIGg9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7CnZhciBuPWgubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBhKHQpfSk7Zi5ILnB1c2guYXBwbHkoZi5ILG4pO3ZhciBwPWUuYXBwbHkoYyxoKSxxPU1hdGgubWF4KDEwMCxOZigxLDMwMCkpO2lmKHRoaXMubGVuZ3RoPnEpZm9yKFAoNCksZC5wcnVuZWQ9ITA7dGhpcy5sZW5ndGg+cTspdGhpcy5zaGlmdCgpO3ZhciByPXR5cGVvZiBwIT09ImJvb2xlYW4ifHxwO3JldHVybiBvRShmKSYmcn07dmFyIGc9Yy5zbGljZSgwKS5tYXAoZnVuY3Rpb24oaCl7cmV0dXJuIGEoaCl9KTt0aGlzLkgucHVzaC5hcHBseSh0aGlzLkgsZyk7SWYoNTEpfHwoZm4uSCYmdXooKSxiZChyRSkpO1ZCKGZ1bmN0aW9uKCl7aWYoIWQuZ3RtRG9tKXtkLmd0bURvbT0hMDt2YXIgaD17fTtjLnB1c2goKGguZXZlbnQ9Imd0bS5kb20iLGgpKX19KTtmRShmdW5jdGlvbigpe2lmKCFkLmd0bUxvYWQpe2QuZ3RtTG9hZD0hMDt2YXIgaD17fTtjLnB1c2goKGguZXZlbnQ9Imd0bS5sb2FkIixoKSl9fSl9OwpnRS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihhKXtyZXR1cm4gQVtFKDE5KV0ucHVzaChhKX07dmFyIGhFPW5ldyBnRTtmdW5jdGlvbiBuRShhLGIpe3ZhciBjPWEubWVzc2FnZUNvbnRleHQsZD1iLm1lc3NhZ2VDb250ZXh0O2lmKGMuZXZlbnRJZCE9PWQuZXZlbnRJZClyZXR1cm4gYy5ldmVudElkLWQuZXZlbnRJZDtpZighTSg1OTUpKXJldHVybiBjLnByaW9yaXR5SWQtZC5wcmlvcml0eUlkO3ZhciBlLGYsZzthOntmb3IodmFyIGg9KGU9Yy5wcmlvcml0eVF1ZXVlKSE9bnVsbD9lOltjLnByaW9yaXR5SWRdLGw9KGY9ZC5wcmlvcml0eVF1ZXVlKSE9bnVsbD9mOltkLnByaW9yaXR5SWRdLG49TWF0aC5taW4oaC5sZW5ndGgsbC5sZW5ndGgpLHA9MDtwPG47cCsrKWlmKGhbcF0hPT1sW3BdKXtnPWhbcF0tbFtwXTticmVhayBhfWc9aC5sZW5ndGgtbC5sZW5ndGh9cmV0dXJuIGd9CmZ1bmN0aW9uIGtFKGEpe2lmKGE9PW51bGx8fHR5cGVvZiBhIT09Im9iamVjdCIpcmV0dXJuITE7aWYoYS5ldmVudClyZXR1cm4hMDtpZihIYihhKSl7dmFyIGI9YVswXTtpZihiPT09ImNvbmZpZyJ8fGI9PT0iZXZlbnQifHxiPT09ImpzInx8Yj09PSJnZXQiKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIG1FKGEpe3JldHVybnttZXNzYWdlOmEubWVzc2FnZSxtZXNzYWdlQ29udGV4dDphLm1lc3NhZ2VDb250ZXh0fX1mdW5jdGlvbiBzRShhLGIsYyl7cmV0dXJuIGlFKGEsYixjKX1mdW5jdGlvbiB0RShhLGIpe3JldHVybiBqRShhLGIpfWZ1bmN0aW9uIHJFKCl7cEUoKX1mdW5jdGlvbiB1RShhKXtyZXR1cm4gaEUucHVzaChhKX07dmFyIHZFPWZ1bmN0aW9uKCl7fTt2RS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3ZhciBhLGI9UmooQS5sb2NhdGlvbi5ocmVmKTsoYT1iLmhvc3RuYW1lK2IucGF0aG5hbWUpJiZVbSgiZGwiLGVuY29kZVVSSUNvbXBvbmVudChhKSk7dmFyIGM7dmFyIGQ9RSg1KTtpZihkKXt2YXIgZT1JZig3KT8xOjAsZj1GaygpLGc9ZiYmZi5mcm9tQ29udGFpbmVyRXhlY3V0aW9uPzE6MCxoPWYmJmYuc291cmNlfHwwLGw9RSg2KTtjPWQrIjsiK2wrIjsiK2crIjsiK2grIjsiK2V9ZWxzZSBjPXZvaWQgMDt2YXIgbj1jO24mJlVtKCJ0ZHAiLG4pO3ZhciBwPU9wKCEwKTtwIT09dm9pZCAwJiZVbSgiZnJtIixTdHJpbmcocCkpfTt2YXIgd0U9bmV3IHZFO3ZhciB4RT1mdW5jdGlvbigpe3RoaXMuSD1YbSgpO3RoaXMuSz12b2lkIDB9LHlFPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFptKGEsZnVuY3Rpb24oYyl7cmV0dXJuIGMuamI+MD9iP2MuamIrIl8iK1dtKGMpOlN0cmluZyhjLmpiKTp2b2lkIDB9KX07CnhFLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZihwbCgpfHxmbi5LKVVtKCJjc3AiLGZ1bmN0aW9uKCl7dmFyIGI9eUUoYS5ILCEwKTskbShhLkgpO3JldHVybiBifSwhMSksVW0oIm1kZSIsZnVuY3Rpb24oKXt2YXIgYj1jbi5ILGM9eUUoYiwhMSk7JG0oYik7cmV0dXJuIGN9LCExKSxBLmFkZEV2ZW50TGlzdGVuZXIoInNlY3VyaXR5cG9saWN5dmlvbGF0aW9uIixmdW5jdGlvbihiKXtpZihiLmRpc3Bvc2l0aW9uPT09ImVuZm9yY2UiKXtQKDE3OSk7dmFyIGM9bm4oYi5lZmZlY3RpdmVEaXJlY3RpdmUpO2lmKGMpe3ZhciBkO2E6e3ZhciBlPWIuYmxvY2tlZFVSSSxmPWtuO2lmKGZuLksmJmUpe3ZhciBnPWpuKGMsZSk7aWYoZyl7dmFyIGg7ZD0oaD1sbihmLGMpKT09bnVsbD92b2lkIDA6aFtnXTticmVhayBhfX1kPXZvaWQgMH12YXIgbD1kO2lmKGwpe3ZhciBuO2E6e3RyeXt2YXIgcD1uZXcgVVJMKGIuYmxvY2tlZFVSSSkscT1wLnBhdGhuYW1lLmluZGV4T2YoIjsiKTsKbj1xPj0wP3Aub3JpZ2luK3AucGF0aG5hbWUuc3Vic3RyaW5nKDAscSk6cC5vcmlnaW4rcC5wYXRobmFtZTticmVhayBhfWNhdGNoKEQpe31uPXZvaWQgMH12YXIgcj1uO2lmKHIpe2Zvcih2YXIgdD1tKGwpLHU9dC5uZXh0KCk7IXUuZG9uZTt1PXQubmV4dCgpKXt2YXIgdj11LnZhbHVlO2lmKCF2LkVvKXt2LkVvPSEwO3ZhciB4PXtldmVudElkOnYuZXZlbnRJZCxwcmlvcml0eUlkOnYucHJpb3JpdHlJZH07aWYocGwoKSl7dmFyIHk9eCx6PXt0eXBlOjEsYmxvY2tlZFVybDpyLGVuZHBvaW50OnYuZW5kcG9pbnQsdmlvbGF0aW9uOmIuZWZmZWN0aXZlRGlyZWN0aXZlfTtpZihwbCgpKXt2YXIgQz1MbCgiVEFHX0RJQUdOT1NUSUNTIix7ZXZlbnRJZDp5PT1udWxsP3ZvaWQgMDp5LmV2ZW50SWQscHJpb3JpdHlJZDp5PT1udWxsP3ZvaWQgMDp5LnByaW9yaXR5SWR9KTtDLnRhZ0RpYWdub3N0aWNzPXo7b2woQyl9fXpFKGEsdi5kZXN0aW5hdGlvbklkLHYuZW5kcG9pbnQsYyl9fW1uKGMsCmIuYmxvY2tlZFVSSSl9fX19fSl9O3ZhciB6RT1mdW5jdGlvbihhLGIsYyxkKXthbihhLkgsYixjLDEsZCk7Vm0oImNzcCIsITApO1ZtKCJtZGUiLCEwKTtjIT09NjEmJmMhPT01NiYmYS5LPT09dm9pZCAwJiYoYS5LPUEuc2V0VGltZW91dChmdW5jdGlvbigpe2EuSC5qYj4wJiZ0byghMSk7YS5LPXZvaWQgMH0sNTAwKSl9LEFFPW5ldyB4RTt2YXIgQkU9ZnVuY3Rpb24oKXt0aGlzLnNlcXVlbmNlTnVtYmVyPTB9O0JFLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztDRSh0aGlzKTtJZig2NSkmJlVtKCJtdGJsIiwiMSIpO1VtKCJ2IiwiMyIpO1VtKCJ0IiwidCIpO1VtKCJwaWQiLGZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyhubShqbS5iYS5iaCkpfSk7VW0oImd0bSIsZnVuY3Rpb24oKXtyZXR1cm4gZHUoKX0pO1VtKCJzZXEiLGZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZygrK2Euc2VxdWVuY2VOdW1iZXIpfSk7VW0oImV4cCIsZnVuY3Rpb24oKXtyZXR1cm4gQ3AoKX0pfTt2YXIgQ0U9ZnVuY3Rpb24oYSl7aWYobm0oam0uYmEuYmgpPT09dm9pZCAwKXt2YXIgYj1mdW5jdGlvbigpe21tKGptLmJhLmJoLERiKCkpO2Euc2VxdWVuY2VOdW1iZXI9MH07YigpO2NkKGIsODY0RTUpfWVsc2UgcG0oam0uYmEuYmgsZnVuY3Rpb24oKXthLnNlcXVlbmNlTnVtYmVyPTB9KTthLnNlcXVlbmNlTnVtYmVyPTB9LERFPW5ldyBCRTtmdW5jdGlvbiBFRShhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQVthXX19CnZhciBGRT17fSxHRT0oRkVbMTRdPWZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuKGE9QS5jcnlwdG8pPT1udWxsP3ZvaWQgMDphLmdldFJhbmRvbVZhbHVlc30sRkVbMTVdPWZ1bmN0aW9uKCl7dmFyIGEsYjtyZXR1cm4oYT1BLmNyeXB0byk9PW51bGw/dm9pZCAwOihiPWEuc3VidGxlKT09bnVsbD92b2lkIDA6Yi5kaWdlc3R9LEZFWzFdPUVFKCJmZXRjaCIpLEZFWzZdPUVFKCJNYXAiKSxGRVsyXT1mdW5jdGlvbigpe3JldHVybiBNYXRoLnJhbmRvbX0sRkVbOF09ZnVuY3Rpb24oKXtyZXR1cm4gbmEoT2JqZWN0LCJhc3NpZ24iKX0sRkVbOV09ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmVudHJpZXN9LEZFWzEwXT1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXN9LEZFWzVdPUVFKCJQcm9taXNlIiksRkVbMTNdPUVFKCJSZWdFeHAiKSxGRVszXT1mdW5jdGlvbigpe3JldHVybiBIYy5zZW5kQmVhY29ufSxGRVs3XT1FRSgiU2V0IiksRkVbMTJdPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGh9LApGRVsxMV09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRofSxGRVs0XT1FRSgiWE1MSHR0cFJlcXVlc3QiKSxGRSksSEU9e30sSUU9KEhFWzE1XT0hMCxIRSk7dmFyIE5FPS9eKGh0dHBzPzopP1wvXC8vOwoKZnVuY3Rpb24gaEYoKXt9O2Z1bmN0aW9uIGlGKCl7SWYoNjIpJiYoaHkoImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyIsZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybigoZD1jLm9wdGlvbnMpPT1udWxsP3ZvaWQgMDpkLndhaXRGb3JUYWdzKSE9PSEwfSksaHkoImRldGVjdF9mb3JtX3N1Ym1pdF9ldmVudHMiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4oKGQ9Yy5vcHRpb25zKT09bnVsbD92b2lkIDA6ZC53YWl0Rm9yVGFncykhPT0hMH0pLGh5KCJkZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4oKGQ9Yy5vcHRpb25zKT09bnVsbD92b2lkIDA6ZC5maXhNaXNzaW5nQXBpKSE9PSEwfSkpfTt2YXIgakY9ZnVuY3Rpb24oKXt0aGlzLkg9dGhpcy5ncHBTdHJpbmc9dm9pZCAwfTtqRi5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLkg9dGhpcy5ncHBTdHJpbmc9dm9pZCAwfTt2YXIga0Y9bmV3IGpGO1syLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO1syLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO1syLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7bHQoe0d1OjAsRnU6MSxDdToyLHh1OjMsRHU6NCx5dTo1LEV1OjYsQXU6NyxCdTo4LHd1OjksenU6MTAsSHU6MTF9KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIE51bWJlcihhKX0pO2x0KHtKdTowLEt1OjEsSXU6Mn0pLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gTnVtYmVyKGEpfSk7dmFyIGxGPWZ1bmN0aW9uKGEsYixjLGQpe3J0LmNhbGwodGhpcyk7dGhpcy5mZT1iO3RoaXMua2Q9Yzt0aGlzLmFjPWQ7dGhpcy5MYT1uZXcgTWFwO3RoaXMuaGU9MDt0aGlzLmphPW5ldyBNYXA7dGhpcy55YT1uZXcgTWFwO3RoaXMuWj12b2lkIDA7dGhpcy5LPWF9O3dhKGxGLHJ0KTtsRi5wcm90b3R5cGUuTj1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLkg7dGhpcy5MYS5jbGVhcigpO3RoaXMuamEuY2xlYXIoKTt0aGlzLnlhLmNsZWFyKCk7dGhpcy5aJiYobnQodGhpcy5LLCJtZXNzYWdlIix0aGlzLlopLGRlbGV0ZSB0aGlzLlopO2RlbGV0ZSB0aGlzLks7ZGVsZXRlIHRoaXMuYWM7cnQucHJvdG90eXBlLk4uY2FsbCh0aGlzKX07CnZhciBtRj1mdW5jdGlvbihhKXtpZihhLkgpcmV0dXJuIGEuSDthLmtkJiZhLmtkKGEuSyk/YS5IPWEuSzphLkg9TnAoYS5LLGEuZmUpO3ZhciBiO3JldHVybihiPWEuSCkhPW51bGw/YjpudWxsfSxvRj1mdW5jdGlvbihhLGIsYyl7aWYobUYoYSkpaWYoYS5IPT09YS5LKXt2YXIgZD1hLkxhLmdldChiKTtkJiZkKGEuSCxjKX1lbHNle3ZhciBlPWEuamEuZ2V0KGIpO2lmKGUmJmUuZGspe25GKGEpO3ZhciBmPSsrYS5oZTthLnlhLnNldChmLHtwZTplLnBlLElyOmUubm8oYykscGVyc2lzdGVudDpiPT09ImFkZEV2ZW50TGlzdGVuZXIifSk7YS5ILnBvc3RNZXNzYWdlKGUuZGsoYyxmKSwiKiIpfX19LG5GPWZ1bmN0aW9uKGEpe2EuWnx8KGEuWj1mdW5jdGlvbihiKXtpZihiLnNvdXJjZT09PWEuSCl0cnl7dmFyIGM7Yz1hLmFjP2EuYWMoYik6dm9pZCAwO2lmKGMpe3ZhciBkPWMuWXMsZT1hLnlhLmdldChkKTtpZihlKXtlLnBlcnNpc3RlbnR8fGEueWEuZGVsZXRlKGQpO3ZhciBmOyhmPQplLnBlKT09bnVsbHx8Zi5jYWxsKGUsZS5JcixjLnBheWxvYWQpfX19Y2F0Y2goZyl7fX0sbXQoYS5LLCJtZXNzYWdlIixhLlopKX07dmFyIHBGPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5saXN0ZW5lcixkPSgwLGEuX19ncHApKCJhZGRFdmVudExpc3RlbmVyIixjKTtkJiZjKGQsITApfSxxRj1mdW5jdGlvbihhLGIpeygwLGEuX19ncHApKCJyZW1vdmVFdmVudExpc3RlbmVyIixiLmxpc3RlbmVyLGIubGlzdGVuZXJJZCl9LHJGPXtubzpmdW5jdGlvbihhKXtyZXR1cm4gYS5saXN0ZW5lcn0sZGs6ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtyZXR1cm4gYy5fX2dwcENhbGw9e2NhbGxJZDpiLGNvbW1hbmQ6ImFkZEV2ZW50TGlzdGVuZXIiLHZlcnNpb246IjEuMSJ9LGN9LHBlOmZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5fX2dwcFJldHVybjthKGMucmV0dXJuVmFsdWUsYy5zdWNjZXNzKX19LHNGPXtubzpmdW5jdGlvbihhKXtyZXR1cm4gYS5saXN0ZW5lcn0sZGs6ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtyZXR1cm4gYy5fX2dwcENhbGw9e2NhbGxJZDpiLGNvbW1hbmQ6InJlbW92ZUV2ZW50TGlzdGVuZXIiLHZlcnNpb246IjEuMSIsCnBhcmFtZXRlcjphLmxpc3RlbmVySWR9LGN9LHBlOmZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5fX2dwcFJldHVybixkPWMucmV0dXJuVmFsdWUuZGF0YTthPT1udWxsfHxhKGQsYy5zdWNjZXNzKX19O2Z1bmN0aW9uIHRGKGEpe3ZhciBiPXt9O3ZmKGEuZGF0YSk/Yj1KU09OLnBhcnNlKGEuZGF0YSk6Yj1hLmRhdGE7cmV0dXJue3BheWxvYWQ6YixZczpiLl9fZ3BwUmV0dXJuLmNhbGxJZH19CnZhciB1Rj1mdW5jdGlvbihhLGIpe3ZhciBjO2M9KGI9PT12b2lkIDA/e306YikudGltZW91dE1zO3J0LmNhbGwodGhpcyk7dGhpcy5jYWxsZXI9bmV3IGxGKGEsIl9fZ3BwTG9jYXRvciIsZnVuY3Rpb24oZCl7cmV0dXJuIHR5cGVvZiBkLl9fZ3BwPT09ImZ1bmN0aW9uIn0sdEYpO3RoaXMuY2FsbGVyLkxhLnNldCgiYWRkRXZlbnRMaXN0ZW5lciIscEYpO3RoaXMuY2FsbGVyLmphLnNldCgiYWRkRXZlbnRMaXN0ZW5lciIsckYpO3RoaXMuY2FsbGVyLkxhLnNldCgicmVtb3ZlRXZlbnRMaXN0ZW5lciIscUYpO3RoaXMuY2FsbGVyLmphLnNldCgicmVtb3ZlRXZlbnRMaXN0ZW5lciIsc0YpO3RoaXMudGltZW91dE1zPWMhPW51bGw/Yzo1MDB9O3dhKHVGLHJ0KTt1Ri5wcm90b3R5cGUuTj1mdW5jdGlvbigpe3RoaXMuY2FsbGVyLmRpc3Bvc2UoKTtydC5wcm90b3R5cGUuTi5jYWxsKHRoaXMpfTsKdUYucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPUhwKGZ1bmN0aW9uKCl7YSh2RiwhMCl9KSxkPXRoaXMudGltZW91dE1zPT09LTE/dm9pZCAwOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtjKCl9LHRoaXMudGltZW91dE1zKTtvRih0aGlzLmNhbGxlciwiYWRkRXZlbnRMaXN0ZW5lciIse2xpc3RlbmVyOmZ1bmN0aW9uKGUsZil7Y2xlYXJUaW1lb3V0KGQpO3RyeXt2YXIgZzt2YXIgaDsoKGg9ZS5waW5nRGF0YSk9PW51bGw/dm9pZCAwOmguZ3BwVmVyc2lvbik9PT12b2lkIDB8fGUucGluZ0RhdGEuZ3BwVmVyc2lvbj09PSIxInx8ZS5waW5nRGF0YS5ncHBWZXJzaW9uPT09IjEuMCI/KGIucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLmxpc3RlbmVySWQpLGc9e2V2ZW50TmFtZToic2lnbmFsU3RhdHVzIixkYXRhOiJyZWFkeSIscGluZ0RhdGE6e2ludGVybmFsRXJyb3JTdGF0ZToxLGdwcFN0cmluZzoiR1BQX0VSUk9SX1NUUklOR19JU19ERVBSRUNBVEVEX1NQRUMiLAphcHBsaWNhYmxlU2VjdGlvbnM6Wy0xXX19KTpBcnJheS5pc0FycmF5KGUucGluZ0RhdGEuYXBwbGljYWJsZVNlY3Rpb25zKT9nPWU6KGIucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLmxpc3RlbmVySWQpLGc9e2V2ZW50TmFtZToic2lnbmFsU3RhdHVzIixkYXRhOiJyZWFkeSIscGluZ0RhdGE6e2ludGVybmFsRXJyb3JTdGF0ZToyLGdwcFN0cmluZzoiR1BQX0VSUk9SX1NUUklOR19FWFBFQ1RFRF9BUFBMSUNBVElPTl9TRUNUSU9OX0FSUkFZIixhcHBsaWNhYmxlU2VjdGlvbnM6Wy0xXX19KTthKGcsZil9Y2F0Y2gobCl7aWYoZT09bnVsbD8wOmUubGlzdGVuZXJJZCl0cnl7Yi5yZW1vdmVFdmVudExpc3RlbmVyKGUubGlzdGVuZXJJZCl9Y2F0Y2gobil7YSh3RiwhMCk7cmV0dXJufWEoeEYsITApfX19KX07CnVGLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEpe29GKHRoaXMuY2FsbGVyLCJyZW1vdmVFdmVudExpc3RlbmVyIix7bGlzdGVuZXI6ZnVuY3Rpb24oKXt9LGxpc3RlbmVySWQ6YX0pfTsKdmFyIHhGPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntpbnRlcm5hbEVycm9yU3RhdGU6MixncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfVU5BVkFJTEFCTEUiLGFwcGxpY2FibGVTZWN0aW9uczpbLTFdfSxsaXN0ZW5lcklkOi0xfSx2Rj17ZXZlbnROYW1lOiJzaWduYWxTdGF0dXMiLGRhdGE6InJlYWR5IixwaW5nRGF0YTp7Z3BwU3RyaW5nOiJHUFBfRVJST1JfU1RSSU5HX0xJU1RFTkVSX1JFR0lTVFJBVElPTl9USU1FT1VUIixpbnRlcm5hbEVycm9yU3RhdGU6MixhcHBsaWNhYmxlU2VjdGlvbnM6Wy0xXX0sbGlzdGVuZXJJZDotMX0sd0Y9e2V2ZW50TmFtZToic2lnbmFsU3RhdHVzIixkYXRhOiJyZWFkeSIscGluZ0RhdGE6e2dwcFN0cmluZzoiR1BQX0VSUk9SX1NUUklOR19SRU1PVkVfRVZFTlRfTElTVEVORVJfRVJST1IiLGludGVybmFsRXJyb3JTdGF0ZToyLGFwcGxpY2FibGVTZWN0aW9uczpbLTFdfSxsaXN0ZW5lcklkOi0xfTtmdW5jdGlvbiB5RihhKXt2YXIgYjtpZighKGI9YS5waW5nRGF0YS5zaWduYWxTdGF0dXM9PT0icmVhZHkiKSl7dmFyIGM9YS5waW5nRGF0YS5hcHBsaWNhYmxlU2VjdGlvbnM7Yj0hY3x8Yy5sZW5ndGg9PT0xJiZjWzBdPT09LTF9aWYoYil7a0YuZ3BwU3RyaW5nPWEucGluZ0RhdGEuZ3BwU3RyaW5nO3ZhciBkPWEucGluZ0RhdGEuYXBwbGljYWJsZVNlY3Rpb25zLmpvaW4oIiwiKTtrRi5IPWR9fWZ1bmN0aW9uIHpGKCl7dHJ5e3ZhciBhPW5ldyB1RihBLHt0aW1lb3V0TXM6LTF9KTttRihhLmNhbGxlcikmJmEuYWRkRXZlbnRMaXN0ZW5lcih5Ril9Y2F0Y2goYil7fX07ZnVuY3Rpb24gQUYoKXt2YXIgYT1bWyJjdiIsRSgxKV0sWyJydiIsRSgxNCldLFsidGMiLGNBLnRhZ3MuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBkfSkubGVuZ3RoXV0sYj1KZigxNSk7YiYmYS5wdXNoKFsieCIsYl0pO3ZhciBjPUNwKCk7YyYmYS5wdXNoKFsidGFnX2V4cCIsY10pO3JldHVybiBhfTt2YXIgQkY9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD17fTt0aGlzLks9e307ZnooZnVuY3Rpb24oYil7dmFyIGM9Yi5ldmVudElkLGQ9Yi50ZixlPVtdLGY9YS5IW2NdfHxbXTtmLmxlbmd0aCYmZS5wdXNoKFsiaGYiLGYuam9pbigiLiIpXSk7dmFyIGc9YS5LW2NdfHxbXTtnLmxlbmd0aCYmZS5wdXNoKFsiaHQiLGcuam9pbigiLiIpXSk7ZCYmKGRlbGV0ZSBhLkhbY10sZGVsZXRlIGEuS1tjXSk7cmV0dXJuIGV9KX0sQ0Y9ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiBmdW5jdGlvbihiKXtzd2l0Y2goYil7Y2FzZSAxOmF8PTE7YnJlYWs7Y2FzZSAyOmF8PTI7YnJlYWs7Y2FzZSAzOmF8PTR9cmV0dXJuIGF9fSxERjt2YXIgRUY9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD0iIjtmbi5OJiZNKDUxNikmJmZ6KGZ1bmN0aW9uKCl7dmFyIGI9W107YS5IJiZiLnB1c2goWyJwc2QiLGEuSF0pO3JldHVybiBifSl9LEZGO2Z1bmN0aW9uIEdGKCl7cmV0dXJuITF9CmZ1bmN0aW9uIEhGKCl7dmFyIGE9e307cmV0dXJuIGZ1bmN0aW9uKGIsYyxkKXt9fTtmdW5jdGlvbiBJRigpe3ZhciBhPUpGO3JldHVybiBmdW5jdGlvbihiLGMsZCl7dmFyIGU9ZCYmZC5ldmVudDtLRihjKTt2YXIgZj1CaChiKT92b2lkIDA6MSxnPW5ldyBrYjtHYihjLGZ1bmN0aW9uKHIsdCl7dmFyIHU9VWQodCx2b2lkIDAsZik7dT09PXZvaWQgMCYmdCE9PXZvaWQgMCYmUCg0NCk7Zy5zZXQocix1KX0pO2EuUWIoUWYoKSk7dmFyIGg9e1JuOmhnKGIpLGV2ZW50SWQ6ZT09bnVsbD92b2lkIDA6ZS5pZCxwcmlvcml0eUlkOmUhPT12b2lkIDA/ZS5wcmlvcml0eUlkOnZvaWQgMCxwcmlvcml0eVF1ZXVlOmUhPT12b2lkIDA/ZS5wcmlvcml0eVF1ZXVlOnZvaWQgMCx3ZzplIT09dm9pZCAwP2Z1bmN0aW9uKHIpe2UubGQud2cocil9OnZvaWQgMCxQYjpmdW5jdGlvbigpe3JldHVybiBifSxsb2c6ZnVuY3Rpb24oKXt9LE5yOntpbmRleDpkPT1udWxsP3ZvaWQgMDpkLmluZGV4LHR5cGU6ZD09bnVsbD92b2lkIDA6ZC50eXBlLG5hbWU6ZD09bnVsbD92b2lkIDA6ZC5uYW1lfSwKaXQ6ISFLQShiLDMpLG9yaWdpbmFsRXZlbnREYXRhOmU9PW51bGw/dm9pZCAwOmUub3JpZ2luYWxFdmVudERhdGF9O2UmJmUuY2FjaGVkTW9kZWxWYWx1ZXMmJihoLmNhY2hlZE1vZGVsVmFsdWVzPXtndG06ZS5jYWNoZWRNb2RlbFZhbHVlcy5ndG0sZWNvbW1lcmNlOmUuY2FjaGVkTW9kZWxWYWx1ZXMuZWNvbW1lcmNlfSk7aWYoR0YoKSl7dmFyIGw9SEYoKSxuLHA7aC5BYj17d2s6W10seWc6e30samM6ZnVuY3Rpb24ocix0LHUpe3Q9PT0xJiYobj1yKTt0PT09NyYmKHA9dSk7bChyLHQsdSl9LGVpOlZoKCl9O2gubG9nPWZ1bmN0aW9uKHIpe3ZhciB0PU9hLmFwcGx5KDEsYXJndW1lbnRzKTtuJiZsKG4sNCx7bGV2ZWw6cixzb3VyY2U6cCxtZXNzYWdlOnR9KX19CnZhciBxPXJmKGEsaCxbYixnXSk7YS5RYigpO3EgaW5zdGFuY2VvZiBUYSYmKHEudHlwZT09PSJyZXR1cm4iP3E9cS5kYXRhOnE9dm9pZCAwKTtyZXR1cm4gVGQocSx2b2lkIDAsZil9fWZ1bmN0aW9uIEtGKGEpe3ZhciBiPWEuZ3RtT25TdWNjZXNzLGM9YS5ndG1PbkZhaWx1cmU7eWIoYikmJihhLmd0bU9uU3VjY2Vzcz1mdW5jdGlvbigpe2JkKGIpfSk7eWIoYykmJihhLmd0bU9uRmFpbHVyZT1mdW5jdGlvbigpe2JkKGMpfSl9O3ZhciBNRj1mdW5jdGlvbihhKXtWKGEsSC5KLnRnLGNvLmlhLmNiKX07ZnVuY3Rpb24gTkYoKXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjIwKX07dmFyIE9GPVtGLkQuemldLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5zbGljZSgyKX0pO3ZhciBQRj1mdW5jdGlvbihhKXtVKGEsRi5ELnppLGFsKDgsTkYpKX07ZnVuY3Rpb24gUUYoYSl7fVFGLlA9ImludGVybmFsLmFkZEFkc0NsaWNrSWRzIjtmdW5jdGlvbiBSRihhLGIpe3ZhciBjPXRoaXM7fVJGLnB1YmxpY05hbWU9ImFkZENvbnNlbnRMaXN0ZW5lciI7dmFyIFNGPSExO2Z1bmN0aW9uIFRGKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKWlmKFNGKXRyeXthW2JdKCl9Y2F0Y2goYyl7UCg3Nyl9ZWxzZSBhW2JdKCl9ZnVuY3Rpb24gVUYoYSxiLGMpe3ZhciBkPXRoaXMsZTtpZighbGgoYSl8fCFoaChiKXx8IW1oKGMpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJmdW5jdGlvbiIsInN0cmluZ3x1bmRlZmluZWQiXSxhcmd1bWVudHMpO1RGKFtmdW5jdGlvbigpe0woZCwibGlzdGVuX2RhdGFfbGF5ZXIiLGEpfV0pO2U9eUIoKS5hZGRMaXN0ZW5lcihhLFRkKGIsdm9pZCAwLDEpLGM9PT1udWxsP3ZvaWQgMDpjKTtyZXR1cm4gZX1VRi5QPSJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBWRihhLGIsYyl7fVZGLnB1YmxpY05hbWU9ImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciI7ZnVuY3Rpb24gV0YoYSxiLGMsZCl7fVdGLnB1YmxpY05hbWU9ImFkZEVsZW1lbnRFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBYRihhKXtyZXR1cm4gYS5ULnhiKCl9O2Z1bmN0aW9uIFlGKGEpe31ZRi5wdWJsaWNOYW1lPSJhZGRFdmVudENhbGxiYWNrIjsKdmFyIFpGPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmciP2E6U3RyaW5nKHJqKCkpfSxiRz1mdW5jdGlvbihhLGIpeyRGKGEsImluaXQiLCExKXx8KGFHKGEsImluaXQiLCEwKSxiKCkpfSwkRj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Y0coYSk7cmV0dXJuIE9iKGQsYixjKX0sZEc9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Y0coYSksZj1PYihlLGIsZCksZz1jKGYpO3JldHVybiBlW2JdPWd9LGFHPWZ1bmN0aW9uKGEsYixjKXtjRyhhKVtiXT1jfSxjRz1mdW5jdGlvbihhKXt2YXIgYj1raigiYXV0b0V2ZW50c1NldHRpbmdzIixmdW5jdGlvbigpe3JldHVybnt9fSk7Yi5oYXNPd25Qcm9wZXJ0eShhKXx8KGJbYV09e30pO3JldHVybiBiW2FdfSxlRz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e2V2ZW50OmIsImd0bS5lbGVtZW50IjphLCJndG0uZWxlbWVudENsYXNzZXMiOm9kKGEsImNsYXNzTmFtZSIpLCJndG0uZWxlbWVudElkIjphLmZvcnx8ZWQoYSwiaWQiKXx8CiIiLCJndG0uZWxlbWVudFRhcmdldCI6YS5mb3JtVGFyZ2V0fHxvZChhLCJ0YXJnZXQiKXx8IiJ9O2MmJihkWyJndG0udHJpZ2dlcnMiXT1jLmpvaW4oIiwiKSk7ZFsiZ3RtLmVsZW1lbnRVcmwiXT0oYS5hdHRyaWJ1dGVzJiZhLmF0dHJpYnV0ZXMuZm9ybWFjdGlvbj9hLmZvcm1BY3Rpb246IiIpfHxhLmFjdGlvbnx8b2QoYSwiaHJlZiIpfHxhLnNyY3x8YS5jb2RlfHxhLmNvZGViYXNlfHwiIjtyZXR1cm4gZH07dmFyIGhHPWZ1bmN0aW9uKGEsYixjKXtpZighYS5lbGVtZW50cylyZXR1cm4gMDtmb3IodmFyIGQ9Yi5kYXRhc2V0W2NdLGU9MCxmPTE7ZTxhLmVsZW1lbnRzLmxlbmd0aDtlKyspe3ZhciBnPWEuZWxlbWVudHNbZV0saD1nLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZighKGZHLmluZGV4T2YoaCk8MHx8aD09PSJpbnB1dCImJmdHLmluZGV4T2YoZy50eXBlLnRvTG93ZXJDYXNlKCkpPj0wKSl7aWYoZy5kYXRhc2V0W2NdPT09ZClyZXR1cm4gZjtmKyt9fXJldHVybiAwfSxmRz1bImlucHV0Iiwic2VsZWN0IiwidGV4dGFyZWEiXSxnRz1bImJ1dHRvbiIsImhpZGRlbiIsImltYWdlIiwicmVzZXQiLCJzdWJtaXQiXTsKZnVuY3Rpb24gaUcoYSl7aWYoYS5mb3JtKXt2YXIgYjtyZXR1cm4oKGI9YS5mb3JtKT09bnVsbD8wOmIudGFnTmFtZSk/YS5mb3JtOkIuZ2V0RWxlbWVudEJ5SWQoYS5mb3JtKX1yZXR1cm4gaGQoYSxbImZvcm0iXSwxMDApfTsKZnVuY3Rpb24gbUcoYSl7fW1HLlA9ImludGVybmFsLmFkZEZvcm1BYmFuZG9ubWVudExpc3RlbmVyIjtmdW5jdGlvbiBuRyhhLGIsYyxkKXt9Cm5HLlA9ImludGVybmFsLmFkZEZvcm1EYXRhIjsKZnVuY3Rpb24gc0coYSl7fXNHLlA9ImludGVybmFsLmFkZEdhU2VuZExpc3RlbmVyIjtmdW5jdGlvbiB0RyhhKXtpZighYSlyZXR1cm57fTt2YXIgYj1hLk5yO3JldHVybiBKQShiLnR5cGUsYi5pbmRleCxiLm5hbWUpfWZ1bmN0aW9uIHVHKGEpe2lmKCFhKXJldHVybnt9O3ZhciBiPXtvcmlnaW5hdGluZ0VudGl0eTp0RyhhKX07YS5wcmlvcml0eVF1ZXVlJiYoYi5wcmlvcml0eVF1ZXVlPWEucHJpb3JpdHlRdWV1ZSk7cmV0dXJuIGJ9O2Z1bmN0aW9uIENHKGEpe3ZhciBiPW1qKCJ6b25lcyIpO3JldHVybiBiP2IuZ2V0SXNBbGxvd2VkRm4od2soKSxhKTpmdW5jdGlvbigpe3JldHVybiEwfX1mdW5jdGlvbiBERygpe3ZhciBhPW1qKCJ6b25lcyIpO2EmJmEudW5yZWdpc3RlckNoaWxkKHdrKCkpfQpmdW5jdGlvbiBFRygpe2tCKHZrKCksZnVuY3Rpb24oYSl7dmFyIGI9YS5vcmlnaW5hbEV2ZW50RGF0YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSxjPW1qKCJ6b25lcyIpO3JldHVybiBjP2MuaXNBY3RpdmUod2soKSxiKTohMH0pO2hCKHZrKCksZnVuY3Rpb24oYSl7dmFyIGIsYztiPWEuZW50aXR5SWQ7Yz1hLnNlY3VyaXR5R3JvdXBzO3JldHVybiBDRyhOdW1iZXIoYS5vcmlnaW5hbEV2ZW50RGF0YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSkpKGIsYyl9KX07dmFyIEZHPWZ1bmN0aW9uKGEsYil7dGhpcy50YWdJZD1hO3RoaXMuY2Fub25pY2FsSWQ9Yn07CmZ1bmN0aW9uIEdHKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gYX1HRy5QPSJpbnRlcm5hbC5sb2FkR29vZ2xlVGFnIjtmdW5jdGlvbiBIRyhhKXtyZXR1cm4gbmV3IEtkKCIiLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYik7aWYoYyBpbnN0YW5jZW9mIEtkKXJldHVybiBuZXcgS2QoIiIsZnVuY3Rpb24oKXt2YXIgZD1PYS5hcHBseSgwLGFyZ3VtZW50cyksZT10aGlzLGY9RWQoWEYodGhpcyksbnVsbCk7Zi5ldmVudElkPWEuZXZlbnRJZDtmLnByaW9yaXR5SWQ9YS5wcmlvcml0eUlkO2Yub3JpZ2luYWxFdmVudERhdGE9YS5vcmlnaW5hbEV2ZW50RGF0YTt2YXIgZz1kLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gZS5ldmFsdWF0ZShsKX0pLGg9dGhpcy5ULndiKCk7aC51ZShmKTtyZXR1cm4gYy5OYy5hcHBseShjLFtoXS5jb25jYXQodyhnKSkpfSl9KX07ZnVuY3Rpb24gSUcoYSxiLGMpe3ZhciBkPXRoaXM7fUlHLlA9ImludGVybmFsLmFkZEdvb2dsZVRhZ1Jlc3RyaWN0aW9uIjsKZnVuY3Rpb24gUEcoYSxiKXt9UEcuUD0iaW50ZXJuYWwuYWRkSGlzdG9yeUNoYW5nZUxpc3RlbmVyIjtmdW5jdGlvbiBRRyhhLGIsYyl7fVFHLnB1YmxpY05hbWU9ImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiO2Z1bmN0aW9uIFJHKGEsYil7cmV0dXJuITB9UkcucHVibGljTmFtZT0iYWxpYXNJbldpbmRvdyI7ZnVuY3Rpb24gU0coYSxiLGMpe31TRy5QPSJpbnRlcm5hbC5hcHBlbmRSZW1vdGVDb25maWdQYXJhbWV0ZXIiO2Z1bmN0aW9uIFRHKGEpe3ZhciBiO3JldHVybiBifQpURy5wdWJsaWNOYW1lPSJjYWxsSW5XaW5kb3ciO2Z1bmN0aW9uIFVHKGEpe31VRy5wdWJsaWNOYW1lPSJjYWxsTGF0ZXIiO2Z1bmN0aW9uIFZHKGEpe31WRy5QPSJjYWxsT25Eb21SZWFkeSI7ZnVuY3Rpb24gV0coYSl7fVdHLlA9ImNhbGxPbldpbmRvd0xvYWQiO3ZhciBZRz1mdW5jdGlvbihhLGIpe3ZhciBjPW5tKFhHKXx8e30sZD1jW2FdfHx7fTtpZihkW2JdKXJldHVybiExO3ZhciBlPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sZCk7ZVtiXT0hMDt2YXIgZj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMpO2ZbYV09ZTttbShYRyxmKTtyZXR1cm4hMH0sWEc9am0uYmEuaHI7ZnVuY3Rpb24gWkcoYSxiKXtpZighbGgoYSl8fCFsaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwic3RyaW5nIl0sYXJndW1lbnRzKTt2YXIgYz1ZRyhhLGIpO3JldHVybiBjfVpHLlA9ImludGVybmFsLmNsYWltRGVzdGluYXRpb24iO2Z1bmN0aW9uICRHKGEsYil7dmFyIGM7cmV0dXJuIGN9JEcuUD0iaW50ZXJuYWwuY29tcHV0ZUd0bVBhcmFtZXRlciI7ZnVuY3Rpb24gYUgoYSxiKXt2YXIgYz10aGlzO31hSC5QPSJpbnRlcm5hbC5jb25zZW50U2NoZWR1bGVGaXJzdFRyeSI7ZnVuY3Rpb24gYkgoYSxiKXt2YXIgYz10aGlzO31iSC5QPSJpbnRlcm5hbC5jb25zZW50U2NoZWR1bGVSZXRyeSI7ZnVuY3Rpb24gY0goYSl7dmFyIGI7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO3ZhciBjPWE7aWYoIWttKGMpKXRocm93IEVycm9yKCJjb3B5RnJvbUNyb3NzQ29udGFpbmVyRGF0YSByZXF1aXJlcyB2YWxpZCBDcm9zc0NvbnRhaW5lclNjaGVtYSBrZXkuIik7dmFyIGQ9bm0oYyk7Yj1VZChkLHRoaXMuVCwxKTtyZXR1cm4gYn1jSC5QPSJpbnRlcm5hbC5jb3B5RnJvbUNyb3NzQ29udGFpbmVyRGF0YSI7ZnVuY3Rpb24gZEgoYSxiKXt2YXIgYzt2YXIgZT1VZChjLHRoaXMuVCxCaChYRih0aGlzKS5QYigpKT8yOjEpO2U9PT12b2lkIDAmJmMhPT12b2lkIDAmJlAoNDUpO3JldHVybiBlfWRILnB1YmxpY05hbWU9ImNvcHlGcm9tRGF0YUxheWVyIjsKZnVuY3Rpb24gZUgoYSl7dmFyIGI9dm9pZCAwO3JldHVybiBifWVILlA9ImludGVybmFsLmNvcHlGcm9tRGF0YUxheWVyQ2FjaGUiO2Z1bmN0aW9uIGZIKGEpe3ZhciBiO3JldHVybiBifWZILnB1YmxpY05hbWU9ImNvcHlGcm9tV2luZG93IjtmdW5jdGlvbiBnSChhKXt2YXIgYj12b2lkIDA7cmV0dXJuIFVkKGIsdGhpcy5ULDEpfWdILlA9ImludGVybmFsLmNvcHlLZXlGcm9tV2luZG93Ijt2YXIgaEg9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1jby5pYS5jYiYmZm8uSFthXT09PWJvLk1hLlVlJiYhWG8oRi5ELmthKX07dmFyIGlIPWZ1bmN0aW9uKCl7cmV0dXJuIjAifSxqSD1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9PSJzdHJpbmciKXJldHVybiIiO3ZhciBiPVsiZ2NsaWQiLCJkY2xpZCIsIndicmFpZCIsIl9nbCJdO00oMTAyKSYmYi5wdXNoKCJnYnJhaWQiKTtyZXR1cm4gU2ooYSxiLCIwIil9O3ZhciBrSD17fSxsSD17fSxtSD17fSxuSD17fSxvSD17fSxwSD17fSxxSD17fSxySD17fSxzSD17fSx0SD17fSx1SD17fSx2SD17fSx3SD17fSx4SD17fSx5SD17fSx6SD17fSxBSD17fSxCSD17fSxDSD17fSxESD17fSxFSD17fSxGSD17fSxHSD17fSxISD17fSxJSD17fSxKSD17fSxLSD0oSkhbRi5ELmZiXT0oa0hbMl09W2hIXSxrSCksSkhbRi5ELlpmXT0obEhbMl09W2hIXSxsSCksSkhbRi5ELkppXT0obUhbMl09W2hIXSxtSCksSkhbRi5ELmdtXT0obkhbMl09W2hIXSxuSCksSkhbRi5ELmhtXT0ob0hbMl09W2hIXSxvSCksSkhbRi5ELmltXT0ocEhbMl09W2hIXSxwSCksSkhbRi5ELmptXT0ocUhbMl09W2hIXSxxSCksSkhbRi5ELmttXT0ockhbMl09W2hIXSxySCksSkhbRi5ELkJjXT0oc0hbMl09W2hIXSxzSCksSkhbRi5ELmNnXT0odEhbMl09W2hIXSx0SCksSkhbRi5ELmRnXT0odUhbMl09W2hIXSx1SCksSkhbRi5ELmVnXT0odkhbMl09W2hIXSx2SCksSkhbRi5ELmZnXT0od0hbMl09CltoSF0sd0gpLEpIW0YuRC5nZ109KHhIWzJdPVtoSF0seEgpLEpIW0YuRC5oZ109KHlIWzJdPVtoSF0seUgpLEpIW0YuRC5pZ109KHpIWzJdPVtoSF0sekgpLEpIW0YuRC5qZ109KEFIWzJdPVtoSF0sQUgpLEpIW0YuRC5sYl09KEJIWzFdPVtoSF0sQkgpLEpIW0YuRC5EZF09KENIWzFdPVtoSF0sQ0gpLEpIW0YuRC5LZF09KERIWzFdPVtoSF0sREgpLEpIW0YuRC5FZV09KEVIWzFdPVtoSF0sRUgpLEpIW0YuRC5CZl09KEZIWzFdPVtmdW5jdGlvbihhKXtyZXR1cm4gTSgxMDIpJiZoSChhKX1dLEZIKSxKSFtGLkQuVWNdPShHSFsxXT1baEhdLEdIKSxKSFtGLkQuemFdPShISFsxXT1baEhdLEhIKSxKSFtGLkQuVWFdPShJSFsxXT1baEhdLElIKSxKSCksTEg9e30sTUg9KExIW0YuRC5sYl09aUgsTEhbRi5ELkRkXT1pSCxMSFtGLkQuS2RdPWlILExIW0YuRC5FZV09aUgsTEhbRi5ELkJmXT1pSCxMSFtGLkQuVWNdPWZ1bmN0aW9uKGEpe2lmKCFDZChhKSlyZXR1cm57fTt2YXIgYj1FZChhLApudWxsKTtkZWxldGUgYi5tYXRjaF9pZDtyZXR1cm4gYn0sTEhbRi5ELnphXT1qSCxMSFtGLkQuVWFdPWpILExIKSxOSD17fSxPSD17fSxQSD0oT0hbSC5KLllhXT0oTkhbMl09W2hIXSxOSCksT0gpLFFIPXt9O3ZhciBSSD1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLkg9YTt0aGlzLk49Yjt0aGlzLlI9Yzt0aGlzLlo9ZH07UkgucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9jby5pYS5nZDphO2lmKCF0aGlzLk4uc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYihhKX0pKXJldHVybiB0aGlzLlIuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYihhKX0pP3RoaXMuWih0aGlzLkgpOnRoaXMuSH07UkgucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtyZXR1cm4gQWQodGhpcy5IKT09PSJhcnJheSJ8fENkKHRoaXMuSCk/RWQodGhpcy5ILG51bGwpOnRoaXMuSH07CnZhciBTSD1mdW5jdGlvbigpe30sVEg9ZnVuY3Rpb24oYSxiKXt0aGlzLmNvbmRpdGlvbnM9YTt0aGlzLkg9Yn0sVUg9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9KChkPWEuY29uZGl0aW9uc1tiXSk9PW51bGw/dm9pZCAwOmRbMl0pfHxbXSxmLGc9KChmPWEuY29uZGl0aW9uc1tiXSk9PW51bGw/dm9pZCAwOmZbMV0pfHxbXTtyZXR1cm4gbmV3IFJIKGMsZSxnLGEuSFtiXXx8U0gpfSxWSCxXSDt2YXIgWUg9ZnVuY3Rpb24oYSl7YS5LPSEwO2EuSD0hMTtpZihJZig1Mikpe2lmKE0oNTE2KSYmWEgoKSl7dmFyIGI7YS5zZXR0aW5ncz0oYj1kYXRhLnByb2R1Y3RTZXR0aW5ncykhPW51bGw/Yjp7fTthLkg9ITB9ZWxzZXt2YXIgYzthLnNldHRpbmdzPShjPXByb2R1Y3RTZXR0aW5ncykhPW51bGw/Yzp7fX1wcm9kdWN0U2V0dGluZ3M9dm9pZCAwO2RhdGEucHJvZHVjdFNldHRpbmdzPXZvaWQgMDt2YXIgZDsoZD1GRikhPW51bGwmJmZuLk4mJk0oNTE2KSYmKGQuSD1hLkg/IjEiOiIwIil9fSwkSD1mdW5jdGlvbihhKXt2YXIgYj1aSDtiLkt8fFlIKGIpO3JldHVybiBiLnNldHRpbmdzW2FdfSxaSD1uZXcgZnVuY3Rpb24oKXt0aGlzLnNldHRpbmdzPXt9O3RoaXMuSz10aGlzLkg9ITF9OwpmdW5jdGlvbiBYSCgpe2lmKCFkYXRhLnByb2R1Y3RTZXR0aW5ncyYmIXByb2R1Y3RTZXR0aW5ncylyZXR1cm4hMDtpZighZGF0YS5wcm9kdWN0U2V0dGluZ3N8fCFwcm9kdWN0U2V0dGluZ3N8fE9iamVjdC5rZXlzKGRhdGEucHJvZHVjdFNldHRpbmdzKS5sZW5ndGghPT1PYmplY3Qua2V5cyhwcm9kdWN0U2V0dGluZ3MpLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGEgaW4gcHJvZHVjdFNldHRpbmdzKWlmKCFkYXRhLnByb2R1Y3RTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShhKXx8ZGF0YS5wcm9kdWN0U2V0dGluZ3NbYV0ucHJlQXV0b1BpaSE9PXByb2R1Y3RTZXR0aW5nc1thXS5wcmVBdXRvUGlpKXJldHVybiExO3JldHVybiEwfTt2YXIgYUk9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZXZlbnROYW1lPWI7dGhpcy5NPWM7dGhpcy5IPXt9O3RoaXMuaXNBYm9ydGVkPSExO3RoaXMudGFyZ2V0PWE7dGhpcy5tZXRhZGF0YT17fTtmb3IodmFyIGQ9Yy5ldmVudE1ldGFkYXRhfHx7fSxlPW0oT2JqZWN0LmtleXMoZCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO1YodGhpcyxnLGRbZ10pfX0sUj1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7cmV0dXJuKGM9YS5IW2JdKT09bnVsbD92b2lkIDA6KGQ9Yy5nZXRWYWx1ZSk9PW51bGw/dm9pZCAwOmQuY2FsbChjLFEoYSxILkoudGcpKX0sZXU9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5rZXlzKGEuSCl9LFU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuSCxlO2M9PT12b2lkIDA/ZT12b2lkIDA6KFZIIT1udWxsfHwoVkg9bmV3IFRIKEtILE1IKSksZT1VSChWSCxiLGMpKTtkW2JdPWV9OwphSS5wcm90b3R5cGUubWVyZ2VIaXREYXRhRm9yS2V5PWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlO2M9KGQ9dGhpcy5IW2FdKT09bnVsbD92b2lkIDA6KGU9ZC5LKT09bnVsbD92b2lkIDA6ZS5jYWxsKGQpO2lmKCFjKXJldHVybiBVKHRoaXMsYSxiKSwhMDtpZighQ2QoYykpcmV0dXJuITE7VSh0aGlzLGEsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCxjLGIpKTtyZXR1cm4hMH07dmFyIGJJPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7Zm9yKHZhciBjPW0oT2JqZWN0LmtleXMoYS5IKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWUsZj12b2lkIDAsZz12b2lkIDAsaD12b2lkIDA7YltlXT0oZj1hLkhbZV0pPT1udWxsP3ZvaWQgMDooaD0oZz1mKS5LKT09bnVsbD92b2lkIDA6aC5jYWxsKGcpfXJldHVybiBifTsKYUkucHJvdG90eXBlLmNvcHlUb0hpdERhdGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU8odGhpcy5NLGEpO2Q9PT12b2lkIDAmJihkPWIpO2lmKHpiKGQpJiZjIT09dm9pZCAwKXRyeXtkPWMoZCl9Y2F0Y2goZSl7fWQhPT12b2lkIDAmJlUodGhpcyxhLGQpfTsKdmFyIFE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm1ldGFkYXRhW2JdO2lmKGI9PT1ILkoudGcpe3ZhciBkO3JldHVybiBjPT1udWxsP3ZvaWQgMDooZD1jLkspPT1udWxsP3ZvaWQgMDpkLmNhbGwoYyl9dmFyIGU7cmV0dXJuIGM9PW51bGw/dm9pZCAwOihlPWMuZ2V0VmFsdWUpPT1udWxsP3ZvaWQgMDplLmNhbGwoYyxRKGEsSC5KLnRnKSl9LFY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubWV0YWRhdGEsZTtjPT09dm9pZCAwP2U9YzooV0ghPW51bGx8fChXSD1uZXcgVEgoUEgsUUgpKSxlPVVIKFdILGIsYykpO2RbYl09ZX0sY0k9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/e306Yjtmb3IodmFyIGM9bShPYmplY3Qua2V5cyhhLm1ldGFkYXRhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWUsZj12b2lkIDAsZz12b2lkIDAsaD12b2lkIDA7YltlXT0oZj1hLm1ldGFkYXRhW2VdKT09bnVsbD92b2lkIDA6KGg9KGc9ZikuSyk9PW51bGw/dm9pZCAwOgpoLmNhbGwoZyl9cmV0dXJuIGJ9LGRJPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0kSChhLnRhcmdldC5kZXN0aW5hdGlvbklkKTtyZXR1cm4gZCYmZFtiXSE9PXZvaWQgMD9kW2JdOmN9LFp1PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPW5ldyBhSSgoYj09bnVsbD92b2lkIDA6Yi50YXJnZXQpfHxhLnRhcmdldCwoYj09bnVsbD92b2lkIDA6Yi5ldmVudE5hbWUpfHxhLmV2ZW50TmFtZSwoYj09bnVsbD92b2lkIDA6Yi5NKXx8YS5NKSxkPWJJKGEpLGU9bShPYmplY3Qua2V5cyhkKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7VShjLGcsZFtnXSl9Zm9yKHZhciBoPWNJKGEpLGw9bShPYmplY3Qua2V5cyhoKSksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWU7VihjLHAsaFtwXSl9Yy5pc0Fib3J0ZWQ9YS5pc0Fib3J0ZWQ7cmV0dXJuIGN9LGVJPWZ1bmN0aW9uKGEpe3ZhciBiPWEuTSxjPWIuZXZlbnRJZCxkPWIucHJpb3JpdHlJZDsKcmV0dXJuIGQ/YysiXyIrZDpTdHJpbmcoYyl9O2FJLnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rpb24oKXt2YXIgYT1vbShqbS5iYS5TaSx7fSksYj1lSSh0aGlzKSxjPXRoaXMudGFyZ2V0LmRlc3RpbmF0aW9uSWQ7YVtiXXx8KGFbYl09e30pO2FbYl1bY109dmsoKTt2YXIgZD1qbS5iYS5TaTtpZihrbShkKSl7dmFyIGU7KGU9bG0oZCkpPT1udWxsfHxlLm5vdGlmeSgpfX07YUkucHJvdG90eXBlLmNhbkJlQWNjZXB0ZWQ9ZnVuY3Rpb24oYSl7dmFyIGI9bm0oam0uYmEuU2kpO2lmKCFiKXJldHVybiEwO3ZhciBjPWJbZUkodGhpcyldO2lmKCFjKXJldHVybiEwO3ZhciBkPWNbYSE9bnVsbD9hOnRoaXMudGFyZ2V0LmRlc3RpbmF0aW9uSWRdO3JldHVybiBkPT09dm9pZCAwfHxkPT09dmsoKX07ZnVuY3Rpb24gZkkoYSl7cmV0dXJue2dldERlc3RpbmF0aW9uSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS50YXJnZXQuZGVzdGluYXRpb25JZH0sZ2V0RXZlbnROYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIGEuZXZlbnROYW1lfSxzZXRFdmVudE5hbWU6ZnVuY3Rpb24oYil7YS5ldmVudE5hbWU9Yn0sZ2V0SGl0RGF0YTpmdW5jdGlvbihiKXtyZXR1cm4gUihhLGIpfSxzZXRIaXREYXRhOmZ1bmN0aW9uKGIsYyl7VShhLGIsYyl9LHNldEhpdERhdGFJZk5vdERlZmluZWQ6ZnVuY3Rpb24oYixjKXtSKGEsYik9PT12b2lkIDAmJlUoYSxiLGMpfSxjb3B5VG9IaXREYXRhOmZ1bmN0aW9uKGIsYyl7YS5jb3B5VG9IaXREYXRhKGIsYyl9LGdldE1ldGFkYXRhOmZ1bmN0aW9uKGIpe3JldHVybiBRKGEsYil9LHNldE1ldGFkYXRhOmZ1bmN0aW9uKGIsYyl7VihhLGIsYyl9LGlzQWJvcnRlZDpmdW5jdGlvbigpe3JldHVybiBhLmlzQWJvcnRlZH0sYWJvcnQ6ZnVuY3Rpb24oKXthLmlzQWJvcnRlZD0hMH0sCmdldEZyb21FdmVudENvbnRleHQ6ZnVuY3Rpb24oYil7cmV0dXJuIE8oYS5NLGIpfSxyYjpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRIaXRLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGV1KGEpfSxnZXRNZXJnZWRWYWx1ZXM6ZnVuY3Rpb24oYil7cmV0dXJuIGEuTS5nZXRNZXJnZWRWYWx1ZXMoYiwzKX0sbWVyZ2VIaXREYXRhRm9yS2V5OmZ1bmN0aW9uKGIsYyl7cmV0dXJuIENkKGMpP2EubWVyZ2VIaXREYXRhRm9yS2V5KGIsYyk6ITF9LGFjY2VwdDpmdW5jdGlvbigpe2EuYWNjZXB0KCl9LGNhbkJlQWNjZXB0ZWQ6ZnVuY3Rpb24oYil7cmV0dXJuIGEuY2FuQmVBY2NlcHRlZChiKX19fTtmdW5jdGlvbiBnSShhLGIpe3ZhciBjO2lmKCFlaChhKXx8IWZoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3QiLCJPYmplY3R8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTt2YXIgZD1UZChiKXx8e30sZT1UZChhLHRoaXMuVCwxKS5yYigpLGY9ZS5NO2Qub21pdEV2ZW50Q29udGV4dCYmKGY9SkMobmV3IHlDKGUuTS5ldmVudElkLGUuTS5wcmlvcml0eUlkKSkpO3ZhciBnPW5ldyBhSShlLnRhcmdldCxlLmV2ZW50TmFtZSxmKTtpZighZC5vbWl0SGl0RGF0YSlmb3IodmFyIGg9YkkoZSksbD1tKE9iamVjdC5rZXlzKGgpKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtVKGcscCxoW3BdKX1pZihkLm9taXRNZXRhZGF0YSlnLm1ldGFkYXRhPXt9O2Vsc2UgZm9yKHZhciBxPWNJKGUpLHI9bShPYmplY3Qua2V5cyhxKSksdD1yLm5leHQoKTshdC5kb25lO3Q9CnIubmV4dCgpKXt2YXIgdT10LnZhbHVlO1YoZyx1LHFbdV0pfWcuaXNBYm9ydGVkPWUuaXNBYm9ydGVkO2M9VWQoZkkoZyksdGhpcy5ULDEpO3JldHVybiBjfWdJLlA9ImludGVybmFsLmNvcHlQcmVIaXQiO2Z1bmN0aW9uIGhJKGEsYil7dmFyIGM9bnVsbDtyZXR1cm4gVWQoYyx0aGlzLlQsMil9aEkucHVibGljTmFtZT0iY3JlYXRlQXJndW1lbnRzUXVldWUiO2Z1bmN0aW9uIGlJKGEpe3JldHVybiBVZChmdW5jdGlvbihjKXt2YXIgZD1TQSgpO2lmKHR5cGVvZiBjPT09ImZ1bmN0aW9uIilkKGZ1bmN0aW9uKCl7YyhmdW5jdGlvbihmLGcsaCl7dmFyIGw9ClNBKCksbj1sJiZsLmdldEJ5TmFtZSYmbC5nZXRCeU5hbWUoZik7cmV0dXJuKG5ldyBBLmdhcGx1Z2lucy5MaW5rZXIobikpLmRlY29yYXRlKGcsaCl9KX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShjKSl7dmFyIGU9U3RyaW5nKGNbMF0pLnNwbGl0KCIuIik7YltlLmxlbmd0aD09PTE/ZVswXTplWzFdXSYmZC5hcHBseShudWxsLGMpfWVsc2UgaWYoYz09PSJpc0xvYWRlZCIpcmV0dXJuISFkLmxvYWRlZH0sdGhpcy5ULDEpfWlJLlA9ImludGVybmFsLmNyZWF0ZUdhQ29tbWFuZFF1ZXVlIjtmdW5jdGlvbiBqSShhKXtyZXR1cm4gVWQoZnVuY3Rpb24oKXtpZigheWIoZS5wdXNoKSl0aHJvdyBFcnJvcigiT2JqZWN0IGF0ICIrYSsiIGluIHdpbmRvdyBpcyBub3QgYW4gYXJyYXkuIik7ZS5wdXNoLmFwcGx5KGUsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX0sdGhpcy5ULApCaChYRih0aGlzKS5QYigpKT8yOjEpfWpJLnB1YmxpY05hbWU9ImNyZWF0ZVF1ZXVlIjtmdW5jdGlvbiBrSShhLGIpe3ZhciBjPW51bGw7aWYoIWxoKGEpfHwhbWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInN0cmluZ3x1bmRlZmluZWQiXSxhcmd1bWVudHMpO3RyeXt2YXIgZD0oYnx8IiIpLnNwbGl0KCIiKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuImlnIi5pbmRleE9mKGUpPj0wfSkuam9pbigiIik7Yz1uZXcgUGQobmV3IFJlZ0V4cChhLGQpKX1jYXRjaChlKXt9cmV0dXJuIGN9a0kuUD0iaW50ZXJuYWwuY3JlYXRlUmVnZXgiO2Z1bmN0aW9uIGxJKGEpe31sSS5QPSJpbnRlcm5hbC5kZWNsYXJlQ29uc2VudFN0YXRlIjtmdW5jdGlvbiBtSShhKXt2YXIgYj0iIjtyZXR1cm4gYn1tSS5QPSJpbnRlcm5hbC5kZWNvZGVVcmxIdG1sRW50aXRpZXMiO2Z1bmN0aW9uIG5JKGEsYixjKXt2YXIgZDtyZXR1cm4gZH1uSS5QPSJpbnRlcm5hbC5kZWNvcmF0ZVVybFdpdGhHYUNvb2tpZXMiO2Z1bmN0aW9uIG9JKCl7fW9JLlA9ImludGVybmFsLmRlZmVyQ3VzdG9tRXZlbnRzIjtmdW5jdGlvbiBwSShhLGIpe3RyeXtyZXR1cm4gYS5jbG9zZXN0KGIpfWNhdGNoKGMpe3JldHVybiBudWxsfX07ZnVuY3Rpb24gcUkoKXt2YXIgYT1BLnNjcmVlbjtyZXR1cm57d2lkdGg6YT9hLndpZHRoOjAsaGVpZ2h0OmE/YS5oZWlnaHQ6MH19CmZ1bmN0aW9uIHJJKGEpe2lmKEIuaGlkZGVuKXJldHVybiEwO3ZhciBiPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoYi50b3A9PT1iLmJvdHRvbXx8Yi5sZWZ0PT09Yi5yaWdodHx8IUEuZ2V0Q29tcHV0ZWRTdHlsZSlyZXR1cm4hMDt2YXIgYz1BLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTtpZihjLnZpc2liaWxpdHk9PT0iaGlkZGVuIilyZXR1cm4hMDtmb3IodmFyIGQ9YSxlPWM7ZDspe2lmKGUuZGlzcGxheT09PSJub25lIilyZXR1cm4hMDt2YXIgZj1lLm9wYWNpdHksZz1lLmZpbHRlcjtpZihnKXt2YXIgaD1nLmluZGV4T2YoIm9wYWNpdHkoIik7aD49MCYmKGc9Zy5zdWJzdHJpbmcoaCs4LGcuaW5kZXhPZigiKSIsaCkpLGcuY2hhckF0KGcubGVuZ3RoLTEpPT09IiUiJiYoZz1nLnN1YnN0cmluZygwLGcubGVuZ3RoLTEpKSxmPVN0cmluZyhNYXRoLm1pbihOdW1iZXIoZyksTnVtYmVyKGYpKSkpfWlmKGYhPT12b2lkIDAmJk51bWJlcihmKTw9MClyZXR1cm4hMDsoZD1kLnBhcmVudEVsZW1lbnQpJiYKKGU9QS5nZXRDb21wdXRlZFN0eWxlKGQsbnVsbCkpfXJldHVybiExfQp2YXIgdEk9ZnVuY3Rpb24oYSl7dmFyIGI9c0koKSxjPWIuaGVpZ2h0LGQ9Yi53aWR0aCxlPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj1lLmJvdHRvbS1lLnRvcCxnPWUucmlnaHQtZS5sZWZ0O3JldHVybiBmJiZnPygxLU1hdGgubWluKChNYXRoLm1heCgwLWUubGVmdCwwKStNYXRoLm1heChlLnJpZ2h0LWQsMCkpL2csMSkpKigxLU1hdGgubWluKChNYXRoLm1heCgwLWUudG9wLDApK01hdGgubWF4KGUuYm90dG9tLWMsMCkpL2YsMSkpOjB9LHNJPWZ1bmN0aW9uKCl7dmFyIGE9Qi5ib2R5LGI9Qi5kb2N1bWVudEVsZW1lbnR8fGEmJmEucGFyZW50RWxlbWVudCxjLGQ7aWYoQi5jb21wYXRNb2RlJiZCLmNvbXBhdE1vZGUhPT0iQmFja0NvbXBhdCIpYz1iP2IuY2xpZW50SGVpZ2h0OjAsZD1iP2IuY2xpZW50V2lkdGg6MDtlbHNle3ZhciBlPWZ1bmN0aW9uKGYsZyl7cmV0dXJuIGYmJmc/TWF0aC5taW4oZixnKTpNYXRoLm1heChmLGcpfTtjPWUoYj9iLmNsaWVudEhlaWdodDowLGE/CmEuY2xpZW50SGVpZ2h0OjApO2Q9ZShiP2IuY2xpZW50V2lkdGg6MCxhP2EuY2xpZW50V2lkdGg6MCl9cmV0dXJue3dpZHRoOmQsaGVpZ2h0OmN9fTt2YXIgdkk9ZnVuY3Rpb24oYSl7aWYodUkpe3ZhciBiPWFsKDI0LGZ1bmN0aW9uKCl7cmV0dXJuW119KTtpZihhPj0wJiZhPGIubGVuZ3RoJiZiW2FdKXt2YXIgYzsoYz1iW2FdKT09bnVsbHx8Yy5kaXNjb25uZWN0KCk7YlthXT12b2lkIDB9fWVsc2UgQS5jbGVhckludGVydmFsKGEpfSx5ST1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXT4xP2NbZF09MTpjW2RdPDAmJihjW2RdPTApO2lmKHVJKXt2YXIgZT0hMTtiZChmdW5jdGlvbigpe2V8fHdJKGEsYixjKSgpfSk7cmV0dXJuIHhJKGZ1bmN0aW9uKGYpe2U9ITA7Zm9yKHZhciBnPXtIZzowfTtnLkhnPGYubGVuZ3RoO2c9e0hnOmcuSGd9LGcuSGcrKyliZChmdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24oKXthKGZbaC5IZ10pfX0oZykpfSwKYixjKX1yZXR1cm4gY2Qod0koYSxiLGMpLDFFMyl9LHdJPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGgsbCl7dmFyIG49e3RvcDowLGJvdHRvbTowLHJpZ2h0OjAsbGVmdDowLHdpZHRoOjAsaGVpZ2h0OjB9LHA9e2JvdW5kaW5nQ2xpZW50UmVjdDpoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGludGVyc2VjdGlvblJhdGlvOmwsaW50ZXJzZWN0aW9uUmVjdDpuLGlzSW50ZXJzZWN0aW5nOmw+MCxyb290Qm91bmRzOm4sdGFyZ2V0OmgsdGltZTpOYigpfTtiZChmdW5jdGlvbigpe2EocCl9KX1mb3IodmFyIGU9W10sZj1bXSxnPTA7ZzxiLmxlbmd0aDtnKyspZS5wdXNoKDApLGYucHVzaCgtMSk7Yy5zb3J0KGZ1bmN0aW9uKGgsbCl7cmV0dXJuIGgtbH0pO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgaD0wO2g8Yi5sZW5ndGg7aCsrKXt2YXIgbD10SShiW2hdKTtpZihsPmVbaF0pZm9yKDtmW2hdPGMubGVuZ3RoLTEmJmw+PWNbZltoXSsxXTspZChiW2hdLGwpLGZbaF0rKztlbHNlIGlmKGw8CmVbaF0pZm9yKDtmW2hdPj0wJiZsPD1jW2ZbaF1dOylkKGJbaF0sbCksZltoXS0tO2VbaF09bH19fSx4ST1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPW5ldyBBLkludGVyc2VjdGlvbk9ic2VydmVyKGEse3RocmVzaG9sZDpjfSksZT0wO2U8Yi5sZW5ndGg7ZSsrKWQub2JzZXJ2ZShiW2VdKTtmb3IodmFyIGY9YWwoMjQsZnVuY3Rpb24oKXtyZXR1cm5bXX0pLGc9MDtnPGYubGVuZ3RoO2crKylpZighZltnXSlyZXR1cm4gZltnXT1kLGc7cmV0dXJuIGYucHVzaChkKS0xfSx1ST0hKCFBLkludGVyc2VjdGlvbk9ic2VydmVyfHwhQS5JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KTsKdmFyIEpJPWZ1bmN0aW9uKGEpe3ZhciBiLGM9KGI9YT09bnVsbD92b2lkIDA6YS5pbmNsdWRlU2VsZWN0b3IpIT1udWxsP2I6ITAsZCxlPShkPWE9PW51bGw/dm9pZCAwOmEuaW5jbHVkZVZpc2liaWxpdHkpIT1udWxsP2Q6ITAsZixnPShmPWE9PW51bGw/dm9pZCAwOmEuc2VsZWN0TXVsdGlwbGVFbGVtZW50cykhPW51bGw/ZjohMSxoPShhPT1udWxsP3ZvaWQgMDphLmV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzKXx8W10sbD0oYT09bnVsbD92b2lkIDA6YS5maWVsZEZpbHRlcnMpfHx7ZW1haWw6ITAscGhvbmU6ITEsYWRkcmVzczohMX0sbj1hbCg2LGZ1bmN0aW9uKCl7cmV0dXJue319KSxwPXpJKHtpbmNsdWRlU2VsZWN0b3I6YyxpbmNsdWRlVmlzaWJpbGl0eTplLGV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzOmgsZmllbGRGaWx0ZXJzOmx9KSxxPW5bcF07aWYocSYmTmIoKS1xLnRpbWVzdGFtcDwyMDApe3ZhciByPXEucmVzdWx0LHQ7KHIuZWxlbWVudHMuc29tZShmdW5jdGlvbihxYSl7cmV0dXJuIHFhLmRpfSl8fAooKHQ9ci5naSk9PW51bGw/MDp0LmRpKSkmJkd1KFQuVy5yaik7cmV0dXJuIHJ9dmFyIHU9QUkoKSx2PXUuc3RhdHVzLHg9W10seSx6LEM9W107aWYoTSg1NjgpKXt2YXIgRD1CSShsKSxJPUNJKHUuZWxlbWVudHMsRCksRz1ESShJKSxOPUVJKEcsaCksUz1GSShOKTt5PVMuZmlsdGVyKGZ1bmN0aW9uKHFhKXtyZXR1cm4gcWEuRGE9PT1GRC5CYn0pWzBdO2Zvcih2YXIgVz1bXSxlYT17SWc6MH07ZWEuSWc8RC5sZW5ndGg7ZWE9e0lnOmVhLklnfSxlYS5JZysrKXt2YXIgamE9Ti5maWx0ZXIoZnVuY3Rpb24ocWEpe3JldHVybiBmdW5jdGlvbihpYil7cmV0dXJuIGliLkRhPT09RFtxYS5JZ119fShlYSkpO2phLmxlbmd0aD4xMCYmKHY9IjMiLGphPWphLnNsaWNlKDAsMTApKTtXPVcuY29uY2F0KGphKX1OPVc7IWcmJlMmJihOPVMpO2Zvcih2YXIgZmE9MDtmYTxOLmxlbmd0aDtmYSsrKXt2YXIgc2E9TltmYV07c2EuRGEhPT1GRC5LaCYmQy5wdXNoKEdJKHNhLGMsZSkpfX1lbHNle2lmKGwuZW1haWwpe3ZhciBkYT0KSEkodS5lbGVtZW50cyk7eD1FSShkYSxoKTt5PUlJKHgpO2RhLmxlbmd0aD4xMCYmKHY9IjMiKX0hZyYmeSYmKHg9W3ldKTtmb3IodmFyIG1hPTA7bWE8eC5sZW5ndGg7bWErKylDLnB1c2goR0koeFttYV0sYyxlKSk7Qz1DLnNsaWNlKDAsMTApfXkmJih6PUdJKHksYyxlKSk7dmFyIFBhPXtlbGVtZW50czpDLGdpOnosc3RhdHVzOnZ9O25bcF09e3RpbWVzdGFtcDpOYigpLHJlc3VsdDpQYX07dmFyIEZhOyhQYS5lbGVtZW50cy5zb21lKGZ1bmN0aW9uKHFhKXtyZXR1cm4gcWEuZGl9KXx8KChGYT1QYS5naSk9PW51bGw/MDpGYS5kaSkpJiZHdShULlcucmopO3JldHVybiBQYX0sREk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIHUuRGE9PT1GRC5LaH0pLGM9YS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIHUuRGE9PT1GRC5YZH0pO2lmKGEuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1LkRhPT09RkQuY2V9KS5sZW5ndGg9PT0wJiZjLmxlbmd0aD09PQowKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdLGY9ZS5DYS5zcGxpdCgiICIpO2YubGVuZ3RoPjEmJmEucHVzaCh7Q2E6ZlswXSxEYTpGRC5YZCxlbGVtZW50OmUuZWxlbWVudCxPYzplLk9jfSx7Q2E6Zi5zbGljZSgxKS5qb2luKCIgIiksRGE6RkQuY2UsZWxlbWVudDplLmVsZW1lbnQsT2M6ZS5PY30pfWZvcih2YXIgZyxoPTAsbCxuPWZ1bmN0aW9uKHUpe3JldHVybiB1LkRhPT09RkQuZWUmJnUuQ2EubGVuZ3RoPj0zJiZ1LkNhLmxlbmd0aDw9NH0scD0wO3A8YS5sZW5ndGg7cCsrKXt2YXIgcT1hW3BdO2lmKG4ocSkmJmcmJnEuZWxlbWVudC5wYXJlbnRFbGVtZW50PT09ZyYmaDwzKXtpZihoKz0xLGwrPXEuQ2EsaD09PTMpe3ZhciByPXAtaCsxO2lmKGw9S0lbRkQuZWVdLm5hKGwpKWFbcl0uQ2E9bH19ZWxzZSBpZihoPTAsbD0iIixnPXZvaWQgMCxuKHEpKXtoKys7bD1xLkNhO3ZhciB0PXZvaWQgMDtnPSh0PXEuZWxlbWVudC5wYXJlbnRFbGVtZW50KSE9bnVsbD8KdDp2b2lkIDB9fXJldHVybiBhLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4hbih1KX0pfSxPST1mdW5jdGlvbihhLGIpe2lmKGEudmFsdWUmJkxJLmluZGV4T2YoKGEudHlwZXx8InRleHQiKS50b0xvd2VyQ2FzZSgpKSE9PS0xKXt2YXIgYz1hLmF1dG9jb21wbGV0ZTtpZihjKWZvcih2YXIgZD1jLnNwbGl0KCIgIiksZT0wO2U8ZC5sZW5ndGg7ZSsrKXt2YXIgZj1NSShhLnZhbHVlLGIsZFtlXSk7aWYoZilyZXR1cm4gZn12YXIgZyxoPVthLm5hbWUsYS5pZCwoZz1hLmFyaWFMYWJlbCkhPW51bGw/Zzp2b2lkIDAsYS5wbGFjZWhvbGRlcl0sbD1hLnBhcmVudEVsZW1lbnQ7bCYmbC50YWdOYW1lPT09IkxBQkVMIiYmaC5wdXNoKGwuaW5uZXJUZXh0KTt2YXIgbj1hLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7biYmbi50YWdOYW1lPT09IkxBQkVMIiYmIW4uaHRtbEZvciYmaC5wdXNoKG4uaW5uZXJUZXh0KTtpZihhLmlkKXt2YXIgcD1bXTt0cnl7cD1kb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsW2Zvcj0iJysKYS5pZCsnIl0nKX1jYXRjaChEKXt9Zm9yKHZhciBxPTA7cTxwLmxlbmd0aDtxKyspaC5wdXNoKHBbcV0uaW5uZXJUZXh0KX1oPWguZmlsdGVyKGZ1bmN0aW9uKEQpe3JldHVybiBEJiZELnRyaW0oKX0pO2Zvcih2YXIgcix0PTAsdT0wO3U8aC5sZW5ndGg7dSsrKXt2YXIgdj1OSShhLGIsaFt1XSk7aWYodil7dmFyIHg9dix5PXguQ2Esej14LkRhLEM9eC5YcztDPnQmJih0PUMscj17Q2E6eSxEYTp6fSl9fXJldHVybiByfX0sTkk9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdO2lmKEtJW2VdLm5lKXt2YXIgZj1LSVtlXS5uZS5leGVjKGMudHJpbSgpKTtpZihmKXt2YXIgZz1hLGg9W10sbD1nLnZhbHVlLnRyaW0oKTtsJiZoLnB1c2gobCk7aWYoZy50YWdOYW1lPT09IlNFTEVDVCIpdHJ5e3ZhciBuPWcucXVlcnlTZWxlY3RvcignW3ZhbHVlPSInK2cudmFsdWUrJyJdJykscD1uJiZuLmlubmVyVGV4dC50cmltKCk7cCYmaC5wdXNoKHApfWNhdGNoKHUpe31mb3IodmFyIHE9Cmgscj12b2lkIDAsdD0wO3Q8cS5sZW5ndGgmJiFyO3QrKylyPUtJW2VdLm5hKHFbdF0pO2lmKHIpcmV0dXJue0RhOmUsQ2E6cixYczpmWzBdLmxlbmd0aC9jLnRyaW0oKS5sZW5ndGh9fX19fSxNST1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07aWYoS0lbZV0uYXV0b2NvbXBsZXRlJiZLSVtlXS5hdXRvY29tcGxldGUuaW5kZXhPZihjKT49MCl7dmFyIGY9S0lbZV0ubmEoYS50cmltKCkpO2lmKGYpcmV0dXJue0RhOmUsQ2E6Zn19fX0sQkk9ZnVuY3Rpb24oYSl7dmFyIGI9W107YS5lbWFpbCYmYi5wdXNoKEZELkJiKTthLnBob25lJiZiLnB1c2goRkQuZWUpO2EuYWRkcmVzcyYmYi5wdXNoKEZELlhkLEZELmNlLEZELnhmLEZELnFnLEZELktoKTtyZXR1cm4gYn0sQ0k9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdLGY9ZS5lbGVtZW50LGc9ZS5PYyxoO2E6e3ZhciBsPWYsbj1iLApwPWwuaW5uZXJIVE1MO1BJLmluZGV4T2YobC50YWdOYW1lKT49MCYmKHA9bC52YWx1ZXx8cCk7aWYocCl7dmFyIHE7Yjp7Zm9yKHZhciByPXAsdD1uLHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIHY9dFt1XTtpZighS0lbdl0ubWUpe3ZhciB4PUtJW3ZdLm5hKHIudHJpbSgpKTtpZih4KXtxPXtEYTp2LENhOnh9O2JyZWFrIGJ9fX1xPXZvaWQgMH1pZihxKXtoPXE7YnJlYWsgYX1pZihQSS5pbmRleE9mKGwudGFnTmFtZSkhPT0tMSl7aD1PSShsLG4pO2JyZWFrIGF9fWg9dm9pZCAwfXZhciB5PWg7aWYoeSl7dmFyIHo9eTtjLnB1c2goe0NhOnouQ2EsRGE6ei5EYSxlbGVtZW50OmYsT2M6Z30pfX1yZXR1cm4gY30sRkk9ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYoYS5sZW5ndGg9PT0wKXJldHVybiBiO3ZhciBjPXt9LGQ7Zm9yKGQgaW4gRkQpaWYoYz17Vmc6Yy5WZ30sYy5WZz1kLEZELmhhc093blByb3BlcnR5KGMuVmcpKXt2YXIgZT1hLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIGcuRGE9PT0KRkRbZi5WZ119fShjKSk7ZS5sZW5ndGghPT0wJiYoRkRbYy5WZ109PT1GRC5CYiYmKGU9UUkoZSxmdW5jdGlvbihmKXtyZXR1cm4hUkkudGVzdChmLkNhKX0pLGU9UUkoZSxmdW5jdGlvbihmKXtyZXR1cm4gZi5lbGVtZW50LnRhZ05hbWUudG9VcHBlckNhc2UoKT09PSJJTlBVVCJ9KSxlPVFJKGUsZnVuY3Rpb24oZil7cmV0dXJuIXJJKGYuZWxlbWVudCl9KSksYi5wdXNoKGVbMF0pKX1yZXR1cm4gYn0sR0k9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZWxlbWVudCxlPWEuT2MsZj17Q2E6YS5DYSx0eXBlOmEuRGEsdGFnTmFtZTpkLnRhZ05hbWV9O2lmKGIpe3ZhciBnLGg9U0koZCk7aWYoZz0oZT9lKyJ8IitoOmgpLnNsaWNlKDAsVEkpKWYucXVlcnlTZWxlY3Rvcj1nfWMmJihmLmlzVmlzaWJsZT0hckkoZCkpO2UmJihmLmRpPSEwKTtyZXR1cm4gZn0sekk9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7Yj1hLmluY2x1ZGVTZWxlY3RvcjtjPWEuaW5jbHVkZVZpc2liaWxpdHk7ZD1hLmV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzOwplPWEuZmllbGRGaWx0ZXJzO3ZhciBmPSEhYisiLiIrISFjO2QubGVuZ3RoJiYoZis9Ii4iK2Quam9pbigiLiIpKTtyZXR1cm4gZis9Ii4iK2UuZW1haWwrIi4iK2UucGhvbmUrIi4iK2UuYWRkcmVzc30sSUk9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGghPT0wKXt2YXIgYjtiPVFJKGEsZnVuY3Rpb24oYyl7cmV0dXJuIVJJLnRlc3QoYy5DYSl9KTtiPVFJKGIsZnVuY3Rpb24oYyl7cmV0dXJuIGMuZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT0iSU5QVVQifSk7Yj1RSShiLGZ1bmN0aW9uKGMpe3JldHVybiFySShjLmVsZW1lbnQpfSk7cmV0dXJuIGJbMF19fSxFST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhLmxlbmd0aDtkKyspe2Zvcih2YXIgZT0hMCxmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBnPWJbZl07aWYoZyYmcEkoYVtkXS5lbGVtZW50LGcpKXtlPSExO2JyZWFrfX1hW2RdLkRhPT09RkQuQmImJk0oNjAyKSYmKFJJLnRlc3QoYVtkXS5DYSl8fGFbZF0uZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT0KIkEiJiZhW2RdLmVsZW1lbnQuaGFzQXR0cmlidXRlKCJocmVmIikmJmFbZF0uZWxlbWVudC5nZXRBdHRyaWJ1dGUoImhyZWYiKS5pbmRleE9mKCJtYWlsdG86IikhPT0tMT9lPSExOmFbZF0uZWxlbWVudC5jbG9zZXN0KCJmb290ZXIiKSE9PW51bGwmJihlPSExKSk7ZSYmYy5wdXNoKGFbZF0pfXJldHVybiBjfSxRST1mdW5jdGlvbihhLGIpe2lmKGEubGVuZ3RoPD0xKXJldHVybiBhO3ZhciBjPWEuZmlsdGVyKGIpO3JldHVybiBjLmxlbmd0aD09PTA/YTpjfSxTST1mdW5jdGlvbihhKXtpZihhPT09Qi5ib2R5KXJldHVybiJib2R5IjtpZihhLmlkKXJldHVybiIjIithLmlkO3ZhciBiPWEucGFyZW50RWxlbWVudDtpZihiKXt2YXIgYz1TSShiKSxkPVVJKGEsYiksZT1WSShhKSsiOm50aC1jaGlsZCgiK2QrIikiO3JldHVybiBjP2MrIj4iK2U6ZX12YXIgZj1hLnBhcmVudE5vZGU7aWYoZiBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Qpe3ZhciBnPVVJKGEsZik7cmV0dXJuIFZJKGEpKyI6bnRoLWNoaWxkKCIrCmcrIikifXJldHVybiBhLnRhZ05hbWU/YS50YWdOYW1lLnRvTG93ZXJDYXNlKCk6IiJ9LFZJPWZ1bmN0aW9uKGEpe2lmKGEuY2xhc3NMaXN0JiZhLmNsYXNzTGlzdC5sZW5ndGg+MCl7dmFyIGI9QXJyYXkuZnJvbShhLmNsYXNzTGlzdCxmdW5jdGlvbihjKXtyZXR1cm4gQ1NTLmVzY2FwZShjKX0pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5sZW5ndGg+MH0pO2lmKGIubGVuZ3RoPjApcmV0dXJuIi4iK2Iuam9pbigiLiIpfXJldHVybiIifSxVST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkcmVuLGQ9MDtkPGMubGVuZ3RoO2QrKylpZihjW2RdPT09YSlyZXR1cm4gZCsxO3JldHVybiAxfSxIST1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5lbGVtZW50LGY9ZC5PYyxnPWUudGV4dENvbnRlbnQ7ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT0iSU5QVVQiJiZlLnZhbHVlJiYoZz1lLnZhbHVlKTtpZihnKXt2YXIgaD0KZy5tYXRjaChLRCk7aWYoaCl7dmFyIGw9aFswXTtMRChsKXx8Yi5wdXNoKHtlbGVtZW50OmUsQ2E6bCxEYTpGRC5CYixPYzpmfSl9fX1yZXR1cm4gYn0sQUk9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPUIuYm9keTtpZighYilyZXR1cm57ZWxlbWVudHM6YSxzdGF0dXM6IjQifTt2YXIgYz1XSShiLDAsIiIsYSk7cmV0dXJue2VsZW1lbnRzOmEsc3RhdHVzOmN9fSxXST1mdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGU9YS5xdWVyeVNlbGVjdG9yQWxsKCIqIiksZj1lLmxlbmd0aD4xRTQ/IjIiOiIxIixnPTA7ZzxNYXRoLm1pbihlLmxlbmd0aCwxRTQpO2crKyl7dmFyIGg9ZVtnXTtpZighKFhJLmluZGV4T2YoaC50YWdOYW1lLnRvVXBwZXJDYXNlKCkpPj0wKSYmaC5jaGlsZHJlbiBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uKXt2YXIgbD0hMTtpZihNKDU4MikmJmguc2hhZG93Um9vdCYmYjwxKXt2YXIgbj1TSShoKTtXSShoLnNoYWRvd1Jvb3QsYisxLGM/YysifCIrbjpuLGQpPT09IjIiJiYKKGY9IjIiKTtsPSEwfXZhciBwPSExO2lmKCFsKWZvcih2YXIgcT0wO3E8TWF0aC5taW4oaC5jaGlsZEVsZW1lbnRDb3VudCwxRTQpO3ErKylpZighKFlJLmluZGV4T2YoaC5jaGlsZHJlbltxXS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpPj0wKSl7cD0hMDticmVha30oIXAmJiFsfHxNKDU2OCkmJlBJLmluZGV4T2YoaC50YWdOYW1lKSE9PS0xKSYmZC5wdXNoKHtlbGVtZW50OmgsT2M6Yj4wP2M6dm9pZCAwfSl9fXJldHVybiBmfSxSST0vc3VwcG9ydHxub3JlcGx5L2ksWEk9IlNDUklQVCBTVFlMRSBJTUcgU1ZHIFBBVEggQlIgTk9TQ1JJUFQgVEVYVEFSRUEiLnNwbGl0KCIgIiksWUk9WyJCUiJdLFRJPU5mKDcwLDUwKSxQST1bIklOUFVUIiwiU0VMRUNUIl0sTEk9InRleHQgdGVsIHNlYXJjaCBudW1iZXIgaGlkZGVuIGVtYWlsIHNlbGVjdC1vbmUiLnNwbGl0KCIgIiksWkk9UmVnRXhwKCJwaG9uZXxtb2JpbGV8Y29udGFjdC4/bnVtYmVyfHRlbGVmb25udW1tZXJ8dGVsZWZvbm98dGVsXHUwMGU5Zm9ub3x0ZWxmaXhlfFx1OTZmYlx1OGE3MXx0ZWxlZm9uZXx0ZWxlbW92ZWx8XHUwNDQyXHUwNDM1XHUwNDNiXHUwNDM1XHUwNDQ0XHUwNDNlXHUwNDNkfFx1MDkyZVx1MDk0Ylx1MDkyY1x1MDkzZVx1MDkwN1x1MDkzMnxcdTc1MzVcdThiZGR8XHU2MjRiXHU2NzNhXHU1M2Y3fFx1MGQyZVx1MGQ0YVx1MGQyY1x1MGQ0OFx1MGQzMlx1MGQ0ZFx1MjAwZHwoXnxbLV9dKXRlbFstX10/KFxcZCspKihcXFsuKlxcXSkqJHwoPzpcdWM4MDRcdWQ2NTR8XHVkNTc4XHViNGRjXHVkM2YwfFx1ZDczNFx1YjMwMFx1ZDNmMHxcdWQ3MzRcdWIzMDBcdWM4MDRcdWQ2NTQpKD86Lj9cdWJjODhcdWQ2MzgpP3woXFxifF98XFwqKXRlbGVmb24oXFxifF98XFwqKXx0ZWxlcG9ufHBvbnNlbHwobm9tb3J8bm9cXC4/KS4/KGhwfGhhbmRwaG9uZSkiLAoiaSIpLCRJPVJlZ0V4cCgiXm5hbWV8ZnVsbC4/bmFtZXx5b3VyLj9uYW1lfGN1c3RvbWVyLj9uYW1lfGJpbGwuP25hbWV8c2hpcC4/bmFtZXxuYW1lLipmaXJzdC4qbGFzdHxmaXJzdGFuZGxhc3RuYW1lfGNvbnRhY3QuPyhuYW1lfHBlcnNvbil8bm9tYnJlLip5LiphcGVsbGlkb3N8Xm5vbSg/IVthLXpBLVpdKXxcdTMwNGFcdTU0MGRcdTUyNGR8XHU2YzBmXHU1NDBkfF5ub21lfFx1MDY0Nlx1MDYyN1x1MDY0NS4qXHUwNjQ2XHUwNjI3XHUwNjQ1LipcdTA2MmVcdTA2MjdcdTA2NDZcdTA2NDhcdTA2MjdcdTA2MmZcdTA2YWZcdTA2Y2N8XHU1OWQzXFxzKlx1NTQwZHxcdTA0M2FcdTA0M2VcdTA0M2RcdTA0NDJcdTA0MzBcdTA0M2FcdTA0NDJcdTA0M2RcdTA0M2VcdTA0MzUuP1x1MDQzYlx1MDQzOFx1MDQ0Nlx1MDQzZXwoXFxifF98XFwqKWFkW1x1MDEzMV0/IHNveWFkW1x1MDEzMV0/KFxcYnxffFxcKil8XHVjMTMxXHViYTg1fG5hbWEuPyhsZW5na2FwfHBlbmVyaW1hfGthbXUpIiwKImkiKSxhSj1SZWdFeHAoImZpcnN0LipuYW1lfGluaXRpYWxzfGZuYW1lfGZpcnN0JHxnaXZlbi4qbmFtZXx2b3JuYW1lfG5vbWJyZXxmb3JlbmFtZXxwclx1MDBlOW5vbXxwcmVub218XHU1NDBkfG5vbWV8XHUwNDE4XHUwNDNjXHUwNDRmfFx1MDY0Nlx1MDYyN1x1MDY0NXxcdWM3NzRcdWI5ODR8XHUwZDJhXHUwZDQ3XHUwZDMwXHUwZDRkfChcXGJ8X3xcXCopKGlzaW18YWR8YWQoaXxcdTAxMzF8aW5penxcdTAxMzFuXHUwMTMxeik/KShcXGJ8X3xcXCopfFx1MDkyOFx1MDkzZVx1MDkyZXxuYW1hIGRlcGFuIiwiaSIpLGJKPVJlZ0V4cCgibGFzdC4qbmFtZXxsbmFtZXxzdXJuYW1lKD8hXFxkKXxsYXN0JHxzZWNvbmRuYW1lfGZhbWlseS4qbmFtZXxuYWNobmFtZXxhcGVsbGlkb3M/fGZhbWlsbGV8Xm5vbSg/IVthLXpBLVpdKXxjb2dub21lfFx1NTlkM3xhcGVsaWRvc3xzdXJlbmFtZXxzb2JyZW5vbWV8XHUwNDI0XHUwNDMwXHUwNDNjXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDRmfFx1MDY0Nlx1MDYyN1x1MDY0NS4qXHUwNjJlXHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJmXHUwNmFmXHUwNmNjfFx1MDkwOVx1MDkyYVx1MDkyOFx1MDkzZVx1MDkyZXxcdTBkMmVcdTBkMzFcdTBkNDFcdTBkMmFcdTBkNDdcdTBkMzBcdTBkNGR8KFxcYnxffFxcKikoc295aXNpbXxzb3lhZChpfFx1MDEzMXxpbml6fFx1MDEzMW5cdTAxMzF6KT8pKFxcYnxffFxcKil8XFxiXHVjMTMxKD86W15cdWJhODVdfFxcYil8bmFtYSBiZWxha2FuZyIsCiJpIiksY0o9UmVnRXhwKCJjb3VudHJ5fGNvdW50cmllc3xwYVx1MDBlZHN8cGFpc3woXFxifF8pbGFuZChcXGJ8XykoPyEuKihtYXJrLiopKXwoXnxbXihcdTUxNjV8XHU1MWZhKV0pXHU1NmZkfFx1NTZmZFx1NWJiNnxcdWFkNmRcdWFjMDB8XHViMDk4XHViNzdjfChcXGJ8XykoXHUwMGZjbGtlfHVsY2V8dWxrZSkoXFxifF8pfFx1MDZhOVx1MDYzNFx1MDY0OFx1MDYzMXxuZWdhcmEiLCJpIiksZEo9UmVnRXhwKCIoXnxbXi5dKXppcHxwb3N0YWx8cG9zdC4qY29kZXxwY29kZXxwaW4uP2NvZGV8cG9zdGxlaXR6YWhsfFxcYmNwXFxifFxcYmNkcFxcYnxcXGJjYXBcXGJ8XHU5MGY1XHU0ZmJmXHU3NTZhXHU1M2Y3fGNvZGlnb3xjb2Rwb3N8XFxiY2VwXFxifFx1MDQxZlx1MDQzZVx1MDQ0N1x1MDQ0Mlx1MDQzZVx1MDQzMlx1MDQ0Ylx1MDQzOS4/XHUwNDE4XHUwNDNkXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDQxfFx1MDkyYVx1MDkzZlx1MDkyOC4/XHUwOTE1XHUwOTRiXHUwOTIxfFx1MGQyYVx1MGQzZlx1MGQyOFx1MGQ0ZFx1MjAwZFx1MGQxNVx1MGQ0Ylx1MGQyMVx1MGQ0ZHxcdTkwYWVcdTY1M2ZcdTdmMTZcdTc4MDF8XHU5MGFlXHU3ZjE2fFx1OTBmNVx1OTA1ZVx1NTM0MFx1ODY1ZnwoXFxifF8pcG9zdGEga29kdShcXGJ8Xyl8XHVjNmIwXHVkM2I4Lj9cdWJjODhcdWQ2Mzh8a29kZS4/cG9zIiwKImkiKSxlSj17fSxLST0oZUpbRkQuQmJdPXttZTohMSxuYTpNRH0sZUpbRkQuZWVdPXttZTohMCxhdXRvY29tcGxldGU6WyJ0ZWwiLCJ0ZWwtbmF0aW9uYWwiLCJ0ZWwtbG9jYWwiXSxuZTpaSSxuYTpmdW5jdGlvbihhKXtyZXR1cm4gR0QoYSwhMCl9fSxlSltGRC5LaF09e21lOiEwLGF1dG9jb21wbGV0ZTpbIm5hbWUiLCJjYy1uYW1lIl0sbmU6JEksbmE6TkR9LGVKW0ZELlhkXT17bWU6ITAsYXV0b2NvbXBsZXRlOlsiZ2l2ZW4tbmFtZSIsImNjLWdpdmVuLW5hbWUiXSxuZTphSixuYTpORH0sZUpbRkQuY2VdPXttZTohMCxhdXRvY29tcGxldGU6WyJmYW1pbHktbmFtZSIsImNjLWZhbWlseS1uYW1lIl0sbmU6YkosbmE6TkR9LGVKW0ZELnhmXT17bWU6ITAsYXV0b2NvbXBsZXRlOlsiY291bnRyeSIsImNvdW50cnktbmFtZSJdLG5lOmNKLG5hOk5EfSxlSltGRC5xZ109e21lOiEwLGF1dG9jb21wbGV0ZTpbInBvc3RhbC1jb2RlIl0sbmU6ZEosbmE6SUR9LGVKKTtmdW5jdGlvbiBmSihhKXt2YXIgYjtMKHRoaXMsImRldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGEiLCJhdXRvIik7dmFyIGM9VGQoYSl8fHt9LGQ9Skkoe2luY2x1ZGVTZWxlY3RvcjohIWMuaW5jbHVkZVNlbGVjdG9yLGluY2x1ZGVWaXNpYmlsaXR5OiEhYy5pbmNsdWRlVmlzaWJpbGl0eSxleGNsdWRlRWxlbWVudFNlbGVjdG9yczpjLmV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzLGZpZWxkRmlsdGVyczpjLmZpZWxkRmlsdGVycyxzZWxlY3RNdWx0aXBsZUVsZW1lbnRzOiEhYy5zZWxlY3RNdWx0aXBsZUVsZW1lbnRzfSk7Yj1uZXcga2I7dmFyIGU9bmV3IEdkO2Iuc2V0KCJlbGVtZW50cyIsZSk7Zm9yKHZhciBmPWQuZWxlbWVudHMsZz0wO2c8Zi5sZW5ndGg7ZysrKWUucHVzaChnSihmW2ddKSk7ZC5naSE9PXZvaWQgMCYmYi5zZXQoInByZWZlcnJlZEVtYWlsRWxlbWVudCIsCmdKKGQuZ2kpKTtiLnNldCgic3RhdHVzIixkLnN0YXR1cyk7aWYoYy5yZWFkRnJvbURhdGFMYXllcil7aEooZSxjKTt2YXIgaD1QRCgpLGw9aC5zdDtiLnNldCgiZGF0YUxheWVyU2VhcmNoVGltZSIsaC52dCk7Yi5zZXQoImRhdGFMYXllclNlYXJjaENvdW50IixsKX1yZXR1cm4gYn0KdmFyIGlKPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIEZELkJiOnJldHVybiJlbWFpbCI7Y2FzZSBGRC5lZTpyZXR1cm4icGhvbmVfbnVtYmVyIjtjYXNlIEZELlhkOnJldHVybiJmaXJzdF9uYW1lIjtjYXNlIEZELmNlOnJldHVybiJsYXN0X25hbWUiO2Nhc2UgRkQudGo6cmV0dXJuInN0cmVldCI7Y2FzZSBGRC5saTpyZXR1cm4iY2l0eSI7Y2FzZSBGRC5qajpyZXR1cm4icmVnaW9uIjtjYXNlIEZELnFnOnJldHVybiJwb3N0YWxfY29kZSI7Y2FzZSBGRC54ZjpyZXR1cm4iY291bnRyeSJ9fSxqSj1mdW5jdGlvbihhKXt2YXIgYj1uZXcga2IsYz1pSihhLkRhKTtjIT09dm9pZCAwJiZiLnNldCgidHlwZSIsYyk7Yi5zZXQoInVzZXJEYXRhIixhLkNhKTtiLnNldCgidGFnTmFtZSIsIkRMWVIiKTtyZXR1cm4gYn0saEo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1RRCgpO2lmKE0oNTY4KSlmb3IodmFyIGQ9bmV3IFNldChhLmhjKCkubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLmdldCgidHlwZSIpfSkpLAplPW0oYyksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPW0oZi52YWx1ZSksaD1nLm5leHQoKS52YWx1ZSxsPWcubmV4dCgpLnZhbHVlLG49aCxwPWw7aWYoYi5zZWxlY3RNdWx0aXBsZUVsZW1lbnRzKWEucHVzaChqSihwKSk7ZWxzZXt2YXIgcT1pSihuKTtxJiYhZC5oYXMocSkmJmEucHVzaChqSihwKSl9fWVsc2UgYy5oYXMoRkQuQmIpJiYoYi5zZWxlY3RNdWx0aXBsZUVsZW1lbnRzfHxhLmxlbmd0aCgpPT09MCkmJmEucHVzaChqSihjLmdldChGRC5CYikpKX0sZ0o9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGtiO2Iuc2V0KCJ1c2VyRGF0YSIsYS5DYSk7Yi5zZXQoInRhZ05hbWUiLGEudGFnTmFtZSk7YS5xdWVyeVNlbGVjdG9yIT09dm9pZCAwJiZiLnNldCgicXVlcnlTZWxlY3RvciIsYS5xdWVyeVNlbGVjdG9yKTthLmlzVmlzaWJsZSE9PXZvaWQgMCYmYi5zZXQoImlzVmlzaWJsZSIsYS5pc1Zpc2libGUpO2lmKE0oNTY4KSl7dmFyIGM9aUooYS50eXBlKTtjIT09CnZvaWQgMCYmYi5zZXQoInR5cGUiLGMpfWVsc2Ugc3dpdGNoKGEudHlwZSl7Y2FzZSBGRC5CYjpiLnNldCgidHlwZSIsImVtYWlsIil9cmV0dXJuIGJ9O2ZKLlA9ImludGVybmFsLmRldGVjdFVzZXJQcm92aWRlZERhdGEiOwp2YXIga0o9ZnVuY3Rpb24oYSl7dmFyIGI9aGQoYSxbImJ1dHRvbiIsImlucHV0Il0sNTApO2lmKCFiKXJldHVybiBudWxsO3ZhciBjPVN0cmluZyhiLnRhZ05hbWUpLnRvTG93ZXJDYXNlKCk7aWYoYz09PSJidXR0b24iKXJldHVybiBiO2lmKGM9PT0iaW5wdXQiKXt2YXIgZD1lZChiLCJ0eXBlIik7aWYoZD09PSJidXR0b24ifHxkPT09InN1Ym1pdCJ8fGQ9PT0iaW1hZ2UifHxkPT09ImZpbGUifHxkPT09InJlc2V0IilyZXR1cm4gYn1yZXR1cm4gbnVsbH0sbEo9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMudGFyZ2V0O2lmKGQpe3ZhciBlPSRGKGEsImluZGl2aWR1YWxFbGVtZW50SWRzIixbXSk7aWYoZS5sZW5ndGg+MCl7dmFyIGY9ZUcoZCxiLGUpO3VFKGYpfXZhciBnPSExLGg9JEYoYSwiY29tbW9uQnV0dG9uSWRzIixbXSk7aWYoaC5sZW5ndGg+MCl7dmFyIGw9a0ooZCk7aWYobCl7dmFyIG49ZUcobCxiLGgpO3VFKG4pO2c9ITB9fXZhciBwPSRGKGEsInNlbGVjdG9yVG9UcmlnZ2VySWRzIiwKe30pLHE7Zm9yKHEgaW4gcClpZihwLmhhc093blByb3BlcnR5KHEpKXt2YXIgcj1nP3BbcV0uZmlsdGVyKGZ1bmN0aW9uKHYpe3JldHVybiBoLmluZGV4T2Yodik9PT0tMX0pOnBbcV07aWYoci5sZW5ndGghPT0wKXt2YXIgdD1wSShkLHEpO2lmKHQpe3ZhciB1PWVHKHQsYixyKTt1RSh1KX19fX19OwpmdW5jdGlvbiBtSihhLGIpe2lmKCFmaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0fHVuZGVmaW5lZCIsImFueSJdLGFyZ3VtZW50cyk7dmFyIGM9YT9UZChhKTp7fSxkPUpiKGMubWF0Y2hDb21tb25CdXR0b25zKSxlPSEhYy5jc3NTZWxlY3RvcixmPVpGKGIpO0wodGhpcywiZGV0ZWN0X2NsaWNrX2V2ZW50cyIsYy5tYXRjaENvbW1vbkJ1dHRvbnMsYy5jc3NTZWxlY3Rvcik7dmFyIGc9Yy51c2VWMkV2ZW50TmFtZT8iZ3RtLmNsaWNrLXYyIjoiZ3RtLmNsaWNrIixoPWMudXNlVjJFdmVudE5hbWU/ImVjbCI6ImNsIixsPWZ1bmN0aW9uKHApe3AucHVzaChmKTtyZXR1cm4gcH07aWYoZXx8ZCl7aWYoZCYmZEcoaCwiY29tbW9uQnV0dG9uSWRzIixsLFtdKSxlKXt2YXIgbj1MYihTdHJpbmcoYy5jc3NTZWxlY3RvcikpO2RHKGgsInNlbGVjdG9yVG9UcmlnZ2VySWRzIiwKZnVuY3Rpb24ocCl7cC5oYXNPd25Qcm9wZXJ0eShuKXx8KHBbbl09W10pO2wocFtuXSk7cmV0dXJuIHB9LHt9KX19ZWxzZSBkRyhoLCJpbmRpdmlkdWFsRWxlbWVudElkcyIsbCxbXSk7YkcoaCxmdW5jdGlvbigpeyRjKEIsImNsaWNrIixmdW5jdGlvbihwKXtsSihoLGcscCl9LCEwKX0pO3JldHVybiBmfW1KLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uQ2xpY2siOwp2YXIgbko9ZnVuY3Rpb24oKXt0aGlzLkg9W107dGhpcy5OPSEhQS5NdXRhdGlvbk9ic2VydmVyfTtuSi5wcm90b3R5cGUuSz1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2lmKHRoaXMuSC5sZW5ndGg9PT0wKXt2YXIgYz1mdW5jdGlvbigpe3ZhciBkPUIuYm9keTtpZihkKWlmKGIuTikobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGY9MDtmPGIuSC5sZW5ndGg7ZisrKWJkKGIuSFtmXSl9KSkub2JzZXJ2ZShkLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO2Vsc2V7dmFyIGU9ITE7JGMoZCwiRE9NTm9kZUluc2VydGVkIixmdW5jdGlvbigpe2V8fChlPSEwLGJkKGZ1bmN0aW9uKCl7ZT0hMTtmb3IodmFyIGY9MDtmPGIuSC5sZW5ndGg7ZisrKWJkKGIuSFtmXSl9KSl9KX19O0IuYm9keT9jKCk6YmQoYyl9dGhpcy5ILnB1c2goYSl9O25KLnByb3RvdHlwZS5SPWZ1bmN0aW9uKGEpe2lmKHRoaXMuSClmb3IodmFyIGI9MDtiPHRoaXMuSC5sZW5ndGg7YisrKXRoaXMuSFtiXT09PQphJiZ0aGlzLkguc3BsaWNlKGIsMSl9O3ZhciBvSj1uZXcgbko7CmZ1bmN0aW9uIHRKKGEsYil7cmV0dXJuIHB9dEouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25FbGVtZW50VmlzaWJpbGl0eSI7ZnVuY3Rpb24gdUooKXt9dUouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25FcnJvciI7CnZhciB3Sj1mdW5jdGlvbihhLGIpe0diKGEsZnVuY3Rpb24oYyxkKXt2YXIgZT1iW2NdO2UmJkdiKGQsZnVuY3Rpb24oZixnKXt2SihnLGUpfSl9KX0seko9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9IiIrYjtpZihjW2hdKWNbaF0ucHVzaChhKTtlbHNle3ZhciBsPVthXTtjW2hdPWw7dmFyIG49ZFtoXTtufHwobj17fSxkW2hdPW4pO2UucHVzaChmdW5jdGlvbihwKXt2YXIgcT1wLnRhcmdldDtpZihxKXt2YXIgcj1pRyhxKTtpZihyKXt2YXIgdD14SihyLCJndG1Gb3JtSW50ZXJhY3RJZCIsZiksdT14SihxLCJndG1Gb3JtSW50ZXJhY3RGaWVsZElkIixnKTtpZih0IT09bnVsbCYmdSE9PW51bGwpe3ZhciB2PW5bdF07dj8odi5SYiYmKEEuY2xlYXJUaW1lb3V0KHYuUmIpLHYuZGYuZ2V0QXR0cmlidXRlKCJkYXRhLWd0bS1mb3JtLWludGVyYWN0LWZpZWxkLWlkIikhPT11JiZ2Sih2LGwpKSx2LmRmPXEseUoodixsLGIpKTooblt0XT17Zm9ybTpyLGRmOnEsc2VxdWVuY2VOdW1iZXI6MCwKUmI6bnVsbH0seUooblt0XSxsLGIpKX19fX0pfX0sdko9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmZvcm0sZD1hLmRmLGU9ZUcoYywiZ3RtLmZvcm1JbnRlcmFjdCIsYiksZj1jLmFjdGlvbjtmJiZmLnRhZ05hbWUmJihmPWMuY2xvbmVOb2RlKCExKS5hY3Rpb24pO2VbImd0bS5lbGVtZW50VXJsIl09ZjtlWyJndG0uaW50ZXJhY3RlZEZvcm1OYW1lIl09Yy5nZXRBdHRyaWJ1dGUoIm5hbWUiKSE9bnVsbD9jLmdldEF0dHJpYnV0ZSgibmFtZSIpOnZvaWQgMDtlWyJndG0uaW50ZXJhY3RlZEZvcm1MZW5ndGgiXT1jLmxlbmd0aDtlWyJndG0uaW50ZXJhY3RlZEZvcm1GaWVsZCJdPWQ7ZVsiZ3RtLmludGVyYWN0ZWRGb3JtRmllbGRJZCJdPWQuaWQ7ZVsiZ3RtLmludGVyYWN0ZWRGb3JtRmllbGROYW1lIl09ZC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSE9bnVsbD9kLmdldEF0dHJpYnV0ZSgibmFtZSIpOnZvaWQgMDtlWyJndG0uaW50ZXJhY3RlZEZvcm1GaWVsZFBvc2l0aW9uIl09aEcoYyxkLCJndG1Gb3JtSW50ZXJhY3RGaWVsZElkIik7CmVbImd0bS5pbnRlcmFjdGVkRm9ybUZpZWxkVHlwZSJdPWQuZ2V0QXR0cmlidXRlKCJ0eXBlIikhPW51bGw/ZC5nZXRBdHRyaWJ1dGUoInR5cGUiKTp2b2lkIDA7ZVsiZ3RtLmludGVyYWN0U2VxdWVuY2VOdW1iZXIiXT1hLnNlcXVlbmNlTnVtYmVyO3VFKGUpO2Euc2VxdWVuY2VOdW1iZXIrKzthLlJiPW51bGx9LHlKPWZ1bmN0aW9uKGEsYixjKXtjP2EuUmI9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dkooYSxiKX0sYyk6dkooYSxiKX0seEo9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3RyeXtpZihkPWEuZGF0YXNldFtiXSlyZXR1cm4gZDtkPVN0cmluZyhjKCkpO2EuZGF0YXNldFtiXT1kfWNhdGNoKGUpe2Q9bnVsbH1yZXR1cm4gZH07CmZ1bmN0aW9uIEFKKGEsYil7dmFyIGM9dGhpcztpZighZmgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdHx1bmRlZmluZWQiLCJhbnkiXSxhcmd1bWVudHMpO1RGKFtmdW5jdGlvbigpe0woYywiZGV0ZWN0X2Zvcm1faW50ZXJhY3Rpb25fZXZlbnRzIil9XSk7dmFyIGQ9WkYoYiksZT1hJiZOdW1iZXIoYS5nZXQoImludGVydmFsIikpO2U+MCYmaXNGaW5pdGUoZSl8fChlPTApO2lmKCRGKCJmaWwiLCJpbml0IiwhMSkpe3ZhciBmPSRGKCJmaWwiLCJyZWciKTtpZihmKWYoZCxlKTtlbHNlIHRocm93IEVycm9yKCJGYWlsZWQgdG8gcmVnaXN0ZXIgdHJpZ2dlcjogIitkKTt9ZWxzZXt2YXIgZz17fSxoPVtdLGw9e30sbj0wLHA9ZnVuY3Rpb24oKXtyZXR1cm4gbisrfSxxPTAscj1mdW5jdGlvbigpe3JldHVybiBxKyt9OyRjKEIsImNoYW5nZSIsCmZ1bmN0aW9uKHQpe2Zvcih2YXIgdT0wO3U8aC5sZW5ndGg7dSsrKWhbdV0odCl9KTskYyhBLCJwYWdlaGlkZSIsZnVuY3Rpb24oKXt3SihsLGcpfSk7ekooZCxlLGcsbCxoLHAscik7YUcoImZpbCIsInJlZyIsZnVuY3Rpb24odCx1KXt6Sih0LHUsZyxsLGgscCxyKX0pO2FHKCJmaWwiLCJpbml0IiwhMCl9cmV0dXJuIGR9QUouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25Gb3JtSW50ZXJhY3Rpb24iOwp2YXIgQko9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0kRigiZnNsIixjPyJudi5td3QiOiJtd3QiLDApLGc7Zz1jPyRGKCJmc2wiLCJudi5pZHMiLFtdKTokRigiZnNsIiwiaWRzIixbXSk7aWYoIWcubGVuZ3RoKXJldHVybiEwO3ZhciBoPWVHKGEsImd0bS5mb3JtU3VibWl0IixnKSxsPWEuYWN0aW9uO2wmJmwudGFnTmFtZSYmKGw9YS5jbG9uZU5vZGUoITEpLmFjdGlvbik7UCgxMjEpO2lmKGw9PT0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3RyLyIpcmV0dXJuIFAoMTIyKSwhMDtoWyJndG0uZWxlbWVudFVybCJdPWw7aFsiZ3RtLmZvcm1DYW5jZWxlZCJdPWM7YS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSE9bnVsbCYmKGhbImd0bS5pbnRlcmFjdGVkRm9ybU5hbWUiXT1hLmdldEF0dHJpYnV0ZSgibmFtZSIpKTtlJiYoaFsiZ3RtLmZvcm1TdWJtaXRFbGVtZW50Il09ZSxoWyJndG0uZm9ybVN1Ym1pdEVsZW1lbnRUZXh0Il09ZS52YWx1ZSk7aWYoZCYmZil7aWYoIXNFKGgsakUoYiwKZiksZikpcmV0dXJuITF9ZWxzZSBGeSgxLCJndG0uZm9ybVN1Ym1pdCIpLHNFKGgsZnVuY3Rpb24oKXt9LGZ8fDJFMyk7cmV0dXJuITB9LENKPWZ1bmN0aW9uKCl7dmFyIGE9W10sYj1mdW5jdGlvbihjKXtyZXR1cm4gQ2IoYSxmdW5jdGlvbihkKXtyZXR1cm4gZC5mb3JtPT09Y30pfTtyZXR1cm57c3RvcmU6ZnVuY3Rpb24oYyxkKXt2YXIgZT1iKGMpO2U/ZS5idXR0b249ZDphLnB1c2goe2Zvcm06YyxidXR0b246ZH0pfSxnZXQ6ZnVuY3Rpb24oYyl7dmFyIGQ9YihjKTtpZihkKXJldHVybiBkLmJ1dHRvbn19fSxESj1mdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtyZXR1cm4gYiYmYiE9PSJfc2VsZiImJmIhPT0iX3BhcmVudCImJmIhPT0iX3RvcCI/ITE6ITB9LEVKPWZ1bmN0aW9uKCl7dmFyIGE9Q0ooKSxiPUhUTUxGb3JtRWxlbWVudC5wcm90b3R5cGUuc3VibWl0OyRjKEIsImNsaWNrIixmdW5jdGlvbihjKXt2YXIgZD1jLnRhcmdldDtpZihkKXt2YXIgZT1oZChkLFsiYnV0dG9uIiwKImlucHV0Il0sMTAwKTtpZihlJiYoZS50eXBlPT09InN1Ym1pdCJ8fGUudHlwZT09PSJpbWFnZSIpJiZlLm5hbWUmJmVkKGUsInZhbHVlIikpe3ZhciBmPWlHKGUpO2YmJmEuc3RvcmUoZixlKX19fSwhMSk7JGMoQiwic3VibWl0IixmdW5jdGlvbihjKXt2YXIgZD1jLnRhcmdldDtpZighZClyZXR1cm4gYy5yZXR1cm5WYWx1ZTt2YXIgZT1jLmRlZmF1bHRQcmV2ZW50ZWR8fGMucmV0dXJuVmFsdWU9PT0hMSxmPURKKGQpJiYhZSxnPWEuZ2V0KGQpLGg9ITA7aWYoQkooZCxmdW5jdGlvbigpe2lmKGgpe3ZhciBsPW51bGwsbj17fTtnJiYobD1CLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksbC50eXBlPSJoaWRkZW4iLGwubmFtZT1nLm5hbWUsbC52YWx1ZT1nLnZhbHVlLGQuYXBwZW5kQ2hpbGQobCksZy5oYXNBdHRyaWJ1dGUoImZvcm1hY3Rpb24iKSYmKG4uYWN0aW9uPWQuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKSx4YyhkLGcuZ2V0QXR0cmlidXRlKCJmb3JtYWN0aW9uIikpKSxnLmhhc0F0dHJpYnV0ZSgiZm9ybWVuY3R5cGUiKSYmCihuLmVuY3R5cGU9ZC5nZXRBdHRyaWJ1dGUoImVuY3R5cGUiKSxkLnNldEF0dHJpYnV0ZSgiZW5jdHlwZSIsZy5nZXRBdHRyaWJ1dGUoImZvcm1lbmN0eXBlIikpKSxnLmhhc0F0dHJpYnV0ZSgiZm9ybW1ldGhvZCIpJiYobi5tZXRob2Q9ZC5nZXRBdHRyaWJ1dGUoIm1ldGhvZCIpLGQuc2V0QXR0cmlidXRlKCJtZXRob2QiLGcuZ2V0QXR0cmlidXRlKCJmb3JtbWV0aG9kIikpKSxnLmhhc0F0dHJpYnV0ZSgiZm9ybXZhbGlkYXRlIikmJihuLnZhbGlkYXRlPWQuZ2V0QXR0cmlidXRlKCJ2YWxpZGF0ZSIpLGQuc2V0QXR0cmlidXRlKCJ2YWxpZGF0ZSIsZy5nZXRBdHRyaWJ1dGUoImZvcm12YWxpZGF0ZSIpKSksZy5oYXNBdHRyaWJ1dGUoImZvcm10YXJnZXQiKSYmKG4udGFyZ2V0PWQuZ2V0QXR0cmlidXRlKCJ0YXJnZXQiKSxkLnNldEF0dHJpYnV0ZSgidGFyZ2V0IixnLmdldEF0dHJpYnV0ZSgiZm9ybXRhcmdldCIpKSkpO2IuY2FsbChkKTtsJiYoZC5yZW1vdmVDaGlsZChsKSxuLmhhc093blByb3BlcnR5KCJhY3Rpb24iKSYmCnhjKGQsbi5hY3Rpb24pLG4uaGFzT3duUHJvcGVydHkoImVuY3R5cGUiKSYmZC5zZXRBdHRyaWJ1dGUoImVuY3R5cGUiLG4uZW5jdHlwZSksbi5oYXNPd25Qcm9wZXJ0eSgibWV0aG9kIikmJmQuc2V0QXR0cmlidXRlKCJtZXRob2QiLG4ubWV0aG9kKSxuLmhhc093blByb3BlcnR5KCJ2YWxpZGF0ZSIpJiZkLnNldEF0dHJpYnV0ZSgidmFsaWRhdGUiLG4udmFsaWRhdGUpLG4uaGFzT3duUHJvcGVydHkoInRhcmdldCIpJiZkLnNldEF0dHJpYnV0ZSgidGFyZ2V0IixuLnRhcmdldCkpfX0sZSxmLGcpKWg9ITE7ZWxzZSByZXR1cm4gZXx8KGMucHJldmVudERlZmF1bHQmJmMucHJldmVudERlZmF1bHQoKSxjLnJldHVyblZhbHVlPSExKSwhMTtyZXR1cm4gYy5yZXR1cm5WYWx1ZX0sITEpO0hUTUxGb3JtRWxlbWVudC5wcm90b3R5cGUuc3VibWl0PWZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxkPSEwO0JKKGMsZnVuY3Rpb24oKXtkJiZiLmNhbGwoYyl9LCExLERKKGMpKSYmKGIuY2FsbChjKSxkPQohMSl9fTsKZnVuY3Rpb24gRkooYSxiKXt2YXIgYz10aGlzO2lmKCFmaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0fHVuZGVmaW5lZCIsImFueSJdLGFyZ3VtZW50cyk7dmFyIGQ9YSYmYS5nZXQoIndhaXRGb3JUYWdzIik7VEYoW2Z1bmN0aW9uKCl7TChjLCJkZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzIix7d2FpdEZvclRhZ3M6ISFkfSl9XSk7dmFyIGU9YSYmYS5nZXQoImNoZWNrVmFsaWRhdGlvbiIpLGY9WkYoYik7aWYoZCl7dmFyIGc9TnVtYmVyKGEuZ2V0KCJ3YWl0Rm9yVGFnc1RpbWVvdXQiKSk7Zz4wJiZpc0Zpbml0ZShnKXx8KGc9MkUzKTt2YXIgaD1mdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5tYXgoZyxuKX07ZEcoImZzbCIsIm13dCIsaCwwKTtlfHxkRygiZnNsIiwibnYubXd0IixoLDApfXZhciBsPWZ1bmN0aW9uKG4pe24ucHVzaChmKTsKcmV0dXJuIG59O2RHKCJmc2wiLCJpZHMiLGwsW10pO2V8fGRHKCJmc2wiLCJudi5pZHMiLGwsW10pOyRGKCJmc2wiLCJpbml0IiwhMSl8fChFSigpLGFHKCJmc2wiLCJpbml0IiwhMCkpO3JldHVybiBmfUZKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uRm9ybVN1Ym1pdCI7CmZ1bmN0aW9uIEtKKCl7dmFyIGE9dGhpczt9S0ouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25HYVNlbmQiOwp2YXIgTUo9ZnVuY3Rpb24oYSxiLGMsZCl7Yz1jPT09dm9pZCAwP3t9OmM7ZD1kPT09dm9pZCAwP1tdOmQ7dmFyIGU9IiIrYjtpZihjW2VdKWNbZV0ucHVzaChhKTtlbHNle3ZhciBmPVthXTtjW2VdPWY7dmFyIGc9TEooImd0bS5oaXN0b3J5Q2hhbmdlLXYyIiksaD0tMTtkLnB1c2goZnVuY3Rpb24obCl7aD49MCYmQS5jbGVhclRpbWVvdXQoaCk7Yj9oPUEuc2V0VGltZW91dChmdW5jdGlvbigpe2cobCxmKTtoPS0xfSxiKTpnKGwsZil9KX19LExKPWZ1bmN0aW9uKGEpe3ZhciBiPUEubG9jYXRpb24uaHJlZixjPXtzb3VyY2U6bnVsbCxzdGF0ZTpBLmhpc3Rvcnkuc3RhdGV8fG51bGwsdXJsOk9qKFJqKGIpKSxrYjpMaihSaihiKSwiZnJhZ21lbnQiKX07cmV0dXJuIGZ1bmN0aW9uKGQsZSl7dmFyIGY9YyxnPXt9O2dbZi5zb3VyY2VdPSEwO2dbZC5zb3VyY2VdPSEwO2lmKCFnLnBvcHN0YXRlfHwhZy5oYXNoY2hhbmdlfHxmLmtiIT09ZC5rYil7dmFyIGg9e2V2ZW50OmEsImd0bS5oaXN0b3J5Q2hhbmdlU291cmNlIjpkLnNvdXJjZSwKImd0bS5vbGRVcmxGcmFnbWVudCI6Yy5rYiwiZ3RtLm5ld1VybEZyYWdtZW50IjpkLmtiLCJndG0ub2xkSGlzdG9yeVN0YXRlIjpjLnN0YXRlLCJndG0ubmV3SGlzdG9yeVN0YXRlIjpkLnN0YXRlLCJndG0ub2xkVXJsIjpjLnVybCwiZ3RtLm5ld1VybCI6ZC51cmx9O2UmJihoWyJndG0udHJpZ2dlcnMiXT1lLmpvaW4oIiwiKSk7Yz1kO3VFKGgpfX19LE5KPWZ1bmN0aW9uKGEsYil7dmFyIGM9QS5oaXN0b3J5LGQ9Y1thXTtpZih5YihkKSl0cnl7Y1thXT1mdW5jdGlvbihlLGYsZyl7ZC5hcHBseShjLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKTt2YXIgaD1BLmxvY2F0aW9uLmhyZWY7Yih7c291cmNlOmEsc3RhdGU6ZSx1cmw6T2ooUmooaCkpLGtiOkxqKFJqKGgpLCJmcmFnbWVudCIpfSl9fWNhdGNoKGUpe319LFBKPWZ1bmN0aW9uKGEpe0EuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLGZ1bmN0aW9uKGIpe3ZhciBjPU9KKGIpO2Eoe3NvdXJjZToicG9wc3RhdGUiLHN0YXRlOmIuc3RhdGUsCnVybDpPaihSaihjKSksa2I6TGooUmooYyksImZyYWdtZW50Iil9KX0pfSxRSj1mdW5jdGlvbihhKXtBLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLGZ1bmN0aW9uKGIpe3ZhciBjPU9KKGIpO2Eoe3NvdXJjZToiaGFzaGNoYW5nZSIsc3RhdGU6bnVsbCx1cmw6T2ooUmooYykpLGtiOkxqKFJqKGMpLCJmcmFnbWVudCIpfSl9KX0sT0o9ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4oKGI9YS50YXJnZXQpPT1udWxsP3ZvaWQgMDooYz1iLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6Yy5ocmVmKXx8QS5sb2NhdGlvbi5ocmVmfTsKZnVuY3Rpb24gUkooYSxiKXt2YXIgYz10aGlzO2lmKCFmaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0fHVuZGVmaW5lZCIsImFueSJdLGFyZ3VtZW50cyk7VEYoW2Z1bmN0aW9uKCl7TChjLCJkZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzIil9XSk7dmFyIGQ9YSYmYS5nZXQoInVzZVYyRXZlbnROYW1lIik/ImVobCI6ImhsIixlPU51bWJlcihhJiZhLmdldCgiaW50ZXJ2YWwiKSk7ZT4wJiZpc0Zpbml0ZShlKXx8KGU9MCk7dmFyIGY7aWYoISRGKGQsImluaXQiLCExKSl7dmFyIGc9e30saD1bXSxsO2Q9PT0iZWhsIj8obD1mdW5jdGlvbihwKXtmb3IodmFyIHE9MDtxPGgubGVuZ3RoO3ErKyloW3FdKHApfSxmPVpGKGIpLE1KKGYsZSxnLGgpLGFHKGQsInJlZyIsZnVuY3Rpb24ocCxxKXtNSihwLHEsZyxoKX0pKTpsPUxKKCJndG0uaGlzdG9yeUNoYW5nZSIpOwpRSihsKTtQSihsKTtOSigicHVzaFN0YXRlIixsKTtOSigicmVwbGFjZVN0YXRlIixsKTthRyhkLCJpbml0IiwhMCl9ZWxzZSBpZihkPT09ImVobCIpe3ZhciBuPSRGKGQsInJlZyIpO24mJihmPVpGKGIpLG4oZixlKSl9ZD09PSJobCImJihmPXZvaWQgMCk7cmV0dXJuIGZ9UkouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25IaXN0b3J5Q2hhbmdlIjt2YXIgU0o9WyJodHRwOi8vIiwiaHR0cHM6Ly8iLCJqYXZhc2NyaXB0OiIsImZpbGU6Ly8iXTsKdmFyIFRKPWZ1bmN0aW9uKGEsYil7aWYoYS53aGljaD09PTJ8fGEuY3RybEtleXx8YS5zaGlmdEtleXx8YS5hbHRLZXl8fGEubWV0YUtleSlyZXR1cm4hMTt2YXIgYz1vZChiLCJocmVmIik7aWYoYy5pbmRleE9mKCI6IikhPT0tMSYmIVNKLnNvbWUoZnVuY3Rpb24oaCl7cmV0dXJuIFNiKGMsaCl9KSlyZXR1cm4hMTt2YXIgZD1jLmluZGV4T2YoIiMiKSxlPW9kKGIsInRhcmdldCIpO2lmKGUmJmUhPT0iX3NlbGYiJiZlIT09Il9wYXJlbnQiJiZlIT09Il90b3AifHxkPT09MClyZXR1cm4hMTtpZihkPjApe3ZhciBmPU9qKFJqKGMpKSxnPU9qKFJqKEEubG9jYXRpb24uaHJlZikpO3JldHVybiBmIT09Z31yZXR1cm4hMH0sVUo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9TGooUmooKGIuYXR0cmlidXRlcyYmYi5hdHRyaWJ1dGVzLmZvcm1hY3Rpb24/Yi5mb3JtQWN0aW9uOiIiKXx8Yi5hY3Rpb258fG9kKGIsImhyZWYiKXx8Yi5zcmN8fGIuY29kZXx8Yi5jb2RlYmFzZXx8IiIpLCJob3N0IiksCmQ9MDtkPGEubGVuZ3RoO2QrKyl0cnl7aWYoKG5ldyBSZWdFeHAoYVtkXSkpLnRlc3QoYykpcmV0dXJuITF9Y2F0Y2goZSl7fXJldHVybiEwfSxWSj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYyl7dmFyIGQ9Yy50YXJnZXQ7aWYoZCYmYy53aGljaCE9PTMmJiEoYy5IfHxjLnRpbWVTdGFtcCYmYy50aW1lU3RhbXA9PT1iKSl7Yj1jLnRpbWVTdGFtcDtkPWhkKGQsWyJhIiwiYXJlYSJdLDEwMCk7aWYoIWQpcmV0dXJuIGMucmV0dXJuVmFsdWU7dmFyIGU9Yy5kZWZhdWx0UHJldmVudGVkfHxjLnJldHVyblZhbHVlPT09ITEsZj0kRigibGNsIixlPyJudi5td3QiOiJtd3QiLDApLGc7Zz1lPyRGKCJsY2wiLCJudi5pZHMiLFtdKTokRigibGNsIiwiaWRzIixbXSk7Zm9yKHZhciBoPVtdLGw9MDtsPGcubGVuZ3RoO2wrKyl7dmFyIG49Z1tsXSxwPSRGKCJsY2wiLCJhZmYubWFwIix7fSlbbl07cCYmIVVKKHAsZCl8fGgucHVzaChuKX1pZihoLmxlbmd0aCl7dmFyIHE9VEooYyxkKSxyPWVHKGQsImd0bS5saW5rQ2xpY2siLApoKTtyWyJndG0uZWxlbWVudFRleHQiXT1mZChkKTtyWyJndG0ud2lsbE9wZW5Jbk5ld1dpbmRvdyJdPSFxO2lmKHEmJiFlJiZmJiZkLmhyZWYpe3ZhciB0PSEhQ2IoU3RyaW5nKG9kKGQsInJlbCIpfHwiIikuc3BsaXQoIiAiKSxmdW5jdGlvbih5KXtyZXR1cm4geS50b0xvd2VyQ2FzZSgpPT09Im5vcmVmZXJyZXIifSksdT1BWyhvZChkLCJ0YXJnZXQiKXx8Il9zZWxmIikuc3Vic3RyaW5nKDEpXSx2PSEwLHg9dEUoZnVuY3Rpb24oKXt2YXIgeTtpZih5PXYmJnUpe3ZhciB6O2E6aWYodCl7dmFyIEM7dHJ5e0M9bmV3IE1vdXNlRXZlbnQoYy50eXBlLHtidWJibGVzOiEwfSl9Y2F0Y2goRCl7aWYoIUIuY3JlYXRlRXZlbnQpe3o9ITE7YnJlYWsgYX1DPUIuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7Qy5pbml0RXZlbnQoYy50eXBlLCEwLCEwKX1DLkg9ITA7Yy50YXJnZXQuZGlzcGF0Y2hFdmVudChDKTt6PSEwfWVsc2Ugej0hMTt5PSF6fXkmJih1LmxvY2F0aW9uLmhyZWY9b2QoZCwKImhyZWYiKSl9LGYpO2lmKGlFKHIseCxmKSl2PSExO2Vsc2UgcmV0dXJuIGMucHJldmVudERlZmF1bHQmJmMucHJldmVudERlZmF1bHQoKSxjLnJldHVyblZhbHVlPSExfWVsc2Ugc0UocixmdW5jdGlvbigpe30sZnx8MkUzKTtyZXR1cm4hMH19fXZhciBiPTA7JGMoQiwiY2xpY2siLGEsITEpOyRjKEIsImF1eGNsaWNrIixhLCExKX07CmZ1bmN0aW9uIFdKKGEsYil7dmFyIGM9dGhpcztpZighZmgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdHx1bmRlZmluZWQiLCJhbnkiXSxhcmd1bWVudHMpO3ZhciBkPVRkKGEpO1RGKFtmdW5jdGlvbigpe0woYywiZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzIixkKX1dKTt2YXIgZT1kJiYhIWQud2FpdEZvclRhZ3MsZj1kJiYhIWQuY2hlY2tWYWxpZGF0aW9uLGc9ZD9kLmFmZmlsaWF0ZURvbWFpbnM6dm9pZCAwLGg9WkYoYik7aWYoZSl7dmFyIGw9TnVtYmVyKGQud2FpdEZvclRhZ3NUaW1lb3V0KTtsPjAmJmlzRmluaXRlKGwpfHwobD0yRTMpO3ZhciBuPWZ1bmN0aW9uKHEpe3JldHVybiBNYXRoLm1heChsLHEpfTtkRygibGNsIiwibXd0IixuLDApO2Z8fGRHKCJsY2wiLCJudi5td3QiLG4sMCl9dmFyIHA9ZnVuY3Rpb24ocSl7cS5wdXNoKGgpOwpyZXR1cm4gcX07ZEcoImxjbCIsImlkcyIscCxbXSk7Znx8ZEcoImxjbCIsIm52LmlkcyIscCxbXSk7ZyYmZEcoImxjbCIsImFmZi5tYXAiLGZ1bmN0aW9uKHEpe3FbaF09ZztyZXR1cm4gcX0se30pOyRGKCJsY2wiLCJpbml0IiwhMSl8fChWSigpLGFHKCJsY2wiLCJpbml0IiwhMCkpO3JldHVybiBofVdKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uTGlua0NsaWNrIjsKdmFyIFhKPWZ1bmN0aW9uKGEpe3JldHVybiAkRigic2RsIixhLHt9KX0sWUo9ZnVuY3Rpb24oYSxiLGMpe2lmKGIpe3ZhciBkPUFycmF5LmlzQXJyYXkoYSk/YTpbYV07ZEcoInNkbCIsYyxmdW5jdGlvbihlKXtmb3IodmFyIGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIGc9U3RyaW5nKGRbZl0pO2UuaGFzT3duUHJvcGVydHkoZyl8fChlW2ddPVtdKTtlW2ddLnB1c2goYil9cmV0dXJuIGV9LHt9KX19LGFLPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe1pKKGEsYik7JEooYywhMCl9cmV0dXJuIGN9LGJLPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe2g/Zz1BLnNldFRpbWVvdXQoYyxlKTooZz0wLFpKKGEsYiksJEooZCkpO2g9ITF9ZnVuY3Rpb24gZCgpe2YmJmIoKTtnP2g9ITA6KGc9QS5zZXRUaW1lb3V0KGMsZSksYUcoInNkbCIsInBlbmRpbmciLCEwKSl9dmFyIGU9MjUwLGY9ITE7Qi5zY3JvbGxpbmdFbGVtZW50JiZCLmRvY3VtZW50RWxlbWVudCYmKGU9NTAsZj0hMCk7dmFyIGc9CjAsaD0hMTtyZXR1cm4gZH0sJEo9ZnVuY3Rpb24oYSxiKXskRigic2RsIiwiaW5pdCIsITEpJiYhY0soKSYmKGI/YWQoQSwic2Nyb2xsZW5kIixhKTphZChBLCJzY3JvbGwiLGEpLGFkKEEsInJlc2l6ZSIsYSksYUcoInNkbCIsImluaXQiLCExKSl9LFpKPWZ1bmN0aW9uKGEsYil7dmFyIGM9YigpLGQ9Yy5kZXB0aFgsZT1jLmRlcHRoWSxmPWQvYS5zY3JvbGxXaWR0aCoxMDAsZz1lL2Euc2Nyb2xsSGVpZ2h0KjEwMDtkSyhkLCJob3Jpei5waXgiLCJQSVhFTFMiLCJob3Jpem9udGFsIik7ZEsoZiwiaG9yaXoucGN0IiwiUEVSQ0VOVCIsImhvcml6b250YWwiKTtkSyhlLCJ2ZXJ0LnBpeCIsIlBJWEVMUyIsInZlcnRpY2FsIik7ZEsoZywidmVydC5wY3QiLCJQRVJDRU5UIiwidmVydGljYWwiKTthRygic2RsIiwicGVuZGluZyIsITEpfSxkSz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1YSihiKSxmPXt9LGc7Zm9yKGcgaW4gZSlpZihmPXtxZjpmLnFmfSxmLnFmPWcsZS5oYXNPd25Qcm9wZXJ0eShmLnFmKSl7dmFyIGg9Ck51bWJlcihmLnFmKTtpZighKGE8aCkpe3ZhciBsPXt9O3VFKChsLmV2ZW50PSJndG0uc2Nyb2xsRGVwdGgiLGxbImd0bS5zY3JvbGxUaHJlc2hvbGQiXT1oLGxbImd0bS5zY3JvbGxVbml0cyJdPWMudG9Mb3dlckNhc2UoKSxsWyJndG0uc2Nyb2xsRGlyZWN0aW9uIl09ZCxsWyJndG0udHJpZ2dlcnMiXT1lW2YucWZdLmpvaW4oIiwiKSxsKSk7ZEcoInNkbCIsYixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24ocCl7ZGVsZXRlIHBbbi5xZl07cmV0dXJuIHB9fShmKSx7fSl9fX0sZks9ZnVuY3Rpb24oKXt2YXIgYT1kRygic2RsIiwic2NyIixmdW5jdGlvbihjKXtjfHwoYz1CLnNjcm9sbGluZ0VsZW1lbnR8fEIuYm9keSYmQi5ib2R5LnBhcmVudE5vZGUpO3JldHVybiBjfSxudWxsKSxiPWRHKCJzZGwiLCJkZXB0aCIsZnVuY3Rpb24oYyl7Y3x8KGM9ZUsoYSkpO3JldHVybiBjfSk7cmV0dXJue3Njcm9sbGluZ0VsZW1lbnQ6YSx2cjpifX0sZUs9ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPQowO3JldHVybiBmdW5jdGlvbigpe3ZhciBkPXNJKCksZT1kLmhlaWdodDtiPU1hdGgubWF4KGEuc2Nyb2xsTGVmdCtkLndpZHRoLGIpO2M9TWF0aC5tYXgoYS5zY3JvbGxUb3ArZSxjKTtyZXR1cm57ZGVwdGhYOmIsZGVwdGhZOmN9fX0sY0s9ZnVuY3Rpb24oKXtyZXR1cm4hIShPYmplY3Qua2V5cyhYSigiaG9yaXoucGl4IikpLmxlbmd0aHx8T2JqZWN0LmtleXMoWEooImhvcml6LnBjdCIpKS5sZW5ndGh8fE9iamVjdC5rZXlzKFhKKCJ2ZXJ0LnBpeCIpKS5sZW5ndGh8fE9iamVjdC5rZXlzKFhKKCJ2ZXJ0LnBjdCIpKS5sZW5ndGgpfTsKZnVuY3Rpb24gZ0soYSxiKXt2YXIgYz10aGlzO2lmKCFlaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0IiwiYW55Il0sYXJndW1lbnRzKTtURihbZnVuY3Rpb24oKXtMKGMsImRldGVjdF9zY3JvbGxfZXZlbnRzIil9XSk7dmFyIGQ9ZksoKSxlPWQuc2Nyb2xsaW5nRWxlbWVudCxmPWQudnI7aWYoIWUpcmV0dXJuO3ZhciBnPVpGKGIpLGg9VGQoYSk7c3dpdGNoKGguaG9yaXpvbnRhbFRocmVzaG9sZFVuaXRzKXtjYXNlICJQSVhFTFMiOllKKGguaG9yaXpvbnRhbFRocmVzaG9sZHMsZywiaG9yaXoucGl4Iik7YnJlYWs7Y2FzZSAiUEVSQ0VOVCI6WUooaC5ob3Jpem9udGFsVGhyZXNob2xkcyxnLCJob3Jpei5wY3QiKX1zd2l0Y2goaC52ZXJ0aWNhbFRocmVzaG9sZFVuaXRzKXtjYXNlICJQSVhFTFMiOllKKGgudmVydGljYWxUaHJlc2hvbGRzLApnLCJ2ZXJ0LnBpeCIpO2JyZWFrO2Nhc2UgIlBFUkNFTlQiOllKKGgudmVydGljYWxUaHJlc2hvbGRzLGcsInZlcnQucGN0Iil9JEYoInNkbCIsImluaXQiLCExKT8kRigic2RsIiwicGVuZGluZyIsITEpfHxiZChmdW5jdGlvbigpe1pKKGUsZil9KTooYUcoInNkbCIsImluaXQiLCEwKSxhRygic2RsIiwicGVuZGluZyIsITApLGJkKGZ1bmN0aW9uKCl7WkooZSxmKTtpZihjSygpKXt2YXIgbD1iSyhlLGYpOyJvbnNjcm9sbGVuZCJpbiBBPyhsPWFLKGUsZiksJGMoQSwic2Nyb2xsZW5kIixsKSk6JGMoQSwic2Nyb2xsIixsKTskYyhBLCJyZXNpemUiLGwpfWVsc2UgYUcoInNkbCIsImluaXQiLCExKX0pKTtyZXR1cm4gZ31nSy5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPblNjcm9sbCI7ZnVuY3Rpb24gaEsoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYS5saW1pdCYmYS5naz49YS5saW1pdClhLmFpJiZBLmNsZWFySW50ZXJ2YWwoYS5haSk7ZWxzZXthLmdrKys7dmFyIGI9TmIoKTt1RSh7ZXZlbnQ6YS5ldmVudE5hbWUsImd0bS50aW1lcklkIjphLmFpLCJndG0udGltZXJFdmVudE51bWJlciI6YS5naywiZ3RtLnRpbWVySW50ZXJ2YWwiOmEuaW50ZXJ2YWwsImd0bS50aW1lckxpbWl0IjphLmxpbWl0LCJndG0udGltZXJTdGFydFRpbWUiOmEuTW8sImd0bS50aW1lckN1cnJlbnRUaW1lIjpiLCJndG0udGltZXJFbGFwc2VkVGltZSI6Yi1hLk1vLCJndG0udHJpZ2dlcnMiOmEuTHR9KX19fQpmdW5jdGlvbiBpSyhhLGIpewpyZXR1cm4gZn1pSy5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPblRpbWVyIjsKdmFyIGpLPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKCl7dmFyIGc9YSgpO2YrPWU/KE5iKCktZSkqZy5wbGF5YmFja1JhdGUvMUUzOjA7ZT1OYigpfXZhciBlPTAsZj0wO3JldHVybntjcmVhdGVFdmVudDpmdW5jdGlvbihnLGgsbCl7dmFyIG49YSgpLHA9bi5XbixxPWw/TWF0aC5yb3VuZChsKTpoP01hdGgucm91bmQobi5XbipoKTpNYXRoLnJvdW5kKG4uR3IpLHI9aCE9PXZvaWQgMD9NYXRoLnJvdW5kKGgqMTAwKTpwPD0wPzA6TWF0aC5yb3VuZChxL3AqMTAwKSx0PUIuaGlkZGVuPyExOnRJKGMpPj0uNTtkKCk7dmFyIHU9dm9pZCAwO2IhPT12b2lkIDAmJih1PVtiXSk7dmFyIHY9ZUcoYywiZ3RtLnZpZGVvIix1KTt2WyJndG0udmlkZW9Qcm92aWRlciJdPSJ5b3V0dWJlIjt2WyJndG0udmlkZW9TdGF0dXMiXT1nO3ZbImd0bS52aWRlb1VybCJdPW4udXJsO3ZbImd0bS52aWRlb1RpdGxlIl09bi50aXRsZTt2WyJndG0udmlkZW9EdXJhdGlvbiJdPU1hdGgucm91bmQocCk7dlsiZ3RtLnZpZGVvQ3VycmVudFRpbWUiXT0KTWF0aC5yb3VuZChxKTt2WyJndG0udmlkZW9FbGFwc2VkVGltZSJdPU1hdGgucm91bmQoZik7dlsiZ3RtLnZpZGVvUGVyY2VudCJdPXI7dlsiZ3RtLnZpZGVvVmlzaWJsZSJdPXQ7cmV0dXJuIHZ9LG10OmZ1bmN0aW9uKCl7ZT1OYigpfSxCajpmdW5jdGlvbigpe2QoKX19fTt2YXIgQWM9QWEoWyJkYXRhLWd0bS15dC1pbnNwZWN0ZWQtIl0pLGtLPVsid3d3LnlvdXR1YmUuY29tIiwid3d3LnlvdXR1YmUtbm9jb29raWUuY29tIl0sbEs7CnZhciBtSz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5tYXAoZnVuY3Rpb24oZyl7cmV0dXJue3RlOmcsSm86Zyx3bzp2b2lkIDB9fSk7aWYoIWIubGVuZ3RoKXJldHVybiBkO3ZhciBlPWIubWFwKGZ1bmN0aW9uKGcpe3JldHVybnt0ZTpnKmMsSm86dm9pZCAwLHdvOmd9fSk7aWYoIWQubGVuZ3RoKXJldHVybiBlO3ZhciBmPWQuY29uY2F0KGUpO2Yuc29ydChmdW5jdGlvbihnLGgpe3JldHVybiBnLnRlLWgudGV9KTtyZXR1cm4gZn0sbks9ZnVuY3Rpb24oYSl7YT1hPT09dm9pZCAwP1tdOmE7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKylhW2NdPDB8fGIucHVzaChhW2NdKTtiLnNvcnQoZnVuY3Rpb24oZCxlKXtyZXR1cm4gZC1lfSk7cmV0dXJuIGJ9LG9LPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9bXTphO2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspYVtjXT4xMDB8fGFbY108MHx8KGJbY109YVtjXS8xMDApO2Iuc29ydChmdW5jdGlvbihkLGUpe3JldHVybiBkLQplfSk7cmV0dXJuIGJ9LHBLPWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtmdW5jdGlvbiBlKCl7dD1qSyhmdW5jdGlvbigpe3JldHVybnt1cmw6eCx0aXRsZTp5LFduOnYsR3I6YS5nZXRDdXJyZW50VGltZSgpLHBsYXliYWNrUmF0ZTp6fX0sYi5yZixhLmdldElmcmFtZSgpKTt2PTA7eT14PSIiO3o9MTtyZXR1cm4gZn1mdW5jdGlvbiBmKEcpe3N3aXRjaChHKXtjYXNlIDE6dj1NYXRoLnJvdW5kKGEuZ2V0RHVyYXRpb24oKSk7eD1hLmdldFZpZGVvVXJsKCk7aWYoYS5nZXRWaWRlb0RhdGEpe3ZhciBOPWEuZ2V0VmlkZW9EYXRhKCk7eT1OP04udGl0bGU6IiJ9ej1hLmdldFBsYXliYWNrUmF0ZSgpO2IueXI/dUUodC5jcmVhdGVFdmVudCgic3RhcnQiKSk6dC5CaigpO3U9bUsoYi5ldCxiLmN0LGEuZ2V0RHVyYXRpb24oKSk7cmV0dXJuIGcoRyk7ZGVmYXVsdDpyZXR1cm4gZn19ZnVuY3Rpb24gZygpe0M9YS5nZXRDdXJyZW50VGltZSgpO0Q9TWIoKS5nZXRUaW1lKCk7dC5tdCgpO3IoKTtyZXR1cm4gaH0KZnVuY3Rpb24gaChHKXt2YXIgTjtzd2l0Y2goRyl7Y2FzZSAwOnJldHVybiBuKEcpO2Nhc2UgMjpOPSJwYXVzZSI7Y2FzZSAzOnZhciBTPWEuZ2V0Q3VycmVudFRpbWUoKS1DO049TWF0aC5hYnMoKE1iKCkuZ2V0VGltZSgpLUQpLzFFMyp6LVMpPjE/InNlZWsiOk58fCJidWZmZXJpbmciO2EuZ2V0Q3VycmVudFRpbWUoKSYmKGIueHI/dUUodC5jcmVhdGVFdmVudChOKSk6dC5CaigpKTtxKCk7cmV0dXJuIGw7Y2FzZSAtMTpyZXR1cm4gZShHKTtkZWZhdWx0OnJldHVybiBofX1mdW5jdGlvbiBsKEcpe3N3aXRjaChHKXtjYXNlIDA6cmV0dXJuIG4oRyk7Y2FzZSAxOnJldHVybiBnKEcpO2Nhc2UgLTE6cmV0dXJuIGUoRyk7ZGVmYXVsdDpyZXR1cm4gbH19ZnVuY3Rpb24gbigpe2Zvcig7ZDspe3ZhciBHPWM7QS5jbGVhclRpbWVvdXQoZCk7RygpfWIud3ImJnVFKHQuY3JlYXRlRXZlbnQoImNvbXBsZXRlIiwxKSk7cmV0dXJuIGUoLTEpfWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gcSgpe2QmJgooQS5jbGVhclRpbWVvdXQoZCksZD0wLGM9cCl9ZnVuY3Rpb24gcigpe2lmKHUubGVuZ3RoJiZ6IT09MCl7dmFyIEc9LTEsTjtkb3tOPXVbMF07aWYoTi50ZT5hLmdldER1cmF0aW9uKCkpcmV0dXJuO0c9KE4udGUtYS5nZXRDdXJyZW50VGltZSgpKS96O2lmKEc8MCYmKHUuc2hpZnQoKSx1Lmxlbmd0aD09PTApKXJldHVybn13aGlsZShHPDApO2M9ZnVuY3Rpb24oKXtkPTA7Yz1wO3UubGVuZ3RoPjAmJnVbMF0udGU9PT1OLnRlJiYodS5zaGlmdCgpLHVFKHQuY3JlYXRlRXZlbnQoInByb2dyZXNzIixOLndvLE4uSm8pKSk7cigpfTtkPUEuc2V0VGltZW91dChjLEcqMUUzKX19dmFyIHQsdT1bXSx2LHgseSx6LEMsRCxJPWUoLTEpO2Q9MDtjPXA7cmV0dXJue29uU3RhdGVDaGFuZ2U6ZnVuY3Rpb24oRyl7ST1JKEcpfSxvblBsYXliYWNrUmF0ZUNoYW5nZTpmdW5jdGlvbihHKXtDPWEuZ2V0Q3VycmVudFRpbWUoKTtEPU1iKCkuZ2V0VGltZSgpO3QuQmooKTt6PUc7cSgpO3IoKX19fSxySz0KZnVuY3Rpb24oYSl7YmQoZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7Zm9yKHZhciBkPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpLGU9ZC5sZW5ndGgsZj0wO2Y8ZTtmKyspcUsoZFtmXSxhKX12YXIgYz1CO2IoKTtvSi5LKGIpfSl9LHFLPWZ1bmN0aW9uKGEsYil7aWYoIWEuZ2V0QXR0cmlidXRlKCJkYXRhLWd0bS15dC1pbnNwZWN0ZWQtIitiLnJmKSYmKENjKGEsImRhdGEtZ3RtLXl0LWluc3BlY3RlZC0iK2IucmYpLHNLKGEsYi5jbykpKXthLmlkfHwoYS5pZD10SygpKTt2YXIgYz1BLllULGQ9Yy5nZXQoYS5pZCk7ZHx8KGQ9bmV3IGMuUGxheWVyKGEuaWQpKTt2YXIgZT1wSyhkLGIpLGY9e30sZztmb3IoZyBpbiBlKWY9e01nOmYuTWd9LGYuTWc9ZyxlLmhhc093blByb3BlcnR5KGYuTWcpJiZkLmFkZEV2ZW50TGlzdGVuZXIoZi5NZyxmdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24obCl7cmV0dXJuIGVbaC5NZ10obC5kYXRhKX19KGYpKX19LHNLPWZ1bmN0aW9uKGEsCmIpe3ZhciBjPWEuZ2V0QXR0cmlidXRlKCJzcmMiKTtpZih1SyhjLCJlbWJlZC8iKSl7aWYoYy5pbmRleE9mKCJlbmFibGVqc2FwaT0xIik+MClyZXR1cm4hMDtpZihiKXt2YXIgZDt2YXIgZT1jLmluZGV4T2YoIj8iKSE9PS0xPyImIjoiPyI7Yy5pbmRleE9mKCJvcmlnaW49Iik+LTE/ZD1jK2UrImVuYWJsZWpzYXBpPTEiOihsS3x8KGxLPUIubG9jYXRpb24ucHJvdG9jb2wrIi8vIitCLmxvY2F0aW9uLmhvc3RuYW1lLEIubG9jYXRpb24ucG9ydCYmKGxLKz0iOiIrQi5sb2NhdGlvbi5wb3J0KSksZD1jK2UrImVuYWJsZWpzYXBpPTEmb3JpZ2luPSIrZW5jb2RlVVJJQ29tcG9uZW50KGxLKSk7dmFyIGY7Zj1qYyhkKTthLnNyYz1rYyhmKS50b1N0cmluZygpO3JldHVybiEwfX1yZXR1cm4hMX0sdUs9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGtLLmxlbmd0aDtjKyspaWYoYS5pbmRleE9mKCIvLyIra0tbY10rIi8iK2IpPj0wKXJldHVybiEwO3JldHVybiExfSwKdEs9ZnVuY3Rpb24oKXt2YXIgYT0iIitNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMUU5KTtyZXR1cm4gQi5nZXRFbGVtZW50QnlJZChhKT90SygpOmF9OwpmdW5jdGlvbiB2SyhhLGIpe3ZhciBjPXRoaXM7dmFyIGQ9ZnVuY3Rpb24oKXtySyhxKX07aWYoIWVoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3QiLCJhbnkiXSxhcmd1bWVudHMpO1RGKFtmdW5jdGlvbigpe0woYywiZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzIix7Zml4TWlzc2luZ0FwaTohIWEuZ2V0KCJmaXhNaXNzaW5nQXBpIil9KX1dKTt2YXIgZT1aRihiKSxmPSEhYS5nZXQoImNhcHR1cmVTdGFydCIpLGc9ISFhLmdldCgiY2FwdHVyZUNvbXBsZXRlIiksaD0hIWEuZ2V0KCJjYXB0dXJlUGF1c2UiKSxsPW9LKFRkKGEuZ2V0KCJwcm9ncmVzc1RocmVzaG9sZHNQZXJjZW50IikpKSxuPW5LKFRkKGEuZ2V0KCJwcm9ncmVzc1RocmVzaG9sZHNUaW1lSW5TZWNvbmRzIikpKSxwPSEhYS5nZXQoImZpeE1pc3NpbmdBcGkiKTsKaWYoIShmfHxnfHxofHxsLmxlbmd0aHx8bi5sZW5ndGgpKXJldHVybjt2YXIgcT17eXI6Zix3cjpnLHhyOmgsY3Q6bCxldDpuLGNvOnAscmY6ZX0scj1BLllUO2lmKHIpcmV0dXJuIHIucmVhZHkmJnIucmVhZHkoZCksZTt2YXIgdD1BLHU9dC5vbllvdVR1YmVJZnJhbWVBUElSZWFkeTt0Lm9uWW91VHViZUlmcmFtZUFQSVJlYWR5PWZ1bmN0aW9uKCl7dSYmdSgpO2QoKX07YmQoZnVuY3Rpb24oKXtmb3IodmFyIHY9Qi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikseD12Lmxlbmd0aCx5PTA7eTx4O3krKyl7dmFyIHo9dlt5XS5nZXRBdHRyaWJ1dGUoInNyYyIpO2lmKHVLKHosImlmcmFtZV9hcGkiKXx8dUsoeiwicGxheWVyX2FwaSIpKXJldHVybiBlfWZvcih2YXIgQz1CLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKSxEPUMubGVuZ3RoLEk9YWwoNSxmdW5jdGlvbigpe3JldHVybiExfSksRz0wO0c8RDtHKyspaWYoIUkmJnNLKENbR10scS5jbykpcmV0dXJuIFVjKCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9pZnJhbWVfYXBpIiksClprKDUsITApLGV9KTtyZXR1cm4gZX12Sy5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbllvdVR1YmVBY3Rpdml0eSI7ZnVuY3Rpb24gd0soYSxiKXtpZighbGgoYSl8fCFmaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiT2JqZWN0fHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7dmFyIGM9Yj9UZChiKTp7fTtjLnJlZ2V4Q2FjaGU9YWwoMyxmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwfSk7cmV0dXJuIEdoKGEsYyl9d0suUD0iaW50ZXJuYWwuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiI7ZnVuY3Rpb24geEsoYSl7dmFyIGI9ITE7cmV0dXJuIGJ9eEsuUD0iaW50ZXJuYWwuZXZhbHVhdGVNYXRjaGluZ1J1bGVzIjt2YXIgeUs9bmV3IE1hcChbWyJhdyIsNF1dKTtmdW5jdGlvbiB6SyhhKXt2YXIgYj12clthXSxjPXlLLmdldChhKTtyZXR1cm4gYz8od3EoYixjKXx8W10pLnNvbWUoZnVuY3Rpb24oZCl7cmV0dXJuIGQubT09PSIwInx8ZC5tPT09dm9pZCAwfSk6ITF9CmZ1bmN0aW9uIEFLKGEsYil7aWYoTSg0OTUpKXtmb3IodmFyIGM9bmV3IE1hcCxkPW0oeUspLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1tKGUudmFsdWUpLGc9Zi5uZXh0KCkudmFsdWUsaD1mLm5leHQoKS52YWx1ZSxsPWcsbj1hW2xdLHA9QXJyYXkuaXNBcnJheShuKT9uWzBdOm47aWYocCE9PXZvaWQgMCl7dmFyIHE9e30scj0ocS5rPXAscS5pPVN0cmluZyhNYXRoLmZsb29yKERhdGUubm93KCkvMUUzKSkscS5iPVtdLHEubT0iMSIscSksdD1hcShyLGgpO3QmJih6SyhsKXx8Yy5zZXQobCx0KSl9fWlmKGMuc2l6ZSl7dmFyIHUsdj1bXSx4PWIucGF0aHx8Ii8iO3YucHVzaChlbmNvZGVVUklDb21wb25lbnQoInAiKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHgpKTtiLkFyJiZ2LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KCJjZSIpKyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGIuQXIpKSk7dmFyIHk9Yi5kb21haW4mJmIuZG9tYWluIT09ImF1dG8iPwpiLmRvbWFpbjoiYXV0bzoiK0EubG9jYXRpb24uaG9zdG5hbWU7di5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCgiZCIpKyI9IitlbmNvZGVVUklDb21wb25lbnQoeSkpO2Zvcih2YXIgej1tKGMpLEM9ei5uZXh0KCk7IUMuZG9uZTtDPXoubmV4dCgpKXt2YXIgRD1tKEMudmFsdWUpLEk9RC5uZXh0KCkudmFsdWUsRz1ELm5leHQoKS52YWx1ZTt2LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KEkpKyI9IitlbmNvZGVVUklDb21wb25lbnQoRykpfXU9Il8vc2V0X2Nvb2tpZT8iK3Yuam9pbigiJiIpO3ZhciBOLFM9RSg1OCk7Tj1FZih1LFMpO3ZhciBXPVhqKCkrIi8iK047bWQoVyl9fX07ZnVuY3Rpb24gQksoYSl7cmV0dXJuIkNXVldlYlZpZXdNZXNzYWdlImluIGF9ZnVuY3Rpb24gQ0soYSl7dmFyIGI9QSxjPWIud2Via2l0O2RlbGV0ZSBiLndlYmtpdDthKGIud2Via2l0KTtiLndlYmtpdD1jfWZ1bmN0aW9uIERLKGEsYil7dmFyIGM9e2FjdGlvbjoiZ2NsX3NldHVwIn07aWYoQksoYS5tZXNzYWdlSGFuZGxlcnMpKXJldHVybiBhLm1lc3NhZ2VIYW5kbGVycy5DV1ZXZWJWaWV3TWVzc2FnZS5wb3N0TWVzc2FnZSh7Y29tbWFuZDpiLHBheWxvYWQ6Y30pLCEwO3ZhciBkPWEubWVzc2FnZUhhbmRsZXJzW2JdO3JldHVybiBkPyhkLnBvc3RNZXNzYWdlKGMpLCEwKTohMX07dmFyIEVLPXt9LEZLPShFSy5hd2I9e25vdEZvdW5kOjE3OH0sRUsueXRiPXtub3RGb3VuZDoxOTR9LEVLKTtmdW5jdGlvbiBHSyhhKXt2YXIgYixjPShiPUZLW2FdKT09bnVsbD92b2lkIDA6Yi5ub3RGb3VuZDtjJiZQKGMpfQpmdW5jdGlvbiBISyhhKXtpZighbm0oam0uYmEuam4pJiYid2Via2l0ImluIEEmJkEud2Via2l0Lm1lc3NhZ2VIYW5kbGVycyl7dmFyIGI9ZnVuY3Rpb24oKXt0cnl7Q0soZnVuY3Rpb24oYyl7aWYoYyl7dmFyIGQ7ZD1CSyhjLm1lc3NhZ2VIYW5kbGVycyl8fCJhd2IiaW4gYy5tZXNzYWdlSGFuZGxlcnM/e2NvbW1hbmQ6ImF3YiIsc291cmNlOjV9OihCSyhjLm1lc3NhZ2VIYW5kbGVycyl8fCJ5dGIiaW4gYy5tZXNzYWdlSGFuZGxlcnMpJiZNKDQ5OSk/e2NvbW1hbmQ6Inl0YiIsc291cmNlOjh9OnZvaWQgMDtkJiYobW0oam0uYmEuam4sZnVuY3Rpb24oZSl7dmFyIGY9ZC5zb3VyY2U7ZS5nY2xpZCYmbHMoImdjbF9hdyIsZS5nY2xpZCxmLGEpO2Uud2JyYWlkJiZscygiZ2NsX2diIixlLndicmFpZCxmLGEpfSksREsoYyxkLmNvbW1hbmQpfHxHSyhkLmNvbW1hbmQpKX19KX1jYXRjaChjKXtQKDE5Myl9fTtIbChmdW5jdGlvbigpe0JyKGZwKT9iKCk6SWwoYixmcCl9LGZwKX19O3ZhciBJSz1bImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iLCJodHRwczovL3d3dy55b3V0dWJlLmNvbSIsImh0dHBzOi8vbS55b3V0dWJlLmNvbSJdO2Z1bmN0aW9uIEpLKGEpe3JldHVybiBhLmRhdGEuYWN0aW9uIT09ImdjbF90cmFuc2ZlciI/KFAoMTczKSwhMCk6YS5kYXRhLmdhZFNvdXJjZT9hLmRhdGEuZ2NsaWQ/ITE6KFAoMTgxKSwhMCk6KFAoMTgwKSwhMCl9CmZ1bmN0aW9uIEtLKGEsYil7aWYoIWF8fE0oYSkpe2lmKG5tKGptLmJhLlZlKSlyZXR1cm4gUCgxNzYpLGptLmJhLlZlO2lmKG5tKGptLmJhLm1uKSlyZXR1cm4gUCgxNzApLGptLmJhLlZlO3ZhciBjPUZwKCk7aWYoIWMpUCgxNzEpO2Vsc2UgaWYoYy5vcGVuZXIpe3ZhciBkPWZ1bmN0aW9uKGcpe2lmKCFJSy5pbmNsdWRlcyhnLm9yaWdpbikpUCgxNzIpO2Vsc2UgaWYoIUpLKGcpKXt2YXIgaD17Z2FkU291cmNlOmcuZGF0YS5nYWRTb3VyY2V9O2guZ2NsaWQ9Zy5kYXRhLmdjbGlkO21tKGptLmJhLlZlLGgpO2ImJmcuZGF0YS5nY2xpZCYmbHMoImdjbF9hdyIsU3RyaW5nKGcuZGF0YS5nY2xpZCksNixiKTt2YXIgbDsobD1nLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbik9PW51bGx8fGwuY2FsbChnKTtudChjLCJtZXNzYWdlIixkKX19O2lmKG10KGMsIm1lc3NhZ2UiLGQpKXttbShqbS5iYS5tbiwhMCk7Zm9yKHZhciBlPW0oSUspLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKWMub3BlbmVyLnBvc3RNZXNzYWdlKHthY3Rpb246ImdjbF9zZXR1cCJ9LApmLnZhbHVlKTtQKDE3NCk7cmV0dXJuIGptLmJhLlZlfVAoMTc1KX19fTsKdmFyIExLPWZ1bmN0aW9uKGEpe3ZhciBiPXtwcmVmaXg6TyhhLk0sRi5ELkZkKXx8TyhhLk0sRi5ELm5iKSxkb21haW46TyhhLk0sRi5ELkxiKSxwZDpPKGEuTSxGLkQuQ2IpLGZsYWdzOk8oYS5NLEYuRC5UYil9O2EuTS5pc0d0bUV2ZW50JiYoYi5wYXRoPU8oYS5NLEYuRC52YykpO3JldHVybiBifSxNSz1mdW5jdGlvbihhLGIpe2lmKCFRKGEsSC5KLldlKSl7dmFyIGM9S0soMTE5KTtpZihjKXt2YXIgZD1ubShjKSxlPWZ1bmN0aW9uKGcpe1YoYSxILkouV2UsITApO3ZhciBoPVIoYSxGLkQuemYpLGw9UihhLEYuRC5BZik7VShhLEYuRC56ZixTdHJpbmcoZy5nYWRTb3VyY2UpKTtVKGEsRi5ELkFmLDYpO1YoYSxILkouc2EpO1YoYSxILkoudWcpO1UoYSxGLkQuc2EpO2IoKTtVKGEsRi5ELnpmLGgpO1UoYSxGLkQuQWYsbCk7VihhLEguSi5XZSwhMSl9O2lmKGQpZShkKTtlbHNle3ZhciBmPXZvaWQgMDtmPXBtKGMsZnVuY3Rpb24oZyxoKXtlKGgpO3FtKGMsZil9KX19fX0sUEs9ZnVuY3Rpb24oYSl7dmFyIGIsCmMsZCxlO2I9YS5UbjtjPWEubW87ZD1hLlFvO2U9YS5VbjtpZihiKXtpZihkcihjW0YuRC5YZl0sISFjW0YuRC5BYV0pKXtpZihXaigpJiZCcihBcigpKSl7Zm9yKHZhciBmPVVxKCEwKSxnPXt9LGg9bShPYmplY3Qua2V5cyh2cikpLGw9aC5uZXh0KCk7IWwuZG9uZTtsPWgubmV4dCgpKXt2YXIgbj1sLnZhbHVlLHA9dnJbbl0scT1mW3BdO2lmKHEpe3ZhciByPSRwKHEsNCk7ciYmKG9zKE1hdGgubWluKE5yKHIpLE5iKCkpfHxOYigpLHAsNCl8fChnW25dPXEpKX19Zm9yKHZhciB0PXt9LHU9bShPYmplY3Qua2V5cyhnKSksdj11Lm5leHQoKTshdi5kb25lO3Y9dS5uZXh0KCkpe3ZhciB4PXYudmFsdWUseT1nW3hdO2lmKHkhPT12b2lkIDApe3ZhciB6PSRwKHksNCk7eiYmei5tPT09IjEiJiYodFt4XT16LmspfX1BSyh0LGUpfXBzKGUpO3RzKGUpO1F2KGUpfWlmKE9wKCkhPT0yKXtncyhlKTtpcyhlKTtpZihZZigxNSkpe3ZhciBDPWUsRD1kcyhBLmxvY2F0aW9uLmhyZWYsITAsITEpOwpELmxlbmd0aHx8KEQ9ZHMoQS5kb2N1bWVudC5yZWZlcnJlciwhMSwhMCkpO2lmKEQubGVuZ3RoKXtDPUN8fHt9O3ZhciBJPURbMF07SS52YWx1ZSYmbXMoImdjbF9kYyIsW3t2ZXJzaW9uOiIiLGdjbGlkOkkudmFsdWUsdGltZXN0YW1wOk5iKCkscWE6SS5xYX1dLEMpfX1ISyhlKTtLSyh2b2lkIDAsZSl9ZWxzZSBncyhlKTtpZihXaigpJiZCcihBcigpKSl7dmFyIEc9ZnMoKTtBSyhHLGUpfXhzKHFzLGUpO3lzKGUpfWNbRi5ELkFhXSYmKHZzKGNbRi5ELkFhXSxjW0YuRC5hZF0sISFjW0YuRC53Y10pLHVzKGNbRi5ELkFhXSxjW0YuRC5hZF0sISFjW0YuRC53Y10sZS5wcmVmaXgpLHdzKGNbRi5ELkFhXSxjW0YuRC5hZF0sISFjW0YuRC53Y10sZS5wcmVmaXgpLFJ2KEd2KGUucHJlZml4KSxjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdLGUpLFJ2KCJGUEFVIixjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdLGUpKTtkJiZBcyhOSyk7Q3MoT0spfSxxcz1bImF3IiwiZGMiLAoiZ2IiXSxPSz1bImF3IiwiZGMiLCJnYiIsImFnIl0sTks9WyJhdyIsImRjIiwiZ2IiLCJhZyIsImdhZF9zb3VyY2UiXTtmdW5jdGlvbiBWSygpe3JldHVybiBNdCg3KSYmTXQoOSkmJk10KDEwKX07dmFyIFdLPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fTthLm1lcmdlSGl0RGF0YUZvcktleShGLkQub2osKGRbYl09YyxkKSl9LFhLPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZEkoYSxGLkQuRmksYS5NLmliW0YuRC5GaV0pO2lmKGMmJmNbYnx8YS5ldmVudE5hbWVdIT09dm9pZCAwKXJldHVybiBjW2J8fGEuZXZlbnROYW1lXX0sWUs9ZnVuY3Rpb24oYSl7dmFyIGI9UShhLEguSi5ZYSk7aWYoQ2QoYikpcmV0dXJuIGJ9LFpLPWZ1bmN0aW9uKGEpe2lmKFEoYSxILkouYmUpfHwhZWsoYS5NKSlyZXR1cm4gMTtpZighTyhhLk0sRi5ELmRkKSl7dmFyIGI9TyhhLk0sRi5ELlFmKTtpZihiIT09ITAmJmIhPT0idHJ1ZSIpcmV0dXJuIDF9dmFyIGM9TyhhLk0sRi5ELk9pKTtyZXR1cm4gYz09PSExfHxjPT09ImZhbHNlIj8zOjJ9Owp2YXIgYUw9ZnVuY3Rpb24oYSxiKXthJiYoJEsoInNpZCIsYS50YXJnZXRJZCxiKSwkSygiY2MiLGEuY2xpZW50Q291bnQsYiksJEsoInRsIixhLnRvdGFsTGlmZU1zLGIpLCRLKCJoYyIsYS5oZWFydGJlYXRDb3VudCxiKSwkSygiY2wiLGEuY2xpZW50TGlmZU1zLGIpKX0sJEs9ZnVuY3Rpb24oYSxiLGMpe2IhPW51bGwmJmMucHVzaChhKyI9IitiKX0sYkw9ZnVuY3Rpb24oKXt2YXIgYT1CLnJlZmVycmVyO2lmKGEpe3ZhciBiO3JldHVybiBMaihSaihhKSwiaG9zdCIpPT09KChiPUEubG9jYXRpb24pPT1udWxsP3ZvaWQgMDpiLmhvc3QpPzE6Mn1yZXR1cm4gMH0sZEw9ZnVuY3Rpb24oKXt0aGlzLmphPWNMO3RoaXMuTj0wO3RoaXMueWE9TmYoNTcsNSk7dGhpcy5SPU5mKDU4LDUwKTt0aGlzLmZhPURiKCk7dGhpcy5MYT0iaHR0cHM6Ly8iK0UoMjEpKyIvYT8ifTtkTC5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIsYyxkKXsKdmFyIGU9YkwoKSxmLGc9W107Zj1BPT09QS50b3AmJmUhPT0wJiZiPyhiPT1udWxsP3ZvaWQgMDpiLmNsaWVudENvdW50KT4xP2U9PT0yPzE6MjplPT09Mj8wOjM6NDthJiYkSygic2kiLGEuSmcsZyk7JEsoIm0iLDAsZyk7JEsoImlzcyIsZixnKTskSygiaWYiLGMsZyk7YUwoYixnKTtkJiYkSygiZm0iLGVuY29kZVVSSUNvbXBvbmVudChkLnN1YnN0cmluZygwLHRoaXMuUikpLGcpO3RoaXMuWihnKTt9O2RMLnByb3RvdHlwZS5IPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9W107JEsoIm0iLDEsZik7JEsoInMiLGEsZik7JEsoInBvIixiTCgpLGYpO2ImJigkSygic3QiLGIuc3RhdGUsZiksJEsoInNpIixiLkpnLGYpLCRLKCJzbSIsYi5VZyxmKSk7YUwoYyxmKTskSygiYyIsZCxmKTtlJiYkSygiZm0iLGVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZygwLAp0aGlzLlIpKSxmKTt0aGlzLlooZik7fTtkTC5wcm90b3R5cGUuWj1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/W106YTshZm4uTnx8dGhpcy5OPj10aGlzLnlhfHwoJEsoInBpZCIsdGhpcy5mYSxhKSwkSygiYmMiLCsrdGhpcy5OLGEpLGEudW5zaGlmdCgiY3RpZD0iK0UoNSkrIiZ0PXMiKSx0aGlzLmphKCIiK3RoaXMuTGErYS5qb2luKCImIikpKX07ZnVuY3Rpb24gZUwoYSl7cmV0dXJuIGEucGVyZm9ybWFuY2UmJmEucGVyZm9ybWFuY2Uubm93KCl8fERhdGUubm93KCl9CnZhciBmTD1mdW5jdGlvbihhLGIpe3ZhciBjPUEsZD1OZig1Myw1MDApLGU9TmYoNTQsNUUzKSxmPU5mKDgsMjApLGc9TmYoNTUsNUUzKSxoO3ZhciBsPWZ1bmN0aW9uKG4scCxxKXtxPXE9PT12b2lkIDA/e3FvOmZ1bmN0aW9uKCl7fSxzbzpmdW5jdGlvbigpe30scG86ZnVuY3Rpb24oKXt9LG9uRmFpbHVyZTpmdW5jdGlvbigpe319OnE7dGhpcy5Jaj1uO3RoaXMuSD1wO3RoaXMuTj1xO3RoaXMuZmE9dGhpcy5qYT10aGlzLmhlYXJ0YmVhdENvdW50PXRoaXMuRGo9MDt0aGlzLmZlPSExO3RoaXMuSz17fTt0aGlzLmlkPVN0cmluZyhNYXRoLmZsb29yKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKk1hdGgucmFuZG9tKCkpKTt0aGlzLnN0YXRlPTA7dGhpcy5KZz1lTCh0aGlzLkgpO3RoaXMuVWc9ZUwodGhpcy5IKTt0aGlzLlo9MTB9O2wucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt0aGlzLlIoMSk7CnRoaXMuTGEoKX07bC5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm57c3RhdGU6dGhpcy5zdGF0ZSxKZzpNYXRoLnJvdW5kKGVMKHRoaXMuSCktdGhpcy5KZyksVWc6TWF0aC5yb3VuZChlTCh0aGlzLkgpLXRoaXMuVWcpfX07bC5wcm90b3R5cGUuUj1mdW5jdGlvbihuKXt0aGlzLnN0YXRlIT09biYmKHRoaXMuc3RhdGU9bix0aGlzLlVnPWVMKHRoaXMuSCkpfTtsLnByb3RvdHlwZS52Zz1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcodGhpcy5EaisrKX07bC5wcm90b3R5cGUuTGE9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuaGVhcnRiZWF0Q291bnQrKzt0aGlzLnlhKHt0eXBlOjAsY2xpZW50SWQ6dGhpcy5pZCxyZXF1ZXN0SWQ6dGhpcy52ZygpLG1heERlbGF5OnRoaXMuaGUoKX0sZnVuY3Rpb24ocCl7aWYocC50eXBlPT09MCl7dmFyIHE7aWYoKChxPXAuZmFpbHVyZSk9PW51bGw/dm9pZCAwOnEuZmFpbHVyZVR5cGUpIT1udWxsKWlmKHAuc3RhdHMmJihuLnN0YXRzPQpwLnN0YXRzKSxuLmZhKysscC5pc0RlYWR8fG4uZmE+Zil7dmFyIHI9cC5pc0RlYWQmJnAuZmFpbHVyZS5mYWlsdXJlVHlwZTtuLlo9cnx8MTA7bi5SKDQpO24uQWooKTt2YXIgdCx1Oyh1PSh0PW4uTikucG8pPT1udWxsfHx1LmNhbGwodCx7ZmFpbHVyZVR5cGU6cnx8MTAsZGF0YTpwLmZhaWx1cmUuZGF0YX0pfWVsc2Ugbi5SKDMpLG4uUGgoKTtlbHNle2lmKG4uaGVhcnRiZWF0Q291bnQ+cC5zdGF0cy5oZWFydGJlYXRDb3VudCtmKXtuLmhlYXJ0YmVhdENvdW50PXAuc3RhdHMuaGVhcnRiZWF0Q291bnQ7dmFyIHYseDsoeD0odj1uLk4pLm9uRmFpbHVyZSk9PW51bGx8fHguY2FsbCh2LHtmYWlsdXJlVHlwZToxM30pfW4uc3RhdHM9cC5zdGF0czt2YXIgeT1uLnN0YXRlO24uUigyKTtpZih5IT09MilpZihuLmZlKXt2YXIgeixDOyhDPSh6PW4uTikuc28pPT1udWxsfHxDLmNhbGwoeil9ZWxzZXtuLmZlPSEwO3ZhciBELEk7KEk9KEQ9bi5OKS5xbyk9PW51bGx8fEkuY2FsbChEKX1uLmZhPQowO24uTmooKTtuLlBoKCl9fX0pfTtsLnByb3RvdHlwZS5oZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlPT09Mj9lOmR9O2wucHJvdG90eXBlLlBoPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLkguc2V0VGltZW91dChmdW5jdGlvbigpe24uTGEoKX0sTWF0aC5tYXgoMCx0aGlzLmhlKCktKGVMKHRoaXMuSCktdGhpcy5qYSkpKX07bC5wcm90b3R5cGUua3I9ZnVuY3Rpb24obixwLHEpe3ZhciByPXRoaXM7dGhpcy55YSh7dHlwZToxLGNsaWVudElkOnRoaXMuaWQscmVxdWVzdElkOnRoaXMudmcoKSxjb21tYW5kOm59LGZ1bmN0aW9uKHQpe2lmKHQudHlwZT09PTEpaWYodC5yZXN1bHQpcCh0LnJlc3VsdCk7ZWxzZXt2YXIgdSx2LHgseT17ZmFpbHVyZVR5cGU6KHg9KHU9dC5mYWlsdXJlKT09bnVsbD92b2lkIDA6dS5mYWlsdXJlVHlwZSkhPW51bGw/eDoxMixkYXRhOih2PXQuZmFpbHVyZSk9PW51bGw/dm9pZCAwOnYuZGF0YX0seixDOyhDPSh6PXIuTikub25GYWlsdXJlKT09Cm51bGx8fEMuY2FsbCh6LHkpO3EoeSl9fSl9O2wucHJvdG90eXBlLnlhPWZ1bmN0aW9uKG4scCl7dmFyIHE9dGhpcztpZih0aGlzLnN0YXRlPT09NCluLmZhaWx1cmU9e2ZhaWx1cmVUeXBlOnRoaXMuWn0scChuKTtlbHNle3ZhciByPXRoaXMuc3RhdGUhPT0yJiZuLnR5cGUhPT0wLHQ9bi5yZXF1ZXN0SWQsdSx2PXRoaXMuSC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHk9cS5LW3RdO3kmJihpbSg2KSxxLmtkKHksNykpfSwodT1uLm1heERlbGF5KSE9bnVsbD91OmcpLHg9e3JlcXVlc3Q6bixIbzpwLHpvOnIsTnM6dn07dGhpcy5LW3RdPXg7cnx8dGhpcy5zZW5kUmVxdWVzdCh4KX19O2wucHJvdG90eXBlLnNlbmRSZXF1ZXN0PWZ1bmN0aW9uKG4pe3RoaXMuamE9ZUwodGhpcy5IKTtuLnpvPSExO3RoaXMuSWoobi5yZXF1ZXN0KX07bC5wcm90b3R5cGUuTmo9ZnVuY3Rpb24oKXtmb3IodmFyIG49bShPYmplY3Qua2V5cyh0aGlzLkspKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSl7dmFyIHE9CnRoaXMuS1twLnZhbHVlXTtxLnpvJiZ0aGlzLnNlbmRSZXF1ZXN0KHEpfX07bC5wcm90b3R5cGUuQWo9ZnVuY3Rpb24oKXtmb3IodmFyIG49bShPYmplY3Qua2V5cyh0aGlzLkspKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSl0aGlzLmtkKHRoaXMuS1twLnZhbHVlXSx0aGlzLlopfTtsLnByb3RvdHlwZS5rZD1mdW5jdGlvbihuLHApe3RoaXMuYWMobik7dmFyIHE9bi5yZXF1ZXN0O3EuZmFpbHVyZT17ZmFpbHVyZVR5cGU6cH07bi5IbyhxKX07bC5wcm90b3R5cGUuYWM9ZnVuY3Rpb24obil7ZGVsZXRlIHRoaXMuS1tuLnJlcXVlc3QucmVxdWVzdElkXTt0aGlzLkguY2xlYXJUaW1lb3V0KG4uTnMpfTtsLnByb3RvdHlwZS5rcz1mdW5jdGlvbihuKXt0aGlzLmphPWVMKHRoaXMuSCk7dmFyIHA9dGhpcy5LW24ucmVxdWVzdElkXTtpZihwKXRoaXMuYWMocCkscC5IbyhuKTtlbHNle3ZhciBxLHI7KHI9KHE9dGhpcy5OKS5vbkZhaWx1cmUpPT1udWxsfHxyLmNhbGwocSx7ZmFpbHVyZVR5cGU6MTR9KX19OwpoPW5ldyBsKGEsYyxiKTtyZXR1cm4gaH07CnZhciBnTD1mdW5jdGlvbigpe3JldHVybiBhbCgxOCxmdW5jdGlvbigpe3JldHVybiBuZXcgZEx9KX0sY0w9ZnVuY3Rpb24oYSl7aW8obG8oY28uaWEuWmIpLGZ1bmN0aW9uKCl7WmMoYSl9KX0saEw9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdWJzdHJpbmcoMCxhLmluZGV4T2YoIi9fL3NlcnZpY2Vfd29ya2VyIikpO3JldHVybiImMXA9MSIrKGI/IiZwYXRoPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpOiIiKX0saUw9ZnVuY3Rpb24oYSl7dmFyIGI9QS5sb2NhdGlvbi5vcmlnaW47aWYoIWIpcmV0dXJuIG51bGw7KE0oNDMyKT9XaigpOldqKCkmJiFhKSYmKGE9IiIrYitYaigpKyIvXy9zZXJ2aWNlX3dvcmtlciIpO3ZhciBjPWEsZCxlPUxmKDExKTtlPUxmKDEwKTtkPWU7Yz8oYy5jaGFyQXQoYy5sZW5ndGgtMSkhPT0iLyImJgooYys9Ii8iKSxhPWMrZCk6YT0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vc3RhdGljL3NlcnZpY2Vfd29ya2VyLyIrZCsiLyI7dmFyIGY7dHJ5e2Y9bmV3IFVSTChhKX1jYXRjaChnKXtyZXR1cm4gbnVsbH1yZXR1cm4gZi5wcm90b2NvbCE9PSJodHRwczoiP251bGw6Zn0sakw9ZnVuY3Rpb24oYSl7dmFyIGI9bm0oam0uYmEuT2gpO3JldHVybiBiJiZiW2FdfSxrTD1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3RoaXMuSz1nTCgpO3RoaXMuWj10aGlzLlI9ITE7dGhpcy5mYT1udWxsO3RoaXMuaW5pdFRpbWU9TWF0aC5yb3VuZChOYigpKTt0aGlzLkg9MTU7dGhpcy5OPXRoaXMuRnIoYSk7QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5pbml0aWFsaXplKCl9LDFFMyk7YmQoZnVuY3Rpb24oKXtiLnpzKGEpfSl9O2s9a0wucHJvdG90eXBlO2suZGVsZWdhdGU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZ2V0U3RhdGUoKSE9PTI/KHRoaXMuSy5IKHRoaXMuSCx7c3RhdGU6dGhpcy5nZXRTdGF0ZSgpLApKZzp0aGlzLmluaXRUaW1lLFVnOk1hdGgucm91bmQoTmIoKSktdGhpcy5pbml0VGltZX0sdm9pZCAwLGEuY29tbWFuZFR5cGUpLGMoe2ZhaWx1cmVUeXBlOnRoaXMuSH0pKTp0aGlzLk4ua3IoYSxiLGMpfTtrLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTi5nZXRTdGF0ZSgpLnN0YXRlfTtrLnpzPWZ1bmN0aW9uKGEpe3ZhciBiPUEubG9jYXRpb24ub3JpZ2luLGM9dGhpcyxkPVhjKCk7dHJ5e3ZhciBlPWQuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGY9YS5wYXRobmFtZSxnPWZbZi5sZW5ndGgtMV09PT0iLyI/YS50b1N0cmluZygpOmEudG9TdHJpbmcoKSsiLyIsaD1hLm9yaWdpbiE9PSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSI/aEwoZik6IiIsbDtNKDEzMykmJihsPXtzYW5kYm94OiJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzIn0pO1hjKGcrInN3X2lmcmFtZS5odG1sP29yaWdpbj0iK2VuY29kZVVSSUNvbXBvbmVudChiKSsKaCx2b2lkIDAsbCx2b2lkIDAsZSk7dmFyIG49ZnVuY3Rpb24oKXtkLmNvbnRlbnREb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO2UuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oKXtjLmZhPWUuY29udGVudFdpbmRvdztkLmNvbnRlbnRXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24ocCl7cC5vcmlnaW49PT1hLm9yaWdpbiYmYy5OLmtzKHAuZGF0YSl9KTtjLmluaXRpYWxpemUoKX0pfTtkLmNvbnRlbnREb2N1bWVudC5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIj9uKCk6ZC5jb250ZW50V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7bigpfSl9Y2F0Y2gocCl7ZC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGQpLHRoaXMuSD0xMSx0aGlzLksuSyh2b2lkIDAsdm9pZCAwLHRoaXMuSCxwLnRvU3RyaW5nKCkpfX07ay5Gcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9ZkwoZnVuY3Rpb24oZCl7dmFyIGU7KGU9Yi5mYSk9PQpudWxsfHxlLnBvc3RNZXNzYWdlKGQsYS5vcmlnaW4pfSx7cW86ZnVuY3Rpb24oKXtiLlI9ITA7Yi5LLksoYy5nZXRTdGF0ZSgpLGMuc3RhdHMpfSxzbzpmdW5jdGlvbigpe30scG86ZnVuY3Rpb24oZCl7Yi5SPyhiLkg9KGQ9PW51bGw/dm9pZCAwOmQuZmFpbHVyZVR5cGUpfHwxMCxiLksuSChiLkgsYy5nZXRTdGF0ZSgpLGMuc3RhdHMsdm9pZCAwLGQ9PW51bGw/dm9pZCAwOmQuZGF0YSkpOihiLkg9KGQ9PW51bGw/dm9pZCAwOmQuZmFpbHVyZVR5cGUpfHw0LGIuSy5LKGMuZ2V0U3RhdGUoKSxjLnN0YXRzLGIuSCxkPT1udWxsP3ZvaWQgMDpkLmRhdGEpKX0sb25GYWlsdXJlOmZ1bmN0aW9uKGQpe2IuSD1kLmZhaWx1cmVUeXBlO2IuSy5IKGIuSCxjLmdldFN0YXRlKCksYy5zdGF0cyxkLmNvbW1hbmQsZC5kYXRhKX19KTtyZXR1cm4gY307ay5pbml0aWFsaXplPWZ1bmN0aW9uKCl7dGhpcy5afHx0aGlzLk4uaW5pdCgpO3RoaXMuWj0hMH07CnZhciBsTD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZTtpZigoZT1qTChhKSk9PW51bGx8fCFlLmRlbGVnYXRlKXt2YXIgZj1JYygpPzE2OjY7Z0woKS5IKGYsdm9pZCAwLHZvaWQgMCxiLmNvbW1hbmRUeXBlKTtkKHtmYWlsdXJlVHlwZTpmfSk7cmV0dXJufWpMKGEpLmRlbGVnYXRlKGIsYyxkKTt9OwpmdW5jdGlvbiBtTChhLGIsYyxkKXt2YXIgZT1pTChhKTtpZihlPT09bnVsbCl7ZCgiX2lzX3N3PWYiKyhJYygpPzE2OjYpKyJ0ZSIpO3JldHVybn12YXIgZj1iPzE6MCxnPU1hdGgucm91bmQoTmIoKSksaCxsPShoPWpMKGUub3JpZ2luKSk9PW51bGw/dm9pZCAwOmguaW5pdFRpbWUsbj1sP2ctbDp2b2lkIDAscDtNKDQzMik/cD1XaigpP3ZvaWQgMDpBLmxvY2F0aW9uLmhyZWY6cD1BLmxvY2F0aW9uLmhyZWY7bEwoZS5vcmlnaW4se2NvbW1hbmRUeXBlOjAscGFyYW1zOnt1cmw6YSxtZXRob2Q6Zix0ZW1wbGF0ZXM6Yyxib2R5OmJ8fCIiLHByb2Nlc3NSZXNwb25zZTohMCxzaW5jZUluaXQ6bixhdHRyaWJ1dGlvblJlcG9ydGluZzohMCxyZWZlcmVyOnAsc3RyaWN0Ok0oNTg0KX19LGZ1bmN0aW9uKCl7fSxmdW5jdGlvbihxKXt2YXIgcj0iX2lzX3N3PWYiK3EuZmFpbHVyZVR5cGUsdCx1PSh0PWpMKGUub3JpZ2luKSk9PQpudWxsP3ZvaWQgMDp0LmdldFN0YXRlKCk7dSE9PXZvaWQgMCYmKHIrPSJzIit1KTtkKG4/cisoInQiK24pOnIrInRlIil9KTt9O2Z1bmN0aW9uIG5MKGEpe2lmKElmKDQ3KSYmZEkoYSwiY2NkX2FkZF8xcF9kYXRhIiwhMSkmJldqKCkpe3ZhciBiPWEuTTtpZihJYygpJiZiZygiaW50ZXJuYWxfc3dfYWxsb3dlZCIsIiIpKXt2YXIgYz1layhiKSxkPVdqKCk/WGooKTp2b2lkIDAsZTtlPWQ/e3BhdGg6ZCxlbzoiZnVsbCJ9OmM/e3BhdGg6YyxlbzoibGl0ZSJ9OnZvaWQgMDtpZihlKXt2YXIgZj1lLmVvLGc9bmV3IFVSTChlLnBhdGgsQS5sb2NhdGlvbi5vcmlnaW4pO2lmKGcub3JpZ2luPT09QS5sb2NhdGlvbi5vcmlnaW4mJnB5KGYpPT09dm9pZCAwKXt2YXIgaD1vbShqbS5iYS5PaCx7fSk7aFtmXXx8KGhbZl09bmV3IG55KGcpKX19fX19O2Z1bmN0aW9uIHNMKCl7dmFyIGE7YT1hPT09dm9pZCAwP2RvY3VtZW50OmE7dmFyIGI7cmV0dXJuISgoYj1hLmZlYXR1cmVQb2xpY3kpPT1udWxsfHwhYi5hbGxvd2VkRmVhdHVyZXMoKS5pbmNsdWRlcygiYXR0cmlidXRpb24tcmVwb3J0aW5nIikpfTtmdW5jdGlvbiB3TChhLGIsYyxkKXtkPWQ9PT12b2lkIDA/ITE6ZDt2YXIgZT1GcCgpLGY9RHAoZSk7aWYoZi51cmwpaWYoZCl7dmFyIGc9YyhmLnVybCk7YiE9PWcmJlUoYSxGLkQuUGUsZyl9ZWxzZXt2YXIgaD1mLnVybDtiIT09aCYmVShhLEYuRC5QZSxjKGgpKX19Owp2YXIgeEw9ZnVuY3Rpb24oYSl7aWYoYSE9bnVsbCl7dmFyIGI9U3RyaW5nKGEpLnN1YnN0cmluZygwLDUxMiksYz1iLmluZGV4T2YoIiMiKTtyZXR1cm4gYz09PS0xP2I6Yi5zdWJzdHJpbmcoMCxjKX1yZXR1cm4iIn0seUw9ZnVuY3Rpb24oKXt2YXIgYT1CLnRpdGxlO2lmKGE9PT12b2lkIDB8fGE9PT0iIilyZXR1cm4iIjthPWVuY29kZVVSSUNvbXBvbmVudChhKTtmb3IodmFyIGI9MjU2O2I+MCYmS2ooYS5zdWJzdHJpbmcoMCxiKSk9PT12b2lkIDA7KWItLTtyZXR1cm4gS2ooYS5zdWJzdHJpbmcoMCxiKSl8fCIifTtmdW5jdGlvbiBBTChhKXtWKGEsSC5KLkphLCEwKTtWKGEsSC5KLkViLE5iKCkpO1YoYSxILkoueW4sYS5NLmV2ZW50TWV0YWRhdGFbSC5KLkphXSl9O3ZhciBTTD1mdW5jdGlvbihhKXt2YXIgYj1YbyhGLkQua2EpP21qKCJwc2NkbCIpOiJkZW5pZWQiO2IhPW51bGwmJlUoYSxGLkQuamgsYil9O3ZhciBUTD1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9e319O3ZhciBVTD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuTTtpZihiPT09dm9pZCAwPzA6Yil7dmFyIGQ9Yy5nZXRNZXJnZWRWYWx1ZXMoRi5ELk9hKTtZYihkKSYmVShhLEYuRC5MaSxZYihkKSl9dmFyIGU9T28oZkQoRi5ELk9hKSksZj1jLmdldE1lcmdlZFZhbHVlcyhGLkQuT2EsMSxlKSxnPWMuZ2V0TWVyZ2VkVmFsdWVzKEYuRC5PYSwyKSxoPVliKG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sZixuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LFRMLkgpKSwiLiIpLGw9WWIoZywiLiIpO2gmJlUoYSxGLkQuWGMsaCk7bCYmVShhLEYuRC5WYyxsKX07dmFyIFZMPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkoudHEpO2ImJlUoYSxGLkQuSWwsYil9O2Z1bmN0aW9uIFdMKGEpe3ZhciBiPUtCKCExKTtpZihiIT1udWxsJiZiLnN0YXR1cyl7dmFyIGM9e2d0YjpiLnN0YXR1c307Yi5kZWxheSYmKGMuZ3RiZD1iLmRlbGF5KTthLm1lcmdlSGl0RGF0YUZvcktleShGLkQuVGEsYyl9fTt2YXIgWEw9ZnVuY3Rpb24oYSl7em0oKT09PSJVUy1DTyImJlUoYSxGLkQuTGUsMSl9O3ZhciBZTD17UmE6e0NrOjEsem46MixIbjozLEluOjQsSm46NSx3bjo2fX07WUwuUmFbWUwuUmEuQ2tdPSJBRE9CRV9DT01NRVJDRSI7WUwuUmFbWUwuUmEuem5dPSJTUVVBUkVTUEFDRSI7WUwuUmFbWUwuUmEuSG5dPSJXT09fQ09NTUVSQ0UiO1lMLlJhW1lMLlJhLkluXT0iV09PX0NPTU1FUkNFX0xFR0FDWSI7WUwuUmFbWUwuUmEuSm5dPSJXT1JEX1BSRVNTIjtZTC5SYVtZTC5SYS53bl09IlNIT1BJRlkiO2Z1bmN0aW9uIFpMKGEpe3ZhciBiPUE7cmV0dXJuIEtqKGIuZXNjYXBlKGIuYXRvYihhKSkpfQpmdW5jdGlvbiAkTCgpe3RyeXtpZighTSg0OTgpJiYhTSg0MjUpKXJldHVybltdO3ZhciBhPW5tKGptLmJhLmxuKTtpZihBcnJheS5pc0FycmF5KGEpKXJldHVybiBhO3ZhciBiPVtdLGM7YTp7dHJ5e2M9ISFCLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtkYXRhLXJlcXVpcmVtb2R1bGVePSJtYWdlLyJdJyk7YnJlYWsgYX1jYXRjaCh5KXt9Yz0hMX1jJiZiLnB1c2goWUwuUmEuQ2spO3ZhciBkO2E6e3RyeXt2YXIgZT1aTCgiWVhOelpYUnpMbk54ZFdGeVpYTndZV05sTG1OdmJTOD0iKTtkPWU/ISFCLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmNePSIvLycrZSsnIl0nKTohMTticmVhayBhfWNhdGNoKHkpe31kPSExfWQmJmIucHVzaChZTC5SYS56bik7dmFyIGY7YTp7aWYoTSg0MjUpKXRyeXt2YXIgZz1aTCgiYzJodmNHbG1lUzVqYjIwPSIpLGg9WkwoImMyaHZjR2xtZVdOa2JpNWpiMjA9Iik7Zj1nJiZoPyEhQi5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjKj0iY2RuLicrZysnIl0sbWV0YVtwcm9wZXJ0eT0ib2c6aW1hZ2UiXVtjb250ZW50Kj0iY2RuLicrCihnKyciXSxsaW5rW3JlbD0icHJlY29ubmVjdCJdW2hyZWYqPSJjZG4uJykrKGcrJyJdLGxpbmtbcmVsPSJwcmVjb25uZWN0Il1baHJlZio9ImZvbnRzLicpKyhoKyciXSxsaW5rW3JlbD0icHJlY29ubmVjdCJdW2hyZWYqPSJpdGVyYWJsZS1zaG9waWZ5Il0sbGlua1tyZWw9InByZWNvbm5lY3QiXVtocmVmKj0idi4nKSsoZysnIl0nKSk6ITE7YnJlYWsgYX1jYXRjaCh5KXt9Zj0hMX1mJiZiLnB1c2goWUwuUmEud24pO3ZhciBsO2E6e3RyeXtsPSEhQi5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjKj0id29vY29tbWVyY2UiXSxsaW5rW2hyZWYqPSJ3b29jb21tZXJjZSJdLFtjbGFzc3w9Indvb2NvbW1lcmNlIl0nKTticmVhayBhfWNhdGNoKHkpe31sPSExfWwmJmIucHVzaChZTC5SYS5Jbik7dmFyIG47YTp7dHJ5e3ZhciBwLHE9KChwPUIubG9jYXRpb24pPT1udWxsP3ZvaWQgMDpwLmhvc3RuYW1lKXx8IiIscix0PSgocj1CLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6ci5vcmlnaW4pfHwKIiIsdT1aTCgiTG5kdmNtUndjbVZ6Y3k1amIyMD0iKSx2PVpMKCJMeTl6TG5jdWIzSm4iKTtuPXUmJnY/VGIocSx1KXx8ISFCLnF1ZXJ5U2VsZWN0b3IoJ1tzcmNePSInK3QrJy93cC1jb250ZW50Il0sbWV0YVtuYW1lPSJnZW5lcmF0b3IiXVtjb250ZW50Xj0iV29yZFByZXNzICJdLGxpbmtbcmVsPSJkbnMtcHJlZmV0Y2giXVtocmVmPSInKyh2KyciXScpKTohMTticmVhayBhfWNhdGNoKHkpe31uPSExfW4mJmIucHVzaChZTC5SYS5Kbik7dmFyIHg7YTp7dHJ5e3g9ISFCLnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcyo9Indvb2NvbW1lcmNlIl0sbWV0YVtuYW1lPSJnZW5lcmF0b3IiXVtjb250ZW50Xj0iV29vQ29tbWVyY2UgIl0nKTticmVhayBhfWNhdGNoKHkpe314PSExfXgmJmIucHVzaChZTC5SYS5Ibik7VUIoKSYmbW0oam0uYmEubG4sYik7cmV0dXJuIGJ9Y2F0Y2goeSl7fXJldHVybltdfTtmdW5jdGlvbiB3TShhKXtpZihNKDQyNSkmJlEoYSxILkouRmMpKXt2YXIgYj1OZig2NywxNTAwKSxjPWEubWVyZ2VIaXREYXRhRm9yS2V5LGQ9Ri5ELlRhLGU9e307Yy5jYWxsKGEsZCxlKX19O3ZhciB4TT0icGxhdGZvcm0gcGxhdGZvcm1WZXJzaW9uIGFyY2hpdGVjdHVyZSBtb2RlbCB1YUZ1bGxWZXJzaW9uIGJpdG5lc3MgZnVsbFZlcnNpb25MaXN0IHdvdzY0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIHlNKGEpe3ZhciBiO3JldHVybihiPWEuZ29vZ2xlX3RhZ19kYXRhKSE9bnVsbD9iOmEuZ29vZ2xlX3RhZ19kYXRhPXt9fWZ1bmN0aW9uIHpNKGEpe3ZhciBiLGM7cmV0dXJuKGM9KGI9YS5nb29nbGVfdGFnX2RhdGEpPT1udWxsP3ZvaWQgMDpiLnVhY2hfcHJvbWlzZSkhPW51bGw/YzpudWxsfWZ1bmN0aW9uIEFNKGEpe3ZhciBiLGM7cmV0dXJuIHR5cGVvZigoYj1hLm5hdmlnYXRvcik9PW51bGw/dm9pZCAwOihjPWIudXNlckFnZW50RGF0YSk9PW51bGw/dm9pZCAwOmMuZ2V0SGlnaEVudHJvcHlWYWx1ZXMpPT09ImZ1bmN0aW9uIn0KZnVuY3Rpb24gQk0oYSl7aWYoIUFNKGEpKXJldHVybiBudWxsO3ZhciBiPXlNKGEpO2lmKGIudWFjaF9wcm9taXNlKXJldHVybiBiLnVhY2hfcHJvbWlzZTt2YXIgYz1hLm5hdmlnYXRvci51c2VyQWdlbnREYXRhLmdldEhpZ2hFbnRyb3B5VmFsdWVzKHhNKS50aGVuKGZ1bmN0aW9uKGQpe2IudWFjaCE9bnVsbHx8KGIudWFjaD1kKTtyZXR1cm4gZH0pO3JldHVybiBiLnVhY2hfcHJvbWlzZT1jfTsKdmFyIENNPWZ1bmN0aW9uKCl7dGhpcy53aW5kb3c9QTt0aGlzLk49TmJ9O0NNLnByb3RvdHlwZS5SPWZ1bmN0aW9uKCl7aWYoQU0odGhpcy53aW5kb3cpJiYodGhpcy5aPXRoaXMuTigpLCF6TSh0aGlzLndpbmRvdykpKXt2YXIgYT1CTSh0aGlzLndpbmRvdyk7YSYmYS50aGVuKGZ1bmN0aW9uKCl7UCg5NSl9KS5jYXRjaChmdW5jdGlvbigpe1AoOTYpfSl9fTtDTS5wcm90b3R5cGUuSD1mdW5jdGlvbigpe3ZhciBhPXRoaXMud2luZG93Lmdvb2dsZV90YWdfZGF0YSxiO2lmKGEhPW51bGwmJmEudWFjaCl7dmFyIGM9YS51YWNoLGQ9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjKTtjLmZ1bGxWZXJzaW9uTGlzdCYmKGQuZnVsbFZlcnNpb25MaXN0PWMuZnVsbFZlcnNpb25MaXN0LnNsaWNlKDApKTtiPWR9ZWxzZSBiPW51bGw7cmV0dXJuIGJ9O0NNLnByb3RvdHlwZS5mYT1mdW5jdGlvbihhKXt2YXIgYj0wLGM9dGhpcyxkPWZ1bmN0aW9uKGgsbCl7dHJ5e2EoaCxsKX1jYXRjaChuKXt9fSwKZT10aGlzLkgoKTtpZihlKWQoZSk7ZWxzZXt2YXIgZj16TSh0aGlzLndpbmRvdyk7aWYoZil7Yj1NYXRoLm1pbihNYXRoLm1heChpc0Zpbml0ZShiKT9iOjAsMCksMUUzKTt2YXIgZz10aGlzLndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5LZ3x8KGQuS2c9ITAsUCgxMDYpLGQobnVsbCxFcnJvcigiVGltZW91dCIpKSl9LGIpO2YudGhlbihmdW5jdGlvbihoKXtkLktnfHwoZC5LZz0hMCxQKDEwNCksYy53aW5kb3cuY2xlYXJUaW1lb3V0KGcpLGQoaCkpfSkuY2F0Y2goZnVuY3Rpb24oaCl7ZC5LZ3x8KGQuS2c9ITAsUCgxMDUpLGMud2luZG93LmNsZWFyVGltZW91dChnKSxkKG51bGwsaCkpfSl9ZWxzZSBkKG51bGwpfX07Q00ucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5aIT09dm9pZCAwfTt2YXIgRE09ZnVuY3Rpb24oKXt2YXIgYTthPWE9PT12b2lkIDA/QTphO3JldHVybiBBTShhKX0sRU09ZnVuY3Rpb24oYSl7dmFyIGI9e307YltGLkQuY2ddPWEuYXJjaGl0ZWN0dXJlOwpiW0YuRC5kZ109YS5iaXRuZXNzO2EuZnVsbFZlcnNpb25MaXN0JiYoYltGLkQuZWddPWEuZnVsbFZlcnNpb25MaXN0Lm1hcChmdW5jdGlvbihjKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGMuYnJhbmR8fCIiKSsiOyIrZW5jb2RlVVJJQ29tcG9uZW50KGMudmVyc2lvbnx8IiIpfSkuam9pbigifCIpKTtiW0YuRC5mZ109YS5tb2JpbGU/IjEiOiIwIjtiW0YuRC5nZ109YS5tb2RlbDtiW0YuRC5oZ109YS5wbGF0Zm9ybTtiW0YuRC5pZ109YS5wbGF0Zm9ybVZlcnNpb247YltGLkQuamddPWEud293NjQ/IjEiOiIwIjtyZXR1cm4gYn0sRk09bmV3IENNO3ZhciBHTT1mdW5jdGlvbihhKXtpZighRE0oKSlQKDg3KTtlbHNlIGlmKEZNLksoKSl7UCg4NSk7dmFyIGI9Rk0uSCgpO2lmKGIpe2lmKGIpZm9yKHZhciBjPUVNKGIpLGQ9bShPYmplY3Qua2V5cyhjKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7VShhLGYsY1tmXSl9fWVsc2UgUCg4Nil9fTtmdW5jdGlvbiBITShhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPVEoYSxILkouc2cpLGQ9ZEkoYSwiY3VzdG9tX2V2ZW50X2FjY2VwdF9ydWxlcyIsITEpJiYhYjtpZihjKXt2YXIgZT1jLmluZGV4T2YoYS50YXJnZXQuZGVzdGluYXRpb25JZCk+PTAsZj0hMDtRKGEsSC5KLkNjKSYmKGY9UShhLEguSi5OYik9PT12aygpKTtlJiZmP1YoYSxILkoua2ksITApOihWKGEsSC5KLmtpLCExKSxkfHwoYS5pc0Fib3J0ZWQ9ITApKTtpZihhLmNhbkJlQWNjZXB0ZWQoKSl7dmFyIGc9dWsoKS5pbmRleE9mKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpPj0wLGg9ITE7aWYoIWcpe3ZhciBsLG49KGw9bmsoYS50YXJnZXQuZGVzdGluYXRpb25JZCkpPT1udWxsP3ZvaWQgMDpsLmNhbm9uaWNhbENvbnRhaW5lcklkO24mJihoPXZrKCk9PT1uKX1nfHxoP1EoYSxILkoua2kpJiZhLmFjY2VwdCgpOmEuaXNBYm9ydGVkPSEwfWVsc2UgYS5pc0Fib3J0ZWQ9ITB9fTt2YXIgSU09ZnVuY3Rpb24oYSl7dmFyIGI9TyhhLk0sRi5ELlpjKSxjPU8oYS5NLEYuRC5ZYyk7YiYmIWM/KGEuZXZlbnROYW1lIT09Ri5ELndhJiZhLmV2ZW50TmFtZSE9PUYuRC55ZiYmUCgxMzEpLGEuaXNBYm9ydGVkPSEwKTohYiYmYyYmKFAoMTMyKSxhLmlzQWJvcnRlZD0hMCl9O3ZhciBKTT1mdW5jdGlvbihhKXtpZihhLmV2ZW50TmFtZT09PUYuRC53YSl7dmFyIGI9SWYoMTEpLGM9UShhLEguSi5IcSk7ISghTSg1NTApJiZifHxjKXx8YS50YXJnZXQuSmMoKXx8WUcoImlkY19jb25maWdfcHYiLGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpfHwoYS5pc0Fib3J0ZWQ9ITApfX07dmFyIExNPWZ1bmN0aW9uKGEsYil7S00uTihhLGIpfSxNTT1mdW5jdGlvbigpe3RoaXMuSD17fX07TU0ucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLkhbYV07Y3x8KGM9dGhpcy5IW2FdPVtdKTtjLnB1c2goYil9O01NLnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuSFthLnRhcmdldC5kZXN0aW5hdGlvbklkXTtpZighYS5pc0Fib3J0ZWQmJmIpZm9yKHZhciBjPWZJKGEpLGQ9MDtkPGIubGVuZ3RoOysrZCl7dHJ5e2JbZF0oYyl9Y2F0Y2goZSl7YS5pc0Fib3J0ZWQ9ITB9aWYoYS5pc0Fib3J0ZWQpYnJlYWt9fTt2YXIgS009bmV3IE1NO3ZhciBOTT1mdW5jdGlvbihhKXtLTS5LKGEpO307dmFyIE9NPWZ1bmN0aW9uKGEpe2EmJihBcCg0OTUsYSksQXAoNTY3LGEpLEFwKDQ1MCxhKSxBcCg0NDMsYSksQXAoNTg3LGEpLEFwKDU3NixhKSxBcCg1NzAsYSksQXAoNTgxLGEpLEFwKDYwMixhKSl9LFBNPWZ1bmN0aW9uKGEpe2lmKFEoYSxILkoud2YpJiZYbyhmcCkpe3ZhciBiPVEoYSxILkouR2EpLGM9UShhLEguSi5kYSkhPT1YLlYudWImJlEoYSxILkouZGEpIT09WC5WLk9iJiZRKGEsSC5KLmRhKSE9PVguVi5GYiYmYS5ldmVudE5hbWUhPT1GLkQuSmI7SHYoYixjKTt2YXIgZD1EdltHdihiLnByZWZpeCldO09NKGQpO1UoYSxGLkQuRWQsZCl9fTtmdW5jdGlvbiBRTSgpe3JldHVybiBraigiZGVkdXBlX2djbGlkIixmdW5jdGlvbigpe3JldHVybiBBdigpfSl9O3ZhciBSTT0vXih3d3dcLik/Z29vZ2xlKFwuY29tPyk/KFwuW2Etel17Mn10Pyk/JC8sU009L153d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20kLztmdW5jdGlvbiBUTShhKXthfHwoYT1VTSgpKTtyZXR1cm4gYS5OdD8hMTphLm5zfHxhLnFzfHxhLnZzfHxhLnJzfHxhLkRnfHxhLlRofHxhLlRyfHxhLlZoPT09ImF3LmRzInx8TSgyMzUpJiZhLlZoPT09ImF3LmR2Inx8YS5Zcj8hMDohMX0KZnVuY3Rpb24gVU0oKXt2YXIgYT17fSxiPVVxKCEwKTthLk50PSEhYi5fdXA7dmFyIGM9ZXMoKSxkPWF0KCk7YS5ucz1jLmF3IT09dm9pZCAwO2EucXM9Yy5kYyE9PXZvaWQgMDthLnZzPWMud2JyYWlkIT09dm9pZCAwO2EucnM9Yy5nYnJhaWQhPT12b2lkIDA7YS5WaD10eXBlb2YgYy5nY2xzcmM9PT0ic3RyaW5nIj9jLmdjbHNyYzp2b2lkIDA7YS5EZz1kLkRnO2EuVGg9ZC5UaDt2YXIgZT1CLnJlZmVycmVyP0xqKFJqKEIucmVmZXJyZXIpLCJob3N0Iik6IiI7YS5Zcj1STS50ZXN0KGUpO2EuVHI9U00udGVzdChlKTtyZXR1cm4gYX07ZnVuY3Rpb24gVk0oKXt2YXIgYT1BLl9fdXNwYXBpO2lmKHliKGEpKXt2YXIgYj0iIjt0cnl7YSgiZ2V0VVNQRGF0YSIsMSxmdW5jdGlvbihjLGQpe2lmKGQmJmMpe3ZhciBlPWMudXNwU3RyaW5nO2UmJlJlZ0V4cCgiXltcXGRhLXpBLVotXXsxLDIwfSQiKS50ZXN0KGUpJiYoYj1lKX19KX1jYXRjaChjKXt9cmV0dXJuIGJ9fTsKdmFyIFdNPWZ1bmN0aW9uKGEpe3ZhciBiPVhvKGZwKTtWKGEsSC5KLlllLE8oYS5NLEYuRC5tYikhPW51bGwmJk8oYS5NLEYuRC5tYikhPT0hMSYmIWIpO3ZhciBjPVEoYSxILkouZGopLGQ9TyhhLk0sRi5ELnVjKSE9PSExLGU9TEsoYSk7ZHx8VShhLEYuRC5IZCwiMSIpO3ZhciBmPUhyKGUucHJlZml4KSxnPVEoYSxILkouc2EpfHxRKGEsSC5KLnVnKXx8UShhLEguSi5XZSk7Y3x8Z3x8VShhLCJfJmFwdmMiLCIwIik7YS5NLmlzR3RtRXZlbnQmJlUoYSxGLkQuSWwsImciKTtVKGEsRi5ELkVkKTtVKGEsRi5ELk1iKTtpZihiJiYoVShhLEYuRC5NYix5TCgpKSxkKSl7SHYoZSk7dmFyIGg9RHZbR3YoZS5wcmVmaXgpXTtVKGEsRi5ELkVkLGgpO09NKGgpfWlmKGEuZXZlbnROYW1lPT09Ri5ELndhJiYhZyl7dmFyIGw9TyhhLk0sRi5ELnpjKSxuPU8oYS5NLEYuRC5EYil8fHt9O1BLKHtUbjpkLG1vOm4sUW86bCxVbjplfSk7IWMmJllzKGYpJiYoVihhLEguSi52ZCwhMCksVShhLCJfJmFwdmMiLAoiMSIpKX1pZihjKWEuaXNBYm9ydGVkPSEwO2Vsc2V7YS50YXJnZXQuZGVzdGluYXRpb25JZCYmVShhLEYuRC5RZSxhLnRhcmdldC5kZXN0aW5hdGlvbklkKTtVKGEsRi5ELlViLGEuZXZlbnROYW1lKTthLmV2ZW50TmFtZT09PUYuRC53YSYmVShhLEYuRC5VYixGLkQuc2MpO2lmKFEoYSxILkouc2EpKVUoYSxGLkQuVWIsRi5ELndwKSxVKGEsRi5ELnNhLCIxIik7ZWxzZSBpZihRKGEsSC5KLnVnKSlVKGEsRi5ELlViLEYuRC5IcCk7ZWxzZSBpZihRKGEsSC5KLldlKSlVKGEsRi5ELlViLEYuRC5FcCk7ZWxzZXt2YXIgcD1lcygpO1UoYSxGLkQuRGQscC5nY2xpZCk7VShhLEYuRC5LZCxwLmRjbGlkKTtVKGEsRi5ELkFsLHAuZ2Nsc3JjKTtpZighUihhLEYuRC5EZCkmJiFSKGEsRi5ELktkKXx8TSg0MjEpKVUoYSxGLkQuRWUscC53YnJhaWQpLFUoYSxGLkQuQmYscC5nYnJhaWQpO3ZhciBxPU0oNTg5KSxyPWZ1bmN0aW9uKGZhKXtyZXR1cm4gZmEucmVwbGFjZSgvW1w/I10uKiQvLCIiKX0sCnQ9ISFPKGEuTSxGLkQuemEpLHU9cT90P2Z1bmN0aW9uKGZhKXtyZXR1cm4geEwocihmYSkpfTpmdW5jdGlvbihmYSl7cmV0dXJuIHhMKGZhLnJlcGxhY2UoLyMuKiQvLCIiKSl9OnIsdj1idCh1KTtVKGEsRi5ELnphLHYpO3ZhciB4PSEhTyhhLk0sRi5ELlVhKSx5PUIucmVmZXJyZXI7VShhLEYuRC5VYSxxP3g/cih5KTp5LnJlcGxhY2UoLyMuKiQvLCIiKTpCLnJlZmVycmVyP0xqKFJqKEIucmVmZXJyZXIpLCJob3N0Iik6IiIpO3dMKGEsdix1LCEwKTtpZihLYyl7dmFyIHo9TGooUmooS2MpLCJob3N0Iik7eiYmVShhLEYuRC5ibSx6KX1pZighUShhLEguSi5XZSkpe3ZhciBDPWF0KCk7VShhLEYuRC56ZixDLkRnKTtVKGEsRi5ELkFmLEMuU3IpfXZhciBEPVVNKCk7VE0oRCkmJlUoYSxGLkQuUGQsIjEiKTtVKGEsRi5ELkRsLFFNKCkpO1VxKCExKS5fdXA9PT0iMSImJlUoYSxGLkQuUWwsIjEiKX13by5IPSEwO1UoYSxGLkQuU2IpO1UoYSxGLkQubGIpO2lmKE0oNDIxKSl7dmFyIEk9RnIoZSk7CkkubGVuZ3RoPjAmJlUoYSxGLkQuU2IsSS5qb2luKCIuIikpO3ZhciBHPURyKGYrIl9hdyIpO0cubGVuZ3RoPjAmJlUoYSxGLkQubGIsRy5qb2luKCIuIikpfWVsc2UgaWYoIVIoYSxGLkQuRGQpJiYhUihhLEYuRC5LZCkmJldzKGYpKXt2YXIgTj1GcihlKTtOLmxlbmd0aD4wJiZVKGEsRi5ELlNiLE4uam9pbigiLiIpKX1lbHNlIGlmKCFSKGEsRi5ELkVlKSYmYil7dmFyIFM9RHIoZisiX2F3Iik7Uy5sZW5ndGg+MCYmVShhLEYuRC5sYixTLmpvaW4oIi4iKSl9VShhLEYuRC5VbCxxZCgpKTthLk0uaXNHdG1FdmVudCYmKGEuTS5FYVtGLkQuUmNdPWZEKEYuRC5SYykpO1N0KGEuTSk/VShhLEYuRC5kZSwhMSk6VShhLEYuRC5kZSwhMCk7VihhLEguSi5CaywhMCk7dmFyIFc9Vk0oKTtXIT09dm9pZCAwJiZVKGEsRi5ELmtnLFd8fCJlcnJvciIpO3ZhciBlYT1MdCgpO2VhJiZVKGEsRi5ELktlLGVhKTt2YXIgamE9S3QoKTtqYSYmVShhLEYuRC5PZSxqYSk7UShhLEguSi5QYyl8fFYoYSxILkouSmEsCiExKX19Owp2YXIgWE09ZnVuY3Rpb24oYSxiLGMpe2I9Yj09PXZvaWQgMD8hMDpiO2M9Yz09PXZvaWQgMD97fTpjO2lmKGEuZXZlbnROYW1lPT09Ri5ELkpiJiYhYS5NLmlzR3RtRXZlbnQpe3ZhciBkPU8oYS5NLEYuRC5TZik7aWYodHlwZW9mIGQ9PT0iZnVuY3Rpb24iJiYhUShhLEguSi5zYSkpe3ZhciBlPVN0cmluZyhPKGEuTSxGLkQuVGYpKSxmPWU7Y1tlXSYmKGY9Y1tlXSk7dmFyIGc9UihhLGYpfHxPKGEuTSxlKTtpZihiKXtpZih0eXBlb2YgZD09PSJmdW5jdGlvbiIpaWYoZT09PUYuRC5sYiYmZyE9PXZvaWQgMCl7dmFyIGg9Zy5zcGxpdCgiLiIpO2gubGVuZ3RoPT09MD9kKHZvaWQgMCk6aC5sZW5ndGg9PT0xP2QoaFswXSk6ZChoKX1lbHNlIGlmKGU9PT1GLkQucXEmJk0oMjU4KSl7dmFyIGwsbj17fTtYbyhmcCkmJihuLmF1aWQ9UihhLEYuRC5FZCkpO3ZhciBwPVVNKCk7aWYoVE0ocCkpbi5nYWRfc291cmNlPXAuRGcsbi5nYWRfY2FtcGFpZ25pZD1wLlRoLG4uc2Vzc2lvbl9zdGFydF90aW1lX3VzZWM9CihEYXRlLm5vdygpKjFFMykudG9TdHJpbmcoKSxuLmxhbmRpbmdfcGFnZV91cmw9QS5sb2NhdGlvbi5ocmVmLG4ubGFuZGluZ19wYWdlX3JlZmVycmVyPUIucmVmZXJyZXIsbi5sYW5kaW5nX3BhZ2VfdXNlcl9hZ2VudD1IYy51c2VyQWdlbnQ7ZWxzZXt2YXIgcT1RKGEsSC5KLkdhKTtuLmdhZF9zb3VyY2U9UnMocS5wcmVmaXgpLkVnfWw9YnRvYShKU09OLnN0cmluZ2lmeShuKSkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKTtkKGwpfWVsc2UgZChnKX1lbHNlIGQoZyl9YS5pc0Fib3J0ZWQ9ITB9fTt2YXIgWU09ZnVuY3Rpb24oYSl7aWYoTSg0MjUpJiZRKGEsSC5KLkZjKSl7Zm9yKHZhciBiPVsiXyZhcHZjIiwidGlkcyIsRi5ELlRhLEYuRC5RaSxGLkQuVWIsRi5ELlFlLEYuRC5WYyxGLkQuWGNdLGM9bShldShhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7aWYoZT09PUYuRC56YSl7dmFyIGY9UihhLGUpO2YmJihmPWYucmVwbGFjZSgvW1w/I10uKiQvLCIiKSk7VShhLGUsZil9ZWxzZSBiLmluY2x1ZGVzKGUpfHxVKGEsZSl9VihhLEguSi5YZyk7VihhLEguSi5oZCl9fTtmdW5jdGlvbiBaTShhKXtpZihmbi5LKWlmKHdvLkg9ITAsYS5ldmVudE5hbWU9PT1GLkQud2Epem8oYS5NLGEudGFyZ2V0LmlkKTtlbHNle1EoYSxILkouUGMpfHwod28uS1thLnRhcmdldC5pZF09ITApO3ZhciBiPVEoYSxILkouTmIpO1pCKGIpfX07dmFyICRNPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yj09PXZvaWQgMD97fTpiO2M9Zi5Taj09PXZvaWQgMD8hMTpmLlNqO2Q9Zi5Naj09PXZvaWQgMD8hMTpmLk1qO2U9Zi5rbz09PXZvaWQgMD8hMTpmLmtvO2R8fChhLk0uaXNHdG1FdmVudD9RKGEsSC5KLmRhKSE9PVguVi54YSYmYS5ldmVudE5hbWUmJlUoYSxGLkQuVWIsYS5ldmVudE5hbWUpOlUoYSxGLkQuVWIsYS5ldmVudE5hbWUpKTtHYihhLk0uRWEsZnVuY3Rpb24oZyxoKXtNeltnXXx8YyYmQm9bZ118fGUmJk96W2ddfHxVKGEsZyxoKX0pfTt2YXIgYU49ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW0oW0YuRC5QYSxGLkQuUWEsRi5ELmViLEYuRC5OZSxGLkQuR2UsRi5ELlVkLEYuRC5JZSxGLkQuVGMsRi5ELkxkLEYuRC5raCxGLkQuRmYsRi5ELkRmLEYuRC5FZixGLkQuQ2YsRi5ELndpLEYuRC5TZCxGLkQuUWQsRi5ELlJkLEYuRC50Yl0pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWEuY29weVRvSGl0RGF0YShjLnZhbHVlKX07ZnVuY3Rpb24gYk4oYSxiKXtyZXR1cm4ga3IoImdzaWRfZGMiLHt2YWx1ZTp7am9pbklkOmEsbGFzdEpvaW5lZFRpbWVNczpifSxleHBpcmVzOmIrM0U1fSk9PT0wPyEwOiExfTsKdmFyIGNOPWZ1bmN0aW9uKGEpe2lmKFhvKGZwKSl7dmFyIGI7YTp7dmFyIGM9bnIoImdzaWRfZGMiKTtpZihjLmVycm9yPT09MCYmYy52YWx1ZSYmdHlwZW9mIGMudmFsdWU9PT0ib2JqZWN0Iil7dmFyIGQ9Yy52YWx1ZTtpZihkLnZhbHVlJiZ0eXBlb2YgZC52YWx1ZT09PSJvYmplY3QiKXt2YXIgZT1kLnZhbHVlO2lmKGUuam9pbklkJiZlLmxhc3RKb2luZWRUaW1lTXMmJnR5cGVvZiBlLmpvaW5JZD09PSJzdHJpbmciJiZ0eXBlb2YgZS5sYXN0Sm9pbmVkVGltZU1zPT09Im51bWJlciIpe2I9ZTticmVhayBhfX19Yj12b2lkIDB9dmFyIGY9YixnPWY9PW51bGw/dm9pZCAwOmYuam9pbklkLGg9TmIoKTtpZighZnx8IWd8fGYubGFzdEpvaW5lZFRpbWVNczxoLTNFNSl7dmFyIGw9Y2MoKTtnPWwmJmJOKGwsTmIoKSk/bDp2b2lkIDA7ZyYmVihhLEguSi5oZCwhMCl9ZWxzZSBnJiZmLmxhc3RKb2luZWRUaW1lTXM8aC02RTQmJmJOKGYuam9pbklkLGgpJiZWKGEsSC5KLmhkLCEwKTtnJiZNKDQ3NCkmJgpWKGEsSC5KLlhnLGcpfX07dmFyIGROPWZ1bmN0aW9uKGEpe1YoYSxILkoud2YsTyhhLk0sRi5ELnVjKSE9PSExKTtWKGEsSC5KLkdhLExLKGEpKTtWKGEsSC5KLlhlLE8oYS5NLEYuRC5tYikhPW51bGwmJk8oYS5NLEYuRC5tYikhPT0hMSk7VihhLEguSi53ZCxTdChhLk0pKX07dmFyIGVOPXt6cTp7VXQ6ImNkIixmcDoiY2UiLFZ0OiJjZiIsV3Q6ImNwZiIsWHQ6ImN1In19O3ZhciBmTj1mdW5jdGlvbihhKXt2YXIgYj1lTi56cS5mcCxjPU8oYS5NLEYuRC5DYik7UihhLEYuRC5lZCl8fFUoYSxGLkQuZWQse30pO1IoYSxGLkQuZWQpW2JdPWN9O2Z1bmN0aW9uIGdOKGEsYil7Yj1iPT09dm9pZCAwPyEwOmI7dmFyIGM9d2IocmIuR1RBR19FVkVOVF9GRUFUVVJFX0NIQU5ORUx8fFtdKTtjJiYoVShhLEYuRC5WZixjKSxiJiZ1YigpKX07dmFyIGhOPWZ1bmN0aW9uKGEpe3ZhciBiPWEuTS5nZXRNZXJnZWRWYWx1ZXMoRi5ELlRhKTtiJiZhLm1lcmdlSGl0RGF0YUZvcktleShGLkQuVGEsYil9O3ZhciBpTj1mdW5jdGlvbihhKXt2YXIgYj1PcCghMSk7VShhLEYuRC5NZSxiKX07dmFyIGpOPWZ1bmN0aW9uKGEpe1EoYSxILkoud2QpP1UoYSxGLkQuZGUsIjAiKTpVKGEsRi5ELmRlLCIxIil9O3ZhciBrTj1mdW5jdGlvbihhLGIpe2lmKGI9PT12b2lkIDB8fGIpe3ZhciBjPVZNKCk7YyE9PXZvaWQgMCYmVShhLEYuRC5rZyxjfHwiZXJyb3IiKX12YXIgZD1MdCgpO2QmJlUoYSxGLkQuS2UsZCk7dmFyIGU9S3QoKTtlJiZVKGEsRi5ELk9lLGUpfTt2YXIgbE49ZnVuY3Rpb24oYSl7dmFyIGI9bm0oam0uYmEua2opLGM9RSg1KTtiJiZiW2NdJiZhLm1lcmdlSGl0RGF0YUZvcktleShGLkQuVGEse3JldHJ5OiIxIn0pfTt2YXIgbU49ZnVuY3Rpb24oYSl7VXEoITEpLl91cD09PSIxIiYmVShhLEYuRC5LaSwiMSIpfTsKdmFyIG5OPWZ1bmN0aW9uKGEsYixjKXtpZihhIT09dm9pZCAwKXJldHVybiBBcnJheS5pc0FycmF5KGEpP2EubWFwKGZ1bmN0aW9uKCl7cmV0dXJue21vZGU6Im0iLGxvY2F0aW9uOmIsc2VsZWN0b3I6Y319KTp7bW9kZToibSIsbG9jYXRpb246YixzZWxlY3RvcjpjfX0sb049ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWMpcmV0dXJuITE7Zm9yKHZhciBlPVN0cmluZyhjLnZhbHVlKSxmLGc9dm9pZCAwLGg9ZS5yZXBsYWNlKC9cWyI/Jz8vZywiLiIpLnJlcGxhY2UoLyI/Jz9cXS9nLCIiKS5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbih1KXtyZXR1cm4gdS50cmltKCl9KS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIHUmJiFTYih1LCIjIikmJiFTYih1LCIuIil9KSxsPTA7bDxoLmxlbmd0aDtsKyspe3ZhciBuPWhbbF07aWYoU2IobiwiZGF0YUxheWVyLiIpKWY9dUEobi5zdWJzdHJpbmcoMTApKSxnPW5OKGYsImQiLG4pO2Vsc2V7dmFyIHA9bi5zcGxpdCgiLiIpO2Y9QVtwLnNoaWZ0KCldOwpmb3IodmFyIHE9MDtxPHAubGVuZ3RoO3ErKylmPWYmJmZbcFtxXV07Zz1uTihmLCJqIixuKX1pZihmIT09dm9pZCAwKWJyZWFrfWlmKGY9PT12b2lkIDApdHJ5e3ZhciByPUIucXVlcnlTZWxlY3RvckFsbChlKTtpZihyJiZyLmxlbmd0aD4wKXtmPVtdO2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGgmJnQ8KGI9PT0iZW1haWwifHxiPT09InBob25lX251bWJlciI/NToxKTt0KyspZi5wdXNoKGZkKHJbdF0pfHxMYihyW3RdLnZhbHVlKSk7Zj1mLmxlbmd0aD09PTE/ZlswXTpmO2c9bk4oZiwiYyIsZSl9fWNhdGNoKHUpe1AoMTQ5KX1yZXR1cm4gZj8oYVtiXT1mLGQmJmcmJihkW2JdPWcpLCEwKTohMX07CnZhciBwTj1mdW5jdGlvbihhKXtpZihkSShhLCJjY2RfYWRkXzFwX2RhdGEiLCExKSYmWG8oZnApKXt2YXIgYj1hLk0uaWJbRi5ELmxtXTtpZihDZChiKSYmYi5lbmFibGVfY29kZSl7dmFyIGM9TyhhLk0sRi5ELkFjKTtpZihjPT09bnVsbClWKGEsSC5KLkduLG51bGwpO2Vsc2UgaWYoYi5lbmFibGVfY29kZSYmQ2QoYykmJihadihjKSxWKGEsSC5KLkduLGMpKSxDZChiLnNlbGVjdG9ycykpe3ZhciBkPUguSi5pcixlO3ZhciBmPWIuc2VsZWN0b3JzLGc9TSg1MjMpO2c9Zz09PXZvaWQgMD8hMTpnO2lmKGYpe3ZhciBoPXt9LGw9ITEsbj17fTtsPW9OKGgsImVtYWlsIixmLmVtYWlsLG4pfHxsO2w9b04oaCwicGhvbmVfbnVtYmVyIixmLnBob25lLG4pfHxsO2guYWRkcmVzcz1bXTtmb3IodmFyIHA9Zi5uYW1lX2FuZF9hZGRyZXNzfHxbXSxxPTA7cTxwLmxlbmd0aDtxKyspe3ZhciByPXt9LHQ9e307bD1vTihyLCJmaXJzdF9uYW1lIixwW3FdLmZpcnN0X25hbWUsdCl8fGw7bD1vTihyLAoibGFzdF9uYW1lIixwW3FdLmxhc3RfbmFtZSx0KXx8bDtsPW9OKHIsInN0cmVldCIscFtxXS5zdHJlZXQsdCl8fGw7bD1vTihyLCJjaXR5IixwW3FdLmNpdHksdCl8fGw7bD1vTihyLCJyZWdpb24iLHBbcV0ucmVnaW9uLHQpfHxsO2w9b04ociwiY291bnRyeSIscFtxXS5jb3VudHJ5LHQpfHxsO2w9b04ociwicG9zdGFsX2NvZGUiLHBbcV0ucG9zdGFsX2NvZGUsdCl8fGw7aC5hZGRyZXNzLnB1c2gocik7ZyYmKHIuX3RhZ19tZXRhZGF0YT10KX1nJiYoaC5fdGFnX21ldGFkYXRhPW4pO2U9bD9oOnZvaWQgMH1lbHNlIGU9dm9pZCAwO1YoYSxkLGUpfX19fTtmdW5jdGlvbiBGTyhhLGIsYyxkKXt9Rk8uUD0iaW50ZXJuYWwuZXhlY3V0ZUV2ZW50UHJvY2Vzc29yIjtmdW5jdGlvbiBHTyhhKXt2YXIgYjtyZXR1cm4gVWQoYix0aGlzLlQsMSl9R08uUD0iaW50ZXJuYWwuZXhlY3V0ZUphdmFzY3JpcHRTdHJpbmciO2Z1bmN0aW9uIEhPKGEpe3ZhciBiO2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIl0sYXJndW1lbnRzKTt2YXIgYz1BO3RyeXtiPUtqKGMuZXNjYXBlKGMuYXRvYihhKSkpfWNhdGNoKGQpe3JldHVybn1yZXR1cm4gYn07ZnVuY3Rpb24gSU8oYSl7dmFyIGI9IiI7cmV0dXJuIGJ9SU8uUD0iaW50ZXJuYWwuZ2VuZXJhdGVDbGllbnRJZCI7ZnVuY3Rpb24gSk8oYSl7dmFyIGI9e307cmV0dXJuIFVkKGIpfUpPLlA9ImludGVybmFsLmdldEFkc0Nvb2tpZVdyaXRpbmdPcHRpb25zIjtmdW5jdGlvbiBLTyhhLGIpe3ZhciBjPSExO3JldHVybiBjfUtPLlA9ImludGVybmFsLmdldEFsbG93QWRQZXJzb25hbGl6YXRpb24iO2Z1bmN0aW9uIExPKCl7dmFyIGE7cmV0dXJuIGF9TE8uUD0iaW50ZXJuYWwuZ2V0QW5kUmVzZXRFdmVudFVzYWdlIjtmdW5jdGlvbiBNTyhhLGIpe2I9Yj09PXZvaWQgMD8hMDpiO3ZhciBjO3JldHVybiBjfU1PLlA9ImludGVybmFsLmdldEF1aWQiO2Z1bmN0aW9uIE5PKCl7dmFyIGE9W107cmV0dXJuIFVkKGEpfU5PLlA9ImludGVybmFsLmdldENvbnRhaW5lcklkcyI7ZnVuY3Rpb24gT08oKXt2YXIgYT1uZXcga2I7TCh0aGlzLCJyZWFkX2NvbnRhaW5lcl9kYXRhIiksYS5zZXQoImNvbnRhaW5lcklkIixpZyksYS5zZXQoInZlcnNpb24iLGtnKSxhLnNldCgiZW52aXJvbm1lbnROYW1lIixqZyksYS5zZXQoImRlYnVnTW9kZSIsbGcpLGEuc2V0KCJwcmV2aWV3TW9kZSIsbWcuUG8pLGEuc2V0KCJlbnZpcm9ubWVudE1vZGUiLG1nLktyKSxhLnNldCgiZmlyc3RQYXJ0eVNlcnZpbmciLGFrKCkpLGEuc2V0KCJjb250YWluZXJVcmwiLEtjKSxhLnNldCgiaXNHb29nbGVPbmx5TW9kZSIsSWYoNjIpKSxhLlphKCk7cmV0dXJuIGF9T08ucHVibGljTmFtZT0iZ2V0Q29udGFpbmVyVmVyc2lvbiI7ZnVuY3Rpb24gUE8oYSxiKXtiPWI9PT12b2lkIDA/ITA6Yjt2YXIgYztyZXR1cm4gY31QTy5wdWJsaWNOYW1lPSJnZXRDb29raWVWYWx1ZXMiO2Z1bmN0aW9uIFFPKCl7dmFyIGE9IiI7cmV0dXJuIGF9UU8uUD0iaW50ZXJuYWwuZ2V0Q29yZVBsYXRmb3JtU2VydmljZXNQYXJhbSI7ZnVuY3Rpb24gUk8oKXtyZXR1cm4geW0oKX1STy5QPSJpbnRlcm5hbC5nZXRDb3VudHJ5Q29kZSI7ZnVuY3Rpb24gU08oKXt2YXIgYT1bXTthPXRrKCk7cmV0dXJuIFVkKGEpfVNPLlA9ImludGVybmFsLmdldERlc3RpbmF0aW9uSWRzIjtmdW5jdGlvbiBUTyhhKXt2YXIgYj1uZXcga2I7cmV0dXJuIGJ9VE8uUD0iaW50ZXJuYWwuZ2V0RGV2ZWxvcGVySWRzIjtmdW5jdGlvbiBVTyhhKXt2YXIgYjtyZXR1cm4gYn1VTy5QPSJpbnRlcm5hbC5nZXRFY3NpZENvb2tpZVZhbHVlIjtmdW5jdGlvbiBWTyhhLGIpe3ZhciBjPW51bGw7cmV0dXJuIGN9Vk8uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudEF0dHJpYnV0ZSI7ZnVuY3Rpb24gV08oYSl7dmFyIGI9bnVsbDtyZXR1cm4gYn1XTy5QPSJpbnRlcm5hbC5nZXRFbGVtZW50QnlJZCI7ZnVuY3Rpb24gWE8oYSl7dmFyIGI9IiI7cmV0dXJuIGJ9WE8uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudElubmVyVGV4dCI7ZnVuY3Rpb24gWU8oYSl7dmFyIGI9bnVsbDtyZXR1cm4gYn1ZTy5QPSJpbnRlcm5hbC5nZXRFbGVtZW50UGFyZW50IjtmdW5jdGlvbiBaTyhhKXt2YXIgYj1udWxsO3JldHVybiBifVpPLlA9ImludGVybmFsLmdldEVsZW1lbnRQcmV2aW91c1NpYmxpbmciO2Z1bmN0aW9uICRPKGEsYil7dmFyIGM9bnVsbDtyZXR1cm4gVWQoYyl9JE8uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFByb3BlcnR5IjtmdW5jdGlvbiBhUChhKXt2YXIgYjtyZXR1cm4gYn1hUC5QPSJpbnRlcm5hbC5nZXRFbGVtZW50VmFsdWUiO2Z1bmN0aW9uIGJQKGEpe3ZhciBiPTA7cmV0dXJuIGJ9YlAuUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFZpc2liaWxpdHlSYXRpbyI7ZnVuY3Rpb24gY1AoYSl7dmFyIGI9bnVsbDtyZXR1cm4gYn1jUC5QPSJpbnRlcm5hbC5nZXRFbGVtZW50c0J5Q3NzU2VsZWN0b3IiOwpmdW5jdGlvbiBkUChhKXt2YXIgYjtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7TCh0aGlzLCJyZWFkX2V2ZW50X2RhdGEiLGEpO3ZhciBjO2E6e3ZhciBkPWEsZT1YRih0aGlzKS5vcmlnaW5hbEV2ZW50RGF0YTtpZihlKXtmb3IodmFyIGY9ZSxnPXt9LGg9e30sbD17fSxuPVtdLHA9ZC5zcGxpdCgiXFxcXCIpLHE9MDtxPHAubGVuZ3RoO3ErKyl7Zm9yKHZhciByPXBbcV0uc3BsaXQoIlxcLiIpLHQ9MDt0PHIubGVuZ3RoO3QrKyl7Zm9yKHZhciB1PXJbdF0uc3BsaXQoIi4iKSx2PTA7djx1Lmxlbmd0aDt2Kyspbi5wdXNoKHVbdl0pLHYhPT11Lmxlbmd0aC0xJiZuLnB1c2gobCk7dCE9PXIubGVuZ3RoLTEmJm4ucHVzaChoKX1xIT09cC5sZW5ndGgtMSYmbi5wdXNoKGcpfWZvcih2YXIgeD1bXSx5PSIiLHo9bShuKSxDPXoubmV4dCgpOyFDLmRvbmU7Qz0Kei5uZXh0KCkpe3ZhciBEPUMudmFsdWU7RD09PWw/KHgucHVzaCh5KSx5PSIiKTp5PUQ9PT1nP3krIlxcIjpEPT09aD95KyIuIjp5K0R9eSYmeC5wdXNoKHkpO2Zvcih2YXIgST1tKHgpLEc9SS5uZXh0KCk7IUcuZG9uZTtHPUkubmV4dCgpKXtpZihmPT1udWxsKXtjPXZvaWQgMDticmVhayBhfWY9ZltHLnZhbHVlXX1jPWZ9ZWxzZSBjPXZvaWQgMH1iPVVkKGMsdGhpcy5ULDEpO3JldHVybiBifWRQLlA9ImludGVybmFsLmdldEV2ZW50RGF0YSI7ZnVuY3Rpb24gZVAoYSl7dmFyIGI9bnVsbDtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7TCh0aGlzLCJyZWFkX2RvbV9lbGVtZW50cyIsImNzcyIsYSk7dHJ5e3ZhciBjPUIucXVlcnlTZWxlY3RvcihhKTtjJiYoYj1uZXcgUGQoYykpfWNhdGNoKGQpe3JldHVybiBudWxsfXJldHVybiBifWVQLlA9ImludGVybmFsLmdldEZpcnN0RWxlbWVudEJ5Q3NzU2VsZWN0b3IiO2Z1bmN0aW9uIGZQKCl7dmFyIGE7cmV0dXJuIGF9ZlAuUD0iaW50ZXJuYWwuZ2V0R3NhRXhwZXJpbWVudElkIjtmdW5jdGlvbiBnUCgpe3JldHVybiBuZXcgUGQoUGspfWdQLlA9ImludGVybmFsLmdldEh0bWxJZCI7ZnVuY3Rpb24gaFAoKXt2YXIgYTtyZXR1cm4gYX1oUC5QPSJpbnRlcm5hbC5nZXRJZnJhbWluZ1N0YXRlIjtmdW5jdGlvbiBpUChhLGIpe3ZhciBjPXt9O3JldHVybiBVZChjKX1pUC5QPSJpbnRlcm5hbC5nZXRMaW5rZXJWYWx1ZUZyb21Mb2NhdGlvbiI7ZnVuY3Rpb24galAoKXt2YXIgYT1uZXcga2I7cmV0dXJuIGF9alAuUD0iaW50ZXJuYWwuZ2V0UHJpdmFjeVN0cmluZ3MiO2Z1bmN0aW9uIGtQKGEsYil7dmFyIGM7aWYoIWxoKGEpfHwhbGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInN0cmluZyJdLGFyZ3VtZW50cyk7dmFyIGQ9JEgoYSl8fHt9O2M9VWQoZFtiXSx0aGlzLlQpO3JldHVybiBjfWtQLlA9ImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciI7ZnVuY3Rpb24gbFAoYSxiKXt2YXIgYztpZighbGgoYSl8fCFwaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiYm9vbGVhbnx1bmRlZmluZWQiXSxhcmd1bWVudHMpO0wodGhpcywiZ2V0X3VybCIsInF1ZXJ5IixhKTt2YXIgZD1MaihSaihBLmxvY2F0aW9uLmhyZWYpLCJxdWVyeSIpLGU9SWooZCxhLGIpO2M9VWQoZSx0aGlzLlQpO3JldHVybiBjfWxQLnB1YmxpY05hbWU9ImdldFF1ZXJ5UGFyYW1ldGVycyI7ZnVuY3Rpb24gbVAoYSxiKXt2YXIgYztyZXR1cm4gY31tUC5wdWJsaWNOYW1lPSJnZXRSZWZlcnJlclF1ZXJ5UGFyYW1ldGVycyI7ZnVuY3Rpb24gblAoYSl7dmFyIGI9IiI7cmV0dXJuIGJ9blAucHVibGljTmFtZT0iZ2V0UmVmZXJyZXJVcmwiO2Z1bmN0aW9uIG9QKCl7cmV0dXJuIHptKCl9b1AuUD0iaW50ZXJuYWwuZ2V0UmVnaW9uQ29kZSI7ZnVuY3Rpb24gcFAoYSxiKXt2YXIgYztpZighbGgoYSl8fCFsaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwic3RyaW5nIl0sYXJndW1lbnRzKTt2YXIgZD1lRChhKTtjPVVkKGRbYl0sdGhpcy5UKTtyZXR1cm4gY31wUC5QPSJpbnRlcm5hbC5nZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiO2Z1bmN0aW9uIHFQKGEsYil7dmFyIGM9bnVsbDsKcmV0dXJuIGN9cVAuUD0iaW50ZXJuYWwuZ2V0U2NvcGVkRWxlbWVudHNCeUNzc1NlbGVjdG9yIjtmdW5jdGlvbiByUCgpe3ZhciBhPW5ldyBrYjthLnNldCgid2lkdGgiLDApO2Euc2V0KCJoZWlnaHQiLDApO3JldHVybiBhfXJQLlA9ImludGVybmFsLmdldFNjcmVlbkRpbWVuc2lvbnMiO2Z1bmN0aW9uIHNQKCl7dmFyIGE9IiI7cmV0dXJuIGF9c1AuUD0iaW50ZXJuYWwuZ2V0VG9wU2FtZURvbWFpblVybCI7ZnVuY3Rpb24gdFAoKXt2YXIgYT0iIjtyZXR1cm4gYX10UC5QPSJpbnRlcm5hbC5nZXRUb3BXaW5kb3dVcmwiO2Z1bmN0aW9uIHVQKGEpe3ZhciBiPSIiO2lmKCFtaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nfHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7TCh0aGlzLCJnZXRfdXJsIixhKTtiPUxqKFJqKEEubG9jYXRpb24uaHJlZiksYSk7cmV0dXJuIGJ9dVAucHVibGljTmFtZT0iZ2V0VXJsIjtmdW5jdGlvbiB2UCgpe0wodGhpcywiZ2V0X3VzZXJfYWdlbnQiKTtyZXR1cm4gSGMudXNlckFnZW50fXZQLnB1YmxpY05hbWU9ImdldFVzZXJBZ2VudCI7dlAuUD0iaW50ZXJuYWwuZ2V0VXNlckFnZW50IjtmdW5jdGlvbiB3UCgpe3ZhciBhO3JldHVybiBhP1VkKEVNKGEpKTphfXdQLlA9ImludGVybmFsLmdldFVzZXJBZ2VudENsaWVudEhpbnRzIjt2YXIgeVA9ZnVuY3Rpb24oYSl7dmFyIGI9YS5ldmVudE5hbWU9PT1GLkQuc2MmJkVsKCkmJmJrKFpLKGEpKSxjPVEoYSxILkouZG4pLGQ9UShhLEguSi5LayksZT1RKGEsSC5KLm1nKSxmPVEoYSxILkouVGUpLGc9UShhLEguSi5GYyksaD1RKGEsSC5KLmhkKSxsPVEoYSxILkoucmcpLG49UShhLEguSi5NaCkscD1RKGEsSC5KLk5oKSxxPSEhWUsoYSl8fCEhUShhLEguSi5wcCk7cmV0dXJuISghbmQoKSYmIWtkKCl8fGV8fHF8fGZ8fGd8fGh8fGx8fHB8fG58fGJ8fGN8fCFkJiZ4UCgpKX0seFA9ZnVuY3Rpb24oKXtyZXR1cm4gYWwoOSxmdW5jdGlvbigpe3JldHVybiExfSl9O2Z1bmN0aW9uIHpQKCl7dmFyIGE9QTtyZXR1cm4gYS5nYUdsb2JhbD1hLmdhR2xvYmFsfHx7fX1mdW5jdGlvbiBBUChhLGIpe3ZhciBjPXpQKCk7aWYoYy52aWQ9PT12b2lkIDB8fGImJiFjLmZyb21fY29va2llKWMudmlkPWEsYy5mcm9tX2Nvb2tpZT1ifTt2YXIgQlA9WyJHQTEiXTsKdmFyIENQPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1RKGEsSC5KLlBrKTtpZihkPT09dm9pZCAwfHxjPD1kKVUoYSxGLkQuS2IsYiksVihhLEguSi5QayxjKX0sRVA9ZnVuY3Rpb24oYSxiKXt2YXIgYz1SKGEsRi5ELktiKTtpZihPKGEuTSxGLkQuWmMpJiZPKGEuTSxGLkQuWWMpfHxiJiZjPT09YilyZXR1cm4gYztpZihjKXtjPSIiK2M7aWYoIURQKGMsYSkpcmV0dXJuIFAoMzEpLGEuaXNBYm9ydGVkPSEwLCIiO0FQKGMsWG8oRi5ELnJhKSk7cmV0dXJuIGN9UCgzMik7YS5pc0Fib3J0ZWQ9ITA7cmV0dXJuIiJ9LEZQPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouR2EpLGM9Yi5wcmVmaXgrIl9nYSIsZD1CdihiLnByZWZpeCsiX2dhIixiLmRvbWFpbixiLnBhdGgsQlAsRi5ELnJhKTtpZighZCl7dmFyIGU9U3RyaW5nKE8oYS5NLEYuRC5JZCwiIikpO2UmJmUhPT1jJiYoZD1CdihlLGIuZG9tYWluLGIucGF0aCxCUCxGLkQucmEpKX1yZXR1cm4gZH0sRFA9ZnVuY3Rpb24oYSxiKXt2YXIgYzsKdmFyIGQ9UShiLEguSi5HYSksZT1kLnByZWZpeCsiX2dhIixmPXVxKGQsdm9pZCAwLHZvaWQgMCxGLkQucmEpO2lmKE8oYi5NLEYuRC5KZCk9PT0hMSYmRlAoYik9PT1hKWM9ITA7ZWxzZXt2YXIgZztnPVtCUFswXSx0cShkLmRvbWFpbixkLnBhdGgpLGFdLmpvaW4oIi4iKTtjPW9xKGUsZyxmKSE9PTF9cmV0dXJuIGN9Owp2YXIgR1A9ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPTA7cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7Yj1OYigpfSxzdG9wOmZ1bmN0aW9uKCl7Yz10aGlzLmdldCgpfSxnZXQ6ZnVuY3Rpb24oKXt2YXIgZD0wO2EuVmooKSYmKGQ9TmIoKS1iKTtyZXR1cm4gZCtjfX19LEhQPWZ1bmN0aW9uKCl7dGhpcy5IPXZvaWQgMDt0aGlzLks9MDt0aGlzLmlzQWN0aXZlPXRoaXMuaXNWaXNpYmxlPXRoaXMuTj0hMTt0aGlzLlo9dGhpcy5SPXZvaWQgMH07az1IUC5wcm90b3R5cGU7ay5LcT1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2lmKCF0aGlzLkgpe3RoaXMuTj1CLmhhc0ZvY3VzKCk7dGhpcy5pc1Zpc2libGU9IUIuaGlkZGVuO3RoaXMuaXNBY3RpdmU9ITA7dmFyIGM9ZnVuY3Rpb24oZSxmLGcpeyRjKGUsZixmdW5jdGlvbihoKXtiLkguc3RvcCgpO2coaCk7Yi5WaigpJiZiLkguc3RhcnQoKX0pfSxkPUE7YyhkLCJmb2N1cyIsZnVuY3Rpb24oKXtiLk49ITB9KTtjKGQsImJsdXIiLGZ1bmN0aW9uKCl7Yi5OPQohMX0pO2MoZCwicGFnZXNob3ciLGZ1bmN0aW9uKGUpe2IuaXNBY3RpdmU9ITA7ZS5wZXJzaXN0ZWQmJlAoNTYpO2IuWiYmYi5aKCl9KTtjKGQsInBhZ2VoaWRlIixmdW5jdGlvbigpe2IuaXNBY3RpdmU9ITE7Yi5SJiZiLlIoKX0pO2MoQiwidmlzaWJpbGl0eWNoYW5nZSIsZnVuY3Rpb24oKXtiLmlzVmlzaWJsZT0hQi5oaWRkZW59KTtiayhaSyhhKSkmJiFPYygpJiZjKGQsImJlZm9yZXVubG9hZCIsZnVuY3Rpb24oKXtaayg5LCEwKX0pO3RoaXMucWsoITApO3RoaXMuSz0wfX07ay5xaz1mdW5jdGlvbihhKXtpZigoYT09PXZvaWQgMD8wOmEpfHx0aGlzLkgpdGhpcy5LKz10aGlzLlloKCksdGhpcy5IPUdQKHRoaXMpLHRoaXMuVmooKSYmdGhpcy5ILnN0YXJ0KCl9O2suS3Q9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5ZaCgpO2I+MCYmVShhLEYuRC5uaCxiKX07ay5scz1mdW5jdGlvbihhKXtVKGEsRi5ELm5oKTt0aGlzLnFrKCk7dGhpcy5LPTB9O2suVmo9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OJiYKdGhpcy5pc1Zpc2libGUmJnRoaXMuaXNBY3RpdmV9O2suWHI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LK3RoaXMuWWgoKX07ay5ZaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkgmJnRoaXMuSC5nZXQoKXx8MH07ay5odD1mdW5jdGlvbihhKXt0aGlzLlI9YX07ay5Dbz1mdW5jdGlvbihhKXt0aGlzLlo9YX07dmFyIElQPWZ1bmN0aW9uKGEpe3NiKCJHQTRfRVZFTlQiLGEpfTt2YXIgSlA9ZnVuY3Rpb24oYSl7dmFyIGIsYz1RKGEsSC5KLndtKTtpZihBcnJheS5pc0FycmF5KGMpKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKUlQKGNbZF0pOyhiPXdiKHJiLkdBNF9FVkVOVHx8W10pKSYmVShhLCJfZXUiLGIpfTsKdmFyIE1QPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBSZWdFeHAoIl4iKygoKGE9PW51bGw/dm9pZCAwOmEucHJlZml4KXx8IiIpKyJfZ2FfXFx3KyQiKSksYz15cShmdW5jdGlvbihwKXtyZXR1cm4gYi50ZXN0KHApfSksZD17fSxlO2ZvcihlIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGY9S1AoY1tlXSk7aWYoZil7dmFyIGc9YnEoZiwyKTtpZihnKXt2YXIgaD1MUChnKTtpZihoKXt2YXIgbD12b2lkIDAsbj0oKChsPWEpPT1udWxsP3ZvaWQgMDpsLnByZWZpeCl8fCIiKS5sZW5ndGgrNDtkWyJHLSIrZS5zdWJzdHJpbmcobildPWh9fX19cmV0dXJuIGR9LE5QPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiO2E6e3ZhciBjPShTYihhLCJzIikmJmEuaW5kZXhPZigiLiIpPT09LTE/IkdTMiI6IkdTMSIpKyIuMS4iK2E7dHJ5e2I9JHAoYywyKTticmVhayBhfWNhdGNoKGQpe31iPXZvaWQgMH1yZXR1cm4gYn19LEtQPWZ1bmN0aW9uKGEpe2lmKGEmJmEubGVuZ3RoIT09MCl7Zm9yKHZhciBiLApjPS1JbmZpbml0eSxkPW0oYSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7aWYoZi50IT09dm9pZCAwKXt2YXIgZz1OdW1iZXIoZi50KTshaXNOYU4oZykmJmc+YyYmKGM9ZyxiPWYpfX1yZXR1cm4gYn19LHpxPWZ1bmN0aW9uKGEpe2EmJihhPT09IkdTMSI/SVAoSi5VLkttKTphPT09IkdTMiImJklQKEouVS5MbSkpfSxMUD1mdW5jdGlvbihhKXt2YXIgYj1OUChhKTtpZihiKXt2YXIgYz1OdW1iZXIoYi5vKSxkPU51bWJlcihiLnQpLGU9TnVtYmVyKGIuanx8MCk7Y3x8SVAoSi5VLlVtKTtkfHxJUChKLlUuVG0pO2lzTmFOKGUpJiZJUChKLlUuU20pO2lmKGMmJmQmJiFpc05hTihlKSl7dmFyIGY9Yi5oLGc9ZiYmZiE9PSIwIj9TdHJpbmcoZik6dm9pZCAwLGg9Yi5kP1N0cmluZyhiLmQpOnZvaWQgMCxsPXt9O3JldHVybiBsLnM9U3RyaW5nKGIucyksbC5vPWMsbC5nPSEhTnVtYmVyKGIuZyksbC50PWQsbC5kPWgsbC5qPWUsbC5sPWIubD09PSIxIiwKbC5oPWcsbH19fTsKdmFyIFBQPWZ1bmN0aW9uKGEsYixjKXtpZighYilyZXR1cm4gYTtpZighYSlyZXR1cm4gYjt2YXIgZD1MUChhKTtpZighZClyZXR1cm4gYjt2YXIgZSxmPUliKChlPU8oYy5NLEYuRC55aCkpIT1udWxsP2U6MzApLGc9UShjLEguSi5FYik7aWYoIShNYXRoLmZsb29yKGcvMUUzKT5kLnQrZio2MCkpcmV0dXJuIGE7dmFyIGg9TFAoYik7aWYoIWgpcmV0dXJuIGE7aC5vPWQubysxO3ZhciBsO3JldHVybihsPU9QKGgpKSE9bnVsbD9sOmJ9LFJQPWZ1bmN0aW9uKGEsYil7dmFyIGM9UShiLEguSi5HYSksZD1RUChiLGMpLGU9TlAoYSk7aWYoIWUpcmV0dXJuITE7dmFyIGY9dXEoY3x8e30sdm9pZCAwLHZvaWQgMCx2cS5nZXQoMikpO29xKGQsdm9pZCAwLGYpO3JldHVybiBBcShkLGUsMixjKSE9PTF9LFNQPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouR2EpLGM7dmFyIGQ9UVAoYSxiKSxlO2I6e3ZhciBmPXpxLGc9WnBbMl07aWYoZyl7dmFyIGgsbD1ycShiLmRvbWFpbiksbj1zcShiLnBhdGgpLApwPU9iamVjdC5rZXlzKGcuamkpLHE9dnEuZ2V0KDIpLHI7aWYoaD0ocj1ncShkLGwsbixwLHEpKT09bnVsbD92b2lkIDA6ci5Ccil7dmFyIHQ9JHAoaCwyLGYpO2U9dD94cSh0KTp2b2lkIDA7YnJlYWsgYn19ZT12b2lkIDB9aWYoZSl7dmFyIHU9d3EoZCwyLHpxKTtpZih1JiZ1Lmxlbmd0aD4xKXtJUChKLlUuSm0pO3ZhciB2PUtQKHUpO3YmJnYudCE9PWUudCYmKElQKEouVS5NbSksZT12KX1jPWJxKGUsMil9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY30sVFA9ZnVuY3Rpb24oYSl7dmFyIGI9UShhLEguSi5FYiksYz17fTtjLnM9UihhLEYuRC54Yyk7Yy5vPVIoYSxGLkQuQWgpO3ZhciBkO2Q9UihhLEYuRC56aCk7dmFyIGU9KGMuZz1kLGMudD1NYXRoLmZsb29yKGIvMUUzKSxjLmQ9UShhLEguSi5vZyksYy5qPVEoYSxILkoucGcpfHwwLGMubD0hIVEoYSxILkoucm0pLGMuaD1SKGEsRi5ELm9oKSxjKTtyZXR1cm4gT1AoZSl9LE9QPWZ1bmN0aW9uKGEpe2lmKGEucyYmYS5vKXt2YXIgYj0Ke30sYz0oYi5zPWEucyxiLm89U3RyaW5nKGEubyksYi5nPUliKGEuZyk/IjEiOiIwIixiLnQ9U3RyaW5nKGEudCksYi5qPVN0cmluZyhhLmopLGIubD1hLmw/IjEiOiIwIixiLmg9YS5ofHwiMCIsYi5kPWEuZCxiKTtyZXR1cm4gYnEoYywyKX19LFFQPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIucHJlZml4KyJfZ2FfIithLnRhcmdldC5pZHNbZENbNl1dfTsKdmFyIFVQPWZ1bmN0aW9uKCl7cmV0dXJuIGFsKDIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pfSxWUD1mdW5jdGlvbihhKXt2YXIgYj1PKGEuTSxGLkQuRGIpLGM9YS5NLmliW0YuRC5EYl07aWYoYz09PWIpcmV0dXJuIGM7dmFyIGQ9RWQoYixudWxsKTtjJiZjW0YuRC5BYV0mJihkW0YuRC5BYV09KGRbRi5ELkFhXXx8W10pLmNvbmNhdChjW0YuRC5BYV0pKTtyZXR1cm4gZH0sV1A9ZnVuY3Rpb24oYSxiKXt2YXIgYz1VcSghMCk7cmV0dXJuIGMuX3VwIT09IjEiP3t9OntjbGllbnRJZDpjW2FdLHpiOmNbYl19fSxYUD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9VXEoITApLGU9ZFtiXTtlJiYoQ1AoYSxlLDIpLERQKGUsYSkpO3ZhciBmPWRbY107ZiYmUlAoZixhKTtyZXR1cm57Y2xpZW50SWQ6ZSx6YjpmfX0sWVA9ZnVuY3Rpb24oKXt2YXIgYT1OaihBLmxvY2F0aW9uLCJob3N0IiksYj1OaihSaihCLnJlZmVycmVyKSwiaG9zdCIpO3JldHVybiBhJiZiP2E9PT1ifHxhLmluZGV4T2YoIi4iK2IpPj0KMHx8Yi5pbmRleE9mKCIuIithKT49MD8hMDohMTohMX0sWlA9ZnVuY3Rpb24oYSl7aWYoIU8oYS5NLEYuRC56YykpcmV0dXJue307dmFyIGI9UShhLEguSi5HYSksYz1iLnByZWZpeCsiX2dhIixkPVFQKGEsYik7YnIoZnVuY3Rpb24oKXt2YXIgZTtpZihYbygiYW5hbHl0aWNzX3N0b3JhZ2UiKSllPXt9O2Vsc2V7dmFyIGY9e191cDoiMSJ9LGc7Zz1SKGEsRi5ELktiKTtlPShmW2NdPWcsZltkXT1UUChhKSxmKX1yZXR1cm4gZX0sMSk7cmV0dXJuIVhvKCJhbmFseXRpY3Nfc3RvcmFnZSIpJiZZUCgpP1dQKGMsZCk6e319LCRQPWZ1bmN0aW9uKGEpe3ZhciBiPVZQKGEpfHx7fSxjPVEoYSxILkouR2EpLGQ9Yy5wcmVmaXgrIl9nYSIsZT1RUChhLGMpLGY9e307ZHIoYltGLkQuWGZdLCEhYltGLkQuQWFdKSYmKGY9WFAoYSxkLGUpLGYuY2xpZW50SWQmJmYuemImJlprKDIsITApKTtiW0YuRC5BYV0mJmFyKGZ1bmN0aW9uKCl7dmFyIGc9e30saD1GUChhKTtoJiYoZ1tkXT1oKTt2YXIgbD1TUChhKTsKbCYmKGdbZV09bCk7dmFyIG49Y3EoIkZQTEMiLHZvaWQgMCx2b2lkIDAsRi5ELnJhKTtuLmxlbmd0aCYmKGcuX2ZwbGM9blswXSk7cmV0dXJuIGd9LGJbRi5ELkFhXSxiW0YuRC5hZF0sISFiW0YuRC53Y10pO3JldHVybiBmfTt2YXIgYVE9ZnVuY3Rpb24oYSl7aWYoIVEoYSxILkouYmUpJiZlayhhLk0pKXt2YXIgYj1WUChhKXx8e30sYz0oZHIoYltGLkQuWGZdLCEhYltGLkQuQWFdKT9VcSghMCkuX2ZwbGM6dm9pZCAwKXx8KGNxKCJGUExDIix2b2lkIDAsdm9pZCAwLEYuRC5yYSkubGVuZ3RoPjA/dm9pZCAwOiIwIik7VShhLCJfZnBsYyIsYyl9fTtmdW5jdGlvbiBiUShhKXsoYmsoWksoYSkpfHxXaigpKSYmVShhLEYuRC5vbSx6bSgpfHx5bSgpKTshYmsoWksoYSkpJiZXaigpJiZVKGEsRi5ELllpLCI6OiIpfWZ1bmN0aW9uIGNRKGEpe1dqKCkmJihiayhaSyhhKSl8fERtKCl8fFUoYSxGLkQuU2wsITApKX07dmFyIGVRPWZ1bmN0aW9uKGEsYil7a2ooImdybCIsZnVuY3Rpb24oKXtyZXR1cm4gZFEoKX0pKGIpfHwoUCgzNSksYS5pc0Fib3J0ZWQ9ITApfSxkUT1mdW5jdGlvbigpe3ZhciBhPU5iKCksYj1hKzg2NEU1LGM9MjAsZD01RTM7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBmPU5iKCk7Zj49YiYmKGI9Zis4NjRFNSxkPTVFMyk7Yz1NYXRoLm1pbihjKyhmLWEpLzFFMyo1LDIwKTthPWY7dmFyIGc9ITE7ZDwxfHxjPDF8fChnPSEwLGQtLSxjLS0pO2UmJihlLkhyPWQsZS51cj1jKTtyZXR1cm4gZ319Owp2YXIgZlE9ZnVuY3Rpb24oYSl7dmFyIGI9UihhLEYuRC5VYSk7cmV0dXJuIExqKFJqKGIpLCJob3N0IiwhMCl9LGdRPWZ1bmN0aW9uKGEpe2lmKE8oYS5NLEYuRC5XZikhPT12b2lkIDApYS5jb3B5VG9IaXREYXRhKEYuRC5XZik7ZWxzZXt2YXIgYj1PKGEuTSxGLkQuYW0pLGMsZDthOntpZihVUCgpKXt2YXIgZT1WUChhKXx8e307aWYoZSYmZVtGLkQuQWFdKWZvcih2YXIgZj1mUShhKSxnPWVbRi5ELkFhXSxoPTA7aDxnLmxlbmd0aDtoKyspaWYoZ1toXWluc3RhbmNlb2YgUmVnRXhwKXtpZihnW2hdLnRlc3QoZikpe2Q9ITA7YnJlYWsgYX19ZWxzZSBpZihmLmluZGV4T2YoZ1toXSk+PTApe2Q9ITA7YnJlYWsgYX19ZD0hMX1pZighKGM9ZCkpe3ZhciBsO2lmKGw9YilhOntmb3IodmFyIG49Yi5pbmNsdWRlX2NvbmRpdGlvbnN8fFtdLHA9ZlEoYSkscT0wO3E8bi5sZW5ndGg7cSsrKWlmKG5bcV0udGVzdChwKSl7bD0hMDticmVhayBhfWw9ITF9Yz1sfWMmJihVKGEsRi5ELldmLCIxIiksCklQKEouVS5ubikpfX07ZnVuY3Rpb24gaFEoYSxiLGMsZCl7dmFyIGU7aWYoKG5kKCl8fGtkKCkpJiZYaigpJiZYaigpIT09Ii8iKXt2YXIgZj1SaihhKTtlPUlmKDUwKSYmZCYmVGIoZi5wYXRobmFtZSwiL2cvY29sbGVjdCIpPzI6KGR8fCFXaigpfHxEbSgpPzA6VGIoZi5wYXRobmFtZSwiL2dhL2cvYyIpfHxUYihmLnBhdGhuYW1lLCIvYWcvZy9jIikpPzE6MH1lbHNlIGU9MDtzd2l0Y2goZSl7Y2FzZSAyOnZhciBnO2lmKE0oNTQ2KSl7dmFyIGg9VGIoYSwiL2cvY29sbGVjdCIpP2Euc3Vic3RyaW5nKDAsYS5sZW5ndGgtMTApOmEsbD1pUSgpLG49aCtsLHA9alEoIi9nL2NvbGxlY3QiLGIsYyk7Zz17SWM6bixrZjoiIixib2R5OnB9fWVsc2UgZz17SWM6YSxrZjpiLGJvZHk6Y307cmV0dXJuIGc7Y2FzZSAxOnZhciBxO2lmKE0oNTQ3KSl7dmFyIHI9aVEoKSx0PWEuaW5kZXhPZihyKSx1PWEuc3Vic3RyaW5nKDAsdCkrcix2PWpRKGEuc3Vic3RyaW5nKHQrci5sZW5ndGgtMSksYixjKTtxPXtJYzp1LGtmOiIiLApib2R5OnZ9fWVsc2UgcT17SWM6YSxrZjpiLGJvZHk6Y307cmV0dXJuIHE7ZGVmYXVsdDpyZXR1cm57SWM6YSxrZjpiLGJvZHk6Y319fWZ1bmN0aW9uIGlRKCl7dmFyIGE9WGooKTtpZighYSlyZXR1cm4iIjtTYihhLCIvIil8fChhPSIvIithKTtUYihhLCIvIil8fChhKz0iLyIpO3JldHVybiBhfWZ1bmN0aW9uIGpRKGEsYixjKXt2YXIgZD1bYV07YiYmZC5wdXNoKCI/IixiKTtjJiZkLnB1c2goIlxyXG4iLGMpO3JldHVybiBkLmpvaW4oIiIpfTsKdmFyIGtRPWZ1bmN0aW9uKGEsYil7VHQoKSYmKGEuZ2NzPVV0KCksUShiLEguSi5HaCkmJihhLmdjdT0iMSIpKTthLmdjZD1ZdChiLk0pO2EubnBhPVEoYixILkoud2QpPyIwIjoiMSI7em0oKT09PSJVUy1DTyImJihhLl9uZz0iMSIpfSxsUT1mdW5jdGlvbihhKXtpZihRKGEsSC5KLmJlKSlyZXR1cm57dXJsOmZrKCJodHRwczovL3d3dy5tZXJjaGFudC1jZW50ZXItYW5hbHl0aWNzLmdvb2ciLHZvaWQgMCwiIikrIi9tYy9jb2xsZWN0IixlbmRwb2ludDoyMH07dmFyIGI9WWooZWsoYS5NKSwiL2cvY29sbGVjdCIpO2lmKGIpcmV0dXJue3VybDpiLGVuZHBvaW50OjE2fTt2YXIgYztjPVEoYSxILkoucm4pJiYhUShhLEguSi5GYyk/MTc6MTY7cmV0dXJue3VybDpNbVtjXSh2b2lkIDApLGVuZHBvaW50OmN9fSxtUT17fTttUVtGLkQuS2JdPSJjaWQiO21RW0YuRC54aV09ImdjdXQiO21RW0YuRC5GZV09ImFyZSI7bVFbRi5ELmpoXT0icHNjZGwiO21RW0YuRC5OZF09ImV4Y2lkIjttUVtGLkQuR2ldPQoiX2ZpZCI7bVFbRi5ELk9sXT0iX2dlbyI7bVFbRi5ELlhjXT0iZ2RpZCI7bVFbRi5ELkxlXT0iX25nIjttUVtGLkQuTWVdPSJmcm0iO21RW0YuRC5XZl09ImlyIjttUVtGLkQuU2xdPSJmcCI7bVFbRi5ELnRiXT0idWwiO21RW0YuRC5NaV09Im5pIjttUVtGLkQubXFdPSJwYWUiO21RW0YuRC54aF09Il9yZGkiO21RW0YuRC5iZF09InNyIjttUVtGLkQuUWldPSJ0ZXN0b25seSI7bVFbRi5ELlFlXT0idGlkIjttUVtGLkQuUmldPSJ0dCI7bVFbRi5ELkJjXT0iZWNfbW9kZSI7bVFbRi5ELlptXT0iZ3RtX3VwIjttUVtGLkQuY2ddPSJ1YWEiO21RW0YuRC5kZ109InVhYiI7bVFbRi5ELmVnXT0idWFmdmwiO21RW0YuRC5mZ109InVhbWIiO21RW0YuRC5nZ109InVhbSI7Cm1RW0YuRC5oZ109InVhcCI7bVFbRi5ELmlnXT0idWFwdiI7bVFbRi5ELmpnXT0idWF3IjttUVtGLkQub21dPSJ1ciI7bVFbRi5ELllpXT0iX3VpcCI7bVFbRi5ELmxxXT0iX3BycyI7bVFbRi5ELlBkXT0ibHBzIjttUVtGLkQuQmVdPSJnY2xncyI7bVFbRi5ELkRlXT0iZ2Nsc3QiO21RW0YuRC5DZV09ImdjbGxwIjt2YXIgblE9e307blFbRi5ELkdmXT0iY2MiO25RW0YuRC5IZl09ImNpIjtuUVtGLkQuSWZdPSJjbSI7blFbRi5ELkpmXT0iY24iO25RW0YuRC5MZl09ImNzIjtuUVtGLkQuTWZdPSJjayI7blFbRi5ELmViXT0iY3UiO25RW0YuRC5WZl09Il90dSI7blFbRi5ELnphXT0iZGwiO25RW0YuRC5ZZl09ImRwIjtuUVtGLkQuVWFdPSJkciI7blFbRi5ELk1iXT0iZHQiO25RW0YuRC56aF09InNlZyI7blFbRi5ELnhjXT0KInNpZCI7blFbRi5ELkFoXT0ic2N0IjtuUVtGLkQuZmJdPSJ1aWQiO3ZhciBvUT17fTtvUVtGLkQubmhdPSJfZXQiO29RW0YuRC5WY109ImVkaWQiO29RW0YuRC5NZF09ImV2bmlkIjtNKDk0KSYmKG9RLl9ldT0iX2V1Iik7dmFyIHBRPXt9O3BRW0YuRC5HZl09ImNjIjtwUVtGLkQuSGZdPSJjaSI7cFFbRi5ELklmXT0iY20iO3BRW0YuRC5KZl09ImNuIjtwUVtGLkQuTGZdPSJjcyI7cFFbRi5ELk1mXT0iY2siO3ZhciBxUT17fSxyUT0ocVFbRi5ELkFjXT0xLHFRKSxzUT1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChkYSxtYSl7aWYobWEhPT12b2lkIDAmJiFCby5oYXNPd25Qcm9wZXJ0eShkYSkpe21hPT09bnVsbCYmKG1hPSIiKTt2YXIgUGE7dmFyIEZhPW1hO2RhIT09Ri5ELm9oP1BhPSExOlEoYSxILkoubGcpfHxiayhaSyhhKSk/KGUuZWNpZD1GYSxQYT0hMCk6UGE9dm9pZCAwO2lmKCFQYSl7dmFyIHFhPW1hO21hPT09ITAmJihxYT0iMSIpO21hPT09ITEmJihxYT0iMCIpO3FhPQpTdHJpbmcocWEpO3ZhciBpYjtpZihkYSE9PUYuRC5OZCYmZGEhPT1GLkQuTWR8fE0oNTA0KSlpZihtUVtkYV0paWI9bVFbZGFdLHZbaWJdPXFhO2Vsc2UgaWYoblFbZGFdKWliPW5RW2RhXSxnW2liXT1xYTtlbHNlIGlmKG9RW2RhXSlpYj1vUVtkYV0sZltpYl09cWE7ZWxzZSBpZihTYihkYSwiXyYiKSlpYj1kYS5zdWJzdHJpbmcoMiksdltpYl09cWE7ZWxzZSBpZihkYS5jaGFyQXQoMCk9PT0iXyIpdltkYV09cWE7ZWxzZXt2YXIgWGI7cFFbZGFdP1hiPSEwOmRhIT09Ri5ELktmP1hiPSExOih0eXBlb2YgbWEhPT0ib2JqZWN0IiYmdShkYSxtYSksWGI9ITApO1hifHx1KGRhLG1hKX1lbHNlIHUoZGEsbWEpfX19dmFyIGU9e30sZj17fSxnPXt9O2Uudj0iMiI7ZS50aWQ9YS50YXJnZXQuZGVzdGluYXRpb25JZDtlLmd0bT1kdSh7bWM6UShhLEguSi5OYiksZWY6UShhLEguSi5DYyl9KTtlLl9wPSRrKDI1KTtjJiYoYy5oYXNVcGR8fGMuaGFkRXJyb3IpJiYoZS5lbT1jLnBhcmFtKTtRKGEsCkguSi5yZykmJihlLl9nYXo9MSk7a1EoZSxhKTthdSgpJiYoZS5kbWFfY3BzPVp0KCkpO2UuZG1hPSR0KCk7dnQoRXQoKSkmJihlLnRjZmQ9YnUoKSk7dmFyIGg9Q3AoYSk7aCYmKGcudGFnX2V4cD1oKTt2YXIgbD1SKGEsRi5ELlhjKTtsJiYoZS5nZGlkPWwpO2YuZW49U3RyaW5nKGEuZXZlbnROYW1lKTtpZihRKGEsSC5KLm5nKSl7dmFyIG49UShhLEguSi5ZbSk7Zi5fZnY9bj8yOjF9UShhLEguSi5IaCkmJihmLl9uc2k9MSk7aWYoUShhLEguSi5UZSkpe3ZhciBwPVEoYSxILkouYm4pO2YuX3NzPXA/MjoxfVEoYSxILkoubWcpJiYoZi5fYz0xKTtRKGEsSC5KLmFlKSYmKGYuX2VlPTEpO2lmKFEoYSxILkouV20pKXt2YXIgcT1SKGEsRi5ELkhhKXx8TyhhLk0sRi5ELkhhKTtpZihBcnJheS5pc0FycmF5KHEpKWZvcih2YXIgcj0wO3I8cS5sZW5ndGgmJnI8MjAwO3IrKylmWyJwciIrKHIrMSldPXRnKHFbcl0pfXZhciB0PVIoYSxGLkQuVmMpO3QmJihmLmVkaWQ9dCk7aHQoYSxmKTtmb3IodmFyIHU9CmZ1bmN0aW9uKGRhLG1hKXtpZih0eXBlb2YgbWEhPT0ib2JqZWN0Inx8IXJRW2RhXSl7dmFyIFBhPSJlcC4iK2RhLEZhPSJlcG4uIitkYTtkYT1BYihtYSk/RmE6UGE7dmFyIHFhPUFiKG1hKT9QYTpGYTtmLmhhc093blByb3BlcnR5KHFhKSYmZGVsZXRlIGZbcWFdO2ZbZGFdPVN0cmluZyhtYSl9fSx2PXt9LHg9bShldShhKSkseT14Lm5leHQoKTsheS5kb25lO3k9eC5uZXh0KCkpe3ZhciB6PXkudmFsdWU7ZCh6LFIoYSx6KSl9Zm9yKHZhciBDPW0oT2JqZWN0LmtleXModikuc29ydCgpKSxEPUMubmV4dCgpOyFELmRvbmU7RD1DLm5leHQoKSl7dmFyIEk9RC52YWx1ZTtlW0ldPXZbSV19KGZ1bmN0aW9uKGRhKXtiayhaSyhhKSkmJnR5cGVvZiBkYT09PSJvYmplY3QiJiZHYihkYXx8e30sZnVuY3Rpb24obWEsUGEpe3R5cGVvZiBQYSE9PSJvYmplY3QiJiYoZVsic3N0LiIrbWFdPVN0cmluZyhQYSkpfSl9KShSKGEsRi5ELm9qKSk7YnYoZSxSKGEsRi5ELmVkKSk7dmFyIEc9UihhLEYuRC5XZCl8fAp7fTtHYihHLGZ1bmN0aW9uKGRhLG1hKXttYSE9PXZvaWQgMCYmKChtYT09PW51bGwmJihtYT0iIiksZGEhPT1GLkQuZmJ8fGcudWlkKT9iW2RhXSE9PW1hJiYoZlsoQWIobWEpPyJ1cG4uIjoidXAuIikrU3RyaW5nKGRhKV09U3RyaW5nKG1hKSxiW2RhXT1tYSk6Zy51aWQ9U3RyaW5nKG1hKSl9KTtpZihXaigpJiYhRG0oKSYmIWJrKFpLKGEpKSl7dmFyIE49UShhLEguSi5vZyk7Tj9lLl9nc2lkPU46ZS5uamlkPSIxIn12YXIgUz1RKGEsSC5KLlZpKTsoUz09bnVsbD92b2lkIDA6Uy52YWx1ZSk+MCYmKGUuZ2FmPVMuZ2V0KCkpO3ZhciBXPVIoYSxGLkQuV2MpO2lmKFcpZm9yKHZhciBlYT1tKE9iamVjdC5rZXlzKFcpKSxqYT1lYS5uZXh0KCk7IWphLmRvbmU7amE9ZWEubmV4dCgpKXt2YXIgZmE9amEudmFsdWU7ZlsiZXh0LiIrZmFdPVdbZmFdfHwiIn12YXIgc2E9bFEoYSk7dmcuY2FsbCh0aGlzLHtCYTplLHZlOmcsTGo6Zn0sc2EudXJsLHNhLmVuZHBvaW50LFpLKGEpLHZvaWQgMCwKYS50YXJnZXQuZGVzdGluYXRpb25JZCxhLk0uZXZlbnRJZCxhLk0ucHJpb3JpdHlJZCl9O3dhKHNRLHZnKTsKdmFyIHRRPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwbGFjZSgvXCRceyhbXlx9XSspXH0vZyxmdW5jdGlvbihjLGQpe3JldHVybiBiW2RdfHxjfSl9LHVRPWZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM9IiIsZD1hLnBhdGhuYW1lLmluZGV4T2YoIi9nL2NvbGxlY3QiKTtkPj0wJiYoYz1hLnBhdGhuYW1lLnN1YnN0cmluZygwLGQpKTtiLnRyYW5zcG9ydF91cmw9YS5wcm90b2NvbCsiLy8iK2EuaG9zdG5hbWUrYzt2YXIgZTt0cnl7ZT1lbmNvZGVVUklDb21wb25lbnQoY3x8Ii8iKX1jYXRjaChmKXtlPWVuY29kZVVSSUNvbXBvbmVudCgiLyIpfWIuZW5jb2RlZF9wYXRoPWU7cmV0dXJuIGJ9LHZRPWZ1bmN0aW9uKGEsYil7aWYoIU0oNTQ2KSlyZXR1cm57dXJsOmEsYm9keTpifTt2YXIgYz1tKGEuc3BsaXQoIj8iKSksZD1jLm5leHQoKS52YWx1ZSxlPWMubmV4dCgpLnZhbHVlLGY9aFEoZCxlfHwiIixifHwiIiwhMCksZz1mLkljLGg9Zi5rZjthPWghPT0iIj9nKyI/IitoOmc7Yj1mLmJvZHk7CnJldHVybnt1cmw6YSxib2R5OmJ9fSx4UT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9UmooYiksZT11UShkKSxmPXZRKFhnKGQpLGMpLGc9ZnVuY3Rpb24oaCl7cXgoZi51cmwsZi5ib2R5LG5ldyB3UShlLGgpKSYmYSYma24ucmVnaXN0ZXIoYSwxLGYudXJsKX07IU0oMTMyKXx8TmMoIjsgd3YiKXx8TmMoIkZCQU4iKXx8TmMoIkZCQVYiKXx8UGMoKT9nKCk6bUwoZi51cmwsZi5ib2R5LGUsZyl9LHdRPWZ1bmN0aW9uKGEsYil7Q3guY2FsbCh0aGlzKTt0aGlzLnRlbXBsYXRlcz1hO3RoaXMuTj1ifTt3YSh3USxDeCk7d1EucHJvdG90eXBlLlo9ZnVuY3Rpb24oYSl7dmFyIGI9dFEoYSx0aGlzLnRlbXBsYXRlcyk7cmV0dXJuIHRoaXMuTj9iLnJlcGxhY2UoIl9pc19zdz0wIix0aGlzLk4pOmJ9O3dRLnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5aKGEpO0N4LnByb3RvdHlwZS5LLmNhbGwodGhpcyxjLGIpfTt3US5wcm90b3R5cGUuSD1mdW5jdGlvbihhLGIpe3ZhciBjPQp0aGlzLlooYSk7Q3gucHJvdG90eXBlLkguY2FsbCh0aGlzLGMsYil9Owp2YXIgeVE9ZnVuY3Rpb24oYSl7cmV0dXJuIVNiKGEsRm0oKSkmJiFTYihhLEdtKCkpfSxBUT1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoIW5kKCkpcmV0dXJuIHpRKGEsYixjLGQpLCEwO1luKGMsYiE9PSIiP2ErIj8iK2I6YSxkLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sZXx8e30se1FnOiEwfSksdm9pZCAwLGYpfHx6UShhLGIsYyxkKTtyZXR1cm4hMH0selE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YiE9PSIiP2ErIj8iK2I6YTtkP1duKGMsZSxkKTpWbihjLGUpfSxDUT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWIsZz1wZCgpO2chPT12b2lkIDAmJihmKz0iJnRmZD0iK01hdGgucm91bmQoZykpO2I9Zjt2YXIgaD1hKyI/IitiO2lmKCFiayhkKXx8Y2soZCl8fHhQKCkpe3ZhciBsPWhRKGEsYixjLGJrKGQpKTthPWwuSWM7Yj1sLmtmO2M9bC5ib2R5O0FRKGEsYixlLGMsdm9pZCAwLEJRKGEsYixlLGMpKXx8elEoYSxiLGUsYyl9ZWxzZSB4UShlLGgsYyk7CmJrKGQpJiZNKDU2NCkmJm5kKCkmJlRiKGEsIi9nL2NvbGxlY3QiKSYmQS5mZXRjaChhLnN1YnN0cmluZygwLGEubGVuZ3RoLTEwKSx7bWV0aG9kOiJQT1NUIixib2R5OiJDakFPQVR3Y0NCZ08iLGNyZWRlbnRpYWxzOiJvbWl0In0pfSxCUT1mdW5jdGlvbihhLGIsYyxkKXtpZigheVEoYSkpe3ZhciBlPU1tWzY3XSh2b2lkIDApO2lmKGUpcmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGY7dmFyIGc9Yi5yZXBsYWNlKC9eXD8vLCIiKSxoPU51bWJlcihJaihnLCJnYWYiLCExKSksbD0wO051bWJlci5pc0ludGVnZXIoaCkmJihsPWgpO3ZhciBuPW5ldyBlcihsKTtmcihuLDEpO2lmKG4udmFsdWUhPT0wKXt2YXIgcCxxPW4uZ2V0KCkscj1SZWdFeHAoIihefFs/Jl0pZ2FmPVteJl0qKCZ8JCkiKTtwPXIudGVzdChnKT9nLnJlcGxhY2UociwiJDFnYWY9IitxKyIkMiIpOmcuaW5kZXhPZigiPyIpPj0wP2crIiZnYWY9IitxOmdbMF09PT0iLyJ8fGcuaW5kZXhPZigiOi8vIik+PTA/ZysiP2dhZj0iKwpxOmcubGVuZ3RoPjA/ZysiJmdhZj0iK3E6ImdhZj0iK3E7Zj1iLmluZGV4T2YoIj8iKT09PTA/Ij8iK3A6cH1lbHNlIGY9dm9pZCAwO0FRKGUsZnx8YixuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMse2VuZHBvaW50OjY3fSksZCxjLmVuZHBvaW50PT09MTc/dm9pZCAwOntjcmVkZW50aWFsczoib21pdCJ9KX19fSxEUT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihoKXtkLnB1c2goaCsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KCIiK2EuQmFbaF0pKX07ZC5wdXNoKCJ2PTIiKTtlKCJfZ3NpZCIpO2UoImd0bSIpO2EuQmEuX2dlbyYmZSgiX2dlbyIpO3ZhciBmPSJodHRwczovL3tnYTRDb2xsZWN0aW9uU3ViZG9tYWluLn1nb29nbGUtYW5hbHl0aWNzLmNvbS9nL3MvY29sbGVjdCIucmVwbGFjZSgie2dhNENvbGxlY3Rpb25TdWJkb21haW4ufSIsKGJ8fCJ3d3ciKSsiLiIpLGc9ZC5qb2luKCImIik7elEoZixnLHtkZXN0aW5hdGlvbklkOmEuZGVzdGluYXRpb25JZHx8CiIiLGVuZHBvaW50OjYyLGV2ZW50SWQ6YS5ldmVudElkLHByaW9yaXR5SWQ6YS5wcmlvcml0eUlkfSk7TWwoe3RhcmdldElkOlN0cmluZyhhLkJhLnRpZCkscmVxdWVzdDp7dXJsOmYrIj8iK2cscGFyYW1ldGVyRW5jb2Rpbmc6MixlbmRwb2ludDo2Mn0scWI6Y30pfSxFUT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Imh0dHBzOi8ve2dhNENvbGxlY3Rpb25TdWJkb21haW4ufWFuYWx5dGljcy5nb29nbGUuY29tL2cvcy9jb2xsZWN0Ii5yZXBsYWNlKCJ7Z2E0Q29sbGVjdGlvblN1YmRvbWFpbi59IixiP2IrIi4iOiIiKSxlPVtdLGY9ZnVuY3Rpb24oaCl7ZS5wdXNoKGgrIj0iK2VuY29kZVVSSUNvbXBvbmVudCgiIithLkJhW2hdKSl9O2YoIl9nc2lkIik7ZigiZ3RtIik7YS5CYS5fZ2VvJiZmKCJfZ2VvIik7dmFyIGc9ZS5qb2luKCImIik7elEoZCxnLHtkZXN0aW5hdGlvbklkOmEuZGVzdGluYXRpb25JZHx8IiIsZW5kcG9pbnQ6MTgsZXZlbnRJZDphLmV2ZW50SWQscHJpb3JpdHlJZDphLnByaW9yaXR5SWR9KTsKTWwoe3RhcmdldElkOlN0cmluZyhhLkJhLnRpZCkscmVxdWVzdDp7dXJsOmQrIj8iK2cscGFyYW1ldGVyRW5jb2Rpbmc6MixlbmRwb2ludDoxOH0scWI6Y30pfSxGUT1mdW5jdGlvbihhLGIsYyxkLGUsZil7YyYmYi5wdXNoKCJ0YWdfZXhwPSIrYyk7Yi5wdXNoKCJ6PSIrRGIoKSk7aWYoIWUpe3ZhciBnPWQmJlNiKGQsImdvb2dsZS4iKSYmZCE9PSJnb29nbGUuY29tIj8iaHR0cHM6Ly93d3cuJS9hZHMvZ2EtYXVkaWVuY2VzP3Y9MSZ0PXNyJnNsZl9yZD0xJl9yPTQmIi5yZXBsYWNlKCIlIixkKTp2b2lkIDA7aWYoZyl7dmFyIGg9ZytiLmpvaW4oIiYiKTtYbih7ZGVzdGluYXRpb25JZDphLmRlc3RpbmF0aW9uSWR8fCIiLGVuZHBvaW50OjQ3LGV2ZW50SWQ6YS5ldmVudElkLHByaW9yaXR5SWQ6YS5wcmlvcml0eUlkfSxoKTtNbCh7dGFyZ2V0SWQ6U3RyaW5nKGEuQmEudGlkKSxyZXF1ZXN0Ont1cmw6aCxwYXJhbWV0ZXJFbmNvZGluZzoyLGVuZHBvaW50OjQ3fSxxYjpmfSl9fX0sR1E9CmZ1bmN0aW9uKGEsYixjLGQpe2MmJmIucHVzaCgidGFnX2V4cD0iK2MpO3pRKCJodHRwczovL3N0YXRzLmcuZG91YmxlY2xpY2submV0L2cvY29sbGVjdCIsInY9MiYiK2Iuam9pbigiJiIpLHtkZXN0aW5hdGlvbklkOmEuZGVzdGluYXRpb25JZHx8IiIsZW5kcG9pbnQ6MTksZXZlbnRJZDphLmV2ZW50SWQscHJpb3JpdHlJZDphLnByaW9yaXR5SWR9KTtNbCh7dGFyZ2V0SWQ6U3RyaW5nKGEuQmEudGlkKSxyZXF1ZXN0Ont1cmw6Imh0dHBzOi8vc3RhdHMuZy5kb3VibGVjbGljay5uZXQvZy9jb2xsZWN0P3Y9MiYiK2Iuam9pbigiJiIpLHBhcmFtZXRlckVuY29kaW5nOjIsZW5kcG9pbnQ6MTl9LHFiOmR9KX0sSFE9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKHYpe3EucHVzaCh2KyI9IitlbmNvZGVVUklDb21wb25lbnQoIiIrYS5CYVt2XSkpfXZhciBkPWIueHQsZT1iLkJ0LGY9Yi5BdCxnPWIuenQsaD1iLlpyLGw9Yi5DcyxuPWIuUHIscD1iLkd0O2lmKGR8fGV8fGZ8fGcpe3ZhciBxPQpbXTthLkJhLl9uZyYmYygiX25nIik7YS5CYS5uZ3MmJmMoIm5ncyIpO2EuQmEuaWJ0JiZjKCJpYnQiKTtjKCJ0aWQiKTtjKCJjaWQiKTtjKCJndG0iKTtmb3IodmFyIHI9bShPRiksdD1yLm5leHQoKTshdC5kb25lO3Q9ci5uZXh0KCkpe3ZhciB1PXQudmFsdWU7YS5CYVt1XSE9bnVsbCYmYyh1KX1xLnB1c2goImFpcD0xIik7YS52ZS51aWQmJnEucHVzaCgidWlkPSIrZW5jb2RlVVJJQ29tcG9uZW50KCIiK2EudmUudWlkKSk7YygiZG1hIik7YS5CYS5kbWFfY3BzIT1udWxsJiZjKCJkbWFfY3BzIik7YS5CYS5nY3MhPW51bGwmJmMoImdjcyIpO2MoImdjZCIpO2EuQmEubnBhIT1udWxsJiZjKCJucGEiKTthLkJhLmZybSE9bnVsbCYmYygiZnJtIik7ZCYmR1EoYSxxLnNsaWNlKCkscCxiLnFiKTtlJiZGUShhLHEuc2xpY2UoKSxwLGgsbCxiLnFiKTtmJiZFUShhLG4sYi5xYik7ZyYmRFEoYSxuLGIucWIpfX0sSVE9ZnVuY3Rpb24oKXt0aGlzLlI9MTt0aGlzLlo9e307dGhpcy5LPS0xO3RoaXMuSD0KbmV3IHdnfTtJUS5wcm90b3R5cGUuTj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD1uZXcgc1EoYSx0aGlzLlosYiksZT17ZXZlbnRJZDphLk0uZXZlbnRJZCxwcmlvcml0eUlkOmEuTS5wcmlvcml0eUlkfSxmPXlQKGEpLGcsaDtmJiZ0aGlzLkguUihkKXx8dGhpcy5mbHVzaCgpO3ZhciBsPWYmJnRoaXMuSC5hZGQoZCk7aWYobCl7aWYodGhpcy5LPDApe3ZhciBuPUEscD1uLnNldFRpbWVvdXQscTtiayhaSyhhKSk/SlE/KEpRPSExLHE9S1EpOnE9TFE6cT01RTM7dGhpcy5LPXAuY2FsbChuLGZ1bmN0aW9uKCl7Yy5mbHVzaCgpfSxxKX19ZWxzZXt2YXIgcj16ZyhkLHRoaXMuUisrKSx0PXIucGFyYW1zLHU9ci5ib2R5O2c9dDtoPXU7RnkoMyxhLmV2ZW50TmFtZSk7Q1EoZC5iYXNlVXJsLHQsdSxkLk4se2Rlc3RpbmF0aW9uSWQ6YS50YXJnZXQuZGVzdGluYXRpb25JZCxlbmRwb2ludDpkLmVuZHBvaW50LGV2ZW50SWQ6ZC5ldmVudElkLHByaW9yaXR5SWQ6ZC5wcmlvcml0eUlkfSk7CnZhciB2PVEoYSxILkouaGQpLHg9UShhLEguSi5yZykseT1RKGEsSC5KLk5oKSx6PVEoYSxILkouTWgpLEM9TyhhLk0sRi5ELnVpKSE9PSExLEQ9U3QoYS5NKSxJPXt4dDp2LEJ0OngsQXQ6eSx6dDp6LFpyOkVtKCksbXY6QyxsdjpELENzOkFtKCkscWI6ZSxNOmEuTSxQcjpEbSgpLEd0OkNwKGEpfTtIUShkLEkpfWZuLkgmJkF6KGEuTS5ldmVudElkKTtObChmdW5jdGlvbigpe2lmKGwpe3ZhciBHPXpnKGQpLE49Ry5ib2R5O2c9Ry5wYXJhbXM7aD1OfXJldHVybnt0YXJnZXRJZDphLnRhcmdldC5kZXN0aW5hdGlvbklkLHJlcXVlc3Q6e3VybDpkLmJhc2VVcmwrIj8iK2cscGFyYW1ldGVyRW5jb2Rpbmc6Mixwb3N0Qm9keTpoLGVuZHBvaW50OmQuZW5kcG9pbnR9LHFiOmUsaXNCYXRjaGVkOiExfX0pfTtJUS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe1lLKGEpJiYheFAoKT90aGlzLmZhKGEpOnRoaXMuTihhKX07SVEucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5ILmV2ZW50cy5sZW5ndGgpe3ZhciBhPQpCZyh0aGlzLkgsdGhpcy5SKyspO0NRKHRoaXMuSC5iYXNlVXJsLGEucGFyYW1zLGEuYm9keSx0aGlzLkguSyx7ZGVzdGluYXRpb25JZDp0aGlzLkguZGVzdGluYXRpb25JZHx8IiIsZW5kcG9pbnQ6dGhpcy5ILmVuZHBvaW50LGV2ZW50SWQ6dGhpcy5ILloscHJpb3JpdHlJZDp0aGlzLkguZmF9KTt0aGlzLkg9bmV3IHdnO3RoaXMuSz49MCYmKEEuY2xlYXJUaW1lb3V0KHRoaXMuSyksdGhpcy5LPS0xKX19O0lRLnByb3RvdHlwZS5mYT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9WUsoYSk7TSg1NjgpJiYhTSg1ODYpJiZSKGEsRi5ELkJjKT09PSJhIiYmKGM9Y3coYykpO2lmKEV3KGMpKXt2YXIgZD1zdyhjKTtkP2QudGhlbihmdW5jdGlvbihmKXtiLk4oYSxmKX0sZnVuY3Rpb24oKXtiLk4oYSl9KTp0aGlzLk4oYSl9ZWxzZXt2YXIgZT1EdyhjKTt0aGlzLk4oYSxlKX19O3ZhciBLUT1OZigyNCw1MDApLExRPU5mKDU2LDVFMyksSlE9ITA7dmFyIE1RPWZ1bmN0aW9uKGEpe3ZhciBiPVN0KGEuTSk7TyhhLk0sRi5ELldiKT09PSEwJiYoYj0hMSk7VihhLEguSi53ZCxiKX07CnZhciBOUT1mdW5jdGlvbihhLGIsYyl7Yz09PXZvaWQgMCYmKGM9e30pO2lmKGI9PW51bGwpcmV0dXJuIGM7aWYodHlwZW9mIGI9PT0ib2JqZWN0Iilmb3IodmFyIGQ9bShPYmplY3Qua2V5cyhiKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7TlEoYSsiLiIrZixiW2ZdLGMpfWVsc2UgY1thXT1iO3JldHVybiBjfSxPUT1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz1tKGEpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2JbZV09ISFYbyhlKX1yZXR1cm4gYn0sUVE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1QUS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIVhvKGUpfSk7aWYoYy5sZW5ndGgpe3ZhciBkPU9RKGMpOyRvKGMsZnVuY3Rpb24oKXtmb3IodmFyIGU9T1EoYyksZj1bXSxnPW0oYyksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciBsPWgudmFsdWU7IWRbbF0mJmVbbF0mJmYucHVzaChsKTtlW2xdJiYKKGRbbF09ITApfWlmKGYubGVuZ3RoKXtWKGIsSC5KLkdoLCEwKTt2YXIgbj1mLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gTG9bcF19KS5qb2luKCIuIik7biYmV0soYiwiZ2N1dCIsbik7TVEoYik7YShiKX19KX19LFJRPWZ1bmN0aW9uKGEpe1IoYSxGLkQuV2MpJiYhYmsoWksoYSkpJiZVKGEsRi5ELldjKX0sU1E9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiZXSyhhLCJuYXZ0IixxZCgpKX0sVFE9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiZXSyhhLCJscGMiLGlyKCkpfSxVUT1mdW5jdGlvbihhKXtpZihiayhaSyhhKSkpe3ZhciBiPU8oYS5NLEYuRC5XYiksYztiPT09ITAmJihjPSIxIik7Yj09PSExJiYoYz0iMCIpO2MmJldLKGEsInJkcCIsYyl9fSxWUT1mdW5jdGlvbihhLGIpe2lmKGJrKFpLKGIpKSl7dmFyIGM9UShiLEguSi5tZyk7KGIuZXZlbnROYW1lPT09InBhZ2VfdmlldyJ8fGMpJiZRUShhLGIpfX0sV1E9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpJiZhLmV2ZW50TmFtZT09PUYuRC55ZiYmClEoYSxILkouR2gpKXt2YXIgYj1SKGEsRi5ELnhpKTtiJiYoV0soYSwiZ2N1dCIsYiksV0soYSwic3luIiwxKSl9fSxYUT1mdW5jdGlvbihhLGIsYyl7aWYoYT09PWIpcmV0dXJuIFdqKCkmJlNiKGMrIi8iLFhqKCkrIi8iKT8iNyI6IjEiO2lmKFRiKGEsIi4iK2IpKXJldHVybiIyIjtpZihUYihiLCIuIithKSlyZXR1cm4iMyI7dmFyIGQ9YS5zcGxpdCgiLiIpLGU9Yi5zcGxpdCgiLiIpLGY9ZnVuY3Rpb24oZyl7aWYoZC5sZW5ndGg8Z3x8ZS5sZW5ndGg8ZylyZXR1cm4hMTtmb3IodmFyIGg9MTtoPD1nO2grKylpZihkW2QubGVuZ3RoLWhdIT09ZVtlLmxlbmd0aC1oXSlyZXR1cm4hMTtyZXR1cm4hMH07cmV0dXJuIGYoMyk/IjYiOmYoMik/IjUiOiI0In0sWVE9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXt2YXIgYj1layhhLk0pO2lmKGIpe3ZhciBjPVlqKGIsIi8iKSxkPVJqKGMpLGU9TmooZCwiaG9zdCIpLGY9TmooQS5sb2NhdGlvbiwiaG9zdCIpO2lmKGUmJmYpe3ZhciBnPU5qKGQsCiJwYXRoIik7YS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLHtzc3RkOlhRKGUsZixnKX0pfX19fSxaUT1mdW5jdGlvbihhKXtiayhaSyhhKSkmJlYoYSxILkouSmEsITEpfSwkUT1mdW5jdGlvbihhKXtiayhaSyhhKSkmJihRKGEsSC5KLkphKSYmV0soYSwic3AiLDEpLFEoYSxILkouSXEpJiZXSyhhLCJzeW4iLDEpLFEoYSxILkouUGMpJiYoV0soYSwiZW1fZXZlbnQiLDEpLFdLKGEsInNwIiwxKSkpfSxhUj1mdW5jdGlvbihhKXtpZihiayhaSyhhKSkpe3ZhciBiPSRrKDI1KTtiJiZXSyhhLCJ0ZnQiLE51bWJlcihiKSl9fSxiUj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGUpe3ZhciBmPU5RKEYuRC5BYyxlKTtHYihmLGZ1bmN0aW9uKGcsaCl7VShhLGcsaCl9KX1pZihiayhaSyhhKSkpe3ZhciBjPWRJKGEsImNjZF9hZGRfMXBfZGF0YSIsITEpPzE6MDtXSyhhLCJ1ZGUiLGMpO3ZhciBkPU8oYS5NLEYuRC5BYyk7ZCE9PXZvaWQgMD8oWnYoZCksYihkKSxVKGEsRi5ELkJjLCJjIikpOgpiKFEoYSxILkouWWEpKTtWKGEsSC5KLllhKX19LGNSPWZ1bmN0aW9uKGEpe2lmKGJrKFpLKGEpKSl7dmFyIGI9Vk0oKTtiJiZXSyhhLCJ1c19wcml2YWN5IixiKTt2YXIgYz1MdCgpO2MmJldLKGEsImdkcHIiLGMpO3ZhciBkPUt0KCk7ZCYmV0soYSwiZ2Rwcl9jb25zZW50IixkKTt2YXIgZT1rRi5ncHBTdHJpbmc7ZSYmV0soYSwiZ3BwIixlKTt2YXIgZj1rRi5IO2YmJldLKGEsImdwcF9zaWQiLGYpfX0sZFI9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiZFbCgpJiZPKGEuTSxGLkQubWIpJiZXSyhhLCJhZHIiLDEpfSxlUj1mdW5jdGlvbihhKXtpZihiayhaSyhhKSkpe3ZhciBiPURtKCk7YiYmV0soYSwiZ2NzdWIiLGIpfX0sZlI9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXtPKGEuTSxGLkQuU2Msdm9pZCAwLDQpPT09ITEmJldLKGEsIm5ncyIsMSk7QW0oKSYmV0soYSwiZ2FfcmQiLDEpO1ZLKCl8fFdLKGEsIm5nc3QiLDEpO3ZhciBiPUVtKCk7YiYmV0soYSwiZXRsZCIsYil9fSxnUj0KZnVuY3Rpb24oYSl7fSxoUj1mdW5jdGlvbihhKXtiayhaSyhhKSkmJkVsKCkmJldLKGEsInJuZCIsUU0oKSl9LFBRPVtGLkQua2EsRi5ELm1hLEYuRC5YYV07CnZhciBpUj1mdW5jdGlvbihhLGIpe3ZhciBjO2E6e2lmKCFRKGEsSC5KLkZjKSl7dmFyIGQ9VFAoYSk7aWYoZCl7aWYoUlAoZCxhKSl7Yz1kO2JyZWFrIGF9UCgyNSk7YS5pc0Fib3J0ZWQ9ITB9fWM9dm9pZCAwfXZhciBlPWM7cmV0dXJue2NsaWVudElkOkVQKGEsYiksemI6ZX19LGpSPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9UW8oTyhhLk0sRi5ELktiKSk7aWYoTyhhLk0sRi5ELlpjKSYmTyhhLk0sRi5ELlljKSlmP0NQKGEsZiwxKTooUCgxMjcpLGEuaXNBYm9ydGVkPSEwKTtlbHNle3ZhciBnPWY/MTo4O1YoYSxILkouSGgsITEpO2Z8fChmPUZQKGEpLGc9Myk7Znx8KGY9YixnPTUpO2lmKCFmKXt2YXIgaD1YbyhGLkQucmEpLGw9elAoKTtmPSFsLmZyb21fY29va2llfHxoP2wudmlkOnZvaWQgMDtnPTZ9Zj9mPSIiK2Y6KGY9QXYoKSxnPTcsVihhLEguSi5uZywhMCksVihhLEguSi5IaCwhMCkpO0NQKGEsZixnKX1SKGEsRi5ELktiKTtpZighUShhLEguSi5GYykpe3ZhciBuPQpRKGEsSC5KLkViKSxwPU1hdGguZmxvb3Iobi8xRTMpLHE9dm9pZCAwO1EoYSxILkouSGgpfHwocT1TUChhKXx8Yyk7dmFyIHI9SWIoTyhhLk0sRi5ELnloLDMwKSk7cj1NYXRoLm1pbig0NzUscik7cj1NYXRoLm1heCg1LHIpO3ZhciB0PUliKE8oYS5NLEYuRC5QaSwxRTQpKSx1PUxQKHEpO1YoYSxILkoubmcsITEpO1YoYSxILkouVGUsITEpO1YoYSxILkoucGcsMCk7dSYmdS5qJiZWKGEsSC5KLnBnLE1hdGgubWF4KDAsdS5qLU1hdGgubWF4KDAscC11LnQpKSk7dmFyIHY9ITE7aWYoIXUpe1YoYSxILkoubmcsITApO3Y9ITA7dmFyIHg9e307dT0oeC5zPVN0cmluZyhwKSx4Lm89MSx4Lmc9ITEseC50PXAseC5sPSExLHguaD12b2lkIDAseCl9cD51LnQrcio2MCYmKHY9ITAsdS5zPVN0cmluZyhwKSx1Lm8rKyx1Lmc9ITEsdS5oPXZvaWQgMCk7aWYodilWKGEsSC5KLlRlLCEwKSxkLmxzKGEpO2Vsc2UgaWYoZC5YcigpPnR8fGEuZXZlbnROYW1lPT09Ri5ELnNjKXUuZz0hMDtRKGEsSC5KLmxnKT8KTyhhLk0sRi5ELmZiKT91Lmw9ITA6dS5sPSExOnUubD0hMTt2YXIgeT11Lmg7aWYoUShhLEguSi5sZyl8fGJrKFpLKGEpKSl7dmFyIHo9TyhhLk0sRi5ELm9oKSxDPXo/MTo4O3p8fCh6PXksQz00KTt6fHwoej16digpLEM9Nyk7dmFyIEQ9ei50b1N0cmluZygpLEk9QyxHPVEoYSxILkoudGwpO2lmKEc9PT12b2lkIDB8fEk8PUcpVShhLEYuRC5vaCxEKSxWKGEsSC5KLnRsLEkpfWU/KGEuY29weVRvSGl0RGF0YShGLkQueGMsdS5zKSxhLmNvcHlUb0hpdERhdGEoRi5ELkFoLHUubyksYS5jb3B5VG9IaXREYXRhKEYuRC56aCx1Lmc/MTowKSk6KFUoYSxGLkQueGMsdS5zKSxVKGEsRi5ELkFoLHUubyksVShhLEYuRC56aCx1Lmc/MTowKSk7VihhLEguSi5ybSx1Lmw/MTowKTtXaigpJiZWKGEsSC5KLm9nLHUuZHx8Y2MoKSl9fTsKdmFyIGtSPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiPyIpLGM9Yj09PS0xP2E6YS5zdWJzdHJpbmcoMCxiKSxkPUtqKGMpO2QmJihjPWQpO3JldHVybiBiPT09LTE/YzoiIitjK2Euc3Vic3RyaW5nKGIpfSxsUj1mdW5jdGlvbihhKXtpZighTyhhLk0sRi5ELlljKXx8IU8oYS5NLEYuRC5aYykpe3ZhciBiPWEuY29weVRvSGl0RGF0YSxjPUYuRC56YSxkPSIiLGU9Qi5sb2NhdGlvbjtpZihlKXt2YXIgZj1lLnBhdGhuYW1lfHwiIjtmLmNoYXJBdCgwKSE9PSIvIiYmKGY9Ii8iK2YpO3ZhciBnPWUuc2VhcmNofHwiIjtpZihnWzBdPT09Ij8iKWZvcih2YXIgaD1nLnN1YnN0cmluZygxKS5zcGxpdCgiJiIpLGw9MDtsPGgubGVuZ3RoOysrbCl7dmFyIG49aFtsXS5zcGxpdCgiPSIpO24mJm4ubGVuZ3RoPT09MiYmblswXT09PSJ3YnJhaWQiJiYoZz1nLnJlcGxhY2UoLyhbPyZdKXdicmFpZD1bXiZdKy8sIiQxd2JyYWlkPSIrJGIoblsxXSkpKX1kPWUucHJvdG9jb2wrIi8vIitlLmhvc3RuYW1lKwpmK2d9Yi5jYWxsKGEsYyxkLGtSKTt2YXIgcD1hLmNvcHlUb0hpdERhdGEscT1GLkQuVWEscj11QSgiZ3RtLmd0YWdSZWZlcnJlci4iK2EudGFyZ2V0LmRlc3RpbmF0aW9uSWQpLHQ9Qi5yZWZlcnJlcjtwLmNhbGwoYSxxLChyPyIiK3I6dCl8fHZvaWQgMCxrUik7YS5jb3B5VG9IaXREYXRhKEYuRC5NYixCLnRpdGxlKTthLmNvcHlUb0hpdERhdGEoRi5ELnRiLChIYy5sYW5ndWFnZXx8IiIpLnRvTG93ZXJDYXNlKCkpO3ZhciB1PXFJKCk7YS5jb3B5VG9IaXREYXRhKEYuRC5iZCx1LndpZHRoKyJ4Iit1LmhlaWdodCk7YS5jb3B5VG9IaXREYXRhKEYuRC5ZZix2b2lkIDAsa1IpO1RNKCkmJmEuY29weVRvSGl0RGF0YShGLkQuUGQsIjEiKX19O3ZhciBuUj1mdW5jdGlvbihhKXt2YXIgYj14QyhhLk0pLGM9ZnVuY3Rpb24oZCxlKXttUltkXSYmVShhLGQsZSl9O0NkKGJbRi5ELktmXSk/R2IoYltGLkQuS2ZdLGZ1bmN0aW9uKGQsZSl7YygoRi5ELktmKyJfIitkKS50b0xvd2VyQ2FzZSgpLGUpfSk6R2IoYixjKX0sb1I9e30sbVI9KG9SW0YuRC5HZl09MSxvUltGLkQuSGZdPTEsb1JbRi5ELklmXT0xLG9SW0YuRC5KZl09MSxvUltGLkQuTGZdPTEsb1JbRi5ELk1mXT0xLG9SKTt2YXIgcFI9ZnVuY3Rpb24oYSl7aWYoIWJrKFpLKGEpKSYmUShhLEguSi5tZykmJlhvKEYuRC5rYSkmJmRJKGEsImdhNF9hZHNfbGlua2VkIiwhMSkpe3ZhciBiPUxLKGEpLGM9SHIoYi5wcmVmaXgpLGQ9UnMoYyk7VShhLEYuRC5CZSxkLkVnKTtVKGEsRi5ELkRlLGQuV2gpO1UoYSxGLkQuQ2UsZC5VaCl9fTt2YXIgcVI9ZnVuY3Rpb24oYSl7dmFyIGI9TyhhLk0sRi5ELlpjKTtiJiZJUChKLlUueG4pO1EoYSxILkouUGMpJiZJUChKLlUuTmspO3ZhciBjPXlrKHprKCkpOyhifHxNayhjKXx8YyYmYy5wYXJlbnQmJmMuY29udGV4dCYmYy5jb250ZXh0LnNvdXJjZT09PTUpJiZJUChKLlUuZm4pO1EoYSxILkouY2opJiZJUChKLlUuSW0pO1EoYSxILkouYmopJiZJUChKLlUuSG0pfTt2YXIgclI9ZnVuY3Rpb24oYSl7dmFyIGI9UShhLEguSi5WaSl8fG5ldyBlcjtRKGEsSC5KLmJqKSYmUShhLEguSi5jaikmJmZyKGIsMik7VihhLEguSi5WaSxiKX07ZnVuY3Rpb24gc1IoYSl7YS5jb3B5VG9IaXREYXRhKEYuRC5mYik7dmFyIGI9TyhhLk0sRi5ELldkKTtiJiYoS0MoYixmdW5jdGlvbigpe30pLFUoYSxGLkQuV2QsYikpfTt2YXIgdVI9ZnVuY3Rpb24oYSl7aWYodFIuTXIucmVwbGFjZSgvXHMrL2csIiIpLnNwbGl0KCIsIikuaW5kZXhPZihhLmV2ZW50TmFtZSk+PTApYS5pc0Fib3J0ZWQ9ITA7ZWxzZXt2YXIgYj1YSyhhKTtiJiZiLmJsYWNrbGlzdGVkJiYoYS5pc0Fib3J0ZWQ9ITApfX0sdFI9e01yOkxmKDMxKX07ZnVuY3Rpb24gdlIoYSl7dmFyIGI9ZnVuY3Rpb24oYyl7cmV0dXJuISFjJiZjLmNvbnZlcnNpb259O1YoYSxILkoubWcsYihYSyhhKSkpO1EoYSxILkoubmcpJiZWKGEsSC5KLlltLGIoWEsoYSwiZmlyc3RfdmlzaXQiKSkpO1EoYSxILkouVGUpJiZWKGEsSC5KLmJuLGIoWEsoYSwic2Vzc2lvbl9zdGFydCIpKSl9O3ZhciB3Uj1mdW5jdGlvbihhKXtGby5oYXNPd25Qcm9wZXJ0eShhLmV2ZW50TmFtZSkmJihWKGEsSC5KLldtLCEwKSxhLmNvcHlUb0hpdERhdGEoRi5ELkhhKSxhLmNvcHlUb0hpdERhdGEoRi5ELmViKSl9O3ZhciB4Uj1mdW5jdGlvbihhKXtRKGEsSC5KLmJlKT9WKGEsSC5KLmxnLCExKTpkSShhLCJjY2RfYWRkX2VjX3N0aXRjaGluZyIsITEpJiZWKGEsSC5KLmxnLCEwKX07dmFyIHlSPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkoucGcpO2I9Ynx8MDt2YXIgYz0hIVEoYSxILkouc2EpLGQ9Yj09PTB8fGM7VihhLEguSi5laixkKTtkJiZWKGEsSC5KLnBnLDYwKX07dmFyIEFSPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPVN0cmluZyh6Ui5jb29raWUpLnNwbGl0KCI7IiksZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLnNwbGl0KCI9IiksZj1lWzBdLnRyaW0oKTtpZihmJiZhKGYpKXt2YXIgZz1lLnNsaWNlKDEpLmpvaW4oIj0iKS50cmltKCk7ZyYmKGc9ZGVjb2RlVVJJQ29tcG9uZW50KGcpKTt2YXIgaD12b2lkIDAsbD12b2lkIDA7KChoPWIpW2w9Zl18fChoW2xdPVtdKSkucHVzaChnKX19cmV0dXJuIGJ9O3ZhciBCUj13aW5kb3cselI9ZG9jdW1lbnQsQ1I9ZnVuY3Rpb24oYSl7dmFyIGI9QlIuX2dhVXNlclByZWZzO2lmKGImJmIuaW9vJiZiLmlvbygpfHx6Ui5kb2N1bWVudEVsZW1lbnQuaGFzQXR0cmlidXRlKCJkYXRhLWdvb2dsZS1hbmFseXRpY3Mtb3B0LW91dCIpfHxhJiZCUlsiZ2EtZGlzYWJsZS0iK2FdPT09ITApcmV0dXJuITA7dHJ5e3ZhciBjPUJSLmV4dGVybmFsO2lmKGMmJmMuX2dhVXNlclByZWZzJiZjLl9nYVVzZXJQcmVmcz09Im9vIilyZXR1cm4hMH1jYXRjaChmKXt9Zm9yKHZhciBkPUFSKGZ1bmN0aW9uKGYpe3JldHVybiBmPT09IkFNUF9UT0tFTiJ9KS5BTVBfVE9LRU58fFtdLGU9MDtlPGQubGVuZ3RoO2UrKylpZihkW2VdPT0iJE9QVF9PVVQiKXJldHVybiEwO3JldHVybiB6Ui5nZXRFbGVtZW50QnlJZCgiX19nYU9wdE91dEV4dGVuc2lvbiIpPyEwOiExfTt2YXIgRFI9ZnVuY3Rpb24oYSl7aWYoQ1IoYS50YXJnZXQuZGVzdGluYXRpb25JZCkpUCgyOCksYS5pc0Fib3J0ZWQ9ITA7ZWxzZXt2YXIgYj14aygpO2lmKGImJkFycmF5LmlzQXJyYXkoYi5kZXN0aW5hdGlvbnMpKWZvcih2YXIgYz0wO2M8Yi5kZXN0aW5hdGlvbnMubGVuZ3RoO2MrKylpZihDUihiLmRlc3RpbmF0aW9uc1tjXSkpe1AoMTI1KTthLmlzQWJvcnRlZD0hMDticmVha319fTt2YXIgRVI9ZnVuY3Rpb24oYSl7dmFyIGI9Qi5sb2NhdGlvbi5wcm90b2NvbDtiIT09Imh0dHA6IiYmYiE9PSJodHRwczoiJiYoUCgyOSksYS5pc0Fib3J0ZWQ9ITApfTt2YXIgRlI9ZnVuY3Rpb24oYSl7SGMmJkhjLmxvYWRQdXJwb3NlPT09InByZXZpZXciJiYoUCgzMCksYS5pc0Fib3J0ZWQ9ITApfTt2YXIgR1I9ZnVuY3Rpb24oYSxiKXtiLlRqJiYoVihhLEguSi5zYSwhMCksYi5Uaj0hMSxXaigpJiZWKGEsSC5KLm9nLGNjKCkpKX07dmFyIEhSPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYyxkKXtCb1tjXXx8ZD09PXZvaWQgMHx8VShhLGMsZCl9TSg1NTApJiZHYihhLk0uV2EsYik7R2IoYS5NLmhiLGIpO0diKGEuTS5FYSxiKX07dmFyIElSPWZ1bmN0aW9uKGEpe2EuZXZlbnROYW1lPT09Ri5ELndhJiYoTyhhLk0sRi5ELlRkLCEwKT8oYS5NLkVhW0YuRC5PYV0mJihNKDU1MCkmJihhLk0uV2FbRi5ELk9hXT1hLk0uRWFbRi5ELk9hXSksYS5NLmhiW0YuRC5PYV09YS5NLkVhW0YuRC5PYV0sYS5NLkVhW0YuRC5PYV09dm9pZCAwLFUoYSxGLkQuT2EpKSxhLmV2ZW50TmFtZT1GLkQuc2MpOmEuaXNBYm9ydGVkPSEwKX07CnZhciBKUj1mdW5jdGlvbihhKXtpZihNKDEzMikpe3ZhciBiPVpLKGEpO2lmKGJrKGIpKWlmKGNrKGIpKWNrKFpLKGEpKSYmYS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLHsiM3BkIjoiMSJ9KTtlbHNlIGlmKCEoTmMoIjsgd3YiKXx8TmMoIkZCQU4iKXx8TmMoIkZCQVYiKXx8UGMoKSkmJlhvKEYuRC5yYSkpe1YoYSxILkouZG4sITApO2JrKFpLKGEpKSYmV0soYSwic3dfZXhwIiwxKTthOntpZighTSgxMzIpfHwhYmsoWksoYSkpfHxjayhaSyhhKSkpYnJlYWsgYTtiOnt2YXIgYz17b3Q6WWooZWsoYS5NKSwiL18vc2VydmljZV93b3JrZXIiKX0sZDtkPShjPT09dm9pZCAwP3t9OmMpLm90O3ZhciBlPWlMKGQpO2lmKGU9PT1udWxsfHwhYmcoImludGVybmFsX3N3X2FsbG93ZWQiLCIiKXx8akwoZS5vcmlnaW4pKWJyZWFrIGI7CmlmKCFJYygpKXtnTCgpLksodm9pZCAwLHZvaWQgMCw2KTticmVhayBifXZhciBmPW5ldyBrTChlKTtvbShqbS5iYS5PaCx7fSlbZS5vcmlnaW5dPWY7fX19fX07dmFyIExSPWZ1bmN0aW9uKGEpe2EuY29weVRvSGl0RGF0YShGLkQuT2wpO08oYS5NLEYuRC54aCkmJihVKGEsRi5ELnhoLCEwKSxiayhaSyhhKSl8fEtSKGEpKX0sS1I9ZnVuY3Rpb24oYSl7dmFyIGI9Ri5ELmJkLGM7Y3x8KGM9ZnVuY3Rpb24oKXt9KTtSKGEsYikhPT12b2lkIDAmJlUoYSxiLGMoUihhLGIpKSl9O3ZhciBNUj0iZ2NsaWQgZGNsaWQgZ2Nsc3JjIHdicmFpZCBnYnJhaWQgZ2FkX3NvdXJjZSBnYWRfY2FtcGFpZ25pZCB1dG1fc291cmNlIHV0bV9tZWRpdW0gdXRtX2NhbXBhaWduIHV0bV90ZXJtIHV0bV9jb250ZW50IHV0bV9pZCIuc3BsaXQoIiAiKTtmdW5jdGlvbiBOUigpe3ZhciBhPUIubG9jYXRpb24sYixjPWE9PW51bGw/dm9pZCAwOihiPWEuc2VhcmNoKT09bnVsbD92b2lkIDA6Yi5yZXBsYWNlKCI/IiwiIiksZDtpZihjKXtmb3IodmFyIGU9W10sZj1KaihjLCEwKSxnPW0oTVIpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlLG49ZltsXTtpZihuKWZvcih2YXIgcD0wO3A8bi5sZW5ndGg7cCsrKXt2YXIgcT1uW3BdO3EhPT12b2lkIDAmJmUucHVzaCh7bmFtZTpsLHZhbHVlOnF9KX19ZD1lfWVsc2UgZD1bXTtyZXR1cm4gZH07dmFyIE9SPWZ1bmN0aW9uKGEpe3ZhciBiPU0oMjY2KSxjPU0oMjY3KTtpZihifHxjKXt2YXIgZD1SKGEsRi5ELnphKTtpZihkJiZkLmluZGV4T2YoIj8iKT09PS0xKXt2YXIgZT1OUigpO2lmKGUubGVuZ3RoIT09MCYmKGImJklQKEouVS5HbSksYykpe0lQKEouVS5GbSk7dmFyIGY9ZS5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIGcubmFtZSsiPSIrZy52YWx1ZX0pLmpvaW4oIiYiKTtVKGEsRi5ELnphLGQrIj8iK2YpfX19fTt2YXIgUFI9W0YuRC5yYSxGLkQua2FdLFFSPVtGLkQucmEsRi5ELmthLEYuRC5tYV07CmZ1bmN0aW9uIFJSKGEpe3ZhciBiLGM9TSg1MDYpJiYhZEkoYSwiY2NkX2dhX2Fkc19pZHNfb3B0X291dCIsITEpLGQ9ISFkSShhLCJnb29nbGVfbmciLCExKSxlPVhvKGM/ZD9RUjpmcDpQUiksZjtmPWRJKGEsRi5ELlVmLE8oYS5NLEYuRC5VZikpfHwhIWRJKGEsImdvb2dsZV9uZyIsITEpO2I9e2hmOmMsRXM6ZCxHbzplLGZmOmYsTGc6ISFkSShhLCJnYTRfYWRzX2xpbmtlZCIsITEpLGJpOkFtKCksR2o6IVZLKCksRnM6YmsoWksoYSkpLERzOiEhUShhLEguSi5iZSksR3M6ISFRKGEsSC5KLlRlKSx1czohIU8oYS5NLEYuRC5ObCksS3M6ISFRKGEsSC5KLmVqKSx4ZzpPKGEuTSxGLkQuU2MpLG5yOk8oYS5NLEYuRC5TYyx2b2lkIDAsNCksSHM6ISFRKGEsSC5KLkZjKX07VihhLEguSi5jaixiLmZmKTtWKGEsSC5KLmJqLFNSKGIpKTtiLmhmJiYhYi5mZiYmYi5MZyYmU1IoYikmJlUoYSwiXyZpYnQiLCIxIik7U1IoYikmJmIuR28mJihiLmhmP2IueGchPT0hMXx8Yi5MZzoxKSYmVihhLApILkoucm4sITApO2IuRXMmJiFiLmJpJiZVKGEsRi5ELkxlLDEpOyhiLmhmP2IueGc6Yi5ucik9PT0hMSYmVShhLCJfJm5ncyIsIjEiKTtWKGEsSC5KLmhkLFRSKGIpJiYoYi5Hc3x8Yi51cykpO1YoYSxILkoucmcsVFIoYikmJmIuS3MmJiFiLmJpKX1mdW5jdGlvbiBTUihhKXtyZXR1cm4gYS5oZj8oYS5MZ3x8YS5mZikmJiFhLmJpJiYhYS5HajphLmZmJiZhLnhnIT09ITEmJiFhLkdqJiYhYS5iaX1mdW5jdGlvbiBUUihhKXtpZihhLkhzKXJldHVybiExO2lmKGEuaGYpe2lmKCFhLmZmJiYhYS5MZylyZXR1cm4hMX1lbHNlIGlmKCFhLmZmKXJldHVybiExO3JldHVybiBhLkZzfHxhLkRzfHxhLkdqfHwoYS5oZj9hLnhnPT09ITEmJiFhLkxnOmEueGc9PT0hMSl8fCFhLkdvPyExOiEwfTt2YXIgVVI9ZnVuY3Rpb24oYSl7c0woKSYmVShhLEYuRC5GZSwiMSIpfTt2YXIgVlI9ZnVuY3Rpb24oYSl7dmFyIGI9e3ByZWZpeDpTdHJpbmcoTyhhLk0sRi5ELm5iLCIiKSkscGF0aDpTdHJpbmcoTyhhLk0sRi5ELnZjLCIvIikpLGZsYWdzOlN0cmluZyhPKGEuTSxGLkQuVGIsIiIpKSxkb21haW46U3RyaW5nKE8oYS5NLEYuRC5MYiwiYXV0byIpKSxwZDpOdW1iZXIoTyhhLk0sRi5ELkNiLDYzMDcyRTMpKX07VihhLEguSi5HYSxiKX07dmFyIFdSPWZ1bmN0aW9uKGEpe2lmKE0oNDM1KXx8TSg1NTMpKXt2YXIgYj1EbSgpO2ImJlYoYSxILkouQXEsYil9fTt2YXIgWVI9ZnVuY3Rpb24oYSl7YS5jb3B5VG9IaXREYXRhKEYuRC5SaSk7Zm9yKHZhciBiPU8oYS5NLEYuRC5SbCl8fFtdLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtpZihkLnJ1bGVfcmVzdWx0KXthLmNvcHlUb0hpdERhdGEoRi5ELlJpLGQudHJhZmZpY190eXBlKTtJUChKLlUuRW4pO2JyZWFrfX19O3ZhciBaUj1mdW5jdGlvbihhKXtpZihkSShhLCJnYTRfYWRzX2xpbmtlZCIsITEpJiZhLmV2ZW50TmFtZT09PUYuRC53YSl7dmFyIGI9TyhhLk0sRi5ELnVjKSE9PSExO2lmKGIpe3ZhciBjPUxLKGEpO2MucGQmJihjLnBkPU1hdGgubWluKGMucGQsNzc3NkUzKSk7UEsoe1RuOmIsbW86T28oTyhhLk0sRi5ELkRiKSksUW86ISFPKGEuTSxGLkQuemMpLFVuOmN9KX19fTt2YXIgJFI9ZnVuY3Rpb24oYSl7VihhLEguSi5NaCwhMSk7VihhLEguSi5OaCwhMSk7aWYoIURtKCkmJldqKCkmJiFiayhaSyhhKSkmJiFRKGEsSC5KLmJlKSYmUShhLEguSi5laikpe3ZhciBiPVEoYSxILkoucmcpO1EoYSxILkoub2cpJiYoYj9WKGEsSC5KLk5oLCEwKTpWKGEsSC5KLk1oLCEwKSl9fTt2YXIgYVM9ZnVuY3Rpb24oYSl7TyhhLk0sRi5ELnpjKSYmKFhvKEYuRC5yYSl8fE8oYS5NLEYuRC5LYil8fFUoYSxGLkQuWm0sITApKTt2YXIgYjt2YXIgYztjPWM9PT12b2lkIDA/MzpjO3ZhciBkPUEubG9jYXRpb24uaHJlZjtpZihkKXt2YXIgZT1SaihkKS5zZWFyY2gucmVwbGFjZSgiPyIsIiIpLGY9SWooZSwiX2dsIiwhMSwhMCl8fCIiO2I9Zj9WcShmLGMpIT09dm9pZCAwOiExfWVsc2UgYj0hMTtiJiZiayhaSyhhKSkmJldLKGEsImdsdiIsMSk7aWYoYS5ldmVudE5hbWUhPT1GLkQud2EpcmV0dXJue307TyhhLk0sRi5ELnpjKSYmQXMoWyJhdyIsImRjIl0pO0NzKFsiYXciLCJkYyJdKTt2YXIgZz0kUChhKSxoPVpQKGEpO3JldHVybiBPYmplY3Qua2V5cyhnKS5sZW5ndGg/ZzpofTt2YXIgYlM9ZnVuY3Rpb24oYSl7dmFyIGI9ITA7Yj1iPT09dm9pZCAwPyExOmI7aWYoTSg0MjUpJiYhKHBsKCl8fGImJlEoYSxILkouZGopfHxhLmV2ZW50TmFtZSE9PUYuRC53YXx8UShhLEguSi5GYykpKXt2YXIgYz17fSxkPXt9LGU9e2V2ZW50TWV0YWRhdGE6bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxhLk0uZXZlbnRNZXRhZGF0YSwoY1tILkouRmNdPSEwLGMpLGI/e306KGRbSC5KLkRjXT1YLlYuS2EsZCkpLG5vR3RtRXZlbnQ6ITB9LGY9c0MoYS50YXJnZXQuZGVzdGluYXRpb25JZCwic3RydWN0dXJlZF9kYXRhIixhLk0uRWEpO21EKGYsYS5NLmV2ZW50SWQsZSl9fTsKdmFyIGRTPWZ1bmN0aW9uKGEpe3JldHVybiFhfHxjUy50ZXN0KGEpfHxEby5oYXNPd25Qcm9wZXJ0eShhKX0sY1M9L14oX3xnYV98Z29vZ2xlX3xndGFnXC58ZmlyZWJhc2VfKS4qJC8sZVM9ZnVuY3Rpb24oYSl7dGhpcy55YT1hO3RoaXMuSD10aGlzLnpiPXRoaXMuY2xpZW50SWQ9dm9pZCAwO3RoaXMuamE9dGhpcy5SPSExO3RoaXMuTGE9MDt0aGlzLk49ITE7dGhpcy5aPXtUajohMX07dGhpcy5mYT1uZXcgSVE7dGhpcy5LPW5ldyBIUH07az1lUy5wcm90b3R5cGU7ay5acz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcyxlPWJDKHRoaXMueWEpO2lmKGUpaWYoYy5ldmVudE1ldGFkYXRhW0guSi5hZV0mJmEuY2hhckF0KDApPT09Il8iKWMub25GYWlsdXJlKCk7ZWxzZXthIT09Ri5ELndhJiZhIT09Ri5ELkpiJiZkUyhhKSYmUCg1OCk7dmFyIGY9bmV3IGFJKGUsYSxjKTtWKGYsSC5KLkViLGIpO3ZhciBnPVtGLkQucmFdLGg9YmsoWksoZikpO1YoZixILkouZGosaCk7aWYoZEkoZixGLkQuVWYsCk8oZi5NLEYuRC5VZikpfHxoKWcucHVzaChGLkQua2EpLGcucHVzaChGLkQubWEpO0ZNLmZhKGZ1bmN0aW9uKCl7YnAoZnVuY3Rpb24oKXtkLmJ0KGYpfSxnKX0pfWVsc2UgYy5vbkZhaWx1cmUoKX07ay5idD1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3RyeXtITShhKTtpZihhLmlzQWJvcnRlZCl7dGIoKTtyZXR1cm59Sk0oYSk7RFIoYSk7dVIoYSk7RVIoYSk7RlIoYSk7SU0oYSk7dmFyIGM9e307ZVEoYSxjKTtpZihhLmlzQWJvcnRlZCl7YS5NLm9uRmFpbHVyZSgpO3RiKCk7cmV0dXJufXRoaXMuSD1hO3ZhciBkPWMudXI7Yy5Icj09PTAmJklQKEouVS5ubCk7ZD09PTAmJklQKEouVS5Mayk7Wk0oYSk7VihhLEguSi50Zyxjby5pYS54ZCk7VlIoYSk7SFIoYSk7dGhpcy5McShhKTt0aGlzLksuS3QoYSk7VShhLEYuRC56aSxhbCg4LE5GKSk7eFIoYSk7cE4oYSk7WlIoYSk7TVEoYSk7dGhpcy5BbyhhUyhhKSk7YlMoYSk7dmFyIGU9YS5ldmVudE5hbWU9PT1GLkQud2E7ZSYmKHRoaXMuTj0KITApO0lSKGEpO2UmJiFhLmlzQWJvcnRlZCYmdGhpcy5MYSsrPjAmJklQKEouVS5obik7VUwoYSk7alIoYSx0aGlzLmNsaWVudElkLHRoaXMuemIsdGhpcy5LLCF0aGlzLmphKTtuUihhKTtsUihhKTtPUihhKTtYTChhKTtHUihhLHRoaXMuWik7eVIoYSk7dlIoYSk7d1IoYSk7WVIoYSk7YVEoYSk7Z1EoYSk7d00oYSk7aFIoYSk7WVEoYSk7Z1IoYSk7ZlIoYSk7ZVIoYSk7ZFIoYSk7Y1IoYSk7YVIoYSk7JFEoYSk7V1EoYSk7VVEoYSk7VFEoYSk7U1EoYSk7YlEoYSk7Y1EoYSk7TyhhLk0sRi5ELnhoKSYmIWJrKFpLKGEpKXx8R00oYSk7VVIoYSk7V1IoYSk7aU4oYSk7VkwoYSk7U0woYSk7bE4oYSk7aE4oYSk7WE0oYSwhMSk7c1IoYSk7UlIoYSk7JFIoYSk7Tk0oYSk7clIoYSk7cFIoYSk7YlIoYSk7WlEoYSk7UlEoYSk7cVIoYSk7IXRoaXMuTiYmUShhLEguSi5QYykmJklQKEouVS5zbCk7SlAoYSk7aWYoTSg1NzUpKXtpZihhLmlzQWJvcnRlZCl7aWYoIVEoYSxILkouU28pKWEuTS5vbkZhaWx1cmUoKTsKdGIoKTtyZXR1cm59aWYoUShhLEguSi5KYSkpe2EuTS5vbkZhaWx1cmUoKTt0YigpO3JldHVybn19ZWxzZSBpZihRKGEsSC5KLkphKXx8YS5pc0Fib3J0ZWQpe2EuTS5vbkZhaWx1cmUoKTt0YigpO3JldHVybn10aGlzLkFvKGlSKGEsdGhpcy5jbGllbnRJZCkpO3RoaXMuamE9ITA7dGhpcy5IdChhKTtKUihhKTtWUShmdW5jdGlvbihmKXtiLk1uKGYpfSxhKTt0aGlzLksucWsoKTtMUihhKTtnTihhKTtXTChhKTtZTShhKTtpZihhLmlzQWJvcnRlZCl7YS5NLm9uRmFpbHVyZSgpO3RiKCk7cmV0dXJufXRoaXMuTW4oYSk7YS5NLm9uU3VjY2VzcygpfWNhdGNoKGYpe2EuTS5vbkZhaWx1cmUoKX10YigpfTtrLk1uPWZ1bmN0aW9uKGEpe3RoaXMuZmEuYWRkKGEpfTtrLkFvPWZ1bmN0aW9uKGEpe3ZhciBiPWEuY2xpZW50SWQsYz1hLnpiO2ImJmMmJih0aGlzLmNsaWVudElkPWIsdGhpcy56Yj1jKX07ay5mbHVzaD1mdW5jdGlvbigpe3RoaXMuZmEuZmx1c2goKX07ay5IdD1mdW5jdGlvbihhKXt2YXIgYj0KdGhpcztpZighdGhpcy5SKXt2YXIgYz1YbyhGLkQubWEpLGQ9WG8oRi5ELnJhKTskbyhbRi5ELm1hLEYuRC5yYSxGLkQua2FdLGZ1bmN0aW9uKGUpe3ZhciBmO2Y9KGU9PT12b2lkIDA/e306ZSkuY29uc2VudEV2ZW50SWQ7dmFyIGc9WG8oRi5ELm1hKSxoPVhvKEYuRC5yYSksbD0hMSxuPXt9LHA9e307aWYoZCE9PWgmJmIuSCYmYi56YiYmYi5jbGllbnRJZCl7dmFyIHE9Yi5jbGllbnRJZCxyO3ZhciB0PUxQKGIuemIpO3I9dD90Lmg6dm9pZCAwO2lmKGgpe3ZhciB1PUZQKGIuSCk7aWYodSl7Yi5jbGllbnRJZD11O3ZhciB2PVNQKGIuSCk7diYmKGIuemI9UFAodixiLnpiLGIuSCkpfWVsc2UgRFAoYi5jbGllbnRJZCxiLkgpLEFQKGIuY2xpZW50SWQsITApO1JQKGIuemIsYi5IKTtsPSEwO25bRi5ELk5sXT1xO3ImJihuW0YuRC5icV09cil9ZWxzZSBiLnpiPXZvaWQgMCxiLmNsaWVudElkPXZvaWQgMCxBLmdhR2xvYmFsPXt9fWcmJiFjJiYobD0hMCxwW0guSi5HaF09ITAsbltGLkQueGldPQpMb1tGLkQubWFdKTtpZihsKXt2YXIgeD1zQyhiLnlhLEYuRC55ZixuKTttRCh4LGYhPW51bGw/ZjphLk0uZXZlbnRJZCx7ZXZlbnRNZXRhZGF0YTpwfSl9ZD1oO2M9ZztiLlouVGo9ITB9KTt0aGlzLlI9ITB9fTtrLkxxPWZ1bmN0aW9uKGEpe2EuZXZlbnROYW1lIT09Ri5ELkpiJiZ0aGlzLksuS3EoYSl9O3ZhciBnUz1mdW5jdGlvbihhKXtpZighZlMoYSkpe3ZhciBiPSExLGM9ZnVuY3Rpb24oKXshYiYmZlMoYSkmJihiPSEwLGFkKEIsInZpc2liaWxpdHljaGFuZ2UiLGMpLGFkKEIsInByZXJlbmRlcmluZ2NoYW5nZSIsYyksUCg1NSkpfTskYyhCLCJ2aXNpYmlsaXR5Y2hhbmdlIixjKTskYyhCLCJwcmVyZW5kZXJpbmdjaGFuZ2UiLGMpO1AoNTQpfX0sZlM9ZnVuY3Rpb24oYSl7aWYoInByZXJlbmRlcmluZyJpbiBCP0IucHJlcmVuZGVyaW5nOkIudmlzaWJpbGl0eVN0YXRlPT09InByZXJlbmRlciIpcmV0dXJuITE7YSgpO3JldHVybiEwfTtmdW5jdGlvbiBoUyhhKXtnUyhmdW5jdGlvbigpe3ZhciBiPWJDKGEpO2lmKGIpe3ZhciBjPWlTKGIpLGQ9Y28uaWEueGQsZT1ZQygpLGY9YkMoYSwhMCk7ZiYmZS5ILnJlZ2lzdGVyKGYsYyxkLHZvaWQgMCl9fSk7fWZ1bmN0aW9uIGlTKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTt2YXIgYz1uZXcgZVMoYS5pZCksZD1hLnByZWZpeD09PSJNQyI7Yj1mdW5jdGlvbihlLGYsZyxoKXtkJiYoaC5ldmVudE1ldGFkYXRhW0guSi5iZV09ITApO2MuWnMoZixnLGgpfTtqUyhhLGMpO3JldHVybiBifQpmdW5jdGlvbiBqUyhhLGIpe3ZhciBjPWIuSztjLmh0KGZ1bmN0aW9uKCl7WmsoOSwhMCk7WUMoKS5mbHVzaCgpO2lmKGMuWWgoKT49MUUzJiZrZCgpKXt2YXIgZD17fSxlPXtldmVudElkOnJqKCksZXZlbnRNZXRhZGF0YTooZFtILkouS2tdPSEwLGQpLGRlZmVycmFibGU6ITB9O1pDKEYuRC55Zix7fSxhLmlkLGUpfWIuZmx1c2goKTtjLkNvKGZ1bmN0aW9uKCl7WmsoOSwhMSk7Yy5DbygpfSl9KTt9dmFyIGtTPUouVS5xbCxsUz1KLlUucmw7ZnVuY3Rpb24gbVMoYSxiKXt2YXIgYz10aygpO2MmJmMuaW5kZXhPZihiKT4tMSYmKGFbSC5KLkNjXT0hMCl9ZnVuY3Rpb24gb1MoYSxiLGMpe3ZhciBkPXRoaXM7fW9TLlA9ImludGVybmFsLmd0YWdDb25maWciO2Z1bmN0aW9uIHBTKGEsYixjLGQpe3ZhciBlPXRoaXM7fXBTLlA9ImludGVybmFsLmd0YWdEZXN0aW5hdGlvbkNvbmZpZyI7CmZ1bmN0aW9uIHJTKGEsYil7fQpyUy5wdWJsaWNOYW1lPSJndGFnU2V0IjtmdW5jdGlvbiBzUygpe3ZhciBhPXt9O3JldHVybiBhfTtmdW5jdGlvbiB0UyhhKXt9dFMuUD0iaW50ZXJuYWwuaW5pdGlhbGl6ZVNlcnZpY2VXb3JrZXIiO2Z1bmN0aW9uIHVTKGEsYil7fXVTLnB1YmxpY05hbWU9ImluamVjdEhpZGRlbklmcmFtZSI7ZnVuY3Rpb24gdlMoYSxiLGMsZCxlKXt9dlMuUD0iaW50ZXJuYWwuaW5qZWN0SHRtbCI7dmFyIEFTPXtkbDoxLGlkOjF9OwpmdW5jdGlvbiBCUyhhLGIsYyxkKXt9QlMucHVibGljTmFtZT0iaW5qZWN0U2NyaXB0IjtmdW5jdGlvbiBDUygpe3ZhciBhPXZtLGI9ITE7Yj0hIWEuSFsiNSJdO3JldHVybiBifUNTLlA9ImludGVybmFsLmlzQXV0b1BpaUVsaWdpYmxlIjtmdW5jdGlvbiBEUyhhKXt2YXIgYj0hMDtyZXR1cm4gYn1EUy5wdWJsaWNOYW1lPSJpc0NvbnNlbnRHcmFudGVkIjtmdW5jdGlvbiBFUyhhKXt2YXIgYj0hMTtyZXR1cm4gYn1FUy5QPSJpbnRlcm5hbC5pc0RlYnVnTW9kZSI7ZnVuY3Rpb24gRlMoYSl7dmFyIGI9ITE7cmV0dXJuIGJ9RlMuUD0iaW50ZXJuYWwuaXNEZXN0aW5hdGlvbkluaXRpYWxpemVkIjtmdW5jdGlvbiBHUygpe3JldHVybiBCbSgpfUdTLlA9ImludGVybmFsLmlzRG1hUmVnaW9uIjtmdW5jdGlvbiBIUygpe3JldHVybiBVQigpfUhTLlA9ImludGVybmFsLmlzRG9tUmVhZHkiO2Z1bmN0aW9uIElTKGEpe3ZhciBiPSExO3JldHVybiBifUlTLlA9ImludGVybmFsLmlzRW50aXR5SW5mcmFzdHJ1Y3R1cmUiO2Z1bmN0aW9uIEpTKGEpe3ZhciBiPSExO2lmKCFxaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsibnVtYmVyIl0sW2FdKTtiPU0oYSk7cmV0dXJuIGJ9SlMuUD0iaW50ZXJuYWwuaXNGZWF0dXJlRW5hYmxlZCI7ZnVuY3Rpb24gS1MoKXt2YXIgYT0hMTtyZXR1cm4gYX1LUy5QPSJpbnRlcm5hbC5pc0ZwZmUiO2Z1bmN0aW9uIExTKCl7dmFyIGE9ITE7cmV0dXJuIGF9TFMuUD0iaW50ZXJuYWwuaXNHY3BCcm93c2VyIjtmdW5jdGlvbiBNUygpe3ZhciBhPSExO3JldHVybiBhfU1TLlA9ImludGVybmFsLmlzTGFuZGluZ1BhZ2UiO2Z1bmN0aW9uIE5TKCl7dmFyIGE9ITE7cmV0dXJuIGF9TlMuUD0iaW50ZXJuYWwuaXNPZ3QiO2Z1bmN0aW9uIE9TKCl7dmFyIGE7cmV0dXJuIGF9T1MuUD0iaW50ZXJuYWwuaXNTYWZhcmlQY21FbGlnaWJsZUJyb3dzZXIiO2Z1bmN0aW9uIFBTKCl7dmFyIGE9UWgoZnVuY3Rpb24oYil7WEYodGhpcykubG9nKCJlcnJvciIsYil9KTthLnB1YmxpY05hbWU9IkpTT04iO3JldHVybiBhfTtmdW5jdGlvbiBRUyhhKXt2YXIgYj12b2lkIDA7cmV0dXJuIFVkKGIpfVFTLlA9ImludGVybmFsLmxlZ2FjeVBhcnNlVXJsIjtmdW5jdGlvbiBSUygpe3JldHVybiExfQp2YXIgU1M9e2dldEl0ZW06ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDtyZXR1cm4gYn0sc2V0SXRlbTpmdW5jdGlvbihhLGIpe3JldHVybiExfSxyZW1vdmVJdGVtOmZ1bmN0aW9uKGEpe319O2Z1bmN0aW9uIFRTKCl7fVRTLnB1YmxpY05hbWU9ImxvZ1RvQ29uc29sZSI7ZnVuY3Rpb24gVVMoYSxiKXtpZighbGgoYSl8fCFlaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiT2JqZWN0Il0sYXJndW1lbnRzKTt2YXIgYz1hLGQ9VGQoYix0aGlzLlQpLGU9WUMoKSxmPWJDKGMsITApO2YmJlRDKGUuSCxmLGQpO31VUy5QPSJpbnRlcm5hbC5tZXJnZVJlbW90ZUNvbmZpZyI7ZnVuY3Rpb24gVlMoYSxiLGMpe2M9Yz09PXZvaWQgMD8hMDpjO3ZhciBkPVtdO3JldHVybiBVZChkKX1WUy5QPSJpbnRlcm5hbC5wYXJzZUNvb2tpZVZhbHVlc0Zyb21TdHJpbmciO2Z1bmN0aW9uIFdTKGEpe3ZhciBiPXZvaWQgMDtpZih0eXBlb2YgYSE9PSJzdHJpbmciKXJldHVybjthJiZTYihhLCIvLyIpJiYoYT1CLmxvY2F0aW9uLnByb3RvY29sK2EpO2lmKHR5cGVvZiBVUkw9PT0iZnVuY3Rpb24iKXt2YXIgYzthOnt2YXIgZDt0cnl7ZD1uZXcgVVJMKGEpfWNhdGNoKHgpe2M9dm9pZCAwO2JyZWFrIGF9Zm9yKHZhciBlPXt9LGY9QXJyYXkuZnJvbShkLnNlYXJjaFBhcmFtcyksZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgaD1mW2ddWzBdLGw9ZltnXVsxXTtlLmhhc093blByb3BlcnR5KGgpP3R5cGVvZiBlW2hdPT09InN0cmluZyI/ZVtoXT1bZVtoXSxsXTplW2hdLnB1c2gobCk6ZVtoXT1sfWM9e2hyZWY6ZC5ocmVmLG9yaWdpbjpkLm9yaWdpbixwcm90b2NvbDpkLnByb3RvY29sLHVzZXJuYW1lOmQudXNlcm5hbWUscGFzc3dvcmQ6ZC5wYXNzd29yZCxob3N0OmQuaG9zdCxob3N0bmFtZTpkLmhvc3RuYW1lLApwb3J0OmQucG9ydCxwYXRobmFtZTpkLnBhdGhuYW1lLHNlYXJjaDpkLnNlYXJjaCxzZWFyY2hQYXJhbXM6ZSxoYXNoOmQuaGFzaH19cmV0dXJuIFVkKGMpfXZhciBuO3RyeXtuPVJqKGEpfWNhdGNoKHgpe3JldHVybn1pZighbi5wcm90b2NvbHx8IW4uaG9zdClyZXR1cm47dmFyIHA9e307aWYobi5zZWFyY2gpZm9yKHZhciBxPW4uc2VhcmNoLnJlcGxhY2UoIj8iLCIiKS5zcGxpdCgiJiIpLHI9MDtyPHEubGVuZ3RoO3IrKyl7dmFyIHQ9cVtyXS5zcGxpdCgiPSIpLHU9dFswXSx2PUtqKHQuc3BsaWNlKDEpLmpvaW4oIj0iKSl8fCIiO3Y9di5yZXBsYWNlKC9cKy9nLCIgIik7cC5oYXNPd25Qcm9wZXJ0eSh1KT90eXBlb2YgcFt1XT09PSJzdHJpbmciP3BbdV09W3BbdV0sdl06cFt1XS5wdXNoKHYpOnBbdV09dn1uLnNlYXJjaFBhcmFtcz1wO24ub3JpZ2luPW4ucHJvdG9jb2wrIi8vIituLmhvc3Q7bi51c2VybmFtZT0iIjtuLnBhc3N3b3JkPSIiO2I9VWQobik7CnJldHVybiBifVdTLnB1YmxpY05hbWU9InBhcnNlVXJsIjtmdW5jdGlvbiBYUyhhKXtpZighZWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdCJdLGFyZ3VtZW50cyk7dmFyIGI9VGQoYSx0aGlzLlQsMSkucmIoKSxjPXt9O0VkKGIuTS5FYSxjKTtiSShiLGMpO3ZhciBkPXt9O2NJKGIsZCk7ZFtILkouQm5dPSEwO3ZhciBlPXtldmVudE1ldGFkYXRhOmR9LGY9Yi5NLmV2ZW50SWQsZz1zQyhiLnRhcmdldC5kZXN0aW5hdGlvbklkLGIuZXZlbnROYW1lLGMpO21EKGcsZixlKTt9WFMuUD0iaW50ZXJuYWwucHJvY2Vzc0FzTmV3RXZlbnQiO2Z1bmN0aW9uIFlTKGEsYixjKXt2YXIgZDtyZXR1cm4gZH1ZUy5QPSJpbnRlcm5hbC5wdXNoVG9EYXRhTGF5ZXIiO2Z1bmN0aW9uIFpTKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKSxjPSExO2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIl0sYXJndW1lbnRzKTtmb3IodmFyIGQ9W3RoaXMsYV0sZT1tKGIpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKWQucHVzaChUZChmLnZhbHVlLHRoaXMuVCwxKSk7dHJ5e0wuYXBwbHkobnVsbCxkKSxjPSEwfWNhdGNoKGcpe3JldHVybiExfXJldHVybiBjfVpTLnB1YmxpY05hbWU9InF1ZXJ5UGVybWlzc2lvbiI7ZnVuY3Rpb24gJFMoYSl7dmFyIGI9dGhpczt9JFMuUD0iaW50ZXJuYWwucXVldWVBZHNUcmFuc21pc3Npb24iO2Z1bmN0aW9uIGFUKGEpe3ZhciBiPXZvaWQgMDtyZXR1cm4gYn1hVC5wdWJsaWNOYW1lPSJyZWFkQW5hbHl0aWNzU3RvcmFnZSI7ZnVuY3Rpb24gYlQoKXt2YXIgYT0iIjtyZXR1cm4gYX1iVC5wdWJsaWNOYW1lPSJyZWFkQ2hhcmFjdGVyU2V0IjtmdW5jdGlvbiBjVCgpe3JldHVybiBFKDE5KX1jVC5QPSJpbnRlcm5hbC5yZWFkRGF0YUxheWVyTmFtZSI7ZnVuY3Rpb24gZFQoKXt2YXIgYT0iIjtyZXR1cm4gYX1kVC5wdWJsaWNOYW1lPSJyZWFkVGl0bGUiO2Z1bmN0aW9uIGVUKGEsYil7dmFyIGM9dGhpcztpZighbGgoYSl8fCFoaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiZnVuY3Rpb24iXSxhcmd1bWVudHMpO0xNKGEsZnVuY3Rpb24oZCl7Yi5pbnZva2UoYy5ULFVkKGQsYy5ULDEpKX0pO31lVC5QPSJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIjtmdW5jdGlvbiBmVChhLGIpe2lmKCFsaChhKXx8IWVoKGIpJiYhZ2goYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIk9iamVjdHx1bmRlZmluZWQiXSxhcmd1bWVudHMpO2lmKEJoKFhGKHRoaXMpLlBiKCkpKXJldHVybiExO3ZhciBjLGQsZT1iQyhhLCEwKTtpZighZSlyZXR1cm4hMTtzd2l0Y2goZS5wcmVmaXgpe2Nhc2UgIkFXIjpjPXROO2Q9Y28uaWEuY2I7YnJlYWs7Y2FzZSAiREMiOmM9SU47ZD1jby5pYS5jYjticmVhaztjYXNlICJHRiI6Yz1OTjtkPWNvLmlhLmdkO2JyZWFrO2Nhc2UgIkhBIjpjPVBOO2Q9Y28uaWEuZ2Q7YnJlYWs7Y2FzZSAiVUEiOmM9Zk87ZD1jby5pYS5nZDticmVhaztjYXNlICJNQyI6Yz1pUyhlKTtkPWNvLmlhLnhkO2JyZWFrO2Nhc2UgIkciOnJldHVybiBoUyhhKSwhMDtkZWZhdWx0OnJldHVybiExfXZhciBmPWEsCmc9YyxoPWQsbD1UZChiLHRoaXMuVCwxKSxuPVlDKCkscD1iQyhmLCEwKTtwJiZuLkgucmVnaXN0ZXIocCxnLGgsbCk7cmV0dXJuITB9ZlQuUD0iaW50ZXJuYWwucmVnaXN0ZXJEZXN0aW5hdGlvbiI7dmFyIGdUPVsiZXZlbnQiXTtmdW5jdGlvbiBoVChhLGIsYyl7fWhULlA9ImludGVybmFsLnJlZ2lzdGVyR3RhZ0NvbW1hbmRMaXN0ZW5lciI7ZnVuY3Rpb24gaVQoYSxiKXt2YXIgYz0hMTtyZXR1cm4gY31pVC5QPSJpbnRlcm5hbC5yZW1vdmVEYXRhTGF5ZXJFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBqVChhLGIpe30KalQuUD0iaW50ZXJuYWwucmVtb3ZlRm9ybURhdGEiO2Z1bmN0aW9uIGtUKCl7fWtULnB1YmxpY05hbWU9InJlc2V0RGF0YUxheWVyIjtmdW5jdGlvbiBsVChhLGIsYyl7dmFyIGQ9dm9pZCAwO3JldHVybiBkfWxULlA9ImludGVybmFsLnNjcnViVXJsUGFyYW1zIjtmdW5jdGlvbiBtVChhKXt9bVQuUD0iaW50ZXJuYWwuc2VuZEFkc0hpdCI7ZnVuY3Rpb24gblQoYSxiLGMsZCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyfHwhZmgoZCl8fCFmaChjKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiYW55IiwiYW55IiwiT2JqZWN0fHVuZGVmaW5lZCIsIk9iamVjdHx1bmRlZmluZWQiXSxhcmd1bWVudHMpO3ZhciBlPWM/VGQoYyx0aGlzLlQsMSk6e30sZj1UZChhKSxnPUFycmF5LmlzQXJyYXkoZik/ZjpbZl07Yj1TdHJpbmcoYik7dmFyIGg9ZD9UZChkKTp7fSxsPVhGKHRoaXMpO2gub3JpZ2luYXRpbmdFbnRpdHk9dEcobCk7bC5wcmlvcml0eVF1ZXVlJiYoaC5wcmlvcml0eVF1ZXVlPWwucHJpb3JpdHlRdWV1ZSk7Zm9yKHZhciBuPTA7bjxnLmxlbmd0aDtuKyspe3ZhciBwPWdbbl07aWYodHlwZW9mIHA9PT0ic3RyaW5nIil7dmFyIHE9e307RWQoZSxxKTt2YXIgcj17fTtFZChoLHIpO3ZhciB0PXNDKHAsYixxKTttRCh0LApoLmV2ZW50SWR8fGwuZXZlbnRJZCxyKX19fW5ULlA9ImludGVybmFsLnNlbmRHdGFnRXZlbnQiO2Z1bmN0aW9uIG9UKGEsYixjKXt9b1QucHVibGljTmFtZT0ic2VuZFBpeGVsIjtmdW5jdGlvbiBwVChhLGIpe31wVC5QPSJpbnRlcm5hbC5zZXRBbmNob3JIcmVmIjtmdW5jdGlvbiBxVChhKXt9cVQuUD0iaW50ZXJuYWwuc2V0Q29udGFpbmVyQ29uc2VudERlZmF1bHRzIjtmdW5jdGlvbiByVChhLGIsYyxkKXt2YXIgZT10aGlzO2Q9ZD09PXZvaWQgMD8hMDpkO3ZhciBmPSExOwpyZXR1cm4gZn1yVC5wdWJsaWNOYW1lPSJzZXRDb29raWUiO2Z1bmN0aW9uIHNUKGEpe31zVC5QPSJpbnRlcm5hbC5zZXRDb3JlUGxhdGZvcm1TZXJ2aWNlcyI7ZnVuY3Rpb24gdFQoYSxiKXt9dFQuUD0iaW50ZXJuYWwuc2V0RGF0YUxheWVyVmFsdWUiO2Z1bmN0aW9uIHVUKGEpe311VC5wdWJsaWNOYW1lPSJzZXREZWZhdWx0Q29uc2VudFN0YXRlIjtmdW5jdGlvbiB2VChhLGIpe312VC5QPSJpbnRlcm5hbC5zZXREZWxlZ2F0ZWRDb25zZW50VHlwZSI7ZnVuY3Rpb24gd1QoYSxiKXt9d1QuUD0iaW50ZXJuYWwuc2V0Rm9ybUFjdGlvbiI7ZnVuY3Rpb24geFQoYSxiLGMpe2M9Yz09PXZvaWQgMD8hMTpjO2lmKCFsaChhKXx8IW9oKGMpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJhbnkiLCJib29sZWFufHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7aWYoIWttKGEpKXRocm93IEVycm9yKCJzZXRJbkNyb3NzQ29udGFpbmVyRGF0YSByZXF1aXJlcyB2YWxpZCBDcm9zc0NvbnRhaW5lclNjaGVtYSBrZXkuIik7KGN8fG5tKGEpPT09dm9pZCAwKSYmbW0oYSxUZChiLHRoaXMuVCwxKSk7fXhULlA9ImludGVybmFsLnNldEluQ3Jvc3NDb250YWluZXJEYXRhIjtmdW5jdGlvbiB5VChhLGIsYyl7cmV0dXJuITF9eVQucHVibGljTmFtZT0ic2V0SW5XaW5kb3ciO2Z1bmN0aW9uIHpUKGEsYixjKXt9elQuUD0iaW50ZXJuYWwuc2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIjtmdW5jdGlvbiBBVChhLGIsYyl7aWYoIWxoKGEpfHwhbGgoYil8fGFyZ3VtZW50cy5sZW5ndGghPT0zKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJzdHJpbmciLCJhbnkiXSxhcmd1bWVudHMpO2Zvcih2YXIgZD1iLnNwbGl0KCIuIiksZT1lRChhKSxmPTA7ZjxkLmxlbmd0aC0xO2YrKyl7aWYoZVtkW2ZdXT09PXZvaWQgMCllW2RbZl1dPXt9O2Vsc2UgaWYoIUNkKGVbZFtmXV0pKXRocm93IEVycm9yKCJzZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIgZmFpbGVkLCBwYXRoIGNvbnRhaW5zIGEgbm9uLW9iamVjdCB0eXBlOiAiK2RbZl0pO2U9ZVtkW2ZdXX1lW2RbZl1dPVRkKGMsdGhpcy5ULDEpO31BVC5QPSJpbnRlcm5hbC5zZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiO2Z1bmN0aW9uIEJUKGEsYil7fQpCVC5QPSJpbnRlcm5hbC5zZXRUcmFuc21pc3Npb25Nb2RlIjtmdW5jdGlvbiBDVChhLGIsYyxkKXt2YXIgZT10aGlzO31DVC5wdWJsaWNOYW1lPSJzaGEyNTYiO2Z1bmN0aW9uIERUKGEsYixjKXt9CkRULlA9ImludGVybmFsLnNvcnRSZW1vdGVDb25maWdQYXJhbWV0ZXJzIjtmdW5jdGlvbiBFVChhKXt9RVQuUD0iaW50ZXJuYWwuc3RvcmVBZHNCcmFpZExhYmVscyI7ZnVuY3Rpb24gRlQoYSxiKXt2YXIgYz12b2lkIDA7cmV0dXJuIGN9RlQuUD0iaW50ZXJuYWwuc3Vic2NyaWJlVG9Dcm9zc0NvbnRhaW5lckRhdGEiO2Z1bmN0aW9uIEdUKGEpe31HVC5QPSJpbnRlcm5hbC50YXNrU2VuZEFkc0hpdHMiO3ZhciBIVD17Z2V0SXRlbTpmdW5jdGlvbihhKXt2YXIgYj1udWxsO0wodGhpcywiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiKTt2YXIgYz1YRih0aGlzKS5QYigpLGQ9YWwoNyxmdW5jdGlvbigpe3JldHVybnt9fSk7ZFtjXSYmKGI9ZFtjXS5oYXNPd25Qcm9wZXJ0eSgiZ3RtLiIrYSk/ZFtjXVsiZ3RtLiIrYV06bnVsbCk7cmV0dXJuIGJ9LHNldEl0ZW06ZnVuY3Rpb24oYSxiKXtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGM9WEYodGhpcykuUGIoKSxkPWFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2RbY109ZFtjXXx8e307ZFtjXVsiZ3RtLiIrYV09Yjt9LApyZW1vdmVJdGVtOmZ1bmN0aW9uKGEpe0wodGhpcywiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiKTt2YXIgYj1YRih0aGlzKS5QYigpLGM9YWwoNyxmdW5jdGlvbigpe3JldHVybnt9fSk7aWYoIWNbYl18fCFjW2JdLmhhc093blByb3BlcnR5KCJndG0uIithKSlyZXR1cm47ZGVsZXRlIGNbYl1bImd0bS4iK2FdO30sY2xlYXI6ZnVuY3Rpb24oKXtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGE9WEYodGhpcykuUGIoKTtkZWxldGUgYWwoNyxmdW5jdGlvbigpe3JldHVybnt9fSlbYV07fSwKcHVibGljTmFtZToidGVtcGxhdGVTdG9yYWdlIn07ZnVuY3Rpb24gSVQoYSxiKXt2YXIgYz0hMTtpZigha2goYSl8fCFsaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT3BhcXVlVmFsdWUiLCJzdHJpbmciXSxhcmd1bWVudHMpO3ZhciBkPWEuZ2V0VmFsdWUoKTtpZighKGQgaW5zdGFuY2VvZiBSZWdFeHApKXJldHVybiExO2M9ZC50ZXN0KGIpO3JldHVybiBjfUlULlA9ImludGVybmFsLnRlc3RSZWdleCI7ZnVuY3Rpb24gSlQoYSl7dmFyIGI7cmV0dXJuIGJ9O2Z1bmN0aW9uIEtUKGEsYil7fUtULlA9ImludGVybmFsLnRyYWNrVXNhZ2UiO2Z1bmN0aW9uIExUKGEsYil7dmFyIGM7cmV0dXJuIGN9TFQuUD0iaW50ZXJuYWwudW5zdWJzY3JpYmVGcm9tQ3Jvc3NDb250YWluZXJEYXRhIjtmdW5jdGlvbiBNVChhKXt9TVQucHVibGljTmFtZT0idXBkYXRlQ29uc2VudFN0YXRlIjtmdW5jdGlvbiBOVChhKXt2YXIgYj0hMTtyZXR1cm4gYn1OVC5QPSJpbnRlcm5hbC51c2VyRGF0YU5lZWRzRW5jcnlwdGlvbiI7dmFyIE9UPWZ1bmN0aW9uKCl7dGhpcy5IPW5ldyBhaX0sUVQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGI7dmFyIGM9UFQuSDtpZihjLmNvbnRhaW5zKGEpKWI9Yy5nZXQoYSx0aGlzKTtlbHNle3ZhciBkO2lmKGQ9Yy5ILmhhc093blByb3BlcnR5KGEpKXt2YXIgZT10aGlzLlQueGIoKTtpZihlKXt2YXIgZj0hMSxnPWUuUGIoKTtpZihnKXtCaChnKXx8KGY9ITApO31kPWZ9ZWxzZSBkPSEwfWlmKGQpe3ZhciBoPWMuSC5oYXNPd25Qcm9wZXJ0eShhKT9jLkhbYV06dm9pZCAwO2I9aH1lbHNlIHRocm93IEVycm9yKGErIiBpcyBub3QgYSB2YWxpZCBBUEkgbmFtZS4iKTt9cmV0dXJuIGJ9fSxQVDtmdW5jdGlvbiBSVChhLGIsYyl7UFR8fChQVD1uZXcgT1QpO1BULkguYWRkKGEsYixjKX1mdW5jdGlvbiBTVChhLGIpe1BUfHwoUFQ9bmV3IE9UKTt2YXIgYz1QVC5IO2lmKGMuSC5oYXNPd25Qcm9wZXJ0eShhKSl0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhZGQgYSBwcml2YXRlIGZ1bmN0aW9uIHdoaWNoIGFscmVhZHkgZXhpc3RzOiAiK2ErIi4iKTtpZihjLmNvbnRhaW5zKGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFkZCBhIHByaXZhdGUgZnVuY3Rpb24gd2l0aCBhbiBleGlzdGluZyBBUEkgbmFtZTogIithKyIuIik7Yy5IW2FdPXliKGIpP3RoKGEsYik6dWgoYSxiKX07ZnVuY3Rpb24gVFQoYSxiKXtmdW5jdGlvbiBjKGQpe2lmKCFlaChkKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0Il0sYXJndW1lbnRzKTt2YXIgZT1UZChkLHRoaXMuVCwxKS5yYigpO2EoZSl9Yy5QPSJpbnRlcm5hbC4iK2I7cmV0dXJuIGN9O2Z1bmN0aW9uIFVUKCl7dmFyIGE9ZnVuY3Rpb24oYyl7cmV0dXJuIHZvaWQgU1QoYy5QLGMpfSxiPWZ1bmN0aW9uKGMpe3JldHVybiB2b2lkIFJUKGMucHVibGljTmFtZSxjKX07YihSRik7YihZRik7YihSRyk7YihURyk7YihVRyk7YihkSCk7YihmSCk7YihoSSk7YihQUygpKTtiKGpJKTtiKE9PKTtiKFBPKTtiKGxQKTtiKG1QKTtiKG5QKTtiKHVQKTtiKHZQKTtiKHJTKTtiKHVTKTtiKEJTKTtiKERTKTtiKFRTKTtiKFdTKTtiKFpTKTtiKGFUKTtiKGJUKTtiKGRUKTtiKG9UKTtiKHJUKTtiKHVUKTtiKHlUKTtiKENUKTtiKEhUKTtiKE1UKTtSVCgiTWF0aCIsemgoKSk7UlQoIk9iamVjdCIsWmgpO1JUKCJUZXN0SGVscGVyIixjaSgpKTtSVCgiYXNzZXJ0QXBpIix3aCk7UlQoImFzc2VydFRoYXQiLHhoKTtSVCgiZGVjb2RlVXJpIixDaCk7UlQoImRlY29kZVVyaUNvbXBvbmVudCIsRGgpO1JUKCJlbmNvZGVVcmkiLEVoKTtSVCgiZW5jb2RlVXJpQ29tcG9uZW50IixGaCk7UlQoImZhaWwiLApMaCk7UlQoImdlbmVyYXRlUmFuZG9tIixOaCk7UlQoImdldFRpbWVzdGFtcCIsT2gpO1JUKCJnZXRUaW1lc3RhbXBNaWxsaXMiLE9oKTtSVCgiZ2V0VHlwZSIsUGgpO1JUKCJtYWtlSW50ZWdlciIsUmgpO1JUKCJtYWtlTnVtYmVyIixTaCk7UlQoIm1ha2VTdHJpbmciLFRoKTtSVCgibWFrZVRhYmxlTWFwIixVaCk7UlQoIm1vY2siLFhoKTtSVCgibW9ja09iamVjdCIsWWgpO1JUKCJmcm9tQmFzZTY0IixITywhKCJhdG9iImluIEEpKTtSVCgibG9jYWxTdG9yYWdlIixTUywhUlMoKSk7UlQoInRvQmFzZTY0IixKVCwhKCJidG9hImluIEEpKTthKFFGKTthKFVGKTthKG5HKTthKHNHKTthKElHKTthKFBHKTthKFNHKTthKFZHKTthKFdHKTthKFpHKTthKCRHKTthKGFIKTthKGJIKTthKGNIKTthKGVIKTthKGdIKTthKGdJKTthKGlJKTthKGtJKTthKGxJKTthKG1JKTthKG5JKTthKG9JKTthKGZKKTthKG1KKTthKHRKKTthKHVKKTthKEFKKTthKEZKKTthKEtKKTthKFJKKTthKFdKKTthKGdLKTsKYShpSyk7YSh2Syk7YSh3Syk7YSh4Syk7YShGTyk7YShHTyk7YShJTyk7YShKTyk7YShLTyk7YShMTyk7YShNTyk7YShOTyk7YShRTyk7YShSTyk7YShTTyk7YShUTyk7YShVTyk7YShWTyk7YShXTyk7YShYTyk7YShZTyk7YShaTyk7YSgkTyk7YShhUCk7YShiUCk7YShjUCk7YShkUCk7YShlUCk7YShmUCk7YShnUCk7YShoUCk7YShpUCk7YShqUCk7YShrUCk7YShvUCk7YShwUCk7YShxUCk7YShyUCk7YShzUCk7YSh0UCk7YSh3UCk7YShvUyk7YShwUyk7YSh0Uyk7YSh2Uyk7YShDUyk7YShFUyk7YShGUyk7YShHUyk7YShIUyk7YShJUyk7YShKUyk7YShLUyk7YShMUyk7YShNUyk7YShOUyk7YShPUyk7YShRUyk7YShHRyk7YShVUyk7YShWUyk7YShYUyk7YShZUyk7YSgkUyk7YShjVCk7YShlVCk7YShmVCk7YShoVCk7YShpVCk7YShqVCk7YShsVCk7YShtVCk7YShuVCk7YShwVCk7YShxVCk7YShzVCk7YSh0VCk7YSh2VCk7YSh3VCk7YSh4VCk7YSh6VCk7YShBVCk7YShCVCk7YShEVCk7CmEoRVQpO2EoRlQpO2EoR1QpO2EoSVQpO2EoS1QpO2EoTFQpO2EoTlQpO1NUKCJpbnRlcm5hbC5JZnJhbWluZ1N0YXRlU2NoZW1hIixzUygpKTtTVCgiaW50ZXJuYWwucXVpY2tIYXNoIixNaCk7YShUVChNRiwidGFza1NldEFkc1RyYW5zbWlzc2lvblR5cGUiKSksYShUVChQRiwidGFza1NldFVuaXZlcnNhbFBhcmFtcyIpKTtQVHx8KFBUPW5ldyBPVCk7cmV0dXJuIFFUKCl9O3ZhciBKRjtmdW5jdGlvbiBWVCgpe0pGLnNkKGZ1bmN0aW9uKGEsYixjKXtsaigpO3ZhciBkPWpqO2QuSC5TQU5EQk9YRURfSlNfU0VNQVBIT1JFPWQuSC5TQU5EQk9YRURfSlNfU0VNQVBIT1JFfHwwO2QuSC5TQU5EQk9YRURfSlNfU0VNQVBIT1JFKys7dHJ5e3JldHVybiBhLmFwcGx5KGIsYyl9ZmluYWxseXtsaigpLGpqLkguU0FOREJPWEVEX0pTX1NFTUFQSE9SRS0tfX0pfWZ1bmN0aW9uIFdUKGEpe2lmKGEmJmEubGVuZ3RoKWZvcih2YXIgYj1hbCgyNyxmdW5jdGlvbigpe3JldHVybnt9fSksYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLnJlcGxhY2UoL15fKi8sIiIpO2JbZF09WyJzYW5kYm94ZWRTY3JpcHRzIl19fQpmdW5jdGlvbiBYVChhKXtpZihhKXt2YXIgYj1hbCgyNyxmdW5jdGlvbigpe3JldHVybnt9fSk7R2IoYSxmdW5jdGlvbihjLGQpe2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSsrKXt2YXIgZj1kW2VdLnJlcGxhY2UoL15fKi8sIiIpO2JbZl09YltmXXx8W107YltmXS5wdXNoKGMpfX0pfX07ZnVuY3Rpb24gWlQoYSl7bUQocEMoImRldmVsb3Blcl9pZC4iK2EsITApLDAse30pfTtmdW5jdGlvbiAkVChhLGIpe3JldHVybiBFZChhLGJ8fG51bGwpfWZ1bmN0aW9uIFkoYSl7cmV0dXJuIHdpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoYSl9ZnVuY3Rpb24gYVUoYSl7WmMoYSx2b2lkIDAsdm9pZCAwKX1mdW5jdGlvbiBiVShhKXt2YXIgYj1bInZlaW50ZXJhY3RpdmUuY29tIiwidmUtaW50ZXJhY3RpdmUuY24iXTtpZighYSlyZXR1cm4hMTt2YXIgYz1MaihSaihhKSwiaG9zdCIpO2lmKCFjKXJldHVybiExO2Zvcih2YXIgZD0wO2ImJmQ8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdJiZiW2RdLnRvTG93ZXJDYXNlKCk7aWYoZSl7dmFyIGY9Yy5sZW5ndGgtZS5sZW5ndGg7Zj4wJiZlLmNoYXJBdCgwKSE9PSIuIiYmKGYtLSxlPSIuIitlKTtpZihmPj0wJiZjLmluZGV4T2YoZSxmKT09PWYpcmV0dXJuITB9fXJldHVybiExfQpmdW5jdGlvbiBjVShhLGIsYyl7Zm9yKHZhciBkPXt9LGU9ITEsZj0wO2EmJmY8YS5sZW5ndGg7ZisrKWFbZl0mJmFbZl0uaGFzT3duUHJvcGVydHkoYikmJmFbZl0uaGFzT3duUHJvcGVydHkoYykmJihkW2FbZl1bYl1dPWFbZl1bY10sZT0hMCk7cmV0dXJuIGU/ZDpudWxsfWZ1bmN0aW9uIGRVKGEsYil7dmFyIGM9e307aWYoYSlmb3IodmFyIGQgaW4gYSlhLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT1hW2RdKTtpZihiKXt2YXIgZT1jVShiLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJWYWx1ZSIpO2UmJihjPSRUKGUsYykpfXJldHVybiBjfWZ1bmN0aW9uIGVVKGEsYixjKXtyZXR1cm4gYT09PXZvaWQgMHx8YT09PWM/YjphfWZ1bmN0aW9uIGZVKGEsYixjKXtyZXR1cm4gVWMoYSxiLGMsdm9pZCAwKX1mdW5jdGlvbiBnVShhLGIpe0FbYV09Yn1mdW5jdGlvbiBoVShhLGIsYyl7dmFyIGQ9QTtiJiYoZFthXT09PXZvaWQgMHx8YyYmIWRbYV0pJiYoZFthXT1iKTtyZXR1cm4gZFthXX12YXIgaVU9e30salU9WC5WO3ZhciBaPXtzZWN1cml0eUdyb3Vwczp7fX07CgpaLnNlY3VyaXR5R3JvdXBzLmFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlPVsiZ29vZ2xlIl0sWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlPWZ1bmN0aW9uKCl7cmV0dXJue2Fzc2VydDpmdW5jdGlvbigpe30sYWE6ZnVuY3Rpb24oKXtyZXR1cm57fX19fSxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UuTz0iYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiLFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZS5pc1ZlbmRvclRlbXBsYXRlPSEwLFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZS5wcmlvcml0eU92ZXJyaWRlPTAsWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlLmlzSW5mcmFzdHJ1Y3R1cmU9ITEsWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlWyI1Il09ITEsWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlWyI2Il09ITE7CgoKClouc2VjdXJpdHlHcm91cHMucmVhZF9ldmVudF9kYXRhPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJue2tleTpjfX0oZnVuY3Rpb24oYil7Wi5fX3JlYWRfZXZlbnRfZGF0YT1iO1ouX19yZWFkX2V2ZW50X2RhdGEuTz0icmVhZF9ldmVudF9kYXRhIjtaLl9fcmVhZF9ldmVudF9kYXRhLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX3JlYWRfZXZlbnRfZGF0YS5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX3JlYWRfZXZlbnRfZGF0YS5pc0luZnJhc3RydWN0dXJlPSExO1ouX19yZWFkX2V2ZW50X2RhdGFbIjUiXT0hMTtaLl9fcmVhZF9ldmVudF9kYXRhWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9ldmVudERhdGFBY2Nlc3MsZD1iLnZ0cF9rZXlQYXR0ZXJuc3x8W10sZT1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihmLGcpe2lmKGchPW51bGwmJiF6YihnKSl0aHJvdyBlKGYse2tleTpnfSwiS2V5IG11c3QgYmUgYSBzdHJpbmcuIik7CmlmKGMhPT0iYW55Iil7dHJ5e2lmKGM9PT0ic3BlY2lmaWMiJiZnIT1udWxsJiZFZyhnLGQpKXJldHVybn1jYXRjaChoKXt0aHJvdyBlKGYse2tleTpnfSwiSW52YWxpZCBrZXkgZmlsdGVyLiIpO310aHJvdyBlKGYse2tleTpnfSwiUHJvaGliaXRlZCByZWFkIGZyb20gZXZlbnQgZGF0YS4iKTt9fSxhYTphfX0pfSgpOwoKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57b3B0aW9uczp7Zml4TWlzc2luZ0FwaTohIWMuZml4TWlzc2luZ0FwaX19fShmdW5jdGlvbihiKXtaLl9fZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzPWI7Wi5fX2RldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cy5PPSJkZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMiO1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2RldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50c1siNSJdPSExO1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHNbIjYiXT0KITF9KShmdW5jdGlvbihiKXt2YXIgYz0hIWIudnRwX2FsbG93Rml4TWlzc2luZ0phdmFTY3JpcHRBcGksZD1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihlLGYpe2lmKCFjJiZmJiZmLmZpeE1pc3NpbmdBcGkpdGhyb3cgZChlLHt9LCJQcm9oaWJpdGVkIG9wdGlvbjogZml4TWlzc2luZ0FwaS4iKTt9LGFhOmF9fSl9KCk7CgoKCgoKClouc2VjdXJpdHlHcm91cHMuZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3JldHVybnt9fShmdW5jdGlvbihiKXtaLl9fZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cz1iO1ouX19kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzLk89ImRldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMiO1ouX19kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHNbIjUiXT0hMTtaLl9fZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50c1siNiJdPSExfSkoZnVuY3Rpb24oKXtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKCl7fSxhYTphfX0pfSgpOwoKClouc2VjdXJpdHlHcm91cHMuZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJue29wdGlvbnM6Y319KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHM9YjtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzLk89ImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyI7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzWyI1Il09ITE7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50c1siNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfYWxsb3dXYWl0Rm9yVGFncyxkPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGUsCmYpe2lmKCFjJiZmJiZmLndhaXRGb3JUYWdzKXRocm93IGQoZSx7fSwiUHJvaGliaXRlZCBvcHRpb24gd2FpdEZvclRhZ3MuIik7fSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLmRldGVjdF9mb3JtX3N1Ym1pdF9ldmVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57b3B0aW9uczpjfX0oZnVuY3Rpb24oYil7Wi5fX2RldGVjdF9mb3JtX3N1Ym1pdF9ldmVudHM9YjtaLl9fZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cy5PPSJkZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzIjtaLl9fZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19kZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzWyI1Il09ITE7Wi5fX2RldGVjdF9mb3JtX3N1Ym1pdF9ldmVudHNbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2FsbG93V2FpdEZvclRhZ3MsZD1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7CnJldHVybnthc3NlcnQ6ZnVuY3Rpb24oZSxmKXtpZighYyYmZiYmZi53YWl0Rm9yVGFncyl0aHJvdyBkKGUse30sIlByb2hpYml0ZWQgb3B0aW9uIHdhaXRGb3JUYWdzLiIpO30sYWE6YX19KX0oKTsKWi5zZWN1cml0eUdyb3Vwcy5yZWFkX2NvbnRhaW5lcl9kYXRhPVsiZ29vZ2xlIl0sWi5fX3JlYWRfY29udGFpbmVyX2RhdGE9ZnVuY3Rpb24oKXtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKCl7fSxhYTpmdW5jdGlvbigpe3JldHVybnt9fX19LFouX19yZWFkX2NvbnRhaW5lcl9kYXRhLk89InJlYWRfY29udGFpbmVyX2RhdGEiLFouX19yZWFkX2NvbnRhaW5lcl9kYXRhLmlzVmVuZG9yVGVtcGxhdGU9ITAsWi5fX3JlYWRfY29udGFpbmVyX2RhdGEucHJpb3JpdHlPdmVycmlkZT0wLFouX19yZWFkX2NvbnRhaW5lcl9kYXRhLmlzSW5mcmFzdHJ1Y3R1cmU9ITEsWi5fX3JlYWRfY29udGFpbmVyX2RhdGFbIjUiXT0hMSxaLl9fcmVhZF9jb250YWluZXJfZGF0YVsiNiJdPSExOwpaLnNlY3VyaXR5R3JvdXBzLmxpc3Rlbl9kYXRhX2xheWVyPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJue2V2ZW50TmFtZTpjfX0oZnVuY3Rpb24oYil7Wi5fX2xpc3Rlbl9kYXRhX2xheWVyPWI7Wi5fX2xpc3Rlbl9kYXRhX2xheWVyLk89Imxpc3Rlbl9kYXRhX2xheWVyIjtaLl9fbGlzdGVuX2RhdGFfbGF5ZXIuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fbGlzdGVuX2RhdGFfbGF5ZXIucHJpb3JpdHlPdmVycmlkZT0wO1ouX19saXN0ZW5fZGF0YV9sYXllci5pc0luZnJhc3RydWN0dXJlPSExO1ouX19saXN0ZW5fZGF0YV9sYXllclsiNSJdPSExO1ouX19saXN0ZW5fZGF0YV9sYXllclsiNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfYWNjZXNzVHlwZSxkPWIudnRwX2FsbG93ZWRFdmVudHN8fFtdLGU9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZixnKXtpZighemIoZykpdGhyb3cgZShmLHtldmVudE5hbWU6Z30sCiJFdmVudCBuYW1lIG11c3QgYmUgYSBzdHJpbmcuIik7aWYoIShjPT09ImFueSJ8fGM9PT0ic3BlY2lmaWMiJiZkLmluZGV4T2YoZyk+PTApKXRocm93IGUoZix7ZXZlbnROYW1lOmd9LCJQcm9oaWJpdGVkIGxpc3RlbiBvbiBkYXRhIGxheWVyIGV2ZW50LiIpO30sYWE6YX19KX0oKTsKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJue2RhdGFTb3VyY2U6Y319KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhPWI7Wi5fX2RldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGEuTz0iZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YSI7Wi5fX2RldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGEuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YS5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2RldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGEuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YVsiNSJdPSExO1ouX19kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihkLAplKXtpZihlIT09ImF1dG8iJiZlIT09Im1hbnVhbCImJmUhPT0iY29kZSIpdGhyb3cgYyhkLHt9LCJVbmtub3duIHVzZXIgcHJvdmlkZWQgZGF0YSBzb3VyY2UuIik7aWYoYi52dHBfbGltaXREYXRhU291cmNlcylpZihlIT09ImF1dG8ifHxiLnZ0cF9hbGxvd0F1dG9EYXRhU291cmNlcyl7aWYoZT09PSJtYW51YWwiJiYhYi52dHBfYWxsb3dNYW51YWxEYXRhU291cmNlcyl0aHJvdyBjKGQse30sIkRldGVjdGlvbiBvZiB1c2VyIHByb3ZpZGVkIGRhdGEgdmlhIG1hbnVhbGx5IHNwZWNpZmllZCBDU1Mgc2VsZWN0b3JzIGlzIG5vdCBhbGxvd2VkLiIpO2lmKGU9PT0iY29kZSImJiFiLnZ0cF9hbGxvd0NvZGVEYXRhU291cmNlcyl0aHJvdyBjKGQse30sIkRldGVjdGlvbiBvZiB1c2VyIHByb3ZpZGVkIGRhdGEgZnJvbSBhbiBpbi1wYWdlIHZhcmlhYmxlIGlzIG5vdCBhbGxvd2VkLiIpO31lbHNlIHRocm93IGMoZCx7fSwiQXV0b21hdGljIGRldGVjdGlvbiBvZiB1c2VyIHByb3ZpZGVkIGRhdGEgaXMgbm90IGFsbG93ZWQuIik7Cn0sYWE6YX19KX0oKTsKWi5zZWN1cml0eUdyb3Vwcy5nZXRfdXJsPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyxkKXtyZXR1cm57Y29tcG9uZW50OmMscXVlcnlLZXk6ZH19KGZ1bmN0aW9uKGIpe1ouX19nZXRfdXJsPWI7Wi5fX2dldF91cmwuTz0iZ2V0X3VybCI7Wi5fX2dldF91cmwuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fZ2V0X3VybC5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2dldF91cmwuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZ2V0X3VybFsiNSJdPSExO1ouX19nZXRfdXJsWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF91cmxQYXJ0cz09PSJhbnkiP251bGw6W107YyYmKGIudnRwX3Byb3RvY29sJiZjLnB1c2goInByb3RvY29sIiksYi52dHBfaG9zdCYmYy5wdXNoKCJob3N0IiksYi52dHBfcG9ydCYmYy5wdXNoKCJwb3J0IiksYi52dHBfcGF0aCYmYy5wdXNoKCJwYXRoIiksYi52dHBfZXh0ZW5zaW9uJiZjLnB1c2goImV4dGVuc2lvbiIpLGIudnRwX3F1ZXJ5JiYKYy5wdXNoKCJxdWVyeSIpLGIudnRwX2ZyYWdtZW50JiZjLnB1c2goImZyYWdtZW50IikpO3ZhciBkPWMmJmIudnRwX3F1ZXJpZXNBbGxvd2VkIT09ImFueSI/Yi52dHBfcXVlcnlLZXlzfHxbXTpudWxsLGU9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZixnLGgpe2lmKGcpe2lmKCF6YihnKSl0aHJvdyBlKGYse30sIlVSTCBjb21wb25lbnQgbXVzdCBiZSBhIHN0cmluZy4iKTtpZihjJiZjLmluZGV4T2YoZyk8MCl0aHJvdyBlKGYse30sIlByb2hpYml0ZWQgVVJMIGNvbXBvbmVudDogIitnKTtpZihnPT09InF1ZXJ5IiYmZCl7aWYoIWgpdGhyb3cgZShmLHt9LCJQcm9oaWJpdGVkIGZyb20gZ2V0dGluZyBlbnRpcmUgVVJMIHF1ZXJ5IHdoZW4gcXVlcnkga2V5cyBhcmUgc3BlY2lmaWVkLiIpO2lmKCF6YihoKSl0aHJvdyBlKGYse30sIlF1ZXJ5IGtleSBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKGQuaW5kZXhPZihoKTwwKXRocm93IGUoZix7fSwKIlByb2hpYml0ZWQgcXVlcnkga2V5OiAiK2gpO319ZWxzZSBpZihjKXRocm93IGUoZix7fSwiUHJvaGliaXRlZCBmcm9tIGdldHRpbmcgZW50aXJlIFVSTCB3aGVuIGNvbXBvbmVudHMgYXJlIHNwZWNpZmllZC4iKTt9LGFhOmF9fSl9KCk7CgoKClouc2VjdXJpdHlHcm91cHMucmVhZF9kb21fZWxlbWVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjLGQpe3JldHVybnt0eXBlOmMsdmFsdWU6ZH19KGZ1bmN0aW9uKGIpe1ouX19yZWFkX2RvbV9lbGVtZW50cz1iO1ouX19yZWFkX2RvbV9lbGVtZW50cy5PPSJyZWFkX2RvbV9lbGVtZW50cyI7Wi5fX3JlYWRfZG9tX2VsZW1lbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX3JlYWRfZG9tX2VsZW1lbnRzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fcmVhZF9kb21fZWxlbWVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fcmVhZF9kb21fZWxlbWVudHNbIjUiXT0hMTtaLl9fcmVhZF9kb21fZWxlbWVudHNbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2FsbG93ZWRFbGVtZW50SWRzfHwibm9uZSIsZD1iLnZ0cF9hbGxvd2VkQ3NzU2VsZWN0b3JzfHwibm9uZSIsZT1iLnZ0cF9lbGVtZW50SWRzfHxbXSxmPWIudnRwX2Nzc1NlbGVjdG9yc3x8W10sZz0KYi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oaCxsLG4pe3N3aXRjaChsKXtjYXNlICJpZCI6aWYoYz09PSJub25lIilicmVhaztpZihjPT09ImFueSJ8fGUuaW5kZXhPZihuKT4tMSlyZXR1cm47YnJlYWs7Y2FzZSAiY3NzIjppZihkPT09Im5vbmUiKWJyZWFrO2lmKGQ9PT0iYW55Inx8Zi5pbmRleE9mKG4pPi0xKXJldHVybjticmVhaztkZWZhdWx0OnRocm93IGcoaCx7fSwiVW5rbm93biBzZWxlY3RvciB0eXBlICIrbCsiLiIpO310aHJvdyBnKGgse30sIlByb2hpYml0ZWQgc2VsZWN0b3IgdmFsdWUgIituKyIgZm9yIHNlbGVjdG9yIHR5cGUgIitsKyIuIik7fSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLmRldGVjdF9jbGlja19ldmVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjLGQpe3JldHVybnttYXRjaENvbW1vbkJ1dHRvbnM6Yyxjc3NTZWxlY3RvcjpkfX0oZnVuY3Rpb24oYil7Wi5fX2RldGVjdF9jbGlja19ldmVudHM9YjtaLl9fZGV0ZWN0X2NsaWNrX2V2ZW50cy5PPSJkZXRlY3RfY2xpY2tfZXZlbnRzIjtaLl9fZGV0ZWN0X2NsaWNrX2V2ZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3RfY2xpY2tfZXZlbnRzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fZGV0ZWN0X2NsaWNrX2V2ZW50cy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19kZXRlY3RfY2xpY2tfZXZlbnRzWyI1Il09ITE7Wi5fX2RldGVjdF9jbGlja19ldmVudHNbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGQsZSxmKXtpZihlIT09dm9pZCAwJiZ0eXBlb2YgZSE9PQoiYm9vbGVhbiIpdGhyb3cgYyhkLHt9LCJtYXRjaENvbW1vbkJ1dHRvbnMgbXVzdCBiZSBhIGJvb2xlYW4uIik7aWYoZiE9PXZvaWQgMCYmdHlwZW9mIGYhPT0ic3RyaW5nIil0aHJvdyBjKGQse30sImNzc1NlbGVjdG9yIG11c3QgYmUgYSBzdHJpbmcuIik7fSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLmRldGVjdF9zY3JvbGxfZXZlbnRzPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7cmV0dXJue319KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3Rfc2Nyb2xsX2V2ZW50cz1iO1ouX19kZXRlY3Rfc2Nyb2xsX2V2ZW50cy5PPSJkZXRlY3Rfc2Nyb2xsX2V2ZW50cyI7Wi5fX2RldGVjdF9zY3JvbGxfZXZlbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF9zY3JvbGxfZXZlbnRzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fZGV0ZWN0X3Njcm9sbF9ldmVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X3Njcm9sbF9ldmVudHNbIjUiXT0hMTtaLl9fZGV0ZWN0X3Njcm9sbF9ldmVudHNbIjYiXT0hMX0pKGZ1bmN0aW9uKCl7cmV0dXJue2Fzc2VydDpmdW5jdGlvbigpe30sYWE6YX19KX0oKTsKCgoKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtyZXR1cm57fX0oZnVuY3Rpb24oYil7Wi5fX2RldGVjdF9mb3JtX2ludGVyYWN0aW9uX2V2ZW50cz1iO1ouX19kZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHMuTz0iZGV0ZWN0X2Zvcm1faW50ZXJhY3Rpb25fZXZlbnRzIjtaLl9fZGV0ZWN0X2Zvcm1faW50ZXJhY3Rpb25fZXZlbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF9mb3JtX2ludGVyYWN0aW9uX2V2ZW50cy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2RldGVjdF9mb3JtX2ludGVyYWN0aW9uX2V2ZW50cy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19kZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHNbIjUiXT0hMTtaLl9fZGV0ZWN0X2Zvcm1faW50ZXJhY3Rpb25fZXZlbnRzWyI2Il09ITF9KShmdW5jdGlvbigpe3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oKXt9LAphYTphfX0pfSgpOwpmdW5jdGlvbiBrVSgpe3ZhciBhPXt9LGI9e2RhdGFMYXllcjp0QSxjYWxsYmFjazpmdW5jdGlvbihjKXthLmhhc093blByb3BlcnR5KGMpJiZ5YihhW2NdKSYmYVtjXSgpO2RlbGV0ZSBhW2NdfSxib290c3RyYXA6MH07cmV0dXJuIGJ9CmZ1bmN0aW9uIGxVKCl7dmFyIGE9a1UoKTtvaihhKTtDaygpO2pBKCk7dmFyIGI9YWwoMjcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO1FiKGIsWi5zZWN1cml0eUdyb3Vwcyk7dmFyIGM9eWsoemsoKSksZCxlPWM9PW51bGw/dm9pZCAwOihkPWMuY29udGV4dCk9PW51bGw/dm9pZCAwOmQuc291cmNlO0tsKGUsYz09bnVsbD92b2lkIDA6Yy5wYXJlbnQpO2UhPT0yJiZlIT09NCYmZSE9PTN8fFAoMTQyKTtyZXR1cm4gYX1mdW5jdGlvbiBtVSgpe3ZhciBhPUUoNjApO2lmKGEpZm9yKHZhciBiPWEuc3BsaXQoIi4iKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY10sZT1UTDtkJiYoZS5IW2RdPSEwKX19CmZ1bmN0aW9uIG5VKCl7enAoKTtsaigpO2Zvcih2YXIgYT1kYXRhLnJlc291cmNlfHx7fSxiPWNBLGM9YS5tYWNyb3N8fFtdLGQ9MDtkPGMubGVuZ3RoO2QrKyliLm1hY3Jvcy5wdXNoKG5ldyBVeihjW2RdLGQsYi50YWdzLGIubWFjcm9zKSk7Zm9yKHZhciBlPWEudGFnc3x8W10sZj0wO2Y8ZS5sZW5ndGg7ZisrKWIudGFncy5wdXNoKG5ldyBZeihlW2ZdLGYsYi50YWdzLGIubWFjcm9zKSk7Zm9yKHZhciBnPWEucHJlZGljYXRlc3x8W10saD0wO2g8Zy5sZW5ndGg7aCsrKWIucHJlZGljYXRlcy5wdXNoKG5ldyBWeihnW2hdLGIudGFncyxiLm1hY3JvcykpO2Zvcih2YXIgbD1hLnJ1bGVzfHxbXSxuPTA7bjxsLmxlbmd0aDtuKyspYi5ydWxlcy5wdXNoKG5ldyBXeihsW25dLG4pKTtRej1aO3ZhciBwPWRhdGEucGVybWlzc2lvbnN8fHt9LHE9WjtkZz1uZXcgZ2coRSg1KSxwLHEpO3ZhciByPWRhdGEuc2FuZGJveGVkX3NjcmlwdHMsdD1kYXRhLnNlY3VyaXR5X2dyb3Vwcyx1PWRhdGEucnVudGltZXx8CltdLHY9ZGF0YS5ydW50aW1lX2xpbmVzO0pGPW5ldyBwZjtWVCgpO1B6PUlGKCk7dmFyIHg9SkYseT1VVCgpLHo9bmV3IExkKCJyZXF1aXJlIix5KTt6LlphKCk7eC5ILkguc2V0KCJyZXF1aXJlIix6KTtkYi5zZXQoInJlcXVpcmUiLHopO2Zvcih2YXIgQz0wO0M8dS5sZW5ndGg7QysrKXt2YXIgRD11W0NdO2lmKCFBcnJheS5pc0FycmF5KEQpfHxELmxlbmd0aDwzKXtpZihELmxlbmd0aD09PTApY29udGludWU7YnJlYWt9diYmdltDXSYmdltDXS5sZW5ndGgmJlBmKEQsdltDXSk7dHJ5e0pGLmV4ZWN1dGUoRCl9Y2F0Y2gob1Upe319V1Qocik7WFQodCk7dmFyIEk9bFUoKTtpRigpO3ZtLmJpbmQoKTtpZighRGopZm9yKHZhciBHPUJtKCk/ZXAoTGYoNSkpOmVwKExmKDQpKSxOPW0oUm8pLFM9Ti5uZXh0KCk7IVMuZG9uZTtTPU4ubmV4dCgpKXt2YXIgVz1TLnZhbHVlLGVhPVcsamE9R1tXXT8iZ3JhbnRlZCI6ImRlbmllZCI7dGwoKS5pbXBsaWNpdChlYSxqYSl9aEUuYmluZCgpO1RCKCk7Ck9CKCk7Zm4uTiYmKGd6KCksZnooQUYpLGdBKCksY0I9bmV3IGJCLGZ6KGl6KSxPQygpLERGfHwoREY9bmV3IEJGKSxmQnx8KGZCPW5ldyBlQiksRkY9bmV3IEVGKTtpZihmbi5LKXtERS5iaW5kKCk7bUMuYmluZCgpO3dFLmJpbmQoKTt2YXIgZmE9QWsoKTtpZihmYSl7dmFyIHNhO2E6e3ZhciBkYSxtYT0oZGE9ZmEuc2NyaXB0RWxlbWVudCk9PW51bGw/dm9pZCAwOmRhLnNyYztpZihtYSl7dmFyIFBhO3RyeXt2YXIgRmE7UGE9KEZhPXJkKCkpPT1udWxsP3ZvaWQgMDpGYS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpfWNhdGNoKG9VKXt9aWYoUGEpe2Zvcih2YXIgcWE9LTEsaWI9bShQYSksWGI9aWIubmV4dCgpOyFYYi5kb25lO1hiPWliLm5leHQoKSl7dmFyIExjPVhiLnZhbHVlO2lmKExjLmluaXRpYXRvclR5cGU9PT0KInNjcmlwdCImJihxYSs9MSxMYy5uYW1lLnJlcGxhY2UoTkUsIiIpPT09bWEucmVwbGFjZShORSwiIikpKXtzYT1xYTticmVhayBhfX1QKDE0Nil9ZWxzZSBQKDE0NSl9c2E9dm9pZCAwfXZhciBRZD1zYTtRZCE9PXZvaWQgMCYmKGZhLmNhbm9uaWNhbENvbnRhaW5lcklkJiZVbSgicnRnIixTdHJpbmcoZmEuY2Fub25pY2FsQ29udGFpbmVySWQpKSxVbSgic2xvIixTdHJpbmcoUWQpKSxVbSgiaGxvIixmYS5odG1sTG9hZE9yZGVyfHwiLTEiKSxVbSgibHN0IixTdHJpbmcoZmEubG9hZFNjcmlwdFR5cGV8fCIwIikpKX1lbHNlIFAoMTQ0KTt2YXIgWWM7dmFyIERkPXhrKCk7aWYoRGQpaWYoRGQuY2Fub25pY2FsQ29udGFpbmVySWQpWWM9RGQuY2Fub25pY2FsQ29udGFpbmVySWQ7ZWxzZXt2YXIgamYsdmg9RGQuc2NyaXB0Q29udGFpbmVySWR8fCgoamY9RGQuZGVzdGluYXRpb25zKT09bnVsbD92b2lkIDA6amZbMF0pO1ljPXZoPyJfIit2aDp2b2lkIDB9ZWxzZSBZYz12b2lkIDA7dmFyIEpFPQpZYztKRSYmVW0oInBjaWQiLEpFKTtVbSgiYnQiLFN0cmluZyhJZig0Nyk/MjpJZig1MCk/MTowKSk7VW0oImN0IixTdHJpbmcoSWYoNDcpPzA6SWYoNTApPzE6MykpO0FFLmJpbmQoKTtmb3IodmFyIFdyPVtdLFhyPVtdLEtFPW0oT2JqZWN0LmtleXMoR0UpKSxZcj1LRS5uZXh0KCk7IVlyLmRvbmU7WXI9S0UubmV4dCgpKXt2YXIgcm09WXIudmFsdWU7aWYod2luZG93LmlzU2VjdXJlQ29udGV4dHx8IUlFW3JtXSl7dmFyIExFPUdFW3JtXSgpO2lmKHliKExFKSl7dmFyIE1FPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKExFKTtUYihNRSwieyBbbmF0aXZlIGNvZGVdIH0iKXx8VGIoTUUsIntcbiAgICBbbmF0aXZlIGNvZGVdXG59Iil8fFhyLnB1c2gocm0pfWVsc2UgV3IucHVzaChybSl9fVdyLmxlbmd0aD4wJiZVbSgianNtIixXci5qb2luKCJ+IikpO1hyLmxlbmd0aD4wJiZVbSgianNwIixYci5qb2luKCJ+IikpO0V5fHwoRXk9bmV3IER5KX1oRigpO2ltKDEpO0VHKCk7cmV0dXJuIEl9CmZ1bmN0aW9uIHVtKCl7dHJ5e2lmKCFoaygpJiYoSWYoNDcpfHwhTmsoKSkpe0lmKDY0KSYmd2ouSC5LLmFkZCgxMTg1MTc5MTcpO3pqKCk7Zm4uSCYmc3ooKTtXZls1XT0hMDt2YXIgYT1raigiZGVidWdHcm91cElkIixmdW5jdGlvbigpe3JldHVybiBTdHJpbmcoTWF0aC5mbG9vcihOdW1iZXIuTUFYX1NBRkVfSU5URUdFUipNYXRoLnJhbmRvbSgpKSl9KTtTbChhKTtrdCgpO3pGKCk7RnQoKTtQQigpO2lmKERrKCkpe0UoNSk7REcoKTtpQigpLnJlbW92ZUV4dGVybmFsUmVzdHJpY3Rpb25zKHZrKCkpO31lbHNle0ZNLlIoKTtuVSgpLmJvb3RzdHJhcD1OYigpO0lmKDUxKSYmcEUoKTsKZm4uSCYmdHooKTt0eXBlb2YgQS5uYW1lPT09InN0cmluZyImJlNiKEEubmFtZSwid2ViLXBpeGVsLXNhbmRib3gtQ1VTVE9NIikmJnNkKCk/WlQoImRNRGcwWXoiKTpBLlNob3BpZnkmJihaVCgiZE4yWmtNaiIpLHNkKCkmJlpUKCJkTlRVMFl6IikpO21VKCl9fX1jYXRjaChiKXtpbSg1KSxoeigpfX0KKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXtuPUIuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS10YWctYXNzaXN0YW50LXByZXNlbnQiKTtnbChuKSYmKGw9aC54bSl9ZnVuY3Rpb24gYygpe2wmJktjP2cobCk6YSgpfWlmKCFBW0UoMzcpXSl7dmFyIGQ9ITE7aWYoQi5yZWZlcnJlcil7dmFyIGU9UmooQi5yZWZlcnJlcik7ZD1OaihlLCJob3N0Iik9PT1FKDM4KX1pZighZCl7dmFyIGY9Y3EoRSgzOSkpO2Q9ISghZi5sZW5ndGh8fCFmWzBdLmxlbmd0aCl9ZCYmKEFbRSgzNyldPSEwLFVjKEUoNDApKSl9dmFyIGc9ZnVuY3Rpb24odSl7dmFyIHY9IkdUTSIseD0iR1RNIjtJZig0NSkmJih2PSJPR1QiLHg9IkdUQUciKTt2YXIgeT1FKDIzKSx6PUFbeV07enx8KHo9W10sQVt5XT16LFVjKCJodHRwczovLyIrRSgzKSsiL2RlYnVnL2Jvb3RzdHJhcD9pZD0iK0UoNSkrIiZzcmM9Iit4KyImY29uZD0iK1N0cmluZyh1KSsiJmd0bT0iK2R1KCkpKTt2YXIgQz17bWVzc2FnZVR5cGU6IkNPTlRBSU5FUl9TVEFSVElORyIsCmRhdGE6e3NjcmlwdFNvdXJjZTpLYyxjb250YWluZXJQcm9kdWN0OnYsZGVidWc6ITEsaWQ6RSg1KSx0YXJnZXRSZWY6e2N0aWQ6RSg1KSxpc0Rlc3RpbmF0aW9uOnNrKCksY2Fub25pY2FsSWQ6RSg2KX0sYWxpYXNlczp3aygpLGRlc3RpbmF0aW9uczp0aygpfX0sRD1DLmRhdGE7RC5yZXN1bWU9ZnVuY3Rpb24oKXthKCl9O0QucmVzdW1lV2l0aE1lbW9zPWZ1bmN0aW9uKCl7c2woMSk7YSgpfTtJZigyKSYmKEMuZGF0YS5pbml0aWFsUHVibGlzaD0hMCk7ei5wdXNoKEMpfSxoPXtHcToxLFBtOjIsb246MyxqbDo0LHhtOjV9O2hbaC5HcV09IkdUTV9ERUJVR19MRUdBQ1lfUEFSQU0iO2hbaC5QbV09IkdUTV9ERUJVR19QQVJBTSI7aFtoLm9uXT0iUkVGRVJSRVIiO2hbaC5qbF09IkNPT0tJRSI7aFtoLnhtXT0iRVhURU5TSU9OX1BBUkFNIjt2YXIgbD12b2lkIDAsbj12b2lkIDAscD1MaihBLmxvY2F0aW9uLCJxdWVyeSIsITEsdm9pZCAwLCJndG1fZGVidWciKTtnbChwKSYmKGw9aC5QbSk7CmlmKCFsJiZCLnJlZmVycmVyKXt2YXIgcT1SaihCLnJlZmVycmVyKTtOaihxLCJob3N0Iik9PT1FKDI0KSYmKGw9aC5vbil9aWYoIWwpe3ZhciByPWNxKCJfX1RBR19BU1NJU1RBTlQiKTtyLmxlbmd0aCYmclswXS5sZW5ndGgmJihsPWguamwpfWx8fGIoKTtpZighbCYmZmwobikpe3ZhciB0PSExOyRjKEIsIlRBRGVidWdTaWduYWwiLGZ1bmN0aW9uKCl7dHx8KHQ9ITAsYigpLGMoKSl9LCExKTtBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0fHwodD0hMCxiKCksYygpKX0sMjAwKX1lbHNlIGMoKX0pKGZ1bmN0aW9uKCl7IUlmKDQ3KXx8dG0oKVsiMCJdP3VtKCk6eG0oKX0pOwoKfSkoKQoK"}},"time_used":135,"timings":{"blocked":0,"dns":0,"connect":16,"send":0,"wait":35,"receive":48,"ssl":36},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
