{"report_id":"b4823d7b-badc-4ed5-a402-a858f3c82fca","version":0,"status":"done","tags":[],"date":"2026-07-26T18:40:12Z","url":{"schema":"http","addr":"coinbasewithdrwal.org","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"ip":{"addr":"34.111.179.208","port":0,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"final":{"url":{"schema":"https","addr":"coinbasewithdrwal.org/","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"title":"Crypto Wallet","dom":{"size":39107,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (22543)","md5":"6509e5f1f525707bcc5420fd79b0dc3a","sha1":"b5839a740318ec15c9f330b46fb888eab20a3c88","sha256":"af6ac0be17085f562a53e7b4db8f78cdbc3ad0b165031830b71c8111aab71c8f","sha512":"064f423aa93c8f49e0d21eba352cb0b4b63cc5903512e080c40b78ca31086b3ce4b804226c7a6a67ebcbafda67752f2fcd5ea31917002bc698f9a142b8378785","ssdeep":"768:V27CTfEckIRk1KV+k1KV+k1KV+k1KVESB3cOzuP+UhcKZdbKMsY5rJaDmwwtx+vv:oMBk1KV+k1KV+k1KV+k1KVscKZxKMC","tlshash":"ed03b421e2661a7ea12787d9f5e5733521aac249f9074928f3bc137217cbc81ac73bd4","dom_hash":"domhash3f6ee7031eba6c94719ca52a3e0f226c","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"http","addr":"coinbasewithdrwal.org","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"ip":{"addr":"34.111.179.208","port":0,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-30T18:40:12Z","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":1}},"detection":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-26","alert":"Sinkholed","trigger":"coinbasewithdrwal.org","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null},"summary":[{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-19T22:19:42.520021Z","alert_count":0,"request_count":5,"received_data":283116,"sent_data":2903,"comment":"","tags":null,"fingerprints":null},{"fqdn":"coinbasewithdrwal.org","ip":{"addr":"34.111.179.208","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"domain_registered":"2026-07-26","domain_rank":0,"first_seen":"2026-07-26T18:38:53.927545Z","last_seen":"2026-07-26T18:38:53.927545Z","alert_count":4,"request_count":4,"received_data":1171948,"sent_data":2654,"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"]},{"name":"Google Cloud Trace","description":"Google Cloud Trace is a distributed tracing system that collects latency data from applications and displays it in the Google Cloud Console.","website":"https://cloud.google.com/trace","common_platform_enumeration":"","icon":"google-cloud-trace.svg","categories":["Performance"]},{"name":"Google Cloud CDN","description":"Cloud CDN uses Google's global edge network to serve content closer to users.","website":"https://cloud.google.com/cdn","common_platform_enumeration":"","icon":"google-cloud-cdn.svg","categories":["CDN"]},{"name":"Google Cloud","description":"Google Cloud is a suite of cloud computing services.","website":"https://cloud.google.com","common_platform_enumeration":"cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*","icon":"Google Cloud.svg","categories":["IaaS"]}]},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":313,"first_seen":"2012-05-23T12:41:44Z","last_seen":"2026-07-19T22:23:13.155676Z","alert_count":0,"request_count":1,"received_data":10792,"sent_data":537,"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":"coinbasewithdrwal.org/assets/index-BjPosnkO.js","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"ip":{"addr":"34.111.179.208","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"cd0377a99f8ba9253a0e3326804b1975","sha1":"db4aba2d864bf955385dc56fb8c3ff8df6349ff9","sha256":"bbca33e70d7b979f4e152dfaa065945ce61bbf1bebd0f510d14abff232c3e04a","sha512":"695144e82d9a623b99ef9dd6c29624b0244020ed9f2009691ffd36556e3dfe99230c3c5b47489fb8a1bcb612ad8d6f32d4720a34b72dbf36e60e3789e647f6b8","ssdeep":"12288:teVBb1v3GrYE2YDW7sFXO+j9W/p4j+r1wejzc7BC+5eL:teVBp3oFe+BW/pnr1wencNCBL","tlshash":"dc354ac87192f06987a745e1407f4107f23a6d55b40dc460f179e8ea3eb884aa2bbf7d","size":1063691,"data":"","first_seen":"2026-07-26T18:38:57.97242Z","last_seen":"2026-07-26T18:40:42.969939Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:45.700Z","timestamp":1785091185700,"http_version":"HTTP/3","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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://coinbasewithdrwal.org\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 365371\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-07-30T22:23:57.004505Z","times_seen":249706,"resource_available":false,"data":"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"}},"time_used":90,"timings":{"blocked":25,"dns":0,"connect":0,"send":0,"wait":39,"receive":26,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0I5nvwUgHU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:45.703Z","timestamp":1785091185703,"http_version":"HTTP/3","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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0I5nvwUgHU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://coinbasewithdrwal.org\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 84924\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sun, 26 Jul 2026 12:26:04 GMT\r\nexpires: Mon, 26 Jul 2027 12:26:04 GMT\r\ncache-control: public, max-age=31536000\r\nage: 22421\r\nlast-modified: Tue, 09 Sep 2025 18:33:55 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":84924,"size_decoded":85736,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 84924, version 1.0","md5":"f5b588b5cfef2173838149769c8a0269","sha1":"5312086a01f8e8299094ddee5819b9727a19cae2","sha256":"b8811a6cd6f7e0707dfc9e9e6f1daf5f6f450b51e887e163945a9ade91c2720f","sha512":"05d5271c633bbe102775c0b6df9c5e110dae3a2517061714bb5c26ec66a00f8e1b62961135ec96962e7ccaf3942d8e32bd86f42558cbac8ee16ff6c333117886","ssdeep":"1536:PABWz4rSN/GzH27xN5UR1OnX+uyRsd1osLZBi/JGyQI01xDj+C:PAG4rCGa7L5UR1OnX+fGd/VB03QI+xP","tlshash":"378302b4ae71b3968f1c7fe46396273c2a7bdf41053950aeae44e16787f00dba148784","first_seen":"2025-05-29T19:39:57.235915Z","last_seen":"2026-07-30T21:27:21.643734Z","times_seen":19504,"resource_available":false,"data":"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"}},"time_used":99,"timings":{"blocked":25,"dns":0,"connect":0,"send":0,"wait":48,"receive":26,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"coinbasewithdrwal.org/favicon.svg","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"ip":{"addr":"34.111.179.208","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:45.841Z","timestamp":1785091185841,"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":"coinbasewithdrwal.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 11:15:45 GMT","end":"Sat, 24 Oct 2026 11:15:44 GMT"},"fingerprint":{"sha1":"AB:96:DD:0B:63:35:FB:F7:21:22:F3:61:AA:B1:FD:A4:85:17:C9:4A","sha256":"13:D1:6A:F4:8D:7B:FF:21:85:6C:C1:05:CD:21:F0:E3:D6:09:D6:10:7D:B1:48:AF:00:1E:C9:42:24:9A:1D:41"}}},"request":{"raw":"GET /favicon.svg HTTP/1.1\r\nHost: coinbasewithdrwal.org\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://coinbasewithdrwal.org/\r\nCookie: GAESA=Cp4BMDAxNTQ4ZjcyOTc4NWUzYzQ5ZWNhZTBhN2ZhMDU1ZTAyMTlkNjEzMDY1NTBkMjZmOWE0NWYxMGJhYTZlNzZiZGE0ODFkNzcyNGIxNGU3MGMyOWQ5M2EzYTk1Yjc2MGEyMGUyMzczZjFhY2RlYWExNWExMmFlZGVhNTJhMWFlYmUxYmY3NjExZWRkYTUzMTVlZjJhYzg5OTEyNzUzYzEQna3n_fkz\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\naccept-ranges: bytes\r\ncontent-length: 163\r\ncontent-type: image/svg+xml\r\ndate: Sun, 26 Jul 2026 18:39:45 GMT\r\nlast-modified: Fri, 24 Jul 2026 02:42:17 GMT\r\nserver: Google Frontend\r\nstrict-transport-security: max-age=63072000; includeSubDomains\r\nx-cloud-trace-context: c8fee7c0fcc6dd03ed141ec2472dbd9b\r\nvia: 1.1 google\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\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"]},{"name":"Google Cloud Trace","description":"Google Cloud Trace is a distributed tracing system that collects latency data from applications and displays it in the Google Cloud Console.","website":"https://cloud.google.com/trace","common_platform_enumeration":"","icon":"google-cloud-trace.svg","categories":["Performance"]},{"name":"Google Cloud CDN","description":"Cloud CDN uses Google's global edge network to serve content closer to users.","website":"https://cloud.google.com/cdn","common_platform_enumeration":"","icon":"google-cloud-cdn.svg","categories":["CDN"]},{"name":"Google Cloud","description":"Google Cloud is a suite of cloud computing services.","website":"https://cloud.google.com","common_platform_enumeration":"cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*","icon":"Google Cloud.svg","categories":["IaaS"]}],"data":{"size":163,"size_decoded":553,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"1df424bb74dd3799fd103a4226daeaf3","sha1":"62f728e4ad3cb0641e379175187268c8f0ba492e","sha256":"8ffbde9092b1fa4de97c9481b76f518b131268c82e7c555041925225b1dab6e0","sha512":"433fba312a3bbf2c513265225a6d7980b7fafaea7838edf861f353bb9ae3c0b2fcb9750cc2ce4f18abbeebef31fb9858dcd34d0b750127a600147f11e3b28b62","ssdeep":"","tlshash":"6fc08cb5b34cdc04c100c42113a8749a16a7f0d68e880354de807d9a711ddd3bc206ad","first_seen":"2026-03-17T08:23:01.462793Z","last_seen":"2026-07-30T21:34:50.859862Z","times_seen":408,"resource_available":false,"data":"PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE4MCAxODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxODAiIGhlaWdodD0iMTgwIiByeD0iMzYiIGZpbGw9IiNGRjNDMDAiLz4KPC9zdmc+Cg=="}},"time_used":146,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":146,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-26","alert":"Sinkholed","trigger":"coinbasewithdrwal.org","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"coinbasewithdrwal.org/assets/index-BjPosnkO.js","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"ip":{"addr":"34.111.179.208","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:44.740Z","timestamp":1785091184740,"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":"coinbasewithdrwal.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 11:15:45 GMT","end":"Sat, 24 Oct 2026 11:15:44 GMT"},"fingerprint":{"sha1":"AB:96:DD:0B:63:35:FB:F7:21:22:F3:61:AA:B1:FD:A4:85:17:C9:4A","sha256":"13:D1:6A:F4:8D:7B:FF:21:85:6C:C1:05:CD:21:F0:E3:D6:09:D6:10:7D:B1:48:AF:00:1E:C9:42:24:9A:1D:41"}}},"request":{"raw":"GET /assets/index-BjPosnkO.js HTTP/1.1\r\nHost: coinbasewithdrwal.org\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://coinbasewithdrwal.org/\r\nCookie: GAESA=Cp4BMDAxNTQ4ZjcyOTc4NWUzYzQ5ZWNhZTBhN2ZhMDU1ZTAyMTlkNjEzMDY1NTBkMjZmOWE0NWYxMGJhYTZlNzZiZGE0ODFkNzcyNGIxNGU3MGMyOWQ5M2EzYTk1Yjc2MGEyMGUyMzczZjFhY2RlYWExNWExMmFlZGVhNTJhMWFlYmUxYmY3NjExZWRkYTUzMTVlZjJhYzg5OTEyNzUzYzEQna3n_fkz\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\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\naccept-ranges: bytes\r\ncontent-length: 1063691\r\ncontent-type: text/javascript; charset=utf-8\r\ndate: Sun, 26 Jul 2026 18:39:44 GMT\r\nlast-modified: Fri, 24 Jul 2026 02:42:17 GMT\r\nserver: Google Frontend\r\nstrict-transport-security: max-age=63072000; includeSubDomains\r\nx-cloud-trace-context: fdc892ceddae1bc2ed141ec2472db02c\r\nvia: 1.1 google\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Google Cloud CDN","description":"Cloud CDN uses Google's global edge network to serve content closer to users.","website":"https://cloud.google.com/cdn","common_platform_enumeration":"","icon":"google-cloud-cdn.svg","categories":["CDN"]},{"name":"Google Cloud","description":"Google Cloud is a suite of cloud computing services.","website":"https://cloud.google.com","common_platform_enumeration":"cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*","icon":"Google Cloud.svg","categories":["IaaS"]},{"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"]},{"name":"Google Cloud Trace","description":"Google Cloud Trace is a distributed tracing system that collects latency data from applications and displays it in the Google Cloud Console.","website":"https://cloud.google.com/trace","common_platform_enumeration":"","icon":"google-cloud-trace.svg","categories":["Performance"]}],"data":{"size":1063691,"size_decoded":1064102,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (36277)","md5":"9162f075cfadb7b53c2b6f778c7faea8","sha1":"909206a113bcfcd44f6f79fe7425e36b78688e09","sha256":"c6531d5014810218e8d895ffb69274f816e95fbf83e63594f4aa4706158cfe63","sha512":"ae4b31732c0a301cfbc8f28b8ff0c38051e4a67e2b59c5c34a6c397e3634064f16a4f05c9b506b5a6cf8b7733c8ecdadb54f372074ee1a50deb8367c5ba1bf7f","ssdeep":"12288:teVBb1v3GrYE2YDW7sFXO+j9W/p4j+r1wejzc7BC+5ev:teVBp3oFe+BW/pnr1wencNCBv","tlshash":"362549c87196f06687a742f1407f0107f2396955740dc460f279e8ea7eb884aa2bbf7d","first_seen":"2026-07-26T18:38:57.963943Z","last_seen":"2026-07-26T18:40:42.967816Z","times_seen":3,"resource_available":false,"data":"ZnVuY3Rpb24geUgoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcj10W25dO2lmKHR5cGVvZiByIT0ic3RyaW5nIiYmIUFycmF5LmlzQXJyYXkocikpe2Zvcihjb25zdCBpIGluIHIpaWYoaSE9PSJkZWZhdWx0IiYmIShpIGluIGUpKXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixpKTtvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLG8uZ2V0P286e2VudW1lcmFibGU6ITAsZ2V0OigpPT5yW2ldfSl9fX1yZXR1cm4gT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpfShmdW5jdGlvbigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYodCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKXJldHVybjtmb3IoY29uc3QgaSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpcihpKTtuZXcgTXV0YXRpb25PYnNlcnZlcihpPT57Zm9yKGNvbnN0IG8gb2YgaSlpZihvLnR5cGU9PT0iY2hpbGRMaXN0Iilmb3IoY29uc3QgcyBvZiBvLmFkZGVkTm9kZXMpcy50YWdOYW1lPT09IkxJTksiJiZzLnJlbD09PSJtb2R1bGVwcmVsb2FkIiYmcihzKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gbihpKXtjb25zdCBvPXt9O3JldHVybiBpLmludGVncml0eSYmKG8uaW50ZWdyaXR5PWkuaW50ZWdyaXR5KSxpLnJlZmVycmVyUG9saWN5JiYoby5yZWZlcnJlclBvbGljeT1pLnJlZmVycmVyUG9saWN5KSxpLmNyb3NzT3JpZ2luPT09InVzZS1jcmVkZW50aWFscyI/by5jcmVkZW50aWFscz0iaW5jbHVkZSI6aS5jcm9zc09yaWdpbj09PSJhbm9ueW1vdXMiP28uY3JlZGVudGlhbHM9Im9taXQiOm8uY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixvfWZ1bmN0aW9uIHIoaSl7aWYoaS5lcClyZXR1cm47aS5lcD0hMDtjb25zdCBvPW4oaSk7ZmV0Y2goaS5ocmVmLG8pfX0pKCk7dmFyIHRwPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6e307ZnVuY3Rpb24gT3QoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsImRlZmF1bHQiKT9lLmRlZmF1bHQ6ZX12YXIgemI9e2V4cG9ydHM6e319LHpjPXt9O3ZhciBoTTtmdW5jdGlvbiB2SCgpe2lmKGhNKXJldHVybiB6YztoTT0xO3ZhciBlPVN5bWJvbC5mb3IoInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50IiksdD1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpO2Z1bmN0aW9uIG4ocixpLG8pe3ZhciBzPW51bGw7aWYobyE9PXZvaWQgMCYmKHM9IiIrbyksaS5rZXkhPT12b2lkIDAmJihzPSIiK2kua2V5KSwia2V5ImluIGkpe289e307Zm9yKHZhciB1IGluIGkpdSE9PSJrZXkiJiYob1t1XT1pW3VdKX1lbHNlIG89aTtyZXR1cm4gaT1vLnJlZix7JCR0eXBlb2Y6ZSx0eXBlOnIsa2V5OnMscmVmOmkhPT12b2lkIDA/aTpudWxsLHByb3BzOm99fXJldHVybiB6Yy5GcmFnbWVudD10LHpjLmpzeD1uLHpjLmpzeHM9bix6Y312YXIgcE07ZnVuY3Rpb24gZ0goKXtyZXR1cm4gcE18fChwTT0xLHpiLmV4cG9ydHM9dkgoKSksemIuZXhwb3J0c312YXIgQT1nSCgpLEZiPXtleHBvcnRzOnt9fSxGYz17fSxIYj17ZXhwb3J0czp7fX0sR2I9e307dmFyIG1NO2Z1bmN0aW9uIGJIKCl7cmV0dXJuIG1NfHwobU09MSwoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChMLFcpe3ZhciBIPUwubGVuZ3RoO0wucHVzaChXKTtlOmZvcig7MDxIOyl7dmFyIGVlPUgtMT4+PjEsaz1MW2VlXTtpZigwPGkoayxXKSlMW2VlXT1XLExbSF09ayxIPWVlO2Vsc2UgYnJlYWsgZX19ZnVuY3Rpb24gbihMKXtyZXR1cm4gTC5sZW5ndGg9PT0wP251bGw6TFswXX1mdW5jdGlvbiByKEwpe2lmKEwubGVuZ3RoPT09MClyZXR1cm4gbnVsbDt2YXIgVz1MWzBdLEg9TC5wb3AoKTtpZihIIT09Vyl7TFswXT1IO2U6Zm9yKHZhciBlZT0wLGs9TC5sZW5ndGgsWj1rPj4+MTtlZTxaOyl7dmFyIHRlPTIqKGVlKzEpLTEsb2U9TFt0ZV0sbWU9dGUrMSxiZT1MW21lXTtpZigwPmkob2UsSCkpbWU8ayYmMD5pKGJlLG9lKT8oTFtlZV09YmUsTFttZV09SCxlZT1tZSk6KExbZWVdPW9lLExbdGVdPUgsZWU9dGUpO2Vsc2UgaWYobWU8ayYmMD5pKGJlLEgpKUxbZWVdPWJlLExbbWVdPUgsZWU9bWU7ZWxzZSBicmVhayBlfX1yZXR1cm4gV31mdW5jdGlvbiBpKEwsVyl7dmFyIEg9TC5zb3J0SW5kZXgtVy5zb3J0SW5kZXg7cmV0dXJuIEghPT0wP0g6TC5pZC1XLmlkfWlmKGUudW5zdGFibGVfbm93PXZvaWQgMCx0eXBlb2YgcGVyZm9ybWFuY2U9PSJvYmplY3QiJiZ0eXBlb2YgcGVyZm9ybWFuY2Uubm93PT0iZnVuY3Rpb24iKXt2YXIgbz1wZXJmb3JtYW5jZTtlLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBvLm5vdygpfX1lbHNle3ZhciBzPURhdGUsdT1zLm5vdygpO2UudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHMubm93KCktdX19dmFyIGY9W10sZD1bXSxwPTEsbT1udWxsLHk9Myx4PSExLHc9ITEsYj0hMSxnPSExLF89dHlwZW9mIHNldFRpbWVvdXQ9PSJmdW5jdGlvbiI/c2V0VGltZW91dDpudWxsLE89dHlwZW9mIGNsZWFyVGltZW91dD09ImZ1bmN0aW9uIj9jbGVhclRpbWVvdXQ6bnVsbCxFPXR5cGVvZiBzZXRJbW1lZGlhdGU8InUiP3NldEltbWVkaWF0ZTpudWxsO2Z1bmN0aW9uIGooTCl7Zm9yKHZhciBXPW4oZCk7VyE9PW51bGw7KXtpZihXLmNhbGxiYWNrPT09bnVsbClyKGQpO2Vsc2UgaWYoVy5zdGFydFRpbWU8PUwpcihkKSxXLnNvcnRJbmRleD1XLmV4cGlyYXRpb25UaW1lLHQoZixXKTtlbHNlIGJyZWFrO1c9bihkKX19ZnVuY3Rpb24gVChMKXtpZihiPSExLGooTCksIXcpaWYobihmKSE9PW51bGwpdz0hMCxQfHwoUD0hMCwkKCkpO2Vsc2V7dmFyIFc9bihkKTtXIT09bnVsbCYmSyhULFcuc3RhcnRUaW1lLUwpfX12YXIgUD0hMSxOPS0xLFI9NSxJPS0xO2Z1bmN0aW9uIFYoKXtyZXR1cm4gZz8hMDohKGUudW5zdGFibGVfbm93KCktSTxSKX1mdW5jdGlvbiBCKCl7aWYoZz0hMSxQKXt2YXIgTD1lLnVuc3RhYmxlX25vdygpO0k9TDt2YXIgVz0hMDt0cnl7ZTp7dz0hMSxiJiYoYj0hMSxPKE4pLE49LTEpLHg9ITA7dmFyIEg9eTt0cnl7dDp7Zm9yKGooTCksbT1uKGYpO20hPT1udWxsJiYhKG0uZXhwaXJhdGlvblRpbWU+TCYmVigpKTspe3ZhciBlZT1tLmNhbGxiYWNrO2lmKHR5cGVvZiBlZT09ImZ1bmN0aW9uIil7bS5jYWxsYmFjaz1udWxsLHk9bS5wcmlvcml0eUxldmVsO3ZhciBrPWVlKG0uZXhwaXJhdGlvblRpbWU8PUwpO2lmKEw9ZS51bnN0YWJsZV9ub3coKSx0eXBlb2Ygaz09ImZ1bmN0aW9uIil7bS5jYWxsYmFjaz1rLGooTCksVz0hMDticmVhayB0fW09PT1uKGYpJiZyKGYpLGooTCl9ZWxzZSByKGYpO209bihmKX1pZihtIT09bnVsbClXPSEwO2Vsc2V7dmFyIFo9bihkKTtaIT09bnVsbCYmSyhULFouc3RhcnRUaW1lLUwpLFc9ITF9fWJyZWFrIGV9ZmluYWxseXttPW51bGwseT1ILHg9ITF9Vz12b2lkIDB9fWZpbmFsbHl7Vz8kKCk6UD0hMX19fXZhciAkO2lmKHR5cGVvZiBFPT0iZnVuY3Rpb24iKSQ9ZnVuY3Rpb24oKXtFKEIpfTtlbHNlIGlmKHR5cGVvZiBNZXNzYWdlQ2hhbm5lbDwidSIpe3ZhciB6PW5ldyBNZXNzYWdlQ2hhbm5lbCxVPXoucG9ydDI7ei5wb3J0MS5vbm1lc3NhZ2U9QiwkPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSAkPWZ1bmN0aW9uKCl7XyhCLDApfTtmdW5jdGlvbiBLKEwsVyl7Tj1fKGZ1bmN0aW9uKCl7TChlLnVuc3RhYmxlX25vdygpKX0sVyl9ZS51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSxlLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsZS51bnN0YWJsZV9Mb3dQcmlvcml0eT00LGUudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MyxlLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsLGUudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MixlLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKEwpe0wuY2FsbGJhY2s9bnVsbH0sZS51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihMKXswPkx8fDEyNTxMP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOlI9MDxMP01hdGguZmxvb3IoMWUzL0wpOjV9LGUudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4geX0sZS51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKEwpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgVz0zO2JyZWFrO2RlZmF1bHQ6Vz15fXZhciBIPXk7eT1XO3RyeXtyZXR1cm4gTCgpfWZpbmFsbHl7eT1IfX0sZS51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXtnPSEwfSxlLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihMLFcpe3N3aXRjaChMKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6TD0zfXZhciBIPXk7eT1MO3RyeXtyZXR1cm4gVygpfWZpbmFsbHl7eT1IfX0sZS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKEwsVyxIKXt2YXIgZWU9ZS51bnN0YWJsZV9ub3coKTtzd2l0Y2godHlwZW9mIEg9PSJvYmplY3QiJiZIIT09bnVsbD8oSD1ILmRlbGF5LEg9dHlwZW9mIEg9PSJudW1iZXIiJiYwPEg/ZWUrSDplZSk6SD1lZSxMKXtjYXNlIDE6dmFyIGs9LTE7YnJlYWs7Y2FzZSAyOms9MjUwO2JyZWFrO2Nhc2UgNTprPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA0Oms9MWU0O2JyZWFrO2RlZmF1bHQ6az01ZTN9cmV0dXJuIGs9SCtrLEw9e2lkOnArKyxjYWxsYmFjazpXLHByaW9yaXR5TGV2ZWw6TCxzdGFydFRpbWU6SCxleHBpcmF0aW9uVGltZTprLHNvcnRJbmRleDotMX0sSD5lZT8oTC5zb3J0SW5kZXg9SCx0KGQsTCksbihmKT09PW51bGwmJkw9PT1uKGQpJiYoYj8oTyhOKSxOPS0xKTpiPSEwLEsoVCxILWVlKSkpOihMLnNvcnRJbmRleD1rLHQoZixMKSx3fHx4fHwodz0hMCxQfHwoUD0hMCwkKCkpKSksTH0sZS51bnN0YWJsZV9zaG91bGRZaWVsZD1WLGUudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKEwpe3ZhciBXPXk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIEg9eTt5PVc7dHJ5e3JldHVybiBMLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3k9SH19fX0pKEdiKSksR2J9dmFyIHlNO2Z1bmN0aW9uIHhIKCl7cmV0dXJuIHlNfHwoeU09MSxIYi5leHBvcnRzPWJIKCkpLEhiLmV4cG9ydHN9dmFyIEtiPXtleHBvcnRzOnt9fSxaZT17fTt2YXIgdk07ZnVuY3Rpb24gd0goKXtpZih2TSlyZXR1cm4gWmU7dk09MTt2YXIgZT1TeW1ib2wuZm9yKCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudCIpLHQ9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksbj1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLHI9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxpPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksbz1TeW1ib2wuZm9yKCJyZWFjdC5jb25zdW1lciIpLHM9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLHU9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxmPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksZD1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIikscD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksbT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24geShrKXtyZXR1cm4gaz09PW51bGx8fHR5cGVvZiBrIT0ib2JqZWN0Ij9udWxsOihrPW0mJmtbbV18fGtbIkBAaXRlcmF0b3IiXSx0eXBlb2Ygaz09ImZ1bmN0aW9uIj9rOm51bGwpfXZhciB4PXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSx3PU9iamVjdC5hc3NpZ24sYj17fTtmdW5jdGlvbiBnKGssWix0ZSl7dGhpcy5wcm9wcz1rLHRoaXMuY29udGV4dD1aLHRoaXMucmVmcz1iLHRoaXMudXBkYXRlcj10ZXx8eH1nLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LGcucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGssWil7aWYodHlwZW9mIGshPSJvYmplY3QiJiZ0eXBlb2YgayE9ImZ1bmN0aW9uIiYmayE9bnVsbCl0aHJvdyBFcnJvcigidGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGssWiwic2V0U3RhdGUiKX0sZy5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oayl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGssImZvcmNlVXBkYXRlIil9O2Z1bmN0aW9uIF8oKXt9Xy5wcm90b3R5cGU9Zy5wcm90b3R5cGU7ZnVuY3Rpb24gTyhrLFosdGUpe3RoaXMucHJvcHM9ayx0aGlzLmNvbnRleHQ9Wix0aGlzLnJlZnM9Yix0aGlzLnVwZGF0ZXI9dGV8fHh9dmFyIEU9Ty5wcm90b3R5cGU9bmV3IF87RS5jb25zdHJ1Y3Rvcj1PLHcoRSxnLnByb3RvdHlwZSksRS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgaj1BcnJheS5pc0FycmF5LFQ9e0g6bnVsbCxBOm51bGwsVDpudWxsLFM6bnVsbCxWOm51bGx9LFA9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBOKGssWix0ZSxvZSxtZSxiZSl7cmV0dXJuIHRlPWJlLnJlZix7JCR0eXBlb2Y6ZSx0eXBlOmssa2V5OloscmVmOnRlIT09dm9pZCAwP3RlOm51bGwscHJvcHM6YmV9fWZ1bmN0aW9uIFIoayxaKXtyZXR1cm4gTihrLnR5cGUsWix2b2lkIDAsdm9pZCAwLHZvaWQgMCxrLnByb3BzKX1mdW5jdGlvbiBJKGspe3JldHVybiB0eXBlb2Ygaz09Im9iamVjdCImJmshPT1udWxsJiZrLiQkdHlwZW9mPT09ZX1mdW5jdGlvbiBWKGspe3ZhciBaPXsiPSI6Ij0wIiwiOiI6Ij0yIn07cmV0dXJuIiQiK2sucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKHRlKXtyZXR1cm4gWlt0ZV19KX12YXIgQj0vXC8rL2c7ZnVuY3Rpb24gJChrLFope3JldHVybiB0eXBlb2Ygaz09Im9iamVjdCImJmshPT1udWxsJiZrLmtleSE9bnVsbD9WKCIiK2sua2V5KTpaLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiB6KCl7fWZ1bmN0aW9uIFUoayl7c3dpdGNoKGsuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIGsudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgay5yZWFzb247ZGVmYXVsdDpzd2l0Y2godHlwZW9mIGsuc3RhdHVzPT0ic3RyaW5nIj9rLnRoZW4oeix6KTooay5zdGF0dXM9InBlbmRpbmciLGsudGhlbihmdW5jdGlvbihaKXtrLnN0YXR1cz09PSJwZW5kaW5nIiYmKGsuc3RhdHVzPSJmdWxmaWxsZWQiLGsudmFsdWU9Wil9LGZ1bmN0aW9uKFope2suc3RhdHVzPT09InBlbmRpbmciJiYoay5zdGF0dXM9InJlamVjdGVkIixrLnJlYXNvbj1aKX0pKSxrLnN0YXR1cyl7Y2FzZSJmdWxmaWxsZWQiOnJldHVybiBrLnZhbHVlO2Nhc2UicmVqZWN0ZWQiOnRocm93IGsucmVhc29ufX10aHJvdyBrfWZ1bmN0aW9uIEsoayxaLHRlLG9lLG1lKXt2YXIgYmU9dHlwZW9mIGs7KGJlPT09InVuZGVmaW5lZCJ8fGJlPT09ImJvb2xlYW4iKSYmKGs9bnVsbCk7dmFyIGdlPSExO2lmKGs9PT1udWxsKWdlPSEwO2Vsc2Ugc3dpdGNoKGJlKXtjYXNlImJpZ2ludCI6Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpnZT0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKGsuJCR0eXBlb2Ype2Nhc2UgZTpjYXNlIHQ6Z2U9ITA7YnJlYWs7Y2FzZSBwOnJldHVybiBnZT1rLl9pbml0LEsoZ2Uoay5fcGF5bG9hZCksWix0ZSxvZSxtZSl9fWlmKGdlKXJldHVybiBtZT1tZShrKSxnZT1vZT09PSIiPyIuIiskKGssMCk6b2UsaihtZSk/KHRlPSIiLGdlIT1udWxsJiYodGU9Z2UucmVwbGFjZShCLCIkJi8iKSsiLyIpLEsobWUsWix0ZSwiIixmdW5jdGlvbihjZSl7cmV0dXJuIGNlfSkpOm1lIT1udWxsJiYoSShtZSkmJihtZT1SKG1lLHRlKyhtZS5rZXk9PW51bGx8fGsmJmsua2V5PT09bWUua2V5PyIiOigiIittZS5rZXkpLnJlcGxhY2UoQiwiJCYvIikrIi8iKStnZSkpLFoucHVzaChtZSkpLDE7Z2U9MDt2YXIgX2U9b2U9PT0iIj8iLiI6b2UrIjoiO2lmKGooaykpZm9yKHZhciBUZT0wO1RlPGsubGVuZ3RoO1RlKyspb2U9a1tUZV0sYmU9X2UrJChvZSxUZSksZ2UrPUsob2UsWix0ZSxiZSxtZSk7ZWxzZSBpZihUZT15KGspLHR5cGVvZiBUZT09ImZ1bmN0aW9uIilmb3Ioaz1UZS5jYWxsKGspLFRlPTA7IShvZT1rLm5leHQoKSkuZG9uZTspb2U9b2UudmFsdWUsYmU9X2UrJChvZSxUZSsrKSxnZSs9SyhvZSxaLHRlLGJlLG1lKTtlbHNlIGlmKGJlPT09Im9iamVjdCIpe2lmKHR5cGVvZiBrLnRoZW49PSJmdW5jdGlvbiIpcmV0dXJuIEsoVShrKSxaLHRlLG9lLG1lKTt0aHJvdyBaPVN0cmluZyhrKSxFcnJvcigiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAiKyhaPT09IltvYmplY3QgT2JqZWN0XSI/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoaykuam9pbigiLCAiKSsifSI6WikrIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC4iKX1yZXR1cm4gZ2V9ZnVuY3Rpb24gTChrLFosdGUpe2lmKGs9PW51bGwpcmV0dXJuIGs7dmFyIG9lPVtdLG1lPTA7cmV0dXJuIEsoayxvZSwiIiwiIixmdW5jdGlvbihiZSl7cmV0dXJuIFouY2FsbCh0ZSxiZSxtZSsrKX0pLG9lfWZ1bmN0aW9uIFcoayl7aWYoay5fc3RhdHVzPT09LTEpe3ZhciBaPWsuX3Jlc3VsdDtaPVooKSxaLnRoZW4oZnVuY3Rpb24odGUpeyhrLl9zdGF0dXM9PT0wfHxrLl9zdGF0dXM9PT0tMSkmJihrLl9zdGF0dXM9MSxrLl9yZXN1bHQ9dGUpfSxmdW5jdGlvbih0ZSl7KGsuX3N0YXR1cz09PTB8fGsuX3N0YXR1cz09PS0xKSYmKGsuX3N0YXR1cz0yLGsuX3Jlc3VsdD10ZSl9KSxrLl9zdGF0dXM9PT0tMSYmKGsuX3N0YXR1cz0wLGsuX3Jlc3VsdD1aKX1pZihrLl9zdGF0dXM9PT0xKXJldHVybiBrLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBrLl9yZXN1bHR9dmFyIEg9dHlwZW9mIHJlcG9ydEVycm9yPT0iZnVuY3Rpb24iP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGspe2lmKHR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ0eXBlb2Ygd2luZG93LkVycm9yRXZlbnQ9PSJmdW5jdGlvbiIpe3ZhciBaPW5ldyB3aW5kb3cuRXJyb3JFdmVudCgiZXJyb3IiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsbWVzc2FnZTp0eXBlb2Ygaz09Im9iamVjdCImJmshPT1udWxsJiZ0eXBlb2Ygay5tZXNzYWdlPT0ic3RyaW5nIj9TdHJpbmcoay5tZXNzYWdlKTpTdHJpbmcoayksZXJyb3I6a30pO2lmKCF3aW5kb3cuZGlzcGF0Y2hFdmVudChaKSlyZXR1cm59ZWxzZSBpZih0eXBlb2YgcHJvY2Vzcz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLmVtaXQ9PSJmdW5jdGlvbiIpe3Byb2Nlc3MuZW1pdCgidW5jYXVnaHRFeGNlcHRpb24iLGspO3JldHVybn1jb25zb2xlLmVycm9yKGspfTtmdW5jdGlvbiBlZSgpe31yZXR1cm4gWmUuQ2hpbGRyZW49e21hcDpMLGZvckVhY2g6ZnVuY3Rpb24oayxaLHRlKXtMKGssZnVuY3Rpb24oKXtaLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGUpfSxjb3VudDpmdW5jdGlvbihrKXt2YXIgWj0wO3JldHVybiBMKGssZnVuY3Rpb24oKXtaKyt9KSxafSx0b0FycmF5OmZ1bmN0aW9uKGspe3JldHVybiBMKGssZnVuY3Rpb24oWil7cmV0dXJuIFp9KXx8W119LG9ubHk6ZnVuY3Rpb24oayl7aWYoIUkoaykpdGhyb3cgRXJyb3IoIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLiIpO3JldHVybiBrfX0sWmUuQ29tcG9uZW50PWcsWmUuRnJhZ21lbnQ9bixaZS5Qcm9maWxlcj1pLFplLlB1cmVDb21wb25lbnQ9TyxaZS5TdHJpY3RNb2RlPXIsWmUuU3VzcGVuc2U9ZixaZS5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU9VCxaZS5fX0NPTVBJTEVSX1JVTlRJTUU9e19fcHJvdG9fXzpudWxsLGM6ZnVuY3Rpb24oayl7cmV0dXJuIFQuSC51c2VNZW1vQ2FjaGUoayl9fSxaZS5jYWNoZT1mdW5jdGlvbihrKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gay5hcHBseShudWxsLGFyZ3VtZW50cyl9fSxaZS5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oayxaLHRlKXtpZihrPT1udWxsKXRocm93IEVycm9yKCJUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkICIraysiLiIpO3ZhciBvZT13KHt9LGsucHJvcHMpLG1lPWsua2V5LGJlPXZvaWQgMDtpZihaIT1udWxsKWZvcihnZSBpbiBaLnJlZiE9PXZvaWQgMCYmKGJlPXZvaWQgMCksWi5rZXkhPT12b2lkIDAmJihtZT0iIitaLmtleSksWikhUC5jYWxsKFosZ2UpfHxnZT09PSJrZXkifHxnZT09PSJfX3NlbGYifHxnZT09PSJfX3NvdXJjZSJ8fGdlPT09InJlZiImJloucmVmPT09dm9pZCAwfHwob2VbZ2VdPVpbZ2VdKTt2YXIgZ2U9YXJndW1lbnRzLmxlbmd0aC0yO2lmKGdlPT09MSlvZS5jaGlsZHJlbj10ZTtlbHNlIGlmKDE8Z2Upe2Zvcih2YXIgX2U9QXJyYXkoZ2UpLFRlPTA7VGU8Z2U7VGUrKylfZVtUZV09YXJndW1lbnRzW1RlKzJdO29lLmNoaWxkcmVuPV9lfXJldHVybiBOKGsudHlwZSxtZSx2b2lkIDAsdm9pZCAwLGJlLG9lKX0sWmUuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihrKXtyZXR1cm4gaz17JCR0eXBlb2Y6cyxfY3VycmVudFZhbHVlOmssX2N1cnJlbnRWYWx1ZTI6ayxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9LGsuUHJvdmlkZXI9ayxrLkNvbnN1bWVyPXskJHR5cGVvZjpvLF9jb250ZXh0Omt9LGt9LFplLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oayxaLHRlKXt2YXIgb2UsbWU9e30sYmU9bnVsbDtpZihaIT1udWxsKWZvcihvZSBpbiBaLmtleSE9PXZvaWQgMCYmKGJlPSIiK1oua2V5KSxaKVAuY2FsbChaLG9lKSYmb2UhPT0ia2V5IiYmb2UhPT0iX19zZWxmIiYmb2UhPT0iX19zb3VyY2UiJiYobWVbb2VdPVpbb2VdKTt2YXIgZ2U9YXJndW1lbnRzLmxlbmd0aC0yO2lmKGdlPT09MSltZS5jaGlsZHJlbj10ZTtlbHNlIGlmKDE8Z2Upe2Zvcih2YXIgX2U9QXJyYXkoZ2UpLFRlPTA7VGU8Z2U7VGUrKylfZVtUZV09YXJndW1lbnRzW1RlKzJdO21lLmNoaWxkcmVuPV9lfWlmKGsmJmsuZGVmYXVsdFByb3BzKWZvcihvZSBpbiBnZT1rLmRlZmF1bHRQcm9wcyxnZSltZVtvZV09PT12b2lkIDAmJihtZVtvZV09Z2Vbb2VdKTtyZXR1cm4gTihrLGJlLHZvaWQgMCx2b2lkIDAsbnVsbCxtZSl9LFplLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSxaZS5mb3J3YXJkUmVmPWZ1bmN0aW9uKGspe3JldHVybnskJHR5cGVvZjp1LHJlbmRlcjprfX0sWmUuaXNWYWxpZEVsZW1lbnQ9SSxaZS5sYXp5PWZ1bmN0aW9uKGspe3JldHVybnskJHR5cGVvZjpwLF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6a30sX2luaXQ6V319LFplLm1lbW89ZnVuY3Rpb24oayxaKXtyZXR1cm57JCR0eXBlb2Y6ZCx0eXBlOmssY29tcGFyZTpaPT09dm9pZCAwP251bGw6Wn19LFplLnN0YXJ0VHJhbnNpdGlvbj1mdW5jdGlvbihrKXt2YXIgWj1ULlQsdGU9e307VC5UPXRlO3RyeXt2YXIgb2U9aygpLG1lPVQuUzttZSE9PW51bGwmJm1lKHRlLG9lKSx0eXBlb2Ygb2U9PSJvYmplY3QiJiZvZSE9PW51bGwmJnR5cGVvZiBvZS50aGVuPT0iZnVuY3Rpb24iJiZvZS50aGVuKGVlLEgpfWNhdGNoKGJlKXtIKGJlKX1maW5hbGx5e1QuVD1afX0sWmUudW5zdGFibGVfdXNlQ2FjaGVSZWZyZXNoPWZ1bmN0aW9uKCl7cmV0dXJuIFQuSC51c2VDYWNoZVJlZnJlc2goKX0sWmUudXNlPWZ1bmN0aW9uKGspe3JldHVybiBULkgudXNlKGspfSxaZS51c2VBY3Rpb25TdGF0ZT1mdW5jdGlvbihrLFosdGUpe3JldHVybiBULkgudXNlQWN0aW9uU3RhdGUoayxaLHRlKX0sWmUudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oayxaKXtyZXR1cm4gVC5ILnVzZUNhbGxiYWNrKGssWil9LFplLnVzZUNvbnRleHQ9ZnVuY3Rpb24oayl7cmV0dXJuIFQuSC51c2VDb250ZXh0KGspfSxaZS51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fSxaZS51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGssWil7cmV0dXJuIFQuSC51c2VEZWZlcnJlZFZhbHVlKGssWil9LFplLnVzZUVmZmVjdD1mdW5jdGlvbihrLFosdGUpe3ZhciBvZT1ULkg7aWYodHlwZW9mIHRlPT0iZnVuY3Rpb24iKXRocm93IEVycm9yKCJ1c2VFZmZlY3QgQ1JVRCBvdmVybG9hZCBpcyBub3QgZW5hYmxlZCBpbiB0aGlzIGJ1aWxkIG9mIFJlYWN0LiIpO3JldHVybiBvZS51c2VFZmZlY3QoayxaKX0sWmUudXNlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gVC5ILnVzZUlkKCl9LFplLnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oayxaLHRlKXtyZXR1cm4gVC5ILnVzZUltcGVyYXRpdmVIYW5kbGUoayxaLHRlKX0sWmUudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGssWil7cmV0dXJuIFQuSC51c2VJbnNlcnRpb25FZmZlY3QoayxaKX0sWmUudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGssWil7cmV0dXJuIFQuSC51c2VMYXlvdXRFZmZlY3QoayxaKX0sWmUudXNlTWVtbz1mdW5jdGlvbihrLFope3JldHVybiBULkgudXNlTWVtbyhrLFopfSxaZS51c2VPcHRpbWlzdGljPWZ1bmN0aW9uKGssWil7cmV0dXJuIFQuSC51c2VPcHRpbWlzdGljKGssWil9LFplLnVzZVJlZHVjZXI9ZnVuY3Rpb24oayxaLHRlKXtyZXR1cm4gVC5ILnVzZVJlZHVjZXIoayxaLHRlKX0sWmUudXNlUmVmPWZ1bmN0aW9uKGspe3JldHVybiBULkgudXNlUmVmKGspfSxaZS51c2VTdGF0ZT1mdW5jdGlvbihrKXtyZXR1cm4gVC5ILnVzZVN0YXRlKGspfSxaZS51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihrLFosdGUpe3JldHVybiBULkgudXNlU3luY0V4dGVybmFsU3RvcmUoayxaLHRlKX0sWmUudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBULkgudXNlVHJhbnNpdGlvbigpfSxaZS52ZXJzaW9uPSIxOS4xLjAiLFplfXZhciBnTTtmdW5jdGlvbiBUeSgpe3JldHVybiBnTXx8KGdNPTEsS2IuZXhwb3J0cz13SCgpKSxLYi5leHBvcnRzfXZhciBXYj17ZXhwb3J0czp7fX0sJG49e307dmFyIGJNO2Z1bmN0aW9uIFNIKCl7aWYoYk0pcmV0dXJuICRuO2JNPTE7dmFyIGU9VHkoKTtmdW5jdGlvbiB0KGYpe3ZhciBkPSJodHRwczovL3JlYWN0LmRldi9lcnJvcnMvIitmO2lmKDE8YXJndW1lbnRzLmxlbmd0aCl7ZCs9Ij9hcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzWzFdKTtmb3IodmFyIHA9MjtwPGFyZ3VtZW50cy5sZW5ndGg7cCsrKWQrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1twXSl9cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2YrIjsgdmlzaXQgIitkKyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9ZnVuY3Rpb24gbigpe312YXIgcj17ZDp7ZjpuLHI6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcih0KDUyMikpfSxEOm4sQzpuLEw6bixtOm4sWDpuLFM6bixNOm59LHA6MCxmaW5kRE9NTm9kZTpudWxsfSxpPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpO2Z1bmN0aW9uIG8oZixkLHApe3ZhciBtPTM8YXJndW1lbnRzLmxlbmd0aCYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjppLGtleTptPT1udWxsP251bGw6IiIrbSxjaGlsZHJlbjpmLGNvbnRhaW5lckluZm86ZCxpbXBsZW1lbnRhdGlvbjpwfX12YXIgcz1lLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTtmdW5jdGlvbiB1KGYsZCl7aWYoZj09PSJmb250IilyZXR1cm4iIjtpZih0eXBlb2YgZD09InN0cmluZyIpcmV0dXJuIGQ9PT0idXNlLWNyZWRlbnRpYWxzIj9kOiIifXJldHVybiAkbi5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU9ciwkbi5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oZixkKXt2YXIgcD0yPGFyZ3VtZW50cy5sZW5ndGgmJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06bnVsbDtpZighZHx8ZC5ub2RlVHlwZSE9PTEmJmQubm9kZVR5cGUhPT05JiZkLm5vZGVUeXBlIT09MTEpdGhyb3cgRXJyb3IodCgyOTkpKTtyZXR1cm4gbyhmLGQsbnVsbCxwKX0sJG4uZmx1c2hTeW5jPWZ1bmN0aW9uKGYpe3ZhciBkPXMuVCxwPXIucDt0cnl7aWYocy5UPW51bGwsci5wPTIsZilyZXR1cm4gZigpfWZpbmFsbHl7cy5UPWQsci5wPXAsci5kLmYoKX19LCRuLnByZWNvbm5lY3Q9ZnVuY3Rpb24oZixkKXt0eXBlb2YgZj09InN0cmluZyImJihkPyhkPWQuY3Jvc3NPcmlnaW4sZD10eXBlb2YgZD09InN0cmluZyI/ZD09PSJ1c2UtY3JlZGVudGlhbHMiP2Q6IiI6dm9pZCAwKTpkPW51bGwsci5kLkMoZixkKSl9LCRuLnByZWZldGNoRE5TPWZ1bmN0aW9uKGYpe3R5cGVvZiBmPT0ic3RyaW5nIiYmci5kLkQoZil9LCRuLnByZWluaXQ9ZnVuY3Rpb24oZixkKXtpZih0eXBlb2YgZj09InN0cmluZyImJmQmJnR5cGVvZiBkLmFzPT0ic3RyaW5nIil7dmFyIHA9ZC5hcyxtPXUocCxkLmNyb3NzT3JpZ2luKSx5PXR5cGVvZiBkLmludGVncml0eT09InN0cmluZyI/ZC5pbnRlZ3JpdHk6dm9pZCAwLHg9dHlwZW9mIGQuZmV0Y2hQcmlvcml0eT09InN0cmluZyI/ZC5mZXRjaFByaW9yaXR5OnZvaWQgMDtwPT09InN0eWxlIj9yLmQuUyhmLHR5cGVvZiBkLnByZWNlZGVuY2U9PSJzdHJpbmciP2QucHJlY2VkZW5jZTp2b2lkIDAse2Nyb3NzT3JpZ2luOm0saW50ZWdyaXR5OnksZmV0Y2hQcmlvcml0eTp4fSk6cD09PSJzY3JpcHQiJiZyLmQuWChmLHtjcm9zc09yaWdpbjptLGludGVncml0eTp5LGZldGNoUHJpb3JpdHk6eCxub25jZTp0eXBlb2YgZC5ub25jZT09InN0cmluZyI/ZC5ub25jZTp2b2lkIDB9KX19LCRuLnByZWluaXRNb2R1bGU9ZnVuY3Rpb24oZixkKXtpZih0eXBlb2YgZj09InN0cmluZyIpaWYodHlwZW9mIGQ9PSJvYmplY3QiJiZkIT09bnVsbCl7aWYoZC5hcz09bnVsbHx8ZC5hcz09PSJzY3JpcHQiKXt2YXIgcD11KGQuYXMsZC5jcm9zc09yaWdpbik7ci5kLk0oZix7Y3Jvc3NPcmlnaW46cCxpbnRlZ3JpdHk6dHlwZW9mIGQuaW50ZWdyaXR5PT0ic3RyaW5nIj9kLmludGVncml0eTp2b2lkIDAsbm9uY2U6dHlwZW9mIGQubm9uY2U9PSJzdHJpbmciP2Qubm9uY2U6dm9pZCAwfSl9fWVsc2UgZD09bnVsbCYmci5kLk0oZil9LCRuLnByZWxvYWQ9ZnVuY3Rpb24oZixkKXtpZih0eXBlb2YgZj09InN0cmluZyImJnR5cGVvZiBkPT0ib2JqZWN0IiYmZCE9PW51bGwmJnR5cGVvZiBkLmFzPT0ic3RyaW5nIil7dmFyIHA9ZC5hcyxtPXUocCxkLmNyb3NzT3JpZ2luKTtyLmQuTChmLHAse2Nyb3NzT3JpZ2luOm0saW50ZWdyaXR5OnR5cGVvZiBkLmludGVncml0eT09InN0cmluZyI/ZC5pbnRlZ3JpdHk6dm9pZCAwLG5vbmNlOnR5cGVvZiBkLm5vbmNlPT0ic3RyaW5nIj9kLm5vbmNlOnZvaWQgMCx0eXBlOnR5cGVvZiBkLnR5cGU9PSJzdHJpbmciP2QudHlwZTp2b2lkIDAsZmV0Y2hQcmlvcml0eTp0eXBlb2YgZC5mZXRjaFByaW9yaXR5PT0ic3RyaW5nIj9kLmZldGNoUHJpb3JpdHk6dm9pZCAwLHJlZmVycmVyUG9saWN5OnR5cGVvZiBkLnJlZmVycmVyUG9saWN5PT0ic3RyaW5nIj9kLnJlZmVycmVyUG9saWN5OnZvaWQgMCxpbWFnZVNyY1NldDp0eXBlb2YgZC5pbWFnZVNyY1NldD09InN0cmluZyI/ZC5pbWFnZVNyY1NldDp2b2lkIDAsaW1hZ2VTaXplczp0eXBlb2YgZC5pbWFnZVNpemVzPT0ic3RyaW5nIj9kLmltYWdlU2l6ZXM6dm9pZCAwLG1lZGlhOnR5cGVvZiBkLm1lZGlhPT0ic3RyaW5nIj9kLm1lZGlhOnZvaWQgMH0pfX0sJG4ucHJlbG9hZE1vZHVsZT1mdW5jdGlvbihmLGQpe2lmKHR5cGVvZiBmPT0ic3RyaW5nIilpZihkKXt2YXIgcD11KGQuYXMsZC5jcm9zc09yaWdpbik7ci5kLm0oZix7YXM6dHlwZW9mIGQuYXM9PSJzdHJpbmciJiZkLmFzIT09InNjcmlwdCI/ZC5hczp2b2lkIDAsY3Jvc3NPcmlnaW46cCxpbnRlZ3JpdHk6dHlwZW9mIGQuaW50ZWdyaXR5PT0ic3RyaW5nIj9kLmludGVncml0eTp2b2lkIDB9KX1lbHNlIHIuZC5tKGYpfSwkbi5yZXF1ZXN0Rm9ybVJlc2V0PWZ1bmN0aW9uKGYpe3IuZC5yKGYpfSwkbi51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1mdW5jdGlvbihmLGQpe3JldHVybiBmKGQpfSwkbi51c2VGb3JtU3RhdGU9ZnVuY3Rpb24oZixkLHApe3JldHVybiBzLkgudXNlRm9ybVN0YXRlKGYsZCxwKX0sJG4udXNlRm9ybVN0YXR1cz1mdW5jdGlvbigpe3JldHVybiBzLkgudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMoKX0sJG4udmVyc2lvbj0iMTkuMS4wIiwkbn12YXIgeE07ZnVuY3Rpb24gdjQoKXtpZih4TSlyZXR1cm4gV2IuZXhwb3J0czt4TT0xO2Z1bmN0aW9uIGUoKXtpZighKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18+InUifHx0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFIT0iZnVuY3Rpb24iKSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGUpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IodCl9fXJldHVybiBlKCksV2IuZXhwb3J0cz1TSCgpLFdiLmV4cG9ydHN9dmFyIHdNO2Z1bmN0aW9uIEFIKCl7aWYod00pcmV0dXJuIEZjO3dNPTE7dmFyIGU9eEgoKSx0PVR5KCksbj12NCgpO2Z1bmN0aW9uIHIoYSl7dmFyIGw9Imh0dHBzOi8vcmVhY3QuZGV2L2Vycm9ycy8iK2E7aWYoMTxhcmd1bWVudHMubGVuZ3RoKXtsKz0iP2FyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbMV0pO2Zvcih2YXIgYz0yO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspbCs9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKX1yZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrYSsiOyB2aXNpdCAiK2wrIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIn1mdW5jdGlvbiBpKGEpe3JldHVybiEoIWF8fGEubm9kZVR5cGUhPT0xJiZhLm5vZGVUeXBlIT09OSYmYS5ub2RlVHlwZSE9PTExKX1mdW5jdGlvbiBvKGEpe3ZhciBsPWEsYz1hO2lmKGEuYWx0ZXJuYXRlKWZvcig7bC5yZXR1cm47KWw9bC5yZXR1cm47ZWxzZXthPWw7ZG8gbD1hLChsLmZsYWdzJjQwOTgpIT09MCYmKGM9bC5yZXR1cm4pLGE9bC5yZXR1cm47d2hpbGUoYSl9cmV0dXJuIGwudGFnPT09Mz9jOm51bGx9ZnVuY3Rpb24gcyhhKXtpZihhLnRhZz09PTEzKXt2YXIgbD1hLm1lbW9pemVkU3RhdGU7aWYobD09PW51bGwmJihhPWEuYWx0ZXJuYXRlLGEhPT1udWxsJiYobD1hLm1lbW9pemVkU3RhdGUpKSxsIT09bnVsbClyZXR1cm4gbC5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIHUoYSl7aWYobyhhKSE9PWEpdGhyb3cgRXJyb3IocigxODgpKX1mdW5jdGlvbiBmKGEpe3ZhciBsPWEuYWx0ZXJuYXRlO2lmKCFsKXtpZihsPW8oYSksbD09PW51bGwpdGhyb3cgRXJyb3IocigxODgpKTtyZXR1cm4gbCE9PWE/bnVsbDphfWZvcih2YXIgYz1hLGg9bDs7KXt2YXIgdj1jLnJldHVybjtpZih2PT09bnVsbClicmVhazt2YXIgUz12LmFsdGVybmF0ZTtpZihTPT09bnVsbCl7aWYoaD12LnJldHVybixoIT09bnVsbCl7Yz1oO2NvbnRpbnVlfWJyZWFrfWlmKHYuY2hpbGQ9PT1TLmNoaWxkKXtmb3IoUz12LmNoaWxkO1M7KXtpZihTPT09YylyZXR1cm4gdSh2KSxhO2lmKFM9PT1oKXJldHVybiB1KHYpLGw7Uz1TLnNpYmxpbmd9dGhyb3cgRXJyb3IocigxODgpKX1pZihjLnJldHVybiE9PWgucmV0dXJuKWM9dixoPVM7ZWxzZXtmb3IodmFyIE09ITEsRD12LmNoaWxkO0Q7KXtpZihEPT09Yyl7TT0hMCxjPXYsaD1TO2JyZWFrfWlmKEQ9PT1oKXtNPSEwLGg9dixjPVM7YnJlYWt9RD1ELnNpYmxpbmd9aWYoIU0pe2ZvcihEPVMuY2hpbGQ7RDspe2lmKEQ9PT1jKXtNPSEwLGM9UyxoPXY7YnJlYWt9aWYoRD09PWgpe009ITAsaD1TLGM9djticmVha31EPUQuc2libGluZ31pZighTSl0aHJvdyBFcnJvcihyKDE4OSkpfX1pZihjLmFsdGVybmF0ZSE9PWgpdGhyb3cgRXJyb3IocigxOTApKX1pZihjLnRhZyE9PTMpdGhyb3cgRXJyb3IocigxODgpKTtyZXR1cm4gYy5zdGF0ZU5vZGUuY3VycmVudD09PWM/YTpsfWZ1bmN0aW9uIGQoYSl7dmFyIGw9YS50YWc7aWYobD09PTV8fGw9PT0yNnx8bD09PTI3fHxsPT09NilyZXR1cm4gYTtmb3IoYT1hLmNoaWxkO2EhPT1udWxsOyl7aWYobD1kKGEpLGwhPT1udWxsKXJldHVybiBsO2E9YS5zaWJsaW5nfXJldHVybiBudWxsfXZhciBwPU9iamVjdC5hc3NpZ24sbT1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IikseT1TeW1ib2wuZm9yKCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudCIpLHg9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksdz1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLGI9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxnPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksXz1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLE89U3ltYm9sLmZvcigicmVhY3QuY29uc3VtZXIiKSxFPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxqPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksVD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLFA9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpLE49U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLFI9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLEk9U3ltYm9sLmZvcigicmVhY3QuYWN0aXZpdHkiKSxWPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWwiKSxCPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiAkKGEpe3JldHVybiBhPT09bnVsbHx8dHlwZW9mIGEhPSJvYmplY3QiP251bGw6KGE9QiYmYVtCXXx8YVsiQEBpdGVyYXRvciJdLHR5cGVvZiBhPT0iZnVuY3Rpb24iP2E6bnVsbCl9dmFyIHo9U3ltYm9sLmZvcigicmVhY3QuY2xpZW50LnJlZmVyZW5jZSIpO2Z1bmN0aW9uIFUoYSl7aWYoYT09bnVsbClyZXR1cm4gbnVsbDtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gYS4kJHR5cGVvZj09PXo/bnVsbDphLmRpc3BsYXlOYW1lfHxhLm5hbWV8fG51bGw7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBhO3N3aXRjaChhKXtjYXNlIHc6cmV0dXJuIkZyYWdtZW50IjtjYXNlIGc6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIGI6cmV0dXJuIlN0cmljdE1vZGUiO2Nhc2UgVDpyZXR1cm4iU3VzcGVuc2UiO2Nhc2UgUDpyZXR1cm4iU3VzcGVuc2VMaXN0IjtjYXNlIEk6cmV0dXJuIkFjdGl2aXR5In1pZih0eXBlb2YgYT09Im9iamVjdCIpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgeDpyZXR1cm4iUG9ydGFsIjtjYXNlIEU6cmV0dXJuKGEuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Qcm92aWRlciI7Y2FzZSBPOnJldHVybihhLl9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuQ29uc3VtZXIiO2Nhc2Ugajp2YXIgbD1hLnJlbmRlcjtyZXR1cm4gYT1hLmRpc3BsYXlOYW1lLGF8fChhPWwuZGlzcGxheU5hbWV8fGwubmFtZXx8IiIsYT1hIT09IiI/IkZvcndhcmRSZWYoIithKyIpIjoiRm9yd2FyZFJlZiIpLGE7Y2FzZSBOOnJldHVybiBsPWEuZGlzcGxheU5hbWV8fG51bGwsbCE9PW51bGw/bDpVKGEudHlwZSl8fCJNZW1vIjtjYXNlIFI6bD1hLl9wYXlsb2FkLGE9YS5faW5pdDt0cnl7cmV0dXJuIFUoYShsKSl9Y2F0Y2h7fX1yZXR1cm4gbnVsbH12YXIgSz1BcnJheS5pc0FycmF5LEw9dC5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsVz1uLl9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxIPXtwZW5kaW5nOiExLGRhdGE6bnVsbCxtZXRob2Q6bnVsbCxhY3Rpb246bnVsbH0sZWU9W10saz0tMTtmdW5jdGlvbiBaKGEpe3JldHVybntjdXJyZW50OmF9fWZ1bmN0aW9uIHRlKGEpezA+a3x8KGEuY3VycmVudD1lZVtrXSxlZVtrXT1udWxsLGstLSl9ZnVuY3Rpb24gb2UoYSxsKXtrKyssZWVba109YS5jdXJyZW50LGEuY3VycmVudD1sfXZhciBtZT1aKG51bGwpLGJlPVoobnVsbCksZ2U9WihudWxsKSxfZT1aKG51bGwpO2Z1bmN0aW9uIFRlKGEsbCl7c3dpdGNoKG9lKGdlLGwpLG9lKGJlLGEpLG9lKG1lLG51bGwpLGwubm9kZVR5cGUpe2Nhc2UgOTpjYXNlIDExOmE9KGE9bC5kb2N1bWVudEVsZW1lbnQpJiYoYT1hLm5hbWVzcGFjZVVSSSk/cVAoYSk6MDticmVhaztkZWZhdWx0OmlmKGE9bC50YWdOYW1lLGw9bC5uYW1lc3BhY2VVUkkpbD1xUChsKSxhPVVQKGwsYSk7ZWxzZSBzd2l0Y2goYSl7Y2FzZSJzdmciOmE9MTticmVhaztjYXNlIm1hdGgiOmE9MjticmVhaztkZWZhdWx0OmE9MH19dGUobWUpLG9lKG1lLGEpfWZ1bmN0aW9uIGNlKCl7dGUobWUpLHRlKGJlKSx0ZShnZSl9ZnVuY3Rpb24gQWUoYSl7YS5tZW1vaXplZFN0YXRlIT09bnVsbCYmb2UoX2UsYSk7dmFyIGw9bWUuY3VycmVudCxjPVVQKGwsYS50eXBlKTtsIT09YyYmKG9lKGJlLGEpLG9lKG1lLGMpKX1mdW5jdGlvbiBTZShhKXtiZS5jdXJyZW50PT09YSYmKHRlKG1lKSx0ZShiZSkpLF9lLmN1cnJlbnQ9PT1hJiYodGUoX2UpLCRjLl9jdXJyZW50VmFsdWU9SCl9dmFyIHNlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksS2U9ZS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLExlPWUudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssYnQ9ZS51bnN0YWJsZV9zaG91bGRZaWVsZCxUdD1lLnVuc3RhYmxlX3JlcXVlc3RQYWludCxsdD1lLnVuc3RhYmxlX25vdyxzcj1lLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGxyPWUudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksR3I9ZS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxYbj1lLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LF9yPWUudW5zdGFibGVfTG93UHJpb3JpdHksU2E9ZS51bnN0YWJsZV9JZGxlUHJpb3JpdHksVG89ZS5sb2csRW89ZS51bnN0YWJsZV9zZXREaXNhYmxlWWllbGRWYWx1ZSxDbz1udWxsLHFuPW51bGw7ZnVuY3Rpb24gTGkoYSl7aWYodHlwZW9mIFRvPT0iZnVuY3Rpb24iJiZFbyhhKSxxbiYmdHlwZW9mIHFuLnNldFN0cmljdE1vZGU9PSJmdW5jdGlvbiIpdHJ5e3FuLnNldFN0cmljdE1vZGUoQ28sYSl9Y2F0Y2h7fX12YXIgWm49TWF0aC5jbHozMj9NYXRoLmNsejMyOlEsemQ9TWF0aC5sb2cscT1NYXRoLkxOMjtmdW5jdGlvbiBRKGEpe3JldHVybiBhPj4+PTAsYT09PTA/MzI6MzEtKHpkKGEpL3F8MCl8MH12YXIgSj0yNTYsaGU9NDE5NDMwNDtmdW5jdGlvbiBwZShhKXt2YXIgbD1hJjQyO2lmKGwhPT0wKXJldHVybiBsO3N3aXRjaChhJi1hKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpyZXR1cm4gNjQ7Y2FzZSAxMjg6cmV0dXJuIDEyODtjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYSY0MTk0MDQ4O2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiBhJjYyOTE0NTYwO2Nhc2UgNjcxMDg4NjQ6cmV0dXJuIDY3MTA4ODY0O2Nhc2UgMTM0MjE3NzI4OnJldHVybiAxMzQyMTc3Mjg7Y2FzZSAyNjg0MzU0NTY6cmV0dXJuIDI2ODQzNTQ1NjtjYXNlIDUzNjg3MDkxMjpyZXR1cm4gNTM2ODcwOTEyO2Nhc2UgMTA3Mzc0MTgyNDpyZXR1cm4gMDtkZWZhdWx0OnJldHVybiBhfX1mdW5jdGlvbiB3ZShhLGwsYyl7dmFyIGg9YS5wZW5kaW5nTGFuZXM7aWYoaD09PTApcmV0dXJuIDA7dmFyIHY9MCxTPWEuc3VzcGVuZGVkTGFuZXMsTT1hLnBpbmdlZExhbmVzO2E9YS53YXJtTGFuZXM7dmFyIEQ9aCYxMzQyMTc3Mjc7cmV0dXJuIEQhPT0wPyhoPUQmflMsaCE9PTA/dj1wZShoKTooTSY9RCxNIT09MD92PXBlKE0pOmN8fChjPUQmfmEsYyE9PTAmJih2PXBlKGMpKSkpKTooRD1oJn5TLEQhPT0wP3Y9cGUoRCk6TSE9PTA/dj1wZShNKTpjfHwoYz1oJn5hLGMhPT0wJiYodj1wZShjKSkpKSx2PT09MD8wOmwhPT0wJiZsIT09diYmKGwmUyk9PT0wJiYoUz12Ji12LGM9bCYtbCxTPj1jfHxTPT09MzImJihjJjQxOTQwNDgpIT09MCk/bDp2fWZ1bmN0aW9uIHhlKGEsbCl7cmV0dXJuKGEucGVuZGluZ0xhbmVzJn4oYS5zdXNwZW5kZWRMYW5lcyZ+YS5waW5nZWRMYW5lcykmbCk9PT0wfWZ1bmN0aW9uIEVlKGEsbCl7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgODpjYXNlIDY0OnJldHVybiBsKzI1MDtjYXNlIDE2OmNhc2UgMzI6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGwrNWUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybi0xO2Nhc2UgNjcxMDg4NjQ6Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fWZ1bmN0aW9uIEJlKCl7dmFyIGE9SjtyZXR1cm4gSjw8PTEsKEomNDE5NDA0OCk9PT0wJiYoSj0yNTYpLGF9ZnVuY3Rpb24gRXQoKXt2YXIgYT1oZTtyZXR1cm4gaGU8PD0xLChoZSY2MjkxNDU2MCk9PT0wJiYoaGU9NDE5NDMwNCksYX1mdW5jdGlvbiBlbihhKXtmb3IodmFyIGw9W10sYz0wOzMxPmM7YysrKWwucHVzaChhKTtyZXR1cm4gbH1mdW5jdGlvbiBVbihhLGwpe2EucGVuZGluZ0xhbmVzfD1sLGwhPT0yNjg0MzU0NTYmJihhLnN1c3BlbmRlZExhbmVzPTAsYS5waW5nZWRMYW5lcz0wLGEud2FybUxhbmVzPTApfWZ1bmN0aW9uIEtyKGEsbCxjLGgsdixTKXt2YXIgTT1hLnBlbmRpbmdMYW5lczthLnBlbmRpbmdMYW5lcz1jLGEuc3VzcGVuZGVkTGFuZXM9MCxhLnBpbmdlZExhbmVzPTAsYS53YXJtTGFuZXM9MCxhLmV4cGlyZWRMYW5lcyY9YyxhLmVudGFuZ2xlZExhbmVzJj1jLGEuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXMmPWMsYS5zaGVsbFN1c3BlbmRDb3VudGVyPTA7dmFyIEQ9YS5lbnRhbmdsZW1lbnRzLEc9YS5leHBpcmF0aW9uVGltZXMscmU9YS5oaWRkZW5VcGRhdGVzO2ZvcihjPU0mfmM7MDxjOyl7dmFyIHVlPTMxLVpuKGMpLGRlPTE8PHVlO0RbdWVdPTAsR1t1ZV09LTE7dmFyIGllPXJlW3VlXTtpZihpZSE9PW51bGwpZm9yKHJlW3VlXT1udWxsLHVlPTA7dWU8aWUubGVuZ3RoO3VlKyspe3ZhciBhZT1pZVt1ZV07YWUhPT1udWxsJiYoYWUubGFuZSY9LTUzNjg3MDkxMyl9YyY9fmRlfWghPT0wJiZBYShhLGgsMCksUyE9PTAmJnY9PT0wJiZhLnRhZyE9PTAmJihhLnN1c3BlbmRlZExhbmVzfD1TJn4oTSZ+bCkpfWZ1bmN0aW9uIEFhKGEsbCxjKXthLnBlbmRpbmdMYW5lc3w9bCxhLnN1c3BlbmRlZExhbmVzJj1+bDt2YXIgaD0zMS1abihsKTthLmVudGFuZ2xlZExhbmVzfD1sLGEuZW50YW5nbGVtZW50c1toXT1hLmVudGFuZ2xlbWVudHNbaF18MTA3Mzc0MTgyNHxjJjQxOTQwOTB9ZnVuY3Rpb24gRmQoYSxsKXt2YXIgYz1hLmVudGFuZ2xlZExhbmVzfD1sO2ZvcihhPWEuZW50YW5nbGVtZW50cztjOyl7dmFyIGg9MzEtWm4oYyksdj0xPDxoO3YmbHxhW2hdJmwmJihhW2hdfD1sKSxjJj1+dn19ZnVuY3Rpb24gSWkoYSl7c3dpdGNoKGEpe2Nhc2UgMjphPTE7YnJlYWs7Y2FzZSA4OmE9NDticmVhaztjYXNlIDMyOmE9MTY7YnJlYWs7Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6YT0xMjg7YnJlYWs7Y2FzZSAyNjg0MzU0NTY6YT0xMzQyMTc3Mjg7YnJlYWs7ZGVmYXVsdDphPTB9cmV0dXJuIGF9ZnVuY3Rpb24gS3UoYSl7cmV0dXJuIGEmPS1hLDI8YT84PGE/KGEmMTM0MjE3NzI3KSE9PTA/MzI6MjY4NDM1NDU2Ojg6Mn1mdW5jdGlvbiBXdSgpe3ZhciBhPVcucDtyZXR1cm4gYSE9PTA/YTooYT13aW5kb3cuZXZlbnQsYT09PXZvaWQgMD8zMjpzTShhLnR5cGUpKX1mdW5jdGlvbiBhOChhLGwpe3ZhciBjPVcucDt0cnl7cmV0dXJuIFcucD1hLGwoKX1maW5hbGx5e1cucD1jfX12YXIgX2E9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksTG49Il9fcmVhY3RGaWJlciQiK19hLFFuPSJfX3JlYWN0UHJvcHMkIitfYSxOcz0iX19yZWFjdENvbnRhaW5lciQiK19hLER2PSJfX3JlYWN0RXZlbnRzJCIrX2Esbzg9Il9fcmVhY3RMaXN0ZW5lcnMkIitfYSxzOD0iX19yZWFjdEhhbmRsZXMkIitfYSxqRT0iX19yZWFjdFJlc291cmNlcyQiK19hLFl1PSJfX3JlYWN0TWFya2VyJCIrX2E7ZnVuY3Rpb24gTHYoYSl7ZGVsZXRlIGFbTG5dLGRlbGV0ZSBhW1FuXSxkZWxldGUgYVtEdl0sZGVsZXRlIGFbbzhdLGRlbGV0ZSBhW3M4XX1mdW5jdGlvbiBrcyhhKXt2YXIgbD1hW0xuXTtpZihsKXJldHVybiBsO2Zvcih2YXIgYz1hLnBhcmVudE5vZGU7Yzspe2lmKGw9Y1tOc118fGNbTG5dKXtpZihjPWwuYWx0ZXJuYXRlLGwuY2hpbGQhPT1udWxsfHxjIT09bnVsbCYmYy5jaGlsZCE9PW51bGwpZm9yKGE9R1AoYSk7YSE9PW51bGw7KXtpZihjPWFbTG5dKXJldHVybiBjO2E9R1AoYSl9cmV0dXJuIGx9YT1jLGM9YS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIERzKGEpe2lmKGE9YVtMbl18fGFbTnNdKXt2YXIgbD1hLnRhZztpZihsPT09NXx8bD09PTZ8fGw9PT0xM3x8bD09PTI2fHxsPT09Mjd8fGw9PT0zKXJldHVybiBhfXJldHVybiBudWxsfWZ1bmN0aW9uIFh1KGEpe3ZhciBsPWEudGFnO2lmKGw9PT01fHxsPT09MjZ8fGw9PT0yN3x8bD09PTYpcmV0dXJuIGEuc3RhdGVOb2RlO3Rocm93IEVycm9yKHIoMzMpKX1mdW5jdGlvbiBMcyhhKXt2YXIgbD1hW2pFXTtyZXR1cm4gbHx8KGw9YVtqRV09e2hvaXN0YWJsZVN0eWxlczpuZXcgTWFwLGhvaXN0YWJsZVNjcmlwdHM6bmV3IE1hcH0pLGx9ZnVuY3Rpb24geG4oYSl7YVtZdV09ITB9dmFyIFBFPW5ldyBTZXQsTUU9e307ZnVuY3Rpb24gam8oYSxsKXtJcyhhLGwpLElzKGErIkNhcHR1cmUiLGwpfWZ1bmN0aW9uIElzKGEsbCl7Zm9yKE1FW2FdPWwsYT0wO2E8bC5sZW5ndGg7YSsrKVBFLmFkZChsW2FdKX12YXIgbDg9UmVnRXhwKCJeWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXVs6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSokIiksUkU9e30sTkU9e307ZnVuY3Rpb24gdTgoYSl7cmV0dXJuIHNlLmNhbGwoTkUsYSk/ITA6c2UuY2FsbChSRSxhKT8hMTpsOC50ZXN0KGEpP05FW2FdPSEwOihSRVthXT0hMCwhMSl9ZnVuY3Rpb24gSGQoYSxsLGMpe2lmKHU4KGwpKWlmKGM9PT1udWxsKWEucmVtb3ZlQXR0cmlidXRlKGwpO2Vsc2V7c3dpdGNoKHR5cGVvZiBjKXtjYXNlInVuZGVmaW5lZCI6Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOmEucmVtb3ZlQXR0cmlidXRlKGwpO3JldHVybjtjYXNlImJvb2xlYW4iOnZhciBoPWwudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO2lmKGghPT0iZGF0YS0iJiZoIT09ImFyaWEtIil7YS5yZW1vdmVBdHRyaWJ1dGUobCk7cmV0dXJufX1hLnNldEF0dHJpYnV0ZShsLCIiK2MpfX1mdW5jdGlvbiBHZChhLGwsYyl7aWYoYz09PW51bGwpYS5yZW1vdmVBdHRyaWJ1dGUobCk7ZWxzZXtzd2l0Y2godHlwZW9mIGMpe2Nhc2UidW5kZWZpbmVkIjpjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6Y2FzZSJib29sZWFuIjphLnJlbW92ZUF0dHJpYnV0ZShsKTtyZXR1cm59YS5zZXRBdHRyaWJ1dGUobCwiIitjKX19ZnVuY3Rpb24gJGkoYSxsLGMsaCl7aWYoaD09PW51bGwpYS5yZW1vdmVBdHRyaWJ1dGUoYyk7ZWxzZXtzd2l0Y2godHlwZW9mIGgpe2Nhc2UidW5kZWZpbmVkIjpjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6Y2FzZSJib29sZWFuIjphLnJlbW92ZUF0dHJpYnV0ZShjKTtyZXR1cm59YS5zZXRBdHRyaWJ1dGVOUyhsLGMsIiIraCl9fXZhciBJdixrRTtmdW5jdGlvbiAkcyhhKXtpZihJdj09PXZvaWQgMCl0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChjKXt2YXIgbD1jLnN0YWNrLnRyaW0oKS5tYXRjaCgvXG4oICooYXQgKT8pLyk7SXY9bCYmbFsxXXx8IiIsa0U9LTE8Yy5zdGFjay5pbmRleE9mKGAKICAgIGF0YCk/IiAoPGFub255bW91cz4pIjotMTxjLnN0YWNrLmluZGV4T2YoIkAiKT8iQHVua25vd246MDowIjoiIn1yZXR1cm5gCmArSXYrYStrRX12YXIgJHY9ITE7ZnVuY3Rpb24gQnYoYSxsKXtpZighYXx8JHYpcmV0dXJuIiI7JHY9ITA7dmFyIGM9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXt2YXIgaD17RGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OmZ1bmN0aW9uKCl7dHJ5e2lmKGwpe3ZhciBkZT1mdW5jdGlvbigpe3Rocm93IEVycm9yKCl9O2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZS5wcm90b3R5cGUsInByb3BzIix7c2V0OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX19KSx0eXBlb2YgUmVmbGVjdD09Im9iamVjdCImJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoZGUsW10pfWNhdGNoKGFlKXt2YXIgaWU9YWV9UmVmbGVjdC5jb25zdHJ1Y3QoYSxbXSxkZSl9ZWxzZXt0cnl7ZGUuY2FsbCgpfWNhdGNoKGFlKXtpZT1hZX1hLmNhbGwoZGUucHJvdG90eXBlKX19ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChhZSl7aWU9YWV9KGRlPWEoKSkmJnR5cGVvZiBkZS5jYXRjaD09ImZ1bmN0aW9uIiYmZGUuY2F0Y2goZnVuY3Rpb24oKXt9KX19Y2F0Y2goYWUpe2lmKGFlJiZpZSYmdHlwZW9mIGFlLnN0YWNrPT0ic3RyaW5nIilyZXR1cm5bYWUuc3RhY2ssaWUuc3RhY2tdfXJldHVybltudWxsLG51bGxdfX07aC5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QuZGlzcGxheU5hbWU9IkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCI7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCwibmFtZSIpO3YmJnYuY29uZmlndXJhYmxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsIm5hbWUiLHt2YWx1ZToiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290In0pO3ZhciBTPWguRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290KCksTT1TWzBdLEQ9U1sxXTtpZihNJiZEKXt2YXIgRz1NLnNwbGl0KGAKYCkscmU9RC5zcGxpdChgCmApO2Zvcih2PWg9MDtoPEcubGVuZ3RoJiYhR1toXS5pbmNsdWRlcygiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290Iik7KWgrKztmb3IoO3Y8cmUubGVuZ3RoJiYhcmVbdl0uaW5jbHVkZXMoIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCIpOyl2Kys7aWYoaD09PUcubGVuZ3RofHx2PT09cmUubGVuZ3RoKWZvcihoPUcubGVuZ3RoLTEsdj1yZS5sZW5ndGgtMTsxPD1oJiYwPD12JiZHW2hdIT09cmVbdl07KXYtLTtmb3IoOzE8PWgmJjA8PXY7aC0tLHYtLSlpZihHW2hdIT09cmVbdl0pe2lmKGghPT0xfHx2IT09MSlkbyBpZihoLS0sdi0tLDA+dnx8R1toXSE9PXJlW3ZdKXt2YXIgdWU9YApgK0dbaF0ucmVwbGFjZSgiIGF0IG5ldyAiLCIgYXQgIik7cmV0dXJuIGEuZGlzcGxheU5hbWUmJnVlLmluY2x1ZGVzKCI8YW5vbnltb3VzPiIpJiYodWU9dWUucmVwbGFjZSgiPGFub255bW91cz4iLGEuZGlzcGxheU5hbWUpKSx1ZX13aGlsZSgxPD1oJiYwPD12KTticmVha319fWZpbmFsbHl7JHY9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9Y31yZXR1cm4oYz1hP2EuZGlzcGxheU5hbWV8fGEubmFtZToiIik/JHMoYyk6IiJ9ZnVuY3Rpb24gYzgoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OnJldHVybiAkcyhhLnR5cGUpO2Nhc2UgMTY6cmV0dXJuICRzKCJMYXp5Iik7Y2FzZSAxMzpyZXR1cm4gJHMoIlN1c3BlbnNlIik7Y2FzZSAxOTpyZXR1cm4gJHMoIlN1c3BlbnNlTGlzdCIpO2Nhc2UgMDpjYXNlIDE1OnJldHVybiBCdihhLnR5cGUsITEpO2Nhc2UgMTE6cmV0dXJuIEJ2KGEudHlwZS5yZW5kZXIsITEpO2Nhc2UgMTpyZXR1cm4gQnYoYS50eXBlLCEwKTtjYXNlIDMxOnJldHVybiAkcygiQWN0aXZpdHkiKTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBERShhKXt0cnl7dmFyIGw9IiI7ZG8gbCs9YzgoYSksYT1hLnJldHVybjt3aGlsZShhKTtyZXR1cm4gbH1jYXRjaChjKXtyZXR1cm5gCkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IGArYy5tZXNzYWdlK2AKYCtjLnN0YWNrfX1mdW5jdGlvbiBPcihhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UiYmlnaW50IjpjYXNlImJvb2xlYW4iOmNhc2UibnVtYmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiBhO2Nhc2Uib2JqZWN0IjpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBMRShhKXt2YXIgbD1hLnR5cGU7cmV0dXJuKGE9YS5ub2RlTmFtZSkmJmEudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJihsPT09ImNoZWNrYm94Inx8bD09PSJyYWRpbyIpfWZ1bmN0aW9uIGY4KGEpe3ZhciBsPUxFKGEpPyJjaGVja2VkIjoidmFsdWUiLGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxsKSxoPSIiK2FbbF07aWYoIWEuaGFzT3duUHJvcGVydHkobCkmJnR5cGVvZiBjPCJ1IiYmdHlwZW9mIGMuZ2V0PT0iZnVuY3Rpb24iJiZ0eXBlb2YgYy5zZXQ9PSJmdW5jdGlvbiIpe3ZhciB2PWMuZ2V0LFM9Yy5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGwse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oTSl7aD0iIitNLFMuY2FsbCh0aGlzLE0pfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGwse2VudW1lcmFibGU6Yy5lbnVtZXJhYmxlfSkse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LHNldFZhbHVlOmZ1bmN0aW9uKE0pe2g9IiIrTX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPW51bGwsZGVsZXRlIGFbbF19fX19ZnVuY3Rpb24gS2QoYSl7YS5fdmFsdWVUcmFja2VyfHwoYS5fdmFsdWVUcmFja2VyPWY4KGEpKX1mdW5jdGlvbiBJRShhKXtpZighYSlyZXR1cm4hMTt2YXIgbD1hLl92YWx1ZVRyYWNrZXI7aWYoIWwpcmV0dXJuITA7dmFyIGM9bC5nZXRWYWx1ZSgpLGg9IiI7cmV0dXJuIGEmJihoPUxFKGEpP2EuY2hlY2tlZD8idHJ1ZSI6ImZhbHNlIjphLnZhbHVlKSxhPWgsYSE9PWM/KGwuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIFdkKGEpe2lmKGE9YXx8KHR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQ6dm9pZCAwKSx0eXBlb2YgYT4idSIpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBhLmFjdGl2ZUVsZW1lbnR8fGEuYm9keX1jYXRjaHtyZXR1cm4gYS5ib2R5fX12YXIgZDg9L1tcbiJcXF0vZztmdW5jdGlvbiBUcihhKXtyZXR1cm4gYS5yZXBsYWNlKGQ4LGZ1bmN0aW9uKGwpe3JldHVybiJcXCIrbC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSsiICJ9KX1mdW5jdGlvbiBWdihhLGwsYyxoLHYsUyxNLEQpe2EubmFtZT0iIixNIT1udWxsJiZ0eXBlb2YgTSE9ImZ1bmN0aW9uIiYmdHlwZW9mIE0hPSJzeW1ib2wiJiZ0eXBlb2YgTSE9ImJvb2xlYW4iP2EudHlwZT1NOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksbCE9bnVsbD9NPT09Im51bWJlciI/KGw9PT0wJiZhLnZhbHVlPT09IiJ8fGEudmFsdWUhPWwpJiYoYS52YWx1ZT0iIitPcihsKSk6YS52YWx1ZSE9PSIiK09yKGwpJiYoYS52YWx1ZT0iIitPcihsKSk6TSE9PSJzdWJtaXQiJiZNIT09InJlc2V0Inx8YS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIiksbCE9bnVsbD9xdihhLE0sT3IobCkpOmMhPW51bGw/cXYoYSxNLE9yKGMpKTpoIT1udWxsJiZhLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKSx2PT1udWxsJiZTIT1udWxsJiYoYS5kZWZhdWx0Q2hlY2tlZD0hIVMpLHYhPW51bGwmJihhLmNoZWNrZWQ9diYmdHlwZW9mIHYhPSJmdW5jdGlvbiImJnR5cGVvZiB2IT0ic3ltYm9sIiksRCE9bnVsbCYmdHlwZW9mIEQhPSJmdW5jdGlvbiImJnR5cGVvZiBEIT0ic3ltYm9sIiYmdHlwZW9mIEQhPSJib29sZWFuIj9hLm5hbWU9IiIrT3IoRCk6YS5yZW1vdmVBdHRyaWJ1dGUoIm5hbWUiKX1mdW5jdGlvbiAkRShhLGwsYyxoLHYsUyxNLEQpe2lmKFMhPW51bGwmJnR5cGVvZiBTIT0iZnVuY3Rpb24iJiZ0eXBlb2YgUyE9InN5bWJvbCImJnR5cGVvZiBTIT0iYm9vbGVhbiImJihhLnR5cGU9UyksbCE9bnVsbHx8YyE9bnVsbCl7aWYoIShTIT09InN1Ym1pdCImJlMhPT0icmVzZXQifHxsIT1udWxsKSlyZXR1cm47Yz1jIT1udWxsPyIiK09yKGMpOiIiLGw9bCE9bnVsbD8iIitPcihsKTpjLER8fGw9PT1hLnZhbHVlfHwoYS52YWx1ZT1sKSxhLmRlZmF1bHRWYWx1ZT1sfWg9aD8/dixoPXR5cGVvZiBoIT0iZnVuY3Rpb24iJiZ0eXBlb2YgaCE9InN5bWJvbCImJiEhaCxhLmNoZWNrZWQ9RD9hLmNoZWNrZWQ6ISFoLGEuZGVmYXVsdENoZWNrZWQ9ISFoLE0hPW51bGwmJnR5cGVvZiBNIT0iZnVuY3Rpb24iJiZ0eXBlb2YgTSE9InN5bWJvbCImJnR5cGVvZiBNIT0iYm9vbGVhbiImJihhLm5hbWU9TSl9ZnVuY3Rpb24gcXYoYSxsLGMpe2w9PT0ibnVtYmVyIiYmV2QoYS5vd25lckRvY3VtZW50KT09PWF8fGEuZGVmYXVsdFZhbHVlPT09IiIrY3x8KGEuZGVmYXVsdFZhbHVlPSIiK2MpfWZ1bmN0aW9uIEJzKGEsbCxjLGgpe2lmKGE9YS5vcHRpb25zLGwpe2w9e307Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2KyspbFsiJCIrY1t2XV09ITA7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyl2PWwuaGFzT3duUHJvcGVydHkoIiQiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT12JiYoYVtjXS5zZWxlY3RlZD12KSx2JiZoJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Zm9yKGM9IiIrT3IoYyksbD1udWxsLHY9MDt2PGEubGVuZ3RoO3YrKyl7aWYoYVt2XS52YWx1ZT09PWMpe2Fbdl0uc2VsZWN0ZWQ9ITAsaCYmKGFbdl0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bCE9PW51bGx8fGFbdl0uZGlzYWJsZWR8fChsPWFbdl0pfWwhPT1udWxsJiYobC5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9uIEJFKGEsbCxjKXtpZihsIT1udWxsJiYobD0iIitPcihsKSxsIT09YS52YWx1ZSYmKGEudmFsdWU9bCksYz09bnVsbCkpe2EuZGVmYXVsdFZhbHVlIT09bCYmKGEuZGVmYXVsdFZhbHVlPWwpO3JldHVybn1hLmRlZmF1bHRWYWx1ZT1jIT1udWxsPyIiK09yKGMpOiIifWZ1bmN0aW9uIFZFKGEsbCxjLGgpe2lmKGw9PW51bGwpe2lmKGghPW51bGwpe2lmKGMhPW51bGwpdGhyb3cgRXJyb3Iocig5MikpO2lmKEsoaCkpe2lmKDE8aC5sZW5ndGgpdGhyb3cgRXJyb3Iocig5MykpO2g9aFswXX1jPWh9Yz09bnVsbCYmKGM9IiIpLGw9Y31jPU9yKGwpLGEuZGVmYXVsdFZhbHVlPWMsaD1hLnRleHRDb250ZW50LGg9PT1jJiZoIT09IiImJmghPT1udWxsJiYoYS52YWx1ZT1oKX1mdW5jdGlvbiBWcyhhLGwpe2lmKGwpe3ZhciBjPWEuZmlyc3RDaGlsZDtpZihjJiZjPT09YS5sYXN0Q2hpbGQmJmMubm9kZVR5cGU9PT0zKXtjLm5vZGVWYWx1ZT1sO3JldHVybn19YS50ZXh0Q29udGVudD1sfXZhciBoOD1uZXcgU2V0KCJhbmltYXRpb25JdGVyYXRpb25Db3VudCBhc3BlY3RSYXRpbyBib3JkZXJJbWFnZU91dHNldCBib3JkZXJJbWFnZVNsaWNlIGJvcmRlckltYWdlV2lkdGggYm94RmxleCBib3hGbGV4R3JvdXAgYm94T3JkaW5hbEdyb3VwIGNvbHVtbkNvdW50IGNvbHVtbnMgZmxleCBmbGV4R3JvdyBmbGV4UG9zaXRpdmUgZmxleFNocmluayBmbGV4TmVnYXRpdmUgZmxleE9yZGVyIGdyaWRBcmVhIGdyaWRSb3cgZ3JpZFJvd0VuZCBncmlkUm93U3BhbiBncmlkUm93U3RhcnQgZ3JpZENvbHVtbiBncmlkQ29sdW1uRW5kIGdyaWRDb2x1bW5TcGFuIGdyaWRDb2x1bW5TdGFydCBmb250V2VpZ2h0IGxpbmVDbGFtcCBsaW5lSGVpZ2h0IG9wYWNpdHkgb3JkZXIgb3JwaGFucyBzY2FsZSB0YWJTaXplIHdpZG93cyB6SW5kZXggem9vbSBmaWxsT3BhY2l0eSBmbG9vZE9wYWNpdHkgc3RvcE9wYWNpdHkgc3Ryb2tlRGFzaGFycmF5IHN0cm9rZURhc2hvZmZzZXQgc3Ryb2tlTWl0ZXJsaW1pdCBzdHJva2VPcGFjaXR5IHN0cm9rZVdpZHRoIE1vekFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IE1vekJveEZsZXggTW96Qm94RmxleEdyb3VwIE1vekxpbmVDbGFtcCBtc0FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IG1zRmxleCBtc1pvb20gbXNGbGV4R3JvdyBtc0ZsZXhOZWdhdGl2ZSBtc0ZsZXhPcmRlciBtc0ZsZXhQb3NpdGl2ZSBtc0ZsZXhTaHJpbmsgbXNHcmlkQ29sdW1uIG1zR3JpZENvbHVtblNwYW4gbXNHcmlkUm93IG1zR3JpZFJvd1NwYW4gV2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgV2Via2l0Qm94RmxleCBXZWJLaXRCb3hGbGV4R3JvdXAgV2Via2l0Qm94T3JkaW5hbEdyb3VwIFdlYmtpdENvbHVtbkNvdW50IFdlYmtpdENvbHVtbnMgV2Via2l0RmxleCBXZWJraXRGbGV4R3JvdyBXZWJraXRGbGV4UG9zaXRpdmUgV2Via2l0RmxleFNocmluayBXZWJraXRMaW5lQ2xhbXAiLnNwbGl0KCIgIikpO2Z1bmN0aW9uIHFFKGEsbCxjKXt2YXIgaD1sLmluZGV4T2YoIi0tIik9PT0wO2M9PW51bGx8fHR5cGVvZiBjPT0iYm9vbGVhbiJ8fGM9PT0iIj9oP2Euc2V0UHJvcGVydHkobCwiIik6bD09PSJmbG9hdCI/YS5jc3NGbG9hdD0iIjphW2xdPSIiOmg/YS5zZXRQcm9wZXJ0eShsLGMpOnR5cGVvZiBjIT0ibnVtYmVyInx8Yz09PTB8fGg4LmhhcyhsKT9sPT09ImZsb2F0Ij9hLmNzc0Zsb2F0PWM6YVtsXT0oIiIrYykudHJpbSgpOmFbbF09YysicHgifWZ1bmN0aW9uIFVFKGEsbCxjKXtpZihsIT1udWxsJiZ0eXBlb2YgbCE9Im9iamVjdCIpdGhyb3cgRXJyb3Iocig2MikpO2lmKGE9YS5zdHlsZSxjIT1udWxsKXtmb3IodmFyIGggaW4gYykhYy5oYXNPd25Qcm9wZXJ0eShoKXx8bCE9bnVsbCYmbC5oYXNPd25Qcm9wZXJ0eShoKXx8KGguaW5kZXhPZigiLS0iKT09PTA/YS5zZXRQcm9wZXJ0eShoLCIiKTpoPT09ImZsb2F0Ij9hLmNzc0Zsb2F0PSIiOmFbaF09IiIpO2Zvcih2YXIgdiBpbiBsKWg9bFt2XSxsLmhhc093blByb3BlcnR5KHYpJiZjW3ZdIT09aCYmcUUoYSx2LGgpfWVsc2UgZm9yKHZhciBTIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShTKSYmcUUoYSxTLGxbU10pfWZ1bmN0aW9uIFV2KGEpe2lmKGEuaW5kZXhPZigiLSIpPT09LTEpcmV0dXJuITE7c3dpdGNoKGEpe2Nhc2UiYW5ub3RhdGlvbi14bWwiOmNhc2UiY29sb3ItcHJvZmlsZSI6Y2FzZSJmb250LWZhY2UiOmNhc2UiZm9udC1mYWNlLXNyYyI6Y2FzZSJmb250LWZhY2UtdXJpIjpjYXNlImZvbnQtZmFjZS1mb3JtYXQiOmNhc2UiZm9udC1mYWNlLW5hbWUiOmNhc2UibWlzc2luZy1nbHlwaCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHA4PW5ldyBNYXAoW1siYWNjZXB0Q2hhcnNldCIsImFjY2VwdC1jaGFyc2V0Il0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il0sWyJjcm9zc09yaWdpbiIsImNyb3Nzb3JpZ2luIl0sWyJhY2NlbnRIZWlnaHQiLCJhY2NlbnQtaGVpZ2h0Il0sWyJhbGlnbm1lbnRCYXNlbGluZSIsImFsaWdubWVudC1iYXNlbGluZSJdLFsiYXJhYmljRm9ybSIsImFyYWJpYy1mb3JtIl0sWyJiYXNlbGluZVNoaWZ0IiwiYmFzZWxpbmUtc2hpZnQiXSxbImNhcEhlaWdodCIsImNhcC1oZWlnaHQiXSxbImNsaXBQYXRoIiwiY2xpcC1wYXRoIl0sWyJjbGlwUnVsZSIsImNsaXAtcnVsZSJdLFsiY29sb3JJbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbiJdLFsiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyIsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyJdLFsiY29sb3JQcm9maWxlIiwiY29sb3ItcHJvZmlsZSJdLFsiY29sb3JSZW5kZXJpbmciLCJjb2xvci1yZW5kZXJpbmciXSxbImRvbWluYW50QmFzZWxpbmUiLCJkb21pbmFudC1iYXNlbGluZSJdLFsiZW5hYmxlQmFja2dyb3VuZCIsImVuYWJsZS1iYWNrZ3JvdW5kIl0sWyJmaWxsT3BhY2l0eSIsImZpbGwtb3BhY2l0eSJdLFsiZmlsbFJ1bGUiLCJmaWxsLXJ1bGUiXSxbImZsb29kQ29sb3IiLCJmbG9vZC1jb2xvciJdLFsiZmxvb2RPcGFjaXR5IiwiZmxvb2Qtb3BhY2l0eSJdLFsiZm9udEZhbWlseSIsImZvbnQtZmFtaWx5Il0sWyJmb250U2l6ZSIsImZvbnQtc2l6ZSJdLFsiZm9udFNpemVBZGp1c3QiLCJmb250LXNpemUtYWRqdXN0Il0sWyJmb250U3RyZXRjaCIsImZvbnQtc3RyZXRjaCJdLFsiZm9udFN0eWxlIiwiZm9udC1zdHlsZSJdLFsiZm9udFZhcmlhbnQiLCJmb250LXZhcmlhbnQiXSxbImZvbnRXZWlnaHQiLCJmb250LXdlaWdodCJdLFsiZ2x5cGhOYW1lIiwiZ2x5cGgtbmFtZSJdLFsiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiLCJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIl0sWyJnbHlwaE9yaWVudGF0aW9uVmVydGljYWwiLCJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCJdLFsiaG9yaXpBZHZYIiwiaG9yaXotYWR2LXgiXSxbImhvcml6T3JpZ2luWCIsImhvcml6LW9yaWdpbi14Il0sWyJpbWFnZVJlbmRlcmluZyIsImltYWdlLXJlbmRlcmluZyJdLFsibGV0dGVyU3BhY2luZyIsImxldHRlci1zcGFjaW5nIl0sWyJsaWdodGluZ0NvbG9yIiwibGlnaHRpbmctY29sb3IiXSxbIm1hcmtlckVuZCIsIm1hcmtlci1lbmQiXSxbIm1hcmtlck1pZCIsIm1hcmtlci1taWQiXSxbIm1hcmtlclN0YXJ0IiwibWFya2VyLXN0YXJ0Il0sWyJvdmVybGluZVBvc2l0aW9uIiwib3ZlcmxpbmUtcG9zaXRpb24iXSxbIm92ZXJsaW5lVGhpY2tuZXNzIiwib3ZlcmxpbmUtdGhpY2tuZXNzIl0sWyJwYWludE9yZGVyIiwicGFpbnQtb3JkZXIiXSxbInBhbm9zZS0xIiwicGFub3NlLTEiXSxbInBvaW50ZXJFdmVudHMiLCJwb2ludGVyLWV2ZW50cyJdLFsicmVuZGVyaW5nSW50ZW50IiwicmVuZGVyaW5nLWludGVudCJdLFsic2hhcGVSZW5kZXJpbmciLCJzaGFwZS1yZW5kZXJpbmciXSxbInN0b3BDb2xvciIsInN0b3AtY29sb3IiXSxbInN0b3BPcGFjaXR5Iiwic3RvcC1vcGFjaXR5Il0sWyJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIl0sWyJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwic3RyaWtldGhyb3VnaC10aGlja25lc3MiXSxbInN0cm9rZURhc2hhcnJheSIsInN0cm9rZS1kYXNoYXJyYXkiXSxbInN0cm9rZURhc2hvZmZzZXQiLCJzdHJva2UtZGFzaG9mZnNldCJdLFsic3Ryb2tlTGluZWNhcCIsInN0cm9rZS1saW5lY2FwIl0sWyJzdHJva2VMaW5lam9pbiIsInN0cm9rZS1saW5lam9pbiJdLFsic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZS1taXRlcmxpbWl0Il0sWyJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlLW9wYWNpdHkiXSxbInN0cm9rZVdpZHRoIiwic3Ryb2tlLXdpZHRoIl0sWyJ0ZXh0QW5jaG9yIiwidGV4dC1hbmNob3IiXSxbInRleHREZWNvcmF0aW9uIiwidGV4dC1kZWNvcmF0aW9uIl0sWyJ0ZXh0UmVuZGVyaW5nIiwidGV4dC1yZW5kZXJpbmciXSxbInRyYW5zZm9ybU9yaWdpbiIsInRyYW5zZm9ybS1vcmlnaW4iXSxbInVuZGVybGluZVBvc2l0aW9uIiwidW5kZXJsaW5lLXBvc2l0aW9uIl0sWyJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmRlcmxpbmUtdGhpY2tuZXNzIl0sWyJ1bmljb2RlQmlkaSIsInVuaWNvZGUtYmlkaSJdLFsidW5pY29kZVJhbmdlIiwidW5pY29kZS1yYW5nZSJdLFsidW5pdHNQZXJFbSIsInVuaXRzLXBlci1lbSJdLFsidkFscGhhYmV0aWMiLCJ2LWFscGhhYmV0aWMiXSxbInZIYW5naW5nIiwidi1oYW5naW5nIl0sWyJ2SWRlb2dyYXBoaWMiLCJ2LWlkZW9ncmFwaGljIl0sWyJ2TWF0aGVtYXRpY2FsIiwidi1tYXRoZW1hdGljYWwiXSxbInZlY3RvckVmZmVjdCIsInZlY3Rvci1lZmZlY3QiXSxbInZlcnRBZHZZIiwidmVydC1hZHYteSJdLFsidmVydE9yaWdpblgiLCJ2ZXJ0LW9yaWdpbi14Il0sWyJ2ZXJ0T3JpZ2luWSIsInZlcnQtb3JpZ2luLXkiXSxbIndvcmRTcGFjaW5nIiwid29yZC1zcGFjaW5nIl0sWyJ3cml0aW5nTW9kZSIsIndyaXRpbmctbW9kZSJdLFsieG1sbnNYbGluayIsInhtbG5zOnhsaW5rIl0sWyJ4SGVpZ2h0IiwieC1oZWlnaHQiXV0pLG04PS9eW1x1MDAwMC1cdTAwMUYgXSpqW1xyXG5cdF0qYVtcclxuXHRdKnZbXHJcblx0XSphW1xyXG5cdF0qc1tcclxuXHRdKmNbXHJcblx0XSpyW1xyXG5cdF0qaVtcclxuXHRdKnBbXHJcblx0XSp0W1xyXG5cdF0qOi9pO2Z1bmN0aW9uIFlkKGEpe3JldHVybiBtOC50ZXN0KCIiK2EpPyJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcignUmVhY3QgaGFzIGJsb2NrZWQgYSBqYXZhc2NyaXB0OiBVUkwgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLicpIjphfXZhciB6dj1udWxsO2Z1bmN0aW9uIEZ2KGEpe3JldHVybiBhPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnR8fHdpbmRvdyxhLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoYT1hLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSxhLm5vZGVUeXBlPT09Mz9hLnBhcmVudE5vZGU6YX12YXIgcXM9bnVsbCxVcz1udWxsO2Z1bmN0aW9uIHpFKGEpe3ZhciBsPURzKGEpO2lmKGwmJihhPWwuc3RhdGVOb2RlKSl7dmFyIGM9YVtRbl18fG51bGw7ZTpzd2l0Y2goYT1sLnN0YXRlTm9kZSxsLnR5cGUpe2Nhc2UiaW5wdXQiOmlmKFZ2KGEsYy52YWx1ZSxjLmRlZmF1bHRWYWx1ZSxjLmRlZmF1bHRWYWx1ZSxjLmNoZWNrZWQsYy5kZWZhdWx0Q2hlY2tlZCxjLnR5cGUsYy5uYW1lKSxsPWMubmFtZSxjLnR5cGU9PT0icmFkaW8iJiZsIT1udWxsKXtmb3IoYz1hO2MucGFyZW50Tm9kZTspYz1jLnBhcmVudE5vZGU7Zm9yKGM9Yy5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPSInK1RyKCIiK2wpKyciXVt0eXBlPSJyYWRpbyJdJyksbD0wO2w8Yy5sZW5ndGg7bCsrKXt2YXIgaD1jW2xdO2lmKGghPT1hJiZoLmZvcm09PT1hLmZvcm0pe3ZhciB2PWhbUW5dfHxudWxsO2lmKCF2KXRocm93IEVycm9yKHIoOTApKTtWdihoLHYudmFsdWUsdi5kZWZhdWx0VmFsdWUsdi5kZWZhdWx0VmFsdWUsdi5jaGVja2VkLHYuZGVmYXVsdENoZWNrZWQsdi50eXBlLHYubmFtZSl9fWZvcihsPTA7bDxjLmxlbmd0aDtsKyspaD1jW2xdLGguZm9ybT09PWEuZm9ybSYmSUUoaCl9YnJlYWsgZTtjYXNlInRleHRhcmVhIjpCRShhLGMudmFsdWUsYy5kZWZhdWx0VmFsdWUpO2JyZWFrIGU7Y2FzZSJzZWxlY3QiOmw9Yy52YWx1ZSxsIT1udWxsJiZCcyhhLCEhYy5tdWx0aXBsZSxsLCExKX19fXZhciBIdj0hMTtmdW5jdGlvbiBGRShhLGwsYyl7aWYoSHYpcmV0dXJuIGEobCxjKTtIdj0hMDt0cnl7dmFyIGg9YShsKTtyZXR1cm4gaH1maW5hbGx5e2lmKEh2PSExLChxcyE9PW51bGx8fFVzIT09bnVsbCkmJihraCgpLHFzJiYobD1xcyxhPVVzLFVzPXFzPW51bGwsekUobCksYSkpKWZvcihsPTA7bDxhLmxlbmd0aDtsKyspekUoYVtsXSl9fWZ1bmN0aW9uIFp1KGEsbCl7dmFyIGM9YS5zdGF0ZU5vZGU7aWYoYz09PW51bGwpcmV0dXJuIG51bGw7dmFyIGg9Y1tRbl18fG51bGw7aWYoaD09PW51bGwpcmV0dXJuIG51bGw7Yz1oW2xdO2U6c3dpdGNoKGwpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOmNhc2Uib25Nb3VzZUVudGVyIjooaD0haC5kaXNhYmxlZCl8fChhPWEudHlwZSxoPSEoYT09PSJidXR0b24ifHxhPT09ImlucHV0Inx8YT09PSJzZWxlY3QifHxhPT09InRleHRhcmVhIikpLGE9IWg7YnJlYWsgZTtkZWZhdWx0OmE9ITF9aWYoYSlyZXR1cm4gbnVsbDtpZihjJiZ0eXBlb2YgYyE9ImZ1bmN0aW9uIil0aHJvdyBFcnJvcihyKDIzMSxsLHR5cGVvZiBjKSk7cmV0dXJuIGN9dmFyIEJpPSEodHlwZW9mIHdpbmRvdz4idSJ8fHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQ+InUifHx0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ+InUiKSxHdj0hMTtpZihCaSl0cnl7dmFyIFF1PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRdSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe0d2PSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixRdSxRdSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLFF1LFF1KX1jYXRjaHtHdj0hMX12YXIgT2E9bnVsbCxLdj1udWxsLFhkPW51bGw7ZnVuY3Rpb24gSEUoKXtpZihYZClyZXR1cm4gWGQ7dmFyIGEsbD1LdixjPWwubGVuZ3RoLGgsdj0idmFsdWUiaW4gT2E/T2EudmFsdWU6T2EudGV4dENvbnRlbnQsUz12Lmxlbmd0aDtmb3IoYT0wO2E8YyYmbFthXT09PXZbYV07YSsrKTt2YXIgTT1jLWE7Zm9yKGg9MTtoPD1NJiZsW2MtaF09PT12W1MtaF07aCsrKTtyZXR1cm4gWGQ9di5zbGljZShhLDE8aD8xLWg6dm9pZCAwKX1mdW5jdGlvbiBaZChhKXt2YXIgbD1hLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGE/KGE9YS5jaGFyQ29kZSxhPT09MCYmbD09PTEzJiYoYT0xMykpOmE9bCxhPT09MTAmJihhPTEzKSwzMjw9YXx8YT09PTEzP2E6MH1mdW5jdGlvbiBRZCgpe3JldHVybiEwfWZ1bmN0aW9uIEdFKCl7cmV0dXJuITF9ZnVuY3Rpb24gSm4oYSl7ZnVuY3Rpb24gbChjLGgsdixTLE0pe3RoaXMuX3JlYWN0TmFtZT1jLHRoaXMuX3RhcmdldEluc3Q9dix0aGlzLnR5cGU9aCx0aGlzLm5hdGl2ZUV2ZW50PVMsdGhpcy50YXJnZXQ9TSx0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIEQgaW4gYSlhLmhhc093blByb3BlcnR5KEQpJiYoYz1hW0RdLHRoaXNbRF09Yz9jKFMpOlNbRF0pO3JldHVybiB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0oUy5kZWZhdWx0UHJldmVudGVkIT1udWxsP1MuZGVmYXVsdFByZXZlbnRlZDpTLnJldHVyblZhbHVlPT09ITEpP1FkOkdFLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9R0UsdGhpc31yZXR1cm4gcChsLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGM9dGhpcy5uYXRpdmVFdmVudDtjJiYoYy5wcmV2ZW50RGVmYXVsdD9jLnByZXZlbnREZWZhdWx0KCk6dHlwZW9mIGMucmV0dXJuVmFsdWUhPSJ1bmtub3duIiYmKGMucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPVFkKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5uYXRpdmVFdmVudDtjJiYoYy5zdG9wUHJvcGFnYXRpb24/Yy5zdG9wUHJvcGFnYXRpb24oKTp0eXBlb2YgYy5jYW5jZWxCdWJibGUhPSJ1bmtub3duIiYmKGMuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPVFkKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OlFkfSksbH12YXIgUG89e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sSmQ9Sm4oUG8pLEp1PXAoe30sUG8se3ZpZXc6MCxkZXRhaWw6MH0pLHk4PUpuKEp1KSxXdixZdixlYyxlaD1wKHt9LEp1LHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOlp2LGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlbGF0ZWRUYXJnZXQ9PT12b2lkIDA/YS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50OmEucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe3JldHVybiJtb3ZlbWVudFgiaW4gYT9hLm1vdmVtZW50WDooYSE9PWVjJiYoZWMmJmEudHlwZT09PSJtb3VzZW1vdmUiPyhXdj1hLnNjcmVlblgtZWMuc2NyZWVuWCxZdj1hLnNjcmVlblktZWMuc2NyZWVuWSk6WXY9V3Y9MCxlYz1hKSxXdil9LG1vdmVtZW50WTpmdW5jdGlvbihhKXtyZXR1cm4ibW92ZW1lbnRZImluIGE/YS5tb3ZlbWVudFk6WXZ9fSksS0U9Sm4oZWgpLHY4PXAoe30sZWgse2RhdGFUcmFuc2ZlcjowfSksZzg9Sm4odjgpLGI4PXAoe30sSnUse3JlbGF0ZWRUYXJnZXQ6MH0pLFh2PUpuKGI4KSx4OD1wKHt9LFBvLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSx3OD1Kbih4OCksUzg9cCh7fSxQbyx7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4iY2xpcGJvYXJkRGF0YSJpbiBhP2EuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxBOD1KbihTOCksXzg9cCh7fSxQbyx7ZGF0YTowfSksV0U9Sm4oXzgpLE84PXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxUOD17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9LEU4PXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZnVuY3Rpb24gQzgoYSl7dmFyIGw9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gbC5nZXRNb2RpZmllclN0YXRlP2wuZ2V0TW9kaWZpZXJTdGF0ZShhKTooYT1FOFthXSk/ISFsW2FdOiExfWZ1bmN0aW9uIFp2KCl7cmV0dXJuIEM4fXZhciBqOD1wKHt9LEp1LHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBsPU84W2Eua2V5XXx8YS5rZXk7aWYobCE9PSJVbmlkZW50aWZpZWQiKXJldHVybiBsfXJldHVybiBhLnR5cGU9PT0ia2V5cHJlc3MiPyhhPVpkKGEpLGE9PT0xMz8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUoYSkpOmEudHlwZT09PSJrZXlkb3duInx8YS50eXBlPT09ImtleXVwIj9UOFthLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6WnYsY2hhckNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09PSJrZXlwcmVzcyI/WmQoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT09ImtleWRvd24ifHxhLnR5cGU9PT0ia2V5dXAiP2Eua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT09ImtleXByZXNzIj9aZChhKTphLnR5cGU9PT0ia2V5ZG93biJ8fGEudHlwZT09PSJrZXl1cCI/YS5rZXlDb2RlOjB9fSksUDg9Sm4oajgpLE04PXAoe30sZWgse3BvaW50ZXJJZDowLHdpZHRoOjAsaGVpZ2h0OjAscHJlc3N1cmU6MCx0YW5nZW50aWFsUHJlc3N1cmU6MCx0aWx0WDowLHRpbHRZOjAsdHdpc3Q6MCxwb2ludGVyVHlwZTowLGlzUHJpbWFyeTowfSksWUU9Sm4oTTgpLFI4PXAoe30sSnUse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTpadn0pLE44PUpuKFI4KSxrOD1wKHt9LFBvLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLEQ4PUpuKGs4KSxMOD1wKHt9LGVoLHtkZWx0YVg6ZnVuY3Rpb24oYSl7cmV0dXJuImRlbHRhWCJpbiBhP2EuZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBhPy1hLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihhKXtyZXR1cm4iZGVsdGFZImluIGE/YS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGE/LWEud2hlZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksSTg9Sm4oTDgpLCQ4PXAoe30sUG8se25ld1N0YXRlOjAsb2xkU3RhdGU6MH0pLEI4PUpuKCQ4KSxWOD1bOSwxMywyNywzMl0sUXY9QmkmJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyx0Yz1udWxsO0JpJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYodGM9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgcTg9QmkmJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhdGMsWEU9QmkmJighUXZ8fHRjJiY4PHRjJiYxMT49dGMpLFpFPSIgIixRRT0hMTtmdW5jdGlvbiBKRShhLGwpe3N3aXRjaChhKXtjYXNlImtleXVwIjpyZXR1cm4gVjguaW5kZXhPZihsLmtleUNvZGUpIT09LTE7Y2FzZSJrZXlkb3duIjpyZXR1cm4gbC5rZXlDb2RlIT09MjI5O2Nhc2Uia2V5cHJlc3MiOmNhc2UibW91c2Vkb3duIjpjYXNlImZvY3Vzb3V0IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBlQyhhKXtyZXR1cm4gYT1hLmRldGFpbCx0eXBlb2YgYT09Im9iamVjdCImJiJkYXRhImluIGE/YS5kYXRhOm51bGx9dmFyIHpzPSExO2Z1bmN0aW9uIFU4KGEsbCl7c3dpdGNoKGEpe2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiBlQyhsKTtjYXNlImtleXByZXNzIjpyZXR1cm4gbC53aGljaCE9PTMyP251bGw6KFFFPSEwLFpFKTtjYXNlInRleHRJbnB1dCI6cmV0dXJuIGE9bC5kYXRhLGE9PT1aRSYmUUU/bnVsbDphO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHo4KGEsbCl7aWYoenMpcmV0dXJuIGE9PT0iY29tcG9zaXRpb25lbmQifHwhUXYmJkpFKGEsbCk/KGE9SEUoKSxYZD1Ldj1PYT1udWxsLHpzPSExLGEpOm51bGw7c3dpdGNoKGEpe2Nhc2UicGFzdGUiOnJldHVybiBudWxsO2Nhc2Uia2V5cHJlc3MiOmlmKCEobC5jdHJsS2V5fHxsLmFsdEtleXx8bC5tZXRhS2V5KXx8bC5jdHJsS2V5JiZsLmFsdEtleSl7aWYobC5jaGFyJiYxPGwuY2hhci5sZW5ndGgpcmV0dXJuIGwuY2hhcjtpZihsLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGwud2hpY2gpfXJldHVybiBudWxsO2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiBYRSYmbC5sb2NhbGUhPT0ia28iP251bGw6bC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBGOD17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gdEMoYSl7dmFyIGw9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBsPT09ImlucHV0Ij8hIUY4W2EudHlwZV06bD09PSJ0ZXh0YXJlYSJ9ZnVuY3Rpb24gbkMoYSxsLGMsaCl7cXM/VXM/VXMucHVzaChoKTpVcz1baF06cXM9aCxsPVZoKGwsIm9uQ2hhbmdlIiksMDxsLmxlbmd0aCYmKGM9bmV3IEpkKCJvbkNoYW5nZSIsImNoYW5nZSIsbnVsbCxjLGgpLGEucHVzaCh7ZXZlbnQ6YyxsaXN0ZW5lcnM6bH0pKX12YXIgbmM9bnVsbCxyYz1udWxsO2Z1bmN0aW9uIEg4KGEpe0xQKGEsMCl9ZnVuY3Rpb24gdGgoYSl7dmFyIGw9WHUoYSk7aWYoSUUobCkpcmV0dXJuIGF9ZnVuY3Rpb24gckMoYSxsKXtpZihhPT09ImNoYW5nZSIpcmV0dXJuIGx9dmFyIGlDPSExO2lmKEJpKXt2YXIgSnY7aWYoQmkpe3ZhciBlZz0ib25pbnB1dCJpbiBkb2N1bWVudDtpZighZWcpe3ZhciBhQz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthQy5zZXRBdHRyaWJ1dGUoIm9uaW5wdXQiLCJyZXR1cm47IiksZWc9dHlwZW9mIGFDLm9uaW5wdXQ9PSJmdW5jdGlvbiJ9SnY9ZWd9ZWxzZSBKdj0hMTtpQz1KdiYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKX1mdW5jdGlvbiBvQygpe25jJiYobmMuZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLHNDKSxyYz1uYz1udWxsKX1mdW5jdGlvbiBzQyhhKXtpZihhLnByb3BlcnR5TmFtZT09PSJ2YWx1ZSImJnRoKHJjKSl7dmFyIGw9W107bkMobCxyYyxhLEZ2KGEpKSxGRShIOCxsKX19ZnVuY3Rpb24gRzgoYSxsLGMpe2E9PT0iZm9jdXNpbiI/KG9DKCksbmM9bCxyYz1jLG5jLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixzQykpOmE9PT0iZm9jdXNvdXQiJiZvQygpfWZ1bmN0aW9uIEs4KGEpe2lmKGE9PT0ic2VsZWN0aW9uY2hhbmdlInx8YT09PSJrZXl1cCJ8fGE9PT0ia2V5ZG93biIpcmV0dXJuIHRoKHJjKX1mdW5jdGlvbiBXOChhLGwpe2lmKGE9PT0iY2xpY2siKXJldHVybiB0aChsKX1mdW5jdGlvbiBZOChhLGwpe2lmKGE9PT0iaW5wdXQifHxhPT09ImNoYW5nZSIpcmV0dXJuIHRoKGwpfWZ1bmN0aW9uIFg4KGEsbCl7cmV0dXJuIGE9PT1sJiYoYSE9PTB8fDEvYT09PTEvbCl8fGEhPT1hJiZsIT09bH12YXIgdXI9dHlwZW9mIE9iamVjdC5pcz09ImZ1bmN0aW9uIj9PYmplY3QuaXM6WDg7ZnVuY3Rpb24gaWMoYSxsKXtpZih1cihhLGwpKXJldHVybiEwO2lmKHR5cGVvZiBhIT0ib2JqZWN0Inx8YT09PW51bGx8fHR5cGVvZiBsIT0ib2JqZWN0Inx8bD09PW51bGwpcmV0dXJuITE7dmFyIGM9T2JqZWN0LmtleXMoYSksaD1PYmplY3Qua2V5cyhsKTtpZihjLmxlbmd0aCE9PWgubGVuZ3RoKXJldHVybiExO2ZvcihoPTA7aDxjLmxlbmd0aDtoKyspe3ZhciB2PWNbaF07aWYoIXNlLmNhbGwobCx2KXx8IXVyKGFbdl0sbFt2XSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbEMoYSl7Zm9yKDthJiZhLmZpcnN0Q2hpbGQ7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfWZ1bmN0aW9uIHVDKGEsbCl7dmFyIGM9bEMoYSk7YT0wO2Zvcih2YXIgaDtjOyl7aWYoYy5ub2RlVHlwZT09PTMpe2lmKGg9YStjLnRleHRDb250ZW50Lmxlbmd0aCxhPD1sJiZoPj1sKXJldHVybntub2RlOmMsb2Zmc2V0OmwtYX07YT1ofWU6e2Zvcig7Yzspe2lmKGMubmV4dFNpYmxpbmcpe2M9Yy5uZXh0U2libGluZzticmVhayBlfWM9Yy5wYXJlbnROb2RlfWM9dm9pZCAwfWM9bEMoYyl9fWZ1bmN0aW9uIGNDKGEsbCl7cmV0dXJuIGEmJmw/YT09PWw/ITA6YSYmYS5ub2RlVHlwZT09PTM/ITE6bCYmbC5ub2RlVHlwZT09PTM/Y0MoYSxsLnBhcmVudE5vZGUpOiJjb250YWlucyJpbiBhP2EuY29udGFpbnMobCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGwpJjE2KTohMTohMX1mdW5jdGlvbiBmQyhhKXthPWEhPW51bGwmJmEub3duZXJEb2N1bWVudCE9bnVsbCYmYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IT1udWxsP2Eub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp3aW5kb3c7Zm9yKHZhciBsPVdkKGEuZG9jdW1lbnQpO2wgaW5zdGFuY2VvZiBhLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBjPXR5cGVvZiBsLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZj09InN0cmluZyJ9Y2F0Y2h7Yz0hMX1pZihjKWE9bC5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7bD1XZChhLmRvY3VtZW50KX1yZXR1cm4gbH1mdW5jdGlvbiB0ZyhhKXt2YXIgbD1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGwmJihsPT09ImlucHV0IiYmKGEudHlwZT09PSJ0ZXh0Inx8YS50eXBlPT09InNlYXJjaCJ8fGEudHlwZT09PSJ0ZWwifHxhLnR5cGU9PT0idXJsInx8YS50eXBlPT09InBhc3N3b3JkIil8fGw9PT0idGV4dGFyZWEifHxhLmNvbnRlbnRFZGl0YWJsZT09PSJ0cnVlIil9dmFyIFo4PUJpJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLEZzPW51bGwsbmc9bnVsbCxhYz1udWxsLHJnPSExO2Z1bmN0aW9uIGRDKGEsbCxjKXt2YXIgaD1jLndpbmRvdz09PWM/Yy5kb2N1bWVudDpjLm5vZGVUeXBlPT09OT9jOmMub3duZXJEb2N1bWVudDtyZ3x8RnM9PW51bGx8fEZzIT09V2QoaCl8fChoPUZzLCJzZWxlY3Rpb25TdGFydCJpbiBoJiZ0ZyhoKT9oPXtzdGFydDpoLnNlbGVjdGlvblN0YXJ0LGVuZDpoLnNlbGVjdGlvbkVuZH06KGg9KGgub3duZXJEb2N1bWVudCYmaC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGg9e2FuY2hvck5vZGU6aC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpoLmFuY2hvck9mZnNldCxmb2N1c05vZGU6aC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6aC5mb2N1c09mZnNldH0pLGFjJiZpYyhhYyxoKXx8KGFjPWgsaD1WaChuZywib25TZWxlY3QiKSwwPGgubGVuZ3RoJiYobD1uZXcgSmQoIm9uU2VsZWN0Iiwic2VsZWN0IixudWxsLGwsYyksYS5wdXNoKHtldmVudDpsLGxpc3RlbmVyczpofSksbC50YXJnZXQ9RnMpKSl9ZnVuY3Rpb24gTW8oYSxsKXt2YXIgYz17fTtyZXR1cm4gY1thLnRvTG93ZXJDYXNlKCldPWwudG9Mb3dlckNhc2UoKSxjWyJXZWJraXQiK2FdPSJ3ZWJraXQiK2wsY1siTW96IithXT0ibW96IitsLGN9dmFyIEhzPXthbmltYXRpb25lbmQ6TW8oIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpNbygiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6TW8oIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbnJ1bjpNbygiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25SdW4iKSx0cmFuc2l0aW9uc3RhcnQ6TW8oIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uU3RhcnQiKSx0cmFuc2l0aW9uY2FuY2VsOk1vKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkNhbmNlbCIpLHRyYW5zaXRpb25lbmQ6TW8oIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LGlnPXt9LGhDPXt9O0JpJiYoaEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBIcy5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBIcy5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBIcy5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgSHMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBSbyhhKXtpZihpZ1thXSlyZXR1cm4gaWdbYV07aWYoIUhzW2FdKXJldHVybiBhO3ZhciBsPUhzW2FdLGM7Zm9yKGMgaW4gbClpZihsLmhhc093blByb3BlcnR5KGMpJiZjIGluIGhDKXJldHVybiBpZ1thXT1sW2NdO3JldHVybiBhfXZhciBwQz1SbygiYW5pbWF0aW9uZW5kIiksbUM9Um8oImFuaW1hdGlvbml0ZXJhdGlvbiIpLHlDPVJvKCJhbmltYXRpb25zdGFydCIpLFE4PVJvKCJ0cmFuc2l0aW9ucnVuIiksSjg9Um8oInRyYW5zaXRpb25zdGFydCIpLGU5PVJvKCJ0cmFuc2l0aW9uY2FuY2VsIiksdkM9Um8oInRyYW5zaXRpb25lbmQiKSxnQz1uZXcgTWFwLGFnPSJhYm9ydCBhdXhDbGljayBiZWZvcmVUb2dnbGUgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWwiLnNwbGl0KCIgIik7YWcucHVzaCgic2Nyb2xsRW5kIik7ZnVuY3Rpb24gV3IoYSxsKXtnQy5zZXQoYSxsKSxqbyhsLFthXSl9dmFyIGJDPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEVyKGEsbCl7aWYodHlwZW9mIGE9PSJvYmplY3QiJiZhIT09bnVsbCl7dmFyIGM9YkMuZ2V0KGEpO3JldHVybiBjIT09dm9pZCAwP2M6KGw9e3ZhbHVlOmEsc291cmNlOmwsc3RhY2s6REUobCl9LGJDLnNldChhLGwpLGwpfXJldHVybnt2YWx1ZTphLHNvdXJjZTpsLHN0YWNrOkRFKGwpfX12YXIgQ3I9W10sR3M9MCxvZz0wO2Z1bmN0aW9uIG5oKCl7Zm9yKHZhciBhPUdzLGw9b2c9R3M9MDtsPGE7KXt2YXIgYz1DcltsXTtDcltsKytdPW51bGw7dmFyIGg9Q3JbbF07Q3JbbCsrXT1udWxsO3ZhciB2PUNyW2xdO0NyW2wrK109bnVsbDt2YXIgUz1DcltsXTtpZihDcltsKytdPW51bGwsaCE9PW51bGwmJnYhPT1udWxsKXt2YXIgTT1oLnBlbmRpbmc7TT09PW51bGw/di5uZXh0PXY6KHYubmV4dD1NLm5leHQsTS5uZXh0PXYpLGgucGVuZGluZz12fVMhPT0wJiZ4QyhjLHYsUyl9fWZ1bmN0aW9uIHJoKGEsbCxjLGgpe0NyW0dzKytdPWEsQ3JbR3MrK109bCxDcltHcysrXT1jLENyW0dzKytdPWgsb2d8PWgsYS5sYW5lc3w9aCxhPWEuYWx0ZXJuYXRlLGEhPT1udWxsJiYoYS5sYW5lc3w9aCl9ZnVuY3Rpb24gc2coYSxsLGMsaCl7cmV0dXJuIHJoKGEsbCxjLGgpLGloKGEpfWZ1bmN0aW9uIEtzKGEsbCl7cmV0dXJuIHJoKGEsbnVsbCxudWxsLGwpLGloKGEpfWZ1bmN0aW9uIHhDKGEsbCxjKXthLmxhbmVzfD1jO3ZhciBoPWEuYWx0ZXJuYXRlO2ghPT1udWxsJiYoaC5sYW5lc3w9Yyk7Zm9yKHZhciB2PSExLFM9YS5yZXR1cm47UyE9PW51bGw7KVMuY2hpbGRMYW5lc3w9YyxoPVMuYWx0ZXJuYXRlLGghPT1udWxsJiYoaC5jaGlsZExhbmVzfD1jKSxTLnRhZz09PTIyJiYoYT1TLnN0YXRlTm9kZSxhPT09bnVsbHx8YS5fdmlzaWJpbGl0eSYxfHwodj0hMCkpLGE9UyxTPVMucmV0dXJuO3JldHVybiBhLnRhZz09PTM/KFM9YS5zdGF0ZU5vZGUsdiYmbCE9PW51bGwmJih2PTMxLVpuKGMpLGE9Uy5oaWRkZW5VcGRhdGVzLGg9YVt2XSxoPT09bnVsbD9hW3ZdPVtsXTpoLnB1c2gobCksbC5sYW5lPWN8NTM2ODcwOTEyKSxTKTpudWxsfWZ1bmN0aW9uIGloKGEpe2lmKDUwPFBjKXRocm93IFBjPTAsaGI9bnVsbCxFcnJvcihyKDE4NSkpO2Zvcih2YXIgbD1hLnJldHVybjtsIT09bnVsbDspYT1sLGw9YS5yZXR1cm47cmV0dXJuIGEudGFnPT09Mz9hLnN0YXRlTm9kZTpudWxsfXZhciBXcz17fTtmdW5jdGlvbiB0OShhLGwsYyxoKXt0aGlzLnRhZz1hLHRoaXMua2V5PWMsdGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbCx0aGlzLmluZGV4PTAsdGhpcy5yZWZDbGVhbnVwPXRoaXMucmVmPW51bGwsdGhpcy5wZW5kaW5nUHJvcHM9bCx0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbCx0aGlzLm1vZGU9aCx0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTAsdGhpcy5kZWxldGlvbnM9bnVsbCx0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wLHRoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gY3IoYSxsLGMsaCl7cmV0dXJuIG5ldyB0OShhLGwsYyxoKX1mdW5jdGlvbiBsZyhhKXtyZXR1cm4gYT1hLnByb3RvdHlwZSwhKCFhfHwhYS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBWaShhLGwpe3ZhciBjPWEuYWx0ZXJuYXRlO3JldHVybiBjPT09bnVsbD8oYz1jcihhLnRhZyxsLGEua2V5LGEubW9kZSksYy5lbGVtZW50VHlwZT1hLmVsZW1lbnRUeXBlLGMudHlwZT1hLnR5cGUsYy5zdGF0ZU5vZGU9YS5zdGF0ZU5vZGUsYy5hbHRlcm5hdGU9YSxhLmFsdGVybmF0ZT1jKTooYy5wZW5kaW5nUHJvcHM9bCxjLnR5cGU9YS50eXBlLGMuZmxhZ3M9MCxjLnN1YnRyZWVGbGFncz0wLGMuZGVsZXRpb25zPW51bGwpLGMuZmxhZ3M9YS5mbGFncyY2NTAxMTcxMixjLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzLGMubGFuZXM9YS5sYW5lcyxjLmNoaWxkPWEuY2hpbGQsYy5tZW1vaXplZFByb3BzPWEubWVtb2l6ZWRQcm9wcyxjLm1lbW9pemVkU3RhdGU9YS5tZW1vaXplZFN0YXRlLGMudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxsPWEuZGVwZW5kZW5jaWVzLGMuZGVwZW5kZW5jaWVzPWw9PT1udWxsP251bGw6e2xhbmVzOmwubGFuZXMsZmlyc3RDb250ZXh0OmwuZmlyc3RDb250ZXh0fSxjLnNpYmxpbmc9YS5zaWJsaW5nLGMuaW5kZXg9YS5pbmRleCxjLnJlZj1hLnJlZixjLnJlZkNsZWFudXA9YS5yZWZDbGVhbnVwLGN9ZnVuY3Rpb24gd0MoYSxsKXthLmZsYWdzJj02NTAxMTcxNDt2YXIgYz1hLmFsdGVybmF0ZTtyZXR1cm4gYz09PW51bGw/KGEuY2hpbGRMYW5lcz0wLGEubGFuZXM9bCxhLmNoaWxkPW51bGwsYS5zdWJ0cmVlRmxhZ3M9MCxhLm1lbW9pemVkUHJvcHM9bnVsbCxhLm1lbW9pemVkU3RhdGU9bnVsbCxhLnVwZGF0ZVF1ZXVlPW51bGwsYS5kZXBlbmRlbmNpZXM9bnVsbCxhLnN0YXRlTm9kZT1udWxsKTooYS5jaGlsZExhbmVzPWMuY2hpbGRMYW5lcyxhLmxhbmVzPWMubGFuZXMsYS5jaGlsZD1jLmNoaWxkLGEuc3VidHJlZUZsYWdzPTAsYS5kZWxldGlvbnM9bnVsbCxhLm1lbW9pemVkUHJvcHM9Yy5tZW1vaXplZFByb3BzLGEubWVtb2l6ZWRTdGF0ZT1jLm1lbW9pemVkU3RhdGUsYS51cGRhdGVRdWV1ZT1jLnVwZGF0ZVF1ZXVlLGEudHlwZT1jLnR5cGUsbD1jLmRlcGVuZGVuY2llcyxhLmRlcGVuZGVuY2llcz1sPT09bnVsbD9udWxsOntsYW5lczpsLmxhbmVzLGZpcnN0Q29udGV4dDpsLmZpcnN0Q29udGV4dH0pLGF9ZnVuY3Rpb24gYWgoYSxsLGMsaCx2LFMpe3ZhciBNPTA7aWYoaD1hLHR5cGVvZiBhPT0iZnVuY3Rpb24iKWxnKGEpJiYoTT0xKTtlbHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIilNPXJIKGEsYyxtZS5jdXJyZW50KT8yNjphPT09Imh0bWwifHxhPT09ImhlYWQifHxhPT09ImJvZHkiPzI3OjU7ZWxzZSBlOnN3aXRjaChhKXtjYXNlIEk6cmV0dXJuIGE9Y3IoMzEsYyxsLHYpLGEuZWxlbWVudFR5cGU9SSxhLmxhbmVzPVMsYTtjYXNlIHc6cmV0dXJuIE5vKGMuY2hpbGRyZW4sdixTLGwpO2Nhc2UgYjpNPTgsdnw9MjQ7YnJlYWs7Y2FzZSBnOnJldHVybiBhPWNyKDEyLGMsbCx2fDIpLGEuZWxlbWVudFR5cGU9ZyxhLmxhbmVzPVMsYTtjYXNlIFQ6cmV0dXJuIGE9Y3IoMTMsYyxsLHYpLGEuZWxlbWVudFR5cGU9VCxhLmxhbmVzPVMsYTtjYXNlIFA6cmV0dXJuIGE9Y3IoMTksYyxsLHYpLGEuZWxlbWVudFR5cGU9UCxhLmxhbmVzPVMsYTtkZWZhdWx0OmlmKHR5cGVvZiBhPT0ib2JqZWN0IiYmYSE9PW51bGwpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgXzpjYXNlIEU6TT0xMDticmVhayBlO2Nhc2UgTzpNPTk7YnJlYWsgZTtjYXNlIGo6TT0xMTticmVhayBlO2Nhc2UgTjpNPTE0O2JyZWFrIGU7Y2FzZSBSOk09MTYsaD1udWxsO2JyZWFrIGV9TT0yOSxjPUVycm9yKHIoMTMwLGE9PT1udWxsPyJudWxsIjp0eXBlb2YgYSwiIikpLGg9bnVsbH1yZXR1cm4gbD1jcihNLGMsbCx2KSxsLmVsZW1lbnRUeXBlPWEsbC50eXBlPWgsbC5sYW5lcz1TLGx9ZnVuY3Rpb24gTm8oYSxsLGMsaCl7cmV0dXJuIGE9Y3IoNyxhLGgsbCksYS5sYW5lcz1jLGF9ZnVuY3Rpb24gdWcoYSxsLGMpe3JldHVybiBhPWNyKDYsYSxudWxsLGwpLGEubGFuZXM9YyxhfWZ1bmN0aW9uIGNnKGEsbCxjKXtyZXR1cm4gbD1jcig0LGEuY2hpbGRyZW4hPT1udWxsP2EuY2hpbGRyZW46W10sYS5rZXksbCksbC5sYW5lcz1jLGwuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmEuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjphLmltcGxlbWVudGF0aW9ufSxsfXZhciBZcz1bXSxYcz0wLG9oPW51bGwsc2g9MCxqcj1bXSxQcj0wLGtvPW51bGwscWk9MSxVaT0iIjtmdW5jdGlvbiBEbyhhLGwpe1lzW1hzKytdPXNoLFlzW1hzKytdPW9oLG9oPWEsc2g9bH1mdW5jdGlvbiBTQyhhLGwsYyl7anJbUHIrK109cWksanJbUHIrK109VWksanJbUHIrK109a28sa289YTt2YXIgaD1xaTthPVVpO3ZhciB2PTMyLVpuKGgpLTE7aCY9figxPDx2KSxjKz0xO3ZhciBTPTMyLVpuKGwpK3Y7aWYoMzA8Uyl7dmFyIE09di12JTU7Uz0oaCYoMTw8TSktMSkudG9TdHJpbmcoMzIpLGg+Pj1NLHYtPU0scWk9MTw8MzItWm4obCkrdnxjPDx2fGgsVWk9UythfWVsc2UgcWk9MTw8U3xjPDx2fGgsVWk9YX1mdW5jdGlvbiBmZyhhKXthLnJldHVybiE9PW51bGwmJihEbyhhLDEpLFNDKGEsMSwwKSl9ZnVuY3Rpb24gZGcoYSl7Zm9yKDthPT09b2g7KW9oPVlzWy0tWHNdLFlzW1hzXT1udWxsLHNoPVlzWy0tWHNdLFlzW1hzXT1udWxsO2Zvcig7YT09PWtvOylrbz1qclstLVByXSxqcltQcl09bnVsbCxVaT1qclstLVByXSxqcltQcl09bnVsbCxxaT1qclstLVByXSxqcltQcl09bnVsbH12YXIgem49bnVsbCxGdD1udWxsLHB0PSExLExvPW51bGwsZmk9ITEsaGc9RXJyb3Iocig1MTkpKTtmdW5jdGlvbiBJbyhhKXt2YXIgbD1FcnJvcihyKDQxOCwiIikpO3Rocm93IGxjKEVyKGwsYSkpLGhnfWZ1bmN0aW9uIEFDKGEpe3ZhciBsPWEuc3RhdGVOb2RlLGM9YS50eXBlLGg9YS5tZW1vaXplZFByb3BzO3N3aXRjaChsW0xuXT1hLGxbUW5dPWgsYyl7Y2FzZSJkaWFsb2ciOml0KCJjYW5jZWwiLGwpLGl0KCJjbG9zZSIsbCk7YnJlYWs7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjpjYXNlImVtYmVkIjppdCgibG9hZCIsbCk7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKGM9MDtjPFJjLmxlbmd0aDtjKyspaXQoUmNbY10sbCk7YnJlYWs7Y2FzZSJzb3VyY2UiOml0KCJlcnJvciIsbCk7YnJlYWs7Y2FzZSJpbWciOmNhc2UiaW1hZ2UiOmNhc2UibGluayI6aXQoImVycm9yIixsKSxpdCgibG9hZCIsbCk7YnJlYWs7Y2FzZSJkZXRhaWxzIjppdCgidG9nZ2xlIixsKTticmVhaztjYXNlImlucHV0IjppdCgiaW52YWxpZCIsbCksJEUobCxoLnZhbHVlLGguZGVmYXVsdFZhbHVlLGguY2hlY2tlZCxoLmRlZmF1bHRDaGVja2VkLGgudHlwZSxoLm5hbWUsITApLEtkKGwpO2JyZWFrO2Nhc2Uic2VsZWN0IjppdCgiaW52YWxpZCIsbCk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aXQoImludmFsaWQiLGwpLFZFKGwsaC52YWx1ZSxoLmRlZmF1bHRWYWx1ZSxoLmNoaWxkcmVuKSxLZChsKX1jPWguY2hpbGRyZW4sdHlwZW9mIGMhPSJzdHJpbmciJiZ0eXBlb2YgYyE9Im51bWJlciImJnR5cGVvZiBjIT0iYmlnaW50Inx8bC50ZXh0Q29udGVudD09PSIiK2N8fGguc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nPT09ITB8fFZQKGwudGV4dENvbnRlbnQsYyk/KGgucG9wb3ZlciE9bnVsbCYmKGl0KCJiZWZvcmV0b2dnbGUiLGwpLGl0KCJ0b2dnbGUiLGwpKSxoLm9uU2Nyb2xsIT1udWxsJiZpdCgic2Nyb2xsIixsKSxoLm9uU2Nyb2xsRW5kIT1udWxsJiZpdCgic2Nyb2xsZW5kIixsKSxoLm9uQ2xpY2shPW51bGwmJihsLm9uY2xpY2s9cWgpLGw9ITApOmw9ITEsbHx8SW8oYSl9ZnVuY3Rpb24gX0MoYSl7Zm9yKHpuPWEucmV0dXJuO3puOylzd2l0Y2goem4udGFnKXtjYXNlIDU6Y2FzZSAxMzpmaT0hMTtyZXR1cm47Y2FzZSAyNzpjYXNlIDM6Zmk9ITA7cmV0dXJuO2RlZmF1bHQ6em49em4ucmV0dXJufX1mdW5jdGlvbiBvYyhhKXtpZihhIT09em4pcmV0dXJuITE7aWYoIXB0KXJldHVybiBfQyhhKSxwdD0hMCwhMTt2YXIgbD1hLnRhZyxjO2lmKChjPWwhPT0zJiZsIT09MjcpJiYoKGM9bD09PTUpJiYoYz1hLnR5cGUsYz0hKGMhPT0iZm9ybSImJmMhPT0iYnV0dG9uIil8fGpiKGEudHlwZSxhLm1lbW9pemVkUHJvcHMpKSxjPSFjKSxjJiZGdCYmSW8oYSksX0MoYSksbD09PTEzKXtpZihhPWEubWVtb2l6ZWRTdGF0ZSxhPWEhPT1udWxsP2EuZGVoeWRyYXRlZDpudWxsLCFhKXRocm93IEVycm9yKHIoMzE3KSk7ZTp7Zm9yKGE9YS5uZXh0U2libGluZyxsPTA7YTspe2lmKGEubm9kZVR5cGU9PT04KWlmKGM9YS5kYXRhLGM9PT0iLyQiKXtpZihsPT09MCl7RnQ9WHIoYS5uZXh0U2libGluZyk7YnJlYWsgZX1sLS19ZWxzZSBjIT09IiQiJiZjIT09IiQhIiYmYyE9PSIkPyJ8fGwrKzthPWEubmV4dFNpYmxpbmd9RnQ9bnVsbH19ZWxzZSBsPT09Mjc/KGw9RnQscWEoYS50eXBlKT8oYT1OYixOYj1udWxsLEZ0PWEpOkZ0PWwpOkZ0PXpuP1hyKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIHNjKCl7RnQ9em49bnVsbCxwdD0hMX1mdW5jdGlvbiBPQygpe3ZhciBhPUxvO3JldHVybiBhIT09bnVsbCYmKG5yPT09bnVsbD9ucj1hOm5yLnB1c2guYXBwbHkobnIsYSksTG89bnVsbCksYX1mdW5jdGlvbiBsYyhhKXtMbz09PW51bGw/TG89W2FdOkxvLnB1c2goYSl9dmFyIHBnPVoobnVsbCksJG89bnVsbCx6aT1udWxsO2Z1bmN0aW9uIFRhKGEsbCxjKXtvZShwZyxsLl9jdXJyZW50VmFsdWUpLGwuX2N1cnJlbnRWYWx1ZT1jfWZ1bmN0aW9uIEZpKGEpe2EuX2N1cnJlbnRWYWx1ZT1wZy5jdXJyZW50LHRlKHBnKX1mdW5jdGlvbiBtZyhhLGwsYyl7Zm9yKDthIT09bnVsbDspe3ZhciBoPWEuYWx0ZXJuYXRlO2lmKChhLmNoaWxkTGFuZXMmbCkhPT1sPyhhLmNoaWxkTGFuZXN8PWwsaCE9PW51bGwmJihoLmNoaWxkTGFuZXN8PWwpKTpoIT09bnVsbCYmKGguY2hpbGRMYW5lcyZsKSE9PWwmJihoLmNoaWxkTGFuZXN8PWwpLGE9PT1jKWJyZWFrO2E9YS5yZXR1cm59fWZ1bmN0aW9uIHlnKGEsbCxjLGgpe3ZhciB2PWEuY2hpbGQ7Zm9yKHYhPT1udWxsJiYodi5yZXR1cm49YSk7diE9PW51bGw7KXt2YXIgUz12LmRlcGVuZGVuY2llcztpZihTIT09bnVsbCl7dmFyIE09di5jaGlsZDtTPVMuZmlyc3RDb250ZXh0O2U6Zm9yKDtTIT09bnVsbDspe3ZhciBEPVM7Uz12O2Zvcih2YXIgRz0wO0c8bC5sZW5ndGg7RysrKWlmKEQuY29udGV4dD09PWxbR10pe1MubGFuZXN8PWMsRD1TLmFsdGVybmF0ZSxEIT09bnVsbCYmKEQubGFuZXN8PWMpLG1nKFMucmV0dXJuLGMsYSksaHx8KE09bnVsbCk7YnJlYWsgZX1TPUQubmV4dH19ZWxzZSBpZih2LnRhZz09PTE4KXtpZihNPXYucmV0dXJuLE09PT1udWxsKXRocm93IEVycm9yKHIoMzQxKSk7TS5sYW5lc3w9YyxTPU0uYWx0ZXJuYXRlLFMhPT1udWxsJiYoUy5sYW5lc3w9YyksbWcoTSxjLGEpLE09bnVsbH1lbHNlIE09di5jaGlsZDtpZihNIT09bnVsbClNLnJldHVybj12O2Vsc2UgZm9yKE09djtNIT09bnVsbDspe2lmKE09PT1hKXtNPW51bGw7YnJlYWt9aWYodj1NLnNpYmxpbmcsdiE9PW51bGwpe3YucmV0dXJuPU0ucmV0dXJuLE09djticmVha31NPU0ucmV0dXJufXY9TX19ZnVuY3Rpb24gdWMoYSxsLGMsaCl7YT1udWxsO2Zvcih2YXIgdj1sLFM9ITE7diE9PW51bGw7KXtpZighUyl7aWYoKHYuZmxhZ3MmNTI0Mjg4KSE9PTApUz0hMDtlbHNlIGlmKCh2LmZsYWdzJjI2MjE0NCkhPT0wKWJyZWFrfWlmKHYudGFnPT09MTApe3ZhciBNPXYuYWx0ZXJuYXRlO2lmKE09PT1udWxsKXRocm93IEVycm9yKHIoMzg3KSk7aWYoTT1NLm1lbW9pemVkUHJvcHMsTSE9PW51bGwpe3ZhciBEPXYudHlwZTt1cih2LnBlbmRpbmdQcm9wcy52YWx1ZSxNLnZhbHVlKXx8KGEhPT1udWxsP2EucHVzaChEKTphPVtEXSl9fWVsc2UgaWYodj09PV9lLmN1cnJlbnQpe2lmKE09di5hbHRlcm5hdGUsTT09PW51bGwpdGhyb3cgRXJyb3IocigzODcpKTtNLm1lbW9pemVkU3RhdGUubWVtb2l6ZWRTdGF0ZSE9PXYubWVtb2l6ZWRTdGF0ZS5tZW1vaXplZFN0YXRlJiYoYSE9PW51bGw/YS5wdXNoKCRjKTphPVskY10pfXY9di5yZXR1cm59YSE9PW51bGwmJnlnKGwsYSxjLGgpLGwuZmxhZ3N8PTI2MjE0NH1mdW5jdGlvbiBsaChhKXtmb3IoYT1hLmZpcnN0Q29udGV4dDthIT09bnVsbDspe2lmKCF1cihhLmNvbnRleHQuX2N1cnJlbnRWYWx1ZSxhLm1lbW9pemVkVmFsdWUpKXJldHVybiEwO2E9YS5uZXh0fXJldHVybiExfWZ1bmN0aW9uIEJvKGEpeyRvPWEsemk9bnVsbCxhPWEuZGVwZW5kZW5jaWVzLGEhPT1udWxsJiYoYS5maXJzdENvbnRleHQ9bnVsbCl9ZnVuY3Rpb24gSW4oYSl7cmV0dXJuIFRDKCRvLGEpfWZ1bmN0aW9uIHVoKGEsbCl7cmV0dXJuICRvPT09bnVsbCYmQm8oYSksVEMoYSxsKX1mdW5jdGlvbiBUQyhhLGwpe3ZhciBjPWwuX2N1cnJlbnRWYWx1ZTtpZihsPXtjb250ZXh0OmwsbWVtb2l6ZWRWYWx1ZTpjLG5leHQ6bnVsbH0semk9PT1udWxsKXtpZihhPT09bnVsbCl0aHJvdyBFcnJvcihyKDMwOCkpO3ppPWwsYS5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0Omx9LGEuZmxhZ3N8PTUyNDI4OH1lbHNlIHppPXppLm5leHQ9bDtyZXR1cm4gY312YXIgbjk9dHlwZW9mIEFib3J0Q29udHJvbGxlcjwidSI/QWJvcnRDb250cm9sbGVyOmZ1bmN0aW9uKCl7dmFyIGE9W10sbD10aGlzLnNpZ25hbD17YWJvcnRlZDohMSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGMsaCl7YS5wdXNoKGgpfX07dGhpcy5hYm9ydD1mdW5jdGlvbigpe2wuYWJvcnRlZD0hMCxhLmZvckVhY2goZnVuY3Rpb24oYyl7cmV0dXJuIGMoKX0pfX0scjk9ZS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGk5PWUudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksdW49eyQkdHlwZW9mOkUsQ29uc3VtZXI6bnVsbCxQcm92aWRlcjpudWxsLF9jdXJyZW50VmFsdWU6bnVsbCxfY3VycmVudFZhbHVlMjpudWxsLF90aHJlYWRDb3VudDowfTtmdW5jdGlvbiB2Zygpe3JldHVybntjb250cm9sbGVyOm5ldyBuOSxkYXRhOm5ldyBNYXAscmVmQ291bnQ6MH19ZnVuY3Rpb24gY2MoYSl7YS5yZWZDb3VudC0tLGEucmVmQ291bnQ9PT0wJiZyOShpOSxmdW5jdGlvbigpe2EuY29udHJvbGxlci5hYm9ydCgpfSl9dmFyIGZjPW51bGwsZ2c9MCxacz0wLFFzPW51bGw7ZnVuY3Rpb24gYTkoYSxsKXtpZihmYz09PW51bGwpe3ZhciBjPWZjPVtdO2dnPTAsWnM9eGIoKSxRcz17c3RhdHVzOiJwZW5kaW5nIix2YWx1ZTp2b2lkIDAsdGhlbjpmdW5jdGlvbihoKXtjLnB1c2goaCl9fX1yZXR1cm4gZ2crKyxsLnRoZW4oRUMsRUMpLGx9ZnVuY3Rpb24gRUMoKXtpZigtLWdnPT09MCYmZmMhPT1udWxsKXtRcyE9PW51bGwmJihRcy5zdGF0dXM9ImZ1bGZpbGxlZCIpO3ZhciBhPWZjO2ZjPW51bGwsWnM9MCxRcz1udWxsO2Zvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsrKSgwLGFbbF0pKCl9fWZ1bmN0aW9uIG85KGEsbCl7dmFyIGM9W10saD17c3RhdHVzOiJwZW5kaW5nIix2YWx1ZTpudWxsLHJlYXNvbjpudWxsLHRoZW46ZnVuY3Rpb24odil7Yy5wdXNoKHYpfX07cmV0dXJuIGEudGhlbihmdW5jdGlvbigpe2guc3RhdHVzPSJmdWxmaWxsZWQiLGgudmFsdWU9bDtmb3IodmFyIHY9MDt2PGMubGVuZ3RoO3YrKykoMCxjW3ZdKShsKX0sZnVuY3Rpb24odil7Zm9yKGguc3RhdHVzPSJyZWplY3RlZCIsaC5yZWFzb249dix2PTA7djxjLmxlbmd0aDt2KyspKDAsY1t2XSkodm9pZCAwKX0pLGh9dmFyIENDPUwuUztMLlM9ZnVuY3Rpb24oYSxsKXt0eXBlb2YgbD09Im9iamVjdCImJmwhPT1udWxsJiZ0eXBlb2YgbC50aGVuPT0iZnVuY3Rpb24iJiZhOShhLGwpLENDIT09bnVsbCYmQ0MoYSxsKX07dmFyIFZvPVoobnVsbCk7ZnVuY3Rpb24gYmcoKXt2YXIgYT1Wby5jdXJyZW50O3JldHVybiBhIT09bnVsbD9hOlJ0LnBvb2xlZENhY2hlfWZ1bmN0aW9uIGNoKGEsbCl7bD09PW51bGw/b2UoVm8sVm8uY3VycmVudCk6b2UoVm8sbC5wb29sKX1mdW5jdGlvbiBqQygpe3ZhciBhPWJnKCk7cmV0dXJuIGE9PT1udWxsP251bGw6e3BhcmVudDp1bi5fY3VycmVudFZhbHVlLHBvb2w6YX19dmFyIGRjPUVycm9yKHIoNDYwKSksUEM9RXJyb3Iocig0NzQpKSxmaD1FcnJvcihyKDU0MikpLHhnPXt0aGVuOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gTUMoYSl7cmV0dXJuIGE9YS5zdGF0dXMsYT09PSJmdWxmaWxsZWQifHxhPT09InJlamVjdGVkIn1mdW5jdGlvbiBkaCgpe31mdW5jdGlvbiBSQyhhLGwsYyl7c3dpdGNoKGM9YVtjXSxjPT09dm9pZCAwP2EucHVzaChsKTpjIT09bCYmKGwudGhlbihkaCxkaCksbD1jKSxsLnN0YXR1cyl7Y2FzZSJmdWxmaWxsZWQiOnJldHVybiBsLnZhbHVlO2Nhc2UicmVqZWN0ZWQiOnRocm93IGE9bC5yZWFzb24sa0MoYSksYTtkZWZhdWx0OmlmKHR5cGVvZiBsLnN0YXR1cz09InN0cmluZyIpbC50aGVuKGRoLGRoKTtlbHNle2lmKGE9UnQsYSE9PW51bGwmJjEwMDxhLnNoZWxsU3VzcGVuZENvdW50ZXIpdGhyb3cgRXJyb3Iocig0ODIpKTthPWwsYS5zdGF0dXM9InBlbmRpbmciLGEudGhlbihmdW5jdGlvbihoKXtpZihsLnN0YXR1cz09PSJwZW5kaW5nIil7dmFyIHY9bDt2LnN0YXR1cz0iZnVsZmlsbGVkIix2LnZhbHVlPWh9fSxmdW5jdGlvbihoKXtpZihsLnN0YXR1cz09PSJwZW5kaW5nIil7dmFyIHY9bDt2LnN0YXR1cz0icmVqZWN0ZWQiLHYucmVhc29uPWh9fSl9c3dpdGNoKGwuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIGwudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgYT1sLnJlYXNvbixrQyhhKSxhfXRocm93IGhjPWwsZGN9fXZhciBoYz1udWxsO2Z1bmN0aW9uIE5DKCl7aWYoaGM9PT1udWxsKXRocm93IEVycm9yKHIoNDU5KSk7dmFyIGE9aGM7cmV0dXJuIGhjPW51bGwsYX1mdW5jdGlvbiBrQyhhKXtpZihhPT09ZGN8fGE9PT1maCl0aHJvdyBFcnJvcihyKDQ4MykpfXZhciBFYT0hMTtmdW5jdGlvbiB3ZyhhKXthLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsbGFuZXM6MCxoaWRkZW5DYWxsYmFja3M6bnVsbH0sY2FsbGJhY2tzOm51bGx9fWZ1bmN0aW9uIFNnKGEsbCl7YT1hLnVwZGF0ZVF1ZXVlLGwudXBkYXRlUXVldWU9PT1hJiYobC51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTphLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTphLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDphLnNoYXJlZCxjYWxsYmFja3M6bnVsbH0pfWZ1bmN0aW9uIENhKGEpe3JldHVybntsYW5lOmEsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1mdW5jdGlvbiBqYShhLGwsYyl7dmFyIGg9YS51cGRhdGVRdWV1ZTtpZihoPT09bnVsbClyZXR1cm4gbnVsbDtpZihoPWguc2hhcmVkLCh2dCYyKSE9PTApe3ZhciB2PWgucGVuZGluZztyZXR1cm4gdj09PW51bGw/bC5uZXh0PWw6KGwubmV4dD12Lm5leHQsdi5uZXh0PWwpLGgucGVuZGluZz1sLGw9aWgoYSkseEMoYSxudWxsLGMpLGx9cmV0dXJuIHJoKGEsaCxsLGMpLGloKGEpfWZ1bmN0aW9uIHBjKGEsbCxjKXtpZihsPWwudXBkYXRlUXVldWUsbCE9PW51bGwmJihsPWwuc2hhcmVkLChjJjQxOTQwNDgpIT09MCkpe3ZhciBoPWwubGFuZXM7aCY9YS5wZW5kaW5nTGFuZXMsY3w9aCxsLmxhbmVzPWMsRmQoYSxjKX19ZnVuY3Rpb24gQWcoYSxsKXt2YXIgYz1hLnVwZGF0ZVF1ZXVlLGg9YS5hbHRlcm5hdGU7aWYoaCE9PW51bGwmJihoPWgudXBkYXRlUXVldWUsYz09PWgpKXt2YXIgdj1udWxsLFM9bnVsbDtpZihjPWMuZmlyc3RCYXNlVXBkYXRlLGMhPT1udWxsKXtkb3t2YXIgTT17bGFuZTpjLmxhbmUsdGFnOmMudGFnLHBheWxvYWQ6Yy5wYXlsb2FkLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfTtTPT09bnVsbD92PVM9TTpTPVMubmV4dD1NLGM9Yy5uZXh0fXdoaWxlKGMhPT1udWxsKTtTPT09bnVsbD92PVM9bDpTPVMubmV4dD1sfWVsc2Ugdj1TPWw7Yz17YmFzZVN0YXRlOmguYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTp2LGxhc3RCYXNlVXBkYXRlOlMsc2hhcmVkOmguc2hhcmVkLGNhbGxiYWNrczpoLmNhbGxiYWNrc30sYS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGUsYT09PW51bGw/Yy5maXJzdEJhc2VVcGRhdGU9bDphLm5leHQ9bCxjLmxhc3RCYXNlVXBkYXRlPWx9dmFyIF9nPSExO2Z1bmN0aW9uIG1jKCl7aWYoX2cpe3ZhciBhPVFzO2lmKGEhPT1udWxsKXRocm93IGF9fWZ1bmN0aW9uIHljKGEsbCxjLGgpe19nPSExO3ZhciB2PWEudXBkYXRlUXVldWU7RWE9ITE7dmFyIFM9di5maXJzdEJhc2VVcGRhdGUsTT12Lmxhc3RCYXNlVXBkYXRlLEQ9di5zaGFyZWQucGVuZGluZztpZihEIT09bnVsbCl7di5zaGFyZWQucGVuZGluZz1udWxsO3ZhciBHPUQscmU9Ry5uZXh0O0cubmV4dD1udWxsLE09PT1udWxsP1M9cmU6TS5uZXh0PXJlLE09Rzt2YXIgdWU9YS5hbHRlcm5hdGU7dWUhPT1udWxsJiYodWU9dWUudXBkYXRlUXVldWUsRD11ZS5sYXN0QmFzZVVwZGF0ZSxEIT09TSYmKEQ9PT1udWxsP3VlLmZpcnN0QmFzZVVwZGF0ZT1yZTpELm5leHQ9cmUsdWUubGFzdEJhc2VVcGRhdGU9RykpfWlmKFMhPT1udWxsKXt2YXIgZGU9di5iYXNlU3RhdGU7TT0wLHVlPXJlPUc9bnVsbCxEPVM7ZG97dmFyIGllPUQubGFuZSYtNTM2ODcwOTEzLGFlPWllIT09RC5sYW5lO2lmKGFlPyhzdCZpZSk9PT1pZTooaCZpZSk9PT1pZSl7aWUhPT0wJiZpZT09PVpzJiYoX2c9ITApLHVlIT09bnVsbCYmKHVlPXVlLm5leHQ9e2xhbmU6MCx0YWc6RC50YWcscGF5bG9hZDpELnBheWxvYWQsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9KTtlOnt2YXIgRmU9YSxWZT1EO2llPWw7dmFyIFN0PWM7c3dpdGNoKFZlLnRhZyl7Y2FzZSAxOmlmKEZlPVZlLnBheWxvYWQsdHlwZW9mIEZlPT0iZnVuY3Rpb24iKXtkZT1GZS5jYWxsKFN0LGRlLGllKTticmVhayBlfWRlPUZlO2JyZWFrIGU7Y2FzZSAzOkZlLmZsYWdzPUZlLmZsYWdzJi02NTUzN3wxMjg7Y2FzZSAwOmlmKEZlPVZlLnBheWxvYWQsaWU9dHlwZW9mIEZlPT0iZnVuY3Rpb24iP0ZlLmNhbGwoU3QsZGUsaWUpOkZlLGllPT1udWxsKWJyZWFrIGU7ZGU9cCh7fSxkZSxpZSk7YnJlYWsgZTtjYXNlIDI6RWE9ITB9fWllPUQuY2FsbGJhY2ssaWUhPT1udWxsJiYoYS5mbGFnc3w9NjQsYWUmJihhLmZsYWdzfD04MTkyKSxhZT12LmNhbGxiYWNrcyxhZT09PW51bGw/di5jYWxsYmFja3M9W2llXTphZS5wdXNoKGllKSl9ZWxzZSBhZT17bGFuZTppZSx0YWc6RC50YWcscGF5bG9hZDpELnBheWxvYWQsY2FsbGJhY2s6RC5jYWxsYmFjayxuZXh0Om51bGx9LHVlPT09bnVsbD8ocmU9dWU9YWUsRz1kZSk6dWU9dWUubmV4dD1hZSxNfD1pZTtpZihEPUQubmV4dCxEPT09bnVsbCl7aWYoRD12LnNoYXJlZC5wZW5kaW5nLEQ9PT1udWxsKWJyZWFrO2FlPUQsRD1hZS5uZXh0LGFlLm5leHQ9bnVsbCx2Lmxhc3RCYXNlVXBkYXRlPWFlLHYuc2hhcmVkLnBlbmRpbmc9bnVsbH19d2hpbGUoITApO3VlPT09bnVsbCYmKEc9ZGUpLHYuYmFzZVN0YXRlPUcsdi5maXJzdEJhc2VVcGRhdGU9cmUsdi5sYXN0QmFzZVVwZGF0ZT11ZSxTPT09bnVsbCYmKHYuc2hhcmVkLmxhbmVzPTApLElhfD1NLGEubGFuZXM9TSxhLm1lbW9pemVkU3RhdGU9ZGV9fWZ1bmN0aW9uIERDKGEsbCl7aWYodHlwZW9mIGEhPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IocigxOTEsYSkpO2EuY2FsbChsKX1mdW5jdGlvbiBMQyhhLGwpe3ZhciBjPWEuY2FsbGJhY2tzO2lmKGMhPT1udWxsKWZvcihhLmNhbGxiYWNrcz1udWxsLGE9MDthPGMubGVuZ3RoO2ErKylEQyhjW2FdLGwpfXZhciBKcz1aKG51bGwpLGhoPVooMCk7ZnVuY3Rpb24gSUMoYSxsKXthPVppLG9lKGhoLGEpLG9lKEpzLGwpLFppPWF8bC5iYXNlTGFuZXN9ZnVuY3Rpb24gT2coKXtvZShoaCxaaSksb2UoSnMsSnMuY3VycmVudCl9ZnVuY3Rpb24gVGcoKXtaaT1oaC5jdXJyZW50LHRlKEpzKSx0ZShoaCl9dmFyIFBhPTAsSmU9bnVsbCx4dD1udWxsLHRuPW51bGwscGg9ITEsZWw9ITEscW89ITEsbWg9MCx2Yz0wLHRsPW51bGwsczk9MDtmdW5jdGlvbiBZdCgpe3Rocm93IEVycm9yKHIoMzIxKSl9ZnVuY3Rpb24gRWcoYSxsKXtpZihsPT09bnVsbClyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGwubGVuZ3RoJiZjPGEubGVuZ3RoO2MrKylpZighdXIoYVtjXSxsW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBDZyhhLGwsYyxoLHYsUyl7cmV0dXJuIFBhPVMsSmU9bCxsLm1lbW9pemVkU3RhdGU9bnVsbCxsLnVwZGF0ZVF1ZXVlPW51bGwsbC5sYW5lcz0wLEwuSD1hPT09bnVsbHx8YS5tZW1vaXplZFN0YXRlPT09bnVsbD94ajp3aixxbz0hMSxTPWMoaCx2KSxxbz0hMSxlbCYmKFM9QkMobCxjLGgsdikpLCRDKGEpLFN9ZnVuY3Rpb24gJEMoYSl7TC5IPXdoO3ZhciBsPXh0IT09bnVsbCYmeHQubmV4dCE9PW51bGw7aWYoUGE9MCx0bj14dD1KZT1udWxsLHBoPSExLHZjPTAsdGw9bnVsbCxsKXRocm93IEVycm9yKHIoMzAwKSk7YT09PW51bGx8fHdufHwoYT1hLmRlcGVuZGVuY2llcyxhIT09bnVsbCYmbGgoYSkmJih3bj0hMCkpfWZ1bmN0aW9uIEJDKGEsbCxjLGgpe0plPWE7dmFyIHY9MDtkb3tpZihlbCYmKHRsPW51bGwpLHZjPTAsZWw9ITEsMjU8PXYpdGhyb3cgRXJyb3IocigzMDEpKTtpZih2Kz0xLHRuPXh0PW51bGwsYS51cGRhdGVRdWV1ZSE9bnVsbCl7dmFyIFM9YS51cGRhdGVRdWV1ZTtTLmxhc3RFZmZlY3Q9bnVsbCxTLmV2ZW50cz1udWxsLFMuc3RvcmVzPW51bGwsUy5tZW1vQ2FjaGUhPW51bGwmJihTLm1lbW9DYWNoZS5pbmRleD0wKX1MLkg9cDksUz1sKGMsaCl9d2hpbGUoZWwpO3JldHVybiBTfWZ1bmN0aW9uIGw5KCl7dmFyIGE9TC5ILGw9YS51c2VTdGF0ZSgpWzBdO3JldHVybiBsPXR5cGVvZiBsLnRoZW49PSJmdW5jdGlvbiI/Z2MobCk6bCxhPWEudXNlU3RhdGUoKVswXSwoeHQhPT1udWxsP3h0Lm1lbW9pemVkU3RhdGU6bnVsbCkhPT1hJiYoSmUuZmxhZ3N8PTEwMjQpLGx9ZnVuY3Rpb24gamcoKXt2YXIgYT1taCE9PTA7cmV0dXJuIG1oPTAsYX1mdW5jdGlvbiBQZyhhLGwsYyl7bC51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGwuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5jfWZ1bmN0aW9uIE1nKGEpe2lmKHBoKXtmb3IoYT1hLm1lbW9pemVkU3RhdGU7YSE9PW51bGw7KXt2YXIgbD1hLnF1ZXVlO2whPT1udWxsJiYobC5wZW5kaW5nPW51bGwpLGE9YS5uZXh0fXBoPSExfVBhPTAsdG49eHQ9SmU9bnVsbCxlbD0hMSx2Yz1taD0wLHRsPW51bGx9ZnVuY3Rpb24gZXIoKXt2YXIgYT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtyZXR1cm4gdG49PT1udWxsP0plLm1lbW9pemVkU3RhdGU9dG49YTp0bj10bi5uZXh0PWEsdG59ZnVuY3Rpb24gbm4oKXtpZih4dD09PW51bGwpe3ZhciBhPUplLmFsdGVybmF0ZTthPWEhPT1udWxsP2EubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgYT14dC5uZXh0O3ZhciBsPXRuPT09bnVsbD9KZS5tZW1vaXplZFN0YXRlOnRuLm5leHQ7aWYobCE9PW51bGwpdG49bCx4dD1hO2Vsc2V7aWYoYT09PW51bGwpdGhyb3cgSmUuYWx0ZXJuYXRlPT09bnVsbD9FcnJvcihyKDQ2NykpOkVycm9yKHIoMzEwKSk7eHQ9YSxhPXttZW1vaXplZFN0YXRlOnh0Lm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOnh0LmJhc2VTdGF0ZSxiYXNlUXVldWU6eHQuYmFzZVF1ZXVlLHF1ZXVlOnh0LnF1ZXVlLG5leHQ6bnVsbH0sdG49PT1udWxsP0plLm1lbW9pemVkU3RhdGU9dG49YTp0bj10bi5uZXh0PWF9cmV0dXJuIHRufWZ1bmN0aW9uIFJnKCl7cmV0dXJue2xhc3RFZmZlY3Q6bnVsbCxldmVudHM6bnVsbCxzdG9yZXM6bnVsbCxtZW1vQ2FjaGU6bnVsbH19ZnVuY3Rpb24gZ2MoYSl7dmFyIGw9dmM7cmV0dXJuIHZjKz0xLHRsPT09bnVsbCYmKHRsPVtdKSxhPVJDKHRsLGEsbCksbD1KZSwodG49PT1udWxsP2wubWVtb2l6ZWRTdGF0ZTp0bi5uZXh0KT09PW51bGwmJihsPWwuYWx0ZXJuYXRlLEwuSD1sPT09bnVsbHx8bC5tZW1vaXplZFN0YXRlPT09bnVsbD94ajp3aiksYX1mdW5jdGlvbiB5aChhKXtpZihhIT09bnVsbCYmdHlwZW9mIGE9PSJvYmplY3QiKXtpZih0eXBlb2YgYS50aGVuPT0iZnVuY3Rpb24iKXJldHVybiBnYyhhKTtpZihhLiQkdHlwZW9mPT09RSlyZXR1cm4gSW4oYSl9dGhyb3cgRXJyb3Iocig0MzgsU3RyaW5nKGEpKSl9ZnVuY3Rpb24gTmcoYSl7dmFyIGw9bnVsbCxjPUplLnVwZGF0ZVF1ZXVlO2lmKGMhPT1udWxsJiYobD1jLm1lbW9DYWNoZSksbD09bnVsbCl7dmFyIGg9SmUuYWx0ZXJuYXRlO2ghPT1udWxsJiYoaD1oLnVwZGF0ZVF1ZXVlLGghPT1udWxsJiYoaD1oLm1lbW9DYWNoZSxoIT1udWxsJiYobD17ZGF0YTpoLmRhdGEubWFwKGZ1bmN0aW9uKHYpe3JldHVybiB2LnNsaWNlKCl9KSxpbmRleDowfSkpKX1pZihsPT1udWxsJiYobD17ZGF0YTpbXSxpbmRleDowfSksYz09PW51bGwmJihjPVJnKCksSmUudXBkYXRlUXVldWU9YyksYy5tZW1vQ2FjaGU9bCxjPWwuZGF0YVtsLmluZGV4XSxjPT09dm9pZCAwKWZvcihjPWwuZGF0YVtsLmluZGV4XT1BcnJheShhKSxoPTA7aDxhO2grKyljW2hdPVY7cmV0dXJuIGwuaW5kZXgrKyxjfWZ1bmN0aW9uIEhpKGEsbCl7cmV0dXJuIHR5cGVvZiBsPT0iZnVuY3Rpb24iP2woYSk6bH1mdW5jdGlvbiB2aChhKXt2YXIgbD1ubigpO3JldHVybiBrZyhsLHh0LGEpfWZ1bmN0aW9uIGtnKGEsbCxjKXt2YXIgaD1hLnF1ZXVlO2lmKGg9PT1udWxsKXRocm93IEVycm9yKHIoMzExKSk7aC5sYXN0UmVuZGVyZWRSZWR1Y2VyPWM7dmFyIHY9YS5iYXNlUXVldWUsUz1oLnBlbmRpbmc7aWYoUyE9PW51bGwpe2lmKHYhPT1udWxsKXt2YXIgTT12Lm5leHQ7di5uZXh0PVMubmV4dCxTLm5leHQ9TX1sLmJhc2VRdWV1ZT12PVMsaC5wZW5kaW5nPW51bGx9aWYoUz1hLmJhc2VTdGF0ZSx2PT09bnVsbClhLm1lbW9pemVkU3RhdGU9UztlbHNle2w9di5uZXh0O3ZhciBEPU09bnVsbCxHPW51bGwscmU9bCx1ZT0hMTtkb3t2YXIgZGU9cmUubGFuZSYtNTM2ODcwOTEzO2lmKGRlIT09cmUubGFuZT8oc3QmZGUpPT09ZGU6KFBhJmRlKT09PWRlKXt2YXIgaWU9cmUucmV2ZXJ0TGFuZTtpZihpZT09PTApRyE9PW51bGwmJihHPUcubmV4dD17bGFuZTowLHJldmVydExhbmU6MCxhY3Rpb246cmUuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6cmUuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOnJlLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZGU9PT1acyYmKHVlPSEwKTtlbHNlIGlmKChQYSZpZSk9PT1pZSl7cmU9cmUubmV4dCxpZT09PVpzJiYodWU9ITApO2NvbnRpbnVlfWVsc2UgZGU9e2xhbmU6MCxyZXZlcnRMYW5lOnJlLnJldmVydExhbmUsYWN0aW9uOnJlLmFjdGlvbixoYXNFYWdlclN0YXRlOnJlLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpyZS5lYWdlclN0YXRlLG5leHQ6bnVsbH0sRz09PW51bGw/KEQ9Rz1kZSxNPVMpOkc9Ry5uZXh0PWRlLEplLmxhbmVzfD1pZSxJYXw9aWU7ZGU9cmUuYWN0aW9uLHFvJiZjKFMsZGUpLFM9cmUuaGFzRWFnZXJTdGF0ZT9yZS5lYWdlclN0YXRlOmMoUyxkZSl9ZWxzZSBpZT17bGFuZTpkZSxyZXZlcnRMYW5lOnJlLnJldmVydExhbmUsYWN0aW9uOnJlLmFjdGlvbixoYXNFYWdlclN0YXRlOnJlLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpyZS5lYWdlclN0YXRlLG5leHQ6bnVsbH0sRz09PW51bGw/KEQ9Rz1pZSxNPVMpOkc9Ry5uZXh0PWllLEplLmxhbmVzfD1kZSxJYXw9ZGU7cmU9cmUubmV4dH13aGlsZShyZSE9PW51bGwmJnJlIT09bCk7aWYoRz09PW51bGw/TT1TOkcubmV4dD1ELCF1cihTLGEubWVtb2l6ZWRTdGF0ZSkmJih3bj0hMCx1ZSYmKGM9UXMsYyE9PW51bGwpKSl0aHJvdyBjO2EubWVtb2l6ZWRTdGF0ZT1TLGEuYmFzZVN0YXRlPU0sYS5iYXNlUXVldWU9RyxoLmxhc3RSZW5kZXJlZFN0YXRlPVN9cmV0dXJuIHY9PT1udWxsJiYoaC5sYW5lcz0wKSxbYS5tZW1vaXplZFN0YXRlLGguZGlzcGF0Y2hdfWZ1bmN0aW9uIERnKGEpe3ZhciBsPW5uKCksYz1sLnF1ZXVlO2lmKGM9PT1udWxsKXRocm93IEVycm9yKHIoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGg9Yy5kaXNwYXRjaCx2PWMucGVuZGluZyxTPWwubWVtb2l6ZWRTdGF0ZTtpZih2IT09bnVsbCl7Yy5wZW5kaW5nPW51bGw7dmFyIE09dj12Lm5leHQ7ZG8gUz1hKFMsTS5hY3Rpb24pLE09TS5uZXh0O3doaWxlKE0hPT12KTt1cihTLGwubWVtb2l6ZWRTdGF0ZSl8fCh3bj0hMCksbC5tZW1vaXplZFN0YXRlPVMsbC5iYXNlUXVldWU9PT1udWxsJiYobC5iYXNlU3RhdGU9UyksYy5sYXN0UmVuZGVyZWRTdGF0ZT1TfXJldHVybltTLGhdfWZ1bmN0aW9uIFZDKGEsbCxjKXt2YXIgaD1KZSx2PW5uKCksUz1wdDtpZihTKXtpZihjPT09dm9pZCAwKXRocm93IEVycm9yKHIoNDA3KSk7Yz1jKCl9ZWxzZSBjPWwoKTt2YXIgTT0hdXIoKHh0fHx2KS5tZW1vaXplZFN0YXRlLGMpO00mJih2Lm1lbW9pemVkU3RhdGU9Yyx3bj0hMCksdj12LnF1ZXVlO3ZhciBEPXpDLmJpbmQobnVsbCxoLHYsYSk7aWYoYmMoMjA0OCw4LEQsW2FdKSx2LmdldFNuYXBzaG90IT09bHx8TXx8dG4hPT1udWxsJiZ0bi5tZW1vaXplZFN0YXRlLnRhZyYxKXtpZihoLmZsYWdzfD0yMDQ4LG5sKDksZ2goKSxVQy5iaW5kKG51bGwsaCx2LGMsbCksbnVsbCksUnQ9PT1udWxsKXRocm93IEVycm9yKHIoMzQ5KSk7U3x8KFBhJjEyNCkhPT0wfHxxQyhoLGwsYyl9cmV0dXJuIGN9ZnVuY3Rpb24gcUMoYSxsLGMpe2EuZmxhZ3N8PTE2Mzg0LGE9e2dldFNuYXBzaG90OmwsdmFsdWU6Y30sbD1KZS51cGRhdGVRdWV1ZSxsPT09bnVsbD8obD1SZygpLEplLnVwZGF0ZVF1ZXVlPWwsbC5zdG9yZXM9W2FdKTooYz1sLnN0b3JlcyxjPT09bnVsbD9sLnN0b3Jlcz1bYV06Yy5wdXNoKGEpKX1mdW5jdGlvbiBVQyhhLGwsYyxoKXtsLnZhbHVlPWMsbC5nZXRTbmFwc2hvdD1oLEZDKGwpJiZIQyhhKX1mdW5jdGlvbiB6QyhhLGwsYyl7cmV0dXJuIGMoZnVuY3Rpb24oKXtGQyhsKSYmSEMoYSl9KX1mdW5jdGlvbiBGQyhhKXt2YXIgbD1hLmdldFNuYXBzaG90O2E9YS52YWx1ZTt0cnl7dmFyIGM9bCgpO3JldHVybiF1cihhLGMpfWNhdGNoe3JldHVybiEwfX1mdW5jdGlvbiBIQyhhKXt2YXIgbD1LcyhhLDIpO2whPT1udWxsJiZtcihsLGEsMil9ZnVuY3Rpb24gTGcoYSl7dmFyIGw9ZXIoKTtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIil7dmFyIGM9YTtpZihhPWMoKSxxbyl7TGkoITApO3RyeXtjKCl9ZmluYWxseXtMaSghMSl9fX1yZXR1cm4gbC5tZW1vaXplZFN0YXRlPWwuYmFzZVN0YXRlPWEsbC5xdWV1ZT17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOkhpLGxhc3RSZW5kZXJlZFN0YXRlOmF9LGx9ZnVuY3Rpb24gR0MoYSxsLGMsaCl7cmV0dXJuIGEuYmFzZVN0YXRlPWMsa2coYSx4dCx0eXBlb2YgaD09ImZ1bmN0aW9uIj9oOkhpKX1mdW5jdGlvbiB1OShhLGwsYyxoLHYpe2lmKHhoKGEpKXRocm93IEVycm9yKHIoNDg1KSk7aWYoYT1sLmFjdGlvbixhIT09bnVsbCl7dmFyIFM9e3BheWxvYWQ6dixhY3Rpb246YSxuZXh0Om51bGwsaXNUcmFuc2l0aW9uOiEwLHN0YXR1czoicGVuZGluZyIsdmFsdWU6bnVsbCxyZWFzb246bnVsbCxsaXN0ZW5lcnM6W10sdGhlbjpmdW5jdGlvbihNKXtTLmxpc3RlbmVycy5wdXNoKE0pfX07TC5UIT09bnVsbD9jKCEwKTpTLmlzVHJhbnNpdGlvbj0hMSxoKFMpLGM9bC5wZW5kaW5nLGM9PT1udWxsPyhTLm5leHQ9bC5wZW5kaW5nPVMsS0MobCxTKSk6KFMubmV4dD1jLm5leHQsbC5wZW5kaW5nPWMubmV4dD1TKX19ZnVuY3Rpb24gS0MoYSxsKXt2YXIgYz1sLmFjdGlvbixoPWwucGF5bG9hZCx2PWEuc3RhdGU7aWYobC5pc1RyYW5zaXRpb24pe3ZhciBTPUwuVCxNPXt9O0wuVD1NO3RyeXt2YXIgRD1jKHYsaCksRz1MLlM7RyE9PW51bGwmJkcoTSxEKSxXQyhhLGwsRCl9Y2F0Y2gocmUpe0lnKGEsbCxyZSl9ZmluYWxseXtMLlQ9U319ZWxzZSB0cnl7Uz1jKHYsaCksV0MoYSxsLFMpfWNhdGNoKHJlKXtJZyhhLGwscmUpfX1mdW5jdGlvbiBXQyhhLGwsYyl7YyE9PW51bGwmJnR5cGVvZiBjPT0ib2JqZWN0IiYmdHlwZW9mIGMudGhlbj09ImZ1bmN0aW9uIj9jLnRoZW4oZnVuY3Rpb24oaCl7WUMoYSxsLGgpfSxmdW5jdGlvbihoKXtyZXR1cm4gSWcoYSxsLGgpfSk6WUMoYSxsLGMpfWZ1bmN0aW9uIFlDKGEsbCxjKXtsLnN0YXR1cz0iZnVsZmlsbGVkIixsLnZhbHVlPWMsWEMobCksYS5zdGF0ZT1jLGw9YS5wZW5kaW5nLGwhPT1udWxsJiYoYz1sLm5leHQsYz09PWw/YS5wZW5kaW5nPW51bGw6KGM9Yy5uZXh0LGwubmV4dD1jLEtDKGEsYykpKX1mdW5jdGlvbiBJZyhhLGwsYyl7dmFyIGg9YS5wZW5kaW5nO2lmKGEucGVuZGluZz1udWxsLGghPT1udWxsKXtoPWgubmV4dDtkbyBsLnN0YXR1cz0icmVqZWN0ZWQiLGwucmVhc29uPWMsWEMobCksbD1sLm5leHQ7d2hpbGUobCE9PWgpfWEuYWN0aW9uPW51bGx9ZnVuY3Rpb24gWEMoYSl7YT1hLmxpc3RlbmVycztmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKykoMCxhW2xdKSgpfWZ1bmN0aW9uIFpDKGEsbCl7cmV0dXJuIGx9ZnVuY3Rpb24gUUMoYSxsKXtpZihwdCl7dmFyIGM9UnQuZm9ybVN0YXRlO2lmKGMhPT1udWxsKXtlOnt2YXIgaD1KZTtpZihwdCl7aWYoRnQpe3Q6e2Zvcih2YXIgdj1GdCxTPWZpO3Yubm9kZVR5cGUhPT04Oyl7aWYoIVMpe3Y9bnVsbDticmVhayB0fWlmKHY9WHIodi5uZXh0U2libGluZyksdj09PW51bGwpe3Y9bnVsbDticmVhayB0fX1TPXYuZGF0YSx2PVM9PT0iRiEifHxTPT09IkYiP3Y6bnVsbH1pZih2KXtGdD1Ycih2Lm5leHRTaWJsaW5nKSxoPXYuZGF0YT09PSJGISI7YnJlYWsgZX19SW8oaCl9aD0hMX1oJiYobD1jWzBdKX19cmV0dXJuIGM9ZXIoKSxjLm1lbW9pemVkU3RhdGU9Yy5iYXNlU3RhdGU9bCxoPXtwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6WkMsbGFzdFJlbmRlcmVkU3RhdGU6bH0sYy5xdWV1ZT1oLGM9dmouYmluZChudWxsLEplLGgpLGguZGlzcGF0Y2g9YyxoPUxnKCExKSxTPVVnLmJpbmQobnVsbCxKZSwhMSxoLnF1ZXVlKSxoPWVyKCksdj17c3RhdGU6bCxkaXNwYXRjaDpudWxsLGFjdGlvbjphLHBlbmRpbmc6bnVsbH0saC5xdWV1ZT12LGM9dTkuYmluZChudWxsLEplLHYsUyxjKSx2LmRpc3BhdGNoPWMsaC5tZW1vaXplZFN0YXRlPWEsW2wsYywhMV19ZnVuY3Rpb24gSkMoYSl7dmFyIGw9bm4oKTtyZXR1cm4gZWoobCx4dCxhKX1mdW5jdGlvbiBlaihhLGwsYyl7aWYobD1rZyhhLGwsWkMpWzBdLGE9dmgoSGkpWzBdLHR5cGVvZiBsPT0ib2JqZWN0IiYmbCE9PW51bGwmJnR5cGVvZiBsLnRoZW49PSJmdW5jdGlvbiIpdHJ5e3ZhciBoPWdjKGwpfWNhdGNoKE0pe3Rocm93IE09PT1kYz9maDpNfWVsc2UgaD1sO2w9bm4oKTt2YXIgdj1sLnF1ZXVlLFM9di5kaXNwYXRjaDtyZXR1cm4gYyE9PWwubWVtb2l6ZWRTdGF0ZSYmKEplLmZsYWdzfD0yMDQ4LG5sKDksZ2goKSxjOS5iaW5kKG51bGwsdixjKSxudWxsKSksW2gsUyxhXX1mdW5jdGlvbiBjOShhLGwpe2EuYWN0aW9uPWx9ZnVuY3Rpb24gdGooYSl7dmFyIGw9bm4oKSxjPXh0O2lmKGMhPT1udWxsKXJldHVybiBlaihsLGMsYSk7bm4oKSxsPWwubWVtb2l6ZWRTdGF0ZSxjPW5uKCk7dmFyIGg9Yy5xdWV1ZS5kaXNwYXRjaDtyZXR1cm4gYy5tZW1vaXplZFN0YXRlPWEsW2wsaCwhMV19ZnVuY3Rpb24gbmwoYSxsLGMsaCl7cmV0dXJuIGE9e3RhZzphLGNyZWF0ZTpjLGRlcHM6aCxpbnN0OmwsbmV4dDpudWxsfSxsPUplLnVwZGF0ZVF1ZXVlLGw9PT1udWxsJiYobD1SZygpLEplLnVwZGF0ZVF1ZXVlPWwpLGM9bC5sYXN0RWZmZWN0LGM9PT1udWxsP2wubGFzdEVmZmVjdD1hLm5leHQ9YTooaD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWgsbC5sYXN0RWZmZWN0PWEpLGF9ZnVuY3Rpb24gZ2goKXtyZXR1cm57ZGVzdHJveTp2b2lkIDAscmVzb3VyY2U6dm9pZCAwfX1mdW5jdGlvbiBuaigpe3JldHVybiBubigpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gYmgoYSxsLGMsaCl7dmFyIHY9ZXIoKTtoPWg9PT12b2lkIDA/bnVsbDpoLEplLmZsYWdzfD1hLHYubWVtb2l6ZWRTdGF0ZT1ubCgxfGwsZ2goKSxjLGgpfWZ1bmN0aW9uIGJjKGEsbCxjLGgpe3ZhciB2PW5uKCk7aD1oPT09dm9pZCAwP251bGw6aDt2YXIgUz12Lm1lbW9pemVkU3RhdGUuaW5zdDt4dCE9PW51bGwmJmghPT1udWxsJiZFZyhoLHh0Lm1lbW9pemVkU3RhdGUuZGVwcyk/di5tZW1vaXplZFN0YXRlPW5sKGwsUyxjLGgpOihKZS5mbGFnc3w9YSx2Lm1lbW9pemVkU3RhdGU9bmwoMXxsLFMsYyxoKSl9ZnVuY3Rpb24gcmooYSxsKXtiaCg4MzkwNjU2LDgsYSxsKX1mdW5jdGlvbiBpaihhLGwpe2JjKDIwNDgsOCxhLGwpfWZ1bmN0aW9uIGFqKGEsbCl7cmV0dXJuIGJjKDQsMixhLGwpfWZ1bmN0aW9uIG9qKGEsbCl7cmV0dXJuIGJjKDQsNCxhLGwpfWZ1bmN0aW9uIHNqKGEsbCl7aWYodHlwZW9mIGw9PSJmdW5jdGlvbiIpe2E9YSgpO3ZhciBjPWwoYSk7cmV0dXJuIGZ1bmN0aW9uKCl7dHlwZW9mIGM9PSJmdW5jdGlvbiI/YygpOmwobnVsbCl9fWlmKGwhPW51bGwpcmV0dXJuIGE9YSgpLGwuY3VycmVudD1hLGZ1bmN0aW9uKCl7bC5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIGxqKGEsbCxjKXtjPWMhPW51bGw/Yy5jb25jYXQoW2FdKTpudWxsLGJjKDQsNCxzai5iaW5kKG51bGwsbCxhKSxjKX1mdW5jdGlvbiAkZygpe31mdW5jdGlvbiB1aihhLGwpe3ZhciBjPW5uKCk7bD1sPT09dm9pZCAwP251bGw6bDt2YXIgaD1jLm1lbW9pemVkU3RhdGU7cmV0dXJuIGwhPT1udWxsJiZFZyhsLGhbMV0pP2hbMF06KGMubWVtb2l6ZWRTdGF0ZT1bYSxsXSxhKX1mdW5jdGlvbiBjaihhLGwpe3ZhciBjPW5uKCk7bD1sPT09dm9pZCAwP251bGw6bDt2YXIgaD1jLm1lbW9pemVkU3RhdGU7aWYobCE9PW51bGwmJkVnKGwsaFsxXSkpcmV0dXJuIGhbMF07aWYoaD1hKCkscW8pe0xpKCEwKTt0cnl7YSgpfWZpbmFsbHl7TGkoITEpfX1yZXR1cm4gYy5tZW1vaXplZFN0YXRlPVtoLGxdLGh9ZnVuY3Rpb24gQmcoYSxsLGMpe3JldHVybiBjPT09dm9pZCAwfHwoUGEmMTA3Mzc0MTgyNCkhPT0wP2EubWVtb2l6ZWRTdGF0ZT1sOihhLm1lbW9pemVkU3RhdGU9YyxhPWhQKCksSmUubGFuZXN8PWEsSWF8PWEsYyl9ZnVuY3Rpb24gZmooYSxsLGMsaCl7cmV0dXJuIHVyKGMsbCk/YzpKcy5jdXJyZW50IT09bnVsbD8oYT1CZyhhLGMsaCksdXIoYSxsKXx8KHduPSEwKSxhKTooUGEmNDIpPT09MD8od249ITAsYS5tZW1vaXplZFN0YXRlPWMpOihhPWhQKCksSmUubGFuZXN8PWEsSWF8PWEsbCl9ZnVuY3Rpb24gZGooYSxsLGMsaCx2KXt2YXIgUz1XLnA7Vy5wPVMhPT0wJiY4PlM/Uzo4O3ZhciBNPUwuVCxEPXt9O0wuVD1ELFVnKGEsITEsbCxjKTt0cnl7dmFyIEc9digpLHJlPUwuUztpZihyZSE9PW51bGwmJnJlKEQsRyksRyE9PW51bGwmJnR5cGVvZiBHPT0ib2JqZWN0IiYmdHlwZW9mIEcudGhlbj09ImZ1bmN0aW9uIil7dmFyIHVlPW85KEcsaCk7eGMoYSxsLHVlLHByKGEpKX1lbHNlIHhjKGEsbCxoLHByKGEpKX1jYXRjaChkZSl7eGMoYSxsLHt0aGVuOmZ1bmN0aW9uKCl7fSxzdGF0dXM6InJlamVjdGVkIixyZWFzb246ZGV9LHByKCkpfWZpbmFsbHl7Vy5wPVMsTC5UPU19fWZ1bmN0aW9uIGY5KCl7fWZ1bmN0aW9uIFZnKGEsbCxjLGgpe2lmKGEudGFnIT09NSl0aHJvdyBFcnJvcihyKDQ3NikpO3ZhciB2PWhqKGEpLnF1ZXVlO2RqKGEsdixsLEgsYz09PW51bGw/Zjk6ZnVuY3Rpb24oKXtyZXR1cm4gcGooYSksYyhoKX0pfWZ1bmN0aW9uIGhqKGEpe3ZhciBsPWEubWVtb2l6ZWRTdGF0ZTtpZihsIT09bnVsbClyZXR1cm4gbDtsPXttZW1vaXplZFN0YXRlOkgsYmFzZVN0YXRlOkgsYmFzZVF1ZXVlOm51bGwscXVldWU6e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpIaSxsYXN0UmVuZGVyZWRTdGF0ZTpIfSxuZXh0Om51bGx9O3ZhciBjPXt9O3JldHVybiBsLm5leHQ9e21lbW9pemVkU3RhdGU6YyxiYXNlU3RhdGU6YyxiYXNlUXVldWU6bnVsbCxxdWV1ZTp7cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOkhpLGxhc3RSZW5kZXJlZFN0YXRlOmN9LG5leHQ6bnVsbH0sYS5tZW1vaXplZFN0YXRlPWwsYT1hLmFsdGVybmF0ZSxhIT09bnVsbCYmKGEubWVtb2l6ZWRTdGF0ZT1sKSxsfWZ1bmN0aW9uIHBqKGEpe3ZhciBsPWhqKGEpLm5leHQucXVldWU7eGMoYSxsLHt9LHByKCkpfWZ1bmN0aW9uIHFnKCl7cmV0dXJuIEluKCRjKX1mdW5jdGlvbiBtaigpe3JldHVybiBubigpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24geWooKXtyZXR1cm4gbm4oKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGQ5KGEpe2Zvcih2YXIgbD1hLnJldHVybjtsIT09bnVsbDspe3N3aXRjaChsLnRhZyl7Y2FzZSAyNDpjYXNlIDM6dmFyIGM9cHIoKTthPUNhKGMpO3ZhciBoPWphKGwsYSxjKTtoIT09bnVsbCYmKG1yKGgsbCxjKSxwYyhoLGwsYykpLGw9e2NhY2hlOnZnKCl9LGEucGF5bG9hZD1sO3JldHVybn1sPWwucmV0dXJufX1mdW5jdGlvbiBoOShhLGwsYyl7dmFyIGg9cHIoKTtjPXtsYW5lOmgscmV2ZXJ0TGFuZTowLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0seGgoYSk/Z2oobCxjKTooYz1zZyhhLGwsYyxoKSxjIT09bnVsbCYmKG1yKGMsYSxoKSxiaihjLGwsaCkpKX1mdW5jdGlvbiB2aihhLGwsYyl7dmFyIGg9cHIoKTt4YyhhLGwsYyxoKX1mdW5jdGlvbiB4YyhhLGwsYyxoKXt2YXIgdj17bGFuZTpoLHJldmVydExhbmU6MCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKHhoKGEpKWdqKGwsdik7ZWxzZXt2YXIgUz1hLmFsdGVybmF0ZTtpZihhLmxhbmVzPT09MCYmKFM9PT1udWxsfHxTLmxhbmVzPT09MCkmJihTPWwubGFzdFJlbmRlcmVkUmVkdWNlcixTIT09bnVsbCkpdHJ5e3ZhciBNPWwubGFzdFJlbmRlcmVkU3RhdGUsRD1TKE0sYyk7aWYodi5oYXNFYWdlclN0YXRlPSEwLHYuZWFnZXJTdGF0ZT1ELHVyKEQsTSkpcmV0dXJuIHJoKGEsbCx2LDApLFJ0PT09bnVsbCYmbmgoKSwhMX1jYXRjaHt9aWYoYz1zZyhhLGwsdixoKSxjIT09bnVsbClyZXR1cm4gbXIoYyxhLGgpLGJqKGMsbCxoKSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBVZyhhLGwsYyxoKXtpZihoPXtsYW5lOjIscmV2ZXJ0TGFuZTp4YigpLGFjdGlvbjpoLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0seGgoYSkpe2lmKGwpdGhyb3cgRXJyb3Iocig0NzkpKX1lbHNlIGw9c2coYSxjLGgsMiksbCE9PW51bGwmJm1yKGwsYSwyKX1mdW5jdGlvbiB4aChhKXt2YXIgbD1hLmFsdGVybmF0ZTtyZXR1cm4gYT09PUplfHxsIT09bnVsbCYmbD09PUplfWZ1bmN0aW9uIGdqKGEsbCl7ZWw9cGg9ITA7dmFyIGM9YS5wZW5kaW5nO2M9PT1udWxsP2wubmV4dD1sOihsLm5leHQ9Yy5uZXh0LGMubmV4dD1sKSxhLnBlbmRpbmc9bH1mdW5jdGlvbiBiaihhLGwsYyl7aWYoKGMmNDE5NDA0OCkhPT0wKXt2YXIgaD1sLmxhbmVzO2gmPWEucGVuZGluZ0xhbmVzLGN8PWgsbC5sYW5lcz1jLEZkKGEsYyl9fXZhciB3aD17cmVhZENvbnRleHQ6SW4sdXNlOnloLHVzZUNhbGxiYWNrOll0LHVzZUNvbnRleHQ6WXQsdXNlRWZmZWN0Oll0LHVzZUltcGVyYXRpdmVIYW5kbGU6WXQsdXNlTGF5b3V0RWZmZWN0Oll0LHVzZUluc2VydGlvbkVmZmVjdDpZdCx1c2VNZW1vOll0LHVzZVJlZHVjZXI6WXQsdXNlUmVmOll0LHVzZVN0YXRlOll0LHVzZURlYnVnVmFsdWU6WXQsdXNlRGVmZXJyZWRWYWx1ZTpZdCx1c2VUcmFuc2l0aW9uOll0LHVzZVN5bmNFeHRlcm5hbFN0b3JlOll0LHVzZUlkOll0LHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOll0LHVzZUZvcm1TdGF0ZTpZdCx1c2VBY3Rpb25TdGF0ZTpZdCx1c2VPcHRpbWlzdGljOll0LHVzZU1lbW9DYWNoZTpZdCx1c2VDYWNoZVJlZnJlc2g6WXR9LHhqPXtyZWFkQ29udGV4dDpJbix1c2U6eWgsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oYSxsKXtyZXR1cm4gZXIoKS5tZW1vaXplZFN0YXRlPVthLGw9PT12b2lkIDA/bnVsbDpsXSxhfSx1c2VDb250ZXh0OkluLHVzZUVmZmVjdDpyaix1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGEsbCxjKXtjPWMhPW51bGw/Yy5jb25jYXQoW2FdKTpudWxsLGJoKDQxOTQzMDgsNCxzai5iaW5kKG51bGwsbCxhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsbCl7cmV0dXJuIGJoKDQxOTQzMDgsNCxhLGwpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oYSxsKXtiaCg0LDIsYSxsKX0sdXNlTWVtbzpmdW5jdGlvbihhLGwpe3ZhciBjPWVyKCk7bD1sPT09dm9pZCAwP251bGw6bDt2YXIgaD1hKCk7aWYocW8pe0xpKCEwKTt0cnl7YSgpfWZpbmFsbHl7TGkoITEpfX1yZXR1cm4gYy5tZW1vaXplZFN0YXRlPVtoLGxdLGh9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxsLGMpe3ZhciBoPWVyKCk7aWYoYyE9PXZvaWQgMCl7dmFyIHY9YyhsKTtpZihxbyl7TGkoITApO3RyeXtjKGwpfWZpbmFsbHl7TGkoITEpfX19ZWxzZSB2PWw7cmV0dXJuIGgubWVtb2l6ZWRTdGF0ZT1oLmJhc2VTdGF0ZT12LGE9e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphLGxhc3RSZW5kZXJlZFN0YXRlOnZ9LGgucXVldWU9YSxhPWEuZGlzcGF0Y2g9aDkuYmluZChudWxsLEplLGEpLFtoLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpmdW5jdGlvbihhKXt2YXIgbD1lcigpO3JldHVybiBhPXtjdXJyZW50OmF9LGwubWVtb2l6ZWRTdGF0ZT1hfSx1c2VTdGF0ZTpmdW5jdGlvbihhKXthPUxnKGEpO3ZhciBsPWEucXVldWUsYz12ai5iaW5kKG51bGwsSmUsbCk7cmV0dXJuIGwuZGlzcGF0Y2g9YyxbYS5tZW1vaXplZFN0YXRlLGNdfSx1c2VEZWJ1Z1ZhbHVlOiRnLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSxsKXt2YXIgYz1lcigpO3JldHVybiBCZyhjLGEsbCl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1MZyghMSk7cmV0dXJuIGE9ZGouYmluZChudWxsLEplLGEucXVldWUsITAsITEpLGVyKCkubWVtb2l6ZWRTdGF0ZT1hLFshMSxhXX0sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oYSxsLGMpe3ZhciBoPUplLHY9ZXIoKTtpZihwdCl7aWYoYz09PXZvaWQgMCl0aHJvdyBFcnJvcihyKDQwNykpO2M9YygpfWVsc2V7aWYoYz1sKCksUnQ9PT1udWxsKXRocm93IEVycm9yKHIoMzQ5KSk7KHN0JjEyNCkhPT0wfHxxQyhoLGwsYyl9di5tZW1vaXplZFN0YXRlPWM7dmFyIFM9e3ZhbHVlOmMsZ2V0U25hcHNob3Q6bH07cmV0dXJuIHYucXVldWU9Uyxyaih6Qy5iaW5kKG51bGwsaCxTLGEpLFthXSksaC5mbGFnc3w9MjA0OCxubCg5LGdoKCksVUMuYmluZChudWxsLGgsUyxjLGwpLG51bGwpLGN9LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGE9ZXIoKSxsPVJ0LmlkZW50aWZpZXJQcmVmaXg7aWYocHQpe3ZhciBjPVVpLGg9cWk7Yz0oaCZ+KDE8PDMyLVpuKGgpLTEpKS50b1N0cmluZygzMikrYyxsPSLCqyIrbCsiUiIrYyxjPW1oKyssMDxjJiYobCs9IkgiK2MudG9TdHJpbmcoMzIpKSxsKz0iwrsifWVsc2UgYz1zOSsrLGw9IsKrIitsKyJyIitjLnRvU3RyaW5nKDMyKSsiwrsiO3JldHVybiBhLm1lbW9pemVkU3RhdGU9bH0sdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6cWcsdXNlRm9ybVN0YXRlOlFDLHVzZUFjdGlvblN0YXRlOlFDLHVzZU9wdGltaXN0aWM6ZnVuY3Rpb24oYSl7dmFyIGw9ZXIoKTtsLm1lbW9pemVkU3RhdGU9bC5iYXNlU3RhdGU9YTt2YXIgYz17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOm51bGwsbGFzdFJlbmRlcmVkU3RhdGU6bnVsbH07cmV0dXJuIGwucXVldWU9YyxsPVVnLmJpbmQobnVsbCxKZSwhMCxjKSxjLmRpc3BhdGNoPWwsW2EsbF19LHVzZU1lbW9DYWNoZTpOZyx1c2VDYWNoZVJlZnJlc2g6ZnVuY3Rpb24oKXtyZXR1cm4gZXIoKS5tZW1vaXplZFN0YXRlPWQ5LmJpbmQobnVsbCxKZSl9fSx3aj17cmVhZENvbnRleHQ6SW4sdXNlOnloLHVzZUNhbGxiYWNrOnVqLHVzZUNvbnRleHQ6SW4sdXNlRWZmZWN0OmlqLHVzZUltcGVyYXRpdmVIYW5kbGU6bGosdXNlSW5zZXJ0aW9uRWZmZWN0OmFqLHVzZUxheW91dEVmZmVjdDpvaix1c2VNZW1vOmNqLHVzZVJlZHVjZXI6dmgsdXNlUmVmOm5qLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHZoKEhpKX0sdXNlRGVidWdWYWx1ZTokZyx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEsbCl7dmFyIGM9bm4oKTtyZXR1cm4gZmooYyx4dC5tZW1vaXplZFN0YXRlLGEsbCl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT12aChIaSlbMF0sbD1ubigpLm1lbW9pemVkU3RhdGU7cmV0dXJuW3R5cGVvZiBhPT0iYm9vbGVhbiI/YTpnYyhhKSxsXX0sdXNlU3luY0V4dGVybmFsU3RvcmU6VkMsdXNlSWQ6bWosdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6cWcsdXNlRm9ybVN0YXRlOkpDLHVzZUFjdGlvblN0YXRlOkpDLHVzZU9wdGltaXN0aWM6ZnVuY3Rpb24oYSxsKXt2YXIgYz1ubigpO3JldHVybiBHQyhjLHh0LGEsbCl9LHVzZU1lbW9DYWNoZTpOZyx1c2VDYWNoZVJlZnJlc2g6eWp9LHA5PXtyZWFkQ29udGV4dDpJbix1c2U6eWgsdXNlQ2FsbGJhY2s6dWosdXNlQ29udGV4dDpJbix1c2VFZmZlY3Q6aWosdXNlSW1wZXJhdGl2ZUhhbmRsZTpsaix1c2VJbnNlcnRpb25FZmZlY3Q6YWosdXNlTGF5b3V0RWZmZWN0Om9qLHVzZU1lbW86Y2osdXNlUmVkdWNlcjpEZyx1c2VSZWY6bmosdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gRGcoSGkpfSx1c2VEZWJ1Z1ZhbHVlOiRnLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSxsKXt2YXIgYz1ubigpO3JldHVybiB4dD09PW51bGw/QmcoYyxhLGwpOmZqKGMseHQubWVtb2l6ZWRTdGF0ZSxhLGwpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9RGcoSGkpWzBdLGw9bm4oKS5tZW1vaXplZFN0YXRlO3JldHVyblt0eXBlb2YgYT09ImJvb2xlYW4iP2E6Z2MoYSksbF19LHVzZVN5bmNFeHRlcm5hbFN0b3JlOlZDLHVzZUlkOm1qLHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOnFnLHVzZUZvcm1TdGF0ZTp0aix1c2VBY3Rpb25TdGF0ZTp0aix1c2VPcHRpbWlzdGljOmZ1bmN0aW9uKGEsbCl7dmFyIGM9bm4oKTtyZXR1cm4geHQhPT1udWxsP0dDKGMseHQsYSxsKTooYy5iYXNlU3RhdGU9YSxbYSxjLnF1ZXVlLmRpc3BhdGNoXSl9LHVzZU1lbW9DYWNoZTpOZyx1c2VDYWNoZVJlZnJlc2g6eWp9LHJsPW51bGwsd2M9MDtmdW5jdGlvbiBTaChhKXt2YXIgbD13YztyZXR1cm4gd2MrPTEscmw9PT1udWxsJiYocmw9W10pLFJDKHJsLGEsbCl9ZnVuY3Rpb24gU2MoYSxsKXtsPWwucHJvcHMucmVmLGEucmVmPWwhPT12b2lkIDA/bDpudWxsfWZ1bmN0aW9uIEFoKGEsbCl7dGhyb3cgbC4kJHR5cGVvZj09PW0/RXJyb3Iocig1MjUpKTooYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCksRXJyb3IocigzMSxhPT09IltvYmplY3QgT2JqZWN0XSI/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMobCkuam9pbigiLCAiKSsifSI6YSkpKX1mdW5jdGlvbiBTaihhKXt2YXIgbD1hLl9pbml0O3JldHVybiBsKGEuX3BheWxvYWQpfWZ1bmN0aW9uIEFqKGEpe2Z1bmN0aW9uIGwoWCxZKXtpZihhKXt2YXIgbmU9WC5kZWxldGlvbnM7bmU9PT1udWxsPyhYLmRlbGV0aW9ucz1bWV0sWC5mbGFnc3w9MTYpOm5lLnB1c2goWSl9fWZ1bmN0aW9uIGMoWCxZKXtpZighYSlyZXR1cm4gbnVsbDtmb3IoO1khPT1udWxsOylsKFgsWSksWT1ZLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gaChYKXtmb3IodmFyIFk9bmV3IE1hcDtYIT09bnVsbDspWC5rZXkhPT1udWxsP1kuc2V0KFgua2V5LFgpOlkuc2V0KFguaW5kZXgsWCksWD1YLnNpYmxpbmc7cmV0dXJuIFl9ZnVuY3Rpb24gdihYLFkpe3JldHVybiBYPVZpKFgsWSksWC5pbmRleD0wLFguc2libGluZz1udWxsLFh9ZnVuY3Rpb24gUyhYLFksbmUpe3JldHVybiBYLmluZGV4PW5lLGE/KG5lPVguYWx0ZXJuYXRlLG5lIT09bnVsbD8obmU9bmUuaW5kZXgsbmU8WT8oWC5mbGFnc3w9NjcxMDg4NjYsWSk6bmUpOihYLmZsYWdzfD02NzEwODg2NixZKSk6KFguZmxhZ3N8PTEwNDg1NzYsWSl9ZnVuY3Rpb24gTShYKXtyZXR1cm4gYSYmWC5hbHRlcm5hdGU9PT1udWxsJiYoWC5mbGFnc3w9NjcxMDg4NjYpLFh9ZnVuY3Rpb24gRChYLFksbmUsZmUpe3JldHVybiBZPT09bnVsbHx8WS50YWchPT02PyhZPXVnKG5lLFgubW9kZSxmZSksWS5yZXR1cm49WCxZKTooWT12KFksbmUpLFkucmV0dXJuPVgsWSl9ZnVuY3Rpb24gRyhYLFksbmUsZmUpe3ZhciBSZT1uZS50eXBlO3JldHVybiBSZT09PXc/dWUoWCxZLG5lLnByb3BzLmNoaWxkcmVuLGZlLG5lLmtleSk6WSE9PW51bGwmJihZLmVsZW1lbnRUeXBlPT09UmV8fHR5cGVvZiBSZT09Im9iamVjdCImJlJlIT09bnVsbCYmUmUuJCR0eXBlb2Y9PT1SJiZTaihSZSk9PT1ZLnR5cGUpPyhZPXYoWSxuZS5wcm9wcyksU2MoWSxuZSksWS5yZXR1cm49WCxZKTooWT1haChuZS50eXBlLG5lLmtleSxuZS5wcm9wcyxudWxsLFgubW9kZSxmZSksU2MoWSxuZSksWS5yZXR1cm49WCxZKX1mdW5jdGlvbiByZShYLFksbmUsZmUpe3JldHVybiBZPT09bnVsbHx8WS50YWchPT00fHxZLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09bmUuY29udGFpbmVySW5mb3x8WS5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1uZS5pbXBsZW1lbnRhdGlvbj8oWT1jZyhuZSxYLm1vZGUsZmUpLFkucmV0dXJuPVgsWSk6KFk9dihZLG5lLmNoaWxkcmVufHxbXSksWS5yZXR1cm49WCxZKX1mdW5jdGlvbiB1ZShYLFksbmUsZmUsUmUpe3JldHVybiBZPT09bnVsbHx8WS50YWchPT03PyhZPU5vKG5lLFgubW9kZSxmZSxSZSksWS5yZXR1cm49WCxZKTooWT12KFksbmUpLFkucmV0dXJuPVgsWSl9ZnVuY3Rpb24gZGUoWCxZLG5lKXtpZih0eXBlb2YgWT09InN0cmluZyImJlkhPT0iInx8dHlwZW9mIFk9PSJudW1iZXIifHx0eXBlb2YgWT09ImJpZ2ludCIpcmV0dXJuIFk9dWcoIiIrWSxYLm1vZGUsbmUpLFkucmV0dXJuPVgsWTtpZih0eXBlb2YgWT09Im9iamVjdCImJlkhPT1udWxsKXtzd2l0Y2goWS4kJHR5cGVvZil7Y2FzZSB5OnJldHVybiBuZT1haChZLnR5cGUsWS5rZXksWS5wcm9wcyxudWxsLFgubW9kZSxuZSksU2MobmUsWSksbmUucmV0dXJuPVgsbmU7Y2FzZSB4OnJldHVybiBZPWNnKFksWC5tb2RlLG5lKSxZLnJldHVybj1YLFk7Y2FzZSBSOnZhciBmZT1ZLl9pbml0O3JldHVybiBZPWZlKFkuX3BheWxvYWQpLGRlKFgsWSxuZSl9aWYoSyhZKXx8JChZKSlyZXR1cm4gWT1ObyhZLFgubW9kZSxuZSxudWxsKSxZLnJldHVybj1YLFk7aWYodHlwZW9mIFkudGhlbj09ImZ1bmN0aW9uIilyZXR1cm4gZGUoWCxTaChZKSxuZSk7aWYoWS4kJHR5cGVvZj09PUUpcmV0dXJuIGRlKFgsdWgoWCxZKSxuZSk7QWgoWCxZKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBpZShYLFksbmUsZmUpe3ZhciBSZT1ZIT09bnVsbD9ZLmtleTpudWxsO2lmKHR5cGVvZiBuZT09InN0cmluZyImJm5lIT09IiJ8fHR5cGVvZiBuZT09Im51bWJlciJ8fHR5cGVvZiBuZT09ImJpZ2ludCIpcmV0dXJuIFJlIT09bnVsbD9udWxsOkQoWCxZLCIiK25lLGZlKTtpZih0eXBlb2YgbmU9PSJvYmplY3QiJiZuZSE9PW51bGwpe3N3aXRjaChuZS4kJHR5cGVvZil7Y2FzZSB5OnJldHVybiBuZS5rZXk9PT1SZT9HKFgsWSxuZSxmZSk6bnVsbDtjYXNlIHg6cmV0dXJuIG5lLmtleT09PVJlP3JlKFgsWSxuZSxmZSk6bnVsbDtjYXNlIFI6cmV0dXJuIFJlPW5lLl9pbml0LG5lPVJlKG5lLl9wYXlsb2FkKSxpZShYLFksbmUsZmUpfWlmKEsobmUpfHwkKG5lKSlyZXR1cm4gUmUhPT1udWxsP251bGw6dWUoWCxZLG5lLGZlLG51bGwpO2lmKHR5cGVvZiBuZS50aGVuPT0iZnVuY3Rpb24iKXJldHVybiBpZShYLFksU2gobmUpLGZlKTtpZihuZS4kJHR5cGVvZj09PUUpcmV0dXJuIGllKFgsWSx1aChYLG5lKSxmZSk7QWgoWCxuZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gYWUoWCxZLG5lLGZlLFJlKXtpZih0eXBlb2YgZmU9PSJzdHJpbmciJiZmZSE9PSIifHx0eXBlb2YgZmU9PSJudW1iZXIifHx0eXBlb2YgZmU9PSJiaWdpbnQiKXJldHVybiBYPVguZ2V0KG5lKXx8bnVsbCxEKFksWCwiIitmZSxSZSk7aWYodHlwZW9mIGZlPT0ib2JqZWN0IiYmZmUhPT1udWxsKXtzd2l0Y2goZmUuJCR0eXBlb2Ype2Nhc2UgeTpyZXR1cm4gWD1YLmdldChmZS5rZXk9PT1udWxsP25lOmZlLmtleSl8fG51bGwsRyhZLFgsZmUsUmUpO2Nhc2UgeDpyZXR1cm4gWD1YLmdldChmZS5rZXk9PT1udWxsP25lOmZlLmtleSl8fG51bGwscmUoWSxYLGZlLFJlKTtjYXNlIFI6dmFyIHR0PWZlLl9pbml0O3JldHVybiBmZT10dChmZS5fcGF5bG9hZCksYWUoWCxZLG5lLGZlLFJlKX1pZihLKGZlKXx8JChmZSkpcmV0dXJuIFg9WC5nZXQobmUpfHxudWxsLHVlKFksWCxmZSxSZSxudWxsKTtpZih0eXBlb2YgZmUudGhlbj09ImZ1bmN0aW9uIilyZXR1cm4gYWUoWCxZLG5lLFNoKGZlKSxSZSk7aWYoZmUuJCR0eXBlb2Y9PT1FKXJldHVybiBhZShYLFksbmUsdWgoWSxmZSksUmUpO0FoKFksZmUpfXJldHVybiBudWxsfWZ1bmN0aW9uIEZlKFgsWSxuZSxmZSl7Zm9yKHZhciBSZT1udWxsLHR0PW51bGwsSWU9WSxxZT1ZPTAsQW49bnVsbDtJZSE9PW51bGwmJnFlPG5lLmxlbmd0aDtxZSsrKXtJZS5pbmRleD5xZT8oQW49SWUsSWU9bnVsbCk6QW49SWUuc2libGluZzt2YXIgZnQ9aWUoWCxJZSxuZVtxZV0sZmUpO2lmKGZ0PT09bnVsbCl7SWU9PT1udWxsJiYoSWU9QW4pO2JyZWFrfWEmJkllJiZmdC5hbHRlcm5hdGU9PT1udWxsJiZsKFgsSWUpLFk9UyhmdCxZLHFlKSx0dD09PW51bGw/UmU9ZnQ6dHQuc2libGluZz1mdCx0dD1mdCxJZT1Bbn1pZihxZT09PW5lLmxlbmd0aClyZXR1cm4gYyhYLEllKSxwdCYmRG8oWCxxZSksUmU7aWYoSWU9PT1udWxsKXtmb3IoO3FlPG5lLmxlbmd0aDtxZSsrKUllPWRlKFgsbmVbcWVdLGZlKSxJZSE9PW51bGwmJihZPVMoSWUsWSxxZSksdHQ9PT1udWxsP1JlPUllOnR0LnNpYmxpbmc9SWUsdHQ9SWUpO3JldHVybiBwdCYmRG8oWCxxZSksUmV9Zm9yKEllPWgoSWUpO3FlPG5lLmxlbmd0aDtxZSsrKUFuPWFlKEllLFgscWUsbmVbcWVdLGZlKSxBbiE9PW51bGwmJihhJiZBbi5hbHRlcm5hdGUhPT1udWxsJiZJZS5kZWxldGUoQW4ua2V5PT09bnVsbD9xZTpBbi5rZXkpLFk9UyhBbixZLHFlKSx0dD09PW51bGw/UmU9QW46dHQuc2libGluZz1Bbix0dD1Bbik7cmV0dXJuIGEmJkllLmZvckVhY2goZnVuY3Rpb24oR2Epe3JldHVybiBsKFgsR2EpfSkscHQmJkRvKFgscWUpLFJlfWZ1bmN0aW9uIFZlKFgsWSxuZSxmZSl7aWYobmU9PW51bGwpdGhyb3cgRXJyb3IocigxNTEpKTtmb3IodmFyIFJlPW51bGwsdHQ9bnVsbCxJZT1ZLHFlPVk9MCxBbj1udWxsLGZ0PW5lLm5leHQoKTtJZSE9PW51bGwmJiFmdC5kb25lO3FlKyssZnQ9bmUubmV4dCgpKXtJZS5pbmRleD5xZT8oQW49SWUsSWU9bnVsbCk6QW49SWUuc2libGluZzt2YXIgR2E9aWUoWCxJZSxmdC52YWx1ZSxmZSk7aWYoR2E9PT1udWxsKXtJZT09PW51bGwmJihJZT1Bbik7YnJlYWt9YSYmSWUmJkdhLmFsdGVybmF0ZT09PW51bGwmJmwoWCxJZSksWT1TKEdhLFkscWUpLHR0PT09bnVsbD9SZT1HYTp0dC5zaWJsaW5nPUdhLHR0PUdhLEllPUFufWlmKGZ0LmRvbmUpcmV0dXJuIGMoWCxJZSkscHQmJkRvKFgscWUpLFJlO2lmKEllPT09bnVsbCl7Zm9yKDshZnQuZG9uZTtxZSsrLGZ0PW5lLm5leHQoKSlmdD1kZShYLGZ0LnZhbHVlLGZlKSxmdCE9PW51bGwmJihZPVMoZnQsWSxxZSksdHQ9PT1udWxsP1JlPWZ0OnR0LnNpYmxpbmc9ZnQsdHQ9ZnQpO3JldHVybiBwdCYmRG8oWCxxZSksUmV9Zm9yKEllPWgoSWUpOyFmdC5kb25lO3FlKyssZnQ9bmUubmV4dCgpKWZ0PWFlKEllLFgscWUsZnQudmFsdWUsZmUpLGZ0IT09bnVsbCYmKGEmJmZ0LmFsdGVybmF0ZSE9PW51bGwmJkllLmRlbGV0ZShmdC5rZXk9PT1udWxsP3FlOmZ0LmtleSksWT1TKGZ0LFkscWUpLHR0PT09bnVsbD9SZT1mdDp0dC5zaWJsaW5nPWZ0LHR0PWZ0KTtyZXR1cm4gYSYmSWUuZm9yRWFjaChmdW5jdGlvbihtSCl7cmV0dXJuIGwoWCxtSCl9KSxwdCYmRG8oWCxxZSksUmV9ZnVuY3Rpb24gU3QoWCxZLG5lLGZlKXtpZih0eXBlb2YgbmU9PSJvYmplY3QiJiZuZSE9PW51bGwmJm5lLnR5cGU9PT13JiZuZS5rZXk9PT1udWxsJiYobmU9bmUucHJvcHMuY2hpbGRyZW4pLHR5cGVvZiBuZT09Im9iamVjdCImJm5lIT09bnVsbCl7c3dpdGNoKG5lLiQkdHlwZW9mKXtjYXNlIHk6ZTp7Zm9yKHZhciBSZT1uZS5rZXk7WSE9PW51bGw7KXtpZihZLmtleT09PVJlKXtpZihSZT1uZS50eXBlLFJlPT09dyl7aWYoWS50YWc9PT03KXtjKFgsWS5zaWJsaW5nKSxmZT12KFksbmUucHJvcHMuY2hpbGRyZW4pLGZlLnJldHVybj1YLFg9ZmU7YnJlYWsgZX19ZWxzZSBpZihZLmVsZW1lbnRUeXBlPT09UmV8fHR5cGVvZiBSZT09Im9iamVjdCImJlJlIT09bnVsbCYmUmUuJCR0eXBlb2Y9PT1SJiZTaihSZSk9PT1ZLnR5cGUpe2MoWCxZLnNpYmxpbmcpLGZlPXYoWSxuZS5wcm9wcyksU2MoZmUsbmUpLGZlLnJldHVybj1YLFg9ZmU7YnJlYWsgZX1jKFgsWSk7YnJlYWt9ZWxzZSBsKFgsWSk7WT1ZLnNpYmxpbmd9bmUudHlwZT09PXc/KGZlPU5vKG5lLnByb3BzLmNoaWxkcmVuLFgubW9kZSxmZSxuZS5rZXkpLGZlLnJldHVybj1YLFg9ZmUpOihmZT1haChuZS50eXBlLG5lLmtleSxuZS5wcm9wcyxudWxsLFgubW9kZSxmZSksU2MoZmUsbmUpLGZlLnJldHVybj1YLFg9ZmUpfXJldHVybiBNKFgpO2Nhc2UgeDplOntmb3IoUmU9bmUua2V5O1khPT1udWxsOyl7aWYoWS5rZXk9PT1SZSlpZihZLnRhZz09PTQmJlkuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1uZS5jb250YWluZXJJbmZvJiZZLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PW5lLmltcGxlbWVudGF0aW9uKXtjKFgsWS5zaWJsaW5nKSxmZT12KFksbmUuY2hpbGRyZW58fFtdKSxmZS5yZXR1cm49WCxYPWZlO2JyZWFrIGV9ZWxzZXtjKFgsWSk7YnJlYWt9ZWxzZSBsKFgsWSk7WT1ZLnNpYmxpbmd9ZmU9Y2cobmUsWC5tb2RlLGZlKSxmZS5yZXR1cm49WCxYPWZlfXJldHVybiBNKFgpO2Nhc2UgUjpyZXR1cm4gUmU9bmUuX2luaXQsbmU9UmUobmUuX3BheWxvYWQpLFN0KFgsWSxuZSxmZSl9aWYoSyhuZSkpcmV0dXJuIEZlKFgsWSxuZSxmZSk7aWYoJChuZSkpe2lmKFJlPSQobmUpLHR5cGVvZiBSZSE9ImZ1bmN0aW9uIil0aHJvdyBFcnJvcihyKDE1MCkpO3JldHVybiBuZT1SZS5jYWxsKG5lKSxWZShYLFksbmUsZmUpfWlmKHR5cGVvZiBuZS50aGVuPT0iZnVuY3Rpb24iKXJldHVybiBTdChYLFksU2gobmUpLGZlKTtpZihuZS4kJHR5cGVvZj09PUUpcmV0dXJuIFN0KFgsWSx1aChYLG5lKSxmZSk7QWgoWCxuZSl9cmV0dXJuIHR5cGVvZiBuZT09InN0cmluZyImJm5lIT09IiJ8fHR5cGVvZiBuZT09Im51bWJlciJ8fHR5cGVvZiBuZT09ImJpZ2ludCI/KG5lPSIiK25lLFkhPT1udWxsJiZZLnRhZz09PTY/KGMoWCxZLnNpYmxpbmcpLGZlPXYoWSxuZSksZmUucmV0dXJuPVgsWD1mZSk6KGMoWCxZKSxmZT11ZyhuZSxYLm1vZGUsZmUpLGZlLnJldHVybj1YLFg9ZmUpLE0oWCkpOmMoWCxZKX1yZXR1cm4gZnVuY3Rpb24oWCxZLG5lLGZlKXt0cnl7d2M9MDt2YXIgUmU9U3QoWCxZLG5lLGZlKTtyZXR1cm4gcmw9bnVsbCxSZX1jYXRjaChJZSl7aWYoSWU9PT1kY3x8SWU9PT1maCl0aHJvdyBJZTt2YXIgdHQ9Y3IoMjksSWUsbnVsbCxYLm1vZGUpO3JldHVybiB0dC5sYW5lcz1mZSx0dC5yZXR1cm49WCx0dH19fXZhciBpbD1BaighMCksX2o9QWooITEpLE1yPVoobnVsbCksZGk9bnVsbDtmdW5jdGlvbiBNYShhKXt2YXIgbD1hLmFsdGVybmF0ZTtvZShjbixjbi5jdXJyZW50JjEpLG9lKE1yLGEpLGRpPT09bnVsbCYmKGw9PT1udWxsfHxKcy5jdXJyZW50IT09bnVsbHx8bC5tZW1vaXplZFN0YXRlIT09bnVsbCkmJihkaT1hKX1mdW5jdGlvbiBPaihhKXtpZihhLnRhZz09PTIyKXtpZihvZShjbixjbi5jdXJyZW50KSxvZShNcixhKSxkaT09PW51bGwpe3ZhciBsPWEuYWx0ZXJuYXRlO2whPT1udWxsJiZsLm1lbW9pemVkU3RhdGUhPT1udWxsJiYoZGk9YSl9fWVsc2UgUmEoKX1mdW5jdGlvbiBSYSgpe29lKGNuLGNuLmN1cnJlbnQpLG9lKE1yLE1yLmN1cnJlbnQpfWZ1bmN0aW9uIEdpKGEpe3RlKE1yKSxkaT09PWEmJihkaT1udWxsKSx0ZShjbil9dmFyIGNuPVooMCk7ZnVuY3Rpb24gX2goYSl7Zm9yKHZhciBsPWE7bCE9PW51bGw7KXtpZihsLnRhZz09PTEzKXt2YXIgYz1sLm1lbW9pemVkU3RhdGU7aWYoYyE9PW51bGwmJihjPWMuZGVoeWRyYXRlZCxjPT09bnVsbHx8Yy5kYXRhPT09IiQ/Inx8UmIoYykpKXJldHVybiBsfWVsc2UgaWYobC50YWc9PT0xOSYmbC5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyIT09dm9pZCAwKXtpZigobC5mbGFncyYxMjgpIT09MClyZXR1cm4gbH1lbHNlIGlmKGwuY2hpbGQhPT1udWxsKXtsLmNoaWxkLnJldHVybj1sLGw9bC5jaGlsZDtjb250aW51ZX1pZihsPT09YSlicmVhaztmb3IoO2wuc2libGluZz09PW51bGw7KXtpZihsLnJldHVybj09PW51bGx8fGwucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtsPWwucmV0dXJufWwuc2libGluZy5yZXR1cm49bC5yZXR1cm4sbD1sLnNpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gemcoYSxsLGMsaCl7bD1hLm1lbW9pemVkU3RhdGUsYz1jKGgsbCksYz1jPT1udWxsP2w6cCh7fSxsLGMpLGEubWVtb2l6ZWRTdGF0ZT1jLGEubGFuZXM9PT0wJiYoYS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9Yyl9dmFyIEZnPXtlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxsLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGg9cHIoKSx2PUNhKGgpO3YucGF5bG9hZD1sLGMhPW51bGwmJih2LmNhbGxiYWNrPWMpLGw9amEoYSx2LGgpLGwhPT1udWxsJiYobXIobCxhLGgpLHBjKGwsYSxoKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxsLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGg9cHIoKSx2PUNhKGgpO3YudGFnPTEsdi5wYXlsb2FkPWwsYyE9bnVsbCYmKHYuY2FsbGJhY2s9YyksbD1qYShhLHYsaCksbCE9PW51bGwmJihtcihsLGEsaCkscGMobCxhLGgpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsbCl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgYz1wcigpLGg9Q2EoYyk7aC50YWc9MixsIT1udWxsJiYoaC5jYWxsYmFjaz1sKSxsPWphKGEsaCxjKSxsIT09bnVsbCYmKG1yKGwsYSxjKSxwYyhsLGEsYykpfX07ZnVuY3Rpb24gVGooYSxsLGMsaCx2LFMsTSl7cmV0dXJuIGE9YS5zdGF0ZU5vZGUsdHlwZW9mIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlPT0iZnVuY3Rpb24iP2Euc2hvdWxkQ29tcG9uZW50VXBkYXRlKGgsUyxNKTpsLnByb3RvdHlwZSYmbC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IWljKGMsaCl8fCFpYyh2LFMpOiEwfWZ1bmN0aW9uIEVqKGEsbCxjLGgpe2E9bC5zdGF0ZSx0eXBlb2YgbC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPT0iZnVuY3Rpb24iJiZsLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxoKSx0eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz09ImZ1bmN0aW9uIiYmbC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGgpLGwuc3RhdGUhPT1hJiZGZy5lbnF1ZXVlUmVwbGFjZVN0YXRlKGwsbC5zdGF0ZSxudWxsKX1mdW5jdGlvbiBVbyhhLGwpe3ZhciBjPWw7aWYoInJlZiJpbiBsKXtjPXt9O2Zvcih2YXIgaCBpbiBsKWghPT0icmVmIiYmKGNbaF09bFtoXSl9aWYoYT1hLmRlZmF1bHRQcm9wcyl7Yz09PWwmJihjPXAoe30sYykpO2Zvcih2YXIgdiBpbiBhKWNbdl09PT12b2lkIDAmJihjW3ZdPWFbdl0pfXJldHVybiBjfXZhciBPaD10eXBlb2YgcmVwb3J0RXJyb3I9PSJmdW5jdGlvbiI/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIHdpbmRvdz09Im9iamVjdCImJnR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudD09ImZ1bmN0aW9uIil7dmFyIGw9bmV3IHdpbmRvdy5FcnJvckV2ZW50KCJlcnJvciIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxtZXNzYWdlOnR5cGVvZiBhPT0ib2JqZWN0IiYmYSE9PW51bGwmJnR5cGVvZiBhLm1lc3NhZ2U9PSJzdHJpbmciP1N0cmluZyhhLm1lc3NhZ2UpOlN0cmluZyhhKSxlcnJvcjphfSk7aWYoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KGwpKXJldHVybn1lbHNlIGlmKHR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MuZW1pdD09ImZ1bmN0aW9uIil7cHJvY2Vzcy5lbWl0KCJ1bmNhdWdodEV4Y2VwdGlvbiIsYSk7cmV0dXJufWNvbnNvbGUuZXJyb3IoYSl9O2Z1bmN0aW9uIENqKGEpe09oKGEpfWZ1bmN0aW9uIGpqKGEpe2NvbnNvbGUuZXJyb3IoYSl9ZnVuY3Rpb24gUGooYSl7T2goYSl9ZnVuY3Rpb24gVGgoYSxsKXt0cnl7dmFyIGM9YS5vblVuY2F1Z2h0RXJyb3I7YyhsLnZhbHVlLHtjb21wb25lbnRTdGFjazpsLnN0YWNrfSl9Y2F0Y2goaCl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGh9KX19ZnVuY3Rpb24gTWooYSxsLGMpe3RyeXt2YXIgaD1hLm9uQ2F1Z2h0RXJyb3I7aChjLnZhbHVlLHtjb21wb25lbnRTdGFjazpjLnN0YWNrLGVycm9yQm91bmRhcnk6bC50YWc9PT0xP2wuc3RhdGVOb2RlOm51bGx9KX1jYXRjaCh2KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdn0pfX1mdW5jdGlvbiBIZyhhLGwsYyl7cmV0dXJuIGM9Q2EoYyksYy50YWc9MyxjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH0sYy5jYWxsYmFjaz1mdW5jdGlvbigpe1RoKGEsbCl9LGN9ZnVuY3Rpb24gUmooYSl7cmV0dXJuIGE9Q2EoYSksYS50YWc9MyxhfWZ1bmN0aW9uIE5qKGEsbCxjLGgpe3ZhciB2PWMudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYodHlwZW9mIHY9PSJmdW5jdGlvbiIpe3ZhciBTPWgudmFsdWU7YS5wYXlsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIHYoUyl9LGEuY2FsbGJhY2s9ZnVuY3Rpb24oKXtNaihsLGMsaCl9fXZhciBNPWMuc3RhdGVOb2RlO00hPT1udWxsJiZ0eXBlb2YgTS5jb21wb25lbnREaWRDYXRjaD09ImZ1bmN0aW9uIiYmKGEuY2FsbGJhY2s9ZnVuY3Rpb24oKXtNaihsLGMsaCksdHlwZW9mIHYhPSJmdW5jdGlvbiImJigkYT09PW51bGw/JGE9bmV3IFNldChbdGhpc10pOiRhLmFkZCh0aGlzKSk7dmFyIEQ9aC5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGgudmFsdWUse2NvbXBvbmVudFN0YWNrOkQhPT1udWxsP0Q6IiJ9KX0pfWZ1bmN0aW9uIG05KGEsbCxjLGgsdil7aWYoYy5mbGFnc3w9MzI3NjgsaCE9PW51bGwmJnR5cGVvZiBoPT0ib2JqZWN0IiYmdHlwZW9mIGgudGhlbj09ImZ1bmN0aW9uIil7aWYobD1jLmFsdGVybmF0ZSxsIT09bnVsbCYmdWMobCxjLHYsITApLGM9TXIuY3VycmVudCxjIT09bnVsbCl7c3dpdGNoKGMudGFnKXtjYXNlIDEzOnJldHVybiBkaT09PW51bGw/bWIoKTpjLmFsdGVybmF0ZT09PW51bGwmJkh0PT09MCYmKEh0PTMpLGMuZmxhZ3MmPS0yNTcsYy5mbGFnc3w9NjU1MzYsYy5sYW5lcz12LGg9PT14Zz9jLmZsYWdzfD0xNjM4NDoobD1jLnVwZGF0ZVF1ZXVlLGw9PT1udWxsP2MudXBkYXRlUXVldWU9bmV3IFNldChbaF0pOmwuYWRkKGgpLHZiKGEsaCx2KSksITE7Y2FzZSAyMjpyZXR1cm4gYy5mbGFnc3w9NjU1MzYsaD09PXhnP2MuZmxhZ3N8PTE2Mzg0OihsPWMudXBkYXRlUXVldWUsbD09PW51bGw/KGw9e3RyYW5zaXRpb25zOm51bGwsbWFya2VySW5zdGFuY2VzOm51bGwscmV0cnlRdWV1ZTpuZXcgU2V0KFtoXSl9LGMudXBkYXRlUXVldWU9bCk6KGM9bC5yZXRyeVF1ZXVlLGM9PT1udWxsP2wucmV0cnlRdWV1ZT1uZXcgU2V0KFtoXSk6Yy5hZGQoaCkpLHZiKGEsaCx2KSksITF9dGhyb3cgRXJyb3Iocig0MzUsYy50YWcpKX1yZXR1cm4gdmIoYSxoLHYpLG1iKCksITF9aWYocHQpcmV0dXJuIGw9TXIuY3VycmVudCxsIT09bnVsbD8oKGwuZmxhZ3MmNjU1MzYpPT09MCYmKGwuZmxhZ3N8PTI1NiksbC5mbGFnc3w9NjU1MzYsbC5sYW5lcz12LGghPT1oZyYmKGE9RXJyb3Iocig0MjIpLHtjYXVzZTpofSksbGMoRXIoYSxjKSkpKTooaCE9PWhnJiYobD1FcnJvcihyKDQyMykse2NhdXNlOmh9KSxsYyhFcihsLGMpKSksYT1hLmN1cnJlbnQuYWx0ZXJuYXRlLGEuZmxhZ3N8PTY1NTM2LHYmPS12LGEubGFuZXN8PXYsaD1FcihoLGMpLHY9SGcoYS5zdGF0ZU5vZGUsaCx2KSxBZyhhLHYpLEh0IT09NCYmKEh0PTIpKSwhMTt2YXIgUz1FcnJvcihyKDUyMCkse2NhdXNlOmh9KTtpZihTPUVyKFMsYyksamM9PT1udWxsP2pjPVtTXTpqYy5wdXNoKFMpLEh0IT09NCYmKEh0PTIpLGw9PT1udWxsKXJldHVybiEwO2g9RXIoaCxjKSxjPWw7ZG97c3dpdGNoKGMudGFnKXtjYXNlIDM6cmV0dXJuIGMuZmxhZ3N8PTY1NTM2LGE9diYtdixjLmxhbmVzfD1hLGE9SGcoYy5zdGF0ZU5vZGUsaCxhKSxBZyhjLGEpLCExO2Nhc2UgMTppZihsPWMudHlwZSxTPWMuc3RhdGVOb2RlLChjLmZsYWdzJjEyOCk9PT0wJiYodHlwZW9mIGwuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPT0iZnVuY3Rpb24ifHxTIT09bnVsbCYmdHlwZW9mIFMuY29tcG9uZW50RGlkQ2F0Y2g9PSJmdW5jdGlvbiImJigkYT09PW51bGx8fCEkYS5oYXMoUykpKSlyZXR1cm4gYy5mbGFnc3w9NjU1MzYsdiY9LXYsYy5sYW5lc3w9dix2PVJqKHYpLE5qKHYsYSxjLGgpLEFnKGMsdiksITF9Yz1jLnJldHVybn13aGlsZShjIT09bnVsbCk7cmV0dXJuITF9dmFyIGtqPUVycm9yKHIoNDYxKSksd249ITE7ZnVuY3Rpb24gRW4oYSxsLGMsaCl7bC5jaGlsZD1hPT09bnVsbD9faihsLG51bGwsYyxoKTppbChsLGEuY2hpbGQsYyxoKX1mdW5jdGlvbiBEaihhLGwsYyxoLHYpe2M9Yy5yZW5kZXI7dmFyIFM9bC5yZWY7aWYoInJlZiJpbiBoKXt2YXIgTT17fTtmb3IodmFyIEQgaW4gaClEIT09InJlZiImJihNW0RdPWhbRF0pfWVsc2UgTT1oO3JldHVybiBCbyhsKSxoPUNnKGEsbCxjLE0sUyx2KSxEPWpnKCksYSE9PW51bGwmJiF3bj8oUGcoYSxsLHYpLEtpKGEsbCx2KSk6KHB0JiZEJiZmZyhsKSxsLmZsYWdzfD0xLEVuKGEsbCxoLHYpLGwuY2hpbGQpfWZ1bmN0aW9uIExqKGEsbCxjLGgsdil7aWYoYT09PW51bGwpe3ZhciBTPWMudHlwZTtyZXR1cm4gdHlwZW9mIFM9PSJmdW5jdGlvbiImJiFsZyhTKSYmUy5kZWZhdWx0UHJvcHM9PT12b2lkIDAmJmMuY29tcGFyZT09PW51bGw/KGwudGFnPTE1LGwudHlwZT1TLElqKGEsbCxTLGgsdikpOihhPWFoKGMudHlwZSxudWxsLGgsbCxsLm1vZGUsdiksYS5yZWY9bC5yZWYsYS5yZXR1cm49bCxsLmNoaWxkPWEpfWlmKFM9YS5jaGlsZCwhSmcoYSx2KSl7dmFyIE09Uy5tZW1vaXplZFByb3BzO2lmKGM9Yy5jb21wYXJlLGM9YyE9PW51bGw/YzppYyxjKE0saCkmJmEucmVmPT09bC5yZWYpcmV0dXJuIEtpKGEsbCx2KX1yZXR1cm4gbC5mbGFnc3w9MSxhPVZpKFMsaCksYS5yZWY9bC5yZWYsYS5yZXR1cm49bCxsLmNoaWxkPWF9ZnVuY3Rpb24gSWooYSxsLGMsaCx2KXtpZihhIT09bnVsbCl7dmFyIFM9YS5tZW1vaXplZFByb3BzO2lmKGljKFMsaCkmJmEucmVmPT09bC5yZWYpaWYod249ITEsbC5wZW5kaW5nUHJvcHM9aD1TLEpnKGEsdikpKGEuZmxhZ3MmMTMxMDcyKSE9PTAmJih3bj0hMCk7ZWxzZSByZXR1cm4gbC5sYW5lcz1hLmxhbmVzLEtpKGEsbCx2KX1yZXR1cm4gR2coYSxsLGMsaCx2KX1mdW5jdGlvbiAkaihhLGwsYyl7dmFyIGg9bC5wZW5kaW5nUHJvcHMsdj1oLmNoaWxkcmVuLFM9YSE9PW51bGw/YS5tZW1vaXplZFN0YXRlOm51bGw7aWYoaC5tb2RlPT09ImhpZGRlbiIpe2lmKChsLmZsYWdzJjEyOCkhPT0wKXtpZihoPVMhPT1udWxsP1MuYmFzZUxhbmVzfGM6YyxhIT09bnVsbCl7Zm9yKHY9bC5jaGlsZD1hLmNoaWxkLFM9MDt2IT09bnVsbDspUz1TfHYubGFuZXN8di5jaGlsZExhbmVzLHY9di5zaWJsaW5nO2wuY2hpbGRMYW5lcz1TJn5ofWVsc2UgbC5jaGlsZExhbmVzPTAsbC5jaGlsZD1udWxsO3JldHVybiBCaihhLGwsaCxjKX1pZigoYyY1MzY4NzA5MTIpIT09MClsLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsfSxhIT09bnVsbCYmY2gobCxTIT09bnVsbD9TLmNhY2hlUG9vbDpudWxsKSxTIT09bnVsbD9JQyhsLFMpOk9nKCksT2oobCk7ZWxzZSByZXR1cm4gbC5sYW5lcz1sLmNoaWxkTGFuZXM9NTM2ODcwOTEyLEJqKGEsbCxTIT09bnVsbD9TLmJhc2VMYW5lc3xjOmMsYyl9ZWxzZSBTIT09bnVsbD8oY2gobCxTLmNhY2hlUG9vbCksSUMobCxTKSxSYSgpLGwubWVtb2l6ZWRTdGF0ZT1udWxsKTooYSE9PW51bGwmJmNoKGwsbnVsbCksT2coKSxSYSgpKTtyZXR1cm4gRW4oYSxsLHYsYyksbC5jaGlsZH1mdW5jdGlvbiBCaihhLGwsYyxoKXt2YXIgdj1iZygpO3JldHVybiB2PXY9PT1udWxsP251bGw6e3BhcmVudDp1bi5fY3VycmVudFZhbHVlLHBvb2w6dn0sbC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6YyxjYWNoZVBvb2w6dn0sYSE9PW51bGwmJmNoKGwsbnVsbCksT2coKSxPaihsKSxhIT09bnVsbCYmdWMoYSxsLGgsITApLG51bGx9ZnVuY3Rpb24gRWgoYSxsKXt2YXIgYz1sLnJlZjtpZihjPT09bnVsbClhIT09bnVsbCYmYS5yZWYhPT1udWxsJiYobC5mbGFnc3w9NDE5NDgxNik7ZWxzZXtpZih0eXBlb2YgYyE9ImZ1bmN0aW9uIiYmdHlwZW9mIGMhPSJvYmplY3QiKXRocm93IEVycm9yKHIoMjg0KSk7KGE9PT1udWxsfHxhLnJlZiE9PWMpJiYobC5mbGFnc3w9NDE5NDgxNil9fWZ1bmN0aW9uIEdnKGEsbCxjLGgsdil7cmV0dXJuIEJvKGwpLGM9Q2coYSxsLGMsaCx2b2lkIDAsdiksaD1qZygpLGEhPT1udWxsJiYhd24/KFBnKGEsbCx2KSxLaShhLGwsdikpOihwdCYmaCYmZmcobCksbC5mbGFnc3w9MSxFbihhLGwsYyx2KSxsLmNoaWxkKX1mdW5jdGlvbiBWaihhLGwsYyxoLHYsUyl7cmV0dXJuIEJvKGwpLGwudXBkYXRlUXVldWU9bnVsbCxjPUJDKGwsaCxjLHYpLCRDKGEpLGg9amcoKSxhIT09bnVsbCYmIXduPyhQZyhhLGwsUyksS2koYSxsLFMpKToocHQmJmgmJmZnKGwpLGwuZmxhZ3N8PTEsRW4oYSxsLGMsUyksbC5jaGlsZCl9ZnVuY3Rpb24gcWooYSxsLGMsaCx2KXtpZihCbyhsKSxsLnN0YXRlTm9kZT09PW51bGwpe3ZhciBTPVdzLE09Yy5jb250ZXh0VHlwZTt0eXBlb2YgTT09Im9iamVjdCImJk0hPT1udWxsJiYoUz1JbihNKSksUz1uZXcgYyhoLFMpLGwubWVtb2l6ZWRTdGF0ZT1TLnN0YXRlIT09bnVsbCYmUy5zdGF0ZSE9PXZvaWQgMD9TLnN0YXRlOm51bGwsUy51cGRhdGVyPUZnLGwuc3RhdGVOb2RlPVMsUy5fcmVhY3RJbnRlcm5hbHM9bCxTPWwuc3RhdGVOb2RlLFMucHJvcHM9aCxTLnN0YXRlPWwubWVtb2l6ZWRTdGF0ZSxTLnJlZnM9e30sd2cobCksTT1jLmNvbnRleHRUeXBlLFMuY29udGV4dD10eXBlb2YgTT09Im9iamVjdCImJk0hPT1udWxsP0luKE0pOldzLFMuc3RhdGU9bC5tZW1vaXplZFN0YXRlLE09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsdHlwZW9mIE09PSJmdW5jdGlvbiImJih6ZyhsLGMsTSxoKSxTLnN0YXRlPWwubWVtb2l6ZWRTdGF0ZSksdHlwZW9mIGMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT0iZnVuY3Rpb24ifHx0eXBlb2YgUy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uInx8dHlwZW9mIFMuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uIiYmdHlwZW9mIFMuY29tcG9uZW50V2lsbE1vdW50IT0iZnVuY3Rpb24ifHwoTT1TLnN0YXRlLHR5cGVvZiBTLmNvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmUy5jb21wb25lbnRXaWxsTW91bnQoKSx0eXBlb2YgUy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50PT0iZnVuY3Rpb24iJiZTLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSxNIT09Uy5zdGF0ZSYmRmcuZW5xdWV1ZVJlcGxhY2VTdGF0ZShTLFMuc3RhdGUsbnVsbCkseWMobCxoLFMsdiksbWMoKSxTLnN0YXRlPWwubWVtb2l6ZWRTdGF0ZSksdHlwZW9mIFMuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJihsLmZsYWdzfD00MTk0MzA4KSxoPSEwfWVsc2UgaWYoYT09PW51bGwpe1M9bC5zdGF0ZU5vZGU7dmFyIEQ9bC5tZW1vaXplZFByb3BzLEc9VW8oYyxEKTtTLnByb3BzPUc7dmFyIHJlPVMuY29udGV4dCx1ZT1jLmNvbnRleHRUeXBlO009V3MsdHlwZW9mIHVlPT0ib2JqZWN0IiYmdWUhPT1udWxsJiYoTT1Jbih1ZSkpO3ZhciBkZT1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczt1ZT10eXBlb2YgZGU9PSJmdW5jdGlvbiJ8fHR5cGVvZiBTLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlPT0iZnVuY3Rpb24iLEQ9bC5wZW5kaW5nUHJvcHMhPT1ELHVlfHx0eXBlb2YgUy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyE9ImZ1bmN0aW9uIiYmdHlwZW9mIFMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyE9ImZ1bmN0aW9uInx8KER8fHJlIT09TSkmJkVqKGwsUyxoLE0pLEVhPSExO3ZhciBpZT1sLm1lbW9pemVkU3RhdGU7Uy5zdGF0ZT1pZSx5YyhsLGgsUyx2KSxtYygpLHJlPWwubWVtb2l6ZWRTdGF0ZSxEfHxpZSE9PXJlfHxFYT8odHlwZW9mIGRlPT0iZnVuY3Rpb24iJiYoemcobCxjLGRlLGgpLHJlPWwubWVtb2l6ZWRTdGF0ZSksKEc9RWF8fFRqKGwsYyxHLGgsaWUscmUsTSkpPyh1ZXx8dHlwZW9mIFMuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uIiYmdHlwZW9mIFMuY29tcG9uZW50V2lsbE1vdW50IT0iZnVuY3Rpb24ifHwodHlwZW9mIFMuY29tcG9uZW50V2lsbE1vdW50PT0iZnVuY3Rpb24iJiZTLmNvbXBvbmVudFdpbGxNb3VudCgpLHR5cGVvZiBTLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQ9PSJmdW5jdGlvbiImJlMuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSx0eXBlb2YgUy5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIiYmKGwuZmxhZ3N8PTQxOTQzMDgpKToodHlwZW9mIFMuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJihsLmZsYWdzfD00MTk0MzA4KSxsLm1lbW9pemVkUHJvcHM9aCxsLm1lbW9pemVkU3RhdGU9cmUpLFMucHJvcHM9aCxTLnN0YXRlPXJlLFMuY29udGV4dD1NLGg9Ryk6KHR5cGVvZiBTLmNvbXBvbmVudERpZE1vdW50PT0iZnVuY3Rpb24iJiYobC5mbGFnc3w9NDE5NDMwOCksaD0hMSl9ZWxzZXtTPWwuc3RhdGVOb2RlLFNnKGEsbCksTT1sLm1lbW9pemVkUHJvcHMsdWU9VW8oYyxNKSxTLnByb3BzPXVlLGRlPWwucGVuZGluZ1Byb3BzLGllPVMuY29udGV4dCxyZT1jLmNvbnRleHRUeXBlLEc9V3MsdHlwZW9mIHJlPT0ib2JqZWN0IiYmcmUhPT1udWxsJiYoRz1JbihyZSkpLEQ9Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsKHJlPXR5cGVvZiBEPT0iZnVuY3Rpb24ifHx0eXBlb2YgUy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uIil8fHR5cGVvZiBTLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT0iZnVuY3Rpb24iJiZ0eXBlb2YgUy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT0iZnVuY3Rpb24ifHwoTSE9PWRlfHxpZSE9PUcpJiZFaihsLFMsaCxHKSxFYT0hMSxpZT1sLm1lbW9pemVkU3RhdGUsUy5zdGF0ZT1pZSx5YyhsLGgsUyx2KSxtYygpO3ZhciBhZT1sLm1lbW9pemVkU3RhdGU7TSE9PWRlfHxpZSE9PWFlfHxFYXx8YSE9PW51bGwmJmEuZGVwZW5kZW5jaWVzIT09bnVsbCYmbGgoYS5kZXBlbmRlbmNpZXMpPyh0eXBlb2YgRD09ImZ1bmN0aW9uIiYmKHpnKGwsYyxELGgpLGFlPWwubWVtb2l6ZWRTdGF0ZSksKHVlPUVhfHxUaihsLGMsdWUsaCxpZSxhZSxHKXx8YSE9PW51bGwmJmEuZGVwZW5kZW5jaWVzIT09bnVsbCYmbGgoYS5kZXBlbmRlbmNpZXMpKT8ocmV8fHR5cGVvZiBTLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlIT0iZnVuY3Rpb24iJiZ0eXBlb2YgUy5jb21wb25lbnRXaWxsVXBkYXRlIT0iZnVuY3Rpb24ifHwodHlwZW9mIFMuY29tcG9uZW50V2lsbFVwZGF0ZT09ImZ1bmN0aW9uIiYmUy5jb21wb25lbnRXaWxsVXBkYXRlKGgsYWUsRyksdHlwZW9mIFMuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGU9PSJmdW5jdGlvbiImJlMuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUoaCxhZSxHKSksdHlwZW9mIFMuY29tcG9uZW50RGlkVXBkYXRlPT0iZnVuY3Rpb24iJiYobC5mbGFnc3w9NCksdHlwZW9mIFMuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiImJihsLmZsYWdzfD0xMDI0KSk6KHR5cGVvZiBTLmNvbXBvbmVudERpZFVwZGF0ZSE9ImZ1bmN0aW9uInx8TT09PWEubWVtb2l6ZWRQcm9wcyYmaWU9PT1hLm1lbW9pemVkU3RhdGV8fChsLmZsYWdzfD00KSx0eXBlb2YgUy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSE9ImZ1bmN0aW9uInx8TT09PWEubWVtb2l6ZWRQcm9wcyYmaWU9PT1hLm1lbW9pemVkU3RhdGV8fChsLmZsYWdzfD0xMDI0KSxsLm1lbW9pemVkUHJvcHM9aCxsLm1lbW9pemVkU3RhdGU9YWUpLFMucHJvcHM9aCxTLnN0YXRlPWFlLFMuY29udGV4dD1HLGg9dWUpOih0eXBlb2YgUy5jb21wb25lbnREaWRVcGRhdGUhPSJmdW5jdGlvbiJ8fE09PT1hLm1lbW9pemVkUHJvcHMmJmllPT09YS5tZW1vaXplZFN0YXRlfHwobC5mbGFnc3w9NCksdHlwZW9mIFMuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUhPSJmdW5jdGlvbiJ8fE09PT1hLm1lbW9pemVkUHJvcHMmJmllPT09YS5tZW1vaXplZFN0YXRlfHwobC5mbGFnc3w9MTAyNCksaD0hMSl9cmV0dXJuIFM9aCxFaChhLGwpLGg9KGwuZmxhZ3MmMTI4KSE9PTAsU3x8aD8oUz1sLnN0YXRlTm9kZSxjPWgmJnR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciE9ImZ1bmN0aW9uIj9udWxsOlMucmVuZGVyKCksbC5mbGFnc3w9MSxhIT09bnVsbCYmaD8obC5jaGlsZD1pbChsLGEuY2hpbGQsbnVsbCx2KSxsLmNoaWxkPWlsKGwsbnVsbCxjLHYpKTpFbihhLGwsYyx2KSxsLm1lbW9pemVkU3RhdGU9Uy5zdGF0ZSxhPWwuY2hpbGQpOmE9S2koYSxsLHYpLGF9ZnVuY3Rpb24gVWooYSxsLGMsaCl7cmV0dXJuIHNjKCksbC5mbGFnc3w9MjU2LEVuKGEsbCxjLGgpLGwuY2hpbGR9dmFyIEtnPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MCxoeWRyYXRpb25FcnJvcnM6bnVsbH07ZnVuY3Rpb24gV2coYSl7cmV0dXJue2Jhc2VMYW5lczphLGNhY2hlUG9vbDpqQygpfX1mdW5jdGlvbiBZZyhhLGwsYyl7cmV0dXJuIGE9YSE9PW51bGw/YS5jaGlsZExhbmVzJn5jOjAsbCYmKGF8PVJyKSxhfWZ1bmN0aW9uIHpqKGEsbCxjKXt2YXIgaD1sLnBlbmRpbmdQcm9wcyx2PSExLFM9KGwuZmxhZ3MmMTI4KSE9PTAsTTtpZigoTT1TKXx8KE09YSE9PW51bGwmJmEubWVtb2l6ZWRTdGF0ZT09PW51bGw/ITE6KGNuLmN1cnJlbnQmMikhPT0wKSxNJiYodj0hMCxsLmZsYWdzJj0tMTI5KSxNPShsLmZsYWdzJjMyKSE9PTAsbC5mbGFncyY9LTMzLGE9PT1udWxsKXtpZihwdCl7aWYodj9NYShsKTpSYSgpLHB0KXt2YXIgRD1GdCxHO2lmKEc9RCl7ZTp7Zm9yKEc9RCxEPWZpO0cubm9kZVR5cGUhPT04Oyl7aWYoIUQpe0Q9bnVsbDticmVhayBlfWlmKEc9WHIoRy5uZXh0U2libGluZyksRz09PW51bGwpe0Q9bnVsbDticmVhayBlfX1EPUd9RCE9PW51bGw/KGwubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDpELHRyZWVDb250ZXh0OmtvIT09bnVsbD97aWQ6cWksb3ZlcmZsb3c6VWl9Om51bGwscmV0cnlMYW5lOjUzNjg3MDkxMixoeWRyYXRpb25FcnJvcnM6bnVsbH0sRz1jcigxOCxudWxsLG51bGwsMCksRy5zdGF0ZU5vZGU9RCxHLnJldHVybj1sLGwuY2hpbGQ9Ryx6bj1sLEZ0PW51bGwsRz0hMCk6Rz0hMX1HfHxJbyhsKX1pZihEPWwubWVtb2l6ZWRTdGF0ZSxEIT09bnVsbCYmKEQ9RC5kZWh5ZHJhdGVkLEQhPT1udWxsKSlyZXR1cm4gUmIoRCk/bC5sYW5lcz0zMjpsLmxhbmVzPTUzNjg3MDkxMixudWxsO0dpKGwpfXJldHVybiBEPWguY2hpbGRyZW4saD1oLmZhbGxiYWNrLHY/KFJhKCksdj1sLm1vZGUsRD1DaCh7bW9kZToiaGlkZGVuIixjaGlsZHJlbjpEfSx2KSxoPU5vKGgsdixjLG51bGwpLEQucmV0dXJuPWwsaC5yZXR1cm49bCxELnNpYmxpbmc9aCxsLmNoaWxkPUQsdj1sLmNoaWxkLHYubWVtb2l6ZWRTdGF0ZT1XZyhjKSx2LmNoaWxkTGFuZXM9WWcoYSxNLGMpLGwubWVtb2l6ZWRTdGF0ZT1LZyxoKTooTWEobCksWGcobCxEKSl9aWYoRz1hLm1lbW9pemVkU3RhdGUsRyE9PW51bGwmJihEPUcuZGVoeWRyYXRlZCxEIT09bnVsbCkpe2lmKFMpbC5mbGFncyYyNTY/KE1hKGwpLGwuZmxhZ3MmPS0yNTcsbD1aZyhhLGwsYykpOmwubWVtb2l6ZWRTdGF0ZSE9PW51bGw/KFJhKCksbC5jaGlsZD1hLmNoaWxkLGwuZmxhZ3N8PTEyOCxsPW51bGwpOihSYSgpLHY9aC5mYWxsYmFjayxEPWwubW9kZSxoPUNoKHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjpoLmNoaWxkcmVufSxEKSx2PU5vKHYsRCxjLG51bGwpLHYuZmxhZ3N8PTIsaC5yZXR1cm49bCx2LnJldHVybj1sLGguc2libGluZz12LGwuY2hpbGQ9aCxpbChsLGEuY2hpbGQsbnVsbCxjKSxoPWwuY2hpbGQsaC5tZW1vaXplZFN0YXRlPVdnKGMpLGguY2hpbGRMYW5lcz1ZZyhhLE0sYyksbC5tZW1vaXplZFN0YXRlPUtnLGw9dik7ZWxzZSBpZihNYShsKSxSYihEKSl7aWYoTT1ELm5leHRTaWJsaW5nJiZELm5leHRTaWJsaW5nLmRhdGFzZXQsTSl2YXIgcmU9TS5kZ3N0O009cmUsaD1FcnJvcihyKDQxOSkpLGguc3RhY2s9IiIsaC5kaWdlc3Q9TSxsYyh7dmFsdWU6aCxzb3VyY2U6bnVsbCxzdGFjazpudWxsfSksbD1aZyhhLGwsYyl9ZWxzZSBpZih3bnx8dWMoYSxsLGMsITEpLE09KGMmYS5jaGlsZExhbmVzKSE9PTAsd258fE0pe2lmKE09UnQsTSE9PW51bGwmJihoPWMmLWMsaD0oaCY0MikhPT0wPzE6SWkoaCksaD0oaCYoTS5zdXNwZW5kZWRMYW5lc3xjKSkhPT0wPzA6aCxoIT09MCYmaCE9PUcucmV0cnlMYW5lKSl0aHJvdyBHLnJldHJ5TGFuZT1oLEtzKGEsaCksbXIoTSxhLGgpLGtqO0QuZGF0YT09PSIkPyJ8fG1iKCksbD1aZyhhLGwsYyl9ZWxzZSBELmRhdGE9PT0iJD8iPyhsLmZsYWdzfD0xOTIsbC5jaGlsZD1hLmNoaWxkLGw9bnVsbCk6KGE9Ry50cmVlQ29udGV4dCxGdD1YcihELm5leHRTaWJsaW5nKSx6bj1sLHB0PSEwLExvPW51bGwsZmk9ITEsYSE9PW51bGwmJihqcltQcisrXT1xaSxqcltQcisrXT1VaSxqcltQcisrXT1rbyxxaT1hLmlkLFVpPWEub3ZlcmZsb3csa289bCksbD1YZyhsLGguY2hpbGRyZW4pLGwuZmxhZ3N8PTQwOTYpO3JldHVybiBsfXJldHVybiB2PyhSYSgpLHY9aC5mYWxsYmFjayxEPWwubW9kZSxHPWEuY2hpbGQscmU9Ry5zaWJsaW5nLGg9VmkoRyx7bW9kZToiaGlkZGVuIixjaGlsZHJlbjpoLmNoaWxkcmVufSksaC5zdWJ0cmVlRmxhZ3M9Ry5zdWJ0cmVlRmxhZ3MmNjUwMTE3MTIscmUhPT1udWxsP3Y9VmkocmUsdik6KHY9Tm8odixELGMsbnVsbCksdi5mbGFnc3w9Miksdi5yZXR1cm49bCxoLnJldHVybj1sLGguc2libGluZz12LGwuY2hpbGQ9aCxoPXYsdj1sLmNoaWxkLEQ9YS5jaGlsZC5tZW1vaXplZFN0YXRlLEQ9PT1udWxsP0Q9V2coYyk6KEc9RC5jYWNoZVBvb2wsRyE9PW51bGw/KHJlPXVuLl9jdXJyZW50VmFsdWUsRz1HLnBhcmVudCE9PXJlP3twYXJlbnQ6cmUscG9vbDpyZX06Ryk6Rz1qQygpLEQ9e2Jhc2VMYW5lczpELmJhc2VMYW5lc3xjLGNhY2hlUG9vbDpHfSksdi5tZW1vaXplZFN0YXRlPUQsdi5jaGlsZExhbmVzPVlnKGEsTSxjKSxsLm1lbW9pemVkU3RhdGU9S2csaCk6KE1hKGwpLGM9YS5jaGlsZCxhPWMuc2libGluZyxjPVZpKGMse21vZGU6InZpc2libGUiLGNoaWxkcmVuOmguY2hpbGRyZW59KSxjLnJldHVybj1sLGMuc2libGluZz1udWxsLGEhPT1udWxsJiYoTT1sLmRlbGV0aW9ucyxNPT09bnVsbD8obC5kZWxldGlvbnM9W2FdLGwuZmxhZ3N8PTE2KTpNLnB1c2goYSkpLGwuY2hpbGQ9YyxsLm1lbW9pemVkU3RhdGU9bnVsbCxjKX1mdW5jdGlvbiBYZyhhLGwpe3JldHVybiBsPUNoKHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjpsfSxhLm1vZGUpLGwucmV0dXJuPWEsYS5jaGlsZD1sfWZ1bmN0aW9uIENoKGEsbCl7cmV0dXJuIGE9Y3IoMjIsYSxudWxsLGwpLGEubGFuZXM9MCxhLnN0YXRlTm9kZT17X3Zpc2liaWxpdHk6MSxfcGVuZGluZ01hcmtlcnM6bnVsbCxfcmV0cnlDYWNoZTpudWxsLF90cmFuc2l0aW9uczpudWxsfSxhfWZ1bmN0aW9uIFpnKGEsbCxjKXtyZXR1cm4gaWwobCxhLmNoaWxkLG51bGwsYyksYT1YZyhsLGwucGVuZGluZ1Byb3BzLmNoaWxkcmVuKSxhLmZsYWdzfD0yLGwubWVtb2l6ZWRTdGF0ZT1udWxsLGF9ZnVuY3Rpb24gRmooYSxsLGMpe2EubGFuZXN8PWw7dmFyIGg9YS5hbHRlcm5hdGU7aCE9PW51bGwmJihoLmxhbmVzfD1sKSxtZyhhLnJldHVybixsLGMpfWZ1bmN0aW9uIFFnKGEsbCxjLGgsdil7dmFyIFM9YS5tZW1vaXplZFN0YXRlO1M9PT1udWxsP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6bCxyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmgsdGFpbDpjLHRhaWxNb2RlOnZ9OihTLmlzQmFja3dhcmRzPWwsUy5yZW5kZXJpbmc9bnVsbCxTLnJlbmRlcmluZ1N0YXJ0VGltZT0wLFMubGFzdD1oLFMudGFpbD1jLFMudGFpbE1vZGU9dil9ZnVuY3Rpb24gSGooYSxsLGMpe3ZhciBoPWwucGVuZGluZ1Byb3BzLHY9aC5yZXZlYWxPcmRlcixTPWgudGFpbDtpZihFbihhLGwsaC5jaGlsZHJlbixjKSxoPWNuLmN1cnJlbnQsKGgmMikhPT0wKWg9aCYxfDIsbC5mbGFnc3w9MTI4O2Vsc2V7aWYoYSE9PW51bGwmJihhLmZsYWdzJjEyOCkhPT0wKWU6Zm9yKGE9bC5jaGlsZDthIT09bnVsbDspe2lmKGEudGFnPT09MTMpYS5tZW1vaXplZFN0YXRlIT09bnVsbCYmRmooYSxjLGwpO2Vsc2UgaWYoYS50YWc9PT0xOSlGaihhLGMsbCk7ZWxzZSBpZihhLmNoaWxkIT09bnVsbCl7YS5jaGlsZC5yZXR1cm49YSxhPWEuY2hpbGQ7Y29udGludWV9aWYoYT09PWwpYnJlYWsgZTtmb3IoO2Euc2libGluZz09PW51bGw7KXtpZihhLnJldHVybj09PW51bGx8fGEucmV0dXJuPT09bClicmVhayBlO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybixhPWEuc2libGluZ31oJj0xfXN3aXRjaChvZShjbixoKSx2KXtjYXNlImZvcndhcmRzIjpmb3IoYz1sLmNoaWxkLHY9bnVsbDtjIT09bnVsbDspYT1jLmFsdGVybmF0ZSxhIT09bnVsbCYmX2goYSk9PT1udWxsJiYodj1jKSxjPWMuc2libGluZztjPXYsYz09PW51bGw/KHY9bC5jaGlsZCxsLmNoaWxkPW51bGwpOih2PWMuc2libGluZyxjLnNpYmxpbmc9bnVsbCksUWcobCwhMSx2LGMsUyk7YnJlYWs7Y2FzZSJiYWNrd2FyZHMiOmZvcihjPW51bGwsdj1sLmNoaWxkLGwuY2hpbGQ9bnVsbDt2IT09bnVsbDspe2lmKGE9di5hbHRlcm5hdGUsYSE9PW51bGwmJl9oKGEpPT09bnVsbCl7bC5jaGlsZD12O2JyZWFrfWE9di5zaWJsaW5nLHYuc2libGluZz1jLGM9dix2PWF9UWcobCwhMCxjLG51bGwsUyk7YnJlYWs7Y2FzZSJ0b2dldGhlciI6UWcobCwhMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0OmwubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBsLmNoaWxkfWZ1bmN0aW9uIEtpKGEsbCxjKXtpZihhIT09bnVsbCYmKGwuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKSxJYXw9bC5sYW5lcywoYyZsLmNoaWxkTGFuZXMpPT09MClpZihhIT09bnVsbCl7aWYodWMoYSxsLGMsITEpLChjJmwuY2hpbGRMYW5lcyk9PT0wKXJldHVybiBudWxsfWVsc2UgcmV0dXJuIG51bGw7aWYoYSE9PW51bGwmJmwuY2hpbGQhPT1hLmNoaWxkKXRocm93IEVycm9yKHIoMTUzKSk7aWYobC5jaGlsZCE9PW51bGwpe2ZvcihhPWwuY2hpbGQsYz1WaShhLGEucGVuZGluZ1Byb3BzKSxsLmNoaWxkPWMsYy5yZXR1cm49bDthLnNpYmxpbmchPT1udWxsOylhPWEuc2libGluZyxjPWMuc2libGluZz1WaShhLGEucGVuZGluZ1Byb3BzKSxjLnJldHVybj1sO2Muc2libGluZz1udWxsfXJldHVybiBsLmNoaWxkfWZ1bmN0aW9uIEpnKGEsbCl7cmV0dXJuKGEubGFuZXMmbCkhPT0wPyEwOihhPWEuZGVwZW5kZW5jaWVzLCEhKGEhPT1udWxsJiZsaChhKSkpfWZ1bmN0aW9uIHk5KGEsbCxjKXtzd2l0Y2gobC50YWcpe2Nhc2UgMzpUZShsLGwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLFRhKGwsdW4sYS5tZW1vaXplZFN0YXRlLmNhY2hlKSxzYygpO2JyZWFrO2Nhc2UgMjc6Y2FzZSA1OkFlKGwpO2JyZWFrO2Nhc2UgNDpUZShsLGwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6VGEobCxsLnR5cGUsbC5tZW1vaXplZFByb3BzLnZhbHVlKTticmVhaztjYXNlIDEzOnZhciBoPWwubWVtb2l6ZWRTdGF0ZTtpZihoIT09bnVsbClyZXR1cm4gaC5kZWh5ZHJhdGVkIT09bnVsbD8oTWEobCksbC5mbGFnc3w9MTI4LG51bGwpOihjJmwuY2hpbGQuY2hpbGRMYW5lcykhPT0wP3pqKGEsbCxjKTooTWEobCksYT1LaShhLGwsYyksYSE9PW51bGw/YS5zaWJsaW5nOm51bGwpO01hKGwpO2JyZWFrO2Nhc2UgMTk6dmFyIHY9KGEuZmxhZ3MmMTI4KSE9PTA7aWYoaD0oYyZsLmNoaWxkTGFuZXMpIT09MCxofHwodWMoYSxsLGMsITEpLGg9KGMmbC5jaGlsZExhbmVzKSE9PTApLHYpe2lmKGgpcmV0dXJuIEhqKGEsbCxjKTtsLmZsYWdzfD0xMjh9aWYodj1sLm1lbW9pemVkU3RhdGUsdiE9PW51bGwmJih2LnJlbmRlcmluZz1udWxsLHYudGFpbD1udWxsLHYubGFzdEVmZmVjdD1udWxsKSxvZShjbixjbi5jdXJyZW50KSxoKWJyZWFrO3JldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gbC5sYW5lcz0wLCRqKGEsbCxjKTtjYXNlIDI0OlRhKGwsdW4sYS5tZW1vaXplZFN0YXRlLmNhY2hlKX1yZXR1cm4gS2koYSxsLGMpfWZ1bmN0aW9uIEdqKGEsbCxjKXtpZihhIT09bnVsbClpZihhLm1lbW9pemVkUHJvcHMhPT1sLnBlbmRpbmdQcm9wcyl3bj0hMDtlbHNle2lmKCFKZyhhLGMpJiYobC5mbGFncyYxMjgpPT09MClyZXR1cm4gd249ITEseTkoYSxsLGMpO3duPShhLmZsYWdzJjEzMTA3MikhPT0wfWVsc2Ugd249ITEscHQmJihsLmZsYWdzJjEwNDg1NzYpIT09MCYmU0MobCxzaCxsLmluZGV4KTtzd2l0Y2gobC5sYW5lcz0wLGwudGFnKXtjYXNlIDE2OmU6e2E9bC5wZW5kaW5nUHJvcHM7dmFyIGg9bC5lbGVtZW50VHlwZSx2PWguX2luaXQ7aWYoaD12KGguX3BheWxvYWQpLGwudHlwZT1oLHR5cGVvZiBoPT0iZnVuY3Rpb24iKWxnKGgpPyhhPVVvKGgsYSksbC50YWc9MSxsPXFqKG51bGwsbCxoLGEsYykpOihsLnRhZz0wLGw9R2cobnVsbCxsLGgsYSxjKSk7ZWxzZXtpZihoIT1udWxsKXtpZih2PWguJCR0eXBlb2Ysdj09PWope2wudGFnPTExLGw9RGoobnVsbCxsLGgsYSxjKTticmVhayBlfWVsc2UgaWYodj09PU4pe2wudGFnPTE0LGw9TGoobnVsbCxsLGgsYSxjKTticmVhayBlfX10aHJvdyBsPVUoaCl8fGgsRXJyb3IocigzMDYsbCwiIikpfX1yZXR1cm4gbDtjYXNlIDA6cmV0dXJuIEdnKGEsbCxsLnR5cGUsbC5wZW5kaW5nUHJvcHMsYyk7Y2FzZSAxOnJldHVybiBoPWwudHlwZSx2PVVvKGgsbC5wZW5kaW5nUHJvcHMpLHFqKGEsbCxoLHYsYyk7Y2FzZSAzOmU6e2lmKFRlKGwsbC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksYT09PW51bGwpdGhyb3cgRXJyb3IocigzODcpKTtoPWwucGVuZGluZ1Byb3BzO3ZhciBTPWwubWVtb2l6ZWRTdGF0ZTt2PVMuZWxlbWVudCxTZyhhLGwpLHljKGwsaCxudWxsLGMpO3ZhciBNPWwubWVtb2l6ZWRTdGF0ZTtpZihoPU0uY2FjaGUsVGEobCx1bixoKSxoIT09Uy5jYWNoZSYmeWcobCxbdW5dLGMsITApLG1jKCksaD1NLmVsZW1lbnQsUy5pc0RlaHlkcmF0ZWQpaWYoUz17ZWxlbWVudDpoLGlzRGVoeWRyYXRlZDohMSxjYWNoZTpNLmNhY2hlfSxsLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1TLGwubWVtb2l6ZWRTdGF0ZT1TLGwuZmxhZ3MmMjU2KXtsPVVqKGEsbCxoLGMpO2JyZWFrIGV9ZWxzZSBpZihoIT09dil7dj1FcihFcnJvcihyKDQyNCkpLGwpLGxjKHYpLGw9VWooYSxsLGgsYyk7YnJlYWsgZX1lbHNlIGZvcihhPWwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sYS5ub2RlVHlwZT09PTk/YT1hLmJvZHk6YT1hLm5vZGVOYW1lPT09IkhUTUwiP2Eub3duZXJEb2N1bWVudC5ib2R5OmEsRnQ9WHIoYS5maXJzdENoaWxkKSx6bj1sLHB0PSEwLExvPW51bGwsZmk9ITAsYz1faihsLG51bGwsaCxjKSxsLmNoaWxkPWM7YzspYy5mbGFncz1jLmZsYWdzJi0zfDQwOTYsYz1jLnNpYmxpbmc7ZWxzZXtpZihzYygpLGg9PT12KXtsPUtpKGEsbCxjKTticmVhayBlfUVuKGEsbCxoLGMpfWw9bC5jaGlsZH1yZXR1cm4gbDtjYXNlIDI2OnJldHVybiBFaChhLGwpLGE9PT1udWxsPyhjPVhQKGwudHlwZSxudWxsLGwucGVuZGluZ1Byb3BzLG51bGwpKT9sLm1lbW9pemVkU3RhdGU9YzpwdHx8KGM9bC50eXBlLGE9bC5wZW5kaW5nUHJvcHMsaD1VaChnZS5jdXJyZW50KS5jcmVhdGVFbGVtZW50KGMpLGhbTG5dPWwsaFtRbl09YSxqbihoLGMsYSkseG4oaCksbC5zdGF0ZU5vZGU9aCk6bC5tZW1vaXplZFN0YXRlPVhQKGwudHlwZSxhLm1lbW9pemVkUHJvcHMsbC5wZW5kaW5nUHJvcHMsYS5tZW1vaXplZFN0YXRlKSxudWxsO2Nhc2UgMjc6cmV0dXJuIEFlKGwpLGE9PT1udWxsJiZwdCYmKGg9bC5zdGF0ZU5vZGU9S1AobC50eXBlLGwucGVuZGluZ1Byb3BzLGdlLmN1cnJlbnQpLHpuPWwsZmk9ITAsdj1GdCxxYShsLnR5cGUpPyhOYj12LEZ0PVhyKGguZmlyc3RDaGlsZCkpOkZ0PXYpLEVuKGEsbCxsLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxFaChhLGwpLGE9PT1udWxsJiYobC5mbGFnc3w9NDE5NDMwNCksbC5jaGlsZDtjYXNlIDU6cmV0dXJuIGE9PT1udWxsJiZwdCYmKCh2PWg9RnQpJiYoaD1GOShoLGwudHlwZSxsLnBlbmRpbmdQcm9wcyxmaSksaCE9PW51bGw/KGwuc3RhdGVOb2RlPWgsem49bCxGdD1YcihoLmZpcnN0Q2hpbGQpLGZpPSExLHY9ITApOnY9ITEpLHZ8fElvKGwpKSxBZShsKSx2PWwudHlwZSxTPWwucGVuZGluZ1Byb3BzLE09YSE9PW51bGw/YS5tZW1vaXplZFByb3BzOm51bGwsaD1TLmNoaWxkcmVuLGpiKHYsUyk/aD1udWxsOk0hPT1udWxsJiZqYih2LE0pJiYobC5mbGFnc3w9MzIpLGwubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJih2PUNnKGEsbCxsOSxudWxsLG51bGwsYyksJGMuX2N1cnJlbnRWYWx1ZT12KSxFaChhLGwpLEVuKGEsbCxoLGMpLGwuY2hpbGQ7Y2FzZSA2OnJldHVybiBhPT09bnVsbCYmcHQmJigoYT1jPUZ0KSYmKGM9SDkoYyxsLnBlbmRpbmdQcm9wcyxmaSksYyE9PW51bGw/KGwuc3RhdGVOb2RlPWMsem49bCxGdD1udWxsLGE9ITApOmE9ITEpLGF8fElvKGwpKSxudWxsO2Nhc2UgMTM6cmV0dXJuIHpqKGEsbCxjKTtjYXNlIDQ6cmV0dXJuIFRlKGwsbC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksaD1sLnBlbmRpbmdQcm9wcyxhPT09bnVsbD9sLmNoaWxkPWlsKGwsbnVsbCxoLGMpOkVuKGEsbCxoLGMpLGwuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gRGooYSxsLGwudHlwZSxsLnBlbmRpbmdQcm9wcyxjKTtjYXNlIDc6cmV0dXJuIEVuKGEsbCxsLnBlbmRpbmdQcm9wcyxjKSxsLmNoaWxkO2Nhc2UgODpyZXR1cm4gRW4oYSxsLGwucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGwuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gRW4oYSxsLGwucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGwuY2hpbGQ7Y2FzZSAxMDpyZXR1cm4gaD1sLnBlbmRpbmdQcm9wcyxUYShsLGwudHlwZSxoLnZhbHVlKSxFbihhLGwsaC5jaGlsZHJlbixjKSxsLmNoaWxkO2Nhc2UgOTpyZXR1cm4gdj1sLnR5cGUuX2NvbnRleHQsaD1sLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixCbyhsKSx2PUluKHYpLGg9aCh2KSxsLmZsYWdzfD0xLEVuKGEsbCxoLGMpLGwuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gTGooYSxsLGwudHlwZSxsLnBlbmRpbmdQcm9wcyxjKTtjYXNlIDE1OnJldHVybiBJaihhLGwsbC50eXBlLGwucGVuZGluZ1Byb3BzLGMpO2Nhc2UgMTk6cmV0dXJuIEhqKGEsbCxjKTtjYXNlIDMxOnJldHVybiBoPWwucGVuZGluZ1Byb3BzLGM9bC5tb2RlLGg9e21vZGU6aC5tb2RlLGNoaWxkcmVuOmguY2hpbGRyZW59LGE9PT1udWxsPyhjPUNoKGgsYyksYy5yZWY9bC5yZWYsbC5jaGlsZD1jLGMucmV0dXJuPWwsbD1jKTooYz1WaShhLmNoaWxkLGgpLGMucmVmPWwucmVmLGwuY2hpbGQ9YyxjLnJldHVybj1sLGw9YyksbDtjYXNlIDIyOnJldHVybiAkaihhLGwsYyk7Y2FzZSAyNDpyZXR1cm4gQm8obCksaD1Jbih1biksYT09PW51bGw/KHY9YmcoKSx2PT09bnVsbCYmKHY9UnQsUz12ZygpLHYucG9vbGVkQ2FjaGU9UyxTLnJlZkNvdW50KyssUyE9PW51bGwmJih2LnBvb2xlZENhY2hlTGFuZXN8PWMpLHY9UyksbC5tZW1vaXplZFN0YXRlPXtwYXJlbnQ6aCxjYWNoZTp2fSx3ZyhsKSxUYShsLHVuLHYpKTooKGEubGFuZXMmYykhPT0wJiYoU2coYSxsKSx5YyhsLG51bGwsbnVsbCxjKSxtYygpKSx2PWEubWVtb2l6ZWRTdGF0ZSxTPWwubWVtb2l6ZWRTdGF0ZSx2LnBhcmVudCE9PWg/KHY9e3BhcmVudDpoLGNhY2hlOmh9LGwubWVtb2l6ZWRTdGF0ZT12LGwubGFuZXM9PT0wJiYobC5tZW1vaXplZFN0YXRlPWwudXBkYXRlUXVldWUuYmFzZVN0YXRlPXYpLFRhKGwsdW4saCkpOihoPVMuY2FjaGUsVGEobCx1bixoKSxoIT09di5jYWNoZSYmeWcobCxbdW5dLGMsITApKSksRW4oYSxsLGwucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGwuY2hpbGQ7Y2FzZSAyOTp0aHJvdyBsLnBlbmRpbmdQcm9wc310aHJvdyBFcnJvcihyKDE1NixsLnRhZykpfWZ1bmN0aW9uIFdpKGEpe2EuZmxhZ3N8PTR9ZnVuY3Rpb24gS2ooYSxsKXtpZihsLnR5cGUhPT0ic3R5bGVzaGVldCJ8fChsLnN0YXRlLmxvYWRpbmcmNCkhPT0wKWEuZmxhZ3MmPS0xNjc3NzIxNztlbHNlIGlmKGEuZmxhZ3N8PTE2Nzc3MjE2LCF0TShsKSl7aWYobD1Nci5jdXJyZW50LGwhPT1udWxsJiYoKHN0JjQxOTQwNDgpPT09c3Q/ZGkhPT1udWxsOihzdCY2MjkxNDU2MCkhPT1zdCYmKHN0JjUzNjg3MDkxMik9PT0wfHxsIT09ZGkpKXRocm93IGhjPXhnLFBDO2EuZmxhZ3N8PTgxOTJ9fWZ1bmN0aW9uIGpoKGEsbCl7bCE9PW51bGwmJihhLmZsYWdzfD00KSxhLmZsYWdzJjE2Mzg0JiYobD1hLnRhZyE9PTIyP0V0KCk6NTM2ODcwOTEyLGEubGFuZXN8PWwsbGx8PWwpfWZ1bmN0aW9uIEFjKGEsbCl7aWYoIXB0KXN3aXRjaChhLnRhaWxNb2RlKXtjYXNlImhpZGRlbiI6bD1hLnRhaWw7Zm9yKHZhciBjPW51bGw7bCE9PW51bGw7KWwuYWx0ZXJuYXRlIT09bnVsbCYmKGM9bCksbD1sLnNpYmxpbmc7Yz09PW51bGw/YS50YWlsPW51bGw6Yy5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSJjb2xsYXBzZWQiOmM9YS50YWlsO2Zvcih2YXIgaD1udWxsO2MhPT1udWxsOyljLmFsdGVybmF0ZSE9PW51bGwmJihoPWMpLGM9Yy5zaWJsaW5nO2g9PT1udWxsP2x8fGEudGFpbD09PW51bGw/YS50YWlsPW51bGw6YS50YWlsLnNpYmxpbmc9bnVsbDpoLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24genQoYSl7dmFyIGw9YS5hbHRlcm5hdGUhPT1udWxsJiZhLmFsdGVybmF0ZS5jaGlsZD09PWEuY2hpbGQsYz0wLGg9MDtpZihsKWZvcih2YXIgdj1hLmNoaWxkO3YhPT1udWxsOyljfD12LmxhbmVzfHYuY2hpbGRMYW5lcyxofD12LnN1YnRyZWVGbGFncyY2NTAxMTcxMixofD12LmZsYWdzJjY1MDExNzEyLHYucmV0dXJuPWEsdj12LnNpYmxpbmc7ZWxzZSBmb3Iodj1hLmNoaWxkO3YhPT1udWxsOyljfD12LmxhbmVzfHYuY2hpbGRMYW5lcyxofD12LnN1YnRyZWVGbGFncyxofD12LmZsYWdzLHYucmV0dXJuPWEsdj12LnNpYmxpbmc7cmV0dXJuIGEuc3VidHJlZUZsYWdzfD1oLGEuY2hpbGRMYW5lcz1jLGx9ZnVuY3Rpb24gdjkoYSxsLGMpe3ZhciBoPWwucGVuZGluZ1Byb3BzO3N3aXRjaChkZyhsKSxsLnRhZyl7Y2FzZSAzMTpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiB6dChsKSxudWxsO2Nhc2UgMTpyZXR1cm4genQobCksbnVsbDtjYXNlIDM6cmV0dXJuIGM9bC5zdGF0ZU5vZGUsaD1udWxsLGEhPT1udWxsJiYoaD1hLm1lbW9pemVkU3RhdGUuY2FjaGUpLGwubWVtb2l6ZWRTdGF0ZS5jYWNoZSE9PWgmJihsLmZsYWdzfD0yMDQ4KSxGaSh1biksY2UoKSxjLnBlbmRpbmdDb250ZXh0JiYoYy5jb250ZXh0PWMucGVuZGluZ0NvbnRleHQsYy5wZW5kaW5nQ29udGV4dD1udWxsKSwoYT09PW51bGx8fGEuY2hpbGQ9PT1udWxsKSYmKG9jKGwpP1dpKGwpOmE9PT1udWxsfHxhLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYobC5mbGFncyYyNTYpPT09MHx8KGwuZmxhZ3N8PTEwMjQsT0MoKSkpLHp0KGwpLG51bGw7Y2FzZSAyNjpyZXR1cm4gYz1sLm1lbW9pemVkU3RhdGUsYT09PW51bGw/KFdpKGwpLGMhPT1udWxsPyh6dChsKSxLaihsLGMpKTooenQobCksbC5mbGFncyY9LTE2Nzc3MjE3KSk6Yz9jIT09YS5tZW1vaXplZFN0YXRlPyhXaShsKSx6dChsKSxLaihsLGMpKTooenQobCksbC5mbGFncyY9LTE2Nzc3MjE3KTooYS5tZW1vaXplZFByb3BzIT09aCYmV2kobCksenQobCksbC5mbGFncyY9LTE2Nzc3MjE3KSxudWxsO2Nhc2UgMjc6U2UobCksYz1nZS5jdXJyZW50O3ZhciB2PWwudHlwZTtpZihhIT09bnVsbCYmbC5zdGF0ZU5vZGUhPW51bGwpYS5tZW1vaXplZFByb3BzIT09aCYmV2kobCk7ZWxzZXtpZighaCl7aWYobC5zdGF0ZU5vZGU9PT1udWxsKXRocm93IEVycm9yKHIoMTY2KSk7cmV0dXJuIHp0KGwpLG51bGx9YT1tZS5jdXJyZW50LG9jKGwpP0FDKGwpOihhPUtQKHYsaCxjKSxsLnN0YXRlTm9kZT1hLFdpKGwpKX1yZXR1cm4genQobCksbnVsbDtjYXNlIDU6aWYoU2UobCksYz1sLnR5cGUsYSE9PW51bGwmJmwuc3RhdGVOb2RlIT1udWxsKWEubWVtb2l6ZWRQcm9wcyE9PWgmJldpKGwpO2Vsc2V7aWYoIWgpe2lmKGwuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihyKDE2NikpO3JldHVybiB6dChsKSxudWxsfWlmKGE9bWUuY3VycmVudCxvYyhsKSlBQyhsKTtlbHNle3N3aXRjaCh2PVVoKGdlLmN1cnJlbnQpLGEpe2Nhc2UgMTphPXYuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsYyk7YnJlYWs7Y2FzZSAyOmE9di5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLGMpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKGMpe2Nhc2Uic3ZnIjphPXYuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsYyk7YnJlYWs7Y2FzZSJtYXRoIjphPXYuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixjKTticmVhaztjYXNlInNjcmlwdCI6YT12LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGEuaW5uZXJIVE1MPSI8c2NyaXB0PjxcL3NjcmlwdD4iLGE9YS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2JyZWFrO2Nhc2Uic2VsZWN0IjphPXR5cGVvZiBoLmlzPT0ic3RyaW5nIj92LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIse2lzOmguaXN9KTp2LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGgubXVsdGlwbGU/YS5tdWx0aXBsZT0hMDpoLnNpemUmJihhLnNpemU9aC5zaXplKTticmVhaztkZWZhdWx0OmE9dHlwZW9mIGguaXM9PSJzdHJpbmciP3YuY3JlYXRlRWxlbWVudChjLHtpczpoLmlzfSk6di5jcmVhdGVFbGVtZW50KGMpfX1hW0xuXT1sLGFbUW5dPWg7ZTpmb3Iodj1sLmNoaWxkO3YhPT1udWxsOyl7aWYodi50YWc9PT01fHx2LnRhZz09PTYpYS5hcHBlbmRDaGlsZCh2LnN0YXRlTm9kZSk7ZWxzZSBpZih2LnRhZyE9PTQmJnYudGFnIT09MjcmJnYuY2hpbGQhPT1udWxsKXt2LmNoaWxkLnJldHVybj12LHY9di5jaGlsZDtjb250aW51ZX1pZih2PT09bClicmVhayBlO2Zvcig7di5zaWJsaW5nPT09bnVsbDspe2lmKHYucmV0dXJuPT09bnVsbHx8di5yZXR1cm49PT1sKWJyZWFrIGU7dj12LnJldHVybn12LnNpYmxpbmcucmV0dXJuPXYucmV0dXJuLHY9di5zaWJsaW5nfWwuc3RhdGVOb2RlPWE7ZTpzd2l0Y2goam4oYSxjLGgpLGMpe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6YT0hIWguYXV0b0ZvY3VzO2JyZWFrIGU7Y2FzZSJpbWciOmE9ITA7YnJlYWsgZTtkZWZhdWx0OmE9ITF9YSYmV2kobCl9fXJldHVybiB6dChsKSxsLmZsYWdzJj0tMTY3NzcyMTcsbnVsbDtjYXNlIDY6aWYoYSYmbC5zdGF0ZU5vZGUhPW51bGwpYS5tZW1vaXplZFByb3BzIT09aCYmV2kobCk7ZWxzZXtpZih0eXBlb2YgaCE9InN0cmluZyImJmwuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihyKDE2NikpO2lmKGE9Z2UuY3VycmVudCxvYyhsKSl7aWYoYT1sLnN0YXRlTm9kZSxjPWwubWVtb2l6ZWRQcm9wcyxoPW51bGwsdj16bix2IT09bnVsbClzd2l0Y2godi50YWcpe2Nhc2UgMjc6Y2FzZSA1Omg9di5tZW1vaXplZFByb3BzfWFbTG5dPWwsYT0hIShhLm5vZGVWYWx1ZT09PWN8fGghPT1udWxsJiZoLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZz09PSEwfHxWUChhLm5vZGVWYWx1ZSxjKSksYXx8SW8obCl9ZWxzZSBhPVVoKGEpLmNyZWF0ZVRleHROb2RlKGgpLGFbTG5dPWwsbC5zdGF0ZU5vZGU9YX1yZXR1cm4genQobCksbnVsbDtjYXNlIDEzOmlmKGg9bC5tZW1vaXplZFN0YXRlLGE9PT1udWxsfHxhLm1lbW9pemVkU3RhdGUhPT1udWxsJiZhLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCE9PW51bGwpe2lmKHY9b2MobCksaCE9PW51bGwmJmguZGVoeWRyYXRlZCE9PW51bGwpe2lmKGE9PT1udWxsKXtpZighdil0aHJvdyBFcnJvcihyKDMxOCkpO2lmKHY9bC5tZW1vaXplZFN0YXRlLHY9diE9PW51bGw/di5kZWh5ZHJhdGVkOm51bGwsIXYpdGhyb3cgRXJyb3IocigzMTcpKTt2W0xuXT1sfWVsc2Ugc2MoKSwobC5mbGFncyYxMjgpPT09MCYmKGwubWVtb2l6ZWRTdGF0ZT1udWxsKSxsLmZsYWdzfD00O3p0KGwpLHY9ITF9ZWxzZSB2PU9DKCksYSE9PW51bGwmJmEubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJihhLm1lbW9pemVkU3RhdGUuaHlkcmF0aW9uRXJyb3JzPXYpLHY9ITA7aWYoIXYpcmV0dXJuIGwuZmxhZ3MmMjU2PyhHaShsKSxsKTooR2kobCksbnVsbCl9aWYoR2kobCksKGwuZmxhZ3MmMTI4KSE9PTApcmV0dXJuIGwubGFuZXM9YyxsO2lmKGM9aCE9PW51bGwsYT1hIT09bnVsbCYmYS5tZW1vaXplZFN0YXRlIT09bnVsbCxjKXtoPWwuY2hpbGQsdj1udWxsLGguYWx0ZXJuYXRlIT09bnVsbCYmaC5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJmguYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sIT09bnVsbCYmKHY9aC5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCk7dmFyIFM9bnVsbDtoLm1lbW9pemVkU3RhdGUhPT1udWxsJiZoLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sIT09bnVsbCYmKFM9aC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxTIT09diYmKGguZmxhZ3N8PTIwNDgpfXJldHVybiBjIT09YSYmYyYmKGwuY2hpbGQuZmxhZ3N8PTgxOTIpLGpoKGwsbC51cGRhdGVRdWV1ZSksenQobCksbnVsbDtjYXNlIDQ6cmV0dXJuIGNlKCksYT09PW51bGwmJl9iKGwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHp0KGwpLG51bGw7Y2FzZSAxMDpyZXR1cm4gRmkobC50eXBlKSx6dChsKSxudWxsO2Nhc2UgMTk6aWYodGUoY24pLHY9bC5tZW1vaXplZFN0YXRlLHY9PT1udWxsKXJldHVybiB6dChsKSxudWxsO2lmKGg9KGwuZmxhZ3MmMTI4KSE9PTAsUz12LnJlbmRlcmluZyxTPT09bnVsbClpZihoKUFjKHYsITEpO2Vsc2V7aWYoSHQhPT0wfHxhIT09bnVsbCYmKGEuZmxhZ3MmMTI4KSE9PTApZm9yKGE9bC5jaGlsZDthIT09bnVsbDspe2lmKFM9X2goYSksUyE9PW51bGwpe2ZvcihsLmZsYWdzfD0xMjgsQWModiwhMSksYT1TLnVwZGF0ZVF1ZXVlLGwudXBkYXRlUXVldWU9YSxqaChsLGEpLGwuc3VidHJlZUZsYWdzPTAsYT1jLGM9bC5jaGlsZDtjIT09bnVsbDspd0MoYyxhKSxjPWMuc2libGluZztyZXR1cm4gb2UoY24sY24uY3VycmVudCYxfDIpLGwuY2hpbGR9YT1hLnNpYmxpbmd9di50YWlsIT09bnVsbCYmbHQoKT5SaCYmKGwuZmxhZ3N8PTEyOCxoPSEwLEFjKHYsITEpLGwubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighaClpZihhPV9oKFMpLGEhPT1udWxsKXtpZihsLmZsYWdzfD0xMjgsaD0hMCxhPWEudXBkYXRlUXVldWUsbC51cGRhdGVRdWV1ZT1hLGpoKGwsYSksQWModiwhMCksdi50YWlsPT09bnVsbCYmdi50YWlsTW9kZT09PSJoaWRkZW4iJiYhUy5hbHRlcm5hdGUmJiFwdClyZXR1cm4genQobCksbnVsbH1lbHNlIDIqbHQoKS12LnJlbmRlcmluZ1N0YXJ0VGltZT5SaCYmYyE9PTUzNjg3MDkxMiYmKGwuZmxhZ3N8PTEyOCxoPSEwLEFjKHYsITEpLGwubGFuZXM9NDE5NDMwNCk7di5pc0JhY2t3YXJkcz8oUy5zaWJsaW5nPWwuY2hpbGQsbC5jaGlsZD1TKTooYT12Lmxhc3QsYSE9PW51bGw/YS5zaWJsaW5nPVM6bC5jaGlsZD1TLHYubGFzdD1TKX1yZXR1cm4gdi50YWlsIT09bnVsbD8obD12LnRhaWwsdi5yZW5kZXJpbmc9bCx2LnRhaWw9bC5zaWJsaW5nLHYucmVuZGVyaW5nU3RhcnRUaW1lPWx0KCksbC5zaWJsaW5nPW51bGwsYT1jbi5jdXJyZW50LG9lKGNuLGg/YSYxfDI6YSYxKSxsKTooenQobCksbnVsbCk7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBHaShsKSxUZygpLGg9bC5tZW1vaXplZFN0YXRlIT09bnVsbCxhIT09bnVsbD9hLm1lbW9pemVkU3RhdGUhPT1udWxsIT09aCYmKGwuZmxhZ3N8PTgxOTIpOmgmJihsLmZsYWdzfD04MTkyKSxoPyhjJjUzNjg3MDkxMikhPT0wJiYobC5mbGFncyYxMjgpPT09MCYmKHp0KGwpLGwuc3VidHJlZUZsYWdzJjYmJihsLmZsYWdzfD04MTkyKSk6enQobCksYz1sLnVwZGF0ZVF1ZXVlLGMhPT1udWxsJiZqaChsLGMucmV0cnlRdWV1ZSksYz1udWxsLGEhPT1udWxsJiZhLm1lbW9pemVkU3RhdGUhPT1udWxsJiZhLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sIT09bnVsbCYmKGM9YS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxoPW51bGwsbC5tZW1vaXplZFN0YXRlIT09bnVsbCYmbC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCE9PW51bGwmJihoPWwubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksaCE9PWMmJihsLmZsYWdzfD0yMDQ4KSxhIT09bnVsbCYmdGUoVm8pLG51bGw7Y2FzZSAyNDpyZXR1cm4gYz1udWxsLGEhPT1udWxsJiYoYz1hLm1lbW9pemVkU3RhdGUuY2FjaGUpLGwubWVtb2l6ZWRTdGF0ZS5jYWNoZSE9PWMmJihsLmZsYWdzfD0yMDQ4KSxGaSh1biksenQobCksbnVsbDtjYXNlIDI1OnJldHVybiBudWxsO2Nhc2UgMzA6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IocigxNTYsbC50YWcpKX1mdW5jdGlvbiBnOShhLGwpe3N3aXRjaChkZyhsKSxsLnRhZyl7Y2FzZSAxOnJldHVybiBhPWwuZmxhZ3MsYSY2NTUzNj8obC5mbGFncz1hJi02NTUzN3wxMjgsbCk6bnVsbDtjYXNlIDM6cmV0dXJuIEZpKHVuKSxjZSgpLGE9bC5mbGFncywoYSY2NTUzNikhPT0wJiYoYSYxMjgpPT09MD8obC5mbGFncz1hJi02NTUzN3wxMjgsbCk6bnVsbDtjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OnJldHVybiBTZShsKSxudWxsO2Nhc2UgMTM6aWYoR2kobCksYT1sLm1lbW9pemVkU3RhdGUsYSE9PW51bGwmJmEuZGVoeWRyYXRlZCE9PW51bGwpe2lmKGwuYWx0ZXJuYXRlPT09bnVsbCl0aHJvdyBFcnJvcihyKDM0MCkpO3NjKCl9cmV0dXJuIGE9bC5mbGFncyxhJjY1NTM2PyhsLmZsYWdzPWEmLTY1NTM3fDEyOCxsKTpudWxsO2Nhc2UgMTk6cmV0dXJuIHRlKGNuKSxudWxsO2Nhc2UgNDpyZXR1cm4gY2UoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIEZpKGwudHlwZSksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIEdpKGwpLFRnKCksYSE9PW51bGwmJnRlKFZvKSxhPWwuZmxhZ3MsYSY2NTUzNj8obC5mbGFncz1hJi02NTUzN3wxMjgsbCk6bnVsbDtjYXNlIDI0OnJldHVybiBGaSh1biksbnVsbDtjYXNlIDI1OnJldHVybiBudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFdqKGEsbCl7c3dpdGNoKGRnKGwpLGwudGFnKXtjYXNlIDM6RmkodW4pLGNlKCk7YnJlYWs7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTpTZShsKTticmVhaztjYXNlIDQ6Y2UoKTticmVhaztjYXNlIDEzOkdpKGwpO2JyZWFrO2Nhc2UgMTk6dGUoY24pO2JyZWFrO2Nhc2UgMTA6RmkobC50eXBlKTticmVhaztjYXNlIDIyOmNhc2UgMjM6R2kobCksVGcoKSxhIT09bnVsbCYmdGUoVm8pO2JyZWFrO2Nhc2UgMjQ6RmkodW4pfX1mdW5jdGlvbiBfYyhhLGwpe3RyeXt2YXIgYz1sLnVwZGF0ZVF1ZXVlLGg9YyE9PW51bGw/Yy5sYXN0RWZmZWN0Om51bGw7aWYoaCE9PW51bGwpe3ZhciB2PWgubmV4dDtjPXY7ZG97aWYoKGMudGFnJmEpPT09YSl7aD12b2lkIDA7dmFyIFM9Yy5jcmVhdGUsTT1jLmluc3Q7aD1TKCksTS5kZXN0cm95PWh9Yz1jLm5leHR9d2hpbGUoYyE9PXYpfX1jYXRjaChEKXtDdChsLGwucmV0dXJuLEQpfX1mdW5jdGlvbiBOYShhLGwsYyl7dHJ5e3ZhciBoPWwudXBkYXRlUXVldWUsdj1oIT09bnVsbD9oLmxhc3RFZmZlY3Q6bnVsbDtpZih2IT09bnVsbCl7dmFyIFM9di5uZXh0O2g9Uztkb3tpZigoaC50YWcmYSk9PT1hKXt2YXIgTT1oLmluc3QsRD1NLmRlc3Ryb3k7aWYoRCE9PXZvaWQgMCl7TS5kZXN0cm95PXZvaWQgMCx2PWw7dmFyIEc9YyxyZT1EO3RyeXtyZSgpfWNhdGNoKHVlKXtDdCh2LEcsdWUpfX19aD1oLm5leHR9d2hpbGUoaCE9PVMpfX1jYXRjaCh1ZSl7Q3QobCxsLnJldHVybix1ZSl9fWZ1bmN0aW9uIFlqKGEpe3ZhciBsPWEudXBkYXRlUXVldWU7aWYobCE9PW51bGwpe3ZhciBjPWEuc3RhdGVOb2RlO3RyeXtMQyhsLGMpfWNhdGNoKGgpe0N0KGEsYS5yZXR1cm4saCl9fX1mdW5jdGlvbiBYaihhLGwsYyl7Yy5wcm9wcz1VbyhhLnR5cGUsYS5tZW1vaXplZFByb3BzKSxjLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTt0cnl7Yy5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGgpe0N0KGEsbCxoKX19ZnVuY3Rpb24gT2MoYSxsKXt0cnl7dmFyIGM9YS5yZWY7aWYoYyE9PW51bGwpe3N3aXRjaChhLnRhZyl7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTp2YXIgaD1hLnN0YXRlTm9kZTticmVhaztjYXNlIDMwOmg9YS5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDpoPWEuc3RhdGVOb2RlfXR5cGVvZiBjPT0iZnVuY3Rpb24iP2EucmVmQ2xlYW51cD1jKGgpOmMuY3VycmVudD1ofX1jYXRjaCh2KXtDdChhLGwsdil9fWZ1bmN0aW9uIGhpKGEsbCl7dmFyIGM9YS5yZWYsaD1hLnJlZkNsZWFudXA7aWYoYyE9PW51bGwpaWYodHlwZW9mIGg9PSJmdW5jdGlvbiIpdHJ5e2goKX1jYXRjaCh2KXtDdChhLGwsdil9ZmluYWxseXthLnJlZkNsZWFudXA9bnVsbCxhPWEuYWx0ZXJuYXRlLGEhPW51bGwmJihhLnJlZkNsZWFudXA9bnVsbCl9ZWxzZSBpZih0eXBlb2YgYz09ImZ1bmN0aW9uIil0cnl7YyhudWxsKX1jYXRjaCh2KXtDdChhLGwsdil9ZWxzZSBjLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBaaihhKXt2YXIgbD1hLnR5cGUsYz1hLm1lbW9pemVkUHJvcHMsaD1hLnN0YXRlTm9kZTt0cnl7ZTpzd2l0Y2gobCl7Y2FzZSJidXR0b24iOmNhc2UiaW5wdXQiOmNhc2Uic2VsZWN0IjpjYXNlInRleHRhcmVhIjpjLmF1dG9Gb2N1cyYmaC5mb2N1cygpO2JyZWFrIGU7Y2FzZSJpbWciOmMuc3JjP2guc3JjPWMuc3JjOmMuc3JjU2V0JiYoaC5zcmNzZXQ9Yy5zcmNTZXQpfX1jYXRjaCh2KXtDdChhLGEucmV0dXJuLHYpfX1mdW5jdGlvbiBlYihhLGwsYyl7dHJ5e3ZhciBoPWEuc3RhdGVOb2RlO0I5KGgsYS50eXBlLGMsbCksaFtRbl09bH1jYXRjaCh2KXtDdChhLGEucmV0dXJuLHYpfX1mdW5jdGlvbiBRaihhKXtyZXR1cm4gYS50YWc9PT01fHxhLnRhZz09PTN8fGEudGFnPT09MjZ8fGEudGFnPT09MjcmJnFhKGEudHlwZSl8fGEudGFnPT09NH1mdW5jdGlvbiB0YihhKXtlOmZvcig7Oyl7Zm9yKDthLnNpYmxpbmc9PT1udWxsOyl7aWYoYS5yZXR1cm49PT1udWxsfHxRaihhLnJldHVybikpcmV0dXJuIG51bGw7YT1hLnJldHVybn1mb3IoYS5zaWJsaW5nLnJldHVybj1hLnJldHVybixhPWEuc2libGluZzthLnRhZyE9PTUmJmEudGFnIT09NiYmYS50YWchPT0xODspe2lmKGEudGFnPT09MjcmJnFhKGEudHlwZSl8fGEuZmxhZ3MmMnx8YS5jaGlsZD09PW51bGx8fGEudGFnPT09NCljb250aW51ZSBlO2EuY2hpbGQucmV0dXJuPWEsYT1hLmNoaWxkfWlmKCEoYS5mbGFncyYyKSlyZXR1cm4gYS5zdGF0ZU5vZGV9fWZ1bmN0aW9uIG5iKGEsbCxjKXt2YXIgaD1hLnRhZztpZihoPT09NXx8aD09PTYpYT1hLnN0YXRlTm9kZSxsPyhjLm5vZGVUeXBlPT09OT9jLmJvZHk6Yy5ub2RlTmFtZT09PSJIVE1MIj9jLm93bmVyRG9jdW1lbnQuYm9keTpjKS5pbnNlcnRCZWZvcmUoYSxsKToobD1jLm5vZGVUeXBlPT09OT9jLmJvZHk6Yy5ub2RlTmFtZT09PSJIVE1MIj9jLm93bmVyRG9jdW1lbnQuYm9keTpjLGwuYXBwZW5kQ2hpbGQoYSksYz1jLl9yZWFjdFJvb3RDb250YWluZXIsYyE9bnVsbHx8bC5vbmNsaWNrIT09bnVsbHx8KGwub25jbGljaz1xaCkpO2Vsc2UgaWYoaCE9PTQmJihoPT09MjcmJnFhKGEudHlwZSkmJihjPWEuc3RhdGVOb2RlLGw9bnVsbCksYT1hLmNoaWxkLGEhPT1udWxsKSlmb3IobmIoYSxsLGMpLGE9YS5zaWJsaW5nO2EhPT1udWxsOyluYihhLGwsYyksYT1hLnNpYmxpbmd9ZnVuY3Rpb24gUGgoYSxsLGMpe3ZhciBoPWEudGFnO2lmKGg9PT01fHxoPT09NilhPWEuc3RhdGVOb2RlLGw/Yy5pbnNlcnRCZWZvcmUoYSxsKTpjLmFwcGVuZENoaWxkKGEpO2Vsc2UgaWYoaCE9PTQmJihoPT09MjcmJnFhKGEudHlwZSkmJihjPWEuc3RhdGVOb2RlKSxhPWEuY2hpbGQsYSE9PW51bGwpKWZvcihQaChhLGwsYyksYT1hLnNpYmxpbmc7YSE9PW51bGw7KVBoKGEsbCxjKSxhPWEuc2libGluZ31mdW5jdGlvbiBKaihhKXt2YXIgbD1hLnN0YXRlTm9kZSxjPWEubWVtb2l6ZWRQcm9wczt0cnl7Zm9yKHZhciBoPWEudHlwZSx2PWwuYXR0cmlidXRlczt2Lmxlbmd0aDspbC5yZW1vdmVBdHRyaWJ1dGVOb2RlKHZbMF0pO2puKGwsaCxjKSxsW0xuXT1hLGxbUW5dPWN9Y2F0Y2goUyl7Q3QoYSxhLnJldHVybixTKX19dmFyIFlpPSExLFh0PSExLHJiPSExLGVQPXR5cGVvZiBXZWFrU2V0PT0iZnVuY3Rpb24iP1dlYWtTZXQ6U2V0LFNuPW51bGw7ZnVuY3Rpb24gYjkoYSxsKXtpZihhPWEuY29udGFpbmVySW5mbyxFYj1XaCxhPWZDKGEpLHRnKGEpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gYSl2YXIgYz17c3RhcnQ6YS5zZWxlY3Rpb25TdGFydCxlbmQ6YS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7Yz0oYz1hLm93bmVyRG9jdW1lbnQpJiZjLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGg9Yy5nZXRTZWxlY3Rpb24mJmMuZ2V0U2VsZWN0aW9uKCk7aWYoaCYmaC5yYW5nZUNvdW50IT09MCl7Yz1oLmFuY2hvck5vZGU7dmFyIHY9aC5hbmNob3JPZmZzZXQsUz1oLmZvY3VzTm9kZTtoPWguZm9jdXNPZmZzZXQ7dHJ5e2Mubm9kZVR5cGUsUy5ub2RlVHlwZX1jYXRjaHtjPW51bGw7YnJlYWsgZX12YXIgTT0wLEQ9LTEsRz0tMSxyZT0wLHVlPTAsZGU9YSxpZT1udWxsO3Q6Zm9yKDs7KXtmb3IodmFyIGFlO2RlIT09Y3x8diE9PTAmJmRlLm5vZGVUeXBlIT09M3x8KEQ9TSt2KSxkZSE9PVN8fGghPT0wJiZkZS5ub2RlVHlwZSE9PTN8fChHPU0raCksZGUubm9kZVR5cGU9PT0zJiYoTSs9ZGUubm9kZVZhbHVlLmxlbmd0aCksKGFlPWRlLmZpcnN0Q2hpbGQpIT09bnVsbDspaWU9ZGUsZGU9YWU7Zm9yKDs7KXtpZihkZT09PWEpYnJlYWsgdDtpZihpZT09PWMmJisrcmU9PT12JiYoRD1NKSxpZT09PVMmJisrdWU9PT1oJiYoRz1NKSwoYWU9ZGUubmV4dFNpYmxpbmcpIT09bnVsbClicmVhaztkZT1pZSxpZT1kZS5wYXJlbnROb2RlfWRlPWFlfWM9RD09PS0xfHxHPT09LTE/bnVsbDp7c3RhcnQ6RCxlbmQ6R319ZWxzZSBjPW51bGx9Yz1jfHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBjPW51bGw7Zm9yKENiPXtmb2N1c2VkRWxlbTphLHNlbGVjdGlvblJhbmdlOmN9LFdoPSExLFNuPWw7U24hPT1udWxsOylpZihsPVNuLGE9bC5jaGlsZCwobC5zdWJ0cmVlRmxhZ3MmMTAyNCkhPT0wJiZhIT09bnVsbClhLnJldHVybj1sLFNuPWE7ZWxzZSBmb3IoO1NuIT09bnVsbDspe3N3aXRjaChsPVNuLFM9bC5hbHRlcm5hdGUsYT1sLmZsYWdzLGwudGFnKXtjYXNlIDA6YnJlYWs7Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO2Nhc2UgMTppZigoYSYxMDI0KSE9PTAmJlMhPT1udWxsKXthPXZvaWQgMCxjPWwsdj1TLm1lbW9pemVkUHJvcHMsUz1TLm1lbW9pemVkU3RhdGUsaD1jLnN0YXRlTm9kZTt0cnl7dmFyIEZlPVVvKGMudHlwZSx2LGMuZWxlbWVudFR5cGU9PT1jLnR5cGUpO2E9aC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShGZSxTKSxoLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPWF9Y2F0Y2goVmUpe0N0KGMsYy5yZXR1cm4sVmUpfX1icmVhaztjYXNlIDM6aWYoKGEmMTAyNCkhPT0wKXtpZihhPWwuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sYz1hLm5vZGVUeXBlLGM9PT05KU1iKGEpO2Vsc2UgaWYoYz09PTEpc3dpdGNoKGEubm9kZU5hbWUpe2Nhc2UiSEVBRCI6Y2FzZSJIVE1MIjpjYXNlIkJPRFkiOk1iKGEpO2JyZWFrO2RlZmF1bHQ6YS50ZXh0Q29udGVudD0iIn19YnJlYWs7Y2FzZSA1OmNhc2UgMjY6Y2FzZSAyNzpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDppZigoYSYxMDI0KSE9PTApdGhyb3cgRXJyb3IocigxNjMpKX1pZihhPWwuc2libGluZyxhIT09bnVsbCl7YS5yZXR1cm49bC5yZXR1cm4sU249YTticmVha31Tbj1sLnJldHVybn19ZnVuY3Rpb24gdFAoYSxsLGMpe3ZhciBoPWMuZmxhZ3M7c3dpdGNoKGMudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmthKGEsYyksaCY0JiZfYyg1LGMpO2JyZWFrO2Nhc2UgMTppZihrYShhLGMpLGgmNClpZihhPWMuc3RhdGVOb2RlLGw9PT1udWxsKXRyeXthLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2goTSl7Q3QoYyxjLnJldHVybixNKX1lbHNle3ZhciB2PVVvKGMudHlwZSxsLm1lbW9pemVkUHJvcHMpO2w9bC5tZW1vaXplZFN0YXRlO3RyeXthLmNvbXBvbmVudERpZFVwZGF0ZSh2LGwsYS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSl9Y2F0Y2goTSl7Q3QoYyxjLnJldHVybixNKX19aCY2NCYmWWooYyksaCY1MTImJk9jKGMsYy5yZXR1cm4pO2JyZWFrO2Nhc2UgMzppZihrYShhLGMpLGgmNjQmJihhPWMudXBkYXRlUXVldWUsYSE9PW51bGwpKXtpZihsPW51bGwsYy5jaGlsZCE9PW51bGwpc3dpdGNoKGMuY2hpbGQudGFnKXtjYXNlIDI3OmNhc2UgNTpsPWMuY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTpsPWMuY2hpbGQuc3RhdGVOb2RlfXRyeXtMQyhhLGwpfWNhdGNoKE0pe0N0KGMsYy5yZXR1cm4sTSl9fWJyZWFrO2Nhc2UgMjc6bD09PW51bGwmJmgmNCYmSmooYyk7Y2FzZSAyNjpjYXNlIDU6a2EoYSxjKSxsPT09bnVsbCYmaCY0JiZaaihjKSxoJjUxMiYmT2MoYyxjLnJldHVybik7YnJlYWs7Y2FzZSAxMjprYShhLGMpO2JyZWFrO2Nhc2UgMTM6a2EoYSxjKSxoJjQmJmlQKGEsYyksaCY2NCYmKGE9Yy5tZW1vaXplZFN0YXRlLGEhPT1udWxsJiYoYT1hLmRlaHlkcmF0ZWQsYSE9PW51bGwmJihjPUM5LmJpbmQobnVsbCxjKSxHOShhLGMpKSkpO2JyZWFrO2Nhc2UgMjI6aWYoaD1jLm1lbW9pemVkU3RhdGUhPT1udWxsfHxZaSwhaCl7bD1sIT09bnVsbCYmbC5tZW1vaXplZFN0YXRlIT09bnVsbHx8WHQsdj1ZaTt2YXIgUz1YdDtZaT1oLChYdD1sKSYmIVM/RGEoYSxjLChjLnN1YnRyZWVGbGFncyY4NzcyKSE9PTApOmthKGEsYyksWWk9dixYdD1TfWJyZWFrO2Nhc2UgMzA6YnJlYWs7ZGVmYXVsdDprYShhLGMpfX1mdW5jdGlvbiBuUChhKXt2YXIgbD1hLmFsdGVybmF0ZTtsIT09bnVsbCYmKGEuYWx0ZXJuYXRlPW51bGwsblAobCkpLGEuY2hpbGQ9bnVsbCxhLmRlbGV0aW9ucz1udWxsLGEuc2libGluZz1udWxsLGEudGFnPT09NSYmKGw9YS5zdGF0ZU5vZGUsbCE9PW51bGwmJkx2KGwpKSxhLnN0YXRlTm9kZT1udWxsLGEucmV0dXJuPW51bGwsYS5kZXBlbmRlbmNpZXM9bnVsbCxhLm1lbW9pemVkUHJvcHM9bnVsbCxhLm1lbW9pemVkU3RhdGU9bnVsbCxhLnBlbmRpbmdQcm9wcz1udWxsLGEuc3RhdGVOb2RlPW51bGwsYS51cGRhdGVRdWV1ZT1udWxsfXZhciBWdD1udWxsLHRyPSExO2Z1bmN0aW9uIFhpKGEsbCxjKXtmb3IoYz1jLmNoaWxkO2MhPT1udWxsOylyUChhLGwsYyksYz1jLnNpYmxpbmd9ZnVuY3Rpb24gclAoYSxsLGMpe2lmKHFuJiZ0eXBlb2YgcW4ub25Db21taXRGaWJlclVubW91bnQ9PSJmdW5jdGlvbiIpdHJ5e3FuLm9uQ29tbWl0RmliZXJVbm1vdW50KENvLGMpfWNhdGNoe31zd2l0Y2goYy50YWcpe2Nhc2UgMjY6WHR8fGhpKGMsbCksWGkoYSxsLGMpLGMubWVtb2l6ZWRTdGF0ZT9jLm1lbW9pemVkU3RhdGUuY291bnQtLTpjLnN0YXRlTm9kZSYmKGM9Yy5zdGF0ZU5vZGUsYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTticmVhaztjYXNlIDI3Olh0fHxoaShjLGwpO3ZhciBoPVZ0LHY9dHI7cWEoYy50eXBlKSYmKFZ0PWMuc3RhdGVOb2RlLHRyPSExKSxYaShhLGwsYyksa2MoYy5zdGF0ZU5vZGUpLFZ0PWgsdHI9djticmVhaztjYXNlIDU6WHR8fGhpKGMsbCk7Y2FzZSA2OmlmKGg9VnQsdj10cixWdD1udWxsLFhpKGEsbCxjKSxWdD1oLHRyPXYsVnQhPT1udWxsKWlmKHRyKXRyeXsoVnQubm9kZVR5cGU9PT05P1Z0LmJvZHk6VnQubm9kZU5hbWU9PT0iSFRNTCI/VnQub3duZXJEb2N1bWVudC5ib2R5OlZ0KS5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSl9Y2F0Y2goUyl7Q3QoYyxsLFMpfWVsc2UgdHJ5e1Z0LnJlbW92ZUNoaWxkKGMuc3RhdGVOb2RlKX1jYXRjaChTKXtDdChjLGwsUyl9YnJlYWs7Y2FzZSAxODpWdCE9PW51bGwmJih0cj8oYT1WdCxIUChhLm5vZGVUeXBlPT09OT9hLmJvZHk6YS5ub2RlTmFtZT09PSJIVE1MIj9hLm93bmVyRG9jdW1lbnQuYm9keTphLGMuc3RhdGVOb2RlKSxVYyhhKSk6SFAoVnQsYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDQ6aD1WdCx2PXRyLFZ0PWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sdHI9ITAsWGkoYSxsLGMpLFZ0PWgsdHI9djticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6WHR8fE5hKDIsYyxsKSxYdHx8TmEoNCxjLGwpLFhpKGEsbCxjKTticmVhaztjYXNlIDE6WHR8fChoaShjLGwpLGg9Yy5zdGF0ZU5vZGUsdHlwZW9mIGguY29tcG9uZW50V2lsbFVubW91bnQ9PSJmdW5jdGlvbiImJlhqKGMsbCxoKSksWGkoYSxsLGMpO2JyZWFrO2Nhc2UgMjE6WGkoYSxsLGMpO2JyZWFrO2Nhc2UgMjI6WHQ9KGg9WHQpfHxjLm1lbW9pemVkU3RhdGUhPT1udWxsLFhpKGEsbCxjKSxYdD1oO2JyZWFrO2RlZmF1bHQ6WGkoYSxsLGMpfX1mdW5jdGlvbiBpUChhLGwpe2lmKGwubWVtb2l6ZWRTdGF0ZT09PW51bGwmJihhPWwuYWx0ZXJuYXRlLGEhPT1udWxsJiYoYT1hLm1lbW9pemVkU3RhdGUsYSE9PW51bGwmJihhPWEuZGVoeWRyYXRlZCxhIT09bnVsbCkpKSl0cnl7VWMoYSl9Y2F0Y2goYyl7Q3QobCxsLnJldHVybixjKX19ZnVuY3Rpb24geDkoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDEzOmNhc2UgMTk6dmFyIGw9YS5zdGF0ZU5vZGU7cmV0dXJuIGw9PT1udWxsJiYobD1hLnN0YXRlTm9kZT1uZXcgZVApLGw7Y2FzZSAyMjpyZXR1cm4gYT1hLnN0YXRlTm9kZSxsPWEuX3JldHJ5Q2FjaGUsbD09PW51bGwmJihsPWEuX3JldHJ5Q2FjaGU9bmV3IGVQKSxsO2RlZmF1bHQ6dGhyb3cgRXJyb3Iocig0MzUsYS50YWcpKX19ZnVuY3Rpb24gaWIoYSxsKXt2YXIgYz14OShhKTtsLmZvckVhY2goZnVuY3Rpb24oaCl7dmFyIHY9ajkuYmluZChudWxsLGEsaCk7Yy5oYXMoaCl8fChjLmFkZChoKSxoLnRoZW4odix2KSl9KX1mdW5jdGlvbiBmcihhLGwpe3ZhciBjPWwuZGVsZXRpb25zO2lmKGMhPT1udWxsKWZvcih2YXIgaD0wO2g8Yy5sZW5ndGg7aCsrKXt2YXIgdj1jW2hdLFM9YSxNPWwsRD1NO2U6Zm9yKDtEIT09bnVsbDspe3N3aXRjaChELnRhZyl7Y2FzZSAyNzppZihxYShELnR5cGUpKXtWdD1ELnN0YXRlTm9kZSx0cj0hMTticmVhayBlfWJyZWFrO2Nhc2UgNTpWdD1ELnN0YXRlTm9kZSx0cj0hMTticmVhayBlO2Nhc2UgMzpjYXNlIDQ6VnQ9RC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyx0cj0hMDticmVhayBlfUQ9RC5yZXR1cm59aWYoVnQ9PT1udWxsKXRocm93IEVycm9yKHIoMTYwKSk7clAoUyxNLHYpLFZ0PW51bGwsdHI9ITEsUz12LmFsdGVybmF0ZSxTIT09bnVsbCYmKFMucmV0dXJuPW51bGwpLHYucmV0dXJuPW51bGx9aWYobC5zdWJ0cmVlRmxhZ3MmMTM4NzgpZm9yKGw9bC5jaGlsZDtsIT09bnVsbDspYVAobCxhKSxsPWwuc2libGluZ312YXIgWXI9bnVsbDtmdW5jdGlvbiBhUChhLGwpe3ZhciBjPWEuYWx0ZXJuYXRlLGg9YS5mbGFncztzd2l0Y2goYS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpmcihsLGEpLGRyKGEpLGgmNCYmKE5hKDMsYSxhLnJldHVybiksX2MoMyxhKSxOYSg1LGEsYS5yZXR1cm4pKTticmVhaztjYXNlIDE6ZnIobCxhKSxkcihhKSxoJjUxMiYmKFh0fHxjPT09bnVsbHx8aGkoYyxjLnJldHVybikpLGgmNjQmJllpJiYoYT1hLnVwZGF0ZVF1ZXVlLGEhPT1udWxsJiYoaD1hLmNhbGxiYWNrcyxoIT09bnVsbCYmKGM9YS5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzLGEuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcz1jPT09bnVsbD9oOmMuY29uY2F0KGgpKSkpO2JyZWFrO2Nhc2UgMjY6dmFyIHY9WXI7aWYoZnIobCxhKSxkcihhKSxoJjUxMiYmKFh0fHxjPT09bnVsbHx8aGkoYyxjLnJldHVybikpLGgmNCl7dmFyIFM9YyE9PW51bGw/Yy5tZW1vaXplZFN0YXRlOm51bGw7aWYoaD1hLm1lbW9pemVkU3RhdGUsYz09PW51bGwpaWYoaD09PW51bGwpaWYoYS5zdGF0ZU5vZGU9PT1udWxsKXtlOntoPWEudHlwZSxjPWEubWVtb2l6ZWRQcm9wcyx2PXYub3duZXJEb2N1bWVudHx8djt0OnN3aXRjaChoKXtjYXNlInRpdGxlIjpTPXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRpdGxlIilbMF0sKCFTfHxTW1l1XXx8U1tMbl18fFMubmFtZXNwYWNlVVJJPT09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnInx8Uy5oYXNBdHRyaWJ1dGUoIml0ZW1wcm9wIikpJiYoUz12LmNyZWF0ZUVsZW1lbnQoaCksdi5oZWFkLmluc2VydEJlZm9yZShTLHYucXVlcnlTZWxlY3RvcigiaGVhZCA+IHRpdGxlIikpKSxqbihTLGgsYyksU1tMbl09YSx4bihTKSxoPVM7YnJlYWsgZTtjYXNlImxpbmsiOnZhciBNPUpQKCJsaW5rIiwiaHJlZiIsdikuZ2V0KGgrKGMuaHJlZnx8IiIpKTtpZihNKXtmb3IodmFyIEQ9MDtEPE0ubGVuZ3RoO0QrKylpZihTPU1bRF0sUy5nZXRBdHRyaWJ1dGUoImhyZWYiKT09PShjLmhyZWY9PW51bGx8fGMuaHJlZj09PSIiP251bGw6Yy5ocmVmKSYmUy5nZXRBdHRyaWJ1dGUoInJlbCIpPT09KGMucmVsPT1udWxsP251bGw6Yy5yZWwpJiZTLmdldEF0dHJpYnV0ZSgidGl0bGUiKT09PShjLnRpdGxlPT1udWxsP251bGw6Yy50aXRsZSkmJlMuZ2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIpPT09KGMuY3Jvc3NPcmlnaW49PW51bGw/bnVsbDpjLmNyb3NzT3JpZ2luKSl7TS5zcGxpY2UoRCwxKTticmVhayB0fX1TPXYuY3JlYXRlRWxlbWVudChoKSxqbihTLGgsYyksdi5oZWFkLmFwcGVuZENoaWxkKFMpO2JyZWFrO2Nhc2UibWV0YSI6aWYoTT1KUCgibWV0YSIsImNvbnRlbnQiLHYpLmdldChoKyhjLmNvbnRlbnR8fCIiKSkpe2ZvcihEPTA7RDxNLmxlbmd0aDtEKyspaWYoUz1NW0RdLFMuZ2V0QXR0cmlidXRlKCJjb250ZW50Iik9PT0oYy5jb250ZW50PT1udWxsP251bGw6IiIrYy5jb250ZW50KSYmUy5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PShjLm5hbWU9PW51bGw/bnVsbDpjLm5hbWUpJiZTLmdldEF0dHJpYnV0ZSgicHJvcGVydHkiKT09PShjLnByb3BlcnR5PT1udWxsP251bGw6Yy5wcm9wZXJ0eSkmJlMuZ2V0QXR0cmlidXRlKCJodHRwLWVxdWl2Iik9PT0oYy5odHRwRXF1aXY9PW51bGw/bnVsbDpjLmh0dHBFcXVpdikmJlMuZ2V0QXR0cmlidXRlKCJjaGFyc2V0Iik9PT0oYy5jaGFyU2V0PT1udWxsP251bGw6Yy5jaGFyU2V0KSl7TS5zcGxpY2UoRCwxKTticmVhayB0fX1TPXYuY3JlYXRlRWxlbWVudChoKSxqbihTLGgsYyksdi5oZWFkLmFwcGVuZENoaWxkKFMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3Iocig0NjgsaCkpfVNbTG5dPWEseG4oUyksaD1TfWEuc3RhdGVOb2RlPWh9ZWxzZSBlTSh2LGEudHlwZSxhLnN0YXRlTm9kZSk7ZWxzZSBhLnN0YXRlTm9kZT1RUCh2LGgsYS5tZW1vaXplZFByb3BzKTtlbHNlIFMhPT1oPyhTPT09bnVsbD9jLnN0YXRlTm9kZSE9PW51bGwmJihjPWMuc3RhdGVOb2RlLGMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKSk6Uy5jb3VudC0tLGg9PT1udWxsP2VNKHYsYS50eXBlLGEuc3RhdGVOb2RlKTpRUCh2LGgsYS5tZW1vaXplZFByb3BzKSk6aD09PW51bGwmJmEuc3RhdGVOb2RlIT09bnVsbCYmZWIoYSxhLm1lbW9pemVkUHJvcHMsYy5tZW1vaXplZFByb3BzKX1icmVhaztjYXNlIDI3OmZyKGwsYSksZHIoYSksaCY1MTImJihYdHx8Yz09PW51bGx8fGhpKGMsYy5yZXR1cm4pKSxjIT09bnVsbCYmaCY0JiZlYihhLGEubWVtb2l6ZWRQcm9wcyxjLm1lbW9pemVkUHJvcHMpO2JyZWFrO2Nhc2UgNTppZihmcihsLGEpLGRyKGEpLGgmNTEyJiYoWHR8fGM9PT1udWxsfHxoaShjLGMucmV0dXJuKSksYS5mbGFncyYzMil7dj1hLnN0YXRlTm9kZTt0cnl7VnModiwiIil9Y2F0Y2goYWUpe0N0KGEsYS5yZXR1cm4sYWUpfX1oJjQmJmEuc3RhdGVOb2RlIT1udWxsJiYodj1hLm1lbW9pemVkUHJvcHMsZWIoYSx2LGMhPT1udWxsP2MubWVtb2l6ZWRQcm9wczp2KSksaCYxMDI0JiYocmI9ITApO2JyZWFrO2Nhc2UgNjppZihmcihsLGEpLGRyKGEpLGgmNCl7aWYoYS5zdGF0ZU5vZGU9PT1udWxsKXRocm93IEVycm9yKHIoMTYyKSk7aD1hLm1lbW9pemVkUHJvcHMsYz1hLnN0YXRlTm9kZTt0cnl7Yy5ub2RlVmFsdWU9aH1jYXRjaChhZSl7Q3QoYSxhLnJldHVybixhZSl9fWJyZWFrO2Nhc2UgMzppZihIaD1udWxsLHY9WXIsWXI9emgobC5jb250YWluZXJJbmZvKSxmcihsLGEpLFlyPXYsZHIoYSksaCY0JiZjIT09bnVsbCYmYy5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7VWMobC5jb250YWluZXJJbmZvKX1jYXRjaChhZSl7Q3QoYSxhLnJldHVybixhZSl9cmImJihyYj0hMSxvUChhKSk7YnJlYWs7Y2FzZSA0Omg9WXIsWXI9emgoYS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksZnIobCxhKSxkcihhKSxZcj1oO2JyZWFrO2Nhc2UgMTI6ZnIobCxhKSxkcihhKTticmVhaztjYXNlIDEzOmZyKGwsYSksZHIoYSksYS5jaGlsZC5mbGFncyY4MTkyJiZhLm1lbW9pemVkU3RhdGUhPT1udWxsIT0oYyE9PW51bGwmJmMubWVtb2l6ZWRTdGF0ZSE9PW51bGwpJiYoY2I9bHQoKSksaCY0JiYoaD1hLnVwZGF0ZVF1ZXVlLGghPT1udWxsJiYoYS51cGRhdGVRdWV1ZT1udWxsLGliKGEsaCkpKTticmVhaztjYXNlIDIyOnY9YS5tZW1vaXplZFN0YXRlIT09bnVsbDt2YXIgRz1jIT09bnVsbCYmYy5tZW1vaXplZFN0YXRlIT09bnVsbCxyZT1ZaSx1ZT1YdDtpZihZaT1yZXx8dixYdD11ZXx8RyxmcihsLGEpLFh0PXVlLFlpPXJlLGRyKGEpLGgmODE5MillOmZvcihsPWEuc3RhdGVOb2RlLGwuX3Zpc2liaWxpdHk9dj9sLl92aXNpYmlsaXR5Ji0yOmwuX3Zpc2liaWxpdHl8MSx2JiYoYz09PW51bGx8fEd8fFlpfHxYdHx8em8oYSkpLGM9bnVsbCxsPWE7Oyl7aWYobC50YWc9PT01fHxsLnRhZz09PTI2KXtpZihjPT09bnVsbCl7Rz1jPWw7dHJ5e2lmKFM9Ry5zdGF0ZU5vZGUsdilNPVMuc3R5bGUsdHlwZW9mIE0uc2V0UHJvcGVydHk9PSJmdW5jdGlvbiI/TS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsIm5vbmUiLCJpbXBvcnRhbnQiKTpNLmRpc3BsYXk9Im5vbmUiO2Vsc2V7RD1HLnN0YXRlTm9kZTt2YXIgZGU9Ry5tZW1vaXplZFByb3BzLnN0eWxlLGllPWRlIT1udWxsJiZkZS5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP2RlLmRpc3BsYXk6bnVsbDtELnN0eWxlLmRpc3BsYXk9aWU9PW51bGx8fHR5cGVvZiBpZT09ImJvb2xlYW4iPyIiOigiIitpZSkudHJpbSgpfX1jYXRjaChhZSl7Q3QoRyxHLnJldHVybixhZSl9fX1lbHNlIGlmKGwudGFnPT09Nil7aWYoYz09PW51bGwpe0c9bDt0cnl7Ry5zdGF0ZU5vZGUubm9kZVZhbHVlPXY/IiI6Ry5tZW1vaXplZFByb3BzfWNhdGNoKGFlKXtDdChHLEcucmV0dXJuLGFlKX19fWVsc2UgaWYoKGwudGFnIT09MjImJmwudGFnIT09MjN8fGwubWVtb2l6ZWRTdGF0ZT09PW51bGx8fGw9PT1hKSYmbC5jaGlsZCE9PW51bGwpe2wuY2hpbGQucmV0dXJuPWwsbD1sLmNoaWxkO2NvbnRpbnVlfWlmKGw9PT1hKWJyZWFrIGU7Zm9yKDtsLnNpYmxpbmc9PT1udWxsOyl7aWYobC5yZXR1cm49PT1udWxsfHxsLnJldHVybj09PWEpYnJlYWsgZTtjPT09bCYmKGM9bnVsbCksbD1sLnJldHVybn1jPT09bCYmKGM9bnVsbCksbC5zaWJsaW5nLnJldHVybj1sLnJldHVybixsPWwuc2libGluZ31oJjQmJihoPWEudXBkYXRlUXVldWUsaCE9PW51bGwmJihjPWgucmV0cnlRdWV1ZSxjIT09bnVsbCYmKGgucmV0cnlRdWV1ZT1udWxsLGliKGEsYykpKSk7YnJlYWs7Y2FzZSAxOTpmcihsLGEpLGRyKGEpLGgmNCYmKGg9YS51cGRhdGVRdWV1ZSxoIT09bnVsbCYmKGEudXBkYXRlUXVldWU9bnVsbCxpYihhLGgpKSk7YnJlYWs7Y2FzZSAzMDpicmVhaztjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6ZnIobCxhKSxkcihhKX19ZnVuY3Rpb24gZHIoYSl7dmFyIGw9YS5mbGFncztpZihsJjIpe3RyeXtmb3IodmFyIGMsaD1hLnJldHVybjtoIT09bnVsbDspe2lmKFFqKGgpKXtjPWg7YnJlYWt9aD1oLnJldHVybn1pZihjPT1udWxsKXRocm93IEVycm9yKHIoMTYwKSk7c3dpdGNoKGMudGFnKXtjYXNlIDI3OnZhciB2PWMuc3RhdGVOb2RlLFM9dGIoYSk7UGgoYSxTLHYpO2JyZWFrO2Nhc2UgNTp2YXIgTT1jLnN0YXRlTm9kZTtjLmZsYWdzJjMyJiYoVnMoTSwiIiksYy5mbGFncyY9LTMzKTt2YXIgRD10YihhKTtQaChhLEQsTSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgRz1jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLHJlPXRiKGEpO25iKGEscmUsRyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihyKDE2MSkpfX1jYXRjaCh1ZSl7Q3QoYSxhLnJldHVybix1ZSl9YS5mbGFncyY9LTN9bCY0MDk2JiYoYS5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIG9QKGEpe2lmKGEuc3VidHJlZUZsYWdzJjEwMjQpZm9yKGE9YS5jaGlsZDthIT09bnVsbDspe3ZhciBsPWE7b1AobCksbC50YWc9PT01JiZsLmZsYWdzJjEwMjQmJmwuc3RhdGVOb2RlLnJlc2V0KCksYT1hLnNpYmxpbmd9fWZ1bmN0aW9uIGthKGEsbCl7aWYobC5zdWJ0cmVlRmxhZ3MmODc3Milmb3IobD1sLmNoaWxkO2whPT1udWxsOyl0UChhLGwuYWx0ZXJuYXRlLGwpLGw9bC5zaWJsaW5nfWZ1bmN0aW9uIHpvKGEpe2ZvcihhPWEuY2hpbGQ7YSE9PW51bGw7KXt2YXIgbD1hO3N3aXRjaChsLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1Ok5hKDQsbCxsLnJldHVybiksem8obCk7YnJlYWs7Y2FzZSAxOmhpKGwsbC5yZXR1cm4pO3ZhciBjPWwuc3RhdGVOb2RlO3R5cGVvZiBjLmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iJiZYaihsLGwucmV0dXJuLGMpLHpvKGwpO2JyZWFrO2Nhc2UgMjc6a2MobC5zdGF0ZU5vZGUpO2Nhc2UgMjY6Y2FzZSA1OmhpKGwsbC5yZXR1cm4pLHpvKGwpO2JyZWFrO2Nhc2UgMjI6bC5tZW1vaXplZFN0YXRlPT09bnVsbCYmem8obCk7YnJlYWs7Y2FzZSAzMDp6byhsKTticmVhaztkZWZhdWx0OnpvKGwpfWE9YS5zaWJsaW5nfX1mdW5jdGlvbiBEYShhLGwsYyl7Zm9yKGM9YyYmKGwuc3VidHJlZUZsYWdzJjg3NzIpIT09MCxsPWwuY2hpbGQ7bCE9PW51bGw7KXt2YXIgaD1sLmFsdGVybmF0ZSx2PWEsUz1sLE09Uy5mbGFncztzd2l0Y2goUy50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6RGEodixTLGMpLF9jKDQsUyk7YnJlYWs7Y2FzZSAxOmlmKERhKHYsUyxjKSxoPVMsdj1oLnN0YXRlTm9kZSx0eXBlb2Ygdi5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIil0cnl7di5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKHJlKXtDdChoLGgucmV0dXJuLHJlKX1pZihoPVMsdj1oLnVwZGF0ZVF1ZXVlLHYhPT1udWxsKXt2YXIgRD1oLnN0YXRlTm9kZTt0cnl7dmFyIEc9di5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzO2lmKEchPT1udWxsKWZvcih2LnNoYXJlZC5oaWRkZW5DYWxsYmFja3M9bnVsbCx2PTA7djxHLmxlbmd0aDt2KyspREMoR1t2XSxEKX1jYXRjaChyZSl7Q3QoaCxoLnJldHVybixyZSl9fWMmJk0mNjQmJllqKFMpLE9jKFMsUy5yZXR1cm4pO2JyZWFrO2Nhc2UgMjc6SmooUyk7Y2FzZSAyNjpjYXNlIDU6RGEodixTLGMpLGMmJmg9PT1udWxsJiZNJjQmJlpqKFMpLE9jKFMsUy5yZXR1cm4pO2JyZWFrO2Nhc2UgMTI6RGEodixTLGMpO2JyZWFrO2Nhc2UgMTM6RGEodixTLGMpLGMmJk0mNCYmaVAodixTKTticmVhaztjYXNlIDIyOlMubWVtb2l6ZWRTdGF0ZT09PW51bGwmJkRhKHYsUyxjKSxPYyhTLFMucmV0dXJuKTticmVhaztjYXNlIDMwOmJyZWFrO2RlZmF1bHQ6RGEodixTLGMpfWw9bC5zaWJsaW5nfX1mdW5jdGlvbiBhYihhLGwpe3ZhciBjPW51bGw7YSE9PW51bGwmJmEubWVtb2l6ZWRTdGF0ZSE9PW51bGwmJmEubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2whPT1udWxsJiYoYz1hLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLGE9bnVsbCxsLm1lbW9pemVkU3RhdGUhPT1udWxsJiZsLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sIT09bnVsbCYmKGE9bC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxhIT09YyYmKGEhPW51bGwmJmEucmVmQ291bnQrKyxjIT1udWxsJiZjYyhjKSl9ZnVuY3Rpb24gb2IoYSxsKXthPW51bGwsbC5hbHRlcm5hdGUhPT1udWxsJiYoYT1sLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlKSxsPWwubWVtb2l6ZWRTdGF0ZS5jYWNoZSxsIT09YSYmKGwucmVmQ291bnQrKyxhIT1udWxsJiZjYyhhKSl9ZnVuY3Rpb24gcGkoYSxsLGMsaCl7aWYobC5zdWJ0cmVlRmxhZ3MmMTAyNTYpZm9yKGw9bC5jaGlsZDtsIT09bnVsbDspc1AoYSxsLGMsaCksbD1sLnNpYmxpbmd9ZnVuY3Rpb24gc1AoYSxsLGMsaCl7dmFyIHY9bC5mbGFncztzd2l0Y2gobC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6cGkoYSxsLGMsaCksdiYyMDQ4JiZfYyg5LGwpO2JyZWFrO2Nhc2UgMTpwaShhLGwsYyxoKTticmVhaztjYXNlIDM6cGkoYSxsLGMsaCksdiYyMDQ4JiYoYT1udWxsLGwuYWx0ZXJuYXRlIT09bnVsbCYmKGE9bC5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZSksbD1sLm1lbW9pemVkU3RhdGUuY2FjaGUsbCE9PWEmJihsLnJlZkNvdW50KyssYSE9bnVsbCYmY2MoYSkpKTticmVhaztjYXNlIDEyOmlmKHYmMjA0OCl7cGkoYSxsLGMsaCksYT1sLnN0YXRlTm9kZTt0cnl7dmFyIFM9bC5tZW1vaXplZFByb3BzLE09Uy5pZCxEPVMub25Qb3N0Q29tbWl0O3R5cGVvZiBEPT0iZnVuY3Rpb24iJiZEKE0sbC5hbHRlcm5hdGU9PT1udWxsPyJtb3VudCI6InVwZGF0ZSIsYS5wYXNzaXZlRWZmZWN0RHVyYXRpb24sLTApfWNhdGNoKEcpe0N0KGwsbC5yZXR1cm4sRyl9fWVsc2UgcGkoYSxsLGMsaCk7YnJlYWs7Y2FzZSAxMzpwaShhLGwsYyxoKTticmVhaztjYXNlIDIzOmJyZWFrO2Nhc2UgMjI6Uz1sLnN0YXRlTm9kZSxNPWwuYWx0ZXJuYXRlLGwubWVtb2l6ZWRTdGF0ZSE9PW51bGw/Uy5fdmlzaWJpbGl0eSYyP3BpKGEsbCxjLGgpOlRjKGEsbCk6Uy5fdmlzaWJpbGl0eSYyP3BpKGEsbCxjLGgpOihTLl92aXNpYmlsaXR5fD0yLGFsKGEsbCxjLGgsKGwuc3VidHJlZUZsYWdzJjEwMjU2KSE9PTApKSx2JjIwNDgmJmFiKE0sbCk7YnJlYWs7Y2FzZSAyNDpwaShhLGwsYyxoKSx2JjIwNDgmJm9iKGwuYWx0ZXJuYXRlLGwpO2JyZWFrO2RlZmF1bHQ6cGkoYSxsLGMsaCl9fWZ1bmN0aW9uIGFsKGEsbCxjLGgsdil7Zm9yKHY9diYmKGwuc3VidHJlZUZsYWdzJjEwMjU2KSE9PTAsbD1sLmNoaWxkO2whPT1udWxsOyl7dmFyIFM9YSxNPWwsRD1jLEc9aCxyZT1NLmZsYWdzO3N3aXRjaChNLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTphbChTLE0sRCxHLHYpLF9jKDgsTSk7YnJlYWs7Y2FzZSAyMzpicmVhaztjYXNlIDIyOnZhciB1ZT1NLnN0YXRlTm9kZTtNLm1lbW9pemVkU3RhdGUhPT1udWxsP3VlLl92aXNpYmlsaXR5JjI/YWwoUyxNLEQsRyx2KTpUYyhTLE0pOih1ZS5fdmlzaWJpbGl0eXw9MixhbChTLE0sRCxHLHYpKSx2JiZyZSYyMDQ4JiZhYihNLmFsdGVybmF0ZSxNKTticmVhaztjYXNlIDI0OmFsKFMsTSxELEcsdiksdiYmcmUmMjA0OCYmb2IoTS5hbHRlcm5hdGUsTSk7YnJlYWs7ZGVmYXVsdDphbChTLE0sRCxHLHYpfWw9bC5zaWJsaW5nfX1mdW5jdGlvbiBUYyhhLGwpe2lmKGwuc3VidHJlZUZsYWdzJjEwMjU2KWZvcihsPWwuY2hpbGQ7bCE9PW51bGw7KXt2YXIgYz1hLGg9bCx2PWguZmxhZ3M7c3dpdGNoKGgudGFnKXtjYXNlIDIyOlRjKGMsaCksdiYyMDQ4JiZhYihoLmFsdGVybmF0ZSxoKTticmVhaztjYXNlIDI0OlRjKGMsaCksdiYyMDQ4JiZvYihoLmFsdGVybmF0ZSxoKTticmVhaztkZWZhdWx0OlRjKGMsaCl9bD1sLnNpYmxpbmd9fXZhciBFYz04MTkyO2Z1bmN0aW9uIG9sKGEpe2lmKGEuc3VidHJlZUZsYWdzJkVjKWZvcihhPWEuY2hpbGQ7YSE9PW51bGw7KWxQKGEpLGE9YS5zaWJsaW5nfWZ1bmN0aW9uIGxQKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSAyNjpvbChhKSxhLmZsYWdzJkVjJiZhLm1lbW9pemVkU3RhdGUhPT1udWxsJiZhSChZcixhLm1lbW9pemVkU3RhdGUsYS5tZW1vaXplZFByb3BzKTticmVhaztjYXNlIDU6b2woYSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgbD1ZcjtZcj16aChhLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxvbChhKSxZcj1sO2JyZWFrO2Nhc2UgMjI6YS5tZW1vaXplZFN0YXRlPT09bnVsbCYmKGw9YS5hbHRlcm5hdGUsbCE9PW51bGwmJmwubWVtb2l6ZWRTdGF0ZSE9PW51bGw/KGw9RWMsRWM9MTY3NzcyMTYsb2woYSksRWM9bCk6b2woYSkpO2JyZWFrO2RlZmF1bHQ6b2woYSl9fWZ1bmN0aW9uIHVQKGEpe3ZhciBsPWEuYWx0ZXJuYXRlO2lmKGwhPT1udWxsJiYoYT1sLmNoaWxkLGEhPT1udWxsKSl7bC5jaGlsZD1udWxsO2RvIGw9YS5zaWJsaW5nLGEuc2libGluZz1udWxsLGE9bDt3aGlsZShhIT09bnVsbCl9fWZ1bmN0aW9uIENjKGEpe3ZhciBsPWEuZGVsZXRpb25zO2lmKChhLmZsYWdzJjE2KSE9PTApe2lmKGwhPT1udWxsKWZvcih2YXIgYz0wO2M8bC5sZW5ndGg7YysrKXt2YXIgaD1sW2NdO1NuPWgsZlAoaCxhKX11UChhKX1pZihhLnN1YnRyZWVGbGFncyYxMDI1Nilmb3IoYT1hLmNoaWxkO2EhPT1udWxsOyljUChhKSxhPWEuc2libGluZ31mdW5jdGlvbiBjUChhKXtzd2l0Y2goYS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Q2MoYSksYS5mbGFncyYyMDQ4JiZOYSg5LGEsYS5yZXR1cm4pO2JyZWFrO2Nhc2UgMzpDYyhhKTticmVhaztjYXNlIDEyOkNjKGEpO2JyZWFrO2Nhc2UgMjI6dmFyIGw9YS5zdGF0ZU5vZGU7YS5tZW1vaXplZFN0YXRlIT09bnVsbCYmbC5fdmlzaWJpbGl0eSYyJiYoYS5yZXR1cm49PT1udWxsfHxhLnJldHVybi50YWchPT0xMyk/KGwuX3Zpc2liaWxpdHkmPS0zLE1oKGEpKTpDYyhhKTticmVhaztkZWZhdWx0OkNjKGEpfX1mdW5jdGlvbiBNaChhKXt2YXIgbD1hLmRlbGV0aW9ucztpZigoYS5mbGFncyYxNikhPT0wKXtpZihsIT09bnVsbClmb3IodmFyIGM9MDtjPGwubGVuZ3RoO2MrKyl7dmFyIGg9bFtjXTtTbj1oLGZQKGgsYSl9dVAoYSl9Zm9yKGE9YS5jaGlsZDthIT09bnVsbDspe3N3aXRjaChsPWEsbC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6TmEoOCxsLGwucmV0dXJuKSxNaChsKTticmVhaztjYXNlIDIyOmM9bC5zdGF0ZU5vZGUsYy5fdmlzaWJpbGl0eSYyJiYoYy5fdmlzaWJpbGl0eSY9LTMsTWgobCkpO2JyZWFrO2RlZmF1bHQ6TWgobCl9YT1hLnNpYmxpbmd9fWZ1bmN0aW9uIGZQKGEsbCl7Zm9yKDtTbiE9PW51bGw7KXt2YXIgYz1Tbjtzd2l0Y2goYy50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6TmEoOCxjLGwpO2JyZWFrO2Nhc2UgMjM6Y2FzZSAyMjppZihjLm1lbW9pemVkU3RhdGUhPT1udWxsJiZjLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sIT09bnVsbCl7dmFyIGg9Yy5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sO2ghPW51bGwmJmgucmVmQ291bnQrK31icmVhaztjYXNlIDI0OmNjKGMubWVtb2l6ZWRTdGF0ZS5jYWNoZSl9aWYoaD1jLmNoaWxkLGghPT1udWxsKWgucmV0dXJuPWMsU249aDtlbHNlIGU6Zm9yKGM9YTtTbiE9PW51bGw7KXtoPVNuO3ZhciB2PWguc2libGluZyxTPWgucmV0dXJuO2lmKG5QKGgpLGg9PT1jKXtTbj1udWxsO2JyZWFrIGV9aWYodiE9PW51bGwpe3YucmV0dXJuPVMsU249djticmVhayBlfVNuPVN9fX12YXIgdzk9e2dldENhY2hlRm9yVHlwZTpmdW5jdGlvbihhKXt2YXIgbD1Jbih1biksYz1sLmRhdGEuZ2V0KGEpO3JldHVybiBjPT09dm9pZCAwJiYoYz1hKCksbC5kYXRhLnNldChhLGMpKSxjfX0sUzk9dHlwZW9mIFdlYWtNYXA9PSJmdW5jdGlvbiI/V2Vha01hcDpNYXAsdnQ9MCxSdD1udWxsLHJ0PW51bGwsc3Q9MCxndD0wLGhyPW51bGwsTGE9ITEsc2w9ITEsc2I9ITEsWmk9MCxIdD0wLElhPTAsRm89MCxsYj0wLFJyPTAsbGw9MCxqYz1udWxsLG5yPW51bGwsdWI9ITEsY2I9MCxSaD0xLzAsTmg9bnVsbCwkYT1udWxsLENuPTAsQmE9bnVsbCx1bD1udWxsLGNsPTAsZmI9MCxkYj1udWxsLGRQPW51bGwsUGM9MCxoYj1udWxsO2Z1bmN0aW9uIHByKCl7aWYoKHZ0JjIpIT09MCYmc3QhPT0wKXJldHVybiBzdCYtc3Q7aWYoTC5UIT09bnVsbCl7dmFyIGE9WnM7cmV0dXJuIGEhPT0wP2E6eGIoKX1yZXR1cm4gV3UoKX1mdW5jdGlvbiBoUCgpe1JyPT09MCYmKFJyPShzdCY1MzY4NzA5MTIpPT09MHx8cHQ/QmUoKTo1MzY4NzA5MTIpO3ZhciBhPU1yLmN1cnJlbnQ7cmV0dXJuIGEhPT1udWxsJiYoYS5mbGFnc3w9MzIpLFJyfWZ1bmN0aW9uIG1yKGEsbCxjKXsoYT09PVJ0JiYoZ3Q9PT0yfHxndD09PTkpfHxhLmNhbmNlbFBlbmRpbmdDb21taXQhPT1udWxsKSYmKGZsKGEsMCksVmEoYSxzdCxSciwhMSkpLFVuKGEsYyksKCh2dCYyKT09PTB8fGEhPT1SdCkmJihhPT09UnQmJigodnQmMik9PT0wJiYoRm98PWMpLEh0PT09NCYmVmEoYSxzdCxSciwhMSkpLG1pKGEpKX1mdW5jdGlvbiBwUChhLGwsYyl7aWYoKHZ0JjYpIT09MCl0aHJvdyBFcnJvcihyKDMyNykpO3ZhciBoPSFjJiYobCYxMjQpPT09MCYmKGwmYS5leHBpcmVkTGFuZXMpPT09MHx8eGUoYSxsKSx2PWg/TzkoYSxsKTp5YihhLGwsITApLFM9aDtkb3tpZih2PT09MCl7c2wmJiFoJiZWYShhLGwsMCwhMSk7YnJlYWt9ZWxzZXtpZihjPWEuY3VycmVudC5hbHRlcm5hdGUsUyYmIUE5KGMpKXt2PXliKGEsbCwhMSksUz0hMTtjb250aW51ZX1pZih2PT09Mil7aWYoUz1sLGEuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXMmUyl2YXIgTT0wO2Vsc2UgTT1hLnBlbmRpbmdMYW5lcyYtNTM2ODcwOTEzLE09TSE9PTA/TTpNJjUzNjg3MDkxMj81MzY4NzA5MTI6MDtpZihNIT09MCl7bD1NO2U6e3ZhciBEPWE7dj1qYzt2YXIgRz1ELmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQ7aWYoRyYmKGZsKEQsTSkuZmxhZ3N8PTI1NiksTT15YihELE0sITEpLE0hPT0yKXtpZihzYiYmIUcpe0QuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXN8PVMsRm98PVMsdj00O2JyZWFrIGV9Uz1ucixucj12LFMhPT1udWxsJiYobnI9PT1udWxsP25yPVM6bnIucHVzaC5hcHBseShucixTKSl9dj1NfWlmKFM9ITEsdiE9PTIpY29udGludWV9fWlmKHY9PT0xKXtmbChhLDApLFZhKGEsbCwwLCEwKTticmVha31lOntzd2l0Y2goaD1hLFM9dixTKXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKHIoMzQ1KSk7Y2FzZSA0OmlmKChsJjQxOTQwNDgpIT09bClicmVhaztjYXNlIDY6VmEoaCxsLFJyLCFMYSk7YnJlYWsgZTtjYXNlIDI6bnI9bnVsbDticmVhaztjYXNlIDM6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocigzMjkpKX1pZigobCY2MjkxNDU2MCk9PT1sJiYodj1jYiszMDAtbHQoKSwxMDx2KSl7aWYoVmEoaCxsLFJyLCFMYSksd2UoaCwwLCEwKSE9PTApYnJlYWsgZTtoLnRpbWVvdXRIYW5kbGU9elAobVAuYmluZChudWxsLGgsYyxucixOaCx1YixsLFJyLEZvLGxsLExhLFMsMiwtMCwwKSx2KTticmVhayBlfW1QKGgsYyxucixOaCx1YixsLFJyLEZvLGxsLExhLFMsMCwtMCwwKX19YnJlYWt9d2hpbGUoITApO21pKGEpfWZ1bmN0aW9uIG1QKGEsbCxjLGgsdixTLE0sRCxHLHJlLHVlLGRlLGllLGFlKXtpZihhLnRpbWVvdXRIYW5kbGU9LTEsZGU9bC5zdWJ0cmVlRmxhZ3MsKGRlJjgxOTJ8fChkZSYxNjc4NTQwOCk9PT0xNjc4NTQwOCkmJihJYz17c3R5bGVzaGVldHM6bnVsbCxjb3VudDowLHVuc3VzcGVuZDppSH0sbFAobCksZGU9b0goKSxkZSE9PW51bGwpKXthLmNhbmNlbFBlbmRpbmdDb21taXQ9ZGUoU1AuYmluZChudWxsLGEsbCxTLGMsaCx2LE0sRCxHLHVlLDEsaWUsYWUpKSxWYShhLFMsTSwhcmUpO3JldHVybn1TUChhLGwsUyxjLGgsdixNLEQsRyl9ZnVuY3Rpb24gQTkoYSl7Zm9yKHZhciBsPWE7Oyl7dmFyIGM9bC50YWc7aWYoKGM9PT0wfHxjPT09MTF8fGM9PT0xNSkmJmwuZmxhZ3MmMTYzODQmJihjPWwudXBkYXRlUXVldWUsYyE9PW51bGwmJihjPWMuc3RvcmVzLGMhPT1udWxsKSkpZm9yKHZhciBoPTA7aDxjLmxlbmd0aDtoKyspe3ZhciB2PWNbaF0sUz12LmdldFNuYXBzaG90O3Y9di52YWx1ZTt0cnl7aWYoIXVyKFMoKSx2KSlyZXR1cm4hMX1jYXRjaHtyZXR1cm4hMX19aWYoYz1sLmNoaWxkLGwuc3VidHJlZUZsYWdzJjE2Mzg0JiZjIT09bnVsbCljLnJldHVybj1sLGw9YztlbHNle2lmKGw9PT1hKWJyZWFrO2Zvcig7bC5zaWJsaW5nPT09bnVsbDspe2lmKGwucmV0dXJuPT09bnVsbHx8bC5yZXR1cm49PT1hKXJldHVybiEwO2w9bC5yZXR1cm59bC5zaWJsaW5nLnJldHVybj1sLnJldHVybixsPWwuc2libGluZ319cmV0dXJuITB9ZnVuY3Rpb24gVmEoYSxsLGMsaCl7bCY9fmxiLGwmPX5GbyxhLnN1c3BlbmRlZExhbmVzfD1sLGEucGluZ2VkTGFuZXMmPX5sLGgmJihhLndhcm1MYW5lc3w9bCksaD1hLmV4cGlyYXRpb25UaW1lcztmb3IodmFyIHY9bDswPHY7KXt2YXIgUz0zMS1abih2KSxNPTE8PFM7aFtTXT0tMSx2Jj1+TX1jIT09MCYmQWEoYSxjLGwpfWZ1bmN0aW9uIGtoKCl7cmV0dXJuKHZ0JjYpPT09MD8oTWMoMCksITEpOiEwfWZ1bmN0aW9uIHBiKCl7aWYocnQhPT1udWxsKXtpZihndD09PTApdmFyIGE9cnQucmV0dXJuO2Vsc2UgYT1ydCx6aT0kbz1udWxsLE1nKGEpLHJsPW51bGwsd2M9MCxhPXJ0O2Zvcig7YSE9PW51bGw7KVdqKGEuYWx0ZXJuYXRlLGEpLGE9YS5yZXR1cm47cnQ9bnVsbH19ZnVuY3Rpb24gZmwoYSxsKXt2YXIgYz1hLnRpbWVvdXRIYW5kbGU7YyE9PS0xJiYoYS50aW1lb3V0SGFuZGxlPS0xLHE5KGMpKSxjPWEuY2FuY2VsUGVuZGluZ0NvbW1pdCxjIT09bnVsbCYmKGEuY2FuY2VsUGVuZGluZ0NvbW1pdD1udWxsLGMoKSkscGIoKSxSdD1hLHJ0PWM9VmkoYS5jdXJyZW50LG51bGwpLHN0PWwsZ3Q9MCxocj1udWxsLExhPSExLHNsPXhlKGEsbCksc2I9ITEsbGw9UnI9bGI9Rm89SWE9SHQ9MCxucj1qYz1udWxsLHViPSExLChsJjgpIT09MCYmKGx8PWwmMzIpO3ZhciBoPWEuZW50YW5nbGVkTGFuZXM7aWYoaCE9PTApZm9yKGE9YS5lbnRhbmdsZW1lbnRzLGgmPWw7MDxoOyl7dmFyIHY9MzEtWm4oaCksUz0xPDx2O2x8PWFbdl0saCY9flN9cmV0dXJuIFppPWwsbmgoKSxjfWZ1bmN0aW9uIHlQKGEsbCl7SmU9bnVsbCxMLkg9d2gsbD09PWRjfHxsPT09Zmg/KGw9TkMoKSxndD0zKTpsPT09UEM/KGw9TkMoKSxndD00KTpndD1sPT09a2o/ODpsIT09bnVsbCYmdHlwZW9mIGw9PSJvYmplY3QiJiZ0eXBlb2YgbC50aGVuPT0iZnVuY3Rpb24iPzY6MSxocj1sLHJ0PT09bnVsbCYmKEh0PTEsVGgoYSxFcihsLGEuY3VycmVudCkpKX1mdW5jdGlvbiB2UCgpe3ZhciBhPUwuSDtyZXR1cm4gTC5IPXdoLGE9PT1udWxsP3doOmF9ZnVuY3Rpb24gZ1AoKXt2YXIgYT1MLkE7cmV0dXJuIEwuQT13OSxhfWZ1bmN0aW9uIG1iKCl7SHQ9NCxMYXx8KHN0JjQxOTQwNDgpIT09c3QmJk1yLmN1cnJlbnQhPT1udWxsfHwoc2w9ITApLChJYSYxMzQyMTc3MjcpPT09MCYmKEZvJjEzNDIxNzcyNyk9PT0wfHxSdD09PW51bGx8fFZhKFJ0LHN0LFJyLCExKX1mdW5jdGlvbiB5YihhLGwsYyl7dmFyIGg9dnQ7dnR8PTI7dmFyIHY9dlAoKSxTPWdQKCk7KFJ0IT09YXx8c3QhPT1sKSYmKE5oPW51bGwsZmwoYSxsKSksbD0hMTt2YXIgTT1IdDtlOmRvIHRyeXtpZihndCE9PTAmJnJ0IT09bnVsbCl7dmFyIEQ9cnQsRz1ocjtzd2l0Y2goZ3Qpe2Nhc2UgODpwYigpLE09NjticmVhayBlO2Nhc2UgMzpjYXNlIDI6Y2FzZSA5OmNhc2UgNjpNci5jdXJyZW50PT09bnVsbCYmKGw9ITApO3ZhciByZT1ndDtpZihndD0wLGhyPW51bGwsZGwoYSxELEcscmUpLGMmJnNsKXtNPTA7YnJlYWsgZX1icmVhaztkZWZhdWx0OnJlPWd0LGd0PTAsaHI9bnVsbCxkbChhLEQsRyxyZSl9fV85KCksTT1IdDticmVha31jYXRjaCh1ZSl7eVAoYSx1ZSl9d2hpbGUoITApO3JldHVybiBsJiZhLnNoZWxsU3VzcGVuZENvdW50ZXIrKyx6aT0kbz1udWxsLHZ0PWgsTC5IPXYsTC5BPVMscnQ9PT1udWxsJiYoUnQ9bnVsbCxzdD0wLG5oKCkpLE19ZnVuY3Rpb24gXzkoKXtmb3IoO3J0IT09bnVsbDspYlAocnQpfWZ1bmN0aW9uIE85KGEsbCl7dmFyIGM9dnQ7dnR8PTI7dmFyIGg9dlAoKSx2PWdQKCk7UnQhPT1hfHxzdCE9PWw/KE5oPW51bGwsUmg9bHQoKSs1MDAsZmwoYSxsKSk6c2w9eGUoYSxsKTtlOmRvIHRyeXtpZihndCE9PTAmJnJ0IT09bnVsbCl7bD1ydDt2YXIgUz1ocjt0OnN3aXRjaChndCl7Y2FzZSAxOmd0PTAsaHI9bnVsbCxkbChhLGwsUywxKTticmVhaztjYXNlIDI6Y2FzZSA5OmlmKE1DKFMpKXtndD0wLGhyPW51bGwseFAobCk7YnJlYWt9bD1mdW5jdGlvbigpe2d0IT09MiYmZ3QhPT05fHxSdCE9PWF8fChndD03KSxtaShhKX0sUy50aGVuKGwsbCk7YnJlYWsgZTtjYXNlIDM6Z3Q9NzticmVhayBlO2Nhc2UgNDpndD01O2JyZWFrIGU7Y2FzZSA3Ok1DKFMpPyhndD0wLGhyPW51bGwseFAobCkpOihndD0wLGhyPW51bGwsZGwoYSxsLFMsNykpO2JyZWFrO2Nhc2UgNTp2YXIgTT1udWxsO3N3aXRjaChydC50YWcpe2Nhc2UgMjY6TT1ydC5tZW1vaXplZFN0YXRlO2Nhc2UgNTpjYXNlIDI3OnZhciBEPXJ0O2lmKCFNfHx0TShNKSl7Z3Q9MCxocj1udWxsO3ZhciBHPUQuc2libGluZztpZihHIT09bnVsbClydD1HO2Vsc2V7dmFyIHJlPUQucmV0dXJuO3JlIT09bnVsbD8ocnQ9cmUsRGgocmUpKTpydD1udWxsfWJyZWFrIHR9fWd0PTAsaHI9bnVsbCxkbChhLGwsUyw1KTticmVhaztjYXNlIDY6Z3Q9MCxocj1udWxsLGRsKGEsbCxTLDYpO2JyZWFrO2Nhc2UgODpwYigpLEh0PTY7YnJlYWsgZTtkZWZhdWx0OnRocm93IEVycm9yKHIoNDYyKSl9fVQ5KCk7YnJlYWt9Y2F0Y2godWUpe3lQKGEsdWUpfXdoaWxlKCEwKTtyZXR1cm4gemk9JG89bnVsbCxMLkg9aCxMLkE9dix2dD1jLHJ0IT09bnVsbD8wOihSdD1udWxsLHN0PTAsbmgoKSxIdCl9ZnVuY3Rpb24gVDkoKXtmb3IoO3J0IT09bnVsbCYmIWJ0KCk7KWJQKHJ0KX1mdW5jdGlvbiBiUChhKXt2YXIgbD1HaihhLmFsdGVybmF0ZSxhLFppKTthLm1lbW9pemVkUHJvcHM9YS5wZW5kaW5nUHJvcHMsbD09PW51bGw/RGgoYSk6cnQ9bH1mdW5jdGlvbiB4UChhKXt2YXIgbD1hLGM9bC5hbHRlcm5hdGU7c3dpdGNoKGwudGFnKXtjYXNlIDE1OmNhc2UgMDpsPVZqKGMsbCxsLnBlbmRpbmdQcm9wcyxsLnR5cGUsdm9pZCAwLHN0KTticmVhaztjYXNlIDExOmw9VmooYyxsLGwucGVuZGluZ1Byb3BzLGwudHlwZS5yZW5kZXIsbC5yZWYsc3QpO2JyZWFrO2Nhc2UgNTpNZyhsKTtkZWZhdWx0OldqKGMsbCksbD1ydD13QyhsLFppKSxsPUdqKGMsbCxaaSl9YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzLGw9PT1udWxsP0RoKGEpOnJ0PWx9ZnVuY3Rpb24gZGwoYSxsLGMsaCl7emk9JG89bnVsbCxNZyhsKSxybD1udWxsLHdjPTA7dmFyIHY9bC5yZXR1cm47dHJ5e2lmKG05KGEsdixsLGMsc3QpKXtIdD0xLFRoKGEsRXIoYyxhLmN1cnJlbnQpKSxydD1udWxsO3JldHVybn19Y2F0Y2goUyl7aWYodiE9PW51bGwpdGhyb3cgcnQ9dixTO0h0PTEsVGgoYSxFcihjLGEuY3VycmVudCkpLHJ0PW51bGw7cmV0dXJufWwuZmxhZ3MmMzI3Njg/KHB0fHxoPT09MT9hPSEwOnNsfHwoc3QmNTM2ODcwOTEyKSE9PTA/YT0hMTooTGE9YT0hMCwoaD09PTJ8fGg9PT05fHxoPT09M3x8aD09PTYpJiYoaD1Nci5jdXJyZW50LGghPT1udWxsJiZoLnRhZz09PTEzJiYoaC5mbGFnc3w9MTYzODQpKSksd1AobCxhKSk6RGgobCl9ZnVuY3Rpb24gRGgoYSl7dmFyIGw9YTtkb3tpZigobC5mbGFncyYzMjc2OCkhPT0wKXt3UChsLExhKTtyZXR1cm59YT1sLnJldHVybjt2YXIgYz12OShsLmFsdGVybmF0ZSxsLFppKTtpZihjIT09bnVsbCl7cnQ9YztyZXR1cm59aWYobD1sLnNpYmxpbmcsbCE9PW51bGwpe3J0PWw7cmV0dXJufXJ0PWw9YX13aGlsZShsIT09bnVsbCk7SHQ9PT0wJiYoSHQ9NSl9ZnVuY3Rpb24gd1AoYSxsKXtkb3t2YXIgYz1nOShhLmFsdGVybmF0ZSxhKTtpZihjIT09bnVsbCl7Yy5mbGFncyY9MzI3NjcscnQ9YztyZXR1cm59aWYoYz1hLnJldHVybixjIT09bnVsbCYmKGMuZmxhZ3N8PTMyNzY4LGMuc3VidHJlZUZsYWdzPTAsYy5kZWxldGlvbnM9bnVsbCksIWwmJihhPWEuc2libGluZyxhIT09bnVsbCkpe3J0PWE7cmV0dXJufXJ0PWE9Y313aGlsZShhIT09bnVsbCk7SHQ9NixydD1udWxsfWZ1bmN0aW9uIFNQKGEsbCxjLGgsdixTLE0sRCxHKXthLmNhbmNlbFBlbmRpbmdDb21taXQ9bnVsbDtkbyBMaCgpO3doaWxlKENuIT09MCk7aWYoKHZ0JjYpIT09MCl0aHJvdyBFcnJvcihyKDMyNykpO2lmKGwhPT1udWxsKXtpZihsPT09YS5jdXJyZW50KXRocm93IEVycm9yKHIoMTc3KSk7aWYoUz1sLmxhbmVzfGwuY2hpbGRMYW5lcyxTfD1vZyxLcihhLGMsUyxNLEQsRyksYT09PVJ0JiYocnQ9UnQ9bnVsbCxzdD0wKSx1bD1sLEJhPWEsY2w9YyxmYj1TLGRiPXYsZFA9aCwobC5zdWJ0cmVlRmxhZ3MmMTAyNTYpIT09MHx8KGwuZmxhZ3MmMTAyNTYpIT09MD8oYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrUHJpb3JpdHk9MCxQOShYbixmdW5jdGlvbigpe3JldHVybiBFUCgpLG51bGx9KSk6KGEuY2FsbGJhY2tOb2RlPW51bGwsYS5jYWxsYmFja1ByaW9yaXR5PTApLGg9KGwuZmxhZ3MmMTM4NzgpIT09MCwobC5zdWJ0cmVlRmxhZ3MmMTM4NzgpIT09MHx8aCl7aD1MLlQsTC5UPW51bGwsdj1XLnAsVy5wPTIsTT12dCx2dHw9NDt0cnl7YjkoYSxsLGMpfWZpbmFsbHl7dnQ9TSxXLnA9dixMLlQ9aH19Q249MSxBUCgpLF9QKCksT1AoKX19ZnVuY3Rpb24gQVAoKXtpZihDbj09PTEpe0NuPTA7dmFyIGE9QmEsbD11bCxjPShsLmZsYWdzJjEzODc4KSE9PTA7aWYoKGwuc3VidHJlZUZsYWdzJjEzODc4KSE9PTB8fGMpe2M9TC5ULEwuVD1udWxsO3ZhciBoPVcucDtXLnA9Mjt2YXIgdj12dDt2dHw9NDt0cnl7YVAobCxhKTt2YXIgUz1DYixNPWZDKGEuY29udGFpbmVySW5mbyksRD1TLmZvY3VzZWRFbGVtLEc9Uy5zZWxlY3Rpb25SYW5nZTtpZihNIT09RCYmRCYmRC5vd25lckRvY3VtZW50JiZjQyhELm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LEQpKXtpZihHIT09bnVsbCYmdGcoRCkpe3ZhciByZT1HLnN0YXJ0LHVlPUcuZW5kO2lmKHVlPT09dm9pZCAwJiYodWU9cmUpLCJzZWxlY3Rpb25TdGFydCJpbiBEKUQuc2VsZWN0aW9uU3RhcnQ9cmUsRC5zZWxlY3Rpb25FbmQ9TWF0aC5taW4odWUsRC52YWx1ZS5sZW5ndGgpO2Vsc2V7dmFyIGRlPUQub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQsaWU9ZGUmJmRlLmRlZmF1bHRWaWV3fHx3aW5kb3c7aWYoaWUuZ2V0U2VsZWN0aW9uKXt2YXIgYWU9aWUuZ2V0U2VsZWN0aW9uKCksRmU9RC50ZXh0Q29udGVudC5sZW5ndGgsVmU9TWF0aC5taW4oRy5zdGFydCxGZSksU3Q9Ry5lbmQ9PT12b2lkIDA/VmU6TWF0aC5taW4oRy5lbmQsRmUpOyFhZS5leHRlbmQmJlZlPlN0JiYoTT1TdCxTdD1WZSxWZT1NKTt2YXIgWD11QyhELFZlKSxZPXVDKEQsU3QpO2lmKFgmJlkmJihhZS5yYW5nZUNvdW50IT09MXx8YWUuYW5jaG9yTm9kZSE9PVgubm9kZXx8YWUuYW5jaG9yT2Zmc2V0IT09WC5vZmZzZXR8fGFlLmZvY3VzTm9kZSE9PVkubm9kZXx8YWUuZm9jdXNPZmZzZXQhPT1ZLm9mZnNldCkpe3ZhciBuZT1kZS5jcmVhdGVSYW5nZSgpO25lLnNldFN0YXJ0KFgubm9kZSxYLm9mZnNldCksYWUucmVtb3ZlQWxsUmFuZ2VzKCksVmU+U3Q/KGFlLmFkZFJhbmdlKG5lKSxhZS5leHRlbmQoWS5ub2RlLFkub2Zmc2V0KSk6KG5lLnNldEVuZChZLm5vZGUsWS5vZmZzZXQpLGFlLmFkZFJhbmdlKG5lKSl9fX19Zm9yKGRlPVtdLGFlPUQ7YWU9YWUucGFyZW50Tm9kZTspYWUubm9kZVR5cGU9PT0xJiZkZS5wdXNoKHtlbGVtZW50OmFlLGxlZnQ6YWUuc2Nyb2xsTGVmdCx0b3A6YWUuc2Nyb2xsVG9wfSk7Zm9yKHR5cGVvZiBELmZvY3VzPT0iZnVuY3Rpb24iJiZELmZvY3VzKCksRD0wO0Q8ZGUubGVuZ3RoO0QrKyl7dmFyIGZlPWRlW0RdO2ZlLmVsZW1lbnQuc2Nyb2xsTGVmdD1mZS5sZWZ0LGZlLmVsZW1lbnQuc2Nyb2xsVG9wPWZlLnRvcH19V2g9ISFFYixDYj1FYj1udWxsfWZpbmFsbHl7dnQ9dixXLnA9aCxMLlQ9Y319YS5jdXJyZW50PWwsQ249Mn19ZnVuY3Rpb24gX1AoKXtpZihDbj09PTIpe0NuPTA7dmFyIGE9QmEsbD11bCxjPShsLmZsYWdzJjg3NzIpIT09MDtpZigobC5zdWJ0cmVlRmxhZ3MmODc3MikhPT0wfHxjKXtjPUwuVCxMLlQ9bnVsbDt2YXIgaD1XLnA7Vy5wPTI7dmFyIHY9dnQ7dnR8PTQ7dHJ5e3RQKGEsbC5hbHRlcm5hdGUsbCl9ZmluYWxseXt2dD12LFcucD1oLEwuVD1jfX1Dbj0zfX1mdW5jdGlvbiBPUCgpe2lmKENuPT09NHx8Q249PT0zKXtDbj0wLFR0KCk7dmFyIGE9QmEsbD11bCxjPWNsLGg9ZFA7KGwuc3VidHJlZUZsYWdzJjEwMjU2KSE9PTB8fChsLmZsYWdzJjEwMjU2KSE9PTA/Q249NTooQ249MCx1bD1CYT1udWxsLFRQKGEsYS5wZW5kaW5nTGFuZXMpKTt2YXIgdj1hLnBlbmRpbmdMYW5lcztpZih2PT09MCYmKCRhPW51bGwpLEt1KGMpLGw9bC5zdGF0ZU5vZGUscW4mJnR5cGVvZiBxbi5vbkNvbW1pdEZpYmVyUm9vdD09ImZ1bmN0aW9uIil0cnl7cW4ub25Db21taXRGaWJlclJvb3QoQ28sbCx2b2lkIDAsKGwuY3VycmVudC5mbGFncyYxMjgpPT09MTI4KX1jYXRjaHt9aWYoaCE9PW51bGwpe2w9TC5ULHY9Vy5wLFcucD0yLEwuVD1udWxsO3RyeXtmb3IodmFyIFM9YS5vblJlY292ZXJhYmxlRXJyb3IsTT0wO008aC5sZW5ndGg7TSsrKXt2YXIgRD1oW01dO1MoRC52YWx1ZSx7Y29tcG9uZW50U3RhY2s6RC5zdGFja30pfX1maW5hbGx5e0wuVD1sLFcucD12fX0oY2wmMykhPT0wJiZMaCgpLG1pKGEpLHY9YS5wZW5kaW5nTGFuZXMsKGMmNDE5NDA5MCkhPT0wJiYodiY0MikhPT0wP2E9PT1oYj9QYysrOihQYz0wLGhiPWEpOlBjPTAsTWMoMCl9fWZ1bmN0aW9uIFRQKGEsbCl7KGEucG9vbGVkQ2FjaGVMYW5lcyY9bCk9PT0wJiYobD1hLnBvb2xlZENhY2hlLGwhPW51bGwmJihhLnBvb2xlZENhY2hlPW51bGwsY2MobCkpKX1mdW5jdGlvbiBMaChhKXtyZXR1cm4gQVAoKSxfUCgpLE9QKCksRVAoKX1mdW5jdGlvbiBFUCgpe2lmKENuIT09NSlyZXR1cm4hMTt2YXIgYT1CYSxsPWZiO2ZiPTA7dmFyIGM9S3UoY2wpLGg9TC5ULHY9Vy5wO3RyeXtXLnA9MzI+Yz8zMjpjLEwuVD1udWxsLGM9ZGIsZGI9bnVsbDt2YXIgUz1CYSxNPWNsO2lmKENuPTAsdWw9QmE9bnVsbCxjbD0wLCh2dCY2KSE9PTApdGhyb3cgRXJyb3IocigzMzEpKTt2YXIgRD12dDtpZih2dHw9NCxjUChTLmN1cnJlbnQpLHNQKFMsUy5jdXJyZW50LE0sYyksdnQ9RCxNYygwLCExKSxxbiYmdHlwZW9mIHFuLm9uUG9zdENvbW1pdEZpYmVyUm9vdD09ImZ1bmN0aW9uIil0cnl7cW4ub25Qb3N0Q29tbWl0RmliZXJSb290KENvLFMpfWNhdGNoe31yZXR1cm4hMH1maW5hbGx5e1cucD12LEwuVD1oLFRQKGEsbCl9fWZ1bmN0aW9uIENQKGEsbCxjKXtsPUVyKGMsbCksbD1IZyhhLnN0YXRlTm9kZSxsLDIpLGE9amEoYSxsLDIpLGEhPT1udWxsJiYoVW4oYSwyKSxtaShhKSl9ZnVuY3Rpb24gQ3QoYSxsLGMpe2lmKGEudGFnPT09MylDUChhLGEsYyk7ZWxzZSBmb3IoO2whPT1udWxsOyl7aWYobC50YWc9PT0zKXtDUChsLGEsYyk7YnJlYWt9ZWxzZSBpZihsLnRhZz09PTEpe3ZhciBoPWwuc3RhdGVOb2RlO2lmKHR5cGVvZiBsLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPT0iZnVuY3Rpb24ifHx0eXBlb2YgaC5jb21wb25lbnREaWRDYXRjaD09ImZ1bmN0aW9uIiYmKCRhPT09bnVsbHx8ISRhLmhhcyhoKSkpe2E9RXIoYyxhKSxjPVJqKDIpLGg9amEobCxjLDIpLGghPT1udWxsJiYoTmooYyxoLGwsYSksVW4oaCwyKSxtaShoKSk7YnJlYWt9fWw9bC5yZXR1cm59fWZ1bmN0aW9uIHZiKGEsbCxjKXt2YXIgaD1hLnBpbmdDYWNoZTtpZihoPT09bnVsbCl7aD1hLnBpbmdDYWNoZT1uZXcgUzk7dmFyIHY9bmV3IFNldDtoLnNldChsLHYpfWVsc2Ugdj1oLmdldChsKSx2PT09dm9pZCAwJiYodj1uZXcgU2V0LGguc2V0KGwsdikpO3YuaGFzKGMpfHwoc2I9ITAsdi5hZGQoYyksYT1FOS5iaW5kKG51bGwsYSxsLGMpLGwudGhlbihhLGEpKX1mdW5jdGlvbiBFOShhLGwsYyl7dmFyIGg9YS5waW5nQ2FjaGU7aCE9PW51bGwmJmguZGVsZXRlKGwpLGEucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYyxhLndhcm1MYW5lcyY9fmMsUnQ9PT1hJiYoc3QmYyk9PT1jJiYoSHQ9PT00fHxIdD09PTMmJihzdCY2MjkxNDU2MCk9PT1zdCYmMzAwPmx0KCktY2I/KHZ0JjIpPT09MCYmZmwoYSwwKTpsYnw9YyxsbD09PXN0JiYobGw9MCkpLG1pKGEpfWZ1bmN0aW9uIGpQKGEsbCl7bD09PTAmJihsPUV0KCkpLGE9S3MoYSxsKSxhIT09bnVsbCYmKFVuKGEsbCksbWkoYSkpfWZ1bmN0aW9uIEM5KGEpe3ZhciBsPWEubWVtb2l6ZWRTdGF0ZSxjPTA7bCE9PW51bGwmJihjPWwucmV0cnlMYW5lKSxqUChhLGMpfWZ1bmN0aW9uIGo5KGEsbCl7dmFyIGM9MDtzd2l0Y2goYS50YWcpe2Nhc2UgMTM6dmFyIGg9YS5zdGF0ZU5vZGUsdj1hLm1lbW9pemVkU3RhdGU7diE9PW51bGwmJihjPXYucmV0cnlMYW5lKTticmVhaztjYXNlIDE5Omg9YS5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAyMjpoPWEuc3RhdGVOb2RlLl9yZXRyeUNhY2hlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocigzMTQpKX1oIT09bnVsbCYmaC5kZWxldGUobCksalAoYSxjKX1mdW5jdGlvbiBQOShhLGwpe3JldHVybiBLZShhLGwpfXZhciBJaD1udWxsLGhsPW51bGwsZ2I9ITEsJGg9ITEsYmI9ITEsSG89MDtmdW5jdGlvbiBtaShhKXthIT09aGwmJmEubmV4dD09PW51bGwmJihobD09PW51bGw/SWg9aGw9YTpobD1obC5uZXh0PWEpLCRoPSEwLGdifHwoZ2I9ITAsUjkoKSl9ZnVuY3Rpb24gTWMoYSxsKXtpZighYmImJiRoKXtiYj0hMDtkbyBmb3IodmFyIGM9ITEsaD1JaDtoIT09bnVsbDspe2lmKGEhPT0wKXt2YXIgdj1oLnBlbmRpbmdMYW5lcztpZih2PT09MCl2YXIgUz0wO2Vsc2V7dmFyIE09aC5zdXNwZW5kZWRMYW5lcyxEPWgucGluZ2VkTGFuZXM7Uz0oMTw8MzEtWm4oNDJ8YSkrMSktMSxTJj12Jn4oTSZ+RCksUz1TJjIwMTMyNjc0MT9TJjIwMTMyNjc0MXwxOlM/U3wyOjB9UyE9PTAmJihjPSEwLE5QKGgsUykpfWVsc2UgUz1zdCxTPXdlKGgsaD09PVJ0P1M6MCxoLmNhbmNlbFBlbmRpbmdDb21taXQhPT1udWxsfHxoLnRpbWVvdXRIYW5kbGUhPT0tMSksKFMmMyk9PT0wfHx4ZShoLFMpfHwoYz0hMCxOUChoLFMpKTtoPWgubmV4dH13aGlsZShjKTtiYj0hMX19ZnVuY3Rpb24gTTkoKXtQUCgpfWZ1bmN0aW9uIFBQKCl7JGg9Z2I9ITE7dmFyIGE9MDtIbyE9PTAmJihWOSgpJiYoYT1IbyksSG89MCk7Zm9yKHZhciBsPWx0KCksYz1udWxsLGg9SWg7aCE9PW51bGw7KXt2YXIgdj1oLm5leHQsUz1NUChoLGwpO1M9PT0wPyhoLm5leHQ9bnVsbCxjPT09bnVsbD9JaD12OmMubmV4dD12LHY9PT1udWxsJiYoaGw9YykpOihjPWgsKGEhPT0wfHwoUyYzKSE9PTApJiYoJGg9ITApKSxoPXZ9TWMoYSl9ZnVuY3Rpb24gTVAoYSxsKXtmb3IodmFyIGM9YS5zdXNwZW5kZWRMYW5lcyxoPWEucGluZ2VkTGFuZXMsdj1hLmV4cGlyYXRpb25UaW1lcyxTPWEucGVuZGluZ0xhbmVzJi02MjkxNDU2MTswPFM7KXt2YXIgTT0zMS1abihTKSxEPTE8PE0sRz12W01dO0c9PT0tMT8oKEQmYyk9PT0wfHwoRCZoKSE9PTApJiYodltNXT1FZShELGwpKTpHPD1sJiYoYS5leHBpcmVkTGFuZXN8PUQpLFMmPX5EfWlmKGw9UnQsYz1zdCxjPXdlKGEsYT09PWw/YzowLGEuY2FuY2VsUGVuZGluZ0NvbW1pdCE9PW51bGx8fGEudGltZW91dEhhbmRsZSE9PS0xKSxoPWEuY2FsbGJhY2tOb2RlLGM9PT0wfHxhPT09bCYmKGd0PT09Mnx8Z3Q9PT05KXx8YS5jYW5jZWxQZW5kaW5nQ29tbWl0IT09bnVsbClyZXR1cm4gaCE9PW51bGwmJmghPT1udWxsJiZMZShoKSxhLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tQcmlvcml0eT0wO2lmKChjJjMpPT09MHx8eGUoYSxjKSl7aWYobD1jJi1jLGw9PT1hLmNhbGxiYWNrUHJpb3JpdHkpcmV0dXJuIGw7c3dpdGNoKGghPT1udWxsJiZMZShoKSxLdShjKSl7Y2FzZSAyOmNhc2UgODpjPUdyO2JyZWFrO2Nhc2UgMzI6Yz1YbjticmVhaztjYXNlIDI2ODQzNTQ1NjpjPVNhO2JyZWFrO2RlZmF1bHQ6Yz1Ybn1yZXR1cm4gaD1SUC5iaW5kKG51bGwsYSksYz1LZShjLGgpLGEuY2FsbGJhY2tQcmlvcml0eT1sLGEuY2FsbGJhY2tOb2RlPWMsbH1yZXR1cm4gaCE9PW51bGwmJmghPT1udWxsJiZMZShoKSxhLmNhbGxiYWNrUHJpb3JpdHk9MixhLmNhbGxiYWNrTm9kZT1udWxsLDJ9ZnVuY3Rpb24gUlAoYSxsKXtpZihDbiE9PTAmJkNuIT09NSlyZXR1cm4gYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrUHJpb3JpdHk9MCxudWxsO3ZhciBjPWEuY2FsbGJhY2tOb2RlO2lmKExoKCkmJmEuY2FsbGJhY2tOb2RlIT09YylyZXR1cm4gbnVsbDt2YXIgaD1zdDtyZXR1cm4gaD13ZShhLGE9PT1SdD9oOjAsYS5jYW5jZWxQZW5kaW5nQ29tbWl0IT09bnVsbHx8YS50aW1lb3V0SGFuZGxlIT09LTEpLGg9PT0wP251bGw6KHBQKGEsaCxsKSxNUChhLGx0KCkpLGEuY2FsbGJhY2tOb2RlIT1udWxsJiZhLmNhbGxiYWNrTm9kZT09PWM/UlAuYmluZChudWxsLGEpOm51bGwpfWZ1bmN0aW9uIE5QKGEsbCl7aWYoTGgoKSlyZXR1cm4gbnVsbDtwUChhLGwsITApfWZ1bmN0aW9uIFI5KCl7VTkoZnVuY3Rpb24oKXsodnQmNikhPT0wP0tlKGxyLE05KTpQUCgpfSl9ZnVuY3Rpb24geGIoKXtyZXR1cm4gSG89PT0wJiYoSG89QmUoKSksSG99ZnVuY3Rpb24ga1AoYSl7cmV0dXJuIGE9PW51bGx8fHR5cGVvZiBhPT0ic3ltYm9sInx8dHlwZW9mIGE9PSJib29sZWFuIj9udWxsOnR5cGVvZiBhPT0iZnVuY3Rpb24iP2E6WWQoIiIrYSl9ZnVuY3Rpb24gRFAoYSxsKXt2YXIgYz1sLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyZXR1cm4gYy5uYW1lPWwubmFtZSxjLnZhbHVlPWwudmFsdWUsYS5pZCYmYy5zZXRBdHRyaWJ1dGUoImZvcm0iLGEuaWQpLGwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYyxsKSxhPW5ldyBGb3JtRGF0YShhKSxjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyksYX1mdW5jdGlvbiBOOShhLGwsYyxoLHYpe2lmKGw9PT0ic3VibWl0IiYmYyYmYy5zdGF0ZU5vZGU9PT12KXt2YXIgUz1rUCgodltRbl18fG51bGwpLmFjdGlvbiksTT1oLnN1Ym1pdHRlcjtNJiYobD0obD1NW1FuXXx8bnVsbCk/a1AobC5mb3JtQWN0aW9uKTpNLmdldEF0dHJpYnV0ZSgiZm9ybUFjdGlvbiIpLGwhPT1udWxsJiYoUz1sLE09bnVsbCkpO3ZhciBEPW5ldyBKZCgiYWN0aW9uIiwiYWN0aW9uIixudWxsLGgsdik7YS5wdXNoKHtldmVudDpELGxpc3RlbmVyczpbe2luc3RhbmNlOm51bGwsbGlzdGVuZXI6ZnVuY3Rpb24oKXtpZihoLmRlZmF1bHRQcmV2ZW50ZWQpe2lmKEhvIT09MCl7dmFyIEc9TT9EUCh2LE0pOm5ldyBGb3JtRGF0YSh2KTtWZyhjLHtwZW5kaW5nOiEwLGRhdGE6RyxtZXRob2Q6di5tZXRob2QsYWN0aW9uOlN9LG51bGwsRyl9fWVsc2UgdHlwZW9mIFM9PSJmdW5jdGlvbiImJihELnByZXZlbnREZWZhdWx0KCksRz1NP0RQKHYsTSk6bmV3IEZvcm1EYXRhKHYpLFZnKGMse3BlbmRpbmc6ITAsZGF0YTpHLG1ldGhvZDp2Lm1ldGhvZCxhY3Rpb246U30sUyxHKSl9LGN1cnJlbnRUYXJnZXQ6dn1dfSl9fWZvcih2YXIgd2I9MDt3YjxhZy5sZW5ndGg7d2IrKyl7dmFyIFNiPWFnW3diXSxrOT1TYi50b0xvd2VyQ2FzZSgpLEQ5PVNiWzBdLnRvVXBwZXJDYXNlKCkrU2Iuc2xpY2UoMSk7V3IoazksIm9uIitEOSl9V3IocEMsIm9uQW5pbWF0aW9uRW5kIiksV3IobUMsIm9uQW5pbWF0aW9uSXRlcmF0aW9uIiksV3IoeUMsIm9uQW5pbWF0aW9uU3RhcnQiKSxXcigiZGJsY2xpY2siLCJvbkRvdWJsZUNsaWNrIiksV3IoImZvY3VzaW4iLCJvbkZvY3VzIiksV3IoImZvY3Vzb3V0Iiwib25CbHVyIiksV3IoUTgsIm9uVHJhbnNpdGlvblJ1biIpLFdyKEo4LCJvblRyYW5zaXRpb25TdGFydCIpLFdyKGU5LCJvblRyYW5zaXRpb25DYW5jZWwiKSxXcih2Qywib25UcmFuc2l0aW9uRW5kIiksSXMoIm9uTW91c2VFbnRlciIsWyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdKSxJcygib25Nb3VzZUxlYXZlIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pLElzKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSksSXMoIm9uUG9pbnRlckxlYXZlIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKSxqbygib25DaGFuZ2UiLCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZSIuc3BsaXQoIiAiKSksam8oIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSxqbygib25CZWZvcmVJbnB1dCIsWyJjb21wb3NpdGlvbmVuZCIsImtleXByZXNzIiwidGV4dElucHV0IiwicGFzdGUiXSksam8oIm9uQ29tcG9zaXRpb25FbmQiLCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSksam8oIm9uQ29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLGpvKCJvbkNvbXBvc2l0aW9uVXBkYXRlIiwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpO3ZhciBSYz0iYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmciLnNwbGl0KCIgIiksTDk9bmV3IFNldCgiYmVmb3JldG9nZ2xlIGNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHNjcm9sbGVuZCB0b2dnbGUiLnNwbGl0KCIgIikuY29uY2F0KFJjKSk7ZnVuY3Rpb24gTFAoYSxsKXtsPShsJjQpIT09MDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGg9YVtjXSx2PWguZXZlbnQ7aD1oLmxpc3RlbmVycztlOnt2YXIgUz12b2lkIDA7aWYobClmb3IodmFyIE09aC5sZW5ndGgtMTswPD1NO00tLSl7dmFyIEQ9aFtNXSxHPUQuaW5zdGFuY2UscmU9RC5jdXJyZW50VGFyZ2V0O2lmKEQ9RC5saXN0ZW5lcixHIT09UyYmdi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGU7Uz1ELHYuY3VycmVudFRhcmdldD1yZTt0cnl7Uyh2KX1jYXRjaCh1ZSl7T2godWUpfXYuY3VycmVudFRhcmdldD1udWxsLFM9R31lbHNlIGZvcihNPTA7TTxoLmxlbmd0aDtNKyspe2lmKEQ9aFtNXSxHPUQuaW5zdGFuY2UscmU9RC5jdXJyZW50VGFyZ2V0LEQ9RC5saXN0ZW5lcixHIT09UyYmdi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGU7Uz1ELHYuY3VycmVudFRhcmdldD1yZTt0cnl7Uyh2KX1jYXRjaCh1ZSl7T2godWUpfXYuY3VycmVudFRhcmdldD1udWxsLFM9R319fX1mdW5jdGlvbiBpdChhLGwpe3ZhciBjPWxbRHZdO2M9PT12b2lkIDAmJihjPWxbRHZdPW5ldyBTZXQpO3ZhciBoPWErIl9fYnViYmxlIjtjLmhhcyhoKXx8KElQKGwsYSwyLCExKSxjLmFkZChoKSl9ZnVuY3Rpb24gQWIoYSxsLGMpe3ZhciBoPTA7bCYmKGh8PTQpLElQKGMsYSxoLGwpfXZhciBCaD0iX3JlYWN0TGlzdGVuaW5nIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBfYihhKXtpZighYVtCaF0pe2FbQmhdPSEwLFBFLmZvckVhY2goZnVuY3Rpb24oYyl7YyE9PSJzZWxlY3Rpb25jaGFuZ2UiJiYoTDkuaGFzKGMpfHxBYihjLCExLGEpLEFiKGMsITAsYSkpfSk7dmFyIGw9YS5ub2RlVHlwZT09PTk/YTphLm93bmVyRG9jdW1lbnQ7bD09PW51bGx8fGxbQmhdfHwobFtCaF09ITAsQWIoInNlbGVjdGlvbmNoYW5nZSIsITEsbCkpfX1mdW5jdGlvbiBJUChhLGwsYyxoKXtzd2l0Y2goc00obCkpe2Nhc2UgMjp2YXIgdj11SDticmVhaztjYXNlIDg6dj1jSDticmVhaztkZWZhdWx0OnY9JGJ9Yz12LmJpbmQobnVsbCxsLGMsYSksdj12b2lkIDAsIUd2fHxsIT09InRvdWNoc3RhcnQiJiZsIT09InRvdWNobW92ZSImJmwhPT0id2hlZWwifHwodj0hMCksaD92IT09dm9pZCAwP2EuYWRkRXZlbnRMaXN0ZW5lcihsLGMse2NhcHR1cmU6ITAscGFzc2l2ZTp2fSk6YS5hZGRFdmVudExpc3RlbmVyKGwsYywhMCk6diE9PXZvaWQgMD9hLmFkZEV2ZW50TGlzdGVuZXIobCxjLHtwYXNzaXZlOnZ9KTphLmFkZEV2ZW50TGlzdGVuZXIobCxjLCExKX1mdW5jdGlvbiBPYihhLGwsYyxoLHYpe3ZhciBTPWg7aWYoKGwmMSk9PT0wJiYobCYyKT09PTAmJmghPT1udWxsKWU6Zm9yKDs7KXtpZihoPT09bnVsbClyZXR1cm47dmFyIE09aC50YWc7aWYoTT09PTN8fE09PT00KXt2YXIgRD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKEQ9PT12KWJyZWFrO2lmKE09PT00KWZvcihNPWgucmV0dXJuO00hPT1udWxsOyl7dmFyIEc9TS50YWc7aWYoKEc9PT0zfHxHPT09NCkmJk0uc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT12KXJldHVybjtNPU0ucmV0dXJufWZvcig7RCE9PW51bGw7KXtpZihNPWtzKEQpLE09PT1udWxsKXJldHVybjtpZihHPU0udGFnLEc9PT01fHxHPT09Nnx8Rz09PTI2fHxHPT09Mjcpe2g9Uz1NO2NvbnRpbnVlIGV9RD1ELnBhcmVudE5vZGV9fWg9aC5yZXR1cm59RkUoZnVuY3Rpb24oKXt2YXIgcmU9Uyx1ZT1GdihjKSxkZT1bXTtlOnt2YXIgaWU9Z0MuZ2V0KGEpO2lmKGllIT09dm9pZCAwKXt2YXIgYWU9SmQsRmU9YTtzd2l0Y2goYSl7Y2FzZSJrZXlwcmVzcyI6aWYoWmQoYyk9PT0wKWJyZWFrIGU7Y2FzZSJrZXlkb3duIjpjYXNlImtleXVwIjphZT1QODticmVhaztjYXNlImZvY3VzaW4iOkZlPSJmb2N1cyIsYWU9WHY7YnJlYWs7Y2FzZSJmb2N1c291dCI6RmU9ImJsdXIiLGFlPVh2O2JyZWFrO2Nhc2UiYmVmb3JlYmx1ciI6Y2FzZSJhZnRlcmJsdXIiOmFlPVh2O2JyZWFrO2Nhc2UiY2xpY2siOmlmKGMuYnV0dG9uPT09MilicmVhayBlO2Nhc2UiYXV4Y2xpY2siOmNhc2UiZGJsY2xpY2siOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNlbW92ZSI6Y2FzZSJtb3VzZXVwIjpjYXNlIm1vdXNlb3V0IjpjYXNlIm1vdXNlb3ZlciI6Y2FzZSJjb250ZXh0bWVudSI6YWU9S0U7YnJlYWs7Y2FzZSJkcmFnIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJkcmFnc3RhcnQiOmNhc2UiZHJvcCI6YWU9Zzg7YnJlYWs7Y2FzZSJ0b3VjaGNhbmNlbCI6Y2FzZSJ0b3VjaGVuZCI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2UidG91Y2hzdGFydCI6YWU9Tjg7YnJlYWs7Y2FzZSBwQzpjYXNlIG1DOmNhc2UgeUM6YWU9dzg7YnJlYWs7Y2FzZSB2QzphZT1EODticmVhaztjYXNlInNjcm9sbCI6Y2FzZSJzY3JvbGxlbmQiOmFlPXk4O2JyZWFrO2Nhc2Uid2hlZWwiOmFlPUk4O2JyZWFrO2Nhc2UiY29weSI6Y2FzZSJjdXQiOmNhc2UicGFzdGUiOmFlPUE4O2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpjYXNlInBvaW50ZXJjYW5jZWwiOmNhc2UicG9pbnRlcmRvd24iOmNhc2UicG9pbnRlcm1vdmUiOmNhc2UicG9pbnRlcm91dCI6Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVydXAiOmFlPVlFO2JyZWFrO2Nhc2UidG9nZ2xlIjpjYXNlImJlZm9yZXRvZ2dsZSI6YWU9Qjh9dmFyIFZlPShsJjQpIT09MCxTdD0hVmUmJihhPT09InNjcm9sbCJ8fGE9PT0ic2Nyb2xsZW5kIiksWD1WZT9pZSE9PW51bGw/aWUrIkNhcHR1cmUiOm51bGw6aWU7VmU9W107Zm9yKHZhciBZPXJlLG5lO1khPT1udWxsOyl7dmFyIGZlPVk7aWYobmU9ZmUuc3RhdGVOb2RlLGZlPWZlLnRhZyxmZSE9PTUmJmZlIT09MjYmJmZlIT09Mjd8fG5lPT09bnVsbHx8WD09PW51bGx8fChmZT1adShZLFgpLGZlIT1udWxsJiZWZS5wdXNoKE5jKFksZmUsbmUpKSksU3QpYnJlYWs7WT1ZLnJldHVybn0wPFZlLmxlbmd0aCYmKGllPW5ldyBhZShpZSxGZSxudWxsLGMsdWUpLGRlLnB1c2goe2V2ZW50OmllLGxpc3RlbmVyczpWZX0pKX19aWYoKGwmNyk9PT0wKXtlOntpZihpZT1hPT09Im1vdXNlb3ZlciJ8fGE9PT0icG9pbnRlcm92ZXIiLGFlPWE9PT0ibW91c2VvdXQifHxhPT09InBvaW50ZXJvdXQiLGllJiZjIT09enYmJihGZT1jLnJlbGF0ZWRUYXJnZXR8fGMuZnJvbUVsZW1lbnQpJiYoa3MoRmUpfHxGZVtOc10pKWJyZWFrIGU7aWYoKGFlfHxpZSkmJihpZT11ZS53aW5kb3c9PT11ZT91ZTooaWU9dWUub3duZXJEb2N1bWVudCk/aWUuZGVmYXVsdFZpZXd8fGllLnBhcmVudFdpbmRvdzp3aW5kb3csYWU/KEZlPWMucmVsYXRlZFRhcmdldHx8Yy50b0VsZW1lbnQsYWU9cmUsRmU9RmU/a3MoRmUpOm51bGwsRmUhPT1udWxsJiYoU3Q9byhGZSksVmU9RmUudGFnLEZlIT09U3R8fFZlIT09NSYmVmUhPT0yNyYmVmUhPT02KSYmKEZlPW51bGwpKTooYWU9bnVsbCxGZT1yZSksYWUhPT1GZSkpe2lmKFZlPUtFLGZlPSJvbk1vdXNlTGVhdmUiLFg9Im9uTW91c2VFbnRlciIsWT0ibW91c2UiLChhPT09InBvaW50ZXJvdXQifHxhPT09InBvaW50ZXJvdmVyIikmJihWZT1ZRSxmZT0ib25Qb2ludGVyTGVhdmUiLFg9Im9uUG9pbnRlckVudGVyIixZPSJwb2ludGVyIiksU3Q9YWU9PW51bGw/aWU6WHUoYWUpLG5lPUZlPT1udWxsP2llOlh1KEZlKSxpZT1uZXcgVmUoZmUsWSsibGVhdmUiLGFlLGMsdWUpLGllLnRhcmdldD1TdCxpZS5yZWxhdGVkVGFyZ2V0PW5lLGZlPW51bGwsa3ModWUpPT09cmUmJihWZT1uZXcgVmUoWCxZKyJlbnRlciIsRmUsYyx1ZSksVmUudGFyZ2V0PW5lLFZlLnJlbGF0ZWRUYXJnZXQ9U3QsZmU9VmUpLFN0PWZlLGFlJiZGZSl0Ontmb3IoVmU9YWUsWD1GZSxZPTAsbmU9VmU7bmU7bmU9cGwobmUpKVkrKztmb3IobmU9MCxmZT1YO2ZlO2ZlPXBsKGZlKSluZSsrO2Zvcig7MDxZLW5lOylWZT1wbChWZSksWS0tO2Zvcig7MDxuZS1ZOylYPXBsKFgpLG5lLS07Zm9yKDtZLS07KXtpZihWZT09PVh8fFghPT1udWxsJiZWZT09PVguYWx0ZXJuYXRlKWJyZWFrIHQ7VmU9cGwoVmUpLFg9cGwoWCl9VmU9bnVsbH1lbHNlIFZlPW51bGw7YWUhPT1udWxsJiYkUChkZSxpZSxhZSxWZSwhMSksRmUhPT1udWxsJiZTdCE9PW51bGwmJiRQKGRlLFN0LEZlLFZlLCEwKX19ZTp7aWYoaWU9cmU/WHUocmUpOndpbmRvdyxhZT1pZS5ub2RlTmFtZSYmaWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxhZT09PSJzZWxlY3QifHxhZT09PSJpbnB1dCImJmllLnR5cGU9PT0iZmlsZSIpdmFyIFJlPXJDO2Vsc2UgaWYodEMoaWUpKWlmKGlDKVJlPVk4O2Vsc2V7UmU9Szg7dmFyIHR0PUc4fWVsc2UgYWU9aWUubm9kZU5hbWUsIWFlfHxhZS50b0xvd2VyQ2FzZSgpIT09ImlucHV0Inx8aWUudHlwZSE9PSJjaGVja2JveCImJmllLnR5cGUhPT0icmFkaW8iP3JlJiZVdihyZS5lbGVtZW50VHlwZSkmJihSZT1yQyk6UmU9Vzg7aWYoUmUmJihSZT1SZShhLHJlKSkpe25DKGRlLFJlLGMsdWUpO2JyZWFrIGV9dHQmJnR0KGEsaWUscmUpLGE9PT0iZm9jdXNvdXQiJiZyZSYmaWUudHlwZT09PSJudW1iZXIiJiZyZS5tZW1vaXplZFByb3BzLnZhbHVlIT1udWxsJiZxdihpZSwibnVtYmVyIixpZS52YWx1ZSl9c3dpdGNoKHR0PXJlP1h1KHJlKTp3aW5kb3csYSl7Y2FzZSJmb2N1c2luIjoodEModHQpfHx0dC5jb250ZW50RWRpdGFibGU9PT0idHJ1ZSIpJiYoRnM9dHQsbmc9cmUsYWM9bnVsbCk7YnJlYWs7Y2FzZSJmb2N1c291dCI6YWM9bmc9RnM9bnVsbDticmVhaztjYXNlIm1vdXNlZG93biI6cmc9ITA7YnJlYWs7Y2FzZSJjb250ZXh0bWVudSI6Y2FzZSJtb3VzZXVwIjpjYXNlImRyYWdlbmQiOnJnPSExLGRDKGRlLGMsdWUpO2JyZWFrO2Nhc2Uic2VsZWN0aW9uY2hhbmdlIjppZihaOClicmVhaztjYXNlImtleWRvd24iOmNhc2Uia2V5dXAiOmRDKGRlLGMsdWUpfXZhciBJZTtpZihRdillOntzd2l0Y2goYSl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0Ijp2YXIgcWU9Im9uQ29tcG9zaXRpb25TdGFydCI7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9uZW5kIjpxZT0ib25Db21wb3NpdGlvbkVuZCI7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9udXBkYXRlIjpxZT0ib25Db21wb3NpdGlvblVwZGF0ZSI7YnJlYWsgZX1xZT12b2lkIDB9ZWxzZSB6cz9KRShhLGMpJiYocWU9Im9uQ29tcG9zaXRpb25FbmQiKTphPT09ImtleWRvd24iJiZjLmtleUNvZGU9PT0yMjkmJihxZT0ib25Db21wb3NpdGlvblN0YXJ0Iik7cWUmJihYRSYmYy5sb2NhbGUhPT0ia28iJiYoenN8fHFlIT09Im9uQ29tcG9zaXRpb25TdGFydCI/cWU9PT0ib25Db21wb3NpdGlvbkVuZCImJnpzJiYoSWU9SEUoKSk6KE9hPXVlLEt2PSJ2YWx1ZSJpbiBPYT9PYS52YWx1ZTpPYS50ZXh0Q29udGVudCx6cz0hMCkpLHR0PVZoKHJlLHFlKSwwPHR0Lmxlbmd0aCYmKHFlPW5ldyBXRShxZSxhLG51bGwsYyx1ZSksZGUucHVzaCh7ZXZlbnQ6cWUsbGlzdGVuZXJzOnR0fSksSWU/cWUuZGF0YT1JZTooSWU9ZUMoYyksSWUhPT1udWxsJiYocWUuZGF0YT1JZSkpKSksKEllPXE4P1U4KGEsYyk6ejgoYSxjKSkmJihxZT1WaChyZSwib25CZWZvcmVJbnB1dCIpLDA8cWUubGVuZ3RoJiYodHQ9bmV3IFdFKCJvbkJlZm9yZUlucHV0IiwiYmVmb3JlaW5wdXQiLG51bGwsYyx1ZSksZGUucHVzaCh7ZXZlbnQ6dHQsbGlzdGVuZXJzOnFlfSksdHQuZGF0YT1JZSkpLE45KGRlLGEscmUsYyx1ZSl9TFAoZGUsbCl9KX1mdW5jdGlvbiBOYyhhLGwsYyl7cmV0dXJue2luc3RhbmNlOmEsbGlzdGVuZXI6bCxjdXJyZW50VGFyZ2V0OmN9fWZ1bmN0aW9uIFZoKGEsbCl7Zm9yKHZhciBjPWwrIkNhcHR1cmUiLGg9W107YSE9PW51bGw7KXt2YXIgdj1hLFM9di5zdGF0ZU5vZGU7aWYodj12LnRhZyx2IT09NSYmdiE9PTI2JiZ2IT09Mjd8fFM9PT1udWxsfHwodj1adShhLGMpLHYhPW51bGwmJmgudW5zaGlmdChOYyhhLHYsUykpLHY9WnUoYSxsKSx2IT1udWxsJiZoLnB1c2goTmMoYSx2LFMpKSksYS50YWc9PT0zKXJldHVybiBoO2E9YS5yZXR1cm59cmV0dXJuW119ZnVuY3Rpb24gcGwoYSl7aWYoYT09PW51bGwpcmV0dXJuIG51bGw7ZG8gYT1hLnJldHVybjt3aGlsZShhJiZhLnRhZyE9PTUmJmEudGFnIT09MjcpO3JldHVybiBhfHxudWxsfWZ1bmN0aW9uICRQKGEsbCxjLGgsdil7Zm9yKHZhciBTPWwuX3JlYWN0TmFtZSxNPVtdO2MhPT1udWxsJiZjIT09aDspe3ZhciBEPWMsRz1ELmFsdGVybmF0ZSxyZT1ELnN0YXRlTm9kZTtpZihEPUQudGFnLEchPT1udWxsJiZHPT09aClicmVhaztEIT09NSYmRCE9PTI2JiZEIT09Mjd8fHJlPT09bnVsbHx8KEc9cmUsdj8ocmU9WnUoYyxTKSxyZSE9bnVsbCYmTS51bnNoaWZ0KE5jKGMscmUsRykpKTp2fHwocmU9WnUoYyxTKSxyZSE9bnVsbCYmTS5wdXNoKE5jKGMscmUsRykpKSksYz1jLnJldHVybn1NLmxlbmd0aCE9PTAmJmEucHVzaCh7ZXZlbnQ6bCxsaXN0ZW5lcnM6TX0pfXZhciBJOT0vXHJcbj8vZywkOT0vXHUwMDAwfFx1RkZGRC9nO2Z1bmN0aW9uIEJQKGEpe3JldHVybih0eXBlb2YgYT09InN0cmluZyI/YToiIithKS5yZXBsYWNlKEk5LGAKYCkucmVwbGFjZSgkOSwiIil9ZnVuY3Rpb24gVlAoYSxsKXtyZXR1cm4gbD1CUChsKSxCUChhKT09PWx9ZnVuY3Rpb24gcWgoKXt9ZnVuY3Rpb24gd3QoYSxsLGMsaCx2LFMpe3N3aXRjaChjKXtjYXNlImNoaWxkcmVuIjp0eXBlb2YgaD09InN0cmluZyI/bD09PSJib2R5Inx8bD09PSJ0ZXh0YXJlYSImJmg9PT0iInx8VnMoYSxoKToodHlwZW9mIGg9PSJudW1iZXIifHx0eXBlb2YgaD09ImJpZ2ludCIpJiZsIT09ImJvZHkiJiZWcyhhLCIiK2gpO2JyZWFrO2Nhc2UiY2xhc3NOYW1lIjpHZChhLCJjbGFzcyIsaCk7YnJlYWs7Y2FzZSJ0YWJJbmRleCI6R2QoYSwidGFiaW5kZXgiLGgpO2JyZWFrO2Nhc2UiZGlyIjpjYXNlInJvbGUiOmNhc2Uidmlld0JveCI6Y2FzZSJ3aWR0aCI6Y2FzZSJoZWlnaHQiOkdkKGEsYyxoKTticmVhaztjYXNlInN0eWxlIjpVRShhLGgsUyk7YnJlYWs7Y2FzZSJkYXRhIjppZihsIT09Im9iamVjdCIpe0dkKGEsImRhdGEiLGgpO2JyZWFrfWNhc2Uic3JjIjpjYXNlImhyZWYiOmlmKGg9PT0iIiYmKGwhPT0iYSJ8fGMhPT0iaHJlZiIpKXthLnJlbW92ZUF0dHJpYnV0ZShjKTticmVha31pZihoPT1udWxsfHx0eXBlb2YgaD09ImZ1bmN0aW9uInx8dHlwZW9mIGg9PSJzeW1ib2wifHx0eXBlb2YgaD09ImJvb2xlYW4iKXthLnJlbW92ZUF0dHJpYnV0ZShjKTticmVha31oPVlkKCIiK2gpLGEuc2V0QXR0cmlidXRlKGMsaCk7YnJlYWs7Y2FzZSJhY3Rpb24iOmNhc2UiZm9ybUFjdGlvbiI6aWYodHlwZW9mIGg9PSJmdW5jdGlvbiIpe2Euc2V0QXR0cmlidXRlKGMsImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdBIFJlYWN0IGZvcm0gd2FzIHVuZXhwZWN0ZWRseSBzdWJtaXR0ZWQuIElmIHlvdSBjYWxsZWQgZm9ybS5zdWJtaXQoKSBtYW51YWxseSwgY29uc2lkZXIgdXNpbmcgZm9ybS5yZXF1ZXN0U3VibWl0KCkgaW5zdGVhZC4gSWYgeW91XFwncmUgdHJ5aW5nIHRvIHVzZSBldmVudC5zdG9wUHJvcGFnYXRpb24oKSBpbiBhIHN1Ym1pdCBldmVudCBoYW5kbGVyLCBjb25zaWRlciBhbHNvIGNhbGxpbmcgZXZlbnQucHJldmVudERlZmF1bHQoKS4nKSIpO2JyZWFrfWVsc2UgdHlwZW9mIFM9PSJmdW5jdGlvbiImJihjPT09ImZvcm1BY3Rpb24iPyhsIT09ImlucHV0IiYmd3QoYSxsLCJuYW1lIix2Lm5hbWUsdixudWxsKSx3dChhLGwsImZvcm1FbmNUeXBlIix2LmZvcm1FbmNUeXBlLHYsbnVsbCksd3QoYSxsLCJmb3JtTWV0aG9kIix2LmZvcm1NZXRob2QsdixudWxsKSx3dChhLGwsImZvcm1UYXJnZXQiLHYuZm9ybVRhcmdldCx2LG51bGwpKTood3QoYSxsLCJlbmNUeXBlIix2LmVuY1R5cGUsdixudWxsKSx3dChhLGwsIm1ldGhvZCIsdi5tZXRob2QsdixudWxsKSx3dChhLGwsInRhcmdldCIsdi50YXJnZXQsdixudWxsKSkpO2lmKGg9PW51bGx8fHR5cGVvZiBoPT0ic3ltYm9sInx8dHlwZW9mIGg9PSJib29sZWFuIil7YS5yZW1vdmVBdHRyaWJ1dGUoYyk7YnJlYWt9aD1ZZCgiIitoKSxhLnNldEF0dHJpYnV0ZShjLGgpO2JyZWFrO2Nhc2Uib25DbGljayI6aCE9bnVsbCYmKGEub25jbGljaz1xaCk7YnJlYWs7Y2FzZSJvblNjcm9sbCI6aCE9bnVsbCYmaXQoInNjcm9sbCIsYSk7YnJlYWs7Y2FzZSJvblNjcm9sbEVuZCI6aCE9bnVsbCYmaXQoInNjcm9sbGVuZCIsYSk7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYoaCE9bnVsbCl7aWYodHlwZW9mIGghPSJvYmplY3QifHwhKCJfX2h0bWwiaW4gaCkpdGhyb3cgRXJyb3Iocig2MSkpO2lmKGM9aC5fX2h0bWwsYyE9bnVsbCl7aWYodi5jaGlsZHJlbiE9bnVsbCl0aHJvdyBFcnJvcihyKDYwKSk7YS5pbm5lckhUTUw9Y319YnJlYWs7Y2FzZSJtdWx0aXBsZSI6YS5tdWx0aXBsZT1oJiZ0eXBlb2YgaCE9ImZ1bmN0aW9uIiYmdHlwZW9mIGghPSJzeW1ib2wiO2JyZWFrO2Nhc2UibXV0ZWQiOmEubXV0ZWQ9aCYmdHlwZW9mIGghPSJmdW5jdGlvbiImJnR5cGVvZiBoIT0ic3ltYm9sIjticmVhaztjYXNlInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyI6Y2FzZSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciOmNhc2UiZGVmYXVsdFZhbHVlIjpjYXNlImRlZmF1bHRDaGVja2VkIjpjYXNlImlubmVySFRNTCI6Y2FzZSJyZWYiOmJyZWFrO2Nhc2UiYXV0b0ZvY3VzIjpicmVhaztjYXNlInhsaW5rSHJlZiI6aWYoaD09bnVsbHx8dHlwZW9mIGg9PSJmdW5jdGlvbiJ8fHR5cGVvZiBoPT0iYm9vbGVhbiJ8fHR5cGVvZiBoPT0ic3ltYm9sIil7YS5yZW1vdmVBdHRyaWJ1dGUoInhsaW5rOmhyZWYiKTticmVha31jPVlkKCIiK2gpLGEuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bGluazpocmVmIixjKTticmVhaztjYXNlImNvbnRlbnRFZGl0YWJsZSI6Y2FzZSJzcGVsbENoZWNrIjpjYXNlImRyYWdnYWJsZSI6Y2FzZSJ2YWx1ZSI6Y2FzZSJhdXRvUmV2ZXJzZSI6Y2FzZSJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIjpjYXNlImZvY3VzYWJsZSI6Y2FzZSJwcmVzZXJ2ZUFscGhhIjpoIT1udWxsJiZ0eXBlb2YgaCE9ImZ1bmN0aW9uIiYmdHlwZW9mIGghPSJzeW1ib2wiP2Euc2V0QXR0cmlidXRlKGMsIiIraCk6YS5yZW1vdmVBdHRyaWJ1dGUoYyk7YnJlYWs7Y2FzZSJpbmVydCI6Y2FzZSJhbGxvd0Z1bGxTY3JlZW4iOmNhc2UiYXN5bmMiOmNhc2UiYXV0b1BsYXkiOmNhc2UiY29udHJvbHMiOmNhc2UiZGVmYXVsdCI6Y2FzZSJkZWZlciI6Y2FzZSJkaXNhYmxlZCI6Y2FzZSJkaXNhYmxlUGljdHVyZUluUGljdHVyZSI6Y2FzZSJkaXNhYmxlUmVtb3RlUGxheWJhY2siOmNhc2UiZm9ybU5vVmFsaWRhdGUiOmNhc2UiaGlkZGVuIjpjYXNlImxvb3AiOmNhc2Uibm9Nb2R1bGUiOmNhc2Uibm9WYWxpZGF0ZSI6Y2FzZSJvcGVuIjpjYXNlInBsYXlzSW5saW5lIjpjYXNlInJlYWRPbmx5IjpjYXNlInJlcXVpcmVkIjpjYXNlInJldmVyc2VkIjpjYXNlInNjb3BlZCI6Y2FzZSJzZWFtbGVzcyI6Y2FzZSJpdGVtU2NvcGUiOmgmJnR5cGVvZiBoIT0iZnVuY3Rpb24iJiZ0eXBlb2YgaCE9InN5bWJvbCI/YS5zZXRBdHRyaWJ1dGUoYywiIik6YS5yZW1vdmVBdHRyaWJ1dGUoYyk7YnJlYWs7Y2FzZSJjYXB0dXJlIjpjYXNlImRvd25sb2FkIjpoPT09ITA/YS5zZXRBdHRyaWJ1dGUoYywiIik6aCE9PSExJiZoIT1udWxsJiZ0eXBlb2YgaCE9ImZ1bmN0aW9uIiYmdHlwZW9mIGghPSJzeW1ib2wiP2Euc2V0QXR0cmlidXRlKGMsaCk6YS5yZW1vdmVBdHRyaWJ1dGUoYyk7YnJlYWs7Y2FzZSJjb2xzIjpjYXNlInJvd3MiOmNhc2Uic2l6ZSI6Y2FzZSJzcGFuIjpoIT1udWxsJiZ0eXBlb2YgaCE9ImZ1bmN0aW9uIiYmdHlwZW9mIGghPSJzeW1ib2wiJiYhaXNOYU4oaCkmJjE8PWg/YS5zZXRBdHRyaWJ1dGUoYyxoKTphLnJlbW92ZUF0dHJpYnV0ZShjKTticmVhaztjYXNlInJvd1NwYW4iOmNhc2Uic3RhcnQiOmg9PW51bGx8fHR5cGVvZiBoPT0iZnVuY3Rpb24ifHx0eXBlb2YgaD09InN5bWJvbCJ8fGlzTmFOKGgpP2EucmVtb3ZlQXR0cmlidXRlKGMpOmEuc2V0QXR0cmlidXRlKGMsaCk7YnJlYWs7Y2FzZSJwb3BvdmVyIjppdCgiYmVmb3JldG9nZ2xlIixhKSxpdCgidG9nZ2xlIixhKSxIZChhLCJwb3BvdmVyIixoKTticmVhaztjYXNlInhsaW5rQWN0dWF0ZSI6JGkoYSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOmFjdHVhdGUiLGgpO2JyZWFrO2Nhc2UieGxpbmtBcmNyb2xlIjokaShhLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6YXJjcm9sZSIsaCk7YnJlYWs7Y2FzZSJ4bGlua1JvbGUiOiRpKGEsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bGluazpyb2xlIixoKTticmVhaztjYXNlInhsaW5rU2hvdyI6JGkoYSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOnNob3ciLGgpO2JyZWFrO2Nhc2UieGxpbmtUaXRsZSI6JGkoYSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOnRpdGxlIixoKTticmVhaztjYXNlInhsaW5rVHlwZSI6JGkoYSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOnR5cGUiLGgpO2JyZWFrO2Nhc2UieG1sQmFzZSI6JGkoYSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOmJhc2UiLGgpO2JyZWFrO2Nhc2UieG1sTGFuZyI6JGkoYSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOmxhbmciLGgpO2JyZWFrO2Nhc2UieG1sU3BhY2UiOiRpKGEsImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsInhtbDpzcGFjZSIsaCk7YnJlYWs7Y2FzZSJpcyI6SGQoYSwiaXMiLGgpO2JyZWFrO2Nhc2UiaW5uZXJUZXh0IjpjYXNlInRleHRDb250ZW50IjpicmVhaztkZWZhdWx0OighKDI8Yy5sZW5ndGgpfHxjWzBdIT09Im8iJiZjWzBdIT09Ik8ifHxjWzFdIT09Im4iJiZjWzFdIT09Ik4iKSYmKGM9cDguZ2V0KGMpfHxjLEhkKGEsYyxoKSl9fWZ1bmN0aW9uIFRiKGEsbCxjLGgsdixTKXtzd2l0Y2goYyl7Y2FzZSJzdHlsZSI6VUUoYSxoLFMpO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOmlmKGghPW51bGwpe2lmKHR5cGVvZiBoIT0ib2JqZWN0Inx8ISgiX19odG1sImluIGgpKXRocm93IEVycm9yKHIoNjEpKTtpZihjPWguX19odG1sLGMhPW51bGwpe2lmKHYuY2hpbGRyZW4hPW51bGwpdGhyb3cgRXJyb3Iocig2MCkpO2EuaW5uZXJIVE1MPWN9fWJyZWFrO2Nhc2UiY2hpbGRyZW4iOnR5cGVvZiBoPT0ic3RyaW5nIj9WcyhhLGgpOih0eXBlb2YgaD09Im51bWJlciJ8fHR5cGVvZiBoPT0iYmlnaW50IikmJlZzKGEsIiIraCk7YnJlYWs7Y2FzZSJvblNjcm9sbCI6aCE9bnVsbCYmaXQoInNjcm9sbCIsYSk7YnJlYWs7Y2FzZSJvblNjcm9sbEVuZCI6aCE9bnVsbCYmaXQoInNjcm9sbGVuZCIsYSk7YnJlYWs7Y2FzZSJvbkNsaWNrIjpoIT1udWxsJiYoYS5vbmNsaWNrPXFoKTticmVhaztjYXNlInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyI6Y2FzZSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciOmNhc2UiaW5uZXJIVE1MIjpjYXNlInJlZiI6YnJlYWs7Y2FzZSJpbm5lclRleHQiOmNhc2UidGV4dENvbnRlbnQiOmJyZWFrO2RlZmF1bHQ6aWYoIU1FLmhhc093blByb3BlcnR5KGMpKWU6e2lmKGNbMF09PT0ibyImJmNbMV09PT0ibiImJih2PWMuZW5kc1dpdGgoIkNhcHR1cmUiKSxsPWMuc2xpY2UoMix2P2MubGVuZ3RoLTc6dm9pZCAwKSxTPWFbUW5dfHxudWxsLFM9UyE9bnVsbD9TW2NdOm51bGwsdHlwZW9mIFM9PSJmdW5jdGlvbiImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihsLFMsdiksdHlwZW9mIGg9PSJmdW5jdGlvbiIpKXt0eXBlb2YgUyE9ImZ1bmN0aW9uIiYmUyE9PW51bGwmJihjIGluIGE/YVtjXT1udWxsOmEuaGFzQXR0cmlidXRlKGMpJiZhLnJlbW92ZUF0dHJpYnV0ZShjKSksYS5hZGRFdmVudExpc3RlbmVyKGwsaCx2KTticmVhayBlfWMgaW4gYT9hW2NdPWg6aD09PSEwP2Euc2V0QXR0cmlidXRlKGMsIiIpOkhkKGEsYyxoKX19fWZ1bmN0aW9uIGpuKGEsbCxjKXtzd2l0Y2gobCl7Y2FzZSJkaXYiOmNhc2Uic3BhbiI6Y2FzZSJzdmciOmNhc2UicGF0aCI6Y2FzZSJhIjpjYXNlImciOmNhc2UicCI6Y2FzZSJsaSI6YnJlYWs7Y2FzZSJpbWciOml0KCJlcnJvciIsYSksaXQoImxvYWQiLGEpO3ZhciBoPSExLHY9ITEsUztmb3IoUyBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoUykpe3ZhciBNPWNbU107aWYoTSE9bnVsbClzd2l0Y2goUyl7Y2FzZSJzcmMiOmg9ITA7YnJlYWs7Y2FzZSJzcmNTZXQiOnY9ITA7YnJlYWs7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IocigxMzcsbCkpO2RlZmF1bHQ6d3QoYSxsLFMsTSxjLG51bGwpfX12JiZ3dChhLGwsInNyY1NldCIsYy5zcmNTZXQsYyxudWxsKSxoJiZ3dChhLGwsInNyYyIsYy5zcmMsYyxudWxsKTtyZXR1cm47Y2FzZSJpbnB1dCI6aXQoImludmFsaWQiLGEpO3ZhciBEPVM9TT12PW51bGwsRz1udWxsLHJlPW51bGw7Zm9yKGggaW4gYylpZihjLmhhc093blByb3BlcnR5KGgpKXt2YXIgdWU9Y1toXTtpZih1ZSE9bnVsbClzd2l0Y2goaCl7Y2FzZSJuYW1lIjp2PXVlO2JyZWFrO2Nhc2UidHlwZSI6TT11ZTticmVhaztjYXNlImNoZWNrZWQiOkc9dWU7YnJlYWs7Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6cmU9dWU7YnJlYWs7Y2FzZSJ2YWx1ZSI6Uz11ZTticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6RD11ZTticmVhaztjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjppZih1ZSE9bnVsbCl0aHJvdyBFcnJvcihyKDEzNyxsKSk7YnJlYWs7ZGVmYXVsdDp3dChhLGwsaCx1ZSxjLG51bGwpfX0kRShhLFMsRCxHLHJlLE0sdiwhMSksS2QoYSk7cmV0dXJuO2Nhc2Uic2VsZWN0IjppdCgiaW52YWxpZCIsYSksaD1NPVM9bnVsbDtmb3IodiBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkodikmJihEPWNbdl0sRCE9bnVsbCkpc3dpdGNoKHYpe2Nhc2UidmFsdWUiOlM9RDticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6TT1EO2JyZWFrO2Nhc2UibXVsdGlwbGUiOmg9RDtkZWZhdWx0Ond0KGEsbCx2LEQsYyxudWxsKX1sPVMsYz1NLGEubXVsdGlwbGU9ISFoLGwhPW51bGw/QnMoYSwhIWgsbCwhMSk6YyE9bnVsbCYmQnMoYSwhIWgsYywhMCk7cmV0dXJuO2Nhc2UidGV4dGFyZWEiOml0KCJpbnZhbGlkIixhKSxTPXY9aD1udWxsO2ZvcihNIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShNKSYmKEQ9Y1tNXSxEIT1udWxsKSlzd2l0Y2goTSl7Y2FzZSJ2YWx1ZSI6aD1EO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjp2PUQ7YnJlYWs7Y2FzZSJjaGlsZHJlbiI6Uz1EO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOmlmKEQhPW51bGwpdGhyb3cgRXJyb3Iocig5MSkpO2JyZWFrO2RlZmF1bHQ6d3QoYSxsLE0sRCxjLG51bGwpfVZFKGEsaCx2LFMpLEtkKGEpO3JldHVybjtjYXNlIm9wdGlvbiI6Zm9yKEcgaW4gYyljLmhhc093blByb3BlcnR5KEcpJiYoaD1jW0ddLGghPW51bGwpJiYoRz09PSJzZWxlY3RlZCI/YS5zZWxlY3RlZD1oJiZ0eXBlb2YgaCE9ImZ1bmN0aW9uIiYmdHlwZW9mIGghPSJzeW1ib2wiOnd0KGEsbCxHLGgsYyxudWxsKSk7cmV0dXJuO2Nhc2UiZGlhbG9nIjppdCgiYmVmb3JldG9nZ2xlIixhKSxpdCgidG9nZ2xlIixhKSxpdCgiY2FuY2VsIixhKSxpdCgiY2xvc2UiLGEpO2JyZWFrO2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6aXQoImxvYWQiLGEpO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmZvcihoPTA7aDxSYy5sZW5ndGg7aCsrKWl0KFJjW2hdLGEpO2JyZWFrO2Nhc2UiaW1hZ2UiOml0KCJlcnJvciIsYSksaXQoImxvYWQiLGEpO2JyZWFrO2Nhc2UiZGV0YWlscyI6aXQoInRvZ2dsZSIsYSk7YnJlYWs7Y2FzZSJlbWJlZCI6Y2FzZSJzb3VyY2UiOmNhc2UibGluayI6aXQoImVycm9yIixhKSxpdCgibG9hZCIsYSk7Y2FzZSJhcmVhIjpjYXNlImJhc2UiOmNhc2UiYnIiOmNhc2UiY29sIjpjYXNlImhyIjpjYXNlImtleWdlbiI6Y2FzZSJtZXRhIjpjYXNlInBhcmFtIjpjYXNlInRyYWNrIjpjYXNlIndiciI6Y2FzZSJtZW51aXRlbSI6Zm9yKHJlIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShyZSkmJihoPWNbcmVdLGghPW51bGwpKXN3aXRjaChyZSl7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IocigxMzcsbCkpO2RlZmF1bHQ6d3QoYSxsLHJlLGgsYyxudWxsKX1yZXR1cm47ZGVmYXVsdDppZihVdihsKSl7Zm9yKHVlIGluIGMpYy5oYXNPd25Qcm9wZXJ0eSh1ZSkmJihoPWNbdWVdLGghPT12b2lkIDAmJlRiKGEsbCx1ZSxoLGMsdm9pZCAwKSk7cmV0dXJufX1mb3IoRCBpbiBjKWMuaGFzT3duUHJvcGVydHkoRCkmJihoPWNbRF0saCE9bnVsbCYmd3QoYSxsLEQsaCxjLG51bGwpKX1mdW5jdGlvbiBCOShhLGwsYyxoKXtzd2l0Y2gobCl7Y2FzZSJkaXYiOmNhc2Uic3BhbiI6Y2FzZSJzdmciOmNhc2UicGF0aCI6Y2FzZSJhIjpjYXNlImciOmNhc2UicCI6Y2FzZSJsaSI6YnJlYWs7Y2FzZSJpbnB1dCI6dmFyIHY9bnVsbCxTPW51bGwsTT1udWxsLEQ9bnVsbCxHPW51bGwscmU9bnVsbCx1ZT1udWxsO2ZvcihhZSBpbiBjKXt2YXIgZGU9Y1thZV07aWYoYy5oYXNPd25Qcm9wZXJ0eShhZSkmJmRlIT1udWxsKXN3aXRjaChhZSl7Y2FzZSJjaGVja2VkIjpicmVhaztjYXNlInZhbHVlIjpicmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6Rz1kZTtkZWZhdWx0OmguaGFzT3duUHJvcGVydHkoYWUpfHx3dChhLGwsYWUsbnVsbCxoLGRlKX19Zm9yKHZhciBpZSBpbiBoKXt2YXIgYWU9aFtpZV07aWYoZGU9Y1tpZV0saC5oYXNPd25Qcm9wZXJ0eShpZSkmJihhZSE9bnVsbHx8ZGUhPW51bGwpKXN3aXRjaChpZSl7Y2FzZSJ0eXBlIjpTPWFlO2JyZWFrO2Nhc2UibmFtZSI6dj1hZTticmVhaztjYXNlImNoZWNrZWQiOnJlPWFlO2JyZWFrO2Nhc2UiZGVmYXVsdENoZWNrZWQiOnVlPWFlO2JyZWFrO2Nhc2UidmFsdWUiOk09YWU7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOkQ9YWU7YnJlYWs7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYoYWUhPW51bGwpdGhyb3cgRXJyb3IocigxMzcsbCkpO2JyZWFrO2RlZmF1bHQ6YWUhPT1kZSYmd3QoYSxsLGllLGFlLGgsZGUpfX1WdihhLE0sRCxHLHJlLHVlLFMsdik7cmV0dXJuO2Nhc2Uic2VsZWN0IjphZT1NPUQ9aWU9bnVsbDtmb3IoUyBpbiBjKWlmKEc9Y1tTXSxjLmhhc093blByb3BlcnR5KFMpJiZHIT1udWxsKXN3aXRjaChTKXtjYXNlInZhbHVlIjpicmVhaztjYXNlIm11bHRpcGxlIjphZT1HO2RlZmF1bHQ6aC5oYXNPd25Qcm9wZXJ0eShTKXx8d3QoYSxsLFMsbnVsbCxoLEcpfWZvcih2IGluIGgpaWYoUz1oW3ZdLEc9Y1t2XSxoLmhhc093blByb3BlcnR5KHYpJiYoUyE9bnVsbHx8RyE9bnVsbCkpc3dpdGNoKHYpe2Nhc2UidmFsdWUiOmllPVM7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOkQ9UzticmVhaztjYXNlIm11bHRpcGxlIjpNPVM7ZGVmYXVsdDpTIT09RyYmd3QoYSxsLHYsUyxoLEcpfWw9RCxjPU0saD1hZSxpZSE9bnVsbD9CcyhhLCEhYyxpZSwhMSk6ISFoIT0hIWMmJihsIT1udWxsP0JzKGEsISFjLGwsITApOkJzKGEsISFjLGM/W106IiIsITEpKTtyZXR1cm47Y2FzZSJ0ZXh0YXJlYSI6YWU9aWU9bnVsbDtmb3IoRCBpbiBjKWlmKHY9Y1tEXSxjLmhhc093blByb3BlcnR5KEQpJiZ2IT1udWxsJiYhaC5oYXNPd25Qcm9wZXJ0eShEKSlzd2l0Y2goRCl7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJjaGlsZHJlbiI6YnJlYWs7ZGVmYXVsdDp3dChhLGwsRCxudWxsLGgsdil9Zm9yKE0gaW4gaClpZih2PWhbTV0sUz1jW01dLGguaGFzT3duUHJvcGVydHkoTSkmJih2IT1udWxsfHxTIT1udWxsKSlzd2l0Y2goTSl7Y2FzZSJ2YWx1ZSI6aWU9djticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6YWU9djticmVhaztjYXNlImNoaWxkcmVuIjpicmVhaztjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjppZih2IT1udWxsKXRocm93IEVycm9yKHIoOTEpKTticmVhaztkZWZhdWx0OnYhPT1TJiZ3dChhLGwsTSx2LGgsUyl9QkUoYSxpZSxhZSk7cmV0dXJuO2Nhc2Uib3B0aW9uIjpmb3IodmFyIEZlIGluIGMpaWU9Y1tGZV0sYy5oYXNPd25Qcm9wZXJ0eShGZSkmJmllIT1udWxsJiYhaC5oYXNPd25Qcm9wZXJ0eShGZSkmJihGZT09PSJzZWxlY3RlZCI/YS5zZWxlY3RlZD0hMTp3dChhLGwsRmUsbnVsbCxoLGllKSk7Zm9yKEcgaW4gaClpZT1oW0ddLGFlPWNbR10saC5oYXNPd25Qcm9wZXJ0eShHKSYmaWUhPT1hZSYmKGllIT1udWxsfHxhZSE9bnVsbCkmJihHPT09InNlbGVjdGVkIj9hLnNlbGVjdGVkPWllJiZ0eXBlb2YgaWUhPSJmdW5jdGlvbiImJnR5cGVvZiBpZSE9InN5bWJvbCI6d3QoYSxsLEcsaWUsaCxhZSkpO3JldHVybjtjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlImFyZWEiOmNhc2UiYmFzZSI6Y2FzZSJiciI6Y2FzZSJjb2wiOmNhc2UiZW1iZWQiOmNhc2UiaHIiOmNhc2Uia2V5Z2VuIjpjYXNlIm1ldGEiOmNhc2UicGFyYW0iOmNhc2Uic291cmNlIjpjYXNlInRyYWNrIjpjYXNlIndiciI6Y2FzZSJtZW51aXRlbSI6Zm9yKHZhciBWZSBpbiBjKWllPWNbVmVdLGMuaGFzT3duUHJvcGVydHkoVmUpJiZpZSE9bnVsbCYmIWguaGFzT3duUHJvcGVydHkoVmUpJiZ3dChhLGwsVmUsbnVsbCxoLGllKTtmb3IocmUgaW4gaClpZihpZT1oW3JlXSxhZT1jW3JlXSxoLmhhc093blByb3BlcnR5KHJlKSYmaWUhPT1hZSYmKGllIT1udWxsfHxhZSE9bnVsbCkpc3dpdGNoKHJlKXtjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjppZihpZSE9bnVsbCl0aHJvdyBFcnJvcihyKDEzNyxsKSk7YnJlYWs7ZGVmYXVsdDp3dChhLGwscmUsaWUsaCxhZSl9cmV0dXJuO2RlZmF1bHQ6aWYoVXYobCkpe2Zvcih2YXIgU3QgaW4gYylpZT1jW1N0XSxjLmhhc093blByb3BlcnR5KFN0KSYmaWUhPT12b2lkIDAmJiFoLmhhc093blByb3BlcnR5KFN0KSYmVGIoYSxsLFN0LHZvaWQgMCxoLGllKTtmb3IodWUgaW4gaClpZT1oW3VlXSxhZT1jW3VlXSwhaC5oYXNPd25Qcm9wZXJ0eSh1ZSl8fGllPT09YWV8fGllPT09dm9pZCAwJiZhZT09PXZvaWQgMHx8VGIoYSxsLHVlLGllLGgsYWUpO3JldHVybn19Zm9yKHZhciBYIGluIGMpaWU9Y1tYXSxjLmhhc093blByb3BlcnR5KFgpJiZpZSE9bnVsbCYmIWguaGFzT3duUHJvcGVydHkoWCkmJnd0KGEsbCxYLG51bGwsaCxpZSk7Zm9yKGRlIGluIGgpaWU9aFtkZV0sYWU9Y1tkZV0sIWguaGFzT3duUHJvcGVydHkoZGUpfHxpZT09PWFlfHxpZT09bnVsbCYmYWU9PW51bGx8fHd0KGEsbCxkZSxpZSxoLGFlKX12YXIgRWI9bnVsbCxDYj1udWxsO2Z1bmN0aW9uIFVoKGEpe3JldHVybiBhLm5vZGVUeXBlPT09OT9hOmEub3duZXJEb2N1bWVudH1mdW5jdGlvbiBxUChhKXtzd2l0Y2goYSl7Y2FzZSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI6cmV0dXJuIDE7Y2FzZSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBVUChhLGwpe2lmKGE9PT0wKXN3aXRjaChsKXtjYXNlInN2ZyI6cmV0dXJuIDE7Y2FzZSJtYXRoIjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfXJldHVybiBhPT09MSYmbD09PSJmb3JlaWduT2JqZWN0Ij8wOmF9ZnVuY3Rpb24gamIoYSxsKXtyZXR1cm4gYT09PSJ0ZXh0YXJlYSJ8fGE9PT0ibm9zY3JpcHQifHx0eXBlb2YgbC5jaGlsZHJlbj09InN0cmluZyJ8fHR5cGVvZiBsLmNoaWxkcmVuPT0ibnVtYmVyInx8dHlwZW9mIGwuY2hpbGRyZW49PSJiaWdpbnQifHx0eXBlb2YgbC5kYW5nZXJvdXNseVNldElubmVySFRNTD09Im9iamVjdCImJmwuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPT1udWxsJiZsLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCE9bnVsbH12YXIgUGI9bnVsbDtmdW5jdGlvbiBWOSgpe3ZhciBhPXdpbmRvdy5ldmVudDtyZXR1cm4gYSYmYS50eXBlPT09InBvcHN0YXRlIj9hPT09UGI/ITE6KFBiPWEsITApOihQYj1udWxsLCExKX12YXIgelA9dHlwZW9mIHNldFRpbWVvdXQ9PSJmdW5jdGlvbiI/c2V0VGltZW91dDp2b2lkIDAscTk9dHlwZW9mIGNsZWFyVGltZW91dD09ImZ1bmN0aW9uIj9jbGVhclRpbWVvdXQ6dm9pZCAwLEZQPXR5cGVvZiBQcm9taXNlPT0iZnVuY3Rpb24iP1Byb21pc2U6dm9pZCAwLFU5PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz09ImZ1bmN0aW9uIj9xdWV1ZU1pY3JvdGFzazp0eXBlb2YgRlA8InUiP2Z1bmN0aW9uKGEpe3JldHVybiBGUC5yZXNvbHZlKG51bGwpLnRoZW4oYSkuY2F0Y2goejkpfTp6UDtmdW5jdGlvbiB6OShhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYX0pfWZ1bmN0aW9uIHFhKGEpe3JldHVybiBhPT09ImhlYWQifWZ1bmN0aW9uIEhQKGEsbCl7dmFyIGM9bCxoPTAsdj0wO2Rve3ZhciBTPWMubmV4dFNpYmxpbmc7aWYoYS5yZW1vdmVDaGlsZChjKSxTJiZTLm5vZGVUeXBlPT09OClpZihjPVMuZGF0YSxjPT09Ii8kIil7aWYoMDxoJiY4Pmgpe2M9aDt2YXIgTT1hLm93bmVyRG9jdW1lbnQ7aWYoYyYxJiZrYyhNLmRvY3VtZW50RWxlbWVudCksYyYyJiZrYyhNLmJvZHkpLGMmNClmb3IoYz1NLmhlYWQsa2MoYyksTT1jLmZpcnN0Q2hpbGQ7TTspe3ZhciBEPU0ubmV4dFNpYmxpbmcsRz1NLm5vZGVOYW1lO01bWXVdfHxHPT09IlNDUklQVCJ8fEc9PT0iU1RZTEUifHxHPT09IkxJTksiJiZNLnJlbC50b0xvd2VyQ2FzZSgpPT09InN0eWxlc2hlZXQifHxjLnJlbW92ZUNoaWxkKE0pLE09RH19aWYodj09PTApe2EucmVtb3ZlQ2hpbGQoUyksVWMobCk7cmV0dXJufXYtLX1lbHNlIGM9PT0iJCJ8fGM9PT0iJD8ifHxjPT09IiQhIj92Kys6aD1jLmNoYXJDb2RlQXQoMCktNDg7ZWxzZSBoPTA7Yz1TfXdoaWxlKGMpO1VjKGwpfWZ1bmN0aW9uIE1iKGEpe3ZhciBsPWEuZmlyc3RDaGlsZDtmb3IobCYmbC5ub2RlVHlwZT09PTEwJiYobD1sLm5leHRTaWJsaW5nKTtsOyl7dmFyIGM9bDtzd2l0Y2gobD1sLm5leHRTaWJsaW5nLGMubm9kZU5hbWUpe2Nhc2UiSFRNTCI6Y2FzZSJIRUFEIjpjYXNlIkJPRFkiOk1iKGMpLEx2KGMpO2NvbnRpbnVlO2Nhc2UiU0NSSVBUIjpjYXNlIlNUWUxFIjpjb250aW51ZTtjYXNlIkxJTksiOmlmKGMucmVsLnRvTG93ZXJDYXNlKCk9PT0ic3R5bGVzaGVldCIpY29udGludWV9YS5yZW1vdmVDaGlsZChjKX19ZnVuY3Rpb24gRjkoYSxsLGMsaCl7Zm9yKDthLm5vZGVUeXBlPT09MTspe3ZhciB2PWM7aWYoYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09bC50b0xvd2VyQ2FzZSgpKXtpZighaCYmKGEubm9kZU5hbWUhPT0iSU5QVVQifHxhLnR5cGUhPT0iaGlkZGVuIikpYnJlYWt9ZWxzZSBpZihoKXtpZighYVtZdV0pc3dpdGNoKGwpe2Nhc2UibWV0YSI6aWYoIWEuaGFzQXR0cmlidXRlKCJpdGVtcHJvcCIpKWJyZWFrO3JldHVybiBhO2Nhc2UibGluayI6aWYoUz1hLmdldEF0dHJpYnV0ZSgicmVsIiksUz09PSJzdHlsZXNoZWV0IiYmYS5oYXNBdHRyaWJ1dGUoImRhdGEtcHJlY2VkZW5jZSIpKWJyZWFrO2lmKFMhPT12LnJlbHx8YS5nZXRBdHRyaWJ1dGUoImhyZWYiKSE9PSh2LmhyZWY9PW51bGx8fHYuaHJlZj09PSIiP251bGw6di5ocmVmKXx8YS5nZXRBdHRyaWJ1dGUoImNyb3Nzb3JpZ2luIikhPT0odi5jcm9zc09yaWdpbj09bnVsbD9udWxsOnYuY3Jvc3NPcmlnaW4pfHxhLmdldEF0dHJpYnV0ZSgidGl0bGUiKSE9PSh2LnRpdGxlPT1udWxsP251bGw6di50aXRsZSkpYnJlYWs7cmV0dXJuIGE7Y2FzZSJzdHlsZSI6aWYoYS5oYXNBdHRyaWJ1dGUoImRhdGEtcHJlY2VkZW5jZSIpKWJyZWFrO3JldHVybiBhO2Nhc2Uic2NyaXB0IjppZihTPWEuZ2V0QXR0cmlidXRlKCJzcmMiKSwoUyE9PSh2LnNyYz09bnVsbD9udWxsOnYuc3JjKXx8YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSE9PSh2LnR5cGU9PW51bGw/bnVsbDp2LnR5cGUpfHxhLmdldEF0dHJpYnV0ZSgiY3Jvc3NvcmlnaW4iKSE9PSh2LmNyb3NzT3JpZ2luPT1udWxsP251bGw6di5jcm9zc09yaWdpbikpJiZTJiZhLmhhc0F0dHJpYnV0ZSgiYXN5bmMiKSYmIWEuaGFzQXR0cmlidXRlKCJpdGVtcHJvcCIpKWJyZWFrO3JldHVybiBhO2RlZmF1bHQ6cmV0dXJuIGF9fWVsc2UgaWYobD09PSJpbnB1dCImJmEudHlwZT09PSJoaWRkZW4iKXt2YXIgUz12Lm5hbWU9PW51bGw/bnVsbDoiIit2Lm5hbWU7aWYodi50eXBlPT09ImhpZGRlbiImJmEuZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1TKXJldHVybiBhfWVsc2UgcmV0dXJuIGE7aWYoYT1YcihhLm5leHRTaWJsaW5nKSxhPT09bnVsbClicmVha31yZXR1cm4gbnVsbH1mdW5jdGlvbiBIOShhLGwsYyl7aWYobD09PSIiKXJldHVybiBudWxsO2Zvcig7YS5ub2RlVHlwZSE9PTM7KWlmKChhLm5vZGVUeXBlIT09MXx8YS5ub2RlTmFtZSE9PSJJTlBVVCJ8fGEudHlwZSE9PSJoaWRkZW4iKSYmIWN8fChhPVhyKGEubmV4dFNpYmxpbmcpLGE9PT1udWxsKSlyZXR1cm4gbnVsbDtyZXR1cm4gYX1mdW5jdGlvbiBSYihhKXtyZXR1cm4gYS5kYXRhPT09IiQhInx8YS5kYXRhPT09IiQ/IiYmYS5vd25lckRvY3VtZW50LnJlYWR5U3RhdGU9PT0iY29tcGxldGUifWZ1bmN0aW9uIEc5KGEsbCl7dmFyIGM9YS5vd25lckRvY3VtZW50O2lmKGEuZGF0YSE9PSIkPyJ8fGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpbCgpO2Vsc2V7dmFyIGg9ZnVuY3Rpb24oKXtsKCksYy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixoKX07Yy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixoKSxhLl9yZWFjdFJldHJ5PWh9fWZ1bmN0aW9uIFhyKGEpe2Zvcig7YSE9bnVsbDthPWEubmV4dFNpYmxpbmcpe3ZhciBsPWEubm9kZVR5cGU7aWYobD09PTF8fGw9PT0zKWJyZWFrO2lmKGw9PT04KXtpZihsPWEuZGF0YSxsPT09IiQifHxsPT09IiQhInx8bD09PSIkPyJ8fGw9PT0iRiEifHxsPT09IkYiKWJyZWFrO2lmKGw9PT0iLyQiKXJldHVybiBudWxsfX1yZXR1cm4gYX12YXIgTmI9bnVsbDtmdW5jdGlvbiBHUChhKXthPWEucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgbD0wO2E7KXtpZihhLm5vZGVUeXBlPT09OCl7dmFyIGM9YS5kYXRhO2lmKGM9PT0iJCJ8fGM9PT0iJCEifHxjPT09IiQ/Iil7aWYobD09PTApcmV0dXJuIGE7bC0tfWVsc2UgYz09PSIvJCImJmwrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfWZ1bmN0aW9uIEtQKGEsbCxjKXtzd2l0Y2gobD1VaChjKSxhKXtjYXNlImh0bWwiOmlmKGE9bC5kb2N1bWVudEVsZW1lbnQsIWEpdGhyb3cgRXJyb3Iocig0NTIpKTtyZXR1cm4gYTtjYXNlImhlYWQiOmlmKGE9bC5oZWFkLCFhKXRocm93IEVycm9yKHIoNDUzKSk7cmV0dXJuIGE7Y2FzZSJib2R5IjppZihhPWwuYm9keSwhYSl0aHJvdyBFcnJvcihyKDQ1NCkpO3JldHVybiBhO2RlZmF1bHQ6dGhyb3cgRXJyb3Iocig0NTEpKX19ZnVuY3Rpb24ga2MoYSl7Zm9yKHZhciBsPWEuYXR0cmlidXRlcztsLmxlbmd0aDspYS5yZW1vdmVBdHRyaWJ1dGVOb2RlKGxbMF0pO0x2KGEpfXZhciBOcj1uZXcgTWFwLFdQPW5ldyBTZXQ7ZnVuY3Rpb24gemgoYSl7cmV0dXJuIHR5cGVvZiBhLmdldFJvb3ROb2RlPT0iZnVuY3Rpb24iP2EuZ2V0Um9vdE5vZGUoKTphLm5vZGVUeXBlPT09OT9hOmEub3duZXJEb2N1bWVudH12YXIgUWk9Vy5kO1cuZD17ZjpLOSxyOlc5LEQ6WTksQzpYOSxMOlo5LG06UTksWDplSCxTOko5LE06dEh9O2Z1bmN0aW9uIEs5KCl7dmFyIGE9UWkuZigpLGw9a2goKTtyZXR1cm4gYXx8bH1mdW5jdGlvbiBXOShhKXt2YXIgbD1EcyhhKTtsIT09bnVsbCYmbC50YWc9PT01JiZsLnR5cGU9PT0iZm9ybSI/cGoobCk6UWkucihhKX12YXIgbWw9dHlwZW9mIGRvY3VtZW50PiJ1Ij9udWxsOmRvY3VtZW50O2Z1bmN0aW9uIFlQKGEsbCxjKXt2YXIgaD1tbDtpZihoJiZ0eXBlb2YgbD09InN0cmluZyImJmwpe3ZhciB2PVRyKGwpO3Y9J2xpbmtbcmVsPSInK2ErJyJdW2hyZWY9IicrdisnIl0nLHR5cGVvZiBjPT0ic3RyaW5nIiYmKHYrPSdbY3Jvc3NvcmlnaW49IicrYysnIl0nKSxXUC5oYXModil8fChXUC5hZGQodiksYT17cmVsOmEsY3Jvc3NPcmlnaW46YyxocmVmOmx9LGgucXVlcnlTZWxlY3Rvcih2KT09PW51bGwmJihsPWguY3JlYXRlRWxlbWVudCgibGluayIpLGpuKGwsImxpbmsiLGEpLHhuKGwpLGguaGVhZC5hcHBlbmRDaGlsZChsKSkpfX1mdW5jdGlvbiBZOShhKXtRaS5EKGEpLFlQKCJkbnMtcHJlZmV0Y2giLGEsbnVsbCl9ZnVuY3Rpb24gWDkoYSxsKXtRaS5DKGEsbCksWVAoInByZWNvbm5lY3QiLGEsbCl9ZnVuY3Rpb24gWjkoYSxsLGMpe1FpLkwoYSxsLGMpO3ZhciBoPW1sO2lmKGgmJmEmJmwpe3ZhciB2PSdsaW5rW3JlbD0icHJlbG9hZCJdW2FzPSInK1RyKGwpKyciXSc7bD09PSJpbWFnZSImJmMmJmMuaW1hZ2VTcmNTZXQ/KHYrPSdbaW1hZ2VzcmNzZXQ9IicrVHIoYy5pbWFnZVNyY1NldCkrJyJdJyx0eXBlb2YgYy5pbWFnZVNpemVzPT0ic3RyaW5nIiYmKHYrPSdbaW1hZ2VzaXplcz0iJytUcihjLmltYWdlU2l6ZXMpKyciXScpKTp2Kz0nW2hyZWY9IicrVHIoYSkrJyJdJzt2YXIgUz12O3N3aXRjaChsKXtjYXNlInN0eWxlIjpTPXlsKGEpO2JyZWFrO2Nhc2Uic2NyaXB0IjpTPXZsKGEpfU5yLmhhcyhTKXx8KGE9cCh7cmVsOiJwcmVsb2FkIixocmVmOmw9PT0iaW1hZ2UiJiZjJiZjLmltYWdlU3JjU2V0P3ZvaWQgMDphLGFzOmx9LGMpLE5yLnNldChTLGEpLGgucXVlcnlTZWxlY3Rvcih2KSE9PW51bGx8fGw9PT0ic3R5bGUiJiZoLnF1ZXJ5U2VsZWN0b3IoRGMoUykpfHxsPT09InNjcmlwdCImJmgucXVlcnlTZWxlY3RvcihMYyhTKSl8fChsPWguY3JlYXRlRWxlbWVudCgibGluayIpLGpuKGwsImxpbmsiLGEpLHhuKGwpLGguaGVhZC5hcHBlbmRDaGlsZChsKSkpfX1mdW5jdGlvbiBROShhLGwpe1FpLm0oYSxsKTt2YXIgYz1tbDtpZihjJiZhKXt2YXIgaD1sJiZ0eXBlb2YgbC5hcz09InN0cmluZyI/bC5hczoic2NyaXB0Iix2PSdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdW2FzPSInK1RyKGgpKyciXVtocmVmPSInK1RyKGEpKyciXScsUz12O3N3aXRjaChoKXtjYXNlImF1ZGlvd29ya2xldCI6Y2FzZSJwYWludHdvcmtsZXQiOmNhc2Uic2VydmljZXdvcmtlciI6Y2FzZSJzaGFyZWR3b3JrZXIiOmNhc2Uid29ya2VyIjpjYXNlInNjcmlwdCI6Uz12bChhKX1pZighTnIuaGFzKFMpJiYoYT1wKHtyZWw6Im1vZHVsZXByZWxvYWQiLGhyZWY6YX0sbCksTnIuc2V0KFMsYSksYy5xdWVyeVNlbGVjdG9yKHYpPT09bnVsbCkpe3N3aXRjaChoKXtjYXNlImF1ZGlvd29ya2xldCI6Y2FzZSJwYWludHdvcmtsZXQiOmNhc2Uic2VydmljZXdvcmtlciI6Y2FzZSJzaGFyZWR3b3JrZXIiOmNhc2Uid29ya2VyIjpjYXNlInNjcmlwdCI6aWYoYy5xdWVyeVNlbGVjdG9yKExjKFMpKSlyZXR1cm59aD1jLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxqbihoLCJsaW5rIixhKSx4bihoKSxjLmhlYWQuYXBwZW5kQ2hpbGQoaCl9fX1mdW5jdGlvbiBKOShhLGwsYyl7UWkuUyhhLGwsYyk7dmFyIGg9bWw7aWYoaCYmYSl7dmFyIHY9THMoaCkuaG9pc3RhYmxlU3R5bGVzLFM9eWwoYSk7bD1sfHwiZGVmYXVsdCI7dmFyIE09di5nZXQoUyk7aWYoIU0pe3ZhciBEPXtsb2FkaW5nOjAscHJlbG9hZDpudWxsfTtpZihNPWgucXVlcnlTZWxlY3RvcihEYyhTKSkpRC5sb2FkaW5nPTU7ZWxzZXthPXAoe3JlbDoic3R5bGVzaGVldCIsaHJlZjphLCJkYXRhLXByZWNlZGVuY2UiOmx9LGMpLChjPU5yLmdldChTKSkmJmtiKGEsYyk7dmFyIEc9TT1oLmNyZWF0ZUVsZW1lbnQoImxpbmsiKTt4bihHKSxqbihHLCJsaW5rIixhKSxHLl9wPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlLHVlKXtHLm9ubG9hZD1yZSxHLm9uZXJyb3I9dWV9KSxHLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7RC5sb2FkaW5nfD0xfSksRy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24oKXtELmxvYWRpbmd8PTJ9KSxELmxvYWRpbmd8PTQsRmgoTSxsLGgpfU09e3R5cGU6InN0eWxlc2hlZXQiLGluc3RhbmNlOk0sY291bnQ6MSxzdGF0ZTpEfSx2LnNldChTLE0pfX19ZnVuY3Rpb24gZUgoYSxsKXtRaS5YKGEsbCk7dmFyIGM9bWw7aWYoYyYmYSl7dmFyIGg9THMoYykuaG9pc3RhYmxlU2NyaXB0cyx2PXZsKGEpLFM9aC5nZXQodik7U3x8KFM9Yy5xdWVyeVNlbGVjdG9yKExjKHYpKSxTfHwoYT1wKHtzcmM6YSxhc3luYzohMH0sbCksKGw9TnIuZ2V0KHYpKSYmRGIoYSxsKSxTPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0IikseG4oUyksam4oUywibGluayIsYSksYy5oZWFkLmFwcGVuZENoaWxkKFMpKSxTPXt0eXBlOiJzY3JpcHQiLGluc3RhbmNlOlMsY291bnQ6MSxzdGF0ZTpudWxsfSxoLnNldCh2LFMpKX19ZnVuY3Rpb24gdEgoYSxsKXtRaS5NKGEsbCk7dmFyIGM9bWw7aWYoYyYmYSl7dmFyIGg9THMoYykuaG9pc3RhYmxlU2NyaXB0cyx2PXZsKGEpLFM9aC5nZXQodik7U3x8KFM9Yy5xdWVyeVNlbGVjdG9yKExjKHYpKSxTfHwoYT1wKHtzcmM6YSxhc3luYzohMCx0eXBlOiJtb2R1bGUifSxsKSwobD1Oci5nZXQodikpJiZEYihhLGwpLFM9Yy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSx4bihTKSxqbihTLCJsaW5rIixhKSxjLmhlYWQuYXBwZW5kQ2hpbGQoUykpLFM9e3R5cGU6InNjcmlwdCIsaW5zdGFuY2U6Uyxjb3VudDoxLHN0YXRlOm51bGx9LGguc2V0KHYsUykpfX1mdW5jdGlvbiBYUChhLGwsYyxoKXt2YXIgdj0odj1nZS5jdXJyZW50KT96aCh2KTpudWxsO2lmKCF2KXRocm93IEVycm9yKHIoNDQ2KSk7c3dpdGNoKGEpe2Nhc2UibWV0YSI6Y2FzZSJ0aXRsZSI6cmV0dXJuIG51bGw7Y2FzZSJzdHlsZSI6cmV0dXJuIHR5cGVvZiBjLnByZWNlZGVuY2U9PSJzdHJpbmciJiZ0eXBlb2YgYy5ocmVmPT0ic3RyaW5nIj8obD15bChjLmhyZWYpLGM9THModikuaG9pc3RhYmxlU3R5bGVzLGg9Yy5nZXQobCksaHx8KGg9e3R5cGU6InN0eWxlIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH0sYy5zZXQobCxoKSksaCk6e3R5cGU6InZvaWQiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTpudWxsfTtjYXNlImxpbmsiOmlmKGMucmVsPT09InN0eWxlc2hlZXQiJiZ0eXBlb2YgYy5ocmVmPT0ic3RyaW5nIiYmdHlwZW9mIGMucHJlY2VkZW5jZT09InN0cmluZyIpe2E9eWwoYy5ocmVmKTt2YXIgUz1Mcyh2KS5ob2lzdGFibGVTdHlsZXMsTT1TLmdldChhKTtpZihNfHwodj12Lm93bmVyRG9jdW1lbnR8fHYsTT17dHlwZToic3R5bGVzaGVldCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOntsb2FkaW5nOjAscHJlbG9hZDpudWxsfX0sUy5zZXQoYSxNKSwoUz12LnF1ZXJ5U2VsZWN0b3IoRGMoYSkpKSYmIVMuX3AmJihNLmluc3RhbmNlPVMsTS5zdGF0ZS5sb2FkaW5nPTUpLE5yLmhhcyhhKXx8KGM9e3JlbDoicHJlbG9hZCIsYXM6InN0eWxlIixocmVmOmMuaHJlZixjcm9zc09yaWdpbjpjLmNyb3NzT3JpZ2luLGludGVncml0eTpjLmludGVncml0eSxtZWRpYTpjLm1lZGlhLGhyZWZMYW5nOmMuaHJlZkxhbmcscmVmZXJyZXJQb2xpY3k6Yy5yZWZlcnJlclBvbGljeX0sTnIuc2V0KGEsYyksU3x8bkgodixhLGMsTS5zdGF0ZSkpKSxsJiZoPT09bnVsbCl0aHJvdyBFcnJvcihyKDUyOCwiIikpO3JldHVybiBNfWlmKGwmJmghPT1udWxsKXRocm93IEVycm9yKHIoNTI5LCIiKSk7cmV0dXJuIG51bGw7Y2FzZSJzY3JpcHQiOnJldHVybiBsPWMuYXN5bmMsYz1jLnNyYyx0eXBlb2YgYz09InN0cmluZyImJmwmJnR5cGVvZiBsIT0iZnVuY3Rpb24iJiZ0eXBlb2YgbCE9InN5bWJvbCI/KGw9dmwoYyksYz1Mcyh2KS5ob2lzdGFibGVTY3JpcHRzLGg9Yy5nZXQobCksaHx8KGg9e3R5cGU6InNjcmlwdCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9LGMuc2V0KGwsaCkpLGgpOnt0eXBlOiJ2b2lkIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH07ZGVmYXVsdDp0aHJvdyBFcnJvcihyKDQ0NCxhKSl9fWZ1bmN0aW9uIHlsKGEpe3JldHVybidocmVmPSInK1RyKGEpKyciJ31mdW5jdGlvbiBEYyhhKXtyZXR1cm4nbGlua1tyZWw9InN0eWxlc2hlZXQiXVsnK2ErIl0ifWZ1bmN0aW9uIFpQKGEpe3JldHVybiBwKHt9LGEseyJkYXRhLXByZWNlZGVuY2UiOmEucHJlY2VkZW5jZSxwcmVjZWRlbmNlOm51bGx9KX1mdW5jdGlvbiBuSChhLGwsYyxoKXthLnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbcmVsPSJwcmVsb2FkIl1bYXM9InN0eWxlIl1bJytsKyJdIik/aC5sb2FkaW5nPTE6KGw9YS5jcmVhdGVFbGVtZW50KCJsaW5rIiksaC5wcmVsb2FkPWwsbC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3JldHVybiBoLmxvYWRpbmd8PTF9KSxsLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmdW5jdGlvbigpe3JldHVybiBoLmxvYWRpbmd8PTJ9KSxqbihsLCJsaW5rIixjKSx4bihsKSxhLmhlYWQuYXBwZW5kQ2hpbGQobCkpfWZ1bmN0aW9uIHZsKGEpe3JldHVybidbc3JjPSInK1RyKGEpKyciXSd9ZnVuY3Rpb24gTGMoYSl7cmV0dXJuInNjcmlwdFthc3luY10iK2F9ZnVuY3Rpb24gUVAoYSxsLGMpe2lmKGwuY291bnQrKyxsLmluc3RhbmNlPT09bnVsbClzd2l0Y2gobC50eXBlKXtjYXNlInN0eWxlIjp2YXIgaD1hLnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtaHJlZn49IicrVHIoYy5ocmVmKSsnIl0nKTtpZihoKXJldHVybiBsLmluc3RhbmNlPWgseG4oaCksaDt2YXIgdj1wKHt9LGMseyJkYXRhLWhyZWYiOmMuaHJlZiwiZGF0YS1wcmVjZWRlbmNlIjpjLnByZWNlZGVuY2UsaHJlZjpudWxsLHByZWNlZGVuY2U6bnVsbH0pO3JldHVybiBoPShhLm93bmVyRG9jdW1lbnR8fGEpLmNyZWF0ZUVsZW1lbnQoInN0eWxlIikseG4oaCksam4oaCwic3R5bGUiLHYpLEZoKGgsYy5wcmVjZWRlbmNlLGEpLGwuaW5zdGFuY2U9aDtjYXNlInN0eWxlc2hlZXQiOnY9eWwoYy5ocmVmKTt2YXIgUz1hLnF1ZXJ5U2VsZWN0b3IoRGModikpO2lmKFMpcmV0dXJuIGwuc3RhdGUubG9hZGluZ3w9NCxsLmluc3RhbmNlPVMseG4oUyksUztoPVpQKGMpLCh2PU5yLmdldCh2KSkmJmtiKGgsdiksUz0oYS5vd25lckRvY3VtZW50fHxhKS5jcmVhdGVFbGVtZW50KCJsaW5rIikseG4oUyk7dmFyIE09UztyZXR1cm4gTS5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihELEcpe00ub25sb2FkPUQsTS5vbmVycm9yPUd9KSxqbihTLCJsaW5rIixoKSxsLnN0YXRlLmxvYWRpbmd8PTQsRmgoUyxjLnByZWNlZGVuY2UsYSksbC5pbnN0YW5jZT1TO2Nhc2Uic2NyaXB0IjpyZXR1cm4gUz12bChjLnNyYyksKHY9YS5xdWVyeVNlbGVjdG9yKExjKFMpKSk/KGwuaW5zdGFuY2U9dix4bih2KSx2KTooaD1jLCh2PU5yLmdldChTKSkmJihoPXAoe30sYyksRGIoaCx2KSksYT1hLm93bmVyRG9jdW1lbnR8fGEsdj1hLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLHhuKHYpLGpuKHYsImxpbmsiLGgpLGEuaGVhZC5hcHBlbmRDaGlsZCh2KSxsLmluc3RhbmNlPXYpO2Nhc2Uidm9pZCI6cmV0dXJuIG51bGw7ZGVmYXVsdDp0aHJvdyBFcnJvcihyKDQ0MyxsLnR5cGUpKX1lbHNlIGwudHlwZT09PSJzdHlsZXNoZWV0IiYmKGwuc3RhdGUubG9hZGluZyY0KT09PTAmJihoPWwuaW5zdGFuY2UsbC5zdGF0ZS5sb2FkaW5nfD00LEZoKGgsYy5wcmVjZWRlbmNlLGEpKTtyZXR1cm4gbC5pbnN0YW5jZX1mdW5jdGlvbiBGaChhLGwsYyl7Zm9yKHZhciBoPWMucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9InN0eWxlc2hlZXQiXVtkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV0nKSx2PWgubGVuZ3RoP2hbaC5sZW5ndGgtMV06bnVsbCxTPXYsTT0wO008aC5sZW5ndGg7TSsrKXt2YXIgRD1oW01dO2lmKEQuZGF0YXNldC5wcmVjZWRlbmNlPT09bClTPUQ7ZWxzZSBpZihTIT09dilicmVha31TP1MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxTLm5leHRTaWJsaW5nKToobD1jLm5vZGVUeXBlPT09OT9jLmhlYWQ6YyxsLmluc2VydEJlZm9yZShhLGwuZmlyc3RDaGlsZCkpfWZ1bmN0aW9uIGtiKGEsbCl7YS5jcm9zc09yaWdpbj09bnVsbCYmKGEuY3Jvc3NPcmlnaW49bC5jcm9zc09yaWdpbiksYS5yZWZlcnJlclBvbGljeT09bnVsbCYmKGEucmVmZXJyZXJQb2xpY3k9bC5yZWZlcnJlclBvbGljeSksYS50aXRsZT09bnVsbCYmKGEudGl0bGU9bC50aXRsZSl9ZnVuY3Rpb24gRGIoYSxsKXthLmNyb3NzT3JpZ2luPT1udWxsJiYoYS5jcm9zc09yaWdpbj1sLmNyb3NzT3JpZ2luKSxhLnJlZmVycmVyUG9saWN5PT1udWxsJiYoYS5yZWZlcnJlclBvbGljeT1sLnJlZmVycmVyUG9saWN5KSxhLmludGVncml0eT09bnVsbCYmKGEuaW50ZWdyaXR5PWwuaW50ZWdyaXR5KX12YXIgSGg9bnVsbDtmdW5jdGlvbiBKUChhLGwsYyl7aWYoSGg9PT1udWxsKXt2YXIgaD1uZXcgTWFwLHY9SGg9bmV3IE1hcDt2LnNldChjLGgpfWVsc2Ugdj1IaCxoPXYuZ2V0KGMpLGh8fChoPW5ldyBNYXAsdi5zZXQoYyxoKSk7aWYoaC5oYXMoYSkpcmV0dXJuIGg7Zm9yKGguc2V0KGEsbnVsbCksYz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpLHY9MDt2PGMubGVuZ3RoO3YrKyl7dmFyIFM9Y1t2XTtpZighKFNbWXVdfHxTW0xuXXx8YT09PSJsaW5rIiYmUy5nZXRBdHRyaWJ1dGUoInJlbCIpPT09InN0eWxlc2hlZXQiKSYmUy5uYW1lc3BhY2VVUkkhPT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKXt2YXIgTT1TLmdldEF0dHJpYnV0ZShsKXx8IiI7TT1hK007dmFyIEQ9aC5nZXQoTSk7RD9ELnB1c2goUyk6aC5zZXQoTSxbU10pfX1yZXR1cm4gaH1mdW5jdGlvbiBlTShhLGwsYyl7YT1hLm93bmVyRG9jdW1lbnR8fGEsYS5oZWFkLmluc2VydEJlZm9yZShjLGw9PT0idGl0bGUiP2EucXVlcnlTZWxlY3RvcigiaGVhZCA+IHRpdGxlIik6bnVsbCl9ZnVuY3Rpb24gckgoYSxsLGMpe2lmKGM9PT0xfHxsLml0ZW1Qcm9wIT1udWxsKXJldHVybiExO3N3aXRjaChhKXtjYXNlIm1ldGEiOmNhc2UidGl0bGUiOnJldHVybiEwO2Nhc2Uic3R5bGUiOmlmKHR5cGVvZiBsLnByZWNlZGVuY2UhPSJzdHJpbmcifHx0eXBlb2YgbC5ocmVmIT0ic3RyaW5nInx8bC5ocmVmPT09IiIpYnJlYWs7cmV0dXJuITA7Y2FzZSJsaW5rIjppZih0eXBlb2YgbC5yZWwhPSJzdHJpbmcifHx0eXBlb2YgbC5ocmVmIT0ic3RyaW5nInx8bC5ocmVmPT09IiJ8fGwub25Mb2FkfHxsLm9uRXJyb3IpYnJlYWs7cmV0dXJuIGwucmVsPT09InN0eWxlc2hlZXQiPyhhPWwuZGlzYWJsZWQsdHlwZW9mIGwucHJlY2VkZW5jZT09InN0cmluZyImJmE9PW51bGwpOiEwO2Nhc2Uic2NyaXB0IjppZihsLmFzeW5jJiZ0eXBlb2YgbC5hc3luYyE9ImZ1bmN0aW9uIiYmdHlwZW9mIGwuYXN5bmMhPSJzeW1ib2wiJiYhbC5vbkxvYWQmJiFsLm9uRXJyb3ImJmwuc3JjJiZ0eXBlb2YgbC5zcmM9PSJzdHJpbmciKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHRNKGEpe3JldHVybiEoYS50eXBlPT09InN0eWxlc2hlZXQiJiYoYS5zdGF0ZS5sb2FkaW5nJjMpPT09MCl9dmFyIEljPW51bGw7ZnVuY3Rpb24gaUgoKXt9ZnVuY3Rpb24gYUgoYSxsLGMpe2lmKEljPT09bnVsbCl0aHJvdyBFcnJvcihyKDQ3NSkpO3ZhciBoPUljO2lmKGwudHlwZT09PSJzdHlsZXNoZWV0IiYmKHR5cGVvZiBjLm1lZGlhIT0ic3RyaW5nInx8bWF0Y2hNZWRpYShjLm1lZGlhKS5tYXRjaGVzIT09ITEpJiYobC5zdGF0ZS5sb2FkaW5nJjQpPT09MCl7aWYobC5pbnN0YW5jZT09PW51bGwpe3ZhciB2PXlsKGMuaHJlZiksUz1hLnF1ZXJ5U2VsZWN0b3IoRGModikpO2lmKFMpe2E9Uy5fcCxhIT09bnVsbCYmdHlwZW9mIGE9PSJvYmplY3QiJiZ0eXBlb2YgYS50aGVuPT0iZnVuY3Rpb24iJiYoaC5jb3VudCsrLGg9R2guYmluZChoKSxhLnRoZW4oaCxoKSksbC5zdGF0ZS5sb2FkaW5nfD00LGwuaW5zdGFuY2U9Uyx4bihTKTtyZXR1cm59Uz1hLm93bmVyRG9jdW1lbnR8fGEsYz1aUChjKSwodj1Oci5nZXQodikpJiZrYihjLHYpLFM9Uy5jcmVhdGVFbGVtZW50KCJsaW5rIikseG4oUyk7dmFyIE09UztNLl9wPW5ldyBQcm9taXNlKGZ1bmN0aW9uKEQsRyl7TS5vbmxvYWQ9RCxNLm9uZXJyb3I9R30pLGpuKFMsImxpbmsiLGMpLGwuaW5zdGFuY2U9U31oLnN0eWxlc2hlZXRzPT09bnVsbCYmKGguc3R5bGVzaGVldHM9bmV3IE1hcCksaC5zdHlsZXNoZWV0cy5zZXQobCxhKSwoYT1sLnN0YXRlLnByZWxvYWQpJiYobC5zdGF0ZS5sb2FkaW5nJjMpPT09MCYmKGguY291bnQrKyxsPUdoLmJpbmQoaCksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixsKSxhLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixsKSl9fWZ1bmN0aW9uIG9IKCl7aWYoSWM9PT1udWxsKXRocm93IEVycm9yKHIoNDc1KSk7dmFyIGE9SWM7cmV0dXJuIGEuc3R5bGVzaGVldHMmJmEuY291bnQ9PT0wJiZMYihhLGEuc3R5bGVzaGVldHMpLDA8YS5jb3VudD9mdW5jdGlvbihsKXt2YXIgYz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoYS5zdHlsZXNoZWV0cyYmTGIoYSxhLnN0eWxlc2hlZXRzKSxhLnVuc3VzcGVuZCl7dmFyIGg9YS51bnN1c3BlbmQ7YS51bnN1c3BlbmQ9bnVsbCxoKCl9fSw2ZTQpO3JldHVybiBhLnVuc3VzcGVuZD1sLGZ1bmN0aW9uKCl7YS51bnN1c3BlbmQ9bnVsbCxjbGVhclRpbWVvdXQoYyl9fTpudWxsfWZ1bmN0aW9uIEdoKCl7aWYodGhpcy5jb3VudC0tLHRoaXMuY291bnQ9PT0wKXtpZih0aGlzLnN0eWxlc2hlZXRzKUxiKHRoaXMsdGhpcy5zdHlsZXNoZWV0cyk7ZWxzZSBpZih0aGlzLnVuc3VzcGVuZCl7dmFyIGE9dGhpcy51bnN1c3BlbmQ7dGhpcy51bnN1c3BlbmQ9bnVsbCxhKCl9fX12YXIgS2g9bnVsbDtmdW5jdGlvbiBMYihhLGwpe2Euc3R5bGVzaGVldHM9bnVsbCxhLnVuc3VzcGVuZCE9PW51bGwmJihhLmNvdW50KyssS2g9bmV3IE1hcCxsLmZvckVhY2goc0gsYSksS2g9bnVsbCxHaC5jYWxsKGEpKX1mdW5jdGlvbiBzSChhLGwpe2lmKCEobC5zdGF0ZS5sb2FkaW5nJjQpKXt2YXIgYz1LaC5nZXQoYSk7aWYoYyl2YXIgaD1jLmdldChudWxsKTtlbHNle2M9bmV3IE1hcCxLaC5zZXQoYSxjKTtmb3IodmFyIHY9YS5xdWVyeVNlbGVjdG9yQWxsKCJsaW5rW2RhdGEtcHJlY2VkZW5jZV0sc3R5bGVbZGF0YS1wcmVjZWRlbmNlXSIpLFM9MDtTPHYubGVuZ3RoO1MrKyl7dmFyIE09dltTXTsoTS5ub2RlTmFtZT09PSJMSU5LInx8TS5nZXRBdHRyaWJ1dGUoIm1lZGlhIikhPT0ibm90IGFsbCIpJiYoYy5zZXQoTS5kYXRhc2V0LnByZWNlZGVuY2UsTSksaD1NKX1oJiZjLnNldChudWxsLGgpfXY9bC5pbnN0YW5jZSxNPXYuZ2V0QXR0cmlidXRlKCJkYXRhLXByZWNlZGVuY2UiKSxTPWMuZ2V0KE0pfHxoLFM9PT1oJiZjLnNldChudWxsLHYpLGMuc2V0KE0sdiksdGhpcy5jb3VudCsrLGg9R2guYmluZCh0aGlzKSx2LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGgpLHYuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGgpLFM/Uy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh2LFMubmV4dFNpYmxpbmcpOihhPWEubm9kZVR5cGU9PT05P2EuaGVhZDphLGEuaW5zZXJ0QmVmb3JlKHYsYS5maXJzdENoaWxkKSksbC5zdGF0ZS5sb2FkaW5nfD00fX12YXIgJGM9eyQkdHlwZW9mOkUsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsLF9jdXJyZW50VmFsdWU6SCxfY3VycmVudFZhbHVlMjpILF90aHJlYWRDb3VudDowfTtmdW5jdGlvbiBsSChhLGwsYyxoLHYsUyxNLEQpe3RoaXMudGFnPTEsdGhpcy5jb250YWluZXJJbmZvPWEsdGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGwsdGhpcy50aW1lb3V0SGFuZGxlPS0xLHRoaXMuY2FsbGJhY2tOb2RlPXRoaXMubmV4dD10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD10aGlzLmNhbmNlbFBlbmRpbmdDb21taXQ9bnVsbCx0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MCx0aGlzLmV4cGlyYXRpb25UaW1lcz1lbigtMSksdGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLnNoZWxsU3VzcGVuZENvdW50ZXI9dGhpcy5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLndhcm1MYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MCx0aGlzLmVudGFuZ2xlbWVudHM9ZW4oMCksdGhpcy5oaWRkZW5VcGRhdGVzPWVuKG51bGwpLHRoaXMuaWRlbnRpZmllclByZWZpeD1oLHRoaXMub25VbmNhdWdodEVycm9yPXYsdGhpcy5vbkNhdWdodEVycm9yPVMsdGhpcy5vblJlY292ZXJhYmxlRXJyb3I9TSx0aGlzLnBvb2xlZENhY2hlPW51bGwsdGhpcy5wb29sZWRDYWNoZUxhbmVzPTAsdGhpcy5mb3JtU3RhdGU9RCx0aGlzLmluY29tcGxldGVUcmFuc2l0aW9ucz1uZXcgTWFwfWZ1bmN0aW9uIG5NKGEsbCxjLGgsdixTLE0sRCxHLHJlLHVlLGRlKXtyZXR1cm4gYT1uZXcgbEgoYSxsLGMsTSxELEcscmUsZGUpLGw9MSxTPT09ITAmJihsfD0yNCksUz1jcigzLG51bGwsbnVsbCxsKSxhLmN1cnJlbnQ9UyxTLnN0YXRlTm9kZT1hLGw9dmcoKSxsLnJlZkNvdW50KyssYS5wb29sZWRDYWNoZT1sLGwucmVmQ291bnQrKyxTLm1lbW9pemVkU3RhdGU9e2VsZW1lbnQ6aCxpc0RlaHlkcmF0ZWQ6YyxjYWNoZTpsfSx3ZyhTKSxhfWZ1bmN0aW9uIHJNKGEpe3JldHVybiBhPyhhPVdzLGEpOldzfWZ1bmN0aW9uIGlNKGEsbCxjLGgsdixTKXt2PXJNKHYpLGguY29udGV4dD09PW51bGw/aC5jb250ZXh0PXY6aC5wZW5kaW5nQ29udGV4dD12LGg9Q2EobCksaC5wYXlsb2FkPXtlbGVtZW50OmN9LFM9Uz09PXZvaWQgMD9udWxsOlMsUyE9PW51bGwmJihoLmNhbGxiYWNrPVMpLGM9amEoYSxoLGwpLGMhPT1udWxsJiYobXIoYyxhLGwpLHBjKGMsYSxsKSl9ZnVuY3Rpb24gYU0oYSxsKXtpZihhPWEubWVtb2l6ZWRTdGF0ZSxhIT09bnVsbCYmYS5kZWh5ZHJhdGVkIT09bnVsbCl7dmFyIGM9YS5yZXRyeUxhbmU7YS5yZXRyeUxhbmU9YyE9PTAmJmM8bD9jOmx9fWZ1bmN0aW9uIEliKGEsbCl7YU0oYSxsKSwoYT1hLmFsdGVybmF0ZSkmJmFNKGEsbCl9ZnVuY3Rpb24gb00oYSl7aWYoYS50YWc9PT0xMyl7dmFyIGw9S3MoYSw2NzEwODg2NCk7bCE9PW51bGwmJm1yKGwsYSw2NzEwODg2NCksSWIoYSw2NzEwODg2NCl9fXZhciBXaD0hMDtmdW5jdGlvbiB1SChhLGwsYyxoKXt2YXIgdj1MLlQ7TC5UPW51bGw7dmFyIFM9Vy5wO3RyeXtXLnA9MiwkYihhLGwsYyxoKX1maW5hbGx5e1cucD1TLEwuVD12fX1mdW5jdGlvbiBjSChhLGwsYyxoKXt2YXIgdj1MLlQ7TC5UPW51bGw7dmFyIFM9Vy5wO3RyeXtXLnA9OCwkYihhLGwsYyxoKX1maW5hbGx5e1cucD1TLEwuVD12fX1mdW5jdGlvbiAkYihhLGwsYyxoKXtpZihXaCl7dmFyIHY9QmIoaCk7aWYodj09PW51bGwpT2IoYSxsLGgsWWgsYyksbE0oYSxoKTtlbHNlIGlmKGRIKHYsYSxsLGMsaCkpaC5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKGxNKGEsaCksbCY0JiYtMTxmSC5pbmRleE9mKGEpKXtmb3IoO3YhPT1udWxsOyl7dmFyIFM9RHModik7aWYoUyE9PW51bGwpc3dpdGNoKFMudGFnKXtjYXNlIDM6aWYoUz1TLnN0YXRlTm9kZSxTLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe3ZhciBNPXBlKFMucGVuZGluZ0xhbmVzKTtpZihNIT09MCl7dmFyIEQ9Uztmb3IoRC5wZW5kaW5nTGFuZXN8PTIsRC5lbnRhbmdsZWRMYW5lc3w9MjtNOyl7dmFyIEc9MTw8MzEtWm4oTSk7RC5lbnRhbmdsZW1lbnRzWzFdfD1HLE0mPX5HfW1pKFMpLCh2dCY2KT09PTAmJihSaD1sdCgpKzUwMCxNYygwKSl9fWJyZWFrO2Nhc2UgMTM6RD1LcyhTLDIpLEQhPT1udWxsJiZtcihELFMsMiksa2goKSxJYihTLDIpfWlmKFM9QmIoaCksUz09PW51bGwmJk9iKGEsbCxoLFloLGMpLFM9PT12KWJyZWFrO3Y9U312IT09bnVsbCYmaC5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIE9iKGEsbCxoLG51bGwsYyl9fWZ1bmN0aW9uIEJiKGEpe3JldHVybiBhPUZ2KGEpLFZiKGEpfXZhciBZaD1udWxsO2Z1bmN0aW9uIFZiKGEpe2lmKFloPW51bGwsYT1rcyhhKSxhIT09bnVsbCl7dmFyIGw9byhhKTtpZihsPT09bnVsbClhPW51bGw7ZWxzZXt2YXIgYz1sLnRhZztpZihjPT09MTMpe2lmKGE9cyhsKSxhIT09bnVsbClyZXR1cm4gYTthPW51bGx9ZWxzZSBpZihjPT09Myl7aWYobC5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gbC50YWc9PT0zP2wuc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDthPW51bGx9ZWxzZSBsIT09YSYmKGE9bnVsbCl9fXJldHVybiBZaD1hLG51bGx9ZnVuY3Rpb24gc00oYSl7c3dpdGNoKGEpe2Nhc2UiYmVmb3JldG9nZ2xlIjpjYXNlImNhbmNlbCI6Y2FzZSJjbGljayI6Y2FzZSJjbG9zZSI6Y2FzZSJjb250ZXh0bWVudSI6Y2FzZSJjb3B5IjpjYXNlImN1dCI6Y2FzZSJhdXhjbGljayI6Y2FzZSJkYmxjbGljayI6Y2FzZSJkcmFnZW5kIjpjYXNlImRyYWdzdGFydCI6Y2FzZSJkcm9wIjpjYXNlImZvY3VzaW4iOmNhc2UiZm9jdXNvdXQiOmNhc2UiaW5wdXQiOmNhc2UiaW52YWxpZCI6Y2FzZSJrZXlkb3duIjpjYXNlImtleXByZXNzIjpjYXNlImtleXVwIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJtb3VzZXVwIjpjYXNlInBhc3RlIjpjYXNlInBhdXNlIjpjYXNlInBsYXkiOmNhc2UicG9pbnRlcmNhbmNlbCI6Y2FzZSJwb2ludGVyZG93biI6Y2FzZSJwb2ludGVydXAiOmNhc2UicmF0ZWNoYW5nZSI6Y2FzZSJyZXNldCI6Y2FzZSJyZXNpemUiOmNhc2Uic2Vla2VkIjpjYXNlInN1Ym1pdCI6Y2FzZSJ0b2dnbGUiOmNhc2UidG91Y2hjYW5jZWwiOmNhc2UidG91Y2hlbmQiOmNhc2UidG91Y2hzdGFydCI6Y2FzZSJ2b2x1bWVjaGFuZ2UiOmNhc2UiY2hhbmdlIjpjYXNlInNlbGVjdGlvbmNoYW5nZSI6Y2FzZSJ0ZXh0SW5wdXQiOmNhc2UiY29tcG9zaXRpb25zdGFydCI6Y2FzZSJjb21wb3NpdGlvbmVuZCI6Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6Y2FzZSJiZWZvcmVibHVyIjpjYXNlImFmdGVyYmx1ciI6Y2FzZSJiZWZvcmVpbnB1dCI6Y2FzZSJibHVyIjpjYXNlImZ1bGxzY3JlZW5jaGFuZ2UiOmNhc2UiZm9jdXMiOmNhc2UiaGFzaGNoYW5nZSI6Y2FzZSJwb3BzdGF0ZSI6Y2FzZSJzZWxlY3QiOmNhc2Uic2VsZWN0c3RhcnQiOnJldHVybiAyO2Nhc2UiZHJhZyI6Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2V4aXQiOmNhc2UiZHJhZ2xlYXZlIjpjYXNlImRyYWdvdmVyIjpjYXNlIm1vdXNlbW92ZSI6Y2FzZSJtb3VzZW91dCI6Y2FzZSJtb3VzZW92ZXIiOmNhc2UicG9pbnRlcm1vdmUiOmNhc2UicG9pbnRlcm91dCI6Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJzY3JvbGwiOmNhc2UidG91Y2htb3ZlIjpjYXNlIndoZWVsIjpjYXNlIm1vdXNlZW50ZXIiOmNhc2UibW91c2VsZWF2ZSI6Y2FzZSJwb2ludGVyZW50ZXIiOmNhc2UicG9pbnRlcmxlYXZlIjpyZXR1cm4gODtjYXNlIm1lc3NhZ2UiOnN3aXRjaChzcigpKXtjYXNlIGxyOnJldHVybiAyO2Nhc2UgR3I6cmV0dXJuIDg7Y2FzZSBYbjpjYXNlIF9yOnJldHVybiAzMjtjYXNlIFNhOnJldHVybiAyNjg0MzU0NTY7ZGVmYXVsdDpyZXR1cm4gMzJ9ZGVmYXVsdDpyZXR1cm4gMzJ9fXZhciBxYj0hMSxVYT1udWxsLHphPW51bGwsRmE9bnVsbCxCYz1uZXcgTWFwLFZjPW5ldyBNYXAsSGE9W10sZkg9Im1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCIuc3BsaXQoIiAiKTtmdW5jdGlvbiBsTShhLGwpe3N3aXRjaChhKXtjYXNlImZvY3VzaW4iOmNhc2UiZm9jdXNvdXQiOlVhPW51bGw7YnJlYWs7Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2xlYXZlIjp6YT1udWxsO2JyZWFrO2Nhc2UibW91c2VvdmVyIjpjYXNlIm1vdXNlb3V0IjpGYT1udWxsO2JyZWFrO2Nhc2UicG9pbnRlcm92ZXIiOmNhc2UicG9pbnRlcm91dCI6QmMuZGVsZXRlKGwucG9pbnRlcklkKTticmVhaztjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpjYXNlImxvc3Rwb2ludGVyY2FwdHVyZSI6VmMuZGVsZXRlKGwucG9pbnRlcklkKX19ZnVuY3Rpb24gcWMoYSxsLGMsaCx2LFMpe3JldHVybiBhPT09bnVsbHx8YS5uYXRpdmVFdmVudCE9PVM/KGE9e2Jsb2NrZWRPbjpsLGRvbUV2ZW50TmFtZTpjLGV2ZW50U3lzdGVtRmxhZ3M6aCxuYXRpdmVFdmVudDpTLHRhcmdldENvbnRhaW5lcnM6W3ZdfSxsIT09bnVsbCYmKGw9RHMobCksbCE9PW51bGwmJm9NKGwpKSxhKTooYS5ldmVudFN5c3RlbUZsYWdzfD1oLGw9YS50YXJnZXRDb250YWluZXJzLHYhPT1udWxsJiZsLmluZGV4T2Yodik9PT0tMSYmbC5wdXNoKHYpLGEpfWZ1bmN0aW9uIGRIKGEsbCxjLGgsdil7c3dpdGNoKGwpe2Nhc2UiZm9jdXNpbiI6cmV0dXJuIFVhPXFjKFVhLGEsbCxjLGgsdiksITA7Y2FzZSJkcmFnZW50ZXIiOnJldHVybiB6YT1xYyh6YSxhLGwsYyxoLHYpLCEwO2Nhc2UibW91c2VvdmVyIjpyZXR1cm4gRmE9cWMoRmEsYSxsLGMsaCx2KSwhMDtjYXNlInBvaW50ZXJvdmVyIjp2YXIgUz12LnBvaW50ZXJJZDtyZXR1cm4gQmMuc2V0KFMscWMoQmMuZ2V0KFMpfHxudWxsLGEsbCxjLGgsdikpLCEwO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOnJldHVybiBTPXYucG9pbnRlcklkLFZjLnNldChTLHFjKFZjLmdldChTKXx8bnVsbCxhLGwsYyxoLHYpKSwhMH1yZXR1cm4hMX1mdW5jdGlvbiB1TShhKXt2YXIgbD1rcyhhLnRhcmdldCk7aWYobCE9PW51bGwpe3ZhciBjPW8obCk7aWYoYyE9PW51bGwpe2lmKGw9Yy50YWcsbD09PTEzKXtpZihsPXMoYyksbCE9PW51bGwpe2EuYmxvY2tlZE9uPWwsYTgoYS5wcmlvcml0eSxmdW5jdGlvbigpe2lmKGMudGFnPT09MTMpe3ZhciBoPXByKCk7aD1JaShoKTt2YXIgdj1LcyhjLGgpO3YhPT1udWxsJiZtcih2LGMsaCksSWIoYyxoKX19KTtyZXR1cm59fWVsc2UgaWYobD09PTMmJmMuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2EuYmxvY2tlZE9uPWMudGFnPT09Mz9jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX19YS5ibG9ja2VkT249bnVsbH1mdW5jdGlvbiBYaChhKXtpZihhLmJsb2NrZWRPbiE9PW51bGwpcmV0dXJuITE7Zm9yKHZhciBsPWEudGFyZ2V0Q29udGFpbmVyczswPGwubGVuZ3RoOyl7dmFyIGM9QmIoYS5uYXRpdmVFdmVudCk7aWYoYz09PW51bGwpe2M9YS5uYXRpdmVFdmVudDt2YXIgaD1uZXcgYy5jb25zdHJ1Y3RvcihjLnR5cGUsYyk7enY9aCxjLnRhcmdldC5kaXNwYXRjaEV2ZW50KGgpLHp2PW51bGx9ZWxzZSByZXR1cm4gbD1EcyhjKSxsIT09bnVsbCYmb00obCksYS5ibG9ja2VkT249YywhMTtsLnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gY00oYSxsLGMpe1hoKGEpJiZjLmRlbGV0ZShsKX1mdW5jdGlvbiBoSCgpe3FiPSExLFVhIT09bnVsbCYmWGgoVWEpJiYoVWE9bnVsbCksemEhPT1udWxsJiZYaCh6YSkmJih6YT1udWxsKSxGYSE9PW51bGwmJlhoKEZhKSYmKEZhPW51bGwpLEJjLmZvckVhY2goY00pLFZjLmZvckVhY2goY00pfWZ1bmN0aW9uIFpoKGEsbCl7YS5ibG9ja2VkT249PT1sJiYoYS5ibG9ja2VkT249bnVsbCxxYnx8KHFiPSEwLGUudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhlLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGhIKSkpfXZhciBRaD1udWxsO2Z1bmN0aW9uIGZNKGEpe1FoIT09YSYmKFFoPWEsZS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKGUudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksZnVuY3Rpb24oKXtRaD09PWEmJihRaD1udWxsKTtmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrPTMpe3ZhciBjPWFbbF0saD1hW2wrMV0sdj1hW2wrMl07aWYodHlwZW9mIGghPSJmdW5jdGlvbiIpe2lmKFZiKGh8fGMpPT09bnVsbCljb250aW51ZTticmVha312YXIgUz1EcyhjKTtTIT09bnVsbCYmKGEuc3BsaWNlKGwsMyksbC09MyxWZyhTLHtwZW5kaW5nOiEwLGRhdGE6dixtZXRob2Q6Yy5tZXRob2QsYWN0aW9uOmh9LGgsdikpfX0pKX1mdW5jdGlvbiBVYyhhKXtmdW5jdGlvbiBsKEcpe3JldHVybiBaaChHLGEpfVVhIT09bnVsbCYmWmgoVWEsYSksemEhPT1udWxsJiZaaCh6YSxhKSxGYSE9PW51bGwmJlpoKEZhLGEpLEJjLmZvckVhY2gobCksVmMuZm9yRWFjaChsKTtmb3IodmFyIGM9MDtjPEhhLmxlbmd0aDtjKyspe3ZhciBoPUhhW2NdO2guYmxvY2tlZE9uPT09YSYmKGguYmxvY2tlZE9uPW51bGwpfWZvcig7MDxIYS5sZW5ndGgmJihjPUhhWzBdLGMuYmxvY2tlZE9uPT09bnVsbCk7KXVNKGMpLGMuYmxvY2tlZE9uPT09bnVsbCYmSGEuc2hpZnQoKTtpZihjPShhLm93bmVyRG9jdW1lbnR8fGEpLiQkcmVhY3RGb3JtUmVwbGF5LGMhPW51bGwpZm9yKGg9MDtoPGMubGVuZ3RoO2grPTMpe3ZhciB2PWNbaF0sUz1jW2grMV0sTT12W1FuXXx8bnVsbDtpZih0eXBlb2YgUz09ImZ1bmN0aW9uIilNfHxmTShjKTtlbHNlIGlmKE0pe3ZhciBEPW51bGw7aWYoUyYmUy5oYXNBdHRyaWJ1dGUoImZvcm1BY3Rpb24iKSl7aWYodj1TLE09U1tRbl18fG51bGwpRD1NLmZvcm1BY3Rpb247ZWxzZSBpZihWYih2KSE9PW51bGwpY29udGludWV9ZWxzZSBEPU0uYWN0aW9uO3R5cGVvZiBEPT0iZnVuY3Rpb24iP2NbaCsxXT1EOihjLnNwbGljZShoLDMpLGgtPTMpLGZNKGMpfX19ZnVuY3Rpb24gVWIoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9SmgucHJvdG90eXBlLnJlbmRlcj1VYi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEpe3ZhciBsPXRoaXMuX2ludGVybmFsUm9vdDtpZihsPT09bnVsbCl0aHJvdyBFcnJvcihyKDQwOSkpO3ZhciBjPWwuY3VycmVudCxoPXByKCk7aU0oYyxoLGEsbCxudWxsLG51bGwpfSxKaC5wcm90b3R5cGUudW5tb3VudD1VYi5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuX2ludGVybmFsUm9vdDtpZihhIT09bnVsbCl7dGhpcy5faW50ZXJuYWxSb290PW51bGw7dmFyIGw9YS5jb250YWluZXJJbmZvO2lNKGEuY3VycmVudCwyLG51bGwsYSxudWxsLG51bGwpLGtoKCksbFtOc109bnVsbH19O2Z1bmN0aW9uIEpoKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfUpoLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihhKXtpZihhKXt2YXIgbD1XdSgpO2E9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDphLHByaW9yaXR5Omx9O2Zvcih2YXIgYz0wO2M8SGEubGVuZ3RoJiZsIT09MCYmbDxIYVtjXS5wcmlvcml0eTtjKyspO0hhLnNwbGljZShjLDAsYSksYz09PTAmJnVNKGEpfX07dmFyIGRNPXQudmVyc2lvbjtpZihkTSE9PSIxOS4xLjAiKXRocm93IEVycm9yKHIoNTI3LGRNLCIxOS4xLjAiKSk7Vy5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXt2YXIgbD1hLl9yZWFjdEludGVybmFscztpZihsPT09dm9pZCAwKXRocm93IHR5cGVvZiBhLnJlbmRlcj09ImZ1bmN0aW9uIj9FcnJvcihyKDE4OCkpOihhPU9iamVjdC5rZXlzKGEpLmpvaW4oIiwiKSxFcnJvcihyKDI2OCxhKSkpO3JldHVybiBhPWYobCksYT1hIT09bnVsbD9kKGEpOm51bGwsYT1hPT09bnVsbD9udWxsOmEuc3RhdGVOb2RlLGF9O3ZhciBwSD17YnVuZGxlVHlwZTowLHZlcnNpb246IjE5LjEuMCIscmVuZGVyZXJQYWNrYWdlTmFtZToicmVhY3QtZG9tIixjdXJyZW50RGlzcGF0Y2hlclJlZjpMLHJlY29uY2lsZXJWZXJzaW9uOiIxOS4xLjAifTtpZih0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fPCJ1Iil7dmFyIGVwPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighZXAuaXNEaXNhYmxlZCYmZXAuc3VwcG9ydHNGaWJlcil0cnl7Q289ZXAuaW5qZWN0KHBIKSxxbj1lcH1jYXRjaHt9fXJldHVybiBGYy5jcmVhdGVSb290PWZ1bmN0aW9uKGEsbCl7aWYoIWkoYSkpdGhyb3cgRXJyb3IocigyOTkpKTt2YXIgYz0hMSxoPSIiLHY9Q2osUz1qaixNPVBqLEQ9bnVsbDtyZXR1cm4gbCE9bnVsbCYmKGwudW5zdGFibGVfc3RyaWN0TW9kZT09PSEwJiYoYz0hMCksbC5pZGVudGlmaWVyUHJlZml4IT09dm9pZCAwJiYoaD1sLmlkZW50aWZpZXJQcmVmaXgpLGwub25VbmNhdWdodEVycm9yIT09dm9pZCAwJiYodj1sLm9uVW5jYXVnaHRFcnJvciksbC5vbkNhdWdodEVycm9yIT09dm9pZCAwJiYoUz1sLm9uQ2F1Z2h0RXJyb3IpLGwub25SZWNvdmVyYWJsZUVycm9yIT09dm9pZCAwJiYoTT1sLm9uUmVjb3ZlcmFibGVFcnJvciksbC51bnN0YWJsZV90cmFuc2l0aW9uQ2FsbGJhY2tzIT09dm9pZCAwJiYoRD1sLnVuc3RhYmxlX3RyYW5zaXRpb25DYWxsYmFja3MpKSxsPW5NKGEsMSwhMSxudWxsLG51bGwsYyxoLHYsUyxNLEQsbnVsbCksYVtOc109bC5jdXJyZW50LF9iKGEpLG5ldyBVYihsKX0sRmMuaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oYSxsLGMpe2lmKCFpKGEpKXRocm93IEVycm9yKHIoMjk5KSk7dmFyIGg9ITEsdj0iIixTPUNqLE09amosRD1QaixHPW51bGwscmU9bnVsbDtyZXR1cm4gYyE9bnVsbCYmKGMudW5zdGFibGVfc3RyaWN0TW9kZT09PSEwJiYoaD0hMCksYy5pZGVudGlmaWVyUHJlZml4IT09dm9pZCAwJiYodj1jLmlkZW50aWZpZXJQcmVmaXgpLGMub25VbmNhdWdodEVycm9yIT09dm9pZCAwJiYoUz1jLm9uVW5jYXVnaHRFcnJvciksYy5vbkNhdWdodEVycm9yIT09dm9pZCAwJiYoTT1jLm9uQ2F1Z2h0RXJyb3IpLGMub25SZWNvdmVyYWJsZUVycm9yIT09dm9pZCAwJiYoRD1jLm9uUmVjb3ZlcmFibGVFcnJvciksYy51bnN0YWJsZV90cmFuc2l0aW9uQ2FsbGJhY2tzIT09dm9pZCAwJiYoRz1jLnVuc3RhYmxlX3RyYW5zaXRpb25DYWxsYmFja3MpLGMuZm9ybVN0YXRlIT09dm9pZCAwJiYocmU9Yy5mb3JtU3RhdGUpKSxsPW5NKGEsMSwhMCxsLGM/P251bGwsaCx2LFMsTSxELEcscmUpLGwuY29udGV4dD1yTShudWxsKSxjPWwuY3VycmVudCxoPXByKCksaD1JaShoKSx2PUNhKGgpLHYuY2FsbGJhY2s9bnVsbCxqYShjLHYsaCksYz1oLGwuY3VycmVudC5sYW5lcz1jLFVuKGwsYyksbWkobCksYVtOc109bC5jdXJyZW50LF9iKGEpLG5ldyBKaChsKX0sRmMudmVyc2lvbj0iMTkuMS4wIixGY312YXIgU007ZnVuY3Rpb24gX0goKXtpZihTTSlyZXR1cm4gRmIuZXhwb3J0cztTTT0xO2Z1bmN0aW9uIGUoKXtpZighKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18+InUifHx0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFIT0iZnVuY3Rpb24iKSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGUpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IodCl9fXJldHVybiBlKCksRmIuZXhwb3J0cz1BSCgpLEZiLmV4cG9ydHN9dmFyIE9IPV9IKCksRXk9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1uZXcgU2V0LHRoaXMuc3Vic2NyaWJlPXRoaXMuc3Vic2NyaWJlLmJpbmQodGhpcyl9c3Vic2NyaWJlKGUpe3JldHVybiB0aGlzLmxpc3RlbmVycy5hZGQoZSksdGhpcy5vblN1YnNjcmliZSgpLCgpPT57dGhpcy5saXN0ZW5lcnMuZGVsZXRlKGUpLHRoaXMub25VbnN1YnNjcmliZSgpfX1oYXNMaXN0ZW5lcnMoKXtyZXR1cm4gdGhpcy5saXN0ZW5lcnMuc2l6ZT4wfW9uU3Vic2NyaWJlKCl7fW9uVW5zdWJzY3JpYmUoKXt9fSxUSD1jbGFzcyBleHRlbmRzIEV5eyNlOyN0OyNuO2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLiNuPWU9PntpZih0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpe2NvbnN0IHQ9KCk9PmUoKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHQsITEpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHQpfX19fW9uU3Vic2NyaWJlKCl7dGhpcy4jdHx8dGhpcy5zZXRFdmVudExpc3RlbmVyKHRoaXMuI24pfW9uVW5zdWJzY3JpYmUoKXt0aGlzLmhhc0xpc3RlbmVycygpfHwodGhpcy4jdD8uKCksdGhpcy4jdD12b2lkIDApfXNldEV2ZW50TGlzdGVuZXIoZSl7dGhpcy4jbj1lLHRoaXMuI3Q/LigpLHRoaXMuI3Q9ZSh0PT57dHlwZW9mIHQ9PSJib29sZWFuIj90aGlzLnNldEZvY3VzZWQodCk6dGhpcy5vbkZvY3VzKCl9KX1zZXRGb2N1c2VkKGUpe3RoaXMuI2UhPT1lJiYodGhpcy4jZT1lLHRoaXMub25Gb2N1cygpKX1vbkZvY3VzKCl7Y29uc3QgZT10aGlzLmlzRm9jdXNlZCgpO3RoaXMubGlzdGVuZXJzLmZvckVhY2godD0+e3QoZSl9KX1pc0ZvY3VzZWQoKXtyZXR1cm4gdHlwZW9mIHRoaXMuI2U9PSJib29sZWFuIj90aGlzLiNlOmdsb2JhbFRoaXMuZG9jdW1lbnQ/LnZpc2liaWxpdHlTdGF0ZSE9PSJoaWRkZW4ifX0sZzQ9bmV3IFRILEVIPXtzZXRUaW1lb3V0OihlLHQpPT5zZXRUaW1lb3V0KGUsdCksY2xlYXJUaW1lb3V0OmU9PmNsZWFyVGltZW91dChlKSxzZXRJbnRlcnZhbDooZSx0KT0+c2V0SW50ZXJ2YWwoZSx0KSxjbGVhckludGVydmFsOmU9PmNsZWFySW50ZXJ2YWwoZSl9LENIPWNsYXNzeyNlPUVIOyN0PSExO3NldFRpbWVvdXRQcm92aWRlcihlKXt0aGlzLiNlPWV9c2V0VGltZW91dChlLHQpe3JldHVybiB0aGlzLiNlLnNldFRpbWVvdXQoZSx0KX1jbGVhclRpbWVvdXQoZSl7dGhpcy4jZS5jbGVhclRpbWVvdXQoZSl9c2V0SW50ZXJ2YWwoZSx0KXtyZXR1cm4gdGhpcy4jZS5zZXRJbnRlcnZhbChlLHQpfWNsZWFySW50ZXJ2YWwoZSl7dGhpcy4jZS5jbGVhckludGVydmFsKGUpfX0sRFM9bmV3IENIO2Z1bmN0aW9uIGpIKGUpe3NldFRpbWVvdXQoZSwwKX12YXIgUEg9dHlwZW9mIHdpbmRvdz4idSJ8fCJEZW5vImluIGdsb2JhbFRoaXM7ZnVuY3Rpb24gbmkoKXt9ZnVuY3Rpb24gTUgoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSh0KTplfWZ1bmN0aW9uIFJIKGUpe3JldHVybiB0eXBlb2YgZT09Im51bWJlciImJmU+PTAmJmUhPT0xLzB9ZnVuY3Rpb24gTkgoZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSsodHx8MCktRGF0ZS5ub3coKSwwKX1mdW5jdGlvbiBMUyhlLHQpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj9lKHQpOmV9ZnVuY3Rpb24ga0goZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSh0KTplfWZ1bmN0aW9uIEFNKGUsdCl7Y29uc3R7dHlwZTpuPSJhbGwiLGV4YWN0OnIsZmV0Y2hTdGF0dXM6aSxwcmVkaWNhdGU6byxxdWVyeUtleTpzLHN0YWxlOnV9PWU7aWYocyl7aWYocil7aWYodC5xdWVyeUhhc2ghPT1uTyhzLHQub3B0aW9ucykpcmV0dXJuITF9ZWxzZSBpZighQ2YodC5xdWVyeUtleSxzKSlyZXR1cm4hMX1pZihuIT09ImFsbCIpe2NvbnN0IGY9dC5pc0FjdGl2ZSgpO2lmKG49PT0iYWN0aXZlIiYmIWZ8fG49PT0iaW5hY3RpdmUiJiZmKXJldHVybiExfXJldHVybiEodHlwZW9mIHU9PSJib29sZWFuIiYmdC5pc1N0YWxlKCkhPT11fHxpJiZpIT09dC5zdGF0ZS5mZXRjaFN0YXR1c3x8byYmIW8odCkpfWZ1bmN0aW9uIF9NKGUsdCl7Y29uc3R7ZXhhY3Q6bixzdGF0dXM6cixwcmVkaWNhdGU6aSxtdXRhdGlvbktleTpvfT1lO2lmKG8pe2lmKCF0Lm9wdGlvbnMubXV0YXRpb25LZXkpcmV0dXJuITE7aWYobil7aWYoRWYodC5vcHRpb25zLm11dGF0aW9uS2V5KSE9PUVmKG8pKXJldHVybiExfWVsc2UgaWYoIUNmKHQub3B0aW9ucy5tdXRhdGlvbktleSxvKSlyZXR1cm4hMX1yZXR1cm4hKHImJnQuc3RhdGUuc3RhdHVzIT09cnx8aSYmIWkodCkpfWZ1bmN0aW9uIG5PKGUsdCl7cmV0dXJuKHQ/LnF1ZXJ5S2V5SGFzaEZufHxFZikoZSl9ZnVuY3Rpb24gRWYoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUsKHQsbik9PklTKG4pP09iamVjdC5rZXlzKG4pLnNvcnQoKS5yZWR1Y2UoKHIsaSk9PihyW2ldPW5baV0scikse30pOm4pfWZ1bmN0aW9uIENmKGUsdCl7cmV0dXJuIGU9PT10PyEwOnR5cGVvZiBlIT10eXBlb2YgdD8hMTplJiZ0JiZ0eXBlb2YgZT09Im9iamVjdCImJnR5cGVvZiB0PT0ib2JqZWN0Ij9PYmplY3Qua2V5cyh0KS5ldmVyeShuPT5DZihlW25dLHRbbl0pKTohMX12YXIgREg9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBiNChlLHQsbj0wKXtpZihlPT09dClyZXR1cm4gZTtpZihuPjUwMClyZXR1cm4gdDtjb25zdCByPU9NKGUpJiZPTSh0KTtpZighciYmIShJUyhlKSYmSVModCkpKXJldHVybiB0O2NvbnN0IG89KHI/ZTpPYmplY3Qua2V5cyhlKSkubGVuZ3RoLHM9cj90Ok9iamVjdC5rZXlzKHQpLHU9cy5sZW5ndGgsZj1yP25ldyBBcnJheSh1KTp7fTtsZXQgZD0wO2ZvcihsZXQgcD0wO3A8dTtwKyspe2NvbnN0IG09cj9wOnNbcF0seT1lW21dLHg9dFttXTtpZih5PT09eCl7ZlttXT15LChyP3A8bzpESC5jYWxsKGUsbSkpJiZkKys7Y29udGludWV9aWYoeT09PW51bGx8fHg9PT1udWxsfHx0eXBlb2YgeSE9Im9iamVjdCJ8fHR5cGVvZiB4IT0ib2JqZWN0Iil7ZlttXT14O2NvbnRpbnVlfWNvbnN0IHc9YjQoeSx4LG4rMSk7ZlttXT13LHc9PT15JiZkKyt9cmV0dXJuIG89PT11JiZkPT09bz9lOmZ9ZnVuY3Rpb24gT00oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPT09T2JqZWN0LmtleXMoZSkubGVuZ3RofWZ1bmN0aW9uIElTKGUpe2lmKCFUTShlKSlyZXR1cm4hMTtjb25zdCB0PWUuY29uc3RydWN0b3I7aWYodD09PXZvaWQgMClyZXR1cm4hMDtjb25zdCBuPXQucHJvdG90eXBlO3JldHVybiEoIVRNKG4pfHwhbi5oYXNPd25Qcm9wZXJ0eSgiaXNQcm90b3R5cGVPZiIpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkhPT1PYmplY3QucHJvdG90eXBlKX1mdW5jdGlvbiBUTShlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09IltvYmplY3QgT2JqZWN0XSJ9ZnVuY3Rpb24gTEgoZSl7cmV0dXJuIG5ldyBQcm9taXNlKHQ9PntEUy5zZXRUaW1lb3V0KHQsZSl9KX1mdW5jdGlvbiBJSChlLHQsbil7cmV0dXJuIHR5cGVvZiBuLnN0cnVjdHVyYWxTaGFyaW5nPT0iZnVuY3Rpb24iP24uc3RydWN0dXJhbFNoYXJpbmcoZSx0KTpuLnN0cnVjdHVyYWxTaGFyaW5nIT09ITE/YjQoZSx0KTp0fWZ1bmN0aW9uICRIKGUsdCxuPTApe2NvbnN0IHI9Wy4uLmUsdF07cmV0dXJuIG4mJnIubGVuZ3RoPm4/ci5zbGljZSgxKTpyfWZ1bmN0aW9uIEJIKGUsdCxuPTApe2NvbnN0IHI9W3QsLi4uZV07cmV0dXJuIG4mJnIubGVuZ3RoPm4/ci5zbGljZSgwLC0xKTpyfXZhciByTz1TeW1ib2woKTtmdW5jdGlvbiB4NChlLHQpe3JldHVybiFlLnF1ZXJ5Rm4mJnQ/LmluaXRpYWxQcm9taXNlPygpPT50LmluaXRpYWxQcm9taXNlOiFlLnF1ZXJ5Rm58fGUucXVlcnlGbj09PXJPPygpPT5Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYE1pc3NpbmcgcXVlcnlGbjogJyR7ZS5xdWVyeUhhc2h9J2ApKTplLnF1ZXJ5Rm59ZnVuY3Rpb24gVkgoZSx0LG4pe2xldCByPSExLGk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzaWduYWwiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+KGk/Pz10KCkscnx8KHI9ITAsaS5hYm9ydGVkP24oKTppLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixuLHtvbmNlOiEwfSkpLGkpfSksZX12YXIgdzQ9KCgpPT57bGV0IGU9KCk9PlBIO3JldHVybntpc1NlcnZlcigpe3JldHVybiBlKCl9LHNldElzU2VydmVyKHQpe2U9dH19fSkoKTtmdW5jdGlvbiBxSCgpe2xldCBlLHQ7Y29uc3Qgbj1uZXcgUHJvbWlzZSgoaSxvKT0+e2U9aSx0PW99KTtuLnN0YXR1cz0icGVuZGluZyIsbi5jYXRjaCgoKT0+e30pO2Z1bmN0aW9uIHIoaSl7T2JqZWN0LmFzc2lnbihuLGkpLGRlbGV0ZSBuLnJlc29sdmUsZGVsZXRlIG4ucmVqZWN0fXJldHVybiBuLnJlc29sdmU9aT0+e3Ioe3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTppfSksZShpKX0sbi5yZWplY3Q9aT0+e3Ioe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjppfSksdChpKX0sbn12YXIgVUg9akg7ZnVuY3Rpb24gekgoKXtsZXQgZT1bXSx0PTAsbj11PT57dSgpfSxyPXU9Pnt1KCl9LGk9VUg7Y29uc3Qgbz11PT57dD9lLnB1c2godSk6aSgoKT0+e24odSl9KX0scz0oKT0+e2NvbnN0IHU9ZTtlPVtdLHUubGVuZ3RoJiZpKCgpPT57cigoKT0+e3UuZm9yRWFjaChmPT57bihmKX0pfSl9KX07cmV0dXJue2JhdGNoOnU9PntsZXQgZjt0Kys7dHJ5e2Y9dSgpfWZpbmFsbHl7dC0tLHR8fHMoKX1yZXR1cm4gZn0sYmF0Y2hDYWxsczp1PT4oLi4uZik9PntvKCgpPT57dSguLi5mKX0pfSxzY2hlZHVsZTpvLHNldE5vdGlmeUZ1bmN0aW9uOnU9PntuPXV9LHNldEJhdGNoTm90aWZ5RnVuY3Rpb246dT0+e3I9dX0sc2V0U2NoZWR1bGVyOnU9PntpPXV9fX12YXIgRm49ekgoKSxGSD1jbGFzcyBleHRlbmRzIEV5eyNlPSEwOyN0OyNuO2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLiNuPWU9PntpZih0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpe2NvbnN0IHQ9KCk9PmUoITApLG49KCk9PmUoITEpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigib25saW5lIix0LCExKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigib2ZmbGluZSIsbiwhMSksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigib25saW5lIix0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigib2ZmbGluZSIsbil9fX19b25TdWJzY3JpYmUoKXt0aGlzLiN0fHx0aGlzLnNldEV2ZW50TGlzdGVuZXIodGhpcy4jbil9b25VbnN1YnNjcmliZSgpe3RoaXMuaGFzTGlzdGVuZXJzKCl8fCh0aGlzLiN0Py4oKSx0aGlzLiN0PXZvaWQgMCl9c2V0RXZlbnRMaXN0ZW5lcihlKXt0aGlzLiNuPWUsdGhpcy4jdD8uKCksdGhpcy4jdD1lKHRoaXMuc2V0T25saW5lLmJpbmQodGhpcykpfXNldE9ubGluZShlKXt0aGlzLiNlIT09ZSYmKHRoaXMuI2U9ZSx0aGlzLmxpc3RlbmVycy5mb3JFYWNoKG49PntuKGUpfSkpfWlzT25saW5lKCl7cmV0dXJuIHRoaXMuI2V9fSxRcD1uZXcgRkg7ZnVuY3Rpb24gSEgoZSl7cmV0dXJuIE1hdGgubWluKDFlMyoyKiplLDNlNCl9ZnVuY3Rpb24gUzQoZSl7cmV0dXJuKGU/PyJvbmxpbmUiKT09PSJvbmxpbmUiP1FwLmlzT25saW5lKCk6ITB9dmFyICRTPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoIkNhbmNlbGxlZEVycm9yIiksdGhpcy5yZXZlcnQ9ZT8ucmV2ZXJ0LHRoaXMuc2lsZW50PWU/LnNpbGVudH19O2Z1bmN0aW9uIEE0KGUpe2xldCB0PSExLG49MCxyO2NvbnN0IGk9cUgoKSxvPSgpPT5pLnN0YXR1cyE9PSJwZW5kaW5nIixzPWI9PntpZighbygpKXtjb25zdCBnPW5ldyAkUyhiKTt5KGcpLGUub25DYW5jZWw/LihnKX19LHU9KCk9Pnt0PSEwfSxmPSgpPT57dD0hMX0sZD0oKT0+ZzQuaXNGb2N1c2VkKCkmJihlLm5ldHdvcmtNb2RlPT09ImFsd2F5cyJ8fFFwLmlzT25saW5lKCkpJiZlLmNhblJ1bigpLHA9KCk9PlM0KGUubmV0d29ya01vZGUpJiZlLmNhblJ1bigpLG09Yj0+e28oKXx8KHI/LigpLGkucmVzb2x2ZShiKSl9LHk9Yj0+e28oKXx8KHI/LigpLGkucmVqZWN0KGIpKX0seD0oKT0+bmV3IFByb21pc2UoYj0+e3I9Zz0+eyhvKCl8fGQoKSkmJmIoZyl9LGUub25QYXVzZT8uKCl9KS50aGVuKCgpPT57cj12b2lkIDAsbygpfHxlLm9uQ29udGludWU/LigpfSksdz0oKT0+e2lmKG8oKSlyZXR1cm47bGV0IGI7Y29uc3QgZz1uPT09MD9lLmluaXRpYWxQcm9taXNlOnZvaWQgMDt0cnl7Yj1nPz9lLmZuKCl9Y2F0Y2goXyl7Yj1Qcm9taXNlLnJlamVjdChfKX1Qcm9taXNlLnJlc29sdmUoYikudGhlbihtKS5jYXRjaChfPT57aWYobygpKXJldHVybjtjb25zdCBPPWUucmV0cnk/Pyh3NC5pc1NlcnZlcigpPzA6MyksRT1lLnJldHJ5RGVsYXk/P0hILGo9dHlwZW9mIEU9PSJmdW5jdGlvbiI/RShuLF8pOkUsVD1PPT09ITB8fHR5cGVvZiBPPT0ibnVtYmVyIiYmbjxPfHx0eXBlb2YgTz09ImZ1bmN0aW9uIiYmTyhuLF8pO2lmKHR8fCFUKXt5KF8pO3JldHVybn1uKyssZS5vbkZhaWw/LihuLF8pLExIKGopLnRoZW4oKCk9PmQoKT92b2lkIDA6eCgpKS50aGVuKCgpPT57dD95KF8pOncoKX0pfSl9O3JldHVybntwcm9taXNlOmksc3RhdHVzOigpPT5pLnN0YXR1cyxjYW5jZWw6cyxjb250aW51ZTooKT0+KHI/LigpLGkpLGNhbmNlbFJldHJ5OnUsY29udGludWVSZXRyeTpmLGNhblN0YXJ0OnAsc3RhcnQ6KCk9PihwKCk/dygpOngoKS50aGVuKHcpLGkpfX12YXIgXzQ9Y2xhc3N7I2U7ZGVzdHJveSgpe3RoaXMuY2xlYXJHY1RpbWVvdXQoKX1zY2hlZHVsZUdjKCl7dGhpcy5jbGVhckdjVGltZW91dCgpLFJIKHRoaXMuZ2NUaW1lKSYmKHRoaXMuI2U9RFMuc2V0VGltZW91dCgoKT0+e3RoaXMub3B0aW9uYWxSZW1vdmUoKX0sdGhpcy5nY1RpbWUpKX11cGRhdGVHY1RpbWUoZSl7dGhpcy5nY1RpbWU9TWF0aC5tYXgodGhpcy5nY1RpbWV8fDAsZT8/KHc0LmlzU2VydmVyKCk/MS8wOjMwMCoxZTMpKX1jbGVhckdjVGltZW91dCgpe3RoaXMuI2UhPT12b2lkIDAmJihEUy5jbGVhclRpbWVvdXQodGhpcy4jZSksdGhpcy4jZT12b2lkIDApfX07ZnVuY3Rpb24gR0goZSl7cmV0dXJue29uRmV0Y2g6KHQsbik9Pntjb25zdCByPXQub3B0aW9ucyxpPXQuZmV0Y2hPcHRpb25zPy5tZXRhPy5mZXRjaE1vcmU/LmRpcmVjdGlvbixvPXQuc3RhdGUuZGF0YT8ucGFnZXN8fFtdLHM9dC5zdGF0ZS5kYXRhPy5wYWdlUGFyYW1zfHxbXTtsZXQgdT17cGFnZXM6W10scGFnZVBhcmFtczpbXX0sZj0wO2NvbnN0IGQ9YXN5bmMoKT0+e2xldCBwPSExO2NvbnN0IG09dz0+e1ZIKHcsKCk9PnQuc2lnbmFsLCgpPT5wPSEwKX0seT14NCh0Lm9wdGlvbnMsdC5mZXRjaE9wdGlvbnMpLHg9YXN5bmModyxiLGcpPT57aWYocClyZXR1cm4gUHJvbWlzZS5yZWplY3QodC5zaWduYWwucmVhc29uKTtpZihiPT1udWxsJiZ3LnBhZ2VzLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHcpO2NvbnN0IE89KCgpPT57Y29uc3QgUD17Y2xpZW50OnQuY2xpZW50LHF1ZXJ5S2V5OnQucXVlcnlLZXkscGFnZVBhcmFtOmIsZGlyZWN0aW9uOmc/ImJhY2t3YXJkIjoiZm9yd2FyZCIsbWV0YTp0Lm9wdGlvbnMubWV0YX07cmV0dXJuIG0oUCksUH0pKCksRT1hd2FpdCB5KE8pLHttYXhQYWdlczpqfT10Lm9wdGlvbnMsVD1nP0JIOiRIO3JldHVybntwYWdlczpUKHcucGFnZXMsRSxqKSxwYWdlUGFyYW1zOlQody5wYWdlUGFyYW1zLGIsail9fTtpZihpJiZvLmxlbmd0aCl7Y29uc3Qgdz1pPT09ImJhY2t3YXJkIixiPXc/S0g6RU0sZz17cGFnZXM6byxwYWdlUGFyYW1zOnN9LF89YihyLGcpO3U9YXdhaXQgeChnLF8sdyl9ZWxzZXtjb25zdCB3PWU/P28ubGVuZ3RoO2Rve2NvbnN0IGI9Zj09PTA/c1swXT8/ci5pbml0aWFsUGFnZVBhcmFtOkVNKHIsdSk7aWYoZj4wJiZiPT1udWxsKWJyZWFrO3U9YXdhaXQgeCh1LGIpLGYrK313aGlsZShmPHcpfXJldHVybiB1fTt0Lm9wdGlvbnMucGVyc2lzdGVyP3QuZmV0Y2hGbj0oKT0+dC5vcHRpb25zLnBlcnNpc3Rlcj8uKGQse2NsaWVudDp0LmNsaWVudCxxdWVyeUtleTp0LnF1ZXJ5S2V5LG1ldGE6dC5vcHRpb25zLm1ldGEsc2lnbmFsOnQuc2lnbmFsfSxuKTp0LmZldGNoRm49ZH19fWZ1bmN0aW9uIEVNKGUse3BhZ2VzOnQscGFnZVBhcmFtczpufSl7Y29uc3Qgcj10Lmxlbmd0aC0xO3JldHVybiB0Lmxlbmd0aD4wP2UuZ2V0TmV4dFBhZ2VQYXJhbSh0W3JdLHQsbltyXSxuKTp2b2lkIDB9ZnVuY3Rpb24gS0goZSx7cGFnZXM6dCxwYWdlUGFyYW1zOm59KXtyZXR1cm4gdC5sZW5ndGg+MD9lLmdldFByZXZpb3VzUGFnZVBhcmFtPy4odFswXSx0LG5bMF0sbik6dm9pZCAwfXZhciBXSD1jbGFzcyBleHRlbmRzIF80eyNlOyN0OyNuOyNpOyNhOyNyOyNsOyNvO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy4jbz0hMSx0aGlzLiNsPWUuZGVmYXVsdE9wdGlvbnMsdGhpcy5zZXRPcHRpb25zKGUub3B0aW9ucyksdGhpcy5vYnNlcnZlcnM9W10sdGhpcy4jYT1lLmNsaWVudCx0aGlzLiNpPXRoaXMuI2EuZ2V0UXVlcnlDYWNoZSgpLHRoaXMucXVlcnlLZXk9ZS5xdWVyeUtleSx0aGlzLnF1ZXJ5SGFzaD1lLnF1ZXJ5SGFzaCx0aGlzLiN0PWpNKHRoaXMub3B0aW9ucyksdGhpcy5zdGF0ZT1lLnN0YXRlPz90aGlzLiN0LHRoaXMuc2NoZWR1bGVHYygpfWdldCBtZXRhKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5tZXRhfWdldCBxdWVyeVR5cGUoKXtyZXR1cm4gdGhpcy4jZX1nZXQgcHJvbWlzZSgpe3JldHVybiB0aGlzLiNyPy5wcm9taXNlfXNldE9wdGlvbnMoZSl7aWYodGhpcy5vcHRpb25zPXsuLi50aGlzLiNsLC4uLmV9LGU/Ll90eXBlJiYodGhpcy4jZT1lLl90eXBlKSx0aGlzLnVwZGF0ZUdjVGltZSh0aGlzLm9wdGlvbnMuZ2NUaW1lKSx0aGlzLnN0YXRlJiZ0aGlzLnN0YXRlLmRhdGE9PT12b2lkIDApe2NvbnN0IHQ9ak0odGhpcy5vcHRpb25zKTt0LmRhdGEhPT12b2lkIDAmJih0aGlzLnNldFN0YXRlKENNKHQuZGF0YSx0LmRhdGFVcGRhdGVkQXQpKSx0aGlzLiN0PXQpfX1vcHRpb25hbFJlbW92ZSgpeyF0aGlzLm9ic2VydmVycy5sZW5ndGgmJnRoaXMuc3RhdGUuZmV0Y2hTdGF0dXM9PT0iaWRsZSImJnRoaXMuI2kucmVtb3ZlKHRoaXMpfXNldERhdGEoZSx0KXtjb25zdCBuPUlIKHRoaXMuc3RhdGUuZGF0YSxlLHRoaXMub3B0aW9ucyk7cmV0dXJuIHRoaXMuI3Moe2RhdGE6bix0eXBlOiJzdWNjZXNzIixkYXRhVXBkYXRlZEF0OnQ/LnVwZGF0ZWRBdCxtYW51YWw6dD8ubWFudWFsfSksbn1zZXRTdGF0ZShlKXt0aGlzLiNzKHt0eXBlOiJzZXRTdGF0ZSIsc3RhdGU6ZX0pfWNhbmNlbChlKXtjb25zdCB0PXRoaXMuI3I/LnByb21pc2U7cmV0dXJuIHRoaXMuI3I/LmNhbmNlbChlKSx0P3QudGhlbihuaSkuY2F0Y2gobmkpOlByb21pc2UucmVzb2x2ZSgpfWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCksdGhpcy5jYW5jZWwoe3NpbGVudDohMH0pfWdldCByZXNldFN0YXRlKCl7cmV0dXJuIHRoaXMuI3R9cmVzZXQoKXt0aGlzLmRlc3Ryb3koKSx0aGlzLnNldFN0YXRlKHRoaXMucmVzZXRTdGF0ZSl9aXNBY3RpdmUoKXtyZXR1cm4gdGhpcy5vYnNlcnZlcnMuc29tZShlPT5rSChlLm9wdGlvbnMuZW5hYmxlZCx0aGlzKSE9PSExKX1pc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKT4wPyF0aGlzLmlzQWN0aXZlKCk6dGhpcy5vcHRpb25zLnF1ZXJ5Rm49PT1yT3x8IXRoaXMuaXNGZXRjaGVkKCl9aXNGZXRjaGVkKCl7cmV0dXJuIHRoaXMuc3RhdGUuZGF0YVVwZGF0ZUNvdW50K3RoaXMuc3RhdGUuZXJyb3JVcGRhdGVDb3VudD4wfWlzU3RhdGljKCl7cmV0dXJuIHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKT4wP3RoaXMub2JzZXJ2ZXJzLnNvbWUoZT0+TFMoZS5vcHRpb25zLnN0YWxlVGltZSx0aGlzKT09PSJzdGF0aWMiKTohMX1pc1N0YWxlKCl7cmV0dXJuIHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKT4wP3RoaXMub2JzZXJ2ZXJzLnNvbWUoZT0+ZS5nZXRDdXJyZW50UmVzdWx0KCkuaXNTdGFsZSk6dGhpcy5zdGF0ZS5kYXRhPT09dm9pZCAwfHx0aGlzLnN0YXRlLmlzSW52YWxpZGF0ZWR9aXNTdGFsZUJ5VGltZShlPTApe3JldHVybiB0aGlzLnN0YXRlLmRhdGE9PT12b2lkIDA/ITA6ZT09PSJzdGF0aWMiPyExOnRoaXMuc3RhdGUuaXNJbnZhbGlkYXRlZD8hMDohTkgodGhpcy5zdGF0ZS5kYXRhVXBkYXRlZEF0LGUpfW9uRm9jdXMoKXt0aGlzLm9ic2VydmVycy5maW5kKHQ9PnQuc2hvdWxkRmV0Y2hPbldpbmRvd0ZvY3VzKCkpPy5yZWZldGNoKHtjYW5jZWxSZWZldGNoOiExfSksdGhpcy4jcj8uY29udGludWUoKX1vbk9ubGluZSgpe3RoaXMub2JzZXJ2ZXJzLmZpbmQodD0+dC5zaG91bGRGZXRjaE9uUmVjb25uZWN0KCkpPy5yZWZldGNoKHtjYW5jZWxSZWZldGNoOiExfSksdGhpcy4jcj8uY29udGludWUoKX1hZGRPYnNlcnZlcihlKXt0aGlzLm9ic2VydmVycy5pbmNsdWRlcyhlKXx8KHRoaXMub2JzZXJ2ZXJzLnB1c2goZSksdGhpcy5jbGVhckdjVGltZW91dCgpLHRoaXMuI2kubm90aWZ5KHt0eXBlOiJvYnNlcnZlckFkZGVkIixxdWVyeTp0aGlzLG9ic2VydmVyOmV9KSl9cmVtb3ZlT2JzZXJ2ZXIoZSl7dGhpcy5vYnNlcnZlcnMuaW5jbHVkZXMoZSkmJih0aGlzLm9ic2VydmVycz10aGlzLm9ic2VydmVycy5maWx0ZXIodD0+dCE9PWUpLHRoaXMub2JzZXJ2ZXJzLmxlbmd0aHx8KHRoaXMuI3ImJih0aGlzLiNvfHx0aGlzLiN1KCk/dGhpcy4jci5jYW5jZWwoe3JldmVydDohMH0pOnRoaXMuI3IuY2FuY2VsUmV0cnkoKSksdGhpcy5zY2hlZHVsZUdjKCkpLHRoaXMuI2kubm90aWZ5KHt0eXBlOiJvYnNlcnZlclJlbW92ZWQiLHF1ZXJ5OnRoaXMsb2JzZXJ2ZXI6ZX0pKX1nZXRPYnNlcnZlcnNDb3VudCgpe3JldHVybiB0aGlzLm9ic2VydmVycy5sZW5ndGh9I3UoKXtyZXR1cm4gdGhpcy5zdGF0ZS5mZXRjaFN0YXR1cz09PSJwYXVzZWQiJiZ0aGlzLnN0YXRlLnN0YXR1cz09PSJwZW5kaW5nIn1pbnZhbGlkYXRlKCl7dGhpcy5zdGF0ZS5pc0ludmFsaWRhdGVkfHx0aGlzLiNzKHt0eXBlOiJpbnZhbGlkYXRlIn0pfWFzeW5jIGZldGNoKGUsdCl7aWYodGhpcy5zdGF0ZS5mZXRjaFN0YXR1cyE9PSJpZGxlIiYmdGhpcy4jcj8uc3RhdHVzKCkhPT0icmVqZWN0ZWQiKXtpZih0aGlzLnN0YXRlLmRhdGEhPT12b2lkIDAmJnQ/LmNhbmNlbFJlZmV0Y2gpdGhpcy5jYW5jZWwoe3NpbGVudDohMH0pO2Vsc2UgaWYodGhpcy4jcilyZXR1cm4gdGhpcy4jci5jb250aW51ZVJldHJ5KCksdGhpcy4jci5wcm9taXNlfWlmKGUmJnRoaXMuc2V0T3B0aW9ucyhlKSwhdGhpcy5vcHRpb25zLnF1ZXJ5Rm4pe2NvbnN0IGY9dGhpcy5vYnNlcnZlcnMuZmluZChkPT5kLm9wdGlvbnMucXVlcnlGbik7ZiYmdGhpcy5zZXRPcHRpb25zKGYub3B0aW9ucyl9Y29uc3Qgbj1uZXcgQWJvcnRDb250cm9sbGVyLHI9Zj0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJzaWduYWwiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+KHRoaXMuI289ITAsbi5zaWduYWwpfSl9LGk9KCk9Pntjb25zdCBmPXg0KHRoaXMub3B0aW9ucyx0KSxwPSgoKT0+e2NvbnN0IG09e2NsaWVudDp0aGlzLiNhLHF1ZXJ5S2V5OnRoaXMucXVlcnlLZXksbWV0YTp0aGlzLm1ldGF9O3JldHVybiByKG0pLG19KSgpO3JldHVybiB0aGlzLiNvPSExLHRoaXMub3B0aW9ucy5wZXJzaXN0ZXI/dGhpcy5vcHRpb25zLnBlcnNpc3RlcihmLHAsdGhpcyk6ZihwKX0scz0oKCk9Pntjb25zdCBmPXtmZXRjaE9wdGlvbnM6dCxvcHRpb25zOnRoaXMub3B0aW9ucyxxdWVyeUtleTp0aGlzLnF1ZXJ5S2V5LGNsaWVudDp0aGlzLiNhLHN0YXRlOnRoaXMuc3RhdGUsZmV0Y2hGbjppfTtyZXR1cm4gcihmKSxmfSkoKTsodGhpcy4jZT09PSJpbmZpbml0ZSI/R0godGhpcy5vcHRpb25zLnBhZ2VzKTp0aGlzLm9wdGlvbnMuYmVoYXZpb3IpPy5vbkZldGNoKHMsdGhpcyksdGhpcy4jbj10aGlzLnN0YXRlLCh0aGlzLnN0YXRlLmZldGNoU3RhdHVzPT09ImlkbGUifHx0aGlzLnN0YXRlLmZldGNoTWV0YSE9PXMuZmV0Y2hPcHRpb25zPy5tZXRhKSYmdGhpcy4jcyh7dHlwZToiZmV0Y2giLG1ldGE6cy5mZXRjaE9wdGlvbnM/Lm1ldGF9KSx0aGlzLiNyPUE0KHtpbml0aWFsUHJvbWlzZTp0Py5pbml0aWFsUHJvbWlzZSxmbjpzLmZldGNoRm4sb25DYW5jZWw6Zj0+e2YgaW5zdGFuY2VvZiAkUyYmZi5yZXZlcnQmJnRoaXMuc2V0U3RhdGUoey4uLnRoaXMuI24sZmV0Y2hTdGF0dXM6ImlkbGUifSksbi5hYm9ydCgpfSxvbkZhaWw6KGYsZCk9Pnt0aGlzLiNzKHt0eXBlOiJmYWlsZWQiLGZhaWx1cmVDb3VudDpmLGVycm9yOmR9KX0sb25QYXVzZTooKT0+e3RoaXMuI3Moe3R5cGU6InBhdXNlIn0pfSxvbkNvbnRpbnVlOigpPT57dGhpcy4jcyh7dHlwZToiY29udGludWUifSl9LHJldHJ5OnMub3B0aW9ucy5yZXRyeSxyZXRyeURlbGF5OnMub3B0aW9ucy5yZXRyeURlbGF5LG5ldHdvcmtNb2RlOnMub3B0aW9ucy5uZXR3b3JrTW9kZSxjYW5SdW46KCk9PiEwfSk7dHJ5e2NvbnN0IGY9YXdhaXQgdGhpcy4jci5zdGFydCgpO2lmKGY9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGAke3RoaXMucXVlcnlIYXNofSBkYXRhIGlzIHVuZGVmaW5lZGApO3JldHVybiB0aGlzLnNldERhdGEoZiksdGhpcy4jaS5jb25maWcub25TdWNjZXNzPy4oZix0aGlzKSx0aGlzLiNpLmNvbmZpZy5vblNldHRsZWQ/LihmLHRoaXMuc3RhdGUuZXJyb3IsdGhpcyksZn1jYXRjaChmKXtpZihmIGluc3RhbmNlb2YgJFMpe2lmKGYuc2lsZW50KXJldHVybiB0aGlzLiNyLnByb21pc2U7aWYoZi5yZXZlcnQpe2lmKHRoaXMuc3RhdGUuZGF0YT09PXZvaWQgMCl0aHJvdyBmO3JldHVybiB0aGlzLnN0YXRlLmRhdGF9fXRocm93IHRoaXMuI3Moe3R5cGU6ImVycm9yIixlcnJvcjpmfSksdGhpcy4jaS5jb25maWcub25FcnJvcj8uKGYsdGhpcyksdGhpcy4jaS5jb25maWcub25TZXR0bGVkPy4odGhpcy5zdGF0ZS5kYXRhLGYsdGhpcyksZn1maW5hbGx5e3RoaXMuc2NoZWR1bGVHYygpfX0jcyhlKXtjb25zdCB0PW49Pntzd2l0Y2goZS50eXBlKXtjYXNlImZhaWxlZCI6cmV0dXJuey4uLm4sZmV0Y2hGYWlsdXJlQ291bnQ6ZS5mYWlsdXJlQ291bnQsZmV0Y2hGYWlsdXJlUmVhc29uOmUuZXJyb3J9O2Nhc2UicGF1c2UiOnJldHVybnsuLi5uLGZldGNoU3RhdHVzOiJwYXVzZWQifTtjYXNlImNvbnRpbnVlIjpyZXR1cm57Li4ubixmZXRjaFN0YXR1czoiZmV0Y2hpbmcifTtjYXNlImZldGNoIjpyZXR1cm57Li4ubiwuLi5ZSChuLmRhdGEsdGhpcy5vcHRpb25zKSxmZXRjaE1ldGE6ZS5tZXRhPz9udWxsfTtjYXNlInN1Y2Nlc3MiOmNvbnN0IHI9ey4uLm4sLi4uQ00oZS5kYXRhLGUuZGF0YVVwZGF0ZWRBdCksZGF0YVVwZGF0ZUNvdW50Om4uZGF0YVVwZGF0ZUNvdW50KzEsLi4uIWUubWFudWFsJiZ7ZmV0Y2hTdGF0dXM6ImlkbGUiLGZldGNoRmFpbHVyZUNvdW50OjAsZmV0Y2hGYWlsdXJlUmVhc29uOm51bGx9fTtyZXR1cm4gdGhpcy4jbj1lLm1hbnVhbD9yOnZvaWQgMCxyO2Nhc2UiZXJyb3IiOmNvbnN0IGk9ZS5lcnJvcjtyZXR1cm57Li4ubixlcnJvcjppLGVycm9yVXBkYXRlQ291bnQ6bi5lcnJvclVwZGF0ZUNvdW50KzEsZXJyb3JVcGRhdGVkQXQ6RGF0ZS5ub3coKSxmZXRjaEZhaWx1cmVDb3VudDpuLmZldGNoRmFpbHVyZUNvdW50KzEsZmV0Y2hGYWlsdXJlUmVhc29uOmksZmV0Y2hTdGF0dXM6ImlkbGUiLHN0YXR1czoiZXJyb3IiLGlzSW52YWxpZGF0ZWQ6ITB9O2Nhc2UiaW52YWxpZGF0ZSI6cmV0dXJuey4uLm4saXNJbnZhbGlkYXRlZDohMH07Y2FzZSJzZXRTdGF0ZSI6cmV0dXJuey4uLm4sLi4uZS5zdGF0ZX19fTt0aGlzLnN0YXRlPXQodGhpcy5zdGF0ZSksRm4uYmF0Y2goKCk9Pnt0aGlzLm9ic2VydmVycy5mb3JFYWNoKG49PntuLm9uUXVlcnlVcGRhdGUoKX0pLHRoaXMuI2kubm90aWZ5KHtxdWVyeTp0aGlzLHR5cGU6InVwZGF0ZWQiLGFjdGlvbjplfSl9KX19O2Z1bmN0aW9uIFlIKGUsdCl7cmV0dXJue2ZldGNoRmFpbHVyZUNvdW50OjAsZmV0Y2hGYWlsdXJlUmVhc29uOm51bGwsZmV0Y2hTdGF0dXM6UzQodC5uZXR3b3JrTW9kZSk/ImZldGNoaW5nIjoicGF1c2VkIiwuLi5lPT09dm9pZCAwJiZ7ZXJyb3I6bnVsbCxzdGF0dXM6InBlbmRpbmcifX19ZnVuY3Rpb24gQ00oZSx0KXtyZXR1cm57ZGF0YTplLGRhdGFVcGRhdGVkQXQ6dD8/RGF0ZS5ub3coKSxlcnJvcjpudWxsLGlzSW52YWxpZGF0ZWQ6ITEsc3RhdHVzOiJzdWNjZXNzIn19ZnVuY3Rpb24gak0oZSl7Y29uc3QgdD10eXBlb2YgZS5pbml0aWFsRGF0YT09ImZ1bmN0aW9uIj9lLmluaXRpYWxEYXRhKCk6ZS5pbml0aWFsRGF0YSxuPXQhPT12b2lkIDAscj1uP3R5cGVvZiBlLmluaXRpYWxEYXRhVXBkYXRlZEF0PT0iZnVuY3Rpb24iP2UuaW5pdGlhbERhdGFVcGRhdGVkQXQoKTplLmluaXRpYWxEYXRhVXBkYXRlZEF0OjA7cmV0dXJue2RhdGE6dCxkYXRhVXBkYXRlQ291bnQ6MCxkYXRhVXBkYXRlZEF0Om4/cj8/RGF0ZS5ub3coKTowLGVycm9yOm51bGwsZXJyb3JVcGRhdGVDb3VudDowLGVycm9yVXBkYXRlZEF0OjAsZmV0Y2hGYWlsdXJlQ291bnQ6MCxmZXRjaEZhaWx1cmVSZWFzb246bnVsbCxmZXRjaE1ldGE6bnVsbCxpc0ludmFsaWRhdGVkOiExLHN0YXR1czpuPyJzdWNjZXNzIjoicGVuZGluZyIsZmV0Y2hTdGF0dXM6ImlkbGUifX12YXIgWEg9Y2xhc3MgZXh0ZW5kcyBfNHsjZTsjdDsjbjsjaTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuI2U9ZS5jbGllbnQsdGhpcy5tdXRhdGlvbklkPWUubXV0YXRpb25JZCx0aGlzLiNuPWUubXV0YXRpb25DYWNoZSx0aGlzLiN0PVtdLHRoaXMuc3RhdGU9ZS5zdGF0ZXx8WkgoKSx0aGlzLnNldE9wdGlvbnMoZS5vcHRpb25zKSx0aGlzLnNjaGVkdWxlR2MoKX1zZXRPcHRpb25zKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMudXBkYXRlR2NUaW1lKHRoaXMub3B0aW9ucy5nY1RpbWUpfWdldCBtZXRhKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5tZXRhfWFkZE9ic2VydmVyKGUpe3RoaXMuI3QuaW5jbHVkZXMoZSl8fCh0aGlzLiN0LnB1c2goZSksdGhpcy5jbGVhckdjVGltZW91dCgpLHRoaXMuI24ubm90aWZ5KHt0eXBlOiJvYnNlcnZlckFkZGVkIixtdXRhdGlvbjp0aGlzLG9ic2VydmVyOmV9KSl9cmVtb3ZlT2JzZXJ2ZXIoZSl7dGhpcy4jdD10aGlzLiN0LmZpbHRlcih0PT50IT09ZSksdGhpcy5zY2hlZHVsZUdjKCksdGhpcy4jbi5ub3RpZnkoe3R5cGU6Im9ic2VydmVyUmVtb3ZlZCIsbXV0YXRpb246dGhpcyxvYnNlcnZlcjplfSl9b3B0aW9uYWxSZW1vdmUoKXt0aGlzLiN0Lmxlbmd0aHx8KHRoaXMuc3RhdGUuc3RhdHVzPT09InBlbmRpbmciP3RoaXMuc2NoZWR1bGVHYygpOnRoaXMuI24ucmVtb3ZlKHRoaXMpKX1jb250aW51ZSgpe3JldHVybiB0aGlzLiNpPy5jb250aW51ZSgpPz90aGlzLmV4ZWN1dGUodGhpcy5zdGF0ZS52YXJpYWJsZXMpfWFzeW5jIGV4ZWN1dGUoZSl7Y29uc3QgdD0oKT0+e3RoaXMuI2Eoe3R5cGU6ImNvbnRpbnVlIn0pfSxuPXtjbGllbnQ6dGhpcy4jZSxtZXRhOnRoaXMub3B0aW9ucy5tZXRhLG11dGF0aW9uS2V5OnRoaXMub3B0aW9ucy5tdXRhdGlvbktleX07dGhpcy4jaT1BNCh7Zm46KCk9PnRoaXMub3B0aW9ucy5tdXRhdGlvbkZuP3RoaXMub3B0aW9ucy5tdXRhdGlvbkZuKGUsbik6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJObyBtdXRhdGlvbkZuIGZvdW5kIikpLG9uRmFpbDoobyxzKT0+e3RoaXMuI2Eoe3R5cGU6ImZhaWxlZCIsZmFpbHVyZUNvdW50Om8sZXJyb3I6c30pfSxvblBhdXNlOigpPT57dGhpcy4jYSh7dHlwZToicGF1c2UifSl9LG9uQ29udGludWU6dCxyZXRyeTp0aGlzLm9wdGlvbnMucmV0cnk/PzAscmV0cnlEZWxheTp0aGlzLm9wdGlvbnMucmV0cnlEZWxheSxuZXR3b3JrTW9kZTp0aGlzLm9wdGlvbnMubmV0d29ya01vZGUsY2FuUnVuOigpPT50aGlzLiNuLmNhblJ1bih0aGlzKX0pO2NvbnN0IHI9dGhpcy5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyIsaT0hdGhpcy4jaS5jYW5TdGFydCgpO3RyeXtpZihyKXQoKTtlbHNle3RoaXMuI2Eoe3R5cGU6InBlbmRpbmciLHZhcmlhYmxlczplLGlzUGF1c2VkOml9KSx0aGlzLiNuLmNvbmZpZy5vbk11dGF0ZSYmYXdhaXQgdGhpcy4jbi5jb25maWcub25NdXRhdGUoZSx0aGlzLG4pO2NvbnN0IHM9YXdhaXQgdGhpcy5vcHRpb25zLm9uTXV0YXRlPy4oZSxuKTtzIT09dGhpcy5zdGF0ZS5jb250ZXh0JiZ0aGlzLiNhKHt0eXBlOiJwZW5kaW5nIixjb250ZXh0OnMsdmFyaWFibGVzOmUsaXNQYXVzZWQ6aX0pfWNvbnN0IG89YXdhaXQgdGhpcy4jaS5zdGFydCgpO3JldHVybiBhd2FpdCB0aGlzLiNuLmNvbmZpZy5vblN1Y2Nlc3M/LihvLGUsdGhpcy5zdGF0ZS5jb250ZXh0LHRoaXMsbiksYXdhaXQgdGhpcy5vcHRpb25zLm9uU3VjY2Vzcz8uKG8sZSx0aGlzLnN0YXRlLmNvbnRleHQsbiksYXdhaXQgdGhpcy4jbi5jb25maWcub25TZXR0bGVkPy4obyxudWxsLHRoaXMuc3RhdGUudmFyaWFibGVzLHRoaXMuc3RhdGUuY29udGV4dCx0aGlzLG4pLGF3YWl0IHRoaXMub3B0aW9ucy5vblNldHRsZWQ/LihvLG51bGwsZSx0aGlzLnN0YXRlLmNvbnRleHQsbiksdGhpcy4jYSh7dHlwZToic3VjY2VzcyIsZGF0YTpvfSksb31jYXRjaChvKXt0cnl7YXdhaXQgdGhpcy4jbi5jb25maWcub25FcnJvcj8uKG8sZSx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyxuKX1jYXRjaChzKXtQcm9taXNlLnJlamVjdChzKX10cnl7YXdhaXQgdGhpcy5vcHRpb25zLm9uRXJyb3I/LihvLGUsdGhpcy5zdGF0ZS5jb250ZXh0LG4pfWNhdGNoKHMpe1Byb21pc2UucmVqZWN0KHMpfXRyeXthd2FpdCB0aGlzLiNuLmNvbmZpZy5vblNldHRsZWQ/Lih2b2lkIDAsbyx0aGlzLnN0YXRlLnZhcmlhYmxlcyx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyxuKX1jYXRjaChzKXtQcm9taXNlLnJlamVjdChzKX10cnl7YXdhaXQgdGhpcy5vcHRpb25zLm9uU2V0dGxlZD8uKHZvaWQgMCxvLGUsdGhpcy5zdGF0ZS5jb250ZXh0LG4pfWNhdGNoKHMpe1Byb21pc2UucmVqZWN0KHMpfXRocm93IHRoaXMuI2Eoe3R5cGU6ImVycm9yIixlcnJvcjpvfSksb31maW5hbGx5e3RoaXMuI24ucnVuTmV4dCh0aGlzKX19I2EoZSl7Y29uc3QgdD1uPT57c3dpdGNoKGUudHlwZSl7Y2FzZSJmYWlsZWQiOnJldHVybnsuLi5uLGZhaWx1cmVDb3VudDplLmZhaWx1cmVDb3VudCxmYWlsdXJlUmVhc29uOmUuZXJyb3J9O2Nhc2UicGF1c2UiOnJldHVybnsuLi5uLGlzUGF1c2VkOiEwfTtjYXNlImNvbnRpbnVlIjpyZXR1cm57Li4ubixpc1BhdXNlZDohMX07Y2FzZSJwZW5kaW5nIjpyZXR1cm57Li4ubixjb250ZXh0OmUuY29udGV4dCxkYXRhOnZvaWQgMCxmYWlsdXJlQ291bnQ6MCxmYWlsdXJlUmVhc29uOm51bGwsZXJyb3I6bnVsbCxpc1BhdXNlZDplLmlzUGF1c2VkLHN0YXR1czoicGVuZGluZyIsdmFyaWFibGVzOmUudmFyaWFibGVzLHN1Ym1pdHRlZEF0OkRhdGUubm93KCl9O2Nhc2Uic3VjY2VzcyI6cmV0dXJuey4uLm4sZGF0YTplLmRhdGEsZmFpbHVyZUNvdW50OjAsZmFpbHVyZVJlYXNvbjpudWxsLGVycm9yOm51bGwsc3RhdHVzOiJzdWNjZXNzIixpc1BhdXNlZDohMX07Y2FzZSJlcnJvciI6cmV0dXJuey4uLm4sZGF0YTp2b2lkIDAsZXJyb3I6ZS5lcnJvcixmYWlsdXJlQ291bnQ6bi5mYWlsdXJlQ291bnQrMSxmYWlsdXJlUmVhc29uOmUuZXJyb3IsaXNQYXVzZWQ6ITEsc3RhdHVzOiJlcnJvciJ9fX07dGhpcy5zdGF0ZT10KHRoaXMuc3RhdGUpLEZuLmJhdGNoKCgpPT57dGhpcy4jdC5mb3JFYWNoKG49PntuLm9uTXV0YXRpb25VcGRhdGUoZSl9KSx0aGlzLiNuLm5vdGlmeSh7bXV0YXRpb246dGhpcyx0eXBlOiJ1cGRhdGVkIixhY3Rpb246ZX0pfSl9fTtmdW5jdGlvbiBaSCgpe3JldHVybntjb250ZXh0OnZvaWQgMCxkYXRhOnZvaWQgMCxlcnJvcjpudWxsLGZhaWx1cmVDb3VudDowLGZhaWx1cmVSZWFzb246bnVsbCxpc1BhdXNlZDohMSxzdGF0dXM6ImlkbGUiLHZhcmlhYmxlczp2b2lkIDAsc3VibWl0dGVkQXQ6MH19dmFyIFFIPWNsYXNzIGV4dGVuZHMgRXl7Y29uc3RydWN0b3IoZT17fSl7c3VwZXIoKSx0aGlzLmNvbmZpZz1lLHRoaXMuI2U9bmV3IFNldCx0aGlzLiN0PW5ldyBNYXAsdGhpcy4jbj0wfSNlOyN0OyNuO2J1aWxkKGUsdCxuKXtjb25zdCByPW5ldyBYSCh7Y2xpZW50OmUsbXV0YXRpb25DYWNoZTp0aGlzLG11dGF0aW9uSWQ6Kyt0aGlzLiNuLG9wdGlvbnM6ZS5kZWZhdWx0TXV0YXRpb25PcHRpb25zKHQpLHN0YXRlOm59KTtyZXR1cm4gdGhpcy5hZGQocikscn1hZGQoZSl7dGhpcy4jZS5hZGQoZSk7Y29uc3QgdD1ucChlKTtpZih0eXBlb2YgdD09InN0cmluZyIpe2NvbnN0IG49dGhpcy4jdC5nZXQodCk7bj9uLnB1c2goZSk6dGhpcy4jdC5zZXQodCxbZV0pfXRoaXMubm90aWZ5KHt0eXBlOiJhZGRlZCIsbXV0YXRpb246ZX0pfXJlbW92ZShlKXtpZih0aGlzLiNlLmRlbGV0ZShlKSl7Y29uc3QgdD1ucChlKTtpZih0eXBlb2YgdD09InN0cmluZyIpe2NvbnN0IG49dGhpcy4jdC5nZXQodCk7aWYobilpZihuLmxlbmd0aD4xKXtjb25zdCByPW4uaW5kZXhPZihlKTtyIT09LTEmJm4uc3BsaWNlKHIsMSl9ZWxzZSBuWzBdPT09ZSYmdGhpcy4jdC5kZWxldGUodCl9fXRoaXMubm90aWZ5KHt0eXBlOiJyZW1vdmVkIixtdXRhdGlvbjplfSl9Y2FuUnVuKGUpe2NvbnN0IHQ9bnAoZSk7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXtjb25zdCByPXRoaXMuI3QuZ2V0KHQpPy5maW5kKGk9Pmkuc3RhdGUuc3RhdHVzPT09InBlbmRpbmciKTtyZXR1cm4hcnx8cj09PWV9ZWxzZSByZXR1cm4hMH1ydW5OZXh0KGUpe2NvbnN0IHQ9bnAoZSk7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90aGlzLiN0LmdldCh0KT8uZmluZChyPT5yIT09ZSYmci5zdGF0ZS5pc1BhdXNlZCk/LmNvbnRpbnVlKCk/P1Byb21pc2UucmVzb2x2ZSgpOlByb21pc2UucmVzb2x2ZSgpfWNsZWFyKCl7Rm4uYmF0Y2goKCk9Pnt0aGlzLiNlLmZvckVhY2goZT0+e3RoaXMubm90aWZ5KHt0eXBlOiJyZW1vdmVkIixtdXRhdGlvbjplfSl9KSx0aGlzLiNlLmNsZWFyKCksdGhpcy4jdC5jbGVhcigpfSl9Z2V0QWxsKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy4jZSl9ZmluZChlKXtjb25zdCB0PXtleGFjdDohMCwuLi5lfTtyZXR1cm4gdGhpcy5nZXRBbGwoKS5maW5kKG49Pl9NKHQsbikpfWZpbmRBbGwoZT17fSl7cmV0dXJuIHRoaXMuZ2V0QWxsKCkuZmlsdGVyKHQ9Pl9NKGUsdCkpfW5vdGlmeShlKXtGbi5iYXRjaCgoKT0+e3RoaXMubGlzdGVuZXJzLmZvckVhY2godD0+e3QoZSl9KX0pfXJlc3VtZVBhdXNlZE11dGF0aW9ucygpe2NvbnN0IGU9dGhpcy5nZXRBbGwoKS5maWx0ZXIodD0+dC5zdGF0ZS5pc1BhdXNlZCk7cmV0dXJuIEZuLmJhdGNoKCgpPT5Qcm9taXNlLmFsbChlLm1hcCh0PT50LmNvbnRpbnVlKCkuY2F0Y2gobmkpKSkpfX07ZnVuY3Rpb24gbnAoZSl7cmV0dXJuIGUub3B0aW9ucy5zY29wZT8uaWR9dmFyIEpIPWNsYXNzIGV4dGVuZHMgRXl7Y29uc3RydWN0b3IoZT17fSl7c3VwZXIoKSx0aGlzLmNvbmZpZz1lLHRoaXMuI2U9bmV3IE1hcH0jZTtidWlsZChlLHQsbil7Y29uc3Qgcj10LnF1ZXJ5S2V5LGk9dC5xdWVyeUhhc2g/P25PKHIsdCk7bGV0IG89dGhpcy5nZXQoaSk7cmV0dXJuIG98fChvPW5ldyBXSCh7Y2xpZW50OmUscXVlcnlLZXk6cixxdWVyeUhhc2g6aSxvcHRpb25zOmUuZGVmYXVsdFF1ZXJ5T3B0aW9ucyh0KSxzdGF0ZTpuLGRlZmF1bHRPcHRpb25zOmUuZ2V0UXVlcnlEZWZhdWx0cyhyKX0pLHRoaXMuYWRkKG8pKSxvfWFkZChlKXt0aGlzLiNlLmhhcyhlLnF1ZXJ5SGFzaCl8fCh0aGlzLiNlLnNldChlLnF1ZXJ5SGFzaCxlKSx0aGlzLm5vdGlmeSh7dHlwZToiYWRkZWQiLHF1ZXJ5OmV9KSl9cmVtb3ZlKGUpe2NvbnN0IHQ9dGhpcy4jZS5nZXQoZS5xdWVyeUhhc2gpO3QmJihlLmRlc3Ryb3koKSx0PT09ZSYmdGhpcy4jZS5kZWxldGUoZS5xdWVyeUhhc2gpLHRoaXMubm90aWZ5KHt0eXBlOiJyZW1vdmVkIixxdWVyeTplfSkpfWNsZWFyKCl7Rm4uYmF0Y2goKCk9Pnt0aGlzLmdldEFsbCgpLmZvckVhY2goZT0+e3RoaXMucmVtb3ZlKGUpfSl9KX1nZXQoZSl7cmV0dXJuIHRoaXMuI2UuZ2V0KGUpfWdldEFsbCgpe3JldHVyblsuLi50aGlzLiNlLnZhbHVlcygpXX1maW5kKGUpe2NvbnN0IHQ9e2V4YWN0OiEwLC4uLmV9O3JldHVybiB0aGlzLmdldEFsbCgpLmZpbmQobj0+QU0odCxuKSl9ZmluZEFsbChlPXt9KXtjb25zdCB0PXRoaXMuZ2V0QWxsKCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD4wP3QuZmlsdGVyKG49PkFNKGUsbikpOnR9bm90aWZ5KGUpe0ZuLmJhdGNoKCgpPT57dGhpcy5saXN0ZW5lcnMuZm9yRWFjaCh0PT57dChlKX0pfSl9b25Gb2N1cygpe0ZuLmJhdGNoKCgpPT57dGhpcy5nZXRBbGwoKS5mb3JFYWNoKGU9PntlLm9uRm9jdXMoKX0pfSl9b25PbmxpbmUoKXtGbi5iYXRjaCgoKT0+e3RoaXMuZ2V0QWxsKCkuZm9yRWFjaChlPT57ZS5vbk9ubGluZSgpfSl9KX19LGU3PWNsYXNzeyNlOyN0OyNuOyNpOyNhOyNyOyNsOyNvO2NvbnN0cnVjdG9yKGU9e30pe3RoaXMuI2U9ZS5xdWVyeUNhY2hlfHxuZXcgSkgsdGhpcy4jdD1lLm11dGF0aW9uQ2FjaGV8fG5ldyBRSCx0aGlzLiNuPWUuZGVmYXVsdE9wdGlvbnN8fHt9LHRoaXMuI2k9bmV3IE1hcCx0aGlzLiNhPW5ldyBNYXAsdGhpcy4jcj0wfW1vdW50KCl7dGhpcy4jcisrLHRoaXMuI3I9PT0xJiYodGhpcy4jbD1nNC5zdWJzY3JpYmUoYXN5bmMgZT0+e2UmJihhd2FpdCB0aGlzLnJlc3VtZVBhdXNlZE11dGF0aW9ucygpLHRoaXMuI2Uub25Gb2N1cygpKX0pLHRoaXMuI289UXAuc3Vic2NyaWJlKGFzeW5jIGU9PntlJiYoYXdhaXQgdGhpcy5yZXN1bWVQYXVzZWRNdXRhdGlvbnMoKSx0aGlzLiNlLm9uT25saW5lKCkpfSkpfXVubW91bnQoKXt0aGlzLiNyLS0sdGhpcy4jcj09PTAmJih0aGlzLiNsPy4oKSx0aGlzLiNsPXZvaWQgMCx0aGlzLiNvPy4oKSx0aGlzLiNvPXZvaWQgMCl9aXNGZXRjaGluZyhlKXtyZXR1cm4gdGhpcy4jZS5maW5kQWxsKHsuLi5lLGZldGNoU3RhdHVzOiJmZXRjaGluZyJ9KS5sZW5ndGh9aXNNdXRhdGluZyhlKXtyZXR1cm4gdGhpcy4jdC5maW5kQWxsKHsuLi5lLHN0YXR1czoicGVuZGluZyJ9KS5sZW5ndGh9Z2V0UXVlcnlEYXRhKGUpe2NvbnN0IHQ9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHtxdWVyeUtleTplfSk7cmV0dXJuIHRoaXMuI2UuZ2V0KHQucXVlcnlIYXNoKT8uc3RhdGUuZGF0YX1lbnN1cmVRdWVyeURhdGEoZSl7Y29uc3QgdD10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoZSksbj10aGlzLiNlLmJ1aWxkKHRoaXMsdCkscj1uLnN0YXRlLmRhdGE7cmV0dXJuIHI9PT12b2lkIDA/dGhpcy5mZXRjaFF1ZXJ5KGUpOihlLnJldmFsaWRhdGVJZlN0YWxlJiZuLmlzU3RhbGVCeVRpbWUoTFModC5zdGFsZVRpbWUsbikpJiZ0aGlzLnByZWZldGNoUXVlcnkodCksUHJvbWlzZS5yZXNvbHZlKHIpKX1nZXRRdWVyaWVzRGF0YShlKXtyZXR1cm4gdGhpcy4jZS5maW5kQWxsKGUpLm1hcCgoe3F1ZXJ5S2V5OnQsc3RhdGU6bn0pPT57Y29uc3Qgcj1uLmRhdGE7cmV0dXJuW3Qscl19KX1zZXRRdWVyeURhdGEoZSx0LG4pe2NvbnN0IHI9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHtxdWVyeUtleTplfSksbz10aGlzLiNlLmdldChyLnF1ZXJ5SGFzaCk/LnN0YXRlLmRhdGEscz1NSCh0LG8pO2lmKHMhPT12b2lkIDApcmV0dXJuIHRoaXMuI2UuYnVpbGQodGhpcyxyKS5zZXREYXRhKHMsey4uLm4sbWFudWFsOiEwfSl9c2V0UXVlcmllc0RhdGEoZSx0LG4pe3JldHVybiBGbi5iYXRjaCgoKT0+dGhpcy4jZS5maW5kQWxsKGUpLm1hcCgoe3F1ZXJ5S2V5OnJ9KT0+W3IsdGhpcy5zZXRRdWVyeURhdGEocix0LG4pXSkpfWdldFF1ZXJ5U3RhdGUoZSl7Y29uc3QgdD10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoe3F1ZXJ5S2V5OmV9KTtyZXR1cm4gdGhpcy4jZS5nZXQodC5xdWVyeUhhc2gpPy5zdGF0ZX1yZW1vdmVRdWVyaWVzKGUpe2NvbnN0IHQ9dGhpcy4jZTtGbi5iYXRjaCgoKT0+e3QuZmluZEFsbChlKS5mb3JFYWNoKG49Pnt0LnJlbW92ZShuKX0pfSl9cmVzZXRRdWVyaWVzKGUsdCl7Y29uc3Qgbj10aGlzLiNlO3JldHVybiBGbi5iYXRjaCgoKT0+KG4uZmluZEFsbChlKS5mb3JFYWNoKHI9PntyLnJlc2V0KCl9KSx0aGlzLnJlZmV0Y2hRdWVyaWVzKHt0eXBlOiJhY3RpdmUiLC4uLmV9LHQpKSl9Y2FuY2VsUXVlcmllcyhlLHQ9e30pe2NvbnN0IG49e3JldmVydDohMCwuLi50fSxyPUZuLmJhdGNoKCgpPT50aGlzLiNlLmZpbmRBbGwoZSkubWFwKGk9PmkuY2FuY2VsKG4pKSk7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4obmkpLmNhdGNoKG5pKX1pbnZhbGlkYXRlUXVlcmllcyhlLHQ9e30pe3JldHVybiBGbi5iYXRjaCgoKT0+KHRoaXMuI2UuZmluZEFsbChlKS5mb3JFYWNoKG49PntuLmludmFsaWRhdGUoKX0pLGU/LnJlZmV0Y2hUeXBlPT09Im5vbmUiP1Byb21pc2UucmVzb2x2ZSgpOnRoaXMucmVmZXRjaFF1ZXJpZXMoey4uLmUsdHlwZTplPy5yZWZldGNoVHlwZT8/ZT8udHlwZT8/ImFjdGl2ZSJ9LHQpKSl9cmVmZXRjaFF1ZXJpZXMoZSx0PXt9KXtjb25zdCBuPXsuLi50LGNhbmNlbFJlZmV0Y2g6dC5jYW5jZWxSZWZldGNoPz8hMH0scj1Gbi5iYXRjaCgoKT0+dGhpcy4jZS5maW5kQWxsKGUpLmZpbHRlcihpPT4haS5pc0Rpc2FibGVkKCkmJiFpLmlzU3RhdGljKCkpLm1hcChpPT57bGV0IG89aS5mZXRjaCh2b2lkIDAsbik7cmV0dXJuIG4udGhyb3dPbkVycm9yfHwobz1vLmNhdGNoKG5pKSksaS5zdGF0ZS5mZXRjaFN0YXR1cz09PSJwYXVzZWQiP1Byb21pc2UucmVzb2x2ZSgpOm99KSk7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4obmkpfWZldGNoUXVlcnkoZSl7Y29uc3QgdD10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoZSk7dC5yZXRyeT09PXZvaWQgMCYmKHQucmV0cnk9ITEpO2NvbnN0IG49dGhpcy4jZS5idWlsZCh0aGlzLHQpO3JldHVybiBuLmlzU3RhbGVCeVRpbWUoTFModC5zdGFsZVRpbWUsbikpP24uZmV0Y2godCk6UHJvbWlzZS5yZXNvbHZlKG4uc3RhdGUuZGF0YSl9cHJlZmV0Y2hRdWVyeShlKXtyZXR1cm4gdGhpcy5mZXRjaFF1ZXJ5KGUpLnRoZW4obmkpLmNhdGNoKG5pKX1mZXRjaEluZmluaXRlUXVlcnkoZSl7cmV0dXJuIGUuX3R5cGU9ImluZmluaXRlIix0aGlzLmZldGNoUXVlcnkoZSl9cHJlZmV0Y2hJbmZpbml0ZVF1ZXJ5KGUpe3JldHVybiB0aGlzLmZldGNoSW5maW5pdGVRdWVyeShlKS50aGVuKG5pKS5jYXRjaChuaSl9ZW5zdXJlSW5maW5pdGVRdWVyeURhdGEoZSl7cmV0dXJuIGUuX3R5cGU9ImluZmluaXRlIix0aGlzLmVuc3VyZVF1ZXJ5RGF0YShlKX1yZXN1bWVQYXVzZWRNdXRhdGlvbnMoKXtyZXR1cm4gUXAuaXNPbmxpbmUoKT90aGlzLiN0LnJlc3VtZVBhdXNlZE11dGF0aW9ucygpOlByb21pc2UucmVzb2x2ZSgpfWdldFF1ZXJ5Q2FjaGUoKXtyZXR1cm4gdGhpcy4jZX1nZXRNdXRhdGlvbkNhY2hlKCl7cmV0dXJuIHRoaXMuI3R9Z2V0RGVmYXVsdE9wdGlvbnMoKXtyZXR1cm4gdGhpcy4jbn1zZXREZWZhdWx0T3B0aW9ucyhlKXt0aGlzLiNuPWV9c2V0UXVlcnlEZWZhdWx0cyhlLHQpe3RoaXMuI2kuc2V0KEVmKGUpLHtxdWVyeUtleTplLGRlZmF1bHRPcHRpb25zOnR9KX1nZXRRdWVyeURlZmF1bHRzKGUpe2NvbnN0IHQ9Wy4uLnRoaXMuI2kudmFsdWVzKCldLG49e307cmV0dXJuIHQuZm9yRWFjaChyPT57Q2YoZSxyLnF1ZXJ5S2V5KSYmT2JqZWN0LmFzc2lnbihuLHIuZGVmYXVsdE9wdGlvbnMpfSksbn1zZXRNdXRhdGlvbkRlZmF1bHRzKGUsdCl7dGhpcy4jYS5zZXQoRWYoZSkse211dGF0aW9uS2V5OmUsZGVmYXVsdE9wdGlvbnM6dH0pfWdldE11dGF0aW9uRGVmYXVsdHMoZSl7Y29uc3QgdD1bLi4udGhpcy4jYS52YWx1ZXMoKV0sbj17fTtyZXR1cm4gdC5mb3JFYWNoKHI9PntDZihlLHIubXV0YXRpb25LZXkpJiZPYmplY3QuYXNzaWduKG4sci5kZWZhdWx0T3B0aW9ucyl9KSxufWRlZmF1bHRRdWVyeU9wdGlvbnMoZSl7aWYoZS5fZGVmYXVsdGVkKXJldHVybiBlO2NvbnN0IHQ9ey4uLnRoaXMuI24ucXVlcmllcywuLi50aGlzLmdldFF1ZXJ5RGVmYXVsdHMoZS5xdWVyeUtleSksLi4uZSxfZGVmYXVsdGVkOiEwfTtyZXR1cm4gdC5xdWVyeUhhc2h8fCh0LnF1ZXJ5SGFzaD1uTyh0LnF1ZXJ5S2V5LHQpKSx0LnJlZmV0Y2hPblJlY29ubmVjdD09PXZvaWQgMCYmKHQucmVmZXRjaE9uUmVjb25uZWN0PXQubmV0d29ya01vZGUhPT0iYWx3YXlzIiksdC50aHJvd09uRXJyb3I9PT12b2lkIDAmJih0LnRocm93T25FcnJvcj0hIXQuc3VzcGVuc2UpLCF0Lm5ldHdvcmtNb2RlJiZ0LnBlcnNpc3RlciYmKHQubmV0d29ya01vZGU9Im9mZmxpbmVGaXJzdCIpLHQucXVlcnlGbj09PXJPJiYodC5lbmFibGVkPSExKSx0fWRlZmF1bHRNdXRhdGlvbk9wdGlvbnMoZSl7cmV0dXJuIGU/Ll9kZWZhdWx0ZWQ/ZTp7Li4udGhpcy4jbi5tdXRhdGlvbnMsLi4uZT8ubXV0YXRpb25LZXkmJnRoaXMuZ2V0TXV0YXRpb25EZWZhdWx0cyhlLm11dGF0aW9uS2V5KSwuLi5lLF9kZWZhdWx0ZWQ6ITB9fWNsZWFyKCl7dGhpcy4jZS5jbGVhcigpLHRoaXMuI3QuY2xlYXIoKX19LEM9VHkoKTtjb25zdCBGPU90KEMpLHdkPXlIKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OkZ9LFtDXSk7dmFyIHQ3PUMuY3JlYXRlQ29udGV4dCh2b2lkIDApLG43PSh7Y2xpZW50OmUsY2hpbGRyZW46dH0pPT4oQy51c2VFZmZlY3QoKCk9PihlLm1vdW50KCksKCk9PntlLnVubW91bnQoKX0pLFtlXSksQS5qc3godDcuUHJvdmlkZXIse3ZhbHVlOmUsY2hpbGRyZW46dH0pKSxNdT12NCgpO2Z1bmN0aW9uIHplKGUsdCx7Y2hlY2tGb3JEZWZhdWx0UHJldmVudGVkOm49ITB9PXt9KXtyZXR1cm4gZnVuY3Rpb24oaSl7aWYoZT8uKGkpLG49PT0hMXx8IWl8fCFpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHQ/LihpKX19ZnVuY3Rpb24gUE0oZSx0KXtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gZSh0KTtlIT1udWxsJiYoZS5jdXJyZW50PXQpfWZ1bmN0aW9uIHI3KC4uLmUpe3JldHVybiB0PT57bGV0IG49ITE7Y29uc3Qgcj1lLm1hcChpPT57Y29uc3Qgbz1QTShpLHQpO3JldHVybiFuJiZ0eXBlb2Ygbz09ImZ1bmN0aW9uIiYmKG49ITApLG99KTtpZihuKXJldHVybigpPT57Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IG89cltpXTt0eXBlb2Ygbz09ImZ1bmN0aW9uIj9vKCk6UE0oZVtpXSxudWxsKX19fX1mdW5jdGlvbiBJdCguLi5lKXtyZXR1cm4gQy51c2VDYWxsYmFjayhyNyguLi5lKSxlKX1mdW5jdGlvbiBtbyhlLHQ9W10pe2xldCBuPVtdO2Z1bmN0aW9uIHIobyxzKXtjb25zdCB1PUMuY3JlYXRlQ29udGV4dChzKTt1LmRpc3BsYXlOYW1lPW8rIkNvbnRleHQiO2NvbnN0IGY9bi5sZW5ndGg7bj1bLi4ubixzXTtjb25zdCBkPW09Pntjb25zdHtzY29wZTp5LGNoaWxkcmVuOngsLi4ud309bSxiPXk/LltlXT8uW2ZdfHx1LGc9Qy51c2VNZW1vKCgpPT53LE9iamVjdC52YWx1ZXModykpO3JldHVybiBBLmpzeChiLlByb3ZpZGVyLHt2YWx1ZTpnLGNoaWxkcmVuOnh9KX07ZC5kaXNwbGF5TmFtZT1vKyJQcm92aWRlciI7ZnVuY3Rpb24gcChtLHkseD17fSl7Y29uc3R7b3B0aW9uYWw6dz0hMX09eCxiPXk/LltlXT8uW2ZdfHx1LGc9Qy51c2VDb250ZXh0KGIpO2lmKGcpcmV0dXJuIGc7aWYocyE9PXZvaWQgMClyZXR1cm4gcztpZighdyl0aHJvdyBuZXcgRXJyb3IoYFxgJHttfVxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXGAke299XGBgKX1yZXR1cm5bZCxwXX1jb25zdCBpPSgpPT57Y29uc3Qgbz1uLm1hcChzPT5DLmNyZWF0ZUNvbnRleHQocykpO3JldHVybiBmdW5jdGlvbih1KXtjb25zdCBmPXU/LltlXXx8bztyZXR1cm4gQy51c2VNZW1vKCgpPT4oe1tgX19zY29wZSR7ZX1gXTp7Li4udSxbZV06Zn19KSxbdSxmXSl9fTtyZXR1cm4gaS5zY29wZU5hbWU9ZSxbcixpNyhpLC4uLnQpXX1mdW5jdGlvbiBpNyguLi5lKXtjb25zdCB0PWVbMF07aWYoZS5sZW5ndGg9PT0xKXJldHVybiB0O2NvbnN0IG49KCk9Pntjb25zdCByPWUubWFwKGk9Pih7dXNlU2NvcGU6aSgpLHNjb3BlTmFtZTppLnNjb3BlTmFtZX0pKTtyZXR1cm4gZnVuY3Rpb24obyl7Y29uc3Qgcz1yLnJlZHVjZSgodSx7dXNlU2NvcGU6ZixzY29wZU5hbWU6ZH0pPT57Y29uc3QgbT1mKG8pW2BfX3Njb3BlJHtkfWBdO3JldHVybnsuLi51LC4uLm19fSx7fSk7cmV0dXJuIEMudXNlTWVtbygoKT0+KHtbYF9fc2NvcGUke3Quc2NvcGVOYW1lfWBdOnN9KSxbc10pfX07cmV0dXJuIG4uc2NvcGVOYW1lPXQuc2NvcGVOYW1lLG59ZnVuY3Rpb24gWWwoZSl7Y29uc3QgdD1DLmZvcndhcmRSZWYoKG4scik9PntsZXR7Y2hpbGRyZW46aSwuLi5vfT1uLHM9bnVsbCx1PSExO2NvbnN0IGY9W107TU0oaSkmJnR5cGVvZiBycD09ImZ1bmN0aW9uIiYmKGk9cnAoaS5fcGF5bG9hZCkpLEMuQ2hpbGRyZW4uZm9yRWFjaChpLHk9PntpZihjNyh5KSl7dT0hMDtjb25zdCB4PXk7bGV0IHc9ImNoaWxkImluIHgucHJvcHM/eC5wcm9wcy5jaGlsZDp4LnByb3BzLmNoaWxkcmVuO01NKHcpJiZ0eXBlb2YgcnA9PSJmdW5jdGlvbiImJih3PXJwKHcuX3BheWxvYWQpKSxzPXM3KHgsdyksZi5wdXNoKHM/LnByb3BzPy5jaGlsZHJlbil9ZWxzZSBmLnB1c2goeSl9KSxzP3M9Qy5jbG9uZUVsZW1lbnQocyx2b2lkIDAsZik6IXUmJkMuQ2hpbGRyZW4uY291bnQoaSk9PT0xJiZDLmlzVmFsaWRFbGVtZW50KGkpJiYocz1pKTtjb25zdCBkPXM/dTcocyk6dm9pZCAwLHA9SXQocixkKTtpZighcyl7aWYoaXx8aT09PTApdGhyb3cgbmV3IEVycm9yKHU/cDcoZSk6aDcoZSkpO3JldHVybiBpfWNvbnN0IG09bDcobyxzLnByb3BzPz97fSk7cmV0dXJuIHMudHlwZSE9PUMuRnJhZ21lbnQmJihtLnJlZj1yP3A6ZCksQy5jbG9uZUVsZW1lbnQocyxtKX0pO3JldHVybiB0LmRpc3BsYXlOYW1lPWAke2V9LlNsb3RgLHR9dmFyIGE3PVlsKCJTbG90IiksTzQ9U3ltYm9sLmZvcigicmFkaXguc2xvdHRhYmxlIik7ZnVuY3Rpb24gbzcoZSl7Y29uc3QgdD1uPT4iY2hpbGQiaW4gbj9uLmNoaWxkcmVuKG4uY2hpbGQpOm4uY2hpbGRyZW47cmV0dXJuIHQuZGlzcGxheU5hbWU9YCR7ZX0uU2xvdHRhYmxlYCx0Ll9fcmFkaXhJZD1PNCx0fXZhciBzNz0oZSx0KT0+e2lmKCJjaGlsZCJpbiBlLnByb3BzKXtjb25zdCBuPWUucHJvcHMuY2hpbGQ7cmV0dXJuIEMuaXNWYWxpZEVsZW1lbnQobik/Qy5jbG9uZUVsZW1lbnQobix2b2lkIDAsZS5wcm9wcy5jaGlsZHJlbihuLnByb3BzLmNoaWxkcmVuKSk6bnVsbH1yZXR1cm4gQy5pc1ZhbGlkRWxlbWVudCh0KT90Om51bGx9O2Z1bmN0aW9uIGw3KGUsdCl7Y29uc3Qgbj17Li4udH07Zm9yKGNvbnN0IHIgaW4gdCl7Y29uc3QgaT1lW3JdLG89dFtyXTsvXm9uW0EtWl0vLnRlc3Qocik/aSYmbz9uW3JdPSguLi51KT0+e2NvbnN0IGY9byguLi51KTtyZXR1cm4gaSguLi51KSxmfTppJiYobltyXT1pKTpyPT09InN0eWxlIj9uW3JdPXsuLi5pLC4uLm99OnI9PT0iY2xhc3NOYW1lIiYmKG5bcl09W2ksb10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSl9cmV0dXJuey4uLmUsLi4ubn19ZnVuY3Rpb24gdTcoZSl7bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLnByb3BzLCJyZWYiKT8uZ2V0LG49dCYmImlzUmVhY3RXYXJuaW5nImluIHQmJnQuaXNSZWFjdFdhcm5pbmc7cmV0dXJuIG4/ZS5yZWY6KHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCJyZWYiKT8uZ2V0LG49dCYmImlzUmVhY3RXYXJuaW5nImluIHQmJnQuaXNSZWFjdFdhcm5pbmcsbj9lLnByb3BzLnJlZjplLnByb3BzLnJlZnx8ZS5yZWYpfWZ1bmN0aW9uIGM3KGUpe3JldHVybiBDLmlzVmFsaWRFbGVtZW50KGUpJiZ0eXBlb2YgZS50eXBlPT0iZnVuY3Rpb24iJiYiX19yYWRpeElkImluIGUudHlwZSYmZS50eXBlLl9fcmFkaXhJZD09PU80fXZhciBmNz1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iik7ZnVuY3Rpb24gTU0oZSl7cmV0dXJuIGUhPW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0IiYmIiQkdHlwZW9mImluIGUmJmUuJCR0eXBlb2Y9PT1mNyYmIl9wYXlsb2FkImluIGUmJmQ3KGUuX3BheWxvYWQpfWZ1bmN0aW9uIGQ3KGUpe3JldHVybiB0eXBlb2YgZT09Im9iamVjdCImJmUhPT1udWxsJiYidGhlbiJpbiBlfXZhciBoNz1lPT5gJHtlfSBmYWlsZWQgdG8gc2xvdCBvbnRvIGl0cyBjaGlsZHJlbi4gRXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZCBvciBcYFNsb3R0YWJsZVxgLmAscDc9ZT0+YCR7ZX0gZmFpbGVkIHRvIHNsb3Qgb250byBpdHMgXGBTbG90dGFibGVcYC4gRXhwZWN0ZWQgXGBTbG90dGFibGVcYCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuYCxycD13ZFsiIHVzZSAiLnRyaW0oKS50b1N0cmluZygpXTtmdW5jdGlvbiBpTyhlKXtjb25zdCB0PWUrIkNvbGxlY3Rpb25Qcm92aWRlciIsW24scl09bW8odCksW2ksb109bih0LHtjb2xsZWN0aW9uUmVmOntjdXJyZW50Om51bGx9LGl0ZW1NYXA6bmV3IE1hcH0pLHM9Yj0+e2NvbnN0e3Njb3BlOmcsY2hpbGRyZW46X309YixPPUMudXNlUmVmKG51bGwpLEU9Qy51c2VSZWYobmV3IE1hcCkuY3VycmVudDtyZXR1cm4gQS5qc3goaSx7c2NvcGU6ZyxpdGVtTWFwOkUsY29sbGVjdGlvblJlZjpPLGNoaWxkcmVuOl99KX07cy5kaXNwbGF5TmFtZT10O2NvbnN0IHU9ZSsiQ29sbGVjdGlvblNsb3QiLGY9WWwodSksZD1DLmZvcndhcmRSZWYoKGIsZyk9Pntjb25zdHtzY29wZTpfLGNoaWxkcmVuOk99PWIsRT1vKHUsXyksaj1JdChnLEUuY29sbGVjdGlvblJlZik7cmV0dXJuIEEuanN4KGYse3JlZjpqLGNoaWxkcmVuOk99KX0pO2QuZGlzcGxheU5hbWU9dTtjb25zdCBwPWUrIkNvbGxlY3Rpb25JdGVtU2xvdCIsbT0iZGF0YS1yYWRpeC1jb2xsZWN0aW9uLWl0ZW0iLHk9WWwocCkseD1DLmZvcndhcmRSZWYoKGIsZyk9Pntjb25zdHtzY29wZTpfLGNoaWxkcmVuOk8sLi4uRX09YixqPUMudXNlUmVmKG51bGwpLFQ9SXQoZyxqKSxQPW8ocCxfKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9PihQLml0ZW1NYXAuc2V0KGose3JlZjpqLC4uLkV9KSwoKT0+e1AuaXRlbU1hcC5kZWxldGUoail9KSksQS5qc3goeSx7W21dOiIiLHJlZjpULGNoaWxkcmVuOk99KX0pO3guZGlzcGxheU5hbWU9cDtmdW5jdGlvbiB3KGIpe2NvbnN0IGc9byhlKyJDb2xsZWN0aW9uQ29uc3VtZXIiLGIpO3JldHVybiBDLnVzZUNhbGxiYWNrKCgpPT57Y29uc3QgTz1nLmNvbGxlY3Rpb25SZWYuY3VycmVudDtpZighTylyZXR1cm5bXTtjb25zdCBFPUFycmF5LmZyb20oTy5xdWVyeVNlbGVjdG9yQWxsKGBbJHttfV1gKSk7cmV0dXJuIEFycmF5LmZyb20oZy5pdGVtTWFwLnZhbHVlcygpKS5zb3J0KChQLE4pPT5FLmluZGV4T2YoUC5yZWYuY3VycmVudCktRS5pbmRleE9mKE4ucmVmLmN1cnJlbnQpKX0sW2cuY29sbGVjdGlvblJlZixnLml0ZW1NYXBdKX1yZXR1cm5be1Byb3ZpZGVyOnMsU2xvdDpkLEl0ZW1TbG90Onh9LHcscl19dmFyIG03PVsiYSIsImJ1dHRvbiIsImRpdiIsImZvcm0iLCJoMiIsImgzIiwiaW1nIiwiaW5wdXQiLCJsYWJlbCIsImxpIiwibmF2Iiwib2wiLCJwIiwic2VsZWN0Iiwic3BhbiIsInN2ZyIsInVsIl0sUWU9bTcucmVkdWNlKChlLHQpPT57Y29uc3Qgbj1ZbChgUHJpbWl0aXZlLiR7dH1gKSxyPUMuZm9yd2FyZFJlZigoaSxvKT0+e2NvbnN0e2FzQ2hpbGQ6cywuLi51fT1pLGY9cz9uOnQ7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUiJiYod2luZG93W1N5bWJvbC5mb3IoInJhZGl4LXVpIildPSEwKSxBLmpzeChmLHsuLi51LHJlZjpvfSl9KTtyZXR1cm4gci5kaXNwbGF5TmFtZT1gUHJpbWl0aXZlLiR7dH1gLHsuLi5lLFt0XTpyfX0se30pO2Z1bmN0aW9uIFQ0KGUsdCl7ZSYmTXUuZmx1c2hTeW5jKCgpPT5lLmRpc3BhdGNoRXZlbnQodCkpfWZ1bmN0aW9uIGFyKGUpe2NvbnN0IHQ9Qy51c2VSZWYoZSk7cmV0dXJuIEMudXNlRWZmZWN0KCgpPT57dC5jdXJyZW50PWV9KSxDLnVzZU1lbW8oKCk9PigoLi4ubik9PnQuY3VycmVudD8uKC4uLm4pKSxbXSl9dmFyIHk3PSJEaXNtaXNzYWJsZUxheWVyIixCUz0iZGlzbWlzc2FibGVMYXllci51cGRhdGUiLHY3PSJkaXNtaXNzYWJsZUxheWVyLnBvaW50ZXJEb3duT3V0c2lkZSIsZzc9ImRpc21pc3NhYmxlTGF5ZXIuZm9jdXNPdXRzaWRlIixSTSxhTz1DLmNyZWF0ZUNvbnRleHQoe2xheWVyczpuZXcgU2V0LGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOm5ldyBTZXQsYnJhbmNoZXM6bmV3IFNldCxkaXNtaXNzYWJsZVN1cmZhY2VzOm5ldyBTZXR9KSxTZD1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6bj0hMSxkZWZlclBvaW50ZXJEb3duT3V0c2lkZTpyPSExLG9uRXNjYXBlS2V5RG93bjppLG9uUG9pbnRlckRvd25PdXRzaWRlOm8sb25Gb2N1c091dHNpZGU6cyxvbkludGVyYWN0T3V0c2lkZTp1LG9uRGlzbWlzczpmLC4uLmR9PWUscD1DLnVzZUNvbnRleHQoYU8pLFttLHldPUMudXNlU3RhdGUobnVsbCkseD1tPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzPy5kb2N1bWVudCxbLHddPUMudXNlU3RhdGUoe30pLGI9SXQodCx5KSxnPUFycmF5LmZyb20ocC5sYXllcnMpLFtfXT1bLi4ucC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZF0uc2xpY2UoLTEpLE89Xz9nLmluZGV4T2YoXyk6LTEsRT1tP2cuaW5kZXhPZihtKTotMSxqPXAubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZT4wLFQ9RT49TyxQPUMudXNlUmVmKCExKSxOPVM3KEI9PntvPy4oQiksdT8uKEIpLEIuZGVmYXVsdFByZXZlbnRlZHx8Zj8uKCl9LHtvd25lckRvY3VtZW50OngsZGVmZXJQb2ludGVyRG93bk91dHNpZGU6cixpc0RlZmVycmVkUG9pbnRlckRvd25PdXRzaWRlUmVmOlAsZGlzbWlzc2FibGVTdXJmYWNlczpwLmRpc21pc3NhYmxlU3VyZmFjZXMsc2hvdWxkSGFuZGxlUG9pbnRlckRvd25PdXRzaWRlOkMudXNlQ2FsbGJhY2soQj0+e2lmKCEoQiBpbnN0YW5jZW9mIE5vZGUpKXJldHVybiExO2NvbnN0ICQ9Wy4uLnAuYnJhbmNoZXNdLnNvbWUoej0+ei5jb250YWlucyhCKSk7cmV0dXJuIFQmJiEkfSxbcC5icmFuY2hlcyxUXSl9KSxSPUE3KEI9PntpZihyJiZQLmN1cnJlbnQpcmV0dXJuO2NvbnN0ICQ9Qi50YXJnZXQ7Wy4uLnAuYnJhbmNoZXNdLnNvbWUoVT0+VS5jb250YWlucygkKSl8fChzPy4oQiksdT8uKEIpLEIuZGVmYXVsdFByZXZlbnRlZHx8Zj8uKCkpfSx4KSxJPW0/RT09PWcubGVuZ3RoLTE6ITEsVj1hcihCPT57Qi5rZXk9PT0iRXNjYXBlIiYmKGk/LihCKSwhQi5kZWZhdWx0UHJldmVudGVkJiZmJiYoQi5wcmV2ZW50RGVmYXVsdCgpLGYoKSkpfSk7cmV0dXJuIEMudXNlRWZmZWN0KCgpPT57aWYoSSlyZXR1cm4geC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixWLHtjYXB0dXJlOiEwfSksKCk9PngucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsVix7Y2FwdHVyZTohMH0pfSxbeCxJLFZdKSxDLnVzZUVmZmVjdCgoKT0+e2lmKG0pcmV0dXJuIG4mJihwLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU9PT0wJiYoUk09eC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMseC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiKSxwLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmFkZChtKSkscC5sYXllcnMuYWRkKG0pLE5NKCksKCk9PntuJiYocC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUobSkscC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPT09MCYmKHguYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPVJNKSl9fSxbbSx4LG4scF0pLEMudXNlRWZmZWN0KCgpPT4oKT0+e20mJihwLmxheWVycy5kZWxldGUobSkscC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUobSksTk0oKSl9LFttLHBdKSxDLnVzZUVmZmVjdCgoKT0+e2NvbnN0IEI9KCk9Pncoe30pO3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKEJTLEIpLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKEJTLEIpfSxbXSksQS5qc3goUWUuZGl2LHsuLi5kLHJlZjpiLHN0eWxlOntwb2ludGVyRXZlbnRzOmo/VD8iYXV0byI6Im5vbmUiOnZvaWQgMCwuLi5lLnN0eWxlfSxvbkZvY3VzQ2FwdHVyZTp6ZShlLm9uRm9jdXNDYXB0dXJlLFIub25Gb2N1c0NhcHR1cmUpLG9uQmx1ckNhcHR1cmU6emUoZS5vbkJsdXJDYXB0dXJlLFIub25CbHVyQ2FwdHVyZSksb25Qb2ludGVyRG93bkNhcHR1cmU6emUoZS5vblBvaW50ZXJEb3duQ2FwdHVyZSxOLm9uUG9pbnRlckRvd25DYXB0dXJlKX0pfSk7U2QuZGlzcGxheU5hbWU9eTc7dmFyIGI3PSJEaXNtaXNzYWJsZUxheWVyQnJhbmNoIixFND1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdCBuPUMudXNlQ29udGV4dChhTykscj1DLnVzZVJlZihudWxsKSxpPUl0KHQscik7cmV0dXJuIEMudXNlRWZmZWN0KCgpPT57Y29uc3Qgbz1yLmN1cnJlbnQ7aWYobylyZXR1cm4gbi5icmFuY2hlcy5hZGQobyksKCk9PntuLmJyYW5jaGVzLmRlbGV0ZShvKX19LFtuLmJyYW5jaGVzXSksQS5qc3goUWUuZGl2LHsuLi5lLHJlZjppfSl9KTtFNC5kaXNwbGF5TmFtZT1iNztmdW5jdGlvbiB4Nygpe2NvbnN0IGU9Qy51c2VDb250ZXh0KGFPKSxbdCxuXT1DLnVzZVN0YXRlKG51bGwpO3JldHVybiBDLnVzZUVmZmVjdCgoKT0+e2lmKHQpcmV0dXJuIGUuZGlzbWlzc2FibGVTdXJmYWNlcy5hZGQodCksKCk9PntlLmRpc21pc3NhYmxlU3VyZmFjZXMuZGVsZXRlKHQpfX0sW3QsZS5kaXNtaXNzYWJsZVN1cmZhY2VzXSksbn12YXIgdzc9KCk9PiEwO2Z1bmN0aW9uIFM3KGUsdCl7Y29uc3R7b3duZXJEb2N1bWVudDpuPWdsb2JhbFRoaXM/LmRvY3VtZW50LGRlZmVyUG9pbnRlckRvd25PdXRzaWRlOnI9ITEsaXNEZWZlcnJlZFBvaW50ZXJEb3duT3V0c2lkZVJlZjppLGRpc21pc3NhYmxlU3VyZmFjZXM6byxzaG91bGRIYW5kbGVQb2ludGVyRG93bk91dHNpZGU6cz13N309dCx1PWFyKGUpLGY9Qy51c2VSZWYoITEpLGQ9Qy51c2VSZWYoITEpLHA9Qy51c2VSZWYobmV3IE1hcCksbT1DLnVzZVJlZigoKT0+e30pO3JldHVybiBDLnVzZUVmZmVjdCgoKT0+e2Z1bmN0aW9uIHkoKXtkLmN1cnJlbnQ9ITEsaS5jdXJyZW50PSExLHAuY3VycmVudC5jbGVhcigpfWZ1bmN0aW9uIHgoKXtyZXR1cm4gQXJyYXkuZnJvbShwLmN1cnJlbnQudmFsdWVzKCkpLnNvbWUoQm9vbGVhbil9ZnVuY3Rpb24gdyhFKXtpZighZC5jdXJyZW50KXJldHVybjtjb25zdCBqPUUudGFyZ2V0O2ogaW5zdGFuY2VvZiBOb2RlJiZbLi4ub10uc29tZShQPT5QLmNvbnRhaW5zKGopKXx8cC5jdXJyZW50LnNldChFLnR5cGUsITApLEUudHlwZT09PSJjbGljayImJndpbmRvdy5zZXRUaW1lb3V0KCgpPT57ZC5jdXJyZW50JiZtLmN1cnJlbnQoKX0sMCl9ZnVuY3Rpb24gYihFKXtkLmN1cnJlbnQmJnAuY3VycmVudC5zZXQoRS50eXBlLCExKX1jb25zdCBnPUU9PntpZihFLnRhcmdldCYmIWYuY3VycmVudCl7bGV0IGo9ZnVuY3Rpb24oKXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixtLmN1cnJlbnQpO2NvbnN0IFA9eCgpO3koKSxQfHxDNCh2Nyx1LFQse2Rpc2NyZXRlOiEwfSl9O2lmKCFzKEUudGFyZ2V0KSl7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsbS5jdXJyZW50KSx5KCksZi5jdXJyZW50PSExO3JldHVybn1jb25zdCBUPXtvcmlnaW5hbEV2ZW50OkV9O2QuY3VycmVudD0hMCxpLmN1cnJlbnQ9ciYmRS5idXR0b249PT0wLHAuY3VycmVudC5jbGVhcigpLCFyfHxFLmJ1dHRvbiE9PTA/aigpOihuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixtLmN1cnJlbnQpLG0uY3VycmVudD1qLG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG0uY3VycmVudCx7b25jZTohMH0pKX1lbHNlIG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLG0uY3VycmVudCkseSgpO2YuY3VycmVudD0hMX0sXz1bInBvaW50ZXJ1cCIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJ0b3VjaHN0YXJ0IiwidG91Y2hlbmQiLCJjbGljayJdO2Zvcihjb25zdCBFIG9mIF8pbi5hZGRFdmVudExpc3RlbmVyKEUsdywhMCksbi5hZGRFdmVudExpc3RlbmVyKEUsYik7Y29uc3QgTz13aW5kb3cuc2V0VGltZW91dCgoKT0+e24uYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLGcpfSwwKTtyZXR1cm4oKT0+e3dpbmRvdy5jbGVhclRpbWVvdXQoTyksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsZyksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsbS5jdXJyZW50KTtmb3IoY29uc3QgRSBvZiBfKW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihFLHcsITApLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihFLGIpfX0sW24sdSxyLGksbyxzXSkse29uUG9pbnRlckRvd25DYXB0dXJlOigpPT5mLmN1cnJlbnQ9ITB9fWZ1bmN0aW9uIEE3KGUsdD1nbG9iYWxUaGlzPy5kb2N1bWVudCl7Y29uc3Qgbj1hcihlKSxyPUMudXNlUmVmKCExKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9Pntjb25zdCBpPW89PntvLnRhcmdldCYmIXIuY3VycmVudCYmQzQoZzcsbix7b3JpZ2luYWxFdmVudDpvfSx7ZGlzY3JldGU6ITF9KX07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsaSksKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsaSl9LFt0LG5dKSx7b25Gb2N1c0NhcHR1cmU6KCk9PnIuY3VycmVudD0hMCxvbkJsdXJDYXB0dXJlOigpPT5yLmN1cnJlbnQ9ITF9fWZ1bmN0aW9uIE5NKCl7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQoQlMpO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoZSl9ZnVuY3Rpb24gQzQoZSx0LG4se2Rpc2NyZXRlOnJ9KXtjb25zdCBpPW4ub3JpZ2luYWxFdmVudC50YXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmaS5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHI/VDQoaSxvKTppLmRpc3BhdGNoRXZlbnQobyl9dmFyIF83PVNkLE83PUU0LGduPWdsb2JhbFRoaXM/LmRvY3VtZW50P0MudXNlTGF5b3V0RWZmZWN0OigpPT57fSxUNz0iUG9ydGFsIixBZD1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtjb250YWluZXI6biwuLi5yfT1lLFtpLG9dPUMudXNlU3RhdGUoITEpO2duKCgpPT5vKCEwKSxbXSk7Y29uc3Qgcz1ufHxpJiZnbG9iYWxUaGlzPy5kb2N1bWVudD8uYm9keTtyZXR1cm4gcz9NdS5jcmVhdGVQb3J0YWwoQS5qc3goUWUuZGl2LHsuLi5yLHJlZjp0fSkscyk6bnVsbH0pO0FkLmRpc3BsYXlOYW1lPVQ3O2Z1bmN0aW9uIEU3KGUsdCl7cmV0dXJuIEMudXNlUmVkdWNlcigobixyKT0+dFtuXVtyXT8/bixlKX12YXIgbWE9ZT0+e2NvbnN0e3ByZXNlbnQ6dCxjaGlsZHJlbjpufT1lLHI9QzcodCksaT10eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKHtwcmVzZW50OnIuaXNQcmVzZW50fSk6Qy5DaGlsZHJlbi5vbmx5KG4pLG89ajcoci5yZWYsUDcoaSkpO3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uInx8ci5pc1ByZXNlbnQ/Qy5jbG9uZUVsZW1lbnQoaSx7cmVmOm99KTpudWxsfTttYS5kaXNwbGF5TmFtZT0iUHJlc2VuY2UiO2Z1bmN0aW9uIEM3KGUpe2NvbnN0W3Qsbl09Qy51c2VTdGF0ZSgpLHI9Qy51c2VSZWYobnVsbCksaT1DLnVzZVJlZihlKSxvPUMudXNlUmVmKCJub25lIikscz1DLnVzZVJlZih2b2lkIDApLHU9ZT8ibW91bnRlZCI6InVubW91bnRlZCIsW2YsZF09RTcodSx7bW91bnRlZDp7VU5NT1VOVDoidW5tb3VudGVkIixBTklNQVRJT05fT1VUOiJ1bm1vdW50U3VzcGVuZGVkIn0sdW5tb3VudFN1c3BlbmRlZDp7TU9VTlQ6Im1vdW50ZWQiLEFOSU1BVElPTl9FTkQ6InVubW91bnRlZCJ9LHVubW91bnRlZDp7TU9VTlQ6Im1vdW50ZWQifX0pO3JldHVybiBDLnVzZUVmZmVjdCgoKT0+e2Y9PT0ibW91bnRlZCI/KG8uY3VycmVudD1zLmN1cnJlbnQ/P0hjKHIuY3VycmVudCkscy5jdXJyZW50PXZvaWQgMCk6by5jdXJyZW50PSJub25lIn0sW2ZdKSxnbigoKT0+e2NvbnN0IHA9ci5jdXJyZW50LG09aS5jdXJyZW50O2lmKG0hPT1lKXtjb25zdCB4PW8uY3VycmVudCx3PUhjKHApO2U/KHMuY3VycmVudD13LGQoIk1PVU5UIikpOnc9PT0ibm9uZSJ8fHA/LmRpc3BsYXk9PT0ibm9uZSI/ZCgiVU5NT1VOVCIpOmQobSYmeCE9PXc/IkFOSU1BVElPTl9PVVQiOiJVTk1PVU5UIiksaS5jdXJyZW50PWV9fSxbZSxkXSksZ24oKCk9PntpZih0KXtsZXQgcDtjb25zdCBtPXQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldz8/d2luZG93LHk9dz0+e2NvbnN0IGc9SGMoci5jdXJyZW50KS5pbmNsdWRlcyhDU1MuZXNjYXBlKHcuYW5pbWF0aW9uTmFtZSkpO2lmKHcudGFyZ2V0PT09dCYmZyYmKGQoIkFOSU1BVElPTl9FTkQiKSwhaS5jdXJyZW50KSl7Y29uc3QgXz10LnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlO3Quc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9ImZvcndhcmRzIixwPW0uc2V0VGltZW91dCgoKT0+e3Quc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9PT0iZm9yd2FyZHMiJiYodC5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT1fKX0pfX0seD13PT57dy50YXJnZXQ9PT10JiYoby5jdXJyZW50PUhjKHIuY3VycmVudCkpfTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25zdGFydCIseCksdC5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25jYW5jZWwiLHkpLHQuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIix5KSwoKT0+e20uY2xlYXJUaW1lb3V0KHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uc3RhcnQiLHgpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uY2FuY2VsIix5KSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIseSl9fWVsc2UgZCgiQU5JTUFUSU9OX0VORCIpfSxbdCxkXSkse2lzUHJlc2VudDpbIm1vdW50ZWQiLCJ1bm1vdW50U3VzcGVuZGVkIl0uaW5jbHVkZXMoZikscmVmOkMudXNlQ2FsbGJhY2socD0+e2lmKHApe2NvbnN0IG09Z2V0Q29tcHV0ZWRTdHlsZShwKTtyLmN1cnJlbnQ9bSxzLmN1cnJlbnQ9SGMobSl9ZWxzZSByLmN1cnJlbnQ9bnVsbDtuKHApfSxbXSl9fWZ1bmN0aW9uIGtNKGUsdCl7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIGUodCk7ZSE9bnVsbCYmKGUuY3VycmVudD10KX1mdW5jdGlvbiBqNyguLi5lKXtjb25zdCB0PUMudXNlUmVmKGUpO3JldHVybiB0LmN1cnJlbnQ9ZSxDLnVzZUNhbGxiYWNrKG49Pntjb25zdCByPXQuY3VycmVudDtsZXQgaT0hMTtjb25zdCBvPXIubWFwKHM9Pntjb25zdCB1PWtNKHMsbik7cmV0dXJuIWkmJnR5cGVvZiB1PT0iZnVuY3Rpb24iJiYoaT0hMCksdX0pO2lmKGkpcmV0dXJuKCk9Pntmb3IobGV0IHM9MDtzPG8ubGVuZ3RoO3MrKyl7Y29uc3QgdT1vW3NdO3R5cGVvZiB1PT0iZnVuY3Rpb24iP3UoKTprTShyW3NdLG51bGwpfX19LFtdKX1mdW5jdGlvbiBIYyhlKXtyZXR1cm4gZT8uYW5pbWF0aW9uTmFtZXx8Im5vbmUifWZ1bmN0aW9uIFA3KGUpe2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5wcm9wcywicmVmIik/LmdldCxuPXQmJiJpc1JlYWN0V2FybmluZyJpbiB0JiZ0LmlzUmVhY3RXYXJuaW5nO3JldHVybiBuP2UucmVmOih0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwicmVmIik/LmdldCxuPXQmJiJpc1JlYWN0V2FybmluZyJpbiB0JiZ0LmlzUmVhY3RXYXJuaW5nLG4/ZS5wcm9wcy5yZWY6ZS5wcm9wcy5yZWZ8fGUucmVmKX12YXIgTTc9d2RbIiB1c2VJbnNlcnRpb25FZmZlY3QgIi50cmltKCkudG9TdHJpbmcoKV18fGduO2Z1bmN0aW9uIFhsKHtwcm9wOmUsZGVmYXVsdFByb3A6dCxvbkNoYW5nZTpuPSgpPT57fSxjYWxsZXI6cn0pe2NvbnN0W2ksbyxzXT1SNyh7ZGVmYXVsdFByb3A6dCxvbkNoYW5nZTpufSksdT1lIT09dm9pZCAwLGY9dT9lOmk7e2NvbnN0IHA9Qy51c2VSZWYoZSE9PXZvaWQgMCk7Qy51c2VFZmZlY3QoKCk9Pntjb25zdCBtPXAuY3VycmVudDttIT09dSYmY29uc29sZS53YXJuKGAke3J9IGlzIGNoYW5naW5nIGZyb20gJHttPyJjb250cm9sbGVkIjoidW5jb250cm9sbGVkIn0gdG8gJHt1PyJjb250cm9sbGVkIjoidW5jb250cm9sbGVkIn0uIENvbXBvbmVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgdmFsdWUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9uZW50LmApLHAuY3VycmVudD11fSxbdSxyXSl9Y29uc3QgZD1DLnVzZUNhbGxiYWNrKHA9PntpZih1KXtjb25zdCBtPU43KHApP3AoZSk6cDttIT09ZSYmcy5jdXJyZW50Py4obSl9ZWxzZSBvKHApfSxbdSxlLG8sc10pO3JldHVybltmLGRdfWZ1bmN0aW9uIFI3KHtkZWZhdWx0UHJvcDplLG9uQ2hhbmdlOnR9KXtjb25zdFtuLHJdPUMudXNlU3RhdGUoZSksaT1DLnVzZVJlZihuKSxvPUMudXNlUmVmKHQpO3JldHVybiBNNygoKT0+e28uY3VycmVudD10fSxbdF0pLEMudXNlRWZmZWN0KCgpPT57aS5jdXJyZW50IT09biYmKG8uY3VycmVudD8uKG4pLGkuY3VycmVudD1uKX0sW24saV0pLFtuLHIsb119ZnVuY3Rpb24gTjcoZSl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24ifXZhciBqND1PYmplY3QuZnJlZXplKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGJvcmRlcjowLHdpZHRoOjEsaGVpZ2h0OjEscGFkZGluZzowLG1hcmdpbjotMSxvdmVyZmxvdzoiaGlkZGVuIixjbGlwOiJyZWN0KDAsIDAsIDAsIDApIix3aGl0ZVNwYWNlOiJub3dyYXAiLHdvcmRXcmFwOiJub3JtYWwifSksazc9IlZpc3VhbGx5SGlkZGVuIixDeT1DLmZvcndhcmRSZWYoKGUsdCk9PkEuanN4KFFlLnNwYW4sey4uLmUscmVmOnQsc3R5bGU6ey4uLmo0LC4uLmUuc3R5bGV9fSkpO0N5LmRpc3BsYXlOYW1lPWs3O3ZhciBENz1DeSxvTz0iVG9hc3RQcm92aWRlciIsW3NPLEw3LEk3XT1pTygiVG9hc3QiKSxbUDRdPW1vKCJUb2FzdCIsW0k3XSksWyQ3LGp5XT1QNChvTyksTTQ9ZT0+e2NvbnN0e19fc2NvcGVUb2FzdDp0LGxhYmVsOm49Ik5vdGlmaWNhdGlvbiIsZHVyYXRpb246cj01ZTMsc3dpcGVEaXJlY3Rpb246aT0icmlnaHQiLHN3aXBlVGhyZXNob2xkOm89NTAsYW5ub3VuY2VyQ29udGFpbmVyOnMsY2hpbGRyZW46dX09ZSxbZixkXT1DLnVzZVN0YXRlKG51bGwpLFtwLG1dPUMudXNlU3RhdGUoMCkseT1DLnVzZVJlZighMSkseD1DLnVzZVJlZighMSk7cmV0dXJuIG4udHJpbSgpfHxjb25zb2xlLmVycm9yKGBJbnZhbGlkIHByb3AgXGBsYWJlbFxgIHN1cHBsaWVkIHRvIFxgJHtvT31cYC4gRXhwZWN0ZWQgbm9uLWVtcHR5IFxgc3RyaW5nXGAuYCksQS5qc3goc08uUHJvdmlkZXIse3Njb3BlOnQsY2hpbGRyZW46QS5qc3goJDcse3Njb3BlOnQsbGFiZWw6bixkdXJhdGlvbjpyLHN3aXBlRGlyZWN0aW9uOmksc3dpcGVUaHJlc2hvbGQ6byx0b2FzdENvdW50OnAsdmlld3BvcnQ6ZixvblZpZXdwb3J0Q2hhbmdlOmQsb25Ub2FzdEFkZDpDLnVzZUNhbGxiYWNrKCgpPT5tKHc9PncrMSksW10pLG9uVG9hc3RSZW1vdmU6Qy51c2VDYWxsYmFjaygoKT0+bSh3PT53LTEpLFtdKSxpc0ZvY3VzZWRUb2FzdEVzY2FwZUtleURvd25SZWY6eSxpc0Nsb3NlUGF1c2VkUmVmOngsYW5ub3VuY2VyQ29udGFpbmVyOnMsY2hpbGRyZW46dX0pfSl9O000LmRpc3BsYXlOYW1lPW9PO3ZhciBSND0iVG9hc3RWaWV3cG9ydCIsQjc9WyJGOCJdLFZTPSJ0b2FzdC52aWV3cG9ydFBhdXNlIixxUz0idG9hc3Qudmlld3BvcnRSZXN1bWUiLE40PUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVUb2FzdDpuLGhvdGtleTpyPUI3LGxhYmVsOmk9Ik5vdGlmaWNhdGlvbnMgKHtob3RrZXl9KSIsLi4ub309ZSxzPWp5KFI0LG4pLHU9TDcobiksZj1DLnVzZVJlZihudWxsKSxkPUMudXNlUmVmKG51bGwpLHA9Qy51c2VSZWYobnVsbCksbT1DLnVzZVJlZihudWxsKSx5PUl0KHQsbSxzLm9uVmlld3BvcnRDaGFuZ2UpLHg9ci5qb2luKCIrIikucmVwbGFjZSgvS2V5L2csIiIpLnJlcGxhY2UoL0RpZ2l0L2csIiIpLHc9cy50b2FzdENvdW50PjA7Qy51c2VFZmZlY3QoKCk9Pntjb25zdCBnPV89PntyLmxlbmd0aCE9PTAmJnIuZXZlcnkoRT0+X1tFXXx8Xy5jb2RlPT09RSkmJm0uY3VycmVudD8uZm9jdXMoKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGcpLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixnKX0sW3JdKSxDLnVzZUVmZmVjdCgoKT0+e2NvbnN0IGc9Zi5jdXJyZW50LF89bS5jdXJyZW50O2lmKHcmJmcmJl8pe2NvbnN0IE89KCk9PntpZighcy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQpe2NvbnN0IFA9bmV3IEN1c3RvbUV2ZW50KFZTKTtfLmRpc3BhdGNoRXZlbnQoUCkscy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQ9ITB9fSxFPSgpPT57aWYocy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQpe2NvbnN0IFA9bmV3IEN1c3RvbUV2ZW50KHFTKTtfLmRpc3BhdGNoRXZlbnQoUCkscy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQ9ITF9fSxqPVA9PnshZy5jb250YWlucyhQLnJlbGF0ZWRUYXJnZXQpJiZFKCl9LFQ9KCk9PntnLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHxFKCl9O3JldHVybiBnLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLE8pLGcuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLGopLGcuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLE8pLGcuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixUKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsTyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixFKSwoKT0+e2cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsTyksZy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsaiksZy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsTyksZy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLFQpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixPKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLEUpfX19LFt3LHMuaXNDbG9zZVBhdXNlZFJlZl0pO2NvbnN0IGI9Qy51c2VDYWxsYmFjaygoe3RhYmJpbmdEaXJlY3Rpb246Z30pPT57Y29uc3QgTz11KCkubWFwKEU9Pntjb25zdCBqPUUucmVmLmN1cnJlbnQsVD1baiwuLi5RNyhqKV07cmV0dXJuIGc9PT0iZm9yd2FyZHMiP1Q6VC5yZXZlcnNlKCl9KTtyZXR1cm4oZz09PSJmb3J3YXJkcyI/Ty5yZXZlcnNlKCk6TykuZmxhdCgpfSxbdV0pO3JldHVybiBDLnVzZUVmZmVjdCgoKT0+e2NvbnN0IGc9bS5jdXJyZW50O2lmKGcpe2NvbnN0IF89Tz0+e2NvbnN0IEU9Ty5hbHRLZXl8fE8uY3RybEtleXx8Ty5tZXRhS2V5O2lmKE8ua2V5PT09IlRhYiImJiFFKXtjb25zdCBUPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsUD1PLnNoaWZ0S2V5O2lmKE8udGFyZ2V0PT09ZyYmUCl7ZC5jdXJyZW50Py5mb2N1cygpO3JldHVybn1jb25zdCBJPWIoe3RhYmJpbmdEaXJlY3Rpb246UD8iYmFja3dhcmRzIjoiZm9yd2FyZHMifSksVj1JLmZpbmRJbmRleChCPT5CPT09VCk7WWIoSS5zbGljZShWKzEpKT9PLnByZXZlbnREZWZhdWx0KCk6UD9kLmN1cnJlbnQ/LmZvY3VzKCk6cC5jdXJyZW50Py5mb2N1cygpfX07cmV0dXJuIGcuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsXyksKCk9PmcucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsXyl9fSxbdSxiXSksQS5qc3hzKE83LHtyZWY6Zixyb2xlOiJyZWdpb24iLCJhcmlhLWxhYmVsIjppLnJlcGxhY2UoIntob3RrZXl9Iix4KSx0YWJJbmRleDotMSxzdHlsZTp7cG9pbnRlckV2ZW50czp3P3ZvaWQgMDoibm9uZSJ9LGNoaWxkcmVuOlt3JiZBLmpzeChVUyx7cmVmOmQsb25Gb2N1c0Zyb21PdXRzaWRlVmlld3BvcnQ6KCk9Pntjb25zdCBnPWIoe3RhYmJpbmdEaXJlY3Rpb246ImZvcndhcmRzIn0pO1liKGcpfX0pLEEuanN4KHNPLlNsb3Qse3Njb3BlOm4sY2hpbGRyZW46QS5qc3goUWUub2wse3RhYkluZGV4Oi0xLC4uLm8scmVmOnl9KX0pLHcmJkEuanN4KFVTLHtyZWY6cCxvbkZvY3VzRnJvbU91dHNpZGVWaWV3cG9ydDooKT0+e2NvbnN0IGc9Yih7dGFiYmluZ0RpcmVjdGlvbjoiYmFja3dhcmRzIn0pO1liKGcpfX0pXX0pfSk7TjQuZGlzcGxheU5hbWU9UjQ7dmFyIGs0PSJUb2FzdEZvY3VzUHJveHkiLFVTPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVUb2FzdDpuLG9uRm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0OnIsLi4uaX09ZSxvPWp5KGs0LG4pO3JldHVybiBBLmpzeChDeSx7dGFiSW5kZXg6MCwuLi5pLHJlZjp0LHN0eWxlOntwb3NpdGlvbjoiZml4ZWQifSxvbkZvY3VzOnM9Pntjb25zdCB1PXMucmVsYXRlZFRhcmdldDshby52aWV3cG9ydD8uY29udGFpbnModSkmJnIoKX19KX0pO1VTLmRpc3BsYXlOYW1lPWs0O3ZhciBfZD0iVG9hc3QiLFY3PSJ0b2FzdC5zd2lwZVN0YXJ0IixxNz0idG9hc3Quc3dpcGVNb3ZlIixVNz0idG9hc3Quc3dpcGVDYW5jZWwiLHo3PSJ0b2FzdC5zd2lwZUVuZCIsRDQ9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7Zm9yY2VNb3VudDpuLG9wZW46cixkZWZhdWx0T3BlbjppLG9uT3BlbkNoYW5nZTpvLC4uLnN9PWUsW3UsZl09WGwoe3Byb3A6cixkZWZhdWx0UHJvcDppPz8hMCxvbkNoYW5nZTpvLGNhbGxlcjpfZH0pO3JldHVybiBBLmpzeChtYSx7cHJlc2VudDpufHx1LGNoaWxkcmVuOkEuanN4KEc3LHtvcGVuOnUsLi4ucyxyZWY6dCxvbkNsb3NlOigpPT5mKCExKSxvblBhdXNlOmFyKGUub25QYXVzZSksb25SZXN1bWU6YXIoZS5vblJlc3VtZSksb25Td2lwZVN0YXJ0OnplKGUub25Td2lwZVN0YXJ0LGQ9PntkLmN1cnJlbnRUYXJnZXQuc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwic3RhcnQiKX0pLG9uU3dpcGVNb3ZlOnplKGUub25Td2lwZU1vdmUsZD0+e2NvbnN0e3g6cCx5Om19PWQuZGV0YWlsLmRlbHRhO2QuY3VycmVudFRhcmdldC5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGUiLCJtb3ZlIiksZC5jdXJyZW50VGFyZ2V0LnN0eWxlLnNldFByb3BlcnR5KCItLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteCIsYCR7cH1weGApLGQuY3VycmVudFRhcmdldC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1yYWRpeC10b2FzdC1zd2lwZS1tb3ZlLXkiLGAke219cHhgKX0pLG9uU3dpcGVDYW5jZWw6emUoZS5vblN3aXBlQ2FuY2VsLGQ9PntkLmN1cnJlbnRUYXJnZXQuc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwiY2FuY2VsIiksZC5jdXJyZW50VGFyZ2V0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteCIpLGQuY3VycmVudFRhcmdldC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yYWRpeC10b2FzdC1zd2lwZS1tb3ZlLXkiKSxkLmN1cnJlbnRUYXJnZXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmFkaXgtdG9hc3Qtc3dpcGUtZW5kLXgiKSxkLmN1cnJlbnRUYXJnZXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmFkaXgtdG9hc3Qtc3dpcGUtZW5kLXkiKX0pLG9uU3dpcGVFbmQ6emUoZS5vblN3aXBlRW5kLGQ9Pntjb25zdHt4OnAseTptfT1kLmRldGFpbC5kZWx0YTtkLmN1cnJlbnRUYXJnZXQuc2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlIiwiZW5kIiksZC5jdXJyZW50VGFyZ2V0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteCIpLGQuY3VycmVudFRhcmdldC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yYWRpeC10b2FzdC1zd2lwZS1tb3ZlLXkiKSxkLmN1cnJlbnRUYXJnZXQuc3R5bGUuc2V0UHJvcGVydHkoIi0tcmFkaXgtdG9hc3Qtc3dpcGUtZW5kLXgiLGAke3B9cHhgKSxkLmN1cnJlbnRUYXJnZXQuc3R5bGUuc2V0UHJvcGVydHkoIi0tcmFkaXgtdG9hc3Qtc3dpcGUtZW5kLXkiLGAke219cHhgKSxmKCExKX0pfSl9KX0pO0Q0LmRpc3BsYXlOYW1lPV9kO3ZhcltGNyxIN109UDQoX2Qse29uQ2xvc2UoKXt9fSksRzc9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRvYXN0Om4sdHlwZTpyPSJmb3JlZ3JvdW5kIixkdXJhdGlvbjppLG9wZW46byxvbkNsb3NlOnMsb25Fc2NhcGVLZXlEb3duOnUsb25QYXVzZTpmLG9uUmVzdW1lOmQsb25Td2lwZVN0YXJ0OnAsb25Td2lwZU1vdmU6bSxvblN3aXBlQ2FuY2VsOnksb25Td2lwZUVuZDp4LC4uLnd9PWUsYj1qeShfZCxuKSxbZyxfXT1DLnVzZVN0YXRlKG51bGwpLE89SXQodCxfKSxFPUMudXNlUmVmKG51bGwpLGo9Qy51c2VSZWYobnVsbCksVD1pfHxiLmR1cmF0aW9uLFA9Qy51c2VSZWYoMCksTj1DLnVzZVJlZihUKSxSPUMudXNlUmVmKDApLHtvblRvYXN0QWRkOkksb25Ub2FzdFJlbW92ZTpWfT1iLEI9YXIoKCk9PntnPy5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmYi52aWV3cG9ydD8uZm9jdXMoKSxzKCl9KSwkPUMudXNlQ2FsbGJhY2soVT0+eyFVfHxVPT09MS8wfHwod2luZG93LmNsZWFyVGltZW91dChSLmN1cnJlbnQpLFAuY3VycmVudD1uZXcgRGF0ZSgpLmdldFRpbWUoKSxSLmN1cnJlbnQ9d2luZG93LnNldFRpbWVvdXQoQixVKSl9LFtCXSk7Qy51c2VFZmZlY3QoKCk9Pntjb25zdCBVPWIudmlld3BvcnQ7aWYoVSl7Y29uc3QgSz0oKT0+eyQoTi5jdXJyZW50KSxkPy4oKX0sTD0oKT0+e2NvbnN0IFc9bmV3IERhdGUoKS5nZXRUaW1lKCktUC5jdXJyZW50O04uY3VycmVudD1OLmN1cnJlbnQtVyx3aW5kb3cuY2xlYXJUaW1lb3V0KFIuY3VycmVudCksZj8uKCl9O3JldHVybiBVLmFkZEV2ZW50TGlzdGVuZXIoVlMsTCksVS5hZGRFdmVudExpc3RlbmVyKHFTLEspLCgpPT57VS5yZW1vdmVFdmVudExpc3RlbmVyKFZTLEwpLFUucmVtb3ZlRXZlbnRMaXN0ZW5lcihxUyxLKX19fSxbYi52aWV3cG9ydCxULGYsZCwkXSksQy51c2VFZmZlY3QoKCk9PntvJiYhYi5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQmJiQoVCl9LFtvLFQsYi5pc0Nsb3NlUGF1c2VkUmVmLCRdKSxDLnVzZUVmZmVjdCgoKT0+KCk9Pnt3aW5kb3cuY2xlYXJUaW1lb3V0KFIuY3VycmVudCl9LFtdKSxDLnVzZUVmZmVjdCgoKT0+KEkoKSwoKT0+VigpKSxbSSxWXSk7Y29uc3Qgej1DLnVzZU1lbW8oKCk9Pmc/VTQoZyk6bnVsbCxbZ10pO3JldHVybiBiLnZpZXdwb3J0P0EuanN4cyhBLkZyYWdtZW50LHtjaGlsZHJlbjpbeiYmQS5qc3goSzcse19fc2NvcGVUb2FzdDpuLHJvbGU6InN0YXR1cyIsImFyaWEtbGl2ZSI6cj09PSJmb3JlZ3JvdW5kIj8iYXNzZXJ0aXZlIjoicG9saXRlIixjaGlsZHJlbjp6fSksQS5qc3goRjcse3Njb3BlOm4sb25DbG9zZTpCLGNoaWxkcmVuOk11LmNyZWF0ZVBvcnRhbChBLmpzeChzTy5JdGVtU2xvdCx7c2NvcGU6bixjaGlsZHJlbjpBLmpzeChfNyx7YXNDaGlsZDohMCxvbkVzY2FwZUtleURvd246emUodSwoKT0+e2IuaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmLmN1cnJlbnR8fEIoKSxiLmlzRm9jdXNlZFRvYXN0RXNjYXBlS2V5RG93blJlZi5jdXJyZW50PSExfSksY2hpbGRyZW46QS5qc3goUWUubGkse3RhYkluZGV4OjAsImRhdGEtc3RhdGUiOm8/Im9wZW4iOiJjbG9zZWQiLCJkYXRhLXN3aXBlLWRpcmVjdGlvbiI6Yi5zd2lwZURpcmVjdGlvbiwuLi53LHJlZjpPLHN0eWxlOnt1c2VyU2VsZWN0OiJub25lIix0b3VjaEFjdGlvbjoibm9uZSIsLi4uZS5zdHlsZX0sb25LZXlEb3duOnplKGUub25LZXlEb3duLFU9PntVLmtleT09PSJFc2NhcGUiJiYodT8uKFUubmF0aXZlRXZlbnQpLFUubmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZHx8KGIuaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmLmN1cnJlbnQ9ITAsQigpKSl9KSxvblBvaW50ZXJEb3duOnplKGUub25Qb2ludGVyRG93bixVPT57VS5idXR0b249PT0wJiYoRS5jdXJyZW50PXt4OlUuY2xpZW50WCx5OlUuY2xpZW50WX0pfSksb25Qb2ludGVyTW92ZTp6ZShlLm9uUG9pbnRlck1vdmUsVT0+e2lmKCFFLmN1cnJlbnQpcmV0dXJuO2NvbnN0IEs9VS5jbGllbnRYLUUuY3VycmVudC54LEw9VS5jbGllbnRZLUUuY3VycmVudC55LFc9ISFqLmN1cnJlbnQsSD1bImxlZnQiLCJyaWdodCJdLmluY2x1ZGVzKGIuc3dpcGVEaXJlY3Rpb24pLGVlPVsibGVmdCIsInVwIl0uaW5jbHVkZXMoYi5zd2lwZURpcmVjdGlvbik/TWF0aC5taW46TWF0aC5tYXgsaz1IP2VlKDAsSyk6MCxaPUg/MDplZSgwLEwpLHRlPVUucG9pbnRlclR5cGU9PT0idG91Y2giPzEwOjIsb2U9e3g6ayx5Olp9LG1lPXtvcmlnaW5hbEV2ZW50OlUsZGVsdGE6b2V9O1c/KGouY3VycmVudD1vZSxpcChxNyxtLG1lLHtkaXNjcmV0ZTohMX0pKTpETShvZSxiLnN3aXBlRGlyZWN0aW9uLHRlKT8oai5jdXJyZW50PW9lLGlwKFY3LHAsbWUse2Rpc2NyZXRlOiExfSksVS50YXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoVS5wb2ludGVySWQpKTooTWF0aC5hYnMoSyk+dGV8fE1hdGguYWJzKEwpPnRlKSYmKEUuY3VycmVudD1udWxsKX0pLG9uUG9pbnRlclVwOnplKGUub25Qb2ludGVyVXAsVT0+e2NvbnN0IEs9ai5jdXJyZW50LEw9VS50YXJnZXQ7aWYoTC5oYXNQb2ludGVyQ2FwdHVyZShVLnBvaW50ZXJJZCkmJkwucmVsZWFzZVBvaW50ZXJDYXB0dXJlKFUucG9pbnRlcklkKSxqLmN1cnJlbnQ9bnVsbCxFLmN1cnJlbnQ9bnVsbCxLKXtjb25zdCBXPVUuY3VycmVudFRhcmdldCxIPXtvcmlnaW5hbEV2ZW50OlUsZGVsdGE6S307RE0oSyxiLnN3aXBlRGlyZWN0aW9uLGIuc3dpcGVUaHJlc2hvbGQpP2lwKHo3LHgsSCx7ZGlzY3JldGU6ITB9KTppcChVNyx5LEgse2Rpc2NyZXRlOiEwfSksVy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZWU9PmVlLnByZXZlbnREZWZhdWx0KCkse29uY2U6ITB9KX19KX0pfSl9KSxiLnZpZXdwb3J0KX0pXX0pOm51bGx9KSxLNz1lPT57Y29uc3R7X19zY29wZVRvYXN0OnQsY2hpbGRyZW46biwuLi5yfT1lLGk9ankoX2QsdCksW28sc109Qy51c2VTdGF0ZSghMSksW3UsZl09Qy51c2VTdGF0ZSghMSk7cmV0dXJuIFg3KCgpPT5zKCEwKSksQy51c2VFZmZlY3QoKCk9Pntjb25zdCBkPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT5mKCEwKSwxZTMpO3JldHVybigpPT53aW5kb3cuY2xlYXJUaW1lb3V0KGQpfSxbXSksdT9udWxsOkEuanN4KEFkLHthc0NoaWxkOiEwLGNvbnRhaW5lcjppLmFubm91bmNlckNvbnRhaW5lcnx8dm9pZCAwLGNoaWxkcmVuOkEuanN4KEN5LHsuLi5yLGNoaWxkcmVuOm8mJkEuanN4cyhBLkZyYWdtZW50LHtjaGlsZHJlbjpbaS5sYWJlbCwiICIsbl19KX0pfSl9LFc3PSJUb2FzdFRpdGxlIixMND1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9hc3Q6biwuLi5yfT1lO3JldHVybiBBLmpzeChRZS5kaXYsey4uLnIscmVmOnR9KX0pO0w0LmRpc3BsYXlOYW1lPVc3O3ZhciBZNz0iVG9hc3REZXNjcmlwdGlvbiIsSTQ9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRvYXN0Om4sLi4ucn09ZTtyZXR1cm4gQS5qc3goUWUuZGl2LHsuLi5yLHJlZjp0fSl9KTtJNC5kaXNwbGF5TmFtZT1ZNzt2YXIgJDQ9IlRvYXN0QWN0aW9uIixCND1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHthbHRUZXh0Om4sLi4ucn09ZTtyZXR1cm4gbi50cmltKCk/QS5qc3gocTQse2FsdFRleHQ6bixhc0NoaWxkOiEwLGNoaWxkcmVuOkEuanN4KGxPLHsuLi5yLHJlZjp0fSl9KTooY29uc29sZS5lcnJvcihgSW52YWxpZCBwcm9wIFxgYWx0VGV4dFxgIHN1cHBsaWVkIHRvIFxgJHskNH1cYC4gRXhwZWN0ZWQgbm9uLWVtcHR5IFxgc3RyaW5nXGAuYCksbnVsbCl9KTtCNC5kaXNwbGF5TmFtZT0kNDt2YXIgVjQ9IlRvYXN0Q2xvc2UiLGxPPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVUb2FzdDpuLC4uLnJ9PWUsaT1INyhWNCxuKTtyZXR1cm4gQS5qc3gocTQse2FzQ2hpbGQ6ITAsY2hpbGRyZW46QS5qc3goUWUuYnV0dG9uLHt0eXBlOiJidXR0b24iLC4uLnIscmVmOnQsb25DbGljazp6ZShlLm9uQ2xpY2ssaS5vbkNsb3NlKX0pfSl9KTtsTy5kaXNwbGF5TmFtZT1WNDt2YXIgcTQ9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRvYXN0Om4sYWx0VGV4dDpyLC4uLml9PWU7cmV0dXJuIEEuanN4KFFlLmRpdix7ImRhdGEtcmFkaXgtdG9hc3QtYW5ub3VuY2UtZXhjbHVkZSI6IiIsImRhdGEtcmFkaXgtdG9hc3QtYW5ub3VuY2UtYWx0IjpyfHx2b2lkIDAsLi4uaSxyZWY6dH0pfSk7ZnVuY3Rpb24gVTQoZSl7Y29uc3QgdD1bXTtyZXR1cm4gQXJyYXkuZnJvbShlLmNoaWxkTm9kZXMpLmZvckVhY2gocj0+e2lmKHIubm9kZVR5cGU9PT1yLlRFWFRfTk9ERSYmci50ZXh0Q29udGVudCYmdC5wdXNoKHIudGV4dENvbnRlbnQpLFo3KHIpKXtjb25zdCBpPXIuYXJpYUhpZGRlbnx8ci5oaWRkZW58fHIuc3R5bGUuZGlzcGxheT09PSJub25lIixvPXIuZGF0YXNldC5yYWRpeFRvYXN0QW5ub3VuY2VFeGNsdWRlPT09IiI7aWYoIWkpaWYobyl7Y29uc3Qgcz1yLmRhdGFzZXQucmFkaXhUb2FzdEFubm91bmNlQWx0O3MmJnQucHVzaChzKX1lbHNlIHQucHVzaCguLi5VNChyKSl9fSksdH1mdW5jdGlvbiBpcChlLHQsbix7ZGlzY3JldGU6cn0pe2NvbnN0IGk9bi5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmaS5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHI/VDQoaSxvKTppLmRpc3BhdGNoRXZlbnQobyl9dmFyIERNPShlLHQsbj0wKT0+e2NvbnN0IHI9TWF0aC5hYnMoZS54KSxpPU1hdGguYWJzKGUueSksbz1yPmk7cmV0dXJuIHQ9PT0ibGVmdCJ8fHQ9PT0icmlnaHQiP28mJnI+bjohbyYmaT5ufTtmdW5jdGlvbiBYNyhlPSgpPT57fSl7Y29uc3QgdD1hcihlKTtnbigoKT0+e2xldCBuPTAscj0wO3JldHVybiBuPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnI9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0KSksKCk9Pnt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUobiksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHIpfX0sW3RdKX1mdW5jdGlvbiBaNyhlKXtyZXR1cm4gZS5ub2RlVHlwZT09PWUuRUxFTUVOVF9OT0RFfWZ1bmN0aW9uIFE3KGUpe2NvbnN0IHQ9W10sbj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGUsTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQse2FjY2VwdE5vZGU6cj0+e2NvbnN0IGk9ci50YWdOYW1lPT09IklOUFVUIiYmci50eXBlPT09ImhpZGRlbiI7cmV0dXJuIHIuZGlzYWJsZWR8fHIuaGlkZGVufHxpP05vZGVGaWx0ZXIuRklMVEVSX1NLSVA6ci50YWJJbmRleD49MD9Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ6Tm9kZUZpbHRlci5GSUxURVJfU0tJUH19KTtmb3IoO24ubmV4dE5vZGUoKTspdC5wdXNoKG4uY3VycmVudE5vZGUpO3JldHVybiB0fWZ1bmN0aW9uIFliKGUpe2NvbnN0IHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyZXR1cm4gZS5zb21lKG49Pm49PT10PyEwOihuLmZvY3VzKCksZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXQpKX12YXIgSjc9TTQsejQ9TjQsRjQ9RDQsSDQ9TDQsRzQ9STQsSzQ9QjQsVzQ9bE87ZnVuY3Rpb24gWTQoZSl7dmFyIHQsbixyPSIiO2lmKHR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJudW1iZXIiKXIrPWU7ZWxzZSBpZih0eXBlb2YgZT09Im9iamVjdCIpaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIGk9ZS5sZW5ndGg7Zm9yKHQ9MDt0PGk7dCsrKWVbdF0mJihuPVk0KGVbdF0pKSYmKHImJihyKz0iICIpLHIrPW4pfWVsc2UgZm9yKG4gaW4gZSllW25dJiYociYmKHIrPSIgIikscis9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gV2UoKXtmb3IodmFyIGUsdCxuPTAscj0iIixpPWFyZ3VtZW50cy5sZW5ndGg7bjxpO24rKykoZT1hcmd1bWVudHNbbl0pJiYodD1ZNChlKSkmJihyJiYocis9IiAiKSxyKz10KTtyZXR1cm4gcn1jb25zdCBlRz0oZSx0KT0+e2NvbnN0IG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyluW3JdPWVbcl07Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspbltlLmxlbmd0aCtyXT10W3JdO3JldHVybiBufSx0Rz0oZSx0KT0+KHtjbGFzc0dyb3VwSWQ6ZSx2YWxpZGF0b3I6dH0pLFg0PShlPW5ldyBNYXAsdD1udWxsLG4pPT4oe25leHRQYXJ0OmUsdmFsaWRhdG9yczp0LGNsYXNzR3JvdXBJZDpufSksSnA9Ii0iLExNPVtdLG5HPSJhcmJpdHJhcnkuLiIsckc9ZT0+e2NvbnN0IHQ9YUcoZSkse2NvbmZsaWN0aW5nQ2xhc3NHcm91cHM6bixjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6cn09ZTtyZXR1cm57Z2V0Q2xhc3NHcm91cElkOnM9PntpZihzLnN0YXJ0c1dpdGgoIlsiKSYmcy5lbmRzV2l0aCgiXSIpKXJldHVybiBpRyhzKTtjb25zdCB1PXMuc3BsaXQoSnApLGY9dVswXT09PSIiJiZ1Lmxlbmd0aD4xPzE6MDtyZXR1cm4gWjQodSxmLHQpfSxnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6KHMsdSk9PntpZih1KXtjb25zdCBmPXJbc10sZD1uW3NdO3JldHVybiBmP2Q/ZUcoZCxmKTpmOmR8fExNfXJldHVybiBuW3NdfHxMTX19fSxaND0oZSx0LG4pPT57aWYoZS5sZW5ndGgtdD09PTApcmV0dXJuIG4uY2xhc3NHcm91cElkO2NvbnN0IGk9ZVt0XSxvPW4ubmV4dFBhcnQuZ2V0KGkpO2lmKG8pe2NvbnN0IGQ9WjQoZSx0KzEsbyk7aWYoZClyZXR1cm4gZH1jb25zdCBzPW4udmFsaWRhdG9ycztpZihzPT09bnVsbClyZXR1cm47Y29uc3QgdT10PT09MD9lLmpvaW4oSnApOmUuc2xpY2UodCkuam9pbihKcCksZj1zLmxlbmd0aDtmb3IobGV0IGQ9MDtkPGY7ZCsrKXtjb25zdCBwPXNbZF07aWYocC52YWxpZGF0b3IodSkpcmV0dXJuIHAuY2xhc3NHcm91cElkfX0saUc9ZT0+ZS5zbGljZSgxLC0xKS5pbmRleE9mKCI6Iik9PT0tMT92b2lkIDA6KCgpPT57Y29uc3QgdD1lLnNsaWNlKDEsLTEpLG49dC5pbmRleE9mKCI6Iikscj10LnNsaWNlKDAsbik7cmV0dXJuIHI/bkcrcjp2b2lkIDB9KSgpLGFHPWU9Pntjb25zdHt0aGVtZTp0LGNsYXNzR3JvdXBzOm59PWU7cmV0dXJuIG9HKG4sdCl9LG9HPShlLHQpPT57Y29uc3Qgbj1YNCgpO2Zvcihjb25zdCByIGluIGUpe2NvbnN0IGk9ZVtyXTt1TyhpLG4scix0KX1yZXR1cm4gbn0sdU89KGUsdCxuLHIpPT57Y29uc3QgaT1lLmxlbmd0aDtmb3IobGV0IG89MDtvPGk7bysrKXtjb25zdCBzPWVbb107c0cocyx0LG4scil9fSxzRz0oZSx0LG4scik9PntpZih0eXBlb2YgZT09InN0cmluZyIpe2xHKGUsdCxuKTtyZXR1cm59aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpe3VHKGUsdCxuLHIpO3JldHVybn1jRyhlLHQsbixyKX0sbEc9KGUsdCxuKT0+e2NvbnN0IHI9ZT09PSIiP3Q6UTQodCxlKTtyLmNsYXNzR3JvdXBJZD1ufSx1Rz0oZSx0LG4scik9PntpZihmRyhlKSl7dU8oZShyKSx0LG4scik7cmV0dXJufXQudmFsaWRhdG9ycz09PW51bGwmJih0LnZhbGlkYXRvcnM9W10pLHQudmFsaWRhdG9ycy5wdXNoKHRHKG4sZSkpfSxjRz0oZSx0LG4scik9Pntjb25zdCBpPU9iamVjdC5lbnRyaWVzKGUpLG89aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxvO3MrKyl7Y29uc3RbdSxmXT1pW3NdO3VPKGYsUTQodCx1KSxuLHIpfX0sUTQ9KGUsdCk9PntsZXQgbj1lO2NvbnN0IHI9dC5zcGxpdChKcCksaT1yLmxlbmd0aDtmb3IobGV0IG89MDtvPGk7bysrKXtjb25zdCBzPXJbb107bGV0IHU9bi5uZXh0UGFydC5nZXQocyk7dXx8KHU9WDQoKSxuLm5leHRQYXJ0LnNldChzLHUpKSxuPXV9cmV0dXJuIG59LGZHPWU9PiJpc1RoZW1lR2V0dGVyImluIGUmJmUuaXNUaGVtZUdldHRlcj09PSEwLGRHPWU9PntpZihlPDEpcmV0dXJue2dldDooKT0+e30sc2V0OigpPT57fX07bGV0IHQ9MCxuPU9iamVjdC5jcmVhdGUobnVsbCkscj1PYmplY3QuY3JlYXRlKG51bGwpO2NvbnN0IGk9KG8scyk9PntuW29dPXMsdCsrLHQ+ZSYmKHQ9MCxyPW4sbj1PYmplY3QuY3JlYXRlKG51bGwpKX07cmV0dXJue2dldChvKXtsZXQgcz1uW29dO2lmKHMhPT12b2lkIDApcmV0dXJuIHM7aWYoKHM9cltvXSkhPT12b2lkIDApcmV0dXJuIGkobyxzKSxzfSxzZXQobyxzKXtvIGluIG4/bltvXT1zOmkobyxzKX19fSx6Uz0iISIsSU09IjoiLGhHPVtdLCRNPShlLHQsbixyLGkpPT4oe21vZGlmaWVyczplLGhhc0ltcG9ydGFudE1vZGlmaWVyOnQsYmFzZUNsYXNzTmFtZTpuLG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246cixpc0V4dGVybmFsOml9KSxwRz1lPT57Y29uc3R7cHJlZml4OnQsZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWU6bn09ZTtsZXQgcj1pPT57Y29uc3Qgbz1bXTtsZXQgcz0wLHU9MCxmPTAsZDtjb25zdCBwPWkubGVuZ3RoO2ZvcihsZXQgYj0wO2I8cDtiKyspe2NvbnN0IGc9aVtiXTtpZihzPT09MCYmdT09PTApe2lmKGc9PT1JTSl7by5wdXNoKGkuc2xpY2UoZixiKSksZj1iKzE7Y29udGludWV9aWYoZz09PSIvIil7ZD1iO2NvbnRpbnVlfX1nPT09IlsiP3MrKzpnPT09Il0iP3MtLTpnPT09IigiP3UrKzpnPT09IikiJiZ1LS19Y29uc3QgbT1vLmxlbmd0aD09PTA/aTppLnNsaWNlKGYpO2xldCB5PW0seD0hMTttLmVuZHNXaXRoKHpTKT8oeT1tLnNsaWNlKDAsLTEpLHg9ITApOm0uc3RhcnRzV2l0aCh6UykmJih5PW0uc2xpY2UoMSkseD0hMCk7Y29uc3Qgdz1kJiZkPmY/ZC1mOnZvaWQgMDtyZXR1cm4gJE0obyx4LHksdyl9O2lmKHQpe2NvbnN0IGk9dCtJTSxvPXI7cj1zPT5zLnN0YXJ0c1dpdGgoaSk/byhzLnNsaWNlKGkubGVuZ3RoKSk6JE0oaEcsITEscyx2b2lkIDAsITApfWlmKG4pe2NvbnN0IGk9cjtyPW89Pm4oe2NsYXNzTmFtZTpvLHBhcnNlQ2xhc3NOYW1lOml9KX1yZXR1cm4gcn0sbUc9ZT0+e2NvbnN0IHQ9bmV3IE1hcDtyZXR1cm4gZS5vcmRlclNlbnNpdGl2ZU1vZGlmaWVycy5mb3JFYWNoKChuLHIpPT57dC5zZXQobiwxZTYrcil9KSxuPT57Y29uc3Qgcj1bXTtsZXQgaT1bXTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3Qgcz1uW29dLHU9c1swXT09PSJbIixmPXQuaGFzKHMpO3V8fGY/KGkubGVuZ3RoPjAmJihpLnNvcnQoKSxyLnB1c2goLi4uaSksaT1bXSksci5wdXNoKHMpKTppLnB1c2gocyl9cmV0dXJuIGkubGVuZ3RoPjAmJihpLnNvcnQoKSxyLnB1c2goLi4uaSkpLHJ9fSx5Rz1lPT4oe2NhY2hlOmRHKGUuY2FjaGVTaXplKSxwYXJzZUNsYXNzTmFtZTpwRyhlKSxzb3J0TW9kaWZpZXJzOm1HKGUpLHBvc3RmaXhMb29rdXBDbGFzc0dyb3VwSWRzOnZHKGUpLC4uLnJHKGUpfSksdkc9ZT0+e2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxuPWUucG9zdGZpeExvb2t1cENsYXNzR3JvdXBzO2lmKG4pZm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspdFtuW3JdXT0hMDtyZXR1cm4gdH0sZ0c9L1xzKy8sYkc9KGUsdCk9Pntjb25zdHtwYXJzZUNsYXNzTmFtZTpuLGdldENsYXNzR3JvdXBJZDpyLGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkczppLHNvcnRNb2RpZmllcnM6byxwb3N0Zml4TG9va3VwQ2xhc3NHcm91cElkczpzfT10LHU9W10sZj1lLnRyaW0oKS5zcGxpdChnRyk7bGV0IGQ9IiI7Zm9yKGxldCBwPWYubGVuZ3RoLTE7cD49MDtwLT0xKXtjb25zdCBtPWZbcF0se2lzRXh0ZXJuYWw6eSxtb2RpZmllcnM6eCxoYXNJbXBvcnRhbnRNb2RpZmllcjp3LGJhc2VDbGFzc05hbWU6YixtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uOmd9PW4obSk7aWYoeSl7ZD1tKyhkLmxlbmd0aD4wPyIgIitkOmQpO2NvbnRpbnVlfWxldCBfPSEhZyxPO2lmKF8pe2NvbnN0IE49Yi5zdWJzdHJpbmcoMCxnKTtPPXIoTik7Y29uc3QgUj1PJiZzW09dP3IoYik6dm9pZCAwO1ImJlIhPT1PJiYoTz1SLF89ITEpfWVsc2UgTz1yKGIpO2lmKCFPKXtpZighXyl7ZD1tKyhkLmxlbmd0aD4wPyIgIitkOmQpO2NvbnRpbnVlfWlmKE89cihiKSwhTyl7ZD1tKyhkLmxlbmd0aD4wPyIgIitkOmQpO2NvbnRpbnVlfV89ITF9Y29uc3QgRT14Lmxlbmd0aD09PTA/IiI6eC5sZW5ndGg9PT0xP3hbMF06byh4KS5qb2luKCI6Iiksaj13P0UrelM6RSxUPWorTztpZih1LmluZGV4T2YoVCk+LTEpY29udGludWU7dS5wdXNoKFQpO2NvbnN0IFA9aShPLF8pO2ZvcihsZXQgTj0wO048UC5sZW5ndGg7KytOKXtjb25zdCBSPVBbTl07dS5wdXNoKGorUil9ZD1tKyhkLmxlbmd0aD4wPyIgIitkOmQpfXJldHVybiBkfSx4Rz0oLi4uZSk9PntsZXQgdD0wLG4scixpPSIiO2Zvcig7dDxlLmxlbmd0aDspKG49ZVt0KytdKSYmKHI9SjQobikpJiYoaSYmKGkrPSIgIiksaSs9cik7cmV0dXJuIGl9LEo0PWU9PntpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7bGV0IHQsbj0iIjtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYodD1KNChlW3JdKSkmJihuJiYobis9IiAiKSxuKz10KTtyZXR1cm4gbn0sd0c9KGUsLi4udCk9PntsZXQgbixyLGksbztjb25zdCBzPWY9Pntjb25zdCBkPXQucmVkdWNlKChwLG0pPT5tKHApLGUoKSk7cmV0dXJuIG49eUcoZCkscj1uLmNhY2hlLmdldCxpPW4uY2FjaGUuc2V0LG89dSx1KGYpfSx1PWY9Pntjb25zdCBkPXIoZik7aWYoZClyZXR1cm4gZDtjb25zdCBwPWJHKGYsbik7cmV0dXJuIGkoZixwKSxwfTtyZXR1cm4gbz1zLCguLi5mKT0+byh4RyguLi5mKSl9LFNHPVtdLGZuPWU9Pntjb25zdCB0PW49Pm5bZV18fFNHO3JldHVybiB0LmlzVGhlbWVHZXR0ZXI9ITAsdH0sZTM9L15cWyg/Oihcd1tcdy1dKik6KT8oLispXF0kL2ksdDM9L15cKCg/Oihcd1tcdy1dKik6KT8oLispXCkkL2ksQUc9L15cZCsoPzpcLlxkKyk/XC9cZCsoPzpcLlxkKyk/JC8sX0c9L14oXGQrKFwuXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLyxPRz0vXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXCguK1wpfF4wJC8sVEc9L14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpfGNvbG9yLW1peClcKC4rXCkkLyxFRz0vXihpbnNldF8pPy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApXy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApLyxDRz0vXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVwoLitcKSQvLEthPWU9PkFHLnRlc3QoZSksZXQ9ZT0+ISFlJiYhTnVtYmVyLmlzTmFOKE51bWJlcihlKSkseWk9ZT0+ISFlJiZOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihlKSksWGI9ZT0+ZS5lbmRzV2l0aCgiJSIpJiZldChlLnNsaWNlKDAsLTEpKSxKaT1lPT5fRy50ZXN0KGUpLG4zPSgpPT4hMCxqRz1lPT5PRy50ZXN0KGUpJiYhVEcudGVzdChlKSxjTz0oKT0+ITEsUEc9ZT0+RUcudGVzdChlKSxNRz1lPT5DRy50ZXN0KGUpLFJHPWU9PiFqZShlKSYmIVBlKGUpLE5HPWU9PmUuc3RhcnRzV2l0aCgiQGNvbnRhaW5lciIpJiYoZVsxMF09PT0iLyImJmVbMTFdIT09dm9pZCAwfHxlWzExXT09PSJzIiYmZVsxNl0hPT12b2lkIDAmJmUuc3RhcnRzV2l0aCgiLXNpemUvIiwxMCl8fGVbMTFdPT09Im4iJiZlWzE4XSE9PXZvaWQgMCYmZS5zdGFydHNXaXRoKCItbm9ybWFsLyIsMTApKSxrRz1lPT55byhlLGEzLGNPKSxqZT1lPT5lMy50ZXN0KGUpLEdvPWU9PnlvKGUsbzMsakcpLEJNPWU9PnlvKGUsVUcsZXQpLERHPWU9PnlvKGUsbDMsbjMpLExHPWU9PnlvKGUsczMsY08pLFZNPWU9PnlvKGUscjMsY08pLElHPWU9PnlvKGUsaTMsTUcpLGFwPWU9PnlvKGUsdTMsUEcpLFBlPWU9PnQzLnRlc3QoZSksR2M9ZT0+VHMoZSxvMyksJEc9ZT0+VHMoZSxzMykscU09ZT0+VHMoZSxyMyksQkc9ZT0+VHMoZSxhMyksVkc9ZT0+VHMoZSxpMyksb3A9ZT0+VHMoZSx1MywhMCkscUc9ZT0+VHMoZSxsMywhMCkseW89KGUsdCxuKT0+e2NvbnN0IHI9ZTMuZXhlYyhlKTtyZXR1cm4gcj9yWzFdP3QoclsxXSk6bihyWzJdKTohMX0sVHM9KGUsdCxuPSExKT0+e2NvbnN0IHI9dDMuZXhlYyhlKTtyZXR1cm4gcj9yWzFdP3QoclsxXSk6bjohMX0scjM9ZT0+ZT09PSJwb3NpdGlvbiJ8fGU9PT0icGVyY2VudGFnZSIsaTM9ZT0+ZT09PSJpbWFnZSJ8fGU9PT0idXJsIixhMz1lPT5lPT09Imxlbmd0aCJ8fGU9PT0ic2l6ZSJ8fGU9PT0iYmctc2l6ZSIsbzM9ZT0+ZT09PSJsZW5ndGgiLFVHPWU9PmU9PT0ibnVtYmVyIixzMz1lPT5lPT09ImZhbWlseS1uYW1lIixsMz1lPT5lPT09Im51bWJlciJ8fGU9PT0id2VpZ2h0Iix1Mz1lPT5lPT09InNoYWRvdyIsekc9KCk9Pntjb25zdCBlPWZuKCJjb2xvciIpLHQ9Zm4oImZvbnQiKSxuPWZuKCJ0ZXh0Iikscj1mbigiZm9udC13ZWlnaHQiKSxpPWZuKCJ0cmFja2luZyIpLG89Zm4oImxlYWRpbmciKSxzPWZuKCJicmVha3BvaW50IiksdT1mbigiY29udGFpbmVyIiksZj1mbigic3BhY2luZyIpLGQ9Zm4oInJhZGl1cyIpLHA9Zm4oInNoYWRvdyIpLG09Zm4oImluc2V0LXNoYWRvdyIpLHk9Zm4oInRleHQtc2hhZG93IikseD1mbigiZHJvcC1zaGFkb3ciKSx3PWZuKCJibHVyIiksYj1mbigicGVyc3BlY3RpdmUiKSxnPWZuKCJhc3BlY3QiKSxfPWZuKCJlYXNlIiksTz1mbigiYW5pbWF0ZSIpLEU9KCk9PlsiYXV0byIsImF2b2lkIiwiYWxsIiwiYXZvaWQtcGFnZSIsInBhZ2UiLCJsZWZ0IiwicmlnaHQiLCJjb2x1bW4iXSxqPSgpPT5bImNlbnRlciIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsInRvcC1sZWZ0IiwibGVmdC10b3AiLCJ0b3AtcmlnaHQiLCJyaWdodC10b3AiLCJib3R0b20tcmlnaHQiLCJyaWdodC1ib3R0b20iLCJib3R0b20tbGVmdCIsImxlZnQtYm90dG9tIl0sVD0oKT0+Wy4uLmooKSxQZSxqZV0sUD0oKT0+WyJhdXRvIiwiaGlkZGVuIiwiY2xpcCIsInZpc2libGUiLCJzY3JvbGwiXSxOPSgpPT5bImF1dG8iLCJjb250YWluIiwibm9uZSJdLFI9KCk9PltQZSxqZSxmXSxJPSgpPT5bS2EsImZ1bGwiLCJhdXRvIiwuLi5SKCldLFY9KCk9Plt5aSwibm9uZSIsInN1YmdyaWQiLFBlLGplXSxCPSgpPT5bImF1dG8iLHtzcGFuOlsiZnVsbCIseWksUGUsamVdfSx5aSxQZSxqZV0sJD0oKT0+W3lpLCJhdXRvIixQZSxqZV0sej0oKT0+WyJhdXRvIiwibWluIiwibWF4IiwiZnIiLFBlLGplXSxVPSgpPT5bInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwiYmV0d2VlbiIsImFyb3VuZCIsImV2ZW5seSIsInN0cmV0Y2giLCJiYXNlbGluZSIsImNlbnRlci1zYWZlIiwiZW5kLXNhZmUiXSxLPSgpPT5bInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwic3RyZXRjaCIsImNlbnRlci1zYWZlIiwiZW5kLXNhZmUiXSxMPSgpPT5bImF1dG8iLC4uLlIoKV0sVz0oKT0+W0thLCJhdXRvIiwiZnVsbCIsImR2dyIsImR2aCIsImx2dyIsImx2aCIsInN2dyIsInN2aCIsIm1pbiIsIm1heCIsImZpdCIsLi4uUigpXSxIPSgpPT5bS2EsInNjcmVlbiIsImZ1bGwiLCJkdnciLCJsdnciLCJzdnciLCJtaW4iLCJtYXgiLCJmaXQiLC4uLlIoKV0sZWU9KCk9PltLYSwic2NyZWVuIiwiZnVsbCIsImxoIiwiZHZoIiwibHZoIiwic3ZoIiwibWluIiwibWF4IiwiZml0IiwuLi5SKCldLGs9KCk9PltlLFBlLGplXSxaPSgpPT5bLi4uaigpLHFNLFZNLHtwb3NpdGlvbjpbUGUsamVdfV0sdGU9KCk9Plsibm8tcmVwZWF0Iix7cmVwZWF0OlsiIiwieCIsInkiLCJzcGFjZSIsInJvdW5kIl19XSxvZT0oKT0+WyJhdXRvIiwiY292ZXIiLCJjb250YWluIixCRyxrRyx7c2l6ZTpbUGUsamVdfV0sbWU9KCk9PltYYixHYyxHb10sYmU9KCk9PlsiIiwibm9uZSIsImZ1bGwiLGQsUGUsamVdLGdlPSgpPT5bIiIsZXQsR2MsR29dLF9lPSgpPT5bInNvbGlkIiwiZGFzaGVkIiwiZG90dGVkIiwiZG91YmxlIl0sVGU9KCk9Plsibm9ybWFsIiwibXVsdGlwbHkiLCJzY3JlZW4iLCJvdmVybGF5IiwiZGFya2VuIiwibGlnaHRlbiIsImNvbG9yLWRvZGdlIiwiY29sb3ItYnVybiIsImhhcmQtbGlnaHQiLCJzb2Z0LWxpZ2h0IiwiZGlmZmVyZW5jZSIsImV4Y2x1c2lvbiIsImh1ZSIsInNhdHVyYXRpb24iLCJjb2xvciIsImx1bWlub3NpdHkiXSxjZT0oKT0+W2V0LFhiLHFNLFZNXSxBZT0oKT0+WyIiLCJub25lIix3LFBlLGplXSxTZT0oKT0+WyJub25lIixldCxQZSxqZV0sc2U9KCk9Plsibm9uZSIsZXQsUGUsamVdLEtlPSgpPT5bZXQsUGUsamVdLExlPSgpPT5bS2EsImZ1bGwiLC4uLlIoKV07cmV0dXJue2NhY2hlU2l6ZTo1MDAsdGhlbWU6e2FuaW1hdGU6WyJzcGluIiwicGluZyIsInB1bHNlIiwiYm91bmNlIl0sYXNwZWN0OlsidmlkZW8iXSxibHVyOltKaV0sYnJlYWtwb2ludDpbSmldLGNvbG9yOltuM10sY29udGFpbmVyOltKaV0sImRyb3Atc2hhZG93IjpbSmldLGVhc2U6WyJpbiIsIm91dCIsImluLW91dCJdLGZvbnQ6W1JHXSwiZm9udC13ZWlnaHQiOlsidGhpbiIsImV4dHJhbGlnaHQiLCJsaWdodCIsIm5vcm1hbCIsIm1lZGl1bSIsInNlbWlib2xkIiwiYm9sZCIsImV4dHJhYm9sZCIsImJsYWNrIl0sImluc2V0LXNoYWRvdyI6W0ppXSxsZWFkaW5nOlsibm9uZSIsInRpZ2h0Iiwic251ZyIsIm5vcm1hbCIsInJlbGF4ZWQiLCJsb29zZSJdLHBlcnNwZWN0aXZlOlsiZHJhbWF0aWMiLCJuZWFyIiwibm9ybWFsIiwibWlkcmFuZ2UiLCJkaXN0YW50Iiwibm9uZSJdLHJhZGl1czpbSmldLHNoYWRvdzpbSmldLHNwYWNpbmc6WyJweCIsZXRdLHRleHQ6W0ppXSwidGV4dC1zaGFkb3ciOltKaV0sdHJhY2tpbmc6WyJ0aWdodGVyIiwidGlnaHQiLCJub3JtYWwiLCJ3aWRlIiwid2lkZXIiLCJ3aWRlc3QiXX0sY2xhc3NHcm91cHM6e2FzcGVjdDpbe2FzcGVjdDpbImF1dG8iLCJzcXVhcmUiLEthLGplLFBlLGddfV0sY29udGFpbmVyOlsiY29udGFpbmVyIl0sImNvbnRhaW5lci10eXBlIjpbeyJAY29udGFpbmVyIjpbIiIsIm5vcm1hbCIsInNpemUiLFBlLGplXX1dLCJjb250YWluZXItbmFtZWQiOltOR10sY29sdW1uczpbe2NvbHVtbnM6W2V0LGplLFBlLHVdfV0sImJyZWFrLWFmdGVyIjpbeyJicmVhay1hZnRlciI6RSgpfV0sImJyZWFrLWJlZm9yZSI6W3siYnJlYWstYmVmb3JlIjpFKCl9XSwiYnJlYWstaW5zaWRlIjpbeyJicmVhay1pbnNpZGUiOlsiYXV0byIsImF2b2lkIiwiYXZvaWQtcGFnZSIsImF2b2lkLWNvbHVtbiJdfV0sImJveC1kZWNvcmF0aW9uIjpbeyJib3gtZGVjb3JhdGlvbiI6WyJzbGljZSIsImNsb25lIl19XSxib3g6W3tib3g6WyJib3JkZXIiLCJjb250ZW50Il19XSxkaXNwbGF5OlsiYmxvY2siLCJpbmxpbmUtYmxvY2siLCJpbmxpbmUiLCJmbGV4IiwiaW5saW5lLWZsZXgiLCJ0YWJsZSIsImlubGluZS10YWJsZSIsInRhYmxlLWNhcHRpb24iLCJ0YWJsZS1jZWxsIiwidGFibGUtY29sdW1uIiwidGFibGUtY29sdW1uLWdyb3VwIiwidGFibGUtZm9vdGVyLWdyb3VwIiwidGFibGUtaGVhZGVyLWdyb3VwIiwidGFibGUtcm93LWdyb3VwIiwidGFibGUtcm93IiwiZmxvdy1yb290IiwiZ3JpZCIsImlubGluZS1ncmlkIiwiY29udGVudHMiLCJsaXN0LWl0ZW0iLCJoaWRkZW4iXSxzcjpbInNyLW9ubHkiLCJub3Qtc3Itb25seSJdLGZsb2F0Olt7ZmxvYXQ6WyJyaWdodCIsImxlZnQiLCJub25lIiwic3RhcnQiLCJlbmQiXX1dLGNsZWFyOlt7Y2xlYXI6WyJsZWZ0IiwicmlnaHQiLCJib3RoIiwibm9uZSIsInN0YXJ0IiwiZW5kIl19XSxpc29sYXRpb246WyJpc29sYXRlIiwiaXNvbGF0aW9uLWF1dG8iXSwib2JqZWN0LWZpdCI6W3tvYmplY3Q6WyJjb250YWluIiwiY292ZXIiLCJmaWxsIiwibm9uZSIsInNjYWxlLWRvd24iXX1dLCJvYmplY3QtcG9zaXRpb24iOlt7b2JqZWN0OlQoKX1dLG92ZXJmbG93Olt7b3ZlcmZsb3c6UCgpfV0sIm92ZXJmbG93LXgiOlt7Im92ZXJmbG93LXgiOlAoKX1dLCJvdmVyZmxvdy15IjpbeyJvdmVyZmxvdy15IjpQKCl9XSxvdmVyc2Nyb2xsOlt7b3ZlcnNjcm9sbDpOKCl9XSwib3ZlcnNjcm9sbC14IjpbeyJvdmVyc2Nyb2xsLXgiOk4oKX1dLCJvdmVyc2Nyb2xsLXkiOlt7Im92ZXJzY3JvbGwteSI6TigpfV0scG9zaXRpb246WyJzdGF0aWMiLCJmaXhlZCIsImFic29sdXRlIiwicmVsYXRpdmUiLCJzdGlja3kiXSxpbnNldDpbe2luc2V0OkkoKX1dLCJpbnNldC14IjpbeyJpbnNldC14IjpJKCl9XSwiaW5zZXQteSI6W3siaW5zZXQteSI6SSgpfV0sc3RhcnQ6W3siaW5zZXQtcyI6SSgpLHN0YXJ0OkkoKX1dLGVuZDpbeyJpbnNldC1lIjpJKCksZW5kOkkoKX1dLCJpbnNldC1icyI6W3siaW5zZXQtYnMiOkkoKX1dLCJpbnNldC1iZSI6W3siaW5zZXQtYmUiOkkoKX1dLHRvcDpbe3RvcDpJKCl9XSxyaWdodDpbe3JpZ2h0OkkoKX1dLGJvdHRvbTpbe2JvdHRvbTpJKCl9XSxsZWZ0Olt7bGVmdDpJKCl9XSx2aXNpYmlsaXR5OlsidmlzaWJsZSIsImludmlzaWJsZSIsImNvbGxhcHNlIl0sejpbe3o6W3lpLCJhdXRvIixQZSxqZV19XSxiYXNpczpbe2Jhc2lzOltLYSwiZnVsbCIsImF1dG8iLHUsLi4uUigpXX1dLCJmbGV4LWRpcmVjdGlvbiI6W3tmbGV4Olsicm93Iiwicm93LXJldmVyc2UiLCJjb2wiLCJjb2wtcmV2ZXJzZSJdfV0sImZsZXgtd3JhcCI6W3tmbGV4Olsibm93cmFwIiwid3JhcCIsIndyYXAtcmV2ZXJzZSJdfV0sZmxleDpbe2ZsZXg6W2V0LEthLCJhdXRvIiwiaW5pdGlhbCIsIm5vbmUiLGplXX1dLGdyb3c6W3tncm93OlsiIixldCxQZSxqZV19XSxzaHJpbms6W3tzaHJpbms6WyIiLGV0LFBlLGplXX1dLG9yZGVyOlt7b3JkZXI6W3lpLCJmaXJzdCIsImxhc3QiLCJub25lIixQZSxqZV19XSwiZ3JpZC1jb2xzIjpbeyJncmlkLWNvbHMiOlYoKX1dLCJjb2wtc3RhcnQtZW5kIjpbe2NvbDpCKCl9XSwiY29sLXN0YXJ0IjpbeyJjb2wtc3RhcnQiOiQoKX1dLCJjb2wtZW5kIjpbeyJjb2wtZW5kIjokKCl9XSwiZ3JpZC1yb3dzIjpbeyJncmlkLXJvd3MiOlYoKX1dLCJyb3ctc3RhcnQtZW5kIjpbe3JvdzpCKCl9XSwicm93LXN0YXJ0IjpbeyJyb3ctc3RhcnQiOiQoKX1dLCJyb3ctZW5kIjpbeyJyb3ctZW5kIjokKCl9XSwiZ3JpZC1mbG93IjpbeyJncmlkLWZsb3ciOlsicm93IiwiY29sIiwiZGVuc2UiLCJyb3ctZGVuc2UiLCJjb2wtZGVuc2UiXX1dLCJhdXRvLWNvbHMiOlt7ImF1dG8tY29scyI6eigpfV0sImF1dG8tcm93cyI6W3siYXV0by1yb3dzIjp6KCl9XSxnYXA6W3tnYXA6UigpfV0sImdhcC14IjpbeyJnYXAteCI6UigpfV0sImdhcC15IjpbeyJnYXAteSI6UigpfV0sImp1c3RpZnktY29udGVudCI6W3tqdXN0aWZ5OlsuLi5VKCksIm5vcm1hbCJdfV0sImp1c3RpZnktaXRlbXMiOlt7Imp1c3RpZnktaXRlbXMiOlsuLi5LKCksIm5vcm1hbCJdfV0sImp1c3RpZnktc2VsZiI6W3sianVzdGlmeS1zZWxmIjpbImF1dG8iLC4uLksoKV19XSwiYWxpZ24tY29udGVudCI6W3tjb250ZW50Olsibm9ybWFsIiwuLi5VKCldfV0sImFsaWduLWl0ZW1zIjpbe2l0ZW1zOlsuLi5LKCkse2Jhc2VsaW5lOlsiIiwibGFzdCJdfV19XSwiYWxpZ24tc2VsZiI6W3tzZWxmOlsiYXV0byIsLi4uSygpLHtiYXNlbGluZTpbIiIsImxhc3QiXX1dfV0sInBsYWNlLWNvbnRlbnQiOlt7InBsYWNlLWNvbnRlbnQiOlUoKX1dLCJwbGFjZS1pdGVtcyI6W3sicGxhY2UtaXRlbXMiOlsuLi5LKCksImJhc2VsaW5lIl19XSwicGxhY2Utc2VsZiI6W3sicGxhY2Utc2VsZiI6WyJhdXRvIiwuLi5LKCldfV0scDpbe3A6UigpfV0scHg6W3tweDpSKCl9XSxweTpbe3B5OlIoKX1dLHBzOlt7cHM6UigpfV0scGU6W3twZTpSKCl9XSxwYnM6W3twYnM6UigpfV0scGJlOlt7cGJlOlIoKX1dLHB0Olt7cHQ6UigpfV0scHI6W3twcjpSKCl9XSxwYjpbe3BiOlIoKX1dLHBsOlt7cGw6UigpfV0sbTpbe206TCgpfV0sbXg6W3tteDpMKCl9XSxteTpbe215OkwoKX1dLG1zOlt7bXM6TCgpfV0sbWU6W3ttZTpMKCl9XSxtYnM6W3ttYnM6TCgpfV0sbWJlOlt7bWJlOkwoKX1dLG10Olt7bXQ6TCgpfV0sbXI6W3ttcjpMKCl9XSxtYjpbe21iOkwoKX1dLG1sOlt7bWw6TCgpfV0sInNwYWNlLXgiOlt7InNwYWNlLXgiOlIoKX1dLCJzcGFjZS14LXJldmVyc2UiOlsic3BhY2UteC1yZXZlcnNlIl0sInNwYWNlLXkiOlt7InNwYWNlLXkiOlIoKX1dLCJzcGFjZS15LXJldmVyc2UiOlsic3BhY2UteS1yZXZlcnNlIl0sc2l6ZTpbe3NpemU6VygpfV0sImlubGluZS1zaXplIjpbe2lubGluZTpbImF1dG8iLC4uLkgoKV19XSwibWluLWlubGluZS1zaXplIjpbeyJtaW4taW5saW5lIjpbImF1dG8iLC4uLkgoKV19XSwibWF4LWlubGluZS1zaXplIjpbeyJtYXgtaW5saW5lIjpbIm5vbmUiLC4uLkgoKV19XSwiYmxvY2stc2l6ZSI6W3tibG9jazpbImF1dG8iLC4uLmVlKCldfV0sIm1pbi1ibG9jay1zaXplIjpbeyJtaW4tYmxvY2siOlsiYXV0byIsLi4uZWUoKV19XSwibWF4LWJsb2NrLXNpemUiOlt7Im1heC1ibG9jayI6WyJub25lIiwuLi5lZSgpXX1dLHc6W3t3Olt1LCJzY3JlZW4iLC4uLlcoKV19XSwibWluLXciOlt7Im1pbi13IjpbdSwic2NyZWVuIiwibm9uZSIsLi4uVygpXX1dLCJtYXgtdyI6W3sibWF4LXciOlt1LCJzY3JlZW4iLCJub25lIiwicHJvc2UiLHtzY3JlZW46W3NdfSwuLi5XKCldfV0saDpbe2g6WyJzY3JlZW4iLCJsaCIsLi4uVygpXX1dLCJtaW4taCI6W3sibWluLWgiOlsic2NyZWVuIiwibGgiLCJub25lIiwuLi5XKCldfV0sIm1heC1oIjpbeyJtYXgtaCI6WyJzY3JlZW4iLCJsaCIsLi4uVygpXX1dLCJmb250LXNpemUiOlt7dGV4dDpbImJhc2UiLG4sR2MsR29dfV0sImZvbnQtc21vb3RoaW5nIjpbImFudGlhbGlhc2VkIiwic3VicGl4ZWwtYW50aWFsaWFzZWQiXSwiZm9udC1zdHlsZSI6WyJpdGFsaWMiLCJub3QtaXRhbGljIl0sImZvbnQtd2VpZ2h0Ijpbe2ZvbnQ6W3IscUcsREddfV0sImZvbnQtc3RyZXRjaCI6W3siZm9udC1zdHJldGNoIjpbInVsdHJhLWNvbmRlbnNlZCIsImV4dHJhLWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWktY29uZGVuc2VkIiwibm9ybWFsIiwic2VtaS1leHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmEtZXhwYW5kZWQiLCJ1bHRyYS1leHBhbmRlZCIsWGIsamVdfV0sImZvbnQtZmFtaWx5Ijpbe2ZvbnQ6WyRHLExHLHRdfV0sImZvbnQtZmVhdHVyZXMiOlt7ImZvbnQtZmVhdHVyZXMiOltqZV19XSwiZnZuLW5vcm1hbCI6WyJub3JtYWwtbnVtcyJdLCJmdm4tb3JkaW5hbCI6WyJvcmRpbmFsIl0sImZ2bi1zbGFzaGVkLXplcm8iOlsic2xhc2hlZC16ZXJvIl0sImZ2bi1maWd1cmUiOlsibGluaW5nLW51bXMiLCJvbGRzdHlsZS1udW1zIl0sImZ2bi1zcGFjaW5nIjpbInByb3BvcnRpb25hbC1udW1zIiwidGFidWxhci1udW1zIl0sImZ2bi1mcmFjdGlvbiI6WyJkaWFnb25hbC1mcmFjdGlvbnMiLCJzdGFja2VkLWZyYWN0aW9ucyJdLHRyYWNraW5nOlt7dHJhY2tpbmc6W2ksUGUsamVdfV0sImxpbmUtY2xhbXAiOlt7ImxpbmUtY2xhbXAiOltldCwibm9uZSIsUGUsQk1dfV0sbGVhZGluZzpbe2xlYWRpbmc6W28sLi4uUigpXX1dLCJsaXN0LWltYWdlIjpbeyJsaXN0LWltYWdlIjpbIm5vbmUiLFBlLGplXX1dLCJsaXN0LXN0eWxlLXBvc2l0aW9uIjpbe2xpc3Q6WyJpbnNpZGUiLCJvdXRzaWRlIl19XSwibGlzdC1zdHlsZS10eXBlIjpbe2xpc3Q6WyJkaXNjIiwiZGVjaW1hbCIsIm5vbmUiLFBlLGplXX1dLCJ0ZXh0LWFsaWdubWVudCI6W3t0ZXh0OlsibGVmdCIsImNlbnRlciIsInJpZ2h0IiwianVzdGlmeSIsInN0YXJ0IiwiZW5kIl19XSwicGxhY2Vob2xkZXItY29sb3IiOlt7cGxhY2Vob2xkZXI6aygpfV0sInRleHQtY29sb3IiOlt7dGV4dDprKCl9XSwidGV4dC1kZWNvcmF0aW9uIjpbInVuZGVybGluZSIsIm92ZXJsaW5lIiwibGluZS10aHJvdWdoIiwibm8tdW5kZXJsaW5lIl0sInRleHQtZGVjb3JhdGlvbi1zdHlsZSI6W3tkZWNvcmF0aW9uOlsuLi5fZSgpLCJ3YXZ5Il19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltldCwiZnJvbS1mb250IiwiYXV0byIsUGUsR29dfV0sInRleHQtZGVjb3JhdGlvbi1jb2xvciI6W3tkZWNvcmF0aW9uOmsoKX1dLCJ1bmRlcmxpbmUtb2Zmc2V0IjpbeyJ1bmRlcmxpbmUtb2Zmc2V0IjpbZXQsImF1dG8iLFBlLGplXX1dLCJ0ZXh0LXRyYW5zZm9ybSI6WyJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwibm9ybWFsLWNhc2UiXSwidGV4dC1vdmVyZmxvdyI6WyJ0cnVuY2F0ZSIsInRleHQtZWxsaXBzaXMiLCJ0ZXh0LWNsaXAiXSwidGV4dC13cmFwIjpbe3RleHQ6WyJ3cmFwIiwibm93cmFwIiwiYmFsYW5jZSIsInByZXR0eSJdfV0saW5kZW50Olt7aW5kZW50OlIoKX1dLCJ0YWItc2l6ZSI6W3t0YWI6W3lpLFBlLGplXX1dLCJ2ZXJ0aWNhbC1hbGlnbiI6W3thbGlnbjpbImJhc2VsaW5lIiwidG9wIiwibWlkZGxlIiwiYm90dG9tIiwidGV4dC10b3AiLCJ0ZXh0LWJvdHRvbSIsInN1YiIsInN1cGVyIixQZSxqZV19XSx3aGl0ZXNwYWNlOlt7d2hpdGVzcGFjZTpbIm5vcm1hbCIsIm5vd3JhcCIsInByZSIsInByZS1saW5lIiwicHJlLXdyYXAiLCJicmVhay1zcGFjZXMiXX1dLGJyZWFrOlt7YnJlYWs6WyJub3JtYWwiLCJ3b3JkcyIsImFsbCIsImtlZXAiXX1dLHdyYXA6W3t3cmFwOlsiYnJlYWstd29yZCIsImFueXdoZXJlIiwibm9ybWFsIl19XSxoeXBoZW5zOlt7aHlwaGVuczpbIm5vbmUiLCJtYW51YWwiLCJhdXRvIl19XSxjb250ZW50Olt7Y29udGVudDpbIm5vbmUiLFBlLGplXX1dLCJiZy1hdHRhY2htZW50Ijpbe2JnOlsiZml4ZWQiLCJsb2NhbCIsInNjcm9sbCJdfV0sImJnLWNsaXAiOlt7ImJnLWNsaXAiOlsiYm9yZGVyIiwicGFkZGluZyIsImNvbnRlbnQiLCJ0ZXh0Il19XSwiYmctb3JpZ2luIjpbeyJiZy1vcmlnaW4iOlsiYm9yZGVyIiwicGFkZGluZyIsImNvbnRlbnQiXX1dLCJiZy1wb3NpdGlvbiI6W3tiZzpaKCl9XSwiYmctcmVwZWF0Ijpbe2JnOnRlKCl9XSwiYmctc2l6ZSI6W3tiZzpvZSgpfV0sImJnLWltYWdlIjpbe2JnOlsibm9uZSIse2xpbmVhcjpbe3RvOlsidCIsInRyIiwiciIsImJyIiwiYiIsImJsIiwibCIsInRsIl19LHlpLFBlLGplXSxyYWRpYWw6WyIiLFBlLGplXSxjb25pYzpbeWksUGUsamVdfSxWRyxJR119XSwiYmctY29sb3IiOlt7Ymc6aygpfV0sImdyYWRpZW50LWZyb20tcG9zIjpbe2Zyb206bWUoKX1dLCJncmFkaWVudC12aWEtcG9zIjpbe3ZpYTptZSgpfV0sImdyYWRpZW50LXRvLXBvcyI6W3t0bzptZSgpfV0sImdyYWRpZW50LWZyb20iOlt7ZnJvbTprKCl9XSwiZ3JhZGllbnQtdmlhIjpbe3ZpYTprKCl9XSwiZ3JhZGllbnQtdG8iOlt7dG86aygpfV0scm91bmRlZDpbe3JvdW5kZWQ6YmUoKX1dLCJyb3VuZGVkLXMiOlt7InJvdW5kZWQtcyI6YmUoKX1dLCJyb3VuZGVkLWUiOlt7InJvdW5kZWQtZSI6YmUoKX1dLCJyb3VuZGVkLXQiOlt7InJvdW5kZWQtdCI6YmUoKX1dLCJyb3VuZGVkLXIiOlt7InJvdW5kZWQtciI6YmUoKX1dLCJyb3VuZGVkLWIiOlt7InJvdW5kZWQtYiI6YmUoKX1dLCJyb3VuZGVkLWwiOlt7InJvdW5kZWQtbCI6YmUoKX1dLCJyb3VuZGVkLXNzIjpbeyJyb3VuZGVkLXNzIjpiZSgpfV0sInJvdW5kZWQtc2UiOlt7InJvdW5kZWQtc2UiOmJlKCl9XSwicm91bmRlZC1lZSI6W3sicm91bmRlZC1lZSI6YmUoKX1dLCJyb3VuZGVkLWVzIjpbeyJyb3VuZGVkLWVzIjpiZSgpfV0sInJvdW5kZWQtdGwiOlt7InJvdW5kZWQtdGwiOmJlKCl9XSwicm91bmRlZC10ciI6W3sicm91bmRlZC10ciI6YmUoKX1dLCJyb3VuZGVkLWJyIjpbeyJyb3VuZGVkLWJyIjpiZSgpfV0sInJvdW5kZWQtYmwiOlt7InJvdW5kZWQtYmwiOmJlKCl9XSwiYm9yZGVyLXciOlt7Ym9yZGVyOmdlKCl9XSwiYm9yZGVyLXcteCI6W3siYm9yZGVyLXgiOmdlKCl9XSwiYm9yZGVyLXcteSI6W3siYm9yZGVyLXkiOmdlKCl9XSwiYm9yZGVyLXctcyI6W3siYm9yZGVyLXMiOmdlKCl9XSwiYm9yZGVyLXctZSI6W3siYm9yZGVyLWUiOmdlKCl9XSwiYm9yZGVyLXctYnMiOlt7ImJvcmRlci1icyI6Z2UoKX1dLCJib3JkZXItdy1iZSI6W3siYm9yZGVyLWJlIjpnZSgpfV0sImJvcmRlci13LXQiOlt7ImJvcmRlci10IjpnZSgpfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjpnZSgpfV0sImJvcmRlci13LWIiOlt7ImJvcmRlci1iIjpnZSgpfV0sImJvcmRlci13LWwiOlt7ImJvcmRlci1sIjpnZSgpfV0sImRpdmlkZS14IjpbeyJkaXZpZGUteCI6Z2UoKX1dLCJkaXZpZGUteC1yZXZlcnNlIjpbImRpdmlkZS14LXJldmVyc2UiXSwiZGl2aWRlLXkiOlt7ImRpdmlkZS15IjpnZSgpfV0sImRpdmlkZS15LXJldmVyc2UiOlsiZGl2aWRlLXktcmV2ZXJzZSJdLCJib3JkZXItc3R5bGUiOlt7Ym9yZGVyOlsuLi5fZSgpLCJoaWRkZW4iLCJub25lIl19XSwiZGl2aWRlLXN0eWxlIjpbe2RpdmlkZTpbLi4uX2UoKSwiaGlkZGVuIiwibm9uZSJdfV0sImJvcmRlci1jb2xvciI6W3tib3JkZXI6aygpfV0sImJvcmRlci1jb2xvci14IjpbeyJib3JkZXIteCI6aygpfV0sImJvcmRlci1jb2xvci15IjpbeyJib3JkZXIteSI6aygpfV0sImJvcmRlci1jb2xvci1zIjpbeyJib3JkZXItcyI6aygpfV0sImJvcmRlci1jb2xvci1lIjpbeyJib3JkZXItZSI6aygpfV0sImJvcmRlci1jb2xvci1icyI6W3siYm9yZGVyLWJzIjprKCl9XSwiYm9yZGVyLWNvbG9yLWJlIjpbeyJib3JkZXItYmUiOmsoKX1dLCJib3JkZXItY29sb3ItdCI6W3siYm9yZGVyLXQiOmsoKX1dLCJib3JkZXItY29sb3ItciI6W3siYm9yZGVyLXIiOmsoKX1dLCJib3JkZXItY29sb3ItYiI6W3siYm9yZGVyLWIiOmsoKX1dLCJib3JkZXItY29sb3ItbCI6W3siYm9yZGVyLWwiOmsoKX1dLCJkaXZpZGUtY29sb3IiOlt7ZGl2aWRlOmsoKX1dLCJvdXRsaW5lLXN0eWxlIjpbe291dGxpbmU6Wy4uLl9lKCksIm5vbmUiLCJoaWRkZW4iXX1dLCJvdXRsaW5lLW9mZnNldCI6W3sib3V0bGluZS1vZmZzZXQiOltldCxQZSxqZV19XSwib3V0bGluZS13Ijpbe291dGxpbmU6WyIiLGV0LEdjLEdvXX1dLCJvdXRsaW5lLWNvbG9yIjpbe291dGxpbmU6aygpfV0sc2hhZG93Olt7c2hhZG93OlsiIiwibm9uZSIscCxvcCxhcF19XSwic2hhZG93LWNvbG9yIjpbe3NoYWRvdzprKCl9XSwiaW5zZXQtc2hhZG93IjpbeyJpbnNldC1zaGFkb3ciOlsibm9uZSIsbSxvcCxhcF19XSwiaW5zZXQtc2hhZG93LWNvbG9yIjpbeyJpbnNldC1zaGFkb3ciOmsoKX1dLCJyaW5nLXciOlt7cmluZzpnZSgpfV0sInJpbmctdy1pbnNldCI6WyJyaW5nLWluc2V0Il0sInJpbmctY29sb3IiOlt7cmluZzprKCl9XSwicmluZy1vZmZzZXQtdyI6W3sicmluZy1vZmZzZXQiOltldCxHb119XSwicmluZy1vZmZzZXQtY29sb3IiOlt7InJpbmctb2Zmc2V0IjprKCl9XSwiaW5zZXQtcmluZy13IjpbeyJpbnNldC1yaW5nIjpnZSgpfV0sImluc2V0LXJpbmctY29sb3IiOlt7Imluc2V0LXJpbmciOmsoKX1dLCJ0ZXh0LXNoYWRvdyI6W3sidGV4dC1zaGFkb3ciOlsibm9uZSIseSxvcCxhcF19XSwidGV4dC1zaGFkb3ctY29sb3IiOlt7InRleHQtc2hhZG93IjprKCl9XSxvcGFjaXR5Olt7b3BhY2l0eTpbZXQsUGUsamVdfV0sIm1peC1ibGVuZCI6W3sibWl4LWJsZW5kIjpbLi4uVGUoKSwicGx1cy1kYXJrZXIiLCJwbHVzLWxpZ2h0ZXIiXX1dLCJiZy1ibGVuZCI6W3siYmctYmxlbmQiOlRlKCl9XSwibWFzay1jbGlwIjpbeyJtYXNrLWNsaXAiOlsiYm9yZGVyIiwicGFkZGluZyIsImNvbnRlbnQiLCJmaWxsIiwic3Ryb2tlIiwidmlldyJdfSwibWFzay1uby1jbGlwIl0sIm1hc2stY29tcG9zaXRlIjpbe21hc2s6WyJhZGQiLCJzdWJ0cmFjdCIsImludGVyc2VjdCIsImV4Y2x1ZGUiXX1dLCJtYXNrLWltYWdlLWxpbmVhci1wb3MiOlt7Im1hc2stbGluZWFyIjpbZXRdfV0sIm1hc2staW1hZ2UtbGluZWFyLWZyb20tcG9zIjpbeyJtYXNrLWxpbmVhci1mcm9tIjpjZSgpfV0sIm1hc2staW1hZ2UtbGluZWFyLXRvLXBvcyI6W3sibWFzay1saW5lYXItdG8iOmNlKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6aygpfV0sIm1hc2staW1hZ2UtbGluZWFyLXRvLWNvbG9yIjpbeyJtYXNrLWxpbmVhci10byI6aygpfV0sIm1hc2staW1hZ2UtdC1mcm9tLXBvcyI6W3sibWFzay10LWZyb20iOmNlKCl9XSwibWFzay1pbWFnZS10LXRvLXBvcyI6W3sibWFzay10LXRvIjpjZSgpfV0sIm1hc2staW1hZ2UtdC1mcm9tLWNvbG9yIjpbeyJtYXNrLXQtZnJvbSI6aygpfV0sIm1hc2staW1hZ2UtdC10by1jb2xvciI6W3sibWFzay10LXRvIjprKCl9XSwibWFzay1pbWFnZS1yLWZyb20tcG9zIjpbeyJtYXNrLXItZnJvbSI6Y2UoKX1dLCJtYXNrLWltYWdlLXItdG8tcG9zIjpbeyJtYXNrLXItdG8iOmNlKCl9XSwibWFzay1pbWFnZS1yLWZyb20tY29sb3IiOlt7Im1hc2stci1mcm9tIjprKCl9XSwibWFzay1pbWFnZS1yLXRvLWNvbG9yIjpbeyJtYXNrLXItdG8iOmsoKX1dLCJtYXNrLWltYWdlLWItZnJvbS1wb3MiOlt7Im1hc2stYi1mcm9tIjpjZSgpfV0sIm1hc2staW1hZ2UtYi10by1wb3MiOlt7Im1hc2stYi10byI6Y2UoKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOmsoKX1dLCJtYXNrLWltYWdlLWItdG8tY29sb3IiOlt7Im1hc2stYi10byI6aygpfV0sIm1hc2staW1hZ2UtbC1mcm9tLXBvcyI6W3sibWFzay1sLWZyb20iOmNlKCl9XSwibWFzay1pbWFnZS1sLXRvLXBvcyI6W3sibWFzay1sLXRvIjpjZSgpfV0sIm1hc2staW1hZ2UtbC1mcm9tLWNvbG9yIjpbeyJtYXNrLWwtZnJvbSI6aygpfV0sIm1hc2staW1hZ2UtbC10by1jb2xvciI6W3sibWFzay1sLXRvIjprKCl9XSwibWFzay1pbWFnZS14LWZyb20tcG9zIjpbeyJtYXNrLXgtZnJvbSI6Y2UoKX1dLCJtYXNrLWltYWdlLXgtdG8tcG9zIjpbeyJtYXNrLXgtdG8iOmNlKCl9XSwibWFzay1pbWFnZS14LWZyb20tY29sb3IiOlt7Im1hc2steC1mcm9tIjprKCl9XSwibWFzay1pbWFnZS14LXRvLWNvbG9yIjpbeyJtYXNrLXgtdG8iOmsoKX1dLCJtYXNrLWltYWdlLXktZnJvbS1wb3MiOlt7Im1hc2steS1mcm9tIjpjZSgpfV0sIm1hc2staW1hZ2UteS10by1wb3MiOlt7Im1hc2steS10byI6Y2UoKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOmsoKX1dLCJtYXNrLWltYWdlLXktdG8tY29sb3IiOlt7Im1hc2steS10byI6aygpfV0sIm1hc2staW1hZ2UtcmFkaWFsIjpbeyJtYXNrLXJhZGlhbCI6W1BlLGplXX1dLCJtYXNrLWltYWdlLXJhZGlhbC1mcm9tLXBvcyI6W3sibWFzay1yYWRpYWwtZnJvbSI6Y2UoKX1dLCJtYXNrLWltYWdlLXJhZGlhbC10by1wb3MiOlt7Im1hc2stcmFkaWFsLXRvIjpjZSgpfV0sIm1hc2staW1hZ2UtcmFkaWFsLWZyb20tY29sb3IiOlt7Im1hc2stcmFkaWFsLWZyb20iOmsoKX1dLCJtYXNrLWltYWdlLXJhZGlhbC10by1jb2xvciI6W3sibWFzay1yYWRpYWwtdG8iOmsoKX1dLCJtYXNrLWltYWdlLXJhZGlhbC1zaGFwZSI6W3sibWFzay1yYWRpYWwiOlsiY2lyY2xlIiwiZWxsaXBzZSJdfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNpemUiOlt7Im1hc2stcmFkaWFsIjpbe2Nsb3Nlc3Q6WyJzaWRlIiwiY29ybmVyIl0sZmFydGhlc3Q6WyJzaWRlIiwiY29ybmVyIl19XX1dLCJtYXNrLWltYWdlLXJhZGlhbC1wb3MiOlt7Im1hc2stcmFkaWFsLWF0IjpqKCl9XSwibWFzay1pbWFnZS1jb25pYy1wb3MiOlt7Im1hc2stY29uaWMiOltldF19XSwibWFzay1pbWFnZS1jb25pYy1mcm9tLXBvcyI6W3sibWFzay1jb25pYy1mcm9tIjpjZSgpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tcG9zIjpbeyJtYXNrLWNvbmljLXRvIjpjZSgpfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1jb2xvciI6W3sibWFzay1jb25pYy1mcm9tIjprKCl9XSwibWFzay1pbWFnZS1jb25pYy10by1jb2xvciI6W3sibWFzay1jb25pYy10byI6aygpfV0sIm1hc2stbW9kZSI6W3ttYXNrOlsiYWxwaGEiLCJsdW1pbmFuY2UiLCJtYXRjaCJdfV0sIm1hc2stb3JpZ2luIjpbeyJtYXNrLW9yaWdpbiI6WyJib3JkZXIiLCJwYWRkaW5nIiwiY29udGVudCIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Il19XSwibWFzay1wb3NpdGlvbiI6W3ttYXNrOlooKX1dLCJtYXNrLXJlcGVhdCI6W3ttYXNrOnRlKCl9XSwibWFzay1zaXplIjpbe21hc2s6b2UoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6WyJhbHBoYSIsImx1bWluYW5jZSJdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbIm5vbmUiLFBlLGplXX1dLGZpbHRlcjpbe2ZpbHRlcjpbIiIsIm5vbmUiLFBlLGplXX1dLGJsdXI6W3tibHVyOkFlKCl9XSxicmlnaHRuZXNzOlt7YnJpZ2h0bmVzczpbZXQsUGUsamVdfV0sY29udHJhc3Q6W3tjb250cmFzdDpbZXQsUGUsamVdfV0sImRyb3Atc2hhZG93IjpbeyJkcm9wLXNoYWRvdyI6WyIiLCJub25lIix4LG9wLGFwXX1dLCJkcm9wLXNoYWRvdy1jb2xvciI6W3siZHJvcC1zaGFkb3ciOmsoKX1dLGdyYXlzY2FsZTpbe2dyYXlzY2FsZTpbIiIsZXQsUGUsamVdfV0sImh1ZS1yb3RhdGUiOlt7Imh1ZS1yb3RhdGUiOltldCxQZSxqZV19XSxpbnZlcnQ6W3tpbnZlcnQ6WyIiLGV0LFBlLGplXX1dLHNhdHVyYXRlOlt7c2F0dXJhdGU6W2V0LFBlLGplXX1dLHNlcGlhOlt7c2VwaWE6WyIiLGV0LFBlLGplXX1dLCJiYWNrZHJvcC1maWx0ZXIiOlt7ImJhY2tkcm9wLWZpbHRlciI6WyIiLCJub25lIixQZSxqZV19XSwiYmFja2Ryb3AtYmx1ciI6W3siYmFja2Ryb3AtYmx1ciI6QWUoKX1dLCJiYWNrZHJvcC1icmlnaHRuZXNzIjpbeyJiYWNrZHJvcC1icmlnaHRuZXNzIjpbZXQsUGUsamVdfV0sImJhY2tkcm9wLWNvbnRyYXN0IjpbeyJiYWNrZHJvcC1jb250cmFzdCI6W2V0LFBlLGplXX1dLCJiYWNrZHJvcC1ncmF5c2NhbGUiOlt7ImJhY2tkcm9wLWdyYXlzY2FsZSI6WyIiLGV0LFBlLGplXX1dLCJiYWNrZHJvcC1odWUtcm90YXRlIjpbeyJiYWNrZHJvcC1odWUtcm90YXRlIjpbZXQsUGUsamVdfV0sImJhY2tkcm9wLWludmVydCI6W3siYmFja2Ryb3AtaW52ZXJ0IjpbIiIsZXQsUGUsamVdfV0sImJhY2tkcm9wLW9wYWNpdHkiOlt7ImJhY2tkcm9wLW9wYWNpdHkiOltldCxQZSxqZV19XSwiYmFja2Ryb3Atc2F0dXJhdGUiOlt7ImJhY2tkcm9wLXNhdHVyYXRlIjpbZXQsUGUsamVdfV0sImJhY2tkcm9wLXNlcGlhIjpbeyJiYWNrZHJvcC1zZXBpYSI6WyIiLGV0LFBlLGplXX1dLCJib3JkZXItY29sbGFwc2UiOlt7Ym9yZGVyOlsiY29sbGFwc2UiLCJzZXBhcmF0ZSJdfV0sImJvcmRlci1zcGFjaW5nIjpbeyJib3JkZXItc3BhY2luZyI6UigpfV0sImJvcmRlci1zcGFjaW5nLXgiOlt7ImJvcmRlci1zcGFjaW5nLXgiOlIoKX1dLCJib3JkZXItc3BhY2luZy15IjpbeyJib3JkZXItc3BhY2luZy15IjpSKCl9XSwidGFibGUtbGF5b3V0Ijpbe3RhYmxlOlsiYXV0byIsImZpeGVkIl19XSxjYXB0aW9uOlt7Y2FwdGlvbjpbInRvcCIsImJvdHRvbSJdfV0sdHJhbnNpdGlvbjpbe3RyYW5zaXRpb246WyIiLCJhbGwiLCJjb2xvcnMiLCJvcGFjaXR5Iiwic2hhZG93IiwidHJhbnNmb3JtIiwibm9uZSIsUGUsamVdfV0sInRyYW5zaXRpb24tYmVoYXZpb3IiOlt7dHJhbnNpdGlvbjpbIm5vcm1hbCIsImRpc2NyZXRlIl19XSxkdXJhdGlvbjpbe2R1cmF0aW9uOltldCwiaW5pdGlhbCIsUGUsamVdfV0sZWFzZTpbe2Vhc2U6WyJsaW5lYXIiLCJpbml0aWFsIixfLFBlLGplXX1dLGRlbGF5Olt7ZGVsYXk6W2V0LFBlLGplXX1dLGFuaW1hdGU6W3thbmltYXRlOlsibm9uZSIsTyxQZSxqZV19XSxiYWNrZmFjZTpbe2JhY2tmYWNlOlsiaGlkZGVuIiwidmlzaWJsZSJdfV0scGVyc3BlY3RpdmU6W3twZXJzcGVjdGl2ZTpbYixQZSxqZV19XSwicGVyc3BlY3RpdmUtb3JpZ2luIjpbeyJwZXJzcGVjdGl2ZS1vcmlnaW4iOlQoKX1dLHJvdGF0ZTpbe3JvdGF0ZTpTZSgpfV0sInJvdGF0ZS14IjpbeyJyb3RhdGUteCI6U2UoKX1dLCJyb3RhdGUteSI6W3sicm90YXRlLXkiOlNlKCl9XSwicm90YXRlLXoiOlt7InJvdGF0ZS16IjpTZSgpfV0sc2NhbGU6W3tzY2FsZTpzZSgpfV0sInNjYWxlLXgiOlt7InNjYWxlLXgiOnNlKCl9XSwic2NhbGUteSI6W3sic2NhbGUteSI6c2UoKX1dLCJzY2FsZS16IjpbeyJzY2FsZS16IjpzZSgpfV0sInNjYWxlLTNkIjpbInNjYWxlLTNkIl0sc2tldzpbe3NrZXc6S2UoKX1dLCJza2V3LXgiOlt7InNrZXcteCI6S2UoKX1dLCJza2V3LXkiOlt7InNrZXcteSI6S2UoKX1dLHRyYW5zZm9ybTpbe3RyYW5zZm9ybTpbUGUsamUsIiIsIm5vbmUiLCJncHUiLCJjcHUiXX1dLCJ0cmFuc2Zvcm0tb3JpZ2luIjpbe29yaWdpbjpUKCl9XSwidHJhbnNmb3JtLXN0eWxlIjpbe3RyYW5zZm9ybTpbIjNkIiwiZmxhdCJdfV0sdHJhbnNsYXRlOlt7dHJhbnNsYXRlOkxlKCl9XSwidHJhbnNsYXRlLXgiOlt7InRyYW5zbGF0ZS14IjpMZSgpfV0sInRyYW5zbGF0ZS15IjpbeyJ0cmFuc2xhdGUteSI6TGUoKX1dLCJ0cmFuc2xhdGUteiI6W3sidHJhbnNsYXRlLXoiOkxlKCl9XSwidHJhbnNsYXRlLW5vbmUiOlsidHJhbnNsYXRlLW5vbmUiXSx6b29tOlt7em9vbTpbeWksUGUsamVdfV0sYWNjZW50Olt7YWNjZW50OmsoKX1dLGFwcGVhcmFuY2U6W3thcHBlYXJhbmNlOlsibm9uZSIsImF1dG8iXX1dLCJjYXJldC1jb2xvciI6W3tjYXJldDprKCl9XSwiY29sb3Itc2NoZW1lIjpbe3NjaGVtZTpbIm5vcm1hbCIsImRhcmsiLCJsaWdodCIsImxpZ2h0LWRhcmsiLCJvbmx5LWRhcmsiLCJvbmx5LWxpZ2h0Il19XSxjdXJzb3I6W3tjdXJzb3I6WyJhdXRvIiwiZGVmYXVsdCIsInBvaW50ZXIiLCJ3YWl0IiwidGV4dCIsIm1vdmUiLCJoZWxwIiwibm90LWFsbG93ZWQiLCJub25lIiwiY29udGV4dC1tZW51IiwicHJvZ3Jlc3MiLCJjZWxsIiwiY3Jvc3NoYWlyIiwidmVydGljYWwtdGV4dCIsImFsaWFzIiwiY29weSIsIm5vLWRyb3AiLCJncmFiIiwiZ3JhYmJpbmciLCJhbGwtc2Nyb2xsIiwiY29sLXJlc2l6ZSIsInJvdy1yZXNpemUiLCJuLXJlc2l6ZSIsImUtcmVzaXplIiwicy1yZXNpemUiLCJ3LXJlc2l6ZSIsIm5lLXJlc2l6ZSIsIm53LXJlc2l6ZSIsInNlLXJlc2l6ZSIsInN3LXJlc2l6ZSIsImV3LXJlc2l6ZSIsIm5zLXJlc2l6ZSIsIm5lc3ctcmVzaXplIiwibndzZS1yZXNpemUiLCJ6b29tLWluIiwiem9vbS1vdXQiLFBlLGplXX1dLCJmaWVsZC1zaXppbmciOlt7ImZpZWxkLXNpemluZyI6WyJmaXhlZCIsImNvbnRlbnQiXX1dLCJwb2ludGVyLWV2ZW50cyI6W3sicG9pbnRlci1ldmVudHMiOlsiYXV0byIsIm5vbmUiXX1dLHJlc2l6ZTpbe3Jlc2l6ZTpbIm5vbmUiLCIiLCJ5IiwieCJdfV0sInNjcm9sbC1iZWhhdmlvciI6W3tzY3JvbGw6WyJhdXRvIiwic21vb3RoIl19XSwic2Nyb2xsYmFyLXRodW1iLWNvbG9yIjpbeyJzY3JvbGxiYXItdGh1bWIiOmsoKX1dLCJzY3JvbGxiYXItdHJhY2stY29sb3IiOlt7InNjcm9sbGJhci10cmFjayI6aygpfV0sInNjcm9sbGJhci1ndXR0ZXIiOlt7InNjcm9sbGJhci1ndXR0ZXIiOlsiYXV0byIsInN0YWJsZSIsImJvdGgiXX1dLCJzY3JvbGxiYXItdyI6W3tzY3JvbGxiYXI6WyJhdXRvIiwidGhpbiIsIm5vbmUiXX1dLCJzY3JvbGwtbSI6W3sic2Nyb2xsLW0iOlIoKX1dLCJzY3JvbGwtbXgiOlt7InNjcm9sbC1teCI6UigpfV0sInNjcm9sbC1teSI6W3sic2Nyb2xsLW15IjpSKCl9XSwic2Nyb2xsLW1zIjpbeyJzY3JvbGwtbXMiOlIoKX1dLCJzY3JvbGwtbWUiOlt7InNjcm9sbC1tZSI6UigpfV0sInNjcm9sbC1tYnMiOlt7InNjcm9sbC1tYnMiOlIoKX1dLCJzY3JvbGwtbWJlIjpbeyJzY3JvbGwtbWJlIjpSKCl9XSwic2Nyb2xsLW10IjpbeyJzY3JvbGwtbXQiOlIoKX1dLCJzY3JvbGwtbXIiOlt7InNjcm9sbC1tciI6UigpfV0sInNjcm9sbC1tYiI6W3sic2Nyb2xsLW1iIjpSKCl9XSwic2Nyb2xsLW1sIjpbeyJzY3JvbGwtbWwiOlIoKX1dLCJzY3JvbGwtcCI6W3sic2Nyb2xsLXAiOlIoKX1dLCJzY3JvbGwtcHgiOlt7InNjcm9sbC1weCI6UigpfV0sInNjcm9sbC1weSI6W3sic2Nyb2xsLXB5IjpSKCl9XSwic2Nyb2xsLXBzIjpbeyJzY3JvbGwtcHMiOlIoKX1dLCJzY3JvbGwtcGUiOlt7InNjcm9sbC1wZSI6UigpfV0sInNjcm9sbC1wYnMiOlt7InNjcm9sbC1wYnMiOlIoKX1dLCJzY3JvbGwtcGJlIjpbeyJzY3JvbGwtcGJlIjpSKCl9XSwic2Nyb2xsLXB0IjpbeyJzY3JvbGwtcHQiOlIoKX1dLCJzY3JvbGwtcHIiOlt7InNjcm9sbC1wciI6UigpfV0sInNjcm9sbC1wYiI6W3sic2Nyb2xsLXBiIjpSKCl9XSwic2Nyb2xsLXBsIjpbeyJzY3JvbGwtcGwiOlIoKX1dLCJzbmFwLWFsaWduIjpbe3NuYXA6WyJzdGFydCIsImVuZCIsImNlbnRlciIsImFsaWduLW5vbmUiXX1dLCJzbmFwLXN0b3AiOlt7c25hcDpbIm5vcm1hbCIsImFsd2F5cyJdfV0sInNuYXAtdHlwZSI6W3tzbmFwOlsibm9uZSIsIngiLCJ5IiwiYm90aCJdfV0sInNuYXAtc3RyaWN0bmVzcyI6W3tzbmFwOlsibWFuZGF0b3J5IiwicHJveGltaXR5Il19XSx0b3VjaDpbe3RvdWNoOlsiYXV0byIsIm5vbmUiLCJtYW5pcHVsYXRpb24iXX1dLCJ0b3VjaC14IjpbeyJ0b3VjaC1wYW4iOlsieCIsImxlZnQiLCJyaWdodCJdfV0sInRvdWNoLXkiOlt7InRvdWNoLXBhbiI6WyJ5IiwidXAiLCJkb3duIl19XSwidG91Y2gtcHoiOlsidG91Y2gtcGluY2gtem9vbSJdLHNlbGVjdDpbe3NlbGVjdDpbIm5vbmUiLCJ0ZXh0IiwiYWxsIiwiYXV0byJdfV0sIndpbGwtY2hhbmdlIjpbeyJ3aWxsLWNoYW5nZSI6WyJhdXRvIiwic2Nyb2xsIiwiY29udGVudHMiLCJ0cmFuc2Zvcm0iLFBlLGplXX1dLGZpbGw6W3tmaWxsOlsibm9uZSIsLi4uaygpXX1dLCJzdHJva2UtdyI6W3tzdHJva2U6W2V0LEdjLEdvLEJNXX1dLHN0cm9rZTpbe3N0cm9rZTpbIm5vbmUiLC4uLmsoKV19XSwiZm9yY2VkLWNvbG9yLWFkanVzdCI6W3siZm9yY2VkLWNvbG9yLWFkanVzdCI6WyJhdXRvIiwibm9uZSJdfV19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6eyJjb250YWluZXItbmFtZWQiOlsiY29udGFpbmVyLXR5cGUiXSxvdmVyZmxvdzpbIm92ZXJmbG93LXgiLCJvdmVyZmxvdy15Il0sb3ZlcnNjcm9sbDpbIm92ZXJzY3JvbGwteCIsIm92ZXJzY3JvbGwteSJdLGluc2V0OlsiaW5zZXQteCIsImluc2V0LXkiLCJpbnNldC1icyIsImluc2V0LWJlIiwic3RhcnQiLCJlbmQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSwiaW5zZXQteCI6WyJyaWdodCIsImxlZnQiXSwiaW5zZXQteSI6WyJ0b3AiLCJib3R0b20iXSxmbGV4OlsiYmFzaXMiLCJncm93Iiwic2hyaW5rIl0sZ2FwOlsiZ2FwLXgiLCJnYXAteSJdLHA6WyJweCIsInB5IiwicHMiLCJwZSIsInBicyIsInBiZSIsInB0IiwicHIiLCJwYiIsInBsIl0scHg6WyJwciIsInBsIl0scHk6WyJwdCIsInBiIl0sbTpbIm14IiwibXkiLCJtcyIsIm1lIiwibWJzIiwibWJlIiwibXQiLCJtciIsIm1iIiwibWwiXSxteDpbIm1yIiwibWwiXSxteTpbIm10IiwibWIiXSxzaXplOlsidyIsImgiXSwiZm9udC1zaXplIjpbImxlYWRpbmciXSwiZnZuLW5vcm1hbCI6WyJmdm4tb3JkaW5hbCIsImZ2bi1zbGFzaGVkLXplcm8iLCJmdm4tZmlndXJlIiwiZnZuLXNwYWNpbmciLCJmdm4tZnJhY3Rpb24iXSwiZnZuLW9yZGluYWwiOlsiZnZuLW5vcm1hbCJdLCJmdm4tc2xhc2hlZC16ZXJvIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZpZ3VyZSI6WyJmdm4tbm9ybWFsIl0sImZ2bi1zcGFjaW5nIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZyYWN0aW9uIjpbImZ2bi1ub3JtYWwiXSwibGluZS1jbGFtcCI6WyJkaXNwbGF5Iiwib3ZlcmZsb3ciXSxyb3VuZGVkOlsicm91bmRlZC1zIiwicm91bmRlZC1lIiwicm91bmRlZC10Iiwicm91bmRlZC1yIiwicm91bmRlZC1iIiwicm91bmRlZC1sIiwicm91bmRlZC1zcyIsInJvdW5kZWQtc2UiLCJyb3VuZGVkLWVlIiwicm91bmRlZC1lcyIsInJvdW5kZWQtdGwiLCJyb3VuZGVkLXRyIiwicm91bmRlZC1iciIsInJvdW5kZWQtYmwiXSwicm91bmRlZC1zIjpbInJvdW5kZWQtc3MiLCJyb3VuZGVkLWVzIl0sInJvdW5kZWQtZSI6WyJyb3VuZGVkLXNlIiwicm91bmRlZC1lZSJdLCJyb3VuZGVkLXQiOlsicm91bmRlZC10bCIsInJvdW5kZWQtdHIiXSwicm91bmRlZC1yIjpbInJvdW5kZWQtdHIiLCJyb3VuZGVkLWJyIl0sInJvdW5kZWQtYiI6WyJyb3VuZGVkLWJyIiwicm91bmRlZC1ibCJdLCJyb3VuZGVkLWwiOlsicm91bmRlZC10bCIsInJvdW5kZWQtYmwiXSwiYm9yZGVyLXNwYWNpbmciOlsiYm9yZGVyLXNwYWNpbmcteCIsImJvcmRlci1zcGFjaW5nLXkiXSwiYm9yZGVyLXciOlsiYm9yZGVyLXcteCIsImJvcmRlci13LXkiLCJib3JkZXItdy1zIiwiYm9yZGVyLXctZSIsImJvcmRlci13LWJzIiwiYm9yZGVyLXctYmUiLCJib3JkZXItdy10IiwiYm9yZGVyLXctciIsImJvcmRlci13LWIiLCJib3JkZXItdy1sIl0sImJvcmRlci13LXgiOlsiYm9yZGVyLXctciIsImJvcmRlci13LWwiXSwiYm9yZGVyLXcteSI6WyJib3JkZXItdy10IiwiYm9yZGVyLXctYiJdLCJib3JkZXItY29sb3IiOlsiYm9yZGVyLWNvbG9yLXgiLCJib3JkZXItY29sb3IteSIsImJvcmRlci1jb2xvci1zIiwiYm9yZGVyLWNvbG9yLWUiLCJib3JkZXItY29sb3ItYnMiLCJib3JkZXItY29sb3ItYmUiLCJib3JkZXItY29sb3ItdCIsImJvcmRlci1jb2xvci1yIiwiYm9yZGVyLWNvbG9yLWIiLCJib3JkZXItY29sb3ItbCJdLCJib3JkZXItY29sb3IteCI6WyJib3JkZXItY29sb3ItciIsImJvcmRlci1jb2xvci1sIl0sImJvcmRlci1jb2xvci15IjpbImJvcmRlci1jb2xvci10IiwiYm9yZGVyLWNvbG9yLWIiXSx0cmFuc2xhdGU6WyJ0cmFuc2xhdGUteCIsInRyYW5zbGF0ZS15IiwidHJhbnNsYXRlLW5vbmUiXSwidHJhbnNsYXRlLW5vbmUiOlsidHJhbnNsYXRlIiwidHJhbnNsYXRlLXgiLCJ0cmFuc2xhdGUteSIsInRyYW5zbGF0ZS16Il0sInNjcm9sbC1tIjpbInNjcm9sbC1teCIsInNjcm9sbC1teSIsInNjcm9sbC1tcyIsInNjcm9sbC1tZSIsInNjcm9sbC1tYnMiLCJzY3JvbGwtbWJlIiwic2Nyb2xsLW10Iiwic2Nyb2xsLW1yIiwic2Nyb2xsLW1iIiwic2Nyb2xsLW1sIl0sInNjcm9sbC1teCI6WyJzY3JvbGwtbXIiLCJzY3JvbGwtbWwiXSwic2Nyb2xsLW15IjpbInNjcm9sbC1tdCIsInNjcm9sbC1tYiJdLCJzY3JvbGwtcCI6WyJzY3JvbGwtcHgiLCJzY3JvbGwtcHkiLCJzY3JvbGwtcHMiLCJzY3JvbGwtcGUiLCJzY3JvbGwtcGJzIiwic2Nyb2xsLXBiZSIsInNjcm9sbC1wdCIsInNjcm9sbC1wciIsInNjcm9sbC1wYiIsInNjcm9sbC1wbCJdLCJzY3JvbGwtcHgiOlsic2Nyb2xsLXByIiwic2Nyb2xsLXBsIl0sInNjcm9sbC1weSI6WyJzY3JvbGwtcHQiLCJzY3JvbGwtcGIiXSx0b3VjaDpbInRvdWNoLXgiLCJ0b3VjaC15IiwidG91Y2gtcHoiXSwidG91Y2gteCI6WyJ0b3VjaCJdLCJ0b3VjaC15IjpbInRvdWNoIl0sInRvdWNoLXB6IjpbInRvdWNoIl19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczp7ImZvbnQtc2l6ZSI6WyJsZWFkaW5nIl19LHBvc3RmaXhMb29rdXBDbGFzc0dyb3VwczpbImNvbnRhaW5lci10eXBlIl0sb3JkZXJTZW5zaXRpdmVNb2RpZmllcnM6WyIqIiwiKioiLCJhZnRlciIsImJhY2tkcm9wIiwiYmVmb3JlIiwiZGV0YWlscy1jb250ZW50IiwiZmlsZSIsImZpcnN0LWxldHRlciIsImZpcnN0LWxpbmUiLCJtYXJrZXIiLCJwbGFjZWhvbGRlciIsInNlbGVjdGlvbiJdfX0sRkc9d0coekcpO2Z1bmN0aW9uIG90KC4uLmUpe3JldHVybiBGRyhXZShlKSl9ZnVuY3Rpb24gTnQoZSl7cmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCgiZW4tVVMiLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5OiJVU0QifSkuZm9ybWF0KGUpfWZ1bmN0aW9uIGMzKGUpe3JldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoImVuLVVTIix7bWluaW11bUZyYWN0aW9uRGlnaXRzOjIsbWF4aW11bUZyYWN0aW9uRGlnaXRzOjZ9KS5mb3JtYXQoZSl9Y29uc3QgVU09ZT0+dHlwZW9mIGU9PSJib29sZWFuIj9gJHtlfWA6ZT09PTA/IjAiOmUsek09V2UsZk89KGUsdCk9Pm49Pnt2YXIgcjtpZih0Py52YXJpYW50cz09bnVsbClyZXR1cm4gek0oZSxuPy5jbGFzcyxuPy5jbGFzc05hbWUpO2NvbnN0e3ZhcmlhbnRzOmksZGVmYXVsdFZhcmlhbnRzOm99PXQscz1PYmplY3Qua2V5cyhpKS5tYXAoZD0+e2NvbnN0IHA9bj8uW2RdLG09bz8uW2RdO2lmKHA9PT1udWxsKXJldHVybiBudWxsO2NvbnN0IHk9VU0ocCl8fFVNKG0pO3JldHVybiBpW2RdW3ldfSksdT1uJiZPYmplY3QuZW50cmllcyhuKS5yZWR1Y2UoKGQscCk9PntsZXRbbSx5XT1wO3JldHVybiB5PT09dm9pZCAwfHwoZFttXT15KSxkfSx7fSksZj10PT1udWxsfHwocj10LmNvbXBvdW5kVmFyaWFudHMpPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci5yZWR1Y2UoKGQscCk9PntsZXR7Y2xhc3M6bSxjbGFzc05hbWU6eSwuLi54fT1wO3JldHVybiBPYmplY3QuZW50cmllcyh4KS5ldmVyeSh3PT57bGV0W2IsZ109dztyZXR1cm4gQXJyYXkuaXNBcnJheShnKT9nLmluY2x1ZGVzKHsuLi5vLC4uLnV9W2JdKTp7Li4ubywuLi51fVtiXT09PWd9KT9bLi4uZCxtLHldOmR9LFtdKTtyZXR1cm4gek0oZSxzLGYsbj8uY2xhc3Msbj8uY2xhc3NOYW1lKX07Y29uc3QgSEc9ZT0+ZS5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCksR0c9ZT0+ZS5yZXBsYWNlKC9eKFtBLVpdKXxbXHMtX10rKFx3KS9nLCh0LG4scik9PnI/ci50b1VwcGVyQ2FzZSgpOm4udG9Mb3dlckNhc2UoKSksRk09ZT0+e2NvbnN0IHQ9R0coZSk7cmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX0sZjM9KC4uLmUpPT5lLmZpbHRlcigodCxuLHIpPT4hIXQmJnQudHJpbSgpIT09IiImJnIuaW5kZXhPZih0KT09PW4pLmpvaW4oIiAiKS50cmltKCksS0c9ZT0+e2Zvcihjb25zdCB0IGluIGUpaWYodC5zdGFydHNXaXRoKCJhcmlhLSIpfHx0PT09InJvbGUifHx0PT09InRpdGxlIilyZXR1cm4hMH07dmFyIFdHPXt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCx2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoyLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQifTtjb25zdCBZRz1DLmZvcndhcmRSZWYoKHtjb2xvcjplPSJjdXJyZW50Q29sb3IiLHNpemU6dD0yNCxzdHJva2VXaWR0aDpuPTIsYWJzb2x1dGVTdHJva2VXaWR0aDpyLGNsYXNzTmFtZTppPSIiLGNoaWxkcmVuOm8saWNvbk5vZGU6cywuLi51fSxmKT0+Qy5jcmVhdGVFbGVtZW50KCJzdmciLHtyZWY6ZiwuLi5XRyx3aWR0aDp0LGhlaWdodDp0LHN0cm9rZTplLHN0cm9rZVdpZHRoOnI/TnVtYmVyKG4pKjI0L051bWJlcih0KTpuLGNsYXNzTmFtZTpmMygibHVjaWRlIixpKSwuLi4hbyYmIUtHKHUpJiZ7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LC4uLnV9LFsuLi5zLm1hcCgoW2QscF0pPT5DLmNyZWF0ZUVsZW1lbnQoZCxwKSksLi4uQXJyYXkuaXNBcnJheShvKT9vOltvXV0pKTtjb25zdCB1dD0oZSx0KT0+e2NvbnN0IG49Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOnIsLi4uaX0sbyk9PkMuY3JlYXRlRWxlbWVudChZRyx7cmVmOm8saWNvbk5vZGU6dCxjbGFzc05hbWU6ZjMoYGx1Y2lkZS0ke0hHKEZNKGUpKX1gLGBsdWNpZGUtJHtlfWAsciksLi4uaX0pKTtyZXR1cm4gbi5kaXNwbGF5TmFtZT1GTShlKSxufTtjb25zdCBYRz1bWyJwYXRoIix7ZDoiTTIyIDEyaC0yLjQ4YTIgMiAwIDAgMC0xLjkzIDEuNDZsLTIuMzUgOC4zNmEuMjUuMjUgMCAwIDEtLjQ4IDBMOS4yNCAyLjE4YS4yNS4yNSAwIDAgMC0uNDggMGwtMi4zNSA4LjM2QTIgMiAwIDAgMSA0LjQ5IDEySDIiLGtleToiMTY5enNlIn1dXSxaRz11dCgiYWN0aXZpdHkiLFhHKTtjb25zdCBRRz1bWyJwYXRoIix7ZDoiTTE3IDcgNyAxNyIsa2V5OiIxNXRtbzEifV0sWyJwYXRoIix7ZDoiTTE3IDE3SDdWNyIsa2V5OiIxb3JnN3oifV1dLGRPPXV0KCJhcnJvdy1kb3duLWxlZnQiLFFHKTtjb25zdCBKRz1bWyJwYXRoIix7ZDoiTTUgMTJoMTQiLGtleToiMWF5czBoIn1dLFsicGF0aCIse2Q6Im0xMiA1IDcgNy03IDciLGtleToieHF1ejRjIn1dXSxITT11dCgiYXJyb3ctcmlnaHQiLEpHKTtjb25zdCBlSz1bWyJwYXRoIix7ZDoibTE4IDktNi02LTYgNiIsa2V5OiJrY3VueWkifV0sWyJwYXRoIix7ZDoiTTEyIDN2MTQiLGtleToiN2NmM3Y4In1dLFsicGF0aCIse2Q6Ik01IDIxaDE0IixrZXk6IjExYXd1MyJ9XV0sdEs9dXQoImFycm93LXVwLWZyb20tbGluZSIsZUspO2NvbnN0IG5LPVtbInBhdGgiLHtkOiJNNyA3aDEwdjEwIixrZXk6IjF0aXZuOSJ9XSxbInBhdGgiLHtkOiJNNyAxNyAxNyA3IixrZXk6IjF2a2l6YSJ9XV0sZW09dXQoImFycm93LXVwLXJpZ2h0IixuSyk7Y29uc3Qgcks9W1sicGF0aCIse2Q6Ik0xMC4yNjggMjFhMiAyIDAgMCAwIDMuNDY0IDAiLGtleToidnd2YnQ5In1dLFsicGF0aCIse2Q6Ik0zLjI2MiAxNS4zMjZBMSAxIDAgMCAwIDQgMTdoMTZhMSAxIDAgMCAwIC43NC0xLjY3M0MxOS40MSAxMy45NTYgMTggMTIuNDk5IDE4IDhBNiA2IDAgMCAwIDYgOGMwIDQuNDk5LTEuNDExIDUuOTU2LTIuNzM4IDcuMzI2IixrZXk6IjExZzl2aSJ9XV0saUs9dXQoImJlbGwiLHJLKTtjb25zdCBhSz1bWyJwYXRoIix7ZDoiTTEwIDEyaDQiLGtleToiYTU2YjBwIn1dLFsicGF0aCIse2Q6Ik0xMCA4aDQiLGtleToiMXNyMmFmIn1dLFsicGF0aCIse2Q6Ik0xNCAyMXYtM2EyIDIgMCAwIDAtNCAwdjMiLGtleToiMXJnaWVpIn1dLFsicGF0aCIse2Q6Ik02IDEwSDRhMiAyIDAgMCAwLTIgMnY3YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY5YTIgMiAwIDAgMC0yLTJoLTIiLGtleToic2VjbWkyIn1dLFsicGF0aCIse2Q6Ik02IDIxVjVhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTYiLGtleToiMTZyYTB0In1dXSxOcD11dCgiYnVpbGRpbmctMiIsYUspO2NvbnN0IG9LPVtbInBhdGgiLHtkOiJNMjAgNiA5IDE3bC01LTUiLGtleToiMWdtZjJjIn1dXSxhZj11dCgiY2hlY2siLG9LKTtjb25zdCBzSz1bWyJwYXRoIix7ZDoibTYgOSA2IDYgNi02IixrZXk6InFydW5zbCJ9XV0saE89dXQoImNoZXZyb24tZG93biIsc0spO2NvbnN0IGxLPVtbInBhdGgiLHtkOiJtMTggMTUtNi02LTYgNiIsa2V5OiIxNTN1ZHoifV1dLHVLPXV0KCJjaGV2cm9uLXVwIixsSyk7Y29uc3QgY0s9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIixrZXk6IjFtZ2xheSJ9XSxbImxpbmUiLHt4MToiMTIiLHgyOiIxMiIseTE6IjgiLHkyOiIxMiIsa2V5OiIxcGtldWgifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIuMDEiLHkxOiIxNiIseTI6IjE2IixrZXk6IjRkZnE5MCJ9XV0sWmI9dXQoImNpcmNsZS1hbGVydCIsY0spO2NvbnN0IGZLPVtbInBhdGgiLHtkOiJNMTIgNnY2bDQgMiIsa2V5OiJtbWs3eWcifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAiLGtleToiMW1nbGF5In1dXSxkSz11dCgiY2xvY2siLGZLKTtjb25zdCBoSz1bWyJyZWN0Iix7d2lkdGg6IjIwIixoZWlnaHQ6IjE0Iix4OiIyIix5OiI1IixyeDoiMiIsa2V5OiJ5bnlwOHoifV0sWyJsaW5lIix7eDE6IjIiLHgyOiIyMiIseTE6IjEwIix5MjoiMTAiLGtleToiMWIzdm1vIn1dXSxwSz11dCgiY3JlZGl0LWNhcmQiLGhLKTtjb25zdCBtSz1bWyJwYXRoIix7ZDoiTTEyIDE1VjMiLGtleToibTlnMXgxIn1dLFsicGF0aCIse2Q6Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00IixrZXk6ImloN24zaCJ9XSxbInBhdGgiLHtkOiJtNyAxMCA1IDUgNS01IixrZXk6ImJyc243MCJ9XV0seUs9dXQoImRvd25sb2FkIixtSyk7Y29uc3Qgdks9W1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIixrZXk6IjFtZ2xheSJ9XSxbInBhdGgiLHtkOiJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIsa2V5OiIxM28xemwifV0sWyJwYXRoIix7ZDoiTTIgMTJoMjAiLGtleToiOWk0cHU0In1dXSxnSz11dCgiZ2xvYmUiLHZLKTtjb25zdCBiSz1bWyJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMSAwIDktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCIsa2V5OiIxMzU3ZTMifV0sWyJwYXRoIix7ZDoiTTMgM3Y1aDUiLGtleToiMXhocThhIn1dLFsicGF0aCIse2Q6Ik0xMiA3djVsNCAyIixrZXk6IjFmZHYyaCJ9XV0seEs9dXQoImhpc3RvcnkiLGJLKTtjb25zdCB3Sz1bWyJwYXRoIix7ZDoiTTE1IDIxdi04YTEgMSAwIDAgMC0xLTFoLTRhMSAxIDAgMCAwLTEgMXY4IixrZXk6IjV3d2xyNSJ9XSxbInBhdGgiLHtkOiJNMyAxMGEyIDIgMCAwIDEgLjcwOS0xLjUyOGw3LTZhMiAyIDAgMCAxIDIuNTgyIDBsNyA2QTIgMiAwIDAgMSAyMSAxMHY5YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yeiIsa2V5OiJyNm5zczEifV1dLFNLPXV0KCJob3VzZSIsd0spO2NvbnN0IEFLPVtbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCIsa2V5OiIxbWdsYXkifV0sWyJwYXRoIix7ZDoiTTEyIDE2di00IixrZXk6IjFkdGlmdSJ9XSxbInBhdGgiLHtkOiJNMTIgOGguMDEiLGtleToiZTlib2kzIn1dXSxHTT11dCgiaW5mbyIsQUspO2NvbnN0IF9LPVtbInBhdGgiLHtkOiJNNSAxMmgxNCIsa2V5OiIxYXlzMGgifV1dLE9LPXV0KCJtaW51cyIsX0spO2NvbnN0IFRLPVtbInBhdGgiLHtkOiJNMjAuOTg1IDEyLjQ4NmE5IDkgMCAxIDEtOS40NzMtOS40NzJjLjQwNS0uMDIyLjYxNy40Ni40MDIuODAzYTYgNiAwIDAgMCA4LjI2OCA4LjI2OGMuMzQ0LS4yMTUuODI1LS4wMDQuODAzLjQwMSIsa2V5OiJrZnd0bSJ9XV0sS009dXQoIm1vb24iLFRLKTtjb25zdCBFSz1bWyJwYXRoIix7ZDoiTTUgMTJoMTQiLGtleToiMWF5czBoIn1dLFsicGF0aCIse2Q6Ik0xMiA1djE0IixrZXk6InM2OTlsZSJ9XV0sQmw9dXQoInBsdXMiLEVLKTtjb25zdCBDSz1bWyJwYXRoIix7ZDoiTTIxIDEyYTkgOSAwIDAgMC05LTkgOS43NSA5Ljc1IDAgMCAwLTYuNzQgMi43NEwzIDgiLGtleToiMTRzeG5lIn1dLFsicGF0aCIse2Q6Ik0zIDN2NWg1IixrZXk6IjF4aHE4YSJ9XSxbInBhdGgiLHtkOiJNMyAxMmE5IDkgMCAwIDAgOSA5IDkuNzUgOS43NSAwIDAgMCA2Ljc0LTIuNzRMMjEgMTYiLGtleToiMWhsYnNiIn1dLFsicGF0aCIse2Q6Ik0xNiAxNmg1djUiLGtleToiY2N3aWg1In1dXSxXTT11dCgicmVmcmVzaC1jY3ciLENLKTtjb25zdCBqSz1bWyJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDgiLGtleToidjloNXZjIn1dLFsicGF0aCIse2Q6Ik0yMSAzdjVoLTUiLGtleToiMXE3dG8wIn1dLFsicGF0aCIse2Q6Ik0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNiIsa2V5OiIzdWlmbDMifV0sWyJwYXRoIix7ZDoiTTggMTZIM3Y1IixrZXk6IjFjdjY3OCJ9XV0sUEs9dXQoInJlZnJlc2gtY3ciLGpLKTtjb25zdCBNSz1bWyJwYXRoIix7ZDoiTTMgN1Y1YTIgMiAwIDAgMSAyLTJoMiIsa2V5OiJhYTdsMXoifV0sWyJwYXRoIix7ZDoiTTE3IDNoMmEyIDIgMCAwIDEgMiAydjIiLGtleToiNHFjeTVvIn1dLFsicGF0aCIse2Q6Ik0yMSAxN3YyYTIgMiAwIDAgMS0yIDJoLTIiLGtleToiNnZ3cng4In1dLFsicGF0aCIse2Q6Ik03IDIxSDVhMiAyIDAgMCAxLTItMnYtMiIsa2V5OiJpb3FjenIifV1dLFJLPXV0KCJzY2FuIixNSyk7Y29uc3QgTks9W1sicGF0aCIse2Q6Ik05LjY3MSA0LjEzNmEyLjM0IDIuMzQgMCAwIDEgNC42NTkgMCAyLjM0IDIuMzQgMCAwIDAgMy4zMTkgMS45MTUgMi4zNCAyLjM0IDAgMCAxIDIuMzMgNC4wMzMgMi4zNCAyLjM0IDAgMCAwIDAgMy44MzEgMi4zNCAyLjM0IDAgMCAxLTIuMzMgNC4wMzMgMi4zNCAyLjM0IDAgMCAwLTMuMzE5IDEuOTE1IDIuMzQgMi4zNCAwIDAgMS00LjY1OSAwIDIuMzQgMi4zNCAwIDAgMC0zLjMyLTEuOTE1IDIuMzQgMi4zNCAwIDAgMS0yLjMzLTQuMDMzIDIuMzQgMi4zNCAwIDAgMCAwLTMuODMxQTIuMzQgMi4zNCAwIDAgMSA2LjM1IDYuMDUxYTIuMzQgMi4zNCAwIDAgMCAzLjMxOS0xLjkxNSIsa2V5OiIxaTVlY3cifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyIsa2V5OiIxdjd6cmQifV1dLGtLPXV0KCJzZXR0aW5ncyIsTkspO2NvbnN0IERLPVtbInBhdGgiLHtkOiJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiLGtleToib2VsNDF5In1dLFsicGF0aCIse2Q6Im05IDEyIDIgMiA0LTQiLGtleToiZHptbTc0In1dXSxMSz11dCgic2hpZWxkLWNoZWNrIixESyk7Y29uc3QgSUs9W1sicGF0aCIse2Q6Ik0yMCAxM2MwIDUtMy41IDcuNS03LjY2IDguOTVhMSAxIDAgMCAxLS42Ny0uMDFDNy41IDIwLjUgNCAxOCA0IDEzVjZhMSAxIDAgMCAxIDEtMWMyIDAgNC41LTEuMiA2LjI0LTIuNzJhMS4xNyAxLjE3IDAgMCAxIDEuNTIgMEMxNC41MSAzLjgxIDE3IDUgMTkgNWExIDEgMCAwIDEgMSAxeiIsa2V5OiJvZWw0MXkifV1dLCRLPXV0KCJzaGllbGQiLElLKTtjb25zdCBCSz1bWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiNCIsa2V5OiI0ZXhpcDIifV0sWyJwYXRoIix7ZDoiTTEyIDJ2MiIsa2V5OiJ0dXMwM20ifV0sWyJwYXRoIix7ZDoiTTEyIDIwdjIiLGtleToiMWxoMWtnIn1dLFsicGF0aCIse2Q6Im00LjkzIDQuOTMgMS40MSAxLjQxIixrZXk6IjE0OXQ2aiJ9XSxbInBhdGgiLHtkOiJtMTcuNjYgMTcuNjYgMS40MSAxLjQxIixrZXk6InB0Ymd1diJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyIixrZXk6IjF0OGY4biJ9XSxbInBhdGgiLHtkOiJNMjAgMTJoMiIsa2V5OiIxcThtancifV0sWyJwYXRoIix7ZDoibTYuMzQgMTcuNjYtMS40MSAxLjQxIixrZXk6IjFtOHp6NSJ9XSxbInBhdGgiLHtkOiJtMTkuMDcgNC45My0xLjQxIDEuNDEiLGtleToiMXNobGNzIn1dXSxZTT11dCgic3VuIixCSyk7Y29uc3QgVks9W1sicGF0aCIse2Q6Ik0xMCAxMXY2IixrZXk6Im5jbzBvbSJ9XSxbInBhdGgiLHtkOiJNMTQgMTF2NiIsa2V5OiJvdXR2MXUifV0sWyJwYXRoIix7ZDoiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNiIsa2V5OiJtaXl0cmMifV0sWyJwYXRoIix7ZDoiTTMgNmgxOCIsa2V5OiJkMHdtMGoifV0sWyJwYXRoIix7ZDoiTTggNlY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjIiLGtleToiZTc5MWppIn1dXSxxSz11dCgidHJhc2gtMiIsVkspO2NvbnN0IFVLPVtbInBhdGgiLHtkOiJNMTYgN2g2djYiLGtleToiYm94NTVsIn1dLFsicGF0aCIse2Q6Im0yMiA3LTguNSA4LjUtNS01TDIgMTciLGtleToiMXQxbTc5In1dXSx6Sz11dCgidHJlbmRpbmctdXAiLFVLKTtjb25zdCBGSz1bWyJwYXRoIix7ZDoiTTE5IDIxdi0yYTQgNCAwIDAgMC00LTRIOWE0IDQgMCAwIDAtNCA0djIiLGtleToiOTc1a2VsIn1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiNyIscjoiNCIsa2V5OiIxN3lzMGQifV1dLEhLPXV0KCJ1c2VyIixGSyk7Y29uc3QgR0s9W1sicGF0aCIse2Q6Ik0xOSA3VjRhMSAxIDAgMCAwLTEtMUg1YTIgMiAwIDAgMCAwIDRoMTVhMSAxIDAgMCAxIDEgMXY0aC0zYTIgMiAwIDAgMCAwIDRoM2ExIDEgMCAwIDAgMS0xdi0yYTEgMSAwIDAgMC0xLTEiLGtleToiMThldGI2In1dLFsicGF0aCIse2Q6Ik0zIDV2MTRhMiAyIDAgMCAwIDIgMmgxNWExIDEgMCAwIDAgMS0xdi00IixrZXk6InhvYzBxNCJ9XV0scE89dXQoIndhbGxldCIsR0spO2NvbnN0IEtLPVtbInBhdGgiLHtkOiJNMTggNiA2IDE4IixrZXk6IjFibDVmOCJ9XSxbInBhdGgiLHtkOiJtNiA2IDEyIDEyIixrZXk6ImQ4Yms2diJ9XV0sZDM9dXQoIngiLEtLKSxXSz1KNyxoMz1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3goejQse3JlZjpuLGNsYXNzTmFtZTpvdCgiZml4ZWQgdG9wLTAgei1bMTAwXSBmbGV4IG1heC1oLXNjcmVlbiB3LWZ1bGwgZmxleC1jb2wtcmV2ZXJzZSBwLTQgc206Ym90dG9tLTAgc206cmlnaHQtMCBzbTp0b3AtYXV0byBzbTpmbGV4LWNvbCBtZDptYXgtdy1bNDIwcHhdIixlKSwuLi50fSkpO2gzLmRpc3BsYXlOYW1lPXo0LmRpc3BsYXlOYW1lO2NvbnN0IFlLPWZPKCJncm91cCBwb2ludGVyLWV2ZW50cy1hdXRvIHJlbGF0aXZlIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gc3BhY2UteC00IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBwLTYgcHItOCBzaGFkb3ctbGcgdHJhbnNpdGlvbi1hbGwgZGF0YS1bc3dpcGU9Y2FuY2VsXTp0cmFuc2xhdGUteC0wIGRhdGEtW3N3aXBlPWVuZF06dHJhbnNsYXRlLXgtW3ZhcigtLXJhZGl4LXRvYXN0LXN3aXBlLWVuZC14KV0gZGF0YS1bc3dpcGU9bW92ZV06dHJhbnNsYXRlLXgtW3ZhcigtLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteCldIGRhdGEtW3N3aXBlPW1vdmVdOnRyYW5zaXRpb24tbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3dpcGU9ZW5kXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTgwIGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLXJpZ2h0LWZ1bGwgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS10b3AtZnVsbCBkYXRhLVtzdGF0ZT1vcGVuXTpzbTpzbGlkZS1pbi1mcm9tLWJvdHRvbS1mdWxsIix7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6ImJvcmRlciBiZy1iYWNrZ3JvdW5kIHRleHQtZm9yZWdyb3VuZCIsZGVzdHJ1Y3RpdmU6ImRlc3RydWN0aXZlIGdyb3VwIGJvcmRlci1kZXN0cnVjdGl2ZSBiZy1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQifX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OiJkZWZhdWx0In19KSxwMz1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSx2YXJpYW50OnQsLi4ubn0scik9PkEuanN4KEY0LHtyZWY6cixjbGFzc05hbWU6b3QoWUsoe3ZhcmlhbnQ6dH0pLGUpLC4uLm59KSk7cDMuZGlzcGxheU5hbWU9RjQuZGlzcGxheU5hbWU7Y29uc3QgWEs9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KEs0LHtyZWY6bixjbGFzc05hbWU6b3QoImlubGluZS1mbGV4IGgtOCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYmctdHJhbnNwYXJlbnQgcHgtMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6Ymctc2Vjb25kYXJ5IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmJvcmRlci1tdXRlZC80MCBncm91cC1bLmRlc3RydWN0aXZlXTpob3Zlcjpib3JkZXItZGVzdHJ1Y3RpdmUvMzAgZ3JvdXAtWy5kZXN0cnVjdGl2ZV06aG92ZXI6YmctZGVzdHJ1Y3RpdmUgZ3JvdXAtWy5kZXN0cnVjdGl2ZV06aG92ZXI6dGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmZvY3VzOnJpbmctZGVzdHJ1Y3RpdmUiLGUpLC4uLnR9KSk7WEsuZGlzcGxheU5hbWU9SzQuZGlzcGxheU5hbWU7Y29uc3QgbTM9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KFc0LHtyZWY6bixjbGFzc05hbWU6b3QoImFic29sdXRlIHJpZ2h0LTIgdG9wLTIgcm91bmRlZC1tZCBwLTEgdGV4dC1mb3JlZ3JvdW5kLzUwIG9wYWNpdHktMCB0cmFuc2l0aW9uLW9wYWNpdHkgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGZvY3VzOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgZ3JvdXAtWy5kZXN0cnVjdGl2ZV06dGV4dC1yZWQtMzAwIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmhvdmVyOnRleHQtcmVkLTUwIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmZvY3VzOnJpbmctcmVkLTQwMCBncm91cC1bLmRlc3RydWN0aXZlXTpmb2N1czpyaW5nLW9mZnNldC1yZWQtNjAwIixlKSwidG9hc3QtY2xvc2UiOiIiLC4uLnQsY2hpbGRyZW46QS5qc3goZDMse2NsYXNzTmFtZToiaC00IHctNCJ9KX0pKTttMy5kaXNwbGF5TmFtZT1XNC5kaXNwbGF5TmFtZTtjb25zdCB5Mz1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3goSDQse3JlZjpuLGNsYXNzTmFtZTpvdCgidGV4dC1zbSBmb250LXNlbWlib2xkIixlKSwuLi50fSkpO3kzLmRpc3BsYXlOYW1lPUg0LmRpc3BsYXlOYW1lO2NvbnN0IHYzPUMuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLC4uLnR9LG4pPT5BLmpzeChHNCx7cmVmOm4sY2xhc3NOYW1lOm90KCJ0ZXh0LXNtIG9wYWNpdHktOTAiLGUpLC4uLnR9KSk7djMuZGlzcGxheU5hbWU9RzQuZGlzcGxheU5hbWU7Y29uc3QgWks9MSxRSz0xZTY7bGV0IFFiPTA7ZnVuY3Rpb24gSksoKXtyZXR1cm4gUWI9KFFiKzEpJU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFFiLnRvU3RyaW5nKCl9Y29uc3QgSmI9bmV3IE1hcCxYTT1lPT57aWYoSmIuaGFzKGUpKXJldHVybjtjb25zdCB0PXNldFRpbWVvdXQoKCk9PntKYi5kZWxldGUoZSksaGYoe3R5cGU6IlJFTU9WRV9UT0FTVCIsdG9hc3RJZDplfSl9LFFLKTtKYi5zZXQoZSx0KX0sZVc9KGUsdCk9Pntzd2l0Y2godC50eXBlKXtjYXNlIkFERF9UT0FTVCI6cmV0dXJuey4uLmUsdG9hc3RzOlt0LnRvYXN0LC4uLmUudG9hc3RzXS5zbGljZSgwLFpLKX07Y2FzZSJVUERBVEVfVE9BU1QiOnJldHVybnsuLi5lLHRvYXN0czplLnRvYXN0cy5tYXAobj0+bi5pZD09PXQudG9hc3QuaWQ/ey4uLm4sLi4udC50b2FzdH06bil9O2Nhc2UiRElTTUlTU19UT0FTVCI6e2NvbnN0e3RvYXN0SWQ6bn09dDtyZXR1cm4gbj9YTShuKTplLnRvYXN0cy5mb3JFYWNoKHI9PntYTShyLmlkKX0pLHsuLi5lLHRvYXN0czplLnRvYXN0cy5tYXAocj0+ci5pZD09PW58fG49PT12b2lkIDA/ey4uLnIsb3BlbjohMX06cil9fWNhc2UiUkVNT1ZFX1RPQVNUIjpyZXR1cm4gdC50b2FzdElkPT09dm9pZCAwP3suLi5lLHRvYXN0czpbXX06ey4uLmUsdG9hc3RzOmUudG9hc3RzLmZpbHRlcihuPT5uLmlkIT09dC50b2FzdElkKX19fSxrcD1bXTtsZXQgRHA9e3RvYXN0czpbXX07ZnVuY3Rpb24gaGYoZSl7RHA9ZVcoRHAsZSksa3AuZm9yRWFjaCh0PT57dChEcCl9KX1mdW5jdGlvbiB0Vyh7Li4uZX0pe2NvbnN0IHQ9SksoKSxuPWk9PmhmKHt0eXBlOiJVUERBVEVfVE9BU1QiLHRvYXN0OnsuLi5pLGlkOnR9fSkscj0oKT0+aGYoe3R5cGU6IkRJU01JU1NfVE9BU1QiLHRvYXN0SWQ6dH0pO3JldHVybiBoZih7dHlwZToiQUREX1RPQVNUIix0b2FzdDp7Li4uZSxpZDp0LG9wZW46ITAsb25PcGVuQ2hhbmdlOmk9PntpfHxyKCl9fX0pLHtpZDp0LGRpc21pc3M6cix1cGRhdGU6bn19ZnVuY3Rpb24gblcoKXtjb25zdFtlLHRdPUMudXNlU3RhdGUoRHApO3JldHVybiBDLnVzZUVmZmVjdCgoKT0+KGtwLnB1c2godCksKCk9Pntjb25zdCBuPWtwLmluZGV4T2YodCk7bj4tMSYma3Auc3BsaWNlKG4sMSl9KSxbZV0pLHsuLi5lLHRvYXN0OnRXLGRpc21pc3M6bj0+aGYoe3R5cGU6IkRJU01JU1NfVE9BU1QiLHRvYXN0SWQ6bn0pfX1mdW5jdGlvbiByVygpe2NvbnN0e3RvYXN0czplfT1uVygpO3JldHVybiBBLmpzeHMoV0sse2NoaWxkcmVuOltlLm1hcChmdW5jdGlvbih7aWQ6dCx0aXRsZTpuLGRlc2NyaXB0aW9uOnIsYWN0aW9uOmksLi4ub30pe3JldHVybiBBLmpzeHMocDMsey4uLm8sY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIGdhcC0xIixjaGlsZHJlbjpbbiYmQS5qc3goeTMse2NoaWxkcmVuOm59KSxyJiZBLmpzeCh2Myx7Y2hpbGRyZW46cn0pXX0pLGksQS5qc3gobTMse30pXX0sdCl9KSxBLmpzeChoMyx7fSldfSl9dmFyIGlXPXdkWyIgdXNlSWQgIi50cmltKCkudG9TdHJpbmcoKV18fCgoKT0+e30pLGFXPTA7ZnVuY3Rpb24gaW8oZSl7Y29uc3RbdCxuXT1DLnVzZVN0YXRlKGlXKCkpO3JldHVybiBnbigoKT0+e24ocj0+cj8/U3RyaW5nKGFXKyspKX0sW2VdKSx0P2ByYWRpeC0ke3R9YDoiIn1jb25zdCBvVz1bInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCJdLHNvPU1hdGgubWluLGFhPU1hdGgubWF4LHRtPU1hdGgucm91bmQsc3A9TWF0aC5mbG9vcixvYT1lPT4oe3g6ZSx5OmV9KSxzVz17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtmdW5jdGlvbiBnMyhlLHQsbil7cmV0dXJuIGFhKGUsc28odCxuKSl9ZnVuY3Rpb24gY2EoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSh0KTplfWZ1bmN0aW9uIGxvKGUpe3JldHVybiBlLnNwbGl0KCItIilbMF19ZnVuY3Rpb24gUnUoZSl7cmV0dXJuIGUuc3BsaXQoIi0iKVsxXX1mdW5jdGlvbiBtTyhlKXtyZXR1cm4gZT09PSJ4Ij8ieSI6IngifWZ1bmN0aW9uIHlPKGUpe3JldHVybiBlPT09InkiPyJoZWlnaHQiOiJ3aWR0aCJ9ZnVuY3Rpb24gU2koZSl7Y29uc3QgdD1lWzBdO3JldHVybiB0PT09InQifHx0PT09ImIiPyJ5IjoieCJ9ZnVuY3Rpb24gdk8oZSl7cmV0dXJuIG1PKFNpKGUpKX1mdW5jdGlvbiBsVyhlLHQsbil7bj09PXZvaWQgMCYmKG49ITEpO2NvbnN0IHI9UnUoZSksaT12TyhlKSxvPXlPKGkpO2xldCBzPWk9PT0ieCI/cj09PShuPyJlbmQiOiJzdGFydCIpPyJyaWdodCI6ImxlZnQiOnI9PT0ic3RhcnQiPyJib3R0b20iOiJ0b3AiO3JldHVybiB0LnJlZmVyZW5jZVtvXT50LmZsb2F0aW5nW29dJiYocz1ubShzKSksW3Msbm0ocyldfWZ1bmN0aW9uIHVXKGUpe2NvbnN0IHQ9bm0oZSk7cmV0dXJuW0ZTKGUpLHQsRlModCldfWZ1bmN0aW9uIEZTKGUpe3JldHVybiBlLmluY2x1ZGVzKCJzdGFydCIpP2UucmVwbGFjZSgic3RhcnQiLCJlbmQiKTplLnJlcGxhY2UoImVuZCIsInN0YXJ0Iil9Y29uc3QgWk09WyJsZWZ0IiwicmlnaHQiXSxRTT1bInJpZ2h0IiwibGVmdCJdLGNXPVsidG9wIiwiYm90dG9tIl0sZlc9WyJib3R0b20iLCJ0b3AiXTtmdW5jdGlvbiBkVyhlLHQsbil7c3dpdGNoKGUpe2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6cmV0dXJuIG4/dD9RTTpaTTp0P1pNOlFNO2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6cmV0dXJuIHQ/Y1c6Zlc7ZGVmYXVsdDpyZXR1cm5bXX19ZnVuY3Rpb24gaFcoZSx0LG4scil7Y29uc3QgaT1SdShlKTtsZXQgbz1kVyhsbyhlKSxuPT09InN0YXJ0IixyKTtyZXR1cm4gaSYmKG89by5tYXAocz0+cysiLSIraSksdCYmKG89by5jb25jYXQoby5tYXAoRlMpKSkpLG99ZnVuY3Rpb24gbm0oZSl7Y29uc3QgdD1sbyhlKTtyZXR1cm4gc1dbdF0rZS5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gcFcoZSl7dmFyIHQsbixyLGk7cmV0dXJue3RvcDoodD1lLnRvcCkhPW51bGw/dDowLHJpZ2h0OihuPWUucmlnaHQpIT1udWxsP246MCxib3R0b206KHI9ZS5ib3R0b20pIT1udWxsP3I6MCxsZWZ0OihpPWUubGVmdCkhPW51bGw/aTowfX1mdW5jdGlvbiBiMyhlKXtyZXR1cm4gdHlwZW9mIGUhPSJudW1iZXIiP3BXKGUpOnt0b3A6ZSxyaWdodDplLGJvdHRvbTplLGxlZnQ6ZX19ZnVuY3Rpb24gcm0oZSl7Y29uc3R7eDp0LHk6bix3aWR0aDpyLGhlaWdodDppfT1lO3JldHVybnt3aWR0aDpyLGhlaWdodDppLHRvcDpuLGxlZnQ6dCxyaWdodDp0K3IsYm90dG9tOm4raSx4OnQseTpufX1mdW5jdGlvbiBKTShlLHQsbil7bGV0e3JlZmVyZW5jZTpyLGZsb2F0aW5nOml9PWU7Y29uc3Qgbz1TaSh0KSxzPXZPKHQpLHU9eU8ocyksZj1sbyh0KSxkPW89PT0ieSIscD1yLngrci53aWR0aC8yLWkud2lkdGgvMixtPXIueStyLmhlaWdodC8yLWkuaGVpZ2h0LzIseT1yW3VdLzItaVt1XS8yO2xldCB4O3N3aXRjaChmKXtjYXNlInRvcCI6eD17eDpwLHk6ci55LWkuaGVpZ2h0fTticmVhaztjYXNlImJvdHRvbSI6eD17eDpwLHk6ci55K3IuaGVpZ2h0fTticmVhaztjYXNlInJpZ2h0Ijp4PXt4OnIueCtyLndpZHRoLHk6bX07YnJlYWs7Y2FzZSJsZWZ0Ijp4PXt4OnIueC1pLndpZHRoLHk6bX07YnJlYWs7ZGVmYXVsdDp4PXt4OnIueCx5OnIueX19Y29uc3Qgdz1SdSh0KTtyZXR1cm4gdyYmKHhbc10rPXkqKHc9PT0iZW5kIj8xOi0xKSoobiYmZD8tMToxKSkseH1hc3luYyBmdW5jdGlvbiBtVyhlLHQpe3ZhciBuO3Q9PT12b2lkIDAmJih0PXt9KTtjb25zdHt4OnIseTppLHBsYXRmb3JtOm8scmVjdHM6cyxlbGVtZW50czp1LHN0cmF0ZWd5OmZ9PWUse2JvdW5kYXJ5OmQ9ImNsaXBwaW5nQW5jZXN0b3JzIixyb290Qm91bmRhcnk6cD0idmlld3BvcnQiLGVsZW1lbnRDb250ZXh0Om09ImZsb2F0aW5nIixhbHRCb3VuZGFyeTp5PSExLHBhZGRpbmc6eD0wfT1jYSh0LGUpLHc9YjMoeCksZz11W3k/bT09PSJmbG9hdGluZyI/InJlZmVyZW5jZSI6ImZsb2F0aW5nIjptXSxfPXJtKGF3YWl0IG8uZ2V0Q2xpcHBpbmdSZWN0KHtlbGVtZW50OihuPWF3YWl0KG8uaXNFbGVtZW50PT1udWxsP3ZvaWQgMDpvLmlzRWxlbWVudChnKSkpPT1udWxsfHxuP2c6Zy5jb250ZXh0RWxlbWVudHx8YXdhaXQoby5nZXREb2N1bWVudEVsZW1lbnQ9PW51bGw/dm9pZCAwOm8uZ2V0RG9jdW1lbnRFbGVtZW50KHUuZmxvYXRpbmcpKSxib3VuZGFyeTpkLHJvb3RCb3VuZGFyeTpwLHN0cmF0ZWd5OmZ9KSksTz1tPT09ImZsb2F0aW5nIj97eDpyLHk6aSx3aWR0aDpzLmZsb2F0aW5nLndpZHRoLGhlaWdodDpzLmZsb2F0aW5nLmhlaWdodH06cy5yZWZlcmVuY2UsRT1hd2FpdChvLmdldE9mZnNldFBhcmVudD09bnVsbD92b2lkIDA6by5nZXRPZmZzZXRQYXJlbnQodS5mbG9hdGluZykpLGo9YXdhaXQoby5pc0VsZW1lbnQ9PW51bGw/dm9pZCAwOm8uaXNFbGVtZW50KEUpKSYmYXdhaXQoby5nZXRTY2FsZT09bnVsbD92b2lkIDA6by5nZXRTY2FsZShFKSl8fHt4OjEseToxfSxUPXJtKG8uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Q/YXdhaXQgby5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7ZWxlbWVudHM6dSxyZWN0Ok8sb2Zmc2V0UGFyZW50OkUsc3RyYXRlZ3k6Zn0pOk8pO3JldHVybnt0b3A6KF8udG9wLVQudG9wK3cudG9wKS9qLnksYm90dG9tOihULmJvdHRvbS1fLmJvdHRvbSt3LmJvdHRvbSkvai55LGxlZnQ6KF8ubGVmdC1ULmxlZnQrdy5sZWZ0KS9qLngscmlnaHQ6KFQucmlnaHQtXy5yaWdodCt3LnJpZ2h0KS9qLnh9fWNvbnN0IHlXPTUwLHZXPWFzeW5jKGUsdCxuKT0+e2NvbnN0e3BsYWNlbWVudDpyPSJib3R0b20iLHN0cmF0ZWd5Omk9ImFic29sdXRlIixtaWRkbGV3YXJlOm89W10scGxhdGZvcm06c309bix1PXMuZGV0ZWN0T3ZlcmZsb3c/czp7Li4ucyxkZXRlY3RPdmVyZmxvdzptV30sZj1hd2FpdChzLmlzUlRMPT1udWxsP3ZvaWQgMDpzLmlzUlRMKHQpKTtsZXQgZD1hd2FpdCBzLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dCxzdHJhdGVneTppfSkse3g6cCx5Om19PUpNKGQscixmKSx5PXIseD0wO2NvbnN0IHc9e307Zm9yKGxldCBiPTA7YjxvLmxlbmd0aDtiKyspe2NvbnN0IGc9b1tiXTtpZighZyljb250aW51ZTtjb25zdHtuYW1lOl8sZm46T309Zyx7eDpFLHk6aixkYXRhOlQscmVzZXQ6UH09YXdhaXQgTyh7eDpwLHk6bSxpbml0aWFsUGxhY2VtZW50OnIscGxhY2VtZW50Onksc3RyYXRlZ3k6aSxtaWRkbGV3YXJlRGF0YTp3LHJlY3RzOmQscGxhdGZvcm06dSxlbGVtZW50czp7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dH19KTtwPUU/P3AsbT1qPz9tLHdbX109ey4uLndbX10sLi4uVH0sUCYmeDx5VyYmKHgrKyx0eXBlb2YgUD09Im9iamVjdCImJihQLnBsYWNlbWVudCYmKHk9UC5wbGFjZW1lbnQpLFAucmVjdHMmJihkPVAucmVjdHM9PT0hMD9hd2FpdCBzLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dCxzdHJhdGVneTppfSk6UC5yZWN0cykse3g6cCx5Om19PUpNKGQseSxmKSksYj0tMSl9cmV0dXJue3g6cCx5Om0scGxhY2VtZW50Onksc3RyYXRlZ3k6aSxtaWRkbGV3YXJlRGF0YTp3fX0sZ1c9ZT0+KHtuYW1lOiJhcnJvdyIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50OmkscmVjdHM6byxwbGF0Zm9ybTpzLGVsZW1lbnRzOnUsbWlkZGxld2FyZURhdGE6Zn09dCx7ZWxlbWVudDpkLHBhZGRpbmc6cD0wfT1jYShlLHQpfHx7fTtpZihkPT1udWxsKXJldHVybnt9O2NvbnN0IG09YjMocCkseT17eDpuLHk6cn0seD12TyhpKSx3PXlPKHgpLGI9YXdhaXQgcy5nZXREaW1lbnNpb25zKGQpLGc9eD09PSJ5IixfPWc/InRvcCI6ImxlZnQiLE89Zz8iYm90dG9tIjoicmlnaHQiLEU9Zz8iY2xpZW50SGVpZ2h0IjoiY2xpZW50V2lkdGgiLGo9by5yZWZlcmVuY2Vbd10rby5yZWZlcmVuY2VbeF0teVt4XS1vLmZsb2F0aW5nW3ddLFQ9eVt4XS1vLnJlZmVyZW5jZVt4XSxQPWF3YWl0KHMuZ2V0T2Zmc2V0UGFyZW50PT1udWxsP3ZvaWQgMDpzLmdldE9mZnNldFBhcmVudChkKSk7bGV0IE49UD9QW0VdOjA7KCFOfHwhYXdhaXQocy5pc0VsZW1lbnQ9PW51bGw/dm9pZCAwOnMuaXNFbGVtZW50KFApKSkmJihOPXUuZmxvYXRpbmdbRV18fG8uZmxvYXRpbmdbd10pO2NvbnN0IFI9ai8yLVQvMixJPU4vMi1iW3ddLzItMSxWPXNvKG1bX10sSSksQj1zbyhtW09dLEkpLCQ9Ti1iW3ddLUIsej1OLzItYlt3XS8yK1IsVT1nMyhWLHosJCksSz0hZi5hcnJvdyYmUnUoaSkhPW51bGwmJnohPT1VJiZvLnJlZmVyZW5jZVt3XS8yLSh6PFY/VjpCKS1iW3ddLzI8MCxMPUs/ejxWP3otVjp6LSQ6MDtyZXR1cm57W3hdOnlbeF0rTCxkYXRhOntbeF06VSxjZW50ZXJPZmZzZXQ6ei1VLUwsLi4uSyYme2FsaWdubWVudE9mZnNldDpMfX0scmVzZXQ6S319fSksYlc9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToiZmxpcCIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLHI7Y29uc3R7cGxhY2VtZW50OmksbWlkZGxld2FyZURhdGE6byxyZWN0czpzLGluaXRpYWxQbGFjZW1lbnQ6dSxwbGF0Zm9ybTpmLGVsZW1lbnRzOmR9PXQse21haW5BeGlzOnA9ITAsY3Jvc3NBeGlzOm09ITAsZmFsbGJhY2tQbGFjZW1lbnRzOnksZmFsbGJhY2tTdHJhdGVneTp4PSJiZXN0Rml0IixmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uOnc9Im5vbmUiLGZsaXBBbGlnbm1lbnQ6Yj0hMCwuLi5nfT1jYShlLHQpO2lmKChuPW8uYXJyb3cpIT1udWxsJiZuLmFsaWdubWVudE9mZnNldClyZXR1cm57fTtjb25zdCBfPWxvKGkpLE89U2kodSksRT1sbyh1KT09PXUsaj1hd2FpdChmLmlzUlRMPT1udWxsP3ZvaWQgMDpmLmlzUlRMKGQuZmxvYXRpbmcpKSxUPXl8fChFfHwhYj9bbm0odSldOnVXKHUpKSxQPXchPT0ibm9uZSI7IXkmJlAmJlQucHVzaCguLi5oVyh1LGIsdyxqKSk7Y29uc3QgTj1bdSwuLi5UXSxSPWF3YWl0IGYuZGV0ZWN0T3ZlcmZsb3codCxnKSxJPVtdO2xldCBWPSgocj1vLmZsaXApPT1udWxsP3ZvaWQgMDpyLm92ZXJmbG93cyl8fFtdO2lmKHAmJkkucHVzaChSW19dKSxtKXtjb25zdCBVPWxXKGkscyxqKTtJLnB1c2goUltVWzBdXSxSW1VbMV1dKX1pZihWPVsuLi5WLHtwbGFjZW1lbnQ6aSxvdmVyZmxvd3M6SX1dLCFJLmV2ZXJ5KFU9PlU8PTApKXt2YXIgQiwkO2NvbnN0IFU9KCgoQj1vLmZsaXApPT1udWxsP3ZvaWQgMDpCLmluZGV4KXx8MCkrMSxLPU5bVV07aWYoSyYmKCEobT09PSJhbGlnbm1lbnQiP08hPT1TaShLKTohMSl8fFYuZXZlcnkoSD0+U2koSC5wbGFjZW1lbnQpPT09Tz9ILm92ZXJmbG93c1swXT4wOiEwKSkpcmV0dXJue2RhdGE6e2luZGV4OlUsb3ZlcmZsb3dzOlZ9LHJlc2V0OntwbGFjZW1lbnQ6S319O2xldCBMPSgkPVYuZmlsdGVyKFc9Plcub3ZlcmZsb3dzWzBdPD0wKS5zb3J0KChXLEgpPT5XLm92ZXJmbG93c1sxXS1ILm92ZXJmbG93c1sxXSlbMF0pPT1udWxsP3ZvaWQgMDokLnBsYWNlbWVudDtpZighTClzd2l0Y2goeCl7Y2FzZSJiZXN0Rml0Ijp7dmFyIHo7Y29uc3QgVz0oej1WLmZpbHRlcihIPT57aWYoUCl7Y29uc3QgZWU9U2koSC5wbGFjZW1lbnQpO3JldHVybiBlZT09PU98fGVlPT09InkifXJldHVybiEwfSkubWFwKEg9PltILnBsYWNlbWVudCxILm92ZXJmbG93cy5maWx0ZXIoZWU9PmVlPjApLnJlZHVjZSgoZWUsayk9PmVlK2ssMCldKS5zb3J0KChILGVlKT0+SFsxXS1lZVsxXSlbMF0pPT1udWxsP3ZvaWQgMDp6WzBdO1cmJihMPVcpO2JyZWFrfWNhc2UiaW5pdGlhbFBsYWNlbWVudCI6TD11O2JyZWFrfWlmKGkhPT1MKXJldHVybntyZXNldDp7cGxhY2VtZW50Okx9fX1yZXR1cm57fX19fTtmdW5jdGlvbiBlUihlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiB0UihlKXtyZXR1cm4gb1cuc29tZSh0PT5lW3RdPj0wKX1jb25zdCB4Vz1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJoaWRlIixvcHRpb25zOmUsYXN5bmMgZm4odCl7Y29uc3R7cmVjdHM6bixwbGF0Zm9ybTpyfT10LHtzdHJhdGVneTppPSJyZWZlcmVuY2VIaWRkZW4iLC4uLm99PWNhKGUsdCk7c3dpdGNoKGkpe2Nhc2UicmVmZXJlbmNlSGlkZGVuIjp7Y29uc3Qgcz1hd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLm8sZWxlbWVudENvbnRleHQ6InJlZmVyZW5jZSJ9KSx1PWVSKHMsbi5yZWZlcmVuY2UpO3JldHVybntkYXRhOntyZWZlcmVuY2VIaWRkZW5PZmZzZXRzOnUscmVmZXJlbmNlSGlkZGVuOnRSKHUpfX19Y2FzZSJlc2NhcGVkIjp7Y29uc3Qgcz1hd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLm8sYWx0Qm91bmRhcnk6ITB9KSx1PWVSKHMsbi5mbG9hdGluZyk7cmV0dXJue2RhdGE6e2VzY2FwZWRPZmZzZXRzOnUsZXNjYXBlZDp0Uih1KX19fWRlZmF1bHQ6cmV0dXJue319fX19LHgzPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2FzeW5jIGZ1bmN0aW9uIHdXKGUsdCl7Y29uc3R7cGxhY2VtZW50Om4scGxhdGZvcm06cixlbGVtZW50czppfT1lLG89YXdhaXQoci5pc1JUTD09bnVsbD92b2lkIDA6ci5pc1JUTChpLmZsb2F0aW5nKSkscz1sbyhuKSx1PVJ1KG4pLGY9U2kobik9PT0ieSIsZD14My5oYXMocyk/LTE6MSxwPW8mJmY/LTE6MSxtPWNhKHQsZSk7bGV0e21haW5BeGlzOnksY3Jvc3NBeGlzOngsYWxpZ25tZW50QXhpczp3fT10eXBlb2YgbT09Im51bWJlciI/e21haW5BeGlzOm0sY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6bS5tYWluQXhpc3x8MCxjcm9zc0F4aXM6bS5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczptLmFsaWdubWVudEF4aXN9O3JldHVybiB1JiZ0eXBlb2Ygdz09Im51bWJlciImJih4PXU9PT0iZW5kIj93Ki0xOncpLGY/e3g6eCpwLHk6eSpkfTp7eDp5KmQseTp4KnB9fWNvbnN0IFNXPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHt4OmkseTpvLHBsYWNlbWVudDpzLG1pZGRsZXdhcmVEYXRhOnV9PXQsZj1hd2FpdCB3Vyh0LGUpO3JldHVybiBzPT09KChuPXUub2Zmc2V0KT09bnVsbD92b2lkIDA6bi5wbGFjZW1lbnQpJiYocj11LmFycm93KSE9bnVsbCYmci5hbGlnbm1lbnRPZmZzZXQ/e306e3g6aStmLngseTpvK2YueSxkYXRhOnsuLi5mLHBsYWNlbWVudDpzfX19fX0sQVc9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToic2hpZnQiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpyLHBsYWNlbWVudDppLHBsYXRmb3JtOm99PXQse21haW5BeGlzOnM9ITAsY3Jvc3NBeGlzOnU9ITEsbGltaXRlcjpmPXtmbjpPPT57bGV0e3g6RSx5Omp9PU87cmV0dXJue3g6RSx5Omp9fX0sLi4uZH09Y2EoZSx0KSxwPXt4Om4seTpyfSxtPWF3YWl0IG8uZGV0ZWN0T3ZlcmZsb3codCxkKSx5PVNpKGkpLHg9bU8oeSk7bGV0IHc9cFt4XSxiPXBbeV07Y29uc3QgZz0oTyxFKT0+ZzMoRSttW089PT0ieSI/InRvcCI6ImxlZnQiXSxFLEUtbVtPPT09InkiPyJib3R0b20iOiJyaWdodCJdKTtzJiYodz1nKHgsdykpLHUmJihiPWcoeSxiKSk7Y29uc3QgXz1mLmZuKHsuLi50LFt4XTp3LFt5XTpifSk7cmV0dXJuey4uLl8sZGF0YTp7eDpfLngtbix5Ol8ueS1yLGVuYWJsZWQ6e1t4XTpzLFt5XTp1fX19fX19LF9XPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse29wdGlvbnM6ZSxmbih0KXt2YXIgbixyO2NvbnN0e3g6aSx5Om8scGxhY2VtZW50OnMscmVjdHM6dSxtaWRkbGV3YXJlRGF0YTpmfT10LHtvZmZzZXQ6ZD0wLG1haW5BeGlzOnA9ITAsY3Jvc3NBeGlzOm09ITB9PWNhKGUsdCkseT17eDppLHk6b30seD1TaShzKSx3PW1PKHgpO2xldCBiPXlbd10sZz15W3hdO2NvbnN0IF89Y2EoZCx0KSxPPXR5cGVvZiBfPT0ibnVtYmVyIj97bWFpbkF4aXM6Xyxjcm9zc0F4aXM6MH06e21haW5BeGlzOihuPV8ubWFpbkF4aXMpIT1udWxsP246MCxjcm9zc0F4aXM6KHI9Xy5jcm9zc0F4aXMpIT1udWxsP3I6MH07aWYocCl7Y29uc3QgVD13PT09InkiPyJoZWlnaHQiOiJ3aWR0aCIsUD11LnJlZmVyZW5jZVt3XS11LmZsb2F0aW5nW1RdK08ubWFpbkF4aXMsTj11LnJlZmVyZW5jZVt3XSt1LnJlZmVyZW5jZVtUXS1PLm1haW5BeGlzO2I8UD9iPVA6Yj5OJiYoYj1OKX1pZihtKXt2YXIgRSxqO2NvbnN0IFQ9dz09PSJ5Ij8id2lkdGgiOiJoZWlnaHQiLFA9eDMuaGFzKGxvKHMpKSxOPXUucmVmZXJlbmNlW3hdLXUuZmxvYXRpbmdbVF0rKFAmJigoRT1mLm9mZnNldCk9PW51bGw/dm9pZCAwOkVbeF0pfHwwKSsoUD8wOk8uY3Jvc3NBeGlzKSxSPXUucmVmZXJlbmNlW3hdK3UucmVmZXJlbmNlW1RdKyhQPzA6KChqPWYub2Zmc2V0KT09bnVsbD92b2lkIDA6alt4XSl8fDApLShQP08uY3Jvc3NBeGlzOjApO2c8Tj9nPU46Zz5SJiYoZz1SKX1yZXR1cm57W3ddOmIsW3hdOmd9fX19LE9XPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6InNpemUiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixyZWN0czpyLHBsYXRmb3JtOmksZWxlbWVudHM6b309dCx7YXBwbHk6cz0oKT0+e30sLi4udX09Y2EoZSx0KSxmPWF3YWl0IGkuZGV0ZWN0T3ZlcmZsb3codCx1KSxkPWxvKG4pLHA9UnUobiksbT1TaShuKT09PSJ5Iix7d2lkdGg6eSxoZWlnaHQ6eH09ci5mbG9hdGluZztsZXQgdyxiO2Q9PT0idG9wInx8ZD09PSJib3R0b20iPyh3PWQsYj1wPT09KGF3YWl0KGkuaXNSVEw9PW51bGw/dm9pZCAwOmkuaXNSVEwoby5mbG9hdGluZykpPyJzdGFydCI6ImVuZCIpPyJsZWZ0IjoicmlnaHQiKTooYj1kLHc9cD09PSJlbmQiPyJ0b3AiOiJib3R0b20iKTtjb25zdCBnPXgtZi50b3AtZi5ib3R0b20sXz15LWYubGVmdC1mLnJpZ2h0LE89c28oeC1mW3ddLGcpLEU9c28oeS1mW2JdLF8pLGo9dC5taWRkbGV3YXJlRGF0YS5zaGlmdCxUPSFqO2xldCBQPU8sTj1FO2ohPW51bGwmJmouZW5hYmxlZC54JiYoTj1fKSxqIT1udWxsJiZqLmVuYWJsZWQueSYmKFA9ZyksVCYmIXAmJihtP049eS0yKmFhKGYubGVmdCxmLnJpZ2h0KTpQPXgtMiphYShmLnRvcCxmLmJvdHRvbSkpLGF3YWl0IHMoey4uLnQsYXZhaWxhYmxlV2lkdGg6TixhdmFpbGFibGVIZWlnaHQ6UH0pO2NvbnN0IFI9YXdhaXQgaS5nZXREaW1lbnNpb25zKG8uZmxvYXRpbmcpO3JldHVybiB5IT09Ui53aWR0aHx8eCE9PVIuaGVpZ2h0P3tyZXNldDp7cmVjdHM6ITB9fTp7fX19fTtmdW5jdGlvbiBQeSgpe3JldHVybiB0eXBlb2Ygd2luZG93PCJ1In1mdW5jdGlvbiBOdShlKXtyZXR1cm4gdzMoZSk/KGUubm9kZU5hbWV8fCIiKS50b0xvd2VyQ2FzZSgpOiIjZG9jdW1lbnQifWZ1bmN0aW9uIGlyKGUpe3ZhciB0O3JldHVybihlPT1udWxsfHwodD1lLm93bmVyRG9jdW1lbnQpPT1udWxsP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8d2luZG93fWZ1bmN0aW9uIHlhKGUpe3ZhciB0O3JldHVybih0PSh3MyhlKT9lLm93bmVyRG9jdW1lbnQ6ZS5kb2N1bWVudCl8fHdpbmRvdy5kb2N1bWVudCk9PW51bGw/dm9pZCAwOnQuZG9jdW1lbnRFbGVtZW50fWZ1bmN0aW9uIHczKGUpe3JldHVybiBQeSgpP2UgaW5zdGFuY2VvZiBOb2RlfHxlIGluc3RhbmNlb2YgaXIoZSkuTm9kZTohMX1mdW5jdGlvbiBQaShlKXtyZXR1cm4gUHkoKT9lIGluc3RhbmNlb2YgRWxlbWVudHx8ZSBpbnN0YW5jZW9mIGlyKGUpLkVsZW1lbnQ6ITF9ZnVuY3Rpb24gdm8oZSl7cmV0dXJuIFB5KCk/ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHxlIGluc3RhbmNlb2YgaXIoZSkuSFRNTEVsZW1lbnQ6ITF9ZnVuY3Rpb24gblIoZSl7cmV0dXJuIVB5KCl8fHR5cGVvZiBTaGFkb3dSb290PiJ1Ij8hMTplIGluc3RhbmNlb2YgU2hhZG93Um9vdHx8ZSBpbnN0YW5jZW9mIGlyKGUpLlNoYWRvd1Jvb3R9ZnVuY3Rpb24gTXkoZSl7Y29uc3R7b3ZlcmZsb3c6dCxvdmVyZmxvd1g6bixvdmVyZmxvd1k6cixkaXNwbGF5Oml9PU1pKGUpO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KHQrcituKSYmaSE9PSJpbmxpbmUiJiZpIT09ImNvbnRlbnRzIn1mdW5jdGlvbiBUVyhlKXtyZXR1cm4vXih0YWJsZXx0ZHx0aCkkLy50ZXN0KE51KGUpKX1mdW5jdGlvbiBSeShlKXt0cnl7aWYoZS5tYXRjaGVzKCI6cG9wb3Zlci1vcGVuIikpcmV0dXJuITB9Y2F0Y2h7fXRyeXtyZXR1cm4gZS5tYXRjaGVzKCI6bW9kYWwiKX1jYXRjaHtyZXR1cm4hMX19Y29uc3QgRVc9L3RyYW5zZm9ybXx0cmFuc2xhdGV8c2NhbGV8cm90YXRlfHBlcnNwZWN0aXZlfGZpbHRlci8sQ1c9L3BhaW50fGxheW91dHxzdHJpY3R8Y29udGVudC8sS289ZT0+ISFlJiZlIT09Im5vbmUiO2xldCBlMDtmdW5jdGlvbiBnTyhlKXtjb25zdCB0PVBpKGUpP01pKGUpOmU7cmV0dXJuIEtvKHQudHJhbnNmb3JtKXx8S28odC50cmFuc2xhdGUpfHxLbyh0LnNjYWxlKXx8S28odC5yb3RhdGUpfHxLbyh0LnBlcnNwZWN0aXZlKXx8IWJPKCkmJihLbyh0LmJhY2tkcm9wRmlsdGVyKXx8S28odC5maWx0ZXIpKXx8RVcudGVzdCh0LndpbGxDaGFuZ2V8fCIiKXx8Q1cudGVzdCh0LmNvbnRhaW58fCIiKX1mdW5jdGlvbiBqVyhlKXtsZXQgdD15cyhlKTtmb3IoO3ZvKHQpJiYhamYodCk7KXtpZihnTyh0KSlyZXR1cm4gdDtpZihSeSh0KSlyZXR1cm4gbnVsbDt0PXlzKHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIGJPKCl7cmV0dXJuIGUwPT1udWxsJiYoZTA9dHlwZW9mIENTUzwidSImJkNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKCItd2Via2l0LWJhY2tkcm9wLWZpbHRlciIsIm5vbmUiKSksZTB9ZnVuY3Rpb24gamYoZSl7cmV0dXJuL14oaHRtbHxib2R5fCNkb2N1bWVudCkkLy50ZXN0KE51KGUpKX1mdW5jdGlvbiBNaShlKXtyZXR1cm4gaXIoZSkuZ2V0Q29tcHV0ZWRTdHlsZShlKX1mdW5jdGlvbiBOeShlKXtyZXR1cm4gUGkoZSk/e3Njcm9sbExlZnQ6ZS5zY3JvbGxMZWZ0LHNjcm9sbFRvcDplLnNjcm9sbFRvcH06e3Njcm9sbExlZnQ6ZS5zY3JvbGxYLHNjcm9sbFRvcDplLnNjcm9sbFl9fWZ1bmN0aW9uIHlzKGUpe2lmKE51KGUpPT09Imh0bWwiKXJldHVybiBlO2NvbnN0IHQ9ZS5hc3NpZ25lZFNsb3R8fGUucGFyZW50Tm9kZXx8blIoZSkmJmUuaG9zdHx8eWEoZSk7cmV0dXJuIG5SKHQpP3QuaG9zdDp0fWZ1bmN0aW9uIFMzKGUpe2NvbnN0IHQ9eXMoZSk7cmV0dXJuIGpmKHQpPyhlLm93bmVyRG9jdW1lbnR8fGUpLmJvZHk6dm8odCkmJk15KHQpP3Q6UzModCl9ZnVuY3Rpb24gUGYoZSx0LG4pe3ZhciByO3Q9PT12b2lkIDAmJih0PVtdKSxuPT09dm9pZCAwJiYobj0hMCk7Y29uc3QgaT1TMyhlKSxvPWk9PT0oKHI9ZS5vd25lckRvY3VtZW50KT09bnVsbD92b2lkIDA6ci5ib2R5KSxzPWlyKGkpO2lmKG8pe2NvbnN0IHU9SFMocyk7cmV0dXJuIHQuY29uY2F0KHMscy52aXN1YWxWaWV3cG9ydHx8W10sTXkoaSk/aTpbXSx1JiZuP1BmKHUpOltdKX1lbHNlIHJldHVybiB0LmNvbmNhdChpLFBmKGksW10sbikpfWZ1bmN0aW9uIEhTKGUpe3JldHVybiBlLnBhcmVudCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUucGFyZW50KT9lLmZyYW1lRWxlbWVudDpudWxsfWZ1bmN0aW9uIEEzKGUpe2NvbnN0IHQ9TWkoZSk7bGV0IG49cGFyc2VGbG9hdCh0LndpZHRoKXx8MCxyPXBhcnNlRmxvYXQodC5oZWlnaHQpfHwwO2NvbnN0IGk9dm8oZSksbz1pP2Uub2Zmc2V0V2lkdGg6bixzPWk/ZS5vZmZzZXRIZWlnaHQ6cix1PXRtKG4pIT09b3x8dG0ocikhPT1zO3JldHVybiB1JiYobj1vLHI9cykse3dpZHRoOm4saGVpZ2h0OnIsJDp1fX1mdW5jdGlvbiB4TyhlKXtyZXR1cm4gUGkoZSk/ZTplLmNvbnRleHRFbGVtZW50fWZ1bmN0aW9uIFZsKGUpe2NvbnN0IHQ9eE8oZSk7aWYoIXZvKHQpKXJldHVybiBvYSgxKTtjb25zdCBuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse3dpZHRoOnIsaGVpZ2h0OmksJDpvfT1BMyh0KTtsZXQgcz0obz90bShuLndpZHRoKTpuLndpZHRoKS9yLHU9KG8/dG0obi5oZWlnaHQpOm4uaGVpZ2h0KS9pO3JldHVybighc3x8IU51bWJlci5pc0Zpbml0ZShzKSkmJihzPTEpLCghdXx8IU51bWJlci5pc0Zpbml0ZSh1KSkmJih1PTEpLHt4OnMseTp1fX1jb25zdCBQVz1vYSgwKTtmdW5jdGlvbiBfMyhlKXtjb25zdCB0PWlyKGUpO3JldHVybiFiTygpfHwhdC52aXN1YWxWaWV3cG9ydD9QVzp7eDp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQseTp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcH19ZnVuY3Rpb24gTVcoZSx0LG4pe3JldHVybiB0PT09dm9pZCAwJiYodD0hMSksISFuJiZ0JiZuPT09aXIoZSl9ZnVuY3Rpb24gdnMoZSx0LG4scil7dD09PXZvaWQgMCYmKHQ9ITEpLG49PT12b2lkIDAmJihuPSExKTtjb25zdCBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz14TyhlKTtsZXQgcz1vYSgxKTt0JiYocj9QaShyKSYmKHM9VmwocikpOnM9VmwoZSkpO2NvbnN0IHU9TVcobyxuLHIpP18zKG8pOm9hKDApO2xldCBmPShpLmxlZnQrdS54KS9zLngsZD0oaS50b3ArdS55KS9zLnkscD1pLndpZHRoL3MueCxtPWkuaGVpZ2h0L3MueTtpZihvJiZyKXtjb25zdCB5PWlyKG8pLHg9UGkocik/aXIocik6cjtsZXQgdz15LGI9SFModyk7Zm9yKDtiJiZ4IT09dzspe2NvbnN0IGc9VmwoYiksXz1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLE89TWkoYiksRT1fLmxlZnQrKGIuY2xpZW50TGVmdCtwYXJzZUZsb2F0KE8ucGFkZGluZ0xlZnQpKSpnLngsaj1fLnRvcCsoYi5jbGllbnRUb3ArcGFyc2VGbG9hdChPLnBhZGRpbmdUb3ApKSpnLnk7Zio9Zy54LGQqPWcueSxwKj1nLngsbSo9Zy55LGYrPUUsZCs9aix3PWlyKGIpLGI9SFModyl9fXJldHVybiBybSh7d2lkdGg6cCxoZWlnaHQ6bSx4OmYseTpkfSl9ZnVuY3Rpb24ga3koZSx0KXtjb25zdCBuPU55KGUpLnNjcm9sbExlZnQ7cmV0dXJuIHQ/dC5sZWZ0K246dnMoeWEoZSkpLmxlZnQrbn1mdW5jdGlvbiBPMyhlLHQpe2NvbnN0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPW4ubGVmdCt0LnNjcm9sbExlZnQta3koZSxuKSxpPW4udG9wK3Quc2Nyb2xsVG9wO3JldHVybnt4OnIseTppfX1mdW5jdGlvbiBSVyhlKXtsZXR7ZWxlbWVudHM6dCxyZWN0Om4sb2Zmc2V0UGFyZW50OnIsc3RyYXRlZ3k6aX09ZTtjb25zdCBvPWk9PT0iZml4ZWQiLHM9eWEociksdT10P1J5KHQuZmxvYXRpbmcpOiExO2lmKHI9PT1zfHx1JiZvKXJldHVybiBuO2xldCBmPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LGQ9b2EoMSk7Y29uc3QgcD1vYSgwKSxtPXZvKHIpO2lmKChtfHwhbykmJigoTnUocikhPT0iYm9keSJ8fE15KHMpKSYmKGY9TnkocikpLG0pKXtjb25zdCB4PXZzKHIpO2Q9VmwocikscC54PXgueCtyLmNsaWVudExlZnQscC55PXgueStyLmNsaWVudFRvcH1jb25zdCB5PXMmJiFtJiYhbz9PMyhzLGYpOm9hKDApO3JldHVybnt3aWR0aDpuLndpZHRoKmQueCxoZWlnaHQ6bi5oZWlnaHQqZC55LHg6bi54KmQueC1mLnNjcm9sbExlZnQqZC54K3AueCt5LngseTpuLnkqZC55LWYuc2Nyb2xsVG9wKmQueStwLnkreS55fX1mdW5jdGlvbiBOVyhlKXtyZXR1cm4gZS5nZXRDbGllbnRSZWN0cz9BcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSk6W119ZnVuY3Rpb24ga1coZSl7Y29uc3QgdD1OeShlKSxuPWUub3duZXJEb2N1bWVudC5ib2R5LHI9YWEoZS5zY3JvbGxXaWR0aCxlLmNsaWVudFdpZHRoLG4uc2Nyb2xsV2lkdGgsbi5jbGllbnRXaWR0aCksaT1hYShlLnNjcm9sbEhlaWdodCxlLmNsaWVudEhlaWdodCxuLnNjcm9sbEhlaWdodCxuLmNsaWVudEhlaWdodCk7bGV0IG89LXQuc2Nyb2xsTGVmdCtreShlKTtjb25zdCBzPS10LnNjcm9sbFRvcDtyZXR1cm4gTWkobikuZGlyZWN0aW9uPT09InJ0bCImJihvKz1hYShlLmNsaWVudFdpZHRoLG4uY2xpZW50V2lkdGgpLXIpLHt3aWR0aDpyLGhlaWdodDppLHg6byx5OnN9fWNvbnN0IERXPTI1O2Z1bmN0aW9uIExXKGUsdCxuKXtuPT09dm9pZCAwJiYobj0idmlld3BvcnQiKTtjb25zdCByPW49PT0ibGF5b3V0Vmlld3BvcnQiLGk9aXIoZSksbz15YShlKSxzPWkudmlzdWFsVmlld3BvcnQ7bGV0IHU9by5jbGllbnRXaWR0aCxmPW8uY2xpZW50SGVpZ2h0LGQ9MCxwPTA7aWYocyl7Y29uc3QgeT0hYk8oKXx8dD09PSJmaXhlZCI7cj95fHwoZD0tcy5vZmZzZXRMZWZ0LHA9LXMub2Zmc2V0VG9wKToodT1zLndpZHRoLGY9cy5oZWlnaHQseSYmKGQ9cy5vZmZzZXRMZWZ0LHA9cy5vZmZzZXRUb3ApKX1pZihreShvKTw9MCl7Y29uc3QgeT1vLm93bmVyRG9jdW1lbnQseD15LmJvZHksdz1nZXRDb21wdXRlZFN0eWxlKHgpLGI9eS5jb21wYXRNb2RlPT09IkNTUzFDb21wYXQiJiZwYXJzZUZsb2F0KHcubWFyZ2luTGVmdCkrcGFyc2VGbG9hdCh3Lm1hcmdpblJpZ2h0KXx8MCxnPU1hdGguYWJzKG8uY2xpZW50V2lkdGgteC5jbGllbnRXaWR0aC1iKSxfPWdldENvbXB1dGVkU3R5bGUobykuc2Nyb2xsYmFyR3V0dGVyPT09InN0YWJsZSBib3RoLWVkZ2VzIj9nLzI6ZztfPD1EVyYmKHUtPV8pfXJldHVybnt3aWR0aDp1LGhlaWdodDpmLHg6ZCx5OnB9fWZ1bmN0aW9uIElXKGUsdCl7Y29uc3Qgbj12cyhlLCEwLHQ9PT0iZml4ZWQiKSxyPW4udG9wK2UuY2xpZW50VG9wLGk9bi5sZWZ0K2UuY2xpZW50TGVmdCxvPVZsKGUpLHM9ZS5jbGllbnRXaWR0aCpvLngsdT1lLmNsaWVudEhlaWdodCpvLnksZj1pKm8ueCxkPXIqby55O3JldHVybnt3aWR0aDpzLGhlaWdodDp1LHg6Zix5OmR9fWZ1bmN0aW9uIHJSKGUsdCxuKXtsZXQgcjtpZih0PT09InZpZXdwb3J0Inx8dD09PSJsYXlvdXRWaWV3cG9ydCIpcj1MVyhlLG4sdCk7ZWxzZSBpZih0PT09ImRvY3VtZW50IilyPWtXKHlhKGUpKTtlbHNlIGlmKFBpKHQpKXI9SVcodCxuKTtlbHNle2NvbnN0IGk9XzMoZSk7cj17eDp0LngtaS54LHk6dC55LWkueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19cmV0dXJuIHJtKHIpfWZ1bmN0aW9uICRXKGUsdCl7Y29uc3Qgbj10LmdldChlKTtpZihuKXJldHVybiBuO2xldCByPVBmKGUsW10sITEpLmZpbHRlcih1PT5QaSh1KSYmTnUodSkhPT0iYm9keSIpLGk9bnVsbDtjb25zdCBvPU1pKGUpLnBvc2l0aW9uPT09ImZpeGVkIjtsZXQgcz1vP3lzKGUpOmU7Zm9yKDtQaShzKSYmIWpmKHMpOyl7Y29uc3QgdT1NaShzKSxmPWdPKHMpLGQ9aT9pLnBvc2l0aW9uOm8/ImZpeGVkIjoiIjshZiYmKGQ9PT0iZml4ZWQifHxkPT09ImFic29sdXRlIiYmdS5wb3NpdGlvbj09PSJzdGF0aWMiKT9yPXIuZmlsdGVyKG09Pm0hPT1zKTppPXUscz15cyhzKX1yZXR1cm4gdC5zZXQoZSxyKSxyfWZ1bmN0aW9uIEJXKGUpe2xldHtlbGVtZW50OnQsYm91bmRhcnk6bixyb290Qm91bmRhcnk6cixzdHJhdGVneTppfT1lO2NvbnN0IHM9Wy4uLm49PT0iY2xpcHBpbmdBbmNlc3RvcnMiP1J5KHQpP1tdOiRXKHQsdGhpcy5fYyk6W10uY29uY2F0KG4pLHJdLHU9clIodCxzWzBdLGkpO2xldCBmPXUudG9wLGQ9dS5yaWdodCxwPXUuYm90dG9tLG09dS5sZWZ0O2ZvcihsZXQgeT0xO3k8cy5sZW5ndGg7eSsrKXtjb25zdCB4PXJSKHQsc1t5XSxpKTtmPWFhKHgudG9wLGYpLGQ9c28oeC5yaWdodCxkKSxwPXNvKHguYm90dG9tLHApLG09YWEoeC5sZWZ0LG0pfXJldHVybnt3aWR0aDpkLW0saGVpZ2h0OnAtZix4Om0seTpmfX1mdW5jdGlvbiBWVyhlKXtjb25zdHt3aWR0aDp0LGhlaWdodDpufT1BMyhlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19ZnVuY3Rpb24gcVcoZSx0LG4pe2NvbnN0IHI9dm8odCksaT15YSh0KSxvPW49PT0iZml4ZWQiLHM9dnMoZSwhMCxvLHQpO2xldCB1PXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9O2NvbnN0IGY9b2EoMCk7aWYoKHJ8fCFvKSYmKChOdSh0KSE9PSJib2R5Inx8TXkoaSkpJiYodT1OeSh0KSkscikpe2NvbnN0IHk9dnModCwhMCxvLHQpO2YueD15LngrdC5jbGllbnRMZWZ0LGYueT15LnkrdC5jbGllbnRUb3B9IXImJmkmJihmLng9a3koaSkpO2NvbnN0IGQ9aSYmIXImJiFvP08zKGksdSk6b2EoMCkscD1zLmxlZnQrdS5zY3JvbGxMZWZ0LWYueC1kLngsbT1zLnRvcCt1LnNjcm9sbFRvcC1mLnktZC55O3JldHVybnt4OnAseTptLHdpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fX1mdW5jdGlvbiB0MChlKXtyZXR1cm4gTWkoZSkucG9zaXRpb249PT0ic3RhdGljIn1mdW5jdGlvbiBpUihlLHQpe2lmKCF2byhlKXx8TWkoZSkucG9zaXRpb249PT0iZml4ZWQiKXJldHVybiBudWxsO2lmKHQpcmV0dXJuIHQoZSk7bGV0IG49ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIHlhKGUpPT09biYmKG49bi5vd25lckRvY3VtZW50LmJvZHkpLG59ZnVuY3Rpb24gVDMoZSx0KXtjb25zdCBuPWlyKGUpO2lmKFJ5KGUpKXJldHVybiBuO2lmKCF2byhlKSl7bGV0IGk9eXMoZSk7Zm9yKDtpJiYhamYoaSk7KXtpZihQaShpKSYmIXQwKGkpKXJldHVybiBpO2k9eXMoaSl9cmV0dXJuIG59bGV0IHI9aVIoZSx0KTtmb3IoO3ImJlRXKHIpJiZ0MChyKTspcj1pUihyLHQpO3JldHVybiByJiZqZihyKSYmdDAocikmJiFnTyhyKT9uOnJ8fGpXKGUpfHxufWNvbnN0IFVXPWFzeW5jIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpcy5nZXRPZmZzZXRQYXJlbnR8fFQzLG49dGhpcy5nZXREaW1lbnNpb25zLHI9YXdhaXQgbihlLmZsb2F0aW5nKTtyZXR1cm57cmVmZXJlbmNlOnFXKGUucmVmZXJlbmNlLGF3YWl0IHQoZS5mbG9hdGluZyksZS5zdHJhdGVneSksZmxvYXRpbmc6e3g6MCx5OjAsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9fX07ZnVuY3Rpb24gelcoZSl7cmV0dXJuIE1pKGUpLmRpcmVjdGlvbj09PSJydGwifWNvbnN0IEZXPXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpSVyxnZXREb2N1bWVudEVsZW1lbnQ6eWEsZ2V0Q2xpcHBpbmdSZWN0OkJXLGdldE9mZnNldFBhcmVudDpUMyxnZXRFbGVtZW50UmVjdHM6VVcsZ2V0Q2xpZW50UmVjdHM6TlcsZ2V0RGltZW5zaW9uczpWVyxnZXRTY2FsZTpWbCxpc0VsZW1lbnQ6UGksaXNSVEw6eld9O2Z1bmN0aW9uIEUzKGUsdCl7cmV0dXJuIGUueD09PXQueCYmZS55PT09dC55JiZlLndpZHRoPT09dC53aWR0aCYmZS5oZWlnaHQ9PT10LmhlaWdodH1mdW5jdGlvbiBIVyhlLHQsbil7bGV0IHI9bnVsbCxpO2NvbnN0IG89eWEoZSk7ZnVuY3Rpb24gcygpe3ZhciBwO2NsZWFyVGltZW91dChpKSwocD1yKT09bnVsbHx8cC5kaXNjb25uZWN0KCkscj1udWxsfWZ1bmN0aW9uIHUocCxtKXtwPT09dm9pZCAwJiYocD0hMSksbT09PXZvaWQgMCYmKG09MSkscygpO2NvbnN0IHk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7bGVmdDp4LHRvcDp3LHdpZHRoOmIsaGVpZ2h0Omd9PXk7aWYocHx8dCgpLCFifHwhZylyZXR1cm47Y29uc3QgXz1zcCh3KSxPPXNwKG8uY2xpZW50V2lkdGgtKHgrYikpLEU9c3Aoby5jbGllbnRIZWlnaHQtKHcrZykpLGo9c3AoeCksUD17cm9vdE1hcmdpbjotXysicHggIistTysicHggIistRSsicHggIistaisicHgiLHRocmVzaG9sZDphYSgwLHNvKDEsbSkpfHwxfTtsZXQgTj0hMDtmdW5jdGlvbiBSKEkpe2NvbnN0IFY9SVswXS5pbnRlcnNlY3Rpb25SYXRpbztpZighRTMoeSxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSlyZXR1cm4gdSgpO2lmKFYhPT1tKXtpZighTilyZXR1cm4gdSgpO1Y/dSghMSxWKTppPXNldFRpbWVvdXQoKCk9Pnt1KCExLDFlLTcpfSwxZTMpfU49ITF9dHJ5e3I9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFIsey4uLlAscm9vdDpvLm93bmVyRG9jdW1lbnR9KX1jYXRjaHtyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihSLFApfXIub2JzZXJ2ZShlKX1jb25zdCBmPWlyKGUpLGQ9KCk9PnUobik7cmV0dXJuIGYuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixkKSx1KCEwKSwoKT0+e2YucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixkKSxzKCl9fWZ1bmN0aW9uIEdXKGUsdCxuLHIpe3I9PT12b2lkIDAmJihyPXt9KTtjb25zdHthbmNlc3RvclNjcm9sbDppPSEwLGFuY2VzdG9yUmVzaXplOm89ITAsZWxlbWVudFJlc2l6ZTpzPXR5cGVvZiBSZXNpemVPYnNlcnZlcj09ImZ1bmN0aW9uIixsYXlvdXRTaGlmdDp1PXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcj09ImZ1bmN0aW9uIixhbmltYXRpb25GcmFtZTpmPSExfT1yLGQ9eE8oZSkscD1pfHxvP1suLi5kP1BmKGQpOltdLC4uLnQ/UGYodCk6W11dOltdO3AuZm9yRWFjaChfPT57aSYmXy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLG4pLG8mJl8uYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixuKX0pO2NvbnN0IG09ZCYmdT9IVyhkLG4sbyk6bnVsbDtsZXQgeT0tMSx4PW51bGw7cyYmKHg9bmV3IFJlc2l6ZU9ic2VydmVyKF89PntsZXRbT109XztPJiZPLnRhcmdldD09PWQmJngmJnQmJih4LnVub2JzZXJ2ZSh0KSxjYW5jZWxBbmltYXRpb25GcmFtZSh5KSx5PXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBFOyhFPXgpPT1udWxsfHxFLm9ic2VydmUodCl9KSksbigpfSksZCYmIWYmJngub2JzZXJ2ZShkKSx0JiZ4Lm9ic2VydmUodCkpO2xldCB3LGI9Zj92cyhlKTpudWxsO2YmJmcoKTtmdW5jdGlvbiBnKCl7Y29uc3QgXz12cyhlKTtiJiYhRTMoYixfKSYmbigpLGI9Xyx3PXJlcXVlc3RBbmltYXRpb25GcmFtZShnKX1yZXR1cm4gbigpLCgpPT57dmFyIF87cC5mb3JFYWNoKE89PntpJiZPLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsbiksbyYmTy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLG4pfSksbT8uKCksKF89eCk9PW51bGx8fF8uZGlzY29ubmVjdCgpLHg9bnVsbCxmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh3KX19Y29uc3QgS1c9U1csV1c9QVcsWVc9YlcsWFc9T1csWlc9eFcsYVI9Z1csUVc9X1csSlc9KGUsdCxuKT0+e2NvbnN0IHI9bmV3IE1hcCxpPW4/P3t9LG89ey4uLkZXLC4uLmkucGxhdGZvcm0sX2M6cn07cmV0dXJuIHZXKGUsdCx7Li4uaSxwbGF0Zm9ybTpvfSl9O3ZhciBlWT10eXBlb2YgZG9jdW1lbnQ8InUiLHRZPWZ1bmN0aW9uKCl7fSxMcD1lWT9DLnVzZUxheW91dEVmZmVjdDp0WTtmdW5jdGlvbiBpbShlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKHR5cGVvZiBlIT10eXBlb2YgdClyZXR1cm4hMTtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIiYmZS50b1N0cmluZygpPT09dC50b1N0cmluZygpKXJldHVybiEwO2xldCBuLHIsaTtpZihlJiZ0JiZ0eXBlb2YgZT09Im9iamVjdCIpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2lmKG49ZS5sZW5ndGgsbiE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihyPW47ci0tIT09MDspaWYoIWltKGVbcl0sdFtyXSkpcmV0dXJuITE7cmV0dXJuITB9aWYoaT1PYmplY3Qua2V5cyhlKSxuPWkubGVuZ3RoLG4hPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuITE7Zm9yKHI9bjtyLS0hPT0wOylpZighe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LGlbcl0pKXJldHVybiExO2ZvcihyPW47ci0tIT09MDspe2NvbnN0IG89aVtyXTtpZighKG89PT0iX293bmVyIiYmZS4kJHR5cGVvZikmJiFpbShlW29dLHRbb10pKXJldHVybiExfXJldHVybiEwfXJldHVybiBlIT09ZSYmdCE9PXR9ZnVuY3Rpb24gQzMoZSl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+InUiPzE6KGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5kZXZpY2VQaXhlbFJhdGlvfHwxfWZ1bmN0aW9uIG9SKGUsdCl7Y29uc3Qgbj1DMyhlKTtyZXR1cm4gTWF0aC5yb3VuZCh0Km4pL259ZnVuY3Rpb24gbjAoZSl7Y29uc3QgdD1DLnVzZVJlZihlKTtyZXR1cm4gTHAoKCk9Pnt0LmN1cnJlbnQ9ZX0pLHR9ZnVuY3Rpb24gblkoZSl7ZT09PXZvaWQgMCYmKGU9e30pO2NvbnN0e3BsYWNlbWVudDp0PSJib3R0b20iLHN0cmF0ZWd5Om49ImFic29sdXRlIixtaWRkbGV3YXJlOnI9W10scGxhdGZvcm06aSxlbGVtZW50czp7cmVmZXJlbmNlOm8sZmxvYXRpbmc6c309e30sdHJhbnNmb3JtOnU9ITAsd2hpbGVFbGVtZW50c01vdW50ZWQ6ZixvcGVuOmR9PWUsW3AsbV09Qy51c2VTdGF0ZSh7eDowLHk6MCxzdHJhdGVneTpuLHBsYWNlbWVudDp0LG1pZGRsZXdhcmVEYXRhOnt9LGlzUG9zaXRpb25lZDohMX0pLFt5LHhdPUMudXNlU3RhdGUocik7aW0oeSxyKXx8eChyKTtjb25zdFt3LGJdPUMudXNlU3RhdGUobnVsbCksW2csX109Qy51c2VTdGF0ZShudWxsKSxPPUMudXNlQ2FsbGJhY2soSD0+e0ghPT1QLmN1cnJlbnQmJihQLmN1cnJlbnQ9SCxiKEgpKX0sW10pLEU9Qy51c2VDYWxsYmFjayhIPT57SCE9PU4uY3VycmVudCYmKE4uY3VycmVudD1ILF8oSCkpfSxbXSksaj1vfHx3LFQ9c3x8ZyxQPUMudXNlUmVmKG51bGwpLE49Qy51c2VSZWYobnVsbCksUj1DLnVzZVJlZihwKSxJPWYhPW51bGwsVj1uMChmKSxCPW4wKGkpLCQ9bjAoZCksej1DLnVzZUNhbGxiYWNrKCgpPT57aWYoIVAuY3VycmVudHx8IU4uY3VycmVudClyZXR1cm47Y29uc3QgSD17cGxhY2VtZW50OnQsc3RyYXRlZ3k6bixtaWRkbGV3YXJlOnl9O0IuY3VycmVudCYmKEgucGxhdGZvcm09Qi5jdXJyZW50KSxKVyhQLmN1cnJlbnQsTi5jdXJyZW50LEgpLnRoZW4oZWU9Pntjb25zdCBrPXsuLi5lZSxpc1Bvc2l0aW9uZWQ6JC5jdXJyZW50IT09ITF9O1UuY3VycmVudCYmIWltKFIuY3VycmVudCxrKSYmKFIuY3VycmVudD1rLE11LmZsdXNoU3luYygoKT0+e20oayl9KSl9KX0sW3ksdCxuLEIsJF0pO0xwKCgpPT57ZD09PSExJiZSLmN1cnJlbnQuaXNQb3NpdGlvbmVkJiYoUi5jdXJyZW50LmlzUG9zaXRpb25lZD0hMSxtKEg9Pih7Li4uSCxpc1Bvc2l0aW9uZWQ6ITF9KSkpfSxbZF0pO2NvbnN0IFU9Qy51c2VSZWYoITEpO0xwKCgpPT4oVS5jdXJyZW50PSEwLCgpPT57VS5jdXJyZW50PSExfSksW10pLExwKCgpPT57aWYoaiYmKFAuY3VycmVudD1qKSxUJiYoTi5jdXJyZW50PVQpLGomJlQpe2lmKFYuY3VycmVudClyZXR1cm4gVi5jdXJyZW50KGosVCx6KTt6KCl9fSxbaixULHosVixJXSk7Y29uc3QgSz1DLnVzZU1lbW8oKCk9Pih7cmVmZXJlbmNlOlAsZmxvYXRpbmc6TixzZXRSZWZlcmVuY2U6TyxzZXRGbG9hdGluZzpFfSksW08sRV0pLEw9Qy51c2VNZW1vKCgpPT4oe3JlZmVyZW5jZTpqLGZsb2F0aW5nOlR9KSxbaixUXSksVz1DLnVzZU1lbW8oKCk9Pntjb25zdCBIPXtwb3NpdGlvbjpuLGxlZnQ6MCx0b3A6MH07aWYoIUwuZmxvYXRpbmcpcmV0dXJuIEg7Y29uc3QgZWU9b1IoTC5mbG9hdGluZyxwLngpLGs9b1IoTC5mbG9hdGluZyxwLnkpO3JldHVybiB1P3suLi5ILHRyYW5zZm9ybToidHJhbnNsYXRlKCIrZWUrInB4LCAiK2srInB4KSIsLi4uQzMoTC5mbG9hdGluZyk+PTEuNSYme3dpbGxDaGFuZ2U6InRyYW5zZm9ybSJ9fTp7cG9zaXRpb246bixsZWZ0OmVlLHRvcDprfX0sW24sdSxMLmZsb2F0aW5nLHAueCxwLnldKTtyZXR1cm4gQy51c2VNZW1vKCgpPT4oey4uLnAsdXBkYXRlOnoscmVmczpLLGVsZW1lbnRzOkwsZmxvYXRpbmdTdHlsZXM6V30pLFtwLHosSyxMLFddKX1jb25zdCByWT1lPT57ZnVuY3Rpb24gdChuKXtyZXR1cm57fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sImN1cnJlbnQiKX1yZXR1cm57bmFtZToiYXJyb3ciLG9wdGlvbnM6ZSxmbihuKXtjb25zdHtlbGVtZW50OnIscGFkZGluZzppfT10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKG4pOmU7cmV0dXJuIHImJnQocik/ci5jdXJyZW50IT1udWxsP2FSKHtlbGVtZW50OnIuY3VycmVudCxwYWRkaW5nOml9KS5mbihuKTp7fTpyP2FSKHtlbGVtZW50OnIscGFkZGluZzppfSkuZm4obik6e319fX0saVk9KGUsdCk9Pntjb25zdCBuPUtXKGUpO3JldHVybntuYW1lOm4ubmFtZSxmbjpuLmZuLG9wdGlvbnM6W2UsdF19fSxhWT0oZSx0KT0+e2NvbnN0IG49V1coZSk7cmV0dXJue25hbWU6bi5uYW1lLGZuOm4uZm4sb3B0aW9uczpbZSx0XX19LG9ZPShlLHQpPT4oe2ZuOlFXKGUpLmZuLG9wdGlvbnM6W2UsdF19KSxzWT0oZSx0KT0+e2NvbnN0IG49WVcoZSk7cmV0dXJue25hbWU6bi5uYW1lLGZuOm4uZm4sb3B0aW9uczpbZSx0XX19LGxZPShlLHQpPT57Y29uc3Qgbj1YVyhlKTtyZXR1cm57bmFtZTpuLm5hbWUsZm46bi5mbixvcHRpb25zOltlLHRdfX0sdVk9KGUsdCk9Pntjb25zdCBuPVpXKGUpO3JldHVybntuYW1lOm4ubmFtZSxmbjpuLmZuLG9wdGlvbnM6W2UsdF19fSxjWT0oZSx0KT0+e2NvbnN0IG49clkoZSk7cmV0dXJue25hbWU6bi5uYW1lLGZuOm4uZm4sb3B0aW9uczpbZSx0XX19O3ZhciBmWT0iQXJyb3ciLGozPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e2NoaWxkcmVuOm4sd2lkdGg6cj0xMCxoZWlnaHQ6aT01LC4uLm99PWU7cmV0dXJuIEEuanN4KFFlLnN2Zyx7Li4ubyxyZWY6dCx3aWR0aDpyLGhlaWdodDppLHZpZXdCb3g6IjAgMCAzMCAxMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSIsY2hpbGRyZW46ZS5hc0NoaWxkP246QS5qc3goInBvbHlnb24iLHtwb2ludHM6IjAsMCAzMCwwIDE1LDEwIn0pfSl9KTtqMy5kaXNwbGF5TmFtZT1mWTt2YXIgZFk9ajM7ZnVuY3Rpb24gaFkoZSl7Y29uc3RbdCxuXT1DLnVzZVN0YXRlKHZvaWQgMCk7cmV0dXJuIGduKCgpPT57aWYoZSl7bih7d2lkdGg6ZS5vZmZzZXRXaWR0aCxoZWlnaHQ6ZS5vZmZzZXRIZWlnaHR9KTtjb25zdCByPW5ldyBSZXNpemVPYnNlcnZlcihpPT57aWYoIUFycmF5LmlzQXJyYXkoaSl8fCFpLmxlbmd0aClyZXR1cm47Y29uc3Qgbz1pWzBdO2xldCBzLHU7aWYoImJvcmRlckJveFNpemUiaW4gbyl7Y29uc3QgZj1vLmJvcmRlckJveFNpemUsZD1BcnJheS5pc0FycmF5KGYpP2ZbMF06ZjtzPWQuaW5saW5lU2l6ZSx1PWQuYmxvY2tTaXplfWVsc2Ugcz1lLm9mZnNldFdpZHRoLHU9ZS5vZmZzZXRIZWlnaHQ7bih7d2lkdGg6cyxoZWlnaHQ6dX0pfSk7cmV0dXJuIHIub2JzZXJ2ZShlLHtib3g6ImJvcmRlci1ib3gifSksKCk9PnIudW5vYnNlcnZlKGUpfWVsc2Ugbih2b2lkIDApfSxbZV0pLHR9dmFyIHdPPSJQb3BwZXIiLFtQMyxEeV09bW8od08pLFtwWSxNM109UDMod08pLFIzPWU9Pntjb25zdHtfX3Njb3BlUG9wcGVyOnQsY2hpbGRyZW46bn09ZSxbcixpXT1DLnVzZVN0YXRlKG51bGwpLFtvLHNdPUMudXNlU3RhdGUodm9pZCAwKTtyZXR1cm4gQS5qc3gocFkse3Njb3BlOnQsYW5jaG9yOnIsb25BbmNob3JDaGFuZ2U6aSxwbGFjZW1lbnRTdGF0ZTpvLHNldFBsYWNlbWVudFN0YXRlOnMsY2hpbGRyZW46bn0pfTtSMy5kaXNwbGF5TmFtZT13Tzt2YXIgTjM9IlBvcHBlckFuY2hvciIsazM9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVBvcHBlcjpuLHZpcnR1YWxSZWY6ciwuLi5pfT1lLG89TTMoTjMsbikscz1DLnVzZVJlZihudWxsKSx1PW8ub25BbmNob3JDaGFuZ2UsZj1DLnVzZUNhbGxiYWNrKHc9PntzLmN1cnJlbnQ9dyx3JiZ1KHcpfSxbdV0pLGQ9SXQodCxmKSxwPUMudXNlUmVmKG51bGwpO0MudXNlRWZmZWN0KCgpPT57aWYoIXIpcmV0dXJuO2NvbnN0IHc9cC5jdXJyZW50O3AuY3VycmVudD1yLmN1cnJlbnQsdyE9PXAuY3VycmVudCYmdShwLmN1cnJlbnQpfSk7Y29uc3QgbT1vLnBsYWNlbWVudFN0YXRlJiZBTyhvLnBsYWNlbWVudFN0YXRlKSx5PW0/LlswXSx4PW0/LlsxXTtyZXR1cm4gcj9udWxsOkEuanN4KFFlLmRpdix7ImRhdGEtcmFkaXgtcG9wcGVyLXNpZGUiOnksImRhdGEtcmFkaXgtcG9wcGVyLWFsaWduIjp4LC4uLmkscmVmOmR9KX0pO2szLmRpc3BsYXlOYW1lPU4zO3ZhciBTTz0iUG9wcGVyQ29udGVudCIsW21ZLHlZXT1QMyhTTyksRDM9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVBvcHBlcjpuLHNpZGU6cj0iYm90dG9tIixzaWRlT2Zmc2V0Omk9MCxhbGlnbjpvPSJjZW50ZXIiLGFsaWduT2Zmc2V0OnM9MCxhcnJvd1BhZGRpbmc6dT0wLGF2b2lkQ29sbGlzaW9uczpmPSEwLGNvbGxpc2lvbkJvdW5kYXJ5OmQ9W10sY29sbGlzaW9uUGFkZGluZzpwPTAsc3RpY2t5Om09InBhcnRpYWwiLGhpZGVXaGVuRGV0YWNoZWQ6eT0hMSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ong9Im9wdGltaXplZCIsb25QbGFjZWQ6dywuLi5ifT1lLGc9TTMoU08sbiksW18sT109Qy51c2VTdGF0ZShudWxsKSxFPUl0KHQsTyksW2osVF09Qy51c2VTdGF0ZShudWxsKSxQPWhZKGopLE49UD8ud2lkdGg/PzAsUj1QPy5oZWlnaHQ/PzAsST1yKyhvIT09ImNlbnRlciI/Ii0iK286IiIpLFY9dHlwZW9mIHA9PSJudW1iZXIiP3A6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLnB9LEI9QXJyYXkuaXNBcnJheShkKT9kOltkXSwkPUIubGVuZ3RoPjAsej17cGFkZGluZzpWLGJvdW5kYXJ5OkIuZmlsdGVyKGdZKSxhbHRCb3VuZGFyeTokfSx7cmVmczpVLGZsb2F0aW5nU3R5bGVzOksscGxhY2VtZW50OkwsaXNQb3NpdGlvbmVkOlcsbWlkZGxld2FyZURhdGE6SH09blkoe3N0cmF0ZWd5OiJmaXhlZCIscGxhY2VtZW50Okksd2hpbGVFbGVtZW50c01vdW50ZWQ6KC4uLlRlKT0+R1coLi4uVGUse2FuaW1hdGlvbkZyYW1lOng9PT0iYWx3YXlzIn0pLGVsZW1lbnRzOntyZWZlcmVuY2U6Zy5hbmNob3J9LG1pZGRsZXdhcmU6W2lZKHttYWluQXhpczppK1IsYWxpZ25tZW50QXhpczpzfSksZiYmYVkoe21haW5BeGlzOiEwLGNyb3NzQXhpczohMSxsaW1pdGVyOm09PT0icGFydGlhbCI/b1koKTp2b2lkIDAsLi4uen0pLGYmJnNZKHsuLi56fSksbFkoey4uLnosYXBwbHk6KHtlbGVtZW50czpUZSxyZWN0czpjZSxhdmFpbGFibGVXaWR0aDpBZSxhdmFpbGFibGVIZWlnaHQ6U2V9KT0+e2NvbnN0e3dpZHRoOnNlLGhlaWdodDpLZX09Y2UucmVmZXJlbmNlLExlPVRlLmZsb2F0aW5nLnN0eWxlO0xlLnNldFByb3BlcnR5KCItLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgiLGAke0FlfXB4YCksTGUuc2V0UHJvcGVydHkoIi0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQiLGAke1NlfXB4YCksTGUuc2V0UHJvcGVydHkoIi0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCIsYCR7c2V9cHhgKSxMZS5zZXRQcm9wZXJ0eSgiLS1yYWRpeC1wb3BwZXItYW5jaG9yLWhlaWdodCIsYCR7S2V9cHhgKX19KSxqJiZjWSh7ZWxlbWVudDpqLHBhZGRpbmc6dX0pLGJZKHthcnJvd1dpZHRoOk4sYXJyb3dIZWlnaHQ6Un0pLHkmJnVZKHtzdHJhdGVneToicmVmZXJlbmNlSGlkZGVuIiwuLi56LGJvdW5kYXJ5OiQ/ei5ib3VuZGFyeTp2b2lkIDB9KV19KSxlZT1nLnNldFBsYWNlbWVudFN0YXRlO2duKCgpPT4oZWUoTCksKCk9PntlZSh2b2lkIDApfSksW0wsZWVdKTtjb25zdFtrLFpdPUFPKEwpLHRlPWFyKHcpO2duKCgpPT57VyYmdGU/LigpfSxbVyx0ZV0pO2NvbnN0IG9lPUguYXJyb3c/LngsbWU9SC5hcnJvdz8ueSxiZT1ILmFycm93Py5jZW50ZXJPZmZzZXQhPT0wLFtnZSxfZV09Qy51c2VTdGF0ZSgpO3JldHVybiBnbigoKT0+e18mJl9lKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKF8pLnpJbmRleCl9LFtfXSksQS5qc3goImRpdiIse3JlZjpVLnNldEZsb2F0aW5nLCJkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXIiOiIiLHN0eWxlOnsuLi5LLHRyYW5zZm9ybTpXP0sudHJhbnNmb3JtOiJ0cmFuc2xhdGUoMCwgLTIwMCUpIixtaW5XaWR0aDoibWF4LWNvbnRlbnQiLHpJbmRleDpnZSwiLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiI6W0gudHJhbnNmb3JtT3JpZ2luPy54LEgudHJhbnNmb3JtT3JpZ2luPy55XS5qb2luKCIgIiksLi4uSC5oaWRlPy5yZWZlcmVuY2VIaWRkZW4mJnt2aXNpYmlsaXR5OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUifX0sZGlyOmUuZGlyLGNoaWxkcmVuOkEuanN4KG1ZLHtzY29wZTpuLHBsYWNlZFNpZGU6ayxwbGFjZWRBbGlnbjpaLG9uQXJyb3dDaGFuZ2U6VCxhcnJvd1g6b2UsYXJyb3dZOm1lLHNob3VsZEhpZGVBcnJvdzpiZSxjaGlsZHJlbjpBLmpzeChRZS5kaXYseyJkYXRhLXNpZGUiOmssImRhdGEtYWxpZ24iOlosLi4uYixyZWY6RSxzdHlsZTp7Li4uYi5zdHlsZSxhbmltYXRpb246Vz92b2lkIDA6Im5vbmUifX0pfSl9KX0pO0QzLmRpc3BsYXlOYW1lPVNPO3ZhciBMMz0iUG9wcGVyQXJyb3ciLHZZPXt0b3A6ImJvdHRvbSIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCJ9LEkzPUMuZm9yd2FyZFJlZihmdW5jdGlvbih0LG4pe2NvbnN0e19fc2NvcGVQb3BwZXI6ciwuLi5pfT10LG89eVkoTDMscikscz12WVtvLnBsYWNlZFNpZGVdO3JldHVybiBBLmpzeCgic3BhbiIse3JlZjpvLm9uQXJyb3dDaGFuZ2Usc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpvLmFycm93WCx0b3A6by5hcnJvd1ksW3NdOjAsdHJhbnNmb3JtT3JpZ2luOnt0b3A6IiIscmlnaHQ6IjAgMCIsYm90dG9tOiJjZW50ZXIgMCIsbGVmdDoiMTAwJSAwIn1bby5wbGFjZWRTaWRlXSx0cmFuc2Zvcm06e3RvcDoidHJhbnNsYXRlWSgxMDAlKSIscmlnaHQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoOTBkZWcpIHRyYW5zbGF0ZVgoLTUwJSkiLGJvdHRvbToicm90YXRlKDE4MGRlZykiLGxlZnQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSkifVtvLnBsYWNlZFNpZGVdLHZpc2liaWxpdHk6by5zaG91bGRIaWRlQXJyb3c/ImhpZGRlbiI6dm9pZCAwfSxjaGlsZHJlbjpBLmpzeChkWSx7Li4uaSxyZWY6bixzdHlsZTp7Li4uaS5zdHlsZSxkaXNwbGF5OiJibG9jayJ9fSl9KX0pO0kzLmRpc3BsYXlOYW1lPUwzO2Z1bmN0aW9uIGdZKGUpe3JldHVybiBlIT09bnVsbH12YXIgYlk9ZT0+KHtuYW1lOiJ0cmFuc2Zvcm1PcmlnaW4iLG9wdGlvbnM6ZSxmbih0KXtjb25zdHtwbGFjZW1lbnQ6bixyZWN0czpyLG1pZGRsZXdhcmVEYXRhOml9PXQscz1pLmFycm93Py5jZW50ZXJPZmZzZXQhPT0wLHU9cz8wOmUuYXJyb3dXaWR0aCxmPXM/MDplLmFycm93SGVpZ2h0LFtkLHBdPUFPKG4pLG09e3N0YXJ0OiIwJSIsY2VudGVyOiI1MCUiLGVuZDoiMTAwJSJ9W3BdLHk9KGkuYXJyb3c/Lng/PzApK3UvMix4PShpLmFycm93Py55Pz8wKStmLzI7bGV0IHc9IiIsYj0iIjtyZXR1cm4gZD09PSJib3R0b20iPyh3PXM/bTpgJHt5fXB4YCxiPWAkey1mfXB4YCk6ZD09PSJ0b3AiPyh3PXM/bTpgJHt5fXB4YCxiPWAke3IuZmxvYXRpbmcuaGVpZ2h0K2Z9cHhgKTpkPT09InJpZ2h0Ij8odz1gJHstZn1weGAsYj1zP206YCR7eH1weGApOmQ9PT0ibGVmdCImJih3PWAke3IuZmxvYXRpbmcud2lkdGgrZn1weGAsYj1zP206YCR7eH1weGApLHtkYXRhOnt4OncseTpifX19fSk7ZnVuY3Rpb24gQU8oZSl7Y29uc3RbdCxuPSJjZW50ZXIiXT1lLnNwbGl0KCItIik7cmV0dXJuW3Qsbl19dmFyIHhZPVIzLCQzPWszLEIzPUQzLFYzPUkzLFtMeV09bW8oIlRvb2x0aXAiLFtEeV0pLF9PPUR5KCkscTM9IlRvb2x0aXBQcm92aWRlciIsd1k9NzAwLHNSPSJ0b29sdGlwLm9wZW4iLFtTWSxVM109THkocTMpLHozPWU9Pntjb25zdHtfX3Njb3BlVG9vbHRpcDp0LGRlbGF5RHVyYXRpb246bj13WSxza2lwRGVsYXlEdXJhdGlvbjpyPTMwMCxkaXNhYmxlSG92ZXJhYmxlQ29udGVudDppPSExLGNoaWxkcmVuOm99PWUscz1DLnVzZVJlZighMCksdT1DLnVzZVJlZighMSksZj1DLnVzZVJlZigwKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9Pntjb25zdCBkPWYuY3VycmVudDtyZXR1cm4oKT0+d2luZG93LmNsZWFyVGltZW91dChkKX0sW10pLEEuanN4KFNZLHtzY29wZTp0LGlzT3BlbkRlbGF5ZWRSZWY6cyxkZWxheUR1cmF0aW9uOm4sb25PcGVuOkMudXNlQ2FsbGJhY2soKCk9PntyPD0wfHwod2luZG93LmNsZWFyVGltZW91dChmLmN1cnJlbnQpLHMuY3VycmVudD0hMSl9LFtyXSksb25DbG9zZTpDLnVzZUNhbGxiYWNrKCgpPT57cjw9MHx8KHdpbmRvdy5jbGVhclRpbWVvdXQoZi5jdXJyZW50KSxmLmN1cnJlbnQ9d2luZG93LnNldFRpbWVvdXQoKCk9PnMuY3VycmVudD0hMCxyKSl9LFtyXSksaXNQb2ludGVySW5UcmFuc2l0UmVmOnUsb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlOkMudXNlQ2FsbGJhY2soZD0+e3UuY3VycmVudD1kfSxbXSksZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6aSxjaGlsZHJlbjpvfSl9O3ozLmRpc3BsYXlOYW1lPXEzO3ZhciBGMz0iVG9vbHRpcCIsW253ZSxPZF09THkoRjMpLEdTPSJUb29sdGlwVHJpZ2dlciIsQVk9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRvb2x0aXA6biwuLi5yfT1lLGk9T2QoR1Msbiksbz1VMyhHUyxuKSxzPV9PKG4pLHU9Qy51c2VSZWYobnVsbCksZj1JdCh0LHUsaS5vblRyaWdnZXJDaGFuZ2UpLGQ9Qy51c2VSZWYoITEpLHA9Qy51c2VSZWYoITEpLG09Qy51c2VDYWxsYmFjaygoKT0+ZC5jdXJyZW50PSExLFtdKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9PigpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLG0pLFttXSksQS5qc3goJDMse2FzQ2hpbGQ6ITAsLi4ucyxjaGlsZHJlbjpBLmpzeChRZS5idXR0b24seyJhcmlhLWRlc2NyaWJlZGJ5IjppLm9wZW4/aS5jb250ZW50SWQ6dm9pZCAwLCJkYXRhLXN0YXRlIjppLnN0YXRlQXR0cmlidXRlLC4uLnIscmVmOmYsb25Qb2ludGVyTW92ZTp6ZShlLm9uUG9pbnRlck1vdmUseT0+e3kucG9pbnRlclR5cGUhPT0idG91Y2giJiYhcC5jdXJyZW50JiYhby5pc1BvaW50ZXJJblRyYW5zaXRSZWYuY3VycmVudCYmKGkub25UcmlnZ2VyRW50ZXIoKSxwLmN1cnJlbnQ9ITApfSksb25Qb2ludGVyTGVhdmU6emUoZS5vblBvaW50ZXJMZWF2ZSwoKT0+e2kub25UcmlnZ2VyTGVhdmUoKSxwLmN1cnJlbnQ9ITF9KSxvblBvaW50ZXJEb3duOnplKGUub25Qb2ludGVyRG93biwoKT0+e2kub3BlbiYmaS5vbkNsb3NlKCksZC5jdXJyZW50PSEwLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsbSx7b25jZTohMH0pfSksb25Gb2N1czp6ZShlLm9uRm9jdXMsKCk9PntkLmN1cnJlbnR8fGkub25PcGVuKCl9KSxvbkJsdXI6emUoZS5vbkJsdXIsaS5vbkNsb3NlKSxvbkNsaWNrOnplKGUub25DbGljayxpLm9uQ2xvc2UpfSl9KX0pO0FZLmRpc3BsYXlOYW1lPUdTO3ZhciBPTz0iVG9vbHRpcFBvcnRhbCIsW19ZLE9ZXT1MeShPTyx7Zm9yY2VNb3VudDp2b2lkIDB9KSxIMz1lPT57Y29uc3R7X19zY29wZVRvb2x0aXA6dCxmb3JjZU1vdW50Om4sY2hpbGRyZW46cixjb250YWluZXI6aX09ZSxvPU9kKE9PLHQpO3JldHVybiBBLmpzeChfWSx7c2NvcGU6dCxmb3JjZU1vdW50Om4sY2hpbGRyZW46QS5qc3gobWEse3ByZXNlbnQ6bnx8by5vcGVuLGNoaWxkcmVuOkEuanN4KEFkLHthc0NoaWxkOiEwLGNvbnRhaW5lcjppLGNoaWxkcmVuOnJ9KX0pfSl9O0gzLmRpc3BsYXlOYW1lPU9PO3ZhciBabD0iVG9vbHRpcENvbnRlbnQiLEczPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0IG49T1koWmwsZS5fX3Njb3BlVG9vbHRpcCkse2ZvcmNlTW91bnQ6cj1uLmZvcmNlTW91bnQsc2lkZTppPSJ0b3AiLC4uLm99PWUscz1PZChabCxlLl9fc2NvcGVUb29sdGlwKTtyZXR1cm4gQS5qc3gobWEse3ByZXNlbnQ6cnx8cy5vcGVuLGNoaWxkcmVuOnMuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ/QS5qc3goSzMse3NpZGU6aSwuLi5vLHJlZjp0fSk6QS5qc3goVFkse3NpZGU6aSwuLi5vLHJlZjp0fSl9KX0pLFRZPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0IG49T2QoWmwsZS5fX3Njb3BlVG9vbHRpcCkscj1VMyhabCxlLl9fc2NvcGVUb29sdGlwKSxpPUMudXNlUmVmKG51bGwpLG89SXQodCxpKSxbcyx1XT1DLnVzZVN0YXRlKG51bGwpLHt0cmlnZ2VyOmYsb25DbG9zZTpkfT1uLHA9aS5jdXJyZW50LHtvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2U6bX09cix5PUMudXNlQ2FsbGJhY2soKCk9Pnt1KG51bGwpLG0oITEpfSxbbV0pLHg9Qy51c2VDYWxsYmFjaygodyxiKT0+e2NvbnN0IGc9dy5jdXJyZW50VGFyZ2V0LF89e3g6dy5jbGllbnRYLHk6dy5jbGllbnRZfSxPPU1ZKF8sZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksRT1SWShfLE8pLGo9TlkoYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksVD1EWShbLi4uRSwuLi5qXSk7dShUKSxtKCEwKX0sW21dKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9PigpPT55KCksW3ldKSxDLnVzZUVmZmVjdCgoKT0+e2lmKGYmJnApe2NvbnN0IHc9Zz0+eChnLHApLGI9Zz0+eChnLGYpO3JldHVybiBmLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsdykscC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLGIpLCgpPT57Zi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHcpLHAucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixiKX19fSxbZixwLHgseV0pLEMudXNlRWZmZWN0KCgpPT57aWYocyl7Y29uc3Qgdz1iPT57Y29uc3QgZz1iLnRhcmdldCxfPXt4OmIuY2xpZW50WCx5OmIuY2xpZW50WX0sTz1mPy5jb250YWlucyhnKXx8cD8uY29udGFpbnMoZyksRT0ha1koXyxzKTtPP3koKTpFJiYoeSgpLGQoKSl9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdyksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix3KX19LFtmLHAscyxkLHldKSxBLmpzeChLMyx7Li4uZSxyZWY6b30pfSksW0VZLENZXT1MeShGMyx7aXNJbnNpZGU6ITF9KSxqWT1vNygiVG9vbHRpcENvbnRlbnQiKSxLMz1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9vbHRpcDpuLGNoaWxkcmVuOnIsImFyaWEtbGFiZWwiOmksb25Fc2NhcGVLZXlEb3duOm8sb25Qb2ludGVyRG93bk91dHNpZGU6cywuLi51fT1lLGY9T2QoWmwsbiksZD1fTyhuKSx7b25DbG9zZTpwfT1mO3JldHVybiBDLnVzZUVmZmVjdCgoKT0+KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoc1IscCksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoc1IscCkpLFtwXSksQy51c2VFZmZlY3QoKCk9PntpZihmLnRyaWdnZXIpe2NvbnN0IG09eT0+e3kudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSYmeS50YXJnZXQuY29udGFpbnMoZi50cmlnZ2VyKSYmcCgpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsbSx7Y2FwdHVyZTohMH0pLCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixtLHtjYXB0dXJlOiEwfSl9fSxbZi50cmlnZ2VyLHBdKSxBLmpzeChTZCx7YXNDaGlsZDohMCxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6ITEsb25Fc2NhcGVLZXlEb3duOm8sb25Qb2ludGVyRG93bk91dHNpZGU6cyxvbkZvY3VzT3V0c2lkZTptPT5tLnByZXZlbnREZWZhdWx0KCksb25EaXNtaXNzOnAsY2hpbGRyZW46QS5qc3hzKEIzLHsiZGF0YS1zdGF0ZSI6Zi5zdGF0ZUF0dHJpYnV0ZSwuLi5kLC4uLnUscmVmOnQsc3R5bGU6ey4uLnUuc3R5bGUsIi0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4iOiJ2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbikiLCItLXJhZGl4LXRvb2x0aXAtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQiOiJ2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCkiLCItLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci13aWR0aCI6InZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpIiwiLS1yYWRpeC10b29sdGlwLXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn0sY2hpbGRyZW46W0EuanN4KGpZLHtjaGlsZHJlbjpyfSksQS5qc3goRVkse3Njb3BlOm4saXNJbnNpZGU6ITAsY2hpbGRyZW46QS5qc3goRDcse2lkOmYuY29udGVudElkLHJvbGU6InRvb2x0aXAiLGNoaWxkcmVuOml8fHJ9KX0pXX0pfSl9KTtHMy5kaXNwbGF5TmFtZT1abDt2YXIgVzM9IlRvb2x0aXBBcnJvdyIsUFk9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRvb2x0aXA6biwuLi5yfT1lLGk9X08obik7cmV0dXJuIENZKFczLG4pLmlzSW5zaWRlP251bGw6QS5qc3goVjMsey4uLmksLi4ucixyZWY6dH0pfSk7UFkuZGlzcGxheU5hbWU9VzM7ZnVuY3Rpb24gTVkoZSx0KXtjb25zdCBuPU1hdGguYWJzKHQudG9wLWUueSkscj1NYXRoLmFicyh0LmJvdHRvbS1lLnkpLGk9TWF0aC5hYnModC5yaWdodC1lLngpLG89TWF0aC5hYnModC5sZWZ0LWUueCk7c3dpdGNoKE1hdGgubWluKG4scixpLG8pKXtjYXNlIG86cmV0dXJuImxlZnQiO2Nhc2UgaTpyZXR1cm4icmlnaHQiO2Nhc2UgbjpyZXR1cm4idG9wIjtjYXNlIHI6cmV0dXJuImJvdHRvbSI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVhY2hhYmxlIil9fWZ1bmN0aW9uIFJZKGUsdCxuPTUpe2NvbnN0IHI9W107c3dpdGNoKHQpe2Nhc2UidG9wIjpyLnB1c2goe3g6ZS54LW4seTplLnkrbn0se3g6ZS54K24seTplLnkrbn0pO2JyZWFrO2Nhc2UiYm90dG9tIjpyLnB1c2goe3g6ZS54LW4seTplLnktbn0se3g6ZS54K24seTplLnktbn0pO2JyZWFrO2Nhc2UibGVmdCI6ci5wdXNoKHt4OmUueCtuLHk6ZS55LW59LHt4OmUueCtuLHk6ZS55K259KTticmVhaztjYXNlInJpZ2h0IjpyLnB1c2goe3g6ZS54LW4seTplLnktbn0se3g6ZS54LW4seTplLnkrbn0pO2JyZWFrfXJldHVybiByfWZ1bmN0aW9uIE5ZKGUpe2NvbnN0e3RvcDp0LHJpZ2h0Om4sYm90dG9tOnIsbGVmdDppfT1lO3JldHVyblt7eDppLHk6dH0se3g6bix5OnR9LHt4Om4seTpyfSx7eDppLHk6cn1dfWZ1bmN0aW9uIGtZKGUsdCl7Y29uc3R7eDpuLHk6cn09ZTtsZXQgaT0hMTtmb3IobGV0IG89MCxzPXQubGVuZ3RoLTE7bzx0Lmxlbmd0aDtzPW8rKyl7Y29uc3QgdT10W29dLGY9dFtzXSxkPXUueCxwPXUueSxtPWYueCx5PWYueTtwPnIhPXk+ciYmbjwobS1kKSooci1wKS8oeS1wKStkJiYoaT0haSl9cmV0dXJuIGl9ZnVuY3Rpb24gRFkoZSl7Y29uc3QgdD1lLnNsaWNlKCk7cmV0dXJuIHQuc29ydCgobixyKT0+bi54PHIueD8tMTpuLng+ci54PzE6bi55PHIueT8tMTpuLnk+ci55PzE6MCksTFkodCl9ZnVuY3Rpb24gTFkoZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGUuc2xpY2UoKTtjb25zdCB0PVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtjb25zdCBpPWVbcl07Zm9yKDt0Lmxlbmd0aD49Mjspe2NvbnN0IG89dFt0Lmxlbmd0aC0xXSxzPXRbdC5sZW5ndGgtMl07aWYoKG8ueC1zLngpKihpLnktcy55KT49KG8ueS1zLnkpKihpLngtcy54KSl0LnBvcCgpO2Vsc2UgYnJlYWt9dC5wdXNoKGkpfXQucG9wKCk7Y29uc3Qgbj1bXTtmb3IobGV0IHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSl7Y29uc3QgaT1lW3JdO2Zvcig7bi5sZW5ndGg+PTI7KXtjb25zdCBvPW5bbi5sZW5ndGgtMV0scz1uW24ubGVuZ3RoLTJdO2lmKChvLngtcy54KSooaS55LXMueSk+PShvLnktcy55KSooaS54LXMueCkpbi5wb3AoKTtlbHNlIGJyZWFrfW4ucHVzaChpKX1yZXR1cm4gbi5wb3AoKSx0Lmxlbmd0aD09PTEmJm4ubGVuZ3RoPT09MSYmdFswXS54PT09blswXS54JiZ0WzBdLnk9PT1uWzBdLnk/dDp0LmNvbmNhdChuKX12YXIgSVk9ejMsJFk9SDMsWTM9RzM7Y29uc3QgQlk9SVksVlk9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsc2lkZU9mZnNldDp0PTQsLi4ubn0scik9PkEuanN4KCRZLHtjaGlsZHJlbjpBLmpzeChZMyx7cmVmOnIsc2lkZU9mZnNldDp0LGNsYXNzTmFtZTpvdCgiei01MCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBiZy1wcmltYXJ5IHB4LTMgcHktMS41IHRleHQteHMgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgYW5pbWF0ZS1pbiBmYWRlLWluLTAgem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yIG9yaWdpbi1bLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl0iLGUpLC4uLm59KX0pKTtWWS5kaXNwbGF5TmFtZT1ZMy5kaXNwbGF5TmFtZTtmdW5jdGlvbiBxWShlLHQpe2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJue2tleXM6ITEscGF0dGVybjplfTt2YXIgbixyLGksbyxzPVtdLHU9IiIsZj1lLnNwbGl0KCIvIik7Zm9yKGZbMF18fGYuc2hpZnQoKTtpPWYuc2hpZnQoKTspbj1pWzBdLG49PT0iKiI/KHMucHVzaChuKSx1Kz1pWzFdPT09Ij8iPyIoPzovKC4qKSk/IjoiLyguKikiKTpuPT09IjoiPyhyPWkuaW5kZXhPZigiPyIsMSksbz1pLmluZGV4T2YoIi4iLDEpLHMucHVzaChpLnN1YnN0cmluZygxLH5yP3I6fm8/bzppLmxlbmd0aCkpLHUrPX5yJiYhfm8/Iig/Oi8oW14vXSs/KSk/IjoiLyhbXi9dKz8pIix+byYmKHUrPSh+cj8iPyI6IiIpKyJcXCIraS5zdWJzdHJpbmcobykpKTp1Kz0iLyIraTtyZXR1cm57a2V5czpzLHBhdHRlcm46bmV3IFJlZ0V4cCgiXiIrdSsodD8iKD89JHwvKSI6Ii8/JCIpLCJpIil9fXZhciByMD17ZXhwb3J0czp7fX0saTA9e307dmFyIGxSO2Z1bmN0aW9uIFVZKCl7aWYobFIpcmV0dXJuIGkwO2xSPTE7dmFyIGU9VHkoKTtmdW5jdGlvbiB0KG0seSl7cmV0dXJuIG09PT15JiYobSE9PTB8fDEvbT09PTEveSl8fG0hPT1tJiZ5IT09eX12YXIgbj10eXBlb2YgT2JqZWN0LmlzPT0iZnVuY3Rpb24iP09iamVjdC5pczp0LHI9ZS51c2VTdGF0ZSxpPWUudXNlRWZmZWN0LG89ZS51c2VMYXlvdXRFZmZlY3Qscz1lLnVzZURlYnVnVmFsdWU7ZnVuY3Rpb24gdShtLHkpe3ZhciB4PXkoKSx3PXIoe2luc3Q6e3ZhbHVlOngsZ2V0U25hcHNob3Q6eX19KSxiPXdbMF0uaW5zdCxnPXdbMV07cmV0dXJuIG8oZnVuY3Rpb24oKXtiLnZhbHVlPXgsYi5nZXRTbmFwc2hvdD15LGYoYikmJmcoe2luc3Q6Yn0pfSxbbSx4LHldKSxpKGZ1bmN0aW9uKCl7cmV0dXJuIGYoYikmJmcoe2luc3Q6Yn0pLG0oZnVuY3Rpb24oKXtmKGIpJiZnKHtpbnN0OmJ9KX0pfSxbbV0pLHMoeCkseH1mdW5jdGlvbiBmKG0pe3ZhciB5PW0uZ2V0U25hcHNob3Q7bT1tLnZhbHVlO3RyeXt2YXIgeD15KCk7cmV0dXJuIW4obSx4KX1jYXRjaHtyZXR1cm4hMH19ZnVuY3Rpb24gZChtLHkpe3JldHVybiB5KCl9dmFyIHA9dHlwZW9mIHdpbmRvdz4idSJ8fHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQ+InUifHx0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ+InUiP2Q6dTtyZXR1cm4gaTAudXNlU3luY0V4dGVybmFsU3RvcmU9ZS51c2VTeW5jRXh0ZXJuYWxTdG9yZSE9PXZvaWQgMD9lLnVzZVN5bmNFeHRlcm5hbFN0b3JlOnAsaTB9dmFyIHVSO2Z1bmN0aW9uIHpZKCl7cmV0dXJuIHVSfHwodVI9MSxyMC5leHBvcnRzPVVZKCkpLHIwLmV4cG9ydHN9dmFyIEZZPXpZKCk7Y29uc3QgSFk9d2QudXNlSW5zZXJ0aW9uRWZmZWN0LEdZPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2Ygd2luZG93LmRvY3VtZW50PCJ1IiYmdHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50PCJ1IixLWT1HWT9DLnVzZUxheW91dEVmZmVjdDpDLnVzZUVmZmVjdCxXWT1IWXx8S1ksWDM9ZT0+e2NvbnN0IHQ9Qy51c2VSZWYoW2UsKC4uLm4pPT50WzBdKC4uLm4pXSkuY3VycmVudDtyZXR1cm4gV1koKCk9Pnt0WzBdPWV9KSx0WzFdfSxZWT0icG9wc3RhdGUiLFRPPSJwdXNoU3RhdGUiLEVPPSJyZXBsYWNlU3RhdGUiLFhZPSJoYXNoY2hhbmdlIixjUj1bWVksVE8sRU8sWFldLFpZPWU9Pntmb3IoY29uc3QgdCBvZiBjUilhZGRFdmVudExpc3RlbmVyKHQsZSk7cmV0dXJuKCk9Pntmb3IoY29uc3QgdCBvZiBjUilyZW1vdmVFdmVudExpc3RlbmVyKHQsZSl9fSxaMz0oZSx0KT0+RlkudXNlU3luY0V4dGVybmFsU3RvcmUoWlksZSx0KSxmUj0oKT0+bG9jYXRpb24uc2VhcmNoLFFZPSh7c3NyU2VhcmNoOmV9PXt9KT0+WjMoZlIsZSE9bnVsbD8oKT0+ZTpmUiksZFI9KCk9PmxvY2F0aW9uLnBhdGhuYW1lLEpZPSh7c3NyUGF0aDplfT17fSk9PlozKGRSLGUhPW51bGw/KCk9PmU6ZFIpLGVYPShlLHtyZXBsYWNlOnQ9ITEsc3RhdGU6bj1udWxsfT17fSk9Pmhpc3RvcnlbdD9FTzpUT10obiwiIixlKSx0WD0oZT17fSk9PltKWShlKSxlWF0saFI9U3ltYm9sLmZvcigid291dGVyX3YzIik7aWYodHlwZW9mIGhpc3Rvcnk8InUiJiZ0eXBlb2Ygd2luZG93W2hSXT4idSIpe2Zvcihjb25zdCBlIG9mW1RPLEVPXSl7Y29uc3QgdD1oaXN0b3J5W2VdO2hpc3RvcnlbZV09ZnVuY3Rpb24oKXtjb25zdCBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9bmV3IEV2ZW50KGUpO3JldHVybiByLmFyZ3VtZW50cz1hcmd1bWVudHMsZGlzcGF0Y2hFdmVudChyKSxufX1PYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LGhSLHt2YWx1ZTohMH0pfWNvbnN0IG5YPShlLHQpPT50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihlLnRvTG93ZXJDYXNlKCkpPyJ+Iit0OnQuc2xpY2UoZS5sZW5ndGgpfHwiLyIsUTM9KGU9IiIpPT5lPT09Ii8iPyIiOmUsclg9KGUsdCk9PmVbMF09PT0ifiI/ZS5zbGljZSgxKTpRMyh0KStlLGlYPShlPSIiLHQpPT5uWChwUihRMyhlKSkscFIodCkpLHBSPWU9Pnt0cnl7cmV0dXJuIGRlY29kZVVSSShlKX1jYXRjaHtyZXR1cm4gZX19LEozPXtob29rOnRYLHNlYXJjaEhvb2s6UVkscGFyc2VyOnFZLGJhc2U6IiIsc3NyUGF0aDp2b2lkIDAsc3NyU2VhcmNoOnZvaWQgMCxzc3JDb250ZXh0OnZvaWQgMCxocmVmczplPT5lLGFyb3VuZE5hdjooZSx0LG4pPT5lKHQsbil9LGVWPUMuY3JlYXRlQ29udGV4dChKMyksa3U9KCk9PkMudXNlQ29udGV4dChlViksdFY9e30sblY9Qy5jcmVhdGVDb250ZXh0KHRWKSxhWD0oKT0+Qy51c2VDb250ZXh0KG5WKSxJeT1lPT57Y29uc3RbdCxuXT1lLmhvb2soZSk7cmV0dXJuW2lYKGUuYmFzZSx0KSxYMygocixpKT0+ZS5hcm91bmROYXYobixyWChyLGUuYmFzZSksaSkpXX0sJHk9KCk9Pkl5KGt1KCkpLENPPShlLHQsbixyKT0+e2NvbnN0e3BhdHRlcm46aSxrZXlzOm99PXQgaW5zdGFuY2VvZiBSZWdFeHA/e2tleXM6ITEscGF0dGVybjp0fTplKHR8fCIqIixyKSxzPWkuZXhlYyhuKXx8W10sW3UsLi4uZl09cztyZXR1cm4gdSE9PXZvaWQgMD9bITAsKCgpPT57Y29uc3QgZD1vIT09ITE/T2JqZWN0LmZyb21FbnRyaWVzKG8ubWFwKChtLHkpPT5bbSxmW3ldXSkpOnMuZ3JvdXBzO2xldCBwPXsuLi5mfTtyZXR1cm4gZCYmT2JqZWN0LmFzc2lnbihwLGQpLHB9KSgpLC4uLnI/W3VdOltdXTpbITEsbnVsbF19LG9YPWU9PkNPKGt1KCkucGFyc2VyLGUsJHkoKVswXSksclY9KHtjaGlsZHJlbjplLC4uLnR9KT0+e2NvbnN0IG49a3UoKSxyPXQuaG9vaz9KMzpuO2xldCBpPXI7Y29uc3RbbyxzPXQuc3NyU2VhcmNoPz8iIl09dC5zc3JQYXRoPy5zcGxpdCgiPyIpPz9bXTtvJiYodC5zc3JTZWFyY2g9cyx0LnNzclBhdGg9byksdC5ocmVmcz10LmhyZWZzPz90Lmhvb2s/LmhyZWZzLHQuc2VhcmNoSG9vaz10LnNlYXJjaEhvb2s/P3QuaG9vaz8uc2VhcmNoSG9vaztsZXQgdT1DLnVzZVJlZih7fSksZj11LmN1cnJlbnQsZD1mO2ZvcihsZXQgcCBpbiByKXtjb25zdCBtPXA9PT0iYmFzZSI/cltwXSsodFtwXT8/IiIpOnRbcF0/P3JbcF07Zj09PWQmJm0hPT1kW3BdJiYodS5jdXJyZW50PWQ9ey4uLmR9KSxkW3BdPW0sKG0hPT1yW3BdfHxtIT09aVtwXSkmJihpPWQpfXJldHVybiBDLmNyZWF0ZUVsZW1lbnQoZVYuUHJvdmlkZXIse3ZhbHVlOmksY2hpbGRyZW46ZX0pfSxtUj0oe2NoaWxkcmVuOmUsY29tcG9uZW50OnR9LG4pPT50P0MuY3JlYXRlRWxlbWVudCh0LHtwYXJhbXM6bn0pOnR5cGVvZiBlPT0iZnVuY3Rpb24iP2Uobik6ZSxzWD1lPT57bGV0IHQ9Qy51c2VSZWYodFYpO2NvbnN0IG49dC5jdXJyZW50O3JldHVybiB0LmN1cnJlbnQ9T2JqZWN0LmtleXMoZSkubGVuZ3RoIT09T2JqZWN0LmtleXMobikubGVuZ3RofHxPYmplY3QuZW50cmllcyhlKS5zb21lKChbcixpXSk9PmkhPT1uW3JdKT9lOm59LFdvPSh7cGF0aDplLG5lc3Q6dCxtYXRjaDpuLC4uLnJ9KT0+e2NvbnN0IGk9a3UoKSxbb109SXkoaSksW3MsdSxmXT1uPz9DTyhpLnBhcnNlcixlLG8sdCksZD1zWCh7Li4uYVgoKSwuLi51fSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3QgcD1mP0MuY3JlYXRlRWxlbWVudChyVix7YmFzZTpmfSxtUihyLGQpKTptUihyLGQpO3JldHVybiBDLmNyZWF0ZUVsZW1lbnQoblYuUHJvdmlkZXIse3ZhbHVlOmQsY2hpbGRyZW46cH0pfSxhbT1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdCBuPWt1KCksW3IsaV09SXkobikse3RvOm89IiIsaHJlZjpzPW8sb25DbGljazp1LGFzQ2hpbGQ6ZixjaGlsZHJlbjpkLGNsYXNzTmFtZTpwLHJlcGxhY2U6bSxzdGF0ZTp5LHRyYW5zaXRpb246eCwuLi53fT1lLGI9WDMoXz0+e18uY3RybEtleXx8Xy5tZXRhS2V5fHxfLmFsdEtleXx8Xy5zaGlmdEtleXx8Xy5idXR0b24hPT0wfHwodT8uKF8pLF8uZGVmYXVsdFByZXZlbnRlZHx8KF8ucHJldmVudERlZmF1bHQoKSxpKHMsZSkpKX0pLGc9bi5ocmVmcyhzWzBdPT09In4iP3Muc2xpY2UoMSk6bi5iYXNlK3Msbik7cmV0dXJuIGYmJkMuaXNWYWxpZEVsZW1lbnQoZCk/Qy5jbG9uZUVsZW1lbnQoZCx7b25DbGljazpiLGhyZWY6Z30pOkMuY3JlYXRlRWxlbWVudCgiYSIsey4uLncsb25DbGljazpiLGhyZWY6ZyxjbGFzc05hbWU6cD8uY2FsbD9wKHI9PT1zKTpwLGNoaWxkcmVuOmQscmVmOnR9KX0pLGlWPWU9PkFycmF5LmlzQXJyYXkoZSk/ZS5mbGF0TWFwKHQ9PmlWKHQmJnQudHlwZT09PUMuRnJhZ21lbnQ/dC5wcm9wcy5jaGlsZHJlbjp0KSk6W2VdLGxYPSh7Y2hpbGRyZW46ZSxsb2NhdGlvbjp0fSk9Pntjb25zdCBuPWt1KCksW3JdPUl5KG4pO2Zvcihjb25zdCBpIG9mIGlWKGUpKXtsZXQgbz0wO2lmKEMuaXNWYWxpZEVsZW1lbnQoaSkmJihvPUNPKG4ucGFyc2VyLGkucHJvcHMucGF0aCx0fHxyLGkucHJvcHMubmVzdCkpWzBdKXJldHVybiBDLmNsb25lRWxlbWVudChpLHttYXRjaDpvfSl9cmV0dXJuIG51bGx9LHVYPTE2MjE5NDAsSXA9IjB4QWZEMjcxQzM5MkQxOTlkYjFjNDc2MzZFQzgyZUZCMTZlNmREQThkZCIsb2Y9W3tpZDoidGV0aGVyIixzeW1ib2w6IlVTRFQiLG5hbWU6IlRldGhlciIsbmV0d29yazoiRXRoZXJldW0gKEVSQy0yMCkiLGJhbGFuY2U6MTYwODM0MCx2YWx1ZToxNjA4MzQwLGFsbG9jYXRpb246OTkuMTYsY2hhbmdlMjRoOjAsY29sb3I6IiMyNkExN0IiLGljb25Db2xvcjoiYmctWyMyNkExN0JdIixwcmljZToxfSx7aWQ6ImJpdGNvaW4iLHN5bWJvbDoiQlRDIixuYW1lOiJCaXRjb2luIixuZXR3b3JrOiJCaXRjb2luIixiYWxhbmNlOi4xNDMwNyx2YWx1ZTo5MjAwLGFsbG9jYXRpb246LjU3LGNoYW5nZTI0aDoyLjQsY29sb3I6IiNGNzkzMUEiLGljb25Db2xvcjoiYmctWyNGNzkzMUFdIixwcmljZTo2NDMwMi42NX0se2lkOiJzb2xhbmEiLHN5bWJvbDoiU09MIixuYW1lOiJTb2xhbmEiLG5ldHdvcms6IlNvbGFuYSIsYmFsYW5jZTo1Ny44LHZhbHVlOjQ0MDAsYWxsb2NhdGlvbjouMjcsY2hhbmdlMjRoOjUuMixjb2xvcjoiIzE0RjE5NSIsaWNvbkNvbG9yOiJiZy1ncmFkaWVudC10by10ciBmcm9tLVsjOTk0NUZGXSB0by1bIzE0RjE5NV0iLHByaWNlOjc2LjEyfV0sY1g9W3tpZDoiQ0ItVE44MS00NDA3Iix0eXBlOiJyZWNlaXZlIixhc3NldDoiVVNEVCIsYW1vdW50OjEyOGUzLGFtb3VudFVzZDoxMjhlMyxzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiSnVzdCBub3ciLGRlc2NyaXB0aW9uOiJGcm9tIGV4dGVybmFsIHdhbGxldCJ9LHtpZDoiQ0ItWEo5Sy0xMjk0Iix0eXBlOiJyZWNlaXZlIixhc3NldDoiVVNEVCIsYW1vdW50OjI1ZTQsYW1vdW50VXNkOjI1ZTQsc3RhdHVzOiJjb21wbGV0ZWQiLGRhdGU6IjIgZGF5cyBhZ28iLGRlc2NyaXB0aW9uOiJGcm9tIGV4dGVybmFsIHdhbGxldCJ9LHtpZDoiQ0ItQUwzOS04NDcyIix0eXBlOiJ3aXRoZHJhdyIsYXNzZXQ6IlVTRFQiLGFtb3VudDo1ZTQsYW1vdW50VXNkOjVlNCxzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiMyBkYXlzIGFnbyIsZGVzY3JpcHRpb246IlRvIENoYXNlICoqKio0NTIxIn0se2lkOiJDQi1XUTgyLTAwMTIiLHR5cGU6IndpdGhkcmF3Iixhc3NldDoiVVNEVCIsYW1vdW50OjI1ZTMsYW1vdW50VXNkOjI1ZTMsc3RhdHVzOiJjb21wbGV0ZWQiLGRhdGU6IjUgZGF5cyBhZ28iLGRlc2NyaXB0aW9uOiJUbyBDaGFzZSAqKioqNDUyMSJ9LHtpZDoiQ0ItUEwwMi05OTM4Iix0eXBlOiJidXkiLGFzc2V0OiJTT0wiLGFtb3VudDoxMCxhbW91bnRVc2Q6NzYxLHN0YXR1czoiY29tcGxldGVkIixkYXRlOiIxIHdlZWsgYWdvIn0se2lkOiJDQi1NQzc0LTExODIiLHR5cGU6ImJ1eSIsYXNzZXQ6IkJUQyIsYW1vdW50Oi4wMSxhbW91bnRVc2Q6NjQzLHN0YXR1czoiY29tcGxldGVkIixkYXRlOiIxIHdlZWsgYWdvIn0se2lkOiJDQi1aVjgzLTQ5MjEiLHR5cGU6InJlY2VpdmUiLGFzc2V0OiJVU0RUIixhbW91bnQ6MWU1LGFtb3VudFVzZDoxZTUsc3RhdHVzOiJjb21wbGV0ZWQiLGRhdGU6IjIgd2Vla3MgYWdvIixkZXNjcmlwdGlvbjoiRnJvbSBleHRlcm5hbCB3YWxsZXQifSx7aWQ6IkNCLUJEOTEtODg0MyIsdHlwZToiZGVwb3NpdCIsYXNzZXQ6IlVTRFQiLGFtb3VudDoyZTUsYW1vdW50VXNkOjJlNSxzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiMiB3ZWVrcyBhZ28iLGRlc2NyaXB0aW9uOiJGcm9tIENoYXNlICoqKio0NTIxIn0se2lkOiJDQi1YTjQ0LTAxOTIiLHR5cGU6InNlbGwiLGFzc2V0OiJTT0wiLGFtb3VudDoyMCxhbW91bnRVc2Q6MTUyMixzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiMyB3ZWVrcyBhZ28ifSx7aWQ6IkNCLUtMMjktOTk0MSIsdHlwZToic2VuZCIsYXNzZXQ6IlVTRFQiLGFtb3VudDoxNWUzLGFtb3VudFVzZDoxNWUzLHN0YXR1czoiY29tcGxldGVkIixkYXRlOiIzIHdlZWtzIGFnbyIsZGVzY3JpcHRpb246IlRvIGV4dGVybmFsIHdhbGxldCJ9LHtpZDoiQ0ItT1AxMi03NjM0Iix0eXBlOiJkZXBvc2l0Iixhc3NldDoiVVNEVCIsYW1vdW50OjVlNSxhbW91bnRVc2Q6NWU1LHN0YXR1czoiY29tcGxldGVkIixkYXRlOiIxIG1vbnRoIGFnbyIsZGVzY3JpcHRpb246IkZyb20gQ2hhc2UgKioqKjQ1MjEifSx7aWQ6IkNCLVdFOTktMjgxMCIsdHlwZToic2VuZCIsYXNzZXQ6IlVTRFQiLGFtb3VudDoxZTQsYW1vdW50VXNkOjFlNCxzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiMSBtb250aCBhZ28iLGRlc2NyaXB0aW9uOiJUbyBleHRlcm5hbCB3YWxsZXQifSx7aWQ6IkNCLVJUNTYtMTAyOSIsdHlwZToicmVjZWl2ZSIsYXNzZXQ6IkJUQyIsYW1vdW50Oi4xLGFtb3VudFVzZDo2NDMwLHN0YXR1czoiY29tcGxldGVkIixkYXRlOiIxIG1vbnRoIGFnbyJ9LHtpZDoiQ0ItVUk4OC0zNDgyIix0eXBlOiJidXkiLGFzc2V0OiJTT0wiLGFtb3VudDozMCxhbW91bnRVc2Q6MjI4NCxzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiNiB3ZWVrcyBhZ28ifSx7aWQ6IkNCLURGNDUtOTkyMSIsdHlwZToiZGVwb3NpdCIsYXNzZXQ6IlVTRFQiLGFtb3VudDo0ZTUsYW1vdW50VXNkOjRlNSxzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiNiB3ZWVrcyBhZ28iLGRlc2NyaXB0aW9uOiJGcm9tIENoYXNlICoqKio0NTIxIn0se2lkOiJDQi1HSDc3LTAxMDIiLHR5cGU6ImJ1eSIsYXNzZXQ6IkJUQyIsYW1vdW50Oi4wNDMwNyxhbW91bnRVc2Q6Mjc2OSxzdGF0dXM6ImNvbXBsZXRlZCIsZGF0ZToiMiBtb250aHMgYWdvIn1dLHlSPVt7bmFtZToiUG9ydGZvbGlvIixwYXRoOiIvIixpY29uOlNLfSx7bmFtZToiV2l0aGRyYXciLHBhdGg6Ii93aXRoZHJhdyIsaWNvbjp0S30se25hbWU6IkFzc2V0cyIscGF0aDoiL2Fzc2V0cyIsaWNvbjpwT30se25hbWU6IlRyYW5zYWN0aW9ucyIscGF0aDoiL3RyYW5zYWN0aW9ucyIsaWNvbjp4S30se25hbWU6IlNldHRpbmdzIixwYXRoOiIvc2V0dGluZ3MiLGljb246a0t9XTtmdW5jdGlvbiBmWCh7Y2hpbGRyZW46ZX0pe2NvbnN0W3RdPSR5KCksW24scl09Qy51c2VTdGF0ZSgiZGFyayIpO0MudXNlRWZmZWN0KCgpPT57Y29uc3Qgbz13aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O28uY2xhc3NMaXN0LnJlbW92ZSgibGlnaHQiLCJkYXJrIiksby5jbGFzc0xpc3QuYWRkKG4pfSxbbl0pO2NvbnN0IGk9KCk9PnIobj09PSJsaWdodCI/ImRhcmsiOiJsaWdodCIpO3JldHVybiBBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBoLXNjcmVlbiB3LWZ1bGwgYmctYmFja2dyb3VuZCB0ZXh0LWZvcmVncm91bmQgb3ZlcmZsb3ctaGlkZGVuIixjaGlsZHJlbjpbQS5qc3hzKCJhc2lkZSIse2NsYXNzTmFtZToiaGlkZGVuIG1kOmZsZXggZmxleC1jb2wgdy02NCBib3JkZXItciBib3JkZXItYm9yZGVyIGJnLWNhcmQiLGNoaWxkcmVuOltBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJwLTYiLGNoaWxkcmVuOkEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBmb250LWJvbGQgdGV4dC0yeGwgdHJhY2tpbmctdGlnaHRlciB0ZXh0LXByaW1hcnkiLGNoaWxkcmVuOltBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTggaC04IHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIixjaGlsZHJlbjpBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTMgaC0zIHJvdW5kZWQtZnVsbCBiZy1iYWNrZ3JvdW5kIn0pfSksIkNvaW5iYXNlIl19KX0pLEEuanN4KCJuYXYiLHtjbGFzc05hbWU6ImZsZXgtMSBweC00IHNwYWNlLXktMSBtdC00IixjaGlsZHJlbjp5Ui5tYXAobz0+e2NvbnN0IHM9dD09PW8ucGF0aHx8by5wYXRoIT09Ii8iJiZ0LnN0YXJ0c1dpdGgoby5wYXRoKTtyZXR1cm4gQS5qc3goYW0se2hyZWY6by5wYXRoLGNoaWxkcmVuOkEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOm90KCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweC00IHB5LTMgcm91bmRlZC14bCB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdHJhbnNpdGlvbi1jb2xvcnMgY3Vyc29yLXBvaW50ZXIiLHM/ImJnLXNlY29uZGFyeSB0ZXh0LWZvcmVncm91bmQiOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzUwIGhvdmVyOnRleHQtZm9yZWdyb3VuZCIpLGNoaWxkcmVuOltBLmpzeChvLmljb24se2NsYXNzTmFtZTpvdCgidy01IGgtNSIscz8idGV4dC1wcmltYXJ5IjoiIil9KSxvLm5hbWVdfSl9LG8ucGF0aCl9KX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJwLTQgbXQtYXV0byIsY2hpbGRyZW46W0EuanN4cygiYnV0dG9uIix7b25DbGljazppLGNsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgdy1mdWxsIHB4LTQgcHktMyByb3VuZGVkLXhsIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzUwIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBtYi00IixjaGlsZHJlbjpbbj09PSJkYXJrIj9BLmpzeChZTSx7Y2xhc3NOYW1lOiJ3LTUgaC01In0pOkEuanN4KEtNLHtjbGFzc05hbWU6InctNSBoLTUifSksbj09PSJkYXJrIj8iTGlnaHQgTW9kZSI6IkRhcmsgTW9kZSJdfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTIgcHgtNCBweS0zIHJvdW5kZWQteGwgYmctc2Vjb25kYXJ5LzMwIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIixjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZToidy0xMCBoLTEwIHJvdW5kZWQtZnVsbCBiZy1ncmFkaWVudC10by10ciBmcm9tLXByaW1hcnkgdG8tcHVycGxlLTUwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBzaHJpbmstMCIsY2hpbGRyZW46IklXIn0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIixjaGlsZHJlbjpbQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtc20gZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgbWItMSIsY2hpbGRyZW46IkluaWFraSBXaWxsaWFtcyJ9KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJQcm8gTWVtYmVyIn0pXX0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IGJnLWJhY2tncm91bmQvNDAgcm91bmRlZC1sZyBweC0yIHB5LTEuNSBtdC0xIixjaGlsZHJlbjpbQS5qc3gocE8se2NsYXNzTmFtZToidy0zIGgtMyB0ZXh0LXByaW1hcnkgc2hyaW5rLTAifSksQS5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMHB4XSBmb250LW1vbm8gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRydW5jYXRlIix0aXRsZTpJcCxjaGlsZHJlbjpbSXAuc2xpY2UoMCw2KSwi4oCmIixJcC5zbGljZSgtNildfSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzlweF0gYmctcHJpbWFyeS8xNSB0ZXh0LXByaW1hcnkgcHgtMS41IHB5LTAuNSByb3VuZGVkIGZvbnQtc2VtaWJvbGQgc2hyaW5rLTAiLGNoaWxkcmVuOiJNYWluIn0pXX0pXX0pXX0pXX0pLEEuanN4cygibWFpbiIse2NsYXNzTmFtZToiZmxleC0xIGZsZXggZmxleC1jb2wgaC1zY3JlZW4gb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuIHBiLTIwIG1kOnBiLTAgcmVsYXRpdmUiLGNoaWxkcmVuOltBLmpzeHMoImhlYWRlciIse2NsYXNzTmFtZToibWQ6aGlkZGVuIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgYm9yZGVyLWIgYm9yZGVyLWJvcmRlciBiZy1jYXJkLzgwIGJhY2tkcm9wLWJsdXItbWQgc3RpY2t5IHRvcC0wIHotMjAiLGNoaWxkcmVuOltBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTggaC04IHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIixjaGlsZHJlbjpBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTMgaC0zIHJvdW5kZWQtZnVsbCBiZy1iYWNrZ3JvdW5kIn0pfSksQS5qc3goImJ1dHRvbiIse29uQ2xpY2s6aSxjbGFzc05hbWU6InAtMiByb3VuZGVkLWZ1bGwgYmctc2Vjb25kYXJ5IHRleHQtZm9yZWdyb3VuZCIsY2hpbGRyZW46bj09PSJkYXJrIj9BLmpzeChZTSx7Y2xhc3NOYW1lOiJ3LTQgaC00In0pOkEuanN4KEtNLHtjbGFzc05hbWU6InctNCBoLTQifSl9KV19KSxBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4LTEgdy1mdWxsIG1heC13LTZ4bCBteC1hdXRvIHAtNCBtZDpwLTgiLGNoaWxkcmVuOmV9KV19KSxBLmpzeCgibmF2Iix7Y2xhc3NOYW1lOiJtZDpoaWRkZW4gZml4ZWQgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgYm9yZGVyLXQgYm9yZGVyLWJvcmRlciBiZy1jYXJkLzgwIGJhY2tkcm9wLWJsdXItbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1hcm91bmQgcC0yIHBiLXNhZmUgei0zMCIsY2hpbGRyZW46eVIubWFwKG89Pntjb25zdCBzPXQ9PT1vLnBhdGh8fG8ucGF0aCE9PSIvIiYmdC5zdGFydHNXaXRoKG8ucGF0aCk7cmV0dXJuIEEuanN4KGFtLHtocmVmOm8ucGF0aCxjaGlsZHJlbjpBLmpzeHMoImRpdiIse2NsYXNzTmFtZTpvdCgiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTEgcC0yIHJvdW5kZWQtbGcgdHJhbnNpdGlvbi1jb2xvcnMgY3Vyc29yLXBvaW50ZXIiLHM/InRleHQtcHJpbWFyeSI6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCIpLGNoaWxkcmVuOltBLmpzeChvLmljb24se2NsYXNzTmFtZToidy02IGgtNiJ9KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTBweF0gZm9udC1tZWRpdW0iLGNoaWxkcmVuOm8ubmFtZX0pXX0pfSxvLnBhdGgpfSl9KV19KX1jb25zdCBtbj1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3goImRpdiIse3JlZjpuLGNsYXNzTmFtZTpvdCgicm91bmRlZC0yeGwgYm9yZGVyIGJvcmRlci1jYXJkLWJvcmRlciBiZy1jYXJkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIHNoYWRvdy1zbSIsZSksLi4udH0pKTttbi5kaXNwbGF5TmFtZT0iQ2FyZCI7Y29uc3QgZFg9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KCJkaXYiLHtyZWY6bixjbGFzc05hbWU6b3QoImZsZXggZmxleC1jb2wgc3BhY2UteS0xLjUgcC02IixlKSwuLi50fSkpO2RYLmRpc3BsYXlOYW1lPSJDYXJkSGVhZGVyIjtjb25zdCBoWD1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3goImgzIix7cmVmOm4sY2xhc3NOYW1lOm90KCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0IixlKSwuLi50fSkpO2hYLmRpc3BsYXlOYW1lPSJDYXJkVGl0bGUiO2NvbnN0IHBYPUMuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLC4uLnR9LG4pPT5BLmpzeCgicCIse3JlZjpuLGNsYXNzTmFtZTpvdCgidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQiLGUpLC4uLnR9KSk7cFguZGlzcGxheU5hbWU9IkNhcmREZXNjcmlwdGlvbiI7Y29uc3QgbVg9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KCJkaXYiLHtyZWY6bixjbGFzc05hbWU6b3QoInAtNiBwdC0wIixlKSwuLi50fSkpO21YLmRpc3BsYXlOYW1lPSJDYXJkQ29udGVudCI7Y29uc3QgeVg9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KCJkaXYiLHtyZWY6bixjbGFzc05hbWU6b3QoImZsZXggaXRlbXMtY2VudGVyIHAtNiBwdC0wIixlKSwuLi50fSkpO3lYLmRpc3BsYXlOYW1lPSJDYXJkRm9vdGVyIjt2YXIgYTAsdlI7ZnVuY3Rpb24gb3IoKXtpZih2UilyZXR1cm4gYTA7dlI9MTt2YXIgZT1BcnJheS5pc0FycmF5O3JldHVybiBhMD1lLGEwfXZhciBvMCxnUjtmdW5jdGlvbiBhVigpe2lmKGdSKXJldHVybiBvMDtnUj0xO3ZhciBlPXR5cGVvZiB0cD09Im9iamVjdCImJnRwJiZ0cC5PYmplY3Q9PT1PYmplY3QmJnRwO3JldHVybiBvMD1lLG8wfXZhciBzMCxiUjtmdW5jdGlvbiBraSgpe2lmKGJSKXJldHVybiBzMDtiUj0xO3ZhciBlPWFWKCksdD10eXBlb2Ygc2VsZj09Im9iamVjdCImJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLG49ZXx8dHx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTtyZXR1cm4gczA9bixzMH12YXIgbDAseFI7ZnVuY3Rpb24gVGQoKXtpZih4UilyZXR1cm4gbDA7eFI9MTt2YXIgZT1raSgpLHQ9ZS5TeW1ib2w7cmV0dXJuIGwwPXQsbDB9dmFyIHUwLHdSO2Z1bmN0aW9uIHZYKCl7aWYod1IpcmV0dXJuIHUwO3dSPTE7dmFyIGU9VGQoKSx0PU9iamVjdC5wcm90b3R5cGUsbj10Lmhhc093blByb3BlcnR5LHI9dC50b1N0cmluZyxpPWU/ZS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gbyhzKXt2YXIgdT1uLmNhbGwocyxpKSxmPXNbaV07dHJ5e3NbaV09dm9pZCAwO3ZhciBkPSEwfWNhdGNoe312YXIgcD1yLmNhbGwocyk7cmV0dXJuIGQmJih1P3NbaV09ZjpkZWxldGUgc1tpXSkscH1yZXR1cm4gdTA9byx1MH12YXIgYzAsU1I7ZnVuY3Rpb24gZ1goKXtpZihTUilyZXR1cm4gYzA7U1I9MTt2YXIgZT1PYmplY3QucHJvdG90eXBlLHQ9ZS50b1N0cmluZztmdW5jdGlvbiBuKHIpe3JldHVybiB0LmNhbGwocil9cmV0dXJuIGMwPW4sYzB9dmFyIGYwLEFSO2Z1bmN0aW9uIHZhKCl7aWYoQVIpcmV0dXJuIGYwO0FSPTE7dmFyIGU9VGQoKSx0PXZYKCksbj1nWCgpLHI9IltvYmplY3QgTnVsbF0iLGk9IltvYmplY3QgVW5kZWZpbmVkXSIsbz1lP2UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHModSl7cmV0dXJuIHU9PW51bGw/dT09PXZvaWQgMD9pOnI6byYmbyBpbiBPYmplY3QodSk/dCh1KTpuKHUpfXJldHVybiBmMD1zLGYwfXZhciBkMCxfUjtmdW5jdGlvbiBnYSgpe2lmKF9SKXJldHVybiBkMDtfUj0xO2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQhPW51bGwmJnR5cGVvZiB0PT0ib2JqZWN0In1yZXR1cm4gZDA9ZSxkMH12YXIgaDAsT1I7ZnVuY3Rpb24gRHUoKXtpZihPUilyZXR1cm4gaDA7T1I9MTt2YXIgZT12YSgpLHQ9Z2EoKSxuPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHIoaSl7cmV0dXJuIHR5cGVvZiBpPT0ic3ltYm9sInx8dChpKSYmZShpKT09bn1yZXR1cm4gaDA9cixoMH12YXIgcDAsVFI7ZnVuY3Rpb24gak8oKXtpZihUUilyZXR1cm4gcDA7VFI9MTt2YXIgZT1vcigpLHQ9RHUoKSxuPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHI9L15cdyokLztmdW5jdGlvbiBpKG8scyl7aWYoZShvKSlyZXR1cm4hMTt2YXIgdT10eXBlb2YgbztyZXR1cm4gdT09Im51bWJlciJ8fHU9PSJzeW1ib2wifHx1PT0iYm9vbGVhbiJ8fG89PW51bGx8fHQobyk/ITA6ci50ZXN0KG8pfHwhbi50ZXN0KG8pfHxzIT1udWxsJiZvIGluIE9iamVjdChzKX1yZXR1cm4gcDA9aSxwMH12YXIgbTAsRVI7ZnVuY3Rpb24gZ28oKXtpZihFUilyZXR1cm4gbTA7RVI9MTtmdW5jdGlvbiBlKHQpe3ZhciBuPXR5cGVvZiB0O3JldHVybiB0IT1udWxsJiYobj09Im9iamVjdCJ8fG49PSJmdW5jdGlvbiIpfXJldHVybiBtMD1lLG0wfXZhciB5MCxDUjtmdW5jdGlvbiBQTygpe2lmKENSKXJldHVybiB5MDtDUj0xO3ZhciBlPXZhKCksdD1nbygpLG49IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLHI9IltvYmplY3QgRnVuY3Rpb25dIixpPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsbz0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHModSl7aWYoIXQodSkpcmV0dXJuITE7dmFyIGY9ZSh1KTtyZXR1cm4gZj09cnx8Zj09aXx8Zj09bnx8Zj09b31yZXR1cm4geTA9cyx5MH12YXIgdjAsalI7ZnVuY3Rpb24gYlgoKXtpZihqUilyZXR1cm4gdjA7alI9MTt2YXIgZT1raSgpLHQ9ZVsiX19jb3JlLWpzX3NoYXJlZF9fIl07cmV0dXJuIHYwPXQsdjB9dmFyIGcwLFBSO2Z1bmN0aW9uIHhYKCl7aWYoUFIpcmV0dXJuIGcwO1BSPTE7dmFyIGU9YlgoKSx0PShmdW5jdGlvbigpe3ZhciByPS9bXi5dKyQvLmV4ZWMoZSYmZS5rZXlzJiZlLmtleXMuSUVfUFJPVE98fCIiKTtyZXR1cm4gcj8iU3ltYm9sKHNyYylfMS4iK3I6IiJ9KSgpO2Z1bmN0aW9uIG4ocil7cmV0dXJuISF0JiZ0IGluIHJ9cmV0dXJuIGcwPW4sZzB9dmFyIGIwLE1SO2Z1bmN0aW9uIG9WKCl7aWYoTVIpcmV0dXJuIGIwO01SPTE7dmFyIGU9RnVuY3Rpb24ucHJvdG90eXBlLHQ9ZS50b1N0cmluZztmdW5jdGlvbiBuKHIpe2lmKHIhPW51bGwpe3RyeXtyZXR1cm4gdC5jYWxsKHIpfWNhdGNoe310cnl7cmV0dXJuIHIrIiJ9Y2F0Y2h7fX1yZXR1cm4iIn1yZXR1cm4gYjA9bixiMH12YXIgeDAsUlI7ZnVuY3Rpb24gd1goKXtpZihSUilyZXR1cm4geDA7UlI9MTt2YXIgZT1QTygpLHQ9eFgoKSxuPWdvKCkscj1vVigpLGk9L1tcXF4kLiorPygpW1xde318XS9nLG89L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8scz1GdW5jdGlvbi5wcm90b3R5cGUsdT1PYmplY3QucHJvdG90eXBlLGY9cy50b1N0cmluZyxkPXUuaGFzT3duUHJvcGVydHkscD1SZWdFeHAoIl4iK2YuY2FsbChkKS5yZXBsYWNlKGksIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gbSh5KXtpZighbih5KXx8dCh5KSlyZXR1cm4hMTt2YXIgeD1lKHkpP3A6bztyZXR1cm4geC50ZXN0KHIoeSkpfXJldHVybiB4MD1tLHgwfXZhciB3MCxOUjtmdW5jdGlvbiBTWCgpe2lmKE5SKXJldHVybiB3MDtOUj0xO2Z1bmN0aW9uIGUodCxuKXtyZXR1cm4gdD8uW25dfXJldHVybiB3MD1lLHcwfXZhciBTMCxrUjtmdW5jdGlvbiBFcygpe2lmKGtSKXJldHVybiBTMDtrUj0xO3ZhciBlPXdYKCksdD1TWCgpO2Z1bmN0aW9uIG4ocixpKXt2YXIgbz10KHIsaSk7cmV0dXJuIGUobyk/bzp2b2lkIDB9cmV0dXJuIFMwPW4sUzB9dmFyIEEwLERSO2Z1bmN0aW9uIEJ5KCl7aWYoRFIpcmV0dXJuIEEwO0RSPTE7dmFyIGU9RXMoKSx0PWUoT2JqZWN0LCJjcmVhdGUiKTtyZXR1cm4gQTA9dCxBMH12YXIgXzAsTFI7ZnVuY3Rpb24gQVgoKXtpZihMUilyZXR1cm4gXzA7TFI9MTt2YXIgZT1CeSgpO2Z1bmN0aW9uIHQoKXt0aGlzLl9fZGF0YV9fPWU/ZShudWxsKTp7fSx0aGlzLnNpemU9MH1yZXR1cm4gXzA9dCxfMH12YXIgTzAsSVI7ZnVuY3Rpb24gX1goKXtpZihJUilyZXR1cm4gTzA7SVI9MTtmdW5jdGlvbiBlKHQpe3ZhciBuPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1uPzE6MCxufXJldHVybiBPMD1lLE8wfXZhciBUMCwkUjtmdW5jdGlvbiBPWCgpe2lmKCRSKXJldHVybiBUMDskUj0xO3ZhciBlPUJ5KCksdD0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBpKG8pe3ZhciBzPXRoaXMuX19kYXRhX187aWYoZSl7dmFyIHU9c1tvXTtyZXR1cm4gdT09PXQ/dm9pZCAwOnV9cmV0dXJuIHIuY2FsbChzLG8pP3Nbb106dm9pZCAwfXJldHVybiBUMD1pLFQwfXZhciBFMCxCUjtmdW5jdGlvbiBUWCgpe2lmKEJSKXJldHVybiBFMDtCUj0xO3ZhciBlPUJ5KCksdD1PYmplY3QucHJvdG90eXBlLG49dC5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiByKGkpe3ZhciBvPXRoaXMuX19kYXRhX187cmV0dXJuIGU/b1tpXSE9PXZvaWQgMDpuLmNhbGwobyxpKX1yZXR1cm4gRTA9cixFMH12YXIgQzAsVlI7ZnVuY3Rpb24gRVgoKXtpZihWUilyZXR1cm4gQzA7VlI9MTt2YXIgZT1CeSgpLHQ9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2Z1bmN0aW9uIG4ocixpKXt2YXIgbz10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHIpPzA6MSxvW3JdPWUmJmk9PT12b2lkIDA/dDppLHRoaXN9cmV0dXJuIEMwPW4sQzB9dmFyIGowLHFSO2Z1bmN0aW9uIENYKCl7aWYocVIpcmV0dXJuIGowO3FSPTE7dmFyIGU9QVgoKSx0PV9YKCksbj1PWCgpLHI9VFgoKSxpPUVYKCk7ZnVuY3Rpb24gbyhzKXt2YXIgdT0tMSxmPXM9PW51bGw/MDpzLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdTxmOyl7dmFyIGQ9c1t1XTt0aGlzLnNldChkWzBdLGRbMV0pfX1yZXR1cm4gby5wcm90b3R5cGUuY2xlYXI9ZSxvLnByb3RvdHlwZS5kZWxldGU9dCxvLnByb3RvdHlwZS5nZXQ9bixvLnByb3RvdHlwZS5oYXM9cixvLnByb3RvdHlwZS5zZXQ9aSxqMD1vLGowfXZhciBQMCxVUjtmdW5jdGlvbiBqWCgpe2lmKFVSKXJldHVybiBQMDtVUj0xO2Z1bmN0aW9uIGUoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfXJldHVybiBQMD1lLFAwfXZhciBNMCx6UjtmdW5jdGlvbiBNTygpe2lmKHpSKXJldHVybiBNMDt6Uj0xO2Z1bmN0aW9uIGUodCxuKXtyZXR1cm4gdD09PW58fHQhPT10JiZuIT09bn1yZXR1cm4gTTA9ZSxNMH12YXIgUjAsRlI7ZnVuY3Rpb24gVnkoKXtpZihGUilyZXR1cm4gUjA7RlI9MTt2YXIgZT1NTygpO2Z1bmN0aW9uIHQobixyKXtmb3IodmFyIGk9bi5sZW5ndGg7aS0tOylpZihlKG5baV1bMF0scikpcmV0dXJuIGk7cmV0dXJuLTF9cmV0dXJuIFIwPXQsUjB9dmFyIE4wLEhSO2Z1bmN0aW9uIFBYKCl7aWYoSFIpcmV0dXJuIE4wO0hSPTE7dmFyIGU9VnkoKSx0PUFycmF5LnByb3RvdHlwZSxuPXQuc3BsaWNlO2Z1bmN0aW9uIHIoaSl7dmFyIG89dGhpcy5fX2RhdGFfXyxzPWUobyxpKTtpZihzPDApcmV0dXJuITE7dmFyIHU9by5sZW5ndGgtMTtyZXR1cm4gcz09dT9vLnBvcCgpOm4uY2FsbChvLHMsMSksLS10aGlzLnNpemUsITB9cmV0dXJuIE4wPXIsTjB9dmFyIGswLEdSO2Z1bmN0aW9uIE1YKCl7aWYoR1IpcmV0dXJuIGswO0dSPTE7dmFyIGU9VnkoKTtmdW5jdGlvbiB0KG4pe3ZhciByPXRoaXMuX19kYXRhX18saT1lKHIsbik7cmV0dXJuIGk8MD92b2lkIDA6cltpXVsxXX1yZXR1cm4gazA9dCxrMH12YXIgRDAsS1I7ZnVuY3Rpb24gUlgoKXtpZihLUilyZXR1cm4gRDA7S1I9MTt2YXIgZT1WeSgpO2Z1bmN0aW9uIHQobil7cmV0dXJuIGUodGhpcy5fX2RhdGFfXyxuKT4tMX1yZXR1cm4gRDA9dCxEMH12YXIgTDAsV1I7ZnVuY3Rpb24gTlgoKXtpZihXUilyZXR1cm4gTDA7V1I9MTt2YXIgZT1WeSgpO2Z1bmN0aW9uIHQobixyKXt2YXIgaT10aGlzLl9fZGF0YV9fLG89ZShpLG4pO3JldHVybiBvPDA/KCsrdGhpcy5zaXplLGkucHVzaChbbixyXSkpOmlbb11bMV09cix0aGlzfXJldHVybiBMMD10LEwwfXZhciBJMCxZUjtmdW5jdGlvbiBxeSgpe2lmKFlSKXJldHVybiBJMDtZUj0xO3ZhciBlPWpYKCksdD1QWCgpLG49TVgoKSxyPVJYKCksaT1OWCgpO2Z1bmN0aW9uIG8ocyl7dmFyIHU9LTEsZj1zPT1udWxsPzA6cy5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3U8Zjspe3ZhciBkPXNbdV07dGhpcy5zZXQoZFswXSxkWzFdKX19cmV0dXJuIG8ucHJvdG90eXBlLmNsZWFyPWUsby5wcm90b3R5cGUuZGVsZXRlPXQsby5wcm90b3R5cGUuZ2V0PW4sby5wcm90b3R5cGUuaGFzPXIsby5wcm90b3R5cGUuc2V0PWksSTA9byxJMH12YXIgJDAsWFI7ZnVuY3Rpb24gUk8oKXtpZihYUilyZXR1cm4gJDA7WFI9MTt2YXIgZT1FcygpLHQ9a2koKSxuPWUodCwiTWFwIik7cmV0dXJuICQwPW4sJDB9dmFyIEIwLFpSO2Z1bmN0aW9uIGtYKCl7aWYoWlIpcmV0dXJuIEIwO1pSPTE7dmFyIGU9Q1goKSx0PXF5KCksbj1STygpO2Z1bmN0aW9uIHIoKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBlLG1hcDpuZXcobnx8dCksc3RyaW5nOm5ldyBlfX1yZXR1cm4gQjA9cixCMH12YXIgVjAsUVI7ZnVuY3Rpb24gRFgoKXtpZihRUilyZXR1cm4gVjA7UVI9MTtmdW5jdGlvbiBlKHQpe3ZhciBuPXR5cGVvZiB0O3JldHVybiBuPT0ic3RyaW5nInx8bj09Im51bWJlciJ8fG49PSJzeW1ib2wifHxuPT0iYm9vbGVhbiI/dCE9PSJfX3Byb3RvX18iOnQ9PT1udWxsfXJldHVybiBWMD1lLFYwfXZhciBxMCxKUjtmdW5jdGlvbiBVeSgpe2lmKEpSKXJldHVybiBxMDtKUj0xO3ZhciBlPURYKCk7ZnVuY3Rpb24gdChuLHIpe3ZhciBpPW4uX19kYXRhX187cmV0dXJuIGUocik/aVt0eXBlb2Ygcj09InN0cmluZyI/InN0cmluZyI6Imhhc2giXTppLm1hcH1yZXR1cm4gcTA9dCxxMH12YXIgVTAsZU47ZnVuY3Rpb24gTFgoKXtpZihlTilyZXR1cm4gVTA7ZU49MTt2YXIgZT1VeSgpO2Z1bmN0aW9uIHQobil7dmFyIHI9ZSh0aGlzLG4pLmRlbGV0ZShuKTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfXJldHVybiBVMD10LFUwfXZhciB6MCx0TjtmdW5jdGlvbiBJWCgpe2lmKHROKXJldHVybiB6MDt0Tj0xO3ZhciBlPVV5KCk7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZSh0aGlzLG4pLmdldChuKX1yZXR1cm4gejA9dCx6MH12YXIgRjAsbk47ZnVuY3Rpb24gJFgoKXtpZihuTilyZXR1cm4gRjA7bk49MTt2YXIgZT1VeSgpO2Z1bmN0aW9uIHQobil7cmV0dXJuIGUodGhpcyxuKS5oYXMobil9cmV0dXJuIEYwPXQsRjB9dmFyIEgwLHJOO2Z1bmN0aW9uIEJYKCl7aWYock4pcmV0dXJuIEgwO3JOPTE7dmFyIGU9VXkoKTtmdW5jdGlvbiB0KG4scil7dmFyIGk9ZSh0aGlzLG4pLG89aS5zaXplO3JldHVybiBpLnNldChuLHIpLHRoaXMuc2l6ZSs9aS5zaXplPT1vPzA6MSx0aGlzfXJldHVybiBIMD10LEgwfXZhciBHMCxpTjtmdW5jdGlvbiBOTygpe2lmKGlOKXJldHVybiBHMDtpTj0xO3ZhciBlPWtYKCksdD1MWCgpLG49SVgoKSxyPSRYKCksaT1CWCgpO2Z1bmN0aW9uIG8ocyl7dmFyIHU9LTEsZj1zPT1udWxsPzA6cy5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3U8Zjspe3ZhciBkPXNbdV07dGhpcy5zZXQoZFswXSxkWzFdKX19cmV0dXJuIG8ucHJvdG90eXBlLmNsZWFyPWUsby5wcm90b3R5cGUuZGVsZXRlPXQsby5wcm90b3R5cGUuZ2V0PW4sby5wcm90b3R5cGUuaGFzPXIsby5wcm90b3R5cGUuc2V0PWksRzA9byxHMH12YXIgSzAsYU47ZnVuY3Rpb24gc1YoKXtpZihhTilyZXR1cm4gSzA7YU49MTt2YXIgZT1OTygpLHQ9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIG4ocixpKXtpZih0eXBlb2YgciE9ImZ1bmN0aW9uInx8aSE9bnVsbCYmdHlwZW9mIGkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcih0KTt2YXIgbz1mdW5jdGlvbigpe3ZhciBzPWFyZ3VtZW50cyx1PWk/aS5hcHBseSh0aGlzLHMpOnNbMF0sZj1vLmNhY2hlO2lmKGYuaGFzKHUpKXJldHVybiBmLmdldCh1KTt2YXIgZD1yLmFwcGx5KHRoaXMscyk7cmV0dXJuIG8uY2FjaGU9Zi5zZXQodSxkKXx8ZixkfTtyZXR1cm4gby5jYWNoZT1uZXcobi5DYWNoZXx8ZSksb31yZXR1cm4gbi5DYWNoZT1lLEswPW4sSzB9dmFyIFcwLG9OO2Z1bmN0aW9uIFZYKCl7aWYob04pcmV0dXJuIFcwO29OPTE7dmFyIGU9c1YoKSx0PTUwMDtmdW5jdGlvbiBuKHIpe3ZhciBpPWUocixmdW5jdGlvbihzKXtyZXR1cm4gby5zaXplPT09dCYmby5jbGVhcigpLHN9KSxvPWkuY2FjaGU7cmV0dXJuIGl9cmV0dXJuIFcwPW4sVzB9dmFyIFkwLHNOO2Z1bmN0aW9uIHFYKCl7aWYoc04pcmV0dXJuIFkwO3NOPTE7dmFyIGU9VlgoKSx0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLG49L1xcKFxcKT8vZyxyPWUoZnVuY3Rpb24oaSl7dmFyIG89W107cmV0dXJuIGkuY2hhckNvZGVBdCgwKT09PTQ2JiZvLnB1c2goIiIpLGkucmVwbGFjZSh0LGZ1bmN0aW9uKHMsdSxmLGQpe28ucHVzaChmP2QucmVwbGFjZShuLCIkMSIpOnV8fHMpfSksb30pO3JldHVybiBZMD1yLFkwfXZhciBYMCxsTjtmdW5jdGlvbiBrTygpe2lmKGxOKXJldHVybiBYMDtsTj0xO2Z1bmN0aW9uIGUodCxuKXtmb3IodmFyIHI9LTEsaT10PT1udWxsPzA6dC5sZW5ndGgsbz1BcnJheShpKTsrK3I8aTspb1tyXT1uKHRbcl0scix0KTtyZXR1cm4gb31yZXR1cm4gWDA9ZSxYMH12YXIgWjAsdU47ZnVuY3Rpb24gVVgoKXtpZih1TilyZXR1cm4gWjA7dU49MTt2YXIgZT1UZCgpLHQ9a08oKSxuPW9yKCkscj1EdSgpLGk9ZT9lLnByb3RvdHlwZTp2b2lkIDAsbz1pP2kudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIHModSl7aWYodHlwZW9mIHU9PSJzdHJpbmciKXJldHVybiB1O2lmKG4odSkpcmV0dXJuIHQodSxzKSsiIjtpZihyKHUpKXJldHVybiBvP28uY2FsbCh1KToiIjt2YXIgZj11KyIiO3JldHVybiBmPT0iMCImJjEvdT09LTEvMD8iLTAiOmZ9cmV0dXJuIFowPXMsWjB9dmFyIFEwLGNOO2Z1bmN0aW9uIGxWKCl7aWYoY04pcmV0dXJuIFEwO2NOPTE7dmFyIGU9VVgoKTtmdW5jdGlvbiB0KG4pe3JldHVybiBuPT1udWxsPyIiOmUobil9cmV0dXJuIFEwPXQsUTB9dmFyIEowLGZOO2Z1bmN0aW9uIHVWKCl7aWYoZk4pcmV0dXJuIEowO2ZOPTE7dmFyIGU9b3IoKSx0PWpPKCksbj1xWCgpLHI9bFYoKTtmdW5jdGlvbiBpKG8scyl7cmV0dXJuIGUobyk/bzp0KG8scyk/W29dOm4ocihvKSl9cmV0dXJuIEowPWksSjB9dmFyIGV4LGROO2Z1bmN0aW9uIHp5KCl7aWYoZE4pcmV0dXJuIGV4O2ROPTE7dmFyIGU9RHUoKTtmdW5jdGlvbiB0KG4pe2lmKHR5cGVvZiBuPT0ic3RyaW5nInx8ZShuKSlyZXR1cm4gbjt2YXIgcj1uKyIiO3JldHVybiByPT0iMCImJjEvbj09LTEvMD8iLTAiOnJ9cmV0dXJuIGV4PXQsZXh9dmFyIHR4LGhOO2Z1bmN0aW9uIERPKCl7aWYoaE4pcmV0dXJuIHR4O2hOPTE7dmFyIGU9dVYoKSx0PXp5KCk7ZnVuY3Rpb24gbihyLGkpe2k9ZShpLHIpO2Zvcih2YXIgbz0wLHM9aS5sZW5ndGg7ciE9bnVsbCYmbzxzOylyPXJbdChpW28rK10pXTtyZXR1cm4gbyYmbz09cz9yOnZvaWQgMH1yZXR1cm4gdHg9bix0eH12YXIgbngscE47ZnVuY3Rpb24gY1YoKXtpZihwTilyZXR1cm4gbng7cE49MTt2YXIgZT1ETygpO2Z1bmN0aW9uIHQobixyLGkpe3ZhciBvPW49PW51bGw/dm9pZCAwOmUobixyKTtyZXR1cm4gbz09PXZvaWQgMD9pOm99cmV0dXJuIG54PXQsbnh9dmFyIHpYPWNWKCk7Y29uc3QgeHI9T3QoelgpO3ZhciByeCxtTjtmdW5jdGlvbiBGWCgpe2lmKG1OKXJldHVybiByeDttTj0xO2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQ9PW51bGx9cmV0dXJuIHJ4PWUscnh9dmFyIEhYPUZYKCk7Y29uc3QgR2U9T3QoSFgpO3ZhciBpeCx5TjtmdW5jdGlvbiBHWCgpe2lmKHlOKXJldHVybiBpeDt5Tj0xO3ZhciBlPXZhKCksdD1vcigpLG49Z2EoKSxyPSJbb2JqZWN0IFN0cmluZ10iO2Z1bmN0aW9uIGkobyl7cmV0dXJuIHR5cGVvZiBvPT0ic3RyaW5nInx8IXQobykmJm4obykmJmUobyk9PXJ9cmV0dXJuIGl4PWksaXh9dmFyIEtYPUdYKCk7Y29uc3QgZ3M9T3QoS1gpO3ZhciBXWD1QTygpO2NvbnN0IEhlPU90KFdYKTt2YXIgWVg9Z28oKTtjb25zdCBMdT1PdChZWCk7dmFyIGF4PXtleHBvcnRzOnt9fSxtdD17fTt2YXIgdk47ZnVuY3Rpb24gWFgoKXtpZih2TilyZXR1cm4gbXQ7dk49MTt2YXIgZT1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IiksdD1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSxuPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iikscj1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLGk9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxvPVN5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIikscz1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksdT1TeW1ib2wuZm9yKCJyZWFjdC5zZXJ2ZXJfY29udGV4dCIpLGY9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxkPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIikscD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0IiksbT1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIikseT1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IikseD1TeW1ib2wuZm9yKCJyZWFjdC5vZmZzY3JlZW4iKSx3O3c9U3ltYm9sLmZvcigicmVhY3QubW9kdWxlLnJlZmVyZW5jZSIpO2Z1bmN0aW9uIGIoZyl7aWYodHlwZW9mIGc9PSJvYmplY3QiJiZnIT09bnVsbCl7dmFyIF89Zy4kJHR5cGVvZjtzd2l0Y2goXyl7Y2FzZSBlOnN3aXRjaChnPWcudHlwZSxnKXtjYXNlIG46Y2FzZSBpOmNhc2UgcjpjYXNlIGQ6Y2FzZSBwOnJldHVybiBnO2RlZmF1bHQ6c3dpdGNoKGc9ZyYmZy4kJHR5cGVvZixnKXtjYXNlIHU6Y2FzZSBzOmNhc2UgZjpjYXNlIHk6Y2FzZSBtOmNhc2UgbzpyZXR1cm4gZztkZWZhdWx0OnJldHVybiBffX1jYXNlIHQ6cmV0dXJuIF99fX1yZXR1cm4gbXQuQ29udGV4dENvbnN1bWVyPXMsbXQuQ29udGV4dFByb3ZpZGVyPW8sbXQuRWxlbWVudD1lLG10LkZvcndhcmRSZWY9ZixtdC5GcmFnbWVudD1uLG10Lkxhenk9eSxtdC5NZW1vPW0sbXQuUG9ydGFsPXQsbXQuUHJvZmlsZXI9aSxtdC5TdHJpY3RNb2RlPXIsbXQuU3VzcGVuc2U9ZCxtdC5TdXNwZW5zZUxpc3Q9cCxtdC5pc0FzeW5jTW9kZT1mdW5jdGlvbigpe3JldHVybiExfSxtdC5pc0NvbmN1cnJlbnRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG10LmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGcpe3JldHVybiBiKGcpPT09c30sbXQuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oZyl7cmV0dXJuIGIoZyk9PT1vfSxtdC5pc0VsZW1lbnQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnPT0ib2JqZWN0IiYmZyE9PW51bGwmJmcuJCR0eXBlb2Y9PT1lfSxtdC5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oZyl7cmV0dXJuIGIoZyk9PT1mfSxtdC5pc0ZyYWdtZW50PWZ1bmN0aW9uKGcpe3JldHVybiBiKGcpPT09bn0sbXQuaXNMYXp5PWZ1bmN0aW9uKGcpe3JldHVybiBiKGcpPT09eX0sbXQuaXNNZW1vPWZ1bmN0aW9uKGcpe3JldHVybiBiKGcpPT09bX0sbXQuaXNQb3J0YWw9ZnVuY3Rpb24oZyl7cmV0dXJuIGIoZyk9PT10fSxtdC5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGcpe3JldHVybiBiKGcpPT09aX0sbXQuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGcpe3JldHVybiBiKGcpPT09cn0sbXQuaXNTdXNwZW5zZT1mdW5jdGlvbihnKXtyZXR1cm4gYihnKT09PWR9LG10LmlzU3VzcGVuc2VMaXN0PWZ1bmN0aW9uKGcpe3JldHVybiBiKGcpPT09cH0sbXQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZz09InN0cmluZyJ8fHR5cGVvZiBnPT0iZnVuY3Rpb24ifHxnPT09bnx8Zz09PWl8fGc9PT1yfHxnPT09ZHx8Zz09PXB8fGc9PT14fHx0eXBlb2YgZz09Im9iamVjdCImJmchPT1udWxsJiYoZy4kJHR5cGVvZj09PXl8fGcuJCR0eXBlb2Y9PT1tfHxnLiQkdHlwZW9mPT09b3x8Zy4kJHR5cGVvZj09PXN8fGcuJCR0eXBlb2Y9PT1mfHxnLiQkdHlwZW9mPT09d3x8Zy5nZXRNb2R1bGVJZCE9PXZvaWQgMCl9LG10LnR5cGVPZj1iLG10fXZhciBnTjtmdW5jdGlvbiBaWCgpe3JldHVybiBnTnx8KGdOPTEsYXguZXhwb3J0cz1YWCgpKSxheC5leHBvcnRzfXZhciBRWD1aWCgpLG94LGJOO2Z1bmN0aW9uIGZWKCl7aWYoYk4pcmV0dXJuIG94O2JOPTE7dmFyIGU9dmEoKSx0PWdhKCksbj0iW29iamVjdCBOdW1iZXJdIjtmdW5jdGlvbiByKGkpe3JldHVybiB0eXBlb2YgaT09Im51bWJlciJ8fHQoaSkmJmUoaSk9PW59cmV0dXJuIG94PXIsb3h9dmFyIHN4LHhOO2Z1bmN0aW9uIEpYKCl7aWYoeE4pcmV0dXJuIHN4O3hOPTE7dmFyIGU9ZlYoKTtmdW5jdGlvbiB0KG4pe3JldHVybiBlKG4pJiZuIT0rbn1yZXR1cm4gc3g9dCxzeH12YXIgZVo9SlgoKTtjb25zdCBJdT1PdChlWik7dmFyIHRaPWZWKCk7Y29uc3Qgblo9T3QodFopO3ZhciBIbj1mdW5jdGlvbih0KXtyZXR1cm4gdD09PTA/MDp0PjA/MTotMX0saXM9ZnVuY3Rpb24odCl7cmV0dXJuIGdzKHQpJiZ0LmluZGV4T2YoIiUiKT09PXQubGVuZ3RoLTF9LHZlPWZ1bmN0aW9uKHQpe3JldHVybiBuWih0KSYmIUl1KHQpfSxyWj1mdW5jdGlvbih0KXtyZXR1cm4gR2UodCl9LHZuPWZ1bmN0aW9uKHQpe3JldHVybiB2ZSh0KXx8Z3ModCl9LGlaPTAsQ3M9ZnVuY3Rpb24odCl7dmFyIG49KytpWjtyZXR1cm4iIi5jb25jYXQodHx8IiIpLmNvbmNhdChuKX0sR249ZnVuY3Rpb24odCxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MyYmYXJndW1lbnRzWzNdIT09dm9pZCAwP2FyZ3VtZW50c1szXTohMTtpZighdmUodCkmJiFncyh0KSlyZXR1cm4gcjt2YXIgbztpZihpcyh0KSl7dmFyIHM9dC5pbmRleE9mKCIlIik7bz1uKnBhcnNlRmxvYXQodC5zbGljZSgwLHMpKS8xMDB9ZWxzZSBvPSt0O3JldHVybiBJdShvKSYmKG89ciksaSYmbz5uJiYobz1uKSxvfSxDbD1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gbnVsbDt2YXIgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm4gbiYmbi5sZW5ndGg/dFtuWzBdXTpudWxsfSxhWj1mdW5jdGlvbih0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4hMTtmb3IodmFyIG49dC5sZW5ndGgscj17fSxpPTA7aTxuO2krKylpZighclt0W2ldXSlyW3RbaV1dPSEwO2Vsc2UgcmV0dXJuITA7cmV0dXJuITF9LHluPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHZlKHQpJiZ2ZShuKT9mdW5jdGlvbihyKXtyZXR1cm4gdCtyKihuLXQpfTpmdW5jdGlvbigpe3JldHVybiBufX07ZnVuY3Rpb24gb20oZSx0LG4pe3JldHVybiFlfHwhZS5sZW5ndGg/bnVsbDplLmZpbmQoZnVuY3Rpb24ocil7cmV0dXJuIHImJih0eXBlb2YgdD09ImZ1bmN0aW9uIj90KHIpOnhyKHIsdCkpPT09bn0pfXZhciBvWj1mdW5jdGlvbih0LG4pe3JldHVybiB2ZSh0KSYmdmUobik/dC1uOmdzKHQpJiZncyhuKT90LmxvY2FsZUNvbXBhcmUobik6dCBpbnN0YW5jZW9mIERhdGUmJm4gaW5zdGFuY2VvZiBEYXRlP3QuZ2V0VGltZSgpLW4uZ2V0VGltZSgpOlN0cmluZyh0KS5sb2NhbGVDb21wYXJlKFN0cmluZyhuKSl9O2Z1bmN0aW9uIHFsKGUsdCl7Zm9yKHZhciBuIGluIGUpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYoIXt9Lmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8ZVtuXSE9PXRbbl0pKXJldHVybiExO2Zvcih2YXIgciBpbiB0KWlmKHt9Lmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmIXt9Lmhhc093blByb3BlcnR5LmNhbGwoZSxyKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBLUyhlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBLUz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sS1MoZSl9dmFyIHNaPVsidmlld0JveCIsImNoaWxkcmVuIl0sbFo9WyJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLCJhcmlhLWF0b21pYyIsImFyaWEtYXV0b2NvbXBsZXRlIiwiYXJpYS1idXN5IiwiYXJpYS1jaGVja2VkIiwiYXJpYS1jb2xjb3VudCIsImFyaWEtY29saW5kZXgiLCJhcmlhLWNvbHNwYW4iLCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1jdXJyZW50IiwiYXJpYS1kZXNjcmliZWRieSIsImFyaWEtZGV0YWlscyIsImFyaWEtZGlzYWJsZWQiLCJhcmlhLWVycm9ybWVzc2FnZSIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWZsb3d0byIsImFyaWEtaGFzcG9wdXAiLCJhcmlhLWhpZGRlbiIsImFyaWEtaW52YWxpZCIsImFyaWEta2V5c2hvcnRjdXRzIiwiYXJpYS1sYWJlbCIsImFyaWEtbGFiZWxsZWRieSIsImFyaWEtbGV2ZWwiLCJhcmlhLWxpdmUiLCJhcmlhLW1vZGFsIiwiYXJpYS1tdWx0aWxpbmUiLCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsImFyaWEtb3JpZW50YXRpb24iLCJhcmlhLW93bnMiLCJhcmlhLXBsYWNlaG9sZGVyIiwiYXJpYS1wb3NpbnNldCIsImFyaWEtcHJlc3NlZCIsImFyaWEtcmVhZG9ubHkiLCJhcmlhLXJlbGV2YW50IiwiYXJpYS1yZXF1aXJlZCIsImFyaWEtcm9sZWRlc2NyaXB0aW9uIiwiYXJpYS1yb3djb3VudCIsImFyaWEtcm93aW5kZXgiLCJhcmlhLXJvd3NwYW4iLCJhcmlhLXNlbGVjdGVkIiwiYXJpYS1zZXRzaXplIiwiYXJpYS1zb3J0IiwiYXJpYS12YWx1ZW1heCIsImFyaWEtdmFsdWVtaW4iLCJhcmlhLXZhbHVlbm93IiwiYXJpYS12YWx1ZXRleHQiLCJjbGFzc05hbWUiLCJjb2xvciIsImhlaWdodCIsImlkIiwibGFuZyIsIm1heCIsIm1lZGlhIiwibWV0aG9kIiwibWluIiwibmFtZSIsInN0eWxlIiwidGFyZ2V0Iiwid2lkdGgiLCJyb2xlIiwidGFiSW5kZXgiLCJhY2NlbnRIZWlnaHQiLCJhY2N1bXVsYXRlIiwiYWRkaXRpdmUiLCJhbGlnbm1lbnRCYXNlbGluZSIsImFsbG93UmVvcmRlciIsImFscGhhYmV0aWMiLCJhbXBsaXR1ZGUiLCJhcmFiaWNGb3JtIiwiYXNjZW50IiwiYXR0cmlidXRlTmFtZSIsImF0dHJpYnV0ZVR5cGUiLCJhdXRvUmV2ZXJzZSIsImF6aW11dGgiLCJiYXNlRnJlcXVlbmN5IiwiYmFzZWxpbmVTaGlmdCIsImJhc2VQcm9maWxlIiwiYmJveCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2FsY01vZGUiLCJjYXBIZWlnaHQiLCJjbGlwIiwiY2xpcFBhdGgiLCJjbGlwUGF0aFVuaXRzIiwiY2xpcFJ1bGUiLCJjb2xvckludGVycG9sYXRpb24iLCJjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIiwiY29sb3JQcm9maWxlIiwiY29sb3JSZW5kZXJpbmciLCJjb250ZW50U2NyaXB0VHlwZSIsImNvbnRlbnRTdHlsZVR5cGUiLCJjdXJzb3IiLCJjeCIsImN5IiwiZCIsImRlY2VsZXJhdGUiLCJkZXNjZW50IiwiZGlmZnVzZUNvbnN0YW50IiwiZGlyZWN0aW9uIiwiZGlzcGxheSIsImRpdmlzb3IiLCJkb21pbmFudEJhc2VsaW5lIiwiZHVyIiwiZHgiLCJkeSIsImVkZ2VNb2RlIiwiZWxldmF0aW9uIiwiZW5hYmxlQmFja2dyb3VuZCIsImVuZCIsImV4cG9uZW50IiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZpbGwiLCJmaWxsT3BhY2l0eSIsImZpbGxSdWxlIiwiZmlsdGVyIiwiZmlsdGVyUmVzIiwiZmlsdGVyVW5pdHMiLCJmbG9vZENvbG9yIiwiZmxvb2RPcGFjaXR5IiwiZm9jdXNhYmxlIiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFNpemVBZGp1c3QiLCJmb250U3RyZXRjaCIsImZvbnRTdHlsZSIsImZvbnRWYXJpYW50IiwiZm9udFdlaWdodCIsImZvcm1hdCIsImZyb20iLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoTmFtZSIsImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIiwiZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsIiwiZ2x5cGhSZWYiLCJncmFkaWVudFRyYW5zZm9ybSIsImdyYWRpZW50VW5pdHMiLCJoYW5naW5nIiwiaG9yaXpBZHZYIiwiaG9yaXpPcmlnaW5YIiwiaHJlZiIsImlkZW9ncmFwaGljIiwiaW1hZ2VSZW5kZXJpbmciLCJpbjIiLCJpbiIsImludGVyY2VwdCIsImsxIiwiazIiLCJrMyIsIms0IiwiayIsImtlcm5lbE1hdHJpeCIsImtlcm5lbFVuaXRMZW5ndGgiLCJrZXJuaW5nIiwia2V5UG9pbnRzIiwia2V5U3BsaW5lcyIsImtleVRpbWVzIiwibGVuZ3RoQWRqdXN0IiwibGV0dGVyU3BhY2luZyIsImxpZ2h0aW5nQ29sb3IiLCJsaW1pdGluZ0NvbmVBbmdsZSIsImxvY2FsIiwibWFya2VyRW5kIiwibWFya2VySGVpZ2h0IiwibWFya2VyTWlkIiwibWFya2VyU3RhcnQiLCJtYXJrZXJVbml0cyIsIm1hcmtlcldpZHRoIiwibWFzayIsIm1hc2tDb250ZW50VW5pdHMiLCJtYXNrVW5pdHMiLCJtYXRoZW1hdGljYWwiLCJtb2RlIiwibnVtT2N0YXZlcyIsIm9mZnNldCIsIm9wYWNpdHkiLCJvcGVyYXRvciIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvcmlnaW4iLCJvdmVyZmxvdyIsIm92ZXJsaW5lUG9zaXRpb24iLCJvdmVybGluZVRoaWNrbmVzcyIsInBhaW50T3JkZXIiLCJwYW5vc2UxIiwicGF0aExlbmd0aCIsInBhdHRlcm5Db250ZW50VW5pdHMiLCJwYXR0ZXJuVHJhbnNmb3JtIiwicGF0dGVyblVuaXRzIiwicG9pbnRlckV2ZW50cyIsInBvaW50c0F0WCIsInBvaW50c0F0WSIsInBvaW50c0F0WiIsInByZXNlcnZlQWxwaGEiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwicHJpbWl0aXZlVW5pdHMiLCJyIiwicmFkaXVzIiwicmVmWCIsInJlZlkiLCJyZW5kZXJpbmdJbnRlbnQiLCJyZXBlYXRDb3VudCIsInJlcGVhdER1ciIsInJlcXVpcmVkRXh0ZW5zaW9ucyIsInJlcXVpcmVkRmVhdHVyZXMiLCJyZXN0YXJ0IiwicmVzdWx0Iiwicm90YXRlIiwicngiLCJyeSIsInNlZWQiLCJzaGFwZVJlbmRlcmluZyIsInNsb3BlIiwic3BhY2luZyIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3BlZWQiLCJzcHJlYWRNZXRob2QiLCJzdGFydE9mZnNldCIsInN0ZERldmlhdGlvbiIsInN0ZW1oIiwic3RlbXYiLCJzdGl0Y2hUaWxlcyIsInN0b3BDb2xvciIsInN0b3BPcGFjaXR5Iiwic3RyaWtldGhyb3VnaFBvc2l0aW9uIiwic3RyaWtldGhyb3VnaFRoaWNrbmVzcyIsInN0cmluZyIsInN0cm9rZSIsInN0cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VNaXRlcmxpbWl0Iiwic3Ryb2tlT3BhY2l0eSIsInN0cm9rZVdpZHRoIiwic3VyZmFjZVNjYWxlIiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRhcmdldFgiLCJ0YXJnZXRZIiwidGV4dEFuY2hvciIsInRleHREZWNvcmF0aW9uIiwidGV4dExlbmd0aCIsInRleHRSZW5kZXJpbmciLCJ0byIsInRyYW5zZm9ybSIsInUxIiwidTIiLCJ1bmRlcmxpbmVQb3NpdGlvbiIsInVuZGVybGluZVRoaWNrbmVzcyIsInVuaWNvZGUiLCJ1bmljb2RlQmlkaSIsInVuaWNvZGVSYW5nZSIsInVuaXRzUGVyRW0iLCJ2QWxwaGFiZXRpYyIsInZhbHVlcyIsInZlY3RvckVmZmVjdCIsInZlcnNpb24iLCJ2ZXJ0QWR2WSIsInZlcnRPcmlnaW5YIiwidmVydE9yaWdpblkiLCJ2SGFuZ2luZyIsInZJZGVvZ3JhcGhpYyIsInZpZXdUYXJnZXQiLCJ2aXNpYmlsaXR5Iiwidk1hdGhlbWF0aWNhbCIsIndpZHRocyIsIndvcmRTcGFjaW5nIiwid3JpdGluZ01vZGUiLCJ4MSIsIngyIiwieCIsInhDaGFubmVsU2VsZWN0b3IiLCJ4SGVpZ2h0IiwieGxpbmtBY3R1YXRlIiwieGxpbmtBcmNyb2xlIiwieGxpbmtIcmVmIiwieGxpbmtSb2xlIiwieGxpbmtTaG93IiwieGxpbmtUaXRsZSIsInhsaW5rVHlwZSIsInhtbEJhc2UiLCJ4bWxMYW5nIiwieG1sbnMiLCJ4bWxuc1hsaW5rIiwieG1sU3BhY2UiLCJ5MSIsInkyIiwieSIsInlDaGFubmVsU2VsZWN0b3IiLCJ6Iiwiem9vbUFuZFBhbiIsInJlZiIsImtleSIsImFuZ2xlIl0sd049WyJwb2ludHMiLCJwYXRoTGVuZ3RoIl0sbHg9e3N2ZzpzWixwb2x5Z29uOndOLHBvbHlsaW5lOndOfSxMTz1bImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwib25Db3B5Iiwib25Db3B5Q2FwdHVyZSIsIm9uQ3V0Iiwib25DdXRDYXB0dXJlIiwib25QYXN0ZSIsIm9uUGFzdGVDYXB0dXJlIiwib25Db21wb3NpdGlvbkVuZCIsIm9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIiwib25Db21wb3NpdGlvblN0YXJ0Iiwib25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZSIsIm9uQ29tcG9zaXRpb25VcGRhdGUiLCJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSIsIm9uRm9jdXMiLCJvbkZvY3VzQ2FwdHVyZSIsIm9uQmx1ciIsIm9uQmx1ckNhcHR1cmUiLCJvbkNoYW5nZSIsIm9uQ2hhbmdlQ2FwdHVyZSIsIm9uQmVmb3JlSW5wdXQiLCJvbkJlZm9yZUlucHV0Q2FwdHVyZSIsIm9uSW5wdXQiLCJvbklucHV0Q2FwdHVyZSIsIm9uUmVzZXQiLCJvblJlc2V0Q2FwdHVyZSIsIm9uU3VibWl0Iiwib25TdWJtaXRDYXB0dXJlIiwib25JbnZhbGlkIiwib25JbnZhbGlkQ2FwdHVyZSIsIm9uTG9hZCIsIm9uTG9hZENhcHR1cmUiLCJvbkVycm9yIiwib25FcnJvckNhcHR1cmUiLCJvbktleURvd24iLCJvbktleURvd25DYXB0dXJlIiwib25LZXlQcmVzcyIsIm9uS2V5UHJlc3NDYXB0dXJlIiwib25LZXlVcCIsIm9uS2V5VXBDYXB0dXJlIiwib25BYm9ydCIsIm9uQWJvcnRDYXB0dXJlIiwib25DYW5QbGF5Iiwib25DYW5QbGF5Q2FwdHVyZSIsIm9uQ2FuUGxheVRocm91Z2giLCJvbkNhblBsYXlUaHJvdWdoQ2FwdHVyZSIsIm9uRHVyYXRpb25DaGFuZ2UiLCJvbkR1cmF0aW9uQ2hhbmdlQ2FwdHVyZSIsIm9uRW1wdGllZCIsIm9uRW1wdGllZENhcHR1cmUiLCJvbkVuY3J5cHRlZCIsIm9uRW5jcnlwdGVkQ2FwdHVyZSIsIm9uRW5kZWQiLCJvbkVuZGVkQ2FwdHVyZSIsIm9uTG9hZGVkRGF0YSIsIm9uTG9hZGVkRGF0YUNhcHR1cmUiLCJvbkxvYWRlZE1ldGFkYXRhIiwib25Mb2FkZWRNZXRhZGF0YUNhcHR1cmUiLCJvbkxvYWRTdGFydCIsIm9uTG9hZFN0YXJ0Q2FwdHVyZSIsIm9uUGF1c2UiLCJvblBhdXNlQ2FwdHVyZSIsIm9uUGxheSIsIm9uUGxheUNhcHR1cmUiLCJvblBsYXlpbmciLCJvblBsYXlpbmdDYXB0dXJlIiwib25Qcm9ncmVzcyIsIm9uUHJvZ3Jlc3NDYXB0dXJlIiwib25SYXRlQ2hhbmdlIiwib25SYXRlQ2hhbmdlQ2FwdHVyZSIsIm9uU2Vla2VkIiwib25TZWVrZWRDYXB0dXJlIiwib25TZWVraW5nIiwib25TZWVraW5nQ2FwdHVyZSIsIm9uU3RhbGxlZCIsIm9uU3RhbGxlZENhcHR1cmUiLCJvblN1c3BlbmQiLCJvblN1c3BlbmRDYXB0dXJlIiwib25UaW1lVXBkYXRlIiwib25UaW1lVXBkYXRlQ2FwdHVyZSIsIm9uVm9sdW1lQ2hhbmdlIiwib25Wb2x1bWVDaGFuZ2VDYXB0dXJlIiwib25XYWl0aW5nIiwib25XYWl0aW5nQ2FwdHVyZSIsIm9uQXV4Q2xpY2siLCJvbkF1eENsaWNrQ2FwdHVyZSIsIm9uQ2xpY2siLCJvbkNsaWNrQ2FwdHVyZSIsIm9uQ29udGV4dE1lbnUiLCJvbkNvbnRleHRNZW51Q2FwdHVyZSIsIm9uRG91YmxlQ2xpY2siLCJvbkRvdWJsZUNsaWNrQ2FwdHVyZSIsIm9uRHJhZyIsIm9uRHJhZ0NhcHR1cmUiLCJvbkRyYWdFbmQiLCJvbkRyYWdFbmRDYXB0dXJlIiwib25EcmFnRW50ZXIiLCJvbkRyYWdFbnRlckNhcHR1cmUiLCJvbkRyYWdFeGl0Iiwib25EcmFnRXhpdENhcHR1cmUiLCJvbkRyYWdMZWF2ZSIsIm9uRHJhZ0xlYXZlQ2FwdHVyZSIsIm9uRHJhZ092ZXIiLCJvbkRyYWdPdmVyQ2FwdHVyZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnU3RhcnRDYXB0dXJlIiwib25Ecm9wIiwib25Ecm9wQ2FwdHVyZSIsIm9uTW91c2VEb3duIiwib25Nb3VzZURvd25DYXB0dXJlIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Nb3VzZU1vdmUiLCJvbk1vdXNlTW92ZUNhcHR1cmUiLCJvbk1vdXNlT3V0Iiwib25Nb3VzZU91dENhcHR1cmUiLCJvbk1vdXNlT3ZlciIsIm9uTW91c2VPdmVyQ2FwdHVyZSIsIm9uTW91c2VVcCIsIm9uTW91c2VVcENhcHR1cmUiLCJvblNlbGVjdCIsIm9uU2VsZWN0Q2FwdHVyZSIsIm9uVG91Y2hDYW5jZWwiLCJvblRvdWNoQ2FuY2VsQ2FwdHVyZSIsIm9uVG91Y2hFbmQiLCJvblRvdWNoRW5kQ2FwdHVyZSIsIm9uVG91Y2hNb3ZlIiwib25Ub3VjaE1vdmVDYXB0dXJlIiwib25Ub3VjaFN0YXJ0Iiwib25Ub3VjaFN0YXJ0Q2FwdHVyZSIsIm9uUG9pbnRlckRvd24iLCJvblBvaW50ZXJEb3duQ2FwdHVyZSIsIm9uUG9pbnRlck1vdmUiLCJvblBvaW50ZXJNb3ZlQ2FwdHVyZSIsIm9uUG9pbnRlclVwIiwib25Qb2ludGVyVXBDYXB0dXJlIiwib25Qb2ludGVyQ2FuY2VsIiwib25Qb2ludGVyQ2FuY2VsQ2FwdHVyZSIsIm9uUG9pbnRlckVudGVyIiwib25Qb2ludGVyRW50ZXJDYXB0dXJlIiwib25Qb2ludGVyTGVhdmUiLCJvblBvaW50ZXJMZWF2ZUNhcHR1cmUiLCJvblBvaW50ZXJPdmVyIiwib25Qb2ludGVyT3ZlckNhcHR1cmUiLCJvblBvaW50ZXJPdXQiLCJvblBvaW50ZXJPdXRDYXB0dXJlIiwib25Hb3RQb2ludGVyQ2FwdHVyZSIsIm9uR290UG9pbnRlckNhcHR1cmVDYXB0dXJlIiwib25Mb3N0UG9pbnRlckNhcHR1cmUiLCJvbkxvc3RQb2ludGVyQ2FwdHVyZUNhcHR1cmUiLCJvblNjcm9sbCIsIm9uU2Nyb2xsQ2FwdHVyZSIsIm9uV2hlZWwiLCJvbldoZWVsQ2FwdHVyZSIsIm9uQW5pbWF0aW9uU3RhcnQiLCJvbkFuaW1hdGlvblN0YXJ0Q2FwdHVyZSIsIm9uQW5pbWF0aW9uRW5kIiwib25BbmltYXRpb25FbmRDYXB0dXJlIiwib25BbmltYXRpb25JdGVyYXRpb24iLCJvbkFuaW1hdGlvbkl0ZXJhdGlvbkNhcHR1cmUiLCJvblRyYW5zaXRpb25FbmQiLCJvblRyYW5zaXRpb25FbmRDYXB0dXJlIl0sc209ZnVuY3Rpb24odCxuKXtpZighdHx8dHlwZW9mIHQ9PSJmdW5jdGlvbiJ8fHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIG51bGw7dmFyIHI9dDtpZihDLmlzVmFsaWRFbGVtZW50KHQpJiYocj10LnByb3BzKSwhTHUocikpcmV0dXJuIG51bGw7dmFyIGk9e307cmV0dXJuIE9iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24obyl7TE8uaW5jbHVkZXMobykmJihpW29dPW58fGZ1bmN0aW9uKHMpe3JldHVybiByW29dKHIscyl9KX0pLGl9LHVaPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIHQobixyLGkpLG51bGx9fSxicz1mdW5jdGlvbih0LG4scil7aWYoIUx1KHQpfHxLUyh0KSE9PSJvYmplY3QiKXJldHVybiBudWxsO3ZhciBpPW51bGw7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIHM9dFtvXTtMTy5pbmNsdWRlcyhvKSYmdHlwZW9mIHM9PSJmdW5jdGlvbiImJihpfHwoaT17fSksaVtvXT11WihzLG4scikpfSksaX0sY1o9WyJjaGlsZHJlbiJdLGZaPVsiY2hpbGRyZW4iXTtmdW5jdGlvbiBTTihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49ZFooZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBkWihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpe2lmKHQuaW5kZXhPZihyKT49MCljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59ZnVuY3Rpb24gV1MoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gV1M9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LFdTKGUpfXZhciBBTj17Y2xpY2s6Im9uQ2xpY2siLG1vdXNlZG93bjoib25Nb3VzZURvd24iLG1vdXNldXA6Im9uTW91c2VVcCIsbW91c2VvdmVyOiJvbk1vdXNlT3ZlciIsbW91c2Vtb3ZlOiJvbk1vdXNlTW92ZSIsbW91c2VvdXQ6Im9uTW91c2VPdXQiLG1vdXNlZW50ZXI6Im9uTW91c2VFbnRlciIsbW91c2VsZWF2ZToib25Nb3VzZUxlYXZlIix0b3VjaGNhbmNlbDoib25Ub3VjaENhbmNlbCIsdG91Y2hlbmQ6Im9uVG91Y2hFbmQiLHRvdWNobW92ZToib25Ub3VjaE1vdmUiLHRvdWNoc3RhcnQ6Im9uVG91Y2hTdGFydCIsY29udGV4dG1lbnU6Im9uQ29udGV4dE1lbnUiLGRibGNsaWNrOiJvbkRvdWJsZUNsaWNrIn0sc2E9ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OnQ/dC5kaXNwbGF5TmFtZXx8dC5uYW1lfHwiQ29tcG9uZW50IjoiIn0sX049bnVsbCx1eD1udWxsLElPPWZ1bmN0aW9uIGUodCl7aWYodD09PV9OJiZBcnJheS5pc0FycmF5KHV4KSlyZXR1cm4gdXg7dmFyIG49W107cmV0dXJuIEMuQ2hpbGRyZW4uZm9yRWFjaCh0LGZ1bmN0aW9uKHIpe0dlKHIpfHwoUVguaXNGcmFnbWVudChyKT9uPW4uY29uY2F0KGUoci5wcm9wcy5jaGlsZHJlbikpOm4ucHVzaChyKSl9KSx1eD1uLF9OPXQsbn07ZnVuY3Rpb24gd3IoZSx0KXt2YXIgbj1bXSxyPVtdO3JldHVybiBBcnJheS5pc0FycmF5KHQpP3I9dC5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIHNhKGkpfSk6cj1bc2EodCldLElPKGUpLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIG89eHIoaSwidHlwZS5kaXNwbGF5TmFtZSIpfHx4cihpLCJ0eXBlLm5hbWUiKTtyLmluZGV4T2YobykhPT0tMSYmbi5wdXNoKGkpfSksbn1mdW5jdGlvbiBncihlLHQpe3ZhciBuPXdyKGUsdCk7cmV0dXJuIG4mJm5bMF19dmFyIE9OPWZ1bmN0aW9uKHQpe2lmKCF0fHwhdC5wcm9wcylyZXR1cm4hMTt2YXIgbj10LnByb3BzLHI9bi53aWR0aCxpPW4uaGVpZ2h0O3JldHVybiEoIXZlKHIpfHxyPD0wfHwhdmUoaSl8fGk8PTApfSxoWj1bImEiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjb2xvci1wcm9maWxlIiwiY3Vyc29yIiwiZGVmcyIsImRlc2MiLCJlbGxpcHNlIiwiZmVCbGVuZCIsImZlQ29sb3JtYXRyaXgiLCJmZUNvbXBvbmVudFRyYW5zZmVyIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRGlzdGFudExpZ2h0IiwiZmVGbG9vZCIsImZlRnVuY0EiLCJmZUZ1bmNCIiwiZmVGdW5jRyIsImZlRnVuY1IiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNZXJnZU5vZGUiLCJmZU1vcnBob2xvZ3kiLCJmZU9mZnNldCIsImZlUG9pbnRMaWdodCIsImZlU3BlY3VsYXJMaWdodGluZyIsImZlU3BvdExpZ2h0IiwiZmVUaWxlIiwiZmVUdXJidWxlbmNlIiwiZmlsdGVyIiwiZm9udCIsImZvbnQtZmFjZSIsImZvbnQtZmFjZS1mb3JtYXQiLCJmb250LWZhY2UtbmFtZSIsImZvbnQtZmFjZS11cmwiLCJmb3JlaWduT2JqZWN0IiwiZyIsImdseXBoIiwiZ2x5cGhSZWYiLCJoa2VybiIsImltYWdlIiwibGluZSIsImxpbmVHcmFkaWVudCIsIm1hcmtlciIsIm1hc2siLCJtZXRhZGF0YSIsIm1pc3NpbmctZ2x5cGgiLCJtcGF0aCIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic2NyaXB0Iiwic2V0Iiwic3RvcCIsInN0eWxlIiwic3ZnIiwic3dpdGNoIiwic3ltYm9sIiwidGV4dCIsInRleHRQYXRoIiwidGl0bGUiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iXSxwWj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC50eXBlJiZncyh0LnR5cGUpJiZoWi5pbmRleE9mKHQudHlwZSk+PTB9LGRWPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZXUyh0KT09PSJvYmplY3QiJiYiY2xpcERvdCJpbiB0fSxtWj1mdW5jdGlvbih0LG4scixpKXt2YXIgbyxzPShvPWx4Py5baV0pIT09bnVsbCYmbyE9PXZvaWQgMD9vOltdO3JldHVybiBuLnN0YXJ0c1dpdGgoImRhdGEtIil8fCFIZSh0KSYmKGkmJnMuaW5jbHVkZXMobil8fGxaLmluY2x1ZGVzKG4pKXx8ciYmTE8uaW5jbHVkZXMobil9LCRlPWZ1bmN0aW9uKHQsbixyKXtpZighdHx8dHlwZW9mIHQ9PSJmdW5jdGlvbiJ8fHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIG51bGw7dmFyIGk9dDtpZihDLmlzVmFsaWRFbGVtZW50KHQpJiYoaT10LnByb3BzKSwhTHUoaSkpcmV0dXJuIG51bGw7dmFyIG89e307cmV0dXJuIE9iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIHU7bVooKHU9aSk9PT1udWxsfHx1PT09dm9pZCAwP3ZvaWQgMDp1W3NdLHMsbixyKSYmKG9bc109aVtzXSl9KSxvfSxZUz1mdW5jdGlvbiBlKHQsbil7aWYodD09PW4pcmV0dXJuITA7dmFyIHI9Qy5DaGlsZHJlbi5jb3VudCh0KTtpZihyIT09Qy5DaGlsZHJlbi5jb3VudChuKSlyZXR1cm4hMTtpZihyPT09MClyZXR1cm4hMDtpZihyPT09MSlyZXR1cm4gVE4oQXJyYXkuaXNBcnJheSh0KT90WzBdOnQsQXJyYXkuaXNBcnJheShuKT9uWzBdOm4pO2Zvcih2YXIgaT0wO2k8cjtpKyspe3ZhciBvPXRbaV0scz1uW2ldO2lmKEFycmF5LmlzQXJyYXkobyl8fEFycmF5LmlzQXJyYXkocykpe2lmKCFlKG8scykpcmV0dXJuITF9ZWxzZSBpZighVE4obyxzKSlyZXR1cm4hMX1yZXR1cm4hMH0sVE49ZnVuY3Rpb24odCxuKXtpZihHZSh0KSYmR2UobikpcmV0dXJuITA7aWYoIUdlKHQpJiYhR2Uobikpe3ZhciByPXQucHJvcHN8fHt9LGk9ci5jaGlsZHJlbixvPVNOKHIsY1opLHM9bi5wcm9wc3x8e30sdT1zLmNoaWxkcmVuLGY9U04ocyxmWik7cmV0dXJuIGkmJnU/cWwobyxmKSYmWVMoaSx1KTohaSYmIXU/cWwobyxmKTohMX1yZXR1cm4hMX0sRU49ZnVuY3Rpb24odCxuKXt2YXIgcj1bXSxpPXt9O3JldHVybiBJTyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG8scyl7aWYocFoobykpci5wdXNoKG8pO2Vsc2UgaWYobyl7dmFyIHU9c2Eoby50eXBlKSxmPW5bdV18fHt9LGQ9Zi5oYW5kbGVyLHA9Zi5vbmNlO2lmKGQmJighcHx8IWlbdV0pKXt2YXIgbT1kKG8sdSxzKTtyLnB1c2gobSksaVt1XT0hMH19fSkscn0seVo9ZnVuY3Rpb24odCl7dmFyIG49dCYmdC50eXBlO3JldHVybiBuJiZBTltuXT9BTltuXTpudWxsfSx2Wj1mdW5jdGlvbih0LG4pe3JldHVybiBJTyhuKS5pbmRleE9mKHQpfSxnWj1bImNoaWxkcmVuIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJ0aXRsZSIsImRlc2MiXTtmdW5jdGlvbiBYUygpe3JldHVybiBYUz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LFhTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBiWihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49eFooZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiB4WihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpe2lmKHQuaW5kZXhPZihyKT49MCljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59ZnVuY3Rpb24gWlMoZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUud2lkdGgscj1lLmhlaWdodCxpPWUudmlld0JveCxvPWUuY2xhc3NOYW1lLHM9ZS5zdHlsZSx1PWUudGl0bGUsZj1lLmRlc2MsZD1iWihlLGdaKSxwPWl8fHt3aWR0aDpuLGhlaWdodDpyLHg6MCx5OjB9LG09V2UoInJlY2hhcnRzLXN1cmZhY2UiLG8pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoInN2ZyIsWFMoe30sJGUoZCwhMCwic3ZnIikse2NsYXNzTmFtZTptLHdpZHRoOm4saGVpZ2h0OnIsc3R5bGU6cyx2aWV3Qm94OiIiLmNvbmNhdChwLngsIiAiKS5jb25jYXQocC55LCIgIikuY29uY2F0KHAud2lkdGgsIiAiKS5jb25jYXQocC5oZWlnaHQpfSksRi5jcmVhdGVFbGVtZW50KCJ0aXRsZSIsbnVsbCx1KSxGLmNyZWF0ZUVsZW1lbnQoImRlc2MiLG51bGwsZiksdCl9dmFyIHdaPVsiY2hpbGRyZW4iLCJjbGFzc05hbWUiXTtmdW5jdGlvbiBRUygpe3JldHVybiBRUz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LFFTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBTWihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49QVooZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBBWihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpe2lmKHQuaW5kZXhPZihyKT49MCljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59dmFyIGF0PUYuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe3ZhciBuPWUuY2hpbGRyZW4scj1lLmNsYXNzTmFtZSxpPVNaKGUsd1opLG89V2UoInJlY2hhcnRzLWxheWVyIixyKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJnIixRUyh7Y2xhc3NOYW1lOm99LCRlKGksITApLHtyZWY6dH0pLG4pfSksbGE9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShyPjI/ci0yOjApLG89MjtvPHI7bysrKWlbby0yXT1hcmd1bWVudHNbb119LGN4LENOO2Z1bmN0aW9uIF9aKCl7aWYoQ04pcmV0dXJuIGN4O0NOPTE7ZnVuY3Rpb24gZSh0LG4scil7dmFyIGk9LTEsbz10Lmxlbmd0aDtuPDAmJihuPS1uPm8/MDpvK24pLHI9cj5vP286cixyPDAmJihyKz1vKSxvPW4+cj8wOnItbj4+PjAsbj4+Pj0wO2Zvcih2YXIgcz1BcnJheShvKTsrK2k8bzspc1tpXT10W2krbl07cmV0dXJuIHN9cmV0dXJuIGN4PWUsY3h9dmFyIGZ4LGpOO2Z1bmN0aW9uIE9aKCl7aWYoak4pcmV0dXJuIGZ4O2pOPTE7dmFyIGU9X1ooKTtmdW5jdGlvbiB0KG4scixpKXt2YXIgbz1uLmxlbmd0aDtyZXR1cm4gaT1pPT09dm9pZCAwP286aSwhciYmaT49bz9uOmUobixyLGkpfXJldHVybiBmeD10LGZ4fXZhciBkeCxQTjtmdW5jdGlvbiBoVigpe2lmKFBOKXJldHVybiBkeDtQTj0xO3ZhciBlPSJcXHVkODAwLVxcdWRmZmYiLHQ9IlxcdTAzMDAtXFx1MDM2ZiIsbj0iXFx1ZmUyMC1cXHVmZTJmIixyPSJcXHUyMGQwLVxcdTIwZmYiLGk9dCtuK3Isbz0iXFx1ZmUwZVxcdWZlMGYiLHM9IlxcdTIwMGQiLHU9UmVnRXhwKCJbIitzK2UraStvKyJdIik7ZnVuY3Rpb24gZihkKXtyZXR1cm4gdS50ZXN0KGQpfXJldHVybiBkeD1mLGR4fXZhciBoeCxNTjtmdW5jdGlvbiBUWigpe2lmKE1OKXJldHVybiBoeDtNTj0xO2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQuc3BsaXQoIiIpfXJldHVybiBoeD1lLGh4fXZhciBweCxSTjtmdW5jdGlvbiBFWigpe2lmKFJOKXJldHVybiBweDtSTj0xO3ZhciBlPSJcXHVkODAwLVxcdWRmZmYiLHQ9IlxcdTAzMDAtXFx1MDM2ZiIsbj0iXFx1ZmUyMC1cXHVmZTJmIixyPSJcXHUyMGQwLVxcdTIwZmYiLGk9dCtuK3Isbz0iXFx1ZmUwZVxcdWZlMGYiLHM9IlsiK2UrIl0iLHU9IlsiK2krIl0iLGY9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsZD0iKD86Iit1KyJ8IitmKyIpIixwPSJbXiIrZSsiXSIsbT0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIseT0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIseD0iXFx1MjAwZCIsdz1kKyI/IixiPSJbIitvKyJdPyIsZz0iKD86Iit4KyIoPzoiK1twLG0seV0uam9pbigifCIpKyIpIitiK3crIikqIixfPWIrdytnLE89Iig/OiIrW3ArdSsiPyIsdSxtLHksc10uam9pbigifCIpKyIpIixFPVJlZ0V4cChmKyIoPz0iK2YrIil8IitPK18sImciKTtmdW5jdGlvbiBqKFQpe3JldHVybiBULm1hdGNoKEUpfHxbXX1yZXR1cm4gcHg9aixweH12YXIgbXgsTk47ZnVuY3Rpb24gQ1ooKXtpZihOTilyZXR1cm4gbXg7Tk49MTt2YXIgZT1UWigpLHQ9aFYoKSxuPUVaKCk7ZnVuY3Rpb24gcihpKXtyZXR1cm4gdChpKT9uKGkpOmUoaSl9cmV0dXJuIG14PXIsbXh9dmFyIHl4LGtOO2Z1bmN0aW9uIGpaKCl7aWYoa04pcmV0dXJuIHl4O2tOPTE7dmFyIGU9T1ooKSx0PWhWKCksbj1DWigpLHI9bFYoKTtmdW5jdGlvbiBpKG8pe3JldHVybiBmdW5jdGlvbihzKXtzPXIocyk7dmFyIHU9dChzKT9uKHMpOnZvaWQgMCxmPXU/dVswXTpzLmNoYXJBdCgwKSxkPXU/ZSh1LDEpLmpvaW4oIiIpOnMuc2xpY2UoMSk7cmV0dXJuIGZbb10oKStkfX1yZXR1cm4geXg9aSx5eH12YXIgdngsRE47ZnVuY3Rpb24gUFooKXtpZihETilyZXR1cm4gdng7RE49MTt2YXIgZT1qWigpLHQ9ZSgidG9VcHBlckNhc2UiKTtyZXR1cm4gdng9dCx2eH12YXIgTVo9UFooKTtjb25zdCBGeT1PdChNWik7ZnVuY3Rpb24gRHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fWNvbnN0IHBWPU1hdGguY29zLGxtPU1hdGguc2luLHVpPU1hdGguc3FydCx1bT1NYXRoLlBJLEh5PTIqdW0sSlM9TWF0aC5QSSxlQT0yKkpTLEpvPTFlLTYsUlo9ZUEtSm87ZnVuY3Rpb24gbVYoZSl7dGhpcy5fKz1lWzBdO2ZvcihsZXQgdD0xLG49ZS5sZW5ndGg7dDxuOysrdCl0aGlzLl8rPWFyZ3VtZW50c1t0XStlW3RdfWZ1bmN0aW9uIE5aKGUpe2xldCB0PU1hdGguZmxvb3IoZSk7aWYoISh0Pj0wKSl0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZGlnaXRzOiAke2V9YCk7aWYodD4xNSlyZXR1cm4gbVY7Y29uc3Qgbj0xMCoqdDtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5fKz1yWzBdO2ZvcihsZXQgaT0xLG89ci5sZW5ndGg7aTxvOysraSl0aGlzLl8rPU1hdGgucm91bmQoYXJndW1lbnRzW2ldKm4pL24rcltpXX19Y2xhc3Mga1p7Y29uc3RydWN0b3IodCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiIsdGhpcy5fYXBwZW5kPXQ9PW51bGw/bVY6TloodCl9bW92ZVRvKHQsbil7dGhpcy5fYXBwZW5kYE0ke3RoaXMuX3gwPXRoaXMuX3gxPSt0fSwke3RoaXMuX3kwPXRoaXMuX3kxPStufWB9Y2xvc2VQYXRoKCl7dGhpcy5feDEhPT1udWxsJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fYXBwZW5kYFpgKX1saW5lVG8odCxuKXt0aGlzLl9hcHBlbmRgTCR7dGhpcy5feDE9K3R9LCR7dGhpcy5feTE9K259YH1xdWFkcmF0aWNDdXJ2ZVRvKHQsbixyLGkpe3RoaXMuX2FwcGVuZGBRJHsrdH0sJHsrbn0sJHt0aGlzLl94MT0rcn0sJHt0aGlzLl95MT0raX1gfWJlemllckN1cnZlVG8odCxuLHIsaSxvLHMpe3RoaXMuX2FwcGVuZGBDJHsrdH0sJHsrbn0sJHsrcn0sJHsraX0sJHt0aGlzLl94MT0rb30sJHt0aGlzLl95MT0rc31gfWFyY1RvKHQsbixyLGksbyl7aWYodD0rdCxuPStuLHI9K3IsaT0raSxvPStvLG88MCl0aHJvdyBuZXcgRXJyb3IoYG5lZ2F0aXZlIHJhZGl1czogJHtvfWApO2xldCBzPXRoaXMuX3gxLHU9dGhpcy5feTEsZj1yLXQsZD1pLW4scD1zLXQsbT11LW4seT1wKnArbSptO2lmKHRoaXMuX3gxPT09bnVsbCl0aGlzLl9hcHBlbmRgTSR7dGhpcy5feDE9dH0sJHt0aGlzLl95MT1ufWA7ZWxzZSBpZih5PkpvKWlmKCEoTWF0aC5hYnMobSpmLWQqcCk+Sm8pfHwhbyl0aGlzLl9hcHBlbmRgTCR7dGhpcy5feDE9dH0sJHt0aGlzLl95MT1ufWA7ZWxzZXtsZXQgeD1yLXMsdz1pLXUsYj1mKmYrZCpkLGc9eCp4K3cqdyxfPU1hdGguc3FydChiKSxPPU1hdGguc3FydCh5KSxFPW8qTWF0aC50YW4oKEpTLU1hdGguYWNvcygoYit5LWcpLygyKl8qTykpKS8yKSxqPUUvTyxUPUUvXztNYXRoLmFicyhqLTEpPkpvJiZ0aGlzLl9hcHBlbmRgTCR7dCtqKnB9LCR7bitqKm19YCx0aGlzLl9hcHBlbmRgQSR7b30sJHtvfSwwLDAsJHsrKG0qeD5wKncpfSwke3RoaXMuX3gxPXQrVCpmfSwke3RoaXMuX3kxPW4rVCpkfWB9fWFyYyh0LG4scixpLG8scyl7aWYodD0rdCxuPStuLHI9K3Iscz0hIXMscjwwKXRocm93IG5ldyBFcnJvcihgbmVnYXRpdmUgcmFkaXVzOiAke3J9YCk7bGV0IHU9cipNYXRoLmNvcyhpKSxmPXIqTWF0aC5zaW4oaSksZD10K3UscD1uK2YsbT0xXnMseT1zP2ktbzpvLWk7dGhpcy5feDE9PT1udWxsP3RoaXMuX2FwcGVuZGBNJHtkfSwke3B9YDooTWF0aC5hYnModGhpcy5feDEtZCk+Sm98fE1hdGguYWJzKHRoaXMuX3kxLXApPkpvKSYmdGhpcy5fYXBwZW5kYEwke2R9LCR7cH1gLHImJih5PDAmJih5PXklZUErZUEpLHk+Ulo/dGhpcy5fYXBwZW5kYEEke3J9LCR7cn0sMCwxLCR7bX0sJHt0LXV9LCR7bi1mfUEke3J9LCR7cn0sMCwxLCR7bX0sJHt0aGlzLl94MT1kfSwke3RoaXMuX3kxPXB9YDp5PkpvJiZ0aGlzLl9hcHBlbmRgQSR7cn0sJHtyfSwwLCR7Kyh5Pj1KUyl9LCR7bX0sJHt0aGlzLl94MT10K3IqTWF0aC5jb3Mobyl9LCR7dGhpcy5feTE9bityKk1hdGguc2luKG8pfWApfXJlY3QodCxuLHIsaSl7dGhpcy5fYXBwZW5kYE0ke3RoaXMuX3gwPXRoaXMuX3gxPSt0fSwke3RoaXMuX3kwPXRoaXMuX3kxPStufWgke3I9K3J9diR7K2l9aCR7LXJ9WmB9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5ffX1mdW5jdGlvbiAkTyhlKXtsZXQgdD0zO3JldHVybiBlLmRpZ2l0cz1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdDtpZihuPT1udWxsKXQ9bnVsbDtlbHNle2NvbnN0IHI9TWF0aC5mbG9vcihuKTtpZighKHI+PTApKXRocm93IG5ldyBSYW5nZUVycm9yKGBpbnZhbGlkIGRpZ2l0czogJHtufWApO3Q9cn1yZXR1cm4gZX0sKCk9Pm5ldyBrWih0KX1mdW5jdGlvbiBCTyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJvYmplY3QiJiYibGVuZ3RoImluIGU/ZTpBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIHlWKGUpe3RoaXMuX2NvbnRleHQ9ZX15Vi5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTticmVha319fTtmdW5jdGlvbiBHeShlKXtyZXR1cm4gbmV3IHlWKGUpfWZ1bmN0aW9uIHZWKGUpe3JldHVybiBlWzBdfWZ1bmN0aW9uIGdWKGUpe3JldHVybiBlWzFdfWZ1bmN0aW9uIGJWKGUsdCl7dmFyIG49RHQoITApLHI9bnVsbCxpPUd5LG89bnVsbCxzPSRPKHUpO2U9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTplPT09dm9pZCAwP3ZWOkR0KGUpLHQ9dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dDp0PT09dm9pZCAwP2dWOkR0KHQpO2Z1bmN0aW9uIHUoZil7dmFyIGQscD0oZj1CTyhmKSkubGVuZ3RoLG0seT0hMSx4O2ZvcihyPT1udWxsJiYobz1pKHg9cygpKSksZD0wO2Q8PXA7KytkKSEoZDxwJiZuKG09ZltkXSxkLGYpKT09PXkmJigoeT0heSk/by5saW5lU3RhcnQoKTpvLmxpbmVFbmQoKSkseSYmby5wb2ludCgrZShtLGQsZiksK3QobSxkLGYpKTtpZih4KXJldHVybiBvPW51bGwseCsiInx8bnVsbH1yZXR1cm4gdS54PWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBmPT0iZnVuY3Rpb24iP2Y6RHQoK2YpLHUpOmV9LHUueT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgZj09ImZ1bmN0aW9uIj9mOkR0KCtmKSx1KTp0fSx1LmRlZmluZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpEdCghIWYpLHUpOm59LHUuY3VydmU9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ZixyIT1udWxsJiYobz1pKHIpKSx1KTppfSx1LmNvbnRleHQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9PW51bGw/cj1vPW51bGw6bz1pKHI9ZiksdSk6cn0sdX1mdW5jdGlvbiBscChlLHQsbil7dmFyIHI9bnVsbCxpPUR0KCEwKSxvPW51bGwscz1HeSx1PW51bGwsZj0kTyhkKTtlPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6ZT09PXZvaWQgMD92VjpEdCgrZSksdD10eXBlb2YgdD09ImZ1bmN0aW9uIj90OkR0KHQ9PT12b2lkIDA/MDordCksbj10eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOm49PT12b2lkIDA/Z1Y6RHQoK24pO2Z1bmN0aW9uIGQobSl7dmFyIHkseCx3LGI9KG09Qk8obSkpLmxlbmd0aCxnLF89ITEsTyxFPW5ldyBBcnJheShiKSxqPW5ldyBBcnJheShiKTtmb3Iobz09bnVsbCYmKHU9cyhPPWYoKSkpLHk9MDt5PD1iOysreSl7aWYoISh5PGImJmkoZz1tW3ldLHksbSkpPT09XylpZihfPSFfKXg9eSx1LmFyZWFTdGFydCgpLHUubGluZVN0YXJ0KCk7ZWxzZXtmb3IodS5saW5lRW5kKCksdS5saW5lU3RhcnQoKSx3PXktMTt3Pj14Oy0tdyl1LnBvaW50KEVbd10salt3XSk7dS5saW5lRW5kKCksdS5hcmVhRW5kKCl9XyYmKEVbeV09K2UoZyx5LG0pLGpbeV09K3QoZyx5LG0pLHUucG9pbnQocj8rcihnLHksbSk6RVt5XSxuPytuKGcseSxtKTpqW3ldKSl9aWYoTylyZXR1cm4gdT1udWxsLE8rIiJ8fG51bGx9ZnVuY3Rpb24gcCgpe3JldHVybiBiVigpLmRlZmluZWQoaSkuY3VydmUocykuY29udGV4dChvKX1yZXR1cm4gZC54PWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBtPT0iZnVuY3Rpb24iP206RHQoK20pLHI9bnVsbCxkKTplfSxkLngwPWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBtPT0iZnVuY3Rpb24iP206RHQoK20pLGQpOmV9LGQueDE9ZnVuY3Rpb24obSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bT09bnVsbD9udWxsOnR5cGVvZiBtPT0iZnVuY3Rpb24iP206RHQoK20pLGQpOnJ9LGQueT1mdW5jdGlvbihtKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgbT09ImZ1bmN0aW9uIj9tOkR0KCttKSxuPW51bGwsZCk6dH0sZC55MD1mdW5jdGlvbihtKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgbT09ImZ1bmN0aW9uIj9tOkR0KCttKSxkKTp0fSxkLnkxPWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW09PW51bGw/bnVsbDp0eXBlb2YgbT09ImZ1bmN0aW9uIj9tOkR0KCttKSxkKTpufSxkLmxpbmVYMD1kLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBwKCkueChlKS55KHQpfSxkLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBwKCkueChlKS55KG4pfSxkLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBwKCkueChyKS55KHQpfSxkLmRlZmluZWQ9ZnVuY3Rpb24obSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIG09PSJmdW5jdGlvbiI/bTpEdCghIW0pLGQpOml9LGQuY3VydmU9ZnVuY3Rpb24obSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bSxvIT1udWxsJiYodT1zKG8pKSxkKTpzfSxkLmNvbnRleHQ9ZnVuY3Rpb24obSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09PW51bGw/bz11PW51bGw6dT1zKG89bSksZCk6b30sZH1jbGFzcyB4Vntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl94PW59YXJlYVN0YXJ0KCl7dGhpcy5fbGluZT0wfWFyZWFFbmQoKXt0aGlzLl9saW5lPU5hTn1saW5lU3RhcnQoKXt0aGlzLl9wb2ludD0wfWxpbmVFbmQoKXsodGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MSkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9cG9pbnQodCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6e3RoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWt9Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp7dGhpcy5feD90aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8odGhpcy5feDA9KHRoaXMuX3gwK3QpLzIsdGhpcy5feTAsdGhpcy5feDAsbix0LG4pOnRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0aGlzLl94MCx0aGlzLl95MD0odGhpcy5feTArbikvMix0LHRoaXMuX3kwLHQsbik7YnJlYWt9fXRoaXMuX3gwPXQsdGhpcy5feTA9bn19ZnVuY3Rpb24gRFooZSl7cmV0dXJuIG5ldyB4VihlLCEwKX1mdW5jdGlvbiBMWihlKXtyZXR1cm4gbmV3IHhWKGUsITEpfWNvbnN0IFZPPXtkcmF3KGUsdCl7Y29uc3Qgbj11aSh0L3VtKTtlLm1vdmVUbyhuLDApLGUuYXJjKDAsMCxuLDAsSHkpfX0sSVo9e2RyYXcoZSx0KXtjb25zdCBuPXVpKHQvNSkvMjtlLm1vdmVUbygtMypuLC1uKSxlLmxpbmVUbygtbiwtbiksZS5saW5lVG8oLW4sLTMqbiksZS5saW5lVG8obiwtMypuKSxlLmxpbmVUbyhuLC1uKSxlLmxpbmVUbygzKm4sLW4pLGUubGluZVRvKDMqbixuKSxlLmxpbmVUbyhuLG4pLGUubGluZVRvKG4sMypuKSxlLmxpbmVUbygtbiwzKm4pLGUubGluZVRvKC1uLG4pLGUubGluZVRvKC0zKm4sbiksZS5jbG9zZVBhdGgoKX19LHdWPXVpKDEvMyksJFo9d1YqMixCWj17ZHJhdyhlLHQpe2NvbnN0IG49dWkodC8kWikscj1uKndWO2UubW92ZVRvKDAsLW4pLGUubGluZVRvKHIsMCksZS5saW5lVG8oMCxuKSxlLmxpbmVUbygtciwwKSxlLmNsb3NlUGF0aCgpfX0sVlo9e2RyYXcoZSx0KXtjb25zdCBuPXVpKHQpLHI9LW4vMjtlLnJlY3QocixyLG4sbil9fSxxWj0uODkwODEzMDkxNTI5Mjg1MixTVj1sbSh1bS8xMCkvbG0oNyp1bS8xMCksVVo9bG0oSHkvMTApKlNWLHpaPS1wVihIeS8xMCkqU1YsRlo9e2RyYXcoZSx0KXtjb25zdCBuPXVpKHQqcVopLHI9VVoqbixpPXpaKm47ZS5tb3ZlVG8oMCwtbiksZS5saW5lVG8ocixpKTtmb3IobGV0IG89MTtvPDU7KytvKXtjb25zdCBzPUh5Km8vNSx1PXBWKHMpLGY9bG0ocyk7ZS5saW5lVG8oZipuLC11Km4pLGUubGluZVRvKHUqci1mKmksZipyK3UqaSl9ZS5jbG9zZVBhdGgoKX19LGd4PXVpKDMpLEhaPXtkcmF3KGUsdCl7Y29uc3Qgbj0tdWkodC8oZ3gqMykpO2UubW92ZVRvKDAsbioyKSxlLmxpbmVUbygtZ3gqbiwtbiksZS5saW5lVG8oZ3gqbiwtbiksZS5jbG9zZVBhdGgoKX19LGtyPS0uNSxEcj11aSgzKS8yLHRBPTEvdWkoMTIpLEdaPSh0QS8yKzEpKjMsS1o9e2RyYXcoZSx0KXtjb25zdCBuPXVpKHQvR1opLHI9bi8yLGk9bip0QSxvPXIscz1uKnRBK24sdT0tbyxmPXM7ZS5tb3ZlVG8ocixpKSxlLmxpbmVUbyhvLHMpLGUubGluZVRvKHUsZiksZS5saW5lVG8oa3Iqci1EcippLERyKnIra3IqaSksZS5saW5lVG8oa3Iqby1EcipzLERyKm8ra3IqcyksZS5saW5lVG8oa3IqdS1EcipmLERyKnUra3IqZiksZS5saW5lVG8oa3IqcitEcippLGtyKmktRHIqciksZS5saW5lVG8oa3IqbytEcipzLGtyKnMtRHIqbyksZS5saW5lVG8oa3IqdStEcipmLGtyKmYtRHIqdSksZS5jbG9zZVBhdGgoKX19O2Z1bmN0aW9uIFdaKGUsdCl7bGV0IG49bnVsbCxyPSRPKGkpO2U9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpEdChlfHxWTyksdD10eXBlb2YgdD09ImZ1bmN0aW9uIj90OkR0KHQ9PT12b2lkIDA/NjQ6K3QpO2Z1bmN0aW9uIGkoKXtsZXQgbztpZihufHwobj1vPXIoKSksZS5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhuLCt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbylyZXR1cm4gbj1udWxsLG8rIiJ8fG51bGx9cmV0dXJuIGkudHlwZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOkR0KG8pLGkpOmV9LGkuc2l6ZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOkR0KCtvKSxpKTp0fSxpLmNvbnRleHQ9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bz8/bnVsbCxpKTpufSxpfWZ1bmN0aW9uIGNtKCl7fWZ1bmN0aW9uIGZtKGUsdCxuKXtlLl9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqZS5feDArZS5feDEpLzMsKDIqZS5feTArZS5feTEpLzMsKGUuX3gwKzIqZS5feDEpLzMsKGUuX3kwKzIqZS5feTEpLzMsKGUuX3gwKzQqZS5feDErdCkvNiwoZS5feTArNCplLl95MStuKS82KX1mdW5jdGlvbiBBVihlKXt0aGlzLl9jb250ZXh0PWV9QVYucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpmbSh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrfSh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZT0rZSx0PSt0LHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpmbSh0aGlzLGUsdCk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10fX07ZnVuY3Rpb24gWVooZSl7cmV0dXJuIG5ldyBBVihlKX1mdW5jdGlvbiBfVihlKXt0aGlzLl9jb250ZXh0PWV9X1YucHJvdG90eXBlPXthcmVhU3RhcnQ6Y20sYXJlYUVuZDpjbSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnt0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDI6e3RoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDM6e3RoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpO2JyZWFrfX19LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9ZSx0aGlzLl95Mj10O2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPWUsdGhpcy5feTM9dDticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND1lLHRoaXMuX3k0PXQsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErZSkvNiwodGhpcy5feTArNCp0aGlzLl95MSt0KS82KTticmVhaztkZWZhdWx0OmZtKHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXR9fTtmdW5jdGlvbiBYWihlKXtyZXR1cm4gbmV3IF9WKGUpfWZ1bmN0aW9uIE9WKGUpe3RoaXMuX2NvbnRleHQ9ZX1PVi5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0zKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZT0rZSx0PSt0LHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgbj0odGhpcy5feDArNCp0aGlzLl94MStlKS82LHI9KHRoaXMuX3kwKzQqdGhpcy5feTErdCkvNjt0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKG4scik6dGhpcy5fY29udGV4dC5tb3ZlVG8obixyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OmZtKHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXR9fTtmdW5jdGlvbiBaWihlKXtyZXR1cm4gbmV3IE9WKGUpfWZ1bmN0aW9uIFRWKGUpe3RoaXMuX2NvbnRleHQ9ZX1UVi5wcm90b3R5cGU9e2FyZWFTdGFydDpjbSxhcmVhRW5kOmNtLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtlPStlLHQ9K3QsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpKX19O2Z1bmN0aW9uIFFaKGUpe3JldHVybiBuZXcgVFYoZSl9ZnVuY3Rpb24gTE4oZSl7cmV0dXJuIGU8MD8tMToxfWZ1bmN0aW9uIElOKGUsdCxuKXt2YXIgcj1lLl94MS1lLl94MCxpPXQtZS5feDEsbz0oZS5feTEtZS5feTApLyhyfHxpPDAmJi0wKSxzPShuLWUuX3kxKS8oaXx8cjwwJiYtMCksdT0obyppK3MqcikvKHIraSk7cmV0dXJuKExOKG8pK0xOKHMpKSpNYXRoLm1pbihNYXRoLmFicyhvKSxNYXRoLmFicyhzKSwuNSpNYXRoLmFicyh1KSl8fDB9ZnVuY3Rpb24gJE4oZSx0KXt2YXIgbj1lLl94MS1lLl94MDtyZXR1cm4gbj8oMyooZS5feTEtZS5feTApL24tdCkvMjp0fWZ1bmN0aW9uIGJ4KGUsdCxuKXt2YXIgcj1lLl94MCxpPWUuX3kwLG89ZS5feDEscz1lLl95MSx1PShvLXIpLzM7ZS5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIrdSxpK3UqdCxvLXUscy11Km4sbyxzKX1mdW5jdGlvbiBkbShlKXt0aGlzLl9jb250ZXh0PWV9ZG0ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOmJ4KHRoaXMsdGhpcy5fdDAsJE4odGhpcyx0aGlzLl90MCkpO2JyZWFrfSh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1OYU47aWYoZT0rZSx0PSt0LCEoZT09PXRoaXMuX3gxJiZ0PT09dGhpcy5feTEpKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLGJ4KHRoaXMsJE4odGhpcyxuPUlOKHRoaXMsZSx0KSksbik7YnJlYWs7ZGVmYXVsdDpieCh0aGlzLHRoaXMuX3QwLG49SU4odGhpcyxlLHQpKTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXQsdGhpcy5fdDA9bn19fTtmdW5jdGlvbiBFVihlKXt0aGlzLl9jb250ZXh0PW5ldyBDVihlKX0oRVYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZG0ucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24oZSx0KXtkbS5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLHQsZSl9O2Z1bmN0aW9uIENWKGUpe3RoaXMuX2NvbnRleHQ9ZX1DVi5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbihlLHQpe3RoaXMuX2NvbnRleHQubW92ZVRvKHQsZSl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbihlLHQpe3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24oZSx0LG4scixpLG8pe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0LGUscixuLG8saSl9fTtmdW5jdGlvbiBKWihlKXtyZXR1cm4gbmV3IGRtKGUpfWZ1bmN0aW9uIGVRKGUpe3JldHVybiBuZXcgRVYoZSl9ZnVuY3Rpb24galYoZSl7dGhpcy5fY29udGV4dD1lfWpWLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3gsdD10aGlzLl95LG49ZS5sZW5ndGg7aWYobilpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGVbMF0sdFswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZVswXSx0WzBdKSxuPT09Mil0aGlzLl9jb250ZXh0LmxpbmVUbyhlWzFdLHRbMV0pO2Vsc2UgZm9yKHZhciByPUJOKGUpLGk9Qk4odCksbz0wLHM9MTtzPG47KytvLCsrcyl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oclswXVtvXSxpWzBdW29dLHJbMV1bb10saVsxXVtvXSxlW3NdLHRbc10pOyh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmbj09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbihlLHQpe3RoaXMuX3gucHVzaCgrZSksdGhpcy5feS5wdXNoKCt0KX19O2Z1bmN0aW9uIEJOKGUpe3ZhciB0LG49ZS5sZW5ndGgtMSxyLGk9bmV3IEFycmF5KG4pLG89bmV3IEFycmF5KG4pLHM9bmV3IEFycmF5KG4pO2ZvcihpWzBdPTAsb1swXT0yLHNbMF09ZVswXSsyKmVbMV0sdD0xO3Q8bi0xOysrdClpW3RdPTEsb1t0XT00LHNbdF09NCplW3RdKzIqZVt0KzFdO2ZvcihpW24tMV09MixvW24tMV09NyxzW24tMV09OCplW24tMV0rZVtuXSx0PTE7dDxuOysrdClyPWlbdF0vb1t0LTFdLG9bdF0tPXIsc1t0XS09cipzW3QtMV07Zm9yKGlbbi0xXT1zW24tMV0vb1tuLTFdLHQ9bi0yO3Q+PTA7LS10KWlbdF09KHNbdF0taVt0KzFdKS9vW3RdO2ZvcihvW24tMV09KGVbbl0raVtuLTFdKS8yLHQ9MDt0PG4tMTsrK3Qpb1t0XT0yKmVbdCsxXS1pW3QrMV07cmV0dXJuW2ksb119ZnVuY3Rpb24gdFEoZSl7cmV0dXJuIG5ldyBqVihlKX1mdW5jdGlvbiBLeShlLHQpe3RoaXMuX2NvbnRleHQ9ZSx0aGlzLl90PXR9S3kucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD10aGlzLl95PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MDx0aGlzLl90JiZ0aGlzLl90PDEmJnRoaXMuX3BvaW50PT09MiYmdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCx0aGlzLl95KSwodGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MSkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT49MCYmKHRoaXMuX3Q9MS10aGlzLl90LHRoaXMuX2xpbmU9MS10aGlzLl9saW5lKX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZT0rZSx0PSt0LHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OntpZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdCksdGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTtlbHNle3ZhciBuPXRoaXMuX3gqKDEtdGhpcy5fdCkrZSp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKG4sdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8obix0KX1icmVha319dGhpcy5feD1lLHRoaXMuX3k9dH19O2Z1bmN0aW9uIG5RKGUpe3JldHVybiBuZXcgS3koZSwuNSl9ZnVuY3Rpb24gclEoZSl7cmV0dXJuIG5ldyBLeShlLDApfWZ1bmN0aW9uIGlRKGUpe3JldHVybiBuZXcgS3koZSwxKX1mdW5jdGlvbiBRbChlLHQpe2lmKChzPWUubGVuZ3RoKT4xKWZvcih2YXIgbj0xLHIsaSxvPWVbdFswXV0scyx1PW8ubGVuZ3RoO248czsrK24pZm9yKGk9byxvPWVbdFtuXV0scj0wO3I8dTsrK3Ipb1tyXVsxXSs9b1tyXVswXT1pc05hTihpW3JdWzFdKT9pW3JdWzBdOmlbcl1bMV19ZnVuY3Rpb24gbkEoZSl7Zm9yKHZhciB0PWUubGVuZ3RoLG49bmV3IEFycmF5KHQpOy0tdD49MDspblt0XT10O3JldHVybiBufWZ1bmN0aW9uIGFRKGUsdCl7cmV0dXJuIGVbdF19ZnVuY3Rpb24gb1EoZSl7Y29uc3QgdD1bXTtyZXR1cm4gdC5rZXk9ZSx0fWZ1bmN0aW9uIHNRKCl7dmFyIGU9RHQoW10pLHQ9bkEsbj1RbCxyPWFRO2Z1bmN0aW9uIGkobyl7dmFyIHM9QXJyYXkuZnJvbShlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvUSksdSxmPXMubGVuZ3RoLGQ9LTEscDtmb3IoY29uc3QgbSBvZiBvKWZvcih1PTAsKytkO3U8ZjsrK3UpKHNbdV1bZF09WzAsK3IobSxzW3VdLmtleSxkLG8pXSkuZGF0YT1tO2Zvcih1PTAscD1CTyh0KHMpKTt1PGY7Kyt1KXNbcFt1XV0uaW5kZXg9dTtyZXR1cm4gbihzLHApLHN9cmV0dXJuIGkua2V5cz1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOkR0KEFycmF5LmZyb20obykpLGkpOmV9LGkudmFsdWU9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIG89PSJmdW5jdGlvbiI/bzpEdCgrbyksaSk6cn0saS5vcmRlcj1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1vPT1udWxsP25BOnR5cGVvZiBvPT0iZnVuY3Rpb24iP286RHQoQXJyYXkuZnJvbShvKSksaSk6dH0saS5vZmZzZXQ9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bz8/UWwsaSk6bn0saX1mdW5jdGlvbiBsUShlLHQpe2lmKChyPWUubGVuZ3RoKT4wKXtmb3IodmFyIG4scixpPTAsbz1lWzBdLmxlbmd0aCxzO2k8bzsrK2kpe2ZvcihzPW49MDtuPHI7KytuKXMrPWVbbl1baV1bMV18fDA7aWYocylmb3Iobj0wO248cjsrK24pZVtuXVtpXVsxXS89c31RbChlLHQpfX1mdW5jdGlvbiB1UShlLHQpe2lmKChpPWUubGVuZ3RoKT4wKXtmb3IodmFyIG49MCxyPWVbdFswXV0saSxvPXIubGVuZ3RoO248bzsrK24pe2Zvcih2YXIgcz0wLHU9MDtzPGk7KytzKXUrPWVbc11bbl1bMV18fDA7cltuXVsxXSs9cltuXVswXT0tdS8yfVFsKGUsdCl9fWZ1bmN0aW9uIGNRKGUsdCl7aWYoISghKChzPWUubGVuZ3RoKT4wKXx8ISgobz0oaT1lW3RbMF1dKS5sZW5ndGgpPjApKSl7Zm9yKHZhciBuPTAscj0xLGksbyxzO3I8bzsrK3Ipe2Zvcih2YXIgdT0wLGY9MCxkPTA7dTxzOysrdSl7Zm9yKHZhciBwPWVbdFt1XV0sbT1wW3JdWzFdfHwwLHk9cFtyLTFdWzFdfHwwLHg9KG0teSkvMix3PTA7dzx1Oysrdyl7dmFyIGI9ZVt0W3ddXSxnPWJbcl1bMV18fDAsXz1iW3ItMV1bMV18fDA7eCs9Zy1ffWYrPW0sZCs9eCptfWlbci0xXVsxXSs9aVtyLTFdWzBdPW4sZiYmKG4tPWQvZil9aVtyLTFdWzFdKz1pW3ItMV1bMF09bixRbChlLHQpfX1mdW5jdGlvbiBNZihlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBNZj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sTWYoZSl9dmFyIGZRPVsidHlwZSIsInNpemUiLCJzaXplVHlwZSJdO2Z1bmN0aW9uIHJBKCl7cmV0dXJuIHJBPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sckEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFZOKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gcU4oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/Vk4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2RRKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlZOKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBkUShlLHQsbil7cmV0dXJuIHQ9aFEodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBoUShlKXt2YXIgdD1wUShlLCJzdHJpbmciKTtyZXR1cm4gTWYodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBwUShlLHQpe2lmKE1mKGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKE1mKHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9ZnVuY3Rpb24gbVEoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXlRKGUsdCkscixpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKylyPW9baV0sISh0LmluZGV4T2Yocik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKG5bcl09ZVtyXSl9cmV0dXJuIG59ZnVuY3Rpb24geVEoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufXZhciBQVj17c3ltYm9sQ2lyY2xlOlZPLHN5bWJvbENyb3NzOklaLHN5bWJvbERpYW1vbmQ6Qlosc3ltYm9sU3F1YXJlOlZaLHN5bWJvbFN0YXI6Rlosc3ltYm9sVHJpYW5nbGU6SFosc3ltYm9sV3llOktafSx2UT1NYXRoLlBJLzE4MCxnUT1mdW5jdGlvbih0KXt2YXIgbj0ic3ltYm9sIi5jb25jYXQoRnkodCkpO3JldHVybiBQVltuXXx8Vk99LGJRPWZ1bmN0aW9uKHQsbixyKXtpZihuPT09ImFyZWEiKXJldHVybiB0O3N3aXRjaChyKXtjYXNlImNyb3NzIjpyZXR1cm4gNSp0KnQvOTtjYXNlImRpYW1vbmQiOnJldHVybiAuNSp0KnQvTWF0aC5zcXJ0KDMpO2Nhc2Uic3F1YXJlIjpyZXR1cm4gdCp0O2Nhc2Uic3RhciI6e3ZhciBpPTE4KnZRO3JldHVybiAxLjI1KnQqdCooTWF0aC50YW4oaSktTWF0aC50YW4oaSoyKSpNYXRoLnBvdyhNYXRoLnRhbihpKSwyKSl9Y2FzZSJ0cmlhbmdsZSI6cmV0dXJuIE1hdGguc3FydCgzKSp0KnQvNDtjYXNlInd5ZSI6cmV0dXJuKDIxLTEwKk1hdGguc3FydCgzKSkqdCp0Lzg7ZGVmYXVsdDpyZXR1cm4gTWF0aC5QSSp0KnQvNH19LHhRPWZ1bmN0aW9uKHQsbil7UFZbInN5bWJvbCIuY29uY2F0KEZ5KHQpKV09bn0scU89ZnVuY3Rpb24odCl7dmFyIG49dC50eXBlLHI9bj09PXZvaWQgMD8iY2lyY2xlIjpuLGk9dC5zaXplLG89aT09PXZvaWQgMD82NDppLHM9dC5zaXplVHlwZSx1PXM9PT12b2lkIDA/ImFyZWEiOnMsZj1tUSh0LGZRKSxkPXFOKHFOKHt9LGYpLHt9LHt0eXBlOnIsc2l6ZTpvLHNpemVUeXBlOnV9KSxwPWZ1bmN0aW9uKCl7dmFyIGc9Z1EociksXz1XWigpLnR5cGUoZykuc2l6ZShiUShvLHUscikpO3JldHVybiBfKCl9LG09ZC5jbGFzc05hbWUseT1kLmN4LHg9ZC5jeSx3PSRlKGQsITApO3JldHVybiB5PT09K3kmJng9PT0reCYmbz09PStvP0YuY3JlYXRlRWxlbWVudCgicGF0aCIsckEoe30sdyx7Y2xhc3NOYW1lOldlKCJyZWNoYXJ0cy1zeW1ib2xzIixtKSx0cmFuc2Zvcm06InRyYW5zbGF0ZSgiLmNvbmNhdCh5LCIsICIpLmNvbmNhdCh4LCIpIiksZDpwKCl9KSk6bnVsbH07cU8ucmVnaXN0ZXJTeW1ib2w9eFE7ZnVuY3Rpb24gSmwoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gSmw9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEpsKGUpfWZ1bmN0aW9uIGlBKCl7cmV0dXJuIGlBPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0saUEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFVOKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gd1EoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/VU4oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe1JmKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlVOKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBTUShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEFRKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxSVihyLmtleSkscil9fWZ1bmN0aW9uIF9RKGUsdCxuKXtyZXR1cm4gdCYmQVEoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBPUShlLHQsbil7cmV0dXJuIHQ9aG0odCksVFEoZSxNVigpP1JlZmxlY3QuY29uc3RydWN0KHQsbnx8W10saG0oZSkuY29uc3RydWN0b3IpOnQuYXBwbHkoZSxuKSl9ZnVuY3Rpb24gVFEoZSx0KXtpZih0JiYoSmwodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gRVEoZSl9ZnVuY3Rpb24gRVEoZSl7aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIE1WKCl7dHJ5e3ZhciBlPSFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKX1jYXRjaHt9cmV0dXJuKE1WPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSkoKX1mdW5jdGlvbiBobShlKXtyZXR1cm4gaG09T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obil7cmV0dXJuIG4uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9LGhtKGUpfWZ1bmN0aW9uIENRKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmFBKGUsdCl9ZnVuY3Rpb24gYUEoZSx0KXtyZXR1cm4gYUE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxhQShlLHQpfWZ1bmN0aW9uIFJmKGUsdCxuKXtyZXR1cm4gdD1SVih0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFJWKGUpe3ZhciB0PWpRKGUsInN0cmluZyIpO3JldHVybiBKbCh0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIGpRKGUsdCl7aWYoSmwoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoSmwocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX12YXIgTHI9MzIsVU89KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gU1EodGhpcyx0KSxPUSh0aGlzLHQsYXJndW1lbnRzKX1yZXR1cm4gQ1EodCxlKSxfUSh0LFt7a2V5OiJyZW5kZXJJY29uIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgaT10aGlzLnByb3BzLmluYWN0aXZlQ29sb3Isbz1Mci8yLHM9THIvNix1PUxyLzMsZj1yLmluYWN0aXZlP2k6ci5jb2xvcjtpZihyLnR5cGU9PT0icGxhaW5saW5lIilyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJsaW5lIix7c3Ryb2tlV2lkdGg6NCxmaWxsOiJub25lIixzdHJva2U6ZixzdHJva2VEYXNoYXJyYXk6ci5wYXlsb2FkLnN0cm9rZURhc2hhcnJheSx4MTowLHkxOm8seDI6THIseTI6byxjbGFzc05hbWU6InJlY2hhcnRzLWxlZ2VuZC1pY29uIn0pO2lmKHIudHlwZT09PSJsaW5lIilyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJwYXRoIix7c3Ryb2tlV2lkdGg6NCxmaWxsOiJub25lIixzdHJva2U6ZixkOiJNMCwiLmNvbmNhdChvLCJoIikuY29uY2F0KHUsYAogICAgICAgICAgICBBYCkuY29uY2F0KHMsIiwiKS5jb25jYXQocywiLDAsMSwxLCIpLmNvbmNhdCgyKnUsIiwiKS5jb25jYXQobyxgCiAgICAgICAgICAgIEhgKS5jb25jYXQoTHIsIk0iKS5jb25jYXQoMip1LCIsIikuY29uY2F0KG8sYAogICAgICAgICAgICBBYCkuY29uY2F0KHMsIiwiKS5jb25jYXQocywiLDAsMSwxLCIpLmNvbmNhdCh1LCIsIikuY29uY2F0KG8pLGNsYXNzTmFtZToicmVjaGFydHMtbGVnZW5kLWljb24ifSk7aWYoci50eXBlPT09InJlY3QiKXJldHVybiBGLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtzdHJva2U6Im5vbmUiLGZpbGw6ZixkOiJNMCwiLmNvbmNhdChMci84LCJoIikuY29uY2F0KExyLCJ2IikuY29uY2F0KExyKjMvNCwiaCIpLmNvbmNhdCgtTHIsInoiKSxjbGFzc05hbWU6InJlY2hhcnRzLWxlZ2VuZC1pY29uIn0pO2lmKEYuaXNWYWxpZEVsZW1lbnQoci5sZWdlbmRJY29uKSl7dmFyIGQ9d1Eoe30scik7cmV0dXJuIGRlbGV0ZSBkLmxlZ2VuZEljb24sRi5jbG9uZUVsZW1lbnQoci5sZWdlbmRJY29uLGQpfXJldHVybiBGLmNyZWF0ZUVsZW1lbnQocU8se2ZpbGw6ZixjeDpvLGN5Om8sc2l6ZTpMcixzaXplVHlwZToiZGlhbWV0ZXIiLHR5cGU6ci50eXBlfSl9fSx7a2V5OiJyZW5kZXJJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLGk9dGhpcy5wcm9wcyxvPWkucGF5bG9hZCxzPWkuaWNvblNpemUsdT1pLmxheW91dCxmPWkuZm9ybWF0dGVyLGQ9aS5pbmFjdGl2ZUNvbG9yLHA9e3g6MCx5OjAsd2lkdGg6THIsaGVpZ2h0OkxyfSxtPXtkaXNwbGF5OnU9PT0iaG9yaXpvbnRhbCI/ImlubGluZS1ibG9jayI6ImJsb2NrIixtYXJnaW5SaWdodDoxMH0seT17ZGlzcGxheToiaW5saW5lLWJsb2NrIix2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLG1hcmdpblJpZ2h0OjR9O3JldHVybiBvLm1hcChmdW5jdGlvbih4LHcpe3ZhciBiPXguZm9ybWF0dGVyfHxmLGc9V2UoUmYoUmYoeyJyZWNoYXJ0cy1sZWdlbmQtaXRlbSI6ITB9LCJsZWdlbmQtaXRlbS0iLmNvbmNhdCh3KSwhMCksImluYWN0aXZlIix4LmluYWN0aXZlKSk7aWYoeC50eXBlPT09Im5vbmUiKXJldHVybiBudWxsO3ZhciBfPUhlKHgudmFsdWUpP251bGw6eC52YWx1ZTtsYSghSGUoeC52YWx1ZSksYFRoZSBuYW1lIHByb3BlcnR5IGlzIGFsc28gcmVxdWlyZWQgd2hlbiB1c2luZyBhIGZ1bmN0aW9uIGZvciB0aGUgZGF0YUtleSBvZiBhIGNoYXJ0J3MgY2FydGVzaWFuIGNvbXBvbmVudHMuIEV4OiA8QmFyIG5hbWU9Ik5hbWUgb2YgbXkgRGF0YSIvPmApO3ZhciBPPXguaW5hY3RpdmU/ZDp4LmNvbG9yO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoImxpIixpQSh7Y2xhc3NOYW1lOmcsc3R5bGU6bSxrZXk6ImxlZ2VuZC1pdGVtLSIuY29uY2F0KHcpfSxicyhyLnByb3BzLHgsdykpLEYuY3JlYXRlRWxlbWVudChaUyx7d2lkdGg6cyxoZWlnaHQ6cyx2aWV3Qm94OnAsc3R5bGU6eX0sci5yZW5kZXJJY29uKHgpKSxGLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6InJlY2hhcnRzLWxlZ2VuZC1pdGVtLXRleHQiLHN0eWxlOntjb2xvcjpPfX0sYj9iKF8seCx3KTpfKSl9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLGk9ci5wYXlsb2FkLG89ci5sYXlvdXQscz1yLmFsaWduO2lmKCFpfHwhaS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIHU9e3BhZGRpbmc6MCxtYXJnaW46MCx0ZXh0QWxpZ246bz09PSJob3Jpem9udGFsIj9zOiJsZWZ0In07cmV0dXJuIEYuY3JlYXRlRWxlbWVudCgidWwiLHtjbGFzc05hbWU6InJlY2hhcnRzLWRlZmF1bHQtbGVnZW5kIixzdHlsZTp1fSx0aGlzLnJlbmRlckl0ZW1zKCkpfX1dKX0pKEMuUHVyZUNvbXBvbmVudCk7UmYoVU8sImRpc3BsYXlOYW1lIiwiTGVnZW5kIik7UmYoVU8sImRlZmF1bHRQcm9wcyIse2ljb25TaXplOjE0LGxheW91dDoiaG9yaXpvbnRhbCIsYWxpZ246ImNlbnRlciIsdmVydGljYWxBbGlnbjoibWlkZGxlIixpbmFjdGl2ZUNvbG9yOiIjY2NjIn0pO3ZhciB4eCx6TjtmdW5jdGlvbiBQUSgpe2lmKHpOKXJldHVybiB4eDt6Tj0xO3ZhciBlPXF5KCk7ZnVuY3Rpb24gdCgpe3RoaXMuX19kYXRhX189bmV3IGUsdGhpcy5zaXplPTB9cmV0dXJuIHh4PXQseHh9dmFyIHd4LEZOO2Z1bmN0aW9uIE1RKCl7aWYoRk4pcmV0dXJuIHd4O0ZOPTE7ZnVuY3Rpb24gZSh0KXt2YXIgbj10aGlzLl9fZGF0YV9fLHI9bi5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1uLnNpemUscn1yZXR1cm4gd3g9ZSx3eH12YXIgU3gsSE47ZnVuY3Rpb24gUlEoKXtpZihITilyZXR1cm4gU3g7SE49MTtmdW5jdGlvbiBlKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX1yZXR1cm4gU3g9ZSxTeH12YXIgQXgsR047ZnVuY3Rpb24gTlEoKXtpZihHTilyZXR1cm4gQXg7R049MTtmdW5jdGlvbiBlKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX1yZXR1cm4gQXg9ZSxBeH12YXIgX3gsS047ZnVuY3Rpb24ga1EoKXtpZihLTilyZXR1cm4gX3g7S049MTt2YXIgZT1xeSgpLHQ9Uk8oKSxuPU5PKCkscj0yMDA7ZnVuY3Rpb24gaShvLHMpe3ZhciB1PXRoaXMuX19kYXRhX187aWYodSBpbnN0YW5jZW9mIGUpe3ZhciBmPXUuX19kYXRhX187aWYoIXR8fGYubGVuZ3RoPHItMSlyZXR1cm4gZi5wdXNoKFtvLHNdKSx0aGlzLnNpemU9Kyt1LnNpemUsdGhpczt1PXRoaXMuX19kYXRhX189bmV3IG4oZil9cmV0dXJuIHUuc2V0KG8scyksdGhpcy5zaXplPXUuc2l6ZSx0aGlzfXJldHVybiBfeD1pLF94fXZhciBPeCxXTjtmdW5jdGlvbiBOVigpe2lmKFdOKXJldHVybiBPeDtXTj0xO3ZhciBlPXF5KCksdD1QUSgpLG49TVEoKSxyPVJRKCksaT1OUSgpLG89a1EoKTtmdW5jdGlvbiBzKHUpe3ZhciBmPXRoaXMuX19kYXRhX189bmV3IGUodSk7dGhpcy5zaXplPWYuc2l6ZX1yZXR1cm4gcy5wcm90b3R5cGUuY2xlYXI9dCxzLnByb3RvdHlwZS5kZWxldGU9bixzLnByb3RvdHlwZS5nZXQ9cixzLnByb3RvdHlwZS5oYXM9aSxzLnByb3RvdHlwZS5zZXQ9byxPeD1zLE94fXZhciBUeCxZTjtmdW5jdGlvbiBEUSgpe2lmKFlOKXJldHVybiBUeDtZTj0xO3ZhciBlPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjtmdW5jdGlvbiB0KG4pe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldChuLGUpLHRoaXN9cmV0dXJuIFR4PXQsVHh9dmFyIEV4LFhOO2Z1bmN0aW9uIExRKCl7aWYoWE4pcmV0dXJuIEV4O1hOPTE7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9cmV0dXJuIEV4PWUsRXh9dmFyIEN4LFpOO2Z1bmN0aW9uIGtWKCl7aWYoWk4pcmV0dXJuIEN4O1pOPTE7dmFyIGU9Tk8oKSx0PURRKCksbj1MUSgpO2Z1bmN0aW9uIHIoaSl7dmFyIG89LTEscz1pPT1udWxsPzA6aS5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IGU7KytvPHM7KXRoaXMuYWRkKGlbb10pfXJldHVybiByLnByb3RvdHlwZS5hZGQ9ci5wcm90b3R5cGUucHVzaD10LHIucHJvdG90eXBlLmhhcz1uLEN4PXIsQ3h9dmFyIGp4LFFOO2Z1bmN0aW9uIERWKCl7aWYoUU4pcmV0dXJuIGp4O1FOPTE7ZnVuY3Rpb24gZSh0LG4pe2Zvcih2YXIgcj0tMSxpPXQ9PW51bGw/MDp0Lmxlbmd0aDsrK3I8aTspaWYobih0W3JdLHIsdCkpcmV0dXJuITA7cmV0dXJuITF9cmV0dXJuIGp4PWUsanh9dmFyIFB4LEpOO2Z1bmN0aW9uIExWKCl7aWYoSk4pcmV0dXJuIFB4O0pOPTE7ZnVuY3Rpb24gZSh0LG4pe3JldHVybiB0LmhhcyhuKX1yZXR1cm4gUHg9ZSxQeH12YXIgTXgsZTI7ZnVuY3Rpb24gSVYoKXtpZihlMilyZXR1cm4gTXg7ZTI9MTt2YXIgZT1rVigpLHQ9RFYoKSxuPUxWKCkscj0xLGk9MjtmdW5jdGlvbiBvKHMsdSxmLGQscCxtKXt2YXIgeT1mJnIseD1zLmxlbmd0aCx3PXUubGVuZ3RoO2lmKHghPXcmJiEoeSYmdz54KSlyZXR1cm4hMTt2YXIgYj1tLmdldChzKSxnPW0uZ2V0KHUpO2lmKGImJmcpcmV0dXJuIGI9PXUmJmc9PXM7dmFyIF89LTEsTz0hMCxFPWYmaT9uZXcgZTp2b2lkIDA7Zm9yKG0uc2V0KHMsdSksbS5zZXQodSxzKTsrK188eDspe3ZhciBqPXNbX10sVD11W19dO2lmKGQpdmFyIFA9eT9kKFQsaixfLHUscyxtKTpkKGosVCxfLHMsdSxtKTtpZihQIT09dm9pZCAwKXtpZihQKWNvbnRpbnVlO089ITE7YnJlYWt9aWYoRSl7aWYoIXQodSxmdW5jdGlvbihOLFIpe2lmKCFuKEUsUikmJihqPT09Tnx8cChqLE4sZixkLG0pKSlyZXR1cm4gRS5wdXNoKFIpfSkpe089ITE7YnJlYWt9fWVsc2UgaWYoIShqPT09VHx8cChqLFQsZixkLG0pKSl7Tz0hMTticmVha319cmV0dXJuIG0uZGVsZXRlKHMpLG0uZGVsZXRlKHUpLE99cmV0dXJuIE14PW8sTXh9dmFyIFJ4LHQyO2Z1bmN0aW9uIElRKCl7aWYodDIpcmV0dXJuIFJ4O3QyPTE7dmFyIGU9a2koKSx0PWUuVWludDhBcnJheTtyZXR1cm4gUng9dCxSeH12YXIgTngsbjI7ZnVuY3Rpb24gJFEoKXtpZihuMilyZXR1cm4gTng7bjI9MTtmdW5jdGlvbiBlKHQpe3ZhciBuPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGksbyl7clsrK25dPVtvLGldfSkscn1yZXR1cm4gTng9ZSxOeH12YXIga3gscjI7ZnVuY3Rpb24gek8oKXtpZihyMilyZXR1cm4ga3g7cjI9MTtmdW5jdGlvbiBlKHQpe3ZhciBuPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGkpe3JbKytuXT1pfSkscn1yZXR1cm4ga3g9ZSxreH12YXIgRHgsaTI7ZnVuY3Rpb24gQlEoKXtpZihpMilyZXR1cm4gRHg7aTI9MTt2YXIgZT1UZCgpLHQ9SVEoKSxuPU1PKCkscj1JVigpLGk9JFEoKSxvPXpPKCkscz0xLHU9MixmPSJbb2JqZWN0IEJvb2xlYW5dIixkPSJbb2JqZWN0IERhdGVdIixwPSJbb2JqZWN0IEVycm9yXSIsbT0iW29iamVjdCBNYXBdIix5PSJbb2JqZWN0IE51bWJlcl0iLHg9IltvYmplY3QgUmVnRXhwXSIsdz0iW29iamVjdCBTZXRdIixiPSJbb2JqZWN0IFN0cmluZ10iLGc9IltvYmplY3QgU3ltYm9sXSIsXz0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLE89IltvYmplY3QgRGF0YVZpZXddIixFPWU/ZS5wcm90b3R5cGU6dm9pZCAwLGo9RT9FLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIFQoUCxOLFIsSSxWLEIsJCl7c3dpdGNoKFIpe2Nhc2UgTzppZihQLmJ5dGVMZW5ndGghPU4uYnl0ZUxlbmd0aHx8UC5ieXRlT2Zmc2V0IT1OLmJ5dGVPZmZzZXQpcmV0dXJuITE7UD1QLmJ1ZmZlcixOPU4uYnVmZmVyO2Nhc2UgXzpyZXR1cm4hKFAuYnl0ZUxlbmd0aCE9Ti5ieXRlTGVuZ3RofHwhQihuZXcgdChQKSxuZXcgdChOKSkpO2Nhc2UgZjpjYXNlIGQ6Y2FzZSB5OnJldHVybiBuKCtQLCtOKTtjYXNlIHA6cmV0dXJuIFAubmFtZT09Ti5uYW1lJiZQLm1lc3NhZ2U9PU4ubWVzc2FnZTtjYXNlIHg6Y2FzZSBiOnJldHVybiBQPT1OKyIiO2Nhc2UgbTp2YXIgej1pO2Nhc2Ugdzp2YXIgVT1JJnM7aWYoenx8KHo9byksUC5zaXplIT1OLnNpemUmJiFVKXJldHVybiExO3ZhciBLPSQuZ2V0KFApO2lmKEspcmV0dXJuIEs9PU47SXw9dSwkLnNldChQLE4pO3ZhciBMPXIoeihQKSx6KE4pLEksVixCLCQpO3JldHVybiAkLmRlbGV0ZShQKSxMO2Nhc2UgZzppZihqKXJldHVybiBqLmNhbGwoUCk9PWouY2FsbChOKX1yZXR1cm4hMX1yZXR1cm4gRHg9VCxEeH12YXIgTHgsYTI7ZnVuY3Rpb24gJFYoKXtpZihhMilyZXR1cm4gTHg7YTI9MTtmdW5jdGlvbiBlKHQsbil7Zm9yKHZhciByPS0xLGk9bi5sZW5ndGgsbz10Lmxlbmd0aDsrK3I8aTspdFtvK3JdPW5bcl07cmV0dXJuIHR9cmV0dXJuIEx4PWUsTHh9dmFyIEl4LG8yO2Z1bmN0aW9uIFZRKCl7aWYobzIpcmV0dXJuIEl4O28yPTE7dmFyIGU9JFYoKSx0PW9yKCk7ZnVuY3Rpb24gbihyLGksbyl7dmFyIHM9aShyKTtyZXR1cm4gdChyKT9zOmUocyxvKHIpKX1yZXR1cm4gSXg9bixJeH12YXIgJHgsczI7ZnVuY3Rpb24gcVEoKXtpZihzMilyZXR1cm4gJHg7czI9MTtmdW5jdGlvbiBlKHQsbil7Zm9yKHZhciByPS0xLGk9dD09bnVsbD8wOnQubGVuZ3RoLG89MCxzPVtdOysrcjxpOyl7dmFyIHU9dFtyXTtuKHUscix0KSYmKHNbbysrXT11KX1yZXR1cm4gc31yZXR1cm4gJHg9ZSwkeH12YXIgQngsbDI7ZnVuY3Rpb24gVVEoKXtpZihsMilyZXR1cm4gQng7bDI9MTtmdW5jdGlvbiBlKCl7cmV0dXJuW119cmV0dXJuIEJ4PWUsQnh9dmFyIFZ4LHUyO2Z1bmN0aW9uIHpRKCl7aWYodTIpcmV0dXJuIFZ4O3UyPTE7dmFyIGU9cVEoKSx0PVVRKCksbj1PYmplY3QucHJvdG90eXBlLHI9bi5wcm9wZXJ0eUlzRW51bWVyYWJsZSxpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsbz1pP2Z1bmN0aW9uKHMpe3JldHVybiBzPT1udWxsP1tdOihzPU9iamVjdChzKSxlKGkocyksZnVuY3Rpb24odSl7cmV0dXJuIHIuY2FsbChzLHUpfSkpfTp0O3JldHVybiBWeD1vLFZ4fXZhciBxeCxjMjtmdW5jdGlvbiBGUSgpe2lmKGMyKXJldHVybiBxeDtjMj0xO2Z1bmN0aW9uIGUodCxuKXtmb3IodmFyIHI9LTEsaT1BcnJheSh0KTsrK3I8dDspaVtyXT1uKHIpO3JldHVybiBpfXJldHVybiBxeD1lLHF4fXZhciBVeCxmMjtmdW5jdGlvbiBIUSgpe2lmKGYyKXJldHVybiBVeDtmMj0xO3ZhciBlPXZhKCksdD1nYSgpLG49IltvYmplY3QgQXJndW1lbnRzXSI7ZnVuY3Rpb24gcihpKXtyZXR1cm4gdChpKSYmZShpKT09bn1yZXR1cm4gVXg9cixVeH12YXIgengsZDI7ZnVuY3Rpb24gRk8oKXtpZihkMilyZXR1cm4geng7ZDI9MTt2YXIgZT1IUSgpLHQ9Z2EoKSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LGk9bi5wcm9wZXJ0eUlzRW51bWVyYWJsZSxvPWUoKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30pKCkpP2U6ZnVuY3Rpb24ocyl7cmV0dXJuIHQocykmJnIuY2FsbChzLCJjYWxsZWUiKSYmIWkuY2FsbChzLCJjYWxsZWUiKX07cmV0dXJuIHp4PW8senh9dmFyIHNmPXtleHBvcnRzOnt9fSxGeCxoMjtmdW5jdGlvbiBHUSgpe2lmKGgyKXJldHVybiBGeDtoMj0xO2Z1bmN0aW9uIGUoKXtyZXR1cm4hMX1yZXR1cm4gRng9ZSxGeH1zZi5leHBvcnRzO3ZhciBwMjtmdW5jdGlvbiBCVigpe3JldHVybiBwMnx8KHAyPTEsKGZ1bmN0aW9uKGUsdCl7dmFyIG49a2koKSxyPUdRKCksaT10JiYhdC5ub2RlVHlwZSYmdCxvPWkmJiEwJiZlJiYhZS5ub2RlVHlwZSYmZSxzPW8mJm8uZXhwb3J0cz09PWksdT1zP24uQnVmZmVyOnZvaWQgMCxmPXU/dS5pc0J1ZmZlcjp2b2lkIDAsZD1mfHxyO2UuZXhwb3J0cz1kfSkoc2Ysc2YuZXhwb3J0cykpLHNmLmV4cG9ydHN9dmFyIEh4LG0yO2Z1bmN0aW9uIEhPKCl7aWYobTIpcmV0dXJuIEh4O20yPTE7dmFyIGU9OTAwNzE5OTI1NDc0MDk5MSx0PS9eKD86MHxbMS05XVxkKikkLztmdW5jdGlvbiBuKHIsaSl7dmFyIG89dHlwZW9mIHI7cmV0dXJuIGk9aT8/ZSwhIWkmJihvPT0ibnVtYmVyInx8byE9InN5bWJvbCImJnQudGVzdChyKSkmJnI+LTEmJnIlMT09MCYmcjxpfXJldHVybiBIeD1uLEh4fXZhciBHeCx5MjtmdW5jdGlvbiBHTygpe2lmKHkyKXJldHVybiBHeDt5Mj0xO3ZhciBlPTkwMDcxOTkyNTQ3NDA5OTE7ZnVuY3Rpb24gdChuKXtyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIiJiZuPi0xJiZuJTE9PTAmJm48PWV9cmV0dXJuIEd4PXQsR3h9dmFyIEt4LHYyO2Z1bmN0aW9uIEtRKCl7aWYodjIpcmV0dXJuIEt4O3YyPTE7dmFyIGU9dmEoKSx0PUdPKCksbj1nYSgpLHI9IltvYmplY3QgQXJndW1lbnRzXSIsaT0iW29iamVjdCBBcnJheV0iLG89IltvYmplY3QgQm9vbGVhbl0iLHM9IltvYmplY3QgRGF0ZV0iLHU9IltvYmplY3QgRXJyb3JdIixmPSJbb2JqZWN0IEZ1bmN0aW9uXSIsZD0iW29iamVjdCBNYXBdIixwPSJbb2JqZWN0IE51bWJlcl0iLG09IltvYmplY3QgT2JqZWN0XSIseT0iW29iamVjdCBSZWdFeHBdIix4PSJbb2JqZWN0IFNldF0iLHc9IltvYmplY3QgU3RyaW5nXSIsYj0iW29iamVjdCBXZWFrTWFwXSIsZz0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLF89IltvYmplY3QgRGF0YVZpZXddIixPPSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLEU9IltvYmplY3QgRmxvYXQ2NEFycmF5XSIsaj0iW29iamVjdCBJbnQ4QXJyYXldIixUPSJbb2JqZWN0IEludDE2QXJyYXldIixQPSJbb2JqZWN0IEludDMyQXJyYXldIixOPSJbb2JqZWN0IFVpbnQ4QXJyYXldIixSPSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsST0iW29iamVjdCBVaW50MTZBcnJheV0iLFY9IltvYmplY3QgVWludDMyQXJyYXldIixCPXt9O0JbT109QltFXT1CW2pdPUJbVF09QltQXT1CW05dPUJbUl09QltJXT1CW1ZdPSEwLEJbcl09QltpXT1CW2ddPUJbb109QltfXT1CW3NdPUJbdV09QltmXT1CW2RdPUJbcF09QlttXT1CW3ldPUJbeF09Qlt3XT1CW2JdPSExO2Z1bmN0aW9uICQoeil7cmV0dXJuIG4oeikmJnQoei5sZW5ndGgpJiYhIUJbZSh6KV19cmV0dXJuIEt4PSQsS3h9dmFyIFd4LGcyO2Z1bmN0aW9uIFZWKCl7aWYoZzIpcmV0dXJuIFd4O2cyPTE7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQobil9fXJldHVybiBXeD1lLFd4fXZhciBsZj17ZXhwb3J0czp7fX07bGYuZXhwb3J0czt2YXIgYjI7ZnVuY3Rpb24gV1EoKXtyZXR1cm4gYjJ8fChiMj0xLChmdW5jdGlvbihlLHQpe3ZhciBuPWFWKCkscj10JiYhdC5ub2RlVHlwZSYmdCxpPXImJiEwJiZlJiYhZS5ub2RlVHlwZSYmZSxvPWkmJmkuZXhwb3J0cz09PXIscz1vJiZuLnByb2Nlc3MsdT0oZnVuY3Rpb24oKXt0cnl7dmFyIGY9aSYmaS5yZXF1aXJlJiZpLnJlcXVpcmUoInV0aWwiKS50eXBlcztyZXR1cm4gZnx8cyYmcy5iaW5kaW5nJiZzLmJpbmRpbmcoInV0aWwiKX1jYXRjaHt9fSkoKTtlLmV4cG9ydHM9dX0pKGxmLGxmLmV4cG9ydHMpKSxsZi5leHBvcnRzfXZhciBZeCx4MjtmdW5jdGlvbiBxVigpe2lmKHgyKXJldHVybiBZeDt4Mj0xO3ZhciBlPUtRKCksdD1WVigpLG49V1EoKSxyPW4mJm4uaXNUeXBlZEFycmF5LGk9cj90KHIpOmU7cmV0dXJuIFl4PWksWXh9dmFyIFh4LHcyO2Z1bmN0aW9uIFlRKCl7aWYodzIpcmV0dXJuIFh4O3cyPTE7dmFyIGU9RlEoKSx0PUZPKCksbj1vcigpLHI9QlYoKSxpPUhPKCksbz1xVigpLHM9T2JqZWN0LnByb3RvdHlwZSx1PXMuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gZihkLHApe3ZhciBtPW4oZCkseT0hbSYmdChkKSx4PSFtJiYheSYmcihkKSx3PSFtJiYheSYmIXgmJm8oZCksYj1tfHx5fHx4fHx3LGc9Yj9lKGQubGVuZ3RoLFN0cmluZyk6W10sXz1nLmxlbmd0aDtmb3IodmFyIE8gaW4gZCkocHx8dS5jYWxsKGQsTykpJiYhKGImJihPPT0ibGVuZ3RoInx8eCYmKE89PSJvZmZzZXQifHxPPT0icGFyZW50Iil8fHcmJihPPT0iYnVmZmVyInx8Tz09ImJ5dGVMZW5ndGgifHxPPT0iYnl0ZU9mZnNldCIpfHxpKE8sXykpKSYmZy5wdXNoKE8pO3JldHVybiBnfXJldHVybiBYeD1mLFh4fXZhciBaeCxTMjtmdW5jdGlvbiBYUSgpe2lmKFMyKXJldHVybiBaeDtTMj0xO3ZhciBlPU9iamVjdC5wcm90b3R5cGU7ZnVuY3Rpb24gdChuKXt2YXIgcj1uJiZuLmNvbnN0cnVjdG9yLGk9dHlwZW9mIHI9PSJmdW5jdGlvbiImJnIucHJvdG90eXBlfHxlO3JldHVybiBuPT09aX1yZXR1cm4gWng9dCxaeH12YXIgUXgsQTI7ZnVuY3Rpb24gVVYoKXtpZihBMilyZXR1cm4gUXg7QTI9MTtmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KG4ocikpfX1yZXR1cm4gUXg9ZSxReH12YXIgSngsXzI7ZnVuY3Rpb24gWlEoKXtpZihfMilyZXR1cm4gSng7XzI9MTt2YXIgZT1VVigpLHQ9ZShPYmplY3Qua2V5cyxPYmplY3QpO3JldHVybiBKeD10LEp4fXZhciBldyxPMjtmdW5jdGlvbiBRUSgpe2lmKE8yKXJldHVybiBldztPMj0xO3ZhciBlPVhRKCksdD1aUSgpLG49T2JqZWN0LnByb3RvdHlwZSxyPW4uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gaShvKXtpZighZShvKSlyZXR1cm4gdChvKTt2YXIgcz1bXTtmb3IodmFyIHUgaW4gT2JqZWN0KG8pKXIuY2FsbChvLHUpJiZ1IT0iY29uc3RydWN0b3IiJiZzLnB1c2godSk7cmV0dXJuIHN9cmV0dXJuIGV3PWksZXd9dmFyIHR3LFQyO2Z1bmN0aW9uIEVkKCl7aWYoVDIpcmV0dXJuIHR3O1QyPTE7dmFyIGU9UE8oKSx0PUdPKCk7ZnVuY3Rpb24gbihyKXtyZXR1cm4gciE9bnVsbCYmdChyLmxlbmd0aCkmJiFlKHIpfXJldHVybiB0dz1uLHR3fXZhciBudyxFMjtmdW5jdGlvbiBXeSgpe2lmKEUyKXJldHVybiBudztFMj0xO3ZhciBlPVlRKCksdD1RUSgpLG49RWQoKTtmdW5jdGlvbiByKGkpe3JldHVybiBuKGkpP2UoaSk6dChpKX1yZXR1cm4gbnc9cixud312YXIgcncsQzI7ZnVuY3Rpb24gSlEoKXtpZihDMilyZXR1cm4gcnc7QzI9MTt2YXIgZT1WUSgpLHQ9elEoKSxuPVd5KCk7ZnVuY3Rpb24gcihpKXtyZXR1cm4gZShpLG4sdCl9cmV0dXJuIHJ3PXIscnd9dmFyIGl3LGoyO2Z1bmN0aW9uIGVKKCl7aWYoajIpcmV0dXJuIGl3O2oyPTE7dmFyIGU9SlEoKSx0PTEsbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBpKG8scyx1LGYsZCxwKXt2YXIgbT11JnQseT1lKG8pLHg9eS5sZW5ndGgsdz1lKHMpLGI9dy5sZW5ndGg7aWYoeCE9YiYmIW0pcmV0dXJuITE7Zm9yKHZhciBnPXg7Zy0tOyl7dmFyIF89eVtnXTtpZighKG0/XyBpbiBzOnIuY2FsbChzLF8pKSlyZXR1cm4hMX12YXIgTz1wLmdldChvKSxFPXAuZ2V0KHMpO2lmKE8mJkUpcmV0dXJuIE89PXMmJkU9PW87dmFyIGo9ITA7cC5zZXQobyxzKSxwLnNldChzLG8pO2Zvcih2YXIgVD1tOysrZzx4Oyl7Xz15W2ddO3ZhciBQPW9bX10sTj1zW19dO2lmKGYpdmFyIFI9bT9mKE4sUCxfLHMsbyxwKTpmKFAsTixfLG8scyxwKTtpZighKFI9PT12b2lkIDA/UD09PU58fGQoUCxOLHUsZixwKTpSKSl7aj0hMTticmVha31UfHwoVD1fPT0iY29uc3RydWN0b3IiKX1pZihqJiYhVCl7dmFyIEk9by5jb25zdHJ1Y3RvcixWPXMuY29uc3RydWN0b3I7SSE9ViYmImNvbnN0cnVjdG9yImluIG8mJiJjb25zdHJ1Y3RvciJpbiBzJiYhKHR5cGVvZiBJPT0iZnVuY3Rpb24iJiZJIGluc3RhbmNlb2YgSSYmdHlwZW9mIFY9PSJmdW5jdGlvbiImJlYgaW5zdGFuY2VvZiBWKSYmKGo9ITEpfXJldHVybiBwLmRlbGV0ZShvKSxwLmRlbGV0ZShzKSxqfXJldHVybiBpdz1pLGl3fXZhciBhdyxQMjtmdW5jdGlvbiB0Sigpe2lmKFAyKXJldHVybiBhdztQMj0xO3ZhciBlPUVzKCksdD1raSgpLG49ZSh0LCJEYXRhVmlldyIpO3JldHVybiBhdz1uLGF3fXZhciBvdyxNMjtmdW5jdGlvbiBuSigpe2lmKE0yKXJldHVybiBvdztNMj0xO3ZhciBlPUVzKCksdD1raSgpLG49ZSh0LCJQcm9taXNlIik7cmV0dXJuIG93PW4sb3d9dmFyIHN3LFIyO2Z1bmN0aW9uIHpWKCl7aWYoUjIpcmV0dXJuIHN3O1IyPTE7dmFyIGU9RXMoKSx0PWtpKCksbj1lKHQsIlNldCIpO3JldHVybiBzdz1uLHN3fXZhciBsdyxOMjtmdW5jdGlvbiBySigpe2lmKE4yKXJldHVybiBsdztOMj0xO3ZhciBlPUVzKCksdD1raSgpLG49ZSh0LCJXZWFrTWFwIik7cmV0dXJuIGx3PW4sbHd9dmFyIHV3LGsyO2Z1bmN0aW9uIGlKKCl7aWYoazIpcmV0dXJuIHV3O2syPTE7dmFyIGU9dEooKSx0PVJPKCksbj1uSigpLHI9elYoKSxpPXJKKCksbz12YSgpLHM9b1YoKSx1PSJbb2JqZWN0IE1hcF0iLGY9IltvYmplY3QgT2JqZWN0XSIsZD0iW29iamVjdCBQcm9taXNlXSIscD0iW29iamVjdCBTZXRdIixtPSJbb2JqZWN0IFdlYWtNYXBdIix5PSJbb2JqZWN0IERhdGFWaWV3XSIseD1zKGUpLHc9cyh0KSxiPXMobiksZz1zKHIpLF89cyhpKSxPPW87cmV0dXJuKGUmJk8obmV3IGUobmV3IEFycmF5QnVmZmVyKDEpKSkhPXl8fHQmJk8obmV3IHQpIT11fHxuJiZPKG4ucmVzb2x2ZSgpKSE9ZHx8ciYmTyhuZXcgcikhPXB8fGkmJk8obmV3IGkpIT1tKSYmKE89ZnVuY3Rpb24oRSl7dmFyIGo9byhFKSxUPWo9PWY/RS5jb25zdHJ1Y3Rvcjp2b2lkIDAsUD1UP3MoVCk6IiI7aWYoUClzd2l0Y2goUCl7Y2FzZSB4OnJldHVybiB5O2Nhc2UgdzpyZXR1cm4gdTtjYXNlIGI6cmV0dXJuIGQ7Y2FzZSBnOnJldHVybiBwO2Nhc2UgXzpyZXR1cm4gbX1yZXR1cm4gan0pLHV3PU8sdXd9dmFyIGN3LEQyO2Z1bmN0aW9uIGFKKCl7aWYoRDIpcmV0dXJuIGN3O0QyPTE7dmFyIGU9TlYoKSx0PUlWKCksbj1CUSgpLHI9ZUooKSxpPWlKKCksbz1vcigpLHM9QlYoKSx1PXFWKCksZj0xLGQ9IltvYmplY3QgQXJndW1lbnRzXSIscD0iW29iamVjdCBBcnJheV0iLG09IltvYmplY3QgT2JqZWN0XSIseT1PYmplY3QucHJvdG90eXBlLHg9eS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiB3KGIsZyxfLE8sRSxqKXt2YXIgVD1vKGIpLFA9byhnKSxOPVQ/cDppKGIpLFI9UD9wOmkoZyk7Tj1OPT1kP206TixSPVI9PWQ/bTpSO3ZhciBJPU49PW0sVj1SPT1tLEI9Tj09UjtpZihCJiZzKGIpKXtpZighcyhnKSlyZXR1cm4hMTtUPSEwLEk9ITF9aWYoQiYmIUkpcmV0dXJuIGp8fChqPW5ldyBlKSxUfHx1KGIpP3QoYixnLF8sTyxFLGopOm4oYixnLE4sXyxPLEUsaik7aWYoIShfJmYpKXt2YXIgJD1JJiZ4LmNhbGwoYiwiX193cmFwcGVkX18iKSx6PVYmJnguY2FsbChnLCJfX3dyYXBwZWRfXyIpO2lmKCR8fHope3ZhciBVPSQ/Yi52YWx1ZSgpOmIsSz16P2cudmFsdWUoKTpnO3JldHVybiBqfHwoaj1uZXcgZSksRShVLEssXyxPLGopfX1yZXR1cm4gQj8oanx8KGo9bmV3IGUpLHIoYixnLF8sTyxFLGopKTohMX1yZXR1cm4gY3c9dyxjd312YXIgZncsTDI7ZnVuY3Rpb24gS08oKXtpZihMMilyZXR1cm4gZnc7TDI9MTt2YXIgZT1hSigpLHQ9Z2EoKTtmdW5jdGlvbiBuKHIsaSxvLHMsdSl7cmV0dXJuIHI9PT1pPyEwOnI9PW51bGx8fGk9PW51bGx8fCF0KHIpJiYhdChpKT9yIT09ciYmaSE9PWk6ZShyLGksbyxzLG4sdSl9cmV0dXJuIGZ3PW4sZnd9dmFyIGR3LEkyO2Z1bmN0aW9uIG9KKCl7aWYoSTIpcmV0dXJuIGR3O0kyPTE7dmFyIGU9TlYoKSx0PUtPKCksbj0xLHI9MjtmdW5jdGlvbiBpKG8scyx1LGYpe3ZhciBkPXUubGVuZ3RoLHA9ZCxtPSFmO2lmKG89PW51bGwpcmV0dXJuIXA7Zm9yKG89T2JqZWN0KG8pO2QtLTspe3ZhciB5PXVbZF07aWYobSYmeVsyXT95WzFdIT09b1t5WzBdXTohKHlbMF1pbiBvKSlyZXR1cm4hMX1mb3IoOysrZDxwOyl7eT11W2RdO3ZhciB4PXlbMF0sdz1vW3hdLGI9eVsxXTtpZihtJiZ5WzJdKXtpZih3PT09dm9pZCAwJiYhKHggaW4gbykpcmV0dXJuITF9ZWxzZXt2YXIgZz1uZXcgZTtpZihmKXZhciBfPWYodyxiLHgsbyxzLGcpO2lmKCEoXz09PXZvaWQgMD90KGIsdyxufHIsZixnKTpfKSlyZXR1cm4hMX19cmV0dXJuITB9cmV0dXJuIGR3PWksZHd9dmFyIGh3LCQyO2Z1bmN0aW9uIEZWKCl7aWYoJDIpcmV0dXJuIGh3OyQyPTE7dmFyIGU9Z28oKTtmdW5jdGlvbiB0KG4pe3JldHVybiBuPT09biYmIWUobil9cmV0dXJuIGh3PXQsaHd9dmFyIHB3LEIyO2Z1bmN0aW9uIHNKKCl7aWYoQjIpcmV0dXJuIHB3O0IyPTE7dmFyIGU9RlYoKSx0PVd5KCk7ZnVuY3Rpb24gbihyKXtmb3IodmFyIGk9dChyKSxvPWkubGVuZ3RoO28tLTspe3ZhciBzPWlbb10sdT1yW3NdO2lbb109W3MsdSxlKHUpXX1yZXR1cm4gaX1yZXR1cm4gcHc9bixwd312YXIgbXcsVjI7ZnVuY3Rpb24gSFYoKXtpZihWMilyZXR1cm4gbXc7VjI9MTtmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsPyExOnJbdF09PT1uJiYobiE9PXZvaWQgMHx8dCBpbiBPYmplY3QocikpfX1yZXR1cm4gbXc9ZSxtd312YXIgeXcscTI7ZnVuY3Rpb24gbEooKXtpZihxMilyZXR1cm4geXc7cTI9MTt2YXIgZT1vSigpLHQ9c0ooKSxuPUhWKCk7ZnVuY3Rpb24gcihpKXt2YXIgbz10KGkpO3JldHVybiBvLmxlbmd0aD09MSYmb1swXVsyXT9uKG9bMF1bMF0sb1swXVsxXSk6ZnVuY3Rpb24ocyl7cmV0dXJuIHM9PT1pfHxlKHMsaSxvKX19cmV0dXJuIHl3PXIseXd9dmFyIHZ3LFUyO2Z1bmN0aW9uIHVKKCl7aWYoVTIpcmV0dXJuIHZ3O1UyPTE7ZnVuY3Rpb24gZSh0LG4pe3JldHVybiB0IT1udWxsJiZuIGluIE9iamVjdCh0KX1yZXR1cm4gdnc9ZSx2d312YXIgZ3csejI7ZnVuY3Rpb24gY0ooKXtpZih6MilyZXR1cm4gZ3c7ejI9MTt2YXIgZT11VigpLHQ9Rk8oKSxuPW9yKCkscj1ITygpLGk9R08oKSxvPXp5KCk7ZnVuY3Rpb24gcyh1LGYsZCl7Zj1lKGYsdSk7Zm9yKHZhciBwPS0xLG09Zi5sZW5ndGgseT0hMTsrK3A8bTspe3ZhciB4PW8oZltwXSk7aWYoISh5PXUhPW51bGwmJmQodSx4KSkpYnJlYWs7dT11W3hdfXJldHVybiB5fHwrK3AhPW0/eToobT11PT1udWxsPzA6dS5sZW5ndGgsISFtJiZpKG0pJiZyKHgsbSkmJihuKHUpfHx0KHUpKSl9cmV0dXJuIGd3PXMsZ3d9dmFyIGJ3LEYyO2Z1bmN0aW9uIGZKKCl7aWYoRjIpcmV0dXJuIGJ3O0YyPTE7dmFyIGU9dUooKSx0PWNKKCk7ZnVuY3Rpb24gbihyLGkpe3JldHVybiByIT1udWxsJiZ0KHIsaSxlKX1yZXR1cm4gYnc9bixid312YXIgeHcsSDI7ZnVuY3Rpb24gZEooKXtpZihIMilyZXR1cm4geHc7SDI9MTt2YXIgZT1LTygpLHQ9Y1YoKSxuPWZKKCkscj1qTygpLGk9RlYoKSxvPUhWKCkscz16eSgpLHU9MSxmPTI7ZnVuY3Rpb24gZChwLG0pe3JldHVybiByKHApJiZpKG0pP28ocyhwKSxtKTpmdW5jdGlvbih5KXt2YXIgeD10KHkscCk7cmV0dXJuIHg9PT12b2lkIDAmJng9PT1tP24oeSxwKTplKG0seCx1fGYpfX1yZXR1cm4geHc9ZCx4d312YXIgd3csRzI7ZnVuY3Rpb24gJHUoKXtpZihHMilyZXR1cm4gd3c7RzI9MTtmdW5jdGlvbiBlKHQpe3JldHVybiB0fXJldHVybiB3dz1lLHd3fXZhciBTdyxLMjtmdW5jdGlvbiBoSigpe2lmKEsyKXJldHVybiBTdztLMj0xO2Z1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuPy5bdF19fXJldHVybiBTdz1lLFN3fXZhciBBdyxXMjtmdW5jdGlvbiBwSigpe2lmKFcyKXJldHVybiBBdztXMj0xO3ZhciBlPURPKCk7ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUocixuKX19cmV0dXJuIEF3PXQsQXd9dmFyIF93LFkyO2Z1bmN0aW9uIG1KKCl7aWYoWTIpcmV0dXJuIF93O1kyPTE7dmFyIGU9aEooKSx0PXBKKCksbj1qTygpLHI9enkoKTtmdW5jdGlvbiBpKG8pe3JldHVybiBuKG8pP2UocihvKSk6dChvKX1yZXR1cm4gX3c9aSxfd312YXIgT3csWDI7ZnVuY3Rpb24gRGkoKXtpZihYMilyZXR1cm4gT3c7WDI9MTt2YXIgZT1sSigpLHQ9ZEooKSxuPSR1KCkscj1vcigpLGk9bUooKTtmdW5jdGlvbiBvKHMpe3JldHVybiB0eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOnM9PW51bGw/bjp0eXBlb2Ygcz09Im9iamVjdCI/cihzKT90KHNbMF0sc1sxXSk6ZShzKTppKHMpfXJldHVybiBPdz1vLE93fXZhciBUdyxaMjtmdW5jdGlvbiBHVigpe2lmKFoyKXJldHVybiBUdztaMj0xO2Z1bmN0aW9uIGUodCxuLHIsaSl7Zm9yKHZhciBvPXQubGVuZ3RoLHM9cisoaT8xOi0xKTtpP3MtLTorK3M8bzspaWYobih0W3NdLHMsdCkpcmV0dXJuIHM7cmV0dXJuLTF9cmV0dXJuIFR3PWUsVHd9dmFyIEV3LFEyO2Z1bmN0aW9uIHlKKCl7aWYoUTIpcmV0dXJuIEV3O1EyPTE7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCE9PXR9cmV0dXJuIEV3PWUsRXd9dmFyIEN3LEoyO2Z1bmN0aW9uIHZKKCl7aWYoSjIpcmV0dXJuIEN3O0oyPTE7ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHZhciBpPXItMSxvPXQubGVuZ3RoOysraTxvOylpZih0W2ldPT09bilyZXR1cm4gaTtyZXR1cm4tMX1yZXR1cm4gQ3c9ZSxDd312YXIgancsZWs7ZnVuY3Rpb24gZ0ooKXtpZihlaylyZXR1cm4ganc7ZWs9MTt2YXIgZT1HVigpLHQ9eUooKSxuPXZKKCk7ZnVuY3Rpb24gcihpLG8scyl7cmV0dXJuIG89PT1vP24oaSxvLHMpOmUoaSx0LHMpfXJldHVybiBqdz1yLGp3fXZhciBQdyx0aztmdW5jdGlvbiBiSigpe2lmKHRrKXJldHVybiBQdzt0az0xO3ZhciBlPWdKKCk7ZnVuY3Rpb24gdChuLHIpe3ZhciBpPW49PW51bGw/MDpuLmxlbmd0aDtyZXR1cm4hIWkmJmUobixyLDApPi0xfXJldHVybiBQdz10LFB3fXZhciBNdyxuaztmdW5jdGlvbiB4Sigpe2lmKG5rKXJldHVybiBNdztuaz0xO2Z1bmN0aW9uIGUodCxuLHIpe2Zvcih2YXIgaT0tMSxvPXQ9PW51bGw/MDp0Lmxlbmd0aDsrK2k8bzspaWYocihuLHRbaV0pKXJldHVybiEwO3JldHVybiExfXJldHVybiBNdz1lLE13fXZhciBSdyxyaztmdW5jdGlvbiB3Sigpe2lmKHJrKXJldHVybiBSdztyaz0xO2Z1bmN0aW9uIGUoKXt9cmV0dXJuIFJ3PWUsUnd9dmFyIE53LGlrO2Z1bmN0aW9uIFNKKCl7aWYoaWspcmV0dXJuIE53O2lrPTE7dmFyIGU9elYoKSx0PXdKKCksbj16TygpLHI9MS8wLGk9ZSYmMS9uKG5ldyBlKFssLTBdKSlbMV09PXI/ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyBlKG8pfTp0O3JldHVybiBOdz1pLE53fXZhciBrdyxhaztmdW5jdGlvbiBBSigpe2lmKGFrKXJldHVybiBrdzthaz0xO3ZhciBlPWtWKCksdD1iSigpLG49eEooKSxyPUxWKCksaT1TSigpLG89ek8oKSxzPTIwMDtmdW5jdGlvbiB1KGYsZCxwKXt2YXIgbT0tMSx5PXQseD1mLmxlbmd0aCx3PSEwLGI9W10sZz1iO2lmKHApdz0hMSx5PW47ZWxzZSBpZih4Pj1zKXt2YXIgXz1kP251bGw6aShmKTtpZihfKXJldHVybiBvKF8pO3c9ITEseT1yLGc9bmV3IGV9ZWxzZSBnPWQ/W106YjtlOmZvcig7KyttPHg7KXt2YXIgTz1mW21dLEU9ZD9kKE8pOk87aWYoTz1wfHxPIT09MD9POjAsdyYmRT09PUUpe2Zvcih2YXIgaj1nLmxlbmd0aDtqLS07KWlmKGdbal09PT1FKWNvbnRpbnVlIGU7ZCYmZy5wdXNoKEUpLGIucHVzaChPKX1lbHNlIHkoZyxFLHApfHwoZyE9PWImJmcucHVzaChFKSxiLnB1c2goTykpfXJldHVybiBifXJldHVybiBrdz11LGt3fXZhciBEdyxvaztmdW5jdGlvbiBfSigpe2lmKG9rKXJldHVybiBEdztvaz0xO3ZhciBlPURpKCksdD1BSigpO2Z1bmN0aW9uIG4ocixpKXtyZXR1cm4gciYmci5sZW5ndGg/dChyLGUoaSwyKSk6W119cmV0dXJuIER3PW4sRHd9dmFyIE9KPV9KKCk7Y29uc3Qgc2s9T3QoT0opO2Z1bmN0aW9uIEtWKGUsdCxuKXtyZXR1cm4gdD09PSEwP3NrKGUsbik6SGUodCk/c2soZSx0KTplfWZ1bmN0aW9uIGV1KGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIGV1PXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxldShlKX12YXIgVEo9WyJyZWYiXTtmdW5jdGlvbiBsayhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGVhKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP2xrKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtZeShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpsayhPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gRUooZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB1ayhlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsWVYoci5rZXkpLHIpfX1mdW5jdGlvbiBDSihlLHQsbil7cmV0dXJuIHQmJnVrKGUucHJvdG90eXBlLHQpLG4mJnVrKGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBqSihlLHQsbil7cmV0dXJuIHQ9cG0odCksUEooZSxXVigpP1JlZmxlY3QuY29uc3RydWN0KHQsbnx8W10scG0oZSkuY29uc3RydWN0b3IpOnQuYXBwbHkoZSxuKSl9ZnVuY3Rpb24gUEooZSx0KXtpZih0JiYoZXUodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gTUooZSl9ZnVuY3Rpb24gTUooZSl7aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIFdWKCl7dHJ5e3ZhciBlPSFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKX1jYXRjaHt9cmV0dXJuKFdWPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSkoKX1mdW5jdGlvbiBwbShlKXtyZXR1cm4gcG09T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obil7cmV0dXJuIG4uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9LHBtKGUpfWZ1bmN0aW9uIFJKKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJm9BKGUsdCl9ZnVuY3Rpb24gb0EoZSx0KXtyZXR1cm4gb0E9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxvQShlLHQpfWZ1bmN0aW9uIFl5KGUsdCxuKXtyZXR1cm4gdD1ZVih0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFlWKGUpe3ZhciB0PU5KKGUsInN0cmluZyIpO3JldHVybiBldSh0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIE5KKGUsdCl7aWYoZXUoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoZXUocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX1mdW5jdGlvbiBrSihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49REooZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBESihlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpe2lmKHQuaW5kZXhPZihyKT49MCljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59ZnVuY3Rpb24gTEooZSl7cmV0dXJuIGUudmFsdWV9ZnVuY3Rpb24gSUooZSx0KXtpZihGLmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiBGLmNsb25lRWxlbWVudChlLHQpO2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXJldHVybiBGLmNyZWF0ZUVsZW1lbnQoZSx0KTt0LnJlZjt2YXIgbj1rSih0LFRKKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KFVPLG4pfXZhciBjaz0xLFVsPShmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIG47RUoodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShyKSxvPTA7bzxyO28rKylpW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gbj1qSih0aGlzLHQsW10uY29uY2F0KGkpKSxZeShuLCJsYXN0Qm91bmRpbmdCb3giLHt3aWR0aDotMSxoZWlnaHQ6LTF9KSxufXJldHVybiBSSih0LGUpLENKKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudXBkYXRlQkJveCgpfX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudXBkYXRlQkJveCgpfX0se2tleToiZ2V0QkJveCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLndyYXBwZXJOb2RlJiZ0aGlzLndyYXBwZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7dmFyIHI9dGhpcy53cmFwcGVyTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gci5oZWlnaHQ9dGhpcy53cmFwcGVyTm9kZS5vZmZzZXRIZWlnaHQsci53aWR0aD10aGlzLndyYXBwZXJOb2RlLm9mZnNldFdpZHRoLHJ9cmV0dXJuIG51bGx9fSx7a2V5OiJ1cGRhdGVCQm94Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMucHJvcHMub25CQm94VXBkYXRlLGk9dGhpcy5nZXRCQm94KCk7aT8oTWF0aC5hYnMoaS53aWR0aC10aGlzLmxhc3RCb3VuZGluZ0JveC53aWR0aCk+Y2t8fE1hdGguYWJzKGkuaGVpZ2h0LXRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCk+Y2spJiYodGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGg9aS53aWR0aCx0aGlzLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQ9aS5oZWlnaHQsciYmcihpKSk6KHRoaXMubGFzdEJvdW5kaW5nQm94LndpZHRoIT09LTF8fHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCE9PS0xKSYmKHRoaXMubGFzdEJvdW5kaW5nQm94LndpZHRoPS0xLHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodD0tMSxyJiZyKG51bGwpKX19LHtrZXk6ImdldEJCb3hTbmFwc2hvdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGg+PTAmJnRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodD49MD9lYSh7fSx0aGlzLmxhc3RCb3VuZGluZ0JveCk6e3dpZHRoOjAsaGVpZ2h0OjB9fX0se2tleToiZ2V0RGVmYXVsdFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgaT10aGlzLnByb3BzLG89aS5sYXlvdXQscz1pLmFsaWduLHU9aS52ZXJ0aWNhbEFsaWduLGY9aS5tYXJnaW4sZD1pLmNoYXJ0V2lkdGgscD1pLmNoYXJ0SGVpZ2h0LG0seTtpZighcnx8KHIubGVmdD09PXZvaWQgMHx8ci5sZWZ0PT09bnVsbCkmJihyLnJpZ2h0PT09dm9pZCAwfHxyLnJpZ2h0PT09bnVsbCkpaWYocz09PSJjZW50ZXIiJiZvPT09InZlcnRpY2FsIil7dmFyIHg9dGhpcy5nZXRCQm94U25hcHNob3QoKTttPXtsZWZ0OigoZHx8MCkteC53aWR0aCkvMn19ZWxzZSBtPXM9PT0icmlnaHQiP3tyaWdodDpmJiZmLnJpZ2h0fHwwfTp7bGVmdDpmJiZmLmxlZnR8fDB9O2lmKCFyfHwoci50b3A9PT12b2lkIDB8fHIudG9wPT09bnVsbCkmJihyLmJvdHRvbT09PXZvaWQgMHx8ci5ib3R0b209PT1udWxsKSlpZih1PT09Im1pZGRsZSIpe3ZhciB3PXRoaXMuZ2V0QkJveFNuYXBzaG90KCk7eT17dG9wOigocHx8MCktdy5oZWlnaHQpLzJ9fWVsc2UgeT11PT09ImJvdHRvbSI/e2JvdHRvbTpmJiZmLmJvdHRvbXx8MH06e3RvcDpmJiZmLnRvcHx8MH07cmV0dXJuIGVhKGVhKHt9LG0pLHkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMsaT10aGlzLnByb3BzLG89aS5jb250ZW50LHM9aS53aWR0aCx1PWkuaGVpZ2h0LGY9aS53cmFwcGVyU3R5bGUsZD1pLnBheWxvYWRVbmlxQnkscD1pLnBheWxvYWQsbT1lYShlYSh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDpzfHwiYXV0byIsaGVpZ2h0OnV8fCJhdXRvIn0sdGhpcy5nZXREZWZhdWx0UG9zaXRpb24oZikpLGYpO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicmVjaGFydHMtbGVnZW5kLXdyYXBwZXIiLHN0eWxlOm0scmVmOmZ1bmN0aW9uKHgpe3Iud3JhcHBlck5vZGU9eH19LElKKG8sZWEoZWEoe30sdGhpcy5wcm9wcykse30se3BheWxvYWQ6S1YocCxkLExKKX0pKSl9fV0sW3trZXk6ImdldFdpdGhIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKHIsaSl7dmFyIG89ZWEoZWEoe30sdGhpcy5kZWZhdWx0UHJvcHMpLHIucHJvcHMpLHM9by5sYXlvdXQ7cmV0dXJuIHM9PT0idmVydGljYWwiJiZ2ZShyLnByb3BzLmhlaWdodCk/e2hlaWdodDpyLnByb3BzLmhlaWdodH06cz09PSJob3Jpem9udGFsIj97d2lkdGg6ci5wcm9wcy53aWR0aHx8aX06bnVsbH19XSl9KShDLlB1cmVDb21wb25lbnQpO1l5KFVsLCJkaXNwbGF5TmFtZSIsIkxlZ2VuZCIpO1l5KFVsLCJkZWZhdWx0UHJvcHMiLHtpY29uU2l6ZToxNCxsYXlvdXQ6Imhvcml6b250YWwiLGFsaWduOiJjZW50ZXIiLHZlcnRpY2FsQWxpZ246ImJvdHRvbSJ9KTt2YXIgTHcsZms7ZnVuY3Rpb24gJEooKXtpZihmaylyZXR1cm4gTHc7Zms9MTt2YXIgZT1UZCgpLHQ9Rk8oKSxuPW9yKCkscj1lP2UuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtmdW5jdGlvbiBpKG8pe3JldHVybiBuKG8pfHx0KG8pfHwhIShyJiZvJiZvW3JdKX1yZXR1cm4gTHc9aSxMd312YXIgSXcsZGs7ZnVuY3Rpb24gWFYoKXtpZihkaylyZXR1cm4gSXc7ZGs9MTt2YXIgZT0kVigpLHQ9JEooKTtmdW5jdGlvbiBuKHIsaSxvLHMsdSl7dmFyIGY9LTEsZD1yLmxlbmd0aDtmb3Iob3x8KG89dCksdXx8KHU9W10pOysrZjxkOyl7dmFyIHA9cltmXTtpPjAmJm8ocCk/aT4xP24ocCxpLTEsbyxzLHUpOmUodSxwKTpzfHwodVt1Lmxlbmd0aF09cCl9cmV0dXJuIHV9cmV0dXJuIEl3PW4sSXd9dmFyICR3LGhrO2Z1bmN0aW9uIEJKKCl7aWYoaGspcmV0dXJuICR3O2hrPTE7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24obixyLGkpe2Zvcih2YXIgbz0tMSxzPU9iamVjdChuKSx1PWkobiksZj11Lmxlbmd0aDtmLS07KXt2YXIgZD11W3Q/ZjorK29dO2lmKHIoc1tkXSxkLHMpPT09ITEpYnJlYWt9cmV0dXJuIG59fXJldHVybiAkdz1lLCR3fXZhciBCdyxwaztmdW5jdGlvbiBWSigpe2lmKHBrKXJldHVybiBCdztwaz0xO3ZhciBlPUJKKCksdD1lKCk7cmV0dXJuIEJ3PXQsQnd9dmFyIFZ3LG1rO2Z1bmN0aW9uIFpWKCl7aWYobWspcmV0dXJuIFZ3O21rPTE7dmFyIGU9VkooKSx0PVd5KCk7ZnVuY3Rpb24gbihyLGkpe3JldHVybiByJiZlKHIsaSx0KX1yZXR1cm4gVnc9bixWd312YXIgcXcseWs7ZnVuY3Rpb24gcUooKXtpZih5aylyZXR1cm4gcXc7eWs9MTt2YXIgZT1FZCgpO2Z1bmN0aW9uIHQobixyKXtyZXR1cm4gZnVuY3Rpb24oaSxvKXtpZihpPT1udWxsKXJldHVybiBpO2lmKCFlKGkpKXJldHVybiBuKGksbyk7Zm9yKHZhciBzPWkubGVuZ3RoLHU9cj9zOi0xLGY9T2JqZWN0KGkpOyhyP3UtLTorK3U8cykmJm8oZlt1XSx1LGYpIT09ITE7KTtyZXR1cm4gaX19cmV0dXJuIHF3PXQscXd9dmFyIFV3LHZrO2Z1bmN0aW9uIFdPKCl7aWYodmspcmV0dXJuIFV3O3ZrPTE7dmFyIGU9WlYoKSx0PXFKKCksbj10KGUpO3JldHVybiBVdz1uLFV3fXZhciB6dyxnaztmdW5jdGlvbiBRVigpe2lmKGdrKXJldHVybiB6dztnaz0xO3ZhciBlPVdPKCksdD1FZCgpO2Z1bmN0aW9uIG4ocixpKXt2YXIgbz0tMSxzPXQocik/QXJyYXkoci5sZW5ndGgpOltdO3JldHVybiBlKHIsZnVuY3Rpb24odSxmLGQpe3NbKytvXT1pKHUsZixkKX0pLHN9cmV0dXJuIHp3PW4send9dmFyIEZ3LGJrO2Z1bmN0aW9uIFVKKCl7aWYoYmspcmV0dXJuIEZ3O2JrPTE7ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXQubGVuZ3RoO2Zvcih0LnNvcnQobik7ci0tOyl0W3JdPXRbcl0udmFsdWU7cmV0dXJuIHR9cmV0dXJuIEZ3PWUsRnd9dmFyIEh3LHhrO2Z1bmN0aW9uIHpKKCl7aWYoeGspcmV0dXJuIEh3O3hrPTE7dmFyIGU9RHUoKTtmdW5jdGlvbiB0KG4scil7aWYobiE9PXIpe3ZhciBpPW4hPT12b2lkIDAsbz1uPT09bnVsbCxzPW49PT1uLHU9ZShuKSxmPXIhPT12b2lkIDAsZD1yPT09bnVsbCxwPXI9PT1yLG09ZShyKTtpZighZCYmIW0mJiF1JiZuPnJ8fHUmJmYmJnAmJiFkJiYhbXx8byYmZiYmcHx8IWkmJnB8fCFzKXJldHVybiAxO2lmKCFvJiYhdSYmIW0mJm48cnx8bSYmaSYmcyYmIW8mJiF1fHxkJiZpJiZzfHwhZiYmc3x8IXApcmV0dXJuLTF9cmV0dXJuIDB9cmV0dXJuIEh3PXQsSHd9dmFyIEd3LHdrO2Z1bmN0aW9uIEZKKCl7aWYod2spcmV0dXJuIEd3O3drPTE7dmFyIGU9ekooKTtmdW5jdGlvbiB0KG4scixpKXtmb3IodmFyIG89LTEscz1uLmNyaXRlcmlhLHU9ci5jcml0ZXJpYSxmPXMubGVuZ3RoLGQ9aS5sZW5ndGg7KytvPGY7KXt2YXIgcD1lKHNbb10sdVtvXSk7aWYocCl7aWYobz49ZClyZXR1cm4gcDt2YXIgbT1pW29dO3JldHVybiBwKihtPT0iZGVzYyI/LTE6MSl9fXJldHVybiBuLmluZGV4LXIuaW5kZXh9cmV0dXJuIEd3PXQsR3d9dmFyIEt3LFNrO2Z1bmN0aW9uIEhKKCl7aWYoU2spcmV0dXJuIEt3O1NrPTE7dmFyIGU9a08oKSx0PURPKCksbj1EaSgpLHI9UVYoKSxpPVVKKCksbz1WVigpLHM9RkooKSx1PSR1KCksZj1vcigpO2Z1bmN0aW9uIGQocCxtLHkpe20ubGVuZ3RoP209ZShtLGZ1bmN0aW9uKGIpe3JldHVybiBmKGIpP2Z1bmN0aW9uKGcpe3JldHVybiB0KGcsYi5sZW5ndGg9PT0xP2JbMF06Yil9OmJ9KTptPVt1XTt2YXIgeD0tMTttPWUobSxvKG4pKTt2YXIgdz1yKHAsZnVuY3Rpb24oYixnLF8pe3ZhciBPPWUobSxmdW5jdGlvbihFKXtyZXR1cm4gRShiKX0pO3JldHVybntjcml0ZXJpYTpPLGluZGV4OisreCx2YWx1ZTpifX0pO3JldHVybiBpKHcsZnVuY3Rpb24oYixnKXtyZXR1cm4gcyhiLGcseSl9KX1yZXR1cm4gS3c9ZCxLd312YXIgV3csQWs7ZnVuY3Rpb24gR0ooKXtpZihBaylyZXR1cm4gV3c7QWs9MTtmdW5jdGlvbiBlKHQsbixyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdC5jYWxsKG4pO2Nhc2UgMTpyZXR1cm4gdC5jYWxsKG4sclswXSk7Y2FzZSAyOnJldHVybiB0LmNhbGwobixyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gdC5jYWxsKG4sclswXSxyWzFdLHJbMl0pfXJldHVybiB0LmFwcGx5KG4scil9cmV0dXJuIFd3PWUsV3d9dmFyIFl3LF9rO2Z1bmN0aW9uIEtKKCl7aWYoX2spcmV0dXJuIFl3O19rPTE7dmFyIGU9R0ooKSx0PU1hdGgubWF4O2Z1bmN0aW9uIG4ocixpLG8pe3JldHVybiBpPXQoaT09PXZvaWQgMD9yLmxlbmd0aC0xOmksMCksZnVuY3Rpb24oKXtmb3IodmFyIHM9YXJndW1lbnRzLHU9LTEsZj10KHMubGVuZ3RoLWksMCksZD1BcnJheShmKTsrK3U8ZjspZFt1XT1zW2krdV07dT0tMTtmb3IodmFyIHA9QXJyYXkoaSsxKTsrK3U8aTspcFt1XT1zW3VdO3JldHVybiBwW2ldPW8oZCksZShyLHRoaXMscCl9fXJldHVybiBZdz1uLFl3fXZhciBYdyxPaztmdW5jdGlvbiBXSigpe2lmKE9rKXJldHVybiBYdztPaz0xO2Z1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXJldHVybiBYdz1lLFh3fXZhciBadyxUaztmdW5jdGlvbiBKVigpe2lmKFRrKXJldHVybiBadztUaz0xO3ZhciBlPUVzKCksdD0oZnVuY3Rpb24oKXt0cnl7dmFyIG49ZShPYmplY3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIG4oe30sIiIse30pLG59Y2F0Y2h7fX0pKCk7cmV0dXJuIFp3PXQsWnd9dmFyIFF3LEVrO2Z1bmN0aW9uIFlKKCl7aWYoRWspcmV0dXJuIFF3O0VrPTE7dmFyIGU9V0ooKSx0PUpWKCksbj0kdSgpLHI9dD9mdW5jdGlvbihpLG8pe3JldHVybiB0KGksInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6ZShvKSx3cml0YWJsZTohMH0pfTpuO3JldHVybiBRdz1yLFF3fXZhciBKdyxDaztmdW5jdGlvbiBYSigpe2lmKENrKXJldHVybiBKdztDaz0xO3ZhciBlPTgwMCx0PTE2LG49RGF0ZS5ub3c7ZnVuY3Rpb24gcihpKXt2YXIgbz0wLHM9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdT1uKCksZj10LSh1LXMpO2lmKHM9dSxmPjApe2lmKCsrbz49ZSlyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2Ugbz0wO3JldHVybiBpLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX1yZXR1cm4gSnc9cixKd312YXIgZTEsams7ZnVuY3Rpb24gWkooKXtpZihqaylyZXR1cm4gZTE7ams9MTt2YXIgZT1ZSigpLHQ9WEooKSxuPXQoZSk7cmV0dXJuIGUxPW4sZTF9dmFyIHQxLFBrO2Z1bmN0aW9uIFFKKCl7aWYoUGspcmV0dXJuIHQxO1BrPTE7dmFyIGU9JHUoKSx0PUtKKCksbj1aSigpO2Z1bmN0aW9uIHIoaSxvKXtyZXR1cm4gbih0KGksbyxlKSxpKyIiKX1yZXR1cm4gdDE9cix0MX12YXIgbjEsTWs7ZnVuY3Rpb24gWHkoKXtpZihNaylyZXR1cm4gbjE7TWs9MTt2YXIgZT1NTygpLHQ9RWQoKSxuPUhPKCkscj1nbygpO2Z1bmN0aW9uIGkobyxzLHUpe2lmKCFyKHUpKXJldHVybiExO3ZhciBmPXR5cGVvZiBzO3JldHVybihmPT0ibnVtYmVyIj90KHUpJiZuKHMsdS5sZW5ndGgpOmY9PSJzdHJpbmciJiZzIGluIHUpP2UodVtzXSxvKTohMX1yZXR1cm4gbjE9aSxuMX12YXIgcjEsUms7ZnVuY3Rpb24gSkooKXtpZihSaylyZXR1cm4gcjE7Ums9MTt2YXIgZT1YVigpLHQ9SEooKSxuPVFKKCkscj1YeSgpLGk9bihmdW5jdGlvbihvLHMpe2lmKG89PW51bGwpcmV0dXJuW107dmFyIHU9cy5sZW5ndGg7cmV0dXJuIHU+MSYmcihvLHNbMF0sc1sxXSk/cz1bXTp1PjImJnIoc1swXSxzWzFdLHNbMl0pJiYocz1bc1swXV0pLHQobyxlKHMsMSksW10pfSk7cmV0dXJuIHIxPWkscjF9dmFyIGVlZT1KSigpO2NvbnN0IFlPPU90KGVlZSk7ZnVuY3Rpb24gTmYoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gTmY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LE5mKGUpfWZ1bmN0aW9uIHNBKCl7cmV0dXJuIHNBPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sc0EuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHRlZShlLHQpe3JldHVybiBhZWUoZSl8fGllZShlLHQpfHxyZWUoZSx0KXx8bmVlKCl9ZnVuY3Rpb24gbmVlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIHJlZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gTmsoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIE5rKGUsdCl9fWZ1bmN0aW9uIE5rKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gaWVlKGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihuIT1udWxsKXt2YXIgcixpLG8scyx1PVtdLGY9ITAsZD0hMTt0cnl7aWYobz0obj1uLmNhbGwoZSkpLm5leHQsdCE9PTApZm9yKDshKGY9KHI9by5jYWxsKG4pKS5kb25lKSYmKHUucHVzaChyLnZhbHVlKSx1Lmxlbmd0aCE9PXQpO2Y9ITApO31jYXRjaChwKXtkPSEwLGk9cH1maW5hbGx5e3RyeXtpZighZiYmbi5yZXR1cm4hPW51bGwmJihzPW4ucmV0dXJuKCksT2JqZWN0KHMpIT09cykpcmV0dXJufWZpbmFsbHl7aWYoZCl0aHJvdyBpfX1yZXR1cm4gdX19ZnVuY3Rpb24gYWVlKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9ZnVuY3Rpb24ga2soZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBpMShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9rayhPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7b2VlKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmtrKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBvZWUoZSx0LG4pe3JldHVybiB0PXNlZSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHNlZShlKXt2YXIgdD1sZWUoZSwic3RyaW5nIik7cmV0dXJuIE5mKHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gbGVlKGUsdCl7aWYoTmYoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoTmYocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiB1ZWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJnZuKGVbMF0pJiZ2bihlWzFdKT9lLmpvaW4oIiB+ICIpOmV9dmFyIGNlZT1mdW5jdGlvbih0KXt2YXIgbj10LnNlcGFyYXRvcixyPW49PT12b2lkIDA/IiA6ICI6bixpPXQuY29udGVudFN0eWxlLG89aT09PXZvaWQgMD97fTppLHM9dC5pdGVtU3R5bGUsdT1zPT09dm9pZCAwP3t9OnMsZj10LmxhYmVsU3R5bGUsZD1mPT09dm9pZCAwP3t9OmYscD10LnBheWxvYWQsbT10LmZvcm1hdHRlcix5PXQuaXRlbVNvcnRlcix4PXQud3JhcHBlckNsYXNzTmFtZSx3PXQubGFiZWxDbGFzc05hbWUsYj10LmxhYmVsLGc9dC5sYWJlbEZvcm1hdHRlcixfPXQuYWNjZXNzaWJpbGl0eUxheWVyLE89Xz09PXZvaWQgMD8hMTpfLEU9ZnVuY3Rpb24oKXtpZihwJiZwLmxlbmd0aCl7dmFyICQ9e3BhZGRpbmc6MCxtYXJnaW46MH0sej0oeT9ZTyhwLHkpOnApLm1hcChmdW5jdGlvbihVLEspe2lmKFUudHlwZT09PSJub25lIilyZXR1cm4gbnVsbDt2YXIgTD1pMSh7ZGlzcGxheToiYmxvY2siLHBhZGRpbmdUb3A6NCxwYWRkaW5nQm90dG9tOjQsY29sb3I6VS5jb2xvcnx8IiMwMDAifSx1KSxXPVUuZm9ybWF0dGVyfHxtfHx1ZWUsSD1VLnZhbHVlLGVlPVUubmFtZSxrPUgsWj1lZTtpZihXJiZrIT1udWxsJiZaIT1udWxsKXt2YXIgdGU9VyhILGVlLFUsSyxwKTtpZihBcnJheS5pc0FycmF5KHRlKSl7dmFyIG9lPXRlZSh0ZSwyKTtrPW9lWzBdLFo9b2VbMV19ZWxzZSBrPXRlfXJldHVybiBGLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJyZWNoYXJ0cy10b29sdGlwLWl0ZW0iLGtleToidG9vbHRpcC1pdGVtLSIuY29uY2F0KEspLHN0eWxlOkx9LHZuKFopP0YuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToicmVjaGFydHMtdG9vbHRpcC1pdGVtLW5hbWUifSxaKTpudWxsLHZuKFopP0YuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToicmVjaGFydHMtdG9vbHRpcC1pdGVtLXNlcGFyYXRvciJ9LHIpOm51bGwsRi5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJyZWNoYXJ0cy10b29sdGlwLWl0ZW0tdmFsdWUifSxrKSxGLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6InJlY2hhcnRzLXRvb2x0aXAtaXRlbS11bml0In0sVS51bml0fHwiIikpfSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudCgidWwiLHtjbGFzc05hbWU6InJlY2hhcnRzLXRvb2x0aXAtaXRlbS1saXN0IixzdHlsZTokfSx6KX1yZXR1cm4gbnVsbH0saj1pMSh7bWFyZ2luOjAscGFkZGluZzoxMCxiYWNrZ3JvdW5kQ29sb3I6IiNmZmYiLGJvcmRlcjoiMXB4IHNvbGlkICNjY2MiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LG8pLFQ9aTEoe21hcmdpbjowfSxkKSxQPSFHZShiKSxOPVA/YjoiIixSPVdlKCJyZWNoYXJ0cy1kZWZhdWx0LXRvb2x0aXAiLHgpLEk9V2UoInJlY2hhcnRzLXRvb2x0aXAtbGFiZWwiLHcpO1AmJmcmJnAhPT12b2lkIDAmJnAhPT1udWxsJiYoTj1nKGIscCkpO3ZhciBWPU8/e3JvbGU6InN0YXR1cyIsImFyaWEtbGl2ZSI6ImFzc2VydGl2ZSJ9Ont9O3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoImRpdiIsc0Eoe2NsYXNzTmFtZTpSLHN0eWxlOmp9LFYpLEYuY3JlYXRlRWxlbWVudCgicCIse2NsYXNzTmFtZTpJLHN0eWxlOlR9LEYuaXNWYWxpZEVsZW1lbnQoTik/TjoiIi5jb25jYXQoTikpLEUoKSl9O2Z1bmN0aW9uIGtmKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIGtmPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxrZihlKX1mdW5jdGlvbiB1cChlLHQsbil7cmV0dXJuIHQ9ZmVlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gZmVlKGUpe3ZhciB0PWRlZShlLCJzdHJpbmciKTtyZXR1cm4ga2YodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBkZWUoZSx0KXtpZihrZihlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihrZihyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfXZhciBLYz0icmVjaGFydHMtdG9vbHRpcC13cmFwcGVyIixoZWU9e3Zpc2liaWxpdHk6ImhpZGRlbiJ9O2Z1bmN0aW9uIHBlZShlKXt2YXIgdD1lLmNvb3JkaW5hdGUsbj1lLnRyYW5zbGF0ZVgscj1lLnRyYW5zbGF0ZVk7cmV0dXJuIFdlKEtjLHVwKHVwKHVwKHVwKHt9LCIiLmNvbmNhdChLYywiLXJpZ2h0IiksdmUobikmJnQmJnZlKHQueCkmJm4+PXQueCksIiIuY29uY2F0KEtjLCItbGVmdCIpLHZlKG4pJiZ0JiZ2ZSh0LngpJiZuPHQueCksIiIuY29uY2F0KEtjLCItYm90dG9tIiksdmUocikmJnQmJnZlKHQueSkmJnI+PXQueSksIiIuY29uY2F0KEtjLCItdG9wIiksdmUocikmJnQmJnZlKHQueSkmJnI8dC55KSl9ZnVuY3Rpb24gRGsoZSl7dmFyIHQ9ZS5hbGxvd0VzY2FwZVZpZXdCb3gsbj1lLmNvb3JkaW5hdGUscj1lLmtleSxpPWUub2Zmc2V0VG9wTGVmdCxvPWUucG9zaXRpb24scz1lLnJldmVyc2VEaXJlY3Rpb24sdT1lLnRvb2x0aXBEaW1lbnNpb24sZj1lLnZpZXdCb3gsZD1lLnZpZXdCb3hEaW1lbnNpb247aWYobyYmdmUob1tyXSkpcmV0dXJuIG9bcl07dmFyIHA9bltyXS11LWksbT1uW3JdK2k7aWYodFtyXSlyZXR1cm4gc1tyXT9wOm07aWYoc1tyXSl7dmFyIHk9cCx4PWZbcl07cmV0dXJuIHk8eD9NYXRoLm1heChtLGZbcl0pOk1hdGgubWF4KHAsZltyXSl9dmFyIHc9bSt1LGI9ZltyXStkO3JldHVybiB3PmI/TWF0aC5tYXgocCxmW3JdKTpNYXRoLm1heChtLGZbcl0pfWZ1bmN0aW9uIG1lZShlKXt2YXIgdD1lLnRyYW5zbGF0ZVgsbj1lLnRyYW5zbGF0ZVkscj1lLnVzZVRyYW5zbGF0ZTNkO3JldHVybnt0cmFuc2Zvcm06cj8idHJhbnNsYXRlM2QoIi5jb25jYXQodCwicHgsICIpLmNvbmNhdChuLCJweCwgMCkiKToidHJhbnNsYXRlKCIuY29uY2F0KHQsInB4LCAiKS5jb25jYXQobiwicHgpIil9fWZ1bmN0aW9uIHllZShlKXt2YXIgdD1lLmFsbG93RXNjYXBlVmlld0JveCxuPWUuY29vcmRpbmF0ZSxyPWUub2Zmc2V0VG9wTGVmdCxpPWUucG9zaXRpb24sbz1lLnJldmVyc2VEaXJlY3Rpb24scz1lLnRvb2x0aXBCb3gsdT1lLnVzZVRyYW5zbGF0ZTNkLGY9ZS52aWV3Qm94LGQscCxtO3JldHVybiBzLmhlaWdodD4wJiZzLndpZHRoPjAmJm4/KHA9RGsoe2FsbG93RXNjYXBlVmlld0JveDp0LGNvb3JkaW5hdGU6bixrZXk6IngiLG9mZnNldFRvcExlZnQ6cixwb3NpdGlvbjppLHJldmVyc2VEaXJlY3Rpb246byx0b29sdGlwRGltZW5zaW9uOnMud2lkdGgsdmlld0JveDpmLHZpZXdCb3hEaW1lbnNpb246Zi53aWR0aH0pLG09RGsoe2FsbG93RXNjYXBlVmlld0JveDp0LGNvb3JkaW5hdGU6bixrZXk6InkiLG9mZnNldFRvcExlZnQ6cixwb3NpdGlvbjppLHJldmVyc2VEaXJlY3Rpb246byx0b29sdGlwRGltZW5zaW9uOnMuaGVpZ2h0LHZpZXdCb3g6Zix2aWV3Qm94RGltZW5zaW9uOmYuaGVpZ2h0fSksZD1tZWUoe3RyYW5zbGF0ZVg6cCx0cmFuc2xhdGVZOm0sdXNlVHJhbnNsYXRlM2Q6dX0pKTpkPWhlZSx7Y3NzUHJvcGVydGllczpkLGNzc0NsYXNzZXM6cGVlKHt0cmFuc2xhdGVYOnAsdHJhbnNsYXRlWTptLGNvb3JkaW5hdGU6bn0pfX1mdW5jdGlvbiB0dShlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiB0dT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sdHUoZSl9ZnVuY3Rpb24gTGsoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBJayhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9MayhPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7dUEoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6TGsoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIHZlZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGdlZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdDUoci5rZXkpLHIpfX1mdW5jdGlvbiBiZWUoZSx0LG4pe3JldHVybiB0JiZnZWUoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiB4ZWUoZSx0LG4pe3JldHVybiB0PW1tKHQpLHdlZShlLGU1KCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxtbShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiB3ZWUoZSx0KXtpZih0JiYodHUodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gU2VlKGUpfWZ1bmN0aW9uIFNlZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gZTUoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4oZTU9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIG1tKGUpe3JldHVybiBtbT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sbW0oZSl9ZnVuY3Rpb24gQWVlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmxBKGUsdCl9ZnVuY3Rpb24gbEEoZSx0KXtyZXR1cm4gbEE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxsQShlLHQpfWZ1bmN0aW9uIHVBKGUsdCxuKXtyZXR1cm4gdD10NSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHQ1KGUpe3ZhciB0PV9lZShlLCJzdHJpbmciKTtyZXR1cm4gdHUodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBfZWUoZSx0KXtpZih0dShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZih0dShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfXZhciAkaz0xLE9lZT0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuO3ZlZSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtvPHI7bysrKWlbb109YXJndW1lbnRzW29dO3JldHVybiBuPXhlZSh0aGlzLHQsW10uY29uY2F0KGkpKSx1QShuLCJzdGF0ZSIse2Rpc21pc3NlZDohMSxkaXNtaXNzZWRBdENvb3JkaW5hdGU6e3g6MCx5OjB9LGxhc3RCb3VuZGluZ0JveDp7d2lkdGg6LTEsaGVpZ2h0Oi0xfX0pLHVBKG4sImhhbmRsZUtleURvd24iLGZ1bmN0aW9uKHMpe2lmKHMua2V5PT09IkVzY2FwZSIpe3ZhciB1LGYsZCxwO24uc2V0U3RhdGUoe2Rpc21pc3NlZDohMCxkaXNtaXNzZWRBdENvb3JkaW5hdGU6e3g6KHU9KGY9bi5wcm9wcy5jb29yZGluYXRlKT09PW51bGx8fGY9PT12b2lkIDA/dm9pZCAwOmYueCkhPT1udWxsJiZ1IT09dm9pZCAwP3U6MCx5OihkPShwPW4ucHJvcHMuY29vcmRpbmF0ZSk9PT1udWxsfHxwPT09dm9pZCAwP3ZvaWQgMDpwLnkpIT09bnVsbCYmZCE9PXZvaWQgMD9kOjB9fSl9fSksbn1yZXR1cm4gQWVlKHQsZSksYmVlKHQsW3trZXk6InVwZGF0ZUJCb3giLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy53cmFwcGVyTm9kZSYmdGhpcy53cmFwcGVyTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qpe3ZhciByPXRoaXMud3JhcHBlck5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7KE1hdGguYWJzKHIud2lkdGgtdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3gud2lkdGgpPiRrfHxNYXRoLmFicyhyLmhlaWdodC10aGlzLnN0YXRlLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQpPiRrKSYmdGhpcy5zZXRTdGF0ZSh7bGFzdEJvdW5kaW5nQm94Ont3aWR0aDpyLndpZHRoLGhlaWdodDpyLmhlaWdodH19KX1lbHNlKHRoaXMuc3RhdGUubGFzdEJvdW5kaW5nQm94LndpZHRoIT09LTF8fHRoaXMuc3RhdGUubGFzdEJvdW5kaW5nQm94LmhlaWdodCE9PS0xKSYmdGhpcy5zZXRTdGF0ZSh7bGFzdEJvdW5kaW5nQm94Ont3aWR0aDotMSxoZWlnaHQ6LTF9fSl9fSx7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLmhhbmRsZUtleURvd24pLHRoaXMudXBkYXRlQkJveCgpfX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5oYW5kbGVLZXlEb3duKX19LHtrZXk6ImNvbXBvbmVudERpZFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcixpO3RoaXMucHJvcHMuYWN0aXZlJiZ0aGlzLnVwZGF0ZUJCb3goKSx0aGlzLnN0YXRlLmRpc21pc3NlZCYmKCgocj10aGlzLnByb3BzLmNvb3JkaW5hdGUpPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci54KSE9PXRoaXMuc3RhdGUuZGlzbWlzc2VkQXRDb29yZGluYXRlLnh8fCgoaT10aGlzLnByb3BzLmNvb3JkaW5hdGUpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS55KSE9PXRoaXMuc3RhdGUuZGlzbWlzc2VkQXRDb29yZGluYXRlLnkpJiYodGhpcy5zdGF0ZS5kaXNtaXNzZWQ9ITEpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMsaT10aGlzLnByb3BzLG89aS5hY3RpdmUscz1pLmFsbG93RXNjYXBlVmlld0JveCx1PWkuYW5pbWF0aW9uRHVyYXRpb24sZj1pLmFuaW1hdGlvbkVhc2luZyxkPWkuY2hpbGRyZW4scD1pLmNvb3JkaW5hdGUsbT1pLmhhc1BheWxvYWQseT1pLmlzQW5pbWF0aW9uQWN0aXZlLHg9aS5vZmZzZXQsdz1pLnBvc2l0aW9uLGI9aS5yZXZlcnNlRGlyZWN0aW9uLGc9aS51c2VUcmFuc2xhdGUzZCxfPWkudmlld0JveCxPPWkud3JhcHBlclN0eWxlLEU9eWVlKHthbGxvd0VzY2FwZVZpZXdCb3g6cyxjb29yZGluYXRlOnAsb2Zmc2V0VG9wTGVmdDp4LHBvc2l0aW9uOncscmV2ZXJzZURpcmVjdGlvbjpiLHRvb2x0aXBCb3g6dGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3gsdXNlVHJhbnNsYXRlM2Q6Zyx2aWV3Qm94Ol99KSxqPUUuY3NzQ2xhc3NlcyxUPUUuY3NzUHJvcGVydGllcyxQPUlrKElrKHt0cmFuc2l0aW9uOnkmJm8/InRyYW5zZm9ybSAiLmNvbmNhdCh1LCJtcyAiKS5jb25jYXQoZik6dm9pZCAwfSxUKSx7fSx7cG9pbnRlckV2ZW50czoibm9uZSIsdmlzaWJpbGl0eTohdGhpcy5zdGF0ZS5kaXNtaXNzZWQmJm8mJm0/InZpc2libGUiOiJoaWRkZW4iLHBvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowfSxPKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJkaXYiLHt0YWJJbmRleDotMSxjbGFzc05hbWU6aixzdHlsZTpQLHJlZjpmdW5jdGlvbihSKXtyLndyYXBwZXJOb2RlPVJ9fSxkKX19XSl9KShDLlB1cmVDb21wb25lbnQpLFRlZT1mdW5jdGlvbigpe3JldHVybiEodHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQmJndpbmRvdy5zZXRUaW1lb3V0KX0sYm89e2lzU3NyOlRlZSgpfTtmdW5jdGlvbiBudShlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBudT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbnUoZSl9ZnVuY3Rpb24gQmsoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBWayhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9CayhPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7WE8oZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6QmsoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIEVlZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIENlZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscjUoci5rZXkpLHIpfX1mdW5jdGlvbiBqZWUoZSx0LG4pe3JldHVybiB0JiZDZWUoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBQZWUoZSx0LG4pe3JldHVybiB0PXltKHQpLE1lZShlLG41KCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSx5bShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBNZWUoZSx0KXtpZih0JiYobnUodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gUmVlKGUpfWZ1bmN0aW9uIFJlZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gbjUoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4objU9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIHltKGUpe3JldHVybiB5bT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0seW0oZSl9ZnVuY3Rpb24gTmVlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmNBKGUsdCl9ZnVuY3Rpb24gY0EoZSx0KXtyZXR1cm4gY0E9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxjQShlLHQpfWZ1bmN0aW9uIFhPKGUsdCxuKXtyZXR1cm4gdD1yNSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHI1KGUpe3ZhciB0PWtlZShlLCJzdHJpbmciKTtyZXR1cm4gbnUodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBrZWUoZSx0KXtpZihudShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihudShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfWZ1bmN0aW9uIERlZShlKXtyZXR1cm4gZS5kYXRhS2V5fWZ1bmN0aW9uIExlZShlLHQpe3JldHVybiBGLmlzVmFsaWRFbGVtZW50KGUpP0YuY2xvbmVFbGVtZW50KGUsdCk6dHlwZW9mIGU9PSJmdW5jdGlvbiI/Ri5jcmVhdGVFbGVtZW50KGUsdCk6Ri5jcmVhdGVFbGVtZW50KGNlZSx0KX12YXIgSXI9KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gRWVlKHRoaXMsdCksUGVlKHRoaXMsdCxhcmd1bWVudHMpfXJldHVybiBOZWUodCxlKSxqZWUodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMsaT10aGlzLnByb3BzLG89aS5hY3RpdmUscz1pLmFsbG93RXNjYXBlVmlld0JveCx1PWkuYW5pbWF0aW9uRHVyYXRpb24sZj1pLmFuaW1hdGlvbkVhc2luZyxkPWkuY29udGVudCxwPWkuY29vcmRpbmF0ZSxtPWkuZmlsdGVyTnVsbCx5PWkuaXNBbmltYXRpb25BY3RpdmUseD1pLm9mZnNldCx3PWkucGF5bG9hZCxiPWkucGF5bG9hZFVuaXFCeSxnPWkucG9zaXRpb24sXz1pLnJldmVyc2VEaXJlY3Rpb24sTz1pLnVzZVRyYW5zbGF0ZTNkLEU9aS52aWV3Qm94LGo9aS53cmFwcGVyU3R5bGUsVD13Pz9bXTttJiZULmxlbmd0aCYmKFQ9S1Yody5maWx0ZXIoZnVuY3Rpb24oTil7cmV0dXJuIE4udmFsdWUhPW51bGwmJihOLmhpZGUhPT0hMHx8ci5wcm9wcy5pbmNsdWRlSGlkZGVuKX0pLGIsRGVlKSk7dmFyIFA9VC5sZW5ndGg+MDtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KE9lZSx7YWxsb3dFc2NhcGVWaWV3Qm94OnMsYW5pbWF0aW9uRHVyYXRpb246dSxhbmltYXRpb25FYXNpbmc6Zixpc0FuaW1hdGlvbkFjdGl2ZTp5LGFjdGl2ZTpvLGNvb3JkaW5hdGU6cCxoYXNQYXlsb2FkOlAsb2Zmc2V0OngscG9zaXRpb246ZyxyZXZlcnNlRGlyZWN0aW9uOl8sdXNlVHJhbnNsYXRlM2Q6Tyx2aWV3Qm94OkUsd3JhcHBlclN0eWxlOmp9LExlZShkLFZrKFZrKHt9LHRoaXMucHJvcHMpLHt9LHtwYXlsb2FkOlR9KSkpfX1dKX0pKEMuUHVyZUNvbXBvbmVudCk7WE8oSXIsImRpc3BsYXlOYW1lIiwiVG9vbHRpcCIpO1hPKElyLCJkZWZhdWx0UHJvcHMiLHthY2Nlc3NpYmlsaXR5TGF5ZXI6ITEsYWxsb3dFc2NhcGVWaWV3Qm94Ont4OiExLHk6ITF9LGFuaW1hdGlvbkR1cmF0aW9uOjQwMCxhbmltYXRpb25FYXNpbmc6ImVhc2UiLGNvbnRlbnRTdHlsZTp7fSxjb29yZGluYXRlOnt4OjAseTowfSxjdXJzb3I6ITAsY3Vyc29yU3R5bGU6e30sZmlsdGVyTnVsbDohMCxpc0FuaW1hdGlvbkFjdGl2ZTohYm8uaXNTc3IsaXRlbVN0eWxlOnt9LGxhYmVsU3R5bGU6e30sb2Zmc2V0OjEwLHJldmVyc2VEaXJlY3Rpb246e3g6ITEseTohMX0sc2VwYXJhdG9yOiIgOiAiLHRyaWdnZXI6ImhvdmVyIix1c2VUcmFuc2xhdGUzZDohMSx2aWV3Qm94Ont4OjAseTowLGhlaWdodDowLHdpZHRoOjB9LHdyYXBwZXJTdHlsZTp7fX0pO3ZhciBhMSxxaztmdW5jdGlvbiBJZWUoKXtpZihxaylyZXR1cm4gYTE7cWs9MTt2YXIgZT1raSgpLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS5EYXRlLm5vdygpfTtyZXR1cm4gYTE9dCxhMX12YXIgbzEsVWs7ZnVuY3Rpb24gJGVlKCl7aWYoVWspcmV0dXJuIG8xO1VrPTE7dmFyIGU9L1xzLztmdW5jdGlvbiB0KG4pe2Zvcih2YXIgcj1uLmxlbmd0aDtyLS0mJmUudGVzdChuLmNoYXJBdChyKSk7KTtyZXR1cm4gcn1yZXR1cm4gbzE9dCxvMX12YXIgczEsems7ZnVuY3Rpb24gQmVlKCl7aWYoemspcmV0dXJuIHMxO3prPTE7dmFyIGU9JGVlKCksdD0vXlxzKy87ZnVuY3Rpb24gbihyKXtyZXR1cm4gciYmci5zbGljZSgwLGUocikrMSkucmVwbGFjZSh0LCIiKX1yZXR1cm4gczE9bixzMX12YXIgbDEsRms7ZnVuY3Rpb24gaTUoKXtpZihGaylyZXR1cm4gbDE7Rms9MTt2YXIgZT1CZWUoKSx0PWdvKCksbj1EdSgpLHI9TmFOLGk9L15bLStdMHhbMC05YS1mXSskL2ksbz0vXjBiWzAxXSskL2kscz0vXjBvWzAtN10rJC9pLHU9cGFyc2VJbnQ7ZnVuY3Rpb24gZihkKXtpZih0eXBlb2YgZD09Im51bWJlciIpcmV0dXJuIGQ7aWYobihkKSlyZXR1cm4gcjtpZih0KGQpKXt2YXIgcD10eXBlb2YgZC52YWx1ZU9mPT0iZnVuY3Rpb24iP2QudmFsdWVPZigpOmQ7ZD10KHApP3ArIiI6cH1pZih0eXBlb2YgZCE9InN0cmluZyIpcmV0dXJuIGQ9PT0wP2Q6K2Q7ZD1lKGQpO3ZhciBtPW8udGVzdChkKTtyZXR1cm4gbXx8cy50ZXN0KGQpP3UoZC5zbGljZSgyKSxtPzI6OCk6aS50ZXN0KGQpP3I6K2R9cmV0dXJuIGwxPWYsbDF9dmFyIHUxLEhrO2Z1bmN0aW9uIFZlZSgpe2lmKEhrKXJldHVybiB1MTtIaz0xO3ZhciBlPWdvKCksdD1JZWUoKSxuPWk1KCkscj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIsaT1NYXRoLm1heCxvPU1hdGgubWluO2Z1bmN0aW9uIHModSxmLGQpe3ZhciBwLG0seSx4LHcsYixnPTAsXz0hMSxPPSExLEU9ITA7aWYodHlwZW9mIHUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihyKTtmPW4oZil8fDAsZShkKSYmKF89ISFkLmxlYWRpbmcsTz0ibWF4V2FpdCJpbiBkLHk9Tz9pKG4oZC5tYXhXYWl0KXx8MCxmKTp5LEU9InRyYWlsaW5nImluIGQ/ISFkLnRyYWlsaW5nOkUpO2Z1bmN0aW9uIGooeil7dmFyIFU9cCxLPW07cmV0dXJuIHA9bT12b2lkIDAsZz16LHg9dS5hcHBseShLLFUpLHh9ZnVuY3Rpb24gVCh6KXtyZXR1cm4gZz16LHc9c2V0VGltZW91dChSLGYpLF8/aih6KTp4fWZ1bmN0aW9uIFAoeil7dmFyIFU9ei1iLEs9ei1nLEw9Zi1VO3JldHVybiBPP28oTCx5LUspOkx9ZnVuY3Rpb24gTih6KXt2YXIgVT16LWIsSz16LWc7cmV0dXJuIGI9PT12b2lkIDB8fFU+PWZ8fFU8MHx8TyYmSz49eX1mdW5jdGlvbiBSKCl7dmFyIHo9dCgpO2lmKE4oeikpcmV0dXJuIEkoeik7dz1zZXRUaW1lb3V0KFIsUCh6KSl9ZnVuY3Rpb24gSSh6KXtyZXR1cm4gdz12b2lkIDAsRSYmcD9qKHopOihwPW09dm9pZCAwLHgpfWZ1bmN0aW9uIFYoKXt3IT09dm9pZCAwJiZjbGVhclRpbWVvdXQodyksZz0wLHA9Yj1tPXc9dm9pZCAwfWZ1bmN0aW9uIEIoKXtyZXR1cm4gdz09PXZvaWQgMD94OkkodCgpKX1mdW5jdGlvbiAkKCl7dmFyIHo9dCgpLFU9Tih6KTtpZihwPWFyZ3VtZW50cyxtPXRoaXMsYj16LFUpe2lmKHc9PT12b2lkIDApcmV0dXJuIFQoYik7aWYoTylyZXR1cm4gY2xlYXJUaW1lb3V0KHcpLHc9c2V0VGltZW91dChSLGYpLGooYil9cmV0dXJuIHc9PT12b2lkIDAmJih3PXNldFRpbWVvdXQoUixmKSkseH1yZXR1cm4gJC5jYW5jZWw9ViwkLmZsdXNoPUIsJH1yZXR1cm4gdTE9cyx1MX12YXIgYzEsR2s7ZnVuY3Rpb24gcWVlKCl7aWYoR2spcmV0dXJuIGMxO0drPTE7dmFyIGU9VmVlKCksdD1nbygpLG49IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIHIoaSxvLHMpe3ZhciB1PSEwLGY9ITA7aWYodHlwZW9mIGkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihuKTtyZXR1cm4gdChzKSYmKHU9ImxlYWRpbmciaW4gcz8hIXMubGVhZGluZzp1LGY9InRyYWlsaW5nImluIHM/ISFzLnRyYWlsaW5nOmYpLGUoaSxvLHtsZWFkaW5nOnUsbWF4V2FpdDpvLHRyYWlsaW5nOmZ9KX1yZXR1cm4gYzE9cixjMX12YXIgVWVlPXFlZSgpO2NvbnN0IGE1PU90KFVlZSk7ZnVuY3Rpb24gRGYoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gRGY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LERmKGUpfWZ1bmN0aW9uIEtrKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gY3AoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/S2soT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3plZShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpLayhPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gemVlKGUsdCxuKXtyZXR1cm4gdD1GZWUodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBGZWUoZSl7dmFyIHQ9SGVlKGUsInN0cmluZyIpO3JldHVybiBEZih0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIEhlZShlLHQpe2lmKERmKGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKERmKHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9ZnVuY3Rpb24gR2VlKGUsdCl7cmV0dXJuIFhlZShlKXx8WWVlKGUsdCl8fFdlZShlLHQpfHxLZWUoKX1mdW5jdGlvbiBLZWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gV2VlKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBXayhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gV2soZSx0KX19ZnVuY3Rpb24gV2soZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBZZWUoZSx0KXt2YXIgbj1lPT1udWxsP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG4hPW51bGwpe3ZhciByLGksbyxzLHU9W10sZj0hMCxkPSExO3RyeXtpZihvPShuPW4uY2FsbChlKSkubmV4dCx0IT09MClmb3IoOyEoZj0ocj1vLmNhbGwobikpLmRvbmUpJiYodS5wdXNoKHIudmFsdWUpLHUubGVuZ3RoIT09dCk7Zj0hMCk7fWNhdGNoKHApe2Q9ITAsaT1wfWZpbmFsbHl7dHJ5e2lmKCFmJiZuLnJldHVybiE9bnVsbCYmKHM9bi5yZXR1cm4oKSxPYmplY3QocykhPT1zKSlyZXR1cm59ZmluYWxseXtpZihkKXRocm93IGl9fXJldHVybiB1fX1mdW5jdGlvbiBYZWUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX12YXIgJHA9Qy5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5hc3BlY3Qscj1lLmluaXRpYWxEaW1lbnNpb24saT1yPT09dm9pZCAwP3t3aWR0aDotMSxoZWlnaHQ6LTF9OnIsbz1lLndpZHRoLHM9bz09PXZvaWQgMD8iMTAwJSI6byx1PWUuaGVpZ2h0LGY9dT09PXZvaWQgMD8iMTAwJSI6dSxkPWUubWluV2lkdGgscD1kPT09dm9pZCAwPzA6ZCxtPWUubWluSGVpZ2h0LHk9ZS5tYXhIZWlnaHQseD1lLmNoaWxkcmVuLHc9ZS5kZWJvdW5jZSxiPXc9PT12b2lkIDA/MDp3LGc9ZS5pZCxfPWUuY2xhc3NOYW1lLE89ZS5vblJlc2l6ZSxFPWUuc3R5bGUsaj1FPT09dm9pZCAwP3t9OkUsVD1DLnVzZVJlZihudWxsKSxQPUMudXNlUmVmKCk7UC5jdXJyZW50PU8sQy51c2VJbXBlcmF0aXZlSGFuZGxlKHQsZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuY3VycmVudCwiY3VycmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRoZSB1c2FnZSBvZiByZWYuY3VycmVudC5jdXJyZW50IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgbm8gbG9uZ2VyIGJlIHN1cHBvcnRlZC4iKSxULmN1cnJlbnR9LGNvbmZpZ3VyYWJsZTohMH0pfSk7dmFyIE49Qy51c2VTdGF0ZSh7Y29udGFpbmVyV2lkdGg6aS53aWR0aCxjb250YWluZXJIZWlnaHQ6aS5oZWlnaHR9KSxSPUdlZShOLDIpLEk9UlswXSxWPVJbMV0sQj1DLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKHosVSl7VihmdW5jdGlvbihLKXt2YXIgTD1NYXRoLnJvdW5kKHopLFc9TWF0aC5yb3VuZChVKTtyZXR1cm4gSy5jb250YWluZXJXaWR0aD09PUwmJksuY29udGFpbmVySGVpZ2h0PT09Vz9LOntjb250YWluZXJXaWR0aDpMLGNvbnRhaW5lckhlaWdodDpXfX0pfSxbXSk7Qy51c2VFZmZlY3QoZnVuY3Rpb24oKXt2YXIgej1mdW5jdGlvbihlZSl7dmFyIGssWj1lZVswXS5jb250ZW50UmVjdCx0ZT1aLndpZHRoLG9lPVouaGVpZ2h0O0IodGUsb2UpLChrPVAuY3VycmVudCk9PT1udWxsfHxrPT09dm9pZCAwfHxrLmNhbGwoUCx0ZSxvZSl9O2I+MCYmKHo9YTUoeixiLHt0cmFpbGluZzohMCxsZWFkaW5nOiExfSkpO3ZhciBVPW5ldyBSZXNpemVPYnNlcnZlcih6KSxLPVQuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxMPUsud2lkdGgsVz1LLmhlaWdodDtyZXR1cm4gQihMLFcpLFUub2JzZXJ2ZShULmN1cnJlbnQpLGZ1bmN0aW9uKCl7VS5kaXNjb25uZWN0KCl9fSxbQixiXSk7dmFyICQ9Qy51c2VNZW1vKGZ1bmN0aW9uKCl7dmFyIHo9SS5jb250YWluZXJXaWR0aCxVPUkuY29udGFpbmVySGVpZ2h0O2lmKHo8MHx8VTwwKXJldHVybiBudWxsO2xhKGlzKHMpfHxpcyhmKSxgVGhlIHdpZHRoKCVzKSBhbmQgaGVpZ2h0KCVzKSBhcmUgYm90aCBmaXhlZCBudW1iZXJzLAogICAgICAgbWF5YmUgeW91IGRvbid0IG5lZWQgdG8gdXNlIGEgUmVzcG9uc2l2ZUNvbnRhaW5lci5gLHMsZiksbGEoIW58fG4+MCwiVGhlIGFzcGVjdCglcykgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iLG4pO3ZhciBLPWlzKHMpP3o6cyxMPWlzKGYpP1U6ZjtuJiZuPjAmJihLP0w9Sy9uOkwmJihLPUwqbikseSYmTD55JiYoTD15KSksbGEoSz4wfHxMPjAsYFRoZSB3aWR0aCglcykgYW5kIGhlaWdodCglcykgb2YgY2hhcnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwLAogICAgICAgcGxlYXNlIGNoZWNrIHRoZSBzdHlsZSBvZiBjb250YWluZXIsIG9yIHRoZSBwcm9wcyB3aWR0aCglcykgYW5kIGhlaWdodCglcyksCiAgICAgICBvciBhZGQgYSBtaW5XaWR0aCglcykgb3IgbWluSGVpZ2h0KCVzKSBvciB1c2UgYXNwZWN0KCVzKSB0byBjb250cm9sIHRoZQogICAgICAgaGVpZ2h0IGFuZCB3aWR0aC5gLEssTCxzLGYscCxtLG4pO3ZhciBXPSFBcnJheS5pc0FycmF5KHgpJiZzYSh4LnR5cGUpLmVuZHNXaXRoKCJDaGFydCIpO3JldHVybiBGLkNoaWxkcmVuLm1hcCh4LGZ1bmN0aW9uKEgpe3JldHVybiBGLmlzVmFsaWRFbGVtZW50KEgpP0MuY2xvbmVFbGVtZW50KEgsY3Aoe3dpZHRoOkssaGVpZ2h0Okx9LFc/e3N0eWxlOmNwKHtoZWlnaHQ6IjEwMCUiLHdpZHRoOiIxMDAlIixtYXhIZWlnaHQ6TCxtYXhXaWR0aDpLfSxILnByb3BzLnN0eWxlKX06e30pKTpIfSl9LFtuLHgsZix5LG0scCxJLHNdKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJkaXYiLHtpZDpnPyIiLmNvbmNhdChnKTp2b2lkIDAsY2xhc3NOYW1lOldlKCJyZWNoYXJ0cy1yZXNwb25zaXZlLWNvbnRhaW5lciIsXyksc3R5bGU6Y3AoY3Aoe30saikse30se3dpZHRoOnMsaGVpZ2h0OmYsbWluV2lkdGg6cCxtaW5IZWlnaHQ6bSxtYXhIZWlnaHQ6eX0pLHJlZjpUfSwkKX0pLFp5PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfTtaeS5kaXNwbGF5TmFtZT0iQ2VsbCI7ZnVuY3Rpb24gTGYoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gTGY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LExmKGUpfWZ1bmN0aW9uIFlrKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gZkEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/WWsoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe1plZShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpZayhPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gWmVlKGUsdCxuKXtyZXR1cm4gdD1RZWUodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBRZWUoZSl7dmFyIHQ9SmVlKGUsInN0cmluZyIpO3JldHVybiBMZih0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIEplZShlLHQpe2lmKExmKGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKExmKHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9dmFyIGdsPXt3aWR0aENhY2hlOnt9LGNhY2hlQ291bnQ6MH0sZXRlPTJlMyx0dGU9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiItMjAwMDBweCIsbGVmdDowLHBhZGRpbmc6MCxtYXJnaW46MCxib3JkZXI6Im5vbmUiLHdoaXRlU3BhY2U6InByZSJ9LFhrPSJyZWNoYXJ0c19tZWFzdXJlbWVudF9zcGFuIjtmdW5jdGlvbiBudGUoZSl7dmFyIHQ9ZkEoe30sZSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obil7dFtuXXx8ZGVsZXRlIHRbbl19KSx0fXZhciBwZj1mdW5jdGlvbih0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307aWYodD09bnVsbHx8Ym8uaXNTc3IpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3ZhciByPW50ZShuKSxpPUpTT04uc3RyaW5naWZ5KHt0ZXh0OnQsY29weVN0eWxlOnJ9KTtpZihnbC53aWR0aENhY2hlW2ldKXJldHVybiBnbC53aWR0aENhY2hlW2ldO3RyeXt2YXIgbz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChYayk7b3x8KG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLG8uc2V0QXR0cmlidXRlKCJpZCIsWGspLG8uc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG8pKTt2YXIgcz1mQShmQSh7fSx0dGUpLHIpO09iamVjdC5hc3NpZ24oby5zdHlsZSxzKSxvLnRleHRDb250ZW50PSIiLmNvbmNhdCh0KTt2YXIgdT1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9e3dpZHRoOnUud2lkdGgsaGVpZ2h0OnUuaGVpZ2h0fTtyZXR1cm4gZ2wud2lkdGhDYWNoZVtpXT1mLCsrZ2wuY2FjaGVDb3VudD5ldGUmJihnbC5jYWNoZUNvdW50PTAsZ2wud2lkdGhDYWNoZT17fSksZn1jYXRjaHtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH19fSxydGU9ZnVuY3Rpb24odCl7cmV0dXJue3RvcDp0LnRvcCt3aW5kb3cuc2Nyb2xsWS1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50VG9wLGxlZnQ6dC5sZWZ0K3dpbmRvdy5zY3JvbGxYLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRMZWZ0fX07ZnVuY3Rpb24gSWYoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gSWY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LElmKGUpfWZ1bmN0aW9uIHZtKGUsdCl7cmV0dXJuIHN0ZShlKXx8b3RlKGUsdCl8fGF0ZShlLHQpfHxpdGUoKX1mdW5jdGlvbiBpdGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gYXRlKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBaayhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gWmsoZSx0KX19ZnVuY3Rpb24gWmsoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBvdGUoZSx0KXt2YXIgbj1lPT1udWxsP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG4hPW51bGwpe3ZhciByLGksbyxzLHU9W10sZj0hMCxkPSExO3RyeXtpZihvPShuPW4uY2FsbChlKSkubmV4dCx0PT09MCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Zj0hMX1lbHNlIGZvcig7IShmPShyPW8uY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT10KTtmPSEwKTt9Y2F0Y2gocCl7ZD0hMCxpPXB9ZmluYWxseXt0cnl7aWYoIWYmJm4ucmV0dXJuIT1udWxsJiYocz1uLnJldHVybigpLE9iamVjdChzKSE9PXMpKXJldHVybn1maW5hbGx5e2lmKGQpdGhyb3cgaX19cmV0dXJuIHV9fWZ1bmN0aW9uIHN0ZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIGx0ZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIFFrKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxjdGUoci5rZXkpLHIpfX1mdW5jdGlvbiB1dGUoZSx0LG4pe3JldHVybiB0JiZRayhlLnByb3RvdHlwZSx0KSxuJiZRayhlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gY3RlKGUpe3ZhciB0PWZ0ZShlLCJzdHJpbmciKTtyZXR1cm4gSWYodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBmdGUoZSx0KXtpZihJZihlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihJZihyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfXZhciBKaz0vKC0/XGQrKD86XC5cZCspP1thLXpBLVolXSopKFsqL10pKC0/XGQrKD86XC5cZCspP1thLXpBLVolXSopLyxlRD0vKC0/XGQrKD86XC5cZCspP1thLXpBLVolXSopKFsrLV0pKC0/XGQrKD86XC5cZCspP1thLXpBLVolXSopLyxkdGU9L15weHxjbXx2aHx2d3xlbXxyZW18JXxtbXxpbnxwdHxwY3xleHxjaHx2bWlufHZtYXh8USQvLGh0ZT0vKC0/XGQrKD86XC5cZCspPykoW2EtekEtWiVdKyk/LyxvNT17Y206OTYvMi41NCxtbTo5Ni8yNS40LHB0Ojk2LzcyLHBjOjk2LzYsaW46OTYsUTo5Ni8oMi41NCo0MCkscHg6MX0scHRlPU9iamVjdC5rZXlzKG81KSxNbD0iTmFOIjtmdW5jdGlvbiBtdGUoZSx0KXtyZXR1cm4gZSpvNVt0XX12YXIgZnA9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe2x0ZSh0aGlzLGUpLHRoaXMubnVtPXQsdGhpcy51bml0PW4sdGhpcy5udW09dCx0aGlzLnVuaXQ9bixOdW1iZXIuaXNOYU4odCkmJih0aGlzLnVuaXQ9IiIpLG4hPT0iIiYmIWR0ZS50ZXN0KG4pJiYodGhpcy5udW09TmFOLHRoaXMudW5pdD0iIikscHRlLmluY2x1ZGVzKG4pJiYodGhpcy5udW09bXRlKHQsbiksdGhpcy51bml0PSJweCIpfXJldHVybiB1dGUoZSxbe2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy51bml0IT09bi51bml0P25ldyBlKE5hTiwiIik6bmV3IGUodGhpcy5udW0rbi5udW0sdGhpcy51bml0KX19LHtrZXk6InN1YnRyYWN0Iix2YWx1ZTpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy51bml0IT09bi51bml0P25ldyBlKE5hTiwiIik6bmV3IGUodGhpcy5udW0tbi5udW0sdGhpcy51bml0KX19LHtrZXk6Im11bHRpcGx5Iix2YWx1ZTpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy51bml0IT09IiImJm4udW5pdCE9PSIiJiZ0aGlzLnVuaXQhPT1uLnVuaXQ/bmV3IGUoTmFOLCIiKTpuZXcgZSh0aGlzLm51bSpuLm51bSx0aGlzLnVuaXR8fG4udW5pdCl9fSx7a2V5OiJkaXZpZGUiLHZhbHVlOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnVuaXQhPT0iIiYmbi51bml0IT09IiImJnRoaXMudW5pdCE9PW4udW5pdD9uZXcgZShOYU4sIiIpOm5ldyBlKHRoaXMubnVtL24ubnVtLHRoaXMudW5pdHx8bi51bml0KX19LHtrZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiIiLmNvbmNhdCh0aGlzLm51bSkuY29uY2F0KHRoaXMudW5pdCl9fSx7a2V5OiJpc05hTiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLmlzTmFOKHRoaXMubnVtKX19XSxbe2tleToicGFyc2UiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciByLGk9KHI9aHRlLmV4ZWMobikpIT09bnVsbCYmciE9PXZvaWQgMD9yOltdLG89dm0oaSwzKSxzPW9bMV0sdT1vWzJdO3JldHVybiBuZXcgZShwYXJzZUZsb2F0KHMpLHU/PyIiKX19XSl9KSgpO2Z1bmN0aW9uIHM1KGUpe2lmKGUuaW5jbHVkZXMoTWwpKXJldHVybiBNbDtmb3IodmFyIHQ9ZTt0LmluY2x1ZGVzKCIqIil8fHQuaW5jbHVkZXMoIi8iKTspe3ZhciBuLHI9KG49SmsuZXhlYyh0KSkhPT1udWxsJiZuIT09dm9pZCAwP246W10saT12bShyLDQpLG89aVsxXSxzPWlbMl0sdT1pWzNdLGY9ZnAucGFyc2Uobz8/IiIpLGQ9ZnAucGFyc2UodT8/IiIpLHA9cz09PSIqIj9mLm11bHRpcGx5KGQpOmYuZGl2aWRlKGQpO2lmKHAuaXNOYU4oKSlyZXR1cm4gTWw7dD10LnJlcGxhY2UoSmsscC50b1N0cmluZygpKX1mb3IoO3QuaW5jbHVkZXMoIisiKXx8Ly4tXGQrKD86XC5cZCspPy8udGVzdCh0KTspe3ZhciBtLHk9KG09ZUQuZXhlYyh0KSkhPT1udWxsJiZtIT09dm9pZCAwP206W10seD12bSh5LDQpLHc9eFsxXSxiPXhbMl0sZz14WzNdLF89ZnAucGFyc2Uodz8/IiIpLE89ZnAucGFyc2UoZz8/IiIpLEU9Yj09PSIrIj9fLmFkZChPKTpfLnN1YnRyYWN0KE8pO2lmKEUuaXNOYU4oKSlyZXR1cm4gTWw7dD10LnJlcGxhY2UoZUQsRS50b1N0cmluZygpKX1yZXR1cm4gdH12YXIgdEQ9L1woKFteKCldKilcKS87ZnVuY3Rpb24geXRlKGUpe2Zvcih2YXIgdD1lO3QuaW5jbHVkZXMoIigiKTspe3ZhciBuPXRELmV4ZWModCkscj12bShuLDIpLGk9clsxXTt0PXQucmVwbGFjZSh0RCxzNShpKSl9cmV0dXJuIHR9ZnVuY3Rpb24gdnRlKGUpe3ZhciB0PWUucmVwbGFjZSgvXHMrL2csIiIpO3JldHVybiB0PXl0ZSh0KSx0PXM1KHQpLHR9ZnVuY3Rpb24gZ3RlKGUpe3RyeXtyZXR1cm4gdnRlKGUpfWNhdGNoe3JldHVybiBNbH19ZnVuY3Rpb24gZjEoZSl7dmFyIHQ9Z3RlKGUuc2xpY2UoNSwtMSkpO3JldHVybiB0PT09TWw/IiI6dH12YXIgYnRlPVsieCIsInkiLCJsaW5lSGVpZ2h0IiwiY2FwSGVpZ2h0Iiwic2NhbGVUb0ZpdCIsInRleHRBbmNob3IiLCJ2ZXJ0aWNhbEFuY2hvciIsImZpbGwiXSx4dGU9WyJkeCIsImR5IiwiYW5nbGUiLCJjbGFzc05hbWUiLCJicmVha0FsbCJdO2Z1bmN0aW9uIGRBKCl7cmV0dXJuIGRBPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sZEEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG5EKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj13dGUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiB3dGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIHJEKGUsdCl7cmV0dXJuIE90ZShlKXx8X3RlKGUsdCl8fEF0ZShlLHQpfHxTdGUoKX1mdW5jdGlvbiBTdGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gQXRlKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBpRChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gaUQoZSx0KX19ZnVuY3Rpb24gaUQoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBfdGUoZSx0KXt2YXIgbj1lPT1udWxsP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG4hPW51bGwpe3ZhciByLGksbyxzLHU9W10sZj0hMCxkPSExO3RyeXtpZihvPShuPW4uY2FsbChlKSkubmV4dCx0PT09MCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Zj0hMX1lbHNlIGZvcig7IShmPShyPW8uY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT10KTtmPSEwKTt9Y2F0Y2gocCl7ZD0hMCxpPXB9ZmluYWxseXt0cnl7aWYoIWYmJm4ucmV0dXJuIT1udWxsJiYocz1uLnJldHVybigpLE9iamVjdChzKSE9PXMpKXJldHVybn1maW5hbGx5e2lmKGQpdGhyb3cgaX19cmV0dXJuIHV9fWZ1bmN0aW9uIE90ZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfXZhciBsNT0vWyBcZlxuXHJcdFx2XHUyMDI4XHUyMDI5XSsvLHU1PWZ1bmN0aW9uKHQpe3ZhciBuPXQuY2hpbGRyZW4scj10LmJyZWFrQWxsLGk9dC5zdHlsZTt0cnl7dmFyIG89W107R2Uobil8fChyP289bi50b1N0cmluZygpLnNwbGl0KCIiKTpvPW4udG9TdHJpbmcoKS5zcGxpdChsNSkpO3ZhciBzPW8ubWFwKGZ1bmN0aW9uKGYpe3JldHVybnt3b3JkOmYsd2lkdGg6cGYoZixpKS53aWR0aH19KSx1PXI/MDpwZigiwqAiLGkpLndpZHRoO3JldHVybnt3b3Jkc1dpdGhDb21wdXRlZFdpZHRoOnMsc3BhY2VXaWR0aDp1fX1jYXRjaHtyZXR1cm4gbnVsbH19LFR0ZT1mdW5jdGlvbih0LG4scixpLG8pe3ZhciBzPXQubWF4TGluZXMsdT10LmNoaWxkcmVuLGY9dC5zdHlsZSxkPXQuYnJlYWtBbGwscD12ZShzKSxtPXUseT1mdW5jdGlvbigpe3ZhciBLPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpbXTtyZXR1cm4gSy5yZWR1Y2UoZnVuY3Rpb24oTCxXKXt2YXIgSD1XLndvcmQsZWU9Vy53aWR0aCxrPUxbTC5sZW5ndGgtMV07aWYoayYmKGk9PW51bGx8fG98fGsud2lkdGgrZWUrcjxOdW1iZXIoaSkpKWsud29yZHMucHVzaChIKSxrLndpZHRoKz1lZStyO2Vsc2V7dmFyIFo9e3dvcmRzOltIXSx3aWR0aDplZX07TC5wdXNoKFopfXJldHVybiBMfSxbXSl9LHg9eShuKSx3PWZ1bmN0aW9uKEspe3JldHVybiBLLnJlZHVjZShmdW5jdGlvbihMLFcpe3JldHVybiBMLndpZHRoPlcud2lkdGg/TDpXfSl9O2lmKCFwKXJldHVybiB4O2Zvcih2YXIgYj0i4oCmIixnPWZ1bmN0aW9uKEspe3ZhciBMPW0uc2xpY2UoMCxLKSxXPXU1KHticmVha0FsbDpkLHN0eWxlOmYsY2hpbGRyZW46TCtifSkud29yZHNXaXRoQ29tcHV0ZWRXaWR0aCxIPXkoVyksZWU9SC5sZW5ndGg+c3x8dyhIKS53aWR0aD5OdW1iZXIoaSk7cmV0dXJuW2VlLEhdfSxfPTAsTz1tLmxlbmd0aC0xLEU9MCxqO188PU8mJkU8PW0ubGVuZ3RoLTE7KXt2YXIgVD1NYXRoLmZsb29yKChfK08pLzIpLFA9VC0xLE49ZyhQKSxSPXJEKE4sMiksST1SWzBdLFY9UlsxXSxCPWcoVCksJD1yRChCLDEpLHo9JFswXTtpZighSSYmIXomJihfPVQrMSksSSYmeiYmKE89VC0xKSwhSSYmeil7aj1WO2JyZWFrfUUrK31yZXR1cm4ganx8eH0sYUQ9ZnVuY3Rpb24odCl7dmFyIG49R2UodCk/W106dC50b1N0cmluZygpLnNwbGl0KGw1KTtyZXR1cm5be3dvcmRzOm59XX0sRXRlPWZ1bmN0aW9uKHQpe3ZhciBuPXQud2lkdGgscj10LnNjYWxlVG9GaXQsaT10LmNoaWxkcmVuLG89dC5zdHlsZSxzPXQuYnJlYWtBbGwsdT10Lm1heExpbmVzO2lmKChufHxyKSYmIWJvLmlzU3NyKXt2YXIgZixkLHA9dTUoe2JyZWFrQWxsOnMsY2hpbGRyZW46aSxzdHlsZTpvfSk7aWYocCl7dmFyIG09cC53b3Jkc1dpdGhDb21wdXRlZFdpZHRoLHk9cC5zcGFjZVdpZHRoO2Y9bSxkPXl9ZWxzZSByZXR1cm4gYUQoaSk7cmV0dXJuIFR0ZSh7YnJlYWtBbGw6cyxjaGlsZHJlbjppLG1heExpbmVzOnUsc3R5bGU6b30sZixkLG4scil9cmV0dXJuIGFEKGkpfSxvRD0iIzgwODA4MCIseHM9ZnVuY3Rpb24odCl7dmFyIG49dC54LHI9bj09PXZvaWQgMD8wOm4saT10Lnksbz1pPT09dm9pZCAwPzA6aSxzPXQubGluZUhlaWdodCx1PXM9PT12b2lkIDA/IjFlbSI6cyxmPXQuY2FwSGVpZ2h0LGQ9Zj09PXZvaWQgMD8iMC43MWVtIjpmLHA9dC5zY2FsZVRvRml0LG09cD09PXZvaWQgMD8hMTpwLHk9dC50ZXh0QW5jaG9yLHg9eT09PXZvaWQgMD8ic3RhcnQiOnksdz10LnZlcnRpY2FsQW5jaG9yLGI9dz09PXZvaWQgMD8iZW5kIjp3LGc9dC5maWxsLF89Zz09PXZvaWQgMD9vRDpnLE89bkQodCxidGUpLEU9Qy51c2VNZW1vKGZ1bmN0aW9uKCl7cmV0dXJuIEV0ZSh7YnJlYWtBbGw6Ty5icmVha0FsbCxjaGlsZHJlbjpPLmNoaWxkcmVuLG1heExpbmVzOk8ubWF4TGluZXMsc2NhbGVUb0ZpdDptLHN0eWxlOk8uc3R5bGUsd2lkdGg6Ty53aWR0aH0pfSxbTy5icmVha0FsbCxPLmNoaWxkcmVuLE8ubWF4TGluZXMsbSxPLnN0eWxlLE8ud2lkdGhdKSxqPU8uZHgsVD1PLmR5LFA9Ty5hbmdsZSxOPU8uY2xhc3NOYW1lLFI9Ty5icmVha0FsbCxJPW5EKE8seHRlKTtpZighdm4ocil8fCF2bihvKSlyZXR1cm4gbnVsbDt2YXIgVj1yKyh2ZShqKT9qOjApLEI9bysodmUoVCk/VDowKSwkO3N3aXRjaChiKXtjYXNlInN0YXJ0IjokPWYxKCJjYWxjKCIuY29uY2F0KGQsIikiKSk7YnJlYWs7Y2FzZSJtaWRkbGUiOiQ9ZjEoImNhbGMoIi5jb25jYXQoKEUubGVuZ3RoLTEpLzIsIiAqIC0iKS5jb25jYXQodSwiICsgKCIpLmNvbmNhdChkLCIgLyAyKSkiKSk7YnJlYWs7ZGVmYXVsdDokPWYxKCJjYWxjKCIuY29uY2F0KEUubGVuZ3RoLTEsIiAqIC0iKS5jb25jYXQodSwiKSIpKTticmVha312YXIgej1bXTtpZihtKXt2YXIgVT1FWzBdLndpZHRoLEs9Ty53aWR0aDt6LnB1c2goInNjYWxlKCIuY29uY2F0KCh2ZShLKT9LL1U6MSkvVSwiKSIpKX1yZXR1cm4gUCYmei5wdXNoKCJyb3RhdGUoIi5jb25jYXQoUCwiLCAiKS5jb25jYXQoViwiLCAiKS5jb25jYXQoQiwiKSIpKSx6Lmxlbmd0aCYmKEkudHJhbnNmb3JtPXouam9pbigiICIpKSxGLmNyZWF0ZUVsZW1lbnQoInRleHQiLGRBKHt9LCRlKEksITApLHt4OlYseTpCLGNsYXNzTmFtZTpXZSgicmVjaGFydHMtdGV4dCIsTiksdGV4dEFuY2hvcjp4LGZpbGw6Xy5pbmNsdWRlcygidXJsIik/b0Q6X30pLEUubWFwKGZ1bmN0aW9uKEwsVyl7dmFyIEg9TC53b3Jkcy5qb2luKFI/IiI6IiAiKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJ0c3BhbiIse3g6VixkeTpXPT09MD8kOnUsa2V5OiIiLmNvbmNhdChILCItIikuY29uY2F0KFcpfSxIKX0pKX07ZnVuY3Rpb24gYW8oZSx0KXtyZXR1cm4gZT09bnVsbHx8dD09bnVsbD9OYU46ZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gQ3RlKGUsdCl7cmV0dXJuIGU9PW51bGx8fHQ9PW51bGw/TmFOOnQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIFpPKGUpe2xldCB0LG4scjtlLmxlbmd0aCE9PTI/KHQ9YW8sbj0odSxmKT0+YW8oZSh1KSxmKSxyPSh1LGYpPT5lKHUpLWYpOih0PWU9PT1hb3x8ZT09PUN0ZT9lOmp0ZSxuPWUscj1lKTtmdW5jdGlvbiBpKHUsZixkPTAscD11Lmxlbmd0aCl7aWYoZDxwKXtpZih0KGYsZikhPT0wKXJldHVybiBwO2Rve2NvbnN0IG09ZCtwPj4+MTtuKHVbbV0sZik8MD9kPW0rMTpwPW19d2hpbGUoZDxwKX1yZXR1cm4gZH1mdW5jdGlvbiBvKHUsZixkPTAscD11Lmxlbmd0aCl7aWYoZDxwKXtpZih0KGYsZikhPT0wKXJldHVybiBwO2Rve2NvbnN0IG09ZCtwPj4+MTtuKHVbbV0sZik8PTA/ZD1tKzE6cD1tfXdoaWxlKGQ8cCl9cmV0dXJuIGR9ZnVuY3Rpb24gcyh1LGYsZD0wLHA9dS5sZW5ndGgpe2NvbnN0IG09aSh1LGYsZCxwLTEpO3JldHVybiBtPmQmJnIodVttLTFdLGYpPi1yKHVbbV0sZik/bS0xOm19cmV0dXJue2xlZnQ6aSxjZW50ZXI6cyxyaWdodDpvfX1mdW5jdGlvbiBqdGUoKXtyZXR1cm4gMH1mdW5jdGlvbiBjNShlKXtyZXR1cm4gZT09PW51bGw/TmFOOitlfWZ1bmN0aW9uKlB0ZShlLHQpe2ZvcihsZXQgbiBvZiBlKW4hPW51bGwmJihuPStuKT49biYmKHlpZWxkIG4pfWNvbnN0IE10ZT1aTyhhbyksQ2Q9TXRlLnJpZ2h0O1pPKGM1KS5jZW50ZXI7Y2xhc3Mgc0QgZXh0ZW5kcyBNYXB7Y29uc3RydWN0b3IodCxuPWt0ZSl7aWYoc3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtfaW50ZXJuOnt2YWx1ZTpuZXcgTWFwfSxfa2V5Ont2YWx1ZTpufX0pLHQhPW51bGwpZm9yKGNvbnN0W3IsaV1vZiB0KXRoaXMuc2V0KHIsaSl9Z2V0KHQpe3JldHVybiBzdXBlci5nZXQobEQodGhpcyx0KSl9aGFzKHQpe3JldHVybiBzdXBlci5oYXMobEQodGhpcyx0KSl9c2V0KHQsbil7cmV0dXJuIHN1cGVyLnNldChSdGUodGhpcyx0KSxuKX1kZWxldGUodCl7cmV0dXJuIHN1cGVyLmRlbGV0ZShOdGUodGhpcyx0KSl9fWZ1bmN0aW9uIGxEKHtfaW50ZXJuOmUsX2tleTp0fSxuKXtjb25zdCByPXQobik7cmV0dXJuIGUuaGFzKHIpP2UuZ2V0KHIpOm59ZnVuY3Rpb24gUnRlKHtfaW50ZXJuOmUsX2tleTp0fSxuKXtjb25zdCByPXQobik7cmV0dXJuIGUuaGFzKHIpP2UuZ2V0KHIpOihlLnNldChyLG4pLG4pfWZ1bmN0aW9uIE50ZSh7X2ludGVybjplLF9rZXk6dH0sbil7Y29uc3Qgcj10KG4pO3JldHVybiBlLmhhcyhyKSYmKG49ZS5nZXQociksZS5kZWxldGUocikpLG59ZnVuY3Rpb24ga3RlKGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiP2UudmFsdWVPZigpOmV9ZnVuY3Rpb24gRHRlKGU9YW8pe2lmKGU9PT1hbylyZXR1cm4gZjU7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiY29tcGFyZSBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybih0LG4pPT57Y29uc3Qgcj1lKHQsbik7cmV0dXJuIHJ8fHI9PT0wP3I6KGUobixuKT09PTApLShlKHQsdCk9PT0wKX19ZnVuY3Rpb24gZjUoZSx0KXtyZXR1cm4oZT09bnVsbHx8IShlPj1lKSktKHQ9PW51bGx8fCEodD49dCkpfHwoZTx0Py0xOmU+dD8xOjApfWNvbnN0IEx0ZT1NYXRoLnNxcnQoNTApLEl0ZT1NYXRoLnNxcnQoMTApLCR0ZT1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gZ20oZSx0LG4pe2NvbnN0IHI9KHQtZSkvTWF0aC5tYXgoMCxuKSxpPU1hdGguZmxvb3IoTWF0aC5sb2cxMChyKSksbz1yL01hdGgucG93KDEwLGkpLHM9bz49THRlPzEwOm8+PUl0ZT81Om8+PSR0ZT8yOjE7bGV0IHUsZixkO3JldHVybiBpPDA/KGQ9TWF0aC5wb3coMTAsLWkpL3MsdT1NYXRoLnJvdW5kKGUqZCksZj1NYXRoLnJvdW5kKHQqZCksdS9kPGUmJisrdSxmL2Q+dCYmLS1mLGQ9LWQpOihkPU1hdGgucG93KDEwLGkpKnMsdT1NYXRoLnJvdW5kKGUvZCksZj1NYXRoLnJvdW5kKHQvZCksdSpkPGUmJisrdSxmKmQ+dCYmLS1mKSxmPHUmJi41PD1uJiZuPDI/Z20oZSx0LG4qMik6W3UsZixkXX1mdW5jdGlvbiBoQShlLHQsbil7aWYodD0rdCxlPStlLG49K24sIShuPjApKXJldHVybltdO2lmKGU9PT10KXJldHVybltlXTtjb25zdCByPXQ8ZSxbaSxvLHNdPXI/Z20odCxlLG4pOmdtKGUsdCxuKTtpZighKG8+PWkpKXJldHVybltdO2NvbnN0IHU9by1pKzEsZj1uZXcgQXJyYXkodSk7aWYocilpZihzPDApZm9yKGxldCBkPTA7ZDx1OysrZClmW2RdPShvLWQpLy1zO2Vsc2UgZm9yKGxldCBkPTA7ZDx1OysrZClmW2RdPShvLWQpKnM7ZWxzZSBpZihzPDApZm9yKGxldCBkPTA7ZDx1OysrZClmW2RdPShpK2QpLy1zO2Vsc2UgZm9yKGxldCBkPTA7ZDx1OysrZClmW2RdPShpK2QpKnM7cmV0dXJuIGZ9ZnVuY3Rpb24gcEEoZSx0LG4pe3JldHVybiB0PSt0LGU9K2Usbj0rbixnbShlLHQsbilbMl19ZnVuY3Rpb24gbUEoZSx0LG4pe3Q9K3QsZT0rZSxuPStuO2NvbnN0IHI9dDxlLGk9cj9wQSh0LGUsbik6cEEoZSx0LG4pO3JldHVybihyPy0xOjEpKihpPDA/MS8taTppKX1mdW5jdGlvbiB1RChlLHQpe2xldCBuO2Zvcihjb25zdCByIG9mIGUpciE9bnVsbCYmKG48cnx8bj09PXZvaWQgMCYmcj49cikmJihuPXIpO3JldHVybiBufWZ1bmN0aW9uIGNEKGUsdCl7bGV0IG47Zm9yKGNvbnN0IHIgb2YgZSlyIT1udWxsJiYobj5yfHxuPT09dm9pZCAwJiZyPj1yKSYmKG49cik7cmV0dXJuIG59ZnVuY3Rpb24gZDUoZSx0LG49MCxyPTEvMCxpKXtpZih0PU1hdGguZmxvb3IodCksbj1NYXRoLmZsb29yKE1hdGgubWF4KDAsbikpLHI9TWF0aC5mbG9vcihNYXRoLm1pbihlLmxlbmd0aC0xLHIpKSwhKG48PXQmJnQ8PXIpKXJldHVybiBlO2ZvcihpPWk9PT12b2lkIDA/ZjU6RHRlKGkpO3I+bjspe2lmKHItbj42MDApe2NvbnN0IGY9ci1uKzEsZD10LW4rMSxwPU1hdGgubG9nKGYpLG09LjUqTWF0aC5leHAoMipwLzMpLHk9LjUqTWF0aC5zcXJ0KHAqbSooZi1tKS9mKSooZC1mLzI8MD8tMToxKSx4PU1hdGgubWF4KG4sTWF0aC5mbG9vcih0LWQqbS9mK3kpKSx3PU1hdGgubWluKHIsTWF0aC5mbG9vcih0KyhmLWQpKm0vZit5KSk7ZDUoZSx0LHgsdyxpKX1jb25zdCBvPWVbdF07bGV0IHM9bix1PXI7Zm9yKFdjKGUsbix0KSxpKGVbcl0sbyk+MCYmV2MoZSxuLHIpO3M8dTspe2ZvcihXYyhlLHMsdSksKytzLC0tdTtpKGVbc10sbyk8MDspKytzO2Zvcig7aShlW3VdLG8pPjA7KS0tdX1pKGVbbl0sbyk9PT0wP1djKGUsbix1KTooKyt1LFdjKGUsdSxyKSksdTw9dCYmKG49dSsxKSx0PD11JiYocj11LTEpfXJldHVybiBlfWZ1bmN0aW9uIFdjKGUsdCxuKXtjb25zdCByPWVbdF07ZVt0XT1lW25dLGVbbl09cn1mdW5jdGlvbiBCdGUoZSx0LG4pe2lmKGU9RmxvYXQ2NEFycmF5LmZyb20oUHRlKGUpKSwhKCEocj1lLmxlbmd0aCl8fGlzTmFOKHQ9K3QpKSl7aWYodDw9MHx8cjwyKXJldHVybiBjRChlKTtpZih0Pj0xKXJldHVybiB1RChlKTt2YXIgcixpPShyLTEpKnQsbz1NYXRoLmZsb29yKGkpLHM9dUQoZDUoZSxvKS5zdWJhcnJheSgwLG8rMSkpLHU9Y0QoZS5zdWJhcnJheShvKzEpKTtyZXR1cm4gcysodS1zKSooaS1vKX19ZnVuY3Rpb24gVnRlKGUsdCxuPWM1KXtpZighKCEocj1lLmxlbmd0aCl8fGlzTmFOKHQ9K3QpKSl7aWYodDw9MHx8cjwyKXJldHVybituKGVbMF0sMCxlKTtpZih0Pj0xKXJldHVybituKGVbci0xXSxyLTEsZSk7dmFyIHIsaT0oci0xKSp0LG89TWF0aC5mbG9vcihpKSxzPStuKGVbb10sbyxlKSx1PStuKGVbbysxXSxvKzEsZSk7cmV0dXJuIHMrKHUtcykqKGktbyl9fWZ1bmN0aW9uIHF0ZShlLHQsbil7ZT0rZSx0PSt0LG49KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8odD1lLGU9MCwxKTppPDM/MTorbjtmb3IodmFyIHI9LTEsaT1NYXRoLm1heCgwLE1hdGguY2VpbCgodC1lKS9uKSl8MCxvPW5ldyBBcnJheShpKTsrK3I8aTspb1tyXT1lK3IqbjtyZXR1cm4gb31mdW5jdGlvbiBGcihlLHQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UoZSk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKHQpLmRvbWFpbihlKTticmVha31yZXR1cm4gdGhpc31mdW5jdGlvbiBiYShlLHQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnt0eXBlb2YgZT09ImZ1bmN0aW9uIj90aGlzLmludGVycG9sYXRvcihlKTp0aGlzLnJhbmdlKGUpO2JyZWFrfWRlZmF1bHQ6e3RoaXMuZG9tYWluKGUpLHR5cGVvZiB0PT0iZnVuY3Rpb24iP3RoaXMuaW50ZXJwb2xhdG9yKHQpOnRoaXMucmFuZ2UodCk7YnJlYWt9fXJldHVybiB0aGlzfWNvbnN0IHlBPVN5bWJvbCgiaW1wbGljaXQiKTtmdW5jdGlvbiBRTygpe3ZhciBlPW5ldyBzRCx0PVtdLG49W10scj15QTtmdW5jdGlvbiBpKG8pe2xldCBzPWUuZ2V0KG8pO2lmKHM9PT12b2lkIDApe2lmKHIhPT15QSlyZXR1cm4gcjtlLnNldChvLHM9dC5wdXNoKG8pLTEpfXJldHVybiBuW3Mlbi5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihvKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W10sZT1uZXcgc0Q7Zm9yKGNvbnN0IHMgb2YgbyllLmhhcyhzKXx8ZS5zZXQocyx0LnB1c2gocyktMSk7cmV0dXJuIGl9LGkucmFuZ2U9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49QXJyYXkuZnJvbShvKSxpKTpuLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1vLGkpOnJ9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBRTyh0LG4pLnVua25vd24ocil9LEZyLmFwcGx5KGksYXJndW1lbnRzKSxpfWZ1bmN0aW9uICRmKCl7dmFyIGU9UU8oKS51bmtub3duKHZvaWQgMCksdD1lLmRvbWFpbixuPWUucmFuZ2Uscj0wLGk9MSxvLHMsdT0hMSxmPTAsZD0wLHA9LjU7ZGVsZXRlIGUudW5rbm93bjtmdW5jdGlvbiBtKCl7dmFyIHk9dCgpLmxlbmd0aCx4PWk8cix3PXg/aTpyLGI9eD9yOmk7bz0oYi13KS9NYXRoLm1heCgxLHktZitkKjIpLHUmJihvPU1hdGguZmxvb3IobykpLHcrPShiLXctbyooeS1mKSkqcCxzPW8qKDEtZiksdSYmKHc9TWF0aC5yb3VuZCh3KSxzPU1hdGgucm91bmQocykpO3ZhciBnPXF0ZSh5KS5tYXAoZnVuY3Rpb24oXyl7cmV0dXJuIHcrbypffSk7cmV0dXJuIG4oeD9nLnJldmVyc2UoKTpnKX1yZXR1cm4gZS5kb21haW49ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQoeSksbSgpKTp0KCl9LGUucmFuZ2U9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFtyLGldPXkscj0rcixpPStpLG0oKSk6W3IsaV19LGUucmFuZ2VSb3VuZD1mdW5jdGlvbih5KXtyZXR1cm5bcixpXT15LHI9K3IsaT0raSx1PSEwLG0oKX0sZS5iYW5kd2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gc30sZS5zdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIG99LGUucm91bmQ9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ISF5LG0oKSk6dX0sZS5wYWRkaW5nPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPU1hdGgubWluKDEsZD0reSksbSgpKTpmfSxlLnBhZGRpbmdJbm5lcj1mdW5jdGlvbih5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1NYXRoLm1pbigxLHkpLG0oKSk6Zn0sZS5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3ksbSgpKTpkfSxlLmFsaWduPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPU1hdGgubWF4KDAsTWF0aC5taW4oMSx5KSksbSgpKTpwfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gJGYodCgpLFtyLGldKS5yb3VuZCh1KS5wYWRkaW5nSW5uZXIoZikucGFkZGluZ091dGVyKGQpLmFsaWduKHApfSxGci5hcHBseShtKCksYXJndW1lbnRzKX1mdW5jdGlvbiBoNShlKXt2YXIgdD1lLmNvcHk7cmV0dXJuIGUucGFkZGluZz1lLnBhZGRpbmdPdXRlcixkZWxldGUgZS5wYWRkaW5nSW5uZXIsZGVsZXRlIGUucGFkZGluZ091dGVyLGUuY29weT1mdW5jdGlvbigpe3JldHVybiBoNSh0KCkpfSxlfWZ1bmN0aW9uIG1mKCl7cmV0dXJuIGg1KCRmLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIEpPKGUsdCxuKXtlLnByb3RvdHlwZT10LnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9ZX1mdW5jdGlvbiBwNShlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUpO2Zvcih2YXIgciBpbiB0KW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBqZCgpe312YXIgQmY9LjcsYm09MS9CZix6bD0iXFxzKihbKy1dP1xcZCspXFxzKiIsVmY9IlxccyooWystXT8oPzpcXGQqXFwuKT9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLE9pPSJcXHMqKFsrLV0/KD86XFxkKlxcLik/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsVXRlPS9eIyhbMC05YS1mXXszLDh9KSQvLHp0ZT1uZXcgUmVnRXhwKGBecmdiXFwoJHt6bH0sJHt6bH0sJHt6bH1cXCkkYCksRnRlPW5ldyBSZWdFeHAoYF5yZ2JcXCgke09pfSwke09pfSwke09pfVxcKSRgKSxIdGU9bmV3IFJlZ0V4cChgXnJnYmFcXCgke3psfSwke3psfSwke3psfSwke1ZmfVxcKSRgKSxHdGU9bmV3IFJlZ0V4cChgXnJnYmFcXCgke09pfSwke09pfSwke09pfSwke1ZmfVxcKSRgKSxLdGU9bmV3IFJlZ0V4cChgXmhzbFxcKCR7VmZ9LCR7T2l9LCR7T2l9XFwpJGApLFd0ZT1uZXcgUmVnRXhwKGBeaHNsYVxcKCR7VmZ9LCR7T2l9LCR7T2l9LCR7VmZ9XFwpJGApLGZEPXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O0pPKGpkLHFmLHtjb3B5KGUpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsZSl9LGRpc3BsYXlhYmxlKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmRELGZvcm1hdEhleDpkRCxmb3JtYXRIZXg4Oll0ZSxmb3JtYXRIc2w6WHRlLGZvcm1hdFJnYjpoRCx0b1N0cmluZzpoRH0pO2Z1bmN0aW9uIGREKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gWXRlKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4OCgpfWZ1bmN0aW9uIFh0ZSgpe3JldHVybiBtNSh0aGlzKS5mb3JtYXRIc2woKX1mdW5jdGlvbiBoRCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIHFmKGUpe3ZhciB0LG47cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PVV0ZS5leGVjKGUpKT8obj10WzFdLmxlbmd0aCx0PXBhcnNlSW50KHRbMV0sMTYpLG49PT02P3BEKHQpOm49PT0zP25ldyBycih0Pj44JjE1fHQ+PjQmMjQwLHQ+PjQmMTV8dCYyNDAsKHQmMTUpPDw0fHQmMTUsMSk6bj09PTg/ZHAodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwodCYyNTUpLzI1NSk6bj09PTQ/ZHAodD4+MTImMTV8dD4+OCYyNDAsdD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCgodCYxNSk8PDR8dCYxNSkvMjU1KTpudWxsKToodD16dGUuZXhlYyhlKSk/bmV3IHJyKHRbMV0sdFsyXSx0WzNdLDEpOih0PUZ0ZS5leGVjKGUpKT9uZXcgcnIodFsxXSoyNTUvMTAwLHRbMl0qMjU1LzEwMCx0WzNdKjI1NS8xMDAsMSk6KHQ9SHRlLmV4ZWMoZSkpP2RwKHRbMV0sdFsyXSx0WzNdLHRbNF0pOih0PUd0ZS5leGVjKGUpKT9kcCh0WzFdKjI1NS8xMDAsdFsyXSoyNTUvMTAwLHRbM10qMjU1LzEwMCx0WzRdKToodD1LdGUuZXhlYyhlKSk/dkQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCwxKToodD1XdGUuZXhlYyhlKSk/dkQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCx0WzRdKTpmRC5oYXNPd25Qcm9wZXJ0eShlKT9wRChmRFtlXSk6ZT09PSJ0cmFuc3BhcmVudCI/bmV3IHJyKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gcEQoZSl7cmV0dXJuIG5ldyBycihlPj4xNiYyNTUsZT4+OCYyNTUsZSYyNTUsMSl9ZnVuY3Rpb24gZHAoZSx0LG4scil7cmV0dXJuIHI8PTAmJihlPXQ9bj1OYU4pLG5ldyBycihlLHQsbixyKX1mdW5jdGlvbiBadGUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBqZHx8KGU9cWYoZSkpLGU/KGU9ZS5yZ2IoKSxuZXcgcnIoZS5yLGUuZyxlLmIsZS5vcGFjaXR5KSk6bmV3IHJyfWZ1bmN0aW9uIHZBKGUsdCxuLHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9adGUoZSk6bmV3IHJyKGUsdCxuLHI/PzEpfWZ1bmN0aW9uIHJyKGUsdCxuLHIpe3RoaXMucj0rZSx0aGlzLmc9K3QsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0rcn1KTyhycix2QSxwNShqZCx7YnJpZ2h0ZXIoZSl7cmV0dXJuIGU9ZT09bnVsbD9ibTpNYXRoLnBvdyhibSxlKSxuZXcgcnIodGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyKGUpe3JldHVybiBlPWU9PW51bGw/QmY6TWF0aC5wb3coQmYsZSksbmV3IHJyKHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LHJnYigpe3JldHVybiB0aGlzfSxjbGFtcCgpe3JldHVybiBuZXcgcnIoZnModGhpcy5yKSxmcyh0aGlzLmcpLGZzKHRoaXMuYikseG0odGhpcy5vcGFjaXR5KSl9LGRpc3BsYXlhYmxlKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDptRCxmb3JtYXRIZXg6bUQsZm9ybWF0SGV4ODpRdGUsZm9ybWF0UmdiOnlELHRvU3RyaW5nOnlEfSkpO2Z1bmN0aW9uIG1EKCl7cmV0dXJuYCMke2FzKHRoaXMucil9JHthcyh0aGlzLmcpfSR7YXModGhpcy5iKX1gfWZ1bmN0aW9uIFF0ZSgpe3JldHVybmAjJHthcyh0aGlzLnIpfSR7YXModGhpcy5nKX0ke2FzKHRoaXMuYil9JHthcygoaXNOYU4odGhpcy5vcGFjaXR5KT8xOnRoaXMub3BhY2l0eSkqMjU1KX1gfWZ1bmN0aW9uIHlEKCl7Y29uc3QgZT14bSh0aGlzLm9wYWNpdHkpO3JldHVybmAke2U9PT0xPyJyZ2IoIjoicmdiYSgifSR7ZnModGhpcy5yKX0sICR7ZnModGhpcy5nKX0sICR7ZnModGhpcy5iKX0ke2U9PT0xPyIpIjpgLCAke2V9KWB9YH1mdW5jdGlvbiB4bShlKXtyZXR1cm4gaXNOYU4oZSk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsZSkpfWZ1bmN0aW9uIGZzKGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKGUpfHwwKSl9ZnVuY3Rpb24gYXMoZSl7cmV0dXJuIGU9ZnMoZSksKGU8MTY/IjAiOiIiKStlLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiB2RChlLHQsbixyKXtyZXR1cm4gcjw9MD9lPXQ9bj1OYU46bjw9MHx8bj49MT9lPXQ9TmFOOnQ8PTAmJihlPU5hTiksbmV3IGFpKGUsdCxuLHIpfWZ1bmN0aW9uIG01KGUpe2lmKGUgaW5zdGFuY2VvZiBhaSlyZXR1cm4gbmV3IGFpKGUuaCxlLnMsZS5sLGUub3BhY2l0eSk7aWYoZSBpbnN0YW5jZW9mIGpkfHwoZT1xZihlKSksIWUpcmV0dXJuIG5ldyBhaTtpZihlIGluc3RhbmNlb2YgYWkpcmV0dXJuIGU7ZT1lLnJnYigpO3ZhciB0PWUuci8yNTUsbj1lLmcvMjU1LHI9ZS5iLzI1NSxpPU1hdGgubWluKHQsbixyKSxvPU1hdGgubWF4KHQsbixyKSxzPU5hTix1PW8taSxmPShvK2kpLzI7cmV0dXJuIHU/KHQ9PT1vP3M9KG4tcikvdSsobjxyKSo2Om49PT1vP3M9KHItdCkvdSsyOnM9KHQtbikvdSs0LHUvPWY8LjU/bytpOjItby1pLHMqPTYwKTp1PWY+MCYmZjwxPzA6cyxuZXcgYWkocyx1LGYsZS5vcGFjaXR5KX1mdW5jdGlvbiBKdGUoZSx0LG4scil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP201KGUpOm5ldyBhaShlLHQsbixyPz8xKX1mdW5jdGlvbiBhaShlLHQsbixyKXt0aGlzLmg9K2UsdGhpcy5zPSt0LHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K3J9Sk8oYWksSnRlLHA1KGpkLHticmlnaHRlcihlKXtyZXR1cm4gZT1lPT1udWxsP2JtOk1hdGgucG93KGJtLGUpLG5ldyBhaSh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcihlKXtyZXR1cm4gZT1lPT1udWxsP0JmOk1hdGgucG93KEJmLGUpLG5ldyBhaSh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYigpe3ZhciBlPXRoaXMuaCUzNjArKHRoaXMuaDwwKSozNjAsdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxyPW4rKG48LjU/bjoxLW4pKnQsaT0yKm4tcjtyZXR1cm4gbmV3IHJyKGQxKGU+PTI0MD9lLTI0MDplKzEyMCxpLHIpLGQxKGUsaSxyKSxkMShlPDEyMD9lKzI0MDplLTEyMCxpLHIpLHRoaXMub3BhY2l0eSl9LGNsYW1wKCl7cmV0dXJuIG5ldyBhaShnRCh0aGlzLmgpLGhwKHRoaXMucyksaHAodGhpcy5sKSx4bSh0aGlzLm9wYWNpdHkpKX0sZGlzcGxheWFibGUoKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbCgpe2NvbnN0IGU9eG0odGhpcy5vcGFjaXR5KTtyZXR1cm5gJHtlPT09MT8iaHNsKCI6ImhzbGEoIn0ke2dEKHRoaXMuaCl9LCAke2hwKHRoaXMucykqMTAwfSUsICR7aHAodGhpcy5sKSoxMDB9JSR7ZT09PTE/IikiOmAsICR7ZX0pYH1gfX0pKTtmdW5jdGlvbiBnRChlKXtyZXR1cm4gZT0oZXx8MCklMzYwLGU8MD9lKzM2MDplfWZ1bmN0aW9uIGhwKGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDEsZXx8MCkpfWZ1bmN0aW9uIGQxKGUsdCxuKXtyZXR1cm4oZTw2MD90KyhuLXQpKmUvNjA6ZTwxODA/bjplPDI0MD90KyhuLXQpKigyNDAtZSkvNjA6dCkqMjU1fWNvbnN0IGVUPWU9PigpPT5lO2Z1bmN0aW9uIGVuZShlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZStuKnR9fWZ1bmN0aW9uIHRuZShlLHQsbil7cmV0dXJuIGU9TWF0aC5wb3coZSxuKSx0PU1hdGgucG93KHQsbiktZSxuPTEvbixmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3coZStyKnQsbil9fWZ1bmN0aW9uIG5uZShlKXtyZXR1cm4oZT0rZSk9PTE/eTU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbi10P3RuZSh0LG4sZSk6ZVQoaXNOYU4odCk/bjp0KX19ZnVuY3Rpb24geTUoZSx0KXt2YXIgbj10LWU7cmV0dXJuIG4/ZW5lKGUsbik6ZVQoaXNOYU4oZSk/dDplKX1jb25zdCBiRD0oZnVuY3Rpb24gZSh0KXt2YXIgbj1ubmUodCk7ZnVuY3Rpb24gcihpLG8pe3ZhciBzPW4oKGk9dkEoaSkpLnIsKG89dkEobykpLnIpLHU9bihpLmcsby5nKSxmPW4oaS5iLG8uYiksZD15NShpLm9wYWNpdHksby5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuIGkucj1zKHApLGkuZz11KHApLGkuYj1mKHApLGkub3BhY2l0eT1kKHApLGkrIiJ9fXJldHVybiByLmdhbW1hPWUscn0pKDEpO2Z1bmN0aW9uIHJuZShlLHQpe3R8fCh0PVtdKTt2YXIgbj1lP01hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKTowLHI9dC5zbGljZSgpLGk7cmV0dXJuIGZ1bmN0aW9uKG8pe2ZvcihpPTA7aTxuOysraSlyW2ldPWVbaV0qKDEtbykrdFtpXSpvO3JldHVybiByfX1mdW5jdGlvbiBpbmUoZSl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhlKSYmIShlIGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIGFuZShlLHQpe3ZhciBuPXQ/dC5sZW5ndGg6MCxyPWU/TWF0aC5taW4obixlLmxlbmd0aCk6MCxpPW5ldyBBcnJheShyKSxvPW5ldyBBcnJheShuKSxzO2ZvcihzPTA7czxyOysrcylpW3NdPUJ1KGVbc10sdFtzXSk7Zm9yKDtzPG47KytzKW9bc109dFtzXTtyZXR1cm4gZnVuY3Rpb24odSl7Zm9yKHM9MDtzPHI7KytzKW9bc109aVtzXSh1KTtyZXR1cm4gb319ZnVuY3Rpb24gb25lKGUsdCl7dmFyIG49bmV3IERhdGU7cmV0dXJuIGU9K2UsdD0rdCxmdW5jdGlvbihyKXtyZXR1cm4gbi5zZXRUaW1lKGUqKDEtcikrdCpyKSxufX1mdW5jdGlvbiB3bShlLHQpe3JldHVybiBlPStlLHQ9K3QsZnVuY3Rpb24obil7cmV0dXJuIGUqKDEtbikrdCpufX1mdW5jdGlvbiBzbmUoZSx0KXt2YXIgbj17fSxyPXt9LGk7KGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpJiYoZT17fSksKHQ9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCIpJiYodD17fSk7Zm9yKGkgaW4gdClpIGluIGU/bltpXT1CdShlW2ldLHRbaV0pOnJbaV09dFtpXTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKGkgaW4gbilyW2ldPW5baV0obyk7cmV0dXJuIHJ9fXZhciBnQT0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csaDE9bmV3IFJlZ0V4cChnQS5zb3VyY2UsImciKTtmdW5jdGlvbiBsbmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fWZ1bmN0aW9uIHVuZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodCkrIiJ9fWZ1bmN0aW9uIGNuZShlLHQpe3ZhciBuPWdBLmxhc3RJbmRleD1oMS5sYXN0SW5kZXg9MCxyLGksbyxzPS0xLHU9W10sZj1bXTtmb3IoZT1lKyIiLHQ9dCsiIjsocj1nQS5leGVjKGUpKSYmKGk9aDEuZXhlYyh0KSk7KShvPWkuaW5kZXgpPm4mJihvPXQuc2xpY2UobixvKSx1W3NdP3Vbc10rPW86dVsrK3NdPW8pLChyPXJbMF0pPT09KGk9aVswXSk/dVtzXT91W3NdKz1pOnVbKytzXT1pOih1Wysrc109bnVsbCxmLnB1c2goe2k6cyx4OndtKHIsaSl9KSksbj1oMS5sYXN0SW5kZXg7cmV0dXJuIG48dC5sZW5ndGgmJihvPXQuc2xpY2UobiksdVtzXT91W3NdKz1vOnVbKytzXT1vKSx1Lmxlbmd0aDwyP2ZbMF0/dW5lKGZbMF0ueCk6bG5lKHQpOih0PWYubGVuZ3RoLGZ1bmN0aW9uKGQpe2Zvcih2YXIgcD0wLG07cDx0OysrcCl1WyhtPWZbcF0pLmldPW0ueChkKTtyZXR1cm4gdS5qb2luKCIiKX0pfWZ1bmN0aW9uIEJ1KGUsdCl7dmFyIG49dHlwZW9mIHQscjtyZXR1cm4gdD09bnVsbHx8bj09PSJib29sZWFuIj9lVCh0KToobj09PSJudW1iZXIiP3dtOm49PT0ic3RyaW5nIj8ocj1xZih0KSk/KHQ9cixiRCk6Y25lOnQgaW5zdGFuY2VvZiBxZj9iRDp0IGluc3RhbmNlb2YgRGF0ZT9vbmU6aW5lKHQpP3JuZTpBcnJheS5pc0FycmF5KHQpP2FuZTp0eXBlb2YgdC52YWx1ZU9mIT0iZnVuY3Rpb24iJiZ0eXBlb2YgdC50b1N0cmluZyE9ImZ1bmN0aW9uInx8aXNOYU4odCk/c25lOndtKShlLHQpfWZ1bmN0aW9uIHRUKGUsdCl7cmV0dXJuIGU9K2UsdD0rdCxmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZChlKigxLW4pK3Qqbil9fWZ1bmN0aW9uIGZuZShlLHQpe3Q9PT12b2lkIDAmJih0PWUsZT1CdSk7Zm9yKHZhciBuPTAscj10Lmxlbmd0aC0xLGk9dFswXSxvPW5ldyBBcnJheShyPDA/MDpyKTtuPHI7KW9bbl09ZShpLGk9dFsrK25dKTtyZXR1cm4gZnVuY3Rpb24ocyl7dmFyIHU9TWF0aC5tYXgoMCxNYXRoLm1pbihyLTEsTWF0aC5mbG9vcihzKj1yKSkpO3JldHVybiBvW3VdKHMtdSl9fWZ1bmN0aW9uIGRuZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19ZnVuY3Rpb24gU20oZSl7cmV0dXJuK2V9dmFyIHhEPVswLDFdO2Z1bmN0aW9uIEtuKGUpe3JldHVybiBlfWZ1bmN0aW9uIGJBKGUsdCl7cmV0dXJuKHQtPWU9K2UpP2Z1bmN0aW9uKG4pe3JldHVybihuLWUpL3R9OmRuZShpc05hTih0KT9OYU46LjUpfWZ1bmN0aW9uIGhuZShlLHQpe3ZhciBuO3JldHVybiBlPnQmJihuPWUsZT10LHQ9biksZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxyKSl9fWZ1bmN0aW9uIHBuZShlLHQsbil7dmFyIHI9ZVswXSxpPWVbMV0sbz10WzBdLHM9dFsxXTtyZXR1cm4gaTxyPyhyPWJBKGksciksbz1uKHMsbykpOihyPWJBKHIsaSksbz1uKG8scykpLGZ1bmN0aW9uKHUpe3JldHVybiBvKHIodSkpfX1mdW5jdGlvbiBtbmUoZSx0LG4pe3ZhciByPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKS0xLGk9bmV3IEFycmF5KHIpLG89bmV3IEFycmF5KHIpLHM9LTE7Zm9yKGVbcl08ZVswXSYmKGU9ZS5zbGljZSgpLnJldmVyc2UoKSx0PXQuc2xpY2UoKS5yZXZlcnNlKCkpOysrczxyOylpW3NdPWJBKGVbc10sZVtzKzFdKSxvW3NdPW4odFtzXSx0W3MrMV0pO3JldHVybiBmdW5jdGlvbih1KXt2YXIgZj1DZChlLHUsMSxyKS0xO3JldHVybiBvW2ZdKGlbZl0odSkpfX1mdW5jdGlvbiBQZChlLHQpe3JldHVybiB0LmRvbWFpbihlLmRvbWFpbigpKS5yYW5nZShlLnJhbmdlKCkpLmludGVycG9sYXRlKGUuaW50ZXJwb2xhdGUoKSkuY2xhbXAoZS5jbGFtcCgpKS51bmtub3duKGUudW5rbm93bigpKX1mdW5jdGlvbiBReSgpe3ZhciBlPXhELHQ9eEQsbj1CdSxyLGksbyxzPUtuLHUsZixkO2Z1bmN0aW9uIHAoKXt2YXIgeT1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk7cmV0dXJuIHMhPT1LbiYmKHM9aG5lKGVbMF0sZVt5LTFdKSksdT15PjI/bW5lOnBuZSxmPWQ9bnVsbCxtfWZ1bmN0aW9uIG0oeSl7cmV0dXJuIHk9PW51bGx8fGlzTmFOKHk9K3kpP286KGZ8fChmPXUoZS5tYXAociksdCxuKSkpKHIocyh5KSkpfXJldHVybiBtLmludmVydD1mdW5jdGlvbih5KXtyZXR1cm4gcyhpKChkfHwoZD11KHQsZS5tYXAociksd20pKSkoeSkpKX0sbS5kb21haW49ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9QXJyYXkuZnJvbSh5LFNtKSxwKCkpOmUuc2xpY2UoKX0sbS5yYW5nZT1mdW5jdGlvbih5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BcnJheS5mcm9tKHkpLHAoKSk6dC5zbGljZSgpfSxtLnJhbmdlUm91bmQ9ZnVuY3Rpb24oeSl7cmV0dXJuIHQ9QXJyYXkuZnJvbSh5KSxuPXRULHAoKX0sbS5jbGFtcD1mdW5jdGlvbih5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz15PyEwOktuLHAoKSk6cyE9PUtufSxtLmludGVycG9sYXRlPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXkscCgpKTpufSxtLnVua25vd249ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89eSxtKTpvfSxmdW5jdGlvbih5LHgpe3JldHVybiByPXksaT14LHAoKX19ZnVuY3Rpb24gblQoKXtyZXR1cm4gUXkoKShLbixLbil9ZnVuY3Rpb24geW5lKGUpe3JldHVybiBNYXRoLmFicyhlPU1hdGgucm91bmQoZSkpPj0xZTIxP2UudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTplLnRvU3RyaW5nKDEwKX1mdW5jdGlvbiBBbShlLHQpe2lmKCFpc0Zpbml0ZShlKXx8ZT09PTApcmV0dXJuIG51bGw7dmFyIG49KGU9dD9lLnRvRXhwb25lbnRpYWwodC0xKTplLnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpLHI9ZS5zbGljZSgwLG4pO3JldHVybltyLmxlbmd0aD4xP3JbMF0rci5zbGljZSgyKTpyLCtlLnNsaWNlKG4rMSldfWZ1bmN0aW9uIHJ1KGUpe3JldHVybiBlPUFtKE1hdGguYWJzKGUpKSxlP2VbMV06TmFOfWZ1bmN0aW9uIHZuZShlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe2Zvcih2YXIgaT1uLmxlbmd0aCxvPVtdLHM9MCx1PWVbMF0sZj0wO2k+MCYmdT4wJiYoZit1KzE+ciYmKHU9TWF0aC5tYXgoMSxyLWYpKSxvLnB1c2gobi5zdWJzdHJpbmcoaS09dSxpK3UpKSwhKChmKz11KzEpPnIpKTspdT1lW3M9KHMrMSklZS5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKHQpfX1mdW5jdGlvbiBnbmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24obil7cmV0dXJuIGVbK25dfSl9fXZhciBibmU9L14oPzooLik/KFs8Pj1eXSkpPyhbK1wtKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyh+KT8oW2EteiVdKT8kL2k7ZnVuY3Rpb24gVWYoZSl7aWYoISh0PWJuZS5leGVjKGUpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK2UpO3ZhciB0O3JldHVybiBuZXcgclQoe2ZpbGw6dFsxXSxhbGlnbjp0WzJdLHNpZ246dFszXSxzeW1ib2w6dFs0XSx6ZXJvOnRbNV0sd2lkdGg6dFs2XSxjb21tYTp0WzddLHByZWNpc2lvbjp0WzhdJiZ0WzhdLnNsaWNlKDEpLHRyaW06dFs5XSx0eXBlOnRbMTBdfSl9VWYucHJvdG90eXBlPXJULnByb3RvdHlwZTtmdW5jdGlvbiByVChlKXt0aGlzLmZpbGw9ZS5maWxsPT09dm9pZCAwPyIgIjplLmZpbGwrIiIsdGhpcy5hbGlnbj1lLmFsaWduPT09dm9pZCAwPyI+IjplLmFsaWduKyIiLHRoaXMuc2lnbj1lLnNpZ249PT12b2lkIDA/Ii0iOmUuc2lnbisiIix0aGlzLnN5bWJvbD1lLnN5bWJvbD09PXZvaWQgMD8iIjplLnN5bWJvbCsiIix0aGlzLnplcm89ISFlLnplcm8sdGhpcy53aWR0aD1lLndpZHRoPT09dm9pZCAwP3ZvaWQgMDorZS53aWR0aCx0aGlzLmNvbW1hPSEhZS5jb21tYSx0aGlzLnByZWNpc2lvbj1lLnByZWNpc2lvbj09PXZvaWQgMD92b2lkIDA6K2UucHJlY2lzaW9uLHRoaXMudHJpbT0hIWUudHJpbSx0aGlzLnR5cGU9ZS50eXBlPT09dm9pZCAwPyIiOmUudHlwZSsiIn1yVC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodGhpcy53aWR0aD09PXZvaWQgMD8iIjpNYXRoLm1heCgxLHRoaXMud2lkdGh8MCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHRoaXMucHJlY2lzaW9uPT09dm9pZCAwPyIiOiIuIitNYXRoLm1heCgwLHRoaXMucHJlY2lzaW9ufDApKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfTtmdW5jdGlvbiB4bmUoZSl7ZTpmb3IodmFyIHQ9ZS5sZW5ndGgsbj0xLHI9LTEsaTtuPHQ7KytuKXN3aXRjaChlW25dKXtjYXNlIi4iOnI9aT1uO2JyZWFrO2Nhc2UiMCI6cj09PTAmJihyPW4pLGk9bjticmVhaztkZWZhdWx0OmlmKCErZVtuXSlicmVhayBlO3I+MCYmKHI9MCk7YnJlYWt9cmV0dXJuIHI+MD9lLnNsaWNlKDAscikrZS5zbGljZShpKzEpOmV9dmFyIF9tO2Z1bmN0aW9uIHduZShlLHQpe3ZhciBuPUFtKGUsdCk7aWYoIW4pcmV0dXJuIF9tPXZvaWQgMCxlLnRvUHJlY2lzaW9uKHQpO3ZhciByPW5bMF0saT1uWzFdLG89aS0oX209TWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGkvMykpKSozKSsxLHM9ci5sZW5ndGg7cmV0dXJuIG89PT1zP3I6bz5zP3IrbmV3IEFycmF5KG8tcysxKS5qb2luKCIwIik6bz4wP3Iuc2xpY2UoMCxvKSsiLiIrci5zbGljZShvKToiMC4iK25ldyBBcnJheSgxLW8pLmpvaW4oIjAiKStBbShlLE1hdGgubWF4KDAsdCtvLTEpKVswXX1mdW5jdGlvbiB3RChlLHQpe3ZhciBuPUFtKGUsdCk7aWYoIW4pcmV0dXJuIGUrIiI7dmFyIHI9blswXSxpPW5bMV07cmV0dXJuIGk8MD8iMC4iK25ldyBBcnJheSgtaSkuam9pbigiMCIpK3I6ci5sZW5ndGg+aSsxP3Iuc2xpY2UoMCxpKzEpKyIuIityLnNsaWNlKGkrMSk6cituZXcgQXJyYXkoaS1yLmxlbmd0aCsyKS5qb2luKCIwIil9Y29uc3QgU0Q9eyIlIjooZSx0KT0+KGUqMTAwKS50b0ZpeGVkKHQpLGI6ZT0+TWF0aC5yb3VuZChlKS50b1N0cmluZygyKSxjOmU9PmUrIiIsZDp5bmUsZTooZSx0KT0+ZS50b0V4cG9uZW50aWFsKHQpLGY6KGUsdCk9PmUudG9GaXhlZCh0KSxnOihlLHQpPT5lLnRvUHJlY2lzaW9uKHQpLG86ZT0+TWF0aC5yb3VuZChlKS50b1N0cmluZyg4KSxwOihlLHQpPT53RChlKjEwMCx0KSxyOndELHM6d25lLFg6ZT0+TWF0aC5yb3VuZChlKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSx4OmU9Pk1hdGgucm91bmQoZSkudG9TdHJpbmcoMTYpfTtmdW5jdGlvbiBBRChlKXtyZXR1cm4gZX12YXIgX0Q9QXJyYXkucHJvdG90eXBlLm1hcCxPRD1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gU25lKGUpe3ZhciB0PWUuZ3JvdXBpbmc9PT12b2lkIDB8fGUudGhvdXNhbmRzPT09dm9pZCAwP0FEOnZuZShfRC5jYWxsKGUuZ3JvdXBpbmcsTnVtYmVyKSxlLnRob3VzYW5kcysiIiksbj1lLmN1cnJlbmN5PT09dm9pZCAwPyIiOmUuY3VycmVuY3lbMF0rIiIscj1lLmN1cnJlbmN5PT09dm9pZCAwPyIiOmUuY3VycmVuY3lbMV0rIiIsaT1lLmRlY2ltYWw9PT12b2lkIDA/Ii4iOmUuZGVjaW1hbCsiIixvPWUubnVtZXJhbHM9PT12b2lkIDA/QUQ6Z25lKF9ELmNhbGwoZS5udW1lcmFscyxTdHJpbmcpKSxzPWUucGVyY2VudD09PXZvaWQgMD8iJSI6ZS5wZXJjZW50KyIiLHU9ZS5taW51cz09PXZvaWQgMD8i4oiSIjplLm1pbnVzKyIiLGY9ZS5uYW49PT12b2lkIDA/Ik5hTiI6ZS5uYW4rIiI7ZnVuY3Rpb24gZChtLHkpe209VWYobSk7dmFyIHg9bS5maWxsLHc9bS5hbGlnbixiPW0uc2lnbixnPW0uc3ltYm9sLF89bS56ZXJvLE89bS53aWR0aCxFPW0uY29tbWEsaj1tLnByZWNpc2lvbixUPW0udHJpbSxQPW0udHlwZTtQPT09Im4iPyhFPSEwLFA9ImciKTpTRFtQXXx8KGo9PT12b2lkIDAmJihqPTEyKSxUPSEwLFA9ImciKSwoX3x8eD09PSIwIiYmdz09PSI9IikmJihfPSEwLHg9IjAiLHc9Ij0iKTt2YXIgTj0oeSYmeS5wcmVmaXghPT12b2lkIDA/eS5wcmVmaXg6IiIpKyhnPT09IiQiP246Zz09PSIjIiYmL1tib3hYXS8udGVzdChQKT8iMCIrUC50b0xvd2VyQ2FzZSgpOiIiKSxSPShnPT09IiQiP3I6L1slcF0vLnRlc3QoUCk/czoiIikrKHkmJnkuc3VmZml4IT09dm9pZCAwP3kuc3VmZml4OiIiKSxJPVNEW1BdLFY9L1tkZWZncHJzJV0vLnRlc3QoUCk7aj1qPT09dm9pZCAwPzY6L1tncHJzXS8udGVzdChQKT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGopKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGopKTtmdW5jdGlvbiBCKCQpe3ZhciB6PU4sVT1SLEssTCxXO2lmKFA9PT0iYyIpVT1JKCQpK1UsJD0iIjtlbHNleyQ9KyQ7dmFyIEg9JDwwfHwxLyQ8MDtpZigkPWlzTmFOKCQpP2Y6SShNYXRoLmFicygkKSxqKSxUJiYoJD14bmUoJCkpLEgmJiskPT0wJiZiIT09IisiJiYoSD0hMSksej0oSD9iPT09IigiP2I6dTpiPT09Ii0ifHxiPT09IigiPyIiOmIpK3osVT0oUD09PSJzIiYmIWlzTmFOKCQpJiZfbSE9PXZvaWQgMD9PRFs4K19tLzNdOiIiKStVKyhIJiZiPT09IigiPyIpIjoiIiksVil7Zm9yKEs9LTEsTD0kLmxlbmd0aDsrK0s8TDspaWYoVz0kLmNoYXJDb2RlQXQoSyksNDg+V3x8Vz41Nyl7VT0oVz09PTQ2P2krJC5zbGljZShLKzEpOiQuc2xpY2UoSykpK1UsJD0kLnNsaWNlKDAsSyk7YnJlYWt9fX1FJiYhXyYmKCQ9dCgkLDEvMCkpO3ZhciBlZT16Lmxlbmd0aCskLmxlbmd0aCtVLmxlbmd0aCxrPWVlPE8/bmV3IEFycmF5KE8tZWUrMSkuam9pbih4KToiIjtzd2l0Y2goRSYmXyYmKCQ9dChrKyQsay5sZW5ndGg/Ty1VLmxlbmd0aDoxLzApLGs9IiIpLHcpe2Nhc2UiPCI6JD16KyQrVStrO2JyZWFrO2Nhc2UiPSI6JD16K2srJCtVO2JyZWFrO2Nhc2UiXiI6JD1rLnNsaWNlKDAsZWU9ay5sZW5ndGg+PjEpK3orJCtVK2suc2xpY2UoZWUpO2JyZWFrO2RlZmF1bHQ6JD1rK3orJCtVO2JyZWFrfXJldHVybiBvKCQpfXJldHVybiBCLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG0rIiJ9LEJ9ZnVuY3Rpb24gcChtLHkpe3ZhciB4PU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihydSh5KS8zKSkpKjMsdz1NYXRoLnBvdygxMCwteCksYj1kKChtPVVmKG0pLG0udHlwZT0iZiIsbSkse3N1ZmZpeDpPRFs4K3gvM119KTtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIGIodypnKX19cmV0dXJue2Zvcm1hdDpkLGZvcm1hdFByZWZpeDpwfX12YXIgcHAsaVQsdjU7QW5lKHt0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pO2Z1bmN0aW9uIEFuZShlKXtyZXR1cm4gcHA9U25lKGUpLGlUPXBwLmZvcm1hdCx2NT1wcC5mb3JtYXRQcmVmaXgscHB9ZnVuY3Rpb24gX25lKGUpe3JldHVybiBNYXRoLm1heCgwLC1ydShNYXRoLmFicyhlKSkpfWZ1bmN0aW9uIE9uZShlLHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihydSh0KS8zKSkpKjMtcnUoTWF0aC5hYnMoZSkpKX1mdW5jdGlvbiBUbmUoZSx0KXtyZXR1cm4gZT1NYXRoLmFicyhlKSx0PU1hdGguYWJzKHQpLWUsTWF0aC5tYXgoMCxydSh0KS1ydShlKSkrMX1mdW5jdGlvbiBnNShlLHQsbixyKXt2YXIgaT1tQShlLHQsbiksbztzd2l0Y2gocj1VZihyPz8iLGYiKSxyLnR5cGUpe2Nhc2UicyI6e3ZhciBzPU1hdGgubWF4KE1hdGguYWJzKGUpLE1hdGguYWJzKHQpKTtyZXR1cm4gci5wcmVjaXNpb249PW51bGwmJiFpc05hTihvPU9uZShpLHMpKSYmKHIucHJlY2lzaW9uPW8pLHY1KHIscyl9Y2FzZSIiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UiciI6e3IucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4obz1UbmUoaSxNYXRoLm1heChNYXRoLmFicyhlKSxNYXRoLmFicyh0KSkpKSYmKHIucHJlY2lzaW9uPW8tKHIudHlwZT09PSJlIikpO2JyZWFrfWNhc2UiZiI6Y2FzZSIlIjp7ci5wcmVjaXNpb249PW51bGwmJiFpc05hTihvPV9uZShpKSkmJihyLnByZWNpc2lvbj1vLShyLnR5cGU9PT0iJSIpKjIpO2JyZWFrfX1yZXR1cm4gaVQocil9ZnVuY3Rpb24geG8oZSl7dmFyIHQ9ZS5kb21haW47cmV0dXJuIGUudGlja3M9ZnVuY3Rpb24obil7dmFyIHI9dCgpO3JldHVybiBoQShyWzBdLHJbci5sZW5ndGgtMV0sbj8/MTApfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24obixyKXt2YXIgaT10KCk7cmV0dXJuIGc1KGlbMF0saVtpLmxlbmd0aC0xXSxuPz8xMCxyKX0sZS5uaWNlPWZ1bmN0aW9uKG4pe249PW51bGwmJihuPTEwKTt2YXIgcj10KCksaT0wLG89ci5sZW5ndGgtMSxzPXJbaV0sdT1yW29dLGYsZCxwPTEwO2Zvcih1PHMmJihkPXMscz11LHU9ZCxkPWksaT1vLG89ZCk7cC0tID4wOyl7aWYoZD1wQShzLHUsbiksZD09PWYpcmV0dXJuIHJbaV09cyxyW29dPXUsdChyKTtpZihkPjApcz1NYXRoLmZsb29yKHMvZCkqZCx1PU1hdGguY2VpbCh1L2QpKmQ7ZWxzZSBpZihkPDApcz1NYXRoLmNlaWwocypkKS9kLHU9TWF0aC5mbG9vcih1KmQpL2Q7ZWxzZSBicmVhaztmPWR9cmV0dXJuIGV9LGV9ZnVuY3Rpb24gT20oKXt2YXIgZT1uVCgpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUGQoZSxPbSgpKX0sRnIuYXBwbHkoZSxhcmd1bWVudHMpLHhvKGUpfWZ1bmN0aW9uIGI1KGUpe3ZhciB0O2Z1bmN0aW9uIG4ocil7cmV0dXJuIHI9PW51bGx8fGlzTmFOKHI9K3IpP3Q6cn1yZXR1cm4gbi5pbnZlcnQ9bixuLmRvbWFpbj1uLnJhbmdlPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFycmF5LmZyb20ocixTbSksbik6ZS5zbGljZSgpfSxuLnVua25vd249ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9cixuKTp0fSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gYjUoZSkudW5rbm93bih0KX0sZT1hcmd1bWVudHMubGVuZ3RoP0FycmF5LmZyb20oZSxTbSk6WzAsMV0seG8obil9ZnVuY3Rpb24geDUoZSx0KXtlPWUuc2xpY2UoKTt2YXIgbj0wLHI9ZS5sZW5ndGgtMSxpPWVbbl0sbz1lW3JdLHM7cmV0dXJuIG88aSYmKHM9bixuPXIscj1zLHM9aSxpPW8sbz1zKSxlW25dPXQuZmxvb3IoaSksZVtyXT10LmNlaWwobyksZX1mdW5jdGlvbiBURChlKXtyZXR1cm4gTWF0aC5sb2coZSl9ZnVuY3Rpb24gRUQoZSl7cmV0dXJuIE1hdGguZXhwKGUpfWZ1bmN0aW9uIEVuZShlKXtyZXR1cm4tTWF0aC5sb2coLWUpfWZ1bmN0aW9uIENuZShlKXtyZXR1cm4tTWF0aC5leHAoLWUpfWZ1bmN0aW9uIGpuZShlKXtyZXR1cm4gaXNGaW5pdGUoZSk/KygiMWUiK2UpOmU8MD8wOmV9ZnVuY3Rpb24gUG5lKGUpe3JldHVybiBlPT09MTA/am5lOmU9PT1NYXRoLkU/TWF0aC5leHA6dD0+TWF0aC5wb3coZSx0KX1mdW5jdGlvbiBNbmUoZSl7cmV0dXJuIGU9PT1NYXRoLkU/TWF0aC5sb2c6ZT09PTEwJiZNYXRoLmxvZzEwfHxlPT09MiYmTWF0aC5sb2cyfHwoZT1NYXRoLmxvZyhlKSx0PT5NYXRoLmxvZyh0KS9lKX1mdW5jdGlvbiBDRChlKXtyZXR1cm4odCxuKT0+LWUoLXQsbil9ZnVuY3Rpb24gYVQoZSl7Y29uc3QgdD1lKFRELEVEKSxuPXQuZG9tYWluO2xldCByPTEwLGksbztmdW5jdGlvbiBzKCl7cmV0dXJuIGk9TW5lKHIpLG89UG5lKHIpLG4oKVswXTwwPyhpPUNEKGkpLG89Q0QobyksZShFbmUsQ25lKSk6ZShURCxFRCksdH1yZXR1cm4gdC5iYXNlPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt1LHMoKSk6cn0sdC5kb21haW49ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4odSkscygpKTpuKCl9LHQudGlja3M9dT0+e2NvbnN0IGY9bigpO2xldCBkPWZbMF0scD1mW2YubGVuZ3RoLTFdO2NvbnN0IG09cDxkO20mJihbZCxwXT1bcCxkXSk7bGV0IHk9aShkKSx4PWkocCksdyxiO2NvbnN0IGc9dT09bnVsbD8xMDordTtsZXQgXz1bXTtpZighKHIlMSkmJngteTxnKXtpZih5PU1hdGguZmxvb3IoeSkseD1NYXRoLmNlaWwoeCksZD4wKXtmb3IoO3k8PXg7Kyt5KWZvcih3PTE7dzxyOysrdylpZihiPXk8MD93L28oLXkpOncqbyh5KSwhKGI8ZCkpe2lmKGI+cClicmVhaztfLnB1c2goYil9fWVsc2UgZm9yKDt5PD14OysreSlmb3Iodz1yLTE7dz49MTstLXcpaWYoYj15PjA/dy9vKC15KTp3Km8oeSksIShiPGQpKXtpZihiPnApYnJlYWs7Xy5wdXNoKGIpfV8ubGVuZ3RoKjI8ZyYmKF89aEEoZCxwLGcpKX1lbHNlIF89aEEoeSx4LE1hdGgubWluKHgteSxnKSkubWFwKG8pO3JldHVybiBtP18ucmV2ZXJzZSgpOl99LHQudGlja0Zvcm1hdD0odSxmKT0+e2lmKHU9PW51bGwmJih1PTEwKSxmPT1udWxsJiYoZj1yPT09MTA/InMiOiIsIiksdHlwZW9mIGYhPSJmdW5jdGlvbiImJighKHIlMSkmJihmPVVmKGYpKS5wcmVjaXNpb249PW51bGwmJihmLnRyaW09ITApLGY9aVQoZikpLHU9PT0xLzApcmV0dXJuIGY7Y29uc3QgZD1NYXRoLm1heCgxLHIqdS90LnRpY2tzKCkubGVuZ3RoKTtyZXR1cm4gcD0+e2xldCBtPXAvbyhNYXRoLnJvdW5kKGkocCkpKTtyZXR1cm4gbSpyPHItLjUmJihtKj1yKSxtPD1kP2YocCk6IiJ9fSx0Lm5pY2U9KCk9Pm4oeDUobigpLHtmbG9vcjp1PT5vKE1hdGguZmxvb3IoaSh1KSkpLGNlaWw6dT0+byhNYXRoLmNlaWwoaSh1KSkpfSkpLHR9ZnVuY3Rpb24gdzUoKXtjb25zdCBlPWFUKFF5KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiBlLmNvcHk9KCk9PlBkKGUsdzUoKSkuYmFzZShlLmJhc2UoKSksRnIuYXBwbHkoZSxhcmd1bWVudHMpLGV9ZnVuY3Rpb24gakQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpZ24odCkqTWF0aC5sb2cxcChNYXRoLmFicyh0L2UpKX19ZnVuY3Rpb24gUEQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpZ24odCkqTWF0aC5leHBtMShNYXRoLmFicyh0KSkqZX19ZnVuY3Rpb24gb1QoZSl7dmFyIHQ9MSxuPWUoakQodCksUEQodCkpO3JldHVybiBuLmNvbnN0YW50PWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoakQodD0rciksUEQodCkpOnR9LHhvKG4pfWZ1bmN0aW9uIFM1KCl7dmFyIGU9b1QoUXkoKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBQZChlLFM1KCkpLmNvbnN0YW50KGUuY29uc3RhbnQoKSl9LEZyLmFwcGx5KGUsYXJndW1lbnRzKX1mdW5jdGlvbiBNRChlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8tTWF0aC5wb3coLXQsZSk6TWF0aC5wb3codCxlKX19ZnVuY3Rpb24gUm5lKGUpe3JldHVybiBlPDA/LU1hdGguc3FydCgtZSk6TWF0aC5zcXJ0KGUpfWZ1bmN0aW9uIE5uZShlKXtyZXR1cm4gZTwwPy1lKmU6ZSplfWZ1bmN0aW9uIHNUKGUpe3ZhciB0PWUoS24sS24pLG49MTtmdW5jdGlvbiByKCl7cmV0dXJuIG49PT0xP2UoS24sS24pOm49PT0uNT9lKFJuZSxObmUpOmUoTUQobiksTUQoMS9uKSl9cmV0dXJuIHQuZXhwb25lbnQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K2kscigpKTpufSx4byh0KX1mdW5jdGlvbiBsVCgpe3ZhciBlPXNUKFF5KCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUGQoZSxsVCgpKS5leHBvbmVudChlLmV4cG9uZW50KCkpfSxGci5hcHBseShlLGFyZ3VtZW50cyksZX1mdW5jdGlvbiBrbmUoKXtyZXR1cm4gbFQuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX1mdW5jdGlvbiBSRChlKXtyZXR1cm4gTWF0aC5zaWduKGUpKmUqZX1mdW5jdGlvbiBEbmUoZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLnNxcnQoTWF0aC5hYnMoZSkpfWZ1bmN0aW9uIEE1KCl7dmFyIGU9blQoKSx0PVswLDFdLG49ITEscjtmdW5jdGlvbiBpKG8pe3ZhciBzPURuZShlKG8pKTtyZXR1cm4gaXNOYU4ocyk/cjpuP01hdGgucm91bmQocyk6c31yZXR1cm4gaS5pbnZlcnQ9ZnVuY3Rpb24obyl7cmV0dXJuIGUuaW52ZXJ0KFJEKG8pKX0saS5kb21haW49ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUuZG9tYWluKG8pLGkpOmUuZG9tYWluKCl9LGkucmFuZ2U9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUucmFuZ2UoKHQ9QXJyYXkuZnJvbShvLFNtKSkubWFwKFJEKSksaSk6dC5zbGljZSgpfSxpLnJhbmdlUm91bmQ9ZnVuY3Rpb24obyl7cmV0dXJuIGkucmFuZ2Uobykucm91bmQoITApfSxpLnJvdW5kPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSEhbyxpKTpufSxpLmNsYW1wPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlLmNsYW1wKG8pLGkpOmUuY2xhbXAoKX0saS51bmtub3duPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW8saSk6cn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEE1KGUuZG9tYWluKCksdCkucm91bmQobikuY2xhbXAoZS5jbGFtcCgpKS51bmtub3duKHIpfSxGci5hcHBseShpLGFyZ3VtZW50cykseG8oaSl9ZnVuY3Rpb24gXzUoKXt2YXIgZT1bXSx0PVtdLG49W10scjtmdW5jdGlvbiBpKCl7dmFyIHM9MCx1PU1hdGgubWF4KDEsdC5sZW5ndGgpO2ZvcihuPW5ldyBBcnJheSh1LTEpOysrczx1OyluW3MtMV09VnRlKGUscy91KTtyZXR1cm4gb31mdW5jdGlvbiBvKHMpe3JldHVybiBzPT1udWxsfHxpc05hTihzPStzKT9yOnRbQ2QobixzKV19cmV0dXJuIG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHMpe3ZhciB1PXQuaW5kZXhPZihzKTtyZXR1cm4gdTwwP1tOYU4sTmFOXTpbdT4wP25bdS0xXTplWzBdLHU8bi5sZW5ndGg/blt1XTplW2UubGVuZ3RoLTFdXX0sby5kb21haW49ZnVuY3Rpb24ocyl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdO2ZvcihsZXQgdSBvZiBzKXUhPW51bGwmJiFpc05hTih1PSt1KSYmZS5wdXNoKHUpO3JldHVybiBlLnNvcnQoYW8pLGkoKX0sby5yYW5nZT1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BcnJheS5mcm9tKHMpLGkoKSk6dC5zbGljZSgpfSxvLnVua25vd249ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9cyxvKTpyfSxvLnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBuLnNsaWNlKCl9LG8uY29weT1mdW5jdGlvbigpe3JldHVybiBfNSgpLmRvbWFpbihlKS5yYW5nZSh0KS51bmtub3duKHIpfSxGci5hcHBseShvLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTzUoKXt2YXIgZT0wLHQ9MSxuPTEscj1bLjVdLGk9WzAsMV0sbztmdW5jdGlvbiBzKGYpe3JldHVybiBmIT1udWxsJiZmPD1mP2lbQ2QocixmLDAsbildOm99ZnVuY3Rpb24gdSgpe3ZhciBmPS0xO2ZvcihyPW5ldyBBcnJheShuKTsrK2Y8bjspcltmXT0oKGYrMSkqdC0oZi1uKSplKS8obisxKTtyZXR1cm4gc31yZXR1cm4gcy5kb21haW49ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFtlLHRdPWYsZT0rZSx0PSt0LHUoKSk6W2UsdF19LHMucmFuZ2U9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49KGk9QXJyYXkuZnJvbShmKSkubGVuZ3RoLTEsdSgpKTppLnNsaWNlKCl9LHMuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKGYpe3ZhciBkPWkuaW5kZXhPZihmKTtyZXR1cm4gZDwwP1tOYU4sTmFOXTpkPDE/W2UsclswXV06ZD49bj9bcltuLTFdLHRdOltyW2QtMV0scltkXV19LHMudW5rbm93bj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCYmKG89Ziksc30scy50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0scy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIE81KCkuZG9tYWluKFtlLHRdKS5yYW5nZShpKS51bmtub3duKG8pfSxGci5hcHBseSh4byhzKSxhcmd1bWVudHMpfWZ1bmN0aW9uIFQ1KCl7dmFyIGU9Wy41XSx0PVswLDFdLG4scj0xO2Z1bmN0aW9uIGkobyl7cmV0dXJuIG8hPW51bGwmJm88PW8/dFtDZChlLG8sMCxyKV06bn1yZXR1cm4gaS5kb21haW49ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9QXJyYXkuZnJvbShvKSxyPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoLTEpLGkpOmUuc2xpY2UoKX0saS5yYW5nZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BcnJheS5mcm9tKG8pLHI9TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgtMSksaSk6dC5zbGljZSgpfSxpLmludmVydEV4dGVudD1mdW5jdGlvbihvKXt2YXIgcz10LmluZGV4T2Yobyk7cmV0dXJuW2Vbcy0xXSxlW3NdXX0saS51bmtub3duPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW8saSk6bn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFQ1KCkuZG9tYWluKGUpLnJhbmdlKHQpLnVua25vd24obil9LEZyLmFwcGx5KGksYXJndW1lbnRzKX1jb25zdCBwMT1uZXcgRGF0ZSxtMT1uZXcgRGF0ZTtmdW5jdGlvbiBibihlLHQsbixyKXtmdW5jdGlvbiBpKG8pe3JldHVybiBlKG89YXJndW1lbnRzLmxlbmd0aD09PTA/bmV3IERhdGU6bmV3IERhdGUoK28pKSxvfXJldHVybiBpLmZsb29yPW89PihlKG89bmV3IERhdGUoK28pKSxvKSxpLmNlaWw9bz0+KGUobz1uZXcgRGF0ZShvLTEpKSx0KG8sMSksZShvKSxvKSxpLnJvdW5kPW89Pntjb25zdCBzPWkobyksdT1pLmNlaWwobyk7cmV0dXJuIG8tczx1LW8/czp1fSxpLm9mZnNldD0obyxzKT0+KHQobz1uZXcgRGF0ZSgrbykscz09bnVsbD8xOk1hdGguZmxvb3IocykpLG8pLGkucmFuZ2U9KG8scyx1KT0+e2NvbnN0IGY9W107aWYobz1pLmNlaWwobyksdT11PT1udWxsPzE6TWF0aC5mbG9vcih1KSwhKG88cyl8fCEodT4wKSlyZXR1cm4gZjtsZXQgZDtkbyBmLnB1c2goZD1uZXcgRGF0ZSgrbykpLHQobyx1KSxlKG8pO3doaWxlKGQ8byYmbzxzKTtyZXR1cm4gZn0saS5maWx0ZXI9bz0+Ym4ocz0+e2lmKHM+PXMpZm9yKDtlKHMpLCFvKHMpOylzLnNldFRpbWUocy0xKX0sKHMsdSk9PntpZihzPj1zKWlmKHU8MClmb3IoOysrdTw9MDspZm9yKDt0KHMsLTEpLCFvKHMpOyk7ZWxzZSBmb3IoOy0tdT49MDspZm9yKDt0KHMsMSksIW8ocyk7KTt9KSxuJiYoaS5jb3VudD0obyxzKT0+KHAxLnNldFRpbWUoK28pLG0xLnNldFRpbWUoK3MpLGUocDEpLGUobTEpLE1hdGguZmxvb3IobihwMSxtMSkpKSxpLmV2ZXJ5PW89PihvPU1hdGguZmxvb3IobyksIWlzRmluaXRlKG8pfHwhKG8+MCk/bnVsbDpvPjE/aS5maWx0ZXIocj9zPT5yKHMpJW89PT0wOnM9PmkuY291bnQoMCxzKSVvPT09MCk6aSkpLGl9Y29uc3QgVG09Ym4oKCk9Pnt9LChlLHQpPT57ZS5zZXRUaW1lKCtlK3QpfSwoZSx0KT0+dC1lKTtUbS5ldmVyeT1lPT4oZT1NYXRoLmZsb29yKGUpLCFpc0Zpbml0ZShlKXx8IShlPjApP251bGw6ZT4xP2JuKHQ9Pnt0LnNldFRpbWUoTWF0aC5mbG9vcih0L2UpKmUpfSwodCxuKT0+e3Quc2V0VGltZSgrdCtuKmUpfSwodCxuKT0+KG4tdCkvZSk6VG0pO1RtLnJhbmdlO2NvbnN0IHJhPTFlMyxWcj1yYSo2MCxpYT1Wcio2MCxmYT1pYSoyNCx1VD1mYSo3LE5EPWZhKjMwLHkxPWZhKjM2NSxvcz1ibihlPT57ZS5zZXRUaW1lKGUtZS5nZXRNaWxsaXNlY29uZHMoKSl9LChlLHQpPT57ZS5zZXRUaW1lKCtlK3QqcmEpfSwoZSx0KT0+KHQtZSkvcmEsZT0+ZS5nZXRVVENTZWNvbmRzKCkpO29zLnJhbmdlO2NvbnN0IGNUPWJuKGU9PntlLnNldFRpbWUoZS1lLmdldE1pbGxpc2Vjb25kcygpLWUuZ2V0U2Vjb25kcygpKnJhKX0sKGUsdCk9PntlLnNldFRpbWUoK2UrdCpWcil9LChlLHQpPT4odC1lKS9WcixlPT5lLmdldE1pbnV0ZXMoKSk7Y1QucmFuZ2U7Y29uc3QgZlQ9Ym4oZT0+e2Uuc2V0VVRDU2Vjb25kcygwLDApfSwoZSx0KT0+e2Uuc2V0VGltZSgrZSt0KlZyKX0sKGUsdCk9Pih0LWUpL1ZyLGU9PmUuZ2V0VVRDTWludXRlcygpKTtmVC5yYW5nZTtjb25zdCBkVD1ibihlPT57ZS5zZXRUaW1lKGUtZS5nZXRNaWxsaXNlY29uZHMoKS1lLmdldFNlY29uZHMoKSpyYS1lLmdldE1pbnV0ZXMoKSpWcil9LChlLHQpPT57ZS5zZXRUaW1lKCtlK3QqaWEpfSwoZSx0KT0+KHQtZSkvaWEsZT0+ZS5nZXRIb3VycygpKTtkVC5yYW5nZTtjb25zdCBoVD1ibihlPT57ZS5zZXRVVENNaW51dGVzKDAsMCwwKX0sKGUsdCk9PntlLnNldFRpbWUoK2UrdCppYSl9LChlLHQpPT4odC1lKS9pYSxlPT5lLmdldFVUQ0hvdXJzKCkpO2hULnJhbmdlO2NvbnN0IE1kPWJuKGU9PmUuc2V0SG91cnMoMCwwLDAsMCksKGUsdCk9PmUuc2V0RGF0ZShlLmdldERhdGUoKSt0KSwoZSx0KT0+KHQtZS0odC5nZXRUaW1lem9uZU9mZnNldCgpLWUuZ2V0VGltZXpvbmVPZmZzZXQoKSkqVnIpL2ZhLGU9PmUuZ2V0RGF0ZSgpLTEpO01kLnJhbmdlO2NvbnN0IEp5PWJuKGU9PntlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSwoZSx0KT0+e2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKSt0KX0sKGUsdCk9Pih0LWUpL2ZhLGU9PmUuZ2V0VVRDRGF0ZSgpLTEpO0p5LnJhbmdlO2NvbnN0IEU1PWJuKGU9PntlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSwoZSx0KT0+e2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKSt0KX0sKGUsdCk9Pih0LWUpL2ZhLGU9Pk1hdGguZmxvb3IoZS9mYSkpO0U1LnJhbmdlO2Z1bmN0aW9uIGpzKGUpe3JldHVybiBibih0PT57dC5zZXREYXRlKHQuZ2V0RGF0ZSgpLSh0LmdldERheSgpKzctZSklNyksdC5zZXRIb3VycygwLDAsMCwwKX0sKHQsbik9Pnt0LnNldERhdGUodC5nZXREYXRlKCkrbio3KX0sKHQsbik9PihuLXQtKG4uZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKlZyKS91VCl9Y29uc3QgZXY9anMoMCksRW09anMoMSksTG5lPWpzKDIpLEluZT1qcygzKSxpdT1qcyg0KSwkbmU9anMoNSksQm5lPWpzKDYpO2V2LnJhbmdlO0VtLnJhbmdlO0xuZS5yYW5nZTtJbmUucmFuZ2U7aXUucmFuZ2U7JG5lLnJhbmdlO0JuZS5yYW5nZTtmdW5jdGlvbiBQcyhlKXtyZXR1cm4gYm4odD0+e3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKS0odC5nZXRVVENEYXkoKSs3LWUpJTcpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LCh0LG4pPT57dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK24qNyl9LCh0LG4pPT4obi10KS91VCl9Y29uc3QgdHY9UHMoMCksQ209UHMoMSksVm5lPVBzKDIpLHFuZT1QcygzKSxhdT1Qcyg0KSxVbmU9UHMoNSksem5lPVBzKDYpO3R2LnJhbmdlO0NtLnJhbmdlO1ZuZS5yYW5nZTtxbmUucmFuZ2U7YXUucmFuZ2U7VW5lLnJhbmdlO3puZS5yYW5nZTtjb25zdCBwVD1ibihlPT57ZS5zZXREYXRlKDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9LChlLHQpPT57ZS5zZXRNb250aChlLmdldE1vbnRoKCkrdCl9LChlLHQpPT50LmdldE1vbnRoKCktZS5nZXRNb250aCgpKyh0LmdldEZ1bGxZZWFyKCktZS5nZXRGdWxsWWVhcigpKSoxMixlPT5lLmdldE1vbnRoKCkpO3BULnJhbmdlO2NvbnN0IG1UPWJuKGU9PntlLnNldFVUQ0RhdGUoMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sKGUsdCk9PntlLnNldFVUQ01vbnRoKGUuZ2V0VVRDTW9udGgoKSt0KX0sKGUsdCk9PnQuZ2V0VVRDTW9udGgoKS1lLmdldFVUQ01vbnRoKCkrKHQuZ2V0VVRDRnVsbFllYXIoKS1lLmdldFVUQ0Z1bGxZZWFyKCkpKjEyLGU9PmUuZ2V0VVRDTW9udGgoKSk7bVQucmFuZ2U7Y29uc3QgZGE9Ym4oZT0+e2Uuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSwoZSx0KT0+e2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK3QpfSwoZSx0KT0+dC5nZXRGdWxsWWVhcigpLWUuZ2V0RnVsbFllYXIoKSxlPT5lLmdldEZ1bGxZZWFyKCkpO2RhLmV2ZXJ5PWU9PiFpc0Zpbml0ZShlPU1hdGguZmxvb3IoZSkpfHwhKGU+MCk/bnVsbDpibih0PT57dC5zZXRGdWxsWWVhcihNYXRoLmZsb29yKHQuZ2V0RnVsbFllYXIoKS9lKSplKSx0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0sKHQsbik9Pnt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStuKmUpfSk7ZGEucmFuZ2U7Y29uc3QgaGE9Ym4oZT0+e2Uuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSwoZSx0KT0+e2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK3QpfSwoZSx0KT0+dC5nZXRVVENGdWxsWWVhcigpLWUuZ2V0VVRDRnVsbFllYXIoKSxlPT5lLmdldFVUQ0Z1bGxZZWFyKCkpO2hhLmV2ZXJ5PWU9PiFpc0Zpbml0ZShlPU1hdGguZmxvb3IoZSkpfHwhKGU+MCk/bnVsbDpibih0PT57dC5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKHQuZ2V0VVRDRnVsbFllYXIoKS9lKSplKSx0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sKHQsbik9Pnt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStuKmUpfSk7aGEucmFuZ2U7ZnVuY3Rpb24gQzUoZSx0LG4scixpLG8pe2NvbnN0IHM9W1tvcywxLHJhXSxbb3MsNSw1KnJhXSxbb3MsMTUsMTUqcmFdLFtvcywzMCwzMCpyYV0sW28sMSxWcl0sW28sNSw1KlZyXSxbbywxNSwxNSpWcl0sW28sMzAsMzAqVnJdLFtpLDEsaWFdLFtpLDMsMyppYV0sW2ksNiw2KmlhXSxbaSwxMiwxMippYV0sW3IsMSxmYV0sW3IsMiwyKmZhXSxbbiwxLHVUXSxbdCwxLE5EXSxbdCwzLDMqTkRdLFtlLDEseTFdXTtmdW5jdGlvbiB1KGQscCxtKXtjb25zdCB5PXA8ZDt5JiYoW2QscF09W3AsZF0pO2NvbnN0IHg9bSYmdHlwZW9mIG0ucmFuZ2U9PSJmdW5jdGlvbiI/bTpmKGQscCxtKSx3PXg/eC5yYW5nZShkLCtwKzEpOltdO3JldHVybiB5P3cucmV2ZXJzZSgpOnd9ZnVuY3Rpb24gZihkLHAsbSl7Y29uc3QgeT1NYXRoLmFicyhwLWQpL20seD1aTygoWywsZ10pPT5nKS5yaWdodChzLHkpO2lmKHg9PT1zLmxlbmd0aClyZXR1cm4gZS5ldmVyeShtQShkL3kxLHAveTEsbSkpO2lmKHg9PT0wKXJldHVybiBUbS5ldmVyeShNYXRoLm1heChtQShkLHAsbSksMSkpO2NvbnN0W3csYl09c1t5L3NbeC0xXVsyXTxzW3hdWzJdL3k/eC0xOnhdO3JldHVybiB3LmV2ZXJ5KGIpfXJldHVyblt1LGZdfWNvbnN0W0ZuZSxIbmVdPUM1KGhhLG1ULHR2LEU1LGhULGZUKSxbR25lLEtuZV09QzUoZGEscFQsZXYsTWQsZFQsY1QpO2Z1bmN0aW9uIHYxKGUpe2lmKDA8PWUueSYmZS55PDEwMCl7dmFyIHQ9bmV3IERhdGUoLTEsZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpO3JldHVybiB0LnNldEZ1bGxZZWFyKGUueSksdH1yZXR1cm4gbmV3IERhdGUoZS55LGUubSxlLmQsZS5ILGUuTSxlLlMsZS5MKX1mdW5jdGlvbiBnMShlKXtpZigwPD1lLnkmJmUueTwxMDApe3ZhciB0PW5ldyBEYXRlKERhdGUuVVRDKC0xLGUubSxlLmQsZS5ILGUuTSxlLlMsZS5MKSk7cmV0dXJuIHQuc2V0VVRDRnVsbFllYXIoZS55KSx0fXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhlLnksZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpKX1mdW5jdGlvbiBZYyhlLHQsbil7cmV0dXJue3k6ZSxtOnQsZDpuLEg6MCxNOjAsUzowLEw6MH19ZnVuY3Rpb24gV25lKGUpe3ZhciB0PWUuZGF0ZVRpbWUsbj1lLmRhdGUscj1lLnRpbWUsaT1lLnBlcmlvZHMsbz1lLmRheXMscz1lLnNob3J0RGF5cyx1PWUubW9udGhzLGY9ZS5zaG9ydE1vbnRocyxkPVhjKGkpLHA9WmMoaSksbT1YYyhvKSx5PVpjKG8pLHg9WGMocyksdz1aYyhzKSxiPVhjKHUpLGc9WmModSksXz1YYyhmKSxPPVpjKGYpLEU9e2E6VyxBOkgsYjplZSxCOmssYzpudWxsLGQ6QkQsZTpCRCxmOnZyZSxnOkVyZSxHOmpyZSxIOnByZSxJOm1yZSxqOnlyZSxMOmo1LG06Z3JlLE06YnJlLHA6WixxOnRlLFE6VUQsczp6RCxTOnhyZSx1OndyZSxVOlNyZSxWOkFyZSx3Ol9yZSxXOk9yZSx4Om51bGwsWDpudWxsLHk6VHJlLFk6Q3JlLFo6UHJlLCIlIjpxRH0saj17YTpvZSxBOm1lLGI6YmUsQjpnZSxjOm51bGwsZDpWRCxlOlZELGY6a3JlLGc6RnJlLEc6R3JlLEg6TXJlLEk6UnJlLGo6TnJlLEw6TTUsbTpEcmUsTTpMcmUscDpfZSxxOlRlLFE6VUQsczp6RCxTOklyZSx1OiRyZSxVOkJyZSxWOlZyZSx3OnFyZSxXOlVyZSx4Om51bGwsWDpudWxsLHk6enJlLFk6SHJlLFo6S3JlLCIlIjpxRH0sVD17YTpWLEE6QixiOiQsQjp6LGM6VSxkOklELGU6SUQsZjpjcmUsZzpMRCxHOkRELEg6JEQsSTokRCxqOm9yZSxMOnVyZSxtOmFyZSxNOnNyZSxwOkkscTppcmUsUTpkcmUsczpocmUsUzpscmUsdTpKbmUsVTplcmUsVjp0cmUsdzpRbmUsVzpucmUseDpLLFg6TCx5OkxELFk6REQsWjpycmUsIiUiOmZyZX07RS54PVAobixFKSxFLlg9UChyLEUpLEUuYz1QKHQsRSksai54PVAobixqKSxqLlg9UChyLGopLGouYz1QKHQsaik7ZnVuY3Rpb24gUChjZSxBZSl7cmV0dXJuIGZ1bmN0aW9uKFNlKXt2YXIgc2U9W10sS2U9LTEsTGU9MCxidD1jZS5sZW5ndGgsVHQsbHQsc3I7Zm9yKFNlIGluc3RhbmNlb2YgRGF0ZXx8KFNlPW5ldyBEYXRlKCtTZSkpOysrS2U8YnQ7KWNlLmNoYXJDb2RlQXQoS2UpPT09MzcmJihzZS5wdXNoKGNlLnNsaWNlKExlLEtlKSksKGx0PWtEW1R0PWNlLmNoYXJBdCgrK0tlKV0pIT1udWxsP1R0PWNlLmNoYXJBdCgrK0tlKTpsdD1UdD09PSJlIj8iICI6IjAiLChzcj1BZVtUdF0pJiYoVHQ9c3IoU2UsbHQpKSxzZS5wdXNoKFR0KSxMZT1LZSsxKTtyZXR1cm4gc2UucHVzaChjZS5zbGljZShMZSxLZSkpLHNlLmpvaW4oIiIpfX1mdW5jdGlvbiBOKGNlLEFlKXtyZXR1cm4gZnVuY3Rpb24oU2Upe3ZhciBzZT1ZYygxOTAwLHZvaWQgMCwxKSxLZT1SKHNlLGNlLFNlKz0iIiwwKSxMZSxidDtpZihLZSE9U2UubGVuZ3RoKXJldHVybiBudWxsO2lmKCJRImluIHNlKXJldHVybiBuZXcgRGF0ZShzZS5RKTtpZigicyJpbiBzZSlyZXR1cm4gbmV3IERhdGUoc2UucyoxZTMrKCJMImluIHNlP3NlLkw6MCkpO2lmKEFlJiYhKCJaImluIHNlKSYmKHNlLlo9MCksInAiaW4gc2UmJihzZS5IPXNlLkglMTIrc2UucCoxMiksc2UubT09PXZvaWQgMCYmKHNlLm09InEiaW4gc2U/c2UucTowKSwiViJpbiBzZSl7aWYoc2UuVjwxfHxzZS5WPjUzKXJldHVybiBudWxsOyJ3ImluIHNlfHwoc2Uudz0xKSwiWiJpbiBzZT8oTGU9ZzEoWWMoc2UueSwwLDEpKSxidD1MZS5nZXRVVENEYXkoKSxMZT1idD40fHxidD09PTA/Q20uY2VpbChMZSk6Q20oTGUpLExlPUp5Lm9mZnNldChMZSwoc2UuVi0xKSo3KSxzZS55PUxlLmdldFVUQ0Z1bGxZZWFyKCksc2UubT1MZS5nZXRVVENNb250aCgpLHNlLmQ9TGUuZ2V0VVRDRGF0ZSgpKyhzZS53KzYpJTcpOihMZT12MShZYyhzZS55LDAsMSkpLGJ0PUxlLmdldERheSgpLExlPWJ0PjR8fGJ0PT09MD9FbS5jZWlsKExlKTpFbShMZSksTGU9TWQub2Zmc2V0KExlLChzZS5WLTEpKjcpLHNlLnk9TGUuZ2V0RnVsbFllYXIoKSxzZS5tPUxlLmdldE1vbnRoKCksc2UuZD1MZS5nZXREYXRlKCkrKHNlLncrNiklNyl9ZWxzZSgiVyJpbiBzZXx8IlUiaW4gc2UpJiYoInciaW4gc2V8fChzZS53PSJ1ImluIHNlP3NlLnUlNzoiVyJpbiBzZT8xOjApLGJ0PSJaImluIHNlP2cxKFljKHNlLnksMCwxKSkuZ2V0VVRDRGF5KCk6djEoWWMoc2UueSwwLDEpKS5nZXREYXkoKSxzZS5tPTAsc2UuZD0iVyJpbiBzZT8oc2Uudys2KSU3K3NlLlcqNy0oYnQrNSklNzpzZS53K3NlLlUqNy0oYnQrNiklNyk7cmV0dXJuIloiaW4gc2U/KHNlLkgrPXNlLlovMTAwfDAsc2UuTSs9c2UuWiUxMDAsZzEoc2UpKTp2MShzZSl9fWZ1bmN0aW9uIFIoY2UsQWUsU2Usc2Upe2Zvcih2YXIgS2U9MCxMZT1BZS5sZW5ndGgsYnQ9U2UubGVuZ3RoLFR0LGx0O0tlPExlOyl7aWYoc2U+PWJ0KXJldHVybi0xO2lmKFR0PUFlLmNoYXJDb2RlQXQoS2UrKyksVHQ9PT0zNyl7aWYoVHQ9QWUuY2hhckF0KEtlKyspLGx0PVRbVHQgaW4ga0Q/QWUuY2hhckF0KEtlKyspOlR0XSwhbHR8fChzZT1sdChjZSxTZSxzZSkpPDApcmV0dXJuLTF9ZWxzZSBpZihUdCE9U2UuY2hhckNvZGVBdChzZSsrKSlyZXR1cm4tMX1yZXR1cm4gc2V9ZnVuY3Rpb24gSShjZSxBZSxTZSl7dmFyIHNlPWQuZXhlYyhBZS5zbGljZShTZSkpO3JldHVybiBzZT8oY2UucD1wLmdldChzZVswXS50b0xvd2VyQ2FzZSgpKSxTZStzZVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFYoY2UsQWUsU2Upe3ZhciBzZT14LmV4ZWMoQWUuc2xpY2UoU2UpKTtyZXR1cm4gc2U/KGNlLnc9dy5nZXQoc2VbMF0udG9Mb3dlckNhc2UoKSksU2Urc2VbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCKGNlLEFlLFNlKXt2YXIgc2U9bS5leGVjKEFlLnNsaWNlKFNlKSk7cmV0dXJuIHNlPyhjZS53PXkuZ2V0KHNlWzBdLnRvTG93ZXJDYXNlKCkpLFNlK3NlWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gJChjZSxBZSxTZSl7dmFyIHNlPV8uZXhlYyhBZS5zbGljZShTZSkpO3JldHVybiBzZT8oY2UubT1PLmdldChzZVswXS50b0xvd2VyQ2FzZSgpKSxTZStzZVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHooY2UsQWUsU2Upe3ZhciBzZT1iLmV4ZWMoQWUuc2xpY2UoU2UpKTtyZXR1cm4gc2U/KGNlLm09Zy5nZXQoc2VbMF0udG9Mb3dlckNhc2UoKSksU2Urc2VbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBVKGNlLEFlLFNlKXtyZXR1cm4gUihjZSx0LEFlLFNlKX1mdW5jdGlvbiBLKGNlLEFlLFNlKXtyZXR1cm4gUihjZSxuLEFlLFNlKX1mdW5jdGlvbiBMKGNlLEFlLFNlKXtyZXR1cm4gUihjZSxyLEFlLFNlKX1mdW5jdGlvbiBXKGNlKXtyZXR1cm4gc1tjZS5nZXREYXkoKV19ZnVuY3Rpb24gSChjZSl7cmV0dXJuIG9bY2UuZ2V0RGF5KCldfWZ1bmN0aW9uIGVlKGNlKXtyZXR1cm4gZltjZS5nZXRNb250aCgpXX1mdW5jdGlvbiBrKGNlKXtyZXR1cm4gdVtjZS5nZXRNb250aCgpXX1mdW5jdGlvbiBaKGNlKXtyZXR1cm4gaVsrKGNlLmdldEhvdXJzKCk+PTEyKV19ZnVuY3Rpb24gdGUoY2Upe3JldHVybiAxK35+KGNlLmdldE1vbnRoKCkvMyl9ZnVuY3Rpb24gb2UoY2Upe3JldHVybiBzW2NlLmdldFVUQ0RheSgpXX1mdW5jdGlvbiBtZShjZSl7cmV0dXJuIG9bY2UuZ2V0VVRDRGF5KCldfWZ1bmN0aW9uIGJlKGNlKXtyZXR1cm4gZltjZS5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBnZShjZSl7cmV0dXJuIHVbY2UuZ2V0VVRDTW9udGgoKV19ZnVuY3Rpb24gX2UoY2Upe3JldHVybiBpWysoY2UuZ2V0VVRDSG91cnMoKT49MTIpXX1mdW5jdGlvbiBUZShjZSl7cmV0dXJuIDErfn4oY2UuZ2V0VVRDTW9udGgoKS8zKX1yZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKGNlKXt2YXIgQWU9UChjZSs9IiIsRSk7cmV0dXJuIEFlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGNlfSxBZX0scGFyc2U6ZnVuY3Rpb24oY2Upe3ZhciBBZT1OKGNlKz0iIiwhMSk7cmV0dXJuIEFlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGNlfSxBZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKGNlKXt2YXIgQWU9UChjZSs9IiIsaik7cmV0dXJuIEFlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGNlfSxBZX0sdXRjUGFyc2U6ZnVuY3Rpb24oY2Upe3ZhciBBZT1OKGNlKz0iIiwhMCk7cmV0dXJuIEFlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGNlfSxBZX19fXZhciBrRD17Ii0iOiIiLF86IiAiLDA6IjAifSxUbj0vXlxzKlxkKy8sWW5lPS9eJS8sWG5lPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiBodChlLHQsbil7dmFyIHI9ZTwwPyItIjoiIixpPShyPy1lOmUpKyIiLG89aS5sZW5ndGg7cmV0dXJuIHIrKG88bj9uZXcgQXJyYXkobi1vKzEpLmpvaW4odCkraTppKX1mdW5jdGlvbiBabmUoZSl7cmV0dXJuIGUucmVwbGFjZShYbmUsIlxcJCYiKX1mdW5jdGlvbiBYYyhlKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrZS5tYXAoWm5lKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gWmMoZSl7cmV0dXJuIG5ldyBNYXAoZS5tYXAoKHQsbik9Plt0LnRvTG93ZXJDYXNlKCksbl0pKX1mdW5jdGlvbiBRbmUoZSx0LG4pe3ZhciByPVRuLmV4ZWModC5zbGljZShuLG4rMSkpO3JldHVybiByPyhlLnc9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSm5lKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8oZS51PStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGVyZShlLHQsbil7dmFyIHI9VG4uZXhlYyh0LnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KGUuVT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB0cmUoZSx0LG4pe3ZhciByPVRuLmV4ZWModC5zbGljZShuLG4rMikpO3JldHVybiByPyhlLlY9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbnJlKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8oZS5XPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEREKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzQpKTtyZXR1cm4gcj8oZS55PStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIExEKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8oZS55PStyWzBdKygrclswXT42OD8xOTAwOjJlMyksbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gcnJlKGUsdCxuKXt2YXIgcj0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyh0LnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KGUuWj1yWzFdPzA6LShyWzJdKyhyWzNdfHwiMDAiKSksbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaXJlKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzEpKTtyZXR1cm4gcj8oZS5xPXJbMF0qMy0zLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGFyZShlLHQsbil7dmFyIHI9VG4uZXhlYyh0LnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KGUubT1yWzBdLTEsbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSUQoZSx0LG4pe3ZhciByPVRuLmV4ZWModC5zbGljZShuLG4rMikpO3JldHVybiByPyhlLmQ9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gb3JlKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzMpKTtyZXR1cm4gcj8oZS5tPTAsZS5kPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uICREKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzIpKTtyZXR1cm4gcj8oZS5IPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHNyZShlLHQsbil7dmFyIHI9VG4uZXhlYyh0LnNsaWNlKG4sbisyKSk7cmV0dXJuIHI/KGUuTT0rclswXSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBscmUoZSx0LG4pe3ZhciByPVRuLmV4ZWModC5zbGljZShuLG4rMikpO3JldHVybiByPyhlLlM9K3JbMF0sbityWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdXJlKGUsdCxuKXt2YXIgcj1Ubi5leGVjKHQuc2xpY2UobixuKzMpKTtyZXR1cm4gcj8oZS5MPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGNyZShlLHQsbil7dmFyIHI9VG4uZXhlYyh0LnNsaWNlKG4sbis2KSk7cmV0dXJuIHI/KGUuTD1NYXRoLmZsb29yKHJbMF0vMWUzKSxuK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmcmUoZSx0LG4pe3ZhciByPVluZS5leGVjKHQuc2xpY2UobixuKzEpKTtyZXR1cm4gcj9uK3JbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIGRyZShlLHQsbil7dmFyIHI9VG4uZXhlYyh0LnNsaWNlKG4pKTtyZXR1cm4gcj8oZS5RPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGhyZShlLHQsbil7dmFyIHI9VG4uZXhlYyh0LnNsaWNlKG4pKTtyZXR1cm4gcj8oZS5zPStyWzBdLG4rclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEJEKGUsdCl7cmV0dXJuIGh0KGUuZ2V0RGF0ZSgpLHQsMil9ZnVuY3Rpb24gcHJlKGUsdCl7cmV0dXJuIGh0KGUuZ2V0SG91cnMoKSx0LDIpfWZ1bmN0aW9uIG1yZShlLHQpe3JldHVybiBodChlLmdldEhvdXJzKCklMTJ8fDEyLHQsMil9ZnVuY3Rpb24geXJlKGUsdCl7cmV0dXJuIGh0KDErTWQuY291bnQoZGEoZSksZSksdCwzKX1mdW5jdGlvbiBqNShlLHQpe3JldHVybiBodChlLmdldE1pbGxpc2Vjb25kcygpLHQsMyl9ZnVuY3Rpb24gdnJlKGUsdCl7cmV0dXJuIGo1KGUsdCkrIjAwMCJ9ZnVuY3Rpb24gZ3JlKGUsdCl7cmV0dXJuIGh0KGUuZ2V0TW9udGgoKSsxLHQsMil9ZnVuY3Rpb24gYnJlKGUsdCl7cmV0dXJuIGh0KGUuZ2V0TWludXRlcygpLHQsMil9ZnVuY3Rpb24geHJlKGUsdCl7cmV0dXJuIGh0KGUuZ2V0U2Vjb25kcygpLHQsMil9ZnVuY3Rpb24gd3JlKGUpe3ZhciB0PWUuZ2V0RGF5KCk7cmV0dXJuIHQ9PT0wPzc6dH1mdW5jdGlvbiBTcmUoZSx0KXtyZXR1cm4gaHQoZXYuY291bnQoZGEoZSktMSxlKSx0LDIpfWZ1bmN0aW9uIFA1KGUpe3ZhciB0PWUuZ2V0RGF5KCk7cmV0dXJuIHQ+PTR8fHQ9PT0wP2l1KGUpOml1LmNlaWwoZSl9ZnVuY3Rpb24gQXJlKGUsdCl7cmV0dXJuIGU9UDUoZSksaHQoaXUuY291bnQoZGEoZSksZSkrKGRhKGUpLmdldERheSgpPT09NCksdCwyKX1mdW5jdGlvbiBfcmUoZSl7cmV0dXJuIGUuZ2V0RGF5KCl9ZnVuY3Rpb24gT3JlKGUsdCl7cmV0dXJuIGh0KEVtLmNvdW50KGRhKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBUcmUoZSx0KXtyZXR1cm4gaHQoZS5nZXRGdWxsWWVhcigpJTEwMCx0LDIpfWZ1bmN0aW9uIEVyZShlLHQpe3JldHVybiBlPVA1KGUpLGh0KGUuZ2V0RnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiBDcmUoZSx0KXtyZXR1cm4gaHQoZS5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIGpyZShlLHQpe3ZhciBuPWUuZ2V0RGF5KCk7cmV0dXJuIGU9bj49NHx8bj09PTA/aXUoZSk6aXUuY2VpbChlKSxodChlLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9ZnVuY3Rpb24gUHJlKGUpe3ZhciB0PWUuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4odD4wPyItIjoodCo9LTEsIisiKSkraHQodC82MHwwLCIwIiwyKStodCh0JTYwLCIwIiwyKX1mdW5jdGlvbiBWRChlLHQpe3JldHVybiBodChlLmdldFVUQ0RhdGUoKSx0LDIpfWZ1bmN0aW9uIE1yZShlLHQpe3JldHVybiBodChlLmdldFVUQ0hvdXJzKCksdCwyKX1mdW5jdGlvbiBScmUoZSx0KXtyZXR1cm4gaHQoZS5nZXRVVENIb3VycygpJTEyfHwxMix0LDIpfWZ1bmN0aW9uIE5yZShlLHQpe3JldHVybiBodCgxK0p5LmNvdW50KGhhKGUpLGUpLHQsMyl9ZnVuY3Rpb24gTTUoZSx0KXtyZXR1cm4gaHQoZS5nZXRVVENNaWxsaXNlY29uZHMoKSx0LDMpfWZ1bmN0aW9uIGtyZShlLHQpe3JldHVybiBNNShlLHQpKyIwMDAifWZ1bmN0aW9uIERyZShlLHQpe3JldHVybiBodChlLmdldFVUQ01vbnRoKCkrMSx0LDIpfWZ1bmN0aW9uIExyZShlLHQpe3JldHVybiBodChlLmdldFVUQ01pbnV0ZXMoKSx0LDIpfWZ1bmN0aW9uIElyZShlLHQpe3JldHVybiBodChlLmdldFVUQ1NlY29uZHMoKSx0LDIpfWZ1bmN0aW9uICRyZShlKXt2YXIgdD1lLmdldFVUQ0RheSgpO3JldHVybiB0PT09MD83OnR9ZnVuY3Rpb24gQnJlKGUsdCl7cmV0dXJuIGh0KHR2LmNvdW50KGhhKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBSNShlKXt2YXIgdD1lLmdldFVUQ0RheSgpO3JldHVybiB0Pj00fHx0PT09MD9hdShlKTphdS5jZWlsKGUpfWZ1bmN0aW9uIFZyZShlLHQpe3JldHVybiBlPVI1KGUpLGh0KGF1LmNvdW50KGhhKGUpLGUpKyhoYShlKS5nZXRVVENEYXkoKT09PTQpLHQsMil9ZnVuY3Rpb24gcXJlKGUpe3JldHVybiBlLmdldFVUQ0RheSgpfWZ1bmN0aW9uIFVyZShlLHQpe3JldHVybiBodChDbS5jb3VudChoYShlKS0xLGUpLHQsMil9ZnVuY3Rpb24genJlKGUsdCl7cmV0dXJuIGh0KGUuZ2V0VVRDRnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiBGcmUoZSx0KXtyZXR1cm4gZT1SNShlKSxodChlLmdldFVUQ0Z1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gSHJlKGUsdCl7cmV0dXJuIGh0KGUuZ2V0VVRDRnVsbFllYXIoKSUxZTQsdCw0KX1mdW5jdGlvbiBHcmUoZSx0KXt2YXIgbj1lLmdldFVUQ0RheSgpO3JldHVybiBlPW4+PTR8fG49PT0wP2F1KGUpOmF1LmNlaWwoZSksaHQoZS5nZXRVVENGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIEtyZSgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gcUQoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gVUQoZSl7cmV0dXJuK2V9ZnVuY3Rpb24gekQoZSl7cmV0dXJuIE1hdGguZmxvb3IoK2UvMWUzKX12YXIgYmwsTjUsazU7V3JlKHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7ZnVuY3Rpb24gV3JlKGUpe3JldHVybiBibD1XbmUoZSksTjU9YmwuZm9ybWF0LGJsLnBhcnNlLGs1PWJsLnV0Y0Zvcm1hdCxibC51dGNQYXJzZSxibH1mdW5jdGlvbiBZcmUoZSl7cmV0dXJuIG5ldyBEYXRlKGUpfWZ1bmN0aW9uIFhyZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGU/K2U6K25ldyBEYXRlKCtlKX1mdW5jdGlvbiB5VChlLHQsbixyLGksbyxzLHUsZixkKXt2YXIgcD1uVCgpLG09cC5pbnZlcnQseT1wLmRvbWFpbix4PWQoIi4lTCIpLHc9ZCgiOiVTIiksYj1kKCIlSTolTSIpLGc9ZCgiJUkgJXAiKSxfPWQoIiVhICVkIiksTz1kKCIlYiAlZCIpLEU9ZCgiJUIiKSxqPWQoIiVZIik7ZnVuY3Rpb24gVChQKXtyZXR1cm4oZihQKTxQP3g6dShQKTxQP3c6cyhQKTxQP2I6byhQKTxQP2c6cihQKTxQP2koUCk8UD9fOk86bihQKTxQP0U6aikoUCl9cmV0dXJuIHAuaW52ZXJ0PWZ1bmN0aW9uKFApe3JldHVybiBuZXcgRGF0ZShtKFApKX0scC5kb21haW49ZnVuY3Rpb24oUCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/eShBcnJheS5mcm9tKFAsWHJlKSk6eSgpLm1hcChZcmUpfSxwLnRpY2tzPWZ1bmN0aW9uKFApe3ZhciBOPXkoKTtyZXR1cm4gZShOWzBdLE5bTi5sZW5ndGgtMV0sUD8/MTApfSxwLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oUCxOKXtyZXR1cm4gTj09bnVsbD9UOmQoTil9LHAubmljZT1mdW5jdGlvbihQKXt2YXIgTj15KCk7cmV0dXJuKCFQfHx0eXBlb2YgUC5yYW5nZSE9ImZ1bmN0aW9uIikmJihQPXQoTlswXSxOW04ubGVuZ3RoLTFdLFA/PzEwKSksUD95KHg1KE4sUCkpOnB9LHAuY29weT1mdW5jdGlvbigpe3JldHVybiBQZChwLHlUKGUsdCxuLHIsaSxvLHMsdSxmLGQpKX0scH1mdW5jdGlvbiBacmUoKXtyZXR1cm4gRnIuYXBwbHkoeVQoR25lLEtuZSxkYSxwVCxldixNZCxkVCxjVCxvcyxONSkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUXJlKCl7cmV0dXJuIEZyLmFwcGx5KHlUKEZuZSxIbmUsaGEsbVQsdHYsSnksaFQsZlQsb3MsazUpLmRvbWFpbihbRGF0ZS5VVEMoMmUzLDAsMSksRGF0ZS5VVEMoMmUzLDAsMildKSxhcmd1bWVudHMpfWZ1bmN0aW9uIG52KCl7dmFyIGU9MCx0PTEsbixyLGksbyxzPUtuLHU9ITEsZjtmdW5jdGlvbiBkKG0pe3JldHVybiBtPT1udWxsfHxpc05hTihtPSttKT9mOnMoaT09PTA/LjU6KG09KG8obSktbikqaSx1P01hdGgubWF4KDAsTWF0aC5taW4oMSxtKSk6bSkpfWQuZG9tYWluPWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhbZSx0XT1tLG49byhlPStlKSxyPW8odD0rdCksaT1uPT09cj8wOjEvKHItbiksZCk6W2UsdF19LGQuY2xhbXA9ZnVuY3Rpb24obSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ISFtLGQpOnV9LGQuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW0sZCk6c307ZnVuY3Rpb24gcChtKXtyZXR1cm4gZnVuY3Rpb24oeSl7dmFyIHgsdztyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW3gsd109eSxzPW0oeCx3KSxkKTpbcygwKSxzKDEpXX19cmV0dXJuIGQucmFuZ2U9cChCdSksZC5yYW5nZVJvdW5kPXAodFQpLGQudW5rbm93bj1mdW5jdGlvbihtKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1tLGQpOmZ9LGZ1bmN0aW9uKG0pe3JldHVybiBvPW0sbj1tKGUpLHI9bSh0KSxpPW49PT1yPzA6MS8oci1uKSxkfX1mdW5jdGlvbiB3byhlLHQpe3JldHVybiB0LmRvbWFpbihlLmRvbWFpbigpKS5pbnRlcnBvbGF0b3IoZS5pbnRlcnBvbGF0b3IoKSkuY2xhbXAoZS5jbGFtcCgpKS51bmtub3duKGUudW5rbm93bigpKX1mdW5jdGlvbiBENSgpe3ZhciBlPXhvKG52KCkoS24pKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHdvKGUsRDUoKSl9LGJhLmFwcGx5KGUsYXJndW1lbnRzKX1mdW5jdGlvbiBMNSgpe3ZhciBlPWFUKG52KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gd28oZSxMNSgpKS5iYXNlKGUuYmFzZSgpKX0sYmEuYXBwbHkoZSxhcmd1bWVudHMpfWZ1bmN0aW9uIEk1KCl7dmFyIGU9b1QobnYoKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiB3byhlLEk1KCkpLmNvbnN0YW50KGUuY29uc3RhbnQoKSl9LGJhLmFwcGx5KGUsYXJndW1lbnRzKX1mdW5jdGlvbiB2VCgpe3ZhciBlPXNUKG52KCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gd28oZSx2VCgpKS5leHBvbmVudChlLmV4cG9uZW50KCkpfSxiYS5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gSnJlKCl7cmV0dXJuIHZULmFwcGx5KG51bGwsYXJndW1lbnRzKS5leHBvbmVudCguNSl9ZnVuY3Rpb24gJDUoKXt2YXIgZT1bXSx0PUtuO2Z1bmN0aW9uIG4ocil7aWYociE9bnVsbCYmIWlzTmFOKHI9K3IpKXJldHVybiB0KChDZChlLHIsMSktMSkvKGUubGVuZ3RoLTEpKX1yZXR1cm4gbi5kb21haW49ZnVuY3Rpb24ocil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdO2ZvcihsZXQgaSBvZiByKWkhPW51bGwmJiFpc05hTihpPStpKSYmZS5wdXNoKGkpO3JldHVybiBlLnNvcnQoYW8pLG59LG4uaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXIsbik6dH0sbi5yYW5nZT1mdW5jdGlvbigpe3JldHVybiBlLm1hcCgocixpKT0+dChpLyhlLmxlbmd0aC0xKSkpfSxuLnF1YW50aWxlcz1mdW5jdGlvbihyKXtyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOnIrMX0sKGksbyk9PkJ0ZShlLG8vcikpfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gJDUodCkuZG9tYWluKGUpfSxiYS5hcHBseShuLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcnYoKXt2YXIgZT0wLHQ9LjUsbj0xLHI9MSxpLG8scyx1LGYsZD1LbixwLG09ITEseTtmdW5jdGlvbiB4KGIpe3JldHVybiBpc05hTihiPStiKT95OihiPS41KygoYj0rcChiKSktbykqKHIqYjxyKm8/dTpmKSxkKG0/TWF0aC5tYXgoMCxNYXRoLm1pbigxLGIpKTpiKSl9eC5kb21haW49ZnVuY3Rpb24oYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFtlLHQsbl09YixpPXAoZT0rZSksbz1wKHQ9K3QpLHM9cChuPStuKSx1PWk9PT1vPzA6LjUvKG8taSksZj1vPT09cz8wOi41LyhzLW8pLHI9bzxpPy0xOjEseCk6W2UsdCxuXX0seC5jbGFtcD1mdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0hIWIseCk6bX0seC5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24oYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9Yix4KTpkfTtmdW5jdGlvbiB3KGIpe3JldHVybiBmdW5jdGlvbihnKXt2YXIgXyxPLEU7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFtfLE8sRV09ZyxkPWZuZShiLFtfLE8sRV0pLHgpOltkKDApLGQoLjUpLGQoMSldfX1yZXR1cm4geC5yYW5nZT13KEJ1KSx4LnJhbmdlUm91bmQ9dyh0VCkseC51bmtub3duPWZ1bmN0aW9uKGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PWIseCk6eX0sZnVuY3Rpb24oYil7cmV0dXJuIHA9YixpPWIoZSksbz1iKHQpLHM9YihuKSx1PWk9PT1vPzA6LjUvKG8taSksZj1vPT09cz8wOi41LyhzLW8pLHI9bzxpPy0xOjEseH19ZnVuY3Rpb24gQjUoKXt2YXIgZT14byhydigpKEtuKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiB3byhlLEI1KCkpfSxiYS5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVjUoKXt2YXIgZT1hVChydigpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHdvKGUsVjUoKSkuYmFzZShlLmJhc2UoKSl9LGJhLmFwcGx5KGUsYXJndW1lbnRzKX1mdW5jdGlvbiBxNSgpe3ZhciBlPW9UKHJ2KCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gd28oZSxxNSgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxiYS5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZ1QoKXt2YXIgZT1zVChydigpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHdvKGUsZ1QoKSkuZXhwb25lbnQoZS5leHBvbmVudCgpKX0sYmEuYXBwbHkoZSxhcmd1bWVudHMpfWZ1bmN0aW9uIGVpZSgpe3JldHVybiBnVC5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfWNvbnN0IEZEPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxzY2FsZUJhbmQ6JGYsc2NhbGVEaXZlcmdpbmc6QjUsc2NhbGVEaXZlcmdpbmdMb2c6VjUsc2NhbGVEaXZlcmdpbmdQb3c6Z1Qsc2NhbGVEaXZlcmdpbmdTcXJ0OmVpZSxzY2FsZURpdmVyZ2luZ1N5bWxvZzpxNSxzY2FsZUlkZW50aXR5OmI1LHNjYWxlSW1wbGljaXQ6eUEsc2NhbGVMaW5lYXI6T20sc2NhbGVMb2c6dzUsc2NhbGVPcmRpbmFsOlFPLHNjYWxlUG9pbnQ6bWYsc2NhbGVQb3c6bFQsc2NhbGVRdWFudGlsZTpfNSxzY2FsZVF1YW50aXplOk81LHNjYWxlUmFkaWFsOkE1LHNjYWxlU2VxdWVudGlhbDpENSxzY2FsZVNlcXVlbnRpYWxMb2c6TDUsc2NhbGVTZXF1ZW50aWFsUG93OnZULHNjYWxlU2VxdWVudGlhbFF1YW50aWxlOiQ1LHNjYWxlU2VxdWVudGlhbFNxcnQ6SnJlLHNjYWxlU2VxdWVudGlhbFN5bWxvZzpJNSxzY2FsZVNxcnQ6a25lLHNjYWxlU3ltbG9nOlM1LHNjYWxlVGhyZXNob2xkOlQ1LHNjYWxlVGltZTpacmUsc2NhbGVVdGM6UXJlLHRpY2tGb3JtYXQ6ZzV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7dmFyIGIxLEhEO2Z1bmN0aW9uIGl2KCl7aWYoSEQpcmV0dXJuIGIxO0hEPTE7dmFyIGU9RHUoKTtmdW5jdGlvbiB0KG4scixpKXtmb3IodmFyIG89LTEscz1uLmxlbmd0aDsrK288czspe3ZhciB1PW5bb10sZj1yKHUpO2lmKGYhPW51bGwmJihkPT09dm9pZCAwP2Y9PT1mJiYhZShmKTppKGYsZCkpKXZhciBkPWYscD11fXJldHVybiBwfXJldHVybiBiMT10LGIxfXZhciB4MSxHRDtmdW5jdGlvbiBVNSgpe2lmKEdEKXJldHVybiB4MTtHRD0xO2Z1bmN0aW9uIGUodCxuKXtyZXR1cm4gdD5ufXJldHVybiB4MT1lLHgxfXZhciB3MSxLRDtmdW5jdGlvbiB0aWUoKXtpZihLRClyZXR1cm4gdzE7S0Q9MTt2YXIgZT1pdigpLHQ9VTUoKSxuPSR1KCk7ZnVuY3Rpb24gcihpKXtyZXR1cm4gaSYmaS5sZW5ndGg/ZShpLG4sdCk6dm9pZCAwfXJldHVybiB3MT1yLHcxfXZhciBuaWU9dGllKCk7Y29uc3QgUWE9T3QobmllKTt2YXIgUzEsV0Q7ZnVuY3Rpb24gejUoKXtpZihXRClyZXR1cm4gUzE7V0Q9MTtmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHQ8bn1yZXR1cm4gUzE9ZSxTMX12YXIgQTEsWUQ7ZnVuY3Rpb24gcmllKCl7aWYoWUQpcmV0dXJuIEExO1lEPTE7dmFyIGU9aXYoKSx0PXo1KCksbj0kdSgpO2Z1bmN0aW9uIHIoaSl7cmV0dXJuIGkmJmkubGVuZ3RoP2UoaSxuLHQpOnZvaWQgMH1yZXR1cm4gQTE9cixBMX12YXIgaWllPXJpZSgpO2NvbnN0IGF2PU90KGlpZSk7dmFyIF8xLFhEO2Z1bmN0aW9uIGFpZSgpe2lmKFhEKXJldHVybiBfMTtYRD0xO3ZhciBlPWtPKCksdD1EaSgpLG49UVYoKSxyPW9yKCk7ZnVuY3Rpb24gaShvLHMpe3ZhciB1PXIobyk/ZTpuO3JldHVybiB1KG8sdChzLDMpKX1yZXR1cm4gXzE9aSxfMX12YXIgTzEsWkQ7ZnVuY3Rpb24gb2llKCl7aWYoWkQpcmV0dXJuIE8xO1pEPTE7dmFyIGU9WFYoKSx0PWFpZSgpO2Z1bmN0aW9uIG4ocixpKXtyZXR1cm4gZSh0KHIsaSksMSl9cmV0dXJuIE8xPW4sTzF9dmFyIHNpZT1vaWUoKTtjb25zdCBsaWU9T3Qoc2llKTt2YXIgVDEsUUQ7ZnVuY3Rpb24gdWllKCl7aWYoUUQpcmV0dXJuIFQxO1FEPTE7dmFyIGU9S08oKTtmdW5jdGlvbiB0KG4scil7cmV0dXJuIGUobixyKX1yZXR1cm4gVDE9dCxUMX12YXIgY2llPXVpZSgpO2NvbnN0IHdzPU90KGNpZSk7dmFyIFZ1PTFlOSxmaWU9e3ByZWNpc2lvbjoyMCxyb3VuZGluZzo0LHRvRXhwTmVnOi03LHRvRXhwUG9zOjIxLExOMTA6IjIuMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjA3NjAxMTAxNDg4NjI4NzcyOTc2MDMzMzI3OTAwOTY3NTcyNjA5Njc3MzUyNDgwMjM1OTk3MjA1MDg5NTk4Mjk4MzQxOTY3Nzg0MDQyMjg2In0seFQsVXQ9ITAsenI9IltEZWNpbWFsRXJyb3JdICIsZHM9enIrIkludmFsaWQgYXJndW1lbnQ6ICIsYlQ9enIrIkV4cG9uZW50IG91dCBvZiByYW5nZTogIixxdT1NYXRoLmZsb29yLGVzPU1hdGgucG93LGRpZT0vXihcZCsoXC5cZCopP3xcLlxkKykoZVsrLV0/XGQrKT8kL2ksYnIsX249MWU3LEJ0PTcsRjU9OTAwNzE5OTI1NDc0MDk5MSxqbT1xdShGNS9CdCksTWU9e307TWUuYWJzb2x1dGVWYWx1ZT1NZS5hYnM9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtyZXR1cm4gZS5zJiYoZS5zPTEpLGV9O01lLmNvbXBhcmVkVG89TWUuY21wPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG89dGhpcztpZihlPW5ldyBvLmNvbnN0cnVjdG9yKGUpLG8ucyE9PWUucylyZXR1cm4gby5zfHwtZS5zO2lmKG8uZSE9PWUuZSlyZXR1cm4gby5lPmUuZV5vLnM8MD8xOi0xO2ZvcihyPW8uZC5sZW5ndGgsaT1lLmQubGVuZ3RoLHQ9MCxuPXI8aT9yOmk7dDxuOysrdClpZihvLmRbdF0hPT1lLmRbdF0pcmV0dXJuIG8uZFt0XT5lLmRbdF1eby5zPDA/MTotMTtyZXR1cm4gcj09PWk/MDpyPmleby5zPDA/MTotMX07TWUuZGVjaW1hbFBsYWNlcz1NZS5kcD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmQubGVuZ3RoLTEsbj0odC1lLmUpKkJ0O2lmKHQ9ZS5kW3RdLHQpZm9yKDt0JTEwPT0wO3QvPTEwKW4tLTtyZXR1cm4gbjwwPzA6bn07TWUuZGl2aWRlZEJ5PU1lLmRpdj1mdW5jdGlvbihlKXtyZXR1cm4gdWEodGhpcyxuZXcgdGhpcy5jb25zdHJ1Y3RvcihlKSl9O01lLmRpdmlkZWRUb0ludGVnZXJCeT1NZS5pZGl2PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10LmNvbnN0cnVjdG9yO3JldHVybiBQdCh1YSh0LG5ldyBuKGUpLDAsMSksbi5wcmVjaXNpb24pfTtNZS5lcXVhbHM9TWUuZXE9ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuY21wKGUpfTtNZS5leHBvbmVudD1mdW5jdGlvbigpe3JldHVybiBsbih0aGlzKX07TWUuZ3JlYXRlclRoYW49TWUuZ3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY21wKGUpPjB9O01lLmdyZWF0ZXJUaGFuT3JFcXVhbFRvPU1lLmd0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk+PTB9O01lLmlzSW50ZWdlcj1NZS5pc2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmU+dGhpcy5kLmxlbmd0aC0yfTtNZS5pc05lZ2F0aXZlPU1lLmlzbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuczwwfTtNZS5pc1Bvc2l0aXZlPU1lLmlzcG9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucz4wfTtNZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zPT09MH07TWUubGVzc1RoYW49TWUubHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY21wKGUpPDB9O01lLmxlc3NUaGFuT3JFcXVhbFRvPU1lLmx0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8MX07TWUubG9nYXJpdGhtPU1lLmxvZz1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMscj1uLmNvbnN0cnVjdG9yLGk9ci5wcmVjaXNpb24sbz1pKzU7aWYoZT09PXZvaWQgMCllPW5ldyByKDEwKTtlbHNlIGlmKGU9bmV3IHIoZSksZS5zPDF8fGUuZXEoYnIpKXRocm93IEVycm9yKHpyKyJOYU4iKTtpZihuLnM8MSl0aHJvdyBFcnJvcih6cisobi5zPyJOYU4iOiItSW5maW5pdHkiKSk7cmV0dXJuIG4uZXEoYnIpP25ldyByKDApOihVdD0hMSx0PXVhKHpmKG4sbyksemYoZSxvKSxvKSxVdD0hMCxQdCh0LGkpKX07TWUubWludXM9TWUuc3ViPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGU9bmV3IHQuY29uc3RydWN0b3IoZSksdC5zPT1lLnM/SzUodCxlKTpINSh0LChlLnM9LWUucyxlKSl9O01lLm1vZHVsbz1NZS5tb2Q9ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLHI9bi5jb25zdHJ1Y3RvcixpPXIucHJlY2lzaW9uO2lmKGU9bmV3IHIoZSksIWUucyl0aHJvdyBFcnJvcih6cisiTmFOIik7cmV0dXJuIG4ucz8oVXQ9ITEsdD11YShuLGUsMCwxKS50aW1lcyhlKSxVdD0hMCxuLm1pbnVzKHQpKTpQdChuZXcgcihuKSxpKX07TWUubmF0dXJhbEV4cG9uZW50aWFsPU1lLmV4cD1mdW5jdGlvbigpe3JldHVybiBHNSh0aGlzKX07TWUubmF0dXJhbExvZ2FyaXRobT1NZS5sbj1mdW5jdGlvbigpe3JldHVybiB6Zih0aGlzKX07TWUubmVnYXRlZD1NZS5uZWc9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtyZXR1cm4gZS5zPS1lLnN8fDAsZX07TWUucGx1cz1NZS5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZT1uZXcgdC5jb25zdHJ1Y3RvcihlKSx0LnM9PWUucz9INSh0LGUpOks1KHQsKGUucz0tZS5zLGUpKX07TWUucHJlY2lzaW9uPU1lLnNkPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpPXRoaXM7aWYoZSE9PXZvaWQgMCYmZSE9PSEhZSYmZSE9PTEmJmUhPT0wKXRocm93IEVycm9yKGRzK2UpO2lmKHQ9bG4oaSkrMSxyPWkuZC5sZW5ndGgtMSxuPXIqQnQrMSxyPWkuZFtyXSxyKXtmb3IoO3IlMTA9PTA7ci89MTApbi0tO2ZvcihyPWkuZFswXTtyPj0xMDtyLz0xMCluKyt9cmV0dXJuIGUmJnQ+bj90Om59O01lLnNxdWFyZVJvb3Q9TWUuc3FydD1mdW5jdGlvbigpe3ZhciBlLHQsbixyLGksbyxzLHU9dGhpcyxmPXUuY29uc3RydWN0b3I7aWYodS5zPDEpe2lmKCF1LnMpcmV0dXJuIG5ldyBmKDApO3Rocm93IEVycm9yKHpyKyJOYU4iKX1mb3IoZT1sbih1KSxVdD0hMSxpPU1hdGguc3FydCgrdSksaT09MHx8aT09MS8wPyh0PUFpKHUuZCksKHQubGVuZ3RoK2UpJTI9PTAmJih0Kz0iMCIpLGk9TWF0aC5zcXJ0KHQpLGU9cXUoKGUrMSkvMiktKGU8MHx8ZSUyKSxpPT0xLzA/dD0iNWUiK2U6KHQ9aS50b0V4cG9uZW50aWFsKCksdD10LnNsaWNlKDAsdC5pbmRleE9mKCJlIikrMSkrZSkscj1uZXcgZih0KSk6cj1uZXcgZihpLnRvU3RyaW5nKCkpLG49Zi5wcmVjaXNpb24saT1zPW4rMzs7KWlmKG89cixyPW8ucGx1cyh1YSh1LG8scysyKSkudGltZXMoLjUpLEFpKG8uZCkuc2xpY2UoMCxzKT09PSh0PUFpKHIuZCkpLnNsaWNlKDAscykpe2lmKHQ9dC5zbGljZShzLTMscysxKSxpPT1zJiZ0PT0iNDk5OSIpe2lmKFB0KG8sbisxLDApLG8udGltZXMobykuZXEodSkpe3I9bzticmVha319ZWxzZSBpZih0IT0iOTk5OSIpYnJlYWs7cys9NH1yZXR1cm4gVXQ9ITAsUHQocixuKX07TWUudGltZXM9TWUubXVsPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8scyx1LGYsZCxwPXRoaXMsbT1wLmNvbnN0cnVjdG9yLHk9cC5kLHg9KGU9bmV3IG0oZSkpLmQ7aWYoIXAuc3x8IWUucylyZXR1cm4gbmV3IG0oMCk7Zm9yKGUucyo9cC5zLG49cC5lK2UuZSxmPXkubGVuZ3RoLGQ9eC5sZW5ndGgsZjxkJiYobz15LHk9eCx4PW8scz1mLGY9ZCxkPXMpLG89W10scz1mK2Qscj1zO3ItLTspby5wdXNoKDApO2ZvcihyPWQ7LS1yPj0wOyl7Zm9yKHQ9MCxpPWYrcjtpPnI7KXU9b1tpXSt4W3JdKnlbaS1yLTFdK3Qsb1tpLS1dPXUlX258MCx0PXUvX258MDtvW2ldPShvW2ldK3QpJV9ufDB9Zm9yKDshb1stLXNdOylvLnBvcCgpO3JldHVybiB0PysrbjpvLnNoaWZ0KCksZS5kPW8sZS5lPW4sVXQ/UHQoZSxtLnByZWNpc2lvbik6ZX07TWUudG9EZWNpbWFsUGxhY2VzPU1lLnRvZHA9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9bi5jb25zdHJ1Y3RvcjtyZXR1cm4gbj1uZXcgcihuKSxlPT09dm9pZCAwP246KFJpKGUsMCxWdSksdD09PXZvaWQgMD90PXIucm91bmRpbmc6UmkodCwwLDgpLFB0KG4sZStsbihuKSsxLHQpKX07TWUudG9FeHBvbmVudGlhbD1mdW5jdGlvbihlLHQpe3ZhciBuLHI9dGhpcyxpPXIuY29uc3RydWN0b3I7cmV0dXJuIGU9PT12b2lkIDA/bj1TcyhyLCEwKTooUmkoZSwwLFZ1KSx0PT09dm9pZCAwP3Q9aS5yb3VuZGluZzpSaSh0LDAsOCkscj1QdChuZXcgaShyKSxlKzEsdCksbj1TcyhyLCEwLGUrMSkpLG59O01lLnRvRml4ZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9dGhpcyxvPWkuY29uc3RydWN0b3I7cmV0dXJuIGU9PT12b2lkIDA/U3MoaSk6KFJpKGUsMCxWdSksdD09PXZvaWQgMD90PW8ucm91bmRpbmc6UmkodCwwLDgpLHI9UHQobmV3IG8oaSksZStsbihpKSsxLHQpLG49U3Moci5hYnMoKSwhMSxlK2xuKHIpKzEpLGkuaXNuZWcoKSYmIWkuaXNaZXJvKCk/Ii0iK246bil9O01lLnRvSW50ZWdlcj1NZS50b2ludD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmNvbnN0cnVjdG9yO3JldHVybiBQdChuZXcgdChlKSxsbihlKSsxLHQucm91bmRpbmcpfTtNZS50b051bWJlcj1mdW5jdGlvbigpe3JldHVybit0aGlzfTtNZS50b1Bvd2VyPU1lLnBvdz1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLHMsdT10aGlzLGY9dS5jb25zdHJ1Y3RvcixkPTEyLHA9KyhlPW5ldyBmKGUpKTtpZighZS5zKXJldHVybiBuZXcgZihicik7aWYodT1uZXcgZih1KSwhdS5zKXtpZihlLnM8MSl0aHJvdyBFcnJvcih6cisiSW5maW5pdHkiKTtyZXR1cm4gdX1pZih1LmVxKGJyKSlyZXR1cm4gdTtpZihyPWYucHJlY2lzaW9uLGUuZXEoYnIpKXJldHVybiBQdCh1LHIpO2lmKHQ9ZS5lLG49ZS5kLmxlbmd0aC0xLHM9dD49bixvPXUucyxzKXtpZigobj1wPDA/LXA6cCk8PUY1KXtmb3IoaT1uZXcgZihiciksdD1NYXRoLmNlaWwoci9CdCs0KSxVdD0hMTtuJTImJihpPWkudGltZXModSksZUwoaS5kLHQpKSxuPXF1KG4vMiksbiE9PTA7KXU9dS50aW1lcyh1KSxlTCh1LmQsdCk7cmV0dXJuIFV0PSEwLGUuczwwP25ldyBmKGJyKS5kaXYoaSk6UHQoaSxyKX19ZWxzZSBpZihvPDApdGhyb3cgRXJyb3IoenIrIk5hTiIpO3JldHVybiBvPW88MCYmZS5kW01hdGgubWF4KHQsbildJjE/LTE6MSx1LnM9MSxVdD0hMSxpPWUudGltZXMoemYodSxyK2QpKSxVdD0hMCxpPUc1KGkpLGkucz1vLGl9O01lLnRvUHJlY2lzaW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPXRoaXMsbz1pLmNvbnN0cnVjdG9yO3JldHVybiBlPT09dm9pZCAwPyhuPWxuKGkpLHI9U3MoaSxuPD1vLnRvRXhwTmVnfHxuPj1vLnRvRXhwUG9zKSk6KFJpKGUsMSxWdSksdD09PXZvaWQgMD90PW8ucm91bmRpbmc6UmkodCwwLDgpLGk9UHQobmV3IG8oaSksZSx0KSxuPWxuKGkpLHI9U3MoaSxlPD1ufHxuPD1vLnRvRXhwTmVnLGUpKSxyfTtNZS50b1NpZ25pZmljYW50RGlnaXRzPU1lLnRvc2Q9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9bi5jb25zdHJ1Y3RvcjtyZXR1cm4gZT09PXZvaWQgMD8oZT1yLnByZWNpc2lvbix0PXIucm91bmRpbmcpOihSaShlLDEsVnUpLHQ9PT12b2lkIDA/dD1yLnJvdW5kaW5nOlJpKHQsMCw4KSksUHQobmV3IHIobiksZSx0KX07TWUudG9TdHJpbmc9TWUudmFsdWVPZj1NZS52YWw9TWUudG9KU09OPU1lW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWxuKGUpLG49ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gU3MoZSx0PD1uLnRvRXhwTmVnfHx0Pj1uLnRvRXhwUG9zKX07ZnVuY3Rpb24gSDUoZSx0KXt2YXIgbixyLGksbyxzLHUsZixkLHA9ZS5jb25zdHJ1Y3RvcixtPXAucHJlY2lzaW9uO2lmKCFlLnN8fCF0LnMpcmV0dXJuIHQuc3x8KHQ9bmV3IHAoZSkpLFV0P1B0KHQsbSk6dDtpZihmPWUuZCxkPXQuZCxzPWUuZSxpPXQuZSxmPWYuc2xpY2UoKSxvPXMtaSxvKXtmb3IobzwwPyhyPWYsbz0tbyx1PWQubGVuZ3RoKToocj1kLGk9cyx1PWYubGVuZ3RoKSxzPU1hdGguY2VpbChtL0J0KSx1PXM+dT9zKzE6dSsxLG8+dSYmKG89dSxyLmxlbmd0aD0xKSxyLnJldmVyc2UoKTtvLS07KXIucHVzaCgwKTtyLnJldmVyc2UoKX1mb3IodT1mLmxlbmd0aCxvPWQubGVuZ3RoLHUtbzwwJiYobz11LHI9ZCxkPWYsZj1yKSxuPTA7bzspbj0oZlstLW9dPWZbb10rZFtvXStuKS9fbnwwLGZbb10lPV9uO2ZvcihuJiYoZi51bnNoaWZ0KG4pLCsraSksdT1mLmxlbmd0aDtmWy0tdV09PTA7KWYucG9wKCk7cmV0dXJuIHQuZD1mLHQuZT1pLFV0P1B0KHQsbSk6dH1mdW5jdGlvbiBSaShlLHQsbil7aWYoZSE9PX5+ZXx8ZTx0fHxlPm4pdGhyb3cgRXJyb3IoZHMrZSl9ZnVuY3Rpb24gQWkoZSl7dmFyIHQsbixyLGk9ZS5sZW5ndGgtMSxvPSIiLHM9ZVswXTtpZihpPjApe2ZvcihvKz1zLHQ9MTt0PGk7dCsrKXI9ZVt0XSsiIixuPUJ0LXIubGVuZ3RoLG4mJihvKz1YYShuKSksbys9cjtzPWVbdF0scj1zKyIiLG49QnQtci5sZW5ndGgsbiYmKG8rPVhhKG4pKX1lbHNlIGlmKHM9PT0wKXJldHVybiIwIjtmb3IoO3MlMTA9PT0wOylzLz0xMDtyZXR1cm4gbytzfXZhciB1YT0oZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHIsaSl7dmFyIG8scz0wLHU9ci5sZW5ndGg7Zm9yKHI9ci5zbGljZSgpO3UtLTspbz1yW3VdKmkrcyxyW3VdPW8lX258MCxzPW8vX258MDtyZXR1cm4gcyYmci51bnNoaWZ0KHMpLHJ9ZnVuY3Rpb24gdChyLGksbyxzKXt2YXIgdSxmO2lmKG8hPXMpZj1vPnM/MTotMTtlbHNlIGZvcih1PWY9MDt1PG87dSsrKWlmKHJbdV0hPWlbdV0pe2Y9clt1XT5pW3VdPzE6LTE7YnJlYWt9cmV0dXJuIGZ9ZnVuY3Rpb24gbihyLGksbyl7Zm9yKHZhciBzPTA7by0tOylyW29dLT1zLHM9cltvXTxpW29dPzE6MCxyW29dPXMqX24rcltvXS1pW29dO2Zvcig7IXJbMF0mJnIubGVuZ3RoPjE7KXIuc2hpZnQoKX1yZXR1cm4gZnVuY3Rpb24ocixpLG8scyl7dmFyIHUsZixkLHAsbSx5LHgsdyxiLGcsXyxPLEUsaixULFAsTixSLEk9ci5jb25zdHJ1Y3RvcixWPXIucz09aS5zPzE6LTEsQj1yLmQsJD1pLmQ7aWYoIXIucylyZXR1cm4gbmV3IEkocik7aWYoIWkucyl0aHJvdyBFcnJvcih6cisiRGl2aXNpb24gYnkgemVybyIpO2ZvcihmPXIuZS1pLmUsTj0kLmxlbmd0aCxUPUIubGVuZ3RoLHg9bmV3IEkoViksdz14LmQ9W10sZD0wOyRbZF09PShCW2RdfHwwKTspKytkO2lmKCRbZF0+KEJbZF18fDApJiYtLWYsbz09bnVsbD9PPW89SS5wcmVjaXNpb246cz9PPW8rKGxuKHIpLWxuKGkpKSsxOk89byxPPDApcmV0dXJuIG5ldyBJKDApO2lmKE89Ty9CdCsyfDAsZD0wLE49PTEpZm9yKHA9MCwkPSRbMF0sTysrOyhkPFR8fHApJiZPLS07ZCsrKUU9cCpfbisoQltkXXx8MCksd1tkXT1FLyR8MCxwPUUlJHwwO2Vsc2V7Zm9yKHA9X24vKCRbMF0rMSl8MCxwPjEmJigkPWUoJCxwKSxCPWUoQixwKSxOPSQubGVuZ3RoLFQ9Qi5sZW5ndGgpLGo9TixiPUIuc2xpY2UoMCxOKSxnPWIubGVuZ3RoO2c8TjspYltnKytdPTA7Uj0kLnNsaWNlKCksUi51bnNoaWZ0KDApLFA9JFswXSwkWzFdPj1fbi8yJiYrK1A7ZG8gcD0wLHU9dCgkLGIsTixnKSx1PDA/KF89YlswXSxOIT1nJiYoXz1fKl9uKyhiWzFdfHwwKSkscD1fL1B8MCxwPjE/KHA+PV9uJiYocD1fbi0xKSxtPWUoJCxwKSx5PW0ubGVuZ3RoLGc9Yi5sZW5ndGgsdT10KG0sYix5LGcpLHU9PTEmJihwLS0sbihtLE48eT9SOiQseSkpKToocD09MCYmKHU9cD0xKSxtPSQuc2xpY2UoKSkseT1tLmxlbmd0aCx5PGcmJm0udW5zaGlmdCgwKSxuKGIsbSxnKSx1PT0tMSYmKGc9Yi5sZW5ndGgsdT10KCQsYixOLGcpLHU8MSYmKHArKyxuKGIsTjxnP1I6JCxnKSkpLGc9Yi5sZW5ndGgpOnU9PT0wJiYocCsrLGI9WzBdKSx3W2QrK109cCx1JiZiWzBdP2JbZysrXT1CW2pdfHwwOihiPVtCW2pdXSxnPTEpO3doaWxlKChqKys8VHx8YlswXSE9PXZvaWQgMCkmJk8tLSl9cmV0dXJuIHdbMF18fHcuc2hpZnQoKSx4LmU9ZixQdCh4LHM/bytsbih4KSsxOm8pfX0pKCk7ZnVuY3Rpb24gRzUoZSx0KXt2YXIgbixyLGksbyxzLHUsZj0wLGQ9MCxwPWUuY29uc3RydWN0b3IsbT1wLnByZWNpc2lvbjtpZihsbihlKT4xNil0aHJvdyBFcnJvcihiVCtsbihlKSk7aWYoIWUucylyZXR1cm4gbmV3IHAoYnIpO2ZvcihVdD0hMSx1PW0scz1uZXcgcCguMDMxMjUpO2UuYWJzKCkuZ3RlKC4xKTspZT1lLnRpbWVzKHMpLGQrPTU7Zm9yKHI9TWF0aC5sb2coZXMoMixkKSkvTWF0aC5MTjEwKjIrNXwwLHUrPXIsbj1pPW89bmV3IHAoYnIpLHAucHJlY2lzaW9uPXU7Oyl7aWYoaT1QdChpLnRpbWVzKGUpLHUpLG49bi50aW1lcygrK2YpLHM9by5wbHVzKHVhKGksbix1KSksQWkocy5kKS5zbGljZSgwLHUpPT09QWkoby5kKS5zbGljZSgwLHUpKXtmb3IoO2QtLTspbz1QdChvLnRpbWVzKG8pLHUpO3JldHVybiBwLnByZWNpc2lvbj1tLHQ9PW51bGw/KFV0PSEwLFB0KG8sbSkpOm99bz1zfX1mdW5jdGlvbiBsbihlKXtmb3IodmFyIHQ9ZS5lKkJ0LG49ZS5kWzBdO24+PTEwO24vPTEwKXQrKztyZXR1cm4gdH1mdW5jdGlvbiBFMShlLHQsbil7aWYodD5lLkxOMTAuc2QoKSl0aHJvdyBVdD0hMCxuJiYoZS5wcmVjaXNpb249biksRXJyb3IoenIrIkxOMTAgcHJlY2lzaW9uIGxpbWl0IGV4Y2VlZGVkIik7cmV0dXJuIFB0KG5ldyBlKGUuTE4xMCksdCl9ZnVuY3Rpb24gWGEoZSl7Zm9yKHZhciB0PSIiO2UtLTspdCs9IjAiO3JldHVybiB0fWZ1bmN0aW9uIHpmKGUsdCl7dmFyIG4scixpLG8scyx1LGYsZCxwLG09MSx5PTEwLHg9ZSx3PXguZCxiPXguY29uc3RydWN0b3IsZz1iLnByZWNpc2lvbjtpZih4LnM8MSl0aHJvdyBFcnJvcih6cisoeC5zPyJOYU4iOiItSW5maW5pdHkiKSk7aWYoeC5lcShicikpcmV0dXJuIG5ldyBiKDApO2lmKHQ9PW51bGw/KFV0PSExLGQ9Zyk6ZD10LHguZXEoMTApKXJldHVybiB0PT1udWxsJiYoVXQ9ITApLEUxKGIsZCk7aWYoZCs9eSxiLnByZWNpc2lvbj1kLG49QWkodykscj1uLmNoYXJBdCgwKSxvPWxuKHgpLE1hdGguYWJzKG8pPDE1ZTE0KXtmb3IoO3I8NyYmciE9MXx8cj09MSYmbi5jaGFyQXQoMSk+MzspeD14LnRpbWVzKGUpLG49QWkoeC5kKSxyPW4uY2hhckF0KDApLG0rKztvPWxuKHgpLHI+MT8oeD1uZXcgYigiMC4iK24pLG8rKyk6eD1uZXcgYihyKyIuIituLnNsaWNlKDEpKX1lbHNlIHJldHVybiBmPUUxKGIsZCsyLGcpLnRpbWVzKG8rIiIpLHg9emYobmV3IGIocisiLiIrbi5zbGljZSgxKSksZC15KS5wbHVzKGYpLGIucHJlY2lzaW9uPWcsdD09bnVsbD8oVXQ9ITAsUHQoeCxnKSk6eDtmb3IodT1zPXg9dWEoeC5taW51cyhicikseC5wbHVzKGJyKSxkKSxwPVB0KHgudGltZXMoeCksZCksaT0zOzspe2lmKHM9UHQocy50aW1lcyhwKSxkKSxmPXUucGx1cyh1YShzLG5ldyBiKGkpLGQpKSxBaShmLmQpLnNsaWNlKDAsZCk9PT1BaSh1LmQpLnNsaWNlKDAsZCkpcmV0dXJuIHU9dS50aW1lcygyKSxvIT09MCYmKHU9dS5wbHVzKEUxKGIsZCsyLGcpLnRpbWVzKG8rIiIpKSksdT11YSh1LG5ldyBiKG0pLGQpLGIucHJlY2lzaW9uPWcsdD09bnVsbD8oVXQ9ITAsUHQodSxnKSk6dTt1PWYsaSs9Mn19ZnVuY3Rpb24gSkQoZSx0KXt2YXIgbixyLGk7Zm9yKChuPXQuaW5kZXhPZigiLiIpKT4tMSYmKHQ9dC5yZXBsYWNlKCIuIiwiIikpLChyPXQuc2VhcmNoKC9lL2kpKT4wPyhuPDAmJihuPXIpLG4rPSt0LnNsaWNlKHIrMSksdD10LnN1YnN0cmluZygwLHIpKTpuPDAmJihuPXQubGVuZ3RoKSxyPTA7dC5jaGFyQ29kZUF0KHIpPT09NDg7KSsrcjtmb3IoaT10Lmxlbmd0aDt0LmNoYXJDb2RlQXQoaS0xKT09PTQ4OyktLWk7aWYodD10LnNsaWNlKHIsaSksdCl7aWYoaS09cixuPW4tci0xLGUuZT1xdShuL0J0KSxlLmQ9W10scj0obisxKSVCdCxuPDAmJihyKz1CdCkscjxpKXtmb3IociYmZS5kLnB1c2goK3Quc2xpY2UoMCxyKSksaS09QnQ7cjxpOyllLmQucHVzaCgrdC5zbGljZShyLHIrPUJ0KSk7dD10LnNsaWNlKHIpLHI9QnQtdC5sZW5ndGh9ZWxzZSByLT1pO2Zvcig7ci0tOyl0Kz0iMCI7aWYoZS5kLnB1c2goK3QpLFV0JiYoZS5lPmptfHxlLmU8LWptKSl0aHJvdyBFcnJvcihiVCtuKX1lbHNlIGUucz0wLGUuZT0wLGUuZD1bMF07cmV0dXJuIGV9ZnVuY3Rpb24gUHQoZSx0LG4pe3ZhciByLGksbyxzLHUsZixkLHAsbT1lLmQ7Zm9yKHM9MSxvPW1bMF07bz49MTA7by89MTApcysrO2lmKHI9dC1zLHI8MClyKz1CdCxpPXQsZD1tW3A9MF07ZWxzZXtpZihwPU1hdGguY2VpbCgocisxKS9CdCksbz1tLmxlbmd0aCxwPj1vKXJldHVybiBlO2ZvcihkPW89bVtwXSxzPTE7bz49MTA7by89MTApcysrO3IlPUJ0LGk9ci1CdCtzfWlmKG4hPT12b2lkIDAmJihvPWVzKDEwLHMtaS0xKSx1PWQvbyUxMHwwLGY9dDwwfHxtW3ArMV0hPT12b2lkIDB8fGQlbyxmPW48ND8odXx8ZikmJihuPT0wfHxuPT0oZS5zPDA/MzoyKSk6dT41fHx1PT01JiYobj09NHx8Znx8bj09NiYmKHI+MD9pPjA/ZC9lcygxMCxzLWkpOjA6bVtwLTFdKSUxMCYxfHxuPT0oZS5zPDA/ODo3KSkpLHQ8MXx8IW1bMF0pcmV0dXJuIGY/KG89bG4oZSksbS5sZW5ndGg9MSx0PXQtby0xLG1bMF09ZXMoMTAsKEJ0LXQlQnQpJUJ0KSxlLmU9cXUoLXQvQnQpfHwwKToobS5sZW5ndGg9MSxtWzBdPWUuZT1lLnM9MCksZTtpZihyPT0wPyhtLmxlbmd0aD1wLG89MSxwLS0pOihtLmxlbmd0aD1wKzEsbz1lcygxMCxCdC1yKSxtW3BdPWk+MD8oZC9lcygxMCxzLWkpJWVzKDEwLGkpfDApKm86MCksZilmb3IoOzspaWYocD09MCl7KG1bMF0rPW8pPT1fbiYmKG1bMF09MSwrK2UuZSk7YnJlYWt9ZWxzZXtpZihtW3BdKz1vLG1bcF0hPV9uKWJyZWFrO21bcC0tXT0wLG89MX1mb3Iocj1tLmxlbmd0aDttWy0tcl09PT0wOyltLnBvcCgpO2lmKFV0JiYoZS5lPmptfHxlLmU8LWptKSl0aHJvdyBFcnJvcihiVCtsbihlKSk7cmV0dXJuIGV9ZnVuY3Rpb24gSzUoZSx0KXt2YXIgbixyLGksbyxzLHUsZixkLHAsbSx5PWUuY29uc3RydWN0b3IseD15LnByZWNpc2lvbjtpZighZS5zfHwhdC5zKXJldHVybiB0LnM/dC5zPS10LnM6dD1uZXcgeShlKSxVdD9QdCh0LHgpOnQ7aWYoZj1lLmQsbT10LmQscj10LmUsZD1lLmUsZj1mLnNsaWNlKCkscz1kLXIscyl7Zm9yKHA9czwwLHA/KG49ZixzPS1zLHU9bS5sZW5ndGgpOihuPW0scj1kLHU9Zi5sZW5ndGgpLGk9TWF0aC5tYXgoTWF0aC5jZWlsKHgvQnQpLHUpKzIscz5pJiYocz1pLG4ubGVuZ3RoPTEpLG4ucmV2ZXJzZSgpLGk9cztpLS07KW4ucHVzaCgwKTtuLnJldmVyc2UoKX1lbHNle2ZvcihpPWYubGVuZ3RoLHU9bS5sZW5ndGgscD1pPHUscCYmKHU9aSksaT0wO2k8dTtpKyspaWYoZltpXSE9bVtpXSl7cD1mW2ldPG1baV07YnJlYWt9cz0wfWZvcihwJiYobj1mLGY9bSxtPW4sdC5zPS10LnMpLHU9Zi5sZW5ndGgsaT1tLmxlbmd0aC11O2k+MDstLWkpZlt1KytdPTA7Zm9yKGk9bS5sZW5ndGg7aT5zOyl7aWYoZlstLWldPG1baV0pe2ZvcihvPWk7byYmZlstLW9dPT09MDspZltvXT1fbi0xOy0tZltvXSxmW2ldKz1fbn1mW2ldLT1tW2ldfWZvcig7ZlstLXVdPT09MDspZi5wb3AoKTtmb3IoO2ZbMF09PT0wO2Yuc2hpZnQoKSktLXI7cmV0dXJuIGZbMF0/KHQuZD1mLHQuZT1yLFV0P1B0KHQseCk6dCk6bmV3IHkoMCl9ZnVuY3Rpb24gU3MoZSx0LG4pe3ZhciByLGk9bG4oZSksbz1BaShlLmQpLHM9by5sZW5ndGg7cmV0dXJuIHQ/KG4mJihyPW4tcyk+MD9vPW8uY2hhckF0KDApKyIuIitvLnNsaWNlKDEpK1hhKHIpOnM+MSYmKG89by5jaGFyQXQoMCkrIi4iK28uc2xpY2UoMSkpLG89bysoaTwwPyJlIjoiZSsiKStpKTppPDA/KG89IjAuIitYYSgtaS0xKStvLG4mJihyPW4tcyk+MCYmKG8rPVhhKHIpKSk6aT49cz8obys9WGEoaSsxLXMpLG4mJihyPW4taS0xKT4wJiYobz1vKyIuIitYYShyKSkpOigocj1pKzEpPHMmJihvPW8uc2xpY2UoMCxyKSsiLiIrby5zbGljZShyKSksbiYmKHI9bi1zKT4wJiYoaSsxPT09cyYmKG8rPSIuIiksbys9WGEocikpKSxlLnM8MD8iLSIrbzpvfWZ1bmN0aW9uIGVMKGUsdCl7aWYoZS5sZW5ndGg+dClyZXR1cm4gZS5sZW5ndGg9dCwhMH1mdW5jdGlvbiBXNShlKXt2YXIgdCxuLHI7ZnVuY3Rpb24gaShvKXt2YXIgcz10aGlzO2lmKCEocyBpbnN0YW5jZW9mIGkpKXJldHVybiBuZXcgaShvKTtpZihzLmNvbnN0cnVjdG9yPWksbyBpbnN0YW5jZW9mIGkpe3Mucz1vLnMscy5lPW8uZSxzLmQ9KG89by5kKT9vLnNsaWNlKCk6bztyZXR1cm59aWYodHlwZW9mIG89PSJudW1iZXIiKXtpZihvKjAhPT0wKXRocm93IEVycm9yKGRzK28pO2lmKG8+MClzLnM9MTtlbHNlIGlmKG88MClvPS1vLHMucz0tMTtlbHNle3Mucz0wLHMuZT0wLHMuZD1bMF07cmV0dXJufWlmKG89PT1+fm8mJm88MWU3KXtzLmU9MCxzLmQ9W29dO3JldHVybn1yZXR1cm4gSkQocyxvLnRvU3RyaW5nKCkpfWVsc2UgaWYodHlwZW9mIG8hPSJzdHJpbmciKXRocm93IEVycm9yKGRzK28pO2lmKG8uY2hhckNvZGVBdCgwKT09PTQ1PyhvPW8uc2xpY2UoMSkscy5zPS0xKTpzLnM9MSxkaWUudGVzdChvKSlKRChzLG8pO2Vsc2UgdGhyb3cgRXJyb3IoZHMrbyl9aWYoaS5wcm90b3R5cGU9TWUsaS5ST1VORF9VUD0wLGkuUk9VTkRfRE9XTj0xLGkuUk9VTkRfQ0VJTD0yLGkuUk9VTkRfRkxPT1I9MyxpLlJPVU5EX0hBTEZfVVA9NCxpLlJPVU5EX0hBTEZfRE9XTj01LGkuUk9VTkRfSEFMRl9FVkVOPTYsaS5ST1VORF9IQUxGX0NFSUw9NyxpLlJPVU5EX0hBTEZfRkxPT1I9OCxpLmNsb25lPVc1LGkuY29uZmlnPWkuc2V0PWhpZSxlPT09dm9pZCAwJiYoZT17fSksZSlmb3Iocj1bInByZWNpc2lvbiIsInJvdW5kaW5nIiwidG9FeHBOZWciLCJ0b0V4cFBvcyIsIkxOMTAiXSx0PTA7dDxyLmxlbmd0aDspZS5oYXNPd25Qcm9wZXJ0eShuPXJbdCsrXSl8fChlW25dPXRoaXNbbl0pO3JldHVybiBpLmNvbmZpZyhlKSxpfWZ1bmN0aW9uIGhpZShlKXtpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXRocm93IEVycm9yKHpyKyJPYmplY3QgZXhwZWN0ZWQiKTt2YXIgdCxuLHIsaT1bInByZWNpc2lvbiIsMSxWdSwicm91bmRpbmciLDAsOCwidG9FeHBOZWciLC0xLzAsMCwidG9FeHBQb3MiLDAsMS8wXTtmb3IodD0wO3Q8aS5sZW5ndGg7dCs9MylpZigocj1lW249aVt0XV0pIT09dm9pZCAwKWlmKHF1KHIpPT09ciYmcj49aVt0KzFdJiZyPD1pW3QrMl0pdGhpc1tuXT1yO2Vsc2UgdGhyb3cgRXJyb3IoZHMrbisiOiAiK3IpO2lmKChyPWVbbj0iTE4xMCJdKSE9PXZvaWQgMClpZihyPT1NYXRoLkxOMTApdGhpc1tuXT1uZXcgdGhpcyhyKTtlbHNlIHRocm93IEVycm9yKGRzK24rIjogIityKTtyZXR1cm4gdGhpc312YXIgeFQ9VzUoZmllKTticj1uZXcgeFQoMSk7Y29uc3QgX3Q9eFQ7ZnVuY3Rpb24gcGllKGUpe3JldHVybiBnaWUoZSl8fHZpZShlKXx8eWllKGUpfHxtaWUoKX1mdW5jdGlvbiBtaWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIHlpZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4geEEoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHhBKGUsdCl9fWZ1bmN0aW9uIHZpZShlKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBnaWUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4geEEoZSl9ZnVuY3Rpb24geEEoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgYmllPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxZNT17fSxYNT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PVk1fSx0TD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MHx8YXJndW1lbnRzLmxlbmd0aD09PTEmJlg1KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSk/bjp0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0seGllPWZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdD09PTE/bjp0TChmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtvPHI7bysrKWlbb109YXJndW1lbnRzW29dO3ZhciBzPWkuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1IT09WTV9KS5sZW5ndGg7cmV0dXJuIHM+PXQ/bi5hcHBseSh2b2lkIDAsaSk6ZSh0LXMsdEwoZnVuY3Rpb24oKXtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheSh1KSxkPTA7ZDx1O2QrKylmW2RdPWFyZ3VtZW50c1tkXTt2YXIgcD1pLm1hcChmdW5jdGlvbihtKXtyZXR1cm4gWDUobSk/Zi5zaGlmdCgpOm19KTtyZXR1cm4gbi5hcHBseSh2b2lkIDAscGllKHApLmNvbmNhdChmKSl9KSl9KX0sb3Y9ZnVuY3Rpb24odCl7cmV0dXJuIHhpZSh0Lmxlbmd0aCx0KX0sd0E9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9W10saT10O2k8bjsrK2kpcltpLXRdPWk7cmV0dXJuIHJ9LHdpZT1vdihmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGUpOk9iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdFtuXX0pLm1hcChlKX0pLFNpZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO2lmKCFuLmxlbmd0aClyZXR1cm4gYmllO3ZhciBpPW4ucmV2ZXJzZSgpLG89aVswXSxzPWkuc2xpY2UoMSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHMucmVkdWNlKGZ1bmN0aW9uKHUsZil7cmV0dXJuIGYodSl9LG8uYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX0sU0E9ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5yZXZlcnNlKCk6dC5zcGxpdCgiIikucmV2ZXJzZS5qb2luKCIiKX0sWjU9ZnVuY3Rpb24odCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgsbz1uZXcgQXJyYXkoaSkscz0wO3M8aTtzKyspb1tzXT1hcmd1bWVudHNbc107cmV0dXJuIG4mJm8uZXZlcnkoZnVuY3Rpb24odSxmKXtyZXR1cm4gdT09PW5bZl19KXx8KG49byxyPXQuYXBwbHkodm9pZCAwLG8pKSxyfX07ZnVuY3Rpb24gQWllKGUpe3ZhciB0O3JldHVybiBlPT09MD90PTE6dD1NYXRoLmZsb29yKG5ldyBfdChlKS5hYnMoKS5sb2coMTApLnRvTnVtYmVyKCkpKzEsdH1mdW5jdGlvbiBfaWUoZSx0LG4pe2Zvcih2YXIgcj1uZXcgX3QoZSksaT0wLG89W107ci5sdCh0KSYmaTwxZTU7KW8ucHVzaChyLnRvTnVtYmVyKCkpLHI9ci5hZGQobiksaSsrO3JldHVybiBvfXZhciBPaWU9b3YoZnVuY3Rpb24oZSx0LG4pe3ZhciByPStlLGk9K3Q7cmV0dXJuIHIrbiooaS1yKX0pLFRpZT1vdihmdW5jdGlvbihlLHQsbil7dmFyIHI9dC0rZTtyZXR1cm4gcj1yfHwxLzAsKG4tZSkvcn0pLEVpZT1vdihmdW5jdGlvbihlLHQsbil7dmFyIHI9dC0rZTtyZXR1cm4gcj1yfHwxLzAsTWF0aC5tYXgoMCxNYXRoLm1pbigxLChuLWUpL3IpKX0pO2NvbnN0IHN2PXtyYW5nZVN0ZXA6X2llLGdldERpZ2l0Q291bnQ6QWllLGludGVycG9sYXRlTnVtYmVyOk9pZSx1bmludGVycG9sYXRlTnVtYmVyOlRpZSx1bmludGVycG9sYXRlVHJ1bmNhdGlvbjpFaWV9O2Z1bmN0aW9uIEFBKGUpe3JldHVybiBQaWUoZSl8fGppZShlKXx8UTUoZSl8fENpZSgpfWZ1bmN0aW9uIENpZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gamllKGUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKXJldHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIFBpZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBfQShlKX1mdW5jdGlvbiBGZihlLHQpe3JldHVybiBOaWUoZSl8fFJpZShlLHQpfHxRNShlLHQpfHxNaWUoKX1mdW5jdGlvbiBNaWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gUTUoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIF9BKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKG49PT0iT2JqZWN0IiYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxuPT09Ik1hcCJ8fG49PT0iU2V0IilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihuPT09IkFyZ3VtZW50cyJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBfQShlLHQpfX1mdW5jdGlvbiBfQShlLHQpeyh0PT1udWxsfHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFJpZShlLHQpe2lmKCEodHlwZW9mIFN5bWJvbD4idSJ8fCEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkpKXt2YXIgbj1bXSxyPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgcz1lW1N5bWJvbC5pdGVyYXRvcl0oKSx1OyEocj0odT1zLm5leHQoKSkuZG9uZSkmJihuLnB1c2godS52YWx1ZSksISh0JiZuLmxlbmd0aD09PXQpKTtyPSEwKTt9Y2F0Y2goZil7aT0hMCxvPWZ9ZmluYWxseXt0cnl7IXImJnMucmV0dXJuIT1udWxsJiZzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gbn19ZnVuY3Rpb24gTmllKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9ZnVuY3Rpb24gSjUoZSl7dmFyIHQ9RmYoZSwyKSxuPXRbMF0scj10WzFdLGk9bixvPXI7cmV0dXJuIG4+ciYmKGk9cixvPW4pLFtpLG9dfWZ1bmN0aW9uIGVxKGUsdCxuKXtpZihlLmx0ZSgwKSlyZXR1cm4gbmV3IF90KDApO3ZhciByPXN2LmdldERpZ2l0Q291bnQoZS50b051bWJlcigpKSxpPW5ldyBfdCgxMCkucG93KHIpLG89ZS5kaXYoaSkscz1yIT09MT8uMDU6LjEsdT1uZXcgX3QoTWF0aC5jZWlsKG8uZGl2KHMpLnRvTnVtYmVyKCkpKS5hZGQobikubXVsKHMpLGY9dS5tdWwoaSk7cmV0dXJuIHQ/ZjpuZXcgX3QoTWF0aC5jZWlsKGYpKX1mdW5jdGlvbiBraWUoZSx0LG4pe3ZhciByPTEsaT1uZXcgX3QoZSk7aWYoIWkuaXNpbnQoKSYmbil7dmFyIG89TWF0aC5hYnMoZSk7bzwxPyhyPW5ldyBfdCgxMCkucG93KHN2LmdldERpZ2l0Q291bnQoZSktMSksaT1uZXcgX3QoTWF0aC5mbG9vcihpLmRpdihyKS50b051bWJlcigpKSkubXVsKHIpKTpvPjEmJihpPW5ldyBfdChNYXRoLmZsb29yKGUpKSl9ZWxzZSBlPT09MD9pPW5ldyBfdChNYXRoLmZsb29yKCh0LTEpLzIpKTpufHwoaT1uZXcgX3QoTWF0aC5mbG9vcihlKSkpO3ZhciBzPU1hdGguZmxvb3IoKHQtMSkvMiksdT1TaWUod2llKGZ1bmN0aW9uKGYpe3JldHVybiBpLmFkZChuZXcgX3QoZi1zKS5tdWwocikpLnRvTnVtYmVyKCl9KSx3QSk7cmV0dXJuIHUoMCx0KX1mdW5jdGlvbiB0cShlLHQsbixyKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjQmJmFyZ3VtZW50c1s0XSE9PXZvaWQgMD9hcmd1bWVudHNbNF06MDtpZighTnVtYmVyLmlzRmluaXRlKCh0LWUpLyhuLTEpKSlyZXR1cm57c3RlcDpuZXcgX3QoMCksdGlja01pbjpuZXcgX3QoMCksdGlja01heDpuZXcgX3QoMCl9O3ZhciBvPWVxKG5ldyBfdCh0KS5zdWIoZSkuZGl2KG4tMSkscixpKSxzO2U8PTAmJnQ+PTA/cz1uZXcgX3QoMCk6KHM9bmV3IF90KGUpLmFkZCh0KS5kaXYoMikscz1zLnN1YihuZXcgX3QocykubW9kKG8pKSk7dmFyIHU9TWF0aC5jZWlsKHMuc3ViKGUpLmRpdihvKS50b051bWJlcigpKSxmPU1hdGguY2VpbChuZXcgX3QodCkuc3ViKHMpLmRpdihvKS50b051bWJlcigpKSxkPXUrZisxO3JldHVybiBkPm4/dHEoZSx0LG4scixpKzEpOihkPG4mJihmPXQ+MD9mKyhuLWQpOmYsdT10PjA/dTp1KyhuLWQpKSx7c3RlcDpvLHRpY2tNaW46cy5zdWIobmV3IF90KHUpLm11bChvKSksdGlja01heDpzLmFkZChuZXcgX3QoZikubXVsKG8pKX0pfWZ1bmN0aW9uIERpZShlKXt2YXIgdD1GZihlLDIpLG49dFswXSxyPXRbMV0saT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06NixvPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTohMCxzPU1hdGgubWF4KGksMiksdT1KNShbbixyXSksZj1GZih1LDIpLGQ9ZlswXSxwPWZbMV07aWYoZD09PS0xLzB8fHA9PT0xLzApe3ZhciBtPXA9PT0xLzA/W2RdLmNvbmNhdChBQSh3QSgwLGktMSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIDEvMH0pKSk6W10uY29uY2F0KEFBKHdBKDAsaS0xKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4tMS8wfSkpLFtwXSk7cmV0dXJuIG4+cj9TQShtKTptfWlmKGQ9PT1wKXJldHVybiBraWUoZCxpLG8pO3ZhciB5PXRxKGQscCxzLG8pLHg9eS5zdGVwLHc9eS50aWNrTWluLGI9eS50aWNrTWF4LGc9c3YucmFuZ2VTdGVwKHcsYi5hZGQobmV3IF90KC4xKS5tdWwoeCkpLHgpO3JldHVybiBuPnI/U0EoZyk6Z31mdW5jdGlvbiBMaWUoZSx0KXt2YXIgbj1GZihlLDIpLHI9blswXSxpPW5bMV0sbz1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITAscz1KNShbcixpXSksdT1GZihzLDIpLGY9dVswXSxkPXVbMV07aWYoZj09PS0xLzB8fGQ9PT0xLzApcmV0dXJuW3IsaV07aWYoZj09PWQpcmV0dXJuW2ZdO3ZhciBwPU1hdGgubWF4KHQsMiksbT1lcShuZXcgX3QoZCkuc3ViKGYpLmRpdihwLTEpLG8sMCkseT1bXS5jb25jYXQoQUEoc3YucmFuZ2VTdGVwKG5ldyBfdChmKSxuZXcgX3QoZCkuc3ViKG5ldyBfdCguOTkpLm11bChtKSksbSkpLFtkXSk7cmV0dXJuIHI+aT9TQSh5KTp5fXZhciBJaWU9WjUoRGllKSwkaWU9WjUoTGllKSxCaWU9IkludmFyaWFudCBmYWlsZWQiO2Z1bmN0aW9uIEFzKGUsdCl7dGhyb3cgbmV3IEVycm9yKEJpZSl9dmFyIFZpZT1bIm9mZnNldCIsImxheW91dCIsIndpZHRoIiwiZGF0YUtleSIsImRhdGEiLCJkYXRhUG9pbnRGb3JtYXR0ZXIiLCJ4QXhpcyIsInlBeGlzIl07ZnVuY3Rpb24gb3UoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gb3U9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG91KGUpfWZ1bmN0aW9uIFBtKCl7cmV0dXJuIFBtPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sUG0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHFpZShlLHQpe3JldHVybiBIaWUoZSl8fEZpZShlLHQpfHx6aWUoZSx0KXx8VWllKCl9ZnVuY3Rpb24gVWllKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIHppZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gbkwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG5MKGUsdCl9fWZ1bmN0aW9uIG5MKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gRmllKGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihuIT1udWxsKXt2YXIgcixpLG8scyx1PVtdLGY9ITAsZD0hMTt0cnl7aWYobz0obj1uLmNhbGwoZSkpLm5leHQsdCE9PTApZm9yKDshKGY9KHI9by5jYWxsKG4pKS5kb25lKSYmKHUucHVzaChyLnZhbHVlKSx1Lmxlbmd0aCE9PXQpO2Y9ITApO31jYXRjaChwKXtkPSEwLGk9cH1maW5hbGx5e3RyeXtpZighZiYmbi5yZXR1cm4hPW51bGwmJihzPW4ucmV0dXJuKCksT2JqZWN0KHMpIT09cykpcmV0dXJufWZpbmFsbHl7aWYoZCl0aHJvdyBpfX1yZXR1cm4gdX19ZnVuY3Rpb24gSGllKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9ZnVuY3Rpb24gR2llKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1LaWUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBLaWUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIFdpZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIFlpZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaXEoci5rZXkpLHIpfX1mdW5jdGlvbiBYaWUoZSx0LG4pe3JldHVybiB0JiZZaWUoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBaaWUoZSx0LG4pe3JldHVybiB0PU1tKHQpLFFpZShlLG5xKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxNbShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBRaWUoZSx0KXtpZih0JiYob3UodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gSmllKGUpfWZ1bmN0aW9uIEppZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gbnEoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4obnE9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIE1tKGUpe3JldHVybiBNbT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sTW0oZSl9ZnVuY3Rpb24gZWFlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJk9BKGUsdCl9ZnVuY3Rpb24gT0EoZSx0KXtyZXR1cm4gT0E9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxPQShlLHQpfWZ1bmN0aW9uIHJxKGUsdCxuKXtyZXR1cm4gdD1pcSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGlxKGUpe3ZhciB0PXRhZShlLCJzdHJpbmciKTtyZXR1cm4gb3UodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiB0YWUoZSx0KXtpZihvdShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihvdShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfXZhciBSZD0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBXaWUodGhpcyx0KSxaaWUodGhpcyx0LGFyZ3VtZW50cyl9cmV0dXJuIGVhZSh0LGUpLFhpZSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIub2Zmc2V0LG89ci5sYXlvdXQscz1yLndpZHRoLHU9ci5kYXRhS2V5LGY9ci5kYXRhLGQ9ci5kYXRhUG9pbnRGb3JtYXR0ZXIscD1yLnhBeGlzLG09ci55QXhpcyx5PUdpZShyLFZpZSkseD0kZSh5LCExKTt0aGlzLnByb3BzLmRpcmVjdGlvbj09PSJ4IiYmcC50eXBlIT09Im51bWJlciImJkFzKCk7dmFyIHc9Zi5tYXAoZnVuY3Rpb24oYil7dmFyIGc9ZChiLHUpLF89Zy54LE89Zy55LEU9Zy52YWx1ZSxqPWcuZXJyb3JWYWw7aWYoIWopcmV0dXJuIG51bGw7dmFyIFQ9W10sUCxOO2lmKEFycmF5LmlzQXJyYXkoaikpe3ZhciBSPXFpZShqLDIpO1A9UlswXSxOPVJbMV19ZWxzZSBQPU49ajtpZihvPT09InZlcnRpY2FsIil7dmFyIEk9cC5zY2FsZSxWPU8raSxCPVYrcywkPVYtcyx6PUkoRS1QKSxVPUkoRStOKTtULnB1c2goe3gxOlUseTE6Qix4MjpVLHkyOiR9KSxULnB1c2goe3gxOnoseTE6Vix4MjpVLHkyOlZ9KSxULnB1c2goe3gxOnoseTE6Qix4Mjp6LHkyOiR9KX1lbHNlIGlmKG89PT0iaG9yaXpvbnRhbCIpe3ZhciBLPW0uc2NhbGUsTD1fK2ksVz1MLXMsSD1MK3MsZWU9SyhFLVApLGs9SyhFK04pO1QucHVzaCh7eDE6Vyx5MTprLHgyOkgseTI6a30pLFQucHVzaCh7eDE6TCx5MTplZSx4MjpMLHkyOmt9KSxULnB1c2goe3gxOlcseTE6ZWUseDI6SCx5MjplZX0pfXJldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQsUG0oe2NsYXNzTmFtZToicmVjaGFydHMtZXJyb3JCYXIiLGtleToiYmFyLSIuY29uY2F0KFQubWFwKGZ1bmN0aW9uKFope3JldHVybiIiLmNvbmNhdChaLngxLCItIikuY29uY2F0KFoueDIsIi0iKS5jb25jYXQoWi55MSwiLSIpLmNvbmNhdChaLnkyKX0pKX0seCksVC5tYXAoZnVuY3Rpb24oWil7cmV0dXJuIEYuY3JlYXRlRWxlbWVudCgibGluZSIsUG0oe30sWix7a2V5OiJsaW5lLSIuY29uY2F0KFoueDEsIi0iKS5jb25jYXQoWi54MiwiLSIpLmNvbmNhdChaLnkxLCItIikuY29uY2F0KFoueTIpfSkpfSkpfSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1lcnJvckJhcnMifSx3KX19XSl9KShGLkNvbXBvbmVudCk7cnEoUmQsImRlZmF1bHRQcm9wcyIse3N0cm9rZToiYmxhY2siLHN0cm9rZVdpZHRoOjEuNSx3aWR0aDo1LG9mZnNldDowLGxheW91dDoiaG9yaXpvbnRhbCJ9KTtycShSZCwiZGlzcGxheU5hbWUiLCJFcnJvckJhciIpO2Z1bmN0aW9uIEhmKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIEhmPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxIZihlKX1mdW5jdGlvbiByTChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFlvKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP3JMKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtuYWUoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ckwoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIG5hZShlLHQsbil7cmV0dXJuIHQ9cmFlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gcmFlKGUpe3ZhciB0PWlhZShlLCJzdHJpbmciKTtyZXR1cm4gSGYodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBpYWUoZSx0KXtpZihIZihlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihIZihyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfXZhciBhcT1mdW5jdGlvbih0KXt2YXIgbj10LmNoaWxkcmVuLHI9dC5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyxpPXQubGVnZW5kV2lkdGgsbz10LmxlZ2VuZENvbnRlbnQscz1ncihuLFVsKTtpZighcylyZXR1cm4gbnVsbDt2YXIgdT1VbC5kZWZhdWx0UHJvcHMsZj11IT09dm9pZCAwP1lvKFlvKHt9LHUpLHMucHJvcHMpOnt9LGQ7cmV0dXJuIHMucHJvcHMmJnMucHJvcHMucGF5bG9hZD9kPXMucHJvcHMmJnMucHJvcHMucGF5bG9hZDpvPT09ImNoaWxkcmVuIj9kPShyfHxbXSkucmVkdWNlKGZ1bmN0aW9uKHAsbSl7dmFyIHk9bS5pdGVtLHg9bS5wcm9wcyx3PXguc2VjdG9yc3x8eC5kYXRhfHxbXTtyZXR1cm4gcC5jb25jYXQody5tYXAoZnVuY3Rpb24oYil7cmV0dXJue3R5cGU6cy5wcm9wcy5pY29uVHlwZXx8eS5wcm9wcy5sZWdlbmRUeXBlLHZhbHVlOmIubmFtZSxjb2xvcjpiLmZpbGwscGF5bG9hZDpifX0pKX0sW10pOmQ9KHJ8fFtdKS5tYXAoZnVuY3Rpb24ocCl7dmFyIG09cC5pdGVtLHk9bS50eXBlLmRlZmF1bHRQcm9wcyx4PXkhPT12b2lkIDA/WW8oWW8oe30seSksbS5wcm9wcyk6e30sdz14LmRhdGFLZXksYj14Lm5hbWUsZz14LmxlZ2VuZFR5cGUsXz14LmhpZGU7cmV0dXJue2luYWN0aXZlOl8sZGF0YUtleTp3LHR5cGU6Zi5pY29uVHlwZXx8Z3x8InNxdWFyZSIsY29sb3I6d1QobSksdmFsdWU6Ynx8dyxwYXlsb2FkOnh9fSksWW8oWW8oWW8oe30sZiksVWwuZ2V0V2l0aEhlaWdodChzLGkpKSx7fSx7cGF5bG9hZDpkLGl0ZW06c30pfTtmdW5jdGlvbiBHZihlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBHZj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sR2YoZSl9ZnVuY3Rpb24gaUwoZSl7cmV0dXJuIGxhZShlKXx8c2FlKGUpfHxvYWUoZSl8fGFhZSgpfWZ1bmN0aW9uIGFhZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gb2FlKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBUQShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gVEEoZSx0KX19ZnVuY3Rpb24gc2FlKGUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBsYWUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gVEEoZSl9ZnVuY3Rpb24gVEEoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBhTChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEt0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP2FMKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtGbChlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTphTChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gRmwoZSx0LG4pe3JldHVybiB0PXVhZSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHVhZShlKXt2YXIgdD1jYWUoZSwic3RyaW5nIik7cmV0dXJuIEdmKHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gY2FlKGUsdCl7aWYoR2YoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoR2YocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiBKdChlLHQsbil7cmV0dXJuIEdlKGUpfHxHZSh0KT9uOnZuKHQpP3hyKGUsdCxuKTpIZSh0KT90KGUpOm59ZnVuY3Rpb24geWYoZSx0LG4scil7dmFyIGk9bGllKGUsZnVuY3Rpb24odSl7cmV0dXJuIEp0KHUsdCl9KTtpZihuPT09Im51bWJlciIpe3ZhciBvPWkuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB2ZSh1KXx8cGFyc2VGbG9hdCh1KX0pO3JldHVybiBvLmxlbmd0aD9bYXYobyksUWEobyldOlsxLzAsLTEvMF19dmFyIHM9cj9pLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4hR2UodSl9KTppO3JldHVybiBzLm1hcChmdW5jdGlvbih1KXtyZXR1cm4gdm4odSl8fHUgaW5zdGFuY2VvZiBEYXRlP3U6IiJ9KX12YXIgZmFlPWZ1bmN0aW9uKHQpe3ZhciBuLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOltdLGk9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsbz1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxzPS0xLHU9KG49cj8ubGVuZ3RoKSE9PW51bGwmJm4hPT12b2lkIDA/bjowO2lmKHU8PTEpcmV0dXJuIDA7aWYobyYmby5heGlzVHlwZT09PSJhbmdsZUF4aXMiJiZNYXRoLmFicyhNYXRoLmFicyhvLnJhbmdlWzFdLW8ucmFuZ2VbMF0pLTM2MCk8PTFlLTYpZm9yKHZhciBmPW8ucmFuZ2UsZD0wO2Q8dTtkKyspe3ZhciBwPWQ+MD9pW2QtMV0uY29vcmRpbmF0ZTppW3UtMV0uY29vcmRpbmF0ZSxtPWlbZF0uY29vcmRpbmF0ZSx5PWQ+PXUtMT9pWzBdLmNvb3JkaW5hdGU6aVtkKzFdLmNvb3JkaW5hdGUseD12b2lkIDA7aWYoSG4obS1wKSE9PUhuKHktbSkpe3ZhciB3PVtdO2lmKEhuKHktbSk9PT1IbihmWzFdLWZbMF0pKXt4PXk7dmFyIGI9bStmWzFdLWZbMF07d1swXT1NYXRoLm1pbihiLChiK3ApLzIpLHdbMV09TWF0aC5tYXgoYiwoYitwKS8yKX1lbHNle3g9cDt2YXIgZz15K2ZbMV0tZlswXTt3WzBdPU1hdGgubWluKG0sKGcrbSkvMiksd1sxXT1NYXRoLm1heChtLChnK20pLzIpfXZhciBfPVtNYXRoLm1pbihtLCh4K20pLzIpLE1hdGgubWF4KG0sKHgrbSkvMildO2lmKHQ+X1swXSYmdDw9X1sxXXx8dD49d1swXSYmdDw9d1sxXSl7cz1pW2RdLmluZGV4O2JyZWFrfX1lbHNle3ZhciBPPU1hdGgubWluKHAseSksRT1NYXRoLm1heChwLHkpO2lmKHQ+KE8rbSkvMiYmdDw9KEUrbSkvMil7cz1pW2RdLmluZGV4O2JyZWFrfX19ZWxzZSBmb3IodmFyIGo9MDtqPHU7aisrKWlmKGo9PT0wJiZ0PD0ocltqXS5jb29yZGluYXRlK3JbaisxXS5jb29yZGluYXRlKS8yfHxqPjAmJmo8dS0xJiZ0PihyW2pdLmNvb3JkaW5hdGUrcltqLTFdLmNvb3JkaW5hdGUpLzImJnQ8PShyW2pdLmNvb3JkaW5hdGUrcltqKzFdLmNvb3JkaW5hdGUpLzJ8fGo9PT11LTEmJnQ+KHJbal0uY29vcmRpbmF0ZStyW2otMV0uY29vcmRpbmF0ZSkvMil7cz1yW2pdLmluZGV4O2JyZWFrfXJldHVybiBzfSx3VD1mdW5jdGlvbih0KXt2YXIgbixyPXQsaT1yLnR5cGUuZGlzcGxheU5hbWUsbz0obj10LnR5cGUpIT09bnVsbCYmbiE9PXZvaWQgMCYmbi5kZWZhdWx0UHJvcHM/S3QoS3Qoe30sdC50eXBlLmRlZmF1bHRQcm9wcyksdC5wcm9wcyk6dC5wcm9wcyxzPW8uc3Ryb2tlLHU9by5maWxsLGY7c3dpdGNoKGkpe2Nhc2UiTGluZSI6Zj1zO2JyZWFrO2Nhc2UiQXJlYSI6Y2FzZSJSYWRhciI6Zj1zJiZzIT09Im5vbmUiP3M6dTticmVhaztkZWZhdWx0OmY9dTticmVha31yZXR1cm4gZn0sZGFlPWZ1bmN0aW9uKHQpe3ZhciBuPXQuYmFyU2l6ZSxyPXQudG90YWxTaXplLGk9dC5zdGFja0dyb3VwcyxvPWk9PT12b2lkIDA/e306aTtpZighbylyZXR1cm57fTtmb3IodmFyIHM9e30sdT1PYmplY3Qua2V5cyhvKSxmPTAsZD11Lmxlbmd0aDtmPGQ7ZisrKWZvcih2YXIgcD1vW3VbZl1dLnN0YWNrR3JvdXBzLG09T2JqZWN0LmtleXMocCkseT0wLHg9bS5sZW5ndGg7eTx4O3krKyl7dmFyIHc9cFttW3ldXSxiPXcuaXRlbXMsZz13LmNhdGVBeGlzSWQsXz1iLmZpbHRlcihmdW5jdGlvbihOKXtyZXR1cm4gc2EoTi50eXBlKS5pbmRleE9mKCJCYXIiKT49MH0pO2lmKF8mJl8ubGVuZ3RoKXt2YXIgTz1fWzBdLnR5cGUuZGVmYXVsdFByb3BzLEU9TyE9PXZvaWQgMD9LdChLdCh7fSxPKSxfWzBdLnByb3BzKTpfWzBdLnByb3BzLGo9RS5iYXJTaXplLFQ9RVtnXTtzW1RdfHwoc1tUXT1bXSk7dmFyIFA9R2Uoaik/bjpqO3NbVF0ucHVzaCh7aXRlbTpfWzBdLHN0YWNrTGlzdDpfLnNsaWNlKDEpLGJhclNpemU6R2UoUCk/dm9pZCAwOkduKFAsciwwKX0pfX1yZXR1cm4gc30saGFlPWZ1bmN0aW9uKHQpe3ZhciBuPXQuYmFyR2FwLHI9dC5iYXJDYXRlZ29yeUdhcCxpPXQuYmFuZFNpemUsbz10LnNpemVMaXN0LHM9bz09PXZvaWQgMD9bXTpvLHU9dC5tYXhCYXJTaXplLGY9cy5sZW5ndGg7aWYoZjwxKXJldHVybiBudWxsO3ZhciBkPUduKG4saSwwLCEwKSxwLG09W107aWYoc1swXS5iYXJTaXplPT09K3NbMF0uYmFyU2l6ZSl7dmFyIHk9ITEseD1pL2Ysdz1zLnJlZHVjZShmdW5jdGlvbihqLFQpe3JldHVybiBqK1QuYmFyU2l6ZXx8MH0sMCk7dys9KGYtMSkqZCx3Pj1pJiYody09KGYtMSkqZCxkPTApLHc+PWkmJng+MCYmKHk9ITAseCo9Ljksdz1mKngpO3ZhciBiPShpLXcpLzI+PjAsZz17b2Zmc2V0OmItZCxzaXplOjB9O3A9cy5yZWR1Y2UoZnVuY3Rpb24oaixUKXt2YXIgUD17aXRlbTpULml0ZW0scG9zaXRpb246e29mZnNldDpnLm9mZnNldCtnLnNpemUrZCxzaXplOnk/eDpULmJhclNpemV9fSxOPVtdLmNvbmNhdChpTChqKSxbUF0pO3JldHVybiBnPU5bTi5sZW5ndGgtMV0ucG9zaXRpb24sVC5zdGFja0xpc3QmJlQuc3RhY2tMaXN0Lmxlbmd0aCYmVC5zdGFja0xpc3QuZm9yRWFjaChmdW5jdGlvbihSKXtOLnB1c2goe2l0ZW06Uixwb3NpdGlvbjpnfSl9KSxOfSxtKX1lbHNle3ZhciBfPUduKHIsaSwwLCEwKTtpLTIqXy0oZi0xKSpkPD0wJiYoZD0wKTt2YXIgTz0oaS0yKl8tKGYtMSkqZCkvZjtPPjEmJihPPj49MCk7dmFyIEU9dT09PSt1P01hdGgubWluKE8sdSk6TztwPXMucmVkdWNlKGZ1bmN0aW9uKGosVCxQKXt2YXIgTj1bXS5jb25jYXQoaUwoaiksW3tpdGVtOlQuaXRlbSxwb3NpdGlvbjp7b2Zmc2V0Ol8rKE8rZCkqUCsoTy1FKS8yLHNpemU6RX19XSk7cmV0dXJuIFQuc3RhY2tMaXN0JiZULnN0YWNrTGlzdC5sZW5ndGgmJlQuc3RhY2tMaXN0LmZvckVhY2goZnVuY3Rpb24oUil7Ti5wdXNoKHtpdGVtOlIscG9zaXRpb246TltOLmxlbmd0aC0xXS5wb3NpdGlvbn0pfSksTn0sbSl9cmV0dXJuIHB9LHBhZT1mdW5jdGlvbih0LG4scixpKXt2YXIgbz1yLmNoaWxkcmVuLHM9ci53aWR0aCx1PXIubWFyZ2luLGY9cy0odS5sZWZ0fHwwKS0odS5yaWdodHx8MCksZD1hcSh7Y2hpbGRyZW46byxsZWdlbmRXaWR0aDpmfSk7aWYoZCl7dmFyIHA9aXx8e30sbT1wLndpZHRoLHk9cC5oZWlnaHQseD1kLmFsaWduLHc9ZC52ZXJ0aWNhbEFsaWduLGI9ZC5sYXlvdXQ7aWYoKGI9PT0idmVydGljYWwifHxiPT09Imhvcml6b250YWwiJiZ3PT09Im1pZGRsZSIpJiZ4IT09ImNlbnRlciImJnZlKHRbeF0pKXJldHVybiBLdChLdCh7fSx0KSx7fSxGbCh7fSx4LHRbeF0rKG18fDApKSk7aWYoKGI9PT0iaG9yaXpvbnRhbCJ8fGI9PT0idmVydGljYWwiJiZ4PT09ImNlbnRlciIpJiZ3IT09Im1pZGRsZSImJnZlKHRbd10pKXJldHVybiBLdChLdCh7fSx0KSx7fSxGbCh7fSx3LHRbd10rKHl8fDApKSl9cmV0dXJuIHR9LG1hZT1mdW5jdGlvbih0LG4scil7cmV0dXJuIEdlKG4pPyEwOnQ9PT0iaG9yaXpvbnRhbCI/bj09PSJ5QXhpcyI6dD09PSJ2ZXJ0aWNhbCJ8fHI9PT0ieCI/bj09PSJ4QXhpcyI6cj09PSJ5Ij9uPT09InlBeGlzIjohMH0sb3E9ZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgcz1uLnByb3BzLmNoaWxkcmVuLHU9d3IocyxSZCkuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBtYWUoaSxvLGQucHJvcHMuZGlyZWN0aW9uKX0pO2lmKHUmJnUubGVuZ3RoKXt2YXIgZj11Lm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZC5wcm9wcy5kYXRhS2V5fSk7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKGQscCl7dmFyIG09SnQocCxyKTtpZihHZShtKSlyZXR1cm4gZDt2YXIgeT1BcnJheS5pc0FycmF5KG0pP1thdihtKSxRYShtKV06W20sbV0seD1mLnJlZHVjZShmdW5jdGlvbih3LGIpe3ZhciBnPUp0KHAsYiwwKSxfPXlbMF0tTWF0aC5hYnMoQXJyYXkuaXNBcnJheShnKT9nWzBdOmcpLE89eVsxXStNYXRoLmFicyhBcnJheS5pc0FycmF5KGcpP2dbMV06Zyk7cmV0dXJuW01hdGgubWluKF8sd1swXSksTWF0aC5tYXgoTyx3WzFdKV19LFsxLzAsLTEvMF0pO3JldHVybltNYXRoLm1pbih4WzBdLGRbMF0pLE1hdGgubWF4KHhbMV0sZFsxXSldfSxbMS8wLC0xLzBdKX1yZXR1cm4gbnVsbH0seWFlPWZ1bmN0aW9uKHQsbixyLGksbyl7dmFyIHM9bi5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIG9xKHQsdSxyLG8saSl9KS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIUdlKHUpfSk7cmV0dXJuIHMmJnMubGVuZ3RoP3MucmVkdWNlKGZ1bmN0aW9uKHUsZil7cmV0dXJuW01hdGgubWluKHVbMF0sZlswXSksTWF0aC5tYXgodVsxXSxmWzFdKV19LFsxLzAsLTEvMF0pOm51bGx9LHNxPWZ1bmN0aW9uKHQsbixyLGksbyl7dmFyIHM9bi5tYXAoZnVuY3Rpb24oZil7dmFyIGQ9Zi5wcm9wcy5kYXRhS2V5O3JldHVybiByPT09Im51bWJlciImJmQmJm9xKHQsZixkLGkpfHx5Zih0LGQscixvKX0pO2lmKHI9PT0ibnVtYmVyIilyZXR1cm4gcy5yZWR1Y2UoZnVuY3Rpb24oZixkKXtyZXR1cm5bTWF0aC5taW4oZlswXSxkWzBdKSxNYXRoLm1heChmWzFdLGRbMV0pXX0sWzEvMCwtMS8wXSk7dmFyIHU9e307cmV0dXJuIHMucmVkdWNlKGZ1bmN0aW9uKGYsZCl7Zm9yKHZhciBwPTAsbT1kLmxlbmd0aDtwPG07cCsrKXVbZFtwXV18fCh1W2RbcF1dPSEwLGYucHVzaChkW3BdKSk7cmV0dXJuIGZ9LFtdKX0sbHE9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD09PSJob3Jpem9udGFsIiYmbj09PSJ4QXhpcyJ8fHQ9PT0idmVydGljYWwiJiZuPT09InlBeGlzInx8dD09PSJjZW50cmljIiYmbj09PSJhbmdsZUF4aXMifHx0PT09InJhZGlhbCImJm49PT0icmFkaXVzQXhpcyJ9LHNzPWZ1bmN0aW9uKHQsbixyKXtpZighdClyZXR1cm4gbnVsbDt2YXIgaT10LnNjYWxlLG89dC5kdXBsaWNhdGVEb21haW4scz10LnR5cGUsdT10LnJhbmdlLGY9dC5yZWFsU2NhbGVUeXBlPT09InNjYWxlQmFuZCI/aS5iYW5kd2lkdGgoKS8yOjIsZD0obnx8cikmJnM9PT0iY2F0ZWdvcnkiJiZpLmJhbmR3aWR0aD9pLmJhbmR3aWR0aCgpL2Y6MDtpZihkPXQuYXhpc1R5cGU9PT0iYW5nbGVBeGlzIiYmdT8ubGVuZ3RoPj0yP0huKHVbMF0tdVsxXSkqMipkOmQsbiYmKHQudGlja3N8fHQubmljZVRpY2tzKSl7dmFyIHA9KHQudGlja3N8fHQubmljZVRpY2tzKS5tYXAoZnVuY3Rpb24obSl7dmFyIHk9bz9vLmluZGV4T2YobSk6bTtyZXR1cm57Y29vcmRpbmF0ZTppKHkpK2QsdmFsdWU6bSxvZmZzZXQ6ZH19KTtyZXR1cm4gcC5maWx0ZXIoZnVuY3Rpb24obSl7cmV0dXJuIUl1KG0uY29vcmRpbmF0ZSl9KX1yZXR1cm4gdC5pc0NhdGVnb3JpY2FsJiZ0LmNhdGVnb3JpY2FsRG9tYWluP3QuY2F0ZWdvcmljYWxEb21haW4ubWFwKGZ1bmN0aW9uKG0seSl7cmV0dXJue2Nvb3JkaW5hdGU6aShtKStkLHZhbHVlOm0saW5kZXg6eSxvZmZzZXQ6ZH19KTppLnRpY2tzJiYhcj9pLnRpY2tzKHQudGlja0NvdW50KS5tYXAoZnVuY3Rpb24obSl7cmV0dXJue2Nvb3JkaW5hdGU6aShtKStkLHZhbHVlOm0sb2Zmc2V0OmR9fSk6aS5kb21haW4oKS5tYXAoZnVuY3Rpb24obSx5KXtyZXR1cm57Y29vcmRpbmF0ZTppKG0pK2QsdmFsdWU6bz9vW21dOm0saW5kZXg6eSxvZmZzZXQ6ZH19KX0sQzE9bmV3IFdlYWtNYXAsbXA9ZnVuY3Rpb24odCxuKXtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIilyZXR1cm4gdDtDMS5oYXModCl8fEMxLnNldCh0LG5ldyBXZWFrTWFwKTt2YXIgcj1DMS5nZXQodCk7aWYoci5oYXMobikpcmV0dXJuIHIuZ2V0KG4pO3ZhciBpPWZ1bmN0aW9uKCl7dC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSxuLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfTtyZXR1cm4gci5zZXQobixpKSxpfSx1cT1mdW5jdGlvbih0LG4scil7dmFyIGk9dC5zY2FsZSxvPXQudHlwZSxzPXQubGF5b3V0LHU9dC5heGlzVHlwZTtpZihpPT09ImF1dG8iKXJldHVybiBzPT09InJhZGlhbCImJnU9PT0icmFkaXVzQXhpcyI/e3NjYWxlOiRmKCkscmVhbFNjYWxlVHlwZToiYmFuZCJ9OnM9PT0icmFkaWFsIiYmdT09PSJhbmdsZUF4aXMiP3tzY2FsZTpPbSgpLHJlYWxTY2FsZVR5cGU6ImxpbmVhciJ9Om89PT0iY2F0ZWdvcnkiJiZuJiYobi5pbmRleE9mKCJMaW5lQ2hhcnQiKT49MHx8bi5pbmRleE9mKCJBcmVhQ2hhcnQiKT49MHx8bi5pbmRleE9mKCJDb21wb3NlZENoYXJ0Iik+PTAmJiFyKT97c2NhbGU6bWYoKSxyZWFsU2NhbGVUeXBlOiJwb2ludCJ9Om89PT0iY2F0ZWdvcnkiP3tzY2FsZTokZigpLHJlYWxTY2FsZVR5cGU6ImJhbmQifTp7c2NhbGU6T20oKSxyZWFsU2NhbGVUeXBlOiJsaW5lYXIifTtpZihncyhpKSl7dmFyIGY9InNjYWxlIi5jb25jYXQoRnkoaSkpO3JldHVybntzY2FsZTooRkRbZl18fG1mKSgpLHJlYWxTY2FsZVR5cGU6RkRbZl0/ZjoicG9pbnQifX1yZXR1cm4gSGUoaSk/e3NjYWxlOml9OntzY2FsZTptZigpLHJlYWxTY2FsZVR5cGU6InBvaW50In19LG9MPTFlLTQsY3E9ZnVuY3Rpb24odCl7dmFyIG49dC5kb21haW4oKTtpZighKCFufHxuLmxlbmd0aDw9Mikpe3ZhciByPW4ubGVuZ3RoLGk9dC5yYW5nZSgpLG89TWF0aC5taW4oaVswXSxpWzFdKS1vTCxzPU1hdGgubWF4KGlbMF0saVsxXSkrb0wsdT10KG5bMF0pLGY9dChuW3ItMV0pOyh1PG98fHU+c3x8ZjxvfHxmPnMpJiZ0LmRvbWFpbihbblswXSxuW3ItMV1dKX19LHZhZT1mdW5jdGlvbih0LG4pe2lmKCF0KXJldHVybiBudWxsO2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpO3IrKylpZih0W3JdLml0ZW09PT1uKXJldHVybiB0W3JdLnBvc2l0aW9uO3JldHVybiBudWxsfSxnYWU9ZnVuY3Rpb24odCxuKXtpZighbnx8bi5sZW5ndGghPT0yfHwhdmUoblswXSl8fCF2ZShuWzFdKSlyZXR1cm4gdDt2YXIgcj1NYXRoLm1pbihuWzBdLG5bMV0pLGk9TWF0aC5tYXgoblswXSxuWzFdKSxvPVt0WzBdLHRbMV1dO3JldHVybighdmUodFswXSl8fHRbMF08cikmJihvWzBdPXIpLCghdmUodFsxXSl8fHRbMV0+aSkmJihvWzFdPWkpLG9bMF0+aSYmKG9bMF09aSksb1sxXTxyJiYob1sxXT1yKSxvfSxiYWU9ZnVuY3Rpb24odCl7dmFyIG49dC5sZW5ndGg7aWYoIShuPD0wKSlmb3IodmFyIHI9MCxpPXRbMF0ubGVuZ3RoO3I8aTsrK3IpZm9yKHZhciBvPTAscz0wLHU9MDt1PG47Kyt1KXt2YXIgZj1JdSh0W3VdW3JdWzFdKT90W3VdW3JdWzBdOnRbdV1bcl1bMV07Zj49MD8odFt1XVtyXVswXT1vLHRbdV1bcl1bMV09bytmLG89dFt1XVtyXVsxXSk6KHRbdV1bcl1bMF09cyx0W3VdW3JdWzFdPXMrZixzPXRbdV1bcl1bMV0pfX0seGFlPWZ1bmN0aW9uKHQpe3ZhciBuPXQubGVuZ3RoO2lmKCEobjw9MCkpZm9yKHZhciByPTAsaT10WzBdLmxlbmd0aDtyPGk7KytyKWZvcih2YXIgbz0wLHM9MDtzPG47KytzKXt2YXIgdT1JdSh0W3NdW3JdWzFdKT90W3NdW3JdWzBdOnRbc11bcl1bMV07dT49MD8odFtzXVtyXVswXT1vLHRbc11bcl1bMV09byt1LG89dFtzXVtyXVsxXSk6KHRbc11bcl1bMF09MCx0W3NdW3JdWzFdPTApfX0sd2FlPXtzaWduOmJhZSxleHBhbmQ6bFEsbm9uZTpRbCxzaWxob3VldHRlOnVRLHdpZ2dsZTpjUSxwb3NpdGl2ZTp4YWV9LFNhZT1mdW5jdGlvbih0LG4scil7dmFyIGk9bi5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIHUucHJvcHMuZGF0YUtleX0pLG89d2FlW3JdLHM9c1EoKS5rZXlzKGkpLnZhbHVlKGZ1bmN0aW9uKHUsZil7cmV0dXJuK0p0KHUsZiwwKX0pLm9yZGVyKG5BKS5vZmZzZXQobyk7cmV0dXJuIHModCl9LEFhZT1mdW5jdGlvbih0LG4scixpLG8scyl7aWYoIXQpcmV0dXJuIG51bGw7dmFyIHU9cz9uLnJldmVyc2UoKTpuLGY9e30sZD11LnJlZHVjZShmdW5jdGlvbihtLHkpe3ZhciB4LHc9KHg9eS50eXBlKSE9PW51bGwmJnghPT12b2lkIDAmJnguZGVmYXVsdFByb3BzP0t0KEt0KHt9LHkudHlwZS5kZWZhdWx0UHJvcHMpLHkucHJvcHMpOnkucHJvcHMsYj13LnN0YWNrSWQsZz13LmhpZGU7aWYoZylyZXR1cm4gbTt2YXIgXz13W3JdLE89bVtfXXx8e2hhc1N0YWNrOiExLHN0YWNrR3JvdXBzOnt9fTtpZih2bihiKSl7dmFyIEU9Ty5zdGFja0dyb3Vwc1tiXXx8e251bWVyaWNBeGlzSWQ6cixjYXRlQXhpc0lkOmksaXRlbXM6W119O0UuaXRlbXMucHVzaCh5KSxPLmhhc1N0YWNrPSEwLE8uc3RhY2tHcm91cHNbYl09RX1lbHNlIE8uc3RhY2tHcm91cHNbQ3MoIl9zdGFja0lkXyIpXT17bnVtZXJpY0F4aXNJZDpyLGNhdGVBeGlzSWQ6aSxpdGVtczpbeV19O3JldHVybiBLdChLdCh7fSxtKSx7fSxGbCh7fSxfLE8pKX0sZikscD17fTtyZXR1cm4gT2JqZWN0LmtleXMoZCkucmVkdWNlKGZ1bmN0aW9uKG0seSl7dmFyIHg9ZFt5XTtpZih4Lmhhc1N0YWNrKXt2YXIgdz17fTt4LnN0YWNrR3JvdXBzPU9iamVjdC5rZXlzKHguc3RhY2tHcm91cHMpLnJlZHVjZShmdW5jdGlvbihiLGcpe3ZhciBfPXguc3RhY2tHcm91cHNbZ107cmV0dXJuIEt0KEt0KHt9LGIpLHt9LEZsKHt9LGcse251bWVyaWNBeGlzSWQ6cixjYXRlQXhpc0lkOmksaXRlbXM6Xy5pdGVtcyxzdGFja2VkRGF0YTpTYWUodCxfLml0ZW1zLG8pfSkpfSx3KX1yZXR1cm4gS3QoS3Qoe30sbSkse30sRmwoe30seSx4KSl9LHApfSxmcT1mdW5jdGlvbih0LG4pe3ZhciByPW4ucmVhbFNjYWxlVHlwZSxpPW4udHlwZSxvPW4udGlja0NvdW50LHM9bi5vcmlnaW5hbERvbWFpbix1PW4uYWxsb3dEZWNpbWFscyxmPXJ8fG4uc2NhbGU7aWYoZiE9PSJhdXRvIiYmZiE9PSJsaW5lYXIiKXJldHVybiBudWxsO2lmKG8mJmk9PT0ibnVtYmVyIiYmcyYmKHNbMF09PT0iYXV0byJ8fHNbMV09PT0iYXV0byIpKXt2YXIgZD10LmRvbWFpbigpO2lmKCFkLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgcD1JaWUoZCxvLHUpO3JldHVybiB0LmRvbWFpbihbYXYocCksUWEocCldKSx7bmljZVRpY2tzOnB9fWlmKG8mJmk9PT0ibnVtYmVyIil7dmFyIG09dC5kb21haW4oKSx5PSRpZShtLG8sdSk7cmV0dXJue25pY2VUaWNrczp5fX1yZXR1cm4gbnVsbH07ZnVuY3Rpb24gUm0oZSl7dmFyIHQ9ZS5heGlzLG49ZS50aWNrcyxyPWUuYmFuZFNpemUsaT1lLmVudHJ5LG89ZS5pbmRleCxzPWUuZGF0YUtleTtpZih0LnR5cGU9PT0iY2F0ZWdvcnkiKXtpZighdC5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSYmdC5kYXRhS2V5JiYhR2UoaVt0LmRhdGFLZXldKSl7dmFyIHU9b20obiwidmFsdWUiLGlbdC5kYXRhS2V5XSk7aWYodSlyZXR1cm4gdS5jb29yZGluYXRlK3IvMn1yZXR1cm4gbltvXT9uW29dLmNvb3JkaW5hdGUrci8yOm51bGx9dmFyIGY9SnQoaSxHZShzKT90LmRhdGFLZXk6cyk7cmV0dXJuIEdlKGYpP251bGw6dC5zY2FsZShmKX12YXIgc0w9ZnVuY3Rpb24odCl7dmFyIG49dC5heGlzLHI9dC50aWNrcyxpPXQub2Zmc2V0LG89dC5iYW5kU2l6ZSxzPXQuZW50cnksdT10LmluZGV4O2lmKG4udHlwZT09PSJjYXRlZ29yeSIpcmV0dXJuIHJbdV0/clt1XS5jb29yZGluYXRlK2k6bnVsbDt2YXIgZj1KdChzLG4uZGF0YUtleSxuLmRvbWFpblt1XSk7cmV0dXJuIEdlKGYpP251bGw6bi5zY2FsZShmKS1vLzIraX0sX2FlPWZ1bmN0aW9uKHQpe3ZhciBuPXQubnVtZXJpY0F4aXMscj1uLnNjYWxlLmRvbWFpbigpO2lmKG4udHlwZT09PSJudW1iZXIiKXt2YXIgaT1NYXRoLm1pbihyWzBdLHJbMV0pLG89TWF0aC5tYXgoclswXSxyWzFdKTtyZXR1cm4gaTw9MCYmbz49MD8wOm88MD9vOml9cmV0dXJuIHJbMF19LE9hZT1mdW5jdGlvbih0LG4pe3ZhciByLGk9KHI9dC50eXBlKSE9PW51bGwmJnIhPT12b2lkIDAmJnIuZGVmYXVsdFByb3BzP0t0KEt0KHt9LHQudHlwZS5kZWZhdWx0UHJvcHMpLHQucHJvcHMpOnQucHJvcHMsbz1pLnN0YWNrSWQ7aWYodm4obykpe3ZhciBzPW5bb107aWYocyl7dmFyIHU9cy5pdGVtcy5pbmRleE9mKHQpO3JldHVybiB1Pj0wP3Muc3RhY2tlZERhdGFbdV06bnVsbH19cmV0dXJuIG51bGx9LFRhZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24obixyKXtyZXR1cm5bYXYoci5jb25jYXQoW25bMF1dKS5maWx0ZXIodmUpKSxRYShyLmNvbmNhdChbblsxXV0pLmZpbHRlcih2ZSkpXX0sWzEvMCwtMS8wXSl9LGRxPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gT2JqZWN0LmtleXModCkucmVkdWNlKGZ1bmN0aW9uKGksbyl7dmFyIHM9dFtvXSx1PXMuc3RhY2tlZERhdGEsZj11LnJlZHVjZShmdW5jdGlvbihkLHApe3ZhciBtPVRhZShwLnNsaWNlKG4scisxKSk7cmV0dXJuW01hdGgubWluKGRbMF0sbVswXSksTWF0aC5tYXgoZFsxXSxtWzFdKV19LFsxLzAsLTEvMF0pO3JldHVybltNYXRoLm1pbihmWzBdLGlbMF0pLE1hdGgubWF4KGZbMV0saVsxXSldfSxbMS8wLC0xLzBdKS5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIGk9PT0xLzB8fGk9PT0tMS8wPzA6aX0pfSxsTD0vXmRhdGFNaW5bXHNdKi1bXHNdKihbMC05XSsoWy5dezF9WzAtOV0rKXswLDF9KSQvLHVMPS9eZGF0YU1heFtcc10qXCtbXHNdKihbMC05XSsoWy5dezF9WzAtOV0rKXswLDF9KSQvLEVBPWZ1bmN0aW9uKHQsbixyKXtpZihIZSh0KSlyZXR1cm4gdChuLHIpO2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiBuO3ZhciBpPVtdO2lmKHZlKHRbMF0pKWlbMF09cj90WzBdOk1hdGgubWluKHRbMF0sblswXSk7ZWxzZSBpZihsTC50ZXN0KHRbMF0pKXt2YXIgbz0rbEwuZXhlYyh0WzBdKVsxXTtpWzBdPW5bMF0tb31lbHNlIEhlKHRbMF0pP2lbMF09dFswXShuWzBdKTppWzBdPW5bMF07aWYodmUodFsxXSkpaVsxXT1yP3RbMV06TWF0aC5tYXgodFsxXSxuWzFdKTtlbHNlIGlmKHVMLnRlc3QodFsxXSkpe3ZhciBzPSt1TC5leGVjKHRbMV0pWzFdO2lbMV09blsxXStzfWVsc2UgSGUodFsxXSk/aVsxXT10WzFdKG5bMV0pOmlbMV09blsxXTtyZXR1cm4gaX0sTm09ZnVuY3Rpb24odCxuLHIpe2lmKHQmJnQuc2NhbGUmJnQuc2NhbGUuYmFuZHdpZHRoKXt2YXIgaT10LnNjYWxlLmJhbmR3aWR0aCgpO2lmKCFyfHxpPjApcmV0dXJuIGl9aWYodCYmbiYmbi5sZW5ndGg+PTIpe2Zvcih2YXIgbz1ZTyhuLGZ1bmN0aW9uKG0pe3JldHVybiBtLmNvb3JkaW5hdGV9KSxzPTEvMCx1PTEsZj1vLmxlbmd0aDt1PGY7dSsrKXt2YXIgZD1vW3VdLHA9b1t1LTFdO3M9TWF0aC5taW4oKGQuY29vcmRpbmF0ZXx8MCktKHAuY29vcmRpbmF0ZXx8MCkscyl9cmV0dXJuIHM9PT0xLzA/MDpzfXJldHVybiByP3ZvaWQgMDowfSxjTD1mdW5jdGlvbih0LG4scil7cmV0dXJuIXR8fCF0Lmxlbmd0aHx8d3ModCx4cihyLCJ0eXBlLmRlZmF1bHRQcm9wcy5kb21haW4iKSk/bjp0fSxocT1mdW5jdGlvbih0LG4pe3ZhciByPXQudHlwZS5kZWZhdWx0UHJvcHM/S3QoS3Qoe30sdC50eXBlLmRlZmF1bHRQcm9wcyksdC5wcm9wcyk6dC5wcm9wcyxpPXIuZGF0YUtleSxvPXIubmFtZSxzPXIudW5pdCx1PXIuZm9ybWF0dGVyLGY9ci50b29sdGlwVHlwZSxkPXIuY2hhcnRUeXBlLHA9ci5oaWRlO3JldHVybiBLdChLdCh7fSwkZSh0LCExKSkse30se2RhdGFLZXk6aSx1bml0OnMsZm9ybWF0dGVyOnUsbmFtZTpvfHxpLGNvbG9yOndUKHQpLHZhbHVlOkp0KG4saSksdHlwZTpmLHBheWxvYWQ6bixjaGFydFR5cGU6ZCxoaWRlOnB9KX07ZnVuY3Rpb24gS2YoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gS2Y9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEtmKGUpfWZ1bmN0aW9uIGZMKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gbmEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/ZkwoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3BxKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmZMKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBwcShlLHQsbil7cmV0dXJuIHQ9RWFlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gRWFlKGUpe3ZhciB0PUNhZShlLCJzdHJpbmciKTtyZXR1cm4gS2YodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBDYWUoZSx0KXtpZihLZihlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihLZihyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIGphZShlLHQpe3JldHVybiBOYWUoZSl8fFJhZShlLHQpfHxNYWUoZSx0KXx8UGFlKCl9ZnVuY3Rpb24gUGFlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIE1hZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gZEwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIGRMKGUsdCl9fWZ1bmN0aW9uIGRMKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gUmFlKGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihuIT1udWxsKXt2YXIgcixpLG8scyx1PVtdLGY9ITAsZD0hMTt0cnl7aWYobz0obj1uLmNhbGwoZSkpLm5leHQsdCE9PTApZm9yKDshKGY9KHI9by5jYWxsKG4pKS5kb25lKSYmKHUucHVzaChyLnZhbHVlKSx1Lmxlbmd0aCE9PXQpO2Y9ITApO31jYXRjaChwKXtkPSEwLGk9cH1maW5hbGx5e3RyeXtpZighZiYmbi5yZXR1cm4hPW51bGwmJihzPW4ucmV0dXJuKCksT2JqZWN0KHMpIT09cykpcmV0dXJufWZpbmFsbHl7aWYoZCl0aHJvdyBpfX1yZXR1cm4gdX19ZnVuY3Rpb24gTmFlKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9dmFyIGttPU1hdGguUEkvMTgwLGthZT1mdW5jdGlvbih0KXtyZXR1cm4gdCoxODAvTWF0aC5QSX0sTHQ9ZnVuY3Rpb24odCxuLHIsaSl7cmV0dXJue3g6dCtNYXRoLmNvcygta20qaSkqcix5Om4rTWF0aC5zaW4oLWttKmkpKnJ9fSxtcT1mdW5jdGlvbih0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9O3JldHVybiBNYXRoLm1pbihNYXRoLmFicyh0LShyLmxlZnR8fDApLShyLnJpZ2h0fHwwKSksTWF0aC5hYnMobi0oci50b3B8fDApLShyLmJvdHRvbXx8MCkpKS8yfSxEYWU9ZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgcz10LndpZHRoLHU9dC5oZWlnaHQsZj10LnN0YXJ0QW5nbGUsZD10LmVuZEFuZ2xlLHA9R24odC5jeCxzLHMvMiksbT1Hbih0LmN5LHUsdS8yKSx5PW1xKHMsdSxyKSx4PUduKHQuaW5uZXJSYWRpdXMseSwwKSx3PUduKHQub3V0ZXJSYWRpdXMseSx5Ki44KSxiPU9iamVjdC5rZXlzKG4pO3JldHVybiBiLnJlZHVjZShmdW5jdGlvbihnLF8pe3ZhciBPPW5bX10sRT1PLmRvbWFpbixqPU8ucmV2ZXJzZWQsVDtpZihHZShPLnJhbmdlKSlpPT09ImFuZ2xlQXhpcyI/VD1bZixkXTppPT09InJhZGl1c0F4aXMiJiYoVD1beCx3XSksaiYmKFQ9W1RbMV0sVFswXV0pO2Vsc2V7VD1PLnJhbmdlO3ZhciBQPVQsTj1qYWUoUCwyKTtmPU5bMF0sZD1OWzFdfXZhciBSPXVxKE8sbyksST1SLnJlYWxTY2FsZVR5cGUsVj1SLnNjYWxlO1YuZG9tYWluKEUpLnJhbmdlKFQpLGNxKFYpO3ZhciBCPWZxKFYsbmEobmEoe30sTykse30se3JlYWxTY2FsZVR5cGU6SX0pKSwkPW5hKG5hKG5hKHt9LE8pLEIpLHt9LHtyYW5nZTpULHJhZGl1czp3LHJlYWxTY2FsZVR5cGU6SSxzY2FsZTpWLGN4OnAsY3k6bSxpbm5lclJhZGl1czp4LG91dGVyUmFkaXVzOncsc3RhcnRBbmdsZTpmLGVuZEFuZ2xlOmR9KTtyZXR1cm4gbmEobmEoe30sZykse30scHEoe30sXywkKSl9LHt9KX0sTGFlPWZ1bmN0aW9uKHQsbil7dmFyIHI9dC54LGk9dC55LG89bi54LHM9bi55O3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coci1vLDIpK01hdGgucG93KGktcywyKSl9LElhZT1mdW5jdGlvbih0LG4pe3ZhciByPXQueCxpPXQueSxvPW4uY3gscz1uLmN5LHU9TGFlKHt4OnIseTppfSx7eDpvLHk6c30pO2lmKHU8PTApcmV0dXJue3JhZGl1czp1fTt2YXIgZj0oci1vKS91LGQ9TWF0aC5hY29zKGYpO3JldHVybiBpPnMmJihkPTIqTWF0aC5QSS1kKSx7cmFkaXVzOnUsYW5nbGU6a2FlKGQpLGFuZ2xlSW5SYWRpYW46ZH19LCRhZT1mdW5jdGlvbih0KXt2YXIgbj10LnN0YXJ0QW5nbGUscj10LmVuZEFuZ2xlLGk9TWF0aC5mbG9vcihuLzM2MCksbz1NYXRoLmZsb29yKHIvMzYwKSxzPU1hdGgubWluKGksbyk7cmV0dXJue3N0YXJ0QW5nbGU6bi1zKjM2MCxlbmRBbmdsZTpyLXMqMzYwfX0sQmFlPWZ1bmN0aW9uKHQsbil7dmFyIHI9bi5zdGFydEFuZ2xlLGk9bi5lbmRBbmdsZSxvPU1hdGguZmxvb3Ioci8zNjApLHM9TWF0aC5mbG9vcihpLzM2MCksdT1NYXRoLm1pbihvLHMpO3JldHVybiB0K3UqMzYwfSxoTD1mdW5jdGlvbih0LG4pe3ZhciByPXQueCxpPXQueSxvPUlhZSh7eDpyLHk6aX0sbikscz1vLnJhZGl1cyx1PW8uYW5nbGUsZj1uLmlubmVyUmFkaXVzLGQ9bi5vdXRlclJhZGl1cztpZihzPGZ8fHM+ZClyZXR1cm4hMTtpZihzPT09MClyZXR1cm4hMDt2YXIgcD0kYWUobiksbT1wLnN0YXJ0QW5nbGUseT1wLmVuZEFuZ2xlLHg9dSx3O2lmKG08PXkpe2Zvcig7eD55Oyl4LT0zNjA7Zm9yKDt4PG07KXgrPTM2MDt3PXg+PW0mJng8PXl9ZWxzZXtmb3IoO3g+bTspeC09MzYwO2Zvcig7eDx5Oyl4Kz0zNjA7dz14Pj15JiZ4PD1tfXJldHVybiB3P25hKG5hKHt9LG4pLHt9LHtyYWRpdXM6cyxhbmdsZTpCYWUoeCxuKX0pOm51bGx9LHlxPWZ1bmN0aW9uKHQpe3JldHVybiFDLmlzVmFsaWRFbGVtZW50KHQpJiYhSGUodCkmJnR5cGVvZiB0IT0iYm9vbGVhbiI/dC5jbGFzc05hbWU6IiJ9O2Z1bmN0aW9uIFdmKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIFdmPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxXZihlKX12YXIgVmFlPVsib2Zmc2V0Il07ZnVuY3Rpb24gcWFlKGUpe3JldHVybiBIYWUoZSl8fEZhZShlKXx8emFlKGUpfHxVYWUoKX1mdW5jdGlvbiBVYWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIHphZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gQ0EoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIENBKGUsdCl9fWZ1bmN0aW9uIEZhZShlKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmZVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxlWyJAQGl0ZXJhdG9yIl0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gSGFlKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIENBKGUpfWZ1bmN0aW9uIENBKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gR2FlKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1LYWUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBLYWUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIHBMKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gaG4oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/cEwoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe1dhZShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpwTChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gV2FlKGUsdCxuKXtyZXR1cm4gdD1ZYWUodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBZYWUoZSl7dmFyIHQ9WGFlKGUsInN0cmluZyIpO3JldHVybiBXZih0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIFhhZShlLHQpe2lmKFdmKGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKFdmKHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9ZnVuY3Rpb24gWWYoKXtyZXR1cm4gWWY9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxZZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIFphZT1mdW5jdGlvbih0KXt2YXIgbj10LnZhbHVlLHI9dC5mb3JtYXR0ZXIsaT1HZSh0LmNoaWxkcmVuKT9uOnQuY2hpbGRyZW47cmV0dXJuIEhlKHIpP3IoaSk6aX0sUWFlPWZ1bmN0aW9uKHQsbil7dmFyIHI9SG4obi10KSxpPU1hdGgubWluKE1hdGguYWJzKG4tdCksMzYwKTtyZXR1cm4gcippfSxKYWU9ZnVuY3Rpb24odCxuLHIpe3ZhciBpPXQucG9zaXRpb24sbz10LnZpZXdCb3gscz10Lm9mZnNldCx1PXQuY2xhc3NOYW1lLGY9byxkPWYuY3gscD1mLmN5LG09Zi5pbm5lclJhZGl1cyx5PWYub3V0ZXJSYWRpdXMseD1mLnN0YXJ0QW5nbGUsdz1mLmVuZEFuZ2xlLGI9Zi5jbG9ja1dpc2UsZz0obSt5KS8yLF89UWFlKHgsdyksTz1fPj0wPzE6LTEsRSxqO2k9PT0iaW5zaWRlU3RhcnQiPyhFPXgrTypzLGo9Yik6aT09PSJpbnNpZGVFbmQiPyhFPXctTypzLGo9IWIpOmk9PT0iZW5kIiYmKEU9dytPKnMsaj1iKSxqPV88PTA/ajohajt2YXIgVD1MdChkLHAsZyxFKSxQPUx0KGQscCxnLEUrKGo/MTotMSkqMzU5KSxOPSJNIi5jb25jYXQoVC54LCIsIikuY29uY2F0KFQueSxgCiAgICBBYCkuY29uY2F0KGcsIiwiKS5jb25jYXQoZywiLDAsMSwiKS5jb25jYXQoaj8wOjEsYCwKICAgIGApLmNvbmNhdChQLngsIiwiKS5jb25jYXQoUC55KSxSPUdlKHQuaWQpP0NzKCJyZWNoYXJ0cy1yYWRpYWwtbGluZS0iKTp0LmlkO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoInRleHQiLFlmKHt9LHIse2RvbWluYW50QmFzZWxpbmU6ImNlbnRyYWwiLGNsYXNzTmFtZTpXZSgicmVjaGFydHMtcmFkaWFsLWJhci1sYWJlbCIsdSl9KSxGLmNyZWF0ZUVsZW1lbnQoImRlZnMiLG51bGwsRi5jcmVhdGVFbGVtZW50KCJwYXRoIix7aWQ6UixkOk59KSksRi5jcmVhdGVFbGVtZW50KCJ0ZXh0UGF0aCIse3hsaW5rSHJlZjoiIyIuY29uY2F0KFIpfSxuKSl9LGVvZT1mdW5jdGlvbih0KXt2YXIgbj10LnZpZXdCb3gscj10Lm9mZnNldCxpPXQucG9zaXRpb24sbz1uLHM9by5jeCx1PW8uY3ksZj1vLmlubmVyUmFkaXVzLGQ9by5vdXRlclJhZGl1cyxwPW8uc3RhcnRBbmdsZSxtPW8uZW5kQW5nbGUseT0ocCttKS8yO2lmKGk9PT0ib3V0c2lkZSIpe3ZhciB4PUx0KHMsdSxkK3IseSksdz14LngsYj14Lnk7cmV0dXJue3g6dyx5OmIsdGV4dEFuY2hvcjp3Pj1zPyJzdGFydCI6ImVuZCIsdmVydGljYWxBbmNob3I6Im1pZGRsZSJ9fWlmKGk9PT0iY2VudGVyIilyZXR1cm57eDpzLHk6dSx0ZXh0QW5jaG9yOiJtaWRkbGUiLHZlcnRpY2FsQW5jaG9yOiJtaWRkbGUifTtpZihpPT09ImNlbnRlclRvcCIpcmV0dXJue3g6cyx5OnUsdGV4dEFuY2hvcjoibWlkZGxlIix2ZXJ0aWNhbEFuY2hvcjoic3RhcnQifTtpZihpPT09ImNlbnRlckJvdHRvbSIpcmV0dXJue3g6cyx5OnUsdGV4dEFuY2hvcjoibWlkZGxlIix2ZXJ0aWNhbEFuY2hvcjoiZW5kIn07dmFyIGc9KGYrZCkvMixfPUx0KHMsdSxnLHkpLE89Xy54LEU9Xy55O3JldHVybnt4Ok8seTpFLHRleHRBbmNob3I6Im1pZGRsZSIsdmVydGljYWxBbmNob3I6Im1pZGRsZSJ9fSx0b2U9ZnVuY3Rpb24odCl7dmFyIG49dC52aWV3Qm94LHI9dC5wYXJlbnRWaWV3Qm94LGk9dC5vZmZzZXQsbz10LnBvc2l0aW9uLHM9bix1PXMueCxmPXMueSxkPXMud2lkdGgscD1zLmhlaWdodCxtPXA+PTA/MTotMSx5PW0qaSx4PW0+MD8iZW5kIjoic3RhcnQiLHc9bT4wPyJzdGFydCI6ImVuZCIsYj1kPj0wPzE6LTEsZz1iKmksXz1iPjA/ImVuZCI6InN0YXJ0IixPPWI+MD8ic3RhcnQiOiJlbmQiO2lmKG89PT0idG9wIil7dmFyIEU9e3g6dStkLzIseTpmLW0qaSx0ZXh0QW5jaG9yOiJtaWRkbGUiLHZlcnRpY2FsQW5jaG9yOnh9O3JldHVybiBobihobih7fSxFKSxyP3toZWlnaHQ6TWF0aC5tYXgoZi1yLnksMCksd2lkdGg6ZH06e30pfWlmKG89PT0iYm90dG9tIil7dmFyIGo9e3g6dStkLzIseTpmK3AreSx0ZXh0QW5jaG9yOiJtaWRkbGUiLHZlcnRpY2FsQW5jaG9yOnd9O3JldHVybiBobihobih7fSxqKSxyP3toZWlnaHQ6TWF0aC5tYXgoci55K3IuaGVpZ2h0LShmK3ApLDApLHdpZHRoOmR9Ont9KX1pZihvPT09ImxlZnQiKXt2YXIgVD17eDp1LWcseTpmK3AvMix0ZXh0QW5jaG9yOl8sdmVydGljYWxBbmNob3I6Im1pZGRsZSJ9O3JldHVybiBobihobih7fSxUKSxyP3t3aWR0aDpNYXRoLm1heChULngtci54LDApLGhlaWdodDpwfTp7fSl9aWYobz09PSJyaWdodCIpe3ZhciBQPXt4OnUrZCtnLHk6ZitwLzIsdGV4dEFuY2hvcjpPLHZlcnRpY2FsQW5jaG9yOiJtaWRkbGUifTtyZXR1cm4gaG4oaG4oe30sUCkscj97d2lkdGg6TWF0aC5tYXgoci54K3Iud2lkdGgtUC54LDApLGhlaWdodDpwfTp7fSl9dmFyIE49cj97d2lkdGg6ZCxoZWlnaHQ6cH06e307cmV0dXJuIG89PT0iaW5zaWRlTGVmdCI/aG4oe3g6dStnLHk6ZitwLzIsdGV4dEFuY2hvcjpPLHZlcnRpY2FsQW5jaG9yOiJtaWRkbGUifSxOKTpvPT09Imluc2lkZVJpZ2h0Ij9obih7eDp1K2QtZyx5OmYrcC8yLHRleHRBbmNob3I6Xyx2ZXJ0aWNhbEFuY2hvcjoibWlkZGxlIn0sTik6bz09PSJpbnNpZGVUb3AiP2huKHt4OnUrZC8yLHk6Zit5LHRleHRBbmNob3I6Im1pZGRsZSIsdmVydGljYWxBbmNob3I6d30sTik6bz09PSJpbnNpZGVCb3R0b20iP2huKHt4OnUrZC8yLHk6ZitwLXksdGV4dEFuY2hvcjoibWlkZGxlIix2ZXJ0aWNhbEFuY2hvcjp4fSxOKTpvPT09Imluc2lkZVRvcExlZnQiP2huKHt4OnUrZyx5OmYreSx0ZXh0QW5jaG9yOk8sdmVydGljYWxBbmNob3I6d30sTik6bz09PSJpbnNpZGVUb3BSaWdodCI/aG4oe3g6dStkLWcseTpmK3ksdGV4dEFuY2hvcjpfLHZlcnRpY2FsQW5jaG9yOnd9LE4pOm89PT0iaW5zaWRlQm90dG9tTGVmdCI/aG4oe3g6dStnLHk6ZitwLXksdGV4dEFuY2hvcjpPLHZlcnRpY2FsQW5jaG9yOnh9LE4pOm89PT0iaW5zaWRlQm90dG9tUmlnaHQiP2huKHt4OnUrZC1nLHk6ZitwLXksdGV4dEFuY2hvcjpfLHZlcnRpY2FsQW5jaG9yOnh9LE4pOkx1KG8pJiYodmUoby54KXx8aXMoby54KSkmJih2ZShvLnkpfHxpcyhvLnkpKT9obih7eDp1K0duKG8ueCxkKSx5OmYrR24oby55LHApLHRleHRBbmNob3I6ImVuZCIsdmVydGljYWxBbmNob3I6ImVuZCJ9LE4pOmhuKHt4OnUrZC8yLHk6ZitwLzIsdGV4dEFuY2hvcjoibWlkZGxlIix2ZXJ0aWNhbEFuY2hvcjoibWlkZGxlIn0sTil9LG5vZT1mdW5jdGlvbih0KXtyZXR1cm4iY3giaW4gdCYmdmUodC5jeCl9O2Z1bmN0aW9uIE9uKGUpe3ZhciB0PWUub2Zmc2V0LG49dD09PXZvaWQgMD81OnQscj1HYWUoZSxWYWUpLGk9aG4oe29mZnNldDpufSxyKSxvPWkudmlld0JveCxzPWkucG9zaXRpb24sdT1pLnZhbHVlLGY9aS5jaGlsZHJlbixkPWkuY29udGVudCxwPWkuY2xhc3NOYW1lLG09cD09PXZvaWQgMD8iIjpwLHk9aS50ZXh0QnJlYWtBbGw7aWYoIW98fEdlKHUpJiZHZShmKSYmIUMuaXNWYWxpZEVsZW1lbnQoZCkmJiFIZShkKSlyZXR1cm4gbnVsbDtpZihDLmlzVmFsaWRFbGVtZW50KGQpKXJldHVybiBDLmNsb25lRWxlbWVudChkLGkpO3ZhciB4O2lmKEhlKGQpKXtpZih4PUMuY3JlYXRlRWxlbWVudChkLGkpLEMuaXNWYWxpZEVsZW1lbnQoeCkpcmV0dXJuIHh9ZWxzZSB4PVphZShpKTt2YXIgdz1ub2UobyksYj0kZShpLCEwKTtpZih3JiYocz09PSJpbnNpZGVTdGFydCJ8fHM9PT0iaW5zaWRlRW5kInx8cz09PSJlbmQiKSlyZXR1cm4gSmFlKGkseCxiKTt2YXIgZz13P2VvZShpKTp0b2UoaSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudCh4cyxZZih7Y2xhc3NOYW1lOldlKCJyZWNoYXJ0cy1sYWJlbCIsbSl9LGIsZyx7YnJlYWtBbGw6eX0pLHgpfU9uLmRpc3BsYXlOYW1lPSJMYWJlbCI7dmFyIHZxPWZ1bmN0aW9uKHQpe3ZhciBuPXQuY3gscj10LmN5LGk9dC5hbmdsZSxvPXQuc3RhcnRBbmdsZSxzPXQuZW5kQW5nbGUsdT10LnIsZj10LnJhZGl1cyxkPXQuaW5uZXJSYWRpdXMscD10Lm91dGVyUmFkaXVzLG09dC54LHk9dC55LHg9dC50b3Asdz10LmxlZnQsYj10LndpZHRoLGc9dC5oZWlnaHQsXz10LmNsb2NrV2lzZSxPPXQubGFiZWxWaWV3Qm94O2lmKE8pcmV0dXJuIE87aWYodmUoYikmJnZlKGcpKXtpZih2ZShtKSYmdmUoeSkpcmV0dXJue3g6bSx5LHdpZHRoOmIsaGVpZ2h0Omd9O2lmKHZlKHgpJiZ2ZSh3KSlyZXR1cm57eCx5Oncsd2lkdGg6YixoZWlnaHQ6Z319cmV0dXJuIHZlKG0pJiZ2ZSh5KT97eDptLHksd2lkdGg6MCxoZWlnaHQ6MH06dmUobikmJnZlKHIpP3tjeDpuLGN5OnIsc3RhcnRBbmdsZTpvfHxpfHwwLGVuZEFuZ2xlOnN8fGl8fDAsaW5uZXJSYWRpdXM6ZHx8MCxvdXRlclJhZGl1czpwfHxmfHx1fHwwLGNsb2NrV2lzZTpffTp0LnZpZXdCb3g/dC52aWV3Qm94Ont9fSxyb2U9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD90PT09ITA/Ri5jcmVhdGVFbGVtZW50KE9uLHtrZXk6ImxhYmVsLWltcGxpY2l0Iix2aWV3Qm94Om59KTp2bih0KT9GLmNyZWF0ZUVsZW1lbnQoT24se2tleToibGFiZWwtaW1wbGljaXQiLHZpZXdCb3g6bix2YWx1ZTp0fSk6Qy5pc1ZhbGlkRWxlbWVudCh0KT90LnR5cGU9PT1Pbj9DLmNsb25lRWxlbWVudCh0LHtrZXk6ImxhYmVsLWltcGxpY2l0Iix2aWV3Qm94Om59KTpGLmNyZWF0ZUVsZW1lbnQoT24se2tleToibGFiZWwtaW1wbGljaXQiLGNvbnRlbnQ6dCx2aWV3Qm94Om59KTpIZSh0KT9GLmNyZWF0ZUVsZW1lbnQoT24se2tleToibGFiZWwtaW1wbGljaXQiLGNvbnRlbnQ6dCx2aWV3Qm94Om59KTpMdSh0KT9GLmNyZWF0ZUVsZW1lbnQoT24sWWYoe3ZpZXdCb3g6bn0sdCx7a2V5OiJsYWJlbC1pbXBsaWNpdCJ9KSk6bnVsbDpudWxsfSxpb2U9ZnVuY3Rpb24odCxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITA7aWYoIXR8fCF0LmNoaWxkcmVuJiZyJiYhdC5sYWJlbClyZXR1cm4gbnVsbDt2YXIgaT10LmNoaWxkcmVuLG89dnEodCkscz13cihpLE9uKS5tYXAoZnVuY3Rpb24oZixkKXtyZXR1cm4gQy5jbG9uZUVsZW1lbnQoZix7dmlld0JveDpufHxvLGtleToibGFiZWwtIi5jb25jYXQoZCl9KX0pO2lmKCFyKXJldHVybiBzO3ZhciB1PXJvZSh0LmxhYmVsLG58fG8pO3JldHVyblt1XS5jb25jYXQocWFlKHMpKX07T24ucGFyc2VWaWV3Qm94PXZxO09uLnJlbmRlckNhbGxCeVBhcmVudD1pb2U7dmFyIGoxLG1MO2Z1bmN0aW9uIGFvZSgpe2lmKG1MKXJldHVybiBqMTttTD0xO2Z1bmN0aW9uIGUodCl7dmFyIG49dD09bnVsbD8wOnQubGVuZ3RoO3JldHVybiBuP3Rbbi0xXTp2b2lkIDB9cmV0dXJuIGoxPWUsajF9dmFyIG9vZT1hb2UoKTtjb25zdCBzb2U9T3Qob29lKTtmdW5jdGlvbiBYZihlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBYZj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sWGYoZSl9dmFyIGxvZT1bInZhbHVlQWNjZXNzb3IiXSx1b2U9WyJkYXRhIiwiZGF0YUtleSIsImNsb2NrV2lzZSIsImlkIiwidGV4dEJyZWFrQWxsIl07ZnVuY3Rpb24gY29lKGUpe3JldHVybiBwb2UoZSl8fGhvZShlKXx8ZG9lKGUpfHxmb2UoKX1mdW5jdGlvbiBmb2UoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIGRvZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gakEoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIGpBKGUsdCl9fWZ1bmN0aW9uIGhvZShlKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmZVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxlWyJAQGl0ZXJhdG9yIl0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gcG9lKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGpBKGUpfWZ1bmN0aW9uIGpBKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gRG0oKXtyZXR1cm4gRG09T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxEbS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geUwoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB2TChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj95TChPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7bW9lKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnlMKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBtb2UoZSx0LG4pe3JldHVybiB0PXlvZSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHlvZShlKXt2YXIgdD12b2UoZSwic3RyaW5nIik7cmV0dXJuIFhmKHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gdm9lKGUsdCl7aWYoWGYoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoWGYocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiBnTChlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49Z29lKGUsdCkscixpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKylyPW9baV0sISh0LmluZGV4T2Yocik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKG5bcl09ZVtyXSl9cmV0dXJuIG59ZnVuY3Rpb24gZ29lKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7aWYodC5pbmRleE9mKHIpPj0wKWNvbnRpbnVlO25bcl09ZVtyXX1yZXR1cm4gbn12YXIgYm9lPWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQudmFsdWUpP3NvZSh0LnZhbHVlKTp0LnZhbHVlfTtmdW5jdGlvbiBUaShlKXt2YXIgdD1lLnZhbHVlQWNjZXNzb3Isbj10PT09dm9pZCAwP2JvZTp0LHI9Z0woZSxsb2UpLGk9ci5kYXRhLG89ci5kYXRhS2V5LHM9ci5jbG9ja1dpc2UsdT1yLmlkLGY9ci50ZXh0QnJlYWtBbGwsZD1nTChyLHVvZSk7cmV0dXJuIWl8fCFpLmxlbmd0aD9udWxsOkYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1sYWJlbC1saXN0In0saS5tYXAoZnVuY3Rpb24ocCxtKXt2YXIgeT1HZShvKT9uKHAsbSk6SnQocCYmcC5wYXlsb2FkLG8pLHg9R2UodSk/e306e2lkOiIiLmNvbmNhdCh1LCItIikuY29uY2F0KG0pfTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KE9uLERtKHt9LCRlKHAsITApLGQseCx7cGFyZW50Vmlld0JveDpwLnBhcmVudFZpZXdCb3gsdmFsdWU6eSx0ZXh0QnJlYWtBbGw6Zix2aWV3Qm94Ok9uLnBhcnNlVmlld0JveChHZShzKT9wOnZMKHZMKHt9LHApLHt9LHtjbG9ja1dpc2U6c30pKSxrZXk6ImxhYmVsLSIuY29uY2F0KG0pLGluZGV4Om19KSl9KSl9VGkuZGlzcGxheU5hbWU9IkxhYmVsTGlzdCI7ZnVuY3Rpb24geG9lKGUsdCl7cmV0dXJuIGU/ZT09PSEwP0YuY3JlYXRlRWxlbWVudChUaSx7a2V5OiJsYWJlbExpc3QtaW1wbGljaXQiLGRhdGE6dH0pOkYuaXNWYWxpZEVsZW1lbnQoZSl8fEhlKGUpP0YuY3JlYXRlRWxlbWVudChUaSx7a2V5OiJsYWJlbExpc3QtaW1wbGljaXQiLGRhdGE6dCxjb250ZW50OmV9KTpMdShlKT9GLmNyZWF0ZUVsZW1lbnQoVGksRG0oe2RhdGE6dH0sZSx7a2V5OiJsYWJlbExpc3QtaW1wbGljaXQifSkpOm51bGw6bnVsbH1mdW5jdGlvbiB3b2UoZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06ITA7aWYoIWV8fCFlLmNoaWxkcmVuJiZuJiYhZS5sYWJlbClyZXR1cm4gbnVsbDt2YXIgcj1lLmNoaWxkcmVuLGk9d3IocixUaSkubWFwKGZ1bmN0aW9uKHMsdSl7cmV0dXJuIEMuY2xvbmVFbGVtZW50KHMse2RhdGE6dCxrZXk6ImxhYmVsTGlzdC0iLmNvbmNhdCh1KX0pfSk7aWYoIW4pcmV0dXJuIGk7dmFyIG89eG9lKGUubGFiZWwsdCk7cmV0dXJuW29dLmNvbmNhdChjb2UoaSkpfVRpLnJlbmRlckNhbGxCeVBhcmVudD13b2U7ZnVuY3Rpb24gWmYoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gWmY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LFpmKGUpfWZ1bmN0aW9uIFBBKCl7cmV0dXJuIFBBPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sUEEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGJMKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24geEwoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/YkwoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe1NvZShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpiTChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gU29lKGUsdCxuKXtyZXR1cm4gdD1Bb2UodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBBb2UoZSl7dmFyIHQ9X29lKGUsInN0cmluZyIpO3JldHVybiBaZih0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIF9vZShlLHQpe2lmKFpmKGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKFpmKHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9dmFyIE9vZT1mdW5jdGlvbih0LG4pe3ZhciByPUhuKG4tdCksaT1NYXRoLm1pbihNYXRoLmFicyhuLXQpLDM1OS45OTkpO3JldHVybiByKml9LHlwPWZ1bmN0aW9uKHQpe3ZhciBuPXQuY3gscj10LmN5LGk9dC5yYWRpdXMsbz10LmFuZ2xlLHM9dC5zaWduLHU9dC5pc0V4dGVybmFsLGY9dC5jb3JuZXJSYWRpdXMsZD10LmNvcm5lcklzRXh0ZXJuYWwscD1mKih1PzE6LTEpK2ksbT1NYXRoLmFzaW4oZi9wKS9rbSx5PWQ/bzpvK3MqbSx4PUx0KG4scixwLHkpLHc9THQobixyLGkseSksYj1kP28tcyptOm8sZz1MdChuLHIscCpNYXRoLmNvcyhtKmttKSxiKTtyZXR1cm57Y2VudGVyOngsY2lyY2xlVGFuZ2VuY3k6dyxsaW5lVGFuZ2VuY3k6Zyx0aGV0YTptfX0sZ3E9ZnVuY3Rpb24odCl7dmFyIG49dC5jeCxyPXQuY3ksaT10LmlubmVyUmFkaXVzLG89dC5vdXRlclJhZGl1cyxzPXQuc3RhcnRBbmdsZSx1PXQuZW5kQW5nbGUsZj1Pb2Uocyx1KSxkPXMrZixwPUx0KG4scixvLHMpLG09THQobixyLG8sZCkseT0iTSAiLmNvbmNhdChwLngsIiwiKS5jb25jYXQocC55LGAKICAgIEEgYCkuY29uY2F0KG8sIiwiKS5jb25jYXQobyxgLDAsCiAgICBgKS5jb25jYXQoKyhNYXRoLmFicyhmKT4xODApLCIsIikuY29uY2F0KCsocz5kKSxgLAogICAgYCkuY29uY2F0KG0ueCwiLCIpLmNvbmNhdChtLnksYAogIGApO2lmKGk+MCl7dmFyIHg9THQobixyLGkscyksdz1MdChuLHIsaSxkKTt5Kz0iTCAiLmNvbmNhdCh3LngsIiwiKS5jb25jYXQody55LGAKICAgICAgICAgICAgQSBgKS5jb25jYXQoaSwiLCIpLmNvbmNhdChpLGAsMCwKICAgICAgICAgICAgYCkuY29uY2F0KCsoTWF0aC5hYnMoZik+MTgwKSwiLCIpLmNvbmNhdCgrKHM8PWQpLGAsCiAgICAgICAgICAgIGApLmNvbmNhdCh4LngsIiwiKS5jb25jYXQoeC55LCIgWiIpfWVsc2UgeSs9IkwgIi5jb25jYXQobiwiLCIpLmNvbmNhdChyLCIgWiIpO3JldHVybiB5fSxUb2U9ZnVuY3Rpb24odCl7dmFyIG49dC5jeCxyPXQuY3ksaT10LmlubmVyUmFkaXVzLG89dC5vdXRlclJhZGl1cyxzPXQuY29ybmVyUmFkaXVzLHU9dC5mb3JjZUNvcm5lclJhZGl1cyxmPXQuY29ybmVySXNFeHRlcm5hbCxkPXQuc3RhcnRBbmdsZSxwPXQuZW5kQW5nbGUsbT1IbihwLWQpLHk9eXAoe2N4Om4sY3k6cixyYWRpdXM6byxhbmdsZTpkLHNpZ246bSxjb3JuZXJSYWRpdXM6cyxjb3JuZXJJc0V4dGVybmFsOmZ9KSx4PXkuY2lyY2xlVGFuZ2VuY3ksdz15LmxpbmVUYW5nZW5jeSxiPXkudGhldGEsZz15cCh7Y3g6bixjeTpyLHJhZGl1czpvLGFuZ2xlOnAsc2lnbjotbSxjb3JuZXJSYWRpdXM6cyxjb3JuZXJJc0V4dGVybmFsOmZ9KSxfPWcuY2lyY2xlVGFuZ2VuY3ksTz1nLmxpbmVUYW5nZW5jeSxFPWcudGhldGEsaj1mP01hdGguYWJzKGQtcCk6TWF0aC5hYnMoZC1wKS1iLUU7aWYoajwwKXJldHVybiB1PyJNICIuY29uY2F0KHcueCwiLCIpLmNvbmNhdCh3LnksYAogICAgICAgIGFgKS5jb25jYXQocywiLCIpLmNvbmNhdChzLCIsMCwwLDEsIikuY29uY2F0KHMqMixgLDAKICAgICAgICBhYCkuY29uY2F0KHMsIiwiKS5jb25jYXQocywiLDAsMCwxLCIpLmNvbmNhdCgtcyoyLGAsMAogICAgICBgKTpncSh7Y3g6bixjeTpyLGlubmVyUmFkaXVzOmksb3V0ZXJSYWRpdXM6byxzdGFydEFuZ2xlOmQsZW5kQW5nbGU6cH0pO3ZhciBUPSJNICIuY29uY2F0KHcueCwiLCIpLmNvbmNhdCh3LnksYAogICAgQWApLmNvbmNhdChzLCIsIikuY29uY2F0KHMsIiwwLDAsIikuY29uY2F0KCsobTwwKSwiLCIpLmNvbmNhdCh4LngsIiwiKS5jb25jYXQoeC55LGAKICAgIEFgKS5jb25jYXQobywiLCIpLmNvbmNhdChvLCIsMCwiKS5jb25jYXQoKyhqPjE4MCksIiwiKS5jb25jYXQoKyhtPDApLCIsIikuY29uY2F0KF8ueCwiLCIpLmNvbmNhdChfLnksYAogICAgQWApLmNvbmNhdChzLCIsIikuY29uY2F0KHMsIiwwLDAsIikuY29uY2F0KCsobTwwKSwiLCIpLmNvbmNhdChPLngsIiwiKS5jb25jYXQoTy55LGAKICBgKTtpZihpPjApe3ZhciBQPXlwKHtjeDpuLGN5OnIscmFkaXVzOmksYW5nbGU6ZCxzaWduOm0saXNFeHRlcm5hbDohMCxjb3JuZXJSYWRpdXM6cyxjb3JuZXJJc0V4dGVybmFsOmZ9KSxOPVAuY2lyY2xlVGFuZ2VuY3ksUj1QLmxpbmVUYW5nZW5jeSxJPVAudGhldGEsVj15cCh7Y3g6bixjeTpyLHJhZGl1czppLGFuZ2xlOnAsc2lnbjotbSxpc0V4dGVybmFsOiEwLGNvcm5lclJhZGl1czpzLGNvcm5lcklzRXh0ZXJuYWw6Zn0pLEI9Vi5jaXJjbGVUYW5nZW5jeSwkPVYubGluZVRhbmdlbmN5LHo9Vi50aGV0YSxVPWY/TWF0aC5hYnMoZC1wKTpNYXRoLmFicyhkLXApLUktejtpZihVPDAmJnM9PT0wKXJldHVybiIiLmNvbmNhdChULCJMIikuY29uY2F0KG4sIiwiKS5jb25jYXQociwiWiIpO1QrPSJMIi5jb25jYXQoJC54LCIsIikuY29uY2F0KCQueSxgCiAgICAgIEFgKS5jb25jYXQocywiLCIpLmNvbmNhdChzLCIsMCwwLCIpLmNvbmNhdCgrKG08MCksIiwiKS5jb25jYXQoQi54LCIsIikuY29uY2F0KEIueSxgCiAgICAgIEFgKS5jb25jYXQoaSwiLCIpLmNvbmNhdChpLCIsMCwiKS5jb25jYXQoKyhVPjE4MCksIiwiKS5jb25jYXQoKyhtPjApLCIsIikuY29uY2F0KE4ueCwiLCIpLmNvbmNhdChOLnksYAogICAgICBBYCkuY29uY2F0KHMsIiwiKS5jb25jYXQocywiLDAsMCwiKS5jb25jYXQoKyhtPDApLCIsIikuY29uY2F0KFIueCwiLCIpLmNvbmNhdChSLnksIloiKX1lbHNlIFQrPSJMIi5jb25jYXQobiwiLCIpLmNvbmNhdChyLCJaIik7cmV0dXJuIFR9LEVvZT17Y3g6MCxjeTowLGlubmVyUmFkaXVzOjAsb3V0ZXJSYWRpdXM6MCxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MCxjb3JuZXJSYWRpdXM6MCxmb3JjZUNvcm5lclJhZGl1czohMSxjb3JuZXJJc0V4dGVybmFsOiExfSxicT1mdW5jdGlvbih0KXt2YXIgbj14TCh4TCh7fSxFb2UpLHQpLHI9bi5jeCxpPW4uY3ksbz1uLmlubmVyUmFkaXVzLHM9bi5vdXRlclJhZGl1cyx1PW4uY29ybmVyUmFkaXVzLGY9bi5mb3JjZUNvcm5lclJhZGl1cyxkPW4uY29ybmVySXNFeHRlcm5hbCxwPW4uc3RhcnRBbmdsZSxtPW4uZW5kQW5nbGUseT1uLmNsYXNzTmFtZTtpZihzPG98fHA9PT1tKXJldHVybiBudWxsO3ZhciB4PVdlKCJyZWNoYXJ0cy1zZWN0b3IiLHkpLHc9cy1vLGI9R24odSx3LDAsITApLGc7cmV0dXJuIGI+MCYmTWF0aC5hYnMocC1tKTwzNjA/Zz1Ub2Uoe2N4OnIsY3k6aSxpbm5lclJhZGl1czpvLG91dGVyUmFkaXVzOnMsY29ybmVyUmFkaXVzOk1hdGgubWluKGIsdy8yKSxmb3JjZUNvcm5lclJhZGl1czpmLGNvcm5lcklzRXh0ZXJuYWw6ZCxzdGFydEFuZ2xlOnAsZW5kQW5nbGU6bX0pOmc9Z3Eoe2N4OnIsY3k6aSxpbm5lclJhZGl1czpvLG91dGVyUmFkaXVzOnMsc3RhcnRBbmdsZTpwLGVuZEFuZ2xlOm19KSxGLmNyZWF0ZUVsZW1lbnQoInBhdGgiLFBBKHt9LCRlKG4sITApLHtjbGFzc05hbWU6eCxkOmcscm9sZToiaW1nIn0pKX07ZnVuY3Rpb24gUWYoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gUWY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LFFmKGUpfWZ1bmN0aW9uIE1BKCl7cmV0dXJuIE1BPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sTUEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHdMKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gU0woZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/d0woT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe0NvZShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp3TChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gQ29lKGUsdCxuKXtyZXR1cm4gdD1qb2UodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBqb2UoZSl7dmFyIHQ9UG9lKGUsInN0cmluZyIpO3JldHVybiBRZih0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIFBvZShlLHQpe2lmKFFmKGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKFFmKHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9dmFyIEFMPXtjdXJ2ZUJhc2lzQ2xvc2VkOlhaLGN1cnZlQmFzaXNPcGVuOlpaLGN1cnZlQmFzaXM6WVosY3VydmVCdW1wWDpEWixjdXJ2ZUJ1bXBZOkxaLGN1cnZlTGluZWFyQ2xvc2VkOlFaLGN1cnZlTGluZWFyOkd5LGN1cnZlTW9ub3RvbmVYOkpaLGN1cnZlTW9ub3RvbmVZOmVRLGN1cnZlTmF0dXJhbDp0USxjdXJ2ZVN0ZXA6blEsY3VydmVTdGVwQWZ0ZXI6aVEsY3VydmVTdGVwQmVmb3JlOnJRfSx2cD1mdW5jdGlvbih0KXtyZXR1cm4gdC54PT09K3QueCYmdC55PT09K3QueX0sUWM9ZnVuY3Rpb24odCl7cmV0dXJuIHQueH0sSmM9ZnVuY3Rpb24odCl7cmV0dXJuIHQueX0sTW9lPWZ1bmN0aW9uKHQsbil7aWYoSGUodCkpcmV0dXJuIHQ7dmFyIHI9ImN1cnZlIi5jb25jYXQoRnkodCkpO3JldHVybihyPT09ImN1cnZlTW9ub3RvbmUifHxyPT09ImN1cnZlQnVtcCIpJiZuP0FMWyIiLmNvbmNhdChyKS5jb25jYXQobj09PSJ2ZXJ0aWNhbCI/IlkiOiJYIildOkFMW3JdfHxHeX0sUm9lPWZ1bmN0aW9uKHQpe3ZhciBuPXQudHlwZSxyPW49PT12b2lkIDA/ImxpbmVhciI6bixpPXQucG9pbnRzLG89aT09PXZvaWQgMD9bXTppLHM9dC5iYXNlTGluZSx1PXQubGF5b3V0LGY9dC5jb25uZWN0TnVsbHMsZD1mPT09dm9pZCAwPyExOmYscD1Nb2Uocix1KSxtPWQ/by5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIHZwKGIpfSk6byx5O2lmKEFycmF5LmlzQXJyYXkocykpe3ZhciB4PWQ/cy5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIHZwKGIpfSk6cyx3PW0ubWFwKGZ1bmN0aW9uKGIsZyl7cmV0dXJuIFNMKFNMKHt9LGIpLHt9LHtiYXNlOnhbZ119KX0pO3JldHVybiB1PT09InZlcnRpY2FsIj95PWxwKCkueShKYykueDEoUWMpLngwKGZ1bmN0aW9uKGIpe3JldHVybiBiLmJhc2UueH0pOnk9bHAoKS54KFFjKS55MShKYykueTAoZnVuY3Rpb24oYil7cmV0dXJuIGIuYmFzZS55fSkseS5kZWZpbmVkKHZwKS5jdXJ2ZShwKSx5KHcpfXJldHVybiB1PT09InZlcnRpY2FsIiYmdmUocyk/eT1scCgpLnkoSmMpLngxKFFjKS54MChzKTp2ZShzKT95PWxwKCkueChRYykueTEoSmMpLnkwKHMpOnk9YlYoKS54KFFjKS55KEpjKSx5LmRlZmluZWQodnApLmN1cnZlKHApLHkobSl9LGhzPWZ1bmN0aW9uKHQpe3ZhciBuPXQuY2xhc3NOYW1lLHI9dC5wb2ludHMsaT10LnBhdGgsbz10LnBhdGhSZWY7aWYoKCFyfHwhci5sZW5ndGgpJiYhaSlyZXR1cm4gbnVsbDt2YXIgcz1yJiZyLmxlbmd0aD9Sb2UodCk6aTtyZXR1cm4gQy5jcmVhdGVFbGVtZW50KCJwYXRoIixNQSh7fSwkZSh0LCExKSxzbSh0KSx7Y2xhc3NOYW1lOldlKCJyZWNoYXJ0cy1jdXJ2ZSIsbiksZDpzLHJlZjpvfSkpfSxQMT17ZXhwb3J0czp7fX0sTTEsX0w7ZnVuY3Rpb24gTm9lKCl7aWYoX0wpcmV0dXJuIE0xO19MPTE7dmFyIGU9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIjtyZXR1cm4gTTE9ZSxNMX12YXIgUjEsT0w7ZnVuY3Rpb24ga29lKCl7aWYoT0wpcmV0dXJuIFIxO09MPTE7dmFyIGU9Tm9lKCk7ZnVuY3Rpb24gdCgpe31mdW5jdGlvbiBuKCl7fXJldHVybiBuLnJlc2V0V2FybmluZ0NhY2hlPXQsUjE9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHMsdSxmLGQscCxtKXtpZihtIT09ZSl7dmFyIHk9bmV3IEVycm9yKCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzIik7dGhyb3cgeS5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIix5fX1yLmlzUmVxdWlyZWQ9cjtmdW5jdGlvbiBpKCl7cmV0dXJuIHJ9dmFyIG89e2FycmF5OnIsYmlnaW50OnIsYm9vbDpyLGZ1bmM6cixudW1iZXI6cixvYmplY3Q6cixzdHJpbmc6cixzeW1ib2w6cixhbnk6cixhcnJheU9mOmksZWxlbWVudDpyLGVsZW1lbnRUeXBlOnIsaW5zdGFuY2VPZjppLG5vZGU6cixvYmplY3RPZjppLG9uZU9mOmksb25lT2ZUeXBlOmksc2hhcGU6aSxleGFjdDppLGNoZWNrUHJvcFR5cGVzOm4scmVzZXRXYXJuaW5nQ2FjaGU6dH07cmV0dXJuIG8uUHJvcFR5cGVzPW8sb30sUjF9dmFyIFRMO2Z1bmN0aW9uIERvZSgpe3JldHVybiBUTHx8KFRMPTEsUDEuZXhwb3J0cz1rb2UoKSgpKSxQMS5leHBvcnRzfXZhciBMb2U9RG9lKCk7Y29uc3QgeXQ9T3QoTG9lKSx7Z2V0T3duUHJvcGVydHlOYW1lczpJb2UsZ2V0T3duUHJvcGVydHlTeW1ib2xzOiRvZX09T2JqZWN0LHtoYXNPd25Qcm9wZXJ0eTpCb2V9PU9iamVjdC5wcm90b3R5cGU7ZnVuY3Rpb24gTjEoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixpLG8pe3JldHVybiBlKHIsaSxvKSYmdChyLGksbyl9fWZ1bmN0aW9uIGdwKGUpe3JldHVybiBmdW5jdGlvbihuLHIsaSl7aWYoIW58fCFyfHx0eXBlb2YgbiE9Im9iamVjdCJ8fHR5cGVvZiByIT0ib2JqZWN0IilyZXR1cm4gZShuLHIsaSk7Y29uc3R7Y2FjaGU6b309aSxzPW8uZ2V0KG4pLHU9by5nZXQocik7aWYocyYmdSlyZXR1cm4gcz09PXImJnU9PT1uO28uc2V0KG4sciksby5zZXQocixuKTtjb25zdCBmPWUobixyLGkpO3JldHVybiBvLmRlbGV0ZShuKSxvLmRlbGV0ZShyKSxmfX1mdW5jdGlvbiBWb2UoZSl7cmV0dXJuIGU/LltTeW1ib2wudG9TdHJpbmdUYWddfWZ1bmN0aW9uIEVMKGUpe3JldHVybiBJb2UoZSkuY29uY2F0KCRvZShlKSl9Y29uc3QgcW9lPU9iamVjdC5oYXNPd258fCgoZSx0KT0+Qm9lLmNhbGwoZSx0KSk7ZnVuY3Rpb24gTXMoZSx0KXtyZXR1cm4gZT09PXR8fCFlJiYhdCYmZSE9PWUmJnQhPT10fWNvbnN0IFVvZT0iX192Iix6b2U9Il9fbyIsRm9lPSJfb3duZXIiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6Q0wsa2V5czpqTH09T2JqZWN0O2Z1bmN0aW9uIEhvZShlLHQpe3JldHVybiBlLmJ5dGVMZW5ndGg9PT10LmJ5dGVMZW5ndGgmJkxtKG5ldyBVaW50OEFycmF5KGUpLG5ldyBVaW50OEFycmF5KHQpKX1mdW5jdGlvbiBHb2UoZSx0LG4pe2xldCByPWUubGVuZ3RoO2lmKHQubGVuZ3RoIT09cilyZXR1cm4hMTtmb3IoO3ItLSA+MDspaWYoIW4uZXF1YWxzKGVbcl0sdFtyXSxyLHIsZSx0LG4pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEtvZShlLHQpe3JldHVybiBlLmJ5dGVMZW5ndGg9PT10LmJ5dGVMZW5ndGgmJkxtKG5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLG5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpKX1mdW5jdGlvbiBXb2UoZSx0KXtyZXR1cm4gTXMoZS5nZXRUaW1lKCksdC5nZXRUaW1lKCkpfWZ1bmN0aW9uIFlvZShlLHQpe3JldHVybiBlLm5hbWU9PT10Lm5hbWUmJmUubWVzc2FnZT09PXQubWVzc2FnZSYmZS5jYXVzZT09PXQuY2F1c2UmJmUuc3RhY2s9PT10LnN0YWNrfWZ1bmN0aW9uIFhvZShlLHQpe3JldHVybiBlPT09dH1mdW5jdGlvbiBQTChlLHQsbil7Y29uc3Qgcj1lLnNpemU7aWYociE9PXQuc2l6ZSlyZXR1cm4hMTtpZighcilyZXR1cm4hMDtjb25zdCBpPW5ldyBBcnJheShyKSxvPWUuZW50cmllcygpO2xldCBzLHUsZj0wO2Zvcig7KHM9by5uZXh0KCkpJiYhcy5kb25lOyl7Y29uc3QgZD10LmVudHJpZXMoKTtsZXQgcD0hMSxtPTA7Zm9yKDsodT1kLm5leHQoKSkmJiF1LmRvbmU7KXtpZihpW21dKXttKys7Y29udGludWV9Y29uc3QgeT1zLnZhbHVlLHg9dS52YWx1ZTtpZihuLmVxdWFscyh5WzBdLHhbMF0sZixtLGUsdCxuKSYmbi5lcXVhbHMoeVsxXSx4WzFdLHlbMF0seFswXSxlLHQsbikpe3A9aVttXT0hMDticmVha31tKyt9aWYoIXApcmV0dXJuITE7ZisrfXJldHVybiEwfWNvbnN0IFpvZT1NcztmdW5jdGlvbiBRb2UoZSx0LG4pe2NvbnN0IHI9akwoZSk7bGV0IGk9ci5sZW5ndGg7aWYoakwodCkubGVuZ3RoIT09aSlyZXR1cm4hMTtmb3IoO2ktLSA+MDspaWYoIXhxKGUsdCxuLHJbaV0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGVmKGUsdCxuKXtjb25zdCByPUVMKGUpO2xldCBpPXIubGVuZ3RoO2lmKEVMKHQpLmxlbmd0aCE9PWkpcmV0dXJuITE7bGV0IG8scyx1O2Zvcig7aS0tID4wOylpZihvPXJbaV0sIXhxKGUsdCxuLG8pfHwocz1DTChlLG8pLHU9Q0wodCxvKSwoc3x8dSkmJighc3x8IXV8fHMuY29uZmlndXJhYmxlIT09dS5jb25maWd1cmFibGV8fHMuZW51bWVyYWJsZSE9PXUuZW51bWVyYWJsZXx8cy53cml0YWJsZSE9PXUud3JpdGFibGUpKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBKb2UoZSx0KXtyZXR1cm4gTXMoZS52YWx1ZU9mKCksdC52YWx1ZU9mKCkpfWZ1bmN0aW9uIGVzZShlLHQpe3JldHVybiBlLnNvdXJjZT09PXQuc291cmNlJiZlLmZsYWdzPT09dC5mbGFnc31mdW5jdGlvbiBNTChlLHQsbil7Y29uc3Qgcj1lLnNpemU7aWYociE9PXQuc2l6ZSlyZXR1cm4hMTtpZighcilyZXR1cm4hMDtjb25zdCBpPW5ldyBBcnJheShyKSxvPWUudmFsdWVzKCk7bGV0IHMsdTtmb3IoOyhzPW8ubmV4dCgpKSYmIXMuZG9uZTspe2NvbnN0IGY9dC52YWx1ZXMoKTtsZXQgZD0hMSxwPTA7Zm9yKDsodT1mLm5leHQoKSkmJiF1LmRvbmU7KXtpZighaVtwXSYmbi5lcXVhbHMocy52YWx1ZSx1LnZhbHVlLHMudmFsdWUsdS52YWx1ZSxlLHQsbikpe2Q9aVtwXT0hMDticmVha31wKyt9aWYoIWQpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gTG0oZSx0KXtsZXQgbj1lLmJ5dGVMZW5ndGg7aWYodC5ieXRlTGVuZ3RoIT09bnx8ZS5ieXRlT2Zmc2V0IT09dC5ieXRlT2Zmc2V0KXJldHVybiExO2Zvcig7bi0tID4wOylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB0c2UoZSx0KXtyZXR1cm4gZS5ob3N0bmFtZT09PXQuaG9zdG5hbWUmJmUucGF0aG5hbWU9PT10LnBhdGhuYW1lJiZlLnByb3RvY29sPT09dC5wcm90b2NvbCYmZS5wb3J0PT09dC5wb3J0JiZlLmhhc2g9PT10Lmhhc2gmJmUudXNlcm5hbWU9PT10LnVzZXJuYW1lJiZlLnBhc3N3b3JkPT09dC5wYXNzd29yZH1mdW5jdGlvbiB4cShlLHQsbixyKXtyZXR1cm4ocj09PUZvZXx8cj09PXpvZXx8cj09PVVvZSkmJihlLiQkdHlwZW9mfHx0LiQkdHlwZW9mKT8hMDpxb2UodCxyKSYmbi5lcXVhbHMoZVtyXSx0W3JdLHIscixlLHQsbil9Y29uc3QgbnNlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIscnNlPSJbb2JqZWN0IEFyZ3VtZW50c10iLGlzZT0iW29iamVjdCBCb29sZWFuXSIsYXNlPSJbb2JqZWN0IERhdGFWaWV3XSIsb3NlPSJbb2JqZWN0IERhdGVdIixzc2U9IltvYmplY3QgRXJyb3JdIixsc2U9IltvYmplY3QgTWFwXSIsdXNlPSJbb2JqZWN0IE51bWJlcl0iLGNzZT0iW29iamVjdCBPYmplY3RdIixmc2U9IltvYmplY3QgUmVnRXhwXSIsZHNlPSJbb2JqZWN0IFNldF0iLGhzZT0iW29iamVjdCBTdHJpbmddIixwc2U9eyJbb2JqZWN0IEludDhBcnJheV0iOiEwLCJbb2JqZWN0IFVpbnQ4QXJyYXldIjohMCwiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOiEwLCJbb2JqZWN0IEludDE2QXJyYXldIjohMCwiW29iamVjdCBVaW50MTZBcnJheV0iOiEwLCJbb2JqZWN0IEludDMyQXJyYXldIjohMCwiW29iamVjdCBVaW50MzJBcnJheV0iOiEwLCJbb2JqZWN0IEZsb2F0MTZBcnJheV0iOiEwLCJbb2JqZWN0IEZsb2F0MzJBcnJheV0iOiEwLCJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOiEwLCJbb2JqZWN0IEJpZ0ludDY0QXJyYXldIjohMCwiW29iamVjdCBCaWdVaW50NjRBcnJheV0iOiEwfSxtc2U9IltvYmplY3QgVVJMXSIseXNlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gdnNlKHthcmVBcnJheUJ1ZmZlcnNFcXVhbDplLGFyZUFycmF5c0VxdWFsOnQsYXJlRGF0YVZpZXdzRXF1YWw6bixhcmVEYXRlc0VxdWFsOnIsYXJlRXJyb3JzRXF1YWw6aSxhcmVGdW5jdGlvbnNFcXVhbDpvLGFyZU1hcHNFcXVhbDpzLGFyZU51bWJlcnNFcXVhbDp1LGFyZU9iamVjdHNFcXVhbDpmLGFyZVByaW1pdGl2ZVdyYXBwZXJzRXF1YWw6ZCxhcmVSZWdFeHBzRXF1YWw6cCxhcmVTZXRzRXF1YWw6bSxhcmVUeXBlZEFycmF5c0VxdWFsOnksYXJlVXJsc0VxdWFsOngsdW5rbm93blRhZ0NvbXBhcmF0b3JzOnd9KXtyZXR1cm4gZnVuY3Rpb24oZyxfLE8pe2lmKGc9PT1fKXJldHVybiEwO2lmKGc9PW51bGx8fF89PW51bGwpcmV0dXJuITE7Y29uc3QgRT10eXBlb2YgZztpZihFIT09dHlwZW9mIF8pcmV0dXJuITE7aWYoRSE9PSJvYmplY3QiKXJldHVybiBFPT09Im51bWJlciI/dShnLF8sTyk6RT09PSJmdW5jdGlvbiI/byhnLF8sTyk6ITE7Y29uc3Qgaj1nLmNvbnN0cnVjdG9yO2lmKGohPT1fLmNvbnN0cnVjdG9yKXJldHVybiExO2lmKGo9PT1PYmplY3QpcmV0dXJuIGYoZyxfLE8pO2lmKEFycmF5LmlzQXJyYXkoZykpcmV0dXJuIHQoZyxfLE8pO2lmKGo9PT1EYXRlKXJldHVybiByKGcsXyxPKTtpZihqPT09UmVnRXhwKXJldHVybiBwKGcsXyxPKTtpZihqPT09TWFwKXJldHVybiBzKGcsXyxPKTtpZihqPT09U2V0KXJldHVybiBtKGcsXyxPKTtjb25zdCBUPXlzZS5jYWxsKGcpO2lmKFQ9PT1vc2UpcmV0dXJuIHIoZyxfLE8pO2lmKFQ9PT1mc2UpcmV0dXJuIHAoZyxfLE8pO2lmKFQ9PT1sc2UpcmV0dXJuIHMoZyxfLE8pO2lmKFQ9PT1kc2UpcmV0dXJuIG0oZyxfLE8pO2lmKFQ9PT1jc2UpcmV0dXJuIHR5cGVvZiBnLnRoZW4hPSJmdW5jdGlvbiImJnR5cGVvZiBfLnRoZW4hPSJmdW5jdGlvbiImJmYoZyxfLE8pO2lmKFQ9PT1tc2UpcmV0dXJuIHgoZyxfLE8pO2lmKFQ9PT1zc2UpcmV0dXJuIGkoZyxfLE8pO2lmKFQ9PT1yc2UpcmV0dXJuIGYoZyxfLE8pO2lmKHBzZVtUXSlyZXR1cm4geShnLF8sTyk7aWYoVD09PW5zZSlyZXR1cm4gZShnLF8sTyk7aWYoVD09PWFzZSlyZXR1cm4gbihnLF8sTyk7aWYoVD09PWlzZXx8VD09PXVzZXx8VD09PWhzZSlyZXR1cm4gZChnLF8sTyk7aWYodyl7bGV0IFA9d1tUXTtpZighUCl7Y29uc3QgTj1Wb2UoZyk7TiYmKFA9d1tOXSl9aWYoUClyZXR1cm4gUChnLF8sTyl9cmV0dXJuITF9fWZ1bmN0aW9uIGdzZSh7Y2lyY3VsYXI6ZSxjcmVhdGVDdXN0b21Db25maWc6dCxzdHJpY3Q6bn0pe2xldCByPXthcmVBcnJheUJ1ZmZlcnNFcXVhbDpIb2UsYXJlQXJyYXlzRXF1YWw6bj9lZjpHb2UsYXJlRGF0YVZpZXdzRXF1YWw6S29lLGFyZURhdGVzRXF1YWw6V29lLGFyZUVycm9yc0VxdWFsOllvZSxhcmVGdW5jdGlvbnNFcXVhbDpYb2UsYXJlTWFwc0VxdWFsOm4/TjEoUEwsZWYpOlBMLGFyZU51bWJlcnNFcXVhbDpab2UsYXJlT2JqZWN0c0VxdWFsOm4/ZWY6UW9lLGFyZVByaW1pdGl2ZVdyYXBwZXJzRXF1YWw6Sm9lLGFyZVJlZ0V4cHNFcXVhbDplc2UsYXJlU2V0c0VxdWFsOm4/TjEoTUwsZWYpOk1MLGFyZVR5cGVkQXJyYXlzRXF1YWw6bj9OMShMbSxlZik6TG0sYXJlVXJsc0VxdWFsOnRzZSx1bmtub3duVGFnQ29tcGFyYXRvcnM6dm9pZCAwfTtpZih0JiYocj1PYmplY3QuYXNzaWduKHt9LHIsdChyKSkpLGUpe2NvbnN0IGk9Z3Aoci5hcmVBcnJheXNFcXVhbCksbz1ncChyLmFyZU1hcHNFcXVhbCkscz1ncChyLmFyZU9iamVjdHNFcXVhbCksdT1ncChyLmFyZVNldHNFcXVhbCk7cj1PYmplY3QuYXNzaWduKHt9LHIse2FyZUFycmF5c0VxdWFsOmksYXJlTWFwc0VxdWFsOm8sYXJlT2JqZWN0c0VxdWFsOnMsYXJlU2V0c0VxdWFsOnV9KX1yZXR1cm4gcn1mdW5jdGlvbiBic2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyLGksbyxzLHUpe3JldHVybiBlKHQsbix1KX19ZnVuY3Rpb24geHNlKHtjaXJjdWxhcjplLGNvbXBhcmF0b3I6dCxjcmVhdGVTdGF0ZTpuLGVxdWFsczpyLHN0cmljdDppfSl7aWYobilyZXR1cm4gZnVuY3Rpb24odSxmKXtjb25zdHtjYWNoZTpkPWU/bmV3IFdlYWtNYXA6dm9pZCAwLG1ldGE6cH09bigpO3JldHVybiB0KHUsZix7Y2FjaGU6ZCxlcXVhbHM6cixtZXRhOnAsc3RyaWN0Oml9KX07aWYoZSlyZXR1cm4gZnVuY3Rpb24odSxmKXtyZXR1cm4gdCh1LGYse2NhY2hlOm5ldyBXZWFrTWFwLGVxdWFsczpyLG1ldGE6dm9pZCAwLHN0cmljdDppfSl9O2NvbnN0IG89e2NhY2hlOnZvaWQgMCxlcXVhbHM6cixtZXRhOnZvaWQgMCxzdHJpY3Q6aX07cmV0dXJuIGZ1bmN0aW9uKHUsZil7cmV0dXJuIHQodSxmLG8pfX1jb25zdCB3c2U9U28oKTtTbyh7c3RyaWN0OiEwfSk7U28oe2NpcmN1bGFyOiEwfSk7U28oe2NpcmN1bGFyOiEwLHN0cmljdDohMH0pO1NvKHtjcmVhdGVJbnRlcm5hbENvbXBhcmF0b3I6KCk9Pk1zfSk7U28oe3N0cmljdDohMCxjcmVhdGVJbnRlcm5hbENvbXBhcmF0b3I6KCk9Pk1zfSk7U28oe2NpcmN1bGFyOiEwLGNyZWF0ZUludGVybmFsQ29tcGFyYXRvcjooKT0+TXN9KTtTbyh7Y2lyY3VsYXI6ITAsY3JlYXRlSW50ZXJuYWxDb21wYXJhdG9yOigpPT5NcyxzdHJpY3Q6ITB9KTtmdW5jdGlvbiBTbyhlPXt9KXtjb25zdHtjaXJjdWxhcjp0PSExLGNyZWF0ZUludGVybmFsQ29tcGFyYXRvcjpuLGNyZWF0ZVN0YXRlOnIsc3RyaWN0Omk9ITF9PWUsbz1nc2UoZSkscz12c2UobyksdT1uP24ocyk6YnNlKHMpO3JldHVybiB4c2Uoe2NpcmN1bGFyOnQsY29tcGFyYXRvcjpzLGNyZWF0ZVN0YXRlOnIsZXF1YWxzOnUsc3RyaWN0Oml9KX1mdW5jdGlvbiBTc2UoZSl7dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZTwidSImJnJlcXVlc3RBbmltYXRpb25GcmFtZShlKX1mdW5jdGlvbiBSTChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06MCxuPS0xLHI9ZnVuY3Rpb24gaShvKXtuPDAmJihuPW8pLG8tbj50PyhlKG8pLG49LTEpOlNzZShpKX07cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpfWZ1bmN0aW9uIFJBKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIFJBPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxSQShlKX1mdW5jdGlvbiBBc2UoZSl7cmV0dXJuIEVzZShlKXx8VHNlKGUpfHxPc2UoZSl8fF9zZSgpfWZ1bmN0aW9uIF9zZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuCkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX1mdW5jdGlvbiBPc2UoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIE5MKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKG49PT0iT2JqZWN0IiYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxuPT09Ik1hcCJ8fG49PT0iU2V0IilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihuPT09IkFyZ3VtZW50cyJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBOTChlLHQpfX1mdW5jdGlvbiBOTChlLHQpeyh0PT1udWxsfHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFRzZShlKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmZVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxlWyJAQGl0ZXJhdG9yIl0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gRXNlKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9ZnVuY3Rpb24gQ3NlKCl7dmFyIGU9e30sdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxuPSExLHI9ZnVuY3Rpb24gaShvKXtpZighbil7aWYoQXJyYXkuaXNBcnJheShvKSl7aWYoIW8ubGVuZ3RoKXJldHVybjt2YXIgcz1vLHU9QXNlKHMpLGY9dVswXSxkPXUuc2xpY2UoMSk7aWYodHlwZW9mIGY9PSJudW1iZXIiKXtSTChpLmJpbmQobnVsbCxkKSxmKTtyZXR1cm59aShmKSxSTChpLmJpbmQobnVsbCxkKSk7cmV0dXJufVJBKG8pPT09Im9iamVjdCImJihlPW8sdChlKSksdHlwZW9mIG89PSJmdW5jdGlvbiImJm8oKX19O3JldHVybntzdG9wOmZ1bmN0aW9uKCl7bj0hMH0sc3RhcnQ6ZnVuY3Rpb24obyl7bj0hMSxyKG8pfSxzdWJzY3JpYmU6ZnVuY3Rpb24obyl7cmV0dXJuIHQ9byxmdW5jdGlvbigpe3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19fX19ZnVuY3Rpb24gSmYoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gSmY9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LEpmKGUpfWZ1bmN0aW9uIGtMKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gREwoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/a0woT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3dxKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmtMKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiB3cShlLHQsbil7cmV0dXJuIHQ9anNlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24ganNlKGUpe3ZhciB0PVBzZShlLCJzdHJpbmciKTtyZXR1cm4gSmYodCk9PT0ic3ltYm9sIj90OlN0cmluZyh0KX1mdW5jdGlvbiBQc2UoZSx0KXtpZihKZihlKSE9PSJvYmplY3QifHxlPT09bnVsbClyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoSmYocikhPT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9dmFyIE1zZT1mdW5jdGlvbih0LG4pe3JldHVybltPYmplY3Qua2V5cyh0KSxPYmplY3Qua2V5cyhuKV0ucmVkdWNlKGZ1bmN0aW9uKHIsaSl7cmV0dXJuIHIuZmlsdGVyKGZ1bmN0aW9uKG8pe3JldHVybiBpLmluY2x1ZGVzKG8pfSl9KX0sUnNlPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxOc2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvKFtBLVpdKS9nLGZ1bmN0aW9uKG4pe3JldHVybiItIi5jb25jYXQobi50b0xvd2VyQ2FzZSgpKX0pfSx2Zj1mdW5jdGlvbih0LG4pe3JldHVybiBPYmplY3Qua2V5cyhuKS5yZWR1Y2UoZnVuY3Rpb24ocixpKXtyZXR1cm4gREwoREwoe30scikse30sd3Eoe30saSx0KGksbltpXSkpKX0se30pfSxMTD1mdW5jdGlvbih0LG4scil7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKGkpe3JldHVybiIiLmNvbmNhdChOc2UoaSksIiAiKS5jb25jYXQobiwibXMgIikuY29uY2F0KHIpfSkuam9pbigiLCIpfTtmdW5jdGlvbiBrc2UoZSx0KXtyZXR1cm4gSXNlKGUpfHxMc2UoZSx0KXx8U3EoZSx0KXx8RHNlKCl9ZnVuY3Rpb24gRHNlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIExzZShlLHQpe3ZhciBuPWU9PW51bGw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobiE9bnVsbCl7dmFyIHIsaSxvLHMsdT1bXSxmPSEwLGQ9ITE7dHJ5e2lmKG89KG49bi5jYWxsKGUpKS5uZXh0LHQhPT0wKWZvcig7IShmPShyPW8uY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT10KTtmPSEwKTt9Y2F0Y2gocCl7ZD0hMCxpPXB9ZmluYWxseXt0cnl7aWYoIWYmJm4ucmV0dXJuIT1udWxsJiYocz1uLnJldHVybigpLE9iamVjdChzKSE9PXMpKXJldHVybn1maW5hbGx5e2lmKGQpdGhyb3cgaX19cmV0dXJuIHV9fWZ1bmN0aW9uIElzZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uICRzZShlKXtyZXR1cm4gcXNlKGUpfHxWc2UoZSl8fFNxKGUpfHxCc2UoKX1mdW5jdGlvbiBCc2UoKXt0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIFNxKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBOQShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gTkEoZSx0KX19ZnVuY3Rpb24gVnNlKGUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBxc2UoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gTkEoZSl9ZnVuY3Rpb24gTkEoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgSW09MWUtNCxBcT1mdW5jdGlvbih0LG4pe3JldHVyblswLDMqdCwzKm4tNip0LDMqdC0zKm4rMV19LF9xPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHIsaSl7cmV0dXJuIHIqTWF0aC5wb3cobixpKX0pLnJlZHVjZShmdW5jdGlvbihyLGkpe3JldHVybiByK2l9KX0sSUw9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIGk9QXEodCxuKTtyZXR1cm4gX3EoaSxyKX19LFVzZT1mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihyKXt2YXIgaT1BcSh0LG4pLG89W10uY29uY2F0KCRzZShpLm1hcChmdW5jdGlvbihzLHUpe3JldHVybiBzKnV9KS5zbGljZSgxKSksWzBdKTtyZXR1cm4gX3EobyxyKX19LCRMPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07dmFyIGk9blswXSxvPW5bMV0scz1uWzJdLHU9blszXTtpZihuLmxlbmd0aD09PTEpc3dpdGNoKG5bMF0pe2Nhc2UibGluZWFyIjppPTAsbz0wLHM9MSx1PTE7YnJlYWs7Y2FzZSJlYXNlIjppPS4yNSxvPS4xLHM9LjI1LHU9MTticmVhaztjYXNlImVhc2UtaW4iOmk9LjQyLG89MCxzPTEsdT0xO2JyZWFrO2Nhc2UiZWFzZS1vdXQiOmk9LjQyLG89MCxzPS41OCx1PTE7YnJlYWs7Y2FzZSJlYXNlLWluLW91dCI6aT0wLG89MCxzPS41OCx1PTE7YnJlYWs7ZGVmYXVsdDp7dmFyIGY9blswXS5zcGxpdCgiKCIpO2lmKGZbMF09PT0iY3ViaWMtYmV6aWVyIiYmZlsxXS5zcGxpdCgiKSIpWzBdLnNwbGl0KCIsIikubGVuZ3RoPT09NCl7dmFyIGQ9ZlsxXS5zcGxpdCgiKSIpWzBdLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBwYXJzZUZsb2F0KGcpfSkscD1rc2UoZCw0KTtpPXBbMF0sbz1wWzFdLHM9cFsyXSx1PXBbM119fX12YXIgbT1JTChpLHMpLHk9SUwobyx1KSx4PVVzZShpLHMpLHc9ZnVuY3Rpb24oXyl7cmV0dXJuIF8+MT8xOl88MD8wOl99LGI9ZnVuY3Rpb24oXyl7Zm9yKHZhciBPPV8+MT8xOl8sRT1PLGo9MDtqPDg7KytqKXt2YXIgVD1tKEUpLU8sUD14KEUpO2lmKE1hdGguYWJzKFQtTyk8SW18fFA8SW0pcmV0dXJuIHkoRSk7RT13KEUtVC9QKX1yZXR1cm4geShFKX07cmV0dXJuIGIuaXNTdGVwcGVyPSExLGJ9LHpzZT1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSxuPXQuc3RpZmYscj1uPT09dm9pZCAwPzEwMDpuLGk9dC5kYW1waW5nLG89aT09PXZvaWQgMD84Omkscz10LmR0LHU9cz09PXZvaWQgMD8xNzpzLGY9ZnVuY3Rpb24ocCxtLHkpe3ZhciB4PS0ocC1tKSpyLHc9eSpvLGI9eSsoeC13KSp1LzFlMyxnPXkqdS8xZTMrcDtyZXR1cm4gTWF0aC5hYnMoZy1tKTxJbSYmTWF0aC5hYnMoYik8SW0/W20sMF06W2csYl19O3JldHVybiBmLmlzU3RlcHBlcj0hMCxmLmR0PXUsZn0sRnNlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspbltyXT1hcmd1bWVudHNbcl07dmFyIGk9blswXTtpZih0eXBlb2YgaT09InN0cmluZyIpc3dpdGNoKGkpe2Nhc2UiZWFzZSI6Y2FzZSJlYXNlLWluLW91dCI6Y2FzZSJlYXNlLW91dCI6Y2FzZSJlYXNlLWluIjpjYXNlImxpbmVhciI6cmV0dXJuICRMKGkpO2Nhc2Uic3ByaW5nIjpyZXR1cm4genNlKCk7ZGVmYXVsdDppZihpLnNwbGl0KCIoIilbMF09PT0iY3ViaWMtYmV6aWVyIilyZXR1cm4gJEwoaSl9cmV0dXJuIHR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6bnVsbH07ZnVuY3Rpb24gZWQoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gZWQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGVkKGUpfWZ1bmN0aW9uIEJMKGUpe3JldHVybiBLc2UoZSl8fEdzZShlKXx8T3EoZSl8fEhzZSgpfWZ1bmN0aW9uIEhzZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gR3NlKGUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBLc2UoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gREEoZSl9ZnVuY3Rpb24gVkwoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBNbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9WTChPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7a0EoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6VkwoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIGtBKGUsdCxuKXtyZXR1cm4gdD1Xc2UodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBXc2UoZSl7dmFyIHQ9WXNlKGUsInN0cmluZyIpO3JldHVybiBlZCh0KT09PSJzeW1ib2wiP3Q6U3RyaW5nKHQpfWZ1bmN0aW9uIFlzZShlLHQpe2lmKGVkKGUpIT09Im9iamVjdCJ8fGU9PT1udWxsKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihlZChyKSE9PSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiBYc2UoZSx0KXtyZXR1cm4gSnNlKGUpfHxRc2UoZSx0KXx8T3EoZSx0KXx8WnNlKCl9ZnVuY3Rpb24gWnNlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIE9xKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBEQShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gREEoZSx0KX19ZnVuY3Rpb24gREEoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBRc2UoZSx0KXt2YXIgbj1lPT1udWxsP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG4hPW51bGwpe3ZhciByLGksbyxzLHU9W10sZj0hMCxkPSExO3RyeXtpZihvPShuPW4uY2FsbChlKSkubmV4dCx0IT09MClmb3IoOyEoZj0ocj1vLmNhbGwobikpLmRvbmUpJiYodS5wdXNoKHIudmFsdWUpLHUubGVuZ3RoIT09dCk7Zj0hMCk7fWNhdGNoKHApe2Q9ITAsaT1wfWZpbmFsbHl7dHJ5e2lmKCFmJiZuLnJldHVybiE9bnVsbCYmKHM9bi5yZXR1cm4oKSxPYmplY3QocykhPT1zKSlyZXR1cm59ZmluYWxseXtpZihkKXRocm93IGl9fXJldHVybiB1fX1mdW5jdGlvbiBKc2UoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX12YXIgJG09ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0KyhuLXQpKnJ9LExBPWZ1bmN0aW9uKHQpe3ZhciBuPXQuZnJvbSxyPXQudG87cmV0dXJuIG4hPT1yfSxlbGU9ZnVuY3Rpb24gZSh0LG4scil7dmFyIGk9dmYoZnVuY3Rpb24obyxzKXtpZihMQShzKSl7dmFyIHU9dChzLmZyb20scy50byxzLnZlbG9jaXR5KSxmPVhzZSh1LDIpLGQ9ZlswXSxwPWZbMV07cmV0dXJuIE1uKE1uKHt9LHMpLHt9LHtmcm9tOmQsdmVsb2NpdHk6cH0pfXJldHVybiBzfSxuKTtyZXR1cm4gcjwxP3ZmKGZ1bmN0aW9uKG8scyl7cmV0dXJuIExBKHMpP01uKE1uKHt9LHMpLHt9LHt2ZWxvY2l0eTokbShzLnZlbG9jaXR5LGlbb10udmVsb2NpdHksciksZnJvbTokbShzLmZyb20saVtvXS5mcm9tLHIpfSk6c30sbik6ZSh0LGksci0xKX07Y29uc3QgdGxlPShmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPU1zZShlLHQpLHM9by5yZWR1Y2UoZnVuY3Rpb24oZyxfKXtyZXR1cm4gTW4oTW4oe30sZykse30sa0Eoe30sXyxbZVtfXSx0W19dXSkpfSx7fSksdT1vLnJlZHVjZShmdW5jdGlvbihnLF8pe3JldHVybiBNbihNbih7fSxnKSx7fSxrQSh7fSxfLHtmcm9tOmVbX10sdmVsb2NpdHk6MCx0bzp0W19dfSkpfSx7fSksZj0tMSxkLHAsbT1mdW5jdGlvbigpe3JldHVybiBudWxsfSx5PWZ1bmN0aW9uKCl7cmV0dXJuIHZmKGZ1bmN0aW9uKF8sTyl7cmV0dXJuIE8uZnJvbX0sdSl9LHg9ZnVuY3Rpb24oKXtyZXR1cm4hT2JqZWN0LnZhbHVlcyh1KS5maWx0ZXIoTEEpLmxlbmd0aH0sdz1mdW5jdGlvbihfKXtkfHwoZD1fKTt2YXIgTz1fLWQsRT1PL24uZHQ7dT1lbGUobix1LEUpLGkoTW4oTW4oTW4oe30sZSksdCkseSgpKSksZD1fLHgoKXx8KGY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG0pKX0sYj1mdW5jdGlvbihfKXtwfHwocD1fKTt2YXIgTz0oXy1wKS9yLEU9dmYoZnVuY3Rpb24oVCxQKXtyZXR1cm4gJG0uYXBwbHkodm9pZCAwLEJMKFApLmNvbmNhdChbbihPKV0pKX0scyk7aWYoaShNbihNbihNbih7fSxlKSx0KSxFKSksTzwxKWY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG0pO2Vsc2V7dmFyIGo9dmYoZnVuY3Rpb24oVCxQKXtyZXR1cm4gJG0uYXBwbHkodm9pZCAwLEJMKFApLmNvbmNhdChbbigxKV0pKX0scyk7aShNbihNbihNbih7fSxlKSx0KSxqKSl9fTtyZXR1cm4gbT1uLmlzU3RlcHBlcj93OmIsZnVuY3Rpb24oKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG0pLGZ1bmN0aW9uKCl7Y2FuY2VsQW5pbWF0aW9uRnJhbWUoZil9fX0pO2Z1bmN0aW9uIHN1KGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIHN1PXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzdShlKX12YXIgbmxlPVsiY2hpbGRyZW4iLCJiZWdpbiIsImR1cmF0aW9uIiwiYXR0cmlidXRlTmFtZSIsImVhc2luZyIsImlzQWN0aXZlIiwic3RlcHMiLCJmcm9tIiwidG8iLCJjYW5CZWdpbiIsIm9uQW5pbWF0aW9uRW5kIiwic2hvdWxkUmVBbmltYXRlIiwib25BbmltYXRpb25SZVN0YXJ0Il07ZnVuY3Rpb24gcmxlKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1pbGUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBpbGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9LHI9T2JqZWN0LmtleXMoZSksaSxvO2ZvcihvPTA7bzxyLmxlbmd0aDtvKyspaT1yW29dLCEodC5pbmRleE9mKGkpPj0wKSYmKG5baV09ZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gazEoZSl7cmV0dXJuIGxsZShlKXx8c2xlKGUpfHxvbGUoZSl8fGFsZSgpfWZ1bmN0aW9uIGFsZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gb2xlKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBJQShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gSUEoZSx0KX19ZnVuY3Rpb24gc2xlKGUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBsbGUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gSUEoZSl9ZnVuY3Rpb24gSUEoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBxTChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFpyKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP3FMKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXt1ZihlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpxTChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gdWYoZSx0LG4pe3JldHVybiB0PVRxKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gdWxlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gY2xlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxUcShyLmtleSkscil9fWZ1bmN0aW9uIGZsZShlLHQsbil7cmV0dXJuIHQmJmNsZShlLnByb3RvdHlwZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIFRxKGUpe3ZhciB0PWRsZShlLCJzdHJpbmciKTtyZXR1cm4gc3UodCk9PT0ic3ltYm9sIj90OlN0cmluZyh0KX1mdW5jdGlvbiBkbGUoZSx0KXtpZihzdShlKSE9PSJvYmplY3QifHxlPT09bnVsbClyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoc3UocikhPT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9ZnVuY3Rpb24gaGxlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJiRBKGUsdCl9ZnVuY3Rpb24gJEEoZSx0KXtyZXR1cm4gJEE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSwkQShlLHQpfWZ1bmN0aW9uIHBsZShlKXt2YXIgdD1tbGUoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1CbShlKSxpO2lmKHQpe3ZhciBvPUJtKHRoaXMpLmNvbnN0cnVjdG9yO2k9UmVmbGVjdC5jb25zdHJ1Y3Qocixhcmd1bWVudHMsbyl9ZWxzZSBpPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBCQSh0aGlzLGkpfX1mdW5jdGlvbiBCQShlLHQpe2lmKHQmJihzdSh0KT09PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpcmV0dXJuIHQ7aWYodCE9PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBWQShlKX1mdW5jdGlvbiBWQShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gbWxlKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYodHlwZW9mIFByb3h5PT0iZnVuY3Rpb24iKXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIEJtKGUpe3JldHVybiBCbT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sQm0oZSl9dmFyIGxpPShmdW5jdGlvbihlKXtobGUobixlKTt2YXIgdD1wbGUobik7ZnVuY3Rpb24gbihyLGkpe3ZhciBvO3VsZSh0aGlzLG4pLG89dC5jYWxsKHRoaXMscixpKTt2YXIgcz1vLnByb3BzLHU9cy5pc0FjdGl2ZSxmPXMuYXR0cmlidXRlTmFtZSxkPXMuZnJvbSxwPXMudG8sbT1zLnN0ZXBzLHk9cy5jaGlsZHJlbix4PXMuZHVyYXRpb247aWYoby5oYW5kbGVTdHlsZUNoYW5nZT1vLmhhbmRsZVN0eWxlQ2hhbmdlLmJpbmQoVkEobykpLG8uY2hhbmdlU3R5bGU9by5jaGFuZ2VTdHlsZS5iaW5kKFZBKG8pKSwhdXx8eDw9MClyZXR1cm4gby5zdGF0ZT17c3R5bGU6e319LHR5cGVvZiB5PT0iZnVuY3Rpb24iJiYoby5zdGF0ZT17c3R5bGU6cH0pLEJBKG8pO2lmKG0mJm0ubGVuZ3RoKW8uc3RhdGU9e3N0eWxlOm1bMF0uc3R5bGV9O2Vsc2UgaWYoZCl7aWYodHlwZW9mIHk9PSJmdW5jdGlvbiIpcmV0dXJuIG8uc3RhdGU9e3N0eWxlOmR9LEJBKG8pO28uc3RhdGU9e3N0eWxlOmY/dWYoe30sZixkKTpkfX1lbHNlIG8uc3RhdGU9e3N0eWxlOnt9fTtyZXR1cm4gb31yZXR1cm4gZmxlKG4sW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBpPXRoaXMucHJvcHMsbz1pLmlzQWN0aXZlLHM9aS5jYW5CZWdpbjt0aGlzLm1vdW50ZWQ9ITAsISghb3x8IXMpJiZ0aGlzLnJ1bkFuaW1hdGlvbih0aGlzLnByb3BzKX19LHtrZXk6ImNvbXBvbmVudERpZFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaSl7dmFyIG89dGhpcy5wcm9wcyxzPW8uaXNBY3RpdmUsdT1vLmNhbkJlZ2luLGY9by5hdHRyaWJ1dGVOYW1lLGQ9by5zaG91bGRSZUFuaW1hdGUscD1vLnRvLG09by5mcm9tLHk9dGhpcy5zdGF0ZS5zdHlsZTtpZih1KXtpZighcyl7dmFyIHg9e3N0eWxlOmY/dWYoe30sZixwKTpwfTt0aGlzLnN0YXRlJiZ5JiYoZiYmeVtmXSE9PXB8fCFmJiZ5IT09cCkmJnRoaXMuc2V0U3RhdGUoeCk7cmV0dXJufWlmKCEod3NlKGkudG8scCkmJmkuY2FuQmVnaW4mJmkuaXNBY3RpdmUpKXt2YXIgdz0haS5jYW5CZWdpbnx8IWkuaXNBY3RpdmU7dGhpcy5tYW5hZ2VyJiZ0aGlzLm1hbmFnZXIuc3RvcCgpLHRoaXMuc3RvcEpTQW5pbWF0aW9uJiZ0aGlzLnN0b3BKU0FuaW1hdGlvbigpO3ZhciBiPXd8fGQ/bTppLnRvO2lmKHRoaXMuc3RhdGUmJnkpe3ZhciBnPXtzdHlsZTpmP3VmKHt9LGYsYik6Yn07KGYmJnlbZl0hPT1ifHwhZiYmeSE9PWIpJiZ0aGlzLnNldFN0YXRlKGcpfXRoaXMucnVuQW5pbWF0aW9uKFpyKFpyKHt9LHRoaXMucHJvcHMpLHt9LHtmcm9tOmIsYmVnaW46MH0pKX19fX0se2tleToiY29tcG9uZW50V2lsbFVubW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VudGVkPSExO3ZhciBpPXRoaXMucHJvcHMub25BbmltYXRpb25FbmQ7dGhpcy51blN1YnNjcmliZSYmdGhpcy51blN1YnNjcmliZSgpLHRoaXMubWFuYWdlciYmKHRoaXMubWFuYWdlci5zdG9wKCksdGhpcy5tYW5hZ2VyPW51bGwpLHRoaXMuc3RvcEpTQW5pbWF0aW9uJiZ0aGlzLnN0b3BKU0FuaW1hdGlvbigpLGkmJmkoKX19LHtrZXk6ImhhbmRsZVN0eWxlQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihpKXt0aGlzLmNoYW5nZVN0eWxlKGkpfX0se2tleToiY2hhbmdlU3R5bGUiLHZhbHVlOmZ1bmN0aW9uKGkpe3RoaXMubW91bnRlZCYmdGhpcy5zZXRTdGF0ZSh7c3R5bGU6aX0pfX0se2tleToicnVuSlNBbmltYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGkpe3ZhciBvPXRoaXMscz1pLmZyb20sdT1pLnRvLGY9aS5kdXJhdGlvbixkPWkuZWFzaW5nLHA9aS5iZWdpbixtPWkub25BbmltYXRpb25FbmQseT1pLm9uQW5pbWF0aW9uU3RhcnQseD10bGUocyx1LEZzZShkKSxmLHRoaXMuY2hhbmdlU3R5bGUpLHc9ZnVuY3Rpb24oKXtvLnN0b3BKU0FuaW1hdGlvbj14KCl9O3RoaXMubWFuYWdlci5zdGFydChbeSxwLHcsZixtXSl9fSx7a2V5OiJydW5TdGVwQW5pbWF0aW9uIix2YWx1ZTpmdW5jdGlvbihpKXt2YXIgbz10aGlzLHM9aS5zdGVwcyx1PWkuYmVnaW4sZj1pLm9uQW5pbWF0aW9uU3RhcnQsZD1zWzBdLHA9ZC5zdHlsZSxtPWQuZHVyYXRpb24seT1tPT09dm9pZCAwPzA6bSx4PWZ1bmN0aW9uKGIsZyxfKXtpZihfPT09MClyZXR1cm4gYjt2YXIgTz1nLmR1cmF0aW9uLEU9Zy5lYXNpbmcsaj1FPT09dm9pZCAwPyJlYXNlIjpFLFQ9Zy5zdHlsZSxQPWcucHJvcGVydGllcyxOPWcub25BbmltYXRpb25FbmQsUj1fPjA/c1tfLTFdOmcsST1QfHxPYmplY3Qua2V5cyhUKTtpZih0eXBlb2Ygaj09ImZ1bmN0aW9uInx8aj09PSJzcHJpbmciKXJldHVybltdLmNvbmNhdChrMShiKSxbby5ydW5KU0FuaW1hdGlvbi5iaW5kKG8se2Zyb206Ui5zdHlsZSx0bzpULGR1cmF0aW9uOk8sZWFzaW5nOmp9KSxPXSk7dmFyIFY9TEwoSSxPLGopLEI9WnIoWnIoWnIoe30sUi5zdHlsZSksVCkse30se3RyYW5zaXRpb246Vn0pO3JldHVybltdLmNvbmNhdChrMShiKSxbQixPLE5dKS5maWx0ZXIoUnNlKX07cmV0dXJuIHRoaXMubWFuYWdlci5zdGFydChbZl0uY29uY2F0KGsxKHMucmVkdWNlKHgsW3AsTWF0aC5tYXgoeSx1KV0pKSxbaS5vbkFuaW1hdGlvbkVuZF0pKX19LHtrZXk6InJ1bkFuaW1hdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaSl7dGhpcy5tYW5hZ2VyfHwodGhpcy5tYW5hZ2VyPUNzZSgpKTt2YXIgbz1pLmJlZ2luLHM9aS5kdXJhdGlvbix1PWkuYXR0cmlidXRlTmFtZSxmPWkudG8sZD1pLmVhc2luZyxwPWkub25BbmltYXRpb25TdGFydCxtPWkub25BbmltYXRpb25FbmQseT1pLnN0ZXBzLHg9aS5jaGlsZHJlbix3PXRoaXMubWFuYWdlcjtpZih0aGlzLnVuU3Vic2NyaWJlPXcuc3Vic2NyaWJlKHRoaXMuaGFuZGxlU3R5bGVDaGFuZ2UpLHR5cGVvZiBkPT0iZnVuY3Rpb24ifHx0eXBlb2YgeD09ImZ1bmN0aW9uInx8ZD09PSJzcHJpbmciKXt0aGlzLnJ1bkpTQW5pbWF0aW9uKGkpO3JldHVybn1pZih5Lmxlbmd0aD4xKXt0aGlzLnJ1blN0ZXBBbmltYXRpb24oaSk7cmV0dXJufXZhciBiPXU/dWYoe30sdSxmKTpmLGc9TEwoT2JqZWN0LmtleXMoYikscyxkKTt3LnN0YXJ0KFtwLG8sWnIoWnIoe30sYikse30se3RyYW5zaXRpb246Z30pLHMsbV0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBpPXRoaXMucHJvcHMsbz1pLmNoaWxkcmVuO2kuYmVnaW47dmFyIHM9aS5kdXJhdGlvbjtpLmF0dHJpYnV0ZU5hbWUsaS5lYXNpbmc7dmFyIHU9aS5pc0FjdGl2ZTtpLnN0ZXBzLGkuZnJvbSxpLnRvLGkuY2FuQmVnaW4saS5vbkFuaW1hdGlvbkVuZCxpLnNob3VsZFJlQW5pbWF0ZSxpLm9uQW5pbWF0aW9uUmVTdGFydDt2YXIgZj1ybGUoaSxubGUpLGQ9Qy5DaGlsZHJlbi5jb3VudChvKSxwPXRoaXMuc3RhdGUuc3R5bGU7aWYodHlwZW9mIG89PSJmdW5jdGlvbiIpcmV0dXJuIG8ocCk7aWYoIXV8fGQ9PT0wfHxzPD0wKXJldHVybiBvO3ZhciBtPWZ1bmN0aW9uKHgpe3ZhciB3PXgucHJvcHMsYj13LnN0eWxlLGc9Yj09PXZvaWQgMD97fTpiLF89dy5jbGFzc05hbWUsTz1DLmNsb25lRWxlbWVudCh4LFpyKFpyKHt9LGYpLHt9LHtzdHlsZTpacihacih7fSxnKSxwKSxjbGFzc05hbWU6X30pKTtyZXR1cm4gT307cmV0dXJuIGQ9PT0xP20oQy5DaGlsZHJlbi5vbmx5KG8pKTpGLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxDLkNoaWxkcmVuLm1hcChvLGZ1bmN0aW9uKHkpe3JldHVybiBtKHkpfSkpfX1dKSxufSkoQy5QdXJlQ29tcG9uZW50KTtsaS5kaXNwbGF5TmFtZT0iQW5pbWF0ZSI7bGkuZGVmYXVsdFByb3BzPXtiZWdpbjowLGR1cmF0aW9uOjFlMyxmcm9tOiIiLHRvOiIiLGF0dHJpYnV0ZU5hbWU6IiIsZWFzaW5nOiJlYXNlIixpc0FjdGl2ZTohMCxjYW5CZWdpbjohMCxzdGVwczpbXSxvbkFuaW1hdGlvbkVuZDpmdW5jdGlvbigpe30sb25BbmltYXRpb25TdGFydDpmdW5jdGlvbigpe319O2xpLnByb3BUeXBlcz17ZnJvbTp5dC5vbmVPZlR5cGUoW3l0Lm9iamVjdCx5dC5zdHJpbmddKSx0bzp5dC5vbmVPZlR5cGUoW3l0Lm9iamVjdCx5dC5zdHJpbmddKSxhdHRyaWJ1dGVOYW1lOnl0LnN0cmluZyxkdXJhdGlvbjp5dC5udW1iZXIsYmVnaW46eXQubnVtYmVyLGVhc2luZzp5dC5vbmVPZlR5cGUoW3l0LnN0cmluZyx5dC5mdW5jXSksc3RlcHM6eXQuYXJyYXlPZih5dC5zaGFwZSh7ZHVyYXRpb246eXQubnVtYmVyLmlzUmVxdWlyZWQsc3R5bGU6eXQub2JqZWN0LmlzUmVxdWlyZWQsZWFzaW5nOnl0Lm9uZU9mVHlwZShbeXQub25lT2YoWyJlYXNlIiwiZWFzZS1pbiIsImVhc2Utb3V0IiwiZWFzZS1pbi1vdXQiLCJsaW5lYXIiXSkseXQuZnVuY10pLHByb3BlcnRpZXM6eXQuYXJyYXlPZigic3RyaW5nIiksb25BbmltYXRpb25FbmQ6eXQuZnVuY30pKSxjaGlsZHJlbjp5dC5vbmVPZlR5cGUoW3l0Lm5vZGUseXQuZnVuY10pLGlzQWN0aXZlOnl0LmJvb2wsY2FuQmVnaW46eXQuYm9vbCxvbkFuaW1hdGlvbkVuZDp5dC5mdW5jLHNob3VsZFJlQW5pbWF0ZTp5dC5ib29sLG9uQW5pbWF0aW9uU3RhcnQ6eXQuZnVuYyxvbkFuaW1hdGlvblJlU3RhcnQ6eXQuZnVuY307ZnVuY3Rpb24gdGQoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gdGQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHRkKGUpfWZ1bmN0aW9uIFZtKCl7cmV0dXJuIFZtPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sVm0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHlsZShlLHQpe3JldHVybiB4bGUoZSl8fGJsZShlLHQpfHxnbGUoZSx0KXx8dmxlKCl9ZnVuY3Rpb24gdmxlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIGdsZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gVUwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIFVMKGUsdCl9fWZ1bmN0aW9uIFVMKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gYmxlKGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihuIT1udWxsKXt2YXIgcixpLG8scyx1PVtdLGY9ITAsZD0hMTt0cnl7aWYobz0obj1uLmNhbGwoZSkpLm5leHQsdCE9PTApZm9yKDshKGY9KHI9by5jYWxsKG4pKS5kb25lKSYmKHUucHVzaChyLnZhbHVlKSx1Lmxlbmd0aCE9PXQpO2Y9ITApO31jYXRjaChwKXtkPSEwLGk9cH1maW5hbGx5e3RyeXtpZighZiYmbi5yZXR1cm4hPW51bGwmJihzPW4ucmV0dXJuKCksT2JqZWN0KHMpIT09cykpcmV0dXJufWZpbmFsbHl7aWYoZCl0aHJvdyBpfX1yZXR1cm4gdX19ZnVuY3Rpb24geGxlKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9ZnVuY3Rpb24gekwoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBGTChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj96TChPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7d2xlKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnpMKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiB3bGUoZSx0LG4pe3JldHVybiB0PVNsZSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFNsZShlKXt2YXIgdD1BbGUoZSwic3RyaW5nIik7cmV0dXJuIHRkKHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gQWxlKGUsdCl7aWYodGQoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYodGQocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX12YXIgSEw9ZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgcz1NYXRoLm1pbihNYXRoLmFicyhyKS8yLE1hdGguYWJzKGkpLzIpLHU9aT49MD8xOi0xLGY9cj49MD8xOi0xLGQ9aT49MCYmcj49MHx8aTwwJiZyPDA/MTowLHA7aWYocz4wJiZvIGluc3RhbmNlb2YgQXJyYXkpe2Zvcih2YXIgbT1bMCwwLDAsMF0seT0wLHg9NDt5PHg7eSsrKW1beV09b1t5XT5zP3M6b1t5XTtwPSJNIi5jb25jYXQodCwiLCIpLmNvbmNhdChuK3UqbVswXSksbVswXT4wJiYocCs9IkEgIi5jb25jYXQobVswXSwiLCIpLmNvbmNhdChtWzBdLCIsMCwwLCIpLmNvbmNhdChkLCIsIikuY29uY2F0KHQrZiptWzBdLCIsIikuY29uY2F0KG4pKSxwKz0iTCAiLmNvbmNhdCh0K3ItZiptWzFdLCIsIikuY29uY2F0KG4pLG1bMV0+MCYmKHArPSJBICIuY29uY2F0KG1bMV0sIiwiKS5jb25jYXQobVsxXSwiLDAsMCwiKS5jb25jYXQoZCxgLAogICAgICAgIGApLmNvbmNhdCh0K3IsIiwiKS5jb25jYXQobit1Km1bMV0pKSxwKz0iTCAiLmNvbmNhdCh0K3IsIiwiKS5jb25jYXQobitpLXUqbVsyXSksbVsyXT4wJiYocCs9IkEgIi5jb25jYXQobVsyXSwiLCIpLmNvbmNhdChtWzJdLCIsMCwwLCIpLmNvbmNhdChkLGAsCiAgICAgICAgYCkuY29uY2F0KHQrci1mKm1bMl0sIiwiKS5jb25jYXQobitpKSkscCs9IkwgIi5jb25jYXQodCtmKm1bM10sIiwiKS5jb25jYXQobitpKSxtWzNdPjAmJihwKz0iQSAiLmNvbmNhdChtWzNdLCIsIikuY29uY2F0KG1bM10sIiwwLDAsIikuY29uY2F0KGQsYCwKICAgICAgICBgKS5jb25jYXQodCwiLCIpLmNvbmNhdChuK2ktdSptWzNdKSkscCs9IloifWVsc2UgaWYocz4wJiZvPT09K28mJm8+MCl7dmFyIHc9TWF0aC5taW4ocyxvKTtwPSJNICIuY29uY2F0KHQsIiwiKS5jb25jYXQobit1KncsYAogICAgICAgICAgICBBIGApLmNvbmNhdCh3LCIsIikuY29uY2F0KHcsIiwwLDAsIikuY29uY2F0KGQsIiwiKS5jb25jYXQodCtmKncsIiwiKS5jb25jYXQobixgCiAgICAgICAgICAgIEwgYCkuY29uY2F0KHQrci1mKncsIiwiKS5jb25jYXQobixgCiAgICAgICAgICAgIEEgYCkuY29uY2F0KHcsIiwiKS5jb25jYXQodywiLDAsMCwiKS5jb25jYXQoZCwiLCIpLmNvbmNhdCh0K3IsIiwiKS5jb25jYXQobit1KncsYAogICAgICAgICAgICBMIGApLmNvbmNhdCh0K3IsIiwiKS5jb25jYXQobitpLXUqdyxgCiAgICAgICAgICAgIEEgYCkuY29uY2F0KHcsIiwiKS5jb25jYXQodywiLDAsMCwiKS5jb25jYXQoZCwiLCIpLmNvbmNhdCh0K3ItZip3LCIsIikuY29uY2F0KG4raSxgCiAgICAgICAgICAgIEwgYCkuY29uY2F0KHQrZip3LCIsIikuY29uY2F0KG4raSxgCiAgICAgICAgICAgIEEgYCkuY29uY2F0KHcsIiwiKS5jb25jYXQodywiLDAsMCwiKS5jb25jYXQoZCwiLCIpLmNvbmNhdCh0LCIsIikuY29uY2F0KG4raS11KncsIiBaIil9ZWxzZSBwPSJNICIuY29uY2F0KHQsIiwiKS5jb25jYXQobiwiIGggIikuY29uY2F0KHIsIiB2ICIpLmNvbmNhdChpLCIgaCAiKS5jb25jYXQoLXIsIiBaIik7cmV0dXJuIHB9LF9sZT1mdW5jdGlvbih0LG4pe2lmKCF0fHwhbilyZXR1cm4hMTt2YXIgcj10LngsaT10Lnksbz1uLngscz1uLnksdT1uLndpZHRoLGY9bi5oZWlnaHQ7aWYoTWF0aC5hYnModSk+MCYmTWF0aC5hYnMoZik+MCl7dmFyIGQ9TWF0aC5taW4obyxvK3UpLHA9TWF0aC5tYXgobyxvK3UpLG09TWF0aC5taW4ocyxzK2YpLHk9TWF0aC5tYXgocyxzK2YpO3JldHVybiByPj1kJiZyPD1wJiZpPj1tJiZpPD15fXJldHVybiExfSxPbGU9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MCxyYWRpdXM6MCxpc0FuaW1hdGlvbkFjdGl2ZTohMSxpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZTohMSxhbmltYXRpb25CZWdpbjowLGFuaW1hdGlvbkR1cmF0aW9uOjE1MDAsYW5pbWF0aW9uRWFzaW5nOiJlYXNlIn0sU1Q9ZnVuY3Rpb24odCl7dmFyIG49RkwoRkwoe30sT2xlKSx0KSxyPUMudXNlUmVmKCksaT1DLnVzZVN0YXRlKC0xKSxvPXlsZShpLDIpLHM9b1swXSx1PW9bMV07Qy51c2VFZmZlY3QoZnVuY3Rpb24oKXtpZihyLmN1cnJlbnQmJnIuY3VycmVudC5nZXRUb3RhbExlbmd0aCl0cnl7dmFyIGo9ci5jdXJyZW50LmdldFRvdGFsTGVuZ3RoKCk7aiYmdShqKX1jYXRjaHt9fSxbXSk7dmFyIGY9bi54LGQ9bi55LHA9bi53aWR0aCxtPW4uaGVpZ2h0LHk9bi5yYWRpdXMseD1uLmNsYXNzTmFtZSx3PW4uYW5pbWF0aW9uRWFzaW5nLGI9bi5hbmltYXRpb25EdXJhdGlvbixnPW4uYW5pbWF0aW9uQmVnaW4sXz1uLmlzQW5pbWF0aW9uQWN0aXZlLE89bi5pc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZTtpZihmIT09K2Z8fGQhPT0rZHx8cCE9PStwfHxtIT09K218fHA9PT0wfHxtPT09MClyZXR1cm4gbnVsbDt2YXIgRT1XZSgicmVjaGFydHMtcmVjdGFuZ2xlIix4KTtyZXR1cm4gTz9GLmNyZWF0ZUVsZW1lbnQobGkse2NhbkJlZ2luOnM+MCxmcm9tOnt3aWR0aDpwLGhlaWdodDptLHg6Zix5OmR9LHRvOnt3aWR0aDpwLGhlaWdodDptLHg6Zix5OmR9LGR1cmF0aW9uOmIsYW5pbWF0aW9uRWFzaW5nOncsaXNBY3RpdmU6T30sZnVuY3Rpb24oail7dmFyIFQ9ai53aWR0aCxQPWouaGVpZ2h0LE49ai54LFI9ai55O3JldHVybiBGLmNyZWF0ZUVsZW1lbnQobGkse2NhbkJlZ2luOnM+MCxmcm9tOiIwcHggIi5jb25jYXQocz09PS0xPzE6cywicHgiKSx0bzoiIi5jb25jYXQocywicHggMHB4IiksYXR0cmlidXRlTmFtZToic3Ryb2tlRGFzaGFycmF5IixiZWdpbjpnLGR1cmF0aW9uOmIsaXNBY3RpdmU6XyxlYXNpbmc6d30sRi5jcmVhdGVFbGVtZW50KCJwYXRoIixWbSh7fSwkZShuLCEwKSx7Y2xhc3NOYW1lOkUsZDpITChOLFIsVCxQLHkpLHJlZjpyfSkpKX0pOkYuY3JlYXRlRWxlbWVudCgicGF0aCIsVm0oe30sJGUobiwhMCkse2NsYXNzTmFtZTpFLGQ6SEwoZixkLHAsbSx5KX0pKX0sVGxlPVsicG9pbnRzIiwiY2xhc3NOYW1lIiwiYmFzZUxpbmVQb2ludHMiLCJjb25uZWN0TnVsbHMiXTtmdW5jdGlvbiBSbCgpe3JldHVybiBSbD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LFJsLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBFbGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPUNsZShlLHQpLHIsaTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihpPTA7aTxvLmxlbmd0aDtpKyspcj1vW2ldLCEodC5pbmRleE9mKHIpPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscikmJihuW3JdPWVbcl0pfXJldHVybiBufWZ1bmN0aW9uIENsZShlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpe2lmKHQuaW5kZXhPZihyKT49MCljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59ZnVuY3Rpb24gR0woZSl7cmV0dXJuIFJsZShlKXx8TWxlKGUpfHxQbGUoZSl8fGpsZSgpfWZ1bmN0aW9uIGpsZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gUGxlKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBxQShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gcUEoZSx0KX19ZnVuY3Rpb24gTWxlKGUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBSbGUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gcUEoZSl9ZnVuY3Rpb24gcUEoZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgS0w9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQueD09PSt0LngmJnQueT09PSt0Lnl9LE5sZT1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTpbXSxuPVtbXV07cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihyKXtLTChyKT9uW24ubGVuZ3RoLTFdLnB1c2gocik6bltuLmxlbmd0aC0xXS5sZW5ndGg+MCYmbi5wdXNoKFtdKX0pLEtMKHRbMF0pJiZuW24ubGVuZ3RoLTFdLnB1c2godFswXSksbltuLmxlbmd0aC0xXS5sZW5ndGg8PTAmJihuPW4uc2xpY2UoMCwtMSkpLG59LGdmPWZ1bmN0aW9uKHQsbil7dmFyIHI9TmxlKHQpO24mJihyPVtyLnJlZHVjZShmdW5jdGlvbihvLHMpe3JldHVybltdLmNvbmNhdChHTChvKSxHTChzKSl9LFtdKV0pO3ZhciBpPXIubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBvLnJlZHVjZShmdW5jdGlvbihzLHUsZil7cmV0dXJuIiIuY29uY2F0KHMpLmNvbmNhdChmPT09MD8iTSI6IkwiKS5jb25jYXQodS54LCIsIikuY29uY2F0KHUueSl9LCIiKX0pLmpvaW4oIiIpO3JldHVybiByLmxlbmd0aD09PTE/IiIuY29uY2F0KGksIloiKTppfSxrbGU9ZnVuY3Rpb24odCxuLHIpe3ZhciBpPWdmKHQscik7cmV0dXJuIiIuY29uY2F0KGkuc2xpY2UoLTEpPT09IloiP2kuc2xpY2UoMCwtMSk6aSwiTCIpLmNvbmNhdChnZihuLnJldmVyc2UoKSxyKS5zbGljZSgxKSl9LERsZT1mdW5jdGlvbih0KXt2YXIgbj10LnBvaW50cyxyPXQuY2xhc3NOYW1lLGk9dC5iYXNlTGluZVBvaW50cyxvPXQuY29ubmVjdE51bGxzLHM9RWxlKHQsVGxlKTtpZighbnx8IW4ubGVuZ3RoKXJldHVybiBudWxsO3ZhciB1PVdlKCJyZWNoYXJ0cy1wb2x5Z29uIixyKTtpZihpJiZpLmxlbmd0aCl7dmFyIGY9cy5zdHJva2UmJnMuc3Ryb2tlIT09Im5vbmUiLGQ9a2xlKG4saSxvKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJnIix7Y2xhc3NOYW1lOnV9LEYuY3JlYXRlRWxlbWVudCgicGF0aCIsUmwoe30sJGUocywhMCkse2ZpbGw6ZC5zbGljZSgtMSk9PT0iWiI/cy5maWxsOiJub25lIixzdHJva2U6Im5vbmUiLGR9KSksZj9GLmNyZWF0ZUVsZW1lbnQoInBhdGgiLFJsKHt9LCRlKHMsITApLHtmaWxsOiJub25lIixkOmdmKG4sbyl9KSk6bnVsbCxmP0YuY3JlYXRlRWxlbWVudCgicGF0aCIsUmwoe30sJGUocywhMCkse2ZpbGw6Im5vbmUiLGQ6Z2YoaSxvKX0pKTpudWxsKX12YXIgcD1nZihuLG8pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoInBhdGgiLFJsKHt9LCRlKHMsITApLHtmaWxsOnAuc2xpY2UoLTEpPT09IloiP3MuZmlsbDoibm9uZSIsY2xhc3NOYW1lOnUsZDpwfSkpfTtmdW5jdGlvbiBVQSgpe3JldHVybiBVQT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LFVBLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgTmQ9ZnVuY3Rpb24odCl7dmFyIG49dC5jeCxyPXQuY3ksaT10LnIsbz10LmNsYXNzTmFtZSxzPVdlKCJyZWNoYXJ0cy1kb3QiLG8pO3JldHVybiBuPT09K24mJnI9PT0rciYmaT09PStpP0MuY3JlYXRlRWxlbWVudCgiY2lyY2xlIixVQSh7fSwkZSh0LCExKSxzbSh0KSx7Y2xhc3NOYW1lOnMsY3g6bixjeTpyLHI6aX0pKTpudWxsfTtmdW5jdGlvbiBuZChlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBuZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbmQoZSl9dmFyIExsZT1bIngiLCJ5IiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwiY2xhc3NOYW1lIl07ZnVuY3Rpb24gekEoKXtyZXR1cm4gekE9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSx6QS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gV0woZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBJbGUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/V0woT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpeyRsZShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpXTChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gJGxlKGUsdCxuKXtyZXR1cm4gdD1CbGUodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBCbGUoZSl7dmFyIHQ9VmxlKGUsInN0cmluZyIpO3JldHVybiBuZCh0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIFZsZShlLHQpe2lmKG5kKGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKG5kKHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybih0PT09InN0cmluZyI/U3RyaW5nOk51bWJlcikoZSl9ZnVuY3Rpb24gcWxlKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1VbGUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBVbGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufXZhciB6bGU9ZnVuY3Rpb24odCxuLHIsaSxvLHMpe3JldHVybiJNIi5jb25jYXQodCwiLCIpLmNvbmNhdChvLCJ2IikuY29uY2F0KGksIk0iKS5jb25jYXQocywiLCIpLmNvbmNhdChuLCJoIikuY29uY2F0KHIpfSxGbGU9ZnVuY3Rpb24odCl7dmFyIG49dC54LHI9bj09PXZvaWQgMD8wOm4saT10Lnksbz1pPT09dm9pZCAwPzA6aSxzPXQudG9wLHU9cz09PXZvaWQgMD8wOnMsZj10LmxlZnQsZD1mPT09dm9pZCAwPzA6ZixwPXQud2lkdGgsbT1wPT09dm9pZCAwPzA6cCx5PXQuaGVpZ2h0LHg9eT09PXZvaWQgMD8wOnksdz10LmNsYXNzTmFtZSxiPXFsZSh0LExsZSksZz1JbGUoe3g6cix5Om8sdG9wOnUsbGVmdDpkLHdpZHRoOm0saGVpZ2h0Onh9LGIpO3JldHVybiF2ZShyKXx8IXZlKG8pfHwhdmUobSl8fCF2ZSh4KXx8IXZlKHUpfHwhdmUoZCk/bnVsbDpGLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHpBKHt9LCRlKGcsITApLHtjbGFzc05hbWU6V2UoInJlY2hhcnRzLWNyb3NzIix3KSxkOnpsZShyLG8sbSx4LHUsZCl9KSl9LEQxLFlMO2Z1bmN0aW9uIEhsZSgpe2lmKFlMKXJldHVybiBEMTtZTD0xO3ZhciBlPWl2KCksdD1VNSgpLG49RGkoKTtmdW5jdGlvbiByKGksbyl7cmV0dXJuIGkmJmkubGVuZ3RoP2UoaSxuKG8sMiksdCk6dm9pZCAwfXJldHVybiBEMT1yLEQxfXZhciBHbGU9SGxlKCk7Y29uc3QgS2xlPU90KEdsZSk7dmFyIEwxLFhMO2Z1bmN0aW9uIFdsZSgpe2lmKFhMKXJldHVybiBMMTtYTD0xO3ZhciBlPWl2KCksdD1EaSgpLG49ejUoKTtmdW5jdGlvbiByKGksbyl7cmV0dXJuIGkmJmkubGVuZ3RoP2UoaSx0KG8sMiksbik6dm9pZCAwfXJldHVybiBMMT1yLEwxfXZhciBZbGU9V2xlKCk7Y29uc3QgWGxlPU90KFlsZSk7dmFyIFpsZT1bImN4IiwiY3kiLCJhbmdsZSIsInRpY2tzIiwiYXhpc0xpbmUiXSxRbGU9WyJ0aWNrcyIsInRpY2siLCJhbmdsZSIsInRpY2tGb3JtYXR0ZXIiLCJzdHJva2UiXTtmdW5jdGlvbiBsdShlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBsdT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbHUoZSl9ZnVuY3Rpb24gYmYoKXtyZXR1cm4gYmY9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxiZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWkwoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBYbyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9aTChPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7bHYoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6WkwoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIFFMKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1KbGUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBKbGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIGV1ZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEpMKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxDcShyLmtleSkscil9fWZ1bmN0aW9uIHR1ZShlLHQsbil7cmV0dXJuIHQmJkpMKGUucHJvdG90eXBlLHQpLG4mJkpMKGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBudWUoZSx0LG4pe3JldHVybiB0PXFtKHQpLHJ1ZShlLEVxKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxxbShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBydWUoZSx0KXtpZih0JiYobHUodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gaXVlKGUpfWZ1bmN0aW9uIGl1ZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gRXEoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4oRXE9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIHFtKGUpe3JldHVybiBxbT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0scW0oZSl9ZnVuY3Rpb24gYXVlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJkZBKGUsdCl9ZnVuY3Rpb24gRkEoZSx0KXtyZXR1cm4gRkE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxGQShlLHQpfWZ1bmN0aW9uIGx2KGUsdCxuKXtyZXR1cm4gdD1DcSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIENxKGUpe3ZhciB0PW91ZShlLCJzdHJpbmciKTtyZXR1cm4gbHUodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBvdWUoZSx0KXtpZihsdShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihsdShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfXZhciB1dj0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBldWUodGhpcyx0KSxudWUodGhpcyx0LGFyZ3VtZW50cyl9cmV0dXJuIGF1ZSh0LGUpLHR1ZSh0LFt7a2V5OiJnZXRUaWNrVmFsdWVDb29yZCIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9ci5jb29yZGluYXRlLG89dGhpcy5wcm9wcyxzPW8uYW5nbGUsdT1vLmN4LGY9by5jeTtyZXR1cm4gTHQodSxmLGkscyl9fSx7a2V5OiJnZXRUaWNrVGV4dEFuY2hvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLm9yaWVudGF0aW9uLGk7c3dpdGNoKHIpe2Nhc2UibGVmdCI6aT0iZW5kIjticmVhaztjYXNlInJpZ2h0IjppPSJzdGFydCI7YnJlYWs7ZGVmYXVsdDppPSJtaWRkbGUiO2JyZWFrfXJldHVybiBpfX0se2tleToiZ2V0Vmlld0JveCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLGk9ci5jeCxvPXIuY3kscz1yLmFuZ2xlLHU9ci50aWNrcyxmPUtsZSh1LGZ1bmN0aW9uKHApe3JldHVybiBwLmNvb3JkaW5hdGV8fDB9KSxkPVhsZSh1LGZ1bmN0aW9uKHApe3JldHVybiBwLmNvb3JkaW5hdGV8fDB9KTtyZXR1cm57Y3g6aSxjeTpvLHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTpzLGlubmVyUmFkaXVzOmQuY29vcmRpbmF0ZXx8MCxvdXRlclJhZGl1czpmLmNvb3JkaW5hdGV8fDB9fX0se2tleToicmVuZGVyQXhpc0xpbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIuY3gsbz1yLmN5LHM9ci5hbmdsZSx1PXIudGlja3MsZj1yLmF4aXNMaW5lLGQ9UUwocixabGUpLHA9dS5yZWR1Y2UoZnVuY3Rpb24odyxiKXtyZXR1cm5bTWF0aC5taW4od1swXSxiLmNvb3JkaW5hdGUpLE1hdGgubWF4KHdbMV0sYi5jb29yZGluYXRlKV19LFsxLzAsLTEvMF0pLG09THQoaSxvLHBbMF0scykseT1MdChpLG8scFsxXSxzKSx4PVhvKFhvKFhvKHt9LCRlKGQsITEpKSx7fSx7ZmlsbDoibm9uZSJ9LCRlKGYsITEpKSx7fSx7eDE6bS54LHkxOm0ueSx4Mjp5LngseTI6eS55fSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudCgibGluZSIsYmYoe2NsYXNzTmFtZToicmVjaGFydHMtcG9sYXItcmFkaXVzLWF4aXMtbGluZSJ9LHgpKX19LHtrZXk6InJlbmRlclRpY2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMsaT10aGlzLnByb3BzLG89aS50aWNrcyxzPWkudGljayx1PWkuYW5nbGUsZj1pLnRpY2tGb3JtYXR0ZXIsZD1pLnN0cm9rZSxwPVFMKGksUWxlKSxtPXRoaXMuZ2V0VGlja1RleHRBbmNob3IoKSx5PSRlKHAsITEpLHg9JGUocywhMSksdz1vLm1hcChmdW5jdGlvbihiLGcpe3ZhciBfPXIuZ2V0VGlja1ZhbHVlQ29vcmQoYiksTz1YbyhYbyhYbyhYbyh7dGV4dEFuY2hvcjptLHRyYW5zZm9ybToicm90YXRlKCIuY29uY2F0KDkwLXUsIiwgIikuY29uY2F0KF8ueCwiLCAiKS5jb25jYXQoXy55LCIpIil9LHkpLHt9LHtzdHJva2U6Im5vbmUiLGZpbGw6ZH0seCkse30se2luZGV4Omd9LF8pLHt9LHtwYXlsb2FkOmJ9KTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGF0LGJmKHtjbGFzc05hbWU6V2UoInJlY2hhcnRzLXBvbGFyLXJhZGl1cy1heGlzLXRpY2siLHlxKHMpKSxrZXk6InRpY2stIi5jb25jYXQoYi5jb29yZGluYXRlKX0sYnMoci5wcm9wcyxiLGcpKSx0LnJlbmRlclRpY2tJdGVtKHMsTyxmP2YoYi52YWx1ZSxnKTpiLnZhbHVlKSl9KTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGF0LHtjbGFzc05hbWU6InJlY2hhcnRzLXBvbGFyLXJhZGl1cy1heGlzLXRpY2tzIn0sdyl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIudGlja3Msbz1yLmF4aXNMaW5lLHM9ci50aWNrO3JldHVybiFpfHwhaS5sZW5ndGg/bnVsbDpGLmNyZWF0ZUVsZW1lbnQoYXQse2NsYXNzTmFtZTpXZSgicmVjaGFydHMtcG9sYXItcmFkaXVzLWF4aXMiLHRoaXMucHJvcHMuY2xhc3NOYW1lKX0sbyYmdGhpcy5yZW5kZXJBeGlzTGluZSgpLHMmJnRoaXMucmVuZGVyVGlja3MoKSxPbi5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcyx0aGlzLmdldFZpZXdCb3goKSkpfX1dLFt7a2V5OiJyZW5kZXJUaWNrSXRlbSIsdmFsdWU6ZnVuY3Rpb24ocixpLG8pe3ZhciBzO3JldHVybiBGLmlzVmFsaWRFbGVtZW50KHIpP3M9Ri5jbG9uZUVsZW1lbnQocixpKTpIZShyKT9zPXIoaSk6cz1GLmNyZWF0ZUVsZW1lbnQoeHMsYmYoe30saSx7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1wb2xhci1yYWRpdXMtYXhpcy10aWNrLXZhbHVlIn0pLG8pLHN9fV0pfSkoQy5QdXJlQ29tcG9uZW50KTtsdih1diwiZGlzcGxheU5hbWUiLCJQb2xhclJhZGl1c0F4aXMiKTtsdih1diwiYXhpc1R5cGUiLCJyYWRpdXNBeGlzIik7bHYodXYsImRlZmF1bHRQcm9wcyIse3R5cGU6Im51bWJlciIscmFkaXVzQXhpc0lkOjAsY3g6MCxjeTowLGFuZ2xlOjAsb3JpZW50YXRpb246InJpZ2h0IixzdHJva2U6IiNjY2MiLGF4aXNMaW5lOiEwLHRpY2s6ITAsdGlja0NvdW50OjUsYWxsb3dEYXRhT3ZlcmZsb3c6ITEsc2NhbGU6ImF1dG8iLGFsbG93RHVwbGljYXRlZENhdGVnb3J5OiEwfSk7ZnVuY3Rpb24gdXUoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gdXU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHV1KGUpfWZ1bmN0aW9uIHJzKCl7cmV0dXJuIHJzPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0scnMuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGVJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gWm8oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/ZUkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2N2KGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmVJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBzdWUoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB0SShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsUHEoci5rZXkpLHIpfX1mdW5jdGlvbiBsdWUoZSx0LG4pe3JldHVybiB0JiZ0SShlLnByb3RvdHlwZSx0KSxuJiZ0SShlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gdXVlKGUsdCxuKXtyZXR1cm4gdD1VbSh0KSxjdWUoZSxqcSgpP1JlZmxlY3QuY29uc3RydWN0KHQsbnx8W10sVW0oZSkuY29uc3RydWN0b3IpOnQuYXBwbHkoZSxuKSl9ZnVuY3Rpb24gY3VlKGUsdCl7aWYodCYmKHV1KHQpPT09Im9iamVjdCJ8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKSlyZXR1cm4gdDtpZih0IT09dm9pZCAwKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1ZShlKX1mdW5jdGlvbiBmdWUoZSl7aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIGpxKCl7dHJ5e3ZhciBlPSFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKX1jYXRjaHt9cmV0dXJuKGpxPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSkoKX1mdW5jdGlvbiBVbShlKXtyZXR1cm4gVW09T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obil7cmV0dXJuIG4uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9LFVtKGUpfWZ1bmN0aW9uIGR1ZShlLHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iJiZ0IT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZIQShlLHQpfWZ1bmN0aW9uIEhBKGUsdCl7cmV0dXJuIEhBPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHIsaSl7cmV0dXJuIHIuX19wcm90b19fPWkscn0sSEEoZSx0KX1mdW5jdGlvbiBjdihlLHQsbil7cmV0dXJuIHQ9UHEodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBQcShlKXt2YXIgdD1odWUoZSwic3RyaW5nIik7cmV0dXJuIHV1KHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gaHVlKGUsdCl7aWYodXUoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYodXUocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX12YXIgcHVlPU1hdGguUEkvMTgwLG5JPTFlLTUsZnY9KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gc3VlKHRoaXMsdCksdXVlKHRoaXMsdCxhcmd1bWVudHMpfXJldHVybiBkdWUodCxlKSxsdWUodCxbe2tleToiZ2V0VGlja0xpbmVDb29yZCIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9dGhpcy5wcm9wcyxvPWkuY3gscz1pLmN5LHU9aS5yYWRpdXMsZj1pLm9yaWVudGF0aW9uLGQ9aS50aWNrU2l6ZSxwPWR8fDgsbT1MdChvLHMsdSxyLmNvb3JkaW5hdGUpLHk9THQobyxzLHUrKGY9PT0iaW5uZXIiPy0xOjEpKnAsci5jb29yZGluYXRlKTtyZXR1cm57eDE6bS54LHkxOm0ueSx4Mjp5LngseTI6eS55fX19LHtrZXk6ImdldFRpY2tUZXh0QW5jaG9yIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgaT10aGlzLnByb3BzLm9yaWVudGF0aW9uLG89TWF0aC5jb3MoLXIuY29vcmRpbmF0ZSpwdWUpLHM7cmV0dXJuIG8+bkk/cz1pPT09Im91dGVyIj8ic3RhcnQiOiJlbmQiOm88LW5JP3M9aT09PSJvdXRlciI/ImVuZCI6InN0YXJ0IjpzPSJtaWRkbGUiLHN9fSx7a2V5OiJyZW5kZXJBeGlzTGluZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLGk9ci5jeCxvPXIuY3kscz1yLnJhZGl1cyx1PXIuYXhpc0xpbmUsZj1yLmF4aXNMaW5lVHlwZSxkPVpvKFpvKHt9LCRlKHRoaXMucHJvcHMsITEpKSx7fSx7ZmlsbDoibm9uZSJ9LCRlKHUsITEpKTtpZihmPT09ImNpcmNsZSIpcmV0dXJuIEYuY3JlYXRlRWxlbWVudChOZCxycyh7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1wb2xhci1hbmdsZS1heGlzLWxpbmUifSxkLHtjeDppLGN5Om8scjpzfSkpO3ZhciBwPXRoaXMucHJvcHMudGlja3MsbT1wLm1hcChmdW5jdGlvbih5KXtyZXR1cm4gTHQoaSxvLHMseS5jb29yZGluYXRlKX0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoRGxlLHJzKHtjbGFzc05hbWU6InJlY2hhcnRzLXBvbGFyLWFuZ2xlLWF4aXMtbGluZSJ9LGQse3BvaW50czptfSkpfX0se2tleToicmVuZGVyVGlja3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxpPXRoaXMucHJvcHMsbz1pLnRpY2tzLHM9aS50aWNrLHU9aS50aWNrTGluZSxmPWkudGlja0Zvcm1hdHRlcixkPWkuc3Ryb2tlLHA9JGUodGhpcy5wcm9wcywhMSksbT0kZShzLCExKSx5PVpvKFpvKHt9LHApLHt9LHtmaWxsOiJub25lIn0sJGUodSwhMSkpLHg9by5tYXAoZnVuY3Rpb24odyxiKXt2YXIgZz1yLmdldFRpY2tMaW5lQ29vcmQodyksXz1yLmdldFRpY2tUZXh0QW5jaG9yKHcpLE89Wm8oWm8oWm8oe3RleHRBbmNob3I6X30scCkse30se3N0cm9rZToibm9uZSIsZmlsbDpkfSxtKSx7fSx7aW5kZXg6YixwYXlsb2FkOncseDpnLngyLHk6Zy55Mn0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQscnMoe2NsYXNzTmFtZTpXZSgicmVjaGFydHMtcG9sYXItYW5nbGUtYXhpcy10aWNrIix5cShzKSksa2V5OiJ0aWNrLSIuY29uY2F0KHcuY29vcmRpbmF0ZSl9LGJzKHIucHJvcHMsdyxiKSksdSYmRi5jcmVhdGVFbGVtZW50KCJsaW5lIixycyh7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1wb2xhci1hbmdsZS1heGlzLXRpY2stbGluZSJ9LHksZykpLHMmJnQucmVuZGVyVGlja0l0ZW0ocyxPLGY/Zih3LnZhbHVlLGIpOncudmFsdWUpKX0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQse2NsYXNzTmFtZToicmVjaGFydHMtcG9sYXItYW5nbGUtYXhpcy10aWNrcyJ9LHgpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMucHJvcHMsaT1yLnRpY2tzLG89ci5yYWRpdXMscz1yLmF4aXNMaW5lO3JldHVybiBvPD0wfHwhaXx8IWkubGVuZ3RoP251bGw6Ri5jcmVhdGVFbGVtZW50KGF0LHtjbGFzc05hbWU6V2UoInJlY2hhcnRzLXBvbGFyLWFuZ2xlLWF4aXMiLHRoaXMucHJvcHMuY2xhc3NOYW1lKX0scyYmdGhpcy5yZW5kZXJBeGlzTGluZSgpLHRoaXMucmVuZGVyVGlja3MoKSl9fV0sW3trZXk6InJlbmRlclRpY2tJdGVtIix2YWx1ZTpmdW5jdGlvbihyLGksbyl7dmFyIHM7cmV0dXJuIEYuaXNWYWxpZEVsZW1lbnQocik/cz1GLmNsb25lRWxlbWVudChyLGkpOkhlKHIpP3M9cihpKTpzPUYuY3JlYXRlRWxlbWVudCh4cyxycyh7fSxpLHtjbGFzc05hbWU6InJlY2hhcnRzLXBvbGFyLWFuZ2xlLWF4aXMtdGljay12YWx1ZSJ9KSxvKSxzfX1dKX0pKEMuUHVyZUNvbXBvbmVudCk7Y3YoZnYsImRpc3BsYXlOYW1lIiwiUG9sYXJBbmdsZUF4aXMiKTtjdihmdiwiYXhpc1R5cGUiLCJhbmdsZUF4aXMiKTtjdihmdiwiZGVmYXVsdFByb3BzIix7dHlwZToiY2F0ZWdvcnkiLGFuZ2xlQXhpc0lkOjAsc2NhbGU6ImF1dG8iLGN4OjAsY3k6MCxvcmllbnRhdGlvbjoib3V0ZXIiLGF4aXNMaW5lOiEwLHRpY2tMaW5lOiEwLHRpY2tTaXplOjgsdGljazohMCxoaWRlOiExLGFsbG93RHVwbGljYXRlZENhdGVnb3J5OiEwfSk7dmFyIEkxLHJJO2Z1bmN0aW9uIG11ZSgpe2lmKHJJKXJldHVybiBJMTtyST0xO3ZhciBlPVVWKCksdD1lKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpO3JldHVybiBJMT10LEkxfXZhciAkMSxpSTtmdW5jdGlvbiB5dWUoKXtpZihpSSlyZXR1cm4gJDE7aUk9MTt2YXIgZT12YSgpLHQ9bXVlKCksbj1nYSgpLHI9IltvYmplY3QgT2JqZWN0XSIsaT1GdW5jdGlvbi5wcm90b3R5cGUsbz1PYmplY3QucHJvdG90eXBlLHM9aS50b1N0cmluZyx1PW8uaGFzT3duUHJvcGVydHksZj1zLmNhbGwoT2JqZWN0KTtmdW5jdGlvbiBkKHApe2lmKCFuKHApfHxlKHApIT1yKXJldHVybiExO3ZhciBtPXQocCk7aWYobT09PW51bGwpcmV0dXJuITA7dmFyIHk9dS5jYWxsKG0sImNvbnN0cnVjdG9yIikmJm0uY29uc3RydWN0b3I7cmV0dXJuIHR5cGVvZiB5PT0iZnVuY3Rpb24iJiZ5IGluc3RhbmNlb2YgeSYmcy5jYWxsKHkpPT1mfXJldHVybiAkMT1kLCQxfXZhciB2dWU9eXVlKCk7Y29uc3QgZ3VlPU90KHZ1ZSk7dmFyIEIxLGFJO2Z1bmN0aW9uIGJ1ZSgpe2lmKGFJKXJldHVybiBCMTthST0xO3ZhciBlPXZhKCksdD1nYSgpLG49IltvYmplY3QgQm9vbGVhbl0iO2Z1bmN0aW9uIHIoaSl7cmV0dXJuIGk9PT0hMHx8aT09PSExfHx0KGkpJiZlKGkpPT1ufXJldHVybiBCMT1yLEIxfXZhciB4dWU9YnVlKCk7Y29uc3Qgd3VlPU90KHh1ZSk7ZnVuY3Rpb24gcmQoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gcmQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHJkKGUpfWZ1bmN0aW9uIHptKCl7cmV0dXJuIHptPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sem0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFN1ZShlLHQpe3JldHVybiBUdWUoZSl8fE91ZShlLHQpfHxfdWUoZSx0KXx8QXVlKCl9ZnVuY3Rpb24gQXVlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIF91ZShlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gb0koZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYobj09PSJPYmplY3QiJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT0iTWFwInx8bj09PSJTZXQiKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKG49PT0iQXJndW1lbnRzInx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG9JKGUsdCl9fWZ1bmN0aW9uIG9JKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gT3VlKGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbIkBAaXRlcmF0b3IiXTtpZihuIT1udWxsKXt2YXIgcixpLG8scyx1PVtdLGY9ITAsZD0hMTt0cnl7aWYobz0obj1uLmNhbGwoZSkpLm5leHQsdCE9PTApZm9yKDshKGY9KHI9by5jYWxsKG4pKS5kb25lKSYmKHUucHVzaChyLnZhbHVlKSx1Lmxlbmd0aCE9PXQpO2Y9ITApO31jYXRjaChwKXtkPSEwLGk9cH1maW5hbGx5e3RyeXtpZighZiYmbi5yZXR1cm4hPW51bGwmJihzPW4ucmV0dXJuKCksT2JqZWN0KHMpIT09cykpcmV0dXJufWZpbmFsbHl7aWYoZCl0aHJvdyBpfX1yZXR1cm4gdX19ZnVuY3Rpb24gVHVlKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9ZnVuY3Rpb24gc0koZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBsSShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9zSShPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7RXVlKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnNJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBFdWUoZSx0LG4pe3JldHVybiB0PUN1ZSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIEN1ZShlKXt2YXIgdD1qdWUoZSwic3RyaW5nIik7cmV0dXJuIHJkKHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24ganVlKGUsdCl7aWYocmQoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYocmQocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX12YXIgdUk9ZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgcz1yLWksdTtyZXR1cm4gdT0iTSAiLmNvbmNhdCh0LCIsIikuY29uY2F0KG4pLHUrPSJMICIuY29uY2F0KHQrciwiLCIpLmNvbmNhdChuKSx1Kz0iTCAiLmNvbmNhdCh0K3Itcy8yLCIsIikuY29uY2F0KG4rbyksdSs9IkwgIi5jb25jYXQodCtyLXMvMi1pLCIsIikuY29uY2F0KG4rbyksdSs9IkwgIi5jb25jYXQodCwiLCIpLmNvbmNhdChuLCIgWiIpLHV9LFB1ZT17eDowLHk6MCx1cHBlcldpZHRoOjAsbG93ZXJXaWR0aDowLGhlaWdodDowLGlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlOiExLGFuaW1hdGlvbkJlZ2luOjAsYW5pbWF0aW9uRHVyYXRpb246MTUwMCxhbmltYXRpb25FYXNpbmc6ImVhc2UifSxNdWU9ZnVuY3Rpb24odCl7dmFyIG49bEkobEkoe30sUHVlKSx0KSxyPUMudXNlUmVmKCksaT1DLnVzZVN0YXRlKC0xKSxvPVN1ZShpLDIpLHM9b1swXSx1PW9bMV07Qy51c2VFZmZlY3QoZnVuY3Rpb24oKXtpZihyLmN1cnJlbnQmJnIuY3VycmVudC5nZXRUb3RhbExlbmd0aCl0cnl7dmFyIEU9ci5jdXJyZW50LmdldFRvdGFsTGVuZ3RoKCk7RSYmdShFKX1jYXRjaHt9fSxbXSk7dmFyIGY9bi54LGQ9bi55LHA9bi51cHBlcldpZHRoLG09bi5sb3dlcldpZHRoLHk9bi5oZWlnaHQseD1uLmNsYXNzTmFtZSx3PW4uYW5pbWF0aW9uRWFzaW5nLGI9bi5hbmltYXRpb25EdXJhdGlvbixnPW4uYW5pbWF0aW9uQmVnaW4sXz1uLmlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlO2lmKGYhPT0rZnx8ZCE9PStkfHxwIT09K3B8fG0hPT0rbXx8eSE9PSt5fHxwPT09MCYmbT09PTB8fHk9PT0wKXJldHVybiBudWxsO3ZhciBPPVdlKCJyZWNoYXJ0cy10cmFwZXpvaWQiLHgpO3JldHVybiBfP0YuY3JlYXRlRWxlbWVudChsaSx7Y2FuQmVnaW46cz4wLGZyb206e3VwcGVyV2lkdGg6MCxsb3dlcldpZHRoOjAsaGVpZ2h0OnkseDpmLHk6ZH0sdG86e3VwcGVyV2lkdGg6cCxsb3dlcldpZHRoOm0saGVpZ2h0OnkseDpmLHk6ZH0sZHVyYXRpb246YixhbmltYXRpb25FYXNpbmc6dyxpc0FjdGl2ZTpffSxmdW5jdGlvbihFKXt2YXIgaj1FLnVwcGVyV2lkdGgsVD1FLmxvd2VyV2lkdGgsUD1FLmhlaWdodCxOPUUueCxSPUUueTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGxpLHtjYW5CZWdpbjpzPjAsZnJvbToiMHB4ICIuY29uY2F0KHM9PT0tMT8xOnMsInB4IiksdG86IiIuY29uY2F0KHMsInB4IDBweCIpLGF0dHJpYnV0ZU5hbWU6InN0cm9rZURhc2hhcnJheSIsYmVnaW46ZyxkdXJhdGlvbjpiLGVhc2luZzp3fSxGLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHptKHt9LCRlKG4sITApLHtjbGFzc05hbWU6TyxkOnVJKE4sUixqLFQsUCkscmVmOnJ9KSkpfSk6Ri5jcmVhdGVFbGVtZW50KCJnIixudWxsLEYuY3JlYXRlRWxlbWVudCgicGF0aCIsem0oe30sJGUobiwhMCkse2NsYXNzTmFtZTpPLGQ6dUkoZixkLHAsbSx5KX0pKSl9LFJ1ZT1bIm9wdGlvbiIsInNoYXBlVHlwZSIsInByb3BUcmFuc2Zvcm1lciIsImFjdGl2ZUNsYXNzTmFtZSIsImlzQWN0aXZlIl07ZnVuY3Rpb24gaWQoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gaWQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGlkKGUpfWZ1bmN0aW9uIE51ZShlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49a3VlKGUsdCkscixpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKylyPW9baV0sISh0LmluZGV4T2Yocik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKG5bcl09ZVtyXSl9cmV0dXJuIG59ZnVuY3Rpb24ga3VlKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7aWYodC5pbmRleE9mKHIpPj0wKWNvbnRpbnVlO25bcl09ZVtyXX1yZXR1cm4gbn1mdW5jdGlvbiBjSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEZtKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP2NJKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtEdWUoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6Y0koT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIER1ZShlLHQsbil7cmV0dXJuIHQ9THVlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gTHVlKGUpe3ZhciB0PUl1ZShlLCJzdHJpbmciKTtyZXR1cm4gaWQodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBJdWUoZSx0KXtpZihpZChlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihpZChyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uICR1ZShlLHQpe3JldHVybiBGbShGbSh7fSx0KSxlKX1mdW5jdGlvbiBCdWUoZSx0KXtyZXR1cm4gZT09PSJzeW1ib2xzIn1mdW5jdGlvbiBmSShlKXt2YXIgdD1lLnNoYXBlVHlwZSxuPWUuZWxlbWVudFByb3BzO3N3aXRjaCh0KXtjYXNlInJlY3RhbmdsZSI6cmV0dXJuIEYuY3JlYXRlRWxlbWVudChTVCxuKTtjYXNlInRyYXBlem9pZCI6cmV0dXJuIEYuY3JlYXRlRWxlbWVudChNdWUsbik7Y2FzZSJzZWN0b3IiOnJldHVybiBGLmNyZWF0ZUVsZW1lbnQoYnEsbik7Y2FzZSJzeW1ib2xzIjppZihCdWUodCkpcmV0dXJuIEYuY3JlYXRlRWxlbWVudChxTyxuKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBWdWUoZSl7cmV0dXJuIEMuaXNWYWxpZEVsZW1lbnQoZSk/ZS5wcm9wczplfWZ1bmN0aW9uIE1xKGUpe3ZhciB0PWUub3B0aW9uLG49ZS5zaGFwZVR5cGUscj1lLnByb3BUcmFuc2Zvcm1lcixpPXI9PT12b2lkIDA/JHVlOnIsbz1lLmFjdGl2ZUNsYXNzTmFtZSxzPW89PT12b2lkIDA/InJlY2hhcnRzLWFjdGl2ZS1zaGFwZSI6byx1PWUuaXNBY3RpdmUsZj1OdWUoZSxSdWUpLGQ7aWYoQy5pc1ZhbGlkRWxlbWVudCh0KSlkPUMuY2xvbmVFbGVtZW50KHQsRm0oRm0oe30sZiksVnVlKHQpKSk7ZWxzZSBpZihIZSh0KSlkPXQoZik7ZWxzZSBpZihndWUodCkmJiF3dWUodCkpe3ZhciBwPWkodCxmKTtkPUYuY3JlYXRlRWxlbWVudChmSSx7c2hhcGVUeXBlOm4sZWxlbWVudFByb3BzOnB9KX1lbHNle3ZhciBtPWY7ZD1GLmNyZWF0ZUVsZW1lbnQoZkkse3NoYXBlVHlwZTpuLGVsZW1lbnRQcm9wczptfSl9cmV0dXJuIHU/Ri5jcmVhdGVFbGVtZW50KGF0LHtjbGFzc05hbWU6c30sZCk6ZH1mdW5jdGlvbiBkdihlLHQpe3JldHVybiB0IT1udWxsJiYidHJhcGV6b2lkcyJpbiBlLnByb3BzfWZ1bmN0aW9uIGh2KGUsdCl7cmV0dXJuIHQhPW51bGwmJiJzZWN0b3JzImluIGUucHJvcHN9ZnVuY3Rpb24gYWQoZSx0KXtyZXR1cm4gdCE9bnVsbCYmInBvaW50cyJpbiBlLnByb3BzfWZ1bmN0aW9uIHF1ZShlLHQpe3ZhciBuLHIsaT1lLng9PT0odD09bnVsbHx8KG49dC5sYWJlbFZpZXdCb3gpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi54KXx8ZS54PT09dC54LG89ZS55PT09KHQ9PW51bGx8fChyPXQubGFiZWxWaWV3Qm94KT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIueSl8fGUueT09PXQueTtyZXR1cm4gaSYmb31mdW5jdGlvbiBVdWUoZSx0KXt2YXIgbj1lLmVuZEFuZ2xlPT09dC5lbmRBbmdsZSxyPWUuc3RhcnRBbmdsZT09PXQuc3RhcnRBbmdsZTtyZXR1cm4gbiYmcn1mdW5jdGlvbiB6dWUoZSx0KXt2YXIgbj1lLng9PT10Lngscj1lLnk9PT10LnksaT1lLno9PT10Lno7cmV0dXJuIG4mJnImJml9ZnVuY3Rpb24gRnVlKGUsdCl7dmFyIG47cmV0dXJuIGR2KGUsdCk/bj1xdWU6aHYoZSx0KT9uPVV1ZTphZChlLHQpJiYobj16dWUpLG59ZnVuY3Rpb24gSHVlKGUsdCl7dmFyIG47cmV0dXJuIGR2KGUsdCk/bj0idHJhcGV6b2lkcyI6aHYoZSx0KT9uPSJzZWN0b3JzIjphZChlLHQpJiYobj0icG9pbnRzIiksbn1mdW5jdGlvbiBHdWUoZSx0KXtpZihkdihlLHQpKXt2YXIgbjtyZXR1cm4obj10LnRvb2x0aXBQYXlsb2FkKT09PW51bGx8fG49PT12b2lkIDB8fChuPW5bMF0pPT09bnVsbHx8bj09PXZvaWQgMHx8KG49bi5wYXlsb2FkKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4ucGF5bG9hZH1pZihodihlLHQpKXt2YXIgcjtyZXR1cm4ocj10LnRvb2x0aXBQYXlsb2FkKT09PW51bGx8fHI9PT12b2lkIDB8fChyPXJbMF0pPT09bnVsbHx8cj09PXZvaWQgMHx8KHI9ci5wYXlsb2FkKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIucGF5bG9hZH1yZXR1cm4gYWQoZSx0KT90LnBheWxvYWQ6e319ZnVuY3Rpb24gS3VlKGUpe3ZhciB0PWUuYWN0aXZlVG9vbHRpcEl0ZW0sbj1lLmdyYXBoaWNhbEl0ZW0scj1lLml0ZW1EYXRhLGk9SHVlKG4sdCksbz1HdWUobix0KSxzPXIuZmlsdGVyKGZ1bmN0aW9uKGYsZCl7dmFyIHA9d3MobyxmKSxtPW4ucHJvcHNbaV0uZmlsdGVyKGZ1bmN0aW9uKHcpe3ZhciBiPUZ1ZShuLHQpO3JldHVybiBiKHcsdCl9KSx5PW4ucHJvcHNbaV0uaW5kZXhPZihtW20ubGVuZ3RoLTFdKSx4PWQ9PT15O3JldHVybiBwJiZ4fSksdT1yLmluZGV4T2Yoc1tzLmxlbmd0aC0xXSk7cmV0dXJuIHV9dmFyIEJwO2Z1bmN0aW9uIGN1KGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIGN1PXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxjdShlKX1mdW5jdGlvbiBObCgpe3JldHVybiBObD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LE5sLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBkSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGt0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP2RJKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtCcihlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpkSShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gV3VlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaEkoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLE5xKHIua2V5KSxyKX19ZnVuY3Rpb24gWXVlKGUsdCxuKXtyZXR1cm4gdCYmaEkoZS5wcm90b3R5cGUsdCksbiYmaEkoZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIFh1ZShlLHQsbil7cmV0dXJuIHQ9SG0odCksWnVlKGUsUnEoKT9SZWZsZWN0LmNvbnN0cnVjdCh0LG58fFtdLEhtKGUpLmNvbnN0cnVjdG9yKTp0LmFwcGx5KGUsbikpfWZ1bmN0aW9uIFp1ZShlLHQpe2lmKHQmJihjdSh0KT09PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpcmV0dXJuIHQ7aWYodCE9PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBRdWUoZSl9ZnVuY3Rpb24gUXVlKGUpe2lmKGU9PT12b2lkIDApdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBScSgpe3RyeXt2YXIgZT0hQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSl9Y2F0Y2h7fXJldHVybihScT1mdW5jdGlvbigpe3JldHVybiEhZX0pKCl9ZnVuY3Rpb24gSG0oZSl7cmV0dXJuIEhtPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKG4pe3JldHVybiBuLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pfSxIbShlKX1mdW5jdGlvbiBKdWUoZSx0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIiYmdCE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmR0EoZSx0KX1mdW5jdGlvbiBHQShlLHQpe3JldHVybiBHQT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihyLGkpe3JldHVybiByLl9fcHJvdG9fXz1pLHJ9LEdBKGUsdCl9ZnVuY3Rpb24gQnIoZSx0LG4pe3JldHVybiB0PU5xKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gTnEoZSl7dmFyIHQ9ZWNlKGUsInN0cmluZyIpO3JldHVybiBjdSh0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIGVjZShlLHQpe2lmKGN1KGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKGN1KHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9dmFyIHhhPShmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3ZhciByO3JldHVybiBXdWUodGhpcyx0KSxyPVh1ZSh0aGlzLHQsW25dKSxCcihyLCJwaWVSZWYiLG51bGwpLEJyKHIsInNlY3RvclJlZnMiLFtdKSxCcihyLCJpZCIsQ3MoInJlY2hhcnRzLXBpZS0iKSksQnIociwiaGFuZGxlQW5pbWF0aW9uRW5kIixmdW5jdGlvbigpe3ZhciBpPXIucHJvcHMub25BbmltYXRpb25FbmQ7ci5zZXRTdGF0ZSh7aXNBbmltYXRpb25GaW5pc2hlZDohMH0pLEhlKGkpJiZpKCl9KSxCcihyLCJoYW5kbGVBbmltYXRpb25TdGFydCIsZnVuY3Rpb24oKXt2YXIgaT1yLnByb3BzLm9uQW5pbWF0aW9uU3RhcnQ7ci5zZXRTdGF0ZSh7aXNBbmltYXRpb25GaW5pc2hlZDohMX0pLEhlKGkpJiZpKCl9KSxyLnN0YXRlPXtpc0FuaW1hdGlvbkZpbmlzaGVkOiFuLmlzQW5pbWF0aW9uQWN0aXZlLHByZXZJc0FuaW1hdGlvbkFjdGl2ZTpuLmlzQW5pbWF0aW9uQWN0aXZlLHByZXZBbmltYXRpb25JZDpuLmFuaW1hdGlvbklkLHNlY3RvclRvRm9jdXM6MH0scn1yZXR1cm4gSnVlKHQsZSksWXVlKHQsW3trZXk6ImlzQWN0aXZlSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKHIpe3ZhciBpPXRoaXMucHJvcHMuYWN0aXZlSW5kZXg7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSk/aS5pbmRleE9mKHIpIT09LTE6cj09PWl9fSx7a2V5OiJoYXNBY3RpdmVJbmRleCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLmFjdGl2ZUluZGV4O3JldHVybiBBcnJheS5pc0FycmF5KHIpP3IubGVuZ3RoIT09MDpyfHxyPT09MH19LHtrZXk6InJlbmRlckxhYmVscyIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9dGhpcy5wcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZTtpZihpJiYhdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkKXJldHVybiBudWxsO3ZhciBvPXRoaXMucHJvcHMscz1vLmxhYmVsLHU9by5sYWJlbExpbmUsZj1vLmRhdGFLZXksZD1vLnZhbHVlS2V5LHA9JGUodGhpcy5wcm9wcywhMSksbT0kZShzLCExKSx5PSRlKHUsITEpLHg9cyYmcy5vZmZzZXRSYWRpdXN8fDIwLHc9ci5tYXAoZnVuY3Rpb24oYixnKXt2YXIgXz0oYi5zdGFydEFuZ2xlK2IuZW5kQW5nbGUpLzIsTz1MdChiLmN4LGIuY3ksYi5vdXRlclJhZGl1cyt4LF8pLEU9a3Qoa3Qoa3Qoa3Qoe30scCksYikse30se3N0cm9rZToibm9uZSJ9LG0pLHt9LHtpbmRleDpnLHRleHRBbmNob3I6dC5nZXRUZXh0QW5jaG9yKE8ueCxiLmN4KX0sTyksaj1rdChrdChrdChrdCh7fSxwKSxiKSx7fSx7ZmlsbDoibm9uZSIsc3Ryb2tlOmIuZmlsbH0seSkse30se2luZGV4OmcscG9pbnRzOltMdChiLmN4LGIuY3ksYi5vdXRlclJhZGl1cyxfKSxPXX0pLFQ9ZjtyZXR1cm4gR2UoZikmJkdlKGQpP1Q9InZhbHVlIjpHZShmKSYmKFQ9ZCksRi5jcmVhdGVFbGVtZW50KGF0LHtrZXk6ImxhYmVsLSIuY29uY2F0KGIuc3RhcnRBbmdsZSwiLSIpLmNvbmNhdChiLmVuZEFuZ2xlLCItIikuY29uY2F0KGIubWlkQW5nbGUsIi0iKS5jb25jYXQoZyl9LHUmJnQucmVuZGVyTGFiZWxMaW5lSXRlbSh1LGosImxpbmUiKSx0LnJlbmRlckxhYmVsSXRlbShzLEUsSnQoYixUKSkpfSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1waWUtbGFiZWxzIn0sdyl9fSx7a2V5OiJyZW5kZXJTZWN0b3JzU3RhdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9dGhpcyxvPXRoaXMucHJvcHMscz1vLmFjdGl2ZVNoYXBlLHU9by5ibGVuZFN0cm9rZSxmPW8uaW5hY3RpdmVTaGFwZTtyZXR1cm4gci5tYXAoZnVuY3Rpb24oZCxwKXtpZihkPy5zdGFydEFuZ2xlPT09MCYmZD8uZW5kQW5nbGU9PT0wJiZyLmxlbmd0aCE9PTEpcmV0dXJuIG51bGw7dmFyIG09aS5pc0FjdGl2ZUluZGV4KHApLHk9ZiYmaS5oYXNBY3RpdmVJbmRleCgpP2Y6bnVsbCx4PW0/czp5LHc9a3Qoa3Qoe30sZCkse30se3N0cm9rZTp1P2QuZmlsbDpkLnN0cm9rZSx0YWJJbmRleDotMX0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQsTmwoe3JlZjpmdW5jdGlvbihnKXtnJiYhaS5zZWN0b3JSZWZzLmluY2x1ZGVzKGcpJiZpLnNlY3RvclJlZnMucHVzaChnKX0sdGFiSW5kZXg6LTEsY2xhc3NOYW1lOiJyZWNoYXJ0cy1waWUtc2VjdG9yIn0sYnMoaS5wcm9wcyxkLHApLHtrZXk6InNlY3Rvci0iLmNvbmNhdChkPy5zdGFydEFuZ2xlLCItIikuY29uY2F0KGQ/LmVuZEFuZ2xlLCItIikuY29uY2F0KGQubWlkQW5nbGUsIi0iKS5jb25jYXQocCl9KSxGLmNyZWF0ZUVsZW1lbnQoTXEsTmwoe29wdGlvbjp4LGlzQWN0aXZlOm0sc2hhcGVUeXBlOiJzZWN0b3IifSx3KSkpfSl9fSx7a2V5OiJyZW5kZXJTZWN0b3JzV2l0aEFuaW1hdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLGk9dGhpcy5wcm9wcyxvPWkuc2VjdG9ycyxzPWkuaXNBbmltYXRpb25BY3RpdmUsdT1pLmFuaW1hdGlvbkJlZ2luLGY9aS5hbmltYXRpb25EdXJhdGlvbixkPWkuYW5pbWF0aW9uRWFzaW5nLHA9aS5hbmltYXRpb25JZCxtPXRoaXMuc3RhdGUseT1tLnByZXZTZWN0b3JzLHg9bS5wcmV2SXNBbmltYXRpb25BY3RpdmU7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChsaSx7YmVnaW46dSxkdXJhdGlvbjpmLGlzQWN0aXZlOnMsZWFzaW5nOmQsZnJvbTp7dDowfSx0bzp7dDoxfSxrZXk6InBpZS0iLmNvbmNhdChwLCItIikuY29uY2F0KHgpLG9uQW5pbWF0aW9uU3RhcnQ6dGhpcy5oYW5kbGVBbmltYXRpb25TdGFydCxvbkFuaW1hdGlvbkVuZDp0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZH0sZnVuY3Rpb24odyl7dmFyIGI9dy50LGc9W10sXz1vJiZvWzBdLE89Xy5zdGFydEFuZ2xlO3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24oRSxqKXt2YXIgVD15JiZ5W2pdLFA9aj4wP3hyKEUsInBhZGRpbmdBbmdsZSIsMCk6MDtpZihUKXt2YXIgTj15bihULmVuZEFuZ2xlLVQuc3RhcnRBbmdsZSxFLmVuZEFuZ2xlLUUuc3RhcnRBbmdsZSksUj1rdChrdCh7fSxFKSx7fSx7c3RhcnRBbmdsZTpPK1AsZW5kQW5nbGU6TytOKGIpK1B9KTtnLnB1c2goUiksTz1SLmVuZEFuZ2xlfWVsc2V7dmFyIEk9RS5lbmRBbmdsZSxWPUUuc3RhcnRBbmdsZSxCPXluKDAsSS1WKSwkPUIoYiksej1rdChrdCh7fSxFKSx7fSx7c3RhcnRBbmdsZTpPK1AsZW5kQW5nbGU6TyskK1B9KTtnLnB1c2goeiksTz16LmVuZEFuZ2xlfX0pLEYuY3JlYXRlRWxlbWVudChhdCxudWxsLHIucmVuZGVyU2VjdG9yc1N0YXRpY2FsbHkoZykpfSl9fSx7a2V5OiJhdHRhY2hLZXlib2FyZEhhbmRsZXJzIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgaT10aGlzO3Iub25rZXlkb3duPWZ1bmN0aW9uKG8pe2lmKCFvLmFsdEtleSlzd2l0Y2goby5rZXkpe2Nhc2UiQXJyb3dMZWZ0Ijp7dmFyIHM9KytpLnN0YXRlLnNlY3RvclRvRm9jdXMlaS5zZWN0b3JSZWZzLmxlbmd0aDtpLnNlY3RvclJlZnNbc10uZm9jdXMoKSxpLnNldFN0YXRlKHtzZWN0b3JUb0ZvY3VzOnN9KTticmVha31jYXNlIkFycm93UmlnaHQiOnt2YXIgdT0tLWkuc3RhdGUuc2VjdG9yVG9Gb2N1czwwP2kuc2VjdG9yUmVmcy5sZW5ndGgtMTppLnN0YXRlLnNlY3RvclRvRm9jdXMlaS5zZWN0b3JSZWZzLmxlbmd0aDtpLnNlY3RvclJlZnNbdV0uZm9jdXMoKSxpLnNldFN0YXRlKHtzZWN0b3JUb0ZvY3VzOnV9KTticmVha31jYXNlIkVzY2FwZSI6e2kuc2VjdG9yUmVmc1tpLnN0YXRlLnNlY3RvclRvRm9jdXNdLmJsdXIoKSxpLnNldFN0YXRlKHtzZWN0b3JUb0ZvY3VzOjB9KTticmVha319fX19LHtrZXk6InJlbmRlclNlY3RvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIuc2VjdG9ycyxvPXIuaXNBbmltYXRpb25BY3RpdmUscz10aGlzLnN0YXRlLnByZXZTZWN0b3JzO3JldHVybiBvJiZpJiZpLmxlbmd0aCYmKCFzfHwhd3MocyxpKSk/dGhpcy5yZW5kZXJTZWN0b3JzV2l0aEFuaW1hdGlvbigpOnRoaXMucmVuZGVyU2VjdG9yc1N0YXRpY2FsbHkoaSl9fSx7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBpZVJlZiYmdGhpcy5hdHRhY2hLZXlib2FyZEhhbmRsZXJzKHRoaXMucGllUmVmKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLGk9dGhpcy5wcm9wcyxvPWkuaGlkZSxzPWkuc2VjdG9ycyx1PWkuY2xhc3NOYW1lLGY9aS5sYWJlbCxkPWkuY3gscD1pLmN5LG09aS5pbm5lclJhZGl1cyx5PWkub3V0ZXJSYWRpdXMseD1pLmlzQW5pbWF0aW9uQWN0aXZlLHc9dGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkO2lmKG98fCFzfHwhcy5sZW5ndGh8fCF2ZShkKXx8IXZlKHApfHwhdmUobSl8fCF2ZSh5KSlyZXR1cm4gbnVsbDt2YXIgYj1XZSgicmVjaGFydHMtcGllIix1KTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGF0LHt0YWJJbmRleDp0aGlzLnByb3BzLnJvb3RUYWJJbmRleCxjbGFzc05hbWU6YixyZWY6ZnVuY3Rpb24oXyl7ci5waWVSZWY9X319LHRoaXMucmVuZGVyU2VjdG9ycygpLGYmJnRoaXMucmVuZGVyTGFiZWxzKHMpLE9uLnJlbmRlckNhbGxCeVBhcmVudCh0aGlzLnByb3BzLG51bGwsITEpLCgheHx8dykmJlRpLnJlbmRlckNhbGxCeVBhcmVudCh0aGlzLnByb3BzLHMsITEpKX19XSxbe2tleToiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIix2YWx1ZTpmdW5jdGlvbihyLGkpe3JldHVybiBpLnByZXZJc0FuaW1hdGlvbkFjdGl2ZSE9PXIuaXNBbmltYXRpb25BY3RpdmU/e3ByZXZJc0FuaW1hdGlvbkFjdGl2ZTpyLmlzQW5pbWF0aW9uQWN0aXZlLHByZXZBbmltYXRpb25JZDpyLmFuaW1hdGlvbklkLGN1clNlY3RvcnM6ci5zZWN0b3JzLHByZXZTZWN0b3JzOltdLGlzQW5pbWF0aW9uRmluaXNoZWQ6ITB9OnIuaXNBbmltYXRpb25BY3RpdmUmJnIuYW5pbWF0aW9uSWQhPT1pLnByZXZBbmltYXRpb25JZD97cHJldkFuaW1hdGlvbklkOnIuYW5pbWF0aW9uSWQsY3VyU2VjdG9yczpyLnNlY3RvcnMscHJldlNlY3RvcnM6aS5jdXJTZWN0b3JzLGlzQW5pbWF0aW9uRmluaXNoZWQ6ITB9OnIuc2VjdG9ycyE9PWkuY3VyU2VjdG9ycz97Y3VyU2VjdG9yczpyLnNlY3RvcnMsaXNBbmltYXRpb25GaW5pc2hlZDohMH06bnVsbH19LHtrZXk6ImdldFRleHRBbmNob3IiLHZhbHVlOmZ1bmN0aW9uKHIsaSl7cmV0dXJuIHI+aT8ic3RhcnQiOnI8aT8iZW5kIjoibWlkZGxlIn19LHtrZXk6InJlbmRlckxhYmVsTGluZUl0ZW0iLHZhbHVlOmZ1bmN0aW9uKHIsaSxvKXtpZihGLmlzVmFsaWRFbGVtZW50KHIpKXJldHVybiBGLmNsb25lRWxlbWVudChyLGkpO2lmKEhlKHIpKXJldHVybiByKGkpO3ZhciBzPVdlKCJyZWNoYXJ0cy1waWUtbGFiZWwtbGluZSIsdHlwZW9mIHIhPSJib29sZWFuIj9yLmNsYXNzTmFtZToiIik7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChocyxObCh7fSxpLHtrZXk6byx0eXBlOiJsaW5lYXIiLGNsYXNzTmFtZTpzfSkpfX0se2tleToicmVuZGVyTGFiZWxJdGVtIix2YWx1ZTpmdW5jdGlvbihyLGksbyl7aWYoRi5pc1ZhbGlkRWxlbWVudChyKSlyZXR1cm4gRi5jbG9uZUVsZW1lbnQocixpKTt2YXIgcz1vO2lmKEhlKHIpJiYocz1yKGkpLEYuaXNWYWxpZEVsZW1lbnQocykpKXJldHVybiBzO3ZhciB1PVdlKCJyZWNoYXJ0cy1waWUtbGFiZWwtdGV4dCIsdHlwZW9mIHIhPSJib29sZWFuIiYmIUhlKHIpP3IuY2xhc3NOYW1lOiIiKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KHhzLE5sKHt9LGkse2FsaWdubWVudEJhc2VsaW5lOiJtaWRkbGUiLGNsYXNzTmFtZTp1fSkscyl9fV0pfSkoQy5QdXJlQ29tcG9uZW50KTtCcD14YTtCcih4YSwiZGlzcGxheU5hbWUiLCJQaWUiKTtCcih4YSwiZGVmYXVsdFByb3BzIix7c3Ryb2tlOiIjZmZmIixmaWxsOiIjODA4MDgwIixsZWdlbmRUeXBlOiJyZWN0IixjeDoiNTAlIixjeToiNTAlIixzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLGlubmVyUmFkaXVzOjAsb3V0ZXJSYWRpdXM6IjgwJSIscGFkZGluZ0FuZ2xlOjAsbGFiZWxMaW5lOiEwLGhpZGU6ITEsbWluQW5nbGU6MCxpc0FuaW1hdGlvbkFjdGl2ZTohYm8uaXNTc3IsYW5pbWF0aW9uQmVnaW46NDAwLGFuaW1hdGlvbkR1cmF0aW9uOjE1MDAsYW5pbWF0aW9uRWFzaW5nOiJlYXNlIixuYW1lS2V5OiJuYW1lIixibGVuZFN0cm9rZTohMSxyb290VGFiSW5kZXg6MH0pO0JyKHhhLCJwYXJzZURlbHRhQW5nbGUiLGZ1bmN0aW9uKGUsdCl7dmFyIG49SG4odC1lKSxyPU1hdGgubWluKE1hdGguYWJzKHQtZSksMzYwKTtyZXR1cm4gbipyfSk7QnIoeGEsImdldFJlYWxQaWVEYXRhIixmdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEsbj1lLmNoaWxkcmVuLHI9JGUoZSwhMSksaT13cihuLFp5KTtyZXR1cm4gdCYmdC5sZW5ndGg/dC5tYXAoZnVuY3Rpb24obyxzKXtyZXR1cm4ga3Qoa3Qoa3Qoe3BheWxvYWQ6b30sciksbyksaSYmaVtzXSYmaVtzXS5wcm9wcyl9KTppJiZpLmxlbmd0aD9pLm1hcChmdW5jdGlvbihvKXtyZXR1cm4ga3Qoa3Qoe30sciksby5wcm9wcyl9KTpbXX0pO0JyKHhhLCJwYXJzZUNvb3JkaW5hdGVPZlBpZSIsZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRvcCxyPXQubGVmdCxpPXQud2lkdGgsbz10LmhlaWdodCxzPW1xKGksbyksdT1yK0duKGUuY3gsaSxpLzIpLGY9bitHbihlLmN5LG8sby8yKSxkPUduKGUuaW5uZXJSYWRpdXMscywwKSxwPUduKGUub3V0ZXJSYWRpdXMscyxzKi44KSxtPWUubWF4UmFkaXVzfHxNYXRoLnNxcnQoaSppK28qbykvMjtyZXR1cm57Y3g6dSxjeTpmLGlubmVyUmFkaXVzOmQsb3V0ZXJSYWRpdXM6cCxtYXhSYWRpdXM6bX19KTtCcih4YSwiZ2V0Q29tcG9zZWREYXRhIixmdW5jdGlvbihlKXt2YXIgdD1lLml0ZW0sbj1lLm9mZnNldCxyPXQudHlwZS5kZWZhdWx0UHJvcHMhPT12b2lkIDA/a3Qoa3Qoe30sdC50eXBlLmRlZmF1bHRQcm9wcyksdC5wcm9wcyk6dC5wcm9wcyxpPUJwLmdldFJlYWxQaWVEYXRhKHIpO2lmKCFpfHwhaS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIG89ci5jb3JuZXJSYWRpdXMscz1yLnN0YXJ0QW5nbGUsdT1yLmVuZEFuZ2xlLGY9ci5wYWRkaW5nQW5nbGUsZD1yLmRhdGFLZXkscD1yLm5hbWVLZXksbT1yLnZhbHVlS2V5LHk9ci50b29sdGlwVHlwZSx4PU1hdGguYWJzKHIubWluQW5nbGUpLHc9QnAucGFyc2VDb29yZGluYXRlT2ZQaWUocixuKSxiPUJwLnBhcnNlRGVsdGFBbmdsZShzLHUpLGc9TWF0aC5hYnMoYiksXz1kO0dlKGQpJiZHZShtKT8obGEoITEsYFVzZSAiZGF0YUtleSIgdG8gc3BlY2lmeSB0aGUgdmFsdWUgb2YgcGllLAogICAgICB0aGUgcHJvcHMgInZhbHVlS2V5IiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gMS4xLjBgKSxfPSJ2YWx1ZSIpOkdlKGQpJiYobGEoITEsYFVzZSAiZGF0YUtleSIgdG8gc3BlY2lmeSB0aGUgdmFsdWUgb2YgcGllLAogICAgICB0aGUgcHJvcHMgInZhbHVlS2V5IiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gMS4xLjBgKSxfPW0pO3ZhciBPPWkuZmlsdGVyKGZ1bmN0aW9uKFIpe3JldHVybiBKdChSLF8sMCkhPT0wfSkubGVuZ3RoLEU9KGc+PTM2MD9POk8tMSkqZixqPWctTyp4LUUsVD1pLnJlZHVjZShmdW5jdGlvbihSLEkpe3ZhciBWPUp0KEksXywwKTtyZXR1cm4gUisodmUoVik/VjowKX0sMCksUDtpZihUPjApe3ZhciBOO1A9aS5tYXAoZnVuY3Rpb24oUixJKXt2YXIgVj1KdChSLF8sMCksQj1KdChSLHAsSSksJD0odmUoVik/VjowKS9ULHo7ST96PU4uZW5kQW5nbGUrSG4oYikqZiooViE9PTA/MTowKTp6PXM7dmFyIFU9eitIbihiKSooKFYhPT0wP3g6MCkrJCpqKSxLPSh6K1UpLzIsTD0ody5pbm5lclJhZGl1cyt3Lm91dGVyUmFkaXVzKS8yLFc9W3tuYW1lOkIsdmFsdWU6VixwYXlsb2FkOlIsZGF0YUtleTpfLHR5cGU6eX1dLEg9THQody5jeCx3LmN5LEwsSyk7cmV0dXJuIE49a3Qoa3Qoa3Qoe3BlcmNlbnQ6JCxjb3JuZXJSYWRpdXM6byxuYW1lOkIsdG9vbHRpcFBheWxvYWQ6VyxtaWRBbmdsZTpLLG1pZGRsZVJhZGl1czpMLHRvb2x0aXBQb3NpdGlvbjpIfSxSKSx3KSx7fSx7dmFsdWU6SnQoUixfKSxzdGFydEFuZ2xlOnosZW5kQW5nbGU6VSxwYXlsb2FkOlIscGFkZGluZ0FuZ2xlOkhuKGIpKmZ9KSxOfSl9cmV0dXJuIGt0KGt0KHt9LHcpLHt9LHtzZWN0b3JzOlAsZGF0YTppfSl9KTt2YXIgVjEscEk7ZnVuY3Rpb24gdGNlKCl7aWYocEkpcmV0dXJuIFYxO3BJPTE7dmFyIGU9TWF0aC5jZWlsLHQ9TWF0aC5tYXg7ZnVuY3Rpb24gbihyLGksbyxzKXtmb3IodmFyIHU9LTEsZj10KGUoKGktcikvKG98fDEpKSwwKSxkPUFycmF5KGYpO2YtLTspZFtzP2Y6Kyt1XT1yLHIrPW87cmV0dXJuIGR9cmV0dXJuIFYxPW4sVjF9dmFyIHExLG1JO2Z1bmN0aW9uIGtxKCl7aWYobUkpcmV0dXJuIHExO21JPTE7dmFyIGU9aTUoKSx0PTEvMCxuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiByKGkpe2lmKCFpKXJldHVybiBpPT09MD9pOjA7aWYoaT1lKGkpLGk9PT10fHxpPT09LXQpe3ZhciBvPWk8MD8tMToxO3JldHVybiBvKm59cmV0dXJuIGk9PT1pP2k6MH1yZXR1cm4gcTE9cixxMX12YXIgVTEseUk7ZnVuY3Rpb24gbmNlKCl7aWYoeUkpcmV0dXJuIFUxO3lJPTE7dmFyIGU9dGNlKCksdD1YeSgpLG49a3EoKTtmdW5jdGlvbiByKGkpe3JldHVybiBmdW5jdGlvbihvLHMsdSl7cmV0dXJuIHUmJnR5cGVvZiB1IT0ibnVtYmVyIiYmdChvLHMsdSkmJihzPXU9dm9pZCAwKSxvPW4obykscz09PXZvaWQgMD8ocz1vLG89MCk6cz1uKHMpLHU9dT09PXZvaWQgMD9vPHM/MTotMTpuKHUpLGUobyxzLHUsaSl9fXJldHVybiBVMT1yLFUxfXZhciB6MSx2STtmdW5jdGlvbiByY2UoKXtpZih2SSlyZXR1cm4gejE7dkk9MTt2YXIgZT1uY2UoKSx0PWUoKTtyZXR1cm4gejE9dCx6MX12YXIgaWNlPXJjZSgpO2NvbnN0IEdtPU90KGljZSk7ZnVuY3Rpb24gb2QoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gb2Q9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG9kKGUpfWZ1bmN0aW9uIGdJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gYkkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/Z0koT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe0RxKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmdJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBEcShlLHQsbil7cmV0dXJuIHQ9YWNlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gYWNlKGUpe3ZhciB0PW9jZShlLCJzdHJpbmciKTtyZXR1cm4gb2QodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBvY2UoZSx0KXtpZihvZChlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihvZChyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfXZhciBzY2U9WyJXZWJraXQiLCJNb3oiLCJPIiwibXMiXSxsY2U9ZnVuY3Rpb24odCxuKXt2YXIgcj10LnJlcGxhY2UoLyhcdykvLGZ1bmN0aW9uKG8pe3JldHVybiBvLnRvVXBwZXJDYXNlKCl9KSxpPXNjZS5yZWR1Y2UoZnVuY3Rpb24obyxzKXtyZXR1cm4gYkkoYkkoe30sbykse30sRHEoe30scytyLG4pKX0se30pO3JldHVybiBpW3RdPW4saX07ZnVuY3Rpb24gZnUoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gZnU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGZ1KGUpfWZ1bmN0aW9uIEttKCl7cmV0dXJuIEttPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sS20uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHhJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gRjEoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/eEkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZyKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnhJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiB1Y2UoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB3SShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsSXEoci5rZXkpLHIpfX1mdW5jdGlvbiBjY2UoZSx0LG4pe3JldHVybiB0JiZ3SShlLnByb3RvdHlwZSx0KSxuJiZ3SShlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gZmNlKGUsdCxuKXtyZXR1cm4gdD1XbSh0KSxkY2UoZSxMcSgpP1JlZmxlY3QuY29uc3RydWN0KHQsbnx8W10sV20oZSkuY29uc3RydWN0b3IpOnQuYXBwbHkoZSxuKSl9ZnVuY3Rpb24gZGNlKGUsdCl7aWYodCYmKGZ1KHQpPT09Im9iamVjdCJ8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKSlyZXR1cm4gdDtpZih0IT09dm9pZCAwKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGhjZShlKX1mdW5jdGlvbiBoY2UoZSl7aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIExxKCl7dHJ5e3ZhciBlPSFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKX1jYXRjaHt9cmV0dXJuKExxPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSkoKX1mdW5jdGlvbiBXbShlKXtyZXR1cm4gV209T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obil7cmV0dXJuIG4uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9LFdtKGUpfWZ1bmN0aW9uIHBjZShlLHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iJiZ0IT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZLQShlLHQpfWZ1bmN0aW9uIEtBKGUsdCl7cmV0dXJuIEtBPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHIsaSl7cmV0dXJuIHIuX19wcm90b19fPWkscn0sS0EoZSx0KX1mdW5jdGlvbiB2cihlLHQsbil7cmV0dXJuIHQ9SXEodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBJcShlKXt2YXIgdD1tY2UoZSwic3RyaW5nIik7cmV0dXJuIGZ1KHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gbWNlKGUsdCl7aWYoZnUoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoZnUocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX12YXIgeWNlPWZ1bmN0aW9uKHQpe3ZhciBuPXQuZGF0YSxyPXQuc3RhcnRJbmRleCxpPXQuZW5kSW5kZXgsbz10Lngscz10LndpZHRoLHU9dC50cmF2ZWxsZXJXaWR0aDtpZighbnx8IW4ubGVuZ3RoKXJldHVybnt9O3ZhciBmPW4ubGVuZ3RoLGQ9bWYoKS5kb21haW4oR20oMCxmKSkucmFuZ2UoW28sbytzLXVdKSxwPWQuZG9tYWluKCkubWFwKGZ1bmN0aW9uKG0pe3JldHVybiBkKG0pfSk7cmV0dXJue2lzVGV4dEFjdGl2ZTohMSxpc1NsaWRlTW92aW5nOiExLGlzVHJhdmVsbGVyTW92aW5nOiExLGlzVHJhdmVsbGVyRm9jdXNlZDohMSxzdGFydFg6ZChyKSxlbmRYOmQoaSksc2NhbGU6ZCxzY2FsZVZhbHVlczpwfX0sU0k9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hhbmdlZFRvdWNoZXMmJiEhdC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGh9LGR1PShmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3ZhciByO3JldHVybiB1Y2UodGhpcyx0KSxyPWZjZSh0aGlzLHQsW25dKSx2cihyLCJoYW5kbGVEcmFnIixmdW5jdGlvbihpKXtyLmxlYXZlVGltZXImJihjbGVhclRpbWVvdXQoci5sZWF2ZVRpbWVyKSxyLmxlYXZlVGltZXI9bnVsbCksci5zdGF0ZS5pc1RyYXZlbGxlck1vdmluZz9yLmhhbmRsZVRyYXZlbGxlck1vdmUoaSk6ci5zdGF0ZS5pc1NsaWRlTW92aW5nJiZyLmhhbmRsZVNsaWRlRHJhZyhpKX0pLHZyKHIsImhhbmRsZVRvdWNoTW92ZSIsZnVuY3Rpb24oaSl7aS5jaGFuZ2VkVG91Y2hlcyE9bnVsbCYmaS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg+MCYmci5oYW5kbGVEcmFnKGkuY2hhbmdlZFRvdWNoZXNbMF0pfSksdnIociwiaGFuZGxlRHJhZ0VuZCIsZnVuY3Rpb24oKXtyLnNldFN0YXRlKHtpc1RyYXZlbGxlck1vdmluZzohMSxpc1NsaWRlTW92aW5nOiExfSxmdW5jdGlvbigpe3ZhciBpPXIucHJvcHMsbz1pLmVuZEluZGV4LHM9aS5vbkRyYWdFbmQsdT1pLnN0YXJ0SW5kZXg7cz8uKHtlbmRJbmRleDpvLHN0YXJ0SW5kZXg6dX0pfSksci5kZXRhY2hEcmFnRW5kTGlzdGVuZXIoKX0pLHZyKHIsImhhbmRsZUxlYXZlV3JhcHBlciIsZnVuY3Rpb24oKXsoci5zdGF0ZS5pc1RyYXZlbGxlck1vdmluZ3x8ci5zdGF0ZS5pc1NsaWRlTW92aW5nKSYmKHIubGVhdmVUaW1lcj13aW5kb3cuc2V0VGltZW91dChyLmhhbmRsZURyYWdFbmQsci5wcm9wcy5sZWF2ZVRpbWVPdXQpKX0pLHZyKHIsImhhbmRsZUVudGVyU2xpZGVPclRyYXZlbGxlciIsZnVuY3Rpb24oKXtyLnNldFN0YXRlKHtpc1RleHRBY3RpdmU6ITB9KX0pLHZyKHIsImhhbmRsZUxlYXZlU2xpZGVPclRyYXZlbGxlciIsZnVuY3Rpb24oKXtyLnNldFN0YXRlKHtpc1RleHRBY3RpdmU6ITF9KX0pLHZyKHIsImhhbmRsZVNsaWRlRHJhZ1N0YXJ0IixmdW5jdGlvbihpKXt2YXIgbz1TSShpKT9pLmNoYW5nZWRUb3VjaGVzWzBdOmk7ci5zZXRTdGF0ZSh7aXNUcmF2ZWxsZXJNb3Zpbmc6ITEsaXNTbGlkZU1vdmluZzohMCxzbGlkZU1vdmVTdGFydFg6by5wYWdlWH0pLHIuYXR0YWNoRHJhZ0VuZExpc3RlbmVyKCl9KSxyLnRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzPXtzdGFydFg6ci5oYW5kbGVUcmF2ZWxsZXJEcmFnU3RhcnQuYmluZChyLCJzdGFydFgiKSxlbmRYOnIuaGFuZGxlVHJhdmVsbGVyRHJhZ1N0YXJ0LmJpbmQociwiZW5kWCIpfSxyLnN0YXRlPXt9LHJ9cmV0dXJuIHBjZSh0LGUpLGNjZSh0LFt7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxlYXZlVGltZXImJihjbGVhclRpbWVvdXQodGhpcy5sZWF2ZVRpbWVyKSx0aGlzLmxlYXZlVGltZXI9bnVsbCksdGhpcy5kZXRhY2hEcmFnRW5kTGlzdGVuZXIoKX19LHtrZXk6ImdldEluZGV4Iix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgaT1yLnN0YXJ0WCxvPXIuZW5kWCxzPXRoaXMuc3RhdGUuc2NhbGVWYWx1ZXMsdT10aGlzLnByb3BzLGY9dS5nYXAsZD11LmRhdGEscD1kLmxlbmd0aC0xLG09TWF0aC5taW4oaSxvKSx5PU1hdGgubWF4KGksbykseD10LmdldEluZGV4SW5SYW5nZShzLG0pLHc9dC5nZXRJbmRleEluUmFuZ2Uocyx5KTtyZXR1cm57c3RhcnRJbmRleDp4LXglZixlbmRJbmRleDp3PT09cD9wOnctdyVmfX19LHtrZXk6ImdldFRleHRPZlRpY2siLHZhbHVlOmZ1bmN0aW9uKHIpe3ZhciBpPXRoaXMucHJvcHMsbz1pLmRhdGEscz1pLnRpY2tGb3JtYXR0ZXIsdT1pLmRhdGFLZXksZj1KdChvW3JdLHUscik7cmV0dXJuIEhlKHMpP3MoZixyKTpmfX0se2tleToiYXR0YWNoRHJhZ0VuZExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbigpe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZURyYWdFbmQsITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5oYW5kbGVEcmFnRW5kLCEwKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZURyYWcsITApfX0se2tleToiZGV0YWNoRHJhZ0VuZExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmhhbmRsZURyYWdFbmQsITApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5oYW5kbGVEcmFnRW5kLCEwKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmhhbmRsZURyYWcsITApfX0se2tleToiaGFuZGxlU2xpZGVEcmFnIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgaT10aGlzLnN0YXRlLG89aS5zbGlkZU1vdmVTdGFydFgscz1pLnN0YXJ0WCx1PWkuZW5kWCxmPXRoaXMucHJvcHMsZD1mLngscD1mLndpZHRoLG09Zi50cmF2ZWxsZXJXaWR0aCx5PWYuc3RhcnRJbmRleCx4PWYuZW5kSW5kZXgsdz1mLm9uQ2hhbmdlLGI9ci5wYWdlWC1vO2I+MD9iPU1hdGgubWluKGIsZCtwLW0tdSxkK3AtbS1zKTpiPDAmJihiPU1hdGgubWF4KGIsZC1zLGQtdSkpO3ZhciBnPXRoaXMuZ2V0SW5kZXgoe3N0YXJ0WDpzK2IsZW5kWDp1K2J9KTsoZy5zdGFydEluZGV4IT09eXx8Zy5lbmRJbmRleCE9PXgpJiZ3JiZ3KGcpLHRoaXMuc2V0U3RhdGUoe3N0YXJ0WDpzK2IsZW5kWDp1K2Isc2xpZGVNb3ZlU3RhcnRYOnIucGFnZVh9KX19LHtrZXk6ImhhbmRsZVRyYXZlbGxlckRyYWdTdGFydCIsdmFsdWU6ZnVuY3Rpb24ocixpKXt2YXIgbz1TSShpKT9pLmNoYW5nZWRUb3VjaGVzWzBdOmk7dGhpcy5zZXRTdGF0ZSh7aXNTbGlkZU1vdmluZzohMSxpc1RyYXZlbGxlck1vdmluZzohMCxtb3ZpbmdUcmF2ZWxsZXJJZDpyLGJydXNoTW92ZVN0YXJ0WDpvLnBhZ2VYfSksdGhpcy5hdHRhY2hEcmFnRW5kTGlzdGVuZXIoKX19LHtrZXk6ImhhbmRsZVRyYXZlbGxlck1vdmUiLHZhbHVlOmZ1bmN0aW9uKHIpe3ZhciBpPXRoaXMuc3RhdGUsbz1pLmJydXNoTW92ZVN0YXJ0WCxzPWkubW92aW5nVHJhdmVsbGVySWQsdT1pLmVuZFgsZj1pLnN0YXJ0WCxkPXRoaXMuc3RhdGVbc10scD10aGlzLnByb3BzLG09cC54LHk9cC53aWR0aCx4PXAudHJhdmVsbGVyV2lkdGgsdz1wLm9uQ2hhbmdlLGI9cC5nYXAsZz1wLmRhdGEsXz17c3RhcnRYOnRoaXMuc3RhdGUuc3RhcnRYLGVuZFg6dGhpcy5zdGF0ZS5lbmRYfSxPPXIucGFnZVgtbztPPjA/Tz1NYXRoLm1pbihPLG0reS14LWQpOk88MCYmKE89TWF0aC5tYXgoTyxtLWQpKSxfW3NdPWQrTzt2YXIgRT10aGlzLmdldEluZGV4KF8pLGo9RS5zdGFydEluZGV4LFQ9RS5lbmRJbmRleCxQPWZ1bmN0aW9uKCl7dmFyIFI9Zy5sZW5ndGgtMTtyZXR1cm4gcz09PSJzdGFydFgiJiYodT5mP2olYj09PTA6VCViPT09MCl8fHU8ZiYmVD09PVJ8fHM9PT0iZW5kWCImJih1PmY/VCViPT09MDpqJWI9PT0wKXx8dT5mJiZUPT09Un07dGhpcy5zZXRTdGF0ZSh2cih2cih7fSxzLGQrTyksImJydXNoTW92ZVN0YXJ0WCIsci5wYWdlWCksZnVuY3Rpb24oKXt3JiZQKCkmJncoRSl9KX19LHtrZXk6ImhhbmRsZVRyYXZlbGxlck1vdmVLZXlib2FyZCIsdmFsdWU6ZnVuY3Rpb24ocixpKXt2YXIgbz10aGlzLHM9dGhpcy5zdGF0ZSx1PXMuc2NhbGVWYWx1ZXMsZj1zLnN0YXJ0WCxkPXMuZW5kWCxwPXRoaXMuc3RhdGVbaV0sbT11LmluZGV4T2YocCk7aWYobSE9PS0xKXt2YXIgeT1tK3I7aWYoISh5PT09LTF8fHk+PXUubGVuZ3RoKSl7dmFyIHg9dVt5XTtpPT09InN0YXJ0WCImJng+PWR8fGk9PT0iZW5kWCImJng8PWZ8fHRoaXMuc2V0U3RhdGUodnIoe30saSx4KSxmdW5jdGlvbigpe28ucHJvcHMub25DaGFuZ2Uoby5nZXRJbmRleCh7c3RhcnRYOm8uc3RhdGUuc3RhcnRYLGVuZFg6by5zdGF0ZS5lbmRYfSkpfSl9fX19LHtrZXk6InJlbmRlckJhY2tncm91bmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIueCxvPXIueSxzPXIud2lkdGgsdT1yLmhlaWdodCxmPXIuZmlsbCxkPXIuc3Ryb2tlO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHtzdHJva2U6ZCxmaWxsOmYseDppLHk6byx3aWR0aDpzLGhlaWdodDp1fSl9fSx7a2V5OiJyZW5kZXJQYW5vcmFtYSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLGk9ci54LG89ci55LHM9ci53aWR0aCx1PXIuaGVpZ2h0LGY9ci5kYXRhLGQ9ci5jaGlsZHJlbixwPXIucGFkZGluZyxtPUMuQ2hpbGRyZW4ub25seShkKTtyZXR1cm4gbT9GLmNsb25lRWxlbWVudChtLHt4OmkseTpvLHdpZHRoOnMsaGVpZ2h0OnUsbWFyZ2luOnAsY29tcGFjdDohMCxkYXRhOmZ9KTpudWxsfX0se2tleToicmVuZGVyVHJhdmVsbGVyTGF5ZXIiLHZhbHVlOmZ1bmN0aW9uKHIsaSl7dmFyIG8scyx1PXRoaXMsZj10aGlzLnByb3BzLGQ9Zi55LHA9Zi50cmF2ZWxsZXJXaWR0aCxtPWYuaGVpZ2h0LHk9Zi50cmF2ZWxsZXIseD1mLmFyaWFMYWJlbCx3PWYuZGF0YSxiPWYuc3RhcnRJbmRleCxnPWYuZW5kSW5kZXgsXz1NYXRoLm1heChyLHRoaXMucHJvcHMueCksTz1GMShGMSh7fSwkZSh0aGlzLnByb3BzLCExKSkse30se3g6Xyx5OmQsd2lkdGg6cCxoZWlnaHQ6bX0pLEU9eHx8Ik1pbiB2YWx1ZTogIi5jb25jYXQoKG89d1tiXSk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLm5hbWUsIiwgTWF4IHZhbHVlOiAiKS5jb25jYXQoKHM9d1tnXSk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLm5hbWUpO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQse3RhYkluZGV4OjAscm9sZToic2xpZGVyIiwiYXJpYS1sYWJlbCI6RSwiYXJpYS12YWx1ZW5vdyI6cixjbGFzc05hbWU6InJlY2hhcnRzLWJydXNoLXRyYXZlbGxlciIsb25Nb3VzZUVudGVyOnRoaXMuaGFuZGxlRW50ZXJTbGlkZU9yVHJhdmVsbGVyLG9uTW91c2VMZWF2ZTp0aGlzLmhhbmRsZUxlYXZlU2xpZGVPclRyYXZlbGxlcixvbk1vdXNlRG93bjp0aGlzLnRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzW2ldLG9uVG91Y2hTdGFydDp0aGlzLnRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzW2ldLG9uS2V5RG93bjpmdW5jdGlvbihUKXtbIkFycm93TGVmdCIsIkFycm93UmlnaHQiXS5pbmNsdWRlcyhULmtleSkmJihULnByZXZlbnREZWZhdWx0KCksVC5zdG9wUHJvcGFnYXRpb24oKSx1LmhhbmRsZVRyYXZlbGxlck1vdmVLZXlib2FyZChULmtleT09PSJBcnJvd1JpZ2h0Ij8xOi0xLGkpKX0sb25Gb2N1czpmdW5jdGlvbigpe3Uuc2V0U3RhdGUoe2lzVHJhdmVsbGVyRm9jdXNlZDohMH0pfSxvbkJsdXI6ZnVuY3Rpb24oKXt1LnNldFN0YXRlKHtpc1RyYXZlbGxlckZvY3VzZWQ6ITF9KX0sc3R5bGU6e2N1cnNvcjoiY29sLXJlc2l6ZSJ9fSx0LnJlbmRlclRyYXZlbGxlcih5LE8pKX19LHtrZXk6InJlbmRlclNsaWRlIix2YWx1ZTpmdW5jdGlvbihyLGkpe3ZhciBvPXRoaXMucHJvcHMscz1vLnksdT1vLmhlaWdodCxmPW8uc3Ryb2tlLGQ9by50cmF2ZWxsZXJXaWR0aCxwPU1hdGgubWluKHIsaSkrZCxtPU1hdGgubWF4KE1hdGguYWJzKGktciktZCwwKTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJyZWN0Iix7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1icnVzaC1zbGlkZSIsb25Nb3VzZUVudGVyOnRoaXMuaGFuZGxlRW50ZXJTbGlkZU9yVHJhdmVsbGVyLG9uTW91c2VMZWF2ZTp0aGlzLmhhbmRsZUxlYXZlU2xpZGVPclRyYXZlbGxlcixvbk1vdXNlRG93bjp0aGlzLmhhbmRsZVNsaWRlRHJhZ1N0YXJ0LG9uVG91Y2hTdGFydDp0aGlzLmhhbmRsZVNsaWRlRHJhZ1N0YXJ0LHN0eWxlOntjdXJzb3I6Im1vdmUifSxzdHJva2U6Im5vbmUiLGZpbGw6ZixmaWxsT3BhY2l0eTouMix4OnAseTpzLHdpZHRoOm0saGVpZ2h0OnV9KX19LHtrZXk6InJlbmRlclRleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIuc3RhcnRJbmRleCxvPXIuZW5kSW5kZXgscz1yLnksdT1yLmhlaWdodCxmPXIudHJhdmVsbGVyV2lkdGgsZD1yLnN0cm9rZSxwPXRoaXMuc3RhdGUsbT1wLnN0YXJ0WCx5PXAuZW5kWCx4PTUsdz17cG9pbnRlckV2ZW50czoibm9uZSIsZmlsbDpkfTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGF0LHtjbGFzc05hbWU6InJlY2hhcnRzLWJydXNoLXRleHRzIn0sRi5jcmVhdGVFbGVtZW50KHhzLEttKHt0ZXh0QW5jaG9yOiJlbmQiLHZlcnRpY2FsQW5jaG9yOiJtaWRkbGUiLHg6TWF0aC5taW4obSx5KS14LHk6cyt1LzJ9LHcpLHRoaXMuZ2V0VGV4dE9mVGljayhpKSksRi5jcmVhdGVFbGVtZW50KHhzLEttKHt0ZXh0QW5jaG9yOiJzdGFydCIsdmVydGljYWxBbmNob3I6Im1pZGRsZSIseDpNYXRoLm1heChtLHkpK2YreCx5OnMrdS8yfSx3KSx0aGlzLmdldFRleHRPZlRpY2sobykpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLGk9ci5kYXRhLG89ci5jbGFzc05hbWUscz1yLmNoaWxkcmVuLHU9ci54LGY9ci55LGQ9ci53aWR0aCxwPXIuaGVpZ2h0LG09ci5hbHdheXNTaG93VGV4dCx5PXRoaXMuc3RhdGUseD15LnN0YXJ0WCx3PXkuZW5kWCxiPXkuaXNUZXh0QWN0aXZlLGc9eS5pc1NsaWRlTW92aW5nLF89eS5pc1RyYXZlbGxlck1vdmluZyxPPXkuaXNUcmF2ZWxsZXJGb2N1c2VkO2lmKCFpfHwhaS5sZW5ndGh8fCF2ZSh1KXx8IXZlKGYpfHwhdmUoZCl8fCF2ZShwKXx8ZDw9MHx8cDw9MClyZXR1cm4gbnVsbDt2YXIgRT1XZSgicmVjaGFydHMtYnJ1c2giLG8pLGo9Ri5DaGlsZHJlbi5jb3VudChzKT09PTEsVD1sY2UoInVzZXJTZWxlY3QiLCJub25lIik7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOkUsb25Nb3VzZUxlYXZlOnRoaXMuaGFuZGxlTGVhdmVXcmFwcGVyLG9uVG91Y2hNb3ZlOnRoaXMuaGFuZGxlVG91Y2hNb3ZlLHN0eWxlOlR9LHRoaXMucmVuZGVyQmFja2dyb3VuZCgpLGomJnRoaXMucmVuZGVyUGFub3JhbWEoKSx0aGlzLnJlbmRlclNsaWRlKHgsdyksdGhpcy5yZW5kZXJUcmF2ZWxsZXJMYXllcih4LCJzdGFydFgiKSx0aGlzLnJlbmRlclRyYXZlbGxlckxheWVyKHcsImVuZFgiKSwoYnx8Z3x8X3x8T3x8bSkmJnRoaXMucmVuZGVyVGV4dCgpKX19XSxbe2tleToicmVuZGVyRGVmYXVsdFRyYXZlbGxlciIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9ci54LG89ci55LHM9ci53aWR0aCx1PXIuaGVpZ2h0LGY9ci5zdHJva2UsZD1NYXRoLmZsb29yKG8rdS8yKS0xO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoRi5GcmFnbWVudCxudWxsLEYuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6aSx5Om8sd2lkdGg6cyxoZWlnaHQ6dSxmaWxsOmYsc3Ryb2tlOiJub25lIn0pLEYuY3JlYXRlRWxlbWVudCgibGluZSIse3gxOmkrMSx5MTpkLHgyOmkrcy0xLHkyOmQsZmlsbDoibm9uZSIsc3Ryb2tlOiIjZmZmIn0pLEYuY3JlYXRlRWxlbWVudCgibGluZSIse3gxOmkrMSx5MTpkKzIseDI6aStzLTEseTI6ZCsyLGZpbGw6Im5vbmUiLHN0cm9rZToiI2ZmZiJ9KSl9fSx7a2V5OiJyZW5kZXJUcmF2ZWxsZXIiLHZhbHVlOmZ1bmN0aW9uKHIsaSl7dmFyIG87cmV0dXJuIEYuaXNWYWxpZEVsZW1lbnQocik/bz1GLmNsb25lRWxlbWVudChyLGkpOkhlKHIpP289cihpKTpvPXQucmVuZGVyRGVmYXVsdFRyYXZlbGxlcihpKSxvfX0se2tleToiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIix2YWx1ZTpmdW5jdGlvbihyLGkpe3ZhciBvPXIuZGF0YSxzPXIud2lkdGgsdT1yLngsZj1yLnRyYXZlbGxlcldpZHRoLGQ9ci51cGRhdGVJZCxwPXIuc3RhcnRJbmRleCxtPXIuZW5kSW5kZXg7aWYobyE9PWkucHJldkRhdGF8fGQhPT1pLnByZXZVcGRhdGVJZClyZXR1cm4gRjEoe3ByZXZEYXRhOm8scHJldlRyYXZlbGxlcldpZHRoOmYscHJldlVwZGF0ZUlkOmQscHJldlg6dSxwcmV2V2lkdGg6c30sbyYmby5sZW5ndGg/eWNlKHtkYXRhOm8sd2lkdGg6cyx4OnUsdHJhdmVsbGVyV2lkdGg6ZixzdGFydEluZGV4OnAsZW5kSW5kZXg6bX0pOntzY2FsZTpudWxsLHNjYWxlVmFsdWVzOm51bGx9KTtpZihpLnNjYWxlJiYocyE9PWkucHJldldpZHRofHx1IT09aS5wcmV2WHx8ZiE9PWkucHJldlRyYXZlbGxlcldpZHRoKSl7aS5zY2FsZS5yYW5nZShbdSx1K3MtZl0pO3ZhciB5PWkuc2NhbGUuZG9tYWluKCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBpLnNjYWxlKHgpfSk7cmV0dXJue3ByZXZEYXRhOm8scHJldlRyYXZlbGxlcldpZHRoOmYscHJldlVwZGF0ZUlkOmQscHJldlg6dSxwcmV2V2lkdGg6cyxzdGFydFg6aS5zY2FsZShyLnN0YXJ0SW5kZXgpLGVuZFg6aS5zY2FsZShyLmVuZEluZGV4KSxzY2FsZVZhbHVlczp5fX1yZXR1cm4gbnVsbH19LHtrZXk6ImdldEluZGV4SW5SYW5nZSIsdmFsdWU6ZnVuY3Rpb24ocixpKXtmb3IodmFyIG89ci5sZW5ndGgscz0wLHU9by0xO3Utcz4xOyl7dmFyIGY9TWF0aC5mbG9vcigocyt1KS8yKTtyW2ZdPmk/dT1mOnM9Zn1yZXR1cm4gaT49clt1XT91OnN9fV0pfSkoQy5QdXJlQ29tcG9uZW50KTt2cihkdSwiZGlzcGxheU5hbWUiLCJCcnVzaCIpO3ZyKGR1LCJkZWZhdWx0UHJvcHMiLHtoZWlnaHQ6NDAsdHJhdmVsbGVyV2lkdGg6NSxnYXA6MSxmaWxsOiIjZmZmIixzdHJva2U6IiM2NjYiLHBhZGRpbmc6e3RvcDoxLHJpZ2h0OjEsYm90dG9tOjEsbGVmdDoxfSxsZWF2ZVRpbWVPdXQ6MWUzLGFsd2F5c1Nob3dUZXh0OiExfSk7dmFyIEgxLEFJO2Z1bmN0aW9uIHZjZSgpe2lmKEFJKXJldHVybiBIMTtBST0xO3ZhciBlPVdPKCk7ZnVuY3Rpb24gdChuLHIpe3ZhciBpO3JldHVybiBlKG4sZnVuY3Rpb24obyxzLHUpe3JldHVybiBpPXIobyxzLHUpLCFpfSksISFpfXJldHVybiBIMT10LEgxfXZhciBHMSxfSTtmdW5jdGlvbiBnY2UoKXtpZihfSSlyZXR1cm4gRzE7X0k9MTt2YXIgZT1EVigpLHQ9RGkoKSxuPXZjZSgpLHI9b3IoKSxpPVh5KCk7ZnVuY3Rpb24gbyhzLHUsZil7dmFyIGQ9cihzKT9lOm47cmV0dXJuIGYmJmkocyx1LGYpJiYodT12b2lkIDApLGQocyx0KHUsMykpfXJldHVybiBHMT1vLEcxfXZhciBiY2U9Z2NlKCk7Y29uc3QgeGNlPU90KGJjZSk7dmFyIEVpPWZ1bmN0aW9uKHQsbil7dmFyIHI9dC5hbHdheXNTaG93LGk9dC5pZk92ZXJmbG93O3JldHVybiByJiYoaT0iZXh0ZW5kRG9tYWluIiksaT09PW59LEsxLE9JO2Z1bmN0aW9uIHdjZSgpe2lmKE9JKXJldHVybiBLMTtPST0xO3ZhciBlPUpWKCk7ZnVuY3Rpb24gdChuLHIsaSl7cj09Il9fcHJvdG9fXyImJmU/ZShuLHIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmksd3JpdGFibGU6ITB9KTpuW3JdPWl9cmV0dXJuIEsxPXQsSzF9dmFyIFcxLFRJO2Z1bmN0aW9uIFNjZSgpe2lmKFRJKXJldHVybiBXMTtUST0xO3ZhciBlPXdjZSgpLHQ9WlYoKSxuPURpKCk7ZnVuY3Rpb24gcihpLG8pe3ZhciBzPXt9O3JldHVybiBvPW4obywzKSx0KGksZnVuY3Rpb24odSxmLGQpe2UocyxmLG8odSxmLGQpKX0pLHN9cmV0dXJuIFcxPXIsVzF9dmFyIEFjZT1TY2UoKTtjb25zdCBfY2U9T3QoQWNlKTt2YXIgWTEsRUk7ZnVuY3Rpb24gT2NlKCl7aWYoRUkpcmV0dXJuIFkxO0VJPTE7ZnVuY3Rpb24gZSh0LG4pe2Zvcih2YXIgcj0tMSxpPXQ9PW51bGw/MDp0Lmxlbmd0aDsrK3I8aTspaWYoIW4odFtyXSxyLHQpKXJldHVybiExO3JldHVybiEwfXJldHVybiBZMT1lLFkxfXZhciBYMSxDSTtmdW5jdGlvbiBUY2UoKXtpZihDSSlyZXR1cm4gWDE7Q0k9MTt2YXIgZT1XTygpO2Z1bmN0aW9uIHQobixyKXt2YXIgaT0hMDtyZXR1cm4gZShuLGZ1bmN0aW9uKG8scyx1KXtyZXR1cm4gaT0hIXIobyxzLHUpLGl9KSxpfXJldHVybiBYMT10LFgxfXZhciBaMSxqSTtmdW5jdGlvbiBFY2UoKXtpZihqSSlyZXR1cm4gWjE7akk9MTt2YXIgZT1PY2UoKSx0PVRjZSgpLG49RGkoKSxyPW9yKCksaT1YeSgpO2Z1bmN0aW9uIG8ocyx1LGYpe3ZhciBkPXIocyk/ZTp0O3JldHVybiBmJiZpKHMsdSxmKSYmKHU9dm9pZCAwKSxkKHMsbih1LDMpKX1yZXR1cm4gWjE9byxaMX12YXIgQ2NlPUVjZSgpO2NvbnN0IGpjZT1PdChDY2UpO3ZhciBQY2U9WyJ4IiwieSJdO2Z1bmN0aW9uIHNkKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIHNkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxzZChlKX1mdW5jdGlvbiBXQSgpe3JldHVybiBXQT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LFdBLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBQSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHRmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP1BJKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtNY2UoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6UEkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIE1jZShlLHQsbil7cmV0dXJuIHQ9UmNlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gUmNlKGUpe3ZhciB0PU5jZShlLCJzdHJpbmciKTtyZXR1cm4gc2QodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBOY2UoZSx0KXtpZihzZChlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihzZChyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIGtjZShlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49RGNlKGUsdCkscixpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKylyPW9baV0sISh0LmluZGV4T2Yocik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKG5bcl09ZVtyXSl9cmV0dXJuIG59ZnVuY3Rpb24gRGNlKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7aWYodC5pbmRleE9mKHIpPj0wKWNvbnRpbnVlO25bcl09ZVtyXX1yZXR1cm4gbn1mdW5jdGlvbiBMY2UoZSx0KXt2YXIgbj1lLngscj1lLnksaT1rY2UoZSxQY2UpLG89IiIuY29uY2F0KG4pLHM9cGFyc2VJbnQobywxMCksdT0iIi5jb25jYXQociksZj1wYXJzZUludCh1LDEwKSxkPSIiLmNvbmNhdCh0LmhlaWdodHx8aS5oZWlnaHQpLHA9cGFyc2VJbnQoZCwxMCksbT0iIi5jb25jYXQodC53aWR0aHx8aS53aWR0aCkseT1wYXJzZUludChtLDEwKTtyZXR1cm4gdGYodGYodGYodGYodGYoe30sdCksaSkscz97eDpzfTp7fSksZj97eTpmfTp7fSkse30se2hlaWdodDpwLHdpZHRoOnksbmFtZTp0Lm5hbWUscmFkaXVzOnQucmFkaXVzfSl9ZnVuY3Rpb24gTUkoZSl7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChNcSxXQSh7c2hhcGVUeXBlOiJyZWN0YW5nbGUiLHByb3BUcmFuc2Zvcm1lcjpMY2UsYWN0aXZlQ2xhc3NOYW1lOiJyZWNoYXJ0cy1hY3RpdmUtYmFyIn0sZSkpfXZhciBJY2U9ZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOjA7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7aWYodHlwZW9mIHQ9PSJudW1iZXIiKXJldHVybiB0O3ZhciBvPXZlKHIpfHxyWihyKTtyZXR1cm4gbz90KHIsaSk6KG98fEFzKCksbil9fSwkY2U9WyJ2YWx1ZSIsImJhY2tncm91bmQiXSwkcTtmdW5jdGlvbiBodShlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBodT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0saHUoZSl9ZnVuY3Rpb24gQmNlKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1WY2UoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBWY2UoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIFltKCl7cmV0dXJuIFltPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sWW0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFJJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gcm4oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/UkkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe0phKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlJJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBxY2UoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBOSShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsVnEoci5rZXkpLHIpfX1mdW5jdGlvbiBVY2UoZSx0LG4pe3JldHVybiB0JiZOSShlLnByb3RvdHlwZSx0KSxuJiZOSShlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gemNlKGUsdCxuKXtyZXR1cm4gdD1YbSh0KSxGY2UoZSxCcSgpP1JlZmxlY3QuY29uc3RydWN0KHQsbnx8W10sWG0oZSkuY29uc3RydWN0b3IpOnQuYXBwbHkoZSxuKSl9ZnVuY3Rpb24gRmNlKGUsdCl7aWYodCYmKGh1KHQpPT09Im9iamVjdCJ8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKSlyZXR1cm4gdDtpZih0IT09dm9pZCAwKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIEhjZShlKX1mdW5jdGlvbiBIY2UoZSl7aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIEJxKCl7dHJ5e3ZhciBlPSFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKX1jYXRjaHt9cmV0dXJuKEJxPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSkoKX1mdW5jdGlvbiBYbShlKXtyZXR1cm4gWG09T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obil7cmV0dXJuIG4uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9LFhtKGUpfWZ1bmN0aW9uIEdjZShlLHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iJiZ0IT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZZQShlLHQpfWZ1bmN0aW9uIFlBKGUsdCl7cmV0dXJuIFlBPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHIsaSl7cmV0dXJuIHIuX19wcm90b19fPWkscn0sWUEoZSx0KX1mdW5jdGlvbiBKYShlLHQsbil7cmV0dXJuIHQ9VnEodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBWcShlKXt2YXIgdD1LY2UoZSwic3RyaW5nIik7cmV0dXJuIGh1KHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gS2NlKGUsdCl7aWYoaHUoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoaHUocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX12YXIga2Q9KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbjtxY2UodGhpcyx0KTtmb3IodmFyIHI9YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShyKSxvPTA7bzxyO28rKylpW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gbj16Y2UodGhpcyx0LFtdLmNvbmNhdChpKSksSmEobiwic3RhdGUiLHtpc0FuaW1hdGlvbkZpbmlzaGVkOiExfSksSmEobiwiaWQiLENzKCJyZWNoYXJ0cy1iYXItIikpLEphKG4sImhhbmRsZUFuaW1hdGlvbkVuZCIsZnVuY3Rpb24oKXt2YXIgcz1uLnByb3BzLm9uQW5pbWF0aW9uRW5kO24uc2V0U3RhdGUoe2lzQW5pbWF0aW9uRmluaXNoZWQ6ITB9KSxzJiZzKCl9KSxKYShuLCJoYW5kbGVBbmltYXRpb25TdGFydCIsZnVuY3Rpb24oKXt2YXIgcz1uLnByb3BzLm9uQW5pbWF0aW9uU3RhcnQ7bi5zZXRTdGF0ZSh7aXNBbmltYXRpb25GaW5pc2hlZDohMX0pLHMmJnMoKX0pLG59cmV0dXJuIEdjZSh0LGUpLFVjZSh0LFt7a2V5OiJyZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9dGhpcyxvPXRoaXMucHJvcHMscz1vLnNoYXBlLHU9by5kYXRhS2V5LGY9by5hY3RpdmVJbmRleCxkPW8uYWN0aXZlQmFyLHA9JGUodGhpcy5wcm9wcywhMSk7cmV0dXJuIHImJnIubWFwKGZ1bmN0aW9uKG0seSl7dmFyIHg9eT09PWYsdz14P2Q6cyxiPXJuKHJuKHJuKHt9LHApLG0pLHt9LHtpc0FjdGl2ZTp4LG9wdGlvbjp3LGluZGV4OnksZGF0YUtleTp1LG9uQW5pbWF0aW9uU3RhcnQ6aS5oYW5kbGVBbmltYXRpb25TdGFydCxvbkFuaW1hdGlvbkVuZDppLmhhbmRsZUFuaW1hdGlvbkVuZH0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQsWW0oe2NsYXNzTmFtZToicmVjaGFydHMtYmFyLXJlY3RhbmdsZSJ9LGJzKGkucHJvcHMsbSx5KSx7a2V5OiJyZWN0YW5nbGUtIi5jb25jYXQobT8ueCwiLSIpLmNvbmNhdChtPy55LCItIikuY29uY2F0KG0/LnZhbHVlLCItIikuY29uY2F0KHkpfSksRi5jcmVhdGVFbGVtZW50KE1JLGIpKX0pfX0se2tleToicmVuZGVyUmVjdGFuZ2xlc1dpdGhBbmltYXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxpPXRoaXMucHJvcHMsbz1pLmRhdGEscz1pLmxheW91dCx1PWkuaXNBbmltYXRpb25BY3RpdmUsZj1pLmFuaW1hdGlvbkJlZ2luLGQ9aS5hbmltYXRpb25EdXJhdGlvbixwPWkuYW5pbWF0aW9uRWFzaW5nLG09aS5hbmltYXRpb25JZCx5PXRoaXMuc3RhdGUucHJldkRhdGE7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChsaSx7YmVnaW46ZixkdXJhdGlvbjpkLGlzQWN0aXZlOnUsZWFzaW5nOnAsZnJvbTp7dDowfSx0bzp7dDoxfSxrZXk6ImJhci0iLmNvbmNhdChtKSxvbkFuaW1hdGlvbkVuZDp0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZCxvbkFuaW1hdGlvblN0YXJ0OnRoaXMuaGFuZGxlQW5pbWF0aW9uU3RhcnR9LGZ1bmN0aW9uKHgpe3ZhciB3PXgudCxiPW8ubWFwKGZ1bmN0aW9uKGcsXyl7dmFyIE89eSYmeVtfXTtpZihPKXt2YXIgRT15bihPLngsZy54KSxqPXluKE8ueSxnLnkpLFQ9eW4oTy53aWR0aCxnLndpZHRoKSxQPXluKE8uaGVpZ2h0LGcuaGVpZ2h0KTtyZXR1cm4gcm4ocm4oe30sZykse30se3g6RSh3KSx5Omoodyksd2lkdGg6VCh3KSxoZWlnaHQ6UCh3KX0pfWlmKHM9PT0iaG9yaXpvbnRhbCIpe3ZhciBOPXluKDAsZy5oZWlnaHQpLFI9Tih3KTtyZXR1cm4gcm4ocm4oe30sZykse30se3k6Zy55K2cuaGVpZ2h0LVIsaGVpZ2h0OlJ9KX12YXIgST15bigwLGcud2lkdGgpLFY9SSh3KTtyZXR1cm4gcm4ocm4oe30sZykse30se3dpZHRoOlZ9KX0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQsbnVsbCxyLnJlbmRlclJlY3RhbmdsZXNTdGF0aWNhbGx5KGIpKX0pfX0se2tleToicmVuZGVyUmVjdGFuZ2xlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLGk9ci5kYXRhLG89ci5pc0FuaW1hdGlvbkFjdGl2ZSxzPXRoaXMuc3RhdGUucHJldkRhdGE7cmV0dXJuIG8mJmkmJmkubGVuZ3RoJiYoIXN8fCF3cyhzLGkpKT90aGlzLnJlbmRlclJlY3RhbmdsZXNXaXRoQW5pbWF0aW9uKCk6dGhpcy5yZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseShpKX19LHtrZXk6InJlbmRlckJhY2tncm91bmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxpPXRoaXMucHJvcHMsbz1pLmRhdGEscz1pLmRhdGFLZXksdT1pLmFjdGl2ZUluZGV4LGY9JGUodGhpcy5wcm9wcy5iYWNrZ3JvdW5kLCExKTtyZXR1cm4gby5tYXAoZnVuY3Rpb24oZCxwKXtkLnZhbHVlO3ZhciBtPWQuYmFja2dyb3VuZCx5PUJjZShkLCRjZSk7aWYoIW0pcmV0dXJuIG51bGw7dmFyIHg9cm4ocm4ocm4ocm4ocm4oe30seSkse30se2ZpbGw6IiNlZWUifSxtKSxmKSxicyhyLnByb3BzLGQscCkpLHt9LHtvbkFuaW1hdGlvblN0YXJ0OnIuaGFuZGxlQW5pbWF0aW9uU3RhcnQsb25BbmltYXRpb25FbmQ6ci5oYW5kbGVBbmltYXRpb25FbmQsZGF0YUtleTpzLGluZGV4OnAsY2xhc3NOYW1lOiJyZWNoYXJ0cy1iYXItYmFja2dyb3VuZC1yZWN0YW5nbGUifSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChNSSxZbSh7a2V5OiJiYWNrZ3JvdW5kLWJhci0iLmNvbmNhdChwKSxvcHRpb246ci5wcm9wcy5iYWNrZ3JvdW5kLGlzQWN0aXZlOnA9PT11fSx4KSl9KX19LHtrZXk6InJlbmRlckVycm9yQmFyIix2YWx1ZTpmdW5jdGlvbihyLGkpe2lmKHRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUmJiF0aGlzLnN0YXRlLmlzQW5pbWF0aW9uRmluaXNoZWQpcmV0dXJuIG51bGw7dmFyIG89dGhpcy5wcm9wcyxzPW8uZGF0YSx1PW8ueEF4aXMsZj1vLnlBeGlzLGQ9by5sYXlvdXQscD1vLmNoaWxkcmVuLG09d3IocCxSZCk7aWYoIW0pcmV0dXJuIG51bGw7dmFyIHk9ZD09PSJ2ZXJ0aWNhbCI/c1swXS5oZWlnaHQvMjpzWzBdLndpZHRoLzIseD1mdW5jdGlvbihnLF8pe3ZhciBPPUFycmF5LmlzQXJyYXkoZy52YWx1ZSk/Zy52YWx1ZVsxXTpnLnZhbHVlO3JldHVybnt4OmcueCx5OmcueSx2YWx1ZTpPLGVycm9yVmFsOkp0KGcsXyl9fSx3PXtjbGlwUGF0aDpyPyJ1cmwoI2NsaXBQYXRoLSIuY29uY2F0KGksIikiKTpudWxsfTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGF0LHcsbS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIEYuY2xvbmVFbGVtZW50KGIse2tleToiZXJyb3ItYmFyLSIuY29uY2F0KGksIi0iKS5jb25jYXQoYi5wcm9wcy5kYXRhS2V5KSxkYXRhOnMseEF4aXM6dSx5QXhpczpmLGxheW91dDpkLG9mZnNldDp5LGRhdGFQb2ludEZvcm1hdHRlcjp4fSl9KSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIuaGlkZSxvPXIuZGF0YSxzPXIuY2xhc3NOYW1lLHU9ci54QXhpcyxmPXIueUF4aXMsZD1yLmxlZnQscD1yLnRvcCxtPXIud2lkdGgseT1yLmhlaWdodCx4PXIuaXNBbmltYXRpb25BY3RpdmUsdz1yLmJhY2tncm91bmQsYj1yLmlkO2lmKGl8fCFvfHwhby5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGc9dGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkLF89V2UoInJlY2hhcnRzLWJhciIscyksTz11JiZ1LmFsbG93RGF0YU92ZXJmbG93LEU9ZiYmZi5hbGxvd0RhdGFPdmVyZmxvdyxqPU98fEUsVD1HZShiKT90aGlzLmlkOmI7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOl99LE98fEU/Ri5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEYuY3JlYXRlRWxlbWVudCgiY2xpcFBhdGgiLHtpZDoiY2xpcFBhdGgtIi5jb25jYXQoVCl9LEYuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6Tz9kOmQtbS8yLHk6RT9wOnAteS8yLHdpZHRoOk8/bTptKjIsaGVpZ2h0OkU/eTp5KjJ9KSkpOm51bGwsRi5jcmVhdGVFbGVtZW50KGF0LHtjbGFzc05hbWU6InJlY2hhcnRzLWJhci1yZWN0YW5nbGVzIixjbGlwUGF0aDpqPyJ1cmwoI2NsaXBQYXRoLSIuY29uY2F0KFQsIikiKTpudWxsfSx3P3RoaXMucmVuZGVyQmFja2dyb3VuZCgpOm51bGwsdGhpcy5yZW5kZXJSZWN0YW5nbGVzKCkpLHRoaXMucmVuZGVyRXJyb3JCYXIoaixUKSwoIXh8fGcpJiZUaS5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcyxvKSl9fV0sW3trZXk6ImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsdmFsdWU6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5hbmltYXRpb25JZCE9PWkucHJldkFuaW1hdGlvbklkP3twcmV2QW5pbWF0aW9uSWQ6ci5hbmltYXRpb25JZCxjdXJEYXRhOnIuZGF0YSxwcmV2RGF0YTppLmN1ckRhdGF9OnIuZGF0YSE9PWkuY3VyRGF0YT97Y3VyRGF0YTpyLmRhdGF9Om51bGx9fV0pfSkoQy5QdXJlQ29tcG9uZW50KTskcT1rZDtKYShrZCwiZGlzcGxheU5hbWUiLCJCYXIiKTtKYShrZCwiZGVmYXVsdFByb3BzIix7eEF4aXNJZDowLHlBeGlzSWQ6MCxsZWdlbmRUeXBlOiJyZWN0IixtaW5Qb2ludFNpemU6MCxoaWRlOiExLGRhdGE6W10sbGF5b3V0OiJ2ZXJ0aWNhbCIsYWN0aXZlQmFyOiExLGlzQW5pbWF0aW9uQWN0aXZlOiFiby5pc1NzcixhbmltYXRpb25CZWdpbjowLGFuaW1hdGlvbkR1cmF0aW9uOjQwMCxhbmltYXRpb25FYXNpbmc6ImVhc2UifSk7SmEoa2QsImdldENvbXBvc2VkRGF0YSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcm9wcyxuPWUuaXRlbSxyPWUuYmFyUG9zaXRpb24saT1lLmJhbmRTaXplLG89ZS54QXhpcyxzPWUueUF4aXMsdT1lLnhBeGlzVGlja3MsZj1lLnlBeGlzVGlja3MsZD1lLnN0YWNrZWREYXRhLHA9ZS5kYXRhU3RhcnRJbmRleCxtPWUuZGlzcGxheWVkRGF0YSx5PWUub2Zmc2V0LHg9dmFlKHIsbik7aWYoIXgpcmV0dXJuIG51bGw7dmFyIHc9dC5sYXlvdXQsYj1uLnR5cGUuZGVmYXVsdFByb3BzLGc9YiE9PXZvaWQgMD9ybihybih7fSxiKSxuLnByb3BzKTpuLnByb3BzLF89Zy5kYXRhS2V5LE89Zy5jaGlsZHJlbixFPWcubWluUG9pbnRTaXplLGo9dz09PSJob3Jpem9udGFsIj9zOm8sVD1kP2ouc2NhbGUuZG9tYWluKCk6bnVsbCxQPV9hZSh7bnVtZXJpY0F4aXM6an0pLE49d3IoTyxaeSksUj1tLm1hcChmdW5jdGlvbihJLFYpe3ZhciBCLCQseixVLEssTDtkP0I9Z2FlKGRbcCtWXSxUKTooQj1KdChJLF8pLEFycmF5LmlzQXJyYXkoQil8fChCPVtQLEJdKSk7dmFyIFc9SWNlKEUsJHEuZGVmYXVsdFByb3BzLm1pblBvaW50U2l6ZSkoQlsxXSxWKTtpZih3PT09Imhvcml6b250YWwiKXt2YXIgSCxlZT1bcy5zY2FsZShCWzBdKSxzLnNjYWxlKEJbMV0pXSxrPWVlWzBdLFo9ZWVbMV07JD1zTCh7YXhpczpvLHRpY2tzOnUsYmFuZFNpemU6aSxvZmZzZXQ6eC5vZmZzZXQsZW50cnk6SSxpbmRleDpWfSksej0oSD1aPz9rKSE9PW51bGwmJkghPT12b2lkIDA/SDp2b2lkIDAsVT14LnNpemU7dmFyIHRlPWstWjtpZihLPU51bWJlci5pc05hTih0ZSk/MDp0ZSxMPXt4OiQseTpzLnksd2lkdGg6VSxoZWlnaHQ6cy5oZWlnaHR9LE1hdGguYWJzKFcpPjAmJk1hdGguYWJzKEspPE1hdGguYWJzKFcpKXt2YXIgb2U9SG4oS3x8VykqKE1hdGguYWJzKFcpLU1hdGguYWJzKEspKTt6LT1vZSxLKz1vZX19ZWxzZXt2YXIgbWU9W28uc2NhbGUoQlswXSksby5zY2FsZShCWzFdKV0sYmU9bWVbMF0sZ2U9bWVbMV07aWYoJD1iZSx6PXNMKHtheGlzOnMsdGlja3M6ZixiYW5kU2l6ZTppLG9mZnNldDp4Lm9mZnNldCxlbnRyeTpJLGluZGV4OlZ9KSxVPWdlLWJlLEs9eC5zaXplLEw9e3g6by54LHk6eix3aWR0aDpvLndpZHRoLGhlaWdodDpLfSxNYXRoLmFicyhXKT4wJiZNYXRoLmFicyhVKTxNYXRoLmFicyhXKSl7dmFyIF9lPUhuKFV8fFcpKihNYXRoLmFicyhXKS1NYXRoLmFicyhVKSk7VSs9X2V9fXJldHVybiBybihybihybih7fSxJKSx7fSx7eDokLHk6eix3aWR0aDpVLGhlaWdodDpLLHZhbHVlOmQ/QjpCWzFdLHBheWxvYWQ6SSxiYWNrZ3JvdW5kOkx9LE4mJk5bVl0mJk5bVl0ucHJvcHMpLHt9LHt0b29sdGlwUGF5bG9hZDpbaHEobixJKV0sdG9vbHRpcFBvc2l0aW9uOnt4OiQrVS8yLHk6eitLLzJ9fSl9KTtyZXR1cm4gcm4oe2RhdGE6UixsYXlvdXQ6d30seSl9KTtmdW5jdGlvbiBsZChlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBsZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sbGQoZSl9ZnVuY3Rpb24gV2NlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24ga0koZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHFxKHIua2V5KSxyKX19ZnVuY3Rpb24gWWNlKGUsdCxuKXtyZXR1cm4gdCYma0koZS5wcm90b3R5cGUsdCksbiYma0koZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIERJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gcmkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/REkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3B2KGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkRJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBwdihlLHQsbil7cmV0dXJuIHQ9cXEodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBxcShlKXt2YXIgdD1YY2UoZSwic3RyaW5nIik7cmV0dXJuIGxkKHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gWGNlKGUsdCl7aWYobGQoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYobGQocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX12YXIgVXE9ZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgcz10LndpZHRoLHU9dC5oZWlnaHQsZj10LmxheW91dCxkPXQuY2hpbGRyZW4scD1PYmplY3Qua2V5cyhuKSxtPXtsZWZ0OnIubGVmdCxsZWZ0TWlycm9yOnIubGVmdCxyaWdodDpzLXIucmlnaHQscmlnaHRNaXJyb3I6cy1yLnJpZ2h0LHRvcDpyLnRvcCx0b3BNaXJyb3I6ci50b3AsYm90dG9tOnUtci5ib3R0b20sYm90dG9tTWlycm9yOnUtci5ib3R0b219LHk9ISFncihkLGtkKTtyZXR1cm4gcC5yZWR1Y2UoZnVuY3Rpb24oeCx3KXt2YXIgYj1uW3ddLGc9Yi5vcmllbnRhdGlvbixfPWIuZG9tYWluLE89Yi5wYWRkaW5nLEU9Tz09PXZvaWQgMD97fTpPLGo9Yi5taXJyb3IsVD1iLnJldmVyc2VkLFA9IiIuY29uY2F0KGcpLmNvbmNhdChqPyJNaXJyb3IiOiIiKSxOLFIsSSxWLEI7aWYoYi50eXBlPT09Im51bWJlciImJihiLnBhZGRpbmc9PT0iZ2FwInx8Yi5wYWRkaW5nPT09Im5vLWdhcCIpKXt2YXIgJD1fWzFdLV9bMF0sej0xLzAsVT1iLmNhdGVnb3JpY2FsRG9tYWluLnNvcnQob1opO2lmKFUuZm9yRWFjaChmdW5jdGlvbihtZSxiZSl7YmU+MCYmKHo9TWF0aC5taW4oKG1lfHwwKS0oVVtiZS0xXXx8MCkseikpfSksTnVtYmVyLmlzRmluaXRlKHopKXt2YXIgSz16LyQsTD1iLmxheW91dD09PSJ2ZXJ0aWNhbCI/ci5oZWlnaHQ6ci53aWR0aDtpZihiLnBhZGRpbmc9PT0iZ2FwIiYmKE49SypMLzIpLGIucGFkZGluZz09PSJuby1nYXAiKXt2YXIgVz1Hbih0LmJhckNhdGVnb3J5R2FwLEsqTCksSD1LKkwvMjtOPUgtVy0oSC1XKS9MKld9fX1pPT09InhBeGlzIj9SPVtyLmxlZnQrKEUubGVmdHx8MCkrKE58fDApLHIubGVmdCtyLndpZHRoLShFLnJpZ2h0fHwwKS0oTnx8MCldOmk9PT0ieUF4aXMiP1I9Zj09PSJob3Jpem9udGFsIj9bci50b3Arci5oZWlnaHQtKEUuYm90dG9tfHwwKSxyLnRvcCsoRS50b3B8fDApXTpbci50b3ArKEUudG9wfHwwKSsoTnx8MCksci50b3Arci5oZWlnaHQtKEUuYm90dG9tfHwwKS0oTnx8MCldOlI9Yi5yYW5nZSxUJiYoUj1bUlsxXSxSWzBdXSk7dmFyIGVlPXVxKGIsbyx5KSxrPWVlLnNjYWxlLFo9ZWUucmVhbFNjYWxlVHlwZTtrLmRvbWFpbihfKS5yYW5nZShSKSxjcShrKTt2YXIgdGU9ZnEoayxyaShyaSh7fSxiKSx7fSx7cmVhbFNjYWxlVHlwZTpafSkpO2k9PT0ieEF4aXMiPyhCPWc9PT0idG9wIiYmIWp8fGc9PT0iYm90dG9tIiYmaixJPXIubGVmdCxWPW1bUF0tQipiLmhlaWdodCk6aT09PSJ5QXhpcyImJihCPWc9PT0ibGVmdCImJiFqfHxnPT09InJpZ2h0IiYmaixJPW1bUF0tQipiLndpZHRoLFY9ci50b3ApO3ZhciBvZT1yaShyaShyaSh7fSxiKSx0ZSkse30se3JlYWxTY2FsZVR5cGU6Wix4OkkseTpWLHNjYWxlOmssd2lkdGg6aT09PSJ4QXhpcyI/ci53aWR0aDpiLndpZHRoLGhlaWdodDppPT09InlBeGlzIj9yLmhlaWdodDpiLmhlaWdodH0pO3JldHVybiBvZS5iYW5kU2l6ZT1ObShvZSx0ZSksIWIuaGlkZSYmaT09PSJ4QXhpcyI/bVtQXSs9KEI/LTE6MSkqb2UuaGVpZ2h0OmIuaGlkZXx8KG1bUF0rPShCPy0xOjEpKm9lLndpZHRoKSxyaShyaSh7fSx4KSx7fSxwdih7fSx3LG9lKSl9LHt9KX0senE9ZnVuY3Rpb24odCxuKXt2YXIgcj10LngsaT10Lnksbz1uLngscz1uLnk7cmV0dXJue3g6TWF0aC5taW4ocixvKSx5Ok1hdGgubWluKGkscyksd2lkdGg6TWF0aC5hYnMoby1yKSxoZWlnaHQ6TWF0aC5hYnMocy1pKX19LFpjZT1mdW5jdGlvbih0KXt2YXIgbj10LngxLHI9dC55MSxpPXQueDIsbz10LnkyO3JldHVybiB6cSh7eDpuLHk6cn0se3g6aSx5Om99KX0sRnE9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtXY2UodGhpcyxlKSx0aGlzLnNjYWxlPXR9cmV0dXJuIFljZShlLFt7a2V5OiJkb21haW4iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbn19LHtrZXk6InJhbmdlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY2FsZS5yYW5nZX19LHtrZXk6InJhbmdlTWluIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZSgpWzBdfX0se2tleToicmFuZ2VNYXgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlKClbMV19fSx7a2V5OiJiYW5kd2lkdGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjYWxlLmJhbmR3aWR0aH19LHtrZXk6ImFwcGx5Iix2YWx1ZTpmdW5jdGlvbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30saT1yLmJhbmRBd2FyZSxvPXIucG9zaXRpb247aWYobiE9PXZvaWQgMCl7aWYobylzd2l0Y2gobyl7Y2FzZSJzdGFydCI6cmV0dXJuIHRoaXMuc2NhbGUobik7Y2FzZSJtaWRkbGUiOnt2YXIgcz10aGlzLmJhbmR3aWR0aD90aGlzLmJhbmR3aWR0aCgpLzI6MDtyZXR1cm4gdGhpcy5zY2FsZShuKStzfWNhc2UiZW5kIjp7dmFyIHU9dGhpcy5iYW5kd2lkdGg/dGhpcy5iYW5kd2lkdGgoKTowO3JldHVybiB0aGlzLnNjYWxlKG4pK3V9ZGVmYXVsdDpyZXR1cm4gdGhpcy5zY2FsZShuKX1pZihpKXt2YXIgZj10aGlzLmJhbmR3aWR0aD90aGlzLmJhbmR3aWR0aCgpLzI6MDtyZXR1cm4gdGhpcy5zY2FsZShuKStmfXJldHVybiB0aGlzLnNjYWxlKG4pfX19LHtrZXk6ImlzSW5SYW5nZSIsdmFsdWU6ZnVuY3Rpb24obil7dmFyIHI9dGhpcy5yYW5nZSgpLGk9clswXSxvPXJbci5sZW5ndGgtMV07cmV0dXJuIGk8PW8/bj49aSYmbjw9bzpuPj1vJiZuPD1pfX1dLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKG4pe3JldHVybiBuZXcgZShuKX19XSl9KSgpO3B2KEZxLCJFUFMiLDFlLTQpO3ZhciBBVD1mdW5jdGlvbih0KXt2YXIgbj1PYmplY3Qua2V5cyh0KS5yZWR1Y2UoZnVuY3Rpb24ocixpKXtyZXR1cm4gcmkocmkoe30scikse30scHYoe30saSxGcS5jcmVhdGUodFtpXSkpKX0se30pO3JldHVybiByaShyaSh7fSxuKSx7fSx7YXBwbHk6ZnVuY3Rpb24oaSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHM9by5iYW5kQXdhcmUsdT1vLnBvc2l0aW9uO3JldHVybiBfY2UoaSxmdW5jdGlvbihmLGQpe3JldHVybiBuW2RdLmFwcGx5KGYse2JhbmRBd2FyZTpzLHBvc2l0aW9uOnV9KX0pfSxpc0luUmFuZ2U6ZnVuY3Rpb24oaSl7cmV0dXJuIGpjZShpLGZ1bmN0aW9uKG8scyl7cmV0dXJuIG5bc10uaXNJblJhbmdlKG8pfSl9fSl9O2Z1bmN0aW9uIFFjZShlKXtyZXR1cm4oZSUxODArMTgwKSUxODB9dmFyIEpjZT1mdW5jdGlvbih0KXt2YXIgbj10LndpZHRoLHI9dC5oZWlnaHQsaT1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06MCxvPVFjZShpKSxzPW8qTWF0aC5QSS8xODAsdT1NYXRoLmF0YW4oci9uKSxmPXM+dSYmczxNYXRoLlBJLXU/ci9NYXRoLnNpbihzKTpuL01hdGguY29zKHMpO3JldHVybiBNYXRoLmFicyhmKX0sUTEsTEk7ZnVuY3Rpb24gZWZlKCl7aWYoTEkpcmV0dXJuIFExO0xJPTE7dmFyIGU9RGkoKSx0PUVkKCksbj1XeSgpO2Z1bmN0aW9uIHIoaSl7cmV0dXJuIGZ1bmN0aW9uKG8scyx1KXt2YXIgZj1PYmplY3Qobyk7aWYoIXQobykpe3ZhciBkPWUocywzKTtvPW4obykscz1mdW5jdGlvbihtKXtyZXR1cm4gZChmW21dLG0sZil9fXZhciBwPWkobyxzLHUpO3JldHVybiBwPi0xP2ZbZD9vW3BdOnBdOnZvaWQgMH19cmV0dXJuIFExPXIsUTF9dmFyIEoxLElJO2Z1bmN0aW9uIHRmZSgpe2lmKElJKXJldHVybiBKMTtJST0xO3ZhciBlPWtxKCk7ZnVuY3Rpb24gdChuKXt2YXIgcj1lKG4pLGk9ciUxO3JldHVybiByPT09cj9pP3ItaTpyOjB9cmV0dXJuIEoxPXQsSjF9dmFyIGVTLCRJO2Z1bmN0aW9uIG5mZSgpe2lmKCRJKXJldHVybiBlUzskST0xO3ZhciBlPUdWKCksdD1EaSgpLG49dGZlKCkscj1NYXRoLm1heDtmdW5jdGlvbiBpKG8scyx1KXt2YXIgZj1vPT1udWxsPzA6by5sZW5ndGg7aWYoIWYpcmV0dXJuLTE7dmFyIGQ9dT09bnVsbD8wOm4odSk7cmV0dXJuIGQ8MCYmKGQ9cihmK2QsMCkpLGUobyx0KHMsMyksZCl9cmV0dXJuIGVTPWksZVN9dmFyIHRTLEJJO2Z1bmN0aW9uIHJmZSgpe2lmKEJJKXJldHVybiB0UztCST0xO3ZhciBlPWVmZSgpLHQ9bmZlKCksbj1lKHQpO3JldHVybiB0Uz1uLHRTfXJmZSgpO3ZhciBpZmU9c1YoKTtjb25zdCBhZmU9T3QoaWZlKTt2YXIgb2ZlPWFmZShmdW5jdGlvbihlKXtyZXR1cm57eDplLmxlZnQseTplLnRvcCx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH19LGZ1bmN0aW9uKGUpe3JldHVyblsibCIsZS5sZWZ0LCJ0IixlLnRvcCwidyIsZS53aWR0aCwiaCIsZS5oZWlnaHRdLmpvaW4oIiIpfSksSHE9Qy5jcmVhdGVDb250ZXh0KHZvaWQgMCksR3E9Qy5jcmVhdGVDb250ZXh0KHZvaWQgMCksS3E9Qy5jcmVhdGVDb250ZXh0KHZvaWQgMCksc2ZlPUMuY3JlYXRlQ29udGV4dCh7fSksV3E9Qy5jcmVhdGVDb250ZXh0KHZvaWQgMCksWXE9Qy5jcmVhdGVDb250ZXh0KDApLFhxPUMuY3JlYXRlQ29udGV4dCgwKSxWST1mdW5jdGlvbih0KXt2YXIgbj10LnN0YXRlLHI9bi54QXhpc01hcCxpPW4ueUF4aXNNYXAsbz1uLm9mZnNldCxzPXQuY2xpcFBhdGhJZCx1PXQuY2hpbGRyZW4sZj10LndpZHRoLGQ9dC5oZWlnaHQscD1vZmUobyk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChIcS5Qcm92aWRlcix7dmFsdWU6cn0sRi5jcmVhdGVFbGVtZW50KEdxLlByb3ZpZGVyLHt2YWx1ZTppfSxGLmNyZWF0ZUVsZW1lbnQoc2ZlLlByb3ZpZGVyLHt2YWx1ZTpvfSxGLmNyZWF0ZUVsZW1lbnQoS3EuUHJvdmlkZXIse3ZhbHVlOnB9LEYuY3JlYXRlRWxlbWVudChXcS5Qcm92aWRlcix7dmFsdWU6c30sRi5jcmVhdGVFbGVtZW50KFlxLlByb3ZpZGVyLHt2YWx1ZTpkfSxGLmNyZWF0ZUVsZW1lbnQoWHEuUHJvdmlkZXIse3ZhbHVlOmZ9LHUpKSkpKSkpfSxsZmU9ZnVuY3Rpb24oKXtyZXR1cm4gQy51c2VDb250ZXh0KFdxKX0sWnE9ZnVuY3Rpb24odCl7dmFyIG49Qy51c2VDb250ZXh0KEhxKTtuPT1udWxsJiZBcygpO3ZhciByPW5bdF07cmV0dXJuIHI9PW51bGwmJkFzKCkscn0sUXE9ZnVuY3Rpb24odCl7dmFyIG49Qy51c2VDb250ZXh0KEdxKTtuPT1udWxsJiZBcygpO3ZhciByPW5bdF07cmV0dXJuIHI9PW51bGwmJkFzKCkscn0sdWZlPWZ1bmN0aW9uKCl7dmFyIHQ9Qy51c2VDb250ZXh0KEtxKTtyZXR1cm4gdH0sSnE9ZnVuY3Rpb24oKXtyZXR1cm4gQy51c2VDb250ZXh0KFhxKX0sZVU9ZnVuY3Rpb24oKXtyZXR1cm4gQy51c2VDb250ZXh0KFlxKX07ZnVuY3Rpb24gcHUoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gcHU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHB1KGUpfWZ1bmN0aW9uIGNmZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGZmZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsblUoci5rZXkpLHIpfX1mdW5jdGlvbiBkZmUoZSx0LG4pe3JldHVybiB0JiZmZmUoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBoZmUoZSx0LG4pe3JldHVybiB0PVptKHQpLHBmZShlLHRVKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxabShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBwZmUoZSx0KXtpZih0JiYocHUodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gbWZlKGUpfWZ1bmN0aW9uIG1mZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gdFUoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4odFU9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIFptKGUpe3JldHVybiBabT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sWm0oZSl9ZnVuY3Rpb24geWZlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJlhBKGUsdCl9ZnVuY3Rpb24gWEEoZSx0KXtyZXR1cm4gWEE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxYQShlLHQpfWZ1bmN0aW9uIHFJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVUkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/cUkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe19UKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnFJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBfVChlLHQsbil7cmV0dXJuIHQ9blUodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBuVShlKXt2YXIgdD12ZmUoZSwic3RyaW5nIik7cmV0dXJuIHB1KHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gdmZlKGUsdCl7aWYocHUoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYocHUocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX1mdW5jdGlvbiBnZmUoZSx0KXtyZXR1cm4gU2ZlKGUpfHx3ZmUoZSx0KXx8eGZlKGUsdCl8fGJmZSgpfWZ1bmN0aW9uIGJmZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuCkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX1mdW5jdGlvbiB4ZmUoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIHpJKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKG49PT0iT2JqZWN0IiYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxuPT09Ik1hcCJ8fG49PT0iU2V0IilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihuPT09IkFyZ3VtZW50cyJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB6SShlLHQpfX1mdW5jdGlvbiB6SShlLHQpeyh0PT1udWxsfHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHdmZShlLHQpe3ZhciBuPWU9PW51bGw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobiE9bnVsbCl7dmFyIHIsaSxvLHMsdT1bXSxmPSEwLGQ9ITE7dHJ5e2lmKG89KG49bi5jYWxsKGUpKS5uZXh0LHQhPT0wKWZvcig7IShmPShyPW8uY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT10KTtmPSEwKTt9Y2F0Y2gocCl7ZD0hMCxpPXB9ZmluYWxseXt0cnl7aWYoIWYmJm4ucmV0dXJuIT1udWxsJiYocz1uLnJldHVybigpLE9iamVjdChzKSE9PXMpKXJldHVybn1maW5hbGx5e2lmKGQpdGhyb3cgaX19cmV0dXJuIHV9fWZ1bmN0aW9uIFNmZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIFpBKCl7cmV0dXJuIFpBPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sWkEuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBBZmU9ZnVuY3Rpb24odCxuKXt2YXIgcjtyZXR1cm4gRi5pc1ZhbGlkRWxlbWVudCh0KT9yPUYuY2xvbmVFbGVtZW50KHQsbik6SGUodCk/cj10KG4pOnI9Ri5jcmVhdGVFbGVtZW50KCJsaW5lIixaQSh7fSxuLHtjbGFzc05hbWU6InJlY2hhcnRzLXJlZmVyZW5jZS1saW5lLWxpbmUifSkpLHJ9LF9mZT1mdW5jdGlvbih0LG4scixpLG8scyx1LGYsZCl7dmFyIHA9by54LG09by55LHk9by53aWR0aCx4PW8uaGVpZ2h0O2lmKHIpe3ZhciB3PWQueSxiPXQueS5hcHBseSh3LHtwb3NpdGlvbjpzfSk7aWYoRWkoZCwiZGlzY2FyZCIpJiYhdC55LmlzSW5SYW5nZShiKSlyZXR1cm4gbnVsbDt2YXIgZz1be3g6cCt5LHk6Yn0se3g6cCx5OmJ9XTtyZXR1cm4gZj09PSJsZWZ0Ij9nLnJldmVyc2UoKTpnfWlmKG4pe3ZhciBfPWQueCxPPXQueC5hcHBseShfLHtwb3NpdGlvbjpzfSk7aWYoRWkoZCwiZGlzY2FyZCIpJiYhdC54LmlzSW5SYW5nZShPKSlyZXR1cm4gbnVsbDt2YXIgRT1be3g6Tyx5Om0reH0se3g6Tyx5Om19XTtyZXR1cm4gdT09PSJ0b3AiP0UucmV2ZXJzZSgpOkV9aWYoaSl7dmFyIGo9ZC5zZWdtZW50LFQ9ai5tYXAoZnVuY3Rpb24oUCl7cmV0dXJuIHQuYXBwbHkoUCx7cG9zaXRpb246c30pfSk7cmV0dXJuIEVpKGQsImRpc2NhcmQiKSYmeGNlKFQsZnVuY3Rpb24oUCl7cmV0dXJuIXQuaXNJblJhbmdlKFApfSk/bnVsbDpUfXJldHVybiBudWxsfTtmdW5jdGlvbiBPZmUoZSl7dmFyIHQ9ZS54LG49ZS55LHI9ZS5zZWdtZW50LGk9ZS54QXhpc0lkLG89ZS55QXhpc0lkLHM9ZS5zaGFwZSx1PWUuY2xhc3NOYW1lLGY9ZS5hbHdheXNTaG93LGQ9bGZlKCkscD1acShpKSxtPVFxKG8pLHk9dWZlKCk7aWYoIWR8fCF5KXJldHVybiBudWxsO2xhKGY9PT12b2lkIDAsJ1RoZSBhbHdheXNTaG93IHByb3AgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBpZk92ZXJmbG93PSJleHRlbmREb21haW4iIGluc3RlYWQuJyk7dmFyIHg9QVQoe3g6cC5zY2FsZSx5Om0uc2NhbGV9KSx3PXZuKHQpLGI9dm4obiksZz1yJiZyLmxlbmd0aD09PTIsXz1fZmUoeCx3LGIsZyx5LGUucG9zaXRpb24scC5vcmllbnRhdGlvbixtLm9yaWVudGF0aW9uLGUpO2lmKCFfKXJldHVybiBudWxsO3ZhciBPPWdmZShfLDIpLEU9T1swXSxqPUUueCxUPUUueSxQPU9bMV0sTj1QLngsUj1QLnksST1FaShlLCJoaWRkZW4iKT8idXJsKCMiLmNvbmNhdChkLCIpIik6dm9pZCAwLFY9VUkoVUkoe2NsaXBQYXRoOkl9LCRlKGUsITApKSx7fSx7eDE6aix5MTpULHgyOk4seTI6Un0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQse2NsYXNzTmFtZTpXZSgicmVjaGFydHMtcmVmZXJlbmNlLWxpbmUiLHUpfSxBZmUocyxWKSxPbi5yZW5kZXJDYWxsQnlQYXJlbnQoZSxaY2Uoe3gxOmoseTE6VCx4MjpOLHkyOlJ9KSkpfXZhciBPVD0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBjZmUodGhpcyx0KSxoZmUodGhpcyx0LGFyZ3VtZW50cyl9cmV0dXJuIHlmZSh0LGUpLGRmZSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChPZmUsdGhpcy5wcm9wcyl9fV0pfSkoRi5Db21wb25lbnQpO19UKE9ULCJkaXNwbGF5TmFtZSIsIlJlZmVyZW5jZUxpbmUiKTtfVChPVCwiZGVmYXVsdFByb3BzIix7aXNGcm9udDohMSxpZk92ZXJmbG93OiJkaXNjYXJkIix4QXhpc0lkOjAseUF4aXNJZDowLGZpbGw6Im5vbmUiLHN0cm9rZToiI2NjYyIsZmlsbE9wYWNpdHk6MSxzdHJva2VXaWR0aDoxLHBvc2l0aW9uOiJtaWRkbGUifSk7ZnVuY3Rpb24gUUEoKXtyZXR1cm4gUUE9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxRQS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbXUoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gbXU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LG11KGUpfWZ1bmN0aW9uIEZJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gSEkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/RkkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe212KGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkZJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBUZmUoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBFZmUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGlVKHIua2V5KSxyKX19ZnVuY3Rpb24gQ2ZlKGUsdCxuKXtyZXR1cm4gdCYmRWZlKGUucHJvdG90eXBlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gamZlKGUsdCxuKXtyZXR1cm4gdD1RbSh0KSxQZmUoZSxyVSgpP1JlZmxlY3QuY29uc3RydWN0KHQsbnx8W10sUW0oZSkuY29uc3RydWN0b3IpOnQuYXBwbHkoZSxuKSl9ZnVuY3Rpb24gUGZlKGUsdCl7aWYodCYmKG11KHQpPT09Im9iamVjdCJ8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKSlyZXR1cm4gdDtpZih0IT09dm9pZCAwKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE1mZShlKX1mdW5jdGlvbiBNZmUoZSl7aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIHJVKCl7dHJ5e3ZhciBlPSFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKX1jYXRjaHt9cmV0dXJuKHJVPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSkoKX1mdW5jdGlvbiBRbShlKXtyZXR1cm4gUW09T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24obil7cmV0dXJuIG4uX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9LFFtKGUpfWZ1bmN0aW9uIFJmZShlLHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iJiZ0IT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0JiZKQShlLHQpfWZ1bmN0aW9uIEpBKGUsdCl7cmV0dXJuIEpBPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHIsaSl7cmV0dXJuIHIuX19wcm90b19fPWkscn0sSkEoZSx0KX1mdW5jdGlvbiBtdihlLHQsbil7cmV0dXJuIHQ9aVUodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBpVShlKXt2YXIgdD1OZmUoZSwic3RyaW5nIik7cmV0dXJuIG11KHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24gTmZlKGUsdCl7aWYobXUoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYobXUocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmluZyhlKX12YXIga2ZlPWZ1bmN0aW9uKHQpe3ZhciBuPXQueCxyPXQueSxpPXQueEF4aXMsbz10LnlBeGlzLHM9QVQoe3g6aS5zY2FsZSx5Om8uc2NhbGV9KSx1PXMuYXBwbHkoe3g6bix5OnJ9LHtiYW5kQXdhcmU6ITB9KTtyZXR1cm4gRWkodCwiZGlzY2FyZCIpJiYhcy5pc0luUmFuZ2UodSk/bnVsbDp1fSx5dj0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBUZmUodGhpcyx0KSxqZmUodGhpcyx0LGFyZ3VtZW50cyl9cmV0dXJuIFJmZSh0LGUpLENmZSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIueCxvPXIueSxzPXIucix1PXIuYWx3YXlzU2hvdyxmPXIuY2xpcFBhdGhJZCxkPXZuKGkpLHA9dm4obyk7aWYobGEodT09PXZvaWQgMCwnVGhlIGFsd2F5c1Nob3cgcHJvcCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGlmT3ZlcmZsb3c9ImV4dGVuZERvbWFpbiIgaW5zdGVhZC4nKSwhZHx8IXApcmV0dXJuIG51bGw7dmFyIG09a2ZlKHRoaXMucHJvcHMpO2lmKCFtKXJldHVybiBudWxsO3ZhciB5PW0ueCx4PW0ueSx3PXRoaXMucHJvcHMsYj13LnNoYXBlLGc9dy5jbGFzc05hbWUsXz1FaSh0aGlzLnByb3BzLCJoaWRkZW4iKT8idXJsKCMiLmNvbmNhdChmLCIpIik6dm9pZCAwLE89SEkoSEkoe2NsaXBQYXRoOl99LCRlKHRoaXMucHJvcHMsITApKSx7fSx7Y3g6eSxjeTp4fSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOldlKCJyZWNoYXJ0cy1yZWZlcmVuY2UtZG90IixnKX0sdC5yZW5kZXJEb3QoYixPKSxPbi5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcyx7eDp5LXMseTp4LXMsd2lkdGg6MipzLGhlaWdodDoyKnN9KSl9fV0pfSkoRi5Db21wb25lbnQpO212KHl2LCJkaXNwbGF5TmFtZSIsIlJlZmVyZW5jZURvdCIpO212KHl2LCJkZWZhdWx0UHJvcHMiLHtpc0Zyb250OiExLGlmT3ZlcmZsb3c6ImRpc2NhcmQiLHhBeGlzSWQ6MCx5QXhpc0lkOjAscjoxMCxmaWxsOiIjZmZmIixzdHJva2U6IiNjY2MiLGZpbGxPcGFjaXR5OjEsc3Ryb2tlV2lkdGg6MX0pO212KHl2LCJyZW5kZXJEb3QiLGZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEYuaXNWYWxpZEVsZW1lbnQoZSk/bj1GLmNsb25lRWxlbWVudChlLHQpOkhlKGUpP249ZSh0KTpuPUYuY3JlYXRlRWxlbWVudChOZCxRQSh7fSx0LHtjeDp0LmN4LGN5OnQuY3ksY2xhc3NOYW1lOiJyZWNoYXJ0cy1yZWZlcmVuY2UtZG90LWRvdCJ9KSksbn0pO2Z1bmN0aW9uIGVfKCl7cmV0dXJuIGVfPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sZV8uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHl1KGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIHl1PXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSx5dShlKX1mdW5jdGlvbiBHSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEtJKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP0dJKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXt2dihlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpHSShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gRGZlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gTGZlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxvVShyLmtleSkscil9fWZ1bmN0aW9uIElmZShlLHQsbil7cmV0dXJuIHQmJkxmZShlLnByb3RvdHlwZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uICRmZShlLHQsbil7cmV0dXJuIHQ9Sm0odCksQmZlKGUsYVUoKT9SZWZsZWN0LmNvbnN0cnVjdCh0LG58fFtdLEptKGUpLmNvbnN0cnVjdG9yKTp0LmFwcGx5KGUsbikpfWZ1bmN0aW9uIEJmZShlLHQpe2lmKHQmJih5dSh0KT09PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpcmV0dXJuIHQ7aWYodCE9PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBWZmUoZSl9ZnVuY3Rpb24gVmZlKGUpe2lmKGU9PT12b2lkIDApdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBhVSgpe3RyeXt2YXIgZT0hQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSl9Y2F0Y2h7fXJldHVybihhVT1mdW5jdGlvbigpe3JldHVybiEhZX0pKCl9ZnVuY3Rpb24gSm0oZSl7cmV0dXJuIEptPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKG4pe3JldHVybiBuLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pfSxKbShlKX1mdW5jdGlvbiBxZmUoZSx0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIiYmdCE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmdF8oZSx0KX1mdW5jdGlvbiB0XyhlLHQpe3JldHVybiB0Xz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihyLGkpe3JldHVybiByLl9fcHJvdG9fXz1pLHJ9LHRfKGUsdCl9ZnVuY3Rpb24gdnYoZSx0LG4pe3JldHVybiB0PW9VKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gb1UoZSl7dmFyIHQ9VWZlKGUsInN0cmluZyIpO3JldHVybiB5dSh0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIFVmZShlLHQpe2lmKHl1KGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKHl1KHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9dmFyIHpmZT1mdW5jdGlvbih0LG4scixpLG8pe3ZhciBzPW8ueDEsdT1vLngyLGY9by55MSxkPW8ueTIscD1vLnhBeGlzLG09by55QXhpcztpZighcHx8IW0pcmV0dXJuIG51bGw7dmFyIHk9QVQoe3g6cC5zY2FsZSx5Om0uc2NhbGV9KSx4PXt4OnQ/eS54LmFwcGx5KHMse3Bvc2l0aW9uOiJzdGFydCJ9KTp5LngucmFuZ2VNaW4seTpyP3kueS5hcHBseShmLHtwb3NpdGlvbjoic3RhcnQifSk6eS55LnJhbmdlTWlufSx3PXt4Om4/eS54LmFwcGx5KHUse3Bvc2l0aW9uOiJlbmQifSk6eS54LnJhbmdlTWF4LHk6aT95LnkuYXBwbHkoZCx7cG9zaXRpb246ImVuZCJ9KTp5LnkucmFuZ2VNYXh9O3JldHVybiBFaShvLCJkaXNjYXJkIikmJigheS5pc0luUmFuZ2UoeCl8fCF5LmlzSW5SYW5nZSh3KSk/bnVsbDp6cSh4LHcpfSxndj0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBEZmUodGhpcyx0KSwkZmUodGhpcyx0LGFyZ3VtZW50cyl9cmV0dXJuIHFmZSh0LGUpLElmZSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIueDEsbz1yLngyLHM9ci55MSx1PXIueTIsZj1yLmNsYXNzTmFtZSxkPXIuYWx3YXlzU2hvdyxwPXIuY2xpcFBhdGhJZDtsYShkPT09dm9pZCAwLCdUaGUgYWx3YXlzU2hvdyBwcm9wIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgaWZPdmVyZmxvdz0iZXh0ZW5kRG9tYWluIiBpbnN0ZWFkLicpO3ZhciBtPXZuKGkpLHk9dm4obykseD12bihzKSx3PXZuKHUpLGI9dGhpcy5wcm9wcy5zaGFwZTtpZighbSYmIXkmJiF4JiYhdyYmIWIpcmV0dXJuIG51bGw7dmFyIGc9emZlKG0seSx4LHcsdGhpcy5wcm9wcyk7aWYoIWcmJiFiKXJldHVybiBudWxsO3ZhciBfPUVpKHRoaXMucHJvcHMsImhpZGRlbiIpPyJ1cmwoIyIuY29uY2F0KHAsIikiKTp2b2lkIDA7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOldlKCJyZWNoYXJ0cy1yZWZlcmVuY2UtYXJlYSIsZil9LHQucmVuZGVyUmVjdChiLEtJKEtJKHtjbGlwUGF0aDpffSwkZSh0aGlzLnByb3BzLCEwKSksZykpLE9uLnJlbmRlckNhbGxCeVBhcmVudCh0aGlzLnByb3BzLGcpKX19XSl9KShGLkNvbXBvbmVudCk7dnYoZ3YsImRpc3BsYXlOYW1lIiwiUmVmZXJlbmNlQXJlYSIpO3Z2KGd2LCJkZWZhdWx0UHJvcHMiLHtpc0Zyb250OiExLGlmT3ZlcmZsb3c6ImRpc2NhcmQiLHhBeGlzSWQ6MCx5QXhpc0lkOjAscjoxMCxmaWxsOiIjY2NjIixmaWxsT3BhY2l0eTouNSxzdHJva2U6Im5vbmUiLHN0cm9rZVdpZHRoOjF9KTt2dihndiwicmVuZGVyUmVjdCIsZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gRi5pc1ZhbGlkRWxlbWVudChlKT9uPUYuY2xvbmVFbGVtZW50KGUsdCk6SGUoZSk/bj1lKHQpOm49Ri5jcmVhdGVFbGVtZW50KFNULGVfKHt9LHQse2NsYXNzTmFtZToicmVjaGFydHMtcmVmZXJlbmNlLWFyZWEtcmVjdCJ9KSksbn0pO2Z1bmN0aW9uIHNVKGUsdCxuKXtpZih0PDEpcmV0dXJuW107aWYodD09PTEmJm49PT12b2lkIDApcmV0dXJuIGU7Zm9yKHZhciByPVtdLGk9MDtpPGUubGVuZ3RoO2krPXQpci5wdXNoKGVbaV0pO3JldHVybiByfWZ1bmN0aW9uIEZmZShlLHQsbil7dmFyIHI9e3dpZHRoOmUud2lkdGgrdC53aWR0aCxoZWlnaHQ6ZS5oZWlnaHQrdC5oZWlnaHR9O3JldHVybiBKY2UocixuKX1mdW5jdGlvbiBIZmUoZSx0LG4pe3ZhciByPW49PT0id2lkdGgiLGk9ZS54LG89ZS55LHM9ZS53aWR0aCx1PWUuaGVpZ2h0O3JldHVybiB0PT09MT97c3RhcnQ6cj9pOm8sZW5kOnI/aStzOm8rdX06e3N0YXJ0OnI/aStzOm8rdSxlbmQ6cj9pOm99fWZ1bmN0aW9uIGV5KGUsdCxuLHIsaSl7aWYoZSp0PGUqcnx8ZSp0PmUqaSlyZXR1cm4hMTt2YXIgbz1uKCk7cmV0dXJuIGUqKHQtZSpvLzItcik+PTAmJmUqKHQrZSpvLzItaSk8PTB9ZnVuY3Rpb24gR2ZlKGUsdCl7cmV0dXJuIHNVKGUsdCsxKX1mdW5jdGlvbiBLZmUoZSx0LG4scixpKXtmb3IodmFyIG89KHJ8fFtdKS5zbGljZSgpLHM9dC5zdGFydCx1PXQuZW5kLGY9MCxkPTEscD1zLG09ZnVuY3Rpb24oKXt2YXIgdz1yPy5bZl07aWYodz09PXZvaWQgMClyZXR1cm57djpzVShyLGQpfTt2YXIgYj1mLGcsXz1mdW5jdGlvbigpe3JldHVybiBnPT09dm9pZCAwJiYoZz1uKHcsYikpLGd9LE89dy5jb29yZGluYXRlLEU9Zj09PTB8fGV5KGUsTyxfLHAsdSk7RXx8KGY9MCxwPXMsZCs9MSksRSYmKHA9TytlKihfKCkvMitpKSxmKz1kKX0seTtkPD1vLmxlbmd0aDspaWYoeT1tKCkseSlyZXR1cm4geS52O3JldHVybltdfWZ1bmN0aW9uIHVkKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIHVkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSx1ZChlKX1mdW5jdGlvbiBXSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEJuKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP1dJKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtXZmUoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6V0koT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIFdmZShlLHQsbil7cmV0dXJuIHQ9WWZlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gWWZlKGUpe3ZhciB0PVhmZShlLCJzdHJpbmciKTtyZXR1cm4gdWQodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBYZmUoZSx0KXtpZih1ZChlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZih1ZChyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIFpmZShlLHQsbixyLGkpe2Zvcih2YXIgbz0ocnx8W10pLnNsaWNlKCkscz1vLmxlbmd0aCx1PXQuc3RhcnQsZj10LmVuZCxkPWZ1bmN0aW9uKHkpe3ZhciB4PW9beV0sdyxiPWZ1bmN0aW9uKCl7cmV0dXJuIHc9PT12b2lkIDAmJih3PW4oeCx5KSksd307aWYoeT09PXMtMSl7dmFyIGc9ZSooeC5jb29yZGluYXRlK2UqYigpLzItZik7b1t5XT14PUJuKEJuKHt9LHgpLHt9LHt0aWNrQ29vcmQ6Zz4wP3guY29vcmRpbmF0ZS1nKmU6eC5jb29yZGluYXRlfSl9ZWxzZSBvW3ldPXg9Qm4oQm4oe30seCkse30se3RpY2tDb29yZDp4LmNvb3JkaW5hdGV9KTt2YXIgXz1leShlLHgudGlja0Nvb3JkLGIsdSxmKTtfJiYoZj14LnRpY2tDb29yZC1lKihiKCkvMitpKSxvW3ldPUJuKEJuKHt9LHgpLHt9LHtpc1Nob3c6ITB9KSl9LHA9cy0xO3A+PTA7cC0tKWQocCk7cmV0dXJuIG99ZnVuY3Rpb24gUWZlKGUsdCxuLHIsaSxvKXt2YXIgcz0ocnx8W10pLnNsaWNlKCksdT1zLmxlbmd0aCxmPXQuc3RhcnQsZD10LmVuZDtpZihvKXt2YXIgcD1yW3UtMV0sbT1uKHAsdS0xKSx5PWUqKHAuY29vcmRpbmF0ZStlKm0vMi1kKTtzW3UtMV09cD1CbihCbih7fSxwKSx7fSx7dGlja0Nvb3JkOnk+MD9wLmNvb3JkaW5hdGUteSplOnAuY29vcmRpbmF0ZX0pO3ZhciB4PWV5KGUscC50aWNrQ29vcmQsZnVuY3Rpb24oKXtyZXR1cm4gbX0sZixkKTt4JiYoZD1wLnRpY2tDb29yZC1lKihtLzIraSksc1t1LTFdPUJuKEJuKHt9LHApLHt9LHtpc1Nob3c6ITB9KSl9Zm9yKHZhciB3PW8/dS0xOnUsYj1mdW5jdGlvbihPKXt2YXIgRT1zW09dLGosVD1mdW5jdGlvbigpe3JldHVybiBqPT09dm9pZCAwJiYoaj1uKEUsTykpLGp9O2lmKE89PT0wKXt2YXIgUD1lKihFLmNvb3JkaW5hdGUtZSpUKCkvMi1mKTtzW09dPUU9Qm4oQm4oe30sRSkse30se3RpY2tDb29yZDpQPDA/RS5jb29yZGluYXRlLVAqZTpFLmNvb3JkaW5hdGV9KX1lbHNlIHNbT109RT1CbihCbih7fSxFKSx7fSx7dGlja0Nvb3JkOkUuY29vcmRpbmF0ZX0pO3ZhciBOPWV5KGUsRS50aWNrQ29vcmQsVCxmLGQpO04mJihmPUUudGlja0Nvb3JkK2UqKFQoKS8yK2kpLHNbT109Qm4oQm4oe30sRSkse30se2lzU2hvdzohMH0pKX0sZz0wO2c8dztnKyspYihnKTtyZXR1cm4gc31mdW5jdGlvbiBKZmUoZSx0LG4pe3ZhciByPWUudGljayxpPWUudGlja3Msbz1lLnZpZXdCb3gscz1lLm1pblRpY2tHYXAsdT1lLm9yaWVudGF0aW9uLGY9ZS5pbnRlcnZhbCxkPWUudGlja0Zvcm1hdHRlcixwPWUudW5pdCxtPWUuYW5nbGU7aWYoIWl8fCFpLmxlbmd0aHx8IXIpcmV0dXJuW107aWYodmUoZil8fGJvLmlzU3NyKXJldHVybiBHZmUoaSx0eXBlb2YgZj09Im51bWJlciImJnZlKGYpP2Y6MCk7dmFyIHk9W10seD11PT09InRvcCJ8fHU9PT0iYm90dG9tIj8id2lkdGgiOiJoZWlnaHQiLHc9cCYmeD09PSJ3aWR0aCI/cGYocCx7Zm9udFNpemU6dCxsZXR0ZXJTcGFjaW5nOm59KTp7d2lkdGg6MCxoZWlnaHQ6MH0sYj1mdW5jdGlvbihFLGope3ZhciBUPUhlKGQpP2QoRS52YWx1ZSxqKTpFLnZhbHVlO3JldHVybiB4PT09IndpZHRoIj9GZmUocGYoVCx7Zm9udFNpemU6dCxsZXR0ZXJTcGFjaW5nOm59KSx3LG0pOnBmKFQse2ZvbnRTaXplOnQsbGV0dGVyU3BhY2luZzpufSlbeF19LGc9aS5sZW5ndGg+PTI/SG4oaVsxXS5jb29yZGluYXRlLWlbMF0uY29vcmRpbmF0ZSk6MSxfPUhmZShvLGcseCk7cmV0dXJuIGY9PT0iZXF1aWRpc3RhbnRQcmVzZXJ2ZVN0YXJ0Ij9LZmUoZyxfLGIsaSxzKTooZj09PSJwcmVzZXJ2ZVN0YXJ0Inx8Zj09PSJwcmVzZXJ2ZVN0YXJ0RW5kIj95PVFmZShnLF8sYixpLHMsZj09PSJwcmVzZXJ2ZVN0YXJ0RW5kIik6eT1aZmUoZyxfLGIsaSxzKSx5LmZpbHRlcihmdW5jdGlvbihPKXtyZXR1cm4gTy5pc1Nob3d9KSl9dmFyIGVkZT1bInZpZXdCb3giXSx0ZGU9WyJ2aWV3Qm94Il0sbmRlPVsidGlja3MiXTtmdW5jdGlvbiB2dShlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiB2dT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sdnUoZSl9ZnVuY3Rpb24ga2woKXtyZXR1cm4ga2w9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxrbC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWUkoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBkbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O3QlMj9ZSShPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24ocil7VFQoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6WUkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIG5TKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1yZGUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiByZGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIGlkZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIFhJKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx1VShyLmtleSkscil9fWZ1bmN0aW9uIGFkZShlLHQsbil7cmV0dXJuIHQmJlhJKGUucHJvdG90eXBlLHQpLG4mJlhJKGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBvZGUoZSx0LG4pe3JldHVybiB0PXR5KHQpLHNkZShlLGxVKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSx0eShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBzZGUoZSx0KXtpZih0JiYodnUodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gbGRlKGUpfWZ1bmN0aW9uIGxkZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gbFUoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4obFU9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIHR5KGUpe3JldHVybiB0eT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sdHkoZSl9ZnVuY3Rpb24gdWRlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJm5fKGUsdCl9ZnVuY3Rpb24gbl8oZSx0KXtyZXR1cm4gbl89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxuXyhlLHQpfWZ1bmN0aW9uIFRUKGUsdCxuKXtyZXR1cm4gdD11VSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHVVKGUpe3ZhciB0PWNkZShlLCJzdHJpbmciKTtyZXR1cm4gdnUodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBjZGUoZSx0KXtpZih2dShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZih2dShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfXZhciBidj0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXt2YXIgcjtyZXR1cm4gaWRlKHRoaXMsdCkscj1vZGUodGhpcyx0LFtuXSksci5zdGF0ZT17Zm9udFNpemU6IiIsbGV0dGVyU3BhY2luZzoiIn0scn1yZXR1cm4gdWRlKHQsZSksYWRlKHQsW3trZXk6InNob3VsZENvbXBvbmVudFVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24ocixpKXt2YXIgbz1yLnZpZXdCb3gscz1uUyhyLGVkZSksdT10aGlzLnByb3BzLGY9dS52aWV3Qm94LGQ9blModSx0ZGUpO3JldHVybiFxbChvLGYpfHwhcWwocyxkKXx8IXFsKGksdGhpcy5zdGF0ZSl9fSx7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLmxheWVyUmVmZXJlbmNlO2lmKHIpe3ZhciBpPXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicmVjaGFydHMtY2FydGVzaWFuLWF4aXMtdGljay12YWx1ZSIpWzBdO2kmJnRoaXMuc2V0U3RhdGUoe2ZvbnRTaXplOndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGkpLmZvbnRTaXplLGxldHRlclNwYWNpbmc6d2luZG93LmdldENvbXB1dGVkU3R5bGUoaSkubGV0dGVyU3BhY2luZ30pfX19LHtrZXk6ImdldFRpY2tMaW5lQ29vcmQiLHZhbHVlOmZ1bmN0aW9uKHIpe3ZhciBpPXRoaXMucHJvcHMsbz1pLngscz1pLnksdT1pLndpZHRoLGY9aS5oZWlnaHQsZD1pLm9yaWVudGF0aW9uLHA9aS50aWNrU2l6ZSxtPWkubWlycm9yLHk9aS50aWNrTWFyZ2luLHgsdyxiLGcsXyxPLEU9bT8tMToxLGo9ci50aWNrU2l6ZXx8cCxUPXZlKHIudGlja0Nvb3JkKT9yLnRpY2tDb29yZDpyLmNvb3JkaW5hdGU7c3dpdGNoKGQpe2Nhc2UidG9wIjp4PXc9ci5jb29yZGluYXRlLGc9cysgKyFtKmYsYj1nLUUqaixPPWItRSp5LF89VDticmVhaztjYXNlImxlZnQiOmI9Zz1yLmNvb3JkaW5hdGUsdz1vKyArIW0qdSx4PXctRSpqLF89eC1FKnksTz1UO2JyZWFrO2Nhc2UicmlnaHQiOmI9Zz1yLmNvb3JkaW5hdGUsdz1vKyArbSp1LHg9dytFKmosXz14K0UqeSxPPVQ7YnJlYWs7ZGVmYXVsdDp4PXc9ci5jb29yZGluYXRlLGc9cysgK20qZixiPWcrRSpqLE89YitFKnksXz1UO2JyZWFrfXJldHVybntsaW5lOnt4MTp4LHkxOmIseDI6dyx5MjpnfSx0aWNrOnt4Ol8seTpPfX19fSx7a2V5OiJnZXRUaWNrVGV4dEFuY2hvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnByb3BzLGk9ci5vcmllbnRhdGlvbixvPXIubWlycm9yLHM7c3dpdGNoKGkpe2Nhc2UibGVmdCI6cz1vPyJzdGFydCI6ImVuZCI7YnJlYWs7Y2FzZSJyaWdodCI6cz1vPyJlbmQiOiJzdGFydCI7YnJlYWs7ZGVmYXVsdDpzPSJtaWRkbGUiO2JyZWFrfXJldHVybiBzfX0se2tleToiZ2V0VGlja1ZlcnRpY2FsQW5jaG9yIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMucHJvcHMsaT1yLm9yaWVudGF0aW9uLG89ci5taXJyb3Iscz0iZW5kIjtzd2l0Y2goaSl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpzPSJtaWRkbGUiO2JyZWFrO2Nhc2UidG9wIjpzPW8/InN0YXJ0IjoiZW5kIjticmVhaztkZWZhdWx0OnM9bz8iZW5kIjoic3RhcnQiO2JyZWFrfXJldHVybiBzfX0se2tleToicmVuZGVyQXhpc0xpbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5wcm9wcyxpPXIueCxvPXIueSxzPXIud2lkdGgsdT1yLmhlaWdodCxmPXIub3JpZW50YXRpb24sZD1yLm1pcnJvcixwPXIuYXhpc0xpbmUsbT1kbihkbihkbih7fSwkZSh0aGlzLnByb3BzLCExKSksJGUocCwhMSkpLHt9LHtmaWxsOiJub25lIn0pO2lmKGY9PT0idG9wInx8Zj09PSJib3R0b20iKXt2YXIgeT0rKGY9PT0idG9wIiYmIWR8fGY9PT0iYm90dG9tIiYmZCk7bT1kbihkbih7fSxtKSx7fSx7eDE6aSx5MTpvK3kqdSx4MjppK3MseTI6byt5KnV9KX1lbHNle3ZhciB4PSsoZj09PSJsZWZ0IiYmIWR8fGY9PT0icmlnaHQiJiZkKTttPWRuKGRuKHt9LG0pLHt9LHt4MTppK3gqcyx5MTpvLHgyOmkreCpzLHkyOm8rdX0pfXJldHVybiBGLmNyZWF0ZUVsZW1lbnQoImxpbmUiLGtsKHt9LG0se2NsYXNzTmFtZTpXZSgicmVjaGFydHMtY2FydGVzaWFuLWF4aXMtbGluZSIseHIocCwiY2xhc3NOYW1lIikpfSkpfX0se2tleToicmVuZGVyVGlja3MiLHZhbHVlOmZ1bmN0aW9uKHIsaSxvKXt2YXIgcz10aGlzLHU9dGhpcy5wcm9wcyxmPXUudGlja0xpbmUsZD11LnN0cm9rZSxwPXUudGljayxtPXUudGlja0Zvcm1hdHRlcix5PXUudW5pdCx4PUpmZShkbihkbih7fSx0aGlzLnByb3BzKSx7fSx7dGlja3M6cn0pLGksbyksdz10aGlzLmdldFRpY2tUZXh0QW5jaG9yKCksYj10aGlzLmdldFRpY2tWZXJ0aWNhbEFuY2hvcigpLGc9JGUodGhpcy5wcm9wcywhMSksXz0kZShwLCExKSxPPWRuKGRuKHt9LGcpLHt9LHtmaWxsOiJub25lIn0sJGUoZiwhMSkpLEU9eC5tYXAoZnVuY3Rpb24oaixUKXt2YXIgUD1zLmdldFRpY2tMaW5lQ29vcmQoaiksTj1QLmxpbmUsUj1QLnRpY2ssST1kbihkbihkbihkbih7dGV4dEFuY2hvcjp3LHZlcnRpY2FsQW5jaG9yOmJ9LGcpLHt9LHtzdHJva2U6Im5vbmUiLGZpbGw6ZH0sXyksUikse30se2luZGV4OlQscGF5bG9hZDpqLHZpc2libGVUaWNrc0NvdW50OngubGVuZ3RoLHRpY2tGb3JtYXR0ZXI6bX0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQsa2woe2NsYXNzTmFtZToicmVjaGFydHMtY2FydGVzaWFuLWF4aXMtdGljayIsa2V5OiJ0aWNrLSIuY29uY2F0KGoudmFsdWUsIi0iKS5jb25jYXQoai5jb29yZGluYXRlLCItIikuY29uY2F0KGoudGlja0Nvb3JkKX0sYnMocy5wcm9wcyxqLFQpKSxmJiZGLmNyZWF0ZUVsZW1lbnQoImxpbmUiLGtsKHt9LE8sTix7Y2xhc3NOYW1lOldlKCJyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy10aWNrLWxpbmUiLHhyKGYsImNsYXNzTmFtZSIpKX0pKSxwJiZ0LnJlbmRlclRpY2tJdGVtKHAsSSwiIi5jb25jYXQoSGUobSk/bShqLnZhbHVlLFQpOmoudmFsdWUpLmNvbmNhdCh5fHwiIikpKX0pO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoImciLHtjbGFzc05hbWU6InJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2tzIn0sRSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxpPXRoaXMucHJvcHMsbz1pLmF4aXNMaW5lLHM9aS53aWR0aCx1PWkuaGVpZ2h0LGY9aS50aWNrc0dlbmVyYXRvcixkPWkuY2xhc3NOYW1lLHA9aS5oaWRlO2lmKHApcmV0dXJuIG51bGw7dmFyIG09dGhpcy5wcm9wcyx5PW0udGlja3MseD1uUyhtLG5kZSksdz15O3JldHVybiBIZShmKSYmKHc9eSYmeS5sZW5ndGg+MD9mKHRoaXMucHJvcHMpOmYoeCkpLHM8PTB8fHU8PTB8fCF3fHwhdy5sZW5ndGg/bnVsbDpGLmNyZWF0ZUVsZW1lbnQoYXQse2NsYXNzTmFtZTpXZSgicmVjaGFydHMtY2FydGVzaWFuLWF4aXMiLGQpLHJlZjpmdW5jdGlvbihnKXtyLmxheWVyUmVmZXJlbmNlPWd9fSxvJiZ0aGlzLnJlbmRlckF4aXNMaW5lKCksdGhpcy5yZW5kZXJUaWNrcyh3LHRoaXMuc3RhdGUuZm9udFNpemUsdGhpcy5zdGF0ZS5sZXR0ZXJTcGFjaW5nKSxPbi5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcykpfX1dLFt7a2V5OiJyZW5kZXJUaWNrSXRlbSIsdmFsdWU6ZnVuY3Rpb24ocixpLG8pe3ZhciBzLHU9V2UoaS5jbGFzc05hbWUsInJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2stdmFsdWUiKTtyZXR1cm4gRi5pc1ZhbGlkRWxlbWVudChyKT9zPUYuY2xvbmVFbGVtZW50KHIsZG4oZG4oe30saSkse30se2NsYXNzTmFtZTp1fSkpOkhlKHIpP3M9cihkbihkbih7fSxpKSx7fSx7Y2xhc3NOYW1lOnV9KSk6cz1GLmNyZWF0ZUVsZW1lbnQoeHMsa2woe30saSx7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy10aWNrLXZhbHVlIn0pLG8pLHN9fV0pfSkoQy5Db21wb25lbnQpO1RUKGJ2LCJkaXNwbGF5TmFtZSIsIkNhcnRlc2lhbkF4aXMiKTtUVChidiwiZGVmYXVsdFByb3BzIix7eDowLHk6MCx3aWR0aDowLGhlaWdodDowLHZpZXdCb3g6e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0sb3JpZW50YXRpb246ImJvdHRvbSIsdGlja3M6W10sc3Ryb2tlOiIjNjY2Iix0aWNrTGluZTohMCxheGlzTGluZTohMCx0aWNrOiEwLG1pcnJvcjohMSxtaW5UaWNrR2FwOjUsdGlja1NpemU6Nix0aWNrTWFyZ2luOjIsaW50ZXJ2YWw6InByZXNlcnZlRW5kIn0pO3ZhciBmZGU9WyJ0eXBlIiwibGF5b3V0IiwiY29ubmVjdE51bGxzIiwicmVmIl0sZGRlPVsia2V5Il07ZnVuY3Rpb24gZ3UoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gZ3U9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LGd1KGUpfWZ1bmN0aW9uIFpJKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1oZGUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBoZGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIHhmKCl7cmV0dXJuIHhmPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0seGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFFJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24geXIoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/UUkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lpKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlFJKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiB4bChlKXtyZXR1cm4gdmRlKGUpfHx5ZGUoZSl8fG1kZShlKXx8cGRlKCl9ZnVuY3Rpb24gcGRlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuCkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX1mdW5jdGlvbiBtZGUoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIHJfKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKG49PT0iT2JqZWN0IiYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxuPT09Ik1hcCJ8fG49PT0iU2V0IilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihuPT09IkFyZ3VtZW50cyJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByXyhlLHQpfX1mdW5jdGlvbiB5ZGUoZSl7aWYodHlwZW9mIFN5bWJvbDwidSImJmVbU3ltYm9sLml0ZXJhdG9yXSE9bnVsbHx8ZVsiQEBpdGVyYXRvciJdIT1udWxsKXJldHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIHZkZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiByXyhlKX1mdW5jdGlvbiByXyhlLHQpeyh0PT1udWxsfHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGdkZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEpJKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxmVShyLmtleSkscil9fWZ1bmN0aW9uIGJkZShlLHQsbil7cmV0dXJuIHQmJkpJKGUucHJvdG90eXBlLHQpLG4mJkpJKGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiB4ZGUoZSx0LG4pe3JldHVybiB0PW55KHQpLHdkZShlLGNVKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxueShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiB3ZGUoZSx0KXtpZih0JiYoZ3UodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gU2RlKGUpfWZ1bmN0aW9uIFNkZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gY1UoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4oY1U9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIG55KGUpe3JldHVybiBueT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sbnkoZSl9ZnVuY3Rpb24gQWRlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmlfKGUsdCl9ZnVuY3Rpb24gaV8oZSx0KXtyZXR1cm4gaV89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxpXyhlLHQpfWZ1bmN0aW9uIGlpKGUsdCxuKXtyZXR1cm4gdD1mVSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGZVKGUpe3ZhciB0PV9kZShlLCJzdHJpbmciKTtyZXR1cm4gZ3UodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBfZGUoZSx0KXtpZihndShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihndShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfXZhciBEZD0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuO2dkZSh0aGlzLHQpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtvPHI7bysrKWlbb109YXJndW1lbnRzW29dO3JldHVybiBuPXhkZSh0aGlzLHQsW10uY29uY2F0KGkpKSxpaShuLCJzdGF0ZSIse2lzQW5pbWF0aW9uRmluaXNoZWQ6ITAsdG90YWxMZW5ndGg6MH0pLGlpKG4sImdlbmVyYXRlU2ltcGxlU3Ryb2tlRGFzaGFycmF5IixmdW5jdGlvbihzLHUpe3JldHVybiIiLmNvbmNhdCh1LCJweCAiKS5jb25jYXQocy11LCJweCIpfSksaWkobiwiZ2V0U3Ryb2tlRGFzaGFycmF5IixmdW5jdGlvbihzLHUsZil7dmFyIGQ9Zi5yZWR1Y2UoZnVuY3Rpb24oXyxPKXtyZXR1cm4gXytPfSk7aWYoIWQpcmV0dXJuIG4uZ2VuZXJhdGVTaW1wbGVTdHJva2VEYXNoYXJyYXkodSxzKTtmb3IodmFyIHA9TWF0aC5mbG9vcihzL2QpLG09cyVkLHk9dS1zLHg9W10sdz0wLGI9MDt3PGYubGVuZ3RoO2IrPWZbd10sKyt3KWlmKGIrZlt3XT5tKXt4PVtdLmNvbmNhdCh4bChmLnNsaWNlKDAsdykpLFttLWJdKTticmVha312YXIgZz14Lmxlbmd0aCUyPT09MD9bMCx5XTpbeV07cmV0dXJuW10uY29uY2F0KHhsKHQucmVwZWF0KGYscCkpLHhsKHgpLGcpLm1hcChmdW5jdGlvbihfKXtyZXR1cm4iIi5jb25jYXQoXywicHgiKX0pLmpvaW4oIiwgIil9KSxpaShuLCJpZCIsQ3MoInJlY2hhcnRzLWxpbmUtIikpLGlpKG4sInBhdGhSZWYiLGZ1bmN0aW9uKHMpe24ubWFpbkN1cnZlPXN9KSxpaShuLCJoYW5kbGVBbmltYXRpb25FbmQiLGZ1bmN0aW9uKCl7bi5zZXRTdGF0ZSh7aXNBbmltYXRpb25GaW5pc2hlZDohMH0pLG4ucHJvcHMub25BbmltYXRpb25FbmQmJm4ucHJvcHMub25BbmltYXRpb25FbmQoKX0pLGlpKG4sImhhbmRsZUFuaW1hdGlvblN0YXJ0IixmdW5jdGlvbigpe24uc2V0U3RhdGUoe2lzQW5pbWF0aW9uRmluaXNoZWQ6ITF9KSxuLnByb3BzLm9uQW5pbWF0aW9uU3RhcnQmJm4ucHJvcHMub25BbmltYXRpb25TdGFydCgpfSksbn1yZXR1cm4gQWRlKHQsZSksYmRlKHQsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUpe3ZhciByPXRoaXMuZ2V0VG90YWxMZW5ndGgoKTt0aGlzLnNldFN0YXRlKHt0b3RhbExlbmd0aDpyfSl9fX0se2tleToiY29tcG9uZW50RGlkVXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUpe3ZhciByPXRoaXMuZ2V0VG90YWxMZW5ndGgoKTtyIT09dGhpcy5zdGF0ZS50b3RhbExlbmd0aCYmdGhpcy5zZXRTdGF0ZSh7dG90YWxMZW5ndGg6cn0pfX19LHtrZXk6ImdldFRvdGFsTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMubWFpbkN1cnZlO3RyeXtyZXR1cm4gciYmci5nZXRUb3RhbExlbmd0aCYmci5nZXRUb3RhbExlbmd0aCgpfHwwfWNhdGNoe3JldHVybiAwfX19LHtrZXk6InJlbmRlckVycm9yQmFyIix2YWx1ZTpmdW5jdGlvbihyLGkpe2lmKHRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUmJiF0aGlzLnN0YXRlLmlzQW5pbWF0aW9uRmluaXNoZWQpcmV0dXJuIG51bGw7dmFyIG89dGhpcy5wcm9wcyxzPW8ucG9pbnRzLHU9by54QXhpcyxmPW8ueUF4aXMsZD1vLmxheW91dCxwPW8uY2hpbGRyZW4sbT13cihwLFJkKTtpZighbSlyZXR1cm4gbnVsbDt2YXIgeT1mdW5jdGlvbihiLGcpe3JldHVybnt4OmIueCx5OmIueSx2YWx1ZTpiLnZhbHVlLGVycm9yVmFsOkp0KGIucGF5bG9hZCxnKX19LHg9e2NsaXBQYXRoOnI/InVybCgjY2xpcFBhdGgtIi5jb25jYXQoaSwiKSIpOm51bGx9O3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQseCxtLm1hcChmdW5jdGlvbih3KXtyZXR1cm4gRi5jbG9uZUVsZW1lbnQodyx7a2V5OiJiYXItIi5jb25jYXQody5wcm9wcy5kYXRhS2V5KSxkYXRhOnMseEF4aXM6dSx5QXhpczpmLGxheW91dDpkLGRhdGFQb2ludEZvcm1hdHRlcjp5fSl9KSl9fSx7a2V5OiJyZW5kZXJEb3RzIix2YWx1ZTpmdW5jdGlvbihyLGksbyl7dmFyIHM9dGhpcy5wcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZTtpZihzJiYhdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkKXJldHVybiBudWxsO3ZhciB1PXRoaXMucHJvcHMsZj11LmRvdCxkPXUucG9pbnRzLHA9dS5kYXRhS2V5LG09JGUodGhpcy5wcm9wcywhMSkseT0kZShmLCEwKSx4PWQubWFwKGZ1bmN0aW9uKGIsZyl7dmFyIF89eXIoeXIoeXIoe2tleToiZG90LSIuY29uY2F0KGcpLHI6M30sbSkseSkse30se2luZGV4OmcsY3g6Yi54LGN5OmIueSx2YWx1ZTpiLnZhbHVlLGRhdGFLZXk6cCxwYXlsb2FkOmIucGF5bG9hZCxwb2ludHM6ZH0pO3JldHVybiB0LnJlbmRlckRvdEl0ZW0oZixfKX0pLHc9e2NsaXBQYXRoOnI/InVybCgjY2xpcFBhdGgtIi5jb25jYXQoaT8iIjoiZG90cy0iKS5jb25jYXQobywiKSIpOm51bGx9O3JldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQseGYoe2NsYXNzTmFtZToicmVjaGFydHMtbGluZS1kb3RzIixrZXk6ImRvdHMifSx3KSx4KX19LHtrZXk6InJlbmRlckN1cnZlU3RhdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24ocixpLG8scyl7dmFyIHU9dGhpcy5wcm9wcyxmPXUudHlwZSxkPXUubGF5b3V0LHA9dS5jb25uZWN0TnVsbHM7dS5yZWY7dmFyIG09WkkodSxmZGUpLHk9eXIoeXIoeXIoe30sJGUobSwhMCkpLHt9LHtmaWxsOiJub25lIixjbGFzc05hbWU6InJlY2hhcnRzLWxpbmUtY3VydmUiLGNsaXBQYXRoOmk/InVybCgjY2xpcFBhdGgtIi5jb25jYXQobywiKSIpOm51bGwscG9pbnRzOnJ9LHMpLHt9LHt0eXBlOmYsbGF5b3V0OmQsY29ubmVjdE51bGxzOnB9KTtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGhzLHhmKHt9LHkse3BhdGhSZWY6dGhpcy5wYXRoUmVmfSkpfX0se2tleToicmVuZGVyQ3VydmVXaXRoQW5pbWF0aW9uIix2YWx1ZTpmdW5jdGlvbihyLGkpe3ZhciBvPXRoaXMscz10aGlzLnByb3BzLHU9cy5wb2ludHMsZj1zLnN0cm9rZURhc2hhcnJheSxkPXMuaXNBbmltYXRpb25BY3RpdmUscD1zLmFuaW1hdGlvbkJlZ2luLG09cy5hbmltYXRpb25EdXJhdGlvbix5PXMuYW5pbWF0aW9uRWFzaW5nLHg9cy5hbmltYXRpb25JZCx3PXMuYW5pbWF0ZU5ld1ZhbHVlcyxiPXMud2lkdGgsZz1zLmhlaWdodCxfPXRoaXMuc3RhdGUsTz1fLnByZXZQb2ludHMsRT1fLnRvdGFsTGVuZ3RoO3JldHVybiBGLmNyZWF0ZUVsZW1lbnQobGkse2JlZ2luOnAsZHVyYXRpb246bSxpc0FjdGl2ZTpkLGVhc2luZzp5LGZyb206e3Q6MH0sdG86e3Q6MX0sa2V5OiJsaW5lLSIuY29uY2F0KHgpLG9uQW5pbWF0aW9uRW5kOnRoaXMuaGFuZGxlQW5pbWF0aW9uRW5kLG9uQW5pbWF0aW9uU3RhcnQ6dGhpcy5oYW5kbGVBbmltYXRpb25TdGFydH0sZnVuY3Rpb24oail7dmFyIFQ9ai50O2lmKE8pe3ZhciBQPU8ubGVuZ3RoL3UubGVuZ3RoLE49dS5tYXAoZnVuY3Rpb24oJCx6KXt2YXIgVT1NYXRoLmZsb29yKHoqUCk7aWYoT1tVXSl7dmFyIEs9T1tVXSxMPXluKEsueCwkLngpLFc9eW4oSy55LCQueSk7cmV0dXJuIHlyKHlyKHt9LCQpLHt9LHt4OkwoVCkseTpXKFQpfSl9aWYodyl7dmFyIEg9eW4oYioyLCQueCksZWU9eW4oZy8yLCQueSk7cmV0dXJuIHlyKHlyKHt9LCQpLHt9LHt4OkgoVCkseTplZShUKX0pfXJldHVybiB5cih5cih7fSwkKSx7fSx7eDokLngseTokLnl9KX0pO3JldHVybiBvLnJlbmRlckN1cnZlU3RhdGljYWxseShOLHIsaSl9dmFyIFI9eW4oMCxFKSxJPVIoVCksVjtpZihmKXt2YXIgQj0iIi5jb25jYXQoZikuc3BsaXQoL1ssXHNdKy9naW0pLm1hcChmdW5jdGlvbigkKXtyZXR1cm4gcGFyc2VGbG9hdCgkKX0pO1Y9by5nZXRTdHJva2VEYXNoYXJyYXkoSSxFLEIpfWVsc2UgVj1vLmdlbmVyYXRlU2ltcGxlU3Ryb2tlRGFzaGFycmF5KEUsSSk7cmV0dXJuIG8ucmVuZGVyQ3VydmVTdGF0aWNhbGx5KHUscixpLHtzdHJva2VEYXNoYXJyYXk6Vn0pfSl9fSx7a2V5OiJyZW5kZXJDdXJ2ZSIsdmFsdWU6ZnVuY3Rpb24ocixpKXt2YXIgbz10aGlzLnByb3BzLHM9by5wb2ludHMsdT1vLmlzQW5pbWF0aW9uQWN0aXZlLGY9dGhpcy5zdGF0ZSxkPWYucHJldlBvaW50cyxwPWYudG90YWxMZW5ndGg7cmV0dXJuIHUmJnMmJnMubGVuZ3RoJiYoIWQmJnA+MHx8IXdzKGQscykpP3RoaXMucmVuZGVyQ3VydmVXaXRoQW5pbWF0aW9uKHIsaSk6dGhpcy5yZW5kZXJDdXJ2ZVN0YXRpY2FsbHkocyxyLGkpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByLGk9dGhpcy5wcm9wcyxvPWkuaGlkZSxzPWkuZG90LHU9aS5wb2ludHMsZj1pLmNsYXNzTmFtZSxkPWkueEF4aXMscD1pLnlBeGlzLG09aS50b3AseT1pLmxlZnQseD1pLndpZHRoLHc9aS5oZWlnaHQsYj1pLmlzQW5pbWF0aW9uQWN0aXZlLGc9aS5pZDtpZihvfHwhdXx8IXUubGVuZ3RoKXJldHVybiBudWxsO3ZhciBfPXRoaXMuc3RhdGUuaXNBbmltYXRpb25GaW5pc2hlZCxPPXUubGVuZ3RoPT09MSxFPVdlKCJyZWNoYXJ0cy1saW5lIixmKSxqPWQmJmQuYWxsb3dEYXRhT3ZlcmZsb3csVD1wJiZwLmFsbG93RGF0YU92ZXJmbG93LFA9anx8VCxOPUdlKGcpP3RoaXMuaWQ6ZyxSPShyPSRlKHMsITEpKSE9PW51bGwmJnIhPT12b2lkIDA/cjp7cjozLHN0cm9rZVdpZHRoOjJ9LEk9Ui5yLFY9ST09PXZvaWQgMD8zOkksQj1SLnN0cm9rZVdpZHRoLCQ9Qj09PXZvaWQgMD8yOkIsej1kVihzKT9zOnt9LFU9ei5jbGlwRG90LEs9VT09PXZvaWQgMD8hMDpVLEw9VioyKyQ7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOkV9LGp8fFQ/Ri5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEYuY3JlYXRlRWxlbWVudCgiY2xpcFBhdGgiLHtpZDoiY2xpcFBhdGgtIi5jb25jYXQoTil9LEYuY3JlYXRlRWxlbWVudCgicmVjdCIse3g6aj95OnkteC8yLHk6VD9tOm0tdy8yLHdpZHRoOmo/eDp4KjIsaGVpZ2h0OlQ/dzp3KjJ9KSksIUsmJkYuY3JlYXRlRWxlbWVudCgiY2xpcFBhdGgiLHtpZDoiY2xpcFBhdGgtZG90cy0iLmNvbmNhdChOKX0sRi5jcmVhdGVFbGVtZW50KCJyZWN0Iix7eDp5LUwvMix5Om0tTC8yLHdpZHRoOngrTCxoZWlnaHQ6dytMfSkpKTpudWxsLCFPJiZ0aGlzLnJlbmRlckN1cnZlKFAsTiksdGhpcy5yZW5kZXJFcnJvckJhcihQLE4pLChPfHxzKSYmdGhpcy5yZW5kZXJEb3RzKFAsSyxOKSwoIWJ8fF8pJiZUaS5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcyx1KSl9fV0sW3trZXk6ImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsdmFsdWU6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5hbmltYXRpb25JZCE9PWkucHJldkFuaW1hdGlvbklkP3twcmV2QW5pbWF0aW9uSWQ6ci5hbmltYXRpb25JZCxjdXJQb2ludHM6ci5wb2ludHMscHJldlBvaW50czppLmN1clBvaW50c306ci5wb2ludHMhPT1pLmN1clBvaW50cz97Y3VyUG9pbnRzOnIucG9pbnRzfTpudWxsfX0se2tleToicmVwZWF0Iix2YWx1ZTpmdW5jdGlvbihyLGkpe2Zvcih2YXIgbz1yLmxlbmd0aCUyIT09MD9bXS5jb25jYXQoeGwociksWzBdKTpyLHM9W10sdT0wO3U8aTsrK3Upcz1bXS5jb25jYXQoeGwocykseGwobykpO3JldHVybiBzfX0se2tleToicmVuZGVyRG90SXRlbSIsdmFsdWU6ZnVuY3Rpb24ocixpKXt2YXIgbztpZihGLmlzVmFsaWRFbGVtZW50KHIpKW89Ri5jbG9uZUVsZW1lbnQocixpKTtlbHNlIGlmKEhlKHIpKW89cihpKTtlbHNle3ZhciBzPWkua2V5LHU9WkkoaSxkZGUpLGY9V2UoInJlY2hhcnRzLWxpbmUtZG90Iix0eXBlb2YgciE9ImJvb2xlYW4iP3IuY2xhc3NOYW1lOiIiKTtvPUYuY3JlYXRlRWxlbWVudChOZCx4Zih7a2V5OnN9LHUse2NsYXNzTmFtZTpmfSkpfXJldHVybiBvfX1dKX0pKEMuUHVyZUNvbXBvbmVudCk7aWkoRGQsImRpc3BsYXlOYW1lIiwiTGluZSIpO2lpKERkLCJkZWZhdWx0UHJvcHMiLHt4QXhpc0lkOjAseUF4aXNJZDowLGNvbm5lY3ROdWxsczohMSxhY3RpdmVEb3Q6ITAsZG90OiEwLGxlZ2VuZFR5cGU6ImxpbmUiLHN0cm9rZToiIzMxODJiZCIsc3Ryb2tlV2lkdGg6MSxmaWxsOiIjZmZmIixwb2ludHM6W10saXNBbmltYXRpb25BY3RpdmU6IWJvLmlzU3NyLGFuaW1hdGVOZXdWYWx1ZXM6ITAsYW5pbWF0aW9uQmVnaW46MCxhbmltYXRpb25EdXJhdGlvbjoxNTAwLGFuaW1hdGlvbkVhc2luZzoiZWFzZSIsaGlkZTohMSxsYWJlbDohMX0pO2lpKERkLCJnZXRDb21wb3NlZERhdGEiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucHJvcHMsbj1lLnhBeGlzLHI9ZS55QXhpcyxpPWUueEF4aXNUaWNrcyxvPWUueUF4aXNUaWNrcyxzPWUuZGF0YUtleSx1PWUuYmFuZFNpemUsZj1lLmRpc3BsYXllZERhdGEsZD1lLm9mZnNldCxwPXQubGF5b3V0LG09Zi5tYXAoZnVuY3Rpb24oeSx4KXt2YXIgdz1KdCh5LHMpO3JldHVybiBwPT09Imhvcml6b250YWwiP3t4OlJtKHtheGlzOm4sdGlja3M6aSxiYW5kU2l6ZTp1LGVudHJ5OnksaW5kZXg6eH0pLHk6R2Uodyk/bnVsbDpyLnNjYWxlKHcpLHZhbHVlOncscGF5bG9hZDp5fTp7eDpHZSh3KT9udWxsOm4uc2NhbGUodykseTpSbSh7YXhpczpyLHRpY2tzOm8sYmFuZFNpemU6dSxlbnRyeTp5LGluZGV4Onh9KSx2YWx1ZTp3LHBheWxvYWQ6eX19KTtyZXR1cm4geXIoe3BvaW50czptLGxheW91dDpwfSxkKX0pO3ZhciBPZGU9WyJsYXlvdXQiLCJ0eXBlIiwic3Ryb2tlIiwiY29ubmVjdE51bGxzIiwiaXNSYW5nZSIsInJlZiJdLFRkZT1bImtleSJdLGRVO2Z1bmN0aW9uIGJ1KGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIGJ1PXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxidShlKX1mdW5jdGlvbiBoVShlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49RWRlKGUsdCkscixpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKylyPW9baV0sISh0LmluZGV4T2Yocik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKG5bcl09ZVtyXSl9cmV0dXJuIG59ZnVuY3Rpb24gRWRlKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7aWYodC5pbmRleE9mKHIpPj0wKWNvbnRpbnVlO25bcl09ZVtyXX1yZXR1cm4gbn1mdW5jdGlvbiBscygpe3JldHVybiBscz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBlJChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFdhKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP2UkKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtfaShlLHIsbltyXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTplJChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24ocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4scikpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gQ2RlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gdCQoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG1VKHIua2V5KSxyKX19ZnVuY3Rpb24gamRlKGUsdCxuKXtyZXR1cm4gdCYmdCQoZS5wcm90b3R5cGUsdCksbiYmdCQoZSxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIFBkZShlLHQsbil7cmV0dXJuIHQ9cnkodCksTWRlKGUscFUoKT9SZWZsZWN0LmNvbnN0cnVjdCh0LG58fFtdLHJ5KGUpLmNvbnN0cnVjdG9yKTp0LmFwcGx5KGUsbikpfWZ1bmN0aW9uIE1kZShlLHQpe2lmKHQmJihidSh0KT09PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpcmV0dXJuIHQ7aWYodCE9PXZvaWQgMCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBSZGUoZSl9ZnVuY3Rpb24gUmRlKGUpe2lmKGU9PT12b2lkIDApdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBwVSgpe3RyeXt2YXIgZT0hQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSl9Y2F0Y2h7fXJldHVybihwVT1mdW5jdGlvbigpe3JldHVybiEhZX0pKCl9ZnVuY3Rpb24gcnkoZSl7cmV0dXJuIHJ5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKG4pe3JldHVybiBuLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pfSxyeShlKX1mdW5jdGlvbiBOZGUoZSx0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIiYmdCE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmYV8oZSx0KX1mdW5jdGlvbiBhXyhlLHQpe3JldHVybiBhXz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihyLGkpe3JldHVybiByLl9fcHJvdG9fXz1pLHJ9LGFfKGUsdCl9ZnVuY3Rpb24gX2koZSx0LG4pe3JldHVybiB0PW1VKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gbVUoZSl7dmFyIHQ9a2RlKGUsInN0cmluZyIpO3JldHVybiBidSh0KT09InN5bWJvbCI/dDp0KyIifWZ1bmN0aW9uIGtkZShlLHQpe2lmKGJ1KGUpIT0ib2JqZWN0Inx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHQpO2lmKGJ1KHIpIT0ib2JqZWN0IilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9dmFyIHdhPShmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIG47Q2RlKHRoaXMsdCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkociksbz0wO288cjtvKyspaVtvXT1hcmd1bWVudHNbb107cmV0dXJuIG49UGRlKHRoaXMsdCxbXS5jb25jYXQoaSkpLF9pKG4sInN0YXRlIix7aXNBbmltYXRpb25GaW5pc2hlZDohMH0pLF9pKG4sImlkIixDcygicmVjaGFydHMtYXJlYS0iKSksX2kobiwiaGFuZGxlQW5pbWF0aW9uRW5kIixmdW5jdGlvbigpe3ZhciBzPW4ucHJvcHMub25BbmltYXRpb25FbmQ7bi5zZXRTdGF0ZSh7aXNBbmltYXRpb25GaW5pc2hlZDohMH0pLEhlKHMpJiZzKCl9KSxfaShuLCJoYW5kbGVBbmltYXRpb25TdGFydCIsZnVuY3Rpb24oKXt2YXIgcz1uLnByb3BzLm9uQW5pbWF0aW9uU3RhcnQ7bi5zZXRTdGF0ZSh7aXNBbmltYXRpb25GaW5pc2hlZDohMX0pLEhlKHMpJiZzKCl9KSxufXJldHVybiBOZGUodCxlKSxqZGUodCxbe2tleToicmVuZGVyRG90cyIsdmFsdWU6ZnVuY3Rpb24ocixpLG8pe3ZhciBzPXRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUsdT10aGlzLnN0YXRlLmlzQW5pbWF0aW9uRmluaXNoZWQ7aWYocyYmIXUpcmV0dXJuIG51bGw7dmFyIGY9dGhpcy5wcm9wcyxkPWYuZG90LHA9Zi5wb2ludHMsbT1mLmRhdGFLZXkseT0kZSh0aGlzLnByb3BzLCExKSx4PSRlKGQsITApLHc9cC5tYXAoZnVuY3Rpb24oZyxfKXt2YXIgTz1XYShXYShXYSh7a2V5OiJkb3QtIi5jb25jYXQoXykscjozfSx5KSx4KSx7fSx7aW5kZXg6XyxjeDpnLngsY3k6Zy55LGRhdGFLZXk6bSx2YWx1ZTpnLnZhbHVlLHBheWxvYWQ6Zy5wYXlsb2FkLHBvaW50czpwfSk7cmV0dXJuIHQucmVuZGVyRG90SXRlbShkLE8pfSksYj17Y2xpcFBhdGg6cj8idXJsKCNjbGlwUGF0aC0iLmNvbmNhdChpPyIiOiJkb3RzLSIpLmNvbmNhdChvLCIpIik6bnVsbH07cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCxscyh7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1hcmVhLWRvdHMifSxiKSx3KX19LHtrZXk6InJlbmRlckhvcml6b250YWxSZWN0Iix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgaT10aGlzLnByb3BzLG89aS5iYXNlTGluZSxzPWkucG9pbnRzLHU9aS5zdHJva2VXaWR0aCxmPXNbMF0ueCxkPXNbcy5sZW5ndGgtMV0ueCxwPXIqTWF0aC5hYnMoZi1kKSxtPVFhKHMubWFwKGZ1bmN0aW9uKHkpe3JldHVybiB5Lnl8fDB9KSk7cmV0dXJuIHZlKG8pJiZ0eXBlb2Ygbz09Im51bWJlciI/bT1NYXRoLm1heChvLG0pOm8mJkFycmF5LmlzQXJyYXkobykmJm8ubGVuZ3RoJiYobT1NYXRoLm1heChRYShvLm1hcChmdW5jdGlvbih5KXtyZXR1cm4geS55fHwwfSkpLG0pKSx2ZShtKT9GLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHt4OmY8ZD9mOmYtcCx5OjAsd2lkdGg6cCxoZWlnaHQ6TWF0aC5mbG9vcihtKyh1P3BhcnNlSW50KCIiLmNvbmNhdCh1KSwxMCk6MSkpfSk6bnVsbH19LHtrZXk6InJlbmRlclZlcnRpY2FsUmVjdCIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9dGhpcy5wcm9wcyxvPWkuYmFzZUxpbmUscz1pLnBvaW50cyx1PWkuc3Ryb2tlV2lkdGgsZj1zWzBdLnksZD1zW3MubGVuZ3RoLTFdLnkscD1yKk1hdGguYWJzKGYtZCksbT1RYShzLm1hcChmdW5jdGlvbih5KXtyZXR1cm4geS54fHwwfSkpO3JldHVybiB2ZShvKSYmdHlwZW9mIG89PSJudW1iZXIiP209TWF0aC5tYXgobyxtKTpvJiZBcnJheS5pc0FycmF5KG8pJiZvLmxlbmd0aCYmKG09TWF0aC5tYXgoUWEoby5tYXAoZnVuY3Rpb24oeSl7cmV0dXJuIHkueHx8MH0pKSxtKSksdmUobSk/Ri5jcmVhdGVFbGVtZW50KCJyZWN0Iix7eDowLHk6ZjxkP2Y6Zi1wLHdpZHRoOm0rKHU/cGFyc2VJbnQoIiIuY29uY2F0KHUpLDEwKToxKSxoZWlnaHQ6TWF0aC5mbG9vcihwKX0pOm51bGx9fSx7a2V5OiJyZW5kZXJDbGlwUmVjdCIsdmFsdWU6ZnVuY3Rpb24ocil7dmFyIGk9dGhpcy5wcm9wcy5sYXlvdXQ7cmV0dXJuIGk9PT0idmVydGljYWwiP3RoaXMucmVuZGVyVmVydGljYWxSZWN0KHIpOnRoaXMucmVuZGVySG9yaXpvbnRhbFJlY3Qocil9fSx7a2V5OiJyZW5kZXJBcmVhU3RhdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24ocixpLG8scyl7dmFyIHU9dGhpcy5wcm9wcyxmPXUubGF5b3V0LGQ9dS50eXBlLHA9dS5zdHJva2UsbT11LmNvbm5lY3ROdWxscyx5PXUuaXNSYW5nZTt1LnJlZjt2YXIgeD1oVSh1LE9kZSk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChhdCx7Y2xpcFBhdGg6bz8idXJsKCNjbGlwUGF0aC0iLmNvbmNhdChzLCIpIik6bnVsbH0sRi5jcmVhdGVFbGVtZW50KGhzLGxzKHt9LCRlKHgsITApLHtwb2ludHM6cixjb25uZWN0TnVsbHM6bSx0eXBlOmQsYmFzZUxpbmU6aSxsYXlvdXQ6ZixzdHJva2U6Im5vbmUiLGNsYXNzTmFtZToicmVjaGFydHMtYXJlYS1hcmVhIn0pKSxwIT09Im5vbmUiJiZGLmNyZWF0ZUVsZW1lbnQoaHMsbHMoe30sJGUodGhpcy5wcm9wcywhMSkse2NsYXNzTmFtZToicmVjaGFydHMtYXJlYS1jdXJ2ZSIsbGF5b3V0OmYsdHlwZTpkLGNvbm5lY3ROdWxsczptLGZpbGw6Im5vbmUiLHBvaW50czpyfSkpLHAhPT0ibm9uZSImJnkmJkYuY3JlYXRlRWxlbWVudChocyxscyh7fSwkZSh0aGlzLnByb3BzLCExKSx7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1hcmVhLWN1cnZlIixsYXlvdXQ6Zix0eXBlOmQsY29ubmVjdE51bGxzOm0sZmlsbDoibm9uZSIscG9pbnRzOml9KSkpfX0se2tleToicmVuZGVyQXJlYVdpdGhBbmltYXRpb24iLHZhbHVlOmZ1bmN0aW9uKHIsaSl7dmFyIG89dGhpcyxzPXRoaXMucHJvcHMsdT1zLnBvaW50cyxmPXMuYmFzZUxpbmUsZD1zLmlzQW5pbWF0aW9uQWN0aXZlLHA9cy5hbmltYXRpb25CZWdpbixtPXMuYW5pbWF0aW9uRHVyYXRpb24seT1zLmFuaW1hdGlvbkVhc2luZyx4PXMuYW5pbWF0aW9uSWQsdz10aGlzLnN0YXRlLGI9dy5wcmV2UG9pbnRzLGc9dy5wcmV2QmFzZUxpbmU7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChsaSx7YmVnaW46cCxkdXJhdGlvbjptLGlzQWN0aXZlOmQsZWFzaW5nOnksZnJvbTp7dDowfSx0bzp7dDoxfSxrZXk6ImFyZWEtIi5jb25jYXQoeCksb25BbmltYXRpb25FbmQ6dGhpcy5oYW5kbGVBbmltYXRpb25FbmQsb25BbmltYXRpb25TdGFydDp0aGlzLmhhbmRsZUFuaW1hdGlvblN0YXJ0fSxmdW5jdGlvbihfKXt2YXIgTz1fLnQ7aWYoYil7dmFyIEU9Yi5sZW5ndGgvdS5sZW5ndGgsaj11Lm1hcChmdW5jdGlvbihSLEkpe3ZhciBWPU1hdGguZmxvb3IoSSpFKTtpZihiW1ZdKXt2YXIgQj1iW1ZdLCQ9eW4oQi54LFIueCksej15bihCLnksUi55KTtyZXR1cm4gV2EoV2Eoe30sUikse30se3g6JChPKSx5OnooTyl9KX1yZXR1cm4gUn0pLFQ7aWYodmUoZikmJnR5cGVvZiBmPT0ibnVtYmVyIil7dmFyIFA9eW4oZyxmKTtUPVAoTyl9ZWxzZSBpZihHZShmKXx8SXUoZikpe3ZhciBOPXluKGcsMCk7VD1OKE8pfWVsc2UgVD1mLm1hcChmdW5jdGlvbihSLEkpe3ZhciBWPU1hdGguZmxvb3IoSSpFKTtpZihnW1ZdKXt2YXIgQj1nW1ZdLCQ9eW4oQi54LFIueCksej15bihCLnksUi55KTtyZXR1cm4gV2EoV2Eoe30sUikse30se3g6JChPKSx5OnooTyl9KX1yZXR1cm4gUn0pO3JldHVybiBvLnJlbmRlckFyZWFTdGF0aWNhbGx5KGosVCxyLGkpfXJldHVybiBGLmNyZWF0ZUVsZW1lbnQoYXQsbnVsbCxGLmNyZWF0ZUVsZW1lbnQoImRlZnMiLG51bGwsRi5jcmVhdGVFbGVtZW50KCJjbGlwUGF0aCIse2lkOiJhbmltYXRpb25DbGlwUGF0aC0iLmNvbmNhdChpKX0sby5yZW5kZXJDbGlwUmVjdChPKSkpLEYuY3JlYXRlRWxlbWVudChhdCx7Y2xpcFBhdGg6InVybCgjYW5pbWF0aW9uQ2xpcFBhdGgtIi5jb25jYXQoaSwiKSIpfSxvLnJlbmRlckFyZWFTdGF0aWNhbGx5KHUsZixyLGkpKSl9KX19LHtrZXk6InJlbmRlckFyZWEiLHZhbHVlOmZ1bmN0aW9uKHIsaSl7dmFyIG89dGhpcy5wcm9wcyxzPW8ucG9pbnRzLHU9by5iYXNlTGluZSxmPW8uaXNBbmltYXRpb25BY3RpdmUsZD10aGlzLnN0YXRlLHA9ZC5wcmV2UG9pbnRzLG09ZC5wcmV2QmFzZUxpbmUseT1kLnRvdGFsTGVuZ3RoO3JldHVybiBmJiZzJiZzLmxlbmd0aCYmKCFwJiZ5PjB8fCF3cyhwLHMpfHwhd3MobSx1KSk/dGhpcy5yZW5kZXJBcmVhV2l0aEFuaW1hdGlvbihyLGkpOnRoaXMucmVuZGVyQXJlYVN0YXRpY2FsbHkocyx1LHIsaSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHIsaT10aGlzLnByb3BzLG89aS5oaWRlLHM9aS5kb3QsdT1pLnBvaW50cyxmPWkuY2xhc3NOYW1lLGQ9aS50b3AscD1pLmxlZnQsbT1pLnhBeGlzLHk9aS55QXhpcyx4PWkud2lkdGgsdz1pLmhlaWdodCxiPWkuaXNBbmltYXRpb25BY3RpdmUsZz1pLmlkO2lmKG98fCF1fHwhdS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIF89dGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkLE89dS5sZW5ndGg9PT0xLEU9V2UoInJlY2hhcnRzLWFyZWEiLGYpLGo9bSYmbS5hbGxvd0RhdGFPdmVyZmxvdyxUPXkmJnkuYWxsb3dEYXRhT3ZlcmZsb3csUD1qfHxULE49R2UoZyk/dGhpcy5pZDpnLFI9KHI9JGUocywhMSkpIT09bnVsbCYmciE9PXZvaWQgMD9yOntyOjMsc3Ryb2tlV2lkdGg6Mn0sST1SLnIsVj1JPT09dm9pZCAwPzM6SSxCPVIuc3Ryb2tlV2lkdGgsJD1CPT09dm9pZCAwPzI6Qix6PWRWKHMpP3M6e30sVT16LmNsaXBEb3QsSz1VPT09dm9pZCAwPyEwOlUsTD1WKjIrJDtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KGF0LHtjbGFzc05hbWU6RX0sanx8VD9GLmNyZWF0ZUVsZW1lbnQoImRlZnMiLG51bGwsRi5jcmVhdGVFbGVtZW50KCJjbGlwUGF0aCIse2lkOiJjbGlwUGF0aC0iLmNvbmNhdChOKX0sRi5jcmVhdGVFbGVtZW50KCJyZWN0Iix7eDpqP3A6cC14LzIseTpUP2Q6ZC13LzIsd2lkdGg6aj94OngqMixoZWlnaHQ6VD93OncqMn0pKSwhSyYmRi5jcmVhdGVFbGVtZW50KCJjbGlwUGF0aCIse2lkOiJjbGlwUGF0aC1kb3RzLSIuY29uY2F0KE4pfSxGLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHt4OnAtTC8yLHk6ZC1MLzIsd2lkdGg6eCtMLGhlaWdodDp3K0x9KSkpOm51bGwsTz9udWxsOnRoaXMucmVuZGVyQXJlYShQLE4pLChzfHxPKSYmdGhpcy5yZW5kZXJEb3RzKFAsSyxOKSwoIWJ8fF8pJiZUaS5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcyx1KSl9fV0sW3trZXk6ImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsdmFsdWU6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5hbmltYXRpb25JZCE9PWkucHJldkFuaW1hdGlvbklkP3twcmV2QW5pbWF0aW9uSWQ6ci5hbmltYXRpb25JZCxjdXJQb2ludHM6ci5wb2ludHMsY3VyQmFzZUxpbmU6ci5iYXNlTGluZSxwcmV2UG9pbnRzOmkuY3VyUG9pbnRzLHByZXZCYXNlTGluZTppLmN1ckJhc2VMaW5lfTpyLnBvaW50cyE9PWkuY3VyUG9pbnRzfHxyLmJhc2VMaW5lIT09aS5jdXJCYXNlTGluZT97Y3VyUG9pbnRzOnIucG9pbnRzLGN1ckJhc2VMaW5lOnIuYmFzZUxpbmV9Om51bGx9fV0pfSkoQy5QdXJlQ29tcG9uZW50KTtkVT13YTtfaSh3YSwiZGlzcGxheU5hbWUiLCJBcmVhIik7X2kod2EsImRlZmF1bHRQcm9wcyIse3N0cm9rZToiIzMxODJiZCIsZmlsbDoiIzMxODJiZCIsZmlsbE9wYWNpdHk6LjYseEF4aXNJZDowLHlBeGlzSWQ6MCxsZWdlbmRUeXBlOiJsaW5lIixjb25uZWN0TnVsbHM6ITEscG9pbnRzOltdLGRvdDohMSxhY3RpdmVEb3Q6ITAsaGlkZTohMSxpc0FuaW1hdGlvbkFjdGl2ZTohYm8uaXNTc3IsYW5pbWF0aW9uQmVnaW46MCxhbmltYXRpb25EdXJhdGlvbjoxNTAwLGFuaW1hdGlvbkVhc2luZzoiZWFzZSJ9KTtfaSh3YSwiZ2V0QmFzZVZhbHVlIixmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1lLmxheW91dCxvPWUuYmFzZVZhbHVlLHM9dC5wcm9wcy5iYXNlVmFsdWUsdT1zPz9vO2lmKHZlKHUpJiZ0eXBlb2YgdT09Im51bWJlciIpcmV0dXJuIHU7dmFyIGY9aT09PSJob3Jpem9udGFsIj9yOm4sZD1mLnNjYWxlLmRvbWFpbigpO2lmKGYudHlwZT09PSJudW1iZXIiKXt2YXIgcD1NYXRoLm1heChkWzBdLGRbMV0pLG09TWF0aC5taW4oZFswXSxkWzFdKTtyZXR1cm4gdT09PSJkYXRhTWluIj9tOnU9PT0iZGF0YU1heCJ8fHA8MD9wOk1hdGgubWF4KE1hdGgubWluKGRbMF0sZFsxXSksMCl9cmV0dXJuIHU9PT0iZGF0YU1pbiI/ZFswXTp1PT09ImRhdGFNYXgiP2RbMV06ZFswXX0pO19pKHdhLCJnZXRDb21wb3NlZERhdGEiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucHJvcHMsbj1lLml0ZW0scj1lLnhBeGlzLGk9ZS55QXhpcyxvPWUueEF4aXNUaWNrcyxzPWUueUF4aXNUaWNrcyx1PWUuYmFuZFNpemUsZj1lLmRhdGFLZXksZD1lLnN0YWNrZWREYXRhLHA9ZS5kYXRhU3RhcnRJbmRleCxtPWUuZGlzcGxheWVkRGF0YSx5PWUub2Zmc2V0LHg9dC5sYXlvdXQsdz1kJiZkLmxlbmd0aCxiPWRVLmdldEJhc2VWYWx1ZSh0LG4scixpKSxnPXg9PT0iaG9yaXpvbnRhbCIsXz0hMSxPPW0ubWFwKGZ1bmN0aW9uKGosVCl7dmFyIFA7dz9QPWRbcCtUXTooUD1KdChqLGYpLEFycmF5LmlzQXJyYXkoUCk/Xz0hMDpQPVtiLFBdKTt2YXIgTj1QWzFdPT1udWxsfHx3JiZKdChqLGYpPT1udWxsO3JldHVybiBnP3t4OlJtKHtheGlzOnIsdGlja3M6byxiYW5kU2l6ZTp1LGVudHJ5OmosaW5kZXg6VH0pLHk6Tj9udWxsOmkuc2NhbGUoUFsxXSksdmFsdWU6UCxwYXlsb2FkOmp9Ont4Ok4/bnVsbDpyLnNjYWxlKFBbMV0pLHk6Um0oe2F4aXM6aSx0aWNrczpzLGJhbmRTaXplOnUsZW50cnk6aixpbmRleDpUfSksdmFsdWU6UCxwYXlsb2FkOmp9fSksRTtyZXR1cm4gd3x8Xz9FPU8ubWFwKGZ1bmN0aW9uKGope3ZhciBUPUFycmF5LmlzQXJyYXkoai52YWx1ZSk/ai52YWx1ZVswXTpudWxsO3JldHVybiBnP3t4OmoueCx5OlQhPW51bGwmJmoueSE9bnVsbD9pLnNjYWxlKFQpOm51bGx9Ont4OlQhPW51bGw/ci5zY2FsZShUKTpudWxsLHk6ai55fX0pOkU9Zz9pLnNjYWxlKGIpOnIuc2NhbGUoYiksV2Eoe3BvaW50czpPLGJhc2VMaW5lOkUsbGF5b3V0OngsaXNSYW5nZTpffSx5KX0pO19pKHdhLCJyZW5kZXJEb3RJdGVtIixmdW5jdGlvbihlLHQpe3ZhciBuO2lmKEYuaXNWYWxpZEVsZW1lbnQoZSkpbj1GLmNsb25lRWxlbWVudChlLHQpO2Vsc2UgaWYoSGUoZSkpbj1lKHQpO2Vsc2V7dmFyIHI9V2UoInJlY2hhcnRzLWFyZWEtZG90Iix0eXBlb2YgZSE9ImJvb2xlYW4iP2UuY2xhc3NOYW1lOiIiKSxpPXQua2V5LG89aFUodCxUZGUpO249Ri5jcmVhdGVFbGVtZW50KE5kLGxzKHt9LG8se2tleTppLGNsYXNzTmFtZTpyfSkpfXJldHVybiBufSk7ZnVuY3Rpb24geHUoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4geHU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHh1KGUpfWZ1bmN0aW9uIERkZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIExkZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsZ1Uoci5rZXkpLHIpfX1mdW5jdGlvbiBJZGUoZSx0LG4pe3JldHVybiB0JiZMZGUoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiAkZGUoZSx0LG4pe3JldHVybiB0PWl5KHQpLEJkZShlLHlVKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxpeShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBCZGUoZSx0KXtpZih0JiYoeHUodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gVmRlKGUpfWZ1bmN0aW9uIFZkZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24geVUoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4oeVU9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIGl5KGUpe3JldHVybiBpeT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0saXkoZSl9ZnVuY3Rpb24gcWRlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJm9fKGUsdCl9ZnVuY3Rpb24gb18oZSx0KXtyZXR1cm4gb189T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxvXyhlLHQpfWZ1bmN0aW9uIHZVKGUsdCxuKXtyZXR1cm4gdD1nVSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGdVKGUpe3ZhciB0PVVkZShlLCJzdHJpbmciKTtyZXR1cm4geHUodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBVZGUoZSx0KXtpZih4dShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZih4dShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfWZ1bmN0aW9uIHNfKCl7cmV0dXJuIHNfPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sc18uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHpkZShlKXt2YXIgdD1lLnhBeGlzSWQsbj1KcSgpLHI9ZVUoKSxpPVpxKHQpO3JldHVybiBpPT1udWxsP251bGw6Qy5jcmVhdGVFbGVtZW50KGJ2LHNfKHt9LGkse2NsYXNzTmFtZTpXZSgicmVjaGFydHMtIi5jb25jYXQoaS5heGlzVHlwZSwiICIpLmNvbmNhdChpLmF4aXNUeXBlKSxpLmNsYXNzTmFtZSksdmlld0JveDp7eDowLHk6MCx3aWR0aDpuLGhlaWdodDpyfSx0aWNrc0dlbmVyYXRvcjpmdW5jdGlvbihzKXtyZXR1cm4gc3MocywhMCl9fSkpfXZhciBVdT0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBEZGUodGhpcyx0KSwkZGUodGhpcyx0LGFyZ3VtZW50cyl9cmV0dXJuIHFkZSh0LGUpLElkZSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEMuY3JlYXRlRWxlbWVudCh6ZGUsdGhpcy5wcm9wcyl9fV0pfSkoQy5Db21wb25lbnQpO3ZVKFV1LCJkaXNwbGF5TmFtZSIsIlhBeGlzIik7dlUoVXUsImRlZmF1bHRQcm9wcyIse2FsbG93RGVjaW1hbHM6ITAsaGlkZTohMSxvcmllbnRhdGlvbjoiYm90dG9tIix3aWR0aDowLGhlaWdodDozMCxtaXJyb3I6ITEseEF4aXNJZDowLHRpY2tDb3VudDo1LHR5cGU6ImNhdGVnb3J5IixwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MH0sYWxsb3dEYXRhT3ZlcmZsb3c6ITEsc2NhbGU6ImF1dG8iLHJldmVyc2VkOiExLGFsbG93RHVwbGljYXRlZENhdGVnb3J5OiEwfSk7ZnVuY3Rpb24gd3UoZSl7IkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjtyZXR1cm4gd3U9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09InN5bWJvbCI/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LHd1KGUpfWZ1bmN0aW9uIEZkZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEhkZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsd1Uoci5rZXkpLHIpfX1mdW5jdGlvbiBHZGUoZSx0LG4pe3JldHVybiB0JiZIZGUoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBLZGUoZSx0LG4pe3JldHVybiB0PWF5KHQpLFdkZShlLGJVKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxheShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBXZGUoZSx0KXtpZih0JiYod3UodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gWWRlKGUpfWZ1bmN0aW9uIFlkZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gYlUoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4oYlU9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIGF5KGUpe3JldHVybiBheT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sYXkoZSl9ZnVuY3Rpb24gWGRlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmxfKGUsdCl9ZnVuY3Rpb24gbF8oZSx0KXtyZXR1cm4gbF89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxsXyhlLHQpfWZ1bmN0aW9uIHhVKGUsdCxuKXtyZXR1cm4gdD13VSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHdVKGUpe3ZhciB0PVpkZShlLCJzdHJpbmciKTtyZXR1cm4gd3UodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiBaZGUoZSx0KXtpZih3dShlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZih3dShyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfWZ1bmN0aW9uIHVfKCl7cmV0dXJuIHVfPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sdV8uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBRZGU9ZnVuY3Rpb24odCl7dmFyIG49dC55QXhpc0lkLHI9SnEoKSxpPWVVKCksbz1RcShuKTtyZXR1cm4gbz09bnVsbD9udWxsOkMuY3JlYXRlRWxlbWVudChidix1Xyh7fSxvLHtjbGFzc05hbWU6V2UoInJlY2hhcnRzLSIuY29uY2F0KG8uYXhpc1R5cGUsIiAiKS5jb25jYXQoby5heGlzVHlwZSksby5jbGFzc05hbWUpLHZpZXdCb3g6e3g6MCx5OjAsd2lkdGg6cixoZWlnaHQ6aX0sdGlja3NHZW5lcmF0b3I6ZnVuY3Rpb24odSl7cmV0dXJuIHNzKHUsITApfX0pKX0senU9KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gRmRlKHRoaXMsdCksS2RlKHRoaXMsdCxhcmd1bWVudHMpfXJldHVybiBYZGUodCxlKSxHZGUodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBDLmNyZWF0ZUVsZW1lbnQoUWRlLHRoaXMucHJvcHMpfX1dKX0pKEMuQ29tcG9uZW50KTt4VSh6dSwiZGlzcGxheU5hbWUiLCJZQXhpcyIpO3hVKHp1LCJkZWZhdWx0UHJvcHMiLHthbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeTohMCxhbGxvd0RlY2ltYWxzOiEwLGhpZGU6ITEsb3JpZW50YXRpb246ImxlZnQiLHdpZHRoOjYwLGhlaWdodDowLG1pcnJvcjohMSx5QXhpc0lkOjAsdGlja0NvdW50OjUsdHlwZToibnVtYmVyIixwYWRkaW5nOnt0b3A6MCxib3R0b206MH0sYWxsb3dEYXRhT3ZlcmZsb3c6ITEsc2NhbGU6ImF1dG8iLHJldmVyc2VkOiExfSk7ZnVuY3Rpb24gbiQoZSl7cmV0dXJuIG5oZShlKXx8dGhlKGUpfHxlaGUoZSl8fEpkZSgpfWZ1bmN0aW9uIEpkZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gZWhlKGUsdCl7aWYoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBjXyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihuPT09Ik9iamVjdCImJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PSJNYXAifHxuPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYobj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gY18oZSx0KX19ZnVuY3Rpb24gdGhlKGUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBuaGUoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gY18oZSl9ZnVuY3Rpb24gY18oZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgZl89ZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgcz13cih0LE9UKSx1PXdyKHQseXYpLGY9W10uY29uY2F0KG4kKHMpLG4kKHUpKSxkPXdyKHQsZ3YpLHA9IiIuY29uY2F0KGksIklkIiksbT1pWzBdLHk9bjtpZihmLmxlbmd0aCYmKHk9Zi5yZWR1Y2UoZnVuY3Rpb24oYixnKXtpZihnLnByb3BzW3BdPT09ciYmRWkoZy5wcm9wcywiZXh0ZW5kRG9tYWluIikmJnZlKGcucHJvcHNbbV0pKXt2YXIgXz1nLnByb3BzW21dO3JldHVybltNYXRoLm1pbihiWzBdLF8pLE1hdGgubWF4KGJbMV0sXyldfXJldHVybiBifSx5KSksZC5sZW5ndGgpe3ZhciB4PSIiLmNvbmNhdChtLCIxIiksdz0iIi5jb25jYXQobSwiMiIpO3k9ZC5yZWR1Y2UoZnVuY3Rpb24oYixnKXtpZihnLnByb3BzW3BdPT09ciYmRWkoZy5wcm9wcywiZXh0ZW5kRG9tYWluIikmJnZlKGcucHJvcHNbeF0pJiZ2ZShnLnByb3BzW3ddKSl7dmFyIF89Zy5wcm9wc1t4XSxPPWcucHJvcHNbd107cmV0dXJuW01hdGgubWluKGJbMF0sXyxPKSxNYXRoLm1heChiWzFdLF8sTyldfXJldHVybiBifSx5KX1yZXR1cm4gbyYmby5sZW5ndGgmJih5PW8ucmVkdWNlKGZ1bmN0aW9uKGIsZyl7cmV0dXJuIHZlKGcpP1tNYXRoLm1pbihiWzBdLGcpLE1hdGgubWF4KGJbMV0sZyldOmJ9LHkpKSx5fSxyUz17ZXhwb3J0czp7fX0sciQ7ZnVuY3Rpb24gcmhlKCl7cmV0dXJuIHIkfHwociQ9MSwoZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPSJ+IjtmdW5jdGlvbiByKCl7fU9iamVjdC5jcmVhdGUmJihyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpLG5ldyByKCkuX19wcm90b19ffHwobj0hMSkpO2Z1bmN0aW9uIGkoZixkLHApe3RoaXMuZm49Zix0aGlzLmNvbnRleHQ9ZCx0aGlzLm9uY2U9cHx8ITF9ZnVuY3Rpb24gbyhmLGQscCxtLHkpe2lmKHR5cGVvZiBwIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgeD1uZXcgaShwLG18fGYseSksdz1uP24rZDpkO3JldHVybiBmLl9ldmVudHNbd10/Zi5fZXZlbnRzW3ddLmZuP2YuX2V2ZW50c1t3XT1bZi5fZXZlbnRzW3ddLHhdOmYuX2V2ZW50c1t3XS5wdXNoKHgpOihmLl9ldmVudHNbd109eCxmLl9ldmVudHNDb3VudCsrKSxmfWZ1bmN0aW9uIHMoZixkKXstLWYuX2V2ZW50c0NvdW50PT09MD9mLl9ldmVudHM9bmV3IHI6ZGVsZXRlIGYuX2V2ZW50c1tkXX1mdW5jdGlvbiB1KCl7dGhpcy5fZXZlbnRzPW5ldyByLHRoaXMuX2V2ZW50c0NvdW50PTB9dS5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3ZhciBkPVtdLHAsbTtpZih0aGlzLl9ldmVudHNDb3VudD09PTApcmV0dXJuIGQ7Zm9yKG0gaW4gcD10aGlzLl9ldmVudHMpdC5jYWxsKHAsbSkmJmQucHVzaChuP20uc2xpY2UoMSk6bSk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhwKSk6ZH0sdS5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGQpe3ZhciBwPW4/bitkOmQsbT10aGlzLl9ldmVudHNbcF07aWYoIW0pcmV0dXJuW107aWYobS5mbilyZXR1cm5bbS5mbl07Zm9yKHZhciB5PTAseD1tLmxlbmd0aCx3PW5ldyBBcnJheSh4KTt5PHg7eSsrKXdbeV09bVt5XS5mbjtyZXR1cm4gd30sdS5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbihkKXt2YXIgcD1uP24rZDpkLG09dGhpcy5fZXZlbnRzW3BdO3JldHVybiBtP20uZm4/MTptLmxlbmd0aDowfSx1LnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGQscCxtLHkseCx3KXt2YXIgYj1uP24rZDpkO2lmKCF0aGlzLl9ldmVudHNbYl0pcmV0dXJuITE7dmFyIGc9dGhpcy5fZXZlbnRzW2JdLF89YXJndW1lbnRzLmxlbmd0aCxPLEU7aWYoZy5mbil7c3dpdGNoKGcub25jZSYmdGhpcy5yZW1vdmVMaXN0ZW5lcihkLGcuZm4sdm9pZCAwLCEwKSxfKXtjYXNlIDE6cmV0dXJuIGcuZm4uY2FsbChnLmNvbnRleHQpLCEwO2Nhc2UgMjpyZXR1cm4gZy5mbi5jYWxsKGcuY29udGV4dCxwKSwhMDtjYXNlIDM6cmV0dXJuIGcuZm4uY2FsbChnLmNvbnRleHQscCxtKSwhMDtjYXNlIDQ6cmV0dXJuIGcuZm4uY2FsbChnLmNvbnRleHQscCxtLHkpLCEwO2Nhc2UgNTpyZXR1cm4gZy5mbi5jYWxsKGcuY29udGV4dCxwLG0seSx4KSwhMDtjYXNlIDY6cmV0dXJuIGcuZm4uY2FsbChnLmNvbnRleHQscCxtLHkseCx3KSwhMH1mb3IoRT0xLE89bmV3IEFycmF5KF8tMSk7RTxfO0UrKylPW0UtMV09YXJndW1lbnRzW0VdO2cuZm4uYXBwbHkoZy5jb250ZXh0LE8pfWVsc2V7dmFyIGo9Zy5sZW5ndGgsVDtmb3IoRT0wO0U8ajtFKyspc3dpdGNoKGdbRV0ub25jZSYmdGhpcy5yZW1vdmVMaXN0ZW5lcihkLGdbRV0uZm4sdm9pZCAwLCEwKSxfKXtjYXNlIDE6Z1tFXS5mbi5jYWxsKGdbRV0uY29udGV4dCk7YnJlYWs7Y2FzZSAyOmdbRV0uZm4uY2FsbChnW0VdLmNvbnRleHQscCk7YnJlYWs7Y2FzZSAzOmdbRV0uZm4uY2FsbChnW0VdLmNvbnRleHQscCxtKTticmVhaztjYXNlIDQ6Z1tFXS5mbi5jYWxsKGdbRV0uY29udGV4dCxwLG0seSk7YnJlYWs7ZGVmYXVsdDppZighTylmb3IoVD0xLE89bmV3IEFycmF5KF8tMSk7VDxfO1QrKylPW1QtMV09YXJndW1lbnRzW1RdO2dbRV0uZm4uYXBwbHkoZ1tFXS5jb250ZXh0LE8pfX1yZXR1cm4hMH0sdS5wcm90b3R5cGUub249ZnVuY3Rpb24oZCxwLG0pe3JldHVybiBvKHRoaXMsZCxwLG0sITEpfSx1LnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGQscCxtKXtyZXR1cm4gbyh0aGlzLGQscCxtLCEwKX0sdS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZCxwLG0seSl7dmFyIHg9bj9uK2Q6ZDtpZighdGhpcy5fZXZlbnRzW3hdKXJldHVybiB0aGlzO2lmKCFwKXJldHVybiBzKHRoaXMseCksdGhpczt2YXIgdz10aGlzLl9ldmVudHNbeF07aWYody5mbil3LmZuPT09cCYmKCF5fHx3Lm9uY2UpJiYoIW18fHcuY29udGV4dD09PW0pJiZzKHRoaXMseCk7ZWxzZXtmb3IodmFyIGI9MCxnPVtdLF89dy5sZW5ndGg7YjxfO2IrKykod1tiXS5mbiE9PXB8fHkmJiF3W2JdLm9uY2V8fG0mJndbYl0uY29udGV4dCE9PW0pJiZnLnB1c2god1tiXSk7Zy5sZW5ndGg/dGhpcy5fZXZlbnRzW3hdPWcubGVuZ3RoPT09MT9nWzBdOmc6cyh0aGlzLHgpfXJldHVybiB0aGlzfSx1LnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZCl7dmFyIHA7cmV0dXJuIGQ/KHA9bj9uK2Q6ZCx0aGlzLl9ldmVudHNbcF0mJnModGhpcyxwKSk6KHRoaXMuX2V2ZW50cz1uZXcgcix0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzfSx1LnByb3RvdHlwZS5vZmY9dS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsdS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9dS5wcm90b3R5cGUub24sdS5wcmVmaXhlZD1uLHUuRXZlbnRFbWl0dGVyPXUsZS5leHBvcnRzPXV9KShyUykpLHJTLmV4cG9ydHN9dmFyIGloZT1yaGUoKTtjb25zdCBhaGU9T3QoaWhlKTt2YXIgaVM9bmV3IGFoZSxhUz0icmVjaGFydHMuc3luY01vdXNlRXZlbnRzIjtmdW5jdGlvbiBjZChlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBjZD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sY2QoZSl9ZnVuY3Rpb24gb2hlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gc2hlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTVShyLmtleSkscil9fWZ1bmN0aW9uIGxoZShlLHQsbil7cmV0dXJuIHQmJnNoZShlLnByb3RvdHlwZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIG9TKGUsdCxuKXtyZXR1cm4gdD1TVSh0KSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFNVKGUpe3ZhciB0PXVoZShlLCJzdHJpbmciKTtyZXR1cm4gY2QodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiB1aGUoZSx0KXtpZihjZChlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihjZChyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKGUpfXZhciBjaGU9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe29oZSh0aGlzLGUpLG9TKHRoaXMsImFjdGl2ZUluZGV4IiwwKSxvUyh0aGlzLCJjb29yZGluYXRlTGlzdCIsW10pLG9TKHRoaXMsImxheW91dCIsImhvcml6b250YWwiKX1yZXR1cm4gbGhlKGUsW3trZXk6InNldERldGFpbHMiLHZhbHVlOmZ1bmN0aW9uKG4pe3ZhciByLGk9bi5jb29yZGluYXRlTGlzdCxvPWk9PT12b2lkIDA/bnVsbDppLHM9bi5jb250YWluZXIsdT1zPT09dm9pZCAwP251bGw6cyxmPW4ubGF5b3V0LGQ9Zj09PXZvaWQgMD9udWxsOmYscD1uLm9mZnNldCxtPXA9PT12b2lkIDA/bnVsbDpwLHk9bi5tb3VzZUhhbmRsZXJDYWxsYmFjayx4PXk9PT12b2lkIDA/bnVsbDp5O3RoaXMuY29vcmRpbmF0ZUxpc3Q9KHI9bz8/dGhpcy5jb29yZGluYXRlTGlzdCkhPT1udWxsJiZyIT09dm9pZCAwP3I6W10sdGhpcy5jb250YWluZXI9dT8/dGhpcy5jb250YWluZXIsdGhpcy5sYXlvdXQ9ZD8/dGhpcy5sYXlvdXQsdGhpcy5vZmZzZXQ9bT8/dGhpcy5vZmZzZXQsdGhpcy5tb3VzZUhhbmRsZXJDYWxsYmFjaz14Pz90aGlzLm1vdXNlSGFuZGxlckNhbGxiYWNrLHRoaXMuYWN0aXZlSW5kZXg9TWF0aC5taW4oTWF0aC5tYXgodGhpcy5hY3RpdmVJbmRleCwwKSx0aGlzLmNvb3JkaW5hdGVMaXN0Lmxlbmd0aC0xKX19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3Bvb2ZNb3VzZSgpfX0se2tleToia2V5Ym9hcmRFdmVudCIsdmFsdWU6ZnVuY3Rpb24obil7aWYodGhpcy5jb29yZGluYXRlTGlzdC5sZW5ndGghPT0wKXN3aXRjaChuLmtleSl7Y2FzZSJBcnJvd1JpZ2h0Ijp7aWYodGhpcy5sYXlvdXQhPT0iaG9yaXpvbnRhbCIpcmV0dXJuO3RoaXMuYWN0aXZlSW5kZXg9TWF0aC5taW4odGhpcy5hY3RpdmVJbmRleCsxLHRoaXMuY29vcmRpbmF0ZUxpc3QubGVuZ3RoLTEpLHRoaXMuc3Bvb2ZNb3VzZSgpO2JyZWFrfWNhc2UiQXJyb3dMZWZ0Ijp7aWYodGhpcy5sYXlvdXQhPT0iaG9yaXpvbnRhbCIpcmV0dXJuO3RoaXMuYWN0aXZlSW5kZXg9TWF0aC5tYXgodGhpcy5hY3RpdmVJbmRleC0xLDApLHRoaXMuc3Bvb2ZNb3VzZSgpO2JyZWFrfX19fSx7a2V5OiJzZXRJbmRleCIsdmFsdWU6ZnVuY3Rpb24obil7dGhpcy5hY3RpdmVJbmRleD1ufX0se2tleToic3Bvb2ZNb3VzZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgbixyO2lmKHRoaXMubGF5b3V0PT09Imhvcml6b250YWwiJiZ0aGlzLmNvb3JkaW5hdGVMaXN0Lmxlbmd0aCE9PTApe3ZhciBpPXRoaXMuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89aS54LHM9aS55LHU9aS5oZWlnaHQsZj10aGlzLmNvb3JkaW5hdGVMaXN0W3RoaXMuYWN0aXZlSW5kZXhdLmNvb3JkaW5hdGUsZD0oKG49d2luZG93KT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uc2Nyb2xsWCl8fDAscD0oKHI9d2luZG93KT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuc2Nyb2xsWSl8fDAsbT1vK2YrZCx5PXMrdGhpcy5vZmZzZXQudG9wK3UvMitwO3RoaXMubW91c2VIYW5kbGVyQ2FsbGJhY2soe3BhZ2VYOm0scGFnZVk6eX0pfX19XSl9KSgpO2Z1bmN0aW9uIGZoZShlLHQsbil7aWYobj09PSJudW1iZXIiJiZ0PT09ITAmJkFycmF5LmlzQXJyYXkoZSkpe3ZhciByPWU/LlswXSxpPWU/LlsxXTtpZihyJiZpJiZ2ZShyKSYmdmUoaSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gZGhlKGUsdCxuLHIpe3ZhciBpPXIvMjtyZXR1cm57c3Ryb2tlOiJub25lIixmaWxsOiIjY2NjIix4OmU9PT0iaG9yaXpvbnRhbCI/dC54LWk6bi5sZWZ0Ky41LHk6ZT09PSJob3Jpem9udGFsIj9uLnRvcCsuNTp0LnktaSx3aWR0aDplPT09Imhvcml6b250YWwiP3I6bi53aWR0aC0xLGhlaWdodDplPT09Imhvcml6b250YWwiP24uaGVpZ2h0LTE6cn19ZnVuY3Rpb24gQVUoZSl7dmFyIHQ9ZS5jeCxuPWUuY3kscj1lLnJhZGl1cyxpPWUuc3RhcnRBbmdsZSxvPWUuZW5kQW5nbGUscz1MdCh0LG4scixpKSx1PUx0KHQsbixyLG8pO3JldHVybntwb2ludHM6W3MsdV0sY3g6dCxjeTpuLHJhZGl1czpyLHN0YXJ0QW5nbGU6aSxlbmRBbmdsZTpvfX1mdW5jdGlvbiBoaGUoZSx0LG4pe3ZhciByLGksbyxzO2lmKGU9PT0iaG9yaXpvbnRhbCIpcj10Lngsbz1yLGk9bi50b3Ascz1uLnRvcCtuLmhlaWdodDtlbHNlIGlmKGU9PT0idmVydGljYWwiKWk9dC55LHM9aSxyPW4ubGVmdCxvPW4ubGVmdCtuLndpZHRoO2Vsc2UgaWYodC5jeCE9bnVsbCYmdC5jeSE9bnVsbClpZihlPT09ImNlbnRyaWMiKXt2YXIgdT10LmN4LGY9dC5jeSxkPXQuaW5uZXJSYWRpdXMscD10Lm91dGVyUmFkaXVzLG09dC5hbmdsZSx5PUx0KHUsZixkLG0pLHg9THQodSxmLHAsbSk7cj15LngsaT15Lnksbz14Lngscz14Lnl9ZWxzZSByZXR1cm4gQVUodCk7cmV0dXJuW3t4OnIseTppfSx7eDpvLHk6c31dfWZ1bmN0aW9uIGZkKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIGZkPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxmZChlKX1mdW5jdGlvbiBpJChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGJwKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XSE9bnVsbD9hcmd1bWVudHNbdF06e307dCUyP2kkKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbihyKXtwaGUoZSxyLG5bcl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6aSQoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHIpKX0pfXJldHVybiBlfWZ1bmN0aW9uIHBoZShlLHQsbil7cmV0dXJuIHQ9bWhlKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gbWhlKGUpe3ZhciB0PXloZShlLCJzdHJpbmciKTtyZXR1cm4gZmQodCk9PSJzeW1ib2wiP3Q6dCsiIn1mdW5jdGlvbiB5aGUoZSx0KXtpZihmZChlKSE9Im9iamVjdCJ8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0KTtpZihmZChyKSE9Im9iamVjdCIpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4odD09PSJzdHJpbmciP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIHZoZShlKXt2YXIgdCxuLHI9ZS5lbGVtZW50LGk9ZS50b29sdGlwRXZlbnRUeXBlLG89ZS5pc0FjdGl2ZSxzPWUuYWN0aXZlQ29vcmRpbmF0ZSx1PWUuYWN0aXZlUGF5bG9hZCxmPWUub2Zmc2V0LGQ9ZS5hY3RpdmVUb29sdGlwSW5kZXgscD1lLnRvb2x0aXBBeGlzQmFuZFNpemUsbT1lLmxheW91dCx5PWUuY2hhcnROYW1lLHg9KHQ9ci5wcm9wcy5jdXJzb3IpIT09bnVsbCYmdCE9PXZvaWQgMD90OihuPXIudHlwZS5kZWZhdWx0UHJvcHMpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5jdXJzb3I7aWYoIXJ8fCF4fHwhb3x8IXN8fHkhPT0iU2NhdHRlckNoYXJ0IiYmaSE9PSJheGlzIilyZXR1cm4gbnVsbDt2YXIgdyxiPWhzO2lmKHk9PT0iU2NhdHRlckNoYXJ0Iil3PXMsYj1GbGU7ZWxzZSBpZih5PT09IkJhckNoYXJ0Iil3PWRoZShtLHMsZixwKSxiPVNUO2Vsc2UgaWYobT09PSJyYWRpYWwiKXt2YXIgZz1BVShzKSxfPWcuY3gsTz1nLmN5LEU9Zy5yYWRpdXMsaj1nLnN0YXJ0QW5nbGUsVD1nLmVuZEFuZ2xlO3c9e2N4Ol8sY3k6TyxzdGFydEFuZ2xlOmosZW5kQW5nbGU6VCxpbm5lclJhZGl1czpFLG91dGVyUmFkaXVzOkV9LGI9YnF9ZWxzZSB3PXtwb2ludHM6aGhlKG0scyxmKX0sYj1oczt2YXIgUD1icChicChicChicCh7c3Ryb2tlOiIjY2NjIixwb2ludGVyRXZlbnRzOiJub25lIn0sZiksdyksJGUoeCwhMSkpLHt9LHtwYXlsb2FkOnUscGF5bG9hZEluZGV4OmQsY2xhc3NOYW1lOldlKCJyZWNoYXJ0cy10b29sdGlwLWN1cnNvciIseC5jbGFzc05hbWUpfSk7cmV0dXJuIEMuaXNWYWxpZEVsZW1lbnQoeCk/Qy5jbG9uZUVsZW1lbnQoeCxQKTpDLmNyZWF0ZUVsZW1lbnQoYixQKX12YXIgZ2hlPVsiaXRlbSJdLGJoZT1bImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImNvbXBhY3QiLCJ0aXRsZSIsImRlc2MiXTtmdW5jdGlvbiBTdShlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBTdT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT0ic3ltYm9sIj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sU3UoZSl9ZnVuY3Rpb24gRGwoKXtyZXR1cm4gRGw9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxEbC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYSQoZSx0KXtyZXR1cm4gU2hlKGUpfHx3aGUoZSx0KXx8T1UoZSx0KXx8eGhlKCl9ZnVuY3Rpb24geGhlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIHdoZShlLHQpe3ZhciBuPWU9PW51bGw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobiE9bnVsbCl7dmFyIHIsaSxvLHMsdT1bXSxmPSEwLGQ9ITE7dHJ5e2lmKG89KG49bi5jYWxsKGUpKS5uZXh0LHQhPT0wKWZvcig7IShmPShyPW8uY2FsbChuKSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT10KTtmPSEwKTt9Y2F0Y2gocCl7ZD0hMCxpPXB9ZmluYWxseXt0cnl7aWYoIWYmJm4ucmV0dXJuIT1udWxsJiYocz1uLnJldHVybigpLE9iamVjdChzKSE9PXMpKXJldHVybn1maW5hbGx5e2lmKGQpdGhyb3cgaX19cmV0dXJuIHV9fWZ1bmN0aW9uIFNoZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIG8kKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj1BaGUoZSx0KSxyLGk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXI9b1tpXSwhKHQuaW5kZXhPZihyKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYobltyXT1lW3JdKX1yZXR1cm4gbn1mdW5jdGlvbiBBaGUoZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2Yocik+PTApY29udGludWU7bltyXT1lW3JdfXJldHVybiBufWZ1bmN0aW9uIF9oZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIE9oZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsVFUoci5rZXkpLHIpfX1mdW5jdGlvbiBUaGUoZSx0LG4pe3JldHVybiB0JiZPaGUoZS5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBFaGUoZSx0LG4pe3JldHVybiB0PW95KHQpLENoZShlLF9VKCk/UmVmbGVjdC5jb25zdHJ1Y3QodCxufHxbXSxveShlKS5jb25zdHJ1Y3Rvcik6dC5hcHBseShlLG4pKX1mdW5jdGlvbiBDaGUoZSx0KXtpZih0JiYoU3UodCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKXJldHVybiB0O2lmKHQhPT12b2lkIDApdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gamhlKGUpfWZ1bmN0aW9uIGpoZShlKXtpZihlPT09dm9pZCAwKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gX1UoKXt0cnl7dmFyIGU9IUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpfWNhdGNoe31yZXR1cm4oX1U9ZnVuY3Rpb24oKXtyZXR1cm4hIWV9KSgpfWZ1bmN0aW9uIG95KGUpe3JldHVybiBveT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihuKXtyZXR1cm4gbi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKX0sb3koZSl9ZnVuY3Rpb24gUGhlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJnQhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHQmJmRfKGUsdCl9ZnVuY3Rpb24gZF8oZSx0KXtyZXR1cm4gZF89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24ocixpKXtyZXR1cm4gci5fX3Byb3RvX189aSxyfSxkXyhlLHQpfWZ1bmN0aW9uIEF1KGUpe3JldHVybiBOaGUoZSl8fFJoZShlKXx8T1UoZSl8fE1oZSgpfWZ1bmN0aW9uIE1oZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gT1UoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGhfKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKG49PT0iT2JqZWN0IiYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxuPT09Ik1hcCJ8fG49PT0iU2V0IilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihuPT09IkFyZ3VtZW50cyJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBoXyhlLHQpfX1mdW5jdGlvbiBSaGUoZSl7aWYodHlwZW9mIFN5bWJvbDwidSImJmVbU3ltYm9sLml0ZXJhdG9yXSE9bnVsbHx8ZVsiQEBpdGVyYXRvciJdIT1udWxsKXJldHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIE5oZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBoXyhlKX1mdW5jdGlvbiBoXyhlLHQpeyh0PT1udWxsfHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHMkKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLGkpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gbGUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTt0JTI/cyQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe1VlKGUscixuW3JdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnMkKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixyKSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBVZShlLHQsbil7cmV0dXJuIHQ9VFUodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBUVShlKXt2YXIgdD1raGUoZSwic3RyaW5nIik7cmV0dXJuIFN1KHQpPT0ic3ltYm9sIj90OnQrIiJ9ZnVuY3Rpb24ga2hlKGUsdCl7aWYoU3UoZSkhPSJvYmplY3QifHwhZSlyZXR1cm4gZTt2YXIgbj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYobiE9PXZvaWQgMCl7dmFyIHI9bi5jYWxsKGUsdCk7aWYoU3UocikhPSJvYmplY3QiKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKHQ9PT0ic3RyaW5nIj9TdHJpbmc6TnVtYmVyKShlKX12YXIgRGhlPXt4QXhpczpbImJvdHRvbSIsInRvcCJdLHlBeGlzOlsibGVmdCIsInJpZ2h0Il19LExoZT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9LEVVPXt4OjAseTowfTtmdW5jdGlvbiB4cChlKXtyZXR1cm4gZX12YXIgSWhlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG49PT0iaG9yaXpvbnRhbCI/dC54Om49PT0idmVydGljYWwiP3QueTpuPT09ImNlbnRyaWMiP3QuYW5nbGU6dC5yYWRpdXN9LCRoZT1mdW5jdGlvbih0LG4scixpKXt2YXIgbz1uLmZpbmQoZnVuY3Rpb24ocCl7cmV0dXJuIHAmJnAuaW5kZXg9PT1yfSk7aWYobyl7aWYodD09PSJob3Jpem9udGFsIilyZXR1cm57eDpvLmNvb3JkaW5hdGUseTppLnl9O2lmKHQ9PT0idmVydGljYWwiKXJldHVybnt4OmkueCx5Om8uY29vcmRpbmF0ZX07aWYodD09PSJjZW50cmljIil7dmFyIHM9by5jb29yZGluYXRlLHU9aS5yYWRpdXM7cmV0dXJuIGxlKGxlKGxlKHt9LGkpLEx0KGkuY3gsaS5jeSx1LHMpKSx7fSx7YW5nbGU6cyxyYWRpdXM6dX0pfXZhciBmPW8uY29vcmRpbmF0ZSxkPWkuYW5nbGU7cmV0dXJuIGxlKGxlKGxlKHt9LGkpLEx0KGkuY3gsaS5jeSxmLGQpKSx7fSx7YW5nbGU6ZCxyYWRpdXM6Zn0pfXJldHVybiBFVX0seHY9ZnVuY3Rpb24odCxuKXt2YXIgcj1uLmdyYXBoaWNhbEl0ZW1zLGk9bi5kYXRhU3RhcnRJbmRleCxvPW4uZGF0YUVuZEluZGV4LHM9KHI/P1tdKS5yZWR1Y2UoZnVuY3Rpb24odSxmKXt2YXIgZD1mLnByb3BzLmRhdGE7cmV0dXJuIGQmJmQubGVuZ3RoP1tdLmNvbmNhdChBdSh1KSxBdShkKSk6dX0sW10pO3JldHVybiBzLmxlbmd0aD4wP3M6dCYmdC5sZW5ndGgmJnZlKGkpJiZ2ZShvKT90LnNsaWNlKGksbysxKTpbXX07ZnVuY3Rpb24gQ1UoZSl7cmV0dXJuIGU9PT0ibnVtYmVyIj9bMCwiYXV0byJdOnZvaWQgMH12YXIgcF89ZnVuY3Rpb24odCxuLHIsaSl7dmFyIG89dC5ncmFwaGljYWxJdGVtcyxzPXQudG9vbHRpcEF4aXMsdT14dihuLHQpO3JldHVybiByPDB8fCFvfHwhby5sZW5ndGh8fHI+PXUubGVuZ3RoP251bGw6by5yZWR1Y2UoZnVuY3Rpb24oZixkKXt2YXIgcCxtPShwPWQucHJvcHMuZGF0YSkhPT1udWxsJiZwIT09dm9pZCAwP3A6bjttJiZ0LmRhdGFTdGFydEluZGV4K3QuZGF0YUVuZEluZGV4IT09MCYmdC5kYXRhRW5kSW5kZXgtdC5kYXRhU3RhcnRJbmRleD49ciYmKG09bS5zbGljZSh0LmRhdGFTdGFydEluZGV4LHQuZGF0YUVuZEluZGV4KzEpKTt2YXIgeTtpZihzLmRhdGFLZXkmJiFzLmFsbG93RHVwbGljYXRlZENhdGVnb3J5KXt2YXIgeD1tPT09dm9pZCAwP3U6bTt5PW9tKHgscy5kYXRhS2V5LGkpfWVsc2UgeT1tJiZtW3JdfHx1W3JdO3JldHVybiB5P1tdLmNvbmNhdChBdShmKSxbaHEoZCx5KV0pOmZ9LFtdKX0sbCQ9ZnVuY3Rpb24odCxuLHIsaSl7dmFyIG89aXx8e3g6dC5jaGFydFgseTp0LmNoYXJ0WX0scz1JaGUobyxyKSx1PXQub3JkZXJlZFRvb2x0aXBUaWNrcyxmPXQudG9vbHRpcEF4aXMsZD10LnRvb2x0aXBUaWNrcyxwPWZhZShzLHUsZCxmKTtpZihwPj0wJiZkKXt2YXIgbT1kW3BdJiZkW3BdLnZhbHVlLHk9cF8odCxuLHAsbSkseD0kaGUocix1LHAsbyk7cmV0dXJue2FjdGl2ZVRvb2x0aXBJbmRleDpwLGFjdGl2ZUxhYmVsOm0sYWN0aXZlUGF5bG9hZDp5LGFjdGl2ZUNvb3JkaW5hdGU6eH19cmV0dXJuIG51bGx9LEJoZT1mdW5jdGlvbih0LG4pe3ZhciByPW4uYXhlcyxpPW4uZ3JhcGhpY2FsSXRlbXMsbz1uLmF4aXNUeXBlLHM9bi5heGlzSWRLZXksdT1uLnN0YWNrR3JvdXBzLGY9bi5kYXRhU3RhcnRJbmRleCxkPW4uZGF0YUVuZEluZGV4LHA9dC5sYXlvdXQsbT10LmNoaWxkcmVuLHk9dC5zdGFja09mZnNldCx4PWxxKHAsbyk7cmV0dXJuIHIucmVkdWNlKGZ1bmN0aW9uKHcsYil7dmFyIGcsXz1iLnR5cGUuZGVmYXVsdFByb3BzIT09dm9pZCAwP2xlKGxlKHt9LGIudHlwZS5kZWZhdWx0UHJvcHMpLGIucHJvcHMpOmIucHJvcHMsTz1fLnR5cGUsRT1fLmRhdGFLZXksaj1fLmFsbG93RGF0YU92ZXJmbG93LFQ9Xy5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSxQPV8uc2NhbGUsTj1fLnRpY2tzLFI9Xy5pbmNsdWRlSGlkZGVuLEk9X1tzXTtpZih3W0ldKXJldHVybiB3O3ZhciBWPXh2KHQuZGF0YSx7Z3JhcGhpY2FsSXRlbXM6aS5maWx0ZXIoZnVuY3Rpb24odGUpe3ZhciBvZSxtZT1zIGluIHRlLnByb3BzP3RlLnByb3BzW3NdOihvZT10ZS50eXBlLmRlZmF1bHRQcm9wcyk9PT1udWxsfHxvZT09PXZvaWQgMD92b2lkIDA6b2Vbc107cmV0dXJuIG1lPT09SX0pLGRhdGFTdGFydEluZGV4OmYsZGF0YUVuZEluZGV4OmR9KSxCPVYubGVuZ3RoLCQseixVO2ZoZShfLmRvbWFpbixqLE8pJiYoJD1FQShfLmRvbWFpbixudWxsLGopLHgmJihPPT09Im51bWJlciJ8fFAhPT0iYXV0byIpJiYoVT15ZihWLEUsImNhdGVnb3J5IikpKTt2YXIgSz1DVShPKTtpZighJHx8JC5sZW5ndGg9PT0wKXt2YXIgTCxXPShMPV8uZG9tYWluKSE9PW51bGwmJkwhPT12b2lkIDA/TDpLO2lmKEUpe2lmKCQ9eWYoVixFLE8pLE89PT0iY2F0ZWdvcnkiJiZ4KXt2YXIgSD1hWigkKTtUJiZIPyh6PSQsJD1HbSgwLEIpKTpUfHwoJD1jTChXLCQsYikucmVkdWNlKGZ1bmN0aW9uKHRlLG9lKXtyZXR1cm4gdGUuaW5kZXhPZihvZSk+PTA/dGU6W10uY29uY2F0KEF1KHRlKSxbb2VdKX0sW10pKX1lbHNlIGlmKE89PT0iY2F0ZWdvcnkiKVQ/JD0kLmZpbHRlcihmdW5jdGlvbih0ZSl7cmV0dXJuIHRlIT09IiImJiFHZSh0ZSl9KTokPWNMKFcsJCxiKS5yZWR1Y2UoZnVuY3Rpb24odGUsb2Upe3JldHVybiB0ZS5pbmRleE9mKG9lKT49MHx8b2U9PT0iInx8R2Uob2UpP3RlOltdLmNvbmNhdChBdSh0ZSksW29lXSl9LFtdKTtlbHNlIGlmKE89PT0ibnVtYmVyIil7dmFyIGVlPXlhZShWLGkuZmlsdGVyKGZ1bmN0aW9uKHRlKXt2YXIgb2UsbWUsYmU9cyBpbiB0ZS5wcm9wcz90ZS5wcm9wc1tzXToob2U9dGUudHlwZS5kZWZhdWx0UHJvcHMpPT09bnVsbHx8b2U9PT12b2lkIDA/dm9pZCAwOm9lW3NdLGdlPSJoaWRlImluIHRlLnByb3BzP3RlLnByb3BzLmhpZGU6KG1lPXRlLnR5cGUuZGVmYXVsdFByb3BzKT09PW51bGx8fG1lPT09dm9pZCAwP3ZvaWQgMDptZS5oaWRlO3JldHVybiBiZT09PUkmJihSfHwhZ2UpfSksRSxvLHApO2VlJiYoJD1lZSl9eCYmKE89PT0ibnVtYmVyInx8UCE9PSJhdXRvIikmJihVPXlmKFYsRSwiY2F0ZWdvcnkiKSl9ZWxzZSB4PyQ9R20oMCxCKTp1JiZ1W0ldJiZ1W0ldLmhhc1N0YWNrJiZPPT09Im51bWJlciI/JD15PT09ImV4cGFuZCI/WzAsMV06ZHEodVtJXS5zdGFja0dyb3VwcyxmLGQpOiQ9c3EoVixpLmZpbHRlcihmdW5jdGlvbih0ZSl7dmFyIG9lPXMgaW4gdGUucHJvcHM/dGUucHJvcHNbc106dGUudHlwZS5kZWZhdWx0UHJvcHNbc10sbWU9ImhpZGUiaW4gdGUucHJvcHM/dGUucHJvcHMuaGlkZTp0ZS50eXBlLmRlZmF1bHRQcm9wcy5oaWRlO3JldHVybiBvZT09PUkmJihSfHwhbWUpfSksTyxwLCEwKTtpZihPPT09Im51bWJlciIpJD1mXyhtLCQsSSxvLE4pLFcmJigkPUVBKFcsJCxqKSk7ZWxzZSBpZihPPT09ImNhdGVnb3J5IiYmVyl7dmFyIGs9VyxaPSQuZXZlcnkoZnVuY3Rpb24odGUpe3JldHVybiBrLmluZGV4T2YodGUpPj0wfSk7WiYmKCQ9ayl9fXJldHVybiBsZShsZSh7fSx3KSx7fSxVZSh7fSxJLGxlKGxlKHt9LF8pLHt9LHtheGlzVHlwZTpvLGRvbWFpbjokLGNhdGVnb3JpY2FsRG9tYWluOlUsZHVwbGljYXRlRG9tYWluOnosb3JpZ2luYWxEb21haW46KGc9Xy5kb21haW4pIT09bnVsbCYmZyE9PXZvaWQgMD9nOkssaXNDYXRlZ29yaWNhbDp4LGxheW91dDpwfSkpKX0se30pfSxWaGU9ZnVuY3Rpb24odCxuKXt2YXIgcj1uLmdyYXBoaWNhbEl0ZW1zLGk9bi5BeGlzLG89bi5heGlzVHlwZSxzPW4uYXhpc0lkS2V5LHU9bi5zdGFja0dyb3VwcyxmPW4uZGF0YVN0YXJ0SW5kZXgsZD1uLmRhdGFFbmRJbmRleCxwPXQubGF5b3V0LG09dC5jaGlsZHJlbix5PXh2KHQuZGF0YSx7Z3JhcGhpY2FsSXRlbXM6cixkYXRhU3RhcnRJbmRleDpmLGRhdGFFbmRJbmRleDpkfSkseD15Lmxlbmd0aCx3PWxxKHAsbyksYj0tMTtyZXR1cm4gci5yZWR1Y2UoZnVuY3Rpb24oZyxfKXt2YXIgTz1fLnR5cGUuZGVmYXVsdFByb3BzIT09dm9pZCAwP2xlKGxlKHt9LF8udHlwZS5kZWZhdWx0UHJvcHMpLF8ucHJvcHMpOl8ucHJvcHMsRT1PW3NdLGo9Q1UoIm51bWJlciIpO2lmKCFnW0VdKXtiKys7dmFyIFQ7cmV0dXJuIHc/VD1HbSgwLHgpOnUmJnVbRV0mJnVbRV0uaGFzU3RhY2s/KFQ9ZHEodVtFXS5zdGFja0dyb3VwcyxmLGQpLFQ9Zl8obSxULEUsbykpOihUPUVBKGosc3EoeSxyLmZpbHRlcihmdW5jdGlvbihQKXt2YXIgTixSLEk9cyBpbiBQLnByb3BzP1AucHJvcHNbc106KE49UC50eXBlLmRlZmF1bHRQcm9wcyk9PT1udWxsfHxOPT09dm9pZCAwP3ZvaWQgMDpOW3NdLFY9ImhpZGUiaW4gUC5wcm9wcz9QLnByb3BzLmhpZGU6KFI9UC50eXBlLmRlZmF1bHRQcm9wcyk9PT1udWxsfHxSPT09dm9pZCAwP3ZvaWQgMDpSLmhpZGU7cmV0dXJuIEk9PT1FJiYhVn0pLCJudW1iZXIiLHApLGkuZGVmYXVsdFByb3BzLmFsbG93RGF0YU92ZXJmbG93KSxUPWZfKG0sVCxFLG8pKSxsZShsZSh7fSxnKSx7fSxVZSh7fSxFLGxlKGxlKHtheGlzVHlwZTpvfSxpLmRlZmF1bHRQcm9wcykse30se2hpZGU6ITAsb3JpZW50YXRpb246eHIoRGhlLCIiLmNvbmNhdChvLCIuIikuY29uY2F0KGIlMiksbnVsbCksZG9tYWluOlQsb3JpZ2luYWxEb21haW46aixpc0NhdGVnb3JpY2FsOncsbGF5b3V0OnB9KSkpfXJldHVybiBnfSx7fSl9LHFoZT1mdW5jdGlvbih0LG4pe3ZhciByPW4uYXhpc1R5cGUsaT1yPT09dm9pZCAwPyJ4QXhpcyI6cixvPW4uQXhpc0NvbXAscz1uLmdyYXBoaWNhbEl0ZW1zLHU9bi5zdGFja0dyb3VwcyxmPW4uZGF0YVN0YXJ0SW5kZXgsZD1uLmRhdGFFbmRJbmRleCxwPXQuY2hpbGRyZW4sbT0iIi5jb25jYXQoaSwiSWQiKSx5PXdyKHAsbykseD17fTtyZXR1cm4geSYmeS5sZW5ndGg/eD1CaGUodCx7YXhlczp5LGdyYXBoaWNhbEl0ZW1zOnMsYXhpc1R5cGU6aSxheGlzSWRLZXk6bSxzdGFja0dyb3Vwczp1LGRhdGFTdGFydEluZGV4OmYsZGF0YUVuZEluZGV4OmR9KTpzJiZzLmxlbmd0aCYmKHg9VmhlKHQse0F4aXM6byxncmFwaGljYWxJdGVtczpzLGF4aXNUeXBlOmksYXhpc0lkS2V5Om0sc3RhY2tHcm91cHM6dSxkYXRhU3RhcnRJbmRleDpmLGRhdGFFbmRJbmRleDpkfSkpLHh9LFVoZT1mdW5jdGlvbih0KXt2YXIgbj1DbCh0KSxyPXNzKG4sITEsITApO3JldHVybnt0b29sdGlwVGlja3M6cixvcmRlcmVkVG9vbHRpcFRpY2tzOllPKHIsZnVuY3Rpb24oaSl7cmV0dXJuIGkuY29vcmRpbmF0ZX0pLHRvb2x0aXBBeGlzOm4sdG9vbHRpcEF4aXNCYW5kU2l6ZTpObShuLHIpfX0sdSQ9ZnVuY3Rpb24odCl7dmFyIG49dC5jaGlsZHJlbixyPXQuZGVmYXVsdFNob3dUb29sdGlwLGk9Z3IobixkdSksbz0wLHM9MDtyZXR1cm4gdC5kYXRhJiZ0LmRhdGEubGVuZ3RoIT09MCYmKHM9dC5kYXRhLmxlbmd0aC0xKSxpJiZpLnByb3BzJiYoaS5wcm9wcy5zdGFydEluZGV4Pj0wJiYobz1pLnByb3BzLnN0YXJ0SW5kZXgpLGkucHJvcHMuZW5kSW5kZXg+PTAmJihzPWkucHJvcHMuZW5kSW5kZXgpKSx7Y2hhcnRYOjAsY2hhcnRZOjAsZGF0YVN0YXJ0SW5kZXg6byxkYXRhRW5kSW5kZXg6cyxhY3RpdmVUb29sdGlwSW5kZXg6LTEsaXNUb29sdGlwQWN0aXZlOiEhcn19LHpoZT1mdW5jdGlvbih0KXtyZXR1cm4hdHx8IXQubGVuZ3RoPyExOnQuc29tZShmdW5jdGlvbihuKXt2YXIgcj1zYShuJiZuLnR5cGUpO3JldHVybiByJiZyLmluZGV4T2YoIkJhciIpPj0wfSl9LGMkPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09Imhvcml6b250YWwiP3tudW1lcmljQXhpc05hbWU6InlBeGlzIixjYXRlQXhpc05hbWU6InhBeGlzIn06dD09PSJ2ZXJ0aWNhbCI/e251bWVyaWNBeGlzTmFtZToieEF4aXMiLGNhdGVBeGlzTmFtZToieUF4aXMifTp0PT09ImNlbnRyaWMiP3tudW1lcmljQXhpc05hbWU6InJhZGl1c0F4aXMiLGNhdGVBeGlzTmFtZToiYW5nbGVBeGlzIn06e251bWVyaWNBeGlzTmFtZToiYW5nbGVBeGlzIixjYXRlQXhpc05hbWU6InJhZGl1c0F4aXMifX0sRmhlPWZ1bmN0aW9uKHQsbil7dmFyIHI9dC5wcm9wcyxpPXQuZ3JhcGhpY2FsSXRlbXMsbz10LnhBeGlzTWFwLHM9bz09PXZvaWQgMD97fTpvLHU9dC55QXhpc01hcCxmPXU9PT12b2lkIDA/e306dSxkPXIud2lkdGgscD1yLmhlaWdodCxtPXIuY2hpbGRyZW4seT1yLm1hcmdpbnx8e30seD1ncihtLGR1KSx3PWdyKG0sVWwpLGI9T2JqZWN0LmtleXMoZikucmVkdWNlKGZ1bmN0aW9uKFQsUCl7dmFyIE49ZltQXSxSPU4ub3JpZW50YXRpb247cmV0dXJuIU4ubWlycm9yJiYhTi5oaWRlP2xlKGxlKHt9LFQpLHt9LFVlKHt9LFIsVFtSXStOLndpZHRoKSk6VH0se2xlZnQ6eS5sZWZ0fHwwLHJpZ2h0OnkucmlnaHR8fDB9KSxnPU9iamVjdC5rZXlzKHMpLnJlZHVjZShmdW5jdGlvbihULFApe3ZhciBOPXNbUF0sUj1OLm9yaWVudGF0aW9uO3JldHVybiFOLm1pcnJvciYmIU4uaGlkZT9sZShsZSh7fSxUKSx7fSxVZSh7fSxSLHhyKFQsIiIuY29uY2F0KFIpKStOLmhlaWdodCkpOlR9LHt0b3A6eS50b3B8fDAsYm90dG9tOnkuYm90dG9tfHwwfSksXz1sZShsZSh7fSxnKSxiKSxPPV8uYm90dG9tO3gmJihfLmJvdHRvbSs9eC5wcm9wcy5oZWlnaHR8fGR1LmRlZmF1bHRQcm9wcy5oZWlnaHQpLHcmJm4mJihfPXBhZShfLGkscixuKSk7dmFyIEU9ZC1fLmxlZnQtXy5yaWdodCxqPXAtXy50b3AtXy5ib3R0b207cmV0dXJuIGxlKGxlKHticnVzaEJvdHRvbTpPfSxfKSx7fSx7d2lkdGg6TWF0aC5tYXgoRSwwKSxoZWlnaHQ6TWF0aC5tYXgoaiwwKX0pfSxIaGU9ZnVuY3Rpb24odCxuKXtpZihuPT09InhBeGlzIilyZXR1cm4gdFtuXS53aWR0aDtpZihuPT09InlBeGlzIilyZXR1cm4gdFtuXS5oZWlnaHR9LEVUPWZ1bmN0aW9uKHQpe3ZhciBuPXQuY2hhcnROYW1lLHI9dC5HcmFwaGljYWxDaGlsZCxpPXQuZGVmYXVsdFRvb2x0aXBFdmVudFR5cGUsbz1pPT09dm9pZCAwPyJheGlzIjppLHM9dC52YWxpZGF0ZVRvb2x0aXBFdmVudFR5cGVzLHU9cz09PXZvaWQgMD9bImF4aXMiXTpzLGY9dC5heGlzQ29tcG9uZW50cyxkPXQubGVnZW5kQ29udGVudCxwPXQuZm9ybWF0QXhpc01hcCxtPXQuZGVmYXVsdFByb3BzLHk9ZnVuY3Rpb24oXyxPKXt2YXIgRT1PLmdyYXBoaWNhbEl0ZW1zLGo9Ty5zdGFja0dyb3VwcyxUPU8ub2Zmc2V0LFA9Ty51cGRhdGVJZCxOPU8uZGF0YVN0YXJ0SW5kZXgsUj1PLmRhdGFFbmRJbmRleCxJPV8uYmFyU2l6ZSxWPV8ubGF5b3V0LEI9Xy5iYXJHYXAsJD1fLmJhckNhdGVnb3J5R2FwLHo9Xy5tYXhCYXJTaXplLFU9YyQoViksSz1VLm51bWVyaWNBeGlzTmFtZSxMPVUuY2F0ZUF4aXNOYW1lLFc9emhlKEUpLEg9W107cmV0dXJuIEUuZm9yRWFjaChmdW5jdGlvbihlZSxrKXt2YXIgWj14dihfLmRhdGEse2dyYXBoaWNhbEl0ZW1zOltlZV0sZGF0YVN0YXJ0SW5kZXg6TixkYXRhRW5kSW5kZXg6Un0pLHRlPWVlLnR5cGUuZGVmYXVsdFByb3BzIT09dm9pZCAwP2xlKGxlKHt9LGVlLnR5cGUuZGVmYXVsdFByb3BzKSxlZS5wcm9wcyk6ZWUucHJvcHMsb2U9dGUuZGF0YUtleSxtZT10ZS5tYXhCYXJTaXplLGJlPXRlWyIiLmNvbmNhdChLLCJJZCIpXSxnZT10ZVsiIi5jb25jYXQoTCwiSWQiKV0sX2U9e30sVGU9Zi5yZWR1Y2UoZnVuY3Rpb24oWG4sX3Ipe3ZhciBTYT1PWyIiLmNvbmNhdChfci5heGlzVHlwZSwiTWFwIildLFRvPXRlWyIiLmNvbmNhdChfci5heGlzVHlwZSwiSWQiKV07U2EmJlNhW1RvXXx8X3IuYXhpc1R5cGU9PT0iekF4aXMifHxBcygpO3ZhciBFbz1TYVtUb107cmV0dXJuIGxlKGxlKHt9LFhuKSx7fSxVZShVZSh7fSxfci5heGlzVHlwZSxFbyksIiIuY29uY2F0KF9yLmF4aXNUeXBlLCJUaWNrcyIpLHNzKEVvKSkpfSxfZSksY2U9VGVbTF0sQWU9VGVbIiIuY29uY2F0KEwsIlRpY2tzIildLFNlPWomJmpbYmVdJiZqW2JlXS5oYXNTdGFjayYmT2FlKGVlLGpbYmVdLnN0YWNrR3JvdXBzKSxzZT1zYShlZS50eXBlKS5pbmRleE9mKCJCYXIiKT49MCxLZT1ObShjZSxBZSksTGU9W10sYnQ9VyYmZGFlKHtiYXJTaXplOkksc3RhY2tHcm91cHM6aix0b3RhbFNpemU6SGhlKFRlLEwpfSk7aWYoc2Upe3ZhciBUdCxsdCxzcj1HZShtZSk/ejptZSxscj0oVHQ9KGx0PU5tKGNlLEFlLCEwKSkhPT1udWxsJiZsdCE9PXZvaWQgMD9sdDpzcikhPT1udWxsJiZUdCE9PXZvaWQgMD9UdDowO0xlPWhhZSh7YmFyR2FwOkIsYmFyQ2F0ZWdvcnlHYXA6JCxiYW5kU2l6ZTpsciE9PUtlP2xyOktlLHNpemVMaXN0OmJ0W2dlXSxtYXhCYXJTaXplOnNyfSksbHIhPT1LZSYmKExlPUxlLm1hcChmdW5jdGlvbihYbil7cmV0dXJuIGxlKGxlKHt9LFhuKSx7fSx7cG9zaXRpb246bGUobGUoe30sWG4ucG9zaXRpb24pLHt9LHtvZmZzZXQ6WG4ucG9zaXRpb24ub2Zmc2V0LWxyLzJ9KX0pfSkpfXZhciBHcj1lZSYmZWUudHlwZSYmZWUudHlwZS5nZXRDb21wb3NlZERhdGE7R3ImJkgucHVzaCh7cHJvcHM6bGUobGUoe30sR3IobGUobGUoe30sVGUpLHt9LHtkaXNwbGF5ZWREYXRhOloscHJvcHM6XyxkYXRhS2V5Om9lLGl0ZW06ZWUsYmFuZFNpemU6S2UsYmFyUG9zaXRpb246TGUsb2Zmc2V0OlQsc3RhY2tlZERhdGE6U2UsbGF5b3V0OlYsZGF0YVN0YXJ0SW5kZXg6TixkYXRhRW5kSW5kZXg6Un0pKSkse30sVWUoVWUoVWUoe2tleTplZS5rZXl8fCJpdGVtLSIuY29uY2F0KGspfSxLLFRlW0tdKSxMLFRlW0xdKSwiYW5pbWF0aW9uSWQiLFApKSxjaGlsZEluZGV4OnZaKGVlLF8uY2hpbGRyZW4pLGl0ZW06ZWV9KX0pLEh9LHg9ZnVuY3Rpb24oXyxPKXt2YXIgRT1fLnByb3BzLGo9Xy5kYXRhU3RhcnRJbmRleCxUPV8uZGF0YUVuZEluZGV4LFA9Xy51cGRhdGVJZDtpZighT04oe3Byb3BzOkV9KSlyZXR1cm4gbnVsbDt2YXIgTj1FLmNoaWxkcmVuLFI9RS5sYXlvdXQsST1FLnN0YWNrT2Zmc2V0LFY9RS5kYXRhLEI9RS5yZXZlcnNlU3RhY2tPcmRlciwkPWMkKFIpLHo9JC5udW1lcmljQXhpc05hbWUsVT0kLmNhdGVBeGlzTmFtZSxLPXdyKE4sciksTD1BYWUoVixLLCIiLmNvbmNhdCh6LCJJZCIpLCIiLmNvbmNhdChVLCJJZCIpLEksQiksVz1mLnJlZHVjZShmdW5jdGlvbih0ZSxvZSl7dmFyIG1lPSIiLmNvbmNhdChvZS5heGlzVHlwZSwiTWFwIik7cmV0dXJuIGxlKGxlKHt9LHRlKSx7fSxVZSh7fSxtZSxxaGUoRSxsZShsZSh7fSxvZSkse30se2dyYXBoaWNhbEl0ZW1zOkssc3RhY2tHcm91cHM6b2UuYXhpc1R5cGU9PT16JiZMLGRhdGFTdGFydEluZGV4OmosZGF0YUVuZEluZGV4OlR9KSkpKX0se30pLEg9RmhlKGxlKGxlKHt9LFcpLHt9LHtwcm9wczpFLGdyYXBoaWNhbEl0ZW1zOkt9KSxPPy5sZWdlbmRCQm94KTtPYmplY3Qua2V5cyhXKS5mb3JFYWNoKGZ1bmN0aW9uKHRlKXtXW3RlXT1wKEUsV1t0ZV0sSCx0ZS5yZXBsYWNlKCJNYXAiLCIiKSxuKX0pO3ZhciBlZT1XWyIiLmNvbmNhdChVLCJNYXAiKV0saz1VaGUoZWUpLFo9eShFLGxlKGxlKHt9LFcpLHt9LHtkYXRhU3RhcnRJbmRleDpqLGRhdGFFbmRJbmRleDpULHVwZGF0ZUlkOlAsZ3JhcGhpY2FsSXRlbXM6SyxzdGFja0dyb3VwczpMLG9mZnNldDpIfSkpO3JldHVybiBsZShsZSh7Zm9ybWF0dGVkR3JhcGhpY2FsSXRlbXM6WixncmFwaGljYWxJdGVtczpLLG9mZnNldDpILHN0YWNrR3JvdXBzOkx9LGspLFcpfSx3PShmdW5jdGlvbihnKXtmdW5jdGlvbiBfKE8pe3ZhciBFLGosVDtyZXR1cm4gX2hlKHRoaXMsXyksVD1FaGUodGhpcyxfLFtPXSksVWUoVCwiZXZlbnRFbWl0dGVyU3ltYm9sIixTeW1ib2woInJlY2hhcnRzRXZlbnRFbWl0dGVyIikpLFVlKFQsImFjY2Vzc2liaWxpdHlNYW5hZ2VyIixuZXcgY2hlKSxVZShULCJoYW5kbGVMZWdlbmRCQm94VXBkYXRlIixmdW5jdGlvbihQKXtpZihQKXt2YXIgTj1ULnN0YXRlLFI9Ti5kYXRhU3RhcnRJbmRleCxJPU4uZGF0YUVuZEluZGV4LFY9Ti51cGRhdGVJZDtULnNldFN0YXRlKGxlKHtsZWdlbmRCQm94OlB9LHgoe3Byb3BzOlQucHJvcHMsZGF0YVN0YXJ0SW5kZXg6UixkYXRhRW5kSW5kZXg6SSx1cGRhdGVJZDpWfSxsZShsZSh7fSxULnN0YXRlKSx7fSx7bGVnZW5kQkJveDpQfSkpKSl9fSksVWUoVCwiaGFuZGxlUmVjZWl2ZVN5bmNFdmVudCIsZnVuY3Rpb24oUCxOLFIpe2lmKFQucHJvcHMuc3luY0lkPT09UCl7aWYoUj09PVQuZXZlbnRFbWl0dGVyU3ltYm9sJiZ0eXBlb2YgVC5wcm9wcy5zeW5jTWV0aG9kIT0iZnVuY3Rpb24iKXJldHVybjtULmFwcGx5U3luY0V2ZW50KE4pfX0pLFVlKFQsImhhbmRsZUJydXNoQ2hhbmdlIixmdW5jdGlvbihQKXt2YXIgTj1QLnN0YXJ0SW5kZXgsUj1QLmVuZEluZGV4O2lmKE4hPT1ULnN0YXRlLmRhdGFTdGFydEluZGV4fHxSIT09VC5zdGF0ZS5kYXRhRW5kSW5kZXgpe3ZhciBJPVQuc3RhdGUudXBkYXRlSWQ7VC5zZXRTdGF0ZShmdW5jdGlvbigpe3JldHVybiBsZSh7ZGF0YVN0YXJ0SW5kZXg6TixkYXRhRW5kSW5kZXg6Un0seCh7cHJvcHM6VC5wcm9wcyxkYXRhU3RhcnRJbmRleDpOLGRhdGFFbmRJbmRleDpSLHVwZGF0ZUlkOkl9LFQuc3RhdGUpKX0pLFQudHJpZ2dlclN5bmNFdmVudCh7ZGF0YVN0YXJ0SW5kZXg6TixkYXRhRW5kSW5kZXg6Un0pfX0pLFVlKFQsImhhbmRsZU1vdXNlRW50ZXIiLGZ1bmN0aW9uKFApe3ZhciBOPVQuZ2V0TW91c2VJbmZvKFApO2lmKE4pe3ZhciBSPWxlKGxlKHt9LE4pLHt9LHtpc1Rvb2x0aXBBY3RpdmU6ITB9KTtULnNldFN0YXRlKFIpLFQudHJpZ2dlclN5bmNFdmVudChSKTt2YXIgST1ULnByb3BzLm9uTW91c2VFbnRlcjtIZShJKSYmSShSLFApfX0pLFVlKFQsInRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlIixmdW5jdGlvbihQKXt2YXIgTj1ULmdldE1vdXNlSW5mbyhQKSxSPU4/bGUobGUoe30sTikse30se2lzVG9vbHRpcEFjdGl2ZTohMH0pOntpc1Rvb2x0aXBBY3RpdmU6ITF9O1Quc2V0U3RhdGUoUiksVC50cmlnZ2VyU3luY0V2ZW50KFIpO3ZhciBJPVQucHJvcHMub25Nb3VzZU1vdmU7SGUoSSkmJkkoUixQKX0pLFVlKFQsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIixmdW5jdGlvbihQKXtULnNldFN0YXRlKGZ1bmN0aW9uKCl7cmV0dXJue2lzVG9vbHRpcEFjdGl2ZTohMCxhY3RpdmVJdGVtOlAsYWN0aXZlUGF5bG9hZDpQLnRvb2x0aXBQYXlsb2FkLGFjdGl2ZUNvb3JkaW5hdGU6UC50b29sdGlwUG9zaXRpb258fHt4OlAuY3gseTpQLmN5fX19KX0pLFVlKFQsImhhbmRsZUl0ZW1Nb3VzZUxlYXZlIixmdW5jdGlvbigpe1Quc2V0U3RhdGUoZnVuY3Rpb24oKXtyZXR1cm57aXNUb29sdGlwQWN0aXZlOiExfX0pfSksVWUoVCwiaGFuZGxlTW91c2VNb3ZlIixmdW5jdGlvbihQKXtQLnBlcnNpc3QoKSxULnRocm90dGxlVHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUoUCl9KSxVZShULCJoYW5kbGVNb3VzZUxlYXZlIixmdW5jdGlvbihQKXtULnRocm90dGxlVHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUuY2FuY2VsKCk7dmFyIE49e2lzVG9vbHRpcEFjdGl2ZTohMX07VC5zZXRTdGF0ZShOKSxULnRyaWdnZXJTeW5jRXZlbnQoTik7dmFyIFI9VC5wcm9wcy5vbk1vdXNlTGVhdmU7SGUoUikmJlIoTixQKX0pLFVlKFQsImhhbmRsZU91dGVyRXZlbnQiLGZ1bmN0aW9uKFApe3ZhciBOPXlaKFApLFI9eHIoVC5wcm9wcywiIi5jb25jYXQoTikpO2lmKE4mJkhlKFIpKXt2YXIgSSxWOy8uKnRvdWNoLiovaS50ZXN0KE4pP1Y9VC5nZXRNb3VzZUluZm8oUC5jaGFuZ2VkVG91Y2hlc1swXSk6Vj1ULmdldE1vdXNlSW5mbyhQKSxSKChJPVYpIT09bnVsbCYmSSE9PXZvaWQgMD9JOnt9LFApfX0pLFVlKFQsImhhbmRsZUNsaWNrIixmdW5jdGlvbihQKXt2YXIgTj1ULmdldE1vdXNlSW5mbyhQKTtpZihOKXt2YXIgUj1sZShsZSh7fSxOKSx7fSx7aXNUb29sdGlwQWN0aXZlOiEwfSk7VC5zZXRTdGF0ZShSKSxULnRyaWdnZXJTeW5jRXZlbnQoUik7dmFyIEk9VC5wcm9wcy5vbkNsaWNrO0hlKEkpJiZJKFIsUCl9fSksVWUoVCwiaGFuZGxlTW91c2VEb3duIixmdW5jdGlvbihQKXt2YXIgTj1ULnByb3BzLm9uTW91c2VEb3duO2lmKEhlKE4pKXt2YXIgUj1ULmdldE1vdXNlSW5mbyhQKTtOKFIsUCl9fSksVWUoVCwiaGFuZGxlTW91c2VVcCIsZnVuY3Rpb24oUCl7dmFyIE49VC5wcm9wcy5vbk1vdXNlVXA7aWYoSGUoTikpe3ZhciBSPVQuZ2V0TW91c2VJbmZvKFApO04oUixQKX19KSxVZShULCJoYW5kbGVUb3VjaE1vdmUiLGZ1bmN0aW9uKFApe1AuY2hhbmdlZFRvdWNoZXMhPW51bGwmJlAuY2hhbmdlZFRvdWNoZXMubGVuZ3RoPjAmJlQudGhyb3R0bGVUcmlnZ2VyZWRBZnRlck1vdXNlTW92ZShQLmNoYW5nZWRUb3VjaGVzWzBdKX0pLFVlKFQsImhhbmRsZVRvdWNoU3RhcnQiLGZ1bmN0aW9uKFApe1AuY2hhbmdlZFRvdWNoZXMhPW51bGwmJlAuY2hhbmdlZFRvdWNoZXMubGVuZ3RoPjAmJlQuaGFuZGxlTW91c2VEb3duKFAuY2hhbmdlZFRvdWNoZXNbMF0pfSksVWUoVCwiaGFuZGxlVG91Y2hFbmQiLGZ1bmN0aW9uKFApe1AuY2hhbmdlZFRvdWNoZXMhPW51bGwmJlAuY2hhbmdlZFRvdWNoZXMubGVuZ3RoPjAmJlQuaGFuZGxlTW91c2VVcChQLmNoYW5nZWRUb3VjaGVzWzBdKX0pLFVlKFQsImhhbmRsZURvdWJsZUNsaWNrIixmdW5jdGlvbihQKXt2YXIgTj1ULnByb3BzLm9uRG91YmxlQ2xpY2s7aWYoSGUoTikpe3ZhciBSPVQuZ2V0TW91c2VJbmZvKFApO04oUixQKX19KSxVZShULCJoYW5kbGVDb250ZXh0TWVudSIsZnVuY3Rpb24oUCl7dmFyIE49VC5wcm9wcy5vbkNvbnRleHRNZW51O2lmKEhlKE4pKXt2YXIgUj1ULmdldE1vdXNlSW5mbyhQKTtOKFIsUCl9fSksVWUoVCwidHJpZ2dlclN5bmNFdmVudCIsZnVuY3Rpb24oUCl7VC5wcm9wcy5zeW5jSWQhPT12b2lkIDAmJmlTLmVtaXQoYVMsVC5wcm9wcy5zeW5jSWQsUCxULmV2ZW50RW1pdHRlclN5bWJvbCl9KSxVZShULCJhcHBseVN5bmNFdmVudCIsZnVuY3Rpb24oUCl7dmFyIE49VC5wcm9wcyxSPU4ubGF5b3V0LEk9Ti5zeW5jTWV0aG9kLFY9VC5zdGF0ZS51cGRhdGVJZCxCPVAuZGF0YVN0YXJ0SW5kZXgsJD1QLmRhdGFFbmRJbmRleDtpZihQLmRhdGFTdGFydEluZGV4IT09dm9pZCAwfHxQLmRhdGFFbmRJbmRleCE9PXZvaWQgMClULnNldFN0YXRlKGxlKHtkYXRhU3RhcnRJbmRleDpCLGRhdGFFbmRJbmRleDokfSx4KHtwcm9wczpULnByb3BzLGRhdGFTdGFydEluZGV4OkIsZGF0YUVuZEluZGV4OiQsdXBkYXRlSWQ6Vn0sVC5zdGF0ZSkpKTtlbHNlIGlmKFAuYWN0aXZlVG9vbHRpcEluZGV4IT09dm9pZCAwKXt2YXIgej1QLmNoYXJ0WCxVPVAuY2hhcnRZLEs9UC5hY3RpdmVUb29sdGlwSW5kZXgsTD1ULnN0YXRlLFc9TC5vZmZzZXQsSD1MLnRvb2x0aXBUaWNrcztpZighVylyZXR1cm47aWYodHlwZW9mIEk9PSJmdW5jdGlvbiIpSz1JKEgsUCk7ZWxzZSBpZihJPT09InZhbHVlIil7Sz0tMTtmb3IodmFyIGVlPTA7ZWU8SC5sZW5ndGg7ZWUrKylpZihIW2VlXS52YWx1ZT09PVAuYWN0aXZlTGFiZWwpe0s9ZWU7YnJlYWt9fXZhciBrPWxlKGxlKHt9LFcpLHt9LHt4OlcubGVmdCx5OlcudG9wfSksWj1NYXRoLm1pbih6LGsueCtrLndpZHRoKSx0ZT1NYXRoLm1pbihVLGsueStrLmhlaWdodCksb2U9SFtLXSYmSFtLXS52YWx1ZSxtZT1wXyhULnN0YXRlLFQucHJvcHMuZGF0YSxLKSxiZT1IW0tdP3t4OlI9PT0iaG9yaXpvbnRhbCI/SFtLXS5jb29yZGluYXRlOloseTpSPT09Imhvcml6b250YWwiP3RlOkhbS10uY29vcmRpbmF0ZX06RVU7VC5zZXRTdGF0ZShsZShsZSh7fSxQKSx7fSx7YWN0aXZlTGFiZWw6b2UsYWN0aXZlQ29vcmRpbmF0ZTpiZSxhY3RpdmVQYXlsb2FkOm1lLGFjdGl2ZVRvb2x0aXBJbmRleDpLfSkpfWVsc2UgVC5zZXRTdGF0ZShQKX0pLFVlKFQsInJlbmRlckN1cnNvciIsZnVuY3Rpb24oUCl7dmFyIE4sUj1ULnN0YXRlLEk9Ui5pc1Rvb2x0aXBBY3RpdmUsVj1SLmFjdGl2ZUNvb3JkaW5hdGUsQj1SLmFjdGl2ZVBheWxvYWQsJD1SLm9mZnNldCx6PVIuYWN0aXZlVG9vbHRpcEluZGV4LFU9Ui50b29sdGlwQXhpc0JhbmRTaXplLEs9VC5nZXRUb29sdGlwRXZlbnRUeXBlKCksTD0oTj1QLnByb3BzLmFjdGl2ZSkhPT1udWxsJiZOIT09dm9pZCAwP046SSxXPVQucHJvcHMubGF5b3V0LEg9UC5rZXl8fCJfcmVjaGFydHMtY3Vyc29yIjtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KHZoZSx7a2V5OkgsYWN0aXZlQ29vcmRpbmF0ZTpWLGFjdGl2ZVBheWxvYWQ6QixhY3RpdmVUb29sdGlwSW5kZXg6eixjaGFydE5hbWU6bixlbGVtZW50OlAsaXNBY3RpdmU6TCxsYXlvdXQ6VyxvZmZzZXQ6JCx0b29sdGlwQXhpc0JhbmRTaXplOlUsdG9vbHRpcEV2ZW50VHlwZTpLfSl9KSxVZShULCJyZW5kZXJQb2xhckF4aXMiLGZ1bmN0aW9uKFAsTixSKXt2YXIgST14cihQLCJ0eXBlLmF4aXNUeXBlIiksVj14cihULnN0YXRlLCIiLmNvbmNhdChJLCJNYXAiKSksQj1QLnR5cGUuZGVmYXVsdFByb3BzLCQ9QiE9PXZvaWQgMD9sZShsZSh7fSxCKSxQLnByb3BzKTpQLnByb3BzLHo9ViYmVlskWyIiLmNvbmNhdChJLCJJZCIpXV07cmV0dXJuIEMuY2xvbmVFbGVtZW50KFAsbGUobGUoe30seikse30se2NsYXNzTmFtZTpXZShJLHouY2xhc3NOYW1lKSxrZXk6UC5rZXl8fCIiLmNvbmNhdChOLCItIikuY29uY2F0KFIpLHRpY2tzOnNzKHosITApfSkpfSksVWUoVCwicmVuZGVyUG9sYXJHcmlkIixmdW5jdGlvbihQKXt2YXIgTj1QLnByb3BzLFI9Ti5yYWRpYWxMaW5lcyxJPU4ucG9sYXJBbmdsZXMsVj1OLnBvbGFyUmFkaXVzLEI9VC5zdGF0ZSwkPUIucmFkaXVzQXhpc01hcCx6PUIuYW5nbGVBeGlzTWFwLFU9Q2woJCksSz1DbCh6KSxMPUsuY3gsVz1LLmN5LEg9Sy5pbm5lclJhZGl1cyxlZT1LLm91dGVyUmFkaXVzO3JldHVybiBDLmNsb25lRWxlbWVudChQLHtwb2xhckFuZ2xlczpBcnJheS5pc0FycmF5KEkpP0k6c3MoSywhMCkubWFwKGZ1bmN0aW9uKGspe3JldHVybiBrLmNvb3JkaW5hdGV9KSxwb2xhclJhZGl1czpBcnJheS5pc0FycmF5KFYpP1Y6c3MoVSwhMCkubWFwKGZ1bmN0aW9uKGspe3JldHVybiBrLmNvb3JkaW5hdGV9KSxjeDpMLGN5OlcsaW5uZXJSYWRpdXM6SCxvdXRlclJhZGl1czplZSxrZXk6UC5rZXl8fCJwb2xhci1ncmlkIixyYWRpYWxMaW5lczpSfSl9KSxVZShULCJyZW5kZXJMZWdlbmQiLGZ1bmN0aW9uKCl7dmFyIFA9VC5zdGF0ZS5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyxOPVQucHJvcHMsUj1OLmNoaWxkcmVuLEk9Ti53aWR0aCxWPU4uaGVpZ2h0LEI9VC5wcm9wcy5tYXJnaW58fHt9LCQ9SS0oQi5sZWZ0fHwwKS0oQi5yaWdodHx8MCksej1hcSh7Y2hpbGRyZW46Uixmb3JtYXR0ZWRHcmFwaGljYWxJdGVtczpQLGxlZ2VuZFdpZHRoOiQsbGVnZW5kQ29udGVudDpkfSk7aWYoIXopcmV0dXJuIG51bGw7dmFyIFU9ei5pdGVtLEs9byQoeixnaGUpO3JldHVybiBDLmNsb25lRWxlbWVudChVLGxlKGxlKHt9LEspLHt9LHtjaGFydFdpZHRoOkksY2hhcnRIZWlnaHQ6VixtYXJnaW46QixvbkJCb3hVcGRhdGU6VC5oYW5kbGVMZWdlbmRCQm94VXBkYXRlfSkpfSksVWUoVCwicmVuZGVyVG9vbHRpcCIsZnVuY3Rpb24oKXt2YXIgUCxOPVQucHJvcHMsUj1OLmNoaWxkcmVuLEk9Ti5hY2Nlc3NpYmlsaXR5TGF5ZXIsVj1ncihSLElyKTtpZighVilyZXR1cm4gbnVsbDt2YXIgQj1ULnN0YXRlLCQ9Qi5pc1Rvb2x0aXBBY3RpdmUsej1CLmFjdGl2ZUNvb3JkaW5hdGUsVT1CLmFjdGl2ZVBheWxvYWQsSz1CLmFjdGl2ZUxhYmVsLEw9Qi5vZmZzZXQsVz0oUD1WLnByb3BzLmFjdGl2ZSkhPT1udWxsJiZQIT09dm9pZCAwP1A6JDtyZXR1cm4gQy5jbG9uZUVsZW1lbnQoVix7dmlld0JveDpsZShsZSh7fSxMKSx7fSx7eDpMLmxlZnQseTpMLnRvcH0pLGFjdGl2ZTpXLGxhYmVsOksscGF5bG9hZDpXP1U6W10sY29vcmRpbmF0ZTp6LGFjY2Vzc2liaWxpdHlMYXllcjpJfSl9KSxVZShULCJyZW5kZXJCcnVzaCIsZnVuY3Rpb24oUCl7dmFyIE49VC5wcm9wcyxSPU4ubWFyZ2luLEk9Ti5kYXRhLFY9VC5zdGF0ZSxCPVYub2Zmc2V0LCQ9Vi5kYXRhU3RhcnRJbmRleCx6PVYuZGF0YUVuZEluZGV4LFU9Vi51cGRhdGVJZDtyZXR1cm4gQy5jbG9uZUVsZW1lbnQoUCx7a2V5OlAua2V5fHwiX3JlY2hhcnRzLWJydXNoIixvbkNoYW5nZTptcChULmhhbmRsZUJydXNoQ2hhbmdlLFAucHJvcHMub25DaGFuZ2UpLGRhdGE6SSx4OnZlKFAucHJvcHMueCk/UC5wcm9wcy54OkIubGVmdCx5OnZlKFAucHJvcHMueSk/UC5wcm9wcy55OkIudG9wK0IuaGVpZ2h0K0IuYnJ1c2hCb3R0b20tKFIuYm90dG9tfHwwKSx3aWR0aDp2ZShQLnByb3BzLndpZHRoKT9QLnByb3BzLndpZHRoOkIud2lkdGgsc3RhcnRJbmRleDokLGVuZEluZGV4OnosdXBkYXRlSWQ6ImJydXNoLSIuY29uY2F0KFUpfSl9KSxVZShULCJyZW5kZXJSZWZlcmVuY2VFbGVtZW50IixmdW5jdGlvbihQLE4sUil7aWYoIVApcmV0dXJuIG51bGw7dmFyIEk9VCxWPUkuY2xpcFBhdGhJZCxCPVQuc3RhdGUsJD1CLnhBeGlzTWFwLHo9Qi55QXhpc01hcCxVPUIub2Zmc2V0LEs9UC50eXBlLmRlZmF1bHRQcm9wc3x8e30sTD1QLnByb3BzLFc9TC54QXhpc0lkLEg9Vz09PXZvaWQgMD9LLnhBeGlzSWQ6VyxlZT1MLnlBeGlzSWQsaz1lZT09PXZvaWQgMD9LLnlBeGlzSWQ6ZWU7cmV0dXJuIEMuY2xvbmVFbGVtZW50KFAse2tleTpQLmtleXx8IiIuY29uY2F0KE4sIi0iKS5jb25jYXQoUikseEF4aXM6JFtIXSx5QXhpczp6W2tdLHZpZXdCb3g6e3g6VS5sZWZ0LHk6VS50b3Asd2lkdGg6VS53aWR0aCxoZWlnaHQ6VS5oZWlnaHR9LGNsaXBQYXRoSWQ6Vn0pfSksVWUoVCwicmVuZGVyQWN0aXZlUG9pbnRzIixmdW5jdGlvbihQKXt2YXIgTj1QLml0ZW0sUj1QLmFjdGl2ZVBvaW50LEk9UC5iYXNlUG9pbnQsVj1QLmNoaWxkSW5kZXgsQj1QLmlzUmFuZ2UsJD1bXSx6PU4ucHJvcHMua2V5LFU9Ti5pdGVtLnR5cGUuZGVmYXVsdFByb3BzIT09dm9pZCAwP2xlKGxlKHt9LE4uaXRlbS50eXBlLmRlZmF1bHRQcm9wcyksTi5pdGVtLnByb3BzKTpOLml0ZW0ucHJvcHMsSz1VLmFjdGl2ZURvdCxMPVUuZGF0YUtleSxXPWxlKGxlKHtpbmRleDpWLGRhdGFLZXk6TCxjeDpSLngsY3k6Ui55LHI6NCxmaWxsOndUKE4uaXRlbSksc3Ryb2tlV2lkdGg6MixzdHJva2U6IiNmZmYiLHBheWxvYWQ6Ui5wYXlsb2FkLHZhbHVlOlIudmFsdWV9LCRlKEssITEpKSxzbShLKSk7cmV0dXJuICQucHVzaChfLnJlbmRlckFjdGl2ZURvdChLLFcsIiIuY29uY2F0KHosIi1hY3RpdmVQb2ludC0iKS5jb25jYXQoVikpKSxJPyQucHVzaChfLnJlbmRlckFjdGl2ZURvdChLLGxlKGxlKHt9LFcpLHt9LHtjeDpJLngsY3k6SS55fSksIiIuY29uY2F0KHosIi1iYXNlUG9pbnQtIikuY29uY2F0KFYpKSk6QiYmJC5wdXNoKG51bGwpLCR9KSxVZShULCJyZW5kZXJHcmFwaGljQ2hpbGQiLGZ1bmN0aW9uKFAsTixSKXt2YXIgST1ULmZpbHRlckZvcm1hdEl0ZW0oUCxOLFIpO2lmKCFJKXJldHVybiBudWxsO3ZhciBWPVQuZ2V0VG9vbHRpcEV2ZW50VHlwZSgpLEI9VC5zdGF0ZSwkPUIuaXNUb29sdGlwQWN0aXZlLHo9Qi50b29sdGlwQXhpcyxVPUIuYWN0aXZlVG9vbHRpcEluZGV4LEs9Qi5hY3RpdmVMYWJlbCxMPVQucHJvcHMuY2hpbGRyZW4sVz1ncihMLElyKSxIPUkucHJvcHMsZWU9SC5wb2ludHMsaz1ILmlzUmFuZ2UsWj1ILmJhc2VMaW5lLHRlPUkuaXRlbS50eXBlLmRlZmF1bHRQcm9wcyE9PXZvaWQgMD9sZShsZSh7fSxJLml0ZW0udHlwZS5kZWZhdWx0UHJvcHMpLEkuaXRlbS5wcm9wcyk6SS5pdGVtLnByb3BzLG9lPXRlLmFjdGl2ZURvdCxtZT10ZS5oaWRlLGJlPXRlLmFjdGl2ZUJhcixnZT10ZS5hY3RpdmVTaGFwZSxfZT0hISghbWUmJiQmJlcmJihvZXx8YmV8fGdlKSksVGU9e307ViE9PSJheGlzIiYmVyYmVy5wcm9wcy50cmlnZ2VyPT09ImNsaWNrIj9UZT17b25DbGljazptcChULmhhbmRsZUl0ZW1Nb3VzZUVudGVyLFAucHJvcHMub25DbGljayl9OlYhPT0iYXhpcyImJihUZT17b25Nb3VzZUxlYXZlOm1wKFQuaGFuZGxlSXRlbU1vdXNlTGVhdmUsUC5wcm9wcy5vbk1vdXNlTGVhdmUpLG9uTW91c2VFbnRlcjptcChULmhhbmRsZUl0ZW1Nb3VzZUVudGVyLFAucHJvcHMub25Nb3VzZUVudGVyKX0pO3ZhciBjZT1DLmNsb25lRWxlbWVudChQLGxlKGxlKHt9LEkucHJvcHMpLFRlKSk7ZnVuY3Rpb24gQWUoX3Ipe3JldHVybiB0eXBlb2Ygei5kYXRhS2V5PT0iZnVuY3Rpb24iP3ouZGF0YUtleShfci5wYXlsb2FkKTpudWxsfWlmKF9lKWlmKFU+PTApe3ZhciBTZSxzZTtpZih6LmRhdGFLZXkmJiF6LmFsbG93RHVwbGljYXRlZENhdGVnb3J5KXt2YXIgS2U9dHlwZW9mIHouZGF0YUtleT09ImZ1bmN0aW9uIj9BZToicGF5bG9hZC4iLmNvbmNhdCh6LmRhdGFLZXkudG9TdHJpbmcoKSk7U2U9b20oZWUsS2UsSyksc2U9ayYmWiYmb20oWixLZSxLKX1lbHNlIFNlPWVlPy5bVV0sc2U9ayYmWiYmWltVXTtpZihnZXx8YmUpe3ZhciBMZT1QLnByb3BzLmFjdGl2ZUluZGV4IT09dm9pZCAwP1AucHJvcHMuYWN0aXZlSW5kZXg6VTtyZXR1cm5bQy5jbG9uZUVsZW1lbnQoUCxsZShsZShsZSh7fSxJLnByb3BzKSxUZSkse30se2FjdGl2ZUluZGV4OkxlfSkpLG51bGwsbnVsbF19aWYoIUdlKFNlKSlyZXR1cm5bY2VdLmNvbmNhdChBdShULnJlbmRlckFjdGl2ZVBvaW50cyh7aXRlbTpJLGFjdGl2ZVBvaW50OlNlLGJhc2VQb2ludDpzZSxjaGlsZEluZGV4OlUsaXNSYW5nZTprfSkpKX1lbHNle3ZhciBidCxUdD0oYnQ9VC5nZXRJdGVtQnlYWShULnN0YXRlLmFjdGl2ZUNvb3JkaW5hdGUpKSE9PW51bGwmJmJ0IT09dm9pZCAwP2J0OntncmFwaGljYWxJdGVtOmNlfSxsdD1UdC5ncmFwaGljYWxJdGVtLHNyPWx0Lml0ZW0sbHI9c3I9PT12b2lkIDA/UDpzcixHcj1sdC5jaGlsZEluZGV4LFhuPWxlKGxlKGxlKHt9LEkucHJvcHMpLFRlKSx7fSx7YWN0aXZlSW5kZXg6R3J9KTtyZXR1cm5bQy5jbG9uZUVsZW1lbnQobHIsWG4pLG51bGwsbnVsbF19cmV0dXJuIGs/W2NlLG51bGwsbnVsbF06W2NlLG51bGxdfSksVWUoVCwicmVuZGVyQ3VzdG9taXplZCIsZnVuY3Rpb24oUCxOLFIpe3JldHVybiBDLmNsb25lRWxlbWVudChQLGxlKGxlKHtrZXk6InJlY2hhcnRzLWN1c3RvbWl6ZWQtIi5jb25jYXQoUil9LFQucHJvcHMpLFQuc3RhdGUpKX0pLFVlKFQsInJlbmRlck1hcCIse0NhcnRlc2lhbkdyaWQ6e2hhbmRsZXI6eHAsb25jZTohMH0sUmVmZXJlbmNlQXJlYTp7aGFuZGxlcjpULnJlbmRlclJlZmVyZW5jZUVsZW1lbnR9LFJlZmVyZW5jZUxpbmU6e2hhbmRsZXI6eHB9LFJlZmVyZW5jZURvdDp7aGFuZGxlcjpULnJlbmRlclJlZmVyZW5jZUVsZW1lbnR9LFhBeGlzOntoYW5kbGVyOnhwfSxZQXhpczp7aGFuZGxlcjp4cH0sQnJ1c2g6e2hhbmRsZXI6VC5yZW5kZXJCcnVzaCxvbmNlOiEwfSxCYXI6e2hhbmRsZXI6VC5yZW5kZXJHcmFwaGljQ2hpbGR9LExpbmU6e2hhbmRsZXI6VC5yZW5kZXJHcmFwaGljQ2hpbGR9LEFyZWE6e2hhbmRsZXI6VC5yZW5kZXJHcmFwaGljQ2hpbGR9LFJhZGFyOntoYW5kbGVyOlQucmVuZGVyR3JhcGhpY0NoaWxkfSxSYWRpYWxCYXI6e2hhbmRsZXI6VC5yZW5kZXJHcmFwaGljQ2hpbGR9LFNjYXR0ZXI6e2hhbmRsZXI6VC5yZW5kZXJHcmFwaGljQ2hpbGR9LFBpZTp7aGFuZGxlcjpULnJlbmRlckdyYXBoaWNDaGlsZH0sRnVubmVsOntoYW5kbGVyOlQucmVuZGVyR3JhcGhpY0NoaWxkfSxUb29sdGlwOntoYW5kbGVyOlQucmVuZGVyQ3Vyc29yLG9uY2U6ITB9LFBvbGFyR3JpZDp7aGFuZGxlcjpULnJlbmRlclBvbGFyR3JpZCxvbmNlOiEwfSxQb2xhckFuZ2xlQXhpczp7aGFuZGxlcjpULnJlbmRlclBvbGFyQXhpc30sUG9sYXJSYWRpdXNBeGlzOntoYW5kbGVyOlQucmVuZGVyUG9sYXJBeGlzfSxDdXN0b21pemVkOntoYW5kbGVyOlQucmVuZGVyQ3VzdG9taXplZH19KSxULmNsaXBQYXRoSWQ9IiIuY29uY2F0KChFPU8uaWQpIT09bnVsbCYmRSE9PXZvaWQgMD9FOkNzKCJyZWNoYXJ0cyIpLCItY2xpcCIpLFQudGhyb3R0bGVUcmlnZ2VyZWRBZnRlck1vdXNlTW92ZT1hNShULnRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLChqPU8udGhyb3R0bGVEZWxheSkhPT1udWxsJiZqIT09dm9pZCAwP2o6MWUzLzYwKSxULnN0YXRlPXt9LFR9cmV0dXJuIFBoZShfLGcpLFRoZShfLFt7a2V5OiJjb21wb25lbnREaWRNb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgRSxqO3RoaXMuYWRkTGlzdGVuZXIoKSx0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe2NvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcixvZmZzZXQ6e2xlZnQ6KEU9dGhpcy5wcm9wcy5tYXJnaW4ubGVmdCkhPT1udWxsJiZFIT09dm9pZCAwP0U6MCx0b3A6KGo9dGhpcy5wcm9wcy5tYXJnaW4udG9wKSE9PW51bGwmJmohPT12b2lkIDA/ajowfSxjb29yZGluYXRlTGlzdDp0aGlzLnN0YXRlLnRvb2x0aXBUaWNrcyxtb3VzZUhhbmRsZXJDYWxsYmFjazp0aGlzLnRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLGxheW91dDp0aGlzLnByb3BzLmxheW91dH0pLHRoaXMuZGlzcGxheURlZmF1bHRUb29sdGlwKCl9fSx7a2V5OiJkaXNwbGF5RGVmYXVsdFRvb2x0aXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEU9dGhpcy5wcm9wcyxqPUUuY2hpbGRyZW4sVD1FLmRhdGEsUD1FLmhlaWdodCxOPUUubGF5b3V0LFI9Z3IoaixJcik7aWYoUil7dmFyIEk9Ui5wcm9wcy5kZWZhdWx0SW5kZXg7aWYoISh0eXBlb2YgSSE9Im51bWJlciJ8fEk8MHx8ST50aGlzLnN0YXRlLnRvb2x0aXBUaWNrcy5sZW5ndGgtMSkpe3ZhciBWPXRoaXMuc3RhdGUudG9vbHRpcFRpY2tzW0ldJiZ0aGlzLnN0YXRlLnRvb2x0aXBUaWNrc1tJXS52YWx1ZSxCPXBfKHRoaXMuc3RhdGUsVCxJLFYpLCQ9dGhpcy5zdGF0ZS50b29sdGlwVGlja3NbSV0uY29vcmRpbmF0ZSx6PSh0aGlzLnN0YXRlLm9mZnNldC50b3ArUCkvMixVPU49PT0iaG9yaXpvbnRhbCIsSz1VP3t4OiQseTp6fTp7eTokLHg6en0sTD10aGlzLnN0YXRlLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLmZpbmQoZnVuY3Rpb24oSCl7dmFyIGVlPUguaXRlbTtyZXR1cm4gZWUudHlwZS5uYW1lPT09IlNjYXR0ZXIifSk7TCYmKEs9bGUobGUoe30sSyksTC5wcm9wcy5wb2ludHNbSV0udG9vbHRpcFBvc2l0aW9uKSxCPUwucHJvcHMucG9pbnRzW0ldLnRvb2x0aXBQYXlsb2FkKTt2YXIgVz17YWN0aXZlVG9vbHRpcEluZGV4OkksaXNUb29sdGlwQWN0aXZlOiEwLGFjdGl2ZUxhYmVsOlYsYWN0aXZlUGF5bG9hZDpCLGFjdGl2ZUNvb3JkaW5hdGU6S307dGhpcy5zZXRTdGF0ZShXKSx0aGlzLnJlbmRlckN1cnNvcihSKSx0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldEluZGV4KEkpfX19fSx7a2V5OiJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oRSxqKXtpZighdGhpcy5wcm9wcy5hY2Nlc3NpYmlsaXR5TGF5ZXIpcmV0dXJuIG51bGw7aWYodGhpcy5zdGF0ZS50b29sdGlwVGlja3MhPT1qLnRvb2x0aXBUaWNrcyYmdGhpcy5hY2Nlc3NpYmlsaXR5TWFuYWdlci5zZXREZXRhaWxzKHtjb29yZGluYXRlTGlzdDp0aGlzLnN0YXRlLnRvb2x0aXBUaWNrc30pLHRoaXMucHJvcHMubGF5b3V0IT09RS5sYXlvdXQmJnRoaXMuYWNjZXNzaWJpbGl0eU1hbmFnZXIuc2V0RGV0YWlscyh7bGF5b3V0OnRoaXMucHJvcHMubGF5b3V0fSksdGhpcy5wcm9wcy5tYXJnaW4hPT1FLm1hcmdpbil7dmFyIFQsUDt0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe29mZnNldDp7bGVmdDooVD10aGlzLnByb3BzLm1hcmdpbi5sZWZ0KSE9PW51bGwmJlQhPT12b2lkIDA/VDowLHRvcDooUD10aGlzLnByb3BzLm1hcmdpbi50b3ApIT09bnVsbCYmUCE9PXZvaWQgMD9QOjB9fSl9cmV0dXJuIG51bGx9fSx7a2V5OiJjb21wb25lbnREaWRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKEUpe1lTKFtncihFLmNoaWxkcmVuLElyKV0sW2dyKHRoaXMucHJvcHMuY2hpbGRyZW4sSXIpXSl8fHRoaXMuZGlzcGxheURlZmF1bHRUb29sdGlwKCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUxpc3RlbmVyKCksdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLmNhbmNlbCgpfX0se2tleToiZ2V0VG9vbHRpcEV2ZW50VHlwZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgRT1ncih0aGlzLnByb3BzLmNoaWxkcmVuLElyKTtpZihFJiZ0eXBlb2YgRS5wcm9wcy5zaGFyZWQ9PSJib29sZWFuIil7dmFyIGo9RS5wcm9wcy5zaGFyZWQ/ImF4aXMiOiJpdGVtIjtyZXR1cm4gdS5pbmRleE9mKGopPj0wP2o6b31yZXR1cm4gb319LHtrZXk6ImdldE1vdXNlSW5mbyIsdmFsdWU6ZnVuY3Rpb24oRSl7aWYoIXRoaXMuY29udGFpbmVyKXJldHVybiBudWxsO3ZhciBqPXRoaXMuY29udGFpbmVyLFQ9ai5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxQPXJ0ZShUKSxOPXtjaGFydFg6TWF0aC5yb3VuZChFLnBhZ2VYLVAubGVmdCksY2hhcnRZOk1hdGgucm91bmQoRS5wYWdlWS1QLnRvcCl9LFI9VC53aWR0aC9qLm9mZnNldFdpZHRofHwxLEk9dGhpcy5pblJhbmdlKE4uY2hhcnRYLE4uY2hhcnRZLFIpO2lmKCFJKXJldHVybiBudWxsO3ZhciBWPXRoaXMuc3RhdGUsQj1WLnhBeGlzTWFwLCQ9Vi55QXhpc01hcCx6PXRoaXMuZ2V0VG9vbHRpcEV2ZW50VHlwZSgpLFU9bCQodGhpcy5zdGF0ZSx0aGlzLnByb3BzLmRhdGEsdGhpcy5wcm9wcy5sYXlvdXQsSSk7aWYoeiE9PSJheGlzIiYmQiYmJCl7dmFyIEs9Q2woQikuc2NhbGUsTD1DbCgkKS5zY2FsZSxXPUsmJksuaW52ZXJ0P0suaW52ZXJ0KE4uY2hhcnRYKTpudWxsLEg9TCYmTC5pbnZlcnQ/TC5pbnZlcnQoTi5jaGFydFkpOm51bGw7cmV0dXJuIGxlKGxlKHt9LE4pLHt9LHt4VmFsdWU6Vyx5VmFsdWU6SH0sVSl9cmV0dXJuIFU/bGUobGUoe30sTiksVSk6bnVsbH19LHtrZXk6ImluUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKEUsail7dmFyIFQ9YXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOjEsUD10aGlzLnByb3BzLmxheW91dCxOPUUvVCxSPWovVDtpZihQPT09Imhvcml6b250YWwifHxQPT09InZlcnRpY2FsIil7dmFyIEk9dGhpcy5zdGF0ZS5vZmZzZXQsVj1OPj1JLmxlZnQmJk48PUkubGVmdCtJLndpZHRoJiZSPj1JLnRvcCYmUjw9SS50b3ArSS5oZWlnaHQ7cmV0dXJuIFY/e3g6Tix5OlJ9Om51bGx9dmFyIEI9dGhpcy5zdGF0ZSwkPUIuYW5nbGVBeGlzTWFwLHo9Qi5yYWRpdXNBeGlzTWFwO2lmKCQmJnope3ZhciBVPUNsKCQpO3JldHVybiBoTCh7eDpOLHk6Un0sVSl9cmV0dXJuIG51bGx9fSx7a2V5OiJwYXJzZUV2ZW50c09mV3JhcHBlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgRT10aGlzLnByb3BzLmNoaWxkcmVuLGo9dGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCksVD1ncihFLElyKSxQPXt9O1QmJmo9PT0iYXhpcyImJihULnByb3BzLnRyaWdnZXI9PT0iY2xpY2siP1A9e29uQ2xpY2s6dGhpcy5oYW5kbGVDbGlja306UD17b25Nb3VzZUVudGVyOnRoaXMuaGFuZGxlTW91c2VFbnRlcixvbkRvdWJsZUNsaWNrOnRoaXMuaGFuZGxlRG91YmxlQ2xpY2ssb25Nb3VzZU1vdmU6dGhpcy5oYW5kbGVNb3VzZU1vdmUsb25Nb3VzZUxlYXZlOnRoaXMuaGFuZGxlTW91c2VMZWF2ZSxvblRvdWNoTW92ZTp0aGlzLmhhbmRsZVRvdWNoTW92ZSxvblRvdWNoU3RhcnQ6dGhpcy5oYW5kbGVUb3VjaFN0YXJ0LG9uVG91Y2hFbmQ6dGhpcy5oYW5kbGVUb3VjaEVuZCxvbkNvbnRleHRNZW51OnRoaXMuaGFuZGxlQ29udGV4dE1lbnV9KTt2YXIgTj1zbSh0aGlzLnByb3BzLHRoaXMuaGFuZGxlT3V0ZXJFdmVudCk7cmV0dXJuIGxlKGxlKHt9LE4pLFApfX0se2tleToiYWRkTGlzdGVuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7aVMub24oYVMsdGhpcy5oYW5kbGVSZWNlaXZlU3luY0V2ZW50KX19LHtrZXk6InJlbW92ZUxpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbigpe2lTLnJlbW92ZUxpc3RlbmVyKGFTLHRoaXMuaGFuZGxlUmVjZWl2ZVN5bmNFdmVudCl9fSx7a2V5OiJmaWx0ZXJGb3JtYXRJdGVtIix2YWx1ZTpmdW5jdGlvbihFLGosVCl7Zm9yKHZhciBQPXRoaXMuc3RhdGUuZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMsTj0wLFI9UC5sZW5ndGg7TjxSO04rKyl7dmFyIEk9UFtOXTtpZihJLml0ZW09PT1FfHxJLnByb3BzLmtleT09PUUua2V5fHxqPT09c2EoSS5pdGVtLnR5cGUpJiZUPT09SS5jaGlsZEluZGV4KXJldHVybiBJfXJldHVybiBudWxsfX0se2tleToicmVuZGVyQ2xpcFBhdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEU9dGhpcy5jbGlwUGF0aElkLGo9dGhpcy5zdGF0ZS5vZmZzZXQsVD1qLmxlZnQsUD1qLnRvcCxOPWouaGVpZ2h0LFI9ai53aWR0aDtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJkZWZzIixudWxsLEYuY3JlYXRlRWxlbWVudCgiY2xpcFBhdGgiLHtpZDpFfSxGLmNyZWF0ZUVsZW1lbnQoInJlY3QiLHt4OlQseTpQLGhlaWdodDpOLHdpZHRoOlJ9KSkpfX0se2tleToiZ2V0WFNjYWxlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgRT10aGlzLnN0YXRlLnhBeGlzTWFwO3JldHVybiBFP09iamVjdC5lbnRyaWVzKEUpLnJlZHVjZShmdW5jdGlvbihqLFQpe3ZhciBQPWEkKFQsMiksTj1QWzBdLFI9UFsxXTtyZXR1cm4gbGUobGUoe30saikse30sVWUoe30sTixSLnNjYWxlKSl9LHt9KTpudWxsfX0se2tleToiZ2V0WVNjYWxlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgRT10aGlzLnN0YXRlLnlBeGlzTWFwO3JldHVybiBFP09iamVjdC5lbnRyaWVzKEUpLnJlZHVjZShmdW5jdGlvbihqLFQpe3ZhciBQPWEkKFQsMiksTj1QWzBdLFI9UFsxXTtyZXR1cm4gbGUobGUoe30saikse30sVWUoe30sTixSLnNjYWxlKSl9LHt9KTpudWxsfX0se2tleToiZ2V0WFNjYWxlQnlBeGlzSWQiLHZhbHVlOmZ1bmN0aW9uKEUpe3ZhciBqO3JldHVybihqPXRoaXMuc3RhdGUueEF4aXNNYXApPT09bnVsbHx8aj09PXZvaWQgMHx8KGo9altFXSk9PT1udWxsfHxqPT09dm9pZCAwP3ZvaWQgMDpqLnNjYWxlfX0se2tleToiZ2V0WVNjYWxlQnlBeGlzSWQiLHZhbHVlOmZ1bmN0aW9uKEUpe3ZhciBqO3JldHVybihqPXRoaXMuc3RhdGUueUF4aXNNYXApPT09bnVsbHx8aj09PXZvaWQgMHx8KGo9altFXSk9PT1udWxsfHxqPT09dm9pZCAwP3ZvaWQgMDpqLnNjYWxlfX0se2tleToiZ2V0SXRlbUJ5WFkiLHZhbHVlOmZ1bmN0aW9uKEUpe3ZhciBqPXRoaXMuc3RhdGUsVD1qLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLFA9ai5hY3RpdmVJdGVtO2lmKFQmJlQubGVuZ3RoKWZvcih2YXIgTj0wLFI9VC5sZW5ndGg7TjxSO04rKyl7dmFyIEk9VFtOXSxWPUkucHJvcHMsQj1JLml0ZW0sJD1CLnR5cGUuZGVmYXVsdFByb3BzIT09dm9pZCAwP2xlKGxlKHt9LEIudHlwZS5kZWZhdWx0UHJvcHMpLEIucHJvcHMpOkIucHJvcHMsej1zYShCLnR5cGUpO2lmKHo9PT0iQmFyIil7dmFyIFU9KFYuZGF0YXx8W10pLmZpbmQoZnVuY3Rpb24oSCl7cmV0dXJuIF9sZShFLEgpfSk7aWYoVSlyZXR1cm57Z3JhcGhpY2FsSXRlbTpJLHBheWxvYWQ6VX19ZWxzZSBpZih6PT09IlJhZGlhbEJhciIpe3ZhciBLPShWLmRhdGF8fFtdKS5maW5kKGZ1bmN0aW9uKEgpe3JldHVybiBoTChFLEgpfSk7aWYoSylyZXR1cm57Z3JhcGhpY2FsSXRlbTpJLHBheWxvYWQ6S319ZWxzZSBpZihkdihJLFApfHxodihJLFApfHxhZChJLFApKXt2YXIgTD1LdWUoe2dyYXBoaWNhbEl0ZW06SSxhY3RpdmVUb29sdGlwSXRlbTpQLGl0ZW1EYXRhOiQuZGF0YX0pLFc9JC5hY3RpdmVJbmRleD09PXZvaWQgMD9MOiQuYWN0aXZlSW5kZXg7cmV0dXJue2dyYXBoaWNhbEl0ZW06bGUobGUoe30sSSkse30se2NoaWxkSW5kZXg6V30pLHBheWxvYWQ6YWQoSSxQKT8kLmRhdGFbTF06SS5wcm9wcy5kYXRhW0xdfX19cmV0dXJuIG51bGx9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEU9dGhpcztpZighT04odGhpcykpcmV0dXJuIG51bGw7dmFyIGo9dGhpcy5wcm9wcyxUPWouY2hpbGRyZW4sUD1qLmNsYXNzTmFtZSxOPWoud2lkdGgsUj1qLmhlaWdodCxJPWouc3R5bGUsVj1qLmNvbXBhY3QsQj1qLnRpdGxlLCQ9ai5kZXNjLHo9byQoaixiaGUpLFU9JGUoeiwhMSk7aWYoVilyZXR1cm4gRi5jcmVhdGVFbGVtZW50KFZJLHtzdGF0ZTp0aGlzLnN0YXRlLHdpZHRoOnRoaXMucHJvcHMud2lkdGgsaGVpZ2h0OnRoaXMucHJvcHMuaGVpZ2h0LGNsaXBQYXRoSWQ6dGhpcy5jbGlwUGF0aElkfSxGLmNyZWF0ZUVsZW1lbnQoWlMsRGwoe30sVSx7d2lkdGg6TixoZWlnaHQ6Uix0aXRsZTpCLGRlc2M6JH0pLHRoaXMucmVuZGVyQ2xpcFBhdGgoKSxFTihULHRoaXMucmVuZGVyTWFwKSkpO2lmKHRoaXMucHJvcHMuYWNjZXNzaWJpbGl0eUxheWVyKXt2YXIgSyxMO1UudGFiSW5kZXg9KEs9dGhpcy5wcm9wcy50YWJJbmRleCkhPT1udWxsJiZLIT09dm9pZCAwP0s6MCxVLnJvbGU9KEw9dGhpcy5wcm9wcy5yb2xlKSE9PW51bGwmJkwhPT12b2lkIDA/TDoiYXBwbGljYXRpb24iLFUub25LZXlEb3duPWZ1bmN0aW9uKEgpe0UuYWNjZXNzaWJpbGl0eU1hbmFnZXIua2V5Ym9hcmRFdmVudChIKX0sVS5vbkZvY3VzPWZ1bmN0aW9uKCl7RS5hY2Nlc3NpYmlsaXR5TWFuYWdlci5mb2N1cygpfX12YXIgVz10aGlzLnBhcnNlRXZlbnRzT2ZXcmFwcGVyKCk7cmV0dXJuIEYuY3JlYXRlRWxlbWVudChWSSx7c3RhdGU6dGhpcy5zdGF0ZSx3aWR0aDp0aGlzLnByb3BzLndpZHRoLGhlaWdodDp0aGlzLnByb3BzLmhlaWdodCxjbGlwUGF0aElkOnRoaXMuY2xpcFBhdGhJZH0sRi5jcmVhdGVFbGVtZW50KCJkaXYiLERsKHtjbGFzc05hbWU6V2UoInJlY2hhcnRzLXdyYXBwZXIiLFApLHN0eWxlOmxlKHtwb3NpdGlvbjoicmVsYXRpdmUiLGN1cnNvcjoiZGVmYXVsdCIsd2lkdGg6TixoZWlnaHQ6Un0sSSl9LFcse3JlZjpmdW5jdGlvbihlZSl7RS5jb250YWluZXI9ZWV9fSksRi5jcmVhdGVFbGVtZW50KFpTLERsKHt9LFUse3dpZHRoOk4saGVpZ2h0OlIsdGl0bGU6QixkZXNjOiQsc3R5bGU6TGhlfSksdGhpcy5yZW5kZXJDbGlwUGF0aCgpLEVOKFQsdGhpcy5yZW5kZXJNYXApKSx0aGlzLnJlbmRlckxlZ2VuZCgpLHRoaXMucmVuZGVyVG9vbHRpcCgpKSl9fV0pfSkoQy5Db21wb25lbnQpO1VlKHcsImRpc3BsYXlOYW1lIixuKSxVZSh3LCJkZWZhdWx0UHJvcHMiLGxlKHtsYXlvdXQ6Imhvcml6b250YWwiLHN0YWNrT2Zmc2V0OiJub25lIixiYXJDYXRlZ29yeUdhcDoiMTAlIixiYXJHYXA6NCxtYXJnaW46e3RvcDo1LHJpZ2h0OjUsYm90dG9tOjUsbGVmdDo1fSxyZXZlcnNlU3RhY2tPcmRlcjohMSxzeW5jTWV0aG9kOiJpbmRleCJ9LG0pKSxVZSh3LCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLGZ1bmN0aW9uKGcsXyl7dmFyIE89Zy5kYXRhS2V5LEU9Zy5kYXRhLGo9Zy5jaGlsZHJlbixUPWcud2lkdGgsUD1nLmhlaWdodCxOPWcubGF5b3V0LFI9Zy5zdGFja09mZnNldCxJPWcubWFyZ2luLFY9Xy5kYXRhU3RhcnRJbmRleCxCPV8uZGF0YUVuZEluZGV4O2lmKF8udXBkYXRlSWQ9PT12b2lkIDApe3ZhciAkPXUkKGcpO3JldHVybiBsZShsZShsZSh7fSwkKSx7fSx7dXBkYXRlSWQ6MH0seChsZShsZSh7cHJvcHM6Z30sJCkse30se3VwZGF0ZUlkOjB9KSxfKSkse30se3ByZXZEYXRhS2V5Ok8scHJldkRhdGE6RSxwcmV2V2lkdGg6VCxwcmV2SGVpZ2h0OlAscHJldkxheW91dDpOLHByZXZTdGFja09mZnNldDpSLHByZXZNYXJnaW46SSxwcmV2Q2hpbGRyZW46an0pfWlmKE8hPT1fLnByZXZEYXRhS2V5fHxFIT09Xy5wcmV2RGF0YXx8VCE9PV8ucHJldldpZHRofHxQIT09Xy5wcmV2SGVpZ2h0fHxOIT09Xy5wcmV2TGF5b3V0fHxSIT09Xy5wcmV2U3RhY2tPZmZzZXR8fCFxbChJLF8ucHJldk1hcmdpbikpe3ZhciB6PXUkKGcpLFU9e2NoYXJ0WDpfLmNoYXJ0WCxjaGFydFk6Xy5jaGFydFksaXNUb29sdGlwQWN0aXZlOl8uaXNUb29sdGlwQWN0aXZlfSxLPWxlKGxlKHt9LGwkKF8sRSxOKSkse30se3VwZGF0ZUlkOl8udXBkYXRlSWQrMX0pLEw9bGUobGUobGUoe30seiksVSksSyk7cmV0dXJuIGxlKGxlKGxlKHt9LEwpLHgobGUoe3Byb3BzOmd9LEwpLF8pKSx7fSx7cHJldkRhdGFLZXk6TyxwcmV2RGF0YTpFLHByZXZXaWR0aDpULHByZXZIZWlnaHQ6UCxwcmV2TGF5b3V0Ok4scHJldlN0YWNrT2Zmc2V0OlIscHJldk1hcmdpbjpJLHByZXZDaGlsZHJlbjpqfSl9aWYoIVlTKGosXy5wcmV2Q2hpbGRyZW4pKXt2YXIgVyxILGVlLGssWj1ncihqLGR1KSx0ZT1aJiYoVz0oSD1aLnByb3BzKT09PW51bGx8fEg9PT12b2lkIDA/dm9pZCAwOkguc3RhcnRJbmRleCkhPT1udWxsJiZXIT09dm9pZCAwP1c6VixvZT1aJiYoZWU9KGs9Wi5wcm9wcyk9PT1udWxsfHxrPT09dm9pZCAwP3ZvaWQgMDprLmVuZEluZGV4KSE9PW51bGwmJmVlIT09dm9pZCAwP2VlOkIsbWU9dGUhPT1WfHxvZSE9PUIsYmU9IUdlKEUpLGdlPWJlJiYhbWU/Xy51cGRhdGVJZDpfLnVwZGF0ZUlkKzE7cmV0dXJuIGxlKGxlKHt1cGRhdGVJZDpnZX0seChsZShsZSh7cHJvcHM6Z30sXykse30se3VwZGF0ZUlkOmdlLGRhdGFTdGFydEluZGV4OnRlLGRhdGFFbmRJbmRleDpvZX0pLF8pKSx7fSx7cHJldkNoaWxkcmVuOmosZGF0YVN0YXJ0SW5kZXg6dGUsZGF0YUVuZEluZGV4Om9lfSl9cmV0dXJuIG51bGx9KSxVZSh3LCJyZW5kZXJBY3RpdmVEb3QiLGZ1bmN0aW9uKGcsXyxPKXt2YXIgRTtyZXR1cm4gQy5pc1ZhbGlkRWxlbWVudChnKT9FPUMuY2xvbmVFbGVtZW50KGcsXyk6SGUoZyk/RT1nKF8pOkU9Ri5jcmVhdGVFbGVtZW50KE5kLF8pLEYuY3JlYXRlRWxlbWVudChhdCx7Y2xhc3NOYW1lOiJyZWNoYXJ0cy1hY3RpdmUtZG90IixrZXk6T30sRSl9KTt2YXIgYj1DLmZvcndhcmRSZWYoZnVuY3Rpb24oXyxPKXtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KHcsRGwoe30sXyx7cmVmOk99KSl9KTtyZXR1cm4gYi5kaXNwbGF5TmFtZT13LmRpc3BsYXlOYW1lLGJ9LEdoZT1FVCh7Y2hhcnROYW1lOiJMaW5lQ2hhcnQiLEdyYXBoaWNhbENoaWxkOkRkLGF4aXNDb21wb25lbnRzOlt7YXhpc1R5cGU6InhBeGlzIixBeGlzQ29tcDpVdX0se2F4aXNUeXBlOiJ5QXhpcyIsQXhpc0NvbXA6enV9XSxmb3JtYXRBeGlzTWFwOlVxfSksS2hlPUVUKHtjaGFydE5hbWU6IlBpZUNoYXJ0IixHcmFwaGljYWxDaGlsZDp4YSx2YWxpZGF0ZVRvb2x0aXBFdmVudFR5cGVzOlsiaXRlbSJdLGRlZmF1bHRUb29sdGlwRXZlbnRUeXBlOiJpdGVtIixsZWdlbmRDb250ZW50OiJjaGlsZHJlbiIsYXhpc0NvbXBvbmVudHM6W3theGlzVHlwZToiYW5nbGVBeGlzIixBeGlzQ29tcDpmdn0se2F4aXNUeXBlOiJyYWRpdXNBeGlzIixBeGlzQ29tcDp1dn1dLGZvcm1hdEF4aXNNYXA6RGFlLGRlZmF1bHRQcm9wczp7bGF5b3V0OiJjZW50cmljIixzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLGN4OiI1MCUiLGN5OiI1MCUiLGlubmVyUmFkaXVzOjAsb3V0ZXJSYWRpdXM6IjgwJSJ9fSksalU9RVQoe2NoYXJ0TmFtZToiQXJlYUNoYXJ0IixHcmFwaGljYWxDaGlsZDp3YSxheGlzQ29tcG9uZW50czpbe2F4aXNUeXBlOiJ4QXhpcyIsQXhpc0NvbXA6VXV9LHtheGlzVHlwZToieUF4aXMiLEF4aXNDb21wOnp1fV0sZm9ybWF0QXhpc01hcDpVcX0pO2Z1bmN0aW9uIFBVKCl7Y29uc3RbZSx0XT1DLnVzZVN0YXRlKCExKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9PnQoITApLFtdKSxlfWNvbnN0IFdoZT1be2RhdGU6Ikp1biAyNCIsdmFsdWU6MTQyZTR9LHtkYXRlOiJKdW4gMjUiLHZhbHVlOjE0MzVlM30se2RhdGU6Ikp1biAyNiIsdmFsdWU6MTQzZTR9LHtkYXRlOiJKdW4gMjciLHZhbHVlOjE0NWU0fSx7ZGF0ZToiSnVuIDI4Iix2YWx1ZToxNDhlNH0se2RhdGU6Ikp1biAyOSIsdmFsdWU6MTQ3NWUzfSx7ZGF0ZToiSnVuIDMwIix2YWx1ZToxNDllNH0se2RhdGU6Ikp1bCAxIix2YWx1ZToxNDg1ZTN9LHtkYXRlOiJKdWwgMiIsdmFsdWU6MTUxZTR9LHtkYXRlOiJKdWwgMyIsdmFsdWU6MTUzZTR9LHtkYXRlOiJKdWwgNCIsdmFsdWU6MTUyZTR9LHtkYXRlOiJKdWwgNSIsdmFsdWU6MTU0ZTR9LHtkYXRlOiJKdWwgNiIsdmFsdWU6MTUzNWUzfSx7ZGF0ZToiSnVsIDciLHZhbHVlOjE1NWU0fSx7ZGF0ZToiSnVsIDgiLHZhbHVlOjE1N2U0fSx7ZGF0ZToiSnVsIDkiLHZhbHVlOjE1NjVlM30se2RhdGU6Ikp1bCAxMCIsdmFsdWU6MTU4ZTR9LHtkYXRlOiJKdWwgMTEiLHZhbHVlOjE1NzVlM30se2RhdGU6Ikp1bCAxMiIsdmFsdWU6MTU5ZTR9LHtkYXRlOiJKdWwgMTMiLHZhbHVlOjE1ODVlM30se2RhdGU6Ikp1bCAxNCIsdmFsdWU6MTZlNX0se2RhdGU6Ikp1bCAxNSIsdmFsdWU6MTU5NWUzfSx7ZGF0ZToiSnVsIDE2Iix2YWx1ZToxNjFlNH0se2RhdGU6Ikp1bCAxNyIsdmFsdWU6MTYwNWUzfSx7ZGF0ZToiSnVsIDE4Iix2YWx1ZToxNjE1ZTN9LHtkYXRlOiJKdWwgMTkiLHZhbHVlOjE2MWU0fSx7ZGF0ZToiSnVsIDIwIix2YWx1ZToxNjJlNH0se2RhdGU6Ikp1bCAyMSIsdmFsdWU6MTYxNWUzfSx7ZGF0ZToiSnVsIDIyIix2YWx1ZToxNjIxZTN9LHtkYXRlOiJKdWwgMjMiLHZhbHVlOjE2MjE5NDB9XSxmJD17dGV0aGVyOlsxMDAsMTAwLDEwMCwxMDAsMTAwLDEwMCwxMDBdLm1hcChlPT4oe3ZhbHVlOmV9KSksYml0Y29pbjpbNjAsNjIsNjEsNjQsNjUsNjcsNjldLm1hcChlPT4oe3ZhbHVlOmV9KSksc29sYW5hOls0MCw0OCw0Miw1NSw1MCw2MCw2NV0ubWFwKGU9Pih7dmFsdWU6ZX0pKX0sWWhlPXt0ZXRoZXI6IiM3MTcxN2EiLGJpdGNvaW46IiMzNGQzOTkiLHNvbGFuYToiIzM0ZDM5OSJ9LFhoZT1bIjFEIiwiMVciLCIxTSIsIjNNIiwiMVkiLCJBTEwiXSxkJD1be3N5bToiQlRDIixwcmljZToiJDY0LDMwMiIsY2hnOiIrMi40JSIsdXA6ITB9LHtzeW06IkVUSCIscHJpY2U6IiQzLDI0MCIsY2hnOiIrMS4xJSIsdXA6ITB9LHtzeW06IlNPTCIscHJpY2U6IiQ3Ni4xMiIsY2hnOiIrNS4yJSIsdXA6ITB9LHtzeW06IlVTRFQiLHByaWNlOiIkMS4wMCIsY2hnOiIwLjAlIix1cDpudWxsfSx7c3ltOiJCTkIiLHByaWNlOiIkNTkwLjIwIixjaGc6Ii0wLjglIix1cDohMX0se3N5bToiQlRDIixwcmljZToiJDY0LDMwMiIsY2hnOiIrMi40JSIsdXA6ITB9LHtzeW06IkVUSCIscHJpY2U6IiQzLDI0MCIsY2hnOiIrMS4xJSIsdXA6ITB9LHtzeW06IlNPTCIscHJpY2U6IiQ3Ni4xMiIsY2hnOiIrNS4yJSIsdXA6ITB9LHtzeW06IlVTRFQiLHByaWNlOiIkMS4wMCIsY2hnOiIwLjAlIix1cDpudWxsfSx7c3ltOiJCTkIiLHByaWNlOiIkNTkwLjIwIixjaGc6Ii0wLjglIix1cDohMX1dO2Z1bmN0aW9uIGgkKCl7Y29uc3QgZT1QVSgpLFssdF09JHkoKSxbbixyXT1DLnVzZVN0YXRlKCIxTSIpO3JldHVybiBBLmpzeHMoImRpdiIse2NsYXNzTmFtZToic3BhY2UteS0wIGFuaW1hdGUtaW4gZmFkZS1pbiBzbGlkZS1pbi1mcm9tLWJvdHRvbS00IGR1cmF0aW9uLTUwMCAtbXQtNCBtZDotbXQtOCAtbXgtNCBtZDotbXgtOCIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJib3JkZXItYiBib3JkZXItYm9yZGVyIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InB4LTQgbWQ6cHgtOCBweS01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2hpbGRyZW46W0EuanN4KCJoMSIse2NsYXNzTmFtZToidGV4dC0yeGwgZm9udC1ib2xkIixjaGlsZHJlbjoiR29vZCBtb3JuaW5nLCBJbmlha2kg8J+RiyJ9KSxBLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG10LTEgdGV4dC1zbSIsY2hpbGRyZW46IkhlcmUncyBhIHN1bW1hcnkgb2YgeW91ciBwb3J0Zm9saW8uIn0pXX0pLEEuanN4KCJidXR0b24iLHtjbGFzc05hbWU6InctMTAgaC0xMCByb3VuZGVkLWZ1bGwgYmctc2Vjb25kYXJ5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwIHRyYW5zaXRpb24tY29sb3JzIGJvcmRlciBib3JkZXItYm9yZGVyIiwiYXJpYS1sYWJlbCI6IlJlZnJlc2giLGNoaWxkcmVuOkEuanN4KFBLLHtjbGFzc05hbWU6InctNCBoLTQifSl9KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiaC05IGJnLWNhcmQgYm9yZGVyLXQgYm9yZGVyLWJvcmRlciBmbGV4IGl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmUiLGNoaWxkcmVuOltBLmpzeCgic3R5bGUiLHtjaGlsZHJlbjpgCiAgICAgICAgICAgIEBrZXlmcmFtZXMgdGlja2VyLXNjcm9sbCB7CiAgICAgICAgICAgICAgMCUgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfQogICAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICAudGlja2VyLXRyYWNrIHsgYW5pbWF0aW9uOiB0aWNrZXItc2Nyb2xsIDI4cyBsaW5lYXIgaW5maW5pdGU7IH0KICAgICAgICAgICAgLnRpY2tlci10cmFjazpob3ZlciB7IGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH0KICAgICAgICAgIGB9KSxBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ0aWNrZXItdHJhY2sgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTggd2hpdGVzcGFjZS1ub3dyYXAgcHgtNCB0ZXh0LXNtIixjaGlsZHJlbjpbLi4uZCQsLi4uZCRdLm1hcCgoaSxvKT0+QS5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOmkuc3ltfSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIixjaGlsZHJlbjppLnByaWNlfSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6aS51cD09PSEwPyJ0ZXh0LWVtZXJhbGQtNDAwIHRleHQteHMiOmkudXA9PT0hMT8idGV4dC1yb3NlLTQwMCB0ZXh0LXhzIjoidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQteHMiLGNoaWxkcmVuOmkuY2hnfSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InctMSBoLTEgcm91bmRlZC1mdWxsIGJnLWJvcmRlciBpbmxpbmUtYmxvY2sgbWwtMiJ9KV19LG8pKX0pXX0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJweC00IG1kOnB4LTggcHktOCBzcGFjZS15LTgiLGNoaWxkcmVuOltBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBtZDppdGVtcy1lbmQganVzdGlmeS1iZXR3ZWVuIGdhcC02IixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQteHMgZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgbWItMiIsY2hpbGRyZW46IlRvdGFsIFBvcnRmb2xpbyBCYWxhbmNlIn0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBpdGVtcy1iYXNlbGluZSBnYXAtNCIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LTV4bCBmb250LWJvbGQgdHJhY2tpbmctdGlnaHQgdGFidWxhci1udW1zIixjaGlsZHJlbjpOdCh1WCl9KSxBLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTIuNSBweS0xIGJnLWVtZXJhbGQtNTAwLzEwIHRleHQtZW1lcmFsZC00MDAgcm91bmRlZC1sZyB0ZXh0LXNtIGZvbnQtbWVkaXVtIixjaGlsZHJlbjpbQS5qc3goeksse2NsYXNzTmFtZToidy00IGgtNCJ9KSwiKyQyNCw1MzAgKDEuNSUpIl19KV19KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIuNSBmbGV4LXdyYXAiLGNoaWxkcmVuOltBLmpzeHMoImJ1dHRvbiIse29uQ2xpY2s6KCk9PnQoIi93aXRoZHJhdyIpLGNsYXNzTmFtZToicHgtNSBweS0yLjUgcm91bmRlZC14bCBiZy1wcmltYXJ5IGhvdmVyOmJnLXByaW1hcnkvOTAgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgZm9udC1tZWRpdW0gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdHJhbnNpdGlvbi1jb2xvcnMgc2hhZG93LWxnIHNoYWRvdy1wcmltYXJ5LzIwIHRleHQtc20iLGNoaWxkcmVuOltBLmpzeChlbSx7Y2xhc3NOYW1lOiJ3LTQgaC00In0pLCIgU2VuZCJdfSksQS5qc3hzKCJidXR0b24iLHtjbGFzc05hbWU6InB4LTUgcHktMi41IHJvdW5kZWQteGwgYmctc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS84MCBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LWZvcmVncm91bmQgZm9udC1tZWRpdW0gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1zbSIsY2hpbGRyZW46W0EuanN4KGRPLHtjbGFzc05hbWU6InctNCBoLTQifSksIiBSZWNlaXZlIl19KSxBLmpzeHMoImJ1dHRvbiIse2NsYXNzTmFtZToicHgtNSBweS0yLjUgcm91bmRlZC14bCBiZy1zZWNvbmRhcnkgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwIGJvcmRlciBib3JkZXItYm9yZGVyIHRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0cmFuc2l0aW9uLWNvbG9ycyB0ZXh0LXNtIixjaGlsZHJlbjpbQS5qc3goQmwse2NsYXNzTmFtZToidy00IGgtNCJ9KSwiIEJ1eSJdfSksQS5qc3hzKCJidXR0b24iLHtjbGFzc05hbWU6InB4LTUgcHktMi41IHJvdW5kZWQteGwgYmctc2Vjb25kYXJ5IGhvdmVyOmJnLXNlY29uZGFyeS84MCBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LWZvcmVncm91bmQgZm9udC1tZWRpdW0gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1zbSIsY2hpbGRyZW46W0EuanN4KE9LLHtjbGFzc05hbWU6InctNCBoLTQifSksIiBTZWxsIl19KV19KV19KSxBLmpzeHMobW4se2NsYXNzTmFtZToicC02IHNoYWRvdy14bCBzaGFkb3ctYmxhY2svMTAiLGNoaWxkcmVuOltBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTYiLGNoaWxkcmVuOltBLmpzeCgiaDMiLHtjbGFzc05hbWU6InRleHQtbGcgZm9udC1zZW1pYm9sZCIsY2hpbGRyZW46IlBlcmZvcm1hbmNlIn0pLEEuanN4KCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGJnLXNlY29uZGFyeS81MCByb3VuZGVkLWxnIHAtMSBib3JkZXIgYm9yZGVyLWJvcmRlciBnYXAtMC41IixjaGlsZHJlbjpYaGUubWFwKGk9PkEuanN4KCJidXR0b24iLHtvbkNsaWNrOigpPT5yKGkpLGNsYXNzTmFtZTpgcHgtMyBweS0xIHRleHQteHMgZm9udC1tZWRpdW0gcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyAke2k9PT1uPyJiZy1zZWNvbmRhcnkgdGV4dC1mb3JlZ3JvdW5kIHNoYWRvdy1zbSI6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzYwIn1gLGNoaWxkcmVuOml9LGkpKX0pXX0pLEEuanN4KCJkaXYiLHtjbGFzc05hbWU6ImgtWzI4MHB4XSB3LWZ1bGwiLGNoaWxkcmVuOmUmJkEuanN4KCRwLHt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixjaGlsZHJlbjpBLmpzeHMoalUse2RhdGE6V2hlLG1hcmdpbjp7dG9wOjEwLHJpZ2h0OjAsbGVmdDowLGJvdHRvbTowfSxjaGlsZHJlbjpbQS5qc3goImRlZnMiLHtjaGlsZHJlbjpBLmpzeHMoImxpbmVhckdyYWRpZW50Iix7aWQ6InBvcnRmb2xpb0dyYWRpZW50Iix4MToiMCIseTE6IjAiLHgyOiIwIix5MjoiMSIsY2hpbGRyZW46W0EuanN4KCJzdG9wIix7b2Zmc2V0OiI1JSIsc3RvcENvbG9yOiIjMDA1MkZGIixzdG9wT3BhY2l0eTouMzV9KSxBLmpzeCgic3RvcCIse29mZnNldDoiOTUlIixzdG9wQ29sb3I6IiMwMDUyRkYiLHN0b3BPcGFjaXR5OjB9KV19KX0pLEEuanN4KFV1LHtkYXRhS2V5OiJkYXRlIixoaWRlOiEwfSksQS5qc3goenUse2RvbWFpbjpbImRhdGFNaW4gLSAyMDAwMCIsImRhdGFNYXggKyAyMDAwMCJdLGhpZGU6ITB9KSxBLmpzeChJcix7Y29udGVudFN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6InZhcigtLWNvbG9yLWNhcmQpIixib3JkZXJDb2xvcjoidmFyKC0tY29sb3ItYm9yZGVyKSIsYm9yZGVyUmFkaXVzOiIxMnB4Iixjb2xvcjoidmFyKC0tY29sb3ItZm9yZWdyb3VuZCkiLGJveFNoYWRvdzoiMCAxMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAwLjMpIixmb250U2l6ZToiMTNweCJ9LGl0ZW1TdHlsZTp7Y29sb3I6IiMwMDUyRkYiLGZvbnRXZWlnaHQ6NjAwfSxmb3JtYXR0ZXI6aT0+W2AkJHtpLnRvTG9jYWxlU3RyaW5nKCl9YCwiUG9ydGZvbGlvIl0sbGFiZWxGb3JtYXR0ZXI6aT0+aX0pLEEuanN4KHdhLHt0eXBlOiJtb25vdG9uZSIsZGF0YUtleToidmFsdWUiLHN0cm9rZToiIzAwNTJGRiIsc3Ryb2tlV2lkdGg6Mi41LGZpbGxPcGFjaXR5OjEsZmlsbDoidXJsKCNwb3J0Zm9saW9HcmFkaWVudCkifSldfSl9KX0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0zIGdhcC02IixjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZToibGc6Y29sLXNwYW4tMiIsY2hpbGRyZW46QS5qc3hzKG1uLHtjbGFzc05hbWU6InAtNiIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNiIsY2hpbGRyZW46W0EuanN4KCJoMyIse2NsYXNzTmFtZToidGV4dC1sZyBmb250LXNlbWlib2xkIixjaGlsZHJlbjoiWW91ciBBc3NldHMifSksQS5qc3goYW0se2hyZWY6Ii9hc3NldHMiLGNoaWxkcmVuOkEuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LXByaW1hcnkgdGV4dC1zbSBmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnkvODAgdHJhbnNpdGlvbi1jb2xvcnMgY3Vyc29yLXBvaW50ZXIiLGNoaWxkcmVuOiJWaWV3IEFsbCJ9KX0pXX0pLEEuanN4KCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktMSIsY2hpbGRyZW46b2YubWFwKGk9Pntjb25zdCBvPWYkW2kuaWRdPz9mJC50ZXRoZXIscz1ZaGVbaS5pZF0/PyIjNzE3MTdhIix1PWkuY2hhbmdlMjRoPjAsZj1pLmNoYW5nZTI0aD09PTA7cmV0dXJuIEEuanN4KGFtLHtocmVmOmAvYXNzZXQvJHtpLnN5bWJvbC50b0xvd2VyQ2FzZSgpfWAsY2hpbGRyZW46QS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBwLTQgcm91bmRlZC14bCBob3ZlcjpiZy1zZWNvbmRhcnkvNTAgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBob3Zlcjpib3JkZXItYm9yZGVyIHRyYW5zaXRpb24tYWxsIGN1cnNvci1wb2ludGVyIGdyb3VwIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC00IG1pbi13LTAiLGNoaWxkcmVuOltBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOmB3LTEwIGgtMTAgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtc20gc2hyaW5rLTAgJHtpLmljb25Db2xvcn1gLGNoaWxkcmVuOmkuc3ltYm9sPT09IlVTRFQiPyLigq4iOmkuc3ltYm9sLmNoYXJBdCgwKX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtaW4tdy0wIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgZmxleC13cmFwIixjaGlsZHJlbjpbaS5uYW1lLGkuc3ltYm9sPT09IlVTRFQiJiZBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTBweF0gZm9udC1tZWRpdW0gcHgtMS41IHB5LTAuNSBiZy1zZWNvbmRhcnkgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHJvdW5kZWQgdXBwZXJjYXNlIHNocmluay0wIixjaGlsZHJlbjoiRVJDLTIwIn0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46W2MzKGkuYmFsYW5jZSksIiAiLGkuc3ltYm9sXX0pXX0pXX0pLEEuanN4KCJkaXYiLHtjbGFzc05hbWU6ImhpZGRlbiBzbTpibG9jayBoLTggdy0yMCBteC00IHNocmluay0wIixjaGlsZHJlbjplJiZBLmpzeCgkcCx7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsY2hpbGRyZW46QS5qc3goR2hlLHtkYXRhOm8sY2hpbGRyZW46QS5qc3goRGQse3R5cGU6Im1vbm90b25lIixkYXRhS2V5OiJ2YWx1ZSIsc3Ryb2tlOnMsc3Ryb2tlV2lkdGg6Mixkb3Q6ITEsaXNBbmltYXRpb25BY3RpdmU6ITF9KX0pfSl9KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToidGV4dC1yaWdodCBzaHJpbmstMCIsY2hpbGRyZW46W0EuanN4KCJkaXYiLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zIixjaGlsZHJlbjpOdChpLnZhbHVlKX0pLEEuanN4KCJkaXYiLHtjbGFzc05hbWU6YHRleHQtc20gZm9udC1tZWRpdW0gJHtmPyJ0ZXh0LW11dGVkLWZvcmVncm91bmQiOnU/InRleHQtZW1lcmFsZC00MDAiOiJ0ZXh0LXJvc2UtNDAwIn1gLGNoaWxkcmVuOmY/IjAuMDAlIjoodT8iKyI6IiIpK2kuY2hhbmdlMjRoLnRvRml4ZWQoMikrIiUifSldfSldfSl9LGkuaWQpfSl9KV19KX0pLEEuanN4KCJkaXYiLHtjaGlsZHJlbjpBLmpzeHMobW4se2NsYXNzTmFtZToicC02IGZsZXggZmxleC1jb2wgaC1mdWxsIixjaGlsZHJlbjpbQS5qc3goImgzIix7Y2xhc3NOYW1lOiJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNCIsY2hpbGRyZW46IkFsbG9jYXRpb24ifSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgtMSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByZWxhdGl2ZSBtaW4taC1bMjAwcHhdIixjaGlsZHJlbjpbZSYmQS5qc3goJHAse3dpZHRoOiIxMDAlIixoZWlnaHQ6MjAwLGNoaWxkcmVuOkEuanN4cyhLaGUse2NoaWxkcmVuOltBLmpzeCh4YSx7ZGF0YTpvZixjeDoiNTAlIixjeToiNTAlIixpbm5lclJhZGl1czo2NSxvdXRlclJhZGl1czo4NSxwYWRkaW5nQW5nbGU6MixkYXRhS2V5OiJ2YWx1ZSIsc3Ryb2tlOiJub25lIixjaGlsZHJlbjpvZi5tYXAoKGksbyk9PkEuanN4KFp5LHtmaWxsOmkuY29sb3J9LG8pKX0pLEEuanN4KElyLHtmb3JtYXR0ZXI6aT0+W050KGkpLCJWYWx1ZSJdLGNvbnRlbnRTdHlsZTp7YmFja2dyb3VuZENvbG9yOiJ2YXIoLS1jb2xvci1jYXJkKSIsYm9yZGVyQ29sb3I6InZhcigtLWNvbG9yLWJvcmRlcikiLGJvcmRlclJhZGl1czoiOHB4Iixjb2xvcjoidmFyKC0tY29sb3ItZm9yZWdyb3VuZCkiLGZvbnRTaXplOiIxMnB4In19KV19KX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHBvaW50ZXItZXZlbnRzLW5vbmUiLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQtWzEwcHhdIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIixjaGlsZHJlbjoiU3RhYmxlY29pbiJ9KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC14bCBmb250LWJvbGQgbXQtMSIsY2hpbGRyZW46Ijk5LjE2JSJ9KV19KV19KSxBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJtdC00IHNwYWNlLXktMi41IixjaGlsZHJlbjpvZi5tYXAoaT0+QS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZToidy0yLjUgaC0yLjUgcm91bmRlZC1mdWxsIHNocmluay0wIixzdHlsZTp7YmFja2dyb3VuZENvbG9yOmkuY29sb3J9fSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSIsY2hpbGRyZW46aS5zeW1ib2x9KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMiLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQteHMiLGNoaWxkcmVuOk50KGkudmFsdWUpfSksQS5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LXNlbWlib2xkIHRhYnVsYXItbnVtcyB0ZXh0LXhzIG1pbi13LVs0NHB4XSB0ZXh0LXJpZ2h0IixjaGlsZHJlbjpbaS5hbGxvY2F0aW9uLnRvRml4ZWQoMiksIiUiXX0pXX0pXX0saS5pZCkpfSldfSl9KV19KV19KV19KX1jb25zdCBDVD1DLmNyZWF0ZUNvbnRleHQoe30pO2Z1bmN0aW9uIGpUKGUpe2NvbnN0IHQ9Qy51c2VSZWYobnVsbCk7cmV0dXJuIHQuY3VycmVudD09PW51bGwmJih0LmN1cnJlbnQ9ZSgpKSx0LmN1cnJlbnR9Y29uc3QgWmhlPXR5cGVvZiB3aW5kb3c8InUiLFBUPVpoZT9DLnVzZUxheW91dEVmZmVjdDpDLnVzZUVmZmVjdCx3dj1DLmNyZWF0ZUNvbnRleHQobnVsbCk7ZnVuY3Rpb24gTVQoZSx0KXtlLmluZGV4T2YodCk9PT0tMSYmZS5wdXNoKHQpfWZ1bmN0aW9uIHN5KGUsdCl7Y29uc3Qgbj1lLmluZGV4T2YodCk7bj4tMSYmZS5zcGxpY2UobiwxKX1jb25zdCBOaT0oZSx0LG4pPT5uPnQ/dDpuPGU/ZTpuO2xldCBSVD0oKT0+e307Y29uc3QgdW89e30sTVU9ZT0+L14tPyg/OlxkKyg/OlwuXGQrKT98XC5cZCspJC91LnRlc3QoZSksUlU9ZT0+dHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbCxOVT1lPT4vXjBbXi5cc10rJC91LnRlc3QoZSk7ZnVuY3Rpb24ga1UoZSl7bGV0IHQ7cmV0dXJuKCk9Pih0PT09dm9pZCAwJiYodD1lKCkpLHQpfWNvbnN0IFVyPWU9PmUsTGQ9KC4uLmUpPT5lLnJlZHVjZSgodCxuKT0+cj0+bih0KHIpKSksZGQ9KGUsdCxuKT0+e2NvbnN0IHI9dC1lO3JldHVybiByPyhuLWUpL3I6MX07Y2xhc3MgTlR7Y29uc3RydWN0b3IoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119YWRkKHQpe3JldHVybiBNVCh0aGlzLnN1YnNjcmlwdGlvbnMsdCksKCk9PnN5KHRoaXMuc3Vic2NyaXB0aW9ucyx0KX1ub3RpZnkodCxuLHIpe2NvbnN0IGk9dGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aDtpZihpKWlmKGk9PT0xKXRoaXMuc3Vic2NyaXB0aW9uc1swXSh0LG4scik7ZWxzZSBmb3IobGV0IG89MDtvPGk7bysrKXtjb25zdCBzPXRoaXMuc3Vic2NyaXB0aW9uc1tvXTtzJiZzKHQsbixyKX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RofWNsZWFyKCl7dGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aD0wfX1jb25zdCBTcj1lPT5lKjFlMyxxcj1lPT5lLzFlMyxEVT0oZSx0KT0+dD9lKigxZTMvdCk6MCxMVT0oZSx0LG4pPT4oKCgxLTMqbiszKnQpKmUrKDMqbi02KnQpKSplKzMqdCkqZSxRaGU9MWUtNyxKaGU9MTI7ZnVuY3Rpb24gZXBlKGUsdCxuLHIsaSl7bGV0IG8scyx1PTA7ZG8gcz10KyhuLXQpLzIsbz1MVShzLHIsaSktZSxvPjA/bj1zOnQ9czt3aGlsZShNYXRoLmFicyhvKT5RaGUmJisrdTxKaGUpO3JldHVybiBzfWZ1bmN0aW9uIElkKGUsdCxuLHIpe2lmKGU9PT10JiZuPT09cilyZXR1cm4gVXI7Y29uc3QgaT1vPT5lcGUobywwLDEsZSxuKTtyZXR1cm4gbz0+bz09PTB8fG89PT0xP286TFUoaShvKSx0LHIpfWNvbnN0IElVPWU9PnQ9PnQ8PS41P2UoMip0KS8yOigyLWUoMiooMS10KSkpLzIsJFU9ZT0+dD0+MS1lKDEtdCksQlU9SWQoLjMzLDEuNTMsLjY5LC45OSksa1Q9JFUoQlUpLFZVPUlVKGtUKSxxVT1lPT5lPj0xPzE6KGUqPTIpPDE/LjUqa1QoZSk6LjUqKDItTWF0aC5wb3coMiwtMTAqKGUtMSkpKSxEVD1lPT4xLU1hdGguc2luKE1hdGguYWNvcyhlKSksVVU9JFUoRFQpLHpVPUlVKERUKSx0cGU9SWQoLjQyLDAsMSwxKSxucGU9SWQoMCwwLC41OCwxKSxGVT1JZCguNDIsMCwuNTgsMSkscnBlPWU9PkFycmF5LmlzQXJyYXkoZSkmJnR5cGVvZiBlWzBdIT0ibnVtYmVyIixIVT1lPT5BcnJheS5pc0FycmF5KGUpJiZ0eXBlb2YgZVswXT09Im51bWJlciIsaXBlPXtsaW5lYXI6VXIsZWFzZUluOnRwZSxlYXNlSW5PdXQ6RlUsZWFzZU91dDpucGUsY2lyY0luOkRULGNpcmNJbk91dDp6VSxjaXJjT3V0OlVVLGJhY2tJbjprVCxiYWNrSW5PdXQ6VlUsYmFja091dDpCVSxhbnRpY2lwYXRlOnFVfSxhcGU9ZT0+dHlwZW9mIGU9PSJzdHJpbmciLHAkPWU9PntpZihIVShlKSl7UlQoZS5sZW5ndGg9PT00KTtjb25zdFt0LG4scixpXT1lO3JldHVybiBJZCh0LG4scixpKX1lbHNlIGlmKGFwZShlKSlyZXR1cm4gaXBlW2VdO3JldHVybiBlfSx3cD1bInNldHVwIiwicmVhZCIsInJlc29sdmVLZXlmcmFtZXMiLCJwcmVVcGRhdGUiLCJ1cGRhdGUiLCJwcmVSZW5kZXIiLCJyZW5kZXIiLCJwb3N0UmVuZGVyIl07ZnVuY3Rpb24gb3BlKGUpe2xldCB0PW5ldyBTZXQsbj1uZXcgU2V0LHI9ITEsaT0hMTtjb25zdCBvPW5ldyBXZWFrU2V0O2xldCBzPXtkZWx0YTowLHRpbWVzdGFtcDowLGlzUHJvY2Vzc2luZzohMX07ZnVuY3Rpb24gdShkKXtvLmhhcyhkKSYmKGYuc2NoZWR1bGUoZCksZSgpKSxkKHMpfWNvbnN0IGY9e3NjaGVkdWxlOihkLHA9ITEsbT0hMSk9Pntjb25zdCB4PW0mJnI/dDpuO3JldHVybiBwJiZvLmFkZChkKSx4LmFkZChkKSxkfSxjYW5jZWw6ZD0+e24uZGVsZXRlKGQpLG8uZGVsZXRlKGQpfSxwcm9jZXNzOmQ9PntpZihzPWQscil7aT0hMDtyZXR1cm59cj0hMDtjb25zdCBwPXQ7dD1uLG49cCx0LmZvckVhY2godSksdC5jbGVhcigpLHI9ITEsaSYmKGk9ITEsZi5wcm9jZXNzKGQpKX19O3JldHVybiBmfWNvbnN0IHNwZT00MDtmdW5jdGlvbiBHVShlLHQpe2xldCBuPSExLHI9ITA7Y29uc3QgaT17ZGVsdGE6MCx0aW1lc3RhbXA6MCxpc1Byb2Nlc3Npbmc6ITF9LG89KCk9Pm49ITAscz13cC5yZWR1Y2UoKEUsaik9PihFW2pdPW9wZShvKSxFKSx7fSkse3NldHVwOnUscmVhZDpmLHJlc29sdmVLZXlmcmFtZXM6ZCxwcmVVcGRhdGU6cCx1cGRhdGU6bSxwcmVSZW5kZXI6eSxyZW5kZXI6eCxwb3N0UmVuZGVyOnd9PXMsYj0oKT0+e2NvbnN0IEU9dW8udXNlTWFudWFsVGltaW5nLGo9RT9pLnRpbWVzdGFtcDpwZXJmb3JtYW5jZS5ub3coKTtuPSExLEV8fChpLmRlbHRhPXI/MWUzLzYwOk1hdGgubWF4KE1hdGgubWluKGotaS50aW1lc3RhbXAsc3BlKSwxKSksaS50aW1lc3RhbXA9aixpLmlzUHJvY2Vzc2luZz0hMCx1LnByb2Nlc3MoaSksZi5wcm9jZXNzKGkpLGQucHJvY2VzcyhpKSxwLnByb2Nlc3MoaSksbS5wcm9jZXNzKGkpLHkucHJvY2VzcyhpKSx4LnByb2Nlc3MoaSksdy5wcm9jZXNzKGkpLGkuaXNQcm9jZXNzaW5nPSExLG4mJnQmJihyPSExLGUoYikpfSxnPSgpPT57bj0hMCxyPSEwLGkuaXNQcm9jZXNzaW5nfHxlKGIpfTtyZXR1cm57c2NoZWR1bGU6d3AucmVkdWNlKChFLGopPT57Y29uc3QgVD1zW2pdO3JldHVybiBFW2pdPShQLE49ITEsUj0hMSk9PihufHxnKCksVC5zY2hlZHVsZShQLE4sUikpLEV9LHt9KSxjYW5jZWw6RT0+e2ZvcihsZXQgaj0wO2o8d3AubGVuZ3RoO2orKylzW3dwW2pdXS5jYW5jZWwoRSl9LHN0YXRlOmksc3RlcHM6c319Y29uc3R7c2NoZWR1bGU6TXQsY2FuY2VsOmNvLHN0YXRlOlJuLHN0ZXBzOnNTfT1HVSh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPCJ1Ij9yZXF1ZXN0QW5pbWF0aW9uRnJhbWU6VXIsITApO2xldCBWcDtmdW5jdGlvbiBscGUoKXtWcD12b2lkIDB9Y29uc3QgV249e25vdzooKT0+KFZwPT09dm9pZCAwJiZXbi5zZXQoUm4uaXNQcm9jZXNzaW5nfHx1by51c2VNYW51YWxUaW1pbmc/Um4udGltZXN0YW1wOnBlcmZvcm1hbmNlLm5vdygpKSxWcCksc2V0OmU9PntWcD1lLHF1ZXVlTWljcm90YXNrKGxwZSl9fSxLVT1lPT50PT50eXBlb2YgdD09InN0cmluZyImJnQuc3RhcnRzV2l0aChlKSxXVT1LVSgiLS0iKSx1cGU9S1UoInZhcigtLSIpLExUPWU9PnVwZShlKT9jcGUudGVzdChlLnNwbGl0KCIvKiIpWzBdLnRyaW0oKSk6ITEsY3BlPS92YXJcKC0tKD86W1x3LV0rXHMqfFtcdy1dK1xzKiwoPzpccypbXikoXHNdfFxzKlwoKD86W14pKF18XChbXikoXSpcKSkqXCkpK1xzKilcKSQvaXU7ZnVuY3Rpb24gbSQoZSl7cmV0dXJuIHR5cGVvZiBlIT0ic3RyaW5nIj8hMTplLnNwbGl0KCIvKiIpWzBdLmluY2x1ZGVzKCJ2YXIoLS0iKX1jb25zdCBGdT17dGVzdDplPT50eXBlb2YgZT09Im51bWJlciIscGFyc2U6cGFyc2VGbG9hdCx0cmFuc2Zvcm06ZT0+ZX0saGQ9ey4uLkZ1LHRyYW5zZm9ybTplPT5OaSgwLDEsZSl9LFNwPXsuLi5GdSxkZWZhdWx0OjF9LHdmPWU9Pk1hdGgucm91bmQoZSoxZTUpLzFlNSxJVD0vLT8oPzpcZCsoPzpcLlxkKyk/fFwuXGQrKS9ndTtmdW5jdGlvbiBmcGUoZSl7cmV0dXJuIGU9PW51bGx9Y29uc3QgZHBlPS9eKD86I1tcZGEtZl17Myw4fXwoPzpyZ2J8aHNsKWE/XCgoPzotP1tcZC5dKyU/Wyxcc10rKXsyfS0/W1xkLl0rJT9ccyooPzpbLC9dXHMqKT8oPzpcYlxkKyg/OlwuXGQrKT98XC5cZCspPyU/XCkpJC9pdSwkVD0oZSx0KT0+bj0+ISEodHlwZW9mIG49PSJzdHJpbmciJiZkcGUudGVzdChuKSYmbi5zdGFydHNXaXRoKGUpfHx0JiYhZnBlKG4pJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSksWVU9KGUsdCxuKT0+cj0+e2lmKHR5cGVvZiByIT0ic3RyaW5nIilyZXR1cm4gcjtjb25zdFtpLG8scyx1XT1yLm1hdGNoKElUKTtyZXR1cm57W2VdOnBhcnNlRmxvYXQoaSksW3RdOnBhcnNlRmxvYXQobyksW25dOnBhcnNlRmxvYXQocyksYWxwaGE6dSE9PXZvaWQgMD9wYXJzZUZsb2F0KHUpOjF9fSxocGU9ZT0+TmkoMCwyNTUsZSksbFM9ey4uLkZ1LHRyYW5zZm9ybTplPT5NYXRoLnJvdW5kKGhwZShlKSl9LHVzPXt0ZXN0OiRUKCJyZ2IiLCJyZWQiKSxwYXJzZTpZVSgicmVkIiwiZ3JlZW4iLCJibHVlIiksdHJhbnNmb3JtOih7cmVkOmUsZ3JlZW46dCxibHVlOm4sYWxwaGE6cj0xfSk9PiJyZ2JhKCIrbFMudHJhbnNmb3JtKGUpKyIsICIrbFMudHJhbnNmb3JtKHQpKyIsICIrbFMudHJhbnNmb3JtKG4pKyIsICIrd2YoaGQudHJhbnNmb3JtKHIpKSsiKSJ9O2Z1bmN0aW9uIHBwZShlKXtsZXQgdD0iIixuPSIiLHI9IiIsaT0iIjtyZXR1cm4gZS5sZW5ndGg+NT8odD1lLnN1YnN0cmluZygxLDMpLG49ZS5zdWJzdHJpbmcoMyw1KSxyPWUuc3Vic3RyaW5nKDUsNyksaT1lLnN1YnN0cmluZyg3LDkpKToodD1lLnN1YnN0cmluZygxLDIpLG49ZS5zdWJzdHJpbmcoMiwzKSxyPWUuc3Vic3RyaW5nKDMsNCksaT1lLnN1YnN0cmluZyg0LDUpLHQrPXQsbis9bixyKz1yLGkrPWkpLHtyZWQ6cGFyc2VJbnQodCwxNiksZ3JlZW46cGFyc2VJbnQobiwxNiksYmx1ZTpwYXJzZUludChyLDE2KSxhbHBoYTppP3BhcnNlSW50KGksMTYpLzI1NToxfX1jb25zdCBtXz17dGVzdDokVCgiIyIpLHBhcnNlOnBwZSx0cmFuc2Zvcm06dXMudHJhbnNmb3JtfSwkZD1lPT4oe3Rlc3Q6dD0+dHlwZW9mIHQ9PSJzdHJpbmciJiZ0LmVuZHNXaXRoKGUpJiZ0LnNwbGl0KCIgIikubGVuZ3RoPT09MSxwYXJzZTpwYXJzZUZsb2F0LHRyYW5zZm9ybTp0PT5gJHt0fSR7ZX1gfSksdGE9JGQoImRlZyIpLENpPSRkKCIlIiksTmU9JGQoInB4IiksbXBlPSRkKCJ2aCIpLHlwZT0kZCgidnciKSx5JD17Li4uQ2kscGFyc2U6ZT0+Q2kucGFyc2UoZSkvMTAwLHRyYW5zZm9ybTplPT5DaS50cmFuc2Zvcm0oZSoxMDApfSxMbD17dGVzdDokVCgiaHNsIiwiaHVlIikscGFyc2U6WVUoImh1ZSIsInNhdHVyYXRpb24iLCJsaWdodG5lc3MiKSx0cmFuc2Zvcm06KHtodWU6ZSxzYXR1cmF0aW9uOnQsbGlnaHRuZXNzOm4sYWxwaGE6cj0xfSk9PiJoc2xhKCIrTWF0aC5yb3VuZChlKSsiLCAiK0NpLnRyYW5zZm9ybSh3Zih0KSkrIiwgIitDaS50cmFuc2Zvcm0od2YobikpKyIsICIrd2YoaGQudHJhbnNmb3JtKHIpKSsiKSJ9LGFuPXt0ZXN0OmU9PnVzLnRlc3QoZSl8fG1fLnRlc3QoZSl8fExsLnRlc3QoZSkscGFyc2U6ZT0+dXMudGVzdChlKT91cy5wYXJzZShlKTpMbC50ZXN0KGUpP0xsLnBhcnNlKGUpOm1fLnBhcnNlKGUpLHRyYW5zZm9ybTplPT50eXBlb2YgZT09InN0cmluZyI/ZTplLmhhc093blByb3BlcnR5KCJyZWQiKT91cy50cmFuc2Zvcm0oZSk6TGwudHJhbnNmb3JtKGUpLGdldEFuaW1hdGFibGVOb25lOmU9Pntjb25zdCB0PWFuLnBhcnNlKGUpO3JldHVybiB0LmFscGhhPTAsYW4udHJhbnNmb3JtKHQpfX0sdnBlPS8oPzojW1xkYS1mXXszLDh9fCg/OnJnYnxoc2wpYT9cKCg/Oi0/W1xkLl0rJT9bLFxzXSspezJ9LT9bXGQuXSslP1xzKig/OlssL11ccyopPyg/OlxiXGQrKD86XC5cZCspP3xcLlxkKyk/JT9cKSkvZ2l1O2Z1bmN0aW9uIGdwZShlKXtyZXR1cm4gaXNOYU4oZSkmJnR5cGVvZiBlPT0ic3RyaW5nIiYmKGUubWF0Y2goSVQpPy5sZW5ndGh8fDApKyhlLm1hdGNoKHZwZSk/Lmxlbmd0aHx8MCk+MH1jb25zdCBYVT0ibnVtYmVyIixaVT0iY29sb3IiLGJwZT0idmFyIix4cGU9InZhcigiLHYkPSIke30iLHdwZT0vdmFyXHMqXChccyotLSg/Oltcdy1dK1xzKnxbXHctXStccyosKD86XHMqW14pKFxzXXxccypcKCg/OlteKShdfFwoW14pKF0qXCkpKlwpKStccyopXCl8I1tcZGEtZl17Myw4fXwoPzpyZ2J8aHNsKWE/XCgoPzotP1tcZC5dKyU/Wyxcc10rKXsyfS0/W1xkLl0rJT9ccyooPzpbLC9dXHMqKT8oPzpcYlxkKyg/OlwuXGQrKT98XC5cZCspPyU/XCl8LT8oPzpcZCsoPzpcLlxkKyk/fFwuXGQrKS9naXU7ZnVuY3Rpb24gX3UoZSl7Y29uc3QgdD1lLnRvU3RyaW5nKCksbj1bXSxyPXtjb2xvcjpbXSxudW1iZXI6W10sdmFyOltdfSxpPVtdO2xldCBvPTA7Y29uc3QgdT10LnJlcGxhY2Uod3BlLGY9Pihhbi50ZXN0KGYpPyhyLmNvbG9yLnB1c2gobyksaS5wdXNoKFpVKSxuLnB1c2goYW4ucGFyc2UoZikpKTpmLnN0YXJ0c1dpdGgoeHBlKT8oci52YXIucHVzaChvKSxpLnB1c2goYnBlKSxuLnB1c2goZikpOihyLm51bWJlci5wdXNoKG8pLGkucHVzaChYVSksbi5wdXNoKHBhcnNlRmxvYXQoZikpKSwrK28sdiQpKS5zcGxpdCh2JCk7cmV0dXJue3ZhbHVlczpuLHNwbGl0OnUsaW5kZXhlczpyLHR5cGVzOml9fWZ1bmN0aW9uIFNwZShlKXtyZXR1cm4gX3UoZSkudmFsdWVzfWZ1bmN0aW9uIFFVKHtzcGxpdDplLHR5cGVzOnR9KXtjb25zdCBuPWUubGVuZ3RoO3JldHVybiByPT57bGV0IGk9IiI7Zm9yKGxldCBvPTA7bzxuO28rKylpZihpKz1lW29dLHJbb10hPT12b2lkIDApe2NvbnN0IHM9dFtvXTtzPT09WFU/aSs9d2YocltvXSk6cz09PVpVP2krPWFuLnRyYW5zZm9ybShyW29dKTppKz1yW29dfXJldHVybiBpfX1mdW5jdGlvbiBBcGUoZSl7cmV0dXJuIFFVKF91KGUpKX1jb25zdCBfcGU9ZT0+dHlwZW9mIGU9PSJudW1iZXIiPzA6YW4udGVzdChlKT9hbi5nZXRBbmltYXRhYmxlTm9uZShlKTplLE9wZT0oZSx0KT0+dHlwZW9mIGU9PSJudW1iZXIiP3Q/LnRyaW0oKS5lbmRzV2l0aCgiLyIpP2U6MDpfcGUoZSk7ZnVuY3Rpb24gVHBlKGUpe2NvbnN0IHQ9X3UoZSk7cmV0dXJuIFFVKHQpKHQudmFsdWVzLm1hcCgocixpKT0+T3BlKHIsdC5zcGxpdFtpXSkpKX1jb25zdCBzaT17dGVzdDpncGUscGFyc2U6U3BlLGNyZWF0ZVRyYW5zZm9ybWVyOkFwZSxnZXRBbmltYXRhYmxlTm9uZTpUcGV9O2Z1bmN0aW9uIHVTKGUsdCxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/ZSsodC1lKSo2Km46bjwxLzI/dDpuPDIvMz9lKyh0LWUpKigyLzMtbikqNjplfWZ1bmN0aW9uIEVwZSh7aHVlOmUsc2F0dXJhdGlvbjp0LGxpZ2h0bmVzczpuLGFscGhhOnJ9KXtlLz0zNjAsdC89MTAwLG4vPTEwMDtsZXQgaT0wLG89MCxzPTA7aWYoIXQpaT1vPXM9bjtlbHNle2NvbnN0IHU9bjwuNT9uKigxK3QpOm4rdC1uKnQsZj0yKm4tdTtpPXVTKGYsdSxlKzEvMyksbz11UyhmLHUsZSkscz11UyhmLHUsZS0xLzMpfXJldHVybntyZWQ6TWF0aC5yb3VuZChpKjI1NSksZ3JlZW46TWF0aC5yb3VuZChvKjI1NSksYmx1ZTpNYXRoLnJvdW5kKHMqMjU1KSxhbHBoYTpyfX1mdW5jdGlvbiBseShlLHQpe3JldHVybiBuPT5uPjA/dDplfWNvbnN0IGp0PShlLHQsbik9PmUrKHQtZSkqbixjUz0oZSx0LG4pPT57Y29uc3Qgcj1lKmUsaT1uKih0KnQtcikrcjtyZXR1cm4gaTwwPzA6TWF0aC5zcXJ0KGkpfSxDcGU9W21fLHVzLExsXSxqcGU9ZT0+Q3BlLmZpbmQodD0+dC50ZXN0KGUpKTtmdW5jdGlvbiBnJChlKXtjb25zdCB0PWpwZShlKTtpZighdClyZXR1cm4hMTtsZXQgbj10LnBhcnNlKGUpO3JldHVybiB0PT09TGwmJihuPUVwZShuKSksbn1jb25zdCBiJD0oZSx0KT0+e2NvbnN0IG49ZyQoZSkscj1nJCh0KTtpZighbnx8IXIpcmV0dXJuIGx5KGUsdCk7Y29uc3QgaT17Li4ubn07cmV0dXJuIG89PihpLnJlZD1jUyhuLnJlZCxyLnJlZCxvKSxpLmdyZWVuPWNTKG4uZ3JlZW4sci5ncmVlbixvKSxpLmJsdWU9Y1Mobi5ibHVlLHIuYmx1ZSxvKSxpLmFscGhhPWp0KG4uYWxwaGEsci5hbHBoYSxvKSx1cy50cmFuc2Zvcm0oaSkpfSx5Xz1uZXcgU2V0KFsibm9uZSIsImhpZGRlbiJdKTtmdW5jdGlvbiBQcGUoZSx0KXtyZXR1cm4geV8uaGFzKGUpP249Pm48PTA/ZTp0Om49Pm4+PTE/dDplfWZ1bmN0aW9uIE1wZShlLHQpe3JldHVybiBuPT5qdChlLHQsbil9ZnVuY3Rpb24gQlQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIj9NcGU6dHlwZW9mIGU9PSJzdHJpbmciP0xUKGUpP2x5OmFuLnRlc3QoZSk/YiQ6a3BlOkFycmF5LmlzQXJyYXkoZSk/SlU6dHlwZW9mIGU9PSJvYmplY3QiP2FuLnRlc3QoZSk/YiQ6UnBlOmx5fWZ1bmN0aW9uIEpVKGUsdCl7Y29uc3Qgbj1bLi4uZV0scj1uLmxlbmd0aCxpPWUubWFwKChvLHMpPT5CVChvKShvLHRbc10pKTtyZXR1cm4gbz0+e2ZvcihsZXQgcz0wO3M8cjtzKyspbltzXT1pW3NdKG8pO3JldHVybiBufX1mdW5jdGlvbiBScGUoZSx0KXtjb25zdCBuPXsuLi5lLC4uLnR9LHI9e307Zm9yKGNvbnN0IGkgaW4gbillW2ldIT09dm9pZCAwJiZ0W2ldIT09dm9pZCAwJiYocltpXT1CVChlW2ldKShlW2ldLHRbaV0pKTtyZXR1cm4gaT0+e2Zvcihjb25zdCBvIGluIHIpbltvXT1yW29dKGkpO3JldHVybiBufX1mdW5jdGlvbiBOcGUoZSx0KXtjb25zdCBuPVtdLHI9e2NvbG9yOjAsdmFyOjAsbnVtYmVyOjB9O2ZvcihsZXQgaT0wO2k8dC52YWx1ZXMubGVuZ3RoO2krKyl7Y29uc3Qgbz10LnR5cGVzW2ldLHM9ZS5pbmRleGVzW29dW3Jbb11dLHU9ZS52YWx1ZXNbc10/PzA7bltpXT11LHJbb10rK31yZXR1cm4gbn1jb25zdCBrcGU9KGUsdCk9Pntjb25zdCBuPXNpLmNyZWF0ZVRyYW5zZm9ybWVyKHQpLHI9X3UoZSksaT1fdSh0KTtyZXR1cm4gci5pbmRleGVzLnZhci5sZW5ndGg9PT1pLmluZGV4ZXMudmFyLmxlbmd0aCYmci5pbmRleGVzLmNvbG9yLmxlbmd0aD09PWkuaW5kZXhlcy5jb2xvci5sZW5ndGgmJnIuaW5kZXhlcy5udW1iZXIubGVuZ3RoPj1pLmluZGV4ZXMubnVtYmVyLmxlbmd0aD95Xy5oYXMoZSkmJiFpLnZhbHVlcy5sZW5ndGh8fHlfLmhhcyh0KSYmIXIudmFsdWVzLmxlbmd0aD9QcGUoZSx0KTpMZChKVShOcGUocixpKSxpLnZhbHVlcyksbik6bHkoZSx0KX07ZnVuY3Rpb24gZXooZSx0LG4pe3JldHVybiB0eXBlb2YgZT09Im51bWJlciImJnR5cGVvZiB0PT0ibnVtYmVyIiYmdHlwZW9mIG49PSJudW1iZXIiP2p0KGUsdCxuKTpCVChlKShlLHQpfWNvbnN0IERwZT1lPT57Y29uc3QgdD0oe3RpbWVzdGFtcDpufSk9PmUobik7cmV0dXJue3N0YXJ0OihuPSEwKT0+TXQudXBkYXRlKHQsbiksc3RvcDooKT0+Y28odCksbm93OigpPT5Sbi5pc1Byb2Nlc3Npbmc/Um4udGltZXN0YW1wOlduLm5vdygpfX0sdHo9KGUsdCxuPTEwKT0+e2xldCByPSIiO2NvbnN0IGk9TWF0aC5tYXgoTWF0aC5yb3VuZCh0L24pLDIpO2ZvcihsZXQgbz0wO288aTtvKyspcis9TWF0aC5yb3VuZChlKG8vKGktMSkpKjFlNCkvMWU0KyIsICI7cmV0dXJuYGxpbmVhcigke3Iuc3Vic3RyaW5nKDAsci5sZW5ndGgtMil9KWB9LHV5PTJlNDtmdW5jdGlvbiBWVChlKXtsZXQgdD0wO2NvbnN0IG49NTA7bGV0IHI9ZS5uZXh0KHQpO2Zvcig7IXIuZG9uZSYmdDx1eTspdCs9bixyPWUubmV4dCh0KTtyZXR1cm4gdD49dXk/MS8wOnR9ZnVuY3Rpb24gTHBlKGUsdD0xMDAsbil7Y29uc3Qgcj1uKHsuLi5lLGtleWZyYW1lczpbMCx0XX0pLGk9TWF0aC5taW4oVlQociksdXkpO3JldHVybnt0eXBlOiJrZXlmcmFtZXMiLGVhc2U6bz0+ci5uZXh0KGkqbykudmFsdWUvdCxkdXJhdGlvbjpxcihpKX19Y29uc3QgR3Q9e3N0aWZmbmVzczoxMDAsZGFtcGluZzoxMCxtYXNzOjEsdmVsb2NpdHk6MCxkdXJhdGlvbjo4MDAsYm91bmNlOi4zLHZpc3VhbER1cmF0aW9uOi4zLHJlc3RTcGVlZDp7Z3JhbnVsYXI6LjAxLGRlZmF1bHQ6Mn0scmVzdERlbHRhOntncmFudWxhcjouMDA1LGRlZmF1bHQ6LjV9LG1pbkR1cmF0aW9uOi4wMSxtYXhEdXJhdGlvbjoxMCxtaW5EYW1waW5nOi4wNSxtYXhEYW1waW5nOjF9O2Z1bmN0aW9uIHZfKGUsdCl7cmV0dXJuIGUqTWF0aC5zcXJ0KDEtdCp0KX1jb25zdCBJcGU9MTI7ZnVuY3Rpb24gJHBlKGUsdCxuKXtsZXQgcj1uO2ZvcihsZXQgaT0xO2k8SXBlO2krKylyPXItZShyKS90KHIpO3JldHVybiByfWNvbnN0IGZTPS4wMDE7ZnVuY3Rpb24gQnBlKHtkdXJhdGlvbjplPUd0LmR1cmF0aW9uLGJvdW5jZTp0PUd0LmJvdW5jZSx2ZWxvY2l0eTpuPUd0LnZlbG9jaXR5LG1hc3M6cj1HdC5tYXNzfSl7bGV0IGksbyxzPTEtdDtzPU5pKEd0Lm1pbkRhbXBpbmcsR3QubWF4RGFtcGluZyxzKSxlPU5pKEd0Lm1pbkR1cmF0aW9uLEd0Lm1heER1cmF0aW9uLHFyKGUpKSxzPDE/KGk9ZD0+e2NvbnN0IHA9ZCpzLG09cCplLHk9cC1uLHg9dl8oZCxzKSx3PU1hdGguZXhwKC1tKTtyZXR1cm4gZlMteS94Knd9LG89ZD0+e2NvbnN0IG09ZCpzKmUseT1tKm4rbix4PU1hdGgucG93KHMsMikqTWF0aC5wb3coZCwyKSplLHc9TWF0aC5leHAoLW0pLGI9dl8oTWF0aC5wb3coZCwyKSxzKTtyZXR1cm4oLWkoZCkrZlM+MD8tMToxKSooKHkteCkqdykvYn0pOihpPWQ9Pntjb25zdCBwPU1hdGguZXhwKC1kKmUpLG09KGQtbikqZSsxO3JldHVybi1mUytwKm19LG89ZD0+e2NvbnN0IHA9TWF0aC5leHAoLWQqZSksbT0obi1kKSooZSplKTtyZXR1cm4gcCptfSk7Y29uc3QgdT01L2UsZj0kcGUoaSxvLHUpO2lmKGU9U3IoZSksaXNOYU4oZikpcmV0dXJue3N0aWZmbmVzczpHdC5zdGlmZm5lc3MsZGFtcGluZzpHdC5kYW1waW5nLGR1cmF0aW9uOmV9O3tjb25zdCBkPU1hdGgucG93KGYsMikqcjtyZXR1cm57c3RpZmZuZXNzOmQsZGFtcGluZzpzKjIqTWF0aC5zcXJ0KHIqZCksZHVyYXRpb246ZX19fWNvbnN0IFZwZT1bImR1cmF0aW9uIiwiYm91bmNlIl0scXBlPVsic3RpZmZuZXNzIiwiZGFtcGluZyIsIm1hc3MiXTtmdW5jdGlvbiB4JChlLHQpe3JldHVybiB0LnNvbWUobj0+ZVtuXSE9PXZvaWQgMCl9ZnVuY3Rpb24gVXBlKGUpe2xldCB0PXt2ZWxvY2l0eTpHdC52ZWxvY2l0eSxzdGlmZm5lc3M6R3Quc3RpZmZuZXNzLGRhbXBpbmc6R3QuZGFtcGluZyxtYXNzOkd0Lm1hc3MsaXNSZXNvbHZlZEZyb21EdXJhdGlvbjohMSwuLi5lfTtpZigheCQoZSxxcGUpJiZ4JChlLFZwZSkpaWYodC52ZWxvY2l0eT0wLGUudmlzdWFsRHVyYXRpb24pe2NvbnN0IG49ZS52aXN1YWxEdXJhdGlvbixyPTIqTWF0aC5QSS8obioxLjIpLGk9cipyLG89MipOaSguMDUsMSwxLShlLmJvdW5jZXx8MCkpKk1hdGguc3FydChpKTt0PXsuLi50LG1hc3M6R3QubWFzcyxzdGlmZm5lc3M6aSxkYW1waW5nOm99fWVsc2V7Y29uc3Qgbj1CcGUoey4uLmUsdmVsb2NpdHk6MH0pO3Q9ey4uLnQsLi4ubixtYXNzOkd0Lm1hc3N9LHQuaXNSZXNvbHZlZEZyb21EdXJhdGlvbj0hMH1yZXR1cm4gdH1mdW5jdGlvbiBjeShlPUd0LnZpc3VhbER1cmF0aW9uLHQ9R3QuYm91bmNlKXtjb25zdCBuPXR5cGVvZiBlIT0ib2JqZWN0Ij97dmlzdWFsRHVyYXRpb246ZSxrZXlmcmFtZXM6WzAsMV0sYm91bmNlOnR9OmU7bGV0e3Jlc3RTcGVlZDpyLHJlc3REZWx0YTppfT1uO2NvbnN0IG89bi5rZXlmcmFtZXNbMF0scz1uLmtleWZyYW1lc1tuLmtleWZyYW1lcy5sZW5ndGgtMV0sdT17ZG9uZTohMSx2YWx1ZTpvfSx7c3RpZmZuZXNzOmYsZGFtcGluZzpkLG1hc3M6cCxkdXJhdGlvbjptLHZlbG9jaXR5OnksaXNSZXNvbHZlZEZyb21EdXJhdGlvbjp4fT1VcGUoey4uLm4sdmVsb2NpdHk6LXFyKG4udmVsb2NpdHl8fDApfSksdz15fHwwLGI9ZC8oMipNYXRoLnNxcnQoZipwKSksZz1zLW8sXz1xcihNYXRoLnNxcnQoZi9wKSksTz1NYXRoLmFicyhnKTw1O3J8fChyPU8/R3QucmVzdFNwZWVkLmdyYW51bGFyOkd0LnJlc3RTcGVlZC5kZWZhdWx0KSxpfHwoaT1PP0d0LnJlc3REZWx0YS5ncmFudWxhcjpHdC5yZXN0RGVsdGEuZGVmYXVsdCk7bGV0IEUsaixULFAsTixSO2lmKGI8MSlUPXZfKF8sYiksUD0odytiKl8qZykvVCxFPVY9Pntjb25zdCBCPU1hdGguZXhwKC1iKl8qVik7cmV0dXJuIHMtQiooUCpNYXRoLnNpbihUKlYpK2cqTWF0aC5jb3MoVCpWKSl9LE49YipfKlArZypULFI9YipfKmctUCpULGo9Vj0+TWF0aC5leHAoLWIqXypWKSooTipNYXRoLnNpbihUKlYpK1IqTWF0aC5jb3MoVCpWKSk7ZWxzZSBpZihiPT09MSl7RT1CPT5zLU1hdGguZXhwKC1fKkIpKihnKyh3K18qZykqQik7Y29uc3QgVj13K18qZztqPUI9Pk1hdGguZXhwKC1fKkIpKihfKlYqQi13KX1lbHNle2NvbnN0IFY9XypNYXRoLnNxcnQoYipiLTEpO0U9VT0+e2NvbnN0IEs9TWF0aC5leHAoLWIqXypVKSxMPU1hdGgubWluKFYqVSwzMDApO3JldHVybiBzLUsqKCh3K2IqXypnKSpNYXRoLnNpbmgoTCkrVipnKk1hdGguY29zaChMKSkvVn07Y29uc3QgQj0odytiKl8qZykvViwkPWIqXypCLWcqVix6PWIqXypnLUIqVjtqPVU9Pntjb25zdCBLPU1hdGguZXhwKC1iKl8qVSksTD1NYXRoLm1pbihWKlUsMzAwKTtyZXR1cm4gSyooJCpNYXRoLnNpbmgoTCkreipNYXRoLmNvc2goTCkpfX1jb25zdCBJPXtjYWxjdWxhdGVkRHVyYXRpb246eCYmbXx8bnVsbCx2ZWxvY2l0eTpWPT5TcihqKFYpKSxuZXh0OlY9PntpZigheCYmYjwxKXtjb25zdCAkPU1hdGguZXhwKC1iKl8qViksej1NYXRoLnNpbihUKlYpLFU9TWF0aC5jb3MoVCpWKSxLPXMtJCooUCp6K2cqVSksTD1TcigkKihOKnorUipVKSk7cmV0dXJuIHUuZG9uZT1NYXRoLmFicyhMKTw9ciYmTWF0aC5hYnMocy1LKTw9aSx1LnZhbHVlPXUuZG9uZT9zOkssdX1jb25zdCBCPUUoVik7aWYoeCl1LmRvbmU9Vj49bTtlbHNle2NvbnN0ICQ9U3IoaihWKSk7dS5kb25lPU1hdGguYWJzKCQpPD1yJiZNYXRoLmFicyhzLUIpPD1pfXJldHVybiB1LnZhbHVlPXUuZG9uZT9zOkIsdX0sdG9TdHJpbmc6KCk9Pntjb25zdCBWPU1hdGgubWluKFZUKEkpLHV5KSxCPXR6KCQ9PkkubmV4dChWKiQpLnZhbHVlLFYsMzApO3JldHVybiBWKyJtcyAiK0J9LHRvVHJhbnNpdGlvbjooKT0+e319O3JldHVybiBJfWN5LmFwcGx5VG9PcHRpb25zPWU9Pntjb25zdCB0PUxwZShlLDEwMCxjeSk7cmV0dXJuIGUuZWFzZT10LmVhc2UsZS5kdXJhdGlvbj1Tcih0LmR1cmF0aW9uKSxlLnR5cGU9ImtleWZyYW1lcyIsZX07Y29uc3QgenBlPTU7ZnVuY3Rpb24gbnooZSx0LG4pe2NvbnN0IHI9TWF0aC5tYXgodC16cGUsMCk7cmV0dXJuIERVKG4tZShyKSx0LXIpfWZ1bmN0aW9uIGdfKHtrZXlmcmFtZXM6ZSx2ZWxvY2l0eTp0PTAscG93ZXI6bj0uOCx0aW1lQ29uc3RhbnQ6cj0zMjUsYm91bmNlRGFtcGluZzppPTEwLGJvdW5jZVN0aWZmbmVzczpvPTUwMCxtb2RpZnlUYXJnZXQ6cyxtaW46dSxtYXg6ZixyZXN0RGVsdGE6ZD0uNSxyZXN0U3BlZWQ6cH0pe2NvbnN0IG09ZVswXSx5PXtkb25lOiExLHZhbHVlOm19LHg9Uj0+dSE9PXZvaWQgMCYmUjx1fHxmIT09dm9pZCAwJiZSPmYsdz1SPT51PT09dm9pZCAwP2Y6Zj09PXZvaWQgMHx8TWF0aC5hYnModS1SKTxNYXRoLmFicyhmLVIpP3U6ZjtsZXQgYj1uKnQ7Y29uc3QgZz1tK2IsXz1zPT09dm9pZCAwP2c6cyhnKTtfIT09ZyYmKGI9Xy1tKTtjb25zdCBPPVI9Pi1iKk1hdGguZXhwKC1SL3IpLEU9Uj0+XytPKFIpLGo9Uj0+e2NvbnN0IEk9TyhSKSxWPUUoUik7eS5kb25lPU1hdGguYWJzKEkpPD1kLHkudmFsdWU9eS5kb25lP186Vn07bGV0IFQsUDtjb25zdCBOPVI9Pnt4KHkudmFsdWUpJiYoVD1SLFA9Y3koe2tleWZyYW1lczpbeS52YWx1ZSx3KHkudmFsdWUpXSx2ZWxvY2l0eTpueihFLFIseS52YWx1ZSksZGFtcGluZzppLHN0aWZmbmVzczpvLHJlc3REZWx0YTpkLHJlc3RTcGVlZDpwfSkpfTtyZXR1cm4gTigwKSx7Y2FsY3VsYXRlZER1cmF0aW9uOm51bGwsbmV4dDpSPT57bGV0IEk9ITE7cmV0dXJuIVAmJlQ9PT12b2lkIDAmJihJPSEwLGooUiksTihSKSksVCE9PXZvaWQgMCYmUj49VD9QLm5leHQoUi1UKTooIUkmJmooUikseSl9fX1mdW5jdGlvbiBGcGUoZSx0LG4pe2NvbnN0IHI9W10saT1ufHx1by5taXh8fGV6LG89ZS5sZW5ndGgtMTtmb3IobGV0IHM9MDtzPG87cysrKXtsZXQgdT1pKGVbc10sZVtzKzFdKTtpZih0KXtjb25zdCBmPUFycmF5LmlzQXJyYXkodCk/dFtzXXx8VXI6dDt1PUxkKGYsdSl9ci5wdXNoKHUpfXJldHVybiByfWZ1bmN0aW9uIEhwZShlLHQse2NsYW1wOm49ITAsZWFzZTpyLG1peGVyOml9PXt9KXtjb25zdCBvPWUubGVuZ3RoO2lmKFJUKG89PT10Lmxlbmd0aCksbz09PTEpcmV0dXJuKCk9PnRbMF07aWYobz09PTImJnRbMF09PT10WzFdKXJldHVybigpPT50WzFdO2NvbnN0IHM9ZVswXT09PWVbMV07ZVswXT5lW28tMV0mJihlPVsuLi5lXS5yZXZlcnNlKCksdD1bLi4udF0ucmV2ZXJzZSgpKTtjb25zdCB1PUZwZSh0LHIsaSksZj11Lmxlbmd0aCxkPXA9PntpZihzJiZwPGVbMF0pcmV0dXJuIHRbMF07bGV0IG09MDtpZihmPjEpZm9yKDttPGUubGVuZ3RoLTImJiEocDxlW20rMV0pO20rKyk7Y29uc3QgeT1kZChlW21dLGVbbSsxXSxwKTtyZXR1cm4gdVttXSh5KX07cmV0dXJuIG4/cD0+ZChOaShlWzBdLGVbby0xXSxwKSk6ZH1mdW5jdGlvbiBHcGUoZSx0KXtjb25zdCBuPWVbZS5sZW5ndGgtMV07Zm9yKGxldCByPTE7cjw9dDtyKyspe2NvbnN0IGk9ZGQoMCx0LHIpO2UucHVzaChqdChuLDEsaSkpfX1mdW5jdGlvbiBLcGUoZSl7Y29uc3QgdD1bMF07cmV0dXJuIEdwZSh0LGUubGVuZ3RoLTEpLHR9ZnVuY3Rpb24gV3BlKGUsdCl7cmV0dXJuIGUubWFwKG49Pm4qdCl9ZnVuY3Rpb24gWXBlKGUsdCl7cmV0dXJuIGUubWFwKCgpPT50fHxGVSkuc3BsaWNlKDAsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gU2Yoe2R1cmF0aW9uOmU9MzAwLGtleWZyYW1lczp0LHRpbWVzOm4sZWFzZTpyPSJlYXNlSW5PdXQifSl7Y29uc3QgaT1ycGUocik/ci5tYXAocCQpOnAkKHIpLG89e2RvbmU6ITEsdmFsdWU6dFswXX0scz1XcGUobiYmbi5sZW5ndGg9PT10Lmxlbmd0aD9uOktwZSh0KSxlKSx1PUhwZShzLHQse2Vhc2U6QXJyYXkuaXNBcnJheShpKT9pOllwZSh0LGkpfSk7cmV0dXJue2NhbGN1bGF0ZWREdXJhdGlvbjplLG5leHQ6Zj0+KG8udmFsdWU9dShmKSxvLmRvbmU9Zj49ZSxvKX19Y29uc3QgWHBlPWU9PmUhPT1udWxsO2Z1bmN0aW9uIFN2KGUse3JlcGVhdDp0LHJlcGVhdFR5cGU6bj0ibG9vcCJ9LHIsaT0xKXtjb25zdCBvPWUuZmlsdGVyKFhwZSksdT1pPDB8fHQmJm4hPT0ibG9vcCImJnQlMj09PTE/MDpvLmxlbmd0aC0xO3JldHVybiF1fHxyPT09dm9pZCAwP29bdV06cn1jb25zdCBacGU9e2RlY2F5OmdfLGluZXJ0aWE6Z18sdHdlZW46U2Ysa2V5ZnJhbWVzOlNmLHNwcmluZzpjeX07ZnVuY3Rpb24gcnooZSl7dHlwZW9mIGUudHlwZT09InN0cmluZyImJihlLnR5cGU9WnBlW2UudHlwZV0pfWNsYXNzIHFUe2NvbnN0cnVjdG9yKCl7dGhpcy51cGRhdGVGaW5pc2hlZCgpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9maW5pc2hlZH11cGRhdGVGaW5pc2hlZCgpe3RoaXMuX2ZpbmlzaGVkPW5ldyBQcm9taXNlKHQ9Pnt0aGlzLnJlc29sdmU9dH0pfW5vdGlmeUZpbmlzaGVkKCl7dGhpcy5yZXNvbHZlKCl9dGhlbih0LG4pe3JldHVybiB0aGlzLmZpbmlzaGVkLnRoZW4odCxuKX19Y29uc3QgUXBlPWU9PmUvMTAwO2NsYXNzIGZ5IGV4dGVuZHMgcVR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnN0YXRlPSJpZGxlIix0aGlzLnN0YXJ0VGltZT1udWxsLHRoaXMuaXNTdG9wcGVkPSExLHRoaXMuY3VycmVudFRpbWU9MCx0aGlzLmhvbGRUaW1lPW51bGwsdGhpcy5wbGF5YmFja1NwZWVkPTEsdGhpcy5kZWxheVN0YXRlPXtkb25lOiExLHZhbHVlOnZvaWQgMH0sdGhpcy5zdG9wPSgpPT57Y29uc3R7bW90aW9uVmFsdWU6bn09dGhpcy5vcHRpb25zO24mJm4udXBkYXRlZEF0IT09V24ubm93KCkmJnRoaXMudGljayhXbi5ub3coKSksdGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5zdGF0ZSE9PSJpZGxlIiYmKHRoaXMudGVhcmRvd24oKSx0aGlzLm9wdGlvbnMub25TdG9wPy4oKSl9LHRoaXMub3B0aW9ucz10LHRoaXMuaW5pdEFuaW1hdGlvbigpLHRoaXMucGxheSgpLHQuYXV0b3BsYXk9PT0hMSYmdGhpcy5wYXVzZSgpfWluaXRBbmltYXRpb24oKXtjb25zdHtvcHRpb25zOnR9PXRoaXM7cnoodCk7Y29uc3R7dHlwZTpuPVNmLHJlcGVhdDpyPTAscmVwZWF0RGVsYXk6aT0wLHJlcGVhdFR5cGU6byx2ZWxvY2l0eTpzPTB9PXQ7bGV0e2tleWZyYW1lczp1fT10O2NvbnN0IGY9bnx8U2Y7ZiE9PVNmJiZ0eXBlb2YgdVswXSE9Im51bWJlciImJih0aGlzLm1peEtleWZyYW1lcz1MZChRcGUsZXoodVswXSx1WzFdKSksdT1bMCwxMDBdKTtjb25zdCBkPWYoey4uLnQsa2V5ZnJhbWVzOnV9KTtvPT09Im1pcnJvciImJih0aGlzLm1pcnJvcmVkR2VuZXJhdG9yPWYoey4uLnQsa2V5ZnJhbWVzOlsuLi51XS5yZXZlcnNlKCksdmVsb2NpdHk6LXN9KSksZC5jYWxjdWxhdGVkRHVyYXRpb249PT1udWxsJiYoZC5jYWxjdWxhdGVkRHVyYXRpb249VlQoZCkpO2NvbnN0e2NhbGN1bGF0ZWREdXJhdGlvbjpwfT1kO3RoaXMuY2FsY3VsYXRlZER1cmF0aW9uPXAsdGhpcy5yZXNvbHZlZER1cmF0aW9uPXAraSx0aGlzLnRvdGFsRHVyYXRpb249dGhpcy5yZXNvbHZlZER1cmF0aW9uKihyKzEpLWksdGhpcy5nZW5lcmF0b3I9ZH11cGRhdGVUaW1lKHQpe2NvbnN0IG49TWF0aC5yb3VuZCh0LXRoaXMuc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrU3BlZWQ7dGhpcy5ob2xkVGltZSE9PW51bGw/dGhpcy5jdXJyZW50VGltZT10aGlzLmhvbGRUaW1lOnRoaXMuY3VycmVudFRpbWU9bn10aWNrKHQsbj0hMSl7Y29uc3R7Z2VuZXJhdG9yOnIsdG90YWxEdXJhdGlvbjppLG1peEtleWZyYW1lczpvLG1pcnJvcmVkR2VuZXJhdG9yOnMscmVzb2x2ZWREdXJhdGlvbjp1LGNhbGN1bGF0ZWREdXJhdGlvbjpmfT10aGlzO2lmKHRoaXMuc3RhcnRUaW1lPT09bnVsbClyZXR1cm4gci5uZXh0KDApO2NvbnN0e2RlbGF5OmQ9MCxrZXlmcmFtZXM6cCxyZXBlYXQ6bSxyZXBlYXRUeXBlOnkscmVwZWF0RGVsYXk6eCx0eXBlOncsb25VcGRhdGU6YixmaW5hbEtleWZyYW1lOmd9PXRoaXMub3B0aW9uczt0aGlzLnNwZWVkPjA/dGhpcy5zdGFydFRpbWU9TWF0aC5taW4odGhpcy5zdGFydFRpbWUsdCk6dGhpcy5zcGVlZDwwJiYodGhpcy5zdGFydFRpbWU9TWF0aC5taW4odC1pL3RoaXMuc3BlZWQsdGhpcy5zdGFydFRpbWUpKSxuP3RoaXMuY3VycmVudFRpbWU9dDp0aGlzLnVwZGF0ZVRpbWUodCk7Y29uc3QgXz10aGlzLmN1cnJlbnRUaW1lLWQqKHRoaXMucGxheWJhY2tTcGVlZD49MD8xOi0xKSxPPXRoaXMucGxheWJhY2tTcGVlZD49MD9fPDA6Xz5pO3RoaXMuY3VycmVudFRpbWU9TWF0aC5tYXgoXywwKSx0aGlzLnN0YXRlPT09ImZpbmlzaGVkIiYmdGhpcy5ob2xkVGltZT09PW51bGwmJih0aGlzLmN1cnJlbnRUaW1lPWkpO2xldCBFPXRoaXMuY3VycmVudFRpbWUsaj1yO2lmKG0pe2NvbnN0IFI9TWF0aC5taW4odGhpcy5jdXJyZW50VGltZSxpKS91O2xldCBJPU1hdGguZmxvb3IoUiksVj1SJTE7IVYmJlI+PTEmJihWPTEpLFY9PT0xJiZJLS0sST1NYXRoLm1pbihJLG0rMSksSSUyJiYoeT09PSJyZXZlcnNlIj8oVj0xLVYseCYmKFYtPXgvdSkpOnk9PT0ibWlycm9yIiYmKGo9cykpLEU9TmkoMCwxLFYpKnV9bGV0IFQ7Tz8odGhpcy5kZWxheVN0YXRlLnZhbHVlPXBbMF0sVD10aGlzLmRlbGF5U3RhdGUpOlQ9ai5uZXh0KEUpLG8mJiFPJiYoVC52YWx1ZT1vKFQudmFsdWUpKTtsZXR7ZG9uZTpQfT1UOyFPJiZmIT09bnVsbCYmKFA9dGhpcy5wbGF5YmFja1NwZWVkPj0wP3RoaXMuY3VycmVudFRpbWU+PWk6dGhpcy5jdXJyZW50VGltZTw9MCk7Y29uc3QgTj10aGlzLmhvbGRUaW1lPT09bnVsbCYmKHRoaXMuc3RhdGU9PT0iZmluaXNoZWQifHx0aGlzLnN0YXRlPT09InJ1bm5pbmciJiZQKTtyZXR1cm4gTiYmdyE9PWdfJiYoVC52YWx1ZT1TdihwLHRoaXMub3B0aW9ucyxnLHRoaXMuc3BlZWQpKSxiJiZiKFQudmFsdWUpLE4mJnRoaXMuZmluaXNoKCksVH10aGVuKHQsbil7cmV0dXJuIHRoaXMuZmluaXNoZWQudGhlbih0LG4pfWdldCBkdXJhdGlvbigpe3JldHVybiBxcih0aGlzLmNhbGN1bGF0ZWREdXJhdGlvbil9Z2V0IGl0ZXJhdGlvbkR1cmF0aW9uKCl7Y29uc3R7ZGVsYXk6dD0wfT10aGlzLm9wdGlvbnN8fHt9O3JldHVybiB0aGlzLmR1cmF0aW9uK3FyKHQpfWdldCB0aW1lKCl7cmV0dXJuIHFyKHRoaXMuY3VycmVudFRpbWUpfXNldCB0aW1lKHQpe3Q9U3IodCksdGhpcy5jdXJyZW50VGltZT10LHRoaXMuc3RhcnRUaW1lPT09bnVsbHx8dGhpcy5ob2xkVGltZSE9PW51bGx8fHRoaXMucGxheWJhY2tTcGVlZD09PTA/dGhpcy5ob2xkVGltZT10OnRoaXMuZHJpdmVyJiYodGhpcy5zdGFydFRpbWU9dGhpcy5kcml2ZXIubm93KCktdC90aGlzLnBsYXliYWNrU3BlZWQpLHRoaXMuZHJpdmVyP3RoaXMuZHJpdmVyLnN0YXJ0KCExKToodGhpcy5zdGFydFRpbWU9MCx0aGlzLnN0YXRlPSJwYXVzZWQiLHRoaXMuaG9sZFRpbWU9dCx0aGlzLnRpY2sodCkpfWdldEdlbmVyYXRvclZlbG9jaXR5KCl7Y29uc3QgdD10aGlzLmN1cnJlbnRUaW1lO2lmKHQ8PTApcmV0dXJuIHRoaXMub3B0aW9ucy52ZWxvY2l0eXx8MDtpZih0aGlzLmdlbmVyYXRvci52ZWxvY2l0eSlyZXR1cm4gdGhpcy5nZW5lcmF0b3IudmVsb2NpdHkodCk7Y29uc3Qgbj10aGlzLmdlbmVyYXRvci5uZXh0KHQpLnZhbHVlO3JldHVybiBueihyPT50aGlzLmdlbmVyYXRvci5uZXh0KHIpLnZhbHVlLHQsbil9Z2V0IHNwZWVkKCl7cmV0dXJuIHRoaXMucGxheWJhY2tTcGVlZH1zZXQgc3BlZWQodCl7Y29uc3Qgbj10aGlzLnBsYXliYWNrU3BlZWQhPT10O24mJnRoaXMuZHJpdmVyJiZ0aGlzLnVwZGF0ZVRpbWUoV24ubm93KCkpLHRoaXMucGxheWJhY2tTcGVlZD10LG4mJnRoaXMuZHJpdmVyJiYodGhpcy50aW1lPXFyKHRoaXMuY3VycmVudFRpbWUpKX1wbGF5KCl7aWYodGhpcy5pc1N0b3BwZWQpcmV0dXJuO2NvbnN0e2RyaXZlcjp0PURwZSxzdGFydFRpbWU6bn09dGhpcy5vcHRpb25zO3RoaXMuZHJpdmVyfHwodGhpcy5kcml2ZXI9dChpPT50aGlzLnRpY2soaSkpKSx0aGlzLm9wdGlvbnMub25QbGF5Py4oKTtjb25zdCByPXRoaXMuZHJpdmVyLm5vdygpO3RoaXMuc3RhdGU9PT0iZmluaXNoZWQiPyh0aGlzLnVwZGF0ZUZpbmlzaGVkKCksdGhpcy5zdGFydFRpbWU9cik6dGhpcy5ob2xkVGltZSE9PW51bGw/dGhpcy5zdGFydFRpbWU9ci10aGlzLmhvbGRUaW1lOnRoaXMuc3RhcnRUaW1lfHwodGhpcy5zdGFydFRpbWU9bj8/ciksdGhpcy5zdGF0ZT09PSJmaW5pc2hlZCImJnRoaXMuc3BlZWQ8MCYmKHRoaXMuc3RhcnRUaW1lKz10aGlzLmNhbGN1bGF0ZWREdXJhdGlvbiksdGhpcy5ob2xkVGltZT1udWxsLHRoaXMuc3RhdGU9InJ1bm5pbmciLHRoaXMuZHJpdmVyLnN0YXJ0KCl9cGF1c2UoKXt0aGlzLnN0YXRlPSJwYXVzZWQiLHRoaXMudXBkYXRlVGltZShXbi5ub3coKSksdGhpcy5ob2xkVGltZT10aGlzLmN1cnJlbnRUaW1lfWNvbXBsZXRlKCl7dGhpcy5zdGF0ZSE9PSJydW5uaW5nIiYmdGhpcy5wbGF5KCksdGhpcy5zdGF0ZT0iZmluaXNoZWQiLHRoaXMuaG9sZFRpbWU9bnVsbH1maW5pc2goKXt0aGlzLm5vdGlmeUZpbmlzaGVkKCksdGhpcy50ZWFyZG93bigpLHRoaXMuc3RhdGU9ImZpbmlzaGVkIix0aGlzLm9wdGlvbnMub25Db21wbGV0ZT8uKCl9Y2FuY2VsKCl7dGhpcy5ob2xkVGltZT1udWxsLHRoaXMuc3RhcnRUaW1lPTAsdGhpcy50aWNrKDApLHRoaXMudGVhcmRvd24oKSx0aGlzLm9wdGlvbnMub25DYW5jZWw/LigpfXRlYXJkb3duKCl7dGhpcy5zdGF0ZT0iaWRsZSIsdGhpcy5zdG9wRHJpdmVyKCksdGhpcy5zdGFydFRpbWU9dGhpcy5ob2xkVGltZT1udWxsfXN0b3BEcml2ZXIoKXt0aGlzLmRyaXZlciYmKHRoaXMuZHJpdmVyLnN0b3AoKSx0aGlzLmRyaXZlcj12b2lkIDApfXNhbXBsZSh0KXtyZXR1cm4gdGhpcy5zdGFydFRpbWU9MCx0aGlzLnRpY2sodCwhMCl9YXR0YWNoVGltZWxpbmUodCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hbGxvd0ZsYXR0ZW4mJih0aGlzLm9wdGlvbnMudHlwZT0ia2V5ZnJhbWVzIix0aGlzLm9wdGlvbnMuZWFzZT0ibGluZWFyIix0aGlzLmluaXRBbmltYXRpb24oKSksdGhpcy5kcml2ZXI/LnN0b3AoKSx0Lm9ic2VydmUodGhpcyl9fWZ1bmN0aW9uIEpwZShlKXtmb3IobGV0IHQ9MTt0PGUubGVuZ3RoO3QrKyllW3RdPz8oZVt0XT1lW3QtMV0pfWNvbnN0IGNzPWU9PmUqMTgwL01hdGguUEksYl89ZT0+e2NvbnN0IHQ9Y3MoTWF0aC5hdGFuMihlWzFdLGVbMF0pKTtyZXR1cm4geF8odCl9LGVtZT17eDo0LHk6NSx0cmFuc2xhdGVYOjQsdHJhbnNsYXRlWTo1LHNjYWxlWDowLHNjYWxlWTozLHNjYWxlOmU9PihNYXRoLmFicyhlWzBdKStNYXRoLmFicyhlWzNdKSkvMixyb3RhdGU6Yl8scm90YXRlWjpiXyxza2V3WDplPT5jcyhNYXRoLmF0YW4oZVsxXSkpLHNrZXdZOmU9PmNzKE1hdGguYXRhbihlWzJdKSksc2tldzplPT4oTWF0aC5hYnMoZVsxXSkrTWF0aC5hYnMoZVsyXSkpLzJ9LHhfPWU9PihlPWUlMzYwLGU8MCYmKGUrPTM2MCksZSksdyQ9Yl8sUyQ9ZT0+TWF0aC5zcXJ0KGVbMF0qZVswXStlWzFdKmVbMV0pLEEkPWU9Pk1hdGguc3FydChlWzRdKmVbNF0rZVs1XSplWzVdKSx0bWU9e3g6MTIseToxMyx6OjE0LHRyYW5zbGF0ZVg6MTIsdHJhbnNsYXRlWToxMyx0cmFuc2xhdGVaOjE0LHNjYWxlWDpTJCxzY2FsZVk6QSQsc2NhbGU6ZT0+KFMkKGUpK0EkKGUpKS8yLHJvdGF0ZVg6ZT0+eF8oY3MoTWF0aC5hdGFuMihlWzZdLGVbNV0pKSkscm90YXRlWTplPT54XyhjcyhNYXRoLmF0YW4yKC1lWzJdLGVbMF0pKSkscm90YXRlWjp3JCxyb3RhdGU6dyQsc2tld1g6ZT0+Y3MoTWF0aC5hdGFuKGVbNF0pKSxza2V3WTplPT5jcyhNYXRoLmF0YW4oZVsxXSkpLHNrZXc6ZT0+KE1hdGguYWJzKGVbMV0pK01hdGguYWJzKGVbNF0pKS8yfTtmdW5jdGlvbiB3XyhlKXtyZXR1cm4gZS5pbmNsdWRlcygic2NhbGUiKT8xOjB9ZnVuY3Rpb24gU18oZSx0KXtpZighZXx8ZT09PSJub25lIilyZXR1cm4gd18odCk7Y29uc3Qgbj1lLm1hdGNoKC9ebWF0cml4M2RcKChbLVxkLmVccyxdKylcKSQvdSk7bGV0IHIsaTtpZihuKXI9dG1lLGk9bjtlbHNle2NvbnN0IHU9ZS5tYXRjaCgvXm1hdHJpeFwoKFstXGQuZVxzLF0rKVwpJC91KTtyPWVtZSxpPXV9aWYoIWkpcmV0dXJuIHdfKHQpO2NvbnN0IG89clt0XSxzPWlbMV0uc3BsaXQoIiwiKS5tYXAocm1lKTtyZXR1cm4gdHlwZW9mIG89PSJmdW5jdGlvbiI/byhzKTpzW29dfWNvbnN0IG5tZT0oZSx0KT0+e2NvbnN0e3RyYW5zZm9ybTpuPSJub25lIn09Z2V0Q29tcHV0ZWRTdHlsZShlKTtyZXR1cm4gU18obix0KX07ZnVuY3Rpb24gcm1lKGUpe3JldHVybiBwYXJzZUZsb2F0KGUudHJpbSgpKX1jb25zdCBIdT1bInRyYW5zZm9ybVBlcnNwZWN0aXZlIiwieCIsInkiLCJ6IiwidHJhbnNsYXRlWCIsInRyYW5zbGF0ZVkiLCJ0cmFuc2xhdGVaIiwic2NhbGUiLCJzY2FsZVgiLCJzY2FsZVkiLCJyb3RhdGUiLCJyb3RhdGVYIiwicm90YXRlWSIsInJvdGF0ZVoiLCJza2V3Iiwic2tld1giLCJza2V3WSJdLEd1PW5ldyBTZXQoWy4uLkh1LCJwYXRoUm90YXRpb24iXSksXyQ9ZT0+ZT09PUZ1fHxlPT09TmUsaW1lPW5ldyBTZXQoWyJ4IiwieSIsInoiXSksYW1lPUh1LmZpbHRlcihlPT4haW1lLmhhcyhlKSk7ZnVuY3Rpb24gb21lKGUpe2NvbnN0IHQ9W107cmV0dXJuIGFtZS5mb3JFYWNoKG49Pntjb25zdCByPWUuZ2V0VmFsdWUobik7ciE9PXZvaWQgMCYmKHQucHVzaChbbixyLmdldCgpXSksci5zZXQobi5zdGFydHNXaXRoKCJzY2FsZSIpPzE6MCkpfSksdH1jb25zdCBlbz17d2lkdGg6KHt4OmV9LHtwYWRkaW5nTGVmdDp0PSIwIixwYWRkaW5nUmlnaHQ6bj0iMCIsYm94U2l6aW5nOnJ9KT0+e2NvbnN0IGk9ZS5tYXgtZS5taW47cmV0dXJuIHI9PT0iYm9yZGVyLWJveCI/aTppLXBhcnNlRmxvYXQodCktcGFyc2VGbG9hdChuKX0saGVpZ2h0Oih7eTplfSx7cGFkZGluZ1RvcDp0PSIwIixwYWRkaW5nQm90dG9tOm49IjAiLGJveFNpemluZzpyfSk9Pntjb25zdCBpPWUubWF4LWUubWluO3JldHVybiByPT09ImJvcmRlci1ib3giP2k6aS1wYXJzZUZsb2F0KHQpLXBhcnNlRmxvYXQobil9LHRvcDooZSx7dG9wOnR9KT0+cGFyc2VGbG9hdCh0KSxsZWZ0OihlLHtsZWZ0OnR9KT0+cGFyc2VGbG9hdCh0KSxib3R0b206KHt5OmV9LHt0b3A6dH0pPT5wYXJzZUZsb2F0KHQpKyhlLm1heC1lLm1pbikscmlnaHQ6KHt4OmV9LHtsZWZ0OnR9KT0+cGFyc2VGbG9hdCh0KSsoZS5tYXgtZS5taW4pLHg6KGUse3RyYW5zZm9ybTp0fSk9PlNfKHQsIngiKSx5OihlLHt0cmFuc2Zvcm06dH0pPT5TXyh0LCJ5Iil9O2VvLnRyYW5zbGF0ZVg9ZW8ueDtlby50cmFuc2xhdGVZPWVvLnk7Y29uc3QgcHM9bmV3IFNldDtsZXQgQV89ITEsX189ITEsT189ITE7ZnVuY3Rpb24gaXooKXtpZihfXyl7Y29uc3QgZT1BcnJheS5mcm9tKHBzKS5maWx0ZXIocj0+ci5uZWVkc01lYXN1cmVtZW50KSx0PW5ldyBTZXQoZS5tYXAocj0+ci5lbGVtZW50KSksbj1uZXcgTWFwO3QuZm9yRWFjaChyPT57Y29uc3QgaT1vbWUocik7aS5sZW5ndGgmJihuLnNldChyLGkpLHIucmVuZGVyKCkpfSksZS5mb3JFYWNoKHI9PnIubWVhc3VyZUluaXRpYWxTdGF0ZSgpKSx0LmZvckVhY2gocj0+e3IucmVuZGVyKCk7Y29uc3QgaT1uLmdldChyKTtpJiZpLmZvckVhY2goKFtvLHNdKT0+e3IuZ2V0VmFsdWUobyk/LnNldChzKX0pfSksZS5mb3JFYWNoKHI9PnIubWVhc3VyZUVuZFN0YXRlKCkpLGUuZm9yRWFjaChyPT57ci5zdXNwZW5kZWRTY3JvbGxZIT09dm9pZCAwJiZ3aW5kb3cuc2Nyb2xsVG8oMCxyLnN1c3BlbmRlZFNjcm9sbFkpfSl9X189ITEsQV89ITEscHMuZm9yRWFjaChlPT5lLmNvbXBsZXRlKE9fKSkscHMuY2xlYXIoKX1mdW5jdGlvbiBheigpe3BzLmZvckVhY2goZT0+e2UucmVhZEtleWZyYW1lcygpLGUubmVlZHNNZWFzdXJlbWVudCYmKF9fPSEwKX0pfWZ1bmN0aW9uIHNtZSgpe09fPSEwLGF6KCksaXooKSxPXz0hMX1jbGFzcyBVVHtjb25zdHJ1Y3Rvcih0LG4scixpLG8scz0hMSl7dGhpcy5zdGF0ZT0icGVuZGluZyIsdGhpcy5pc0FzeW5jPSExLHRoaXMubmVlZHNNZWFzdXJlbWVudD0hMSx0aGlzLnVucmVzb2x2ZWRLZXlmcmFtZXM9Wy4uLnRdLHRoaXMub25Db21wbGV0ZT1uLHRoaXMubmFtZT1yLHRoaXMubW90aW9uVmFsdWU9aSx0aGlzLmVsZW1lbnQ9byx0aGlzLmlzQXN5bmM9c31zY2hlZHVsZVJlc29sdmUoKXt0aGlzLnN0YXRlPSJzY2hlZHVsZWQiLHRoaXMuaXNBc3luYz8ocHMuYWRkKHRoaXMpLEFffHwoQV89ITAsTXQucmVhZChheiksTXQucmVzb2x2ZUtleWZyYW1lcyhpeikpKToodGhpcy5yZWFkS2V5ZnJhbWVzKCksdGhpcy5jb21wbGV0ZSgpKX1yZWFkS2V5ZnJhbWVzKCl7Y29uc3R7dW5yZXNvbHZlZEtleWZyYW1lczp0LG5hbWU6bixlbGVtZW50OnIsbW90aW9uVmFsdWU6aX09dGhpcztpZih0WzBdPT09bnVsbCl7Y29uc3Qgbz1pPy5nZXQoKSxzPXRbdC5sZW5ndGgtMV07aWYobyE9PXZvaWQgMCl0WzBdPW87ZWxzZSBpZihyJiZuKXtjb25zdCB1PXIucmVhZFZhbHVlKG4scyk7dSE9bnVsbCYmKHRbMF09dSl9dFswXT09PXZvaWQgMCYmKHRbMF09cyksaSYmbz09PXZvaWQgMCYmaS5zZXQodFswXSl9SnBlKHQpfXNldEZpbmFsS2V5ZnJhbWUoKXt9bWVhc3VyZUluaXRpYWxTdGF0ZSgpe31yZW5kZXJFbmRTdHlsZXMoKXt9bWVhc3VyZUVuZFN0YXRlKCl7fWNvbXBsZXRlKHQ9ITEpe3RoaXMuc3RhdGU9ImNvbXBsZXRlIix0aGlzLm9uQ29tcGxldGUodGhpcy51bnJlc29sdmVkS2V5ZnJhbWVzLHRoaXMuZmluYWxLZXlmcmFtZSx0KSxwcy5kZWxldGUodGhpcyl9Y2FuY2VsKCl7dGhpcy5zdGF0ZT09PSJzY2hlZHVsZWQiJiYocHMuZGVsZXRlKHRoaXMpLHRoaXMuc3RhdGU9InBlbmRpbmciKX1yZXN1bWUoKXt0aGlzLnN0YXRlPT09InBlbmRpbmciJiZ0aGlzLnNjaGVkdWxlUmVzb2x2ZSgpfX1jb25zdCBsbWU9ZT0+ZS5zdGFydHNXaXRoKCItLSIpO2Z1bmN0aW9uIG96KGUsdCxuKXtsbWUodCk/ZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pOmUuc3R5bGVbdF09bn1jb25zdCB1bWU9e307ZnVuY3Rpb24gc3ooZSx0KXtjb25zdCBuPWtVKGUpO3JldHVybigpPT51bWVbdF0/P24oKX1jb25zdCBjbWU9c3ooKCk9PndpbmRvdy5TY3JvbGxUaW1lbGluZSE9PXZvaWQgMCwic2Nyb2xsVGltZWxpbmUiKSxsej1zeigoKT0+e3RyeXtkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5hbmltYXRlKHtvcGFjaXR5OjB9LHtlYXNpbmc6ImxpbmVhcigwLCAxKSJ9KX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hMH0sImxpbmVhckVhc2luZyIpLGNmPShbZSx0LG4scl0pPT5gY3ViaWMtYmV6aWVyKCR7ZX0sICR7dH0sICR7bn0sICR7cn0pYCxPJD17bGluZWFyOiJsaW5lYXIiLGVhc2U6ImVhc2UiLGVhc2VJbjoiZWFzZS1pbiIsZWFzZU91dDoiZWFzZS1vdXQiLGVhc2VJbk91dDoiZWFzZS1pbi1vdXQiLGNpcmNJbjpjZihbMCwuNjUsLjU1LDFdKSxjaXJjT3V0OmNmKFsuNTUsMCwxLC40NV0pLGJhY2tJbjpjZihbLjMxLC4wMSwuNjYsLS41OV0pLGJhY2tPdXQ6Y2YoWy4zMywxLjUzLC42OSwuOTldKX07ZnVuY3Rpb24gdXooZSx0KXtpZihlKXJldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj9seigpP3R6KGUsdCk6ImVhc2Utb3V0IjpIVShlKT9jZihlKTpBcnJheS5pc0FycmF5KGUpP2UubWFwKG49PnV6KG4sdCl8fE8kLmVhc2VPdXQpOk8kW2VdfWZ1bmN0aW9uIGZtZShlLHQsbix7ZGVsYXk6cj0wLGR1cmF0aW9uOmk9MzAwLHJlcGVhdDpvPTAscmVwZWF0VHlwZTpzPSJsb29wIixlYXNlOnU9ImVhc2VPdXQiLHRpbWVzOmZ9PXt9LGQ9dm9pZCAwKXtjb25zdCBwPXtbdF06bn07ZiYmKHAub2Zmc2V0PWYpO2NvbnN0IG09dXoodSxpKTtBcnJheS5pc0FycmF5KG0pJiYocC5lYXNpbmc9bSk7Y29uc3QgeT17ZGVsYXk6cixkdXJhdGlvbjppLGVhc2luZzpBcnJheS5pc0FycmF5KG0pPyJsaW5lYXIiOm0sZmlsbDoiYm90aCIsaXRlcmF0aW9uczpvKzEsZGlyZWN0aW9uOnM9PT0icmV2ZXJzZSI/ImFsdGVybmF0ZSI6Im5vcm1hbCJ9O3JldHVybiBkJiYoeS5wc2V1ZG9FbGVtZW50PWQpLGUuYW5pbWF0ZShwLHkpfWZ1bmN0aW9uIGN6KGUpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIiYmImFwcGx5VG9PcHRpb25zImluIGV9ZnVuY3Rpb24gZG1lKHt0eXBlOmUsLi4udH0pe3JldHVybiBjeihlKSYmbHooKT9lLmFwcGx5VG9PcHRpb25zKHQpOih0LmR1cmF0aW9uPz8odC5kdXJhdGlvbj0zMDApLHQuZWFzZT8/KHQuZWFzZT0iZWFzZU91dCIpLHQpfWNsYXNzIGZ6IGV4dGVuZHMgcVR7Y29uc3RydWN0b3IodCl7aWYoc3VwZXIoKSx0aGlzLmZpbmlzaGVkVGltZT1udWxsLHRoaXMuaXNTdG9wcGVkPSExLHRoaXMubWFudWFsU3RhcnRUaW1lPW51bGwsIXQpcmV0dXJuO2NvbnN0e2VsZW1lbnQ6bixuYW1lOnIsa2V5ZnJhbWVzOmkscHNldWRvRWxlbWVudDpvLGFsbG93RmxhdHRlbjpzPSExLGZpbmFsS2V5ZnJhbWU6dSxvbkNvbXBsZXRlOmZ9PXQ7dGhpcy5pc1BzZXVkb0VsZW1lbnQ9ISFvLHRoaXMuYWxsb3dGbGF0dGVuPXMsdGhpcy5vcHRpb25zPXQsUlQodHlwZW9mIHQudHlwZSE9InN0cmluZyIpO2NvbnN0IGQ9ZG1lKHQpO3RoaXMuYW5pbWF0aW9uPWZtZShuLHIsaSxkLG8pLGQuYXV0b3BsYXk9PT0hMSYmdGhpcy5hbmltYXRpb24ucGF1c2UoKSx0aGlzLmFuaW1hdGlvbi5vbmZpbmlzaD0oKT0+e2lmKHRoaXMuZmluaXNoZWRUaW1lPXRoaXMudGltZSwhbyl7Y29uc3QgcD1TdihpLHRoaXMub3B0aW9ucyx1LHRoaXMuc3BlZWQpO3RoaXMudXBkYXRlTW90aW9uVmFsdWUmJnRoaXMudXBkYXRlTW90aW9uVmFsdWUocCksb3oobixyLHApLHRoaXMuYW5pbWF0aW9uLmNhbmNlbCgpfWY/LigpLHRoaXMubm90aWZ5RmluaXNoZWQoKX19cGxheSgpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5tYW51YWxTdGFydFRpbWU9bnVsbCx0aGlzLmFuaW1hdGlvbi5wbGF5KCksdGhpcy5zdGF0ZT09PSJmaW5pc2hlZCImJnRoaXMudXBkYXRlRmluaXNoZWQoKSl9cGF1c2UoKXt0aGlzLmFuaW1hdGlvbi5wYXVzZSgpfWNvbXBsZXRlKCl7dGhpcy5hbmltYXRpb24uZmluaXNoPy4oKX1jYW5jZWwoKXt0cnl7dGhpcy5hbmltYXRpb24uY2FuY2VsKCl9Y2F0Y2h7fX1zdG9wKCl7aWYodGhpcy5pc1N0b3BwZWQpcmV0dXJuO3RoaXMuaXNTdG9wcGVkPSEwO2NvbnN0e3N0YXRlOnR9PXRoaXM7dD09PSJpZGxlInx8dD09PSJmaW5pc2hlZCJ8fCh0aGlzLnVwZGF0ZU1vdGlvblZhbHVlP3RoaXMudXBkYXRlTW90aW9uVmFsdWUoKTp0aGlzLmNvbW1pdFN0eWxlcygpLHRoaXMuaXNQc2V1ZG9FbGVtZW50fHx0aGlzLmNhbmNlbCgpKX1jb21taXRTdHlsZXMoKXtjb25zdCB0PXRoaXMub3B0aW9ucz8uZWxlbWVudDshdGhpcy5pc1BzZXVkb0VsZW1lbnQmJnQ/LmlzQ29ubmVjdGVkJiZ0aGlzLmFuaW1hdGlvbi5jb21taXRTdHlsZXM/LigpfWdldCBkdXJhdGlvbigpe2NvbnN0IHQ9dGhpcy5hbmltYXRpb24uZWZmZWN0Py5nZXRDb21wdXRlZFRpbWluZz8uKCkuZHVyYXRpb258fDA7cmV0dXJuIHFyKE51bWJlcih0KSl9Z2V0IGl0ZXJhdGlvbkR1cmF0aW9uKCl7Y29uc3R7ZGVsYXk6dD0wfT10aGlzLm9wdGlvbnN8fHt9O3JldHVybiB0aGlzLmR1cmF0aW9uK3FyKHQpfWdldCB0aW1lKCl7cmV0dXJuIHFyKE51bWJlcih0aGlzLmFuaW1hdGlvbi5jdXJyZW50VGltZSl8fDApfXNldCB0aW1lKHQpe2NvbnN0IG49dGhpcy5maW5pc2hlZFRpbWUhPT1udWxsO3RoaXMubWFudWFsU3RhcnRUaW1lPW51bGwsdGhpcy5maW5pc2hlZFRpbWU9bnVsbCx0aGlzLmFuaW1hdGlvbi5jdXJyZW50VGltZT1Tcih0KSxuJiZ0aGlzLmFuaW1hdGlvbi5wYXVzZSgpfWdldCBzcGVlZCgpe3JldHVybiB0aGlzLmFuaW1hdGlvbi5wbGF5YmFja1JhdGV9c2V0IHNwZWVkKHQpe3Q8MCYmKHRoaXMuZmluaXNoZWRUaW1lPW51bGwpLHRoaXMuYW5pbWF0aW9uLnBsYXliYWNrUmF0ZT10fWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmZpbmlzaGVkVGltZSE9PW51bGw/ImZpbmlzaGVkIjp0aGlzLmFuaW1hdGlvbi5wbGF5U3RhdGV9Z2V0IHN0YXJ0VGltZSgpe3JldHVybiB0aGlzLm1hbnVhbFN0YXJ0VGltZT8/TnVtYmVyKHRoaXMuYW5pbWF0aW9uLnN0YXJ0VGltZSl9c2V0IHN0YXJ0VGltZSh0KXt0aGlzLm1hbnVhbFN0YXJ0VGltZT10aGlzLmFuaW1hdGlvbi5zdGFydFRpbWU9dH1hdHRhY2hUaW1lbGluZSh7dGltZWxpbmU6dCxyYW5nZVN0YXJ0Om4scmFuZ2VFbmQ6cixvYnNlcnZlOml9KXtyZXR1cm4gdGhpcy5hbGxvd0ZsYXR0ZW4mJnRoaXMuYW5pbWF0aW9uLmVmZmVjdD8udXBkYXRlVGltaW5nKHtlYXNpbmc6ImxpbmVhciJ9KSx0aGlzLmFuaW1hdGlvbi5vbmZpbmlzaD1udWxsLHQmJmNtZSgpPyh0aGlzLmFuaW1hdGlvbi50aW1lbGluZT10LG4mJih0aGlzLmFuaW1hdGlvbi5yYW5nZVN0YXJ0PW4pLHImJih0aGlzLmFuaW1hdGlvbi5yYW5nZUVuZD1yKSxVcik6aSh0aGlzKX19Y29uc3QgZHo9e2FudGljaXBhdGU6cVUsYmFja0luT3V0OlZVLGNpcmNJbk91dDp6VX07ZnVuY3Rpb24gaG1lKGUpe3JldHVybiBlIGluIGR6fWZ1bmN0aW9uIHBtZShlKXt0eXBlb2YgZS5lYXNlPT0ic3RyaW5nIiYmaG1lKGUuZWFzZSkmJihlLmVhc2U9ZHpbZS5lYXNlXSl9Y29uc3QgZFM9MTA7Y2xhc3MgbW1lIGV4dGVuZHMgZnp7Y29uc3RydWN0b3IodCl7cG1lKHQpLHJ6KHQpLHN1cGVyKHQpLHQuc3RhcnRUaW1lIT09dm9pZCAwJiZ0LmF1dG9wbGF5IT09ITEmJih0aGlzLnN0YXJ0VGltZT10LnN0YXJ0VGltZSksdGhpcy5vcHRpb25zPXR9dXBkYXRlTW90aW9uVmFsdWUodCl7Y29uc3R7bW90aW9uVmFsdWU6bixvblVwZGF0ZTpyLG9uQ29tcGxldGU6aSxlbGVtZW50Om8sLi4uc309dGhpcy5vcHRpb25zO2lmKCFuKXJldHVybjtpZih0IT09dm9pZCAwKXtuLnNldCh0KTtyZXR1cm59Y29uc3QgdT1uZXcgZnkoey4uLnMsYXV0b3BsYXk6ITF9KSxmPU1hdGgubWF4KGRTLFduLm5vdygpLXRoaXMuc3RhcnRUaW1lKSxkPU5pKDAsZFMsZi1kUykscD11LnNhbXBsZShmKS52YWx1ZSx7bmFtZTptfT10aGlzLm9wdGlvbnM7byYmbSYmb3oobyxtLHApLG4uc2V0V2l0aFZlbG9jaXR5KHUuc2FtcGxlKE1hdGgubWF4KDAsZi1kKSkudmFsdWUscCxkKSx1LnN0b3AoKX19Y29uc3QgVCQ9KGUsdCk9PnQ9PT0iekluZGV4Ij8hMTohISh0eXBlb2YgZT09Im51bWJlciJ8fEFycmF5LmlzQXJyYXkoZSl8fHR5cGVvZiBlPT0ic3RyaW5nIiYmKHNpLnRlc3QoZSl8fGU9PT0iMCIpJiYhZS5zdGFydHNXaXRoKCJ1cmwoIikpO2Z1bmN0aW9uIHltZShlKXtjb25zdCB0PWVbMF07aWYoZS5sZW5ndGg9PT0xKXJldHVybiEwO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0hPT10KXJldHVybiEwfWZ1bmN0aW9uIHZtZShlLHQsbixyKXtjb25zdCBpPWVbMF07aWYoaT09PW51bGwpcmV0dXJuITE7aWYodD09PSJkaXNwbGF5Inx8dD09PSJ2aXNpYmlsaXR5IilyZXR1cm4hMDtjb25zdCBvPWVbZS5sZW5ndGgtMV0scz1UJChpLHQpLHU9VCQobyx0KTtyZXR1cm4hc3x8IXU/ITE6eW1lKGUpfHwobj09PSJzcHJpbmcifHxjeihuKSkmJnJ9ZnVuY3Rpb24gVF8oZSl7ZS5kdXJhdGlvbj0wLGUudHlwZT0ia2V5ZnJhbWVzIn1jb25zdCBoej1uZXcgU2V0KFsib3BhY2l0eSIsImNsaXBQYXRoIiwiZmlsdGVyIiwidHJhbnNmb3JtIl0pLGdtZT0vXig/Om9rbGNofG9rbGFifGxhYnxsY2h8Y29sb3J8Y29sb3ItbWl4fGxpZ2h0LWRhcmspXCgvO2Z1bmN0aW9uIGJtZShlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZih0eXBlb2YgZVt0XT09InN0cmluZyImJmdtZS50ZXN0KGVbdF0pKXJldHVybiEwO3JldHVybiExfWNvbnN0IHhtZT1uZXcgU2V0KFsiY29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJvdXRsaW5lQ29sb3IiLCJmaWxsIiwic3Ryb2tlIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJUb3BDb2xvciIsImJvcmRlclJpZ2h0Q29sb3IiLCJib3JkZXJCb3R0b21Db2xvciIsImJvcmRlckxlZnRDb2xvciJdKSx3bWU9a1UoKCk9Pk9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKEVsZW1lbnQucHJvdG90eXBlLCJhbmltYXRlIikpO2Z1bmN0aW9uIFNtZShlKXtjb25zdHttb3Rpb25WYWx1ZTp0LG5hbWU6bixyZXBlYXREZWxheTpyLHJlcGVhdFR5cGU6aSxkYW1waW5nOm8sdHlwZTpzLGtleWZyYW1lczp1fT1lO2lmKCEodD8ub3duZXI/LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpcmV0dXJuITE7Y29uc3R7b25VcGRhdGU6ZCx0cmFuc2Zvcm1UZW1wbGF0ZTpwfT10Lm93bmVyLmdldFByb3BzKCk7cmV0dXJuIHdtZSgpJiZuJiYoaHouaGFzKG4pfHx4bWUuaGFzKG4pJiZibWUodSkpJiYobiE9PSJ0cmFuc2Zvcm0ifHwhcCkmJiFkJiYhciYmaSE9PSJtaXJyb3IiJiZvIT09MCYmcyE9PSJpbmVydGlhIn1jb25zdCBBbWU9NDA7Y2xhc3MgX21lIGV4dGVuZHMgcVR7Y29uc3RydWN0b3Ioe2F1dG9wbGF5OnQ9ITAsZGVsYXk6bj0wLHR5cGU6cj0ia2V5ZnJhbWVzIixyZXBlYXQ6aT0wLHJlcGVhdERlbGF5Om89MCxyZXBlYXRUeXBlOnM9Imxvb3AiLGtleWZyYW1lczp1LG5hbWU6Zixtb3Rpb25WYWx1ZTpkLGVsZW1lbnQ6cCwuLi5tfSl7c3VwZXIoKSx0aGlzLnN0b3A9KCk9Pnt0aGlzLl9hbmltYXRpb24mJih0aGlzLl9hbmltYXRpb24uc3RvcCgpLHRoaXMuc3RvcFRpbWVsaW5lPy4oKSksdGhpcy5rZXlmcmFtZVJlc29sdmVyPy5jYW5jZWwoKX0sdGhpcy5jcmVhdGVkQXQ9V24ubm93KCk7Y29uc3QgeT17YXV0b3BsYXk6dCxkZWxheTpuLHR5cGU6cixyZXBlYXQ6aSxyZXBlYXREZWxheTpvLHJlcGVhdFR5cGU6cyxuYW1lOmYsbW90aW9uVmFsdWU6ZCxlbGVtZW50OnAsLi4ubX0seD1wPy5LZXlmcmFtZVJlc29sdmVyfHxVVDt0aGlzLmtleWZyYW1lUmVzb2x2ZXI9bmV3IHgodSwodyxiLGcpPT50aGlzLm9uS2V5ZnJhbWVzUmVzb2x2ZWQodyxiLHksIWcpLGYsZCxwKSx0aGlzLmtleWZyYW1lUmVzb2x2ZXI/LnNjaGVkdWxlUmVzb2x2ZSgpfW9uS2V5ZnJhbWVzUmVzb2x2ZWQodCxuLHIsaSl7dGhpcy5rZXlmcmFtZVJlc29sdmVyPXZvaWQgMDtjb25zdHtuYW1lOm8sdHlwZTpzLHZlbG9jaXR5OnUsZGVsYXk6Zixpc0hhbmRvZmY6ZCxvblVwZGF0ZTpwfT1yO3RoaXMucmVzb2x2ZWRBdD1Xbi5ub3coKTtsZXQgbT0hMDt2bWUodCxvLHMsdSl8fChtPSExLCh1by5pbnN0YW50QW5pbWF0aW9uc3x8IWYpJiZwPy4oU3YodCxyLG4pKSx0WzBdPXRbdC5sZW5ndGgtMV0sVF8ociksci5yZXBlYXQ9MCk7Y29uc3QgeD17c3RhcnRUaW1lOmk/dGhpcy5yZXNvbHZlZEF0P3RoaXMucmVzb2x2ZWRBdC10aGlzLmNyZWF0ZWRBdD5BbWU/dGhpcy5yZXNvbHZlZEF0OnRoaXMuY3JlYXRlZEF0OnRoaXMuY3JlYXRlZEF0OnZvaWQgMCxmaW5hbEtleWZyYW1lOm4sLi4ucixrZXlmcmFtZXM6dH0sdz1tJiYhZCYmU21lKHgpLGI9eC5tb3Rpb25WYWx1ZT8ub3duZXI/LmN1cnJlbnQ7bGV0IGc7aWYodyl0cnl7Zz1uZXcgbW1lKHsuLi54LGVsZW1lbnQ6Yn0pfWNhdGNoe2c9bmV3IGZ5KHgpfWVsc2UgZz1uZXcgZnkoeCk7Zy5maW5pc2hlZC50aGVuKCgpPT57dGhpcy5ub3RpZnlGaW5pc2hlZCgpfSkuY2F0Y2goVXIpLHRoaXMucGVuZGluZ1RpbWVsaW5lJiYodGhpcy5zdG9wVGltZWxpbmU9Zy5hdHRhY2hUaW1lbGluZSh0aGlzLnBlbmRpbmdUaW1lbGluZSksdGhpcy5wZW5kaW5nVGltZWxpbmU9dm9pZCAwKSx0aGlzLl9hbmltYXRpb249Z31nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuYW5pbWF0aW9uLmZpbmlzaGVkOnRoaXMuX2ZpbmlzaGVkfXRoZW4odCxuKXtyZXR1cm4gdGhpcy5maW5pc2hlZC5maW5hbGx5KHQpLnRoZW4oKCk9Pnt9KX1nZXQgYW5pbWF0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbnx8KHRoaXMua2V5ZnJhbWVSZXNvbHZlcj8ucmVzdW1lKCksc21lKCkpLHRoaXMuX2FuaW1hdGlvbn1nZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRpb24uZHVyYXRpb259Z2V0IGl0ZXJhdGlvbkR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuYW5pbWF0aW9uLml0ZXJhdGlvbkR1cmF0aW9ufWdldCB0aW1lKCl7cmV0dXJuIHRoaXMuYW5pbWF0aW9uLnRpbWV9c2V0IHRpbWUodCl7dGhpcy5hbmltYXRpb24udGltZT10fWdldCBzcGVlZCgpe3JldHVybiB0aGlzLmFuaW1hdGlvbi5zcGVlZH1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5hbmltYXRpb24uc3RhdGV9c2V0IHNwZWVkKHQpe3RoaXMuYW5pbWF0aW9uLnNwZWVkPXR9Z2V0IHN0YXJ0VGltZSgpe3JldHVybiB0aGlzLmFuaW1hdGlvbi5zdGFydFRpbWV9YXR0YWNoVGltZWxpbmUodCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbj90aGlzLnN0b3BUaW1lbGluZT10aGlzLmFuaW1hdGlvbi5hdHRhY2hUaW1lbGluZSh0KTp0aGlzLnBlbmRpbmdUaW1lbGluZT10LCgpPT50aGlzLnN0b3AoKX1wbGF5KCl7dGhpcy5hbmltYXRpb24ucGxheSgpfXBhdXNlKCl7dGhpcy5hbmltYXRpb24ucGF1c2UoKX1jb21wbGV0ZSgpe3RoaXMuYW5pbWF0aW9uLmNvbXBsZXRlKCl9Y2FuY2VsKCl7dGhpcy5fYW5pbWF0aW9uJiZ0aGlzLmFuaW1hdGlvbi5jYW5jZWwoKSx0aGlzLmtleWZyYW1lUmVzb2x2ZXI/LmNhbmNlbCgpfX1mdW5jdGlvbiBweihlLHQsbixyPTAsaT0xKXtjb25zdCBvPUFycmF5LmZyb20oZSkuc29ydCgoZCxwKT0+ZC5zb3J0Tm9kZVBvc2l0aW9uKHApKS5pbmRleE9mKHQpLHM9ZS5zaXplLHU9KHMtMSkqcjtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bihvLHMpOmk9PT0xP28qcjp1LW8qcn1jb25zdCBFJD0zMCxPbWU9ZT0+IWlzTmFOKHBhcnNlRmxvYXQoZSkpO2NsYXNzIFRtZXtjb25zdHJ1Y3Rvcih0LG49e30pe3RoaXMuY2FuVHJhY2tWZWxvY2l0eT1udWxsLHRoaXMuZXZlbnRzPXt9LHRoaXMudXBkYXRlQW5kTm90aWZ5PXI9Pntjb25zdCBpPVduLm5vdygpO2lmKHRoaXMudXBkYXRlZEF0IT09aSYmdGhpcy5zZXRQcmV2RnJhbWVWYWx1ZSgpLHRoaXMucHJldj10aGlzLmN1cnJlbnQsdGhpcy5zZXRDdXJyZW50KHIpLHRoaXMuY3VycmVudCE9PXRoaXMucHJldiYmKHRoaXMuZXZlbnRzLmNoYW5nZT8ubm90aWZ5KHRoaXMuY3VycmVudCksdGhpcy5kZXBlbmRlbnRzKSlmb3IoY29uc3QgbyBvZiB0aGlzLmRlcGVuZGVudHMpby5kaXJ0eSgpfSx0aGlzLmhhc0FuaW1hdGVkPSExLHRoaXMuc2V0Q3VycmVudCh0KSx0aGlzLm93bmVyPW4ub3duZXJ9c2V0Q3VycmVudCh0KXt0aGlzLmN1cnJlbnQ9dCx0aGlzLnVwZGF0ZWRBdD1Xbi5ub3coKSx0aGlzLmNhblRyYWNrVmVsb2NpdHk9PT1udWxsJiZ0IT09dm9pZCAwJiYodGhpcy5jYW5UcmFja1ZlbG9jaXR5PU9tZSh0aGlzLmN1cnJlbnQpKX1zZXRQcmV2RnJhbWVWYWx1ZSh0PXRoaXMuY3VycmVudCl7dGhpcy5wcmV2RnJhbWVWYWx1ZT10LHRoaXMucHJldlVwZGF0ZWRBdD10aGlzLnVwZGF0ZWRBdH1vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5vbigiY2hhbmdlIix0KX1vbih0LG4pe3RoaXMuZXZlbnRzW3RdfHwodGhpcy5ldmVudHNbdF09bmV3IE5UKTtjb25zdCByPXRoaXMuZXZlbnRzW3RdLmFkZChuKTtyZXR1cm4gdD09PSJjaGFuZ2UiPygpPT57cigpLE10LnJlYWQoKCk9Pnt0aGlzLmV2ZW50cy5jaGFuZ2UuZ2V0U2l6ZSgpfHx0aGlzLnN0b3AoKX0pfTpyfWNsZWFyTGlzdGVuZXJzKCl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5ldmVudHMpdGhpcy5ldmVudHNbdF0uY2xlYXIoKX1hdHRhY2godCxuKXt0aGlzLnBhc3NpdmVFZmZlY3Q9dCx0aGlzLnN0b3BQYXNzaXZlRWZmZWN0PW59c2V0KHQpe3RoaXMucGFzc2l2ZUVmZmVjdD90aGlzLnBhc3NpdmVFZmZlY3QodCx0aGlzLnVwZGF0ZUFuZE5vdGlmeSk6dGhpcy51cGRhdGVBbmROb3RpZnkodCl9c2V0V2l0aFZlbG9jaXR5KHQsbixyKXt0aGlzLnNldChuKSx0aGlzLnByZXY9dm9pZCAwLHRoaXMucHJldkZyYW1lVmFsdWU9dCx0aGlzLnByZXZVcGRhdGVkQXQ9dGhpcy51cGRhdGVkQXQtcn1qdW1wKHQsbj0hMCl7dGhpcy51cGRhdGVBbmROb3RpZnkodCksdGhpcy5wcmV2PXQsdGhpcy5wcmV2VXBkYXRlZEF0PXRoaXMucHJldkZyYW1lVmFsdWU9dm9pZCAwLG4mJnRoaXMuc3RvcCgpLHRoaXMuc3RvcFBhc3NpdmVFZmZlY3QmJnRoaXMuc3RvcFBhc3NpdmVFZmZlY3QoKX1kaXJ0eSgpe3RoaXMuZXZlbnRzLmNoYW5nZT8ubm90aWZ5KHRoaXMuY3VycmVudCl9YWRkRGVwZW5kZW50KHQpe3RoaXMuZGVwZW5kZW50c3x8KHRoaXMuZGVwZW5kZW50cz1uZXcgU2V0KSx0aGlzLmRlcGVuZGVudHMuYWRkKHQpfXJlbW92ZURlcGVuZGVudCh0KXt0aGlzLmRlcGVuZGVudHMmJnRoaXMuZGVwZW5kZW50cy5kZWxldGUodCl9Z2V0KCl7cmV0dXJuIHRoaXMuY3VycmVudH1nZXRQcmV2aW91cygpe3JldHVybiB0aGlzLnByZXZ9Z2V0VmVsb2NpdHkoKXtjb25zdCB0PVduLm5vdygpO2lmKCF0aGlzLmNhblRyYWNrVmVsb2NpdHl8fHRoaXMucHJldkZyYW1lVmFsdWU9PT12b2lkIDB8fHQtdGhpcy51cGRhdGVkQXQ+RSQpcmV0dXJuIDA7Y29uc3Qgbj1NYXRoLm1pbih0aGlzLnVwZGF0ZWRBdC10aGlzLnByZXZVcGRhdGVkQXQsRSQpO3JldHVybiBEVShwYXJzZUZsb2F0KHRoaXMuY3VycmVudCktcGFyc2VGbG9hdCh0aGlzLnByZXZGcmFtZVZhbHVlKSxuKX1zdGFydCh0KXtyZXR1cm4gdGhpcy5zdG9wKCksbmV3IFByb21pc2Uobj0+e3RoaXMuaGFzQW5pbWF0ZWQ9ITAsdGhpcy5hbmltYXRpb249dChuKSx0aGlzLmV2ZW50cy5hbmltYXRpb25TdGFydCYmdGhpcy5ldmVudHMuYW5pbWF0aW9uU3RhcnQubm90aWZ5KCl9KS50aGVuKCgpPT57dGhpcy5ldmVudHMuYW5pbWF0aW9uQ29tcGxldGUmJnRoaXMuZXZlbnRzLmFuaW1hdGlvbkNvbXBsZXRlLm5vdGlmeSgpLHRoaXMuY2xlYXJBbmltYXRpb24oKX0pfXN0b3AoKXt0aGlzLmFuaW1hdGlvbiYmKHRoaXMuYW5pbWF0aW9uLnN0b3AoKSx0aGlzLmV2ZW50cy5hbmltYXRpb25DYW5jZWwmJnRoaXMuZXZlbnRzLmFuaW1hdGlvbkNhbmNlbC5ub3RpZnkoKSksdGhpcy5jbGVhckFuaW1hdGlvbigpfWlzQW5pbWF0aW5nKCl7cmV0dXJuISF0aGlzLmFuaW1hdGlvbn1jbGVhckFuaW1hdGlvbigpe2RlbGV0ZSB0aGlzLmFuaW1hdGlvbn1kZXN0cm95KCl7dGhpcy5kZXBlbmRlbnRzPy5jbGVhcigpLHRoaXMuZXZlbnRzLmRlc3Ryb3k/Lm5vdGlmeSgpLHRoaXMuY2xlYXJMaXN0ZW5lcnMoKSx0aGlzLnN0b3AoKSx0aGlzLnN0b3BQYXNzaXZlRWZmZWN0JiZ0aGlzLnN0b3BQYXNzaXZlRWZmZWN0KCl9fWZ1bmN0aW9uIE91KGUsdCl7cmV0dXJuIG5ldyBUbWUoZSx0KX1mdW5jdGlvbiBteihlLHQpe2lmKGU/LmluaGVyaXQmJnQpe2NvbnN0e2luaGVyaXQ6biwuLi5yfT1lO3JldHVybnsuLi50LC4uLnJ9fXJldHVybiBlfWZ1bmN0aW9uIHpUKGUsdCl7Y29uc3Qgbj1lPy5bdF0/P2U/LmRlZmF1bHQ/P2U7cmV0dXJuIG4hPT1lP216KG4sZSk6bn1jb25zdCBFbWU9e3R5cGU6InNwcmluZyIsc3RpZmZuZXNzOjUwMCxkYW1waW5nOjI1LHJlc3RTcGVlZDoxMH0sQ21lPWU9Pih7dHlwZToic3ByaW5nIixzdGlmZm5lc3M6NTUwLGRhbXBpbmc6ZT09PTA/MipNYXRoLnNxcnQoNTUwKTozMCxyZXN0U3BlZWQ6MTB9KSxqbWU9e3R5cGU6ImtleWZyYW1lcyIsZHVyYXRpb246Ljh9LFBtZT17dHlwZToia2V5ZnJhbWVzIixlYXNlOlsuMjUsLjEsLjM1LDFdLGR1cmF0aW9uOi4zfSxNbWU9KGUse2tleWZyYW1lczp0fSk9PnQubGVuZ3RoPjI/am1lOkd1LmhhcyhlKT9lLnN0YXJ0c1dpdGgoInNjYWxlIik/Q21lKHRbMV0pOkVtZTpQbWUsUm1lPW5ldyBTZXQoWyJ3aGVuIiwiZGVsYXkiLCJkZWxheUNoaWxkcmVuIiwic3RhZ2dlckNoaWxkcmVuIiwic3RhZ2dlckRpcmVjdGlvbiIsInJlcGVhdCIsInJlcGVhdFR5cGUiLCJyZXBlYXREZWxheSIsImZyb20iLCJlbGFwc2VkIl0pO2Z1bmN0aW9uIE5tZShlKXtmb3IoY29uc3QgdCBpbiBlKWlmKCFSbWUuaGFzKHQpKXJldHVybiEwO3JldHVybiExfWNvbnN0IEZUPShlLHQsbixyPXt9LGksbyk9PnM9Pntjb25zdCB1PXpUKHIsZSl8fHt9LGY9dS5kZWxheXx8ci5kZWxheXx8MDtsZXR7ZWxhcHNlZDpkPTB9PXI7ZD1kLVNyKGYpO2NvbnN0IHA9e2tleWZyYW1lczpBcnJheS5pc0FycmF5KG4pP246W251bGwsbl0sZWFzZToiZWFzZU91dCIsdmVsb2NpdHk6dC5nZXRWZWxvY2l0eSgpLC4uLnUsZGVsYXk6LWQsb25VcGRhdGU6eT0+e3Quc2V0KHkpLHUub25VcGRhdGUmJnUub25VcGRhdGUoeSl9LG9uQ29tcGxldGU6KCk9PntzKCksdS5vbkNvbXBsZXRlJiZ1Lm9uQ29tcGxldGUoKX0sbmFtZTplLG1vdGlvblZhbHVlOnQsZWxlbWVudDpvP3ZvaWQgMDppfTtObWUodSl8fE9iamVjdC5hc3NpZ24ocCxNbWUoZSxwKSkscC5kdXJhdGlvbiYmKHAuZHVyYXRpb249U3IocC5kdXJhdGlvbikpLHAucmVwZWF0RGVsYXkmJihwLnJlcGVhdERlbGF5PVNyKHAucmVwZWF0RGVsYXkpKSxwLmZyb20hPT12b2lkIDAmJihwLmtleWZyYW1lc1swXT1wLmZyb20pO2xldCBtPSExO2lmKChwLnR5cGU9PT0hMXx8cC5kdXJhdGlvbj09PTAmJiFwLnJlcGVhdERlbGF5KSYmKFRfKHApLHAuZGVsYXk9PT0wJiYobT0hMCkpLCh1by5pbnN0YW50QW5pbWF0aW9uc3x8dW8uc2tpcEFuaW1hdGlvbnN8fGk/LnNob3VsZFNraXBBbmltYXRpb25zfHx1LnNraXBBbmltYXRpb25zKSYmKG09ITAsVF8ocCkscC5kZWxheT0wKSxwLmFsbG93RmxhdHRlbj0hdS50eXBlJiYhdS5lYXNlLG0mJiFvJiZ0LmdldCgpIT09dm9pZCAwKXtjb25zdCB5PVN2KHAua2V5ZnJhbWVzLHUpO2lmKHkhPT12b2lkIDApe010LnVwZGF0ZSgoKT0+e3Aub25VcGRhdGUoeSkscC5vbkNvbXBsZXRlKCl9KTtyZXR1cm59fXJldHVybiB1LmlzU3luYz9uZXcgZnkocCk6bmV3IF9tZShwKX0sa21lPS9edmFyXCgtLSg/OihbXHctXSspfChbXHctXSspLCA/KFthLXpBLVpcZCAoKSUjLiwtXSspKVwpL3U7ZnVuY3Rpb24gRG1lKGUpe2NvbnN0IHQ9a21lLmV4ZWMoZSk7aWYoIXQpcmV0dXJuWyxdO2NvbnN0WyxuLHIsaV09dDtyZXR1cm5bYC0tJHtuPz9yfWAsaV19ZnVuY3Rpb24geXooZSx0LG49MSl7Y29uc3RbcixpXT1EbWUoZSk7aWYoIXIpcmV0dXJuO2NvbnN0IG89d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShyKTtpZihvKXtjb25zdCBzPW8udHJpbSgpO3JldHVybiBNVShzKT9wYXJzZUZsb2F0KHMpOnN9cmV0dXJuIExUKGkpP3l6KGksdCxuKzEpOml9ZnVuY3Rpb24gQyQoZSl7Y29uc3QgdD1be30se31dO3JldHVybiBlPy52YWx1ZXMuZm9yRWFjaCgobixyKT0+e3RbMF1bcl09bi5nZXQoKSx0WzFdW3JdPW4uZ2V0VmVsb2NpdHkoKX0pLHR9ZnVuY3Rpb24gSFQoZSx0LG4scil7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe2NvbnN0W2ksb109QyQocik7dD10KG4hPT12b2lkIDA/bjplLmN1c3RvbSxpLG8pfWlmKHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9ZS52YXJpYW50cyYmZS52YXJpYW50c1t0XSksdHlwZW9mIHQ9PSJmdW5jdGlvbiIpe2NvbnN0W2ksb109QyQocik7dD10KG4hPT12b2lkIDA/bjplLmN1c3RvbSxpLG8pfXJldHVybiB0fWZ1bmN0aW9uIG1zKGUsdCxuKXtjb25zdCByPWUuZ2V0UHJvcHMoKTtyZXR1cm4gSFQocix0LG4hPT12b2lkIDA/bjpyLmN1c3RvbSxlKX1jb25zdCB2ej1uZXcgU2V0KFsid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwicmlnaHQiLCJib3R0b20iLC4uLkh1XSksRV89ZT0+QXJyYXkuaXNBcnJheShlKTtmdW5jdGlvbiBMbWUoZSx0LG4pe2UuaGFzVmFsdWUodCk/ZS5nZXRWYWx1ZSh0KS5zZXQobik6ZS5hZGRWYWx1ZSh0LE91KG4pKX1mdW5jdGlvbiBJbWUoZSl7cmV0dXJuIEVfKGUpP2VbZS5sZW5ndGgtMV18fDA6ZX1mdW5jdGlvbiAkbWUoZSx0KXtjb25zdCBuPW1zKGUsdCk7bGV0e3RyYW5zaXRpb25FbmQ6cj17fSx0cmFuc2l0aW9uOmk9e30sLi4ub309bnx8e307bz17Li4ubywuLi5yfTtmb3IoY29uc3QgcyBpbiBvKXtjb25zdCB1PUltZShvW3NdKTtMbWUoZSxzLHUpfX1jb25zdCBEbj1lPT4hIShlJiZlLmdldFZlbG9jaXR5KTtmdW5jdGlvbiBCbWUoZSl7cmV0dXJuISEoRG4oZSkmJmUuYWRkKX1mdW5jdGlvbiBDXyhlLHQpe2NvbnN0IG49ZS5nZXRWYWx1ZSgid2lsbENoYW5nZSIpO2lmKEJtZShuKSlyZXR1cm4gbi5hZGQodCk7aWYoIW4mJnVvLldpbGxDaGFuZ2Upe2NvbnN0IHI9bmV3IHVvLldpbGxDaGFuZ2UoImF1dG8iKTtlLmFkZFZhbHVlKCJ3aWxsQ2hhbmdlIixyKSxyLmFkZCh0KX19ZnVuY3Rpb24gR1QoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFtBLVpdKS9nLHQ9PmAtJHt0LnRvTG93ZXJDYXNlKCl9YCl9Y29uc3QgVm1lPSJmcmFtZXJBcHBlYXJJZCIsZ3o9ImRhdGEtIitHVChWbWUpO2Z1bmN0aW9uIGJ6KGUpe3JldHVybiBlLnByb3BzW2d6XX1mdW5jdGlvbiBxbWUoe3Byb3RlY3RlZEtleXM6ZSxuZWVkc0FuaW1hdGluZzp0fSxuKXtjb25zdCByPWUuaGFzT3duUHJvcGVydHkobikmJnRbbl0hPT0hMDtyZXR1cm4gdFtuXT0hMSxyfWZ1bmN0aW9uIHh6KGUsdCx7ZGVsYXk6bj0wLHRyYW5zaXRpb25PdmVycmlkZTpyLHR5cGU6aX09e30pe2xldHt0cmFuc2l0aW9uOm8sdHJhbnNpdGlvbkVuZDpzLC4uLnV9PXQ7Y29uc3QgZj1lLmdldERlZmF1bHRUcmFuc2l0aW9uKCk7bz1vP216KG8sZik6Zjtjb25zdCBkPW8/LnJlZHVjZU1vdGlvbixwPW8/LnNraXBBbmltYXRpb25zO3ImJihvPXIpO2NvbnN0IG09W10seT1pJiZlLmFuaW1hdGlvblN0YXRlJiZlLmFuaW1hdGlvblN0YXRlLmdldFN0YXRlKClbaV0seD1vPy5wYXRoO3gmJnguYW5pbWF0ZVZpc3VhbEVsZW1lbnQoZSx1LG8sbixtKTtmb3IoY29uc3QgdyBpbiB1KXtjb25zdCBiPWUuZ2V0VmFsdWUodyxlLmxhdGVzdFZhbHVlc1t3XT8/bnVsbCksZz11W3ddO2lmKGc9PT12b2lkIDB8fHkmJnFtZSh5LHcpKWNvbnRpbnVlO2NvbnN0IF89e2RlbGF5Om4sLi4uelQob3x8e30sdyl9O3AmJihfLnNraXBBbmltYXRpb25zPSEwKTtjb25zdCBPPWIuZ2V0KCk7aWYoTyE9PXZvaWQgMCYmIWIuaXNBbmltYXRpbmcoKSYmIUFycmF5LmlzQXJyYXkoZykmJmc9PT1PJiYhXy52ZWxvY2l0eSl7TXQudXBkYXRlKCgpPT5iLnNldChnKSk7Y29udGludWV9bGV0IEU9ITE7aWYod2luZG93Lk1vdGlvbkhhbmRvZmZBbmltYXRpb24pe2NvbnN0IFA9YnooZSk7aWYoUCl7Y29uc3QgTj13aW5kb3cuTW90aW9uSGFuZG9mZkFuaW1hdGlvbihQLHcsTXQpO04hPT1udWxsJiYoXy5zdGFydFRpbWU9TixFPSEwKX19Q18oZSx3KTtjb25zdCBqPWQ/P2Uuc2hvdWxkUmVkdWNlTW90aW9uO2Iuc3RhcnQoRlQodyxiLGcsaiYmdnouaGFzKHcpP3t0eXBlOiExfTpfLGUsRSkpO2NvbnN0IFQ9Yi5hbmltYXRpb247VCYmbS5wdXNoKFQpfWlmKHMpe2NvbnN0IHc9KCk9Pk10LnVwZGF0ZSgoKT0+e3MmJiRtZShlLHMpfSk7bS5sZW5ndGg/UHJvbWlzZS5hbGwobSkudGhlbih3KTp3KCl9cmV0dXJuIG19ZnVuY3Rpb24gal8oZSx0LG49e30pe2NvbnN0IHI9bXMoZSx0LG4udHlwZT09PSJleGl0Ij9lLnByZXNlbmNlQ29udGV4dD8uY3VzdG9tOnZvaWQgMCk7bGV0e3RyYW5zaXRpb246aT1lLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fHt9fT1yfHx7fTtuLnRyYW5zaXRpb25PdmVycmlkZSYmKGk9bi50cmFuc2l0aW9uT3ZlcnJpZGUpO2NvbnN0IG89cj8oKT0+UHJvbWlzZS5hbGwoeHooZSxyLG4pKTooKT0+UHJvbWlzZS5yZXNvbHZlKCkscz1lLnZhcmlhbnRDaGlsZHJlbiYmZS52YXJpYW50Q2hpbGRyZW4uc2l6ZT8oZj0wKT0+e2NvbnN0e2RlbGF5Q2hpbGRyZW46ZD0wLHN0YWdnZXJDaGlsZHJlbjpwLHN0YWdnZXJEaXJlY3Rpb246bX09aTtyZXR1cm4gVW1lKGUsdCxmLGQscCxtLG4pfTooKT0+UHJvbWlzZS5yZXNvbHZlKCkse3doZW46dX09aTtpZih1KXtjb25zdFtmLGRdPXU9PT0iYmVmb3JlQ2hpbGRyZW4iP1tvLHNdOltzLG9dO3JldHVybiBmKCkudGhlbigoKT0+ZCgpKX1lbHNlIHJldHVybiBQcm9taXNlLmFsbChbbygpLHMobi5kZWxheSldKX1mdW5jdGlvbiBVbWUoZSx0LG49MCxyPTAsaT0wLG89MSxzKXtjb25zdCB1PVtdO2Zvcihjb25zdCBmIG9mIGUudmFyaWFudENoaWxkcmVuKWYubm90aWZ5KCJBbmltYXRpb25TdGFydCIsdCksdS5wdXNoKGpfKGYsdCx7Li4ucyxkZWxheTpuKyh0eXBlb2Ygcj09ImZ1bmN0aW9uIj8wOnIpK3B6KGUudmFyaWFudENoaWxkcmVuLGYscixpLG8pfSkudGhlbigoKT0+Zi5ub3RpZnkoIkFuaW1hdGlvbkNvbXBsZXRlIix0KSkpO3JldHVybiBQcm9taXNlLmFsbCh1KX1mdW5jdGlvbiB6bWUoZSx0LG49e30pe2Uubm90aWZ5KCJBbmltYXRpb25TdGFydCIsdCk7bGV0IHI7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgaT10Lm1hcChvPT5qXyhlLG8sbikpO3I9UHJvbWlzZS5hbGwoaSl9ZWxzZSBpZih0eXBlb2YgdD09InN0cmluZyIpcj1qXyhlLHQsbik7ZWxzZXtjb25zdCBpPXR5cGVvZiB0PT0iZnVuY3Rpb24iP21zKGUsdCxuLmN1c3RvbSk6dDtyPVByb21pc2UuYWxsKHh6KGUsaSxuKSl9cmV0dXJuIHIudGhlbigoKT0+e2Uubm90aWZ5KCJBbmltYXRpb25Db21wbGV0ZSIsdCl9KX1jb25zdCBGbWU9e3Rlc3Q6ZT0+ZT09PSJhdXRvIixwYXJzZTplPT5lfSx3ej1lPT50PT50LnRlc3QoZSksU3o9W0Z1LE5lLENpLHRhLHlwZSxtcGUsRm1lXSxqJD1lPT5Tei5maW5kKHd6KGUpKTtmdW5jdGlvbiBIbWUoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIj9lPT09MDplIT09bnVsbD9lPT09Im5vbmUifHxlPT09IjAifHxOVShlKTohMH1jb25zdCBHbWU9bmV3IFNldChbImJyaWdodG5lc3MiLCJjb250cmFzdCIsInNhdHVyYXRlIiwib3BhY2l0eSJdKTtmdW5jdGlvbiBLbWUoZSl7Y29uc3RbdCxuXT1lLnNsaWNlKDAsLTEpLnNwbGl0KCIoIik7aWYodD09PSJkcm9wLXNoYWRvdyIpcmV0dXJuIGU7Y29uc3Rbcl09bi5tYXRjaChJVCl8fFtdO2lmKCFyKXJldHVybiBlO2NvbnN0IGk9bi5yZXBsYWNlKHIsIiIpO2xldCBvPUdtZS5oYXModCk/MTowO3JldHVybiByIT09biYmKG8qPTEwMCksdCsiKCIrbytpKyIpIn1jb25zdCBXbWU9L1xiKFthLXotXSopXCguKj9cKS9ndSxQXz17Li4uc2ksZ2V0QW5pbWF0YWJsZU5vbmU6ZT0+e2NvbnN0IHQ9ZS5tYXRjaChXbWUpO3JldHVybiB0P3QubWFwKEttZSkuam9pbigiICIpOmV9fSxNXz17Li4uc2ksZ2V0QW5pbWF0YWJsZU5vbmU6ZT0+e2NvbnN0IHQ9c2kucGFyc2UoZSk7cmV0dXJuIHNpLmNyZWF0ZVRyYW5zZm9ybWVyKGUpKHQubWFwKHI9PnR5cGVvZiByPT0ibnVtYmVyIj8wOnR5cGVvZiByPT0ib2JqZWN0Ij97Li4ucixhbHBoYToxfTpyKSl9fSxQJD17Li4uRnUsdHJhbnNmb3JtOk1hdGgucm91bmR9LFltZT17cm90YXRlOnRhLHBhdGhSb3RhdGlvbjp0YSxyb3RhdGVYOnRhLHJvdGF0ZVk6dGEscm90YXRlWjp0YSxzY2FsZTpTcCxzY2FsZVg6U3Asc2NhbGVZOlNwLHNjYWxlWjpTcCxza2V3OnRhLHNrZXdYOnRhLHNrZXdZOnRhLGRpc3RhbmNlOk5lLHRyYW5zbGF0ZVg6TmUsdHJhbnNsYXRlWTpOZSx0cmFuc2xhdGVaOk5lLHg6TmUseTpOZSx6Ok5lLHBlcnNwZWN0aXZlOk5lLHRyYW5zZm9ybVBlcnNwZWN0aXZlOk5lLG9wYWNpdHk6aGQsb3JpZ2luWDp5JCxvcmlnaW5ZOnkkLG9yaWdpblo6TmV9LGR5PXtib3JkZXJXaWR0aDpOZSxib3JkZXJUb3BXaWR0aDpOZSxib3JkZXJSaWdodFdpZHRoOk5lLGJvcmRlckJvdHRvbVdpZHRoOk5lLGJvcmRlckxlZnRXaWR0aDpOZSxib3JkZXJSYWRpdXM6TmUsYm9yZGVyVG9wTGVmdFJhZGl1czpOZSxib3JkZXJUb3BSaWdodFJhZGl1czpOZSxib3JkZXJCb3R0b21SaWdodFJhZGl1czpOZSxib3JkZXJCb3R0b21MZWZ0UmFkaXVzOk5lLHdpZHRoOk5lLG1heFdpZHRoOk5lLGhlaWdodDpOZSxtYXhIZWlnaHQ6TmUsdG9wOk5lLHJpZ2h0Ok5lLGJvdHRvbTpOZSxsZWZ0Ok5lLGluc2V0Ok5lLGluc2V0QmxvY2s6TmUsaW5zZXRCbG9ja1N0YXJ0Ok5lLGluc2V0QmxvY2tFbmQ6TmUsaW5zZXRJbmxpbmU6TmUsaW5zZXRJbmxpbmVTdGFydDpOZSxpbnNldElubGluZUVuZDpOZSxwYWRkaW5nOk5lLHBhZGRpbmdUb3A6TmUscGFkZGluZ1JpZ2h0Ok5lLHBhZGRpbmdCb3R0b206TmUscGFkZGluZ0xlZnQ6TmUscGFkZGluZ0Jsb2NrOk5lLHBhZGRpbmdCbG9ja1N0YXJ0Ok5lLHBhZGRpbmdCbG9ja0VuZDpOZSxwYWRkaW5nSW5saW5lOk5lLHBhZGRpbmdJbmxpbmVTdGFydDpOZSxwYWRkaW5nSW5saW5lRW5kOk5lLG1hcmdpbjpOZSxtYXJnaW5Ub3A6TmUsbWFyZ2luUmlnaHQ6TmUsbWFyZ2luQm90dG9tOk5lLG1hcmdpbkxlZnQ6TmUsbWFyZ2luQmxvY2s6TmUsbWFyZ2luQmxvY2tTdGFydDpOZSxtYXJnaW5CbG9ja0VuZDpOZSxtYXJnaW5JbmxpbmU6TmUsbWFyZ2luSW5saW5lU3RhcnQ6TmUsbWFyZ2luSW5saW5lRW5kOk5lLGZvbnRTaXplOk5lLGJhY2tncm91bmRQb3NpdGlvblg6TmUsYmFja2dyb3VuZFBvc2l0aW9uWTpOZSwuLi5ZbWUsekluZGV4OlAkLGZpbGxPcGFjaXR5OmhkLHN0cm9rZU9wYWNpdHk6aGQsbnVtT2N0YXZlczpQJH0sWG1lPXsuLi5keSxjb2xvcjphbixiYWNrZ3JvdW5kQ29sb3I6YW4sb3V0bGluZUNvbG9yOmFuLGZpbGw6YW4sc3Ryb2tlOmFuLGJvcmRlckNvbG9yOmFuLGJvcmRlclRvcENvbG9yOmFuLGJvcmRlclJpZ2h0Q29sb3I6YW4sYm9yZGVyQm90dG9tQ29sb3I6YW4sYm9yZGVyTGVmdENvbG9yOmFuLGZpbHRlcjpQXyxXZWJraXRGaWx0ZXI6UF8sbWFzazpNXyxXZWJraXRNYXNrOk1ffSxBej1lPT5YbWVbZV0sWm1lPW5ldyBTZXQoW1BfLE1fXSk7ZnVuY3Rpb24gX3ooZSx0KXtsZXQgbj1BeihlKTtyZXR1cm4gWm1lLmhhcyhuKXx8KG49c2kpLG4uZ2V0QW5pbWF0YWJsZU5vbmU/bi5nZXRBbmltYXRhYmxlTm9uZSh0KTp2b2lkIDB9Y29uc3QgUW1lPW5ldyBTZXQoWyJhdXRvIiwibm9uZSIsIjAiXSk7ZnVuY3Rpb24gSm1lKGUsdCxuKXtsZXQgcj0wLGk7Zm9yKDtyPGUubGVuZ3RoJiYhaTspe2NvbnN0IG89ZVtyXTt0eXBlb2Ygbz09InN0cmluZyImJiFRbWUuaGFzKG8pJiZfdShvKS52YWx1ZXMubGVuZ3RoJiYoaT1lW3JdKSxyKyt9aWYoaSYmbilmb3IoY29uc3QgbyBvZiB0KWVbb109X3oobixpKX1jbGFzcyBleWUgZXh0ZW5kcyBVVHtjb25zdHJ1Y3Rvcih0LG4scixpLG8pe3N1cGVyKHQsbixyLGksbywhMCl9cmVhZEtleWZyYW1lcygpe2NvbnN0e3VucmVzb2x2ZWRLZXlmcmFtZXM6dCxlbGVtZW50Om4sbmFtZTpyfT10aGlzO2lmKCFufHwhbi5jdXJyZW50KXJldHVybjtzdXBlci5yZWFkS2V5ZnJhbWVzKCk7Zm9yKGxldCBwPTA7cDx0Lmxlbmd0aDtwKyspe2xldCBtPXRbcF07aWYodHlwZW9mIG09PSJzdHJpbmciJiYobT1tLnRyaW0oKSxMVChtKSkpe2NvbnN0IHk9eXoobSxuLmN1cnJlbnQpO3khPT12b2lkIDAmJih0W3BdPXkpLHA9PT10Lmxlbmd0aC0xJiYodGhpcy5maW5hbEtleWZyYW1lPW0pfX1pZih0aGlzLnJlc29sdmVOb25lS2V5ZnJhbWVzKCksIXZ6LmhhcyhyKXx8dC5sZW5ndGghPT0yKXJldHVybjtjb25zdFtpLG9dPXQscz1qJChpKSx1PWokKG8pLGY9bSQoaSksZD1tJChvKTtpZihmIT09ZCYmZW9bcl0pe3RoaXMubmVlZHNNZWFzdXJlbWVudD0hMDtyZXR1cm59aWYocyE9PXUpaWYoXyQocykmJl8kKHUpKWZvcihsZXQgcD0wO3A8dC5sZW5ndGg7cCsrKXtjb25zdCBtPXRbcF07dHlwZW9mIG09PSJzdHJpbmciJiYodFtwXT1wYXJzZUZsb2F0KG0pKX1lbHNlIGVvW3JdJiYodGhpcy5uZWVkc01lYXN1cmVtZW50PSEwKX1yZXNvbHZlTm9uZUtleWZyYW1lcygpe2NvbnN0e3VucmVzb2x2ZWRLZXlmcmFtZXM6dCxuYW1lOm59PXRoaXMscj1bXTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKykodFtpXT09PW51bGx8fEhtZSh0W2ldKSkmJnIucHVzaChpKTtyLmxlbmd0aCYmSm1lKHQscixuKX1tZWFzdXJlSW5pdGlhbFN0YXRlKCl7Y29uc3R7ZWxlbWVudDp0LHVucmVzb2x2ZWRLZXlmcmFtZXM6bixuYW1lOnJ9PXRoaXM7aWYoIXR8fCF0LmN1cnJlbnQpcmV0dXJuO3I9PT0iaGVpZ2h0IiYmKHRoaXMuc3VzcGVuZGVkU2Nyb2xsWT13aW5kb3cucGFnZVlPZmZzZXQpLHRoaXMubWVhc3VyZWRPcmlnaW49ZW9bcl0odC5tZWFzdXJlVmlld3BvcnRCb3goKSx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0LmN1cnJlbnQpKSxuWzBdPXRoaXMubWVhc3VyZWRPcmlnaW47Y29uc3QgaT1uW24ubGVuZ3RoLTFdO2khPT12b2lkIDAmJnQuZ2V0VmFsdWUocixpKS5qdW1wKGksITEpfW1lYXN1cmVFbmRTdGF0ZSgpe2NvbnN0e2VsZW1lbnQ6dCxuYW1lOm4sdW5yZXNvbHZlZEtleWZyYW1lczpyfT10aGlzO2lmKCF0fHwhdC5jdXJyZW50KXJldHVybjtjb25zdCBpPXQuZ2V0VmFsdWUobik7aSYmaS5qdW1wKHRoaXMubWVhc3VyZWRPcmlnaW4sITEpO2NvbnN0IG89ci5sZW5ndGgtMSxzPXJbb107cltvXT1lb1tuXSh0Lm1lYXN1cmVWaWV3cG9ydEJveCgpLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQuY3VycmVudCkpLHMhPT1udWxsJiZ0aGlzLmZpbmFsS2V5ZnJhbWU9PT12b2lkIDAmJih0aGlzLmZpbmFsS2V5ZnJhbWU9cyksdGhpcy5yZW1vdmVkVHJhbnNmb3Jtcz8ubGVuZ3RoJiZ0aGlzLnJlbW92ZWRUcmFuc2Zvcm1zLmZvckVhY2goKFt1LGZdKT0+e3QuZ2V0VmFsdWUodSkuc2V0KGYpfSksdGhpcy5yZXNvbHZlTm9uZUtleWZyYW1lcygpfX1jb25zdCBLVD1bImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyJdO2Z1bmN0aW9uIE96KGUsdCxuKXtpZihlPT1udWxsKXJldHVybltdO2lmKGUgaW5zdGFuY2VvZiBFdmVudFRhcmdldClyZXR1cm5bZV07aWYodHlwZW9mIGU9PSJzdHJpbmciKXtsZXQgcj1kb2N1bWVudDtjb25zdCBpPW4/LltlXT8/ci5xdWVyeVNlbGVjdG9yQWxsKGUpO3JldHVybiBpP0FycmF5LmZyb20oaSk6W119cmV0dXJuIEFycmF5LmZyb20oZSkuZmlsdGVyKHI9PnIhPW51bGwpfWNvbnN0IFJfPShlLHQpPT50JiZ0eXBlb2YgZT09Im51bWJlciI/dC50cmFuc2Zvcm0oZSk6ZTtmdW5jdGlvbiBxcChlKXtyZXR1cm4gUlUoZSkmJiJvZmZzZXRIZWlnaHQiaW4gZSYmISgib3duZXJTVkdFbGVtZW50ImluIGUpfWNvbnN0e3NjaGVkdWxlOldUfT1HVShxdWV1ZU1pY3JvdGFzaywhMSksSnI9e3g6ITEseTohMX07ZnVuY3Rpb24gVHooKXtyZXR1cm4gSnIueHx8SnIueX1mdW5jdGlvbiB0eWUoZSl7cmV0dXJuIGU9PT0ieCJ8fGU9PT0ieSI/SnJbZV0/bnVsbDooSnJbZV09ITAsKCk9PntKcltlXT0hMX0pOkpyLnh8fEpyLnk/bnVsbDooSnIueD1Kci55PSEwLCgpPT57SnIueD1Kci55PSExfSl9ZnVuY3Rpb24gRXooZSx0KXtjb25zdCBuPU96KGUpLHI9bmV3IEFib3J0Q29udHJvbGxlcixpPXtwYXNzaXZlOiEwLC4uLnQsc2lnbmFsOnIuc2lnbmFsfTtyZXR1cm5bbixpLCgpPT5yLmFib3J0KCldfWZ1bmN0aW9uIG55ZShlKXtyZXR1cm4hKGUucG9pbnRlclR5cGU9PT0idG91Y2gifHxUeigpKX1mdW5jdGlvbiByeWUoZSx0LG49e30pe2NvbnN0W3IsaSxvXT1FeihlLG4pO3JldHVybiByLmZvckVhY2gocz0+e2xldCB1PSExLGY9ITEsZDtjb25zdCBwPSgpPT57cy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHcpfSxtPWc9PntkJiYoZChnKSxkPXZvaWQgMCkscCgpfSx5PWc9Pnt1PSExLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHkpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIix5KSxmJiYoZj0hMSxtKGcpKX0seD0oKT0+e3U9ITAsd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIseSxpKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIseSxpKX0sdz1nPT57aWYoZy5wb2ludGVyVHlwZSE9PSJ0b3VjaCIpe2lmKHUpe2Y9ITA7cmV0dXJufW0oZyl9fSxiPWc9PntpZighbnllKGcpKXJldHVybjtmPSExO2NvbnN0IF89dChzLGcpO3R5cGVvZiBfPT0iZnVuY3Rpb24iJiYoZD1fLHMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIix3LGkpKX07cy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZW50ZXIiLGIsaSkscy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIseCxpKX0pLG99Y29uc3QgQ3o9KGUsdCk9PnQ/ZT09PXQ/ITA6Q3ooZSx0LnBhcmVudEVsZW1lbnQpOiExLFlUPWU9PmUucG9pbnRlclR5cGU9PT0ibW91c2UiP3R5cGVvZiBlLmJ1dHRvbiE9Im51bWJlciJ8fGUuYnV0dG9uPD0wOmUuaXNQcmltYXJ5IT09ITEsaXllPW5ldyBTZXQoWyJCVVRUT04iLCJJTlBVVCIsIlNFTEVDVCIsIlRFWFRBUkVBIiwiQSJdKTtmdW5jdGlvbiBheWUoZSl7cmV0dXJuIGl5ZS5oYXMoZS50YWdOYW1lKXx8ZS5pc0NvbnRlbnRFZGl0YWJsZT09PSEwfWNvbnN0IG95ZT1uZXcgU2V0KFsiSU5QVVQiLCJTRUxFQ1QiLCJURVhUQVJFQSJdKTtmdW5jdGlvbiBzeWUoZSl7cmV0dXJuIG95ZS5oYXMoZS50YWdOYW1lKXx8ZS5pc0NvbnRlbnRFZGl0YWJsZT09PSEwfWNvbnN0IFVwPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIE0kKGUpe3JldHVybiB0PT57dC5rZXk9PT0iRW50ZXIiJiZlKHQpfX1mdW5jdGlvbiBoUyhlLHQpe2UuZGlzcGF0Y2hFdmVudChuZXcgUG9pbnRlckV2ZW50KCJwb2ludGVyIit0LHtpc1ByaW1hcnk6ITAsYnViYmxlczohMH0pKX1jb25zdCBseWU9KGUsdCk9Pntjb25zdCBuPWUuY3VycmVudFRhcmdldDtpZighbilyZXR1cm47Y29uc3Qgcj1NJCgoKT0+e2lmKFVwLmhhcyhuKSlyZXR1cm47aFMobiwiZG93biIpO2NvbnN0IGk9TSQoKCk9PntoUyhuLCJ1cCIpfSksbz0oKT0+aFMobiwiY2FuY2VsIik7bi5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsaSx0KSxuLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLG8sdCl9KTtuLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHIsdCksbi5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+bi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixyKSx0KX07ZnVuY3Rpb24gUiQoZSl7cmV0dXJuIFlUKGUpJiYhVHooKX1jb25zdCBOJD1uZXcgV2Vha1NldDtmdW5jdGlvbiB1eWUoZSx0LG49e30pe2NvbnN0W3IsaSxvXT1FeihlLG4pLHM9dT0+e2NvbnN0IGY9dS5jdXJyZW50VGFyZ2V0O2lmKCFSJCh1KXx8TiQuaGFzKHUpKXJldHVybjtVcC5hZGQoZiksbi5zdG9wUHJvcGFnYXRpb24mJk4kLmFkZCh1KTtjb25zdCBkPXQoZix1KSxwPXsuLi5pLGNhcHR1cmU6ITB9LG09KHcsYik9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix5LHApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIix4LHApLFVwLmhhcyhmKSYmVXAuZGVsZXRlKGYpLFIkKHcpJiZ0eXBlb2YgZD09ImZ1bmN0aW9uIiYmZCh3LHtzdWNjZXNzOmJ9KX0seT13PT57bSh3LGY9PT13aW5kb3d8fGY9PT1kb2N1bWVudHx8bi51c2VHbG9iYWxUYXJnZXR8fEN6KGYsdy50YXJnZXQpKX0seD13PT57bSh3LCExKX07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIseSxwKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIseCxwKX07cmV0dXJuIHIuZm9yRWFjaCh1PT57KG4udXNlR2xvYmFsVGFyZ2V0P3dpbmRvdzp1KS5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIscyxpKSxxcCh1KSYmKHUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLGQ9Pmx5ZShkLGkpKSwhYXllKHUpJiYhdS5oYXNBdHRyaWJ1dGUoInRhYmluZGV4IikmJih1LnRhYkluZGV4PTApKX0pLG99ZnVuY3Rpb24gWFQoZSl7cmV0dXJuIFJVKGUpJiYib3duZXJTVkdFbGVtZW50ImluIGV9Y29uc3QgenA9bmV3IFdlYWtNYXA7bGV0IEZwO2NvbnN0IGp6PShlLHQsbik9PihyLGkpPT5pJiZpWzBdP2lbMF1bZSsiU2l6ZSJdOlhUKHIpJiYiZ2V0QkJveCJpbiByP3IuZ2V0QkJveCgpW3RdOnJbbl0sY3llPWp6KCJpbmxpbmUiLCJ3aWR0aCIsIm9mZnNldFdpZHRoIiksZnllPWp6KCJibG9jayIsImhlaWdodCIsIm9mZnNldEhlaWdodCIpO2Z1bmN0aW9uIGR5ZSh7dGFyZ2V0OmUsYm9yZGVyQm94U2l6ZTp0fSl7enAuZ2V0KGUpPy5mb3JFYWNoKG49PntuKGUse2dldCB3aWR0aCgpe3JldHVybiBjeWUoZSx0KX0sZ2V0IGhlaWdodCgpe3JldHVybiBmeWUoZSx0KX19KX0pfWZ1bmN0aW9uIGh5ZShlKXtlLmZvckVhY2goZHllKX1mdW5jdGlvbiBweWUoKXt0eXBlb2YgUmVzaXplT2JzZXJ2ZXI+InUifHwoRnA9bmV3IFJlc2l6ZU9ic2VydmVyKGh5ZSkpfWZ1bmN0aW9uIG15ZShlLHQpe0ZwfHxweWUoKTtjb25zdCBuPU96KGUpO3JldHVybiBuLmZvckVhY2gocj0+e2xldCBpPXpwLmdldChyKTtpfHwoaT1uZXcgU2V0LHpwLnNldChyLGkpKSxpLmFkZCh0KSxGcD8ub2JzZXJ2ZShyKX0pLCgpPT57bi5mb3JFYWNoKHI9Pntjb25zdCBpPXpwLmdldChyKTtpPy5kZWxldGUodCksaT8uc2l6ZXx8RnA/LnVub2JzZXJ2ZShyKX0pfX1jb25zdCBIcD1uZXcgU2V0O2xldCBJbDtmdW5jdGlvbiB5eWUoKXtJbD0oKT0+e2NvbnN0IGU9e2dldCB3aWR0aCgpe3JldHVybiB3aW5kb3cuaW5uZXJXaWR0aH0sZ2V0IGhlaWdodCgpe3JldHVybiB3aW5kb3cuaW5uZXJIZWlnaHR9fTtIcC5mb3JFYWNoKHQ9PnQoZSkpfSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixJbCl9ZnVuY3Rpb24gdnllKGUpe3JldHVybiBIcC5hZGQoZSksSWx8fHl5ZSgpLCgpPT57SHAuZGVsZXRlKGUpLCFIcC5zaXplJiZ0eXBlb2YgSWw9PSJmdW5jdGlvbiImJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixJbCksSWw9dm9pZCAwKX19ZnVuY3Rpb24gayQoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/dnllKGUpOm15ZShlLHQpfWZ1bmN0aW9uIGd5ZShlKXtyZXR1cm4gWFQoZSkmJmUudGFnTmFtZT09PSJzdmcifWNvbnN0IGJ5ZT1bLi4uU3osYW4sc2ldLHh5ZT1lPT5ieWUuZmluZCh3eihlKSksRCQ9KCk9Pih7dHJhbnNsYXRlOjAsc2NhbGU6MSxvcmlnaW46MCxvcmlnaW5Qb2ludDowfSksJGw9KCk9Pih7eDpEJCgpLHk6RCQoKX0pLEwkPSgpPT4oe21pbjowLG1heDowfSkscG49KCk9Pih7eDpMJCgpLHk6TCQoKX0pLHd5ZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBBdihlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0IiYmdHlwZW9mIGUuc3RhcnQ9PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gcGQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nInx8QXJyYXkuaXNBcnJheShlKX1jb25zdCBaVD1bImFuaW1hdGUiLCJ3aGlsZUluVmlldyIsIndoaWxlRm9jdXMiLCJ3aGlsZUhvdmVyIiwid2hpbGVUYXAiLCJ3aGlsZURyYWciLCJleGl0Il0sUVQ9WyJpbml0aWFsIiwuLi5aVF07ZnVuY3Rpb24gX3YoZSl7cmV0dXJuIEF2KGUuYW5pbWF0ZSl8fFFULnNvbWUodD0+cGQoZVt0XSkpfWZ1bmN0aW9uIFB6KGUpe3JldHVybiEhKF92KGUpfHxlLnZhcmlhbnRzKX1mdW5jdGlvbiBTeWUoZSx0LG4pe2Zvcihjb25zdCByIGluIHQpe2NvbnN0IGk9dFtyXSxvPW5bcl07aWYoRG4oaSkpZS5hZGRWYWx1ZShyLGkpO2Vsc2UgaWYoRG4obykpZS5hZGRWYWx1ZShyLE91KGkse293bmVyOmV9KSk7ZWxzZSBpZihvIT09aSlpZihlLmhhc1ZhbHVlKHIpKXtjb25zdCBzPWUuZ2V0VmFsdWUocik7cy5saXZlU3R5bGU9PT0hMD9zLmp1bXAoaSk6cy5oYXNBbmltYXRlZHx8cy5zZXQoaSl9ZWxzZXtjb25zdCBzPWUuZ2V0U3RhdGljVmFsdWUocik7ZS5hZGRWYWx1ZShyLE91KHMhPT12b2lkIDA/czppLHtvd25lcjplfSkpfX1mb3IoY29uc3QgciBpbiBuKXRbcl09PT12b2lkIDAmJmUucmVtb3ZlVmFsdWUocik7cmV0dXJuIHR9Y29uc3QgTl89e2N1cnJlbnQ6bnVsbH0sTXo9e2N1cnJlbnQ6ITF9LEF5ZT10eXBlb2Ygd2luZG93PCJ1IjtmdW5jdGlvbiBfeWUoKXtpZihNei5jdXJyZW50PSEwLCEhQXllKWlmKHdpbmRvdy5tYXRjaE1lZGlhKXtjb25zdCBlPXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikiKSx0PSgpPT5OXy5jdXJyZW50PWUubWF0Y2hlcztlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdCksdCgpfWVsc2UgTl8uY3VycmVudD0hMX1jb25zdCBJJD1bIkFuaW1hdGlvblN0YXJ0IiwiQW5pbWF0aW9uQ29tcGxldGUiLCJVcGRhdGUiLCJCZWZvcmVMYXlvdXRNZWFzdXJlIiwiTGF5b3V0TWVhc3VyZSIsIkxheW91dEFuaW1hdGlvblN0YXJ0IiwiTGF5b3V0QW5pbWF0aW9uQ29tcGxldGUiXTtsZXQgaHk9e307ZnVuY3Rpb24gUnooZSl7aHk9ZX1mdW5jdGlvbiBPeWUoKXtyZXR1cm4gaHl9Y2xhc3MgVHlle3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wcyh0LG4scil7cmV0dXJue319Y29uc3RydWN0b3Ioe3BhcmVudDp0LHByb3BzOm4scHJlc2VuY2VDb250ZXh0OnIscmVkdWNlZE1vdGlvbkNvbmZpZzppLHNraXBBbmltYXRpb25zOm8sYmxvY2tJbml0aWFsQW5pbWF0aW9uOnMsdmlzdWFsU3RhdGU6dX0sZj17fSl7dGhpcy5jdXJyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1uZXcgU2V0LHRoaXMuaXNWYXJpYW50Tm9kZT0hMSx0aGlzLmlzQ29udHJvbGxpbmdWYXJpYW50cz0hMSx0aGlzLnNob3VsZFJlZHVjZU1vdGlvbj1udWxsLHRoaXMuc2hvdWxkU2tpcEFuaW1hdGlvbnM9ITEsdGhpcy52YWx1ZXM9bmV3IE1hcCx0aGlzLktleWZyYW1lUmVzb2x2ZXI9VVQsdGhpcy5mZWF0dXJlcz17fSx0aGlzLnZhbHVlU3Vic2NyaXB0aW9ucz1uZXcgTWFwLHRoaXMucHJldk1vdGlvblZhbHVlcz17fSx0aGlzLmhhc0JlZW5Nb3VudGVkPSExLHRoaXMuZXZlbnRzPXt9LHRoaXMucHJvcEV2ZW50U3Vic2NyaXB0aW9ucz17fSx0aGlzLm5vdGlmeVVwZGF0ZT0oKT0+dGhpcy5ub3RpZnkoIlVwZGF0ZSIsdGhpcy5sYXRlc3RWYWx1ZXMpLHRoaXMucmVuZGVyPSgpPT57dGhpcy5jdXJyZW50JiYodGhpcy50cmlnZ2VyQnVpbGQoKSx0aGlzLnJlbmRlckluc3RhbmNlKHRoaXMuY3VycmVudCx0aGlzLnJlbmRlclN0YXRlLHRoaXMucHJvcHMuc3R5bGUsdGhpcy5wcm9qZWN0aW9uKSl9LHRoaXMucmVuZGVyU2NoZWR1bGVkQXQ9MCx0aGlzLnNjaGVkdWxlUmVuZGVyPSgpPT57Y29uc3QgeD1Xbi5ub3coKTt0aGlzLnJlbmRlclNjaGVkdWxlZEF0PHgmJih0aGlzLnJlbmRlclNjaGVkdWxlZEF0PXgsTXQucmVuZGVyKHRoaXMucmVuZGVyLCExLCEwKSl9O2NvbnN0e2xhdGVzdFZhbHVlczpkLHJlbmRlclN0YXRlOnB9PXU7dGhpcy5sYXRlc3RWYWx1ZXM9ZCx0aGlzLmJhc2VUYXJnZXQ9ey4uLmR9LHRoaXMuaW5pdGlhbFZhbHVlcz1uLmluaXRpYWw/ey4uLmR9Ont9LHRoaXMucmVuZGVyU3RhdGU9cCx0aGlzLnBhcmVudD10LHRoaXMucHJvcHM9bix0aGlzLnByZXNlbmNlQ29udGV4dD1yLHRoaXMuZGVwdGg9dD90LmRlcHRoKzE6MCx0aGlzLnJlZHVjZWRNb3Rpb25Db25maWc9aSx0aGlzLnNraXBBbmltYXRpb25zQ29uZmlnPW8sdGhpcy5vcHRpb25zPWYsdGhpcy5ibG9ja0luaXRpYWxBbmltYXRpb249ISFzLHRoaXMuaXNDb250cm9sbGluZ1ZhcmlhbnRzPV92KG4pLHRoaXMuaXNWYXJpYW50Tm9kZT1QeihuKSx0aGlzLmlzVmFyaWFudE5vZGUmJih0aGlzLnZhcmlhbnRDaGlsZHJlbj1uZXcgU2V0KSx0aGlzLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQ9ISEodCYmdC5jdXJyZW50KTtjb25zdHt3aWxsQ2hhbmdlOm0sLi4ueX09dGhpcy5zY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHMobix7fSx0aGlzKTtmb3IoY29uc3QgeCBpbiB5KXtjb25zdCB3PXlbeF07ZFt4XSE9PXZvaWQgMCYmRG4odykmJncuc2V0KGRbeF0pfX1tb3VudCh0KXtpZih0aGlzLmhhc0JlZW5Nb3VudGVkKWZvcihjb25zdCBuIGluIHRoaXMuaW5pdGlhbFZhbHVlcyl0aGlzLnZhbHVlcy5nZXQobik/Lmp1bXAodGhpcy5pbml0aWFsVmFsdWVzW25dKSx0aGlzLmxhdGVzdFZhbHVlc1tuXT10aGlzLmluaXRpYWxWYWx1ZXNbbl07dGhpcy5jdXJyZW50PXQsd3llLnNldCh0LHRoaXMpLHRoaXMucHJvamVjdGlvbiYmIXRoaXMucHJvamVjdGlvbi5pbnN0YW5jZSYmdGhpcy5wcm9qZWN0aW9uLm1vdW50KHQpLHRoaXMucGFyZW50JiZ0aGlzLmlzVmFyaWFudE5vZGUmJiF0aGlzLmlzQ29udHJvbGxpbmdWYXJpYW50cyYmKHRoaXMucmVtb3ZlRnJvbVZhcmlhbnRUcmVlPXRoaXMucGFyZW50LmFkZFZhcmlhbnRDaGlsZCh0aGlzKSksdGhpcy52YWx1ZXMuZm9yRWFjaCgobixyKT0+dGhpcy5iaW5kVG9Nb3Rpb25WYWx1ZShyLG4pKSx0aGlzLnJlZHVjZWRNb3Rpb25Db25maWc9PT0ibmV2ZXIiP3RoaXMuc2hvdWxkUmVkdWNlTW90aW9uPSExOnRoaXMucmVkdWNlZE1vdGlvbkNvbmZpZz09PSJhbHdheXMiP3RoaXMuc2hvdWxkUmVkdWNlTW90aW9uPSEwOihNei5jdXJyZW50fHxfeWUoKSx0aGlzLnNob3VsZFJlZHVjZU1vdGlvbj1OXy5jdXJyZW50KSx0aGlzLnNob3VsZFNraXBBbmltYXRpb25zPXRoaXMuc2tpcEFuaW1hdGlvbnNDb25maWc/PyExLHRoaXMucGFyZW50Py5hZGRDaGlsZCh0aGlzKSx0aGlzLnVwZGF0ZSh0aGlzLnByb3BzLHRoaXMucHJlc2VuY2VDb250ZXh0KSx0aGlzLmhhc0JlZW5Nb3VudGVkPSEwfXVubW91bnQoKXt0aGlzLnByb2plY3Rpb24mJnRoaXMucHJvamVjdGlvbi51bm1vdW50KCksY28odGhpcy5ub3RpZnlVcGRhdGUpLGNvKHRoaXMucmVuZGVyKSx0aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQoKSksdGhpcy52YWx1ZVN1YnNjcmlwdGlvbnMuY2xlYXIoKSx0aGlzLnJlbW92ZUZyb21WYXJpYW50VHJlZSYmdGhpcy5yZW1vdmVGcm9tVmFyaWFudFRyZWUoKSx0aGlzLnBhcmVudD8ucmVtb3ZlQ2hpbGQodGhpcyk7Zm9yKGNvbnN0IHQgaW4gdGhpcy5ldmVudHMpdGhpcy5ldmVudHNbdF0uY2xlYXIoKTtmb3IoY29uc3QgdCBpbiB0aGlzLmZlYXR1cmVzKXtjb25zdCBuPXRoaXMuZmVhdHVyZXNbdF07biYmKG4udW5tb3VudCgpLG4uaXNNb3VudGVkPSExKX10aGlzLmN1cnJlbnQ9bnVsbH1hZGRDaGlsZCh0KXt0aGlzLmNoaWxkcmVuLmFkZCh0KSx0aGlzLmVudGVyaW5nQ2hpbGRyZW4/Pyh0aGlzLmVudGVyaW5nQ2hpbGRyZW49bmV3IFNldCksdGhpcy5lbnRlcmluZ0NoaWxkcmVuLmFkZCh0KX1yZW1vdmVDaGlsZCh0KXt0aGlzLmNoaWxkcmVuLmRlbGV0ZSh0KSx0aGlzLmVudGVyaW5nQ2hpbGRyZW4mJnRoaXMuZW50ZXJpbmdDaGlsZHJlbi5kZWxldGUodCl9YmluZFRvTW90aW9uVmFsdWUodCxuKXtpZih0aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5oYXModCkmJnRoaXMudmFsdWVTdWJzY3JpcHRpb25zLmdldCh0KSgpLG4uYWNjZWxlcmF0ZSYmaHouaGFzKHQpJiZ0aGlzLmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Y29uc3R7ZmFjdG9yeTpzLGtleWZyYW1lczp1LHRpbWVzOmYsZWFzZTpkLGR1cmF0aW9uOnB9PW4uYWNjZWxlcmF0ZSxtPW5ldyBmeih7ZWxlbWVudDp0aGlzLmN1cnJlbnQsbmFtZTp0LGtleWZyYW1lczp1LHRpbWVzOmYsZWFzZTpkLGR1cmF0aW9uOlNyKHApfSkseT1zKG0pO3RoaXMudmFsdWVTdWJzY3JpcHRpb25zLnNldCh0LCgpPT57eSgpLG0uY2FuY2VsKCl9KTtyZXR1cm59Y29uc3Qgcj1HdS5oYXModCk7ciYmdGhpcy5vbkJpbmRUcmFuc2Zvcm0mJnRoaXMub25CaW5kVHJhbnNmb3JtKCk7Y29uc3QgaT1uLm9uKCJjaGFuZ2UiLHM9Pnt0aGlzLmxhdGVzdFZhbHVlc1t0XT1zLHRoaXMucHJvcHMub25VcGRhdGUmJk10LnByZVJlbmRlcih0aGlzLm5vdGlmeVVwZGF0ZSksciYmdGhpcy5wcm9qZWN0aW9uJiYodGhpcy5wcm9qZWN0aW9uLmlzVHJhbnNmb3JtRGlydHk9ITApLHRoaXMuc2NoZWR1bGVSZW5kZXIoKX0pO2xldCBvO3R5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuTW90aW9uQ2hlY2tBcHBlYXJTeW5jJiYobz13aW5kb3cuTW90aW9uQ2hlY2tBcHBlYXJTeW5jKHRoaXMsdCxuKSksdGhpcy52YWx1ZVN1YnNjcmlwdGlvbnMuc2V0KHQsKCk9PntpKCksbyYmbygpfSl9c29ydE5vZGVQb3NpdGlvbih0KXtyZXR1cm4hdGhpcy5jdXJyZW50fHwhdGhpcy5zb3J0SW5zdGFuY2VOb2RlUG9zaXRpb258fHRoaXMudHlwZSE9PXQudHlwZT8wOnRoaXMuc29ydEluc3RhbmNlTm9kZVBvc2l0aW9uKHRoaXMuY3VycmVudCx0LmN1cnJlbnQpfXVwZGF0ZUZlYXR1cmVzKCl7bGV0IHQ9ImFuaW1hdGlvbiI7Zm9yKHQgaW4gaHkpe2NvbnN0IG49aHlbdF07aWYoIW4pY29udGludWU7Y29uc3R7aXNFbmFibGVkOnIsRmVhdHVyZTppfT1uO2lmKCF0aGlzLmZlYXR1cmVzW3RdJiZpJiZyKHRoaXMucHJvcHMpJiYodGhpcy5mZWF0dXJlc1t0XT1uZXcgaSh0aGlzKSksdGhpcy5mZWF0dXJlc1t0XSl7Y29uc3Qgbz10aGlzLmZlYXR1cmVzW3RdO28uaXNNb3VudGVkP28udXBkYXRlKCk6KG8ubW91bnQoKSxvLmlzTW91bnRlZD0hMCl9fX10cmlnZ2VyQnVpbGQoKXt0aGlzLmJ1aWxkKHRoaXMucmVuZGVyU3RhdGUsdGhpcy5sYXRlc3RWYWx1ZXMsdGhpcy5wcm9wcyl9bWVhc3VyZVZpZXdwb3J0Qm94KCl7cmV0dXJuIHRoaXMuY3VycmVudD90aGlzLm1lYXN1cmVJbnN0YW5jZVZpZXdwb3J0Qm94KHRoaXMuY3VycmVudCx0aGlzLnByb3BzKTpwbigpfWdldFN0YXRpY1ZhbHVlKHQpe3JldHVybiB0aGlzLmxhdGVzdFZhbHVlc1t0XX1zZXRTdGF0aWNWYWx1ZSh0LG4pe3RoaXMubGF0ZXN0VmFsdWVzW3RdPW59dXBkYXRlKHQsbil7KHQudHJhbnNmb3JtVGVtcGxhdGV8fHRoaXMucHJvcHMudHJhbnNmb3JtVGVtcGxhdGUpJiZ0aGlzLnNjaGVkdWxlUmVuZGVyKCksdGhpcy5wcmV2UHJvcHM9dGhpcy5wcm9wcyx0aGlzLnByb3BzPXQsdGhpcy5wcmV2UHJlc2VuY2VDb250ZXh0PXRoaXMucHJlc2VuY2VDb250ZXh0LHRoaXMucHJlc2VuY2VDb250ZXh0PW47Zm9yKGxldCByPTA7cjxJJC5sZW5ndGg7cisrKXtjb25zdCBpPUkkW3JdO3RoaXMucHJvcEV2ZW50U3Vic2NyaXB0aW9uc1tpXSYmKHRoaXMucHJvcEV2ZW50U3Vic2NyaXB0aW9uc1tpXSgpLGRlbGV0ZSB0aGlzLnByb3BFdmVudFN1YnNjcmlwdGlvbnNbaV0pO2NvbnN0IG89Im9uIitpLHM9dFtvXTtzJiYodGhpcy5wcm9wRXZlbnRTdWJzY3JpcHRpb25zW2ldPXRoaXMub24oaSxzKSl9dGhpcy5wcmV2TW90aW9uVmFsdWVzPVN5ZSh0aGlzLHRoaXMuc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzKHQsdGhpcy5wcmV2UHJvcHN8fHt9LHRoaXMpLHRoaXMucHJldk1vdGlvblZhbHVlcyksdGhpcy5oYW5kbGVDaGlsZE1vdGlvblZhbHVlJiZ0aGlzLmhhbmRsZUNoaWxkTW90aW9uVmFsdWUoKX1nZXRQcm9wcygpe3JldHVybiB0aGlzLnByb3BzfWdldFZhcmlhbnQodCl7cmV0dXJuIHRoaXMucHJvcHMudmFyaWFudHM/dGhpcy5wcm9wcy52YXJpYW50c1t0XTp2b2lkIDB9Z2V0RGVmYXVsdFRyYW5zaXRpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy50cmFuc2l0aW9ufWdldFRyYW5zZm9ybVBhZ2VQb2ludCgpe3JldHVybiB0aGlzLnByb3BzLnRyYW5zZm9ybVBhZ2VQb2ludH1nZXRDbG9zZXN0VmFyaWFudE5vZGUoKXtyZXR1cm4gdGhpcy5pc1ZhcmlhbnROb2RlP3RoaXM6dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuZ2V0Q2xvc2VzdFZhcmlhbnROb2RlKCk6dm9pZCAwfWFkZFZhcmlhbnRDaGlsZCh0KXtjb25zdCBuPXRoaXMuZ2V0Q2xvc2VzdFZhcmlhbnROb2RlKCk7aWYobilyZXR1cm4gbi52YXJpYW50Q2hpbGRyZW4mJm4udmFyaWFudENoaWxkcmVuLmFkZCh0KSwoKT0+bi52YXJpYW50Q2hpbGRyZW4uZGVsZXRlKHQpfWFkZFZhbHVlKHQsbil7Y29uc3Qgcj10aGlzLnZhbHVlcy5nZXQodCk7biE9PXImJihyJiZ0aGlzLnJlbW92ZVZhbHVlKHQpLHRoaXMuYmluZFRvTW90aW9uVmFsdWUodCxuKSx0aGlzLnZhbHVlcy5zZXQodCxuKSx0aGlzLmxhdGVzdFZhbHVlc1t0XT1uLmdldCgpKX1yZW1vdmVWYWx1ZSh0KXt0aGlzLnZhbHVlcy5kZWxldGUodCk7Y29uc3Qgbj10aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5nZXQodCk7biYmKG4oKSx0aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5kZWxldGUodCkpLGRlbGV0ZSB0aGlzLmxhdGVzdFZhbHVlc1t0XSx0aGlzLnJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlKHQsdGhpcy5yZW5kZXJTdGF0ZSl9aGFzVmFsdWUodCl7cmV0dXJuIHRoaXMudmFsdWVzLmhhcyh0KX1nZXRWYWx1ZSh0LG4pe2lmKHRoaXMucHJvcHMudmFsdWVzJiZ0aGlzLnByb3BzLnZhbHVlc1t0XSlyZXR1cm4gdGhpcy5wcm9wcy52YWx1ZXNbdF07bGV0IHI9dGhpcy52YWx1ZXMuZ2V0KHQpO3JldHVybiByPT09dm9pZCAwJiZuIT09dm9pZCAwJiYocj1PdShuPT09bnVsbD92b2lkIDA6bix7b3duZXI6dGhpc30pLHRoaXMuYWRkVmFsdWUodCxyKSkscn1yZWFkVmFsdWUodCxuKXtsZXQgcj10aGlzLmxhdGVzdFZhbHVlc1t0XSE9PXZvaWQgMHx8IXRoaXMuY3VycmVudD90aGlzLmxhdGVzdFZhbHVlc1t0XTp0aGlzLmdldEJhc2VUYXJnZXRGcm9tUHJvcHModGhpcy5wcm9wcyx0KT8/dGhpcy5yZWFkVmFsdWVGcm9tSW5zdGFuY2UodGhpcy5jdXJyZW50LHQsdGhpcy5vcHRpb25zKTtyZXR1cm4gciE9bnVsbCYmKHR5cGVvZiByPT0ic3RyaW5nIiYmKE1VKHIpfHxOVShyKSk/cj1wYXJzZUZsb2F0KHIpOiF4eWUocikmJnNpLnRlc3QobikmJihyPV96KHQsbikpLHRoaXMuc2V0QmFzZVRhcmdldCh0LERuKHIpP3IuZ2V0KCk6cikpLERuKHIpP3IuZ2V0KCk6cn1zZXRCYXNlVGFyZ2V0KHQsbil7dGhpcy5iYXNlVGFyZ2V0W3RdPW59Z2V0QmFzZVRhcmdldCh0KXtjb25zdHtpbml0aWFsOm59PXRoaXMucHJvcHM7bGV0IHI7aWYodHlwZW9mIG49PSJzdHJpbmcifHx0eXBlb2Ygbj09Im9iamVjdCIpe2NvbnN0IG89SFQodGhpcy5wcm9wcyxuLHRoaXMucHJlc2VuY2VDb250ZXh0Py5jdXN0b20pO28mJihyPW9bdF0pfWlmKG4mJnIhPT12b2lkIDApcmV0dXJuIHI7Y29uc3QgaT10aGlzLmdldEJhc2VUYXJnZXRGcm9tUHJvcHModGhpcy5wcm9wcyx0KTtyZXR1cm4gaSE9PXZvaWQgMCYmIURuKGkpP2k6dGhpcy5pbml0aWFsVmFsdWVzW3RdIT09dm9pZCAwJiZyPT09dm9pZCAwP3ZvaWQgMDp0aGlzLmJhc2VUYXJnZXRbdF19b24odCxuKXtyZXR1cm4gdGhpcy5ldmVudHNbdF18fCh0aGlzLmV2ZW50c1t0XT1uZXcgTlQpLHRoaXMuZXZlbnRzW3RdLmFkZChuKX1ub3RpZnkodCwuLi5uKXt0aGlzLmV2ZW50c1t0XSYmdGhpcy5ldmVudHNbdF0ubm90aWZ5KC4uLm4pfXNjaGVkdWxlUmVuZGVyTWljcm90YXNrKCl7V1QucmVuZGVyKHRoaXMucmVuZGVyKX19Y2xhc3MgTnogZXh0ZW5kcyBUeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuS2V5ZnJhbWVSZXNvbHZlcj1leWV9c29ydEluc3RhbmNlTm9kZVBvc2l0aW9uKHQsbil7cmV0dXJuIHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikmMj8xOi0xfWdldEJhc2VUYXJnZXRGcm9tUHJvcHModCxuKXtjb25zdCByPXQuc3R5bGU7cmV0dXJuIHI/cltuXTp2b2lkIDB9cmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGUodCx7dmFyczpuLHN0eWxlOnJ9KXtkZWxldGUgblt0XSxkZWxldGUgclt0XX1oYW5kbGVDaGlsZE1vdGlvblZhbHVlKCl7dGhpcy5jaGlsZFN1YnNjcmlwdGlvbiYmKHRoaXMuY2hpbGRTdWJzY3JpcHRpb24oKSxkZWxldGUgdGhpcy5jaGlsZFN1YnNjcmlwdGlvbik7Y29uc3R7Y2hpbGRyZW46dH09dGhpcy5wcm9wcztEbih0KSYmKHRoaXMuY2hpbGRTdWJzY3JpcHRpb249dC5vbigiY2hhbmdlIixuPT57dGhpcy5jdXJyZW50JiYodGhpcy5jdXJyZW50LnRleHRDb250ZW50PWAke259YCl9KSl9fWNsYXNzIEFve2NvbnN0cnVjdG9yKHQpe3RoaXMuaXNNb3VudGVkPSExLHRoaXMubm9kZT10fXVwZGF0ZSgpe319ZnVuY3Rpb24ga3ooe3RvcDplLGxlZnQ6dCxyaWdodDpuLGJvdHRvbTpyfSl7cmV0dXJue3g6e21pbjp0LG1heDpufSx5OnttaW46ZSxtYXg6cn19fWZ1bmN0aW9uIEV5ZSh7eDplLHk6dH0pe3JldHVybnt0b3A6dC5taW4scmlnaHQ6ZS5tYXgsYm90dG9tOnQubWF4LGxlZnQ6ZS5taW59fWZ1bmN0aW9uIEN5ZShlLHQpe2lmKCF0KXJldHVybiBlO2NvbnN0IG49dCh7eDplLmxlZnQseTplLnRvcH0pLHI9dCh7eDplLnJpZ2h0LHk6ZS5ib3R0b219KTtyZXR1cm57dG9wOm4ueSxsZWZ0Om4ueCxib3R0b206ci55LHJpZ2h0OnIueH19ZnVuY3Rpb24gcFMoZSl7cmV0dXJuIGU9PT12b2lkIDB8fGU9PT0xfWZ1bmN0aW9uIGtfKHtzY2FsZTplLHNjYWxlWDp0LHNjYWxlWTpufSl7cmV0dXJuIXBTKGUpfHwhcFModCl8fCFwUyhuKX1mdW5jdGlvbiB0cyhlKXtyZXR1cm4ga18oZSl8fER6KGUpfHxlLnp8fGUucm90YXRlfHxlLnJvdGF0ZVh8fGUucm90YXRlWXx8ZS5za2V3WHx8ZS5za2V3WX1mdW5jdGlvbiBEeihlKXtyZXR1cm4gJCQoZS54KXx8JCQoZS55KX1mdW5jdGlvbiAkJChlKXtyZXR1cm4gZSYmZSE9PSIwJSJ9ZnVuY3Rpb24gcHkoZSx0LG4pe2NvbnN0IHI9ZS1uLGk9dCpyO3JldHVybiBuK2l9ZnVuY3Rpb24gQiQoZSx0LG4scixpKXtyZXR1cm4gaSE9PXZvaWQgMCYmKGU9cHkoZSxpLHIpKSxweShlLG4scikrdH1mdW5jdGlvbiBEXyhlLHQ9MCxuPTEscixpKXtlLm1pbj1CJChlLm1pbix0LG4scixpKSxlLm1heD1CJChlLm1heCx0LG4scixpKX1mdW5jdGlvbiBMeihlLHt4OnQseTpufSl7RF8oZS54LHQudHJhbnNsYXRlLHQuc2NhbGUsdC5vcmlnaW5Qb2ludCksRF8oZS55LG4udHJhbnNsYXRlLG4uc2NhbGUsbi5vcmlnaW5Qb2ludCl9Y29uc3QgViQ9Ljk5OTk5OTk5OTk5OSxxJD0xLjAwMDAwMDAwMDAwMDE7ZnVuY3Rpb24ganllKGUsdCxuLHI9ITEpe2NvbnN0IGk9bi5sZW5ndGg7aWYoIWkpcmV0dXJuO3QueD10Lnk9MTtsZXQgbyxzO2ZvcihsZXQgdT0wO3U8aTt1Kyspe289blt1XSxzPW8ucHJvamVjdGlvbkRlbHRhO2NvbnN0e3Zpc3VhbEVsZW1lbnQ6Zn09by5vcHRpb25zO2YmJmYucHJvcHMuc3R5bGUmJmYucHJvcHMuc3R5bGUuZGlzcGxheT09PSJjb250ZW50cyJ8fChyJiZvLm9wdGlvbnMubGF5b3V0U2Nyb2xsJiZvLnNjcm9sbCYmbyE9PW8ucm9vdCYmKHhpKGUueCwtby5zY3JvbGwub2Zmc2V0LngpLHhpKGUueSwtby5zY3JvbGwub2Zmc2V0LnkpKSxzJiYodC54Kj1zLnguc2NhbGUsdC55Kj1zLnkuc2NhbGUsTHooZSxzKSksciYmdHMoby5sYXRlc3RWYWx1ZXMpJiZHcChlLG8ubGF0ZXN0VmFsdWVzLG8ubGF5b3V0Py5sYXlvdXRCb3gpKX10Lng8cSQmJnQueD5WJCYmKHQueD0xKSx0Lnk8cSQmJnQueT5WJCYmKHQueT0xKX1mdW5jdGlvbiB4aShlLHQpe2UubWluKz10LGUubWF4Kz10fWZ1bmN0aW9uIFUkKGUsdCxuLHIsaT0uNSl7Y29uc3Qgbz1qdChlLm1pbixlLm1heCxpKTtEXyhlLHQsbixvLHIpfWZ1bmN0aW9uIHokKGUsdCl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9wYXJzZUZsb2F0KGUpLzEwMCoodC5tYXgtdC5taW4pOmV9ZnVuY3Rpb24gR3AoZSx0LG4pe2NvbnN0IHI9bj8/ZTtVJChlLngseiQodC54LHIueCksdC5zY2FsZVgsdC5zY2FsZSx0Lm9yaWdpblgpLFUkKGUueSx6JCh0Lnksci55KSx0LnNjYWxlWSx0LnNjYWxlLHQub3JpZ2luWSl9ZnVuY3Rpb24gSXooZSx0KXtyZXR1cm4ga3ooQ3llKGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdCkpfWZ1bmN0aW9uIFB5ZShlLHQsbil7Y29uc3Qgcj1JeihlLG4pLHtzY3JvbGw6aX09dDtyZXR1cm4gaSYmKHhpKHIueCxpLm9mZnNldC54KSx4aShyLnksaS5vZmZzZXQueSkpLHJ9Y29uc3QgTXllPXt4OiJ0cmFuc2xhdGVYIix5OiJ0cmFuc2xhdGVZIix6OiJ0cmFuc2xhdGVaIix0cmFuc2Zvcm1QZXJzcGVjdGl2ZToicGVyc3BlY3RpdmUifSxSeWU9SHUubGVuZ3RoO2Z1bmN0aW9uIE55ZShlLHQsbil7bGV0IHI9IiIsaT0hMDtmb3IobGV0IHM9MDtzPFJ5ZTtzKyspe2NvbnN0IHU9SHVbc10sZj1lW3VdO2lmKGY9PT12b2lkIDApY29udGludWU7bGV0IGQ9ITA7aWYodHlwZW9mIGY9PSJudW1iZXIiKWQ9Zj09PSh1LnN0YXJ0c1dpdGgoInNjYWxlIik/MTowKTtlbHNle2NvbnN0IHA9cGFyc2VGbG9hdChmKTtkPXUuc3RhcnRzV2l0aCgic2NhbGUiKT9wPT09MTpwPT09MH1pZighZHx8bil7Y29uc3QgcD1SXyhmLGR5W3VdKTtpZighZCl7aT0hMTtjb25zdCBtPU15ZVt1XXx8dTtyKz1gJHttfSgke3B9KSBgfW4mJih0W3VdPXApfX1jb25zdCBvPWUucGF0aFJvdGF0aW9uO3JldHVybiBvJiYoaT0hMSxyKz1gcm90YXRlKCR7Ul8obyxkeS5wYXRoUm90YXRpb24pfSkgYCkscj1yLnRyaW0oKSxuP3I9bih0LGk/IiI6cik6aSYmKHI9Im5vbmUiKSxyfWZ1bmN0aW9uIEpUKGUsdCxuKXtjb25zdHtzdHlsZTpyLHZhcnM6aSx0cmFuc2Zvcm1PcmlnaW46b309ZTtsZXQgcz0hMSx1PSExO2Zvcihjb25zdCBmIGluIHQpe2NvbnN0IGQ9dFtmXTtpZihHdS5oYXMoZikpe3M9ITA7Y29udGludWV9ZWxzZSBpZihXVShmKSl7aVtmXT1kO2NvbnRpbnVlfWVsc2V7Y29uc3QgcD1SXyhkLGR5W2ZdKTtmLnN0YXJ0c1dpdGgoIm9yaWdpbiIpPyh1PSEwLG9bZl09cCk6cltmXT1wfX1pZih0LnRyYW5zZm9ybXx8KHN8fG4/ci50cmFuc2Zvcm09TnllKHQsZS50cmFuc2Zvcm0sbik6ci50cmFuc2Zvcm0mJihyLnRyYW5zZm9ybT0ibm9uZSIpKSx1KXtjb25zdHtvcmlnaW5YOmY9IjUwJSIsb3JpZ2luWTpkPSI1MCUiLG9yaWdpblo6cD0wfT1vO3IudHJhbnNmb3JtT3JpZ2luPWAke2Z9ICR7ZH0gJHtwfWB9fWZ1bmN0aW9uICR6KGUse3N0eWxlOnQsdmFyczpufSxyLGkpe2NvbnN0IG89ZS5zdHlsZTtsZXQgcztmb3IocyBpbiB0KW9bc109dFtzXTtpPy5hcHBseVByb2plY3Rpb25TdHlsZXMobyxyKTtmb3IocyBpbiBuKW8uc2V0UHJvcGVydHkocyxuW3NdKX1mdW5jdGlvbiBGJChlLHQpe3JldHVybiB0Lm1heD09PXQubWluPzA6ZS8odC5tYXgtdC5taW4pKjEwMH1jb25zdCBuZj17Y29ycmVjdDooZSx0KT0+e2lmKCF0LnRhcmdldClyZXR1cm4gZTtpZih0eXBlb2YgZT09InN0cmluZyIpaWYoTmUudGVzdChlKSllPXBhcnNlRmxvYXQoZSk7ZWxzZSByZXR1cm4gZTtjb25zdCBuPUYkKGUsdC50YXJnZXQueCkscj1GJChlLHQudGFyZ2V0LnkpO3JldHVybmAke259JSAke3J9JWB9fSxreWU9e2NvcnJlY3Q6KGUse3RyZWVTY2FsZTp0LHByb2plY3Rpb25EZWx0YTpufSk9Pntjb25zdCByPWUsaT1zaS5wYXJzZShlKTtpZihpLmxlbmd0aD41KXJldHVybiByO2NvbnN0IG89c2kuY3JlYXRlVHJhbnNmb3JtZXIoZSkscz10eXBlb2YgaVswXSE9Im51bWJlciI/MTowLHU9bi54LnNjYWxlKnQueCxmPW4ueS5zY2FsZSp0Lnk7aVswK3NdLz11LGlbMStzXS89Zjtjb25zdCBkPWp0KHUsZiwuNSk7cmV0dXJuIHR5cGVvZiBpWzIrc109PSJudW1iZXIiJiYoaVsyK3NdLz1kKSx0eXBlb2YgaVszK3NdPT0ibnVtYmVyIiYmKGlbMytzXS89ZCksbyhpKX19LExfPXtib3JkZXJSYWRpdXM6ey4uLm5mLGFwcGx5VG86Wy4uLktUXX0sYm9yZGVyVG9wTGVmdFJhZGl1czpuZixib3JkZXJUb3BSaWdodFJhZGl1czpuZixib3JkZXJCb3R0b21MZWZ0UmFkaXVzOm5mLGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOm5mLGJveFNoYWRvdzpreWV9O2Z1bmN0aW9uIEJ6KGUse2xheW91dDp0LGxheW91dElkOm59KXtyZXR1cm4gR3UuaGFzKGUpfHxlLnN0YXJ0c1dpdGgoIm9yaWdpbiIpfHwodHx8biE9PXZvaWQgMCkmJighIUxfW2VdfHxlPT09Im9wYWNpdHkiKX1mdW5jdGlvbiBlRShlLHQsbil7Y29uc3Qgcj1lLnN0eWxlLGk9dD8uc3R5bGUsbz17fTtpZighcilyZXR1cm4gbztmb3IoY29uc3QgcyBpbiByKShEbihyW3NdKXx8aSYmRG4oaVtzXSl8fEJ6KHMsZSl8fG4/LmdldFZhbHVlKHMpPy5saXZlU3R5bGUhPT12b2lkIDApJiYob1tzXT1yW3NdKTtyZXR1cm4gb31mdW5jdGlvbiBEeWUoZSl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpfWNsYXNzIEx5ZSBleHRlbmRzIE56e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9Imh0bWwiLHRoaXMucmVuZGVySW5zdGFuY2U9JHp9cmVhZFZhbHVlRnJvbUluc3RhbmNlKHQsbil7aWYoR3UuaGFzKG4pKXJldHVybiB0aGlzLnByb2plY3Rpb24/LmlzUHJvamVjdGluZz93XyhuKTpubWUodCxuKTt7Y29uc3Qgcj1EeWUodCksaT0oV1Uobik/ci5nZXRQcm9wZXJ0eVZhbHVlKG4pOnJbbl0pfHwwO3JldHVybiB0eXBlb2YgaT09InN0cmluZyI/aS50cmltKCk6aX19bWVhc3VyZUluc3RhbmNlVmlld3BvcnRCb3godCx7dHJhbnNmb3JtUGFnZVBvaW50Om59KXtyZXR1cm4gSXoodCxuKX1idWlsZCh0LG4scil7SlQodCxuLHIudHJhbnNmb3JtVGVtcGxhdGUpfXNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wcyh0LG4scil7cmV0dXJuIGVFKHQsbixyKX19Y29uc3QgSXllPXtvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixhcnJheToic3Ryb2tlLWRhc2hhcnJheSJ9LCR5ZT17b2Zmc2V0OiJzdHJva2VEYXNob2Zmc2V0IixhcnJheToic3Ryb2tlRGFzaGFycmF5In07ZnVuY3Rpb24gQnllKGUsdCxuPTEscj0wLGk9ITApe2UucGF0aExlbmd0aD0xO2NvbnN0IG89aT9JeWU6JHllO2Vbby5vZmZzZXRdPWAkey1yfWAsZVtvLmFycmF5XT1gJHt0fSAke259YH1jb25zdCBWeWU9WyJvZmZzZXREaXN0YW5jZSIsIm9mZnNldFBhdGgiLCJvZmZzZXRSb3RhdGUiLCJvZmZzZXRBbmNob3IiXTtmdW5jdGlvbiBWeihlLHthdHRyWDp0LGF0dHJZOm4sYXR0clNjYWxlOnIscGF0aExlbmd0aDppLHBhdGhTcGFjaW5nOm89MSxwYXRoT2Zmc2V0OnM9MCwuLi51fSxmLGQscCl7aWYoSlQoZSx1LGQpLGYpe2Uuc3R5bGUudmlld0JveCYmKGUuYXR0cnMudmlld0JveD1lLnN0eWxlLnZpZXdCb3gpO3JldHVybn1lLmF0dHJzPWUuc3R5bGUsZS5zdHlsZT17fTtjb25zdHthdHRyczptLHN0eWxlOnl9PWU7bS50cmFuc2Zvcm0mJih5LnRyYW5zZm9ybT1tLnRyYW5zZm9ybSxkZWxldGUgbS50cmFuc2Zvcm0pLCh5LnRyYW5zZm9ybXx8bS50cmFuc2Zvcm1PcmlnaW4pJiYoeS50cmFuc2Zvcm1PcmlnaW49bS50cmFuc2Zvcm1PcmlnaW4/PyI1MCUgNTAlIixkZWxldGUgbS50cmFuc2Zvcm1PcmlnaW4pLHkudHJhbnNmb3JtJiYoeS50cmFuc2Zvcm1Cb3g9cD8udHJhbnNmb3JtQm94Pz8iZmlsbC1ib3giLGRlbGV0ZSBtLnRyYW5zZm9ybUJveCk7Zm9yKGNvbnN0IHggb2YgVnllKW1beF0hPT12b2lkIDAmJih5W3hdPW1beF0sZGVsZXRlIG1beF0pO3QhPT12b2lkIDAmJihtLng9dCksbiE9PXZvaWQgMCYmKG0ueT1uKSxyIT09dm9pZCAwJiYobS5zY2FsZT1yKSxpIT09dm9pZCAwJiZCeWUobSxpLG8scywhMSl9Y29uc3QgcXo9bmV3IFNldChbImJhc2VGcmVxdWVuY3kiLCJkaWZmdXNlQ29uc3RhbnQiLCJrZXJuZWxNYXRyaXgiLCJrZXJuZWxVbml0TGVuZ3RoIiwia2V5U3BsaW5lcyIsImtleVRpbWVzIiwibGltaXRpbmdDb25lQW5nbGUiLCJtYXJrZXJIZWlnaHQiLCJtYXJrZXJXaWR0aCIsIm51bU9jdGF2ZXMiLCJ0YXJnZXRYIiwidGFyZ2V0WSIsInN1cmZhY2VTY2FsZSIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3RkRGV2aWF0aW9uIiwidGFibGVWYWx1ZXMiLCJ2aWV3Qm94IiwiZ3JhZGllbnRUcmFuc2Zvcm0iLCJwYXRoTGVuZ3RoIiwic3RhcnRPZmZzZXQiLCJ0ZXh0TGVuZ3RoIiwibGVuZ3RoQWRqdXN0Il0pLFV6PWU9PnR5cGVvZiBlPT0ic3RyaW5nIiYmZS50b0xvd2VyQ2FzZSgpPT09InN2ZyI7ZnVuY3Rpb24gcXllKGUsdCxuLHIpeyR6KGUsdCx2b2lkIDAscik7Zm9yKGNvbnN0IGkgaW4gdC5hdHRycyllLnNldEF0dHJpYnV0ZShxei5oYXMoaSk/aTpHVChpKSx0LmF0dHJzW2ldKX1mdW5jdGlvbiB6eihlLHQsbil7Y29uc3Qgcj1lRShlLHQsbik7Zm9yKGNvbnN0IGkgaW4gZSlpZihEbihlW2ldKXx8RG4odFtpXSkpe2NvbnN0IG89SHUuaW5kZXhPZihpKSE9PS0xPyJhdHRyIitpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2kuc3Vic3RyaW5nKDEpOmk7cltvXT1lW2ldfXJldHVybiByfWNsYXNzIFV5ZSBleHRlbmRzIE56e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9InN2ZyIsdGhpcy5pc1NWR1RhZz0hMSx0aGlzLm1lYXN1cmVJbnN0YW5jZVZpZXdwb3J0Qm94PXBufWdldEJhc2VUYXJnZXRGcm9tUHJvcHModCxuKXtyZXR1cm4gdFtuXX1yZWFkVmFsdWVGcm9tSW5zdGFuY2UodCxuKXtpZihHdS5oYXMobikpe2NvbnN0IHI9QXoobik7cmV0dXJuIHImJnIuZGVmYXVsdHx8MH1yZXR1cm4gbj1xei5oYXMobik/bjpHVChuKSx0LmdldEF0dHJpYnV0ZShuKX1zY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHModCxuLHIpe3JldHVybiB6eih0LG4scil9YnVpbGQodCxuLHIpe1Z6KHQsbix0aGlzLmlzU1ZHVGFnLHIudHJhbnNmb3JtVGVtcGxhdGUsci5zdHlsZSl9cmVuZGVySW5zdGFuY2UodCxuLHIsaSl7cXllKHQsbixyLGkpfW1vdW50KHQpe3RoaXMuaXNTVkdUYWc9VXoodC50YWdOYW1lKSxzdXBlci5tb3VudCh0KX19Y29uc3QgenllPVFULmxlbmd0aDtmdW5jdGlvbiBGeihlKXtpZighZSlyZXR1cm47aWYoIWUuaXNDb250cm9sbGluZ1ZhcmlhbnRzKXtjb25zdCBuPWUucGFyZW50P0Z6KGUucGFyZW50KXx8e306e307cmV0dXJuIGUucHJvcHMuaW5pdGlhbCE9PXZvaWQgMCYmKG4uaW5pdGlhbD1lLnByb3BzLmluaXRpYWwpLG59Y29uc3QgdD17fTtmb3IobGV0IG49MDtuPHp5ZTtuKyspe2NvbnN0IHI9UVRbbl0saT1lLnByb3BzW3JdOyhwZChpKXx8aT09PSExKSYmKHRbcl09aSl9cmV0dXJuIHR9ZnVuY3Rpb24gSHooZSx0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4hMTtjb25zdCBuPXQubGVuZ3RoO2lmKG4hPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHI9MDtyPG47cisrKWlmKHRbcl0hPT1lW3JdKXJldHVybiExO3JldHVybiEwfWNvbnN0IEZ5ZT1bLi4uWlRdLnJldmVyc2UoKSxIeWU9WlQubGVuZ3RoO2Z1bmN0aW9uIEd5ZShlKXtyZXR1cm4gdD0+UHJvbWlzZS5hbGwodC5tYXAoKHthbmltYXRpb246bixvcHRpb25zOnJ9KT0+em1lKGUsbixyKSkpfWZ1bmN0aW9uIEt5ZShlKXtsZXQgdD1HeWUoZSksbj1IJCgpLHI9ITAsaT0hMTtjb25zdCBvPWQ9PihwLG0pPT57Y29uc3QgeT1tcyhlLG0sZD09PSJleGl0Ij9lLnByZXNlbmNlQ29udGV4dD8uY3VzdG9tOnZvaWQgMCk7aWYoeSl7Y29uc3R7dHJhbnNpdGlvbjp4LHRyYW5zaXRpb25FbmQ6dywuLi5ifT15O3A9ey4uLnAsLi4uYiwuLi53fX1yZXR1cm4gcH07ZnVuY3Rpb24gcyhkKXt0PWQoZSl9ZnVuY3Rpb24gdShkKXtjb25zdHtwcm9wczpwfT1lLG09RnooZS5wYXJlbnQpfHx7fSx5PVtdLHg9bmV3IFNldDtsZXQgdz17fSxiPTEvMDtmb3IobGV0IF89MDtfPEh5ZTtfKyspe2NvbnN0IE89RnllW19dLEU9bltPXSxqPXBbT10hPT12b2lkIDA/cFtPXTptW09dLFQ9cGQoaiksUD1PPT09ZD9FLmlzQWN0aXZlOm51bGw7UD09PSExJiYoYj1fKTtsZXQgTj1qPT09bVtPXSYmaiE9PXBbT10mJlQ7aWYoTiYmKHJ8fGkpJiZlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJihOPSExKSxFLnByb3RlY3RlZEtleXM9ey4uLnd9LCFFLmlzQWN0aXZlJiZQPT09bnVsbHx8IWomJiFFLnByZXZQcm9wfHxBdihqKXx8dHlwZW9mIGo9PSJib29sZWFuIiljb250aW51ZTtpZihPPT09ImV4aXQiJiZFLmlzQWN0aXZlJiZQIT09ITApe0UucHJldlJlc29sdmVkVmFsdWVzJiYodz17Li4udywuLi5FLnByZXZSZXNvbHZlZFZhbHVlc30pO2NvbnRpbnVlfWNvbnN0IFI9V3llKEUucHJldlByb3Asaik7bGV0IEk9Unx8Tz09PWQmJkUuaXNBY3RpdmUmJiFOJiZUfHxfPmImJlQsVj0hMTtjb25zdCBCPUFycmF5LmlzQXJyYXkoaik/ajpbal07bGV0ICQ9Qi5yZWR1Y2UobyhPKSx7fSk7UD09PSExJiYoJD17fSk7Y29uc3R7cHJldlJlc29sdmVkVmFsdWVzOno9e319PUUsVT17Li4ueiwuLi4kfSxLPUg9PntJPSEwLHguaGFzKEgpJiYoVj0hMCx4LmRlbGV0ZShIKSksRS5uZWVkc0FuaW1hdGluZ1tIXT0hMDtjb25zdCBlZT1lLmdldFZhbHVlKEgpO2VlJiYoZWUubGl2ZVN0eWxlPSExKX07Zm9yKGNvbnN0IEggaW4gVSl7Y29uc3QgZWU9JFtIXSxrPXpbSF07aWYody5oYXNPd25Qcm9wZXJ0eShIKSljb250aW51ZTtsZXQgWj0hMTtFXyhlZSkmJkVfKGspP1o9IUh6KGVlLGspfHxSOlo9ZWUhPT1rLFo/ZWUhPW51bGw/SyhIKTp4LmFkZChIKTplZSE9PXZvaWQgMCYmeC5oYXMoSCk/SyhIKTpFLnByb3RlY3RlZEtleXNbSF09ITB9RS5wcmV2UHJvcD1qLEUucHJldlJlc29sdmVkVmFsdWVzPSQsRS5pc0FjdGl2ZSYmKHc9ey4uLncsLi4uJH0pLChyfHxpKSYmZS5ibG9ja0luaXRpYWxBbmltYXRpb24mJihJPSExKTtjb25zdCBMPU4mJlI7SSYmKCFMfHxWKSYmeS5wdXNoKC4uLkIubWFwKEg9Pntjb25zdCBlZT17dHlwZTpPfTtpZih0eXBlb2YgSD09InN0cmluZyImJihyfHxpKSYmIUwmJmUubWFudWFsbHlBbmltYXRlT25Nb3VudCYmZS5wYXJlbnQpe2NvbnN0e3BhcmVudDprfT1lLFo9bXMoayxIKTtpZihrLmVudGVyaW5nQ2hpbGRyZW4mJlope2NvbnN0e2RlbGF5Q2hpbGRyZW46dGV9PVoudHJhbnNpdGlvbnx8e307ZWUuZGVsYXk9cHooay5lbnRlcmluZ0NoaWxkcmVuLGUsdGUpfX1yZXR1cm57YW5pbWF0aW9uOkgsb3B0aW9uczplZX19KSl9aWYoeC5zaXplKXtjb25zdCBfPXt9O2lmKHR5cGVvZiBwLmluaXRpYWwhPSJib29sZWFuIil7Y29uc3QgTz1tcyhlLEFycmF5LmlzQXJyYXkocC5pbml0aWFsKT9wLmluaXRpYWxbMF06cC5pbml0aWFsKTtPJiZPLnRyYW5zaXRpb24mJihfLnRyYW5zaXRpb249Ty50cmFuc2l0aW9uKX14LmZvckVhY2goTz0+e2NvbnN0IEU9ZS5nZXRCYXNlVGFyZ2V0KE8pLGo9ZS5nZXRWYWx1ZShPKTtqJiYoai5saXZlU3R5bGU9ITApLF9bT109RT8/bnVsbH0pLHkucHVzaCh7YW5pbWF0aW9uOl99KX1sZXQgZz0hIXkubGVuZ3RoO3JldHVybiByJiYocC5pbml0aWFsPT09ITF8fHAuaW5pdGlhbD09PXAuYW5pbWF0ZSkmJiFlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJihnPSExKSxyPSExLGk9ITEsZz90KHkpOlByb21pc2UucmVzb2x2ZSgpfWZ1bmN0aW9uIGYoZCxwKXtpZihuW2RdLmlzQWN0aXZlPT09cClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7ZS52YXJpYW50Q2hpbGRyZW4/LmZvckVhY2goeT0+eS5hbmltYXRpb25TdGF0ZT8uc2V0QWN0aXZlKGQscCkpLG5bZF0uaXNBY3RpdmU9cDtjb25zdCBtPXUoZCk7Zm9yKGNvbnN0IHkgaW4gbiluW3ldLnByb3RlY3RlZEtleXM9e307cmV0dXJuIG19cmV0dXJue2FuaW1hdGVDaGFuZ2VzOnUsc2V0QWN0aXZlOmYsc2V0QW5pbWF0ZUZ1bmN0aW9uOnMsZ2V0U3RhdGU6KCk9Pm4scmVzZXQ6KCk9PntuPUgkKCksaT0hMH19fWZ1bmN0aW9uIFd5ZShlLHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyI/dCE9PWU6QXJyYXkuaXNBcnJheSh0KT8hSHoodCxlKTohMX1mdW5jdGlvbiBRbyhlPSExKXtyZXR1cm57aXNBY3RpdmU6ZSxwcm90ZWN0ZWRLZXlzOnt9LG5lZWRzQW5pbWF0aW5nOnt9LHByZXZSZXNvbHZlZFZhbHVlczp7fX19ZnVuY3Rpb24gSCQoKXtyZXR1cm57YW5pbWF0ZTpRbyghMCksd2hpbGVJblZpZXc6UW8oKSx3aGlsZUhvdmVyOlFvKCksd2hpbGVUYXA6UW8oKSx3aGlsZURyYWc6UW8oKSx3aGlsZUZvY3VzOlFvKCksZXhpdDpRbygpfX1mdW5jdGlvbiBJXyhlLHQpe2UubWluPXQubWluLGUubWF4PXQubWF4fWZ1bmN0aW9uIFFyKGUsdCl7SV8oZS54LHQueCksSV8oZS55LHQueSl9ZnVuY3Rpb24gRyQoZSx0KXtlLnRyYW5zbGF0ZT10LnRyYW5zbGF0ZSxlLnNjYWxlPXQuc2NhbGUsZS5vcmlnaW5Qb2ludD10Lm9yaWdpblBvaW50LGUub3JpZ2luPXQub3JpZ2lufWNvbnN0IEd6PTFlLTQsWXllPTEtR3osWHllPTErR3osS3o9LjAxLFp5ZT0wLUt6LFF5ZT0wK0t6O2Z1bmN0aW9uIFluKGUpe3JldHVybiBlLm1heC1lLm1pbn1mdW5jdGlvbiBKeWUoZSx0LG4pe3JldHVybiBNYXRoLmFicyhlLXQpPD1ufWZ1bmN0aW9uIEskKGUsdCxuLHI9LjUpe2Uub3JpZ2luPXIsZS5vcmlnaW5Qb2ludD1qdCh0Lm1pbix0Lm1heCxlLm9yaWdpbiksZS5zY2FsZT1ZbihuKS9Zbih0KSxlLnRyYW5zbGF0ZT1qdChuLm1pbixuLm1heCxlLm9yaWdpbiktZS5vcmlnaW5Qb2ludCwoZS5zY2FsZT49WXllJiZlLnNjYWxlPD1YeWV8fGlzTmFOKGUuc2NhbGUpKSYmKGUuc2NhbGU9MSksKGUudHJhbnNsYXRlPj1aeWUmJmUudHJhbnNsYXRlPD1ReWV8fGlzTmFOKGUudHJhbnNsYXRlKSkmJihlLnRyYW5zbGF0ZT0wKX1mdW5jdGlvbiBBZihlLHQsbixyKXtLJChlLngsdC54LG4ueCxyP3Iub3JpZ2luWDp2b2lkIDApLEskKGUueSx0Lnksbi55LHI/ci5vcmlnaW5ZOnZvaWQgMCl9ZnVuY3Rpb24gVyQoZSx0LG4scj0wKXtjb25zdCBpPXI/anQobi5taW4sbi5tYXgscik6bi5taW47ZS5taW49aSt0Lm1pbixlLm1heD1lLm1pbitZbih0KX1mdW5jdGlvbiBldmUoZSx0LG4scil7VyQoZS54LHQueCxuLngscj8ueCksVyQoZS55LHQueSxuLnkscj8ueSl9ZnVuY3Rpb24gWSQoZSx0LG4scj0wKXtjb25zdCBpPXI/anQobi5taW4sbi5tYXgscik6bi5taW47ZS5taW49dC5taW4taSxlLm1heD1lLm1pbitZbih0KX1mdW5jdGlvbiBteShlLHQsbixyKXtZJChlLngsdC54LG4ueCxyPy54KSxZJChlLnksdC55LG4ueSxyPy55KX1mdW5jdGlvbiBYJChlLHQsbixyLGkpe3JldHVybiBlLT10LGU9cHkoZSwxL24sciksaSE9PXZvaWQgMCYmKGU9cHkoZSwxL2kscikpLGV9ZnVuY3Rpb24gdHZlKGUsdD0wLG49MSxyPS41LGksbz1lLHM9ZSl7aWYoQ2kudGVzdCh0KSYmKHQ9cGFyc2VGbG9hdCh0KSx0PWp0KHMubWluLHMubWF4LHQvMTAwKS1zLm1pbiksdHlwZW9mIHQhPSJudW1iZXIiKXJldHVybjtsZXQgdT1qdChvLm1pbixvLm1heCxyKTtlPT09byYmKHUtPXQpLGUubWluPVgkKGUubWluLHQsbix1LGkpLGUubWF4PVgkKGUubWF4LHQsbix1LGkpfWZ1bmN0aW9uIFokKGUsdCxbbixyLGldLG8scyl7dHZlKGUsdFtuXSx0W3JdLHRbaV0sdC5zY2FsZSxvLHMpfWNvbnN0IG52ZT1bIngiLCJzY2FsZVgiLCJvcmlnaW5YIl0scnZlPVsieSIsInNjYWxlWSIsIm9yaWdpblkiXTtmdW5jdGlvbiBRJChlLHQsbixyKXtaJChlLngsdCxudmUsbj9uLng6dm9pZCAwLHI/ci54OnZvaWQgMCksWiQoZS55LHQscnZlLG4/bi55OnZvaWQgMCxyP3IueTp2b2lkIDApfWZ1bmN0aW9uIEokKGUpe3JldHVybiBlLnRyYW5zbGF0ZT09PTAmJmUuc2NhbGU9PT0xfWZ1bmN0aW9uIFd6KGUpe3JldHVybiBKJChlLngpJiZKJChlLnkpfWZ1bmN0aW9uIGVCKGUsdCl7cmV0dXJuIGUubWluPT09dC5taW4mJmUubWF4PT09dC5tYXh9ZnVuY3Rpb24gaXZlKGUsdCl7cmV0dXJuIGVCKGUueCx0LngpJiZlQihlLnksdC55KX1mdW5jdGlvbiB0QihlLHQpe3JldHVybiBNYXRoLnJvdW5kKGUubWluKT09PU1hdGgucm91bmQodC5taW4pJiZNYXRoLnJvdW5kKGUubWF4KT09PU1hdGgucm91bmQodC5tYXgpfWZ1bmN0aW9uIFl6KGUsdCl7cmV0dXJuIHRCKGUueCx0LngpJiZ0QihlLnksdC55KX1mdW5jdGlvbiBuQihlKXtyZXR1cm4gWW4oZS54KS9ZbihlLnkpfWZ1bmN0aW9uIHJCKGUsdCl7cmV0dXJuIGUudHJhbnNsYXRlPT09dC50cmFuc2xhdGUmJmUuc2NhbGU9PT10LnNjYWxlJiZlLm9yaWdpblBvaW50PT09dC5vcmlnaW5Qb2ludH1mdW5jdGlvbiB2aShlKXtyZXR1cm5bZSgieCIpLGUoInkiKV19ZnVuY3Rpb24gYXZlKGUsdCxuKXtsZXQgcj0iIjtjb25zdCBpPWUueC50cmFuc2xhdGUvdC54LG89ZS55LnRyYW5zbGF0ZS90Lnkscz1uPy56fHwwO2lmKChpfHxvfHxzKSYmKHI9YHRyYW5zbGF0ZTNkKCR7aX1weCwgJHtvfXB4LCAke3N9cHgpIGApLCh0LnghPT0xfHx0LnkhPT0xKSYmKHIrPWBzY2FsZSgkezEvdC54fSwgJHsxL3QueX0pIGApLG4pe2NvbnN0e3RyYW5zZm9ybVBlcnNwZWN0aXZlOmQscm90YXRlOnAscGF0aFJvdGF0aW9uOm0scm90YXRlWDp5LHJvdGF0ZVk6eCxza2V3WDp3LHNrZXdZOmJ9PW47ZCYmKHI9YHBlcnNwZWN0aXZlKCR7ZH1weCkgJHtyfWApLHAmJihyKz1gcm90YXRlKCR7cH1kZWcpIGApLG0mJihyKz1gcm90YXRlKCR7bX1kZWcpIGApLHkmJihyKz1gcm90YXRlWCgke3l9ZGVnKSBgKSx4JiYocis9YHJvdGF0ZVkoJHt4fWRlZykgYCksdyYmKHIrPWBza2V3WCgke3d9ZGVnKSBgKSxiJiYocis9YHNrZXdZKCR7Yn1kZWcpIGApfWNvbnN0IHU9ZS54LnNjYWxlKnQueCxmPWUueS5zY2FsZSp0Lnk7cmV0dXJuKHUhPT0xfHxmIT09MSkmJihyKz1gc2NhbGUoJHt1fSwgJHtmfSlgKSxyfHwibm9uZSJ9Y29uc3Qgb3ZlPUtULmxlbmd0aCxpQj1lPT50eXBlb2YgZT09InN0cmluZyI/cGFyc2VGbG9hdChlKTplLGFCPWU9PnR5cGVvZiBlPT0ibnVtYmVyInx8TmUudGVzdChlKTtmdW5jdGlvbiBzdmUoZSx0LG4scixpLG8pe2k/KGUub3BhY2l0eT1qdCgwLG4ub3BhY2l0eT8/MSxsdmUocikpLGUub3BhY2l0eUV4aXQ9anQodC5vcGFjaXR5Pz8xLDAsdXZlKHIpKSk6byYmKGUub3BhY2l0eT1qdCh0Lm9wYWNpdHk/PzEsbi5vcGFjaXR5Pz8xLHIpKTtmb3IobGV0IHM9MDtzPG92ZTtzKyspe2NvbnN0IHU9S1Rbc107bGV0IGY9b0IodCx1KSxkPW9CKG4sdSk7aWYoZj09PXZvaWQgMCYmZD09PXZvaWQgMCljb250aW51ZTtmfHwoZj0wKSxkfHwoZD0wKSxmPT09MHx8ZD09PTB8fGFCKGYpPT09YUIoZCk/KGVbdV09TWF0aC5tYXgoanQoaUIoZiksaUIoZCksciksMCksKENpLnRlc3QoZCl8fENpLnRlc3QoZikpJiYoZVt1XSs9IiUiKSk6ZVt1XT1kfSh0LnJvdGF0ZXx8bi5yb3RhdGUpJiYoZS5yb3RhdGU9anQodC5yb3RhdGV8fDAsbi5yb3RhdGV8fDAscikpfWZ1bmN0aW9uIG9CKGUsdCl7cmV0dXJuIGVbdF0hPT12b2lkIDA/ZVt0XTplLmJvcmRlclJhZGl1c31jb25zdCBsdmU9WHooMCwuNSxVVSksdXZlPVh6KC41LC45NSxVcik7ZnVuY3Rpb24gWHooZSx0LG4pe3JldHVybiByPT5yPGU/MDpyPnQ/MTpuKGRkKGUsdCxyKSl9ZnVuY3Rpb24gY3ZlKGUsdCxuKXtjb25zdCByPURuKGUpP2U6T3UoZSk7cmV0dXJuIHIuc3RhcnQoRlQoIiIscix0LG4pKSxyLmFuaW1hdGlvbn1mdW5jdGlvbiBtZChlLHQsbixyPXtwYXNzaXZlOiEwfSl7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sciksKCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4scil9Y29uc3QgZnZlPShlLHQpPT5lLmRlcHRoLXQuZGVwdGg7Y2xhc3MgZHZle2NvbnN0cnVjdG9yKCl7dGhpcy5jaGlsZHJlbj1bXSx0aGlzLmlzRGlydHk9ITF9YWRkKHQpe01UKHRoaXMuY2hpbGRyZW4sdCksdGhpcy5pc0RpcnR5PSEwfXJlbW92ZSh0KXtzeSh0aGlzLmNoaWxkcmVuLHQpLHRoaXMuaXNEaXJ0eT0hMH1mb3JFYWNoKHQpe3RoaXMuaXNEaXJ0eSYmdGhpcy5jaGlsZHJlbi5zb3J0KGZ2ZSksdGhpcy5pc0RpcnR5PSExLHRoaXMuY2hpbGRyZW4uZm9yRWFjaCh0KX19ZnVuY3Rpb24gaHZlKGUsdCl7Y29uc3Qgbj1Xbi5ub3coKSxyPSh7dGltZXN0YW1wOml9KT0+e2NvbnN0IG89aS1uO28+PXQmJihjbyhyKSxlKG8tdCkpfTtyZXR1cm4gTXQuc2V0dXAociwhMCksKCk9PmNvKHIpfWZ1bmN0aW9uIEtwKGUpe3JldHVybiBEbihlKT9lLmdldCgpOmV9Y2xhc3MgcHZle2NvbnN0cnVjdG9yKCl7dGhpcy5tZW1iZXJzPVtdfWFkZCh0KXtNVCh0aGlzLm1lbWJlcnMsdCk7Zm9yKGxldCBuPXRoaXMubWVtYmVycy5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgcj10aGlzLm1lbWJlcnNbbl07aWYocj09PXR8fHI9PT10aGlzLmxlYWR8fHI9PT10aGlzLnByZXZMZWFkKWNvbnRpbnVlO2NvbnN0IGk9ci5pbnN0YW5jZTsoIWl8fGkuaXNDb25uZWN0ZWQ9PT0hMSkmJiFyLnNuYXBzaG90JiYoc3kodGhpcy5tZW1iZXJzLHIpLHIudW5tb3VudCgpKX10LnNjaGVkdWxlUmVuZGVyKCl9cmVtb3ZlKHQpe2lmKHN5KHRoaXMubWVtYmVycyx0KSx0PT09dGhpcy5wcmV2TGVhZCYmKHRoaXMucHJldkxlYWQ9dm9pZCAwKSx0PT09dGhpcy5sZWFkKXtjb25zdCBuPXRoaXMubWVtYmVyc1t0aGlzLm1lbWJlcnMubGVuZ3RoLTFdO24mJnRoaXMucHJvbW90ZShuKX19cmVsZWdhdGUodCl7Zm9yKGxldCBuPXRoaXMubWVtYmVycy5pbmRleE9mKHQpLTE7bj49MDtuLS0pe2NvbnN0IHI9dGhpcy5tZW1iZXJzW25dO2lmKHIuaXNQcmVzZW50IT09ITEmJnIuaW5zdGFuY2U/LmlzQ29ubmVjdGVkIT09ITEpcmV0dXJuIHRoaXMucHJvbW90ZShyKSwhMH1yZXR1cm4hMX1wcm9tb3RlKHQsbil7Y29uc3Qgcj10aGlzLmxlYWQ7aWYodCE9PXImJih0aGlzLnByZXZMZWFkPXIsdGhpcy5sZWFkPXQsdC5zaG93KCkscikpe3IudXBkYXRlU25hcHNob3QoKSx0LnNjaGVkdWxlUmVuZGVyKCk7Y29uc3R7bGF5b3V0RGVwZW5kZW5jeTppfT1yLm9wdGlvbnMse2xheW91dERlcGVuZGVuY3k6b309dC5vcHRpb25zOyhpPT09dm9pZCAwfHxpIT09bykmJih0LnJlc3VtZUZyb209cixuJiYoci5wcmVzZXJ2ZU9wYWNpdHk9ITApLHIuc25hcHNob3QmJih0LnNuYXBzaG90PXIuc25hcHNob3QsdC5zbmFwc2hvdC5sYXRlc3RWYWx1ZXM9ci5hbmltYXRpb25WYWx1ZXN8fHIubGF0ZXN0VmFsdWVzKSx0LnJvb3Q/LmlzVXBkYXRpbmcmJih0LmlzTGF5b3V0RGlydHk9ITApKSx0Lm9wdGlvbnMuY3Jvc3NmYWRlPT09ITEmJnIuaGlkZSgpfX1leGl0QW5pbWF0aW9uQ29tcGxldGUoKXt0aGlzLm1lbWJlcnMuZm9yRWFjaCh0PT57dC5vcHRpb25zLm9uRXhpdENvbXBsZXRlPy4oKSx0LnJlc3VtaW5nRnJvbT8ub3B0aW9ucy5vbkV4aXRDb21wbGV0ZT8uKCl9KX1zY2hlZHVsZVJlbmRlcigpe3RoaXMubWVtYmVycy5mb3JFYWNoKHQ9PnQuaW5zdGFuY2UmJnQuc2NoZWR1bGVSZW5kZXIoITEpKX1yZW1vdmVMZWFkU25hcHNob3QoKXt0aGlzLmxlYWQ/LnNuYXBzaG90JiYodGhpcy5sZWFkLnNuYXBzaG90PXZvaWQgMCl9fWNvbnN0IFdwPXtoYXNBbmltYXRlZFNpbmNlUmVzaXplOiEwLGhhc0V2ZXJVcGRhdGVkOiExfSxtUz1bIiIsIlgiLCJZIiwiWiJdLG12ZT0xZTM7bGV0IHl2ZT0wO2Z1bmN0aW9uIHlTKGUsdCxuLHIpe2NvbnN0e2xhdGVzdFZhbHVlczppfT10O2lbZV0mJihuW2VdPWlbZV0sdC5zZXRTdGF0aWNWYWx1ZShlLDApLHImJihyW2VdPTApKX1mdW5jdGlvbiBaeihlKXtpZihlLmhhc0NoZWNrZWRPcHRpbWlzZWRBcHBlYXI9ITAsZS5yb290PT09ZSlyZXR1cm47Y29uc3R7dmlzdWFsRWxlbWVudDp0fT1lLm9wdGlvbnM7aWYoIXQpcmV0dXJuO2NvbnN0IG49YnoodCk7aWYod2luZG93Lk1vdGlvbkhhc09wdGltaXNlZEFuaW1hdGlvbihuLCJ0cmFuc2Zvcm0iKSl7Y29uc3R7bGF5b3V0OmksbGF5b3V0SWQ6b309ZS5vcHRpb25zO3dpbmRvdy5Nb3Rpb25DYW5jZWxPcHRpbWlzZWRBbmltYXRpb24obiwidHJhbnNmb3JtIixNdCwhKGl8fG8pKX1jb25zdHtwYXJlbnQ6cn09ZTtyJiYhci5oYXNDaGVja2VkT3B0aW1pc2VkQXBwZWFyJiZaeihyKX1mdW5jdGlvbiBReih7YXR0YWNoUmVzaXplTGlzdGVuZXI6ZSxkZWZhdWx0UGFyZW50OnQsbWVhc3VyZVNjcm9sbDpuLGNoZWNrSXNTY3JvbGxSb290OnIscmVzZXRUcmFuc2Zvcm06aX0pe3JldHVybiBjbGFzc3tjb25zdHJ1Y3RvcihzPXt9LHU9dD8uKCkpe3RoaXMuaWQ9eXZlKyssdGhpcy5hbmltYXRpb25JZD0wLHRoaXMuYW5pbWF0aW9uQ29tbWl0SWQ9MCx0aGlzLmNoaWxkcmVuPW5ldyBTZXQsdGhpcy5vcHRpb25zPXt9LHRoaXMuaXNUcmVlQW5pbWF0aW5nPSExLHRoaXMuaXNBbmltYXRpb25CbG9ja2VkPSExLHRoaXMuaXNMYXlvdXREaXJ0eT0hMSx0aGlzLmlzUHJvamVjdGlvbkRpcnR5PSExLHRoaXMuaXNTaGFyZWRQcm9qZWN0aW9uRGlydHk9ITEsdGhpcy5pc1RyYW5zZm9ybURpcnR5PSExLHRoaXMudXBkYXRlTWFudWFsbHlCbG9ja2VkPSExLHRoaXMudXBkYXRlQmxvY2tlZEJ5UmVzaXplPSExLHRoaXMuaXNVcGRhdGluZz0hMSx0aGlzLmlzU1ZHPSExLHRoaXMubmVlZHNSZXNldD0hMSx0aGlzLnNob3VsZFJlc2V0VHJhbnNmb3JtPSExLHRoaXMuaGFzQ2hlY2tlZE9wdGltaXNlZEFwcGVhcj0hMSx0aGlzLnRyZWVTY2FsZT17eDoxLHk6MX0sdGhpcy5ldmVudEhhbmRsZXJzPW5ldyBNYXAsdGhpcy5oYXNUcmVlQW5pbWF0ZWQ9ITEsdGhpcy5sYXlvdXRWZXJzaW9uPTAsdGhpcy51cGRhdGVTY2hlZHVsZWQ9ITEsdGhpcy5zY2hlZHVsZVVwZGF0ZT0oKT0+dGhpcy51cGRhdGUoKSx0aGlzLnByb2plY3Rpb25VcGRhdGVTY2hlZHVsZWQ9ITEsdGhpcy5jaGVja1VwZGF0ZUZhaWxlZD0oKT0+e3RoaXMuaXNVcGRhdGluZyYmKHRoaXMuaXNVcGRhdGluZz0hMSx0aGlzLmNsZWFyQWxsU25hcHNob3RzKCkpfSx0aGlzLnVwZGF0ZVByb2plY3Rpb249KCk9Pnt0aGlzLnByb2plY3Rpb25VcGRhdGVTY2hlZHVsZWQ9ITEsdGhpcy5ub2Rlcy5mb3JFYWNoKGJ2ZSksdGhpcy5ub2Rlcy5mb3JFYWNoKE92ZSksdGhpcy5ub2Rlcy5mb3JFYWNoKFR2ZSksdGhpcy5ub2Rlcy5mb3JFYWNoKHh2ZSl9LHRoaXMucmVzb2x2ZWRSZWxhdGl2ZVRhcmdldEF0PTAsdGhpcy5saW5rZWRQYXJlbnRWZXJzaW9uPTAsdGhpcy5oYXNQcm9qZWN0ZWQ9ITEsdGhpcy5pc1Zpc2libGU9ITAsdGhpcy5hbmltYXRpb25Qcm9ncmVzcz0wLHRoaXMuc2hhcmVkTm9kZXM9bmV3IE1hcCx0aGlzLmxhdGVzdFZhbHVlcz1zLHRoaXMucm9vdD11P3Uucm9vdHx8dTp0aGlzLHRoaXMucGF0aD11P1suLi51LnBhdGgsdV06W10sdGhpcy5wYXJlbnQ9dSx0aGlzLmRlcHRoPXU/dS5kZXB0aCsxOjA7Zm9yKGxldCBmPTA7Zjx0aGlzLnBhdGgubGVuZ3RoO2YrKyl0aGlzLnBhdGhbZl0uc2hvdWxkUmVzZXRUcmFuc2Zvcm09ITA7dGhpcy5yb290PT09dGhpcyYmKHRoaXMubm9kZXM9bmV3IGR2ZSl9YWRkRXZlbnRMaXN0ZW5lcihzLHUpe3JldHVybiB0aGlzLmV2ZW50SGFuZGxlcnMuaGFzKHMpfHx0aGlzLmV2ZW50SGFuZGxlcnMuc2V0KHMsbmV3IE5UKSx0aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KHMpLmFkZCh1KX1ub3RpZnlMaXN0ZW5lcnMocywuLi51KXtjb25zdCBmPXRoaXMuZXZlbnRIYW5kbGVycy5nZXQocyk7ZiYmZi5ub3RpZnkoLi4udSl9aGFzTGlzdGVuZXJzKHMpe3JldHVybiB0aGlzLmV2ZW50SGFuZGxlcnMuaGFzKHMpfW1vdW50KHMpe2lmKHRoaXMuaW5zdGFuY2UpcmV0dXJuO3RoaXMuaXNTVkc9WFQocykmJiFneWUocyksdGhpcy5pbnN0YW5jZT1zO2NvbnN0e2xheW91dElkOnUsbGF5b3V0OmYsdmlzdWFsRWxlbWVudDpkfT10aGlzLm9wdGlvbnM7aWYoZCYmIWQuY3VycmVudCYmZC5tb3VudChzKSx0aGlzLnJvb3Qubm9kZXMuYWRkKHRoaXMpLHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5jaGlsZHJlbi5hZGQodGhpcyksdGhpcy5yb290Lmhhc1RyZWVBbmltYXRlZCYmKGZ8fHUpJiYodGhpcy5pc0xheW91dERpcnR5PSEwKSxlKXtsZXQgcCxtPTA7Y29uc3QgeT0oKT0+dGhpcy5yb290LnVwZGF0ZUJsb2NrZWRCeVJlc2l6ZT0hMTtNdC5yZWFkKCgpPT57bT13aW5kb3cuaW5uZXJXaWR0aH0pLGUocywoKT0+e2NvbnN0IHg9d2luZG93LmlubmVyV2lkdGg7eCE9PW0mJihtPXgsdGhpcy5yb290LnVwZGF0ZUJsb2NrZWRCeVJlc2l6ZT0hMCxwJiZwKCkscD1odmUoeSwyNTApLFdwLmhhc0FuaW1hdGVkU2luY2VSZXNpemUmJihXcC5oYXNBbmltYXRlZFNpbmNlUmVzaXplPSExLHRoaXMubm9kZXMuZm9yRWFjaCh1QikpKX0pfXUmJnRoaXMucm9vdC5yZWdpc3RlclNoYXJlZE5vZGUodSx0aGlzKSx0aGlzLm9wdGlvbnMuYW5pbWF0ZSE9PSExJiZkJiYodXx8ZikmJnRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZGlkVXBkYXRlIiwoe2RlbHRhOnAsaGFzTGF5b3V0Q2hhbmdlZDptLGhhc1JlbGF0aXZlTGF5b3V0Q2hhbmdlZDp5LGxheW91dDp4fSk9PntpZih0aGlzLmlzVHJlZUFuaW1hdGlvbkJsb2NrZWQoKSl7dGhpcy50YXJnZXQ9dm9pZCAwLHRoaXMucmVsYXRpdmVUYXJnZXQ9dm9pZCAwO3JldHVybn1jb25zdCB3PXRoaXMub3B0aW9ucy50cmFuc2l0aW9ufHxkLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fE12ZSx7b25MYXlvdXRBbmltYXRpb25TdGFydDpiLG9uTGF5b3V0QW5pbWF0aW9uQ29tcGxldGU6Z309ZC5nZXRQcm9wcygpLF89IXRoaXMudGFyZ2V0TGF5b3V0fHwhWXoodGhpcy50YXJnZXRMYXlvdXQseCksTz0hbSYmeTtpZih0aGlzLm9wdGlvbnMubGF5b3V0Um9vdHx8dGhpcy5yZXN1bWVGcm9tfHxPfHxtJiYoX3x8IXRoaXMuY3VycmVudEFuaW1hdGlvbikpe3RoaXMucmVzdW1lRnJvbSYmKHRoaXMucmVzdW1pbmdGcm9tPXRoaXMucmVzdW1lRnJvbSx0aGlzLnJlc3VtaW5nRnJvbS5yZXN1bWluZ0Zyb209dm9pZCAwKTtjb25zdCBFPXsuLi56VCh3LCJsYXlvdXQiKSxvblBsYXk6YixvbkNvbXBsZXRlOmd9OyhkLnNob3VsZFJlZHVjZU1vdGlvbnx8dGhpcy5vcHRpb25zLmxheW91dFJvb3QpJiYoRS5kZWxheT0wLEUudHlwZT0hMSksdGhpcy5zdGFydEFuaW1hdGlvbihFKSx0aGlzLnNldEFuaW1hdGlvbk9yaWdpbihwLE8sRS5wYXRoKX1lbHNlIG18fHVCKHRoaXMpLHRoaXMuaXNMZWFkKCkmJnRoaXMub3B0aW9ucy5vbkV4aXRDb21wbGV0ZSYmdGhpcy5vcHRpb25zLm9uRXhpdENvbXBsZXRlKCk7dGhpcy50YXJnZXRMYXlvdXQ9eH0pfXVubW91bnQoKXt0aGlzLm9wdGlvbnMubGF5b3V0SWQmJnRoaXMud2lsbFVwZGF0ZSgpLHRoaXMucm9vdC5ub2Rlcy5yZW1vdmUodGhpcyk7Y29uc3Qgcz10aGlzLmdldFN0YWNrKCk7cyYmcy5yZW1vdmUodGhpcyksdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmNoaWxkcmVuLmRlbGV0ZSh0aGlzKSx0aGlzLmluc3RhbmNlPXZvaWQgMCx0aGlzLmV2ZW50SGFuZGxlcnMuY2xlYXIoKSxjbyh0aGlzLnVwZGF0ZVByb2plY3Rpb24pfWJsb2NrVXBkYXRlKCl7dGhpcy51cGRhdGVNYW51YWxseUJsb2NrZWQ9ITB9dW5ibG9ja1VwZGF0ZSgpe3RoaXMudXBkYXRlTWFudWFsbHlCbG9ja2VkPSExfWlzVXBkYXRlQmxvY2tlZCgpe3JldHVybiB0aGlzLnVwZGF0ZU1hbnVhbGx5QmxvY2tlZHx8dGhpcy51cGRhdGVCbG9ja2VkQnlSZXNpemV9aXNUcmVlQW5pbWF0aW9uQmxvY2tlZCgpe3JldHVybiB0aGlzLmlzQW5pbWF0aW9uQmxvY2tlZHx8dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmlzVHJlZUFuaW1hdGlvbkJsb2NrZWQoKXx8ITF9c3RhcnRVcGRhdGUoKXt0aGlzLmlzVXBkYXRlQmxvY2tlZCgpfHwodGhpcy5pc1VwZGF0aW5nPSEwLHRoaXMubm9kZXMmJnRoaXMubm9kZXMuZm9yRWFjaChFdmUpLHRoaXMuYW5pbWF0aW9uSWQrKyl9Z2V0VHJhbnNmb3JtVGVtcGxhdGUoKXtjb25zdHt2aXN1YWxFbGVtZW50OnN9PXRoaXMub3B0aW9ucztyZXR1cm4gcyYmcy5nZXRQcm9wcygpLnRyYW5zZm9ybVRlbXBsYXRlfXdpbGxVcGRhdGUocz0hMCl7aWYodGhpcy5yb290Lmhhc1RyZWVBbmltYXRlZD0hMCx0aGlzLnJvb3QuaXNVcGRhdGVCbG9ja2VkKCkpe3RoaXMub3B0aW9ucy5vbkV4aXRDb21wbGV0ZSYmdGhpcy5vcHRpb25zLm9uRXhpdENvbXBsZXRlKCk7cmV0dXJufWlmKHdpbmRvdy5Nb3Rpb25DYW5jZWxPcHRpbWlzZWRBbmltYXRpb24mJiF0aGlzLmhhc0NoZWNrZWRPcHRpbWlzZWRBcHBlYXImJlp6KHRoaXMpLCF0aGlzLnJvb3QuaXNVcGRhdGluZyYmdGhpcy5yb290LnN0YXJ0VXBkYXRlKCksdGhpcy5pc0xheW91dERpcnR5KXJldHVybjt0aGlzLmlzTGF5b3V0RGlydHk9ITA7Zm9yKGxldCBwPTA7cDx0aGlzLnBhdGgubGVuZ3RoO3ArKyl7Y29uc3QgbT10aGlzLnBhdGhbcF07bS5zaG91bGRSZXNldFRyYW5zZm9ybT0hMCwodHlwZW9mIG0ubGF0ZXN0VmFsdWVzLng9PSJzdHJpbmcifHx0eXBlb2YgbS5sYXRlc3RWYWx1ZXMueT09InN0cmluZyIpJiYobS5pc0xheW91dERpcnR5PSEwKSxtLnVwZGF0ZVNjcm9sbCgic25hcHNob3QiKSxtLm9wdGlvbnMubGF5b3V0Um9vdCYmbS53aWxsVXBkYXRlKCExKX1jb25zdHtsYXlvdXRJZDp1LGxheW91dDpmfT10aGlzLm9wdGlvbnM7aWYodT09PXZvaWQgMCYmIWYpcmV0dXJuO2NvbnN0IGQ9dGhpcy5nZXRUcmFuc2Zvcm1UZW1wbGF0ZSgpO3RoaXMucHJldlRyYW5zZm9ybVRlbXBsYXRlVmFsdWU9ZD9kKHRoaXMubGF0ZXN0VmFsdWVzLCIiKTp2b2lkIDAsdGhpcy51cGRhdGVTbmFwc2hvdCgpLHMmJnRoaXMubm90aWZ5TGlzdGVuZXJzKCJ3aWxsVXBkYXRlIil9dXBkYXRlKCl7aWYodGhpcy51cGRhdGVTY2hlZHVsZWQ9ITEsdGhpcy5pc1VwZGF0ZUJsb2NrZWQoKSl7Y29uc3QgZj10aGlzLnVwZGF0ZUJsb2NrZWRCeVJlc2l6ZTt0aGlzLnVuYmxvY2tVcGRhdGUoKSx0aGlzLnVwZGF0ZUJsb2NrZWRCeVJlc2l6ZT0hMSx0aGlzLmNsZWFyQWxsU25hcHNob3RzKCksZiYmdGhpcy5ub2Rlcy5mb3JFYWNoKFN2ZSksdGhpcy5ub2Rlcy5mb3JFYWNoKHNCKTtyZXR1cm59aWYodGhpcy5hbmltYXRpb25JZDw9dGhpcy5hbmltYXRpb25Db21taXRJZCl7dGhpcy5ub2Rlcy5mb3JFYWNoKGxCKTtyZXR1cm59dGhpcy5hbmltYXRpb25Db21taXRJZD10aGlzLmFuaW1hdGlvbklkLHRoaXMuaXNVcGRhdGluZz8odGhpcy5pc1VwZGF0aW5nPSExLHRoaXMubm9kZXMuZm9yRWFjaChBdmUpLHRoaXMubm9kZXMuZm9yRWFjaChfdmUpLHRoaXMubm9kZXMuZm9yRWFjaCh2dmUpLHRoaXMubm9kZXMuZm9yRWFjaChndmUpKTp0aGlzLm5vZGVzLmZvckVhY2gobEIpLHRoaXMuY2xlYXJBbGxTbmFwc2hvdHMoKTtjb25zdCB1PVduLm5vdygpO1JuLmRlbHRhPU5pKDAsMWUzLzYwLHUtUm4udGltZXN0YW1wKSxSbi50aW1lc3RhbXA9dSxSbi5pc1Byb2Nlc3Npbmc9ITAsc1MudXBkYXRlLnByb2Nlc3MoUm4pLHNTLnByZVJlbmRlci5wcm9jZXNzKFJuKSxzUy5yZW5kZXIucHJvY2VzcyhSbiksUm4uaXNQcm9jZXNzaW5nPSExfWRpZFVwZGF0ZSgpe3RoaXMudXBkYXRlU2NoZWR1bGVkfHwodGhpcy51cGRhdGVTY2hlZHVsZWQ9ITAsV1QucmVhZCh0aGlzLnNjaGVkdWxlVXBkYXRlKSl9Y2xlYXJBbGxTbmFwc2hvdHMoKXt0aGlzLm5vZGVzLmZvckVhY2god3ZlKSx0aGlzLnNoYXJlZE5vZGVzLmZvckVhY2goQ3ZlKX1zY2hlZHVsZVVwZGF0ZVByb2plY3Rpb24oKXt0aGlzLnByb2plY3Rpb25VcGRhdGVTY2hlZHVsZWR8fCh0aGlzLnByb2plY3Rpb25VcGRhdGVTY2hlZHVsZWQ9ITAsTXQucHJlUmVuZGVyKHRoaXMudXBkYXRlUHJvamVjdGlvbiwhMSwhMCkpfXNjaGVkdWxlQ2hlY2tBZnRlclVubW91bnQoKXtNdC5wb3N0UmVuZGVyKCgpPT57dGhpcy5pc0xheW91dERpcnR5P3RoaXMucm9vdC5kaWRVcGRhdGUoKTp0aGlzLnJvb3QuY2hlY2tVcGRhdGVGYWlsZWQoKX0pfXVwZGF0ZVNuYXBzaG90KCl7dGhpcy5zbmFwc2hvdHx8IXRoaXMuaW5zdGFuY2V8fCh0aGlzLnNuYXBzaG90PXRoaXMubWVhc3VyZSgpLHRoaXMuc25hcHNob3QmJiFZbih0aGlzLnNuYXBzaG90Lm1lYXN1cmVkQm94LngpJiYhWW4odGhpcy5zbmFwc2hvdC5tZWFzdXJlZEJveC55KSYmKHRoaXMuc25hcHNob3Q9dm9pZCAwKSl9dXBkYXRlTGF5b3V0KCl7aWYoIXRoaXMuaW5zdGFuY2V8fCh0aGlzLnVwZGF0ZVNjcm9sbCgpLCEodGhpcy5vcHRpb25zLmFsd2F5c01lYXN1cmVMYXlvdXQmJnRoaXMuaXNMZWFkKCkpJiYhdGhpcy5pc0xheW91dERpcnR5KSlyZXR1cm47aWYodGhpcy5yZXN1bWVGcm9tJiYhdGhpcy5yZXN1bWVGcm9tLmluc3RhbmNlKWZvcihsZXQgZj0wO2Y8dGhpcy5wYXRoLmxlbmd0aDtmKyspdGhpcy5wYXRoW2ZdLnVwZGF0ZVNjcm9sbCgpO2NvbnN0IHM9dGhpcy5sYXlvdXQ7dGhpcy5sYXlvdXQ9dGhpcy5tZWFzdXJlKCExKSx0aGlzLmxheW91dFZlcnNpb24rKyx0aGlzLmxheW91dENvcnJlY3RlZHx8KHRoaXMubGF5b3V0Q29ycmVjdGVkPXBuKCkpLHRoaXMuaXNMYXlvdXREaXJ0eT0hMSx0aGlzLnByb2plY3Rpb25EZWx0YT12b2lkIDAsdGhpcy5ub3RpZnlMaXN0ZW5lcnMoIm1lYXN1cmUiLHRoaXMubGF5b3V0LmxheW91dEJveCk7Y29uc3R7dmlzdWFsRWxlbWVudDp1fT10aGlzLm9wdGlvbnM7dSYmdS5ub3RpZnkoIkxheW91dE1lYXN1cmUiLHRoaXMubGF5b3V0LmxheW91dEJveCxzP3MubGF5b3V0Qm94OnZvaWQgMCl9dXBkYXRlU2Nyb2xsKHM9Im1lYXN1cmUiKXtsZXQgdT0hISh0aGlzLm9wdGlvbnMubGF5b3V0U2Nyb2xsJiZ0aGlzLmluc3RhbmNlKTtpZih0aGlzLnNjcm9sbCYmdGhpcy5zY3JvbGwuYW5pbWF0aW9uSWQ9PT10aGlzLnJvb3QuYW5pbWF0aW9uSWQmJnRoaXMuc2Nyb2xsLnBoYXNlPT09cyYmKHU9ITEpLHUmJnRoaXMuaW5zdGFuY2Upe2NvbnN0IGY9cih0aGlzLmluc3RhbmNlKTt0aGlzLnNjcm9sbD17YW5pbWF0aW9uSWQ6dGhpcy5yb290LmFuaW1hdGlvbklkLHBoYXNlOnMsaXNSb290OmYsb2Zmc2V0Om4odGhpcy5pbnN0YW5jZSksd2FzUm9vdDp0aGlzLnNjcm9sbD90aGlzLnNjcm9sbC5pc1Jvb3Q6Zn19fXJlc2V0VHJhbnNmb3JtKCl7aWYoIWkpcmV0dXJuO2NvbnN0IHM9dGhpcy5pc0xheW91dERpcnR5fHx0aGlzLnNob3VsZFJlc2V0VHJhbnNmb3JtfHx0aGlzLm9wdGlvbnMuYWx3YXlzTWVhc3VyZUxheW91dCx1PXRoaXMucHJvamVjdGlvbkRlbHRhJiYhV3oodGhpcy5wcm9qZWN0aW9uRGVsdGEpLGY9dGhpcy5nZXRUcmFuc2Zvcm1UZW1wbGF0ZSgpLGQ9Zj9mKHRoaXMubGF0ZXN0VmFsdWVzLCIiKTp2b2lkIDAscD1kIT09dGhpcy5wcmV2VHJhbnNmb3JtVGVtcGxhdGVWYWx1ZTtzJiZ0aGlzLmluc3RhbmNlJiYodXx8dHModGhpcy5sYXRlc3RWYWx1ZXMpfHxwKSYmKGkodGhpcy5pbnN0YW5jZSxkKSx0aGlzLnNob3VsZFJlc2V0VHJhbnNmb3JtPSExLHRoaXMuc2NoZWR1bGVSZW5kZXIoKSl9bWVhc3VyZShzPSEwKXtjb25zdCB1PXRoaXMubWVhc3VyZVBhZ2VCb3goKTtsZXQgZj10aGlzLnJlbW92ZUVsZW1lbnRTY3JvbGwodSk7cmV0dXJuIHMmJihmPXRoaXMucmVtb3ZlVHJhbnNmb3JtKGYpKSxSdmUoZikse2FuaW1hdGlvbklkOnRoaXMucm9vdC5hbmltYXRpb25JZCxtZWFzdXJlZEJveDp1LGxheW91dEJveDpmLGxhdGVzdFZhbHVlczp7fSxzb3VyY2U6dGhpcy5pZH19bWVhc3VyZVBhZ2VCb3goKXtjb25zdHt2aXN1YWxFbGVtZW50OnN9PXRoaXMub3B0aW9ucztpZighcylyZXR1cm4gcG4oKTtjb25zdCB1PXMubWVhc3VyZVZpZXdwb3J0Qm94KCk7aWYoISh0aGlzLnNjcm9sbD8ud2FzUm9vdHx8dGhpcy5wYXRoLnNvbWUoTnZlKSkpe2NvbnN0e3Njcm9sbDpkfT10aGlzLnJvb3Q7ZCYmKHhpKHUueCxkLm9mZnNldC54KSx4aSh1LnksZC5vZmZzZXQueSkpfXJldHVybiB1fXJlbW92ZUVsZW1lbnRTY3JvbGwocyl7Y29uc3QgdT1wbigpO2lmKFFyKHUscyksdGhpcy5zY3JvbGw/Lndhc1Jvb3QpcmV0dXJuIHU7Zm9yKGxldCBmPTA7Zjx0aGlzLnBhdGgubGVuZ3RoO2YrKyl7Y29uc3QgZD10aGlzLnBhdGhbZl0se3Njcm9sbDpwLG9wdGlvbnM6bX09ZDtkIT09dGhpcy5yb290JiZwJiZtLmxheW91dFNjcm9sbCYmKHAud2FzUm9vdCYmUXIodSxzKSx4aSh1LngscC5vZmZzZXQueCkseGkodS55LHAub2Zmc2V0LnkpKX1yZXR1cm4gdX1hcHBseVRyYW5zZm9ybShzLHU9ITEsZil7Y29uc3QgZD1mfHxwbigpO1FyKGQscyk7Zm9yKGxldCBwPTA7cDx0aGlzLnBhdGgubGVuZ3RoO3ArKyl7Y29uc3QgbT10aGlzLnBhdGhbcF07IXUmJm0ub3B0aW9ucy5sYXlvdXRTY3JvbGwmJm0uc2Nyb2xsJiZtIT09bS5yb290JiYoeGkoZC54LC1tLnNjcm9sbC5vZmZzZXQueCkseGkoZC55LC1tLnNjcm9sbC5vZmZzZXQueSkpLHRzKG0ubGF0ZXN0VmFsdWVzKSYmR3AoZCxtLmxhdGVzdFZhbHVlcyxtLmxheW91dD8ubGF5b3V0Qm94KX1yZXR1cm4gdHModGhpcy5sYXRlc3RWYWx1ZXMpJiZHcChkLHRoaXMubGF0ZXN0VmFsdWVzLHRoaXMubGF5b3V0Py5sYXlvdXRCb3gpLGR9cmVtb3ZlVHJhbnNmb3JtKHMpe2NvbnN0IHU9cG4oKTtRcih1LHMpO2ZvcihsZXQgZj0wO2Y8dGhpcy5wYXRoLmxlbmd0aDtmKyspe2NvbnN0IGQ9dGhpcy5wYXRoW2ZdO2lmKCF0cyhkLmxhdGVzdFZhbHVlcykpY29udGludWU7bGV0IHA7ZC5pbnN0YW5jZSYmKGtfKGQubGF0ZXN0VmFsdWVzKSYmZC51cGRhdGVTbmFwc2hvdCgpLHA9cG4oKSxRcihwLGQubWVhc3VyZVBhZ2VCb3goKSkpLFEkKHUsZC5sYXRlc3RWYWx1ZXMsZC5zbmFwc2hvdD8ubGF5b3V0Qm94LHApfXJldHVybiB0cyh0aGlzLmxhdGVzdFZhbHVlcykmJlEkKHUsdGhpcy5sYXRlc3RWYWx1ZXMpLHV9c2V0VGFyZ2V0RGVsdGEocyl7dGhpcy50YXJnZXREZWx0YT1zLHRoaXMucm9vdC5zY2hlZHVsZVVwZGF0ZVByb2plY3Rpb24oKSx0aGlzLmlzUHJvamVjdGlvbkRpcnR5PSEwfXNldE9wdGlvbnMocyl7dGhpcy5vcHRpb25zPXsuLi50aGlzLm9wdGlvbnMsLi4ucyxjcm9zc2ZhZGU6cy5jcm9zc2ZhZGUhPT12b2lkIDA/cy5jcm9zc2ZhZGU6ITB9fWNsZWFyTWVhc3VyZW1lbnRzKCl7dGhpcy5zY3JvbGw9dm9pZCAwLHRoaXMubGF5b3V0PXZvaWQgMCx0aGlzLnNuYXBzaG90PXZvaWQgMCx0aGlzLnByZXZUcmFuc2Zvcm1UZW1wbGF0ZVZhbHVlPXZvaWQgMCx0aGlzLnRhcmdldERlbHRhPXZvaWQgMCx0aGlzLnRhcmdldD12b2lkIDAsdGhpcy5pc0xheW91dERpcnR5PSExfWZvcmNlUmVsYXRpdmVQYXJlbnRUb1Jlc29sdmVUYXJnZXQoKXt0aGlzLnJlbGF0aXZlUGFyZW50JiZ0aGlzLnJlbGF0aXZlUGFyZW50LnJlc29sdmVkUmVsYXRpdmVUYXJnZXRBdCE9PVJuLnRpbWVzdGFtcCYmdGhpcy5yZWxhdGl2ZVBhcmVudC5yZXNvbHZlVGFyZ2V0RGVsdGEoITApfXJlc29sdmVUYXJnZXREZWx0YShzPSExKXtjb25zdCB1PXRoaXMuZ2V0TGVhZCgpO3RoaXMuaXNQcm9qZWN0aW9uRGlydHl8fCh0aGlzLmlzUHJvamVjdGlvbkRpcnR5PXUuaXNQcm9qZWN0aW9uRGlydHkpLHRoaXMuaXNUcmFuc2Zvcm1EaXJ0eXx8KHRoaXMuaXNUcmFuc2Zvcm1EaXJ0eT11LmlzVHJhbnNmb3JtRGlydHkpLHRoaXMuaXNTaGFyZWRQcm9qZWN0aW9uRGlydHl8fCh0aGlzLmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5PXUuaXNTaGFyZWRQcm9qZWN0aW9uRGlydHkpO2NvbnN0IGY9ISF0aGlzLnJlc3VtaW5nRnJvbXx8dGhpcyE9PXU7aWYoIShzfHxmJiZ0aGlzLmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5fHx0aGlzLmlzUHJvamVjdGlvbkRpcnR5fHx0aGlzLnBhcmVudD8uaXNQcm9qZWN0aW9uRGlydHl8fHRoaXMuYXR0ZW1wdFRvUmVzb2x2ZVJlbGF0aXZlVGFyZ2V0fHx0aGlzLnJvb3QudXBkYXRlQmxvY2tlZEJ5UmVzaXplKSlyZXR1cm47Y29uc3R7bGF5b3V0OnAsbGF5b3V0SWQ6bX09dGhpcy5vcHRpb25zO2lmKCF0aGlzLmxheW91dHx8IShwfHxtKSlyZXR1cm47dGhpcy5yZXNvbHZlZFJlbGF0aXZlVGFyZ2V0QXQ9Um4udGltZXN0YW1wO2NvbnN0IHk9dGhpcy5nZXRDbG9zZXN0UHJvamVjdGluZ1BhcmVudCgpO3kmJnRoaXMubGlua2VkUGFyZW50VmVyc2lvbiE9PXkubGF5b3V0VmVyc2lvbiYmIXkub3B0aW9ucy5sYXlvdXRSb290JiZ0aGlzLnJlbW92ZVJlbGF0aXZlVGFyZ2V0KCksIXRoaXMudGFyZ2V0RGVsdGEmJiF0aGlzLnJlbGF0aXZlVGFyZ2V0JiYodGhpcy5vcHRpb25zLmxheW91dEFuY2hvciE9PSExJiZ5JiZ5LmxheW91dD90aGlzLmNyZWF0ZVJlbGF0aXZlVGFyZ2V0KHksdGhpcy5sYXlvdXQubGF5b3V0Qm94LHkubGF5b3V0LmxheW91dEJveCk6dGhpcy5yZW1vdmVSZWxhdGl2ZVRhcmdldCgpKSwhKCF0aGlzLnJlbGF0aXZlVGFyZ2V0JiYhdGhpcy50YXJnZXREZWx0YSkmJih0aGlzLnRhcmdldHx8KHRoaXMudGFyZ2V0PXBuKCksdGhpcy50YXJnZXRXaXRoVHJhbnNmb3Jtcz1wbigpKSx0aGlzLnJlbGF0aXZlVGFyZ2V0JiZ0aGlzLnJlbGF0aXZlVGFyZ2V0T3JpZ2luJiZ0aGlzLnJlbGF0aXZlUGFyZW50JiZ0aGlzLnJlbGF0aXZlUGFyZW50LnRhcmdldD8odGhpcy5mb3JjZVJlbGF0aXZlUGFyZW50VG9SZXNvbHZlVGFyZ2V0KCksZXZlKHRoaXMudGFyZ2V0LHRoaXMucmVsYXRpdmVUYXJnZXQsdGhpcy5yZWxhdGl2ZVBhcmVudC50YXJnZXQsdGhpcy5vcHRpb25zLmxheW91dEFuY2hvcnx8dm9pZCAwKSk6dGhpcy50YXJnZXREZWx0YT8odGhpcy5yZXN1bWluZ0Zyb20/dGhpcy5hcHBseVRyYW5zZm9ybSh0aGlzLmxheW91dC5sYXlvdXRCb3gsITEsdGhpcy50YXJnZXQpOlFyKHRoaXMudGFyZ2V0LHRoaXMubGF5b3V0LmxheW91dEJveCksTHoodGhpcy50YXJnZXQsdGhpcy50YXJnZXREZWx0YSkpOlFyKHRoaXMudGFyZ2V0LHRoaXMubGF5b3V0LmxheW91dEJveCksdGhpcy5hdHRlbXB0VG9SZXNvbHZlUmVsYXRpdmVUYXJnZXQmJih0aGlzLmF0dGVtcHRUb1Jlc29sdmVSZWxhdGl2ZVRhcmdldD0hMSx0aGlzLm9wdGlvbnMubGF5b3V0QW5jaG9yIT09ITEmJnkmJiEheS5yZXN1bWluZ0Zyb209PSEhdGhpcy5yZXN1bWluZ0Zyb20mJiF5Lm9wdGlvbnMubGF5b3V0U2Nyb2xsJiZ5LnRhcmdldCYmdGhpcy5hbmltYXRpb25Qcm9ncmVzcyE9PTE/dGhpcy5jcmVhdGVSZWxhdGl2ZVRhcmdldCh5LHRoaXMudGFyZ2V0LHkudGFyZ2V0KTp0aGlzLnJlbGF0aXZlUGFyZW50PXRoaXMucmVsYXRpdmVUYXJnZXQ9dm9pZCAwKSl9Z2V0Q2xvc2VzdFByb2plY3RpbmdQYXJlbnQoKXtpZighKCF0aGlzLnBhcmVudHx8a18odGhpcy5wYXJlbnQubGF0ZXN0VmFsdWVzKXx8RHoodGhpcy5wYXJlbnQubGF0ZXN0VmFsdWVzKSkpcmV0dXJuIHRoaXMucGFyZW50LmlzUHJvamVjdGluZygpP3RoaXMucGFyZW50OnRoaXMucGFyZW50LmdldENsb3Nlc3RQcm9qZWN0aW5nUGFyZW50KCl9aXNQcm9qZWN0aW5nKCl7cmV0dXJuISEoKHRoaXMucmVsYXRpdmVUYXJnZXR8fHRoaXMudGFyZ2V0RGVsdGF8fHRoaXMub3B0aW9ucy5sYXlvdXRSb290KSYmdGhpcy5sYXlvdXQpfWNyZWF0ZVJlbGF0aXZlVGFyZ2V0KHMsdSxmKXt0aGlzLnJlbGF0aXZlUGFyZW50PXMsdGhpcy5saW5rZWRQYXJlbnRWZXJzaW9uPXMubGF5b3V0VmVyc2lvbix0aGlzLmZvcmNlUmVsYXRpdmVQYXJlbnRUb1Jlc29sdmVUYXJnZXQoKSx0aGlzLnJlbGF0aXZlVGFyZ2V0PXBuKCksdGhpcy5yZWxhdGl2ZVRhcmdldE9yaWdpbj1wbigpLG15KHRoaXMucmVsYXRpdmVUYXJnZXRPcmlnaW4sdSxmLHRoaXMub3B0aW9ucy5sYXlvdXRBbmNob3J8fHZvaWQgMCksUXIodGhpcy5yZWxhdGl2ZVRhcmdldCx0aGlzLnJlbGF0aXZlVGFyZ2V0T3JpZ2luKX1yZW1vdmVSZWxhdGl2ZVRhcmdldCgpe3RoaXMucmVsYXRpdmVQYXJlbnQ9dGhpcy5yZWxhdGl2ZVRhcmdldD12b2lkIDB9Y2FsY1Byb2plY3Rpb24oKXtjb25zdCBzPXRoaXMuZ2V0TGVhZCgpLHU9ISF0aGlzLnJlc3VtaW5nRnJvbXx8dGhpcyE9PXM7bGV0IGY9ITA7aWYoKHRoaXMuaXNQcm9qZWN0aW9uRGlydHl8fHRoaXMucGFyZW50Py5pc1Byb2plY3Rpb25EaXJ0eSkmJihmPSExKSx1JiYodGhpcy5pc1NoYXJlZFByb2plY3Rpb25EaXJ0eXx8dGhpcy5pc1RyYW5zZm9ybURpcnR5KSYmKGY9ITEpLHRoaXMucmVzb2x2ZWRSZWxhdGl2ZVRhcmdldEF0PT09Um4udGltZXN0YW1wJiYoZj0hMSksZilyZXR1cm47Y29uc3R7bGF5b3V0OmQsbGF5b3V0SWQ6cH09dGhpcy5vcHRpb25zO2lmKHRoaXMuaXNUcmVlQW5pbWF0aW5nPSEhKHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5pc1RyZWVBbmltYXRpbmd8fHRoaXMuY3VycmVudEFuaW1hdGlvbnx8dGhpcy5wZW5kaW5nQW5pbWF0aW9uKSx0aGlzLmlzVHJlZUFuaW1hdGluZ3x8KHRoaXMudGFyZ2V0RGVsdGE9dGhpcy5yZWxhdGl2ZVRhcmdldD12b2lkIDApLCF0aGlzLmxheW91dHx8IShkfHxwKSlyZXR1cm47UXIodGhpcy5sYXlvdXRDb3JyZWN0ZWQsdGhpcy5sYXlvdXQubGF5b3V0Qm94KTtjb25zdCBtPXRoaXMudHJlZVNjYWxlLngseT10aGlzLnRyZWVTY2FsZS55O2p5ZSh0aGlzLmxheW91dENvcnJlY3RlZCx0aGlzLnRyZWVTY2FsZSx0aGlzLnBhdGgsdSkscy5sYXlvdXQmJiFzLnRhcmdldCYmKHRoaXMudHJlZVNjYWxlLnghPT0xfHx0aGlzLnRyZWVTY2FsZS55IT09MSkmJihzLnRhcmdldD1zLmxheW91dC5sYXlvdXRCb3gscy50YXJnZXRXaXRoVHJhbnNmb3Jtcz1wbigpKTtjb25zdHt0YXJnZXQ6eH09cztpZigheCl7dGhpcy5wcmV2UHJvamVjdGlvbkRlbHRhJiYodGhpcy5jcmVhdGVQcm9qZWN0aW9uRGVsdGFzKCksdGhpcy5zY2hlZHVsZVJlbmRlcigpKTtyZXR1cm59IXRoaXMucHJvamVjdGlvbkRlbHRhfHwhdGhpcy5wcmV2UHJvamVjdGlvbkRlbHRhP3RoaXMuY3JlYXRlUHJvamVjdGlvbkRlbHRhcygpOihHJCh0aGlzLnByZXZQcm9qZWN0aW9uRGVsdGEueCx0aGlzLnByb2plY3Rpb25EZWx0YS54KSxHJCh0aGlzLnByZXZQcm9qZWN0aW9uRGVsdGEueSx0aGlzLnByb2plY3Rpb25EZWx0YS55KSksQWYodGhpcy5wcm9qZWN0aW9uRGVsdGEsdGhpcy5sYXlvdXRDb3JyZWN0ZWQseCx0aGlzLmxhdGVzdFZhbHVlcyksKHRoaXMudHJlZVNjYWxlLnghPT1tfHx0aGlzLnRyZWVTY2FsZS55IT09eXx8IXJCKHRoaXMucHJvamVjdGlvbkRlbHRhLngsdGhpcy5wcmV2UHJvamVjdGlvbkRlbHRhLngpfHwhckIodGhpcy5wcm9qZWN0aW9uRGVsdGEueSx0aGlzLnByZXZQcm9qZWN0aW9uRGVsdGEueSkpJiYodGhpcy5oYXNQcm9qZWN0ZWQ9ITAsdGhpcy5zY2hlZHVsZVJlbmRlcigpLHRoaXMubm90aWZ5TGlzdGVuZXJzKCJwcm9qZWN0aW9uVXBkYXRlIix4KSl9aGlkZSgpe3RoaXMuaXNWaXNpYmxlPSExfXNob3coKXt0aGlzLmlzVmlzaWJsZT0hMH1zY2hlZHVsZVJlbmRlcihzPSEwKXtpZih0aGlzLm9wdGlvbnMudmlzdWFsRWxlbWVudD8uc2NoZWR1bGVSZW5kZXIoKSxzKXtjb25zdCB1PXRoaXMuZ2V0U3RhY2soKTt1JiZ1LnNjaGVkdWxlUmVuZGVyKCl9dGhpcy5yZXN1bWluZ0Zyb20mJiF0aGlzLnJlc3VtaW5nRnJvbS5pbnN0YW5jZSYmKHRoaXMucmVzdW1pbmdGcm9tPXZvaWQgMCl9Y3JlYXRlUHJvamVjdGlvbkRlbHRhcygpe3RoaXMucHJldlByb2plY3Rpb25EZWx0YT0kbCgpLHRoaXMucHJvamVjdGlvbkRlbHRhPSRsKCksdGhpcy5wcm9qZWN0aW9uRGVsdGFXaXRoVHJhbnNmb3JtPSRsKCl9c2V0QW5pbWF0aW9uT3JpZ2luKHMsdT0hMSxmKXtjb25zdCBkPXRoaXMuc25hcHNob3QscD1kP2QubGF0ZXN0VmFsdWVzOnt9LG09ey4uLnRoaXMubGF0ZXN0VmFsdWVzfSx5PSRsKCk7KCF0aGlzLnJlbGF0aXZlUGFyZW50fHwhdGhpcy5yZWxhdGl2ZVBhcmVudC5vcHRpb25zLmxheW91dFJvb3QpJiYodGhpcy5yZWxhdGl2ZVRhcmdldD10aGlzLnJlbGF0aXZlVGFyZ2V0T3JpZ2luPXZvaWQgMCksdGhpcy5hdHRlbXB0VG9SZXNvbHZlUmVsYXRpdmVUYXJnZXQ9IXU7Y29uc3QgeD1wbigpLHc9ZD9kLnNvdXJjZTp2b2lkIDAsYj10aGlzLmxheW91dD90aGlzLmxheW91dC5zb3VyY2U6dm9pZCAwLGc9dyE9PWIsXz10aGlzLmdldFN0YWNrKCksTz0hX3x8Xy5tZW1iZXJzLmxlbmd0aDw9MSxFPSEhKGcmJiFPJiZ0aGlzLm9wdGlvbnMuY3Jvc3NmYWRlPT09ITAmJiF0aGlzLnBhdGguc29tZShQdmUpKTt0aGlzLmFuaW1hdGlvblByb2dyZXNzPTA7bGV0IGo7Y29uc3QgVD1mPy5pbnRlcnBvbGF0ZVByb2plY3Rpb24ocyk7dGhpcy5taXhUYXJnZXREZWx0YT1QPT57Y29uc3QgTj1QLzFlMyxSPVQ/LihOKTtSPyh5LngudHJhbnNsYXRlPVIueCx5Lnguc2NhbGU9anQocy54LnNjYWxlLDEsTikseS54Lm9yaWdpbj1zLngub3JpZ2luLHkueC5vcmlnaW5Qb2ludD1zLngub3JpZ2luUG9pbnQseS55LnRyYW5zbGF0ZT1SLnkseS55LnNjYWxlPWp0KHMueS5zY2FsZSwxLE4pLHkueS5vcmlnaW49cy55Lm9yaWdpbix5Lnkub3JpZ2luUG9pbnQ9cy55Lm9yaWdpblBvaW50KTooY0IoeS54LHMueCxOKSxjQih5Lnkscy55LE4pKSx0aGlzLnNldFRhcmdldERlbHRhKHkpLHRoaXMucmVsYXRpdmVUYXJnZXQmJnRoaXMucmVsYXRpdmVUYXJnZXRPcmlnaW4mJnRoaXMubGF5b3V0JiZ0aGlzLnJlbGF0aXZlUGFyZW50JiZ0aGlzLnJlbGF0aXZlUGFyZW50LmxheW91dCYmKG15KHgsdGhpcy5sYXlvdXQubGF5b3V0Qm94LHRoaXMucmVsYXRpdmVQYXJlbnQubGF5b3V0LmxheW91dEJveCx0aGlzLm9wdGlvbnMubGF5b3V0QW5jaG9yfHx2b2lkIDApLGp2ZSh0aGlzLnJlbGF0aXZlVGFyZ2V0LHRoaXMucmVsYXRpdmVUYXJnZXRPcmlnaW4seCxOKSxqJiZpdmUodGhpcy5yZWxhdGl2ZVRhcmdldCxqKSYmKHRoaXMuaXNQcm9qZWN0aW9uRGlydHk9ITEpLGp8fChqPXBuKCkpLFFyKGosdGhpcy5yZWxhdGl2ZVRhcmdldCkpLGcmJih0aGlzLmFuaW1hdGlvblZhbHVlcz1tLHN2ZShtLHAsdGhpcy5sYXRlc3RWYWx1ZXMsTixFLE8pKSxSJiZSLnJvdGF0ZSE9PXZvaWQgMCYmKHRoaXMuYW5pbWF0aW9uVmFsdWVzfHwodGhpcy5hbmltYXRpb25WYWx1ZXM9bSksdGhpcy5hbmltYXRpb25WYWx1ZXMucGF0aFJvdGF0aW9uPVIucm90YXRlKSx0aGlzLnJvb3Quc2NoZWR1bGVVcGRhdGVQcm9qZWN0aW9uKCksdGhpcy5zY2hlZHVsZVJlbmRlcigpLHRoaXMuYW5pbWF0aW9uUHJvZ3Jlc3M9Tn0sdGhpcy5taXhUYXJnZXREZWx0YSh0aGlzLm9wdGlvbnMubGF5b3V0Um9vdD8xZTM6MCl9c3RhcnRBbmltYXRpb24ocyl7dGhpcy5ub3RpZnlMaXN0ZW5lcnMoImFuaW1hdGlvblN0YXJ0IiksdGhpcy5jdXJyZW50QW5pbWF0aW9uPy5zdG9wKCksdGhpcy5yZXN1bWluZ0Zyb20/LmN1cnJlbnRBbmltYXRpb24/LnN0b3AoKSx0aGlzLnBlbmRpbmdBbmltYXRpb24mJihjbyh0aGlzLnBlbmRpbmdBbmltYXRpb24pLHRoaXMucGVuZGluZ0FuaW1hdGlvbj12b2lkIDApLHRoaXMucGVuZGluZ0FuaW1hdGlvbj1NdC51cGRhdGUoKCk9PntXcC5oYXNBbmltYXRlZFNpbmNlUmVzaXplPSEwLHRoaXMubW90aW9uVmFsdWV8fCh0aGlzLm1vdGlvblZhbHVlPU91KDApKSx0aGlzLm1vdGlvblZhbHVlLmp1bXAoMCwhMSksdGhpcy5jdXJyZW50QW5pbWF0aW9uPWN2ZSh0aGlzLm1vdGlvblZhbHVlLFswLDFlM10sey4uLnMsdmVsb2NpdHk6MCxpc1N5bmM6ITAsb25VcGRhdGU6dT0+e3RoaXMubWl4VGFyZ2V0RGVsdGEodSkscy5vblVwZGF0ZSYmcy5vblVwZGF0ZSh1KX0sb25Db21wbGV0ZTooKT0+e3Mub25Db21wbGV0ZSYmcy5vbkNvbXBsZXRlKCksdGhpcy5jb21wbGV0ZUFuaW1hdGlvbigpfX0pLHRoaXMucmVzdW1pbmdGcm9tJiYodGhpcy5yZXN1bWluZ0Zyb20uY3VycmVudEFuaW1hdGlvbj10aGlzLmN1cnJlbnRBbmltYXRpb24pLHRoaXMucGVuZGluZ0FuaW1hdGlvbj12b2lkIDB9KX1jb21wbGV0ZUFuaW1hdGlvbigpe3RoaXMucmVzdW1pbmdGcm9tJiYodGhpcy5yZXN1bWluZ0Zyb20uY3VycmVudEFuaW1hdGlvbj12b2lkIDAsdGhpcy5yZXN1bWluZ0Zyb20ucHJlc2VydmVPcGFjaXR5PXZvaWQgMCk7Y29uc3Qgcz10aGlzLmdldFN0YWNrKCk7cyYmcy5leGl0QW5pbWF0aW9uQ29tcGxldGUoKSx0aGlzLnJlc3VtaW5nRnJvbT10aGlzLmN1cnJlbnRBbmltYXRpb249dGhpcy5hbmltYXRpb25WYWx1ZXM9dm9pZCAwLHRoaXMubm90aWZ5TGlzdGVuZXJzKCJhbmltYXRpb25Db21wbGV0ZSIpfWZpbmlzaEFuaW1hdGlvbigpe3RoaXMuY3VycmVudEFuaW1hdGlvbiYmKHRoaXMubWl4VGFyZ2V0RGVsdGEmJnRoaXMubWl4VGFyZ2V0RGVsdGEobXZlKSx0aGlzLmN1cnJlbnRBbmltYXRpb24uc3RvcCgpKSx0aGlzLmNvbXBsZXRlQW5pbWF0aW9uKCl9YXBwbHlUcmFuc2Zvcm1zVG9UYXJnZXQoKXtjb25zdCBzPXRoaXMuZ2V0TGVhZCgpO2xldHt0YXJnZXRXaXRoVHJhbnNmb3Jtczp1LHRhcmdldDpmLGxheW91dDpkLGxhdGVzdFZhbHVlczpwfT1zO2lmKCEoIXV8fCFmfHwhZCkpe2lmKHRoaXMhPT1zJiZ0aGlzLmxheW91dCYmZCYmSnoodGhpcy5vcHRpb25zLmFuaW1hdGlvblR5cGUsdGhpcy5sYXlvdXQubGF5b3V0Qm94LGQubGF5b3V0Qm94KSl7Zj10aGlzLnRhcmdldHx8cG4oKTtjb25zdCBtPVluKHRoaXMubGF5b3V0LmxheW91dEJveC54KTtmLngubWluPXMudGFyZ2V0LngubWluLGYueC5tYXg9Zi54Lm1pbittO2NvbnN0IHk9WW4odGhpcy5sYXlvdXQubGF5b3V0Qm94LnkpO2YueS5taW49cy50YXJnZXQueS5taW4sZi55Lm1heD1mLnkubWluK3l9UXIodSxmKSxHcCh1LHApLEFmKHRoaXMucHJvamVjdGlvbkRlbHRhV2l0aFRyYW5zZm9ybSx0aGlzLmxheW91dENvcnJlY3RlZCx1LHApfX1yZWdpc3RlclNoYXJlZE5vZGUocyx1KXt0aGlzLnNoYXJlZE5vZGVzLmhhcyhzKXx8dGhpcy5zaGFyZWROb2Rlcy5zZXQocyxuZXcgcHZlKSx0aGlzLnNoYXJlZE5vZGVzLmdldChzKS5hZGQodSk7Y29uc3QgZD11Lm9wdGlvbnMuaW5pdGlhbFByb21vdGlvbkNvbmZpZzt1LnByb21vdGUoe3RyYW5zaXRpb246ZD9kLnRyYW5zaXRpb246dm9pZCAwLHByZXNlcnZlRm9sbG93T3BhY2l0eTpkJiZkLnNob3VsZFByZXNlcnZlRm9sbG93T3BhY2l0eT9kLnNob3VsZFByZXNlcnZlRm9sbG93T3BhY2l0eSh1KTp2b2lkIDB9KX1pc0xlYWQoKXtjb25zdCBzPXRoaXMuZ2V0U3RhY2soKTtyZXR1cm4gcz9zLmxlYWQ9PT10aGlzOiEwfWdldExlYWQoKXtjb25zdHtsYXlvdXRJZDpzfT10aGlzLm9wdGlvbnM7cmV0dXJuIHM/dGhpcy5nZXRTdGFjaygpPy5sZWFkfHx0aGlzOnRoaXN9Z2V0UHJldkxlYWQoKXtjb25zdHtsYXlvdXRJZDpzfT10aGlzLm9wdGlvbnM7cmV0dXJuIHM/dGhpcy5nZXRTdGFjaygpPy5wcmV2TGVhZDp2b2lkIDB9Z2V0U3RhY2soKXtjb25zdHtsYXlvdXRJZDpzfT10aGlzLm9wdGlvbnM7aWYocylyZXR1cm4gdGhpcy5yb290LnNoYXJlZE5vZGVzLmdldChzKX1wcm9tb3RlKHtuZWVkc1Jlc2V0OnMsdHJhbnNpdGlvbjp1LHByZXNlcnZlRm9sbG93T3BhY2l0eTpmfT17fSl7Y29uc3QgZD10aGlzLmdldFN0YWNrKCk7ZCYmZC5wcm9tb3RlKHRoaXMsZikscyYmKHRoaXMucHJvamVjdGlvbkRlbHRhPXZvaWQgMCx0aGlzLm5lZWRzUmVzZXQ9ITApLHUmJnRoaXMuc2V0T3B0aW9ucyh7dHJhbnNpdGlvbjp1fSl9cmVsZWdhdGUoKXtjb25zdCBzPXRoaXMuZ2V0U3RhY2soKTtyZXR1cm4gcz9zLnJlbGVnYXRlKHRoaXMpOiExfXJlc2V0U2tld0FuZFJvdGF0aW9uKCl7Y29uc3R7dmlzdWFsRWxlbWVudDpzfT10aGlzLm9wdGlvbnM7aWYoIXMpcmV0dXJuO2xldCB1PSExO2NvbnN0e2xhdGVzdFZhbHVlczpmfT1zO2lmKChmLnp8fGYucm90YXRlfHxmLnJvdGF0ZVh8fGYucm90YXRlWXx8Zi5yb3RhdGVafHxmLnNrZXdYfHxmLnNrZXdZKSYmKHU9ITApLCF1KXJldHVybjtjb25zdCBkPXt9O2YueiYmeVMoInoiLHMsZCx0aGlzLmFuaW1hdGlvblZhbHVlcyk7Zm9yKGxldCBwPTA7cDxtUy5sZW5ndGg7cCsrKXlTKGByb3RhdGUke21TW3BdfWAscyxkLHRoaXMuYW5pbWF0aW9uVmFsdWVzKSx5Uyhgc2tldyR7bVNbcF19YCxzLGQsdGhpcy5hbmltYXRpb25WYWx1ZXMpO3MucmVuZGVyKCk7Zm9yKGNvbnN0IHAgaW4gZClzLnNldFN0YXRpY1ZhbHVlKHAsZFtwXSksdGhpcy5hbmltYXRpb25WYWx1ZXMmJih0aGlzLmFuaW1hdGlvblZhbHVlc1twXT1kW3BdKTtzLnNjaGVkdWxlUmVuZGVyKCl9YXBwbHlQcm9qZWN0aW9uU3R5bGVzKHMsdSl7aWYoIXRoaXMuaW5zdGFuY2V8fHRoaXMuaXNTVkcpcmV0dXJuO2lmKCF0aGlzLmlzVmlzaWJsZSl7cy52aXNpYmlsaXR5PSJoaWRkZW4iO3JldHVybn1jb25zdCBmPXRoaXMuZ2V0VHJhbnNmb3JtVGVtcGxhdGUoKTtpZih0aGlzLm5lZWRzUmVzZXQpe3RoaXMubmVlZHNSZXNldD0hMSxzLnZpc2liaWxpdHk9IiIscy5vcGFjaXR5PSIiLHMucG9pbnRlckV2ZW50cz1LcCh1Py5wb2ludGVyRXZlbnRzKXx8IiIscy50cmFuc2Zvcm09Zj9mKHRoaXMubGF0ZXN0VmFsdWVzLCIiKToibm9uZSI7cmV0dXJufWNvbnN0IGQ9dGhpcy5nZXRMZWFkKCk7aWYoIXRoaXMucHJvamVjdGlvbkRlbHRhfHwhdGhpcy5sYXlvdXR8fCFkLnRhcmdldCl7dGhpcy5vcHRpb25zLmxheW91dElkJiYocy5vcGFjaXR5PXRoaXMubGF0ZXN0VmFsdWVzLm9wYWNpdHkhPT12b2lkIDA/dGhpcy5sYXRlc3RWYWx1ZXMub3BhY2l0eToxLHMucG9pbnRlckV2ZW50cz1LcCh1Py5wb2ludGVyRXZlbnRzKXx8IiIpLHRoaXMuaGFzUHJvamVjdGVkJiYhdHModGhpcy5sYXRlc3RWYWx1ZXMpJiYocy50cmFuc2Zvcm09Zj9mKHt9LCIiKToibm9uZSIsdGhpcy5oYXNQcm9qZWN0ZWQ9ITEpO3JldHVybn1zLnZpc2liaWxpdHk9IiI7Y29uc3QgcD1kLmFuaW1hdGlvblZhbHVlc3x8ZC5sYXRlc3RWYWx1ZXM7dGhpcy5hcHBseVRyYW5zZm9ybXNUb1RhcmdldCgpO2xldCBtPWF2ZSh0aGlzLnByb2plY3Rpb25EZWx0YVdpdGhUcmFuc2Zvcm0sdGhpcy50cmVlU2NhbGUscCk7ZiYmKG09ZihwLG0pKSxzLnRyYW5zZm9ybT1tO2NvbnN0e3g6eSx5Onh9PXRoaXMucHJvamVjdGlvbkRlbHRhO3MudHJhbnNmb3JtT3JpZ2luPWAke3kub3JpZ2luKjEwMH0lICR7eC5vcmlnaW4qMTAwfSUgMGAsZC5hbmltYXRpb25WYWx1ZXM/cy5vcGFjaXR5PWQ9PT10aGlzP3Aub3BhY2l0eT8/dGhpcy5sYXRlc3RWYWx1ZXMub3BhY2l0eT8/MTp0aGlzLnByZXNlcnZlT3BhY2l0eT90aGlzLmxhdGVzdFZhbHVlcy5vcGFjaXR5OnAub3BhY2l0eUV4aXQ6cy5vcGFjaXR5PWQ9PT10aGlzP3Aub3BhY2l0eSE9PXZvaWQgMD9wLm9wYWNpdHk6IiI6cC5vcGFjaXR5RXhpdCE9PXZvaWQgMD9wLm9wYWNpdHlFeGl0OjA7Zm9yKGNvbnN0IHcgaW4gTF8pe2lmKHBbd109PT12b2lkIDApY29udGludWU7Y29uc3R7Y29ycmVjdDpiLGFwcGx5VG86Zyxpc0NTU1ZhcmlhYmxlOl99PUxfW3ddLE89bT09PSJub25lIj9wW3ddOmIocFt3XSxkKTtpZihnKXtjb25zdCBFPWcubGVuZ3RoO2ZvcihsZXQgaj0wO2o8RTtqKyspc1tnW2pdXT1PfWVsc2UgXz90aGlzLm9wdGlvbnMudmlzdWFsRWxlbWVudC5yZW5kZXJTdGF0ZS52YXJzW3ddPU86c1t3XT1PfXRoaXMub3B0aW9ucy5sYXlvdXRJZCYmKHMucG9pbnRlckV2ZW50cz1kPT09dGhpcz9LcCh1Py5wb2ludGVyRXZlbnRzKXx8IiI6Im5vbmUiKX1jbGVhclNuYXBzaG90KCl7dGhpcy5yZXN1bWVGcm9tPXRoaXMuc25hcHNob3Q9dm9pZCAwfXJlc2V0VHJlZSgpe3RoaXMucm9vdC5ub2Rlcy5mb3JFYWNoKHM9PnMuY3VycmVudEFuaW1hdGlvbj8uc3RvcCgpKSx0aGlzLnJvb3Qubm9kZXMuZm9yRWFjaChzQiksdGhpcy5yb290LnNoYXJlZE5vZGVzLmNsZWFyKCl9fX1mdW5jdGlvbiB2dmUoZSl7ZS51cGRhdGVMYXlvdXQoKX1mdW5jdGlvbiBndmUoZSl7Y29uc3QgdD1lLnJlc3VtZUZyb20/LnNuYXBzaG90fHxlLnNuYXBzaG90O2lmKGUuaXNMZWFkKCkmJmUubGF5b3V0JiZ0JiZlLmhhc0xpc3RlbmVycygiZGlkVXBkYXRlIikpe2NvbnN0e2xheW91dEJveDpuLG1lYXN1cmVkQm94OnJ9PWUubGF5b3V0LHthbmltYXRpb25UeXBlOml9PWUub3B0aW9ucyxvPXQuc291cmNlIT09ZS5sYXlvdXQuc291cmNlO2lmKGk9PT0ic2l6ZSIpdmkocD0+e2NvbnN0IG09bz90Lm1lYXN1cmVkQm94W3BdOnQubGF5b3V0Qm94W3BdLHk9WW4obSk7bS5taW49bltwXS5taW4sbS5tYXg9bS5taW4reX0pO2Vsc2UgaWYoaT09PSJ4Inx8aT09PSJ5Iil7Y29uc3QgcD1pPT09IngiPyJ5IjoieCI7SV8obz90Lm1lYXN1cmVkQm94W3BdOnQubGF5b3V0Qm94W3BdLG5bcF0pfWVsc2UgSnooaSx0LmxheW91dEJveCxuKSYmdmkocD0+e2NvbnN0IG09bz90Lm1lYXN1cmVkQm94W3BdOnQubGF5b3V0Qm94W3BdLHk9WW4obltwXSk7bS5tYXg9bS5taW4reSxlLnJlbGF0aXZlVGFyZ2V0JiYhZS5jdXJyZW50QW5pbWF0aW9uJiYoZS5pc1Byb2plY3Rpb25EaXJ0eT0hMCxlLnJlbGF0aXZlVGFyZ2V0W3BdLm1heD1lLnJlbGF0aXZlVGFyZ2V0W3BdLm1pbit5KX0pO2NvbnN0IHM9JGwoKTtBZihzLG4sdC5sYXlvdXRCb3gpO2NvbnN0IHU9JGwoKTtvP0FmKHUsZS5hcHBseVRyYW5zZm9ybShyLCEwKSx0Lm1lYXN1cmVkQm94KTpBZih1LG4sdC5sYXlvdXRCb3gpO2NvbnN0IGY9IVd6KHMpO2xldCBkPSExO2lmKCFlLnJlc3VtZUZyb20pe2NvbnN0IHA9ZS5nZXRDbG9zZXN0UHJvamVjdGluZ1BhcmVudCgpO2lmKHAmJiFwLnJlc3VtZUZyb20pe2NvbnN0e3NuYXBzaG90Om0sbGF5b3V0Onl9PXA7aWYobSYmeSl7Y29uc3QgeD1lLm9wdGlvbnMubGF5b3V0QW5jaG9yfHx2b2lkIDAsdz1wbigpO215KHcsdC5sYXlvdXRCb3gsbS5sYXlvdXRCb3gseCk7Y29uc3QgYj1wbigpO215KGIsbix5LmxheW91dEJveCx4KSxZeih3LGIpfHwoZD0hMCkscC5vcHRpb25zLmxheW91dFJvb3QmJihlLnJlbGF0aXZlVGFyZ2V0PWIsZS5yZWxhdGl2ZVRhcmdldE9yaWdpbj13LGUucmVsYXRpdmVQYXJlbnQ9cCl9fX1lLm5vdGlmeUxpc3RlbmVycygiZGlkVXBkYXRlIix7bGF5b3V0Om4sc25hcHNob3Q6dCxkZWx0YTp1LGxheW91dERlbHRhOnMsaGFzTGF5b3V0Q2hhbmdlZDpmLGhhc1JlbGF0aXZlTGF5b3V0Q2hhbmdlZDpkfSl9ZWxzZSBpZihlLmlzTGVhZCgpKXtjb25zdHtvbkV4aXRDb21wbGV0ZTpufT1lLm9wdGlvbnM7biYmbigpfWUub3B0aW9ucy50cmFuc2l0aW9uPXZvaWQgMH1mdW5jdGlvbiBidmUoZSl7ZS5wYXJlbnQmJihlLmlzUHJvamVjdGluZygpfHwoZS5pc1Byb2plY3Rpb25EaXJ0eT1lLnBhcmVudC5pc1Byb2plY3Rpb25EaXJ0eSksZS5pc1NoYXJlZFByb2plY3Rpb25EaXJ0eXx8KGUuaXNTaGFyZWRQcm9qZWN0aW9uRGlydHk9ISEoZS5pc1Byb2plY3Rpb25EaXJ0eXx8ZS5wYXJlbnQuaXNQcm9qZWN0aW9uRGlydHl8fGUucGFyZW50LmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5KSksZS5pc1RyYW5zZm9ybURpcnR5fHwoZS5pc1RyYW5zZm9ybURpcnR5PWUucGFyZW50LmlzVHJhbnNmb3JtRGlydHkpKX1mdW5jdGlvbiB4dmUoZSl7ZS5pc1Byb2plY3Rpb25EaXJ0eT1lLmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5PWUuaXNUcmFuc2Zvcm1EaXJ0eT0hMX1mdW5jdGlvbiB3dmUoZSl7ZS5jbGVhclNuYXBzaG90KCl9ZnVuY3Rpb24gc0IoZSl7ZS5jbGVhck1lYXN1cmVtZW50cygpfWZ1bmN0aW9uIFN2ZShlKXtlLmlzTGF5b3V0RGlydHk9ITAsZS51cGRhdGVMYXlvdXQoKX1mdW5jdGlvbiBsQihlKXtlLmlzTGF5b3V0RGlydHk9ITF9ZnVuY3Rpb24gQXZlKGUpe2UuaXNBbmltYXRpb25CbG9ja2VkJiZlLmxheW91dCYmIWUuaXNMYXlvdXREaXJ0eSYmKGUuc25hcHNob3Q9ZS5sYXlvdXQsZS5pc0xheW91dERpcnR5PSEwKX1mdW5jdGlvbiBfdmUoZSl7Y29uc3R7dmlzdWFsRWxlbWVudDp0fT1lLm9wdGlvbnM7dCYmdC5nZXRQcm9wcygpLm9uQmVmb3JlTGF5b3V0TWVhc3VyZSYmdC5ub3RpZnkoIkJlZm9yZUxheW91dE1lYXN1cmUiKSxlLnJlc2V0VHJhbnNmb3JtKCl9ZnVuY3Rpb24gdUIoZSl7ZS5maW5pc2hBbmltYXRpb24oKSxlLnRhcmdldERlbHRhPWUucmVsYXRpdmVUYXJnZXQ9ZS50YXJnZXQ9dm9pZCAwLGUuaXNQcm9qZWN0aW9uRGlydHk9ITB9ZnVuY3Rpb24gT3ZlKGUpe2UucmVzb2x2ZVRhcmdldERlbHRhKCl9ZnVuY3Rpb24gVHZlKGUpe2UuY2FsY1Byb2plY3Rpb24oKX1mdW5jdGlvbiBFdmUoZSl7ZS5yZXNldFNrZXdBbmRSb3RhdGlvbigpfWZ1bmN0aW9uIEN2ZShlKXtlLnJlbW92ZUxlYWRTbmFwc2hvdCgpfWZ1bmN0aW9uIGNCKGUsdCxuKXtlLnRyYW5zbGF0ZT1qdCh0LnRyYW5zbGF0ZSwwLG4pLGUuc2NhbGU9anQodC5zY2FsZSwxLG4pLGUub3JpZ2luPXQub3JpZ2luLGUub3JpZ2luUG9pbnQ9dC5vcmlnaW5Qb2ludH1mdW5jdGlvbiBmQihlLHQsbixyKXtlLm1pbj1qdCh0Lm1pbixuLm1pbixyKSxlLm1heD1qdCh0Lm1heCxuLm1heCxyKX1mdW5jdGlvbiBqdmUoZSx0LG4scil7ZkIoZS54LHQueCxuLngsciksZkIoZS55LHQueSxuLnkscil9ZnVuY3Rpb24gUHZlKGUpe3JldHVybiBlLmFuaW1hdGlvblZhbHVlcyYmZS5hbmltYXRpb25WYWx1ZXMub3BhY2l0eUV4aXQhPT12b2lkIDB9Y29uc3QgTXZlPXtkdXJhdGlvbjouNDUsZWFzZTpbLjQsMCwuMSwxXX0sZEI9ZT0+dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlKSxoQj1kQigiYXBwbGV3ZWJraXQvIikmJiFkQigiY2hyb21lLyIpP01hdGgucm91bmQ6VXI7ZnVuY3Rpb24gcEIoZSl7ZS5taW49aEIoZS5taW4pLGUubWF4PWhCKGUubWF4KX1mdW5jdGlvbiBSdmUoZSl7cEIoZS54KSxwQihlLnkpfWZ1bmN0aW9uIEp6KGUsdCxuKXtyZXR1cm4gZT09PSJwb3NpdGlvbiJ8fGU9PT0icHJlc2VydmUtYXNwZWN0IiYmIUp5ZShuQih0KSxuQihuKSwuMil9ZnVuY3Rpb24gTnZlKGUpe3JldHVybiBlIT09ZS5yb290JiZlLnNjcm9sbD8ud2FzUm9vdH1jb25zdCBrdmU9UXooe2F0dGFjaFJlc2l6ZUxpc3RlbmVyOihlLHQpPT5tZChlLCJyZXNpemUiLHQpLG1lYXN1cmVTY3JvbGw6KCk9Pih7eDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8ZG9jdW1lbnQuYm9keT8uc2Nyb2xsTGVmdHx8MCx5OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHk/LnNjcm9sbFRvcHx8MH0pLGNoZWNrSXNTY3JvbGxSb290OigpPT4hMH0pLHZTPXtjdXJyZW50OnZvaWQgMH0sZTY9UXooe21lYXN1cmVTY3JvbGw6ZT0+KHt4OmUuc2Nyb2xsTGVmdCx5OmUuc2Nyb2xsVG9wfSksZGVmYXVsdFBhcmVudDooKT0+e2lmKCF2Uy5jdXJyZW50KXtjb25zdCBlPW5ldyBrdmUoe30pO2UubW91bnQod2luZG93KSxlLnNldE9wdGlvbnMoe2xheW91dFNjcm9sbDohMH0pLHZTLmN1cnJlbnQ9ZX1yZXR1cm4gdlMuY3VycmVudH0scmVzZXRUcmFuc2Zvcm06KGUsdCk9PntlLnN0eWxlLnRyYW5zZm9ybT10IT09dm9pZCAwP3Q6Im5vbmUifSxjaGVja0lzU2Nyb2xsUm9vdDplPT53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5wb3NpdGlvbj09PSJmaXhlZCJ9KSx0RT1DLmNyZWF0ZUNvbnRleHQoe3RyYW5zZm9ybVBhZ2VQb2ludDplPT5lLGlzU3RhdGljOiExLHJlZHVjZWRNb3Rpb246Im5ldmVyIn0pO2Z1bmN0aW9uIG1CKGUsdCl7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIGUodCk7ZSE9bnVsbCYmKGUuY3VycmVudD10KX1mdW5jdGlvbiBEdmUoLi4uZSl7cmV0dXJuIHQ9PntsZXQgbj0hMTtjb25zdCByPWUubWFwKGk9Pntjb25zdCBvPW1CKGksdCk7cmV0dXJuIW4mJnR5cGVvZiBvPT0iZnVuY3Rpb24iJiYobj0hMCksb30pO2lmKG4pcmV0dXJuKCk9Pntmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7Y29uc3Qgbz1yW2ldO3R5cGVvZiBvPT0iZnVuY3Rpb24iP28oKTptQihlW2ldLG51bGwpfX19fWZ1bmN0aW9uIEx2ZSguLi5lKXtyZXR1cm4gQy51c2VDYWxsYmFjayhEdmUoLi4uZSksZSl9Y2xhc3MgSXZlIGV4dGVuZHMgQy5Db21wb25lbnR7Z2V0U25hcHNob3RCZWZvcmVVcGRhdGUodCl7Y29uc3Qgbj10aGlzLnByb3BzLmNoaWxkUmVmLmN1cnJlbnQ7aWYocXAobikmJnQuaXNQcmVzZW50JiYhdGhpcy5wcm9wcy5pc1ByZXNlbnQmJnRoaXMucHJvcHMucG9wIT09ITEpe2NvbnN0IHI9bi5vZmZzZXRQYXJlbnQsaT1xcChyKSYmci5vZmZzZXRXaWR0aHx8MCxvPXFwKHIpJiZyLm9mZnNldEhlaWdodHx8MCxzPWdldENvbXB1dGVkU3R5bGUobiksdT10aGlzLnByb3BzLnNpemVSZWYuY3VycmVudDt1LmhlaWdodD1wYXJzZUZsb2F0KHMuaGVpZ2h0KSx1LndpZHRoPXBhcnNlRmxvYXQocy53aWR0aCksdS50b3A9bi5vZmZzZXRUb3AsdS5sZWZ0PW4ub2Zmc2V0TGVmdCx1LnJpZ2h0PWktdS53aWR0aC11LmxlZnQsdS5ib3R0b209by11LmhlaWdodC11LnRvcCx1LmRpcmVjdGlvbj1zLmRpcmVjdGlvbn1yZXR1cm4gbnVsbH1jb21wb25lbnREaWRVcGRhdGUoKXt9cmVuZGVyKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW59fWZ1bmN0aW9uICR2ZSh7Y2hpbGRyZW46ZSxpc1ByZXNlbnQ6dCxhbmNob3JYOm4sYW5jaG9yWTpyLHJvb3Q6aSxwb3A6b30pe2NvbnN0IHM9Qy51c2VJZCgpLHU9Qy51c2VSZWYobnVsbCksZj1DLnVzZVJlZih7d2lkdGg6MCxoZWlnaHQ6MCx0b3A6MCxsZWZ0OjAscmlnaHQ6MCxib3R0b206MCxkaXJlY3Rpb246Imx0ciJ9KSx7bm9uY2U6ZH09Qy51c2VDb250ZXh0KHRFKSxwPWUucHJvcHM/LnJlZj8/ZT8ucmVmLG09THZlKHUscCk7cmV0dXJuIEMudXNlSW5zZXJ0aW9uRWZmZWN0KCgpPT57Y29uc3R7d2lkdGg6eSxoZWlnaHQ6eCx0b3A6dyxsZWZ0OmIscmlnaHQ6Zyxib3R0b206XyxkaXJlY3Rpb246T309Zi5jdXJyZW50O2lmKHR8fG89PT0hMXx8IXUuY3VycmVudHx8IXl8fCF4KXJldHVybjtjb25zdCBFPU89PT0icnRsIixqPW49PT0ibGVmdCI/RT9gcmlnaHQ6ICR7Z31gOmBsZWZ0OiAke2J9YDpFP2BsZWZ0OiAke2J9YDpgcmlnaHQ6ICR7Z31gLFQ9cj09PSJib3R0b20iP2Bib3R0b206ICR7X31gOmB0b3A6ICR7d31gO3UuY3VycmVudC5kYXRhc2V0Lm1vdGlvblBvcElkPXM7Y29uc3QgUD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2QmJihQLm5vbmNlPWQpO2NvbnN0IE49aT8/ZG9jdW1lbnQuaGVhZDtyZXR1cm4gTi5hcHBlbmRDaGlsZChQKSxQLnNoZWV0JiZQLnNoZWV0Lmluc2VydFJ1bGUoYAogICAgICAgICAgW2RhdGEtbW90aW9uLXBvcC1pZD0iJHtzfSJdIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAke3l9cHggIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiAke3h9cHggIWltcG9ydGFudDsKICAgICAgICAgICAgJHtqfXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICR7VH1weCAhaW1wb3J0YW50OwogICAgICAgICAgfQogICAgICAgIGApLCgpPT57dS5jdXJyZW50Py5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtbW90aW9uLXBvcC1pZCIpLE4uY29udGFpbnMoUCkmJk4ucmVtb3ZlQ2hpbGQoUCl9fSxbdF0pLEEuanN4KEl2ZSx7aXNQcmVzZW50OnQsY2hpbGRSZWY6dSxzaXplUmVmOmYscG9wOm8sY2hpbGRyZW46bz09PSExP2U6Qy5jbG9uZUVsZW1lbnQoZSx7cmVmOm19KX0pfWNvbnN0IEJ2ZT0oe2NoaWxkcmVuOmUsaW5pdGlhbDp0LGlzUHJlc2VudDpuLG9uRXhpdENvbXBsZXRlOnIsY3VzdG9tOmkscHJlc2VuY2VBZmZlY3RzTGF5b3V0Om8sbW9kZTpzLGFuY2hvclg6dSxhbmNob3JZOmYscm9vdDpkfSk9Pntjb25zdCBwPWpUKFZ2ZSksbT1DLnVzZUlkKCkseT1DLnVzZVJlZihuKSx4PUMudXNlUmVmKHIpO1BUKCgpPT57eS5jdXJyZW50PW4seC5jdXJyZW50PXJ9KTtsZXQgdz0hMCxiPUMudXNlTWVtbygoKT0+KHc9ITEse2lkOm0saW5pdGlhbDp0LGlzUHJlc2VudDpuLGN1c3RvbTppLG9uRXhpdENvbXBsZXRlOmc9PntwLnNldChnLCEwKTtmb3IoY29uc3QgXyBvZiBwLnZhbHVlcygpKWlmKCFfKXJldHVybjtyJiZyKCl9LHJlZ2lzdGVyOmc9PihwLnNldChnLCExKSwoKT0+e3AuZGVsZXRlKGcpLCF5LmN1cnJlbnQmJiFwLnNpemUmJnguY3VycmVudD8uKCl9KX0pLFtuLHAscl0pO3JldHVybiBvJiZ3JiYoYj17Li4uYn0pLEMudXNlTWVtbygoKT0+e3AuZm9yRWFjaCgoZyxfKT0+cC5zZXQoXywhMSkpfSxbbl0pLEMudXNlRWZmZWN0KCgpPT57IW4mJiFwLnNpemUmJnImJnIoKX0sW25dKSxlPUEuanN4KCR2ZSx7cG9wOnM9PT0icG9wTGF5b3V0Iixpc1ByZXNlbnQ6bixhbmNob3JYOnUsYW5jaG9yWTpmLHJvb3Q6ZCxjaGlsZHJlbjplfSksQS5qc3god3YuUHJvdmlkZXIse3ZhbHVlOmIsY2hpbGRyZW46ZX0pfTtmdW5jdGlvbiBWdmUoKXtyZXR1cm4gbmV3IE1hcH1mdW5jdGlvbiB0NihlPSEwKXtjb25zdCB0PUMudXNlQ29udGV4dCh3dik7aWYodD09PW51bGwpcmV0dXJuWyEwLG51bGxdO2NvbnN0e2lzUHJlc2VudDpuLG9uRXhpdENvbXBsZXRlOnIscmVnaXN0ZXI6aX09dCxvPUMudXNlSWQoKTtDLnVzZUVmZmVjdCgoKT0+e2lmKGUpcmV0dXJuIGkobyl9LFtlXSk7Y29uc3Qgcz1DLnVzZUNhbGxiYWNrKCgpPT5lJiZyJiZyKG8pLFtvLHIsZV0pO3JldHVybiFuJiZyP1shMSxzXTpbITBdfWNvbnN0IEFwPWU9PmUua2V5fHwiIjtmdW5jdGlvbiB5QihlKXtjb25zdCB0PVtdO3JldHVybiBDLkNoaWxkcmVuLmZvckVhY2goZSxuPT57Qy5pc1ZhbGlkRWxlbWVudChuKSYmdC5wdXNoKG4pfSksdH1jb25zdCB2Qj0oe2NoaWxkcmVuOmUsY3VzdG9tOnQsaW5pdGlhbDpuPSEwLG9uRXhpdENvbXBsZXRlOnIscHJlc2VuY2VBZmZlY3RzTGF5b3V0Omk9ITAsbW9kZTpvPSJzeW5jIixwcm9wYWdhdGU6cz0hMSxhbmNob3JYOnU9ImxlZnQiLGFuY2hvclk6Zj0idG9wIixyb290OmR9KT0+e2NvbnN0W3AsbV09dDYocykseT1DLnVzZU1lbW8oKCk9PnlCKGUpLFtlXSkseD1zJiYhcD9bXTp5Lm1hcChBcCksdz1DLnVzZVJlZighMCksYj1DLnVzZVJlZih5KSxnPWpUKCgpPT5uZXcgTWFwKSxfPUMudXNlUmVmKG5ldyBTZXQpLFtPLEVdPUMudXNlU3RhdGUoeSksW2osVF09Qy51c2VTdGF0ZSh5KTtQVCgoKT0+e3cuY3VycmVudD0hMSxiLmN1cnJlbnQ9eTtmb3IobGV0IFI9MDtSPGoubGVuZ3RoO1IrKyl7Y29uc3QgST1BcChqW1JdKTt4LmluY2x1ZGVzKEkpPyhnLmRlbGV0ZShJKSxfLmN1cnJlbnQuZGVsZXRlKEkpKTpnLmdldChJKSE9PSEwJiZnLnNldChJLCExKX19LFtqLHgubGVuZ3RoLHguam9pbigiLSIpXSk7Y29uc3QgUD1bXTtpZih5IT09Tyl7bGV0IFI9Wy4uLnldO2ZvcihsZXQgST0wO0k8ai5sZW5ndGg7SSsrKXtjb25zdCBWPWpbSV0sQj1BcChWKTt4LmluY2x1ZGVzKEIpfHwoUi5zcGxpY2UoSSwwLFYpLFAucHVzaChWKSl9cmV0dXJuIG89PT0id2FpdCImJlAubGVuZ3RoJiYoUj1QKSxUKHlCKFIpKSxFKHkpLG51bGx9Y29uc3R7Zm9yY2VSZW5kZXI6Tn09Qy51c2VDb250ZXh0KENUKTtyZXR1cm4gQS5qc3goQS5GcmFnbWVudCx7Y2hpbGRyZW46ai5tYXAoUj0+e2NvbnN0IEk9QXAoUiksVj1zJiYhcD8hMTp5PT09anx8eC5pbmNsdWRlcyhJKSxCPSgpPT57aWYoXy5jdXJyZW50LmhhcyhJKSlyZXR1cm47aWYoZy5oYXMoSSkpXy5jdXJyZW50LmFkZChJKSxnLnNldChJLCEwKTtlbHNlIHJldHVybjtsZXQgJD0hMDtnLmZvckVhY2goej0+e3p8fCgkPSExKX0pLCQmJihOPy4oKSxUKGIuY3VycmVudCkscyYmbT8uKCksciYmcigpKX07cmV0dXJuIEEuanN4KEJ2ZSx7aXNQcmVzZW50OlYsaW5pdGlhbDohdy5jdXJyZW50fHxuP3ZvaWQgMDohMSxjdXN0b206dCxwcmVzZW5jZUFmZmVjdHNMYXlvdXQ6aSxtb2RlOm8scm9vdDpkLG9uRXhpdENvbXBsZXRlOlY/dm9pZCAwOkIsYW5jaG9yWDp1LGFuY2hvclk6ZixjaGlsZHJlbjpSfSxJKX0pfSl9LG42PUMuY3JlYXRlQ29udGV4dCh7c3RyaWN0OiExfSksZ0I9e2FuaW1hdGlvbjpbImFuaW1hdGUiLCJ2YXJpYW50cyIsIndoaWxlSG92ZXIiLCJ3aGlsZVRhcCIsImV4aXQiLCJ3aGlsZUluVmlldyIsIndoaWxlRm9jdXMiLCJ3aGlsZURyYWciXSxleGl0OlsiZXhpdCJdLGRyYWc6WyJkcmFnIiwiZHJhZ0NvbnRyb2xzIl0sZm9jdXM6WyJ3aGlsZUZvY3VzIl0saG92ZXI6WyJ3aGlsZUhvdmVyIiwib25Ib3ZlclN0YXJ0Iiwib25Ib3ZlckVuZCJdLHRhcDpbIndoaWxlVGFwIiwib25UYXAiLCJvblRhcFN0YXJ0Iiwib25UYXBDYW5jZWwiXSxwYW46WyJvblBhbiIsIm9uUGFuU3RhcnQiLCJvblBhblNlc3Npb25TdGFydCIsIm9uUGFuRW5kIl0saW5WaWV3Olsid2hpbGVJblZpZXciLCJvblZpZXdwb3J0RW50ZXIiLCJvblZpZXdwb3J0TGVhdmUiXSxsYXlvdXQ6WyJsYXlvdXQiLCJsYXlvdXRJZCJdfTtsZXQgYkI9ITE7ZnVuY3Rpb24gcXZlKCl7aWYoYkIpcmV0dXJuO2NvbnN0IGU9e307Zm9yKGNvbnN0IHQgaW4gZ0IpZVt0XT17aXNFbmFibGVkOm49PmdCW3RdLnNvbWUocj0+ISFuW3JdKX07UnooZSksYkI9ITB9ZnVuY3Rpb24gcjYoKXtyZXR1cm4gcXZlKCksT3llKCl9ZnVuY3Rpb24gVXZlKGUpe2NvbnN0IHQ9cjYoKTtmb3IoY29uc3QgbiBpbiBlKXRbbl09ey4uLnRbbl0sLi4uZVtuXX07UnoodCl9Y29uc3QgenZlPW5ldyBTZXQoWyJhbmltYXRlIiwiZXhpdCIsInZhcmlhbnRzIiwiaW5pdGlhbCIsInN0eWxlIiwidmFsdWVzIiwidmFyaWFudHMiLCJ0cmFuc2l0aW9uIiwidHJhbnNmb3JtVGVtcGxhdGUiLCJjdXN0b20iLCJpbmhlcml0Iiwib25CZWZvcmVMYXlvdXRNZWFzdXJlIiwib25BbmltYXRpb25TdGFydCIsIm9uQW5pbWF0aW9uQ29tcGxldGUiLCJvblVwZGF0ZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnIiwib25EcmFnRW5kIiwib25NZWFzdXJlRHJhZ0NvbnN0cmFpbnRzIiwib25EaXJlY3Rpb25Mb2NrIiwib25EcmFnVHJhbnNpdGlvbkVuZCIsIl9kcmFnWCIsIl9kcmFnWSIsIm9uSG92ZXJTdGFydCIsIm9uSG92ZXJFbmQiLCJvblZpZXdwb3J0RW50ZXIiLCJvblZpZXdwb3J0TGVhdmUiLCJnbG9iYWxUYXBUYXJnZXQiLCJwcm9wYWdhdGUiLCJpZ25vcmVTdHJpY3QiLCJ2aWV3cG9ydCJdKTtmdW5jdGlvbiB5eShlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCJ3aGlsZSIpfHxlLnN0YXJ0c1dpdGgoImRyYWciKSYmZSE9PSJkcmFnZ2FibGUifHxlLnN0YXJ0c1dpdGgoImxheW91dCIpfHxlLnN0YXJ0c1dpdGgoIm9uVGFwIil8fGUuc3RhcnRzV2l0aCgib25QYW4iKXx8ZS5zdGFydHNXaXRoKCJvbkxheW91dCIpfHx6dmUuaGFzKGUpfWxldCBpNj1lPT4heXkoZSk7ZnVuY3Rpb24gRnZlKGUpe3R5cGVvZiBlPT0iZnVuY3Rpb24iJiYoaTY9dD0+dC5zdGFydHNXaXRoKCJvbiIpPyF5eSh0KTplKHQpKX10cnl7RnZlKHJlcXVpcmUoIkBlbW90aW9uL2lzLXByb3AtdmFsaWQiKS5kZWZhdWx0KX1jYXRjaHt9ZnVuY3Rpb24gSHZlKGUsdCxuKXtjb25zdCByPXt9O2Zvcihjb25zdCBpIGluIGUpaT09PSJ2YWx1ZXMiJiZ0eXBlb2YgZS52YWx1ZXM9PSJvYmplY3QifHxEbihlW2ldKXx8KGk2KGkpfHxuPT09ITAmJnl5KGkpfHwhdCYmIXl5KGkpfHxlLmRyYWdnYWJsZSYmaS5zdGFydHNXaXRoKCJvbkRyYWciKSkmJihyW2ldPWVbaV0pO3JldHVybiByfWNvbnN0IE92PUMuY3JlYXRlQ29udGV4dCh7fSk7ZnVuY3Rpb24gR3ZlKGUsdCl7aWYoX3YoZSkpe2NvbnN0e2luaXRpYWw6bixhbmltYXRlOnJ9PWU7cmV0dXJue2luaXRpYWw6bj09PSExfHxwZChuKT9uOnZvaWQgMCxhbmltYXRlOnBkKHIpP3I6dm9pZCAwfX1yZXR1cm4gZS5pbmhlcml0IT09ITE/dDp7fX1mdW5jdGlvbiBLdmUoZSl7Y29uc3R7aW5pdGlhbDp0LGFuaW1hdGU6bn09R3ZlKGUsQy51c2VDb250ZXh0KE92KSk7cmV0dXJuIEMudXNlTWVtbygoKT0+KHtpbml0aWFsOnQsYW5pbWF0ZTpufSksW3hCKHQpLHhCKG4pXSl9ZnVuY3Rpb24geEIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5qb2luKCIgIik6ZX1jb25zdCBuRT0oKT0+KHtzdHlsZTp7fSx0cmFuc2Zvcm06e30sdHJhbnNmb3JtT3JpZ2luOnt9LHZhcnM6e319KTtmdW5jdGlvbiBhNihlLHQsbil7Zm9yKGNvbnN0IHIgaW4gdCkhRG4odFtyXSkmJiFCeihyLG4pJiYoZVtyXT10W3JdKX1mdW5jdGlvbiBXdmUoe3RyYW5zZm9ybVRlbXBsYXRlOmV9LHQpe3JldHVybiBDLnVzZU1lbW8oKCk9Pntjb25zdCBuPW5FKCk7cmV0dXJuIEpUKG4sdCxlKSxPYmplY3QuYXNzaWduKHt9LG4udmFycyxuLnN0eWxlKX0sW3RdKX1mdW5jdGlvbiBZdmUoZSx0KXtjb25zdCBuPWUuc3R5bGV8fHt9LHI9e307cmV0dXJuIGE2KHIsbixlKSxPYmplY3QuYXNzaWduKHIsV3ZlKGUsdCkpLHJ9ZnVuY3Rpb24gWHZlKGUsdCl7Y29uc3Qgbj17fSxyPVl2ZShlLHQpO3JldHVybiBlLmRyYWcmJmUuZHJhZ0xpc3RlbmVyIT09ITEmJihuLmRyYWdnYWJsZT0hMSxyLnVzZXJTZWxlY3Q9ci5XZWJraXRVc2VyU2VsZWN0PXIuV2Via2l0VG91Y2hDYWxsb3V0PSJub25lIixyLnRvdWNoQWN0aW9uPWUuZHJhZz09PSEwPyJub25lIjpgcGFuLSR7ZS5kcmFnPT09IngiPyJ5IjoieCJ9YCksZS50YWJJbmRleD09PXZvaWQgMCYmKGUub25UYXB8fGUub25UYXBTdGFydHx8ZS53aGlsZVRhcCkmJihuLnRhYkluZGV4PTApLG4uc3R5bGU9cixufWNvbnN0IG82PSgpPT4oey4uLm5FKCksYXR0cnM6e319KTtmdW5jdGlvbiBadmUoZSx0LG4scil7Y29uc3QgaT1DLnVzZU1lbW8oKCk9Pntjb25zdCBvPW82KCk7cmV0dXJuIFZ6KG8sdCxVeihyKSxlLnRyYW5zZm9ybVRlbXBsYXRlLGUuc3R5bGUpLHsuLi5vLmF0dHJzLHN0eWxlOnsuLi5vLnN0eWxlfX19LFt0XSk7aWYoZS5zdHlsZSl7Y29uc3Qgbz17fTthNihvLGUuc3R5bGUsZSksaS5zdHlsZT17Li4ubywuLi5pLnN0eWxlfX1yZXR1cm4gaX1jb25zdCBRdmU9WyJhbmltYXRlIiwiY2lyY2xlIiwiZGVmcyIsImRlc2MiLCJlbGxpcHNlIiwiZyIsImltYWdlIiwibGluZSIsImZpbHRlciIsIm1hcmtlciIsIm1hc2siLCJtZXRhZGF0YSIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmVjdCIsInN0b3AiLCJzd2l0Y2giLCJzeW1ib2wiLCJzdmciLCJ0ZXh0IiwidHNwYW4iLCJ1c2UiLCJ2aWV3Il07ZnVuY3Rpb24gckUoZSl7cmV0dXJuIHR5cGVvZiBlIT0ic3RyaW5nInx8ZS5pbmNsdWRlcygiLSIpPyExOiEhKFF2ZS5pbmRleE9mKGUpPi0xfHwvW0EtWl0vdS50ZXN0KGUpKX1mdW5jdGlvbiBKdmUoZSx0LG4se2xhdGVzdFZhbHVlczpyfSxpLG89ITEscyl7Y29uc3QgZj0ocz8/ckUoZSk/WnZlOlh2ZSkodCxyLGksZSksZD1IdmUodCx0eXBlb2YgZT09InN0cmluZyIsbykscD1lIT09Qy5GcmFnbWVudD97Li4uZCwuLi5mLHJlZjpufTp7fSx7Y2hpbGRyZW46bX09dCx5PUMudXNlTWVtbygoKT0+RG4obSk/bS5nZXQoKTptLFttXSk7cmV0dXJuIEMuY3JlYXRlRWxlbWVudChlLHsuLi5wLGNoaWxkcmVuOnl9KX1mdW5jdGlvbiBlZ2Uoe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczplLGNyZWF0ZVJlbmRlclN0YXRlOnR9LG4scixpKXtyZXR1cm57bGF0ZXN0VmFsdWVzOnRnZShuLHIsaSxlKSxyZW5kZXJTdGF0ZTp0KCl9fWZ1bmN0aW9uIHRnZShlLHQsbixyKXtjb25zdCBpPXt9LG89cihlLHt9KTtmb3IoY29uc3QgeSBpbiBvKWlbeV09S3Aob1t5XSk7bGV0e2luaXRpYWw6cyxhbmltYXRlOnV9PWU7Y29uc3QgZj1fdihlKSxkPVB6KGUpO3QmJmQmJiFmJiZlLmluaGVyaXQhPT0hMSYmKHM9PT12b2lkIDAmJihzPXQuaW5pdGlhbCksdT09PXZvaWQgMCYmKHU9dC5hbmltYXRlKSk7bGV0IHA9bj9uLmluaXRpYWw9PT0hMTohMTtwPXB8fHM9PT0hMTtjb25zdCBtPXA/dTpzO2lmKG0mJnR5cGVvZiBtIT0iYm9vbGVhbiImJiFBdihtKSl7Y29uc3QgeT1BcnJheS5pc0FycmF5KG0pP206W21dO2ZvcihsZXQgeD0wO3g8eS5sZW5ndGg7eCsrKXtjb25zdCB3PUhUKGUseVt4XSk7aWYodyl7Y29uc3R7dHJhbnNpdGlvbkVuZDpiLHRyYW5zaXRpb246ZywuLi5ffT13O2Zvcihjb25zdCBPIGluIF8pe2xldCBFPV9bT107aWYoQXJyYXkuaXNBcnJheShFKSl7Y29uc3Qgaj1wP0UubGVuZ3RoLTE6MDtFPUVbal19RSE9PW51bGwmJihpW09dPUUpfWZvcihjb25zdCBPIGluIGIpaVtPXT1iW09dfX19cmV0dXJuIGl9Y29uc3QgczY9ZT0+KHQsbik9Pntjb25zdCByPUMudXNlQ29udGV4dChPdiksaT1DLnVzZUNvbnRleHQod3YpLG89KCk9PmVnZShlLHQscixpKTtyZXR1cm4gbj9vKCk6alQobyl9LG5nZT1zNih7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOmVFLGNyZWF0ZVJlbmRlclN0YXRlOm5FfSkscmdlPXM2KHtzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6enosY3JlYXRlUmVuZGVyU3RhdGU6bzZ9KSxpZ2U9U3ltYm9sLmZvcigibW90aW9uQ29tcG9uZW50U3ltYm9sIik7ZnVuY3Rpb24gYWdlKGUsdCxuKXtjb25zdCByPUMudXNlUmVmKG4pO0MudXNlSW5zZXJ0aW9uRWZmZWN0KCgpPT57ci5jdXJyZW50PW59KTtjb25zdCBpPUMudXNlUmVmKG51bGwpO3JldHVybiBDLnVzZUNhbGxiYWNrKG89PntvJiZlLm9uTW91bnQ/LihvKSx0JiYobz90Lm1vdW50KG8pOnQudW5tb3VudCgpKTtjb25zdCBzPXIuY3VycmVudDtpZih0eXBlb2Ygcz09ImZ1bmN0aW9uIilpZihvKXtjb25zdCB1PXMobyk7dHlwZW9mIHU9PSJmdW5jdGlvbiImJihpLmN1cnJlbnQ9dSl9ZWxzZSBpLmN1cnJlbnQ/KGkuY3VycmVudCgpLGkuY3VycmVudD1udWxsKTpzKG8pO2Vsc2UgcyYmKHMuY3VycmVudD1vKX0sW3RdKX1jb25zdCBsNj1DLmNyZWF0ZUNvbnRleHQoe30pO2Z1bmN0aW9uIGpsKGUpe3JldHVybiBlJiZ0eXBlb2YgZT09Im9iamVjdCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJjdXJyZW50Iil9ZnVuY3Rpb24gb2dlKGUsdCxuLHIsaSxvKXtjb25zdHt2aXN1YWxFbGVtZW50OnN9PUMudXNlQ29udGV4dChPdiksdT1DLnVzZUNvbnRleHQobjYpLGY9Qy51c2VDb250ZXh0KHd2KSxkPUMudXNlQ29udGV4dCh0RSkscD1kLnJlZHVjZWRNb3Rpb24sbT1kLnNraXBBbmltYXRpb25zLHk9Qy51c2VSZWYobnVsbCkseD1DLnVzZVJlZighMSk7cj1yfHx1LnJlbmRlcmVyLCF5LmN1cnJlbnQmJnImJih5LmN1cnJlbnQ9cihlLHt2aXN1YWxTdGF0ZTp0LHBhcmVudDpzLHByb3BzOm4scHJlc2VuY2VDb250ZXh0OmYsYmxvY2tJbml0aWFsQW5pbWF0aW9uOmY/Zi5pbml0aWFsPT09ITE6ITEscmVkdWNlZE1vdGlvbkNvbmZpZzpwLHNraXBBbmltYXRpb25zOm0saXNTVkc6b30pLHguY3VycmVudCYmeS5jdXJyZW50JiYoeS5jdXJyZW50Lm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQ9ITApKTtjb25zdCB3PXkuY3VycmVudCxiPUMudXNlQ29udGV4dChsNik7dyYmIXcucHJvamVjdGlvbiYmaSYmKHcudHlwZT09PSJodG1sInx8dy50eXBlPT09InN2ZyIpJiZzZ2UoeS5jdXJyZW50LG4saSxiKTtjb25zdCBnPUMudXNlUmVmKCExKTtDLnVzZUluc2VydGlvbkVmZmVjdCgoKT0+e3cmJmcuY3VycmVudCYmdy51cGRhdGUobixmKX0pO2NvbnN0IF89bltnel0sTz1DLnVzZVJlZighIV8mJnR5cGVvZiB3aW5kb3c8InUiJiYhd2luZG93Lk1vdGlvbkhhbmRvZmZJc0NvbXBsZXRlPy4oXykmJndpbmRvdy5Nb3Rpb25IYXNPcHRpbWlzZWRBbmltYXRpb24/LihfKSk7cmV0dXJuIFBUKCgpPT57eC5jdXJyZW50PSEwLHcmJihnLmN1cnJlbnQ9ITAsd2luZG93Lk1vdGlvbklzTW91bnRlZD0hMCx3LnVwZGF0ZUZlYXR1cmVzKCksdy5zY2hlZHVsZVJlbmRlck1pY3JvdGFzaygpLE8uY3VycmVudCYmdy5hbmltYXRpb25TdGF0ZSYmdy5hbmltYXRpb25TdGF0ZS5hbmltYXRlQ2hhbmdlcygpKX0pLEMudXNlRWZmZWN0KCgpPT57dyYmKCFPLmN1cnJlbnQmJncuYW5pbWF0aW9uU3RhdGUmJncuYW5pbWF0aW9uU3RhdGUuYW5pbWF0ZUNoYW5nZXMoKSxPLmN1cnJlbnQmJihxdWV1ZU1pY3JvdGFzaygoKT0+e3dpbmRvdy5Nb3Rpb25IYW5kb2ZmTWFya0FzQ29tcGxldGU/LihfKX0pLE8uY3VycmVudD0hMSksdy5lbnRlcmluZ0NoaWxkcmVuPXZvaWQgMCl9KSx3fWZ1bmN0aW9uIHNnZShlLHQsbixyKXtjb25zdHtsYXlvdXRJZDppLGxheW91dDpvLGRyYWc6cyxkcmFnQ29uc3RyYWludHM6dSxsYXlvdXRTY3JvbGw6ZixsYXlvdXRSb290OmQsbGF5b3V0QW5jaG9yOnAsbGF5b3V0Q3Jvc3NmYWRlOm19PXQ7ZS5wcm9qZWN0aW9uPW5ldyBuKGUubGF0ZXN0VmFsdWVzLHRbImRhdGEtZnJhbWVyLXBvcnRhbC1pZCJdP3ZvaWQgMDp1NihlLnBhcmVudCkpLGUucHJvamVjdGlvbi5zZXRPcHRpb25zKHtsYXlvdXRJZDppLGxheW91dDpvLGFsd2F5c01lYXN1cmVMYXlvdXQ6ISFzfHx1JiZqbCh1KSx2aXN1YWxFbGVtZW50OmUsYW5pbWF0aW9uVHlwZTp0eXBlb2Ygbz09InN0cmluZyI/bzoiYm90aCIsaW5pdGlhbFByb21vdGlvbkNvbmZpZzpyLGNyb3NzZmFkZTptLGxheW91dFNjcm9sbDpmLGxheW91dFJvb3Q6ZCxsYXlvdXRBbmNob3I6cH0pfWZ1bmN0aW9uIHU2KGUpe2lmKGUpcmV0dXJuIGUub3B0aW9ucy5hbGxvd1Byb2plY3Rpb24hPT0hMT9lLnByb2plY3Rpb246dTYoZS5wYXJlbnQpfWZ1bmN0aW9uIGdTKGUse2ZvcndhcmRNb3Rpb25Qcm9wczp0PSExLHR5cGU6bn09e30scixpKXtyJiZVdmUocik7Y29uc3Qgbz1uP249PT0ic3ZnIjpyRShlKSxzPW8/cmdlOm5nZTtmdW5jdGlvbiB1KGQscCl7bGV0IG07Y29uc3QgeT17Li4uQy51c2VDb250ZXh0KHRFKSwuLi5kLGxheW91dElkOmxnZShkKX0se2lzU3RhdGljOnh9PXksdz1LdmUoZCksYj1zKGQseCk7aWYoIXgmJnR5cGVvZiB3aW5kb3c8InUiKXt1Z2UoKTtjb25zdCBnPWNnZSh5KTttPWcuTWVhc3VyZUxheW91dCx3LnZpc3VhbEVsZW1lbnQ9b2dlKGUsYix5LGksZy5Qcm9qZWN0aW9uTm9kZSxvKX1yZXR1cm4gQS5qc3hzKE92LlByb3ZpZGVyLHt2YWx1ZTp3LGNoaWxkcmVuOlttJiZ3LnZpc3VhbEVsZW1lbnQ/QS5qc3gobSx7dmlzdWFsRWxlbWVudDp3LnZpc3VhbEVsZW1lbnQsLi4ueX0pOm51bGwsSnZlKGUsZCxhZ2UoYix3LnZpc3VhbEVsZW1lbnQscCksYix4LHQsbyldfSl9dS5kaXNwbGF5TmFtZT1gbW90aW9uLiR7dHlwZW9mIGU9PSJzdHJpbmciP2U6YGNyZWF0ZSgke2UuZGlzcGxheU5hbWU/P2UubmFtZT8/IiJ9KWB9YDtjb25zdCBmPUMuZm9yd2FyZFJlZih1KTtyZXR1cm4gZltpZ2VdPWUsZn1mdW5jdGlvbiBsZ2Uoe2xheW91dElkOmV9KXtjb25zdCB0PUMudXNlQ29udGV4dChDVCkuaWQ7cmV0dXJuIHQmJmUhPT12b2lkIDA/dCsiLSIrZTplfWZ1bmN0aW9uIHVnZShlLHQpe0MudXNlQ29udGV4dChuNikuc3RyaWN0fWZ1bmN0aW9uIGNnZShlKXtjb25zdCB0PXI2KCkse2RyYWc6bixsYXlvdXQ6cn09dDtpZighbiYmIXIpcmV0dXJue307Y29uc3QgaT17Li4ubiwuLi5yfTtyZXR1cm57TWVhc3VyZUxheW91dDpuPy5pc0VuYWJsZWQoZSl8fHI/LmlzRW5hYmxlZChlKT9pLk1lYXN1cmVMYXlvdXQ6dm9pZCAwLFByb2plY3Rpb25Ob2RlOmkuUHJvamVjdGlvbk5vZGV9fWZ1bmN0aW9uIGZnZShlLHQpe2lmKHR5cGVvZiBQcm94eT4idSIpcmV0dXJuIGdTO2NvbnN0IG49bmV3IE1hcCxyPShvLHMpPT5nUyhvLHMsZSx0KSxpPShvLHMpPT5yKG8scyk7cmV0dXJuIG5ldyBQcm94eShpLHtnZXQ6KG8scyk9PnM9PT0iY3JlYXRlIj9yOihuLmhhcyhzKXx8bi5zZXQocyxnUyhzLHZvaWQgMCxlLHQpKSxuLmdldChzKSl9KX1jb25zdCBkZ2U9KGUsdCk9PnQuaXNTVkc/P3JFKGUpP25ldyBVeWUodCk6bmV3IEx5ZSh0LHthbGxvd1Byb2plY3Rpb246ZSE9PUMuRnJhZ21lbnR9KTtjbGFzcyBoZ2UgZXh0ZW5kcyBBb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0LmFuaW1hdGlvblN0YXRlfHwodC5hbmltYXRpb25TdGF0ZT1LeWUodCkpfXVwZGF0ZUFuaW1hdGlvbkNvbnRyb2xzU3Vic2NyaXB0aW9uKCl7Y29uc3R7YW5pbWF0ZTp0fT10aGlzLm5vZGUuZ2V0UHJvcHMoKTtBdih0KSYmKHRoaXMudW5tb3VudENvbnRyb2xzPXQuc3Vic2NyaWJlKHRoaXMubm9kZSkpfW1vdW50KCl7dGhpcy51cGRhdGVBbmltYXRpb25Db250cm9sc1N1YnNjcmlwdGlvbigpfXVwZGF0ZSgpe2NvbnN0e2FuaW1hdGU6dH09dGhpcy5ub2RlLmdldFByb3BzKCkse2FuaW1hdGU6bn09dGhpcy5ub2RlLnByZXZQcm9wc3x8e307dCE9PW4mJnRoaXMudXBkYXRlQW5pbWF0aW9uQ29udHJvbHNTdWJzY3JpcHRpb24oKX11bm1vdW50KCl7dGhpcy5ub2RlLmFuaW1hdGlvblN0YXRlLnJlc2V0KCksdGhpcy51bm1vdW50Q29udHJvbHM/LigpfX1sZXQgcGdlPTA7Y2xhc3MgbWdlIGV4dGVuZHMgQW97Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaWQ9cGdlKyssdGhpcy5pc0V4aXRDb21wbGV0ZT0hMX11cGRhdGUoKXtpZighdGhpcy5ub2RlLnByZXNlbmNlQ29udGV4dClyZXR1cm47Y29uc3R7aXNQcmVzZW50OnQsb25FeGl0Q29tcGxldGU6bn09dGhpcy5ub2RlLnByZXNlbmNlQ29udGV4dCx7aXNQcmVzZW50OnJ9PXRoaXMubm9kZS5wcmV2UHJlc2VuY2VDb250ZXh0fHx7fTtpZighdGhpcy5ub2RlLmFuaW1hdGlvblN0YXRlfHx0PT09cilyZXR1cm47aWYodCYmcj09PSExKXtpZih0aGlzLmlzRXhpdENvbXBsZXRlKXtjb25zdHtpbml0aWFsOm8sY3VzdG9tOnN9PXRoaXMubm9kZS5nZXRQcm9wcygpO2lmKHR5cGVvZiBvPT0ic3RyaW5nInx8dHlwZW9mIG89PSJvYmplY3QiJiZvIT09bnVsbCYmIUFycmF5LmlzQXJyYXkobykpe2NvbnN0IHU9bXModGhpcy5ub2RlLG8scyk7aWYodSl7Y29uc3R7dHJhbnNpdGlvbjpmLHRyYW5zaXRpb25FbmQ6ZCwuLi5wfT11O2Zvcihjb25zdCBtIGluIHApdGhpcy5ub2RlLmdldFZhbHVlKG0pPy5qdW1wKHBbbV0pfX10aGlzLm5vZGUuYW5pbWF0aW9uU3RhdGUucmVzZXQoKSx0aGlzLm5vZGUuYW5pbWF0aW9uU3RhdGUuYW5pbWF0ZUNoYW5nZXMoKX1lbHNlIHRoaXMubm9kZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoImV4aXQiLCExKTt0aGlzLmlzRXhpdENvbXBsZXRlPSExO3JldHVybn1jb25zdCBpPXRoaXMubm9kZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoImV4aXQiLCF0KTtuJiYhdCYmaS50aGVuKCgpPT57dGhpcy5pc0V4aXRDb21wbGV0ZT0hMCxuKHRoaXMuaWQpfSl9bW91bnQoKXtjb25zdHtyZWdpc3Rlcjp0LG9uRXhpdENvbXBsZXRlOm59PXRoaXMubm9kZS5wcmVzZW5jZUNvbnRleHR8fHt9O24mJm4odGhpcy5pZCksdCYmKHRoaXMudW5tb3VudD10KHRoaXMuaWQpKX11bm1vdW50KCl7fX1jb25zdCB5Z2U9e2FuaW1hdGlvbjp7RmVhdHVyZTpoZ2V9LGV4aXQ6e0ZlYXR1cmU6bWdlfX07ZnVuY3Rpb24gQmQoZSl7cmV0dXJue3BvaW50Ont4OmUucGFnZVgseTplLnBhZ2VZfX19Y29uc3QgdmdlPWU9PnQ9PllUKHQpJiZlKHQsQmQodCkpO2Z1bmN0aW9uIF9mKGUsdCxuLHIpe3JldHVybiBtZChlLHQsdmdlKG4pLHIpfWNvbnN0IGM2PSh7Y3VycmVudDplfSk9PmU/ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Om51bGwsd0I9KGUsdCk9Pk1hdGguYWJzKGUtdCk7ZnVuY3Rpb24gZ2dlKGUsdCl7Y29uc3Qgbj13QihlLngsdC54KSxyPXdCKGUueSx0LnkpO3JldHVybiBNYXRoLnNxcnQobioqMityKioyKX1jb25zdCBTQj1uZXcgU2V0KFsiYXV0byIsInNjcm9sbCJdKTtjbGFzcyBmNntjb25zdHJ1Y3Rvcih0LG4se3RyYW5zZm9ybVBhZ2VQb2ludDpyLGNvbnRleHRXaW5kb3c6aT13aW5kb3csZHJhZ1NuYXBUb09yaWdpbjpvPSExLGRpc3RhbmNlVGhyZXNob2xkOnM9MyxlbGVtZW50OnV9PXt9KXtpZih0aGlzLnN0YXJ0RXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnRJbmZvPW51bGwsdGhpcy5sYXN0UmF3TW92ZUV2ZW50SW5mbz1udWxsLHRoaXMuaGFuZGxlcnM9e30sdGhpcy5jb250ZXh0V2luZG93PXdpbmRvdyx0aGlzLnNjcm9sbFBvc2l0aW9ucz1uZXcgTWFwLHRoaXMucmVtb3ZlU2Nyb2xsTGlzdGVuZXJzPW51bGwsdGhpcy5vbkVsZW1lbnRTY3JvbGw9dz0+e3RoaXMuaGFuZGxlU2Nyb2xsKHcudGFyZ2V0KX0sdGhpcy5vbldpbmRvd1Njcm9sbD0oKT0+e3RoaXMuaGFuZGxlU2Nyb2xsKHdpbmRvdyl9LHRoaXMudXBkYXRlUG9pbnQ9KCk9PntpZighKHRoaXMubGFzdE1vdmVFdmVudCYmdGhpcy5sYXN0TW92ZUV2ZW50SW5mbykpcmV0dXJuO3RoaXMubGFzdFJhd01vdmVFdmVudEluZm8mJih0aGlzLmxhc3RNb3ZlRXZlbnRJbmZvPV9wKHRoaXMubGFzdFJhd01vdmVFdmVudEluZm8sdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpKTtjb25zdCB3PWJTKHRoaXMubGFzdE1vdmVFdmVudEluZm8sdGhpcy5oaXN0b3J5KSxiPXRoaXMuc3RhcnRFdmVudCE9PW51bGwsZz1nZ2Uody5vZmZzZXQse3g6MCx5OjB9KT49dGhpcy5kaXN0YW5jZVRocmVzaG9sZDtpZighYiYmIWcpcmV0dXJuO2NvbnN0e3BvaW50Ol99PXcse3RpbWVzdGFtcDpPfT1Sbjt0aGlzLmhpc3RvcnkucHVzaCh7Li4uXyx0aW1lc3RhbXA6T30pO2NvbnN0e29uU3RhcnQ6RSxvbk1vdmU6an09dGhpcy5oYW5kbGVycztifHwoRSYmRSh0aGlzLmxhc3RNb3ZlRXZlbnQsdyksdGhpcy5zdGFydEV2ZW50PXRoaXMubGFzdE1vdmVFdmVudCksaiYmaih0aGlzLmxhc3RNb3ZlRXZlbnQsdyl9LHRoaXMuaGFuZGxlUG9pbnRlck1vdmU9KHcsYik9Pnt0aGlzLmxhc3RNb3ZlRXZlbnQ9dyx0aGlzLmxhc3RSYXdNb3ZlRXZlbnRJbmZvPWIsdGhpcy5sYXN0TW92ZUV2ZW50SW5mbz1fcChiLHRoaXMudHJhbnNmb3JtUGFnZVBvaW50KSxNdC51cGRhdGUodGhpcy51cGRhdGVQb2ludCwhMCl9LHRoaXMuaGFuZGxlUG9pbnRlclVwPSh3LGIpPT57dGhpcy5lbmQoKTtjb25zdHtvbkVuZDpnLG9uU2Vzc2lvbkVuZDpfLHJlc3VtZUFuaW1hdGlvbjpPfT10aGlzLmhhbmRsZXJzO2lmKCh0aGlzLmRyYWdTbmFwVG9PcmlnaW58fCF0aGlzLnN0YXJ0RXZlbnQpJiZPJiZPKCksISh0aGlzLmxhc3RNb3ZlRXZlbnQmJnRoaXMubGFzdE1vdmVFdmVudEluZm8pKXJldHVybjtjb25zdCBFPWJTKHcudHlwZT09PSJwb2ludGVyY2FuY2VsIj90aGlzLmxhc3RNb3ZlRXZlbnRJbmZvOl9wKGIsdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpLHRoaXMuaGlzdG9yeSk7dGhpcy5zdGFydEV2ZW50JiZnJiZnKHcsRSksXyYmXyh3LEUpfSwhWVQodCkpcmV0dXJuO3RoaXMuZHJhZ1NuYXBUb09yaWdpbj1vLHRoaXMuaGFuZGxlcnM9bix0aGlzLnRyYW5zZm9ybVBhZ2VQb2ludD1yLHRoaXMuZGlzdGFuY2VUaHJlc2hvbGQ9cyx0aGlzLmNvbnRleHRXaW5kb3c9aXx8d2luZG93O2NvbnN0IGY9QmQodCksZD1fcChmLHRoaXMudHJhbnNmb3JtUGFnZVBvaW50KSx7cG9pbnQ6cH09ZCx7dGltZXN0YW1wOm19PVJuO3RoaXMuaGlzdG9yeT1bey4uLnAsdGltZXN0YW1wOm19XTtjb25zdHtvblNlc3Npb25TdGFydDp5fT1uO3kmJnkodCxiUyhkLHRoaXMuaGlzdG9yeSkpO2NvbnN0IHg9e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH07dGhpcy5yZW1vdmVMaXN0ZW5lcnM9TGQoX2YodGhpcy5jb250ZXh0V2luZG93LCJwb2ludGVybW92ZSIsdGhpcy5oYW5kbGVQb2ludGVyTW92ZSx4KSxfZih0aGlzLmNvbnRleHRXaW5kb3csInBvaW50ZXJ1cCIsdGhpcy5oYW5kbGVQb2ludGVyVXAseCksX2YodGhpcy5jb250ZXh0V2luZG93LCJwb2ludGVyY2FuY2VsIix0aGlzLmhhbmRsZVBvaW50ZXJVcCx4KSksdSYmdGhpcy5zdGFydFNjcm9sbFRyYWNraW5nKHUpfXN0YXJ0U2Nyb2xsVHJhY2tpbmcodCl7bGV0IG49dC5wYXJlbnRFbGVtZW50O2Zvcig7bjspe2NvbnN0IHI9Z2V0Q29tcHV0ZWRTdHlsZShuKTsoU0IuaGFzKHIub3ZlcmZsb3dYKXx8U0IuaGFzKHIub3ZlcmZsb3dZKSkmJnRoaXMuc2Nyb2xsUG9zaXRpb25zLnNldChuLHt4Om4uc2Nyb2xsTGVmdCx5Om4uc2Nyb2xsVG9wfSksbj1uLnBhcmVudEVsZW1lbnR9dGhpcy5zY3JvbGxQb3NpdGlvbnMuc2V0KHdpbmRvdyx7eDp3aW5kb3cuc2Nyb2xsWCx5OndpbmRvdy5zY3JvbGxZfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5vbkVsZW1lbnRTY3JvbGwse2NhcHR1cmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLm9uV2luZG93U2Nyb2xsKSx0aGlzLnJlbW92ZVNjcm9sbExpc3RlbmVycz0oKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMub25FbGVtZW50U2Nyb2xsLHtjYXB0dXJlOiEwfSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5vbldpbmRvd1Njcm9sbCl9fWhhbmRsZVNjcm9sbCh0KXtjb25zdCBuPXRoaXMuc2Nyb2xsUG9zaXRpb25zLmdldCh0KTtpZighbilyZXR1cm47Y29uc3Qgcj10PT09d2luZG93LGk9cj97eDp3aW5kb3cuc2Nyb2xsWCx5OndpbmRvdy5zY3JvbGxZfTp7eDp0LnNjcm9sbExlZnQseTp0LnNjcm9sbFRvcH0sbz17eDppLngtbi54LHk6aS55LW4ueX07by54PT09MCYmby55PT09MHx8KHI/dGhpcy5sYXN0TW92ZUV2ZW50SW5mbyYmKHRoaXMubGFzdE1vdmVFdmVudEluZm8ucG9pbnQueCs9by54LHRoaXMubGFzdE1vdmVFdmVudEluZm8ucG9pbnQueSs9by55KTp0aGlzLmhpc3RvcnkubGVuZ3RoPjAmJih0aGlzLmhpc3RvcnlbMF0ueC09by54LHRoaXMuaGlzdG9yeVswXS55LT1vLnkpLHRoaXMuc2Nyb2xsUG9zaXRpb25zLnNldCh0LGkpLE10LnVwZGF0ZSh0aGlzLnVwZGF0ZVBvaW50LCEwKSl9dXBkYXRlSGFuZGxlcnModCl7dGhpcy5oYW5kbGVycz10fWVuZCgpe3RoaXMucmVtb3ZlTGlzdGVuZXJzJiZ0aGlzLnJlbW92ZUxpc3RlbmVycygpLHRoaXMucmVtb3ZlU2Nyb2xsTGlzdGVuZXJzJiZ0aGlzLnJlbW92ZVNjcm9sbExpc3RlbmVycygpLHRoaXMuc2Nyb2xsUG9zaXRpb25zLmNsZWFyKCksY28odGhpcy51cGRhdGVQb2ludCl9fWZ1bmN0aW9uIF9wKGUsdCl7cmV0dXJuIHQ/e3BvaW50OnQoZS5wb2ludCl9OmV9ZnVuY3Rpb24gQUIoZSx0KXtyZXR1cm57eDplLngtdC54LHk6ZS55LXQueX19ZnVuY3Rpb24gYlMoe3BvaW50OmV9LHQpe3JldHVybntwb2ludDplLGRlbHRhOkFCKGUsZDYodCkpLG9mZnNldDpBQihlLGJnZSh0KSksdmVsb2NpdHk6eGdlKHQsLjEpfX1mdW5jdGlvbiBiZ2UoZSl7cmV0dXJuIGVbMF19ZnVuY3Rpb24gZDYoZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24geGdlKGUsdCl7aWYoZS5sZW5ndGg8MilyZXR1cm57eDowLHk6MH07bGV0IG49ZS5sZW5ndGgtMSxyPW51bGw7Y29uc3QgaT1kNihlKTtmb3IoO24+PTAmJihyPWVbbl0sIShpLnRpbWVzdGFtcC1yLnRpbWVzdGFtcD5Tcih0KSkpOyluLS07aWYoIXIpcmV0dXJue3g6MCx5OjB9O3I9PT1lWzBdJiZlLmxlbmd0aD4yJiZpLnRpbWVzdGFtcC1yLnRpbWVzdGFtcD5Tcih0KSoyJiYocj1lWzFdKTtjb25zdCBvPXFyKGkudGltZXN0YW1wLXIudGltZXN0YW1wKTtpZihvPT09MClyZXR1cm57eDowLHk6MH07Y29uc3Qgcz17eDooaS54LXIueCkvbyx5OihpLnktci55KS9vfTtyZXR1cm4gcy54PT09MS8wJiYocy54PTApLHMueT09PTEvMCYmKHMueT0wKSxzfWZ1bmN0aW9uIHdnZShlLHttaW46dCxtYXg6bn0scil7cmV0dXJuIHQhPT12b2lkIDAmJmU8dD9lPXI/anQodCxlLHIubWluKTpNYXRoLm1heChlLHQpOm4hPT12b2lkIDAmJmU+biYmKGU9cj9qdChuLGUsci5tYXgpOk1hdGgubWluKGUsbikpLGV9ZnVuY3Rpb24gX0IoZSx0LG4pe3JldHVybnttaW46dCE9PXZvaWQgMD9lLm1pbit0OnZvaWQgMCxtYXg6biE9PXZvaWQgMD9lLm1heCtuLShlLm1heC1lLm1pbik6dm9pZCAwfX1mdW5jdGlvbiBTZ2UoZSx7dG9wOnQsbGVmdDpuLGJvdHRvbTpyLHJpZ2h0Oml9KXtyZXR1cm57eDpfQihlLngsbixpKSx5Ol9CKGUueSx0LHIpfX1mdW5jdGlvbiBPQihlLHQpe2xldCBuPXQubWluLWUubWluLHI9dC5tYXgtZS5tYXg7cmV0dXJuIHQubWF4LXQubWluPGUubWF4LWUubWluJiYoW24scl09W3Isbl0pLHttaW46bixtYXg6cn19ZnVuY3Rpb24gQWdlKGUsdCl7cmV0dXJue3g6T0IoZS54LHQueCkseTpPQihlLnksdC55KX19ZnVuY3Rpb24gX2dlKGUsdCl7bGV0IG49LjU7Y29uc3Qgcj1ZbihlKSxpPVluKHQpO3JldHVybiBpPnI/bj1kZCh0Lm1pbix0Lm1heC1yLGUubWluKTpyPmkmJihuPWRkKGUubWluLGUubWF4LWksdC5taW4pKSxOaSgwLDEsbil9ZnVuY3Rpb24gT2dlKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4gdC5taW4hPT12b2lkIDAmJihuLm1pbj10Lm1pbi1lLm1pbiksdC5tYXghPT12b2lkIDAmJihuLm1heD10Lm1heC1lLm1pbiksbn1jb25zdCAkXz0uMzU7ZnVuY3Rpb24gVGdlKGU9JF8pe3JldHVybiBlPT09ITE/ZT0wOmU9PT0hMCYmKGU9JF8pLHt4OlRCKGUsImxlZnQiLCJyaWdodCIpLHk6VEIoZSwidG9wIiwiYm90dG9tIil9fWZ1bmN0aW9uIFRCKGUsdCxuKXtyZXR1cm57bWluOkVCKGUsdCksbWF4OkVCKGUsbil9fWZ1bmN0aW9uIEVCKGUsdCl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIj9lOmVbdF18fDB9Y29uc3QgRWdlPW5ldyBXZWFrTWFwO2NsYXNzIENnZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLm9wZW5EcmFnTG9jaz1udWxsLHRoaXMuaXNEcmFnZ2luZz0hMSx0aGlzLmN1cnJlbnREaXJlY3Rpb249bnVsbCx0aGlzLm9yaWdpblBvaW50PXt4OjAseTowfSx0aGlzLmNvbnN0cmFpbnRzPSExLHRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSExLHRoaXMuZWxhc3RpYz1wbigpLHRoaXMubGF0ZXN0UG9pbnRlckV2ZW50PW51bGwsdGhpcy5sYXRlc3RQYW5JbmZvPW51bGwsdGhpcy52aXN1YWxFbGVtZW50PXR9c3RhcnQodCx7c25hcFRvQ3Vyc29yOm49ITEsZGlzdGFuY2VUaHJlc2hvbGQ6cn09e30pe2NvbnN0e3ByZXNlbmNlQ29udGV4dDppfT10aGlzLnZpc3VhbEVsZW1lbnQ7aWYoaSYmaS5pc1ByZXNlbnQ9PT0hMSlyZXR1cm47Y29uc3Qgbz1tPT57biYmdGhpcy5zbmFwVG9DdXJzb3IoQmQobSkucG9pbnQpLHRoaXMuc3RvcEFuaW1hdGlvbigpfSxzPShtLHkpPT57Y29uc3R7ZHJhZzp4LGRyYWdQcm9wYWdhdGlvbjp3LG9uRHJhZ1N0YXJ0OmJ9PXRoaXMuZ2V0UHJvcHMoKTtpZih4JiYhdyYmKHRoaXMub3BlbkRyYWdMb2NrJiZ0aGlzLm9wZW5EcmFnTG9jaygpLHRoaXMub3BlbkRyYWdMb2NrPXR5ZSh4KSwhdGhpcy5vcGVuRHJhZ0xvY2spKXJldHVybjt0aGlzLmxhdGVzdFBvaW50ZXJFdmVudD1tLHRoaXMubGF0ZXN0UGFuSW5mbz15LHRoaXMuaXNEcmFnZ2luZz0hMCx0aGlzLmN1cnJlbnREaXJlY3Rpb249bnVsbCx0aGlzLnJlc29sdmVDb25zdHJhaW50cygpLHRoaXMudmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uJiYodGhpcy52aXN1YWxFbGVtZW50LnByb2plY3Rpb24uaXNBbmltYXRpb25CbG9ja2VkPSEwLHRoaXMudmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uLnRhcmdldD12b2lkIDApLHZpKF89PntsZXQgTz10aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShfKS5nZXQoKXx8MDtpZihDaS50ZXN0KE8pKXtjb25zdHtwcm9qZWN0aW9uOkV9PXRoaXMudmlzdWFsRWxlbWVudDtpZihFJiZFLmxheW91dCl7Y29uc3Qgaj1FLmxheW91dC5sYXlvdXRCb3hbX107aiYmKE89WW4oaikqKHBhcnNlRmxvYXQoTykvMTAwKSl9fXRoaXMub3JpZ2luUG9pbnRbX109T30pLGImJk10LnVwZGF0ZSgoKT0+YihtLHkpLCExLCEwKSxDXyh0aGlzLnZpc3VhbEVsZW1lbnQsInRyYW5zZm9ybSIpO2NvbnN0e2FuaW1hdGlvblN0YXRlOmd9PXRoaXMudmlzdWFsRWxlbWVudDtnJiZnLnNldEFjdGl2ZSgid2hpbGVEcmFnIiwhMCl9LHU9KG0seSk9Pnt0aGlzLmxhdGVzdFBvaW50ZXJFdmVudD1tLHRoaXMubGF0ZXN0UGFuSW5mbz15O2NvbnN0e2RyYWdQcm9wYWdhdGlvbjp4LGRyYWdEaXJlY3Rpb25Mb2NrOncsb25EaXJlY3Rpb25Mb2NrOmIsb25EcmFnOmd9PXRoaXMuZ2V0UHJvcHMoKTtpZigheCYmIXRoaXMub3BlbkRyYWdMb2NrKXJldHVybjtjb25zdHtvZmZzZXQ6X309eTtpZih3JiZ0aGlzLmN1cnJlbnREaXJlY3Rpb249PT1udWxsKXt0aGlzLmN1cnJlbnREaXJlY3Rpb249UGdlKF8pLHRoaXMuY3VycmVudERpcmVjdGlvbiE9PW51bGwmJmImJmIodGhpcy5jdXJyZW50RGlyZWN0aW9uKTtyZXR1cm59dGhpcy51cGRhdGVBeGlzKCJ4Iix5LnBvaW50LF8pLHRoaXMudXBkYXRlQXhpcygieSIseS5wb2ludCxfKSx0aGlzLnZpc3VhbEVsZW1lbnQucmVuZGVyKCksZyYmTXQudXBkYXRlKCgpPT5nKG0seSksITEsITApfSxmPShtLHkpPT57dGhpcy5sYXRlc3RQb2ludGVyRXZlbnQ9bSx0aGlzLmxhdGVzdFBhbkluZm89eSx0aGlzLnN0b3AobSx5KSx0aGlzLmxhdGVzdFBvaW50ZXJFdmVudD1udWxsLHRoaXMubGF0ZXN0UGFuSW5mbz1udWxsfSxkPSgpPT57Y29uc3R7ZHJhZ1NuYXBUb09yaWdpbjptfT10aGlzLmdldFByb3BzKCk7KG18fHRoaXMuY29uc3RyYWludHMpJiZ0aGlzLnN0YXJ0QW5pbWF0aW9uKHt4OjAseTowfSl9LHtkcmFnU25hcFRvT3JpZ2luOnB9PXRoaXMuZ2V0UHJvcHMoKTt0aGlzLnBhblNlc3Npb249bmV3IGY2KHQse29uU2Vzc2lvblN0YXJ0Om8sb25TdGFydDpzLG9uTW92ZTp1LG9uU2Vzc2lvbkVuZDpmLHJlc3VtZUFuaW1hdGlvbjpkfSx7dHJhbnNmb3JtUGFnZVBvaW50OnRoaXMudmlzdWFsRWxlbWVudC5nZXRUcmFuc2Zvcm1QYWdlUG9pbnQoKSxkcmFnU25hcFRvT3JpZ2luOnAsZGlzdGFuY2VUaHJlc2hvbGQ6cixjb250ZXh0V2luZG93OmM2KHRoaXMudmlzdWFsRWxlbWVudCksZWxlbWVudDp0aGlzLnZpc3VhbEVsZW1lbnQuY3VycmVudH0pfXN0b3AodCxuKXtjb25zdCByPXR8fHRoaXMubGF0ZXN0UG9pbnRlckV2ZW50LGk9bnx8dGhpcy5sYXRlc3RQYW5JbmZvLG89dGhpcy5pc0RyYWdnaW5nO2lmKHRoaXMuY2FuY2VsKCksIW98fCFpfHwhcilyZXR1cm47Y29uc3R7dmVsb2NpdHk6c309aTt0aGlzLnN0YXJ0QW5pbWF0aW9uKHMpO2NvbnN0e29uRHJhZ0VuZDp1fT10aGlzLmdldFByb3BzKCk7dSYmTXQucG9zdFJlbmRlcigoKT0+dShyLGkpKX1jYW5jZWwoKXt0aGlzLmlzRHJhZ2dpbmc9ITE7Y29uc3R7cHJvamVjdGlvbjp0LGFuaW1hdGlvblN0YXRlOm59PXRoaXMudmlzdWFsRWxlbWVudDt0JiYodC5pc0FuaW1hdGlvbkJsb2NrZWQ9ITEpLHRoaXMuZW5kUGFuU2Vzc2lvbigpO2NvbnN0e2RyYWdQcm9wYWdhdGlvbjpyfT10aGlzLmdldFByb3BzKCk7IXImJnRoaXMub3BlbkRyYWdMb2NrJiYodGhpcy5vcGVuRHJhZ0xvY2soKSx0aGlzLm9wZW5EcmFnTG9jaz1udWxsKSxuJiZuLnNldEFjdGl2ZSgid2hpbGVEcmFnIiwhMSl9ZW5kUGFuU2Vzc2lvbigpe3RoaXMucGFuU2Vzc2lvbiYmdGhpcy5wYW5TZXNzaW9uLmVuZCgpLHRoaXMucGFuU2Vzc2lvbj12b2lkIDB9dXBkYXRlQXhpcyh0LG4scil7Y29uc3R7ZHJhZzppfT10aGlzLmdldFByb3BzKCk7aWYoIXJ8fCFPcCh0LGksdGhpcy5jdXJyZW50RGlyZWN0aW9uKSlyZXR1cm47Y29uc3Qgbz10aGlzLmdldEF4aXNNb3Rpb25WYWx1ZSh0KTtsZXQgcz10aGlzLm9yaWdpblBvaW50W3RdK3JbdF07dGhpcy5jb25zdHJhaW50cyYmdGhpcy5jb25zdHJhaW50c1t0XSYmKHM9d2dlKHMsdGhpcy5jb25zdHJhaW50c1t0XSx0aGlzLmVsYXN0aWNbdF0pKSxvLnNldChzKX1yZXNvbHZlQ29uc3RyYWludHMoKXtjb25zdHtkcmFnQ29uc3RyYWludHM6dCxkcmFnRWxhc3RpYzpufT10aGlzLmdldFByb3BzKCkscj10aGlzLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbiYmIXRoaXMudmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uLmxheW91dD90aGlzLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi5tZWFzdXJlKCExKTp0aGlzLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbj8ubGF5b3V0LGk9dGhpcy5jb25zdHJhaW50czt0JiZqbCh0KT90aGlzLmNvbnN0cmFpbnRzfHwodGhpcy5jb25zdHJhaW50cz10aGlzLnJlc29sdmVSZWZDb25zdHJhaW50cygpKTp0JiZyP3RoaXMuY29uc3RyYWludHM9U2dlKHIubGF5b3V0Qm94LHQpOnRoaXMuY29uc3RyYWludHM9ITEsdGhpcy5lbGFzdGljPVRnZShuKSxpIT09dGhpcy5jb25zdHJhaW50cyYmIWpsKHQpJiZyJiZ0aGlzLmNvbnN0cmFpbnRzJiYhdGhpcy5oYXNNdXRhdGVkQ29uc3RyYWludHMmJnZpKG89Pnt0aGlzLmNvbnN0cmFpbnRzIT09ITEmJnRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKG8pJiYodGhpcy5jb25zdHJhaW50c1tvXT1PZ2Uoci5sYXlvdXRCb3hbb10sdGhpcy5jb25zdHJhaW50c1tvXSkpfSl9cmVzb2x2ZVJlZkNvbnN0cmFpbnRzKCl7Y29uc3R7ZHJhZ0NvbnN0cmFpbnRzOnQsb25NZWFzdXJlRHJhZ0NvbnN0cmFpbnRzOm59PXRoaXMuZ2V0UHJvcHMoKTtpZighdHx8IWpsKHQpKXJldHVybiExO2NvbnN0IHI9dC5jdXJyZW50LHtwcm9qZWN0aW9uOml9PXRoaXMudmlzdWFsRWxlbWVudDtpZighaXx8IWkubGF5b3V0KXJldHVybiExO2kucm9vdCYmKGkucm9vdC5zY3JvbGw9dm9pZCAwLGkucm9vdC51cGRhdGVTY3JvbGwoKSk7Y29uc3Qgbz1QeWUocixpLnJvb3QsdGhpcy52aXN1YWxFbGVtZW50LmdldFRyYW5zZm9ybVBhZ2VQb2ludCgpKTtsZXQgcz1BZ2UoaS5sYXlvdXQubGF5b3V0Qm94LG8pO2lmKG4pe2NvbnN0IHU9bihFeWUocykpO3RoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSEhdSx1JiYocz1reih1KSl9cmV0dXJuIHN9c3RhcnRBbmltYXRpb24odCl7Y29uc3R7ZHJhZzpuLGRyYWdNb21lbnR1bTpyLGRyYWdFbGFzdGljOmksZHJhZ1RyYW5zaXRpb246byxkcmFnU25hcFRvT3JpZ2luOnMsb25EcmFnVHJhbnNpdGlvbkVuZDp1fT10aGlzLmdldFByb3BzKCksZj10aGlzLmNvbnN0cmFpbnRzfHx7fSxkPXZpKHA9PntpZighT3AocCxuLHRoaXMuY3VycmVudERpcmVjdGlvbikpcmV0dXJuO2xldCBtPWYmJmZbcF18fHt9OyhzPT09ITB8fHM9PT1wKSYmKG09e21pbjowLG1heDowfSk7Y29uc3QgeT1pPzIwMDoxZTYseD1pPzQwOjFlNyx3PXt0eXBlOiJpbmVydGlhIix2ZWxvY2l0eTpyP3RbcF06MCxib3VuY2VTdGlmZm5lc3M6eSxib3VuY2VEYW1waW5nOngsdGltZUNvbnN0YW50Ojc1MCxyZXN0RGVsdGE6MSxyZXN0U3BlZWQ6MTAsLi4ubywuLi5tfTtyZXR1cm4gdGhpcy5zdGFydEF4aXNWYWx1ZUFuaW1hdGlvbihwLHcpfSk7cmV0dXJuIFByb21pc2UuYWxsKGQpLnRoZW4odSl9c3RhcnRBeGlzVmFsdWVBbmltYXRpb24odCxuKXtjb25zdCByPXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKHQpO3JldHVybiBDXyh0aGlzLnZpc3VhbEVsZW1lbnQsdCksci5zdGFydChGVCh0LHIsMCxuLHRoaXMudmlzdWFsRWxlbWVudCwhMSkpfXN0b3BBbmltYXRpb24oKXt2aSh0PT50aGlzLmdldEF4aXNNb3Rpb25WYWx1ZSh0KS5zdG9wKCkpfWdldEF4aXNNb3Rpb25WYWx1ZSh0KXtjb25zdCBuPWBfZHJhZyR7dC50b1VwcGVyQ2FzZSgpfWAsaT10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0UHJvcHMoKVtuXTtyZXR1cm4gaXx8dGhpcy52aXN1YWxFbGVtZW50LmdldFZhbHVlKHQsdGhpcy52aXN1YWxFbGVtZW50LmxhdGVzdFZhbHVlc1t0XT8/MCl9c25hcFRvQ3Vyc29yKHQpe3ZpKG49Pntjb25zdHtkcmFnOnJ9PXRoaXMuZ2V0UHJvcHMoKTtpZighT3AobixyLHRoaXMuY3VycmVudERpcmVjdGlvbikpcmV0dXJuO2NvbnN0e3Byb2plY3Rpb246aX09dGhpcy52aXN1YWxFbGVtZW50LG89dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUobik7aWYoaSYmaS5sYXlvdXQpe2NvbnN0e21pbjpzLG1heDp1fT1pLmxheW91dC5sYXlvdXRCb3hbbl0sZj1vLmdldCgpfHwwO28uc2V0KHRbbl0tanQocyx1LC41KStmKX19KX1zY2FsZVBvc2l0aW9uV2l0aGluQ29uc3RyYWludHMoKXtpZighdGhpcy52aXN1YWxFbGVtZW50LmN1cnJlbnQpcmV0dXJuO2NvbnN0e2RyYWc6dCxkcmFnQ29uc3RyYWludHM6bn09dGhpcy5nZXRQcm9wcygpLHtwcm9qZWN0aW9uOnJ9PXRoaXMudmlzdWFsRWxlbWVudDtpZighamwobil8fCFyfHwhdGhpcy5jb25zdHJhaW50cylyZXR1cm47dGhpcy5zdG9wQW5pbWF0aW9uKCk7Y29uc3QgaT17eDowLHk6MH07dmkocz0+e2NvbnN0IHU9dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUocyk7aWYodSYmdGhpcy5jb25zdHJhaW50cyE9PSExKXtjb25zdCBmPXUuZ2V0KCk7aVtzXT1fZ2Uoe21pbjpmLG1heDpmfSx0aGlzLmNvbnN0cmFpbnRzW3NdKX19KTtjb25zdHt0cmFuc2Zvcm1UZW1wbGF0ZTpvfT10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0UHJvcHMoKTt0aGlzLnZpc3VhbEVsZW1lbnQuY3VycmVudC5zdHlsZS50cmFuc2Zvcm09bz9vKHt9LCIiKToibm9uZSIsci5yb290JiZyLnJvb3QudXBkYXRlU2Nyb2xsKCksci51cGRhdGVMYXlvdXQoKSx0aGlzLmNvbnN0cmFpbnRzPSExLHRoaXMucmVzb2x2ZUNvbnN0cmFpbnRzKCksdmkocz0+e2lmKCFPcChzLHQsbnVsbCkpcmV0dXJuO2NvbnN0IHU9dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUocykse21pbjpmLG1heDpkfT10aGlzLmNvbnN0cmFpbnRzW3NdO3Uuc2V0KGp0KGYsZCxpW3NdKSl9KSx0aGlzLnZpc3VhbEVsZW1lbnQucmVuZGVyKCl9YWRkTGlzdGVuZXJzKCl7aWYoIXRoaXMudmlzdWFsRWxlbWVudC5jdXJyZW50KXJldHVybjtFZ2Uuc2V0KHRoaXMudmlzdWFsRWxlbWVudCx0aGlzKTtjb25zdCB0PXRoaXMudmlzdWFsRWxlbWVudC5jdXJyZW50LG49X2YodCwicG9pbnRlcmRvd24iLGQ9Pntjb25zdHtkcmFnOnAsZHJhZ0xpc3RlbmVyOm09ITB9PXRoaXMuZ2V0UHJvcHMoKSx5PWQudGFyZ2V0LHg9eSE9PXQmJnN5ZSh5KTtwJiZtJiYheCYmdGhpcy5zdGFydChkKX0pO2xldCByO2NvbnN0IGk9KCk9Pntjb25zdHtkcmFnQ29uc3RyYWludHM6ZH09dGhpcy5nZXRQcm9wcygpO2psKGQpJiZkLmN1cnJlbnQmJih0aGlzLmNvbnN0cmFpbnRzPXRoaXMucmVzb2x2ZVJlZkNvbnN0cmFpbnRzKCkscnx8KHI9amdlKHQsZC5jdXJyZW50LCgpPT50aGlzLnNjYWxlUG9zaXRpb25XaXRoaW5Db25zdHJhaW50cygpKSkpfSx7cHJvamVjdGlvbjpvfT10aGlzLnZpc3VhbEVsZW1lbnQscz1vLmFkZEV2ZW50TGlzdGVuZXIoIm1lYXN1cmUiLGkpO28mJiFvLmxheW91dCYmKG8ucm9vdCYmby5yb290LnVwZGF0ZVNjcm9sbCgpLG8udXBkYXRlTGF5b3V0KCkpLE10LnJlYWQoaSk7Y29uc3QgdT1tZCh3aW5kb3csInJlc2l6ZSIsKCk9PnRoaXMuc2NhbGVQb3NpdGlvbldpdGhpbkNvbnN0cmFpbnRzKCkpLGY9by5hZGRFdmVudExpc3RlbmVyKCJkaWRVcGRhdGUiLCgoe2RlbHRhOmQsaGFzTGF5b3V0Q2hhbmdlZDpwfSk9Pnt0aGlzLmlzRHJhZ2dpbmcmJnAmJih2aShtPT57Y29uc3QgeT10aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShtKTt5JiYodGhpcy5vcmlnaW5Qb2ludFttXSs9ZFttXS50cmFuc2xhdGUseS5zZXQoeS5nZXQoKStkW21dLnRyYW5zbGF0ZSkpfSksdGhpcy52aXN1YWxFbGVtZW50LnJlbmRlcigpKX0pKTtyZXR1cm4oKT0+e3UoKSxuKCkscygpLGYmJmYoKSxyJiZyKCl9fWdldFByb3BzKCl7Y29uc3QgdD10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0UHJvcHMoKSx7ZHJhZzpuPSExLGRyYWdEaXJlY3Rpb25Mb2NrOnI9ITEsZHJhZ1Byb3BhZ2F0aW9uOmk9ITEsZHJhZ0NvbnN0cmFpbnRzOm89ITEsZHJhZ0VsYXN0aWM6cz0kXyxkcmFnTW9tZW50dW06dT0hMH09dDtyZXR1cm57Li4udCxkcmFnOm4sZHJhZ0RpcmVjdGlvbkxvY2s6cixkcmFnUHJvcGFnYXRpb246aSxkcmFnQ29uc3RyYWludHM6byxkcmFnRWxhc3RpYzpzLGRyYWdNb21lbnR1bTp1fX19ZnVuY3Rpb24gQ0IoZSl7bGV0IHQ9ITA7cmV0dXJuKCk9PntpZih0KXt0PSExO3JldHVybn1lKCl9fWZ1bmN0aW9uIGpnZShlLHQsbil7Y29uc3Qgcj1rJChlLENCKG4pKSxpPWskKHQsQ0IobikpO3JldHVybigpPT57cigpLGkoKX19ZnVuY3Rpb24gT3AoZSx0LG4pe3JldHVybih0PT09ITB8fHQ9PT1lKSYmKG49PT1udWxsfHxuPT09ZSl9ZnVuY3Rpb24gUGdlKGUsdD0xMCl7bGV0IG49bnVsbDtyZXR1cm4gTWF0aC5hYnMoZS55KT50P249InkiOk1hdGguYWJzKGUueCk+dCYmKG49IngiKSxufWNsYXNzIE1nZSBleHRlbmRzIEFve2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMucmVtb3ZlR3JvdXBDb250cm9scz1Vcix0aGlzLnJlbW92ZUxpc3RlbmVycz1Vcix0aGlzLmNvbnRyb2xzPW5ldyBDZ2UodCl9bW91bnQoKXtjb25zdHtkcmFnQ29udHJvbHM6dH09dGhpcy5ub2RlLmdldFByb3BzKCk7dCYmKHRoaXMucmVtb3ZlR3JvdXBDb250cm9scz10LnN1YnNjcmliZSh0aGlzLmNvbnRyb2xzKSksdGhpcy5yZW1vdmVMaXN0ZW5lcnM9dGhpcy5jb250cm9scy5hZGRMaXN0ZW5lcnMoKXx8VXJ9dXBkYXRlKCl7Y29uc3R7ZHJhZ0NvbnRyb2xzOnR9PXRoaXMubm9kZS5nZXRQcm9wcygpLHtkcmFnQ29udHJvbHM6bn09dGhpcy5ub2RlLnByZXZQcm9wc3x8e307dCE9PW4mJih0aGlzLnJlbW92ZUdyb3VwQ29udHJvbHMoKSx0JiYodGhpcy5yZW1vdmVHcm91cENvbnRyb2xzPXQuc3Vic2NyaWJlKHRoaXMuY29udHJvbHMpKSl9dW5tb3VudCgpe3RoaXMucmVtb3ZlR3JvdXBDb250cm9scygpLHRoaXMucmVtb3ZlTGlzdGVuZXJzKCksdGhpcy5jb250cm9scy5pc0RyYWdnaW5nfHx0aGlzLmNvbnRyb2xzLmVuZFBhblNlc3Npb24oKX19Y29uc3QgeFM9ZT0+KHQsbik9PntlJiZNdC51cGRhdGUoKCk9PmUodCxuKSwhMSwhMCl9O2NsYXNzIFJnZSBleHRlbmRzIEFve2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbW92ZVBvaW50ZXJEb3duTGlzdGVuZXI9VXJ9b25Qb2ludGVyRG93bih0KXt0aGlzLnNlc3Npb249bmV3IGY2KHQsdGhpcy5jcmVhdGVQYW5IYW5kbGVycygpLHt0cmFuc2Zvcm1QYWdlUG9pbnQ6dGhpcy5ub2RlLmdldFRyYW5zZm9ybVBhZ2VQb2ludCgpLGNvbnRleHRXaW5kb3c6YzYodGhpcy5ub2RlKX0pfWNyZWF0ZVBhbkhhbmRsZXJzKCl7Y29uc3R7b25QYW5TZXNzaW9uU3RhcnQ6dCxvblBhblN0YXJ0Om4sb25QYW46cixvblBhbkVuZDppfT10aGlzLm5vZGUuZ2V0UHJvcHMoKTtyZXR1cm57b25TZXNzaW9uU3RhcnQ6eFModCksb25TdGFydDp4UyhuKSxvbk1vdmU6eFMociksb25FbmQ6KG8scyk9PntkZWxldGUgdGhpcy5zZXNzaW9uLGkmJk10LnBvc3RSZW5kZXIoKCk9PmkobyxzKSl9fX1tb3VudCgpe3RoaXMucmVtb3ZlUG9pbnRlckRvd25MaXN0ZW5lcj1fZih0aGlzLm5vZGUuY3VycmVudCwicG9pbnRlcmRvd24iLHQ9PnRoaXMub25Qb2ludGVyRG93bih0KSl9dXBkYXRlKCl7dGhpcy5zZXNzaW9uJiZ0aGlzLnNlc3Npb24udXBkYXRlSGFuZGxlcnModGhpcy5jcmVhdGVQYW5IYW5kbGVycygpKX11bm1vdW50KCl7dGhpcy5yZW1vdmVQb2ludGVyRG93bkxpc3RlbmVyKCksdGhpcy5zZXNzaW9uJiZ0aGlzLnNlc3Npb24uZW5kKCl9fWxldCB3Uz0hMTtjbGFzcyBOZ2UgZXh0ZW5kcyBDLkNvbXBvbmVudHtjb21wb25lbnREaWRNb3VudCgpe2NvbnN0e3Zpc3VhbEVsZW1lbnQ6dCxsYXlvdXRHcm91cDpuLHN3aXRjaExheW91dEdyb3VwOnIsbGF5b3V0SWQ6aX09dGhpcy5wcm9wcyx7cHJvamVjdGlvbjpvfT10O28mJihuLmdyb3VwJiZuLmdyb3VwLmFkZChvKSxyJiZyLnJlZ2lzdGVyJiZpJiZyLnJlZ2lzdGVyKG8pLHdTJiZvLnJvb3QuZGlkVXBkYXRlKCksby5hZGRFdmVudExpc3RlbmVyKCJhbmltYXRpb25Db21wbGV0ZSIsKCk9Pnt0aGlzLnNhZmVUb1JlbW92ZSgpfSksby5zZXRPcHRpb25zKHsuLi5vLm9wdGlvbnMsbGF5b3V0RGVwZW5kZW5jeTp0aGlzLnByb3BzLmxheW91dERlcGVuZGVuY3ksb25FeGl0Q29tcGxldGU6KCk9PnRoaXMuc2FmZVRvUmVtb3ZlKCl9KSksV3AuaGFzRXZlclVwZGF0ZWQ9ITB9Z2V0U25hcHNob3RCZWZvcmVVcGRhdGUodCl7Y29uc3R7bGF5b3V0RGVwZW5kZW5jeTpuLHZpc3VhbEVsZW1lbnQ6cixkcmFnOmksaXNQcmVzZW50Om99PXRoaXMucHJvcHMse3Byb2plY3Rpb246c309cjtyZXR1cm4gcyYmKHMuaXNQcmVzZW50PW8sdC5sYXlvdXREZXBlbmRlbmN5IT09biYmcy5zZXRPcHRpb25zKHsuLi5zLm9wdGlvbnMsbGF5b3V0RGVwZW5kZW5jeTpufSksd1M9ITAsaXx8dC5sYXlvdXREZXBlbmRlbmN5IT09bnx8bj09PXZvaWQgMHx8dC5pc1ByZXNlbnQhPT1vP3Mud2lsbFVwZGF0ZSgpOnRoaXMuc2FmZVRvUmVtb3ZlKCksdC5pc1ByZXNlbnQhPT1vJiYobz9zLnByb21vdGUoKTpzLnJlbGVnYXRlKCl8fE10LnBvc3RSZW5kZXIoKCk9Pntjb25zdCB1PXMuZ2V0U3RhY2soKTsoIXV8fCF1Lm1lbWJlcnMubGVuZ3RoKSYmdGhpcy5zYWZlVG9SZW1vdmUoKX0pKSksbnVsbH1jb21wb25lbnREaWRVcGRhdGUoKXtjb25zdHt2aXN1YWxFbGVtZW50OnQsbGF5b3V0QW5jaG9yOm59PXRoaXMucHJvcHMse3Byb2plY3Rpb246cn09dDtyJiYoci5vcHRpb25zLmxheW91dEFuY2hvcj1uLHIucm9vdC5kaWRVcGRhdGUoKSxXVC5wb3N0UmVuZGVyKCgpPT57IXIuY3VycmVudEFuaW1hdGlvbiYmci5pc0xlYWQoKSYmdGhpcy5zYWZlVG9SZW1vdmUoKX0pKX1jb21wb25lbnRXaWxsVW5tb3VudCgpe2NvbnN0e3Zpc3VhbEVsZW1lbnQ6dCxsYXlvdXRHcm91cDpuLHN3aXRjaExheW91dEdyb3VwOnJ9PXRoaXMucHJvcHMse3Byb2plY3Rpb246aX09dDt3Uz0hMCxpJiYoaS5zY2hlZHVsZUNoZWNrQWZ0ZXJVbm1vdW50KCksbiYmbi5ncm91cCYmbi5ncm91cC5yZW1vdmUoaSksciYmci5kZXJlZ2lzdGVyJiZyLmRlcmVnaXN0ZXIoaSkpfXNhZmVUb1JlbW92ZSgpe2NvbnN0e3NhZmVUb1JlbW92ZTp0fT10aGlzLnByb3BzO3QmJnQoKX1yZW5kZXIoKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gaDYoZSl7Y29uc3RbdCxuXT10NigpLHI9Qy51c2VDb250ZXh0KENUKTtyZXR1cm4gQS5qc3goTmdlLHsuLi5lLGxheW91dEdyb3VwOnIsc3dpdGNoTGF5b3V0R3JvdXA6Qy51c2VDb250ZXh0KGw2KSxpc1ByZXNlbnQ6dCxzYWZlVG9SZW1vdmU6bn0pfWNvbnN0IGtnZT17cGFuOntGZWF0dXJlOlJnZX0sZHJhZzp7RmVhdHVyZTpNZ2UsUHJvamVjdGlvbk5vZGU6ZTYsTWVhc3VyZUxheW91dDpoNn19O2Z1bmN0aW9uIGpCKGUsdCxuKXtjb25zdHtwcm9wczpyfT1lO2UuYW5pbWF0aW9uU3RhdGUmJnIud2hpbGVIb3ZlciYmZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoIndoaWxlSG92ZXIiLG49PT0iU3RhcnQiKTtjb25zdCBpPSJvbkhvdmVyIituLG89cltpXTtvJiZNdC5wb3N0UmVuZGVyKCgpPT5vKHQsQmQodCkpKX1jbGFzcyBEZ2UgZXh0ZW5kcyBBb3ttb3VudCgpe2NvbnN0e2N1cnJlbnQ6dH09dGhpcy5ub2RlO3QmJih0aGlzLnVubW91bnQ9cnllKHQsKG4scik9PihqQih0aGlzLm5vZGUsciwiU3RhcnQiKSxpPT5qQih0aGlzLm5vZGUsaSwiRW5kIikpKSl9dW5tb3VudCgpe319Y2xhc3MgTGdlIGV4dGVuZHMgQW97Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaXNBY3RpdmU9ITF9b25Gb2N1cygpe2xldCB0PSExO3RyeXt0PXRoaXMubm9kZS5jdXJyZW50Lm1hdGNoZXMoIjpmb2N1cy12aXNpYmxlIil9Y2F0Y2h7dD0hMH0hdHx8IXRoaXMubm9kZS5hbmltYXRpb25TdGF0ZXx8KHRoaXMubm9kZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoIndoaWxlRm9jdXMiLCEwKSx0aGlzLmlzQWN0aXZlPSEwKX1vbkJsdXIoKXshdGhpcy5pc0FjdGl2ZXx8IXRoaXMubm9kZS5hbmltYXRpb25TdGF0ZXx8KHRoaXMubm9kZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoIndoaWxlRm9jdXMiLCExKSx0aGlzLmlzQWN0aXZlPSExKX1tb3VudCgpe3RoaXMudW5tb3VudD1MZChtZCh0aGlzLm5vZGUuY3VycmVudCwiZm9jdXMiLCgpPT50aGlzLm9uRm9jdXMoKSksbWQodGhpcy5ub2RlLmN1cnJlbnQsImJsdXIiLCgpPT50aGlzLm9uQmx1cigpKSl9dW5tb3VudCgpe319ZnVuY3Rpb24gUEIoZSx0LG4pe2NvbnN0e3Byb3BzOnJ9PWU7aWYoZS5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQmJmUuY3VycmVudC5kaXNhYmxlZClyZXR1cm47ZS5hbmltYXRpb25TdGF0ZSYmci53aGlsZVRhcCYmZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoIndoaWxlVGFwIixuPT09IlN0YXJ0Iik7Y29uc3QgaT0ib25UYXAiKyhuPT09IkVuZCI/IiI6biksbz1yW2ldO28mJk10LnBvc3RSZW5kZXIoKCk9Pm8odCxCZCh0KSkpfWNsYXNzIElnZSBleHRlbmRzIEFve21vdW50KCl7Y29uc3R7Y3VycmVudDp0fT10aGlzLm5vZGU7aWYoIXQpcmV0dXJuO2NvbnN0e2dsb2JhbFRhcFRhcmdldDpuLHByb3BhZ2F0ZTpyfT10aGlzLm5vZGUucHJvcHM7dGhpcy51bm1vdW50PXV5ZSh0LChpLG8pPT4oUEIodGhpcy5ub2RlLG8sIlN0YXJ0IiksKHMse3N1Y2Nlc3M6dX0pPT5QQih0aGlzLm5vZGUscyx1PyJFbmQiOiJDYW5jZWwiKSkse3VzZUdsb2JhbFRhcmdldDpuLHN0b3BQcm9wYWdhdGlvbjpyPy50YXA9PT0hMX0pfXVubW91bnQoKXt9fWNvbnN0IEJfPW5ldyBXZWFrTWFwLFNTPW5ldyBXZWFrTWFwLCRnZT1lPT57Y29uc3QgdD1CXy5nZXQoZS50YXJnZXQpO3QmJnQoZSl9LEJnZT1lPT57ZS5mb3JFYWNoKCRnZSl9O2Z1bmN0aW9uIFZnZSh7cm9vdDplLC4uLnR9KXtjb25zdCBuPWV8fGRvY3VtZW50O1NTLmhhcyhuKXx8U1Muc2V0KG4se30pO2NvbnN0IHI9U1MuZ2V0KG4pLGk9SlNPTi5zdHJpbmdpZnkodCk7cmV0dXJuIHJbaV18fChyW2ldPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihCZ2Use3Jvb3Q6ZSwuLi50fSkpLHJbaV19ZnVuY3Rpb24gcWdlKGUsdCxuKXtjb25zdCByPVZnZSh0KTtyZXR1cm4gQl8uc2V0KGUsbiksci5vYnNlcnZlKGUpLCgpPT57Ql8uZGVsZXRlKGUpLHIudW5vYnNlcnZlKGUpfX1jb25zdCBVZ2U9e3NvbWU6MCxhbGw6MX07Y2xhc3MgemdlIGV4dGVuZHMgQW97Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaGFzRW50ZXJlZFZpZXc9ITEsdGhpcy5pc0luVmlldz0hMX1zdGFydE9ic2VydmVyKCl7dGhpcy5zdG9wT2JzZXJ2ZXI/LigpO2NvbnN0e3ZpZXdwb3J0OnQ9e319PXRoaXMubm9kZS5nZXRQcm9wcygpLHtyb290Om4sbWFyZ2luOnIsYW1vdW50Omk9InNvbWUiLG9uY2U6b309dCxzPXtyb290Om4/bi5jdXJyZW50OnZvaWQgMCxyb290TWFyZ2luOnIsdGhyZXNob2xkOnR5cGVvZiBpPT0ibnVtYmVyIj9pOlVnZVtpXX0sdT1mPT57Y29uc3R7aXNJbnRlcnNlY3Rpbmc6ZH09ZjtpZih0aGlzLmlzSW5WaWV3PT09ZHx8KHRoaXMuaXNJblZpZXc9ZCxvJiYhZCYmdGhpcy5oYXNFbnRlcmVkVmlldykpcmV0dXJuO2QmJih0aGlzLmhhc0VudGVyZWRWaWV3PSEwKSx0aGlzLm5vZGUuYW5pbWF0aW9uU3RhdGUmJnRoaXMubm9kZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoIndoaWxlSW5WaWV3IixkKTtjb25zdHtvblZpZXdwb3J0RW50ZXI6cCxvblZpZXdwb3J0TGVhdmU6bX09dGhpcy5ub2RlLmdldFByb3BzKCkseT1kP3A6bTt5JiZ5KGYpfTt0aGlzLnN0b3BPYnNlcnZlcj1xZ2UodGhpcy5ub2RlLmN1cnJlbnQscyx1KX1tb3VudCgpe3RoaXMuc3RhcnRPYnNlcnZlcigpfXVwZGF0ZSgpe2lmKHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcj4idSIpcmV0dXJuO2NvbnN0e3Byb3BzOnQscHJldlByb3BzOm59PXRoaXMubm9kZTtbImFtb3VudCIsIm1hcmdpbiIsInJvb3QiXS5zb21lKEZnZSh0LG4pKSYmdGhpcy5zdGFydE9ic2VydmVyKCl9dW5tb3VudCgpe3RoaXMuc3RvcE9ic2VydmVyPy4oKSx0aGlzLmhhc0VudGVyZWRWaWV3PSExLHRoaXMuaXNJblZpZXc9ITF9fWZ1bmN0aW9uIEZnZSh7dmlld3BvcnQ6ZT17fX0se3ZpZXdwb3J0OnQ9e319PXt9KXtyZXR1cm4gbj0+ZVtuXSE9PXRbbl19Y29uc3QgSGdlPXtpblZpZXc6e0ZlYXR1cmU6emdlfSx0YXA6e0ZlYXR1cmU6SWdlfSxmb2N1czp7RmVhdHVyZTpMZ2V9LGhvdmVyOntGZWF0dXJlOkRnZX19LEdnZT17bGF5b3V0OntQcm9qZWN0aW9uTm9kZTplNixNZWFzdXJlTGF5b3V0Omg2fX0sS2dlPXsuLi55Z2UsLi4uSGdlLC4uLmtnZSwuLi5HZ2V9LHdsPWZnZShLZ2UsZGdlKSxXZ2U9Zk8oImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLWZ1bGwgdGV4dC1zbSBmb250LXNlbWlib2xkIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1hbGwgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBhY3RpdmU6c2NhbGUtWzAuOThdIix7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6ImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeS85MCIsZGVzdHJ1Y3RpdmU6ImJnLWRlc3RydWN0aXZlIHRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBob3ZlcjpiZy1kZXN0cnVjdGl2ZS85MCIsb3V0bGluZToiYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCIsc2Vjb25kYXJ5OiJiZy1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3ZlcjpiZy1zZWNvbmRhcnkvODAiLGdob3N0OiJob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCIsbGluazoidGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmUifSxzaXplOntkZWZhdWx0OiJoLTExIHB4LTYgcHktMiIsc206ImgtOSBweC00IHRleHQteHMiLGxnOiJoLTE0IHB4LTggdGV4dC1iYXNlIixpY29uOiJoLTExIHctMTEifX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OiJkZWZhdWx0IixzaXplOiJkZWZhdWx0In19KSxxdD1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSx2YXJpYW50OnQsc2l6ZTpuLGFzQ2hpbGQ6cj0hMSwuLi5pfSxvKT0+e2NvbnN0IHM9cj9hNzoiYnV0dG9uIjtyZXR1cm4gQS5qc3gocyx7Y2xhc3NOYW1lOm90KFdnZSh7dmFyaWFudDp0LHNpemU6bixjbGFzc05hbWU6ZX0pKSxyZWY6bywuLi5pfSl9KTtxdC5kaXNwbGF5TmFtZT0iQnV0dG9uIjtjb25zdCBWbj1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSx0eXBlOnQsLi4ubn0scik9PkEuanN4KCJpbnB1dCIse3R5cGU6dCxjbGFzc05hbWU6b3QoImZsZXggaC0xMiB3LWZ1bGwgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLXRyYW5zcGFyZW50IHB4LTQgcHktMiB0ZXh0LXNtIHNoYWRvdy1zbSB0cmFuc2l0aW9uLWNvbG9ycyBmaWxlOmJvcmRlci0wIGZpbGU6YmctdHJhbnNwYXJlbnQgZmlsZTp0ZXh0LXNtIGZpbGU6Zm9udC1tZWRpdW0gcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0xIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAiLGUpLHJlZjpyLC4uLm59KSk7Vm4uZGlzcGxheU5hbWU9IklucHV0Ijt2YXIgWWdlPSJMYWJlbCIscDY9Qy5mb3J3YXJkUmVmKChlLHQpPT5BLmpzeChRZS5sYWJlbCx7Li4uZSxyZWY6dCxvbk1vdXNlRG93bjpuPT57bi50YXJnZXQuY2xvc2VzdCgiYnV0dG9uLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSIpfHwoZS5vbk1vdXNlRG93bj8uKG4pLCFuLmRlZmF1bHRQcmV2ZW50ZWQmJm4uZGV0YWlsPjEmJm4ucHJldmVudERlZmF1bHQoKSl9fSkpO3A2LmRpc3BsYXlOYW1lPVlnZTt2YXIgbTY9cDY7Y29uc3QgWGdlPWZPKCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOm9wYWNpdHktNzAiKSxvbj1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3gobTYse3JlZjpuLGNsYXNzTmFtZTpvdChYZ2UoKSxlKSwuLi50fSkpO29uLmRpc3BsYXlOYW1lPW02LmRpc3BsYXlOYW1lO3ZhciBaZ2U9Qy5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gaUUoZSl7Y29uc3QgdD1DLnVzZUNvbnRleHQoWmdlKTtyZXR1cm4gZXx8dHx8Imx0ciJ9dmFyIEFTPSExO2Z1bmN0aW9uIFFnZSgpe2NvbnN0W2UsdF09Qy51c2VTdGF0ZShBUyk7cmV0dXJuIEMudXNlRWZmZWN0KCgpPT57QVN8fChBUz0hMCx0KCEwKSl9LFtdKSxlfXZhciB5Nj13ZFsiIHVzZVN5bmNFeHRlcm5hbFN0b3JlICIudHJpbSgpLnRvU3RyaW5nKCldO2Z1bmN0aW9uIEpnZSgpe3JldHVybigpPT57fX1mdW5jdGlvbiBlYmUoKXtyZXR1cm4geTYoSmdlLCgpPT4hMCwoKT0+ITEpfXZhciB0YmU9dHlwZW9mIHk2PT0iZnVuY3Rpb24iP2ViZTpRZ2UsX1M9InJvdmluZ0ZvY3VzR3JvdXAub25FbnRyeUZvY3VzIixuYmU9e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMH0sVmQ9IlJvdmluZ0ZvY3VzR3JvdXAiLFtWXyx2NixyYmVdPWlPKFZkKSxbaWJlLGc2XT1tbyhWZCxbcmJlXSksW2FiZSxvYmVdPWliZShWZCksYjY9Qy5mb3J3YXJkUmVmKChlLHQpPT5BLmpzeChWXy5Qcm92aWRlcix7c2NvcGU6ZS5fX3Njb3BlUm92aW5nRm9jdXNHcm91cCxjaGlsZHJlbjpBLmpzeChWXy5TbG90LHtzY29wZTplLl9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwLGNoaWxkcmVuOkEuanN4KHNiZSx7Li4uZSxyZWY6dH0pfSl9KSk7YjYuZGlzcGxheU5hbWU9VmQ7dmFyIHNiZT1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlUm92aW5nRm9jdXNHcm91cDpuLG9yaWVudGF0aW9uOnIsbG9vcDppPSExLGRpcjpvLGN1cnJlbnRUYWJTdG9wSWQ6cyxkZWZhdWx0Q3VycmVudFRhYlN0b3BJZDp1LG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZTpmLG9uRW50cnlGb2N1czpkLHByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXM6cD0hMSwuLi5tfT1lLHk9Qy51c2VSZWYobnVsbCkseD1JdCh0LHkpLHc9aUUobyksW2IsZ109WGwoe3Byb3A6cyxkZWZhdWx0UHJvcDp1Pz9udWxsLG9uQ2hhbmdlOmYsY2FsbGVyOlZkfSksW18sT109Qy51c2VTdGF0ZSghMSksRT1hcihkKSxqPXY2KG4pLFQ9Qy51c2VSZWYoITEpLFtQLE5dPUMudXNlU3RhdGUoMCk7cmV0dXJuIEMudXNlRWZmZWN0KCgpPT57Y29uc3QgUj15LmN1cnJlbnQ7aWYoUilyZXR1cm4gUi5hZGRFdmVudExpc3RlbmVyKF9TLEUpLCgpPT5SLnJlbW92ZUV2ZW50TGlzdGVuZXIoX1MsRSl9LFtFXSksQS5qc3goYWJlLHtzY29wZTpuLG9yaWVudGF0aW9uOnIsZGlyOncsbG9vcDppLGN1cnJlbnRUYWJTdG9wSWQ6Yixvbkl0ZW1Gb2N1czpDLnVzZUNhbGxiYWNrKFI9PmcoUiksW2ddKSxvbkl0ZW1TaGlmdFRhYjpDLnVzZUNhbGxiYWNrKCgpPT5PKCEwKSxbXSksb25Gb2N1c2FibGVJdGVtQWRkOkMudXNlQ2FsbGJhY2soKCk9Pk4oUj0+UisxKSxbXSksb25Gb2N1c2FibGVJdGVtUmVtb3ZlOkMudXNlQ2FsbGJhY2soKCk9Pk4oUj0+Ui0xKSxbXSksY2hpbGRyZW46QS5qc3goUWUuZGl2LHt0YWJJbmRleDpffHxQPT09MD8tMTowLCJkYXRhLW9yaWVudGF0aW9uIjpyLC4uLm0scmVmOngsc3R5bGU6e291dGxpbmU6Im5vbmUiLC4uLmUuc3R5bGV9LG9uTW91c2VEb3duOnplKGUub25Nb3VzZURvd24sKCk9PntULmN1cnJlbnQ9ITB9KSxvbkZvY3VzOnplKGUub25Gb2N1cyxSPT57Y29uc3QgST0hVC5jdXJyZW50O2lmKFIudGFyZ2V0PT09Ui5jdXJyZW50VGFyZ2V0JiZJJiYhXyl7Y29uc3QgVj1uZXcgQ3VzdG9tRXZlbnQoX1MsbmJlKTtpZihSLmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChWKSwhVi5kZWZhdWx0UHJldmVudGVkKXtjb25zdCBCPWooKS5maWx0ZXIoTD0+TC5mb2N1c2FibGUpLCQ9Qi5maW5kKEw9PkwuYWN0aXZlKSx6PUIuZmluZChMPT5MLmlkPT09YiksSz1bJCx6LC4uLkJdLmZpbHRlcihCb29sZWFuKS5tYXAoTD0+TC5yZWYuY3VycmVudCk7UzYoSyxwKX19VC5jdXJyZW50PSExfSksb25CbHVyOnplKGUub25CbHVyLCgpPT5PKCExKSl9KX0pfSkseDY9IlJvdmluZ0ZvY3VzR3JvdXBJdGVtIix3Nj1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlUm92aW5nRm9jdXNHcm91cDpuLGZvY3VzYWJsZTpyPSEwLGFjdGl2ZTppPSExLHRhYlN0b3BJZDpvLGNoaWxkcmVuOnMsLi4udX09ZSxmPWlvKCksZD1vfHxmLHA9b2JlKHg2LG4pLG09cC5jdXJyZW50VGFiU3RvcElkPT09ZCx5PXY2KG4pLHtvbkZvY3VzYWJsZUl0ZW1BZGQ6eCxvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6dyxjdXJyZW50VGFiU3RvcElkOmJ9PXAsZz10YmUoKTtyZXR1cm4gZ24oKCk9PntpZighKCFnfHwhcikpcmV0dXJuIHgoKSwoKT0+dygpfSxbZyxyLHgsd10pLEMudXNlRWZmZWN0KCgpPT57aWYoIShnfHwhcikpcmV0dXJuIHgoKSwoKT0+dygpfSxbZyxyLHgsd10pLEEuanN4KFZfLkl0ZW1TbG90LHtzY29wZTpuLGlkOmQsZm9jdXNhYmxlOnIsYWN0aXZlOmksY2hpbGRyZW46QS5qc3goUWUuc3Bhbix7dGFiSW5kZXg6bT8wOi0xLCJkYXRhLW9yaWVudGF0aW9uIjpwLm9yaWVudGF0aW9uLC4uLnUscmVmOnQsb25Nb3VzZURvd246emUoZS5vbk1vdXNlRG93bixfPT57cj9wLm9uSXRlbUZvY3VzKGQpOl8ucHJldmVudERlZmF1bHQoKX0pLG9uRm9jdXM6emUoZS5vbkZvY3VzLCgpPT5wLm9uSXRlbUZvY3VzKGQpKSxvbktleURvd246emUoZS5vbktleURvd24sXz0+e2lmKF8ua2V5PT09IlRhYiImJl8uc2hpZnRLZXkpe3Aub25JdGVtU2hpZnRUYWIoKTtyZXR1cm59aWYoXy50YXJnZXQhPT1fLmN1cnJlbnRUYXJnZXQpcmV0dXJuO2NvbnN0IE89Y2JlKF8scC5vcmllbnRhdGlvbixwLmRpcik7aWYoTyE9PXZvaWQgMCl7aWYoXy5tZXRhS2V5fHxfLmN0cmxLZXl8fF8uYWx0S2V5fHxfLnNoaWZ0S2V5KXJldHVybjtfLnByZXZlbnREZWZhdWx0KCk7bGV0IGo9eSgpLmZpbHRlcihUPT5ULmZvY3VzYWJsZSkubWFwKFQ9PlQucmVmLmN1cnJlbnQpO2lmKE89PT0ibGFzdCIpai5yZXZlcnNlKCk7ZWxzZSBpZihPPT09InByZXYifHxPPT09Im5leHQiKXtPPT09InByZXYiJiZqLnJldmVyc2UoKTtjb25zdCBUPWouaW5kZXhPZihfLmN1cnJlbnRUYXJnZXQpO2o9cC5sb29wP2ZiZShqLFQrMSk6ai5zbGljZShUKzEpfXNldFRpbWVvdXQoKCk9PlM2KGopKX19KSxjaGlsZHJlbjp0eXBlb2Ygcz09ImZ1bmN0aW9uIj9zKHtpc0N1cnJlbnRUYWJTdG9wOm0saGFzVGFiU3RvcDpiIT1udWxsfSk6c30pfSl9KTt3Ni5kaXNwbGF5TmFtZT14Njt2YXIgbGJlPXtBcnJvd0xlZnQ6InByZXYiLEFycm93VXA6InByZXYiLEFycm93UmlnaHQ6Im5leHQiLEFycm93RG93bjoibmV4dCIsUGFnZVVwOiJmaXJzdCIsSG9tZToiZmlyc3QiLFBhZ2VEb3duOiJsYXN0IixFbmQ6Imxhc3QifTtmdW5jdGlvbiB1YmUoZSx0KXtyZXR1cm4gdCE9PSJydGwiP2U6ZT09PSJBcnJvd0xlZnQiPyJBcnJvd1JpZ2h0IjplPT09IkFycm93UmlnaHQiPyJBcnJvd0xlZnQiOmV9ZnVuY3Rpb24gY2JlKGUsdCxuKXtjb25zdCByPXViZShlLmtleSxuKTtpZighKHQ9PT0idmVydGljYWwiJiZbIkFycm93TGVmdCIsIkFycm93UmlnaHQiXS5pbmNsdWRlcyhyKSkmJiEodD09PSJob3Jpem9udGFsIiYmWyJBcnJvd1VwIiwiQXJyb3dEb3duIl0uaW5jbHVkZXMocikpKXJldHVybiBsYmVbcl19ZnVuY3Rpb24gUzYoZSx0PSExKXtjb25zdCBuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7Zm9yKGNvbnN0IHIgb2YgZSlpZihyPT09bnx8KHIuZm9jdXMoe3ByZXZlbnRTY3JvbGw6dH0pLGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1uKSlyZXR1cm59ZnVuY3Rpb24gZmJlKGUsdCl7cmV0dXJuIGUubWFwKChuLHIpPT5lWyh0K3IpJWUubGVuZ3RoXSl9dmFyIGRiZT1iNixoYmU9dzYsVHY9IlRhYnMiLFtwYmVdPW1vKFR2LFtnNl0pLEE2PWc2KCksW21iZSxhRV09cGJlKFR2KSxfNj1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVGFiczpuLHZhbHVlOnIsb25WYWx1ZUNoYW5nZTppLGRlZmF1bHRWYWx1ZTpvLG9yaWVudGF0aW9uOnM9Imhvcml6b250YWwiLGRpcjp1LGFjdGl2YXRpb25Nb2RlOmY9ImF1dG9tYXRpYyIsLi4uZH09ZSxwPWlFKHUpLFttLHldPVhsKHtwcm9wOnIsb25DaGFuZ2U6aSxkZWZhdWx0UHJvcDpvPz8iIixjYWxsZXI6VHZ9KTtyZXR1cm4gQS5qc3gobWJlLHtzY29wZTpuLGJhc2VJZDppbygpLHZhbHVlOm0sb25WYWx1ZUNoYW5nZTp5LG9yaWVudGF0aW9uOnMsZGlyOnAsYWN0aXZhdGlvbk1vZGU6ZixjaGlsZHJlbjpBLmpzeChRZS5kaXYse2RpcjpwLCJkYXRhLW9yaWVudGF0aW9uIjpzLC4uLmQscmVmOnR9KX0pfSk7XzYuZGlzcGxheU5hbWU9VHY7dmFyIE82PSJUYWJzTGlzdCIsVDY9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRhYnM6bixsb29wOnI9ITAsLi4uaX09ZSxvPWFFKE82LG4pLHM9QTYobik7cmV0dXJuIEEuanN4KGRiZSx7YXNDaGlsZDohMCwuLi5zLG9yaWVudGF0aW9uOm8ub3JpZW50YXRpb24sZGlyOm8uZGlyLGxvb3A6cixjaGlsZHJlbjpBLmpzeChRZS5kaXYse3JvbGU6InRhYmxpc3QiLCJhcmlhLW9yaWVudGF0aW9uIjpvLm9yaWVudGF0aW9uLC4uLmkscmVmOnR9KX0pfSk7VDYuZGlzcGxheU5hbWU9TzY7dmFyIEU2PSJUYWJzVHJpZ2dlciIsQzY9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRhYnM6bix2YWx1ZTpyLGRpc2FibGVkOmk9ITEsLi4ub309ZSxzPWFFKEU2LG4pLHU9QTYobiksZj1NNihzLmJhc2VJZCxyKSxkPVI2KHMuYmFzZUlkLHIpLHA9cj09PXMudmFsdWU7cmV0dXJuIEEuanN4KGhiZSx7YXNDaGlsZDohMCwuLi51LGZvY3VzYWJsZTohaSxhY3RpdmU6cCxjaGlsZHJlbjpBLmpzeChRZS5idXR0b24se3R5cGU6ImJ1dHRvbiIscm9sZToidGFiIiwiYXJpYS1zZWxlY3RlZCI6cCwiYXJpYS1jb250cm9scyI6ZCwiZGF0YS1zdGF0ZSI6cD8iYWN0aXZlIjoiaW5hY3RpdmUiLCJkYXRhLWRpc2FibGVkIjppPyIiOnZvaWQgMCxkaXNhYmxlZDppLGlkOmYsLi4ubyxyZWY6dCxvbk1vdXNlRG93bjp6ZShlLm9uTW91c2VEb3duLG09PnshaSYmbS5idXR0b249PT0wJiZtLmN0cmxLZXk9PT0hMT9zLm9uVmFsdWVDaGFuZ2Uocik6bS5wcmV2ZW50RGVmYXVsdCgpfSksb25LZXlEb3duOnplKGUub25LZXlEb3duLG09PntpfHxtLnRhcmdldCE9PW0uY3VycmVudFRhcmdldHx8WyIgIiwiRW50ZXIiXS5pbmNsdWRlcyhtLmtleSkmJnMub25WYWx1ZUNoYW5nZShyKX0pLG9uRm9jdXM6emUoZS5vbkZvY3VzLCgpPT57Y29uc3QgbT1zLmFjdGl2YXRpb25Nb2RlIT09Im1hbnVhbCI7IXAmJiFpJiZtJiZzLm9uVmFsdWVDaGFuZ2Uocil9KX0pfSl9KTtDNi5kaXNwbGF5TmFtZT1FNjt2YXIgajY9IlRhYnNDb250ZW50IixQNj1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVGFiczpuLHZhbHVlOnIsZm9yY2VNb3VudDppLGNoaWxkcmVuOm8sLi4uc309ZSx1PWFFKGo2LG4pLGY9TTYodS5iYXNlSWQsciksZD1SNih1LmJhc2VJZCxyKSxwPXI9PT11LnZhbHVlLG09Qy51c2VSZWYocCk7cmV0dXJuIEMudXNlRWZmZWN0KCgpPT57Y29uc3QgeT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pm0uY3VycmVudD0hMSk7cmV0dXJuKCk9PmNhbmNlbEFuaW1hdGlvbkZyYW1lKHkpfSxbXSksQS5qc3gobWEse3ByZXNlbnQ6aXx8cCxjaGlsZHJlbjooe3ByZXNlbnQ6eX0pPT5BLmpzeChRZS5kaXYseyJkYXRhLXN0YXRlIjpwPyJhY3RpdmUiOiJpbmFjdGl2ZSIsImRhdGEtb3JpZW50YXRpb24iOnUub3JpZW50YXRpb24scm9sZToidGFicGFuZWwiLCJhcmlhLWxhYmVsbGVkYnkiOmYsaGlkZGVuOiF5LGlkOmQsdGFiSW5kZXg6MCwuLi5zLHJlZjp0LHN0eWxlOnsuLi5lLnN0eWxlLGFuaW1hdGlvbkR1cmF0aW9uOm0uY3VycmVudD8iMHMiOnZvaWQgMH0sY2hpbGRyZW46eSYmb30pfSl9KTtQNi5kaXNwbGF5TmFtZT1qNjtmdW5jdGlvbiBNNihlLHQpe3JldHVybmAke2V9LXRyaWdnZXItJHt0fWB9ZnVuY3Rpb24gUjYoZSx0KXtyZXR1cm5gJHtlfS1jb250ZW50LSR7dH1gfXZhciB5YmU9XzYsTjY9VDYsazY9QzYsRDY9UDY7Y29uc3QgdmJlPXliZSxMNj1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3goTjYse3JlZjpuLGNsYXNzTmFtZTpvdCgiaW5saW5lLWZsZXggaC0xMSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC14bCBiZy1zZWNvbmRhcnkgcC0xIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB3LWZ1bGwiLGUpLC4uLnR9KSk7TDYuZGlzcGxheU5hbWU9TjYuZGlzcGxheU5hbWU7Y29uc3QgcV89Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KGs2LHtyZWY6bixjbGFzc05hbWU6b3QoImlubGluZS1mbGV4IGZsZXgtMSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1sZyBweC0zIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1hbGwgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1hY3RpdmVdOmJnLWJhY2tncm91bmQgZGF0YS1bc3RhdGU9YWN0aXZlXTp0ZXh0LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9YWN0aXZlXTpzaGFkb3ctc20iLGUpLC4uLnR9KSk7cV8uZGlzcGxheU5hbWU9azYuZGlzcGxheU5hbWU7Y29uc3QgVV89Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KEQ2LHtyZWY6bixjbGFzc05hbWU6b3QoIm10LTQgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTIiLGUpLC4uLnR9KSk7VV8uZGlzcGxheU5hbWU9RDYuZGlzcGxheU5hbWU7dmFyIE9TPSJmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnQiLFRTPSJmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudCIsTUI9e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMH0sZ2JlPSJGb2N1c1Njb3BlIixvRT1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtsb29wOm49ITEsdHJhcHBlZDpyPSExLG9uTW91bnRBdXRvRm9jdXM6aSxvblVubW91bnRBdXRvRm9jdXM6bywuLi5zfT1lLFt1LGZdPUMudXNlU3RhdGUobnVsbCksZD1hcihpKSxwPWFyKG8pLG09Qy51c2VSZWYobnVsbCkseT1JdCh0LGYpLHg9Qy51c2VSZWYoe3BhdXNlZDohMSxwYXVzZSgpe3RoaXMucGF1c2VkPSEwfSxyZXN1bWUoKXt0aGlzLnBhdXNlZD0hMX19KS5jdXJyZW50O0MudXNlRWZmZWN0KCgpPT57aWYocil7bGV0IGI9ZnVuY3Rpb24oRSl7aWYoeC5wYXVzZWR8fCF1KXJldHVybjtjb25zdCBqPUUudGFyZ2V0O3UuY29udGFpbnMoaik/bS5jdXJyZW50PWo6WWEobS5jdXJyZW50LHtzZWxlY3Q6ITB9KX0sZz1mdW5jdGlvbihFKXtpZih4LnBhdXNlZHx8IXUpcmV0dXJuO2NvbnN0IGo9RS5yZWxhdGVkVGFyZ2V0O2ohPT1udWxsJiYodS5jb250YWlucyhqKXx8WWEobS5jdXJyZW50LHtzZWxlY3Q6ITB9KSl9LF89ZnVuY3Rpb24oRSl7aWYoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LmJvZHkpZm9yKGNvbnN0IFQgb2YgRSlULnJlbW92ZWROb2Rlcy5sZW5ndGg+MCYmWWEodSl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGIpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixnKTtjb25zdCBPPW5ldyBNdXRhdGlvbk9ic2VydmVyKF8pO3JldHVybiB1JiZPLm9ic2VydmUodSx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSwoKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGIpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IixnKSxPLmRpc2Nvbm5lY3QoKX19fSxbcix1LHgucGF1c2VkXSksQy51c2VFZmZlY3QoKCk9PntpZih1KXtOQi5hZGQoeCk7Y29uc3QgYj1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKCF1LmNvbnRhaW5zKGIpKXtjb25zdCBfPW5ldyBDdXN0b21FdmVudChPUyxNQik7dS5hZGRFdmVudExpc3RlbmVyKE9TLGQpLHUuZGlzcGF0Y2hFdmVudChfKSxfLmRlZmF1bHRQcmV2ZW50ZWR8fChiYmUoX2JlKEk2KHUpKSx7c2VsZWN0OiEwfSksZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWImJllhKHUpKX1yZXR1cm4oKT0+e3UucmVtb3ZlRXZlbnRMaXN0ZW5lcihPUyxkKSxzZXRUaW1lb3V0KCgpPT57Y29uc3QgXz1uZXcgQ3VzdG9tRXZlbnQoVFMsTUIpO3UuYWRkRXZlbnRMaXN0ZW5lcihUUyxwKSx1LmRpc3BhdGNoRXZlbnQoXyksXy5kZWZhdWx0UHJldmVudGVkfHxZYShiPz9kb2N1bWVudC5ib2R5LHtzZWxlY3Q6ITB9KSx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoVFMscCksTkIucmVtb3ZlKHgpfSwwKX19fSxbdSxkLHAseF0pO2NvbnN0IHc9Qy51c2VDYWxsYmFjayhiPT57aWYoIW4mJiFyfHx4LnBhdXNlZClyZXR1cm47Y29uc3QgZz1iLmtleT09PSJUYWIiJiYhYi5hbHRLZXkmJiFiLmN0cmxLZXkmJiFiLm1ldGFLZXksXz1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKGcmJl8pe2NvbnN0IE89Yi5jdXJyZW50VGFyZ2V0LFtFLGpdPXhiZShPKTtFJiZqPyFiLnNoaWZ0S2V5JiZfPT09aj8oYi5wcmV2ZW50RGVmYXVsdCgpLG4mJllhKEUse3NlbGVjdDohMH0pKTpiLnNoaWZ0S2V5JiZfPT09RSYmKGIucHJldmVudERlZmF1bHQoKSxuJiZZYShqLHtzZWxlY3Q6ITB9KSk6Xz09PU8mJmIucHJldmVudERlZmF1bHQoKX19LFtuLHIseC5wYXVzZWRdKTtyZXR1cm4gQS5qc3goUWUuZGl2LHt0YWJJbmRleDotMSwuLi5zLHJlZjp5LG9uS2V5RG93bjp3fSl9KTtvRS5kaXNwbGF5TmFtZT1nYmU7ZnVuY3Rpb24gYmJlKGUse3NlbGVjdDp0PSExfT17fSl7Y29uc3Qgbj1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2Zvcihjb25zdCByIG9mIGUpaWYoWWEocix7c2VsZWN0OnR9KSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09bilyZXR1cm59ZnVuY3Rpb24geGJlKGUpe2NvbnN0IHQ9STYoZSksbj1SQih0LGUpLHI9UkIodC5yZXZlcnNlKCksZSk7cmV0dXJuW24scl19ZnVuY3Rpb24gSTYoZSl7Y29uc3QgdD1bXSxuPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTpyPT57Y29uc3QgaT1yLnRhZ05hbWU9PT0iSU5QVVQiJiZyLnR5cGU9PT0iaGlkZGVuIjtyZXR1cm4gci5kaXNhYmxlZHx8ci5oaWRkZW58fGk/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDpyLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7bi5uZXh0Tm9kZSgpOyl0LnB1c2gobi5jdXJyZW50Tm9kZSk7cmV0dXJuIHR9ZnVuY3Rpb24gUkIoZSx0KXtjb25zdCBuPXR5cGVvZiB0LmNoZWNrVmlzaWJpbGl0eT09ImZ1bmN0aW9uIiYmdC5jaGVja1Zpc2liaWxpdHkoe2NoZWNrVmlzaWJpbGl0eUNTUzohMH0pO2Zvcihjb25zdCByIG9mIGUpaWYoIShuPyFyLmNoZWNrVmlzaWJpbGl0eSh7Y2hlY2tWaXNpYmlsaXR5Q1NTOiEwfSk6d2JlKHIse3VwVG86dH0pKSlyZXR1cm4gcn1mdW5jdGlvbiB3YmUoZSx7dXBUbzp0fSl7aWYoZ2V0Q29tcHV0ZWRTdHlsZShlKS52aXNpYmlsaXR5PT09ImhpZGRlbiIpcmV0dXJuITA7Zm9yKDtlOyl7aWYodCE9PXZvaWQgMCYmZT09PXQpcmV0dXJuITE7aWYoZ2V0Q29tcHV0ZWRTdHlsZShlKS5kaXNwbGF5PT09Im5vbmUiKXJldHVybiEwO2U9ZS5wYXJlbnRFbGVtZW50fXJldHVybiExfWZ1bmN0aW9uIFNiZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQmJiJzZWxlY3QiaW4gZX1mdW5jdGlvbiBZYShlLHtzZWxlY3Q6dD0hMX09e30pe2lmKGUmJmUuZm9jdXMpe2NvbnN0IG49ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtlLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksZSE9PW4mJlNiZShlKSYmdCYmZS5zZWxlY3QoKX19dmFyIE5CPUFiZSgpO2Z1bmN0aW9uIEFiZSgpe2xldCBlPVtdO3JldHVybnthZGQodCl7Y29uc3Qgbj1lWzBdO3QhPT1uJiZuPy5wYXVzZSgpLGU9a0IoZSx0KSxlLnVuc2hpZnQodCl9LHJlbW92ZSh0KXtlPWtCKGUsdCksZVswXT8ucmVzdW1lKCl9fX1mdW5jdGlvbiBrQihlLHQpe2NvbnN0IG49Wy4uLmVdLHI9bi5pbmRleE9mKHQpO3JldHVybiByIT09LTEmJm4uc3BsaWNlKHIsMSksbn1mdW5jdGlvbiBfYmUoZSl7cmV0dXJuIGUuZmlsdGVyKHQ9PnQudGFnTmFtZSE9PSJBIil9dmFyIFRwPTAsU2w9bnVsbDtmdW5jdGlvbiAkNigpe0MudXNlRWZmZWN0KCgpPT57U2x8fChTbD17c3RhcnQ6REIoKSxlbmQ6REIoKX0pO2NvbnN0e3N0YXJ0OmUsZW5kOnR9PVNsO3JldHVybiBkb2N1bWVudC5ib2R5LmZpcnN0RWxlbWVudENoaWxkIT09ZSYmZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyYmVnaW4iLGUpLGRvY3VtZW50LmJvZHkubGFzdEVsZW1lbnRDaGlsZCE9PXQmJmRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCJiZWZvcmVlbmQiLHQpLFRwKyssKCk9PntUcD09PTEmJihTbD8uc3RhcnQucmVtb3ZlKCksU2w/LmVuZC5yZW1vdmUoKSxTbD1udWxsKSxUcD1NYXRoLm1heCgwLFRwLTEpfX0sW10pfWZ1bmN0aW9uIERCKCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJkYXRhLXJhZGl4LWZvY3VzLWd1YXJkIiwiIiksZS50YWJJbmRleD0wLGUuc3R5bGUub3V0bGluZT0ibm9uZSIsZS5zdHlsZS5vcGFjaXR5PSIwIixlLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIixlfXZhciB3aT1mdW5jdGlvbigpe3JldHVybiB3aT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIG4scj0xLGk9YXJndW1lbnRzLmxlbmd0aDtyPGk7cisrKXtuPWFyZ3VtZW50c1tyXTtmb3IodmFyIG8gaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixvKSYmKHRbb109bltvXSl9cmV0dXJuIHR9LHdpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gQjYoZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmdC5pbmRleE9mKHIpPDAmJihuW3JdPWVbcl0pO2lmKGUhPW51bGwmJnR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzPT0iZnVuY3Rpb24iKWZvcih2YXIgaT0wLHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtpPHIubGVuZ3RoO2krKyl0LmluZGV4T2YocltpXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltpXSkmJihuW3JbaV1dPWVbcltpXV0pO3JldHVybiBufWZ1bmN0aW9uIE9iZShlLHQsbil7aWYobnx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciByPTAsaT10Lmxlbmd0aCxvO3I8aTtyKyspKG98fCEociBpbiB0KSkmJihvfHwobz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAscikpLG9bcl09dFtyXSk7cmV0dXJuIGUuY29uY2F0KG98fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX12YXIgWXA9InJpZ2h0LXNjcm9sbC1iYXItcG9zaXRpb24iLFhwPSJ3aWR0aC1iZWZvcmUtc2Nyb2xsLWJhciIsVGJlPSJ3aXRoLXNjcm9sbC1iYXJzLWhpZGRlbiIsRWJlPSItLXJlbW92ZWQtYm9keS1zY3JvbGwtYmFyLXNpemUiO2Z1bmN0aW9uIEVTKGUsdCl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2UodCk6ZSYmKGUuY3VycmVudD10KSxlfWZ1bmN0aW9uIENiZShlLHQpe3ZhciBuPUMudXNlU3RhdGUoZnVuY3Rpb24oKXtyZXR1cm57dmFsdWU6ZSxjYWxsYmFjazp0LGZhY2FkZTp7Z2V0IGN1cnJlbnQoKXtyZXR1cm4gbi52YWx1ZX0sc2V0IGN1cnJlbnQocil7dmFyIGk9bi52YWx1ZTtpIT09ciYmKG4udmFsdWU9cixuLmNhbGxiYWNrKHIsaSkpfX19fSlbMF07cmV0dXJuIG4uY2FsbGJhY2s9dCxuLmZhY2FkZX12YXIgamJlPXR5cGVvZiB3aW5kb3c8InUiP0MudXNlTGF5b3V0RWZmZWN0OkMudXNlRWZmZWN0LExCPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFBiZShlLHQpe3ZhciBuPUNiZShudWxsLGZ1bmN0aW9uKHIpe3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oaSl7cmV0dXJuIEVTKGkscil9KX0pO3JldHVybiBqYmUoZnVuY3Rpb24oKXt2YXIgcj1MQi5nZXQobik7aWYocil7dmFyIGk9bmV3IFNldChyKSxvPW5ldyBTZXQoZSkscz1uLmN1cnJlbnQ7aS5mb3JFYWNoKGZ1bmN0aW9uKHUpe28uaGFzKHUpfHxFUyh1LG51bGwpfSksby5mb3JFYWNoKGZ1bmN0aW9uKHUpe2kuaGFzKHUpfHxFUyh1LHMpfSl9TEIuc2V0KG4sZSl9LFtlXSksbn1mdW5jdGlvbiBNYmUoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gUmJlKGUsdCl7dD09PXZvaWQgMCYmKHQ9TWJlKTt2YXIgbj1bXSxyPSExLGk9e3JlYWQ6ZnVuY3Rpb24oKXtpZihyKXRocm93IG5ldyBFcnJvcigiU2lkZWNhcjogY291bGQgbm90IGByZWFkYCBmcm9tIGFuIGBhc3NpZ25lZGAgbWVkaXVtLiBgcmVhZGAgY291bGQgYmUgdXNlZCBvbmx5IHdpdGggYHVzZU1lZGl1bWAuIik7cmV0dXJuIG4ubGVuZ3RoP25bbi5sZW5ndGgtMV06ZX0sdXNlTWVkaXVtOmZ1bmN0aW9uKG8pe3ZhciBzPXQobyxyKTtyZXR1cm4gbi5wdXNoKHMpLGZ1bmN0aW9uKCl7bj1uLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4gdSE9PXN9KX19LGFzc2lnblN5bmNNZWRpdW06ZnVuY3Rpb24obyl7Zm9yKHI9ITA7bi5sZW5ndGg7KXt2YXIgcz1uO249W10scy5mb3JFYWNoKG8pfW49e3B1c2g6ZnVuY3Rpb24odSl7cmV0dXJuIG8odSl9LGZpbHRlcjpmdW5jdGlvbigpe3JldHVybiBufX19LGFzc2lnbk1lZGl1bTpmdW5jdGlvbihvKXtyPSEwO3ZhciBzPVtdO2lmKG4ubGVuZ3RoKXt2YXIgdT1uO249W10sdS5mb3JFYWNoKG8pLHM9bn12YXIgZj1mdW5jdGlvbigpe3ZhciBwPXM7cz1bXSxwLmZvckVhY2gobyl9LGQ9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmKX07ZCgpLG49e3B1c2g6ZnVuY3Rpb24ocCl7cy5wdXNoKHApLGQoKX0sZmlsdGVyOmZ1bmN0aW9uKHApe3JldHVybiBzPXMuZmlsdGVyKHApLG59fX19O3JldHVybiBpfWZ1bmN0aW9uIE5iZShlKXtlPT09dm9pZCAwJiYoZT17fSk7dmFyIHQ9UmJlKG51bGwpO3JldHVybiB0Lm9wdGlvbnM9d2koe2FzeW5jOiEwLHNzcjohMX0sZSksdH12YXIgVjY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zaWRlQ2FyLG49QjYoZSxbInNpZGVDYXIiXSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJTaWRlY2FyOiBwbGVhc2UgcHJvdmlkZSBgc2lkZUNhcmAgcHJvcGVydHkgdG8gaW1wb3J0IHRoZSByaWdodCBjYXIiKTt2YXIgcj10LnJlYWQoKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlNpZGVjYXIgbWVkaXVtIG5vdCBmb3VuZCIpO3JldHVybiBDLmNyZWF0ZUVsZW1lbnQocix3aSh7fSxuKSl9O1Y2LmlzU2lkZUNhckV4cG9ydD0hMDtmdW5jdGlvbiBrYmUoZSx0KXtyZXR1cm4gZS51c2VNZWRpdW0odCksVjZ9dmFyIHE2PU5iZSgpLENTPWZ1bmN0aW9uKCl7fSxFdj1DLmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXt2YXIgbj1DLnVzZVJlZihudWxsKSxyPUMudXNlU3RhdGUoe29uU2Nyb2xsQ2FwdHVyZTpDUyxvbldoZWVsQ2FwdHVyZTpDUyxvblRvdWNoTW92ZUNhcHR1cmU6Q1N9KSxpPXJbMF0sbz1yWzFdLHM9ZS5mb3J3YXJkUHJvcHMsdT1lLmNoaWxkcmVuLGY9ZS5jbGFzc05hbWUsZD1lLnJlbW92ZVNjcm9sbEJhcixwPWUuZW5hYmxlZCxtPWUuc2hhcmRzLHk9ZS5zaWRlQ2FyLHg9ZS5ub1JlbGF0aXZlLHc9ZS5ub0lzb2xhdGlvbixiPWUuaW5lcnQsZz1lLmFsbG93UGluY2hab29tLF89ZS5hcyxPPV89PT12b2lkIDA/ImRpdiI6XyxFPWUuZ2FwTW9kZSxqPUI2KGUsWyJmb3J3YXJkUHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsInJlbW92ZVNjcm9sbEJhciIsImVuYWJsZWQiLCJzaGFyZHMiLCJzaWRlQ2FyIiwibm9SZWxhdGl2ZSIsIm5vSXNvbGF0aW9uIiwiaW5lcnQiLCJhbGxvd1BpbmNoWm9vbSIsImFzIiwiZ2FwTW9kZSJdKSxUPXksUD1QYmUoW24sdF0pLE49d2kod2koe30saiksaSk7cmV0dXJuIEMuY3JlYXRlRWxlbWVudChDLkZyYWdtZW50LG51bGwscCYmQy5jcmVhdGVFbGVtZW50KFQse3NpZGVDYXI6cTYscmVtb3ZlU2Nyb2xsQmFyOmQsc2hhcmRzOm0sbm9SZWxhdGl2ZTp4LG5vSXNvbGF0aW9uOncsaW5lcnQ6YixzZXRDYWxsYmFja3M6byxhbGxvd1BpbmNoWm9vbTohIWcsbG9ja1JlZjpuLGdhcE1vZGU6RX0pLHM/Qy5jbG9uZUVsZW1lbnQoQy5DaGlsZHJlbi5vbmx5KHUpLHdpKHdpKHt9LE4pLHtyZWY6UH0pKTpDLmNyZWF0ZUVsZW1lbnQoTyx3aSh7fSxOLHtjbGFzc05hbWU6ZixyZWY6UH0pLHUpKX0pO0V2LmRlZmF1bHRQcm9wcz17ZW5hYmxlZDohMCxyZW1vdmVTY3JvbGxCYXI6ITAsaW5lcnQ6ITF9O0V2LmNsYXNzTmFtZXM9e2Z1bGxXaWR0aDpYcCx6ZXJvUmlnaHQ6WXB9O3ZhciBEYmU9ZnVuY3Rpb24oKXtpZih0eXBlb2YgX193ZWJwYWNrX25vbmNlX188InUiKXJldHVybiBfX3dlYnBhY2tfbm9uY2VfX307ZnVuY3Rpb24gTGJlKCl7aWYoIWRvY3VtZW50KXJldHVybiBudWxsO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS50eXBlPSJ0ZXh0L2NzcyI7dmFyIHQ9RGJlKCk7cmV0dXJuIHQmJmUuc2V0QXR0cmlidXRlKCJub25jZSIsdCksZX1mdW5jdGlvbiBJYmUoZSx0KXtlLnN0eWxlU2hlZXQ/ZS5zdHlsZVNoZWV0LmNzc1RleHQ9dDplLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKX1mdW5jdGlvbiAkYmUoZSl7dmFyIHQ9ZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTt0LmFwcGVuZENoaWxkKGUpfXZhciBCYmU9ZnVuY3Rpb24oKXt2YXIgZT0wLHQ9bnVsbDtyZXR1cm57YWRkOmZ1bmN0aW9uKG4pe2U9PTAmJih0PUxiZSgpKSYmKEliZSh0LG4pLCRiZSh0KSksZSsrfSxyZW1vdmU6ZnVuY3Rpb24oKXtlLS0sIWUmJnQmJih0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGwpfX19LFZiZT1mdW5jdGlvbigpe3ZhciBlPUJiZSgpO3JldHVybiBmdW5jdGlvbih0LG4pe0MudXNlRWZmZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIGUuYWRkKHQpLGZ1bmN0aW9uKCl7ZS5yZW1vdmUoKX19LFt0JiZuXSl9fSxVNj1mdW5jdGlvbigpe3ZhciBlPVZiZSgpLHQ9ZnVuY3Rpb24obil7dmFyIHI9bi5zdHlsZXMsaT1uLmR5bmFtaWM7cmV0dXJuIGUocixpKSxudWxsfTtyZXR1cm4gdH0scWJlPXtsZWZ0OjAsdG9wOjAscmlnaHQ6MCxnYXA6MH0salM9ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGV8fCIiLDEwKXx8MH0sVWJlPWZ1bmN0aW9uKGUpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLG49dFtlPT09InBhZGRpbmciPyJwYWRkaW5nTGVmdCI6Im1hcmdpbkxlZnQiXSxyPXRbZT09PSJwYWRkaW5nIj8icGFkZGluZ1RvcCI6Im1hcmdpblRvcCJdLGk9dFtlPT09InBhZGRpbmciPyJwYWRkaW5nUmlnaHQiOiJtYXJnaW5SaWdodCJdO3JldHVybltqUyhuKSxqUyhyKSxqUyhpKV19LHpiZT1mdW5jdGlvbihlKXtpZihlPT09dm9pZCAwJiYoZT0ibWFyZ2luIiksdHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuIHFiZTt2YXIgdD1VYmUoZSksbj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgscj13aW5kb3cuaW5uZXJXaWR0aDtyZXR1cm57bGVmdDp0WzBdLHRvcDp0WzFdLHJpZ2h0OnRbMl0sZ2FwOk1hdGgubWF4KDAsci1uK3RbMl0tdFswXSl9fSxGYmU9VTYoKSxIbD0iZGF0YS1zY3JvbGwtbG9ja2VkIixIYmU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5sZWZ0LG89ZS50b3Ascz1lLnJpZ2h0LHU9ZS5nYXA7cmV0dXJuIG49PT12b2lkIDAmJihuPSJtYXJnaW4iKSxgCiAgLmAuY29uY2F0KFRiZSxgIHsKICAgb3ZlcmZsb3c6IGhpZGRlbiBgKS5jb25jYXQocixgOwogICBwYWRkaW5nLXJpZ2h0OiBgKS5jb25jYXQodSwicHggIikuY29uY2F0KHIsYDsKICB9CiAgYm9keVtgKS5jb25jYXQoSGwsYF0gewogICAgb3ZlcmZsb3c6IGhpZGRlbiBgKS5jb25jYXQocixgOwogICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjsKICAgIGApLmNvbmNhdChbdCYmInBvc2l0aW9uOiByZWxhdGl2ZSAiLmNvbmNhdChyLCI7Iiksbj09PSJtYXJnaW4iJiZgCiAgICBwYWRkaW5nLWxlZnQ6IGAuY29uY2F0KGksYHB4OwogICAgcGFkZGluZy10b3A6IGApLmNvbmNhdChvLGBweDsKICAgIHBhZGRpbmctcmlnaHQ6IGApLmNvbmNhdChzLGBweDsKICAgIG1hcmdpbi1sZWZ0OjA7CiAgICBtYXJnaW4tdG9wOjA7CiAgICBtYXJnaW4tcmlnaHQ6IGApLmNvbmNhdCh1LCJweCAiKS5jb25jYXQocixgOwogICAgYCksbj09PSJwYWRkaW5nIiYmInBhZGRpbmctcmlnaHQ6ICIuY29uY2F0KHUsInB4ICIpLmNvbmNhdChyLCI7IildLmZpbHRlcihCb29sZWFuKS5qb2luKCIiKSxgCiAgfQogIAogIC5gKS5jb25jYXQoWXAsYCB7CiAgICByaWdodDogYCkuY29uY2F0KHUsInB4ICIpLmNvbmNhdChyLGA7CiAgfQogIAogIC5gKS5jb25jYXQoWHAsYCB7CiAgICBtYXJnaW4tcmlnaHQ6IGApLmNvbmNhdCh1LCJweCAiKS5jb25jYXQocixgOwogIH0KICAKICAuYCkuY29uY2F0KFlwLCIgLiIpLmNvbmNhdChZcCxgIHsKICAgIHJpZ2h0OiAwIGApLmNvbmNhdChyLGA7CiAgfQogIAogIC5gKS5jb25jYXQoWHAsIiAuIikuY29uY2F0KFhwLGAgewogICAgbWFyZ2luLXJpZ2h0OiAwIGApLmNvbmNhdChyLGA7CiAgfQogIAogIGJvZHlbYCkuY29uY2F0KEhsLGBdIHsKICAgIGApLmNvbmNhdChFYmUsIjogIikuY29uY2F0KHUsYHB4OwogIH0KYCl9LElCPWZ1bmN0aW9uKCl7dmFyIGU9cGFyc2VJbnQoZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoSGwpfHwiMCIsMTApO3JldHVybiBpc0Zpbml0ZShlKT9lOjB9LEdiZT1mdW5jdGlvbigpe0MudXNlRWZmZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKEhsLChJQigpKzEpLnRvU3RyaW5nKCkpLGZ1bmN0aW9uKCl7dmFyIGU9SUIoKS0xO2U8PTA/ZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoSGwpOmRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKEhsLGUudG9TdHJpbmcoKSl9fSxbXSl9LEtiZT1mdW5jdGlvbihlKXt2YXIgdD1lLm5vUmVsYXRpdmUsbj1lLm5vSW1wb3J0YW50LHI9ZS5nYXBNb2RlLGk9cj09PXZvaWQgMD8ibWFyZ2luIjpyO0diZSgpO3ZhciBvPUMudXNlTWVtbyhmdW5jdGlvbigpe3JldHVybiB6YmUoaSl9LFtpXSk7cmV0dXJuIEMuY3JlYXRlRWxlbWVudChGYmUse3N0eWxlczpIYmUobywhdCxpLG4/IiI6IiFpbXBvcnRhbnQiKX0pfSx6Xz0hMTtpZih0eXBlb2Ygd2luZG93PCJ1Iil0cnl7dmFyIEVwPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB6Xz0hMCwhMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsRXAsRXApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixFcCxFcCl9Y2F0Y2h7el89ITF9dmFyIEFsPXpfP3twYXNzaXZlOiExfTohMSxXYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZT09PSJURVhUQVJFQSJ9LHo2PWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRWxlbWVudCkpcmV0dXJuITE7dmFyIG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSk7cmV0dXJuIG5bdF0hPT0iaGlkZGVuIiYmIShuLm92ZXJmbG93WT09PW4ub3ZlcmZsb3dYJiYhV2JlKGUpJiZuW3RdPT09InZpc2libGUiKX0sWWJlPWZ1bmN0aW9uKGUpe3JldHVybiB6NihlLCJvdmVyZmxvd1kiKX0sWGJlPWZ1bmN0aW9uKGUpe3JldHVybiB6NihlLCJvdmVyZmxvd1giKX0sJEI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lm93bmVyRG9jdW1lbnQscj10O2Rve3R5cGVvZiBTaGFkb3dSb290PCJ1IiYmciBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QmJihyPXIuaG9zdCk7dmFyIGk9RjYoZSxyKTtpZihpKXt2YXIgbz1INihlLHIpLHM9b1sxXSx1PW9bMl07aWYocz51KXJldHVybiEwfXI9ci5wYXJlbnROb2RlfXdoaWxlKHImJnIhPT1uLmJvZHkpO3JldHVybiExfSxaYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zY3JvbGxUb3Asbj1lLnNjcm9sbEhlaWdodCxyPWUuY2xpZW50SGVpZ2h0O3JldHVyblt0LG4scl19LFFiZT1mdW5jdGlvbihlKXt2YXIgdD1lLnNjcm9sbExlZnQsbj1lLnNjcm9sbFdpZHRoLHI9ZS5jbGllbnRXaWR0aDtyZXR1cm5bdCxuLHJdfSxGNj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09InYiP1liZSh0KTpYYmUodCl9LEg2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT0idiI/WmJlKHQpOlFiZSh0KX0sSmJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT0iaCImJnQ9PT0icnRsIj8tMToxfSxlMGU9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbz1KYmUoZSx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5kaXJlY3Rpb24pLHM9bypyLHU9bi50YXJnZXQsZj10LmNvbnRhaW5zKHUpLGQ9ITEscD1zPjAsbT0wLHk9MDtkb3tpZighdSlicmVhazt2YXIgeD1INihlLHUpLHc9eFswXSxiPXhbMV0sZz14WzJdLF89Yi1nLW8qdzsod3x8XykmJkY2KGUsdSkmJihtKz1fLHkrPXcpO3ZhciBPPXUucGFyZW50Tm9kZTt1PU8mJk8ubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/Ty5ob3N0Ok99d2hpbGUoIWYmJnUhPT1kb2N1bWVudC5ib2R5fHxmJiYodC5jb250YWlucyh1KXx8dD09PXUpKTtyZXR1cm4ocCYmTWF0aC5hYnMobSk8MXx8IXAmJk1hdGguYWJzKHkpPDEpJiYoZD0hMCksZH0sQ3A9ZnVuY3Rpb24oZSl7cmV0dXJuImNoYW5nZWRUb3VjaGVzImluIGU/W2UuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCxlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFldOlswLDBdfSxCQj1mdW5jdGlvbihlKXtyZXR1cm5bZS5kZWx0YVgsZS5kZWx0YVldfSxWQj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmImN1cnJlbnQiaW4gZT9lLmN1cnJlbnQ6ZX0sdDBlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbMF09PT10WzBdJiZlWzFdPT09dFsxXX0sbjBlPWZ1bmN0aW9uKGUpe3JldHVybmAKICAuYmxvY2staW50ZXJhY3Rpdml0eS1gLmNvbmNhdChlLGAge3BvaW50ZXItZXZlbnRzOiBub25lO30KICAuYWxsb3ctaW50ZXJhY3Rpdml0eS1gKS5jb25jYXQoZSxgIHtwb2ludGVyLWV2ZW50czogYWxsO30KYCl9LHIwZT0wLF9sPVtdO2Z1bmN0aW9uIGkwZShlKXt2YXIgdD1DLnVzZVJlZihbXSksbj1DLnVzZVJlZihbMCwwXSkscj1DLnVzZVJlZigpLGk9Qy51c2VTdGF0ZShyMGUrKylbMF0sbz1DLnVzZVN0YXRlKFU2KVswXSxzPUMudXNlUmVmKGUpO0MudXNlRWZmZWN0KGZ1bmN0aW9uKCl7cy5jdXJyZW50PWV9LFtlXSksQy51c2VFZmZlY3QoZnVuY3Rpb24oKXtpZihlLmluZXJ0KXtkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoImJsb2NrLWludGVyYWN0aXZpdHktIi5jb25jYXQoaSkpO3ZhciBiPU9iZShbZS5sb2NrUmVmLmN1cnJlbnRdLChlLnNoYXJkc3x8W10pLm1hcChWQiksITApLmZpbHRlcihCb29sZWFuKTtyZXR1cm4gYi5mb3JFYWNoKGZ1bmN0aW9uKGcpe3JldHVybiBnLmNsYXNzTGlzdC5hZGQoImFsbG93LWludGVyYWN0aXZpdHktIi5jb25jYXQoaSkpfSksZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImJsb2NrLWludGVyYWN0aXZpdHktIi5jb25jYXQoaSkpLGIuZm9yRWFjaChmdW5jdGlvbihnKXtyZXR1cm4gZy5jbGFzc0xpc3QucmVtb3ZlKCJhbGxvdy1pbnRlcmFjdGl2aXR5LSIuY29uY2F0KGkpKX0pfX19LFtlLmluZXJ0LGUubG9ja1JlZi5jdXJyZW50LGUuc2hhcmRzXSk7dmFyIHU9Qy51c2VDYWxsYmFjayhmdW5jdGlvbihiLGcpe2lmKCJ0b3VjaGVzImluIGImJmIudG91Y2hlcy5sZW5ndGg9PT0yfHxiLnR5cGU9PT0id2hlZWwiJiZiLmN0cmxLZXkpcmV0dXJuIXMuY3VycmVudC5hbGxvd1BpbmNoWm9vbTt2YXIgXz1DcChiKSxPPW4uY3VycmVudCxFPSJkZWx0YVgiaW4gYj9iLmRlbHRhWDpPWzBdLV9bMF0saj0iZGVsdGFZImluIGI/Yi5kZWx0YVk6T1sxXS1fWzFdLFQsUD1iLnRhcmdldCxOPU1hdGguYWJzKEUpPk1hdGguYWJzKGopPyJoIjoidiI7aWYoInRvdWNoZXMiaW4gYiYmTj09PSJoIiYmUC50eXBlPT09InJhbmdlIilyZXR1cm4hMTt2YXIgUj13aW5kb3cuZ2V0U2VsZWN0aW9uKCksST1SJiZSLmFuY2hvck5vZGUsVj1JP0k9PT1QfHxJLmNvbnRhaW5zKFApOiExO2lmKFYpcmV0dXJuITE7dmFyIEI9JEIoTixQKTtpZighQilyZXR1cm4hMDtpZihCP1Q9TjooVD1OPT09InYiPyJoIjoidiIsQj0kQihOLFApKSwhQilyZXR1cm4hMTtpZighci5jdXJyZW50JiYiY2hhbmdlZFRvdWNoZXMiaW4gYiYmKEV8fGopJiYoci5jdXJyZW50PVQpLCFUKXJldHVybiEwO3ZhciAkPXIuY3VycmVudHx8VDtyZXR1cm4gZTBlKCQsZyxiLCQ9PT0iaCI/RTpqKX0sW10pLGY9Qy51c2VDYWxsYmFjayhmdW5jdGlvbihiKXt2YXIgZz1iO2lmKCEoIV9sLmxlbmd0aHx8X2xbX2wubGVuZ3RoLTFdIT09bykpe3ZhciBfPSJkZWx0YVkiaW4gZz9CQihnKTpDcChnKSxPPXQuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24oVCl7cmV0dXJuIFQubmFtZT09PWcudHlwZSYmKFQudGFyZ2V0PT09Zy50YXJnZXR8fGcudGFyZ2V0PT09VC5zaGFkb3dQYXJlbnQpJiZ0MGUoVC5kZWx0YSxfKX0pWzBdO2lmKE8mJk8uc2hvdWxkKXtnLmNhbmNlbGFibGUmJmcucHJldmVudERlZmF1bHQoKTtyZXR1cm59aWYoIU8pe3ZhciBFPShzLmN1cnJlbnQuc2hhcmRzfHxbXSkubWFwKFZCKS5maWx0ZXIoQm9vbGVhbikuZmlsdGVyKGZ1bmN0aW9uKFQpe3JldHVybiBULmNvbnRhaW5zKGcudGFyZ2V0KX0pLGo9RS5sZW5ndGg+MD91KGcsRVswXSk6IXMuY3VycmVudC5ub0lzb2xhdGlvbjtqJiZnLmNhbmNlbGFibGUmJmcucHJldmVudERlZmF1bHQoKX19fSxbXSksZD1DLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKGIsZyxfLE8pe3ZhciBFPXtuYW1lOmIsZGVsdGE6Zyx0YXJnZXQ6XyxzaG91bGQ6TyxzaGFkb3dQYXJlbnQ6YTBlKF8pfTt0LmN1cnJlbnQucHVzaChFKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5jdXJyZW50PXQuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24oail7cmV0dXJuIGohPT1FfSl9LDEpfSxbXSkscD1DLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKGIpe24uY3VycmVudD1DcChiKSxyLmN1cnJlbnQ9dm9pZCAwfSxbXSksbT1DLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKGIpe2QoYi50eXBlLEJCKGIpLGIudGFyZ2V0LHUoYixlLmxvY2tSZWYuY3VycmVudCkpfSxbXSkseT1DLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKGIpe2QoYi50eXBlLENwKGIpLGIudGFyZ2V0LHUoYixlLmxvY2tSZWYuY3VycmVudCkpfSxbXSk7Qy51c2VFZmZlY3QoZnVuY3Rpb24oKXtyZXR1cm4gX2wucHVzaChvKSxlLnNldENhbGxiYWNrcyh7b25TY3JvbGxDYXB0dXJlOm0sb25XaGVlbENhcHR1cmU6bSxvblRvdWNoTW92ZUNhcHR1cmU6eX0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIixmLEFsKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGYsQWwpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHAsQWwpLGZ1bmN0aW9uKCl7X2w9X2wuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiIT09b30pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIixmLEFsKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGYsQWwpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHAsQWwpfX0sW10pO3ZhciB4PWUucmVtb3ZlU2Nyb2xsQmFyLHc9ZS5pbmVydDtyZXR1cm4gQy5jcmVhdGVFbGVtZW50KEMuRnJhZ21lbnQsbnVsbCx3P0MuY3JlYXRlRWxlbWVudChvLHtzdHlsZXM6bjBlKGkpfSk6bnVsbCx4P0MuY3JlYXRlRWxlbWVudChLYmUse25vUmVsYXRpdmU6ZS5ub1JlbGF0aXZlLGdhcE1vZGU6ZS5nYXBNb2RlfSk6bnVsbCl9ZnVuY3Rpb24gYTBlKGUpe2Zvcih2YXIgdD1udWxsO2UhPT1udWxsOyllIGluc3RhbmNlb2YgU2hhZG93Um9vdCYmKHQ9ZS5ob3N0LGU9ZS5ob3N0KSxlPWUucGFyZW50Tm9kZTtyZXR1cm4gdH1jb25zdCBvMGU9a2JlKHE2LGkwZSk7dmFyIHNFPUMuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe3JldHVybiBDLmNyZWF0ZUVsZW1lbnQoRXYsd2koe30sZSx7cmVmOnQsc2lkZUNhcjpvMGV9KSl9KTtzRS5jbGFzc05hbWVzPUV2LmNsYXNzTmFtZXM7dmFyIHMwZT1mdW5jdGlvbihlKXtpZih0eXBlb2YgZG9jdW1lbnQ+InUiKXJldHVybiBudWxsO3ZhciB0PUFycmF5LmlzQXJyYXkoZSk/ZVswXTplO3JldHVybiB0Lm93bmVyRG9jdW1lbnQuYm9keX0sT2w9bmV3IFdlYWtNYXAsanA9bmV3IFdlYWtNYXAsUHA9e30sUFM9MCxHNj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmKGUuaG9zdHx8RzYoZS5wYXJlbnROb2RlKSl9LGwwZT1mdW5jdGlvbihlLHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbihuKXtpZihlLmNvbnRhaW5zKG4pKXJldHVybiBuO3ZhciByPUc2KG4pO3JldHVybiByJiZlLmNvbnRhaW5zKHIpP3I6KGNvbnNvbGUuZXJyb3IoImFyaWEtaGlkZGVuIixuLCJpbiBub3QgY29udGFpbmVkIGluc2lkZSIsZSwiLiBEb2luZyBub3RoaW5nIiksbnVsbCl9KS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuISFufSl9LHUwZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1sMGUodCxBcnJheS5pc0FycmF5KGUpP2U6W2VdKTtQcFtuXXx8KFBwW25dPW5ldyBXZWFrTWFwKTt2YXIgbz1QcFtuXSxzPVtdLHU9bmV3IFNldCxmPW5ldyBTZXQoaSksZD1mdW5jdGlvbihtKXshbXx8dS5oYXMobSl8fCh1LmFkZChtKSxkKG0ucGFyZW50Tm9kZSkpfTtpLmZvckVhY2goZCk7dmFyIHA9ZnVuY3Rpb24obSl7IW18fGYuaGFzKG0pfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG0uY2hpbGRyZW4sZnVuY3Rpb24oeSl7aWYodS5oYXMoeSkpcCh5KTtlbHNlIHRyeXt2YXIgeD15LmdldEF0dHJpYnV0ZShyKSx3PXghPT1udWxsJiZ4IT09ImZhbHNlIixiPShPbC5nZXQoeSl8fDApKzEsZz0oby5nZXQoeSl8fDApKzE7T2wuc2V0KHksYiksby5zZXQoeSxnKSxzLnB1c2goeSksYj09PTEmJncmJmpwLnNldCh5LCEwKSxnPT09MSYmeS5zZXRBdHRyaWJ1dGUobiwidHJ1ZSIpLHd8fHkuc2V0QXR0cmlidXRlKHIsInRydWUiKX1jYXRjaChfKXtjb25zb2xlLmVycm9yKCJhcmlhLWhpZGRlbjogY2Fubm90IG9wZXJhdGUgb24gIix5LF8pfX0pfTtyZXR1cm4gcCh0KSx1LmNsZWFyKCksUFMrKyxmdW5jdGlvbigpe3MuZm9yRWFjaChmdW5jdGlvbihtKXt2YXIgeT1PbC5nZXQobSktMSx4PW8uZ2V0KG0pLTE7T2wuc2V0KG0seSksby5zZXQobSx4KSx5fHwoanAuaGFzKG0pfHxtLnJlbW92ZUF0dHJpYnV0ZShyKSxqcC5kZWxldGUobSkpLHh8fG0ucmVtb3ZlQXR0cmlidXRlKG4pfSksUFMtLSxQU3x8KE9sPW5ldyBXZWFrTWFwLE9sPW5ldyBXZWFrTWFwLGpwPW5ldyBXZWFrTWFwLFBwPXt9KX19LEs2PWZ1bmN0aW9uKGUsdCxuKXtuPT09dm9pZCAwJiYobj0iZGF0YS1hcmlhLWhpZGRlbiIpO3ZhciByPUFycmF5LmZyb20oQXJyYXkuaXNBcnJheShlKT9lOltlXSksaT1zMGUoZSk7cmV0dXJuIGk/KHIucHVzaC5hcHBseShyLEFycmF5LmZyb20oaS5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1saXZlXSwgc2NyaXB0IikpKSx1MGUocixpLG4sImFyaWEtaGlkZGVuIikpOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSxDdj0iRGlhbG9nIixbVzZdPW1vKEN2KSxbYzBlLGNpXT1XNihDdiksWTY9ZT0+e2NvbnN0e19fc2NvcGVEaWFsb2c6dCxjaGlsZHJlbjpuLG9wZW46cixkZWZhdWx0T3BlbjppLG9uT3BlbkNoYW5nZTpvLG1vZGFsOnM9ITB9PWUsdT1DLnVzZVJlZihudWxsKSxmPUMudXNlUmVmKG51bGwpLFtkLHBdPVhsKHtwcm9wOnIsZGVmYXVsdFByb3A6aT8/ITEsb25DaGFuZ2U6byxjYWxsZXI6Q3Z9KTtyZXR1cm4gQS5qc3goYzBlLHtzY29wZTp0LHRyaWdnZXJSZWY6dSxjb250ZW50UmVmOmYsY29udGVudElkOmlvKCksdGl0bGVJZDppbygpLGRlc2NyaXB0aW9uSWQ6aW8oKSxvcGVuOmQsb25PcGVuQ2hhbmdlOnAsb25PcGVuVG9nZ2xlOkMudXNlQ2FsbGJhY2soKCk9PnAobT0+IW0pLFtwXSksbW9kYWw6cyxjaGlsZHJlbjpufSl9O1k2LmRpc3BsYXlOYW1lPUN2O3ZhciBYNj0iRGlhbG9nVHJpZ2dlciIsZjBlPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVEaWFsb2c6biwuLi5yfT1lLGk9Y2koWDYsbiksbz1JdCh0LGkudHJpZ2dlclJlZik7cmV0dXJuIEEuanN4KFFlLmJ1dHRvbix7dHlwZToiYnV0dG9uIiwiYXJpYS1oYXNwb3B1cCI6ImRpYWxvZyIsImFyaWEtZXhwYW5kZWQiOmkub3BlbiwiYXJpYS1jb250cm9scyI6aS5vcGVuP2kuY29udGVudElkOnZvaWQgMCwiZGF0YS1zdGF0ZSI6aEUoaS5vcGVuKSwuLi5yLHJlZjpvLG9uQ2xpY2s6emUoZS5vbkNsaWNrLGkub25PcGVuVG9nZ2xlKX0pfSk7ZjBlLmRpc3BsYXlOYW1lPVg2O3ZhciBsRT0iRGlhbG9nUG9ydGFsIixbZDBlLFo2XT1XNihsRSx7Zm9yY2VNb3VudDp2b2lkIDB9KSxRNj1lPT57Y29uc3R7X19zY29wZURpYWxvZzp0LGZvcmNlTW91bnQ6bixjaGlsZHJlbjpyLGNvbnRhaW5lcjppfT1lLG89Y2kobEUsdCk7cmV0dXJuIEEuanN4KGQwZSx7c2NvcGU6dCxmb3JjZU1vdW50Om4sY2hpbGRyZW46Qy5DaGlsZHJlbi5tYXAocixzPT5BLmpzeChtYSx7cHJlc2VudDpufHxvLm9wZW4sY2hpbGRyZW46QS5qc3goQWQse2FzQ2hpbGQ6ITAsY29udGFpbmVyOmksY2hpbGRyZW46c30pfSkpfSl9O1E2LmRpc3BsYXlOYW1lPWxFO3ZhciB2eT0iRGlhbG9nT3ZlcmxheSIsdUU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3Qgbj1aNih2eSxlLl9fc2NvcGVEaWFsb2cpLHtmb3JjZU1vdW50OnI9bi5mb3JjZU1vdW50LC4uLml9PWUsbz1jaSh2eSxlLl9fc2NvcGVEaWFsb2cpO3JldHVybiBvLm1vZGFsP0EuanN4KG1hLHtwcmVzZW50OnJ8fG8ub3BlbixjaGlsZHJlbjpBLmpzeChwMGUsey4uLmkscmVmOnR9KX0pOm51bGx9KTt1RS5kaXNwbGF5TmFtZT12eTt2YXIgaDBlPVlsKCJEaWFsb2dPdmVybGF5LlJlbW92ZVNjcm9sbCIpLHAwZT1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlRGlhbG9nOm4sLi4ucn09ZSxpPWNpKHZ5LG4pLG89eDcoKSxzPUl0KHQsbyk7cmV0dXJuIEEuanN4KHNFLHthczpoMGUsYWxsb3dQaW5jaFpvb206ITAsc2hhcmRzOltpLmNvbnRlbnRSZWZdLGNoaWxkcmVuOkEuanN4KFFlLmRpdix7ImRhdGEtc3RhdGUiOmhFKGkub3BlbiksLi4ucixyZWY6cyxzdHlsZTp7cG9pbnRlckV2ZW50czoiYXV0byIsLi4uci5zdHlsZX19KX0pfSksVHU9IkRpYWxvZ0NvbnRlbnQiLGNFPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0IG49WjYoVHUsZS5fX3Njb3BlRGlhbG9nKSx7Zm9yY2VNb3VudDpyPW4uZm9yY2VNb3VudCwuLi5pfT1lLG89Y2koVHUsZS5fX3Njb3BlRGlhbG9nKTtyZXR1cm4gQS5qc3gobWEse3ByZXNlbnQ6cnx8by5vcGVuLGNoaWxkcmVuOm8ubW9kYWw/QS5qc3gobTBlLHsuLi5pLHJlZjp0fSk6QS5qc3goeTBlLHsuLi5pLHJlZjp0fSl9KX0pO2NFLmRpc3BsYXlOYW1lPVR1O3ZhciBtMGU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3Qgbj1jaShUdSxlLl9fc2NvcGVEaWFsb2cpLHI9Qy51c2VSZWYobnVsbCksaT1JdCh0LG4uY29udGVudFJlZixyKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9Pntjb25zdCBvPXIuY3VycmVudDtpZihvKXJldHVybiBLNihvKX0sW10pLEEuanN4KEo2LHsuLi5lLHJlZjppLHRyYXBGb2N1czpuLm9wZW4sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOm4ub3BlbixvbkNsb3NlQXV0b0ZvY3VzOnplKGUub25DbG9zZUF1dG9Gb2N1cyxvPT57by5wcmV2ZW50RGVmYXVsdCgpLG4udHJpZ2dlclJlZi5jdXJyZW50Py5mb2N1cygpfSksb25Qb2ludGVyRG93bk91dHNpZGU6emUoZS5vblBvaW50ZXJEb3duT3V0c2lkZSxvPT57Y29uc3Qgcz1vLmRldGFpbC5vcmlnaW5hbEV2ZW50LHU9cy5idXR0b249PT0wJiZzLmN0cmxLZXk9PT0hMDsocy5idXR0b249PT0yfHx1KSYmby5wcmV2ZW50RGVmYXVsdCgpfSksb25Gb2N1c091dHNpZGU6emUoZS5vbkZvY3VzT3V0c2lkZSxvPT5vLnByZXZlbnREZWZhdWx0KCkpfSl9KSx5MGU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3Qgbj1jaShUdSxlLl9fc2NvcGVEaWFsb2cpLHI9Qy51c2VSZWYoITEpLGk9Qy51c2VSZWYoITEpO3JldHVybiBBLmpzeChKNix7Li4uZSxyZWY6dCx0cmFwRm9jdXM6ITEsZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiExLG9uQ2xvc2VBdXRvRm9jdXM6bz0+e2Uub25DbG9zZUF1dG9Gb2N1cz8uKG8pLG8uZGVmYXVsdFByZXZlbnRlZHx8KHIuY3VycmVudHx8bi50cmlnZ2VyUmVmLmN1cnJlbnQ/LmZvY3VzKCksby5wcmV2ZW50RGVmYXVsdCgpKSxyLmN1cnJlbnQ9ITEsaS5jdXJyZW50PSExfSxvbkludGVyYWN0T3V0c2lkZTpvPT57ZS5vbkludGVyYWN0T3V0c2lkZT8uKG8pLG8uZGVmYXVsdFByZXZlbnRlZHx8KHIuY3VycmVudD0hMCxvLmRldGFpbC5vcmlnaW5hbEV2ZW50LnR5cGU9PT0icG9pbnRlcmRvd24iJiYoaS5jdXJyZW50PSEwKSk7Y29uc3Qgcz1vLnRhcmdldDtuLnRyaWdnZXJSZWYuY3VycmVudD8uY29udGFpbnMocykmJm8ucHJldmVudERlZmF1bHQoKSxvLmRldGFpbC5vcmlnaW5hbEV2ZW50LnR5cGU9PT0iZm9jdXNpbiImJmkuY3VycmVudCYmby5wcmV2ZW50RGVmYXVsdCgpfX0pfSksSjY9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZURpYWxvZzpuLHRyYXBGb2N1czpyLG9uT3BlbkF1dG9Gb2N1czppLG9uQ2xvc2VBdXRvRm9jdXM6bywuLi5zfT1lLHU9Y2koVHUsbik7cmV0dXJuICQ2KCksQS5qc3goQS5GcmFnbWVudCx7Y2hpbGRyZW46QS5qc3gob0Use2FzQ2hpbGQ6ITAsbG9vcDohMCx0cmFwcGVkOnIsb25Nb3VudEF1dG9Gb2N1czppLG9uVW5tb3VudEF1dG9Gb2N1czpvLGNoaWxkcmVuOkEuanN4KFNkLHtyb2xlOiJkaWFsb2ciLGlkOnUuY29udGVudElkLCJhcmlhLWRlc2NyaWJlZGJ5Ijp1LmRlc2NyaXB0aW9uSWQsImFyaWEtbGFiZWxsZWRieSI6dS50aXRsZUlkLCJkYXRhLXN0YXRlIjpoRSh1Lm9wZW4pLC4uLnMscmVmOnQsZGVmZXJQb2ludGVyRG93bk91dHNpZGU6ITAsb25EaXNtaXNzOigpPT51Lm9uT3BlbkNoYW5nZSghMSl9KX0pfSl9KSxlRj0iRGlhbG9nVGl0bGUiLGZFPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVEaWFsb2c6biwuLi5yfT1lLGk9Y2koZUYsbik7cmV0dXJuIEEuanN4KFFlLmgyLHtpZDppLnRpdGxlSWQsLi4ucixyZWY6dH0pfSk7ZkUuZGlzcGxheU5hbWU9ZUY7dmFyIHRGPSJEaWFsb2dEZXNjcmlwdGlvbiIsZEU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZURpYWxvZzpuLC4uLnJ9PWUsaT1jaSh0RixuKTtyZXR1cm4gQS5qc3goUWUucCx7aWQ6aS5kZXNjcmlwdGlvbklkLC4uLnIscmVmOnR9KX0pO2RFLmRpc3BsYXlOYW1lPXRGO3ZhciBuRj0iRGlhbG9nQ2xvc2UiLHJGPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVEaWFsb2c6biwuLi5yfT1lLGk9Y2kobkYsbik7cmV0dXJuIEEuanN4KFFlLmJ1dHRvbix7dHlwZToiYnV0dG9uIiwuLi5yLHJlZjp0LG9uQ2xpY2s6emUoZS5vbkNsaWNrLCgpPT5pLm9uT3BlbkNoYW5nZSghMSkpfSl9KTtyRi5kaXNwbGF5TmFtZT1uRjtmdW5jdGlvbiBoRShlKXtyZXR1cm4gZT8ib3BlbiI6ImNsb3NlZCJ9Y29uc3QgT2Y9WTYsdjBlPVE2LGlGPUMuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLC4uLnR9LG4pPT5BLmpzeCh1RSx7cmVmOm4sY2xhc3NOYW1lOm90KCJmaXhlZCBpbnNldC0wIHotNTAgYmctYmFja2dyb3VuZC84MCBiYWNrZHJvcC1ibHVyLXNtIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIixlKSwuLi50fSkpO2lGLmRpc3BsYXlOYW1lPXVFLmRpc3BsYXlOYW1lO2NvbnN0IEdsPUMuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLGNoaWxkcmVuOnQsLi4ubn0scik9PkEuanN4cyh2MGUse2NoaWxkcmVuOltBLmpzeChpRix7fSksQS5qc3hzKGNFLHtyZWY6cixjbGFzc05hbWU6b3QoImZpeGVkIGxlZnQtWzUwJV0gdG9wLVs1MCVdIHotNTAgZ3JpZCB3LWZ1bGwgbWF4LXctbGcgdHJhbnNsYXRlLXgtWy01MCVdIHRyYW5zbGF0ZS15LVstNTAlXSBnYXAtNCBib3JkZXIgYmctY2FyZCBwLTYgc2hhZG93LWxnIGR1cmF0aW9uLTIwMCBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tbGVmdC0xLzIgZGF0YS1bc3RhdGU9Y2xvc2VkXTpzbGlkZS1vdXQtdG8tdG9wLVs0OCVdIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tbGVmdC0xLzIgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS10b3AtWzQ4JV0gc206cm91bmRlZC0yeGwiLGUpLC4uLm4sY2hpbGRyZW46W3QsQS5qc3hzKHJGLHtjbGFzc05hbWU6ImFic29sdXRlIHJpZ2h0LTQgdG9wLTQgcm91bmRlZC1zbSBvcGFjaXR5LTcwIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTIgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpiZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjpbQS5qc3goZDMse2NsYXNzTmFtZToiaC00IHctNCJ9KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToic3Itb25seSIsY2hpbGRyZW46IkNsb3NlIn0pXX0pXX0pXX0pKTtHbC5kaXNwbGF5TmFtZT1jRS5kaXNwbGF5TmFtZTtjb25zdCBLbD0oe2NsYXNzTmFtZTplLC4uLnR9KT0+QS5qc3goImRpdiIse2NsYXNzTmFtZTpvdCgiZmxleCBmbGV4LWNvbCBzcGFjZS15LTEuNSB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnQiLGUpLC4uLnR9KTtLbC5kaXNwbGF5TmFtZT0iRGlhbG9nSGVhZGVyIjtjb25zdCB5ZD0oe2NsYXNzTmFtZTplLC4uLnR9KT0+QS5qc3goImRpdiIse2NsYXNzTmFtZTpvdCgiZmxleCBmbGV4LWNvbC1yZXZlcnNlIHNtOmZsZXgtcm93IHNtOmp1c3RpZnktZW5kIHNtOnNwYWNlLXgtMiIsZSksLi4udH0pO3lkLmRpc3BsYXlOYW1lPSJEaWFsb2dGb290ZXIiO2NvbnN0IFdsPUMuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLC4uLnR9LG4pPT5BLmpzeChmRSx7cmVmOm4sY2xhc3NOYW1lOm90KCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0IixlKSwuLi50fSkpO1dsLmRpc3BsYXlOYW1lPWZFLmRpc3BsYXlOYW1lO2NvbnN0IGFGPUMuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLC4uLnR9LG4pPT5BLmpzeChkRSx7cmVmOm4sY2xhc3NOYW1lOm90KCJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsZSksLi4udH0pKTthRi5kaXNwbGF5TmFtZT1kRS5kaXNwbGF5TmFtZTtmdW5jdGlvbiBxQihlLFt0LG5dKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heCh0LGUpKX1mdW5jdGlvbiBnMGUoZSl7Y29uc3QgdD1DLnVzZVJlZih7dmFsdWU6ZSxwcmV2aW91czplfSk7cmV0dXJuIEMudXNlTWVtbygoKT0+KHQuY3VycmVudC52YWx1ZSE9PWUmJih0LmN1cnJlbnQucHJldmlvdXM9dC5jdXJyZW50LnZhbHVlLHQuY3VycmVudC52YWx1ZT1lKSx0LmN1cnJlbnQucHJldmlvdXMpLFtlXSl9dmFyIGIwZT1bIiAiLCJFbnRlciIsIkFycm93VXAiLCJBcnJvd0Rvd24iXSx4MGU9WyIgIiwiRW50ZXIiXSxfcz0iU2VsZWN0IixbanYsUHYsdzBlXT1pTyhfcyksW1JzXT1tbyhfcyxbdzBlLER5XSksTXY9RHkoKSxbUzBlLF9vXT1ScyhfcyksW0EwZSxfMGVdPVJzKF9zKSxPMGU9IlNlbGVjdFByb3ZpZGVyIjtmdW5jdGlvbiBvRihlKXtjb25zdHtfX3Njb3BlU2VsZWN0OnQsY2hpbGRyZW46bixvcGVuOnIsZGVmYXVsdE9wZW46aSxvbk9wZW5DaGFuZ2U6byx2YWx1ZTpzLGRlZmF1bHRWYWx1ZTp1LG9uVmFsdWVDaGFuZ2U6ZixkaXI6ZCxuYW1lOnAsYXV0b0NvbXBsZXRlOm0sZGlzYWJsZWQ6eSxyZXF1aXJlZDp4LGZvcm06dyxpbnRlcm5hbF9kb19ub3RfdXNlX3JlbmRlcjpifT1lLGc9TXYodCksW18sT109Qy51c2VTdGF0ZShudWxsKSxbRSxqXT1DLnVzZVN0YXRlKG51bGwpLFtULFBdPUMudXNlU3RhdGUoITEpLE49aUUoZCksW1IsSV09WGwoe3Byb3A6cixkZWZhdWx0UHJvcDppPz8hMSxvbkNoYW5nZTpvLGNhbGxlcjpfc30pLFtWLEJdPVhsKHtwcm9wOnMsZGVmYXVsdFByb3A6dSxvbkNoYW5nZTpmLGNhbGxlcjpfc30pLCQ9Qy51c2VSZWYobnVsbCksej1DLnVzZVJlZihWKTtDLnVzZUVmZmVjdCgoKT0+e2NvbnN0IHRlPXc/Xz8ub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZCh3KTpfPy5mb3JtO2lmKHRlIGluc3RhbmNlb2YgSFRNTEZvcm1FbGVtZW50KXtjb25zdCBvZT0oKT0+Qih6LmN1cnJlbnQpO3JldHVybiB0ZS5hZGRFdmVudExpc3RlbmVyKCJyZXNldCIsb2UpLCgpPT50ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNldCIsb2UpfX0sW3csXyxCXSk7Y29uc3QgVT1fPyEhd3x8ISFfLmNsb3Nlc3QoImZvcm0iKTohMCxbSyxMXT1DLnVzZVN0YXRlKG5ldyBTZXQpLFc9aW8oKSxIPUFycmF5LmZyb20oSykubWFwKHRlPT50ZS5wcm9wcy52YWx1ZSkuam9pbigiOyIpLGVlPUMudXNlQ2FsbGJhY2sodGU9PntMKG9lPT5uZXcgU2V0KG9lKS5hZGQodGUpKX0sW10pLGs9Qy51c2VDYWxsYmFjayh0ZT0+e0wob2U9Pntjb25zdCBtZT1uZXcgU2V0KG9lKTtyZXR1cm4gbWUuZGVsZXRlKHRlKSxtZX0pfSxbXSksWj17cmVxdWlyZWQ6eCx0cmlnZ2VyOl8sb25UcmlnZ2VyQ2hhbmdlOk8sdmFsdWVOb2RlOkUsb25WYWx1ZU5vZGVDaGFuZ2U6aix2YWx1ZU5vZGVIYXNDaGlsZHJlbjpULG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2U6UCxjb250ZW50SWQ6Vyx2YWx1ZTpWLG9uVmFsdWVDaGFuZ2U6QixvcGVuOlIsb25PcGVuQ2hhbmdlOkksZGlyOk4sdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOiQsZGlzYWJsZWQ6eSxuYW1lOnAsYXV0b0NvbXBsZXRlOm0sZm9ybTp3LG5hdGl2ZU9wdGlvbnM6SyxuYXRpdmVTZWxlY3RLZXk6SCxpc0Zvcm1Db250cm9sOlV9O3JldHVybiBBLmpzeCh4WSx7Li4uZyxjaGlsZHJlbjpBLmpzeChTMGUse3Njb3BlOnQsLi4uWixjaGlsZHJlbjpBLmpzeChqdi5Qcm92aWRlcix7c2NvcGU6dCxjaGlsZHJlbjpBLmpzeChBMGUse3Njb3BlOnQsb25OYXRpdmVPcHRpb25BZGQ6ZWUsb25OYXRpdmVPcHRpb25SZW1vdmU6ayxjaGlsZHJlbjpWMGUoYik/YihaKTpufSl9KX0pfSl9b0YuZGlzcGxheU5hbWU9TzBlO3ZhciBzRj1lPT57Y29uc3R7X19zY29wZVNlbGVjdDp0LGNoaWxkcmVuOm4sLi4ucn09ZTtyZXR1cm4gQS5qc3gob0Yse19fc2NvcGVTZWxlY3Q6dCwuLi5yLGludGVybmFsX2RvX25vdF91c2VfcmVuZGVyOih7aXNGb3JtQ29udHJvbDppfSk9PkEuanN4cyhBLkZyYWdtZW50LHtjaGlsZHJlbjpbbixpP0EuanN4KENGLHtfX3Njb3BlU2VsZWN0OnR9KTpudWxsXX0pfSl9O3NGLmRpc3BsYXlOYW1lPV9zO3ZhciBsRj0iU2VsZWN0VHJpZ2dlciIscEU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpuLGRpc2FibGVkOnI9ITEsLi4uaX09ZSxvPU12KG4pLHM9X28obEYsbiksdT1zLmRpc2FibGVkfHxyLGY9SXQodCxzLm9uVHJpZ2dlckNoYW5nZSksZD1QdihuKSxwPUMudXNlUmVmKCJ0b3VjaCIpLFttLHkseF09akYoYj0+e2NvbnN0IGc9ZCgpLmZpbHRlcihFPT4hRS5kaXNhYmxlZCksXz1nLmZpbmQoRT0+RS52YWx1ZT09PXMudmFsdWUpLE89UEYoZyxiLF8pO08hPT12b2lkIDAmJnMub25WYWx1ZUNoYW5nZShPLnZhbHVlKX0pLHc9Yj0+e3V8fChzLm9uT3BlbkNoYW5nZSghMCkseCgpKSxiJiYocy50cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudD17eDpNYXRoLnJvdW5kKGIucGFnZVgpLHk6TWF0aC5yb3VuZChiLnBhZ2VZKX0pfTtyZXR1cm4gQS5qc3goJDMse2FzQ2hpbGQ6ITAsLi4ubyxjaGlsZHJlbjpBLmpzeChRZS5idXR0b24se3R5cGU6ImJ1dHRvbiIscm9sZToiY29tYm9ib3giLCJhcmlhLWNvbnRyb2xzIjpzLm9wZW4/cy5jb250ZW50SWQ6dm9pZCAwLCJhcmlhLWV4cGFuZGVkIjpzLm9wZW4sImFyaWEtcmVxdWlyZWQiOnMucmVxdWlyZWQsImFyaWEtYXV0b2NvbXBsZXRlIjoibm9uZSIsZGlyOnMuZGlyLCJkYXRhLXN0YXRlIjpzLm9wZW4/Im9wZW4iOiJjbG9zZWQiLGRpc2FibGVkOnUsImRhdGEtZGlzYWJsZWQiOnU/IiI6dm9pZCAwLCJkYXRhLXBsYWNlaG9sZGVyIjpSdihzLnZhbHVlKT8iIjp2b2lkIDAsLi4uaSxyZWY6ZixvbkNsaWNrOnplKGkub25DbGljayxiPT57Yi5jdXJyZW50VGFyZ2V0LmZvY3VzKCkscC5jdXJyZW50IT09Im1vdXNlIiYmdyhiKX0pLG9uUG9pbnRlckRvd246emUoaS5vblBvaW50ZXJEb3duLGI9PntwLmN1cnJlbnQ9Yi5wb2ludGVyVHlwZTtjb25zdCBnPWIudGFyZ2V0O2cuaGFzUG9pbnRlckNhcHR1cmUoYi5wb2ludGVySWQpJiZnLnJlbGVhc2VQb2ludGVyQ2FwdHVyZShiLnBvaW50ZXJJZCksYi5idXR0b249PT0wJiZiLmN0cmxLZXk9PT0hMSYmYi5wb2ludGVyVHlwZT09PSJtb3VzZSImJih3KGIpLGIucHJldmVudERlZmF1bHQoKSl9KSxvbktleURvd246emUoaS5vbktleURvd24sYj0+e2NvbnN0IGc9bS5jdXJyZW50IT09IiI7IShiLmN0cmxLZXl8fGIuYWx0S2V5fHxiLm1ldGFLZXkpJiZiLmtleS5sZW5ndGg9PT0xJiZ5KGIua2V5KSwhKGcmJmIua2V5PT09IiAiKSYmYjBlLmluY2x1ZGVzKGIua2V5KSYmKHcoKSxiLnByZXZlbnREZWZhdWx0KCkpfSl9KX0pfSk7cEUuZGlzcGxheU5hbWU9bEY7dmFyIHVGPSJTZWxlY3RWYWx1ZSIsY0Y9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpuLGNsYXNzTmFtZTpyLHN0eWxlOmksY2hpbGRyZW46byxwbGFjZWhvbGRlcjpzPSIiLC4uLnV9PWUsZj1fbyh1RixuKSx7b25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZTpkfT1mLHA9byE9PXZvaWQgMCxtPUl0KHQsZi5vblZhbHVlTm9kZUNoYW5nZSk7Z24oKCk9PntkKHApfSxbZCxwXSk7Y29uc3QgeT1SdihmLnZhbHVlKTtyZXR1cm4gQS5qc3goUWUuc3Bhbix7Li4udSxhc0NoaWxkOnk/ITE6dS5hc0NoaWxkLHJlZjptLHN0eWxlOntwb2ludGVyRXZlbnRzOiJub25lIn0sY2hpbGRyZW46QS5qc3goQy5GcmFnbWVudCx7Y2hpbGRyZW46eT9zOm99LHk/InBsYWNlaG9sZGVyIjoidmFsdWUiKX0pfSk7Y0YuZGlzcGxheU5hbWU9dUY7dmFyIFQwZT0iU2VsZWN0SWNvbiIsZkY9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpuLGNoaWxkcmVuOnIsLi4uaX09ZTtyZXR1cm4gQS5qc3goUWUuc3Bhbix7ImFyaWEtaGlkZGVuIjohMCwuLi5pLHJlZjp0LGNoaWxkcmVuOnJ8fCLilrwifSl9KTtmRi5kaXNwbGF5TmFtZT1UMGU7dmFyIGRGPSJTZWxlY3RQb3J0YWwiLFtFMGUsQzBlXT1ScyhkRix7Zm9yY2VNb3VudDp2b2lkIDB9KSxoRj1lPT57Y29uc3R7X19zY29wZVNlbGVjdDp0LGZvcmNlTW91bnQ6biwuLi5yfT1lO3JldHVybiBBLmpzeChFMGUse3Njb3BlOmUuX19zY29wZVNlbGVjdCxmb3JjZU1vdW50Om4sY2hpbGRyZW46QS5qc3goQWQse2FzQ2hpbGQ6ITAsLi4ucn0pfSl9O2hGLmRpc3BsYXlOYW1lPWRGO3ZhciBmbz0iU2VsZWN0Q29udGVudCIsbUU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3Qgbj1DMGUoZm8sZS5fX3Njb3BlU2VsZWN0KSx7Zm9yY2VNb3VudDpyPW4uZm9yY2VNb3VudCwuLi5pfT1lLG89X28oZm8sZS5fX3Njb3BlU2VsZWN0KSxbcyx1XT1DLnVzZVN0YXRlKCk7cmV0dXJuIGduKCgpPT57dShuZXcgRG9jdW1lbnRGcmFnbWVudCl9LFtdKSxBLmpzeChtYSx7cHJlc2VudDpyfHxvLm9wZW4sY2hpbGRyZW46KHtwcmVzZW50OmZ9KT0+Zj9BLmpzeCh5Rix7Li4uaSxyZWY6dH0pOkEuanN4KHBGLHsuLi5pLGZyYWdtZW50OnN9KX0pfSk7bUUuZGlzcGxheU5hbWU9Zm87dmFyIHBGPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVTZWxlY3Q6bixjaGlsZHJlbjpyLGZyYWdtZW50Oml9PWU7cmV0dXJuIGk/TXUuY3JlYXRlUG9ydGFsKEEuanN4KG1GLHtzY29wZTpuLGNoaWxkcmVuOkEuanN4KGp2LlNsb3Qse3Njb3BlOm4sY2hpbGRyZW46QS5qc3goImRpdiIse3JlZjp0LGNoaWxkcmVuOnJ9KX0pfSksaSk6bnVsbH0pO3BGLmRpc3BsYXlOYW1lPSJTZWxlY3RDb250ZW50RnJhZ21lbnQiO3ZhciBlaT0xMCxbbUYsT29dPVJzKGZvKSxqMGU9IlNlbGVjdENvbnRlbnRJbXBsIixQMGU9WWwoIlNlbGVjdENvbnRlbnQuUmVtb3ZlU2Nyb2xsIikseUY9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpufT1lLHtwb3NpdGlvbjpyPSJpdGVtLWFsaWduZWQiLG9uQ2xvc2VBdXRvRm9jdXM6aSxvbkVzY2FwZUtleURvd246byxvblBvaW50ZXJEb3duT3V0c2lkZTpzLHNpZGU6dSxzaWRlT2Zmc2V0OmYsYWxpZ246ZCxhbGlnbk9mZnNldDpwLGFycm93UGFkZGluZzptLGNvbGxpc2lvbkJvdW5kYXJ5OnksY29sbGlzaW9uUGFkZGluZzp4LHN0aWNreTp3LGhpZGVXaGVuRGV0YWNoZWQ6Yixhdm9pZENvbGxpc2lvbnM6ZywuLi5ffT1lLE89X28oZm8sbiksW0Usal09Qy51c2VTdGF0ZShudWxsKSxbVCxQXT1DLnVzZVN0YXRlKG51bGwpLE49SXQodCxqKSxbUixJXT1DLnVzZVN0YXRlKG51bGwpLFtWLEJdPUMudXNlU3RhdGUobnVsbCksJD1QdihuKSxbeixVXT1DLnVzZVN0YXRlKCExKSxLPUMudXNlUmVmKCExKTtDLnVzZUVmZmVjdCgoKT0+e2lmKEUpcmV0dXJuIEs2KEUpfSxbRV0pLCQ2KCk7Y29uc3QgTD1DLnVzZUNhbGxiYWNrKF9lPT57Y29uc3RbVGUsLi4uY2VdPSQoKS5tYXAoc2U9PnNlLnJlZi5jdXJyZW50KSxbQWVdPWNlLnNsaWNlKC0xKSxTZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2Zvcihjb25zdCBzZSBvZiBfZSlpZihzZT09PVNlfHwoc2U/LnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCJ9KSxzZT09PVRlJiZUJiYoVC5zY3JvbGxUb3A9MCksc2U9PT1BZSYmVCYmKFQuc2Nyb2xsVG9wPVQuc2Nyb2xsSGVpZ2h0KSxzZT8uZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09U2UpKXJldHVybn0sWyQsVF0pLFc9Qy51c2VDYWxsYmFjaygoKT0+TChbUixFXSksW0wsUixFXSk7Qy51c2VFZmZlY3QoKCk9Pnt6JiZXKCl9LFt6LFddKTtjb25zdHtvbk9wZW5DaGFuZ2U6SCx0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWY6ZWV9PU87Qy51c2VFZmZlY3QoKCk9PntpZihFKXtsZXQgX2U9e3g6MCx5OjB9O2NvbnN0IFRlPUFlPT57X2U9e3g6TWF0aC5hYnMoTWF0aC5yb3VuZChBZS5wYWdlWCktKGVlLmN1cnJlbnQ/Lng/PzApKSx5Ok1hdGguYWJzKE1hdGgucm91bmQoQWUucGFnZVkpLShlZS5jdXJyZW50Py55Pz8wKSl9fSxjZT1BZT0+e19lLng8PTEwJiZfZS55PD0xMD9BZS5wcmV2ZW50RGVmYXVsdCgpOkFlLmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKEUpfHxIKCExKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsVGUpLGVlLmN1cnJlbnQ9bnVsbH07cmV0dXJuIGVlLmN1cnJlbnQhPT1udWxsJiYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLFRlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLGNlLHtjYXB0dXJlOiEwLG9uY2U6ITB9KSksKCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsVGUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsY2Use2NhcHR1cmU6ITB9KX19fSxbRSxILGVlXSksQy51c2VFZmZlY3QoKCk9Pntjb25zdCBfZT0oKT0+SCghMSk7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJibHVyIixfZSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsX2UpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLF9lKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixfZSl9fSxbSF0pO2NvbnN0W2ssWl09akYoX2U9Pntjb25zdCBUZT0kKCkuZmlsdGVyKFNlPT4hU2UuZGlzYWJsZWQpLGNlPVRlLmZpbmQoU2U9PlNlLnJlZi5jdXJyZW50PT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksQWU9UEYoVGUsX2UsY2UpO0FlJiZzZXRUaW1lb3V0KCgpPT5BZS5yZWYuY3VycmVudD8uZm9jdXMoKSl9KSx0ZT1DLnVzZUNhbGxiYWNrKChfZSxUZSxjZSk9Pntjb25zdCBBZT0hSy5jdXJyZW50JiYhY2U7KE8udmFsdWUhPT12b2lkIDAmJk8udmFsdWU9PT1UZXx8QWUpJiYoSShfZSksQWUmJihLLmN1cnJlbnQ9ITApKX0sW08udmFsdWVdKSxvZT1DLnVzZUNhbGxiYWNrKCgpPT5FPy5mb2N1cygpLFtFXSksbWU9Qy51c2VDYWxsYmFjaygoX2UsVGUsY2UpPT57Y29uc3QgQWU9IUsuY3VycmVudCYmIWNlOyhPLnZhbHVlIT09dm9pZCAwJiZPLnZhbHVlPT09VGV8fEFlKSYmQihfZSl9LFtPLnZhbHVlXSksYmU9cj09PSJwb3BwZXIiP0ZfOnZGLGdlPWJlPT09Rl8/e3NpZGU6dSxzaWRlT2Zmc2V0OmYsYWxpZ246ZCxhbGlnbk9mZnNldDpwLGFycm93UGFkZGluZzptLGNvbGxpc2lvbkJvdW5kYXJ5OnksY29sbGlzaW9uUGFkZGluZzp4LHN0aWNreTp3LGhpZGVXaGVuRGV0YWNoZWQ6Yixhdm9pZENvbGxpc2lvbnM6Z306e307cmV0dXJuIEEuanN4KG1GLHtzY29wZTpuLGNvbnRlbnQ6RSx2aWV3cG9ydDpULG9uVmlld3BvcnRDaGFuZ2U6UCxpdGVtUmVmQ2FsbGJhY2s6dGUsc2VsZWN0ZWRJdGVtOlIsb25JdGVtTGVhdmU6b2UsaXRlbVRleHRSZWZDYWxsYmFjazptZSxmb2N1c1NlbGVjdGVkSXRlbTpXLHNlbGVjdGVkSXRlbVRleHQ6Vixwb3NpdGlvbjpyLGlzUG9zaXRpb25lZDp6LHNlYXJjaFJlZjprLGNoaWxkcmVuOkEuanN4KHNFLHthczpQMGUsYWxsb3dQaW5jaFpvb206ITAsY2hpbGRyZW46QS5qc3gob0Use2FzQ2hpbGQ6ITAsdHJhcHBlZDpPLm9wZW4sb25Nb3VudEF1dG9Gb2N1czpfZT0+e19lLnByZXZlbnREZWZhdWx0KCl9LG9uVW5tb3VudEF1dG9Gb2N1czp6ZShpLF9lPT57Ty50cmlnZ2VyPy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLF9lLnByZXZlbnREZWZhdWx0KCl9KSxjaGlsZHJlbjpBLmpzeChTZCx7YXNDaGlsZDohMCxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6ITAsb25Fc2NhcGVLZXlEb3duOm8sb25Qb2ludGVyRG93bk91dHNpZGU6cyxvbkZvY3VzT3V0c2lkZTpfZT0+X2UucHJldmVudERlZmF1bHQoKSxvbkRpc21pc3M6KCk9Pk8ub25PcGVuQ2hhbmdlKCExKSxjaGlsZHJlbjpBLmpzeChiZSx7cm9sZToibGlzdGJveCIsaWQ6Ty5jb250ZW50SWQsImRhdGEtc3RhdGUiOk8ub3Blbj8ib3BlbiI6ImNsb3NlZCIsZGlyOk8uZGlyLG9uQ29udGV4dE1lbnU6X2U9Pl9lLnByZXZlbnREZWZhdWx0KCksLi4uXywuLi5nZSxvblBsYWNlZDooKT0+VSghMCkscmVmOk4sc3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsb3V0bGluZToibm9uZSIsLi4uXy5zdHlsZX0sb25LZXlEb3duOnplKF8ub25LZXlEb3duLF9lPT57Y29uc3QgVGU9X2UuY3RybEtleXx8X2UuYWx0S2V5fHxfZS5tZXRhS2V5O2lmKF9lLmtleT09PSJUYWIiJiZfZS5wcmV2ZW50RGVmYXVsdCgpLCFUZSYmX2Uua2V5Lmxlbmd0aD09PTEmJlooX2Uua2V5KSxbIkFycm93VXAiLCJBcnJvd0Rvd24iLCJIb21lIiwiRW5kIl0uaW5jbHVkZXMoX2Uua2V5KSl7bGV0IEFlPSQoKS5maWx0ZXIoU2U9PiFTZS5kaXNhYmxlZCkubWFwKFNlPT5TZS5yZWYuY3VycmVudCk7aWYoWyJBcnJvd1VwIiwiRW5kIl0uaW5jbHVkZXMoX2Uua2V5KSYmKEFlPUFlLnNsaWNlKCkucmV2ZXJzZSgpKSxbIkFycm93VXAiLCJBcnJvd0Rvd24iXS5pbmNsdWRlcyhfZS5rZXkpKXtjb25zdCBTZT1fZS50YXJnZXQsc2U9QWUuaW5kZXhPZihTZSk7QWU9QWUuc2xpY2Uoc2UrMSl9c2V0VGltZW91dCgoKT0+TChBZSkpLF9lLnByZXZlbnREZWZhdWx0KCl9fSl9KX0pfSl9KX0pfSk7eUYuZGlzcGxheU5hbWU9ajBlO3ZhciBNMGU9IlNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb24iLHZGPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVTZWxlY3Q6bixvblBsYWNlZDpyLC4uLml9PWUsbz1fbyhmbyxuKSxzPU9vKGZvLG4pLFt1LGZdPUMudXNlU3RhdGUobnVsbCksW2QscF09Qy51c2VTdGF0ZShudWxsKSxtPUl0KHQscCkseT1QdihuKSx4PUMudXNlUmVmKCExKSx3PUMudXNlUmVmKCEwKSx7dmlld3BvcnQ6YixzZWxlY3RlZEl0ZW06ZyxzZWxlY3RlZEl0ZW1UZXh0Ol8sZm9jdXNTZWxlY3RlZEl0ZW06T309cyxFPUMudXNlQ2FsbGJhY2soKCk9PntpZihvLnRyaWdnZXImJm8udmFsdWVOb2RlJiZ1JiZkJiZiJiZnJiZfKXtjb25zdCBOPW8udHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxSPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksST1vLnZhbHVlTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxWPV8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoby5kaXIhPT0icnRsIil7Y29uc3QgU2U9Vi5sZWZ0LVIubGVmdCxzZT1JLmxlZnQtU2UsS2U9Ti5sZWZ0LXNlLExlPU4ud2lkdGgrS2UsYnQ9TWF0aC5tYXgoTGUsUi53aWR0aCksVHQ9d2luZG93LmlubmVyV2lkdGgtZWksbHQ9cUIoc2UsW2VpLE1hdGgubWF4KGVpLFR0LWJ0KV0pO3Uuc3R5bGUubWluV2lkdGg9TGUrInB4Iix1LnN0eWxlLmxlZnQ9bHQrInB4In1lbHNle2NvbnN0IFNlPVIucmlnaHQtVi5yaWdodCxzZT13aW5kb3cuaW5uZXJXaWR0aC1JLnJpZ2h0LVNlLEtlPXdpbmRvdy5pbm5lcldpZHRoLU4ucmlnaHQtc2UsTGU9Ti53aWR0aCtLZSxidD1NYXRoLm1heChMZSxSLndpZHRoKSxUdD13aW5kb3cuaW5uZXJXaWR0aC1laSxsdD1xQihzZSxbZWksTWF0aC5tYXgoZWksVHQtYnQpXSk7dS5zdHlsZS5taW5XaWR0aD1MZSsicHgiLHUuc3R5bGUucmlnaHQ9bHQrInB4In1jb25zdCBCPXkoKSwkPXdpbmRvdy5pbm5lckhlaWdodC1laSoyLHo9Yi5zY3JvbGxIZWlnaHQsVT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkKSxLPXBhcnNlSW50KFUuYm9yZGVyVG9wV2lkdGgsMTApLEw9cGFyc2VJbnQoVS5wYWRkaW5nVG9wLDEwKSxXPXBhcnNlSW50KFUuYm9yZGVyQm90dG9tV2lkdGgsMTApLEg9cGFyc2VJbnQoVS5wYWRkaW5nQm90dG9tLDEwKSxlZT1LK0wreitIK1csaz1NYXRoLm1pbihnLm9mZnNldEhlaWdodCo1LGVlKSxaPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGIpLHRlPXBhcnNlSW50KFoucGFkZGluZ1RvcCwxMCksb2U9cGFyc2VJbnQoWi5wYWRkaW5nQm90dG9tLDEwKSxtZT1OLnRvcCtOLmhlaWdodC8yLWVpLGJlPSQtbWUsZ2U9Zy5vZmZzZXRIZWlnaHQvMixfZT1nLm9mZnNldFRvcCtnZSxUZT1LK0wrX2UsY2U9ZWUtVGU7aWYoVGU8PW1lKXtjb25zdCBTZT1CLmxlbmd0aD4wJiZnPT09QltCLmxlbmd0aC0xXS5yZWYuY3VycmVudDt1LnN0eWxlLmJvdHRvbT0iMHB4Ijtjb25zdCBzZT1kLmNsaWVudEhlaWdodC1iLm9mZnNldFRvcC1iLm9mZnNldEhlaWdodCxLZT1NYXRoLm1heChiZSxnZSsoU2U/b2U6MCkrc2UrVyksTGU9VGUrS2U7dS5zdHlsZS5oZWlnaHQ9TGUrInB4In1lbHNle2NvbnN0IFNlPUIubGVuZ3RoPjAmJmc9PT1CWzBdLnJlZi5jdXJyZW50O3Uuc3R5bGUudG9wPSIwcHgiO2NvbnN0IEtlPU1hdGgubWF4KG1lLEsrYi5vZmZzZXRUb3ArKFNlP3RlOjApK2dlKStjZTt1LnN0eWxlLmhlaWdodD1LZSsicHgiLGIuc2Nyb2xsVG9wPVRlLW1lK2Iub2Zmc2V0VG9wfXUuc3R5bGUubWFyZ2luPWAke2VpfXB4IDBgLHUuc3R5bGUubWluSGVpZ2h0PWsrInB4Iix1LnN0eWxlLm1heEhlaWdodD0kKyJweCIscj8uKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT54LmN1cnJlbnQ9ITApfX0sW3ksby50cmlnZ2VyLG8udmFsdWVOb2RlLHUsZCxiLGcsXyxvLmRpcixyXSk7Z24oKCk9PkUoKSxbRV0pO2NvbnN0W2osVF09Qy51c2VTdGF0ZSgpO2duKCgpPT57ZCYmVCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkKS56SW5kZXgpfSxbZF0pO2NvbnN0IFA9Qy51c2VDYWxsYmFjayhOPT57TiYmdy5jdXJyZW50PT09ITAmJihFKCksTz8uKCksdy5jdXJyZW50PSExKX0sW0UsT10pO3JldHVybiBBLmpzeChOMGUse3Njb3BlOm4sY29udGVudFdyYXBwZXI6dSxzaG91bGRFeHBhbmRPblNjcm9sbFJlZjp4LG9uU2Nyb2xsQnV0dG9uQ2hhbmdlOlAsY2hpbGRyZW46QS5qc3goImRpdiIse3JlZjpmLHN0eWxlOntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLHBvc2l0aW9uOiJmaXhlZCIsekluZGV4Omp9LGNoaWxkcmVuOkEuanN4KFFlLmRpdix7Li4uaSxyZWY6bSxzdHlsZTp7Ym94U2l6aW5nOiJib3JkZXItYm94IixtYXhIZWlnaHQ6IjEwMCUiLC4uLmkuc3R5bGV9fSl9KX0pfSk7dkYuZGlzcGxheU5hbWU9TTBlO3ZhciBSMGU9IlNlbGVjdFBvcHBlclBvc2l0aW9uIixGXz1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlU2VsZWN0Om4sYWxpZ246cj0ic3RhcnQiLGNvbGxpc2lvblBhZGRpbmc6aT1laSwuLi5vfT1lLHM9TXYobik7cmV0dXJuIEEuanN4KEIzLHsuLi5zLC4uLm8scmVmOnQsYWxpZ246cixjb2xsaXNpb25QYWRkaW5nOmksc3R5bGU6e2JveFNpemluZzoiYm9yZGVyLWJveCIsLi4uby5zdHlsZSwiLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjoidmFyKC0tcmFkaXgtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pIiwiLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtd2lkdGgiOiJ2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKSIsIi0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgiOiJ2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoKSIsIi0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0IjoidmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpIn19KX0pO0ZfLmRpc3BsYXlOYW1lPVIwZTt2YXJbTjBlLHlFXT1Scyhmbyx7fSksSF89IlNlbGVjdFZpZXdwb3J0IixnRj1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlU2VsZWN0Om4sbm9uY2U6ciwuLi5pfT1lLG89T28oSF8sbikscz15RShIXyxuKSx1PUl0KHQsby5vblZpZXdwb3J0Q2hhbmdlKSxmPUMudXNlUmVmKDApO3JldHVybiBBLmpzeHMoQS5GcmFnbWVudCx7Y2hpbGRyZW46W0EuanN4KCJzdHlsZSIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6IltkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF17c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7fVtkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0ifSxub25jZTpyfSksQS5qc3goanYuU2xvdCx7c2NvcGU6bixjaGlsZHJlbjpBLmpzeChRZS5kaXYseyJkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydCI6IiIscm9sZToicHJlc2VudGF0aW9uIiwuLi5pLHJlZjp1LHN0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXg6MSxvdmVyZmxvdzoiaGlkZGVuIGF1dG8iLC4uLmkuc3R5bGV9LG9uU2Nyb2xsOnplKGkub25TY3JvbGwsZD0+e2NvbnN0IHA9ZC5jdXJyZW50VGFyZ2V0LHtjb250ZW50V3JhcHBlcjptLHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOnl9PXM7aWYoeT8uY3VycmVudCYmbSl7Y29uc3QgeD1NYXRoLmFicyhmLmN1cnJlbnQtcC5zY3JvbGxUb3ApO2lmKHg+MCl7Y29uc3Qgdz13aW5kb3cuaW5uZXJIZWlnaHQtZWkqMixiPXBhcnNlRmxvYXQobS5zdHlsZS5taW5IZWlnaHQpLGc9cGFyc2VGbG9hdChtLnN0eWxlLmhlaWdodCksXz1NYXRoLm1heChiLGcpO2lmKF88dyl7Y29uc3QgTz1fK3gsRT1NYXRoLm1pbih3LE8pLGo9Ty1FO20uc3R5bGUuaGVpZ2h0PUUrInB4IixtLnN0eWxlLmJvdHRvbT09PSIwcHgiJiYocC5zY3JvbGxUb3A9aj4wP2o6MCxtLnN0eWxlLmp1c3RpZnlDb250ZW50PSJmbGV4LWVuZCIpfX19Zi5jdXJyZW50PXAuc2Nyb2xsVG9wfSl9KX0pXX0pfSk7Z0YuZGlzcGxheU5hbWU9SF87dmFyIGJGPSJTZWxlY3RHcm91cCIsW2swZSxEMGVdPVJzKGJGKSxMMGU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpuLC4uLnJ9PWUsaT1pbygpO3JldHVybiBBLmpzeChrMGUse3Njb3BlOm4saWQ6aSxjaGlsZHJlbjpBLmpzeChRZS5kaXYse3JvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbGxlZGJ5IjppLC4uLnIscmVmOnR9KX0pfSk7TDBlLmRpc3BsYXlOYW1lPWJGO3ZhciB4Rj0iU2VsZWN0TGFiZWwiLHZFPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVTZWxlY3Q6biwuLi5yfT1lLGk9RDBlKHhGLG4pO3JldHVybiBBLmpzeChRZS5kaXYse2lkOmkuaWQsLi4ucixyZWY6dH0pfSk7dkUuZGlzcGxheU5hbWU9eEY7dmFyIGd5PSJTZWxlY3RJdGVtIixbSTBlLHdGXT1ScyhneSksZ0U9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpuLHZhbHVlOnIsZGlzYWJsZWQ6aT0hMSx0ZXh0VmFsdWU6bywuLi5zfT1lLHU9X28oZ3ksbiksZj1PbyhneSxuKSxkPXUudmFsdWU9PT1yLFtwLG1dPUMudXNlU3RhdGUobz8/IiIpLFt5LHhdPUMudXNlU3RhdGUoITEpLHc9YXIoRT0+Zi5pdGVtUmVmQ2FsbGJhY2s/LihFLHIsaSkpLGI9SXQodCx3KSxnPWlvKCksXz1DLnVzZVJlZigidG91Y2giKSxPPSgpPT57aXx8KHUub25WYWx1ZUNoYW5nZShyKSx1Lm9uT3BlbkNoYW5nZSghMSkpfTtyZXR1cm4gQS5qc3goSTBlLHtzY29wZTpuLHZhbHVlOnIsZGlzYWJsZWQ6aSx0ZXh0SWQ6Zyxpc1NlbGVjdGVkOmQsb25JdGVtVGV4dENoYW5nZTpDLnVzZUNhbGxiYWNrKEU9PnttKGo9Pmp8fChFPy50ZXh0Q29udGVudD8/IiIpLnRyaW0oKSl9LFtdKSxjaGlsZHJlbjpBLmpzeChqdi5JdGVtU2xvdCx7c2NvcGU6bix2YWx1ZTpyLGRpc2FibGVkOmksdGV4dFZhbHVlOnAsY2hpbGRyZW46QS5qc3goUWUuZGl2LHtyb2xlOiJvcHRpb24iLCJhcmlhLWxhYmVsbGVkYnkiOmcsImRhdGEtaGlnaGxpZ2h0ZWQiOnk/IiI6dm9pZCAwLCJhcmlhLXNlbGVjdGVkIjpkJiZ5LCJkYXRhLXN0YXRlIjpkPyJjaGVja2VkIjoidW5jaGVja2VkIiwiYXJpYS1kaXNhYmxlZCI6aXx8dm9pZCAwLCJkYXRhLWRpc2FibGVkIjppPyIiOnZvaWQgMCx0YWJJbmRleDppP3ZvaWQgMDotMSwuLi5zLHJlZjpiLG9uRm9jdXM6emUocy5vbkZvY3VzLCgpPT54KCEwKSksb25CbHVyOnplKHMub25CbHVyLCgpPT54KCExKSksb25DbGljazp6ZShzLm9uQ2xpY2ssKCk9PntfLmN1cnJlbnQhPT0ibW91c2UiJiZPKCl9KSxvblBvaW50ZXJVcDp6ZShzLm9uUG9pbnRlclVwLCgpPT57Xy5jdXJyZW50PT09Im1vdXNlIiYmTygpfSksb25Qb2ludGVyRG93bjp6ZShzLm9uUG9pbnRlckRvd24sRT0+e18uY3VycmVudD1FLnBvaW50ZXJUeXBlfSksb25Qb2ludGVyTW92ZTp6ZShzLm9uUG9pbnRlck1vdmUsRT0+e18uY3VycmVudD1FLnBvaW50ZXJUeXBlLGk/Zi5vbkl0ZW1MZWF2ZT8uKCk6Xy5jdXJyZW50PT09Im1vdXNlIiYmRS5jdXJyZW50VGFyZ2V0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9KSxvblBvaW50ZXJMZWF2ZTp6ZShzLm9uUG9pbnRlckxlYXZlLEU9PntFLmN1cnJlbnRUYXJnZXQ9PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiZmLm9uSXRlbUxlYXZlPy4oKX0pLG9uS2V5RG93bjp6ZShzLm9uS2V5RG93bixFPT57aXx8RS50YXJnZXQhPT1FLmN1cnJlbnRUYXJnZXR8fGYuc2VhcmNoUmVmPy5jdXJyZW50IT09IiImJkUua2V5PT09IiAifHwoeDBlLmluY2x1ZGVzKEUua2V5KSYmTygpLEUua2V5PT09IiAiJiZFLnByZXZlbnREZWZhdWx0KCkpfSl9KX0pfSl9KTtnRS5kaXNwbGF5TmFtZT1neTt2YXIgZmY9IlNlbGVjdEl0ZW1UZXh0IixTRj1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlU2VsZWN0Om4sY2xhc3NOYW1lOnIsc3R5bGU6aSwuLi5vfT1lLHM9X28oZmYsbiksdT1PbyhmZixuKSxmPXdGKGZmLG4pLGQ9XzBlKGZmLG4pLFtwLG1dPUMudXNlU3RhdGUobnVsbCkseT1hcihPPT51Lml0ZW1UZXh0UmVmQ2FsbGJhY2s/LihPLGYudmFsdWUsZi5kaXNhYmxlZCkpLHg9SXQodCxtLGYub25JdGVtVGV4dENoYW5nZSx5KSx3PXA/LnRleHRDb250ZW50LGI9Qy51c2VNZW1vKCgpPT5BLmpzeCgib3B0aW9uIix7dmFsdWU6Zi52YWx1ZSxkaXNhYmxlZDpmLmRpc2FibGVkLGNoaWxkcmVuOnd9LGYudmFsdWUpLFtmLmRpc2FibGVkLGYudmFsdWUsd10pLHtvbk5hdGl2ZU9wdGlvbkFkZDpnLG9uTmF0aXZlT3B0aW9uUmVtb3ZlOl99PWQ7cmV0dXJuIGduKCgpPT4oZyhiKSwoKT0+XyhiKSksW2csXyxiXSksQS5qc3hzKEEuRnJhZ21lbnQse2NoaWxkcmVuOltBLmpzeChRZS5zcGFuLHtpZDpmLnRleHRJZCwuLi5vLHJlZjp4fSksZi5pc1NlbGVjdGVkJiZzLnZhbHVlTm9kZSYmIXMudmFsdWVOb2RlSGFzQ2hpbGRyZW4mJiFSdihzLnZhbHVlKT9NdS5jcmVhdGVQb3J0YWwoby5jaGlsZHJlbixzLnZhbHVlTm9kZSk6bnVsbF19KX0pO1NGLmRpc3BsYXlOYW1lPWZmO3ZhciBBRj0iU2VsZWN0SXRlbUluZGljYXRvciIsX0Y9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpuLC4uLnJ9PWU7cmV0dXJuIHdGKEFGLG4pLmlzU2VsZWN0ZWQ/QS5qc3goUWUuc3Bhbix7ImFyaWEtaGlkZGVuIjohMCwuLi5yLHJlZjp0fSk6bnVsbH0pO19GLmRpc3BsYXlOYW1lPUFGO3ZhciBHXz0iU2VsZWN0U2Nyb2xsVXBCdXR0b24iLGJFPUMuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0IG49T28oR18sZS5fX3Njb3BlU2VsZWN0KSxyPXlFKEdfLGUuX19zY29wZVNlbGVjdCksW2ksb109Qy51c2VTdGF0ZSghMSkscz1JdCh0LHIub25TY3JvbGxCdXR0b25DaGFuZ2UpO3JldHVybiBnbigoKT0+e2lmKG4udmlld3BvcnQmJm4uaXNQb3NpdGlvbmVkKXtsZXQgdT1mdW5jdGlvbigpe2NvbnN0IGQ9Zi5zY3JvbGxUb3A+MDtvKGQpfTtjb25zdCBmPW4udmlld3BvcnQ7cmV0dXJuIHUoKSxmLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdSksKCk9PmYucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix1KX19LFtuLnZpZXdwb3J0LG4uaXNQb3NpdGlvbmVkXSksaT9BLmpzeChPRix7Li4uZSxyZWY6cyxvbkF1dG9TY3JvbGw6KCk9Pntjb25zdHt2aWV3cG9ydDp1LHNlbGVjdGVkSXRlbTpmfT1uO3UmJmYmJih1LnNjcm9sbFRvcD11LnNjcm9sbFRvcC1mLm9mZnNldEhlaWdodCl9fSk6bnVsbH0pO2JFLmRpc3BsYXlOYW1lPUdfO3ZhciBLXz0iU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiIseEU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3Qgbj1PbyhLXyxlLl9fc2NvcGVTZWxlY3QpLHI9eUUoS18sZS5fX3Njb3BlU2VsZWN0KSxbaSxvXT1DLnVzZVN0YXRlKCExKSxzPUl0KHQsci5vblNjcm9sbEJ1dHRvbkNoYW5nZSk7cmV0dXJuIGduKCgpPT57aWYobi52aWV3cG9ydCYmbi5pc1Bvc2l0aW9uZWQpe2xldCB1PWZ1bmN0aW9uKCl7Y29uc3QgZD1mLnNjcm9sbEhlaWdodC1mLmNsaWVudEhlaWdodCxwPU1hdGguY2VpbChmLnNjcm9sbFRvcCk8ZDtvKHApfTtjb25zdCBmPW4udmlld3BvcnQ7cmV0dXJuIHUoKSxmLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdSksKCk9PmYucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix1KX19LFtuLnZpZXdwb3J0LG4uaXNQb3NpdGlvbmVkXSksaT9BLmpzeChPRix7Li4uZSxyZWY6cyxvbkF1dG9TY3JvbGw6KCk9Pntjb25zdHt2aWV3cG9ydDp1LHNlbGVjdGVkSXRlbTpmfT1uO3UmJmYmJih1LnNjcm9sbFRvcD11LnNjcm9sbFRvcCtmLm9mZnNldEhlaWdodCl9fSk6bnVsbH0pO3hFLmRpc3BsYXlOYW1lPUtfO3ZhciBPRj1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlU2VsZWN0Om4sb25BdXRvU2Nyb2xsOnIsLi4uaX09ZSxvPU9vKCJTZWxlY3RTY3JvbGxCdXR0b24iLG4pLHM9Qy51c2VSZWYobnVsbCksdT1QdihuKSxmPUMudXNlQ2FsbGJhY2soKCk9PntzLmN1cnJlbnQhPT1udWxsJiYod2luZG93LmNsZWFySW50ZXJ2YWwocy5jdXJyZW50KSxzLmN1cnJlbnQ9bnVsbCl9LFtdKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9PigpPT5mKCksW2ZdKSxnbigoKT0+e3UoKS5maW5kKHA9PnAucmVmLmN1cnJlbnQ9PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50KT8ucmVmLmN1cnJlbnQ/LnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCJ9KX0sW3VdKSxBLmpzeChRZS5kaXYseyJhcmlhLWhpZGRlbiI6ITAsLi4uaSxyZWY6dCxzdHlsZTp7ZmxleFNocmluazowLC4uLmkuc3R5bGV9LG9uUG9pbnRlckRvd246emUoaS5vblBvaW50ZXJEb3duLCgpPT57cy5jdXJyZW50PT09bnVsbCYmKHMuY3VycmVudD13aW5kb3cuc2V0SW50ZXJ2YWwociw1MCkpfSksb25Qb2ludGVyTW92ZTp6ZShpLm9uUG9pbnRlck1vdmUsKCk9PntvLm9uSXRlbUxlYXZlPy4oKSxzLmN1cnJlbnQ9PT1udWxsJiYocy5jdXJyZW50PXdpbmRvdy5zZXRJbnRlcnZhbChyLDUwKSl9KSxvblBvaW50ZXJMZWF2ZTp6ZShpLm9uUG9pbnRlckxlYXZlLCgpPT57ZigpfSl9KX0pLCQwZT0iU2VsZWN0U2VwYXJhdG9yIix3RT1DLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlU2VsZWN0Om4sLi4ucn09ZTtyZXR1cm4gQS5qc3goUWUuZGl2LHsiYXJpYS1oaWRkZW4iOiEwLC4uLnIscmVmOnR9KX0pO3dFLmRpc3BsYXlOYW1lPSQwZTt2YXIgVEY9IlNlbGVjdEFycm93IixCMGU9Qy5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVNlbGVjdDpuLC4uLnJ9PWUsaT1NdihuKTtyZXR1cm4gT28oVEYsbikucG9zaXRpb249PT0icG9wcGVyIj9BLmpzeChWMyx7Li4uaSwuLi5yLHJlZjp0fSk6bnVsbH0pO0IwZS5kaXNwbGF5TmFtZT1URjt2YXIgRUY9IlNlbGVjdEJ1YmJsZUlucHV0IixDRj1DLmZvcndhcmRSZWYoKHtfX3Njb3BlU2VsZWN0OmUsLi4udH0sbik9Pntjb25zdCByPV9vKEVGLGUpLHt2YWx1ZTppLG9uVmFsdWVDaGFuZ2U6byxyZXF1aXJlZDpzLGRpc2FibGVkOnUsbmFtZTpmLGF1dG9Db21wbGV0ZTpkLGZvcm06cH09cix7bmF0aXZlT3B0aW9uczptLG5hdGl2ZVNlbGVjdEtleTp5fT1yLHg9Qy51c2VSZWYobnVsbCksdz1JdChuLHgpLGI9aT8/IiIsZz1nMGUoYiksXz1BcnJheS5mcm9tKG0pLnNvbWUoTz0+KE8ucHJvcHMudmFsdWU/PyIiKT09PSIiKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9Pntjb25zdCBPPXguY3VycmVudDtpZighTylyZXR1cm47Y29uc3QgRT13aW5kb3cuSFRNTFNlbGVjdEVsZW1lbnQucHJvdG90eXBlLFQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFLCJ2YWx1ZSIpLnNldDtpZihnIT09YiYmVCl7Y29uc3QgUD1uZXcgRXZlbnQoImNoYW5nZSIse2J1YmJsZXM6ITB9KTtULmNhbGwoTyxiKSxPLmRpc3BhdGNoRXZlbnQoUCl9fSxbZyxiXSksQS5qc3hzKFFlLnNlbGVjdCx7ImFyaWEtaGlkZGVuIjohMCxyZXF1aXJlZDpzLHRhYkluZGV4Oi0xLG5hbWU6ZixhdXRvQ29tcGxldGU6ZCxkaXNhYmxlZDp1LGZvcm06cCxvbkNoYW5nZTpPPT5vKE8udGFyZ2V0LnZhbHVlKSwuLi50LHN0eWxlOnsuLi5qNCwuLi50LnN0eWxlfSxyZWY6dyxkZWZhdWx0VmFsdWU6YixjaGlsZHJlbjpbUnYoaSkmJiFfP0EuanN4KCJvcHRpb24iLHt2YWx1ZToiIn0pOm51bGwsQXJyYXkuZnJvbShtKV19LHkpfSk7Q0YuZGlzcGxheU5hbWU9RUY7ZnVuY3Rpb24gVjBlKGUpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIn1mdW5jdGlvbiBSdihlKXtyZXR1cm4gZT09PSIifHxlPT09dm9pZCAwfWZ1bmN0aW9uIGpGKGUpe2NvbnN0IHQ9YXIoZSksbj1DLnVzZVJlZigiIikscj1DLnVzZVJlZigwKSxpPUMudXNlQ2FsbGJhY2socz0+e2NvbnN0IHU9bi5jdXJyZW50K3M7dCh1KSwoZnVuY3Rpb24gZihkKXtuLmN1cnJlbnQ9ZCx3aW5kb3cuY2xlYXJUaW1lb3V0KHIuY3VycmVudCksZCE9PSIiJiYoci5jdXJyZW50PXdpbmRvdy5zZXRUaW1lb3V0KCgpPT5mKCIiKSwxZTMpKX0pKHUpfSxbdF0pLG89Qy51c2VDYWxsYmFjaygoKT0+e24uY3VycmVudD0iIix3aW5kb3cuY2xlYXJUaW1lb3V0KHIuY3VycmVudCl9LFtdKTtyZXR1cm4gQy51c2VFZmZlY3QoKCk9PigpPT53aW5kb3cuY2xlYXJUaW1lb3V0KHIuY3VycmVudCksW10pLFtuLGksb119ZnVuY3Rpb24gUEYoZSx0LG4pe2NvbnN0IGk9dC5sZW5ndGg+MSYmQXJyYXkuZnJvbSh0KS5ldmVyeShkPT5kPT09dFswXSk/dFswXTp0LG89bj9lLmluZGV4T2Yobik6LTE7bGV0IHM9cTBlKGUsTWF0aC5tYXgobywwKSk7aS5sZW5ndGg9PT0xJiYocz1zLmZpbHRlcihkPT5kIT09bikpO2NvbnN0IGY9cy5maW5kKGQ9PmQudGV4dFZhbHVlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChpLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gZiE9PW4/Zjp2b2lkIDB9ZnVuY3Rpb24gcTBlKGUsdCl7cmV0dXJuIGUubWFwKChuLHIpPT5lWyh0K3IpJWUubGVuZ3RoXSl9Y29uc3QgTUY9c0YsUkY9Y0YsU0U9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsY2hpbGRyZW46dCwuLi5ufSxyKT0+QS5qc3hzKHBFLHtyZWY6cixjbGFzc05hbWU6b3QoImZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy10cmFuc3BhcmVudCBweC0zIHB5LTIgdGV4dC1zbSBzaGFkb3ctc20gcmluZy1vZmZzZXQtYmFja2dyb3VuZCBkYXRhLVtwbGFjZWhvbGRlcl06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1yaW5nIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwIFsmPnNwYW5dOmxpbmUtY2xhbXAtMSIsZSksLi4ubixjaGlsZHJlbjpbdCxBLmpzeChmRix7YXNDaGlsZDohMCxjaGlsZHJlbjpBLmpzeChoTyx7Y2xhc3NOYW1lOiJoLTQgdy00IG9wYWNpdHktNTAifSl9KV19KSk7U0UuZGlzcGxheU5hbWU9cEUuZGlzcGxheU5hbWU7Y29uc3QgTkY9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KGJFLHtyZWY6bixjbGFzc05hbWU6b3QoImZsZXggY3Vyc29yLWRlZmF1bHQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEiLGUpLC4uLnQsY2hpbGRyZW46QS5qc3godUsse2NsYXNzTmFtZToiaC00IHctNCJ9KX0pKTtORi5kaXNwbGF5TmFtZT1iRS5kaXNwbGF5TmFtZTtjb25zdCBrRj1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3goeEUse3JlZjpuLGNsYXNzTmFtZTpvdCgiZmxleCBjdXJzb3ItZGVmYXVsdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktMSIsZSksLi4udCxjaGlsZHJlbjpBLmpzeChoTyx7Y2xhc3NOYW1lOiJoLTQgdy00In0pfSkpO2tGLmRpc3BsYXlOYW1lPXhFLmRpc3BsYXlOYW1lO2NvbnN0IEFFPUMuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLGNoaWxkcmVuOnQscG9zaXRpb246bj0icG9wcGVyIiwuLi5yfSxpKT0+QS5qc3goaEYse2NoaWxkcmVuOkEuanN4cyhtRSx7cmVmOmksY2xhc3NOYW1lOm90KCJyZWxhdGl2ZSB6LTUwIG1heC1oLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIG1pbi13LVs4cmVtXSBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYmctcG9wb3ZlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBzaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yIG9yaWdpbi1bLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXSIsbj09PSJwb3BwZXIiJiYiZGF0YS1bc2lkZT1ib3R0b21dOnRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTotdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTp0cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTotdHJhbnNsYXRlLXktMSIsZSkscG9zaXRpb246biwuLi5yLGNoaWxkcmVuOltBLmpzeChORix7fSksQS5qc3goZ0Yse2NsYXNzTmFtZTpvdCgicC0xIixuPT09InBvcHBlciImJiJoLVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpXSB3LWZ1bGwgbWluLXctW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoKV0iKSxjaGlsZHJlbjp0fSksQS5qc3goa0Yse30pXX0pfSkpO0FFLmRpc3BsYXlOYW1lPW1FLmRpc3BsYXlOYW1lO2NvbnN0IFUwZT1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+QS5qc3godkUse3JlZjpuLGNsYXNzTmFtZTpvdCgicHgtMiBweS0xLjUgdGV4dC1zbSBmb250LXNlbWlib2xkIixlKSwuLi50fSkpO1UwZS5kaXNwbGF5TmFtZT12RS5kaXNwbGF5TmFtZTtjb25zdCB2ZD1DLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSxjaGlsZHJlbjp0LC4uLm59LHIpPT5BLmpzeHMoZ0Use3JlZjpyLGNsYXNzTmFtZTpvdCgicmVsYXRpdmUgZmxleCB3LWZ1bGwgY3Vyc29yLWRlZmF1bHQgc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIHJvdW5kZWQtc20gcHktMS41IHBsLTIgcHItOCB0ZXh0LXNtIG91dGxpbmUtbm9uZSBmb2N1czpiZy1hY2NlbnQgZm9jdXM6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06b3BhY2l0eS01MCIsZSksLi4ubixjaGlsZHJlbjpbQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImFic29sdXRlIHJpZ2h0LTIgZmxleCBoLTMuNSB3LTMuNSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiLGNoaWxkcmVuOkEuanN4KF9GLHtjaGlsZHJlbjpBLmpzeChhZix7Y2xhc3NOYW1lOiJoLTQgdy00In0pfSl9KSxBLmpzeChTRix7Y2hpbGRyZW46dH0pXX0pKTt2ZC5kaXNwbGF5TmFtZT1nRS5kaXNwbGF5TmFtZTtjb25zdCB6MGU9Qy5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PkEuanN4KHdFLHtyZWY6bixjbGFzc05hbWU6b3QoIi1teC0xIG15LTEgaC1weCBiZy1tdXRlZCIsZSksLi4udH0pKTt6MGUuZGlzcGxheU5hbWU9d0UuZGlzcGxheU5hbWU7dmFyIHFkPWU9PmUudHlwZT09PSJjaGVja2JveCIsdG89ZT0+ZSBpbnN0YW5jZW9mIERhdGUsTm49ZT0+ZT09bnVsbDtjb25zdCBfRT1lPT50eXBlb2YgZT09Im9iamVjdCI7dmFyIFd0PWU9PiFObihlKSYmIUFycmF5LmlzQXJyYXkoZSkmJl9FKGUpJiYhdG8oZSksRjBlPWU9Pld0KGUpJiZlLnRhcmdldD9xZChlLnRhcmdldCk/ZS50YXJnZXQuY2hlY2tlZDplLnRhcmdldC52YWx1ZTplLEgwZT0oZSx0KT0+dC5zcGxpdCgiLiIpLnNvbWUoKG4scixpKT0+IWlzTmFOKE51bWJlcihuKSkmJmUuaGFzKGkuc2xpY2UoMCxyKS5qb2luKCIuIikpKSxERj1lPT57Y29uc3QgdD1lLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtyZXR1cm4gV3QodCkmJnQuaGFzT3duUHJvcGVydHkoImlzUHJvdG90eXBlT2YiKX0sTnY9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuSFRNTEVsZW1lbnQ8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiO2Z1bmN0aW9uIFp0KGUpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShlKTtjb25zdCB0PXR5cGVvZiBGaWxlTGlzdDwidSImJmUgaW5zdGFuY2VvZiBGaWxlTGlzdDtpZihOdiYmKGUgaW5zdGFuY2VvZiBCbG9ifHx0KSlyZXR1cm4gZTtjb25zdCBuPUFycmF5LmlzQXJyYXkoZSk7aWYoIW4mJiEoV3QoZSkmJkRGKGUpKSlyZXR1cm4gZTtjb25zdCByPW4/W106T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpO2Zvcihjb25zdCBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJihyW2ldPVp0KGVbaV0pKTtyZXR1cm4gcn1jb25zdCBUbD17QkxVUjoiYmx1ciIsRk9DVVNfT1VUOiJmb2N1c291dCIsU1VCTUlUOiJzdWJtaXQiLFRSSUdHRVI6InRyaWdnZXIiLFZBTElEOiJ2YWxpZCJ9LG9pPXtvbkJsdXI6Im9uQmx1ciIsb25DaGFuZ2U6Im9uQ2hhbmdlIixvblN1Ym1pdDoib25TdWJtaXQiLG9uVG91Y2hlZDoib25Ub3VjaGVkIixhbGw6ImFsbCJ9LHRpPXttYXg6Im1heCIsbWluOiJtaW4iLG1heExlbmd0aDoibWF4TGVuZ3RoIixtaW5MZW5ndGg6Im1pbkxlbmd0aCIscGF0dGVybjoicGF0dGVybiIscmVxdWlyZWQ6InJlcXVpcmVkIix2YWxpZGF0ZToidmFsaWRhdGUifSxMRj0icm9vdCIsT0U9WyJfX3Byb3RvX18iLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSJdLEcwZT0vXlx3KiQvO3ZhciBVZD1lPT5HMGUudGVzdChlKSwkdD1lPT5lPT09dm9pZCAwO2NvbnN0IEswZT0vWy5bXF0nIl0vO3ZhciBrdj1lPT5lLnNwbGl0KEswZSkuZmlsdGVyKEJvb2xlYW4pLENlPShlLHQsbik9PntpZighdHx8IVd0KGUpKXJldHVybiBuO2NvbnN0IHI9VWQodCk/W3RdOmt2KHQpO2lmKHIuc29tZShvPT5PRS5pbmNsdWRlcyhvKSkpcmV0dXJuIG47Y29uc3QgaT1yLnJlZHVjZSgobyxzKT0+Tm4obyk/dm9pZCAwOm9bc10sZSk7cmV0dXJuICR0KGkpfHxpPT09ZT8kdChlW3RdKT9uOmVbdF06aX0sZ2k9ZT0+dHlwZW9mIGU9PSJib29sZWFuIiwkcj1lPT50eXBlb2YgZT09ImZ1bmN0aW9uIixBdD0oZSx0LG4pPT57bGV0IHI9LTE7Y29uc3QgaT1VZCh0KT9bdF06a3YodCksbz1pLmxlbmd0aCxzPW8tMTtmb3IoOysrcjxvOyl7Y29uc3QgdT1pW3JdO2xldCBmPW47aWYociE9PXMpe2NvbnN0IGQ9ZVt1XTtmPVd0KGQpfHxBcnJheS5pc0FycmF5KGQpP2Q6aXNOYU4oK2lbcisxXSk/e306W119aWYoT0UuaW5jbHVkZXModSkpcmV0dXJuO2VbdV09ZixlPWVbdV19fTtjb25zdCBXMGU9Ri5jcmVhdGVDb250ZXh0KG51bGwpO1cwZS5kaXNwbGF5TmFtZT0iSG9va0Zvcm1Db250cm9sQ29udGV4dCI7dmFyIFkwZT0oZSx0LG4scj0hMCk9Pntjb25zdCBpPXt9O2Zvcihjb25zdCBvIGluIGUpT2JqZWN0LmRlZmluZVByb3BlcnR5KGksbyx7Z2V0OigpPT57Y29uc3Qgcz1vO3JldHVybiB0Ll9wcm94eUZvcm1TdGF0ZVtzXSE9PW9pLmFsbCYmKHQuX3Byb3h5Rm9ybVN0YXRlW3NdPSFyfHxvaS5hbGwpLGVbc119fSk7cmV0dXJuIGl9O2NvbnN0IFgwZT1Odj9GLnVzZUxheW91dEVmZmVjdDpGLnVzZUVmZmVjdDt2YXIga249ZT0+dHlwZW9mIGU9PSJzdHJpbmciLFowZT0oZSx0LG4scixpKT0+a24oZSk/KHImJnQud2F0Y2guYWRkKGUpLENlKG4sZSxpKSk6QXJyYXkuaXNBcnJheShlKT9lLm1hcChvPT4ociYmdC53YXRjaC5hZGQobyksQ2UobixvKSkpOihyJiYodC53YXRjaEFsbD0hMCksbiksV189ZT0+Tm4oZSl8fCFfRShlKTtjb25zdCBVQj0oZSx0KT0+dC5sZW5ndGg9PT0wJiYhQXJyYXkuaXNBcnJheShlKSYmIURGKGUpO2Z1bmN0aW9uIGJpKGUsdCxuPW5ldyBXZWFrTWFwKXtpZihlPT09dClyZXR1cm4hMDtpZihXXyhlKXx8V18odCkpcmV0dXJuIE9iamVjdC5pcyhlLHQpO2lmKHRvKGUpJiZ0byh0KSlyZXR1cm4gT2JqZWN0LmlzKGUuZ2V0VGltZSgpLHQuZ2V0VGltZSgpKTtjb25zdCByPU9iamVjdC5rZXlzKGUpLGk9T2JqZWN0LmtleXModCk7aWYoci5sZW5ndGghPT1pLmxlbmd0aClyZXR1cm4hMTtpZihVQihlLHIpfHxVQih0LGkpKXJldHVybiBPYmplY3QuaXMoZSx0KTtpZighci5sZW5ndGgmJkFycmF5LmlzQXJyYXkoZSkhPT1BcnJheS5pc0FycmF5KHQpKXJldHVybiExO2NvbnN0IG89bi5nZXQoZSk7aWYobyYmby5oYXModCkpcmV0dXJuITA7aWYobylvLmFkZCh0KTtlbHNle2NvbnN0IHM9bmV3IFdlYWtTZXQ7cy5hZGQodCksbi5zZXQoZSxzKX1mb3IoY29uc3QgcyBvZiByKXtjb25zdCB1PWVbc107aWYoIShzIGluIHQpKXJldHVybiExO2lmKHMhPT0icmVmIil7Y29uc3QgZj10W3NdO2lmKHRvKHUpJiZ0byhmKXx8KFd0KHUpfHxBcnJheS5pc0FycmF5KHUpKSYmKFd0KGYpfHxBcnJheS5pc0FycmF5KGYpKT8hYmkodSxmLG4pOiFPYmplY3QuaXModSxmKSlyZXR1cm4hMX19cmV0dXJuITB9dmFyIE1wPWU9Pih7aXNPblN1Ym1pdDohZXx8ZT09PW9pLm9uU3VibWl0LGlzT25CbHVyOmU9PT1vaS5vbkJsdXIsaXNPbkNoYW5nZTplPT09b2kub25DaGFuZ2UsaXNPbkFsbDplPT09b2kuYWxsLGlzT25Ub3VjaDplPT09b2kub25Ub3VjaGVkfSksTVM9KGUsdCxuKT0+e2lmKG4pcmV0dXJuITE7aWYodC53YXRjaEFsbHx8dC53YXRjaC5oYXMoZSkpcmV0dXJuITA7Zm9yKGNvbnN0IHIgb2YgdC53YXRjaClpZihlLnN0YXJ0c1dpdGgocikmJmUuY2hhckF0KHIubGVuZ3RoKT09PSIuIilyZXR1cm4hMDtyZXR1cm4hMX07Y29uc3QgVGY9KGUsdCxuLHIpPT57Zm9yKGNvbnN0IGkgb2Ygbnx8T2JqZWN0LmtleXMoZSkpe2NvbnN0IG89Q2UoZSxpKTtpZihvKXtjb25zdHtfZjpzLC4uLnV9PW87aWYocyl7aWYocy5yZWZzJiZzLnJlZnNbMF0mJnQocy5yZWZzWzBdLGkpJiYhcilyZXR1cm4hMDtpZihzLnJlZiYmdChzLnJlZixzLm5hbWUpJiYhcilyZXR1cm4hMDtpZihUZih1LHQpKWJyZWFrfWVsc2UgaWYoV3QodSkmJlRmKHUsdCkpYnJlYWt9fX07dmFyIHpCPShlLHQsbik9Pntjb25zdCByPUNlKGUsbiksaT1BcnJheS5pc0FycmF5KHIpP3I6W107cmV0dXJuIEF0KGksTEYsdFtuXSksQXQoZSxuLGkpLGV9LFBuPWU9Pld0KGUpJiYhT2JqZWN0LmtleXMoZSkubGVuZ3RoLFRFPWU9PmUudHlwZT09PSJmaWxlIixieT1lPT57aWYoIU52KXJldHVybiExO2NvbnN0IHQ9ZT9lLm93bmVyRG9jdW1lbnQ6MDtyZXR1cm4gZSBpbnN0YW5jZW9mKHQmJnQuZGVmYXVsdFZpZXc/dC5kZWZhdWx0Vmlldy5IVE1MRWxlbWVudDpIVE1MRWxlbWVudCl9LEVFPWU9PmUudHlwZT09PSJyYWRpbyIseHk9ZT0+ZSBpbnN0YW5jZW9mIFJlZ0V4cCxJRj0oZSx0LG4scixpKT0+dD97Li4ubltlXSx0eXBlczp7Li4ubltlXSYmbltlXS50eXBlcz9uW2VdLnR5cGVzOnt9LFtyXTppfHwhMH19Ont9O2NvbnN0IEZCPXt2YWx1ZTohMSxpc1ZhbGlkOiExfSxIQj17dmFsdWU6ITAsaXNWYWxpZDohMH07dmFyICRGPWU9PntpZihBcnJheS5pc0FycmF5KGUpKXtpZihlLmxlbmd0aD4xKXtjb25zdCB0PWUuZmlsdGVyKG49Pm4mJm4uY2hlY2tlZCYmIW4uZGlzYWJsZWQpLm1hcChuPT5uLnZhbHVlKTtyZXR1cm57dmFsdWU6dCxpc1ZhbGlkOiEhdC5sZW5ndGh9fXJldHVybiBlWzBdLmNoZWNrZWQmJiFlWzBdLmRpc2FibGVkP2VbMF0uYXR0cmlidXRlcyYmISR0KGVbMF0uYXR0cmlidXRlcy52YWx1ZSk/JHQoZVswXS52YWx1ZSl8fGVbMF0udmFsdWU9PT0iIj9IQjp7dmFsdWU6ZVswXS52YWx1ZSxpc1ZhbGlkOiEwfTpIQjpGQn1yZXR1cm4gRkJ9O2NvbnN0IEdCPXtpc1ZhbGlkOiExLHZhbHVlOm51bGx9O3ZhciBCRj1lPT5BcnJheS5pc0FycmF5KGUpP2UucmVkdWNlKCh0LG4pPT5uJiZuLmNoZWNrZWQmJiFuLmRpc2FibGVkP3tpc1ZhbGlkOiEwLHZhbHVlOm4udmFsdWV9OnQsR0IpOkdCO2Z1bmN0aW9uIEtCKGUsdCxuPSJ2YWxpZGF0ZSIpe2lmKGtuKGUpfHxBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KGtuKXx8Z2koZSkmJiFlKXJldHVybnt0eXBlOm4sbWVzc2FnZTprbihlKT9lOiIiLHJlZjp0fX12YXIgRWw9ZT0+V3QoZSkmJiF4eShlKT9lOnt2YWx1ZTplLG1lc3NhZ2U6IiJ9LFdCPWFzeW5jKGUsdCxuLHIsaSxvKT0+e2NvbnN0e3JlZjpzLHJlZnM6dSxyZXF1aXJlZDpmLG1heExlbmd0aDpkLG1pbkxlbmd0aDpwLG1pbjptLG1heDp5LHBhdHRlcm46eCx2YWxpZGF0ZTp3LG5hbWU6Yix2YWx1ZUFzTnVtYmVyOmcsbW91bnQ6X309ZS5fZixPPUNlKG4sYik7aWYoIV98fHQuaGFzKGIpKXJldHVybnt9O2NvbnN0IEU9dT91WzBdOnMsaj0kPT57aWYoaSYmRS5yZXBvcnRWYWxpZGl0eSl7Y29uc3Qgej1naSgkKT8iIjokfHwiIjt1P3UuZm9yRWFjaChVPT5VLnNldEN1c3RvbVZhbGlkaXR5KHopKTpFLnNldEN1c3RvbVZhbGlkaXR5KHopLEUucmVwb3J0VmFsaWRpdHkoKX19LFQ9e30sUD1FRShzKSxOPXFkKHMpLFI9UHx8TixJPShnfHxURShzKSkmJiR0KHMudmFsdWUpJiYkdChPKXx8YnkocykmJnMudmFsdWU9PT0iInx8Tz09PSIifHxBcnJheS5pc0FycmF5KE8pJiYhTy5sZW5ndGgsVj1JRi5iaW5kKG51bGwsYixyLFQpLEI9KCQseixVLEs9dGkubWF4TGVuZ3RoLEw9dGkubWluTGVuZ3RoKT0+e2NvbnN0IFc9JD96OlU7VFtiXT17dHlwZTokP0s6TCxtZXNzYWdlOlcscmVmOnMsLi4uVigkP0s6TCxXKX19O2lmKG8/IUFycmF5LmlzQXJyYXkoTyl8fCFPLmxlbmd0aDpmJiYoIVImJihJfHxObihPKSl8fGdpKE8pJiYhT3x8TiYmISRGKHUpLmlzVmFsaWR8fFAmJiFCRih1KS5pc1ZhbGlkKSl7Y29uc3R7dmFsdWU6JCxtZXNzYWdlOnp9PWtuKGYpP3t2YWx1ZTohIWYsbWVzc2FnZTpmfTpFbChmKTtpZigkJiYoVFtiXT17dHlwZTp0aS5yZXF1aXJlZCxtZXNzYWdlOnoscmVmOkUsLi4uVih0aS5yZXF1aXJlZCx6KX0sIXIpKXJldHVybiBqKHopLFR9aWYoIUkmJighTm4obSl8fCFObih5KSkpe2xldCAkLHo7Y29uc3QgVT1FbCh5KSxLPUVsKG0pO2lmKCFObihPKSYmIWlzTmFOKE8pKXtjb25zdCBMPXMudmFsdWVBc051bWJlcnx8TyYmK087Tm4oVS52YWx1ZSl8fCgkPUw+VS52YWx1ZSksTm4oSy52YWx1ZSl8fCh6PUw8Sy52YWx1ZSl9ZWxzZXtjb25zdCBMPXMudmFsdWVBc0RhdGV8fG5ldyBEYXRlKE8pLFc9az0+bmV3IERhdGUobmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKSsiICIrayksSD1zLnR5cGU9PSJ0aW1lIixlZT1zLnR5cGU9PSJ3ZWVrIjtrbihVLnZhbHVlKSYmTyYmKCQ9SD9XKE8pPlcoVS52YWx1ZSk6ZWU/Tz5VLnZhbHVlOkw+bmV3IERhdGUoVS52YWx1ZSkpLGtuKEsudmFsdWUpJiZPJiYoej1IP1coTyk8VyhLLnZhbHVlKTplZT9PPEsudmFsdWU6TDxuZXcgRGF0ZShLLnZhbHVlKSl9aWYoKCR8fHopJiYoQighISQsVS5tZXNzYWdlLEsubWVzc2FnZSx0aS5tYXgsdGkubWluKSwhcikpcmV0dXJuIGooVFtiXS5tZXNzYWdlKSxUfWlmKChkfHxwKSYmIUkmJihrbihPKXx8byYmQXJyYXkuaXNBcnJheShPKSkpe2NvbnN0ICQ9RWwoZCksej1FbChwKSxVPSFObigkLnZhbHVlKSYmTy5sZW5ndGg+KyQudmFsdWUsSz0hTm4oei52YWx1ZSkmJk8ubGVuZ3RoPCt6LnZhbHVlO2lmKChVfHxLKSYmKEIoVSwkLm1lc3NhZ2Usei5tZXNzYWdlKSwhcikpcmV0dXJuIGooVFtiXS5tZXNzYWdlKSxUfWlmKHgmJiFJJiZrbihPKSl7Y29uc3R7dmFsdWU6JCxtZXNzYWdlOnp9PUVsKHgpO2lmKHh5KCQpJiYhTy5tYXRjaCgkKSYmKFRbYl09e3R5cGU6dGkucGF0dGVybixtZXNzYWdlOnoscmVmOnMsLi4uVih0aS5wYXR0ZXJuLHopfSwhcikpcmV0dXJuIGooeiksVH1pZih3KXtpZigkcih3KSl7Y29uc3QgJD1hd2FpdCB3KE8sbiksej1LQigkLEUpO2lmKHomJihUW2JdPXsuLi56LC4uLlYodGkudmFsaWRhdGUsei5tZXNzYWdlKX0sIXIpKXJldHVybiBqKHoubWVzc2FnZSksVH1lbHNlIGlmKFd0KHcpKXtsZXQgJD17fTtmb3IoY29uc3QgeiBpbiB3KXtpZighUG4oJCkmJiFyKWJyZWFrO2NvbnN0IFU9S0IoYXdhaXQgd1t6XShPLG4pLEUseik7VSYmKCQ9ey4uLlUsLi4uVih6LFUubWVzc2FnZSl9LGooVS5tZXNzYWdlKSxyJiYoVFtiXT0kKSl9aWYoIVBuKCQpJiYoVFtiXT17cmVmOkUsLi4uJH0sIXIpKXJldHVybiBUfX1yZXR1cm4gaighMCksVH0sWnA9ZT0+QXJyYXkuaXNBcnJheShlKT9lOltlXSxWRj1lPT5BcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKEJvb2xlYW4pOltdO2Z1bmN0aW9uIFEwZShlLHQpe2NvbnN0IG49dC5zbGljZSgwLC0xKS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8bjspe2lmKE5uKGUpKXtlPXZvaWQgMDticmVha31lPWVbdFtyXV0scisrfXJldHVybiBlfWZ1bmN0aW9uIEowZShlKXtmb3IoY29uc3QgdCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkodCkmJiEkdChlW3RdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBRdChlLHQpe2lmKGtuKHQpJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSlyZXR1cm4gZGVsZXRlIGVbdF0sZTtjb25zdCBuPUFycmF5LmlzQXJyYXkodCk/dDpVZCh0KT9bdF06a3YodCk7aWYobi5zb21lKHM9Pk9FLmluY2x1ZGVzKFN0cmluZyhzKSkpKXJldHVybiBlO2NvbnN0IHI9bi5sZW5ndGg9PT0xP2U6UTBlKGUsbiksaT1uLmxlbmd0aC0xLG89bltpXTtyZXR1cm4gciYmZGVsZXRlIHJbb10saSE9PTAmJihXdChyKSYmUG4ocil8fEFycmF5LmlzQXJyYXkocikmJkowZShyKSkmJlF0KGUsbi5zbGljZSgwLC0xKSksZX1jb25zdCBxRj1lPT57Y29uc3QgdD17fTtmb3IoY29uc3QgbiBvZiBPYmplY3Qua2V5cyhlKSlpZihfRShlW25dKSYmZVtuXSE9PW51bGwmJiF0byhlW25dKSl7Y29uc3Qgcj1xRihlW25dKTtmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhyKSl0W2Ake259LiR7aX1gXT1yW2ldfWVsc2UgdFtuXT1lW25dO3JldHVybiB0fSxleGU9Ri5jcmVhdGVDb250ZXh0KG51bGwpO2V4ZS5kaXNwbGF5TmFtZT0iSG9va0Zvcm1Db250ZXh0Ijt2YXIgWUI9KCk9PntsZXQgZT1bXTtyZXR1cm57Z2V0IG9ic2VydmVycygpe3JldHVybiBlfSxuZXh0Omk9Pntmb3IoY29uc3QgbyBvZiBlKW8ubmV4dCYmby5uZXh0KGkpfSxzdWJzY3JpYmU6aT0+KGUucHVzaChpKSx7dW5zdWJzY3JpYmU6KCk9PntlPWUuZmlsdGVyKG89Pm8hPT1pKX19KSx1bnN1YnNjcmliZTooKT0+e2U9W119fX07ZnVuY3Rpb24gVUYoZSx0KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShyKSl7Y29uc3QgaT1lW3JdLG89dFtyXTtpZihpJiZXdChpKSYmbyl7Y29uc3Qgcz1VRihpLG8pO1d0KHMpJiYobltyXT1zKX1lbHNlIGVbcl0mJihuW3JdPW8pfXJldHVybiBufXZhciB6Rj1lPT5lLnR5cGU9PT0ic2VsZWN0LW11bHRpcGxlIix0eGU9ZT0+RUUoZSl8fHFkKGUpLFJTPWU9PmJ5KGUpJiZlLmlzQ29ubmVjdGVkLG54ZT1lPT57Zm9yKGNvbnN0IHQgaW4gZSlpZigkcihlW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX07ZnVuY3Rpb24gRkYoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fFd0KGUpJiYhbnhlKGUpfWZ1bmN0aW9uIEhGKGUpe3JldHVybiEhKGUmJiJfZiJpbiBlKX1mdW5jdGlvbiBHRihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8hZS5zb21lKHQ9PiEkdCh0KSk6IU9iamVjdC5rZXlzKGUpLmxlbmd0aH1mdW5jdGlvbiBZXyhlLHQpe0FycmF5LmlzQXJyYXkoZSk/ZVt0XT12b2lkIDA6ZGVsZXRlIGVbdF19ZnVuY3Rpb24gWF8oZSx0PXt9LG4pe2Zvcihjb25zdCByIGluIGUpe2NvbnN0IGk9ZVtyXSxvPW4mJm5bcl07RkYoaSkmJighQXJyYXkuaXNBcnJheShpKXx8IUhGKG8pKT8odFtyXT1BcnJheS5pc0FycmF5KGkpP1tdOnt9LFhfKGksdFtyXSxvKSxHRih0W3JdKSYmWV8odCxyKSk6JHQoaSl8fCh0W3JdPSEwKX1yZXR1cm4gdH1mdW5jdGlvbiBucyhlLHQsbixyKXtufHwobj1YXyh0LHt9LHIpKTtmb3IoY29uc3QgaSBpbiBlKXtjb25zdCBvPWVbaV0scz1yJiZyW2ldO0ZGKG8pJiYoIUFycmF5LmlzQXJyYXkobyl8fCFIRihzKSk/KCR0KHQpfHxXXyhuW2ldKT9uW2ldPVhfKG8sQXJyYXkuaXNBcnJheShvKT9bXTp7fSxzKTpucyhvLE5uKHQpP3t9OnRbaV0sbltpXSxzKSxHRihuW2ldKSYmWV8obixpKSk6Ymkobyx0W2ldKT9ZXyhuLGkpOm5baV09ITB9cmV0dXJuIG59dmFyIEtGPShlLHt2YWx1ZUFzTnVtYmVyOnQsdmFsdWVBc0RhdGU6bixzZXRWYWx1ZUFzOnJ9KT0+JHQoZSk/ZTp0P2U9PT0iIj9OYU46ZSYmK2U6biYma24oZSk/bmV3IERhdGUoZSk6cj9yKGUpOmU7ZnVuY3Rpb24gWEIoZSl7Y29uc3QgdD1lLnJlZjtyZXR1cm4gVEUodCk/dC5maWxlczpFRSh0KT9CRihlLnJlZnMpLnZhbHVlOnpGKHQpP1suLi50LnNlbGVjdGVkT3B0aW9uc10ubWFwKCh7dmFsdWU6bn0pPT5uKTpxZCh0KT8kRihlLnJlZnMpLnZhbHVlOktGKCR0KHQudmFsdWUpP2UucmVmLnZhbHVlOnQudmFsdWUsZSl9dmFyIHJ4ZT0oZSx0LG4scik9Pntjb25zdCBpPXt9O2Zvcihjb25zdCBvIG9mIGUpe2NvbnN0IHM9Q2UodCxvKTtzJiZBdChpLG8scy5fZil9cmV0dXJue2NyaXRlcmlhTW9kZTpuLG5hbWVzOlsuLi5lXSxmaWVsZHM6aSxzaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uOnJ9fSxyZj1lPT4kdChlKT9lOnh5KGUpP2Uuc291cmNlOld0KGUpP3h5KGUudmFsdWUpP2UudmFsdWUuc291cmNlOmUudmFsdWU6ZTtjb25zdCBaQj0iQXN5bmNGdW5jdGlvbiI7dmFyIGl4ZT1lPT57aWYoIWV8fCFlLnZhbGlkYXRlKXJldHVybiExO2lmKCRyKGUudmFsaWRhdGUpKXJldHVybiBlLnZhbGlkYXRlLmNvbnN0cnVjdG9yLm5hbWU9PT1aQjtpZihXdChlLnZhbGlkYXRlKSl7Zm9yKGNvbnN0IHQgaW4gZS52YWxpZGF0ZSlpZihlLnZhbGlkYXRlW3RdLmNvbnN0cnVjdG9yLm5hbWU9PT1aQilyZXR1cm4hMH1yZXR1cm4hMX0sYXhlPWU9PmUubW91bnQmJihlLnJlcXVpcmVkfHxlLm1pbnx8ZS5tYXh8fGUubWF4TGVuZ3RofHxlLm1pbkxlbmd0aHx8ZS5wYXR0ZXJufHxlLnZhbGlkYXRlKTtmdW5jdGlvbiBRQihlLHQsbil7Y29uc3Qgcj1DZShlLG4pO2lmKHJ8fFVkKG4pKXJldHVybntlcnJvcjpyLG5hbWU6bn07Y29uc3QgaT1uLnNwbGl0KCIuIik7Zm9yKDtpLmxlbmd0aDspe2NvbnN0IG89aS5qb2luKCIuIikscz1DZSh0LG8pLHU9Q2UoZSxvKTtpZihzJiYhQXJyYXkuaXNBcnJheShzKSYmbiE9PW8pcmV0dXJue25hbWU6bn07aWYodSYmdS50eXBlKXJldHVybntuYW1lOm8sZXJyb3I6dX07aWYodSYmdS5yb290JiZ1LnJvb3QudHlwZSlyZXR1cm57bmFtZTpgJHtvfS5yb290YCxlcnJvcjp1LnJvb3R9O2kucG9wKCl9cmV0dXJue25hbWU6bn19dmFyIG94ZT0oZSx0LG4scik9PntuKGUpO2NvbnN0e25hbWU6aSwuLi5vfT1lLHM9T2JqZWN0LmtleXMobyk7cmV0dXJuIXMubGVuZ3RofHxyJiZzLmxlbmd0aD49T2JqZWN0LmtleXModCkubGVuZ3RofHxzLmZpbmQodT0+dFt1XT09PSghcnx8b2kuYWxsKSl9LHN4ZT0oZSx0LG4pPT4hZXx8IXR8fGU9PT10fHxacChlKS5zb21lKHI9PnImJihuP3I9PT10fHxyLnN0YXJ0c1dpdGgodCsiLiIpOnIuc3RhcnRzV2l0aCh0KXx8dC5zdGFydHNXaXRoKHIpKSksbHhlPShlLHQsbixyLGkpPT5pLmlzT25BbGw/ITE6IW4mJmkuaXNPblRvdWNoPyEodHx8ZSk6KG4/ci5pc09uQmx1cjppLmlzT25CbHVyKT8hZToobj9yLmlzT25DaGFuZ2U6aS5pc09uQ2hhbmdlKT9lOiEwLHV4ZT0oZSx0KT0+IVZGKENlKGUsdCkpLmxlbmd0aCYmUXQoZSx0KTtjb25zdCBjeGU9e21vZGU6b2kub25TdWJtaXQscmVWYWxpZGF0ZU1vZGU6b2kub25DaGFuZ2Usc2hvdWxkRm9jdXNFcnJvcjohMH0sTlM9ImZvcm0iLFdGPXtzdWJtaXRDb3VudDowLGlzRGlydHk6ITEsaXNSZWFkeTohMSxpc1ZhbGlkYXRpbmc6ITEsaXNTdWJtaXR0ZWQ6ITEsaXNTdWJtaXR0aW5nOiExLGlzU3VibWl0U3VjY2Vzc2Z1bDohMSxpc1ZhbGlkOiExLHRvdWNoZWRGaWVsZHM6e30sZGlydHlGaWVsZHM6e30sdmFsaWRhdGluZ0ZpZWxkczp7fX07ZnVuY3Rpb24gZnhlKGU9e30pe2xldCB0PXsuLi5jeGUsLi4uZX0sbj17Li4uWnQoV0YpLGlzTG9hZGluZzokcih0LmRlZmF1bHRWYWx1ZXMpLGVycm9yczp0LmVycm9yc3x8e30sZGlzYWJsZWQ6dC5kaXNhYmxlZHx8ITF9LHI9e30saT1XdCh0LmRlZmF1bHRWYWx1ZXMpfHxXdCh0LnZhbHVlcyk/WnQodC5kZWZhdWx0VmFsdWVzfHx0LnZhbHVlcyl8fHt9Ont9LG89dC5zaG91bGRVbnJlZ2lzdGVyP3t9Olp0KGkpLHM9e2FjdGlvbjohMSxtb3VudDohMSx3YXRjaDohMSxrZWVwSXNWYWxpZDohMX0sdT17bW91bnQ6bmV3IFNldCxkaXNhYmxlZDpuZXcgU2V0LHVuTW91bnQ6bmV3IFNldCxhcnJheTpuZXcgU2V0LHdhdGNoOm5ldyBTZXQscmVnaXN0ZXJOYW1lOm5ldyBTZXR9O2NvbnN0IGY9e30sZD17fTtsZXQgcD0wLG09TXAodC5tb2RlKSx5PU1wKHQucmVWYWxpZGF0ZU1vZGUpO2NvbnN0IHg9e2lzRGlydHk6ITEsZGlydHlGaWVsZHM6ITEsdmFsaWRhdGluZ0ZpZWxkczohMSx0b3VjaGVkRmllbGRzOiExLGlzVmFsaWRhdGluZzohMSxpc1ZhbGlkOiExLGVycm9yczohMX0sdz17Li4ueH07bGV0IGI9ey4uLnd9O2NvbnN0IGc9e2FycmF5OllCKCksc3RhdGU6WUIoKX07bGV0IF89MDtjb25zdCBPPXQuY3JpdGVyaWFNb2RlPT09b2kuYWxsLEU9KHEsUSk9Pko9PntjbGVhclRpbWVvdXQoZFtxXSksZFtxXT1zZXRUaW1lb3V0KFEsSil9LGo9YXN5bmMgcT0+e2lmKCFzLmtlZXBJc1ZhbGlkJiYhdC5kaXNhYmxlZCYmKHcuaXNWYWxpZHx8Yi5pc1ZhbGlkfHxxKSl7Y29uc3QgUT0rK187bGV0IEo7dC5yZXNvbHZlcj8oSj1QbigoYXdhaXQgVSgpKS5lcnJvcnMpLFE9PT1fJiZUKCkpOko9YXdhaXQgVyh7ZmllbGRzOnIsb25seUNoZWNrVmFsaWQ6ITAsZXZlbnRUeXBlOlRsLlZBTElEfSksUT09PV8mJkohPT1uLmlzVmFsaWQmJmcuc3RhdGUubmV4dCh7aXNWYWxpZDpKfSl9fSxUPShxLFEpPT57IXQuZGlzYWJsZWQmJih3LmlzVmFsaWRhdGluZ3x8dy52YWxpZGF0aW5nRmllbGRzfHxiLmlzVmFsaWRhdGluZ3x8Yi52YWxpZGF0aW5nRmllbGRzKSYmKChxfHxBcnJheS5mcm9tKHUubW91bnQpKS5mb3JFYWNoKEo9PntKJiYoUT9BdChuLnZhbGlkYXRpbmdGaWVsZHMsSixRKTpRdChuLnZhbGlkYXRpbmdGaWVsZHMsSikpfSksZy5zdGF0ZS5uZXh0KHt2YWxpZGF0aW5nRmllbGRzOm4udmFsaWRhdGluZ0ZpZWxkcyxpc1ZhbGlkYXRpbmc6IVBuKG4udmFsaWRhdGluZ0ZpZWxkcyl9KSl9LFA9KCk9PntuLmRpcnR5RmllbGRzPW5zKGksbyx2b2lkIDAscil9LE49KHEsUT1bXSxKLGhlLHBlPSEwLHdlPSEwKT0+e2lmKGhlJiZKJiYhdC5kaXNhYmxlZCl7aWYocy5hY3Rpb249ITAsd2UmJkFycmF5LmlzQXJyYXkoQ2UocixxKSkpe2NvbnN0IHhlPUooQ2UocixxKSxoZS5hcmdBLGhlLmFyZ0IpO3BlJiZBdChyLHEseGUpfWlmKHdlJiZBcnJheS5pc0FycmF5KENlKG4uZXJyb3JzLHEpKSl7Y29uc3QgeGU9SihDZShuLmVycm9ycyxxKSxoZS5hcmdBLGhlLmFyZ0IpO3BlJiZBdChuLmVycm9ycyxxLHhlKSx1eGUobi5lcnJvcnMscSl9aWYoKHcudG91Y2hlZEZpZWxkc3x8Yi50b3VjaGVkRmllbGRzKSYmd2UmJkFycmF5LmlzQXJyYXkoQ2Uobi50b3VjaGVkRmllbGRzLHEpKSl7Y29uc3QgeGU9SihDZShuLnRvdWNoZWRGaWVsZHMscSksaGUuYXJnQSxoZS5hcmdCKTtwZSYmQXQobi50b3VjaGVkRmllbGRzLHEseGUpfSh3LmRpcnR5RmllbGRzfHxiLmRpcnR5RmllbGRzKSYmUCgpLGcuc3RhdGUubmV4dCh7bmFtZTpxLGlzRGlydHk6ZWUocSxRKSxkaXJ0eUZpZWxkczpuLmRpcnR5RmllbGRzLGVycm9yczpuLmVycm9ycyxpc1ZhbGlkOm4uaXNWYWxpZH0pfWVsc2UgQXQobyxxLFEpfSxSPShxLFEpPT57QXQobi5lcnJvcnMscSxRKSxuLmVycm9ycz17Li4ubi5lcnJvcnN9LGcuc3RhdGUubmV4dCh7ZXJyb3JzOm4uZXJyb3JzfSl9LEk9cT0+e24uZXJyb3JzPXEsZy5zdGF0ZS5uZXh0KHtlcnJvcnM6bi5lcnJvcnMsaXNWYWxpZDohMX0pfSxWPXE9Pntjb25zdCBRPVVkKHEpP1txXTprdihxKTtsZXQgSj1vLGhlPWk7Zm9yKGxldCBwZT0wO3BlPFEubGVuZ3RoLTE7cGUrKyl7Y29uc3Qgd2U9UVtwZV07aWYoSj1ObihKKT9KOkpbd2VdLGhlPU5uKGhlKT9oZTpoZVt3ZV0sSj09PW51bGwmJmhlIT09bnVsbClyZXR1cm4hMH1yZXR1cm4hMX0sQj0ocSxRLEosaGUpPT57Y29uc3QgcGU9Q2UocixxKTtpZihwZSl7aWYoVihxKSlyZXR1cm47Y29uc3Qgd2U9JHQoQ2UobyxxKSkseGU9Q2UobyxxLCR0KEopP0NlKGkscSk6Sik7JHQoeGUpfHxoZSYmaGUuZGVmYXVsdENoZWNrZWR8fFE/QXQobyxxLFE/eGU6WEIocGUuX2YpKTp0ZShxLHhlKSxzLm1vdW50JiYhcy5hY3Rpb24mJihqKCksd2UmJm4uaXNEaXJ0eSYmKHcuaXNEaXJ0eXx8Yi5pc0RpcnR5KSYmKGVlKCl8fChuLmlzRGlydHk9ITEsZy5zdGF0ZS5uZXh0KHsuLi5ufSkpKSxlLnNob3VsZFVucmVnaXN0ZXImJndlJiYhJHQoQ2UobyxxKSkmJk1TKHEsdSkmJihzLndhdGNoPSEwKSl9fSwkPShxLFEsSixoZSxwZSk9PntsZXQgd2U9ITEseGU9ITE7Y29uc3QgRWU9e25hbWU6cX07aWYoIXQuZGlzYWJsZWR8fGhlPT09ITApe2lmKCFKfHxoZSl7Y29uc3QgQmU9YmkoQ2UoaSxxKSxRKTsody5pc0RpcnR5fHxiLmlzRGlydHkpJiYoeGU9bi5pc0RpcnR5LG4uaXNEaXJ0eT1FZS5pc0RpcnR5PSFCZXx8ZWUoKSx3ZT14ZSE9PUVlLmlzRGlydHkpLHhlPSEhQ2Uobi5kaXJ0eUZpZWxkcyxxKSxCZSE9PW4uaXNEaXJ0eT9uLmRpcnR5RmllbGRzPW5zKGksbyx2b2lkIDAscik6QmU/UXQobi5kaXJ0eUZpZWxkcyxxKTpBdChuLmRpcnR5RmllbGRzLHEsITApLEVlLmRpcnR5RmllbGRzPW4uZGlydHlGaWVsZHMsd2U9d2V8fCh3LmRpcnR5RmllbGRzfHxiLmRpcnR5RmllbGRzKSYmeGUhPT0hQmV9aWYoSil7Y29uc3QgQmU9Q2Uobi50b3VjaGVkRmllbGRzLHEpO0JlfHwoQXQobi50b3VjaGVkRmllbGRzLHEsSiksRWUudG91Y2hlZEZpZWxkcz1uLnRvdWNoZWRGaWVsZHMsd2U9d2V8fCh3LnRvdWNoZWRGaWVsZHN8fGIudG91Y2hlZEZpZWxkcykmJkJlIT09Sil9d2UmJnBlJiZnLnN0YXRlLm5leHQoRWUpfXJldHVybiB3ZT9FZTp7fX0sej0ocSxRLEosaGUpPT57Y29uc3QgcGU9Q2Uobi5lcnJvcnMscSksd2U9KHcuaXNWYWxpZHx8Yi5pc1ZhbGlkKSYmZ2koUSkmJm4uaXNWYWxpZCE9PVE7aWYodC5kZWxheUVycm9yJiZKPyhmW3FdPUUocSwoKT0+UihxLEopKSxmW3FdKHQuZGVsYXlFcnJvcikpOihjbGVhclRpbWVvdXQoZFtxXSksZGVsZXRlIGZbcV0sSj9BdChuLmVycm9ycyxxLEopOlF0KG4uZXJyb3JzLHEpLG4uZXJyb3JzPXsuLi5uLmVycm9yc30pLChKPyFiaShwZSxKKTpwZSl8fCFQbihoZSl8fHdlKXtjb25zdCB4ZT17Li4uaGUsLi4ud2UmJmdpKFEpP3tpc1ZhbGlkOlF9Ont9LGVycm9yczpuLmVycm9ycyxuYW1lOnF9O249ey4uLm4sLi4ueGV9LGcuc3RhdGUubmV4dCh4ZSl9fSxVPWFzeW5jIHE9PihUKHEsITApLGF3YWl0IHQucmVzb2x2ZXIobyx0LmNvbnRleHQscnhlKHF8fHUubW91bnQscix0LmNyaXRlcmlhTW9kZSx0LnNob3VsZFVzZU5hdGl2ZVZhbGlkYXRpb24pKSksSz1hc3luYyBxPT57Y29uc3R7ZXJyb3JzOlF9PWF3YWl0IFUocSk7aWYoVChxKSxxKXtmb3IoY29uc3QgSiBvZiBxKXtjb25zdCBoZT1DZShRLEopO2hlP3UuYXJyYXkuaGFzKEopJiZXdChoZSkmJiFPYmplY3Qua2V5cyhoZSkuc29tZShwZT0+IU51bWJlci5pc05hTihOdW1iZXIocGUpKSk/ekIobi5lcnJvcnMse1tKXTpoZX0sSik6QXQobi5lcnJvcnMsSixoZSk6UXQobi5lcnJvcnMsSil9bi5lcnJvcnM9ey4uLm4uZXJyb3JzfX1lbHNlIG4uZXJyb3JzPVE7cmV0dXJuIFF9LEw9YXN5bmMoe25hbWU6cSxldmVudFR5cGU6UX0pPT57aWYoZS52YWxpZGF0ZSl7Y29uc3QgSj1hd2FpdCBlLnZhbGlkYXRlKHtmb3JtVmFsdWVzOm8sZm9ybVN0YXRlOm4sbmFtZTpxLGV2ZW50VHlwZTpRfSk7aWYoV3QoSikpZm9yKGNvbnN0IGhlIGluIEope2NvbnN0IHBlPUpbaGVdO3BlJiZLZShgJHtOU30uJHtoZX1gLHttZXNzYWdlOmtuKHBlLm1lc3NhZ2UpP3BlLm1lc3NhZ2U6IiIsdHlwZTpwZS50eXBlfHx0aS52YWxpZGF0ZX0pfWVsc2Uga24oSil8fCFKP0tlKE5TLHttZXNzYWdlOkp8fCIiLHR5cGU6dGkudmFsaWRhdGV9KTpzZShOUyk7cmV0dXJuIEp9cmV0dXJuITB9LFc9YXN5bmMoe2ZpZWxkczpxLG9ubHlDaGVja1ZhbGlkOlEsbmFtZTpKLGV2ZW50VHlwZTpoZSxjb250ZXh0OnBlPXt2YWxpZDohMCxydW5Sb290VmFsaWRhdGlvbjohMX19KT0+e2lmKGUudmFsaWRhdGUmJihwZS5ydW5Sb290VmFsaWRhdGlvbj0hMCwhYXdhaXQgTCh7bmFtZTpKLGV2ZW50VHlwZTpoZX0pJiYocGUudmFsaWQ9ITEsUSkpKXJldHVybiBwZS52YWxpZDtmb3IoY29uc3Qgd2UgaW4gcSl7Y29uc3QgeGU9cVt3ZV07aWYoeGUpe2NvbnN0e19mOkVlLC4uLkJlfT14ZTtpZihFZSl7Y29uc3QgRXQ9dS5hcnJheS5oYXMoRWUubmFtZSksZW49eGUuX2YmJml4ZSh4ZS5fZiksVW49dy52YWxpZGF0aW5nRmllbGRzfHx3LmlzVmFsaWRhdGluZ3x8Yi52YWxpZGF0aW5nRmllbGRzfHxiLmlzVmFsaWRhdGluZztlbiYmVW4mJlQoW0VlLm5hbWVdLCEwKTtjb25zdCBLcj1hd2FpdCBXQih4ZSx1LmRpc2FibGVkLG8sTyx0LnNob3VsZFVzZU5hdGl2ZVZhbGlkYXRpb24mJiFRLEV0KTtpZihlbiYmVW4mJlQoW0VlLm5hbWVdKSxLcltFZS5uYW1lXSYmKHBlLnZhbGlkPSExLFEpfHwoIVEmJihDZShLcixFZS5uYW1lKT9FdD96QihuLmVycm9ycyxLcixFZS5uYW1lKTpBdChuLmVycm9ycyxFZS5uYW1lLEtyW0VlLm5hbWVdKTpRdChuLmVycm9ycyxFZS5uYW1lKSksZS5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uJiZLcltFZS5uYW1lXSkpYnJlYWt9IVBuKEJlKSYmYXdhaXQgVyh7Y29udGV4dDpwZSxvbmx5Q2hlY2tWYWxpZDpRLGZpZWxkczpCZSxuYW1lOndlLGV2ZW50VHlwZTpoZX0pfX1yZXR1cm4gcGUudmFsaWR9LEg9KCk9Pntmb3IoY29uc3QgcSBvZiB1LnVuTW91bnQpe2NvbnN0IFE9Q2UocixxKTtRJiYoUS5fZi5yZWZzP1EuX2YucmVmcy5ldmVyeShKPT4hUlMoSikpOiFSUyhRLl9mLnJlZikpJiZsdChxKX11LnVuTW91bnQ9bmV3IFNldH0sZWU9KHEsUSk9PihxJiZRJiZBdChvLHEsUSksIWJpKHMubW91bnQ/bzppLGkpKSxrPShxLFEsSik9PlowZShxLHUsey4uLnMubW91bnQ/bzokdChRKT9pOmtuKHEpP3tbcV06UX06UX0sSixRKSxaPXE9PlZGKENlKHMubW91bnQ/bzppLHEsdC5zaG91bGRVbnJlZ2lzdGVyP0NlKGkscSxbXSk6W10pKSx0ZT0ocSxRLEo9e30saGU9ITEscGU9ITEpPT57Y29uc3Qgd2U9Q2UocixxKTtsZXQgeGU9UTtpZih3ZSl7Y29uc3QgRWU9d2UuX2Y7RWUmJighRWUuZGlzYWJsZWQmJkF0KG8scSxLRihRLEVlKSkseGU9YnkoRWUucmVmKSYmTm4oUSk/IiI6USx6RihFZS5yZWYpP1suLi5FZS5yZWYub3B0aW9uc10uZm9yRWFjaChCZT0+QmUuc2VsZWN0ZWQ9eGUuaW5jbHVkZXMoQmUudmFsdWUpKTpFZS5yZWZzP3FkKEVlLnJlZik/RWUucmVmcy5mb3JFYWNoKEJlPT57KCFCZS5kZWZhdWx0Q2hlY2tlZHx8IUJlLmRpc2FibGVkKSYmKEFycmF5LmlzQXJyYXkoeGUpP0JlLmNoZWNrZWQ9ISF4ZS5maW5kKEV0PT5FdD09PUJlLnZhbHVlKTpCZS5jaGVja2VkPXhlPT09QmUudmFsdWV8fCEheGUpfSk6RWUucmVmcy5mb3JFYWNoKEJlPT5CZS5jaGVja2VkPUJlLnZhbHVlPT09eGUpOlRFKEVlLnJlZik/RWUucmVmLnZhbHVlPSIiOihFZS5yZWYudmFsdWU9eGUsIUVlLnJlZi50eXBlJiYhcGUmJmcuc3RhdGUubmV4dCh7bmFtZTpxLHZhbHVlczpoZT9vOlp0KG8pfSkpKX0oSi5zaG91bGREaXJ0eXx8Si5zaG91bGRUb3VjaCkmJiQocSx4ZSxKLnNob3VsZFRvdWNoLEouc2hvdWxkRGlydHksIXBlKSxKLnNob3VsZFZhbGlkYXRlJiZjZShxLHtkZWxheUVycm9yOkouZGVsYXlFcnJvcn0pfSxvZT0ocSxRLEosaGU9ITEscGU9ITEpPT57Zm9yKGNvbnN0IHdlIGluIFEpe2lmKCFRLmhhc093blByb3BlcnR5KHdlKSlyZXR1cm47Y29uc3QgeGU9UVt3ZV0sRWU9cSsiLiIrd2UsQmU9Q2UocixFZSk7KHUuYXJyYXkuaGFzKHEpfHxXdCh4ZSl8fEJlJiYhQmUuX2YpJiYhdG8oeGUpP29lKEVlLHhlLEosaGUscGUpOnRlKEVlLHhlLEosaGUscGUpfX0sbWU9KHEsUSxKLGhlLHBlPSExKT0+e2NvbnN0IHdlPUNlKHIscSkseGU9dS5hcnJheS5oYXMocSksRWU9aGU/UTpadChRKSxCZT1DZShvLHEpLEV0PWJpKEJlLEVlKTtpZihFdHx8QXQobyxxLEVlKSx4ZSlnLmFycmF5Lm5leHQoe25hbWU6cSx2YWx1ZXM6aGU/bzpadChvKX0pLCh3LmlzRGlydHl8fHcuZGlydHlGaWVsZHN8fGIuaXNEaXJ0eXx8Yi5kaXJ0eUZpZWxkcykmJkouc2hvdWxkRGlydHkmJihQKCkscGV8fGcuc3RhdGUubmV4dCh7bmFtZTpxLGRpcnR5RmllbGRzOm4uZGlydHlGaWVsZHMsaXNEaXJ0eTplZShxLEVlKX0pKTtlbHNle2NvbnN0IGVuPUFycmF5LmlzQXJyYXkoRWUpJiYhRWUubGVuZ3RofHxQbihFZSk7IXdlfHx3ZS5fZnx8Tm4oRWUpfHxlbj90ZShxLEVlLEosaGUscGUpOm9lKHEsRWUsSixoZSxwZSl9aWYoIUV0JiYhcGUpe2NvbnN0IGVuPU1TKHEsdSksVW49aGU/bzpadChvKTtnLnN0YXRlLm5leHQoey4uLmVuJiZuLG5hbWU6cy5tb3VudHx8ZW4/cTp2b2lkIDAsdmFsdWVzOlVufSl9fSxiZT0ocSxRLEo9e30pPT5tZShxLFEsSiwhMSksZ2U9KHEsUT17fSk9Pntjb25zdCBKPSRyKHEpP3Eobyk6cTtpZighYmkobyxKKSl7bz17Li4ubywuLi5KfTtjb25zdCBoZT1xRihKKTtmb3IoY29uc3QgcGUgb2YgdS5tb3VudClwZSBpbiBoZSYmbWUocGUsaGVbcGVdLFEsITAsITApO2cuc3RhdGUubmV4dCh7Li4ubixuYW1lOnZvaWQgMCx0eXBlOnZvaWQgMCwuLi5wP3t2YWx1ZXM6b306e319KSxRLnNob3VsZFZhbGlkYXRlJiZqKCl9fSxfZT1hc3luYyBxPT57cy5tb3VudD0hMDtjb25zdCBRPXEudGFyZ2V0O2xldCBKPVEubmFtZSxoZT0hMDtjb25zdCBwZT1DZShyLEopLHdlPXhlPT57aGU9TnVtYmVyLmlzTmFOKHhlKXx8dG8oeGUpJiZpc05hTih4ZS5nZXRUaW1lKCkpfHxiaSh4ZSxDZShvLEoseGUpKX07aWYocGUpe2xldCB4ZSxFZTtjb25zdCBCZT1RLnR5cGU/WEIocGUuX2YpOkYwZShxKSxFdD1xLnR5cGU9PT1UbC5CTFVSfHxxLnR5cGU9PT1UbC5GT0NVU19PVVQsZW49IWF4ZShwZS5fZikmJiFlLnZhbGlkYXRlJiYhdC5yZXNvbHZlciYmIUNlKG4uZXJyb3JzLEopJiYhcGUuX2YuZGVwcyxVbj1lbnx8bHhlKEV0LENlKG4udG91Y2hlZEZpZWxkcyxKKSxuLmlzU3VibWl0dGVkLHksbSksS3I9TVMoSix1LEV0KTtpZihBdChvLEosQmUpLEV0KXtpZighUXx8IVEucmVhZE9ubHkpe3BlLl9mLm9uQmx1ciYmcGUuX2Yub25CbHVyKHEpO2NvbnN0IElpPWZbSl07SWkmJklpKDApfX1lbHNlIHBlLl9mLm9uQ2hhbmdlJiZwZS5fZi5vbkNoYW5nZShxKTtjb25zdCBBYT0kKEosQmUsRXQpLEZkPSFQbihBYSl8fEtyO2lmKCFFdCYmZy5zdGF0ZS5uZXh0KHtuYW1lOkosdHlwZTpxLnR5cGUsLi4ucD97dmFsdWVzOlp0KG8pfTp7fX0pLFVuKXJldHVybighZW58fCFuLmlzVmFsaWQpJiYody5pc1ZhbGlkfHxiLmlzVmFsaWQpJiYodC5tb2RlPT09Im9uQmx1ciI/RXQmJmooKTpFdHx8aigpKSxGZCYmZy5zdGF0ZS5uZXh0KHtuYW1lOkosLi4uS3I/e306QWF9KTtpZighdC5yZXNvbHZlciYmZS52YWxpZGF0ZSYmYXdhaXQgTCh7bmFtZTpKLGV2ZW50VHlwZTpxLnR5cGV9KSwhRXQmJktyJiZnLnN0YXRlLm5leHQoey4uLm59KSx0LnJlc29sdmVyKXtjb25zdHtlcnJvcnM6SWl9PWF3YWl0IFUoW0pdKTtpZihUKFtKXSksd2UoQmUpLCFoZSl7IVBuKEFhKSYmZy5zdGF0ZS5uZXh0KEFhKTtyZXR1cm59Y29uc3QgS3U9UUIobi5lcnJvcnMscixKKSxXdT1RQihJaSxyLEt1Lm5hbWV8fEopO3hlPVd1LmVycm9yLEo9V3UubmFtZSxFZT1QbihJaSl9ZWxzZSBUKFtKXSwhMCkseGU9KGF3YWl0IFdCKHBlLHUuZGlzYWJsZWQsbyxPLHQuc2hvdWxkVXNlTmF0aXZlVmFsaWRhdGlvbikpW0pdLFQoW0pdKSx3ZShCZSksaGUmJih4ZT9FZT0hMToody5pc1ZhbGlkfHxiLmlzVmFsaWQpJiYoRWU9YXdhaXQgVyh7ZmllbGRzOnIsb25seUNoZWNrVmFsaWQ6ITAsbmFtZTpKLGV2ZW50VHlwZTpxLnR5cGV9KSkpO2hlJiYocGUuX2YuZGVwcyYmKCFBcnJheS5pc0FycmF5KHBlLl9mLmRlcHMpfHxwZS5fZi5kZXBzLmxlbmd0aD4wKSYmY2UocGUuX2YuZGVwcykseihKLEVlLHhlLEFhKSl9fSxUZT0ocSxRKT0+e2lmKENlKG4uZXJyb3JzLFEpJiZxLmZvY3VzKXJldHVybiBxLmZvY3VzKCksMX0sY2U9YXN5bmMocSxRPXt9KT0+e2xldCBKLGhlO2NvbnN0IHBlPVpwKHEpO2lmKHQucmVzb2x2ZXIpe2NvbnN0IHdlPWF3YWl0IEsoJHQocSk/cTpwZSk7Sj1Qbih3ZSksaGU9cT8hcGUuc29tZSh4ZT0+Q2Uod2UseGUpKTpKfWVsc2UgcT8oaGU9KGF3YWl0IFByb21pc2UuYWxsKHBlLm1hcChhc3luYyB3ZT0+e2NvbnN0IHhlPUNlKHIsd2UpO3JldHVybiBhd2FpdCBXKHtmaWVsZHM6eGUmJnhlLl9mP3tbd2VdOnhlfTp4ZSxldmVudFR5cGU6VGwuVFJJR0dFUn0pfSkpKS5ldmVyeShCb29sZWFuKSwhKCFoZSYmIW4uaXNWYWxpZCkmJmooKSk6aGU9Sj1hd2FpdCBXKHtmaWVsZHM6cixuYW1lOnEsZXZlbnRUeXBlOlRsLlRSSUdHRVJ9KTtpZihRLmRlbGF5RXJyb3ImJnQuZGVsYXlFcnJvciYma24ocSkpe2NvbnN0IHdlPUNlKG4uZXJyb3JzLHEpO3dlPyhRdChuLmVycm9ycyxxKSxmW3FdPUUocSwoKT0+UihxLHdlKSksZltxXSh0LmRlbGF5RXJyb3IpKTooY2xlYXJUaW1lb3V0KGRbcV0pLGRlbGV0ZSBmW3FdKX1yZXR1cm4gZy5zdGF0ZS5uZXh0KHsuLi4ha24ocSl8fCh3LmlzVmFsaWR8fGIuaXNWYWxpZCkmJkohPT1uLmlzVmFsaWQ/e306e25hbWU6cX0sLi4udC5yZXNvbHZlcnx8IXE/e2lzVmFsaWQ6Sn06e30sZXJyb3JzOm4uZXJyb3JzfSksUS5zaG91bGRGb2N1cyYmIWhlJiZUZihyLFRlLHE/cGU6dS5tb3VudCksaGV9LEFlPShxLFEpPT57bGV0IEo9ey4uLnMubW91bnQ/bzppfTtyZXR1cm4gUSYmKEo9VUYoUS5kaXJ0eUZpZWxkcz9uLmRpcnR5RmllbGRzOm4udG91Y2hlZEZpZWxkcyxKKSksJHQocSk/SjprbihxKT9DZShKLHEpOnEubWFwKGhlPT5DZShKLGhlKSl9LFNlPShxLFEpPT4oe2ludmFsaWQ6ISFDZSgoUXx8bikuZXJyb3JzLHEpLGlzRGlydHk6ISFDZSgoUXx8bikuZGlydHlGaWVsZHMscSksZXJyb3I6Q2UoKFF8fG4pLmVycm9ycyxxKSxpc1ZhbGlkYXRpbmc6ISFDZShuLnZhbGlkYXRpbmdGaWVsZHMscSksaXNUb3VjaGVkOiEhQ2UoKFF8fG4pLnRvdWNoZWRGaWVsZHMscSl9KSxzZT1xPT57Y29uc3QgUT1xP1pwKHEpOnZvaWQgMDtRPy5mb3JFYWNoKEo9PlF0KG4uZXJyb3JzLEopKSxRP1EuZm9yRWFjaChKPT57Zy5zdGF0ZS5uZXh0KHtuYW1lOkosZXJyb3JzOm4uZXJyb3JzfSl9KTpnLnN0YXRlLm5leHQoe2Vycm9yczp7fX0pfSxLZT0ocSxRLEopPT57Y29uc3QgaGU9KENlKHIscSx7X2Y6e319KS5fZnx8e30pLnJlZixwZT1DZShuLmVycm9ycyxxKXx8e30se3JlZjp3ZSxtZXNzYWdlOnhlLHR5cGU6RWUsLi4uQmV9PXBlO0F0KG4uZXJyb3JzLHEsey4uLkJlLC4uLlEscmVmOmhlfSksZy5zdGF0ZS5uZXh0KHtuYW1lOnEsZXJyb3JzOm4uZXJyb3JzLGlzVmFsaWQ6ITF9KSxKJiZKLnNob3VsZEZvY3VzJiZoZSYmaGUuZm9jdXMmJmhlLmZvY3VzKCl9LExlPShxLFEpPT57aWYoJHIocSkpe3ArKztjb25zdHt1bnN1YnNjcmliZTpKfT1nLnN0YXRlLnN1YnNjcmliZSh7bmV4dDpwZT0+InZhbHVlcyJpbiBwZSYmcShwZS52YWx1ZXN8fGsodm9pZCAwLFEpLHBlKX0pO2xldCBoZT0hMTtyZXR1cm57dW5zdWJzY3JpYmU6KCk9PntoZXx8KGhlPSEwLHAtLSxKKCkpfX19cmV0dXJuIGsocSxRLCEwKX0sYnQ9cT0+e3ZhciBRO2NvbnN0IEo9ISEoISgoUT1xLmZvcm1TdGF0ZSk9PT1udWxsfHxRPT09dm9pZCAwKSYmUS52YWx1ZXMpO0omJnArKztjb25zdHt1bnN1YnNjcmliZTpoZX09Zy5zdGF0ZS5zdWJzY3JpYmUoe25leHQ6d2U9PntpZihzeGUocS5uYW1lLHdlLm5hbWUscS5leGFjdCkmJm94ZSh3ZSxxLmZvcm1TdGF0ZXx8dyxxbixxLnJlUmVuZGVyUm9vdCkpe2NvbnN0IHhlPXsuLi5vfTtxLmNhbGxiYWNrKHt2YWx1ZXM6eGUsLi4ubiwuLi53ZSxkZWZhdWx0VmFsdWVzOml9KX19fSk7aWYoIUopcmV0dXJuIGhlO2xldCBwZT0hMTtyZXR1cm4oKT0+e3BlfHwocGU9ITAscC0tLGhlKCkpfX0sVHQ9cT0+KHMubW91bnQ9ITAsYj17Li4uYiwuLi5xLmZvcm1TdGF0ZX0sYnQoey4uLnEsZm9ybVN0YXRlOnsuLi54LC4uLnEuZm9ybVN0YXRlfX0pKSxsdD0ocSxRPXt9KT0+e2Zvcihjb25zdCBKIG9mIHE/WnAocSk6dS5tb3VudCl1Lm1vdW50LmRlbGV0ZShKKSx1LmFycmF5LmRlbGV0ZShKKSxRLmtlZXBWYWx1ZXx8KFF0KHIsSiksUXQobyxKKSksIVEua2VlcEVycm9yJiZRdChuLmVycm9ycyxKKSwhUS5rZWVwRGlydHkmJlF0KG4uZGlydHlGaWVsZHMsSiksIVEua2VlcFRvdWNoZWQmJlF0KG4udG91Y2hlZEZpZWxkcyxKKSwhUS5rZWVwSXNWYWxpZGF0aW5nJiZRdChuLnZhbGlkYXRpbmdGaWVsZHMsSiksIXQuc2hvdWxkVW5yZWdpc3RlciYmIVEua2VlcERlZmF1bHRWYWx1ZSYmUXQoaSxKKTtnLnN0YXRlLm5leHQoe3ZhbHVlczpadChvKX0pLGcuc3RhdGUubmV4dCh7Li4ubiwuLi5RLmtlZXBEaXJ0eT97aXNEaXJ0eTplZSgpfTp7fX0pLCFRLmtlZXBJc1ZhbGlkJiZqKCl9LHNyPSh7ZGlzYWJsZWQ6cSxuYW1lOlF9KT0+e2lmKGdpKHEpJiZzLm1vdW50fHxxfHx1LmRpc2FibGVkLmhhcyhRKSl7Y29uc3QgcGU9dS5kaXNhYmxlZC5oYXMoUSkhPT0hIXE7cT91LmRpc2FibGVkLmFkZChRKTp1LmRpc2FibGVkLmRlbGV0ZShRKSxwZSYmcy5tb3VudCYmIXMuYWN0aW9uJiZqKCl9fSxscj0ocSxRPXt9KT0+e2xldCBKPUNlKHIscSk7Y29uc3QgaGU9Z2koUS5kaXNhYmxlZCl8fGdpKHQuZGlzYWJsZWQpLHBlPSF1LnJlZ2lzdGVyTmFtZS5oYXMocSkmJkomJkouX2YmJiFKLl9mLm1vdW50O3JldHVybiBBdChyLHEsey4uLkp8fHt9LF9mOnsuLi5KJiZKLl9mP0ouX2Y6e3JlZjp7bmFtZTpxfX0sbmFtZTpxLG1vdW50OiEwLC4uLlF9fSksdS5tb3VudC5hZGQocSksSiYmIXBlP3NyKHtkaXNhYmxlZDpnaShRLmRpc2FibGVkKT9RLmRpc2FibGVkOnQuZGlzYWJsZWQsbmFtZTpxfSk6QihxLCEwLFEudmFsdWUpLHsuLi5oZT97ZGlzYWJsZWQ6US5kaXNhYmxlZHx8dC5kaXNhYmxlZH06e30sLi4udC5wcm9ncmVzc2l2ZT97cmVxdWlyZWQ6ISFRLnJlcXVpcmVkLG1pbjpyZihRLm1pbiksbWF4OnJmKFEubWF4KSxtaW5MZW5ndGg6cmYoUS5taW5MZW5ndGgpLG1heExlbmd0aDpyZihRLm1heExlbmd0aCkscGF0dGVybjpyZihRLnBhdHRlcm4pfTp7fSxuYW1lOnEsb25DaGFuZ2U6X2Usb25CbHVyOl9lLHJlZjp3ZT0+e2lmKHdlKXt1LnJlZ2lzdGVyTmFtZS5hZGQocSksbHIocSxRKSx1LnJlZ2lzdGVyTmFtZS5kZWxldGUocSksSj1DZShyLHEpO2NvbnN0IHhlPSR0KHdlLnZhbHVlKSYmd2UucXVlcnlTZWxlY3RvckFsbCYmd2UucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQsc2VsZWN0LHRleHRhcmVhIilbMF18fHdlLEVlPXR4ZSh4ZSksQmU9Si5fZi5yZWZzfHxbXTtpZihFZT9CZS5maW5kKEV0PT5FdD09PXhlKTp4ZT09PUouX2YucmVmKXJldHVybjtBdChyLHEse19mOnsuLi5KLl9mLC4uLkVlP3tyZWZzOlsuLi5CZS5maWx0ZXIoUlMpLHhlLC4uLkFycmF5LmlzQXJyYXkoQ2UoaSxxKSk/W3t9XTpbXV0scmVmOnt0eXBlOnhlLnR5cGUsbmFtZTpxfX06e3JlZjp4ZX19fSksQihxLCExLHZvaWQgMCx4ZSl9ZWxzZSBKPUNlKHIscSx7fSksSi5fZiYmKEouX2YubW91bnQ9ITEpLCh0LnNob3VsZFVucmVnaXN0ZXJ8fFEuc2hvdWxkVW5yZWdpc3RlcikmJiEoSDBlKHUuYXJyYXkscSkmJnMuYWN0aW9uKSYmdS51bk1vdW50LmFkZChxKX19fSxHcj0oKT0+dC5zaG91bGRGb2N1c0Vycm9yJiYhdC5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uJiZUZihyLFRlLHUubW91bnQpLFhuPXE9PntnaShxKSYmKGcuc3RhdGUubmV4dCh7ZGlzYWJsZWQ6cX0pLFRmKHIsKFEsSik9Pntjb25zdCBoZT1DZShyLEopO2hlJiYoUS5kaXNhYmxlZD1oZS5fZi5kaXNhYmxlZHx8cSxBcnJheS5pc0FycmF5KGhlLl9mLnJlZnMpJiZoZS5fZi5yZWZzLmZvckVhY2gocGU9PntwZS5kaXNhYmxlZD1oZS5fZi5kaXNhYmxlZHx8cX0pKX0sMCwhMSkpfSxfcj0ocSxRKT0+YXN5bmMgSj0+e2xldCBoZTtKJiYoSi5wcmV2ZW50RGVmYXVsdCYmSi5wcmV2ZW50RGVmYXVsdCgpLEoucGVyc2lzdCYmSi5wZXJzaXN0KCkpO2xldCBwZT1adChvKTtpZihnLnN0YXRlLm5leHQoe2lzU3VibWl0dGluZzohMH0pLHQucmVzb2x2ZXIpe2NvbnN0e2Vycm9yczp3ZSx2YWx1ZXM6eGV9PWF3YWl0IFUoKTtUKCksbi5lcnJvcnM9d2UscGU9WnQoeGUpfWVsc2UgYXdhaXQgVyh7ZmllbGRzOnIsZXZlbnRUeXBlOlRsLlNVQk1JVH0pO2lmKHUuZGlzYWJsZWQuc2l6ZSlmb3IoY29uc3Qgd2Ugb2YgdS5kaXNhYmxlZClRdChwZSx3ZSk7aWYoUXQobi5lcnJvcnMsTEYpLFBuKG4uZXJyb3JzKSl7Zy5zdGF0ZS5uZXh0KHtlcnJvcnM6e319KTt0cnl7YXdhaXQgcShwZSxKKX1jYXRjaCh3ZSl7aGU9d2V9fWVsc2UgUSYmYXdhaXQgUSh7Li4ubi5lcnJvcnN9LEopLEdyKCksc2V0VGltZW91dChHcik7aWYoZy5zdGF0ZS5uZXh0KHtpc1N1Ym1pdHRlZDohMCxpc1N1Ym1pdHRpbmc6ITEsaXNTdWJtaXRTdWNjZXNzZnVsOlBuKG4uZXJyb3JzKSYmIWhlLHN1Ym1pdENvdW50Om4uc3VibWl0Q291bnQrMSxlcnJvcnM6bi5lcnJvcnN9KSxoZSl0aHJvdyBoZX0sU2E9KHEsUT17fSk9PntDZShyLHEpJiYoJHQoUS5kZWZhdWx0VmFsdWUpP2JlKHEsWnQoQ2UoaSxxKSkpOihiZShxLFEuZGVmYXVsdFZhbHVlKSxBdChpLHEsWnQoUS5kZWZhdWx0VmFsdWUpKSksUS5rZWVwVG91Y2hlZHx8UXQobi50b3VjaGVkRmllbGRzLHEpLFEua2VlcERpcnR5fHwoUXQobi5kaXJ0eUZpZWxkcyxxKSxuLmlzRGlydHk9US5kZWZhdWx0VmFsdWU/ZWUocSxadChDZShpLHEpKSk6ZWUoKSksUS5rZWVwRXJyb3J8fChRdChuLmVycm9ycyxxKSx3LmlzVmFsaWQmJmooKSksZy5zdGF0ZS5uZXh0KHsuLi5ufSkpfSxUbz0ocSxRPXt9KT0+e2NvbnN0IEo9cT9adChxKTppLGhlPVp0KEopLHBlPVBuKHEpLHdlPWhlLHhlPXI7aWYoUS5rZWVwRGVmYXVsdFZhbHVlc3x8KGk9SiksIVEua2VlcFZhbHVlcyl7aWYoUS5rZWVwRGlydHlWYWx1ZXMpe2NvbnN0IEVlPW5ldyBTZXQoWy4uLnUubW91bnQsLi4uT2JqZWN0LmtleXMobnMoaSxvLHZvaWQgMCx4ZSkpXSk7Zm9yKGNvbnN0IEJlIG9mIEFycmF5LmZyb20oRWUpKXtjb25zdCBFdD1DZShuLmRpcnR5RmllbGRzLEJlKSxlbj1DZShvLEJlKSxVbj1DZSh3ZSxCZSk7RXQmJiEkdChlbik/QXQod2UsQmUsZW4pOiFFdCYmISR0KFVuKSYmYmUoQmUsVW4pfX1lbHNle2lmKE52JiYkdChxKSlmb3IoY29uc3QgRWUgb2YgdS5tb3VudCl7Y29uc3QgQmU9Q2UocixFZSk7aWYoQmUmJkJlLl9mKXtjb25zdCBFdD1BcnJheS5pc0FycmF5KEJlLl9mLnJlZnMpP0JlLl9mLnJlZnNbMF06QmUuX2YucmVmO2lmKGJ5KEV0KSl7Y29uc3QgZW49RXQuY2xvc2VzdCgiZm9ybSIpO2lmKGVuKXtlbi5yZXNldCgpO2JyZWFrfX19fWlmKFEua2VlcEZpZWxkc1JlZilmb3IoY29uc3QgRWUgb2YgdS5tb3VudCliZShFZSxDZSh3ZSxFZSkpO2Vsc2Ugcj17fX1pZih0LnNob3VsZFVucmVnaXN0ZXIpe2lmKG89US5rZWVwRGVmYXVsdFZhbHVlcz9adChpKTp7fSxRLmtlZXBGaWVsZHNSZWYpZm9yKGNvbnN0IEVlIG9mIHUubW91bnQpQXQobyxFZSxDZSh3ZSxFZSkpfWVsc2Ugbz1adCh3ZSk7Zy5hcnJheS5uZXh0KHt2YWx1ZXM6ey4uLndlfX0pLGcuc3RhdGUubmV4dCh7bmFtZTp2b2lkIDAsdHlwZTp2b2lkIDAsdmFsdWVzOnsuLi53ZX19KX11PXttb3VudDpRLmtlZXBEaXJ0eVZhbHVlcz91Lm1vdW50Om5ldyBTZXQsdW5Nb3VudDpuZXcgU2V0LGFycmF5Om5ldyBTZXQscmVnaXN0ZXJOYW1lOm5ldyBTZXQsZGlzYWJsZWQ6bmV3IFNldCx3YXRjaDpuZXcgU2V0LHdhdGNoQWxsOiExLGZvY3VzOiIifSxzLm1vdW50PSF3LmlzVmFsaWR8fCEhUS5rZWVwSXNWYWxpZHx8ISFRLmtlZXBEaXJ0eVZhbHVlc3x8IXQuc2hvdWxkVW5yZWdpc3RlciYmIVBuKHdlKSxzLndhdGNoPSEhdC5zaG91bGRVbnJlZ2lzdGVyLHMua2VlcElzVmFsaWQ9ISFRLmtlZXBJc1ZhbGlkLHMuYWN0aW9uPSExLFEua2VlcEVycm9yc3x8KG4uZXJyb3JzPXt9KSxnLnN0YXRlLm5leHQoe3N1Ym1pdENvdW50OlEua2VlcFN1Ym1pdENvdW50P24uc3VibWl0Q291bnQ6MCxpc0RpcnR5OnBlPyExOlEua2VlcERpcnR5P24uaXNEaXJ0eTpRLmtlZXBWYWx1ZXM/ZWUoKTohIShRLmtlZXBEZWZhdWx0VmFsdWVzJiYhYmkocSxpKSksaXNTdWJtaXR0ZWQ6US5rZWVwSXNTdWJtaXR0ZWQ/bi5pc1N1Ym1pdHRlZDohMSxkaXJ0eUZpZWxkczpwZT97fTpRLmtlZXBEaXJ0eVZhbHVlcz9RLmtlZXBEZWZhdWx0VmFsdWVzJiZvP25zKGksbyx2b2lkIDAseGUpOm4uZGlydHlGaWVsZHM6US5rZWVwRGVmYXVsdFZhbHVlcyYmcT9ucyhpLHEsdm9pZCAwLHhlKTpRLmtlZXBEaXJ0eT9uLmRpcnR5RmllbGRzOnt9LHRvdWNoZWRGaWVsZHM6US5rZWVwVG91Y2hlZD9uLnRvdWNoZWRGaWVsZHM6e30sZXJyb3JzOlEua2VlcEVycm9ycz9uLmVycm9yczp7fSxpc1N1Ym1pdFN1Y2Nlc3NmdWw6US5rZWVwSXNTdWJtaXRTdWNjZXNzZnVsP24uaXNTdWJtaXRTdWNjZXNzZnVsOiExLGlzU3VibWl0dGluZzohMSxkZWZhdWx0VmFsdWVzOml9KX0sRW89KHEsUSk9PlRvKCRyKHEpP3Eobyk6cSx7Li4udC5yZXNldE9wdGlvbnMsLi4uUX0pLENvPShxLFE9e30pPT57Y29uc3QgSj1DZShyLHEpLGhlPUomJkouX2Y7aWYoaGUpe2NvbnN0IHBlPWhlLnJlZnM/aGUucmVmc1swXTpoZS5yZWY7cGUuZm9jdXMmJnNldFRpbWVvdXQoKCk9PntwZS5mb2N1cygpLFEuc2hvdWxkU2VsZWN0JiYkcihwZS5zZWxlY3QpJiZwZS5zZWxlY3QoKX0pfX0scW49cT0+e2NvbnN0e25hbWU6USx0eXBlOkosdmFsdWVzOmhlLC4uLnBlfT1xO249ey4uLm4sLi4ucGV9fSx6ZD17Y29udHJvbDp7cmVnaXN0ZXI6bHIsdW5yZWdpc3RlcjpsdCxnZXRGaWVsZFN0YXRlOlNlLGhhbmRsZVN1Ym1pdDpfcixzZXRFcnJvcjpLZSxfc3Vic2NyaWJlOmJ0LF9ydW5TY2hlbWE6VSxfdXBkYXRlSXNWYWxpZGF0aW5nOlQsX2ZvY3VzRXJyb3I6R3IsX2dldFdhdGNoOmssX2dldERpcnR5OmVlLF9zZXRWYWxpZDpqLF9zZXRGaWVsZEFycmF5Ok4sX3NldERpc2FibGVkRmllbGQ6c3IsX3NldEVycm9yczpJLF9nZXRGaWVsZEFycmF5OlosX3Jlc2V0OlRvLF9yZXNldERlZmF1bHRWYWx1ZXM6KCk9PiRyKHQuZGVmYXVsdFZhbHVlcykmJnQuZGVmYXVsdFZhbHVlcygpLnRoZW4ocT0+e0VvKHEsdC5yZXNldE9wdGlvbnMpLGcuc3RhdGUubmV4dCh7aXNMb2FkaW5nOiExfSl9KSxfcmVtb3ZlVW5tb3VudGVkOkgsX2Rpc2FibGVGb3JtOlhuLF9zdWJqZWN0czpnLF9wcm94eUZvcm1TdGF0ZTp3LGdldCBfZmllbGRzKCl7cmV0dXJuIHJ9LGdldCBfZm9ybVZhbHVlcygpe3JldHVybiBvfSxnZXQgX3N0YXRlKCl7cmV0dXJuIHN9LHNldCBfc3RhdGUocSl7cz1xfSxnZXQgX2RlZmF1bHRWYWx1ZXMoKXtyZXR1cm4gaX0sZ2V0IF9uYW1lcygpe3JldHVybiB1fSxzZXQgX25hbWVzKHEpe3U9cX0sZ2V0IF9mb3JtU3RhdGUoKXtyZXR1cm4gbn0sZ2V0IF9vcHRpb25zKCl7cmV0dXJuIHR9LHNldCBfb3B0aW9ucyhxKXt0PXsuLi50LC4uLnF9LG09TXAodC5tb2RlKSx5PU1wKHQucmVWYWxpZGF0ZU1vZGUpfX0sc3Vic2NyaWJlOlR0LHRyaWdnZXI6Y2UscmVnaXN0ZXI6bHIsaGFuZGxlU3VibWl0Ol9yLHdhdGNoOkxlLHNldFZhbHVlOmJlLHNldFZhbHVlczpnZSxnZXRWYWx1ZXM6QWUscmVzZXQ6RW8scmVzZXRGaWVsZDpTYSxyZXNldERlZmF1bHRWYWx1ZXM6KHEsUT17fSk9PntpZihpPVp0KHEpLCFRLmtlZXBEaXJ0eSl7Y29uc3QgSj1ucyhpLG8sdm9pZCAwLHIpO24uZGlydHlGaWVsZHM9SixuLmlzRGlydHk9IVBuKEopfVEua2VlcElzVmFsaWR8fGooKSxnLnN0YXRlLm5leHQoey4uLm4sZGVmYXVsdFZhbHVlczppfSl9LGNsZWFyRXJyb3JzOnNlLHVucmVnaXN0ZXI6bHQsc2V0RXJyb3I6S2Usc2V0Rm9jdXM6Q28sZ2V0RmllbGRTdGF0ZTpTZX07cmV0dXJuey4uLnpkLGZvcm1Db250cm9sOnpkfX1mdW5jdGlvbiBZRihlPXt9KXtjb25zdCB0PUYudXNlUmVmKHZvaWQgMCksbj1GLnVzZVJlZih2b2lkIDApLHI9Ri51c2VSZWYoZS5mb3JtQ29udHJvbCksW2ksb109Ri51c2VTdGF0ZSgoKT0+KHsuLi5adChXRiksaXNMb2FkaW5nOiRyKGUuZGVmYXVsdFZhbHVlcyksZXJyb3JzOmUuZXJyb3JzfHx7fSxkaXNhYmxlZDplLmRpc2FibGVkfHwhMSxkZWZhdWx0VmFsdWVzOiRyKGUuZGVmYXVsdFZhbHVlcyk/dm9pZCAwOmUuZGVmYXVsdFZhbHVlc30pKTtpZighdC5jdXJyZW50fHxlLmZvcm1Db250cm9sJiZyLmN1cnJlbnQhPT1lLmZvcm1Db250cm9sKWlmKHIuY3VycmVudD1lLmZvcm1Db250cm9sLGUuZm9ybUNvbnRyb2wpdC5jdXJyZW50PXsuLi5lLmZvcm1Db250cm9sLGZvcm1TdGF0ZTppfSxlLmRlZmF1bHRWYWx1ZXMmJiEkcihlLmRlZmF1bHRWYWx1ZXMpJiZlLmZvcm1Db250cm9sLnJlc2V0KGUuZGVmYXVsdFZhbHVlcyxlLnJlc2V0T3B0aW9ucyk7ZWxzZXtjb25zdHtmb3JtQ29udHJvbDp1LC4uLmZ9PWZ4ZShlKTt0LmN1cnJlbnQ9ey4uLmYsZm9ybVN0YXRlOml9fWNvbnN0IHM9dC5jdXJyZW50LmNvbnRyb2w7cmV0dXJuIHMuX29wdGlvbnM9ZSxYMGUoKCk9Pntjb25zdCB1PXMuX3N1YnNjcmliZSh7Zm9ybVN0YXRlOnMuX3Byb3h5Rm9ybVN0YXRlLGNhbGxiYWNrOigpPT5vKHsuLi5zLl9mb3JtU3RhdGUsZGVmYXVsdFZhbHVlczpzLl9kZWZhdWx0VmFsdWVzfSkscmVSZW5kZXJSb290OiEwfSk7cmV0dXJuIG8oZj0+KHsuLi5mLGlzUmVhZHk6ITB9KSkscy5fZm9ybVN0YXRlLmlzUmVhZHk9ITAsdX0sW3NdKSxGLnVzZUVmZmVjdCgoKT0+cy5fZGlzYWJsZUZvcm0oZS5kaXNhYmxlZCksW3MsZS5kaXNhYmxlZF0pLEYudXNlRWZmZWN0KCgpPT57ZS5tb2RlJiYocy5fb3B0aW9ucy5tb2RlPWUubW9kZSksZS5yZVZhbGlkYXRlTW9kZSYmKHMuX29wdGlvbnMucmVWYWxpZGF0ZU1vZGU9ZS5yZVZhbGlkYXRlTW9kZSl9LFtzLGUubW9kZSxlLnJlVmFsaWRhdGVNb2RlXSksRi51c2VFZmZlY3QoKCk9PntlLmVycm9ycyYmKHMuX3NldEVycm9ycyhlLmVycm9ycykscy5fZm9jdXNFcnJvcigpKX0sW3MsZS5lcnJvcnNdKSxGLnVzZUVmZmVjdCgoKT0+e2Uuc2hvdWxkVW5yZWdpc3RlciYmcy5fc3ViamVjdHMuc3RhdGUubmV4dCh7dmFsdWVzOnMuX2dldFdhdGNoKCl9KX0sW3MsZS5zaG91bGRVbnJlZ2lzdGVyXSksRi51c2VFZmZlY3QoKCk9PntpZihzLl9wcm94eUZvcm1TdGF0ZS5pc0RpcnR5KXtjb25zdCB1PXMuX2dldERpcnR5KCk7dSE9PWkuaXNEaXJ0eSYmcy5fc3ViamVjdHMuc3RhdGUubmV4dCh7aXNEaXJ0eTp1fSl9fSxbcyxpLmlzRGlydHldKSxGLnVzZUVmZmVjdCgoKT0+e3ZhciB1O2UudmFsdWVzJiYhYmkoZS52YWx1ZXMsbi5jdXJyZW50KT8ocy5fcmVzZXQoZS52YWx1ZXMse2tlZXBGaWVsZHNSZWY6ITAsLi4ucy5fb3B0aW9ucy5yZXNldE9wdGlvbnN9KSwhKCh1PXMuX29wdGlvbnMucmVzZXRPcHRpb25zKT09PW51bGx8fHU9PT12b2lkIDApJiZ1LmtlZXBJc1ZhbGlkfHxzLl9zZXRWYWxpZCgpLG4uY3VycmVudD1lLnZhbHVlcyxvKGY9Pih7Li4uZn0pKSk6cy5fcmVzZXREZWZhdWx0VmFsdWVzKCl9LFtzLGUudmFsdWVzXSksRi51c2VFZmZlY3QoKCk9PntzLl9zdGF0ZS5tb3VudHx8KHMuX3NldFZhbGlkKCkscy5fc3RhdGUubW91bnQ9ITApLHMuX3N0YXRlLndhdGNoJiYocy5fc3RhdGUud2F0Y2g9ITEscy5fc3ViamVjdHMuc3RhdGUubmV4dCh7Li4ucy5fZm9ybVN0YXRlfSkpLHMuX3JlbW92ZVVubW91bnRlZCgpfSksdC5jdXJyZW50LmZvcm1TdGF0ZT1GLnVzZU1lbW8oKCk9PlkwZShpLHMpLFtzLGldKSx0LmN1cnJlbnR9Y29uc3QgSkI9KGUsdCxuKT0+e2lmKGUmJiJyZXBvcnRWYWxpZGl0eSJpbiBlKXtjb25zdCByPUNlKG4sdCk7ZS5zZXRDdXN0b21WYWxpZGl0eShyJiZyLm1lc3NhZ2V8fCIiKSxlLnJlcG9ydFZhbGlkaXR5KCl9fSxYRj0oZSx0KT0+e2Zvcihjb25zdCBuIGluIHQuZmllbGRzKXtjb25zdCByPXQuZmllbGRzW25dO3ImJnIucmVmJiYicmVwb3J0VmFsaWRpdHkiaW4gci5yZWY/SkIoci5yZWYsbixlKTpyLnJlZnMmJnIucmVmcy5mb3JFYWNoKGk9PkpCKGksbixlKSl9fSxkeGU9KGUsdCk9Pnt0LnNob3VsZFVzZU5hdGl2ZVZhbGlkYXRpb24mJlhGKGUsdCk7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBpbiBlKXtjb25zdCBpPUNlKHQuZmllbGRzLHIpLG89T2JqZWN0LmFzc2lnbihlW3JdfHx7fSx7cmVmOmkmJmkucmVmfSk7aWYoaHhlKHQubmFtZXN8fE9iamVjdC5rZXlzKGUpLHIpKXtjb25zdCBzPU9iamVjdC5hc3NpZ24oe30sQ2UobixyKSk7QXQocywicm9vdCIsbyksQXQobixyLHMpfWVsc2UgQXQobixyLG8pfXJldHVybiBufSxoeGU9KGUsdCk9PmUuc29tZShuPT5uLnN0YXJ0c1dpdGgodCsiLiIpKTt2YXIgcHhlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXt9O2UubGVuZ3RoOyl7dmFyIHI9ZVswXSxpPXIuY29kZSxvPXIubWVzc2FnZSxzPXIucGF0aC5qb2luKCIuIik7aWYoIW5bc10paWYoInVuaW9uRXJyb3JzImluIHIpe3ZhciB1PXIudW5pb25FcnJvcnNbMF0uZXJyb3JzWzBdO25bc109e21lc3NhZ2U6dS5tZXNzYWdlLHR5cGU6dS5jb2RlfX1lbHNlIG5bc109e21lc3NhZ2U6byx0eXBlOml9O2lmKCJ1bmlvbkVycm9ycyJpbiByJiZyLnVuaW9uRXJyb3JzLmZvckVhY2goZnVuY3Rpb24ocCl7cmV0dXJuIHAuZXJyb3JzLmZvckVhY2goZnVuY3Rpb24obSl7cmV0dXJuIGUucHVzaChtKX0pfSksdCl7dmFyIGY9bltzXS50eXBlcyxkPWYmJmZbci5jb2RlXTtuW3NdPUlGKHMsdCxuLGksZD9bXS5jb25jYXQoZCxyLm1lc3NhZ2UpOnIubWVzc2FnZSl9ZS5zaGlmdCgpfXJldHVybiBufSxaRj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG49PT12b2lkIDAmJihuPXt9KSxmdW5jdGlvbihyLGksbyl7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUoKGZ1bmN0aW9uKHMsdSl7dHJ5e3ZhciBmPVByb21pc2UucmVzb2x2ZShlW24ubW9kZT09PSJzeW5jIj8icGFyc2UiOiJwYXJzZUFzeW5jIl0ocix0KSkudGhlbihmdW5jdGlvbihkKXtyZXR1cm4gby5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uJiZYRih7fSxvKSx7ZXJyb3JzOnt9LHZhbHVlczpuLnJhdz9yOmR9fSl9Y2F0Y2goZCl7cmV0dXJuIHUoZCl9cmV0dXJuIGYmJmYudGhlbj9mLnRoZW4odm9pZCAwLHUpOmZ9KSgwLGZ1bmN0aW9uKHMpe2lmKChmdW5jdGlvbih1KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh1Py5lcnJvcnMpfSkocykpcmV0dXJue3ZhbHVlczp7fSxlcnJvcnM6ZHhlKHB4ZShzLmVycm9ycywhby5zaG91bGRVc2VOYXRpdmVWYWxpZGF0aW9uJiZvLmNyaXRlcmlhTW9kZT09PSJhbGwiKSxvKX07dGhyb3cgc30pKX1jYXRjaChzKXtyZXR1cm4gUHJvbWlzZS5yZWplY3Qocyl9fX0sZHQ7KGZ1bmN0aW9uKGUpe2UuYXNzZXJ0RXF1YWw9aT0+e307ZnVuY3Rpb24gdChpKXt9ZS5hc3NlcnRJcz10O2Z1bmN0aW9uIG4oaSl7dGhyb3cgbmV3IEVycm9yfWUuYXNzZXJ0TmV2ZXI9bixlLmFycmF5VG9FbnVtPWk9Pntjb25zdCBvPXt9O2Zvcihjb25zdCBzIG9mIGkpb1tzXT1zO3JldHVybiBvfSxlLmdldFZhbGlkRW51bVZhbHVlcz1pPT57Y29uc3Qgbz1lLm9iamVjdEtleXMoaSkuZmlsdGVyKHU9PnR5cGVvZiBpW2lbdV1dIT0ibnVtYmVyIikscz17fTtmb3IoY29uc3QgdSBvZiBvKXNbdV09aVt1XTtyZXR1cm4gZS5vYmplY3RWYWx1ZXMocyl9LGUub2JqZWN0VmFsdWVzPWk9PmUub2JqZWN0S2V5cyhpKS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIGlbb119KSxlLm9iamVjdEtleXM9dHlwZW9mIE9iamVjdC5rZXlzPT0iZnVuY3Rpb24iP2k9Pk9iamVjdC5rZXlzKGkpOmk9Pntjb25zdCBvPVtdO2Zvcihjb25zdCBzIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJm8ucHVzaChzKTtyZXR1cm4gb30sZS5maW5kPShpLG8pPT57Zm9yKGNvbnN0IHMgb2YgaSlpZihvKHMpKXJldHVybiBzfSxlLmlzSW50ZWdlcj10eXBlb2YgTnVtYmVyLmlzSW50ZWdlcj09ImZ1bmN0aW9uIj9pPT5OdW1iZXIuaXNJbnRlZ2VyKGkpOmk9PnR5cGVvZiBpPT0ibnVtYmVyIiYmTnVtYmVyLmlzRmluaXRlKGkpJiZNYXRoLmZsb29yKGkpPT09aTtmdW5jdGlvbiByKGksbz0iIHwgIil7cmV0dXJuIGkubWFwKHM9PnR5cGVvZiBzPT0ic3RyaW5nIj9gJyR7c30nYDpzKS5qb2luKG8pfWUuam9pblZhbHVlcz1yLGUuanNvblN0cmluZ2lmeVJlcGxhY2VyPShpLG8pPT50eXBlb2Ygbz09ImJpZ2ludCI/by50b1N0cmluZygpOm99KShkdHx8KGR0PXt9KSk7dmFyIGU0OyhmdW5jdGlvbihlKXtlLm1lcmdlU2hhcGVzPSh0LG4pPT4oey4uLnQsLi4ubn0pfSkoZTR8fChlND17fSkpO2NvbnN0IGtlPWR0LmFycmF5VG9FbnVtKFsic3RyaW5nIiwibmFuIiwibnVtYmVyIiwiaW50ZWdlciIsImZsb2F0IiwiYm9vbGVhbiIsImRhdGUiLCJiaWdpbnQiLCJzeW1ib2wiLCJmdW5jdGlvbiIsInVuZGVmaW5lZCIsIm51bGwiLCJhcnJheSIsIm9iamVjdCIsInVua25vd24iLCJwcm9taXNlIiwidm9pZCIsIm5ldmVyIiwibWFwIiwic2V0Il0pLFphPWU9Pntzd2l0Y2godHlwZW9mIGUpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4ga2UudW5kZWZpbmVkO2Nhc2Uic3RyaW5nIjpyZXR1cm4ga2Uuc3RyaW5nO2Nhc2UibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzTmFOKGUpP2tlLm5hbjprZS5udW1iZXI7Y2FzZSJib29sZWFuIjpyZXR1cm4ga2UuYm9vbGVhbjtjYXNlImZ1bmN0aW9uIjpyZXR1cm4ga2UuZnVuY3Rpb247Y2FzZSJiaWdpbnQiOnJldHVybiBrZS5iaWdpbnQ7Y2FzZSJzeW1ib2wiOnJldHVybiBrZS5zeW1ib2w7Y2FzZSJvYmplY3QiOnJldHVybiBBcnJheS5pc0FycmF5KGUpP2tlLmFycmF5OmU9PT1udWxsP2tlLm51bGw6ZS50aGVuJiZ0eXBlb2YgZS50aGVuPT0iZnVuY3Rpb24iJiZlLmNhdGNoJiZ0eXBlb2YgZS5jYXRjaD09ImZ1bmN0aW9uIj9rZS5wcm9taXNlOnR5cGVvZiBNYXA8InUiJiZlIGluc3RhbmNlb2YgTWFwP2tlLm1hcDp0eXBlb2YgU2V0PCJ1IiYmZSBpbnN0YW5jZW9mIFNldD9rZS5zZXQ6dHlwZW9mIERhdGU8InUiJiZlIGluc3RhbmNlb2YgRGF0ZT9rZS5kYXRlOmtlLm9iamVjdDtkZWZhdWx0OnJldHVybiBrZS51bmtub3dufX0seWU9ZHQuYXJyYXlUb0VudW0oWyJpbnZhbGlkX3R5cGUiLCJpbnZhbGlkX2xpdGVyYWwiLCJjdXN0b20iLCJpbnZhbGlkX3VuaW9uIiwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yIiwiaW52YWxpZF9lbnVtX3ZhbHVlIiwidW5yZWNvZ25pemVkX2tleXMiLCJpbnZhbGlkX2FyZ3VtZW50cyIsImludmFsaWRfcmV0dXJuX3R5cGUiLCJpbnZhbGlkX2RhdGUiLCJpbnZhbGlkX3N0cmluZyIsInRvb19zbWFsbCIsInRvb19iaWciLCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcyIsIm5vdF9tdWx0aXBsZV9vZiIsIm5vdF9maW5pdGUiXSk7Y2xhc3MgcGEgZXh0ZW5kcyBFcnJvcntnZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuaXNzdWVzfWNvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5pc3N1ZXM9W10sdGhpcy5hZGRJc3N1ZT1yPT57dGhpcy5pc3N1ZXM9Wy4uLnRoaXMuaXNzdWVzLHJdfSx0aGlzLmFkZElzc3Vlcz0ocj1bXSk9Pnt0aGlzLmlzc3Vlcz1bLi4udGhpcy5pc3N1ZXMsLi4ucl19O2NvbnN0IG49bmV3LnRhcmdldC5wcm90b3R5cGU7T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLG4pOnRoaXMuX19wcm90b19fPW4sdGhpcy5uYW1lPSJab2RFcnJvciIsdGhpcy5pc3N1ZXM9dH1mb3JtYXQodCl7Y29uc3Qgbj10fHxmdW5jdGlvbihvKXtyZXR1cm4gby5tZXNzYWdlfSxyPXtfZXJyb3JzOltdfSxpPW89Pntmb3IoY29uc3QgcyBvZiBvLmlzc3VlcylpZihzLmNvZGU9PT0iaW52YWxpZF91bmlvbiIpcy51bmlvbkVycm9ycy5tYXAoaSk7ZWxzZSBpZihzLmNvZGU9PT0iaW52YWxpZF9yZXR1cm5fdHlwZSIpaShzLnJldHVyblR5cGVFcnJvcik7ZWxzZSBpZihzLmNvZGU9PT0iaW52YWxpZF9hcmd1bWVudHMiKWkocy5hcmd1bWVudHNFcnJvcik7ZWxzZSBpZihzLnBhdGgubGVuZ3RoPT09MClyLl9lcnJvcnMucHVzaChuKHMpKTtlbHNle2xldCB1PXIsZj0wO2Zvcig7ZjxzLnBhdGgubGVuZ3RoOyl7Y29uc3QgZD1zLnBhdGhbZl07Zj09PXMucGF0aC5sZW5ndGgtMT8odVtkXT11W2RdfHx7X2Vycm9yczpbXX0sdVtkXS5fZXJyb3JzLnB1c2gobihzKSkpOnVbZF09dVtkXXx8e19lcnJvcnM6W119LHU9dVtkXSxmKyt9fX07cmV0dXJuIGkodGhpcykscn1zdGF0aWMgYXNzZXJ0KHQpe2lmKCEodCBpbnN0YW5jZW9mIHBhKSl0aHJvdyBuZXcgRXJyb3IoYE5vdCBhIFpvZEVycm9yOiAke3R9YCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tZXNzYWdlfWdldCBtZXNzYWdlKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaXNzdWVzLGR0Lmpzb25TdHJpbmdpZnlSZXBsYWNlciwyKX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfWZsYXR0ZW4odD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e30scj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzLmlzc3VlcylpZihpLnBhdGgubGVuZ3RoPjApe2NvbnN0IG89aS5wYXRoWzBdO25bb109bltvXXx8W10sbltvXS5wdXNoKHQoaSkpfWVsc2Ugci5wdXNoKHQoaSkpO3JldHVybntmb3JtRXJyb3JzOnIsZmllbGRFcnJvcnM6bn19Z2V0IGZvcm1FcnJvcnMoKXtyZXR1cm4gdGhpcy5mbGF0dGVuKCl9fXBhLmNyZWF0ZT1lPT5uZXcgcGEoZSk7Y29uc3QgWl89KGUsdCk9PntsZXQgbjtzd2l0Y2goZS5jb2RlKXtjYXNlIHllLmludmFsaWRfdHlwZTplLnJlY2VpdmVkPT09a2UudW5kZWZpbmVkP249IlJlcXVpcmVkIjpuPWBFeHBlY3RlZCAke2UuZXhwZWN0ZWR9LCByZWNlaXZlZCAke2UucmVjZWl2ZWR9YDticmVhaztjYXNlIHllLmludmFsaWRfbGl0ZXJhbDpuPWBJbnZhbGlkIGxpdGVyYWwgdmFsdWUsIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoZS5leHBlY3RlZCxkdC5qc29uU3RyaW5naWZ5UmVwbGFjZXIpfWA7YnJlYWs7Y2FzZSB5ZS51bnJlY29nbml6ZWRfa2V5czpuPWBVbnJlY29nbml6ZWQga2V5KHMpIGluIG9iamVjdDogJHtkdC5qb2luVmFsdWVzKGUua2V5cywiLCAiKX1gO2JyZWFrO2Nhc2UgeWUuaW52YWxpZF91bmlvbjpuPSJJbnZhbGlkIGlucHV0IjticmVhaztjYXNlIHllLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcjpuPWBJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7ZHQuam9pblZhbHVlcyhlLm9wdGlvbnMpfWA7YnJlYWs7Y2FzZSB5ZS5pbnZhbGlkX2VudW1fdmFsdWU6bj1gSW52YWxpZCBlbnVtIHZhbHVlLiBFeHBlY3RlZCAke2R0LmpvaW5WYWx1ZXMoZS5vcHRpb25zKX0sIHJlY2VpdmVkICcke2UucmVjZWl2ZWR9J2A7YnJlYWs7Y2FzZSB5ZS5pbnZhbGlkX2FyZ3VtZW50czpuPSJJbnZhbGlkIGZ1bmN0aW9uIGFyZ3VtZW50cyI7YnJlYWs7Y2FzZSB5ZS5pbnZhbGlkX3JldHVybl90eXBlOm49IkludmFsaWQgZnVuY3Rpb24gcmV0dXJuIHR5cGUiO2JyZWFrO2Nhc2UgeWUuaW52YWxpZF9kYXRlOm49IkludmFsaWQgZGF0ZSI7YnJlYWs7Y2FzZSB5ZS5pbnZhbGlkX3N0cmluZzp0eXBlb2YgZS52YWxpZGF0aW9uPT0ib2JqZWN0Ij8iaW5jbHVkZXMiaW4gZS52YWxpZGF0aW9uPyhuPWBJbnZhbGlkIGlucHV0OiBtdXN0IGluY2x1ZGUgIiR7ZS52YWxpZGF0aW9uLmluY2x1ZGVzfSJgLHR5cGVvZiBlLnZhbGlkYXRpb24ucG9zaXRpb249PSJudW1iZXIiJiYobj1gJHtufSBhdCBvbmUgb3IgbW9yZSBwb3NpdGlvbnMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZS52YWxpZGF0aW9uLnBvc2l0aW9ufWApKToic3RhcnRzV2l0aCJpbiBlLnZhbGlkYXRpb24/bj1gSW52YWxpZCBpbnB1dDogbXVzdCBzdGFydCB3aXRoICIke2UudmFsaWRhdGlvbi5zdGFydHNXaXRofSJgOiJlbmRzV2l0aCJpbiBlLnZhbGlkYXRpb24/bj1gSW52YWxpZCBpbnB1dDogbXVzdCBlbmQgd2l0aCAiJHtlLnZhbGlkYXRpb24uZW5kc1dpdGh9ImA6ZHQuYXNzZXJ0TmV2ZXIoZS52YWxpZGF0aW9uKTplLnZhbGlkYXRpb24hPT0icmVnZXgiP249YEludmFsaWQgJHtlLnZhbGlkYXRpb259YDpuPSJJbnZhbGlkIjticmVhaztjYXNlIHllLnRvb19zbWFsbDplLnR5cGU9PT0iYXJyYXkiP249YEFycmF5IG11c3QgY29udGFpbiAke2UuZXhhY3Q/ImV4YWN0bHkiOmUuaW5jbHVzaXZlPyJhdCBsZWFzdCI6Im1vcmUgdGhhbiJ9ICR7ZS5taW5pbXVtfSBlbGVtZW50KHMpYDplLnR5cGU9PT0ic3RyaW5nIj9uPWBTdHJpbmcgbXVzdCBjb250YWluICR7ZS5leGFjdD8iZXhhY3RseSI6ZS5pbmNsdXNpdmU/ImF0IGxlYXN0Ijoib3ZlciJ9ICR7ZS5taW5pbXVtfSBjaGFyYWN0ZXIocylgOmUudHlwZT09PSJudW1iZXIiP249YE51bWJlciBtdXN0IGJlICR7ZS5leGFjdD8iZXhhY3RseSBlcXVhbCB0byAiOmUuaW5jbHVzaXZlPyJncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gIjoiZ3JlYXRlciB0aGFuICJ9JHtlLm1pbmltdW19YDplLnR5cGU9PT0iYmlnaW50Ij9uPWBOdW1iZXIgbXVzdCBiZSAke2UuZXhhY3Q/ImV4YWN0bHkgZXF1YWwgdG8gIjplLmluY2x1c2l2ZT8iZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICI6ImdyZWF0ZXIgdGhhbiAifSR7ZS5taW5pbXVtfWA6ZS50eXBlPT09ImRhdGUiP249YERhdGUgbXVzdCBiZSAke2UuZXhhY3Q/ImV4YWN0bHkgZXF1YWwgdG8gIjplLmluY2x1c2l2ZT8iZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICI6ImdyZWF0ZXIgdGhhbiAifSR7bmV3IERhdGUoTnVtYmVyKGUubWluaW11bSkpfWA6bj0iSW52YWxpZCBpbnB1dCI7YnJlYWs7Y2FzZSB5ZS50b29fYmlnOmUudHlwZT09PSJhcnJheSI/bj1gQXJyYXkgbXVzdCBjb250YWluICR7ZS5leGFjdD8iZXhhY3RseSI6ZS5pbmNsdXNpdmU/ImF0IG1vc3QiOiJsZXNzIHRoYW4ifSAke2UubWF4aW11bX0gZWxlbWVudChzKWA6ZS50eXBlPT09InN0cmluZyI/bj1gU3RyaW5nIG11c3QgY29udGFpbiAke2UuZXhhY3Q/ImV4YWN0bHkiOmUuaW5jbHVzaXZlPyJhdCBtb3N0IjoidW5kZXIifSAke2UubWF4aW11bX0gY2hhcmFjdGVyKHMpYDplLnR5cGU9PT0ibnVtYmVyIj9uPWBOdW1iZXIgbXVzdCBiZSAke2UuZXhhY3Q/ImV4YWN0bHkiOmUuaW5jbHVzaXZlPyJsZXNzIHRoYW4gb3IgZXF1YWwgdG8iOiJsZXNzIHRoYW4ifSAke2UubWF4aW11bX1gOmUudHlwZT09PSJiaWdpbnQiP249YEJpZ0ludCBtdXN0IGJlICR7ZS5leGFjdD8iZXhhY3RseSI6ZS5pbmNsdXNpdmU/Imxlc3MgdGhhbiBvciBlcXVhbCB0byI6Imxlc3MgdGhhbiJ9ICR7ZS5tYXhpbXVtfWA6ZS50eXBlPT09ImRhdGUiP249YERhdGUgbXVzdCBiZSAke2UuZXhhY3Q/ImV4YWN0bHkiOmUuaW5jbHVzaXZlPyJzbWFsbGVyIHRoYW4gb3IgZXF1YWwgdG8iOiJzbWFsbGVyIHRoYW4ifSAke25ldyBEYXRlKE51bWJlcihlLm1heGltdW0pKX1gOm49IkludmFsaWQgaW5wdXQiO2JyZWFrO2Nhc2UgeWUuY3VzdG9tOm49IkludmFsaWQgaW5wdXQiO2JyZWFrO2Nhc2UgeWUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM6bj0iSW50ZXJzZWN0aW9uIHJlc3VsdHMgY291bGQgbm90IGJlIG1lcmdlZCI7YnJlYWs7Y2FzZSB5ZS5ub3RfbXVsdGlwbGVfb2Y6bj1gTnVtYmVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2UubXVsdGlwbGVPZn1gO2JyZWFrO2Nhc2UgeWUubm90X2Zpbml0ZTpuPSJOdW1iZXIgbXVzdCBiZSBmaW5pdGUiO2JyZWFrO2RlZmF1bHQ6bj10LmRlZmF1bHRFcnJvcixkdC5hc3NlcnROZXZlcihlKX1yZXR1cm57bWVzc2FnZTpufX07bGV0IG14ZT1aXztmdW5jdGlvbiB5eGUoKXtyZXR1cm4gbXhlfWNvbnN0IHZ4ZT1lPT57Y29uc3R7ZGF0YTp0LHBhdGg6bixlcnJvck1hcHM6cixpc3N1ZURhdGE6aX09ZSxvPVsuLi5uLC4uLmkucGF0aHx8W11dLHM9ey4uLmkscGF0aDpvfTtpZihpLm1lc3NhZ2UhPT12b2lkIDApcmV0dXJuey4uLmkscGF0aDpvLG1lc3NhZ2U6aS5tZXNzYWdlfTtsZXQgdT0iIjtjb25zdCBmPXIuZmlsdGVyKGQ9PiEhZCkuc2xpY2UoKS5yZXZlcnNlKCk7Zm9yKGNvbnN0IGQgb2YgZil1PWQocyx7ZGF0YTp0LGRlZmF1bHRFcnJvcjp1fSkubWVzc2FnZTtyZXR1cm57Li4uaSxwYXRoOm8sbWVzc2FnZTp1fX07ZnVuY3Rpb24gT2UoZSx0KXtjb25zdCBuPXl4ZSgpLHI9dnhlKHtpc3N1ZURhdGE6dCxkYXRhOmUuZGF0YSxwYXRoOmUucGF0aCxlcnJvck1hcHM6W2UuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCxlLnNjaGVtYUVycm9yTWFwLG4sbj09PVpfP3ZvaWQgMDpaX10uZmlsdGVyKGk9PiEhaSl9KTtlLmNvbW1vbi5pc3N1ZXMucHVzaChyKX1jbGFzcyBBcntjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9InZhbGlkIn1kaXJ0eSgpe3RoaXMudmFsdWU9PT0idmFsaWQiJiYodGhpcy52YWx1ZT0iZGlydHkiKX1hYm9ydCgpe3RoaXMudmFsdWUhPT0iYWJvcnRlZCImJih0aGlzLnZhbHVlPSJhYm9ydGVkIil9c3RhdGljIG1lcmdlQXJyYXkodCxuKXtjb25zdCByPVtdO2Zvcihjb25zdCBpIG9mIG4pe2lmKGkuc3RhdHVzPT09ImFib3J0ZWQiKXJldHVybiBZZTtpLnN0YXR1cz09PSJkaXJ0eSImJnQuZGlydHkoKSxyLnB1c2goaS52YWx1ZSl9cmV0dXJue3N0YXR1czp0LnZhbHVlLHZhbHVlOnJ9fXN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKHQsbil7Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiBuKXtjb25zdCBvPWF3YWl0IGkua2V5LHM9YXdhaXQgaS52YWx1ZTtyLnB1c2goe2tleTpvLHZhbHVlOnN9KX1yZXR1cm4gQXIubWVyZ2VPYmplY3RTeW5jKHQscil9c3RhdGljIG1lcmdlT2JqZWN0U3luYyh0LG4pe2NvbnN0IHI9e307Zm9yKGNvbnN0IGkgb2Ygbil7Y29uc3R7a2V5Om8sdmFsdWU6c309aTtpZihvLnN0YXR1cz09PSJhYm9ydGVkInx8cy5zdGF0dXM9PT0iYWJvcnRlZCIpcmV0dXJuIFllO28uc3RhdHVzPT09ImRpcnR5IiYmdC5kaXJ0eSgpLHMuc3RhdHVzPT09ImRpcnR5IiYmdC5kaXJ0eSgpLG8udmFsdWUhPT0iX19wcm90b19fIiYmKHR5cGVvZiBzLnZhbHVlPCJ1Inx8aS5hbHdheXNTZXQpJiYocltvLnZhbHVlXT1zLnZhbHVlKX1yZXR1cm57c3RhdHVzOnQudmFsdWUsdmFsdWU6cn19fWNvbnN0IFllPU9iamVjdC5mcmVlemUoe3N0YXR1czoiYWJvcnRlZCJ9KSxkZj1lPT4oe3N0YXR1czoiZGlydHkiLHZhbHVlOmV9KSxIcj1lPT4oe3N0YXR1czoidmFsaWQiLHZhbHVlOmV9KSx0ND1lPT5lLnN0YXR1cz09PSJhYm9ydGVkIixuND1lPT5lLnN0YXR1cz09PSJkaXJ0eSIsRXU9ZT0+ZS5zdGF0dXM9PT0idmFsaWQiLHd5PWU9PnR5cGVvZiBQcm9taXNlPCJ1IiYmZSBpbnN0YW5jZW9mIFByb21pc2U7dmFyIERlOyhmdW5jdGlvbihlKXtlLmVyclRvT2JqPXQ9PnR5cGVvZiB0PT0ic3RyaW5nIj97bWVzc2FnZTp0fTp0fHx7fSxlLnRvU3RyaW5nPXQ9PnR5cGVvZiB0PT0ic3RyaW5nIj90OnQ/Lm1lc3NhZ2V9KShEZXx8KERlPXt9KSk7Y2xhc3MgaG97Y29uc3RydWN0b3IodCxuLHIsaSl7dGhpcy5fY2FjaGVkUGF0aD1bXSx0aGlzLnBhcmVudD10LHRoaXMuZGF0YT1uLHRoaXMuX3BhdGg9cix0aGlzLl9rZXk9aX1nZXQgcGF0aCgpe3JldHVybiB0aGlzLl9jYWNoZWRQYXRoLmxlbmd0aHx8KEFycmF5LmlzQXJyYXkodGhpcy5fa2V5KT90aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCwuLi50aGlzLl9rZXkpOnRoaXMuX2NhY2hlZFBhdGgucHVzaCguLi50aGlzLl9wYXRoLHRoaXMuX2tleSkpLHRoaXMuX2NhY2hlZFBhdGh9fWNvbnN0IHI0PShlLHQpPT57aWYoRXUodCkpcmV0dXJue3N1Y2Nlc3M6ITAsZGF0YTp0LnZhbHVlfTtpZighZS5jb21tb24uaXNzdWVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlZhbGlkYXRpb24gZmFpbGVkIGJ1dCBubyBpc3N1ZXMgZGV0ZWN0ZWQuIik7cmV0dXJue3N1Y2Nlc3M6ITEsZ2V0IGVycm9yKCl7aWYodGhpcy5fZXJyb3IpcmV0dXJuIHRoaXMuX2Vycm9yO2NvbnN0IG49bmV3IHBhKGUuY29tbW9uLmlzc3Vlcyk7cmV0dXJuIHRoaXMuX2Vycm9yPW4sdGhpcy5fZXJyb3J9fX07ZnVuY3Rpb24gbnQoZSl7aWYoIWUpcmV0dXJue307Y29uc3R7ZXJyb3JNYXA6dCxpbnZhbGlkX3R5cGVfZXJyb3I6bixyZXF1aXJlZF9lcnJvcjpyLGRlc2NyaXB0aW9uOml9PWU7aWYodCYmKG58fHIpKXRocm93IG5ldyBFcnJvcihgQ2FuJ3QgdXNlICJpbnZhbGlkX3R5cGVfZXJyb3IiIG9yICJyZXF1aXJlZF9lcnJvciIgaW4gY29uanVuY3Rpb24gd2l0aCBjdXN0b20gZXJyb3IgbWFwLmApO3JldHVybiB0P3tlcnJvck1hcDp0LGRlc2NyaXB0aW9uOml9OntlcnJvck1hcDoocyx1KT0+e2NvbnN0e21lc3NhZ2U6Zn09ZTtyZXR1cm4gcy5jb2RlPT09ImludmFsaWRfZW51bV92YWx1ZSI/e21lc3NhZ2U6Zj8/dS5kZWZhdWx0RXJyb3J9OnR5cGVvZiB1LmRhdGE+InUiP3ttZXNzYWdlOmY/P3I/P3UuZGVmYXVsdEVycm9yfTpzLmNvZGUhPT0iaW52YWxpZF90eXBlIj97bWVzc2FnZTp1LmRlZmF1bHRFcnJvcn06e21lc3NhZ2U6Zj8/bj8/dS5kZWZhdWx0RXJyb3J9fSxkZXNjcmlwdGlvbjppfX1jbGFzcyBjdHtnZXQgZGVzY3JpcHRpb24oKXtyZXR1cm4gdGhpcy5fZGVmLmRlc2NyaXB0aW9ufV9nZXRUeXBlKHQpe3JldHVybiBaYSh0LmRhdGEpfV9nZXRPclJldHVybkN0eCh0LG4pe3JldHVybiBufHx7Y29tbW9uOnQucGFyZW50LmNvbW1vbixkYXRhOnQuZGF0YSxwYXJzZWRUeXBlOlphKHQuZGF0YSksc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhdGg6dC5wYXRoLHBhcmVudDp0LnBhcmVudH19X3Byb2Nlc3NJbnB1dFBhcmFtcyh0KXtyZXR1cm57c3RhdHVzOm5ldyBBcixjdHg6e2NvbW1vbjp0LnBhcmVudC5jb21tb24sZGF0YTp0LmRhdGEscGFyc2VkVHlwZTpaYSh0LmRhdGEpLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXRoOnQucGF0aCxwYXJlbnQ6dC5wYXJlbnR9fX1fcGFyc2VTeW5jKHQpe2NvbnN0IG49dGhpcy5fcGFyc2UodCk7aWYod3kobikpdGhyb3cgbmV3IEVycm9yKCJTeW5jaHJvbm91cyBwYXJzZSBlbmNvdW50ZXJlZCBwcm9taXNlLiIpO3JldHVybiBufV9wYXJzZUFzeW5jKHQpe2NvbnN0IG49dGhpcy5fcGFyc2UodCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKX1wYXJzZSh0LG4pe2NvbnN0IHI9dGhpcy5zYWZlUGFyc2UodCxuKTtpZihyLnN1Y2Nlc3MpcmV0dXJuIHIuZGF0YTt0aHJvdyByLmVycm9yfXNhZmVQYXJzZSh0LG4pe2NvbnN0IHI9e2NvbW1vbjp7aXNzdWVzOltdLGFzeW5jOm4/LmFzeW5jPz8hMSxjb250ZXh0dWFsRXJyb3JNYXA6bj8uZXJyb3JNYXB9LHBhdGg6bj8ucGF0aHx8W10sc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhcmVudDpudWxsLGRhdGE6dCxwYXJzZWRUeXBlOlphKHQpfSxpPXRoaXMuX3BhcnNlU3luYyh7ZGF0YTp0LHBhdGg6ci5wYXRoLHBhcmVudDpyfSk7cmV0dXJuIHI0KHIsaSl9In52YWxpZGF0ZSIodCl7Y29uc3Qgbj17Y29tbW9uOntpc3N1ZXM6W10sYXN5bmM6ISF0aGlzWyJ+c3RhbmRhcmQiXS5hc3luY30scGF0aDpbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTp0LHBhcnNlZFR5cGU6WmEodCl9O2lmKCF0aGlzWyJ+c3RhbmRhcmQiXS5hc3luYyl0cnl7Y29uc3Qgcj10aGlzLl9wYXJzZVN5bmMoe2RhdGE6dCxwYXRoOltdLHBhcmVudDpufSk7cmV0dXJuIEV1KHIpP3t2YWx1ZTpyLnZhbHVlfTp7aXNzdWVzOm4uY29tbW9uLmlzc3Vlc319Y2F0Y2gocil7cj8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoImVuY291bnRlcmVkIikmJih0aGlzWyJ+c3RhbmRhcmQiXS5hc3luYz0hMCksbi5jb21tb249e2lzc3VlczpbXSxhc3luYzohMH19cmV0dXJuIHRoaXMuX3BhcnNlQXN5bmMoe2RhdGE6dCxwYXRoOltdLHBhcmVudDpufSkudGhlbihyPT5FdShyKT97dmFsdWU6ci52YWx1ZX06e2lzc3VlczpuLmNvbW1vbi5pc3N1ZXN9KX1hc3luYyBwYXJzZUFzeW5jKHQsbil7Y29uc3Qgcj1hd2FpdCB0aGlzLnNhZmVQYXJzZUFzeW5jKHQsbik7aWYoci5zdWNjZXNzKXJldHVybiByLmRhdGE7dGhyb3cgci5lcnJvcn1hc3luYyBzYWZlUGFyc2VBc3luYyh0LG4pe2NvbnN0IHI9e2NvbW1vbjp7aXNzdWVzOltdLGNvbnRleHR1YWxFcnJvck1hcDpuPy5lcnJvck1hcCxhc3luYzohMH0scGF0aDpuPy5wYXRofHxbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTp0LHBhcnNlZFR5cGU6WmEodCl9LGk9dGhpcy5fcGFyc2Uoe2RhdGE6dCxwYXRoOnIucGF0aCxwYXJlbnQ6cn0pLG89YXdhaXQod3koaSk/aTpQcm9taXNlLnJlc29sdmUoaSkpO3JldHVybiByNChyLG8pfXJlZmluZSh0LG4pe2NvbnN0IHI9aT0+dHlwZW9mIG49PSJzdHJpbmcifHx0eXBlb2Ygbj4idSI/e21lc3NhZ2U6bn06dHlwZW9mIG49PSJmdW5jdGlvbiI/bihpKTpuO3JldHVybiB0aGlzLl9yZWZpbmVtZW50KChpLG8pPT57Y29uc3Qgcz10KGkpLHU9KCk9Pm8uYWRkSXNzdWUoe2NvZGU6eWUuY3VzdG9tLC4uLnIoaSl9KTtyZXR1cm4gdHlwZW9mIFByb21pc2U8InUiJiZzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4oZj0+Zj8hMDoodSgpLCExKSk6cz8hMDoodSgpLCExKX0pfXJlZmluZW1lbnQodCxuKXtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgocixpKT0+dChyKT8hMDooaS5hZGRJc3N1ZSh0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKHIsaSk6biksITEpKX1fcmVmaW5lbWVudCh0KXtyZXR1cm4gbmV3IGp1KHtzY2hlbWE6dGhpcyx0eXBlTmFtZTpYZS5ab2RFZmZlY3RzLGVmZmVjdDp7dHlwZToicmVmaW5lbWVudCIscmVmaW5lbWVudDp0fX0pfXN1cGVyUmVmaW5lKHQpe3JldHVybiB0aGlzLl9yZWZpbmVtZW50KHQpfWNvbnN0cnVjdG9yKHQpe3RoaXMuc3BhPXRoaXMuc2FmZVBhcnNlQXN5bmMsdGhpcy5fZGVmPXQsdGhpcy5wYXJzZT10aGlzLnBhcnNlLmJpbmQodGhpcyksdGhpcy5zYWZlUGFyc2U9dGhpcy5zYWZlUGFyc2UuYmluZCh0aGlzKSx0aGlzLnBhcnNlQXN5bmM9dGhpcy5wYXJzZUFzeW5jLmJpbmQodGhpcyksdGhpcy5zYWZlUGFyc2VBc3luYz10aGlzLnNhZmVQYXJzZUFzeW5jLmJpbmQodGhpcyksdGhpcy5zcGE9dGhpcy5zcGEuYmluZCh0aGlzKSx0aGlzLnJlZmluZT10aGlzLnJlZmluZS5iaW5kKHRoaXMpLHRoaXMucmVmaW5lbWVudD10aGlzLnJlZmluZW1lbnQuYmluZCh0aGlzKSx0aGlzLnN1cGVyUmVmaW5lPXRoaXMuc3VwZXJSZWZpbmUuYmluZCh0aGlzKSx0aGlzLm9wdGlvbmFsPXRoaXMub3B0aW9uYWwuYmluZCh0aGlzKSx0aGlzLm51bGxhYmxlPXRoaXMubnVsbGFibGUuYmluZCh0aGlzKSx0aGlzLm51bGxpc2g9dGhpcy5udWxsaXNoLmJpbmQodGhpcyksdGhpcy5hcnJheT10aGlzLmFycmF5LmJpbmQodGhpcyksdGhpcy5wcm9taXNlPXRoaXMucHJvbWlzZS5iaW5kKHRoaXMpLHRoaXMub3I9dGhpcy5vci5iaW5kKHRoaXMpLHRoaXMuYW5kPXRoaXMuYW5kLmJpbmQodGhpcyksdGhpcy50cmFuc2Zvcm09dGhpcy50cmFuc2Zvcm0uYmluZCh0aGlzKSx0aGlzLmJyYW5kPXRoaXMuYnJhbmQuYmluZCh0aGlzKSx0aGlzLmRlZmF1bHQ9dGhpcy5kZWZhdWx0LmJpbmQodGhpcyksdGhpcy5jYXRjaD10aGlzLmNhdGNoLmJpbmQodGhpcyksdGhpcy5kZXNjcmliZT10aGlzLmRlc2NyaWJlLmJpbmQodGhpcyksdGhpcy5waXBlPXRoaXMucGlwZS5iaW5kKHRoaXMpLHRoaXMucmVhZG9ubHk9dGhpcy5yZWFkb25seS5iaW5kKHRoaXMpLHRoaXMuaXNOdWxsYWJsZT10aGlzLmlzTnVsbGFibGUuYmluZCh0aGlzKSx0aGlzLmlzT3B0aW9uYWw9dGhpcy5pc09wdGlvbmFsLmJpbmQodGhpcyksdGhpc1sifnN0YW5kYXJkIl09e3ZlcnNpb246MSx2ZW5kb3I6InpvZCIsdmFsaWRhdGU6bj0+dGhpc1sifnZhbGlkYXRlIl0obil9fW9wdGlvbmFsKCl7cmV0dXJuIG9vLmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9bnVsbGFibGUoKXtyZXR1cm4gUHUuY3JlYXRlKHRoaXMsdGhpcy5fZGVmKX1udWxsaXNoKCl7cmV0dXJuIHRoaXMubnVsbGFibGUoKS5vcHRpb25hbCgpfWFycmF5KCl7cmV0dXJuIGppLmNyZWF0ZSh0aGlzKX1wcm9taXNlKCl7cmV0dXJuIE95LmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9b3IodCl7cmV0dXJuIEF5LmNyZWF0ZShbdGhpcyx0XSx0aGlzLl9kZWYpfWFuZCh0KXtyZXR1cm4gX3kuY3JlYXRlKHRoaXMsdCx0aGlzLl9kZWYpfXRyYW5zZm9ybSh0KXtyZXR1cm4gbmV3IGp1KHsuLi5udCh0aGlzLl9kZWYpLHNjaGVtYTp0aGlzLHR5cGVOYW1lOlhlLlpvZEVmZmVjdHMsZWZmZWN0Ont0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fX0pfWRlZmF1bHQodCl7Y29uc3Qgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90OigpPT50O3JldHVybiBuZXcgSl8oey4uLm50KHRoaXMuX2RlZiksaW5uZXJUeXBlOnRoaXMsZGVmYXVsdFZhbHVlOm4sdHlwZU5hbWU6WGUuWm9kRGVmYXVsdH0pfWJyYW5kKCl7cmV0dXJuIG5ldyBWeGUoe3R5cGVOYW1lOlhlLlpvZEJyYW5kZWQsdHlwZTp0aGlzLC4uLm50KHRoaXMuX2RlZil9KX1jYXRjaCh0KXtjb25zdCBuPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6KCk9PnQ7cmV0dXJuIG5ldyBlTyh7Li4ubnQodGhpcy5fZGVmKSxpbm5lclR5cGU6dGhpcyxjYXRjaFZhbHVlOm4sdHlwZU5hbWU6WGUuWm9kQ2F0Y2h9KX1kZXNjcmliZSh0KXtjb25zdCBuPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBuKHsuLi50aGlzLl9kZWYsZGVzY3JpcHRpb246dH0pfXBpcGUodCl7cmV0dXJuIENFLmNyZWF0ZSh0aGlzLHQpfXJlYWRvbmx5KCl7cmV0dXJuIHRPLmNyZWF0ZSh0aGlzKX1pc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc31pc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9fWNvbnN0IGd4ZT0vXmNbXlxzLV17OCx9JC9pLGJ4ZT0vXlswLTlhLXpdKyQvLHh4ZT0vXlswLTlBLUhKS01OUC1UVi1aXXsyNn0kL2ksd3hlPS9eWzAtOWEtZkEtRl17OH1cYi1bMC05YS1mQS1GXXs0fVxiLVswLTlhLWZBLUZdezR9XGItWzAtOWEtZkEtRl17NH1cYi1bMC05YS1mQS1GXXsxMn0kL2ksU3hlPS9eW2EtejAtOV8tXXsyMX0kL2ksQXhlPS9eW0EtWmEtejAtOS1fXStcLltBLVphLXowLTktX10rXC5bQS1aYS16MC05LV9dKiQvLF94ZT0vXlstK10/UCg/ISQpKD86KD86Wy0rXT9cZCtZKXwoPzpbLStdP1xkK1suLF1cZCtZJCkpPyg/Oig/OlstK10/XGQrTSl8KD86Wy0rXT9cZCtbLixdXGQrTSQpKT8oPzooPzpbLStdP1xkK1cpfCg/OlstK10/XGQrWy4sXVxkK1ckKSk/KD86KD86Wy0rXT9cZCtEKXwoPzpbLStdP1xkK1suLF1cZCtEJCkpPyg/OlQoPz1bXGQrLV0pKD86KD86Wy0rXT9cZCtIKXwoPzpbLStdP1xkK1suLF1cZCtIJCkpPyg/Oig/OlstK10/XGQrTSl8KD86Wy0rXT9cZCtbLixdXGQrTSQpKT8oPzpbLStdP1xkKyg/OlsuLF1cZCspP1MpPyk/PyQvLE94ZT0vXig/IVwuKSg/IS4qXC5cLikoW0EtWjAtOV8nK1wtXC5dKilbQS1aMC05XystXUAoW0EtWjAtOV1bQS1aMC05XC1dKlwuKStbQS1aXXsyLH0kL2ksVHhlPSJeKFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxccHtFbW9qaV9Db21wb25lbnR9KSskIjtsZXQga1M7Y29uc3QgRXhlPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxDeGU9L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwvKDNbMC0yXXxbMTJdP1swLTldKSQvLGp4ZT0vXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSkpJC8sUHhlPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8sTXhlPS9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLyxSeGU9L14oWzAtOWEtekEtWi1fXXs0fSkqKChbMC05YS16QS1aLV9dezJ9KD09KT8pfChbMC05YS16QS1aLV9dezN9KD0pPykpPyQvLFFGPSIoKFxcZFxcZFsyNDY4XVswNDhdfFxcZFxcZFsxMzU3OV1bMjZdfFxcZFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcZHs0fS0oKDBbMTM1NzhdfDFbMDJdKS0oMFsxLTldfFsxMl1cXGR8M1swMV0pfCgwWzQ2OV18MTEpLSgwWzEtOV18WzEyXVxcZHwzMCl8KDAyKS0oMFsxLTldfDFcXGR8MlswLThdKSkpIixOeGU9bmV3IFJlZ0V4cChgXiR7UUZ9JGApO2Z1bmN0aW9uIEpGKGUpe2xldCB0PSJbMC01XVxcZCI7ZS5wcmVjaXNpb24/dD1gJHt0fVxcLlxcZHske2UucHJlY2lzaW9ufX1gOmUucHJlY2lzaW9uPT1udWxsJiYodD1gJHt0fShcXC5cXGQrKT9gKTtjb25zdCBuPWUucHJlY2lzaW9uPyIrIjoiPyI7cmV0dXJuYChbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQoOiR7dH0pJHtufWB9ZnVuY3Rpb24ga3hlKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHtKRihlKX0kYCl9ZnVuY3Rpb24gRHhlKGUpe2xldCB0PWAke1FGfVQke0pGKGUpfWA7Y29uc3Qgbj1bXTtyZXR1cm4gbi5wdXNoKGUubG9jYWw/Ilo/IjoiWiIpLGUub2Zmc2V0JiZuLnB1c2goIihbKy1dXFxkezJ9Oj9cXGR7Mn0pIiksdD1gJHt0fSgke24uam9pbigifCIpfSlgLG5ldyBSZWdFeHAoYF4ke3R9JGApfWZ1bmN0aW9uIEx4ZShlLHQpe3JldHVybiEhKCh0PT09InY0Inx8IXQpJiZFeGUudGVzdChlKXx8KHQ9PT0idjYifHwhdCkmJmp4ZS50ZXN0KGUpKX1mdW5jdGlvbiBJeGUoZSx0KXtpZighQXhlLnRlc3QoZSkpcmV0dXJuITE7dHJ5e2NvbnN0W25dPWUuc3BsaXQoIi4iKTtpZighbilyZXR1cm4hMTtjb25zdCByPW4ucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikucGFkRW5kKG4ubGVuZ3RoKyg0LW4ubGVuZ3RoJTQpJTQsIj0iKSxpPUpTT04ucGFyc2UoYXRvYihyKSk7cmV0dXJuISh0eXBlb2YgaSE9Im9iamVjdCJ8fGk9PT1udWxsfHwidHlwImluIGkmJmk/LnR5cCE9PSJKV1QifHwhaS5hbGd8fHQmJmkuYWxnIT09dCl9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uICR4ZShlLHQpe3JldHVybiEhKCh0PT09InY0Inx8IXQpJiZDeGUudGVzdChlKXx8KHQ9PT0idjYifHwhdCkmJlB4ZS50ZXN0KGUpKX1jbGFzcyBubyBleHRlbmRzIGN0e19wYXJzZSh0KXtpZih0aGlzLl9kZWYuY29lcmNlJiYodC5kYXRhPVN0cmluZyh0LmRhdGEpKSx0aGlzLl9nZXRUeXBlKHQpIT09a2Uuc3RyaW5nKXtjb25zdCBvPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO3JldHVybiBPZShvLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS5zdHJpbmcscmVjZWl2ZWQ6by5wYXJzZWRUeXBlfSksWWV9Y29uc3Qgcj1uZXcgQXI7bGV0IGk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fZGVmLmNoZWNrcylpZihvLmtpbmQ9PT0ibWluIil0LmRhdGEubGVuZ3RoPG8udmFsdWUmJihpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7Y29kZTp5ZS50b29fc21hbGwsbWluaW11bTpvLnZhbHVlLHR5cGU6InN0cmluZyIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKTtlbHNlIGlmKG8ua2luZD09PSJtYXgiKXQuZGF0YS5sZW5ndGg+by52YWx1ZSYmKGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHtjb2RlOnllLnRvb19iaWcsbWF4aW11bTpvLnZhbHVlLHR5cGU6InN0cmluZyIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKTtlbHNlIGlmKG8ua2luZD09PSJsZW5ndGgiKXtjb25zdCBzPXQuZGF0YS5sZW5ndGg+by52YWx1ZSx1PXQuZGF0YS5sZW5ndGg8by52YWx1ZTsoc3x8dSkmJihpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSkscz9PZShpLHtjb2RlOnllLnRvb19iaWcsbWF4aW11bTpvLnZhbHVlLHR5cGU6InN0cmluZyIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6by5tZXNzYWdlfSk6dSYmT2UoaSx7Y29kZTp5ZS50b29fc21hbGwsbWluaW11bTpvLnZhbHVlLHR5cGU6InN0cmluZyIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKX1lbHNlIGlmKG8ua2luZD09PSJlbWFpbCIpT3hlLnRlc3QodC5kYXRhKXx8KGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHt2YWxpZGF0aW9uOiJlbWFpbCIsY29kZTp5ZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOm8ubWVzc2FnZX0pLHIuZGlydHkoKSk7ZWxzZSBpZihvLmtpbmQ9PT0iZW1vamkiKWtTfHwoa1M9bmV3IFJlZ0V4cChUeGUsInUiKSksa1MudGVzdCh0LmRhdGEpfHwoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse3ZhbGlkYXRpb246ImVtb2ppIixjb2RlOnllLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKTtlbHNlIGlmKG8ua2luZD09PSJ1dWlkIil3eGUudGVzdCh0LmRhdGEpfHwoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse3ZhbGlkYXRpb246InV1aWQiLGNvZGU6eWUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpO2Vsc2UgaWYoby5raW5kPT09Im5hbm9pZCIpU3hlLnRlc3QodC5kYXRhKXx8KGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHt2YWxpZGF0aW9uOiJuYW5vaWQiLGNvZGU6eWUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpO2Vsc2UgaWYoby5raW5kPT09ImN1aWQiKWd4ZS50ZXN0KHQuZGF0YSl8fChpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7dmFsaWRhdGlvbjoiY3VpZCIsY29kZTp5ZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOm8ubWVzc2FnZX0pLHIuZGlydHkoKSk7ZWxzZSBpZihvLmtpbmQ9PT0iY3VpZDIiKWJ4ZS50ZXN0KHQuZGF0YSl8fChpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7dmFsaWRhdGlvbjoiY3VpZDIiLGNvZGU6eWUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpO2Vsc2UgaWYoby5raW5kPT09InVsaWQiKXh4ZS50ZXN0KHQuZGF0YSl8fChpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7dmFsaWRhdGlvbjoidWxpZCIsY29kZTp5ZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOm8ubWVzc2FnZX0pLHIuZGlydHkoKSk7ZWxzZSBpZihvLmtpbmQ9PT0idXJsIil0cnl7bmV3IFVSTCh0LmRhdGEpfWNhdGNoe2k9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHt2YWxpZGF0aW9uOiJ1cmwiLGNvZGU6eWUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCl9ZWxzZSBvLmtpbmQ9PT0icmVnZXgiPyhvLnJlZ2V4Lmxhc3RJbmRleD0wLG8ucmVnZXgudGVzdCh0LmRhdGEpfHwoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse3ZhbGlkYXRpb246InJlZ2V4Iixjb2RlOnllLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKSk6by5raW5kPT09InRyaW0iP3QuZGF0YT10LmRhdGEudHJpbSgpOm8ua2luZD09PSJpbmNsdWRlcyI/dC5kYXRhLmluY2x1ZGVzKG8udmFsdWUsby5wb3NpdGlvbil8fChpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7Y29kZTp5ZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOntpbmNsdWRlczpvLnZhbHVlLHBvc2l0aW9uOm8ucG9zaXRpb259LG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKTpvLmtpbmQ9PT0idG9Mb3dlckNhc2UiP3QuZGF0YT10LmRhdGEudG9Mb3dlckNhc2UoKTpvLmtpbmQ9PT0idG9VcHBlckNhc2UiP3QuZGF0YT10LmRhdGEudG9VcHBlckNhc2UoKTpvLmtpbmQ9PT0ic3RhcnRzV2l0aCI/dC5kYXRhLnN0YXJ0c1dpdGgoby52YWx1ZSl8fChpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7Y29kZTp5ZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOntzdGFydHNXaXRoOm8udmFsdWV9LG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKTpvLmtpbmQ9PT0iZW5kc1dpdGgiP3QuZGF0YS5lbmRzV2l0aChvLnZhbHVlKXx8KGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHtjb2RlOnllLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e2VuZHNXaXRoOm8udmFsdWV9LG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKTpvLmtpbmQ9PT0iZGF0ZXRpbWUiP0R4ZShvKS50ZXN0KHQuZGF0YSl8fChpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7Y29kZTp5ZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOiJkYXRldGltZSIsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpOm8ua2luZD09PSJkYXRlIj9OeGUudGVzdCh0LmRhdGEpfHwoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse2NvZGU6eWUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjoiZGF0ZSIsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpOm8ua2luZD09PSJ0aW1lIj9reGUobykudGVzdCh0LmRhdGEpfHwoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse2NvZGU6eWUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjoidGltZSIsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpOm8ua2luZD09PSJkdXJhdGlvbiI/X3hlLnRlc3QodC5kYXRhKXx8KGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHt2YWxpZGF0aW9uOiJkdXJhdGlvbiIsY29kZTp5ZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOm8ubWVzc2FnZX0pLHIuZGlydHkoKSk6by5raW5kPT09ImlwIj9MeGUodC5kYXRhLG8udmVyc2lvbil8fChpPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsaSksT2UoaSx7dmFsaWRhdGlvbjoiaXAiLGNvZGU6eWUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpOm8ua2luZD09PSJqd3QiP0l4ZSh0LmRhdGEsby5hbGcpfHwoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse3ZhbGlkYXRpb246Imp3dCIsY29kZTp5ZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOm8ubWVzc2FnZX0pLHIuZGlydHkoKSk6by5raW5kPT09ImNpZHIiPyR4ZSh0LmRhdGEsby52ZXJzaW9uKXx8KGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHt2YWxpZGF0aW9uOiJjaWRyIixjb2RlOnllLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6by5tZXNzYWdlfSksci5kaXJ0eSgpKTpvLmtpbmQ9PT0iYmFzZTY0Ij9NeGUudGVzdCh0LmRhdGEpfHwoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse3ZhbGlkYXRpb246ImJhc2U2NCIsY29kZTp5ZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOm8ubWVzc2FnZX0pLHIuZGlydHkoKSk6by5raW5kPT09ImJhc2U2NHVybCI/UnhlLnRlc3QodC5kYXRhKXx8KGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHt2YWxpZGF0aW9uOiJiYXNlNjR1cmwiLGNvZGU6eWUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpvLm1lc3NhZ2V9KSxyLmRpcnR5KCkpOmR0LmFzc2VydE5ldmVyKG8pO3JldHVybntzdGF0dXM6ci52YWx1ZSx2YWx1ZTp0LmRhdGF9fV9yZWdleCh0LG4scil7cmV0dXJuIHRoaXMucmVmaW5lbWVudChpPT50LnRlc3QoaSkse3ZhbGlkYXRpb246bixjb2RlOnllLmludmFsaWRfc3RyaW5nLC4uLkRlLmVyclRvT2JqKHIpfSl9X2FkZENoZWNrKHQpe3JldHVybiBuZXcgbm8oey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsdF19KX1lbWFpbCh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImVtYWlsIiwuLi5EZS5lcnJUb09iaih0KX0pfXVybCh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6InVybCIsLi4uRGUuZXJyVG9PYmoodCl9KX1lbW9qaSh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImVtb2ppIiwuLi5EZS5lcnJUb09iaih0KX0pfXV1aWQodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJ1dWlkIiwuLi5EZS5lcnJUb09iaih0KX0pfW5hbm9pZCh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im5hbm9pZCIsLi4uRGUuZXJyVG9PYmoodCl9KX1jdWlkKHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoiY3VpZCIsLi4uRGUuZXJyVG9PYmoodCl9KX1jdWlkMih0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImN1aWQyIiwuLi5EZS5lcnJUb09iaih0KX0pfXVsaWQodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJ1bGlkIiwuLi5EZS5lcnJUb09iaih0KX0pfWJhc2U2NCh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImJhc2U2NCIsLi4uRGUuZXJyVG9PYmoodCl9KX1iYXNlNjR1cmwodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJiYXNlNjR1cmwiLC4uLkRlLmVyclRvT2JqKHQpfSl9and0KHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoiand0IiwuLi5EZS5lcnJUb09iaih0KX0pfWlwKHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoiaXAiLC4uLkRlLmVyclRvT2JqKHQpfSl9Y2lkcih0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImNpZHIiLC4uLkRlLmVyclRvT2JqKHQpfSl9ZGF0ZXRpbWUodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90aGlzLl9hZGRDaGVjayh7a2luZDoiZGF0ZXRpbWUiLHByZWNpc2lvbjpudWxsLG9mZnNldDohMSxsb2NhbDohMSxtZXNzYWdlOnR9KTp0aGlzLl9hZGRDaGVjayh7a2luZDoiZGF0ZXRpbWUiLHByZWNpc2lvbjp0eXBlb2YgdD8ucHJlY2lzaW9uPiJ1Ij9udWxsOnQ/LnByZWNpc2lvbixvZmZzZXQ6dD8ub2Zmc2V0Pz8hMSxsb2NhbDp0Py5sb2NhbD8/ITEsLi4uRGUuZXJyVG9PYmoodD8ubWVzc2FnZSl9KX1kYXRlKHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoiZGF0ZSIsbWVzc2FnZTp0fSl9dGltZSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3RoaXMuX2FkZENoZWNrKHtraW5kOiJ0aW1lIixwcmVjaXNpb246bnVsbCxtZXNzYWdlOnR9KTp0aGlzLl9hZGRDaGVjayh7a2luZDoidGltZSIscHJlY2lzaW9uOnR5cGVvZiB0Py5wcmVjaXNpb24+InUiP251bGw6dD8ucHJlY2lzaW9uLC4uLkRlLmVyclRvT2JqKHQ/Lm1lc3NhZ2UpfSl9ZHVyYXRpb24odCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJkdXJhdGlvbiIsLi4uRGUuZXJyVG9PYmoodCl9KX1yZWdleCh0LG4pe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoicmVnZXgiLHJlZ2V4OnQsLi4uRGUuZXJyVG9PYmoobil9KX1pbmNsdWRlcyh0LG4pe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoiaW5jbHVkZXMiLHZhbHVlOnQscG9zaXRpb246bj8ucG9zaXRpb24sLi4uRGUuZXJyVG9PYmoobj8ubWVzc2FnZSl9KX1zdGFydHNXaXRoKHQsbil7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJzdGFydHNXaXRoIix2YWx1ZTp0LC4uLkRlLmVyclRvT2JqKG4pfSl9ZW5kc1dpdGgodCxuKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImVuZHNXaXRoIix2YWx1ZTp0LC4uLkRlLmVyclRvT2JqKG4pfSl9bWluKHQsbil7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLHZhbHVlOnQsLi4uRGUuZXJyVG9PYmoobil9KX1tYXgodCxuKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1heCIsdmFsdWU6dCwuLi5EZS5lcnJUb09iaihuKX0pfWxlbmd0aCh0LG4pe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoibGVuZ3RoIix2YWx1ZTp0LC4uLkRlLmVyclRvT2JqKG4pfSl9bm9uZW1wdHkodCl7cmV0dXJuIHRoaXMubWluKDEsRGUuZXJyVG9PYmoodCkpfXRyaW0oKXtyZXR1cm4gbmV3IG5vKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOiJ0cmltIn1dfSl9dG9Mb3dlckNhc2UoKXtyZXR1cm4gbmV3IG5vKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOiJ0b0xvd2VyQ2FzZSJ9XX0pfXRvVXBwZXJDYXNlKCl7cmV0dXJuIG5ldyBubyh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDoidG9VcHBlckNhc2UifV19KX1nZXQgaXNEYXRldGltZSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKHQ9PnQua2luZD09PSJkYXRldGltZSIpfWdldCBpc0RhdGUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0iZGF0ZSIpfWdldCBpc1RpbWUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0idGltZSIpfWdldCBpc0R1cmF0aW9uKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQodD0+dC5raW5kPT09ImR1cmF0aW9uIil9Z2V0IGlzRW1haWwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0iZW1haWwiKX1nZXQgaXNVUkwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0idXJsIil9Z2V0IGlzRW1vamkoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0iZW1vamkiKX1nZXQgaXNVVUlEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQodD0+dC5raW5kPT09InV1aWQiKX1nZXQgaXNOQU5PSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0ibmFub2lkIil9Z2V0IGlzQ1VJRCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKHQ9PnQua2luZD09PSJjdWlkIil9Z2V0IGlzQ1VJRDIoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0iY3VpZDIiKX1nZXQgaXNVTElEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQodD0+dC5raW5kPT09InVsaWQiKX1nZXQgaXNJUCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKHQ9PnQua2luZD09PSJpcCIpfWdldCBpc0NJRFIoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0iY2lkciIpfWdldCBpc0Jhc2U2NCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKHQ9PnQua2luZD09PSJiYXNlNjQiKX1nZXQgaXNCYXNlNjR1cmwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0iYmFzZTY0dXJsIil9Z2V0IG1pbkxlbmd0aCgpe2xldCB0PW51bGw7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fZGVmLmNoZWNrcyluLmtpbmQ9PT0ibWluIiYmKHQ9PT1udWxsfHxuLnZhbHVlPnQpJiYodD1uLnZhbHVlKTtyZXR1cm4gdH1nZXQgbWF4TGVuZ3RoKCl7bGV0IHQ9bnVsbDtmb3IoY29uc3QgbiBvZiB0aGlzLl9kZWYuY2hlY2tzKW4ua2luZD09PSJtYXgiJiYodD09PW51bGx8fG4udmFsdWU8dCkmJih0PW4udmFsdWUpO3JldHVybiB0fX1uby5jcmVhdGU9ZT0+bmV3IG5vKHtjaGVja3M6W10sdHlwZU5hbWU6WGUuWm9kU3RyaW5nLGNvZXJjZTplPy5jb2VyY2U/PyExLC4uLm50KGUpfSk7ZnVuY3Rpb24gQnhlKGUsdCl7Y29uc3Qgbj0oZS50b1N0cmluZygpLnNwbGl0KCIuIilbMV18fCIiKS5sZW5ndGgscj0odC50b1N0cmluZygpLnNwbGl0KCIuIilbMV18fCIiKS5sZW5ndGgsaT1uPnI/bjpyLG89TnVtYmVyLnBhcnNlSW50KGUudG9GaXhlZChpKS5yZXBsYWNlKCIuIiwiIikpLHM9TnVtYmVyLnBhcnNlSW50KHQudG9GaXhlZChpKS5yZXBsYWNlKCIuIiwiIikpO3JldHVybiBvJXMvMTAqKml9Y2xhc3MgZ2QgZXh0ZW5kcyBjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGUsdGhpcy5zdGVwPXRoaXMubXVsdGlwbGVPZn1fcGFyc2UodCl7aWYodGhpcy5fZGVmLmNvZXJjZSYmKHQuZGF0YT1OdW1iZXIodC5kYXRhKSksdGhpcy5fZ2V0VHlwZSh0KSE9PWtlLm51bWJlcil7Y29uc3Qgbz10aGlzLl9nZXRPclJldHVybkN0eCh0KTtyZXR1cm4gT2Uobyx7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6a2UubnVtYmVyLHJlY2VpdmVkOm8ucGFyc2VkVHlwZX0pLFllfWxldCByO2NvbnN0IGk9bmV3IEFyO2Zvcihjb25zdCBvIG9mIHRoaXMuX2RlZi5jaGVja3Mpby5raW5kPT09ImludCI/ZHQuaXNJbnRlZ2VyKHQuZGF0YSl8fChyPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsciksT2Uocix7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6ImludGVnZXIiLHJlY2VpdmVkOiJmbG9hdCIsbWVzc2FnZTpvLm1lc3NhZ2V9KSxpLmRpcnR5KCkpOm8ua2luZD09PSJtaW4iPyhvLmluY2x1c2l2ZT90LmRhdGE8by52YWx1ZTp0LmRhdGE8PW8udmFsdWUpJiYocj10aGlzLl9nZXRPclJldHVybkN0eCh0LHIpLE9lKHIse2NvZGU6eWUudG9vX3NtYWxsLG1pbmltdW06by52YWx1ZSx0eXBlOiJudW1iZXIiLGluY2x1c2l2ZTpvLmluY2x1c2l2ZSxleGFjdDohMSxtZXNzYWdlOm8ubWVzc2FnZX0pLGkuZGlydHkoKSk6by5raW5kPT09Im1heCI/KG8uaW5jbHVzaXZlP3QuZGF0YT5vLnZhbHVlOnQuZGF0YT49by52YWx1ZSkmJihyPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsciksT2Uocix7Y29kZTp5ZS50b29fYmlnLG1heGltdW06by52YWx1ZSx0eXBlOiJudW1iZXIiLGluY2x1c2l2ZTpvLmluY2x1c2l2ZSxleGFjdDohMSxtZXNzYWdlOm8ubWVzc2FnZX0pLGkuZGlydHkoKSk6by5raW5kPT09Im11bHRpcGxlT2YiP0J4ZSh0LmRhdGEsby52YWx1ZSkhPT0wJiYocj10aGlzLl9nZXRPclJldHVybkN0eCh0LHIpLE9lKHIse2NvZGU6eWUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6by52YWx1ZSxtZXNzYWdlOm8ubWVzc2FnZX0pLGkuZGlydHkoKSk6by5raW5kPT09ImZpbml0ZSI/TnVtYmVyLmlzRmluaXRlKHQuZGF0YSl8fChyPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsciksT2Uocix7Y29kZTp5ZS5ub3RfZmluaXRlLG1lc3NhZ2U6by5tZXNzYWdlfSksaS5kaXJ0eSgpKTpkdC5hc3NlcnROZXZlcihvKTtyZXR1cm57c3RhdHVzOmkudmFsdWUsdmFsdWU6dC5kYXRhfX1ndGUodCxuKXtyZXR1cm4gdGhpcy5zZXRMaW1pdCgibWluIix0LCEwLERlLnRvU3RyaW5nKG4pKX1ndCh0LG4pe3JldHVybiB0aGlzLnNldExpbWl0KCJtaW4iLHQsITEsRGUudG9TdHJpbmcobikpfWx0ZSh0LG4pe3JldHVybiB0aGlzLnNldExpbWl0KCJtYXgiLHQsITAsRGUudG9TdHJpbmcobikpfWx0KHQsbil7cmV0dXJuIHRoaXMuc2V0TGltaXQoIm1heCIsdCwhMSxEZS50b1N0cmluZyhuKSl9c2V0TGltaXQodCxuLHIsaSl7cmV0dXJuIG5ldyBnZCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDp0LHZhbHVlOm4saW5jbHVzaXZlOnIsbWVzc2FnZTpEZS50b1N0cmluZyhpKX1dfSl9X2FkZENoZWNrKHQpe3JldHVybiBuZXcgZ2Qoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsdF19KX1pbnQodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJpbnQiLG1lc3NhZ2U6RGUudG9TdHJpbmcodCl9KX1wb3NpdGl2ZSh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1pbiIsdmFsdWU6MCxpbmNsdXNpdmU6ITEsbWVzc2FnZTpEZS50b1N0cmluZyh0KX0pfW5lZ2F0aXZlKHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoibWF4Iix2YWx1ZTowLGluY2x1c2l2ZTohMSxtZXNzYWdlOkRlLnRvU3RyaW5nKHQpfSl9bm9ucG9zaXRpdmUodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtYXgiLHZhbHVlOjAsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6RGUudG9TdHJpbmcodCl9KX1ub25uZWdhdGl2ZSh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1pbiIsdmFsdWU6MCxpbmNsdXNpdmU6ITAsbWVzc2FnZTpEZS50b1N0cmluZyh0KX0pfW11bHRpcGxlT2YodCxuKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im11bHRpcGxlT2YiLHZhbHVlOnQsbWVzc2FnZTpEZS50b1N0cmluZyhuKX0pfWZpbml0ZSh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImZpbml0ZSIsbWVzc2FnZTpEZS50b1N0cmluZyh0KX0pfXNhZmUodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixtZXNzYWdlOkRlLnRvU3RyaW5nKHQpfSkuX2FkZENoZWNrKHtraW5kOiJtYXgiLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixtZXNzYWdlOkRlLnRvU3RyaW5nKHQpfSl9Z2V0IG1pblZhbHVlKCl7bGV0IHQ9bnVsbDtmb3IoY29uc3QgbiBvZiB0aGlzLl9kZWYuY2hlY2tzKW4ua2luZD09PSJtaW4iJiYodD09PW51bGx8fG4udmFsdWU+dCkmJih0PW4udmFsdWUpO3JldHVybiB0fWdldCBtYXhWYWx1ZSgpe2xldCB0PW51bGw7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fZGVmLmNoZWNrcyluLmtpbmQ9PT0ibWF4IiYmKHQ9PT1udWxsfHxuLnZhbHVlPHQpJiYodD1uLnZhbHVlKTtyZXR1cm4gdH1nZXQgaXNJbnQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZCh0PT50LmtpbmQ9PT0iaW50Inx8dC5raW5kPT09Im11bHRpcGxlT2YiJiZkdC5pc0ludGVnZXIodC52YWx1ZSkpfWdldCBpc0Zpbml0ZSgpe2xldCB0PW51bGwsbj1udWxsO2Zvcihjb25zdCByIG9mIHRoaXMuX2RlZi5jaGVja3Mpe2lmKHIua2luZD09PSJmaW5pdGUifHxyLmtpbmQ9PT0iaW50Inx8ci5raW5kPT09Im11bHRpcGxlT2YiKXJldHVybiEwO3Iua2luZD09PSJtaW4iPyhuPT09bnVsbHx8ci52YWx1ZT5uKSYmKG49ci52YWx1ZSk6ci5raW5kPT09Im1heCImJih0PT09bnVsbHx8ci52YWx1ZTx0KSYmKHQ9ci52YWx1ZSl9cmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKSYmTnVtYmVyLmlzRmluaXRlKHQpfX1nZC5jcmVhdGU9ZT0+bmV3IGdkKHtjaGVja3M6W10sdHlwZU5hbWU6WGUuWm9kTnVtYmVyLGNvZXJjZTplPy5jb2VyY2V8fCExLC4uLm50KGUpfSk7Y2xhc3MgYmQgZXh0ZW5kcyBjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGV9X3BhcnNlKHQpe2lmKHRoaXMuX2RlZi5jb2VyY2UpdHJ5e3QuZGF0YT1CaWdJbnQodC5kYXRhKX1jYXRjaHtyZXR1cm4gdGhpcy5fZ2V0SW52YWxpZElucHV0KHQpfWlmKHRoaXMuX2dldFR5cGUodCkhPT1rZS5iaWdpbnQpcmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dCh0KTtsZXQgcjtjb25zdCBpPW5ldyBBcjtmb3IoY29uc3QgbyBvZiB0aGlzLl9kZWYuY2hlY2tzKW8ua2luZD09PSJtaW4iPyhvLmluY2x1c2l2ZT90LmRhdGE8by52YWx1ZTp0LmRhdGE8PW8udmFsdWUpJiYocj10aGlzLl9nZXRPclJldHVybkN0eCh0LHIpLE9lKHIse2NvZGU6eWUudG9vX3NtYWxsLHR5cGU6ImJpZ2ludCIsbWluaW11bTpvLnZhbHVlLGluY2x1c2l2ZTpvLmluY2x1c2l2ZSxtZXNzYWdlOm8ubWVzc2FnZX0pLGkuZGlydHkoKSk6by5raW5kPT09Im1heCI/KG8uaW5jbHVzaXZlP3QuZGF0YT5vLnZhbHVlOnQuZGF0YT49by52YWx1ZSkmJihyPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQsciksT2Uocix7Y29kZTp5ZS50b29fYmlnLHR5cGU6ImJpZ2ludCIsbWF4aW11bTpvLnZhbHVlLGluY2x1c2l2ZTpvLmluY2x1c2l2ZSxtZXNzYWdlOm8ubWVzc2FnZX0pLGkuZGlydHkoKSk6by5raW5kPT09Im11bHRpcGxlT2YiP3QuZGF0YSVvLnZhbHVlIT09QmlnSW50KDApJiYocj10aGlzLl9nZXRPclJldHVybkN0eCh0LHIpLE9lKHIse2NvZGU6eWUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6by52YWx1ZSxtZXNzYWdlOm8ubWVzc2FnZX0pLGkuZGlydHkoKSk6ZHQuYXNzZXJ0TmV2ZXIobyk7cmV0dXJue3N0YXR1czppLnZhbHVlLHZhbHVlOnQuZGF0YX19X2dldEludmFsaWRJbnB1dCh0KXtjb25zdCBuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO3JldHVybiBPZShuLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS5iaWdpbnQscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksWWV9Z3RlKHQsbil7cmV0dXJuIHRoaXMuc2V0TGltaXQoIm1pbiIsdCwhMCxEZS50b1N0cmluZyhuKSl9Z3QodCxuKXtyZXR1cm4gdGhpcy5zZXRMaW1pdCgibWluIix0LCExLERlLnRvU3RyaW5nKG4pKX1sdGUodCxuKXtyZXR1cm4gdGhpcy5zZXRMaW1pdCgibWF4Iix0LCEwLERlLnRvU3RyaW5nKG4pKX1sdCh0LG4pe3JldHVybiB0aGlzLnNldExpbWl0KCJtYXgiLHQsITEsRGUudG9TdHJpbmcobikpfXNldExpbWl0KHQsbixyLGkpe3JldHVybiBuZXcgYmQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6dCx2YWx1ZTpuLGluY2x1c2l2ZTpyLG1lc3NhZ2U6RGUudG9TdHJpbmcoaSl9XX0pfV9hZGRDaGVjayh0KXtyZXR1cm4gbmV3IGJkKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHRdfSl9cG9zaXRpdmUodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITEsbWVzc2FnZTpEZS50b1N0cmluZyh0KX0pfW5lZ2F0aXZlKHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoibWF4Iix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiExLG1lc3NhZ2U6RGUudG9TdHJpbmcodCl9KX1ub25wb3NpdGl2ZSh0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1heCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMCxtZXNzYWdlOkRlLnRvU3RyaW5nKHQpfSl9bm9ubmVnYXRpdmUodCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITAsbWVzc2FnZTpEZS50b1N0cmluZyh0KX0pfW11bHRpcGxlT2YodCxuKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im11bHRpcGxlT2YiLHZhbHVlOnQsbWVzc2FnZTpEZS50b1N0cmluZyhuKX0pfWdldCBtaW5WYWx1ZSgpe2xldCB0PW51bGw7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fZGVmLmNoZWNrcyluLmtpbmQ9PT0ibWluIiYmKHQ9PT1udWxsfHxuLnZhbHVlPnQpJiYodD1uLnZhbHVlKTtyZXR1cm4gdH1nZXQgbWF4VmFsdWUoKXtsZXQgdD1udWxsO2Zvcihjb25zdCBuIG9mIHRoaXMuX2RlZi5jaGVja3Mpbi5raW5kPT09Im1heCImJih0PT09bnVsbHx8bi52YWx1ZTx0KSYmKHQ9bi52YWx1ZSk7cmV0dXJuIHR9fWJkLmNyZWF0ZT1lPT5uZXcgYmQoe2NoZWNrczpbXSx0eXBlTmFtZTpYZS5ab2RCaWdJbnQsY29lcmNlOmU/LmNvZXJjZT8/ITEsLi4ubnQoZSl9KTtjbGFzcyBpNCBleHRlbmRzIGN0e19wYXJzZSh0KXtpZih0aGlzLl9kZWYuY29lcmNlJiYodC5kYXRhPSEhdC5kYXRhKSx0aGlzLl9nZXRUeXBlKHQpIT09a2UuYm9vbGVhbil7Y29uc3Qgcj10aGlzLl9nZXRPclJldHVybkN0eCh0KTtyZXR1cm4gT2Uocix7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6a2UuYm9vbGVhbixyZWNlaXZlZDpyLnBhcnNlZFR5cGV9KSxZZX1yZXR1cm4gSHIodC5kYXRhKX19aTQuY3JlYXRlPWU9Pm5ldyBpNCh7dHlwZU5hbWU6WGUuWm9kQm9vbGVhbixjb2VyY2U6ZT8uY29lcmNlfHwhMSwuLi5udChlKX0pO2NsYXNzIFN5IGV4dGVuZHMgY3R7X3BhcnNlKHQpe2lmKHRoaXMuX2RlZi5jb2VyY2UmJih0LmRhdGE9bmV3IERhdGUodC5kYXRhKSksdGhpcy5fZ2V0VHlwZSh0KSE9PWtlLmRhdGUpe2NvbnN0IG89dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCk7cmV0dXJuIE9lKG8se2NvZGU6eWUuaW52YWxpZF90eXBlLGV4cGVjdGVkOmtlLmRhdGUscmVjZWl2ZWQ6by5wYXJzZWRUeXBlfSksWWV9aWYoTnVtYmVyLmlzTmFOKHQuZGF0YS5nZXRUaW1lKCkpKXtjb25zdCBvPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO3JldHVybiBPZShvLHtjb2RlOnllLmludmFsaWRfZGF0ZX0pLFllfWNvbnN0IHI9bmV3IEFyO2xldCBpO2Zvcihjb25zdCBvIG9mIHRoaXMuX2RlZi5jaGVja3Mpby5raW5kPT09Im1pbiI/dC5kYXRhLmdldFRpbWUoKTxvLnZhbHVlJiYoaT10aGlzLl9nZXRPclJldHVybkN0eCh0LGkpLE9lKGkse2NvZGU6eWUudG9vX3NtYWxsLG1lc3NhZ2U6by5tZXNzYWdlLGluY2x1c2l2ZTohMCxleGFjdDohMSxtaW5pbXVtOm8udmFsdWUsdHlwZToiZGF0ZSJ9KSxyLmRpcnR5KCkpOm8ua2luZD09PSJtYXgiP3QuZGF0YS5nZXRUaW1lKCk+by52YWx1ZSYmKGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCxpKSxPZShpLHtjb2RlOnllLnRvb19iaWcsbWVzc2FnZTpvLm1lc3NhZ2UsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1heGltdW06by52YWx1ZSx0eXBlOiJkYXRlIn0pLHIuZGlydHkoKSk6ZHQuYXNzZXJ0TmV2ZXIobyk7cmV0dXJue3N0YXR1czpyLnZhbHVlLHZhbHVlOm5ldyBEYXRlKHQuZGF0YS5nZXRUaW1lKCkpfX1fYWRkQ2hlY2sodCl7cmV0dXJuIG5ldyBTeSh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx0XX0pfW1pbih0LG4pe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoibWluIix2YWx1ZTp0LmdldFRpbWUoKSxtZXNzYWdlOkRlLnRvU3RyaW5nKG4pfSl9bWF4KHQsbil7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtYXgiLHZhbHVlOnQuZ2V0VGltZSgpLG1lc3NhZ2U6RGUudG9TdHJpbmcobil9KX1nZXQgbWluRGF0ZSgpe2xldCB0PW51bGw7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fZGVmLmNoZWNrcyluLmtpbmQ9PT0ibWluIiYmKHQ9PT1udWxsfHxuLnZhbHVlPnQpJiYodD1uLnZhbHVlKTtyZXR1cm4gdCE9bnVsbD9uZXcgRGF0ZSh0KTpudWxsfWdldCBtYXhEYXRlKCl7bGV0IHQ9bnVsbDtmb3IoY29uc3QgbiBvZiB0aGlzLl9kZWYuY2hlY2tzKW4ua2luZD09PSJtYXgiJiYodD09PW51bGx8fG4udmFsdWU8dCkmJih0PW4udmFsdWUpO3JldHVybiB0IT1udWxsP25ldyBEYXRlKHQpOm51bGx9fVN5LmNyZWF0ZT1lPT5uZXcgU3koe2NoZWNrczpbXSxjb2VyY2U6ZT8uY29lcmNlfHwhMSx0eXBlTmFtZTpYZS5ab2REYXRlLC4uLm50KGUpfSk7Y2xhc3MgYTQgZXh0ZW5kcyBjdHtfcGFyc2UodCl7aWYodGhpcy5fZ2V0VHlwZSh0KSE9PWtlLnN5bWJvbCl7Y29uc3Qgcj10aGlzLl9nZXRPclJldHVybkN0eCh0KTtyZXR1cm4gT2Uocix7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6a2Uuc3ltYm9sLHJlY2VpdmVkOnIucGFyc2VkVHlwZX0pLFllfXJldHVybiBIcih0LmRhdGEpfX1hNC5jcmVhdGU9ZT0+bmV3IGE0KHt0eXBlTmFtZTpYZS5ab2RTeW1ib2wsLi4ubnQoZSl9KTtjbGFzcyBvNCBleHRlbmRzIGN0e19wYXJzZSh0KXtpZih0aGlzLl9nZXRUeXBlKHQpIT09a2UudW5kZWZpbmVkKXtjb25zdCByPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO3JldHVybiBPZShyLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS51bmRlZmluZWQscmVjZWl2ZWQ6ci5wYXJzZWRUeXBlfSksWWV9cmV0dXJuIEhyKHQuZGF0YSl9fW80LmNyZWF0ZT1lPT5uZXcgbzQoe3R5cGVOYW1lOlhlLlpvZFVuZGVmaW5lZCwuLi5udChlKX0pO2NsYXNzIHM0IGV4dGVuZHMgY3R7X3BhcnNlKHQpe2lmKHRoaXMuX2dldFR5cGUodCkhPT1rZS5udWxsKXtjb25zdCByPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO3JldHVybiBPZShyLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS5udWxsLHJlY2VpdmVkOnIucGFyc2VkVHlwZX0pLFllfXJldHVybiBIcih0LmRhdGEpfX1zNC5jcmVhdGU9ZT0+bmV3IHM0KHt0eXBlTmFtZTpYZS5ab2ROdWxsLC4uLm50KGUpfSk7Y2xhc3MgbDQgZXh0ZW5kcyBjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fYW55PSEwfV9wYXJzZSh0KXtyZXR1cm4gSHIodC5kYXRhKX19bDQuY3JlYXRlPWU9Pm5ldyBsNCh7dHlwZU5hbWU6WGUuWm9kQW55LC4uLm50KGUpfSk7Y2xhc3MgdTQgZXh0ZW5kcyBjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdW5rbm93bj0hMH1fcGFyc2UodCl7cmV0dXJuIEhyKHQuZGF0YSl9fXU0LmNyZWF0ZT1lPT5uZXcgdTQoe3R5cGVOYW1lOlhlLlpvZFVua25vd24sLi4ubnQoZSl9KTtjbGFzcyBwbyBleHRlbmRzIGN0e19wYXJzZSh0KXtjb25zdCBuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO3JldHVybiBPZShuLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS5uZXZlcixyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxZZX19cG8uY3JlYXRlPWU9Pm5ldyBwbyh7dHlwZU5hbWU6WGUuWm9kTmV2ZXIsLi4ubnQoZSl9KTtjbGFzcyBjNCBleHRlbmRzIGN0e19wYXJzZSh0KXtpZih0aGlzLl9nZXRUeXBlKHQpIT09a2UudW5kZWZpbmVkKXtjb25zdCByPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO3JldHVybiBPZShyLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS52b2lkLHJlY2VpdmVkOnIucGFyc2VkVHlwZX0pLFllfXJldHVybiBIcih0LmRhdGEpfX1jNC5jcmVhdGU9ZT0+bmV3IGM0KHt0eXBlTmFtZTpYZS5ab2RWb2lkLC4uLm50KGUpfSk7Y2xhc3MgamkgZXh0ZW5kcyBjdHtfcGFyc2UodCl7Y29uc3R7Y3R4Om4sc3RhdHVzOnJ9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyh0KSxpPXRoaXMuX2RlZjtpZihuLnBhcnNlZFR5cGUhPT1rZS5hcnJheSlyZXR1cm4gT2Uobix7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6a2UuYXJyYXkscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksWWU7aWYoaS5leGFjdExlbmd0aCE9PW51bGwpe2NvbnN0IHM9bi5kYXRhLmxlbmd0aD5pLmV4YWN0TGVuZ3RoLnZhbHVlLHU9bi5kYXRhLmxlbmd0aDxpLmV4YWN0TGVuZ3RoLnZhbHVlOyhzfHx1KSYmKE9lKG4se2NvZGU6cz95ZS50b29fYmlnOnllLnRvb19zbWFsbCxtaW5pbXVtOnU/aS5leGFjdExlbmd0aC52YWx1ZTp2b2lkIDAsbWF4aW11bTpzP2kuZXhhY3RMZW5ndGgudmFsdWU6dm9pZCAwLHR5cGU6ImFycmF5IixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTppLmV4YWN0TGVuZ3RoLm1lc3NhZ2V9KSxyLmRpcnR5KCkpfWlmKGkubWluTGVuZ3RoIT09bnVsbCYmbi5kYXRhLmxlbmd0aDxpLm1pbkxlbmd0aC52YWx1ZSYmKE9lKG4se2NvZGU6eWUudG9vX3NtYWxsLG1pbmltdW06aS5taW5MZW5ndGgudmFsdWUsdHlwZToiYXJyYXkiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOmkubWluTGVuZ3RoLm1lc3NhZ2V9KSxyLmRpcnR5KCkpLGkubWF4TGVuZ3RoIT09bnVsbCYmbi5kYXRhLmxlbmd0aD5pLm1heExlbmd0aC52YWx1ZSYmKE9lKG4se2NvZGU6eWUudG9vX2JpZyxtYXhpbXVtOmkubWF4TGVuZ3RoLnZhbHVlLHR5cGU6ImFycmF5IixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTppLm1heExlbmd0aC5tZXNzYWdlfSksci5kaXJ0eSgpKSxuLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5hbGwoWy4uLm4uZGF0YV0ubWFwKChzLHUpPT5pLnR5cGUuX3BhcnNlQXN5bmMobmV3IGhvKG4scyxuLnBhdGgsdSkpKSkudGhlbihzPT5Bci5tZXJnZUFycmF5KHIscykpO2NvbnN0IG89Wy4uLm4uZGF0YV0ubWFwKChzLHUpPT5pLnR5cGUuX3BhcnNlU3luYyhuZXcgaG8obixzLG4ucGF0aCx1KSkpO3JldHVybiBBci5tZXJnZUFycmF5KHIsbyl9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZGVmLnR5cGV9bWluKHQsbil7cmV0dXJuIG5ldyBqaSh7Li4udGhpcy5fZGVmLG1pbkxlbmd0aDp7dmFsdWU6dCxtZXNzYWdlOkRlLnRvU3RyaW5nKG4pfX0pfW1heCh0LG4pe3JldHVybiBuZXcgamkoey4uLnRoaXMuX2RlZixtYXhMZW5ndGg6e3ZhbHVlOnQsbWVzc2FnZTpEZS50b1N0cmluZyhuKX19KX1sZW5ndGgodCxuKXtyZXR1cm4gbmV3IGppKHsuLi50aGlzLl9kZWYsZXhhY3RMZW5ndGg6e3ZhbHVlOnQsbWVzc2FnZTpEZS50b1N0cmluZyhuKX19KX1ub25lbXB0eSh0KXtyZXR1cm4gdGhpcy5taW4oMSx0KX19amkuY3JlYXRlPShlLHQpPT5uZXcgamkoe3R5cGU6ZSxtaW5MZW5ndGg6bnVsbCxtYXhMZW5ndGg6bnVsbCxleGFjdExlbmd0aDpudWxsLHR5cGVOYW1lOlhlLlpvZEFycmF5LC4uLm50KHQpfSk7ZnVuY3Rpb24gUGwoZSl7aWYoZSBpbnN0YW5jZW9mIHNuKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIGluIGUuc2hhcGUpe2NvbnN0IHI9ZS5zaGFwZVtuXTt0W25dPW9vLmNyZWF0ZShQbChyKSl9cmV0dXJuIG5ldyBzbih7Li4uZS5fZGVmLHNoYXBlOigpPT50fSl9ZWxzZSByZXR1cm4gZSBpbnN0YW5jZW9mIGppP25ldyBqaSh7Li4uZS5fZGVmLHR5cGU6UGwoZS5lbGVtZW50KX0pOmUgaW5zdGFuY2VvZiBvbz9vby5jcmVhdGUoUGwoZS51bndyYXAoKSkpOmUgaW5zdGFuY2VvZiBQdT9QdS5jcmVhdGUoUGwoZS51bndyYXAoKSkpOmUgaW5zdGFuY2VvZiBPcz9Pcy5jcmVhdGUoZS5pdGVtcy5tYXAodD0+UGwodCkpKTplfWNsYXNzIHNuIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2NhY2hlZD1udWxsLHRoaXMubm9uc3RyaWN0PXRoaXMucGFzc3Rocm91Z2gsdGhpcy5hdWdtZW50PXRoaXMuZXh0ZW5kfV9nZXRDYWNoZWQoKXtpZih0aGlzLl9jYWNoZWQhPT1udWxsKXJldHVybiB0aGlzLl9jYWNoZWQ7Y29uc3QgdD10aGlzLl9kZWYuc2hhcGUoKSxuPWR0Lm9iamVjdEtleXModCk7cmV0dXJuIHRoaXMuX2NhY2hlZD17c2hhcGU6dCxrZXlzOm59LHRoaXMuX2NhY2hlZH1fcGFyc2UodCl7aWYodGhpcy5fZ2V0VHlwZSh0KSE9PWtlLm9iamVjdCl7Y29uc3QgZD10aGlzLl9nZXRPclJldHVybkN0eCh0KTtyZXR1cm4gT2UoZCx7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6a2Uub2JqZWN0LHJlY2VpdmVkOmQucGFyc2VkVHlwZX0pLFllfWNvbnN0e3N0YXR1czpyLGN0eDppfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXModCkse3NoYXBlOm8sa2V5czpzfT10aGlzLl9nZXRDYWNoZWQoKSx1PVtdO2lmKCEodGhpcy5fZGVmLmNhdGNoYWxsIGluc3RhbmNlb2YgcG8mJnRoaXMuX2RlZi51bmtub3duS2V5cz09PSJzdHJpcCIpKWZvcihjb25zdCBkIGluIGkuZGF0YSlzLmluY2x1ZGVzKGQpfHx1LnB1c2goZCk7Y29uc3QgZj1bXTtmb3IoY29uc3QgZCBvZiBzKXtjb25zdCBwPW9bZF0sbT1pLmRhdGFbZF07Zi5wdXNoKHtrZXk6e3N0YXR1czoidmFsaWQiLHZhbHVlOmR9LHZhbHVlOnAuX3BhcnNlKG5ldyBobyhpLG0saS5wYXRoLGQpKSxhbHdheXNTZXQ6ZCBpbiBpLmRhdGF9KX1pZih0aGlzLl9kZWYuY2F0Y2hhbGwgaW5zdGFuY2VvZiBwbyl7Y29uc3QgZD10aGlzLl9kZWYudW5rbm93bktleXM7aWYoZD09PSJwYXNzdGhyb3VnaCIpZm9yKGNvbnN0IHAgb2YgdSlmLnB1c2goe2tleTp7c3RhdHVzOiJ2YWxpZCIsdmFsdWU6cH0sdmFsdWU6e3N0YXR1czoidmFsaWQiLHZhbHVlOmkuZGF0YVtwXX19KTtlbHNlIGlmKGQ9PT0ic3RyaWN0Iil1Lmxlbmd0aD4wJiYoT2UoaSx7Y29kZTp5ZS51bnJlY29nbml6ZWRfa2V5cyxrZXlzOnV9KSxyLmRpcnR5KCkpO2Vsc2UgaWYoZCE9PSJzdHJpcCIpdGhyb3cgbmV3IEVycm9yKCJJbnRlcm5hbCBab2RPYmplY3QgZXJyb3I6IGludmFsaWQgdW5rbm93bktleXMgdmFsdWUuIil9ZWxzZXtjb25zdCBkPXRoaXMuX2RlZi5jYXRjaGFsbDtmb3IoY29uc3QgcCBvZiB1KXtjb25zdCBtPWkuZGF0YVtwXTtmLnB1c2goe2tleTp7c3RhdHVzOiJ2YWxpZCIsdmFsdWU6cH0sdmFsdWU6ZC5fcGFyc2UobmV3IGhvKGksbSxpLnBhdGgscCkpLGFsd2F5c1NldDpwIGluIGkuZGF0YX0pfX1yZXR1cm4gaS5jb21tb24uYXN5bmM/UHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT57Y29uc3QgZD1bXTtmb3IoY29uc3QgcCBvZiBmKXtjb25zdCBtPWF3YWl0IHAua2V5LHk9YXdhaXQgcC52YWx1ZTtkLnB1c2goe2tleTptLHZhbHVlOnksYWx3YXlzU2V0OnAuYWx3YXlzU2V0fSl9cmV0dXJuIGR9KS50aGVuKGQ9PkFyLm1lcmdlT2JqZWN0U3luYyhyLGQpKTpBci5tZXJnZU9iamVjdFN5bmMocixmKX1nZXQgc2hhcGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNoYXBlKCl9c3RyaWN0KHQpe3JldHVybiBEZS5lcnJUb09iaixuZXcgc24oey4uLnRoaXMuX2RlZix1bmtub3duS2V5czoic3RyaWN0IiwuLi50IT09dm9pZCAwP3tlcnJvck1hcDoobixyKT0+e2NvbnN0IGk9dGhpcy5fZGVmLmVycm9yTWFwPy4obixyKS5tZXNzYWdlPz9yLmRlZmF1bHRFcnJvcjtyZXR1cm4gbi5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIj97bWVzc2FnZTpEZS5lcnJUb09iaih0KS5tZXNzYWdlPz9pfTp7bWVzc2FnZTppfX19Ont9fSl9c3RyaXAoKXtyZXR1cm4gbmV3IHNuKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6InN0cmlwIn0pfXBhc3N0aHJvdWdoKCl7cmV0dXJuIG5ldyBzbih7Li4udGhpcy5fZGVmLHVua25vd25LZXlzOiJwYXNzdGhyb3VnaCJ9KX1leHRlbmQodCl7cmV0dXJuIG5ldyBzbih7Li4udGhpcy5fZGVmLHNoYXBlOigpPT4oey4uLnRoaXMuX2RlZi5zaGFwZSgpLC4uLnR9KX0pfW1lcmdlKHQpe3JldHVybiBuZXcgc24oe3Vua25vd25LZXlzOnQuX2RlZi51bmtub3duS2V5cyxjYXRjaGFsbDp0Ll9kZWYuY2F0Y2hhbGwsc2hhcGU6KCk9Pih7Li4udGhpcy5fZGVmLnNoYXBlKCksLi4udC5fZGVmLnNoYXBlKCl9KSx0eXBlTmFtZTpYZS5ab2RPYmplY3R9KX1zZXRLZXkodCxuKXtyZXR1cm4gdGhpcy5hdWdtZW50KHtbdF06bn0pfWNhdGNoYWxsKHQpe3JldHVybiBuZXcgc24oey4uLnRoaXMuX2RlZixjYXRjaGFsbDp0fSl9cGljayh0KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIGR0Lm9iamVjdEtleXModCkpdFtyXSYmdGhpcy5zaGFwZVtyXSYmKG5bcl09dGhpcy5zaGFwZVtyXSk7cmV0dXJuIG5ldyBzbih7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5ufSl9b21pdCh0KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIGR0Lm9iamVjdEtleXModGhpcy5zaGFwZSkpdFtyXXx8KG5bcl09dGhpcy5zaGFwZVtyXSk7cmV0dXJuIG5ldyBzbih7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5ufSl9ZGVlcFBhcnRpYWwoKXtyZXR1cm4gUGwodGhpcyl9cGFydGlhbCh0KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIGR0Lm9iamVjdEtleXModGhpcy5zaGFwZSkpe2NvbnN0IGk9dGhpcy5zaGFwZVtyXTt0JiYhdFtyXT9uW3JdPWk6bltyXT1pLm9wdGlvbmFsKCl9cmV0dXJuIG5ldyBzbih7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5ufSl9cmVxdWlyZWQodCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBvZiBkdC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKWlmKHQmJiF0W3JdKW5bcl09dGhpcy5zaGFwZVtyXTtlbHNle2xldCBvPXRoaXMuc2hhcGVbcl07Zm9yKDtvIGluc3RhbmNlb2Ygb287KW89by5fZGVmLmlubmVyVHlwZTtuW3JdPW99cmV0dXJuIG5ldyBzbih7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5ufSl9a2V5b2YoKXtyZXR1cm4gZTgoZHQub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSl9fXNuLmNyZWF0ZT0oZSx0KT0+bmV3IHNuKHtzaGFwZTooKT0+ZSx1bmtub3duS2V5czoic3RyaXAiLGNhdGNoYWxsOnBvLmNyZWF0ZSgpLHR5cGVOYW1lOlhlLlpvZE9iamVjdCwuLi5udCh0KX0pO3NuLnN0cmljdENyZWF0ZT0oZSx0KT0+bmV3IHNuKHtzaGFwZTooKT0+ZSx1bmtub3duS2V5czoic3RyaWN0IixjYXRjaGFsbDpwby5jcmVhdGUoKSx0eXBlTmFtZTpYZS5ab2RPYmplY3QsLi4ubnQodCl9KTtzbi5sYXp5Y3JlYXRlPShlLHQpPT5uZXcgc24oe3NoYXBlOmUsdW5rbm93bktleXM6InN0cmlwIixjYXRjaGFsbDpwby5jcmVhdGUoKSx0eXBlTmFtZTpYZS5ab2RPYmplY3QsLi4ubnQodCl9KTtjbGFzcyBBeSBleHRlbmRzIGN0e19wYXJzZSh0KXtjb25zdHtjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKHQpLHI9dGhpcy5fZGVmLm9wdGlvbnM7ZnVuY3Rpb24gaShvKXtmb3IoY29uc3QgdSBvZiBvKWlmKHUucmVzdWx0LnN0YXR1cz09PSJ2YWxpZCIpcmV0dXJuIHUucmVzdWx0O2Zvcihjb25zdCB1IG9mIG8paWYodS5yZXN1bHQuc3RhdHVzPT09ImRpcnR5IilyZXR1cm4gbi5jb21tb24uaXNzdWVzLnB1c2goLi4udS5jdHguY29tbW9uLmlzc3VlcyksdS5yZXN1bHQ7Y29uc3Qgcz1vLm1hcCh1PT5uZXcgcGEodS5jdHguY29tbW9uLmlzc3VlcykpO3JldHVybiBPZShuLHtjb2RlOnllLmludmFsaWRfdW5pb24sdW5pb25FcnJvcnM6c30pLFllfWlmKG4uY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChyLm1hcChhc3luYyBvPT57Y29uc3Qgcz17Li4ubixjb21tb246ey4uLm4uY29tbW9uLGlzc3VlczpbXX0scGFyZW50Om51bGx9O3JldHVybntyZXN1bHQ6YXdhaXQgby5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50OnN9KSxjdHg6c319KSkudGhlbihpKTt7bGV0IG87Y29uc3Qgcz1bXTtmb3IoY29uc3QgZiBvZiByKXtjb25zdCBkPXsuLi5uLGNvbW1vbjp7Li4ubi5jb21tb24saXNzdWVzOltdfSxwYXJlbnQ6bnVsbH0scD1mLl9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpkfSk7aWYocC5zdGF0dXM9PT0idmFsaWQiKXJldHVybiBwO3Auc3RhdHVzPT09ImRpcnR5IiYmIW8mJihvPXtyZXN1bHQ6cCxjdHg6ZH0pLGQuY29tbW9uLmlzc3Vlcy5sZW5ndGgmJnMucHVzaChkLmNvbW1vbi5pc3N1ZXMpfWlmKG8pcmV0dXJuIG4uY29tbW9uLmlzc3Vlcy5wdXNoKC4uLm8uY3R4LmNvbW1vbi5pc3N1ZXMpLG8ucmVzdWx0O2NvbnN0IHU9cy5tYXAoZj0+bmV3IHBhKGYpKTtyZXR1cm4gT2Uobix7Y29kZTp5ZS5pbnZhbGlkX3VuaW9uLHVuaW9uRXJyb3JzOnV9KSxZZX19Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnN9fUF5LmNyZWF0ZT0oZSx0KT0+bmV3IEF5KHtvcHRpb25zOmUsdHlwZU5hbWU6WGUuWm9kVW5pb24sLi4ubnQodCl9KTtmdW5jdGlvbiBRXyhlLHQpe2NvbnN0IG49WmEoZSkscj1aYSh0KTtpZihlPT09dClyZXR1cm57dmFsaWQ6ITAsZGF0YTplfTtpZihuPT09a2Uub2JqZWN0JiZyPT09a2Uub2JqZWN0KXtjb25zdCBpPWR0Lm9iamVjdEtleXModCksbz1kdC5vYmplY3RLZXlzKGUpLmZpbHRlcih1PT5pLmluZGV4T2YodSkhPT0tMSkscz17Li4uZSwuLi50fTtmb3IoY29uc3QgdSBvZiBvKXtjb25zdCBmPVFfKGVbdV0sdFt1XSk7aWYoIWYudmFsaWQpcmV0dXJue3ZhbGlkOiExfTtzW3VdPWYuZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpzfX1lbHNlIGlmKG49PT1rZS5hcnJheSYmcj09PWtlLmFycmF5KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybnt2YWxpZDohMX07Y29uc3QgaT1bXTtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7Y29uc3Qgcz1lW29dLHU9dFtvXSxmPVFfKHMsdSk7aWYoIWYudmFsaWQpcmV0dXJue3ZhbGlkOiExfTtpLnB1c2goZi5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTppfX1lbHNlIHJldHVybiBuPT09a2UuZGF0ZSYmcj09PWtlLmRhdGUmJitlPT0rdD97dmFsaWQ6ITAsZGF0YTplfTp7dmFsaWQ6ITF9fWNsYXNzIF95IGV4dGVuZHMgY3R7X3BhcnNlKHQpe2NvbnN0e3N0YXR1czpuLGN0eDpyfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXModCksaT0obyxzKT0+e2lmKHQ0KG8pfHx0NChzKSlyZXR1cm4gWWU7Y29uc3QgdT1RXyhvLnZhbHVlLHMudmFsdWUpO3JldHVybiB1LnZhbGlkPygobjQobyl8fG40KHMpKSYmbi5kaXJ0eSgpLHtzdGF0dXM6bi52YWx1ZSx2YWx1ZTp1LmRhdGF9KTooT2Uocix7Y29kZTp5ZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc30pLFllKX07cmV0dXJuIHIuY29tbW9uLmFzeW5jP1Byb21pc2UuYWxsKFt0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7ZGF0YTpyLmRhdGEscGF0aDpyLnBhdGgscGFyZW50OnJ9KSx0aGlzLl9kZWYucmlnaHQuX3BhcnNlQXN5bmMoe2RhdGE6ci5kYXRhLHBhdGg6ci5wYXRoLHBhcmVudDpyfSldKS50aGVuKChbbyxzXSk9PmkobyxzKSk6aSh0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtkYXRhOnIuZGF0YSxwYXRoOnIucGF0aCxwYXJlbnQ6cn0pLHRoaXMuX2RlZi5yaWdodC5fcGFyc2VTeW5jKHtkYXRhOnIuZGF0YSxwYXRoOnIucGF0aCxwYXJlbnQ6cn0pKX19X3kuY3JlYXRlPShlLHQsbik9Pm5ldyBfeSh7bGVmdDplLHJpZ2h0OnQsdHlwZU5hbWU6WGUuWm9kSW50ZXJzZWN0aW9uLC4uLm50KG4pfSk7Y2xhc3MgT3MgZXh0ZW5kcyBjdHtfcGFyc2UodCl7Y29uc3R7c3RhdHVzOm4sY3R4OnJ9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyh0KTtpZihyLnBhcnNlZFR5cGUhPT1rZS5hcnJheSlyZXR1cm4gT2Uocix7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6a2UuYXJyYXkscmVjZWl2ZWQ6ci5wYXJzZWRUeXBlfSksWWU7aWYoci5kYXRhLmxlbmd0aDx0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKXJldHVybiBPZShyLHtjb2RlOnllLnRvb19zbWFsbCxtaW5pbXVtOnRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsaW5jbHVzaXZlOiEwLGV4YWN0OiExLHR5cGU6ImFycmF5In0pLFllOyF0aGlzLl9kZWYucmVzdCYmci5kYXRhLmxlbmd0aD50aGlzLl9kZWYuaXRlbXMubGVuZ3RoJiYoT2Uocix7Y29kZTp5ZS50b29fYmlnLG1heGltdW06dGhpcy5fZGVmLml0ZW1zLmxlbmd0aCxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsdHlwZToiYXJyYXkifSksbi5kaXJ0eSgpKTtjb25zdCBvPVsuLi5yLmRhdGFdLm1hcCgocyx1KT0+e2NvbnN0IGY9dGhpcy5fZGVmLml0ZW1zW3VdfHx0aGlzLl9kZWYucmVzdDtyZXR1cm4gZj9mLl9wYXJzZShuZXcgaG8ocixzLHIucGF0aCx1KSk6bnVsbH0pLmZpbHRlcihzPT4hIXMpO3JldHVybiByLmNvbW1vbi5hc3luYz9Qcm9taXNlLmFsbChvKS50aGVuKHM9PkFyLm1lcmdlQXJyYXkobixzKSk6QXIubWVyZ2VBcnJheShuLG8pfWdldCBpdGVtcygpe3JldHVybiB0aGlzLl9kZWYuaXRlbXN9cmVzdCh0KXtyZXR1cm4gbmV3IE9zKHsuLi50aGlzLl9kZWYscmVzdDp0fSl9fU9zLmNyZWF0ZT0oZSx0KT0+e2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBFcnJvcigiWW91IG11c3QgcGFzcyBhbiBhcnJheSBvZiBzY2hlbWFzIHRvIHoudHVwbGUoWyAuLi4gXSkiKTtyZXR1cm4gbmV3IE9zKHtpdGVtczplLHR5cGVOYW1lOlhlLlpvZFR1cGxlLHJlc3Q6bnVsbCwuLi5udCh0KX0pfTtjbGFzcyBmNCBleHRlbmRzIGN0e2dldCBrZXlTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmtleVR5cGV9Z2V0IHZhbHVlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9X3BhcnNlKHQpe2NvbnN0e3N0YXR1czpuLGN0eDpyfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXModCk7aWYoci5wYXJzZWRUeXBlIT09a2UubWFwKXJldHVybiBPZShyLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS5tYXAscmVjZWl2ZWQ6ci5wYXJzZWRUeXBlfSksWWU7Y29uc3QgaT10aGlzLl9kZWYua2V5VHlwZSxvPXRoaXMuX2RlZi52YWx1ZVR5cGUscz1bLi4uci5kYXRhLmVudHJpZXMoKV0ubWFwKChbdSxmXSxkKT0+KHtrZXk6aS5fcGFyc2UobmV3IGhvKHIsdSxyLnBhdGgsW2QsImtleSJdKSksdmFsdWU6by5fcGFyc2UobmV3IGhvKHIsZixyLnBhdGgsW2QsInZhbHVlIl0pKX0pKTtpZihyLmNvbW1vbi5hc3luYyl7Y29uc3QgdT1uZXcgTWFwO3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jKCk9Pntmb3IoY29uc3QgZiBvZiBzKXtjb25zdCBkPWF3YWl0IGYua2V5LHA9YXdhaXQgZi52YWx1ZTtpZihkLnN0YXR1cz09PSJhYm9ydGVkInx8cC5zdGF0dXM9PT0iYWJvcnRlZCIpcmV0dXJuIFllOyhkLnN0YXR1cz09PSJkaXJ0eSJ8fHAuc3RhdHVzPT09ImRpcnR5IikmJm4uZGlydHkoKSx1LnNldChkLnZhbHVlLHAudmFsdWUpfXJldHVybntzdGF0dXM6bi52YWx1ZSx2YWx1ZTp1fX0pfWVsc2V7Y29uc3QgdT1uZXcgTWFwO2Zvcihjb25zdCBmIG9mIHMpe2NvbnN0IGQ9Zi5rZXkscD1mLnZhbHVlO2lmKGQuc3RhdHVzPT09ImFib3J0ZWQifHxwLnN0YXR1cz09PSJhYm9ydGVkIilyZXR1cm4gWWU7KGQuc3RhdHVzPT09ImRpcnR5Inx8cC5zdGF0dXM9PT0iZGlydHkiKSYmbi5kaXJ0eSgpLHUuc2V0KGQudmFsdWUscC52YWx1ZSl9cmV0dXJue3N0YXR1czpuLnZhbHVlLHZhbHVlOnV9fX19ZjQuY3JlYXRlPShlLHQsbik9Pm5ldyBmNCh7dmFsdWVUeXBlOnQsa2V5VHlwZTplLHR5cGVOYW1lOlhlLlpvZE1hcCwuLi5udChuKX0pO2NsYXNzIHhkIGV4dGVuZHMgY3R7X3BhcnNlKHQpe2NvbnN0e3N0YXR1czpuLGN0eDpyfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXModCk7aWYoci5wYXJzZWRUeXBlIT09a2Uuc2V0KXJldHVybiBPZShyLHtjb2RlOnllLmludmFsaWRfdHlwZSxleHBlY3RlZDprZS5zZXQscmVjZWl2ZWQ6ci5wYXJzZWRUeXBlfSksWWU7Y29uc3QgaT10aGlzLl9kZWY7aS5taW5TaXplIT09bnVsbCYmci5kYXRhLnNpemU8aS5taW5TaXplLnZhbHVlJiYoT2Uocix7Y29kZTp5ZS50b29fc21hbGwsbWluaW11bTppLm1pblNpemUudmFsdWUsdHlwZToic2V0IixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTppLm1pblNpemUubWVzc2FnZX0pLG4uZGlydHkoKSksaS5tYXhTaXplIT09bnVsbCYmci5kYXRhLnNpemU+aS5tYXhTaXplLnZhbHVlJiYoT2Uocix7Y29kZTp5ZS50b29fYmlnLG1heGltdW06aS5tYXhTaXplLnZhbHVlLHR5cGU6InNldCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6aS5tYXhTaXplLm1lc3NhZ2V9KSxuLmRpcnR5KCkpO2NvbnN0IG89dGhpcy5fZGVmLnZhbHVlVHlwZTtmdW5jdGlvbiBzKGYpe2NvbnN0IGQ9bmV3IFNldDtmb3IoY29uc3QgcCBvZiBmKXtpZihwLnN0YXR1cz09PSJhYm9ydGVkIilyZXR1cm4gWWU7cC5zdGF0dXM9PT0iZGlydHkiJiZuLmRpcnR5KCksZC5hZGQocC52YWx1ZSl9cmV0dXJue3N0YXR1czpuLnZhbHVlLHZhbHVlOmR9fWNvbnN0IHU9Wy4uLnIuZGF0YS52YWx1ZXMoKV0ubWFwKChmLGQpPT5vLl9wYXJzZShuZXcgaG8ocixmLHIucGF0aCxkKSkpO3JldHVybiByLmNvbW1vbi5hc3luYz9Qcm9taXNlLmFsbCh1KS50aGVuKGY9PnMoZikpOnModSl9bWluKHQsbil7cmV0dXJuIG5ldyB4ZCh7Li4udGhpcy5fZGVmLG1pblNpemU6e3ZhbHVlOnQsbWVzc2FnZTpEZS50b1N0cmluZyhuKX19KX1tYXgodCxuKXtyZXR1cm4gbmV3IHhkKHsuLi50aGlzLl9kZWYsbWF4U2l6ZTp7dmFsdWU6dCxtZXNzYWdlOkRlLnRvU3RyaW5nKG4pfX0pfXNpemUodCxuKXtyZXR1cm4gdGhpcy5taW4odCxuKS5tYXgodCxuKX1ub25lbXB0eSh0KXtyZXR1cm4gdGhpcy5taW4oMSx0KX19eGQuY3JlYXRlPShlLHQpPT5uZXcgeGQoe3ZhbHVlVHlwZTplLG1pblNpemU6bnVsbCxtYXhTaXplOm51bGwsdHlwZU5hbWU6WGUuWm9kU2V0LC4uLm50KHQpfSk7Y2xhc3MgZDQgZXh0ZW5kcyBjdHtnZXQgc2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi5nZXR0ZXIoKX1fcGFyc2UodCl7Y29uc3R7Y3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyh0KTtyZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpLl9wYXJzZSh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KX19ZDQuY3JlYXRlPShlLHQpPT5uZXcgZDQoe2dldHRlcjplLHR5cGVOYW1lOlhlLlpvZExhenksLi4ubnQodCl9KTtjbGFzcyBoNCBleHRlbmRzIGN0e19wYXJzZSh0KXtpZih0LmRhdGEhPT10aGlzLl9kZWYudmFsdWUpe2NvbnN0IG49dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCk7cmV0dXJuIE9lKG4se3JlY2VpdmVkOm4uZGF0YSxjb2RlOnllLmludmFsaWRfbGl0ZXJhbCxleHBlY3RlZDp0aGlzLl9kZWYudmFsdWV9KSxZZX1yZXR1cm57c3RhdHVzOiJ2YWxpZCIsdmFsdWU6dC5kYXRhfX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlfX1oNC5jcmVhdGU9KGUsdCk9Pm5ldyBoNCh7dmFsdWU6ZSx0eXBlTmFtZTpYZS5ab2RMaXRlcmFsLC4uLm50KHQpfSk7ZnVuY3Rpb24gZTgoZSx0KXtyZXR1cm4gbmV3IEN1KHt2YWx1ZXM6ZSx0eXBlTmFtZTpYZS5ab2RFbnVtLC4uLm50KHQpfSl9Y2xhc3MgQ3UgZXh0ZW5kcyBjdHtfcGFyc2UodCl7aWYodHlwZW9mIHQuZGF0YSE9InN0cmluZyIpe2NvbnN0IG49dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCkscj10aGlzLl9kZWYudmFsdWVzO3JldHVybiBPZShuLHtleHBlY3RlZDpkdC5qb2luVmFsdWVzKHIpLHJlY2VpdmVkOm4ucGFyc2VkVHlwZSxjb2RlOnllLmludmFsaWRfdHlwZX0pLFllfWlmKHRoaXMuX2NhY2hlfHwodGhpcy5fY2FjaGU9bmV3IFNldCh0aGlzLl9kZWYudmFsdWVzKSksIXRoaXMuX2NhY2hlLmhhcyh0LmRhdGEpKXtjb25zdCBuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpLHI9dGhpcy5fZGVmLnZhbHVlcztyZXR1cm4gT2Uobix7cmVjZWl2ZWQ6bi5kYXRhLGNvZGU6eWUuaW52YWxpZF9lbnVtX3ZhbHVlLG9wdGlvbnM6cn0pLFllfXJldHVybiBIcih0LmRhdGEpfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZXN9Z2V0IGVudW0oKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIHRoaXMuX2RlZi52YWx1ZXMpdFtuXT1uO3JldHVybiB0fWdldCBWYWx1ZXMoKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIHRoaXMuX2RlZi52YWx1ZXMpdFtuXT1uO3JldHVybiB0fWdldCBFbnVtKCl7Y29uc3QgdD17fTtmb3IoY29uc3QgbiBvZiB0aGlzLl9kZWYudmFsdWVzKXRbbl09bjtyZXR1cm4gdH1leHRyYWN0KHQsbj10aGlzLl9kZWYpe3JldHVybiBDdS5jcmVhdGUodCx7Li4udGhpcy5fZGVmLC4uLm59KX1leGNsdWRlKHQsbj10aGlzLl9kZWYpe3JldHVybiBDdS5jcmVhdGUodGhpcy5vcHRpb25zLmZpbHRlcihyPT4hdC5pbmNsdWRlcyhyKSksey4uLnRoaXMuX2RlZiwuLi5ufSl9fUN1LmNyZWF0ZT1lODtjbGFzcyBwNCBleHRlbmRzIGN0e19wYXJzZSh0KXtjb25zdCBuPWR0LmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKSxyPXRoaXMuX2dldE9yUmV0dXJuQ3R4KHQpO2lmKHIucGFyc2VkVHlwZSE9PWtlLnN0cmluZyYmci5wYXJzZWRUeXBlIT09a2UubnVtYmVyKXtjb25zdCBpPWR0Lm9iamVjdFZhbHVlcyhuKTtyZXR1cm4gT2Uocix7ZXhwZWN0ZWQ6ZHQuam9pblZhbHVlcyhpKSxyZWNlaXZlZDpyLnBhcnNlZFR5cGUsY29kZTp5ZS5pbnZhbGlkX3R5cGV9KSxZZX1pZih0aGlzLl9jYWNoZXx8KHRoaXMuX2NhY2hlPW5ldyBTZXQoZHQuZ2V0VmFsaWRFbnVtVmFsdWVzKHRoaXMuX2RlZi52YWx1ZXMpKSksIXRoaXMuX2NhY2hlLmhhcyh0LmRhdGEpKXtjb25zdCBpPWR0Lm9iamVjdFZhbHVlcyhuKTtyZXR1cm4gT2Uocix7cmVjZWl2ZWQ6ci5kYXRhLGNvZGU6eWUuaW52YWxpZF9lbnVtX3ZhbHVlLG9wdGlvbnM6aX0pLFllfXJldHVybiBIcih0LmRhdGEpfWdldCBlbnVtKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZXN9fXA0LmNyZWF0ZT0oZSx0KT0+bmV3IHA0KHt2YWx1ZXM6ZSx0eXBlTmFtZTpYZS5ab2ROYXRpdmVFbnVtLC4uLm50KHQpfSk7Y2xhc3MgT3kgZXh0ZW5kcyBjdHt1bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLnR5cGV9X3BhcnNlKHQpe2NvbnN0e2N0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXModCk7aWYobi5wYXJzZWRUeXBlIT09a2UucHJvbWlzZSYmbi5jb21tb24uYXN5bmM9PT0hMSlyZXR1cm4gT2Uobix7Y29kZTp5ZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6a2UucHJvbWlzZSxyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxZZTtjb25zdCByPW4ucGFyc2VkVHlwZT09PWtlLnByb21pc2U/bi5kYXRhOlByb21pc2UucmVzb2x2ZShuLmRhdGEpO3JldHVybiBIcihyLnRoZW4oaT0+dGhpcy5fZGVmLnR5cGUucGFyc2VBc3luYyhpLHtwYXRoOm4ucGF0aCxlcnJvck1hcDpuLmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXB9KSkpfX1PeS5jcmVhdGU9KGUsdCk9Pm5ldyBPeSh7dHlwZTplLHR5cGVOYW1lOlhlLlpvZFByb21pc2UsLi4ubnQodCl9KTtjbGFzcyBqdSBleHRlbmRzIGN0e2lubmVyVHlwZSgpe3JldHVybiB0aGlzLl9kZWYuc2NoZW1hfXNvdXJjZVR5cGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fZGVmLnR5cGVOYW1lPT09WGUuWm9kRWZmZWN0cz90aGlzLl9kZWYuc2NoZW1hLnNvdXJjZVR5cGUoKTp0aGlzLl9kZWYuc2NoZW1hfV9wYXJzZSh0KXtjb25zdHtzdGF0dXM6bixjdHg6cn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKHQpLGk9dGhpcy5fZGVmLmVmZmVjdHx8bnVsbCxvPXthZGRJc3N1ZTpzPT57T2UocixzKSxzLmZhdGFsP24uYWJvcnQoKTpuLmRpcnR5KCl9LGdldCBwYXRoKCl7cmV0dXJuIHIucGF0aH19O2lmKG8uYWRkSXNzdWU9by5hZGRJc3N1ZS5iaW5kKG8pLGkudHlwZT09PSJwcmVwcm9jZXNzIil7Y29uc3Qgcz1pLnRyYW5zZm9ybShyLmRhdGEsbyk7aWYoci5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UucmVzb2x2ZShzKS50aGVuKGFzeW5jIHU9PntpZihuLnZhbHVlPT09ImFib3J0ZWQiKXJldHVybiBZZTtjb25zdCBmPWF3YWl0IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe2RhdGE6dSxwYXRoOnIucGF0aCxwYXJlbnQ6cn0pO3JldHVybiBmLnN0YXR1cz09PSJhYm9ydGVkIj9ZZTpmLnN0YXR1cz09PSJkaXJ0eSJ8fG4udmFsdWU9PT0iZGlydHkiP2RmKGYudmFsdWUpOmZ9KTt7aWYobi52YWx1ZT09PSJhYm9ydGVkIilyZXR1cm4gWWU7Y29uc3QgdT10aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6cyxwYXRoOnIucGF0aCxwYXJlbnQ6cn0pO3JldHVybiB1LnN0YXR1cz09PSJhYm9ydGVkIj9ZZTp1LnN0YXR1cz09PSJkaXJ0eSJ8fG4udmFsdWU9PT0iZGlydHkiP2RmKHUudmFsdWUpOnV9fWlmKGkudHlwZT09PSJyZWZpbmVtZW50Iil7Y29uc3Qgcz11PT57Y29uc3QgZj1pLnJlZmluZW1lbnQodSxvKTtpZihyLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGYpO2lmKGYgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgcmVmaW5lbWVudCBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC4iKTtyZXR1cm4gdX07aWYoci5jb21tb24uYXN5bmM9PT0hMSl7Y29uc3QgdT10aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6ci5kYXRhLHBhdGg6ci5wYXRoLHBhcmVudDpyfSk7cmV0dXJuIHUuc3RhdHVzPT09ImFib3J0ZWQiP1llOih1LnN0YXR1cz09PSJkaXJ0eSImJm4uZGlydHkoKSxzKHUudmFsdWUpLHtzdGF0dXM6bi52YWx1ZSx2YWx1ZTp1LnZhbHVlfSl9ZWxzZSByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTpyLmRhdGEscGF0aDpyLnBhdGgscGFyZW50OnJ9KS50aGVuKHU9PnUuc3RhdHVzPT09ImFib3J0ZWQiP1llOih1LnN0YXR1cz09PSJkaXJ0eSImJm4uZGlydHkoKSxzKHUudmFsdWUpLnRoZW4oKCk9Pih7c3RhdHVzOm4udmFsdWUsdmFsdWU6dS52YWx1ZX0pKSkpfWlmKGkudHlwZT09PSJ0cmFuc2Zvcm0iKWlmKHIuY29tbW9uLmFzeW5jPT09ITEpe2NvbnN0IHM9dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOnIuZGF0YSxwYXRoOnIucGF0aCxwYXJlbnQ6cn0pO2lmKCFFdShzKSlyZXR1cm4gWWU7Y29uc3QgdT1pLnRyYW5zZm9ybShzLnZhbHVlLG8pO2lmKHUgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmNocm9ub3VzIHRyYW5zZm9ybSBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC4iKTtyZXR1cm57c3RhdHVzOm4udmFsdWUsdmFsdWU6dX19ZWxzZSByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTpyLmRhdGEscGF0aDpyLnBhdGgscGFyZW50OnJ9KS50aGVuKHM9PkV1KHMpP1Byb21pc2UucmVzb2x2ZShpLnRyYW5zZm9ybShzLnZhbHVlLG8pKS50aGVuKHU9Pih7c3RhdHVzOm4udmFsdWUsdmFsdWU6dX0pKTpZZSk7ZHQuYXNzZXJ0TmV2ZXIoaSl9fWp1LmNyZWF0ZT0oZSx0LG4pPT5uZXcganUoe3NjaGVtYTplLHR5cGVOYW1lOlhlLlpvZEVmZmVjdHMsZWZmZWN0OnQsLi4ubnQobil9KTtqdS5jcmVhdGVXaXRoUHJlcHJvY2Vzcz0oZSx0LG4pPT5uZXcganUoe3NjaGVtYTp0LGVmZmVjdDp7dHlwZToicHJlcHJvY2VzcyIsdHJhbnNmb3JtOmV9LHR5cGVOYW1lOlhlLlpvZEVmZmVjdHMsLi4ubnQobil9KTtjbGFzcyBvbyBleHRlbmRzIGN0e19wYXJzZSh0KXtyZXR1cm4gdGhpcy5fZ2V0VHlwZSh0KT09PWtlLnVuZGVmaW5lZD9Icih2b2lkIDApOnRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHQpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX1vby5jcmVhdGU9KGUsdCk9Pm5ldyBvbyh7aW5uZXJUeXBlOmUsdHlwZU5hbWU6WGUuWm9kT3B0aW9uYWwsLi4ubnQodCl9KTtjbGFzcyBQdSBleHRlbmRzIGN0e19wYXJzZSh0KXtyZXR1cm4gdGhpcy5fZ2V0VHlwZSh0KT09PWtlLm51bGw/SHIobnVsbCk6dGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UodCl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fVB1LmNyZWF0ZT0oZSx0KT0+bmV3IFB1KHtpbm5lclR5cGU6ZSx0eXBlTmFtZTpYZS5ab2ROdWxsYWJsZSwuLi5udCh0KX0pO2NsYXNzIEpfIGV4dGVuZHMgY3R7X3BhcnNlKHQpe2NvbnN0e2N0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXModCk7bGV0IHI9bi5kYXRhO3JldHVybiBuLnBhcnNlZFR5cGU9PT1rZS51bmRlZmluZWQmJihyPXRoaXMuX2RlZi5kZWZhdWx0VmFsdWUoKSksdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe2RhdGE6cixwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pfXJlbW92ZURlZmF1bHQoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19Sl8uY3JlYXRlPShlLHQpPT5uZXcgSl8oe2lubmVyVHlwZTplLHR5cGVOYW1lOlhlLlpvZERlZmF1bHQsZGVmYXVsdFZhbHVlOnR5cGVvZiB0LmRlZmF1bHQ9PSJmdW5jdGlvbiI/dC5kZWZhdWx0OigpPT50LmRlZmF1bHQsLi4ubnQodCl9KTtjbGFzcyBlTyBleHRlbmRzIGN0e19wYXJzZSh0KXtjb25zdHtjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKHQpLHI9ey4uLm4sY29tbW9uOnsuLi5uLmNvbW1vbixpc3N1ZXM6W119fSxpPXRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtkYXRhOnIuZGF0YSxwYXRoOnIucGF0aCxwYXJlbnQ6ey4uLnJ9fSk7cmV0dXJuIHd5KGkpP2kudGhlbihvPT4oe3N0YXR1czoidmFsaWQiLHZhbHVlOm8uc3RhdHVzPT09InZhbGlkIj9vLnZhbHVlOnRoaXMuX2RlZi5jYXRjaFZhbHVlKHtnZXQgZXJyb3IoKXtyZXR1cm4gbmV3IHBhKHIuY29tbW9uLmlzc3Vlcyl9LGlucHV0OnIuZGF0YX0pfSkpOntzdGF0dXM6InZhbGlkIix2YWx1ZTppLnN0YXR1cz09PSJ2YWxpZCI/aS52YWx1ZTp0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7Z2V0IGVycm9yKCl7cmV0dXJuIG5ldyBwYShyLmNvbW1vbi5pc3N1ZXMpfSxpbnB1dDpyLmRhdGF9KX19cmVtb3ZlQ2F0Y2goKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19ZU8uY3JlYXRlPShlLHQpPT5uZXcgZU8oe2lubmVyVHlwZTplLHR5cGVOYW1lOlhlLlpvZENhdGNoLGNhdGNoVmFsdWU6dHlwZW9mIHQuY2F0Y2g9PSJmdW5jdGlvbiI/dC5jYXRjaDooKT0+dC5jYXRjaCwuLi5udCh0KX0pO2NsYXNzIG00IGV4dGVuZHMgY3R7X3BhcnNlKHQpe2lmKHRoaXMuX2dldFR5cGUodCkhPT1rZS5uYW4pe2NvbnN0IHI9dGhpcy5fZ2V0T3JSZXR1cm5DdHgodCk7cmV0dXJuIE9lKHIse2NvZGU6eWUuaW52YWxpZF90eXBlLGV4cGVjdGVkOmtlLm5hbixyZWNlaXZlZDpyLnBhcnNlZFR5cGV9KSxZZX1yZXR1cm57c3RhdHVzOiJ2YWxpZCIsdmFsdWU6dC5kYXRhfX19bTQuY3JlYXRlPWU9Pm5ldyBtNCh7dHlwZU5hbWU6WGUuWm9kTmFOLC4uLm50KGUpfSk7Y2xhc3MgVnhlIGV4dGVuZHMgY3R7X3BhcnNlKHQpe2NvbnN0e2N0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXModCkscj1uLmRhdGE7cmV0dXJuIHRoaXMuX2RlZi50eXBlLl9wYXJzZSh7ZGF0YTpyLHBhdGg6bi5wYXRoLHBhcmVudDpufSl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfX1jbGFzcyBDRSBleHRlbmRzIGN0e19wYXJzZSh0KXtjb25zdHtzdGF0dXM6bixjdHg6cn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKHQpO2lmKHIuY29tbW9uLmFzeW5jKXJldHVybihhc3luYygpPT57Y29uc3Qgbz1hd2FpdCB0aGlzLl9kZWYuaW4uX3BhcnNlQXN5bmMoe2RhdGE6ci5kYXRhLHBhdGg6ci5wYXRoLHBhcmVudDpyfSk7cmV0dXJuIG8uc3RhdHVzPT09ImFib3J0ZWQiP1llOm8uc3RhdHVzPT09ImRpcnR5Ij8obi5kaXJ0eSgpLGRmKG8udmFsdWUpKTp0aGlzLl9kZWYub3V0Ll9wYXJzZUFzeW5jKHtkYXRhOm8udmFsdWUscGF0aDpyLnBhdGgscGFyZW50OnJ9KX0pKCk7e2NvbnN0IGk9dGhpcy5fZGVmLmluLl9wYXJzZVN5bmMoe2RhdGE6ci5kYXRhLHBhdGg6ci5wYXRoLHBhcmVudDpyfSk7cmV0dXJuIGkuc3RhdHVzPT09ImFib3J0ZWQiP1llOmkuc3RhdHVzPT09ImRpcnR5Ij8obi5kaXJ0eSgpLHtzdGF0dXM6ImRpcnR5Iix2YWx1ZTppLnZhbHVlfSk6dGhpcy5fZGVmLm91dC5fcGFyc2VTeW5jKHtkYXRhOmkudmFsdWUscGF0aDpyLnBhdGgscGFyZW50OnJ9KX19c3RhdGljIGNyZWF0ZSh0LG4pe3JldHVybiBuZXcgQ0Uoe2luOnQsb3V0Om4sdHlwZU5hbWU6WGUuWm9kUGlwZWxpbmV9KX19Y2xhc3MgdE8gZXh0ZW5kcyBjdHtfcGFyc2UodCl7Y29uc3Qgbj10aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh0KSxyPWk9PihFdShpKSYmKGkudmFsdWU9T2JqZWN0LmZyZWV6ZShpLnZhbHVlKSksaSk7cmV0dXJuIHd5KG4pP24udGhlbihpPT5yKGkpKTpyKG4pfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX10Ty5jcmVhdGU9KGUsdCk9Pm5ldyB0Tyh7aW5uZXJUeXBlOmUsdHlwZU5hbWU6WGUuWm9kUmVhZG9ubHksLi4ubnQodCl9KTt2YXIgWGU7KGZ1bmN0aW9uKGUpe2UuWm9kU3RyaW5nPSJab2RTdHJpbmciLGUuWm9kTnVtYmVyPSJab2ROdW1iZXIiLGUuWm9kTmFOPSJab2ROYU4iLGUuWm9kQmlnSW50PSJab2RCaWdJbnQiLGUuWm9kQm9vbGVhbj0iWm9kQm9vbGVhbiIsZS5ab2REYXRlPSJab2REYXRlIixlLlpvZFN5bWJvbD0iWm9kU3ltYm9sIixlLlpvZFVuZGVmaW5lZD0iWm9kVW5kZWZpbmVkIixlLlpvZE51bGw9IlpvZE51bGwiLGUuWm9kQW55PSJab2RBbnkiLGUuWm9kVW5rbm93bj0iWm9kVW5rbm93biIsZS5ab2ROZXZlcj0iWm9kTmV2ZXIiLGUuWm9kVm9pZD0iWm9kVm9pZCIsZS5ab2RBcnJheT0iWm9kQXJyYXkiLGUuWm9kT2JqZWN0PSJab2RPYmplY3QiLGUuWm9kVW5pb249IlpvZFVuaW9uIixlLlpvZERpc2NyaW1pbmF0ZWRVbmlvbj0iWm9kRGlzY3JpbWluYXRlZFVuaW9uIixlLlpvZEludGVyc2VjdGlvbj0iWm9kSW50ZXJzZWN0aW9uIixlLlpvZFR1cGxlPSJab2RUdXBsZSIsZS5ab2RSZWNvcmQ9IlpvZFJlY29yZCIsZS5ab2RNYXA9IlpvZE1hcCIsZS5ab2RTZXQ9IlpvZFNldCIsZS5ab2RGdW5jdGlvbj0iWm9kRnVuY3Rpb24iLGUuWm9kTGF6eT0iWm9kTGF6eSIsZS5ab2RMaXRlcmFsPSJab2RMaXRlcmFsIixlLlpvZEVudW09IlpvZEVudW0iLGUuWm9kRWZmZWN0cz0iWm9kRWZmZWN0cyIsZS5ab2ROYXRpdmVFbnVtPSJab2ROYXRpdmVFbnVtIixlLlpvZE9wdGlvbmFsPSJab2RPcHRpb25hbCIsZS5ab2ROdWxsYWJsZT0iWm9kTnVsbGFibGUiLGUuWm9kRGVmYXVsdD0iWm9kRGVmYXVsdCIsZS5ab2RDYXRjaD0iWm9kQ2F0Y2giLGUuWm9kUHJvbWlzZT0iWm9kUHJvbWlzZSIsZS5ab2RCcmFuZGVkPSJab2RCcmFuZGVkIixlLlpvZFBpcGVsaW5lPSJab2RQaXBlbGluZSIsZS5ab2RSZWFkb25seT0iWm9kUmVhZG9ubHkifSkoWGV8fChYZT17fSkpO2NvbnN0IHJvPW5vLmNyZWF0ZTtwby5jcmVhdGU7amkuY3JlYXRlO2NvbnN0IHQ4PXNuLmNyZWF0ZTtBeS5jcmVhdGU7X3kuY3JlYXRlO09zLmNyZWF0ZTtjb25zdCBuOD1DdS5jcmVhdGU7T3kuY3JlYXRlO29vLmNyZWF0ZTtQdS5jcmVhdGU7Y29uc3Qgcjg9ImNiX2xpbmtlZF9iYW5rcyIscXhlPVt7aWQ6ImRlZmF1bHQtY2hhc2UiLGJhbmtOYW1lOiJKUE1vcmdhbiBDaGFzZSBCYW5rIixhY2NvdW50SG9sZGVyOiJJbmlha2kgV2lsbGlhbXMiLHJvdXRpbmdOdW1iZXI6IjAyMTAwMDAyMSIsYWNjb3VudE51bWJlcjoiKioqKjQ1MjEiLGFjY291bnRUeXBlOiJjaGVja2luZyIsbGFzdDQ6IjQ1MjEiLGFkZGVkQXQ6bmV3IERhdGUoRGF0ZS5ub3coKS03MjAqNjAqNjAqMWUzKS50b0lTT1N0cmluZygpfV07ZnVuY3Rpb24gVXhlKCl7dHJ5e2NvbnN0IGU9bG9jYWxTdG9yYWdlLmdldEl0ZW0ocjgpO2lmKGUpcmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2h7fXJldHVybiBxeGV9ZnVuY3Rpb24genhlKGUpe3RyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShyOCxKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2h7fX1mdW5jdGlvbiBpOCgpe2NvbnN0W2UsdF09Qy51c2VTdGF0ZSgoKT0+VXhlKCkpO3JldHVybiBDLnVzZUVmZmVjdCgoKT0+e3p4ZShlKX0sW2VdKSx7YmFua3M6ZSxhZGRCYW5rOmk9Pntjb25zdCBvPWkuYWNjb3VudE51bWJlci5yZXBsYWNlKC9cRC9nLCIiKS5zbGljZSgtNCkscz17Li4uaSxpZDpgYmFuay0ke0RhdGUubm93KCl9YCxsYXN0NDpvLGFjY291bnROdW1iZXI6YCoqKioke299YCxhZGRlZEF0Om5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX07cmV0dXJuIHQodT0+Wy4uLnUsc10pLHN9LHJlbW92ZUJhbms6aT0+e3Qobz0+by5maWx0ZXIocz0+cy5pZCE9PWkpKX19fWNvbnN0IEZ4ZT10OCh7YmFua05hbWU6cm8oKS5taW4oMiwiQmFuayBuYW1lIGlzIHJlcXVpcmVkIiksYWNjb3VudEhvbGRlcjpybygpLm1pbigyLCJBY2NvdW50IGhvbGRlciBuYW1lIGlzIHJlcXVpcmVkIikscm91dGluZ051bWJlcjpybygpLnJlZ2V4KC9eXGR7OX0kLywiUm91dGluZyBudW1iZXIgbXVzdCBiZSBleGFjdGx5IDkgZGlnaXRzIiksYWNjb3VudE51bWJlcjpybygpLm1pbig0LCJNdXN0IGJlIGF0IGxlYXN0IDQgZGlnaXRzIikucmVnZXgoL15cZCskLywiRGlnaXRzIG9ubHkiKSxhY2NvdW50VHlwZTpuOChbImNoZWNraW5nIiwic2F2aW5ncyJdKX0pLHk0PTE2MDgzNDAsSHhlPS4wMjUsUnA9M2U1O2Z1bmN0aW9uIEd4ZSgpe2NvbnN0WyxlXT0keSgpLHtiYW5rczp0LGFkZEJhbms6bn09aTgoKSxbcixpXT1DLnVzZVN0YXRlKCIiKSxbbyxzXT1DLnVzZVN0YXRlKCIiKSxbdSxmXT1DLnVzZVN0YXRlKCExKSxbZCxwXT1DLnVzZVN0YXRlKCExKSxbbSx5XT1DLnVzZVN0YXRlKCJiYW5rIiksW3gsd109Qy51c2VTdGF0ZSh0WzBdPy5pZD8/IiIpLFtiLGddPUMudXNlU3RhdGUoITEpLFtfLE9dPUMudXNlU3RhdGUoITEpLFtFLGpdPUMudXNlU3RhdGUoITEpLFtULFBdPUMudXNlU3RhdGUoITEpLE49Qy51c2VSZWYoYENCLVdIJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTArMTApfS0ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo5ZTMrMWUzKX1gKSxSPU51bWJlcihyKXx8MCxJPXBhcnNlRmxvYXQoKFIqSHhlKS50b0ZpeGVkKDIpKSxWPXBhcnNlRmxvYXQoKFIrSSkudG9GaXhlZCgyKSksQj10LmZpbmQoSD0+SC5pZD09PXgpPz90WzBdLCQ9WUYoe3Jlc29sdmVyOlpGKEZ4ZSksZGVmYXVsdFZhbHVlczp7YmFua05hbWU6IiIsYWNjb3VudEhvbGRlcjoiSW5pYWtpIFdpbGxpYW1zIixyb3V0aW5nTnVtYmVyOiIiLGFjY291bnROdW1iZXI6IiIsYWNjb3VudFR5cGU6ImNoZWNraW5nIn19KSx6PUg9Pntjb25zdCBlZT1uKHsuLi5ILGFjY291bnRUeXBlOkguYWNjb3VudFR5cGV9KTt3KGVlLmlkKSwkLnJlc2V0KCksZyghMSl9LFU9KCk9PntqKCExKSxQKCExKSxmKCEwKX0sSz0oKT0+e1AoITApLHNldFRpbWVvdXQoKCk9PntQKCExKSxqKCEwKX0sMTgwMCl9LEw9KCk9PntmKCExKSxwKCEwKX0sVz0oKT0+ZSgiLyIpO3JldHVybiBBLmpzeHMoImRpdiIse2NsYXNzTmFtZToibWF4LXctMnhsIG14LWF1dG8gc3BhY2UteS04IGFuaW1hdGUtaW4gZmFkZS1pbiBzbGlkZS1pbi1mcm9tLWJvdHRvbS00IGR1cmF0aW9uLTUwMCIsY2hpbGRyZW46W0EuanN4KCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC00IixjaGlsZHJlbjpBLmpzeCgiaDEiLHtjbGFzc05hbWU6InRleHQtM3hsIGZvbnQtYm9sZCB0cmFja2luZy10aWdodCIsY2hpbGRyZW46IldpdGhkcmF3In0pfSksQS5qc3godkIse21vZGU6IndhaXQiLGNoaWxkcmVuOmQ/QS5qc3hzKHdsLmRpdix7aW5pdGlhbDp7b3BhY2l0eTowLHNjYWxlOi45NX0sYW5pbWF0ZTp7b3BhY2l0eToxLHNjYWxlOjF9LGNsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktMjAgc3BhY2UteS02IixjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZToidy0yNCBoLTI0IHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDAvMjAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ncmVlbi01MDAgcmVsYXRpdmUiLGNoaWxkcmVuOkEuanN4KHdsLmRpdix7aW5pdGlhbDp7c2NhbGU6MH0sYW5pbWF0ZTp7c2NhbGU6MX0sdHJhbnNpdGlvbjp7ZGVsYXk6LjIsdHlwZToic3ByaW5nIixzdGlmZm5lc3M6MjAwfSxjaGlsZHJlbjpBLmpzeChhZix7Y2xhc3NOYW1lOiJ3LTEyIGgtMTIifSl9KX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LWNlbnRlciBzcGFjZS15LTIiLGNoaWxkcmVuOltBLmpzeCgiaDIiLHtjbGFzc05hbWU6InRleHQtMnhsIGZvbnQtYm9sZCIsY2hpbGRyZW46IldpdGhkcmF3YWwgSW5pdGlhdGVkIn0pLEEuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJZb3VyIHJlcXVlc3QgaGFzIGJlZW4gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseS4ifSldfSksQS5qc3hzKG1uLHtjbGFzc05hbWU6InctZnVsbCBwLTYgc3BhY2UteS0zIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHRleHQtc20iLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiQW1vdW50In0pLEEuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LWJvbGQiLGNoaWxkcmVuOm09PT0iYmFuayI/TnQoUik6YCR7cn0gVVNEVGB9KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC1zbSIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJXaXRoZHJhd2FsIEZlZSAoMi41JSkifSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIHRleHQtYW1iZXItNTAwIixjaGlsZHJlbjpOdChJKX0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtIGJvcmRlci10IGJvcmRlci1ib3JkZXIgcHQtMyIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJEZXN0aW5hdGlvbiJ9KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1tZWRpdW0iLGNoaWxkcmVuOm09PT0iYmFuayI/YCR7Qj8uYmFua05hbWU/PyJCYW5rIn0gKioqKiR7Qj8ubGFzdDR9YDpgJHtvLnNsaWNlKDAsNil9Li4uJHtvLnNsaWNlKC00KX1gfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHRleHQtc20iLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiUmVmZXJlbmNlIE51bWJlciJ9KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1tb25vIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46Ti5jdXJyZW50fSldfSldfSksQS5qc3gocXQse29uQ2xpY2s6VyxjbGFzc05hbWU6InctZnVsbCBoLTE0IHRleHQtbGcgcm91bmRlZC14bCIsY2hpbGRyZW46IkRvbmUifSldfSwic3VjY2VzcyIpOkEuanN4KHdsLmRpdix7aW5pdGlhbDp7b3BhY2l0eTowfSxhbmltYXRlOntvcGFjaXR5OjF9LGV4aXQ6e29wYWNpdHk6MCxzY2FsZTouOTV9LGNoaWxkcmVuOkEuanN4cyh2YmUse3ZhbHVlOm0sb25WYWx1ZUNoYW5nZTpIPT57eShIKSxpKCIiKX0sY2xhc3NOYW1lOiJ3LWZ1bGwiLGNoaWxkcmVuOltBLmpzeHMoTDYse2NsYXNzTmFtZToiZ3JpZCB3LWZ1bGwgZ3JpZC1jb2xzLTIgaC0xNCBtYi04IixjaGlsZHJlbjpbQS5qc3gocV8se3ZhbHVlOiJiYW5rIixjbGFzc05hbWU6ImgtMTAiLGNoaWxkcmVuOiJCYW5rIFRyYW5zZmVyIn0pLEEuanN4KHFfLHt2YWx1ZToiY3J5cHRvIixjbGFzc05hbWU6ImgtMTAiLGNoaWxkcmVuOiJDcnlwdG8gV2FsbGV0In0pXX0pLEEuanN4cyhVXyx7dmFsdWU6ImJhbmsiLGNsYXNzTmFtZToic3BhY2UteS02IixjaGlsZHJlbjpbdC5sZW5ndGg9PT0wP0EuanN4cyhtbix7Y2xhc3NOYW1lOiJwLTYgdGV4dC1jZW50ZXIgc3BhY2UteS00IixjaGlsZHJlbjpbQS5qc3goTnAse2NsYXNzTmFtZToidy0xMCBoLTEwIG14LWF1dG8gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIn0pLEEuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1zbSIsY2hpbGRyZW46Ik5vIGJhbmsgYWNjb3VudHMgbGlua2VkIHlldC4ifSksQS5qc3hzKHF0LHt2YXJpYW50OiJvdXRsaW5lIixvbkNsaWNrOigpPT5nKCEwKSxjbGFzc05hbWU6ImdhcC0yIixjaGlsZHJlbjpbQS5qc3goQmwse2NsYXNzTmFtZToidy00IGgtNCJ9KSwiIEFkZCBCYW5rIEFjY291bnQiXX0pXX0pOkEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJzcGFjZS15LTMiLGNoaWxkcmVuOltBLmpzeChvbix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJEZXN0aW5hdGlvbiBCYW5rIn0pLEEuanN4KCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9Pk8oITApLGNsYXNzTmFtZToidy1mdWxsIiwiZGF0YS10ZXN0aWQiOiJidXR0b24tYmFuay1waWNrZXIiLGNoaWxkcmVuOkEuanN4KG1uLHtjbGFzc05hbWU6InAtNCBib3JkZXItMiBib3JkZXItcHJpbWFyeS8zMCBiZy1wcmltYXJ5LzUgaG92ZXI6Ym9yZGVyLXByaW1hcnkvNjAgdHJhbnNpdGlvbi1jb2xvcnMgY3Vyc29yLXBvaW50ZXIiLGNoaWxkcmVuOkEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iLGNoaWxkcmVuOltBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQiLGNoaWxkcmVuOltBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTEwIGgtMTAgcm91bmRlZC1mdWxsIGJnLXdoaXRlIGRhcms6Ymctc2Vjb25kYXJ5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNoYWRvdy1zbSBzaHJpbmstMCIsY2hpbGRyZW46QS5qc3goTnAse2NsYXNzTmFtZToidy01IGgtNSB0ZXh0LWJsdWUtNjAwIn0pfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InRleHQtbGVmdCIsY2hpbGRyZW46W0EuanN4KCJkaXYiLHtjbGFzc05hbWU6ImZvbnQtYm9sZCB0ZXh0LXNtIixjaGlsZHJlbjpCPy5iYW5rTmFtZX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBjYXBpdGFsaXplIixjaGlsZHJlbjpbQj8uYWNjb3VudFR5cGUsIiAqKioqIixCPy5sYXN0NF19KV19KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiLGNoaWxkcmVuOltBLmpzeChhZix7Y2xhc3NOYW1lOiJ3LTQgaC00IHRleHQtcHJpbWFyeSJ9KSxBLmpzeChoTyx7Y2xhc3NOYW1lOiJ3LTQgaC00IHRleHQtbXV0ZWQtZm9yZWdyb3VuZCJ9KV19KV19KX0pfSksQS5qc3hzKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PmcoITApLGNsYXNzTmFtZToidGV4dC14cyB0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHBsLTEiLCJkYXRhLXRlc3RpZCI6ImJ1dHRvbi1hZGQtYW5vdGhlci1iYW5rIixjaGlsZHJlbjpbQS5qc3goQmwse2NsYXNzTmFtZToidy0zIGgtMyJ9KSwiIEFkZCBhbm90aGVyIGJhbmsgYWNjb3VudCJdfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktNCIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJzcGFjZS15LTIiLGNoaWxkcmVuOltBLmpzeChvbix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJBbW91bnQgKFVTRCkifSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIixjaGlsZHJlbjpbQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImFic29sdXRlIGxlZnQtNCB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC14bCBmb250LW1lZGl1bSIsY2hpbGRyZW46IiQifSksQS5qc3goVm4se3R5cGU6Im51bWJlciIscGxhY2Vob2xkZXI6IjAuMDAiLGNsYXNzTmFtZToicGwtOCBoLTE2IHRleHQtMnhsIGZvbnQtYm9sZCByb3VuZGVkLXhsIix2YWx1ZTpyLG9uQ2hhbmdlOkg9PmkoSC50YXJnZXQudmFsdWUpLCJkYXRhLXRlc3RpZCI6ImlucHV0LXdpdGhkcmF3LWFtb3VudCJ9KV19KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiYmctc2Vjb25kYXJ5LzUwIHJvdW5kZWQteGwgcC00IHNwYWNlLXktMyIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtIixjaGlsZHJlbjpbQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46IkF2YWlsYWJsZSBiYWxhbmNlIn0pLEEuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW1lZGl1bSIsY2hpbGRyZW46TnQoeTQpfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHRleHQtc20iLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiV2l0aGRyYXdhbCBmZWUgKDIuNSUpIn0pLEEuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LXNlbWlib2xkIHRleHQtYW1iZXItNTAwIixjaGlsZHJlbjpSPjA/TnQoSSk6IuKAlCJ9KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC1zbSBib3JkZXItdCBib3JkZXItYm9yZGVyIHB0LTMgZm9udC1zZW1pYm9sZCIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2hpbGRyZW46IlRvdGFsIGRlZHVjdGVkIn0pLEEuanN4KCJzcGFuIix7Y2hpbGRyZW46Uj4wP050KFYpOiLigJQifSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHRleHQtc20iLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiRXN0aW1hdGVkIGFycml2YWwifSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIixjaGlsZHJlbjoiMeKAkzMgYnVzaW5lc3MgZGF5cyJ9KV19KV19KSxSPj1ScCYmQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtc3RhcnQgZ2FwLTMgYmctYW1iZXItNTAwLzEwIGJvcmRlciBib3JkZXItYW1iZXItNTAwLzIwIHRleHQtYW1iZXItNjAwIGRhcms6dGV4dC1hbWJlci00MDAgcm91bmRlZC14bCBwLTQgdGV4dC1zbSIsY2hpbGRyZW46W0EuanN4KFpiLHtjbGFzc05hbWU6InctNCBoLTQgc2hyaW5rLTAgbXQtMC41In0pLEEuanN4cygicCIse2NoaWxkcmVuOlsiQSB3aXRoZHJhd2FsIGZlZSBvZiAiLEEuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LWJvbGQiLGNoaWxkcmVuOk50KEkpfSksIiAoMi41JSkgbXVzdCBiZSBwYWlkIGJlZm9yZSB5b3VyIHdpdGhkcmF3YWwgY2FuIGJlIHByb2Nlc3NlZC4iXX0pXX0pLHImJlI+MCYmUjxScCYmQS5qc3hzKCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtZGVzdHJ1Y3RpdmUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBwbC0xIixjaGlsZHJlbjpbQS5qc3goR00se2NsYXNzTmFtZToidy0zLjUgaC0zLjUgc2hyaW5rLTAifSksIk1pbmltdW0gd2l0aGRyYXdhbCBhbW91bnQgaXMgIixOdChScCldfSksQS5qc3hzKHF0LHtjbGFzc05hbWU6InctZnVsbCBoLTE0IHRleHQtbGcgcm91bmRlZC14bCBtdC00IixkaXNhYmxlZDohcnx8UjxScHx8IUIsb25DbGljazpVLCJkYXRhLXRlc3RpZCI6ImJ1dHRvbi1wcmV2aWV3LXdpdGhkcmF3YWwiLGNoaWxkcmVuOlsiUHJldmlldyBXaXRoZHJhd2FsICIsQS5qc3goSE0se2NsYXNzTmFtZToibWwtMiB3LTUgaC01In0pXX0pXX0pXX0pLEEuanN4KFVfLHt2YWx1ZToiY3J5cHRvIixjbGFzc05hbWU6InNwYWNlLXktNiIsY2hpbGRyZW46QS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktNCIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJzcGFjZS15LTIiLGNoaWxkcmVuOltBLmpzeChvbix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJBc3NldCJ9KSxBLmpzeHMobW4se2NsYXNzTmFtZToicC00IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyIsY2hpbGRyZW46W0EuanN4KCJkaXYiLHtjbGFzc05hbWU6InctOCBoLTggcm91bmRlZC1mdWxsIGJnLVsjMjZBMTdCXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIHRleHQteHMgZm9udC1ib2xkIixjaGlsZHJlbjoiVSJ9KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1ib2xkIixjaGlsZHJlbjoiVGV0aGVyIChVU0RUKSJ9KV19KSxBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgYm9yZGVyIGJvcmRlci1ib3JkZXIgcHgtMiBweS0xIHJvdW5kZWQtbWQiLGNoaWxkcmVuOiJFUkMtMjAifSldfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktMiIsY2hpbGRyZW46W0EuanN4KG9uLHtjbGFzc05hbWU6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46IkRlc3RpbmF0aW9uIEFkZHJlc3MifSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIixjaGlsZHJlbjpbQS5qc3goVm4se3BsYWNlaG9sZGVyOiJFbnRlciBVU0RUIGFkZHJlc3MiLGNsYXNzTmFtZToicHItMTIgaC0xNCByb3VuZGVkLXhsIix2YWx1ZTpvLG9uQ2hhbmdlOkg9PnMoSC50YXJnZXQudmFsdWUpLCJkYXRhLXRlc3RpZCI6ImlucHV0LXdhbGxldC1hZGRyZXNzIn0pLEEuanN4KCJidXR0b24iLHtjbGFzc05hbWU6ImFic29sdXRlIHJpZ2h0LTQgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQiLGNoaWxkcmVuOkEuanN4KFJLLHtjbGFzc05hbWU6InctNSBoLTUifSl9KV19KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToic3BhY2UteS0yIixjaGlsZHJlbjpbQS5qc3gob24se2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiQW1vdW50In0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSIsY2hpbGRyZW46W0EuanN4KFZuLHt0eXBlOiJudW1iZXIiLHBsYWNlaG9sZGVyOiIwLjAwIixjbGFzc05hbWU6InByLTIwIGgtMTQgcm91bmRlZC14bCBmb250LW1lZGl1bSIsdmFsdWU6cixvbkNoYW5nZTpIPT5pKEgudGFyZ2V0LnZhbHVlKSwiZGF0YS10ZXN0aWQiOiJpbnB1dC1jcnlwdG8tYW1vdW50In0pLEEuanN4KCJidXR0b24iLHtjbGFzc05hbWU6ImFic29sdXRlIHJpZ2h0LTIgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQteHMgZm9udC1ib2xkIGJnLXNlY29uZGFyeSBweC0zIHB5LTEuNSByb3VuZGVkLWxnIHRleHQtcHJpbWFyeSIsb25DbGljazooKT0+aShTdHJpbmcoeTQpKSxjaGlsZHJlbjoiTUFYIn0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtdC0yIixjaGlsZHJlbjpbIuKJiCAiLE50KFIpXX0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1zZWNvbmRhcnkvNTAgcm91bmRlZC14bCBwLTQgc3BhY2UteS0zIG10LTQiLGNoaWxkcmVuOltBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC1zbSIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOiJXaXRoZHJhd2FsIGZlZSAoMi41JSkifSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci01MDAiLGNoaWxkcmVuOlI+MD9gJHtJLnRvTG9jYWxlU3RyaW5nKCl9IFVTRFRgOiLigJQifSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHRleHQtc20iLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiTmV0d29yayBmZWUifSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIixjaGlsZHJlbjoi4omIIDIuNTAgVVNEVCJ9KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC1zbSBib3JkZXItdCBib3JkZXItYm9yZGVyIHB0LTMgZm9udC1zZW1pYm9sZCIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2hpbGRyZW46IlRvdGFsIGZlZXMifSksQS5qc3goInNwYW4iLHtjaGlsZHJlbjpSPjA/YCR7KEkrMi41KS50b0xvY2FsZVN0cmluZygpfSBVU0RUYDoi4oCUIn0pXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtIixjaGlsZHJlbjpbQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46IkVzdGltYXRlZCB0aW1lIn0pLEEuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW1lZGl1bSIsY2hpbGRyZW46In4xMCBtaW51dGVzIn0pXX0pXX0pLFI+MCYmQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtc3RhcnQgZ2FwLTMgYmctYW1iZXItNTAwLzEwIGJvcmRlciBib3JkZXItYW1iZXItNTAwLzIwIHRleHQtYW1iZXItNjAwIGRhcms6dGV4dC1hbWJlci00MDAgcm91bmRlZC14bCBwLTQgdGV4dC1zbSIsY2hpbGRyZW46W0EuanN4KFpiLHtjbGFzc05hbWU6InctNCBoLTQgc2hyaW5rLTAgbXQtMC41In0pLEEuanN4cygicCIse2NoaWxkcmVuOlsiQSB3aXRoZHJhd2FsIGZlZSBvZiAiLEEuanN4cygic3BhbiIse2NsYXNzTmFtZToiZm9udC1ib2xkIixjaGlsZHJlbjpbSS50b0xvY2FsZVN0cmluZygpLCIgVVNEVCJdfSksIiAoMi41JSkgbXVzdCBiZSBwYWlkIGJlZm9yZSB5b3VyIHdpdGhkcmF3YWwgY2FuIGJlIHByb2Nlc3NlZC4iXX0pXX0pLEEuanN4cyhxdCx7Y2xhc3NOYW1lOiJ3LWZ1bGwgaC0xNCB0ZXh0LWxnIHJvdW5kZWQteGwgbXQtNCIsZGlzYWJsZWQ6IXJ8fFI8PTB8fCFvLG9uQ2xpY2s6VSxjaGlsZHJlbjpbIlByZXZpZXcgV2l0aGRyYXdhbCAiLEEuanN4KEhNLHtjbGFzc05hbWU6Im1sLTIgdy01IGgtNSJ9KV19KV19KX0pXX0pfSwiZm9ybSIpfSksQS5qc3goT2Yse29wZW46dSxvbk9wZW5DaGFuZ2U6SD0+eyFIJiYhVCYmZighMSl9LGNoaWxkcmVuOkEuanN4cyhHbCx7Y2xhc3NOYW1lOiJzbTptYXgtdy1tZCIsY2hpbGRyZW46W0EuanN4cyhLbCx7Y2hpbGRyZW46W0EuanN4KFdsLHtjaGlsZHJlbjoiQ29uZmlybSBXaXRoZHJhd2FsIn0pLEEuanN4KGFGLHtjaGlsZHJlbjpFPyJGZWUgcGFpZC4gUmV2aWV3IGFuZCBjb25maXJtIHlvdXIgd2l0aGRyYXdhbC4iOiJQYXkgdGhlIHJlcXVpcmVkIGZlZSB0byBwcm9jZWVkIHdpdGggeW91ciB3aXRoZHJhd2FsLiJ9KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToic3BhY2UteS00IHB5LTIiLGNoaWxkcmVuOltBLmpzeHMoImRpdiIse2NsYXNzTmFtZToidGV4dC1jZW50ZXIgcGItNCBib3JkZXItYiBib3JkZXItYm9yZGVyIixjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZToidGV4dC0zeGwgZm9udC1ib2xkIHRyYWNraW5nLXRpZ2h0IixjaGlsZHJlbjptPT09ImJhbmsiP050KFIpOmAke3J9IFVTRFRgfSksbT09PSJjcnlwdG8iJiZBLmpzeHMoImRpdiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQtc20gbXQtMSIsY2hpbGRyZW46WyLiiYggIixOdChSKV19KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToic3BhY2UteS0zIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHRleHQtc20iLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiVG8ifSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIHRleHQtcmlnaHQiLGNoaWxkcmVuOm09PT0iYmFuayI/YCR7Qj8uYmFua05hbWV9ICoqKioke0I/Lmxhc3Q0fWA6QS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbW9ubyBicmVhay1hbGwgdy1bMjAwcHhdIGlubGluZS1ibG9jayIsY2hpbGRyZW46b30pfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciB0ZXh0LXNtIixjaGlsZHJlbjpbQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46IldpdGhkcmF3YWwgZmVlICgyLjUlKSJ9KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiLGNoaWxkcmVuOltBLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTUwMCIsY2hpbGRyZW46bT09PSJiYW5rIj9OdChJKTpgJHtJLnRvTG9jYWxlU3RyaW5nKCl9IFVTRFRgfSksRSYmQS5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC14cyBiZy1ncmVlbi01MDAvMTUgdGV4dC1ncmVlbi02MDAgZGFyazp0ZXh0LWdyZWVuLTQwMCBweC0yIHB5LTAuNSByb3VuZGVkLWZ1bGwgZm9udC1tZWRpdW0iLGNoaWxkcmVuOltBLmpzeChhZix7Y2xhc3NOYW1lOiJ3LTMgaC0zIn0pLCIgUGFpZCJdfSldfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1iZXR3ZWVuIHRleHQtc20gZm9udC1ib2xkIGJvcmRlci10IGJvcmRlci1ib3JkZXIgcHQtMyIsY2hpbGRyZW46W0EuanN4KCJzcGFuIix7Y2hpbGRyZW46IlRvdGFsIERlZHVjdGVkIn0pLEEuanN4KCJzcGFuIix7Y2hpbGRyZW46bT09PSJiYW5rIj9OdChWKTpgJHsoUitJKzIuNSkudG9Mb2NhbGVTdHJpbmcoKX0gVVNEVGB9KV19KV19KSxBLmpzeCh2Qix7bW9kZToid2FpdCIsY2hpbGRyZW46RT9BLmpzeCh3bC5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx5OjZ9LGFuaW1hdGU6e29wYWNpdHk6MSx5OjB9LGNoaWxkcmVuOkEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1ncmVlbi01MDAvMTAgYm9yZGVyIGJvcmRlci1ncmVlbi01MDAvMjUgcm91bmRlZC14bCBwLTQgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMiLGNoaWxkcmVuOltBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTggaC04IHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDAvMjAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc2hyaW5rLTAiLGNoaWxkcmVuOkEuanN4KExLLHtjbGFzc05hbWU6InctNCBoLTQgdGV4dC1ncmVlbi01MDAifSl9KSxBLmpzeHMoImRpdiIse2NoaWxkcmVuOltBLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JlZW4tNjAwIGRhcms6dGV4dC1ncmVlbi00MDAiLGNoaWxkcmVuOiJGZWUgcGFpZCBzdWNjZXNzZnVsbHkifSksQS5qc3hzKCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46W209PT0iYmFuayI/TnQoSSk6YCR7SS50b0xvY2FsZVN0cmluZygpfSBVU0RUYCwiIGRlZHVjdGVkIGZyb20geW91ciBhY2NvdW50Il19KV19KV19KX0sImZlZS1wYWlkIik6QS5qc3god2wuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseTo2fSxhbmltYXRlOntvcGFjaXR5OjEseTowfSxleGl0OntvcGFjaXR5OjB9LGNoaWxkcmVuOkEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1hbWJlci01MDAvMTAgYm9yZGVyIGJvcmRlci1hbWJlci01MDAvMjUgcm91bmRlZC14bCBwLTQgc3BhY2UteS0zIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtYW1iZXItNjAwIGRhcms6dGV4dC1hbWJlci00MDAgZm9udC1zZW1pYm9sZCB0ZXh0LXNtIixjaGlsZHJlbjpbQS5qc3goWmIse2NsYXNzTmFtZToidy00IGgtNCBzaHJpbmstMCJ9KSwiRmVlIHBheW1lbnQgcmVxdWlyZWQiXX0pLEEuanN4cygicCIse2NsYXNzTmFtZToidGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOlsiWW91ciAyLjUlIHdpdGhkcmF3YWwgZmVlIG9mICIsQS5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtYm9sZCB0ZXh0LWZvcmVncm91bmQiLGNoaWxkcmVuOm09PT0iYmFuayI/TnQoSSk6YCR7SS50b0xvY2FsZVN0cmluZygpfSBVU0RUYH0pLCIgbXVzdCBiZSBwYWlkIGJlZm9yZSB0aGlzIHdpdGhkcmF3YWwgY2FuIGJlIHByb2Nlc3NlZC4iXX0pLEEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBiZy1iYWNrZ3JvdW5kLzYwIHJvdW5kZWQtbGcgcHgtMyBweS0yIixjaGlsZHJlbjpbQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHNocmluay0wIixjaGlsZHJlbjoiU2VuZCB0bzoifSksQS5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQteHMgZm9udC1tb25vIHRleHQtZm9yZWdyb3VuZCBicmVhay1hbGwiLGNoaWxkcmVuOklwfSldfSksQS5qc3gocXQse2NsYXNzTmFtZToidy1mdWxsIGdhcC0yIix2YXJpYW50OiJvdXRsaW5lIixvbkNsaWNrOkssZGlzYWJsZWQ6VCwiZGF0YS10ZXN0aWQiOiJidXR0b24tcGF5LWZlZSIsY2hpbGRyZW46VD9BLmpzeHMoQS5GcmFnbWVudCx7Y2hpbGRyZW46W0EuanN4KHdsLmRpdix7Y2xhc3NOYW1lOiJ3LTQgaC00IGJvcmRlci0yIGJvcmRlci1jdXJyZW50IGJvcmRlci10LXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCIsYW5pbWF0ZTp7cm90YXRlOjM2MH0sdHJhbnNpdGlvbjp7cmVwZWF0OjEvMCxkdXJhdGlvbjouOCxlYXNlOiJsaW5lYXIifX0pLCJQcm9jZXNzaW5nIHBheW1lbnQuLi4iXX0pOkEuanN4cyhBLkZyYWdtZW50LHtjaGlsZHJlbjpbQS5qc3gocEsse2NsYXNzTmFtZToidy00IGgtNCJ9KSwiUGF5IEZlZSDigJQgIixtPT09ImJhbmsiP050KEkpOmAke0kudG9Mb2NhbGVTdHJpbmcoKX0gVVNEVGBdfSl9KV19KX0sImZlZS11bnBhaWQiKX0pLEUmJkEuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1kZXN0cnVjdGl2ZS8xMCB0ZXh0LWRlc3RydWN0aXZlIHRleHQteHMgcC0zIHJvdW5kZWQtbGcgZmxleCBnYXAtMiIsY2hpbGRyZW46W0EuanN4KEdNLHtjbGFzc05hbWU6InctMy41IGgtMy41IHNocmluay0wIG10LTAuNSJ9KSxBLmpzeCgicCIse2NoaWxkcmVuOiJXaXRoZHJhd2FscyBjYW5ub3QgYmUgY2FuY2VsbGVkIG9uY2Ugc3VibWl0dGVkLiBFbnN1cmUgYWxsIGRldGFpbHMgYXJlIGNvcnJlY3QuIn0pXX0pXX0pLEEuanN4cyh5ZCx7Y2xhc3NOYW1lOiJnYXAtMiBzbTpnYXAtMCIsY2hpbGRyZW46W0EuanN4KHF0LHt2YXJpYW50OiJvdXRsaW5lIixvbkNsaWNrOigpPT5mKCExKSxkaXNhYmxlZDpULGNoaWxkcmVuOiJDYW5jZWwifSksQS5qc3gocXQse29uQ2xpY2s6TCxkaXNhYmxlZDohRSwiZGF0YS10ZXN0aWQiOiJidXR0b24tY29uZmlybS13aXRoZHJhd2FsIixjaGlsZHJlbjoiQ29uZmlybSBXaXRoZHJhd2FsIn0pXX0pXX0pfSksQS5qc3goT2Yse29wZW46Xyxvbk9wZW5DaGFuZ2U6TyxjaGlsZHJlbjpBLmpzeHMoR2wse2NsYXNzTmFtZToic206bWF4LXctc20iLGNoaWxkcmVuOltBLmpzeChLbCx7Y2hpbGRyZW46QS5qc3goV2wse2NoaWxkcmVuOiJTZWxlY3QgQmFuayBBY2NvdW50In0pfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktMiBweS0yIixjaGlsZHJlbjpbdC5tYXAoSD0+QS5qc3hzKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9Pnt3KEguaWQpLE8oITEpfSxjbGFzc05hbWU6InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBwLTQgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWJvcmRlciBob3Zlcjpib3JkZXItcHJpbWFyeS81MCBob3ZlcjpiZy1wcmltYXJ5LzUgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1sZWZ0IiwiZGF0YS10ZXN0aWQiOmBidXR0b24tc2VsZWN0LWJhbmstJHtILmlkfWAsY2hpbGRyZW46W0EuanN4KCJkaXYiLHtjbGFzc05hbWU6InctMTAgaC0xMCByb3VuZGVkLWZ1bGwgYmctc2Vjb25kYXJ5IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNocmluay0wIixjaGlsZHJlbjpBLmpzeChOcCx7Y2xhc3NOYW1lOiJ3LTUgaC01IHRleHQtYmx1ZS01MDAifSl9KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleC0xIixjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZToiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIixjaGlsZHJlbjpILmJhbmtOYW1lfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGNhcGl0YWxpemUiLGNoaWxkcmVuOltILmFjY291bnRUeXBlLCIgKioqKiIsSC5sYXN0NF19KV19KSxILmlkPT09eCYmQS5qc3goYWYse2NsYXNzTmFtZToidy00IGgtNCB0ZXh0LXByaW1hcnkgc2hyaW5rLTAifSldfSxILmlkKSksQS5qc3hzKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PntPKCExKSxnKCEwKX0sY2xhc3NOYW1lOiJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcC00IHJvdW5kZWQteGwgYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItYm9yZGVyIGhvdmVyOmJvcmRlci1wcmltYXJ5IGhvdmVyOnRleHQtcHJpbWFyeSB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9ycyIsImRhdGEtdGVzdGlkIjoiYnV0dG9uLWFkZC1iYW5rLWZyb20tcGlja2VyIixjaGlsZHJlbjpbQS5qc3goQmwse2NsYXNzTmFtZToidy01IGgtNSJ9KSwiIEFkZCBOZXcgQmFuayBBY2NvdW50Il19KV19KV19KX0pLEEuanN4KE9mLHtvcGVuOmIsb25PcGVuQ2hhbmdlOkg9PntnKEgpLEh8fCQucmVzZXQoKX0sY2hpbGRyZW46QS5qc3hzKEdsLHtjbGFzc05hbWU6InNtOm1heC13LW1kIixjaGlsZHJlbjpbQS5qc3goS2wse2NoaWxkcmVuOkEuanN4KFdsLHtjaGlsZHJlbjoiTGluayBCYW5rIEFjY291bnQifSl9KSxBLmpzeHMoImZvcm0iLHtvblN1Ym1pdDokLmhhbmRsZVN1Ym1pdCh6KSxjbGFzc05hbWU6InNwYWNlLXktNCBweS0yIixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktMiIsY2hpbGRyZW46W0EuanN4KG9uLHtjaGlsZHJlbjoiQmFuayBOYW1lIn0pLEEuanN4KFZuLHtwbGFjZWhvbGRlcjoiZS5nLiBCYW5rIG9mIEFtZXJpY2EiLCJkYXRhLXRlc3RpZCI6ImlucHV0LWJhbmstbmFtZSIsLi4uJC5yZWdpc3RlcigiYmFua05hbWUiKX0pLCQuZm9ybVN0YXRlLmVycm9ycy5iYW5rTmFtZSYmQS5qc3goInAiLHtjbGFzc05hbWU6InRleHQteHMgdGV4dC1kZXN0cnVjdGl2ZSIsY2hpbGRyZW46JC5mb3JtU3RhdGUuZXJyb3JzLmJhbmtOYW1lLm1lc3NhZ2V9KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToic3BhY2UteS0yIixjaGlsZHJlbjpbQS5qc3gob24se2NoaWxkcmVuOiJBY2NvdW50IEhvbGRlciBOYW1lIn0pLEEuanN4KFZuLHtwbGFjZWhvbGRlcjoiRnVsbCBuYW1lIG9uIGFjY291bnQiLC4uLiQucmVnaXN0ZXIoImFjY291bnRIb2xkZXIiKX0pLCQuZm9ybVN0YXRlLmVycm9ycy5hY2NvdW50SG9sZGVyJiZBLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC14cyB0ZXh0LWRlc3RydWN0aXZlIixjaGlsZHJlbjokLmZvcm1TdGF0ZS5lcnJvcnMuYWNjb3VudEhvbGRlci5tZXNzYWdlfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktMiIsY2hpbGRyZW46W0EuanN4KG9uLHtjaGlsZHJlbjoiQWNjb3VudCBUeXBlIn0pLEEuanN4cyhNRix7ZGVmYXVsdFZhbHVlOiJjaGVja2luZyIsb25WYWx1ZUNoYW5nZTpIPT4kLnNldFZhbHVlKCJhY2NvdW50VHlwZSIsSCksY2hpbGRyZW46W0EuanN4KFNFLHsiZGF0YS10ZXN0aWQiOiJzZWxlY3QtYWNjb3VudC10eXBlIixjaGlsZHJlbjpBLmpzeChSRix7fSl9KSxBLmpzeHMoQUUse2NoaWxkcmVuOltBLmpzeCh2ZCx7dmFsdWU6ImNoZWNraW5nIixjaGlsZHJlbjoiQ2hlY2tpbmcifSksQS5qc3godmQse3ZhbHVlOiJzYXZpbmdzIixjaGlsZHJlbjoiU2F2aW5ncyJ9KV19KV19KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToic3BhY2UteS0yIixjaGlsZHJlbjpbQS5qc3gob24se2NoaWxkcmVuOiJSb3V0aW5nIE51bWJlciJ9KSxBLmpzeChWbix7cGxhY2Vob2xkZXI6IjktZGlnaXQgcm91dGluZyBudW1iZXIiLG1heExlbmd0aDo5LC4uLiQucmVnaXN0ZXIoInJvdXRpbmdOdW1iZXIiKX0pLCQuZm9ybVN0YXRlLmVycm9ycy5yb3V0aW5nTnVtYmVyJiZBLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC14cyB0ZXh0LWRlc3RydWN0aXZlIixjaGlsZHJlbjokLmZvcm1TdGF0ZS5lcnJvcnMucm91dGluZ051bWJlci5tZXNzYWdlfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktMiIsY2hpbGRyZW46W0EuanN4KG9uLHtjaGlsZHJlbjoiQWNjb3VudCBOdW1iZXIifSksQS5qc3goVm4se3BsYWNlaG9sZGVyOiJBY2NvdW50IG51bWJlciIsdHlwZToicGFzc3dvcmQiLC4uLiQucmVnaXN0ZXIoImFjY291bnROdW1iZXIiKX0pLCQuZm9ybVN0YXRlLmVycm9ycy5hY2NvdW50TnVtYmVyJiZBLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC14cyB0ZXh0LWRlc3RydWN0aXZlIixjaGlsZHJlbjokLmZvcm1TdGF0ZS5lcnJvcnMuYWNjb3VudE51bWJlci5tZXNzYWdlfSldfSksQS5qc3goImRpdiIse2NsYXNzTmFtZToiYmctc2Vjb25kYXJ5LzUwIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0ZXh0LXhzIHAtMyByb3VuZGVkLWxnIixjaGlsZHJlbjoiWW91ciBkZXRhaWxzIGFyZSBlbmNyeXB0ZWQgd2l0aCAyNTYtYml0IFNTTC4gQ29pbmJhc2UgbmV2ZXIgc3RvcmVzIHlvdXIgZnVsbCBhY2NvdW50IG51bWJlci4ifSksQS5qc3hzKHlkLHtjbGFzc05hbWU6InB0LTIiLGNoaWxkcmVuOltBLmpzeChxdCx7dHlwZToiYnV0dG9uIix2YXJpYW50OiJvdXRsaW5lIixvbkNsaWNrOigpPT57ZyghMSksJC5yZXNldCgpfSxjaGlsZHJlbjoiQ2FuY2VsIn0pLEEuanN4KHF0LHt0eXBlOiJzdWJtaXQiLCJkYXRhLXRlc3RpZCI6ImJ1dHRvbi1zdWJtaXQtYmFuayIsY2hpbGRyZW46IkxpbmsgQWNjb3VudCJ9KV19KV19KV19KX0pXX0pfWNvbnN0IEt4ZT0oZSx0PS4wNSk9PntsZXQgbj1lKigxLXQpO3JldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6MzB9KS5tYXAoKHIsaSk9PihuPW4rbiooTWF0aC5yYW5kb20oKSp0KjItdCkse3RpbWU6YERheSAke2krMX1gLHByaWNlOm59KSkuY29uY2F0KFt7dGltZToiTm93IixwcmljZTplfV0pfTtmdW5jdGlvbiBXeGUoKXtjb25zdCBlPVBVKCksWyx0XT1vWCgiL2Fzc2V0LzpzeW1ib2wiKSxuPXQ/LnN5bWJvbD8udG9VcHBlckNhc2UoKSxyPW9mLmZpbmQobz0+by5zeW1ib2w9PT1uKTtpZighcilyZXR1cm4gQS5qc3goImRpdiIse2NsYXNzTmFtZToicC04IHRleHQtY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46IkFzc2V0IG5vdCBmb3VuZCJ9KTtjb25zdCBpPUt4ZShyLnByaWNlLHIuc3ltYm9sPT09IlVTRFQiPy4wMDE6LjA4KTtyZXR1cm4gQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktOCBhbmltYXRlLWluIGZhZGUtaW4gc2xpZGUtaW4tZnJvbS1ib3R0b20tNCBkdXJhdGlvbi01MDAiLGNoaWxkcmVuOltBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBtZDppdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00IixjaGlsZHJlbjpbQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC00IixjaGlsZHJlbjpbQS5qc3goImRpdiIse2NsYXNzTmFtZTpgdy0xNCBoLTE0IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIGZvbnQtYm9sZCB0ZXh0LXhsICR7ci5pY29uQ29sb3J9YCxjaGlsZHJlbjpyLnN5bWJvbC5jaGFyQXQoMCl9KSxBLmpzeHMoImRpdiIse2NoaWxkcmVuOltBLmpzeCgiaDEiLHtjbGFzc05hbWU6InRleHQtM3hsIGZvbnQtYm9sZCB0cmFja2luZy10aWdodCIsY2hpbGRyZW46ci5uYW1lfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiIsY2hpbGRyZW46W3Iuc3ltYm9sLCIgIixBLmpzeCgic3BhbiIse2NsYXNzTmFtZToiYmctc2Vjb25kYXJ5IHB4LTIgcHktMC41IHJvdW5kZWQgdGV4dC14cyIsY2hpbGRyZW46IlJhbmsgIzEifSldfSldfSldfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZ2FwLTMiLGNoaWxkcmVuOltBLmpzeChxdCx7Y2xhc3NOYW1lOiJyb3VuZGVkLWZ1bGwgZmxleC0xIG1kOmZsZXgtbm9uZSIsY2hpbGRyZW46IkJ1eSJ9KSxBLmpzeChxdCx7dmFyaWFudDoic2Vjb25kYXJ5IixjbGFzc05hbWU6InJvdW5kZWQtZnVsbCBmbGV4LTEgbWQ6ZmxleC1ub25lIixjaGlsZHJlbjoiU2VsbCJ9KV19KV19KSxBLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMyBnYXAtOCIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJsZzpjb2wtc3Bhbi0yIHNwYWNlLXktNiIsY2hpbGRyZW46W0EuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJzcGFjZS15LTIiLGNoaWxkcmVuOltBLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LTR4bCBmb250LWJvbGQiLGNoaWxkcmVuOk50KHIucHJpY2UpfSksQS5qc3hzKCJkaXYiLHtjbGFzc05hbWU6YGZvbnQtbWVkaXVtIGZsZXggaXRlbXMtY2VudGVyICR7ci5jaGFuZ2UyNGg+PTA/InRleHQtc3VjY2VzcyI6InRleHQtZGVzdHJ1Y3RpdmUifWAsY2hpbGRyZW46W0EuanN4KGVtLHtjbGFzc05hbWU6InctNCBoLTQgbXItMSJ9KSxyLmNoYW5nZTI0aD49MD8iKyI6IiIsci5jaGFuZ2UyNGgsIiUgIixBLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1sLTIgZm9udC1ub3JtYWwiLGNoaWxkcmVuOiJQYXN0IDI0IGhvdXJzIn0pXX0pXX0pLEEuanN4KG1uLHtjbGFzc05hbWU6InAtNiBoLVs0MDBweF0iLGNoaWxkcmVuOmUmJkEuanN4KCRwLHt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixjaGlsZHJlbjpBLmpzeHMoalUse2RhdGE6aSxjaGlsZHJlbjpbQS5qc3goImRlZnMiLHtjaGlsZHJlbjpBLmpzeHMoImxpbmVhckdyYWRpZW50Iix7aWQ6ImNvbG9yUHJpY2UiLHgxOiIwIix5MToiMCIseDI6IjAiLHkyOiIxIixjaGlsZHJlbjpbQS5qc3goInN0b3AiLHtvZmZzZXQ6IjUlIixzdG9wQ29sb3I6ci5jb2xvcixzdG9wT3BhY2l0eTouM30pLEEuanN4KCJzdG9wIix7b2Zmc2V0OiI5NSUiLHN0b3BDb2xvcjpyLmNvbG9yLHN0b3BPcGFjaXR5OjB9KV19KX0pLEEuanN4KFV1LHtkYXRhS2V5OiJ0aW1lIixoaWRlOiEwfSksQS5qc3goenUse2RvbWFpbjpbImRhdGFNaW4iLCJkYXRhTWF4Il0saGlkZTohMH0pLEEuanN4KElyLHtmb3JtYXR0ZXI6bz0+TnQobyksbGFiZWxTdHlsZTp7Y29sb3I6InZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpIn0sY29udGVudFN0eWxlOntib3JkZXJSYWRpdXM6IjEycHgiLGJvcmRlcjoibm9uZSIsYmFja2dyb3VuZENvbG9yOiJ2YXIoLS1jb2xvci1jYXJkKSIsY29sb3I6InZhcigtLWNvbG9yLWZvcmVncm91bmQpIixib3hTaGFkb3c6IjAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC4xKSJ9fSksQS5qc3god2Ese3R5cGU6Im1vbm90b25lIixkYXRhS2V5OiJwcmljZSIsc3Ryb2tlOnIuY29sb3Isc3Ryb2tlV2lkdGg6MixmaWxsT3BhY2l0eToxLGZpbGw6InVybCgjY29sb3JQcmljZSkifSldfSl9KX0pLEEuanN4cygiZGl2Iix7Y2hpbGRyZW46W0EuanN4KCJoMyIse2NsYXNzTmFtZToidGV4dC14bCBmb250LQ=="}},"time_used":595,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":153,"receive":442,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-26","alert":"Sinkholed","trigger":"coinbasewithdrwal.org","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:45.692Z","timestamp":1785091185692,"http_version":"HTTP/3","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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://coinbasewithdrwal.org\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 365371\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-07-30T22:23:57.004505Z","times_seen":249706,"resource_available":false,"data":"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"}},"time_used":108,"timings":{"blocked":-1,"dns":0,"connect":35,"send":0,"wait":17,"receive":56,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:45.698Z","timestamp":1785091185698,"http_version":"HTTP/3","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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://coinbasewithdrwal.org\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 365371\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-07-30T22:23:57.004505Z","times_seen":249706,"resource_available":false,"data":"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"}},"time_used":96,"timings":{"blocked":25,"dns":0,"connect":0,"send":0,"wait":30,"receive":41,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"coinbasewithdrwal.org/","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"ip":{"addr":"34.111.179.208","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-26T18:39:44.123Z","timestamp":1785091184123,"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":"coinbasewithdrwal.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 11:15:45 GMT","end":"Sat, 24 Oct 2026 11:15:44 GMT"},"fingerprint":{"sha1":"AB:96:DD:0B:63:35:FB:F7:21:22:F3:61:AA:B1:FD:A4:85:17:C9:4A","sha256":"13:D1:6A:F4:8D:7B:FF:21:85:6C:C1:05:CD:21:F0:E3:D6:09:D6:10:7D:B1:48:AF:00:1E:C9:42:24:9A:1D:41"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: coinbasewithdrwal.org\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\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\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\naccept-ranges: bytes\r\ncache-control: private\r\ncontent-length: 1390\r\ncontent-type: text/html; charset=utf-8\r\ndate: Sun, 26 Jul 2026 18:39:44 GMT\r\nexpires: Sun, 26 Jul 2026 18:39:44 GMT\r\nlast-modified: Fri, 24 Jul 2026 02:42:17 GMT\r\nserver: Google Frontend\r\nset-cookie: GAESA=Cp4BMDAxNTQ4ZjcyOTc4NWUzYzQ5ZWNhZTBhN2ZhMDU1ZTAyMTlkNjEzMDY1NTBkMjZmOWE0NWYxMGJhYTZlNzZiZGE0ODFkNzcyNGIxNGU3MGMyOWQ5M2EzYTk1Yjc2MGEyMGUyMzczZjFhY2RlYWExNWExMmFlZGVhNTJhMWFlYmUxYmY3NjExZWRkYTUzMTVlZjJhYzg5OTEyNzUzYzEQna3n_fkz; expires=Tue, 25-Aug-2026 18:39:44 GMT; path=/\r\nstrict-transport-security: max-age=63072000; includeSubDomains\r\nx-cloud-trace-context: 81fd1fc762f8b6e12c581ef25700fb32;o=1\r\nvia: 1.1 google\r\nalt-svc: h3=\":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"]},{"name":"Google Cloud Trace","description":"Google Cloud Trace is a distributed tracing system that collects latency data from applications and displays it in the Google Cloud Console.","website":"https://cloud.google.com/trace","common_platform_enumeration":"","icon":"google-cloud-trace.svg","categories":["Performance"]},{"name":"Google Cloud CDN","description":"Cloud CDN uses Google's global edge network to serve content closer to users.","website":"https://cloud.google.com/cdn","common_platform_enumeration":"","icon":"google-cloud-cdn.svg","categories":["CDN"]},{"name":"Google Cloud","description":"Google Cloud is a suite of cloud computing services.","website":"https://cloud.google.com","common_platform_enumeration":"cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*","icon":"Google Cloud.svg","categories":["IaaS"]}],"data":{"size":1390,"size_decoded":2146,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text","md5":"5ab5c7a9c243d89ef94b5512196ec752","sha1":"bc782589c06ded3586b05d2e838357ff8b5f456b","sha256":"d2a51a33bf1809dcc6c226f7c9e36d808df41651c1ed9b428e6dfe367ee55d03","sha512":"39b771993d894acd9d877bfcb45f714df61a331c98dabc13af37a4ae57de835bfe36706849433b5b852922c9da2ad6c4ba4bc72cab1d0889ec6908877951690a","ssdeep":"","tlshash":"f521013396b0c814126483688ce1f87acd66c69783096d4971dd50ef4fdcfc1cae7696","first_seen":"2026-07-26T18:38:57.957706Z","last_seen":"2026-07-26T18:40:42.965948Z","times_seen":3,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1heGltdW0tc2NhbGU9MSIgLz4KICAgIDx0aXRsZT5DcnlwdG8gV2FsbGV0PC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJDcnlwdG8gV2FsbGV0IOKAlCBidWlsdCBvbiBSZXBsaXQuIFVwZGF0ZSB0aGlzIGRlc2NyaXB0aW9uIHRvIHJlZmxlY3QgdGhlIGFwcC4iIC8+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3ciIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkNyeXB0byBXYWxsZXQiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNyeXB0byBXYWxsZXQg4oCUIGJ1aWx0IG9uIFJlcGxpdC4gVXBkYXRlIHRoaXMgZGVzY3JpcHRpb24gdG8gcmVmbGVjdCB0aGUgYXBwLiIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iQ3J5cHRvIFdhbGxldCIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNyeXB0byBXYWxsZXQg4oCUIGJ1aWx0IG9uIFJlcGxpdC4gVXBkYXRlIHRoaXMgZGVzY3JpcHRpb24gdG8gcmVmbGVjdCB0aGUgYXBwLiIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2Uvc3ZnK3htbCIgaHJlZj0iL2Zhdmljb24uc3ZnIiAvPgogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIj4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbiBzcmM9Ii9hc3NldHMvaW5kZXgtQmpQb3Nua08uanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYXNzZXRzL2luZGV4LUNPTl9id2JlLmNzcyI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBpZD0icm9vdCI+PC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg=="}},"time_used":229,"timings":{"blocked":0,"dns":3,"connect":13,"send":0,"wait":173,"receive":0,"ssl":40},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-26","alert":"Sinkholed","trigger":"coinbasewithdrwal.org","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700\u0026display=swap","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:44.737Z","timestamp":1785091184737,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:27 GMT","end":"Mon, 21 Sep 2026 08:39:26 GMT"},"fingerprint":{"sha1":"50:37:CF:61:33:A1:EE:47:D9:3D:A6:5E:07:BA:4C:FF:F7:25:9F:76","sha256":"7D:4D:21:06:63:E2:5E:F0:8C:59:8E:EB:B7:94:2B:81:70:11:D3:F4:C0:A0:81:A6:1B:E7:27:FD:56:10:1A:11"}}},"request":{"raw":"GET /css2?family=Inter:wght@400;500;600;700\u0026display=swap HTTP/1.1\r\nHost: fonts.googleapis.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://coinbasewithdrwal.org/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\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: text/css; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\naccess-control-allow-origin: *\r\ntiming-allow-origin: *\r\nlink: \u003chttps://fonts.gstatic.com\u003e; rel=preconnect; crossorigin\r\nstrict-transport-security: max-age=31536000\r\nexpires: Sun, 26 Jul 2026 18:39:44 GMT\r\ndate: Sun, 26 Jul 2026 18:39:44 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-opener-policy: same-origin-allow-popups\r\ncross-origin-resource-policy: cross-origin\r\ncontent-encoding: gzip\r\nserver: ESF\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\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":10108,"size_decoded":1447,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"e85517dadd43448782d60d7f207fddce","sha1":"6cd31f870727ba8090fac9602b42524b4139a619","sha256":"88fbd0b95222be288587a149c324189ecbd8de0d6f0c94f528ec53857e52b66c","sha512":"5edc78df5bb062a9a2e1ea6724c14dd7eb80d77ea0fa9572de4bb0d52bbd0d163815b08a1ae77084f99fbefbb07715da1c61f0bb36fb498710c91387792955f8","ssdeep":"192:9NNIxO34OxDENOPCO3/Nx8NNryfO3iExlONEhYO3RrxGx:vXuM0p2+4","tlshash":"04227792002ba400ab971dc233cf7f3aaece50896085d1b95ffd0dc59cead66436876d","first_seen":"2025-09-10T18:13:11.065101Z","last_seen":"2026-07-30T22:20:23.339674Z","times_seen":38697,"resource_available":false,"data":"LyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMkpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEwWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFwTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEycEw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFaTDdXMEk1bnZ3VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTJKTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMlpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWExcEw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMjVMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWExWkw3VzBJNW52d1Uud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTBaTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTJaTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTJwTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTI1TDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMkpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEwWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFwTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEycEw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFaTDdXMEk1bnZ3VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Cg=="}},"time_used":80,"timings":{"blocked":-1,"dns":0,"connect":14,"send":0,"wait":31,"receive":0,"ssl":34},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"coinbasewithdrwal.org/assets/index-CON_bwbe.css","fqdn":"coinbasewithdrwal.org","domain":"coinbasewithdrwal.org","tld":"org"},"ip":{"addr":"34.111.179.208","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:44.741Z","timestamp":1785091184741,"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":"coinbasewithdrwal.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sun, 26 Jul 2026 11:15:45 GMT","end":"Sat, 24 Oct 2026 11:15:44 GMT"},"fingerprint":{"sha1":"AB:96:DD:0B:63:35:FB:F7:21:22:F3:61:AA:B1:FD:A4:85:17:C9:4A","sha256":"13:D1:6A:F4:8D:7B:FF:21:85:6C:C1:05:CD:21:F0:E3:D6:09:D6:10:7D:B1:48:AF:00:1E:C9:42:24:9A:1D:41"}}},"request":{"raw":"GET /assets/index-CON_bwbe.css HTTP/1.1\r\nHost: coinbasewithdrwal.org\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://coinbasewithdrwal.org/\r\nCookie: GAESA=Cp4BMDAxNTQ4ZjcyOTc4NWUzYzQ5ZWNhZTBhN2ZhMDU1ZTAyMTlkNjEzMDY1NTBkMjZmOWE0NWYxMGJhYTZlNzZiZGE0ODFkNzcyNGIxNGU3MGMyOWQ5M2EzYTk1Yjc2MGEyMGUyMzczZjFhY2RlYWExNWExMmFlZGVhNTJhMWFlYmUxYmY3NjExZWRkYTUzMTVlZjJhYzg5OTEyNzUzYzEQna3n_fkz\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\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\naccept-ranges: bytes\r\ncontent-length: 104769\r\ncontent-type: text/css; charset=utf-8\r\ndate: Sun, 26 Jul 2026 18:39:44 GMT\r\nlast-modified: Fri, 24 Jul 2026 02:42:17 GMT\r\nserver: Google Frontend\r\nstrict-transport-security: max-age=63072000; includeSubDomains\r\nx-cloud-trace-context: 5721edb42a8baa9ded141ec2472dbb7b\r\nvia: 1.1 google\r\nalt-svc: h3=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Google Cloud CDN","description":"Cloud CDN uses Google's global edge network to serve content closer to users.","website":"https://cloud.google.com/cdn","common_platform_enumeration":"","icon":"google-cloud-cdn.svg","categories":["CDN"]},{"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"]},{"name":"Google Cloud Trace","description":"Google Cloud Trace is a distributed tracing system that collects latency data from applications and displays it in the Google Cloud Console.","website":"https://cloud.google.com/trace","common_platform_enumeration":"","icon":"google-cloud-trace.svg","categories":["Performance"]},{"name":"Google Cloud","description":"Google Cloud is a suite of cloud computing services.","website":"https://cloud.google.com","common_platform_enumeration":"cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*","icon":"Google Cloud.svg","categories":["IaaS"]}],"data":{"size":104769,"size_decoded":105147,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (65536), with no line terminators","md5":"750a75786a27e9d0037805a8b1bccd85","sha1":"00b059ecfc78d7975d27feba9335b2d65b296f47","sha256":"0bed26cd5281a90b62291b3377644bacd97a26fc168c04b4ca122c3dacab9bd2","sha512":"6d79d09a8c9e5788f7bc49ea8ded26b6a7e5e1a3ced94194e71d670abdb748f048f613a76fbe0724290c4fb317cba9f9753e62fb0cb29bde75dde8f3107b3e67","ssdeep":"3072:v80aQVh+oOtydurQSib6X5OeFmMno+WxFAFbuBpIcqGS:v80aQVh+oOtydurQSibA5OeFmMno+Wxa","tlshash":"43a3c560b129e47f7c3364f9938cb89c910ab0c1de2947f9fa56622217c3bf56d67218","first_seen":"2026-07-26T18:38:57.966907Z","last_seen":"2026-07-26T18:40:42.968514Z","times_seen":3,"resource_available":false,"data":"QGxheWVyIHByb3BlcnRpZXN7QHN1cHBvcnRzICgoKC13ZWJraXQtaHlwaGVuczpub25lKSkgYW5kIChub3QgKG1hcmdpbi10cmltOmlubGluZSkpKSBvciAoKC1tb3otb3JpZW50OmlubGluZSkgYW5kIChub3QgKGNvbG9yOnJnYihmcm9tIHJlZCByIGcgYikpKSl7Kiw6YmVmb3JlLDphZnRlciw6OmJhY2tkcm9wey0tdHctdHJhbnNsYXRlLXg6MDstLXR3LXRyYW5zbGF0ZS15OjA7LS10dy10cmFuc2xhdGUtejowOy0tdHctcm90YXRlLXg6aW5pdGlhbDstLXR3LXJvdGF0ZS15OmluaXRpYWw7LS10dy1yb3RhdGUtejppbml0aWFsOy0tdHctc2tldy14OmluaXRpYWw7LS10dy1za2V3LXk6aW5pdGlhbDstLXR3LXNwYWNlLXktcmV2ZXJzZTowOy0tdHctc3BhY2UteC1yZXZlcnNlOjA7LS10dy1kaXZpZGUteS1yZXZlcnNlOjA7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7LS10dy1ncmFkaWVudC1wb3NpdGlvbjppbml0aWFsOy0tdHctZ3JhZGllbnQtZnJvbTojMDAwMDstLXR3LWdyYWRpZW50LXZpYTojMDAwMDstLXR3LWdyYWRpZW50LXRvOiMwMDAwOy0tdHctZ3JhZGllbnQtc3RvcHM6aW5pdGlhbDstLXR3LWdyYWRpZW50LXZpYS1zdG9wczppbml0aWFsOy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjowJTstLXR3LWdyYWRpZW50LXZpYS1wb3NpdGlvbjo1MCU7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjoxMDAlOy0tdHctbGVhZGluZzppbml0aWFsOy0tdHctZm9udC13ZWlnaHQ6aW5pdGlhbDstLXR3LXRyYWNraW5nOmluaXRpYWw7LS10dy1vcmRpbmFsOmluaXRpYWw7LS10dy1zbGFzaGVkLXplcm86aW5pdGlhbDstLXR3LW51bWVyaWMtZmlndXJlOmluaXRpYWw7LS10dy1udW1lcmljLXNwYWNpbmc6aW5pdGlhbDstLXR3LW51bWVyaWMtZnJhY3Rpb246aW5pdGlhbDstLXR3LXNoYWRvdzowIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LXNoYWRvdy1hbHBoYToxMDAlOy0tdHctaW5zZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctaW5zZXQtc2hhZG93LWFscGhhOjEwMCU7LS10dy1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1pbnNldC1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1yaW5nLWluc2V0OmluaXRpYWw7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LW91dGxpbmUtc3R5bGU6c29saWQ7LS10dy1iYWNrZHJvcC1ibHVyOmluaXRpYWw7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOmluaXRpYWw7LS10dy1iYWNrZHJvcC1jb250cmFzdDppbml0aWFsOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOmluaXRpYWw7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOmluaXRpYWw7LS10dy1iYWNrZHJvcC1pbnZlcnQ6aW5pdGlhbDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6aW5pdGlhbDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOmluaXRpYWw7LS10dy1iYWNrZHJvcC1zZXBpYTppbml0aWFsOy0tdHctZHVyYXRpb246aW5pdGlhbDstLXR3LWVhc2U6aW5pdGlhbDstLXR3LWNvbnRlbnQ6IiI7LS10dy1hbmltYXRpb24tZGVsYXk6MHM7LS10dy1hbmltYXRpb24tZGlyZWN0aW9uOm5vcm1hbDstLXR3LWFuaW1hdGlvbi1kdXJhdGlvbjppbml0aWFsOy0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZTpub25lOy0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDoxOy0tdHctZW50ZXItYmx1cjowOy0tdHctZW50ZXItb3BhY2l0eToxOy0tdHctZW50ZXItcm90YXRlOjA7LS10dy1lbnRlci1zY2FsZToxOy0tdHctZW50ZXItdHJhbnNsYXRlLXg6MDstLXR3LWVudGVyLXRyYW5zbGF0ZS15OjA7LS10dy1leGl0LWJsdXI6MDstLXR3LWV4aXQtb3BhY2l0eToxOy0tdHctZXhpdC1yb3RhdGU6MDstLXR3LWV4aXQtc2NhbGU6MTstLXR3LWV4aXQtdHJhbnNsYXRlLXg6MDstLXR3LWV4aXQtdHJhbnNsYXRlLXk6MH19fUBsYXllciB0aGVtZXs6cm9vdCw6aG9zdHstLWNvbG9yLXJlZC01MDpva2xjaCg5Ny4xJSAuMDEzIDE3LjM4KTstLWNvbG9yLXJlZC0zMDA6b2tsY2goODAuOCUgLjExNCAxOS41NzEpOy0tY29sb3ItcmVkLTQwMDpva2xjaCg3MC40JSAuMTkxIDIyLjIxNik7LS1jb2xvci1yZWQtNTAwOm9rbGNoKDYzLjclIC4yMzcgMjUuMzMxKTstLWNvbG9yLXJlZC02MDA6b2tsY2goNTcuNyUgLjI0NSAyNy4zMjUpOy0tY29sb3ItYW1iZXItNDAwOm9rbGNoKDgyLjglIC4xODkgODQuNDI5KTstLWNvbG9yLWFtYmVyLTUwMDpva2xjaCg3Ni45JSAuMTg4IDcwLjA4KTstLWNvbG9yLWFtYmVyLTYwMDpva2xjaCg2Ni42JSAuMTc5IDU4LjMxOCk7LS1jb2xvci1ncmVlbi00MDA6b2tsY2goNzkuMiUgLjIwOSAxNTEuNzExKTstLWNvbG9yLWdyZWVuLTUwMDpva2xjaCg3Mi4zJSAuMjE5IDE0OS41NzkpOy0tY29sb3ItZ3JlZW4tNjAwOm9rbGNoKDYyLjclIC4xOTQgMTQ5LjIxNCk7LS1jb2xvci1lbWVyYWxkLTQwMDpva2xjaCg3Ni41JSAuMTc3IDE2My4yMjMpOy0tY29sb3ItZW1lcmFsZC01MDA6b2tsY2goNjkuNiUgLjE3IDE2Mi40OCk7LS1jb2xvci1ibHVlLTUwMDpva2xjaCg2Mi4zJSAuMjE0IDI1OS44MTUpOy0tY29sb3ItYmx1ZS02MDA6b2tsY2goNTQuNiUgLjI0NSAyNjIuODgxKTstLWNvbG9yLXB1cnBsZS01MDA6b2tsY2goNjIuNyUgLjI2NSAzMDMuOSk7LS1jb2xvci1yb3NlLTQwMDpva2xjaCg3MS4yJSAuMTk0IDEzLjQyOCk7LS1jb2xvci1ncmF5LTUwOm9rbGNoKDk4LjUlIC4wMDIgMjQ3LjgzOSk7LS1jb2xvci1ncmF5LTYwMDpva2xjaCg0NC42JSAuMDMgMjU2LjgwMik7LS1jb2xvci1ncmF5LTkwMDpva2xjaCgyMSUgLjAzNCAyNjQuNjY1KTstLWNvbG9yLWJsYWNrOiMwMDA7LS1jb2xvci13aGl0ZTojZmZmOy0tc3BhY2luZzouMjVyZW07LS1jb250YWluZXItc206MjRyZW07LS1jb250YWluZXItbWQ6MjhyZW07LS1jb250YWluZXItbGc6MzJyZW07LS1jb250YWluZXItMnhsOjQycmVtOy0tY29udGFpbmVyLTR4bDo1NnJlbTstLWNvbnRhaW5lci02eGw6NzJyZW07LS10ZXh0LXhzOi43NXJlbTstLXRleHQteHMtLWxpbmUtaGVpZ2h0OmNhbGMoMSAvIC43NSk7LS10ZXh0LXNtOi44NzVyZW07LS10ZXh0LXNtLS1saW5lLWhlaWdodDpjYWxjKDEuMjUgLyAuODc1KTstLXRleHQtYmFzZToxcmVtOy0tdGV4dC1iYXNlLS1saW5lLWhlaWdodDogMS41IDstLXRleHQtbGc6MS4xMjVyZW07LS10ZXh0LWxnLS1saW5lLWhlaWdodDpjYWxjKDEuNzUgLyAxLjEyNSk7LS10ZXh0LXhsOjEuMjVyZW07LS10ZXh0LXhsLS1saW5lLWhlaWdodDpjYWxjKDEuNzUgLyAxLjI1KTstLXRleHQtMnhsOjEuNXJlbTstLXRleHQtMnhsLS1saW5lLWhlaWdodDpjYWxjKDIgLyAxLjUpOy0tdGV4dC0zeGw6MS44NzVyZW07LS10ZXh0LTN4bC0tbGluZS1oZWlnaHQ6IDEuMiA7LS10ZXh0LTR4bDoyLjI1cmVtOy0tdGV4dC00eGwtLWxpbmUtaGVpZ2h0OmNhbGMoMi41IC8gMi4yNSk7LS10ZXh0LTV4bDozcmVtOy0tdGV4dC01eGwtLWxpbmUtaGVpZ2h0OjE7LS1mb250LXdlaWdodC1ub3JtYWw6NDAwOy0tZm9udC13ZWlnaHQtbWVkaXVtOjUwMDstLWZvbnQtd2VpZ2h0LXNlbWlib2xkOjYwMDstLWZvbnQtd2VpZ2h0LWJvbGQ6NzAwOy0tdHJhY2tpbmctdGlnaHRlcjotLjA1ZW07LS10cmFja2luZy10aWdodDotLjAyNWVtOy0tdHJhY2tpbmctd2lkZXI6LjA1ZW07LS10cmFja2luZy13aWRlc3Q6LjFlbTstLWxlYWRpbmctc251ZzoxLjM3NTstLWxlYWRpbmctbm9ybWFsOjEuNTstLWxlYWRpbmctcmVsYXhlZDoxLjYyNTstLXJhZGl1cy0yeGw6MXJlbTstLWVhc2UtaW4tb3V0OmN1YmljLWJlemllciguNCwgMCwgLjIsIDEpOy0tYW5pbWF0ZS1zcGluOnNwaW4gMXMgbGluZWFyIGluZmluaXRlOy0tYW5pbWF0ZS1wdWxzZTpwdWxzZSAycyBjdWJpYy1iZXppZXIoLjQsIDAsIC42LCAxKSBpbmZpbml0ZTstLWJsdXItc206OHB4Oy0tYmx1ci1tZDoxMnB4Oy0tYmx1ci1sZzoxNnB4Oy0tYXNwZWN0LXZpZGVvOjE2IC8gOTstLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzOy0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsIDAsIC4yLCAxKTstLWRlZmF1bHQtZm9udC1mYW1pbHk6dmFyKC0tYXBwLWZvbnQtc2Fucyk7LS1kZWZhdWx0LW1vbm8tZm9udC1mYW1pbHk6dmFyKC0tYXBwLWZvbnQtbW9ubyk7LS1jb2xvci1mb3JlZ3JvdW5kOmhzbCh2YXIoLS1mb3JlZ3JvdW5kKSk7LS1jb2xvci1ib3JkZXI6aHNsKHZhcigtLWJvcmRlcikpOy0tY29sb3ItY2FyZDpoc2wodmFyKC0tY2FyZCkpOy0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZDpoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpfX1AbGF5ZXIgYmFzZXsqLDphZnRlciw6YmVmb3JlLDo6YmFja2Ryb3B7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MCBzb2xpZDttYXJnaW46MDtwYWRkaW5nOjB9aHRtbCw6aG9zdHstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTt0YWItc2l6ZTo0O2xpbmUtaGVpZ2h0OjEuNTtmb250LWZhbWlseTp2YXIoLS1kZWZhdWx0LWZvbnQtZmFtaWx5LC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCAiTm90byBTYW5zIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSIpO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtZm9udC12YXJpYXRpb24tc2V0dGluZ3Msbm9ybWFsKTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcCxwcmV7Zm9udC1mYW1pbHk6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5LHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfTotbW96LWZvY3VzcmluZzp3aGVyZSg6bm90KGlmcmFtZSkpe291dGxpbmU6YXV0b31wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfW9sLHVsLG1lbnV7bGlzdC1zdHlsZTpub25lfWltZyxzdmcsdmlkZW8sY2FudmFzLGF1ZGlvLGlmcmFtZSxlbWJlZCxvYmplY3R7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6YmxvY2t9aW1nLHZpZGVve21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfWJ1dHRvbixpbnB1dCxzZWxlY3Qsb3B0Z3JvdXAsdGV4dGFyZWF7Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtjb2xvcjppbmhlcml0O29wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OmJvbGRlcn06d2hlcmUoc2VsZWN0OmlzKFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXAgb3B0aW9ue3BhZGRpbmctaW5saW5lLXN0YXJ0OjIwcHh9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnttYXJnaW4taW5saW5lLWVuZDo0cHh9OjpwbGFjZWhvbGRlcntvcGFjaXR5OjF9QHN1cHBvcnRzIChub3QgKCgtd2Via2l0LWFwcGVhcmFuY2U6LWFwcGxlLXBheS1idXR0b24pKSkgb3IgKGNvbnRhaW4taW50cmluc2ljLXNpemU6MXB4KXs6OnBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpezo6cGxhY2Vob2xkZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGN1cnJlbnRjb2xvciA1MCUsdHJhbnNwYXJlbnQpfX19dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZXttaW4taGVpZ2h0OjFsaDt0ZXh0LWFsaWduOmluaGVyaXR9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXR7ZGlzcGxheTppbmxpbmUtZmxleH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1maWVsZHMtd3JhcHBlcntwYWRkaW5nOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1vbnRoLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZS1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtc2Vjb25kLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWVyaWRpZW0tZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye2xpbmUtaGVpZ2h0OjF9Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9YnV0dG9uLGlucHV0OndoZXJlKFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF0pe2FwcGVhcmFuY2U6YnV0dG9ufTo6ZmlsZS1zZWxlY3Rvci1idXR0b257YXBwZWFyYW5jZTpidXR0b259Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49dW50aWwtZm91bmRdKSl7ZGlzcGxheTpub25lIWltcG9ydGFudH0qe2JvcmRlci1jb2xvcjpoc2wodmFyKC0tYm9yZGVyKSl9Ym9keXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1iYWNrZ3JvdW5kKSk7Zm9udC1mYW1pbHk6dmFyKC0tYXBwLWZvbnQtc2Fucyk7Y29sb3I6aHNsKHZhcigtLWZvcmVncm91bmQpKTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX19QGxheWVyIGNvbXBvbmVudHM7QGxheWVyIHV0aWxpdGllc3suXEBjb250YWluZXJcL2ZpZWxkLWdyb3Vwe2NvbnRhaW5lcjpmaWVsZC1ncm91cC9pbmxpbmUtc2l6ZX0ucG9pbnRlci1ldmVudHMtYXV0b3twb2ludGVyLWV2ZW50czphdXRvfS5wb2ludGVyLWV2ZW50cy1ub25le3BvaW50ZXItZXZlbnRzOm5vbmV9LmludmlzaWJsZXt2aXNpYmlsaXR5OmhpZGRlbn0uc3Itb25seXtjbGlwLXBhdGg6aW5zZXQoNTAlKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbn0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uc3RhdGlje3Bvc2l0aW9uOnN0YXRpY30uc3RpY2t5e3Bvc2l0aW9uOnN0aWNreX0uaW5zZXQtMHtpbnNldDowfS5pbnNldC14LTB7aW5zZXQtaW5saW5lOjB9Lmluc2V0LXktMHtpbnNldC1ibG9jazowfS4tdG9wLTEye3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEyKX0udG9wLTB7dG9wOjB9LnRvcC0xXC41e3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTJ7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0udG9wLTNcLjV7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS50b3AtNHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS50b3AtMjR7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAyNCl9LnRvcC1cWzFweFxde3RvcDoxcHh9LnRvcC1cWzUwXCVcXXt0b3A6NTAlfS50b3AtXFs2MFwlXF17dG9wOjYwJX0udG9wLWZ1bGx7dG9wOjEwMCV9Li1yaWdodC0xMntyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEyKX0ucmlnaHQtMHtyaWdodDowfS5yaWdodC0xe3JpZ2h0OnZhcigtLXNwYWNpbmcpfS5yaWdodC0ye3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucmlnaHQtM3tyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LnJpZ2h0LTR7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS4tYm90dG9tLTEye2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEyKX0uYm90dG9tLTB7Ym90dG9tOjB9Li1sZWZ0LTEye2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xMil9LmxlZnQtMHtsZWZ0OjB9LmxlZnQtMVwvMntsZWZ0OjUwJX0ubGVmdC0ye2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5sZWZ0LTR7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LmxlZnQtXFs1MFwlXF17bGVmdDo1MCV9LnotMTB7ei1pbmRleDoxMH0uei0yMHt6LWluZGV4OjIwfS56LTMwe3otaW5kZXg6MzB9LnotNTB7ei1pbmRleDo1MH0uei1cWzFcXXt6LWluZGV4OjF9LnotXFsxMDBcXXt6LWluZGV4OjEwMH0ub3JkZXItZmlyc3R7b3JkZXI6LTk5OTl9Lm9yZGVyLWxhc3R7b3JkZXI6OTk5OX0uXCFtLTB7bWFyZ2luOjAhaW1wb3J0YW50fS4tbXgtMXttYXJnaW4taW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAtMSl9Li1teC00e21hcmdpbi1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC00KX0ubXgtMnttYXJnaW4taW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ubXgtM1wuNXttYXJnaW4taW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS5teC00e21hcmdpbi1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5teC1hdXRve21hcmdpbi1pbmxpbmU6YXV0b30uLW15LTJ7bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAtMil9Lm15LTB7bWFyZ2luLWJsb2NrOjB9Lm15LTBcLjV7bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAuNSl9Lm15LTF7bWFyZ2luLWJsb2NrOnZhcigtLXNwYWNpbmcpfS4tbXQtNHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAtNCl9Lm10LTBcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpfS5tdC0xe21hcmdpbi10b3A6dmFyKC0tc3BhY2luZyl9Lm10LTFcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0ubXQtMnttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ubXQtNHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ubXQtMjR7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMjQpfS5tdC1hdXRve21hcmdpbi10b3A6YXV0b30ubXItMXttYXJnaW4tcmlnaHQ6dmFyKC0tc3BhY2luZyl9Lm1yLTJ7bWFyZ2luLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ubWItMXttYXJnaW4tYm90dG9tOnZhcigtLXNwYWNpbmcpfS5tYi0ye21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5tYi0ze21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5tYi00e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5tYi02e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5tYi04e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfS4tbWwtNHttYXJnaW4tbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTQpfS5tbC0xe21hcmdpbi1sZWZ0OnZhcigtLXNwYWNpbmcpfS5tbC0ye21hcmdpbi1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ubWwtNHttYXJnaW4tbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9Lm1sLWF1dG97bWFyZ2luLWxlZnQ6YXV0b30ubGluZS1jbGFtcC0yey13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbn0uYmxvY2t7ZGlzcGxheTpibG9ja30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LnRhYmxle2Rpc3BsYXk6dGFibGV9LmFzcGVjdC1zcXVhcmV7YXNwZWN0LXJhdGlvOjF9LmFzcGVjdC12aWRlb3thc3BlY3QtcmF0aW86dmFyKC0tYXNwZWN0LXZpZGVvKX0uc2l6ZS00e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5zaXplLTZ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9LnNpemUtOHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0uc2l6ZS0xMHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTApO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTApfS5zaXplLVxbLS1jZWxsLXNpemVcXXt3aWR0aDotLWNlbGwtc2l6ZTtoZWlnaHQ6LS1jZWxsLXNpemV9LmgtMXtoZWlnaHQ6dmFyKC0tc3BhY2luZyl9LmgtMVwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmgtMntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5oLTJcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5oLTN7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uaC0zXC41e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMy41KX0uaC00e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LmgtNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS5oLTZ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0uaC03e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNyl9LmgtOHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfS5oLTl7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA5KX0uaC0xMHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwKX0uaC0xMXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDExKX0uaC0xMntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEyKX0uaC0xNHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDE0KX0uaC0xNntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDE2KX0uaC0yMHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIwKX0uaC0yNHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDI0KX0uaC1cWy0tY2VsbC1zaXplXF17aGVpZ2h0Oi0tY2VsbC1zaXplfS5oLVxbMXB4XF17aGVpZ2h0OjFweH0uaC1cWzI4MHB4XF17aGVpZ2h0OjI4MHB4fS5oLVxbNDAwcHhcXXtoZWlnaHQ6NDAwcHh9LmgtXFt2YXJcKC0tcmFkaXgtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWhlaWdodFwpXF17aGVpZ2h0OnZhcigtLXJhZGl4LW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1oZWlnaHQpfS5oLVxbdmFyXCgtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodFwpXF17aGVpZ2h0OnZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCl9LmgtYXV0b3toZWlnaHQ6YXV0b30uaC1mdWxse2hlaWdodDoxMDAlfS5oLXB4e2hlaWdodDoxcHh9Lmgtc2NyZWVue2hlaWdodDoxMDB2aH0uaC1zdmh7aGVpZ2h0OjEwMHN2aH0ubWF4LWgtXFstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRcXXttYXgtaGVpZ2h0Oi0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodH0ubWF4LWgtXFstLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRcXXttYXgtaGVpZ2h0Oi0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodH0ubWF4LWgtXFszMDBweFxde21heC1oZWlnaHQ6MzAwcHh9Lm1heC1oLVxbdmFyXCgtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XClcXXttYXgtaGVpZ2h0OnZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KX0ubWF4LWgtc2NyZWVue21heC1oZWlnaHQ6MTAwdmh9Lm1pbi1oLTB7bWluLWhlaWdodDowfS5taW4taC1cWzYwcHhcXXttaW4taGVpZ2h0OjYwcHh9Lm1pbi1oLVxbODB2aFxde21pbi1oZWlnaHQ6ODB2aH0ubWluLWgtXFsyMDBweFxde21pbi1oZWlnaHQ6MjAwcHh9Lm1pbi1oLXNjcmVlbnttaW4taGVpZ2h0OjEwMHZofS5taW4taC1zdmh7bWluLWhlaWdodDoxMDBzdmh9LnctMHt3aWR0aDowfS53LTF7d2lkdGg6dmFyKC0tc3BhY2luZyl9LnctMnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnctMlwuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0udy0ze3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0udy0zXC41e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS53LTNcLzR7d2lkdGg6NzUlfS53LTR7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS53LTV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS53LTZ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS53LTd7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcpfS53LTh7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfS53LTl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDkpfS53LTEwe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxMCl9LnctMTF7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDExKX0udy0xMnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTIpfS53LTE0e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxNCl9LnctMjB7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIwKX0udy0yNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMjQpfS53LTY0e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA2NCl9LnctNzJ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcyKX0udy1cWy0tY2VsbC1zaXplXF17d2lkdGg6LS1jZWxsLXNpemV9LnctXFsxcHhcXXt3aWR0aDoxcHh9LnctXFsxMDBweFxde3dpZHRoOjEwMHB4fS53LVxbMjAwcHhcXXt3aWR0aDoyMDBweH0udy1cW3ZhclwoLS1zaWRlYmFyLXdpZHRoXClcXXt3aWR0aDp2YXIoLS1zaWRlYmFyLXdpZHRoKX0udy1hdXRve3dpZHRoOmF1dG99LnctZml0e3dpZHRoOmZpdC1jb250ZW50fS53LWZ1bGx7d2lkdGg6MTAwJX0udy1tYXh7d2lkdGg6bWF4LWNvbnRlbnR9LnctcHh7d2lkdGg6MXB4fS5tYXgtdy0yeGx7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci0yeGwpfS5tYXgtdy00eGx7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci00eGwpfS5tYXgtdy02eGx7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci02eGwpfS5tYXgtdy1cW3ZhclwoLS1za2VsZXRvbi13aWR0aFwpXF17bWF4LXdpZHRoOnZhcigtLXNrZWxldG9uLXdpZHRoKX0ubWF4LXctbGd7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci1sZyl9Lm1heC13LW1heHttYXgtd2lkdGg6bWF4LWNvbnRlbnR9Lm1heC13LW1ke21heC13aWR0aDp2YXIoLS1jb250YWluZXItbWQpfS5tYXgtdy1zbXttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLXNtKX0ubWluLXctMHttaW4td2lkdGg6MH0ubWluLXctNXttaW4td2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS5taW4tdy04e21pbi13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9Lm1pbi13LTl7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA5KX0ubWluLXctMTB7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxMCl9Lm1pbi13LVxbLS1jZWxsLXNpemVcXXttaW4td2lkdGg6LS1jZWxsLXNpemV9Lm1pbi13LVxbOHJlbVxde21pbi13aWR0aDo4cmVtfS5taW4tdy1cWzEycmVtXF17bWluLXdpZHRoOjEycmVtfS5taW4tdy1cWzQ0cHhcXXttaW4td2lkdGg6NDRweH0ubWluLXctXFt2YXJcKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGhcKVxde21pbi13aWR0aDp2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCl9LmZsZXgtMXtmbGV4OjF9LnNocmluay0we2ZsZXgtc2hyaW5rOjB9Lmdyb3d7ZmxleC1ncm93OjF9Lmdyb3ctMHtmbGV4LWdyb3c6MH0uYmFzaXMtZnVsbHtmbGV4LWJhc2lzOjEwMCV9LmNhcHRpb24tYm90dG9te2NhcHRpb24tc2lkZTpib3R0b219LmJvcmRlci1jb2xsYXBzZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9Lm9yaWdpbi1cWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblxde3RyYW5zZm9ybS1vcmlnaW46LS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2lufS5vcmlnaW4tXFstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXF17dHJhbnNmb3JtLW9yaWdpbjotLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2lufS5vcmlnaW4tXFstLXJhZGl4LWhvdmVyLWNhcmQtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXF17dHJhbnNmb3JtLW9yaWdpbjotLXJhZGl4LWhvdmVyLWNhcmQtY29udGVudC10cmFuc2Zvcm0tb3JpZ2lufS5vcmlnaW4tXFstLXJhZGl4LW1lbnViYXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXF17dHJhbnNmb3JtLW9yaWdpbjotLXJhZGl4LW1lbnViYXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2lufS5vcmlnaW4tXFstLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXF17dHJhbnNmb3JtLW9yaWdpbjotLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2lufS5vcmlnaW4tXFstLXJhZGl4LXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5cXXt0cmFuc2Zvcm0tb3JpZ2luOi0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbn0ub3JpZ2luLVxbLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblxde3RyYW5zZm9ybS1vcmlnaW46LS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbn0uLXRyYW5zbGF0ZS14LTFcLzJ7LS10dy10cmFuc2xhdGUteDogLTUwJSA7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9Li10cmFuc2xhdGUteC1weHstLXR3LXRyYW5zbGF0ZS14Oi0xcHg7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LnRyYW5zbGF0ZS14LVxbLTUwXCVcXXstLXR3LXRyYW5zbGF0ZS14Oi01MCU7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LnRyYW5zbGF0ZS14LXB4ey0tdHctdHJhbnNsYXRlLXg6MXB4O3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS4tdHJhbnNsYXRlLXktMVwvMnstLXR3LXRyYW5zbGF0ZS15OiAtNTAlIDt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0udHJhbnNsYXRlLXktXFstNTBcJVxdey0tdHctdHJhbnNsYXRlLXk6LTUwJTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0ucm90YXRlLTQ1e3JvdGF0ZTo0NWRlZ30ucm90YXRlLTkwe3JvdGF0ZTo5MGRlZ30udHJhbnNmb3Jte3RyYW5zZm9ybTp2YXIoLS10dy1yb3RhdGUteCwpIHZhcigtLXR3LXJvdGF0ZS15LCkgdmFyKC0tdHctcm90YXRlLXosKSB2YXIoLS10dy1za2V3LXgsKSB2YXIoLS10dy1za2V3LXksKX0uYW5pbWF0ZS1jYXJldC1ibGlua3thbmltYXRpb246MS4yNXMgZWFzZS1vdXQgaW5maW5pdGUgY2FyZXQtYmxpbmt9LmFuaW1hdGUtaW57YW5pbWF0aW9uOmVudGVyIHZhcigtLXR3LWFuaW1hdGlvbi1kdXJhdGlvbix2YXIoLS10dy1kdXJhdGlvbiwuMTVzKSl2YXIoLS10dy1lYXNlLGVhc2UpdmFyKC0tdHctYW5pbWF0aW9uLWRlbGF5LDBzKXZhcigtLXR3LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsMSl2YXIoLS10dy1hbmltYXRpb24tZGlyZWN0aW9uLG5vcm1hbCl2YXIoLS10dy1hbmltYXRpb24tZmlsbC1tb2RlLG5vbmUpfS5hbmltYXRlLXB1bHNle2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXB1bHNlKX0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNwaW4pfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmN1cnNvci10ZXh0e2N1cnNvcjp0ZXh0fS50b3VjaC1ub25le3RvdWNoLWFjdGlvbjpub25lfS5yZXNpemUtbm9uZXtyZXNpemU6bm9uZX0ubGlzdC1kaXNje2xpc3Qtc3R5bGUtdHlwZTpkaXNjfS5saXN0LW5vbmV7bGlzdC1zdHlsZS10eXBlOm5vbmV9LmdyaWQtY29scy0xe2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMSxtaW5tYXgoMCwxZnIpKX0uZ3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmZsZXgtY29sLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9LmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS5wbGFjZS1jb250ZW50LWNlbnRlcntwbGFjZS1jb250ZW50OmNlbnRlcn0uaXRlbXMtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmV9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lml0ZW1zLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZH0uaXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaXRlbXMtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNofS5qdXN0aWZ5LWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmdhcC0wXC41e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpfS5nYXAtMXtnYXA6dmFyKC0tc3BhY2luZyl9LmdhcC0xXC41e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0uZ2FwLTJ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uZ2FwLTJcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5nYXAtM3tnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5nYXAtNHtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5nYXAtNntnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5nYXAtN3tnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcpfS5nYXAtOHtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfTp3aGVyZSguc3BhY2UteS0wPjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jazowfTp3aGVyZSguc3BhY2UteS0xPjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKHZhcigtLXNwYWNpbmcpICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpfTp3aGVyZSguc3BhY2UteS0xXC41Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpfTp3aGVyZSguc3BhY2UteS0yPjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiAyKSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogMikgKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSl9OndoZXJlKC5zcGFjZS15LTJcLjU+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSkgKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTttYXJnaW4tYmxvY2stZW5kOmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSkgKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSl9OndoZXJlKC5zcGFjZS15LTM+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiAzKSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKX06d2hlcmUoLnNwYWNlLXktND46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tYmxvY2stc3RhcnQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTttYXJnaW4tYmxvY2stZW5kOmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpfTp3aGVyZSguc3BhY2UteS02Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiA2KSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogNikgKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSl9OndoZXJlKC5zcGFjZS15LTg+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiA4KSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKX06d2hlcmUoLnNwYWNlLXgtMT46bm90KDpsYXN0LWNoaWxkKSl7LS10dy1zcGFjZS14LXJldmVyc2U6MDttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0tc3BhY2luZykgKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTttYXJnaW4taW5saW5lLWVuZDpjYWxjKHZhcigtLXNwYWNpbmcpICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpfTp3aGVyZSguc3BhY2UteC00Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTowO21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTttYXJnaW4taW5saW5lLWVuZDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiA0KSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKX06d2hlcmUoLmRpdmlkZS15Pjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LWRpdmlkZS15LXJldmVyc2U6MDtib3JkZXItYm90dG9tLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6Y2FsYygxcHggKiB2YXIoLS10dy1kaXZpZGUteS1yZXZlcnNlKSk7Ym9yZGVyLWJvdHRvbS13aWR0aDpjYWxjKDFweCAqIGNhbGMoMSAtIHZhcigtLXR3LWRpdmlkZS15LXJldmVyc2UpKSl9OndoZXJlKC5kaXZpZGUtYm9yZGVyPjpub3QoOmxhc3QtY2hpbGQpKXtib3JkZXItY29sb3I6aHNsKHZhcigtLWJvcmRlcikpfS5zZWxmLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNofS50cnVuY2F0ZXt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW59Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctaGlkZGVue292ZXJmbG93OmhpZGRlbn0ub3ZlcmZsb3cteC1oaWRkZW57b3ZlcmZsb3cteDpoaWRkZW59Lm92ZXJmbG93LXktYXV0b3tvdmVyZmxvdy15OmF1dG99LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtMnhse2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLTJ4bCl9LnJvdW5kZWQtXFsycHhcXXtib3JkZXItcmFkaXVzOjJweH0ucm91bmRlZC1cW2NhbGNcKHZhclwoLS1yYWRpdXNcKS01cHhcKVxde2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gNXB4KX0ucm91bmRlZC1cW2luaGVyaXRcXXtib3JkZXItcmFkaXVzOmluaGVyaXR9LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjMuNDAyODJlMzhweH0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyl9LnJvdW5kZWQtbWR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5yb3VuZGVkLW5vbmV7Ym9yZGVyLXJhZGl1czowfS5yb3VuZGVkLXNte2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gNHB4KX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCl9LnJvdW5kZWQtdC1cWzEwcHhcXXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjEwcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MTBweH0ucm91bmRlZC1sLW1ke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCl9LnJvdW5kZWQtdGwtc217Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSA0cHgpfS5yb3VuZGVkLXItbWR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5ib3JkZXJ7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjFweH0uYm9yZGVyLTB7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjB9LmJvcmRlci0ye2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDoycHh9LmJvcmRlci1cWzFcLjVweFxde2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDoxLjVweH0uYm9yZGVyLXl7Ym9yZGVyLWJsb2NrLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWJsb2NrLXdpZHRoOjFweH0uYm9yZGVyLXR7Ym9yZGVyLXRvcC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci10b3Atd2lkdGg6MXB4fS5ib3JkZXItcntib3JkZXItcmlnaHQtc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItcmlnaHQtd2lkdGg6MXB4fS5ib3JkZXItYntib3JkZXItYm90dG9tLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LmJvcmRlci1se2JvcmRlci1sZWZ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS5ib3JkZXItZGFzaGVkey0tdHctYm9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItc3R5bGU6ZGFzaGVkfS5ib3JkZXItbm9uZXstLXR3LWJvcmRlci1zdHlsZTpub25lO2JvcmRlci1zdHlsZTpub25lfS5cW2JvcmRlci1jb2xvclw6dmFyXCgtLWJhZGdlLW91dGxpbmVcKVxde2JvcmRlci1jb2xvcjp2YXIoLS1iYWRnZS1vdXRsaW5lKX0uYm9yZGVyLVxbLS1jb2xvci1ib3JkZXJcXXtib3JkZXItY29sb3I6LS1jb2xvci1ib3JkZXJ9LmJvcmRlci1hbWJlci01MDBcLzIwe2JvcmRlci1jb2xvcjojZjk5YzAwMzN9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYm9yZGVyLWFtYmVyLTUwMFwvMjB7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1hbWJlci01MDApIDIwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItYW1iZXItNTAwXC8yNXtib3JkZXItY29sb3I6I2Y5OWMwMDQwfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJvcmRlci1hbWJlci01MDBcLzI1e2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItYW1iZXItNTAwKSAyNSUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLWJvcmRlciwuYm9yZGVyLWJvcmRlclwvNTB7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1ib3JkZXIpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ib3JkZXItYm9yZGVyXC81MHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1ib3JkZXIpKSA1MCUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLWNhcmQtYm9yZGVye2JvcmRlci1jb2xvcjpoc2wodmFyKC0tY2FyZC1ib3JkZXIpKX0uYm9yZGVyLWN1cnJlbnR7Ym9yZGVyLWNvbG9yOmN1cnJlbnRDb2xvcn0uYm9yZGVyLWRlc3RydWN0aXZlLC5ib3JkZXItZGVzdHJ1Y3RpdmVcLzIwe2JvcmRlci1jb2xvcjpoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ib3JkZXItZGVzdHJ1Y3RpdmVcLzIwe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLWRlc3RydWN0aXZlKSkgMjAlLHRyYW5zcGFyZW50KX19LmJvcmRlci1kZXN0cnVjdGl2ZVwvNTB7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJvcmRlci1kZXN0cnVjdGl2ZVwvNTB7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpKSA1MCUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLWdyZWVuLTUwMFwvMjV7Ym9yZGVyLWNvbG9yOiMwMGM3NTg0MH1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ib3JkZXItZ3JlZW4tNTAwXC8yNXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLWdyZWVuLTUwMCkgMjUlLHRyYW5zcGFyZW50KX19LmJvcmRlci1pbnB1dHtib3JkZXItY29sb3I6aHNsKHZhcigtLWlucHV0KSl9LmJvcmRlci1wcmltYXJ5LC5ib3JkZXItcHJpbWFyeVwvMzB7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYm9yZGVyLXByaW1hcnlcLzMwe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSAzMCUsdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXByaW1hcnlcLzUwe2JvcmRlci1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJvcmRlci1wcmltYXJ5XC81MHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1wcmltYXJ5KSkgNTAlLHRyYW5zcGFyZW50KX19LmJvcmRlci10cmFuc3BhcmVudHtib3JkZXItY29sb3I6IzAwMDB9LmJvcmRlci10LXRyYW5zcGFyZW50e2JvcmRlci10b3AtY29sb3I6IzAwMDB9LmJvcmRlci1sLXRyYW5zcGFyZW50e2JvcmRlci1sZWZ0LWNvbG9yOiMwMDAwfS5iZy1cW1wjMjZBMTdCXF17YmFja2dyb3VuZC1jb2xvcjojMjZhMTdifS5iZy1cW1wjRjc5MzFBXF17YmFja2dyb3VuZC1jb2xvcjojZjc5MzFhfS5iZy1cWy0tY29sb3ItYmdcXXtiYWNrZ3JvdW5kLWNvbG9yOi0tY29sb3ItYmd9LmJnLWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1hY2NlbnQpKX0uYmctYW1iZXItNTAwXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOiNmOTljMDAxYX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1hbWJlci01MDBcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLWFtYmVyLTUwMCkgMTAlLHRyYW5zcGFyZW50KX19LmJnLWJhY2tncm91bmQsLmJnLWJhY2tncm91bmRcLzQwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWJhY2tncm91bmQpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1iYWNrZ3JvdW5kXC80MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tYmFja2dyb3VuZCkpIDQwJSx0cmFuc3BhcmVudCl9fS5iZy1iYWNrZ3JvdW5kXC82MHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1iYWNrZ3JvdW5kKSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctYmFja2dyb3VuZFwvNjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLWJhY2tncm91bmQpKSA2MCUsdHJhbnNwYXJlbnQpfX0uYmctYmFja2dyb3VuZFwvODB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYmFja2dyb3VuZCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWJhY2tncm91bmRcLzgwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1iYWNrZ3JvdW5kKSkgODAlLHRyYW5zcGFyZW50KX19LmJnLWJsYWNrXC84MHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDBjfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWJsYWNrXC84MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1ibGFjaykgODAlLHRyYW5zcGFyZW50KX19LmJnLWJvcmRlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1ib3JkZXIpKX0uYmctY2FyZCwuYmctY2FyZFwvODB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tY2FyZCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWNhcmRcLzgwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1jYXJkKSkgODAlLHRyYW5zcGFyZW50KX19LmJnLWRlc3RydWN0aXZlLC5iZy1kZXN0cnVjdGl2ZVwvNXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWRlc3RydWN0aXZlXC81e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpIDUlLHRyYW5zcGFyZW50KX19LmJnLWRlc3RydWN0aXZlXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWRlc3RydWN0aXZlXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpKSAxMCUsdHJhbnNwYXJlbnQpfX0uYmctZGVzdHJ1Y3RpdmVcLzIwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlKSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctZGVzdHJ1Y3RpdmVcLzIwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpIDIwJSx0cmFuc3BhcmVudCl9fS5iZy1lbWVyYWxkLTUwMFwvMTB7YmFja2dyb3VuZC1jb2xvcjojMDBiYjdmMWF9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctZW1lcmFsZC01MDBcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLWVtZXJhbGQtNTAwKSAxMCUsdHJhbnNwYXJlbnQpfX0uYmctZm9yZWdyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1mb3JlZ3JvdW5kKSl9LmJnLWdyYXktNTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1ncmF5LTUwKX0uYmctZ3JlZW4tNTAwXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOiMwMGM3NTgxYX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1ncmVlbi01MDBcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLWdyZWVuLTUwMCkgMTAlLHRyYW5zcGFyZW50KX19LmJnLWdyZWVuLTUwMFwvMTV7YmFja2dyb3VuZC1jb2xvcjojMDBjNzU4MjZ9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctZ3JlZW4tNTAwXC8xNXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1ncmVlbi01MDApIDE1JSx0cmFuc3BhcmVudCl9fS5iZy1ncmVlbi01MDBcLzIwe2JhY2tncm91bmQtY29sb3I6IzAwYzc1ODMzfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWdyZWVuLTUwMFwvMjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItZ3JlZW4tNTAwKSAyMCUsdHJhbnNwYXJlbnQpfX0uYmctaW5wdXR7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0taW5wdXQpKX0uYmctbXV0ZWQsLmJnLW11dGVkXC81MHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1tdXRlZCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLW11dGVkXC81MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tbXV0ZWQpKSA1MCUsdHJhbnNwYXJlbnQpfX0uYmctcG9wb3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wb3BvdmVyKSl9LmJnLXByaW1hcnksLmJnLXByaW1hcnlcLzV7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLXByaW1hcnlcLzV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSA1JSx0cmFuc3BhcmVudCl9fS5iZy1wcmltYXJ5XC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctcHJpbWFyeVwvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSAxMCUsdHJhbnNwYXJlbnQpfX0uYmctcHJpbWFyeVwvMTV7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLXByaW1hcnlcLzE1e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1wcmltYXJ5KSkgMTUlLHRyYW5zcGFyZW50KX19LmJnLXByaW1hcnlcLzIwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1wcmltYXJ5XC8yMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tcHJpbWFyeSkpIDIwJSx0cmFuc3BhcmVudCl9fS5iZy1zZWNvbmRhcnksLmJnLXNlY29uZGFyeVwvMzB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctc2Vjb25kYXJ5XC8zMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tc2Vjb25kYXJ5KSkgMzAlLHRyYW5zcGFyZW50KX19LmJnLXNlY29uZGFyeVwvNTB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctc2Vjb25kYXJ5XC81MHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tc2Vjb25kYXJ5KSkgNTAlLHRyYW5zcGFyZW50KX19LmJnLXN1Y2Nlc3NcLzIwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXN1Y2Nlc3MpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1zdWNjZXNzXC8yMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tc3VjY2VzcykpIDIwJSx0cmFuc3BhcmVudCl9fS5iZy10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5iZy13aGl0ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX0uYmctZ3JhZGllbnQtdG8tdHJ7LS10dy1ncmFkaWVudC1wb3NpdGlvbjp0byB0b3AgcmlnaHQgaW4gb2tsYWI7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodmFyKC0tdHctZ3JhZGllbnQtc3RvcHMpKX0uZnJvbS1cW1wjOTk0NUZGXF17LS10dy1ncmFkaWVudC1mcm9tOiM5OTQ1ZmY7LS10dy1ncmFkaWVudC1zdG9wczp2YXIoLS10dy1ncmFkaWVudC12aWEtc3RvcHMsdmFyKC0tdHctZ3JhZGllbnQtcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKSl9LmZyb20tcHJpbWFyeXstLXR3LWdyYWRpZW50LWZyb206aHNsKHZhcigtLXByaW1hcnkpKTstLXR3LWdyYWRpZW50LXN0b3BzOnZhcigtLXR3LWdyYWRpZW50LXZpYS1zdG9wcyx2YXIoLS10dy1ncmFkaWVudC1wb3NpdGlvbiksIHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10bykgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pKX0udG8tXFtcIzE0RjE5NVxdey0tdHctZ3JhZGllbnQtdG86IzE0ZjE5NTstLXR3LWdyYWRpZW50LXN0b3BzOnZhcigtLXR3LWdyYWRpZW50LXZpYS1zdG9wcyx2YXIoLS10dy1ncmFkaWVudC1wb3NpdGlvbiksIHZhcigtLXR3LWdyYWRpZW50LWZyb20pIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10bykgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pKX0udG8tcHVycGxlLTUwMHstLXR3LWdyYWRpZW50LXRvOnZhcigtLWNvbG9yLXB1cnBsZS01MDApOy0tdHctZ3JhZGllbnQtc3RvcHM6dmFyKC0tdHctZ3JhZGllbnQtdmlhLXN0b3BzLHZhcigtLXR3LWdyYWRpZW50LXBvc2l0aW9uKSwgdmFyKC0tdHctZ3JhZGllbnQtZnJvbSkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbiksIHZhcigtLXR3LWdyYWRpZW50LXRvKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbikpfS5maWxsLWN1cnJlbnR7ZmlsbDpjdXJyZW50Q29sb3J9LmZpbGwtcHJpbWFyeXtmaWxsOmhzbCh2YXIoLS1wcmltYXJ5KSl9LnAtMHtwYWRkaW5nOjB9LnAtMXtwYWRkaW5nOnZhcigtLXNwYWNpbmcpfS5wLTJ7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnAtM3twYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucC00e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5wLTZ7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9LnAtOHtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0ucC1cWzFweFxde3BhZGRpbmc6MXB4fS5weC0we3BhZGRpbmctaW5saW5lOjB9LnB4LTF7cGFkZGluZy1pbmxpbmU6dmFyKC0tc3BhY2luZyl9LnB4LTFcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LnB4LTJ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5weC0yXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5weC0ze3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHgtNHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnB4LTV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS5weC02e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0ucHgtOHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnB4LVxbLS1jZWxsLXNpemVcXXtwYWRkaW5nLWlubGluZTotLWNlbGwtc2l6ZX0ucHktMFwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAuNSl9LnB5LTF7cGFkZGluZy1ibG9jazp2YXIoLS1zcGFjaW5nKX0ucHktMVwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5weS0ye3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5weS0yXC41e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnB5LTN7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LnB5LTR7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnB5LTV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9LnB5LTZ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9LnB5LTh7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnB5LTEwe3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwKX0ucHktMjB7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMjApfS5wdC0we3BhZGRpbmctdG9wOjB9LnB0LTJ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5wdC0ze3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHQtNHtwYWRkaW5nLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnB0LTZ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5wci0xe3BhZGRpbmctcmlnaHQ6dmFyKC0tc3BhY2luZyl9LnByLTJ7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnByLTJcLjV7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0ucHItM3twYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHItOHtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0ucHItMTJ7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTIpfS5wci0yMHtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyMCl9LnBiLTN7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5wYi00e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ucGItMjB7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIwKX0ucGwtMXtwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2luZyl9LnBsLTJ7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucGwtMlwuNXtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnBsLTN7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucGwtNHtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5wbC04e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LmFsaWduLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvbnQtbW9ub3tmb250LWZhbWlseTp2YXIoLS1hcHAtZm9udC1tb25vKX0uZm9udC1zYW5ze2ZvbnQtZmFtaWx5OnZhcigtLWFwcC1mb250LXNhbnMpfS50ZXh0LTJ4bHtmb250LXNpemU6dmFyKC0tdGV4dC0yeGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC0yeGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQtM3hse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTN4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTN4bC0tbGluZS1oZWlnaHQpKX0udGV4dC00eGx7Zm9udC1zaXplOnZhcigtLXRleHQtNHhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtNHhsLS1saW5lLWhlaWdodCkpfS50ZXh0LTV4bHtmb250LXNpemU6dmFyKC0tdGV4dC01eGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC01eGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQtYmFzZXtmb250LXNpemU6dmFyKC0tdGV4dC1iYXNlKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtYmFzZS0tbGluZS1oZWlnaHQpKX0udGV4dC1sZ3tmb250LXNpemU6dmFyKC0tdGV4dC1sZyk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LWxnLS1saW5lLWhlaWdodCkpfS50ZXh0LXNte2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9LnRleHQtc21cL3JlbGF4ZWR7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcmVsYXhlZCl9LnRleHQteGx7Zm9udC1zaXplOnZhcigtLXRleHQteGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14bC0tbGluZS1oZWlnaHQpKX0udGV4dC14c3tmb250LXNpemU6dmFyKC0tdGV4dC14cyk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXhzLS1saW5lLWhlaWdodCkpfS50ZXh0LVxbMFwuOHJlbVxde2ZvbnQtc2l6ZTouOHJlbX0udGV4dC1cWzlweFxde2ZvbnQtc2l6ZTo5cHh9LnRleHQtXFsxMHB4XF17Zm9udC1zaXplOjEwcHh9LmxlYWRpbmctbm9uZXstLXR3LWxlYWRpbmc6MTtsaW5lLWhlaWdodDoxfS5sZWFkaW5nLW5vcm1hbHstLXR3LWxlYWRpbmc6dmFyKC0tbGVhZGluZy1ub3JtYWwpO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctbm9ybWFsKX0ubGVhZGluZy1yZWxheGVkey0tdHctbGVhZGluZzp2YXIoLS1sZWFkaW5nLXJlbGF4ZWQpO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcmVsYXhlZCl9LmxlYWRpbmctc251Z3stLXR3LWxlYWRpbmc6dmFyKC0tbGVhZGluZy1zbnVnKTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXNudWcpfS5mb250LWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKX0uZm9udC1tZWRpdW17LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmZvbnQtbm9ybWFsey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpfS5mb250LXNlbWlib2xkey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKX0udHJhY2tpbmctdGlnaHR7LS10dy10cmFja2luZzp2YXIoLS10cmFja2luZy10aWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tdHJhY2tpbmctdGlnaHQpfS50cmFja2luZy10aWdodGVyey0tdHctdHJhY2tpbmc6dmFyKC0tdHJhY2tpbmctdGlnaHRlcik7bGV0dGVyLXNwYWNpbmc6dmFyKC0tdHJhY2tpbmctdGlnaHRlcil9LnRyYWNraW5nLXdpZGVyey0tdHctdHJhY2tpbmc6dmFyKC0tdHJhY2tpbmctd2lkZXIpO2xldHRlci1zcGFjaW5nOnZhcigtLXRyYWNraW5nLXdpZGVyKX0udHJhY2tpbmctd2lkZXN0ey0tdHctdHJhY2tpbmc6dmFyKC0tdHJhY2tpbmctd2lkZXN0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS10cmFja2luZy13aWRlc3QpfS50ZXh0LWJhbGFuY2V7dGV4dC13cmFwOmJhbGFuY2V9LmJyZWFrLXdvcmRze292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0uYnJlYWstYWxse3dvcmQtYnJlYWs6YnJlYWstYWxsfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LnRleHQtYWNjZW50LWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKSl9LnRleHQtYW1iZXItNTAwe2NvbG9yOnZhcigtLWNvbG9yLWFtYmVyLTUwMCl9LnRleHQtYW1iZXItNjAwe2NvbG9yOnZhcigtLWNvbG9yLWFtYmVyLTYwMCl9LnRleHQtYmx1ZS01MDB7Y29sb3I6dmFyKC0tY29sb3ItYmx1ZS01MDApfS50ZXh0LWJsdWUtNjAwe2NvbG9yOnZhcigtLWNvbG9yLWJsdWUtNjAwKX0udGV4dC1jYXJkLWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLWNhcmQtZm9yZWdyb3VuZCkpfS50ZXh0LWN1cnJlbnR7Y29sb3I6Y3VycmVudENvbG9yfS50ZXh0LWRlc3RydWN0aXZle2NvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfS50ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlLWZvcmVncm91bmQpKX0udGV4dC1lbWVyYWxkLTQwMHtjb2xvcjp2YXIoLS1jb2xvci1lbWVyYWxkLTQwMCl9LnRleHQtZm9yZWdyb3VuZCwudGV4dC1mb3JlZ3JvdW5kXC81MHtjb2xvcjpoc2wodmFyKC0tZm9yZWdyb3VuZCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnRleHQtZm9yZWdyb3VuZFwvNTB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1mb3JlZ3JvdW5kKSkgNTAlLHRyYW5zcGFyZW50KX19LnRleHQtZ3JheS02MDB7Y29sb3I6dmFyKC0tY29sb3ItZ3JheS02MDApfS50ZXh0LWdyYXktOTAwe2NvbG9yOnZhcigtLWNvbG9yLWdyYXktOTAwKX0udGV4dC1ncmVlbi01MDB7Y29sb3I6dmFyKC0tY29sb3ItZ3JlZW4tNTAwKX0udGV4dC1ncmVlbi02MDB7Y29sb3I6dmFyKC0tY29sb3ItZ3JlZW4tNjAwKX0udGV4dC1tdXRlZC1mb3JlZ3JvdW5ke2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LnRleHQtcG9wb3Zlci1mb3JlZ3JvdW5ke2NvbG9yOmhzbCh2YXIoLS1wb3BvdmVyLWZvcmVncm91bmQpKX0udGV4dC1wcmltYXJ5e2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9LnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5ke2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5LWZvcmVncm91bmQpKX0udGV4dC1yZWQtNTAwe2NvbG9yOnZhcigtLWNvbG9yLXJlZC01MDApfS50ZXh0LXJvc2UtNDAwe2NvbG9yOnZhcigtLWNvbG9yLXJvc2UtNDAwKX0udGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZHtjb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5LWZvcmVncm91bmQpKX0udGV4dC1zdWNjZXNze2NvbG9yOmhzbCh2YXIoLS1zdWNjZXNzKSl9LnRleHQtd2hpdGV7Y29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5jYXBpdGFsaXple3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemV9LnVwcGVyY2FzZXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnRhYnVsYXItbnVtc3stLXR3LW51bWVyaWMtc3BhY2luZzp0YWJ1bGFyLW51bXM7Zm9udC12YXJpYW50LW51bWVyaWM6dmFyKC0tdHctb3JkaW5hbCwpIHZhcigtLXR3LXNsYXNoZWQtemVybywpIHZhcigtLXR3LW51bWVyaWMtZmlndXJlLCkgdmFyKC0tdHctbnVtZXJpYy1zcGFjaW5nLCkgdmFyKC0tdHctbnVtZXJpYy1mcmFjdGlvbiwpfS51bmRlcmxpbmUtb2Zmc2V0LTR7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjRweH0ub3BhY2l0eS0we29wYWNpdHk6MH0ub3BhY2l0eS01MHtvcGFjaXR5Oi41fS5vcGFjaXR5LTYwe29wYWNpdHk6LjZ9Lm9wYWNpdHktNzB7b3BhY2l0eTouN30ub3BhY2l0eS05MHtvcGFjaXR5Oi45fS5zaGFkb3d7LS10dy1zaGFkb3c6MCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksIDAgMXB4IDJweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxbMF8wXzBfMXB4X2hzbFwodmFyXCgtLXNpZGViYXItYm9yZGVyXClcKVxdey0tdHctc2hhZG93OjAgMCAwIDFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsaHNsKHZhcigtLXNpZGViYXItYm9yZGVyKSkpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LWxney0tdHctc2hhZG93OjAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksIDAgNHB4IDZweCAtNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LW1key0tdHctc2hhZG93OjAgNHB4IDZweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLCAwIDJweCA0cHggLTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1ub25ley0tdHctc2hhZG93OjAgMCAjMDAwMDtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1zbXstLXR3LXNoYWRvdzowIDFweCAzcHggMCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwgMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3cteGx7LS10dy1zaGFkb3c6MCAyMHB4IDI1cHggLTVweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwgMCA4cHggMTBweCAtNnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LXhzey0tdHctc2hhZG93OjAgMXB4IDJweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMGQpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0ucmluZy0wey0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMHB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5yaW5nLTF7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygxcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1ibGFja1wvMTB7LS10dy1zaGFkb3ctY29sb3I6IzAwMDAwMDFhfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LnNoYWRvdy1ibGFja1wvMTB7LS10dy1zaGFkb3ctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCBjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWNvbG9yLWJsYWNrKSAxMCUsIHRyYW5zcGFyZW50KSB2YXIoLS10dy1zaGFkb3ctYWxwaGEpLCB0cmFuc3BhcmVudCl9fS5zaGFkb3ctcHJpbWFyeVwvMjB7LS10dy1zaGFkb3ctY29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5zaGFkb3ctcHJpbWFyeVwvMjB7LS10dy1zaGFkb3ctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCBjb2xvci1taXgoaW4gb2tsYWIsIGhzbCh2YXIoLS1wcmltYXJ5KSkgMjAlLCB0cmFuc3BhcmVudCkgdmFyKC0tdHctc2hhZG93LWFscGhhKSwgdHJhbnNwYXJlbnQpfX0ucmluZy1yaW5ney0tdHctcmluZy1jb2xvcjpoc2wodmFyKC0tcmluZykpfS5yaW5nLW9mZnNldC1iYWNrZ3JvdW5key0tdHctcmluZy1vZmZzZXQtY29sb3I6aHNsKHZhcigtLWJhY2tncm91bmQpKX0ub3V0bGluZS1oaWRkZW57LS10dy1vdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1zdHlsZTpub25lfUBtZWRpYShmb3JjZWQtY29sb3JzOmFjdGl2ZSl7Lm91dGxpbmUtaGlkZGVue291dGxpbmUtb2Zmc2V0OjJweDtvdXRsaW5lOjJweCBzb2xpZCAjMDAwMH19Lm91dGxpbmV7b3V0bGluZS1zdHlsZTp2YXIoLS10dy1vdXRsaW5lLXN0eWxlKTtvdXRsaW5lLXdpZHRoOjFweH0ub3V0bGluZS0ye291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoycHh9Lm91dGxpbmUtb2Zmc2V0LTJ7b3V0bGluZS1vZmZzZXQ6MnB4fS5vdXRsaW5lLXRyYW5zcGFyZW50e291dGxpbmUtY29sb3I6IzAwMDB9LmJhY2tkcm9wLWJsdXItbGd7LS10dy1iYWNrZHJvcC1ibHVyOmJsdXIodmFyKC0tYmx1ci1sZykpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKSB2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCkgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKSB2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpIHZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKSB2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1ibHVyLW1key0tdHctYmFja2Ryb3AtYmx1cjpibHVyKHZhcigtLWJsdXItbWQpKTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCkgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCkgdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpIHZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCk7YmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKSB2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCkgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKSB2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpIHZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKX0uYmFja2Ryb3AtYmx1ci1zbXstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cih2YXIoLS1ibHVyLXNtKSk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKSB2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCkgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCkgdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpIHZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCl9LnRyYW5zaXRpb257dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10byxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLHRyYW5zbGF0ZSxzY2FsZSxyb3RhdGUsZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyLGJhY2tkcm9wLWZpbHRlcixkaXNwbGF5LGNvbnRlbnQtdmlzaWJpbGl0eSxvdmVybGF5LHBvaW50ZXItZXZlbnRzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tXFtjb2xvclwsYm94LXNoYWRvd1xde3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYm94LXNoYWRvdzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLVxbbGVmdFwscmlnaHRcLHdpZHRoXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0LHJpZ2h0LHdpZHRoO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tXFttYXJnaW5cLG9wYWNpdHlcXXt0cmFuc2l0aW9uLXByb3BlcnR5Om1hcmdpbixvcGFjaXR5O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tXFt3aWR0aFwsaGVpZ2h0XCxwYWRkaW5nXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTp3aWR0aCxoZWlnaHQscGFkZGluZzt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLVxbd2lkdGhcXXt0cmFuc2l0aW9uLXByb3BlcnR5OndpZHRoO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tYWxse3RyYW5zaXRpb24tcHJvcGVydHk6YWxsO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG87dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi1vcGFjaXR5e3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLXRyYW5zZm9ybXt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSx0cmFuc2xhdGUsc2NhbGUscm90YXRlO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LmR1cmF0aW9uLTEwMHstLXR3LWR1cmF0aW9uOi4xczt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZHVyYXRpb24tMjAwey0tdHctZHVyYXRpb246LjJzO3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5kdXJhdGlvbi0zMDB7LS10dy1kdXJhdGlvbjouM3M7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmR1cmF0aW9uLTUwMHstLXR3LWR1cmF0aW9uOi41czt0cmFuc2l0aW9uLWR1cmF0aW9uOi41c30uZHVyYXRpb24tMTAwMHstLXR3LWR1cmF0aW9uOjFzO3RyYW5zaXRpb24tZHVyYXRpb246MXN9LmVhc2UtaW4tb3V0ey0tdHctZWFzZTp2YXIoLS1lYXNlLWluLW91dCk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZWFzZS1pbi1vdXQpfS5lYXNlLWxpbmVhcnstLXR3LWVhc2U6bGluZWFyO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn0uZmFkZS1pbi0wey0tdHctZW50ZXItb3BhY2l0eTowfS5vdXRsaW5lLW5vbmV7LS10dy1vdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1zdHlsZTpub25lfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uem9vbS1pbi05NXstLXR3LWVudGVyLXNjYWxlOi45NX0uXFstLWNlbGwtc2l6ZVw6MnJlbVxdey0tY2VsbC1zaXplOjJyZW19LmZhZGUtaW57LS10dy1lbnRlci1vcGFjaXR5OjB9LnNsaWRlLWluLWZyb20tYm90dG9tLTR7LS10dy1lbnRlci10cmFuc2xhdGUteTpjYWxjKDQqdmFyKC0tc3BhY2luZykpfS5ncm91cC1mb2N1cy13aXRoaW5cL21lbnUtaXRlbVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cFwvbWVudS1pdGVtKTpmb2N1cy13aXRoaW4gKil7b3BhY2l0eToxfUBtZWRpYShob3Zlcjpob3Zlcil7Lmdyb3VwLWhvdmVyXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwKTpob3ZlciAqKSwuZ3JvdXAtaG92ZXJcL21lbnUtaXRlbVw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cFwvbWVudS1pdGVtKTpob3ZlciAqKXtvcGFjaXR5OjF9fS5ncm91cC1oYXMtZGF0YS1cW3NpZGViYXJcPW1lbnUtYWN0aW9uXF1cL21lbnUtaXRlbVw6cHItODppcyg6d2hlcmUoLmdyb3VwXC9tZW51LWl0ZW0pOmhhcyhbZGF0YS1zaWRlYmFyPW1lbnUtYWN0aW9uXSkgKil7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9Lmdyb3VwLWhhcy1cW1xbZGF0YS1vcmllbnRhdGlvblw9aG9yaXpvbnRhbFxdXF1cL2ZpZWxkXDp0ZXh0LWJhbGFuY2U6aXMoOndoZXJlKC5ncm91cFwvZmllbGQpOmhhcyhbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKil7dGV4dC13cmFwOmJhbGFuY2V9Lmdyb3VwLWhhcy1cW1xbZGF0YS1zbG90XD1pdGVtLWRlc2NyaXB0aW9uXF1cXVwvaXRlbVw6dHJhbnNsYXRlLXktMFwuNTppcyg6d2hlcmUoLmdyb3VwXC9pdGVtKTpoYXMoW2RhdGEtc2xvdD1pdGVtLWRlc2NyaXB0aW9uXSkgKil7LS10dy10cmFuc2xhdGUteTpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5ncm91cC1oYXMtXFtcW2RhdGEtc2xvdFw9aXRlbS1kZXNjcmlwdGlvblxdXF1cL2l0ZW1cOnNlbGYtc3RhcnQ6aXMoOndoZXJlKC5ncm91cFwvaXRlbSk6aGFzKFtkYXRhLXNsb3Q9aXRlbS1kZXNjcmlwdGlvbl0pICope2FsaWduLXNlbGY6ZmxleC1zdGFydH0uZ3JvdXAtaGFzLVxbXD5pbnB1dFxdXC9pbnB1dC1ncm91cFw6cHQtMlwuNTppcyg6d2hlcmUoLmdyb3VwXC9pbnB1dC1ncm91cCk6aGFzKD5pbnB1dCkgKil7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9Lmdyb3VwLWhhcy1cW1w+aW5wdXRcXVwvaW5wdXQtZ3JvdXBcOnBiLTJcLjU6aXMoOndoZXJlKC5ncm91cFwvaW5wdXQtZ3JvdXApOmhhcyg+aW5wdXQpICope3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6LW10LTg6aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAqKXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAtOCl9Lmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9aWNvblxdXDpoaWRkZW46aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAqKXtkaXNwbGF5Om5vbmV9Lmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9aWNvblxdXDpoLThcITppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWNvbGxhcHNpYmxlPWljb25dICope2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCkhaW1wb3J0YW50fS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6dy04XCE6aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAqKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCkhaW1wb3J0YW50fS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6dy1cW2NhbGNcKHZhclwoLS1zaWRlYmFyLXdpZHRoLWljb25cKVwrdmFyXCgtLXNwYWNpbmctNFwpXClcXTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWNvbGxhcHNpYmxlPWljb25dICope3dpZHRoOmNhbGModmFyKC0tc2lkZWJhci13aWR0aC1pY29uKSArIHZhcigtLXNwYWNpbmctNCkpfS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6dy1cW2NhbGNcKHZhclwoLS1zaWRlYmFyLXdpZHRoLWljb25cKVwrdmFyXCgtLXNwYWNpbmctNFwpXCsycHhcKVxdOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtY29sbGFwc2libGU9aWNvbl0gKil7d2lkdGg6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoLWljb24pICsgdmFyKC0tc3BhY2luZy00KSArIDJweCl9Lmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9aWNvblxdXDp3LVxbdmFyXCgtLXNpZGViYXItd2lkdGgtaWNvblwpXF06aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAqKXt3aWR0aDp2YXIoLS1zaWRlYmFyLXdpZHRoLWljb24pfS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6b3ZlcmZsb3ctaGlkZGVuOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtY29sbGFwc2libGU9aWNvbl0gKil7b3ZlcmZsb3c6aGlkZGVufS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6cC0wXCE6aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAqKXtwYWRkaW5nOjAhaW1wb3J0YW50fS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6cC0yXCE6aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAqKXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiAyKSFpbXBvcnRhbnR9Lmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9aWNvblxdXDpvcGFjaXR5LTA6aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAqKXtvcGFjaXR5OjB9Lmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9b2ZmY2FudmFzXF1cOnJpZ2h0LVxbY2FsY1wodmFyXCgtLXNpZGViYXItd2lkdGhcKVwqLTFcKVxdOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtY29sbGFwc2libGU9b2ZmY2FudmFzXSAqKXtyaWdodDpjYWxjKHZhcigtLXNpZGViYXItd2lkdGgpICogLTEpfS5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPW9mZmNhbnZhc1xdXDpsZWZ0LVxbY2FsY1wodmFyXCgtLXNpZGViYXItd2lkdGhcKVwqLTFcKVxdOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtY29sbGFwc2libGU9b2ZmY2FudmFzXSAqKXtsZWZ0OmNhbGModmFyKC0tc2lkZWJhci13aWR0aCkgKiAtMSl9Lmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9b2ZmY2FudmFzXF1cOnctMDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWNvbGxhcHNpYmxlPW9mZmNhbnZhc10gKil7d2lkdGg6MH0uZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1vZmZjYW52YXNcXVw6dHJhbnNsYXRlLXgtMDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLWNvbGxhcHNpYmxlPW9mZmNhbnZhc10gKil7LS10dy10cmFuc2xhdGUteDowcHg7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9Lmdyb3VwLWRhdGEtXFtkaXNhYmxlZFw9dHJ1ZVxdXC9maWVsZFw6b3BhY2l0eS01MDppcyg6d2hlcmUoLmdyb3VwXC9maWVsZClbZGF0YS1kaXNhYmxlZD10cnVlXSAqKSwuZ3JvdXAtZGF0YS1cW2Rpc2FibGVkXD10cnVlXF1cL2lucHV0LWdyb3VwXDpvcGFjaXR5LTUwOmlzKDp3aGVyZSguZ3JvdXBcL2lucHV0LWdyb3VwKVtkYXRhLWRpc2FibGVkPXRydWVdICope29wYWNpdHk6LjV9Lmdyb3VwLWRhdGEtXFtmb2N1c2VkXD10cnVlXF1cL2RheVw6cmVsYXRpdmU6aXMoOndoZXJlKC5ncm91cFwvZGF5KVtkYXRhLWZvY3VzZWQ9dHJ1ZV0gKil7cG9zaXRpb246cmVsYXRpdmV9Lmdyb3VwLWRhdGEtXFtmb2N1c2VkXD10cnVlXF1cL2RheVw6ei0xMDppcyg6d2hlcmUoLmdyb3VwXC9kYXkpW2RhdGEtZm9jdXNlZD10cnVlXSAqKXt6LWluZGV4OjEwfS5ncm91cC1kYXRhLVxbZm9jdXNlZFw9dHJ1ZVxdXC9kYXlcOmJvcmRlci1yaW5nOmlzKDp3aGVyZSguZ3JvdXBcL2RheSlbZGF0YS1mb2N1c2VkPXRydWVdICope2JvcmRlci1jb2xvcjpoc2wodmFyKC0tcmluZykpfS5ncm91cC1kYXRhLVxbZm9jdXNlZFw9dHJ1ZVxdXC9kYXlcOnJpbmctXFszcHhcXTppcyg6d2hlcmUoLmdyb3VwXC9kYXkpW2RhdGEtZm9jdXNlZD10cnVlXSAqKXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uZ3JvdXAtZGF0YS1cW2ZvY3VzZWRcPXRydWVcXVwvZGF5XDpyaW5nLXJpbmdcLzUwOmlzKDp3aGVyZSguZ3JvdXBcL2RheSlbZGF0YS1mb2N1c2VkPXRydWVdICopey0tdHctcmluZy1jb2xvcjpoc2wodmFyKC0tcmluZykpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmdyb3VwLWRhdGEtXFtmb2N1c2VkXD10cnVlXF1cL2RheVw6cmluZy1yaW5nXC81MDppcyg6d2hlcmUoLmdyb3VwXC9kYXkpW2RhdGEtZm9jdXNlZD10cnVlXSAqKXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCBoc2wodmFyKC0tcmluZykpIDUwJSwgdHJhbnNwYXJlbnQpfX0uZ3JvdXAtZGF0YS1cW3NpZGVcPWxlZnRcXVw6LXJpZ2h0LTQ6aXMoOndoZXJlKC5ncm91cClbZGF0YS1zaWRlPWxlZnRdICope3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAtNCl9Lmdyb3VwLWRhdGEtXFtzaWRlXD1sZWZ0XF1cOmJvcmRlci1yOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc2lkZT1sZWZ0XSAqKXtib3JkZXItcmlnaHQtc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItcmlnaHQtd2lkdGg6MXB4fS5ncm91cC1kYXRhLVxbc2lkZVw9cmlnaHRcXVw6bGVmdC0wOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtc2lkZT1yaWdodF0gKil7bGVmdDowfS5ncm91cC1kYXRhLVxbc2lkZVw9cmlnaHRcXVw6cm90YXRlLTE4MDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXNpZGU9cmlnaHRdICope3JvdGF0ZToxODBkZWd9Lmdyb3VwLWRhdGEtXFtzaWRlXD1yaWdodFxdXDpib3JkZXItbDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXNpZGU9cmlnaHRdICope2JvcmRlci1sZWZ0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS5ncm91cC1kYXRhLVxbc3RhdGVcPW9wZW5cXVw6cm90YXRlLTE4MDppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXN0YXRlPW9wZW5dICope3JvdGF0ZToxODBkZWd9Lmdyb3VwLWRhdGEtXFt2YXJpYW50XD1mbG9hdGluZ1xdXDpyb3VuZGVkLWxnOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtdmFyaWFudD1mbG9hdGluZ10gKil7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpfS5ncm91cC1kYXRhLVxbdmFyaWFudFw9ZmxvYXRpbmdcXVw6Ym9yZGVyOmlzKDp3aGVyZSguZ3JvdXApW2RhdGEtdmFyaWFudD1mbG9hdGluZ10gKil7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjFweH0uZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWZsb2F0aW5nXF1cOnNoYWRvdy1zbTppcyg6d2hlcmUoLmdyb3VwKVtkYXRhLXZhcmlhbnQ9ZmxvYXRpbmddICopey0tdHctc2hhZG93OjAgMXB4IDNweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLCAwIDFweCAycHggLTFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9Lmdyb3VwLWRhdGEtXFt2YXJpYW50XD1vdXRsaW5lXF1cL2ZpZWxkLWdyb3VwXDotbWItMjppcyg6d2hlcmUoLmdyb3VwXC9maWVsZC1ncm91cClbZGF0YS12YXJpYW50PW91dGxpbmVdICope21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0yKX0uZ3JvdXAtXFtcLmRlc3RydWN0aXZlXF1cOmJvcmRlci1tdXRlZFwvNDA6aXMoOndoZXJlKC5ncm91cCkuZGVzdHJ1Y3RpdmUgKil7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1tdXRlZCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpib3JkZXItbXV0ZWRcLzQwOmlzKDp3aGVyZSguZ3JvdXApLmRlc3RydWN0aXZlICope2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLW11dGVkKSkgNDAlLHRyYW5zcGFyZW50KX19Lmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDp0ZXh0LXJlZC0zMDA6aXMoOndoZXJlKC5ncm91cCkuZGVzdHJ1Y3RpdmUgKil7Y29sb3I6dmFyKC0tY29sb3ItcmVkLTMwMCl9Lmdyb3VwLVxbXC50b2FzdFxdXDpiZy1tdXRlZDppcyg6d2hlcmUoLmdyb3VwKS50b2FzdCAqKXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1tdXRlZCkpfS5ncm91cC1cW1wudG9hc3RcXVw6YmctcHJpbWFyeTppcyg6d2hlcmUoLmdyb3VwKS50b2FzdCAqKXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9Lmdyb3VwLVxbXC50b2FzdFxdXDp0ZXh0LW11dGVkLWZvcmVncm91bmQ6aXMoOndoZXJlKC5ncm91cCkudG9hc3QgKil7Y29sb3I6aHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKX0uZ3JvdXAtXFtcLnRvYXN0XF1cOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kOmlzKDp3aGVyZSguZ3JvdXApLnRvYXN0ICope2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5LWZvcmVncm91bmQpKX0uZ3JvdXAtXFtcLnRvYXN0ZXJcXVw6Ym9yZGVyLWJvcmRlcjppcyg6d2hlcmUoLmdyb3VwKS50b2FzdGVyICope2JvcmRlci1jb2xvcjpoc2wodmFyKC0tYm9yZGVyKSl9Lmdyb3VwLVxbXC50b2FzdGVyXF1cOmJnLWJhY2tncm91bmQ6aXMoOndoZXJlKC5ncm91cCkudG9hc3RlciAqKXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1iYWNrZ3JvdW5kKSl9Lmdyb3VwLVxbXC50b2FzdGVyXF1cOnRleHQtZm9yZWdyb3VuZDppcyg6d2hlcmUoLmdyb3VwKS50b2FzdGVyICope2NvbG9yOmhzbCh2YXIoLS1mb3JlZ3JvdW5kKSl9Lmdyb3VwLVxbXC50b2FzdGVyXF1cOnNoYWRvdy1sZzppcyg6d2hlcmUoLmdyb3VwKS50b2FzdGVyICopey0tdHctc2hhZG93OjAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksIDAgNHB4IDZweCAtNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0ucGVlci1kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmlzKDp3aGVyZSgucGVlcik6ZGlzYWJsZWR+Kil7Y3Vyc29yOm5vdC1hbGxvd2VkfS5wZWVyLWRpc2FibGVkXDpvcGFjaXR5LTcwOmlzKDp3aGVyZSgucGVlcik6ZGlzYWJsZWR+Kil7b3BhY2l0eTouN30ucGVlci1kYXRhLVxbc2l6ZVw9ZGVmYXVsdFxdXC9tZW51LWJ1dHRvblw6dG9wLTFcLjU6aXMoOndoZXJlKC5wZWVyXC9tZW51LWJ1dHRvbilbZGF0YS1zaXplPWRlZmF1bHRdfiope3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0ucGVlci1kYXRhLVxbc2l6ZVw9bGdcXVwvbWVudS1idXR0b25cOnRvcC0yXC41OmlzKDp3aGVyZSgucGVlclwvbWVudS1idXR0b24pW2RhdGEtc2l6ZT1sZ11+Kil7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5wZWVyLWRhdGEtXFtzaXplXD1zbVxdXC9tZW51LWJ1dHRvblw6dG9wLTE6aXMoOndoZXJlKC5wZWVyXC9tZW51LWJ1dHRvbilbZGF0YS1zaXplPXNtXX4qKXt0b3A6dmFyKC0tc3BhY2luZyl9LmZpbGVcOmJvcmRlci0wOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uZmlsZVw6YmctdHJhbnNwYXJlbnQ6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmZpbGVcOnRleHQtc206OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9LmZpbGVcOmZvbnQtbWVkaXVtOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKX0ucGxhY2Vob2xkZXJcOnRleHQtbXV0ZWQtZm9yZWdyb3VuZDo6cGxhY2Vob2xkZXJ7Y29sb3I6aHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKX0uYWZ0ZXJcOmFic29sdXRlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7cG9zaXRpb246YWJzb2x1dGV9LmFmdGVyXDotaW5zZXQtMjphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0OmNhbGModmFyKC0tc3BhY2luZykgKiAtMil9LmFmdGVyXDppbnNldC15LTA6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1ibG9jazowfS5hZnRlclw6bGVmdC0xXC8yOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7bGVmdDo1MCV9LmFmdGVyXDp3LTE6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt3aWR0aDp2YXIoLS1zcGFjaW5nKX0uYWZ0ZXJcOnctXFsycHhcXTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjJweH0uYWZ0ZXJcOi10cmFuc2xhdGUteC0xXC8yOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy10cmFuc2xhdGUteDogLTUwJSA7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9Lmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9b2ZmY2FudmFzXF1cOmFmdGVyXDpsZWZ0LWZ1bGw6aXMoOndoZXJlKC5ncm91cClbZGF0YS1jb2xsYXBzaWJsZT1vZmZjYW52YXNdICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7bGVmdDoxMDAlfS5maXJzdFw6cm91bmRlZC1sLW1kOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCl9LmZpcnN0XDpib3JkZXItbDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1sZWZ0LXdpZHRoOjFweH0ubGFzdFw6bXQtMDpsYXN0LWNoaWxke21hcmdpbi10b3A6MH0ubGFzdFw6cm91bmRlZC1yLW1kOmxhc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfUBtZWRpYShob3Zlcjpob3Zlcil7LmhvdmVyXDpib3JkZXItYm9yZGVyOmhvdmVye2JvcmRlci1jb2xvcjpoc2wodmFyKC0tYm9yZGVyKSl9LmhvdmVyXDpib3JkZXItcHJpbWFyeTpob3ZlciwuaG92ZXJcOmJvcmRlci1wcmltYXJ5XC81MDpob3Zlcntib3JkZXItY29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ym9yZGVyLXByaW1hcnlcLzUwOmhvdmVye2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSA1MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJvcmRlci1wcmltYXJ5XC82MDpob3Zlcntib3JkZXItY29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ym9yZGVyLXByaW1hcnlcLzYwOmhvdmVye2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSA2MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLWFjY2VudDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1hY2NlbnQpKX0uaG92ZXJcOmJnLWRlc3RydWN0aXZlXC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1kZXN0cnVjdGl2ZVwvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLWRlc3RydWN0aXZlKSkgOTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1tdXRlZDpob3ZlciwuaG92ZXJcOmJnLW11dGVkXC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1tdXRlZCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1tdXRlZFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLW11dGVkKSkgNTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1wcmltYXJ5XC81OmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6YmctcHJpbWFyeVwvNTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tcHJpbWFyeSkpIDUlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1wcmltYXJ5XC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXByaW1hcnlcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1wcmltYXJ5KSkgMTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1wcmltYXJ5XC85MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXByaW1hcnlcLzkwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1wcmltYXJ5KSkgOTAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1zZWNvbmRhcnk6aG92ZXIsLmhvdmVyXDpiZy1zZWNvbmRhcnlcLzMwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXNlY29uZGFyeSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzMwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1zZWNvbmRhcnkpKSAzMCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXNlY29uZGFyeVwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaG92ZXJcOmJnLXNlY29uZGFyeVwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXNlY29uZGFyeSkpIDUwJSx0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc2Vjb25kYXJ5XC82MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1zZWNvbmRhcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6Ymctc2Vjb25kYXJ5XC82MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tc2Vjb25kYXJ5KSkgNjAlLHRyYW5zcGFyZW50KX19LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzgwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXNlY29uZGFyeSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzgwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1zZWNvbmRhcnkpKSA4MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOnRleHQtYWNjZW50LWZvcmVncm91bmQ6aG92ZXJ7Y29sb3I6aHNsKHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKSl9LmhvdmVyXDp0ZXh0LWRlc3RydWN0aXZlOmhvdmVye2NvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfS5ob3Zlclw6dGV4dC1mb3JlZ3JvdW5kOmhvdmVye2NvbG9yOmhzbCh2YXIoLS1mb3JlZ3JvdW5kKSl9LmhvdmVyXDp0ZXh0LW11dGVkLWZvcmVncm91bmQ6aG92ZXJ7Y29sb3I6aHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKX0uaG92ZXJcOnRleHQtcHJpbWFyeTpob3ZlciwuaG92ZXJcOnRleHQtcHJpbWFyeVwvODA6aG92ZXJ7Y29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5ob3Zlclw6dGV4dC1wcmltYXJ5XC84MDpob3Zlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSA4MCUsdHJhbnNwYXJlbnQpfX0uaG92ZXJcOnVuZGVybGluZTpob3Zlcnt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LmhvdmVyXDpvcGFjaXR5LTEwMDpob3ZlcntvcGFjaXR5OjF9LmhvdmVyXDpzaGFkb3ctXFswXzBfMF8xcHhfaHNsXCh2YXJcKC0tc2lkZWJhci1hY2NlbnRcKVwpXF06aG92ZXJ7LS10dy1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcixoc2wodmFyKC0tc2lkZWJhci1hY2NlbnQpKSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5ncm91cC1cW1wuZGVzdHJ1Y3RpdmVcXVw6aG92ZXJcOmJvcmRlci1kZXN0cnVjdGl2ZVwvMzA6aXMoOndoZXJlKC5ncm91cCkuZGVzdHJ1Y3RpdmUgKik6aG92ZXJ7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpob3Zlclw6Ym9yZGVyLWRlc3RydWN0aXZlXC8zMDppcyg6d2hlcmUoLmdyb3VwKS5kZXN0cnVjdGl2ZSAqKTpob3Zlcntib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpIDMwJSx0cmFuc3BhcmVudCl9fS5ncm91cC1cW1wuZGVzdHJ1Y3RpdmVcXVw6aG92ZXJcOmJnLWRlc3RydWN0aXZlOmlzKDp3aGVyZSguZ3JvdXApLmRlc3RydWN0aXZlICopOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlKSl9Lmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpob3Zlclw6dGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kOmlzKDp3aGVyZSguZ3JvdXApLmRlc3RydWN0aXZlICopOmhvdmVye2NvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kKSl9Lmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpob3Zlclw6dGV4dC1yZWQtNTA6aXMoOndoZXJlKC5ncm91cCkuZGVzdHJ1Y3RpdmUgKik6aG92ZXJ7Y29sb3I6dmFyKC0tY29sb3ItcmVkLTUwKX19LmZvY3VzXDpiZy1hY2NlbnQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSl9LmZvY3VzXDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kOmZvY3Vze2NvbG9yOmhzbCh2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCkpfS5mb2N1c1w6b3BhY2l0eS0xMDA6Zm9jdXN7b3BhY2l0eToxfS5mb2N1c1w6cmluZy0xOmZvY3Vzey0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5mb2N1c1w6cmluZy0yOmZvY3Vzey0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5mb2N1c1w6cmluZy1yaW5nOmZvY3Vzey0tdHctcmluZy1jb2xvcjpoc2wodmFyKC0tcmluZykpfS5mb2N1c1w6cmluZy1vZmZzZXQtMjpmb2N1c3stLXR3LXJpbmctb2Zmc2V0LXdpZHRoOjJweDstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKX0uZm9jdXNcOm91dGxpbmUtbm9uZTpmb2N1c3stLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9Lmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpmb2N1c1w6cmluZy1kZXN0cnVjdGl2ZTppcyg6d2hlcmUoLmdyb3VwKS5kZXN0cnVjdGl2ZSAqKTpmb2N1c3stLXR3LXJpbmctY29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlKSl9Lmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpmb2N1c1w6cmluZy1yZWQtNDAwOmlzKDp3aGVyZSguZ3JvdXApLmRlc3RydWN0aXZlICopOmZvY3Vzey0tdHctcmluZy1jb2xvcjp2YXIoLS1jb2xvci1yZWQtNDAwKX0uZ3JvdXAtXFtcLmRlc3RydWN0aXZlXF1cOmZvY3VzXDpyaW5nLW9mZnNldC1yZWQtNjAwOmlzKDp3aGVyZSguZ3JvdXApLmRlc3RydWN0aXZlICopOmZvY3Vzey0tdHctcmluZy1vZmZzZXQtY29sb3I6dmFyKC0tY29sb3ItcmVkLTYwMCl9LmZvY3VzLXZpc2libGVcOmJvcmRlci1yaW5nOmZvY3VzLXZpc2libGV7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1yaW5nKSl9LmZvY3VzLXZpc2libGVcOnJpbmctMDpmb2N1cy12aXNpYmxley0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMHB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5mb2N1cy12aXNpYmxlXDpyaW5nLTE6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDFweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uZm9jdXMtdmlzaWJsZVw6cmluZy0yOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LmZvY3VzLXZpc2libGVcOnJpbmctXFszcHhcXTpmb2N1cy12aXNpYmxley0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoM3B4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSx2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3cpfS5mb2N1cy12aXNpYmxlXDpyaW5nLXJpbmc6Zm9jdXMtdmlzaWJsZSwuZm9jdXMtdmlzaWJsZVw6cmluZy1yaW5nXC81MDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjpoc2wodmFyKC0tcmluZykpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmZvY3VzLXZpc2libGVcOnJpbmctcmluZ1wvNTA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCBoc2wodmFyKC0tcmluZykpIDUwJSwgdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6cmluZy1vZmZzZXQtMTpmb2N1cy12aXNpYmxley0tdHctcmluZy1vZmZzZXQtd2lkdGg6MXB4Oy0tdHctcmluZy1vZmZzZXQtc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkgdmFyKC0tdHctcmluZy1vZmZzZXQtY29sb3IpfS5mb2N1cy12aXNpYmxlXDpyaW5nLW9mZnNldC0yOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLW9mZnNldC13aWR0aDoycHg7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcil9LmZvY3VzLXZpc2libGVcOnJpbmctb2Zmc2V0LWJhY2tncm91bmQ6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctb2Zmc2V0LWNvbG9yOmhzbCh2YXIoLS1iYWNrZ3JvdW5kKSl9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtbm9uZTpmb2N1cy12aXNpYmxley0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uYWN0aXZlXDpzY2FsZS1cWzBcLjk4XF06YWN0aXZle3NjYWxlOi45OH0uZGlzYWJsZWRcOnBvaW50ZXItZXZlbnRzLW5vbmU6ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX0uZGlzYWJsZWRcOmN1cnNvci1ub3QtYWxsb3dlZDpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9OndoZXJlKFtkYXRhLXNpZGU9bGVmdF0pIC5pbi1kYXRhLVxbc2lkZVw9bGVmdFxdXDpjdXJzb3Itdy1yZXNpemV7Y3Vyc29yOnctcmVzaXplfTp3aGVyZShbZGF0YS1zaWRlPXJpZ2h0XSkgLmluLWRhdGEtXFtzaWRlXD1yaWdodFxdXDpjdXJzb3ItZS1yZXNpemV7Y3Vyc29yOmUtcmVzaXplfS5oYXMtZm9jdXNcOmJvcmRlci1yaW5nOmhhcyg6Zm9jdXMpe2JvcmRlci1jb2xvcjpoc2wodmFyKC0tcmluZykpfS5oYXMtZm9jdXNcOnJpbmctXFszcHhcXTpoYXMoOmZvY3VzKXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uaGFzLWZvY3VzXDpyaW5nLXJpbmdcLzUwOmhhcyg6Zm9jdXMpey0tdHctcmluZy1jb2xvcjpoc2wodmFyKC0tcmluZykpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7Lmhhcy1mb2N1c1w6cmluZy1yaW5nXC81MDpoYXMoOmZvY3VzKXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCBoc2wodmFyKC0tcmluZykpIDUwJSwgdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpib3JkZXItcHJpbWFyeTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JvcmRlci1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfS5oYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXByaW1hcnlcLzU6aGFzKFtkYXRhLXN0YXRlPWNoZWNrZWRdKXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5XC81OmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSA1JSx0cmFuc3BhcmVudCl9fS5oYXMtXFtcOmRpc2FibGVkXF1cOm9wYWNpdHktNTA6aGFzKDpkaXNhYmxlZCl7b3BhY2l0eTouNX0uaGFzLVxbXFtkYXRhLXNsb3RcPWlucHV0LWdyb3VwLWNvbnRyb2xcXVw6Zm9jdXMtdmlzaWJsZVxdXDpyaW5nLTE6aGFzKFtkYXRhLXNsb3Q9aW5wdXQtZ3JvdXAtY29udHJvbF06Zm9jdXMtdmlzaWJsZSl7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygxcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9Lmhhcy1cW1xbZGF0YS1zbG90XD1pbnB1dC1ncm91cC1jb250cm9sXF1cOmZvY3VzLXZpc2libGVcXVw6cmluZy1yaW5nOmhhcyhbZGF0YS1zbG90PWlucHV0LWdyb3VwLWNvbnRyb2xdOmZvY3VzLXZpc2libGUpey0tdHctcmluZy1jb2xvcjpoc2wodmFyKC0tcmluZykpfS5oYXMtXFtcW2RhdGEtc2xvdFxdXFthcmlhLWludmFsaWRcPXRydWVcXVxdXDpib3JkZXItZGVzdHJ1Y3RpdmU6aGFzKFtkYXRhLXNsb3RdW2FyaWEtaW52YWxpZD10cnVlXSl7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfS5oYXMtXFtcW2RhdGEtc2xvdFxdXFthcmlhLWludmFsaWRcPXRydWVcXVxdXDpyaW5nLWRlc3RydWN0aXZlXC8yMDpoYXMoW2RhdGEtc2xvdF1bYXJpYS1pbnZhbGlkPXRydWVdKXstLXR3LXJpbmctY29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlKSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuaGFzLVxbXFtkYXRhLXNsb3RcXVxbYXJpYS1pbnZhbGlkXD10cnVlXF1cXVw6cmluZy1kZXN0cnVjdGl2ZVwvMjA6aGFzKFtkYXRhLXNsb3RdW2FyaWEtaW52YWxpZD10cnVlXSl7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgaHNsKHZhcigtLWRlc3RydWN0aXZlKSkgMjAlLCB0cmFuc3BhcmVudCl9fS5oYXMtXFtcPlxbZGF0YS1hbGlnblw9YmxvY2stZW5kXF1cXVw6aC1hdXRvOmhhcyg+W2RhdGEtYWxpZ249YmxvY2stZW5kXSl7aGVpZ2h0OmF1dG99Lmhhcy1cW1w+XFtkYXRhLWFsaWduXD1ibG9jay1lbmRcXVxdXDpmbGV4LWNvbDpoYXMoPltkYXRhLWFsaWduPWJsb2NrLWVuZF0pe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uaGFzLVxbXD5cW2RhdGEtYWxpZ25cPWJsb2NrLXN0YXJ0XF1cXVw6aC1hdXRvOmhhcyg+W2RhdGEtYWxpZ249YmxvY2stc3RhcnRdKXtoZWlnaHQ6YXV0b30uaGFzLVxbXD5cW2RhdGEtYWxpZ25cPWJsb2NrLXN0YXJ0XF1cXVw6ZmxleC1jb2w6aGFzKD5bZGF0YS1hbGlnbj1ibG9jay1zdGFydF0pe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uaGFzLVxbXD5cW2RhdGEtc2xvdFw9YnV0dG9uLWdyb3VwXF1cXVw6Z2FwLTI6aGFzKD5bZGF0YS1zbG90PWJ1dHRvbi1ncm91cF0pe2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lmhhcy1cW1w+XFtkYXRhLXNsb3RcPWNoZWNrYm94LWdyb3VwXF1cXVw6Z2FwLTM6aGFzKD5bZGF0YS1zbG90PWNoZWNrYm94LWdyb3VwXSl7Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uaGFzLVxbXD5cW2RhdGEtc2xvdFw9ZmllbGQtY29udGVudFxdXF1cOml0ZW1zLXN0YXJ0Omhhcyg+W2RhdGEtc2xvdD1maWVsZC1jb250ZW50XSl7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaGFzLVxbXD5cW2RhdGEtc2xvdFw9ZmllbGRcXVxdXDp3LWZ1bGw6aGFzKD5bZGF0YS1zbG90PWZpZWxkXSl7d2lkdGg6MTAwJX0uaGFzLVxbXD5cW2RhdGEtc2xvdFw9ZmllbGRcXVxdXDpmbGV4LWNvbDpoYXMoPltkYXRhLXNsb3Q9ZmllbGRdKXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lmhhcy1cW1w+XFtkYXRhLXNsb3RcPWZpZWxkXF1cXVw6cm91bmRlZC1tZDpoYXMoPltkYXRhLXNsb3Q9ZmllbGRdKXtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCl9Lmhhcy1cW1w+XFtkYXRhLXNsb3RcPWZpZWxkXF1cXVw6Ym9yZGVyOmhhcyg+W2RhdGEtc2xvdD1maWVsZF0pe2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDoxcHh9Lmhhcy1cW1w+XFtkYXRhLXNsb3RcPXJhZGlvLWdyb3VwXF1cXVw6Z2FwLTM6aGFzKD5bZGF0YS1zbG90PXJhZGlvLWdyb3VwXSl7Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uaGFzLVxbXD5idXR0b25cXVw6bXItXFstMFwuNHJlbVxdOmhhcyg+YnV0dG9uKXttYXJnaW4tcmlnaHQ6LS40cmVtfS5oYXMtXFtcPmJ1dHRvblxdXDptbC1cWy0wXC40NXJlbVxdOmhhcyg+YnV0dG9uKXttYXJnaW4tbGVmdDotLjQ1cmVtfS5oYXMtXFtcPmtiZFxdXDptci1cWy0wXC4zNXJlbVxdOmhhcyg+a2JkKXttYXJnaW4tcmlnaHQ6LS4zNXJlbX0uaGFzLVxbXD5rYmRcXVw6bWwtXFstMFwuMzVyZW1cXTpoYXMoPmtiZCl7bWFyZ2luLWxlZnQ6LS4zNXJlbX0uaGFzLVxbXD5zdmdcXVw6cC0wOmhhcyg+c3ZnKXtwYWRkaW5nOjB9Lmhhcy1cW1w+c3ZnXF1cOnB4LTI6aGFzKD5zdmcpe3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uaGFzLVxbXD5zdmdcXVw6cHgtMlwuNTpoYXMoPnN2Zyl7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9Lmhhcy1cW1w+dGV4dGFyZWFcXVw6aC1hdXRvOmhhcyg+dGV4dGFyZWEpe2hlaWdodDphdXRvfS5hcmlhLWRpc2FibGVkXDpwb2ludGVyLWV2ZW50cy1ub25lW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17cG9pbnRlci1ldmVudHM6bm9uZX0uYXJpYS1kaXNhYmxlZFw6b3BhY2l0eS01MFthcmlhLWRpc2FibGVkPXRydWVde29wYWNpdHk6LjV9LmFyaWEtc2VsZWN0ZWRcOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFthcmlhLXNlbGVjdGVkPXRydWVde2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LmRhdGEtXFthY3RpdmVcPXRydWVcXVw6Zm9udC1tZWRpdW1bZGF0YS1hY3RpdmU9dHJ1ZV17LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmRhdGEtXFtkaXNhYmxlZFxdXDpwb2ludGVyLWV2ZW50cy1ub25lW2RhdGEtZGlzYWJsZWRde3BvaW50ZXItZXZlbnRzOm5vbmV9LmRhdGEtXFtkaXNhYmxlZFxdXDpvcGFjaXR5LTUwW2RhdGEtZGlzYWJsZWRde29wYWNpdHk6LjV9LmRhdGEtXFtkaXNhYmxlZFw9dHJ1ZVxdXDpwb2ludGVyLWV2ZW50cy1ub25lW2RhdGEtZGlzYWJsZWQ9dHJ1ZV17cG9pbnRlci1ldmVudHM6bm9uZX0uZGF0YS1cW2Rpc2FibGVkXD10cnVlXF1cOm9wYWNpdHktNTBbZGF0YS1kaXNhYmxlZD10cnVlXXtvcGFjaXR5Oi41fS5kYXRhLVxbaW52YWxpZFw9dHJ1ZVxdXDp0ZXh0LWRlc3RydWN0aXZlW2RhdGEtaW52YWxpZD10cnVlXXtjb2xvcjpoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpKX0uZGF0YS1cW21vdGlvblw9ZnJvbS1lbmRcXVw6c2xpZGUtaW4tZnJvbS1yaWdodC01MltkYXRhLW1vdGlvbj1mcm9tLWVuZF17LS10dy1lbnRlci10cmFuc2xhdGUteDpjYWxjKDUyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW21vdGlvblw9ZnJvbS1zdGFydFxdXDpzbGlkZS1pbi1mcm9tLWxlZnQtNTJbZGF0YS1tb3Rpb249ZnJvbS1zdGFydF17LS10dy1lbnRlci10cmFuc2xhdGUteDpjYWxjKDUyKnZhcigtLXNwYWNpbmcpKi0xKX0uZGF0YS1cW21vdGlvblw9dG8tZW5kXF1cOnNsaWRlLW91dC10by1yaWdodC01MltkYXRhLW1vdGlvbj10by1lbmRdey0tdHctZXhpdC10cmFuc2xhdGUteDpjYWxjKDUyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW21vdGlvblw9dG8tc3RhcnRcXVw6c2xpZGUtb3V0LXRvLWxlZnQtNTJbZGF0YS1tb3Rpb249dG8tc3RhcnRdey0tdHctZXhpdC10cmFuc2xhdGUteDpjYWxjKDUyKnZhcigtLXNwYWNpbmcpKi0xKX0uZGF0YS1cW21vdGlvblxeXD1mcm9tLVxdXDphbmltYXRlLWluW2RhdGEtbW90aW9uXj1mcm9tLV17YW5pbWF0aW9uOmVudGVyIHZhcigtLXR3LWFuaW1hdGlvbi1kdXJhdGlvbix2YXIoLS10dy1kdXJhdGlvbiwuMTVzKSl2YXIoLS10dy1lYXNlLGVhc2UpdmFyKC0tdHctYW5pbWF0aW9uLWRlbGF5LDBzKXZhcigtLXR3LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsMSl2YXIoLS10dy1hbmltYXRpb24tZGlyZWN0aW9uLG5vcm1hbCl2YXIoLS10dy1hbmltYXRpb24tZmlsbC1tb2RlLG5vbmUpfS5kYXRhLVxbbW90aW9uXF5cPWZyb20tXF1cOmZhZGUtaW5bZGF0YS1tb3Rpb25ePWZyb20tXXstLXR3LWVudGVyLW9wYWNpdHk6MH0uZGF0YS1cW21vdGlvblxeXD10by1cXVw6YW5pbWF0ZS1vdXRbZGF0YS1tb3Rpb25ePXRvLV17YW5pbWF0aW9uOmV4aXQgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4xNXMpKXZhcigtLXR3LWVhc2UsZWFzZSl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtXFttb3Rpb25cXlw9dG8tXF1cOmZhZGUtb3V0W2RhdGEtbW90aW9uXj10by1dey0tdHctZXhpdC1vcGFjaXR5OjB9LmRhdGEtXFtvcmllbnRhdGlvblw9dmVydGljYWxcXVw6aC1hdXRvW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxde2hlaWdodDphdXRvfS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDpoLXB4W2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXXtoZWlnaHQ6MXB4fS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDp3LWZ1bGxbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxde3dpZHRoOjEwMCV9LmRhdGEtXFtwYW5lbC1ncm91cC1kaXJlY3Rpb25cPXZlcnRpY2FsXF1cOmZsZXgtY29sW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRhdGEtXFtwYW5lbC1ncm91cC1kaXJlY3Rpb25cPXZlcnRpY2FsXF1cOmFmdGVyXDpsZWZ0LTBbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7bGVmdDowfS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDphZnRlclw6aC0xW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDp2YXIoLS1zcGFjaW5nKX0uZGF0YS1cW3BhbmVsLWdyb3VwLWRpcmVjdGlvblw9dmVydGljYWxcXVw6YWZ0ZXJcOnctZnVsbFtkYXRhLXBhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt3aWR0aDoxMDAlfS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDphZnRlclw6dHJhbnNsYXRlLXgtMFtkYXRhLXBhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXRyYW5zbGF0ZS14OjBweDt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3BhbmVsLWdyb3VwLWRpcmVjdGlvblw9dmVydGljYWxcXVw6YWZ0ZXJcOi10cmFuc2xhdGUteS0xXC8yW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctdHJhbnNsYXRlLXk6IC01MCUgO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbcGxhY2Vob2xkZXJcXVw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kW2RhdGEtcGxhY2Vob2xkZXJde2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LmRhdGEtXFtyYW5nZS1lbmRcPXRydWVcXVw6cm91bmRlZC1tZFtkYXRhLXJhbmdlLWVuZD10cnVlXXtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCl9LmRhdGEtXFtyYW5nZS1lbmRcPXRydWVcXVw6YmctcHJpbWFyeVtkYXRhLXJhbmdlLWVuZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9LmRhdGEtXFtyYW5nZS1lbmRcPXRydWVcXVw6dGV4dC1wcmltYXJ5LWZvcmVncm91bmRbZGF0YS1yYW5nZS1lbmQ9dHJ1ZV17Y29sb3I6aHNsKHZhcigtLXByaW1hcnktZm9yZWdyb3VuZCkpfS5kYXRhLVxbcmFuZ2UtbWlkZGxlXD10cnVlXF1cOnJvdW5kZWQtbm9uZVtkYXRhLXJhbmdlLW1pZGRsZT10cnVlXXtib3JkZXItcmFkaXVzOjB9LmRhdGEtXFtyYW5nZS1taWRkbGVcPXRydWVcXVw6YmctYWNjZW50W2RhdGEtcmFuZ2UtbWlkZGxlPXRydWVde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfS5kYXRhLVxbcmFuZ2UtbWlkZGxlXD10cnVlXF1cOnRleHQtYWNjZW50LWZvcmVncm91bmRbZGF0YS1yYW5nZS1taWRkbGU9dHJ1ZV17Y29sb3I6aHNsKHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKSl9LmRhdGEtXFtyYW5nZS1zdGFydFw9dHJ1ZVxdXDpyb3VuZGVkLW1kW2RhdGEtcmFuZ2Utc3RhcnQ9dHJ1ZV17Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5kYXRhLVxbcmFuZ2Utc3RhcnRcPXRydWVcXVw6YmctcHJpbWFyeVtkYXRhLXJhbmdlLXN0YXJ0PXRydWVde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX0uZGF0YS1cW3JhbmdlLXN0YXJ0XD10cnVlXF1cOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kW2RhdGEtcmFuZ2Utc3RhcnQ9dHJ1ZV17Y29sb3I6aHNsKHZhcigtLXByaW1hcnktZm9yZWdyb3VuZCkpfS5kYXRhLVxbc2VsZWN0ZWQtc2luZ2xlXD10cnVlXF1cOmJnLXByaW1hcnlbZGF0YS1zZWxlY3RlZC1zaW5nbGU9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfS5kYXRhLVxbc2VsZWN0ZWQtc2luZ2xlXD10cnVlXF1cOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kW2RhdGEtc2VsZWN0ZWQtc2luZ2xlPXRydWVde2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5LWZvcmVncm91bmQpKX0uZGF0YS1cW3NlbGVjdGVkXD10cnVlXF1cOnJvdW5kZWQtbm9uZVtkYXRhLXNlbGVjdGVkPXRydWVde2JvcmRlci1yYWRpdXM6MH0uZGF0YS1cW3NlbGVjdGVkXD10cnVlXF1cOmJnLWFjY2VudFtkYXRhLXNlbGVjdGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfS5kYXRhLVxbc2VsZWN0ZWRcPXRydWVcXVw6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZFtkYXRhLXNlbGVjdGVkPXRydWVde2NvbG9yOmhzbCh2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCkpfS5kYXRhLVxbc2lkZVw9Ym90dG9tXF1cOnRyYW5zbGF0ZS15LTFbZGF0YS1zaWRlPWJvdHRvbV17LS10dy10cmFuc2xhdGUteTp2YXIoLS1zcGFjaW5nKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPWJvdHRvbVxdXDpzbGlkZS1pbi1mcm9tLXRvcC0yW2RhdGEtc2lkZT1ib3R0b21dey0tdHctZW50ZXItdHJhbnNsYXRlLXk6Y2FsYygyKnZhcigtLXNwYWNpbmcpKi0xKX0uZGF0YS1cW3NpZGVcPWxlZnRcXVw6LXRyYW5zbGF0ZS14LTFbZGF0YS1zaWRlPWxlZnRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPWxlZnRcXVw6c2xpZGUtaW4tZnJvbS1yaWdodC0yW2RhdGEtc2lkZT1sZWZ0XXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OmNhbGMoMip2YXIoLS1zcGFjaW5nKSl9LmRhdGEtXFtzaWRlXD1yaWdodFxdXDp0cmFuc2xhdGUteC0xW2RhdGEtc2lkZT1yaWdodF17LS10dy10cmFuc2xhdGUteDp2YXIoLS1zcGFjaW5nKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPXJpZ2h0XF1cOnNsaWRlLWluLWZyb20tbGVmdC0yW2RhdGEtc2lkZT1yaWdodF17LS10dy1lbnRlci10cmFuc2xhdGUteDpjYWxjKDIqdmFyKC0tc3BhY2luZykqLTEpfS5kYXRhLVxbc2lkZVw9dG9wXF1cOi10cmFuc2xhdGUteS0xW2RhdGEtc2lkZT10b3Bdey0tdHctdHJhbnNsYXRlLXk6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPXRvcFxdXDpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yW2RhdGEtc2lkZT10b3Bdey0tdHctZW50ZXItdHJhbnNsYXRlLXk6Y2FsYygyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW3Nsb3RcPWNoZWNrYm94LWdyb3VwXF1cOmdhcC0zW2RhdGEtc2xvdD1jaGVja2JveC1ncm91cF17Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6YmctYmFja2dyb3VuZFtkYXRhLXN0YXRlPWFjdGl2ZV17YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYmFja2dyb3VuZCkpfS5kYXRhLVxbc3RhdGVcPWFjdGl2ZVxdXDp0ZXh0LWZvcmVncm91bmRbZGF0YS1zdGF0ZT1hY3RpdmVde2NvbG9yOmhzbCh2YXIoLS1mb3JlZ3JvdW5kKSl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOnNoYWRvdy1zbVtkYXRhLXN0YXRlPWFjdGl2ZV17LS10dy1zaGFkb3c6MCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksIDAgMXB4IDJweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOnRyYW5zbGF0ZS14LTRbZGF0YS1zdGF0ZT1jaGVja2VkXXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykgKiA0KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXByaW1hcnlbZGF0YS1zdGF0ZT1jaGVja2VkXXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9LmRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFtkYXRhLXN0YXRlPWNoZWNrZWRde2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5LWZvcmVncm91bmQpKX0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1hY2NvcmRpb24tdXBbZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbjphY2NvcmRpb24tdXAgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4ycykpdmFyKC0tdHctZWFzZSxlYXNlLW91dCl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmFuaW1hdGUtb3V0W2RhdGEtc3RhdGU9Y2xvc2VkXXthbmltYXRpb246ZXhpdCB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjE1cykpdmFyKC0tdHctZWFzZSxlYXNlKXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6ZHVyYXRpb24tMzAwW2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWR1cmF0aW9uOi4zczt0cmFuc2l0aW9uLWR1cmF0aW9uOi4zc30uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6ZmFkZS1vdXQtMFtkYXRhLXN0YXRlPWNsb3NlZF17LS10dy1leGl0LW9wYWNpdHk6MH0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6ZmFkZS1vdXQtODBbZGF0YS1zdGF0ZT1jbG9zZWRdey0tdHctZXhpdC1vcGFjaXR5Oi44fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDp6b29tLW91dC05NVtkYXRhLXN0YXRlPWNsb3NlZF17LS10dy1leGl0LXNjYWxlOi45NX0uZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6c2xpZGUtb3V0LXRvLWJvdHRvbVtkYXRhLXN0YXRlPWNsb3NlZF17LS10dy1leGl0LXRyYW5zbGF0ZS15OjEwMCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by1sZWZ0W2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtdHJhbnNsYXRlLXg6LTEwMCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by1sZWZ0LTFcLzJbZGF0YS1zdGF0ZT1jbG9zZWRdey0tdHctZXhpdC10cmFuc2xhdGUteDogLTUwJSB9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by1yaWdodFtkYXRhLXN0YXRlPWNsb3NlZF17LS10dy1leGl0LXRyYW5zbGF0ZS14OjEwMCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by1yaWdodC1mdWxsW2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtdHJhbnNsYXRlLXg6IDEwMCUgfS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDpzbGlkZS1vdXQtdG8tdG9wW2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtdHJhbnNsYXRlLXk6LTEwMCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by10b3AtXFs0OFwlXF1bZGF0YS1zdGF0ZT1jbG9zZWRdey0tdHctZXhpdC10cmFuc2xhdGUteTogLTQ4JSB9LmRhdGEtXFtzdGF0ZVw9aGlkZGVuXF1cOmFuaW1hdGUtb3V0W2RhdGEtc3RhdGU9aGlkZGVuXXthbmltYXRpb246ZXhpdCB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjE1cykpdmFyKC0tdHctZWFzZSxlYXNlKXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1cW3N0YXRlXD1oaWRkZW5cXVw6ZmFkZS1vdXRbZGF0YS1zdGF0ZT1oaWRkZW5dey0tdHctZXhpdC1vcGFjaXR5OjB9LmRhdGEtXFtzdGF0ZVw9b25cXVw6YmctYWNjZW50W2RhdGEtc3RhdGU9b25de2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfS5kYXRhLVxbc3RhdGVcPW9uXF1cOnRleHQtYWNjZW50LWZvcmVncm91bmRbZGF0YS1zdGF0ZT1vbl17Y29sb3I6aHNsKHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKSl9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLWFjY29yZGlvbi1kb3duW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uOmFjY29yZGlvbi1kb3duIHZhcigtLXR3LWFuaW1hdGlvbi1kdXJhdGlvbix2YXIoLS10dy1kdXJhdGlvbiwuMnMpKXZhcigtLXR3LWVhc2UsZWFzZS1vdXQpdmFyKC0tdHctYW5pbWF0aW9uLWRlbGF5LDBzKXZhcigtLXR3LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsMSl2YXIoLS10dy1hbmltYXRpb24tZGlyZWN0aW9uLG5vcm1hbCl2YXIoLS10dy1hbmltYXRpb24tZmlsbC1tb2RlLG5vbmUpfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YW5pbWF0ZS1pbltkYXRhLXN0YXRlPW9wZW5de2FuaW1hdGlvbjplbnRlciB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjE1cykpdmFyKC0tdHctZWFzZSxlYXNlKXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJnLWFjY2VudFtkYXRhLXN0YXRlPW9wZW5dLC5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmctYWNjZW50XC81MFtkYXRhLXN0YXRlPW9wZW5de2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZy1hY2NlbnRcLzUwW2RhdGEtc3RhdGU9b3Blbl17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLWFjY2VudCkpIDUwJSx0cmFuc3BhcmVudCl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6Ymctc2Vjb25kYXJ5W2RhdGEtc3RhdGU9b3Blbl17YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5KSl9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kW2RhdGEtc3RhdGU9b3Blbl17Y29sb3I6aHNsKHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKSl9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDp0ZXh0LW11dGVkLWZvcmVncm91bmRbZGF0YS1zdGF0ZT1vcGVuXXtjb2xvcjpoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6b3BhY2l0eS0xMDBbZGF0YS1zdGF0ZT1vcGVuXXtvcGFjaXR5OjF9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpkdXJhdGlvbi01MDBbZGF0YS1zdGF0ZT1vcGVuXXstLXR3LWR1cmF0aW9uOi41czt0cmFuc2l0aW9uLWR1cmF0aW9uOi41c30uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmZhZGUtaW4tMFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItb3BhY2l0eTowfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6em9vbS1pbi05MFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItc2NhbGU6Ljl9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDp6b29tLWluLTk1W2RhdGEtc3RhdGU9b3Blbl17LS10dy1lbnRlci1zY2FsZTouOTV9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpzbGlkZS1pbi1mcm9tLWJvdHRvbVtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXk6MTAwJX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnNsaWRlLWluLWZyb20tbGVmdFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXg6LTEwMCV9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpzbGlkZS1pbi1mcm9tLWxlZnQtMVwvMltkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXg6IC01MCUgfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6c2xpZGUtaW4tZnJvbS1yaWdodFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXg6MTAwJX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnNsaWRlLWluLWZyb20tdG9wW2RhdGEtc3RhdGU9b3Blbl17LS10dy1lbnRlci10cmFuc2xhdGUteTotMTAwJX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnNsaWRlLWluLWZyb20tdG9wLVxbNDhcJVxdW2RhdGEtc3RhdGU9b3Blbl17LS10dy1lbnRlci10cmFuc2xhdGUteTogLTQ4JSB9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpzbGlkZS1pbi1mcm9tLXRvcC1mdWxsW2RhdGEtc3RhdGU9b3Blbl17LS10dy1lbnRlci10cmFuc2xhdGUteTogLTEwMCUgfUBtZWRpYShob3Zlcjpob3Zlcil7LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpob3Zlclw6YmctYWNjZW50W2RhdGEtc3RhdGU9b3Blbl06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSl9fS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6Zm9jdXNcOmJnLWFjY2VudFtkYXRhLXN0YXRlPW9wZW5dOmZvY3Vze2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfS5kYXRhLVxbc3RhdGVcPXNlbGVjdGVkXF1cOmJnLW11dGVkW2RhdGEtc3RhdGU9c2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLW11dGVkKSl9LmRhdGEtXFtzdGF0ZVw9dW5jaGVja2VkXF1cOnRyYW5zbGF0ZS14LTBbZGF0YS1zdGF0ZT11bmNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6MHB4O3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3RhdGVcPXVuY2hlY2tlZFxdXDpiZy1pbnB1dFtkYXRhLXN0YXRlPXVuY2hlY2tlZF17YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0taW5wdXQpKX0uZGF0YS1cW3N0YXRlXD12aXNpYmxlXF1cOmFuaW1hdGUtaW5bZGF0YS1zdGF0ZT12aXNpYmxlXXthbmltYXRpb246ZW50ZXIgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4xNXMpKXZhcigtLXR3LWVhc2UsZWFzZSl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtXFtzdGF0ZVw9dmlzaWJsZVxdXDpmYWRlLWluW2RhdGEtc3RhdGU9dmlzaWJsZV17LS10dy1lbnRlci1vcGFjaXR5OjB9LmRhdGEtXFtzd2lwZVw9Y2FuY2VsXF1cOnRyYW5zbGF0ZS14LTBbZGF0YS1zd2lwZT1jYW5jZWxdey0tdHctdHJhbnNsYXRlLXg6MHB4O3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3dpcGVcPWVuZFxdXDp0cmFuc2xhdGUteC1cW3ZhclwoLS1yYWRpeC10b2FzdC1zd2lwZS1lbmQteFwpXF1bZGF0YS1zd2lwZT1lbmRdey0tdHctdHJhbnNsYXRlLXg6dmFyKC0tcmFkaXgtdG9hc3Qtc3dpcGUtZW5kLXgpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3dpcGVcPWVuZFxdXDphbmltYXRlLW91dFtkYXRhLXN3aXBlPWVuZF17YW5pbWF0aW9uOmV4aXQgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4xNXMpKXZhcigtLXR3LWVhc2UsZWFzZSl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtXFtzd2lwZVw9bW92ZVxdXDp0cmFuc2xhdGUteC1cW3ZhclwoLS1yYWRpeC10b2FzdC1zd2lwZS1tb3ZlLXhcKVxdW2RhdGEtc3dpcGU9bW92ZV17LS10dy10cmFuc2xhdGUteDp2YXIoLS1yYWRpeC10b2FzdC1zd2lwZS1tb3ZlLXgpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc3dpcGVcPW1vdmVcXVw6dHJhbnNpdGlvbi1ub25lW2RhdGEtc3dpcGU9bW92ZV17dHJhbnNpdGlvbi1wcm9wZXJ0eTpub25lfS5kYXRhLVxbdmFyaWFudFw9bGFiZWxcXVw6dGV4dC1zbVtkYXRhLXZhcmlhbnQ9bGFiZWxde2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9LmRhdGEtXFt2YXJpYW50XD1sZWdlbmRcXVw6dGV4dC1iYXNlW2RhdGEtdmFyaWFudD1sZWdlbmRde2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LWJhc2UpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1iYXNlLS1saW5lLWhlaWdodCkpfS5udGgtbGFzdC0yXDotbXQtMTpudGgtbGFzdC1jaGlsZCgyKXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAtMSl9QG1lZGlhKG1pbi13aWR0aDo0MHJlbSl7LnNtXDp0b3AtYXV0b3t0b3A6YXV0b30uc21cOnJpZ2h0LTB7cmlnaHQ6MH0uc21cOmJvdHRvbS0we2JvdHRvbTowfS5zbVw6bXQtMHttYXJnaW4tdG9wOjB9LnNtXDpibG9ja3tkaXNwbGF5OmJsb2NrfS5zbVw6ZmxleHtkaXNwbGF5OmZsZXh9LnNtXDptYXgtdy1tZHttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLW1kKX0uc21cOm1heC13LXNte21heC13aWR0aDp2YXIoLS1jb250YWluZXItc20pfS5zbVw6ZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5zbVw6ZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5zbVw6anVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5zbVw6Z2FwLTB7Z2FwOjB9LnNtXDpnYXAtMlwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9OndoZXJlKC5zbVw6c3BhY2UteC0yPjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTowO21hcmdpbi1pbmxpbmUtc3RhcnQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogMikgKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTttYXJnaW4taW5saW5lLWVuZDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiAyKSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKX0uc21cOnJvdW5kZWQtMnhse2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLTJ4bCl9LnNtXDpyb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKX0uc21cOnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpzbVw6c2xpZGUtaW4tZnJvbS1ib3R0b20tZnVsbFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXk6IDEwMCUgfX1AbWVkaWEobWluLXdpZHRoOjQ4cmVtKXsubWRcOmFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS5tZFw6Y29sLXNwYW4tMXtncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxfS5tZFw6Y29sLXNwYW4tMntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfS5tZFw6LW14LTh7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogLTgpfS5tZFw6LW10LTh7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTgpfS5tZFw6YmxvY2t7ZGlzcGxheTpibG9ja30ubWRcOmZsZXh7ZGlzcGxheTpmbGV4fS5tZFw6aGlkZGVue2Rpc3BsYXk6bm9uZX0ubWRcOnctXFt2YXJcKC0tcmFkaXgtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LXdpZHRoXClcXXt3aWR0aDp2YXIoLS1yYWRpeC1uYXZpZ2F0aW9uLW1lbnUtdmlld3BvcnQtd2lkdGgpfS5tZFw6dy1hdXRve3dpZHRoOmF1dG99Lm1kXDptYXgtdy1cWzQyMHB4XF17bWF4LXdpZHRoOjQyMHB4fS5tZFw6ZmxleC1ub25le2ZsZXg6bm9uZX0ubWRcOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0ubWRcOmdyaWQtY29scy00e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCxtaW5tYXgoMCwxZnIpKX0ubWRcOmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30ubWRcOml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lm1kXDppdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lm1kXDpwLTh7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9Lm1kXDpwLTEye3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEyKX0ubWRcOnB4LTh7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfS5tZFw6cGItMHtwYWRkaW5nLWJvdHRvbTowfS5tZFw6dGV4dC1zbXtmb250LXNpemU6dmFyKC0tdGV4dC1zbSk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXNtLS1saW5lLWhlaWdodCkpfS5tZFw6b3BhY2l0eS0we29wYWNpdHk6MH0ubWRcOnBlZXItZGF0YS1cW3ZhcmlhbnRcPWluc2V0XF1cOm0tMjppcyg6d2hlcmUoLnBlZXIpW2RhdGEtdmFyaWFudD1pbnNldF1+Kil7bWFyZ2luOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ubWRcOnBlZXItZGF0YS1cW3ZhcmlhbnRcPWluc2V0XF1cOm1sLTA6aXMoOndoZXJlKC5wZWVyKVtkYXRhLXZhcmlhbnQ9aW5zZXRdfiope21hcmdpbi1sZWZ0OjB9Lm1kXDpwZWVyLWRhdGEtXFt2YXJpYW50XD1pbnNldFxdXDpyb3VuZGVkLXhsOmlzKDp3aGVyZSgucGVlcilbZGF0YS12YXJpYW50PWluc2V0XX4qKXtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCl9Lm1kXDpwZWVyLWRhdGEtXFt2YXJpYW50XD1pbnNldFxdXDpzaGFkb3ctc206aXMoOndoZXJlKC5wZWVyKVtkYXRhLXZhcmlhbnQ9aW5zZXRdfiopey0tdHctc2hhZG93OjAgMXB4IDNweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLCAwIDFweCAycHggLTFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9Lm1kXDpwZWVyLWRhdGEtXFt2YXJpYW50XD1pbnNldFxdXDpwZWVyLWRhdGEtXFtzdGF0ZVw9Y29sbGFwc2VkXF1cOm1sLTI6aXMoOndoZXJlKC5wZWVyKVtkYXRhLXZhcmlhbnQ9aW5zZXRdfiopOmlzKDp3aGVyZSgucGVlcilbZGF0YS1zdGF0ZT1jb2xsYXBzZWRdfiope21hcmdpbi1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ubWRcOmFmdGVyXDpoaWRkZW46YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtkaXNwbGF5Om5vbmV9fUBtZWRpYShtaW4td2lkdGg6NjRyZW0pey5sZ1w6Y29sLXNwYW4tMntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfS5sZ1w6Z3JpZC1jb2xzLTN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpfX1AY29udGFpbmVyIGZpZWxkLWdyb3VwIChtaW4td2lkdGg6MjhyZW0pey5cQG1kXC9maWVsZC1ncm91cFw6ZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5cQG1kXC9maWVsZC1ncm91cFw6aXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uXEBtZFwvZmllbGQtZ3JvdXBcOmhhcy1cW1w+XFtkYXRhLXNsb3RcPWZpZWxkLWNvbnRlbnRcXVxdXDppdGVtcy1zdGFydDpoYXMoPltkYXRhLXNsb3Q9ZmllbGQtY29udGVudF0pe2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9fS5kYXJrXDpib3JkZXItZGVzdHJ1Y3RpdmU6aXMoLmRhcmsgKil7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfS5kYXJrXDpiZy1pbnB1dFwvMzA6aXMoLmRhcmsgKil7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0taW5wdXQpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXJrXDpiZy1pbnB1dFwvMzA6aXMoLmRhcmsgKil7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLWlucHV0KSkgMzAlLHRyYW5zcGFyZW50KX19LmRhcmtcOmJnLXNlY29uZGFyeTppcyguZGFyayAqKXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1zZWNvbmRhcnkpKX0uZGFya1w6YmctdHJhbnNwYXJlbnQ6aXMoLmRhcmsgKil7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZGFya1w6dGV4dC1hbWJlci00MDA6aXMoLmRhcmsgKil7Y29sb3I6dmFyKC0tY29sb3ItYW1iZXItNDAwKX0uZGFya1w6dGV4dC1ncmVlbi00MDA6aXMoLmRhcmsgKil7Y29sb3I6dmFyKC0tY29sb3ItZ3JlZW4tNDAwKX0uZGFya1w6aGFzLWRhdGEtXFtzdGF0ZVw9Y2hlY2tlZFxdXDpiZy1wcmltYXJ5XC8xMDppcyguZGFyayAqKTpoYXMoW2RhdGEtc3RhdGU9Y2hlY2tlZF0pe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5kYXJrXDpoYXMtZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXByaW1hcnlcLzEwOmlzKC5kYXJrICopOmhhcyhbZGF0YS1zdGF0ZT1jaGVja2VkXSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsaHNsKHZhcigtLXByaW1hcnkpKSAxMCUsdHJhbnNwYXJlbnQpfX0uZGFya1w6aGFzLVxbXFtkYXRhLXNsb3RcXVxbYXJpYS1pbnZhbGlkXD10cnVlXF1cXVw6cmluZy1kZXN0cnVjdGl2ZVwvNDA6aXMoLmRhcmsgKik6aGFzKFtkYXRhLXNsb3RdW2FyaWEtaW52YWxpZD10cnVlXSl7LS10dy1yaW5nLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmRhcmtcOmhhcy1cW1xbZGF0YS1zbG90XF1cW2FyaWEtaW52YWxpZFw9dHJ1ZVxdXF1cOnJpbmctZGVzdHJ1Y3RpdmVcLzQwOmlzKC5kYXJrICopOmhhcyhbZGF0YS1zbG90XVthcmlhLWludmFsaWQ9dHJ1ZV0pey0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIGhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpIDQwJSwgdHJhbnNwYXJlbnQpfX0uXFtcJl9cLnJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2tfdGV4dFxdXDpmaWxsLW11dGVkLWZvcmVncm91bmQgLnJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2sgdGV4dHtmaWxsOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LlxbXCZfXC5yZWNoYXJ0cy1jYXJ0ZXNpYW4tZ3JpZF9saW5lXFtzdHJva2VcPVwnXCNjY2NcJ1xdXF1cOnN0cm9rZS1ib3JkZXJcLzUwIC5yZWNoYXJ0cy1jYXJ0ZXNpYW4tZ3JpZCBsaW5lW3N0cm9rZT0iI2NjYyJde3N0cm9rZTpoc2wodmFyKC0tYm9yZGVyKSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuXFtcJl9cLnJlY2hhcnRzLWNhcnRlc2lhbi1ncmlkX2xpbmVcW3N0cm9rZVw9XCdcI2NjY1wnXF1cXVw6c3Ryb2tlLWJvcmRlclwvNTAgLnJlY2hhcnRzLWNhcnRlc2lhbi1ncmlkIGxpbmVbc3Ryb2tlPSIjY2NjIl17c3Ryb2tlOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tYm9yZGVyKSkgNTAlLHRyYW5zcGFyZW50KX19LlxbXCZfXC5yZWNoYXJ0cy1jdXJ2ZVwucmVjaGFydHMtdG9vbHRpcC1jdXJzb3JcXVw6c3Ryb2tlLWJvcmRlciAucmVjaGFydHMtY3VydmUucmVjaGFydHMtdG9vbHRpcC1jdXJzb3J7c3Ryb2tlOmhzbCh2YXIoLS1ib3JkZXIpKX0uXFtcJl9cLnJlY2hhcnRzLWRvdFxbc3Ryb2tlXD1cJ1wjZmZmXCdcXVxdXDpzdHJva2UtdHJhbnNwYXJlbnQgLnJlY2hhcnRzLWRvdFtzdHJva2U9IiNmZmYiXXtzdHJva2U6IzAwMDB9LlxbXCZfXC5yZWNoYXJ0cy1sYXllclxdXDpvdXRsaW5lLW5vbmUgLnJlY2hhcnRzLWxheWVyey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uXFtcJl9cLnJlY2hhcnRzLXBvbGFyLWdyaWRfXFtzdHJva2VcPVwnXCNjY2NcJ1xdXF1cOnN0cm9rZS1ib3JkZXIgLnJlY2hhcnRzLXBvbGFyLWdyaWQgW3N0cm9rZT0iI2NjYyJde3N0cm9rZTpoc2wodmFyKC0tYm9yZGVyKSl9LlxbXCZfXC5yZWNoYXJ0cy1yYWRpYWwtYmFyLWJhY2tncm91bmQtc2VjdG9yXF1cOmZpbGwtbXV0ZWQgLnJlY2hhcnRzLXJhZGlhbC1iYXItYmFja2dyb3VuZC1zZWN0b3IsLlxbXCZfXC5yZWNoYXJ0cy1yZWN0YW5nbGVcLnJlY2hhcnRzLXRvb2x0aXAtY3Vyc29yXF1cOmZpbGwtbXV0ZWQgLnJlY2hhcnRzLXJlY3RhbmdsZS5yZWNoYXJ0cy10b29sdGlwLWN1cnNvcntmaWxsOmhzbCh2YXIoLS1tdXRlZCkpfS5cW1wmX1wucmVjaGFydHMtcmVmZXJlbmNlLWxpbmVfXFtzdHJva2VcPVwnXCNjY2NcJ1xdXF1cOnN0cm9rZS1ib3JkZXIgLnJlY2hhcnRzLXJlZmVyZW5jZS1saW5lIFtzdHJva2U9IiNjY2MiXXtzdHJva2U6aHNsKHZhcigtLWJvcmRlcikpfS5cW1wmX1wucmVjaGFydHMtc2VjdG9yXF1cOm91dGxpbmUtbm9uZSAucmVjaGFydHMtc2VjdG9yey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uXFtcJl9cLnJlY2hhcnRzLXNlY3Rvclxbc3Ryb2tlXD1cJ1wjZmZmXCdcXVxdXDpzdHJva2UtdHJhbnNwYXJlbnQgLnJlY2hhcnRzLXNlY3RvcltzdHJva2U9IiNmZmYiXXtzdHJva2U6IzAwMDB9LlxbXCZfXC5yZWNoYXJ0cy1zdXJmYWNlXF1cOm91dGxpbmUtbm9uZSAucmVjaGFydHMtc3VyZmFjZXstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LlxbXCZfXFtjbWRrLWdyb3VwLWhlYWRpbmdcXVxdXDpweC0yIFtjbWRrLWdyb3VwLWhlYWRpbmdde3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uXFtcJl9cW2NtZGstZ3JvdXAtaGVhZGluZ1xdXF1cOnB5LTFcLjUgW2NtZGstZ3JvdXAtaGVhZGluZ117cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0uXFtcJl9cW2NtZGstZ3JvdXAtaGVhZGluZ1xdXF1cOnRleHQteHMgW2NtZGstZ3JvdXAtaGVhZGluZ117Zm9udC1zaXplOnZhcigtLXRleHQteHMpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14cy0tbGluZS1oZWlnaHQpKX0uXFtcJl9cW2NtZGstZ3JvdXAtaGVhZGluZ1xdXF1cOmZvbnQtbWVkaXVtIFtjbWRrLWdyb3VwLWhlYWRpbmddey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pfS5cW1wmX1xbY21kay1ncm91cC1oZWFkaW5nXF1cXVw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIFtjbWRrLWdyb3VwLWhlYWRpbmdde2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LlxbXCZfXFtjbWRrLWdyb3VwXF1cXVw6cHgtMiBbY21kay1ncm91cF17cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5cW1wmX1xbY21kay1ncm91cFxdXDpub3RcKFxbaGlkZGVuXF1cKV9cflxbY21kay1ncm91cFxdXF1cOnB0LTAgW2NtZGstZ3JvdXBdOm5vdChbaGlkZGVuXSl+W2NtZGstZ3JvdXBde3BhZGRpbmctdG9wOjB9LlxbXCZfXFtjbWRrLWlucHV0LXdyYXBwZXJcXV9zdmdcXVw6aC01IFtjbWRrLWlucHV0LXdyYXBwZXJdIHN2Z3toZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS5cW1wmX1xbY21kay1pbnB1dC13cmFwcGVyXF1fc3ZnXF1cOnctNSBbY21kay1pbnB1dC13cmFwcGVyXSBzdmd7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS5cW1wmX1xbY21kay1pbnB1dFxdXF1cOmgtMTIgW2NtZGstaW5wdXRde2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTIpfS5cW1wmX1xbY21kay1pdGVtXF1cXVw6cHgtMiBbY21kay1pdGVtXXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LlxbXCZfXFtjbWRrLWl0ZW1cXVxdXDpweS0zIFtjbWRrLWl0ZW1de3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5cW1wmX1xbY21kay1pdGVtXF1fc3ZnXF1cOmgtNSBbY21kay1pdGVtXSBzdmd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0uXFtcJl9cW2NtZGstaXRlbVxdX3N2Z1xdXDp3LTUgW2NtZGstaXRlbV0gc3Zne3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0uXFtcJl9pbWdcXVw6c2l6ZS1mdWxsIGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5cW1wmX2ltZ1xdXDpvYmplY3QtY292ZXIgaW1ne29iamVjdC1maXQ6Y292ZXJ9LlxbXCZfcFxdXDpsZWFkaW5nLXJlbGF4ZWQgcHstLXR3LWxlYWRpbmc6dmFyKC0tbGVhZGluZy1yZWxheGVkKTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXJlbGF4ZWQpfS5cW1wmX3N2Z1xdXDpwb2ludGVyLWV2ZW50cy1ub25lIHN2Z3twb2ludGVyLWV2ZW50czpub25lfS5cW1wmX3N2Z1xdXDpzaXplLTQgc3Zne3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5cW1wmX3N2Z1xdXDpzaHJpbmstMCBzdmd7ZmxleC1zaHJpbms6MH0uXFtcJl9zdmdcOm5vdFwoXFtjbGFzc1wqXD1cJ3NpemUtXCdcXVwpXF1cOnNpemUtMyBzdmc6bm90KFtjbGFzcyo9c2l6ZS1dKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uXFtcJl9zdmdcOm5vdFwoXFtjbGFzc1wqXD1cJ3NpemUtXCdcXVwpXF1cOnNpemUtNCBzdmc6bm90KFtjbGFzcyo9c2l6ZS1dKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uXFtcJl9zdmdcOm5vdFwoXFtjbGFzc1wqXD1cJ3NpemUtXCdcXVwpXF1cOnNpemUtNiBzdmc6bm90KFtjbGFzcyo9c2l6ZS1dKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNik7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0uXFtcJl90clxdXDpib3JkZXItYiB0cntib3JkZXItYm90dG9tLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LlxbXCZfdHJcOmxhc3QtY2hpbGRcXVw6Ym9yZGVyLTAgdHI6bGFzdC1jaGlsZHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uXFtcJlwrXFtkYXRhLXNsb3RcPWl0ZW0tY29udGVudFxdXF1cOmZsZXgtbm9uZStbZGF0YS1zbG90PWl0ZW0tY29udGVudF17ZmxleDpub25lfS5cW1wmXDpmaXJzdC1jaGlsZFxbZGF0YS1zZWxlY3RlZFw9dHJ1ZVxdX2J1dHRvblxdXDpyb3VuZGVkLWwtbWQ6Zmlyc3QtY2hpbGRbZGF0YS1zZWxlY3RlZD10cnVlXSBidXR0b257Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KX0uXFtcJlw6aGFzXChcW3JvbGVcPWNoZWNrYm94XF1cKVxdXDpwci0wOmhhcyhbcm9sZT1jaGVja2JveF0pe3BhZGRpbmctcmlnaHQ6MH0uXFtcLmJvcmRlci1iXF1cOnBiLTMuYm9yZGVyLWJ7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5cW1wuYm9yZGVyLXRcXVw6cHQtMy5ib3JkZXItdHtwYWRkaW5nLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9OmlzKC5ydGxcOlwqXCpcOlxbXC5yZHAtYnV0dG9uXFxfbmV4dFw+c3ZnXF1cOnJvdGF0ZS0xODA6d2hlcmUoOmRpcihydGwpLFtkaXI9cnRsXSxbZGlyPXJ0bF0gKikgKik6aXMoLnJkcC1idXR0b25fbmV4dD5zdmcpLDppcygucnRsXDpcKlwqXDpcW1wucmRwLWJ1dHRvblxcX3ByZXZpb3VzXD5zdmdcXVw6cm90YXRlLTE4MDp3aGVyZSg6ZGlyKHJ0bCksW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKSAqKTppcygucmRwLWJ1dHRvbl9wcmV2aW91cz5zdmcpe3JvdGF0ZToxODBkZWd9LlxbYVxdXDp0cmFuc2l0aW9uLWNvbG9yczppcyhhKXt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9QG1lZGlhKGhvdmVyOmhvdmVyKXsuXFthXF1cOmhvdmVyXDpiZy1hY2NlbnRcLzUwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LlxbYVxdXDpob3Zlclw6YmctYWNjZW50XC81MDppcyhhKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tYWNjZW50KSkgNTAlLHRyYW5zcGFyZW50KX19fS5cW1wmXDpsYXN0LWNoaWxkXFtkYXRhLXNlbGVjdGVkXD10cnVlXF1fYnV0dG9uXF1cOnJvdW5kZWQtci1tZDpsYXN0LWNoaWxkW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV0gYnV0dG9ue2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KX0uXFtcJlw+XCpcXVw6dy1mdWxsPip7d2lkdGg6MTAwJX0uXFtcJlw+XCpcXVw6Zm9jdXMtdmlzaWJsZVw6cmVsYXRpdmU+OmZvY3VzLXZpc2libGV7cG9zaXRpb246cmVsYXRpdmV9LlxbXCZcPlwqXF1cOmZvY3VzLXZpc2libGVcOnotMTA+OmZvY3VzLXZpc2libGV7ei1pbmRleDoxMH1AY29udGFpbmVyIGZpZWxkLWdyb3VwIChtaW4td2lkdGg6MjhyZW0pey5cQG1kXC9maWVsZC1ncm91cFw6XFtcJlw+XCpcXVw6dy1hdXRvPip7d2lkdGg6YXV0b319LlxbXCZcPlwqXDpub3RcKFw6Zmlyc3QtY2hpbGRcKVxdXDpyb3VuZGVkLXQtbm9uZT46bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LlxbXCZcPlwqXDpub3RcKFw6Zmlyc3QtY2hpbGRcKVxdXDpyb3VuZGVkLWwtbm9uZT46bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uXFtcJlw+XCpcOm5vdFwoXDpmaXJzdC1jaGlsZFwpXF1cOmJvcmRlci10LTA+Om5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3Atc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItdG9wLXdpZHRoOjB9LlxbXCZcPlwqXDpub3RcKFw6Zmlyc3QtY2hpbGRcKVxdXDpib3JkZXItbC0wPjpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItbGVmdC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1sZWZ0LXdpZHRoOjB9LlxbXCZcPlwqXDpub3RcKFw6bGFzdC1jaGlsZFwpXF1cOnJvdW5kZWQtci1ub25lPjpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uXFtcJlw+XCpcOm5vdFwoXDpsYXN0LWNoaWxkXClcXVw6cm91bmRlZC1iLW5vbmU+Om5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LlxbXCZcPlwuc3Itb25seVxdXDp3LWF1dG8+LnNyLW9ubHl7d2lkdGg6YXV0b30uXFtcJlw+XFtkYXRhLXNsb3RcPWZpZWxkLWdyb3VwXF1cXVw6Z2FwLTQ+W2RhdGEtc2xvdD1maWVsZC1ncm91cF17Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uXFtcJlw+XFtkYXRhLXNsb3RcPWZpZWxkLWxhYmVsXF1cXVw6ZmxleC1hdXRvPltkYXRhLXNsb3Q9ZmllbGQtbGFiZWxde2ZsZXg6YXV0b31AY29udGFpbmVyIGZpZWxkLWdyb3VwIChtaW4td2lkdGg6MjhyZW0pey5cQG1kXC9maWVsZC1ncm91cFw6XFtcJlw+XFtkYXRhLXNsb3RcPWZpZWxkLWxhYmVsXF1cXVw6ZmxleC1hdXRvPltkYXRhLXNsb3Q9ZmllbGQtbGFiZWxde2ZsZXg6YXV0b319LlxbXCZcPlxbZGF0YS1zbG90XD1maWVsZFxdXF1cOnAtND5bZGF0YS1zbG90PWZpZWxkXXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uaGFzLVxbc2VsZWN0XFthcmlhLWhpZGRlblw9dHJ1ZVxdXDpsYXN0LWNoaWxkXF1cOlxbXCZcPlxbZGF0YS1zbG90XD1zZWxlY3QtdHJpZ2dlclxdXDpsYXN0LW9mLXR5cGVcXVw6cm91bmRlZC1yLW1kOmhhcyg6aXMoc2VsZWN0W2FyaWEtaGlkZGVuPXRydWVdOmxhc3QtY2hpbGQpKT5bZGF0YS1zbG90PXNlbGVjdC10cmlnZ2VyXTpsYXN0LW9mLXR5cGV7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5cW1wmXD5cW2RhdGEtc2xvdFw9c2VsZWN0LXRyaWdnZXJcXVw6bm90XChcW2NsYXNzXCpcPVwndy1cJ1xdXClcXVw6dy1maXQ+W2RhdGEtc2xvdD1zZWxlY3QtdHJpZ2dlcl06bm90KFtjbGFzcyo9dy1dKXt3aWR0aDpmaXQtY29udGVudH0uXFtcJlw+XFtyb2xlXD1jaGVja2JveFxdXF1cOnRyYW5zbGF0ZS15LVxbMnB4XF0+W3JvbGU9Y2hlY2tib3hdey0tdHctdHJhbnNsYXRlLXk6MnB4O3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5oYXMtXFtcPlxbZGF0YS1zbG90XD1maWVsZC1jb250ZW50XF1cXVw6XFtcJlw+XFtyb2xlXD1jaGVja2JveFxdXCxcW3JvbGVcPXJhZGlvXF1cXVw6bXQtcHg6aGFzKD5bZGF0YS1zbG90PWZpZWxkLWNvbnRlbnRdKT5bcm9sZT1jaGVja2JveF0sLmhhcy1cW1w+XFtkYXRhLXNsb3RcPWZpZWxkLWNvbnRlbnRcXVxdXDpcW1wmXD5cW3JvbGVcPWNoZWNrYm94XF1cLFxbcm9sZVw9cmFkaW9cXVxdXDptdC1weDpoYXMoPltkYXRhLXNsb3Q9ZmllbGQtY29udGVudF0pIFtyb2xlPXJhZGlvXXttYXJnaW4tdG9wOjFweH1AY29udGFpbmVyIGZpZWxkLWdyb3VwIChtaW4td2lkdGg6MjhyZW0pey5cQG1kXC9maWVsZC1ncm91cFw6aGFzLVxbXD5cW2RhdGEtc2xvdFw9ZmllbGQtY29udGVudFxdXF1cOlxbXCZcPlxbcm9sZVw9Y2hlY2tib3hcXVwsXFtyb2xlXD1yYWRpb1xdXF1cOm10LXB4Omhhcyg+W2RhdGEtc2xvdD1maWVsZC1jb250ZW50XSk+W3JvbGU9Y2hlY2tib3hdLC5cQG1kXC9maWVsZC1ncm91cFw6aGFzLVxbXD5cW2RhdGEtc2xvdFw9ZmllbGQtY29udGVudFxdXF1cOlxbXCZcPlxbcm9sZVw9Y2hlY2tib3hcXVwsXFtyb2xlXD1yYWRpb1xdXF1cOm10LXB4Omhhcyg+W2RhdGEtc2xvdD1maWVsZC1jb250ZW50XSkgW3JvbGU9cmFkaW9de21hcmdpbi10b3A6MXB4fX0uXFtcJlw+YVxdXDp1bmRlcmxpbmU+YXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LlxbXCZcPmFcXVw6dW5kZXJsaW5lLW9mZnNldC00PmF7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjRweH0uXFtcJlw+YVw6aG92ZXJcXVw6dGV4dC1wcmltYXJ5PmE6aG92ZXJ7Y29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX0uXFtcJlw+YnV0dG9uXF1cOmhpZGRlbj5idXR0b257ZGlzcGxheTpub25lfS5cW1wmXD5pbnB1dFxdXDpmbGV4LTE+aW5wdXR7ZmxleDoxfS5oYXMtXFtcPlxbZGF0YS1hbGlnblw9YmxvY2stZW5kXF1cXVw6XFtcJlw+aW5wdXRcXVw6cHQtMzpoYXMoPltkYXRhLWFsaWduPWJsb2NrLWVuZF0pPmlucHV0e3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uaGFzLVxbXD5cW2RhdGEtYWxpZ25cPWJsb2NrLXN0YXJ0XF1cXVw6XFtcJlw+aW5wdXRcXVw6cGItMzpoYXMoPltkYXRhLWFsaWduPWJsb2NrLXN0YXJ0XSk+aW5wdXR7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5oYXMtXFtcPlxbZGF0YS1hbGlnblw9aW5saW5lLWVuZFxdXF1cOlxbXCZcPmlucHV0XF1cOnByLTI6aGFzKD5bZGF0YS1hbGlnbj1pbmxpbmUtZW5kXSk+aW5wdXR7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lmhhcy1cW1w+XFtkYXRhLWFsaWduXD1pbmxpbmUtc3RhcnRcXVxdXDpcW1wmXD5pbnB1dFxdXDpwbC0yOmhhcyg+W2RhdGEtYWxpZ249aW5saW5lLXN0YXJ0XSk+aW5wdXR7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uXFtcJlw+a2JkXF1cOnJvdW5kZWQtXFtjYWxjXCh2YXJcKC0tcmFkaXVzXCktNXB4XClcXT5rYmR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSA1cHgpfS5cW1wmXD5zcGFuXF1cOmxpbmUtY2xhbXAtMT5zcGFuey13ZWJraXQtbGluZS1jbGFtcDoxOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbn0uXFtcJlw+c3BhblxdXDp0ZXh0LXhzPnNwYW57Zm9udC1zaXplOnZhcigtLXRleHQteHMpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14cy0tbGluZS1oZWlnaHQpKX0uXFtcJlw+c3BhblxdXDpvcGFjaXR5LTcwPnNwYW57b3BhY2l0eTouN30uXFtcJlw+c3Bhblw6bGFzdC1jaGlsZFxdXDp0cnVuY2F0ZT5zcGFuOmxhc3QtY2hpbGR7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVufS5cW1wmXD5zdmdcXVw6YWJzb2x1dGU+c3Zne3Bvc2l0aW9uOmFic29sdXRlfS5cW1wmXD5zdmdcXVw6dG9wLTQ+c3Zne3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LlxbXCZcPnN2Z1xdXDpsZWZ0LTQ+c3Zne2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5cW1wmXD5zdmdcXVw6c2l6ZS0zXC41PnN2Z3t3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMy41KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSl9LlxbXCZcPnN2Z1xdXDpzaXplLTQ+c3Zne3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5cW1wmXD5zdmdcXVw6aC0yXC41PnN2Z3toZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LlxbXCZcPnN2Z1xdXDpoLTM+c3Zne2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LlxbXCZcPnN2Z1xdXDpoLTNcLjU+c3Zne2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMy41KX0uXFtcJlw+c3ZnXF1cOmgtND5zdmd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uXFtcJlw+c3ZnXF1cOnctMlwuNT5zdmd7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LlxbXCZcPnN2Z1xdXDp3LTM+c3Zne3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uXFtcJlw+c3ZnXF1cOnctM1wuNT5zdmd7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSl9LlxbXCZcPnN2Z1xdXDp3LTQ+c3Zne3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uXFtcJlw+c3ZnXF1cOnNocmluay0wPnN2Z3tmbGV4LXNocmluazowfS5cW1wmXD5zdmdcXVw6dGV4dC1kZXN0cnVjdGl2ZT5zdmd7Y29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlKSl9LlxbXCZcPnN2Z1xdXDp0ZXh0LWZvcmVncm91bmQ+c3Zne2NvbG9yOmhzbCh2YXIoLS1mb3JlZ3JvdW5kKSl9LlxbXCZcPnN2Z1xdXDp0ZXh0LW11dGVkLWZvcmVncm91bmQ+c3Zne2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LlxbXCZcPnN2Z1wrZGl2XF1cOnRyYW5zbGF0ZS15LVxbLTNweFxdPnN2ZytkaXZ7LS10dy10cmFuc2xhdGUteTotM3B4O3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5cW1wmXD5zdmdcOm5vdFwoXFtjbGFzc1wqXD1cJ3NpemUtXCdcXVwpXF1cOnNpemUtM1wuNT5zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMy41KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSl9LlxbXCZcPnN2Z1w6bm90XChcW2NsYXNzXCpcPVwnc2l6ZS1cJ1xdXClcXVw6c2l6ZS00PnN2Zzpub3QoW2NsYXNzKj1zaXplLV0pe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5cW1wmXD5zdmdcflwqXF1cOnBsLTc+c3Znfip7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiA3KX0uXFtcJlw+dHJcXVw6bGFzdFw6Ym9yZGVyLWItMD50cjpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjB9LlxbXCZcW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXD5kaXZcXVw6cm90YXRlLTkwW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXT5kaXZ7cm90YXRlOjkwZGVnfS5cW1wmXFtkYXRhLXN0YXRlXD1vcGVuXF1cPnN2Z1xdXDpyb3RhdGUtMTgwW2RhdGEtc3RhdGU9b3Blbl0+c3Zne3JvdGF0ZToxODBkZWd9W2RhdGEtc2lkZT1sZWZ0XVtkYXRhLWNvbGxhcHNpYmxlPW9mZmNhbnZhc10gLlxbXFtkYXRhLXNpZGVcPWxlZnRcXVxbZGF0YS1jb2xsYXBzaWJsZVw9b2ZmY2FudmFzXF1fXCZcXVw6LXJpZ2h0LTJ7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0yKX1bZGF0YS1zaWRlPWxlZnRdW2RhdGEtc3RhdGU9Y29sbGFwc2VkXSAuXFtcW2RhdGEtc2lkZVw9bGVmdFxdXFtkYXRhLXN0YXRlXD1jb2xsYXBzZWRcXV9cJlxdXDpjdXJzb3ItZS1yZXNpemV7Y3Vyc29yOmUtcmVzaXplfVtkYXRhLXNpZGU9cmlnaHRdW2RhdGEtY29sbGFwc2libGU9b2ZmY2FudmFzXSAuXFtcW2RhdGEtc2lkZVw9cmlnaHRcXVxbZGF0YS1jb2xsYXBzaWJsZVw9b2ZmY2FudmFzXF1fXCZcXVw6LWxlZnQtMntsZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAtMil9W2RhdGEtc2lkZT1yaWdodF1bZGF0YS1zdGF0ZT1jb2xsYXBzZWRdIC5cW1xbZGF0YS1zaWRlXD1yaWdodFxdXFtkYXRhLXN0YXRlXD1jb2xsYXBzZWRcXV9cJlxdXDpjdXJzb3Itdy1yZXNpemV7Y3Vyc29yOnctcmVzaXplfVtkYXRhLXNsb3Q9Y2FyZC1jb250ZW50XSAuXFtcW2RhdGEtc2xvdFw9Y2FyZC1jb250ZW50XF1fXCZcXVw6YmctdHJhbnNwYXJlbnQsW2RhdGEtc2xvdD1wb3BvdmVyLWNvbnRlbnRdIC5cW1xbZGF0YS1zbG90XD1wb3BvdmVyLWNvbnRlbnRcXV9cJlxdXDpiZy10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfVtkYXRhLXNsb3Q9dG9vbHRpcC1jb250ZW50XSAuXFtcW2RhdGEtc2xvdFw9dG9vbHRpcC1jb250ZW50XF1fXCZcXVw6YmctYmFja2dyb3VuZFwvMjB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYmFja2dyb3VuZCkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7W2RhdGEtc2xvdD10b29sdGlwLWNvbnRlbnRdIC5cW1xbZGF0YS1zbG90XD10b29sdGlwLWNvbnRlbnRcXV9cJlxdXDpiZy1iYWNrZ3JvdW5kXC8yMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYixoc2wodmFyKC0tYmFja2dyb3VuZCkpIDIwJSx0cmFuc3BhcmVudCl9fVtkYXRhLXNsb3Q9dG9vbHRpcC1jb250ZW50XSAuXFtcW2RhdGEtc2xvdFw9dG9vbHRpcC1jb250ZW50XF1fXCZcXVw6dGV4dC1iYWNrZ3JvdW5ke2NvbG9yOmhzbCh2YXIoLS1iYWNrZ3JvdW5kKSl9W2RhdGEtc2xvdD10b29sdGlwLWNvbnRlbnRdIC5kYXJrXDpcW1xbZGF0YS1zbG90XD10b29sdGlwLWNvbnRlbnRcXV9cJlxdXDpiZy1iYWNrZ3JvdW5kXC8xMDppcyguZGFyayAqKXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1iYWNrZ3JvdW5kKSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXtbZGF0YS1zbG90PXRvb2x0aXAtY29udGVudF0gLmRhcmtcOlxbXFtkYXRhLXNsb3RcPXRvb2x0aXAtY29udGVudFxdX1wmXF1cOmJnLWJhY2tncm91bmRcLzEwOmlzKC5kYXJrICope2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLGhzbCh2YXIoLS1iYWNrZ3JvdW5kKSkgMTAlLHRyYW5zcGFyZW50KX19W2RhdGEtdmFyaWFudD1sZWdlbmRdKy5cW1xbZGF0YS12YXJpYW50XD1sZWdlbmRcXVwrXCZcXVw6LW10LTFcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEuNSl9fUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1kZWxheXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MHN9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6bm9ybWFsfUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1kdXJhdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOm5vbmV9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1lbnRlci1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctZW50ZXItcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWV4aXQtYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1leGl0LW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctZXhpdC1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZXhpdC1zY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1leGl0LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWV4aXQtdHJhbnNsYXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9OnJvb3R7LS1iYWNrZ3JvdW5kOjAgMCUgMTAwJTstLWZvcmVncm91bmQ6MjIwIDEzJSA1JTstLWJvcmRlcjoyMTAgMTElIDkwJTstLWlucHV0OjIxMCAxMSUgOTAlOy0tcmluZzoyMjEgMTAwJSA1MCU7LS1jYXJkOjAgMCUgMTAwJTstLWNhcmQtZm9yZWdyb3VuZDoyMjAgMTMlIDUlOy0tY2FyZC1ib3JkZXI6MjEwIDExJSA5MCU7LS1wb3BvdmVyOjAgMCUgMTAwJTstLXBvcG92ZXItZm9yZWdyb3VuZDoyMjAgMTMlIDUlOy0tcG9wb3Zlci1ib3JkZXI6MjEwIDExJSA5MCU7LS1wcmltYXJ5OjIyMSAxMDAlIDUwJTstLXByaW1hcnktZm9yZWdyb3VuZDowIDAlIDEwMCU7LS1zZWNvbmRhcnk6MjEwIDExJSA5NiU7LS1zZWNvbmRhcnktZm9yZWdyb3VuZDoyMjAgMTMlIDUlOy0tbXV0ZWQ6MjEwIDExJSA5NiU7LS1tdXRlZC1mb3JlZ3JvdW5kOjIxMCAxMCUgNDUlOy0tYWNjZW50OjIxMCAxMSUgOTYlOy0tYWNjZW50LWZvcmVncm91bmQ6MjIwIDEzJSA1JTstLWRlc3RydWN0aXZlOjAgODQlIDYwJTstLWRlc3RydWN0aXZlLWZvcmVncm91bmQ6MCAwJSAxMDAlOy0tc3VjY2VzczoxNDIgNzElIDQ1JTstLXN1Y2Nlc3MtZm9yZWdyb3VuZDowIDAlIDEwMCU7LS1hcHAtZm9udC1zYW5zOiJJbnRlciIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZjstLWFwcC1mb250LXNlcmlmOkdlb3JnaWEsIHNlcmlmOy0tYXBwLWZvbnQtbW9ubzoiU3BhY2UgTW9ubyIsIE1lbmxvLCBtb25vc3BhY2U7LS1yYWRpdXM6LjVyZW19LmRhcmt7LS1iYWNrZ3JvdW5kOjIyMCAxMyUgNSU7LS1mb3JlZ3JvdW5kOjIxMCAyMCUgOTglOy0tYm9yZGVyOjIxNiAxMSUgMTQlOy0taW5wdXQ6MjE2IDExJSAxNCU7LS1yaW5nOjIyMSAxMDAlIDUwJTstLWNhcmQ6MjE2IDEzJSA4JTstLWNhcmQtZm9yZWdyb3VuZDoyMTAgMjAlIDk4JTstLWNhcmQtYm9yZGVyOjIxNiAxMSUgMTQlOy0tcG9wb3ZlcjoyMTYgMTMlIDglOy0tcG9wb3Zlci1mb3JlZ3JvdW5kOjIxMCAyMCUgOTglOy0tcG9wb3Zlci1ib3JkZXI6MjE2IDExJSAxNCU7LS1wcmltYXJ5OjIyMSAxMDAlIDUwJTstLXByaW1hcnktZm9yZWdyb3VuZDowIDAlIDEwMCU7LS1zZWNvbmRhcnk6MjE2IDExJSAxNCU7LS1zZWNvbmRhcnktZm9yZWdyb3VuZDoyMTAgMjAlIDk4JTstLW11dGVkOjIxNiAxMSUgMTQlOy0tbXV0ZWQtZm9yZWdyb3VuZDoyMTAgMTAlIDY1JTstLWFjY2VudDoyMTYgMTElIDE0JTstLWFjY2VudC1mb3JlZ3JvdW5kOjIxMCAyMCUgOTglOy0tZGVzdHJ1Y3RpdmU6MCA4NCUgNjAlOy0tZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZDowIDAlIDEwMCU7LS1zdWNjZXNzOjE0MiA3MSUgNDUlOy0tc3VjY2Vzcy1mb3JlZ3JvdW5kOjAgMCUgMTAwJX06Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjZweDtoZWlnaHQ6NnB4fTo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7YmFja2dyb3VuZDowIDB9Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOmhzbCh2YXIoLS1tdXRlZCkpO2JvcmRlci1yYWRpdXM6M3B4fTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXJ7YmFja2dyb3VuZDpoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNwYWNlLXktcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1zcGFjZS14LXJldmVyc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZGl2aWRlLXktcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1ib3JkZXItc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWdyYWRpZW50LXBvc2l0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtZnJvbXtzeW50YXg6Ijxjb2xvcj4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IzAwMDB9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtdmlhe3N5bnRheDoiPGNvbG9yPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojMDAwMH1AcHJvcGVydHkgLS10dy1ncmFkaWVudC10b3tzeW50YXg6Ijxjb2xvcj4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IzAwMDB9QHByb3BlcnR5IC0tdHctZ3JhZGllbnQtc3RvcHN7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC12aWEtc3RvcHN7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9ue3N5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowJX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb257c3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjUwJX1AcHJvcGVydHkgLS10dy1ncmFkaWVudC10by1wb3NpdGlvbntzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1sZWFkaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZm9udC13ZWlnaHR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy10cmFja2luZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW9yZGluYWx7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zbGFzaGVkLXplcm97c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1udW1lcmljLWZpZ3VyZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtc3BhY2luZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtZnJhY3Rpb257c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW5zZXQtcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1yaW5nLWluc2V0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtd2lkdGh7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojZmZmfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LW91dGxpbmUtc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1icmlnaHRuZXNze3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtY29udHJhc3R7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1ncmF5c2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1odWUtcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtaW52ZXJ0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLXNhdHVyYXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atc2VwaWF7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kdXJhdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWVhc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1jb250ZW50e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToiIn1Aa2V5ZnJhbWVzIHNwaW57dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIHB1bHNlezUwJXtvcGFjaXR5Oi41fX1Aa2V5ZnJhbWVzIGVudGVyezAle29wYWNpdHk6dmFyKC0tdHctZW50ZXItb3BhY2l0eSwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QodmFyKC0tdHctZW50ZXItdHJhbnNsYXRlLXgsMCksdmFyKC0tdHctZW50ZXItdHJhbnNsYXRlLXksMCksMClzY2FsZTNkKHZhcigtLXR3LWVudGVyLXNjYWxlLDEpLHZhcigtLXR3LWVudGVyLXNjYWxlLDEpLHZhcigtLXR3LWVudGVyLXNjYWxlLDEpKXJvdGF0ZSh2YXIoLS10dy1lbnRlci1yb3RhdGUsMCkpO2ZpbHRlcjpibHVyKHZhcigtLXR3LWVudGVyLWJsdXIsMCkpfX1Aa2V5ZnJhbWVzIGV4aXR7dG97b3BhY2l0eTp2YXIoLS10dy1leGl0LW9wYWNpdHksMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKHZhcigtLXR3LWV4aXQtdHJhbnNsYXRlLXgsMCksdmFyKC0tdHctZXhpdC10cmFuc2xhdGUteSwwKSwwKXNjYWxlM2QodmFyKC0tdHctZXhpdC1zY2FsZSwxKSx2YXIoLS10dy1leGl0LXNjYWxlLDEpLHZhcigtLXR3LWV4aXQtc2NhbGUsMSkpcm90YXRlKHZhcigtLXR3LWV4aXQtcm90YXRlLDApKTtmaWx0ZXI6Ymx1cih2YXIoLS10dy1leGl0LWJsdXIsMCkpfX1Aa2V5ZnJhbWVzIGFjY29yZGlvbi1kb3duezAle2hlaWdodDowfXRve2hlaWdodDp2YXIoLS1yYWRpeC1hY2NvcmRpb24tY29udGVudC1oZWlnaHQsdmFyKC0tYml0cy1hY2NvcmRpb24tY29udGVudC1oZWlnaHQsdmFyKC0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQsdmFyKC0ta2ItYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0LHZhcigtLW5ncC1hY2NvcmRpb24tY29udGVudC1oZWlnaHQsYXV0bykpKSkpfX1Aa2V5ZnJhbWVzIGFjY29yZGlvbi11cHswJXtoZWlnaHQ6dmFyKC0tcmFkaXgtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0LHZhcigtLWJpdHMtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0LHZhcigtLXJla2EtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0LHZhcigtLWtiLWFjY29yZGlvbi1jb250ZW50LWhlaWdodCx2YXIoLS1uZ3AtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0LGF1dG8pKSkpKX10b3toZWlnaHQ6MH19QGtleWZyYW1lcyBjYXJldC1ibGlua3swJSw3MCUsdG97b3BhY2l0eToxfTIwJSw1MCV7b3BhY2l0eTowfX0K"}},"time_used":338,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":153,"receive":185,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-26","alert":"Sinkholed","trigger":"coinbasewithdrwal.org","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://coinbasewithdrwal.org/","date":"2026-07-26T18:39:45.695Z","timestamp":1785091185695,"http_version":"HTTP/3","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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://coinbasewithdrwal.org\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 365371\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-07-30T22:23:57.004505Z","times_seen":249706,"resource_available":false,"data":"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"}},"time_used":96,"timings":{"blocked":25,"dns":0,"connect":0,"send":0,"wait":21,"receive":50,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
